From d42c91f80234bad9523ae92fca4c3bd4337bdffe Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Thu, 24 May 2012 13:12:00 +0200 Subject: [PATCH 001/397] In app settings WIP --- Classes/LinphoneAppDelegate.h | 11 +- Classes/LinphoneAppDelegate.m | 59 +- Classes/LinphoneCoreSettingsStore.h | 15 + Classes/LinphoneCoreSettingsStore.m | 61 ++ Classes/LinphoneUI/LinphoneManager.h | 5 +- Classes/LinphoneUI/LinphoneManager.m | 49 ++ .../IASKAppSettingsViewController.h | 84 ++ .../IASKAppSettingsViewController.m | 798 ++++++++++++++++++ .../IASKAppSettingsWebViewController.h | 30 + .../IASKAppSettingsWebViewController.m | 148 ++++ .../IASKSpecifierValuesViewController.h | 36 + .../IASKSpecifierValuesViewController.m | 195 +++++ .../Controllers/IASKViewController.h | 26 + InAppSettingsKit/Models/IASKSettingsReader.h | 149 ++++ InAppSettingsKit/Models/IASKSettingsReader.m | 278 ++++++ InAppSettingsKit/Models/IASKSettingsStore.h | 39 + InAppSettingsKit/Models/IASKSettingsStore.m | 68 ++ .../Models/IASKSettingsStoreFile.h | 28 + .../Models/IASKSettingsStoreFile.m | 54 ++ .../Models/IASKSettingsStoreUserDefaults.h | 25 + .../Models/IASKSettingsStoreUserDefaults.m | 67 ++ InAppSettingsKit/Models/IASKSpecifier.h | 59 ++ InAppSettingsKit/Models/IASKSpecifier.m | 240 ++++++ .../Views/IASKPSSliderSpecifierViewCell.h | 31 + .../Views/IASKPSSliderSpecifierViewCell.m | 72 ++ .../Views/IASKPSTextFieldSpecifierViewCell.h | 29 + .../Views/IASKPSTextFieldSpecifierViewCell.m | 52 ++ .../Views/IASKPSTitleValueSpecifierViewCell.h | 22 + .../Views/IASKPSTitleValueSpecifierViewCell.m | 57 ++ .../IASKPSToggleSwitchSpecifierViewCell.h | 29 + .../IASKPSToggleSwitchSpecifierViewCell.m | 62 ++ InAppSettingsKit/Views/IASKSlider.h | 26 + InAppSettingsKit/Views/IASKSlider.m | 30 + InAppSettingsKit/Views/IASKSwitch.h | 26 + InAppSettingsKit/Views/IASKSwitch.m | 31 + InAppSettingsKit/Views/IASKTextField.h | 26 + InAppSettingsKit/Views/IASKTextField.m | 30 + InAppSettingsKit/Xibs/IASKAppSettingsView.xib | 222 +++++ .../Xibs/IASKAppSettingsWebView.xib | 378 +++++++++ .../Xibs/IASKPSSliderSpecifierViewCell.xib | 251 ++++++ .../Xibs/IASKPSTextFieldSpecifierViewCell.xib | 254 ++++++ .../IASKPSToggleSwitchSpecifierViewCell.xib | 237 ++++++ .../Xibs/IASKSpecifierValuesView.xib | 255 ++++++ PhoneMainView.xib | 403 +++++++-- Settings.bundle/Root.plist | 10 + Settings.bundle/video.plist | 10 - linphone.xcodeproj/project.pbxproj | 214 +++++ submodules/linphone | 2 +- 48 files changed, 5146 insertions(+), 137 deletions(-) create mode 100644 Classes/LinphoneCoreSettingsStore.h create mode 100644 Classes/LinphoneCoreSettingsStore.m create mode 100644 InAppSettingsKit/Controllers/IASKAppSettingsViewController.h create mode 100644 InAppSettingsKit/Controllers/IASKAppSettingsViewController.m create mode 100644 InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h create mode 100644 InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m create mode 100644 InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h create mode 100644 InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m create mode 100644 InAppSettingsKit/Controllers/IASKViewController.h create mode 100644 InAppSettingsKit/Models/IASKSettingsReader.h create mode 100644 InAppSettingsKit/Models/IASKSettingsReader.m create mode 100644 InAppSettingsKit/Models/IASKSettingsStore.h create mode 100644 InAppSettingsKit/Models/IASKSettingsStore.m create mode 100644 InAppSettingsKit/Models/IASKSettingsStoreFile.h create mode 100644 InAppSettingsKit/Models/IASKSettingsStoreFile.m create mode 100644 InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h create mode 100644 InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m create mode 100644 InAppSettingsKit/Models/IASKSpecifier.h create mode 100644 InAppSettingsKit/Models/IASKSpecifier.m create mode 100644 InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h create mode 100644 InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m create mode 100644 InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h create mode 100644 InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m create mode 100644 InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h create mode 100644 InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m create mode 100644 InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.h create mode 100644 InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.m create mode 100644 InAppSettingsKit/Views/IASKSlider.h create mode 100644 InAppSettingsKit/Views/IASKSlider.m create mode 100644 InAppSettingsKit/Views/IASKSwitch.h create mode 100644 InAppSettingsKit/Views/IASKSwitch.m create mode 100644 InAppSettingsKit/Views/IASKTextField.h create mode 100644 InAppSettingsKit/Views/IASKTextField.m create mode 100644 InAppSettingsKit/Xibs/IASKAppSettingsView.xib create mode 100644 InAppSettingsKit/Xibs/IASKAppSettingsWebView.xib create mode 100644 InAppSettingsKit/Xibs/IASKPSSliderSpecifierViewCell.xib create mode 100644 InAppSettingsKit/Xibs/IASKPSTextFieldSpecifierViewCell.xib create mode 100644 InAppSettingsKit/Xibs/IASKPSToggleSwitchSpecifierViewCell.xib create mode 100644 InAppSettingsKit/Xibs/IASKSpecifierValuesView.xib diff --git a/Classes/LinphoneAppDelegate.h b/Classes/LinphoneAppDelegate.h index f5e9508a1..8c7b21827 100644 --- a/Classes/LinphoneAppDelegate.h +++ b/Classes/LinphoneAppDelegate.h @@ -21,11 +21,13 @@ #import #import #import "CoreTelephony/CTCallCenter.h" +#import "IASKAppSettingsViewController.h" +#define HISTORY_TAB_INDEX 0 #define DIALER_TAB_INDEX 1 #define CONTACTS_TAB_INDEX 2 -#define HISTORY_TAB_INDEX 0 -#define MORE_TAB_INDEX 3 +#define SETTINGS_TAB_INDEX 3 +#define MORE_TAB_INDEX 4 @class ContactPickerDelegate; @class IncallViewController; @@ -38,6 +40,8 @@ IBOutlet UITabBarController* myTabBarController; IBOutlet ABPeoplePickerNavigationController* myPeoplePickerController; IBOutlet PhoneViewController* myPhoneViewController; + IBOutlet UINavigationController* moreNavigationController; + IBOutlet IASKAppSettingsViewController* settingsController; CallHistoryTableViewController* myCallHistoryTableViewController; ContactPickerDelegate* myContactPickerDelegate; @@ -53,8 +57,9 @@ @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet UITabBarController* myTabBarController; @property (nonatomic, retain) ABPeoplePickerNavigationController* myPeoplePickerController; +@property (nonatomic, retain) IBOutlet UINavigationController* moreNavigationController; @property (nonatomic, retain) IBOutlet PhoneViewController* myPhoneViewController; - +@property (nonatomic, retain) IBOutlet IASKAppSettingsViewController* settingsController; @end diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 8162f851d..3807085f7 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -45,6 +45,8 @@ int __aeabi_idiv(int a, int b) { @synthesize myTabBarController; @synthesize myPeoplePickerController; @synthesize myPhoneViewController; +@synthesize moreNavigationController; +@synthesize settingsController; -(void) handleGSMCallInteration: (id) cCenter { CTCallCenter* ct = (CTCallCenter*) cCenter; @@ -167,43 +169,20 @@ int __aeabi_idiv(int a, int b) { } -(void) setupUI { - //as defined in PhoneMainView.xib - //dialer - myPhoneViewController = (PhoneViewController*) [myTabBarController.viewControllers objectAtIndex: DIALER_TAB_INDEX]; - myPhoneViewController.myTabBarController = myTabBarController; - //Call history - myCallHistoryTableViewController = [[CallHistoryTableViewController alloc] initWithNibName:@"CallHistoryTableViewController" - bundle:[NSBundle mainBundle]]; - UINavigationController *aCallHistNavigationController = [[UINavigationController alloc] initWithRootViewController:myCallHistoryTableViewController]; - aCallHistNavigationController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:HISTORY_TAB_INDEX] tabBarItem]; - - //people picker delegates + // Contacts myContactPickerDelegate = [[ContactPickerDelegate alloc] init]; - //people picker - myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease]; - [myPeoplePickerController setDisplayedProperties:[NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonPhoneProperty]]]; - [myPeoplePickerController setPeoplePickerDelegate:myContactPickerDelegate]; - //copy tab bar item - myPeoplePickerController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:CONTACTS_TAB_INDEX] tabBarItem]; - - //more tab - MoreViewController *moreViewController = [[MoreViewController alloc] initWithNibName:@"MoreViewController" bundle:[NSBundle mainBundle]]; - UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:moreViewController]; - [moreViewController release]; - //copy tab bar item - aNavigationController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:MORE_TAB_INDEX] tabBarItem]; - - //insert contact controller - NSMutableArray* newArray = [NSMutableArray arrayWithArray:self.myTabBarController.viewControllers]; - [newArray replaceObjectAtIndex:CONTACTS_TAB_INDEX withObject:myPeoplePickerController]; - [newArray replaceObjectAtIndex:MORE_TAB_INDEX withObject:aNavigationController]; - [aNavigationController release]; - [newArray replaceObjectAtIndex:HISTORY_TAB_INDEX withObject:aCallHistNavigationController]; - [aCallHistNavigationController release]; - - [myTabBarController setSelectedIndex:DIALER_TAB_INDEX]; - [myTabBarController setViewControllers:newArray animated:NO]; - + //people picker + myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease]; + [myPeoplePickerController setDisplayedProperties:[NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonPhoneProperty]]]; + [myPeoplePickerController setPeoplePickerDelegate:myContactPickerDelegate]; + //copy tab bar item + myPeoplePickerController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:CONTACTS_TAB_INDEX] tabBarItem]; + + NSMutableArray* newArray = [NSMutableArray arrayWithArray:self.myTabBarController.viewControllers]; + [newArray replaceObjectAtIndex:CONTACTS_TAB_INDEX withObject:myPeoplePickerController]; + [myTabBarController setViewControllers:newArray animated:NO]; + + [myTabBarController setSelectedIndex:DIALER_TAB_INDEX]; [window addSubview:myTabBarController.view]; [window makeKeyAndVisible]; @@ -257,6 +236,12 @@ int __aeabi_idiv(int a, int b) { [[LinphoneManager instance] startLibLinphone]; + // Settings, setup delegate + settingsController.delegate = [LinphoneManager instance]; + settingsController.settingsReader.delegate = [LinphoneManager instance]; + [settingsController.settingsReader init]; + + [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound]; [self setupGSMInteraction]; @@ -282,6 +267,4 @@ int __aeabi_idiv(int a, int b) { linphone_core_accept_call([LinphoneManager getLc], call); } - - @end diff --git a/Classes/LinphoneCoreSettingsStore.h b/Classes/LinphoneCoreSettingsStore.h new file mode 100644 index 000000000..bb9df882a --- /dev/null +++ b/Classes/LinphoneCoreSettingsStore.h @@ -0,0 +1,15 @@ +// +// LinphoneCoreSettingsStore.h +// linphone +// +// Created by Pierre-Eric Pelloux-Prayer on 22/05/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import +#import "IASKSettingsStore.h" + +@interface LinphoneCoreSettingsStore : IASKAbstractSettingsStore { +} + +@end diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m new file mode 100644 index 000000000..f9f9d8f62 --- /dev/null +++ b/Classes/LinphoneCoreSettingsStore.m @@ -0,0 +1,61 @@ +// +// LinphoneCoreSettingsStore.m +// linphone +// +// Created by Pierre-Eric Pelloux-Prayer on 22/05/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import "LinphoneCoreSettingsStore.h" + + +debugenable_preference +transport_preference +username_preference +domain_preference +password_preference +check_config_disable_preference +outbound_proxy_preference +proxy_preference +prefix_preference +substitute_+_by_00_preference +wifi_only_preference + +silk_24k_preference +speex_16k_preference +speex_8k_preference +silk_16k_preference +amr_8k_preference +gsm_8k_preference +ilbc_preference +pcmu_preference +pcma_preference +g722_preferenceg +g729_preference + +mp4v-es_preference +h264_preference +vp8_preference + +enable_video_preference +enable_srtp_preference +stun_preference +start_video_preference +backgroundmode_preference + +@implementation LinphoneCoreSettingsStore + + +-(void) setObject:(id)value forKey:(NSString *)key { + + +} + +- (id)objectForKey:(NSString*)key { + return nil; +} +- (BOOL)synchronize { + return YES; +} + +@end diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index a52cff965..b2f4dfc3d 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -23,6 +23,8 @@ #include "linphonecore.h" #import "LogView.h" #import "LinphoneUIDelegates.h" +#import "IASKSettingsReader.h" +#import "IASKAppSettingsViewController.h" typedef enum _Connectivity { wifi, @@ -49,7 +51,7 @@ typedef struct _LinphoneCallAppData { } LinphoneCallAppData; -@interface LinphoneManager : NSObject { +@interface LinphoneManager : NSObject { @protected SCNetworkReachabilityRef proxyReachability; @private @@ -99,5 +101,6 @@ typedef struct _LinphoneCallAppData { @property Connectivity connectivity; @property (readonly) const char* frontCamId; @property (readonly) const char* backCamId; +@property (nonatomic) bool isbackgroundModeEnabled; @end diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 540ae63ec..50a632aee 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -56,6 +56,7 @@ extern void libmsbcg729_init(); @synthesize connectivity; @synthesize frontCamId; @synthesize backCamId; +@synthesize isbackgroundModeEnabled; -(id) init { assert (!theLinphoneManager); @@ -1069,5 +1070,53 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach ms_message("UI - '%s' pressed", name); } +-(void) settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender { + [self reconfigureLinphoneIfNeeded: currentSettings]; +} + +-(NSDictionary*) filterPreferenceSpecifier:(NSDictionary *)specifier { + if (!theLinphoneCore) { + // LinphoneCore not ready: do not filter + return specifier; + } + NSString* identifier = [specifier objectForKey:@"Identifier"]; + if (identifier == nil) { + identifier = [specifier objectForKey:@"Key"]; + } + if (!identifier) { + // child pane maybe + NSString* title = [specifier objectForKey:@"Title"]; + if ([title isEqualToString:@"Video"]) { + if (!linphone_core_video_enabled(theLinphoneCore)) + return nil; + } + return specifier; + } + // NSLog(@"Specifier received: %@", identifier); + if ([identifier isEqualToString:@"srtp_preference"]) { + if (!ortp_srtp_supported()) + return nil; + } else if ([identifier hasPrefix:@"silk"]) { + if ([identifier isEqualToString:@"speex_24k_preference"]) { + if (linphone_core_find_payload_type(theLinphoneCore, "SILK", 24000)) return nil; + } else if ([identifier isEqualToString:@"speex_16k_preference"]) { + if (linphone_core_find_payload_type(theLinphoneCore, "SILK", 16000)) return nil; + } else if ([identifier isEqualToString:@"speex_8k_preference"]) { + if (linphone_core_find_payload_type(theLinphoneCore, "SILK", 8000)) return nil; + } + } else if ([identifier isEqualToString:@"backgroundmode_preference"]) { + UIDevice* device = [UIDevice currentDevice]; + if ([device respondsToSelector:@selector(isMultitaskingSupported)]) { + if ([device isMultitaskingSupported]) { + return specifier; + } + } + // hide setting if bg mode not supported + return nil; + } + return specifier; +} + + @end diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h new file mode 100644 index 000000000..2eaaa2ca0 --- /dev/null +++ b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h @@ -0,0 +1,84 @@ +// +// IASKAppSettingsViewController.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import +#import + +#import "IASKSettingsStore.h" +#import "IASKViewController.h" + +@class IASKSettingsReader; +@class IASKAppSettingsViewController; +@class IASKSpecifier; + +@protocol IASKSettingsDelegate +- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController*)sender; + +@optional +#pragma mark - UITableView header customization +- (CGFloat) settingsViewController:(id)settingsViewController + tableView:(UITableView *)tableView + heightForHeaderForSection:(NSInteger)section; +- (UIView *) settingsViewController:(id)settingsViewController + tableView:(UITableView *)tableView + viewForHeaderForSection:(NSInteger)section; + +#pragma mark - UITableView cell customization +- (CGFloat)tableView:(UITableView*)tableView heightForSpecifier:(IASKSpecifier*)specifier; +- (UITableViewCell*)tableView:(UITableView*)tableView cellForSpecifier:(IASKSpecifier*)specifier; + +#pragma mark - mail composing customization +- (NSString*) settingsViewController:(id)settingsViewController + mailComposeBodyForSpecifier:(IASKSpecifier*) specifier; + +- (UIViewController*) settingsViewController:(id)settingsViewController + viewControllerForMailComposeViewForSpecifier:(IASKSpecifier*) specifier; + +- (void) settingsViewController:(id) settingsViewController + mailComposeController:(MFMailComposeViewController*)controller + didFinishWithResult:(MFMailComposeResult)result + error:(NSError*)error; + +#pragma mark - respond to button taps +- (void)settingsViewController:(IASKAppSettingsViewController*)sender buttonTappedForKey:(NSString*)key; +- (void)settingsViewController:(IASKAppSettingsViewController*)sender tableView:(UITableView *)tableView didSelectCustomViewSpecifier:(IASKSpecifier*)specifier; +@end + + +@interface IASKAppSettingsViewController : UITableViewController { + id _delegate; + + NSMutableArray *_viewList; + + IASKSettingsReader *_settingsReader; + id _settingsStore; + NSString *_file; + + id _currentFirstResponder; + + BOOL _showCreditsFooter; + BOOL _showDoneButton; +} + +@property (nonatomic, assign) IBOutlet id delegate; +@property (nonatomic, copy) NSString *file; +@property (nonatomic, assign) BOOL showCreditsFooter; +@property (nonatomic, assign) BOOL showDoneButton; + +- (void)synchronizeSettings; +- (IBAction)dismiss:(id)sender; + +@end diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m new file mode 100644 index 000000000..d3593e1b0 --- /dev/null +++ b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m @@ -0,0 +1,798 @@ +// +// IASKAppSettingsViewController.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2009-2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + + +#import "IASKAppSettingsViewController.h" +#import "IASKSettingsReader.h" +#import "IASKSettingsStoreUserDefaults.h" +#import "IASKPSToggleSwitchSpecifierViewCell.h" +#import "IASKPSSliderSpecifierViewCell.h" +#import "IASKPSTextFieldSpecifierViewCell.h" +#import "IASKPSTitleValueSpecifierViewCell.h" +#import "IASKSwitch.h" +#import "IASKSlider.h" +#import "IASKSpecifier.h" +#import "IASKSpecifierValuesViewController.h" +#import "IASKTextField.h" + +static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3; +static const CGFloat MINIMUM_SCROLL_FRACTION = 0.2; +static const CGFloat MAXIMUM_SCROLL_FRACTION = 0.8; + +static NSString *kIASKCredits = @"Powered by InAppSettingsKit"; // Leave this as-is!!! + +#define kIASKSpecifierValuesViewControllerIndex 0 +#define kIASKSpecifierChildViewControllerIndex 1 + +#define kIASKCreditsViewWidth 285 + +CGRect IASKCGRectSwap(CGRect rect); + +@interface IASKAppSettingsViewController () +@property (nonatomic, retain) NSMutableArray *viewList; +@property (nonatomic, retain) id currentFirstResponder; + +- (void) setup; + +- (void)_textChanged:(id)sender; +- (void)synchronizeSettings; +- (void)userDefaultsDidChange; +- (void)reload; +@end + +@implementation IASKAppSettingsViewController + +@synthesize delegate = _delegate; +@synthesize viewList = _viewList; +@synthesize settingsReader = _settingsReader; +@synthesize file = _file; +@synthesize currentFirstResponder = _currentFirstResponder; +@synthesize showCreditsFooter = _showCreditsFooter; +@synthesize showDoneButton = _showDoneButton; +@synthesize settingsStore = _settingsStore; + +#pragma mark accessors +- (IASKSettingsReader*)settingsReader { + if (!_settingsReader) { + _settingsReader = [[IASKSettingsReader alloc] initWithFile:self.file]; + } + return _settingsReader; +} + +- (id)settingsStore { + if (!_settingsStore) { + _settingsStore = [[IASKSettingsStoreUserDefaults alloc] init]; + } + return _settingsStore; +} + +- (NSString*)file { + if (!_file) { + return @"Root"; + } + return [[_file retain] autorelease]; +} + +- (void)setFile:(NSString *)file { + if (file != _file) { + + [_file release]; + _file = [file copy]; + } + + self.tableView.contentOffset = CGPointMake(0, 0); + self.settingsReader = nil; // automatically initializes itself + [self.tableView reloadData]; +} + +- (BOOL)isPad { + BOOL isPad = NO; +#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 30200) + isPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; +#endif + return isPad; +} + +#pragma mark standard view controller methods +- (id)init { + return [self initWithNibName:@"IASKAppSettingsView" bundle:nil]; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { + // If set to YES, will add a DONE button at the right of the navigation bar + _showDoneButton = YES; + + [self setup]; + } + return self; +} + +- (void)awakeFromNib { + // If set to YES, will add a DONE button at the right of the navigation bar + // if loaded via NIB, it's likely we sit in a TabBar- or NavigationController + // and thus don't need the Done button + _showDoneButton = NO; + + [self setup]; +} + +//common (NIB & code based) initialization +- (void) setup { + // If set to YES, will display credits for InAppSettingsKit creators + _showCreditsFooter = YES; +} + +- (NSMutableArray *)viewList { + if (!_viewList) { + _viewList = [[NSMutableArray alloc] init]; + [_viewList addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"IASKSpecifierValuesView", @"ViewName",nil]]; + [_viewList addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"IASKAppSettingsView", @"ViewName",nil]]; + } + return _viewList; +} + +- (void) viewDidLoad { + [super viewDidLoad]; + if ([self isPad]) { + self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched; + } +} + +- (void)viewDidUnload { + [super viewDidUnload]; + + // Release any retained subviews of the main view. + // e.g. self.myOutlet = nil; + self.view = nil; + self.viewList = nil; +} + +- (void)viewWillAppear:(BOOL)animated { + // if there's something selected, the value might have changed + // so reload that row + NSIndexPath *selectedIndexPath = [self.tableView indexPathForSelectedRow]; + if(selectedIndexPath) { + [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:selectedIndexPath] + withRowAnimation:UITableViewRowAnimationNone]; + // and reselect it, so we get the nice default deselect animation from UITableViewController + [self.tableView selectRowAtIndexPath:selectedIndexPath animated:NO scrollPosition:UITableViewScrollPositionNone]; + } + + self.navigationItem.rightBarButtonItem = nil; + self.navigationController.delegate = self; + if (_showDoneButton) { + UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone + target:self + action:@selector(dismiss:)]; + self.navigationItem.rightBarButtonItem = buttonItem; + [buttonItem release]; + } + if (!self.title) { + self.title = NSLocalizedString(@"Settings", @""); + } + + if ([self.settingsStore isKindOfClass:[IASKSettingsStoreUserDefaults class]]) { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(userDefaultsDidChange) + name:NSUserDefaultsDidChangeNotification + object:[NSUserDefaults standardUserDefaults]]; + [self userDefaultsDidChange]; // force update in case of changes while we were hidden + } + [super viewWillAppear:animated]; +} + +- (CGSize)contentSizeForViewInPopover { + return [[self view] sizeThatFits:CGSizeMake(320, 2000)]; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + + NSNotificationCenter *dc = [NSNotificationCenter defaultCenter]; + IASK_IF_IOS4_OR_GREATER([dc addObserver:self selector:@selector(synchronizeSettings) name:UIApplicationDidEnterBackgroundNotification object:[UIApplication sharedApplication]];); + IASK_IF_IOS4_OR_GREATER([dc addObserver:self selector:@selector(reload) name:UIApplicationWillEnterForegroundNotification object:[UIApplication sharedApplication]];); + [dc addObserver:self selector:@selector(synchronizeSettings) name:UIApplicationWillTerminateNotification object:[UIApplication sharedApplication]]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [NSObject cancelPreviousPerformRequestsWithTarget:self]; + [super viewWillDisappear:animated]; +} + +- (void)viewDidDisappear:(BOOL)animated { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + if (!self.navigationController.delegate) { + // hide the keyboard when we're popping from the navigation controller + [self.currentFirstResponder resignFirstResponder]; + } + [self dismiss:nil]; + [super viewDidDisappear:animated]; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return YES; +} + +- (void)didReceiveMemoryWarning { + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + + // Release any cached data, images, etc that aren't in use. +} + +- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { + if (![viewController isKindOfClass:[IASKAppSettingsViewController class]] && ![viewController isKindOfClass:[IASKSpecifierValuesViewController class]]) { + [self dismiss:nil]; + } +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [_viewList release], _viewList = nil; + [_file release], _file = nil; + [_currentFirstResponder release], _currentFirstResponder = nil; + [_settingsReader release], _settingsReader = nil; + [_settingsStore release], _settingsStore = nil; + + _delegate = nil; + + [super dealloc]; +} + + +#pragma mark - +#pragma mark Actions + +- (IBAction)dismiss:(id)sender { + [self.settingsStore synchronize]; + self.navigationController.delegate = nil; + + if (self.delegate && [self.delegate conformsToProtocol:@protocol(IASKSettingsDelegate)]) { + [self.delegate settingsViewControllerDidEnd:self]; + } + // reload + [self.settingsReader initWithFile:self.file]; + [self.tableView reloadData]; +} + +- (void)toggledValue:(id)sender { + IASKSwitch *toggle = (IASKSwitch*)sender; + IASKSpecifier *spec = [_settingsReader specifierForKey:[toggle key]]; + + if ([toggle isOn]) { + if ([spec trueValue] != nil) { + [self.settingsStore setObject:[spec trueValue] forKey:[toggle key]]; + } + else { + [self.settingsStore setBool:YES forKey:[toggle key]]; + } + } + else { + if ([spec falseValue] != nil) { + [self.settingsStore setObject:[spec falseValue] forKey:[toggle key]]; + } + else { + [self.settingsStore setBool:NO forKey:[toggle key]]; + } + } + [[NSNotificationCenter defaultCenter] postNotificationName:kIASKAppSettingChanged + object:[toggle key] + userInfo:[NSDictionary dictionaryWithObject:[self.settingsStore objectForKey:[toggle key]] + forKey:[toggle key]]]; +} + +- (void)sliderChangedValue:(id)sender { + IASKSlider *slider = (IASKSlider*)sender; + [self.settingsStore setFloat:[slider value] forKey:[slider key]]; + [[NSNotificationCenter defaultCenter] postNotificationName:kIASKAppSettingChanged + object:[slider key] + userInfo:[NSDictionary dictionaryWithObject:[NSNumber numberWithFloat:[slider value]] + forKey:[slider key]]]; +} + + +#pragma mark - +#pragma mark UITableView Functions + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return [self.settingsReader numberOfSections]; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [self.settingsReader numberOfRowsForSection:section]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + IASKSpecifier *specifier = [self.settingsReader specifierForIndexPath:indexPath]; + if ([[specifier type] isEqualToString:kIASKCustomViewSpecifier]) { + if ([self.delegate respondsToSelector:@selector(tableView:heightForSpecifier:)]) { + return [self.delegate tableView:tableView heightForSpecifier:specifier]; + } else { + return 0; + } + } + return tableView.rowHeight; +} + +- (NSString *)tableView:(UITableView*)tableView titleForHeaderInSection:(NSInteger)section { + NSString *header = [self.settingsReader titleForSection:section]; + if (0 == header.length) { + return nil; + } + return header; +} + +- (UIView *)tableView:(UITableView*)tableView viewForHeaderInSection:(NSInteger)section { + if ([self.delegate respondsToSelector:@selector(settingsViewController:tableView:viewForHeaderForSection:)]) { + return [self.delegate settingsViewController:self tableView:tableView viewForHeaderForSection:section]; + } else { + return nil; + } +} + +- (CGFloat)tableView:(UITableView*)tableView heightForHeaderInSection:(NSInteger)section { + if ([self tableView:tableView viewForHeaderInSection:section] && [self.delegate respondsToSelector:@selector(settingsViewController:tableView:heightForHeaderForSection:)]) { + CGFloat result; + if ((result = [self.delegate settingsViewController:self tableView:tableView heightForHeaderForSection:section])) { + return result; + } + + } + NSString *title; + if ((title = [self tableView:tableView titleForHeaderInSection:section])) { + CGSize size = [title sizeWithFont:[UIFont boldSystemFontOfSize:[UIFont labelFontSize]] + constrainedToSize:CGSizeMake(tableView.frame.size.width - 2*kIASKHorizontalPaddingGroupTitles, INFINITY) + lineBreakMode:UILineBreakModeWordWrap]; + return size.height+kIASKVerticalPaddingGroupTitles; + } + return 0; +} + +- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section +{ + NSString *footerText = [self.settingsReader footerTextForSection:section]; + if (_showCreditsFooter && (section == [self.settingsReader numberOfSections]-1)) { + // show credits since this is the last section + if ((footerText == nil) || ([footerText length] == 0)) { + // show the credits on their own + return kIASKCredits; + } else { + // show the credits below the app's FooterText + return [NSString stringWithFormat:@"%@\n\n%@", footerText, kIASKCredits]; + } + } else { + if ([footerText length] == 0) { + return nil; + } + return [self.settingsReader footerTextForSection:section]; + } +} + +- (UITableViewCell*)dequeueReusableCellWithIdentifier:(NSString*)identifier { + UITableViewCell *cell = nil; + if ([identifier isEqualToString:kIASKPSToggleSwitchSpecifier]) { + cell = [[[NSBundle mainBundle] loadNibNamed:@"IASKPSToggleSwitchSpecifierViewCell" + owner:self + options:nil] objectAtIndex:0]; + } + else if ([identifier isEqualToString:kIASKPSMultiValueSpecifier] || [identifier isEqualToString:kIASKPSTitleValueSpecifier]) { + cell = [[[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease]; + cell.accessoryType = [identifier isEqualToString:kIASKPSMultiValueSpecifier] ? UITableViewCellAccessoryDisclosureIndicator : UITableViewCellAccessoryNone; + } + else if ([identifier isEqualToString:kIASKPSTextFieldSpecifier]) { + cell = (IASKPSTextFieldSpecifierViewCell*) [[[NSBundle mainBundle] loadNibNamed:@"IASKPSTextFieldSpecifierViewCell" + owner:self + options:nil] objectAtIndex:0]; + } + else if ([identifier isEqualToString:kIASKPSSliderSpecifier]) { + cell = (IASKPSSliderSpecifierViewCell*) [[[NSBundle mainBundle] loadNibNamed:@"IASKPSSliderSpecifierViewCell" + owner:self + options:nil] objectAtIndex:0]; + } else if ([identifier isEqualToString:kIASKPSChildPaneSpecifier]) { + cell = [[[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease]; + cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; + } else if ([identifier isEqualToString:kIASKButtonSpecifier]) { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease]; + } else if ([identifier isEqualToString:kIASKMailComposeSpecifier]) { + cell = [[[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease]; + [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; + } else { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease]; + } + return cell; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + IASKSpecifier *specifier = [self.settingsReader specifierForIndexPath:indexPath]; + if ([specifier.type isEqualToString:kIASKCustomViewSpecifier] && [self.delegate respondsToSelector:@selector(tableView:cellForSpecifier:)]) { + UITableViewCell* cell = [self.delegate tableView:tableView cellForSpecifier:specifier]; + assert(nil != cell && "delegate must return a UITableViewCell for custom cell types"); + return cell; + } + + UITableViewCell *cell = [self dequeueReusableCellWithIdentifier:specifier.type]; + + if ([specifier.type isEqualToString:kIASKPSToggleSwitchSpecifier]) { + ((IASKPSToggleSwitchSpecifierViewCell*)cell).label.text = specifier.title; + + id currentValue = [self.settingsStore objectForKey:specifier.key]; + BOOL toggleState; + if (currentValue) { + if ([currentValue isEqual:specifier.trueValue]) { + toggleState = YES; + } else if ([currentValue isEqual:specifier.falseValue]) { + toggleState = NO; + } else { + toggleState = [currentValue boolValue]; + } + } else { + toggleState = specifier.defaultBoolValue; + } + ((IASKPSToggleSwitchSpecifierViewCell*)cell).toggle.on = toggleState; + + [((IASKPSToggleSwitchSpecifierViewCell*)cell).toggle addTarget:self action:@selector(toggledValue:) forControlEvents:UIControlEventValueChanged]; + ((IASKPSToggleSwitchSpecifierViewCell*)cell).toggle.key = specifier.key; + } + else if ([specifier.type isEqualToString:kIASKPSMultiValueSpecifier]) { + cell.textLabel.text = specifier.title; + cell.detailTextLabel.text = [[specifier titleForCurrentValue:[self.settingsStore objectForKey:specifier.key] != nil ? + [self.settingsStore objectForKey:specifier.key] : specifier.defaultValue] description]; + } + else if ([specifier.type isEqualToString:kIASKPSTitleValueSpecifier]) { + cell.textLabel.text = specifier.title; + id value = [self.settingsStore objectForKey:specifier.key] ? : specifier.defaultValue; + + NSString *stringValue; + if (specifier.multipleValues || specifier.multipleTitles) { + stringValue = [specifier titleForCurrentValue:value]; + } else { + stringValue = [value description]; + } + + cell.detailTextLabel.text = stringValue; + cell.userInteractionEnabled = NO; + } + else if ([specifier.type isEqualToString:kIASKPSTextFieldSpecifier]) { + ((IASKPSTextFieldSpecifierViewCell*)cell).label.text = specifier.title; + + NSString *textValue = [self.settingsStore objectForKey:specifier.key] != nil ? [self.settingsStore objectForKey:specifier.key] : specifier.defaultStringValue; + if (textValue && ![textValue isMemberOfClass:[NSString class]]) { + textValue = [NSString stringWithFormat:@"%@", textValue]; + } + IASKTextField *textField = ((IASKPSTextFieldSpecifierViewCell*)cell).textField; + textField.text = textValue; + textField.key = specifier.key; + textField.delegate = self; + textField.secureTextEntry = [specifier isSecure]; + textField.keyboardType = specifier.keyboardType; + textField.autocapitalizationType = specifier.autocapitalizationType; + [textField addTarget:self action:@selector(_textChanged:) forControlEvents:UIControlEventEditingChanged]; + if([specifier isSecure]){ + textField.autocorrectionType = UITextAutocorrectionTypeNo; + } else { + textField.autocorrectionType = specifier.autoCorrectionType; + } + [cell setNeedsLayout]; + } + else if ([specifier.type isEqualToString:kIASKPSSliderSpecifier]) { + if (specifier.minimumValueImage.length > 0) { + ((IASKPSSliderSpecifierViewCell*)cell).minImage.image = [UIImage imageWithContentsOfFile:[_settingsReader pathForImageNamed:specifier.minimumValueImage]]; + } + + if (specifier.maximumValueImage.length > 0) { + ((IASKPSSliderSpecifierViewCell*)cell).maxImage.image = [UIImage imageWithContentsOfFile:[_settingsReader pathForImageNamed:specifier.maximumValueImage]]; + } + + IASKSlider *slider = ((IASKPSSliderSpecifierViewCell*)cell).slider; + slider.minimumValue = specifier.minimumValue; + slider.maximumValue = specifier.maximumValue; + slider.value = [self.settingsStore objectForKey:specifier.key] != nil ? [[self.settingsStore objectForKey:specifier.key] floatValue] : [specifier.defaultValue floatValue]; + [slider addTarget:self action:@selector(sliderChangedValue:) forControlEvents:UIControlEventValueChanged]; + slider.key = specifier.key; + [cell setNeedsLayout]; + } + else if ([specifier.type isEqualToString:kIASKPSChildPaneSpecifier]) { + cell.textLabel.text = specifier.title; + } else if ([specifier.type isEqualToString:kIASKOpenURLSpecifier] || [specifier.type isEqualToString:kIASKMailComposeSpecifier]) { + cell.textLabel.text = specifier.title; + cell.detailTextLabel.text = [specifier.defaultValue description]; + } else if ([specifier.type isEqualToString:kIASKButtonSpecifier]) { + NSString *value = [self.settingsStore objectForKey:specifier.key]; + cell.textLabel.text = [value isKindOfClass:[NSString class]] ? [self.settingsReader titleForStringId:value] : specifier.title; + cell.textLabel.textAlignment = UITextAlignmentCenter; + } else { + cell.textLabel.text = specifier.title; + } + return cell; +} + +- (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { + //create a set of specifier types that can't be selected + static NSSet* noSelectionTypes = nil; + if(nil == noSelectionTypes) { + noSelectionTypes = [[NSSet setWithObjects:kIASKPSToggleSwitchSpecifier, kIASKPSSliderSpecifier, nil] retain]; + } + + IASKSpecifier *specifier = [self.settingsReader specifierForIndexPath:indexPath]; + if([noSelectionTypes containsObject:specifier.type]) { + return nil; + } else { + return indexPath; + } +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + IASKSpecifier *specifier = [self.settingsReader specifierForIndexPath:indexPath]; + + //switches and sliders can't be selected (should be captured by tableView:willSelectRowAtIndexPath: delegate method) + assert(![[specifier type] isEqualToString:kIASKPSToggleSwitchSpecifier]); + assert(![[specifier type] isEqualToString:kIASKPSSliderSpecifier]); + + if ([[specifier type] isEqualToString:kIASKPSMultiValueSpecifier]) { + IASKSpecifierValuesViewController *targetViewController = [[self.viewList objectAtIndex:kIASKSpecifierValuesViewControllerIndex] objectForKey:@"viewController"]; + + if (targetViewController == nil) { + // the view controller has not been created yet, create it and set it to our viewList array + // create a new dictionary with the new view controller + NSMutableDictionary *newItemDict = [NSMutableDictionary dictionaryWithCapacity:3]; + [newItemDict addEntriesFromDictionary: [self.viewList objectAtIndex:kIASKSpecifierValuesViewControllerIndex]]; // copy the title and explain strings + + targetViewController = [[IASKSpecifierValuesViewController alloc] initWithNibName:@"IASKSpecifierValuesView" bundle:nil]; + // add the new view controller to the dictionary and then to the 'viewList' array + [newItemDict setObject:targetViewController forKey:@"viewController"]; + [self.viewList replaceObjectAtIndex:kIASKSpecifierValuesViewControllerIndex withObject:newItemDict]; + [targetViewController release]; + + // load the view controll back in to push it + targetViewController = [[self.viewList objectAtIndex:kIASKSpecifierValuesViewControllerIndex] objectForKey:@"viewController"]; + } + [targetViewController setCurrentSpecifier:specifier]; + targetViewController.settingsReader = self.settingsReader; + targetViewController.settingsStore = self.settingsStore; + [[self navigationController] pushViewController:targetViewController animated:YES]; + } + else if ([[specifier type] isEqualToString:kIASKPSTextFieldSpecifier]) { + IASKPSTextFieldSpecifierViewCell *textFieldCell = (id)[tableView cellForRowAtIndexPath:indexPath]; + [textFieldCell.textField becomeFirstResponder]; + } + else if ([[specifier type] isEqualToString:kIASKPSChildPaneSpecifier]) { + + + Class vcClass = [specifier viewControllerClass]; + if (vcClass) { + SEL initSelector = [specifier viewControllerSelector]; + if (!initSelector) { + initSelector = @selector(init); + } + UIViewController * vc = [vcClass performSelector:@selector(alloc)]; + [vc performSelector:initSelector withObject:[specifier file] withObject:[specifier key]]; + if ([vc respondsToSelector:@selector(setDelegate:)]) { + [vc performSelector:@selector(setDelegate:) withObject:self.delegate]; + } + if ([vc respondsToSelector:@selector(setSettingsStore:)]) { + [vc performSelector:@selector(setSettingsStore:) withObject:self.settingsStore]; + } + self.navigationController.delegate = nil; + [self.navigationController pushViewController:vc animated:YES]; + [vc performSelector:@selector(release)]; + return; + } + + if (nil == [specifier file]) { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + return; + } + + IASKAppSettingsViewController *targetViewController = [[self.viewList objectAtIndex:kIASKSpecifierChildViewControllerIndex] objectForKey:@"viewController"]; + + if (targetViewController == nil) { + // the view controller has not been created yet, create it and set it to our viewList array + // create a new dictionary with the new view controller + NSMutableDictionary *newItemDict = [NSMutableDictionary dictionaryWithCapacity:3]; + [newItemDict addEntriesFromDictionary: [self.viewList objectAtIndex:kIASKSpecifierChildViewControllerIndex]]; // copy the title and explain strings + + targetViewController = [[[self class] alloc] initWithNibName:@"IASKAppSettingsView" bundle:nil]; + targetViewController.showDoneButton = NO; + targetViewController.settingsStore = self.settingsStore; + targetViewController.delegate = self.delegate; + + // add the new view controller to the dictionary and then to the 'viewList' array + [newItemDict setObject:targetViewController forKey:@"viewController"]; + [self.viewList replaceObjectAtIndex:kIASKSpecifierChildViewControllerIndex withObject:newItemDict]; + [targetViewController release]; + + // load the view controll back in to push it + targetViewController = [[self.viewList objectAtIndex:kIASKSpecifierChildViewControllerIndex] objectForKey:@"viewController"]; + } + targetViewController.file = specifier.file; // changes settingsReader + targetViewController.settingsReader.delegate = self.settingsReader.delegate; + [targetViewController.settingsReader initWithFile:specifier.file]; + targetViewController.title = specifier.title; + targetViewController.showCreditsFooter = NO; + [[self navigationController] pushViewController:targetViewController animated:YES]; + } else if ([[specifier type] isEqualToString:kIASKOpenURLSpecifier]) { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + [[UIApplication sharedApplication] openURL:[NSURL URLWithString:specifier.file]]; + } else if ([[specifier type] isEqualToString:kIASKButtonSpecifier]) { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if ([self.delegate respondsToSelector:@selector(settingsViewController:buttonTappedForKey:)]) { + [self.delegate settingsViewController:self buttonTappedForKey:[specifier key]]; + } else { + // legacy code, provided for backward compatibility + // the delegate mechanism above is much cleaner and doesn't leak + Class buttonClass = [specifier buttonClass]; + SEL buttonAction = [specifier buttonAction]; + if ([buttonClass respondsToSelector:buttonAction]) { + [buttonClass performSelector:buttonAction withObject:self withObject:[specifier key]]; + NSLog(@"InAppSettingsKit Warning: Using IASKButtonSpecifier without implementing the delegate method is deprecated"); + } + } + } else if ([[specifier type] isEqualToString:kIASKMailComposeSpecifier]) { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if ([MFMailComposeViewController canSendMail]) { + MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; + mailViewController.navigationBar.barStyle = self.navigationController.navigationBar.barStyle; + mailViewController.navigationBar.tintColor = self.navigationController.navigationBar.tintColor; + + if ([specifier localizedObjectForKey:kIASKMailComposeSubject]) { + [mailViewController setSubject:[specifier localizedObjectForKey:kIASKMailComposeSubject]]; + } + if ([[specifier specifierDict] objectForKey:kIASKMailComposeToRecipents]) { + [mailViewController setToRecipients:[[specifier specifierDict] objectForKey:kIASKMailComposeToRecipents]]; + } + if ([[specifier specifierDict] objectForKey:kIASKMailComposeCcRecipents]) { + [mailViewController setCcRecipients:[[specifier specifierDict] objectForKey:kIASKMailComposeCcRecipents]]; + } + if ([[specifier specifierDict] objectForKey:kIASKMailComposeBccRecipents]) { + [mailViewController setBccRecipients:[[specifier specifierDict] objectForKey:kIASKMailComposeBccRecipents]]; + } + if ([specifier localizedObjectForKey:kIASKMailComposeBody]) { + BOOL isHTML = NO; + if ([[specifier specifierDict] objectForKey:kIASKMailComposeBodyIsHTML]) { + isHTML = [[[specifier specifierDict] objectForKey:kIASKMailComposeBodyIsHTML] boolValue]; + } + + if ([self.delegate respondsToSelector:@selector(settingsViewController:mailComposeBodyForSpecifier:)]) { + [mailViewController setMessageBody:[self.delegate settingsViewController:self + mailComposeBodyForSpecifier:specifier] isHTML:isHTML]; + } + else { + [mailViewController setMessageBody:[specifier localizedObjectForKey:kIASKMailComposeBody] isHTML:isHTML]; + } + } + + UIViewController *vc = nil; + + if ([self.delegate respondsToSelector:@selector(settingsViewController:viewControllerForMailComposeViewForSpecifier:)]) { + vc = [self.delegate settingsViewController:self viewControllerForMailComposeViewForSpecifier:specifier]; + } + + if (vc == nil) { + vc = self; + } + + mailViewController.mailComposeDelegate = vc; + [vc presentModalViewController:mailViewController animated:YES]; + [mailViewController release]; + } else { + UIAlertView *alert = [[UIAlertView alloc] + initWithTitle:NSLocalizedString(@"Mail not configured", @"InAppSettingsKit") + message:NSLocalizedString(@"This device is not configured for sending Email. Please configure the Mail settings in the Settings app.", @"InAppSettingsKit") + delegate: nil + cancelButtonTitle:NSLocalizedString(@"OK", @"InAppSettingsKit") + otherButtonTitles:nil]; + [alert show]; + [alert release]; + } + + } else if ([[specifier type] isEqualToString:kIASKCustomViewSpecifier] && [self.delegate respondsToSelector:@selector(settingsViewController:tableView:didSelectCustomViewSpecifier:)]) { + [self.delegate settingsViewController:self tableView:tableView didSelectCustomViewSpecifier:specifier]; + } else { + [tableView deselectRowAtIndexPath:indexPath animated:NO]; + } +} + + +#pragma mark - +#pragma mark MFMailComposeViewControllerDelegate Function + +-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { + + // Forward the mail compose delegate + if ([self.delegate respondsToSelector:@selector(settingsViewController:mailComposeController:didFinishWithResult:error:)]) { + [self.delegate settingsViewController:self + mailComposeController:controller + didFinishWithResult:result + error:error]; + } + + // NOTE: No error handling is done here + [self dismissModalViewControllerAnimated:YES]; +} + +#pragma mark - +#pragma mark UITextFieldDelegate Functions + +- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { + self.currentFirstResponder = textField; + return YES; +} + +- (void)_textChanged:(id)sender { + IASKTextField *text = (IASKTextField*)sender; + [_settingsStore setObject:[text text] forKey:[text key]]; + [[NSNotificationCenter defaultCenter] postNotificationName:kIASKAppSettingChanged + object:[text key] + userInfo:[NSDictionary dictionaryWithObject:[text text] + forKey:[text key]]]; +} + +- (BOOL)textFieldShouldReturn:(UITextField *)textField{ + [textField resignFirstResponder]; + self.currentFirstResponder = nil; + return YES; +} + + +#pragma mark Notifications + +- (void)synchronizeSettings { + [_settingsStore synchronize]; +} + +static NSDictionary *oldUserDefaults = nil; +- (void)userDefaultsDidChange { + NSDictionary *currentDict = [NSUserDefaults standardUserDefaults].dictionaryRepresentation; + NSMutableArray *indexPathsToUpdate = [NSMutableArray array]; + for (NSString *key in currentDict.allKeys) { + if (![[oldUserDefaults valueForKey:key] isEqual:[currentDict valueForKey:key]]) { + NSIndexPath *path = [self.settingsReader indexPathForKey:key]; + if (path && ![[self.settingsReader specifierForKey:key].type isEqualToString:kIASKCustomViewSpecifier]) { + [indexPathsToUpdate addObject:path]; + } + } + } + [oldUserDefaults release], oldUserDefaults = [currentDict retain]; + + + for (UITableViewCell *cell in self.tableView.visibleCells) { + if ([cell isKindOfClass:[IASKPSTextFieldSpecifierViewCell class]] && [((IASKPSTextFieldSpecifierViewCell*)cell).textField isFirstResponder]) { + [indexPathsToUpdate removeObject:[self.tableView indexPathForCell:cell]]; + } + } + if (indexPathsToUpdate.count) { + [self.tableView reloadRowsAtIndexPaths:indexPathsToUpdate withRowAnimation:UITableViewRowAnimationNone]; + } +} + +- (void)reload { + // wait 0.5 sec until UI is available after applicationWillEnterForeground + [self.tableView performSelector:@selector(reloadData) withObject:nil afterDelay:0.5]; +} + +#pragma mark CGRect Utility function +CGRect IASKCGRectSwap(CGRect rect) { + CGRect newRect; + newRect.origin.x = rect.origin.y; + newRect.origin.y = rect.origin.x; + newRect.size.width = rect.size.height; + newRect.size.height = rect.size.width; + return newRect; +} +@end diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h b/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h new file mode 100644 index 000000000..08b6ceb27 --- /dev/null +++ b/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h @@ -0,0 +1,30 @@ +// +// IASKAppSettingsWebViewController.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import +#import + +@interface IASKAppSettingsWebViewController : UIViewController { + UIWebView *webView; + NSURL *url; +} + +- (id)initWithFile:(NSString*)htmlFileName key:(NSString*)key; + +@property (nonatomic, retain) IBOutlet UIWebView *webView; +@property (nonatomic, retain) NSURL *url; + +@end diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m b/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m new file mode 100644 index 000000000..46429b3ce --- /dev/null +++ b/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m @@ -0,0 +1,148 @@ +// +// IASKAppSettingsWebViewController.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKAppSettingsWebViewController.h" + +@implementation IASKAppSettingsWebViewController + +@synthesize url; +@synthesize webView; + +- (id)initWithFile:(NSString*)urlString key:(NSString*)key { + if (!(self = [super initWithNibName:nil bundle:nil])) { + return nil; + } + + self.url = [NSURL URLWithString:urlString]; + if (!self.url || ![self.url scheme]) { + NSString *path = [[NSBundle mainBundle] pathForResource:[urlString stringByDeletingPathExtension] ofType:[urlString pathExtension]]; + if(path) + self.url = [NSURL fileURLWithPath:path]; + else + self.url = nil; + } + return self; +} + + +- (void)dealloc { + [webView release], webView = nil; + [url release], url = nil; + + [super dealloc]; +} + +- (void)viewWillAppear:(BOOL)animated { + [webView loadRequest:[NSURLRequest requestWithURL:self.url]]; +} + +- (void)viewDidUnload { + [super viewDidUnload]; + self.webView = nil; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return YES; +} + +- (void)webViewDidFinishLoad:(UIWebView *)webView { + self.navigationItem.title = [self.webView stringByEvaluatingJavaScriptFromString:@"document.title"]; +} + +- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { + NSURL *newURL = [request URL]; + + // intercept mailto URL and send it to an in-app Mail compose view instead + if ([[newURL scheme] isEqualToString:@"mailto"]) { + + NSArray *rawURLparts = [[newURL resourceSpecifier] componentsSeparatedByString:@"?"]; + if (rawURLparts.count > 2) { + return NO; // invalid URL + } + + MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; + mailViewController.mailComposeDelegate = self; + + NSMutableArray *toRecipients = [NSMutableArray array]; + NSString *defaultRecipient = [rawURLparts objectAtIndex:0]; + if (defaultRecipient.length) { + [toRecipients addObject:defaultRecipient]; + } + + if (rawURLparts.count == 2) { + NSString *queryString = [rawURLparts objectAtIndex:1]; + + NSArray *params = [queryString componentsSeparatedByString:@"&"]; + for (NSString *param in params) { + NSArray *keyValue = [param componentsSeparatedByString:@"="]; + if (keyValue.count != 2) { + continue; + } + NSString *key = [[keyValue objectAtIndex:0] lowercaseString]; + NSString *value = [keyValue objectAtIndex:1]; + + value = (NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, + (CFStringRef)value, + CFSTR(""), + kCFStringEncodingUTF8); + [value autorelease]; + + if ([key isEqualToString:@"subject"]) { + [mailViewController setSubject:value]; + } + + if ([key isEqualToString:@"body"]) { + [mailViewController setMessageBody:value isHTML:NO]; + } + + if ([key isEqualToString:@"to"]) { + [toRecipients addObjectsFromArray:[value componentsSeparatedByString:@","]]; + } + + if ([key isEqualToString:@"cc"]) { + NSArray *recipients = [value componentsSeparatedByString:@","]; + [mailViewController setCcRecipients:recipients]; + } + + if ([key isEqualToString:@"bcc"]) { + NSArray *recipients = [value componentsSeparatedByString:@","]; + [mailViewController setBccRecipients:recipients]; + } + } + } + + [mailViewController setToRecipients:toRecipients]; + + [self presentModalViewController:mailViewController animated:YES]; + [mailViewController release]; + return NO; + } + + // open inline if host is the same, otherwise, pass to the system + if (![newURL host] || [[newURL host] isEqualToString:[self.url host]]) { + return YES; + } + [[UIApplication sharedApplication] openURL:newURL]; + return NO; +} + +- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { + [self dismissModalViewControllerAnimated:YES]; +} + + + +@end diff --git a/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h b/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h new file mode 100644 index 000000000..d2810d368 --- /dev/null +++ b/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h @@ -0,0 +1,36 @@ +// +// IASKSpecifierValuesViewController.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import +#import "IASKSettingsStore.h" +#import "IASKViewController.h" +@class IASKSpecifier; +@class IASKSettingsReader; + +@interface IASKSpecifierValuesViewController : UIViewController { + UITableView *_tableView; + + IASKSpecifier *_currentSpecifier; + NSIndexPath *_checkedItem; + IASKSettingsReader *_settingsReader; + id _settingsStore; +} + +@property (nonatomic, retain) IBOutlet UITableView *tableView; +@property (nonatomic, retain) NSIndexPath *checkedItem; +@property (nonatomic, retain) IASKSpecifier *currentSpecifier; + +@end diff --git a/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m b/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m new file mode 100644 index 000000000..84236a755 --- /dev/null +++ b/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m @@ -0,0 +1,195 @@ +// +// IASKSpecifierValuesViewController.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKSpecifierValuesViewController.h" +#import "IASKSpecifier.h" +#import "IASKSettingsReader.h" +#import "IASKSettingsStoreUserDefaults.h" + +#define kCellValue @"kCellValue" + +@interface IASKSpecifierValuesViewController() +- (void)userDefaultsDidChange; +@end + +@implementation IASKSpecifierValuesViewController + +@synthesize tableView=_tableView; +@synthesize currentSpecifier=_currentSpecifier; +@synthesize checkedItem=_checkedItem; +@synthesize settingsReader = _settingsReader; +@synthesize settingsStore = _settingsStore; + +- (void) updateCheckedItem { + NSInteger index; + + // Find the currently checked item + if([self.settingsStore objectForKey:[_currentSpecifier key]]) { + index = [[_currentSpecifier multipleValues] indexOfObject:[self.settingsStore objectForKey:[_currentSpecifier key]]]; + } else { + index = [[_currentSpecifier multipleValues] indexOfObject:[_currentSpecifier defaultValue]]; + } + [self setCheckedItem:[NSIndexPath indexPathForRow:index inSection:0]]; +} + +- (id)settingsStore { + if(_settingsStore == nil) { + _settingsStore = [[IASKSettingsStoreUserDefaults alloc] init]; + } + return _settingsStore; +} + +- (void)viewWillAppear:(BOOL)animated { + if (_currentSpecifier) { + [self setTitle:[_currentSpecifier title]]; + [self updateCheckedItem]; + } + + if (_tableView) { + [_tableView reloadData]; + + // Make sure the currently checked item is visible + [_tableView scrollToRowAtIndexPath:[self checkedItem] atScrollPosition:UITableViewScrollPositionMiddle animated:NO]; + } + [super viewWillAppear:animated]; +} + +- (void)viewDidAppear:(BOOL)animated { + [_tableView flashScrollIndicators]; + [super viewDidAppear:animated]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(userDefaultsDidChange) + name:NSUserDefaultsDidChangeNotification + object:[NSUserDefaults standardUserDefaults]]; +} + +- (void)viewDidDisappear:(BOOL)animated { + [[NSNotificationCenter defaultCenter] removeObserver:self name:NSUserDefaultsDidChangeNotification object:nil]; + [super viewDidDisappear:animated]; +} + + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return YES; +} + +- (void)didReceiveMemoryWarning { + // Releases the view if it doesn't have a superview. + [super didReceiveMemoryWarning]; + + // Release any cached data, images, etc that aren't in use. +} + +- (void)viewDidUnload { + // Release any retained subviews of the main view. + // e.g. self.myOutlet = nil; + self.tableView = nil; +} + + +- (void)dealloc { + [_currentSpecifier release], _currentSpecifier = nil; + [_checkedItem release], _checkedItem = nil; + [_settingsReader release], _settingsReader = nil; + [_settingsStore release], _settingsStore = nil; + [_tableView release], _tableView = nil; + [super dealloc]; +} + + +#pragma mark - +#pragma mark UITableView delegates + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [_currentSpecifier multipleValuesCount]; +} + +- (void)selectCell:(UITableViewCell *)cell { + [cell setAccessoryType:UITableViewCellAccessoryCheckmark]; + [[cell textLabel] setTextColor:kIASKgrayBlueColor]; +} + +- (void)deselectCell:(UITableViewCell *)cell { + [cell setAccessoryType:UITableViewCellAccessoryNone]; + [[cell textLabel] setTextColor:[UIColor darkTextColor]]; +} + +- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { + return [_currentSpecifier footerText]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellValue]; + NSArray *titles = [_currentSpecifier multipleTitles]; + + if (!cell) { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellValue] autorelease]; + } + + if ([indexPath isEqual:[self checkedItem]]) { + [self selectCell:cell]; + } else { + [self deselectCell:cell]; + } + + @try { + [[cell textLabel] setText:[self.settingsReader titleForStringId:[titles objectAtIndex:indexPath.row]]]; + } + @catch (NSException * e) {} + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + + if (indexPath == [self checkedItem]) { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + return; + } + + NSArray *values = [_currentSpecifier multipleValues]; + + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + [self deselectCell:[tableView cellForRowAtIndexPath:[self checkedItem]]]; + [self selectCell:[tableView cellForRowAtIndexPath:indexPath]]; + [self setCheckedItem:indexPath]; + + [self.settingsStore setObject:[values objectAtIndex:indexPath.row] forKey:[_currentSpecifier key]]; + [self.settingsStore synchronize]; + [[NSNotificationCenter defaultCenter] postNotificationName:kIASKAppSettingChanged + object:[_currentSpecifier key] + userInfo:[NSDictionary dictionaryWithObject:[values objectAtIndex:indexPath.row] + forKey:[_currentSpecifier key]]]; +} + +#pragma mark Notifications + +- (void)userDefaultsDidChange { + NSIndexPath *oldCheckedItem = [[self.checkedItem retain] autorelease]; + if(_currentSpecifier) { + [self updateCheckedItem]; + } + + // only reload the table if it had changed; prevents animation cancellation + if (![self.checkedItem isEqual:oldCheckedItem]) { + [_tableView reloadData]; + } +} + +@end diff --git a/InAppSettingsKit/Controllers/IASKViewController.h b/InAppSettingsKit/Controllers/IASKViewController.h new file mode 100644 index 000000000..40e450415 --- /dev/null +++ b/InAppSettingsKit/Controllers/IASKViewController.h @@ -0,0 +1,26 @@ +// +// IASKAppSettingsViewController.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +@class IASKSettingsReader; +@protocol IASKSettingsStore; + +// protocol all IASK view controllers implement +@protocol IASKViewController + +@property (nonatomic, retain) IASKSettingsReader* settingsReader; +@property (nonatomic, retain) id settingsStore; + +@end diff --git a/InAppSettingsKit/Models/IASKSettingsReader.h b/InAppSettingsKit/Models/IASKSettingsReader.h new file mode 100644 index 000000000..bbdd1a5b5 --- /dev/null +++ b/InAppSettingsKit/Models/IASKSettingsReader.h @@ -0,0 +1,149 @@ +// +// IASKSettingsReader.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import + +#define kIASKPreferenceSpecifiers @"PreferenceSpecifiers" +#define kIASKType @"Type" +#define kIASKTitle @"Title" +#define kIASKFooterText @"FooterText" +#define kIASKKey @"Key" +#define kIASKFile @"File" +#define kIASKDefaultValue @"DefaultValue" +#define kIASKMinimumValue @"MinimumValue" +#define kIASKMaximumValue @"MaximumValue" +#define kIASKTrueValue @"TrueValue" +#define kIASKFalseValue @"FalseValue" +#define kIASKIsSecure @"IsSecure" +#define KIASKKeyboardType @"KeyboardType" +#define kIASKAutocapitalizationType @"AutocapitalizationType" +#define kIASKAutoCorrectionType @"AutocorrectionType" +#define kIASKValues @"Values" +#define kIASKTitles @"Titles" +#define kIASKViewControllerClass @"IASKViewControllerClass" +#define kIASKViewControllerSelector @"IASKViewControllerSelector" +#define kIASKButtonClass @"IASKButtonClass" +#define kIASKButtonAction @"IASKButtonAction" +#define kIASKMailComposeToRecipents @"IASKMailComposeToRecipents" +#define kIASKMailComposeCcRecipents @"IASKMailComposeCcRecipents" +#define kIASKMailComposeBccRecipents @"IASKMailComposeBccRecipents" +#define kIASKMailComposeSubject @"IASKMailComposeSubject" +#define kIASKMailComposeBody @"IASKMailComposeBody" +#define kIASKMailComposeBodyIsHTML @"IASKMailComposeBodyIsHTML" +#define kIASKKeyboardAlphabet @"Alphabet" +#define kIASKKeyboardNumbersAndPunctuation @"NumbersAndPunctuation" +#define kIASKKeyboardNumberPad @"NumberPad" +#define kIASKKeyboardDecimalPad @"DecimalPad" + +#define KIASKKeyboardURL @"URL" +#define kIASKKeyboardEmailAddress @"EmailAddress" +#define kIASKAutoCapNone @"None" +#define kIASKAutoCapSentences @"Sentences" +#define kIASKAutoCapWords @"Words" +#define kIASKAutoCapAllCharacters @"AllCharacters" +#define kIASKAutoCorrDefault @"Default" +#define kIASKAutoCorrNo @"No" +#define kIASKAutoCorrYes @"Yes" +#define kIASKMinimumValueImage @"MinimumValueImage" +#define kIASKMaximumValueImage @"MaximumValueImage" + +#define kIASKPSGroupSpecifier @"PSGroupSpecifier" +#define kIASKPSToggleSwitchSpecifier @"PSToggleSwitchSpecifier" +#define kIASKPSMultiValueSpecifier @"PSMultiValueSpecifier" +#define kIASKPSSliderSpecifier @"PSSliderSpecifier" +#define kIASKPSTitleValueSpecifier @"PSTitleValueSpecifier" +#define kIASKPSTextFieldSpecifier @"PSTextFieldSpecifier" +#define kIASKPSChildPaneSpecifier @"PSChildPaneSpecifier" +#define kIASKOpenURLSpecifier @"IASKOpenURLSpecifier" +#define kIASKButtonSpecifier @"IASKButtonSpecifier" +#define kIASKMailComposeSpecifier @"IASKMailComposeSpecifier" +#define kIASKCustomViewSpecifier @"IASKCustomViewSpecifier" + +#define kIASKBundleFolder @"Settings.bundle" +#define kIASKBundleFolderAlt @"InAppSettings.bundle" +#define kIASKBundleFilename @"Root.plist" +#define KIASKBundleLocaleFolderExtension @".lproj" + +#define kIASKAppSettingChanged @"kAppSettingChanged" + +#define kIASKSectionHeaderIndex 0 + +#define kIASKSliderNoImagesPadding 11 +#define kIASKSliderImagesPadding 43 + + +#define kIASKTableWidth 320 +#define kIASKSpacing 5 +#define kIASKMinLabelWidth 97 +#define kIASKMinValueWidth 35 +#define kIASKPaddingLeft 9 +#define kIASKPaddingRight 10 +#define kIASKHorizontalPaddingGroupTitles 19 +#define kIASKVerticalPaddingGroupTitles 15 + +#define kIASKLabelFontSize 17 +#define kIASKgrayBlueColor [UIColor colorWithRed:0.318 green:0.4 blue:0.569 alpha:1.0] + +#ifndef kCFCoreFoundationVersionNumber_iPhoneOS_4_0 +#define kCFCoreFoundationVersionNumber_iPhoneOS_4_0 550.32 +#endif + +#ifndef kCFCoreFoundationVersionNumber_iPhoneOS_4_1 +#define kCFCoreFoundationVersionNumber_iPhoneOS_4_1 550.38 +#endif + + +#define IASK_IF_IOS4_OR_GREATER(...) \ +if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iPhoneOS_4_0) \ +{ \ +__VA_ARGS__ \ +} + +@class IASKSpecifier; + +@protocol IASKSettingsReaderFilterDelegate +- (NSDictionary*) filterPreferenceSpecifier:(NSDictionary*)specifier; +@end + +@interface IASKSettingsReader : NSObject { + NSString *_path; + NSString *_localizationTable; + NSString *_bundlePath; + NSDictionary *_settingsBundle; + NSArray *_dataSource; + NSBundle *_bundle; + id delegate; +} + +- (id)initWithFile:(NSString*)file; +- (NSInteger)numberOfSections; +- (NSInteger)numberOfRowsForSection:(NSInteger)section; +- (IASKSpecifier*)specifierForIndexPath:(NSIndexPath*)indexPath; +- (NSIndexPath*)indexPathForKey:(NSString*)key; +- (IASKSpecifier*)specifierForKey:(NSString*)key; +- (NSString*)titleForSection:(NSInteger)section; +- (NSString*)keyForSection:(NSInteger)section; +- (NSString*)footerTextForSection:(NSInteger)section; +- (NSString*)titleForStringId:(NSString*)stringId; +- (NSString*)pathForImageNamed:(NSString*)image; + +@property (nonatomic, retain) NSString *path; +@property (nonatomic, retain) NSString *localizationTable; +@property (nonatomic, retain) NSString *bundlePath; +@property (nonatomic, retain) NSDictionary *settingsBundle; +@property (nonatomic, retain) NSArray *dataSource; +@property (nonatomic, retain) id delegate; +@end diff --git a/InAppSettingsKit/Models/IASKSettingsReader.m b/InAppSettingsKit/Models/IASKSettingsReader.m new file mode 100644 index 000000000..dd82ce72b --- /dev/null +++ b/InAppSettingsKit/Models/IASKSettingsReader.m @@ -0,0 +1,278 @@ +// +// IASKSettingsReader.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKSettingsReader.h" +#import "IASKSpecifier.h" + +@interface IASKSettingsReader (private) +- (void)_reinterpretBundle:(NSDictionary*)settingsBundle; +- (BOOL)_sectionHasHeading:(NSInteger)section; +- (NSString *)platformSuffix; +- (NSString *)locateSettingsFile:(NSString *)file; + +@end + +@implementation IASKSettingsReader + +@synthesize path=_path, +localizationTable=_localizationTable, +bundlePath=_bundlePath, +settingsBundle=_settingsBundle, +dataSource=_dataSource; +@synthesize delegate; + +- (id)init { + return [self initWithFile:@"Root"]; +} + +- (id)initWithFile:(NSString*)file { + if ((self=[super init])) { + + + self.path = [self locateSettingsFile: file]; + [self setSettingsBundle:[NSDictionary dictionaryWithContentsOfFile:self.path]]; + self.bundlePath = [self.path stringByDeletingLastPathComponent]; + _bundle = [[NSBundle bundleWithPath:[self bundlePath]] retain]; + + // Look for localization file + self.localizationTable = [self.settingsBundle objectForKey:@"StringsTable"]; + if (!self.localizationTable) + { + // Look for localization file using filename + self.localizationTable = [[[[self.path stringByDeletingPathExtension] // removes '.plist' + stringByDeletingPathExtension] // removes potential '.inApp' + lastPathComponent] // strip absolute path + stringByReplacingOccurrencesOfString:[self platformSuffix] withString:@""]; // removes potential '~device' (~ipad, ~iphone) + if([_bundle pathForResource:self.localizationTable ofType:@"strings"] == nil){ + // Could not find the specified localization: use default + self.localizationTable = @"Root"; + } + } + + if (_settingsBundle) { + [self _reinterpretBundle:_settingsBundle]; + } + } + return self; +} + +- (void)dealloc { + [_path release], _path = nil; + [_localizationTable release], _localizationTable = nil; + [_bundlePath release], _bundlePath = nil; + [_settingsBundle release], _settingsBundle = nil; + [_dataSource release], _dataSource = nil; + [_bundle release], _bundle = nil; + + [super dealloc]; +} + +- (void)_reinterpretBundle:(NSDictionary*)settingsBundle { + NSArray *preferenceSpecifiers = [settingsBundle objectForKey:kIASKPreferenceSpecifiers]; + NSInteger sectionCount = -1; + NSMutableArray *dataSource = [[[NSMutableArray alloc] init] autorelease]; + + for (NSDictionary *specifier in preferenceSpecifiers) { + if (delegate != nil) { + specifier = [delegate filterPreferenceSpecifier:specifier]; + if (specifier == nil) { + // skip + continue; + } + } + if ([(NSString*)[specifier objectForKey:kIASKType] isEqualToString:kIASKPSGroupSpecifier]) { + NSMutableArray *newArray = [[NSMutableArray alloc] init]; + + [newArray addObject:specifier]; + [dataSource addObject:newArray]; + [newArray release]; + sectionCount++; + } + else { + if (sectionCount == -1) { + NSMutableArray *newArray = [[NSMutableArray alloc] init]; + [dataSource addObject:newArray]; + [newArray release]; + sectionCount++; + } + + IASKSpecifier *newSpecifier = [[IASKSpecifier alloc] initWithSpecifier:specifier]; + [(NSMutableArray*)[dataSource objectAtIndex:sectionCount] addObject:newSpecifier]; + [newSpecifier release]; + } + } + [self setDataSource:dataSource]; +} + +- (BOOL)_sectionHasHeading:(NSInteger)section { + return [[[[self dataSource] objectAtIndex:section] objectAtIndex:0] isKindOfClass:[NSDictionary class]]; +} + +- (NSInteger)numberOfSections { + return [[self dataSource] count]; +} + +- (NSInteger)numberOfRowsForSection:(NSInteger)section { + int headingCorrection = [self _sectionHasHeading:section] ? 1 : 0; + return [(NSArray*)[[self dataSource] objectAtIndex:section] count] - headingCorrection; +} + +- (IASKSpecifier*)specifierForIndexPath:(NSIndexPath*)indexPath { + int headingCorrection = [self _sectionHasHeading:indexPath.section] ? 1 : 0; + + IASKSpecifier *specifier = [[[self dataSource] objectAtIndex:indexPath.section] objectAtIndex:(indexPath.row+headingCorrection)]; + specifier.settingsReader = self; + return specifier; +} + +- (NSIndexPath*)indexPathForKey:(NSString *)key { + for (NSUInteger sectionIndex = 0; sectionIndex < self.dataSource.count; sectionIndex++) { + NSArray *section = [self.dataSource objectAtIndex:sectionIndex]; + for (NSUInteger rowIndex = 0; rowIndex < section.count; rowIndex++) { + IASKSpecifier *specifier = (IASKSpecifier*)[section objectAtIndex:rowIndex]; + if ([specifier isKindOfClass:[IASKSpecifier class]] && [specifier.key isEqualToString:key]) { + NSUInteger correctedRowIndex = rowIndex - [self _sectionHasHeading:sectionIndex]; + return [NSIndexPath indexPathForRow:correctedRowIndex inSection:sectionIndex]; + } + } + } + return nil; +} + +- (IASKSpecifier*)specifierForKey:(NSString*)key { + for (NSArray *specifiers in _dataSource) { + for (id sp in specifiers) { + if ([sp isKindOfClass:[IASKSpecifier class]]) { + if ([[sp key] isEqualToString:key]) { + return sp; + } + } + } + } + return nil; +} + +- (NSString*)titleForSection:(NSInteger)section { + if ([self _sectionHasHeading:section]) { + NSDictionary *dict = [[[self dataSource] objectAtIndex:section] objectAtIndex:kIASKSectionHeaderIndex]; + return [self titleForStringId:[dict objectForKey:kIASKTitle]]; + } + return nil; +} + +- (NSString*)keyForSection:(NSInteger)section { + if ([self _sectionHasHeading:section]) { + return [[[[self dataSource] objectAtIndex:section] objectAtIndex:kIASKSectionHeaderIndex] objectForKey:kIASKKey]; + } + return nil; +} + +- (NSString*)footerTextForSection:(NSInteger)section { + if ([self _sectionHasHeading:section]) { + NSDictionary *dict = [[[self dataSource] objectAtIndex:section] objectAtIndex:kIASKSectionHeaderIndex]; + return [self titleForStringId:[dict objectForKey:kIASKFooterText]]; + } + return nil; +} + +- (NSString*)titleForStringId:(NSString*)stringId { + return [_bundle localizedStringForKey:stringId value:stringId table:self.localizationTable]; +} + +- (NSString*)pathForImageNamed:(NSString*)image { + return [[self bundlePath] stringByAppendingPathComponent:image]; +} + +- (NSString *)platformSuffix { + BOOL isPad = NO; +#if (__IPHONE_OS_VERSION_MAX_ALLOWED >= 30200) + isPad = UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad; +#endif + return isPad ? @"~ipad" : @"~iphone"; +} + +- (NSString *)file:(NSString *)file + withBundle:(NSString *)bundle + suffix:(NSString *)suffix + extension:(NSString *)extension { + + NSString *appBundle = [[NSBundle mainBundle] bundlePath]; + bundle = [appBundle stringByAppendingPathComponent:bundle]; + file = [file stringByAppendingFormat:@"%@%@", suffix, extension]; + return [bundle stringByAppendingPathComponent:file]; + +} + +- (NSString *)locateSettingsFile: (NSString *)file { + + // The file is searched in the following order: + // + // InAppSettings.bundle/FILE~DEVICE.inApp.plist + // InAppSettings.bundle/FILE.inApp.plist + // InAppSettings.bundle/FILE~DEVICE.plist + // InAppSettings.bundle/FILE.plist + // Settings.bundle/FILE~DEVICE.inApp.plist + // Settings.bundle/FILE.inApp.plist + // Settings.bundle/FILE~DEVICE.plist + // Settings.bundle/FILE.plist + // + // where DEVICE is either "iphone" or "ipad" depending on the current + // interface idiom. + // + // Settings.app uses the ~DEVICE suffixes since iOS 4.0. There are some + // differences from this implementation: + // - For an iPhone-only app running on iPad, Settings.app will not use the + // ~iphone suffix. There is no point in using these suffixes outside + // of universal apps anyway. + // - This implementation uses the device suffixes on iOS 3.x as well. + // - also check current locale (short only) + + NSArray *bundles = + [NSArray arrayWithObjects:kIASKBundleFolderAlt, kIASKBundleFolder, nil]; + + NSArray *extensions = + [NSArray arrayWithObjects:@".inApp.plist", @".plist", nil]; + + NSArray *suffixes = + [NSArray arrayWithObjects:[self platformSuffix], @"", nil]; + + NSArray *languages = + [NSArray arrayWithObjects:[[[NSLocale preferredLanguages] objectAtIndex:0] stringByAppendingString:KIASKBundleLocaleFolderExtension], @"", nil]; + + NSString *path = nil; + NSFileManager *fileManager = [NSFileManager defaultManager]; + + for (NSString *bundle in bundles) { + for (NSString *extension in extensions) { + for (NSString *suffix in suffixes) { + for (NSString *language in languages) { + path = [self file:file + withBundle:[bundle stringByAppendingPathComponent:language] + suffix:suffix + extension:extension]; + if ([fileManager fileExistsAtPath:path]) { + goto exitFromNestedLoop; + } + } + } + } + } + +exitFromNestedLoop: + return path; +} + +@end diff --git a/InAppSettingsKit/Models/IASKSettingsStore.h b/InAppSettingsKit/Models/IASKSettingsStore.h new file mode 100644 index 000000000..c1b53ba2b --- /dev/null +++ b/InAppSettingsKit/Models/IASKSettingsStore.h @@ -0,0 +1,39 @@ +// +// IASKSettingsStore.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import + +@protocol IASKSettingsStore +@required +- (void)setBool:(BOOL)value forKey:(NSString*)key; +- (void)setFloat:(float)value forKey:(NSString*)key; +- (void)setDouble:(double)value forKey:(NSString*)key; +- (void)setInteger:(int)value forKey:(NSString*)key; +- (void)setObject:(id)value forKey:(NSString*)key; +- (BOOL)boolForKey:(NSString*)key; +- (float)floatForKey:(NSString*)key; +- (double)doubleForKey:(NSString*)key; +- (int)integerForKey:(NSString*)key; +- (id)objectForKey:(NSString*)key; +- (BOOL)synchronize; // Write settings to a permanant storage. Returns YES on success, NO otherwise +@end + + +@interface IASKAbstractSettingsStore : NSObject { +} + +@end diff --git a/InAppSettingsKit/Models/IASKSettingsStore.m b/InAppSettingsKit/Models/IASKSettingsStore.m new file mode 100644 index 000000000..8efbe7da2 --- /dev/null +++ b/InAppSettingsKit/Models/IASKSettingsStore.m @@ -0,0 +1,68 @@ +// +// IASKSettingsStore.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKSettingsStore.h" + +@implementation IASKAbstractSettingsStore + +- (void)setObject:(id)value forKey:(NSString*)key { + [NSException raise:@"Unimplemented" + format:@"setObject:forKey: must be implemented in subclasses of IASKAbstractSettingsStore"]; +} + +- (id)objectForKey:(NSString*)key { + [NSException raise:@"Unimplemented" + format:@"objectForKey: must be implemented in subclasses of IASKAbstractSettingsStore"]; + return nil; +} + +- (void)setBool:(BOOL)value forKey:(NSString*)key { + [self setObject:[NSNumber numberWithBool:value] forKey:key]; +} + +- (void)setFloat:(float)value forKey:(NSString*)key { + [self setObject:[NSNumber numberWithFloat:value] forKey:key]; +} + +- (void)setInteger:(int)value forKey:(NSString*)key { + [self setObject:[NSNumber numberWithInt:value] forKey:key]; +} + +- (void)setDouble:(double)value forKey:(NSString*)key { + [self setObject:[NSNumber numberWithDouble:value] forKey:key]; +} + +- (BOOL)boolForKey:(NSString*)key { + return [[self objectForKey:key] boolValue]; +} + +- (float)floatForKey:(NSString*)key { + return [[self objectForKey:key] floatValue]; +} +- (int)integerForKey:(NSString*)key { + return [[self objectForKey:key] intValue]; +} + +- (double)doubleForKey:(NSString*)key { + return [[self objectForKey:key] doubleValue]; +} + +- (BOOL)synchronize { + return NO; +} + +@end \ No newline at end of file diff --git a/InAppSettingsKit/Models/IASKSettingsStoreFile.h b/InAppSettingsKit/Models/IASKSettingsStoreFile.h new file mode 100644 index 000000000..6d4fe2993 --- /dev/null +++ b/InAppSettingsKit/Models/IASKSettingsStoreFile.h @@ -0,0 +1,28 @@ +// +// IASKSettingsStoreFile.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import +#import "IASKSettingsStore.h" + +@interface IASKSettingsStoreFile : IASKAbstractSettingsStore { + NSString * _filePath; + NSMutableDictionary * _dict; +} + +- (id)initWithPath:(NSString*)path; + +@end diff --git a/InAppSettingsKit/Models/IASKSettingsStoreFile.m b/InAppSettingsKit/Models/IASKSettingsStoreFile.m new file mode 100644 index 000000000..104642d7e --- /dev/null +++ b/InAppSettingsKit/Models/IASKSettingsStoreFile.m @@ -0,0 +1,54 @@ +// +// IASKSettingsStoreFile.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKSettingsStoreFile.h" + + +@implementation IASKSettingsStoreFile + +- (id)initWithPath:(NSString*)path { + if((self = [super init])) { + _filePath = [path retain]; + _dict = [[NSMutableDictionary alloc] initWithContentsOfFile:path]; + if(_dict == nil) { + _dict = [[NSMutableDictionary alloc] init]; + } + } + return self; +} + +- (void)dealloc { + [_dict release], _dict = nil; + [_filePath release], _filePath = nil; + + [super dealloc]; +} + + +- (void)setObject:(id)value forKey:(NSString *)key { + [_dict setObject:value forKey:key]; +} + +- (id)objectForKey:(NSString *)key { + return [_dict objectForKey:key]; +} + +- (BOOL)synchronize { + return [_dict writeToFile:_filePath atomically:YES]; +} + +@end diff --git a/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h b/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h new file mode 100644 index 000000000..3731f5e3b --- /dev/null +++ b/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h @@ -0,0 +1,25 @@ +// +// IASKSettingsStoreUserDefaults.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import +#import "IASKSettingsStore.h" + +@interface IASKSettingsStoreUserDefaults : IASKAbstractSettingsStore { + +} + +@end diff --git a/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m b/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m new file mode 100644 index 000000000..fd24bf097 --- /dev/null +++ b/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m @@ -0,0 +1,67 @@ +// +// IASKSettingsStoreUserDefaults.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// Marc-Etienne M.Léveillé, Edovia Inc., http://www.edovia.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKSettingsStoreUserDefaults.h" + + +@implementation IASKSettingsStoreUserDefaults + +- (void)setBool:(BOOL)value forKey:(NSString*)key { + [[NSUserDefaults standardUserDefaults] setBool:value forKey:key]; +} + +- (void)setFloat:(float)value forKey:(NSString*)key { + [[NSUserDefaults standardUserDefaults] setFloat:value forKey:key]; +} + +- (void)setDouble:(double)value forKey:(NSString*)key { + [[NSUserDefaults standardUserDefaults] setDouble:value forKey:key]; +} + +- (void)setInteger:(int)value forKey:(NSString*)key { + [[NSUserDefaults standardUserDefaults] setInteger:value forKey:key]; +} + +- (void)setObject:(id)value forKey:(NSString*)key { + [[NSUserDefaults standardUserDefaults] setObject:value forKey:key]; +} + +- (BOOL)boolForKey:(NSString*)key { + return [[NSUserDefaults standardUserDefaults] boolForKey:key]; +} + +- (float)floatForKey:(NSString*)key { + return [[NSUserDefaults standardUserDefaults] floatForKey:key]; +} + +- (double)doubleForKey:(NSString*)key { + return [[NSUserDefaults standardUserDefaults] doubleForKey:key]; +} + +- (int)integerForKey:(NSString*)key { + return [[NSUserDefaults standardUserDefaults] integerForKey:key]; +} + +- (id)objectForKey:(NSString*)key { + return [[NSUserDefaults standardUserDefaults] objectForKey:key]; +} + +- (BOOL)synchronize { + return [[NSUserDefaults standardUserDefaults] synchronize]; +} + +@end diff --git a/InAppSettingsKit/Models/IASKSpecifier.h b/InAppSettingsKit/Models/IASKSpecifier.h new file mode 100644 index 000000000..1e47d1ec8 --- /dev/null +++ b/InAppSettingsKit/Models/IASKSpecifier.h @@ -0,0 +1,59 @@ +// +// IASKSpecifier.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import +#import + +@class IASKSettingsReader; + +@interface IASKSpecifier : NSObject { + NSDictionary *_specifierDict; + NSDictionary *_multipleValuesDict; + IASKSettingsReader *_settingsReader; +} +@property (nonatomic, retain) NSDictionary *specifierDict; +@property (nonatomic, assign) IASKSettingsReader *settingsReader; + +- (id)initWithSpecifier:(NSDictionary*)specifier; +- (NSString*)localizedObjectForKey:(NSString*)key; +- (NSString*)title; +- (NSString*)key; +- (NSString*)type; +- (NSString*)titleForCurrentValue:(id)currentValue; +- (NSInteger)multipleValuesCount; +- (NSArray*)multipleValues; +- (NSArray*)multipleTitles; +- (NSString*)file; +- (id)defaultValue; +- (id)defaultStringValue; +- (BOOL)defaultBoolValue; +- (id)trueValue; +- (id)falseValue; +- (float)minimumValue; +- (float)maximumValue; +- (NSString*)minimumValueImage; +- (NSString*)maximumValueImage; +- (BOOL)isSecure; +- (UIKeyboardType)keyboardType; +- (UITextAutocapitalizationType)autocapitalizationType; +- (UITextAutocorrectionType)autoCorrectionType; +- (NSString*)footerText; +- (Class)viewControllerClass; +- (SEL)viewControllerSelector; +-(Class)buttonClass; +-(SEL)buttonAction; + +@end diff --git a/InAppSettingsKit/Models/IASKSpecifier.m b/InAppSettingsKit/Models/IASKSpecifier.m new file mode 100644 index 000000000..ebb38ac01 --- /dev/null +++ b/InAppSettingsKit/Models/IASKSpecifier.m @@ -0,0 +1,240 @@ +// +// IASKSpecifier.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKSpecifier.h" +#import "IASKSettingsReader.h" + +@interface IASKSpecifier () +@property (nonatomic, retain) NSDictionary *multipleValuesDict; +- (void)_reinterpretValues:(NSDictionary*)specifierDict; +@end + +@implementation IASKSpecifier + +@synthesize specifierDict=_specifierDict; +@synthesize multipleValuesDict=_multipleValuesDict; +@synthesize settingsReader = _settingsReader; + +- (id)initWithSpecifier:(NSDictionary*)specifier { + if ((self = [super init])) { + [self setSpecifierDict:specifier]; + + if ([[self type] isEqualToString:kIASKPSMultiValueSpecifier] || + [[self type] isEqualToString:kIASKPSTitleValueSpecifier]) { + [self _reinterpretValues:[self specifierDict]]; + } + } + return self; +} + +- (void)dealloc { + [_specifierDict release], _specifierDict = nil; + [_multipleValuesDict release], _multipleValuesDict = nil; + + _settingsReader = nil; + + [super dealloc]; +} + +- (void)_reinterpretValues:(NSDictionary*)specifierDict { + NSArray *values = [_specifierDict objectForKey:kIASKValues]; + NSArray *titles = [_specifierDict objectForKey:kIASKTitles]; + + NSMutableDictionary *multipleValuesDict = [[[NSMutableDictionary alloc] init] autorelease]; + + if (values) { + [multipleValuesDict setObject:values forKey:kIASKValues]; + } + + if (titles) { + [multipleValuesDict setObject:titles forKey:kIASKTitles]; + } + + [self setMultipleValuesDict:multipleValuesDict]; +} +- (NSString*)localizedObjectForKey:(NSString*)key { + return [self.settingsReader titleForStringId:[_specifierDict objectForKey:key]]; +} + +- (NSString*)title { + return [self localizedObjectForKey:kIASKTitle]; +} + +- (NSString*)footerText { + return [self localizedObjectForKey:kIASKFooterText]; +} + +-(Class) viewControllerClass { + return NSClassFromString([_specifierDict objectForKey:kIASKViewControllerClass]); +} + +-(SEL) viewControllerSelector { + return NSSelectorFromString([_specifierDict objectForKey:kIASKViewControllerSelector]); +} + +-(Class)buttonClass { + return NSClassFromString([_specifierDict objectForKey:kIASKButtonClass]); +} + +-(SEL)buttonAction { + return NSSelectorFromString([_specifierDict objectForKey:kIASKButtonAction]); +} + +- (NSString*)key { + return [_specifierDict objectForKey:kIASKKey]; +} + +- (NSString*)type { + return [_specifierDict objectForKey:kIASKType]; +} + +- (NSString*)titleForCurrentValue:(id)currentValue { + NSArray *values = [self multipleValues]; + NSArray *titles = [self multipleTitles]; + if (values.count != titles.count) { + return nil; + } + NSInteger keyIndex = [values indexOfObject:currentValue]; + if (keyIndex == NSNotFound) { + return nil; + } + @try { + return [self.settingsReader titleForStringId:[titles objectAtIndex:keyIndex]]; + } + @catch (NSException * e) {} + return nil; +} + +- (NSInteger)multipleValuesCount { + return [[_multipleValuesDict objectForKey:kIASKValues] count]; +} + +- (NSArray*)multipleValues { + return [_multipleValuesDict objectForKey:kIASKValues]; +} + +- (NSArray*)multipleTitles { + return [_multipleValuesDict objectForKey:kIASKTitles]; +} + +- (NSString*)file { + return [_specifierDict objectForKey:kIASKFile]; +} + +- (id)defaultValue { + return [_specifierDict objectForKey:kIASKDefaultValue]; +} + +- (id)defaultStringValue { + return [[_specifierDict objectForKey:kIASKDefaultValue] description]; +} + +- (BOOL)defaultBoolValue { + id defaultValue = [self defaultValue]; + if ([defaultValue isEqual:[self trueValue]]) { + return YES; + } + if ([defaultValue isEqual:[self falseValue]]) { + return NO; + } + return [defaultValue boolValue]; +} + +- (id)trueValue { + return [_specifierDict objectForKey:kIASKTrueValue]; +} + +- (id)falseValue { + return [_specifierDict objectForKey:kIASKFalseValue]; +} + +- (float)minimumValue { + return [[_specifierDict objectForKey:kIASKMinimumValue] floatValue]; +} + +- (float)maximumValue { + return [[_specifierDict objectForKey:kIASKMaximumValue] floatValue]; +} + +- (NSString*)minimumValueImage { + return [_specifierDict objectForKey:kIASKMinimumValueImage]; +} + +- (NSString*)maximumValueImage { + return [_specifierDict objectForKey:kIASKMaximumValueImage]; +} + +- (BOOL)isSecure { + return [[_specifierDict objectForKey:kIASKIsSecure] boolValue]; +} + +- (UIKeyboardType)keyboardType { + if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:kIASKKeyboardAlphabet]) { + return UIKeyboardTypeDefault; + } + else if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:kIASKKeyboardNumbersAndPunctuation]) { + return UIKeyboardTypeNumbersAndPunctuation; + } + else if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:kIASKKeyboardNumberPad]) { + return UIKeyboardTypeNumberPad; + } + else if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:kIASKKeyboardDecimalPad]) { + if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iPhoneOS_4_1) { + return UIKeyboardTypeDecimalPad; + } + else { + return UIKeyboardTypeNumbersAndPunctuation; + } + } + else if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:KIASKKeyboardURL]) { + return UIKeyboardTypeURL; + } + else if ([[_specifierDict objectForKey:KIASKKeyboardType] isEqualToString:kIASKKeyboardEmailAddress]) { + return UIKeyboardTypeEmailAddress; + } + return UIKeyboardTypeDefault; +} + +- (UITextAutocapitalizationType)autocapitalizationType { + if ([[_specifierDict objectForKey:kIASKAutocapitalizationType] isEqualToString:kIASKAutoCapNone]) { + return UITextAutocapitalizationTypeNone; + } + else if ([[_specifierDict objectForKey:kIASKAutocapitalizationType] isEqualToString:kIASKAutoCapSentences]) { + return UITextAutocapitalizationTypeSentences; + } + else if ([[_specifierDict objectForKey:kIASKAutocapitalizationType] isEqualToString:kIASKAutoCapWords]) { + return UITextAutocapitalizationTypeWords; + } + else if ([[_specifierDict objectForKey:kIASKAutocapitalizationType] isEqualToString:kIASKAutoCapAllCharacters]) { + return UITextAutocapitalizationTypeAllCharacters; + } + return UITextAutocapitalizationTypeNone; +} + +- (UITextAutocorrectionType)autoCorrectionType { + if ([[_specifierDict objectForKey:kIASKAutoCorrectionType] isEqualToString:kIASKAutoCorrDefault]) { + return UITextAutocorrectionTypeDefault; + } + else if ([[_specifierDict objectForKey:kIASKAutoCorrectionType] isEqualToString:kIASKAutoCorrNo]) { + return UITextAutocorrectionTypeNo; + } + else if ([[_specifierDict objectForKey:kIASKAutoCorrectionType] isEqualToString:kIASKAutoCorrYes]) { + return UITextAutocorrectionTypeYes; + } + return UITextAutocorrectionTypeDefault; +} + +@end diff --git a/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h b/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h new file mode 100644 index 000000000..7cc943b0a --- /dev/null +++ b/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h @@ -0,0 +1,31 @@ +// +// IASKPSSliderSpecifierViewCell.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import + +@class IASKSlider; + +@interface IASKPSSliderSpecifierViewCell : UITableViewCell { + IASKSlider *_slider; + UIImageView *_minImage; + UIImageView *_maxImage; +} + +@property (nonatomic, assign) IBOutlet IASKSlider *slider; +@property (nonatomic, assign) IBOutlet UIImageView *minImage; +@property (nonatomic, assign) IBOutlet UIImageView *maxImage; + +@end diff --git a/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m b/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m new file mode 100644 index 000000000..cbdca0279 --- /dev/null +++ b/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m @@ -0,0 +1,72 @@ +// +// IASKPSSliderSpecifierViewCell.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2009-2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKPSSliderSpecifierViewCell.h" +#import "IASKSlider.h" +#import "IASKSettingsReader.h" + +@implementation IASKPSSliderSpecifierViewCell + +@synthesize slider=_slider, + minImage=_minImage, + maxImage=_maxImage; + +- (void)layoutSubviews { + [super layoutSubviews]; + CGRect sliderBounds = _slider.bounds; + CGPoint sliderCenter = _slider.center; + const double superViewWidth = _slider.superview.frame.size.width; + + sliderCenter.x = superViewWidth / 2; + sliderBounds.size.width = superViewWidth - kIASKSliderNoImagesPadding * 2; + _minImage.hidden = YES; + _maxImage.hidden = YES; + + // Check if there are min and max images. If so, change the layout accordingly. + if (_minImage.image && _maxImage.image) { + // Both images + _minImage.hidden = NO; + _maxImage.hidden = NO; + sliderBounds.size.width = superViewWidth - kIASKSliderImagesPadding * 2; + } + else if (_minImage.image) { + // Min image + _minImage.hidden = NO; + sliderCenter.x += (kIASKSliderImagesPadding - kIASKSliderNoImagesPadding) / 2; + sliderBounds.size.width = superViewWidth - kIASKSliderNoImagesPadding - kIASKSliderImagesPadding; + } + else if (_maxImage.image) { + // Max image + _maxImage.hidden = NO; + sliderCenter.x -= (kIASKSliderImagesPadding - kIASKSliderNoImagesPadding) / 2; + sliderBounds.size.width = superViewWidth - kIASKSliderNoImagesPadding - kIASKSliderImagesPadding; + } + + _slider.bounds = sliderBounds; + _slider.center = sliderCenter; +} + +- (void)dealloc { + _minImage.image = nil; + _maxImage.image = nil; + [super dealloc]; +} + +- (void)prepareForReuse { + _minImage.image = nil; + _maxImage.image = nil; +} +@end diff --git a/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h b/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h new file mode 100644 index 000000000..b4d70c8ad --- /dev/null +++ b/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h @@ -0,0 +1,29 @@ +// +// IASKPSTextFieldSpecifierViewCell.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import + +@class IASKTextField; + +@interface IASKPSTextFieldSpecifierViewCell : UITableViewCell { + UILabel *_label; + IASKTextField *_textField; +} + +@property (nonatomic, assign) IBOutlet UILabel *label; +@property (nonatomic, assign) IBOutlet IASKTextField *textField; + +@end diff --git a/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m b/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m new file mode 100644 index 000000000..cf7486eea --- /dev/null +++ b/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m @@ -0,0 +1,52 @@ +// +// IASKPSTextFieldSpecifierViewCell.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2009-2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKPSTextFieldSpecifierViewCell.h" +#import "IASKTextField.h" +#import "IASKSettingsReader.h" + +@implementation IASKPSTextFieldSpecifierViewCell + +@synthesize label=_label, + textField=_textField; + +- (void)layoutSubviews { + [super layoutSubviews]; + CGSize labelSize = [_label sizeThatFits:CGSizeZero]; + labelSize.width = MIN(labelSize.width, _label.bounds.size.width); + + CGRect textFieldFrame = _textField.frame; + textFieldFrame.origin.x = _label.frame.origin.x + MAX(kIASKMinLabelWidth, labelSize.width) + kIASKSpacing; + if (!_label.text.length) + textFieldFrame.origin.x = _label.frame.origin.x; + textFieldFrame.size.width = _textField.superview.frame.size.width - textFieldFrame.origin.x - _label.frame.origin.x; + _textField.frame = textFieldFrame; +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + + +- (void)dealloc { + [super dealloc]; +} + + +@end diff --git a/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h b/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h new file mode 100644 index 000000000..b3185b410 --- /dev/null +++ b/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h @@ -0,0 +1,22 @@ +// +// IASKPSTitleValueSpecifierViewCell.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import + + +@interface IASKPSTitleValueSpecifierViewCell : UITableViewCell + +@end diff --git a/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m b/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m new file mode 100644 index 000000000..c1d5aaa55 --- /dev/null +++ b/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m @@ -0,0 +1,57 @@ +// +// IASKPSTitleValueSpecifierViewCell.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2010: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKPSTitleValueSpecifierViewCell.h" +#import "IASKSettingsReader.h" + + +@implementation IASKPSTitleValueSpecifierViewCell + +- (void)layoutSubviews { + // left align the value if the title is empty + if (!self.textLabel.text.length) { + self.textLabel.text = self.detailTextLabel.text; + self.detailTextLabel.text = nil; + if ([self.reuseIdentifier isEqualToString:kIASKPSMultiValueSpecifier]) { + self.textLabel.font = [UIFont systemFontOfSize:[UIFont labelFontSize]]; + self.textLabel.textColor = self.detailTextLabel.textColor; + } + } + [super layoutSubviews]; + + CGSize viewSize = [self.textLabel superview].frame.size; + + //if there's an image, make room for it + CGFloat imageOffset = self.imageView.image ? self.imageView.bounds.size.width + self.imageView.frame.origin.x : 0; + + // set the left title label frame + CGFloat labelWidth = [self.textLabel sizeThatFits:CGSizeZero].width; + CGFloat minValueWidth = (self.detailTextLabel.text.length) ? kIASKMinValueWidth + kIASKSpacing : 0; + labelWidth = MIN(labelWidth, viewSize.width - minValueWidth - kIASKPaddingLeft -kIASKPaddingRight - imageOffset); + CGRect labelFrame = CGRectMake(kIASKPaddingLeft + imageOffset, 0, labelWidth, viewSize.height -2); + self.textLabel.frame = labelFrame; + + // set the right value label frame + if (self.detailTextLabel.text.length) { + CGRect valueFrame = CGRectMake(kIASKPaddingLeft + labelWidth + kIASKSpacing + imageOffset, + 0, + viewSize.width - (kIASKPaddingLeft + labelWidth + kIASKSpacing + imageOffset) - kIASKPaddingRight, + viewSize.height -2); + self.detailTextLabel.frame = valueFrame; + } +} + +@end diff --git a/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.h b/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.h new file mode 100644 index 000000000..a6d2864bc --- /dev/null +++ b/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.h @@ -0,0 +1,29 @@ +// +// IASKPSToggleSwitchSpecifierViewCell.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import + +@class IASKSwitch; + +@interface IASKPSToggleSwitchSpecifierViewCell : UITableViewCell { + UILabel *_label; + IASKSwitch *_toggle; +} + +@property (nonatomic, assign) IBOutlet UILabel *label; +@property (nonatomic, assign) IBOutlet IASKSwitch *toggle; + +@end diff --git a/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.m b/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.m new file mode 100644 index 000000000..13c66e285 --- /dev/null +++ b/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.m @@ -0,0 +1,62 @@ +// +// IASKPSToggleSwitchSpecifierViewCell.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKPSToggleSwitchSpecifierViewCell.h" +#import "IASKSwitch.h" +#import "IASKSettingsReader.h" + +@implementation IASKPSToggleSwitchSpecifierViewCell + +@synthesize label=_label, + toggle=_toggle; + +- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) { + // Initialization code + } + return self; +} + + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + + +- (void)dealloc { + [super dealloc]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + if(self.imageView.image) { + //resize the label to make room for the image + self.label.frame = CGRectMake(CGRectGetWidth(self.imageView.bounds) + self.imageView.frame.origin.x + kIASKSpacing, + self.label.frame.origin.y, + self.toggle.frame.origin.x - CGRectGetWidth(self.imageView.bounds) - 2.f * kIASKSpacing, + self.label.frame.size.height); + } else { + self.label.frame = CGRectMake(kIASKPaddingLeft, + self.label.frame.origin.y, + self.toggle.frame.origin.x - kIASKSpacing - kIASKPaddingLeft, + self.label.frame.size.height); + } +} + +@end diff --git a/InAppSettingsKit/Views/IASKSlider.h b/InAppSettingsKit/Views/IASKSlider.h new file mode 100644 index 000000000..34c5ecbbe --- /dev/null +++ b/InAppSettingsKit/Views/IASKSlider.h @@ -0,0 +1,26 @@ +// +// IASKSlider.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import + + +@interface IASKSlider : UISlider { + NSString *_key; +} + +@property (nonatomic, retain) NSString *key; + +@end diff --git a/InAppSettingsKit/Views/IASKSlider.m b/InAppSettingsKit/Views/IASKSlider.m new file mode 100644 index 000000000..d591ff298 --- /dev/null +++ b/InAppSettingsKit/Views/IASKSlider.m @@ -0,0 +1,30 @@ +// +// IASKSlider.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKSlider.h" + + +@implementation IASKSlider + +@synthesize key=_key; + +- (void)dealloc { + [_key release], _key = nil; + + [super dealloc]; +} + +@end diff --git a/InAppSettingsKit/Views/IASKSwitch.h b/InAppSettingsKit/Views/IASKSwitch.h new file mode 100644 index 000000000..b1439bd1c --- /dev/null +++ b/InAppSettingsKit/Views/IASKSwitch.h @@ -0,0 +1,26 @@ +// +// IASKSwitch.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import + + +@interface IASKSwitch : UISwitch { + NSString *_key; +} + +@property (nonatomic, retain) NSString *key; + +@end diff --git a/InAppSettingsKit/Views/IASKSwitch.m b/InAppSettingsKit/Views/IASKSwitch.m new file mode 100644 index 000000000..f32aba4d3 --- /dev/null +++ b/InAppSettingsKit/Views/IASKSwitch.m @@ -0,0 +1,31 @@ +// +// IASKSwitch.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKSwitch.h" + + +@implementation IASKSwitch + +@synthesize key=_key; + +- (void)dealloc { + [_key release], _key = nil; + + [super dealloc]; +} + + +@end diff --git a/InAppSettingsKit/Views/IASKTextField.h b/InAppSettingsKit/Views/IASKTextField.h new file mode 100644 index 000000000..47c9be375 --- /dev/null +++ b/InAppSettingsKit/Views/IASKTextField.h @@ -0,0 +1,26 @@ +// +// IASKTextField.h +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import + + +@interface IASKTextField : UITextField { + NSString *_key; +} + +@property (nonatomic, retain) NSString *key; + +@end diff --git a/InAppSettingsKit/Views/IASKTextField.m b/InAppSettingsKit/Views/IASKTextField.m new file mode 100644 index 000000000..9056896f4 --- /dev/null +++ b/InAppSettingsKit/Views/IASKTextField.m @@ -0,0 +1,30 @@ +// +// IASKTextField.m +// http://www.inappsettingskit.com +// +// Copyright (c) 2009: +// Luc Vandal, Edovia Inc., http://www.edovia.com +// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com +// All rights reserved. +// +// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, +// as the original authors of this code. You can give credit in a blog post, a tweet or on +// a info page of your app. Also, the original authors appreciate letting them know if you use this code. +// +// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php +// + +#import "IASKTextField.h" + + +@implementation IASKTextField + +@synthesize key=_key; + +- (void)dealloc { + [_key release], _key = nil; + + [super dealloc]; +} + +@end diff --git a/InAppSettingsKit/Xibs/IASKAppSettingsView.xib b/InAppSettingsKit/Xibs/IASKAppSettingsView.xib new file mode 100644 index 000000000..74720fae3 --- /dev/null +++ b/InAppSettingsKit/Xibs/IASKAppSettingsView.xib @@ -0,0 +1,222 @@ + + + + 1280 + 11B26 + 1934 + 1138 + 566.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 931 + + + YES + IBProxyObject + IBUITableView + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + {320, 460} + + + + 10 + + 549453824 + {512, 1} + + YES + + YES + + + + TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI +AAgACAAIAAEAAQABAAE + + + + + + 3 + MCAwAA + + + groupTableViewBackgroundColor + + NO + YES + NO + IBCocoaTouchFramework + NO + 1 + 1 + 0 + YES + 44 + 10 + 10 + + + + + YES + + + view + + + + 10 + + + + dataSource + + + + 6 + + + + delegate + + + + 7 + + + + + YES + + 0 + + YES + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + YES + + YES + -1.CustomClassName + -1.IBPluginDependency + -2.CustomClassName + -2.IBPluginDependency + 4.IBPluginDependency + + + YES + IASKAppSettingsViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 10 + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + 931 + + diff --git a/InAppSettingsKit/Xibs/IASKAppSettingsWebView.xib b/InAppSettingsKit/Xibs/IASKAppSettingsWebView.xib new file mode 100644 index 000000000..b814f05fc --- /dev/null +++ b/InAppSettingsKit/Xibs/IASKAppSettingsWebView.xib @@ -0,0 +1,378 @@ + + + + 1024 + 10F569 + 804 + 1038.29 + 461.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 123 + + + YES + + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + YES + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + YES + + + 274 + {320, 460} + + + 3 + MQA + + IBCocoaTouchFramework + + + {320, 460} + + + + IBCocoaTouchFramework + + + + + YES + + + view + + + + 3 + + + + webView + + + + 5 + + + + delegate + + + + 6 + + + + + YES + + 0 + + + + + + 1 + + + YES + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 4.IBPluginDependency + + + YES + IASKAppSettingsWebViewController + UIResponder + {{354, 412}, {320, 480}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 6 + + + + YES + + IASKAppSettingsWebViewController + UIViewController + + webView + UIWebView + + + webView + + webView + UIWebView + + + + IBProjectSource + ../InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h + + + + + YES + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIAccessibility.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UINibLoading.h + + + + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UIResponder.h + + + + UIResponder + NSObject + + + + UISearchBar + UIView + + IBFrameworkSource + UIKit.framework/Headers/UISearchBar.h + + + + UISearchDisplayController + NSObject + + IBFrameworkSource + UIKit.framework/Headers/UISearchDisplayController.h + + + + UIView + + IBFrameworkSource + UIKit.framework/Headers/UITextField.h + + + + UIView + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIView.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UINavigationController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UIPopoverController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UISplitViewController.h + + + + UIViewController + + IBFrameworkSource + UIKit.framework/Headers/UITabBarController.h + + + + UIViewController + UIResponder + + IBFrameworkSource + UIKit.framework/Headers/UIViewController.h + + + + UIWebView + UIView + + IBFrameworkSource + UIKit.framework/Headers/UIWebView.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + ../InAppSettingsKitSampleApp.xcodeproj + 3 + 123 + + diff --git a/InAppSettingsKit/Xibs/IASKPSSliderSpecifierViewCell.xib b/InAppSettingsKit/Xibs/IASKPSSliderSpecifierViewCell.xib new file mode 100644 index 000000000..67750384e --- /dev/null +++ b/InAppSettingsKit/Xibs/IASKPSSliderSpecifierViewCell.xib @@ -0,0 +1,251 @@ + + + + 1296 + 11D50 + 2182 + 1138.32 + 568.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1179 + + + YES + IBUISlider + IBUITableViewCell + IBUIImageView + IBProxyObject + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 290 + + YES + + + 256 + + YES + + + 290 + {{52, 12}, {216, 23}} + + + NO + YES + YES + IBCocoaTouchFramework + 0 + 0 + 0.5 + NO + + + + 289 + {{289, 13}, {21, 21}} + + + NO + NO + 8 + NO + IBCocoaTouchFramework + + + + 292 + {{10, 13}, {21, 21}} + + + NO + NO + 7 + NO + IBCocoaTouchFramework + + + {320, 43} + + + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {320, 44} + + + + 1 + MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA + + YES + NO + IBCocoaTouchFramework + 0 + + PSSliderSpecifier + + + + + YES + + + slider + + + + 12 + + + + maxImage + + + + 13 + + + + minImage + + + + 14 + + + + + YES + + 0 + + YES + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + YES + + + + + + + + 3 + + + + + 6 + + + + + 9 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.CustomClassName + -2.IBPluginDependency + 2.CustomClassName + 2.IBPluginDependency + 3.CustomClassName + 3.IBPluginDependency + 6.IBPluginDependency + 9.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + IASKPSSliderSpecifierViewCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + IASKSlider + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 14 + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + 1179 + + diff --git a/InAppSettingsKit/Xibs/IASKPSTextFieldSpecifierViewCell.xib b/InAppSettingsKit/Xibs/IASKPSTextFieldSpecifierViewCell.xib new file mode 100644 index 000000000..43a553b9c --- /dev/null +++ b/InAppSettingsKit/Xibs/IASKPSTextFieldSpecifierViewCell.xib @@ -0,0 +1,254 @@ + + + + 1296 + 11D50 + 2182 + 1138.32 + 568.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1179 + + + YES + IBUITableViewCell + IBUILabel + IBUITextField + IBProxyObject + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 290 + + YES + + + 256 + + YES + + + 294 + {{9, 11}, {240, 21}} + + NO + YES + NO + IBCocoaTouchFramework + Label + + 1 + MCAwIDAAA + + + 1 + 10 + + Helvetica-Bold + Helvetica + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + + + + 291 + {{100, 11}, {201, 21}} + + NO + NO + IBCocoaTouchFramework + hello + + 1 + MC4yNzQ1MDk4MiAwLjM3NjQ3MDYgMC41MjE1Njg2NgA + + YES + 10 + + 9 + IBCocoaTouchFramework + + + Helvetica + Helvetica + 0 + 17 + + + Helvetica + 17 + 16 + + + + {320, 43} + + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {320, 44} + + + 1 + MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA + + YES + NO + IBCocoaTouchFramework + 0 + + PSTextFieldSpecifier + + + + + YES + + + label + + + + 8 + + + + textField + + + + 9 + + + + + YES + + 0 + + YES + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + YES + + + + + + + 3 + + + + + 4 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.CustomClassName + -2.IBPluginDependency + 2.CustomClassName + 2.IBPluginDependency + 3.IBPluginDependency + 4.CustomClassName + 4.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + IASKPSTextFieldSpecifierViewCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + IASKTextField + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 9 + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + 1179 + + diff --git a/InAppSettingsKit/Xibs/IASKPSToggleSwitchSpecifierViewCell.xib b/InAppSettingsKit/Xibs/IASKPSToggleSwitchSpecifierViewCell.xib new file mode 100644 index 000000000..2e5803f2e --- /dev/null +++ b/InAppSettingsKit/Xibs/IASKPSToggleSwitchSpecifierViewCell.xib @@ -0,0 +1,237 @@ + + + + 1296 + 11D50 + 2182 + 1138.32 + 568.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1179 + + + YES + IBUITableViewCell + IBUISwitch + IBUILabel + IBProxyObject + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 290 + + YES + + + 256 + + YES + + + 294 + {{9, 10}, {200, 21}} + + NO + YES + NO + IBCocoaTouchFramework + Label + + 1 + MCAwIDAAA + + + 1 + 10 + + Helvetica-Bold + Helvetica + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + + + + 289 + {{218, 8}, {94, 27}} + + NO + YES + YES + IBCocoaTouchFramework + 0 + 0 + YES + + + {320, 43} + + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {320, 44} + + + 1 + MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA + + YES + NO + IBCocoaTouchFramework + 0 + + PSToggleSwitchSpecifier + + + + + YES + + + toggle + + + + 8 + + + + label + + + + 9 + + + + + YES + + 0 + + YES + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + YES + + + + + Toggle Switch Specifier View Cell - PSToggleSwitchSpecifier + + + 3 + + + + + 4 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.CustomClassName + -2.IBPluginDependency + 2.CustomClassName + 2.IBPluginDependency + 3.IBPluginDependency + 4.CustomClassName + 4.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + IASKPSToggleSwitchSpecifierViewCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + IASKSwitch + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 9 + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + 1179 + + diff --git a/InAppSettingsKit/Xibs/IASKSpecifierValuesView.xib b/InAppSettingsKit/Xibs/IASKSpecifierValuesView.xib new file mode 100644 index 000000000..9c7ff86e6 --- /dev/null +++ b/InAppSettingsKit/Xibs/IASKSpecifierValuesView.xib @@ -0,0 +1,255 @@ + + + + 768 + 10J567 + 1294 + 1038.35 + 462.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 294 + + + YES + IBProxyObject + IBUIView + IBUITableView + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + YES + + YES + + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + YES + + + 274 + {320, 460} + + + + + 10 + + 549453824 + {84, 1} + + YES + + YES + + + + TU0AKgAAAVjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P8ADQEAAAMAAAABAFQAAAEB +AAMAAAABAAEAAAECAAMAAAAEAAAB+gEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES +AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABAAEAAAEXAAQAAAABAAABUAEcAAMAAAABAAEAAAFS +AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA + + + + + + 3 + MCAwAA + + + groupTableViewBackgroundColor + + NO + YES + NO + IBCocoaTouchFramework + NO + 1 + 1 + 0 + YES + 44 + 10 + 10 + + + {320, 460} + + + + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + + YES + + + view + + + + 3 + + + + dataSource + + + + 5 + + + + delegate + + + + 6 + + + + _tableView + + + + 7 + + + + + YES + + 0 + + + + + + 1 + + + YES + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + YES + + YES + -1.CustomClassName + -2.CustomClassName + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 4.IBPluginDependency + + + YES + IASKSpecifierValuesViewController + UIResponder + {{556, 432}, {320, 460}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 7 + + + + YES + + IASKSpecifierValuesViewController + UIViewController + + _tableView + UITableView + + + _tableView + + _tableView + UITableView + + + + IBProjectSource + ./Classes/IASKSpecifierValuesViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + 294 + + diff --git a/PhoneMainView.xib b/PhoneMainView.xib index 8cc1896dd..0052d5e1c 100644 --- a/PhoneMainView.xib +++ b/PhoneMainView.xib @@ -2,13 +2,13 @@ 784 - 11D50b - 2182 - 1138.32 - 568.00 + 11C74 + 1938 + 1138.23 + 567.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 933 YES @@ -19,6 +19,9 @@ IBUITabBarController IBUIWindow IBUITabBar + IBUINavigationController + IBUINavigationBar + IBUINavigationItem YES @@ -42,11 +45,10 @@ IBCocoaTouchFramework - + 1316 {320, 480} - 1 MSAxIDEAA @@ -65,15 +67,10 @@ IBCocoaTouchFramework NO - - History - - History - - NSImage - history-orange.png - + + IBCocoaTouchFramework + 0 @@ -81,12 +78,87 @@ 1 1 + YES IBCocoaTouchFramework NO + + + 256 + {0, 0} + _NS:451 + NO + YES + YES + IBCocoaTouchFramework + + + YES + + Informations + + Information + IBCocoaTouchFramework + + + MoreViewController + + 1 + 1 + + IBCocoaTouchFramework + NO + + YES - + + Call logs + + History + + NSImage + history-orange.png + + IBCocoaTouchFramework + + + + + 1 + 1 + + YES + IBCocoaTouchFramework + NO + + + 256 + {0, 0} + _NS:451 + NO + YES + YES + IBCocoaTouchFramework + + + YES + + Call logs + + Call logs + IBCocoaTouchFramework + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + Dialer @@ -106,26 +178,12 @@ IBCocoaTouchFramework NO - - + + IBCocoaTouchFramework 5 - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - - IBCocoaTouchFramework - 0 - - 1 @@ -134,12 +192,59 @@ IBCocoaTouchFramework NO + + + Settings + + NSImage + 20-gear2.png + + IBCocoaTouchFramework + + + + + 1 + 1 + + YES + IBCocoaTouchFramework + NO + + + 256 + {0, 0} + _NS:451 + NO + YES + YES + IBCocoaTouchFramework + + + YES + + + Root View Controller + IBCocoaTouchFramework + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + 266 {{0, 431}, {320, 49}} + 3 MCAwAA @@ -176,6 +281,38 @@ 14 + + + myPhoneViewController + + + + 51 + + + + moreNavigationController + + + + 58 + + + + settingsController + + + + 74 + + + + myTabBarController + + + + 59 + @@ -216,10 +353,11 @@ YES - - - + + + + @@ -228,21 +366,6 @@ - - 11 - - - YES - - - - Contacts - - - 12 - - - 38 @@ -259,34 +382,124 @@ - 41 - + 53 + YES - + + + - history - 42 - - + 54 + + - 43 - + 55 + YES - + - - more + - 44 - - + 56 + + + + + 57 + + + + + 66 + + + YES + + + + dummy-contact-replaced-in-code + + + 67 + + + + + 69 + + + YES + + + + + + + + 70 + + + + + 71 + + + YES + + + + + + 72 + + + + + 73 + + + + + 75 + + + YES + + + + + + + + 76 + + + + + 77 + + + YES + + + + + + 78 + + + + + 79 + + @@ -298,8 +511,6 @@ -1.IBPluginDependency -2.CustomClassName -2.IBPluginDependency - 11.IBPluginDependency - 12.IBPluginDependency 2.IBAttributePlaceholdersKey 2.IBPluginDependency 38.CustomClassName @@ -307,23 +518,35 @@ 39.IBPluginDependency 4.CustomClassName 4.IBPluginDependency - 41.CustomClassName - 41.IBPluginDependency - 42.IBPluginDependency - 43.CustomClassName - 43.IBPluginDependency - 44.IBPluginDependency + 53.IBPluginDependency + 54.IBPluginDependency + 55.CustomClassName + 55.IBPluginDependency + 56.IBPluginDependency + 57.IBPluginDependency + 66.IBPluginDependency + 67.IBPluginDependency + 69.IBPluginDependency + 70.IBPluginDependency + 71.CustomClassName + 71.IBPluginDependency + 72.IBPluginDependency + 73.IBPluginDependency + 75.IBPluginDependency + 76.IBPluginDependency + 77.CustomClassName + 77.IBPluginDependency + 78.IBPluginDependency + 79.IBPluginDependency 8.IBPluginDependency 9.IBPluginDependency - + YES UIApplication com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin YES @@ -335,7 +558,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin linphoneAppDelegate com.apple.InterfaceBuilder.IBCocoaTouchPlugin - CallHistoryTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin MoreViewController @@ -343,6 +565,21 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + IASKAppSettingsViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + CallHistoryTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -357,7 +594,7 @@ - 48 + 79 0 @@ -366,10 +603,6 @@ com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 @@ -380,15 +613,17 @@ YES YES + 20-gear2.png dialer-orange.png history-orange.png - + YES + {26, 28} {25, 24} {25, 23} - 1181 + 933 diff --git a/Settings.bundle/Root.plist b/Settings.bundle/Root.plist index 4b6332f8e..bd5c9216c 100644 --- a/Settings.bundle/Root.plist +++ b/Settings.bundle/Root.plist @@ -94,6 +94,16 @@ Type PSToggleSwitchSpecifier + + Type + PSToggleSwitchSpecifier + Title + Enable video + Key + enable_video_preference + DefaultValue + + Title diff --git a/Settings.bundle/video.plist b/Settings.bundle/video.plist index 440f5ad90..56af43866 100644 --- a/Settings.bundle/video.plist +++ b/Settings.bundle/video.plist @@ -4,16 +4,6 @@ PreferenceSpecifiers - - Type - PSToggleSwitchSpecifier - Title - Enable video - Key - enable_video_preference - DefaultValue - - Type PSToggleSwitchSpecifier diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index b59ceb3c1..806364d34 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -220,6 +220,52 @@ 340751E8150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIToggleVideoButton.m */; }; 340A75B014C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; }; 340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; }; + 34151FE01563A8D800205A0E /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FB91563A8D800205A0E /* IASKAppSettingsViewController.m */; }; + 34151FE11563A8D800205A0E /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FBB1563A8D800205A0E /* IASKAppSettingsWebViewController.m */; }; + 34151FE21563A8D800205A0E /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FBD1563A8D800205A0E /* IASKSpecifierValuesViewController.m */; }; + 34151FE31563A8D800205A0E /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC11563A8D800205A0E /* IASKSettingsReader.m */; }; + 34151FE41563A8D800205A0E /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC31563A8D800205A0E /* IASKSettingsStore.m */; }; + 34151FE51563A8D800205A0E /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC51563A8D800205A0E /* IASKSettingsStoreFile.m */; }; + 34151FE61563A8D800205A0E /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC71563A8D800205A0E /* IASKSettingsStoreUserDefaults.m */; }; + 34151FE71563A8D800205A0E /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC91563A8D800205A0E /* IASKSpecifier.m */; }; + 34151FE81563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FCC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m */; }; + 34151FE91563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FCE1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m */; }; + 34151FEA1563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD01563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m */; }; + 34151FEB1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD21563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m */; }; + 34151FEC1563A8D800205A0E /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD41563A8D800205A0E /* IASKSlider.m */; }; + 34151FED1563A8D800205A0E /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD61563A8D800205A0E /* IASKSwitch.m */; }; + 34151FEE1563A8D800205A0E /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD81563A8D800205A0E /* IASKTextField.m */; }; + 34151FEF1563A8D800205A0E /* IASKAppSettingsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDA1563A8D800205A0E /* IASKAppSettingsView.xib */; }; + 34151FF01563A8D800205A0E /* IASKAppSettingsWebView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDB1563A8D800205A0E /* IASKAppSettingsWebView.xib */; }; + 34151FF11563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib */; }; + 34151FF21563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib */; }; + 34151FF31563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDE1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib */; }; + 34151FF41563A8D800205A0E /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDF1563A8D800205A0E /* IASKSpecifierValuesView.xib */; }; + 34151FF61563A92100205A0E /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FB91563A8D800205A0E /* IASKAppSettingsViewController.m */; }; + 34151FF71563A92100205A0E /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FBB1563A8D800205A0E /* IASKAppSettingsWebViewController.m */; }; + 34151FF81563A92100205A0E /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FBD1563A8D800205A0E /* IASKSpecifierValuesViewController.m */; }; + 34151FF91563A92900205A0E /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC11563A8D800205A0E /* IASKSettingsReader.m */; }; + 34151FFA1563A92900205A0E /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC31563A8D800205A0E /* IASKSettingsStore.m */; }; + 34151FFB1563A92900205A0E /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC51563A8D800205A0E /* IASKSettingsStoreFile.m */; }; + 34151FFC1563A92900205A0E /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC71563A8D800205A0E /* IASKSettingsStoreUserDefaults.m */; }; + 34151FFD1563A92900205A0E /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FC91563A8D800205A0E /* IASKSpecifier.m */; }; + 34151FFE1563A93400205A0E /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FCC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m */; }; + 34151FFF1563A93400205A0E /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FCE1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m */; }; + 341520001563A93400205A0E /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD01563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m */; }; + 341520011563A93400205A0E /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD21563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m */; }; + 341520021563A93400205A0E /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD41563A8D800205A0E /* IASKSlider.m */; }; + 341520031563A93400205A0E /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD61563A8D800205A0E /* IASKSwitch.m */; }; + 341520041563A93400205A0E /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = 34151FD81563A8D800205A0E /* IASKTextField.m */; }; + 341520051563A93B00205A0E /* IASKAppSettingsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDA1563A8D800205A0E /* IASKAppSettingsView.xib */; }; + 341520061563A93B00205A0E /* IASKAppSettingsWebView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDB1563A8D800205A0E /* IASKAppSettingsWebView.xib */; }; + 341520071563A93B00205A0E /* IASKPSSliderSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib */; }; + 341520081563A93B00205A0E /* IASKPSTextFieldSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib */; }; + 341520091563A93B00205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDE1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib */; }; + 3415200A1563A93B00205A0E /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34151FDF1563A8D800205A0E /* IASKSpecifierValuesView.xib */; }; + 3415205A1563AA8F00205A0E /* 20-gear2.png in Resources */ = {isa = PBXBuildFile; fileRef = 341520591563AA8F00205A0E /* 20-gear2.png */; }; + 3415205C1563ABEB00205A0E /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3415205B1563ABEB00205A0E /* MessageUI.framework */; }; + 3415207B156BBEC000205A0E /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 3415207A156BBEC000205A0E /* LinphoneCoreSettingsStore.m */; }; + 3415207C156BBEC000205A0E /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = 3415207A156BBEC000205A0E /* LinphoneCoreSettingsStore.m */; }; 3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; 3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; 3418844814C6CAD300EA48C7 /* StatusSubViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */; }; @@ -622,6 +668,47 @@ 340751E5150F38FC00B89C47 /* UIToggleVideoButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIToggleVideoButton.h; sourceTree = ""; }; 340751E6150F38FD00B89C47 /* UIToggleVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIToggleVideoButton.m; sourceTree = ""; }; 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "ConferenceCallDetailView-ipad.xib"; sourceTree = ""; }; + 34151FB81563A8D800205A0E /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = ""; }; + 34151FB91563A8D800205A0E /* IASKAppSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsViewController.m; sourceTree = ""; }; + 34151FBA1563A8D800205A0E /* IASKAppSettingsWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsWebViewController.h; sourceTree = ""; }; + 34151FBB1563A8D800205A0E /* IASKAppSettingsWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsWebViewController.m; sourceTree = ""; }; + 34151FBC1563A8D800205A0E /* IASKSpecifierValuesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifierValuesViewController.h; sourceTree = ""; }; + 34151FBD1563A8D800205A0E /* IASKSpecifierValuesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifierValuesViewController.m; sourceTree = ""; }; + 34151FBE1563A8D800205A0E /* IASKViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKViewController.h; sourceTree = ""; }; + 34151FC01563A8D800205A0E /* IASKSettingsReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsReader.h; sourceTree = ""; }; + 34151FC11563A8D800205A0E /* IASKSettingsReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsReader.m; sourceTree = ""; }; + 34151FC21563A8D800205A0E /* IASKSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStore.h; sourceTree = ""; }; + 34151FC31563A8D800205A0E /* IASKSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStore.m; sourceTree = ""; }; + 34151FC41563A8D800205A0E /* IASKSettingsStoreFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreFile.h; sourceTree = ""; }; + 34151FC51563A8D800205A0E /* IASKSettingsStoreFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreFile.m; sourceTree = ""; }; + 34151FC61563A8D800205A0E /* IASKSettingsStoreUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreUserDefaults.h; sourceTree = ""; }; + 34151FC71563A8D800205A0E /* IASKSettingsStoreUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreUserDefaults.m; sourceTree = ""; }; + 34151FC81563A8D800205A0E /* IASKSpecifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifier.h; sourceTree = ""; }; + 34151FC91563A8D800205A0E /* IASKSpecifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifier.m; sourceTree = ""; }; + 34151FCB1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSSliderSpecifierViewCell.h; sourceTree = ""; }; + 34151FCC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSSliderSpecifierViewCell.m; sourceTree = ""; }; + 34151FCD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTextFieldSpecifierViewCell.h; sourceTree = ""; }; + 34151FCE1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTextFieldSpecifierViewCell.m; sourceTree = ""; }; + 34151FCF1563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTitleValueSpecifierViewCell.h; sourceTree = ""; }; + 34151FD01563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTitleValueSpecifierViewCell.m; sourceTree = ""; }; + 34151FD11563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSToggleSwitchSpecifierViewCell.h; sourceTree = ""; }; + 34151FD21563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSToggleSwitchSpecifierViewCell.m; sourceTree = ""; }; + 34151FD31563A8D800205A0E /* IASKSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSlider.h; sourceTree = ""; }; + 34151FD41563A8D800205A0E /* IASKSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSlider.m; sourceTree = ""; }; + 34151FD51563A8D800205A0E /* IASKSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSwitch.h; sourceTree = ""; }; + 34151FD61563A8D800205A0E /* IASKSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSwitch.m; sourceTree = ""; }; + 34151FD71563A8D800205A0E /* IASKTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKTextField.h; sourceTree = ""; }; + 34151FD81563A8D800205A0E /* IASKTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKTextField.m; sourceTree = ""; }; + 34151FDA1563A8D800205A0E /* IASKAppSettingsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKAppSettingsView.xib; sourceTree = ""; }; + 34151FDB1563A8D800205A0E /* IASKAppSettingsWebView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKAppSettingsWebView.xib; sourceTree = ""; }; + 34151FDC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSSliderSpecifierViewCell.xib; sourceTree = ""; }; + 34151FDD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSTextFieldSpecifierViewCell.xib; sourceTree = ""; }; + 34151FDE1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSToggleSwitchSpecifierViewCell.xib; sourceTree = ""; }; + 34151FDF1563A8D800205A0E /* IASKSpecifierValuesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKSpecifierValuesView.xib; sourceTree = ""; }; + 341520591563AA8F00205A0E /* 20-gear2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "20-gear2.png"; path = "Resources/20-gear2.png"; sourceTree = ""; }; + 3415205B1563ABEB00205A0E /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; + 34152079156BBEC000205A0E /* LinphoneCoreSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCoreSettingsStore.h; sourceTree = ""; }; + 3415207A156BBEC000205A0E /* LinphoneCoreSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCoreSettingsStore.m; sourceTree = ""; }; 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = nowebcamCIF.jpg; path = submodules/linphone/mediastreamer2/src/nowebcamCIF.jpg; sourceTree = ""; }; 3418844514C6CAD300EA48C7 /* StatusSubViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StatusSubViewController.h; sourceTree = ""; }; 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatusSubViewController.m; sourceTree = ""; }; @@ -667,6 +754,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 3415205C1563ABEB00205A0E /* MessageUI.framework in Frameworks */, 340751971506459A00B89C47 /* CoreTelephony.framework in Frameworks */, 226CDADF14E2D0B800513B67 /* libbcg729.a in Frameworks */, 226CDAE014E2D0B800513B67 /* libmsbcg729.a in Frameworks */, @@ -809,6 +897,8 @@ 3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */, 34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */, 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */, + 34152079156BBEC000205A0E /* LinphoneCoreSettingsStore.h */, + 3415207A156BBEC000205A0E /* LinphoneCoreSettingsStore.m */, ); path = Classes; sourceTree = ""; @@ -1135,6 +1225,8 @@ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( + 3415205B1563ABEB00205A0E /* MessageUI.framework */, + 34151FB61563A8D800205A0E /* InAppSettingsKit */, 340751961506459A00B89C47 /* CoreTelephony.framework */, 226CDADD14E2D0B800513B67 /* libbcg729.a */, 226CDADE14E2D0B800513B67 /* libmsbcg729.a */, @@ -1209,6 +1301,7 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + 341520591563AA8F00205A0E /* 20-gear2.png */, 3485649D152C423F003FE041 /* in_call_video.png */, 3485649E152C423F003FE041 /* out_call_video.png */, 34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */, @@ -1272,6 +1365,82 @@ name = Frameworks; sourceTree = ""; }; + 34151FB61563A8D800205A0E /* InAppSettingsKit */ = { + isa = PBXGroup; + children = ( + 34151FB71563A8D800205A0E /* Controllers */, + 34151FBF1563A8D800205A0E /* Models */, + 34151FCA1563A8D800205A0E /* Views */, + 34151FD91563A8D800205A0E /* Xibs */, + ); + path = InAppSettingsKit; + sourceTree = ""; + }; + 34151FB71563A8D800205A0E /* Controllers */ = { + isa = PBXGroup; + children = ( + 34151FB81563A8D800205A0E /* IASKAppSettingsViewController.h */, + 34151FB91563A8D800205A0E /* IASKAppSettingsViewController.m */, + 34151FBA1563A8D800205A0E /* IASKAppSettingsWebViewController.h */, + 34151FBB1563A8D800205A0E /* IASKAppSettingsWebViewController.m */, + 34151FBC1563A8D800205A0E /* IASKSpecifierValuesViewController.h */, + 34151FBD1563A8D800205A0E /* IASKSpecifierValuesViewController.m */, + 34151FBE1563A8D800205A0E /* IASKViewController.h */, + ); + path = Controllers; + sourceTree = ""; + }; + 34151FBF1563A8D800205A0E /* Models */ = { + isa = PBXGroup; + children = ( + 34151FC01563A8D800205A0E /* IASKSettingsReader.h */, + 34151FC11563A8D800205A0E /* IASKSettingsReader.m */, + 34151FC21563A8D800205A0E /* IASKSettingsStore.h */, + 34151FC31563A8D800205A0E /* IASKSettingsStore.m */, + 34151FC41563A8D800205A0E /* IASKSettingsStoreFile.h */, + 34151FC51563A8D800205A0E /* IASKSettingsStoreFile.m */, + 34151FC61563A8D800205A0E /* IASKSettingsStoreUserDefaults.h */, + 34151FC71563A8D800205A0E /* IASKSettingsStoreUserDefaults.m */, + 34151FC81563A8D800205A0E /* IASKSpecifier.h */, + 34151FC91563A8D800205A0E /* IASKSpecifier.m */, + ); + path = Models; + sourceTree = ""; + }; + 34151FCA1563A8D800205A0E /* Views */ = { + isa = PBXGroup; + children = ( + 34151FCB1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.h */, + 34151FCC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m */, + 34151FCD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.h */, + 34151FCE1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m */, + 34151FCF1563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.h */, + 34151FD01563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m */, + 34151FD11563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.h */, + 34151FD21563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m */, + 34151FD31563A8D800205A0E /* IASKSlider.h */, + 34151FD41563A8D800205A0E /* IASKSlider.m */, + 34151FD51563A8D800205A0E /* IASKSwitch.h */, + 34151FD61563A8D800205A0E /* IASKSwitch.m */, + 34151FD71563A8D800205A0E /* IASKTextField.h */, + 34151FD81563A8D800205A0E /* IASKTextField.m */, + ); + path = Views; + sourceTree = ""; + }; + 34151FD91563A8D800205A0E /* Xibs */ = { + isa = PBXGroup; + children = ( + 34151FDA1563A8D800205A0E /* IASKAppSettingsView.xib */, + 34151FDB1563A8D800205A0E /* IASKAppSettingsWebView.xib */, + 34151FDC1563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib */, + 34151FDD1563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib */, + 34151FDE1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib */, + 34151FDF1563A8D800205A0E /* IASKSpecifierValuesView.xib */, + ); + path = Xibs; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -1413,6 +1582,13 @@ 34A6ECEB14CF13CB00460C04 /* icone-linphone-72.png in Resources */, 3485649F152C423F003FE041 /* in_call_video.png in Resources */, 348564A0152C423F003FE041 /* out_call_video.png in Resources */, + 34151FEF1563A8D800205A0E /* IASKAppSettingsView.xib in Resources */, + 34151FF01563A8D800205A0E /* IASKAppSettingsWebView.xib in Resources */, + 34151FF11563A8D800205A0E /* IASKPSSliderSpecifierViewCell.xib in Resources */, + 34151FF21563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.xib in Resources */, + 34151FF31563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */, + 34151FF41563A8D800205A0E /* IASKSpecifierValuesView.xib in Resources */, + 3415205A1563AA8F00205A0E /* 20-gear2.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1483,6 +1659,12 @@ 3418845D14C7077400EA48C7 /* status_gray.png in Resources */, 57282931154AF1460076F540 /* history-orange.png in Resources */, 57282933154AF14D0076F540 /* dialer-orange.png in Resources */, + 341520051563A93B00205A0E /* IASKAppSettingsView.xib in Resources */, + 341520061563A93B00205A0E /* IASKAppSettingsWebView.xib in Resources */, + 341520071563A93B00205A0E /* IASKPSSliderSpecifierViewCell.xib in Resources */, + 341520081563A93B00205A0E /* IASKPSTextFieldSpecifierViewCell.xib in Resources */, + 341520091563A93B00205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */, + 3415200A1563A93B00205A0E /* IASKSpecifierValuesView.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1522,6 +1704,22 @@ 3418844814C6CAD300EA48C7 /* StatusSubViewController.m in Sources */, 340751E7150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */, 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, + 34151FE01563A8D800205A0E /* IASKAppSettingsViewController.m in Sources */, + 34151FE11563A8D800205A0E /* IASKAppSettingsWebViewController.m in Sources */, + 34151FE21563A8D800205A0E /* IASKSpecifierValuesViewController.m in Sources */, + 34151FE31563A8D800205A0E /* IASKSettingsReader.m in Sources */, + 34151FE41563A8D800205A0E /* IASKSettingsStore.m in Sources */, + 34151FE51563A8D800205A0E /* IASKSettingsStoreFile.m in Sources */, + 34151FE61563A8D800205A0E /* IASKSettingsStoreUserDefaults.m in Sources */, + 34151FE71563A8D800205A0E /* IASKSpecifier.m in Sources */, + 34151FE81563A8D800205A0E /* IASKPSSliderSpecifierViewCell.m in Sources */, + 34151FE91563A8D800205A0E /* IASKPSTextFieldSpecifierViewCell.m in Sources */, + 34151FEA1563A8D800205A0E /* IASKPSTitleValueSpecifierViewCell.m in Sources */, + 34151FEB1563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */, + 34151FEC1563A8D800205A0E /* IASKSlider.m in Sources */, + 34151FED1563A8D800205A0E /* IASKSwitch.m in Sources */, + 34151FEE1563A8D800205A0E /* IASKTextField.m in Sources */, + 3415207B156BBEC000205A0E /* LinphoneCoreSettingsStore.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1558,6 +1756,22 @@ 3418844914C6CAD300EA48C7 /* StatusSubViewController.m in Sources */, 340751E8150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */, 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, + 34151FF61563A92100205A0E /* IASKAppSettingsViewController.m in Sources */, + 34151FF71563A92100205A0E /* IASKAppSettingsWebViewController.m in Sources */, + 34151FF81563A92100205A0E /* IASKSpecifierValuesViewController.m in Sources */, + 34151FF91563A92900205A0E /* IASKSettingsReader.m in Sources */, + 34151FFA1563A92900205A0E /* IASKSettingsStore.m in Sources */, + 34151FFB1563A92900205A0E /* IASKSettingsStoreFile.m in Sources */, + 34151FFC1563A92900205A0E /* IASKSettingsStoreUserDefaults.m in Sources */, + 34151FFD1563A92900205A0E /* IASKSpecifier.m in Sources */, + 34151FFE1563A93400205A0E /* IASKPSSliderSpecifierViewCell.m in Sources */, + 34151FFF1563A93400205A0E /* IASKPSTextFieldSpecifierViewCell.m in Sources */, + 341520001563A93400205A0E /* IASKPSTitleValueSpecifierViewCell.m in Sources */, + 341520011563A93400205A0E /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */, + 341520021563A93400205A0E /* IASKSlider.m in Sources */, + 341520031563A93400205A0E /* IASKSwitch.m in Sources */, + 341520041563A93400205A0E /* IASKTextField.m in Sources */, + 3415207C156BBEC000205A0E /* LinphoneCoreSettingsStore.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/submodules/linphone b/submodules/linphone index 04fa4d457..d0ced93c2 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 04fa4d457b3b584eae8c5964a48a97ec4040c94a +Subproject commit d0ced93c25f088c04a9f92b82aa41c5b1f271e23 From 4b37e1c1fe8bd7f3006039d58ac80e99e81112f0 Mon Sep 17 00:00:00 2001 From: Pierre-Eric Pelloux-Prayer Date: Fri, 1 Jun 2012 11:52:54 +0200 Subject: [PATCH 002/397] Added comments: linphone_core functions matching preferences --- Classes/LinphoneCoreSettingsStore.m | 23 +++++++++++++++++++---- Resources/20-gear2.png | Bin 0 -> 375 bytes 2 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 Resources/20-gear2.png diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index f9f9d8f62..2b40a05c1 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -8,19 +8,25 @@ #import "LinphoneCoreSettingsStore.h" - +// linphone_core_enable_logs_with_cb - linphone_core_disable_logs debugenable_preference + +// on change: edit/create linphone_core_get_default_proxy() transport_preference username_preference domain_preference password_preference -check_config_disable_preference outbound_proxy_preference proxy_preference prefix_preference substitute_+_by_00_preference -wifi_only_preference +// app internal setting +check_config_disable_preference +wifi_only_preference +backgroundmode_preference + +// linphone_core_enable_payload_type silk_24k_preference speex_16k_preference speex_8k_preference @@ -33,15 +39,24 @@ pcma_preference g722_preferenceg g729_preference +// linphone_core_enable_payload_type mp4v-es_preference h264_preference vp8_preference +// linphone_core_enable_video enable_video_preference + +// linphone_core_set_media_encryption enable_srtp_preference + +// linphone_core_set_stun_server +// linphone_core_set_firewall_policy stun_preference + +// linphone_core_set_video_policy start_video_preference -backgroundmode_preference + @implementation LinphoneCoreSettingsStore diff --git a/Resources/20-gear2.png b/Resources/20-gear2.png new file mode 100644 index 0000000000000000000000000000000000000000..b8180ded27c10b0e80bbcf5bb5e598da968b65d0 GIT binary patch literal 375 zcmV--0f_#IP)17w7B1CLN9 zg$+6a-2gU#4Z;RAk(|o1^0^|QS~`IP{w{XXGGs;g28Ou}&vMnX9xf=!7EDb>ZooxND58rOIdB7s1V znDAiPif&{!G|T>Bu_pF(A^J-G?P9@Vdm^RTqiA5ONo(;APzU&)q7EX|UE2(owRiP_ zt$qaguG`pVI(<&q&G-*(hVATY;)%!x1HlaoXro9lI=J8UmKo+K3sI;@0@SuANq42) z=;?rhOEc85>ZlW@Cyx7oeu(T5r!?4p+M)Va)D< Date: Thu, 7 Jun 2012 18:02:48 +0200 Subject: [PATCH 003/397] Add new button bar --- Classes/LinphoneAppDelegate.h | 4 +- Classes/LinphoneAppDelegate.m | 10 +- Classes/PhoneMainView.xib | 1147 ++++++++++++++++++++++++++++ PhoneMainView.xib | 394 ---------- Resources/contacts-actif.png | Bin 0 -> 5953 bytes Resources/contacts-over.png | Bin 0 -> 5968 bytes Resources/contacts-selectionne.png | Bin 0 -> 5890 bytes Resources/dialer-actif.png | Bin 0 -> 19389 bytes Resources/dialer-over.png | Bin 0 -> 16675 bytes Resources/history-actif.png | Bin 0 -> 5743 bytes Resources/history-over.png | Bin 0 -> 5727 bytes Resources/history-selectionne.png | Bin 0 -> 5715 bytes Resources/settings-actif.png | Bin 0 -> 6964 bytes Resources/settings-over.png | Bin 0 -> 6992 bytes Resources/settings-selectionne.png | Bin 0 -> 6869 bytes Resources/tchat-actif.png | Bin 0 -> 4738 bytes Resources/tchat-over.png | Bin 0 -> 4746 bytes Resources/tchat-selectionne.png | Bin 0 -> 4695 bytes linphone.xcodeproj/project.pbxproj | 206 +++-- 19 files changed, 1286 insertions(+), 475 deletions(-) create mode 100644 Classes/PhoneMainView.xib delete mode 100644 PhoneMainView.xib create mode 100644 Resources/contacts-actif.png create mode 100644 Resources/contacts-over.png create mode 100644 Resources/contacts-selectionne.png create mode 100644 Resources/dialer-actif.png create mode 100644 Resources/dialer-over.png create mode 100644 Resources/history-actif.png create mode 100644 Resources/history-over.png create mode 100644 Resources/history-selectionne.png create mode 100644 Resources/settings-actif.png create mode 100644 Resources/settings-over.png create mode 100644 Resources/settings-selectionne.png create mode 100644 Resources/tchat-actif.png create mode 100644 Resources/tchat-over.png create mode 100644 Resources/tchat-selectionne.png diff --git a/Classes/LinphoneAppDelegate.h b/Classes/LinphoneAppDelegate.h index f5e9508a1..1b812547e 100644 --- a/Classes/LinphoneAppDelegate.h +++ b/Classes/LinphoneAppDelegate.h @@ -40,7 +40,7 @@ IBOutlet PhoneViewController* myPhoneViewController; CallHistoryTableViewController* myCallHistoryTableViewController; ContactPickerDelegate* myContactPickerDelegate; - + UIView *myContentView; CTCallCenter* callCenter; } @@ -54,7 +54,7 @@ @property (nonatomic, retain) IBOutlet UITabBarController* myTabBarController; @property (nonatomic, retain) ABPeoplePickerNavigationController* myPeoplePickerController; @property (nonatomic, retain) IBOutlet PhoneViewController* myPhoneViewController; - +@property (nonatomic, retain) IBOutlet UIView* myContentView; @end diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 8162f851d..5aae06fae 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -45,6 +45,7 @@ int __aeabi_idiv(int a, int b) { @synthesize myTabBarController; @synthesize myPeoplePickerController; @synthesize myPhoneViewController; +@synthesize myContentView; -(void) handleGSMCallInteration: (id) cCenter { CTCallCenter* ct = (CTCallCenter*) cCenter; @@ -203,9 +204,12 @@ int __aeabi_idiv(int a, int b) { [myTabBarController setSelectedIndex:DIALER_TAB_INDEX]; [myTabBarController setViewControllers:newArray animated:NO]; - - [window addSubview:myTabBarController.view]; - + //[window addSubview: myTabBarController.view]; + [myCallHistoryTableViewController loadView]; + [myContentView addSubview:myCallHistoryTableViewController.view]; + //[window addSubview: myContentView]; + // [myContentViewController addChildViewController:myCallHistoryTableViewController]; + [window makeKeyAndVisible]; [[LinphoneManager instance] setCallDelegate:myPhoneViewController]; diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib new file mode 100644 index 000000000..efeb3a2f7 --- /dev/null +++ b/Classes/PhoneMainView.xib @@ -0,0 +1,1147 @@ + + + + 784 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + YES + IBProxyObject + IBUITabBarItem + IBUIViewController + IBUICustomObject + IBUITabBarController + IBUIWindow + IBUITabBar + IBUIButton + IBUIView + + + YES + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + IBCocoaTouchFramework + + + + 1316 + + YES + + + 1316 + {{0, 20}, {320, 400}} + + + + _NS:9 + + 3 + MQA + + 2 + + + YES + IBCocoaTouchFramework + + + + 1316 + + YES + + + 1316 + {64, 72} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + history-over.png + + + NSImage + history-selectionne.png + + + NSImage + history-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 1316 + {{64, 0}, {64, 72}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + contacts-over.png + + + NSImage + contacts-selectionne.png + + + NSImage + contacts-actif.png + + + + + + + 1316 + {{128, 0}, {64, 72}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + dialer-over.png + + + NSImage + dialer-actif.png + + + + + + + + 1316 + {{192, 0}, {64, 72}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + settings-over.png + + + NSImage + settings-selectionne.png + + + NSImage + settings-actif.png + + + + + + + 1316 + {{256, 0}, {64, 72}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + tchat-over.png + + + NSImage + tchat-selectionne.png + + + NSImage + tchat-actif.png + + + + + + {{0, 408}, {320, 72}} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NQA + + IBCocoaTouchFramework + + + + {320, 480} + + + + + 1 + MSAxIDEAA + + NO + NO + + IBCocoaTouchFramework + + + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + Dialer + + NSImage + dialer-orange.png + + IBCocoaTouchFramework + + + + PhoneViewController + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + YES + + History + + History + + NSImage + history-orange.png + + IBCocoaTouchFramework + + + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + + IBCocoaTouchFramework + + 5 + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + + IBCocoaTouchFramework + + 0 + + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + + -2147483382 + {{0, 431}, {320, 49}} + + + + + 3 + MCAwAA + + NO + IBCocoaTouchFramework + + YES + + + + + + + + + + + + YES + + + delegate + + + + 6 + + + + window + + + + 7 + + + + myTabBarController + + + + 14 + + + + myContentView + + + + 55 + + + + + YES + + 0 + + YES + + + + + + 2 + + + YES + + + + + + + -1 + + + File's Owner + + + 4 + + + linphoneAppDelegate + + + -2 + + + + + 8 + + + YES + + + + + + + + + + 9 + + + + + 11 + + + YES + + + + contacts + + + 12 + + + + + 38 + + + YES + + + + dialer + + + 39 + + + + + 41 + + + YES + + + + history + + + 42 + + + + + 43 + + + YES + + + + more + + + 44 + + + + + 50 + + + YES + + + + + + + + tabbar + + + 56 + + + history + + + 57 + + + dial + + + 58 + + + settings + + + 59 + + + tchat + + + 60 + + + contacts + + + 53 + + + content + + + + + YES + + YES + -1.CustomClassName + -1.IBPluginDependency + -2.CustomClassName + -2.IBPluginDependency + 11.IBPluginDependency + 12.IBPluginDependency + 2.IBAttributePlaceholdersKey + 2.IBPluginDependency + 38.CustomClassName + 38.IBPluginDependency + 39.IBPluginDependency + 4.CustomClassName + 4.IBPluginDependency + 41.CustomClassName + 41.IBPluginDependency + 42.IBPluginDependency + 43.CustomClassName + 43.IBPluginDependency + 44.IBPluginDependency + 50.IBPluginDependency + 53.IBPluginDependency + 56.IBPluginDependency + 56.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 57.IBPluginDependency + 57.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 58.IBPluginDependency + 58.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 59.IBPluginDependency + 59.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 60.IBPluginDependency + 60.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 8.IBPluginDependency + 9.IBPluginDependency + + + YES + UIApplication + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + YES + + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + PhoneViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + linphoneAppDelegate + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + CallHistoryTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + MoreViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + YES + + + + + + YES + + + + + 60 + + + + YES + + ABPeoplePickerNavigationController + UINavigationController + + IBProjectSource + ./Classes/ABPeoplePickerNavigationController.h + + + + CallHistoryTableViewController + GenericTabViewController + + clear + UIButton + + + clear + + clear + UIButton + + + + IBProjectSource + ./Classes/CallHistoryTableViewController.h + + + + GenericTabViewController + UITableViewController + + header + UIView + + + header + + header + UIView + + + + IBProjectSource + ./Classes/GenericTabViewController.h + + + + MainScreenWithVideoPreview + UIViewController + + YES + + YES + phoneMainView + window + + + YES + PhoneViewController + UIWindow + + + + YES + + YES + phoneMainView + window + + + YES + + phoneMainView + PhoneViewController + + + window + UIWindow + + + + + IBProjectSource + ./Classes/MainScreenWithVideoPreview.h + + + + MoreViewController + UITableViewController + + YES + + YES + console + credit + creditText + web + weburi + + + YES + UITableViewCell + UITableViewCell + UITextView + UITableViewCell + UILabel + + + + YES + + YES + console + credit + creditText + web + weburi + + + YES + + console + UITableViewCell + + + credit + UITableViewCell + + + creditText + UITextView + + + web + UITableViewCell + + + weburi + UILabel + + + + + IBProjectSource + ./Classes/MoreViewController.h + + + + PhoneViewController + UIViewController + + YES + + YES + address + backToCallView + callLarge + callShort + dialerView + eight + erase + five + four + hash + mMainScreenWithVideoPreview + myTabBarController + nine + one + seven + six + star + status + statusViewHolder + switchCamera + three + two + zero + + + YES + UITextField + UIButton + UIButton + UIButton + UIView + UIButton + UIEraseButton + UIButton + UIButton + UIButton + MainScreenWithVideoPreview + UITabBarController + UIButton + UIButton + UIButton + UIButton + UIButton + UILabel + UIView + UIButton + UIButton + UIButton + UIButton + + + + YES + + YES + address + backToCallView + callLarge + callShort + dialerView + eight + erase + five + four + hash + mMainScreenWithVideoPreview + myTabBarController + nine + one + seven + six + star + status + statusViewHolder + switchCamera + three + two + zero + + + YES + + address + UITextField + + + backToCallView + UIButton + + + callLarge + UIButton + + + callShort + UIButton + + + dialerView + UIView + + + eight + UIButton + + + erase + UIEraseButton + + + five + UIButton + + + four + UIButton + + + hash + UIButton + + + mMainScreenWithVideoPreview + MainScreenWithVideoPreview + + + myTabBarController + UITabBarController + + + nine + UIButton + + + one + UIButton + + + seven + UIButton + + + six + UIButton + + + star + UIButton + + + status + UILabel + + + statusViewHolder + UIView + + + switchCamera + UIButton + + + three + UIButton + + + two + UIButton + + + zero + UIButton + + + + + IBProjectSource + ./Classes/PhoneViewController.h + + + + UIEraseButton + UIButton + + IBProjectSource + ./Classes/UIEraseButton.h + + + + linphoneAppDelegate + NSObject + + YES + + YES + myContentView + myPeoplePickerController + myPhoneViewController + myTabBarController + window + + + YES + UIView + ABPeoplePickerNavigationController + PhoneViewController + UITabBarController + UIWindow + + + + YES + + YES + myContentView + myPeoplePickerController + myPhoneViewController + myTabBarController + window + + + YES + + myContentView + UIView + + + myPeoplePickerController + ABPeoplePickerNavigationController + + + myPhoneViewController + PhoneViewController + + + myTabBarController + UITabBarController + + + window + UIWindow + + + + + IBProjectSource + ./Classes/linphoneAppDelegate.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES + 3 + + YES + + YES + contacts-actif.png + contacts-over.png + contacts-selectionne.png + dialer-actif.png + dialer-orange.png + dialer-over.png + history-actif.png + history-orange.png + history-over.png + history-selectionne.png + settings-actif.png + settings-over.png + settings-selectionne.png + tchat-actif.png + tchat-over.png + tchat-selectionne.png + + + YES + {127, 144} + {127, 144} + {127, 144} + {132, 144} + {25, 24} + {132, 144} + {127, 144} + {25, 23} + {127, 144} + {127, 144} + {127, 144} + {127, 144} + {127, 144} + {127, 144} + {127, 144} + {127, 144} + + + 1181 + + diff --git a/PhoneMainView.xib b/PhoneMainView.xib deleted file mode 100644 index 8cc1896dd..000000000 --- a/PhoneMainView.xib +++ /dev/null @@ -1,394 +0,0 @@ - - - - 784 - 11D50b - 2182 - 1138.32 - 568.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - YES - IBProxyObject - IBUITabBarItem - IBUIViewController - IBUICustomObject - IBUITabBarController - IBUIWindow - IBUITabBar - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - IBCocoaTouchFramework - - - - 1316 - - {320, 480} - - - 1 - MSAxIDEAA - - NO - NO - - IBCocoaTouchFramework - - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - History - - History - - NSImage - history-orange.png - - IBCocoaTouchFramework - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - YES - - - - Dialer - - NSImage - dialer-orange.png - - IBCocoaTouchFramework - - - PhoneViewController - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - IBCocoaTouchFramework - 5 - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - - IBCocoaTouchFramework - 0 - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - - 266 - {{0, 431}, {320, 49}} - - - 3 - MCAwAA - - NO - IBCocoaTouchFramework - - - - - - YES - - - delegate - - - - 6 - - - - window - - - - 7 - - - - myTabBarController - - - - 14 - - - - - YES - - 0 - - YES - - - - - - 2 - - - - - -1 - - - File's Owner - - - 4 - - - linphoneAppDelegate - - - -2 - - - - - 8 - - - YES - - - - - - - - - - 9 - - - - - 11 - - - YES - - - - Contacts - - - 12 - - - - - 38 - - - YES - - - - dialer - - - 39 - - - - - 41 - - - YES - - - - history - - - 42 - - - - - 43 - - - YES - - - - more - - - 44 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 11.IBPluginDependency - 12.IBPluginDependency - 2.IBAttributePlaceholdersKey - 2.IBPluginDependency - 38.CustomClassName - 38.IBPluginDependency - 39.IBPluginDependency - 4.CustomClassName - 4.IBPluginDependency - 41.CustomClassName - 41.IBPluginDependency - 42.IBPluginDependency - 43.CustomClassName - 43.IBPluginDependency - 44.IBPluginDependency - 8.IBPluginDependency - 9.IBPluginDependency - - - YES - UIApplication - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - YES - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - PhoneViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - linphoneAppDelegate - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - CallHistoryTableViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - MoreViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 48 - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - dialer-orange.png - history-orange.png - - - YES - {25, 24} - {25, 23} - - - 1181 - - diff --git a/Resources/contacts-actif.png b/Resources/contacts-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..f831d291f2344d141095d85473c5c628d828c7f3 GIT binary patch literal 5953 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 literal 0 HcmV?d00001 diff --git a/Resources/contacts-over.png b/Resources/contacts-over.png new file mode 100644 index 0000000000000000000000000000000000000000..b29e27096fd08a67185105b04482726208e1c948 GIT binary patch literal 5968 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 A>Hq)$ literal 0 HcmV?d00001 diff --git a/Resources/contacts-selectionne.png b/Resources/contacts-selectionne.png new file mode 100644 index 0000000000000000000000000000000000000000..dedfa55aeee1803bb0530f5965b15222e79bebd8 GIT binary patch literal 5890 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 G`hNiHgMrro literal 0 HcmV?d00001 diff --git a/Resources/history-actif.png b/Resources/history-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..101ac879d74d23da01a32a34376341aba0afd422 GIT binary patch literal 5743 zcmbVQS5#A7w+)1*prDk1QbOPpP)ZU4gia^{q!+1DLntaqNFr65Nbev`X^Mh0K|!hr z2+{@VO^_m00YNZyE`IIahkyJJ_l$AI*=wIU=PG-x^Kc>!^)=6(y>u1;0G!j-Qa3(* z2AB?d7?&1!=G2-6tgi|&EprGtcaKPNglEIEx7dM`??Ld%#i9;pa z-GArxCz?by#{O>@{}D|x^&wy-jIkvAT_Wc6Je&poA)nUnzdQO3JdH-qfarF5C=Pej z@tC{rSR7efT@iBnM%>BGNe&7_LSZl&1XKnNl}5r~D72cItg4y}T3Ss8DvN^sqw$}( z2pCcWDJ83cl!l{VFbx<|5_(Eil}5>^s;bJu(f@F@aU`+>4uk#2uiL3#7#xmPS4XS; zSFW5I5$iz46HW2>JO6Zmp(~z@C%NJYU^Npdu$}|P4fosreLR0PQK1~8CDJ6}NLcpXDaLC_Wr~gmQBu;~o_}v`;r&<2l zI_<#U%YR${)cALJu(;ESA)by#m)XH<0N`SdwmQnxd&1FlZ~$X(KeM=ib#TA}fP8Uf z0hxB334nS{wt5$~2Ok;wgXjV0s4s=jz*(pRj}MP`k9jh?TU8)nOQ5IFnX}OmI$c{^ zjG0PxIpuUFw>80gYu`Xm?*NL94>wz4uPtrv&MIGZtnpaj&Sb1Qr$IH?7xaidmc-9cWsg(>*ykQBy-NN)xI| zqtnu#AsU0gHy;>T=_ewDj)caUPfn7bQGtV0xEN%kJD?|p^M28e&!WWr46jyHUVJ4R zm;Cr~Y;4v8ZpzU&bMRA4T+2(U^dkQ8h;q6JV|(8FE{g9h*(CW`J3I)|l8lnhalm}D z?ewtd^hc9f3U5IIVo$D|v*%Fj^*DiDJikWbE+0|>*ao0z+0TL1+CP2gJ0FxZ&v|?@ zKf6G?2+y4#mqi9K^&Dy;+huDGc*bha%({ti`AjS#g8-1s;Pi|PON((NQr1Jn5VMEv zJZ^ckCZEA!$dJzI$`tmFRKqs-5gw3OK*^$Ka5JVV0b_!B(Vzs@!W9yhH4 ziG}mPh!t1trO#xojEKfo%$|XI+Xa@3J}1AV9_41lvc7~f{=xUc)pcHG>hlOK$8wHD zj(nsjHH{GS27f|w%1~tllb(*BIr3n)d8(CzJ?iSEO1=DNsbfQxDk_G%EeF;6S2#Yu zJ+xB}y!UhU`Pp|TLq zRC3-}WUSoijlK5%=|z_~J{n^1t@G;>Op%@pKpk$a&Z~x;3`LLXs>|%!xH^;I#LC!^ z6TuO~XVgIeRa4}5?o5kfG2lo}FZY)r%Ya!}=JNer z+UZpBt(G(rYJ&(KM+X!M@cTawG9p(*F3U4sV-^RM8*;Wb-P!)xPRUV5fBS00NLM#b zjRycObM^5m15)F6ulXiT=3Drgs!uelC#@v#a`ReipNG_l5Gbn|7VrFb=2r3!hGKwU zKh=;Ik;BFpo>_*slUg5KWGp#}$}>Z|%ov4`W!Oj^f~$-Rmf9sh26b*KO+wj`w9)T?U}LTqoad@2bGys!6J$0ObpR2+;(a} z6~>3duPW_e;nU?_#o?P?<t%aYO_8To-{cE4r#aL=@gY6vo3 zzABfKHfPrL5;_9IByyCgxUBZC*t3J@+9?|H6YdG}OW`vE4FxRar{KU!VwYzrPT$4KDt(u(ls}5MIRHWQn zdc;D@A3h7--u{u5l%WP|8&%c1@CmO~(YBZKQ0KdNhe5S#4_=)(jcAG6M7_jd$%vNF)n*U!myx$N(1e`#)(xufxV z430EPZZ~$$YL5r*rK(1t)a7{^&+to86&_~%;^&o5%gs=(C#d=F>KF|a4(q4A^l>m< z=rUWR6{E6=Gy=WaHFZTgdZwa62LMzpJAO8TOKIK>A5-j}yJgj!7PHQ4rLI zx-Ph9mL>u9T-L+G%ztcYXEyr@Vf*{8Q-LM41P6L$?d6zg-Xv4eU zskLfd6Xmi#F|lrTkpp<_=mi!Zd%+k95M%9~ykp?nP0xy(pF?ONnKps@9T%xrZB&nQ zgLHy=?Dn|24?pq6MQpY*Av~v-R>kO8xMz0aPZ%x{B5Q1}E_whLZ5#a?w?+7r1D_1q zJ`-m#jK9MnY{fJqFI&wJ*6w15R|wB8I~d5Y;Kn7n#G7+$D1b?w*_Jn3z`IIlL4h&c>r`z!P0AnmsK)9?3i5-&(_gLJ z+!)3Dx7f<N2}T3cyun!UX2g)TVsMQuQ-88oh#T zj~Cg|`i}JZq5Ib1=?d;0BDWB(FtOfF=c=h(uG!?`rIfrh6UAQ2bt8nTFrT%@vnbv6 zYdD#=q@Ljl*UX}tBZ8=|_hB#Zzvb@p$Z_A8vN-RuLh(yYALJlVNVfxg& z>wXy_8wN{n-#_!d^tC_4bIP_+rGw(!GQ7MP<{1ER=%$LuY6x*$o>NV&RA)8XTR>^t z9~c=9wE3iCrQ^Ftx&&mb?akJoMcfX~R{l{qQ+Z*f#wl!ic*Bl; zc5&id%-T~y`@MrI>UlF4;>`znx29Nss07Ik8%d2TTwA3|h=dVMYnXoxL7Sl1 zab^2HapR6}uod!V!z1km7*K2wk0OwuYzLQ@dfD$tq9HC_60W|5livD6KaF0nQ;sf+E#fA?5JQp4aS_cIPE-Mh{0CUlk#9LOxk`d-zl~ zV%L_Uf}eJA_jcnkoQw0V>2-KIw{ADV_N>skO>^33x*kGxwcN+=p)tX({M@+uodXcJ z&tra&O#jmwAMv{NyHj@2Frkf9lb$+|%V-MnUdr&3D)DzT`s1w~BEg3@d2REIdb{6n zlY8%J5Sn^Y7eZYAAVejIsBNVv)zN2n`qZYXB~BHn7Ze%{j&GYS=!0}OFhW9enqz_^ z*!#ul#FkCc%dYjl*HY0nx^tqa!1Wdgw#;W)Vw`D%DRJ~>3sye+tKrsHA+rL$oJ5h z{5dH)iQEWb$O}PKY-Q}PuZXqqzP#TjiKsZ*7@JDhCB zQ@ZDZdi{{uQ+J(Ryr;XrGaV?I1WZRlQdBp=g=s8Tl(|{pjn4Cd=lRw2J$jhla7)dN z4@MotsH%76-b%9YjO8fq95Auj*7*g~zNB?OzTZi3TyfaY0=1C%One2LlN5dpyR^8% zDOIM`(X0K3bwp0lr(b~HBWpyb}Z*jzyBa6u#K8= z+ zO3)#5DXTSg(Yo5Io_-1Ntx8y(PN);}sQVD@vc_wdX73NX0T5nA#T<($ts4qQp9-h7 z3-87pFHdQ&QSzxqCf_XR`1l%@fc@Be4#626N9<(*)vq7LDNK9P!Y=m?wPz$)AD49Cts@?l{(%kQlR8*BGuMHDD*h{x;?iE_H4>v~0@ zJUv35)n6pl8=q8A_ttEERDOrAV16N-+c~nN)rMIqv%AVO{c$m}>5d60+A26U#oSI` zsY3nBd+H@v?5d*md#9VPu&#nA-OSnz}(g+x1Pcw-AXh%aKAN@@M{uI48pUmuk!OliF9tz4Z{&9n#xK;STJyfo~^th>{uvu_q zk4eRRvcSu@UZ_ET`8~<>1GWS?!4ooYR(-^9Bd&W_%&MRpXs&g|u?&=Lbn;{Wa4Rbr zp3yUcPWWCMdNLhIK;MXq+N!%x=w9Hd{`ISSBmM;U*7B*~TIK%Z=b;`aK;OXEj~+z7 zI{M)wRFUZTGw{eKo8Gp}$Xxm76BGKg39n(-XC8i(3|J~oFj*?6-v?*@c<_MXMn137 zR?NX#+>=ljlB0qg<*V1pw%QEm#Qvg8i!C32Vn8+TGv#5=&nw(H3^dMx!RHygNbY89)RFDAsK6?bhJ#*y*;OwUv4N_zX|uBc}lx52}cbu&SVm zS=8#@pmOD7U>D8)%s_Oyr~$*2%2Y;sBkD$zIqw|6RZufPzwT_-o2oZ?oZHteDE!Aa zIXKCzwJOQB(NzZX$KfB}53TW}>fg3&M74S1J5Klu_|&Xtr?LVHx+j(l55EJy3k%#! z-JkHGk3uVnSm_otQrkuTR6dAR`T|Zoz~ zOX$!~vpuvK-YDMq8Sv}13-5TdWk$&%8;suWGM_N`b+v!`b?x<}lMk>%k4f-P&U)7V zD~uMi;>{nH-gRzJac5qstPNW&U8`Qx2l-g~`eQF(P36Fh>91Uur|L*!-x}mmx3akT zZm|0+dMPZIlc_{wJ21FgRpZY=>A|!xv~eg{m=g3d+m?+3cg8R%JpwJ@P$woJ7E;H_ z=}>Vkx^Lx(erkH8YO=I8H~1=nc2E2)NSsxNib literal 0 HcmV?d00001 diff --git a/Resources/history-over.png b/Resources/history-over.png new file mode 100644 index 0000000000000000000000000000000000000000..581b098f8cf96905bee6c3836cb37ec066ba8f8e GIT binary patch literal 5727 zcmbVQcQl*t+YhNxd+!mUsF}n{)FxETTBW5DNo+#IUNNeuRa&*a_H6CaYEgc9eOkz2wlpb>xD)e8^}3Kut5q2aWN-5kXEk7dLNp@OEnl803ak2VYY%ftdK{;#}P> zhY)ahy;FR$Nu z{i*Fow7~su82?e*&nnmlCvSoC!}}93M_F4%M@I(%)Bgu+=

Ddt-3__;n-u{TmDYuUJ)G0uD{Y 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 Il1=3Q01&oCuK)l5 literal 0 HcmV?d00001 diff --git a/Resources/settings-actif.png b/Resources/settings-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..161a1a1d60824206a1daa904b72ccde95e0d74fc GIT binary patch literal 6964 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 KYUL_+VgCcw47(=) literal 0 HcmV?d00001 diff --git a/Resources/settings-over.png b/Resources/settings-over.png new file mode 100644 index 0000000000000000000000000000000000000000..4ce5b933da2c2362902593378ce1ed860ee0c426 GIT binary patch literal 6992 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 literal 0 HcmV?d00001 diff --git a/Resources/settings-selectionne.png b/Resources/settings-selectionne.png new file mode 100644 index 0000000000000000000000000000000000000000..0d348e9d013ffa1b9caf686abf55edd17e71b930 GIT binary patch literal 6869 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 literal 0 HcmV?d00001 diff --git a/Resources/tchat-actif.png b/Resources/tchat-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..08b985294eb2ebf39777ac2838146df4ddf83160 GIT binary patch literal 4738 zcmbVQX*iT^|DLh$BH5A|V+k>4?E5;5sq8|@GR$BwMq|Qc%@V1si6kUjsbtL(V@a~q z5QPwWDrMhy=AEAB>G{7Op5y)SzmMZS?(275zwAsfhvs<1l&PwWMW6}R z2WNhTh_$<7Y43T(&r=HnG0+F=hHBFZ@K_QW9E$f32+|JKgZ#;>O<(`oR)T>4bRqfa zLH-KL$-)|JLLg$nYEYP>Crlj%R)<63DykY98VX=#7#yYqQ&xg2E5bFjRg|@1F!0|G zgsw)!cxl@r%>LG*TY3;55-CtyNhu^G1RA0OB@n%p;96Q*zc`eY73m&|LF51uI#e+r zNb)xW0vqH>#08RYgaGg_MzjavGD#0YkMyq;@PQT<{}2ZR{aq+}$&^CTfl6>FObL(w zmDiu%K_px3|Aq0d-a+={K&+B2Hi&SU=t=K~m*j6Sy>|aw=$9is8f_~gj@}fsKZ4+S z8IKJhp%8iy`Uw<+!)U|cnlLzALlvf>3{%&H!;Q>LOtg$mG|bdZG+4mDOc(l9nQ)>1b6jYS0nk|gEqD_aDXhzrJI%!mX$_|N)kPKGaInVOaaw@+EbZ_BY37{_LO6u2F1xBSE6`}PuJzZ~O~L}nIX0+s88z1J`A43= z>M*b`@br1ztCXnVvGDb3A9j~U11aw=AKuEV)XMdn`@+m2BgK64Ju#_hXWHO;r29^S zqSFc>8sHH(Q*RIgrCrq6TN(@tY`7OSa>anNy&*L>HvJFq-PGueYv^PZsX&$dXzyeJ(b0RPG)2Szh2WH;Z$}HZrZuGu&tE*f|gw=5BNx+ zMDFh&>jC74M+tzd<0FnGT(R|Kb1qJ4tHM&#l4^y|zuL@`87QBU`MD@IAW zJQ@k~N;AE1WLo0{n*jT{;nq(_L7JB_An~^ZSA9yzoM_}x;d82NLZRR5pi>M%ydr6R zWkn^XWA+GNG@^=`#`2NDz58H!Q4uT$mVNcMm)hRGIzt74$v#^SI*x<_1~x|XFDO&m zGML5Mc$@Xf323hVYldgBDT`w~RZgglsb_SdX22sOe9;35vlzMiU(63_DIW#*OCK=< zfUgqA{Y-`&vaI&CpYx48e)TYDFhtxvVX@myurFtEW(#DPZkS147n)hg7khE|e7XuS zV#w@}6Gc0eK7zn4byl9<-`!Z-qUJ{(hCfi{F~>8deC&QGcylN?Ew?bK{+P;B!kZqLY2rrP7GY9+ zyji-mh(l`H1*rEtB2~YQetK2!TK*&j=zLv>nhQ2~2s|eCshPRGk@Q`&UxOj0y=!x+ zhDc&fy4XZMwrD_Xtekq+8HKjFBn&#uV8I$}*lIcv#W3MyoA8{)O}RM2(yM@M_K@6^ zSf>tPav%P5fuF7L`L_$F9(eKVG3jBLKe0t)%Gy-#_IJEYC@ zWoB8fFh88C56PP`4}v`gf)_dt$xCL81;BoQ4`5j?HMkQaqU!v_7Fm-@J@5sr63TL_ zdWyenbYA!MmM~2=cg^{H_(J-r%K0LHcO3TV9|Lo@*`QwlQ)XRDk-lCnegON*UUS*# zxzS#gi>v%8ae=w-b!g@dNB|<5{Rb z^GYDwGs1ihFMk*X@SfvXTM)UR{t#J zuf#xPKJ-B~W3S$`ojzA-l%w7v*V*=%yMoTtYC5gTIHacH=tHGaT%1HF>4SXnK$PgMX z0gN*0b|}y9j5Cuw!IsB2T%M$8-y?lnb9GSyE0cL7Xb&gKa_gg_AWvcY`}05A?aV)I zJz8?V?8*5vKff^0y4+jMjD?a(T!^<+{Qgn@Zm)9LB4@@`rlE<+(M8NjacMD3@xm*b zyW}A5MQR;`@TvqrXP7pK;OZOz9(Qlgl1NX5p&&omj;pXEupqrfI%^u|%q|3cb4yG$kY1Vosp+;+W$=W&jXa7Vw& zI+vaa_4jA^du0qyaZ~BAub*7~g?%HLh~VH0gFl`+-0M}jklrw05XkHJW%@(�fKY|VyS>ly;91nvqSVpjm9?`w z4x%gvDJh3fkmal{z0HEUtk~ik^0?JjcsBlh>>k7$)$?P>=42rvw zaS)5NI>d8rKO0w#x&GDk);A6{RIb@(Lj0LCyQ~TPl{fq=3ul}ZEEev&Wa@@{tlo;k zN!)wufZBY;!m>^bt8X5JhH30O0Y!N$TnC7?&L$74-J?HeOjBJgSNJnIhgvmg%&~W~ za~U$D1(z)g$CH{%hrfxp6@^4U4cg2@9bt$liFLrv`>r4u=A-5F6lHjDq-Es_oK-u zTi8}`h`atPNeLfPSpG9)!vyyn-Rqe*K`YN!S5eGXCUNec=7lTG}I@Vhj z*AFWI3odv&QAYt++YDhzj>5vCDb91YmxmlmE%2p--KCK~qkiW1CiG!sGK!9_#h_pV zh*_Ww5tUG63vTxxR{5IDSE_D04{DbAn&|^JGON$rvtb+^AI4({`jpWfV=U&># z3dA$8&-j8OHtadlOpJ3_88&K!ozIW)cUsuWd}m?yy(ImPB*$&J14c*QM%eUM$wq!v z6SoL&NPH0-o$Xv~EfAENc&@P^nHqrs4e&SCgasep1Car*UPXZAaBned1s_5VC{e@86069%*)=jNjv+=%}93YWK=D3lS-!O zZDoW5)4v0Uua@n(`%`#tGA=FDZC#0Wj?JQVIH!k4D}I$XuQ_|r{+_Vm!TK2O-XEZR zH~R+V`Q1y8=kcQShC510=e-+An0(UGfn(b%8%(UL$TUjX*yxImP&CJ%OP1>0Hg_L7 z;Sg0(dXl*upSYlu5T8vu(DvL!uRBInAa^<-)KkZb$2d0PW2k#W^=k)Cs=0|viqMKO zgB|vT$eTFNfpWv$^EaqaK z@e5;TTZn|OTn**(hu!iSHQymc+y2WNcl^fH;KlX{In@V!k*nRY zVefM)yK%!`1q6I&Dco0Dzg0n4qpF9whE9!4V@HO?{Y@kTs9bNed)Rr~QZ&Lp@0+5C zH$Hs7>yoN|BaWeI?4D4z+7{VMaLVNZ`++}x*PO6+Cgev)ge+&)&?l7-&j1-g<8R}> zz_(Nz9$49bU~eR>@2_^b7^hO3POCnP{<~_=U;4%leKdHCY@@9*YWI z%IA|q1w5u#Qq29`J=we4{fqONR@c!!hRBvugUWF?(fO=7?o^d#%bx$!%O7@9z2g}9r-(;# zZogBIBtPl{Qmi!@sLmPT5Ya;^%nem`AdkU#9^GSp_=RB++y;QsrvA60rz}Py=IjJj?8^w{D)j-(&)|8yo(mk`&-pccGw7^ z+*w|B`1jigT@A?=8PnH4kC`Q>GKpQjHM=#iJ+L{jB-y{o9j7EEv|KJ#!f*cTuMo=A K67kH~J?1~Nf0&^F literal 0 HcmV?d00001 diff --git a/Resources/tchat-over.png b/Resources/tchat-over.png new file mode 100644 index 0000000000000000000000000000000000000000..0b3c96d00654216306f8f3fef0f6e5ef209efe20 GIT binary patch literal 4746 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 X!dq{N>adcZe}~M@UO<%_xySqm0B4-d literal 0 HcmV?d00001 diff --git a/Resources/tchat-selectionne.png b/Resources/tchat-selectionne.png new file mode 100644 index 0000000000000000000000000000000000000000..d9486ada6b961769c50b4172518412a196953a2b GIT binary patch literal 4695 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 151ea09df..490d12458 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -28,7 +28,6 @@ 220FAD3710765B400068D98F /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2E10765B400068D98F /* libosipparser2.a */; }; 220FAD3810765B400068D98F /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2F10765B400068D98F /* libspeex.a */; }; 220FAD3910765B400068D98F /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD3010765B400068D98F /* libspeexdsp.a */; }; - 220FAE4B10767A6A0068D98F /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 220FAE4A10767A6A0068D98F /* PhoneMainView.xib */; }; 2211DB95147564B400DEE054 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2211DB94147564B400DEE054 /* Settings.bundle */; }; 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; }; 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; }; @@ -120,7 +119,6 @@ 22D8F11F147548E2008C97DB /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc */; }; 22D8F120147548E2008C97DB /* PhoneViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22F2508D107141E100AC9B3F /* PhoneViewController.xib */; }; 22D8F121147548E2008C97DB /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; }; - 22D8F122147548E2008C97DB /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 220FAE4A10767A6A0068D98F /* PhoneMainView.xib */; }; 22D8F124147548E2008C97DB /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; 22D8F126147548E2008C97DB /* CallHistoryTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */; }; @@ -274,6 +272,21 @@ 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; + D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; }; + D347347E1580E5F8003C7B8C /* history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history-actif.png */; }; + D347347F1580E5F8003C7B8C /* history-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history-selectionne.png */; }; + D38327F31580FE3A00FA0D23 /* contacts-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EB1580FE3A00FA0D23 /* contacts-actif.png */; }; + D38327F41580FE3A00FA0D23 /* contacts-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */; }; + D38327F51580FE3A00FA0D23 /* dialer-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327ED1580FE3A00FA0D23 /* dialer-actif.png */; }; + D38327F61580FE3A00FA0D23 /* dialer-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EE1580FE3A00FA0D23 /* dialer-over.png */; }; + D38327F71580FE3A00FA0D23 /* settings-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EF1580FE3A00FA0D23 /* settings-actif.png */; }; + D38327F81580FE3A00FA0D23 /* settings-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F01580FE3A00FA0D23 /* settings-selectionne.png */; }; + D38327F91580FE3A00FA0D23 /* tchat-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F11580FE3A00FA0D23 /* tchat-actif.png */; }; + D38327FA1580FE3A00FA0D23 /* tchat-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */; }; + D3832800158100E400FA0D23 /* contacts-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FC158100E400FA0D23 /* contacts-over.png */; }; + D3832801158100E400FA0D23 /* history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history-over.png */; }; + D3832802158100E400FA0D23 /* settings-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings-over.png */; }; + D3832803158100E400FA0D23 /* tchat-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* tchat-over.png */; }; F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; }; F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; }; /* End PBXBuildFile section */ @@ -425,7 +438,6 @@ 220FAD2E10765B400068D98F /* libosipparser2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosipparser2.a; path = "liblinphone-sdk/apple-darwin/lib/libosipparser2.a"; sourceTree = ""; }; 220FAD2F10765B400068D98F /* libspeex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeex.a; path = "liblinphone-sdk/apple-darwin/lib/libspeex.a"; sourceTree = ""; }; 220FAD3010765B400068D98F /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = ""; }; - 220FAE4A10767A6A0068D98F /* PhoneMainView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PhoneMainView.xib; sourceTree = ""; }; 2211DB8F147555C800DEE054 /* libmediastreamer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer.a"; sourceTree = ""; }; 2211DB911475562600DEE054 /* liblinphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphone.a; path = "liblinphone-sdk/apple-darwin/lib/liblinphone.a"; sourceTree = ""; }; 2211DB94147564B400DEE054 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Settings.bundle; path = "nogpl-thirdparties/Settings.bundle"; sourceTree = ""; }; @@ -660,6 +672,21 @@ 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + D34734791580DDF1003C7B8C /* PhoneMainView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PhoneMainView.xib; sourceTree = ""; }; + D347347C1580E5F8003C7B8C /* history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-actif.png"; path = "Resources/history-actif.png"; sourceTree = ""; }; + D347347D1580E5F8003C7B8C /* history-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-selectionne.png"; path = "Resources/history-selectionne.png"; sourceTree = ""; }; + D38327EB1580FE3A00FA0D23 /* contacts-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts-actif.png"; path = "Resources/contacts-actif.png"; sourceTree = ""; }; + D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts-selectionne.png"; path = "Resources/contacts-selectionne.png"; sourceTree = ""; }; + D38327ED1580FE3A00FA0D23 /* dialer-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-actif.png"; path = "Resources/dialer-actif.png"; sourceTree = ""; }; + D38327EE1580FE3A00FA0D23 /* dialer-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-over.png"; path = "Resources/dialer-over.png"; sourceTree = ""; }; + D38327EF1580FE3A00FA0D23 /* settings-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings-actif.png"; path = "Resources/settings-actif.png"; sourceTree = ""; }; + D38327F01580FE3A00FA0D23 /* settings-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings-selectionne.png"; path = "Resources/settings-selectionne.png"; sourceTree = ""; }; + D38327F11580FE3A00FA0D23 /* tchat-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-actif.png"; path = "Resources/tchat-actif.png"; sourceTree = ""; }; + D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-selectionne.png"; path = "Resources/tchat-selectionne.png"; sourceTree = ""; }; + D38327FC158100E400FA0D23 /* contacts-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts-over.png"; path = "Resources/contacts-over.png"; sourceTree = ""; }; + D38327FD158100E400FA0D23 /* history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-over.png"; path = "Resources/history-over.png"; sourceTree = ""; }; + D38327FE158100E400FA0D23 /* settings-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings-over.png"; path = "Resources/settings-over.png"; sourceTree = ""; }; + D38327FF158100E400FA0D23 /* tchat-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-over.png"; path = "Resources/tchat-over.png"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -765,48 +792,49 @@ children = ( 340751E4150E4D0200B89C47 /* CallDelegate.h */, 2211DBBB14769C8200DEE054 /* CallDelegate.m */, - 2214EB7012F84668002A5394 /* LinphoneUI */, - 2218A92212FBE1340088A667 /* FirstLoginViewController.h */, - 2218A92312FBE1340088A667 /* FirstLoginViewController.m */, - 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */, - 222A483112F7176F0075F07F /* IncallViewController.xib */, - 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */, - 222A483212F7176F0075F07F /* IncallViewController.m */, - 222A483312F7176F0075F07F /* IncallViewController.h */, - 22E0A81B111C44E100B04932 /* MoreViewController.xib */, - 22E0A81C111C44E100B04932 /* MoreViewController.m */, - 22E0A81D111C44E100B04932 /* MoreViewController.h */, - 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */, - 22E0A81F111C44E100B04932 /* ConsoleViewController.m */, - 22E0A820111C44E100B04932 /* ConsoleViewController.h */, - 1D3623240D0F684500981E51 /* LinphoneAppDelegate.h */, - 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */, - 22F2508B107141E100AC9B3F /* PhoneViewController.h */, - 22F2508C107141E100AC9B3F /* PhoneViewController.m */, - 22F2508D107141E100AC9B3F /* PhoneViewController.xib */, - 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */, - 22B5EFE310CE5E5800777D97 /* ContactPickerDelegate.h */, - 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */, 227BCDBF10D4004600FBFD76 /* CallHistoryTableViewController.h */, 227BCDC010D4004600FBFD76 /* CallHistoryTableViewController.m */, 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */, - 2242D9C710D691F900E9963F /* GenericTabViewController.h */, - 2242D9C810D691F900E9963F /* GenericTabViewController.m */, - 22E028B413B4CCBD0068A713 /* VideoViewController.h */, - 22E028B513B4CCBD0068A713 /* VideoViewController.m */, - 22E028B613B4CCBD0068A713 /* VideoViewController.xib */, - 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */, - 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */, + 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */, 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */, 344ABD75147FCB68007420B6 /* ConferenceCallDetailView.h */, 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */, - 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */, + 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */, + 22E0A820111C44E100B04932 /* ConsoleViewController.h */, + 22E0A81F111C44E100B04932 /* ConsoleViewController.m */, + 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */, + 22B5EFE310CE5E5800777D97 /* ContactPickerDelegate.h */, + 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */, + 2218A92212FBE1340088A667 /* FirstLoginViewController.h */, + 2218A92312FBE1340088A667 /* FirstLoginViewController.m */, + 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */, + 2242D9C710D691F900E9963F /* GenericTabViewController.h */, + 2242D9C810D691F900E9963F /* GenericTabViewController.m */, + 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */, + 222A483312F7176F0075F07F /* IncallViewController.h */, + 222A483212F7176F0075F07F /* IncallViewController.m */, + 222A483112F7176F0075F07F /* IncallViewController.xib */, + 1D3623240D0F684500981E51 /* LinphoneAppDelegate.h */, + 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */, + 2214EB7012F84668002A5394 /* LinphoneUI */, 34CA8537148F692A00503C01 /* MainScreenWithVideoPreview.h */, 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */, 34CA852E148F646700503C01 /* MainScreenWithVideoPreview.xib */, + 22E0A81D111C44E100B04932 /* MoreViewController.h */, + 22E0A81C111C44E100B04932 /* MoreViewController.m */, + 22E0A81B111C44E100B04932 /* MoreViewController.xib */, + D34734791580DDF1003C7B8C /* PhoneMainView.xib */, + 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */, + 22F2508B107141E100AC9B3F /* PhoneViewController.h */, + 22F2508C107141E100AC9B3F /* PhoneViewController.m */, + 22F2508D107141E100AC9B3F /* PhoneViewController.xib */, 3418844514C6CAD300EA48C7 /* StatusSubViewController.h */, 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */, 3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */, + 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */, + 22E028B413B4CCBD0068A713 /* VideoViewController.h */, + 22E028B513B4CCBD0068A713 /* VideoViewController.m */, + 22E028B613B4CCBD0068A713 /* VideoViewController.xib */, 34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */, 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */, ); @@ -1209,55 +1237,68 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - 3485649D152C423F003FE041 /* in_call_video.png */, - 3485649E152C423F003FE041 /* out_call_video.png */, - 34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */, - 34C7646A14CD5585008E9607 /* dialer-orange.png */, - 34C7646B14CD5585008E9607 /* history-orange.png */, + D38327FC158100E400FA0D23 /* contacts-over.png */, + D38327FD158100E400FA0D23 /* history-over.png */, + D38327FE158100E400FA0D23 /* settings-over.png */, + D38327FF158100E400FA0D23 /* tchat-over.png */, + D38327EB1580FE3A00FA0D23 /* contacts-actif.png */, + D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */, + D38327ED1580FE3A00FA0D23 /* dialer-actif.png */, + D38327EE1580FE3A00FA0D23 /* dialer-over.png */, + D38327EF1580FE3A00FA0D23 /* settings-actif.png */, + D38327F01580FE3A00FA0D23 /* settings-selectionne.png */, + D38327F11580FE3A00FA0D23 /* tchat-actif.png */, + D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */, + D347347C1580E5F8003C7B8C /* history-actif.png */, + D347347D1580E5F8003C7B8C /* history-selectionne.png */, + 2211DBCA1476BE7300DEE054 /* ajouter.png */, + 225CB2E811ABB51000628906 /* clavier-01-106px.png */, + 225CB2E911ABB51000628906 /* clavier-01-108px.png */, + 225CB2ED11ABB65D00628906 /* clavier-01-160px.png */, + 2211DBCB1476BE7300DEE054 /* clavier.png */, + 2211DBCC1476BE7300DEE054 /* contact.png */, 34C7646814CD51CD008E9607 /* contact_vide.png */, - 3418845B14C7077400EA48C7 /* status_gray.png */, - 3418844F14C6F66E00EA48C7 /* status_green.png */, - 3418845114C6F66F00EA48C7 /* status_orange.png */, - 3418845214C6F66F00EA48C7 /* status_red.png */, - 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */, + 34C7646A14CD5585008E9607 /* dialer-orange.png */, + 2211DBCD1476BE7300DEE054 /* effacer.png */, + 2211DBCE1476BE7300DEE054 /* grouper.png */, + 34C7646B14CD5585008E9607 /* history-orange.png */, + 2211DBD01476BE7300DEE054 /* HP.png */, + 2211DBCF1476BE7300DEE054 /* HP_inverse.png */, + 22058C70116E305000B08DDD /* icone-linphone-57.png */, + 34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */, + 2242D91410D66BF300E9963F /* in_call.png */, + 3485649D152C423F003FE041 /* in_call_video.png */, + 228B19AE130290C500F154D3 /* iTunesArtwork */, + 225CB2F911ABB76400628906 /* linphone-banner.png */, + 8D1107310486CEB800E47090 /* linphone-Info.plist */, + 2274550710700509006EC466 /* linphonerc */, + 341FCA8D149798210084BC26 /* linphonerc-ipad */, + 2211DBD21476BE7300DEE054 /* micro.png */, + 2211DBD11476BE7300DEE054 /* micro_inverse.png */, + 22E19E47138A67A000FBFE87 /* missed_call.png */, 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */, + 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, + 2237D4081084D7A9001383EE /* oldphone-mono.wav */, + 2242D91510D66BF300E9963F /* out_call.png */, + 3485649E152C423F003FE041 /* out_call_video.png */, + 2211DBD41476BE7300DEE054 /* pause.png */, + 2211DBD31476BE7300DEE054 /* pause_inactif.png */, + 22F254801073D99800AC9B3F /* ringback.wav */, + 70571E1913FABCB000CDD3C2 /* rootca.pem */, + 34957F3E147D3FBF00DD7A09 /* secured.png */, + 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */, + 22226C11118197C0000CA27B /* startcall-green.png */, 1AE0A49314AC5C64002C99BD /* stat_sys_signal_0.png */, 1AE0A49414AC5C64002C99BD /* stat_sys_signal_1.png */, 1AE0A49514AC5C64002C99BD /* stat_sys_signal_2.png */, 1AE0A49614AC5C64002C99BD /* stat_sys_signal_3.png */, 1AE0A49714AC5C64002C99BD /* stat_sys_signal_4.png */, - 344ABDE41483E596007420B6 /* unverified.png */, - 34957F3E147D3FBF00DD7A09 /* secured.png */, - 2211DBCA1476BE7300DEE054 /* ajouter.png */, - 2211DBCB1476BE7300DEE054 /* clavier.png */, - 2211DBCC1476BE7300DEE054 /* contact.png */, - 2211DBCD1476BE7300DEE054 /* effacer.png */, - 2211DBCE1476BE7300DEE054 /* grouper.png */, - 2211DBCF1476BE7300DEE054 /* HP_inverse.png */, - 2211DBD01476BE7300DEE054 /* HP.png */, - 2211DBD11476BE7300DEE054 /* micro_inverse.png */, - 2211DBD21476BE7300DEE054 /* micro.png */, - 2211DBD31476BE7300DEE054 /* pause_inactif.png */, - 2211DBD41476BE7300DEE054 /* pause.png */, - 70571E1913FABCB000CDD3C2 /* rootca.pem */, - 22E19E47138A67A000FBFE87 /* missed_call.png */, - 228B19AE130290C500F154D3 /* iTunesArtwork */, - 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, - 225CB2F911ABB76400628906 /* linphone-banner.png */, - 225CB2ED11ABB65D00628906 /* clavier-01-160px.png */, - 225CB2E811ABB51000628906 /* clavier-01-106px.png */, - 225CB2E911ABB51000628906 /* clavier-01-108px.png */, + 3418845B14C7077400EA48C7 /* status_gray.png */, + 3418844F14C6F66E00EA48C7 /* status_green.png */, + 3418845114C6F66F00EA48C7 /* status_orange.png */, + 3418845214C6F66F00EA48C7 /* status_red.png */, 22226C13118197EC000CA27B /* stopcall-red.png */, - 22226C11118197C0000CA27B /* startcall-green.png */, - 22058C70116E305000B08DDD /* icone-linphone-57.png */, - 2237D4081084D7A9001383EE /* oldphone-mono.wav */, - 2242D91410D66BF300E9963F /* in_call.png */, - 2242D91510D66BF300E9963F /* out_call.png */, - 22F254801073D99800AC9B3F /* ringback.wav */, - 8D1107310486CEB800E47090 /* linphone-Info.plist */, - 2274550710700509006EC466 /* linphonerc */, - 341FCA8D149798210084BC26 /* linphonerc-ipad */, - 220FAE4A10767A6A0068D98F /* PhoneMainView.xib */, + 344ABDE41483E596007420B6 /* unverified.png */, ); name = Resources; sourceTree = ""; @@ -1348,7 +1389,6 @@ 2274550810700509006EC466 /* linphonerc in Resources */, 22F2508F107141E100AC9B3F /* PhoneViewController.xib in Resources */, 22F254811073D99800AC9B3F /* ringback.wav in Resources */, - 220FAE4B10767A6A0068D98F /* PhoneMainView.xib in Resources */, 2245671D107699F700F10948 /* Settings.bundle in Resources */, 22F51EF6107FA66500F98953 /* untitled.plist in Resources */, 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */, @@ -1413,6 +1453,21 @@ 34A6ECEB14CF13CB00460C04 /* icone-linphone-72.png in Resources */, 3485649F152C423F003FE041 /* in_call_video.png in Resources */, 348564A0152C423F003FE041 /* out_call_video.png in Resources */, + D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */, + D347347E1580E5F8003C7B8C /* history-actif.png in Resources */, + D347347F1580E5F8003C7B8C /* history-selectionne.png in Resources */, + D38327F31580FE3A00FA0D23 /* contacts-actif.png in Resources */, + D38327F41580FE3A00FA0D23 /* contacts-selectionne.png in Resources */, + D38327F51580FE3A00FA0D23 /* dialer-actif.png in Resources */, + D38327F61580FE3A00FA0D23 /* dialer-over.png in Resources */, + D38327F71580FE3A00FA0D23 /* settings-actif.png in Resources */, + D38327F81580FE3A00FA0D23 /* settings-selectionne.png in Resources */, + D38327F91580FE3A00FA0D23 /* tchat-actif.png in Resources */, + D38327FA1580FE3A00FA0D23 /* tchat-selectionne.png in Resources */, + D3832800158100E400FA0D23 /* contacts-over.png in Resources */, + D3832801158100E400FA0D23 /* history-over.png in Resources */, + D3832802158100E400FA0D23 /* settings-over.png in Resources */, + D3832803158100E400FA0D23 /* tchat-over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1423,7 +1478,6 @@ 22D8F11F147548E2008C97DB /* linphonerc in Resources */, 22D8F120147548E2008C97DB /* PhoneViewController.xib in Resources */, 22D8F121147548E2008C97DB /* ringback.wav in Resources */, - 22D8F122147548E2008C97DB /* PhoneMainView.xib in Resources */, 22D8F124147548E2008C97DB /* untitled.plist in Resources */, 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */, 22D8F126147548E2008C97DB /* CallHistoryTableViewController.xib in Resources */, From c058c5cbdee5c9f5fa4f7cc1500cceffda2bc3c5 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Thu, 7 Jun 2012 22:21:33 +0200 Subject: [PATCH 004/397] work in progress for in app settings --- Classes/LinphoneAppDelegate.m | 2 + Classes/LinphoneCoreSettingsStore.h | 6 + Classes/LinphoneCoreSettingsStore.m | 194 +++++++++++++++++++++++++-- Classes/LinphoneUI/LinphoneManager.m | 13 +- Settings.bundle/Advanced.plist | 40 ++++-- Settings.bundle/Root.plist | 2 - linphone.xcodeproj/project.pbxproj | 30 +---- submodules/externals/exosip | 2 +- submodules/linphone | 2 +- 9 files changed, 234 insertions(+), 57 deletions(-) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 3807085f7..f2e8586d7 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -28,6 +28,7 @@ #import "ConsoleViewController.h" #import "MoreViewController.h" #include "CallHistoryTableViewController.h" +#import "LinphoneCoreSettingsStore.h" #include "LinphoneManager.h" #include "linphonecore.h" @@ -239,6 +240,7 @@ int __aeabi_idiv(int a, int b) { // Settings, setup delegate settingsController.delegate = [LinphoneManager instance]; settingsController.settingsReader.delegate = [LinphoneManager instance]; + settingsController.settingsStore=[[LinphoneCoreSettingsStore alloc] init]; [settingsController.settingsReader init]; diff --git a/Classes/LinphoneCoreSettingsStore.h b/Classes/LinphoneCoreSettingsStore.h index bb9df882a..95d04546a 100644 --- a/Classes/LinphoneCoreSettingsStore.h +++ b/Classes/LinphoneCoreSettingsStore.h @@ -9,7 +9,13 @@ #import #import "IASKSettingsStore.h" +#import "LinphoneManager.h" + @interface LinphoneCoreSettingsStore : IASKAbstractSettingsStore { + NSDictionary *dict; } +- (void) enableCodecWithName: (const char*) name andRate: (int) rate to:(id)value; +-(void) transformLinphoneCoreToKeys; + @end diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 2b40a05c1..370d9323f 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -8,6 +8,10 @@ #import "LinphoneCoreSettingsStore.h" +#include "lpconfig.h" + + +#if 0 // linphone_core_enable_logs_with_cb - linphone_core_disable_logs debugenable_preference @@ -18,8 +22,8 @@ domain_preference password_preference outbound_proxy_preference proxy_preference -prefix_preference -substitute_+_by_00_preference +prefix_preference ++ +substitute_+_by_00_preference ++ // app internal setting check_config_disable_preference @@ -36,7 +40,7 @@ gsm_8k_preference ilbc_preference pcmu_preference pcma_preference -g722_preferenceg +g722_preference g729_preference // linphone_core_enable_payload_type @@ -46,6 +50,8 @@ vp8_preference // linphone_core_enable_video enable_video_preference +// linphone_core_set_video_policy +start_video_preference // linphone_core_set_media_encryption enable_srtp_preference @@ -54,23 +60,195 @@ enable_srtp_preference // linphone_core_set_firewall_policy stun_preference -// linphone_core_set_video_policy -start_video_preference +#endif + +struct codec_name_pref_table{ + const char *name; + int rate; + NSString *prefname; +}; + +struct codec_name_pref_table codec_pref_table[]={ + { "speex", 8000, @"speex_8k_preference" }, + { "speex", 16000, @"speex_16k_preference" }, + { "silk", 24000, @"silk_24k_preference" }, + { "silk", 16000, @"silk_16k_preference" }, + { "amr", 8000, @"amr_8k_preference" }, + { "ilbc", 8000, @"ilbc_preference"}, + { "pcmu", 8000, @"pcmu_preference"}, + { "pcma", 8000, @"pcma_preference"}, + { "g722", 8000, @"g722_preference"}, + { "g729", 8000, @"g729_preference"}, + { "mp4v-es", 90000, @"mp4v-es_preference"}, + { "h264", 90000, @"h264_preference"}, + { "vp8", 90000, @"vp8_preference"}, + { NULL,0,Nil } +}; + +static NSString *getPrefForCodec(const char *name, int rate){ + int i; + for(i=0;codec_pref_table[i].name!=NULL;++i){ + if (strcasecmp(codec_pref_table[i].name,name)==0 && codec_pref_table[i].rate==rate) + return codec_pref_table[i].prefname; + } + return Nil; +} + @implementation LinphoneCoreSettingsStore +-(id) init{ + self = [super init]; + if (self){ + dict=[[NSMutableDictionary alloc] init]; + [self transformLinphoneCoreToKeys]; + } + return self; +} + +-(void) dealloc{ + [super dealloc]; + [dict release]; +} + +-(void) transformKeysToLinphoneCore{ + //LinphoneCore *lc=[LinphoneManager getLc]; + +} + +- (void) setString:(const char*)value forKey:(NSString*)key{ + id obj=Nil; + if (value) obj=[[NSString alloc] initWithCString:value encoding:[NSString defaultCStringEncoding] ]; + [self setObject: obj forKey:key]; +} + +-(void) transformCodecsToKeys: (const MSList *)codecs{ + LinphoneCore *lc=[LinphoneManager getLc]; + const MSList *elem=codecs; + for(;elem!=NULL;elem=elem->next){ + PayloadType *pt=(PayloadType*)elem->data; + NSString *pref=getPrefForCodec(pt->mime_type,pt->clock_rate); + if (pref){ + [self setBool: linphone_core_payload_type_enabled(lc,pt) forKey: pref]; + }else{ + ms_warning("Codec %s/%i supported by core is not shown in iOS app config view.", + pt->mime_type,pt->clock_rate); + } + } +} + +-(void) transformLinphoneCoreToKeys{ + LinphoneCore *lc=[LinphoneManager getLc]; + LinphoneProxyConfig *cfg=NULL; + linphone_core_get_default_proxy(lc,&cfg); + if (cfg){ + const char *identity=linphone_proxy_config_get_identity(cfg); + LinphoneAddress *addr=linphone_address_new(identity); + if (addr){ + const char *proxy=linphone_proxy_config_get_addr(cfg); + LinphoneAddress *proxy_addr=linphone_address_new(proxy); + const char *port=linphone_address_get_port(proxy_addr); + + [self setString: linphone_address_get_username(addr) forKey:@"username_preference"]; + [self setString: linphone_address_get_domain(addr) forKey:@"domain_preference"]; + if (strcmp(linphone_address_get_domain(addr),linphone_address_get_domain(proxy_addr))!=0 + || port!=NULL){ + char tmp[256]={0}; + if (port!=NULL) { + snprintf(tmp,sizeof(tmp)-1,"%s:%s",linphone_address_get_domain(proxy_addr),port); + }else snprintf(tmp,sizeof(tmp)-1,"%s",linphone_address_get_domain(proxy_addr)); + [self setString: tmp forKey:@"proxy_preference"]; + } + linphone_address_destroy(addr); + linphone_address_destroy(proxy_addr); + + [self setBool: (linphone_proxy_config_get_route(cfg)!=NULL) forKey:@"outbound_proxy_preference"]; + + } + } + { + LCSipTransports tp; + const char *tname="udp"; + linphone_core_get_sip_transports(lc, &tp); + if (tp.udp_port>0) tname="udp"; + else if (tp.tcp_port>0) tname="tcp"; + else if (tp.tls_port>0) tname="tls"; + [self setString: tname forKey:@"transport_preference"]; + } + { + LinphoneAuthInfo *ai; + const MSList *elem=linphone_core_get_auth_info_list(lc); + if (elem && (ai=(LinphoneAuthInfo*)elem->data)){ + [self setString: linphone_auth_info_get_passwd(ai) forKey:@"password_preference"]; + } + } + { + [self setString: linphone_core_get_stun_server(lc) forKey:@"stun_preference"]; + } + + { + [self transformCodecsToKeys: linphone_core_get_audio_codecs(lc)]; + [self transformCodecsToKeys: linphone_core_get_video_codecs(lc)]; + } + + { + LinphoneMediaEncryption menc=linphone_core_get_media_encryption(lc); + const char *val; + switch(menc){ + LinphoneMediaEncryptionSRTP: + val="SRTP"; + break; + LinphoneMediaEncryptionZRTP: + val="ZRTP"; + break; + default: + val="None"; + } + [self setString:val forKey:@"media_encryption_preference"]; + } + + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference",0) forKey:@"debugenable_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference",0) forKey:@"check_config_disable_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","wifi_only_preference",0) forKey:@"wifi_only_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","backgroundmode_preference",TRUE) forKey:@"backgroundmode_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","start_at_boot_preference",TRUE) forKey:@"disable_autoboot_preference"]; + + if (linphone_core_tunnel_available()){ + /*FIXME: enhance linphonecore API to handle tunnel more easily in applications */ + LinphoneTunnel *tun=linphone_core_get_tunnel(lc); + //[self setString: linphone_tunnel_get_servers(tun) forKey:tunnel_address_preference]; + //[self setInteger: blabla forKey:tunnel_port_preference]; + //[self setString: forKey:@"tunnel_enabled_preference"]; + } + { + const LinphoneVideoPolicy *pol; + [self setBool: linphone_core_video_enabled(lc) forKey:@"enable_video_preference"]; + pol=linphone_core_get_video_policy(lc); + [self setBool:(pol->automatically_accept && pol->automatically_initiate) forKey:@"start_video_preference"]; + } +} -(void) setObject:(id)value forKey:(NSString *)key { - - + [dict setValue:value forKey:key]; } - (id)objectForKey:(NSString*)key { - return nil; + return [dict valueForKey:key]; } + - (BOOL)synchronize { + ms_message("Called in SettingsStore synchronize"); return YES; } +- (void) enableCodecWithName: (const char*) name andRate: (int) rate to:(id)value{ + LinphoneCore *lc=[LinphoneManager getLc]; + PayloadType *pt; + pt=linphone_core_find_payload_type(lc, name, rate); + if (pt){ + linphone_core_enable_payload_type(lc, pt, [value boolValue]); + } +} + @end diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 50a632aee..2188d73c6 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -998,15 +998,14 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //go directly to bg mode [self enterBackgroundMode]; } + NSUInteger cpucount = [[NSProcessInfo processInfo] processorCount]; + ms_set_cpu_count(cpucount); + - if ([LinphoneManager runningOnIpad]) - ms_set_cpu_count(2); - else - ms_set_cpu_count(1); - - ms_warning("Linphone [%s] started on [%s]" + ms_warning("Linphone [%s] started on [%s], running with [%u] processor(s)" ,linphone_core_get_version() - ,[[UIDevice currentDevice].model cStringUsingEncoding:[NSString defaultCStringEncoding]] ); + ,[[UIDevice currentDevice].model cStringUsingEncoding:[NSString defaultCStringEncoding]], + cpucount); } diff --git a/Settings.bundle/Advanced.plist b/Settings.bundle/Advanced.plist index c0c81b34a..bfe884eb2 100644 --- a/Settings.bundle/Advanced.plist +++ b/Settings.bundle/Advanced.plist @@ -58,13 +58,13 @@ DefaultValue - - Key - wifi_only_preference - Title - Wifi only - Type - PSToggleSwitchSpecifier + + Key + wifi_only_preference + Title + Wifi only + Type + PSToggleSwitchSpecifier DefaultValue @@ -90,21 +90,33 @@ DefaultValue - + None Key - enable_srtp_preference + media_encryption_preference Title - Secure rtp + Media Encryption + Titles + + None + SRTP + ZRTP + Type - PSToggleSwitchSpecifier + PSMultiValueSpecifier + Values + + None + SRTP + ZRTP + DefaultValue - + Key - disable_autoboot_preference + start_at_boot_preference Title - Disable application autostart + Start at boot Type PSToggleSwitchSpecifier diff --git a/Settings.bundle/Root.plist b/Settings.bundle/Root.plist index bd5c9216c..f2aa11c6c 100644 --- a/Settings.bundle/Root.plist +++ b/Settings.bundle/Root.plist @@ -9,8 +9,6 @@ SIP account Type PSGroupSpecifier - FooterText - Linphone must be restarted for changes to take effect AutocapitalizationType diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 806364d34..81e6e686e 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -29,7 +29,6 @@ 220FAD3810765B400068D98F /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2F10765B400068D98F /* libspeex.a */; }; 220FAD3910765B400068D98F /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD3010765B400068D98F /* libspeexdsp.a */; }; 220FAE4B10767A6A0068D98F /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 220FAE4A10767A6A0068D98F /* PhoneMainView.xib */; }; - 2211DB95147564B400DEE054 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2211DB94147564B400DEE054 /* Settings.bundle */; }; 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; }; 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; }; 2211DBC014769CB200DEE054 /* IncallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 222A483212F7176F0075F07F /* IncallViewController.m */; }; @@ -92,7 +91,6 @@ 226183AE1472527D0037138E /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AB1472527D0037138E /* libsrtp.a */; }; 226183B0147259670037138E /* libmssilk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AF147259670037138E /* libmssilk.a */; }; 2264B6D211200342002C2C53 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2264B6D111200342002C2C53 /* SystemConfiguration.framework */; }; - 226B563F13CAF1CD00921595 /* audio.plist in Resources */ = {isa = PBXBuildFile; fileRef = 226B563E13CAF1CD00921595 /* audio.plist */; }; 226CDADF14E2D0B800513B67 /* libbcg729.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226CDADD14E2D0B800513B67 /* libbcg729.a */; }; 226CDAE014E2D0B800513B67 /* libmsbcg729.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226CDADE14E2D0B800513B67 /* libmsbcg729.a */; }; 226F2ED61344B0EF00F6EF27 /* libopencore-amrwb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED31344B0EF00F6EF27 /* libopencore-amrwb.a */; }; @@ -142,8 +140,6 @@ 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; }; 22D8F13E147548E2008C97DB /* missed_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E19E47138A67A000FBFE87 /* missed_call.png */; }; 22D8F13F147548E2008C97DB /* VideoViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E028B613B4CCBD0068A713 /* VideoViewController.xib */; }; - 22D8F140147548E2008C97DB /* audio.plist in Resources */ = {isa = PBXBuildFile; fileRef = 226B563E13CAF1CD00921595 /* audio.plist */; }; - 22D8F141147548E2008C97DB /* video.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22E1A9E713CAF4AA00219531 /* video.plist */; }; 22D8F142147548E2008C97DB /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; 22D8F144147548E2008C97DB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */; }; @@ -206,7 +202,6 @@ 22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; }; 22E0A824111C44E100B04932 /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81F111C44E100B04932 /* ConsoleViewController.m */; }; 22E19E48138A67A000FBFE87 /* missed_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 22E19E47138A67A000FBFE87 /* missed_call.png */; }; - 22E1A9E813CAF4AA00219531 /* video.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22E1A9E713CAF4AA00219531 /* video.plist */; }; 22E5B0AF133B5EA20044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5B0AD133B5EA20044EA25 /* libssl.a */; }; 22E5B0B0133B5EA20044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5B0AE133B5EA20044EA25 /* libcrypto.a */; }; 22F2508E107141E100AC9B3F /* PhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* PhoneViewController.m */; }; @@ -316,6 +311,8 @@ 34CA853A148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */ = {isa = PBXBuildFile; fileRef = 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */; }; 57282931154AF1460076F540 /* history-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646B14CD5585008E9607 /* history-orange.png */; }; 57282933154AF14D0076F540 /* dialer-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646A14CD5585008E9607 /* dialer-orange.png */; }; + 57D2B457157E4580002EA69B /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3415205B1563ABEB00205A0E /* MessageUI.framework */; }; + 57D2B45B1580FF58002EA69B /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 57D2B45A1580FF58002EA69B /* Settings.bundle */; }; 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; @@ -474,7 +471,6 @@ 220FAE4A10767A6A0068D98F /* PhoneMainView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PhoneMainView.xib; sourceTree = ""; }; 2211DB8F147555C800DEE054 /* libmediastreamer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer.a"; sourceTree = ""; }; 2211DB911475562600DEE054 /* liblinphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphone.a; path = "liblinphone-sdk/apple-darwin/lib/liblinphone.a"; sourceTree = ""; }; - 2211DB94147564B400DEE054 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Settings.bundle; path = "nogpl-thirdparties/Settings.bundle"; sourceTree = ""; }; 2211DBBB14769C8200DEE054 /* CallDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CallDelegate.m; sourceTree = ""; }; 2211DBCA1476BE7300DEE054 /* ajouter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ajouter.png; path = Resources/ajouter.png; sourceTree = ""; }; 2211DBCB1476BE7300DEE054 /* clavier.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = clavier.png; path = Resources/clavier.png; sourceTree = ""; }; @@ -537,7 +533,6 @@ 226183AB1472527D0037138E /* libsrtp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsrtp.a; path = "liblinphone-sdk/apple-darwin/lib/libsrtp.a"; sourceTree = ""; }; 226183AF147259670037138E /* libmssilk.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmssilk.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmssilk.a"; sourceTree = ""; }; 2264B6D111200342002C2C53 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; - 226B563E13CAF1CD00921595 /* audio.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = audio.plist; path = Settings.bundle/audio.plist; sourceTree = ""; }; 226CDADD14E2D0B800513B67 /* libbcg729.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libbcg729.a; path = "liblinphone-sdk/apple-darwin/lib/libbcg729.a"; sourceTree = ""; }; 226CDADE14E2D0B800513B67 /* libmsbcg729.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsbcg729.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsbcg729.a"; sourceTree = ""; }; 226F2ED31344B0EF00F6EF27 /* libopencore-amrwb.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libopencore-amrwb.a"; path = "liblinphone-sdk/apple-darwin/lib/libopencore-amrwb.a"; sourceTree = ""; }; @@ -652,7 +647,6 @@ 22E0A81F111C44E100B04932 /* ConsoleViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConsoleViewController.m; sourceTree = ""; }; 22E0A820111C44E100B04932 /* ConsoleViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConsoleViewController.h; sourceTree = ""; }; 22E19E47138A67A000FBFE87 /* missed_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = missed_call.png; path = Resources/missed_call.png; sourceTree = ""; }; - 22E1A9E713CAF4AA00219531 /* video.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = video.plist; path = Settings.bundle/video.plist; sourceTree = ""; }; 22E5B0AD133B5EA20044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = ""; }; 22E5B0AE133B5EA20044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = ""; }; 22F2508B107141E100AC9B3F /* PhoneViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhoneViewController.h; sourceTree = ""; }; @@ -742,6 +736,7 @@ 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "VideoViewController-ipad.xib"; sourceTree = ""; }; 34CA8537148F692A00503C01 /* MainScreenWithVideoPreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainScreenWithVideoPreview.h; sourceTree = ""; }; 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainScreenWithVideoPreview.m; sourceTree = ""; }; + 57D2B45A1580FF58002EA69B /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 70571E1913FABCB000CDD3C2 /* rootca.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rootca.pem; path = Resources/rootca.pem; sourceTree = ""; }; 7066FC0B13E830E400EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; }; 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; @@ -808,6 +803,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 57D2B457157E4580002EA69B /* MessageUI.framework in Frameworks */, 34075199150645A300B89C47 /* CoreTelephony.framework in Frameworks */, 22D8F15B147548E2008C97DB /* libvpx.a in Frameworks */, 22D8F15C147548E2008C97DB /* QuartzCore.framework in Frameworks */, @@ -1100,14 +1096,6 @@ path = speex; sourceTree = ""; }; - 2211DB9614764F6B00DEE054 /* nogpl-thirdparties */ = { - isa = PBXGroup; - children = ( - 2211DB94147564B400DEE054 /* Settings.bundle */, - ); - name = "nogpl-thirdparties"; - sourceTree = ""; - }; 2214EB7012F84668002A5394 /* LinphoneUI */ = { isa = PBXGroup; children = ( @@ -1225,6 +1213,7 @@ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( + 57D2B45A1580FF58002EA69B /* Settings.bundle */, 3415205B1563ABEB00205A0E /* MessageUI.framework */, 34151FB61563A8D800205A0E /* InAppSettingsKit */, 340751961506459A00B89C47 /* CoreTelephony.framework */, @@ -1233,7 +1222,6 @@ 344ABDEF14850AE9007420B6 /* libc++.1.dylib */, 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */, 344ABDE71484E723007420B6 /* libzrtpcpp.a */, - 2211DB9614764F6B00DEE054 /* nogpl-thirdparties */, 2211DB911475562600DEE054 /* liblinphone.a */, 2211DB8F147555C800DEE054 /* libmediastreamer.a */, 226183AF147259670037138E /* libmssilk.a */, @@ -1244,8 +1232,6 @@ 70E542F213E147E3002BA2C0 /* OpenGLES.framework */, 22AA8AFB13D7125500B30535 /* libx264.a */, 22AA8AFC13D7125500B30535 /* libmsx264.a */, - 22E1A9E713CAF4AA00219531 /* video.plist */, - 226B563E13CAF1CD00921595 /* audio.plist */, 22276E8813C73DC000210156 /* CoreMedia.framework */, 22276E8613C73D8A00210156 /* CoreVideo.framework */, 22276E8013C73D3100210156 /* libavcodec.a */, @@ -1540,8 +1526,6 @@ 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, 22E19E48138A67A000FBFE87 /* missed_call.png in Resources */, 22E028B813B4CCBD0068A713 /* VideoViewController.xib in Resources */, - 226B563F13CAF1CD00921595 /* audio.plist in Resources */, - 22E1A9E813CAF4AA00219531 /* video.plist in Resources */, 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */, 2211DBD51476BE7300DEE054 /* ajouter.png in Resources */, 2211DBD71476BE7300DEE054 /* clavier.png in Resources */, @@ -1596,6 +1580,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 57D2B45B1580FF58002EA69B /* Settings.bundle in Resources */, 22D8F11F147548E2008C97DB /* linphonerc in Resources */, 22D8F120147548E2008C97DB /* PhoneViewController.xib in Resources */, 22D8F121147548E2008C97DB /* ringback.wav in Resources */, @@ -1621,10 +1606,7 @@ 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */, 22D8F13E147548E2008C97DB /* missed_call.png in Resources */, 22D8F13F147548E2008C97DB /* VideoViewController.xib in Resources */, - 22D8F140147548E2008C97DB /* audio.plist in Resources */, - 22D8F141147548E2008C97DB /* video.plist in Resources */, 22D8F142147548E2008C97DB /* rootca.pem in Resources */, - 2211DB95147564B400DEE054 /* Settings.bundle in Resources */, 2211DBD61476BE7300DEE054 /* ajouter.png in Resources */, 2211DBD81476BE7300DEE054 /* clavier.png in Resources */, 2211DBDA1476BE7300DEE054 /* contact.png in Resources */, diff --git a/submodules/externals/exosip b/submodules/externals/exosip index 014f5a021..8c42924ae 160000 --- a/submodules/externals/exosip +++ b/submodules/externals/exosip @@ -1 +1 @@ -Subproject commit 014f5a021ad4a0c024088edbb721f144a6f96699 +Subproject commit 8c42924ae9009f6003e98d29638e078ca1bd7c71 diff --git a/submodules/linphone b/submodules/linphone index d0ced93c2..bad6c152f 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit d0ced93c25f088c04a9f92b82aa41c5b1f271e23 +Subproject commit bad6c152f1521de8648d47c70e9321b7668b40b5 From e8ff650c24628f3d5410ca7f63284276b8932b25 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 8 Jun 2012 14:37:08 +0200 Subject: [PATCH 005/397] Continue other components --- ...iewController.h => InCallViewController.h} | 0 ...iewController.m => InCallViewController.m} | 0 ...ontroller.xib => InCallViewController.xib} | 0 Classes/MainScreenWithVideoPreview.xib | 44 +- Classes/PhoneMainView.xib | 1537 ++++++++++------- Classes/PhoneViewController.xib | 557 ++---- Resources/0-actif.png | Bin 0 -> 5173 bytes Resources/0-over.png | Bin 0 -> 8319 bytes Resources/1-actif.png | Bin 0 -> 3432 bytes Resources/1-over.png | Bin 0 -> 6702 bytes Resources/2-actif.png | Bin 0 -> 4790 bytes Resources/2-over.png | Bin 0 -> 8058 bytes Resources/3-actif.png | Bin 0 -> 5111 bytes Resources/3-over.png | Bin 0 -> 8422 bytes Resources/4-actif.png | Bin 0 -> 4844 bytes Resources/4-over.png | Bin 0 -> 8055 bytes Resources/5-actif.png | Bin 0 -> 4853 bytes Resources/5-over.png | Bin 0 -> 7975 bytes Resources/6-actif.png | Bin 0 -> 5843 bytes Resources/6-over.png | Bin 0 -> 8932 bytes Resources/7-actif.png | Bin 0 -> 4278 bytes Resources/7-over.png | Bin 0 -> 7562 bytes Resources/8-actif.png | Bin 0 -> 6016 bytes Resources/8-over.png | Bin 0 -> 9272 bytes Resources/9-actif.png | Bin 0 -> 5808 bytes Resources/9-over.png | Bin 0 -> 8947 bytes Resources/add-call-actif.png | Bin 0 -> 7123 bytes Resources/add-call-over.png | Bin 0 -> 7259 bytes Resources/cancel-actif.png | Bin 0 -> 4152 bytes Resources/cancel-over.png | Bin 0 -> 4384 bytes Resources/contact-actif-add-call.png | Bin 0 -> 4396 bytes Resources/contact-over-add-call.png | Bin 0 -> 4596 bytes Resources/contacts-actif.png | Bin 5953 -> 3684 bytes Resources/contacts-over.png | Bin 5968 -> 3879 bytes Resources/contacts-selectionne.png | Bin 5890 -> 3538 bytes Resources/decrocher-actif.png | Bin 0 -> 8288 bytes Resources/decrocher-over.png | Bin 0 -> 5127 bytes Resources/dialer-actif.png | Bin 19389 -> 13951 bytes Resources/dialer-meteo-sortir-actif.png | Bin 0 -> 5797 bytes Resources/dialer-meteo-sortir-over.png | Bin 0 -> 4243 bytes Resources/dialer-over.png | Bin 16675 -> 12044 bytes Resources/diese-actif.png | Bin 0 -> 5204 bytes Resources/diese-over.png | Bin 0 -> 8617 bytes Resources/etoile-actif.png | Bin 0 -> 4479 bytes Resources/etoile-over.png | Bin 0 -> 6148 bytes Resources/history-actif.png | Bin 5743 -> 3451 bytes Resources/history-over.png | Bin 5727 -> 3590 bytes Resources/history-selectionne.png | Bin 5715 -> 3336 bytes Resources/micro-OFF-actif.png | Bin 0 -> 7257 bytes Resources/micro-OFF-over.png | Bin 0 -> 7314 bytes Resources/micro-ON-actif.png | Bin 0 -> 5999 bytes Resources/micro-ON-over.png | Bin 0 -> 6005 bytes Resources/pause-actif.png | Bin 0 -> 6120 bytes Resources/pause-over.png | Bin 0 -> 3940 bytes Resources/raccrocher-actif.png | Bin 0 -> 10375 bytes Resources/raccrocher-over.png | Bin 0 -> 6061 bytes Resources/refuser-actif.png | Bin 0 -> 4368 bytes Resources/refuser-over.png | Bin 0 -> 4507 bytes Resources/settings-actif.png | Bin 6964 -> 4430 bytes Resources/settings-over.png | Bin 6992 -> 4702 bytes Resources/settings-selectionne.png | Bin 6869 -> 4298 bytes Resources/speacker-OFF-actif.png | Bin 0 -> 7302 bytes Resources/speacker-OFF-over.png | Bin 0 -> 7394 bytes Resources/speacker-ON-actif.png | Bin 0 -> 5857 bytes Resources/speacker-ON-over.png | Bin 0 -> 5859 bytes Resources/tchat-actif.png | Bin 4738 -> 2485 bytes Resources/tchat-over.png | Bin 4746 -> 2623 bytes Resources/tchat-selectionne.png | Bin 4695 -> 2426 bytes Resources/video-OFF-actif.png | Bin 0 -> 7625 bytes Resources/video-OFF-over.png | Bin 0 -> 7602 bytes Resources/video-ON-actif.png | Bin 0 -> 6063 bytes Resources/video-ON-over.png | Bin 0 -> 6074 bytes linphone.xcodeproj/project.pbxproj | 340 +++- 73 files changed, 1377 insertions(+), 1101 deletions(-) rename Classes/{IncallViewController.h => InCallViewController.h} (100%) rename Classes/{IncallViewController.m => InCallViewController.m} (100%) rename Classes/{IncallViewController.xib => InCallViewController.xib} (100%) create mode 100644 Resources/0-actif.png create mode 100644 Resources/0-over.png create mode 100644 Resources/1-actif.png create mode 100644 Resources/1-over.png create mode 100644 Resources/2-actif.png create mode 100644 Resources/2-over.png create mode 100644 Resources/3-actif.png create mode 100644 Resources/3-over.png create mode 100644 Resources/4-actif.png create mode 100644 Resources/4-over.png create mode 100644 Resources/5-actif.png create mode 100644 Resources/5-over.png create mode 100644 Resources/6-actif.png create mode 100644 Resources/6-over.png create mode 100644 Resources/7-actif.png create mode 100644 Resources/7-over.png create mode 100644 Resources/8-actif.png create mode 100644 Resources/8-over.png create mode 100644 Resources/9-actif.png create mode 100644 Resources/9-over.png create mode 100644 Resources/add-call-actif.png create mode 100644 Resources/add-call-over.png create mode 100644 Resources/cancel-actif.png create mode 100644 Resources/cancel-over.png create mode 100644 Resources/contact-actif-add-call.png create mode 100644 Resources/contact-over-add-call.png create mode 100644 Resources/decrocher-actif.png create mode 100644 Resources/decrocher-over.png create mode 100644 Resources/dialer-meteo-sortir-actif.png create mode 100644 Resources/dialer-meteo-sortir-over.png create mode 100644 Resources/diese-actif.png create mode 100644 Resources/diese-over.png create mode 100644 Resources/etoile-actif.png create mode 100644 Resources/etoile-over.png create mode 100644 Resources/micro-OFF-actif.png create mode 100644 Resources/micro-OFF-over.png create mode 100644 Resources/micro-ON-actif.png create mode 100644 Resources/micro-ON-over.png create mode 100644 Resources/pause-actif.png create mode 100644 Resources/pause-over.png create mode 100644 Resources/raccrocher-actif.png create mode 100644 Resources/raccrocher-over.png create mode 100644 Resources/refuser-actif.png create mode 100644 Resources/refuser-over.png create mode 100644 Resources/speacker-OFF-actif.png create mode 100644 Resources/speacker-OFF-over.png create mode 100644 Resources/speacker-ON-actif.png create mode 100644 Resources/speacker-ON-over.png create mode 100644 Resources/video-OFF-actif.png create mode 100644 Resources/video-OFF-over.png create mode 100644 Resources/video-ON-actif.png create mode 100644 Resources/video-ON-over.png diff --git a/Classes/IncallViewController.h b/Classes/InCallViewController.h similarity index 100% rename from Classes/IncallViewController.h rename to Classes/InCallViewController.h diff --git a/Classes/IncallViewController.m b/Classes/InCallViewController.m similarity index 100% rename from Classes/IncallViewController.m rename to Classes/InCallViewController.m diff --git a/Classes/IncallViewController.xib b/Classes/InCallViewController.xib similarity index 100% rename from Classes/IncallViewController.xib rename to Classes/InCallViewController.xib diff --git a/Classes/MainScreenWithVideoPreview.xib b/Classes/MainScreenWithVideoPreview.xib index 4af39bdd9..813695dc9 100644 --- a/Classes/MainScreenWithVideoPreview.xib +++ b/Classes/MainScreenWithVideoPreview.xib @@ -1,14 +1,14 @@ - 1280 - 11C74 - 1938 - 1138.23 - 567.00 + 1296 + 11E53 + 2182 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 + 1181 IBProxyObject @@ -68,18 +68,12 @@

IBIPadFramework NO - - - Dialer - - NSImage - dialer-orange.png - + + IBIPadFramework + 5 - PhoneViewController-ipad - 1 1 @@ -107,13 +101,18 @@ IBIPadFramework NO - - - + + + Dialer + + NSImage + dialer-orange.png + IBIPadFramework - 5 + PhoneViewController-ipad + 1 1 @@ -121,6 +120,7 @@ IBIPadFramework NO + @@ -379,12 +379,16 @@ 0 IBIPadFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + YES 3 {25, 24} {25, 23} - 933 + 1181 diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index efeb3a2f7..794697522 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -43,6 +43,455 @@ IBCocoaTouchFramework + + + 292 + + YES + + + 292 + {80, 67} + + + _NS:9 + NO + + Video + + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + video-ON-over.png + + + NSImage + video-ON-actif.png + + + NSImage + video-OFF-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{80, 0}, {80, 67}} + + + _NS:9 + NO + + Micro + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + micro-ON-over.png + + + NSImage + micro-ON-actif.png + + + NSImage + micro-OFF-actif.png + + + + + + + 292 + {{160, 0}, {80, 67}} + + + _NS:9 + NO + + Speaker + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + speacker-ON-over.png + + + NSImage + speacker-OFF-actif.png + + + + + + + + 292 + {{240, 0}, {80, 67}} + + + _NS:9 + NO + + Add call + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + add-call-over.png + + + + NSImage + add-call-actif.png + + + + + + + 264 + {{0, 67}, {105, 68}} + + + _NS:9 + NO + + Pause + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + pause-over.png + + + NSImage + pause-actif.png + + + + + + + + 264 + {{105, 67}, {111, 68}} + + + _NS:9 + NO + + Hangup + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + raccrocher-over.png + + + NSImage + raccrocher-actif.png + + + + + + + + 264 + {{215, 67}, {105, 68}} + + + _NS:9 + NO + + Back + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + dialer-meteo-sortir-over.png + + + NSImage + dialer-meteo-sortir-actif.png + + + + + + + {320, 135} + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NSAwAA + + NO + IBCocoaTouchFramework + + + + 292 + + YES + + + 292 + {64, 72} + + + _NS:9 + NO + + History + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + history-over.png + + + NSImage + history-selectionne.png + + + NSImage + history-actif.png + + + + + + + 292 + {{64, 0}, {64, 72}} + + + _NS:9 + NO + + Contacts + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + contacts-over.png + + + NSImage + contacts-selectionne.png + + + NSImage + contacts-actif.png + + + + + + + 292 + {{128, 0}, {64, 72}} + + + _NS:9 + NO + + Dialer + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + dialer-over.png + + + NSImage + dialer-actif.png + + + + + + + + 292 + {{192, 0}, {64, 72}} + + + _NS:9 + NO + + Settings + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + settings-over.png + + + NSImage + settings-selectionne.png + + + NSImage + settings-actif.png + + + + + + + 292 + {{256, 0}, {64, 72}} + + + _NS:9 + NO + + Tchat + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + tchat-over.png + + + NSImage + tchat-selectionne.png + + + NSImage + tchat-actif.png + + + + + + {320, 72} + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NSAwAA + + NO + IBCocoaTouchFramework + 1316 @@ -53,8 +502,7 @@ 1316 {{0, 20}, {320, 400}} - - + _NS:9 3 @@ -66,203 +514,10 @@ YES IBCocoaTouchFramework - - - 1316 - - YES - - - 1316 - {64, 72} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - history-over.png - - - NSImage - history-selectionne.png - - - NSImage - history-actif.png - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 1316 - {{64, 0}, {64, 72}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - contacts-over.png - - - NSImage - contacts-selectionne.png - - - NSImage - contacts-actif.png - - - - - - - 1316 - {{128, 0}, {64, 72}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - dialer-over.png - - - NSImage - dialer-actif.png - - - - - - - - 1316 - {{192, 0}, {64, 72}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - settings-over.png - - - NSImage - settings-selectionne.png - - - NSImage - settings-actif.png - - - - - - - 1316 - {{256, 0}, {64, 72}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - tchat-over.png - - - NSImage - tchat-selectionne.png - - - NSImage - tchat-actif.png - - - - - - {{0, 408}, {320, 72}} - - - - _NS:9 - - 1 - MCAxIDAuMTkxOTQ1NDc1NQA - - IBCocoaTouchFramework - {320, 480} - 1 @@ -282,18 +537,17 @@ IBCocoaTouchFramework NO - - - Dialer + + History + + History NSImage - dialer-orange.png + history-orange.png IBCocoaTouchFramework - - PhoneViewController 1 @@ -304,18 +558,18 @@ YES - - History - - History + + + + Dialer NSImage - history-orange.png + dialer-orange.png IBCocoaTouchFramework - + PhoneViewController 1 @@ -324,11 +578,9 @@ IBCocoaTouchFramework NO - IBCocoaTouchFramework - 5 @@ -343,7 +595,6 @@ IBCocoaTouchFramework - 0 @@ -361,7 +612,6 @@ -2147483382 {{0, 431}, {320, 49}} - 3 @@ -369,16 +619,192 @@ NO IBCocoaTouchFramework - - YES - - - - - - + + + 292 + + YES + + + 292 + {160, 77} + + + _NS:9 + NO + + Accept + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + decrocher-over.png + + + NSImage + decrocher-actif.png + + + + + + + 292 + {{160, 0}, {160, 77}} + + + _NS:9 + NO + + Decline + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + refuser-over.png + + + NSImage + refuser-actif.png + + + + + + {320, 77} + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NSAwAA + + NO + IBCocoaTouchFramework + + + + 292 + + YES + + + 292 + {128, 72} + + + _NS:9 + NO + + Contacts + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + contact-over-add-call.png + + + NSImage + contact-actif-add-call.png + + + + + + + 292 + {{192, 0}, {128, 72}} + + + _NS:9 + NO + + Cancel + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + cancel-over.png + + + NSImage + cancel-actif.png + + + + + + + 292 + {{128, 0}, {64, 72}} + + + _NS:9 + NO + + Dialer + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + + + {320, 72} + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NSAwAA + + NO + IBCocoaTouchFramework + @@ -432,10 +858,10 @@ YES - + window -1 @@ -532,31 +958,28 @@ + + 53 + + + YES + + + content + 50 YES - - - - + + + + - - tabbar - - - 56 - - - history - - - 57 - - - dial + + mainTabBar 58 @@ -577,10 +1000,127 @@ contacts - 53 - - - content + 57 + + + dialer + + + 56 + + + history + + + 111 + + + YES + + + + + + + + + + callTabBar + + + 118 + + + video + + + 120 + + + micro + + + 122 + + + addCall + + + 121 + + + speaker + + + 117 + + + pause + + + 116 + + + hangup + + + 114 + + + back + + + 123 + + + YES + + + + + incomingTabBar + + + 124 + + + accept + + + 127 + + + decline + + + 129 + + + YES + + + + + + addCallTabBar + + + 130 + + + cancel + + + 131 + + + contacts + + + 133 + + + dialer @@ -593,7 +1133,34 @@ -2.CustomClassName -2.IBPluginDependency 11.IBPluginDependency + 111.IBPluginDependency + 114.IBPluginDependency + 114.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 116.IBPluginDependency + 116.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 117.IBPluginDependency + 117.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 118.IBPluginDependency + 118.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 12.IBPluginDependency + 120.IBPluginDependency + 120.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 121.IBPluginDependency + 121.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 122.IBPluginDependency + 122.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 123.IBPluginDependency + 124.IBPluginDependency + 124.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 127.IBPluginDependency + 127.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 129.IBPluginDependency + 130.IBPluginDependency + 130.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 131.IBPluginDependency + 131.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 133.IBPluginDependency + 133.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 2.IBAttributePlaceholdersKey 2.IBPluginDependency 38.CustomClassName @@ -630,6 +1197,33 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + YES @@ -675,416 +1269,9 @@ - 60 - - - - YES - - ABPeoplePickerNavigationController - UINavigationController - - IBProjectSource - ./Classes/ABPeoplePickerNavigationController.h - - - - CallHistoryTableViewController - GenericTabViewController - - clear - UIButton - - - clear - - clear - UIButton - - - - IBProjectSource - ./Classes/CallHistoryTableViewController.h - - - - GenericTabViewController - UITableViewController - - header - UIView - - - header - - header - UIView - - - - IBProjectSource - ./Classes/GenericTabViewController.h - - - - MainScreenWithVideoPreview - UIViewController - - YES - - YES - phoneMainView - window - - - YES - PhoneViewController - UIWindow - - - - YES - - YES - phoneMainView - window - - - YES - - phoneMainView - PhoneViewController - - - window - UIWindow - - - - - IBProjectSource - ./Classes/MainScreenWithVideoPreview.h - - - - MoreViewController - UITableViewController - - YES - - YES - console - credit - creditText - web - weburi - - - YES - UITableViewCell - UITableViewCell - UITextView - UITableViewCell - UILabel - - - - YES - - YES - console - credit - creditText - web - weburi - - - YES - - console - UITableViewCell - - - credit - UITableViewCell - - - creditText - UITextView - - - web - UITableViewCell - - - weburi - UILabel - - - - - IBProjectSource - ./Classes/MoreViewController.h - - - - PhoneViewController - UIViewController - - YES - - YES - address - backToCallView - callLarge - callShort - dialerView - eight - erase - five - four - hash - mMainScreenWithVideoPreview - myTabBarController - nine - one - seven - six - star - status - statusViewHolder - switchCamera - three - two - zero - - - YES - UITextField - UIButton - UIButton - UIButton - UIView - UIButton - UIEraseButton - UIButton - UIButton - UIButton - MainScreenWithVideoPreview - UITabBarController - UIButton - UIButton - UIButton - UIButton - UIButton - UILabel - UIView - UIButton - UIButton - UIButton - UIButton - - - - YES - - YES - address - backToCallView - callLarge - callShort - dialerView - eight - erase - five - four - hash - mMainScreenWithVideoPreview - myTabBarController - nine - one - seven - six - star - status - statusViewHolder - switchCamera - three - two - zero - - - YES - - address - UITextField - - - backToCallView - UIButton - - - callLarge - UIButton - - - callShort - UIButton - - - dialerView - UIView - - - eight - UIButton - - - erase - UIEraseButton - - - five - UIButton - - - four - UIButton - - - hash - UIButton - - - mMainScreenWithVideoPreview - MainScreenWithVideoPreview - - - myTabBarController - UITabBarController - - - nine - UIButton - - - one - UIButton - - - seven - UIButton - - - six - UIButton - - - star - UIButton - - - status - UILabel - - - statusViewHolder - UIView - - - switchCamera - UIButton - - - three - UIButton - - - two - UIButton - - - zero - UIButton - - - - - IBProjectSource - ./Classes/PhoneViewController.h - - - - UIEraseButton - UIButton - - IBProjectSource - ./Classes/UIEraseButton.h - - - - linphoneAppDelegate - NSObject - - YES - - YES - myContentView - myPeoplePickerController - myPhoneViewController - myTabBarController - window - - - YES - UIView - ABPeoplePickerNavigationController - PhoneViewController - UITabBarController - UIWindow - - - - YES - - YES - myContentView - myPeoplePickerController - myPhoneViewController - myTabBarController - window - - - YES - - myContentView - UIView - - - myPeoplePickerController - ABPeoplePickerNavigationController - - - myPhoneViewController - PhoneViewController - - - myTabBarController - UITabBarController - - - window - UIWindow - - - - - IBProjectSource - ./Classes/linphoneAppDelegate.h - - - + 133 + 0 IBCocoaTouchFramework @@ -1105,41 +1292,89 @@ YES YES + add-call-actif.png + add-call-over.png + cancel-actif.png + cancel-over.png + contact-actif-add-call.png + contact-over-add-call.png contacts-actif.png contacts-over.png contacts-selectionne.png + decrocher-actif.png + decrocher-over.png dialer-actif.png + dialer-meteo-sortir-actif.png + dialer-meteo-sortir-over.png dialer-orange.png dialer-over.png history-actif.png history-orange.png history-over.png history-selectionne.png + micro-OFF-actif.png + micro-ON-actif.png + micro-ON-over.png + pause-actif.png + pause-over.png + raccrocher-actif.png + raccrocher-over.png + refuser-actif.png + refuser-over.png settings-actif.png settings-over.png settings-selectionne.png + speacker-OFF-actif.png + speacker-ON-over.png tchat-actif.png tchat-over.png tchat-selectionne.png + video-OFF-actif.png + video-ON-actif.png + video-ON-over.png YES + {160, 134} + {160, 134} + {254, 144} + {254, 144} + {254, 144} + {254, 144} {127, 144} {127, 144} {127, 144} + {320, 154} + {320, 154} {132, 144} + {209, 136} + {209, 136} {25, 24} {132, 144} {127, 144} {25, 23} {127, 144} {127, 144} + {160, 134} + {160, 134} + {160, 134} + {209, 136} + {209, 136} + {222, 136} + {222, 136} + {320, 154} + {320, 154} {127, 144} {127, 144} {127, 144} + {160, 134} + {160, 134} {127, 144} {127, 144} {127, 144} + {160, 134} + {160, 134} + {160, 134} 1181 diff --git a/Classes/PhoneViewController.xib b/Classes/PhoneViewController.xib index 60f3013c1..f73195a6e 100644 --- a/Classes/PhoneViewController.xib +++ b/Classes/PhoneViewController.xib @@ -2,13 +2,13 @@ 784 - 11C74 - 1938 - 1138.23 - 567.00 + 11E53 + 2182 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 + 1181 YES @@ -52,7 +52,6 @@ 292 {{254, 0}, {66, 81}} - NO IBCocoaTouchFramework @@ -91,7 +90,6 @@ 292 {{0, 1}, {255, 80}} - NO @@ -127,7 +125,6 @@ {320, 81} - IBCocoaTouchFramework @@ -137,7 +134,6 @@ 292 {255, 20} - _NS:196 @@ -151,7 +147,6 @@ 292 {{0, 81}, {107, 66}} - 1 @@ -181,7 +176,6 @@ 292 {{107, 81}, {106, 66}} - NO NO @@ -207,7 +201,6 @@ 292 {{213, 81}, {107, 66}} - NO NO @@ -230,7 +223,6 @@ 292 {{0, 147}, {107, 66}} - NO NO @@ -253,7 +245,6 @@ 292 {{107, 147}, {106, 66}} - NO NO @@ -276,7 +267,6 @@ 292 {{213, 147}, {107, 66}} - NO NO @@ -299,7 +289,6 @@ 292 {{0, 213}, {107, 66}} - NO NO @@ -322,7 +311,6 @@ 292 {{107, 213}, {106, 66}} - NO NO @@ -345,7 +333,6 @@ 292 {{213, 213}, {107, 66}} - NO NO @@ -368,7 +355,6 @@ 292 {{0, 279}, {107, 66}} - NO NO @@ -391,7 +377,6 @@ 292 {{107, 279}, {106, 66}} - NO NO @@ -414,7 +399,6 @@ 292 {{213, 279}, {107, 66}} - NO NO @@ -432,100 +416,9 @@ - - - 292 - {{160, 345}, {160, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Back - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - clavier-01-160px.png - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 - - - - - 292 - {{0, 345}, {160, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - startcall-gray.png - - - NSImage - startcall-green.png - - - - - - - - - 292 - {{0, 345}, {320, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - {{0, 20}, {320, 460}} - 5 @@ -539,6 +432,92 @@ IBCocoaTouchFramework NO + + + 292 + {320, 66} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + startcall-gray.png + + + NSImage + startcall-green.png + + + NSImage + clavier-01-160px.png + + + + + + + + 292 + {160, 66} + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Back + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + + 2 + 2 + + + Helvetica-Bold + 18 + 16 + + + + + 292 + {160, 66} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + + @@ -663,30 +642,6 @@ 158 - - - backToCallView - - - - 161 - - - - callShort - - - - 163 - - - - callLarge - - - - 164 - statusViewHolder @@ -703,6 +658,30 @@ 151 + + + callLarge + + + + 164 + + + + backToCallView + + + + 161 + + + + callShort + + + + 163 + delegate @@ -753,9 +732,6 @@ - - - @@ -788,12 +764,6 @@ - - 5 - - - Call-short - 35 @@ -851,18 +821,6 @@ Address - - 160 - - - back - - - 162 - - - Call-large - 165 @@ -875,6 +833,24 @@ Erase + + 162 + + + Call-large + + + 160 + + + back + + + 5 + + + Call-short + @@ -925,7 +901,7 @@ 5.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 80.IBPluginDependency - + YES PhoneViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -998,268 +974,17 @@ 169 - - - YES - - MainScreenWithVideoPreview - UIViewController - - YES - - YES - phoneMainView - window - - - YES - PhoneViewController - UIWindow - - - - YES - - YES - phoneMainView - window - - - YES - - phoneMainView - PhoneViewController - - - window - UIWindow - - - - - IBProjectSource - ./Classes/MainScreenWithVideoPreview.h - - - - PhoneViewController - UIViewController - - YES - - YES - address - backToCallView - callLarge - callShort - dialerView - eight - erase - five - four - hash - mMainScreenWithVideoPreview - myTabBarController - nine - one - seven - six - star - status - statusViewHolder - switchCamera - three - two - zero - - - YES - UITextField - UIButton - UIButton - UIButton - UIView - UIButton - UIEraseButton - UIButton - UIButton - UIButton - MainScreenWithVideoPreview - UITabBarController - UIButton - UIButton - UIButton - UIButton - UIButton - UILabel - UIView - UIButton - UIButton - UIButton - UIButton - - - - YES - - YES - address - backToCallView - callLarge - callShort - dialerView - eight - erase - five - four - hash - mMainScreenWithVideoPreview - myTabBarController - nine - one - seven - six - star - status - statusViewHolder - switchCamera - three - two - zero - - - YES - - address - UITextField - - - backToCallView - UIButton - - - callLarge - UIButton - - - callShort - UIButton - - - dialerView - UIView - - - eight - UIButton - - - erase - UIEraseButton - - - five - UIButton - - - four - UIButton - - - hash - UIButton - - - mMainScreenWithVideoPreview - MainScreenWithVideoPreview - - - myTabBarController - UITabBarController - - - nine - UIButton - - - one - UIButton - - - seven - UIButton - - - six - UIButton - - - star - UIButton - - - status - UILabel - - - statusViewHolder - UIView - - - switchCamera - UIButton - - - three - UIButton - - - two - UIButton - - - zero - UIButton - - - - - IBProjectSource - ./Classes/PhoneViewController.h - - - - UICallButton - UIButton - - IBProjectSource - ./Classes/UICallButton.h - - - - UIDigitButton - UIButton - - IBProjectSource - ./Classes/UIDigitButton.h - - - - UIEraseButton - UIButton - - IBProjectSource - ./Classes/UIEraseButton.h - - - - + 0 IBCocoaTouchFramework com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 @@ -1277,7 +1002,7 @@ startcall-gray.png startcall-green.png - + YES {106, 60} {108, 60} @@ -1287,6 +1012,6 @@ {60, 52} - 933 + 1181 diff --git a/Resources/0-actif.png b/Resources/0-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..465a3c9f68d30a29cda706ebcc1b8d0831d538f9 GIT binary patch literal 5173 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 literal 0 HcmV?d00001 diff --git a/Resources/0-over.png b/Resources/0-over.png new file mode 100644 index 0000000000000000000000000000000000000000..9431f0fbd683fe2e2ec9af7c6af4f13126be21d5 GIT binary patch literal 8319 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 AGynhq literal 0 HcmV?d00001 diff --git a/Resources/2-actif.png b/Resources/2-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..0de47b0bbd8815739db625a28113e57f537c1db9 GIT binary patch literal 4790 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 MSPR2P`ff4*1NVbt`v3p{ literal 0 HcmV?d00001 diff --git a/Resources/2-over.png b/Resources/2-over.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c462bdcae812d727f66dde4327df9d20b541f2 GIT binary patch literal 8058 zcmbVxWl$X5)-DY04#C1OKya8DoZv1&LU4EYAuu=t0TSFTct~)E1PCqxf(LgC5-d0b zn@i3)@45HKSKp7@Rb6|p-RpUlcXd_2(^OX^z@@=OK|vuy?|Wmyd;~4T`k2o23m<*~P-nM$5*++Sg;yMhpc7&DKF%-%DTZg{YOA z3y;NL9Ui!g`y(0!MNAUzZeitQ;{~*|v2$=02mSuq0RlQ$i-Yt8)WB-)vNrY(N`9U; zul&@tt^Ay3Z$xc__13j+R2#mh+?^lzv1 z)ii;!Zk{$k0Uj{76<81q6ol|V`1pl{gt&lEFa*pChVnw7+z=sAKBy=d4E)apdbH+g zZ7ZrJr|=(JkCHgZ-pk8fl$Y1X$A`y#BJ!653gv#(;D-6SdRf4^U13cB zFv!`!tUMjuy&T+Jfqxk-EZtsviGv~|kKTxCcse{5#ll(6 z&FZy_jjNZkoH*$536HgdwI~=O42D32_`yO@u%IvmBCQ}RD0Da%P~!xtmhT z`F#0b!()(0Bx}iTXfrIwf&hI+yPd_d`w zv`EuhlzDhTx%n09*n-cn+G@S)*SJi`=8g5%OqO2iURYb;v&GuaExQCwZL3|rF-dfC zQs%z(B7N-BuHwREG6IA!;mA%*L(MS*F%qz`T60~OPIiYuajS@jmzn=g0ryEtv^3yb zIjxpOX$~c2XdRkQy}|)c2FmzGxF%nQva)Ych*>f&X~!M%3~PhQHVx^fu70PYl2DhB zVK31->aKrx? ztKn72zUxTMu0u*jUJqo+?x=B=8rgeGl68)epFy2xm8>Z}0cRZyffeITH<*3M5*O+Ums1ku7(_~0#LVDNKJ~v0_%01wHyb;0QV1_`jF$^ z2kQePhG2+?fAMZ7#$y{s7o~gDq^AWJh^NHg=MfI@Ws7xUsO8q&5DJE1eotR5(CPBA zR~9KL2V`uTU(DzgG55duL>Q5XM_%R^XMTn^SJ6Vm(TruaND`QjLyv+!ZeML)68ds1 z*3T8)TUYt0gz$2dgGoy@97lC%lfkgO;R+(kS{gt6{IYJ*Ig~N0zkHlrN68%3YJ~^mhqcz@GTd*d zRX}IkE-Bb)08Qi1vFNwJgcf<>dk$aV&LPv)K``Xg<05Ici7d zHXkVP8ES^Zx(FqQKW^G^5c2l=QdK8m6Lv}E;}d8iu=RwA^~->3PX0D*OfnQrTj~Wa ze=6456EzyLhTX9)g^r**HX`?HR2s(+d}7EFlI0>+S}PeVTberaZPgT(YTcWDx~VWQ z{*jI3PU<#--79qm8O1Nm&ny<1EoMQ8skckfk;>|E47@S49UGg;Pfd~ShSlta&>NZ` zgKKJzqxJnfyUDeM_uK9~ylw*x8(-LOiKO_&p+ap3S4*CJ4#5#^=1FdL(sbCKB1|evRKymaqIJazWg~);`E8l9Fv{oHRKH zwHEW7XiBzbV%u#zx7#g)70XHEPErdGYpdI1*2yOf}%nq&V1T!AW5MfLc?aG^-c7f2|nZ|%P-o7m)1s$^Zy?qPC{+e*1 zDMP|YqF`Q-pXycnl65C$=STL*fnohJUutZfMlMFQ$gs`W*89e*o0-E7)i-x;p=8gK z)o|%D0UjZ+5LhqjXkzIH&%q@0)ZV!(${?5-2pJ&L?pL?Vay5}`eP27yU75l7Ejnl7 zXSBNZWPw!=4<##%kcJ@TjkdyiwpC1iCr~glid_X~)wz}g%p@-Pu=R+QRF7(D+&FiYQuu2JHKGr&BC?r8F4EM#S-3lR7cSq=6n}F;)%{$Q^tqm)Z(CzM*L7Hi>Na9@{?t$7&()T0JbX## zK0l_@ZRtmK4MjKZ*->9^*>Fq`mZyG0F^|p3W2K#lZ;~pl^AWp;jA^k$Dxw_0wi^nh z1}bL(2Wgs&%Ya|i@*_GVn;zyCo_Tzd+M(xPku?ob5^6WYTXBZ=BQN#y@`_;0<{I^# z7JOM)mQL@d5_Kj$%BLXqlx!c;m>8ilx|X3Xl!{9Fj+(!BoKunRpK$EUtwl)Q?P;QH z%w|9FsA?wineW?h)+6c`kKb&4$n`mqZ?d?OGrN;Txf~VzRLK#uITq+(;7}0m9Tw*k z5q47OoIssE0Jivc-9;Q@=EcCzmzfuU^G%L4IS?GgXJlE&wswG4r6Ti;vVdq>pu$1-3iwJEtN~VPv0~Y zgRol5fVdAo5yp(8M(h8VIAPyJR?F+R$18>$@NK)%)1P&igUkCZROH^0ewob)lv?(URvsuXhi*3?Rojljhh~ zYS0&J5I=Fh(*HK46QZj~{e*U5q;=%wn^*;mto$uLVU|8d)!F4&3u{cUysiAAR??L; z4h^Zg2P&N;YLI*`CGA3Vmum8)$uxaCFQp#tb0_bCKqBu74pcKBhi18spmYe9HM`? z?+3coQc_=f=@Oiatz0cMyE!UT=@b+CiKsiqM7Yv>H9Z}BbKNf~%r2b$p}Z$7SVoxK zX{(8?E*%pW=y20qLPi?4Iu*Rtc|iJ0j-Ga5=I8%ijC_ zRgz?Sr8OE=HAb1N=rSEZF37DX)${}{C%wymHdSK6oY}P1->1(8SVA&^9$(zKsI*R+ z{#M1%40d9Z!|ZMttM-xj0XKaE8GQv04u+kH**=^O zH{NRPGaZ5 z^O6_TU1k#_L|dyzX|GQwA#deMUJZS~p<|z*JLA#D5dYkG^V#YlO2}trvNf%zcUTwL zT{ZqgZtcfUnXJ5_&Mg$6a`#gT>qWthFLbz5jlaQ*2ffkfJ^~|uBt-eD{NCgHAWq1o zdYsfX-Hgy!qdqAs-jXQVaJ#=D{v+eFsJ3eNJ1WXawuVMT7-9(YV&mx-)U^qv z{e=1gYB-}vUX9&X`C6U;Ny=;qNsVj#wuE6Qs|bGTbw0CS>t3~($;66Enz*)N;y0G7 z@15gH(c}MMRFZEj1PR9=X{tRA|uWNfP$M0By;tu6U9$=DUr2NISPBo~EN z%}dTw5`ZOTx85dw?i!4E@5lc`?4{{y#*8`x^W-P|)@hz`;Xj{T08cg4+MZPS=m>r$ z*>U=nmGAeVpkM_5X9E>&_Rl9-&d&2@_NG;AV5)TM*IhKx(zt;_jp#Qbs+c^g=Ju3k z&=vnqQTQ?B3k_3c{=i;(w}aidwnbw)JBqTefFY>c<`Bsfe7Z!)KEKArMqQ-Y8>!r(nQ9suJk{!=k(=A6NGqnnB8(fdZPT@FA zl5)IMvuWKnGsOybWr~v%sajf*Deq5E;tcrGgQMF0q`1jmaZxPnXcBBCNDBn3%%$Ovfb= zxYrhe7((=uJhNB+Rr{jqBUYM?`U6@B(r8Gx-E{HEy)bxa_j6(FNBV^C%}KacLD2W=*ZD>TxeRXvvCC&afvn zC?WC(u&!i718@>Rl@kDYN#=V^as?A|*YO#bsHd1W?Dk|&UXx)}9X=zZ>-P@mOXKeI zBp-s3o6L}$5H~L!^01ecuMZz-CCQih2HS(nSy;IH?oZl$`OcnF#z+;UF`7!p`=2Pk zlPS=h5Rfj=#HPay?<~+{LnjQES^M|G=*~tCh?FUq<0u8Z|M-c8{LcCzKK*)5>mwyR zs82g8TuD_8^nj;()HC!=#L}Z(6MGsEhl3?{*DJp^!)0wdo%C)HLZqMtG(SILnyJ-s z*~hpd>B`^LM_SCmmvq}L2FLdzH3nR|4!G6Sbhnr93`tcRcyS1hDh$|8}tI%wJ4Y6-4!0|Z#1vH+C*uj zM4Jf-=!p15y9jgM^m7zP8%Ud>6CpT7y=-f!3rH49rCv8rey~q7R@Ohu2W6CR)c`#rX#D6KY+Vl!6LHO?nwcyBMP~?{54utrh16 zU+h#-sW*X!G&t(;9Yj7hI`a;|99=9=!+2XPgM*4dfr+RFJjon^5?5V`g6C0PF7oN5 z2+qj&FLb~-L7 zWK;}C0qH6-P!iUY`AqKWu@{H_uf1uCc7HAj4ep-N1nlfc4@u{tja@S`(wYxhWqWdy zh@n^6>&Ce+4TZE3w)FbKIY@YpTofk3eTP{;e81$GzfJX-4@UMr&2j9=9H7!oeLzAG0=+RhAps zd5;|A(jMKT0?-VuT)Fy0?8m>JPWfmqKpC@7sY#2sr(10yOS^>aEp}r#AHm8tu-h4H zkV0M{n_joOMs32qNtb5Xq|7(b(|qO@t6G^SUVpov=eF#>JECZtdKaRUsu((YF|9IS zmU*e9K1W_P+iwWw7iC<@$)vcE%q3o-r6a@Lj0;)RLw&dbFFi^3iI(2!*oyb-H$Q0z zv3l@-o<`8`fxT2FZ7Z-1kx4J!?I1KI0W>P+-YZ<)+$*juw=~x3{_)f^0%`t=Egfub zqKO}6tDhv>J2-EEN>HfbXGfQn7HJ-qpJN23?k~K*n_fL~ETzwSr+2?TGW7JTYbjxl zDy>kQl8&i^s&FBy4^;*0vai!~68^`U9Zwv6C@n92q0zh9kM#I{d+a)^!GQb`mY|F7 z8&Ja=RPaS|+TTL^>2550EwxN+by4`0atgWwOwZ+TH1cSbq7;6-TlotLn&X2L7N@+6 z!hJ9os7Wv2ejQDWi!joeLwV49_pZ@$)j}-&K;$|5>VZf_=uL!R8rgJnQ&{MbGAbjl zK7&Xpb9D}_Zt8iak>%zn^GSL$|66ARk;+ExRCaRJ3T`nr^eX0Ml^aZfDrxc;OX`}W zFTpW+*_|sd&7B=Ke=`%lg!@kRHNxMfmNFC z^54yu19rk< zs)_0OCw9y~4l1gRi2US|=Cb|wwMRrzytD zVn(h`3Gs{uC7ErGGQ=N3a~-tWvVD6`5UWXo9lD$1Ec%rr;Ho`s?pb<(NYGtsGK^|v z?-g0?9MqH+;*m$9j_x{b!9+I)KLU*v+8E|>g$I}OA12R4hHC~sSz7U|dERWYle*?_ zw(QONx_(FNV9u%d6`Hsea0t5N*JW+&uoE0o!{{y#W5A$wEmG=IFcO^QEfnCz*A?)& zrUhvpRinNnikb6Z6ez#6H)6YJzKLqT9_(S=QKxUNk}FQGfvXi~UO;JmesI1d=6`fX z8VwxJWr(3b8M|3ERCWBj;Fmo654JaZGV`@rYUSIM*a!2CflC5{aFK_bRrL`Q@#pwa z739PN>_zMCO0`SB}SSu1?|T7h^olu~#;)s^&P z-wn2lTFd-;I$nW-PXr>AOFo0kZBvH!!xpwjh@BVg_y7FT#P%ge)z&#-w+%n(+ z!Pyb8Y*%?4<)fn1=s}ZMK{g0kecn$>7#umZN3*1!0Qp zEM`YN-df?vY_!ap%IFV+<%&H{$SPXD@j6^SebJMhOP=fC_;c zQXX-2yki@fVW;yZo0CM`>@df^{`3=Yd9Kx$?GQ@hkSMtmXDWYymnY*_ zPNB|c*1B7f2sDhb8)|9(MTUMfg1;Xt8!A8g%W&9i%P;XzhmS5w1xF3Uv7}|!RA|J~ zF3{qP>@g?|HZJCTjk(u+fY#W?%At1NL8bnK1Gs=MKO`e%)@JBZuzQMM$iKgCKd-#( za9mElrp(uUsp0ZG;Bc*&P?$h4&}cv~0QpjWyjo!Ql6*fNNp;YbbVfxVMez4;xU#&u KT$PM@=>Gw3Z>yyM literal 0 HcmV?d00001 diff --git a/Resources/3-actif.png b/Resources/3-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..5a489c4934c4285208892cacb6b55e58b8fd2cbc GIT binary patch literal 5111 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 literal 0 HcmV?d00001 diff --git a/Resources/3-over.png b/Resources/3-over.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5aa87d54e854f8cd3b80a3ae937867e92dd69b GIT binary patch literal 8422 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 CC}Z9L literal 0 HcmV?d00001 diff --git a/Resources/4-actif.png b/Resources/4-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..fa788a74584bd531db23d5c9383f9127a6f197ac GIT binary patch literal 4844 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 Q9shsAYU-hjG^|7Z1*H&yiU0rr literal 0 HcmV?d00001 diff --git a/Resources/4-over.png b/Resources/4-over.png new file mode 100644 index 0000000000000000000000000000000000000000..1ac846c18cfe328dafda59336dc0a9393acea78d GIT binary patch literal 8055 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 literal 0 HcmV?d00001 diff --git a/Resources/5-actif.png b/Resources/5-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..023eee43b282e235b025410bc176e2944b68546f GIT binary patch literal 4853 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 literal 0 HcmV?d00001 diff --git a/Resources/5-over.png b/Resources/5-over.png new file mode 100644 index 0000000000000000000000000000000000000000..ea9ffcc1536cafa4bebc923c14cbf4e108478ea0 GIT binary patch literal 7975 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 literal 0 HcmV?d00001 diff --git a/Resources/6-actif.png b/Resources/6-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..5404d14ec95fce4ba677b1df3c38c9339592cd77 GIT binary patch literal 5843 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 literal 0 HcmV?d00001 diff --git a/Resources/6-over.png b/Resources/6-over.png new file mode 100644 index 0000000000000000000000000000000000000000..3184169473f279c4c4a31ede5c33982052dc334f GIT binary patch literal 8932 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 Vk|gRvQ+NL)U~HXGcWk`l{sUH;WnlmS literal 0 HcmV?d00001 diff --git a/Resources/7-over.png b/Resources/7-over.png new file mode 100644 index 0000000000000000000000000000000000000000..003f5b43ff40dbffa5f491003e5a64be4798ebad GIT binary patch literal 7562 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 literal 0 HcmV?d00001 diff --git a/Resources/8-actif.png b/Resources/8-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..a3c0d8033c2fd05a51b44cb489504728ada97352 GIT binary patch literal 6016 zcmbVQbyQScyB`VZM!Fo3l9(Zfjv<8^q`PMbVVI!=RJuWsMp7gNr9%*;TaXq7hAxp3 zBqT4s-}`>|-nG7U|F~zZbIyMDexBcxdq3-(=!bB1GGZoT002OysiC5G^Pao8-3f04 z0JjDfE_rSUMlV$pFMYIwmyfLn5}<@Y+aWnLQMQgqJ)|wd&wT(X3jp9cI2)LFnZUHA z?a?S9+dn))z9`I%Gyov0;ES=fcR_k_*dZOA-Q<9K&22yqXM`NkSR4j|VW3DSXN@Nw zNc|^p1N$c~_EHF-f;@+;uk;N73h8Cb;fr#0^OW|L1OA08eKYkcK;*bCffknk6B_#zoL_lDWFi1ogEFuV&lol0{27x&KzJNE{ zJP;1jdMavv>$;)jfKFas7-?Z)A0HnfA5kH+hodl9N=oVvhKPvZ4TqqopPQGhub`VJ z=RXK4NKbnYXN;FK+KuB6qOBd;+e;33W9h$KKw)68e*?RD{vD{BkO}+RVuZm$AYl~h zk6(XrdwS_1|J#iJ$n9z1hd~PKAwALF9`-l+aNzt$_$GG$x1v9cH`Yk&csSoA#nx2? zZSRdjx_N1;$N_Iwgb>aMX%H9!0)r*RK$0RL2?!Xhqy~jbDMKaIB%qQYDJAef82?FD zMMVN6r2-LyNPtzqU{x?g6m%o1ETJT+tgI|0qV|uhrkkgit(!gaAHB{udR4&Ul2DK+ z=>L?JhI$}vz0e*8Xte7;74Xmr?S=MqLSs0f`r;fgTYG1>KlGpU{L5Pvq=)lkBtp#t zjpFz#zS7SBK|cs01(8w%D}hD-{j9piDcHRg-TtN;L-Doqt71K%0Dl$1pKJObb2)4MMn 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 literal 0 HcmV?d00001 diff --git a/Resources/8-over.png b/Resources/8-over.png new file mode 100644 index 0000000000000000000000000000000000000000..7dddf83e9a1fa3e8fdd2dc18bc97a0d44a949dde GIT binary patch literal 9272 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�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 fLF+yvPqNpT-7)cPjc5BpDt-Yz*YFBHoDmALA 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 OSzAL-y;99K^#1@`VssAx literal 0 HcmV?d00001 diff --git a/Resources/9-over.png b/Resources/9-over.png new file mode 100644 index 0000000000000000000000000000000000000000..521e759b54efb446f06e5021c38c684932e7aa7b GIT binary patch literal 8947 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 literal 0 HcmV?d00001 diff --git a/Resources/cancel-actif.png b/Resources/cancel-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..069a5185d23cfc2f913e510438e6aea455c5c0bc GIT binary patch literal 4152 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 literal 0 HcmV?d00001 diff --git a/Resources/contact-actif-add-call.png b/Resources/contact-actif-add-call.png new file mode 100644 index 0000000000000000000000000000000000000000..566556be6df4f0f2b6aad9ab5699d6fc91cb62b8 GIT binary patch literal 4396 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 literal 0 HcmV?d00001 diff --git a/Resources/contacts-actif.png b/Resources/contacts-actif.png index f831d291f2344d141095d85473c5c628d828c7f3..93088dd3e2feca179849a3174c5e38a3967500d0 100644 GIT binary patch literal 3684 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 literal 5953 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 diff --git a/Resources/contacts-over.png b/Resources/contacts-over.png index b29e27096fd08a67185105b04482726208e1c948..2ac5159cf3b547891b4723a9aa0274f3fdaf6f7f 100644 GIT binary patch literal 3879 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 ZQC9+SsOIBn0?_1w40TO(-fG*U{s$}YfT#cf literal 5968 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 A>Hq)$ diff --git a/Resources/contacts-selectionne.png b/Resources/contacts-selectionne.png index dedfa55aeee1803bb0530f5965b15222e79bebd8..58ddc4b7d853f9a7f259a34c4bbe5c1f7694943b 100644 GIT binary patch literal 3538 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 b<&c3tC_+ZC)4zuP{FT<%L8IPi*@gZOC9& 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 EKT_rmMF0Q* literal 0 HcmV?d00001 diff --git a/Resources/decrocher-over.png b/Resources/decrocher-over.png new file mode 100644 index 0000000000000000000000000000000000000000..a867303e8dc81430970ad0ba92603f93b351f97a GIT binary patch literal 5127 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 literal 0 HcmV?d00001 diff --git a/Resources/dialer-actif.png b/Resources/dialer-actif.png index ceacee8fef9838474202ffd8e37c27812f2de05e..2e5cd10bcc91523198193857f079f894c69b6ff3 100644 GIT binary patch literal 13951 zcmV-_Hh{^AP)Nw2Rn^^Z zUuGXkGn&z6OCv85GLnsLY#aMQ7_jkYb z_kEWU5nj&6$3O8YdhW~_tgWBN=H?a#gCWkYt!3wXy*}2@UjP8Ct}J72ZZ9E-ppRkXATGo4>Cb$Y?z{g1+;{&2c;d;YujqR{e(XBj`Px_Ej#uA~H^1qP>?$Dk z@c2)^^?rKfvB&ZGFMfHd&k+#1cFZ&EsNTo0{w2kn_zbUL%(LX7=fr`^UI-*7i>y5S_= z{bPTRT?NDh#~=LRAJhF0d<}o|xi5@e{RRMi3kydH0S{oVNapM4Lz3J3td^WT4;KK{vj@z~=}*1jhU19Z1Hv9q;_ zIF4RYR=bcA^9xIuTUdhUwQApY;`(Fwp6`Ame&#(t#l9^8@#(+$41M%tpTu8%{8RPP zpx4F5`E&4xgO`Pm@3q=kUfqwGxrN&Iyz%vS?k}5HH8WaXl=p?8Dr`A^`imzw_-sjDP;CzrtSDfcT>ie31U)FaH`3 zJ^ZN6Ohk8k3!59~3vS`1J?eh@<(UV^ak03(in)a)FvhI0jKB50-+fsPPxj;Q`3Dmr z;-(u;g7e+q*Vn)KFdlyNG3z;hIKcUHFCYy3J)Um@?J*!205G=a5@U7$L9}OPt>;gk zIF47Jx^>sr9}I?g=Ja!u0piYk-gL=Dgi-{XB+^P@hX8X%O?(7JkQ6~|aV_x$b+#=IIJ!u88@_}&wT@#@0{1ceD? z074%K10V`O!vQGp!L%C9UoZr;P9~CrwK}8e7aY9R0c&-@ycW3E0`oe^YYhg5Z=T!4 z=bk->zk2LBeCyn133$7kJlAVs-+{xBj%xu0gAn}E0OA#=UON#WY+|eyJ1ME zeVjjc7Fw%|kOqVW&&BuOa2Vfr@(6C;zmNfdkp>OApnexL>;i*c#Ud!LcAM2u`I{AA zXPsGy*+uZ#dGOfyGM!8ph2z60pY&RNDoPcB`F zpeB4TyYUsL_EbW+t&SBu+Z*Sxvo$S0VPqE&5ngq02|sq~dVJ?KtKf`-F@S<0FzADJ zHh@95GO6{G&Pq1G^uS2}<}>r)ORMJp&Rq6}&p&exzyH8vxc8~EBh|GFdt-Kf0gEg9 zE1=RUHj;J^J;gl(1Y-=Y*8&%^q9QJ=pGDyNyOIb*gnO=8#oxdEdfc{uG1KqV+X8KG z0Nt&enka#xV))eqqiMp&fg=B$&o4u)><6D+087OEW9PT={x3a(zj);Iu7QzyBGPdx zhIttJAg!+)KrqhXx?UyY7lk3tpF1|>dKU&L=NzjC4#6#jz)5R_ zVX!B;or?wp;~b9bf%765g22bd`dR1+k(&p?@x>YZ~0$D^FVGvxD`nV`SI9{s)hC#oJ?ad2Q zONG0SuHcvNxDm@8*9^?gCTQ)s+{D*RE-S9>D_V^t&*hQpA@&^xIKz$~;@{l+AU;yC zFD3)U-24(|=ZlFltrg-hz;06#y9R_~u^9%v-o&0nDis{g@Say4#}D0j#0>nP2W+eX z!JtMWpg|(MbkqoIbs!HP179$)lmGMZY5c2Ceig%58EG-0(K$Q6U^tzjX+9twLp;qNVc=(Kf;BuwK?RL_4lm<<-}OrD zoAFGv@a(fdziVBwRoi7UHBu+G%fLV*xGt?4p+OIN^E}Y%V0mEyf9Dm~VRPW)q4lkT z3TYbG(Dxyw11X){{c|wJrVav51qdNz;Y$G^ib8B{TmXU0DAhbDrz+lc%TfH?Yp#bB z4Cw6uYo`GfTc@x|Rp4c!Mo7iRgYrB$GxK=U@k3Z>x%k|(YuT5uhOq@>2m>FE>lGF& z=iCJMrZ6%m1_Waaj@v5bD`ISIoCgsZ6xTfR*Z7C8IffrRdB{B9SOYfKOct8iR(p-y ztx+Rr1kIJNM)dXu5c=SYE4b~zGHzU%$ETh?3q@!g-*k)v--p*K8v2|IBPAv@GA9Ov zH?3;YL1=%7yN<5nw|?k#@N(JBrZLxAV`qE2Fs6)iYu0pEfZ#$@ zjL5+E;rqj}Hbd%7{QRlwaQnV_P#l7tdk%=g(Ik{7Hb23I$)V!Fqh|6;gKe7(LJ=4! z0}}O=e)N9&)}y%l$P!3tu=VFbaaf)Bnw1HvPJTA*mWe4}w{~)~b5swS z24G+eFp!gIyO9>zxiCQd^h2Ovh}Rw6hu?VfDL{|j+%yOMUawNJARRe2=+$UL2qD3_ zEZk;ydmE(nSTz9&D3;mxex{(MP$Bcx(bcME)Z zKW^B!fQ~Eih12K98kr106h-j7b|sG6a>R(C zjTgW|-!e(8)&Q)n35(yb)YJZv=bnjp*$QP#b3erGC~|j4R!;|rsUl>?Z=@R7YK%6N!q%wf@)VU)vnGL%^RUH-UwYr zZzQ=_b@~a=_682jw(uKozAX{`CbCyIKT0VCrDT_o!fIghs&tSAw^0)rRWZ(pB;c<7 zb9mjs1(4R@+ZQHU*;lk0!5B4yJyat!Mq1<+M*RE}pfJGeui1xppSrFfk?Q6t@Q2Wa zv1Qht7F9rSQ5dl>2iH)@ z0Dk_C8*p^i1CcKNNK3>x7!C_Rn)9j~D$BNmIX@z=Xv2mC(R zu$Kxk^M5i}jE&M3lruu}X7+^`cwoRVR3+;_y@sXy?zOWF*LkHIWBKnf!~Tp9+}G75 z6Fz-9ni!URa7F;Hn-@6XvRojEMnvD-Z~6ST!jnT~^?1qRO&s(X?pc(W6D$J-OYE@J z)1cCA=Kt2)o502zoaKG^C$GC1zxMI3W_Co~d__?RujLg=BsdpPDy{)U$&d`gaAdUD zaumtU9iQ`X$G$m`R^Z*O+$5KVf@bvyuGr-J{>uv*_ipP-n2;=?!~AQ%^FoYw?U(q`1G0E+W`0ax5q|xN08b2cG5lx~ zrloVUBE)--dAMg$W>y$W#Cd`{5VHe|0H`xhfzQt4?rT zh(p)mz2A8=-u0m`AkazXnd}QWjv|of6}T2$h%EUv0z|1aERN$^q|vB)25&exivw*J zEDFH;J0MuhWro63+SJH}I1!qRMiZX6Q#>c7M)xzKnK2%N!Vq8S0dJTu4jKTgMP|9V zZVPU!UHI(i(skDd0)L1v>}b4gRTR}7fODbwrkS}#xL(W3a;l@lt)G1kXTt!G4>V48 zcxlonQzLr)4A{&(R_7M+)}uxEASs)k_6y)23L!f+5(6G3DX!v;75UGI%lte=|f5|#V_k*Lw0q8e|6q1kb) zy@_nhdof*?t*{7^<^>M~V)xmOh)U-jZ{21%r zHgtCj3oRFKJ9%()Z#7~<6IJ3%oO5tiYCfTqs)=^xZ9~HA_Z#UT!r>_N+z@4)M2%FW z!_=yyJ~vYGkET-{tSRWktP?(s>X;;`HHjLb%{34ae)N^sB(WFDVZzR?Dyt37OU9(G z;W~`OG2!@(#Qv55i$m}vtxcBr#I$OJWo}?`VkS`?d390FjUX2!D|~hW)xq*Owb1lZ z^Pj2+s|Q6H#1rI3CQ&1LdlS0X#d6!l-A9(QSVmo*qpTVk=in&C9-1?n<~^@nYC#i$ zM`29}d6aLTMvWA>4V0TIYE~WT#NF7kC738@Kv0d?C`z0BI2qOv!z*W)m0Ou!JB}jT zG}i{H;y6N-^x{6z=6jbL>289E@B=3gjOMduPRU{~$+Eb$1)_`?W&jZ+fLj(^qb?#p zr>knib9TCPE)vH8obWV`xP<3J1}Q~Fw2z(_S9t#WZ|_hgfWrXXJqLVj8yKhv!+vB{ z4TNg4A$@J1%W$p73i2lX^KY*Re6z37?`@;s+pbX)c7PCo?_3b*h+-H#A7w4aJx~hy zm(SDY8rZ>W@EwPiFzav(_2_rn;u2aDgc!Xp_8mO*zWhlWn9SU2XwtZ8hU2zH4?;zd zQBY+j)zZ}(Xi&-PH+veJnqe(wBWb}(%p+Db^cVwHB=D0flu3v(Ksy{b;Q^;ZU|VOO zEP1S~LRDg5ctwZd7Y=dkbD8xw9dQ|E1j7pfp|5M0V9dTK-nu04OGjNeyn(4T0sXFU zo(O1lz`Qoj^?f|H*-sjk@sTZ9dgPm!6?#m?HCav48cHjuIL12;wQ$RV3ojVLiTzrt zT5WwMV`C|9HqrOm7hLZ5&aZ$Uy&hj%+r~e; z_hASrA-JgR&@XeZ%Ys=}7pBfxRoBf(6Qzs;BeHE`ZI9GQMU1jySQibs5nJfIm}O1! zD~we_-L`9%#rY_|P`#IOR=4o`n$Cfe-^i+}ZwfVn?gogC~;!9N2M((Hb zk^ru!)oa30kE6u_uA*EOcLOu2kqkr4UdOaSttpClsKFbtxx_RDQ)_I|&;$iVWZ_;+ z%G3e@qzTm924lc&tFze$8t1nR2+HZxQptAq@A!;>rUVeBVwbUG7^_#YJ8xu?+(<2L zt`;!U$58BxfodzgXbK8no~eahFtv2Q3nIcD2Ns}7k3d#inqToUm{q)|DQnV%qiqus z<#AlHqgjn;-<=xSR1BM{YM3#q+M;biIO@>EYUFeP3^mJSFtY`{nGxEnl3~@ET#Y<5 zq)ObquBPO8i(yuM9O){2pkq7 z%!E2P|3l7141cigWnd^r_H2f?0xJrML$) zRvq9U9pt#qD*`@${Esz_zueH(pf_29qhBYioUhuu_)i)plRwRP}Ok3cRh|Uk_#i)_r-fCe}bCXNe8l-h00h8G+ z$fb)J!;pYK+?06C=TVmYb*?H{}Lg2na5~xilpR($upuE^s~qe)D;a zzP788k8TqFa?|*-(s3Xi502xShnqe;IIaiR_278s!I;1|`WnCaY;1=HMewuOrd2ZQzRY+5nC??69Z|Dzz;^NB}Z7PHYHC8 zGzqopO9PIRp00Q!UmNhm=QahejM=WoN)6J@`CvG}AdYZn!L=)krN( zuSB+`+&~kmNd>DnVjX<aZH{7>8YEQ88L-i6V>a_w;W`tl4wl134S}UNTU8sPR&}s)1Z0ncT0|ffLoi_0<+*xbs^MBP z@Fo`|{SuF-Vp12~z6m0Nld2KakYFZK9VMYt9=HtM^V*0br%_8#}+z=5_EyRiIyh%#i_Sw|E@z1BHrkc?m_ z#pGDlJQLkD1TaE|u!`?oV==N(m;=Os10qI?6MRT?I-Qd5UCNM_@*g~T{g9-rXJ-CB zPIww0>!n3D3eY(T$jYS7k}r_#%W*@?ZXey)1|IPNf6xcZ7dzDs!07r~Y3y@2_BpIJ zyw7r$6qTyD>c+B?ejtM63?P`TEf@Q(ByzHiu>PSzwIm6qRG?s<^ z-rq8B@*`gzXi%&tWMi3E_PGqda+uc!m-ZyZu1#=8aC6}Xn{t%gvZ00Lgdt}rs0>C` zYI|10nH1z&Cx47La)XTUi}NwgDN);$%=Y>c*I1G^qi}@Yx6Z}5qoc5)Si`lcLS{MY z5IQ{hO_n@Nn*+aa0C+Amm1AYnOg5S<=cFb#dP|4Znl=Ta7R4&|X}pnCvP;Ims9a@J zopV`8`N2*>i;{qhW~FL{Qb>9))QAVdbs{baE;g3YM73Z`ig_5rq97~@s%IM2Fqx zH8L9T+yFEJ5%oW(hN)H7zjaJ4D-x)gsZ}QlO)i3sWq3`hM(Q%i`4D^+>a0O!*btWU zPot!oN?TIDb^RFjN{vhs)Ur+@YQUB^f+hx288D;v2F>5q%mHBxMWCZT#lCAblEig< zt*zwg^2Md5@e;yMRYv~CYgXu`P$R_^OvQ?+2{@HaYGl&;u%D}{ky@!x3mCFD(cB|7 zqPYYEp&P1X{qtPzs=8Jrn&6NiNfAS&&2~s+73q7UMnYovl;6QNF>6M%C@d%o=(HH& zjqLyjrLI*YFDQ;r^&JeUBye(Km098*%L4e}g&1vKuSOmmGJI->Rj^VjW3F8LrWWwS z%j}Y>5n?99+>I2tl(tY)Au23KtSVNcGYp@9pn!Qs&}@XSI^TD!YF7=jJA!0B|O9@K5(g))o9{!0`TcVTqpR zTOj3q&`~$5M~1*q6W+DTE{z)DhVIe}6=Gs=88a?ptkb`)Vw z05JhBvynC~PK}%=fzwJtDTTqHKVk#t-8EKjCu9!Cao|gdFZvF?uM<>O)dRjXZkfv#1O$yIPz}JTyx3#NvEBE$HFiOhYK4j(YG*sPB1B{{H-NMJVfwwIK zGkovW2&4hTxqguC$Wx1{Bwiu2xTHlwFwU~Qo3>-ZVTVDX)b6HyQ@d0nzUCQg$Mm); z`j>fT(`d{`UcZnM=M=ZDDnE(PX(ABm#2BQkzLDi_I4x`*r9e0c3TGmQTU*r$F|@pN z`vFm6N|iQJD>1aBbP>lPP6xnE?Y;FzzyJ~shzM)LFzFJLPzWsyxpYpsiK#2Qn~|ej zZO4Y|80&nFqR5JxI1^`0jEypIwM3&zvWN<4a)zdsMXZ|4ny|$Hvk`9!?_$%p7@%C5 zdQ9C2c2PG10<>cQaVC`zV6|n1rZqrnLuj(Mxn&$WsSDgvM&w4h6!XZc&UKmFr5dU0 zMlmrnHW0X?E#{w=_3p>_iQWDYA3_Fuu^GIy&|Y zVKs$ZEy6Eex9FWr+G3z$t(7HV**l-2#Xvd8PHgflF{Wt!tfd1@!1MiZ1b`YNqR@p- zTUrRE_5&CPIEN2`9Ys(?h{;ZjxfnH4WExtUg*2*;k#4RBBdcDs)Uv3mI!4Czs7p>m zPYcv{r?LHryjeSG>*sN5B>jx$0$MoeMKR9#3M?r-FwH+LErxUs5FpCZysYG5aK^wB zadR%&b|Ioknpsd`RW&sl&+}Nos*<7HorP-1iL9v)l$JQwFO2S#T^x~HS4*+jUwWlLpn}v-h!bT z=ScGb#~f{)?hgw~wIt!{`fhc3>=BJ0>{i+0u#abDAkaZqY2*xoW5<68m8Py?D` zYe>BC3Kc#3w=d~R;WRLQ2Z1JUL_03DaIi6q@WMdBYdJ>kGj61QX`bU;@%BhUXa!BW zFksovJ>0autO)GJlA-o z6IR2$x$pg{*&eW zl8;bZCf-(sJf#{r%px3?Q9WU$h9HyW4H^dTHaDzgT@}5uA|Z#+oMQJl;qIAu^7ctJ zET?fP_DR)JiYQ4)2ta~5SDtCA-*I-WM%2|S1m9|A_ za06>%29tEjY5MKsy5!_vH|hfT?71$$WoG{|W~tu=LsZ(FjTakN5~9E_2?&<8&lkz| ze$Ofw3V(n&UhLjy1-?Ui8%3>D%q<A*n4{;P`A?u6}p|vh->=_0=y!K4d(Bd4NOm77)Vg%g5Ga<)uN1-2U z%sZlDR5p7X_2-`<4;RR(FZ^YteYX+{|1H9Y$H|&vPq`Ogi97_vtovA%y_VFtTof9o zyr_}F=M%%{2hzeDrCLJ}Fy#R!J-R5SR^FBg+p{17zPUBPmIAz%X@Fvk$|?sUD($vR zT0@f7Kn@Tpj-XXs*-745s768vDe*|?;+Qi;s5G>b6o3({>=89-2UY<1qMpMybjK3l zvA5*Odx{S!4?p5=qs7R2{r@?f$GQ^Mf?cX%XQj`di3Hv@;}?=a3p~f2dfdg?$j3oR=tT;1PBPfZ3ZxooQRj{HN#L7$1`LE=uUp9x z|tFC(|k3GD|>hq8Hq(7R0x3wBNun75C?>=tkVBC zaN#GWSQcYpD1?ED!@38SiX(hvN8*l7Sj&Q{Wule5k)SmTC0v~D26$?q;k7)ocoR_Y zQq$5f7#8|m6A?6N6Nk{6kbi&Z4-0@8NeGs7K9LZygKtD04#**fvBr!e(!@w|(`+g= z(uDzJ7>4L~yQ8#GdB=8EZI|q-7;|&;cv8DKg<&PdzN1AJfC&QMy02DYA1+n|qYwg* zL=Fy!pcG*xY~{-W%lmfabT)XkWs%kjL#^>dz;ME&DOuaabCKHyf$-O7x~6ljkXbJ+ z8?_-A4ocFYknL0jv}mmm27bxYU?v{UMW!~kn1?eFhay5ZjO}gvn>+=JHv%hNM*P+s6qk6W8{pxdf)I`Ygpe3* zkTZJ3QCJ8@jR-P8)|bD$nT9{;l`^Czr(rw|0VyS<y*(#wQX_MoyFrmh6r%a6z zIjTucp_(N^L(+_)X0w|y-Dy}&Y8~a$dJCZi#Y`EMzb97;uv>3LbAiz9fQazn=eo(f zNC+uRhSSpY+#mFcs!J)es3;eh$|pEd{T7ytj!_ufNC{(0cz86BAP{cCplKegeYLI|@7e8m*X6phUi9Z{R5Ww!LTEn!QjNu2LGs5NZOLIe29g+5OE1R)dY zkhq)WBaT8uVNmieR5dU~M1?eHDkVyN^udz8j$BFz$AxqpJfzzgDifC&M5Si_4 zH0fhi2eYuIU}0lT*_|fOY69&27+58F)vP*360u0ynKq~uNe_|q(2o>8{QLkinGYdT zcQfgLpPR#BNjhky3fh6^Z$K$sK~o$C#XuFz{tB7ekPaYSJQ#UKN<<1u)0o}vt7;@Q zv}!wDQ8Osg#F4#&jGY8iRvlEMI?xbhwcxBq+Ej_XsgYS1Xlhm?41r_X4gS@cE+Q`B zI1Xf%yI_^Lq>7`8tEsdqT$ksck=B*{90$Ff;$;~(4M0=1Assl5i!*5BY{U_3jqOx* zP%X8kR*f_@KWnhiklz!moErfZJwCD-fMvTP-@uEpTJc>lP{<-}#;6X4=5F_OYGlxw zK_n!e>xcNtj)HVtqb{UlqywvltB1Xvs&r7ga09YD%38&R$YmUb2>gB_ddbr0r4SH~ z1ECe9R=7Wy!COQRh!nN~EO^cYo0^+vZdw<>Ib6?caI+YS?M)e4EfdT-ggDn0YLsGk z6DE}u0@9I5tfYhzR%*7MxS#1*92Jo@>)A?U4xB-k*y}7Sx5}#yR$-bSbM;hJ?4i>_ zC|vll!XKaRLr9}4q?Ds%R>{^41HWPus?2skl`)lfKa`3ga*@h@cN?D98STizO!*2p zAO(RO*R&*78ux_}?(v4`M+z+|;0az}k=FrZ5g`sB#5w6=d1as7dZ>{Q1i&T24SZPI zK;4|bN%;73JOd=Xr<)?4)omYveLTid5nEI2uXRH_7Re;|VFz?SK*R=g;-fB>~rU;iS?bF(z4QbG^aNmPI;L>v7n%*WW-@mK1|m+UdU4 znZ@kFQYH4SwKhAXtzvI3A`MtiiLy?(0+s z!3E*fyoVJQ*YX^CByhi)L6@5PK;=Pd{+eeR-{lVAF{*B@l)P{{miS8O!Y51w-V`*) z9E~@2qKUVs0%Pd6W}&!)FK_zz=z0X#Yr|``;J9AxR!aTuc12x;VNeM*7(g7q!D{5E zafbY{xN-n8x2t?=>}VAujv|C%U__Je;~ue%RiV+697}Dl;;lCUBX4Au2{98BW@-sA zYz#TZ@*RzPaIyLc#Q5$s)_ufkzO(PnAeIi!4i$d)^Z?Rr!%e^-9S1@Ply_=Yag5FL zXA4$u97Tv@do2#HD+Y_>sDhy0&Ss%UQI=NaBjeI>%vJ#Rsaf>2aYZ+Wp*2AG|@!X2(m|7EaFD7JaH3gGU`<-^CR!_DOaEW28@xM;@G2k-UgTsZ$qLRGA zh#K^FDu!g8WXMT~20*AdK~vEUt>ihtvb`u|PD+GM8=nbg5Nco$#n|%0`U#y#T1*!0 zoM*Msl0@rAGhO+Y_1 zl7dhZ?76B&3ZLr<7e1HJn((1BL!6BST(4!k3de<%5<-m1`?E4rt+BItz7myD#bSQDg_#fwJ)+B35w)sfbOR=cNTKn&|4;gE=+H6hj-o+HN?loxMw0@g6Y zM67F@0f-5V&gy$u?FKcl{Km|H6dnTMKoRiavp${*1w5|>*K5IXlMuC#8G$yhDt0#4 zvwg)gc2pGF+dh;Iv9P#29uNuA@&T*VhjqPnAw`ZHFtP@jjG<2)XCvT{h)h!urQu0Y zp{idBU`*qUU`lTURl0`#J!8C)JTtE=JcLXl(1Z`3@o_qqMlxhza7TQHlByW=x)}Dm zCEG8msQ$V`V!|ViB15z-1+2J`6?T=`OIkpb#AqMDrvr|AoF0G}YCu?OyO5k$c9cMg zIyOGq$qGy&puTRz)_El#Lu#rUDX;4B-Qh<4C+g}((ratR(C029a13IFKRp{_gPa5m z#)yo7-MRoFB)oPf_XCqUfJ{P+IGG`1 z_;ko{7kXGCg>$_j7Fr%=U1@0(UT*4vN}muaWiiGvwdyE*la?P&+-$9;4`f}>&VUIF zm;`}gGt~IAwFrIY!fUn6Zhl#;L1r9>yeK>~y<`>4>5QUH@X-FXp zHxu{+I9@9&y3MF#sp?=Ok_NyKGmd8?0ZB0yxkeBx#6)O0vRQS!#MB6zP>uAML?05w zfJb`@f4;5|Ne^DDZPbL<42C!gv3dR+sFZSz!l06@91n=a=>U;NCxw(1apko-xlU{) zP;gcN2r-7UN@6G0*v}P|)(B$-&N!UhHUo9d&nE*0vl@NYzghEn#%$)|c;gTa*N?%` zWfB26Vgf#SA;uSa48rx`dI=a@4^q0dU{G;{&GoZce}_C6#>E`0X3){=t|#o`a2yAY zTg*xdA+faokl{!aQoUwlR;?7`IL=r*VQBt$qap5e`dH-VRywZ4g6BeTc3GrF-Navv zH&Pd>&Z52~5WtXEwj;tvHx#zWjH$5~yd;BZ(%D(UDh~z~V`J@w3O_Q6LPTM>n`xb1 zLgcfe`Sh@vdkufshui9mUN1-ro@;f;GpP|XfoEa|f!0__q{SdIoC;5hW(jd6s*wg) zbO??vafDz{V7PBv;S<|HD2*54W;TNhDP2<>Wt9vuHrCEm0!?ug?HUY5LR@>Ca1n>= zwJJ$4&N-I$9jZtWN?O;XDfT#yk{=Kt3PVIu2q*UON-@MyX>^|_1lq2^tn0ieYJ^QJ zO`7eCAu$BR5GC(C9T5Izo6v^?>AG-TFNyNHS)z(3naeVbK8`|ctiMo6U&m3E2Rk(& zj$9-l0Kl_=f-#1L<^5=NX00}e)+QgXVgrmQQ6q5_B8noc>LG4(e9R?k#1kBzBQfte zFDW(RYhVaw8nrQoZcO;%4)Am=AZ4;QxZ`Gg$V^3~<@>DaT5g>`SE$J}If@8@?_cax z?hPP}q%fPHmyfx{70k{rRs&s0rI1!eTBtZe6h#RjLK94hLL8zYZg9fPzHkMHCk19) z$Lu3@1*wsA?ldtBH6bL1RG@Dw;Hy30$xuK@#{j@}4G&V& zNGc5iB7}MrvR;n}-{>5->OkRo=1sO~P>4%stSZ5pNs*wzf&ilL_&wiL&@5{Q^Et2_Y$Pr)Dzizx#` z0)nz?uvKOEyIbgPZCEEfio!iJ9$z#-q)|=RYgq?CIxZHL_rYs*YQyB2jgdq<&Hn}* znft1gc`X42X$_rIK}3WWG+Io9fv~`Iw)JtEH&i*5u|o_R3`5P}Lu750%>N>5#3s_x z#@y;3HR}+gDB~C)gn^Ik3u{ReFj!SYbO}_11rXO=azJD%#A{dL73tBQnZx|jN=1$2 zRf&-pluU35AUXj@?lsC@*9D0)qT*5Qy{1*)`H4)u0M64U93u&ly_Sn1WR=%7sv!+O zcQ-F26>`-hPKvHCm5QhW;^^f8L?$g<7mn*yI-2BxF}tu-iE@sBQS?kmkEBQTe@-f7 zk|G5IQMMm;rKmTz3r?N^mWJ7RF7!SEM}G2oVHcu|{9^$^97X8uY+~5ku>#Xbg}wJ8 zt~fxX1C%Cl>W+427ITZsaNJgH)-@mGDuAQ_mh?4@&ZVABql74@@YC%gMq3r-Q~M~X z16ISEi^2fC?F|e{tfq=P83eWWcS+~w(2D?wynE^oyWxl~RbK z5aDH34_7Q8@=?w-n%68@9CT*q;k7#xfujj5<5b(UM;Q1BhJ6frU2Al)Y%s=AG!^IZ z+X@gPSJcT$11AfBb>Ox-@Y?N!1%COCC=3t``w0920)JRxE?GYlg-~&PMFC+1h$B}X zATmiHOlHt=oDnr|%waZ3Nf}2;5-CY9U(6Aw8Q3^P9EOOZ0C6~3tpi{>`|l>2#7p}J5K*Gv!_3Ic@(HEz^2JWP)}wH_N^&SKbpX6%RmL;`sVjTu zLKHHYbs$N@;AzN8Pg(486%a3xqdKuMt{$aDb9D%=9z_X3R|nzhaaBTGJ+1=c>M_aj Z{{eY5Aba>33~PVRpTws-mOK>Z6Dqoi>tEP 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 literal 0 HcmV?d00001 diff --git a/Resources/dialer-over.png b/Resources/dialer-over.png index 1f52f79e76b23e6644e775f27a0f5f47a24a9335..bd0cd5a8a59acaffb056bdb3dee64560847d25ea 100644 GIT binary patch literal 12044 zcmV+nFZ0leP)==*j;W#<=B$-T{%<-8_&Lk%uPbRS)+h7dX z2FFW`!E9oY5NJUN3A78OmReHp%iC(ZcmBAy_Nw<@cfSWh^pEpUcfWqsRdv7mE#Ggs zgfWJTS)O`&D?8oOgWkS=3=Itt+fRW4fW1@)7#omUtfoY zh6c=>(T@3Z=i+TvlqMe?8WgDZ(Y#my5Q1Fuzu|-tXsVj*KOWJrT|ez`R9NA9y@&W7Ad4ggTq1Y|{V-cu6^$g%=iQJ^N0NT$+A zCQ~4iG_Ld5uzn2|cXr^*U;Gm?1&9gCPk#0YJAC9Ap4+wqqhn)bf1gr{LN1F!K8r#j z2Se9k8hTC6O;J>+i6m0#4AOP=$Ykmv$#U7xWzuPEx@IF5cXr@2fA}df1&9jd#}EFL z?b*8zFTD6t*{7caAcuTDi$X5@j-GcaQ-@4lJ<^#vWHR+-waA9`Yp{Cd<+$sP+sPCl zBIMtGcpuxd_ciR=v$y2$<#Sn#4G$taHUer{7o>KRBnfp5O=z6fj7)uF$=~hlScpwm zZ^RcqcPE(w1c2|~`y=+$Gtc4Zu@kYsqw5;RMusptJOtA;-c??^tSD$~YDPm-Gm^9E(l#A+ z4NbAXv+3%MxcR2*vE{}a$a@A5|M0DEvqygMYv_9P)1Dn0!SFyIv|<4lqo|1_np@k^ z&@>G|^tylY4?c>o|LHyCq6WlIe)b6a&0|mC;GrW?ZX(7;hA}kQ?+XiSD{uI&w7fy<#Dc{_|&{ zYsD(BHv_9OAP4{uQgw~dHhm`2b@h?&cPv_f)hm`y`1tvJ0VlgpR|bgnS8cAjim)t( zC{08y3xoaVF*Z6}m8U)QCjx-r>qsVb+$cay?6_g6YiLAk+e{xh=Kc)=Ng~z8Vwhv8 zsX}H9mPI4q8ygwM;6U%BLPtNy+=X)%h>$8QQ`{mj8*`D1HxbE=jiQjtVp>Z(nwnc8 z?j;XtC!?v~F+f-r1*PG;Wtk@W&Yy7{#&O>~&r?stvJmgW1r9f3=4?!#ITP*EXW)_r z3o&cX9Hdfi_&0mbTqKf70Dx&2INg296YlCb)7_2klW(D~_dI&fox|ClGd{B-5djTx zUSyKyg)xSqfnMaYqiCNo8;Y6;-B-p4WLc`ox{;+T)>dRPqSRO{F(b<$Bz(e!d=CBR z&w)~F652p$0>(l&JDp0Q>$0U-vTPZaEL)C_uEjOEX(x^y#i7?<$Dub4;P4vtKT7yUu+S+FzQ{NDAKWOFJl`&Wq{x0cSx}vH+L?V@m1kcD|KSqbgTc6;X z0S*WjQUUYkUxKd7F2jbauECO}%ifVN^2nis*tO$D9659lCr=!A)PoITj$JZgf1|#! z3Da7qhd@OwlWW>4Mv7Gf1R(^8WD1h3giORh-#KW-;)FB;V@%vpzg=Iu;R;-R?Ix_< zaK#11G3)Qg23i0h~pn@-m(Q-K5z>z26_IOr}6yOr*Z7a5g#xJ@r1|~0;9RL4VeIu z#TbRIX_GP^lLCaAOohOZ&y8VZXkgr0!F3wBY`*a(-0}IlaWTqI?!OODKK3Xmr62$( zqath`pSEadY({;fKT$@h1yk2B(Uio50ij0t4Eb!f;z+{L3e3-9UcP!YKK995v9O~P z7qj%7K8;5ndH}EP+3oTxUTsmK(^=ox6bTAL)80NnM1i50&ttd}%^>^(4g~5;C*1nk zKgI_>^m}+O$#YLXg`Yk6V-)gv2Nbq%QK<=OoYovNA2d)qS~EZ>Dla_sdDL1F!-M^0 z)s$-@C>Z5F0|0b%Eyic>`aI@ex&ZG*>F?{qz2Es49DMzN6E$$=U8>lGG&Q$|98JqI z$6Z${x3;QRmb&z}26L5RdnNEuB*h=k_Ww$MX69^$HE4WT9y zz7t}MVR&euEa~KefjYoRCKCA5zxXR`xa#UD1O#N>{7bNU-8#IwXE!uW13Fn4j3|(`O8};&@D5DGn1TC$t_=~^&=0zVxOh%ff zO~aaX>+#0^{mA9A{9cL(q}+=!2Gg{VOr?F=oe-&_q+(e>NU|JKL0Ykhd@ftoXJC%c zKmkI~K4S*{>@WWsvu4kkTJ%NRs5sdk{$i zkMv8MjHEU|ME0or@cHI4ydoW|h zOh`n6L?nPR=l+&jgIqQnYFSWJrK}$!m5V9}B;NvOM@KzssGOOg4r>4WZ~n&=7$zX? z(`VqzfA%$G>gsr%i9~!!zgY7DAUiq=<^d2G37P(i0YM}Qa==s+3k6t~$^Dy%m!O=$ zz(A?xe1Ff^{wwCrn?JR>6Op`i7d_Eg`$b;#IiU1+Y zGCa@%wM-NX`BH{LBy0q+B2?NPpT8R`R$4eS+#Z@uG+LoXbQzC z)w9+Zb-@(sD8Zb?xgx^4Xrh*WHB}DC zlEe#by`_b5>tk7#;559!f*k2!N@4Aw_`*iY7&jH=oJa;xQF5P5rEupL?w)Wt`jnKG z&)jh*T3g#7N!-cw6_&-UlU6K%+KEMQjUF}AA`A#g_L>{$nifw@3v@bWLd3YA`pj); zYo9)~ay2BbKKVzt@h4r90VeK!u9a`Jk${zdGJ-c!G)XDh!6u~j9TDuOJ3D$qlUs`F&sS)g20bRH?oC#irU6DN(wPkY=I{OZQthkTmW7re)hqSd<-A_=8?SeF3Z1uA9*PDijL%=70Yy3=R&!vP{wLCzniw zscOR4sKglarN|X8Qi91V(=ZU<49A=hlV{QhHs5&DguyU4Fo2)jZ-aq5szl;p6(jCX zA?%;$OhGLRuf4h#FTc1Q8#Z1QI`+#iZo|vlxAPiMH7Up)aYPdC^{|Cf3tFLoM}PGT zTygcak(%P+2Y-yyr%ob~NQSDRJ(fMBFAQBnKA*?W9=LzPfJmp)*nGo{_{GCNgDfea zmI)A%^Kd(bd}0~~STgA=*OO$~Nq)J22(*Tors;ejN;}xFr-GX9T6!7&;8V9w%2aSq znYjxt!YK*v#kuF>mYEUB1k-iwe|2vpAO`yT0RkivDI`*9-)G%J#~mNgiUsU@We={u z>HQJM?gIeSHB3VynHpC!aNoJp80haq_oK!}A}OO`Fe`YW!i9^4rT zsqM0+!^7T|H%a3)9Y7`J@Fdbcls6sKnn<%`=~7&_{BjVHCU@>njGCZ!or;fxk|2@5 z@CnPZV%RRvMKcDP2=h4+#&mTN203MYY9Y z7?@|NSZUK?FI-1gSLuagEJk(vwT<^a@v0+&t|gb1Jho{Vfy2fxI%E8}h9HFIPB7$* zlI1H_ifpLlu4l}evIu`k3Gxe3L=<;Wh$xA3Tko#kw7F^*vZ%8Qv**o4PxomkiX2ky z?)UyDoO%4o%U7+AJobi-SK+y5o6 z%Z|jDiD-Z@U{dsTlw5h$RruAaC})kWndPsm0Z->g@%U4sXKpxiX=(6Z0R!3 z`Y|748@ayrXMN63RQ0Y?+sj~43m`z};>A;U{Q{RooxC$nk_pc@vCb=Mcf5#SKKxS@3VF{VSO^5c?^{~i@VPI3sbodg&wu(L zwm$JhnDk~5bd=|3T}v**pM3eAngCD83)e*0S(8X6RAC@;M6CSaWDGj?%~KzpH>$4~CR566!liPj3IyYbME?nR+c z5cI6XSviTf8%VMYS&|`13U5JBWZtzV$rv2y$N%|Qz zbno%}BYf;*YlS=t`2t>xDZbhN>R#Tv+R%hVBI&Y%5xfcU5EIn0Fg(zUBZm%RpufMO zy3KKGi8*s{;`njElb#@m8!14*DDxE~#hVO~%mNtZ%$rv;yJw$>mo@aM_n5r0U1K#k zI8c%lcf;qPzYs-_^EV|~0s$~M&>v5U6Hl%rXeuJi6Tloz1Q4g{s@gJJblLM#eW&p+ z{{FZoLy9yN9z1ZOf)PxgG2?CVl0(DJgVxxW>+n5;B^^fh2!T9F*uU}~xB@VTJyR9{ zMIeoaDs8h7D=n?9BEcp3`H1+C($x?lx;k)yOf(XPSNHb#4=8biqfAGc`|9aOF6mc9nhr)#%JGiYXyY&)H3mgpU7ces zTsIf%coqO@|~_eD>VAWle@tB~_v6u*2xMQ zl$sy_T51q-+LEcucvJ%mMMwTMCr}8BR<$fxWeoyFR%>?Rv**k~Dw9SrUqB|4@juM| z-PQb+Q-A;j-#;sw*Y5)GsKA2-P>%*AUKEgUEFfA9I=Yrb9=oG!F^(NMjAA|q;%#;c zfq;bIO)ZMnw)UEE5Dq~lD=uUiaZBoAw36f+ml&dwxOzfSYPX4BDxJnBZv7*qGHJ+) z0!5Y~+b>1o|B6BnKF~yRz6T+=X7hDe7qh$0qRuYdBnG4srz4B`w2V!@@$if~EsE)M z9X@^g9kCi>^9@^Y`Kr~tPsKE0nIgtTb5(k=%+x3-Q+#aSfr!H9h&ImtT&rcl%R@vIPY2=2DUd-77ZL2X zOQ+Mg;r$lvZHe` zZvOB`Y6^(lSXR&vER@0w1A=itcsCdg+YHIk5DdWR$OzhMl;HaDy+6R4$B#wdOcn(S z_a`Tg9mQAv?CWT5X$c*-P$=L#-~N`b$faC0mJN#INBRC(U;XpHj6COKM-Jl$|N1Wx z>}kaJKJts<=;1>s6!Q4}Pkp*3_cNc%!4fk=`8XcJH!F{|8H^XmFiJrJBkG7ZW*4~* z#`tzXwE)D~o-=s!_%T?Pg?v8eRs)NXKQ_Y~)mx^jDhh=Hwm<(YJ`^zvYR}6r@!}iC zJKOz*FdmahB!^G7)4-HjICHui2ll;+$VLbcv zleqc!K2no1y1_wSm&!!Hu2TdQ1qCsE*xAb`vg2DKARY}t0QB{qubH{9t9DGofNAK0 z&@tVA4O0+3f&j8CSe6CTFojt-6M5`Hq2SpklkzDmqCAg!IDY0~ZJ1qAML2hN=Je_K zV~ZXL`z1?)NRt)*wZdPLqCi$u=cOpz^q%fMRg-%O<)Ks$Q zjWr1I_!6R97!2ondTM6x98DHiXyp0I|9@73jD^3IZrsyp%BR+y?(cC|#_w5rd%Tba$=b5bsEOZ*I(hk1{0-{x8NcoyMCV zEFbevU^)${9lO(W`m`wRV@`3g>Tmg`(9wtyLbm@PCRquGiC}bO z1pR$|HG>56-rb5#N4eq{kNOCB{;Z_wKq#XVeRL8TvW7=H!+h;lne9N>Ds-S@+q72)Qkih^P*#BBh zjRp&;-O{GRR)?u{x-xcuJf=e&I~{lIpo2Cp)4?ye6zMflIdt$4@6o0dM3O;>EJhE8 zE9||qt`*mY7ywE7k17!mCc+hAHZ04+u_K48egVxb%>W2gRYfLK=Rt<}!tQS})}znbVoN zn)JH7b>g^iA1D+_hfJmpnYucpGZ~~abx5Z(NTt(AXVOTe_$!%8A(=`+Q54LcGZ$;uzc2FGYu9hU zthsX`OEMHi;V)HzBKr$*IEP?A0K_RxU%%msSXz9`%^&32gYl9$YPm1BNQQ4fW0^Wk zLxZ8~VnZ6>W1sj`)xmJCrw8YH&T>ME5huEkh{Uyi;6Kweog#hGwQQxM#Oj+`oDsM7 zV?-&1WtuQ_9hz1|F`oma6xZFj1-IVz*{Wa6o5zpi%@fB_$&5!^$u~E*U`-4de2nF; zmoYRj7#A=`{;h?bomf<6)7e6yfZZ?c;Elwgb7gU^2Htn&#+vMT{={Ry#gmW!&Y5zb zNTr~vNhpdUW}5rk21bVmJSM|)zLudw_U-S@DO@JBgebeFGP zUz@2n>2&&n+FR_zvE$sKq!v^)DH@rDKZxLvdm}h7#NA@WFtl);o#Q`nA3|0*hPqFk z#H)LDV@fV8Id8oF;UaK;!EN~v#SPhBe_nf5p25J`f>_-qA9 zHX$o241;TvryhT-s?O!X*AIjeXe`E^w7*QH(^#`^eOVr2`}5Cv*}kL2;*=)Jpl z<3D}j?pRR#-+%nyID6(y1PH0>=<&nG30Yu@ya2e%c79WA)n8okk9ck z#o}dICeHSp!7ICWMIQT=T|05M=L{@r!O(aapswpMbe(TfYnaZzyw<|vFN;sz+p}vY zdd@^A^`3nEF%*hLxZO~8zQ9(~GKg%CE>a-NZaoA5{OXZMs-qpAej44UPJvn$2;uv- z%d+D5eC{M${xbBUFZ0U8P#BTi@;^0tu@J$~axaxnJ`ootb1Hk!uAR^(*|RY`#Q6bT z*O40=LvCyg*|9MWj_eq6*(`F|tOq0lDES-;g**rW4!&_9`Y9e75{{OMqE>{iY0xzd zngb3EhR%nP8-@YHTaY8NfN$*IAARfrcR(5oIN^|F5J?uGP#jR$z#x)@LLnbJ8*4nW z@0C{ovBMtkbW@xMIckKE7MR56OKwqW`OreC1zjs5Sb0qdzd+k;C~5)(1pR$|c=(|Q zYv3la@PzrOx2LeSu58pV7z)SDqmL_`{b0#;SXDvvm}J-ZdB-g^H=wQu4rPFE3W>F(5bIOhwaDQd8pzxYn)6^YWURGqD;fxr1Ud;R3DJ;w44;Awe zQ{DuJ?U?8Rr-OixhRBVn000i3Nkl9+?Pl=doNVQ9+C<$5xo1P6r!S!J+8rK zq_T6acsflLH&FS-BM+lc$ip;rpYLFYn?W%Roj33Jq6;fbOfklMX;52B1m@^-n`rwH zY66O?LKS@)2M)Z3=bm}Git1q;rh{NSt5&h;D0h0n;Y*cFr*VgcOinxO-Mt&H??1pd zWU(wLVm;h&Q%u13tYIOb9jImbtb^p)8yuEJLufK}%}-Q;@2}vP4Ml~ba0inx;Hk$S zLw0Ozf{-YooLOm5lq^*ZR_4V_r(rRsqr5GO(qb&ubT~c)CJqYIFz~{2&w@8lX;2g% z`6;p@2q_ZcB`wnkg_;(%y!*quK7`$$5!}x)pB?odmPmX6sBJbB)tTJN0Q8+dj|cC& zx5|!0JaJU1UMD1y)rjl}^BZ{)VU_hGSYSF0Dl#1t)e%2^@Ijn<>m;bf8*vmh;e@l2 z>@A3K*RGHq4QmIn!-4(sCAXq{3DeM_6?1+}5I6-hvZ_K>RVaxBR8<8dz@FVZ@xZ-5 z7}o`+(tO`+Ns^FACd02p5(zOT*!?;oHaF)LM{zT_Qz=eXDYDG#AQb*2*|ibQP!dIU z@-GpMQFtWv|<4O!<@PE@L#_6bu>0MRhFD77Vy%xZFuX=6Q!+1;G0xBjq7gMf|;{t zmn6QPdGbjN4-J%zUV@YIn_F7&!4H45WS->2v18c&{Ih(5Ou%zwCBo;09i7;6^9L(W zUKNY@-v9e&oP6^wo|pndBFQVq)I>6NE2Z4nNXT61x)!1uI3N~uM!HQl&)}75tuvr_ zI=}5H_0%$98U}P-6QC#x`Wv`x*>ZgGp08GQqp|m@{NTIa!R!0?gIX3$(?Bwr=G9P% zB#$m+8Nr>JEz`tM|2ZEZO@lMBQ6e`rw|pb&4N9qSPTYf=rh#;(!BcNZ+*wqFgd8(! zS?KTW#o3-Su>--Tq%wKn-h1)d-dDjGg=rYBZ>1)oC<&3X5az=3-`MZ~EYIRIN}c^e z#{~%I7d)9zDx8o+D&=u71sI5jbrYlhD5YSG;@sID^qxB(YvZS+wEX19_hZk_onVYX z*EOh#1QN*<63L|NOgfD?t|OVxjfPlB(=dEB5aR*_V|)i+-p0qp&^2MNRQUUvNNC>; zCY%?>c=z76UNg1Ax~@Y}R3wsVVJ4DLM3^br9a(n1Lf3u8 zvz($f#ZJW~6hPy&(i(zVRM;kWp$)Bwbh?hC5_X*K&d0W=&JYh*4ls0|Jc+*EUaVfb zZfd0~;Tj%zz$sHSbPbBEAdyNVkxcR`YT-9H4ZLBDu7Zhi@yU}yzG*+!$7by9k60baX-+kEi(hgn$ zrE8F61<7OziDU|DLQvGQ;uO$&O~vR?U&v1|3_W`6Ll_V(a+u9%DoO0l&ctWjCt=2>alQ ztoZy1y;u+qPQoqGf_E5&~BGFq7WtYT_4D^OHdyuX!3y8+1=5LJW1C&uHvJyh3 znoK!Ow{V+Qwz6)Sya={@5w{OCt`{L$Y)*L7GX?+aBE zNhDKgZYGjR$7hJr45p!DsQ-LuI*p-gp=4!wKujASAZ&J04pdod#XOR!jAs&C02Gp6 zYuFB_?Tei0?#AJRZ=j)}0W)UJdQSl1=;6co*@F+@wY__J7nQDqfC$n_fFWTMPtjno zOanuG=X?=`4Td;2vXqdymn@u6`HrfpKHq^moeG+#&w`?;UIaOVuQ=suI#oNo@>zqS zYoOF}0@d|bZp6oL{WKbznl4Hp7>0p|A9@fwckFN;GSf781zIBM`U|S+;~7F=uuKg0 zo(U9)(RQ6hnaaLipWh@Q-dGJ4a{G1zxDl)g3%W86+;2oQ57 z2?zj4Mu374f~J<~NM-6HeGp1{KHlDO#t>%26ul9a$y)_&GqSL=1It&eeAj7=ZO=W2 z-8)~#o5zmxNxY&ejYtHF;uiTRPLYf1>$nPnK`Z7l+JLQ|)dE9R0Z|GR$#e$OT4(sF zYJ1l^VL~W%wS^4^!~RTUUfr_?ukC#W`}ggG z&BjqNONwg*#RY={1Vyymc{;5`l;++lijl!S6mr=}2X(S$A^?a>Sv7Brs`AuqD85w` zOlzGPde1f?jM*i4?ksB#2Hgh=%QE@oUCICSEW3OKIu|d&qOMMKbauThAb9imahy1I z6i1I7#qpy@Q4}qZM38ulF+N7YQ=P7;swkEB_Fl$o1ezO-OI~#f zd-=d~#c8vXWXTyH9aWN_&yHerurFjHYzERajH-j2%&q|->_tkZ(vf2VlIaYlwX{1O z&_3S+43yf@2=BnQOU5`zOrN%(Vj{i+4j>e-+tS$Bh-ob?P!tuj=ge__t|&Zf$YXc@ zxpQZGU>XKSMussmJdEHhL_5t)nKQr5Q?ac$TERO$A*c}~DNt<&m#iBZ>rHA;PCv6IX|a9jbl%7VKL=HPK_vtZz1g{ zK$2u<)U&N2oS%6(1gG;l#x&UU^VraU=#UGGDVnZpWg^0WnEUns!bf)}lCjlN>AD8g zH#LV?P8S&d$iz;idqLvW3XZ1m?4slEoC-9Eg82LpZwg=Xr1D*Gco#pM>W?!`rePpE zI)p-YG!mFxD^x#?IU0g;`|ds*N`0(n>P%N<-t|>-H zS6c2?BS6f5#{l6oBce_)P9#Y}x~>7~`bH#E&cr z9gAcagAOAv1JEy&CAhEv;fA8BGk2mg0xW|>DuZM?EvmrZJ~4C+S|JCmn1@y@gesRJ zKV$GxxeEyhE+FPycz|#;fh57Fl z`LtPpk6@M+#TgMKz0GC(lv-}O-ZbA4?x4yV;@y1#OpNojJ$gIW;Ldn<>E+2TJf$vO zZiyVqyBz@UT9Yvzfbgtn*m09&*`c1?-HM|Y->qw~M;g3WM8SJV!V7C+N&*kf)Ge42 qzlLB_H(^SqG{lrl0b)ujk^c`7l{^{qQAh6p0000YN+qP}n$&Plo<7CISZJRgGd*1il^WoI}aHnc&x_g#- z^;$K*MopxGoH!gbHZ%|r5S*lhh|u4H55I?l zp|Q283!#yzxuqR1@pb24VnRz3USf4tS%9pAu&ITmgqM@4vX`8Sv6r2><&c{?X=SV#cK;BKF_9ermkL z7A`IhTnr5E?(X#N%=Gq7<_wISoSgrW!Nf%OLqX^4Y3E|-L1*Vo@;?$pOr4FLEFD}d z?d=HvBhk>v-qnSd_{Y-!)dgDzS=s+B*v|RC9rfcf1`k6A21a@SgRSj<`t@Jb&Mr!( z|F0SUS88V!PX|*5B~xd6S1042@h~I#ALbw5{eLU^58;nBT=GtqKZ9auBVuptYHMoe zA}PX4{PTw1#L|Qdz{mk$WMpRnurmSJI2aiP#e{`9g@oC~*o4^uoPv!1Bjf+ZE6fTI z;b3AB<6vVFW@Hp)Y&!MNFM6-Aqlyoa}80 z|I5Ezmj4(1V(jc<|7X8Bgc(`Hm^fHjIevmkkduk{zj;mm|M-mI#~6nH1jqjoEdSH= z6M_FJ{_oKLsr>KcF}3^27^k1q$WRT&1p?w#mJ|_G@mO<7+?H1|#2oRQM&S71fB;5= z38#RgS^9H|a8mRIV@@8yWOHh>u;hwCr)w1u1dU0jZDaQd>^i%qg|Vu|9v1Z)EukAw z0D#YN_JRy1f3rE>Joe2y_TD=F?4d-DmOL~1969uE>I2YscsF!NQB8 zrTg{d4syG|9FL(pzmEdWf=qw%Fo3IF73?ARHyko=PqOH?q7AyuJ# z6@)aI#&4+2ke@)ahT!P4vu(GRHbAU87%f{<&7t00zWPwY540%qQ7$ApU_)H0pvJmo z@CQV`+^76c9H|bGyhA962K$Qn<5X%ni1}_#rNWEdUpRbxn~2(4sM5U*bFN&eO4iuQ z&tFV>fIvm9Zb3;T;W~(R;aF8a7gvX0pk^-Cn;39Ja6(wbe#5e>f6QFV`Pt%sa{(dCC zkKf(xvA(|ZVWv1U2pM^PW%!Vmm<9@hjG1r$^@kASr(YBR_#a}Elam{Kfu*6qu7Q_1 zjh(@$*{?KTNBr(cE2;udASy2*t}ggxBJpobdTbOJOMtYvqN=8F{O)|2!9W2TDmvgE zfrJ@_hEmG|jBr&>M+!gVAJLPA)%nI>?{r1s>4W`uc4iFvz=*AGUujL%%hUalUYYu$ zI=}ZLI0M}3zTYOAetdxKre4+bBUAaaQxK-NPA)U~d~g%m9B%u6{i36@V-@yh^Bc2$ z0=N~F)W5(nq%HN}Q}h$ElVPR0z%ng|I5h>tOcfPfEva-sX>hoUD{IHI)2At>G9+hS zxZCXL^gCis_t({ljgk-x$BI5CLNEzQ*jcIgNzg8;H=_DMA}$^zQ39ucO$D&XTG$!# zA7!#)Mqc(daFHA<+Zgf!oVL%)5r#?+pqrQ+E9oc3kkQh?tH6(x#Vk2R3lP~6>PvF& zj^nTO`MhBnv;qyD7O2?k^wU#ReQsa2mKh4V0?D>NzaH;Lp6z#>VuFK{&!?~T>+^U+ zj=5%Pj%0^^?P5>TWwF$dD2)Iv$2ED8m&x1%k+Mj2@W3 zf=Ed*_d{nxEEHg&kRfl)ih`tIG4!nW;t|P2j3W{nV{5hB>NX1>Uwho}79x(Hi>&|p zmOnr6AT+hMwuaaLu6cOUXWeR2;^`nWXO2LVtK*-sNLw|ssILL=Vg!qEw&Jmgr>E(o z!0Y+`b*4U3_-2K!egM?ATtepQ=HeZVhO6!c%$AYK8RpX48GkxMS*h53cv!xcr_QhY ziqSMe=fTNBm{RF(E%6MTR>g#{Kfa?wzs^Lfw{EvdA9rYC3lLh!Zt|71_<$$TknVZ( zQA%t)xuaijBKQnPPwU6t5t$bhlTrnrn=_w^%VSJdl7RZA97S&CXDw+XVFnYKeDys{ z9K7HWWg1r4*7;{;>jRd90&r0aIj3YDS_QE1TIz-|lYIPCHD%T0zeqK!6husH7OV)*|P` zh41X{m$NU3CzNTv7N9E;;AD@d34%2QVi zW})g#YNG@PdTh!KJyjGjbaw?h)B!EMz&HT*!==YZt?pl9pJ2~eGyuA>fp}a-d7S7I zL8rB+Fw?-sW8cEt+rHr%;S8;__`S;de3!BT8;k7L!p4r(oUmtZ)tK$XPvFM+& z9D?gZ(z?3-ZqJWTgxwQK)BEDm@3wiz=+a?yteF&4ry)z^h~uQJ+36>u#f`7Mg5=bT zPm7uJ`FR&WNe)nM{U4ieJJ+Aajo3(X8mPTbS@nVnJwTC|8#2aU<;2;37N*G)}}*?Y|`1jOS)X0c>$? zD@|>u{B!|NeIxm%?K-I6ocV3~)&lf`kFV#z{PM2DH1%y;Jw}H-MzxO`+$MyRhC(yf z%3z%7gnWWV3dMykueN#pMV{dg*_YS1Ao5OpPGn9gl*6CES19n|J0=`wgO&1T6>n42 zp{=RaYU+H-_p{*?es8rHC;#34)W18qe0eaAjm*KEgNmaN&Qs&y&Qb)$4XDXu!0H zB*BgBKDJv5!Fk-2Er5A-bQ&@mHDj5&V_`g0y_MknnSX>BuUu<=FHNWVb+c013x5~F zQ^x?Lcj|Yp0Au*u10#>$=Yiv--T-+unf1^V4Tr6JX2t;d6osVC{@Z$O7YrYvKLLeP zL%Be(+#*`T3sL3?BCb<0a)7vRgmkwUhi{UNaHn*RUg3Amf>{$I!gf;`to#yh^VfQl z{%?vOaZ1EkabiLp$_Xmjh1Q5f2reM-^t6`Z)%AX3yDqc7m{@%*XI>r5yAVo*1Wm`0!c$u{Sro~cgVe7Z!8DjD2 zCAWaiP%-)4q~hOAp;a|@SH+H{aY_ICJ?>#FVbQDSXWmCUciNf1LRu-XfYW% zvy)nOu;gH76)kf!8#vs&R*DLXES_6cF{rNSzbH;k0wq#nu74&@$7sVvNcP){?%(<9 zgyv26Fp0<@TmDAICEx-9B59`NPX$uHonfll>~p_CROLIG?nRqeF7B(e4=5KXXVL-- z`Bu=a#&VPS<4vdB-Ii3Y9F9>121oBWLPTO_2$6xratSYu~gE$I}15pdQiwhGk+C>avfiF_w#<7@7E%3aIgUt?J0K^Ul zR;$kt#m3F4y(JxFLGD>Nn;s`02(i5UDu8i!LbqH(mNEOdO9^^ZrvjMIoQ5JK3sP-aFOHHF0ztodMmmC0c2JqR+bC-Wg=w$XJ8ZTl&w0*%_1EuyV{F;A--_swX76$G?mkbiSiWcdMg5&u8OnTyKHv5MP)R?6U7MV zRI-++xEs)j=0Qv%y*H(i0L+(qyiBvQrw-lnOWYdkw#3e4CfBtGh${44-C`|(J$)w^ zgE+E9k`b~DXybv@m}!B5;e}Rj{h=3Ru7M7-sg$bgWIOo+`a~zpHbwOxAq|KqEV~0g z!2wduu()#8t`oi`tftS3`GMVZHWpYcE)}l${a14}x8{~aZwqUnVpb7z>5T* z>ZNb|e(#UV?AT}hQkc<5T!!!nlYIg4suCLDQ^0Hy9mG`yA;KQIUXH7Gs?%hu@$8GW z<~Av`)jgwmz)xq}8#QSQ2pY~#L)s7hhZmW=$E{JPsTmEshl?X|`4bZ?l8uJ!a*XqF zLkM&Mw!K$FCee#hr0sD72$|8bf-m5=u>p;y={iX+a8)){(MDMfV^Eew+~&ln{i4(l zz)nlvDj>;fWfc!071Z-3xx;Pj1FpNJB3-+?w;mY^<_FLy@zR3*i-uyOZ;qFyH0q@t z8>4fxJOux&#*CHhIM{9r`=2=QqDsCJiQ9A>mC0oP?3Rs{4SPkV74RAA==q6apKEDv z-z@A)W2G0c&n)+OHxhfomY1n2iT42)I@o%-M?d)E+1uG{bb7NVgzPXk;OdEvd##C! z-GPCG4tOtXsx8oyWAh5BA%&LqeMw`eI=aYa;7}%f!i9oZpJ7YBzk400uk){rWde)p zP@Ev7q{Zsp9n7DaT$~M!qpO30isgzx;oMl}>QO|&(3*VpS3Ou;wBYqOf_z$j;yhae zPFRCVYnE|}zb5m8{l3{Jxy`3~z)+qpS7R}On$+-ejwH0)m}FB?kD^Ml38yo9x_JO_wFT`5;X99DIig!|qPmNwbo0B%@55-{IHMi{> zyC7049FYP$=9HjcyqpYhA8#ffQHN{W@PFQP4;W&A%knv_n0Z?Y^G;Ukw+&z4!_*gK z*3!|ndwQle*$s!ty4Jh6xHRNZOD>ftR<>FNjuuveQ2v8Xu-FwHLn5LoerNeH#gUx@%EI3 zi&D3q63~G2befK&cl$k5JjTS7!Ihv5P$6|HABam>oOwWRF&~L-T}mq(4pXM+AOSD% z64&$VgR#~x&v1B$g5}LPuWLttjOxCy=xON`7JvLgX*A7of zHJxPCrcLR`EAPM0x=vIlVt*(@ZL zv+F!5MQBTv$f`bf6iZ=cWfKmsSP>p#a=b)5He*dqI{~jE} zh>Bbp{aT92ui>!U_PXa@%tl$pQBu+@%yP7W_-976qIE=o1`!Wp)mW6~KTmBw7xH6t zOY2GzaQZ8|x2LbDPr9hO`Ekc$wPRCz@E!A{rVIRv%STw`Z4PoOLzhL$3s9hNPF5&; zAHZzm(v8b&qi$YZ&vi05o|fx-D&P*vU@B`89(Y(D>FGruFNEA7Jh2H+54V^XR4B2B z_fJEH8?<5HzEi(y7yk3gZMr&x?+4EYuhasXw3Xpy1aF#6+06`*fpYFs@*u&8M!TB- z3^bBTBP>2!kb1(d0ARYNOD=N4H!XG5^ZLr@Va7Z#pz=iZZtKK{HpJ^UkSPH|kFcYRv>+itlIq0R1a z$ap2kbO`iF78T-Io1G`{o(njCIh%(7gS>(=l0q0gGdbJ*-#=94y)oDaxaG}j_#S>DTOTl9}%(38S zb1c}6uo?Q+y5jKF8;-r_r^zRV3aF(F_W)U!qup!+l^_ay7eOL6C6RRtdPNcT zUP3=e}3}<#(t6*L@RiDcwSjAJJ9QS}T{ob~F})!{WJFh<22c%20jp(RzLA47WP( zc+~ydbEKYJmu=9tE*FTos@SwT^5$==_cUC^!gZ;^{lZW}vs(>jeInr+A}n7Rw5vU= z9+SuP%GNgSx@V-KuAbl9MpvQpcDi&KbaiH9D;OcvW~Ve)y`il|Z`JNyzTtQ}gpn74 zxmh*X?_u?{aow{V!BMb@V+9|O$n}p-@#1nQQ9*($oS!)Vw}I;1rkh zO~w6`tg-)RU{=Q)DWlWUP^NJ;5tbFaN_mU^1~3v$|LQe0D(4(t_S{|n9`dFl;E>I~ z$3%z*qTZSwMaw9(KczSpPAegoHlRvaC>MTYFxxKAVW1=@^J4M3tHu4<4o-ryJh8mH zrMQEDT%PUJ(yS(0I_5=;biO$Du`;eFZfqo5#@l2#wu40a^O@1n~h-cUF`wS}b*O6BJb%-<=d5K}cYAG4OJBSAY!nH5R{=2xYnZxu zPzkn95q3|kxrJ>Y__$3V7bkwzW@*U2$CfFx1RuY6SS#@dlVqq|jEobK~_A-Pdup+Uh;6F->+HfP>O8vX3l?G8yz+ zLKQ+FQ?JWM_Bk-;Jf9rssv_r87q0JC2gNgaAG^N(aQuuY7Q4-1@gk(o1i0M_2N|RJ ztlhVv#E@Q`<&rGz;aH)Vwn*38Mx(8{R*OELj-3J4YFoDO@=aH z(ZT)9tYGv|U9DmWHr%Sl)+#JksyJva<@{-3zC_eYMOZTlv6D1t(_9B(d{agbp!-lT zghqfYicI;Ujz3^ALMQIe&Oe5kI8t;4Te=N z!CRaLAE6kv+MUDks+_7H`)Je)gi6lJ-3^t^f4flR$|y!{LWdB$$++|sRH<;`1w&Lk zJNo;3QR($RsK*_w)iz`#kW@L||1iz2Xbyx)mY-wlDhA3W@8k`xmi;Wlfx@IUo;Wg8pJ+t!bI0Qu|U!QK$+qC$OO z(#{E+Q@CDBU-f^JL_)}oDnst#vk1t@0?_^vo}56!Yy9O19+5uh*OA8X(QHWv4yxIq zO>k^p)s-v%LGuyei@F+nRDllas~o z#06JcWUcup@8Uc4=bWUI9>TazNF=GJA%vF>o~LFW_uVpGMBJAO6q$52chSZ#Cb;%i zRarv}_C8%M%Reyx@xkWSX47!Y?8#LNwu4G*D`8=HNS4ab#M3N?ROJ4W@uq&JH~o03 zqsj{cNnelUbo5y)TR_Z3{#nIJbRfii*!CL9{U9e1k3HjB za_cHS^w4$|*H-qnR`zx_{=s`7*jXcGJLOt@^+M;t$WYZcF*@iOnA zf3R;}C^Ny|CMVpB(c^x7%zgJKB%hsEWmaRf4x~ISwdS-zf`i!8>e5!wY?LD+_nPf5 z)9R~W85AJjPUk*voX^mhy;t?TnCuUWNQkBe6b{tqdFa||W?_4g5u6;$a-83^#77#;aZ#*{ARpx-G6 zK{&z0eSB8v!Z7Hj!hZ^(MNsMd{#kOkU2h0>6Atbd4jMDkgFABbeP1-?EHQ8<%&@s9 zp{0Ay3=Rn2f^-lg@yz+(H}27iXP-vW2nA8>?v5=~_8aMbPP-55r*z|_Ud(8(IwgUx zz-^6`uV@z;NEo1_i>DK2SdQC{ZU8KGY9$~)S(tgD$ukF|ZrFk$ z@{S_-?=Q;Y*(E?OPK0p*c3Hq0hD~IUb3&^A~taf^)7b;aa z+}F0vg2_*MtPns(L?U@*L#@IUJM{$_%v|50_BR#>?_P_@=+I)T7R8XPyVm5Upvi1n z32*Ev$D5V}+pPaSwAkM*7RPQZl~PuwxqHg)?1-!Pu%*&%a2$A3;8<8(U0qx~e0~M- zs!qHZn)*EDYH?dKORxvJD3hCM{|WfrmZ_uEee5us-(6P!5+p$iYG+5d|A*y|R69 zqp)<*mNoOo30&P`=7V)Wx-*vNSoSxi#UGHFrWMV(G05}x8OWiMw$XiUeA{_QdX@Q4+#4_ zExB2gUM_3R3X~@zMX%u8h-lf$Bl6k94~j((zH~$ znSMEqC3mU5-p~CPx?rJfo#0#o4O~t@#EQ8C^(`nt>LIBxTw2*Isiuuw4WMxlcDL`H z*Kd+08jr*0J2wOUoSSxG?IWcEq|DmvYM3+R^%Ys);NR?0D+x;^a4A|Lu_qxo9?*h; zxiZ{kC^+`D8jZ&5ZY!VkHnxYPR(KbD{qhirMs&C8Myw5X!yhOLJ$wL~6>*s6_JLFS z8&vebFi^=4EGtUhhIHyS|5h-$n(BhlD;E;Rd{tHLxCKSSm|ZnwW_C36)QD{a^a?FWsHMV zJiKz?7OmJ!p`(LqFmV3nZV;HFMn)KLmQm1%a*O%&vi?=)Ns_d;P{8%mbw2AoRDL}Q zOH^k8q+3vEV~K9y+!%nU$5?)&iMnoCrcOn+a0b$ze^kLcEoyv!+BvDY=Yy$1r1Xk zUXXH=l0?C&D5xS_Y2B43R&3Hy zJfeDM1fqDJm}rnXP99)bz_8l;0CP>r_I;vRHAQ!q-s9;t%_ zgRz+MQc7~pL!6UK1a+%QK!n-`^M2u}0wTsFS;O$Q$PRK%IMRQKVh{P_Q5|jAS z;5PspYzKc1CTO)ZnE7BMi&MJjpW*N}rfTo&tgl&*0%f@17vF<)(L^dS|dVpI5q+2Ng=cgKzbL*E*3Y zE3244^)44_y60wQY&K(UezQhVLQ><4kYKVR8i_Imbz z{(66YlpD~gM`&1~mRC_#Q&m^Zx3jRZiXlqH@GU7XJ$#(TV)R+5*y~Rm3bm}P^i{-+ zZ2o*4tLWBfyY40Wlgs6M6!j5cC>$=6$x~>u_tF=9SKk2eTI$Le{n?|wiA-KxmmXi^ zCeFfb;PvLx#czZ0!M*_oNi>W!-W-+K8iuD2XXYfMq8dWw9LYRz+2ZnD8!hU`DVOQs z3T^Cu7zYiH>pisZq6*YsUb{H6fYGHVD?YPGhLX{qD<2Sqxi7A8c&TlZ>GVB%7$=JH zcsDdAz&Jl+w^_S;#n6T`+g_aA&^W$KZlP-MVQO*~6xwA7RJrQ7ZzTdtkD8RMsj0cx zB*Ev>`C9$9t*Ka`*cmx)S??wwR5F-O%zlJ|QPNJ%hFpn3d^#Y&%~r zdueJo2;zpfFJOS08wx{12yLm6qPc_{>5b~W-LMu!cp^pOMcj0-&|GuDquT~>!+TVV zjw@w15$GbCWDXP%-t+|bo%@VGybGossLW(koEXQ+$WBjBUiTku*af}2$ND|p`ysee z0{L~_p4CKK;NDYKc9hNh1K%Gp81yQ5rx|b~zlq5+ulz`DYB8@sxe3d^1unb|6$wxT z!C1*Un2K05+_`PyNH4nvL}r z(l76mr^=KBY9xh~{pWTiC8f{fV}}ea3IGB6zC3VrFJf4YOtw-_O?dy8&sf)%O|A{A zRmiqrR9HMVL#2Nkp3kE7v|TQsX|rXI`FMODK!d>^(?oR!UF)WBPa1CDz&;Kzo%&t| zSi=;sFQ#gpn}e$L-WykGWnm|R^P%;wX1yykT?&%<$a+3q%*I=*)$6(RPb zY6;k?04&Ybm65s}*U{^H$=im&K_b{{H`YJ8btl}&2%K@#G1(lqJ=e6DdKwSzNK{q4 z?pMXC*Z!^se|?x_s1?~6S2__%1#k6&b@}w|p@S8G9cvH$^4nV48Rx7No{A8c8hStb z_Y%J!iv6ih@ZCD%9jfX!-IC_muQ@{&YDco$XD_!spDT<<3NwIr$r z0j)W{B4&wP)cTPQ9-df@mkOdrumDZGeUIyru{tKeXHw>MtYswzak6dM~QZ z%E}2k*F{wQb)p>&P`hoTJZ^a((rDn*f22uw&mgy#Q-0?VF5$~(dd=@g`y;S^#M1u`UMjXf|@IsD*WN?5JoN~!+MRZCJRDP#FxvtR^W=Ubl7 z{LO@Jj9oV$O;!lNm*Z&*Zp=M@1%=#>u0I`iW9L~WZM}PFeXpnO`yd2L6VZVscd)xy zLFq9F3YSv-x-ZajCAM^L#WYXh9SmZtoJI8LHTa;2U*q`)XW<`*!r;C;%~;ch4Q=tQ zWflhml$A1a5)=jE){^|N=(mmo=V#~{(Z?ZYUBT+)a`pA%ogx0|~*1parGe@Fw5BV)K=Z-p)Ol74|Z7k8D>Vg|#h zt8mt*@==9#_3{pd?+w5gA!1d3@>sQzo_879qwmS9p`yk6-09~BRyJwXqTVxxY>!M= zNdPaY?pak4%2;g^*E&NN{;Sy%x%eIQSs6W=`A`vDb)p!M(ab2RbD$>Lw3nCM$2|y{ zOz6}Rc1T7VdCj<&B!z@P1Pxmv5j;p_F+?($b_PkX9E<;1EXrTzo6nYYnP?IMZD$9i ziBsN9Rf{@ujVL`kvf)#O!R-`}-AX!M8;QI< zL3bNu7*6_mRe&@A?0zx?|HMTBgD)VZOPrz>pYa$B?FDk<_c<7OPw)Z1N>7Jg>Z7$F zYcC;;Wr!>upI<{8ogim99_I>J5iPzi9**<&I{o{+@?vdir}ch|J*QdP-u(Eyt0-o+ z^Z`MD{j-PhB3LD#_maOzkW4rS(7H;4g_GVJfe69-upM?eG zDb4q_jg`QQ$L?#sgBSXHd}8eDSX3UHE1tmrkJI^ZY!+SQH{FJ?0%tsfA6K8xO%1nM z{kKW&kP+x#GGb?jToY%xD%KuDw2zuLIE}+FnlmQeyuN6Y2|s1+O-#-&2npgEj(DMU+KLSYwfl$5hCSmdb&@0ecj&4^KYdkWhiXb2P%Ka$WWB%r6yDJa+1<=pxN)v zLY-N0__Vnn)372d;4-GCrlzu*%y)6oRPaATiu>%8(n2e?5CP;N-S$KtfX0#%47Hk3 z0aQ%a@m5<-5q5msVDB_Gx4`3V3lrIY4lF@WBwXtgB1kbiwL8yb z9%sfQy7Gj0GG-U2O6Uaa$3Zb+RFPanm57eWZw9kS>c)QsSm?Xo{&E#h)FF!sqr$9S z?th5V&C?nSFXq%X9#dAVdcsw=_6lx{+3EKm^K~^K#)$-IYFKB<*(0_E*TCZG;fEVa z-gi?~7PNayx-v5ay5Dm2IRJ%$XAnp2(}uKrBuQOXdnFpNOe;S7p*@K}L@jdf0Wlr` z5_G^S6<~4D8D%m@6Qah@((<+#9I0R@2!2`3oImv*jnh~!${z(B0dN$M#kiS@Dl}4N z+k#ROa4DiWaft1qdf{R0yLZWXdr%BiOA^S zcyQ{PNqKtdql$-RTdnrfGno4G>~9#wP|@jqzc9Lg1G@0#Yhi^jYNx1wj&*=lXu`^ctLvOk&Q(xfr)D=O|jd()W({UBzD4;&Cbf{a$8 zPa|~EvZGO0FYj8rja`?dP3FeL%*<3QO%=vC%GV@mmM#t6(B6)_U)JoTg1r^Ff@BRo;$Va6{;+_0L2Yd)h+A*f zW50fs`|ka_q&^2FRnXn#v$P=cL6?HJ-yIzG%7CrD4VR`SaGF=ZOH?zHC@`in>fed` z03g!K%UVD_*Tx&d*BiV}37a>vh13J$KfKO)I|@#k>`h6e!Q|1&OxR=pHx;y#5006H zSh1no{X>0Uu&j)rWKE=l@aOl0oeZOKFc7Zn5(@PfC5 zu;;o5D)Kg1)Fz`5DwpLzYp%(KNvFXmY_eA1jP2mB{Jgq$edrCq$H~k*Fl)r_Fk8q@tq=kx1?EqG?~3Y{ElM?NC>W z;_w9Uv)4?s6}15>8yj%ru(BRd00kwl;v<m;RVoi9u`rFUnhs2rj5K$_VU`1eNFY z6#$y2g;bhnew+&hjbQ7k zvB}~d(U~g;D`H~WC^=`nTou)3Zogsmg6Z3GK&4l%#b!xC+D9N)TsAc zrvZj7tG$vw2eTuzS`mZ0p`s)4shzsH5de{T)GjTDQFAJ4RTJg1Etco4*WJARK;BM4 zelTHR=u!me2mu^0(*P2YrF8opF20Z8P=`IyPF9FPDyvwc~q@T2$?5Huak; zd>I>aahxsnf7b?kms6yfR3cEhl)xYwxPePcOZTj-WbAU?Y(tE32wUFQE3?H8oC9h0 z#VhevN2=}ZYg!qF3~`v8VY~CeJ#v@nL!Csl0FbAO^b(g6P4@}Cn@@ZpFEw0l=y5fa zUc`QU$w9?@6{aC1U@Q9{2&oq@?urHJs3b{9WU?tBQ@9VSFbv;BdXhHlU7nj1`8%aH6j#v$ zRxMf0I4RTTZZtTkI)?>_vfrn0A zT{;voX=UU>(dDmtoHB++NXCbnE7&~v&y`ilyBbr9!*BBZo4+kl&}Weu=8gz=nwemW zD=5JTl0yiM;gzR=R7fP)po^QjMP)Ejl~j-|(M6jmS5i*U4F@*cZE12A_sG7{<87Im3;Ju z^|yTXH9R?2%!nkFmO^CJQ9+tEXV(VL9awB-lO{;Wh<3@~)wP)eeN}OtlKh*sYTURj zJc5u@QeegT)%*@#OQm)27>P-+&AdqS-jp1pPQwgyPLwC0ieXdZo>XR%74GQs)4o&M zuMDxOMqjCdfzfBG|N3K*3a)93_H*n386v70GE(7^pV*)f`kEqcC_@8?8dC-TazzA8 zzaa7@B;^^38%QKXl+1V=)ePD^d2T%Z?0?bfu^1oK{J?ob_daKc&4&p{xy?2 zB@0={lN+SBU_^O|1_e@Ox6QLO*mVjf311NDs5x+{nv{6c zc=pl4++hw#bW0;2}vBbIk^j}~DXs2+FypE+qsr^AI#9n^y-G=xL!rc}w* z?6o*bG)RcVYcTk?$?5dm+*~o(LwDY0X{mV+A6{RC;&mV%>-p0v4=sPaw*j}EttE7m z&o5nAjE#xT>s)(_q`=+3)+223MoE^!J=iap35OS*9j8l=UfuRRUu*38`9z(ugn>zf z7XR4#SIo-jurG3V5!4Kf56pio&{e`OpYxtbl2#Ge+e;$eexj$ zJ;+m1c@pPsWmX$>eLt;3JYR=X1!5H>{DW6nj_95`&u%^P3NwRdK4BJOV?_r~4NSGa zlAaz@{dB&lR`Ef!di3hk6XV?G*1ame5s|{ zd2V4@Y-A133u@HE<8cuwxdvTb!-JptXfr>sNP}Dwo!5m)k4O(%43Zd>R4(Ir8Z62< zo%+ff9&_JX{p*fEW%`V?oJA@mVKo>Q39UC?Awa4E_#+jDf!Y#uLqCexLv|{ zafy(wr;RW`oiWwK3=VUVj{?4P4^TT^VR$z^uHZ({~4h6n`#wy2xwiwc>oMQ6J!uEqKj}3C9F#p$-#dS5K54k z$Str)Q^U>^LHX|Y+x_(uGa7!Dn%rYKCA*BbVW)G);Moz_#nrV|v&G3?GqZqYO2fiL zNDo@2P-(LO2{gyc`7_j@Aevo|#1fLk5Opwpqm_!3h*mEtkvRYZ*%+=s=(L~G2ZN}Q zd=&mttfVE*!YFac;k z=Gs0pQ4Z;vmB^o%H`7B)z#d009&|Ng0gTuYT%dQv8j#b#lQFLGu&zGKT?f*TXsGB= zH^-xXK9_4pN7b3hVr3OI1FMrrl~!U#N(mg6ER^KGS*AEhrhxOx(%T|<;*t2*zPz}M z6Vr}puE>yOg=kz$ck-VFJx1p|=wW}0$XFZy!eXIi*#OBR5C4K4xCbPAfUH5yTT8Pft+Sc0E)nVr7B#_V|r8*x%NL&gC*>n;NrO>@5$gZM| zH}`8xu-W4+MCi85IwE zyhu01la-fnCn>?AfM@kns^OMCQCntTx9mE(nu*5Rq);0PMrbIBI$7u9+3Ljur{l9O ze+CLHmuA=D&(S~1tQXtG5VBb-NnuNjUPVOyq2ltej=>^A{(I}vp^KMTaAq>kW7r>& z5t``V9=%^VAQ3q#`G;TYCTec9Fxm8HYkab(rQBHJ<;8S7mV=A$1t-pb7y(v17}BLd zN4*IE8#HJzJ<~jU7(-X2AB6-e*m2h^i(YB(AnpqGk%F>byl!g}98U5YZQqf|ifC(T zRW7NteK__T($`}~?}4VtSck|^qQ7NUJnVE0^&$86`x{6D`fkQ9{@sS`2? G`hNiHgMrro diff --git a/Resources/diese-actif.png b/Resources/diese-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..c551d912128653c27fc30a20626b0605c88e08b5 GIT binary patch literal 5204 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 Nm8TjCpP=Sp{|63l*rosg literal 0 HcmV?d00001 diff --git a/Resources/etoile-actif.png b/Resources/etoile-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..41c13aa406ed6590bed9cc52e82a93a1c658e6c5 GIT binary patch literal 4479 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 literal 0 HcmV?d00001 diff --git a/Resources/etoile-over.png b/Resources/etoile-over.png new file mode 100644 index 0000000000000000000000000000000000000000..88daff5a30a1d37c312bfed032d5c4cf1fa7a0a0 GIT binary patch literal 6148 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 E1rMtto&W#< literal 0 HcmV?d00001 diff --git a/Resources/history-actif.png b/Resources/history-actif.png index 101ac879d74d23da01a32a34376341aba0afd422..fb1414ddaad69931012329a3b44aba7022177268 100644 GIT binary patch literal 3451 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 diff --git a/Resources/history-over.png b/Resources/history-over.png index 581b098f8cf96905bee6c3836cb37ec066ba8f8e..e792c8abd146df613493ea832acc9b507ed016cb 100644 GIT binary patch literal 3590 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 literal 5727 zcmbVQcQl*t+YhNxd+!mUsF}n{)FxETTBW5DNo+#IUNNeuRa&*a_H6CaYEgc9eOkz2wlpb>xD)e8^}3Kut5q2aWN-5kXEk7dLNp@OEnl803ak2VYY%ftdK{;#}P> zhY)ahy;FR$Nu z{i*Fow7~su82?e*&nnmlCvSoC!}}93M_F4%M@I(%)Bgu+=

Ddt-3__;n-u{TmDYuUJ)G0uD{Y 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 Il1=3Q01&oCuK)l5 diff --git a/Resources/micro-OFF-actif.png b/Resources/micro-OFF-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..2ec3be5503d5649e81e17c58504f581659cf25a5 GIT binary patch literal 7257 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 literal 0 HcmV?d00001 diff --git a/Resources/micro-OFF-over.png b/Resources/micro-OFF-over.png new file mode 100644 index 0000000000000000000000000000000000000000..7c898d75dd48351aad631d378c0a0c19176cbdf7 GIT binary patch literal 7314 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 literal 0 HcmV?d00001 diff --git a/Resources/micro-ON-over.png b/Resources/micro-ON-over.png new file mode 100644 index 0000000000000000000000000000000000000000..fd9d00a843dd8732a5d7750efa775bd9f2646c2e GIT binary patch literal 6005 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

q3S?lfW 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 rLowBvGlqhFK%{Cn5aGS)0pcY5?c949&} literal 0 HcmV?d00001 diff --git a/Resources/pause-over.png b/Resources/pause-over.png new file mode 100644 index 0000000000000000000000000000000000000000..7289286c2eacf7d9dd2a36b939f66f3e3027abf9 GIT binary patch literal 3940 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 F{{xJX4n_a~ literal 0 HcmV?d00001 diff --git a/Resources/raccrocher-actif.png b/Resources/raccrocher-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..c84ea15b221adf6cff1681ba6cae15d809cddb45 GIT binary patch literal 10375 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 HS-kx}!xE;m literal 0 HcmV?d00001 diff --git a/Resources/raccrocher-over.png b/Resources/raccrocher-over.png new file mode 100644 index 0000000000000000000000000000000000000000..2c95c5c1a1ef5753f496bb2a834d61fd1f659713 GIT binary patch literal 6061 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 literal 0 HcmV?d00001 diff --git a/Resources/refuser-actif.png b/Resources/refuser-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..9b06bc3e765c74839a2234c4b936e8e135e870cd GIT binary patch literal 4368 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 RPxt<#Ffp{imZ8s_|1Xs{XNdp+ literal 0 HcmV?d00001 diff --git a/Resources/refuser-over.png b/Resources/refuser-over.png new file mode 100644 index 0000000000000000000000000000000000000000..aa21a54e79db89dbe7a57169b7624856e5a71cd1 GIT binary patch literal 4507 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 UivE0xBLDyZ07*qoM6N<$f;*9`6aWAK literal 6964 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 KYUL_+VgCcw47(=) diff --git a/Resources/settings-over.png b/Resources/settings-over.png index 4ce5b933da2c2362902593378ce1ed860ee0c426..13806e0c8fd10586114b556fe9cce7ca6874e5ef 100644 GIT binary patch literal 4702 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 PZwRENt_Q7AwTt>6;SMe$ literal 6992 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 diff --git a/Resources/settings-selectionne.png b/Resources/settings-selectionne.png index 0d348e9d013ffa1b9caf686abf55edd17e71b930..0844b8c98e97cc892562af9848e423138fb6edfc 100644 GIT binary patch literal 4298 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 literal 6869 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 diff --git a/Resources/speacker-OFF-actif.png b/Resources/speacker-OFF-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..5094dd200c0d785525a318f3c84309c84dddc9fe GIT binary patch literal 7302 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 Xc*?bH8`3#`{~0vUHPxxpa*O|e=#Bwr literal 0 HcmV?d00001 diff --git a/Resources/speacker-OFF-over.png b/Resources/speacker-OFF-over.png new file mode 100644 index 0000000000000000000000000000000000000000..bd17791820a43145e919192cf57e56c2ed8bbaef GIT binary patch literal 7394 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 MHLq(_so6#SKL8OzPyhe` literal 0 HcmV?d00001 diff --git a/Resources/speacker-ON-actif.png b/Resources/speacker-ON-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..2f4f5844078fee4c9790b67cd870a6c2d618bef5 GIT binary patch literal 5857 zcmbVQXIK+kw+^9&-lVq>st74S=$(Mlks>NJKoF!PBp_W09g(7d6hRS?q9`3fkSfwq zq(}$pNCy?9$c^V5&%Hms=lgNz+4Ia^d)B+w+H1XQo|%a=Gr7n>%R>tQ02uTyq0C9w zT+$g0q5=TOq}3{tNdmX8?p0q4tgEj-8jk^JxnP|zV0|z24U9Pk?GotIjZp;v$X(qn zulim!Hd1!RdO^{@b)W%WI1(BFP}K;)p`AT2zF;TJ4R>!f$aX_B1nlmj2C+sO!;Nt| z7&rGzL3oTskcp*pkcYF93q(U5tQw$9GT?>rMS}ypJiQ6Z0cw!H>?)Jyzn5VU@Lwvv z9%_)kgSu*L2G+siF<>MVF6|7LhlAx2P=u_Uf`Wn+SO$)O!{9P7gp4#oL0MKt84d^k zb3jPm@Gh>(<|w^?e32wIh?}o3P8kOC_xFeT%R;gE8!&{DlG1M*GBVO64QWE4w=X(C z+M6K!#{vpNaK^jieBH6$;NKR}PFO!*H3%uvzqjCpGdBL$us7kKM3GVk3qa#w2q+xp z<@I}Ce`ynZ%`yKQ#(&f%SO(%SFmnt6>xXwH)x%Zz515p@|L*9wA}JbWQ@lH=C}>X< z*4fVsRKdh$97a3w9o9~=J( ztD~ouP85vKp=Dxin4GLR9jw4L0el}Nk;DvR^OZ8i}rTL{PF8f^7{`K`CqZh zI(Q7)7mK&VVm<#bz|0NnizT>WabO(_B-j}3?C$+r{#~BGcZO8_0 z(tr;q?zd_8x25G03pidml9ycL_%y3|^~)Ql??KV*9;0j+@WSM4Yza@l)UcFoD-ExW zP~3|!(ZacowYE=3CaK!rj+36Cbm^~fO7?VziE2fywXv_aIu(7ebHY{DIF8kvfpm0M zT(Y4qjf53OD`84-Sh0PJIWHVRj|V<O`VCZT35?|&osLpz(HPtzPSv&#<1M}Zg4H$`c=fZw3-FCeRH6pJrg(o z$>C47S5(8@l*HOBNOa*=3H=#SmnN1$_M*9Ms*u=l68e4kl4FGeb~a+Em$#wy+e15Q zE;-9IE(3x^tYA%@|F(d8X09`248OMh_bWc`hG<*z727jd}dV&aoX6-J6;3{+R>aB1B-y5T?o-j^XO zXe3O2vx9z|aU(}D4gGnBTycqdig?I((TdufU>iM=Pb(+wN|v)9|RO&gc$5{^rh!CBYA>lmZ(G>L-wMB)J(=ofwz&RbxUK{Vr*&o zzR8N@W9I%Kr0F44!H9sBnb7DmhbEcT^|gCc;0l1;YYt|Pc&o(gRVnQ-2cgWb@MVC~7+Z;}4`nKA9p?^NSQxQr(JGeWM3?3r5oUQ zb(LB@ih@FZdy4u!9JlgIXU9o4nahnJS;rs&BX`KA0?Kk~%Qqa=DYbNHK0-ff4x#)^ z4g?2(ng@&Lyo>&6QKNFH2GAI^Am6^B`=VvNM^k`O+KpV=(=d)E>XF0v6rKIpt*uYU z9hNIEN1_~e-^L_He5X9FmzA=6OH;~JO;P%$MzFC5rXU)P-u|*c-)WLVy^mfd_EC)^ zF$1hS0}jc7x%_S5QzcEc6{sEMI?WHinDwW(0-3xok=pjja+H@e+=G}{{Pc61+M6G! zOVioGs#)};pnfWtO0zjnou^lL;31 z^>(f5Sy##pf){myRB7(4fr|Wb0^bc#pRJGBB#MiMxTCA>IB7~o@3TJLeGgmmKKS9y zarC{Jpg<&iZfV$J-T4`^_^GC*WfOlHk6+P|q?4?NkWO1Ima#})a*ba&2^tp;4q%j~ zkQtbQmZM*PqD0Ydl|MYBTqxa>3HC;*DLl{_*0y+LqFde)M7mQr&}@ zZiCkFip#Arj8DURuWAHM?FX66sQgU6iI9(Dv5WCyQ^45_3~{%PJC+UGb*f(57tO+z zt}o)cS3u`4h`l6b_7Lw=qd6qt%<5BB&$%aQZb%@@3r_icXH|G-fBj?@o89wPXAnhJ}V5-o^`$L zHT)JSFK=${;ql_+6}NC!R@S0F`WjuYxe4eTkn-=s5U0s4qoHehppl)Tvc|;T`pE+6JYK zJG-2{azga(Vkg`Ev&DO9k4qh6Vp{sXmB@L#ms5}Nv}|p1^0RxN7x-;0adNrYL( zbcen^WLNcyS@@7Hz?*EJP-V$KRAe+SccT$;fu*hvrGuNQBP1=G{(@F=PUpgIaS-W&`_j(c zPQ_u?+~o6%oa|B~4sJtUwFml|?Iu>XZU#J@34=F3yZ_62# zu7OO9w2B`Wpqj(WRZE?a6W??i zOH+)F>WIEfymeNs-%&q(+AdWn46OS65J{ETk$w*6p6kD+xv-NMvk)P`1b`J#l{bL^a4 zah;IY*TpzX{35-n+<|~oanRQ9}S zAX2!0>(xi@lYU9IFBm#kg8gE|{&eS+tWB5CqrxaIzjSMRSHXIR5c$ieK0XYt4h^3C zAPQjW;=yt737R%R$=+U91KYo5^&)wBdHJ9!Rd%h_TEPh~Bn`@Y_Dt7atZOnuU@cuA zn*Sq`?dZFoSXYWcI}#;hb9$)D_wRrt?mrRj_e;im6fHd@Tq4iX57GE<&eF zyDNG@#h~*-9rd`9AWHs9;CAmy87iDF|#qgOduOx#g zw@>x;{u!_QVaHgO)e?=S!vX;6Rw6d-uP*DT~Wg%1Q>c4*rM_pI~y(j2GE=>y%ujN)HINM z{9T@Q=OALCR6<(1qa9@T^s71Y<+ayMy|8bdo;Sk*gOvVH+S+wfQ?n;F*Asp`X9ShU z_*T*IvLdl18;=3oEuB9oRt<3e8T)qX>;mVtH-&-9@_8LF`!Cs?mBPTU^D+lyIb!Nz zAc>2bH_+9bQ0*`%m1`?=ZVF{AXm!t7GYqu)DHI+;Pv*o5BvWR({rT`9P{WBe9Fa@N z;8b{Y%LVgsE?09{8Intw^PdzK_bONX(XiIoUp<1XNv&7ota1eHd|~BLwLLiOTeFB{ zRuB`lu-Ko?h|~;A6qmp;KP$>|V6Vk^Q1MHvN9%*$hYg@d8VubI20VAi*&C07S_741 zFYejc*nEleHnSsSn%81tP2YNlOlOTOE{$*wR1&*gWa!GDJ)@ifFcwu-vXVm92ZaGh zpKfG85HsK}QYe~-?U3UN0o`FN<!CLb>lu&+vjB*4;|i_KcCzJ2b)G{-%ci3b&TuwWENbyHsN(Gbq+j>rV~U zfQvCv=Hu9v)c|*HyXHXySQE2>Q2Udi0>i5f1{M|RH(!}uA7!lAUi+fuwYfPz^ttm9 zk0sruSN0s(%iL1Ai(c0tZ~Nw2i1UXDqj%0V%)1&}3=rgIQnL$f+kbY=2A2G|`@s9! zi4EjI%6CVb?-{pewodc`jC_`U_}X?IH9PfW-ZI}u5#4UH++`a$di z+|dZa2C7oHC5>g2d|OV{Z(B>dV}I@ua^q@Za+zuD#{_uoKvk~#N`f|0gParS@OylQ%V%v|*zNq6Y%P$GNJYaLNrE&VWU>oVa z_i%_`!%8ohDU0*+^@f{q%#V4zDQM!(w^{RX*Q?%C#FyE<9fpMSzMNE8^x`s2>Rj8b zg!=d{dBMUc%ll0o_ezPp_m6~K-Wld^A;UIQ`;n^kjyCE? z-v|aq-Ijal9S0MKJ`bkZ+}?c@GLPI8AE=tftM6U?FwsPIdzq>#K&$kS5h@#>mH#ID zaqs(7YfIWmue6xWc`q#bzL;SC@Qa!EvDBoOAPW|mmxRXOLC5Od>0He@fQyRW zRkkGALzc0;dY-4}eLwt<|A+TJuKT#I^S;mDx%|%ax;|X-moDluGx9P5003rvJuQ>t zIsf>Lfq(%3prrD%lw*O%OWV@Rl;q^)izgER>W(CP0!-f>?@TZu;2r&M_7Ic+0FaZb znWdMdk)fgk$z2NnTSv;z-QySy04S;YdEgyx5WHaa1ZP*GGJLhM6%KQCREA%XH9{GA zXcAmp^#aHQ(}0U+4gohD6dd8IDljEK#bX2R1TQ?y&)tpaspzK+|I4o8@%r~?Bpmja ziq{Qg_}@WU8eM{ElE?&@tQ1Pp0VRim$)Tmt(lYY$@)9r%3XMXdFi12;5-qPNjZs9Q zVE;VuV{c?fCq)x2oqv2COUiH;FE0;8B+}Q{SISpfibQrsq7@Vre%rucB#$*DJ^hJZ zct1&^r_dh@S_DrAva5%eD~SmEZ4qxz^7c}OA4mFk3ho|8M*kWndj3PyF=a?Uyay63 zg+jW!|IX_#ZBH)~!vBWxAGJNr{5=Rr6M`qno9u904=15N;A8IoyQANV$I&PnlU8juA`}`prI+RBc~~kQcy?# zvGE_VavECNa`N(6IT;KZt&PS?qmH2(a_aIL8X5{1oj+K8qNf+0=s@`6*Y&sGzp--v z6|1O8Cg8nDWHS=U?N0|>av^zgcQyca6`F|Ovn0%wlQ(}kA*1UL+bYJ{Ps7%2As8T2cZ|*#9Mf~UD#1! zw5>Jt=*03ljq3}f{DA=u+@5U>-DPmZ;B=$!Y6;()LcdHA(9!;GBzyWHG-J{X1K9Jo&`H#IcmwPMMb3!P zNz@8OM`uNgtAq3_DDPIJHJ}mwS9rBk+&?@wt8Jr!L4#Uniri9io%&GHz;7gxhL$>W~76= z)}ez#;bL!$DP!BI4|ooPsfOP45rb2)tO6yxWaK!R`)ujsOXa0hR<|MOihWG#HN*6X ztV=>av@2M14rULHV&+AYar<*?a#h@M%%&SevTOz`hi-9et^&lVRV)#=v-?wY8qAN5 z-#yx{^pF+UOQ6)eA36TRN@=s~Q@5n6fPs@4^_TuFBNBR<>Za?;FkR?`*_qes3mz;2QUZ9OoPa&#%5b=gqw)@FcDCzweDAr{QU}TnJ*~&9_B+&H z=Rnm}*p6ZzW@xL_8Bk(#j~8eV2C(j?$?`pTpGARPQU<-^ABA&eSeHgk-QLjUrp@BQ zcwoV5oh>0WgN7RRYZ{q@;@~B{s{J}7+p`pC6!*z$tCy)}r!ZeyL-TNu2#pofU^pmr zCyS5x{3}4?12UUp0;7Np!7&1d5HW%S zAo=R5?TU&&(Y#@ga54Z_D?QCC&L&J)wu0BWhV|+U+<8p}wzoOt%EIiJ#fb_&9|hBC z=ntShE-udW;B5znH&80A#r01Pty5(a%c%Cq0#4xIRRaz@d`NSoIjs*34wFaeIk+l++gKf;?W*!J6Nkw74u9Gg+B;r#uvu z7CzOomX5Rocm9m^Kb(q}HUa)@k7R!kJ%=E+eYyAK7GY<1?V}4Pf=jPfL+*6gW4}C$ zu7d7oJ!LE{68nb-)DIVz^-81ZZ2&C4WJMkUf5#2r!bQ-*igw(6fgNv@>`p%8dU6pu zne0|PUTW@D9r_7t%u%gRF|0C(GI^W#0rEw6SL`!gll;$-KBhHuXPAEq7IH-0QY{ldh>B1)PfZ25WruFHE1E7KYj<}TJCaE=NzmXiUQ{-FSI{HF^n%qR*5HQ|D z`rGqWok1<_#43MO+v!wF+w@6@lTf12V&sClPe;BODAX3)yXLAP z3Q8=M+HnzkAMrxfcm=)o&9}Xe-XBm?wLB948G7`k*`6)u`DqCjMzs``l??kBWOWwz zp-OXC+tY^~Yf@btO})1($-I_*{UE-!pbURlwYpF6^?s+F1}E^Sl9TJXs*sk1Cs5V! zUtyabuTE07E;TmM7q?NjR|lJ_4l?HZ+8#^*SxTm9yT>Dx8FjMJQNW)*KBJtzI&9fI z+E5rE@Cp~7DO+?uG5z!M3+u!HHnX$s7oz1)taEATy`L#cNVni)brD}ThRjq(<-6;- zP_+snf@aEk*6=ef1BgOq^@&U73o9>*hLq=5ngbgf3GT%{4a&mxW6jc@q2C(k-_}d} zemk#3G3gA1F@d@Pm@w#HGfO*{>jxRk!#ProOhMeFRzMI(uES{FMAuPDApD`z!faG} zXX`!vwfjtno?bb$-dxdYuenZR=5GI?d<6nk!MihJPGfFvj$^N_X}kU`Y;1oXkp@YV zpfIFKaHi4vysr(P)j3DQ6o?0>0388V+-k=&e?Tz)5P_kUd2haLu>6C--}Bw zyp>EiC1#EKF7R9^NiyW5G63%9aB*@7xS`Yl%zIH0R``%{TK@BFl07nVD^3>Qs9AY0 zSY0gX>D1xv5oAF*EU$e_u$A*LS!H?F*j>C^=!eL?(K((e%Zh=JUw+r#r#2cOxmxk( zN1Y@sx@w?+kaxCP3mL{xgJ^mY<<|Q;FxoDfLTu98z&V;FNEv65Xb8v*D z9Vx?e8kk!WW6#}-Y@e-cZ=o9UbABrM8WdDpC-KKmC3UN)EeQE?X;6nbfFrUIv6sc! zVawd6Pc>Uv7{8tSmK(K`H1W!NPK#N}p4;dw51&e~TzJ?is?W{PN=nx#fhWLfNXz`Z zUHFE_lZs|baCrL>cLYbjuAy75kImw(ta;13%r_S|M9U9)Z^C&8lhL;H)F4`PAz+|Z)63aA>&T2R6DXMXhPxK>S8VwE~@z}#M=p4`VCV37>xpT8y;1LQz^m9yzY;A~u+`+I19&R?IUC2vnI?O} zwR6Jpd~8SAGQ~5^3on`%8Qk7#a>~E0es`5&GMR|b9kjAySs5_Bj=S2Z8H&w_?fRb2 zmjf~RBKZ0Ai$}>%gJ~6Sa)?pwHU{s}U#*CI9L&PDYjm~{P+wrsl>}#uNL)^KcU82U zFJs1%85-WL00OUbuI~y?b(jQwxQ?1MwNSI2$i1)aezJL0Ij|(BI-@PwCY|0U;r{H+ z@BA&Q9?PjeO8Iv<7Jz~3F=X550T_d$~``|q@@EVcqD*~_KYE%U^ZA70C+rT zAply)4E^WIwsPNIzuDWs(_ zKN&iZCQH(8Dkz?}kfx23@|&s|4$&UT?BYWyPLzUZ_~Dk zD^+t-#OYyx63$H7TC-;ZJ(glaqSh|Nzw~F}7GDSYsf~eNGd3@$(E(rcWkjikJsTFF z<=%Es1F&-UE2Db3X>Jt&&#UEA66*lpa22sF-(Th^Ds=+o5;-#+z}c>A@Dw$)Yh zwVv}Ru70;SX*S!yha6Z2O`w@#0QBi!V+Dryl^%KIvdtv*4iA0)i9`sp;WqWNQ1OT* zEaKhOQu)-`u5S6D_OrAOZPfOR8Si`B_2&FS6dB0XBbIDDd+51IV%?*&;IQIn;npe> zBFWaD{oXZBbVGop&;L|l|h_Y;>wNmo;OkA3=PPDl~1_o z$NRo;4u3lu))rmy^1uYjJGCz_9%4fInS@b$5IdUrPI+GR>hS(rwQVnVvv zX{zc8e~SyTq3bwn|PL^a==vhVs9}N@f_zS!7R0x%t8Nk(SW++Pi-NSuNp@eO1@frs%&uDZg1et zCo>^l6Sa^``KIcJdXS+-a@>B3y@e~z7J0)n30s=RPFu179_%)0QmJ9Gw_iu8e<@ei zsUTg~LaC~ln%P!G>igr>^;&LOjonk4J=H)xK>y4+FaGZHe8~OE^Q>lZ`D1h#^_!J$ zjv6TgURRA%H{KI};9uON-a8}wav<&7Xx(;zf|PykZCv2zkjn09W??t^#eU;8kLdKG z+^(#K6F6$J`OxRJ*fo#LQ@R=z*{{D{W@N4Ag!F&7yzvZ+=+7`h$XPIPJGg#*LftEB zLubIPEr#n3p5L8xKJpOVlG$zW&TYwzmT`*wuv%2uB+?aNKsA}?WTLG3*)V$#H9U{g zkw9|oes|Y)ooRcO`ND(Hx@7WLr~&uD*y~p6bO7Xur@_9>1^U{wKK3(el4k@K>shD` zj|-plr{0Ml5Ptln-N%dsslOd~QHt?$U3JizR3_aqK*Z|wncEWs*4BD2yc54}64v_y zB2B)XG_^mJ!Jt^*RC+cRdEJ{UtLgt*H}?GLwIKTb>fj4c)_#}-Z470GAOj6XEA9&r zxmcUZSPtif_4fmqAKqExGU4On^Bxwv7F*VH(6PQI8Efvdm%8=V;pJDnKop=t-g1rz6@%S zd=8|3G#Pu%E@0M^=Q(kfQkE23@B5WmjTm(PN+KA>OMk;9py2hg)EdNabmUvEjVvGBSknoK}4LX|6qQ0&Vy`qh6gJZRj+kV-@ge$h8;}`vOZ-? f;!UFgM;`$OmjjyDi8MvOubuU^FKSh2;3ED9JRMxm literal 0 HcmV?d00001 diff --git a/Resources/tchat-actif.png b/Resources/tchat-actif.png index 08b985294eb2ebf39777ac2838146df4ddf83160..facb65ea9656dd2d6c796f15a3c13c677de66c16 100644 GIT binary patch literal 2485 zcmb7``#%%C*+;|ksT?5gpU9JK^7=*jdWvaj;Pi$dVkf8dJ?!ebZe8!;2>YdARpZ37;9 zW-$KJPv4I}aVMJ|vwct-s@(-;FMeErzy4gH?fqcJV&VRo!2Y+UcJPV4&Cb7+akRfB zW!X{0U{yd@u~u`;K@7CE4YC}usFK-a2>?hM0*zLYIZ~g`7ct|svyHk;GuVbH(U;3b zyvHh+lP0&f9#>E8tyS0#4Zj0kd6cB9AAisyKA>krRjUb|BjvY`{DdfSoIB+BVmYeJ z_~^|xX3}rjMt@P@<9vS5Kx4a{{hIIe)%)kt(X*oUxS4x)!4h~g|D*E^f;H{^@Kq(M z(dsLN@?k)apeu3X)lKT{psDm|Ne9BF?xwL<=iZ8GhPvVV`ZavC=M4nz41kRmyNPQ(5@yF@AH!Ks38Pb9YrN%RyL(E_^cUrwFyRXx4W<)8MK z{BSQW);pvA9~~sg=mIHXV9ZeB-ZH!|248?$kF;;NbCqYlfERm^jD4P49GQ!Xwh4n3 zXf%p)z&ukk(6v4Q^S zt)8`R`Pq>V-0JdoB7QYLo3%L0qaPnSht^`G&Aq->z7*@S(=^Ie^D+mZs%9X}t$Un! z7jg}V8R<`s!Y@kdpP$`sJ!Im;@+_40Ca>DB%}Yv)=N0W>ezoAeks<65QJv9oq6!#c zUjO@IgEZ`&4!ZPyB69s)2}TX5;7}EVv*KVuv1g|W56^g{aN=owV2OQ?d=BM|hE2W_ z_uHvnt~>O4sC?l}w~1Ra4_H(Mc{iw*TdcR#`P-0va_}iI=vD7ff6eR&EG2rMT47-- zOIxCkxsK3+vUYM&POG>l4g31V@?n=|IT_eS5o@zzRABNj--%8$u|QOXb`}LnZaQhr zt5P(I)^y63rbO53V(n`7aT>ZPQ3YofTe0PXrCH;lz`VSCnGIWvfBm;nnnHLTC1zyD zl6pY{;>QGISd2sF8(w&VxUl!(k=j-IES}t=#mO*E{Q?}&tBcval-Ewqdh_G)pCuJ_ zE*4f&=CF#?$jE?@pt>_F#aW3DHw%%+;>P;G{Lg7$ZjrEDQ@(uJ2FuZXRe;GEIa1qXU`t8uwYDC*Ti>PL|IzI#Ll$e0Bu(i7#Q;H`aUvi|MF&V$O;r(bD=molX#t`NF5%%OG?D7EY z)QX&iDqns}o{#c9MwS=I^AG3n58EKD2nef!pYKBqQ5DQ7x^`h3=1H!8vejVS3T4D_DJ2WDN-Wx;Nd4G>QtllQgJa@TiERN^5$EE| zCa+vf+brinL!_GuYBEvaHU8XwrHK>Er7_w2DWo{FRa*^|F5w@y4B~rjYl1u11t<1@ z6gXLG48N^!{$;0>u4VM^FL+A=9Nrn&)9OiqGcR}65`l>M_|yi!@q|H->N@y zZH*5>r^QEPh_Of-<_0-8zbc4(%e%83tF*?qHm2P$>Wb|3+a)@a4_(mE7C7;d9=-id z=Fm)IJzf{m!tcEtyz*V@PVS2z0#QKMf|O--X^Cp|w1|nQ$}RzO-*{P*chMt}f86?n zo+9DYd{A}ciS>kr9|9d)+uhIZXCsA6I?ndGHDp^=>Wgn^mMJe~tL^W&Ta%xAAr17D z8|}!+&pMLB+B=d~u?LHg6GQv>syFWxvlt^fQUD~$gGabsff#uFzZ%CJ!2#cIX z7D5Mfv;*c^H+3etY~yUYi}H7V!_KUNEjf9>wo14Jid<6Ca5_zEYiku&EdeO?^mz4Y zM;3}ksw*NPdIWfjfAdUu&F9KYxP~t$#?mO7uhN!-LB(AVBBC>^wZ3Uap|w3?s$y60PZ`X^=UPxS5ou*m@fOEZVm_XGQKyr&Bl%@5 zDbfQTeh%8)|70jKGx*u{4IkN?Rq^VQ!p(3U$n?|N5wC_cD5Pz++V`$6`!vTMRd?`IX3-zK9G*q+enP9 zaO6lh=R(aK8v%;?;KBT}U5w8;Ix#1%^|dNZ4B@Z0c8|9$pnL4@VZSAGcqFuB-3+e% zAQ|-{kAoSQUeO_51=Msa4g6KCzr@p&7HfUTM`A<>64_Xcra8aoa&6*@-^c;%#9))2kw{4nY}Ds{8~&9z=I1Axt^{q;Yb*Cl1)&gSZ!R2qa-GW6P> zejfeKte@kYB2G{su-JA*tOLuJWDG|&g;e=ZRR?*% gte+Aq^?Lt6ic7W8$kaAV_~iniZ7`^Mq+ja)0NL8V!~g&Q literal 4738 zcmbVQX*iT^|DLh$BH5A|V+k>4?E5;5sq8|@GR$BwMq|Qc%@V1si6kUjsbtL(V@a~q z5QPwWDrMhy=AEAB>G{7Op5y)SzmMZS?(275zwAsfhvs<1l&PwWMW6}R z2WNhTh_$<7Y43T(&r=HnG0+F=hHBFZ@K_QW9E$f32+|JKgZ#;>O<(`oR)T>4bRqfa zLH-KL$-)|JLLg$nYEYP>Crlj%R)<63DykY98VX=#7#yYqQ&xg2E5bFjRg|@1F!0|G zgsw)!cxl@r%>LG*TY3;55-CtyNhu^G1RA0OB@n%p;96Q*zc`eY73m&|LF51uI#e+r zNb)xW0vqH>#08RYgaGg_MzjavGD#0YkMyq;@PQT<{}2ZR{aq+}$&^CTfl6>FObL(w zmDiu%K_px3|Aq0d-a+={K&+B2Hi&SU=t=K~m*j6Sy>|aw=$9is8f_~gj@}fsKZ4+S z8IKJhp%8iy`Uw<+!)U|cnlLzALlvf>3{%&H!;Q>LOtg$mG|bdZG+4mDOc(l9nQ)>1b6jYS0nk|gEqD_aDXhzrJI%!mX$_|N)kPKGaInVOaaw@+EbZ_BY37{_LO6u2F1xBSE6`}PuJzZ~O~L}nIX0+s88z1J`A43= z>M*b`@br1ztCXnVvGDb3A9j~U11aw=AKuEV)XMdn`@+m2BgK64Ju#_hXWHO;r29^S zqSFc>8sHH(Q*RIgrCrq6TN(@tY`7OSa>anNy&*L>HvJFq-PGueYv^PZsX&$dXzyeJ(b0RPG)2Szh2WH;Z$}HZrZuGu&tE*f|gw=5BNx+ zMDFh&>jC74M+tzd<0FnGT(R|Kb1qJ4tHM&#l4^y|zuL@`87QBU`MD@IAW zJQ@k~N;AE1WLo0{n*jT{;nq(_L7JB_An~^ZSA9yzoM_}x;d82NLZRR5pi>M%ydr6R zWkn^XWA+GNG@^=`#`2NDz58H!Q4uT$mVNcMm)hRGIzt74$v#^SI*x<_1~x|XFDO&m zGML5Mc$@Xf323hVYldgBDT`w~RZgglsb_SdX22sOe9;35vlzMiU(63_DIW#*OCK=< zfUgqA{Y-`&vaI&CpYx48e)TYDFhtxvVX@myurFtEW(#DPZkS147n)hg7khE|e7XuS zV#w@}6Gc0eK7zn4byl9<-`!Z-qUJ{(hCfi{F~>8deC&QGcylN?Ew?bK{+P;B!kZqLY2rrP7GY9+ zyji-mh(l`H1*rEtB2~YQetK2!TK*&j=zLv>nhQ2~2s|eCshPRGk@Q`&UxOj0y=!x+ zhDc&fy4XZMwrD_Xtekq+8HKjFBn&#uV8I$}*lIcv#W3MyoA8{)O}RM2(yM@M_K@6^ zSf>tPav%P5fuF7L`L_$F9(eKVG3jBLKe0t)%Gy-#_IJEYC@ zWoB8fFh88C56PP`4}v`gf)_dt$xCL81;BoQ4`5j?HMkQaqU!v_7Fm-@J@5sr63TL_ zdWyenbYA!MmM~2=cg^{H_(J-r%K0LHcO3TV9|Lo@*`QwlQ)XRDk-lCnegON*UUS*# zxzS#gi>v%8ae=w-b!g@dNB|<5{Rb z^GYDwGs1ihFMk*X@SfvXTM)UR{t#J zuf#xPKJ-B~W3S$`ojzA-l%w7v*V*=%yMoTtYC5gTIHacH=tHGaT%1HF>4SXnK$PgMX z0gN*0b|}y9j5Cuw!IsB2T%M$8-y?lnb9GSyE0cL7Xb&gKa_gg_AWvcY`}05A?aV)I zJz8?V?8*5vKff^0y4+jMjD?a(T!^<+{Qgn@Zm)9LB4@@`rlE<+(M8NjacMD3@xm*b zyW}A5MQR;`@TvqrXP7pK;OZOz9(Qlgl1NX5p&&omj;pXEupqrfI%^u|%q|3cb4yG$kY1Vosp+;+W$=W&jXa7Vw& zI+vaa_4jA^du0qyaZ~BAub*7~g?%HLh~VH0gFl`+-0M}jklrw05XkHJW%@(�fKY|VyS>ly;91nvqSVpjm9?`w z4x%gvDJh3fkmal{z0HEUtk~ik^0?JjcsBlh>>k7$)$?P>=42rvw zaS)5NI>d8rKO0w#x&GDk);A6{RIb@(Lj0LCyQ~TPl{fq=3ul}ZEEev&Wa@@{tlo;k zN!)wufZBY;!m>^bt8X5JhH30O0Y!N$TnC7?&L$74-J?HeOjBJgSNJnIhgvmg%&~W~ za~U$D1(z)g$CH{%hrfxp6@^4U4cg2@9bt$liFLrv`>r4u=A-5F6lHjDq-Es_oK-u zTi8}`h`atPNeLfPSpG9)!vyyn-Rqe*K`YN!S5eGXCUNec=7lTG}I@Vhj z*AFWI3odv&QAYt++YDhzj>5vCDb91YmxmlmE%2p--KCK~qkiW1CiG!sGK!9_#h_pV zh*_Ww5tUG63vTxxR{5IDSE_D04{DbAn&|^JGON$rvtb+^AI4({`jpWfV=U&># z3dA$8&-j8OHtadlOpJ3_88&K!ozIW)cUsuWd}m?yy(ImPB*$&J14c*QM%eUM$wq!v z6SoL&NPH0-o$Xv~EfAENc&@P^nHqrs4e&SCgasep1Car*UPXZAaBned1s_5VC{e@86069%*)=jNjv+=%}93YWK=D3lS-!O zZDoW5)4v0Uua@n(`%`#tGA=FDZC#0Wj?JQVIH!k4D}I$XuQ_|r{+_Vm!TK2O-XEZR zH~R+V`Q1y8=kcQShC510=e-+An0(UGfn(b%8%(UL$TUjX*yxImP&CJ%OP1>0Hg_L7 z;Sg0(dXl*upSYlu5T8vu(DvL!uRBInAa^<-)KkZb$2d0PW2k#W^=k)Cs=0|viqMKO zgB|vT$eTFNfpWv$^EaqaK z@e5;TTZn|OTn**(hu!iSHQymc+y2WNcl^fH;KlX{In@V!k*nRY zVefM)yK%!`1q6I&Dco0Dzg0n4qpF9whE9!4V@HO?{Y@kTs9bNed)Rr~QZ&Lp@0+5C zH$Hs7>yoN|BaWeI?4D4z+7{VMaLVNZ`++}x*PO6+Cgev)ge+&)&?l7-&j1-g<8R}> zz_(Nz9$49bU~eR>@2_^b7^hO3POCnP{<~_=U;4%leKdHCY@@9*YWI z%IA|q1w5u#Qq29`J=we4{fqONR@c!!hRBvugUWF?(fO=7?o^d#%bx$!%O7@9z2g}9r-(;# zZogBIBtPl{Qmi!@sLmPT5Ya;^%nem`AdkU#9^GSp_=RB++y;QsrvA60rz}Py=IjJj?8^w{D)j-(&)|8yo(mk`&-pccGw7^ z+*w|B`1jigT@A?=8PnH4kC`Q>GKpQjHM=#iJ+L{jB-y{o9j7EEv|KJ#!f*cTuMo=A K67kH~J?1~Nf0&^F diff --git a/Resources/tchat-over.png b/Resources/tchat-over.png index 0b3c96d00654216306f8f3fef0f6e5ef209efe20..fddc874b0f7a6ad1323e5e5fc4c09e28407a7f9d 100644 GIT binary patch literal 2623 zcmb7Gi8~YiA75WYB;=T=NaP5O2|2^&Dkk?WjNI1}VwE(XOHupxFlWEMmgYweY1j?IL1@x z&(UF`v@;)jZO5$eme7GVmPK=aCy#%7K&lMg9B0at-Y21gvb?KOm}f2fRL{oGO`%g` z`jc~O{`AYYwyz%+V6{(3jn~kRaK$~G{3y^*0f*p zK^0_6eHZoAz!;$sWokeVX~HnLD@Da?R;!$EiGeVGzfo~?8qrgum1bsy8B{pRz8@rD z&P<(nu@R=JVkgsFSCy=BoZzUG`BynHBMF%~nOh1tO&HC%*;-ONACDtsy`Fxn#P1~u z^u!yT-Vvv}W|(IY_iKC_RF31sJXba+^B6j)eO(>>dRSLoovG7=eC2>t4OD0Oa^_!z ziRb{S21~iU#h25m(cmJ4D1W6rtTheOlnX&ZOReRga1o-+!M)`Bl@R4>b=f^`lA@)N z3FAZoEH5eLyQut&|K9|+f;OZ3LSBhJQFC@xox-hWK;YXvTzoftPo^pqkS~J+r{?y@ z%U<8p(-`Fm;-3Hkp$aCypP)@e0>pMQf=Uus?DYYx{UC2HFd$SM4DJ$Rm z>1MP3M$BOvuM`8ibTosQkSgO9YOiti4Va3W4Gh?0!{uM+L1n~?2QHtKXo%>AVvfPfUx-J;uE23 z(kGG0F^W`GK38m%2=H961a~(!N`pie-_!LkhQ(jA>&QF$nY$c4SrTY+y>;A*fpA*d zGT*_i${$tg=U4NMZKZy-W!w;Nar@JA^liDA)S**Ls|!N?gR~u3E!RAVMCR$KB0f(l zXAim@2TATkvws%P)*Rp~WXyj#999pn+!D(Vi1;pJOc{0Q`{;KR{?7#&26ouyQCk1$ z(b%|t;^8%>@9#I?I1N}4Z<6+A_Z{vB)fEdd+4OT}ua4TxWTK;!W0Z~MhJJ^Rd!!iv zMtANa5-%v~0HaO`3cin{hu%aotPJ#m3w-&zInjT++?;H@^RDym3}?|U)Z{Z)TP|sd zwkBbPTnvl*z_mYCVTirz#~d>@qQ9P}cY3jors>Y?B~OZJofGe7JFg7}O@to|gz^M8 zxpe3FpQC$9+zVdX>fYMJ`)SJ!y<6zW9)G2mwLo)&D)dsWv7NxaR)efBhCK_h+nI6^ z>0h!`2FHms@FuKTpCCT-_QhhkJMimZL==a@W&f&YLg4@Qe6%J}Gi;C@WKi=bp{<&!?ztgMoVN7K@$4~#`^*%UP^R9_bT4`& zvb_)fc4>TfroK*=598Ku#^Y1|y2Ow-bgB`?>Or{{U};xul$Uh9BEqKMT?;NH!^*F( z^(_~U>4eRm?5b7?_5#g)WcRFx(6#W*hLxzjoi-|mqS)IO=|)YytcL7IGpQjY@IYs$ zczyGdi-&KsyGVXOy3vb!Pk6E>GYR1{8Uwd5+isjG2hXfT4q~H7_W!u;TboLQ?~L>@ zy&^*v9vm}nA~{tzVTdK6)vnyQNDxc;Ae-^z+{8=4WDgW|~bi(HjR>cK0|nTd(ijFr`Tv z4Q~n!{}5WRblHWI71ik}jP%B}o&7}NO`a;^O3RE_VMs#APB4Hm* zeek7C`@LW5d`;}y=2+)W1}_ol_4_4#18J=Pl{HkX?$=BeN^}x0Q;)NM21I%j86Zw+ z=t$WeQ3`)f1P~1Zptwj^(09lD^|Mu}a7`2bfw~`#4xN2{N0nXm0v9h{1eM(6oTPN3 zCLYfc&xylTBeUb(iY$!Ro;icF+fi^hH*l0GpM*;C(W9JNv|M{6DRnkgjDP+YdR_i! zHL43MX8P~?$A;1#!s?9TS!&JNJ8QAdw5FF!Pxi+!uwOTTtbtP`#n*EeIif@tb^Pxm zQOM*_v|TIA?hi*-yg6^;V3;!YKjQvm@S=jqVQ~$O1DT``$sKxE>lmERAHWJ~3u!dH Go$?>C(io=z literal 4746 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 X!dq{N>adcZe}~M@UO<%_xySqm0B4-d diff --git a/Resources/tchat-selectionne.png b/Resources/tchat-selectionne.png index d9486ada6b961769c50b4172518412a196953a2b..5b42104d631e5249f661664fe6712f2657c5e984 100644 GIT binary patch literal 2426 zcmb7G`#Teg8y`YAI45%JGPN_CGLFhEvIvcsayhw$LT)W)Zp)Bx#IeZb>ynJQ;567jjF>JPS)}QeG;eFrd`MlR3-uL;u$v2VLr6pA)0RVusCBn>3U}FW6 zepF1L&(t=W35-NA!WjbqNXh*aAwYhCk^mGBwX`u8pB6hRp#~&Qon97%DO;MEI7EKl zcxm(CM4$3sbBsIvsm;yAN#cnqgqgUsi}SioMO2m0{%BF9mbxb)q{6kc9csY-B9FqP zYr$@^)7h%Pf@_Pyd&TH^Vc7b_TCa&{qxiXVD&&lH0-{u-->#MT`{qaXn=c{i83$-Y zKoX81l?ZOTxO8z&Z|;}=?0;NJ@^A+$vQNZzPA|RhXSTk}5d*Bg6X*IJLoe0UYu7%2 zN>A?^3ISxx;*Z1L5Mf4H$gzVjJW)T=nP>?=X?1W`#!agY&Pk7o7Q&A;*#+A3G_~R# zch%rCQcda7K2^B`8ufy#$zS(7BLwM7P0&-Br)YsAWGp#UA7w;?2r|)YVCgR(( z2`OcV%%^-SXZiI+YpBj9G>eEamoj1+0suP$l0-$}ecfj|CrCP_>=T+1hCP%Ho{sc2 zX!#5?$UjG7rW#5*-ehOxS5}<;#4dpD-!`Hj#o$D*sn(KUK10_Nwy?U4UzPAqU~uEa zKQ1O#5}6f$^ZiorLoWaW{|>cVHyPTz@AZQz-0IQ>4r->p(1fcbkEDb*^t75Ug|F$o zPKo}YmFJ^7o;84v+$Y;MJ~YQwTR%3uWQ5+v3*3p6%%!>JIvrQqF}oov z#tJ#4<0+4B)t0cVTDn{I&bNjY($uzvfy)}xKcb&R(Yvl?mO;3U@X^bH9FFSI}(PxXHhkxI*J7SKl z%k-z9(6I7oQ?BiBN-??IIlhDcn=7|G#`|E>cZr^u{0=MP`SGH!TG(Tb0u;EMaLe(q zKY2$x zm_xGj&Yy!8Y|ib5@YiF9QE7upMHU15^2|M7)=5AMyd`+-AFU9Tv9D`7aV_u$?REvi zQF61Na^5CB6L<>XH9IQdG@(&l-)7LP>{=NmE{l;~&02gvcv#<;3t>K_z6Sek zlob}AI!uB*PE8~j&7G7YEQ!{@j)J7f`P(*|{Pd~G;;-tS8jxU&Wlz;a5e@)pW*odc z4`@F{PGctHf~Tx*xnJwZOQr$UT@&9=cP;t#ql8kf>`rP%Rq#;GmR1OpNF^7brU|Ktfg3k9~HtzwK2;3Gq^*nKdK1W}2N zCWg;Ymz@(UKT&1*-q)ET8Tv6@mvk{PIno8IpTBFNMrViip(UtL27VA*BaPcKkn)X! zz1xK+TgPEyZ0Z9$w^q)9B8zT#c1kBWlHnU`FI~r9{CGGYXuBb&KNYA`23uU=KQLJg zXx`?um7W@)QQU-J?QLTmlez%rJlK?_tK;qP>I=omw+>w~MZd+-zaS zuaMrfrrgiGvG3z(5MPtHP(u7-0315+R+#NrCJStOZsjlmwy##9U>yQ{ONZ4@JOxE} zP4Ooh)6iPRBH)P}57EbdhgG|~ZllyT?>|~<5S}59AcnF7qhBWOMzoA3lAG%WtCddK zVWk`iu}X@c{}kWF8p#_4=wmy(dlkQ3U=;q6^47srHT&pi1KyTtWGt&=b@2-2AaMS2 zY@efxxAG@-QPLGHQ^{GNuKk`<%tA_rSHY~x!kz}C1qL)h?N85tP?s;7nzPQw(B2%YU zvuQInI?3=z{nsvR(w3t~Da24z><*?@c=VX42PtbERd<0M-WCvwnrAoYiro>SD^Sg` z_$R{!K2|;+VftxXOJQcflBSwSB#CFcKN-20YabSL_NBf4jMwb~FLJXIH|%U%FPM?> zlDMAr#{L<^3_6?HiN_{~BJYMcCNe

ukygzWD*uk&@f$`-q5N*&}Mp<(7r(~1y! zJlHGy?R&G-n!PQJYCKI*A6v9tR$$Q9h);_91jb97$&be5vQkl^CIPk8geLiqsKIFors1XB|ggUNQm}2<2GC@Qd zc!+ za;6~;1tV-u-8P^U^OOC8 hU)m}O*sy<=8C$8-{18oI7z_R;fTcOotj5&y$$!xmz&-!~ literal 4695 zcmbVQXHZjHyAEAIs>ebzkzUhiNu+m>NEN{X1PDC|ga84B(4|TdrAbq&2qJ=oA|NOV z3Puz~dPf04TIjj)96k5`_~!d@_spKP-nHN7dCPj%%$l8GdDfVROPC7)0PvWa7+5n# z3gb;X#0&s14R#-iWf(#vLwk}9!JQP0Az}f#ZUh%B$P|b1z*=K5ZXy0}uo?gWi@TSt zJ;@$zj&dd7z?fe?U^32+fd&9Hw8?%LS05}1qAfp%rI4lVRBIA7V0VuMj_}{!J#{AbZL>%haJUk~Ln$BxPr{Iu@BtEk z7!0rhu0$_Ck{1CF`o)NGAq0{%#Tl9YQv%KpjsBMyAMm?TjFv&j7(WOM429ruzv}wi zJAh=3{ogeHqj!L9h#wYWjSV0K5?vYl;V$t9%;?>J5A@5Ckqyd%=*8F+jIRN~H4ulz zlS~aX#Tj3~ZeDIEC=3CG!PHft>TswU0tVAH($`1o>8l&5>8nGLy0AYS{|SrK)rILH zjr0*}s%kKpAq=4mWkB`Rbk+6r^pJ3)KUhu1V50zjVcI@arMIgvVU#QKh+vwiC#fiHzOhe2l~6eD6jtzUl*xt zq^kmhD?|UO8=((VF@hshRS^s^=_29czp-xrpPoS&$v}RI+wkL*1=PYz_C{P z-p_pM$FEG_{kgv7WvAAIU0N!Wy7Ttdff$QiL_(y2&J`ZTY(0gW;T?k$G<(i35%+~} za8p-+LSZijOJupS5B7IclLddkB&v8?I+DvGX6ST!wtL*LyB_@Hr+zwYQgur@txaf9 zaq9^4E%MeiuH2au4G6kK(*4f{Rvqhfy0#l>d!f~i%^eYZS55X#+EJ)kk6gyFe!A&8 zOOLj1dm;ybm0v=mYyVlm_FUs2rEoO5XJoHqVAp}aH+EVyQTClZp7njv}|`~qN*{p_$1U_YW3 zGkAtoB>VH(@SV>)^L(MJC$A!TK@lhVc0FBg0^FbEwGLjVPm*_2g{qjH_cs^1`o>x* z0)7JSM1#bcLT3X3XO|+_iJfD${FS`b-&;2GAO1vIg$jMDUtcj{;m+pQy~-&REPM(a zzmmtxnsbN3X}Y+8%gmRf!*T>6rqTcv72LgBpuGbUH~%4)>LhcLmv-z z=n(7V%GFT_*soGJd`aeui}YBJcH}vB$&_(eq?MUn*A%BS`c;#POaew2it3Xg^#K}dmpTHiqU1{KJ$5Ezh0Jr^T7AVfC z6En+nCpz4Agsy+qfwj*v{CrWV^~Sz-R_j6kjC*49fzLDPigU<0>R68xJ$)>NEf{=| zw+6qHz=Gxo(gD@6M#Xy#d5%w)4)spQ3*=x zEGnDS3G&R3(FeiHKSr02W{g`7b2UM`Y`rcjWo=r-t z^!u2DxXc4!dD`w+|0t(6|7eX{@G-mNFMbHttfgI>avxMO)xE|h+3*&%a}f|BiuP34 z|DZ`QtA7dvHg%kNE0Y#1y_rp0ISJTcTHjLH;WGw(O|^@APM9b+47Kxhh2iHqUbb2I?nJ%qrnHRNO+T~ay*G=IF_4hj20SY@6v{y4L&%QNl)Y!&$|40-_EJ5`+NCYKwr1p+Oc~Aejq32+5pvJG^-VvQm15p@qN9O z?#`59?IxHk(3!V+sl~R~@l!OYfV0z z4SDs0ISw9mLug^O$EQ!f33{V(3oEoaH>5t+oS#E`hgvuxChmSVx>5*%{@?)>;;0X) z$4XXN7O?Z!=xnFPJ$y^jP83S&druVH`}cDbqmUFG+tpPXe}5uw)$?#|64e-Aq?$ZAWr z)BVX`^#(|>ah(rxE13N)?soYBMcJ-*rySGJ7fIjp?$Q_adaBj{5VOBeiC9Qovm&*LvQB?y8|^`07;dw9N7{ zJwx?t?Ki8W*JYm^w*`m_+?|lOtf+5uqP{8Q=9hDU{&*XWk!A(1ku#>Sn+`>;Q_(%u zhRl_y^n}d8q2w*;4lUFpho>GLVXgAd?Q0B5NB7khWiljy^+%Mk zdiO;ON<sy} zQ|UN1n!2GfsV;Q8e@YmBbgz_K;i|~R6uPblpFL(Be+^E&^YBB?=Zx*AuNJjseXnX4 zFlC9?wSXq~I*t0mE9Wn?6QTGAeb+CV^+9|NsZVCLnqtxc0ZW(BzDJBtJ6`tuvmL3c$sPr^%nI z(3X)5y~p~@&l6vLffvp9=9!6Ry6D%FW&-OO+*whq$1hMFhiv4KaV0l}C-`lxhB#He z;RP2*2E(WP)fUjU$e*Dez7&gFss)R^=A+NI-Gi1w^yg-0z4Ozm2d}z%h=0S#!V70+ zxXQJU=x* zWL9dAlzbeL7T=fTuTFdX!QZB=bQm1Bdf;7Yo9t#U;H_6 z$mH2ML43&3Fl3e7yiL)*b4k_f>iaqrpHz2;mGXjp_b2{1Z)gc%(0EhewN_oK&SrWT zYhCK1L|T{|Fmh31_mCTK(0GxntT*L!{$%u(miDY>VRhlhNJi%#E%1;$6OK_4Wd^Y) z`CD?9QY=7ZmNbz2;5n#vBor&}A1q|tk|ekxQC2EIJ5gWiA{ z=i!(-u1H>-R2AB7=mUwQ&`=?#y`7Gf*zbBdaa2{Cof$a#gw<%oe6InF@&i`c2m49b zwR$oU~u>DbJhCcPO2q4Llp^mtAFD3exSBa1fIS>@h0vK?-l@ zoJk!?6WREY27kQ`-VEnUx~H>LPk+A}=Y9_%)_Y=wPv6DU{hGU0_!Uh^#w#G&dN8Ac zYnXF)XQG;SlX~iwsjt?>-mK;XHuZ}*({TBhM!TLXwZL0j(_@&PJ*pPVXmpNc@6A^E z(iB?Wb2jx7!>rt3mj$LW`30rcQD+wTmHBBMJwX+X^O^25ZL3>WYYS7e1cj?t+fRvT zg@C@iDgQw`Gg;)?wu)IBW@3M^#;5Rn|GXm_uX+6bi z68_ar>-)WeHCuJS2OTcHhHm0xQfSwqCAEErqa=pCvGCS#Q_>yoX6hU8ru5k*Wunyb+0kd0 zMll`B;;RNdJi%hxz;)gkoiy#I*BoDG%UCPs7q#wnwA%B}=zJm?q|0sODd;aP(kJ?E(Z0Xuep1^@s6 diff --git a/Resources/video-OFF-actif.png b/Resources/video-OFF-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..8e80dd7a688740097dac43d67d7f4e2413a43f56 GIT binary patch literal 7625 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 ARR910 literal 0 HcmV?d00001 diff --git a/Resources/video-OFF-over.png b/Resources/video-OFF-over.png new file mode 100644 index 0000000000000000000000000000000000000000..26a00c41e29a40e994630f3aa8b7f582c6582385 GIT binary patch literal 7602 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 literal 0 HcmV?d00001 diff --git a/Resources/video-ON-actif.png b/Resources/video-ON-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..dde8964d9bbb2bea3d0593ca3776d826f0a3d89a GIT binary patch literal 6063 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 literal 0 HcmV?d00001 diff --git a/Resources/video-ON-over.png b/Resources/video-ON-over.png new file mode 100644 index 0000000000000000000000000000000000000000..20fa87e9b0b8bf72a5d37bfbf9d6e6a15c5bb1f4 GIT binary patch literal 6074 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 490d12458..d74ac0cf7 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -31,8 +31,6 @@ 2211DB95147564B400DEE054 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2211DB94147564B400DEE054 /* Settings.bundle */; }; 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; }; 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; }; - 2211DBC014769CB200DEE054 /* IncallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 222A483212F7176F0075F07F /* IncallViewController.m */; }; - 2211DBC114769CB300DEE054 /* IncallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 222A483212F7176F0075F07F /* IncallViewController.m */; }; 2211DBD51476BE7300DEE054 /* ajouter.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCA1476BE7300DEE054 /* ajouter.png */; }; 2211DBD61476BE7300DEE054 /* ajouter.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCA1476BE7300DEE054 /* ajouter.png */; }; 2211DBD71476BE7300DEE054 /* clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = 2211DBCB1476BE7300DEE054 /* clavier.png */; }; @@ -69,7 +67,6 @@ 22276E8513C73D3100210156 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8213C73D3100210156 /* libswscale.a */; }; 22276E8713C73D8A00210156 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8613C73D8A00210156 /* CoreVideo.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 22276E8913C73DC000210156 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8813C73DC000210156 /* CoreMedia.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - 222A483412F7176F0075F07F /* IncallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 222A483112F7176F0075F07F /* IncallViewController.xib */; }; 223148E41178A08200637D6A /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E31178A08200637D6A /* libilbc.a */; }; 223148E61178A09900637D6A /* libmsilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E51178A09900637D6A /* libmsilbc.a */; }; 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; @@ -134,7 +131,6 @@ 22D8F137147548E2008C97DB /* linphone-banner.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2F911ABB76400628906 /* linphone-banner.png */; }; 22D8F138147548E2008C97DB /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; }; 22D8F139147548E2008C97DB /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; - 22D8F13A147548E2008C97DB /* IncallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 222A483112F7176F0075F07F /* IncallViewController.xib */; }; 22D8F13B147548E2008C97DB /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; }; 22D8F13C147548E2008C97DB /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = 228B19AE130290C500F154D3 /* iTunesArtwork */; }; 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; }; @@ -287,6 +283,114 @@ D3832801158100E400FA0D23 /* history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history-over.png */; }; D3832802158100E400FA0D23 /* settings-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings-over.png */; }; D3832803158100E400FA0D23 /* tchat-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* tchat-over.png */; }; + D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; + D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; + D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; + D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; + D3F83F04158205A100336684 /* add-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF0158205A100336684 /* add-call-actif.png */; }; + D3F83F05158205A100336684 /* add-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF0158205A100336684 /* add-call-actif.png */; }; + D3F83F06158205A100336684 /* add-call-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF1158205A100336684 /* add-call-over.png */; }; + D3F83F07158205A100336684 /* add-call-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF1158205A100336684 /* add-call-over.png */; }; + D3F83F08158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */; }; + D3F83F09158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */; }; + D3F83F0A158205A100336684 /* dialer-meteo-sortir-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */; }; + D3F83F0B158205A100336684 /* dialer-meteo-sortir-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */; }; + D3F83F0C158205A100336684 /* micro-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF4158205A100336684 /* micro-OFF-actif.png */; }; + D3F83F0D158205A100336684 /* micro-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF4158205A100336684 /* micro-OFF-actif.png */; }; + D3F83F0E158205A100336684 /* micro-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF5158205A100336684 /* micro-OFF-over.png */; }; + D3F83F0F158205A100336684 /* micro-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF5158205A100336684 /* micro-OFF-over.png */; }; + D3F83F10158205A100336684 /* micro-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF6158205A100336684 /* micro-ON-actif.png */; }; + D3F83F11158205A100336684 /* micro-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF6158205A100336684 /* micro-ON-actif.png */; }; + D3F83F12158205A100336684 /* micro-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF7158205A100336684 /* micro-ON-over.png */; }; + D3F83F13158205A100336684 /* micro-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF7158205A100336684 /* micro-ON-over.png */; }; + D3F83F14158205A100336684 /* pause-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF8158205A100336684 /* pause-actif.png */; }; + D3F83F15158205A100336684 /* pause-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF8158205A100336684 /* pause-actif.png */; }; + D3F83F16158205A100336684 /* pause-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF9158205A100336684 /* pause-over.png */; }; + D3F83F17158205A100336684 /* pause-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF9158205A100336684 /* pause-over.png */; }; + D3F83F18158205A100336684 /* raccrocher-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFA158205A100336684 /* raccrocher-actif.png */; }; + D3F83F19158205A100336684 /* raccrocher-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFA158205A100336684 /* raccrocher-actif.png */; }; + D3F83F1A158205A100336684 /* raccrocher-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFB158205A100336684 /* raccrocher-over.png */; }; + D3F83F1B158205A100336684 /* raccrocher-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFB158205A100336684 /* raccrocher-over.png */; }; + D3F83F1C158205A100336684 /* speacker-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFC158205A100336684 /* speacker-OFF-actif.png */; }; + D3F83F1D158205A100336684 /* speacker-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFC158205A100336684 /* speacker-OFF-actif.png */; }; + D3F83F1E158205A100336684 /* speacker-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFD158205A100336684 /* speacker-OFF-over.png */; }; + D3F83F1F158205A100336684 /* speacker-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFD158205A100336684 /* speacker-OFF-over.png */; }; + D3F83F20158205A100336684 /* speacker-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFE158205A100336684 /* speacker-ON-actif.png */; }; + D3F83F21158205A100336684 /* speacker-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFE158205A100336684 /* speacker-ON-actif.png */; }; + D3F83F22158205A100336684 /* speacker-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFF158205A100336684 /* speacker-ON-over.png */; }; + D3F83F23158205A100336684 /* speacker-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFF158205A100336684 /* speacker-ON-over.png */; }; + D3F83F24158205A100336684 /* video-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F00158205A100336684 /* video-OFF-actif.png */; }; + D3F83F25158205A100336684 /* video-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F00158205A100336684 /* video-OFF-actif.png */; }; + D3F83F26158205A100336684 /* video-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F01158205A100336684 /* video-OFF-over.png */; }; + D3F83F27158205A100336684 /* video-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F01158205A100336684 /* video-OFF-over.png */; }; + D3F83F28158205A100336684 /* video-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F02158205A100336684 /* video-ON-actif.png */; }; + D3F83F29158205A100336684 /* video-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F02158205A100336684 /* video-ON-actif.png */; }; + D3F83F2A158205A100336684 /* video-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F03158205A100336684 /* video-ON-over.png */; }; + D3F83F2B158205A100336684 /* video-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F03158205A100336684 /* video-ON-over.png */; }; + D3F83F441582223B00336684 /* 0-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2C1582223B00336684 /* 0-actif.png */; }; + D3F83F451582223B00336684 /* 0-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2C1582223B00336684 /* 0-actif.png */; }; + D3F83F461582223B00336684 /* 0-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2D1582223B00336684 /* 0-over.png */; }; + D3F83F471582223B00336684 /* 0-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2D1582223B00336684 /* 0-over.png */; }; + D3F83F481582223B00336684 /* 1-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2E1582223B00336684 /* 1-actif.png */; }; + D3F83F491582223B00336684 /* 1-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2E1582223B00336684 /* 1-actif.png */; }; + D3F83F4A1582223B00336684 /* 1-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2F1582223B00336684 /* 1-over.png */; }; + D3F83F4B1582223B00336684 /* 1-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2F1582223B00336684 /* 1-over.png */; }; + D3F83F4C1582223B00336684 /* 2-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F301582223B00336684 /* 2-actif.png */; }; + D3F83F4D1582223B00336684 /* 2-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F301582223B00336684 /* 2-actif.png */; }; + D3F83F4E1582223B00336684 /* 2-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F311582223B00336684 /* 2-over.png */; }; + D3F83F4F1582223B00336684 /* 2-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F311582223B00336684 /* 2-over.png */; }; + D3F83F501582223B00336684 /* 3-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F321582223B00336684 /* 3-actif.png */; }; + D3F83F511582223B00336684 /* 3-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F321582223B00336684 /* 3-actif.png */; }; + D3F83F521582223B00336684 /* 3-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F331582223B00336684 /* 3-over.png */; }; + D3F83F531582223B00336684 /* 3-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F331582223B00336684 /* 3-over.png */; }; + D3F83F541582223B00336684 /* 4-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F341582223B00336684 /* 4-actif.png */; }; + D3F83F551582223B00336684 /* 4-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F341582223B00336684 /* 4-actif.png */; }; + D3F83F561582223B00336684 /* 4-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F351582223B00336684 /* 4-over.png */; }; + D3F83F571582223B00336684 /* 4-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F351582223B00336684 /* 4-over.png */; }; + D3F83F581582223B00336684 /* 5-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F361582223B00336684 /* 5-actif.png */; }; + D3F83F591582223B00336684 /* 5-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F361582223B00336684 /* 5-actif.png */; }; + D3F83F5A1582223B00336684 /* 5-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F371582223B00336684 /* 5-over.png */; }; + D3F83F5B1582223B00336684 /* 5-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F371582223B00336684 /* 5-over.png */; }; + D3F83F5C1582223B00336684 /* 6-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F381582223B00336684 /* 6-actif.png */; }; + D3F83F5D1582223B00336684 /* 6-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F381582223B00336684 /* 6-actif.png */; }; + D3F83F5E1582223B00336684 /* 6-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F391582223B00336684 /* 6-over.png */; }; + D3F83F5F1582223B00336684 /* 6-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F391582223B00336684 /* 6-over.png */; }; + D3F83F601582223B00336684 /* 7-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3A1582223B00336684 /* 7-actif.png */; }; + D3F83F611582223B00336684 /* 7-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3A1582223B00336684 /* 7-actif.png */; }; + D3F83F621582223B00336684 /* 7-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3B1582223B00336684 /* 7-over.png */; }; + D3F83F631582223B00336684 /* 7-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3B1582223B00336684 /* 7-over.png */; }; + D3F83F641582223B00336684 /* 8-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3C1582223B00336684 /* 8-actif.png */; }; + D3F83F651582223B00336684 /* 8-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3C1582223B00336684 /* 8-actif.png */; }; + D3F83F661582223B00336684 /* 8-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3D1582223B00336684 /* 8-over.png */; }; + D3F83F671582223B00336684 /* 8-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3D1582223B00336684 /* 8-over.png */; }; + D3F83F681582223B00336684 /* 9-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3E1582223B00336684 /* 9-actif.png */; }; + D3F83F691582223B00336684 /* 9-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3E1582223B00336684 /* 9-actif.png */; }; + D3F83F6A1582223B00336684 /* 9-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3F1582223B00336684 /* 9-over.png */; }; + D3F83F6B1582223B00336684 /* 9-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3F1582223B00336684 /* 9-over.png */; }; + D3F83F6C1582223B00336684 /* diese-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F401582223B00336684 /* diese-actif.png */; }; + D3F83F6D1582223B00336684 /* diese-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F401582223B00336684 /* diese-actif.png */; }; + D3F83F6E1582223B00336684 /* diese-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F411582223B00336684 /* diese-over.png */; }; + D3F83F6F1582223B00336684 /* diese-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F411582223B00336684 /* diese-over.png */; }; + D3F83F701582223B00336684 /* etoile-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F421582223B00336684 /* etoile-actif.png */; }; + D3F83F711582223B00336684 /* etoile-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F421582223B00336684 /* etoile-actif.png */; }; + D3F83F721582223B00336684 /* etoile-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F431582223B00336684 /* etoile-over.png */; }; + D3F83F731582223B00336684 /* etoile-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F431582223B00336684 /* etoile-over.png */; }; + D3F83F781582253100336684 /* decrocher-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* decrocher-actif.png */; }; + D3F83F791582253100336684 /* decrocher-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* decrocher-actif.png */; }; + D3F83F7A1582253100336684 /* decrocher-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F751582253100336684 /* decrocher-over.png */; }; + D3F83F7B1582253100336684 /* decrocher-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F751582253100336684 /* decrocher-over.png */; }; + D3F83F7C1582253100336684 /* refuser-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F761582253100336684 /* refuser-actif.png */; }; + D3F83F7D1582253100336684 /* refuser-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F761582253100336684 /* refuser-actif.png */; }; + D3F83F7E1582253100336684 /* refuser-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F771582253100336684 /* refuser-over.png */; }; + D3F83F7F1582253100336684 /* refuser-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F771582253100336684 /* refuser-over.png */; }; + D3F83F841582278D00336684 /* cancel-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F801582278D00336684 /* cancel-actif.png */; }; + D3F83F851582278D00336684 /* cancel-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F801582278D00336684 /* cancel-actif.png */; }; + D3F83F861582278D00336684 /* cancel-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F811582278D00336684 /* cancel-over.png */; }; + D3F83F871582278D00336684 /* cancel-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F811582278D00336684 /* cancel-over.png */; }; + D3F83F881582278D00336684 /* contact-actif-add-call.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F821582278D00336684 /* contact-actif-add-call.png */; }; + D3F83F891582278D00336684 /* contact-actif-add-call.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F821582278D00336684 /* contact-actif-add-call.png */; }; + D3F83F8A1582278D00336684 /* contact-over-add-call.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F831582278D00336684 /* contact-over-add-call.png */; }; + D3F83F8B1582278D00336684 /* contact-over-add-call.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F831582278D00336684 /* contact-over-add-call.png */; }; F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; }; F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; }; /* End PBXBuildFile section */ @@ -475,9 +579,6 @@ 22276E8213C73D3100210156 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = "liblinphone-sdk/apple-darwin/lib/libswscale.a"; sourceTree = ""; }; 22276E8613C73D8A00210156 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; }; 22276E8813C73DC000210156 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; - 222A483112F7176F0075F07F /* IncallViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = IncallViewController.xib; sourceTree = ""; }; - 222A483212F7176F0075F07F /* IncallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IncallViewController.m; sourceTree = ""; }; - 222A483312F7176F0075F07F /* IncallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IncallViewController.h; sourceTree = ""; }; 223148E31178A08200637D6A /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = ""; }; 223148E51178A09900637D6A /* libmsilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsilbc.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsilbc.a"; sourceTree = ""; }; 2237D4081084D7A9001383EE /* oldphone-mono.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "oldphone-mono.wav"; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/oldphone-mono.wav"; sourceTree = ""; }; @@ -687,6 +788,61 @@ D38327FD158100E400FA0D23 /* history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-over.png"; path = "Resources/history-over.png"; sourceTree = ""; }; D38327FE158100E400FA0D23 /* settings-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings-over.png"; path = "Resources/settings-over.png"; sourceTree = ""; }; D38327FF158100E400FA0D23 /* tchat-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-over.png"; path = "Resources/tchat-over.png"; sourceTree = ""; }; + D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; }; + D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; }; + D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; }; + D3F83EF0158205A100336684 /* add-call-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-call-actif.png"; path = "Resources/add-call-actif.png"; sourceTree = ""; }; + D3F83EF1158205A100336684 /* add-call-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-call-over.png"; path = "Resources/add-call-over.png"; sourceTree = ""; }; + D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-meteo-sortir-actif.png"; path = "Resources/dialer-meteo-sortir-actif.png"; sourceTree = ""; }; + D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-meteo-sortir-over.png"; path = "Resources/dialer-meteo-sortir-over.png"; sourceTree = ""; }; + D3F83EF4158205A100336684 /* micro-OFF-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro-OFF-actif.png"; path = "Resources/micro-OFF-actif.png"; sourceTree = ""; }; + D3F83EF5158205A100336684 /* micro-OFF-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro-OFF-over.png"; path = "Resources/micro-OFF-over.png"; sourceTree = ""; }; + D3F83EF6158205A100336684 /* micro-ON-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro-ON-actif.png"; path = "Resources/micro-ON-actif.png"; sourceTree = ""; }; + D3F83EF7158205A100336684 /* micro-ON-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro-ON-over.png"; path = "Resources/micro-ON-over.png"; sourceTree = ""; }; + D3F83EF8158205A100336684 /* pause-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause-actif.png"; path = "Resources/pause-actif.png"; sourceTree = ""; }; + D3F83EF9158205A100336684 /* pause-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause-over.png"; path = "Resources/pause-over.png"; sourceTree = ""; }; + D3F83EFA158205A100336684 /* raccrocher-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "raccrocher-actif.png"; path = "Resources/raccrocher-actif.png"; sourceTree = ""; }; + D3F83EFB158205A100336684 /* raccrocher-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "raccrocher-over.png"; path = "Resources/raccrocher-over.png"; sourceTree = ""; }; + D3F83EFC158205A100336684 /* speacker-OFF-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speacker-OFF-actif.png"; path = "Resources/speacker-OFF-actif.png"; sourceTree = ""; }; + D3F83EFD158205A100336684 /* speacker-OFF-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speacker-OFF-over.png"; path = "Resources/speacker-OFF-over.png"; sourceTree = ""; }; + D3F83EFE158205A100336684 /* speacker-ON-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speacker-ON-actif.png"; path = "Resources/speacker-ON-actif.png"; sourceTree = ""; }; + D3F83EFF158205A100336684 /* speacker-ON-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speacker-ON-over.png"; path = "Resources/speacker-ON-over.png"; sourceTree = ""; }; + D3F83F00158205A100336684 /* video-OFF-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-OFF-actif.png"; path = "Resources/video-OFF-actif.png"; sourceTree = ""; }; + D3F83F01158205A100336684 /* video-OFF-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-OFF-over.png"; path = "Resources/video-OFF-over.png"; sourceTree = ""; }; + D3F83F02158205A100336684 /* video-ON-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-ON-actif.png"; path = "Resources/video-ON-actif.png"; sourceTree = ""; }; + D3F83F03158205A100336684 /* video-ON-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-ON-over.png"; path = "Resources/video-ON-over.png"; sourceTree = ""; }; + D3F83F2C1582223B00336684 /* 0-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "0-actif.png"; path = "Resources/0-actif.png"; sourceTree = ""; }; + D3F83F2D1582223B00336684 /* 0-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "0-over.png"; path = "Resources/0-over.png"; sourceTree = ""; }; + D3F83F2E1582223B00336684 /* 1-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "1-actif.png"; path = "Resources/1-actif.png"; sourceTree = ""; }; + D3F83F2F1582223B00336684 /* 1-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "1-over.png"; path = "Resources/1-over.png"; sourceTree = ""; }; + D3F83F301582223B00336684 /* 2-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "2-actif.png"; path = "Resources/2-actif.png"; sourceTree = ""; }; + D3F83F311582223B00336684 /* 2-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "2-over.png"; path = "Resources/2-over.png"; sourceTree = ""; }; + D3F83F321582223B00336684 /* 3-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "3-actif.png"; path = "Resources/3-actif.png"; sourceTree = ""; }; + D3F83F331582223B00336684 /* 3-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "3-over.png"; path = "Resources/3-over.png"; sourceTree = ""; }; + D3F83F341582223B00336684 /* 4-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "4-actif.png"; path = "Resources/4-actif.png"; sourceTree = ""; }; + D3F83F351582223B00336684 /* 4-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "4-over.png"; path = "Resources/4-over.png"; sourceTree = ""; }; + D3F83F361582223B00336684 /* 5-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "5-actif.png"; path = "Resources/5-actif.png"; sourceTree = ""; }; + D3F83F371582223B00336684 /* 5-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "5-over.png"; path = "Resources/5-over.png"; sourceTree = ""; }; + D3F83F381582223B00336684 /* 6-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "6-actif.png"; path = "Resources/6-actif.png"; sourceTree = ""; }; + D3F83F391582223B00336684 /* 6-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "6-over.png"; path = "Resources/6-over.png"; sourceTree = ""; }; + D3F83F3A1582223B00336684 /* 7-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "7-actif.png"; path = "Resources/7-actif.png"; sourceTree = ""; }; + D3F83F3B1582223B00336684 /* 7-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "7-over.png"; path = "Resources/7-over.png"; sourceTree = ""; }; + D3F83F3C1582223B00336684 /* 8-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "8-actif.png"; path = "Resources/8-actif.png"; sourceTree = ""; }; + D3F83F3D1582223B00336684 /* 8-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "8-over.png"; path = "Resources/8-over.png"; sourceTree = ""; }; + D3F83F3E1582223B00336684 /* 9-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "9-actif.png"; path = "Resources/9-actif.png"; sourceTree = ""; }; + D3F83F3F1582223B00336684 /* 9-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "9-over.png"; path = "Resources/9-over.png"; sourceTree = ""; }; + D3F83F401582223B00336684 /* diese-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "diese-actif.png"; path = "Resources/diese-actif.png"; sourceTree = ""; }; + D3F83F411582223B00336684 /* diese-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "diese-over.png"; path = "Resources/diese-over.png"; sourceTree = ""; }; + D3F83F421582223B00336684 /* etoile-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "etoile-actif.png"; path = "Resources/etoile-actif.png"; sourceTree = ""; }; + D3F83F431582223B00336684 /* etoile-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "etoile-over.png"; path = "Resources/etoile-over.png"; sourceTree = ""; }; + D3F83F741582253100336684 /* decrocher-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "decrocher-actif.png"; path = "Resources/decrocher-actif.png"; sourceTree = ""; }; + D3F83F751582253100336684 /* decrocher-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "decrocher-over.png"; path = "Resources/decrocher-over.png"; sourceTree = ""; }; + D3F83F761582253100336684 /* refuser-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "refuser-actif.png"; path = "Resources/refuser-actif.png"; sourceTree = ""; }; + D3F83F771582253100336684 /* refuser-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "refuser-over.png"; path = "Resources/refuser-over.png"; sourceTree = ""; }; + D3F83F801582278D00336684 /* cancel-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cancel-actif.png"; path = "Resources/cancel-actif.png"; sourceTree = ""; }; + D3F83F811582278D00336684 /* cancel-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cancel-over.png"; path = "Resources/cancel-over.png"; sourceTree = ""; }; + D3F83F821582278D00336684 /* contact-actif-add-call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contact-actif-add-call.png"; path = "Resources/contact-actif-add-call.png"; sourceTree = ""; }; + D3F83F831582278D00336684 /* contact-over-add-call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contact-over-add-call.png"; path = "Resources/contact-over-add-call.png"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -811,9 +967,9 @@ 2242D9C710D691F900E9963F /* GenericTabViewController.h */, 2242D9C810D691F900E9963F /* GenericTabViewController.m */, 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */, - 222A483312F7176F0075F07F /* IncallViewController.h */, - 222A483212F7176F0075F07F /* IncallViewController.m */, - 222A483112F7176F0075F07F /* IncallViewController.xib */, + D3F83EE91582021700336684 /* InCallViewController.h */, + D3F83EEA1582021700336684 /* InCallViewController.m */, + D3F83EEB1582021700336684 /* InCallViewController.xib */, 1D3623240D0F684500981E51 /* LinphoneAppDelegate.h */, 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */, 2214EB7012F84668002A5394 /* LinphoneUI */, @@ -1237,6 +1393,58 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + D3F83F801582278D00336684 /* cancel-actif.png */, + D3F83F811582278D00336684 /* cancel-over.png */, + D3F83F821582278D00336684 /* contact-actif-add-call.png */, + D3F83F831582278D00336684 /* contact-over-add-call.png */, + D3F83F741582253100336684 /* decrocher-actif.png */, + D3F83F751582253100336684 /* decrocher-over.png */, + D3F83F761582253100336684 /* refuser-actif.png */, + D3F83F771582253100336684 /* refuser-over.png */, + D3F83F2C1582223B00336684 /* 0-actif.png */, + D3F83F2D1582223B00336684 /* 0-over.png */, + D3F83F2E1582223B00336684 /* 1-actif.png */, + D3F83F2F1582223B00336684 /* 1-over.png */, + D3F83F301582223B00336684 /* 2-actif.png */, + D3F83F311582223B00336684 /* 2-over.png */, + D3F83F321582223B00336684 /* 3-actif.png */, + D3F83F331582223B00336684 /* 3-over.png */, + D3F83F341582223B00336684 /* 4-actif.png */, + D3F83F351582223B00336684 /* 4-over.png */, + D3F83F361582223B00336684 /* 5-actif.png */, + D3F83F371582223B00336684 /* 5-over.png */, + D3F83F381582223B00336684 /* 6-actif.png */, + D3F83F391582223B00336684 /* 6-over.png */, + D3F83F3A1582223B00336684 /* 7-actif.png */, + D3F83F3B1582223B00336684 /* 7-over.png */, + D3F83F3C1582223B00336684 /* 8-actif.png */, + D3F83F3D1582223B00336684 /* 8-over.png */, + D3F83F3E1582223B00336684 /* 9-actif.png */, + D3F83F3F1582223B00336684 /* 9-over.png */, + D3F83F401582223B00336684 /* diese-actif.png */, + D3F83F411582223B00336684 /* diese-over.png */, + D3F83F421582223B00336684 /* etoile-actif.png */, + D3F83F431582223B00336684 /* etoile-over.png */, + D3F83EF0158205A100336684 /* add-call-actif.png */, + D3F83EF1158205A100336684 /* add-call-over.png */, + D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */, + D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */, + D3F83EF4158205A100336684 /* micro-OFF-actif.png */, + D3F83EF5158205A100336684 /* micro-OFF-over.png */, + D3F83EF6158205A100336684 /* micro-ON-actif.png */, + D3F83EF7158205A100336684 /* micro-ON-over.png */, + D3F83EF8158205A100336684 /* pause-actif.png */, + D3F83EF9158205A100336684 /* pause-over.png */, + D3F83EFA158205A100336684 /* raccrocher-actif.png */, + D3F83EFB158205A100336684 /* raccrocher-over.png */, + D3F83EFC158205A100336684 /* speacker-OFF-actif.png */, + D3F83EFD158205A100336684 /* speacker-OFF-over.png */, + D3F83EFE158205A100336684 /* speacker-ON-actif.png */, + D3F83EFF158205A100336684 /* speacker-ON-over.png */, + D3F83F00158205A100336684 /* video-OFF-actif.png */, + D3F83F01158205A100336684 /* video-OFF-over.png */, + D3F83F02158205A100336684 /* video-ON-actif.png */, + D3F83F03158205A100336684 /* video-ON-over.png */, D38327FC158100E400FA0D23 /* contacts-over.png */, D38327FD158100E400FA0D23 /* history-over.png */, D38327FE158100E400FA0D23 /* settings-over.png */, @@ -1405,7 +1613,6 @@ 225CB2FA11ABB76400628906 /* linphone-banner.png in Resources */, 2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */, 2242E313125235120061DDCE /* oldphone-mono-30s.caf in Resources */, - 222A483412F7176F0075F07F /* IncallViewController.xib in Resources */, 2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */, 228B19AF130290C500F154D3 /* iTunesArtwork in Resources */, 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, @@ -1468,6 +1675,59 @@ D3832801158100E400FA0D23 /* history-over.png in Resources */, D3832802158100E400FA0D23 /* settings-over.png in Resources */, D3832803158100E400FA0D23 /* tchat-over.png in Resources */, + D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */, + D3F83F04158205A100336684 /* add-call-actif.png in Resources */, + D3F83F06158205A100336684 /* add-call-over.png in Resources */, + D3F83F08158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */, + D3F83F0A158205A100336684 /* dialer-meteo-sortir-over.png in Resources */, + D3F83F0C158205A100336684 /* micro-OFF-actif.png in Resources */, + D3F83F0E158205A100336684 /* micro-OFF-over.png in Resources */, + D3F83F10158205A100336684 /* micro-ON-actif.png in Resources */, + D3F83F12158205A100336684 /* micro-ON-over.png in Resources */, + D3F83F14158205A100336684 /* pause-actif.png in Resources */, + D3F83F16158205A100336684 /* pause-over.png in Resources */, + D3F83F18158205A100336684 /* raccrocher-actif.png in Resources */, + D3F83F1A158205A100336684 /* raccrocher-over.png in Resources */, + D3F83F1C158205A100336684 /* speacker-OFF-actif.png in Resources */, + D3F83F1E158205A100336684 /* speacker-OFF-over.png in Resources */, + D3F83F20158205A100336684 /* speacker-ON-actif.png in Resources */, + D3F83F22158205A100336684 /* speacker-ON-over.png in Resources */, + D3F83F24158205A100336684 /* video-OFF-actif.png in Resources */, + D3F83F26158205A100336684 /* video-OFF-over.png in Resources */, + D3F83F28158205A100336684 /* video-ON-actif.png in Resources */, + D3F83F2A158205A100336684 /* video-ON-over.png in Resources */, + D3F83F441582223B00336684 /* 0-actif.png in Resources */, + D3F83F461582223B00336684 /* 0-over.png in Resources */, + D3F83F481582223B00336684 /* 1-actif.png in Resources */, + D3F83F4A1582223B00336684 /* 1-over.png in Resources */, + D3F83F4C1582223B00336684 /* 2-actif.png in Resources */, + D3F83F4E1582223B00336684 /* 2-over.png in Resources */, + D3F83F501582223B00336684 /* 3-actif.png in Resources */, + D3F83F521582223B00336684 /* 3-over.png in Resources */, + D3F83F541582223B00336684 /* 4-actif.png in Resources */, + D3F83F561582223B00336684 /* 4-over.png in Resources */, + D3F83F581582223B00336684 /* 5-actif.png in Resources */, + D3F83F5A1582223B00336684 /* 5-over.png in Resources */, + D3F83F5C1582223B00336684 /* 6-actif.png in Resources */, + D3F83F5E1582223B00336684 /* 6-over.png in Resources */, + D3F83F601582223B00336684 /* 7-actif.png in Resources */, + D3F83F621582223B00336684 /* 7-over.png in Resources */, + D3F83F641582223B00336684 /* 8-actif.png in Resources */, + D3F83F661582223B00336684 /* 8-over.png in Resources */, + D3F83F681582223B00336684 /* 9-actif.png in Resources */, + D3F83F6A1582223B00336684 /* 9-over.png in Resources */, + D3F83F6C1582223B00336684 /* diese-actif.png in Resources */, + D3F83F6E1582223B00336684 /* diese-over.png in Resources */, + D3F83F701582223B00336684 /* etoile-actif.png in Resources */, + D3F83F721582223B00336684 /* etoile-over.png in Resources */, + D3F83F781582253100336684 /* decrocher-actif.png in Resources */, + D3F83F7A1582253100336684 /* decrocher-over.png in Resources */, + D3F83F7C1582253100336684 /* refuser-actif.png in Resources */, + D3F83F7E1582253100336684 /* refuser-over.png in Resources */, + D3F83F841582278D00336684 /* cancel-actif.png in Resources */, + D3F83F861582278D00336684 /* cancel-over.png in Resources */, + D3F83F881582278D00336684 /* contact-actif-add-call.png in Resources */, + D3F83F8A1582278D00336684 /* contact-over-add-call.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1493,7 +1753,6 @@ 22D8F137147548E2008C97DB /* linphone-banner.png in Resources */, 22D8F138147548E2008C97DB /* MoreViewController.xib in Resources */, 22D8F139147548E2008C97DB /* oldphone-mono-30s.caf in Resources */, - 22D8F13A147548E2008C97DB /* IncallViewController.xib in Resources */, 22D8F13B147548E2008C97DB /* FirstLoginViewController.xib in Resources */, 22D8F13C147548E2008C97DB /* iTunesArtwork in Resources */, 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */, @@ -1537,6 +1796,59 @@ 3418845D14C7077400EA48C7 /* status_gray.png in Resources */, 57282931154AF1460076F540 /* history-orange.png in Resources */, 57282933154AF14D0076F540 /* dialer-orange.png in Resources */, + D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */, + D3F83F05158205A100336684 /* add-call-actif.png in Resources */, + D3F83F07158205A100336684 /* add-call-over.png in Resources */, + D3F83F09158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */, + D3F83F0B158205A100336684 /* dialer-meteo-sortir-over.png in Resources */, + D3F83F0D158205A100336684 /* micro-OFF-actif.png in Resources */, + D3F83F0F158205A100336684 /* micro-OFF-over.png in Resources */, + D3F83F11158205A100336684 /* micro-ON-actif.png in Resources */, + D3F83F13158205A100336684 /* micro-ON-over.png in Resources */, + D3F83F15158205A100336684 /* pause-actif.png in Resources */, + D3F83F17158205A100336684 /* pause-over.png in Resources */, + D3F83F19158205A100336684 /* raccrocher-actif.png in Resources */, + D3F83F1B158205A100336684 /* raccrocher-over.png in Resources */, + D3F83F1D158205A100336684 /* speacker-OFF-actif.png in Resources */, + D3F83F1F158205A100336684 /* speacker-OFF-over.png in Resources */, + D3F83F21158205A100336684 /* speacker-ON-actif.png in Resources */, + D3F83F23158205A100336684 /* speacker-ON-over.png in Resources */, + D3F83F25158205A100336684 /* video-OFF-actif.png in Resources */, + D3F83F27158205A100336684 /* video-OFF-over.png in Resources */, + D3F83F29158205A100336684 /* video-ON-actif.png in Resources */, + D3F83F2B158205A100336684 /* video-ON-over.png in Resources */, + D3F83F451582223B00336684 /* 0-actif.png in Resources */, + D3F83F471582223B00336684 /* 0-over.png in Resources */, + D3F83F491582223B00336684 /* 1-actif.png in Resources */, + D3F83F4B1582223B00336684 /* 1-over.png in Resources */, + D3F83F4D1582223B00336684 /* 2-actif.png in Resources */, + D3F83F4F1582223B00336684 /* 2-over.png in Resources */, + D3F83F511582223B00336684 /* 3-actif.png in Resources */, + D3F83F531582223B00336684 /* 3-over.png in Resources */, + D3F83F551582223B00336684 /* 4-actif.png in Resources */, + D3F83F571582223B00336684 /* 4-over.png in Resources */, + D3F83F591582223B00336684 /* 5-actif.png in Resources */, + D3F83F5B1582223B00336684 /* 5-over.png in Resources */, + D3F83F5D1582223B00336684 /* 6-actif.png in Resources */, + D3F83F5F1582223B00336684 /* 6-over.png in Resources */, + D3F83F611582223B00336684 /* 7-actif.png in Resources */, + D3F83F631582223B00336684 /* 7-over.png in Resources */, + D3F83F651582223B00336684 /* 8-actif.png in Resources */, + D3F83F671582223B00336684 /* 8-over.png in Resources */, + D3F83F691582223B00336684 /* 9-actif.png in Resources */, + D3F83F6B1582223B00336684 /* 9-over.png in Resources */, + D3F83F6D1582223B00336684 /* diese-actif.png in Resources */, + D3F83F6F1582223B00336684 /* diese-over.png in Resources */, + D3F83F711582223B00336684 /* etoile-actif.png in Resources */, + D3F83F731582223B00336684 /* etoile-over.png in Resources */, + D3F83F791582253100336684 /* decrocher-actif.png in Resources */, + D3F83F7B1582253100336684 /* decrocher-over.png in Resources */, + D3F83F7D1582253100336684 /* refuser-actif.png in Resources */, + D3F83F7F1582253100336684 /* refuser-over.png in Resources */, + D3F83F851582278D00336684 /* cancel-actif.png in Resources */, + D3F83F871582278D00336684 /* cancel-over.png in Resources */, + D3F83F891582278D00336684 /* contact-actif-add-call.png in Resources */, + D3F83F8B1582278D00336684 /* contact-over-add-call.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1570,12 +1882,12 @@ 22E028B713B4CCBD0068A713 /* VideoViewController.m in Sources */, 22AA8B0113D83F6300B30535 /* UICamSwitch.m in Sources */, 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */, - 2211DBC014769CB200DEE054 /* IncallViewController.m in Sources */, 344ABD77147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, 34CA8539148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, 3418844814C6CAD300EA48C7 /* StatusSubViewController.m in Sources */, 340751E7150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */, 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, + D3F83EEC1582021700336684 /* InCallViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1606,12 +1918,12 @@ 22D8F158147548E2008C97DB /* VideoViewController.m in Sources */, 22D8F159147548E2008C97DB /* UICamSwitch.m in Sources */, 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */, - 2211DBC114769CB300DEE054 /* IncallViewController.m in Sources */, 344ABD78147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, 34CA853A148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, 3418844914C6CAD300EA48C7 /* StatusSubViewController.m in Sources */, 340751E8150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */, 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, + D3F83EED1582021700336684 /* InCallViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From f01c973e1149b23970ef3fb3a88bc6e537cad691 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 11 Jun 2012 17:23:03 +0200 Subject: [PATCH 006/397] Continue working on new ui --- Classes/LinphoneApp.xib | 404 ++++++ Classes/LinphoneAppDelegate.m | 14 +- Classes/LinphoneUI/LinphoneMainBar.h | 30 + Classes/LinphoneUI/LinphoneMainBar.m | 59 + Classes/LinphoneUI/LinphoneMainBar.xib | 454 ++++++ Classes/LinphoneUI/LinphoneStatusBar.h | 27 + Classes/LinphoneUI/LinphoneStatusBar.m | 34 + Classes/LinphoneUI/LinphoneStatusBar.xib | 156 +++ Classes/PhoneMainView.h | 53 + Classes/PhoneMainView.m | 135 ++ Classes/PhoneMainView.xib | 1261 ++++++++--------- Classes/PhoneViewController.xib | 1631 ++++++++++++---------- Resources/add-contact-actif.png | Bin 0 -> 4832 bytes Resources/add-contact-inactif.png | Bin 0 -> 4662 bytes Resources/add-contact-over.png | Bin 0 -> 4798 bytes Resources/appeler-actif.png | Bin 0 -> 9538 bytes Resources/appeler-over.png | Bin 0 -> 5217 bytes Resources/backspace-actif.png | Bin 0 -> 4693 bytes Resources/backspace-over.png | Bin 0 -> 4716 bytes Resources/barre-noire-top.png | Bin 0 -> 1218 bytes Resources/champ-saisie-numero.png | Bin 0 -> 5001 bytes Resources/fond-clavier.png | Bin 0 -> 4372 bytes linphone-Info.plist | 2 +- linphone.xcodeproj/project.pbxproj | 232 ++- main.m | 1 + 25 files changed, 2974 insertions(+), 1519 deletions(-) create mode 100644 Classes/LinphoneApp.xib create mode 100644 Classes/LinphoneUI/LinphoneMainBar.h create mode 100644 Classes/LinphoneUI/LinphoneMainBar.m create mode 100644 Classes/LinphoneUI/LinphoneMainBar.xib create mode 100644 Classes/LinphoneUI/LinphoneStatusBar.h create mode 100644 Classes/LinphoneUI/LinphoneStatusBar.m create mode 100644 Classes/LinphoneUI/LinphoneStatusBar.xib create mode 100644 Classes/PhoneMainView.h create mode 100644 Classes/PhoneMainView.m create mode 100644 Resources/add-contact-actif.png create mode 100644 Resources/add-contact-inactif.png create mode 100644 Resources/add-contact-over.png create mode 100644 Resources/appeler-actif.png create mode 100644 Resources/appeler-over.png create mode 100644 Resources/backspace-actif.png create mode 100644 Resources/backspace-over.png create mode 100644 Resources/barre-noire-top.png create mode 100644 Resources/champ-saisie-numero.png create mode 100644 Resources/fond-clavier.png diff --git a/Classes/LinphoneApp.xib b/Classes/LinphoneApp.xib new file mode 100644 index 000000000..745729525 --- /dev/null +++ b/Classes/LinphoneApp.xib @@ -0,0 +1,404 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIWindow + IBUICustomObject + IBUIViewController + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + IBCocoaTouchFramework + + + + 1316 + + {320, 480} + + + + + 1 + MSAxIDEAA + + NO + NO + + IBCocoaTouchFramework + YES + + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + + + + delegate + + + + 6 + + + + rootViewController + + + + 10 + + + + + + 0 + + + + + + 2 + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + linphoneAppDelegate + + + 9 + + + PhoneMainView + + + + + UIApplication + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + linphoneAppDelegate + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + PhoneMainView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 11 + + + + + ABPeoplePickerNavigationController + UINavigationController + + IBProjectSource + ./Classes/ABPeoplePickerNavigationController.h + + + + MainScreenWithVideoPreview + UIViewController + + PhoneViewController + UIWindow + + + + phoneMainView + PhoneViewController + + + window + UIWindow + + + + IBProjectSource + ./Classes/MainScreenWithVideoPreview.h + + + + PhoneMainView + UIViewController + + UIView + UIView + UIView + UIView + UIView + UIView + UIView + + + + addCallTabBar + UIView + + + callTabBar + UIView + + + contentView + UIView + + + incomingTabBar + UIView + + + mainTabBar + UIView + + + statusBarView + UIView + + + tabBarView + UIView + + + + IBProjectSource + ./Classes/PhoneMainView.h + + + + PhoneViewController + UIViewController + + UITextField + UIButton + UIButton + UIButton + UIView + UIButton + UIEraseButton + UIButton + UIButton + UIButton + MainScreenWithVideoPreview + UITabBarController + UIButton + UIButton + UIButton + UIButton + UIButton + UILabel + UIView + UIButton + UIButton + UIButton + UIButton + + + + address + UITextField + + + backToCallView + UIButton + + + callLarge + UIButton + + + callShort + UIButton + + + dialerView + UIView + + + eight + UIButton + + + erase + UIEraseButton + + + five + UIButton + + + four + UIButton + + + hash + UIButton + + + mMainScreenWithVideoPreview + MainScreenWithVideoPreview + + + myTabBarController + UITabBarController + + + nine + UIButton + + + one + UIButton + + + seven + UIButton + + + six + UIButton + + + star + UIButton + + + status + UILabel + + + statusViewHolder + UIView + + + switchCamera + UIButton + + + three + UIButton + + + two + UIButton + + + zero + UIButton + + + + IBProjectSource + ./Classes/PhoneViewController.h + + + + UIEraseButton + UIButton + + IBProjectSource + ./Classes/UIEraseButton.h + + + + linphoneAppDelegate + NSObject + + UIView + ABPeoplePickerNavigationController + PhoneViewController + UITabBarController + UIWindow + + + + myContentView + UIView + + + myPeoplePickerController + ABPeoplePickerNavigationController + + + myPhoneViewController + PhoneViewController + + + myTabBarController + UITabBarController + + + window + UIWindow + + + + IBProjectSource + ./Classes/linphoneAppDelegate.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + 1181 + + diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 5aae06fae..bd89a845c 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -17,6 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#import "PhoneMainView.h" #import "PhoneViewController.h" #import "linphoneAppDelegate.h" #import "ContactPickerDelegate.h" @@ -168,7 +169,8 @@ int __aeabi_idiv(int a, int b) { } -(void) setupUI { - //as defined in PhoneMainView.xib + + /*//as defined in PhoneMainView.xib //dialer myPhoneViewController = (PhoneViewController*) [myTabBarController.viewControllers objectAtIndex: DIALER_TAB_INDEX]; myPhoneViewController.myTabBarController = myTabBarController; @@ -206,7 +208,7 @@ int __aeabi_idiv(int a, int b) { [myTabBarController setViewControllers:newArray animated:NO]; //[window addSubview: myTabBarController.view]; [myCallHistoryTableViewController loadView]; - [myContentView addSubview:myCallHistoryTableViewController.view]; + // [myContentView addSubview:myCallHistoryTableViewController.view]; //[window addSubview: myContentView]; // [myContentViewController addChildViewController:myCallHistoryTableViewController]; @@ -214,7 +216,11 @@ int __aeabi_idiv(int a, int b) { [[LinphoneManager instance] setCallDelegate:myPhoneViewController]; - [UIDevice currentDevice].batteryMonitoringEnabled = YES; + [UIDevice currentDevice].batteryMonitoringEnabled = YES;*/ +/* + PhoneMainView *mainView = [[PhoneMainView alloc] initWithNibName:@"PhoneMainView" bundle:[NSBundle mainBundle]]; + [self.window addSubview:mainView.view]; + [self.window makeKeyAndVisible];*/ } -(void) setupGSMInteraction { @@ -271,7 +277,7 @@ int __aeabi_idiv(int a, int b) { } - (void)dealloc { - [window release]; + //[window release]; [myPeoplePickerController release]; [super dealloc]; } diff --git a/Classes/LinphoneUI/LinphoneMainBar.h b/Classes/LinphoneUI/LinphoneMainBar.h new file mode 100644 index 000000000..c0edcf6f9 --- /dev/null +++ b/Classes/LinphoneUI/LinphoneMainBar.h @@ -0,0 +1,30 @@ +/* LinphoneMainBar.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface LinphoneMainBar : UIViewController { + UIButton *historyButton; + UIButton *dialerButton; +} + +@property (nonatomic, retain) IBOutlet UIButton* historyButton; +@property (nonatomic, retain) IBOutlet UIButton* dialerButton; +-(IBAction) onHistoryClick: (id) event; +@end diff --git a/Classes/LinphoneUI/LinphoneMainBar.m b/Classes/LinphoneUI/LinphoneMainBar.m new file mode 100644 index 000000000..51d0bdf68 --- /dev/null +++ b/Classes/LinphoneUI/LinphoneMainBar.m @@ -0,0 +1,59 @@ +/* LinphoneMainBar.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "LinphoneMainBar.h" +#import "PhoneMainView.h" + +@implementation LinphoneMainBar + +@synthesize historyButton; +@synthesize dialerButton; + + +- (void) viewDidLoad { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveLinphoneMainViewChangeEvent:) name:@"LinphoneMainViewChange" object:nil]; +} + +- (void) receiveLinphoneMainViewChangeEvent: (NSNotification*) notif { + PhoneView view = [[notif.userInfo objectForKey: @"PhoneView"] intValue]; + if(view == PhoneView_Main) { + dialerButton.selected = TRUE; + } else { + dialerButton.selected = FALSE; + } + if(view == PhoneView_CallHistory) { + historyButton.selected = TRUE; + } else { + historyButton.selected = FALSE; + } +} + +- (void) dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [super dealloc]; +} + +- (IBAction) onHistoryClick: (id) sender { + // Change to default view + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_CallHistory] forKey:@"PhoneView"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; +} + + +@end diff --git a/Classes/LinphoneUI/LinphoneMainBar.xib b/Classes/LinphoneUI/LinphoneMainBar.xib new file mode 100644 index 000000000..ae4a512fa --- /dev/null +++ b/Classes/LinphoneUI/LinphoneMainBar.xib @@ -0,0 +1,454 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBProxyObject + IBUIView + IBUIButton + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + -2147483356 + {{0, 7}, {320, 65}} + + + + _NS:9 + + 3 + MQA + + 2 + + + -1 + NO + IBCocoaTouchFramework + + + + 292 + {64, 72} + + + + _NS:9 + NO + + History + + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + history-over.png + + + NSImage + history-selectionne.png + + + NSImage + history-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{64, 0}, {64, 72}} + + + + _NS:9 + NO + + Contacts + + IBCocoaTouchFramework + 0 + 0 + NO + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + contacts-over.png + + + NSImage + contacts-selectionne.png + + + NSImage + contacts-actif.png + + + + + + + 292 + {{128, 0}, {64, 72}} + + + + _NS:9 + NO + + Dialer + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + dialer-actif.png + + + NSImage + dialer-over.png + + + + + + + 292 + {{192, 0}, {64, 72}} + + + + _NS:9 + NO + + Settings + + IBCocoaTouchFramework + 0 + 0 + NO + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + settings-over.png + + + NSImage + settings-selectionne.png + + + NSImage + settings-actif.png + + + + + + + 292 + {{256, 0}, {64, 72}} + + + _NS:9 + NO + + Tchat + + IBCocoaTouchFramework + 0 + 0 + NO + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + tchat-over.png + + + NSImage + tchat-selectionne.png + + + NSImage + tchat-actif.png + + + + + + {320, 72} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NSAwAA + + NO + IBCocoaTouchFramework + + + + + + + dialerButton + + + + 12 + + + + historyButton + + + + 13 + + + + view + + + + 14 + + + + onHistoryClick: + + + 1 + + 15 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + + + + + + + + + mainTabBar + + + 9 + + + settings + + + 8 + + + contacts + + + 7 + + + dialer + + + 6 + + + history + + + 5 + + + tchat + + + 4 + + + mask + + + + + LinphoneMainBar + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 16 + + + + + LinphoneMainBar + UIViewController + + onHistoryClick: + id + + + onHistoryClick: + + onHistoryClick: + id + + + + UIButton + UIButton + + + + dialerButton + UIButton + + + historyButton + UIButton + + + + IBProjectSource + ./Classes/LinphoneMainBar.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {127, 144} + {127, 144} + {127, 144} + {132, 144} + {132, 144} + {127, 144} + {127, 144} + {127, 144} + {127, 144} + {127, 144} + {127, 144} + {127, 144} + {127, 144} + {127, 144} + + 1181 + + diff --git a/Classes/LinphoneUI/LinphoneStatusBar.h b/Classes/LinphoneUI/LinphoneStatusBar.h new file mode 100644 index 000000000..a041cb37e --- /dev/null +++ b/Classes/LinphoneUI/LinphoneStatusBar.h @@ -0,0 +1,27 @@ +/* LinphoneStatusBar.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface LinphoneStatusBar : UIView { + UIView *test; +} + +@property (nonatomic, retain) IBOutlet UIView* test; +@end diff --git a/Classes/LinphoneUI/LinphoneStatusBar.m b/Classes/LinphoneUI/LinphoneStatusBar.m new file mode 100644 index 000000000..21057ad58 --- /dev/null +++ b/Classes/LinphoneUI/LinphoneStatusBar.m @@ -0,0 +1,34 @@ +/* LinphoneStatusBar.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "LinphoneStatusBar.h" + +@implementation LinphoneStatusBar +@synthesize test; +- (id) awakeAfterUsingCoder:(NSCoder*)aDecoder { + NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"LinphoneStatusBar" + owner:nil + options:nil]; + + if ([arrayOfViews count] >= 1){ + [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; + } + return self; +} +@end diff --git a/Classes/LinphoneUI/LinphoneStatusBar.xib b/Classes/LinphoneUI/LinphoneStatusBar.xib new file mode 100644 index 000000000..7cd51fd02 --- /dev/null +++ b/Classes/LinphoneUI/LinphoneStatusBar.xib @@ -0,0 +1,156 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBProxyObject + IBUIView + IBUIImageView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 274 + {320, 23} + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + barre-noire-top.png + + + + {320, 23} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 3 + + + + + + + + 4 + + + background + + + + + LinphoneStatusBar + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 4 + + + + + LinphoneStatusBar + UIView + + test + UIView + + + test + + test + UIView + + + + IBProjectSource + ./Classes/LinphoneStatusBar.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + barre-noire-top.png + {640, 46} + + 1181 + + diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h new file mode 100644 index 000000000..d4ad66c97 --- /dev/null +++ b/Classes/PhoneMainView.h @@ -0,0 +1,53 @@ +/* PhoneMainView.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +typedef enum _PhoneView { + PhoneView_Main, + PhoneView_CallHistory, + PhoneView_END +} PhoneView; + +@interface PhoneMainView : UIViewController { + UIView *statusBarView; + UIView *contentView; + UIView *tabBarView; + PhoneView currentView; + + @private + NSMutableDictionary *viewDescriptions; + NSArray *views; + UIView *callTabBar; + UIViewController *mainTabBar; + UIView *incomingTabBar; + UIView *addCallTabBar; + +} +@property (nonatomic, retain) IBOutlet UIView* statusBarView; +@property (nonatomic, retain) IBOutlet UIView* contentView; +@property (nonatomic, retain) IBOutlet UIView* tabBarView; + +@property (nonatomic, retain) IBOutlet UIView* callTabBar; +@property (nonatomic, retain) IBOutlet UIViewController* mainTabBar; +@property (nonatomic, retain) IBOutlet UIView* incomingTabBar; +@property (nonatomic, retain) IBOutlet UIView* addCallTabBar; + +-(void) changeView: (NSNotification*) notif; +@end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m new file mode 100644 index 000000000..a442a3209 --- /dev/null +++ b/Classes/PhoneMainView.m @@ -0,0 +1,135 @@ +/* PhoneMainView.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "PhoneMainView.h" +#import "CallHistoryTableViewController.h" +typedef enum _TabBar { + TabBar_Main, + TabBar_END +} TabBar; + + +@interface ViewsDescription: NSObject{ + @public + UIViewController *content; + UIViewController *tabBar; + bool statusEnabled; +} +@end +@implementation ViewsDescription +@end + +@implementation PhoneMainView + +@synthesize statusBarView; +@synthesize contentView; +@synthesize tabBarView; + +@synthesize callTabBar; +@synthesize mainTabBar; +@synthesize incomingTabBar; +@synthesize addCallTabBar; + +- (void) changeView: (NSNotification*) notif { + PhoneView view = [[notif.userInfo objectForKey: @"PhoneView"] intValue]; + ViewsDescription *description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; + for (UIView *view in contentView.subviews) { + [view removeFromSuperview]; + } + for (UIView *view in tabBarView.subviews) { + [view removeFromSuperview]; + } + + [contentView addSubview: description->content.view]; + + CGRect contentFrame = contentView.frame; + if(description->statusEnabled) { + statusBarView.hidden = false; + contentFrame.origin.y = statusBarView.frame.size.height + statusBarView.frame.origin.y; + } else { + statusBarView.hidden = true; + contentFrame.origin.y = 0; + } + + + // Resize tabbar + CGRect tabFrame = tabBarView.frame; + tabFrame.origin.y += tabFrame.size.height; + tabFrame.origin.x += tabFrame.size.width; + tabFrame.size.height = description->tabBar.view.frame.size.height; + tabFrame.size.width = description->tabBar.view.frame.size.width; + tabFrame.origin.y -= tabFrame.size.height; + tabFrame.origin.x -= tabFrame.size.width; + tabBarView.frame = tabFrame; + for (UIView *view in description->tabBar.view.subviews) { + if(view.tag == -1) { + contentFrame.size.height = tabFrame.origin.y - contentFrame.origin.y + view.frame.origin.y; + } + } + + + // contentView.frame = contentFrame; + [tabBarView addSubview: description->tabBar.view]; +} + +-(void)viewDidLoad { + [super viewDidLoad]; + UIView *dumb; + + // Init view descriptions + viewDescriptions = [[NSMutableDictionary alloc] init]; + + // Load Bars + dumb = mainTabBar.view; + + // Main View + PhoneViewController* myPhoneViewController = [[PhoneViewController alloc] + initWithNibName:@"PhoneViewController" + bundle:[NSBundle mainBundle]]; + [myPhoneViewController loadView]; + ViewsDescription *mainViewDescription = [ViewsDescription alloc]; + mainViewDescription->content = myPhoneViewController; + mainViewDescription->tabBar = mainTabBar; + mainViewDescription->statusEnabled = true; + [viewDescriptions setObject:mainViewDescription forKey:[NSNumber numberWithInt: PhoneView_Main]]; + + // Call History View + CallHistoryTableViewController* myCallHistoryTableViewController = [[CallHistoryTableViewController alloc] + initWithNibName:@"CallHistoryTableViewController" + bundle:[NSBundle mainBundle]]; + [myCallHistoryTableViewController loadView]; + ViewsDescription *callHistoryDescription = [ViewsDescription alloc]; + callHistoryDescription->content = myCallHistoryTableViewController; + callHistoryDescription->tabBar = mainTabBar; + callHistoryDescription->statusEnabled = true; + [viewDescriptions setObject:callHistoryDescription forKey:[NSNumber numberWithInt: PhoneView_CallHistory]]; + + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil]; + + // Change to default view + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Main] forKey:@"PhoneView"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; +} + +- (void)dealloc { + [super dealloc]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} +@end \ No newline at end of file diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 794697522..7ee290cec 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -12,15 +12,10 @@ YES - IBProxyObject - IBUITabBarItem - IBUIViewController - IBUICustomObject - IBUITabBarController - IBUIWindow - IBUITabBar IBUIButton + IBUIViewController IBUIView + IBProxyObject YES @@ -40,20 +35,101 @@ IBFirstResponder IBCocoaTouchFramework - - IBCocoaTouchFramework - - + 292 YES - - + + + 274 + {320, 23} + + + + _NS:9 + + 3 + MQA + + 2 + + + YES + IBCocoaTouchFramework + + + + 314 + {{0, 23}, {320, 380}} + + + + _NS:9 + + 1 + MCAxIDAuMDkwOTI0NTczOTEgMAA + + YES + IBCocoaTouchFramework + + + + 280 + {{0, 400}, {320, 60}} + + + + _NS:9 + + 1 + MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MSAwAA + + YES + IBCocoaTouchFramework + + + {320, 460} + + + + _NS:9 + + 3 + MQA + + + IBCocoaTouchFramework + + + + 292 + + YES + + + -2147483356 + {320, 135} + + + + _NS:9 + + 3 + MQA + + + -1 + NO + IBCocoaTouchFramework + + + 292 {80, 67} - - + + + _NS:9 NO @@ -90,18 +166,19 @@ 2 15 - + Helvetica-Bold 15 16 - - + + 292 {{80, 0}, {80, 67}} - - + + + _NS:9 NO @@ -129,14 +206,15 @@ micro-OFF-actif.png - + - - + + 292 {{160, 0}, {80, 67}} - - + + + _NS:9 NO @@ -155,20 +233,21 @@ NSImage speacker-ON-over.png - + NSImage speacker-OFF-actif.png - + - + - - + + 292 {{240, 0}, {80, 67}} - - + + + _NS:9 NO @@ -183,24 +262,25 @@ MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + NSImage add-call-over.png - + NSImage add-call-actif.png - + - - + + 264 {{0, 67}, {105, 68}} - - + + + _NS:9 NO @@ -215,7 +295,7 @@ MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + NSImage pause-over.png @@ -223,16 +303,17 @@ NSImage pause-actif.png - + - + - - + + 264 {{105, 67}, {111, 68}} - - + + + _NS:9 NO @@ -247,7 +328,7 @@ MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + NSImage raccrocher-over.png @@ -255,15 +336,16 @@ NSImage raccrocher-actif.png - + - + - - + + 264 {{215, 67}, {105, 68}} - + + _NS:9 NO @@ -279,7 +361,7 @@ MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + NSImage dialer-meteo-sortir-over.png @@ -287,14 +369,15 @@ NSImage dialer-meteo-sortir-actif.png - + - + {320, 135} - + + _NS:9 1 @@ -303,335 +386,35 @@ NO IBCocoaTouchFramework - + 292 YES - - - 292 - {64, 72} - - - _NS:9 - NO - - History - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - history-over.png - - - NSImage - history-selectionne.png - - - NSImage - history-actif.png - - - - - - - 292 - {{64, 0}, {64, 72}} - - - _NS:9 - NO - - Contacts - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - contacts-over.png - - - NSImage - contacts-selectionne.png - - - NSImage - contacts-actif.png - - - - - - - 292 - {{128, 0}, {64, 72}} - - - _NS:9 - NO - - Dialer - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - dialer-over.png - - - NSImage - dialer-actif.png - - - - - - - - 292 - {{192, 0}, {64, 72}} - - - _NS:9 - NO - - Settings - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - settings-over.png - - - NSImage - settings-selectionne.png - - - NSImage - settings-actif.png - - - - - - - 292 - {{256, 0}, {64, 72}} - - - _NS:9 - NO - - Tchat - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - tchat-over.png - - - NSImage - tchat-selectionne.png - - - NSImage - tchat-actif.png - - - - - - {320, 72} - - - _NS:9 - - 1 - MCAxIDAuMTkxOTQ1NDc1NSAwAA - - NO - IBCocoaTouchFramework - - - - 1316 - - YES - - - 1316 - {{0, 20}, {320, 400}} - - + + + -2147483356 + {{0, 9}, {320, 67}} + + + _NS:9 3 MQA - - 2 - + - YES + -1 + NO IBCocoaTouchFramework - - - {320, 480} - - - - 1 - MSAxIDEAA - - NO - NO - - IBCocoaTouchFramework - - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - History - - History - - NSImage - history-orange.png - - IBCocoaTouchFramework - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - YES - - - - Dialer - - NSImage - dialer-orange.png - - IBCocoaTouchFramework - - - PhoneViewController - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - IBCocoaTouchFramework - 5 - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - - IBCocoaTouchFramework - 0 - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - - -2147483382 - {{0, 431}, {320, 49}} - - - - 3 - MCAwAA - - NO - IBCocoaTouchFramework - - - - - 292 - - YES - - + + 292 {160, 77} - - + + + _NS:9 NO @@ -655,13 +438,14 @@ decrocher-actif.png - + - - + + 292 {{160, 0}, {160, 77}} - + + _NS:9 NO @@ -686,12 +470,13 @@ refuser-actif.png - + {320, 77} - + + _NS:9 1 @@ -700,17 +485,35 @@ NO IBCocoaTouchFramework - + 292 YES - - + + + -2147483356 + {{0, 7}, {320, 65}} + + + + _NS:9 + + 3 + MQA + + + -1 + NO + IBCocoaTouchFramework + + + 292 {128, 72} - - + + + _NS:9 NO @@ -734,13 +537,14 @@ contact-actif-add-call.png - + - - + + 292 {{192, 0}, {128, 72}} - + + _NS:9 NO @@ -765,14 +569,15 @@ cancel-actif.png - + - - + + 292 {{128, 0}, {64, 72}} - - + + + _NS:9 NO @@ -787,16 +592,23 @@ MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - + + NSImage + dialer-over.png + + + NSImage + dialer-actif.png + + - + {320, 72} - + + _NS:9 1 @@ -805,41 +617,83 @@ NO IBCocoaTouchFramework + + NO + + + 1 + 1 + + IBCocoaTouchFramework + NO + YES - delegate + view - + - 6 + 158 - window - - + tabBarView + + - 7 + 160 - myTabBarController - - - - 14 - - - - myContentView - + contentView + - 55 + 159 + + + + addCallTabBar + + + + 164 + + + + callTabBar + + + + 165 + + + + incomingTabBar + + + + 166 + + + + statusBarView + + + + 176 + + + + mainTabBar + + + + 180 @@ -853,110 +707,139 @@ - - 2 - - - YES - - - - window - -1 File's Owner - - 4 - - - linphoneAppDelegate - -2 - 8 - + 111 + YES - - - - - + + + + + + + + + callTabBar - 9 - - + 118 + + + video - 11 - + 120 + + + micro + + + 122 + + + addCall + + + 121 + + + speaker + + + 117 + + + pause + + + 116 + + + hangup + + + 114 + + + back + + + 123 + YES - + + + - + + incomingTabBar + + + 129 + + + YES + + + + + + + addCallTabBar + + + 130 + + + cancel + + + 131 + + contacts - 12 - - - - - 38 - - - YES - - - + 133 + + dialer - 39 - - - - - 41 - + 152 + YES - + + + - - history + + root - 42 - - - - - 43 - + 135 + YES - - - more - - - 44 - - + + tabBar 53 @@ -964,163 +847,53 @@ YES - + content - 50 - - - YES - - - - - - - - mainTabBar - - - 58 - - - settings - - - 59 - - - tchat - - - 60 - - - contacts - - - 57 - - - dialer - - - 56 - - - history - - - 111 - - - YES - - - - - - - - - - callTabBar - - - 118 - - - video - - - 120 - - - micro - - - 122 - - - addCall - - - 121 - - - speaker - - - 117 - - - pause - - - 116 - - - hangup - - - 114 - - - back - - - 123 - - - YES - - - - - incomingTabBar - - - 124 - - - accept + 169 + + + mask 127 - - + + decline - 129 - + 170 + YES - - - + + mask + + + 172 + + + mask + + + 124 + + + accept + + + 175 + + + statusBar + + + 178 + - addCallTabBar - - - 130 - - - cancel - - - 131 - - - contacts - - - 133 - - - dialer + LinphoneMainBar @@ -1132,7 +905,6 @@ -1.IBPluginDependency -2.CustomClassName -2.IBPluginDependency - 11.IBPluginDependency 111.IBPluginDependency 114.IBPluginDependency 114.IBUIButtonInspectorSelectedStateConfigurationMetadataKey @@ -1142,7 +914,6 @@ 117.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 118.IBPluginDependency 118.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 12.IBPluginDependency 120.IBPluginDependency 120.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 121.IBPluginDependency @@ -1161,43 +932,25 @@ 131.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 133.IBPluginDependency 133.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 2.IBAttributePlaceholdersKey - 2.IBPluginDependency - 38.CustomClassName - 38.IBPluginDependency - 39.IBPluginDependency - 4.CustomClassName - 4.IBPluginDependency - 41.CustomClassName - 41.IBPluginDependency - 42.IBPluginDependency - 43.CustomClassName - 43.IBPluginDependency - 44.IBPluginDependency - 50.IBPluginDependency + 135.IBPluginDependency + 152.IBPluginDependency + 169.IBPluginDependency + 170.IBPluginDependency + 172.IBPluginDependency + 175.CustomClassName + 175.IBPluginDependency + 178.CustomClassName + 178.IBPluginDependency 53.IBPluginDependency - 56.IBPluginDependency - 56.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 57.IBPluginDependency - 57.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 58.IBPluginDependency - 58.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 59.IBPluginDependency - 59.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 60.IBPluginDependency - 60.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 8.IBPluginDependency - 9.IBPluginDependency YES - UIApplication + PhoneMainView com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1206,7 +959,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1224,35 +976,14 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - YES - - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - PhoneViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - linphoneAppDelegate - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - CallHistoryTableViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - MoreViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + LinphoneStatusBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + LinphoneMainBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1269,9 +1000,147 @@ - 133 + 181 + + + + YES + + LinphoneMainBar + UIViewController + + YES + + YES + dialerButton + historyButton + + + YES + UIButton + UIButton + + + + YES + + YES + dialerButton + historyButton + + + YES + + dialerButton + UIButton + + + historyButton + UIButton + + + + + IBProjectSource + ./Classes/LinphoneMainBar.h + + + + LinphoneStatusBar + UIView + + test + UIView + + + test + + test + UIView + + + + IBProjectSource + ./Classes/LinphoneStatusBar.h + + + + PhoneMainView + UIViewController + + YES + + YES + addCallTabBar + callTabBar + contentView + incomingTabBar + mainTabBar + statusBarView + tabBarView + + + YES + UIView + UIView + UIView + UIView + UIViewController + UIView + UIView + + + + YES + + YES + addCallTabBar + callTabBar + contentView + incomingTabBar + mainTabBar + statusBarView + tabBarView + + + YES + + addCallTabBar + UIView + + + callTabBar + UIView + + + contentView + UIView + + + incomingTabBar + UIView + + + mainTabBar + UIViewController + + + statusBarView + UIView + + + tabBarView + UIView + + + + + IBProjectSource + ./Classes/PhoneMainView.h + + + - 0 IBCocoaTouchFramework @@ -1298,20 +1167,12 @@ cancel-over.png contact-actif-add-call.png contact-over-add-call.png - contacts-actif.png - contacts-over.png - contacts-selectionne.png decrocher-actif.png decrocher-over.png dialer-actif.png dialer-meteo-sortir-actif.png dialer-meteo-sortir-over.png - dialer-orange.png dialer-over.png - history-actif.png - history-orange.png - history-over.png - history-selectionne.png micro-OFF-actif.png micro-ON-actif.png micro-ON-over.png @@ -1321,14 +1182,8 @@ raccrocher-over.png refuser-actif.png refuser-over.png - settings-actif.png - settings-over.png - settings-selectionne.png speacker-OFF-actif.png speacker-ON-over.png - tchat-actif.png - tchat-over.png - tchat-selectionne.png video-OFF-actif.png video-ON-actif.png video-ON-over.png @@ -1341,20 +1196,12 @@ {254, 144} {254, 144} {254, 144} - {127, 144} - {127, 144} - {127, 144} {320, 154} {320, 154} {132, 144} {209, 136} {209, 136} - {25, 24} {132, 144} - {127, 144} - {25, 23} - {127, 144} - {127, 144} {160, 134} {160, 134} {160, 134} @@ -1364,14 +1211,8 @@ {222, 136} {320, 154} {320, 154} - {127, 144} - {127, 144} - {127, 144} {160, 134} {160, 134} - {127, 144} - {127, 144} - {127, 144} {160, 134} {160, 134} {160, 134} diff --git a/Classes/PhoneViewController.xib b/Classes/PhoneViewController.xib index f73195a6e..0cc9a7acc 100644 --- a/Classes/PhoneViewController.xib +++ b/Classes/PhoneViewController.xib @@ -12,8 +12,8 @@ YES - IBUIViewController IBUIButton + IBUIImageView IBUIView IBUITextField IBProxyObject @@ -36,492 +36,598 @@ IBFirstResponder IBCocoaTouchFramework - - - - 292 - - YES - - - 292 - - YES - - - 292 - {{254, 0}, {66, 81}} - - - NO - IBCocoaTouchFramework - 0 - 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - effacer.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - + + + 292 + + YES + + + 292 + + YES + + + 292 + {105, 72} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA - - - 292 - {{0, 1}, {255, 80}} - - - - NO - NO - IBCocoaTouchFramework - 0 - - sip: - - 3 - MAA - - YES - 15 - - 1 - 3 - IBCocoaTouchFramework - - 1 - - Helvetica - Helvetica - 0 - 36 - - - Helvetica - 36 - 16 - + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + add-contact-over.png + + + NSImage + add-contact-inactif.png + + + NSImage + add-contact-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 - {320, 81} - - - - IBCocoaTouchFramework + + + 292 + {{105, 0}, {110, 72}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + appeler-over.png + + + NSImage + appeler-actif.png + + + + + + + 292 + {{215, 0}, {105, 72}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + backspace-over.png + + + NSImage + backspace-actif.png + + + + - - - 292 - {255, 20} - - - _NS:196 - - 3 - MCAwAA + {{0, 293}, {320, 72}} + + + _NS:9 + + 3 + MQA + + 2 - IBCocoaTouchFramework - - - - 292 - {{0, 81}, {107, 66}} - - - - 1 - MC40MDAwMDAwMSAxIDEgMAA - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - clavier-01-106px.png - - - - - - - 292 - {{107, 81}, {106, 66}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 2 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - clavier-01-108px.png - - - - - - - 292 - {{213, 81}, {107, 66}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 3 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{0, 147}, {107, 66}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 4 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{107, 147}, {106, 66}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 5 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{213, 147}, {107, 66}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 6 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{0, 213}, {107, 66}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 7 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{107, 213}, {106, 66}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 8 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{213, 213}, {107, 66}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 9 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{0, 279}, {107, 66}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - * - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{107, 279}, {106, 66}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 0+ - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{213, 279}, {107, 66}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - # - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - + IBCocoaTouchFramework + + + + 292 + + YES + + + 292 + {320, 259} + + + _NS:9 + NO + + + + IBCocoaTouchFramework + + NSImage + fond-clavier.png + + + + + 292 + {{0, 11}, {107, 54}} + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 1-over.png + + + NSImage + 1-actif.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + + + + 292 + {{107, 11}, {106, 54}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 2-over.png + + + NSImage + 2-actif.png + + + + + + + 292 + {{213, 11}, {107, 54}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 3-actif.png + + + + + + + 292 + {{0, 73}, {107, 54}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 4-over.png + + + NSImage + 4-actif.png + + + + + + + 292 + {{107, 73}, {106, 54}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 5-over.png + + + NSImage + 5-actif.png + + + + + + + 292 + {{0, 135}, {107, 54}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 7-over.png + + + NSImage + 7-actif.png + + + + + + + 292 + {{213, 73}, {107, 54}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 6-over.png + + + NSImage + 6-actif.png + + + + + + + 292 + {{107, 135}, {106, 54}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 8-over.png + + + NSImage + 8-actif.png + + + + + + + 292 + {{213, 135}, {107, 54}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 9-over.png + + + NSImage + 9-actif.png + + + + + + + 292 + {{0, 197}, {107, 54}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + etoile-over.png + + + NSImage + etoile-actif.png + + + + + + + 292 + {{107, 197}, {106, 54}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 0-over.png + + + NSImage + 0-actif.png + + + + + + + 292 + {{213, 197}, {107, 54}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + diese-over.png + + + NSImage + diese-actif.png + + + + + + {{0, 58}, {320, 260}} + + + _NS:9 + + 3 + MQA + + + IBCocoaTouchFramework + + + + 292 + + YES + + + 292 + {320, 80} + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + champ-saisie-numero.png + + + + + 292 + {320, 60} + + + + 3 + MSAwAA + + NO + NO + IBCocoaTouchFramework + 0 + + sip: + + YES + 15 + + 1 + 3 + IBCocoaTouchFramework + + 1 + + Helvetica + Helvetica + 0 + 36 + + + Helvetica + 36 + 16 + + + + {320, 80} + + + _NS:9 + + 3 + MSAwAA + + + YES + IBCocoaTouchFramework - {{0, 20}, {320, 460}} - - - - 5 - IBCocoaTouchFramework - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - - 292 - {320, 66} + {320, 460} - - NO - NO + + _NS:9 + + 2 + MC4wMjc0NTA5ODI0OCAwLjYwNzg0MzE2MDYgMSAwAA + IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - startcall-gray.png - - - NSImage - startcall-green.png - - - NSImage - clavier-01-160px.png - - - - - - - - 292 - {160, 66} - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Back - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 - - - - - 292 - {160, 66} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - YES + + + view + + + + 176 + address @@ -532,11 +638,35 @@ - view + hash - + - 25 + 46 + + + + zero + + + + 54 + + + + star + + + + 51 + + + + nine + + + + 47 @@ -546,6 +676,22 @@ 43 + + + six + + + + 50 + + + + seven + + + + 49 + five @@ -562,54 +708,6 @@ 45 - - - hash - - - - 46 - - - - nine - - - - 47 - - - - one - - - - 48 - - - - seven - - - - 49 - - - - six - - - - 50 - - - - star - - - - 51 - three @@ -628,59 +726,27 @@ - zero + one - + - 54 + 48 dialerView - + - 158 - - - - statusViewHolder - - - - 169 + 181 erase - + - 151 - - - - callLarge - - - - 164 - - - - backToCallView - - - - 161 - - - - callShort - - - - 163 + 186 @@ -714,142 +780,169 @@ - 80 - + 171 + YES - + + + + view - 1 - + 178 + YES - - - - - - - - - - - - - - - - - - - 38 - - - - - 37 - - - - - 29 - - - - - 39 - - - - - 35 - - - - - 41 - - - - - 40 - - - - - 36 - - - - - 34 - - - - - 33 - - - - - 31 - - - - - 30 - - - - - 157 - - - YES - + - - Dialer + + dialer 4 - - Address + + address - 165 - - - status_view + 179 + + + background - 150 - - - Erase + 180 + + + YES + + + + + + + + + + + + + + + + pad - 162 - - - Call-large + 41 + + + # - 160 - - - back + 40 + + + 0 - 5 - - - Call-short + 39 + + + * + + + 36 + + + 9 + + + 35 + + + 8 + + + 33 + + + 6 + + + 34 + + + 7 + + + 31 + + + 5 + + + 30 + + + 4 + + + 29 + + + 3 + + + 37 + + + 2 + + + 38 + + + 1 + + + 177 + + + background + + + 182 + + + YES + + + + + + toolBar + + + 183 + + + addContact + + + 184 + + + call + + + 185 + + + backspace @@ -861,45 +954,55 @@ -1.IBPluginDependency -2.CustomClassName -2.IBPluginDependency - 1.IBPluginDependency - 1.IBUserGuides - 150.CustomClassName - 150.IBPluginDependency - 157.IBPluginDependency - 160.IBPluginDependency - 162.CustomClassName - 162.IBPluginDependency - 162.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 165.IBPluginDependency + 171.IBPluginDependency + 177.IBPluginDependency + 178.IBPluginDependency + 179.IBPluginDependency + 180.IBPluginDependency + 182.IBPluginDependency + 183.IBPluginDependency + 183.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 184.IBPluginDependency + 184.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 185.CustomClassName + 185.IBPluginDependency + 185.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 29.CustomClassName 29.IBPluginDependency 30.CustomClassName 30.IBPluginDependency + 30.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 31.CustomClassName 31.IBPluginDependency + 31.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 33.CustomClassName 33.IBPluginDependency + 33.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 34.CustomClassName 34.IBPluginDependency + 34.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 35.CustomClassName 35.IBPluginDependency + 35.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 36.CustomClassName 36.IBPluginDependency + 36.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 37.CustomClassName 37.IBPluginDependency + 37.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 38.CustomClassName 38.IBPluginDependency + 38.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 39.CustomClassName 39.IBPluginDependency + 39.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 4.IBPluginDependency 40.CustomClassName 40.IBPluginDependency + 40.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 41.CustomClassName 41.IBPluginDependency - 5.CustomClassName - 5.IBPluginDependency - 5.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 80.IBPluginDependency + 41.IBUIButtonInspectorSelectedStateConfigurationMetadataKey YES @@ -908,56 +1011,54 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - YES - - - 412 - 1 - - - - 65 - 1 - - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIEraseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICallButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICallButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin + @@ -972,7 +1073,7 @@ - 169 + 186 0 @@ -995,21 +1096,73 @@ YES YES - clavier-01-106px.png - clavier-01-108px.png - clavier-01-160px.png - effacer.png - startcall-gray.png - startcall-green.png + 0-actif.png + 0-over.png + 1-actif.png + 1-over.png + 2-actif.png + 2-over.png + 3-actif.png + 4-actif.png + 4-over.png + 5-actif.png + 5-over.png + 6-actif.png + 6-over.png + 7-actif.png + 7-over.png + 8-actif.png + 8-over.png + 9-actif.png + 9-over.png + add-contact-actif.png + add-contact-inactif.png + add-contact-over.png + appeler-actif.png + appeler-over.png + backspace-actif.png + backspace-over.png + champ-saisie-numero.png + diese-actif.png + diese-over.png + etoile-actif.png + etoile-over.png + fond-clavier.png YES - {106, 60} - {108, 60} - {160, 60} - {66, 65} - {60, 52} - {60, 52} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {210, 143} + {210, 143} + {210, 143} + {220, 143} + {220, 143} + {210, 143} + {210, 143} + {640, 135} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {640, 523} 1181 diff --git a/Resources/add-contact-actif.png b/Resources/add-contact-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..2a3f3f6c0b692118418ae0c8b40134434d758730 GIT binary patch literal 4832 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 literal 0 HcmV?d00001 diff --git a/Resources/add-contact-over.png b/Resources/add-contact-over.png new file mode 100644 index 0000000000000000000000000000000000000000..8bc6a0fac23d3f6b3a9ea2476e836c9ddc50d9ea GIT binary patch literal 4798 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 literal 0 HcmV?d00001 diff --git a/Resources/appeler-actif.png b/Resources/appeler-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..08f8cc94801d1dc293348a31db3db88dc3302090 GIT binary patch literal 9538 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 O`k5G>GAPq`y7n(X7CRCE literal 0 HcmV?d00001 diff --git a/Resources/backspace-actif.png b/Resources/backspace-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..387b1ef839d23867c7a610737fbca04e0c9cda94 GIT binary patch literal 4693 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 PA3X;8Cb$QBjuHO>Noy4W literal 0 HcmV?d00001 diff --git a/Resources/backspace-over.png b/Resources/backspace-over.png new file mode 100644 index 0000000000000000000000000000000000000000..8408dae753f985b03ac4a598833616a0c6985fdf GIT binary patch literal 4716 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 literal 0 HcmV?d00001 diff --git a/Resources/barre-noire-top.png b/Resources/barre-noire-top.png new file mode 100644 index 0000000000000000000000000000000000000000..001991fb081f749d6f8bfc8f63f87255366d1750 GIT binary patch literal 1218 zcmbVLU1$_n6uuh`XfQU=f~lZfM``oWow;}RXLcr8r^&4C=D9b&+~lBb z<+tXfcYS;{a56=Ph&IT;m;YDUtKoRvz&QV&~pLu$At>FL@`w~Iv^Vih$Y2K9ov z=gs#fpxX4P7dAZ~s*@R5F-+Ty?f83Es?|tfpCOhWcn<9JSFzX8M`<}H>$reZD|P4e ztXRmUGTC${jWcPH>te0{(=&l3BgDh;pJC}eu?dW?tE111)#V{B+n9i@#>)#ks%)*^ zmbF4XdOF=0?!Vml=;FDfC`udvm%crU2K3t_!}kDe>kmd&odbGe5M2KL+ON%#Z6+9M z?;3>(02)J&ZZ6N=d4j%V3(uDS#vkE_?Ng(l#IE62&zH47ckZj}{jo1T)f2B@Jl@>+ zefwc%44pswxBBe%*H=$(-S$oFU30!#yz+&K6YqZjukYhQ0Jhw^+WwT^{r<;d|4HY& pMn`ZBWF2#&wEQywzdh^&e_g*jziH{+yZ#e#Sh+Nz{Zwq6`v<^sXzKs~ literal 0 HcmV?d00001 diff --git a/Resources/champ-saisie-numero.png b/Resources/champ-saisie-numero.png new file mode 100644 index 0000000000000000000000000000000000000000..78be45dbfbf1eee7d15756f2e2bcbad46108477d GIT binary patch literal 5001 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

g-iO^ltY8mOM&h z?+uxb>N|z#-;dOLKAR_OVBR`Ke-hqMxGQ-_$kXbD>ecZ1i0&wn*_P4gGs~|ZcR$0} z?5w@dL`BG%Og`S>E-aV$&>SaopzFs|D%+spUiTXqVK%dnAsV5)Nj|r&Vu9VO znrEM1?aWtS+ta01RafS#pPf)jm%7b%NA={FJocF{O)sx_X+cF!rFznnsytsVB&fA} zZ7N@Fjk7M-m#-G`=E7%e)~Z#4i+4f3ItG-e53j zRGGAn*3y|;U1qw@keij6OVg^zml~>hDywp5Sc)UHV3)6Uc)jjit+t_|A)_HH!{wQ; z)#c>m;2fEm>EMxGx5(+W`O=+rY0(T8dtHU6+U>1&IaN5LZJz5zZ@wCkhFhq0mzLg3 z?5v9r1(a!hHn&!nL2GMkabJRWop*-)K8%NY*Of1F+qE<7b*>jZ6)=ygv}iDJ_veMM zBcREB+EWcfvDH{y6))D>o!%*yd^Mb8R908!(mErp(;4)%A(PHF>U4$0W^<0oY$(n) z8|a)uT{OqTV$Bn1i!pOTmN7fitkV_gj9D~Avp5<%#aZXIIV`U7`ckUeFI<$5QKz4jUGAI0fAzI(eEP{^DR&}sc5%rHf}~^$y7%+N!Q{aV z&*E*cWTlPoVqgC1RXy{~kZ$(F9r25OKXLJwx%ibkCO>QWtE~lc+FBZNo=v&7M8vtY zdbD4aU+G!ld8>9uG8*F znVk!zq3HS*wX@Z7;Uhurtk%hPN$N|-pJWHtDyW*Nm$?Jx6)#%h-Bk2@(I%mEN|o=( z&8y3OvHVBt&!U*_0yOQXu9Ub#uYbOImL8SFgT0g}yC}dud)W#;# zBEcwa?_l#A&Rw(9@g*Z(HEQM4Yc;QT6m2ZJ zIPJYEs>HarsN(Q@3s>%}oVC3SfQ*~7flq3S`=NX*3Y`wfo9P5`;p%02F~4&Et?U03 zi$3{>Irx|3ukAi_*omEVC=%Zn{8q%Ue=IupWFovDB6*#}Br( zwzMXlNI1dJOBwn!HPdP_!*emU>58FEJ8R(0BHJkG)TFmHV`r6Z@2D(1JOfr+eA5$O zGPFWQH3b-%vWB`M=}$_3ud~u0h*%e-)WrNO=|4LC97dtpm?F4_BTC?GVN-2;*!N=f z9~;wL+~DD|ga4*dO?!&Q&x-hJHNmA96Kg58a%xhz6z#mVo4XtTzPq0~v-M3$6qq7g zv9Rew>)}RhQY-OuJ|In*7HJY1ZPP6|{NJbaD~j|MecoHW?}`lyCw-O)uU7i}zJTd8 zW2A>6gnGN-9#gC;l#U+N6{ovU0h$n$=0h0n@|4hNbu&s@DDyfcTA)+!2d>u zo*&uX!@n&mp?8twRi2$l@2xVG&|~S|c-dHN8?9$du(bEEvGVpF_EN@p!?6aO5W9!S{Gvw>)qhRm9n7lcm0?pJk2TxE9 z3_n~!cM^jXJ3l4+Ge$LE_(fBzb@TFtewmG34+>=LA%-Slk3BQ&~s`q zrsaZM)79G?M*p$Djp@PBBAFqZ8=S)!`SUjaP-Oz3zie7>iQAg%wDD91CTw zflHKiM+f@m(9;sRQsK~ZpY(7rdPC`sElgUN?PSbFM1wc7hG+&^mqH7} zlvW}lT$sbaD)CWB4U<|w{+H)^P)`hZ zw?&K=z1Bf=Y-i;Rt^|#;X?q)S&d*@Yd#VSO&ElyjEo^eeK`^9Ao0ac7GOr1a)H4LmA~>H7kp3h==t72p6FS6M=J9B@O9 z8uuU>YD3G0DNr2o3Vo~> Q;r~-iDVlEi$iy`M4=^vlPyhe` literal 0 HcmV?d00001 diff --git a/linphone-Info.plist b/linphone-Info.plist index 45828b413..e0ae92cdc 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -30,7 +30,7 @@ CFBundleVersion 1.3 NSMainNibFile - PhoneMainView + LinphoneApp NSMainNibFile~ipad MainScreenWithVideoPreview UIApplicationExitsOnSuspend diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index d74ac0cf7..772028bb3 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -283,6 +283,34 @@ D3832801158100E400FA0D23 /* history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history-over.png */; }; D3832802158100E400FA0D23 /* settings-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings-over.png */; }; D3832803158100E400FA0D23 /* tchat-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* tchat-over.png */; }; + D3ED3E411585FB4A006C0DE4 /* fond-clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */; }; + D3ED3E421585FB4A006C0DE4 /* fond-clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */; }; + D3ED3E451585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */; }; + D3ED3E461585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */; }; + D3ED3E521585FFFD006C0DE4 /* barre-noire-top.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */; }; + D3ED3E531585FFFD006C0DE4 /* barre-noire-top.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */; }; + D3ED3E61158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */; }; + D3ED3E62158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */; }; + D3ED3E6515860404006C0DE4 /* LinphoneStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */; }; + D3ED3E6615860404006C0DE4 /* LinphoneStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */; }; + D3ED3E6A15861A53006C0DE4 /* add-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */; }; + D3ED3E6B15861A53006C0DE4 /* add-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */; }; + D3ED3E6C15861A53006C0DE4 /* add-contact-inactif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */; }; + D3ED3E6D15861A53006C0DE4 /* add-contact-inactif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */; }; + D3ED3E6E15861A53006C0DE4 /* add-contact-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6915861A53006C0DE4 /* add-contact-over.png */; }; + D3ED3E6F15861A53006C0DE4 /* add-contact-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6915861A53006C0DE4 /* add-contact-over.png */; }; + D3ED3E7215861ABD006C0DE4 /* appeler-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */; }; + D3ED3E7315861ABD006C0DE4 /* appeler-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */; }; + D3ED3E7415861ABD006C0DE4 /* appeler-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7115861ABD006C0DE4 /* appeler-over.png */; }; + D3ED3E7515861ABD006C0DE4 /* appeler-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7115861ABD006C0DE4 /* appeler-over.png */; }; + D3ED3E7815861B1B006C0DE4 /* backspace-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */; }; + D3ED3E7915861B1B006C0DE4 /* backspace-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */; }; + D3ED3E7A15861B1B006C0DE4 /* backspace-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7715861B1B006C0DE4 /* backspace-over.png */; }; + D3ED3E7B15861B1B006C0DE4 /* backspace-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7715861B1B006C0DE4 /* backspace-over.png */; }; + D3ED3E871586291E006C0DE4 /* LinphoneMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* LinphoneMainBar.m */; }; + D3ED3E881586291E006C0DE4 /* LinphoneMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* LinphoneMainBar.m */; }; + D3ED3E891586291E006C0DE4 /* LinphoneMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */; }; + D3ED3E8A1586291E006C0DE4 /* LinphoneMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */; }; D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; @@ -391,6 +419,10 @@ D3F83F891582278D00336684 /* contact-actif-add-call.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F821582278D00336684 /* contact-actif-add-call.png */; }; D3F83F8A1582278D00336684 /* contact-over-add-call.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F831582278D00336684 /* contact-over-add-call.png */; }; D3F83F8B1582278D00336684 /* contact-over-add-call.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F831582278D00336684 /* contact-over-add-call.png */; }; + D3F83F8E15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; + D3F83F8F15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; + D3F83F9215824D3600336684 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; + D3F83F9315824D3600336684 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; }; F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; }; /* End PBXBuildFile section */ @@ -788,6 +820,22 @@ D38327FD158100E400FA0D23 /* history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-over.png"; path = "Resources/history-over.png"; sourceTree = ""; }; D38327FE158100E400FA0D23 /* settings-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings-over.png"; path = "Resources/settings-over.png"; sourceTree = ""; }; D38327FF158100E400FA0D23 /* tchat-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-over.png"; path = "Resources/tchat-over.png"; sourceTree = ""; }; + D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "fond-clavier.png"; path = "Resources/fond-clavier.png"; sourceTree = ""; }; + D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-saisie-numero.png"; path = "Resources/champ-saisie-numero.png"; sourceTree = ""; }; + D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "barre-noire-top.png"; path = "Resources/barre-noire-top.png"; sourceTree = ""; }; + D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneStatusBar.xib; sourceTree = ""; }; + D3ED3E6315860404006C0DE4 /* LinphoneStatusBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneStatusBar.h; sourceTree = ""; }; + D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneStatusBar.m; sourceTree = ""; }; + D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-actif.png"; path = "Resources/add-contact-actif.png"; sourceTree = ""; }; + D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-inactif.png"; path = "Resources/add-contact-inactif.png"; sourceTree = ""; }; + D3ED3E6915861A53006C0DE4 /* add-contact-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-over.png"; path = "Resources/add-contact-over.png"; sourceTree = ""; }; + D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appeler-actif.png"; path = "Resources/appeler-actif.png"; sourceTree = ""; }; + D3ED3E7115861ABD006C0DE4 /* appeler-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appeler-over.png"; path = "Resources/appeler-over.png"; sourceTree = ""; }; + D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "backspace-actif.png"; path = "Resources/backspace-actif.png"; sourceTree = ""; }; + D3ED3E7715861B1B006C0DE4 /* backspace-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "backspace-over.png"; path = "Resources/backspace-over.png"; sourceTree = ""; }; + D3ED3E841586291B006C0DE4 /* LinphoneMainBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneMainBar.h; sourceTree = ""; }; + D3ED3E851586291B006C0DE4 /* LinphoneMainBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneMainBar.m; sourceTree = ""; }; + D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneMainBar.xib; sourceTree = ""; }; D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; }; D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; }; D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; }; @@ -843,6 +891,9 @@ D3F83F811582278D00336684 /* cancel-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cancel-over.png"; path = "Resources/cancel-over.png"; sourceTree = ""; }; D3F83F821582278D00336684 /* contact-actif-add-call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contact-actif-add-call.png"; path = "Resources/contact-actif-add-call.png"; sourceTree = ""; }; D3F83F831582278D00336684 /* contact-over-add-call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contact-over-add-call.png"; path = "Resources/contact-over-add-call.png"; sourceTree = ""; }; + D3F83F8C158229C500336684 /* PhoneMainView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhoneMainView.h; sourceTree = ""; }; + D3F83F8D15822ABD00336684 /* PhoneMainView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhoneMainView.m; sourceTree = ""; }; + D3F83F9115824D3500336684 /* LinphoneApp.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneApp.xib; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -970,6 +1021,7 @@ D3F83EE91582021700336684 /* InCallViewController.h */, D3F83EEA1582021700336684 /* InCallViewController.m */, D3F83EEB1582021700336684 /* InCallViewController.xib */, + D3F83F9115824D3500336684 /* LinphoneApp.xib */, 1D3623240D0F684500981E51 /* LinphoneAppDelegate.h */, 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */, 2214EB7012F84668002A5394 /* LinphoneUI */, @@ -979,6 +1031,8 @@ 22E0A81D111C44E100B04932 /* MoreViewController.h */, 22E0A81C111C44E100B04932 /* MoreViewController.m */, 22E0A81B111C44E100B04932 /* MoreViewController.xib */, + D3F83F8C158229C500336684 /* PhoneMainView.h */, + D3F83F8D15822ABD00336684 /* PhoneMainView.m */, D34734791580DDF1003C7B8C /* PhoneMainView.xib */, 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */, 22F2508B107141E100AC9B3F /* PhoneViewController.h */, @@ -1205,35 +1259,41 @@ 2214EB7012F84668002A5394 /* LinphoneUI */ = { isa = PBXGroup; children = ( - 340751E5150F38FC00B89C47 /* UIToggleVideoButton.h */, - 340751E6150F38FD00B89C47 /* UIToggleVideoButton.m */, - 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */, - 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */, + 223963151393CFAE001DE689 /* FastAddressBook.h */, + 223963161393CFAF001DE689 /* FastAddressBook.m */, + D3ED3E841586291B006C0DE4 /* LinphoneMainBar.h */, + D3ED3E851586291B006C0DE4 /* LinphoneMainBar.m */, + D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */, 2248E99D12F801C200220D9C /* LinphoneManager.h */, 2248E99E12F801C200220D9C /* LinphoneManager.m */, - 2214EB7812F846B1002A5394 /* UICallButton.h */, - 2214EB7912F846B1002A5394 /* UICallButton.m */, - 2214EB8712F84EBB002A5394 /* UIHangUpButton.h */, - 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */, - 2214EB8A12F84FE9002A5394 /* UILinphone.h */, - 2214EBD812F8558F002A5394 /* UIToggleButton.h */, - 2214EBD912F8558F002A5394 /* UIToggleButton.m */, - 2214EBF112F86360002A5394 /* UIMuteButton.h */, - 2214EBF212F86360002A5394 /* UIMuteButton.m */, - 22968A5D12F875C600588287 /* UISpeakerButton.h */, - 22968A5E12F875C600588287 /* UISpeakerButton.m */, - 22968A8612F87C2000588287 /* UIDuration.h */, - 22968A8712F87C2000588287 /* UIDuration.m */, + D3ED3E6315860404006C0DE4 /* LinphoneStatusBar.h */, + D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */, + D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */, 2218A5C412F9597B0088A667 /* LinphoneUIDelegates.h */, 2218A5CE12F973450088A667 /* LogView.h */, 22C7555E1317E59C007BC101 /* UIBluetoothButton.h */, 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */, - 22BB1A67132FF16A005CD7AA /* UIEraseButton.h */, - 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */, - 223963151393CFAE001DE689 /* FastAddressBook.h */, - 223963161393CFAF001DE689 /* FastAddressBook.m */, + 2214EB7812F846B1002A5394 /* UICallButton.h */, + 2214EB7912F846B1002A5394 /* UICallButton.m */, 22AA8AFF13D83F6300B30535 /* UICamSwitch.h */, 22AA8B0013D83F6300B30535 /* UICamSwitch.m */, + 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */, + 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */, + 22968A8612F87C2000588287 /* UIDuration.h */, + 22968A8712F87C2000588287 /* UIDuration.m */, + 22BB1A67132FF16A005CD7AA /* UIEraseButton.h */, + 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */, + 2214EB8712F84EBB002A5394 /* UIHangUpButton.h */, + 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */, + 2214EB8A12F84FE9002A5394 /* UILinphone.h */, + 2214EBF112F86360002A5394 /* UIMuteButton.h */, + 2214EBF212F86360002A5394 /* UIMuteButton.m */, + 22968A5D12F875C600588287 /* UISpeakerButton.h */, + 22968A5E12F875C600588287 /* UISpeakerButton.m */, + 2214EBD812F8558F002A5394 /* UIToggleButton.h */, + 2214EBD912F8558F002A5394 /* UIToggleButton.m */, + 340751E5150F38FC00B89C47 /* UIToggleVideoButton.h */, + 340751E6150F38FD00B89C47 /* UIToggleVideoButton.m */, ); path = LinphoneUI; sourceTree = ""; @@ -1393,14 +1453,6 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - D3F83F801582278D00336684 /* cancel-actif.png */, - D3F83F811582278D00336684 /* cancel-over.png */, - D3F83F821582278D00336684 /* contact-actif-add-call.png */, - D3F83F831582278D00336684 /* contact-over-add-call.png */, - D3F83F741582253100336684 /* decrocher-actif.png */, - D3F83F751582253100336684 /* decrocher-over.png */, - D3F83F761582253100336684 /* refuser-actif.png */, - D3F83F771582253100336684 /* refuser-over.png */, D3F83F2C1582223B00336684 /* 0-actif.png */, D3F83F2D1582223B00336684 /* 0-over.png */, D3F83F2E1582223B00336684 /* 1-actif.png */, @@ -1421,55 +1473,49 @@ D3F83F3D1582223B00336684 /* 8-over.png */, D3F83F3E1582223B00336684 /* 9-actif.png */, D3F83F3F1582223B00336684 /* 9-over.png */, - D3F83F401582223B00336684 /* diese-actif.png */, - D3F83F411582223B00336684 /* diese-over.png */, - D3F83F421582223B00336684 /* etoile-actif.png */, - D3F83F431582223B00336684 /* etoile-over.png */, D3F83EF0158205A100336684 /* add-call-actif.png */, D3F83EF1158205A100336684 /* add-call-over.png */, - D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */, - D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */, - D3F83EF4158205A100336684 /* micro-OFF-actif.png */, - D3F83EF5158205A100336684 /* micro-OFF-over.png */, - D3F83EF6158205A100336684 /* micro-ON-actif.png */, - D3F83EF7158205A100336684 /* micro-ON-over.png */, - D3F83EF8158205A100336684 /* pause-actif.png */, - D3F83EF9158205A100336684 /* pause-over.png */, - D3F83EFA158205A100336684 /* raccrocher-actif.png */, - D3F83EFB158205A100336684 /* raccrocher-over.png */, - D3F83EFC158205A100336684 /* speacker-OFF-actif.png */, - D3F83EFD158205A100336684 /* speacker-OFF-over.png */, - D3F83EFE158205A100336684 /* speacker-ON-actif.png */, - D3F83EFF158205A100336684 /* speacker-ON-over.png */, - D3F83F00158205A100336684 /* video-OFF-actif.png */, - D3F83F01158205A100336684 /* video-OFF-over.png */, - D3F83F02158205A100336684 /* video-ON-actif.png */, - D3F83F03158205A100336684 /* video-ON-over.png */, - D38327FC158100E400FA0D23 /* contacts-over.png */, - D38327FD158100E400FA0D23 /* history-over.png */, - D38327FE158100E400FA0D23 /* settings-over.png */, - D38327FF158100E400FA0D23 /* tchat-over.png */, - D38327EB1580FE3A00FA0D23 /* contacts-actif.png */, - D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */, - D38327ED1580FE3A00FA0D23 /* dialer-actif.png */, - D38327EE1580FE3A00FA0D23 /* dialer-over.png */, - D38327EF1580FE3A00FA0D23 /* settings-actif.png */, - D38327F01580FE3A00FA0D23 /* settings-selectionne.png */, - D38327F11580FE3A00FA0D23 /* tchat-actif.png */, - D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */, - D347347C1580E5F8003C7B8C /* history-actif.png */, - D347347D1580E5F8003C7B8C /* history-selectionne.png */, + D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */, + D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */, + D3ED3E6915861A53006C0DE4 /* add-contact-over.png */, 2211DBCA1476BE7300DEE054 /* ajouter.png */, + D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */, + D3ED3E7115861ABD006C0DE4 /* appeler-over.png */, + D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */, + D3ED3E7715861B1B006C0DE4 /* backspace-over.png */, + D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */, + D3F83F801582278D00336684 /* cancel-actif.png */, + D3F83F811582278D00336684 /* cancel-over.png */, + D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */, 225CB2E811ABB51000628906 /* clavier-01-106px.png */, 225CB2E911ABB51000628906 /* clavier-01-108px.png */, 225CB2ED11ABB65D00628906 /* clavier-01-160px.png */, 2211DBCB1476BE7300DEE054 /* clavier.png */, + D3F83F821582278D00336684 /* contact-actif-add-call.png */, + D3F83F831582278D00336684 /* contact-over-add-call.png */, 2211DBCC1476BE7300DEE054 /* contact.png */, 34C7646814CD51CD008E9607 /* contact_vide.png */, + D38327EB1580FE3A00FA0D23 /* contacts-actif.png */, + D38327FC158100E400FA0D23 /* contacts-over.png */, + D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */, + D3F83F741582253100336684 /* decrocher-actif.png */, + D3F83F751582253100336684 /* decrocher-over.png */, + D38327ED1580FE3A00FA0D23 /* dialer-actif.png */, + D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */, + D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */, 34C7646A14CD5585008E9607 /* dialer-orange.png */, + D38327EE1580FE3A00FA0D23 /* dialer-over.png */, + D3F83F401582223B00336684 /* diese-actif.png */, + D3F83F411582223B00336684 /* diese-over.png */, 2211DBCD1476BE7300DEE054 /* effacer.png */, + D3F83F421582223B00336684 /* etoile-actif.png */, + D3F83F431582223B00336684 /* etoile-over.png */, + D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */, 2211DBCE1476BE7300DEE054 /* grouper.png */, + D347347C1580E5F8003C7B8C /* history-actif.png */, 34C7646B14CD5585008E9607 /* history-orange.png */, + D38327FD158100E400FA0D23 /* history-over.png */, + D347347D1580E5F8003C7B8C /* history-selectionne.png */, 2211DBD01476BE7300DEE054 /* HP.png */, 2211DBCF1476BE7300DEE054 /* HP_inverse.png */, 22058C70116E305000B08DDD /* icone-linphone-57.png */, @@ -1481,6 +1527,10 @@ 8D1107310486CEB800E47090 /* linphone-Info.plist */, 2274550710700509006EC466 /* linphonerc */, 341FCA8D149798210084BC26 /* linphonerc-ipad */, + D3F83EF4158205A100336684 /* micro-OFF-actif.png */, + D3F83EF5158205A100336684 /* micro-OFF-over.png */, + D3F83EF6158205A100336684 /* micro-ON-actif.png */, + D3F83EF7158205A100336684 /* micro-ON-over.png */, 2211DBD21476BE7300DEE054 /* micro.png */, 2211DBD11476BE7300DEE054 /* micro_inverse.png */, 22E19E47138A67A000FBFE87 /* missed_call.png */, @@ -1489,11 +1539,24 @@ 2237D4081084D7A9001383EE /* oldphone-mono.wav */, 2242D91510D66BF300E9963F /* out_call.png */, 3485649E152C423F003FE041 /* out_call_video.png */, + D3F83EF8158205A100336684 /* pause-actif.png */, + D3F83EF9158205A100336684 /* pause-over.png */, 2211DBD41476BE7300DEE054 /* pause.png */, 2211DBD31476BE7300DEE054 /* pause_inactif.png */, + D3F83EFA158205A100336684 /* raccrocher-actif.png */, + D3F83EFB158205A100336684 /* raccrocher-over.png */, + D3F83F761582253100336684 /* refuser-actif.png */, + D3F83F771582253100336684 /* refuser-over.png */, 22F254801073D99800AC9B3F /* ringback.wav */, 70571E1913FABCB000CDD3C2 /* rootca.pem */, 34957F3E147D3FBF00DD7A09 /* secured.png */, + D38327EF1580FE3A00FA0D23 /* settings-actif.png */, + D38327FE158100E400FA0D23 /* settings-over.png */, + D38327F01580FE3A00FA0D23 /* settings-selectionne.png */, + D3F83EFC158205A100336684 /* speacker-OFF-actif.png */, + D3F83EFD158205A100336684 /* speacker-OFF-over.png */, + D3F83EFE158205A100336684 /* speacker-ON-actif.png */, + D3F83EFF158205A100336684 /* speacker-ON-over.png */, 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */, 22226C11118197C0000CA27B /* startcall-green.png */, 1AE0A49314AC5C64002C99BD /* stat_sys_signal_0.png */, @@ -1506,7 +1569,14 @@ 3418845114C6F66F00EA48C7 /* status_orange.png */, 3418845214C6F66F00EA48C7 /* status_red.png */, 22226C13118197EC000CA27B /* stopcall-red.png */, + D38327F11580FE3A00FA0D23 /* tchat-actif.png */, + D38327FF158100E400FA0D23 /* tchat-over.png */, + D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */, 344ABDE41483E596007420B6 /* unverified.png */, + D3F83F00158205A100336684 /* video-OFF-actif.png */, + D3F83F01158205A100336684 /* video-OFF-over.png */, + D3F83F02158205A100336684 /* video-ON-actif.png */, + D3F83F03158205A100336684 /* video-ON-over.png */, ); name = Resources; sourceTree = ""; @@ -1728,6 +1798,19 @@ D3F83F861582278D00336684 /* cancel-over.png in Resources */, D3F83F881582278D00336684 /* contact-actif-add-call.png in Resources */, D3F83F8A1582278D00336684 /* contact-over-add-call.png in Resources */, + D3F83F9215824D3600336684 /* LinphoneApp.xib in Resources */, + D3ED3E411585FB4A006C0DE4 /* fond-clavier.png in Resources */, + D3ED3E451585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */, + D3ED3E521585FFFD006C0DE4 /* barre-noire-top.png in Resources */, + D3ED3E61158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */, + D3ED3E6A15861A53006C0DE4 /* add-contact-actif.png in Resources */, + D3ED3E6C15861A53006C0DE4 /* add-contact-inactif.png in Resources */, + D3ED3E6E15861A53006C0DE4 /* add-contact-over.png in Resources */, + D3ED3E7215861ABD006C0DE4 /* appeler-actif.png in Resources */, + D3ED3E7415861ABD006C0DE4 /* appeler-over.png in Resources */, + D3ED3E7815861B1B006C0DE4 /* backspace-actif.png in Resources */, + D3ED3E7A15861B1B006C0DE4 /* backspace-over.png in Resources */, + D3ED3E891586291E006C0DE4 /* LinphoneMainBar.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1849,6 +1932,19 @@ D3F83F871582278D00336684 /* cancel-over.png in Resources */, D3F83F891582278D00336684 /* contact-actif-add-call.png in Resources */, D3F83F8B1582278D00336684 /* contact-over-add-call.png in Resources */, + D3F83F9315824D3600336684 /* LinphoneApp.xib in Resources */, + D3ED3E421585FB4A006C0DE4 /* fond-clavier.png in Resources */, + D3ED3E461585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */, + D3ED3E531585FFFD006C0DE4 /* barre-noire-top.png in Resources */, + D3ED3E62158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */, + D3ED3E6B15861A53006C0DE4 /* add-contact-actif.png in Resources */, + D3ED3E6D15861A53006C0DE4 /* add-contact-inactif.png in Resources */, + D3ED3E6F15861A53006C0DE4 /* add-contact-over.png in Resources */, + D3ED3E7315861ABD006C0DE4 /* appeler-actif.png in Resources */, + D3ED3E7515861ABD006C0DE4 /* appeler-over.png in Resources */, + D3ED3E7915861B1B006C0DE4 /* backspace-actif.png in Resources */, + D3ED3E7B15861B1B006C0DE4 /* backspace-over.png in Resources */, + D3ED3E8A1586291E006C0DE4 /* LinphoneMainBar.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1888,6 +1984,9 @@ 340751E7150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */, 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, D3F83EEC1582021700336684 /* InCallViewController.m in Sources */, + D3F83F8E15822ABE00336684 /* PhoneMainView.m in Sources */, + D3ED3E6515860404006C0DE4 /* LinphoneStatusBar.m in Sources */, + D3ED3E871586291E006C0DE4 /* LinphoneMainBar.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1924,6 +2023,9 @@ 340751E8150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */, 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, D3F83EED1582021700336684 /* InCallViewController.m in Sources */, + D3F83F8F15822ABE00336684 /* PhoneMainView.m in Sources */, + D3ED3E6615860404006C0DE4 /* LinphoneStatusBar.m in Sources */, + D3ED3E881586291E006C0DE4 /* LinphoneMainBar.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/main.m b/main.m index 48d5527bf..9452dda25 100644 --- a/main.m +++ b/main.m @@ -18,6 +18,7 @@ */ #import +#import "LinphoneAppDelegate.h" int main(int argc, char *argv[]) { From 2e3d4c0fdff7cc2e3db6ff5e37d8d75997b99db9 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 12 Jun 2012 00:38:34 +0200 Subject: [PATCH 007/397] many bugfixes, work in progress --- Classes/LinphoneAppDelegate.m | 6 +- Classes/LinphoneCoreSettingsStore.h | 1 - Classes/LinphoneCoreSettingsStore.m | 243 ++++++++---- Classes/LinphoneUI/LinphoneManager.h | 6 +- Classes/LinphoneUI/LinphoneManager.m | 350 +++--------------- .../IASKAppSettingsViewController.h | 3 + .../IASKAppSettingsViewController.m | 9 +- InAppSettingsKit/Models/IASKSettingsReader.h | 6 +- InAppSettingsKit/Models/IASKSettingsReader.m | 15 +- PhoneMainView.xib | 67 ++-- linphone.xcodeproj/project.pbxproj | 22 +- .../Settings.bundle/Advanced.plist | 103 ------ nogpl-thirdparties/Settings.bundle/Root.plist | 131 ------- .../Settings.bundle/audio.plist | 85 ----- .../Settings.bundle/en.lproj/Root.strings | Bin 546 -> 0 bytes .../Settings.bundle/video.plist | 45 --- .../Inappsettings.bundle}/Advanced.plist | 0 .../Inappsettings.bundle}/Root.plist | 0 .../Inappsettings.bundle}/audio.plist | 0 .../en.lproj/Root.strings | Bin .../Inappsettings.bundle}/video.plist | 0 submodules/libilbc-rfc3951 | 2 +- 22 files changed, 304 insertions(+), 790 deletions(-) delete mode 100644 nogpl-thirdparties/Settings.bundle/Advanced.plist delete mode 100644 nogpl-thirdparties/Settings.bundle/Root.plist delete mode 100644 nogpl-thirdparties/Settings.bundle/audio.plist delete mode 100644 nogpl-thirdparties/Settings.bundle/en.lproj/Root.strings delete mode 100644 nogpl-thirdparties/Settings.bundle/video.plist rename {Settings.bundle => settings/Inappsettings.bundle}/Advanced.plist (100%) rename {Settings.bundle => settings/Inappsettings.bundle}/Root.plist (100%) rename {Settings.bundle => settings/Inappsettings.bundle}/audio.plist (100%) rename {Settings.bundle => settings/Inappsettings.bundle}/en.lproj/Root.strings (100%) rename {Settings.bundle => settings/Inappsettings.bundle}/video.plist (100%) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index f2e8586d7..f11c2a97b 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -239,9 +239,11 @@ int __aeabi_idiv(int a, int b) { // Settings, setup delegate settingsController.delegate = [LinphoneManager instance]; - settingsController.settingsReader.delegate = [LinphoneManager instance]; + settingsController.settingsReaderDelegate = [LinphoneManager instance]; settingsController.settingsStore=[[LinphoneCoreSettingsStore alloc] init]; - [settingsController.settingsReader init]; + //settingsController.file=@"settings/Inappsettings.bundle"; + settingsController.showCreditsFooter=FALSE; + //[settingsController.settingsReader init]; [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound]; diff --git a/Classes/LinphoneCoreSettingsStore.h b/Classes/LinphoneCoreSettingsStore.h index 95d04546a..af1f272c2 100644 --- a/Classes/LinphoneCoreSettingsStore.h +++ b/Classes/LinphoneCoreSettingsStore.h @@ -15,7 +15,6 @@ NSDictionary *dict; } -- (void) enableCodecWithName: (const char*) name andRate: (int) rate to:(id)value; -(void) transformLinphoneCoreToKeys; @end diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 370d9323f..0df80d755 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -11,59 +11,6 @@ #include "lpconfig.h" -#if 0 -// linphone_core_enable_logs_with_cb - linphone_core_disable_logs -debugenable_preference - -// on change: edit/create linphone_core_get_default_proxy() -transport_preference -username_preference -domain_preference -password_preference -outbound_proxy_preference -proxy_preference -prefix_preference ++ -substitute_+_by_00_preference ++ - -// app internal setting -check_config_disable_preference -wifi_only_preference -backgroundmode_preference - -// linphone_core_enable_payload_type -silk_24k_preference -speex_16k_preference -speex_8k_preference -silk_16k_preference -amr_8k_preference -gsm_8k_preference -ilbc_preference -pcmu_preference -pcma_preference -g722_preference -g729_preference - -// linphone_core_enable_payload_type -mp4v-es_preference -h264_preference -vp8_preference - -// linphone_core_enable_video -enable_video_preference -// linphone_core_set_video_policy -start_video_preference - -// linphone_core_set_media_encryption -enable_srtp_preference - -// linphone_core_set_stun_server -// linphone_core_set_firewall_policy -stun_preference - - - -#endif - struct codec_name_pref_table{ const char *name; int rate; @@ -123,6 +70,10 @@ static NSString *getPrefForCodec(const char *name, int rate){ [self setObject: obj forKey:key]; } +- (NSString*) stringForKey:(NSString*) key{ + return [self objectForKey: key]; +} + -(void) transformCodecsToKeys: (const MSList *)codecs{ LinphoneCore *lc=[LinphoneManager getLc]; const MSList *elem=codecs; @@ -231,6 +182,9 @@ static NSString *getPrefForCodec(const char *name, int rate){ -(void) setObject:(id)value forKey:(NSString *)key { [dict setValue:value forKey:key]; + NSString *changed_value=[[NSString alloc] initWithFormat:@"%@_changed", key]; + [dict setValue:[NSNumber numberWithBool:TRUE] forKey:changed_value]; + [changed_value release]; } - (id)objectForKey:(NSString*)key { @@ -238,17 +192,180 @@ static NSString *getPrefForCodec(const char *name, int rate){ } - (BOOL)synchronize { - ms_message("Called in SettingsStore synchronize"); + LinphoneCore *lc=[LinphoneManager getLc]; + LinphoneManager* lLinphoneMgr = [LinphoneManager instance]; + + NSLog(@"Called in SettingsStore synchronize"); + if ([self boolForKey:@"username_preference_changed"]) + NSLog(@"username_preference_changed !!"); + return YES; + /* unregister before modifying any settings */ + { + LinphoneProxyConfig* proxyCfg; + linphone_core_get_default_proxy(lc, &proxyCfg); + + if (proxyCfg) { + // this will force unregister WITHOUT destorying the proxyCfg object + linphone_proxy_config_edit(proxyCfg); + + int i=0; + while (linphone_proxy_config_get_state(proxyCfg)!=LinphoneRegistrationNone && + linphone_proxy_config_get_state(proxyCfg)!=LinphoneRegistrationCleared && + linphone_proxy_config_get_state(proxyCfg)!=LinphoneRegistrationFailed && + i++<40 ) { + linphone_core_iterate(lc); + usleep(10000); + } + } + } + + NSString* transport = [self stringForKey:@"transport_preference"]; + + LCSipTransports transportValue; + if (transport!=nil) { + if (linphone_core_get_sip_transports(lc, &transportValue)) { + ms_error("cannot get current transport"); + } + // Only one port can be set at one time, the others's value is 0 + if ([transport isEqualToString:@"tcp"]) { + if (transportValue.tcp_port == 0) transportValue.tcp_port=transportValue.udp_port + transportValue.tls_port; + transportValue.udp_port=0; + transportValue.tls_port=0; + } else if ([transport isEqualToString:@"udp"]){ + if (transportValue.udp_port == 0) transportValue.udp_port=transportValue.tcp_port + transportValue.tls_port; + transportValue.tcp_port=0; + transportValue.tls_port=0; + } else if ([transport isEqualToString:@"tls"]){ + if (transportValue.tls_port == 0) transportValue.tls_port=transportValue.udp_port + transportValue.tcp_port; + transportValue.tcp_port=0; + transportValue.udp_port=0; + } else { + ms_error("unexpected transport [%s]",[transport cStringUsingEncoding:[NSString defaultCStringEncoding]]); + } + if (linphone_core_set_sip_transports(lc, &transportValue)) { + ms_error("cannot set transport"); + } + } + + + //configure sip account + + //mandatory parameters + + NSString* username = [self stringForKey:@"username_preference"]; + NSString* domain = [self stringForKey:@"domain_preference"]; + NSString* accountPassword = [self stringForKey:@"password_preference"]; + bool isOutboundProxy= [self boolForKey:@"outbound_proxy_preference"]; + + + //clear auth info list + linphone_core_clear_all_auth_info(lc); + //clear existing proxy config + linphone_core_clear_proxy_config(lc); + if (username && [username length] >0 && domain && [domain length]>0) { + const char* identity = [[NSString stringWithFormat:@"sip:%@@%@",username,domain] cStringUsingEncoding:[NSString defaultCStringEncoding]]; + const char* password = [accountPassword cStringUsingEncoding:[NSString defaultCStringEncoding]]; + + NSString* proxyAddress = [[NSUserDefaults standardUserDefaults] stringForKey:@"proxy_preference"]; + if ((!proxyAddress || [proxyAddress length] <1 ) && domain) { + proxyAddress = [NSString stringWithFormat:@"sip:%@",domain] ; + } else { + proxyAddress = [NSString stringWithFormat:@"sip:%@",proxyAddress] ; + } + + const char* proxy = [proxyAddress cStringUsingEncoding:[NSString defaultCStringEncoding]]; + + NSString* prefix = [[NSUserDefaults standardUserDefaults] stringForKey:@"prefix_preference"]; + bool substitute_plus_by_00 = [[NSUserDefaults standardUserDefaults] boolForKey:@"substitute_+_by_00_preference"]; + //possible valid config detected + LinphoneProxyConfig* proxyCfg; + proxyCfg = linphone_proxy_config_new(); + + // add username password + LinphoneAddress *from = linphone_address_new(identity); + LinphoneAuthInfo *info; + if (from !=0){ + info=linphone_auth_info_new(linphone_address_get_username(from),NULL,password,NULL,NULL); + linphone_core_add_auth_info(lc,info); + } + linphone_address_destroy(from); + + // configure proxy entries + linphone_proxy_config_set_identity(proxyCfg,identity); + linphone_proxy_config_set_server_addr(proxyCfg,proxy); + linphone_proxy_config_enable_register(proxyCfg,true); + BOOL isWifiOnly = [self boolForKey:@"wifi_only_preference"]; + + if (isWifiOnly && lLinphoneMgr.connectivity == wwan) { + linphone_proxy_config_expires(proxyCfg, 0); + } else { + linphone_proxy_config_expires(proxyCfg, lLinphoneMgr.defaultExpires); + } + + if (isOutboundProxy) + linphone_proxy_config_set_route(proxyCfg,proxy); + + if ([prefix length]>0) { + linphone_proxy_config_set_dial_prefix(proxyCfg, [prefix cStringUsingEncoding:[NSString defaultCStringEncoding]]); + } + linphone_proxy_config_set_dial_escape_plus(proxyCfg,substitute_plus_by_00); + + linphone_core_add_proxy_config(lc,proxyCfg); + //set to default proxy + linphone_core_set_default_proxy(lc,proxyCfg); + + } + + //Configure Codecs + + PayloadType *pt; + const MSList *elem; + //disable all codecs + for (elem=linphone_core_get_audio_codecs(lc);elem!=NULL;elem=elem->next){ + pt=(PayloadType*)elem->data; + linphone_core_enable_payload_type(lc,pt,[self boolForKey: getPrefForCodec(pt->mime_type,pt->clock_rate)]); + } + for (elem=linphone_core_get_video_codecs(lc);elem!=NULL;elem=elem->next){ + pt=(PayloadType*)elem->data; + linphone_core_enable_payload_type(lc,pt,[self boolForKey: getPrefForCodec(pt->mime_type,pt->clock_rate)]); + } + + bool enableVideo = [self boolForKey:@"enable_video_preference"]; + linphone_core_enable_video(lc, enableVideo, enableVideo); + + NSString *menc = [self stringForKey:@"media_encryption_preference"]; + if (menc && [menc compare:@"SRTP"]) + linphone_core_set_media_encryption(lc, LinphoneMediaEncryptionSRTP); + else if (menc && [menc compare:@"ZRTP"]) + linphone_core_set_media_encryption(lc, LinphoneMediaEncryptionZRTP); + else linphone_core_set_media_encryption(lc, LinphoneMediaEncryptionNone); + + NSString* stun_server = [self stringForKey:@"stun_preference"]; + if ([stun_server length]>0){ + linphone_core_set_stun_server(lc,[stun_server cStringUsingEncoding:[NSString defaultCStringEncoding]]); + linphone_core_set_firewall_policy(lc, LinphonePolicyUseStun); + }else{ + linphone_core_set_stun_server(lc, NULL); + linphone_core_set_firewall_policy(lc, LinphonePolicyNoFirewall); + } + + LinphoneVideoPolicy policy; + policy.automatically_accept = [self boolForKey:@"start_video_preference"];; + policy.automatically_initiate = [self boolForKey:@"start_video_preference"]; + linphone_core_set_video_policy(lc, &policy); + + UIDevice* device = [UIDevice currentDevice]; + bool backgroundSupported = false; + if ([device respondsToSelector:@selector(isMultitaskingSupported)]) + backgroundSupported = [device isMultitaskingSupported]; + BOOL isbackgroundModeEnabled; + if (backgroundSupported) { + isbackgroundModeEnabled = [self boolForKey:@"backgroundmode_preference"]; + } else { + isbackgroundModeEnabled=false; + } + lp_config_set_int(linphone_core_get_config(lc),"app","backgroundmode_preference",backgroundSupported); return YES; } -- (void) enableCodecWithName: (const char*) name andRate: (int) rate to:(id)value{ - LinphoneCore *lc=[LinphoneManager getLc]; - PayloadType *pt; - pt=linphone_core_find_payload_type(lc, name, rate); - if (pt){ - linphone_core_enable_payload_type(lc, pt, [value boolValue]); - } -} - @end diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index b2f4dfc3d..c108d36f8 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -66,9 +66,7 @@ typedef struct _LinphoneCallAppData { FastAddressBook* mFastAddressBook; const char* frontCamId; const char* backCamId; - - NSDictionary* currentSettings; - + @public CallContext currentCallContextBeforeGoingBackground; } @@ -92,13 +90,13 @@ typedef struct _LinphoneCallAppData { -(NSString*) getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log; -(UIImage*) getImageFromAddressBook:(NSString*) number; --(BOOL) reconfigureLinphoneIfNeeded:(NSDictionary *)oldSettings; -(void) setupNetworkReachabilityCallback: (const char*) nodeName withContext:(SCNetworkReachabilityContext*) ctx; -(void) refreshRegisters; @property (nonatomic, retain) id callDelegate; @property (nonatomic, retain) id registrationDelegate; @property Connectivity connectivity; +@property (nonatomic) int defaultExpires; @property (readonly) const char* frontCamId; @property (readonly) const char* backCamId; @property (nonatomic) bool isbackgroundModeEnabled; diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 2188d73c6..92722dae8 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -20,6 +20,7 @@ #import "LinphoneManager.h" #include "linphonecore_utils.h" +#include "lpconfig.h" #include #include #include @@ -42,7 +43,7 @@ extern void libmsx264_init(); #endif #define FRONT_CAM_NAME "AV Capture: Front Camera" #define BACK_CAM_NAME "AV Capture: Back Camera" -#define DEFAULT_EXPIRES 600 + #if defined (HAVE_SILK) extern void libmssilk_init(); #endif @@ -57,12 +58,14 @@ extern void libmsbcg729_init(); @synthesize frontCamId; @synthesize backCamId; @synthesize isbackgroundModeEnabled; +@synthesize defaultExpires; -(id) init { assert (!theLinphoneManager); if ((self= [super init])) { mFastAddressBook = [[FastAddressBook alloc] init]; theLinphoneManager = self; + self.defaultExpires=600; } return self; } @@ -429,14 +432,6 @@ static LinphoneCoreVTable linphonec_vtable = { }; --(void) configurePayloadType:(const char*) type fromPrefKey: (NSString*)key withRate:(int)rate { - if ([[NSUserDefaults standardUserDefaults] boolForKey:key]) { - PayloadType* pt; - if((pt = linphone_core_find_payload_type(theLinphoneCore,type,rate))) { - linphone_core_enable_payload_type(theLinphoneCore,pt, TRUE); - } - } -} -(void) kickOffNetworkConnection { /*start a new thread to avoid blocking the main ui in case of peer host failure*/ [NSThread detachNewThreadSelector:@selector(runNetworkConnection) toTarget:self withObject:nil]; @@ -487,7 +482,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach [[LinphoneManager instance] kickOffNetworkConnection]; } else { Connectivity newConnectivity; - BOOL isWifiOnly = [[NSUserDefaults standardUserDefaults] boolForKey:@"wifi_only_preference"]; + BOOL isWifiOnly = lp_config_get_int(linphone_core_get_config([LinphoneManager getLc]),"app","wifi_only_preference",FALSE); if (!ctx || ctx->testWWan) newConnectivity = flags & kSCNetworkReachabilityFlagsIsWWAN ? wwan:wifi; else @@ -499,7 +494,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach && (lLinphoneMgr.connectivity == newConnectivity || lLinphoneMgr.connectivity == none)) { linphone_proxy_config_expires(proxy, 0); } else if (proxy){ - linphone_proxy_config_expires(proxy, DEFAULT_EXPIRES); //might be better to save the previous value + linphone_proxy_config_expires(proxy, lLinphoneMgr.defaultExpires); //might be better to save the previous value } if (lLinphoneMgr.connectivity == none) { @@ -522,276 +517,29 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } --(BOOL) reconfigureLinphoneIfNeeded:(NSDictionary *)settings { - if (theLinphoneCore==nil) { - ms_warning("cannot configure linphone because not initialized yet"); - return NO; - } - - [[NSUserDefaults standardUserDefaults] synchronize]; - NSDictionary* newSettings = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; - if (settings != nil) { - /* reconfigure only if newSettings != settings */ - if ([newSettings isEqualToDictionary:settings]) { - ms_message("Same settings: no need to reconfigure linphone"); - return NO; - } - } - NSLog(@"Configuring Linphone (new settings)"); - - - if ([[NSUserDefaults standardUserDefaults] boolForKey:@"debugenable_preference"]) { - //redirect all traces to the iphone log framework - linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler); - } - else { - linphone_core_disable_logs(); - } - - NSBundle* myBundle = [NSBundle mainBundle]; - - /* unregister before modifying any settings */ - { - LinphoneProxyConfig* proxyCfg; - linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg); - - if (proxyCfg) { - // this will force unregister WITHOUT destorying the proxyCfg object - linphone_proxy_config_edit(proxyCfg); - - int i=0; - while (linphone_proxy_config_get_state(proxyCfg)!=LinphoneRegistrationNone && - linphone_proxy_config_get_state(proxyCfg)!=LinphoneRegistrationCleared && - linphone_proxy_config_get_state(proxyCfg)!=LinphoneRegistrationFailed && - i++<40 ) { - linphone_core_iterate(theLinphoneCore); - usleep(100000); - } - } - } - - const char* lRootCa = [[myBundle pathForResource:@"rootca"ofType:@"pem"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; - linphone_core_set_root_ca(theLinphoneCore, lRootCa); - - NSString* transport = [[NSUserDefaults standardUserDefaults] stringForKey:@"transport_preference"]; - - LCSipTransports transportValue; - if (transport!=nil) { - if (linphone_core_get_sip_transports(theLinphoneCore, &transportValue)) { - ms_error("cannot get current transport"); - } - // Only one port can be set at one time, the others's value is 0 - if ([transport isEqualToString:@"tcp"]) { - if (transportValue.tcp_port == 0) transportValue.tcp_port=transportValue.udp_port + transportValue.tls_port; - transportValue.udp_port=0; - transportValue.tls_port=0; - } else if ([transport isEqualToString:@"udp"]){ - if (transportValue.udp_port == 0) transportValue.udp_port=transportValue.tcp_port + transportValue.tls_port; - transportValue.tcp_port=0; - transportValue.tls_port=0; - } else if ([transport isEqualToString:@"tls"]){ - if (transportValue.tls_port == 0) transportValue.tls_port=transportValue.udp_port + transportValue.tcp_port; - transportValue.tcp_port=0; - transportValue.udp_port=0; - } else { - ms_error("unexpected transport [%s]",[transport cStringUsingEncoding:[NSString defaultCStringEncoding]]); - } - if (linphone_core_set_sip_transports(theLinphoneCore, &transportValue)) { - ms_error("cannot set transport"); - } - } - - - - // Set audio assets - const char* lRing = [[myBundle pathForResource:@"oldphone-mono"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; - linphone_core_set_ring(theLinphoneCore, lRing ); - const char* lRingBack = [[myBundle pathForResource:@"ringback"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; - linphone_core_set_ringback(theLinphoneCore, lRingBack); - - - - //configure sip account - - //madatory parameters - - NSString* username = [[NSUserDefaults standardUserDefaults] stringForKey:@"username_preference"]; - NSString* domain = [[NSUserDefaults standardUserDefaults] stringForKey:@"domain_preference"]; - NSString* accountPassword = [[NSUserDefaults standardUserDefaults] stringForKey:@"password_preference"]; - bool configCheckDisable = [[NSUserDefaults standardUserDefaults] boolForKey:@"check_config_disable_preference"]; - bool isOutboundProxy= [[NSUserDefaults standardUserDefaults] boolForKey:@"outbound_proxy_preference"]; - - - //clear auth info list - linphone_core_clear_all_auth_info(theLinphoneCore); - //clear existing proxy config - linphone_core_clear_proxy_config(theLinphoneCore); - if (username && [username length] >0 && domain && [domain length]>0) { - const char* identity = [[NSString stringWithFormat:@"sip:%@@%@",username,domain] cStringUsingEncoding:[NSString defaultCStringEncoding]]; - const char* password = [accountPassword cStringUsingEncoding:[NSString defaultCStringEncoding]]; - - NSString* proxyAddress = [[NSUserDefaults standardUserDefaults] stringForKey:@"proxy_preference"]; - if ((!proxyAddress || [proxyAddress length] <1 ) && domain) { - proxyAddress = [NSString stringWithFormat:@"sip:%@",domain] ; - } else { - proxyAddress = [NSString stringWithFormat:@"sip:%@",proxyAddress] ; - } - - const char* proxy = [proxyAddress cStringUsingEncoding:[NSString defaultCStringEncoding]]; - - NSString* prefix = [[NSUserDefaults standardUserDefaults] stringForKey:@"prefix_preference"]; - bool substitute_plus_by_00 = [[NSUserDefaults standardUserDefaults] boolForKey:@"substitute_+_by_00_preference"]; - //possible valid config detected - LinphoneProxyConfig* proxyCfg; - proxyCfg = linphone_proxy_config_new(); - - // add username password - LinphoneAddress *from = linphone_address_new(identity); - LinphoneAuthInfo *info; - if (from !=0){ - info=linphone_auth_info_new(linphone_address_get_username(from),NULL,password,NULL,NULL); - linphone_core_add_auth_info(theLinphoneCore,info); - } - linphone_address_destroy(from); - - // configure proxy entries - linphone_proxy_config_set_identity(proxyCfg,identity); - linphone_proxy_config_set_server_addr(proxyCfg,proxy); - linphone_proxy_config_enable_register(proxyCfg,true); - BOOL isWifiOnly = [[NSUserDefaults standardUserDefaults] boolForKey:@"wifi_only_preference"]; - LinphoneManager* lLinphoneMgr = [LinphoneManager instance]; - if (isWifiOnly && lLinphoneMgr.connectivity == wwan) { - linphone_proxy_config_expires(proxyCfg, 0); - } else { - linphone_proxy_config_expires(proxyCfg, DEFAULT_EXPIRES); - } - - if (isOutboundProxy) - linphone_proxy_config_set_route(proxyCfg,proxy); - - if ([prefix length]>0) { - linphone_proxy_config_set_dial_prefix(proxyCfg, [prefix cStringUsingEncoding:[NSString defaultCStringEncoding]]); - } - linphone_proxy_config_set_dial_escape_plus(proxyCfg,substitute_plus_by_00); - - linphone_core_add_proxy_config(theLinphoneCore,proxyCfg); - //set to default proxy - linphone_core_set_default_proxy(theLinphoneCore,proxyCfg); - - } else { - if (configCheckDisable == false ) { - UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Warning",nil) - message:NSLocalizedString(@"It seems you have not configured any proxy server from settings",nil) - delegate:self - cancelButtonTitle:NSLocalizedString(@"Continue",nil) - otherButtonTitles:NSLocalizedString(@"Never remind",nil),nil]; - [error show]; - [error release]; - } - } - - //Configure Codecs - - PayloadType *pt; - //get codecs from linphonerc - const MSList *audioCodecs=linphone_core_get_audio_codecs(theLinphoneCore); - const MSList *elem; - //disable all codecs - for (elem=audioCodecs;elem!=NULL;elem=elem->next){ - pt=(PayloadType*)elem->data; - linphone_core_enable_payload_type(theLinphoneCore,pt,FALSE); - } - - //read codecs from setting bundle and enable them one by one - if ([self isNotIphone3G]) { - [self configurePayloadType:"SILK" fromPrefKey:@"silk_24k_preference" withRate:24000]; - } - else { - ms_message("SILK 24khz codec deactivated"); - } - [self configurePayloadType:"speex" fromPrefKey:@"speex_16k_preference" withRate:16000]; - [self configurePayloadType:"speex" fromPrefKey:@"speex_8k_preference" withRate:8000]; - [self configurePayloadType:"SILK" fromPrefKey:@"silk_16k_preference" withRate:16000]; - [self configurePayloadType:"AMR" fromPrefKey:@"amr_8k_preference" withRate:8000]; - [self configurePayloadType:"GSM" fromPrefKey:@"gsm_8k_preference" withRate:8000]; - [self configurePayloadType:"iLBC" fromPrefKey:@"ilbc_preference" withRate:8000]; - [self configurePayloadType:"PCMU" fromPrefKey:@"pcmu_preference" withRate:8000]; - [self configurePayloadType:"PCMA" fromPrefKey:@"pcma_preference" withRate:8000]; - [self configurePayloadType:"G722" fromPrefKey:@"g722_preference" withRate:8000]; - [self configurePayloadType:"G729" fromPrefKey:@"g729_preference" withRate:8000]; - - //get video codecs from linphonerc - const MSList *videoCodecs=linphone_core_get_video_codecs(theLinphoneCore); - //disable video all codecs - for (elem=videoCodecs;elem!=NULL;elem=elem->next){ - pt=(PayloadType*)elem->data; - linphone_core_enable_payload_type(theLinphoneCore,pt,FALSE); - } - [self configurePayloadType:"MP4V-ES" fromPrefKey:@"mp4v-es_preference" withRate:90000]; - [self configurePayloadType:"H264" fromPrefKey:@"h264_preference" withRate:90000]; - [self configurePayloadType:"VP8" fromPrefKey:@"vp8_preference" withRate:90000]; - - if ([self isNotIphone3G]) { - bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; - linphone_core_enable_video(theLinphoneCore, enableVideo, enableVideo); - } else { - linphone_core_enable_video(theLinphoneCore, FALSE, FALSE); - ms_warning("Disable video for phones prior to iPhone 3GS"); - } - bool enableSrtp = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_srtp_preference"]; - linphone_core_set_media_encryption(theLinphoneCore, enableSrtp?LinphoneMediaEncryptionSRTP:LinphoneMediaEncryptionZRTP); - - NSString* stun_server = [[NSUserDefaults standardUserDefaults] stringForKey:@"stun_preference"]; - if ([stun_server length]>0){ - linphone_core_set_stun_server(theLinphoneCore,[stun_server cStringUsingEncoding:[NSString defaultCStringEncoding]]); - linphone_core_set_firewall_policy(theLinphoneCore, LinphonePolicyUseStun); - }else{ - linphone_core_set_stun_server(theLinphoneCore, NULL); - linphone_core_set_firewall_policy(theLinphoneCore, LinphonePolicyNoFirewall); - } - - LinphoneVideoPolicy policy; - policy.automatically_accept = [[NSUserDefaults standardUserDefaults] boolForKey:@"start_video_preference"];; - policy.automatically_initiate = [[NSUserDefaults standardUserDefaults] boolForKey:@"start_video_preference"]; - linphone_core_set_video_policy(theLinphoneCore, &policy); - - UIDevice* device = [UIDevice currentDevice]; - bool backgroundSupported = false; - if ([device respondsToSelector:@selector(isMultitaskingSupported)]) - backgroundSupported = [device isMultitaskingSupported]; - - if (backgroundSupported) { - isbackgroundModeEnabled = [[NSUserDefaults standardUserDefaults] boolForKey:@"backgroundmode_preference"]; - } else { - isbackgroundModeEnabled=false; - } - - [currentSettings release]; - currentSettings = newSettings; - [currentSettings retain]; - - return YES; -} - (BOOL)isNotIphone3G { - size_t size; - sysctlbyname("hw.machine", NULL, &size, NULL, 0); - char *machine = malloc(size); - sysctlbyname("hw.machine", machine, &size, NULL, 0); - NSString *platform = [[NSString alloc ] initWithUTF8String:machine]; - free(machine); + static BOOL done=FALSE; + static BOOL result; + if (!done){ + size_t size; + sysctlbyname("hw.machine", NULL, &size, NULL, 0); + char *machine = malloc(size); + sysctlbyname("hw.machine", machine, &size, NULL, 0); + NSString *platform = [[NSString alloc ] initWithUTF8String:machine]; + free(machine); - BOOL result = ![platform isEqualToString:@"iPhone1,2"]; + result = ![platform isEqualToString:@"iPhone1,2"]; - [platform release]; + [platform release]; + done=TRUE; + } return result; } // no proxy configured alert - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { - if (buttonIndex == 1) { - [[NSUserDefaults standardUserDefaults] setBool:true forKey:@"check_config_disable_preference"]; - } + } -(void) destroyLibLinphone { [mIterateTimer invalidate]; @@ -906,18 +654,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *confiFileName = [[paths objectAtIndex:0] stringByAppendingString:@"/.linphonerc"]; NSString *zrtpSecretsFileName = [[paths objectAtIndex:0] stringByAppendingString:@"/zrtp_secrets"]; + const char* lRootCa = [[myBundle pathForResource:@"rootca"ofType:@"pem"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; connectivity=none; signal(SIGPIPE, SIG_IGN); //log management - if ([[NSUserDefaults standardUserDefaults] boolForKey:@"debugenable_preference"]) { - //redirect all traces to the iphone log framework - linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler); - } - else { - linphone_core_disable_logs(); - } - libmsilbc_init(); #if defined (HAVE_SILK) libmssilk_init(); @@ -940,13 +681,17 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach , [factoryConfig cStringUsingEncoding:[NSString defaultCStringEncoding]] ,self); - [[NSUserDefaults standardUserDefaults] synchronize];//sync before loading config + linphone_core_set_root_ca(theLinphoneCore, lRootCa); + // Set audio assets + const char* lRing = [[myBundle pathForResource:@"oldphone-mono"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; + linphone_core_set_ring(theLinphoneCore, lRing ); + const char* lRingBack = [[myBundle pathForResource:@"ringback"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; + linphone_core_set_ringback(theLinphoneCore, lRingBack); + linphone_core_set_zrtp_secrets_file(theLinphoneCore, [zrtpSecretsFileName cStringUsingEncoding:[NSString defaultCStringEncoding]]); [self setupNetworkReachabilityCallback: "linphone.org" withContext:nil]; - - [self reconfigureLinphoneIfNeeded:nil]; // start scheduler mIterateTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 @@ -1001,6 +746,14 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach NSUInteger cpucount = [[NSProcessInfo processInfo] processorCount]; ms_set_cpu_count(cpucount); + if (![self isNotIphone3G]){ + PayloadType *pt=linphone_core_find_payload_type(theLinphoneCore,"SILK",24000); + if (pt) { + linphone_core_enable_payload_type(theLinphoneCore,pt,FALSE); + ms_warning("SILK/24000 and video disabled on old iPhone 3G"); + } + linphone_core_enable_video(theLinphoneCore, FALSE, FALSE); + } ms_warning("Linphone [%s] started on [%s], running with [%u] processor(s)" ,linphone_core_get_version() @@ -1026,15 +779,12 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //back from standby and background mode is disabled [self startLibLinphone]; } else { - if (![self reconfigureLinphoneIfNeeded:currentSettings]) { - ms_message("becoming active with no config modification, make sure we are registered"); - [self refreshRegisters]; - } + [self refreshRegisters]; } /*IOS specific*/ linphone_core_start_dtmf_stream(theLinphoneCore); - } + -(void) registerLogView:(id) view { mLogView = view; } @@ -1070,7 +820,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } -(void) settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender { - [self reconfigureLinphoneIfNeeded: currentSettings]; + NSLog(@"settingsViewControllerDidEnd"); } -(NSDictionary*) filterPreferenceSpecifier:(NSDictionary *)specifier { @@ -1086,23 +836,21 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach // child pane maybe NSString* title = [specifier objectForKey:@"Title"]; if ([title isEqualToString:@"Video"]) { - if (!linphone_core_video_enabled(theLinphoneCore)) + if (!linphone_core_video_supported(theLinphoneCore)) return nil; } return specifier; } // NSLog(@"Specifier received: %@", identifier); - if ([identifier isEqualToString:@"srtp_preference"]) { - if (!ortp_srtp_supported()) - return nil; - } else if ([identifier hasPrefix:@"silk"]) { - if ([identifier isEqualToString:@"speex_24k_preference"]) { - if (linphone_core_find_payload_type(theLinphoneCore, "SILK", 24000)) return nil; - } else if ([identifier isEqualToString:@"speex_16k_preference"]) { - if (linphone_core_find_payload_type(theLinphoneCore, "SILK", 16000)) return nil; - } else if ([identifier isEqualToString:@"speex_8k_preference"]) { - if (linphone_core_find_payload_type(theLinphoneCore, "SILK", 8000)) return nil; - } + if ([identifier hasPrefix:@"silk"]) { + if (linphone_core_find_payload_type(theLinphoneCore,"SILK",8000)==NULL){ + return nil; + } + if ([identifier isEqualToString:@"silk_24k_preference"]) { + if (![self isNotIphone3G]) + return nil; + } + } else if ([identifier isEqualToString:@"backgroundmode_preference"]) { UIDevice* device = [UIDevice currentDevice]; if ([device respondsToSelector:@selector(isMultitaskingSupported)]) { diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h index 2eaaa2ca0..f98f3b494 100644 --- a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h +++ b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h @@ -17,6 +17,7 @@ #import #import +#import "IASKSettingsReader.h" #import "IASKSettingsStore.h" #import "IASKViewController.h" @@ -64,6 +65,7 @@ NSMutableArray *_viewList; IASKSettingsReader *_settingsReader; + id _settingsReaderDelegate; id _settingsStore; NSString *_file; @@ -75,6 +77,7 @@ @property (nonatomic, assign) IBOutlet id delegate; @property (nonatomic, copy) NSString *file; +@property (nonatomic, assign) id settingsReaderDelegate; @property (nonatomic, assign) BOOL showCreditsFooter; @property (nonatomic, assign) BOOL showDoneButton; diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m index d3593e1b0..557c33730 100644 --- a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m +++ b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m @@ -63,11 +63,12 @@ CGRect IASKCGRectSwap(CGRect rect); @synthesize showCreditsFooter = _showCreditsFooter; @synthesize showDoneButton = _showDoneButton; @synthesize settingsStore = _settingsStore; +@synthesize settingsReaderDelegate = _settingsReaderDelegate; #pragma mark accessors - (IASKSettingsReader*)settingsReader { if (!_settingsReader) { - _settingsReader = [[IASKSettingsReader alloc] initWithFile:self.file]; + _settingsReader = [[IASKSettingsReader alloc] initWithFile:self.file andDelegate:self.settingsReaderDelegate]; } return _settingsReader; } @@ -267,7 +268,7 @@ CGRect IASKCGRectSwap(CGRect rect); [self.delegate settingsViewControllerDidEnd:self]; } // reload - [self.settingsReader initWithFile:self.file]; + [self.settingsReader initWithFile:self.file andDelegate:self.settingsReaderDelegate]; [self.tableView reloadData]; } @@ -620,9 +621,9 @@ CGRect IASKCGRectSwap(CGRect rect); // load the view controll back in to push it targetViewController = [[self.viewList objectAtIndex:kIASKSpecifierChildViewControllerIndex] objectForKey:@"viewController"]; } + targetViewController.settingsReaderDelegate = self.settingsReaderDelegate; targetViewController.file = specifier.file; // changes settingsReader - targetViewController.settingsReader.delegate = self.settingsReader.delegate; - [targetViewController.settingsReader initWithFile:specifier.file]; + targetViewController.title = specifier.title; targetViewController.showCreditsFooter = NO; [[self navigationController] pushViewController:targetViewController animated:YES]; diff --git a/InAppSettingsKit/Models/IASKSettingsReader.h b/InAppSettingsKit/Models/IASKSettingsReader.h index bbdd1a5b5..c66156d8b 100644 --- a/InAppSettingsKit/Models/IASKSettingsReader.h +++ b/InAppSettingsKit/Models/IASKSettingsReader.h @@ -125,10 +125,10 @@ __VA_ARGS__ \ NSDictionary *_settingsBundle; NSArray *_dataSource; NSBundle *_bundle; - id delegate; + id _delegate; } -- (id)initWithFile:(NSString*)file; +- (id)initWithFile:(NSString*)file andDelegate:(id)delegate; - (NSInteger)numberOfSections; - (NSInteger)numberOfRowsForSection:(NSInteger)section; - (IASKSpecifier*)specifierForIndexPath:(NSIndexPath*)indexPath; @@ -145,5 +145,5 @@ __VA_ARGS__ \ @property (nonatomic, retain) NSString *bundlePath; @property (nonatomic, retain) NSDictionary *settingsBundle; @property (nonatomic, retain) NSArray *dataSource; -@property (nonatomic, retain) id delegate; + @end diff --git a/InAppSettingsKit/Models/IASKSettingsReader.m b/InAppSettingsKit/Models/IASKSettingsReader.m index dd82ce72b..7e53458ec 100644 --- a/InAppSettingsKit/Models/IASKSettingsReader.m +++ b/InAppSettingsKit/Models/IASKSettingsReader.m @@ -32,13 +32,13 @@ localizationTable=_localizationTable, bundlePath=_bundlePath, settingsBundle=_settingsBundle, dataSource=_dataSource; -@synthesize delegate; + - (id)init { - return [self initWithFile:@"Root"]; + return [self initWithFile:@"Root" andDelegate:nil]; } -- (id)initWithFile:(NSString*)file { +- (id)initWithFile:(NSString*)file andDelegate:(id)delegate{ if ((self=[super init])) { @@ -61,7 +61,7 @@ dataSource=_dataSource; self.localizationTable = @"Root"; } } - + _delegate=delegate; if (_settingsBundle) { [self _reinterpretBundle:_settingsBundle]; } @@ -86,8 +86,8 @@ dataSource=_dataSource; NSMutableArray *dataSource = [[[NSMutableArray alloc] init] autorelease]; for (NSDictionary *specifier in preferenceSpecifiers) { - if (delegate != nil) { - specifier = [delegate filterPreferenceSpecifier:specifier]; + if (_delegate != nil) { + specifier = [_delegate filterPreferenceSpecifier:specifier]; if (specifier == nil) { // skip continue; @@ -127,7 +127,8 @@ dataSource=_dataSource; - (NSInteger)numberOfRowsForSection:(NSInteger)section { int headingCorrection = [self _sectionHasHeading:section] ? 1 : 0; - return [(NSArray*)[[self dataSource] objectAtIndex:section] count] - headingCorrection; + NSInteger ret= [(NSArray*)[[self dataSource] objectAtIndex:section] count] - headingCorrection; + return ret; } - (IASKSpecifier*)specifierForIndexPath:(NSIndexPath*)indexPath { diff --git a/PhoneMainView.xib b/PhoneMainView.xib index 0052d5e1c..9faf37e10 100644 --- a/PhoneMainView.xib +++ b/PhoneMainView.xib @@ -2,13 +2,13 @@ 784 - 11C74 - 1938 - 1138.23 - 567.00 + 11E53 + 2182 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 + 1181 YES @@ -67,10 +67,14 @@ IBCocoaTouchFramework NO - - + + + Settings + + NSImage + 20-gear2.png + IBCocoaTouchFramework - 0 @@ -81,7 +85,7 @@ YES IBCocoaTouchFramework NO - + 256 {0, 0} @@ -93,14 +97,12 @@ YES - - Informations - - Information + + + Root View Controller IBCocoaTouchFramework - - MoreViewController + 1 1 @@ -192,14 +194,11 @@ IBCocoaTouchFramework NO - - - Settings - - NSImage - 20-gear2.png - + + + IBCocoaTouchFramework + 0 @@ -210,7 +209,7 @@ YES IBCocoaTouchFramework NO - + 256 {0, 0} @@ -222,12 +221,14 @@ YES - - - Root View Controller + + Informations + + Information IBCocoaTouchFramework - + + MoreViewController 1 1 @@ -237,14 +238,12 @@ - 266 {{0, 431}, {320, 49}} - 3 MCAwAA @@ -541,7 +540,7 @@ 8.IBPluginDependency 9.IBPluginDependency - + YES UIApplication com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -603,6 +602,10 @@ com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 @@ -617,13 +620,13 @@ dialer-orange.png history-orange.png - + YES {26, 28} {25, 24} {25, 23} - 933 + 1181 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 81e6e686e..97bdf99e3 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -78,7 +78,6 @@ 2242D91710D66BF300E9963F /* out_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91510D66BF300E9963F /* out_call.png */; }; 2242D9C910D691F900E9963F /* GenericTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2242D9C810D691F900E9963F /* GenericTabViewController.m */; }; 2242E313125235120061DDCE /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; - 2245671D107699F700F10948 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2245671C107699F700F10948 /* Settings.bundle */; }; 224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; }; 2248E90E12F7E4CF00220D9C /* UIDigitButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */; }; @@ -312,7 +311,8 @@ 57282931154AF1460076F540 /* history-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646B14CD5585008E9607 /* history-orange.png */; }; 57282933154AF14D0076F540 /* dialer-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646A14CD5585008E9607 /* dialer-orange.png */; }; 57D2B457157E4580002EA69B /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3415205B1563ABEB00205A0E /* MessageUI.framework */; }; - 57D2B45B1580FF58002EA69B /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 57D2B45A1580FF58002EA69B /* Settings.bundle */; }; + 57D2B47C1586384E002EA69B /* Inappsettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 57D2B47B15863820002EA69B /* Inappsettings.bundle */; }; + 57D2B47D1586384F002EA69B /* Inappsettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 57D2B47B15863820002EA69B /* Inappsettings.bundle */; }; 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; @@ -518,7 +518,6 @@ 2242D9C710D691F900E9963F /* GenericTabViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GenericTabViewController.h; sourceTree = ""; }; 2242D9C810D691F900E9963F /* GenericTabViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GenericTabViewController.m; sourceTree = ""; }; 2242E312125235120061DDCE /* oldphone-mono-30s.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "oldphone-mono-30s.caf"; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/oldphone-mono-30s.caf"; sourceTree = ""; }; - 2245671C107699F700F10948 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 224567C1107B968500F10948 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDigitButton.h; sourceTree = ""; }; 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIDigitButton.m; sourceTree = ""; }; @@ -736,7 +735,7 @@ 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "VideoViewController-ipad.xib"; sourceTree = ""; }; 34CA8537148F692A00503C01 /* MainScreenWithVideoPreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainScreenWithVideoPreview.h; sourceTree = ""; }; 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainScreenWithVideoPreview.m; sourceTree = ""; }; - 57D2B45A1580FF58002EA69B /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; + 57D2B47B15863820002EA69B /* Inappsettings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Inappsettings.bundle; sourceTree = ""; }; 70571E1913FABCB000CDD3C2 /* rootca.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rootca.pem; path = Resources/rootca.pem; sourceTree = ""; }; 7066FC0B13E830E400EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; }; 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; @@ -1213,7 +1212,7 @@ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( - 57D2B45A1580FF58002EA69B /* Settings.bundle */, + 57D2B47A15863820002EA69B /* settings */, 3415205B1563ABEB00205A0E /* MessageUI.framework */, 34151FB61563A8D800205A0E /* InAppSettingsKit */, 340751961506459A00B89C47 /* CoreTelephony.framework */, @@ -1260,7 +1259,6 @@ 2274402E106F335E006EC466 /* AudioToolbox.framework */, 22744043106F33FC006EC466 /* Security.framework */, 22744056106F9BC9006EC466 /* CoreFoundation.framework */, - 2245671C107699F700F10948 /* Settings.bundle */, 224567C1107B968500F10948 /* AVFoundation.framework */, 22F51EF5107FA66500F98953 /* untitled.plist */, 22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */, @@ -1427,6 +1425,14 @@ path = Xibs; sourceTree = ""; }; + 57D2B47A15863820002EA69B /* settings */ = { + isa = PBXGroup; + children = ( + 57D2B47B15863820002EA69B /* Inappsettings.bundle */, + ); + path = settings; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -1504,7 +1510,6 @@ 22F2508F107141E100AC9B3F /* PhoneViewController.xib in Resources */, 22F254811073D99800AC9B3F /* ringback.wav in Resources */, 220FAE4B10767A6A0068D98F /* PhoneMainView.xib in Resources */, - 2245671D107699F700F10948 /* Settings.bundle in Resources */, 22F51EF6107FA66500F98953 /* untitled.plist in Resources */, 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */, 227BCDC310D4004600FBFD76 /* CallHistoryTableViewController.xib in Resources */, @@ -1573,6 +1578,7 @@ 34151FF31563A8D800205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */, 34151FF41563A8D800205A0E /* IASKSpecifierValuesView.xib in Resources */, 3415205A1563AA8F00205A0E /* 20-gear2.png in Resources */, + 57D2B47C1586384E002EA69B /* Inappsettings.bundle in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1580,7 +1586,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 57D2B45B1580FF58002EA69B /* Settings.bundle in Resources */, 22D8F11F147548E2008C97DB /* linphonerc in Resources */, 22D8F120147548E2008C97DB /* PhoneViewController.xib in Resources */, 22D8F121147548E2008C97DB /* ringback.wav in Resources */, @@ -1647,6 +1652,7 @@ 341520081563A93B00205A0E /* IASKPSTextFieldSpecifierViewCell.xib in Resources */, 341520091563A93B00205A0E /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */, 3415200A1563A93B00205A0E /* IASKSpecifierValuesView.xib in Resources */, + 57D2B47D1586384F002EA69B /* Inappsettings.bundle in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/nogpl-thirdparties/Settings.bundle/Advanced.plist b/nogpl-thirdparties/Settings.bundle/Advanced.plist deleted file mode 100644 index c4d0b1f69..000000000 --- a/nogpl-thirdparties/Settings.bundle/Advanced.plist +++ /dev/null @@ -1,103 +0,0 @@ - - - - - PreferenceSpecifiers - - - Key - stun_preference - Title - Stun server - Type - PSTextFieldSpecifier - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - - - - DefaultValue - - Key - debugenable_preference - Title - Debug - Type - PSToggleSwitchSpecifier - - - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - - IsSecure - - Key - prefix_preference - KeyboardType - NumberPad - Title - Prefix - Type - PSTextFieldSpecifier - - - DefaultValue - - Key - substitute_+_by_00_preference - Title - Substitue + by 00 - Type - PSToggleSwitchSpecifier - - - DefaultValue - udp - Key - transport_preference - Title - Transport - Titles - - udp - tcp - tls - - Type - PSMultiValueSpecifier - Values - - udp - tcp - tls - - - - DefaultValue - - Key - enable_srtp_preference - Title - Secure rtp - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - backgroundmode_preference - Title - Background mode - Type - PSToggleSwitchSpecifier - - - - diff --git a/nogpl-thirdparties/Settings.bundle/Root.plist b/nogpl-thirdparties/Settings.bundle/Root.plist deleted file mode 100644 index 4b6332f8e..000000000 --- a/nogpl-thirdparties/Settings.bundle/Root.plist +++ /dev/null @@ -1,131 +0,0 @@ - - - - - PreferenceSpecifiers - - - Title - SIP account - Type - PSGroupSpecifier - FooterText - Linphone must be restarted for changes to take effect - - - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - - IsSecure - - Key - username_preference - KeyboardType - Alphabet - Title - User name - Type - PSTextFieldSpecifier - - - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - - IsSecure - - Key - password_preference - KeyboardType - Alphabet - Title - Password - Type - PSTextFieldSpecifier - - - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - - IsSecure - - Key - domain_preference - KeyboardType - URL - Title - Domain - Type - PSTextFieldSpecifier - - - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - - IsSecure - - Key - proxy_preference - KeyboardType - URL - Title - Proxy - Type - PSTextFieldSpecifier - - - DefaultValue - - Key - outbound_proxy_preference - Title - Outbound proxy - Type - PSToggleSwitchSpecifier - - - Title - - Type - PSGroupSpecifier - - - File - audio - Title - Audio Codecs - Type - PSChildPaneSpecifier - - - File - video - Title - Video - Type - PSChildPaneSpecifier - - - File - Advanced - Title - Advanced - Type - PSChildPaneSpecifier - - - StringsTable - Root - - diff --git a/nogpl-thirdparties/Settings.bundle/audio.plist b/nogpl-thirdparties/Settings.bundle/audio.plist deleted file mode 100644 index 670182e79..000000000 --- a/nogpl-thirdparties/Settings.bundle/audio.plist +++ /dev/null @@ -1,85 +0,0 @@ - - - - - PreferenceSpecifiers - - - Title - Codecs - Type - PSGroupSpecifier - - - DefaultValue - - Key - speex_16k_preference - Title - Speex 16Khz - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - speex_8k_preference - Title - Speex 8Khz - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - g722_preference - Title - G722 - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - gsm_8k_preference - Title - GSM - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - ilbc_preference - Title - ILBC - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - pcmu_preference - Title - PCMU - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - pcma_preference - Title - PCMA - Type - PSToggleSwitchSpecifier - - - - diff --git a/nogpl-thirdparties/Settings.bundle/en.lproj/Root.strings b/nogpl-thirdparties/Settings.bundle/en.lproj/Root.strings deleted file mode 100644 index 8cd87b9d6b20c1fbf87bd4db3db267fca5ad4df9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 546 zcmaixOHRW;5JYRuDMndFh#Ua1V1d}N;sVAV2TO?uC3a9aJn*VxFrY}tnon0(S66#J z-d9>G>6W!ur(SDqlp`9nn~*(m%iWnv?yq`Qfp6XbK1?+om~~#r)ZnhkYQU_VbfjuT zHNn`CX<0sd*m1A}>&5sU$akD=GTXJ1e diff --git a/nogpl-thirdparties/Settings.bundle/video.plist b/nogpl-thirdparties/Settings.bundle/video.plist deleted file mode 100644 index 976ec6284..000000000 --- a/nogpl-thirdparties/Settings.bundle/video.plist +++ /dev/null @@ -1,45 +0,0 @@ - - - - - PreferenceSpecifiers - - - Type - PSToggleSwitchSpecifier - Title - Enable video - Key - enable_video_preference - DefaultValue - - - - Type - PSToggleSwitchSpecifier - Title - Automatically start video - Key - start_video_preference - DefaultValue - - - - Title - Codecs - Type - PSGroupSpecifier - - - DefaultValue - - Key - vp8_preference - Title - VP8 - Type - PSToggleSwitchSpecifier - - - - diff --git a/Settings.bundle/Advanced.plist b/settings/Inappsettings.bundle/Advanced.plist similarity index 100% rename from Settings.bundle/Advanced.plist rename to settings/Inappsettings.bundle/Advanced.plist diff --git a/Settings.bundle/Root.plist b/settings/Inappsettings.bundle/Root.plist similarity index 100% rename from Settings.bundle/Root.plist rename to settings/Inappsettings.bundle/Root.plist diff --git a/Settings.bundle/audio.plist b/settings/Inappsettings.bundle/audio.plist similarity index 100% rename from Settings.bundle/audio.plist rename to settings/Inappsettings.bundle/audio.plist diff --git a/Settings.bundle/en.lproj/Root.strings b/settings/Inappsettings.bundle/en.lproj/Root.strings similarity index 100% rename from Settings.bundle/en.lproj/Root.strings rename to settings/Inappsettings.bundle/en.lproj/Root.strings diff --git a/Settings.bundle/video.plist b/settings/Inappsettings.bundle/video.plist similarity index 100% rename from Settings.bundle/video.plist rename to settings/Inappsettings.bundle/video.plist diff --git a/submodules/libilbc-rfc3951 b/submodules/libilbc-rfc3951 index af32518af..a70714c2e 160000 --- a/submodules/libilbc-rfc3951 +++ b/submodules/libilbc-rfc3951 @@ -1 +1 @@ -Subproject commit af32518af41f97caee07070234a3475409b9a27d +Subproject commit a70714c2e8a1f6f9958450cb612e3dc9895981e7 From 4a0e4e1ee89b63f84f89758682ceb83b96326d30 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 12 Jun 2012 17:48:43 +0200 Subject: [PATCH 008/397] inapp settings mostly finished. --- Classes/FirstLoginViewController.m | 15 ++- Classes/IncallViewController.m | 2 +- Classes/LinphoneAppDelegate.m | 53 ++--------- Classes/LinphoneCoreSettingsStore.h | 1 + Classes/LinphoneCoreSettingsStore.m | 136 +++++++++++++++++---------- Classes/LinphoneUI/LinphoneManager.h | 7 +- Classes/LinphoneUI/LinphoneManager.m | 72 ++++++++++---- Classes/MainScreenWithVideoPreview.m | 12 +-- Classes/MoreViewController.m | 3 +- Classes/PhoneViewController.m | 15 +-- linphonerc | 6 +- linphonerc-ipad | 4 - submodules/linphone | 2 +- 13 files changed, 175 insertions(+), 153 deletions(-) diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index 69ae3149d..647b50c58 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -33,12 +33,10 @@ - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - //[username setText:[[NSUserDefaults standardUserDefaults] stringForKey:@"username_preference"]]; - //[passwd setText:[[NSUserDefaults standardUserDefaults] stringForKey:@"password_preference"]]; } -(void) viewDidLoad { - NSString* siteUrl = [[NSUserDefaults standardUserDefaults] stringForKey:@"firt_login_view_url"]; + NSString* siteUrl = [[NSUserDefaults standardUserDefaults] stringForKey:@"first_login_view_url"]; if (siteUrl==nil) { siteUrl=@"http://www.linphone.org"; } @@ -79,9 +77,8 @@ [error show]; [error release]; } else { - [[NSUserDefaults standardUserDefaults] setObject:username.text forKey:@"username_preference"]; - [[NSUserDefaults standardUserDefaults] setObject:passwd.text forKey:@"password_preference"]; - [[LinphoneManager instance] reconfigureLinphoneIfNeeded:nil]; + [[LinphoneManager instance].settingsStore setObject:username.text forKey:@"username_preference"]; + [[LinphoneManager instance].settingsStore setObject:passwd.text forKey:@"password_preference"]; [self.activityIndicator setHidden:false]; }; @@ -106,9 +103,9 @@ // otherButtonTitles:nil ,nil]; //[error show]; //[error release]; - //erase uername passwd - [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"username_preference"]; - [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"password_preference"]; + //erase username passwd + [[LinphoneManager instance].settingsStore setObject:Nil forKey:@"username_preference"]; + [[LinphoneManager instance].settingsStore setObject:Nil forKey:@"password_preference"]; } -(void) displayNotRegisteredFromUI:(UIViewController*) viewCtrl { [self.activityIndicator setHidden:true]; diff --git a/Classes/IncallViewController.m b/Classes/IncallViewController.m index 31a06e8aa..895299e67 100644 --- a/Classes/IncallViewController.m +++ b/Classes/IncallViewController.m @@ -617,7 +617,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { UIDevice* device = [UIDevice currentDevice]; if ([device respondsToSelector:@selector(isMultitaskingSupported)] && [device isMultitaskingSupported]) { - bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; + bool enableVideo = linphone_core_video_enabled([LinphoneManager getLc]); [LinphoneManager set:contacts hidden:enableVideo withName:"CONTACT button" andReason:AT]; [LinphoneManager set:addVideo hidden:!contacts.hidden withName:"ADD_VIDEO button" andReason:AT]; diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index f11c2a97b..80cc25779 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -86,6 +86,8 @@ int __aeabi_idiv(int a, int b) { } - (void)applicationDidEnterBackground:(UIApplication *)application { + if (settingsController.settingsStore!=Nil) + [settingsController.settingsStore synchronize]; if (![[LinphoneManager instance] enterBackgroundMode]) { // destroying eventHandler if app cannot go in background. // Otherwise if a GSM call happen and Linphone is resumed, @@ -138,34 +140,8 @@ int __aeabi_idiv(int a, int b) { } - (void) loadDefaultSettings:(NSDictionary *) appDefaults { - - NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"]; - if(!settingsBundle) { - NSLog(@"Could not find Settings.bundle"); - return; - } - - NSMutableDictionary *rootSettings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Root.plist"]]; - NSMutableDictionary *audioSettings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"audio.plist"]]; - NSMutableDictionary *videoSettings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"video.plist"]]; - NSMutableDictionary *advancedSettings = [NSDictionary dictionaryWithContentsOfFile:[settingsBundle stringByAppendingPathComponent:@"Advanced.plist"]]; - - NSMutableArray *preferences = [rootSettings objectForKey:@"PreferenceSpecifiers"]; - [preferences addObjectsFromArray:[audioSettings objectForKey:@"PreferenceSpecifiers"]]; - [preferences addObjectsFromArray:[videoSettings objectForKey:@"PreferenceSpecifiers"]]; - [preferences addObjectsFromArray:[advancedSettings objectForKey:@"PreferenceSpecifiers"]]; - - NSMutableDictionary *defaultsToRegister = [[NSMutableDictionary alloc] initWithCapacity:[preferences count]]; - - for(NSDictionary *prefSpecification in preferences) { - NSString *key = [prefSpecification objectForKey:@"Key"]; - if(key && [prefSpecification objectForKey:@"DefaultValue"]) { - [defaultsToRegister setObject:[prefSpecification objectForKey:@"DefaultValue"] forKey:key]; - } - } - [defaultsToRegister addEntriesFromDictionary:appDefaults]; - [[NSUserDefaults standardUserDefaults] registerDefaults:defaultsToRegister]; - [defaultsToRegister release]; + [[NSUserDefaults standardUserDefaults] registerDefaults:appDefaults]; + [appDefaults release]; [[NSUserDefaults standardUserDefaults] synchronize]; } @@ -204,22 +180,14 @@ int __aeabi_idiv(int a, int b) { } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ - NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys: - @"NO", @"enable_first_login_view_preference", // -#ifdef HAVE_AMR - @"YES",@"amr_8k_preference", // enable amr by default if compiled with -#endif -#ifdef HAVE_G729 - @"YES",@"g729_preference", // enable amr by default if compiled with -#endif - //@"+33",@"countrycode_preference", - nil]; - + NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys: nil]; + // Put your default NSUserDefaults settings in the dictionary above. + [self loadDefaultSettings: appDefaults]; if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground - && [[NSUserDefaults standardUserDefaults] boolForKey:@"disable_autoboot_preference"]) { + && ![[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]) { // autoboot disabled, doing nothing } else { [self startApplication]; @@ -240,11 +208,8 @@ int __aeabi_idiv(int a, int b) { // Settings, setup delegate settingsController.delegate = [LinphoneManager instance]; settingsController.settingsReaderDelegate = [LinphoneManager instance]; - settingsController.settingsStore=[[LinphoneCoreSettingsStore alloc] init]; - //settingsController.file=@"settings/Inappsettings.bundle"; + [LinphoneManager instance].settingsStore=settingsController.settingsStore=[[LinphoneCoreSettingsStore alloc] init]; settingsController.showCreditsFooter=FALSE; - //[settingsController.settingsReader init]; - [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound]; diff --git a/Classes/LinphoneCoreSettingsStore.h b/Classes/LinphoneCoreSettingsStore.h index af1f272c2..2014e49aa 100644 --- a/Classes/LinphoneCoreSettingsStore.h +++ b/Classes/LinphoneCoreSettingsStore.h @@ -13,6 +13,7 @@ @interface LinphoneCoreSettingsStore : IASKAbstractSettingsStore { NSDictionary *dict; + NSDictionary *changedDict; } -(void) transformLinphoneCoreToKeys; diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 0df80d755..fff6669ed 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -11,44 +11,33 @@ #include "lpconfig.h" -struct codec_name_pref_table{ - const char *name; - int rate; - NSString *prefname; -}; +extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); -struct codec_name_pref_table codec_pref_table[]={ - { "speex", 8000, @"speex_8k_preference" }, - { "speex", 16000, @"speex_16k_preference" }, - { "silk", 24000, @"silk_24k_preference" }, - { "silk", 16000, @"silk_16k_preference" }, - { "amr", 8000, @"amr_8k_preference" }, - { "ilbc", 8000, @"ilbc_preference"}, - { "pcmu", 8000, @"pcmu_preference"}, - { "pcma", 8000, @"pcma_preference"}, - { "g722", 8000, @"g722_preference"}, - { "g729", 8000, @"g729_preference"}, - { "mp4v-es", 90000, @"mp4v-es_preference"}, - { "h264", 90000, @"h264_preference"}, - { "vp8", 90000, @"vp8_preference"}, - { NULL,0,Nil } -}; - -static NSString *getPrefForCodec(const char *name, int rate){ - int i; - for(i=0;codec_pref_table[i].name!=NULL;++i){ - if (strcasecmp(codec_pref_table[i].name,name)==0 && codec_pref_table[i].rate==rate) - return codec_pref_table[i].prefname; - } - return Nil; -} @implementation LinphoneCoreSettingsStore +-(void) handleMigration{ + + NSUserDefaults *oldconfig=[NSUserDefaults standardUserDefaults]; + NSArray *allkeys=[[oldconfig dictionaryRepresentation] allKeys]; + for(NSString* key in allkeys){ + NSLog(@"Migrating old config item %@ to in app settings.",key); + [self setObject:[oldconfig objectForKey:key] forKey:key]; + } + [self synchronize]; + NSLog(@"Migration done"); +} + -(id) init{ self = [super init]; if (self){ dict=[[NSMutableDictionary alloc] init]; + changedDict=[[NSMutableDictionary alloc] init]; + LinphoneCore *lc=[LinphoneManager getLc]; + if (lp_config_get_int(linphone_core_get_config(lc),"app","config_migrated",0)==0){ + [self handleMigration]; + lp_config_set_int(linphone_core_get_config(lc),"app","config_migrated",1); + } [self transformLinphoneCoreToKeys]; } return self; @@ -57,6 +46,7 @@ static NSString *getPrefForCodec(const char *name, int rate){ -(void) dealloc{ [super dealloc]; [dict release]; + [changedDict release]; } -(void) transformKeysToLinphoneCore{ @@ -79,7 +69,7 @@ static NSString *getPrefForCodec(const char *name, int rate){ const MSList *elem=codecs; for(;elem!=NULL;elem=elem->next){ PayloadType *pt=(PayloadType*)elem->data; - NSString *pref=getPrefForCodec(pt->mime_type,pt->clock_rate); + NSString *pref=[LinphoneManager getPrefForCodec:pt->mime_type withRate:pt->clock_rate]; if (pref){ [self setBool: linphone_core_payload_type_enabled(lc,pt) forKey: pref]; }else{ @@ -163,7 +153,14 @@ static NSString *getPrefForCodec(const char *name, int rate){ [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference",0) forKey:@"check_config_disable_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","wifi_only_preference",0) forKey:@"wifi_only_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","backgroundmode_preference",TRUE) forKey:@"backgroundmode_preference"]; - [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","start_at_boot_preference",TRUE) forKey:@"disable_autoboot_preference"]; + /*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/ + BOOL start_at_boot; + if ([[NSUserDefaults standardUserDefaults] objectForKey:@"start_at_boot_preference"]==Nil) + start_at_boot=TRUE; + else start_at_boot=[[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]; + [self setBool: start_at_boot forKey:@"start_at_boot_preference"]; + + if (linphone_core_tunnel_available()){ /*FIXME: enhance linphonecore API to handle tunnel more easily in applications */ @@ -178,30 +175,32 @@ static NSString *getPrefForCodec(const char *name, int rate){ pol=linphone_core_get_video_policy(lc); [self setBool:(pol->automatically_accept && pol->automatically_initiate) forKey:@"start_video_preference"]; } + if (lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference",0)) + linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler); + + [changedDict release]; + changedDict=[[NSMutableDictionary alloc] init]; } -(void) setObject:(id)value forKey:(NSString *)key { [dict setValue:value forKey:key]; - NSString *changed_value=[[NSString alloc] initWithFormat:@"%@_changed", key]; - [dict setValue:[NSNumber numberWithBool:TRUE] forKey:changed_value]; - [changed_value release]; + [changedDict setValue:[NSNumber numberWithBool:TRUE] forKey:key]; } - (id)objectForKey:(NSString*)key { return [dict valueForKey:key]; } -- (BOOL)synchronize { +- (BOOL)valueChangedForKey:(NSString*)key{ + return [ [changedDict valueForKey:key] boolValue]; +} + +- (void) synchronizeAccount{ LinphoneCore *lc=[LinphoneManager getLc]; LinphoneManager* lLinphoneMgr = [LinphoneManager instance]; - - NSLog(@"Called in SettingsStore synchronize"); - if ([self boolForKey:@"username_preference_changed"]) - NSLog(@"username_preference_changed !!"); - return YES; + LinphoneProxyConfig* proxyCfg=NULL; /* unregister before modifying any settings */ { - LinphoneProxyConfig* proxyCfg; linphone_core_get_default_proxy(lc, &proxyCfg); if (proxyCfg) { @@ -221,7 +220,7 @@ static NSString *getPrefForCodec(const char *name, int rate){ NSString* transport = [self stringForKey:@"transport_preference"]; - LCSipTransports transportValue; + LCSipTransports transportValue={0}; if (transport!=nil) { if (linphone_core_get_sip_transports(lc, &transportValue)) { ms_error("cannot get current transport"); @@ -266,7 +265,7 @@ static NSString *getPrefForCodec(const char *name, int rate){ const char* identity = [[NSString stringWithFormat:@"sip:%@@%@",username,domain] cStringUsingEncoding:[NSString defaultCStringEncoding]]; const char* password = [accountPassword cStringUsingEncoding:[NSString defaultCStringEncoding]]; - NSString* proxyAddress = [[NSUserDefaults standardUserDefaults] stringForKey:@"proxy_preference"]; + NSString* proxyAddress = [self stringForKey:@"proxy_preference"]; if ((!proxyAddress || [proxyAddress length] <1 ) && domain) { proxyAddress = [NSString stringWithFormat:@"sip:%@",domain] ; } else { @@ -275,10 +274,10 @@ static NSString *getPrefForCodec(const char *name, int rate){ const char* proxy = [proxyAddress cStringUsingEncoding:[NSString defaultCStringEncoding]]; - NSString* prefix = [[NSUserDefaults standardUserDefaults] stringForKey:@"prefix_preference"]; - bool substitute_plus_by_00 = [[NSUserDefaults standardUserDefaults] boolForKey:@"substitute_+_by_00_preference"]; + NSString* prefix = [self stringForKey:@"prefix_preference"]; + bool substitute_plus_by_00 = [self boolForKey:@"substitute_+_by_00_preference"]; //possible valid config detected - LinphoneProxyConfig* proxyCfg; + proxyCfg = linphone_proxy_config_new(); // add username password @@ -314,20 +313,41 @@ static NSString *getPrefForCodec(const char *name, int rate){ //set to default proxy linphone_core_set_default_proxy(lc,proxyCfg); - } + } +} + +- (BOOL)synchronize { + LinphoneCore *lc=[LinphoneManager getLc]; + if (lc==NULL) return YES; + BOOL account_changed; + + account_changed=[self valueChangedForKey:@"username_preference"] + || [self valueChangedForKey:@"password_preference"] + || [self valueChangedForKey:@"domain_preference"] + || [self valueChangedForKey:@"proxy_preference"] + || [self valueChangedForKey:@"outbound_proxy_preference"] + || [self valueChangedForKey:@"transport_preference"] + || [self valueChangedForKey:@"prefix_preference"] + || [self valueChangedForKey:@"substitute_+_by_00_preference"]; + + if (account_changed) + [self synchronizeAccount]; + //Configure Codecs PayloadType *pt; const MSList *elem; - //disable all codecs + for (elem=linphone_core_get_audio_codecs(lc);elem!=NULL;elem=elem->next){ pt=(PayloadType*)elem->data; - linphone_core_enable_payload_type(lc,pt,[self boolForKey: getPrefForCodec(pt->mime_type,pt->clock_rate)]); + NSString *pref=[LinphoneManager getPrefForCodec:pt->mime_type withRate:pt->clock_rate]; + linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]); } for (elem=linphone_core_get_video_codecs(lc);elem!=NULL;elem=elem->next){ pt=(PayloadType*)elem->data; - linphone_core_enable_payload_type(lc,pt,[self boolForKey: getPrefForCodec(pt->mime_type,pt->clock_rate)]); + NSString *pref=[LinphoneManager getPrefForCodec:pt->mime_type withRate:pt->clock_rate]; + linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]); } bool enableVideo = [self boolForKey:@"enable_video_preference"]; @@ -364,7 +384,19 @@ static NSString *getPrefForCodec(const char *name, int rate){ } else { isbackgroundModeEnabled=false; } - lp_config_set_int(linphone_core_get_config(lc),"app","backgroundmode_preference",backgroundSupported); + lp_config_set_int(linphone_core_get_config(lc),"app","backgroundmode_preference",isbackgroundModeEnabled); + + BOOL debugmode=[self boolForKey:@"debugenable_preference"]; + lp_config_set_int(linphone_core_get_config(lc),"app","debugenable_preference",debugmode); + if (debugmode) linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler); + else linphone_core_disable_logs(); + + /*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/ + BOOL start_at_boot=[self boolForKey:@"start_at_boot_preference"]; + [[NSUserDefaults standardUserDefaults] setBool: start_at_boot forKey:@"start_at_boot_preference"]; + + [changedDict release]; + changedDict=[[NSMutableDictionary alloc] init]; return YES; } diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index c108d36f8..754bf9808 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -24,6 +24,7 @@ #import "LogView.h" #import "LinphoneUIDelegates.h" #import "IASKSettingsReader.h" +#import "IASKSettingsStore.h" #import "IASKAppSettingsViewController.h" typedef enum _Connectivity { @@ -66,7 +67,7 @@ typedef struct _LinphoneCallAppData { FastAddressBook* mFastAddressBook; const char* frontCamId; const char* backCamId; - + id settingsStore; @public CallContext currentCallContextBeforeGoingBackground; } @@ -75,6 +76,7 @@ typedef struct _LinphoneCallAppData { +(BOOL) runningOnIpad; +(void) set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason; +(void) logUIElementPressed:(const char*) name; ++ (NSString *) getPrefForCodec: (const char*) name withRate: (int) rate; -(void) displayDialer; @@ -95,10 +97,11 @@ typedef struct _LinphoneCallAppData { @property (nonatomic, retain) id callDelegate; @property (nonatomic, retain) id registrationDelegate; +@property (nonatomic, retain) id settingsStore; @property Connectivity connectivity; @property (nonatomic) int defaultExpires; @property (readonly) const char* frontCamId; @property (readonly) const char* backCamId; -@property (nonatomic) bool isbackgroundModeEnabled; + @end diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 92722dae8..35f77c04c 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -57,8 +57,41 @@ extern void libmsbcg729_init(); @synthesize connectivity; @synthesize frontCamId; @synthesize backCamId; -@synthesize isbackgroundModeEnabled; @synthesize defaultExpires; +@synthesize settingsStore; + +struct codec_name_pref_table{ +const char *name; +int rate; +NSString *prefname; +}; + +struct codec_name_pref_table codec_pref_table[]={ + { "speex", 8000, @"speex_8k_preference" }, + { "speex", 16000, @"speex_16k_preference" }, + { "silk", 24000, @"silk_24k_preference" }, + { "silk", 16000, @"silk_16k_preference" }, + { "amr", 8000, @"amr_8k_preference" }, + { "ilbc", 8000, @"ilbc_preference"}, + { "pcmu", 8000, @"pcmu_preference"}, + { "pcma", 8000, @"pcma_preference"}, + { "g722", 8000, @"g722_preference"}, + { "g729", 8000, @"g729_preference"}, + { "mp4v-es", 90000, @"mp4v-es_preference"}, + { "h264", 90000, @"h264_preference"}, + { "vp8", 90000, @"vp8_preference"}, + { NULL,0,Nil } +}; + ++ (NSString *) getPrefForCodec: (const char*) name withRate: (int) rate{ + int i; + for(i=0;codec_pref_table[i].name!=NULL;++i){ + if (strcasecmp(codec_pref_table[i].name,name)==0 && codec_pref_table[i].rate==rate) + return codec_pref_table[i].prefname; + } + return Nil; +} + -(id) init { assert (!theLinphoneManager); @@ -289,9 +322,12 @@ extern void libmsbcg729_init(); } +(LinphoneCore*) getLc { +#if 0 if (theLinphoneCore==nil) { @throw([NSException exceptionWithName:@"LinphoneCoreException" reason:@"Linphone core not initialized yet" userInfo:nil]); } +#else +#endif return theLinphoneCore; } @@ -302,7 +338,7 @@ extern void libmsbcg729_init(); [callDelegate displayStatus:message]; } //generic log handler for debug version -static void linphone_iphone_log_handler(int lev, const char *fmt, va_list args){ +void linphone_iphone_log_handler(int lev, const char *fmt, va_list args){ NSString* format = [[NSString alloc] initWithCString:fmt encoding:[NSString defaultCStringEncoding]]; NSLogv(format,args); NSString* formatedString = [[NSString alloc] initWithFormat:format arguments:args]; @@ -564,7 +600,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg); linphone_core_stop_dtmf_stream(theLinphoneCore); - if (isbackgroundModeEnabled && proxyCfg) { + if (proxyCfg && lp_config_get_int(linphone_core_get_config(theLinphoneCore),"app","backgroundmode_preference",0)) { //For registration register linphone_core_refresh_registers(theLinphoneCore); @@ -595,10 +631,6 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } else { ms_warning("keepalive handler cannot be registered"); } - LCSipTransports transportValue; - if (linphone_core_get_sip_transports(theLinphoneCore, &transportValue)) { - ms_error("cannot get current transport"); - } return YES; } else { @@ -820,7 +852,16 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } -(void) settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender { - NSLog(@"settingsViewControllerDidEnd"); +} + +-(BOOL) codecSupported:(NSString *) prefName{ + int i; + for(i=0;codec_pref_table[i].name!=NULL;++i){ + if ([prefName compare:codec_pref_table[i].prefname]==0){ + return linphone_core_find_payload_type(theLinphoneCore,codec_pref_table[i].name, codec_pref_table[i].rate)!=NULL; + } + } + return TRUE; } -(NSDictionary*) filterPreferenceSpecifier:(NSDictionary *)specifier { @@ -842,16 +883,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach return specifier; } // NSLog(@"Specifier received: %@", identifier); - if ([identifier hasPrefix:@"silk"]) { - if (linphone_core_find_payload_type(theLinphoneCore,"SILK",8000)==NULL){ + if ([identifier isEqualToString:@"silk_24k_preference"]) { + if (![self isNotIphone3G]) return nil; - } - if ([identifier isEqualToString:@"silk_24k_preference"]) { - if (![self isNotIphone3G]) - return nil; - } - - } else if ([identifier isEqualToString:@"backgroundmode_preference"]) { + } + if ([identifier isEqualToString:@"backgroundmode_preference"]) { UIDevice* device = [UIDevice currentDevice]; if ([device respondsToSelector:@selector(isMultitaskingSupported)]) { if ([device isMultitaskingSupported]) { @@ -861,6 +897,8 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach // hide setting if bg mode not supported return nil; } + if (![self codecSupported:identifier]) + return Nil; return specifier; } diff --git a/Classes/MainScreenWithVideoPreview.m b/Classes/MainScreenWithVideoPreview.m index c35983820..802bbccca 100644 --- a/Classes/MainScreenWithVideoPreview.m +++ b/Classes/MainScreenWithVideoPreview.m @@ -129,14 +129,12 @@ -(void) showPreview:(BOOL) show { LinphoneCore* lc; - @try { - lc = [LinphoneManager getLc]; - } - @catch (NSException *exception) { - return; - } - bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; + lc = [LinphoneManager getLc]; + + if (lc==NULL) return; + + bool enableVideo = linphone_core_video_enabled(lc); if (enableVideo) { LinphoneCall* call = linphone_core_get_current_call(lc); diff --git a/Classes/MoreViewController.m b/Classes/MoreViewController.m index b2b9e4a96..db04b56ff 100644 --- a/Classes/MoreViewController.m +++ b/Classes/MoreViewController.m @@ -20,6 +20,7 @@ #import "MoreViewController.h" #include "ConsoleViewController.h" #import "LinphoneManager.h" +#include "lpconfig.h" @implementation MoreViewController @@ -36,7 +37,7 @@ [creditText setText: [NSString stringWithFormat:creditText.text,[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]]]; consoleViewController = [[ConsoleViewController alloc] initWithNibName:@"ConsoleViewController" bundle:[NSBundle mainBundle]]; [[LinphoneManager instance] registerLogView:consoleViewController]; - isDebug = [[NSUserDefaults standardUserDefaults] boolForKey:@"debugenable_preference"]; + isDebug = lp_config_get_int(linphone_core_get_config([LinphoneManager getLc]),"app","debugenable_preference",0); } diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index 7309144ad..34e842e5f 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -101,8 +101,9 @@ } -(void) updateCallAndBackButtons { - @try { - bool zeroCall = (linphone_core_get_calls_nb([LinphoneManager getLc]) == 0); + LinphoneCore *lc=[LinphoneManager getLc]; + if (lc){ + bool zeroCall = (linphone_core_get_calls_nb(lc) == 0); [LinphoneManager set:callLarge hidden:!zeroCall withName:"CALL_LARGE button" andReason:__FUNCTION__]; [LinphoneManager set:switchCamera hidden:!zeroCall withName:"SWITCH_CAM button" andReason:__FUNCTION__]; @@ -112,14 +113,8 @@ [callShort setTitle:[UICallButton transforModeEnabled] ? @"transfer":@"call" forState:UIControlStateNormal]; if (!callShort.hidden) - [callShort setEnabled:!linphone_core_sound_resources_locked([LinphoneManager getLc])]; - } @catch (NSException* exc) { - // R.A.S: linphone core si simply not ready... - ms_warning("Catched exception %s: %s", - [exc.name cStringUsingEncoding:[NSString defaultCStringEncoding]], - [exc.reason cStringUsingEncoding:[NSString defaultCStringEncoding]]); - } - + [callShort setEnabled:!linphone_core_sound_resources_locked(lc)]; + } [self updateStatusSubView]; } diff --git a/linphonerc b/linphonerc index 6dd0d69b0..9a2ba91f6 100644 --- a/linphonerc +++ b/linphonerc @@ -6,21 +6,17 @@ mtu=1300 [sip] sip_random_port=1 -sip_port=5060 sip_tcp_random_port=1 -sip_tcp_port=0 sip_tls_random_port=1 -sip_tls_port=0 guess_hostname=1 contact=sip:toto@unknown-host inc_timeout=15 use_info=0 use_ipv6=0 -default_proxy=-1 register_only_when_network_is_up=1 auto_net_state_mon=0 keepalive_period=30000 -media_encryption=zrtp + [rtp] audio_rtp_port=7076 diff --git a/linphonerc-ipad b/linphonerc-ipad index f537c1ee1..075adf31c 100644 --- a/linphonerc-ipad +++ b/linphonerc-ipad @@ -6,17 +6,13 @@ mtu=1300 [sip] sip_random_port=1 -sip_port=5060 sip_tcp_random_port=1 -sip_tcp_port=0 sip_tls_random_port=1 -sip_tls_port=0 guess_hostname=1 contact=sip:toto@unknown-host inc_timeout=15 use_info=0 use_ipv6=0 -default_proxy=-1 register_only_when_network_is_up=1 auto_net_state_mon=0 keepalive_period=30000 diff --git a/submodules/linphone b/submodules/linphone index bad6c152f..23d589cec 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit bad6c152f1521de8648d47c70e9321b7668b40b5 +Subproject commit 23d589cec01361b7c08528cd7433d5b01c0579bb From 85eadac3ce9123d39fb9a4185145f6e081a684d8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 12 Jun 2012 18:26:21 +0200 Subject: [PATCH 009/397] Continue workoing on new ui Add own contact picker (WIP) --- Classes/CallHistoryTableViewController.h | 9 +- Classes/CallHistoryTableViewController.m | 16 +- Classes/CallHistoryTableViewController.xib | 201 -------- ...troller.h => ContactTableViewController.h} | 19 +- Classes/ContactTableViewController.m | 103 ++++ ...bViewController.m => ContactsController.h} | 39 +- Classes/ContactsController.m | 64 +++ Classes/ContactsController.xib | 444 ++++++++++++++++++ Classes/HistoryController.h | 33 ++ Classes/HistoryController.m | 63 +++ Classes/HistoryController.xib | 441 +++++++++++++++++ Classes/LinphoneAppDelegate.m | 1 - .../ContactCell.h} | 21 +- Classes/LinphoneUI/ContactCell.m | 37 ++ Classes/LinphoneUI/ContactCell.xib | 195 ++++++++ Classes/LinphoneUI/LinphoneMainBar.h | 10 + Classes/LinphoneUI/LinphoneMainBar.m | 60 ++- Classes/LinphoneUI/LinphoneMainBar.xib | 169 +++++-- Classes/LinphoneUI/LinphoneStatusBar.h | 19 +- Classes/LinphoneUI/LinphoneStatusBar.m | 73 ++- Classes/LinphoneUI/LinphoneStatusBar.xib | 197 ++++++-- Classes/PhoneMainView.h | 13 +- Classes/PhoneMainView.m | 67 ++- Classes/PhoneMainView.xib | 191 ++++++-- Classes/PhoneViewController.h | 2 - Classes/PhoneViewController.m | 8 +- Classes/StatusSubViewController.m | 99 ---- Classes/StatusSubViewController.xib | 252 ---------- Resources/add-contact-depuis-detail-actif.png | Bin 0 -> 5978 bytes Resources/add-contact-depuis-detail-over.png | Bin 0 -> 5238 bytes Resources/all-call-actif.png | Bin 0 -> 6040 bytes Resources/all-call-selectionne.png | Bin 0 -> 6620 bytes Resources/all-contacts-actif.png | Bin 0 -> 6459 bytes Resources/all-contacts-selectionne.png | Bin 0 -> 7073 bytes Resources/bouton-detail-contact-actif.png | Bin 0 -> 4453 bytes Resources/bouton-detail-contact-over.png | Bin 0 -> 4499 bytes Resources/edit-history-actif.png | Bin 0 -> 4693 bytes Resources/edit-history-over.png | Bin 0 -> 4306 bytes Resources/linphone-actif.png | Bin 0 -> 8575 bytes Resources/linphone-selectionne.png | Bin 0 -> 9428 bytes Resources/missed-actif.png | Bin 0 -> 8044 bytes Resources/missed-selectionne.png | Bin 0 -> 8649 bytes linphone.xcodeproj/project.pbxproj | 206 ++++++-- 43 files changed, 2216 insertions(+), 836 deletions(-) delete mode 100644 Classes/CallHistoryTableViewController.xib rename Classes/{GenericTabViewController.h => ContactTableViewController.h} (73%) create mode 100644 Classes/ContactTableViewController.m rename Classes/{GenericTabViewController.m => ContactsController.h} (62%) create mode 100644 Classes/ContactsController.m create mode 100644 Classes/ContactsController.xib create mode 100644 Classes/HistoryController.h create mode 100644 Classes/HistoryController.m create mode 100644 Classes/HistoryController.xib rename Classes/{StatusSubViewController.h => LinphoneUI/ContactCell.h} (67%) create mode 100644 Classes/LinphoneUI/ContactCell.m create mode 100644 Classes/LinphoneUI/ContactCell.xib delete mode 100644 Classes/StatusSubViewController.m delete mode 100644 Classes/StatusSubViewController.xib create mode 100644 Resources/add-contact-depuis-detail-actif.png create mode 100644 Resources/add-contact-depuis-detail-over.png create mode 100644 Resources/all-call-actif.png create mode 100644 Resources/all-call-selectionne.png create mode 100644 Resources/all-contacts-actif.png create mode 100644 Resources/all-contacts-selectionne.png create mode 100644 Resources/bouton-detail-contact-actif.png create mode 100644 Resources/bouton-detail-contact-over.png create mode 100644 Resources/edit-history-actif.png create mode 100644 Resources/edit-history-over.png create mode 100644 Resources/linphone-actif.png create mode 100644 Resources/linphone-selectionne.png create mode 100644 Resources/missed-actif.png create mode 100644 Resources/missed-selectionne.png diff --git a/Classes/CallHistoryTableViewController.h b/Classes/CallHistoryTableViewController.h index 334c5d3d1..21b4abac5 100644 --- a/Classes/CallHistoryTableViewController.h +++ b/Classes/CallHistoryTableViewController.h @@ -16,14 +16,9 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + #import -#import "GenericTabViewController.h" - -@interface CallHistoryTableViewController : GenericTabViewController { - UIButton* clear; +@interface CallHistoryTableViewController : UITableViewController { } --(void) doAction:(id) sender; - -@property (nonatomic, retain) IBOutlet UIButton* clear; @end diff --git a/Classes/CallHistoryTableViewController.m b/Classes/CallHistoryTableViewController.m index 72633984f..a55c5ffd6 100644 --- a/Classes/CallHistoryTableViewController.m +++ b/Classes/CallHistoryTableViewController.m @@ -22,9 +22,6 @@ @implementation CallHistoryTableViewController - -@synthesize clear; - /* - (id)initWithStyle:(UITableViewStyle)style { // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. @@ -33,19 +30,11 @@ return self; } */ - - +/* - (void)viewDidLoad { [super viewDidLoad]; - - UIBarButtonItem* clearButton = [[UIBarButtonItem alloc] - initWithBarButtonSystemItem:UIBarButtonSystemItemTrash - target:self - action:@selector(doAction:)]; - [self.navigationItem setRightBarButtonItem:clearButton]; - [clearButton release]; } - +*/ /* - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; @@ -243,7 +232,6 @@ } */ - - (void)dealloc { [super dealloc]; } diff --git a/Classes/CallHistoryTableViewController.xib b/Classes/CallHistoryTableViewController.xib deleted file mode 100644 index ceb06857e..000000000 --- a/Classes/CallHistoryTableViewController.xib +++ /dev/null @@ -1,201 +0,0 @@ - - - - 784 - 9L31a - 680 - 949.54 - 353.00 - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - - - IBFirstResponder - - - - 292 - {320, 460} - - - 3 - MQA - - NO - YES - NO - - NO - 1 - 0 - YES - 4.400000e+01 - 4.400000e+01 - 2.200000e+01 - - - - - YES - - - view - - - - 5 - - - - dataSource - - - - 6 - - - - delegate - - - - 7 - - - - - YES - - 0 - - YES - - - - - - -1 - - - RmlsZSdzIE93bmVyA - - - -2 - - - - - 4 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 4.IBEditorWindowLastContentRect - 4.IBPluginDependency - - - YES - CallHistoryTableViewController - UIResponder - {{163, 500}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - YES - - - YES - - - - - YES - - YES - - - YES - - - - 13 - - - - YES - - CallHistoryTableViewController - GenericTabViewController - - doAction: - id - - - clear - UIButton - - - IBProjectSource - Classes/CallHistoryTableViewController.h - - - - GenericTabViewController - UITableViewController - - YES - - YES - header - linphoneDelegate - phoneControllerDelegate - - - YES - UIView - id - id - - - - IBProjectSource - Classes/GenericTabViewController.h - - - - - 0 - ../linphone.xcodeproj - 3 - 3.1 - - diff --git a/Classes/GenericTabViewController.h b/Classes/ContactTableViewController.h similarity index 73% rename from Classes/GenericTabViewController.h rename to Classes/ContactTableViewController.h index 206a3bb6a..5b4bd1a2b 100644 --- a/Classes/GenericTabViewController.h +++ b/Classes/ContactTableViewController.h @@ -1,6 +1,6 @@ -/* GenericTabViewController.h +/* ContactTableViewController.h * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -18,14 +18,13 @@ */ #import -#include "linphonecore.h" -#import "PhoneViewController.h" -#import "linphoneAppDelegate.h" +#import +#import -@interface GenericTabViewController : UITableViewController { - LinphoneCore* myLinphoneCore; - IBOutlet UIView* header; +@interface ContactTableViewController : UITableViewController { + NSMutableDictionary* addressBookMap; + + ABAddressBookRef addressBook; } -@property (nonatomic, retain) IBOutlet UIView* header; -@end +@end diff --git a/Classes/ContactTableViewController.m b/Classes/ContactTableViewController.m new file mode 100644 index 000000000..11b639d9f --- /dev/null +++ b/Classes/ContactTableViewController.m @@ -0,0 +1,103 @@ +/* ContactTableViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#include "ContactTableViewController.h" +#import "LinphoneManager.h" +#import "FastAddressBook.h" +#import "ContactCell.h" + +@implementation ContactTableViewController + +#pragma mark Table view methods +NSString *contactTOC = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + +void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { + ContactTableViewController* controller = (ContactTableViewController*)context; + NSMutableDictionary* lAddressBookMap = controller->addressBookMap; + @synchronized (lAddressBookMap) { + + // Reset Address book + [lAddressBookMap removeAllObjects]; + + for(int i = 0; i < [contactTOC length]; i++) { + [lAddressBookMap setObject: [[NSMutableDictionary alloc] init] forKey:[contactTOC substringWithRange:NSMakeRange(i, 1)]]; + } + + NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); + for (id lPerson in lContacts) { + CFStringRef lValue = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonFirstNameProperty); + CFStringRef lLocalizedLabel = ABAddressBookCopyLocalizedLabel(lValue); + + // Put in correct subDic + NSString *firstChar = [[(NSString *)lLocalizedLabel substringToIndex:1] uppercaseString]; + NSMutableDictionary *subDic =[lAddressBookMap objectForKey: firstChar]; + if(subDic == nil) { + subDic = [[NSMutableDictionary alloc] init]; + [lAddressBookMap setObject: subDic forKey:firstChar]; + } + [subDic setObject:lPerson forKey:[(NSString *)lLocalizedLabel retain]]; + + if (lLocalizedLabel) CFRelease(lLocalizedLabel); + CFRelease(lValue); + } + CFRelease(lContacts); + } + [controller.view reloadData]; +} + +- (void) viewDidLoad { + addressBookMap = [[NSMutableDictionary alloc] init]; + addressBook = ABAddressBookCreate(); + ABAddressBookRegisterExternalChangeCallback (addressBook, sync_toc_address_book, self); + sync_toc_address_book(addressBook, nil, self); +} + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return [contactTOC length]; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [(NSMutableDictionary *)[addressBookMap objectForKey: [contactTOC substringWithRange:NSMakeRange(section, 1)]] count]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ContactCell"]; + if (cell == nil) { + cell = [[ContactCell alloc] init]; + } + + NSMutableDictionary *subDic = [addressBookMap objectForKey: [contactTOC substringWithRange:NSMakeRange([indexPath section], 1)]]; + + [cell.label setText: (NSString *)[[subDic allKeys] objectAtIndex:[indexPath row]]]; + return cell; +} + +- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { + return [contactTOC substringWithRange:NSMakeRange(section, 1)]; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +} + +- (void)dealloc { + [super dealloc]; + [addressBookMap removeAllObjects]; +} + +@end diff --git a/Classes/GenericTabViewController.m b/Classes/ContactsController.h similarity index 62% rename from Classes/GenericTabViewController.m rename to Classes/ContactsController.h index e3dc5a208..2676c9d1b 100644 --- a/Classes/GenericTabViewController.m +++ b/Classes/ContactsController.h @@ -1,6 +1,6 @@ -/* GenericTabViewController.c +/* HistoryController.h * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,31 +15,18 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ + */ -#import "GenericTabViewController.h" +#import - -@implementation GenericTabViewController -@synthesize header; - - -- (void)viewDidLoad { - [super viewDidLoad]; - self.tableView.tableHeaderView=header; +@interface ContactsController : UIViewController { + UITableViewController *tableController; + UIButton *allButton; + UIButton *linphoneButton; } - -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - [self.tableView reloadData]; -} - - - -- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { - - [self tableView:tableView didSelectRowAtIndexPath:indexPath]; -} - +@property (nonatomic, retain) IBOutlet UITableViewController* tableController; +@property (nonatomic, retain) IBOutlet UIButton* allButton; +@property (nonatomic, retain) IBOutlet UIButton* linphoneButton; +-(IBAction) onAllClick: (id) event; +-(IBAction) onLinphoneClick: (id) event; @end - diff --git a/Classes/ContactsController.m b/Classes/ContactsController.m new file mode 100644 index 000000000..515784419 --- /dev/null +++ b/Classes/ContactsController.m @@ -0,0 +1,64 @@ +/* HistoryController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +#import "ContactsController.h" +#import "AddressBook/ABPerson.h" + +@implementation ContactsController + +@synthesize tableController; +@synthesize allButton; +@synthesize linphoneButton; + +typedef enum _HistoryView { + History_All, + History_Linphone, + History_MAX +} HistoryView; + + +- (void) changeView: (HistoryView) view { + if(view == History_All) { + allButton.selected = TRUE; + } else { + allButton.selected = FALSE; + } + + if(view == History_Linphone) { + linphoneButton.selected = TRUE; + } else { + linphoneButton.selected = FALSE; + } +} + +- (void) viewDidLoad { + [super viewDidLoad]; + [self changeView: History_All]; +} + +-(IBAction) onAllClick: (id) event { + [self changeView: History_All]; +} + +-(IBAction) onLinphoneClick: (id) event { + [self changeView: History_Linphone]; +} + +@end diff --git a/Classes/ContactsController.xib b/Classes/ContactsController.xib new file mode 100644 index 000000000..4273e7de4 --- /dev/null +++ b/Classes/ContactsController.xib @@ -0,0 +1,444 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUITableView + IBUIView + IBUITableViewController + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 274 + + + + 292 + {106, 58} + + + + _NS:9 + NO + + All + + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + all-contacts-selectionne.png + + + NSImage + all-contacts-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{106, 0}, {106, 58}} + + + + _NS:9 + NO + + Linphone + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + linphone-selectionne.png + + + NSImage + linphone-actif.png + + + + + + + 292 + {{212, 0}, {108, 58}} + + + + _NS:9 + NO + + Add contact + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + add-contact-depuis-detail-over.png + + + NSImage + add-contact-depuis-detail-actif.png + + + + + + {320, 58} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 274 + {{0, 58}, {320, 402}} + + + _NS:10 + + 3 + MQA + + NO + YES + NO + IBCocoaTouchFramework + YES + YES + NO + 1 + 0 + YES + 44 + 22 + 22 + + + {320, 460} + + + + _NS:9 + + 3 + MQA + + + IBCocoaTouchFramework + + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + + + + view + + + + 16 + + + + allButton + + + + 27 + + + + linphoneButton + + + + 31 + + + + tableController + + + + 83 + + + + onAllClick: + + + 7 + + 29 + + + + onLinphoneClick: + + + 7 + + 47 + + + + dataSource + + + + 81 + + + + delegate + + + + 82 + + + + view + + + + 80 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + 3 + + + + + + + + header + + + 4 + + + all + + + 5 + + + linphone + + + 6 + + + addContact + + + 69 + + + tableView + + + 76 + + + + tableController + + + + + ContactsController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + ContactTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 83 + + + + + ContactTableViewController + UITableViewController + + IBProjectSource + ./Classes/ContactTableViewController.h + + + + ContactsController + UIViewController + + id + id + + + + onAllClick: + id + + + onLinphoneClick: + id + + + + UIButton + UIButton + UITableViewController + + + + allButton + UIButton + + + linphoneButton + UIButton + + + tableController + UITableViewController + + + + IBProjectSource + ./Classes/ContactsController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {214, 117} + {214, 117} + {213, 117} + {213, 117} + {213, 117} + {213, 117} + + 1181 + + diff --git a/Classes/HistoryController.h b/Classes/HistoryController.h new file mode 100644 index 000000000..265f608ed --- /dev/null +++ b/Classes/HistoryController.h @@ -0,0 +1,33 @@ +/* HistoryController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import +#import "CallHistoryTableViewController.h" + +@interface HistoryController : UIViewController { + CallHistoryTableViewController *tableController; + UIButton *allButton; + UIButton *missedButton; +} +@property (nonatomic, retain) IBOutlet CallHistoryTableViewController* tableController; +@property (nonatomic, retain) IBOutlet UIButton* allButton; +@property (nonatomic, retain) IBOutlet UIButton* missedButton; +-(IBAction) onAllClick: (id) event; +-(IBAction) onMissedClick: (id) event; +@end diff --git a/Classes/HistoryController.m b/Classes/HistoryController.m new file mode 100644 index 000000000..cdd746907 --- /dev/null +++ b/Classes/HistoryController.m @@ -0,0 +1,63 @@ +/* HistoryController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +#import "HistoryController.h" + + +@implementation HistoryController +@synthesize tableController; +@synthesize allButton; +@synthesize missedButton; + +typedef enum _HistoryView { + History_All, + History_Missed, + History_MAX +} HistoryView; + + +- (void) changeView: (HistoryView) view { + if(view == History_All) { + allButton.selected = TRUE; + } else { + allButton.selected = FALSE; + } + + if(view == History_Missed) { + missedButton.selected = TRUE; + } else { + missedButton.selected = FALSE; + } +} + +- (void) viewDidLoad { + [super viewDidLoad]; + [self changeView: History_All]; +} + +-(IBAction) onAllClick: (id) event { + [self changeView: History_All]; +} + +-(IBAction) onMissedClick: (id) event { + [self changeView: History_Missed]; +} + +@end diff --git a/Classes/HistoryController.xib b/Classes/HistoryController.xib new file mode 100644 index 000000000..3f23429e4 --- /dev/null +++ b/Classes/HistoryController.xib @@ -0,0 +1,441 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUITableView + IBUIView + IBUITableViewController + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 274 + + + + 292 + {106, 58} + + + + _NS:9 + NO + + All + + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + all-call-selectionne.png + + + NSImage + all-call-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{106, 0}, {106, 58}} + + + + _NS:9 + NO + + Missed + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + missed-selectionne.png + + + NSImage + missed-actif.png + + + + + + + 292 + {{212, 0}, {108, 58}} + + + + _NS:9 + NO + + Edit + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + edit-history-over.png + + + NSImage + edit-history-actif.png + + + + + + {320, 58} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 274 + {{0, 58}, {320, 402}} + + + + _NS:9 + + 3 + MQA + + YES + IBCocoaTouchFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + {320, 460} + + + + _NS:9 + + 3 + MQA + + + IBCocoaTouchFramework + + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + + + + view + + + + 16 + + + + tableController + + + + 26 + + + + allButton + + + + 27 + + + + missedButton + + + + 28 + + + + onAllClick: + + + 7 + + 29 + + + + onMissedClick: + + + 7 + + 30 + + + + dataSource + + + + 23 + + + + delegate + + + + 24 + + + + view + + + + 25 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + 3 + + + + + + + + header + + + 4 + + + all + + + 5 + + + missed + + + 6 + + + edit + + + 17 + + + tableView + + + 18 + + + + tableController + + + + + HistoryController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + CallHistoryTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 30 + + + + + CallHistoryTableViewController + UITableViewController + + IBProjectSource + ./Classes/CallHistoryTableViewController.h + + + + HistoryController + UIViewController + + id + id + + + + onAllClick: + id + + + onMissedClick: + id + + + + UIButton + UIButton + CallHistoryTableViewController + + + + allButton + UIButton + + + missedButton + UIButton + + + tableController + CallHistoryTableViewController + + + + IBProjectSource + ./Classes/HistoryController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {213, 117} + {213, 117} + {214, 117} + {214, 117} + {213, 117} + {213, 117} + + 1181 + + diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index bd89a845c..468a68302 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -28,7 +28,6 @@ #import "ConsoleViewController.h" #import "MoreViewController.h" -#include "CallHistoryTableViewController.h" #include "LinphoneManager.h" #include "linphonecore.h" diff --git a/Classes/StatusSubViewController.h b/Classes/LinphoneUI/ContactCell.h similarity index 67% rename from Classes/StatusSubViewController.h rename to Classes/LinphoneUI/ContactCell.h index 72e4997eb..fafb4d8cd 100644 --- a/Classes/StatusSubViewController.h +++ b/Classes/LinphoneUI/ContactCell.h @@ -1,6 +1,6 @@ -/* StatusSubViewController.h +/* ContactCell.h * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,20 +15,13 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -#import -#include "linphonecore.h" + */ -@interface StatusSubViewController : UIViewController { - UIImageView* image; - UIActivityIndicatorView* spinner; - UILabel* label; +#import + +@interface ContactCell : UITableViewCell { + UILabel *label; } -@property (nonatomic, retain) IBOutlet UIImageView* image; -@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* spinner; @property (nonatomic, retain) IBOutlet UILabel* label; - --(BOOL) updateWithRegistrationState:(LinphoneRegistrationState)state message:(NSString*) message; - @end diff --git a/Classes/LinphoneUI/ContactCell.m b/Classes/LinphoneUI/ContactCell.m new file mode 100644 index 000000000..cbc0288b0 --- /dev/null +++ b/Classes/LinphoneUI/ContactCell.m @@ -0,0 +1,37 @@ +/* ContactCell.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "ContactCell.h" + +@implementation ContactCell + +@synthesize label; +- (id) init { + if((self = [super init]) != nil) { + NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"ContactCell" + owner:self + options:nil]; + + if ([arrayOfViews count] >= 1){ + [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; + } + } + return self; +} +@end diff --git a/Classes/LinphoneUI/ContactCell.xib b/Classes/LinphoneUI/ContactCell.xib new file mode 100644 index 000000000..98886f8ae --- /dev/null +++ b/Classes/LinphoneUI/ContactCell.xib @@ -0,0 +1,195 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBProxyObject + IBUILabel + IBUITableViewCell + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 256 + + + + 274 + {{10, 0}, {310, 39}} + + + _NS:328 + NO + YES + 7 + 2 + NO + IBCocoaTouchFramework + Texte de test + + 1 + MCAwIDAAA + + + 1 + 10 + + 1 + 25 + + + Helvetica + 25 + 16 + + + + {320, 39} + + + + _NS:395 + + 3 + MCAwAA + + NO + YES + 4 + YES + IBCocoaTouchFramework + + + {320, 40} + + + + _NS:384 + IBCocoaTouchFramework + + ConferenceDetailCellIdentifier + + + + + + + + label + + + + 9 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + cell + + + 6 + + + label + + + + + ContactCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 9 + + + + + ContactCell + UITableViewCell + + label + UILabel + + + label + + label + UILabel + + + + IBProjectSource + ./Classes/ContactCell.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + 1181 + + diff --git a/Classes/LinphoneUI/LinphoneMainBar.h b/Classes/LinphoneUI/LinphoneMainBar.h index c0edcf6f9..a059fa8a8 100644 --- a/Classes/LinphoneUI/LinphoneMainBar.h +++ b/Classes/LinphoneUI/LinphoneMainBar.h @@ -21,10 +21,20 @@ @interface LinphoneMainBar : UIViewController { UIButton *historyButton; + UIButton *contactsButton; UIButton *dialerButton; + UIButton *settingsButton; + UIButton *chatButton; } @property (nonatomic, retain) IBOutlet UIButton* historyButton; +@property (nonatomic, retain) IBOutlet UIButton* contactsButton; @property (nonatomic, retain) IBOutlet UIButton* dialerButton; +@property (nonatomic, retain) IBOutlet UIButton* settingsButton; +@property (nonatomic, retain) IBOutlet UIButton* chatButton; -(IBAction) onHistoryClick: (id) event; +-(IBAction) onContactsClick: (id) event; +-(IBAction) onDialerClick: (id) event; +-(IBAction) onSettingsClick: (id) event; +-(IBAction) onChatClick: (id) event; @end diff --git a/Classes/LinphoneUI/LinphoneMainBar.m b/Classes/LinphoneUI/LinphoneMainBar.m index 51d0bdf68..3ff7e3060 100644 --- a/Classes/LinphoneUI/LinphoneMainBar.m +++ b/Classes/LinphoneUI/LinphoneMainBar.m @@ -23,8 +23,10 @@ @implementation LinphoneMainBar @synthesize historyButton; +@synthesize contactsButton; @synthesize dialerButton; - +@synthesize settingsButton; +@synthesize chatButton; - (void) viewDidLoad { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveLinphoneMainViewChangeEvent:) name:@"LinphoneMainViewChange" object:nil]; @@ -32,26 +34,64 @@ - (void) receiveLinphoneMainViewChangeEvent: (NSNotification*) notif { PhoneView view = [[notif.userInfo objectForKey: @"PhoneView"] intValue]; - if(view == PhoneView_Main) { - dialerButton.selected = TRUE; - } else { - dialerButton.selected = FALSE; - } - if(view == PhoneView_CallHistory) { + if(view == PhoneView_History) { historyButton.selected = TRUE; } else { historyButton.selected = FALSE; } + if(view == PhoneView_Contacts) { + contactsButton.selected = TRUE; + } else { + contactsButton.selected = FALSE; + } + if(view == PhoneView_Dialer) { + dialerButton.selected = TRUE; + } else { + dialerButton.selected = FALSE; + } + if(view == PhoneView_Settings) { + settingsButton.selected = TRUE; + } else { + settingsButton.selected = FALSE; + } + if(view == PhoneView_Chat) { + chatButton.selected = TRUE; + } else { + chatButton.selected = FALSE; + } +} + +- (void) viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void) dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (IBAction) onHistoryClick: (id) sender { - // Change to default view - NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_CallHistory] forKey:@"PhoneView"]; + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_History] forKey:@"PhoneView"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; +} + +-(IBAction) onContactsClick: (id) event { + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Contacts] forKey:@"PhoneView"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; +} + +-(IBAction) onDialerClick: (id) event { + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Dialer] forKey:@"PhoneView"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; +} + +-(IBAction) onSettingsClick: (id) event { + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Settings] forKey:@"PhoneView"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; +} + +-(IBAction) onChatClick: (id) event { + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Chat] forKey:@"PhoneView"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; } diff --git a/Classes/LinphoneUI/LinphoneMainBar.xib b/Classes/LinphoneUI/LinphoneMainBar.xib index ae4a512fa..e22c6d913 100644 --- a/Classes/LinphoneUI/LinphoneMainBar.xib +++ b/Classes/LinphoneUI/LinphoneMainBar.xib @@ -215,7 +215,7 @@ _NS:9 NO - Tchat + Chat IBCocoaTouchFramework 0 @@ -258,14 +258,6 @@ - - - dialerButton - - - - 12 - historyButton @@ -274,6 +266,14 @@ 13 + + + dialerButton + + + + 12 + view @@ -282,14 +282,74 @@ 14 + + + contactsButton + + + + 27 + + + + chatButton + + + + 28 + + + + settingsButton + + + + 29 + + + + onChatClick: + + + 7 + + 26 + onHistoryClick: - 1 + 7 - 15 + 22 + + + + onDialerClick: + + + 7 + + 24 + + + + onContactsClick: + + + 7 + + 23 + + + + onSettingsClick: + + + 7 + + 25 @@ -326,22 +386,16 @@ mainTabBar - 9 - + 4 + - settings + mask - 8 - + 5 + - contacts - - - 7 - - - dialer + chat 6 @@ -350,16 +404,22 @@ history - 5 - + 7 + - tchat + dialer - 4 - + 8 + - mask + contacts + + + 9 + + + settings @@ -386,29 +446,58 @@ - 16 + 29 LinphoneMainBar UIViewController - - onHistoryClick: - id - - - onHistoryClick: - + + id + id + id + id + id + + + + onChatClick: + id + + + onContactsClick: + id + + + onDialerClick: + id + + onHistoryClick: id - + + onSettingsClick: + id + + + UIButton + UIButton UIButton UIButton + UIButton + + chatButton + UIButton + + + contactsButton + UIButton + dialerButton UIButton @@ -417,6 +506,10 @@ historyButton UIButton + + settingsButton + UIButton + IBProjectSource diff --git a/Classes/LinphoneUI/LinphoneStatusBar.h b/Classes/LinphoneUI/LinphoneStatusBar.h index a041cb37e..bbd2d02c2 100644 --- a/Classes/LinphoneUI/LinphoneStatusBar.h +++ b/Classes/LinphoneUI/LinphoneStatusBar.h @@ -1,6 +1,6 @@ -/* LinphoneStatusBar.h +/* StatusSubViewController.h * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * Copyright (C) 2011 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,13 +15,18 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - + */ #import +#include "linphonecore.h" -@interface LinphoneStatusBar : UIView { - UIView *test; +@interface LinphoneStatusBar : UIViewController { + UIImageView* image; + UIActivityIndicatorView* spinner; + UILabel* label; } -@property (nonatomic, retain) IBOutlet UIView* test; +@property (nonatomic, retain) IBOutlet UIImageView* image; +@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* spinner; +@property (nonatomic, retain) IBOutlet UILabel* label; + @end diff --git a/Classes/LinphoneUI/LinphoneStatusBar.m b/Classes/LinphoneUI/LinphoneStatusBar.m index 21057ad58..f721064a5 100644 --- a/Classes/LinphoneUI/LinphoneStatusBar.m +++ b/Classes/LinphoneUI/LinphoneStatusBar.m @@ -1,6 +1,6 @@ -/* LinphoneStatusBar.m +/* StatusSubViewController.h * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * Copyright (C) 2011 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,20 +15,69 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ + */ #import "LinphoneStatusBar.h" @implementation LinphoneStatusBar -@synthesize test; -- (id) awakeAfterUsingCoder:(NSCoder*)aDecoder { - NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"LinphoneStatusBar" - owner:nil - options:nil]; + +@synthesize image; +@synthesize spinner; +@synthesize label; + +- (void)viewDidLoad +{ + [super viewDidLoad]; - if ([arrayOfViews count] >= 1){ - [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; - } - return self; + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationStateChange:) name:@"LinphoneRegistrationStateChange" object:nil]; } + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation +{ + return (interfaceOrientation == UIInterfaceOrientationPortrait); +} + +- (void) registrationStateChange: (NSNotification*) notif { + LinphoneRegistrationState state = [[notif.userInfo objectForKey: @"state"] intValue]; + NSString* message = [notif.userInfo objectForKey: @"message"]; + label.hidden = NO; + switch(state) { + case LinphoneRegistrationCleared: +/* image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_orange.png"]]; + [spinner stopAnimating]; + [label setText:message != nil ? message : NSLocalizedString(@"No SIP account defined", nil)];*/ + case LinphoneRegistrationFailed: + image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_red.png"]]; + [spinner stopAnimating]; + [label setText:message]; + case LinphoneRegistrationNone: + image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_gray.png"]]; + [spinner stopAnimating]; + [label setText:message]; + case LinphoneRegistrationProgress: + image.hidden = YES; + spinner.hidden = NO; + [spinner startAnimating]; + [label setText:message]; + case LinphoneRegistrationOk: + image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_green.png"]]; + [spinner stopAnimating]; + [label setText:message]; + } +} + +- (void) viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (void) dealloc { + [super dealloc]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + @end diff --git a/Classes/LinphoneUI/LinphoneStatusBar.xib b/Classes/LinphoneUI/LinphoneStatusBar.xib index 7cd51fd02..11c18af81 100644 --- a/Classes/LinphoneUI/LinphoneStatusBar.xib +++ b/Classes/LinphoneUI/LinphoneStatusBar.xib @@ -11,9 +11,11 @@ 1181 - IBProxyObject - IBUIView IBUIImageView + IBUIActivityIndicatorView + IBUIView + IBUILabel + IBProxyObject com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -31,16 +33,17 @@ IBFirstResponder IBCocoaTouchFramework - + 292 - - - 274 + + + 292 {320, 23} - + + _NS:9 NO IBCocoaTouchFramework @@ -49,24 +52,112 @@ barre-noire-top.png + + + -2147483356 + {{0, -1}, {25, 23}} + + + + _NS:567 + NO + IBCocoaTouchFramework + + NSImage + status_gray.png + + + + + -2147483356 + {{0, 1}, {20, 20}} + + + + _NS:1030 + NO + IBCocoaTouchFramework + 2 + + + + -2147483356 + {{28, 0}, {280, 21}} + + + + _NS:328 + NO + YES + 7 + NO + IBCocoaTouchFramework + CARAMBA + + 3 + MC42NjY2NjY2NjY3AA + + + 1 + 10 + + 1 + 17 + + + Helvetica + 17 + 16 + + {320, 23} - - _NS:9 + + _NS:196 3 - MQA - - 2 - + MCAwAA IBCocoaTouchFramework - + + + + image + + + + 8 + + + + label + + + + 9 + + + + spinner + + + + 10 + + + + view + + + + 11 + + @@ -87,17 +178,38 @@ - 3 - + 4 + - + + + + - 4 - - + 7 + + + spin + + + 6 + + + label + + + 5 + + + image + + + 12 + + background @@ -107,31 +219,42 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 4 + 12 LinphoneStatusBar - UIView - - test - UIView - - - test - - test - UIView + UIViewController + + UIImageView + UILabel + UIActivityIndicatorView + + + + image + UIImageView - + + label + UILabel + + + spinner + UIActivityIndicatorView + + IBProjectSource ./Classes/LinphoneStatusBar.h @@ -147,10 +270,10 @@ YES 3 - - barre-noire-top.png - {640, 46} - + + {640, 46} + {25, 23} + 1181 diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index d4ad66c97..82531de79 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -20,8 +20,11 @@ #import typedef enum _PhoneView { - PhoneView_Main, - PhoneView_CallHistory, + PhoneView_Dialer, + PhoneView_History, + PhoneView_Settings, + PhoneView_Chat, + PhoneView_Contacts, PhoneView_END } PhoneView; @@ -35,7 +38,8 @@ typedef enum _PhoneView { NSMutableDictionary *viewDescriptions; NSArray *views; UIView *callTabBar; - UIViewController *mainTabBar; + UIViewController *statusBarController; + UIViewController *mainTabBarController; UIView *incomingTabBar; UIView *addCallTabBar; @@ -45,7 +49,8 @@ typedef enum _PhoneView { @property (nonatomic, retain) IBOutlet UIView* tabBarView; @property (nonatomic, retain) IBOutlet UIView* callTabBar; -@property (nonatomic, retain) IBOutlet UIViewController* mainTabBar; +@property (nonatomic, retain) IBOutlet UIViewController* statusBarController; +@property (nonatomic, retain) IBOutlet UIViewController* mainTabBarController; @property (nonatomic, retain) IBOutlet UIView* incomingTabBar; @property (nonatomic, retain) IBOutlet UIView* addCallTabBar; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index a442a3209..555802c57 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -18,7 +18,10 @@ */ #import "PhoneMainView.h" -#import "CallHistoryTableViewController.h" +#import "PhoneViewController.h" +#import "HistoryController.h" +#import "ContactsController.h" + typedef enum _TabBar { TabBar_Main, TabBar_END @@ -42,23 +45,27 @@ typedef enum _TabBar { @synthesize tabBarView; @synthesize callTabBar; -@synthesize mainTabBar; +@synthesize statusBarController; +@synthesize mainTabBarController; @synthesize incomingTabBar; @synthesize addCallTabBar; - (void) changeView: (NSNotification*) notif { PhoneView view = [[notif.userInfo objectForKey: @"PhoneView"] intValue]; ViewsDescription *description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; + for (UIView *view in contentView.subviews) { [view removeFromSuperview]; } for (UIView *view in tabBarView.subviews) { [view removeFromSuperview]; } + if(description == nil) + return; [contentView addSubview: description->content.view]; - CGRect contentFrame = contentView.frame; + CGRect contentFrame = contentView.frame; if(description->statusEnabled) { statusBarView.hidden = false; contentFrame.origin.y = statusBarView.frame.size.height + statusBarView.frame.origin.y; @@ -80,11 +87,11 @@ typedef enum _TabBar { for (UIView *view in description->tabBar.view.subviews) { if(view.tag == -1) { contentFrame.size.height = tabFrame.origin.y - contentFrame.origin.y + view.frame.origin.y; + break; } } - - // contentView.frame = contentFrame; + contentView.frame = contentFrame; [tabBarView addSubview: description->tabBar.view]; } @@ -96,40 +103,62 @@ typedef enum _TabBar { viewDescriptions = [[NSMutableDictionary alloc] init]; // Load Bars - dumb = mainTabBar.view; + dumb = mainTabBarController.view; + + // Status Bar + [statusBarView addSubview: statusBarController.view]; // Main View PhoneViewController* myPhoneViewController = [[PhoneViewController alloc] initWithNibName:@"PhoneViewController" bundle:[NSBundle mainBundle]]; - [myPhoneViewController loadView]; + //[myPhoneViewController loadView]; ViewsDescription *mainViewDescription = [ViewsDescription alloc]; mainViewDescription->content = myPhoneViewController; - mainViewDescription->tabBar = mainTabBar; + mainViewDescription->tabBar = mainTabBarController; mainViewDescription->statusEnabled = true; - [viewDescriptions setObject:mainViewDescription forKey:[NSNumber numberWithInt: PhoneView_Main]]; + [viewDescriptions setObject:mainViewDescription forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; + + // Contacts View + ContactsController* myContactsController = [[ContactsController alloc] + initWithNibName:@"ContactsController" + bundle:[NSBundle mainBundle]]; + //[myContactsController loadView]; + ViewsDescription *contactsDescription = [ViewsDescription alloc]; + contactsDescription->content = myContactsController; + contactsDescription->tabBar = mainTabBarController; + contactsDescription->statusEnabled = false; + [viewDescriptions setObject:contactsDescription forKey:[NSNumber numberWithInt: PhoneView_Contacts]]; // Call History View - CallHistoryTableViewController* myCallHistoryTableViewController = [[CallHistoryTableViewController alloc] - initWithNibName:@"CallHistoryTableViewController" + HistoryController* myHistoryController = [[HistoryController alloc] + initWithNibName:@"HistoryController" bundle:[NSBundle mainBundle]]; - [myCallHistoryTableViewController loadView]; - ViewsDescription *callHistoryDescription = [ViewsDescription alloc]; - callHistoryDescription->content = myCallHistoryTableViewController; - callHistoryDescription->tabBar = mainTabBar; - callHistoryDescription->statusEnabled = true; - [viewDescriptions setObject:callHistoryDescription forKey:[NSNumber numberWithInt: PhoneView_CallHistory]]; + //[myHistoryController loadView]; + ViewsDescription *historyDescription = [ViewsDescription alloc]; + historyDescription->content = myHistoryController; + historyDescription->tabBar = mainTabBarController; + historyDescription->statusEnabled = false; + [viewDescriptions setObject:historyDescription forKey:[NSNumber numberWithInt: PhoneView_History]]; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil]; // Change to default view - NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Main] forKey:@"PhoneView"]; + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Dialer] forKey:@"PhoneView"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; } -- (void)dealloc { +- (void) viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (void) dealloc { [super dealloc]; + [viewDescriptions dealloc]; + [statusBarView dealloc]; + [statusBarController dealloc]; + [mainTabBarController dealloc]; [[NSNotificationCenter defaultCenter] removeObserver:self]; } @end \ No newline at end of file diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 7ee290cec..378c59c86 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -40,7 +40,7 @@ 292 YES - + 274 {320, 23} @@ -79,7 +79,6 @@ {{0, 400}, {320, 60}} - _NS:9 1 @@ -92,7 +91,7 @@ {320, 460} - + _NS:9 3 @@ -346,7 +345,6 @@ {{215, 67}, {105, 68}} - _NS:9 NO @@ -446,7 +444,6 @@ {{160, 0}, {160, 77}} - _NS:9 NO @@ -545,7 +542,6 @@ {{192, 0}, {128, 72}} - _NS:9 NO @@ -592,7 +588,7 @@ MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + NSImage dialer-over.png @@ -600,7 +596,7 @@ NSImage dialer-actif.png - + @@ -617,7 +613,17 @@ NO IBCocoaTouchFramework - + + NO + + + 1 + 1 + + IBCocoaTouchFramework + NO + + NO @@ -683,17 +689,25 @@ statusBarView - + 176 - mainTabBar + mainTabBarController - + - 180 + 192 + + + + statusBarController + + + + 193 @@ -827,7 +841,7 @@ YES - + root @@ -885,15 +899,21 @@ 175 - + statusBar 178 - + - LinphoneMainBar + mainBarController + + + 190 + + + statusBarController @@ -937,10 +957,11 @@ 169.IBPluginDependency 170.IBPluginDependency 172.IBPluginDependency - 175.CustomClassName 175.IBPluginDependency 178.CustomClassName 178.IBPluginDependency + 190.CustomClassName + 190.IBPluginDependency 53.IBPluginDependency @@ -981,10 +1002,11 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - LinphoneStatusBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin LinphoneMainBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin + LinphoneStatusBar + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1000,7 +1022,7 @@ - 181 + 193 @@ -1008,28 +1030,98 @@ LinphoneMainBar UIViewController + + YES + + YES + onChatClick: + onContactsClick: + onDialerClick: + onHistoryClick: + onSettingsClick: + + + YES + id + id + id + id + id + + + + YES + + YES + onChatClick: + onContactsClick: + onDialerClick: + onHistoryClick: + onSettingsClick: + + + YES + + onChatClick: + id + + + onContactsClick: + id + + + onDialerClick: + id + + + onHistoryClick: + id + + + onSettingsClick: + id + + + YES YES + chatButton + contactsButton dialerButton historyButton + settingsButton YES UIButton UIButton + UIButton + UIButton + UIButton YES YES + chatButton + contactsButton dialerButton historyButton + settingsButton YES + + chatButton + UIButton + + + contactsButton + UIButton + dialerButton UIButton @@ -1038,6 +1130,10 @@ historyButton UIButton + + settingsButton + UIButton + @@ -1047,16 +1143,44 @@ LinphoneStatusBar - UIView + UIViewController - test - UIView + YES + + YES + image + label + spinner + + + YES + UIImageView + UILabel + UIActivityIndicatorView + - test - - test - UIView + YES + + YES + image + label + spinner + + + YES + + image + UIImageView + + + label + UILabel + + + spinner + UIActivityIndicatorView + @@ -1075,7 +1199,8 @@ callTabBar contentView incomingTabBar - mainTabBar + mainTabBarController + statusBarController statusBarView tabBarView @@ -1086,6 +1211,7 @@ UIView UIView UIViewController + UIViewController UIView UIView @@ -1098,7 +1224,8 @@ callTabBar contentView incomingTabBar - mainTabBar + mainTabBarController + statusBarController statusBarView tabBarView @@ -1121,7 +1248,11 @@ UIView - mainTabBar + mainTabBarController + UIViewController + + + statusBarController UIViewController diff --git a/Classes/PhoneViewController.h b/Classes/PhoneViewController.h index 27b93562c..7d76898f3 100644 --- a/Classes/PhoneViewController.h +++ b/Classes/PhoneViewController.h @@ -21,7 +21,6 @@ #import "linphonecore.h" #import "UILinphone.h" #import "CallDelegate.h" -#import "StatusSubViewController.h" @class MainScreenWithVideoPreview; @class IncallViewController; @@ -64,7 +63,6 @@ FirstLoginViewController* myFirstLoginViewController; IncallViewController* mIncallViewController; MainScreenWithVideoPreview* mMainScreenWithVideoPreview; - StatusSubViewController* statusSubViewController; UIButton* switchCamera; } diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index 91872a2c4..a97e57584 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -93,7 +93,9 @@ } } - enableCallButtons = [statusSubViewController updateWithRegistrationState:s message:m]; + // Change to registration state + NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithInt:s], @"state", m, @"message", nil]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneRegistrationStatusChange" object:self userInfo:dict]; [callLarge setEnabled:enableCallButtons]; [callShort setEnabled:enableCallButtons]; @@ -169,11 +171,11 @@ mIncallViewController = [[IncallViewController alloc] initWithNibName:[LinphoneManager runningOnIpad]?@"InCallViewController-ipad":@"IncallViewController" bundle:[NSBundle mainBundle]]; - if (statusSubViewController == nil) { + /*if (statusSubViewController == nil) { statusSubViewController = [[StatusSubViewController alloc] initWithNibName:@"StatusSubViewController" bundle:[NSBundle mainBundle]]; [statusViewHolder addSubview:statusSubViewController.view]; - } + }*/ [self updateCallAndBackButtons]; } diff --git a/Classes/StatusSubViewController.m b/Classes/StatusSubViewController.m deleted file mode 100644 index dd2a5e569..000000000 --- a/Classes/StatusSubViewController.m +++ /dev/null @@ -1,99 +0,0 @@ -/* StatusSubViewController.h - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "StatusSubViewController.h" - -@implementation StatusSubViewController - -@synthesize image; -@synthesize spinner; -@synthesize label; - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -- (void)viewDidLoad -{ - [super viewDidLoad]; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - --(BOOL) updateWithRegistrationState:(LinphoneRegistrationState)state message:(NSString*) message { - label.hidden = NO; - switch(state) { - case LinphoneRegistrationCleared: -/* image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_orange.png"]]; - [spinner stopAnimating]; - [label setText:message != nil ? message : NSLocalizedString(@"No SIP account defined", nil)]; - return YES;*/ - case LinphoneRegistrationFailed: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_red.png"]]; - [spinner stopAnimating]; - [label setText:message]; - return NO; - case LinphoneRegistrationNone: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_gray.png"]]; - [spinner stopAnimating]; - [label setText:message]; - return NO; - case LinphoneRegistrationProgress: - image.hidden = YES; - spinner.hidden = NO; - [spinner startAnimating]; - [label setText:message]; - return NO; - case LinphoneRegistrationOk: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_green.png"]]; - [spinner stopAnimating]; - [label setText:message]; - return YES; - } - return NO; -} - -@end diff --git a/Classes/StatusSubViewController.xib b/Classes/StatusSubViewController.xib deleted file mode 100644 index 9ce474c3b..000000000 --- a/Classes/StatusSubViewController.xib +++ /dev/null @@ -1,252 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - IBUIImageView - IBUIActivityIndicatorView - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - - - -2147483356 - {{0, -1}, {25, 23}} - - - - _NS:567 - NO - IBCocoaTouchFramework - - NSImage - status_gray.png - - - - - -2147483356 - {{0, 1}, {20, 20}} - - - - _NS:1030 - NO - IBCocoaTouchFramework - 2 - - - - -2147483356 - {{28, 0}, {280, 21}} - - - _NS:328 - NO - YES - 7 - NO - IBCocoaTouchFramework - CARAMBA - - 3 - MC42NjY2NjY2NjY3AA - - - 1 - 10 - - 1 - 17 - - - Helvetica - 17 - 16 - - - - {255, 23} - - - - _NS:196 - - 3 - MCAwAA - - IBCocoaTouchFramework - - - - - - - image - - - - 8 - - - - label - - - - 9 - - - - spinner - - - - 10 - - - - view - - - - 11 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - - status_view - - - 7 - - - status_spin - - - 6 - - - status_label - - - 5 - - - status_image - - - - - StatusSubViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 11 - - - - - StatusSubViewController - UIViewController - - UIImageView - UILabel - UIActivityIndicatorView - - - - image - UIImageView - - - label - UILabel - - - spinner - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/StatusSubViewController.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - - status_gray.png - {25, 23} - - 933 - - diff --git a/Resources/add-contact-depuis-detail-actif.png b/Resources/add-contact-depuis-detail-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..7863899300be2a5743a2da209ad9574756ae99d1 GIT binary patch literal 5978 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 literal 0 HcmV?d00001 diff --git a/Resources/add-contact-depuis-detail-over.png b/Resources/add-contact-depuis-detail-over.png new file mode 100644 index 0000000000000000000000000000000000000000..24777743051d07c1d45a90e635668493766ce8b0 GIT binary patch literal 5238 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 literal 0 HcmV?d00001 diff --git a/Resources/all-call-actif.png b/Resources/all-call-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..fe9f61f2f8fce2e1b9e0e73866eb95e562e1749e GIT binary patch literal 6040 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 N)6ux2Uae{y^*`;~2ax~( literal 0 HcmV?d00001 diff --git a/Resources/bouton-detail-contact-actif.png b/Resources/bouton-detail-contact-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..a4856294d3158e975d17da8c4cb1f6263bca7ed7 GIT binary patch literal 4453 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 literal 0 HcmV?d00001 diff --git a/Resources/edit-history-actif.png b/Resources/edit-history-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..da43affc21b8c450819f24e3a9a0ee03c8394d89 GIT binary patch literal 4693 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 literal 0 HcmV?d00001 diff --git a/Resources/edit-history-over.png b/Resources/edit-history-over.png new file mode 100644 index 0000000000000000000000000000000000000000..032bc901d42e25433c27f27a06e86a86a6326d6a GIT binary patch literal 4306 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 OiBMKhm#>$#2>U->8TZ`) literal 0 HcmV?d00001 diff --git a/Resources/linphone-selectionne.png b/Resources/linphone-selectionne.png new file mode 100644 index 0000000000000000000000000000000000000000..0a75d15f05bd419973490c1d3e7bad04df91830d GIT binary patch literal 9428 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 literal 0 HcmV?d00001 diff --git a/Resources/missed-actif.png b/Resources/missed-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2f99b4ef3f5ed365c096da5152b4c9dac7d0d8 GIT binary patch literal 8044 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 772028bb3..a2b3c88fe 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -73,7 +73,6 @@ 223963171393CFAF001DE689 /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 223963161393CFAF001DE689 /* FastAddressBook.m */; }; 2242D91610D66BF300E9963F /* in_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91410D66BF300E9963F /* in_call.png */; }; 2242D91710D66BF300E9963F /* out_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91510D66BF300E9963F /* out_call.png */; }; - 2242D9C910D691F900E9963F /* GenericTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2242D9C810D691F900E9963F /* GenericTabViewController.m */; }; 2242E313125235120061DDCE /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; 2245671D107699F700F10948 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2245671C107699F700F10948 /* Settings.bundle */; }; 224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -97,8 +96,6 @@ 2274401A106F31BD006EC466 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22744019106F31BD006EC466 /* CoreAudio.framework */; }; 2274402F106F335E006EC466 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2274402E106F335E006EC466 /* AudioToolbox.framework */; }; 2274550810700509006EC466 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc */; }; - 227BCDC210D4004600FBFD76 /* CallHistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 227BCDC010D4004600FBFD76 /* CallHistoryTableViewController.m */; }; - 227BCDC310D4004600FBFD76 /* CallHistoryTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */; }; 228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 228697C311AC29B800E9E0CA /* CFNetwork.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 228B19AF130290C500F154D3 /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = 228B19AE130290C500F154D3 /* iTunesArtwork */; }; 22968A5F12F875C600588287 /* UISpeakerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A5E12F875C600588287 /* UISpeakerButton.m */; }; @@ -118,7 +115,6 @@ 22D8F121147548E2008C97DB /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; }; 22D8F124147548E2008C97DB /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; - 22D8F126147548E2008C97DB /* CallHistoryTableViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */; }; 22D8F127147548E2008C97DB /* in_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91410D66BF300E9963F /* in_call.png */; }; 22D8F128147548E2008C97DB /* out_call.png in Resources */ = {isa = PBXBuildFile; fileRef = 2242D91510D66BF300E9963F /* out_call.png */; }; 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; }; @@ -143,8 +139,6 @@ 22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */; }; 22D8F146147548E2008C97DB /* PhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* PhoneViewController.m */; }; 22D8F147147548E2008C97DB /* ContactPickerDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */; }; - 22D8F148147548E2008C97DB /* CallHistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 227BCDC010D4004600FBFD76 /* CallHistoryTableViewController.m */; }; - 22D8F149147548E2008C97DB /* GenericTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2242D9C810D691F900E9963F /* GenericTabViewController.m */; }; 22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81C111C44E100B04932 /* MoreViewController.m */; }; 22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81F111C44E100B04932 /* ConsoleViewController.m */; }; 22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */; }; @@ -216,10 +210,6 @@ 340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; }; 3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; 3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; - 3418844814C6CAD300EA48C7 /* StatusSubViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */; }; - 3418844914C6CAD300EA48C7 /* StatusSubViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */; }; - 3418844A14C6CAD300EA48C7 /* StatusSubViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */; }; - 3418844B14C6CAD300EA48C7 /* StatusSubViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */; }; 3418844D14C6D1CE00EA48C7 /* startcall-gray.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */; }; 3418844E14C6D1CE00EA48C7 /* startcall-gray.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */; }; 3418845314C6F66F00EA48C7 /* status_green.png in Resources */ = {isa = PBXBuildFile; fileRef = 3418844F14C6F66E00EA48C7 /* status_green.png */; }; @@ -271,6 +261,32 @@ D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; }; D347347E1580E5F8003C7B8C /* history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history-actif.png */; }; D347347F1580E5F8003C7B8C /* history-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history-selectionne.png */; }; + D35497FE15875372000081D8 /* ContactsController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsController.m */; }; + D35497FF15875372000081D8 /* ContactsController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsController.m */; }; + D354980015875372000081D8 /* ContactsController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsController.xib */; }; + D354980115875372000081D8 /* ContactsController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsController.xib */; }; + D354980615875534000081D8 /* all-contacts-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* all-contacts-actif.png */; }; + D354980715875534000081D8 /* all-contacts-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* all-contacts-actif.png */; }; + D354980815875534000081D8 /* all-contacts-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* all-contacts-selectionne.png */; }; + D354980915875534000081D8 /* all-contacts-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* all-contacts-selectionne.png */; }; + D354980A15875534000081D8 /* linphone-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* linphone-actif.png */; }; + D354980B15875534000081D8 /* linphone-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* linphone-actif.png */; }; + D354980C15875534000081D8 /* linphone-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* linphone-selectionne.png */; }; + D354980D15875534000081D8 /* linphone-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* linphone-selectionne.png */; }; + D354981015875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */; }; + D354981115875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */; }; + D354981215875608000081D8 /* add-contact-depuis-detail-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */; }; + D354981315875608000081D8 /* add-contact-depuis-detail-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */; }; + D3549816158761D0000081D8 /* ContactTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactTableViewController.m */; }; + D3549817158761D0000081D8 /* ContactTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactTableViewController.m */; }; + D354981A15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */; }; + D354981B15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */; }; + D354981C15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* bouton-detail-contact-over.png */; }; + D354981D15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* bouton-detail-contact-over.png */; }; + D35498211587716B000081D8 /* LinphoneStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* LinphoneStatusBar.m */; }; + D35498221587716B000081D8 /* LinphoneStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* LinphoneStatusBar.m */; }; + D35498231587716B000081D8 /* LinphoneStatusBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* LinphoneStatusBar.xib */; }; + D35498241587716B000081D8 /* LinphoneStatusBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* LinphoneStatusBar.xib */; }; D38327F31580FE3A00FA0D23 /* contacts-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EB1580FE3A00FA0D23 /* contacts-actif.png */; }; D38327F41580FE3A00FA0D23 /* contacts-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */; }; D38327F51580FE3A00FA0D23 /* dialer-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327ED1580FE3A00FA0D23 /* dialer-actif.png */; }; @@ -283,16 +299,16 @@ D3832801158100E400FA0D23 /* history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history-over.png */; }; D3832802158100E400FA0D23 /* settings-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings-over.png */; }; D3832803158100E400FA0D23 /* tchat-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* tchat-over.png */; }; + D3A55FBC15877E5E003FD403 /* ContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* ContactCell.m */; }; + D3A55FBD15877E5E003FD403 /* ContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* ContactCell.m */; }; + D3A55FBF15877E69003FD403 /* ContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* ContactCell.xib */; }; + D3A55FC015877E69003FD403 /* ContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* ContactCell.xib */; }; D3ED3E411585FB4A006C0DE4 /* fond-clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */; }; D3ED3E421585FB4A006C0DE4 /* fond-clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */; }; D3ED3E451585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */; }; D3ED3E461585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */; }; D3ED3E521585FFFD006C0DE4 /* barre-noire-top.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */; }; D3ED3E531585FFFD006C0DE4 /* barre-noire-top.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */; }; - D3ED3E61158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */; }; - D3ED3E62158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */; }; - D3ED3E6515860404006C0DE4 /* LinphoneStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */; }; - D3ED3E6615860404006C0DE4 /* LinphoneStatusBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */; }; D3ED3E6A15861A53006C0DE4 /* add-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */; }; D3ED3E6B15861A53006C0DE4 /* add-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */; }; D3ED3E6C15861A53006C0DE4 /* add-contact-inactif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */; }; @@ -311,6 +327,24 @@ D3ED3E881586291E006C0DE4 /* LinphoneMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* LinphoneMainBar.m */; }; D3ED3E891586291E006C0DE4 /* LinphoneMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */; }; D3ED3E8A1586291E006C0DE4 /* LinphoneMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */; }; + D3ED3E9815872EF1006C0DE4 /* all-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */; }; + D3ED3E9915872EF1006C0DE4 /* all-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */; }; + D3ED3E9A15872EF1006C0DE4 /* all-call-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */; }; + D3ED3E9B15872EF1006C0DE4 /* all-call-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */; }; + D3ED3E9C15872EF1006C0DE4 /* edit-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */; }; + D3ED3E9D15872EF1006C0DE4 /* edit-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */; }; + D3ED3E9E15872EF1006C0DE4 /* edit-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */; }; + D3ED3E9F15872EF1006C0DE4 /* edit-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */; }; + D3ED3EA015872EF1006C0DE4 /* missed-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* missed-actif.png */; }; + D3ED3EA115872EF1006C0DE4 /* missed-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* missed-actif.png */; }; + D3ED3EA215872EF1006C0DE4 /* missed-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */; }; + D3ED3EA315872EF1006C0DE4 /* missed-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */; }; + D3ED3EA71587334E006C0DE4 /* CallHistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* CallHistoryTableViewController.m */; }; + D3ED3EA81587334E006C0DE4 /* CallHistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* CallHistoryTableViewController.m */; }; + D3ED3EB3158738FB006C0DE4 /* HistoryController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryController.xib */; }; + D3ED3EB4158738FB006C0DE4 /* HistoryController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryController.xib */; }; + D3ED3EB81587392C006C0DE4 /* HistoryController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryController.m */; }; + D3ED3EB91587392C006C0DE4 /* HistoryController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryController.m */; }; D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; @@ -618,8 +652,6 @@ 223963161393CFAF001DE689 /* FastAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FastAddressBook.m; sourceTree = ""; }; 2242D91410D66BF300E9963F /* in_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = in_call.png; path = Resources/in_call.png; sourceTree = ""; }; 2242D91510D66BF300E9963F /* out_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = out_call.png; path = Resources/out_call.png; sourceTree = ""; }; - 2242D9C710D691F900E9963F /* GenericTabViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GenericTabViewController.h; sourceTree = ""; }; - 2242D9C810D691F900E9963F /* GenericTabViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GenericTabViewController.m; sourceTree = ""; }; 2242E312125235120061DDCE /* oldphone-mono-30s.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "oldphone-mono-30s.caf"; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/oldphone-mono-30s.caf"; sourceTree = ""; }; 2245671C107699F700F10948 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 224567C1107B968500F10948 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; @@ -647,9 +679,6 @@ 22744043106F33FC006EC466 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 22744056106F9BC9006EC466 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; 2274550710700509006EC466 /* linphonerc */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = linphonerc; sourceTree = ""; }; - 227BCDBF10D4004600FBFD76 /* CallHistoryTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallHistoryTableViewController.h; sourceTree = ""; }; - 227BCDC010D4004600FBFD76 /* CallHistoryTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CallHistoryTableViewController.m; sourceTree = ""; }; - 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CallHistoryTableViewController.xib; sourceTree = ""; }; 228697C311AC29B800E9E0CA /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 228B19AE130290C500F154D3 /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = text; name = iTunesArtwork; path = Resources/iTunesArtwork; sourceTree = ""; }; 22968A5D12F875C600588287 /* UISpeakerButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UISpeakerButton.h; sourceTree = ""; }; @@ -768,9 +797,6 @@ 340751E6150F38FD00B89C47 /* UIToggleVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIToggleVideoButton.m; sourceTree = ""; }; 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "ConferenceCallDetailView-ipad.xib"; sourceTree = ""; }; 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = nowebcamCIF.jpg; path = submodules/linphone/mediastreamer2/src/nowebcamCIF.jpg; sourceTree = ""; }; - 3418844514C6CAD300EA48C7 /* StatusSubViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StatusSubViewController.h; sourceTree = ""; }; - 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StatusSubViewController.m; sourceTree = ""; }; - 3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = StatusSubViewController.xib; sourceTree = ""; }; 3418844C14C6D1CE00EA48C7 /* startcall-gray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "startcall-gray.png"; path = "Resources/startcall-gray.png"; sourceTree = ""; }; 3418844F14C6F66E00EA48C7 /* status_green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_green.png; path = Resources/status_green.png; sourceTree = ""; }; 3418845114C6F66F00EA48C7 /* status_orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_orange.png; path = Resources/status_orange.png; sourceTree = ""; }; @@ -808,6 +834,22 @@ D34734791580DDF1003C7B8C /* PhoneMainView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PhoneMainView.xib; sourceTree = ""; }; D347347C1580E5F8003C7B8C /* history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-actif.png"; path = "Resources/history-actif.png"; sourceTree = ""; }; D347347D1580E5F8003C7B8C /* history-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-selectionne.png"; path = "Resources/history-selectionne.png"; sourceTree = ""; }; + D35497FB15875372000081D8 /* ContactsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsController.h; sourceTree = ""; }; + D35497FC15875372000081D8 /* ContactsController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactsController.m; sourceTree = ""; }; + D35497FD15875372000081D8 /* ContactsController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactsController.xib; sourceTree = ""; }; + D354980215875534000081D8 /* all-contacts-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-contacts-actif.png"; path = "Resources/all-contacts-actif.png"; sourceTree = ""; }; + D354980315875534000081D8 /* all-contacts-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-contacts-selectionne.png"; path = "Resources/all-contacts-selectionne.png"; sourceTree = ""; }; + D354980415875534000081D8 /* linphone-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "linphone-actif.png"; path = "Resources/linphone-actif.png"; sourceTree = ""; }; + D354980515875534000081D8 /* linphone-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "linphone-selectionne.png"; path = "Resources/linphone-selectionne.png"; sourceTree = ""; }; + D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-depuis-detail-actif.png"; path = "Resources/add-contact-depuis-detail-actif.png"; sourceTree = ""; }; + D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-depuis-detail-over.png"; path = "Resources/add-contact-depuis-detail-over.png"; sourceTree = ""; }; + D3549814158761CF000081D8 /* ContactTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactTableViewController.h; sourceTree = ""; }; + D3549815158761D0000081D8 /* ContactTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactTableViewController.m; sourceTree = ""; }; + D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bouton-detail-contact-actif.png"; path = "Resources/bouton-detail-contact-actif.png"; sourceTree = ""; }; + D354981915876FE7000081D8 /* bouton-detail-contact-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bouton-detail-contact-over.png"; path = "Resources/bouton-detail-contact-over.png"; sourceTree = ""; }; + D354981E1587716B000081D8 /* LinphoneStatusBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneStatusBar.h; sourceTree = ""; }; + D354981F1587716B000081D8 /* LinphoneStatusBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneStatusBar.m; sourceTree = ""; }; + D35498201587716B000081D8 /* LinphoneStatusBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneStatusBar.xib; sourceTree = ""; }; D38327EB1580FE3A00FA0D23 /* contacts-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts-actif.png"; path = "Resources/contacts-actif.png"; sourceTree = ""; }; D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts-selectionne.png"; path = "Resources/contacts-selectionne.png"; sourceTree = ""; }; D38327ED1580FE3A00FA0D23 /* dialer-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-actif.png"; path = "Resources/dialer-actif.png"; sourceTree = ""; }; @@ -820,12 +862,12 @@ D38327FD158100E400FA0D23 /* history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-over.png"; path = "Resources/history-over.png"; sourceTree = ""; }; D38327FE158100E400FA0D23 /* settings-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings-over.png"; path = "Resources/settings-over.png"; sourceTree = ""; }; D38327FF158100E400FA0D23 /* tchat-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-over.png"; path = "Resources/tchat-over.png"; sourceTree = ""; }; + D3A55FBA15877E5E003FD403 /* ContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactCell.h; sourceTree = ""; }; + D3A55FBB15877E5E003FD403 /* ContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactCell.m; sourceTree = ""; }; + D3A55FBE15877E69003FD403 /* ContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactCell.xib; sourceTree = ""; }; D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "fond-clavier.png"; path = "Resources/fond-clavier.png"; sourceTree = ""; }; D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-saisie-numero.png"; path = "Resources/champ-saisie-numero.png"; sourceTree = ""; }; D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "barre-noire-top.png"; path = "Resources/barre-noire-top.png"; sourceTree = ""; }; - D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneStatusBar.xib; sourceTree = ""; }; - D3ED3E6315860404006C0DE4 /* LinphoneStatusBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneStatusBar.h; sourceTree = ""; }; - D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneStatusBar.m; sourceTree = ""; }; D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-actif.png"; path = "Resources/add-contact-actif.png"; sourceTree = ""; }; D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-inactif.png"; path = "Resources/add-contact-inactif.png"; sourceTree = ""; }; D3ED3E6915861A53006C0DE4 /* add-contact-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-over.png"; path = "Resources/add-contact-over.png"; sourceTree = ""; }; @@ -836,6 +878,17 @@ D3ED3E841586291B006C0DE4 /* LinphoneMainBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneMainBar.h; sourceTree = ""; }; D3ED3E851586291B006C0DE4 /* LinphoneMainBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneMainBar.m; sourceTree = ""; }; D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneMainBar.xib; sourceTree = ""; }; + D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-call-actif.png"; path = "Resources/all-call-actif.png"; sourceTree = ""; }; + D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-call-selectionne.png"; path = "Resources/all-call-selectionne.png"; sourceTree = ""; }; + D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "edit-history-actif.png"; path = "Resources/edit-history-actif.png"; sourceTree = ""; }; + D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "edit-history-over.png"; path = "Resources/edit-history-over.png"; sourceTree = ""; }; + D3ED3E9615872EF1006C0DE4 /* missed-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "missed-actif.png"; path = "Resources/missed-actif.png"; sourceTree = ""; }; + D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "missed-selectionne.png"; path = "Resources/missed-selectionne.png"; sourceTree = ""; }; + D3ED3EA41587334B006C0DE4 /* CallHistoryTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallHistoryTableViewController.h; sourceTree = ""; }; + D3ED3EA51587334C006C0DE4 /* CallHistoryTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CallHistoryTableViewController.m; sourceTree = ""; }; + D3ED3EB2158738FA006C0DE4 /* HistoryController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryController.xib; sourceTree = ""; }; + D3ED3EB515873928006C0DE4 /* HistoryController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryController.h; sourceTree = ""; }; + D3ED3EB615873929006C0DE4 /* HistoryController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryController.m; sourceTree = ""; }; D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; }; D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; }; D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; }; @@ -999,9 +1052,8 @@ children = ( 340751E4150E4D0200B89C47 /* CallDelegate.h */, 2211DBBB14769C8200DEE054 /* CallDelegate.m */, - 227BCDBF10D4004600FBFD76 /* CallHistoryTableViewController.h */, - 227BCDC010D4004600FBFD76 /* CallHistoryTableViewController.m */, - 227BCDC110D4004600FBFD76 /* CallHistoryTableViewController.xib */, + D3ED3EA41587334B006C0DE4 /* CallHistoryTableViewController.h */, + D3ED3EA51587334C006C0DE4 /* CallHistoryTableViewController.m */, 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */, 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */, 344ABD75147FCB68007420B6 /* ConferenceCallDetailView.h */, @@ -1012,11 +1064,17 @@ 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */, 22B5EFE310CE5E5800777D97 /* ContactPickerDelegate.h */, 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */, + D35497FB15875372000081D8 /* ContactsController.h */, + D35497FC15875372000081D8 /* ContactsController.m */, + D35497FD15875372000081D8 /* ContactsController.xib */, + D3549814158761CF000081D8 /* ContactTableViewController.h */, + D3549815158761D0000081D8 /* ContactTableViewController.m */, 2218A92212FBE1340088A667 /* FirstLoginViewController.h */, 2218A92312FBE1340088A667 /* FirstLoginViewController.m */, 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */, - 2242D9C710D691F900E9963F /* GenericTabViewController.h */, - 2242D9C810D691F900E9963F /* GenericTabViewController.m */, + D3ED3EB515873928006C0DE4 /* HistoryController.h */, + D3ED3EB615873929006C0DE4 /* HistoryController.m */, + D3ED3EB2158738FA006C0DE4 /* HistoryController.xib */, 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */, D3F83EE91582021700336684 /* InCallViewController.h */, D3F83EEA1582021700336684 /* InCallViewController.m */, @@ -1038,9 +1096,6 @@ 22F2508B107141E100AC9B3F /* PhoneViewController.h */, 22F2508C107141E100AC9B3F /* PhoneViewController.m */, 22F2508D107141E100AC9B3F /* PhoneViewController.xib */, - 3418844514C6CAD300EA48C7 /* StatusSubViewController.h */, - 3418844614C6CAD300EA48C7 /* StatusSubViewController.m */, - 3418844714C6CAD300EA48C7 /* StatusSubViewController.xib */, 34CA8534148F669900503C01 /* VideoViewController-ipad.xib */, 22E028B413B4CCBD0068A713 /* VideoViewController.h */, 22E028B513B4CCBD0068A713 /* VideoViewController.m */, @@ -1259,6 +1314,9 @@ 2214EB7012F84668002A5394 /* LinphoneUI */ = { isa = PBXGroup; children = ( + D3A55FBA15877E5E003FD403 /* ContactCell.h */, + D3A55FBB15877E5E003FD403 /* ContactCell.m */, + D3A55FBE15877E69003FD403 /* ContactCell.xib */, 223963151393CFAE001DE689 /* FastAddressBook.h */, 223963161393CFAF001DE689 /* FastAddressBook.m */, D3ED3E841586291B006C0DE4 /* LinphoneMainBar.h */, @@ -1266,9 +1324,9 @@ D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */, 2248E99D12F801C200220D9C /* LinphoneManager.h */, 2248E99E12F801C200220D9C /* LinphoneManager.m */, - D3ED3E6315860404006C0DE4 /* LinphoneStatusBar.h */, - D3ED3E6415860404006C0DE4 /* LinphoneStatusBar.m */, - D3ED3E60158603F5006C0DE4 /* LinphoneStatusBar.xib */, + D354981E1587716B000081D8 /* LinphoneStatusBar.h */, + D354981F1587716B000081D8 /* LinphoneStatusBar.m */, + D35498201587716B000081D8 /* LinphoneStatusBar.xib */, 2218A5C412F9597B0088A667 /* LinphoneUIDelegates.h */, 2218A5CE12F973450088A667 /* LogView.h */, 22C7555E1317E59C007BC101 /* UIBluetoothButton.h */, @@ -1476,14 +1534,22 @@ D3F83EF0158205A100336684 /* add-call-actif.png */, D3F83EF1158205A100336684 /* add-call-over.png */, D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */, + D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */, + D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */, D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */, D3ED3E6915861A53006C0DE4 /* add-contact-over.png */, 2211DBCA1476BE7300DEE054 /* ajouter.png */, + D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */, + D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */, + D354980215875534000081D8 /* all-contacts-actif.png */, + D354980315875534000081D8 /* all-contacts-selectionne.png */, D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */, D3ED3E7115861ABD006C0DE4 /* appeler-over.png */, D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */, D3ED3E7715861B1B006C0DE4 /* backspace-over.png */, D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */, + D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */, + D354981915876FE7000081D8 /* bouton-detail-contact-over.png */, D3F83F801582278D00336684 /* cancel-actif.png */, D3F83F811582278D00336684 /* cancel-over.png */, D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */, @@ -1507,6 +1573,8 @@ D38327EE1580FE3A00FA0D23 /* dialer-over.png */, D3F83F401582223B00336684 /* diese-actif.png */, D3F83F411582223B00336684 /* diese-over.png */, + D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */, + D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */, 2211DBCD1476BE7300DEE054 /* effacer.png */, D3F83F421582223B00336684 /* etoile-actif.png */, D3F83F431582223B00336684 /* etoile-over.png */, @@ -1523,8 +1591,10 @@ 2242D91410D66BF300E9963F /* in_call.png */, 3485649D152C423F003FE041 /* in_call_video.png */, 228B19AE130290C500F154D3 /* iTunesArtwork */, + D354980415875534000081D8 /* linphone-actif.png */, 225CB2F911ABB76400628906 /* linphone-banner.png */, 8D1107310486CEB800E47090 /* linphone-Info.plist */, + D354980515875534000081D8 /* linphone-selectionne.png */, 2274550710700509006EC466 /* linphonerc */, 341FCA8D149798210084BC26 /* linphonerc-ipad */, D3F83EF4158205A100336684 /* micro-OFF-actif.png */, @@ -1533,6 +1603,8 @@ D3F83EF7158205A100336684 /* micro-ON-over.png */, 2211DBD21476BE7300DEE054 /* micro.png */, 2211DBD11476BE7300DEE054 /* micro_inverse.png */, + D3ED3E9615872EF1006C0DE4 /* missed-actif.png */, + D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */, 22E19E47138A67A000FBFE87 /* missed_call.png */, 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */, 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, @@ -1670,7 +1742,6 @@ 2245671D107699F700F10948 /* Settings.bundle in Resources */, 22F51EF6107FA66500F98953 /* untitled.plist in Resources */, 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */, - 227BCDC310D4004600FBFD76 /* CallHistoryTableViewController.xib in Resources */, 2242D91610D66BF300E9963F /* in_call.png in Resources */, 2242D91710D66BF300E9963F /* out_call.png in Resources */, 22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */, @@ -1718,7 +1789,6 @@ 1AE0A4A214AC5C64002C99BD /* stat_sys_signal_4.png in Resources */, 340A75B014C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */, 3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */, - 3418844A14C6CAD300EA48C7 /* StatusSubViewController.xib in Resources */, 3418844D14C6D1CE00EA48C7 /* startcall-gray.png in Resources */, 3418845314C6F66F00EA48C7 /* status_green.png in Resources */, 3418845714C6F66F00EA48C7 /* status_orange.png in Resources */, @@ -1802,7 +1872,6 @@ D3ED3E411585FB4A006C0DE4 /* fond-clavier.png in Resources */, D3ED3E451585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */, D3ED3E521585FFFD006C0DE4 /* barre-noire-top.png in Resources */, - D3ED3E61158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */, D3ED3E6A15861A53006C0DE4 /* add-contact-actif.png in Resources */, D3ED3E6C15861A53006C0DE4 /* add-contact-inactif.png in Resources */, D3ED3E6E15861A53006C0DE4 /* add-contact-over.png in Resources */, @@ -1811,6 +1880,24 @@ D3ED3E7815861B1B006C0DE4 /* backspace-actif.png in Resources */, D3ED3E7A15861B1B006C0DE4 /* backspace-over.png in Resources */, D3ED3E891586291E006C0DE4 /* LinphoneMainBar.xib in Resources */, + D3ED3E9815872EF1006C0DE4 /* all-call-actif.png in Resources */, + D3ED3E9A15872EF1006C0DE4 /* all-call-selectionne.png in Resources */, + D3ED3E9C15872EF1006C0DE4 /* edit-history-actif.png in Resources */, + D3ED3E9E15872EF1006C0DE4 /* edit-history-over.png in Resources */, + D3ED3EA015872EF1006C0DE4 /* missed-actif.png in Resources */, + D3ED3EA215872EF1006C0DE4 /* missed-selectionne.png in Resources */, + D3ED3EB3158738FB006C0DE4 /* HistoryController.xib in Resources */, + D354980015875372000081D8 /* ContactsController.xib in Resources */, + D354980615875534000081D8 /* all-contacts-actif.png in Resources */, + D354980815875534000081D8 /* all-contacts-selectionne.png in Resources */, + D354980A15875534000081D8 /* linphone-actif.png in Resources */, + D354980C15875534000081D8 /* linphone-selectionne.png in Resources */, + D354981015875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */, + D354981215875608000081D8 /* add-contact-depuis-detail-over.png in Resources */, + D354981A15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */, + D354981C15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */, + D35498231587716B000081D8 /* LinphoneStatusBar.xib in Resources */, + D3A55FBF15877E69003FD403 /* ContactCell.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1823,7 +1910,6 @@ 22D8F121147548E2008C97DB /* ringback.wav in Resources */, 22D8F124147548E2008C97DB /* untitled.plist in Resources */, 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */, - 22D8F126147548E2008C97DB /* CallHistoryTableViewController.xib in Resources */, 22D8F127147548E2008C97DB /* in_call.png in Resources */, 22D8F128147548E2008C97DB /* out_call.png in Resources */, 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */, @@ -1871,7 +1957,6 @@ 1AE0A4A314AC5C64002C99BD /* stat_sys_signal_4.png in Resources */, 340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */, 3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */, - 3418844B14C6CAD300EA48C7 /* StatusSubViewController.xib in Resources */, 3418844E14C6D1CE00EA48C7 /* startcall-gray.png in Resources */, 3418845414C6F66F00EA48C7 /* status_green.png in Resources */, 3418845814C6F66F00EA48C7 /* status_orange.png in Resources */, @@ -1936,7 +2021,6 @@ D3ED3E421585FB4A006C0DE4 /* fond-clavier.png in Resources */, D3ED3E461585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */, D3ED3E531585FFFD006C0DE4 /* barre-noire-top.png in Resources */, - D3ED3E62158603F5006C0DE4 /* LinphoneStatusBar.xib in Resources */, D3ED3E6B15861A53006C0DE4 /* add-contact-actif.png in Resources */, D3ED3E6D15861A53006C0DE4 /* add-contact-inactif.png in Resources */, D3ED3E6F15861A53006C0DE4 /* add-contact-over.png in Resources */, @@ -1945,6 +2029,24 @@ D3ED3E7915861B1B006C0DE4 /* backspace-actif.png in Resources */, D3ED3E7B15861B1B006C0DE4 /* backspace-over.png in Resources */, D3ED3E8A1586291E006C0DE4 /* LinphoneMainBar.xib in Resources */, + D3ED3E9915872EF1006C0DE4 /* all-call-actif.png in Resources */, + D3ED3E9B15872EF1006C0DE4 /* all-call-selectionne.png in Resources */, + D3ED3E9D15872EF1006C0DE4 /* edit-history-actif.png in Resources */, + D3ED3E9F15872EF1006C0DE4 /* edit-history-over.png in Resources */, + D3ED3EA115872EF1006C0DE4 /* missed-actif.png in Resources */, + D3ED3EA315872EF1006C0DE4 /* missed-selectionne.png in Resources */, + D3ED3EB4158738FB006C0DE4 /* HistoryController.xib in Resources */, + D354980115875372000081D8 /* ContactsController.xib in Resources */, + D354980715875534000081D8 /* all-contacts-actif.png in Resources */, + D354980915875534000081D8 /* all-contacts-selectionne.png in Resources */, + D354980B15875534000081D8 /* linphone-actif.png in Resources */, + D354980D15875534000081D8 /* linphone-selectionne.png in Resources */, + D354981115875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */, + D354981315875608000081D8 /* add-contact-depuis-detail-over.png in Resources */, + D354981B15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */, + D354981D15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */, + D35498241587716B000081D8 /* LinphoneStatusBar.xib in Resources */, + D3A55FC015877E69003FD403 /* ContactCell.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1959,8 +2061,6 @@ 1D3623260D0F684500981E51 /* LinphoneAppDelegate.m in Sources */, 22F2508E107141E100AC9B3F /* PhoneViewController.m in Sources */, 22B5EFE510CE5E5800777D97 /* ContactPickerDelegate.m in Sources */, - 227BCDC210D4004600FBFD76 /* CallHistoryTableViewController.m in Sources */, - 2242D9C910D691F900E9963F /* GenericTabViewController.m in Sources */, 22E0A822111C44E100B04932 /* MoreViewController.m in Sources */, 22E0A824111C44E100B04932 /* ConsoleViewController.m in Sources */, 2248E90E12F7E4CF00220D9C /* UIDigitButton.m in Sources */, @@ -1980,13 +2080,17 @@ 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */, 344ABD77147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, 34CA8539148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, - 3418844814C6CAD300EA48C7 /* StatusSubViewController.m in Sources */, 340751E7150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */, 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, D3F83EEC1582021700336684 /* InCallViewController.m in Sources */, D3F83F8E15822ABE00336684 /* PhoneMainView.m in Sources */, - D3ED3E6515860404006C0DE4 /* LinphoneStatusBar.m in Sources */, D3ED3E871586291E006C0DE4 /* LinphoneMainBar.m in Sources */, + D3ED3EA71587334E006C0DE4 /* CallHistoryTableViewController.m in Sources */, + D3ED3EB81587392C006C0DE4 /* HistoryController.m in Sources */, + D35497FE15875372000081D8 /* ContactsController.m in Sources */, + D3549816158761D0000081D8 /* ContactTableViewController.m in Sources */, + D35498211587716B000081D8 /* LinphoneStatusBar.m in Sources */, + D3A55FBC15877E5E003FD403 /* ContactCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1998,8 +2102,6 @@ 22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */, 22D8F146147548E2008C97DB /* PhoneViewController.m in Sources */, 22D8F147147548E2008C97DB /* ContactPickerDelegate.m in Sources */, - 22D8F148147548E2008C97DB /* CallHistoryTableViewController.m in Sources */, - 22D8F149147548E2008C97DB /* GenericTabViewController.m in Sources */, 22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */, 22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */, 22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */, @@ -2019,13 +2121,17 @@ 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */, 344ABD78147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, 34CA853A148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, - 3418844914C6CAD300EA48C7 /* StatusSubViewController.m in Sources */, 340751E8150F38FD00B89C47 /* UIToggleVideoButton.m in Sources */, 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, D3F83EED1582021700336684 /* InCallViewController.m in Sources */, D3F83F8F15822ABE00336684 /* PhoneMainView.m in Sources */, - D3ED3E6615860404006C0DE4 /* LinphoneStatusBar.m in Sources */, D3ED3E881586291E006C0DE4 /* LinphoneMainBar.m in Sources */, + D3ED3EA81587334E006C0DE4 /* CallHistoryTableViewController.m in Sources */, + D3ED3EB91587392C006C0DE4 /* HistoryController.m in Sources */, + D35497FF15875372000081D8 /* ContactsController.m in Sources */, + D3549817158761D0000081D8 /* ContactTableViewController.m in Sources */, + D35498221587716B000081D8 /* LinphoneStatusBar.m in Sources */, + D3A55FBD15877E5E003FD403 /* ContactCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 075c6f6a0acf05c398ac1d164f255301eb31c9b6 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 13 Jun 2012 13:49:20 +0200 Subject: [PATCH 010/397] Continue workoing on new ui Use event for registration update --- Classes/ConferenceCallDetailView.m | 6 +- Classes/ContactTableViewController.h | 3 +- Classes/ContactTableViewController.m | 31 +- Classes/FirstLoginViewController.h | 2 +- Classes/FirstLoginViewController.m | 78 +- Classes/InCallViewController.h | 2 +- Classes/InCallViewController.m | 16 +- Classes/InCallViewController.xib | 2840 +++++++++------------- Classes/LinphoneApp.xib | 242 +- Classes/LinphoneAppDelegate.h | 34 +- Classes/LinphoneAppDelegate.m | 78 +- Classes/LinphoneUI/LinphoneCallBar.h | 26 + Classes/LinphoneUI/LinphoneCallBar.m | 24 + Classes/LinphoneUI/LinphoneCallBar.xib | 484 ++++ Classes/LinphoneUI/LinphoneMainBar.m | 17 +- Classes/LinphoneUI/LinphoneManager.h | 17 +- Classes/LinphoneUI/LinphoneManager.m | 53 +- Classes/LinphoneUI/LinphoneStatusBar.m | 34 +- Classes/LinphoneUI/LinphoneUIDelegates.h | 9 - Classes/PhoneMainView.h | 16 +- Classes/PhoneMainView.m | 63 +- Classes/PhoneMainView.xib | 513 +--- Classes/PhoneViewController.h | 10 +- Classes/PhoneViewController.m | 126 +- Classes/PhoneViewController.xib | 305 ++- linphone.xcodeproj/project.pbxproj | 30 + 26 files changed, 2344 insertions(+), 2715 deletions(-) create mode 100644 Classes/LinphoneUI/LinphoneCallBar.h create mode 100644 Classes/LinphoneUI/LinphoneCallBar.m create mode 100644 Classes/LinphoneUI/LinphoneCallBar.xib diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index 231fcb4ce..7ae8a4d6d 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -136,8 +136,8 @@ NSTimer *callQualityRefresher; UILabel* label = (UILabel*) [cell viewWithTag:2]; /* update cell content */ - LinphoneCall* call = [IncallViewController retrieveCallAtIndex:indexPath.row inConference:YES]; - [IncallViewController updateCellImageView:image Label:label DetailLabel:nil AndAccessoryView:nil withCall:call]; + LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:YES]; + [InCallViewController updateCellImageView:image Label:label DetailLabel:nil AndAccessoryView:nil withCall:call]; cell.accessoryType = UITableViewCellAccessoryNone; if (cell.accessoryView == nil) { @@ -150,7 +150,7 @@ NSTimer *callQualityRefresher; } } UIImageView* callquality = (UIImageView*) [cell viewWithTag:3]; - [IncallViewController updateIndicator:callquality withCallQuality:linphone_call_get_average_quality(call)]; + [InCallViewController updateIndicator:callquality withCallQuality:linphone_call_get_average_quality(call)]; tableView.rowHeight = 80; return cell; diff --git a/Classes/ContactTableViewController.h b/Classes/ContactTableViewController.h index 5b4bd1a2b..5141d7a03 100644 --- a/Classes/ContactTableViewController.h +++ b/Classes/ContactTableViewController.h @@ -20,9 +20,10 @@ #import #import #import +#import "OrderedDictionary.h" @interface ContactTableViewController : UITableViewController { - NSMutableDictionary* addressBookMap; + OrderedDictionary* addressBookMap; ABAddressBookRef addressBook; } diff --git a/Classes/ContactTableViewController.m b/Classes/ContactTableViewController.m index 11b639d9f..885a8a9d6 100644 --- a/Classes/ContactTableViewController.m +++ b/Classes/ContactTableViewController.m @@ -18,26 +18,21 @@ */ #include "ContactTableViewController.h" -#import "LinphoneManager.h" #import "FastAddressBook.h" #import "ContactCell.h" @implementation ContactTableViewController #pragma mark Table view methods -NSString *contactTOC = @"ABCDEFGHIJKLMNOPQRSTUVWXYZ"; void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { ContactTableViewController* controller = (ContactTableViewController*)context; - NSMutableDictionary* lAddressBookMap = controller->addressBookMap; + OrderedDictionary* lAddressBookMap = controller->addressBookMap; @synchronized (lAddressBookMap) { // Reset Address book + [lAddressBookMap removeAllObjects]; - - for(int i = 0; i < [contactTOC length]; i++) { - [lAddressBookMap setObject: [[NSMutableDictionary alloc] init] forKey:[contactTOC substringWithRange:NSMakeRange(i, 1)]]; - } NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); for (id lPerson in lContacts) { @@ -46,34 +41,34 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, // Put in correct subDic NSString *firstChar = [[(NSString *)lLocalizedLabel substringToIndex:1] uppercaseString]; - NSMutableDictionary *subDic =[lAddressBookMap objectForKey: firstChar]; + OrderedDictionary *subDic =[lAddressBookMap objectForKey: firstChar]; if(subDic == nil) { - subDic = [[NSMutableDictionary alloc] init]; - [lAddressBookMap setObject: subDic forKey:firstChar]; + subDic = [[OrderedDictionary alloc] init]; + [lAddressBookMap insertObject:subDic forKey:firstChar selector:@selector(caseInsensitiveCompare:)]; } - [subDic setObject:lPerson forKey:[(NSString *)lLocalizedLabel retain]]; + [subDic insertObject:lPerson forKey:[(NSString *)lLocalizedLabel retain] selector:@selector(caseInsensitiveCompare:)]; if (lLocalizedLabel) CFRelease(lLocalizedLabel); CFRelease(lValue); } CFRelease(lContacts); } - [controller.view reloadData]; + [(UITableView *)controller.view reloadData]; } - (void) viewDidLoad { - addressBookMap = [[NSMutableDictionary alloc] init]; + addressBookMap = [[OrderedDictionary alloc] init]; addressBook = ABAddressBookCreate(); ABAddressBookRegisterExternalChangeCallback (addressBook, sync_toc_address_book, self); sync_toc_address_book(addressBook, nil, self); } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return [contactTOC length]; + return [addressBookMap count]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return [(NSMutableDictionary *)[addressBookMap objectForKey: [contactTOC substringWithRange:NSMakeRange(section, 1)]] count]; + return [(OrderedDictionary *)[addressBookMap objectForKey: [addressBookMap keyAtIndex: section]] count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { @@ -82,17 +77,19 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, cell = [[ContactCell alloc] init]; } - NSMutableDictionary *subDic = [addressBookMap objectForKey: [contactTOC substringWithRange:NSMakeRange([indexPath section], 1)]]; + OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; [cell.label setText: (NSString *)[[subDic allKeys] objectAtIndex:[indexPath row]]]; return cell; } - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - return [contactTOC substringWithRange:NSMakeRange(section, 1)]; + return [addressBookMap keyAtIndex: section]; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; + ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]]; } - (void)dealloc { diff --git a/Classes/FirstLoginViewController.h b/Classes/FirstLoginViewController.h index e7930a9db..58d6db011 100644 --- a/Classes/FirstLoginViewController.h +++ b/Classes/FirstLoginViewController.h @@ -22,7 +22,7 @@ #import "LinphoneUIDelegates.h" -@interface FirstLoginViewController : UIViewController { +@interface FirstLoginViewController : UIViewController { UIButton* ok; UIButton* site; UITextField* username; diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index 69ae3149d..816cdb505 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -29,8 +29,6 @@ @synthesize activityIndicator; @synthesize site; - - - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; //[username setText:[[NSUserDefaults standardUserDefaults] stringForKey:@"username_preference"]]; @@ -43,18 +41,65 @@ siteUrl=@"http://www.linphone.org"; } [site setTitle:siteUrl forState:UIControlStateNormal]; + + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) name:@"LinphoneRegistrationUpdate" object:nil]; } +- (void)registrationUpdate: (NSNotification*) notif { + LinphoneRegistrationState state = [[notif.userInfo objectForKey: @"state"] intValue]; + switch (state) { + case LinphoneRegistrationOk: + { + [[NSUserDefaults standardUserDefaults] setBool:false forKey:@"enable_first_login_view_preference"]; + [self.activityIndicator setHidden:true]; + [self dismissModalViewControllerAnimated:YES]; + break; + } + case LinphoneRegistrationNone: + case LinphoneRegistrationCleared: + { + [self.activityIndicator setHidden:true]; + break; + } + case LinphoneRegistrationFailed: + { + [self.activityIndicator setHidden:true]; + //default behavior if no registration delegates + + //UIAlertView* error = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Registration failure for user %@",user] + // message:reason + // delegate:nil + // cancelButtonTitle:@"Continue" + // otherButtonTitles:nil ,nil]; + //[error show]; + //[error release]; + //erase uername passwd + [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"username_preference"]; + [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"password_preference"]; + break; + } + case LinphoneRegistrationProgress: { + [self.activityIndicator setHidden:false]; + break; + } + default: break; + } +} + - (void)dealloc { [super dealloc]; [ok dealloc]; [site dealloc]; [username dealloc]; [activityIndicator dealloc]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; } - +- (void) viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} -(void) doOk:(id)sender { if (sender == site) { @@ -87,33 +132,6 @@ } --(void) displayRegisteredFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { - [[NSUserDefaults standardUserDefaults] setBool:false forKey:@"enable_first_login_view_preference"]; - [self.activityIndicator setHidden:true]; - [self dismissModalViewControllerAnimated:YES]; -} --(void) displayRegisteringFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { - [self.activityIndicator setHidden:false]; -} --(void) displayRegistrationFailedFromUI:(UIViewController*) viewCtrl forUser:(NSString*) user withDisplayName:(NSString*) displayName onDomain:(NSString*)domain forReason:(NSString*) reason { - [self.activityIndicator setHidden:true]; - //default behavior if no registration delegates - - //UIAlertView* error = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Registration failure for user %@",user] - // message:reason - // delegate:nil - // cancelButtonTitle:@"Continue" - // otherButtonTitles:nil ,nil]; - //[error show]; - //[error release]; - //erase uername passwd - [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"username_preference"]; - [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"password_preference"]; -} --(void) displayNotRegisteredFromUI:(UIViewController*) viewCtrl { - [self.activityIndicator setHidden:true]; -} - - (BOOL)textFieldShouldReturn:(UITextField *)theTextField { // When the user presses return, take focus away from the text field so that the keyboard is dismissed. diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index 5edb0f409..63388ce90 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -26,7 +26,7 @@ #import "VideoZoomHandler.h" @class VideoViewController; -@interface IncallViewController : UIViewController { +@interface InCallViewController : UIViewController { UIView* controlSubView, *hangUpView; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 0768fa60d..ae809015f 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -35,7 +35,7 @@ const NSInteger SECURE_BUTTON_TAG=5; -@implementation IncallViewController +@implementation InCallViewController @synthesize controlSubView; @synthesize padSubView; @@ -360,7 +360,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) { if (linphone_call_params_video_enabled(linphone_call_get_current_params(currentCall))) { [addVideo setTitle:NSLocalizedString(@"-video", nil) forState:UIControlStateNormal]; - [IncallViewController updateIndicator: videoCallQuality withCallQuality:linphone_call_get_average_quality(currentCall)]; + [InCallViewController updateIndicator: videoCallQuality withCallQuality:linphone_call_get_average_quality(currentCall)]; } else { [addVideo setTitle:NSLocalizedString(@"+video", nil) forState:UIControlStateNormal]; } @@ -720,7 +720,7 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); } static void hideSpinner(LinphoneCall* call, void* user_data) { - IncallViewController* thiz = (IncallViewController*) user_data; + InCallViewController* thiz = (InCallViewController*) user_data; [thiz hideSpinnerIndicator:call]; } @@ -1027,7 +1027,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { else cell.accessoryType = UITableViewCellAccessoryNone; } else { - LinphoneCall* call = [IncallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; if (call == nil) return cell; // return dummy cell LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); @@ -1040,7 +1040,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [view removeFromSuperview]; } } - [IncallViewController updateCellImageView:cell.imageView Label:cell.textLabel DetailLabel:cell.detailTextLabel AndAccessoryView:(UIView*)cell.accessoryView withCall:call]; + [InCallViewController updateCellImageView:cell.imageView Label:cell.textLabel DetailLabel:cell.detailTextLabel AndAccessoryView:(UIView*)cell.accessoryView withCall:call]; if (linphone_core_get_current_call(lc) == call) activeCallCell = cell; cell.accessoryType = UITableViewCellAccessoryNone; @@ -1050,7 +1050,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [callquality setFrame:CGRectMake(0, 0, 28, 28)]; if (call->state == LinphoneCallStreamsRunning) { - [IncallViewController updateIndicator: callquality withCallQuality:linphone_call_get_average_quality(call)]; + [InCallViewController updateIndicator: callquality withCallQuality:linphone_call_get_average_quality(call)]; } else { [callquality setImage:nil]; @@ -1092,7 +1092,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { CGPoint currentTouchPos = [touch locationInView:self.callTableView]; NSIndexPath *path = [self.callTableView indexPathForRowAtPoint:currentTouchPos]; if (path) { - LinphoneCall* call = [IncallViewController retrieveCallAtIndex:path.row inConference:NO]; + LinphoneCall* call = [InCallViewController retrieveCallAtIndex:path.row inConference:NO]; // start action sheet to validate/unvalidate zrtp code CallDelegate* cd = [[CallDelegate alloc] init]; cd.eventType = CD_ZRTP; @@ -1233,7 +1233,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { bool inConf = (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0); - LinphoneCall* selectedCall = [IncallViewController retrieveCallAtIndex:indexPath.row inConference:inConf]; + LinphoneCall* selectedCall = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:inConf]; if (inConf) { if (linphone_core_is_in_conference(lc)) diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 81185bcd5..2bb8a21f5 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -2,23 +2,22 @@ 784 - 11C74 - 1938 - 1138.23 - 567.00 + 11E53 + 2182 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 + 1181 YES - IBUIButton IBUIImageView - IBUIViewController - IBProxyObject - IBUIActivityIndicatorView + IBUIButton IBUITableView IBUIView + IBUIActivityIndicatorView + IBProxyObject YES @@ -38,824 +37,779 @@ IBFirstResponder IBCocoaTouchFramework - - - - 274 - - YES - - - 292 - - YES - - - 292 - {320, 480} - - - - _NS:196 - - 3 - MCAwAA - - IBCocoaTouchFramework - - - - 292 - {{240, 354}, {80, 106}} - - - - - IBCocoaTouchFramework - - - - 292 - {{4, 428}, {28, 28}} - - - - _NS:567 - NO - IBCocoaTouchFramework - - - - 292 - {{141, 212}, {37, 37}} - - - - _NS:1030 - NO - IBCocoaTouchFramework - NO - YES - 0 + + + 274 + + YES + + + 292 + + YES + + + 292 + {320, 480} + + + _NS:196 + + 3 + MCAwAA + IBCocoaTouchFramework - {320, 460} - - - - _NS:196 - - 2 - MC4wNTQ5MDE5NjA3OCAwLjA4MjM1Mjk0MTE4IDAuMTI5NDExNzY0NwA + + + 292 + {{240, 354}, {80, 106}} + + + + IBCocoaTouchFramework - NO - IBCocoaTouchFramework - - - - 292 - {320, 66} - - - - - 1 - MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA + + + 292 + {{4, 428}, {28, 28}} + + + _NS:567 + NO + IBCocoaTouchFramework - NO - NO - 0.0 - IBCocoaTouchFramework - 0 - 0 - Change camera - - 3 - MQA - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - 3 - MC41AA - - - NSImage - clavier-01-106px.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 + + + 292 + {{141, 212}, {37, 37}} + + + _NS:1030 + NO + IBCocoaTouchFramework + NO + YES + 0 - - - 274 - {320, 251} - - - - _NS:418 - - YES - IBCocoaTouchFramework - YES - NO - 0 - YES - 44 - 22 - 22 + {320, 460} + + + _NS:196 + + 2 + MC4wNTQ5MDE5NjA3OCAwLjA4MjM1Mjk0MTE4IDAuMTI5NDExNzY0NwA - - - 292 - - YES - - - 292 - {{0, 1}, {320, 66}} - - - - - 1 - MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - stopcall-red.png - - - - - - - {{0, 393.5}, {320, 77}} - - - - _NS:196 - - IBCocoaTouchFramework + NO + IBCocoaTouchFramework + + + + 292 + {320, 66} + + + + 1 + MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA - - - 292 - - YES - - - 292 - {{80, 70}, {80, 66}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - grouper.png - - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - - - - 292 - {{0, 4}, {107, 66}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - mic_active.png - - - NSImage - micro_inverse.png - - - NSImage - micro.png - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 - - - - - 292 - {{0, 70}, {80, 66}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - ajouter.png - - - - - - - 292 - {{160, 70}, {80, 66}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - Transfer - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - 2 - 15 - - - - - - 292 - {{240, 70}, {80, 66}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - 1 - MCAwIDAAA - - - NSImage - contact.png - - - - - - - -2147483356 - {{240, 70}, {80, 66}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - video - - - 3 - MC42NjY2NjY2NjY3AA - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - NSImage - clavier-01-160px.png - - - - - - - -2147483356 - {{261.5, 84.5}, {37, 37}} - - - - _NS:1030 - NO - IBCocoaTouchFramework - NO - 0 - - - - 292 - {{107, 4}, {106, 66}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - clavier.png - - - - - - - 292 - {{213, 4}, {107, 66}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - HP_inverse.png - - - NSImage - HP.png - - - - - - - 292 - {{80, 70}, {80, 66}} - - - - - NO - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - NSImage - pause_inactif.png - - - NSImage - pause.png - - - - - - {{0, 258.5}, {320, 135}} - - - - - NO - NO - IBCocoaTouchFramework + NO + NO + 0.0 + IBCocoaTouchFramework + 0 + 0 + Change camera + + 3 + MQA - - - -2147483356 - - YES - - - 292 - {{119, 251}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - close - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 193}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 19}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 19}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 2 - - - - - - - - - 292 - {{207, 19}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 3 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 77}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 4 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 77}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 5 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 77}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 6 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 135}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 7 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 135}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 8 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 135}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 9 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 193}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - * - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 193}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - # - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - {{0, 71}, {320, 310}} - - - - - 3 - MC4yNAA - - NO - NO - IBCocoaTouchFramework + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + 3 + MC41AA + + + NSImage + clavier-01-106px.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 - {{0, 20}, {320, 460}} - - - - - NO - IBCocoaTouchFramework - - - - 1 - 1 + + + 274 + {320, 251} + + + _NS:418 + + YES + IBCocoaTouchFramework + YES + NO + 0 + YES + 44 + 22 + 22 + + + + 292 + + YES + + + 292 + {{0, 1}, {320, 66}} + + + 1 + MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + stopcall-red.png + + + + + + + {{0, 393.5}, {320, 77}} + + + _NS:196 + + IBCocoaTouchFramework + + + + 292 + + YES + + + 292 + {{80, 70}, {80, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + grouper.png + + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + + + + 292 + {{0, 4}, {107, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + mic_active.png + + + NSImage + micro_inverse.png + + + NSImage + micro.png + + + 2 + 2 + + + Helvetica-Bold + 18 + 16 + + + + + 292 + {{0, 70}, {80, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + ajouter.png + + + + + + + 292 + {{160, 70}, {80, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + Transfer + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + + 2 + 15 + + + + + + 292 + {{240, 70}, {80, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + 1 + MCAwIDAAA + + + NSImage + contact.png + + + + + + + -2147483356 + {{240, 70}, {80, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 1 + video + + + 3 + MC42NjY2NjY2NjY3AA + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + + NSImage + clavier-01-160px.png + + + + + + + -2147483356 + {{261.5, 84.5}, {37, 37}} + + + _NS:1030 + NO + IBCocoaTouchFramework + NO + 0 + + + + 292 + {{107, 4}, {106, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + clavier.png + + + + + + + 292 + {{213, 4}, {107, 66}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + NSImage + HP_inverse.png + + + NSImage + HP.png + + + + + + + 292 + {{80, 70}, {80, 66}} + + + + NO + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + + + + + NSImage + pause_inactif.png + + + NSImage + pause.png + + + + + + {{0, 258.5}, {320, 135}} + + + + NO + NO + IBCocoaTouchFramework + + + + -2147483356 + + YES + + + 292 + {{119, 251}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + close + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{119, 193}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{31, 19}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 1 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{119, 19}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 2 + + + + + + + + + 292 + {{207, 19}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 3 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{31, 77}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 4 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{119, 77}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 5 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{207, 77}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 6 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{31, 135}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 7 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{119, 135}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 8 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{207, 135}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 9 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{31, 193}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + * + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + + 292 + {{207, 193}, {82, 52}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + # + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + + + + {{0, 71}, {320, 310}} + + + + 3 + MC4yNAA + + NO + NO + IBCocoaTouchFramework + + {320, 460} + + + + NO IBCocoaTouchFramework - NO @@ -863,11 +817,11 @@ YES - videoCallQuality + videoCameraSwitch - + - 138 + 141 @@ -877,6 +831,14 @@ 130 + + + videoCallQuality + + + + 138 + videoView @@ -885,86 +847,6 @@ 133 - - - videoGroup - - - - 129 - - - - addVideo - - - - 125 - - - - mergeCalls - - - - 114 - - - - mute - - - - 80 - - - - addCall - - - - 112 - - - - contacts - - - - 84 - - - - dialer - - - - 49 - - - - speaker - - - - 82 - - - - pause - - - - 115 - - - - controlSubView - - - - 44 - callTableView @@ -975,91 +857,35 @@ - five + view - + - 69 + 23 - nine + videoGroup - + - 58 + 129 - seven + videoWaitingForFirstImage - + - 73 + 145 - six + star - + - 71 - - - - four - - - - 67 - - - - three - - - - 60 - - - - zero - - - - 55 - - - - two - - - - 59 - - - - close - - - - 51 - - - - hash - - - - 57 - - - - eight - - - - 75 + 56 @@ -1071,11 +897,91 @@ - star + eight - + - 56 + 75 + + + + hash + + + + 57 + + + + close + + + + 51 + + + + two + + + + 59 + + + + zero + + + + 55 + + + + three + + + + 60 + + + + four + + + + 67 + + + + six + + + + 71 + + + + seven + + + + 73 + + + + nine + + + + 58 + + + + five + + + + 69 @@ -1103,19 +1009,67 @@ - view + pause - + - 23 + 115 - videoCameraSwitch + speaker - + - 141 + 82 + + + + dialer + + + + 49 + + + + contacts + + + + 84 + + + + addCall + + + + 112 + + + + mute + + + + 80 + + + + mergeCalls + + + + 114 + + + + addVideo + + + + 125 @@ -1125,14 +1079,6 @@ 143 - - - videoWaitingForFirstImage - - - - 145 - transfer @@ -1141,6 +1087,14 @@ 150 + + + controlSubView + + + + 44 + doAction: @@ -1168,14 +1122,6 @@ 101 - - - dataSource - - - - 107 - delegate @@ -1184,6 +1130,14 @@ 108 + + + dataSource + + + + 107 + @@ -1207,42 +1161,49 @@ - - 2 - - - YES - - - - 9 YES - - - - - + + + + + - + + + + 140 + + + camswitch 126 YES - - - + + + video + + 106 + + + + + 144 + + + 137 @@ -1258,168 +1219,39 @@ 132 - - display - - - 26 - YES - - - - - - - - - - - - controls - - - 123 - - - video - - - 104 - - - merge - - - 16 - - - mute - - - 111 - - - addcall - - - 15 - - - contacts - - - 17 - - - dialer - - - 13 - - - speaker - - - 113 - - - pauseresume - - - 106 - - + + display 27 YES - - - - - - - - - - - - + + + + + + + + + + + + pad - 36 - + 31 + - 5 - - - 32 - - - 9 - - - 34 - - - 7 - - - 37 - - - 6 - - - 35 - - - 4 - - - 38 - - - 3 - - - 41 - - - 0 - - - 39 - - - 2 - - - 29 - - - close - - - 40 - - - hash - - - 33 - - - 8 + star 30 @@ -1428,10 +1260,70 @@ 1 - 31 - + 33 + - star + 8 + + + 40 + + + hash + + + 29 + + + close + + + 39 + + + 2 + + + 41 + + + 0 + + + 38 + + + 3 + + + 35 + + + 4 + + + 37 + + + 6 + + + 34 + + + 7 + + + 32 + + + 9 + + + 36 + + + 5 120 @@ -1450,10 +1342,71 @@ end - 140 - + 26 + + + YES + + + + + + + + + + + - camswitch + controls + + + 113 + + + pauseresume + + + 13 + + + speaker + + + 17 + + + dialer + + + 15 + + + contacts + + + 111 + + + addcall + + + 16 + + + mute + + + 104 + + + merge + + + 123 + + + video 142 @@ -1461,11 +1414,6 @@ video_update_indicator - - 144 - - - 147 @@ -1513,7 +1461,6 @@ 17.IBPluginDependency 18.CustomClassName 18.IBPluginDependency - 2.IBPluginDependency 26.IBPluginDependency 27.IBPluginDependency 29.IBPluginDependency @@ -1544,9 +1491,9 @@ 41.IBPluginDependency 9.IBPluginDependency - + YES - IncallViewController + InCallViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1584,7 +1531,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton @@ -1625,559 +1571,19 @@ - 150 - - - - YES - - IncallViewController - UIViewController - - doAction: - id - - - doAction: - - doAction: - id - - - - YES - - YES - addCall - addVideo - callTableView - close - conferenceDetail - contacts - controlSubView - dialer - eight - endCtrl - five - four - hangUpView - hash - mergeCalls - mute - nine - one - padSubView - pause - seven - six - speaker - star - three - transfer - two - videoCallQuality - videoCameraSwitch - videoGroup - videoPreview - videoUpdateIndicator - videoView - videoViewController - videoWaitingForFirstImage - zero - - - YES - UIButton - UIToggleVideoButton - UITableView - UIButton - UIViewController - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIImageView - UICamSwitch - UIView - UIView - UIActivityIndicatorView - UIView - VideoViewController - UIActivityIndicatorView - UIButton - - - - YES - - YES - addCall - addVideo - callTableView - close - conferenceDetail - contacts - controlSubView - dialer - eight - endCtrl - five - four - hangUpView - hash - mergeCalls - mute - nine - one - padSubView - pause - seven - six - speaker - star - three - transfer - two - videoCallQuality - videoCameraSwitch - videoGroup - videoPreview - videoUpdateIndicator - videoView - videoViewController - videoWaitingForFirstImage - zero - - - YES - - addCall - UIButton - - - addVideo - UIToggleVideoButton - - - callTableView - UITableView - - - close - UIButton - - - conferenceDetail - UIViewController - - - contacts - UIButton - - - controlSubView - UIView - - - dialer - UIButton - - - eight - UIButton - - - endCtrl - UIButton - - - five - UIButton - - - four - UIButton - - - hangUpView - UIView - - - hash - UIButton - - - mergeCalls - UIButton - - - mute - UIButton - - - nine - UIButton - - - one - UIButton - - - padSubView - UIView - - - pause - UIButton - - - seven - UIButton - - - six - UIButton - - - speaker - UIButton - - - star - UIButton - - - three - UIButton - - - transfer - UIButton - - - two - UIButton - - - videoCallQuality - UIImageView - - - videoCameraSwitch - UICamSwitch - - - videoGroup - UIView - - - videoPreview - UIView - - - videoUpdateIndicator - UIActivityIndicatorView - - - videoView - UIView - - - videoViewController - VideoViewController - - - videoWaitingForFirstImage - UIActivityIndicatorView - - - zero - UIButton - - - - - IBProjectSource - ./Classes/IncallViewController.h - - - - UICamSwitch - UIButton - - preview - UIView - - - preview - - preview - UIView - - - - IBProjectSource - ./Classes/UICamSwitch.h - - - - UIDigitButton - UIButton - - IBProjectSource - ./Classes/UIDigitButton.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UIMuteButton - UIToggleButton - - IBProjectSource - ./Classes/UIMuteButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - ./Classes/UISpeakerButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - UIToggleVideoButton - UIButton - - videoUpdateIndicator - UIActivityIndicatorView - - - videoUpdateIndicator - - videoUpdateIndicator - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/UIToggleVideoButton.h - - - - VideoViewController - UIViewController - - YES - - YES - mCallQuality - mCallQualityLandLeft - mCallQualityLandRight - mCamSwitch - mCamSwitchLandLeft - mCamSwitchLandRight - mDisplay - mDisplayLandLeft - mDisplayLandRight - mHangUp - mHangUpLandLeft - mHangUpLandRight - mLandscapeLeft - mLandscapeRight - mMute - mMuteLandLeft - mMuteLandRight - mPortrait - mPreview - mPreviewLandLeft - mPreviewLandRight - - - YES - UIImageView - UIImageView - UIImageView - UICamSwitch - UICamSwitch - UICamSwitch - UIView - UIView - UIView - UIHangUpButton - UIHangUpButton - UIHangUpButton - UIView - UIView - UIMuteButton - UIMuteButton - UIMuteButton - UIView - UIView - UIView - UIView - - - - YES - - YES - mCallQuality - mCallQualityLandLeft - mCallQualityLandRight - mCamSwitch - mCamSwitchLandLeft - mCamSwitchLandRight - mDisplay - mDisplayLandLeft - mDisplayLandRight - mHangUp - mHangUpLandLeft - mHangUpLandRight - mLandscapeLeft - mLandscapeRight - mMute - mMuteLandLeft - mMuteLandRight - mPortrait - mPreview - mPreviewLandLeft - mPreviewLandRight - - - YES - - mCallQuality - UIImageView - - - mCallQualityLandLeft - UIImageView - - - mCallQualityLandRight - UIImageView - - - mCamSwitch - UICamSwitch - - - mCamSwitchLandLeft - UICamSwitch - - - mCamSwitchLandRight - UICamSwitch - - - mDisplay - UIView - - - mDisplayLandLeft - UIView - - - mDisplayLandRight - UIView - - - mHangUp - UIHangUpButton - - - mHangUpLandLeft - UIHangUpButton - - - mHangUpLandRight - UIHangUpButton - - - mLandscapeLeft - UIView - - - mLandscapeRight - UIView - - - mMute - UIMuteButton - - - mMuteLandLeft - UIMuteButton - - - mMuteLandRight - UIMuteButton - - - mPortrait - UIView - - - mPreview - UIView - - - mPreviewLandLeft - UIView - - - mPreviewLandRight - UIView - - - - - IBProjectSource - ./Classes/VideoViewController.h - - - + 159 + 0 IBCocoaTouchFramework com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 @@ -2203,7 +1609,7 @@ pause_inactif.png stopcall-red.png - + YES {107, 67} {107, 67} @@ -2221,6 +1627,6 @@ {62, 54} - 933 + 1181 diff --git a/Classes/LinphoneApp.xib b/Classes/LinphoneApp.xib index 745729525..2399bfd76 100644 --- a/Classes/LinphoneApp.xib +++ b/Classes/LinphoneApp.xib @@ -42,7 +42,6 @@ {320, 480} - 1 MSAxIDEAA @@ -81,6 +80,14 @@ 10 + + + window + + + + 12 + @@ -110,7 +117,7 @@ 4 - linphoneAppDelegate + LinphoneAppDelegate 9 @@ -127,7 +134,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - linphoneAppDelegate + LinphoneAppDelegate com.apple.InterfaceBuilder.IBCocoaTouchPlugin PhoneMainView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -136,38 +143,27 @@ - 11 + 12 - ABPeoplePickerNavigationController - UINavigationController - - IBProjectSource - ./Classes/ABPeoplePickerNavigationController.h + LinphoneAppDelegate + NSObject + + window + UIWindow - - - MainScreenWithVideoPreview - UIViewController - - PhoneViewController - UIWindow - - - - phoneMainView - PhoneViewController - - + + window + window UIWindow - + IBProjectSource - ./Classes/MainScreenWithVideoPreview.h + ./Classes/LinphoneAppDelegate.h @@ -175,10 +171,10 @@ UIViewController UIView - UIView + UIViewController UIView - UIView - UIView + UIViewController + UIViewController UIView UIView @@ -187,21 +183,21 @@ addCallTabBar UIView - - callTabBar - UIView + + callTabBarController + UIViewController contentView UIView - - incomingTabBar - UIView + + mainTabBarController + UIViewController - - mainTabBar - UIView + + statusBarController + UIViewController statusBarView @@ -217,178 +213,6 @@ ./Classes/PhoneMainView.h - - PhoneViewController - UIViewController - - UITextField - UIButton - UIButton - UIButton - UIView - UIButton - UIEraseButton - UIButton - UIButton - UIButton - MainScreenWithVideoPreview - UITabBarController - UIButton - UIButton - UIButton - UIButton - UIButton - UILabel - UIView - UIButton - UIButton - UIButton - UIButton - - - - address - UITextField - - - backToCallView - UIButton - - - callLarge - UIButton - - - callShort - UIButton - - - dialerView - UIView - - - eight - UIButton - - - erase - UIEraseButton - - - five - UIButton - - - four - UIButton - - - hash - UIButton - - - mMainScreenWithVideoPreview - MainScreenWithVideoPreview - - - myTabBarController - UITabBarController - - - nine - UIButton - - - one - UIButton - - - seven - UIButton - - - six - UIButton - - - star - UIButton - - - status - UILabel - - - statusViewHolder - UIView - - - switchCamera - UIButton - - - three - UIButton - - - two - UIButton - - - zero - UIButton - - - - IBProjectSource - ./Classes/PhoneViewController.h - - - - UIEraseButton - UIButton - - IBProjectSource - ./Classes/UIEraseButton.h - - - - linphoneAppDelegate - NSObject - - UIView - ABPeoplePickerNavigationController - PhoneViewController - UITabBarController - UIWindow - - - - myContentView - UIView - - - myPeoplePickerController - ABPeoplePickerNavigationController - - - myPhoneViewController - PhoneViewController - - - myTabBarController - UITabBarController - - - window - UIWindow - - - - IBProjectSource - ./Classes/linphoneAppDelegate.h - - 0 diff --git a/Classes/LinphoneAppDelegate.h b/Classes/LinphoneAppDelegate.h index 1b812547e..daf864383 100644 --- a/Classes/LinphoneAppDelegate.h +++ b/Classes/LinphoneAppDelegate.h @@ -1,4 +1,4 @@ -/* linphoneAppDelegate.h +/* LinphoneAppDelegate.h * * Copyright (C) 2009 Belledonne Comunications, Grenoble, France * @@ -17,44 +17,22 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #import #import #import "CoreTelephony/CTCallCenter.h" -#define DIALER_TAB_INDEX 1 -#define CONTACTS_TAB_INDEX 2 -#define HISTORY_TAB_INDEX 0 -#define MORE_TAB_INDEX 3 - -@class ContactPickerDelegate; -@class IncallViewController; -@class PhoneViewController; -@class CallHistoryTableViewController; - - -@interface linphoneAppDelegate : NSObject { +@interface LinphoneAppDelegate : NSObject { UIWindow *window; - IBOutlet UITabBarController* myTabBarController; - IBOutlet ABPeoplePickerNavigationController* myPeoplePickerController; - IBOutlet PhoneViewController* myPhoneViewController; - CallHistoryTableViewController* myCallHistoryTableViewController; - ContactPickerDelegate* myContactPickerDelegate; - UIView *myContentView; CTCallCenter* callCenter; } -- (void) loadDefaultSettings:(NSDictionary *) appDefaults; --(void) setupUI; --(void) setupGSMInteraction; +- (void)loadDefaultSettings:(NSDictionary *) appDefaults; +- (void)setupUI; +- (void)setupGSMInteraction; --(void) startApplication; +- (void)startApplication; @property (nonatomic, retain) IBOutlet UIWindow *window; -@property (nonatomic, retain) IBOutlet UITabBarController* myTabBarController; -@property (nonatomic, retain) ABPeoplePickerNavigationController* myPeoplePickerController; -@property (nonatomic, retain) IBOutlet PhoneViewController* myPhoneViewController; -@property (nonatomic, retain) IBOutlet UIView* myContentView; @end diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 468a68302..4d4a92006 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -1,4 +1,4 @@ -/* linphoneAppDelegate.m +/* LinphoneAppDelegate.m * * Copyright (C) 2009 Belledonne Comunications, Grenoble, France * @@ -39,15 +39,11 @@ int __aeabi_idiv(int a, int b) { } #endif -@implementation linphoneAppDelegate +@implementation LinphoneAppDelegate @synthesize window; -@synthesize myTabBarController; -@synthesize myPeoplePickerController; -@synthesize myPhoneViewController; -@synthesize myContentView; --(void) handleGSMCallInteration: (id) cCenter { +- (void)handleGSMCallInteration: (id) cCenter { CTCallCenter* ct = (CTCallCenter*) cCenter; int callCount = [ct.currentCalls count]; @@ -66,7 +62,7 @@ int __aeabi_idiv(int a, int b) { } } --(void)applicationWillResignActive:(UIApplication *)application { +- (void)applicationWillResignActive:(UIApplication *)application { LinphoneCore* lc = [LinphoneManager getLc]; LinphoneCall* call = linphone_core_get_current_call(lc); if (call == NULL) @@ -135,7 +131,7 @@ int __aeabi_idiv(int a, int b) { } } -- (void) loadDefaultSettings:(NSDictionary *) appDefaults { +- (void)loadDefaultSettings:(NSDictionary *) appDefaults { NSString *settingsBundle = [[NSBundle mainBundle] pathForResource:@"Settings" ofType:@"bundle"]; if(!settingsBundle) { @@ -167,62 +163,13 @@ int __aeabi_idiv(int a, int b) { [[NSUserDefaults standardUserDefaults] synchronize]; } --(void) setupUI { +- (void)setupUI { - /*//as defined in PhoneMainView.xib - //dialer - myPhoneViewController = (PhoneViewController*) [myTabBarController.viewControllers objectAtIndex: DIALER_TAB_INDEX]; - myPhoneViewController.myTabBarController = myTabBarController; - //Call history - myCallHistoryTableViewController = [[CallHistoryTableViewController alloc] initWithNibName:@"CallHistoryTableViewController" - bundle:[NSBundle mainBundle]]; - UINavigationController *aCallHistNavigationController = [[UINavigationController alloc] initWithRootViewController:myCallHistoryTableViewController]; - aCallHistNavigationController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:HISTORY_TAB_INDEX] tabBarItem]; - - //people picker delegates - myContactPickerDelegate = [[ContactPickerDelegate alloc] init]; - //people picker - myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease]; - [myPeoplePickerController setDisplayedProperties:[NSArray arrayWithObject:[NSNumber numberWithInt:kABPersonPhoneProperty]]]; - [myPeoplePickerController setPeoplePickerDelegate:myContactPickerDelegate]; - //copy tab bar item - myPeoplePickerController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:CONTACTS_TAB_INDEX] tabBarItem]; - - //more tab - MoreViewController *moreViewController = [[MoreViewController alloc] initWithNibName:@"MoreViewController" bundle:[NSBundle mainBundle]]; - UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:moreViewController]; - [moreViewController release]; - //copy tab bar item - aNavigationController.tabBarItem = [(UIViewController*)[myTabBarController.viewControllers objectAtIndex:MORE_TAB_INDEX] tabBarItem]; - - //insert contact controller - NSMutableArray* newArray = [NSMutableArray arrayWithArray:self.myTabBarController.viewControllers]; - [newArray replaceObjectAtIndex:CONTACTS_TAB_INDEX withObject:myPeoplePickerController]; - [newArray replaceObjectAtIndex:MORE_TAB_INDEX withObject:aNavigationController]; - [aNavigationController release]; - [newArray replaceObjectAtIndex:HISTORY_TAB_INDEX withObject:aCallHistNavigationController]; - [aCallHistNavigationController release]; - - [myTabBarController setSelectedIndex:DIALER_TAB_INDEX]; - [myTabBarController setViewControllers:newArray animated:NO]; - //[window addSubview: myTabBarController.view]; - [myCallHistoryTableViewController loadView]; - // [myContentView addSubview:myCallHistoryTableViewController.view]; - //[window addSubview: myContentView]; - // [myContentViewController addChildViewController:myCallHistoryTableViewController]; - - [window makeKeyAndVisible]; - - [[LinphoneManager instance] setCallDelegate:myPhoneViewController]; - - [UIDevice currentDevice].batteryMonitoringEnabled = YES;*/ -/* - PhoneMainView *mainView = [[PhoneMainView alloc] initWithNibName:@"PhoneMainView" bundle:[NSBundle mainBundle]]; - [self.window addSubview:mainView.view]; - [self.window makeKeyAndVisible];*/ + // Change to default view + [[LinphoneManager instance] changeView: PhoneView_Dialer]; } --(void) setupGSMInteraction { +- (void)setupGSMInteraction { callCenter = [[CTCallCenter alloc] init]; callCenter.callEventHandler = ^(CTCall* call) { // post on main thread @@ -257,7 +204,7 @@ int __aeabi_idiv(int a, int b) { return YES; } --(void) startApplication { +- (void)startApplication { /* explicitely instanciate LinphoneManager */ LinphoneManager* lm = [[LinphoneManager alloc] init]; assert(lm == [LinphoneManager instance]); @@ -276,8 +223,7 @@ int __aeabi_idiv(int a, int b) { } - (void)dealloc { - //[window release]; - [myPeoplePickerController release]; + [window release]; [super dealloc]; } @@ -291,6 +237,4 @@ int __aeabi_idiv(int a, int b) { linphone_core_accept_call([LinphoneManager getLc], call); } - - @end diff --git a/Classes/LinphoneUI/LinphoneCallBar.h b/Classes/LinphoneUI/LinphoneCallBar.h new file mode 100644 index 000000000..d216a60bc --- /dev/null +++ b/Classes/LinphoneUI/LinphoneCallBar.h @@ -0,0 +1,26 @@ +/* LinphoneCallBar.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface LinphoneCallBar : UIViewController { + +} + +@end diff --git a/Classes/LinphoneUI/LinphoneCallBar.m b/Classes/LinphoneUI/LinphoneCallBar.m new file mode 100644 index 000000000..b0868360e --- /dev/null +++ b/Classes/LinphoneUI/LinphoneCallBar.m @@ -0,0 +1,24 @@ +/* LinphoneCallBar.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "LinphoneCallBar.h" + +@implementation LinphoneCallBar + +@end diff --git a/Classes/LinphoneUI/LinphoneCallBar.xib b/Classes/LinphoneUI/LinphoneCallBar.xib new file mode 100644 index 000000000..cf9e4e53b --- /dev/null +++ b/Classes/LinphoneUI/LinphoneCallBar.xib @@ -0,0 +1,484 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBProxyObject + IBUIView + IBUIButton + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + -2147483356 + {320, 135} + + + + _NS:9 + + 3 + MQA + + 2 + + + -1 + NO + IBCocoaTouchFramework + + + + 292 + {80, 67} + + + + _NS:9 + NO + + Video + + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + video-ON-over.png + + + NSImage + video-ON-actif.png + + + NSImage + video-OFF-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{80, 0}, {80, 67}} + + + + _NS:9 + NO + + Micro + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + micro-ON-over.png + + + NSImage + micro-ON-actif.png + + + NSImage + micro-OFF-actif.png + + + + + + + 292 + {{160, 0}, {80, 67}} + + + + _NS:9 + NO + + Speaker + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + speacker-ON-over.png + + + NSImage + speacker-OFF-actif.png + + + + + + + + 292 + {{240, 0}, {80, 67}} + + + + _NS:9 + NO + + Add call + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + add-call-over.png + + + + NSImage + add-call-actif.png + + + + + + + 264 + {{0, 67}, {105, 68}} + + + + _NS:9 + NO + + Pause + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + pause-over.png + + + NSImage + pause-actif.png + + + + + + + + 264 + {{105, 67}, {111, 68}} + + + + _NS:9 + NO + + Hangup + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + raccrocher-over.png + + + NSImage + raccrocher-actif.png + + + + + + + + 264 + {{215, 67}, {105, 68}} + + + _NS:9 + NO + + Back + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + dialer-meteo-sortir-over.png + + + NSImage + dialer-meteo-sortir-actif.png + + + + + + + {320, 135} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NSAwAA + + NO + IBCocoaTouchFramework + + + + + + + view + + + + 13 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + + + + + + callTabBar + + + 5 + + + mask + + + 6 + + + back + + + 7 + + + hangup + + + 8 + + + pause + + + 9 + + + speaker + + + 10 + + + addCall + + + 11 + + + micro + + + 12 + + + video + + + + + LinphoneCallBar + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 13 + + + + + LinphoneCallBar + UIViewController + + IBProjectSource + ./Classes/LinphoneCallBar.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {160, 134} + {160, 134} + {209, 136} + {209, 136} + {160, 134} + {160, 134} + {160, 134} + {209, 136} + {209, 136} + {222, 136} + {222, 136} + {160, 134} + {160, 134} + {160, 134} + {160, 134} + {160, 134} + + 1181 + + diff --git a/Classes/LinphoneUI/LinphoneMainBar.m b/Classes/LinphoneUI/LinphoneMainBar.m index 3ff7e3060..a2d042cae 100644 --- a/Classes/LinphoneUI/LinphoneMainBar.m +++ b/Classes/LinphoneUI/LinphoneMainBar.m @@ -33,7 +33,7 @@ } - (void) receiveLinphoneMainViewChangeEvent: (NSNotification*) notif { - PhoneView view = [[notif.userInfo objectForKey: @"PhoneView"] intValue]; + PhoneView view = [[notif.userInfo objectForKey: @"view"] intValue]; if(view == PhoneView_History) { historyButton.selected = TRUE; } else { @@ -71,28 +71,23 @@ } - (IBAction) onHistoryClick: (id) sender { - NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_History] forKey:@"PhoneView"]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; + [[LinphoneManager instance] changeView:PhoneView_History]; } -(IBAction) onContactsClick: (id) event { - NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Contacts] forKey:@"PhoneView"]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; + [[LinphoneManager instance] changeView:PhoneView_Contacts]; } -(IBAction) onDialerClick: (id) event { - NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Dialer] forKey:@"PhoneView"]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; + [[LinphoneManager instance] changeView:PhoneView_Dialer]; } -(IBAction) onSettingsClick: (id) event { - NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Settings] forKey:@"PhoneView"]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; + [[LinphoneManager instance] changeView:PhoneView_Settings]; } -(IBAction) onChatClick: (id) event { - NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Chat] forKey:@"PhoneView"]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; + [[LinphoneManager instance] changeView:PhoneView_Chat]; } diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index 691ebd14f..fe3d26bf0 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -24,6 +24,16 @@ #import "LogView.h" #import "LinphoneUIDelegates.h" +typedef enum _PhoneView { + PhoneView_Dialer, + PhoneView_History, + PhoneView_Settings, + PhoneView_Chat, + PhoneView_Contacts, + PhoneView_InCall, + PhoneView_END +} PhoneView; + typedef enum _Connectivity { wifi, wwan @@ -57,7 +67,6 @@ typedef struct _LinphoneCallAppData { id mLogView; bool isbackgroundModeEnabled; id callDelegate; - id registrationDelegate; UIViewController* mCurrentViewController; Connectivity connectivity; @@ -65,6 +74,8 @@ typedef struct _LinphoneCallAppData { const char* frontCamId; const char* backCamId; + PhoneView currentView; + NSDictionary* currentSettings; @public @@ -94,8 +105,10 @@ typedef struct _LinphoneCallAppData { -(void) setupNetworkReachabilityCallback; -(void) refreshRegisters; +-(void) changeView:(PhoneView) view; +-(PhoneView) currentView; + @property (nonatomic, retain) id callDelegate; -@property (nonatomic, retain) id registrationDelegate; @property Connectivity connectivity; @property (readonly) const char* frontCamId; @property (readonly) const char* backCamId; diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 1f2b3dded..9a88cbe3f 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -17,7 +17,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #import "LinphoneManager.h" #include "linphonecore_utils.h" #include @@ -52,7 +51,6 @@ extern void libmsbcg729_init(); #endif @implementation LinphoneManager @synthesize callDelegate; -@synthesize registrationDelegate; @synthesize connectivity; @synthesize frontCamId; @synthesize backCamId; @@ -65,10 +63,22 @@ extern void libmsbcg729_init(); } return self; } + +(LinphoneManager*) instance { return theLinphoneManager; } +-(void) changeView:(PhoneView) view { + currentView = view; + NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:currentView] forKey:@"view"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; +} + +-(PhoneView) currentView { + return currentView; +} + + -(NSString*) getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log { //1 normalize NSString* lNormalizedNumber = [FastAddressBook normalizePhoneNumber:number]; @@ -356,37 +366,21 @@ static void linphone_iphone_transfer_state_changed(LinphoneCore* lc, LinphoneCal -(void) onRegister:(LinphoneCore *)lc cfg:(LinphoneProxyConfig*) cfg state:(LinphoneRegistrationState) state message:(const char*) message { ms_warning("NEW REGISTRATION STATE: '%s' (message: '%s')", linphone_registration_state_to_string(state), message); - LinphoneAddress* lAddress = linphone_address_new(linphone_proxy_config_get_identity(cfg)); - NSString* lUserName = linphone_address_get_username(lAddress)? [[NSString alloc] initWithUTF8String:linphone_address_get_username(lAddress) ]:@""; - NSString* lDisplayName = linphone_address_get_display_name(lAddress)? [[NSString alloc] initWithUTF8String:linphone_address_get_display_name(lAddress) ]:@""; - NSString* lDomain = [[NSString alloc] initWithUTF8String:linphone_address_get_domain(lAddress)]; - linphone_address_destroy(lAddress); - - if (state == LinphoneRegistrationOk) { - [[(LinphoneManager*)linphone_core_get_user_data(lc) registrationDelegate] displayRegisteredFromUI:nil - forUser:lUserName - withDisplayName:lDisplayName - onDomain:lDomain ]; - } else if (state == LinphoneRegistrationProgress) { - [registrationDelegate displayRegisteringFromUI:mCurrentViewController - forUser:lUserName - withDisplayName:lDisplayName - onDomain:lDomain ]; - - } else if (state == LinphoneRegistrationCleared || state == LinphoneRegistrationNone) { - [registrationDelegate displayNotRegisteredFromUI:mCurrentViewController]; - } else if (state == LinphoneRegistrationFailed ) { + // Post event + NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys: + [NSNumber numberWithInt:state], @"state", + [[NSString stringWithFormat:@"%c", message] autorelease], @"message", + nil]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneRegistrationUpdate" object:self userInfo:dict]; + + // Show error + if (state == LinphoneRegistrationFailed) { NSString* lErrorMessage=nil; if (linphone_proxy_config_get_error(cfg) == LinphoneReasonBadCredentials) { lErrorMessage = NSLocalizedString(@"Bad credentials, check your account settings",nil); } else if (linphone_proxy_config_get_error(cfg) == LinphoneReasonNoResponse) { lErrorMessage = NSLocalizedString(@"SIP server unreachable",nil); } - [registrationDelegate displayRegistrationFailedFromUI:mCurrentViewController - forUser:lUserName - withDisplayName:lDisplayName - onDomain:lDomain - forReason:lErrorMessage]; if (lErrorMessage != nil && linphone_proxy_config_get_error(cfg) != LinphoneReasonNoResponse) { //do not report network connection issue on registration @@ -406,11 +400,6 @@ static void linphone_iphone_transfer_state_changed(LinphoneCore* lc, LinphoneCal } } - - [lUserName release]; - [lDisplayName release]; - [lDomain release]; - } static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyConfig* cfg, LinphoneRegistrationState state,const char* message) { [(LinphoneManager*)linphone_core_get_user_data(lc) onRegister:lc cfg:cfg state:state message:message]; diff --git a/Classes/LinphoneUI/LinphoneStatusBar.m b/Classes/LinphoneUI/LinphoneStatusBar.m index f721064a5..472202c9f 100644 --- a/Classes/LinphoneUI/LinphoneStatusBar.m +++ b/Classes/LinphoneUI/LinphoneStatusBar.m @@ -18,6 +18,7 @@ */ #import "LinphoneStatusBar.h" +#import "LinphoneManager.h" @implementation LinphoneStatusBar @@ -30,7 +31,7 @@ [super viewDidLoad]; // Set observer - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationStateChange:) name:@"LinphoneRegistrationStateChange" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) name:@"LinphoneRegistrationUpdate" object:nil]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation @@ -38,9 +39,34 @@ return (interfaceOrientation == UIInterfaceOrientationPortrait); } -- (void) registrationStateChange: (NSNotification*) notif { - LinphoneRegistrationState state = [[notif.userInfo objectForKey: @"state"] intValue]; - NSString* message = [notif.userInfo objectForKey: @"message"]; +- (void)registrationUpdate: (NSNotification*) notif { + LinphoneProxyConfig* config; + linphone_core_get_default_proxy([LinphoneManager getLc], &config); + + LinphoneRegistrationState state; + NSString* message = nil; + + if (config == NULL) { + state = LinphoneRegistrationNone; + message = linphone_core_is_network_reachabled([LinphoneManager getLc]) ? NSLocalizedString(@"No SIP account configured", nil) : NSLocalizedString(@"Network down", nil); + } else { + state = linphone_proxy_config_get_state(config); + + switch (state) { + case LinphoneRegistrationOk: + message = @"Registered"; break; + case LinphoneRegistrationNone: + case LinphoneRegistrationCleared: + message = @"Not registered"; break; + case LinphoneRegistrationFailed: + message = @"Registration failed"; break; + case LinphoneRegistrationProgress: + message = @"Registration in progress"; break; + //case LinphoneRegistrationCleared: m= @"No SIP account"; break; + default: break; + } + } + label.hidden = NO; switch(state) { case LinphoneRegistrationCleared: diff --git a/Classes/LinphoneUI/LinphoneUIDelegates.h b/Classes/LinphoneUI/LinphoneUIDelegates.h index 4d6b0477d..4abdf0027 100644 --- a/Classes/LinphoneUI/LinphoneUIDelegates.h +++ b/Classes/LinphoneUI/LinphoneUIDelegates.h @@ -32,12 +32,3 @@ -(void) firstVideoFrameDecoded:(LinphoneCall*) call; @end - -@protocol LinphoneUIRegistrationDelegate -// UI changes for registration --(void) displayRegisteredFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain ; --(void) displayRegisteringFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain ; --(void) displayRegistrationFailedFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain forReason:(NSString*) reason; --(void) displayNotRegisteredFromUI:(UIViewController*) viewCtrl; -@end - diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 82531de79..f9708a822 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -18,15 +18,7 @@ */ #import - -typedef enum _PhoneView { - PhoneView_Dialer, - PhoneView_History, - PhoneView_Settings, - PhoneView_Chat, - PhoneView_Contacts, - PhoneView_END -} PhoneView; +#import "LinphoneManager.h" @interface PhoneMainView : UIViewController { UIView *statusBarView; @@ -37,10 +29,9 @@ typedef enum _PhoneView { @private NSMutableDictionary *viewDescriptions; NSArray *views; - UIView *callTabBar; + UIViewController *callTabBarController; UIViewController *statusBarController; UIViewController *mainTabBarController; - UIView *incomingTabBar; UIView *addCallTabBar; } @@ -48,10 +39,9 @@ typedef enum _PhoneView { @property (nonatomic, retain) IBOutlet UIView* contentView; @property (nonatomic, retain) IBOutlet UIView* tabBarView; -@property (nonatomic, retain) IBOutlet UIView* callTabBar; +@property (nonatomic, retain) IBOutlet UIViewController* callTabBarController; @property (nonatomic, retain) IBOutlet UIViewController* statusBarController; @property (nonatomic, retain) IBOutlet UIViewController* mainTabBarController; -@property (nonatomic, retain) IBOutlet UIView* incomingTabBar; @property (nonatomic, retain) IBOutlet UIView* addCallTabBar; -(void) changeView: (NSNotification*) notif; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 555802c57..ba851eb9b 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -21,6 +21,7 @@ #import "PhoneViewController.h" #import "HistoryController.h" #import "ContactsController.h" +#import "InCallViewController.h" typedef enum _TabBar { TabBar_Main, @@ -44,10 +45,9 @@ typedef enum _TabBar { @synthesize contentView; @synthesize tabBarView; -@synthesize callTabBar; +@synthesize callTabBarController; @synthesize statusBarController; @synthesize mainTabBarController; -@synthesize incomingTabBar; @synthesize addCallTabBar; - (void) changeView: (NSNotification*) notif { @@ -74,25 +74,31 @@ typedef enum _TabBar { contentFrame.origin.y = 0; } - // Resize tabbar CGRect tabFrame = tabBarView.frame; - tabFrame.origin.y += tabFrame.size.height; - tabFrame.origin.x += tabFrame.size.width; - tabFrame.size.height = description->tabBar.view.frame.size.height; - tabFrame.size.width = description->tabBar.view.frame.size.width; - tabFrame.origin.y -= tabFrame.size.height; - tabFrame.origin.x -= tabFrame.size.width; - tabBarView.frame = tabFrame; - for (UIView *view in description->tabBar.view.subviews) { - if(view.tag == -1) { - contentFrame.size.height = tabFrame.origin.y - contentFrame.origin.y + view.frame.origin.y; - break; + if(description->tabBar != nil) { + tabBarView.hidden = false; + tabFrame.origin.y += tabFrame.size.height; + tabFrame.origin.x += tabFrame.size.width; + tabFrame.size.height = description->tabBar.view.frame.size.height; + tabFrame.size.width = description->tabBar.view.frame.size.width; + tabFrame.origin.y -= tabFrame.size.height; + tabFrame.origin.x -= tabFrame.size.width; + tabBarView.frame = tabFrame; + contentFrame.size.height = tabFrame.origin.y - contentFrame.origin.y; + for (UIView *view in description->tabBar.view.subviews) { + if(view.tag == -1) { + contentFrame.size.height += view.frame.origin.y; + break; + } } + [tabBarView addSubview: description->tabBar.view]; + } else { + tabBarView.hidden = true; + contentFrame.size.height = tabFrame.origin.y - tabFrame.size.height; } contentView.frame = contentFrame; - [tabBarView addSubview: description->tabBar.view]; } -(void)viewDidLoad { @@ -108,7 +114,9 @@ typedef enum _TabBar { // Status Bar [statusBarView addSubview: statusBarController.view]; + // // Main View + // PhoneViewController* myPhoneViewController = [[PhoneViewController alloc] initWithNibName:@"PhoneViewController" bundle:[NSBundle mainBundle]]; @@ -119,7 +127,10 @@ typedef enum _TabBar { mainViewDescription->statusEnabled = true; [viewDescriptions setObject:mainViewDescription forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; + + // // Contacts View + // ContactsController* myContactsController = [[ContactsController alloc] initWithNibName:@"ContactsController" bundle:[NSBundle mainBundle]]; @@ -130,7 +141,10 @@ typedef enum _TabBar { contactsDescription->statusEnabled = false; [viewDescriptions setObject:contactsDescription forKey:[NSNumber numberWithInt: PhoneView_Contacts]]; + + // // Call History View + // HistoryController* myHistoryController = [[HistoryController alloc] initWithNibName:@"HistoryController" bundle:[NSBundle mainBundle]]; @@ -141,12 +155,23 @@ typedef enum _TabBar { historyDescription->statusEnabled = false; [viewDescriptions setObject:historyDescription forKey:[NSNumber numberWithInt: PhoneView_History]]; + + // + // InCall View + // + InCallViewController* myInCallController = [[InCallViewController alloc] + initWithNibName:@"InCallViewController" + bundle:[NSBundle mainBundle]]; + //[myHistoryController loadView]; + ViewsDescription *inCallDescription = [ViewsDescription alloc]; + inCallDescription->content = myInCallController; + inCallDescription->tabBar = callTabBarController; + inCallDescription->statusEnabled = false; + [viewDescriptions setObject:inCallDescription forKey:[NSNumber numberWithInt: PhoneView_InCall]]; + + // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil]; - - // Change to default view - NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:PhoneView_Dialer] forKey:@"PhoneView"]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; } - (void) viewDidUnload { diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 378c59c86..2b2629153 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -100,290 +100,6 @@ IBCocoaTouchFramework - - - 292 - - YES - - - -2147483356 - {320, 135} - - - - _NS:9 - - 3 - MQA - - - -1 - NO - IBCocoaTouchFramework - - - - 292 - {80, 67} - - - - _NS:9 - NO - - Video - - IBCocoaTouchFramework - 0 - 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - video-ON-over.png - - - NSImage - video-ON-actif.png - - - NSImage - video-OFF-actif.png - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{80, 0}, {80, 67}} - - - - _NS:9 - NO - - Micro - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - micro-ON-over.png - - - NSImage - micro-ON-actif.png - - - NSImage - micro-OFF-actif.png - - - - - - - 292 - {{160, 0}, {80, 67}} - - - - _NS:9 - NO - - Speaker - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - speacker-ON-over.png - - - NSImage - speacker-OFF-actif.png - - - - - - - - 292 - {{240, 0}, {80, 67}} - - - - _NS:9 - NO - - Add call - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - add-call-over.png - - - - NSImage - add-call-actif.png - - - - - - - 264 - {{0, 67}, {105, 68}} - - - - _NS:9 - NO - - Pause - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - pause-over.png - - - NSImage - pause-actif.png - - - - - - - - 264 - {{105, 67}, {111, 68}} - - - - _NS:9 - NO - - Hangup - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - raccrocher-over.png - - - NSImage - raccrocher-actif.png - - - - - - - - 264 - {{215, 67}, {105, 68}} - - - _NS:9 - NO - - Back - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - dialer-meteo-sortir-over.png - - - NSImage - dialer-meteo-sortir-actif.png - - - - - - - {320, 135} - - - - _NS:9 - - 1 - MCAxIDAuMTkxOTQ1NDc1NSAwAA - - NO - IBCocoaTouchFramework - 292 @@ -421,12 +137,18 @@ IBCocoaTouchFramework 0 0 - + + 3 + MQA + 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + + 3 + MC41AA + NSImage decrocher-over.png @@ -435,8 +157,15 @@ NSImage decrocher-actif.png - - + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + @@ -467,7 +196,7 @@ refuser-actif.png - + {320, 77} @@ -534,7 +263,7 @@ contact-actif-add-call.png - + @@ -565,7 +294,7 @@ cancel-actif.png - + @@ -598,7 +327,7 @@ - + {320, 72} @@ -623,6 +352,16 @@ IBCocoaTouchFramework NO + + NO + + + 1 + 1 + + IBCocoaTouchFramework + NO + NO @@ -669,22 +408,6 @@ 164 - - - callTabBar - - - - 165 - - - - incomingTabBar - - - - 166 - statusBarView @@ -709,6 +432,14 @@ 193 + + + callTabBarController + + + + 196 + @@ -732,65 +463,6 @@ - - 111 - - - YES - - - - - - - - - - - callTabBar - - - 118 - - - video - - - 120 - - - micro - - - 122 - - - addCall - - - 121 - - - speaker - - - 117 - - - pause - - - 116 - - - hangup - - - 114 - - - back - 123 @@ -885,12 +557,6 @@ mask - - 172 - - - mask - 124 @@ -915,6 +581,12 @@ statusBarController + + 194 + + + callBarController + @@ -925,21 +597,6 @@ -1.IBPluginDependency -2.CustomClassName -2.IBPluginDependency - 111.IBPluginDependency - 114.IBPluginDependency - 114.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 116.IBPluginDependency - 116.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 117.IBPluginDependency - 117.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 118.IBPluginDependency - 118.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 120.IBPluginDependency - 120.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 121.IBPluginDependency - 121.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 122.IBPluginDependency - 122.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 123.IBPluginDependency 124.IBPluginDependency 124.IBUIButtonInspectorSelectedStateConfigurationMetadataKey @@ -956,12 +613,13 @@ 152.IBPluginDependency 169.IBPluginDependency 170.IBPluginDependency - 172.IBPluginDependency 175.IBPluginDependency 178.CustomClassName 178.IBPluginDependency 190.CustomClassName 190.IBPluginDependency + 194.CustomClassName + 194.IBPluginDependency 53.IBPluginDependency @@ -972,21 +630,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1002,11 +645,12 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin LinphoneMainBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin LinphoneStatusBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin + LinphoneCallBar + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1022,11 +666,19 @@ - 193 + 196 YES + + LinphoneCallBar + UIViewController + + IBProjectSource + ./Classes/LinphoneCallBar.h + + LinphoneMainBar UIViewController @@ -1196,9 +848,8 @@ YES addCallTabBar - callTabBar + callTabBarController contentView - incomingTabBar mainTabBarController statusBarController statusBarView @@ -1207,8 +858,7 @@ YES UIView - UIView - UIView + UIViewController UIView UIViewController UIViewController @@ -1221,9 +871,8 @@ YES addCallTabBar - callTabBar + callTabBarController contentView - incomingTabBar mainTabBarController statusBarController statusBarView @@ -1236,17 +885,13 @@ UIView - callTabBar - UIView + callTabBarController + UIViewController contentView UIView - - incomingTabBar - UIView - mainTabBarController UIViewController @@ -1292,8 +937,6 @@ YES YES - add-call-actif.png - add-call-over.png cancel-actif.png cancel-over.png contact-actif-add-call.png @@ -1301,28 +944,12 @@ decrocher-actif.png decrocher-over.png dialer-actif.png - dialer-meteo-sortir-actif.png - dialer-meteo-sortir-over.png dialer-over.png - micro-OFF-actif.png - micro-ON-actif.png - micro-ON-over.png - pause-actif.png - pause-over.png - raccrocher-actif.png - raccrocher-over.png refuser-actif.png refuser-over.png - speacker-OFF-actif.png - speacker-ON-over.png - video-OFF-actif.png - video-ON-actif.png - video-ON-over.png YES - {160, 134} - {160, 134} {254, 144} {254, 144} {254, 144} @@ -1330,23 +957,9 @@ {320, 154} {320, 154} {132, 144} - {209, 136} - {209, 136} {132, 144} - {160, 134} - {160, 134} - {160, 134} - {209, 136} - {209, 136} - {222, 136} - {222, 136} {320, 154} {320, 154} - {160, 134} - {160, 134} - {160, 134} - {160, 134} - {160, 134} 1181 diff --git a/Classes/PhoneViewController.h b/Classes/PhoneViewController.h index 7d76898f3..1212237fa 100644 --- a/Classes/PhoneViewController.h +++ b/Classes/PhoneViewController.h @@ -15,7 +15,8 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ + */ + #import #import #import "linphonecore.h" @@ -23,11 +24,11 @@ #import "CallDelegate.h" @class MainScreenWithVideoPreview; -@class IncallViewController; +@class InCallViewController; @class FirstLoginViewController; -@interface PhoneViewController : UIViewController { +@interface PhoneViewController : UIViewController { @private //UI definition @@ -61,7 +62,7 @@ UIActionSheet *mIncomingCallActionSheet; FirstLoginViewController* myFirstLoginViewController; - IncallViewController* mIncallViewController; + InCallViewController* mIncallViewController; MainScreenWithVideoPreview* mMainScreenWithVideoPreview; UIButton* switchCamera; @@ -96,4 +97,5 @@ @property (nonatomic, retain) IBOutlet UITabBarController* myTabBarController; @property (nonatomic, retain) IBOutlet MainScreenWithVideoPreview* mMainScreenWithVideoPreview; +-(IBAction) onAddContact: (id) event; @end diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index a97e57584..776270846 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -27,12 +27,13 @@ #include "MainScreenWithVideoPreview.h" #include "linphonecore.h" #include "private.h" +#import "PhoneMainView.h" @implementation PhoneViewController -@synthesize dialerView ; -@synthesize address ; -@synthesize callShort; -@synthesize callLarge; +@synthesize dialerView; +@synthesize address; +@synthesize callShort; +@synthesize callLarge; @synthesize status; @synthesize erase; @@ -57,52 +58,7 @@ @synthesize switchCamera; --(void) updateStatusSubView { - LinphoneCore* lc = 0; - @try { - lc = [LinphoneManager getLc]; - } @catch (NSException* exc) { - return; - } - - if (!lc) - return; - - BOOL enableCallButtons; - LinphoneProxyConfig* config; - linphone_core_get_default_proxy([LinphoneManager getLc], &config); - - LinphoneRegistrationState s; - NSString* m = nil; - - if (config == NULL) { - s = LinphoneRegistrationNone; - m = linphone_core_is_network_reachabled([LinphoneManager getLc]) ? NSLocalizedString(@"No SIP account configured", nil) : NSLocalizedString(@"Network down", nil); - } else { - s = linphone_proxy_config_get_state(config); - - switch (s) { - case LinphoneRegistrationOk: m = @"Registered"; break; - case LinphoneRegistrationNone: - case LinphoneRegistrationCleared: - m=@"Not registered"; break; - case LinphoneRegistrationFailed: m = @"Registration failed"; break; - case LinphoneRegistrationProgress: m = @"Registration in progress"; break; - //case LinphoneRegistrationCleared: m= @"No SIP account"; break; - default: break; - } - } - - // Change to registration state - NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithInt:s], @"state", m, @"message", nil]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneRegistrationStatusChange" object:self userInfo:dict]; - - [callLarge setEnabled:enableCallButtons]; - [callShort setEnabled:enableCallButtons]; - [backToCallView setEnabled:enableCallButtons]; -} - --(void) updateCallAndBackButtons { +- (void)updateCallAndBackButtons { @try { bool zeroCall = (linphone_core_get_calls_nb([LinphoneManager getLc]) == 0); @@ -121,8 +77,6 @@ [exc.name cStringUsingEncoding:[NSString defaultCStringEncoding]], [exc.reason cStringUsingEncoding:[NSString defaultCStringEncoding]]); } - - [self updateStatusSubView]; } @@ -133,13 +87,13 @@ bundle:[NSBundle mainBundle]]; [self presentModalViewController:myFirstLoginViewController animated:true]; } - [[LinphoneManager instance] setRegistrationDelegate:self]; + // [[LinphoneManager instance] setRegistrationDelegate:self]; [mMainScreenWithVideoPreview showPreview:YES]; [self updateCallAndBackButtons]; } --(void) viewDidDisappear:(BOOL)animated { +- (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; } @@ -168,7 +122,7 @@ [backToCallView addTarget:self action:@selector(backToCallViewPressed) forControlEvents:UIControlEventTouchUpInside]; if (mIncallViewController == nil) - mIncallViewController = [[IncallViewController alloc] initWithNibName:[LinphoneManager runningOnIpad]?@"InCallViewController-ipad":@"IncallViewController" + mIncallViewController = [[InCallViewController alloc] initWithNibName:[LinphoneManager runningOnIpad]?@"InCallViewController-ipad":@"InCallViewController" bundle:[NSBundle mainBundle]]; /*if (statusSubViewController == nil) { @@ -201,12 +155,12 @@ return YES; } --(void)viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [self updateCallAndBackButtons]; [super viewWillAppear:animated]; } --(void) displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { //cancel local notification, just in case if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] @@ -236,18 +190,16 @@ forUser:username withDisplayName:displayName]; - [myTabBarController setSelectedIndex:DIALER_TAB_INDEX]; + //[myTabBarController setSelectedIndex:DIALER_TAB_INDEX]; [mMainScreenWithVideoPreview showPreview:YES]; } -//status reporting --(void) displayStatus:(NSString*) message { +- (void)displayStatus:(NSString*) message { [mIncallViewController displayStatus:message]; } - --(void) displayIncomingCall:(LinphoneCall*) call NotificationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayIncomingCall:(LinphoneCall*) call NotificationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [mMainScreenWithVideoPreview showPreview:NO]; if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [UIApplication sharedApplication].applicationState != UIApplicationStateActive) { @@ -291,7 +243,7 @@ [mMainScreenWithVideoPreview showPreview:NO]; } --(void) backToCallViewPressed { +- (void)backToCallViewPressed { [UICallButton enableTransforMode:NO]; [self presentModalViewController:(UIViewController*)mIncallViewController animated:true]; @@ -307,7 +259,7 @@ } } --(void) displayCall: (LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayCall: (LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [mMainScreenWithVideoPreview showPreview:NO]; if (self.presentedViewController != (UIViewController*)mIncallViewController) { [self presentModalViewController:(UIViewController*)mIncallViewController animated:true]; @@ -320,7 +272,7 @@ } --(void) displayInCall: (LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayInCall: (LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [mMainScreenWithVideoPreview showPreview:NO]; if (self.presentedViewController != (UIViewController*)mIncallViewController && (call == 0x0 || linphone_call_get_dir(call)==LinphoneCallIncoming)){ @@ -341,7 +293,7 @@ } --(void) displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [mMainScreenWithVideoPreview showPreview:NO]; [mIncallViewController displayVideoCall:call FromUI:viewCtrl forUser:username @@ -351,7 +303,7 @@ [self updateCallAndBackButtons]; } --(void) displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName { [mIncallViewController displayAskToEnableVideoCall:call forUser:username withDisplayName:displayName]; } @@ -394,35 +346,37 @@ [super dealloc]; } --(void) displayRegisteredFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { +- (void)displayRegisteredFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - [myFirstLoginViewController displayRegisteredFromUI:viewCtrl forUser:username withDisplayName:displayName onDomain:domain]; + //[myFirstLoginViewController displayRegisteredFromUI:viewCtrl forUser:username withDisplayName:displayName onDomain:domain]; } - [self updateStatusSubView]; -} --(void) displayRegisteringFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { - if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - [myFirstLoginViewController displayRegisteringFromUI:viewCtrl forUser:username withDisplayName:displayName onDomain:domain]; - } - [self updateStatusSubView]; -} --(void) displayRegistrationFailedFromUI:(UIViewController*) viewCtrl forUser:(NSString*) user withDisplayName:(NSString*) displayName onDomain:(NSString*)domain forReason:(NSString*) reason { - if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - [myFirstLoginViewController displayRegistrationFailedFromUI:viewCtrl forUser:user withDisplayName:displayName onDomain:domain forReason:reason]; - } - [self updateStatusSubView]; } --(void) displayNotRegisteredFromUI:(UIViewController*) viewCtrl { +- (void)displayRegisteringFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - [myFirstLoginViewController displayNotRegisteredFromUI:viewCtrl]; + //[myFirstLoginViewController displayRegisteringFromUI:viewCtrl forUser:username withDisplayName:displayName onDomain:domain]; } - [self updateStatusSubView]; } --(void) firstVideoFrameDecoded: (LinphoneCall*) call { +- (void)displayRegistrationFailedFromUI:(UIViewController*) viewCtrl forUser:(NSString*) user withDisplayName:(NSString*) displayName onDomain:(NSString*)domain forReason:(NSString*) reason { + if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { + //[myFirstLoginViewController displayRegistrationFailedFromUI:viewCtrl forUser:user withDisplayName:displayName onDomain:domain forReason:reason]; + } +} + +- (void)displayNotRegisteredFromUI:(UIViewController*) viewCtrl { + if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { + //[myFirstLoginViewController displayNotRegisteredFromUI:viewCtrl]; + } +} + +- (void)firstVideoFrameDecoded: (LinphoneCall*) call { [mIncallViewController firstVideoFrameDecoded:call]; } +- (IBAction)onAddContact: (id) event { + +} + @end diff --git a/Classes/PhoneViewController.xib b/Classes/PhoneViewController.xib index 0cc9a7acc..e7476dd81 100644 --- a/Classes/PhoneViewController.xib +++ b/Classes/PhoneViewController.xib @@ -51,6 +51,7 @@ 292 {105, 72} + _NS:9 NO @@ -96,6 +97,7 @@ 292 {{105, 0}, {110, 72}} + _NS:9 NO @@ -124,6 +126,7 @@ 292 {{215, 0}, {105, 72}} + _NS:9 NO @@ -150,6 +153,7 @@ {{0, 293}, {320, 72}} + _NS:9 @@ -171,6 +175,7 @@ 292 {320, 259} + _NS:9 NO @@ -188,6 +193,7 @@ 292 {{0, 11}, {107, 54}} + 1 @@ -225,6 +231,7 @@ 292 {{107, 11}, {106, 54}} + NO NO @@ -253,6 +260,7 @@ 292 {{213, 11}, {107, 54}} + NO NO @@ -277,6 +285,7 @@ 292 {{0, 73}, {107, 54}} + NO NO @@ -305,6 +314,7 @@ 292 {{107, 73}, {106, 54}} + NO NO @@ -333,6 +343,7 @@ 292 {{0, 135}, {107, 54}} + NO NO @@ -361,6 +372,7 @@ 292 {{213, 73}, {107, 54}} + NO NO @@ -389,6 +401,7 @@ 292 {{107, 135}, {106, 54}} + NO NO @@ -417,6 +430,7 @@ 292 {{213, 135}, {107, 54}} + NO NO @@ -445,6 +459,7 @@ 292 {{0, 197}, {107, 54}} + NO NO @@ -473,6 +488,7 @@ 292 {{107, 197}, {106, 54}} + NO NO @@ -501,6 +517,7 @@ 292 {{213, 197}, {107, 54}} + NO NO @@ -527,6 +544,7 @@ {{0, 58}, {320, 260}} + _NS:9 @@ -546,6 +564,7 @@ 292 {320, 80} + _NS:9 NO @@ -560,6 +579,7 @@ 292 {320, 60} + 3 @@ -595,6 +615,7 @@ {320, 80} + _NS:9 @@ -608,6 +629,7 @@ {320, 460} + _NS:9 @@ -756,6 +778,15 @@ 19 + + + onAddContact: + + + 7 + + 187 + @@ -920,8 +951,8 @@ YES - + toolBar @@ -962,6 +993,7 @@ 182.IBPluginDependency 183.IBPluginDependency 183.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 184.CustomClassName 184.IBPluginDependency 184.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 185.CustomClassName @@ -1018,6 +1050,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIEraseButton @@ -1073,9 +1106,275 @@ - 186 + 188 + + + + YES + + MainScreenWithVideoPreview + UIViewController + + YES + + YES + phoneMainView + window + + + YES + PhoneViewController + UIWindow + + + + YES + + YES + phoneMainView + window + + + YES + + phoneMainView + PhoneViewController + + + window + UIWindow + + + + + IBProjectSource + ./Classes/MainScreenWithVideoPreview.h + + + + PhoneViewController + UIViewController + + onAddContact: + id + + + onAddContact: + + onAddContact: + id + + + + YES + + YES + address + backToCallView + callLarge + callShort + dialerView + eight + erase + five + four + hash + mMainScreenWithVideoPreview + myTabBarController + nine + one + seven + six + star + status + statusViewHolder + switchCamera + three + two + zero + + + YES + UITextField + UIButton + UIButton + UIButton + UIView + UIButton + UIEraseButton + UIButton + UIButton + UIButton + MainScreenWithVideoPreview + UITabBarController + UIButton + UIButton + UIButton + UIButton + UIButton + UILabel + UIView + UIButton + UIButton + UIButton + UIButton + + + + YES + + YES + address + backToCallView + callLarge + callShort + dialerView + eight + erase + five + four + hash + mMainScreenWithVideoPreview + myTabBarController + nine + one + seven + six + star + status + statusViewHolder + switchCamera + three + two + zero + + + YES + + address + UITextField + + + backToCallView + UIButton + + + callLarge + UIButton + + + callShort + UIButton + + + dialerView + UIView + + + eight + UIButton + + + erase + UIEraseButton + + + five + UIButton + + + four + UIButton + + + hash + UIButton + + + mMainScreenWithVideoPreview + MainScreenWithVideoPreview + + + myTabBarController + UITabBarController + + + nine + UIButton + + + one + UIButton + + + seven + UIButton + + + six + UIButton + + + star + UIButton + + + status + UILabel + + + statusViewHolder + UIView + + + switchCamera + UIButton + + + three + UIButton + + + two + UIButton + + + zero + UIButton + + + + + IBProjectSource + ./Classes/PhoneViewController.h + + + + UICallButton + UIButton + + IBProjectSource + ./Classes/UICallButton.h + + + + UIDigitButton + UIButton + + IBProjectSource + ./Classes/UIDigitButton.h + + + + UIEraseButton + UIButton + + IBProjectSource + ./Classes/UIEraseButton.h + + + - 0 IBCocoaTouchFramework diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index a2b3c88fe..11fa0066c 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -258,6 +258,12 @@ 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; + D326483815887D5200930C67 /* OrderedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483715887D5200930C67 /* OrderedDictionary.m */; }; + D326483915887D5200930C67 /* OrderedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483715887D5200930C67 /* OrderedDictionary.m */; }; + D326483E1588950F00930C67 /* LinphoneCallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* LinphoneCallBar.m */; }; + D326483F1588950F00930C67 /* LinphoneCallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* LinphoneCallBar.m */; }; + D32648401588950F00930C67 /* LinphoneCallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D326483D1588950F00930C67 /* LinphoneCallBar.xib */; }; + D32648411588950F00930C67 /* LinphoneCallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D326483D1588950F00930C67 /* LinphoneCallBar.xib */; }; D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; }; D347347E1580E5F8003C7B8C /* history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history-actif.png */; }; D347347F1580E5F8003C7B8C /* history-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history-selectionne.png */; }; @@ -831,6 +837,11 @@ 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + D326483615887D5200930C67 /* OrderedDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OrderedDictionary.h; path = Utils/OrderedDictionary.h; sourceTree = ""; }; + D326483715887D5200930C67 /* OrderedDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OrderedDictionary.m; path = Utils/OrderedDictionary.m; sourceTree = ""; }; + D326483B1588950F00930C67 /* LinphoneCallBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCallBar.h; sourceTree = ""; }; + D326483C1588950F00930C67 /* LinphoneCallBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCallBar.m; sourceTree = ""; }; + D326483D1588950F00930C67 /* LinphoneCallBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneCallBar.xib; sourceTree = ""; }; D34734791580DDF1003C7B8C /* PhoneMainView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PhoneMainView.xib; sourceTree = ""; }; D347347C1580E5F8003C7B8C /* history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-actif.png"; path = "Resources/history-actif.png"; sourceTree = ""; }; D347347D1580E5F8003C7B8C /* history-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-selectionne.png"; path = "Resources/history-selectionne.png"; sourceTree = ""; }; @@ -1050,6 +1061,7 @@ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( + D326483415887D4400930C67 /* Utils */, 340751E4150E4D0200B89C47 /* CallDelegate.h */, 2211DBBB14769C8200DEE054 /* CallDelegate.m */, D3ED3EA41587334B006C0DE4 /* CallHistoryTableViewController.h */, @@ -1319,6 +1331,9 @@ D3A55FBE15877E69003FD403 /* ContactCell.xib */, 223963151393CFAE001DE689 /* FastAddressBook.h */, 223963161393CFAF001DE689 /* FastAddressBook.m */, + D326483B1588950F00930C67 /* LinphoneCallBar.h */, + D326483C1588950F00930C67 /* LinphoneCallBar.m */, + D326483D1588950F00930C67 /* LinphoneCallBar.xib */, D3ED3E841586291B006C0DE4 /* LinphoneMainBar.h */, D3ED3E851586291B006C0DE4 /* LinphoneMainBar.m */, D3ED3E861586291C006C0DE4 /* LinphoneMainBar.xib */, @@ -1663,6 +1678,15 @@ name = Frameworks; sourceTree = ""; }; + D326483415887D4400930C67 /* Utils */ = { + isa = PBXGroup; + children = ( + D326483615887D5200930C67 /* OrderedDictionary.h */, + D326483715887D5200930C67 /* OrderedDictionary.m */, + ); + name = Utils; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -1898,6 +1922,7 @@ D354981C15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */, D35498231587716B000081D8 /* LinphoneStatusBar.xib in Resources */, D3A55FBF15877E69003FD403 /* ContactCell.xib in Resources */, + D32648401588950F00930C67 /* LinphoneCallBar.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2047,6 +2072,7 @@ D354981D15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */, D35498241587716B000081D8 /* LinphoneStatusBar.xib in Resources */, D3A55FC015877E69003FD403 /* ContactCell.xib in Resources */, + D32648411588950F00930C67 /* LinphoneCallBar.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2091,6 +2117,8 @@ D3549816158761D0000081D8 /* ContactTableViewController.m in Sources */, D35498211587716B000081D8 /* LinphoneStatusBar.m in Sources */, D3A55FBC15877E5E003FD403 /* ContactCell.m in Sources */, + D326483815887D5200930C67 /* OrderedDictionary.m in Sources */, + D326483E1588950F00930C67 /* LinphoneCallBar.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2132,6 +2160,8 @@ D3549817158761D0000081D8 /* ContactTableViewController.m in Sources */, D35498221587716B000081D8 /* LinphoneStatusBar.m in Sources */, D3A55FBD15877E5E003FD403 /* ContactCell.m in Sources */, + D326483915887D5200930C67 /* OrderedDictionary.m in Sources */, + D326483F1588950F00930C67 /* LinphoneCallBar.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From f88aff3f1818dfe507a654415d537bff0ce30a53 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 13 Jun 2012 18:39:33 +0200 Subject: [PATCH 011/397] Remove delagate stuff ... working on incall view --- Classes/CallHistoryTableViewController.m | 8 +- Classes/ConferenceCallDetailView.h | 4 +- Classes/ConferenceCallDetailView.m | 3 +- Classes/ContactPickerDelegate.h | 30 - Classes/ContactPickerDelegate.m | 53 - Classes/ContactTableViewController.m | 1 + Classes/FirstLoginViewController.h | 6 +- Classes/InCallViewController.h | 16 +- Classes/InCallViewController.m | 174 ++- Classes/InCallViewController.xib | 1221 ++++++++--------- Classes/LinphoneAppDelegate.m | 1 - Classes/LinphoneUI/LinphoneCallBar.h | 12 +- Classes/LinphoneUI/LinphoneCallBar.m | 128 ++ Classes/LinphoneUI/LinphoneCallBar.xib | 344 +++-- Classes/LinphoneUI/LinphoneMainBar.m | 7 +- Classes/LinphoneUI/LinphoneManager.h | 16 +- Classes/LinphoneUI/LinphoneManager.m | 208 ++- Classes/LinphoneUI/LinphoneUIDelegates.h | 34 - Classes/LinphoneUI/UILinphone.h | 3 +- .../{UIMuteButton.h => UIMicroButton.h} | 2 +- .../{UIMuteButton.m => UIMicroButton.m} | 39 +- Classes/LinphoneUI/UISpeakerButton.m | 16 +- Classes/LinphoneUI/UIToggleButton.h | 11 +- Classes/LinphoneUI/UIToggleButton.m | 68 +- Classes/LinphoneUI/UIToggleVideoButton.m | 3 +- Classes/MoreViewController.m | 11 - Classes/PhoneMainView.h | 11 +- Classes/PhoneMainView.m | 17 +- Classes/PhoneMainView.xib | 144 +- Classes/PhoneViewController.h | 3 +- Classes/PhoneViewController.m | 149 +- Classes/PhoneViewController.xib | 11 +- Classes/VideoViewController.h | 12 +- Classes/VideoViewController.m | 4 +- linphone.xcodeproj/project.pbxproj | 42 +- 35 files changed, 1439 insertions(+), 1373 deletions(-) delete mode 100644 Classes/ContactPickerDelegate.h delete mode 100644 Classes/ContactPickerDelegate.m delete mode 100644 Classes/LinphoneUI/LinphoneUIDelegates.h rename Classes/LinphoneUI/{UIMuteButton.h => UIMicroButton.h} (94%) rename Classes/LinphoneUI/{UIMuteButton.m => UIMicroButton.m} (74%) diff --git a/Classes/CallHistoryTableViewController.m b/Classes/CallHistoryTableViewController.m index a55c5ffd6..def9679e0 100644 --- a/Classes/CallHistoryTableViewController.m +++ b/Classes/CallHistoryTableViewController.m @@ -185,9 +185,13 @@ NSString* dispName = [[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]]; - [[LinphoneManager instance].callDelegate displayDialerFromUI:self + + [[LinphoneManager instance] changeView:PhoneView_Dialer]; + + //TODO + /*[[LinphoneManager instance].callDelegate displayDialerFromUI:self forUser:phoneNumber - withDisplayName:dispName]; + withDisplayName:dispName];*/ [phoneNumber release]; [dispName release]; } diff --git a/Classes/ConferenceCallDetailView.h b/Classes/ConferenceCallDetailView.h index b6bb27fe7..1c0ff02c0 100644 --- a/Classes/ConferenceCallDetailView.h +++ b/Classes/ConferenceCallDetailView.h @@ -17,12 +17,12 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #import -#import "LinphoneUI/UIMuteButton.h" +#import "LinphoneUI/UIMicroButton.h" #import "LinphoneUI/UISpeakerButton.h" @interface ConferenceCallDetailView : UIViewController { - UIMuteButton* mute; + UIMicroButton* mute; UISpeakerButton* speaker; UIButton* back; UIButton* hangup; diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index 7ae8a4d6d..d31b9cf57 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -62,8 +62,9 @@ NSTimer *callQualityRefresher; table.rowHeight = 80; - [mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; + /*[mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] debugName:"SPEAKER button"]; + */ } -(void) backButtonPressed { diff --git a/Classes/ContactPickerDelegate.h b/Classes/ContactPickerDelegate.h deleted file mode 100644 index 623ccd1f7..000000000 --- a/Classes/ContactPickerDelegate.h +++ /dev/null @@ -1,30 +0,0 @@ -/* ContactPickerDelegate.h - * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -#import -#import -#import "PhoneViewController.h" -#import "linphoneAppDelegate.h" - - -@interface ContactPickerDelegate : NSObject { - -} - - -@end diff --git a/Classes/ContactPickerDelegate.m b/Classes/ContactPickerDelegate.m deleted file mode 100644 index 00d53e489..000000000 --- a/Classes/ContactPickerDelegate.m +++ /dev/null @@ -1,53 +0,0 @@ -/* ContactPickerDelegate.m - * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -#import "ContactPickerDelegate.h" -#import "LinphoneManager.h" - -@implementation ContactPickerDelegate - - -- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker - shouldContinueAfterSelectingPerson:(ABRecordRef)person { - return true; - -} - -- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker - shouldContinueAfterSelectingPerson:(ABRecordRef)person - property:(ABPropertyID)property - identifier:(ABMultiValueIdentifier)identifier { - - CFTypeRef multiValue = ABRecordCopyValue(person, property); - CFIndex valueIdx = ABMultiValueGetIndexForIdentifier(multiValue,identifier); - NSString *phoneNumber = (NSString *)ABMultiValueCopyValueAtIndex(multiValue, valueIdx); - [[LinphoneManager instance].callDelegate displayDialerFromUI:nil - forUser:phoneNumber - withDisplayName:[(NSString*)ABRecordCopyCompositeName(person) autorelease]]; - [phoneNumber release]; - CFRelease(multiValue); - return false; -} - -- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker { - [[LinphoneManager instance].callDelegate displayDialerFromUI:nil - forUser:nil - withDisplayName:@""]; -} - -@end diff --git a/Classes/ContactTableViewController.m b/Classes/ContactTableViewController.m index 885a8a9d6..03383d73b 100644 --- a/Classes/ContactTableViewController.m +++ b/Classes/ContactTableViewController.m @@ -90,6 +90,7 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]]; + // TODO } - (void)dealloc { diff --git a/Classes/FirstLoginViewController.h b/Classes/FirstLoginViewController.h index 58d6db011..bd0d646fe 100644 --- a/Classes/FirstLoginViewController.h +++ b/Classes/FirstLoginViewController.h @@ -19,17 +19,14 @@ #import #import "LinphoneAppDelegate.h" -#import "LinphoneUIDelegates.h" - @interface FirstLoginViewController : UIViewController { UIButton* ok; UIButton* site; UITextField* username; UIView* activityIndicator; - - } + -(void) doOk:(id)sender; @property (nonatomic, retain) IBOutlet UIButton* ok; @@ -37,4 +34,5 @@ @property (nonatomic, retain) IBOutlet UITextField* username; @property (nonatomic, retain) IBOutlet UITextField* passwd; @property (nonatomic, retain) IBOutlet UIView* activityIndicator; + @end diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index 63388ce90..fa5006ced 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -1,4 +1,4 @@ -/* IncallViewController.h +/* InCallViewController.h * * Copyright (C) 2009 Belledonne Comunications, Grenoble, France * @@ -16,24 +16,28 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + #import +#import + #import "linphonecore.h" #import "PhoneViewController.h" #import "ConferenceCallDetailView.h" -#import -#include "UILinphone.h" #import "UIToggleVideoButton.h" #import "VideoZoomHandler.h" + +#include "UILinphone.h" + @class VideoViewController; -@interface InCallViewController : UIViewController { +@interface InCallViewController : UIViewController { UIView* controlSubView, *hangUpView; UIButton* endCtrl; UIButton* dialer; - UIMuteButton* mute; + UIMicroButton* mute; UIButton* pause; UISpeakerButton* speaker; UIButton* contacts; @@ -97,8 +101,6 @@ VideoZoomHandler* videoZoomHandler; } --(void)displayStatus:(NSString*) message; - - (IBAction)doAction:(id)sender; +(LinphoneCall*) retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index ae809015f..f2de7fd9b 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -1,4 +1,4 @@ -/* IncallViewController.h +/* InCallViewController.h * * Copyright (C) 2009 Belledonne Comunications, Grenoble, France * @@ -15,20 +15,21 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ + */ + #import "IncallViewController.h" #import "VideoViewController.h" +#import "LinphoneManager.h" #import #import -#import "linphonecore.h" -#include "LinphoneManager.h" -#include "private.h" -#import "ContactPickerDelegate.h" #import #import #import #import +#include "linphonecore.h" +#include "private.h" + #define STRINGIFY(x) #x #define TOSTRING(x) STRINGIFY(x) #define AT __FILE__ ":" TOSTRING(__LINE__) @@ -397,10 +398,14 @@ void addAnimationFadeTransition(UIView* view, float duration) { // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; - //Controls - [mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; - [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] debugName:"SPEAKER button"]; + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; + + //Controls + /*[mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; + [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] debugName:"SPEAKER button"]; + */ verified = [[UIImage imageNamed:@"secured.png"] retain]; unverified = [[UIImage imageNamed:@"unverified.png"] retain]; @@ -420,7 +425,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { [addCall addTarget:self action:@selector(addCallPressed) forControlEvents:UIControlEventTouchUpInside]; [mergeCalls addTarget:self action:@selector(mergeCallsPressed) forControlEvents:UIControlEventTouchUpInside]; - [pause addTarget:self action:@selector(pauseCallPressed) forControlEvents:UIControlEventTouchUpInside]; [LinphoneManager set:mergeCalls hidden:YES withName:"MERGE button" andReason:"initialisation"]; if ([LinphoneManager runningOnIpad]) { @@ -517,7 +521,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { visibleActionSheet = nil; [UICallButton enableTransforMode:YES]; - [[LinphoneManager instance] displayDialer]; + [[LinphoneManager instance] changeView:PhoneView_Dialer]; } else { // add 'Other' option [visibleActionSheet addButtonWithTitle:NSLocalizedString(@"Other...",nil)]; @@ -537,46 +541,15 @@ void addAnimationFadeTransition(UIView* view, float duration) { -(void) addCallPressed { [LinphoneManager logUIElementPressed:"CALL button"]; - [[LinphoneManager instance] displayDialer]; + [[LinphoneManager instance] changeView:PhoneView_Dialer]; } - -(void) mergeCallsPressed { [LinphoneManager logUIElementPressed:"MERGE button"]; LinphoneCore* lc = [LinphoneManager getLc]; linphone_core_add_all_to_conference(lc); } --(void) pauseCallPressed { - [LinphoneManager logUIElementPressed:"PAUSE button"]; - LinphoneCore* lc = [LinphoneManager getLc]; - - LinphoneCall* currentCall = linphone_core_get_current_call(lc); - if (currentCall) { - if (linphone_call_get_state(currentCall) == LinphoneCallStreamsRunning) { - [pause setSelected:NO]; - linphone_core_pause_call(lc, currentCall); - - // hide video view - [self disableVideoDisplay]; - } - } else { - if (linphone_core_get_calls_nb(lc) == 1) { - LinphoneCall* c = (LinphoneCall*) linphone_core_get_calls(lc)->data; - if (linphone_call_get_state(c) == LinphoneCallPaused) { - linphone_core_resume_call(lc, c); - [pause setSelected:YES]; - - const LinphoneCallParams* p = linphone_call_get_current_params(c); - if (linphone_call_params_video_enabled(p)) { - [self enableVideoDisplay]; - } - } - } - } -} - - -(void)updateCallsDurations { [self updateUIFromLinphoneState: NO]; } @@ -646,12 +619,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { - (void)viewDidUnload { [verified release]; [unverified release]; -} - - - --(void) displayStatus:(NSString*) message; { - + [[NSNotificationCenter defaultCenter] removeObserver:self]; } -(void) displayPad:(bool) enable { @@ -719,6 +687,108 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); }*/ } + +- (void)callUpdate: (NSNotification*) notif { + LinphoneCallWrapper *callWrapper = [notif.userInfo objectForKey: @"call"]; + LinphoneCall *call = callWrapper->call; + LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; + + const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); + NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); + const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); + NSString* lDisplayName = [lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@"" autorelease]; + + bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); + + switch (state) { + case LinphoneCallIncomingReceived: + [self displayIncomingCall:call + NotificationFromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + break; + + case LinphoneCallOutgoingInit: + [self displayCall:call + InProgressFromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + break; + case LinphoneCallPausedByRemote: + case LinphoneCallConnected: + [self displayInCall: call + FromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + break; + case LinphoneCallUpdatedByRemote: + { + const LinphoneCallParams* current = linphone_call_get_current_params(call); + const LinphoneCallParams* remote = linphone_call_get_remote_params(call); + + /* remote wants to add video */ + if (!linphone_call_params_video_enabled(current) && + linphone_call_params_video_enabled(remote) && + !linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) { + linphone_core_defer_call_update([LinphoneManager getLc], call); + [self displayAskToEnableVideoCall:call forUser:lUserName withDisplayName:lDisplayName]; + } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { + [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; + } + break; + } + case LinphoneCallUpdated: + { + const LinphoneCallParams* current = linphone_call_get_current_params(call); + if (linphone_call_params_video_enabled(current)) { + [self displayVideoCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; + } else { + [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; + } + break; + + } + case LinphoneCallError: { + if (canHideInCallView) { + [self displayDialerFromUI:nil + forUser:@"" + withDisplayName:@""]; + } else { + [self displayInCall:call + FromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + } + break; + } + case LinphoneCallEnd: + if (canHideInCallView) { + [self displayDialerFromUI:nil + forUser:@"" + withDisplayName:@""]; + } else { + [self displayInCall:call + FromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + } + break; + case LinphoneCallStreamsRunning: + //check video + if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { + [self displayVideoCall:call FromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + } else { + [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; + } + break; + default: + break; + } + +} + static void hideSpinner(LinphoneCall* call, void* user_data) { InCallViewController* thiz = (InCallViewController*) user_data; [thiz hideSpinnerIndicator:call]; @@ -798,7 +868,8 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } else if (sender == contacts) { // start people picker myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease]; - [myPeoplePickerController setPeoplePickerDelegate:[[ContactPickerDelegate alloc] init] ]; + // TODO + //[myPeoplePickerController setPeoplePickerDelegate:[[ContactPickerDelegate alloc] init] ]; [self presentModalViewController: myPeoplePickerController animated:true]; } else if (sender == close) { @@ -831,6 +902,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { - (void)dealloc { [super dealloc]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; } +(LinphoneCall*) retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{ @@ -1177,7 +1249,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { // user must jhave pressed 'other...' button as we did not find a call // with the correct indice [UICallButton enableTransforMode:YES]; - [[LinphoneManager instance] displayDialer]; + [[LinphoneManager instance] changeView:PhoneView_Dialer]; break; } default: diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 2bb8a21f5..9a6774b53 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -52,6 +52,7 @@ 292 {320, 480} + _NS:196 @@ -65,6 +66,7 @@ 292 {{240, 354}, {80, 106}} + IBCocoaTouchFramework @@ -74,6 +76,7 @@ 292 {{4, 428}, {28, 28}} + _NS:567 NO @@ -84,6 +87,7 @@ 292 {{141, 212}, {37, 37}} + _NS:1030 NO @@ -95,6 +99,7 @@ {320, 460} + _NS:196 @@ -109,6 +114,7 @@ 292 {320, 66} + 1 @@ -133,7 +139,7 @@ 3 MC41AA - + NSImage clavier-01-106px.png @@ -154,6 +160,7 @@ 274 {320, 251} + _NS:418 @@ -167,342 +174,6 @@ 22 22 - - - 292 - - YES - - - 292 - {{0, 1}, {320, 66}} - - - 1 - MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - stopcall-red.png - - - - - - - {{0, 393.5}, {320, 77}} - - - _NS:196 - - IBCocoaTouchFramework - - - - 292 - - YES - - - 292 - {{80, 70}, {80, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - grouper.png - - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - - - - 292 - {{0, 4}, {107, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - mic_active.png - - - NSImage - micro_inverse.png - - - NSImage - micro.png - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 - - - - - 292 - {{0, 70}, {80, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - ajouter.png - - - - - - - 292 - {{160, 70}, {80, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - Transfer - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - 2 - 15 - - - - - - 292 - {{240, 70}, {80, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - 1 - MCAwIDAAA - - - NSImage - contact.png - - - - - - - -2147483356 - {{240, 70}, {80, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - video - - - 3 - MC42NjY2NjY2NjY3AA - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - NSImage - clavier-01-160px.png - - - - - - - -2147483356 - {{261.5, 84.5}, {37, 37}} - - - _NS:1030 - NO - IBCocoaTouchFramework - NO - 0 - - - - 292 - {{107, 4}, {106, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - clavier.png - - - - - - - 292 - {{213, 4}, {107, 66}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - HP_inverse.png - - - NSImage - HP.png - - - - - - - 292 - {{80, 70}, {80, 66}} - - - - NO - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - NSImage - pause_inactif.png - - - NSImage - pause.png - - - - - - {{0, 258.5}, {320, 135}} - - - - NO - NO - IBCocoaTouchFramework - -2147483356 @@ -513,7 +184,8 @@ 292 {{119, 251}, {82, 52}} - + + NO NO @@ -535,8 +207,12 @@ 292 {{119, 193}, {82, 52}} + - + + 3 + MC42NjY2NjY2NjY3AA + NO NO IBCocoaTouchFramework @@ -557,6 +233,7 @@ 292 {{31, 19}, {82, 52}} + NO @@ -579,6 +256,7 @@ 292 {{119, 19}, {82, 52}} + NO @@ -588,7 +266,10 @@ 0 2 - + + 1 + MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA + @@ -598,6 +279,7 @@ 292 {{207, 19}, {82, 52}} + NO @@ -620,6 +302,7 @@ 292 {{31, 77}, {82, 52}} + NO @@ -642,6 +325,7 @@ 292 {{119, 77}, {82, 52}} + NO @@ -664,6 +348,7 @@ 292 {{207, 77}, {82, 52}} + NO @@ -686,6 +371,7 @@ 292 {{31, 135}, {82, 52}} + NO @@ -708,6 +394,7 @@ 292 {{119, 135}, {82, 52}} + NO @@ -730,6 +417,7 @@ 292 {{207, 135}, {82, 52}} + NO @@ -752,6 +440,7 @@ 292 {{31, 193}, {82, 52}} + NO @@ -774,6 +463,7 @@ 292 {{207, 193}, {82, 52}} + NO @@ -794,6 +484,7 @@ {{0, 71}, {320, 310}} + 3 @@ -806,6 +497,7 @@ {320, 460} + NO @@ -991,128 +683,6 @@ 45 - - - endCtrl - - - - 99 - - - - hangUpView - - - - 122 - - - - pause - - - - 115 - - - - speaker - - - - 82 - - - - dialer - - - - 49 - - - - contacts - - - - 84 - - - - addCall - - - - 112 - - - - mute - - - - 80 - - - - mergeCalls - - - - 114 - - - - addVideo - - - - 125 - - - - videoUpdateIndicator - - - - 143 - - - - transfer - - - - 150 - - - - controlSubView - - - - 44 - - - - doAction: - - - 7 - - 103 - - - - doAction: - - - 7 - - 100 - doAction: @@ -1168,10 +738,8 @@ YES - - @@ -1325,101 +893,6 @@ 5 - - 120 - - - YES - - - - hangupview - - - 18 - - - end - - - 26 - - - YES - - - - - - - - - - - - - controls - - - 113 - - - pauseresume - - - 13 - - - speaker - - - 17 - - - dialer - - - 15 - - - contacts - - - 111 - - - addcall - - - 16 - - - mute - - - 104 - - - merge - - - 123 - - - video - - - 142 - - - video_update_indicator - - - 147 - - - transfer - @@ -1430,38 +903,14 @@ -1.IBPluginDependency -2.CustomClassName -2.IBPluginDependency - 104.IBPluginDependency - 104.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 106.IBPluginDependency - 111.IBPluginDependency - 111.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 113.IBPluginDependency - 113.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 120.IBPluginDependency - 123.CustomClassName - 123.IBPluginDependency - 123.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 126.IBPluginDependency 127.IBPluginDependency - 13.CustomClassName - 13.IBPluginDependency - 13.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 132.IBPluginDependency 137.IBPluginDependency 140.CustomClassName 140.IBPluginDependency - 142.IBPluginDependency 144.IBPluginDependency - 147.IBPluginDependency - 147.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 15.IBPluginDependency - 16.CustomClassName - 16.IBPluginDependency - 16.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 17.IBPluginDependency - 18.CustomClassName - 18.IBPluginDependency - 26.IBPluginDependency 27.IBPluginDependency 29.IBPluginDependency 30.CustomClassName @@ -1498,21 +947,8 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIToggleVideoButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UISpeakerButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICamSwitch @@ -1520,17 +956,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton @@ -1573,7 +998,550 @@ 159 - + + + YES + + InCallViewController + UIViewController + + doAction: + id + + + doAction: + + doAction: + id + + + + YES + + YES + addCall + addVideo + callTableView + close + conferenceDetail + contacts + controlSubView + dialer + eight + endCtrl + five + four + hangUpView + hash + mergeCalls + mute + nine + one + padSubView + pause + seven + six + speaker + star + testVideoView + three + transfer + two + videoCallQuality + videoCameraSwitch + videoGroup + videoPreview + videoUpdateIndicator + videoView + videoViewController + videoWaitingForFirstImage + zero + + + YES + UIButton + UIToggleVideoButton + UITableView + UIButton + UIViewController + UIButton + UIView + UIButton + UIButton + UIButton + UIButton + UIButton + UIView + UIButton + UIButton + UIButton + UIButton + UIButton + UIView + UIButton + UIButton + UIButton + UIButton + UIButton + UIView + UIButton + UIButton + UIButton + UIImageView + UICamSwitch + UIView + UIView + UIActivityIndicatorView + UIView + VideoViewController + UIActivityIndicatorView + UIButton + + + + YES + + YES + addCall + addVideo + callTableView + close + conferenceDetail + contacts + controlSubView + dialer + eight + endCtrl + five + four + hangUpView + hash + mergeCalls + mute + nine + one + padSubView + pause + seven + six + speaker + star + testVideoView + three + transfer + two + videoCallQuality + videoCameraSwitch + videoGroup + videoPreview + videoUpdateIndicator + videoView + videoViewController + videoWaitingForFirstImage + zero + + + YES + + addCall + UIButton + + + addVideo + UIToggleVideoButton + + + callTableView + UITableView + + + close + UIButton + + + conferenceDetail + UIViewController + + + contacts + UIButton + + + controlSubView + UIView + + + dialer + UIButton + + + eight + UIButton + + + endCtrl + UIButton + + + five + UIButton + + + four + UIButton + + + hangUpView + UIView + + + hash + UIButton + + + mergeCalls + UIButton + + + mute + UIButton + + + nine + UIButton + + + one + UIButton + + + padSubView + UIView + + + pause + UIButton + + + seven + UIButton + + + six + UIButton + + + speaker + UIButton + + + star + UIButton + + + testVideoView + UIView + + + three + UIButton + + + transfer + UIButton + + + two + UIButton + + + videoCallQuality + UIImageView + + + videoCameraSwitch + UICamSwitch + + + videoGroup + UIView + + + videoPreview + UIView + + + videoUpdateIndicator + UIActivityIndicatorView + + + videoView + UIView + + + videoViewController + VideoViewController + + + videoWaitingForFirstImage + UIActivityIndicatorView + + + zero + UIButton + + + + + IBProjectSource + ./Classes/InCallViewController.h + + + + UICamSwitch + UIButton + + preview + UIView + + + preview + + preview + UIView + + + + IBProjectSource + ./Classes/UICamSwitch.h + + + + UIDigitButton + UIButton + + IBProjectSource + ./Classes/UIDigitButton.h + + + + UIHangUpButton + UIButton + + IBProjectSource + ./Classes/UIHangUpButton.h + + + + UIMuteButton + UIToggleButton + + IBProjectSource + ./Classes/UIMuteButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + UIToggleVideoButton + UIButton + + videoUpdateIndicator + UIActivityIndicatorView + + + videoUpdateIndicator + + videoUpdateIndicator + UIActivityIndicatorView + + + + IBProjectSource + ./Classes/UIToggleVideoButton.h + + + + VideoViewController + UIViewController + + YES + + YES + mCallQuality + mCallQualityLandLeft + mCallQualityLandRight + mCamSwitch + mCamSwitchLandLeft + mCamSwitchLandRight + mDisplay + mDisplayLandLeft + mDisplayLandRight + mHangUp + mHangUpLandLeft + mHangUpLandRight + mLandscapeLeft + mLandscapeRight + mMute + mMuteLandLeft + mMuteLandRight + mPortrait + mPreview + mPreviewLandLeft + mPreviewLandRight + + + YES + UIImageView + UIImageView + UIImageView + UICamSwitch + UICamSwitch + UICamSwitch + UIView + UIView + UIView + UIHangUpButton + UIHangUpButton + UIHangUpButton + UIView + UIView + UIMuteButton + UIMuteButton + UIMuteButton + UIView + UIView + UIView + UIView + + + + YES + + YES + mCallQuality + mCallQualityLandLeft + mCallQualityLandRight + mCamSwitch + mCamSwitchLandLeft + mCamSwitchLandRight + mDisplay + mDisplayLandLeft + mDisplayLandRight + mHangUp + mHangUpLandLeft + mHangUpLandRight + mLandscapeLeft + mLandscapeRight + mMute + mMuteLandLeft + mMuteLandRight + mPortrait + mPreview + mPreviewLandLeft + mPreviewLandRight + + + YES + + mCallQuality + UIImageView + + + mCallQualityLandLeft + UIImageView + + + mCallQualityLandRight + UIImageView + + + mCamSwitch + UICamSwitch + + + mCamSwitchLandLeft + UICamSwitch + + + mCamSwitchLandRight + UICamSwitch + + + mDisplay + UIView + + + mDisplayLandLeft + UIView + + + mDisplayLandRight + UIView + + + mHangUp + UIHangUpButton + + + mHangUpLandLeft + UIHangUpButton + + + mHangUpLandRight + UIHangUpButton + + + mLandscapeLeft + UIView + + + mLandscapeRight + UIView + + + mMute + UIMuteButton + + + mMuteLandLeft + UIMuteButton + + + mMuteLandRight + UIMuteButton + + + mPortrait + UIView + + + mPreview + UIView + + + mPreviewLandLeft + UIView + + + mPreviewLandRight + UIView + + + + + IBProjectSource + ./Classes/VideoViewController.h + + + + 0 IBCocoaTouchFramework @@ -1591,41 +1559,8 @@ YES 3 - YES - - YES - HP.png - HP_inverse.png - ajouter.png - clavier-01-106px.png - clavier-01-160px.png - clavier.png - contact.png - grouper.png - mic_active.png - micro.png - micro_inverse.png - pause.png - pause_inactif.png - stopcall-red.png - - - YES - {107, 67} - {107, 67} - {107, 67} - {106, 60} - {160, 60} - {106, 67} - {107, 67} - {106, 67} - {82, 82} - {107, 67} - {107, 67} - {106, 67} - {106, 67} - {62, 54} - + clavier-01-106px.png + {106, 60} 1181 diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 4d4a92006..6a95c069e 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -20,7 +20,6 @@ #import "PhoneMainView.h" #import "PhoneViewController.h" #import "linphoneAppDelegate.h" -#import "ContactPickerDelegate.h" #import "AddressBook/ABPerson.h" #import "CoreTelephony/CTCallCenter.h" diff --git a/Classes/LinphoneUI/LinphoneCallBar.h b/Classes/LinphoneUI/LinphoneCallBar.h index d216a60bc..0a4b18262 100644 --- a/Classes/LinphoneUI/LinphoneCallBar.h +++ b/Classes/LinphoneUI/LinphoneCallBar.h @@ -19,8 +19,18 @@ #import +#import "UIMicroButton.h" + @interface LinphoneCallBar : UIViewController { - + UIButton* pauseButton; + UIButton* videoButton; + UIMicroButton* microButton; + UIButton* speakerButton; } +@property (nonatomic, retain) IBOutlet UIButton* pauseButton; +@property (nonatomic, retain) IBOutlet UIButton* videoButton; +@property (nonatomic, retain) IBOutlet UIMicroButton* microButton; +@property (nonatomic, retain) IBOutlet UIButton* speakerButton; +-(IBAction) onPauseClick: (id) event; @end diff --git a/Classes/LinphoneUI/LinphoneCallBar.m b/Classes/LinphoneUI/LinphoneCallBar.m index b0868360e..41ff73d57 100644 --- a/Classes/LinphoneUI/LinphoneCallBar.m +++ b/Classes/LinphoneUI/LinphoneCallBar.m @@ -18,7 +18,135 @@ */ #import "LinphoneCallBar.h" +#import "LinphoneManager.h" + +#include "linphonecore.h" +#include "private.h" + +#define STRINGIFY(x) #x +#define TOSTRING(x) STRINGIFY(x) +#define AT __FILE__ ":" TOSTRING(__LINE__) @implementation LinphoneCallBar +@synthesize pauseButton; +@synthesize videoButton; +@synthesize microButton; +@synthesize speakerButton; + +- (void) viewDidLoad { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; +} + +bool isInConference2(LinphoneCall* call) { + if (!call) + return false; + return linphone_call_get_current_params(call)->in_conference; +} + +int callCount2(LinphoneCore* lc) { + int count = 0; + const MSList* calls = linphone_core_get_calls(lc); + + while (calls != 0) { + if (!isInConference2((LinphoneCall*)calls->data)) { + count++; + } + calls = calls->next; + } + return count; +} + +-(IBAction) onPauseClick: (id) event { + [LinphoneManager logUIElementPressed:"PAUSE button"]; + + LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* currentCall = linphone_core_get_current_call(lc); + if (currentCall) { + if (linphone_call_get_state(currentCall) == LinphoneCallStreamsRunning) { + [pauseButton setSelected:NO]; + linphone_core_pause_call(lc, currentCall); + + // hide video view + //TODO + //[self disableVideoDisplay]; + } + } else { + if (linphone_core_get_calls_nb(lc) == 1) { + LinphoneCall* c = (LinphoneCall*) linphone_core_get_calls(lc)->data; + if (linphone_call_get_state(c) == LinphoneCallPaused) { + linphone_core_resume_call(lc, c); + [pauseButton setSelected:YES]; + + const LinphoneCallParams* p = linphone_call_get_current_params(c); + if (linphone_call_params_video_enabled(p)) { + //TODO + //[self enableVideoDisplay]; + } + } + } + } +} + +- (void) callUpdate: (NSNotification*) notif { + bool fullUpdate = true; + // check LinphoneCore is initialized + LinphoneCore* lc = nil; + @try { + lc = [LinphoneManager getLc]; + } @catch (NSException* exc) { + return; + } + // 1 call: show pause button, otherwise show merge btn + [LinphoneManager set:pauseButton enabled:(callCount2(lc) == 1) withName:"PAUSE button" andReason:"call count"]; + //TODO + //[LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; + + LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]); + int callsCount = linphone_core_get_calls_nb(lc); + + // hide pause/resume if in conference + if (currentCall) { + [microButton reset]; + if (linphone_core_is_in_conference(lc)) { + [LinphoneManager set:pauseButton enabled:FALSE withName:"PAUSE button" andReason:"is in conference"]; + } + else if (callCount2(lc) == callsCount && callsCount == 1) { + [LinphoneManager set:pauseButton enabled:TRUE withName:"PAUSE button" andReason:"call count == 1"]; + pauseButton.selected = NO; + } else { + [LinphoneManager set:pauseButton enabled:FALSE withName:"PAUSE button" andReason:AT]; + } + + if (fullUpdate) { + //TODO + //videoUpdateIndicator.hidden = YES; + LinphoneCallState state = linphone_call_get_state(currentCall); + if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) { + if (linphone_call_params_video_enabled(linphone_call_get_current_params(currentCall))) { + [videoButton setSelected:TRUE]; + } else { + [videoButton setSelected:FALSE]; + } + [videoButton setEnabled:YES]; + } else { + [videoButton setEnabled:NO]; + //[videoCallQuality setImage:nil]; + } + } + } else { + if (callsCount == 1) { + LinphoneCall* c = (LinphoneCall*)linphone_core_get_calls(lc)->data; + if (linphone_call_get_state(c) == LinphoneCallPaused || + linphone_call_get_state(c) == LinphoneCallPausing) { + pauseButton.selected = YES; + } + [LinphoneManager set:pauseButton enabled:TRUE withName:"PAUSE button" andReason:AT]; + } else { + [LinphoneManager set:pauseButton enabled:FALSE withName:"PAUSE button" andReason:AT]; + } + [videoButton setEnabled:NO]; + } +} + @end diff --git a/Classes/LinphoneUI/LinphoneCallBar.xib b/Classes/LinphoneUI/LinphoneCallBar.xib index cf9e4e53b..a9dda05bd 100644 --- a/Classes/LinphoneUI/LinphoneCallBar.xib +++ b/Classes/LinphoneUI/LinphoneCallBar.xib @@ -31,17 +31,17 @@ IBFirstResponder IBCocoaTouchFramework - + 292 - - + + -2147483356 {320, 135} - + - + _NS:9 3 @@ -54,13 +54,13 @@ NO IBCocoaTouchFramework - - + + 292 {80, 67} - + - + _NS:9 NO @@ -69,7 +69,8 @@ IBCocoaTouchFramework 0 0 - + NO + 3 MQA @@ -77,7 +78,7 @@ 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + 3 MC41AA @@ -93,23 +94,23 @@ NSImage video-OFF-actif.png - + 2 15 - + Helvetica-Bold 15 16 - - + + 292 {{80, 0}, {80, 67}} - + - + _NS:9 NO @@ -118,12 +119,13 @@ IBCocoaTouchFramework 0 0 - + NO + 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + NSImage micro-ON-over.png @@ -136,16 +138,16 @@ NSImage micro-OFF-actif.png - - + + - - + + 292 {{160, 0}, {80, 67}} - + - + _NS:9 NO @@ -154,31 +156,32 @@ IBCocoaTouchFramework 0 0 - + NO + 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + NSImage speacker-ON-over.png - + NSImage speacker-OFF-actif.png - - - + + + - - + + 292 {{240, 0}, {80, 67}} - + - + _NS:9 NO @@ -187,31 +190,32 @@ IBCocoaTouchFramework 0 0 - + NO + 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + + NSImage add-call-over.png - + NSImage add-call-actif.png - - + + - - + + 264 {{0, 67}, {105, 68}} - + - + _NS:9 NO @@ -220,13 +224,14 @@ IBCocoaTouchFramework 0 0 - + NO + 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + + NSImage pause-over.png @@ -234,17 +239,17 @@ NSImage pause-actif.png - - - + + + - - + + 264 {{105, 67}, {111, 68}} - + - + _NS:9 NO @@ -253,13 +258,14 @@ IBCocoaTouchFramework 0 0 - + NO + 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + + NSImage raccrocher-over.png @@ -267,16 +273,17 @@ NSImage raccrocher-actif.png - - - + + + - - + + 264 {{215, 67}, {105, 68}} - + + _NS:9 NO @@ -285,13 +292,14 @@ IBCocoaTouchFramework 0 0 - + NO + 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + + NSImage dialer-meteo-sortir-over.png @@ -299,15 +307,15 @@ NSImage dialer-meteo-sortir-actif.png - - - + + + {320, 135} - + _NS:9 1 @@ -323,10 +331,51 @@ view - + 13 + + + pauseButton + + + + 15 + + + + speakerButton + + + + 16 + + + + videoButton + + + + 17 + + + + microButton + + + + 14 + + + + onPauseClick: + + + 7 + + 18 + @@ -349,67 +398,68 @@ 4 - + - - - - - - - - + + + + + + + + callTabBar 5 - - + + + mask 6 - - + + back 7 - - + + hangup 8 - - + + pause 9 - - + + speaker 10 - - + + addCall - 11 - - - micro + 12 + + + video - 12 - - - video + 11 + + + micro @@ -420,18 +470,22 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIMicroButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIHangUpButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -439,18 +493,104 @@ - 13 + 18 LinphoneCallBar UIViewController + + onPauseClick: + id + + + onPauseClick: + + onPauseClick: + id + + + + UIMicroButton + UIButton + UIButton + UIButton + + + + microButton + UIMicroButton + + + pauseButton + UIButton + + + speakerButton + UIButton + + + videoButton + UIButton + + IBProjectSource ./Classes/LinphoneCallBar.h + + UIHangUpButton + UIButton + + IBProjectSource + ./Classes/UIHangUpButton.h + + + + UIMicroButton + UIToggleButton + + IBProjectSource + ./Classes/UIMicroButton.h + + + + UISpeakerButton + UIToggleButton + + IBProjectSource + ./Classes/UISpeakerButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + UIToggleVideoButton + UIButton + + videoUpdateIndicator + UIActivityIndicatorView + + + videoUpdateIndicator + + videoUpdateIndicator + UIActivityIndicatorView + + + + IBProjectSource + ./Classes/UIToggleVideoButton.h + + 0 diff --git a/Classes/LinphoneUI/LinphoneMainBar.m b/Classes/LinphoneUI/LinphoneMainBar.m index a2d042cae..e3f858e21 100644 --- a/Classes/LinphoneUI/LinphoneMainBar.m +++ b/Classes/LinphoneUI/LinphoneMainBar.m @@ -63,11 +63,16 @@ - (void) viewDidUnload { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [historyButton release]; + [contactsButton release]; + [dialerButton release]; + [settingsButton release]; + [chatButton release]; } - (void) dealloc { - [super dealloc]; [[NSNotificationCenter defaultCenter] removeObserver:self]; + [super dealloc]; } - (IBAction) onHistoryClick: (id) sender { diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index fe3d26bf0..60869ddd4 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -20,9 +20,9 @@ #import #import #import -#include "linphonecore.h" #import "LogView.h" -#import "LinphoneUIDelegates.h" + +#include "linphonecore.h" typedef enum _PhoneView { PhoneView_Dialer, @@ -58,6 +58,12 @@ typedef struct _LinphoneCallAppData { int transferButtonIndex; } LinphoneCallAppData; +@interface LinphoneCallWrapper : NSObject { + @public + LinphoneCall* call; +} +- (id) initWithCall: (LinphoneCall*) call; +@end @interface LinphoneManager : NSObject { @protected @@ -66,7 +72,6 @@ typedef struct _LinphoneCallAppData { NSTimer* mIterateTimer; id mLogView; bool isbackgroundModeEnabled; - id callDelegate; UIViewController* mCurrentViewController; Connectivity connectivity; @@ -85,10 +90,9 @@ typedef struct _LinphoneCallAppData { +(LinphoneCore*) getLc; +(BOOL) runningOnIpad; +(void) set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason; ++(void) set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason; +(void) logUIElementPressed:(const char*) name; --(void) displayDialer; - -(void) registerLogView:(id) view; -(void) startLibLinphone; @@ -106,9 +110,9 @@ typedef struct _LinphoneCallAppData { -(void) refreshRegisters; -(void) changeView:(PhoneView) view; +-(void) changeView:(PhoneView) view dict:(NSDictionary *)dict; -(PhoneView) currentView; -@property (nonatomic, retain) id callDelegate; @property Connectivity connectivity; @property (readonly) const char* frontCamId; @property (readonly) const char* backCamId; diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 9a88cbe3f..3102f382f 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -49,8 +49,20 @@ extern void libmssilk_init(); #if HAVE_G729 extern void libmsbcg729_init(); #endif + +@implementation LinphoneCallWrapper + +- (id) initWithCall: (LinphoneCall*) acall { + if((self = [super init]) != nil) { + call = acall; + } + return self; +} + +@end + @implementation LinphoneManager -@synthesize callDelegate; + @synthesize connectivity; @synthesize frontCamId; @synthesize backCamId; @@ -69,16 +81,23 @@ extern void libmsbcg729_init(); } -(void) changeView:(PhoneView) view { + [self changeView:view dict:nil]; +} + +-(void) changeView:(PhoneView) view dict:(NSDictionary *)dict { currentView = view; - NSDictionary* dict = [NSDictionary dictionaryWithObject: [NSNumber numberWithInt:currentView] forKey:@"view"]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:dict]; + + NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithInt:currentView] forKey:@"view"]; + if(dict != nil) + [mdict addEntriesFromDictionary:dict]; + + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; } -(PhoneView) currentView { return currentView; } - -(NSString*) getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log { //1 normalize NSString* lNormalizedNumber = [FastAddressBook normalizePhoneNumber:number]; @@ -151,6 +170,7 @@ extern void libmsbcg729_init(); } -(void) onCall:(LinphoneCall*) call StateChanged: (LinphoneCallState) new_state withMessage: (const char *) message { + // Handling wrapper if(new_state == LinphoneCallReleased) { if(linphone_call_get_user_pointer(call) != NULL) { free (linphone_call_get_user_pointer(call)); @@ -158,85 +178,43 @@ extern void libmsbcg729_init(); } return; } - - const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); - NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); - if (new_state == LinphoneCallIncomingReceived) { - [self updateCallWithAddressBookData:call]; // display name is updated - } - const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); - NSString* lDisplayName = [lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@"" autorelease]; - - bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); - if (!linphone_call_get_user_pointer(call)) { LinphoneCallAppData* data = (LinphoneCallAppData*) malloc(sizeof(LinphoneCallAppData)); data->batteryWarningShown = FALSE; linphone_call_set_user_pointer(call, data); } - switch (new_state) { - case LinphoneCallIncomingReceived: - [callDelegate displayIncomingCall:call - NotificationFromUI:mCurrentViewController - forUser:lUserName - withDisplayName:lDisplayName]; - break; - - case LinphoneCallOutgoingInit: - [callDelegate displayCall:call - InProgressFromUI:mCurrentViewController - forUser:lUserName - withDisplayName:lDisplayName]; - break; - case LinphoneCallPausedByRemote: - case LinphoneCallConnected: - [callDelegate displayInCall: call - FromUI:mCurrentViewController - forUser:lUserName - withDisplayName:lDisplayName]; - break; - case LinphoneCallUpdatedByRemote: - { - const LinphoneCallParams* current = linphone_call_get_current_params(call); - const LinphoneCallParams* remote = linphone_call_get_remote_params(call); - - /* remote wants to add video */ - if (!linphone_call_params_video_enabled(current) && linphone_call_params_video_enabled(remote) && !linphone_core_get_video_policy(theLinphoneCore)->automatically_accept) { - linphone_core_defer_call_update(theLinphoneCore, call); - [callDelegate displayAskToEnableVideoCall:call forUser:lUserName withDisplayName:lDisplayName]; - } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { - [callDelegate displayInCall:call FromUI:mCurrentViewController forUser:lUserName withDisplayName:lDisplayName]; - } - break; - } - case LinphoneCallUpdated: - { - const LinphoneCallParams* current = linphone_call_get_current_params(call); - if (linphone_call_params_video_enabled(current)) { - [callDelegate displayVideoCall:call FromUI:mCurrentViewController forUser:lUserName withDisplayName:lDisplayName]; + if (new_state == LinphoneCallIncomingReceived) { + [self updateCallWithAddressBookData:call]; // display name is updated + } + + // Post event + NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys: + [[[LinphoneCallWrapper alloc] initWithCall: call] autorelease], @"call", + [NSNumber numberWithInt:new_state], @"state", + [[NSString stringWithFormat:@"%c", message] autorelease], @"message", + nil]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self userInfo:dict]; + + const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); + NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); + switch (new_state) { + case LinphoneCallError: { + /* + NSString* lTitle= state->message!=nil?[NSString stringWithCString:state->message length:strlen(state->message)]: @"Error"; + NSString* lMessage=lTitle; + */ + NSString* lMessage; + NSString* lTitle; + LinphoneProxyConfig* proxyCfg; + //get default proxy + linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); + if (proxyCfg == nil) { + lMessage=NSLocalizedString(@"Please make sure your device is connected to the internet and double check your SIP account configuration in the settings.",nil ); } else { - [callDelegate displayInCall:call FromUI:mCurrentViewController forUser:lUserName withDisplayName:lDisplayName]; + lMessage=[NSString stringWithFormat : NSLocalizedString(@"Cannot call %@",nil),lUserName]; } - break; - - } - case LinphoneCallError: { - /* - NSString* lTitle= state->message!=nil?[NSString stringWithCString:state->message length:strlen(state->message)]: @"Error"; - NSString* lMessage=lTitle; - */ - NSString* lMessage; - NSString* lTitle; - LinphoneProxyConfig* proxyCfg; - //get default proxy - linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); - if (proxyCfg == nil) { - lMessage=NSLocalizedString(@"Please make sure your device is connected to the internet and double check your SIP account configuration in the settings.",nil); - } else { - lMessage=[NSString stringWithFormat : NSLocalizedString(@"Cannot call %@",nil),lUserName]; - } - + if (linphone_call_get_reason(call) == LinphoneReasonNotFound) { lMessage=[NSString stringWithFormat : NSLocalizedString(@"'%@' not registered to Service",nil), lUserName]; } else { @@ -244,59 +222,20 @@ extern void libmsbcg729_init(); lMessage=[NSString stringWithFormat : NSLocalizedString(@"%@\nReason was: %s",nil),lMessage, message]; } } - lTitle=NSLocalizedString(@"Call failed",nil); - - UIAlertView* error = [[UIAlertView alloc] initWithTitle:lTitle - message:lMessage - delegate:nil - cancelButtonTitle:NSLocalizedString(@"Dismiss",nil) - otherButtonTitles:nil]; - [error show]; + lTitle=NSLocalizedString(@"Call failed",nil); + UIAlertView* error = [[UIAlertView alloc] initWithTitle:lTitle + message:lMessage + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Dismiss",nil) + otherButtonTitles:nil]; + [error show]; [error release]; - if (canHideInCallView) { - [callDelegate displayDialerFromUI:mCurrentViewController - forUser:@"" - withDisplayName:@""]; - } else { - [callDelegate displayInCall:call - FromUI:mCurrentViewController - forUser:lUserName - withDisplayName:lDisplayName]; - } - break; - } - case LinphoneCallEnd: - if (canHideInCallView) { - [callDelegate displayDialerFromUI:mCurrentViewController - forUser:@"" - withDisplayName:@""]; - } else { - [callDelegate displayInCall:call - FromUI:mCurrentViewController - forUser:lUserName - withDisplayName:lDisplayName]; - } - break; - case LinphoneCallStreamsRunning: - //check video - if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { - [callDelegate displayVideoCall:call FromUI:mCurrentViewController - forUser:lUserName - withDisplayName:lDisplayName]; - } else { - [callDelegate displayInCall:call FromUI:mCurrentViewController forUser:lUserName withDisplayName:lDisplayName]; - } - break; + break; + } default: break; - } - -} - --(void) displayDialer { - [callDelegate displayDialerFromUI:mCurrentViewController - forUser:@"" - withDisplayName:@""]; + } + } +(LinphoneCore*) getLc { @@ -306,12 +245,18 @@ extern void libmsbcg729_init(); return theLinphoneCore; } --(void) addLog:(NSString*) log { +- (void)addLog:(NSString*) log { [mLogView addLog:log]; } --(void)displayStatus:(NSString*) message { - [callDelegate displayStatus:message]; + +- (void)displayStatus:(NSString*) message { + // Post event + NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys: + message, @"message", + nil]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneDisplayStatus" object:self userInfo:dict]; } + //generic log handler for debug version static void linphone_iphone_log_handler(int lev, const char *fmt, va_list args){ NSString* format = [[NSString alloc] initWithCString:fmt encoding:[NSString defaultCStringEncoding]]; @@ -1062,6 +1007,13 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach return NO; } ++(void) set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason{ + if (view.enabled != enabled) { + ms_message("UI - '%s' is now '%s' ('%s')", name, enabled ? "ENABLED" : "DISABLED", reason); + [view setEnabled:enabled]; + } +} + +(void) set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason{ if (view.hidden != hidden) { ms_message("UI - '%s' is now '%s' ('%s')", name, hidden ? "HIDDEN" : "SHOWN", reason); diff --git a/Classes/LinphoneUI/LinphoneUIDelegates.h b/Classes/LinphoneUI/LinphoneUIDelegates.h deleted file mode 100644 index 4abdf0027..000000000 --- a/Classes/LinphoneUI/LinphoneUIDelegates.h +++ /dev/null @@ -1,34 +0,0 @@ -/* LinphoneUIControler.h - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -#import -#include "linphonecore.h" - -@protocol LinphoneUICallDelegate -// UI changes --(void) displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; --(void) displayCall: (LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; --(void) displayIncomingCall: (LinphoneCall*) call NotificationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; --(void) displayInCall: (LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; --(void) displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName; -//status reporting --(void) displayStatus:(NSString*) message; --(void) displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName; --(void) firstVideoFrameDecoded:(LinphoneCall*) call; -@end - diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h index a65b21951..e195b8d5f 100644 --- a/Classes/LinphoneUI/UILinphone.h +++ b/Classes/LinphoneUI/UILinphone.h @@ -21,10 +21,9 @@ #import "UIHangUpButton.h" #import "UIDigitButton.h" #import "UIToggleButton.h" -#import "UIMuteButton.h" +#import "UIMicroButton.h" #import "UISpeakerButton.h" #import "UIDuration.h" #import "UIEraseButton.h" -#import "LinphoneUIDelegates.h" #import "UICamSwitch.h" #import "UIPauseResumeButton.h" diff --git a/Classes/LinphoneUI/UIMuteButton.h b/Classes/LinphoneUI/UIMicroButton.h similarity index 94% rename from Classes/LinphoneUI/UIMuteButton.h rename to Classes/LinphoneUI/UIMicroButton.h index cef92d8a4..eab24d82b 100644 --- a/Classes/LinphoneUI/UIMuteButton.h +++ b/Classes/LinphoneUI/UIMicroButton.h @@ -21,7 +21,7 @@ #import "UIToggleButton.h" -@interface UIMuteButton : UIToggleButton { +@interface UIMicroButton : UIToggleButton { } diff --git a/Classes/LinphoneUI/UIMuteButton.m b/Classes/LinphoneUI/UIMicroButton.m similarity index 74% rename from Classes/LinphoneUI/UIMuteButton.m rename to Classes/LinphoneUI/UIMicroButton.m index 033d5bdb7..20b85983a 100644 --- a/Classes/LinphoneUI/UIMuteButton.m +++ b/Classes/LinphoneUI/UIMicroButton.m @@ -15,42 +15,33 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -#import "UIMuteButton.h" -#include "LinphoneManager.h" + */ +#import "UIMicroButton.h" -@implementation UIMuteButton +#import "LinphoneManager.h" +@implementation UIMicroButton - --(void) onOn { - linphone_core_mute_mic([LinphoneManager getLc], true); -} --(void) onOff { +- (void)onOn { linphone_core_mute_mic([LinphoneManager getLc], false); } --(bool) isInitialStateOn { - @try { - return true == linphone_core_is_mic_muted([LinphoneManager getLc]); - } @catch(NSException* e) { - //not ready yet - return false; - } - + +- (void)onOff { + linphone_core_mute_mic([LinphoneManager getLc], true); } -/* -// Only override drawRect: if you perform custom drawing. -// An empty implementation adversely affects performance during animation. -- (void)drawRect:(CGRect)rect { - // Drawing code. +- (bool)isInitialStateOn { + @try { + return linphone_core_is_mic_muted([LinphoneManager getLc]) == false; + } @catch(NSException* e) { + //not ready yet + return true; + } } -*/ - (void)dealloc { [super dealloc]; } - @end diff --git a/Classes/LinphoneUI/UISpeakerButton.m b/Classes/LinphoneUI/UISpeakerButton.m index 1508f4cdf..3cf561365 100644 --- a/Classes/LinphoneUI/UISpeakerButton.m +++ b/Classes/LinphoneUI/UISpeakerButton.m @@ -35,14 +35,16 @@ static void audioRouteChangeListenerCallback ( } --(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage debugName:(const char *)name{ - [super initWithOnImage:onImage offImage:offImage debugName:name]; +- (id)init { + if((self = [super init]) != nil) { - AudioSessionInitialize(NULL, NULL, NULL, NULL); - OSStatus lStatus = AudioSessionAddPropertyListener(routeChangeID, audioRouteChangeListenerCallback, self); - if (lStatus) { - ms_error ("cannot register route change handler [%ld]",lStatus); - } + AudioSessionInitialize(NULL, NULL, NULL, NULL); + OSStatus lStatus = AudioSessionAddPropertyListener(routeChangeID, audioRouteChangeListenerCallback, self); + if (lStatus) { + ms_error ("cannot register route change handler [%ld]",lStatus); + } + } + return self; } diff --git a/Classes/LinphoneUI/UIToggleButton.h b/Classes/LinphoneUI/UIToggleButton.h index 6e37990d0..50d8a6268 100644 --- a/Classes/LinphoneUI/UIToggleButton.h +++ b/Classes/LinphoneUI/UIToggleButton.h @@ -25,18 +25,9 @@ -(bool) isInitialStateOn; @end -@interface UIToggleButton : UIButton { -@private - UIImage* mOnImage; - UIImage* mOffImage; - bool mIsOn; - const char* debugName; - - +@interface UIToggleButton : UIButton { } --(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage debugName:(const char*) name; -(bool) reset; --(bool) isOn; -(bool) toggle; @end diff --git a/Classes/LinphoneUI/UIToggleButton.m b/Classes/LinphoneUI/UIToggleButton.m index c6db043e3..0c34e15f2 100644 --- a/Classes/LinphoneUI/UIToggleButton.m +++ b/Classes/LinphoneUI/UIToggleButton.m @@ -16,60 +16,55 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + #import "UIToggleButton.h" -#include "linphonecore.h" @implementation UIToggleButton --(void) touchUp:(id) sender { +- (void)touchUp:(id) sender { [self toggle]; } --(bool) isOn { - return mIsOn; -} --(bool) toggle { - ms_message("UI - Toggle button '%s' state change %d -> %d", - debugName, mIsOn, !mIsOn); - if (mIsOn) { - [self setImage:mOffImage forState:UIControlStateNormal]; - mIsOn=!mIsOn; + +- (bool)toggle { + if (self.selected) { + self.selected=!self.selected; [self onOff]; } else { - [self setImage:mOnImage forState:UIControlStateNormal]; - mIsOn=!mIsOn; + self.selected=!self.selected; [self onOn]; } - return mIsOn; - -} --(bool) reset { - mIsOn = [self isInitialStateOn]; - [self setImage:mIsOn?mOnImage:mOffImage forState:UIControlStateNormal]; - return mIsOn; + return self.selected; } --(void) initWithOnImage:(UIImage*) onImage offImage:(UIImage*) offImage debugName:(const char *)name{ - mOnImage = [onImage retain]; - mOffImage = [offImage retain]; - mIsOn=false; - debugName = name; - [self reset]; +- (bool)reset { + self.selected = [self isInitialStateOn]; + return self.selected; +} + +- (id) init { + [self reset]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; - + return self; } -/* - // Only override drawRect: if you perform custom drawing. - // An empty implementation adversely affects performance during animation. - - (void)drawRect:(CGRect)rect { - // Drawing code. - } - */ +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self init]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self init]; + } + return self; +} - (void)dealloc { [super dealloc]; - [mOffImage release]; - [mOffImage release]; } -(void) onOn { @@ -86,5 +81,4 @@ return false; } - @end diff --git a/Classes/LinphoneUI/UIToggleVideoButton.m b/Classes/LinphoneUI/UIToggleVideoButton.m index 1c96079a3..da69d7174 100644 --- a/Classes/LinphoneUI/UIToggleVideoButton.m +++ b/Classes/LinphoneUI/UIToggleVideoButton.m @@ -55,14 +55,15 @@ [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; return self; } + - (id)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; if (self) { [self init]; } return self; } + - (id)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (self) { diff --git a/Classes/MoreViewController.m b/Classes/MoreViewController.m index b2b9e4a96..b68f444a7 100644 --- a/Classes/MoreViewController.m +++ b/Classes/MoreViewController.m @@ -21,7 +21,6 @@ #include "ConsoleViewController.h" #import "LinphoneManager.h" - @implementation MoreViewController @synthesize web; @synthesize credit; @@ -29,7 +28,6 @@ @synthesize creditText; @synthesize weburi; - //Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; @@ -40,8 +38,6 @@ } - - /* // Override to allow orientations other than the default portrait orientation. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { @@ -62,16 +58,12 @@ // e.g. self.myOutlet = nil; } - - (void)dealloc { [super dealloc]; } - - -(void) enableLogView { isLogViewEnabled = true; - } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { @@ -99,9 +91,6 @@ } } - - - - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == 0) { return credit; diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index f9708a822..85e829d48 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -29,20 +29,23 @@ @private NSMutableDictionary *viewDescriptions; NSArray *views; - UIViewController *callTabBarController; + UIViewController *statusBarController; + + UIViewController *callTabBarController; UIViewController *mainTabBarController; - UIView *addCallTabBar; + UIViewController *incomingCallTabBarController; } @property (nonatomic, retain) IBOutlet UIView* statusBarView; @property (nonatomic, retain) IBOutlet UIView* contentView; @property (nonatomic, retain) IBOutlet UIView* tabBarView; -@property (nonatomic, retain) IBOutlet UIViewController* callTabBarController; @property (nonatomic, retain) IBOutlet UIViewController* statusBarController; + +@property (nonatomic, retain) IBOutlet UIViewController* callTabBarController; @property (nonatomic, retain) IBOutlet UIViewController* mainTabBarController; -@property (nonatomic, retain) IBOutlet UIView* addCallTabBar; +@property (nonatomic, retain) IBOutlet UIViewController* incomingCallTabBarController; -(void) changeView: (NSNotification*) notif; @end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index ba851eb9b..788272d0d 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -45,13 +45,14 @@ typedef enum _TabBar { @synthesize contentView; @synthesize tabBarView; -@synthesize callTabBarController; @synthesize statusBarController; -@synthesize mainTabBarController; -@synthesize addCallTabBar; -- (void) changeView: (NSNotification*) notif { - PhoneView view = [[notif.userInfo objectForKey: @"PhoneView"] intValue]; +@synthesize callTabBarController; +@synthesize mainTabBarController; +@synthesize incomingCallTabBarController; + +- (void)changeView: (NSNotification*) notif { + PhoneView view = [[notif.userInfo objectForKey: @"view"] intValue]; ViewsDescription *description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; for (UIView *view in contentView.subviews) { @@ -101,7 +102,7 @@ typedef enum _TabBar { contentView.frame = contentFrame; } --(void)viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; UIView *dumb; @@ -174,11 +175,11 @@ typedef enum _TabBar { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil]; } -- (void) viewDidUnload { +- (void)viewDidUnload { [[NSNotificationCenter defaultCenter] removeObserver:self]; } -- (void) dealloc { +- (void)dealloc { [super dealloc]; [viewDescriptions dealloc]; [statusBarView dealloc]; diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 2b2629153..9451833ab 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -161,7 +161,7 @@ 2 15 - + Helvetica-Bold 15 16 @@ -196,7 +196,7 @@ refuser-actif.png - + {320, 77} @@ -263,7 +263,7 @@ contact-actif-add-call.png - + @@ -294,7 +294,7 @@ cancel-actif.png - + @@ -327,7 +327,7 @@ - + {320, 72} @@ -352,7 +352,7 @@ IBCocoaTouchFramework NO - + NO @@ -400,14 +400,6 @@ 159 - - - addCallTabBar - - - - 164 - statusBarView @@ -436,7 +428,7 @@ callTabBarController - + 196 @@ -583,7 +575,7 @@ 194 - + callBarController @@ -682,112 +674,6 @@ LinphoneMainBar UIViewController - - YES - - YES - onChatClick: - onContactsClick: - onDialerClick: - onHistoryClick: - onSettingsClick: - - - YES - id - id - id - id - id - - - - YES - - YES - onChatClick: - onContactsClick: - onDialerClick: - onHistoryClick: - onSettingsClick: - - - YES - - onChatClick: - id - - - onContactsClick: - id - - - onDialerClick: - id - - - onHistoryClick: - id - - - onSettingsClick: - id - - - - - YES - - YES - chatButton - contactsButton - dialerButton - historyButton - settingsButton - - - YES - UIButton - UIButton - UIButton - UIButton - UIButton - - - - YES - - YES - chatButton - contactsButton - dialerButton - historyButton - settingsButton - - - YES - - chatButton - UIButton - - - contactsButton - UIButton - - - dialerButton - UIButton - - - historyButton - UIButton - - - settingsButton - UIButton - - - IBProjectSource ./Classes/LinphoneMainBar.h @@ -847,9 +733,9 @@ YES YES - addCallTabBar callTabBarController contentView + incomingCallTabBarController mainTabBarController statusBarController statusBarView @@ -857,11 +743,11 @@ YES - UIView UIViewController UIView UIViewController UIViewController + UIViewController UIView UIView @@ -870,9 +756,9 @@ YES YES - addCallTabBar callTabBarController contentView + incomingCallTabBarController mainTabBarController statusBarController statusBarView @@ -880,10 +766,6 @@ YES - - addCallTabBar - UIView - callTabBarController UIViewController @@ -892,6 +774,10 @@ contentView UIView + + incomingCallTabBarController + UIViewController + mainTabBarController UIViewController diff --git a/Classes/PhoneViewController.h b/Classes/PhoneViewController.h index 1212237fa..5c99d57be 100644 --- a/Classes/PhoneViewController.h +++ b/Classes/PhoneViewController.h @@ -28,7 +28,7 @@ @class FirstLoginViewController; -@interface PhoneViewController : UIViewController { +@interface PhoneViewController : UIViewController { @private //UI definition @@ -62,7 +62,6 @@ UIActionSheet *mIncomingCallActionSheet; FirstLoginViewController* myFirstLoginViewController; - InCallViewController* mIncallViewController; MainScreenWithVideoPreview* mMainScreenWithVideoPreview; UIButton* switchCamera; diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index 776270846..2f3feda4d 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -102,6 +102,9 @@ - (void)viewDidLoad { [super viewDidLoad]; + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; + [mDisplayName release]; mDisplayName = [UILabel alloc]; [zero initWithNumber:'0' addressField:address dtmf:false]; @@ -121,10 +124,6 @@ [erase initWithAddressField:address]; [backToCallView addTarget:self action:@selector(backToCallViewPressed) forControlEvents:UIControlEventTouchUpInside]; - if (mIncallViewController == nil) - mIncallViewController = [[InCallViewController alloc] initWithNibName:[LinphoneManager runningOnIpad]?@"InCallViewController-ipad":@"InCallViewController" - bundle:[NSBundle mainBundle]]; - /*if (statusSubViewController == nil) { statusSubViewController = [[StatusSubViewController alloc] initWithNibName:@"StatusSubViewController" bundle:[NSBundle mainBundle]]; @@ -144,6 +143,7 @@ - (void)viewDidUnload { // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; + [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (BOOL)textFieldShouldReturn:(UITextField *)theTextField { @@ -160,6 +160,107 @@ [super viewWillAppear:animated]; } +- (void)callUpdate: (NSNotification*) notif { + LinphoneCallWrapper *callWrapper = [notif.userInfo objectForKey: @"call"]; + LinphoneCall *call = callWrapper->call; + LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; + + const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); + NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); + const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); + NSString* lDisplayName = [lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@"" autorelease]; + + bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); + + switch (state) { + case LinphoneCallIncomingReceived: + [self displayIncomingCall:call + NotificationFromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + break; + + case LinphoneCallOutgoingInit: + [self displayCall:call + InProgressFromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + break; + case LinphoneCallPausedByRemote: + case LinphoneCallConnected: + [self displayInCall: call + FromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + break; + case LinphoneCallUpdatedByRemote: + { + const LinphoneCallParams* current = linphone_call_get_current_params(call); + const LinphoneCallParams* remote = linphone_call_get_remote_params(call); + + /* remote wants to add video */ + if (!linphone_call_params_video_enabled(current) && + linphone_call_params_video_enabled(remote) && + !linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) { + linphone_core_defer_call_update([LinphoneManager getLc], call); + [self displayAskToEnableVideoCall:call forUser:lUserName withDisplayName:lDisplayName]; + } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { + [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; + } + break; + } + case LinphoneCallUpdated: + { + const LinphoneCallParams* current = linphone_call_get_current_params(call); + if (linphone_call_params_video_enabled(current)) { + [self displayVideoCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; + } else { + [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; + } + break; + + } + case LinphoneCallError: { + if (canHideInCallView) { + [self displayDialerFromUI:nil + forUser:@"" + withDisplayName:@""]; + } else { + [self displayInCall:call + FromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + } + break; + } + case LinphoneCallEnd: + if (canHideInCallView) { + [self displayDialerFromUI:nil + forUser:@"" + withDisplayName:@""]; + } else { + [self displayInCall:call + FromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + } + break; + case LinphoneCallStreamsRunning: + //check video + if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { + [self displayVideoCall:call FromUI:nil + forUser:lUserName + withDisplayName:lDisplayName]; + } else { + [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; + } + break; + default: + break; + } + +} + - (void)displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { //cancel local notification, just in case @@ -186,19 +287,12 @@ //first login case, dismmis first login view [self dismissModalViewControllerAnimated:true]; }; - [mIncallViewController displayDialerFromUI:viewCtrl - forUser:username - withDisplayName:displayName]; - //[myTabBarController setSelectedIndex:DIALER_TAB_INDEX]; + [[LinphoneManager instance] changeView:PhoneView_Dialer]; [mMainScreenWithVideoPreview showPreview:YES]; } -- (void)displayStatus:(NSString*) message { - [mIncallViewController displayStatus:message]; -} - - (void)displayIncomingCall:(LinphoneCall*) call NotificationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [mMainScreenWithVideoPreview showPreview:NO]; if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] @@ -245,7 +339,7 @@ - (void)backToCallViewPressed { [UICallButton enableTransforMode:NO]; - [self presentModalViewController:(UIViewController*)mIncallViewController animated:true]; + [[LinphoneManager instance] changeView:PhoneView_InCall]; LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); @@ -261,29 +355,20 @@ - (void)displayCall: (LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [mMainScreenWithVideoPreview showPreview:NO]; - if (self.presentedViewController != (UIViewController*)mIncallViewController) { - [self presentModalViewController:(UIViewController*)mIncallViewController animated:true]; + if ([[LinphoneManager instance]currentView] != PhoneView_InCall) { + [[LinphoneManager instance] changeView:PhoneView_InCall]; } - [mIncallViewController displayCall:call InProgressFromUI:viewCtrl - forUser:username - withDisplayName:displayName]; [mMainScreenWithVideoPreview showPreview:NO]; - } - (void)displayInCall: (LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [mMainScreenWithVideoPreview showPreview:NO]; - if (self.presentedViewController != (UIViewController*)mIncallViewController && (call == 0x0 || + if ([[LinphoneManager instance]currentView] != PhoneView_InCall && (call == 0x0 || linphone_call_get_dir(call)==LinphoneCallIncoming)){ - [self presentModalViewController:(UIViewController*)mIncallViewController animated:true]; - + [[LinphoneManager instance] changeView:PhoneView_InCall]; } - [mIncallViewController displayInCall:call FromUI:viewCtrl - forUser:username - withDisplayName:displayName]; - [LinphoneManager set:callLarge hidden:YES withName:"CALL_LARGE button" andReason:__FUNCTION__]; [LinphoneManager set:switchCamera hidden:YES withName:"SWITCH_CAMERA button" andReason:__FUNCTION__]; [LinphoneManager set:callShort hidden:NO withName:"CALL_SHORT button" andReason:__FUNCTION__]; @@ -295,20 +380,14 @@ - (void)displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [mMainScreenWithVideoPreview showPreview:NO]; - [mIncallViewController displayVideoCall:call FromUI:viewCtrl - forUser:username - withDisplayName:displayName]; [mMainScreenWithVideoPreview showPreview:NO]; [self updateCallAndBackButtons]; } - (void)displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [mIncallViewController displayAskToEnableVideoCall:call forUser:username withDisplayName:displayName]; } - - - (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { if (type != CD_NEW_CALL) return; @@ -323,8 +402,9 @@ } - (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; [address dealloc]; - [ mDisplayName dealloc]; + [mDisplayName dealloc]; [dialerView dealloc]; [callShort dealloc]; [callLarge dealloc]; @@ -342,7 +422,6 @@ [zero dealloc]; [hash dealloc]; [myTabBarController release]; - [mIncallViewController release]; [super dealloc]; } @@ -371,7 +450,7 @@ } - (void)firstVideoFrameDecoded: (LinphoneCall*) call { - [mIncallViewController firstVideoFrameDecoded:call]; + // [mIncallViewController firstVideoFrameDecoded:call]; } - (IBAction)onAddContact: (id) event { diff --git a/Classes/PhoneViewController.xib b/Classes/PhoneViewController.xib index e7476dd81..87104bbe8 100644 --- a/Classes/PhoneViewController.xib +++ b/Classes/PhoneViewController.xib @@ -127,7 +127,6 @@ {{215, 0}, {105, 72}} - _NS:9 NO IBCocoaTouchFramework @@ -770,6 +769,14 @@ 186 + + + callLarge + + + + 189 + delegate @@ -1106,7 +1113,7 @@ - 188 + 189 diff --git a/Classes/VideoViewController.h b/Classes/VideoViewController.h index 7f4db8d17..b7a31603a 100644 --- a/Classes/VideoViewController.h +++ b/Classes/VideoViewController.h @@ -23,21 +23,21 @@ UIView* mPortrait; UIView* mDisplay; UIView* mPreview; - UIMuteButton* mMute; + UIMicroButton* mMute; UIHangUpButton* mHangUp; UICamSwitch* mCamSwitch; UIView* mLandscapeRight; UIView* mDisplayLandRight; UIView* mPreviewLandRight; - UIMuteButton* mMuteLandRight; + UIMicroButton* mMuteLandRight; UIHangUpButton* mHangUpLandRight; UICamSwitch* mCamSwitchLandRight; UIView* mLandscapeLeft; UIView* mDisplayLandLeft; UIView* mPreviewLandLeft; - UIMuteButton* mMuteLandLeft; + UIMicroButton* mMuteLandLeft; UIHangUpButton* mHangUpLandLeft; UICamSwitch* mCamSwitchLandLeft; BOOL isFirst; @@ -48,7 +48,7 @@ @property (nonatomic, retain) IBOutlet UIView* mPortrait; @property (nonatomic, retain) IBOutlet UIView* mDisplay; @property (nonatomic, retain) IBOutlet UIView* mPreview; -@property (nonatomic, retain) IBOutlet UIMuteButton* mMute; +@property (nonatomic, retain) IBOutlet UIMicroButton* mMute; @property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUp; @property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitch; @property (nonatomic, retain) IBOutlet UIImageView *mCallQuality; @@ -56,7 +56,7 @@ @property (nonatomic, retain) IBOutlet UIView* mLandscapeRight; @property (nonatomic, retain) IBOutlet UIView* mDisplayLandRight; @property (nonatomic, retain) IBOutlet UIView* mPreviewLandRight; -@property (nonatomic, retain) IBOutlet UIMuteButton* mMuteLandRight; +@property (nonatomic, retain) IBOutlet UIMicroButton* mMuteLandRight; @property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandRight; @property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandRight; @property (nonatomic, retain) IBOutlet UIImageView *mCallQualityLandRight; @@ -64,7 +64,7 @@ @property (nonatomic, retain) IBOutlet UIView* mLandscapeLeft; @property (nonatomic, retain) IBOutlet UIView* mDisplayLandLeft; @property (nonatomic, retain) IBOutlet UIView* mPreviewLandLeft; -@property (nonatomic, retain) IBOutlet UIMuteButton* mMuteLandLeft; +@property (nonatomic, retain) IBOutlet UIMicroButton* mMuteLandLeft; @property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandLeft; @property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandLeft; @property (retain, nonatomic) IBOutlet UIImageView *mCallQualityLandLeft; diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m index 6158c8392..f885a5513 100644 --- a/Classes/VideoViewController.m +++ b/Classes/VideoViewController.m @@ -78,9 +78,9 @@ NSTimer *callQualityRefresher; - (void)viewDidLoad { [super viewDidLoad]; - [mMute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; + /*[mMute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; [mMuteLandRight initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE2 button"]; - [mMuteLandLeft initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE3 button"]; + [mMuteLandLeft initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE3 button"];*/ [mCamSwitch setPreview:mPreview]; [mCamSwitchLandRight setPreview:mPreviewLandRight]; [mCamSwitchLandLeft setPreview:mPreviewLandLeft]; diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 11fa0066c..9b21ff9ef 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -56,8 +56,7 @@ 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; }; 2214EB7A12F846B1002A5394 /* UICallButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB7912F846B1002A5394 /* UICallButton.m */; }; 2214EB8912F84EBB002A5394 /* UIHangUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */; }; - 2214EBDA12F8558F002A5394 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBD912F8558F002A5394 /* UIToggleButton.m */; }; - 2214EBF312F86360002A5394 /* UIMuteButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMuteButton.m */; }; + 2214EBF312F86360002A5394 /* UIMicroButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMicroButton.m */; }; 2218A92512FBE1340088A667 /* FirstLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2218A92312FBE1340088A667 /* FirstLoginViewController.m */; }; 2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; }; 22226C12118197C0000CA27B /* startcall-green.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C11118197C0000CA27B /* startcall-green.png */; }; @@ -105,7 +104,6 @@ 22AA8AFE13D7125600B30535 /* libmsx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AA8AFC13D7125500B30535 /* libmsx264.a */; }; 22AA8B0113D83F6300B30535 /* UICamSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AA8B0013D83F6300B30535 /* UICamSwitch.m */; }; 22B5EFA310CE50BD00777D97 /* AddressBookUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */; }; - 22B5EFE510CE5E5800777D97 /* ContactPickerDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */; }; 22B5F03510CE6B2F00777D97 /* AddressBook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22B5F03410CE6B2F00777D97 /* AddressBook.framework */; }; 22BB1A69132FF16A005CD7AA /* UIEraseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */; }; 22C755601317E59C007BC101 /* UIBluetoothButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */; }; @@ -138,15 +136,13 @@ 22D8F144147548E2008C97DB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */; }; 22D8F146147548E2008C97DB /* PhoneViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* PhoneViewController.m */; }; - 22D8F147147548E2008C97DB /* ContactPickerDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */; }; 22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81C111C44E100B04932 /* MoreViewController.m */; }; 22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81F111C44E100B04932 /* ConsoleViewController.m */; }; 22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */; }; 22D8F14D147548E2008C97DB /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E99E12F801C200220D9C /* LinphoneManager.m */; }; 22D8F14E147548E2008C97DB /* UICallButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB7912F846B1002A5394 /* UICallButton.m */; }; 22D8F14F147548E2008C97DB /* UIHangUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */; }; - 22D8F150147548E2008C97DB /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBD912F8558F002A5394 /* UIToggleButton.m */; }; - 22D8F151147548E2008C97DB /* UIMuteButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMuteButton.m */; }; + 22D8F151147548E2008C97DB /* UIMicroButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMicroButton.m */; }; 22D8F152147548E2008C97DB /* UISpeakerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A5E12F875C600588287 /* UISpeakerButton.m */; }; 22D8F153147548E2008C97DB /* UIDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A8712F87C2000588287 /* UIDuration.m */; }; 22D8F154147548E2008C97DB /* FirstLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2218A92312FBE1340088A667 /* FirstLoginViewController.m */; }; @@ -264,6 +260,8 @@ D326483F1588950F00930C67 /* LinphoneCallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* LinphoneCallBar.m */; }; D32648401588950F00930C67 /* LinphoneCallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D326483D1588950F00930C67 /* LinphoneCallBar.xib */; }; D32648411588950F00930C67 /* LinphoneCallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D326483D1588950F00930C67 /* LinphoneCallBar.xib */; }; + D32648441588F6FC00930C67 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32648431588F6FB00930C67 /* UIToggleButton.m */; }; + D32648451588F6FC00930C67 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32648431588F6FB00930C67 /* UIToggleButton.m */; }; D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; }; D347347E1580E5F8003C7B8C /* history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history-actif.png */; }; D347347F1580E5F8003C7B8C /* history-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history-selectionne.png */; }; @@ -635,11 +633,8 @@ 2214EB8712F84EBB002A5394 /* UIHangUpButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIHangUpButton.h; sourceTree = ""; }; 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIHangUpButton.m; sourceTree = ""; }; 2214EB8A12F84FE9002A5394 /* UILinphone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILinphone.h; sourceTree = ""; }; - 2214EBD812F8558F002A5394 /* UIToggleButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIToggleButton.h; sourceTree = ""; }; - 2214EBD912F8558F002A5394 /* UIToggleButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIToggleButton.m; sourceTree = ""; }; - 2214EBF112F86360002A5394 /* UIMuteButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIMuteButton.h; sourceTree = ""; }; - 2214EBF212F86360002A5394 /* UIMuteButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMuteButton.m; sourceTree = ""; }; - 2218A5C412F9597B0088A667 /* LinphoneUIDelegates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneUIDelegates.h; sourceTree = ""; }; + 2214EBF112F86360002A5394 /* UIMicroButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIMicroButton.h; sourceTree = ""; }; + 2214EBF212F86360002A5394 /* UIMicroButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMicroButton.m; sourceTree = ""; }; 2218A5CE12F973450088A667 /* LogView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogView.h; sourceTree = ""; }; 2218A92212FBE1340088A667 /* FirstLoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstLoginViewController.h; sourceTree = ""; }; 2218A92312FBE1340088A667 /* FirstLoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirstLoginViewController.m; sourceTree = ""; }; @@ -696,8 +691,6 @@ 22AA8AFF13D83F6300B30535 /* UICamSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICamSwitch.h; sourceTree = ""; }; 22AA8B0013D83F6300B30535 /* UICamSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICamSwitch.m; sourceTree = ""; }; 22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBookUI.framework; path = System/Library/Frameworks/AddressBookUI.framework; sourceTree = SDKROOT; }; - 22B5EFE310CE5E5800777D97 /* ContactPickerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactPickerDelegate.h; sourceTree = ""; }; - 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactPickerDelegate.m; sourceTree = ""; }; 22B5F03410CE6B2F00777D97 /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; 22BB1A67132FF16A005CD7AA /* UIEraseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIEraseButton.h; sourceTree = ""; }; 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIEraseButton.m; sourceTree = ""; }; @@ -842,6 +835,8 @@ D326483B1588950F00930C67 /* LinphoneCallBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCallBar.h; sourceTree = ""; }; D326483C1588950F00930C67 /* LinphoneCallBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCallBar.m; sourceTree = ""; }; D326483D1588950F00930C67 /* LinphoneCallBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneCallBar.xib; sourceTree = ""; }; + D32648421588F6FA00930C67 /* UIToggleButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIToggleButton.h; sourceTree = ""; }; + D32648431588F6FB00930C67 /* UIToggleButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIToggleButton.m; sourceTree = ""; }; D34734791580DDF1003C7B8C /* PhoneMainView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PhoneMainView.xib; sourceTree = ""; }; D347347C1580E5F8003C7B8C /* history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-actif.png"; path = "Resources/history-actif.png"; sourceTree = ""; }; D347347D1580E5F8003C7B8C /* history-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-selectionne.png"; path = "Resources/history-selectionne.png"; sourceTree = ""; }; @@ -1074,8 +1069,6 @@ 22E0A820111C44E100B04932 /* ConsoleViewController.h */, 22E0A81F111C44E100B04932 /* ConsoleViewController.m */, 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */, - 22B5EFE310CE5E5800777D97 /* ContactPickerDelegate.h */, - 22B5EFE410CE5E5800777D97 /* ContactPickerDelegate.m */, D35497FB15875372000081D8 /* ContactsController.h */, D35497FC15875372000081D8 /* ContactsController.m */, D35497FD15875372000081D8 /* ContactsController.xib */, @@ -1342,7 +1335,6 @@ D354981E1587716B000081D8 /* LinphoneStatusBar.h */, D354981F1587716B000081D8 /* LinphoneStatusBar.m */, D35498201587716B000081D8 /* LinphoneStatusBar.xib */, - 2218A5C412F9597B0088A667 /* LinphoneUIDelegates.h */, 2218A5CE12F973450088A667 /* LogView.h */, 22C7555E1317E59C007BC101 /* UIBluetoothButton.h */, 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */, @@ -1359,12 +1351,12 @@ 2214EB8712F84EBB002A5394 /* UIHangUpButton.h */, 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */, 2214EB8A12F84FE9002A5394 /* UILinphone.h */, - 2214EBF112F86360002A5394 /* UIMuteButton.h */, - 2214EBF212F86360002A5394 /* UIMuteButton.m */, + 2214EBF112F86360002A5394 /* UIMicroButton.h */, + 2214EBF212F86360002A5394 /* UIMicroButton.m */, 22968A5D12F875C600588287 /* UISpeakerButton.h */, 22968A5E12F875C600588287 /* UISpeakerButton.m */, - 2214EBD812F8558F002A5394 /* UIToggleButton.h */, - 2214EBD912F8558F002A5394 /* UIToggleButton.m */, + D32648421588F6FA00930C67 /* UIToggleButton.h */, + D32648431588F6FB00930C67 /* UIToggleButton.m */, 340751E5150F38FC00B89C47 /* UIToggleVideoButton.h */, 340751E6150F38FD00B89C47 /* UIToggleVideoButton.m */, ); @@ -2086,15 +2078,13 @@ 1D60589B0D05DD56006BFB54 /* main.m in Sources */, 1D3623260D0F684500981E51 /* LinphoneAppDelegate.m in Sources */, 22F2508E107141E100AC9B3F /* PhoneViewController.m in Sources */, - 22B5EFE510CE5E5800777D97 /* ContactPickerDelegate.m in Sources */, 22E0A822111C44E100B04932 /* MoreViewController.m in Sources */, 22E0A824111C44E100B04932 /* ConsoleViewController.m in Sources */, 2248E90E12F7E4CF00220D9C /* UIDigitButton.m in Sources */, 2248E99F12F801C200220D9C /* LinphoneManager.m in Sources */, 2214EB7A12F846B1002A5394 /* UICallButton.m in Sources */, 2214EB8912F84EBB002A5394 /* UIHangUpButton.m in Sources */, - 2214EBDA12F8558F002A5394 /* UIToggleButton.m in Sources */, - 2214EBF312F86360002A5394 /* UIMuteButton.m in Sources */, + 2214EBF312F86360002A5394 /* UIMicroButton.m in Sources */, 22968A5F12F875C600588287 /* UISpeakerButton.m in Sources */, 22968A8812F87C2000588287 /* UIDuration.m in Sources */, 2218A92512FBE1340088A667 /* FirstLoginViewController.m in Sources */, @@ -2119,6 +2109,7 @@ D3A55FBC15877E5E003FD403 /* ContactCell.m in Sources */, D326483815887D5200930C67 /* OrderedDictionary.m in Sources */, D326483E1588950F00930C67 /* LinphoneCallBar.m in Sources */, + D32648441588F6FC00930C67 /* UIToggleButton.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2129,15 +2120,13 @@ 22D8F144147548E2008C97DB /* main.m in Sources */, 22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */, 22D8F146147548E2008C97DB /* PhoneViewController.m in Sources */, - 22D8F147147548E2008C97DB /* ContactPickerDelegate.m in Sources */, 22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */, 22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */, 22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */, 22D8F14D147548E2008C97DB /* LinphoneManager.m in Sources */, 22D8F14E147548E2008C97DB /* UICallButton.m in Sources */, 22D8F14F147548E2008C97DB /* UIHangUpButton.m in Sources */, - 22D8F150147548E2008C97DB /* UIToggleButton.m in Sources */, - 22D8F151147548E2008C97DB /* UIMuteButton.m in Sources */, + 22D8F151147548E2008C97DB /* UIMicroButton.m in Sources */, 22D8F152147548E2008C97DB /* UISpeakerButton.m in Sources */, 22D8F153147548E2008C97DB /* UIDuration.m in Sources */, 22D8F154147548E2008C97DB /* FirstLoginViewController.m in Sources */, @@ -2162,6 +2151,7 @@ D3A55FBD15877E5E003FD403 /* ContactCell.m in Sources */, D326483915887D5200930C67 /* OrderedDictionary.m in Sources */, D326483F1588950F00930C67 /* LinphoneCallBar.m in Sources */, + D32648451588F6FC00930C67 /* UIToggleButton.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From b915cdd9c6d99c8b7ef40563363067fa9f72c03f Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 14 Jun 2012 16:52:51 +0200 Subject: [PATCH 012/397] Rename classes ... split buttons enable/disable stuff Add OrderedDictionary --- Classes/CallHistoryTableViewController.m | 245 --------- Classes/ConferenceCallDetailView.m | 9 +- Classes/ConsoleViewController.h | 8 +- Classes/ConsoleViewController.m | 46 +- Classes/ContactTableViewController.h | 2 +- Classes/ContactTableViewController.m | 44 +- ...sController.h => ContactsViewController.h} | 7 +- ...sController.m => ContactsViewController.m} | 6 +- ...troller.xib => ContactsViewController.xib} | 14 +- ...troller.h => HistoryTableViewController.h} | 6 +- Classes/HistoryTableViewController.m | 133 +++++ ...ryController.h => HistoryViewController.h} | 14 +- ...ryController.m => HistoryViewController.m} | 16 +- ...ntroller.xib => HistoryViewController.xib} | 23 +- Classes/InCallViewController.h | 10 +- Classes/InCallViewController.m | 70 +-- Classes/InCallViewController.xib | 64 +-- Classes/LinphoneUI/ContactCell.xib | 195 ------- Classes/LinphoneUI/LinphoneCallBar.m | 152 ------ Classes/LinphoneUI/LinphoneManager.h | 2 +- Classes/LinphoneUI/LinphoneManager.m | 31 +- .../{LinphoneCallBar.h => UICallBar.h} | 25 +- Classes/LinphoneUI/UICallBar.m | 54 ++ .../{LinphoneCallBar.xib => UICallBar.xib} | 87 ++-- .../{ContactCell.h => UIContactCell.h} | 12 +- Classes/LinphoneUI/UIContactCell.m | 76 +++ Classes/LinphoneUI/UIContactCell.xib | 287 +++++++++++ Classes/LinphoneUI/UIHistoryCell.h | 32 ++ .../{ContactCell.m => UIHistoryCell.m} | 38 +- Classes/LinphoneUI/UIHistoryCell.xib | 282 ++++++++++ .../{LinphoneMainBar.h => UIMainBar.h} | 4 +- .../{LinphoneMainBar.m => UIMainBar.m} | 24 +- .../{LinphoneMainBar.xib => UIMainBar.xib} | 7 +- Classes/LinphoneUI/UIMicroButton.h | 4 +- Classes/LinphoneUI/UIMicroButton.m | 4 +- Classes/LinphoneUI/UIPauseButton.h | 25 + Classes/LinphoneUI/UIPauseButton.m | 106 ++++ Classes/LinphoneUI/UISpeakerButton.h | 2 +- Classes/LinphoneUI/UISpeakerButton.m | 18 +- .../{LinphoneStatusBar.h => UIStateBar.h} | 10 +- .../{LinphoneStatusBar.m => UIStateBar.m} | 28 +- .../{LinphoneStatusBar.xib => UIStateBar.xib} | 75 +-- Classes/LinphoneUI/UIToggleButton.h | 4 +- Classes/LinphoneUI/UIToggleButton.m | 8 +- Classes/LinphoneUI/UIToggleVideoButton.m | 75 --- ...{UIToggleVideoButton.h => UIVideoButton.h} | 7 +- Classes/LinphoneUI/UIVideoButton.m | 92 ++++ Classes/MainScreenWithVideoPreview.xib | 285 ++++++++++- Classes/PhoneMainView.h | 9 +- Classes/PhoneMainView.m | 62 ++- Classes/PhoneMainView.xib | 414 +++++++++++---- Classes/PhoneViewController.h | 1 + Classes/PhoneViewController.m | 1 + Classes/Utils/OrderedDictionary.h | 37 ++ Classes/Utils/OrderedDictionary.m | 170 +++++++ Classes/VideoViewController.m | 12 +- Resources/HP.png | Bin 3113 -> 0 bytes Resources/HP_inverse.png | Bin 6868 -> 0 bytes Resources/ajouter.png | Bin 2653 -> 0 bytes Resources/appel-entrant.png | Bin 0 -> 2326 bytes Resources/appel-manque.png | Bin 0 -> 2666 bytes Resources/appel-sortant.png | Bin 0 -> 2320 bytes Resources/clavier-01-106px.png | Bin 328 -> 0 bytes Resources/clavier-01-108px.png | Bin 330 -> 0 bytes Resources/clavier-01-160px.png | Bin 348 -> 0 bytes Resources/clavier.png | Bin 4259 -> 0 bytes Resources/contact.png | Bin 4547 -> 0 bytes Resources/contact_vide.png | Bin 2905 -> 0 bytes Resources/effacer.png | Bin 2180 -> 0 bytes Resources/fond-detail-numero.png | Bin 0 -> 3673 bytes Resources/grouper.png | Bin 4208 -> 0 bytes Resources/in_call.png | Bin 4087 -> 0 bytes Resources/in_call_video.png | Bin 5233 -> 0 bytes Resources/micro.png | Bin 5956 -> 0 bytes Resources/micro_inverse.png | Bin 9434 -> 0 bytes Resources/missed_call.png | Bin 4178 -> 0 bytes Resources/out_call.png | Bin 4030 -> 0 bytes Resources/out_call_video.png | Bin 5161 -> 0 bytes Resources/pause.png | Bin 2708 -> 0 bytes Resources/pause_inactif.png | Bin 6699 -> 0 bytes Resources/quality-call-0.png | Bin 0 -> 2137 bytes Resources/quality-call-1.png | Bin 0 -> 2158 bytes Resources/quality-call-2.png | Bin 0 -> 2160 bytes Resources/quality-call-3.png | Bin 0 -> 1979 bytes Resources/registration_inprogress.png | Bin 0 -> 664 bytes Resources/secured.png | Bin 838 -> 0 bytes Resources/startcall-gray.png | Bin 2111 -> 0 bytes Resources/stat_sys_signal_0.png | Bin 905 -> 0 bytes Resources/stat_sys_signal_1.png | Bin 597 -> 0 bytes Resources/stat_sys_signal_2.png | Bin 595 -> 0 bytes Resources/stat_sys_signal_3.png | Bin 594 -> 0 bytes Resources/stat_sys_signal_4.png | Bin 532 -> 0 bytes Resources/status_connected.png | Bin 0 -> 1701 bytes Resources/status_disconnected.png | Bin 0 -> 575 bytes Resources/status_error.png | Bin 0 -> 1488 bytes Resources/status_gray.png | Bin 948 -> 0 bytes Resources/status_green.png | Bin 1242 -> 0 bytes Resources/status_inprogress.png | Bin 0 -> 684 bytes Resources/status_orange.png | Bin 1252 -> 0 bytes Resources/status_red.png | Bin 1202 -> 0 bytes Resources/unverified.png | Bin 358 -> 0 bytes linphone.xcodeproj/project.pbxproj | 480 +++++++----------- 102 files changed, 2413 insertions(+), 1541 deletions(-) delete mode 100644 Classes/CallHistoryTableViewController.m rename Classes/{ContactsController.h => ContactsViewController.h} (94%) rename Classes/{ContactsController.m => ContactsViewController.m} (94%) rename Classes/{ContactsController.xib => ContactsViewController.xib} (97%) rename Classes/{CallHistoryTableViewController.h => HistoryTableViewController.h} (91%) create mode 100644 Classes/HistoryTableViewController.m rename Classes/{HistoryController.h => HistoryViewController.h} (83%) rename Classes/{HistoryController.m => HistoryViewController.m} (87%) rename Classes/{HistoryController.xib => HistoryViewController.xib} (95%) delete mode 100644 Classes/LinphoneUI/ContactCell.xib delete mode 100644 Classes/LinphoneUI/LinphoneCallBar.m rename Classes/LinphoneUI/{LinphoneCallBar.h => UICallBar.h} (65%) create mode 100644 Classes/LinphoneUI/UICallBar.m rename Classes/LinphoneUI/{LinphoneCallBar.xib => UICallBar.xib} (94%) rename Classes/LinphoneUI/{ContactCell.h => UIContactCell.h} (81%) create mode 100644 Classes/LinphoneUI/UIContactCell.m create mode 100644 Classes/LinphoneUI/UIContactCell.xib create mode 100644 Classes/LinphoneUI/UIHistoryCell.h rename Classes/LinphoneUI/{ContactCell.m => UIHistoryCell.m} (69%) create mode 100644 Classes/LinphoneUI/UIHistoryCell.xib rename Classes/LinphoneUI/{LinphoneMainBar.h => UIMainBar.h} (96%) rename Classes/LinphoneUI/{LinphoneMainBar.m => UIMainBar.m} (86%) rename Classes/LinphoneUI/{LinphoneMainBar.xib => UIMainBar.xib} (99%) create mode 100644 Classes/LinphoneUI/UIPauseButton.h create mode 100644 Classes/LinphoneUI/UIPauseButton.m rename Classes/LinphoneUI/{LinphoneStatusBar.h => UIStateBar.h} (88%) rename Classes/LinphoneUI/{LinphoneStatusBar.m => UIStateBar.m} (86%) rename Classes/LinphoneUI/{LinphoneStatusBar.xib => UIStateBar.xib} (75%) delete mode 100644 Classes/LinphoneUI/UIToggleVideoButton.m rename Classes/LinphoneUI/{UIToggleVideoButton.h => UIVideoButton.h} (91%) create mode 100644 Classes/LinphoneUI/UIVideoButton.m create mode 100644 Classes/Utils/OrderedDictionary.h create mode 100644 Classes/Utils/OrderedDictionary.m delete mode 100755 Resources/HP.png delete mode 100755 Resources/HP_inverse.png delete mode 100755 Resources/ajouter.png create mode 100644 Resources/appel-entrant.png create mode 100644 Resources/appel-manque.png create mode 100644 Resources/appel-sortant.png delete mode 100644 Resources/clavier-01-106px.png delete mode 100644 Resources/clavier-01-108px.png delete mode 100644 Resources/clavier-01-160px.png delete mode 100755 Resources/clavier.png delete mode 100755 Resources/contact.png delete mode 100755 Resources/contact_vide.png delete mode 100755 Resources/effacer.png create mode 100644 Resources/fond-detail-numero.png delete mode 100755 Resources/grouper.png delete mode 100644 Resources/in_call.png delete mode 100644 Resources/in_call_video.png delete mode 100755 Resources/micro.png delete mode 100755 Resources/micro_inverse.png delete mode 100644 Resources/missed_call.png delete mode 100644 Resources/out_call.png delete mode 100644 Resources/out_call_video.png delete mode 100755 Resources/pause.png delete mode 100755 Resources/pause_inactif.png create mode 100644 Resources/quality-call-0.png create mode 100644 Resources/quality-call-1.png create mode 100644 Resources/quality-call-2.png create mode 100644 Resources/quality-call-3.png create mode 100644 Resources/registration_inprogress.png delete mode 100644 Resources/secured.png delete mode 100644 Resources/startcall-gray.png delete mode 100644 Resources/stat_sys_signal_0.png delete mode 100644 Resources/stat_sys_signal_1.png delete mode 100644 Resources/stat_sys_signal_2.png delete mode 100644 Resources/stat_sys_signal_3.png delete mode 100644 Resources/stat_sys_signal_4.png create mode 100644 Resources/status_connected.png create mode 100644 Resources/status_disconnected.png create mode 100644 Resources/status_error.png delete mode 100644 Resources/status_gray.png delete mode 100644 Resources/status_green.png create mode 100644 Resources/status_inprogress.png delete mode 100644 Resources/status_orange.png delete mode 100644 Resources/status_red.png delete mode 100644 Resources/unverified.png diff --git a/Classes/CallHistoryTableViewController.m b/Classes/CallHistoryTableViewController.m deleted file mode 100644 index def9679e0..000000000 --- a/Classes/CallHistoryTableViewController.m +++ /dev/null @@ -1,245 +0,0 @@ -/* CallHistoryTableViewController.m - * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "CallHistoryTableViewController.h" -#import "LinphoneManager.h" - - -@implementation CallHistoryTableViewController -/* -- (id)initWithStyle:(UITableViewStyle)style { - // Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. - if (self = [super initWithStyle:style]) { - } - return self; -} -*/ -/* -- (void)viewDidLoad { - [super viewDidLoad]; -} -*/ -/* -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; -} -*/ -/* -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - -} -*/ -/* -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; -} -*/ -/* -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; -} -*/ - -/* -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} -*/ - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - - --(void) doAction:(id)sender { - linphone_core_clear_call_logs([LinphoneManager getLc]); - [self.tableView reloadData]; -} - -#pragma mark Table view methods - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; -} - - -// Customize the number of rows in the table view. -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); - return ms_list_size(logs); -} - - -// Customize the appearance of table view cells. -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - - static NSString *CellIdentifier = @"Cell"; - - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; - [cell.textLabel setTextColor:[UIColor colorWithRed:0.7 green:0.745 blue:0.78 alpha:1.0]]; - [cell.detailTextLabel setTextColor:cell.textLabel.textColor]; - } - - // Set up the cell... - LinphoneAddress* partyToDisplay; - const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); - LinphoneCallLog* callLogs = ms_list_nth_data(logs, indexPath.row) ; - - NSString *path; - if (callLogs->dir == LinphoneCallIncoming) { - if (callLogs->status == LinphoneCallSuccess) { - path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"in_call_video":@"in_call" ofType:@"png"]; - } else { - //missed call - path = [[NSBundle mainBundle] pathForResource:@"missed_call" ofType:@"png"]; - } - partyToDisplay=callLogs->from; - - } else { - path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"out_call_video":@"out_call" ofType:@"png"]; - partyToDisplay=callLogs->to; - - } - UIImage *image = [UIImage imageWithContentsOfFile:path]; - cell.imageView.image = image; - cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; - - const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):""; - const char* displayName = linphone_address_get_display_name(partyToDisplay); - - if (displayName) { - NSString* str1 = [NSString stringWithFormat:@"%s", displayName]; - [cell.textLabel setText:str1]; - NSString* str2 = [NSString stringWithFormat:@"%s"/* [%s]"*/,username/*,callLogs->start_date*/]; - [cell.detailTextLabel setText:str2]; - } else { - NSString* str1 = [NSString stringWithFormat:@"%s", username]; - [cell.textLabel setText:str1]; - [cell.detailTextLabel setText:nil]; - } - - return cell; -} - - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - // Navigation logic may go here. Create and push another view controller. - // AnotherViewController *anotherViewController = [[AnotherViewController alloc] initWithNibName:@"AnotherView" bundle:nil]; - // [self.navigationController pushViewController:anotherViewController]; - // [anotherViewController release]; - [tableView deselectRowAtIndexPath:indexPath animated:NO]; - - const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); - LinphoneCallLog* callLogs = ms_list_nth_data(logs, indexPath.row) ; - LinphoneAddress* partyToCall; - if (callLogs->dir == LinphoneCallIncoming) { - partyToCall=callLogs->from; - - } else { - partyToCall=callLogs->to; - - } - const char* username = linphone_address_get_username(partyToCall)!=0?linphone_address_get_username(partyToCall):""; - const char* displayName = linphone_address_get_display_name(partyToCall)!=0?linphone_address_get_display_name(partyToCall):""; - const char* domain = linphone_address_get_domain(partyToCall); - - LinphoneProxyConfig* proxyCfg; - linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); - - NSString* phoneNumber; - - if (proxyCfg && (strcmp(domain, linphone_proxy_config_get_domain(proxyCfg)) == 0)) { - phoneNumber = [[NSString alloc] initWithCString:username encoding:[NSString defaultCStringEncoding]]; - } else { - phoneNumber = [[NSString alloc] initWithCString:linphone_address_as_string_uri_only(partyToCall) encoding:[NSString defaultCStringEncoding]]; - } - - NSString* dispName = [[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]]; - - - [[LinphoneManager instance] changeView:PhoneView_Dialer]; - - //TODO - /*[[LinphoneManager instance].callDelegate displayDialerFromUI:self - forUser:phoneNumber - withDisplayName:dispName];*/ - [phoneNumber release]; - [dispName release]; -} - - -/* -// Override to support conditional editing of the table view. -- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { - // Return NO if you do not want the specified item to be editable. - return YES; -} -*/ - - -/* -// Override to support editing the table view. -- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { - - if (editingStyle == UITableViewCellEditingStyleDelete) { - // Delete the row from the data source - [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; - } - else if (editingStyle == UITableViewCellEditingStyleInsert) { - // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view - } -} -*/ - - -/* -// Override to support rearranging the table view. -- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { -} -*/ - - -/* -// Override to support conditional rearranging of the table view. -- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { - // Return NO if you do not want the item to be re-orderable. - return YES; -} -*/ - -- (void)dealloc { - [super dealloc]; -} - - -@end - diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index d31b9cf57..a33907976 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -18,9 +18,10 @@ */ #import "ConferenceCallDetailView.h" -#import "linphonecore.h" #import "LinphoneManager.h" -#import "IncallViewController.h" +#import "InCallViewController.h" + +#include "linphonecore.h" @implementation ConferenceCallDetailView @@ -86,8 +87,8 @@ NSTimer *callQualityRefresher; -(void) viewWillAppear:(BOOL)animated { [table reloadData]; - [mute reset]; - [speaker reset]; + [mute update]; + [speaker update]; [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; [super viewWillAppear:animated]; } diff --git a/Classes/ConsoleViewController.h b/Classes/ConsoleViewController.h index 2956112a2..5ae2f3a28 100644 --- a/Classes/ConsoleViewController.h +++ b/Classes/ConsoleViewController.h @@ -17,20 +17,18 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - #import -#import "LogView.h" +#import "LogView.h" @interface ConsoleViewController : UIViewController { UITextView* logs; UIView* logsView; - - } + -(void) doAction; + @property (nonatomic, retain) IBOutlet UITextView* logs; @property (nonatomic, retain) IBOutlet UIView* logsView; - @end diff --git a/Classes/ConsoleViewController.m b/Classes/ConsoleViewController.m index 246ced0eb..46e8c8cb4 100644 --- a/Classes/ConsoleViewController.m +++ b/Classes/ConsoleViewController.m @@ -20,25 +20,13 @@ #import "ConsoleViewController.h" - @implementation ConsoleViewController + NSMutableString* MoreViewController_logs; @synthesize logs; @synthesize logsView; -/* - // The designated initializer. Override if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad. -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) { - // Custom initialization - } - return self; -} -*/ - - -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; UIBarButtonItem* clear = [[[UIBarButtonItem alloc] @@ -48,34 +36,12 @@ NSMutableString* MoreViewController_logs; [self.navigationItem setRightBarButtonItem:clear]; } - -/* -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} -*/ - --(void) viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [logs setText:MoreViewController_logs]; } -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - - --(void) addLog:(NSString*) log { +- (void)addLog:(NSString*) log { @synchronized(self) { if (!MoreViewController_logs) { MoreViewController_logs = [[NSMutableString alloc] init]; @@ -87,7 +53,8 @@ NSMutableString* MoreViewController_logs; } } } --(void) doAction{ + +- (void)doAction{ @synchronized(self) { NSMutableString* oldString = MoreViewController_logs; MoreViewController_logs = [[NSMutableString alloc] init]; @@ -96,11 +63,8 @@ NSMutableString* MoreViewController_logs; } } - - - (void)dealloc { [super dealloc]; } - @end diff --git a/Classes/ContactTableViewController.h b/Classes/ContactTableViewController.h index 5141d7a03..97c0717e3 100644 --- a/Classes/ContactTableViewController.h +++ b/Classes/ContactTableViewController.h @@ -18,8 +18,8 @@ */ #import -#import #import + #import "OrderedDictionary.h" @interface ContactTableViewController : UITableViewController { diff --git a/Classes/ContactTableViewController.m b/Classes/ContactTableViewController.m index 03383d73b..70a8129cc 100644 --- a/Classes/ContactTableViewController.m +++ b/Classes/ContactTableViewController.m @@ -19,7 +19,7 @@ #include "ContactTableViewController.h" #import "FastAddressBook.h" -#import "ContactCell.h" +#import "UIContactCell.h" @implementation ContactTableViewController @@ -36,20 +36,25 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); for (id lPerson in lContacts) { - CFStringRef lValue = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonFirstNameProperty); - CFStringRef lLocalizedLabel = ABAddressBookCopyLocalizedLabel(lValue); - + CFStringRef lFirstName = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonFirstNameProperty); + CFStringRef lLocalizedFirstName = ABAddressBookCopyLocalizedLabel(lFirstName); + CFStringRef lLastName = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonLastNameProperty); + CFStringRef lLocalizedLastName = ABAddressBookCopyLocalizedLabel(lLastName); + NSString *name =[NSString stringWithFormat:@"%@%@", [(NSString *)lLocalizedFirstName retain], [(NSString *)lLocalizedLastName retain]]; + // Put in correct subDic - NSString *firstChar = [[(NSString *)lLocalizedLabel substringToIndex:1] uppercaseString]; + NSString *firstChar = [[name substringToIndex:1] uppercaseString]; OrderedDictionary *subDic =[lAddressBookMap objectForKey: firstChar]; if(subDic == nil) { subDic = [[OrderedDictionary alloc] init]; [lAddressBookMap insertObject:subDic forKey:firstChar selector:@selector(caseInsensitiveCompare:)]; } - [subDic insertObject:lPerson forKey:[(NSString *)lLocalizedLabel retain] selector:@selector(caseInsensitiveCompare:)]; - - if (lLocalizedLabel) CFRelease(lLocalizedLabel); - CFRelease(lValue); + [subDic insertObject:lPerson forKey:name selector:@selector(caseInsensitiveCompare:)]; + + CFRelease(lLocalizedLastName); + CFRelease(lLastName); + CFRelease(lLocalizedFirstName); + CFRelease(lFirstName); } CFRelease(lContacts); } @@ -72,14 +77,29 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - ContactCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ContactCell"]; + UIContactCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIContactCell"]; if (cell == nil) { - cell = [[ContactCell alloc] init]; + cell = [[UIContactCell alloc] init]; } OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; - [cell.label setText: (NSString *)[[subDic allKeys] objectAtIndex:[indexPath row]]]; + NSString *key = [[subDic allKeys] objectAtIndex:[indexPath row]]; + ABRecordRef record = [subDic objectForKey:key]; + + CFStringRef lFirstName = ABRecordCopyValue(record, kABPersonFirstNameProperty); + CFStringRef lLocalizedFirstName = ABAddressBookCopyLocalizedLabel(lFirstName); + CFStringRef lLastName = ABRecordCopyValue(record, kABPersonLastNameProperty); + CFStringRef lLocalizedLastName = ABAddressBookCopyLocalizedLabel(lLastName); + + [cell.firstName setText: [(NSString *)lLocalizedFirstName retain]]; + [cell.lastName setText: [(NSString *)lLocalizedLastName retain]]; + [cell update]; + + CFRelease(lLocalizedLastName); + CFRelease(lLastName); + CFRelease(lLocalizedFirstName); + CFRelease(lFirstName); return cell; } diff --git a/Classes/ContactsController.h b/Classes/ContactsViewController.h similarity index 94% rename from Classes/ContactsController.h rename to Classes/ContactsViewController.h index 2676c9d1b..f1244803b 100644 --- a/Classes/ContactsController.h +++ b/Classes/ContactsViewController.h @@ -1,4 +1,4 @@ -/* HistoryController.h +/* ContactsViewController.h * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -19,14 +19,17 @@ #import -@interface ContactsController : UIViewController { +@interface ContactsViewController : UIViewController { UITableViewController *tableController; UIButton *allButton; UIButton *linphoneButton; } + @property (nonatomic, retain) IBOutlet UITableViewController* tableController; @property (nonatomic, retain) IBOutlet UIButton* allButton; @property (nonatomic, retain) IBOutlet UIButton* linphoneButton; + -(IBAction) onAllClick: (id) event; -(IBAction) onLinphoneClick: (id) event; + @end diff --git a/Classes/ContactsController.m b/Classes/ContactsViewController.m similarity index 94% rename from Classes/ContactsController.m rename to Classes/ContactsViewController.m index 515784419..52ee33ce9 100644 --- a/Classes/ContactsController.m +++ b/Classes/ContactsViewController.m @@ -1,4 +1,4 @@ -/* HistoryController.m +/* ContactsViewController.m * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -17,11 +17,11 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#import "ContactsViewController.h" -#import "ContactsController.h" #import "AddressBook/ABPerson.h" -@implementation ContactsController +@implementation ContactsViewController @synthesize tableController; @synthesize allButton; diff --git a/Classes/ContactsController.xib b/Classes/ContactsViewController.xib similarity index 97% rename from Classes/ContactsController.xib rename to Classes/ContactsViewController.xib index 4273e7de4..6b12285d4 100644 --- a/Classes/ContactsController.xib +++ b/Classes/ContactsViewController.xib @@ -39,7 +39,7 @@ - 274 + 288 @@ -156,6 +156,7 @@ {{0, 58}, {320, 402}} + _NS:10 3 @@ -165,6 +166,10 @@ YES NO IBCocoaTouchFramework + 0.0 + 15 + 0.0 + 0.0 YES YES NO @@ -189,6 +194,7 @@ IBCocoaTouchFramework + NO 1 @@ -348,7 +354,7 @@ - ContactsController + ContactsViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -381,7 +387,7 @@ - ContactsController + ContactsViewController UIViewController id @@ -418,7 +424,7 @@ IBProjectSource - ./Classes/ContactsController.h + ./Classes/ContactsViewController.h diff --git a/Classes/CallHistoryTableViewController.h b/Classes/HistoryTableViewController.h similarity index 91% rename from Classes/CallHistoryTableViewController.h rename to Classes/HistoryTableViewController.h index 21b4abac5..990881727 100644 --- a/Classes/CallHistoryTableViewController.h +++ b/Classes/HistoryTableViewController.h @@ -1,4 +1,4 @@ -/* CallHistoryTableViewController.h +/* HistoryTableViewController.h * * Copyright (C) 2009 Belledonne Comunications, Grenoble, France * @@ -19,6 +19,8 @@ #import -@interface CallHistoryTableViewController : UITableViewController { +@interface HistoryTableViewController : UITableViewController { + } + @end diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m new file mode 100644 index 000000000..ae8fc4aae --- /dev/null +++ b/Classes/HistoryTableViewController.m @@ -0,0 +1,133 @@ +/* HistoryTableViewController.m + * + * Copyright (C) 2009 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "HistoryTableViewController.h" +#import "UIHistoryCell.h" +#import "LinphoneManager.h" + +@implementation HistoryTableViewController + +-(void) doAction:(id)sender { + linphone_core_clear_call_logs([LinphoneManager getLc]); + [self.tableView reloadData]; +} + +#pragma mark Table view methods + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); + return ms_list_size(logs); +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UIHistoryCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIHistoryCell"]; + if (cell == nil) { + cell = [[UIHistoryCell alloc] init]; + } + + // Set up the cell... + LinphoneAddress* partyToDisplay; + const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); + LinphoneCallLog* callLogs = ms_list_nth_data(logs, indexPath.row) ; + + NSString *path; + if (callLogs->dir == LinphoneCallIncoming) { + if (callLogs->status == LinphoneCallSuccess) { + path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-entrant":@"appel-entrant" ofType:@"png"]; + } else { + //missed call + path = [[NSBundle mainBundle] pathForResource:@"appel-manque" ofType:@"png"]; + } + partyToDisplay=callLogs->from; + + } else { + path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-sortant":@"appel-sortant" ofType:@"png"]; + partyToDisplay=callLogs->to; + + } + UIImage *image = [UIImage imageWithContentsOfFile:path]; + + const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):""; + + //TODO + //const char* displayName = linphone_address_get_display_name(partyToDisplay); + + [cell.displayName setText:[NSString stringWithFormat:@"%s", username]]; + cell.imageView.image = image; + + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:NO]; + + const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); + LinphoneCallLog* callLogs = ms_list_nth_data(logs, indexPath.row) ; + LinphoneAddress* partyToCall; + if (callLogs->dir == LinphoneCallIncoming) { + partyToCall=callLogs->from; + + } else { + partyToCall=callLogs->to; + + } + const char* username = linphone_address_get_username(partyToCall)!=0?linphone_address_get_username(partyToCall):""; + const char* displayName = linphone_address_get_display_name(partyToCall)!=0?linphone_address_get_display_name(partyToCall):""; + const char* domain = linphone_address_get_domain(partyToCall); + + LinphoneProxyConfig* proxyCfg; + linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); + + NSString* phoneNumber; + + if (proxyCfg && (strcmp(domain, linphone_proxy_config_get_domain(proxyCfg)) == 0)) { + phoneNumber = [[NSString alloc] initWithCString:username encoding:[NSString defaultCStringEncoding]]; + } else { + phoneNumber = [[NSString alloc] initWithCString:linphone_address_as_string_uri_only(partyToCall) encoding:[NSString defaultCStringEncoding]]; + } + + NSString* dispName = [[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]]; + + // Go to dialer view + NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys: + [[NSDictionary alloc] initWithObjectsAndKeys: + [[NSArray alloc] initWithObjects: dispName, nil] + , @"setText:", nil] + , @"mDisplayName", + [[NSDictionary alloc] initWithObjectsAndKeys: + [[NSArray alloc] initWithObjects: phoneNumber, nil] + , @"setText:", nil] + , @"address", + nil]; + [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; + + [phoneNumber release]; + [dispName release]; +} + +- (void)dealloc { + [super dealloc]; +} + +@end + diff --git a/Classes/HistoryController.h b/Classes/HistoryViewController.h similarity index 83% rename from Classes/HistoryController.h rename to Classes/HistoryViewController.h index 265f608ed..bfd90386e 100644 --- a/Classes/HistoryController.h +++ b/Classes/HistoryViewController.h @@ -1,4 +1,4 @@ -/* HistoryController.h +/* HistoryViewController.h * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -18,16 +18,20 @@ */ #import -#import "CallHistoryTableViewController.h" -@interface HistoryController : UIViewController { - CallHistoryTableViewController *tableController; +#import "HistoryTableViewController.h" + +@interface HistoryViewController : UIViewController { + HistoryTableViewController *tableController; UIButton *allButton; UIButton *missedButton; } -@property (nonatomic, retain) IBOutlet CallHistoryTableViewController* tableController; + +@property (nonatomic, retain) IBOutlet HistoryTableViewController* tableController; @property (nonatomic, retain) IBOutlet UIButton* allButton; @property (nonatomic, retain) IBOutlet UIButton* missedButton; + -(IBAction) onAllClick: (id) event; -(IBAction) onMissedClick: (id) event; + @end diff --git a/Classes/HistoryController.m b/Classes/HistoryViewController.m similarity index 87% rename from Classes/HistoryController.m rename to Classes/HistoryViewController.m index cdd746907..502827320 100644 --- a/Classes/HistoryController.m +++ b/Classes/HistoryViewController.m @@ -1,4 +1,4 @@ -/* HistoryController.m +/* HistoryViewController.m * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -17,11 +17,10 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#import "HistoryViewController.h" -#import "HistoryController.h" +@implementation HistoryViewController - -@implementation HistoryController @synthesize tableController; @synthesize allButton; @synthesize missedButton; @@ -32,8 +31,7 @@ typedef enum _HistoryView { History_MAX } HistoryView; - -- (void) changeView: (HistoryView) view { +- (void)changeView: (HistoryView) view { if(view == History_All) { allButton.selected = TRUE; } else { @@ -47,16 +45,16 @@ typedef enum _HistoryView { } } -- (void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; [self changeView: History_All]; } --(IBAction) onAllClick: (id) event { +- (IBAction)onAllClick: (id) event { [self changeView: History_All]; } --(IBAction) onMissedClick: (id) event { +- (IBAction)onMissedClick: (id) event { [self changeView: History_Missed]; } diff --git a/Classes/HistoryController.xib b/Classes/HistoryViewController.xib similarity index 95% rename from Classes/HistoryController.xib rename to Classes/HistoryViewController.xib index 3f23429e4..9fb67afc8 100644 --- a/Classes/HistoryController.xib +++ b/Classes/HistoryViewController.xib @@ -39,7 +39,7 @@ - 274 + 288 @@ -164,6 +164,10 @@ YES IBCocoaTouchFramework + 0.0 + 15 + 0.0 + 0.0 YES 1 0 @@ -186,6 +190,7 @@ IBCocoaTouchFramework + NO 1 @@ -345,12 +350,12 @@ - HistoryController + HistoryViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - CallHistoryTableViewController + HistoryTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -370,15 +375,15 @@ - CallHistoryTableViewController + HistoryTableViewController UITableViewController IBProjectSource - ./Classes/CallHistoryTableViewController.h + ./Classes/HistoryTableViewController.h - HistoryController + HistoryViewController UIViewController id @@ -397,7 +402,7 @@ UIButton UIButton - CallHistoryTableViewController + HistoryTableViewController @@ -410,12 +415,12 @@ tableController - CallHistoryTableViewController + HistoryTableViewController IBProjectSource - ./Classes/HistoryController.h + ./Classes/HistoryViewController.h diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index fa5006ced..ccb5f3779 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -23,7 +23,7 @@ #import "linphonecore.h" #import "PhoneViewController.h" #import "ConferenceCallDetailView.h" -#import "UIToggleVideoButton.h" +#import "UIVideoButton.h" #import "VideoZoomHandler.h" #include "UILinphone.h" @@ -37,11 +37,7 @@ UIButton* endCtrl; UIButton* dialer; - UIMicroButton* mute; - UIButton* pause; - UISpeakerButton* speaker; UIButton* contacts; - UIToggleVideoButton* addVideo; UITableView* callTableView; UIButton* addCall, *mergeCalls; UIButton* transfer; @@ -114,11 +110,7 @@ @property (nonatomic, retain) IBOutlet UIButton* endCtrl; @property (nonatomic, retain) IBOutlet UIButton* dialer; -@property (nonatomic, retain) IBOutlet UIButton* mute; -@property (nonatomic, retain) IBOutlet UIButton* pause; -@property (nonatomic, retain) IBOutlet UIButton* speaker; @property (nonatomic, retain) IBOutlet UIButton* contacts; -@property (nonatomic, retain) IBOutlet UIToggleVideoButton* addVideo; @property (nonatomic, retain) IBOutlet UITableView* callTableView; @property (nonatomic, retain) IBOutlet UIButton* addCall; @property (nonatomic, retain) IBOutlet UIButton* mergeCalls; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index f2de7fd9b..943341133 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -45,10 +45,7 @@ const NSInteger SECURE_BUTTON_TAG=5; @synthesize endCtrl; @synthesize close; -@synthesize mute; -@synthesize pause; @synthesize dialer; -@synthesize speaker; @synthesize contacts; @synthesize callTableView; @synthesize addCall; @@ -80,7 +77,7 @@ const NSInteger SECURE_BUTTON_TAG=5; @synthesize testVideoView; #endif -@synthesize addVideo; +//@synthesize addVideo; +(void) updateIndicator:(UIImageView*) indicator withCallQuality:(float) quality { @@ -167,12 +164,13 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.2f]; endCtrl.imageView.transform = transform; - mute.imageView.transform = transform; - speaker.imageView.transform = transform; - pause.imageView.transform = transform; + //TODO + //mute.imageView.transform = transform; + //speaker.imageView.transform = transform; + //pause.imageView.transform = transform; contacts.imageView.transform = transform; addCall.imageView.transform = transform; - addVideo.imageView.transform = transform; + //addVideo.imageView.transform = transform; dialer.imageView.transform = transform; videoCallQuality.transform = transform; [UIView commitAnimations]; @@ -310,9 +308,10 @@ void addAnimationFadeTransition(UIView* view, float duration) { /* restore buttons orientation */ endCtrl.imageView.transform = CGAffineTransformIdentity; - mute.imageView.transform = CGAffineTransformIdentity; - speaker.imageView.transform = CGAffineTransformIdentity; - pause.imageView.transform = CGAffineTransformIdentity; + //TODO + //mute.imageView.transform = CGAffineTransformIdentity; + //speaker.imageView.transform = CGAffineTransformIdentity; + //pause.imageView.transform = CGAffineTransformIdentity; contacts.imageView.transform = CGAffineTransformIdentity; addCall.imageView.transform = CGAffineTransformIdentity; dialer.imageView.transform = CGAffineTransformIdentity; @@ -334,57 +333,24 @@ void addAnimationFadeTransition(UIView* view, float duration) { return; } // 1 call: show pause button, otherwise show merge btn - [LinphoneManager set:pause hidden:(callCount(lc) > 1) withName:"PAUSE button" andReason:"call count"]; - [LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; + // [LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; // reload table (glow update + call duration) [callTableView reloadData]; LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]); - int callsCount = linphone_core_get_calls_nb(lc); // hide pause/resume if in conference if (currentCall) { - [mute reset]; - if (linphone_core_is_in_conference(lc)) { - [LinphoneManager set:pause hidden:YES withName:"PAUSE button" andReason:"is in conference"]; - } - else if (callCount(lc) == callsCount && callsCount == 1) { - [LinphoneManager set:pause hidden:NO withName:"PAUSE button" andReason:"call count == 1"]; - pause.selected = NO; - } else { - [LinphoneManager set:pause hidden:YES withName:"PAUSE button" andReason:AT]; - } - if (fullUpdate) { videoUpdateIndicator.hidden = YES; LinphoneCallState state = linphone_call_get_state(currentCall); if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) { - if (linphone_call_params_video_enabled(linphone_call_get_current_params(currentCall))) { - [addVideo setTitle:NSLocalizedString(@"-video", nil) forState:UIControlStateNormal]; - [InCallViewController updateIndicator: videoCallQuality withCallQuality:linphone_call_get_average_quality(currentCall)]; - } else { - [addVideo setTitle:NSLocalizedString(@"+video", nil) forState:UIControlStateNormal]; - } - [addVideo setEnabled:YES]; } else { - [addVideo setEnabled:NO]; [videoCallQuality setImage:nil]; } } - } else { - if (callsCount == 1) { - LinphoneCall* c = (LinphoneCall*)linphone_core_get_calls(lc)->data; - if (linphone_call_get_state(c) == LinphoneCallPaused || - linphone_call_get_state(c) == LinphoneCallPausing) { - pause.selected = YES; - } - [LinphoneManager set:pause hidden:NO withName:"PAUSE button" andReason:AT]; - } else { - [LinphoneManager set:pause hidden:YES withName:"PAUSE button" andReason:AT]; - } - [addVideo setEnabled:NO]; - } - [LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:AT]; + } + // [LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:AT]; // update conference details view if displayed if (self.presentedViewController == conferenceDetail) { @@ -464,7 +430,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [videoCameraSwitch setPreview:videoPreview]; - addVideo.videoUpdateIndicator = videoUpdateIndicator; + //addVideo.videoUpdateIndicator = videoUpdateIndicator; [transfer addTarget:self action:@selector(transferPressed) forControlEvents:UIControlEventTouchUpInside]; @@ -593,7 +559,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; [LinphoneManager set:contacts hidden:enableVideo withName:"CONTACT button" andReason:AT]; - [LinphoneManager set:addVideo hidden:!contacts.hidden withName:"ADD_VIDEO button" andReason:AT]; + //[LinphoneManager set:addVideo hidden:!contacts.hidden withName:"ADD_VIDEO button" andReason:AT]; } } } @@ -747,6 +713,12 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); } break; + } + case LinphoneCallPausing: + case LinphoneCallPaused: + { + [self disableVideoDisplay]; + break; } case LinphoneCallError: { if (canHideInCallView) { diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 9a6774b53..f8880c72f 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -185,7 +185,6 @@ {{119, 251}, {82, 52}} - NO NO @@ -1020,7 +1019,6 @@ YES addCall - addVideo callTableView close conferenceDetail @@ -1034,14 +1032,11 @@ hangUpView hash mergeCalls - mute nine one padSubView - pause seven six - speaker star testVideoView three @@ -1060,7 +1055,6 @@ YES UIButton - UIToggleVideoButton UITableView UIButton UIViewController @@ -1076,13 +1070,10 @@ UIButton UIButton UIButton - UIButton UIView UIButton UIButton UIButton - UIButton - UIButton UIView UIButton UIButton @@ -1103,7 +1094,6 @@ YES addCall - addVideo callTableView close conferenceDetail @@ -1117,14 +1107,11 @@ hangUpView hash mergeCalls - mute nine one padSubView - pause seven six - speaker star testVideoView three @@ -1146,10 +1133,6 @@ addCall UIButton - - addVideo - UIToggleVideoButton - callTableView UITableView @@ -1202,10 +1185,6 @@ mergeCalls UIButton - - mute - UIButton - nine UIButton @@ -1218,10 +1197,6 @@ padSubView UIView - - pause - UIButton - seven UIButton @@ -1230,10 +1205,6 @@ six UIButton - - speaker - UIButton - star UIButton @@ -1333,11 +1304,11 @@ - UIMuteButton + UIMicroButton UIToggleButton IBProjectSource - ./Classes/UIMuteButton.h + ./Classes/UIMicroButton.h @@ -1348,25 +1319,6 @@ ./Classes/UIToggleButton.h - - UIToggleVideoButton - UIButton - - videoUpdateIndicator - UIActivityIndicatorView - - - videoUpdateIndicator - - videoUpdateIndicator - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/UIToggleVideoButton.h - - VideoViewController UIViewController @@ -1412,9 +1364,9 @@ UIHangUpButton UIView UIView - UIMuteButton - UIMuteButton - UIMuteButton + UIMicroButton + UIMicroButton + UIMicroButton UIView UIView UIView @@ -1507,15 +1459,15 @@ mMute - UIMuteButton + UIMicroButton mMuteLandLeft - UIMuteButton + UIMicroButton mMuteLandRight - UIMuteButton + UIMicroButton mPortrait diff --git a/Classes/LinphoneUI/ContactCell.xib b/Classes/LinphoneUI/ContactCell.xib deleted file mode 100644 index 98886f8ae..000000000 --- a/Classes/LinphoneUI/ContactCell.xib +++ /dev/null @@ -1,195 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUILabel - IBUITableViewCell - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - - - 256 - - - - 274 - {{10, 0}, {310, 39}} - - - _NS:328 - NO - YES - 7 - 2 - NO - IBCocoaTouchFramework - Texte de test - - 1 - MCAwIDAAA - - - 1 - 10 - - 1 - 25 - - - Helvetica - 25 - 16 - - - - {320, 39} - - - - _NS:395 - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {320, 40} - - - - _NS:384 - IBCocoaTouchFramework - - ConferenceDetailCellIdentifier - - - - - - - - label - - - - 9 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - cell - - - 6 - - - label - - - - - ContactCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 9 - - - - - ContactCell - UITableViewCell - - label - UILabel - - - label - - label - UILabel - - - - IBProjectSource - ./Classes/ContactCell.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - 1181 - - diff --git a/Classes/LinphoneUI/LinphoneCallBar.m b/Classes/LinphoneUI/LinphoneCallBar.m deleted file mode 100644 index 41ff73d57..000000000 --- a/Classes/LinphoneUI/LinphoneCallBar.m +++ /dev/null @@ -1,152 +0,0 @@ -/* LinphoneCallBar.m - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "LinphoneCallBar.h" -#import "LinphoneManager.h" - -#include "linphonecore.h" -#include "private.h" - -#define STRINGIFY(x) #x -#define TOSTRING(x) STRINGIFY(x) -#define AT __FILE__ ":" TOSTRING(__LINE__) - -@implementation LinphoneCallBar - -@synthesize pauseButton; -@synthesize videoButton; -@synthesize microButton; -@synthesize speakerButton; - -- (void) viewDidLoad { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; -} - -bool isInConference2(LinphoneCall* call) { - if (!call) - return false; - return linphone_call_get_current_params(call)->in_conference; -} - -int callCount2(LinphoneCore* lc) { - int count = 0; - const MSList* calls = linphone_core_get_calls(lc); - - while (calls != 0) { - if (!isInConference2((LinphoneCall*)calls->data)) { - count++; - } - calls = calls->next; - } - return count; -} - --(IBAction) onPauseClick: (id) event { - [LinphoneManager logUIElementPressed:"PAUSE button"]; - - LinphoneCore* lc = [LinphoneManager getLc]; - LinphoneCall* currentCall = linphone_core_get_current_call(lc); - if (currentCall) { - if (linphone_call_get_state(currentCall) == LinphoneCallStreamsRunning) { - [pauseButton setSelected:NO]; - linphone_core_pause_call(lc, currentCall); - - // hide video view - //TODO - //[self disableVideoDisplay]; - } - } else { - if (linphone_core_get_calls_nb(lc) == 1) { - LinphoneCall* c = (LinphoneCall*) linphone_core_get_calls(lc)->data; - if (linphone_call_get_state(c) == LinphoneCallPaused) { - linphone_core_resume_call(lc, c); - [pauseButton setSelected:YES]; - - const LinphoneCallParams* p = linphone_call_get_current_params(c); - if (linphone_call_params_video_enabled(p)) { - //TODO - //[self enableVideoDisplay]; - } - } - } - } -} - -- (void) callUpdate: (NSNotification*) notif { - bool fullUpdate = true; - // check LinphoneCore is initialized - LinphoneCore* lc = nil; - @try { - lc = [LinphoneManager getLc]; - } @catch (NSException* exc) { - return; - } - // 1 call: show pause button, otherwise show merge btn - [LinphoneManager set:pauseButton enabled:(callCount2(lc) == 1) withName:"PAUSE button" andReason:"call count"]; - //TODO - //[LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; - - LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]); - int callsCount = linphone_core_get_calls_nb(lc); - - // hide pause/resume if in conference - if (currentCall) { - [microButton reset]; - if (linphone_core_is_in_conference(lc)) { - [LinphoneManager set:pauseButton enabled:FALSE withName:"PAUSE button" andReason:"is in conference"]; - } - else if (callCount2(lc) == callsCount && callsCount == 1) { - [LinphoneManager set:pauseButton enabled:TRUE withName:"PAUSE button" andReason:"call count == 1"]; - pauseButton.selected = NO; - } else { - [LinphoneManager set:pauseButton enabled:FALSE withName:"PAUSE button" andReason:AT]; - } - - if (fullUpdate) { - //TODO - //videoUpdateIndicator.hidden = YES; - LinphoneCallState state = linphone_call_get_state(currentCall); - if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) { - if (linphone_call_params_video_enabled(linphone_call_get_current_params(currentCall))) { - [videoButton setSelected:TRUE]; - } else { - [videoButton setSelected:FALSE]; - } - [videoButton setEnabled:YES]; - } else { - [videoButton setEnabled:NO]; - //[videoCallQuality setImage:nil]; - } - } - } else { - if (callsCount == 1) { - LinphoneCall* c = (LinphoneCall*)linphone_core_get_calls(lc)->data; - if (linphone_call_get_state(c) == LinphoneCallPaused || - linphone_call_get_state(c) == LinphoneCallPausing) { - pauseButton.selected = YES; - } - [LinphoneManager set:pauseButton enabled:TRUE withName:"PAUSE button" andReason:AT]; - } else { - [LinphoneManager set:pauseButton enabled:FALSE withName:"PAUSE button" andReason:AT]; - } - [videoButton setEnabled:NO]; - } -} - -@end diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index 60869ddd4..36bb3e922 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -92,7 +92,7 @@ typedef struct _LinphoneCallAppData { +(void) set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason; +(void) set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason; +(void) logUIElementPressed:(const char*) name; - ++ (void)abstractCall:(id) object dict:(NSDictionary *) dict; -(void) registerLogView:(id) view; -(void) startLibLinphone; diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 3102f382f..31655c117 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -80,21 +80,21 @@ extern void libmsbcg729_init(); return theLinphoneManager; } --(void) changeView:(PhoneView) view { +- (void)changeView:(PhoneView) view { [self changeView:view dict:nil]; } --(void) changeView:(PhoneView) view dict:(NSDictionary *)dict { +- (void)changeView:(PhoneView) view dict:(NSDictionary *)dict { currentView = view; NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithInt:currentView] forKey:@"view"]; if(dict != nil) - [mdict addEntriesFromDictionary:dict]; + [mdict setObject:dict forKey:@"args"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; } --(PhoneView) currentView { +- (PhoneView)currentView { return currentView; } @@ -1025,5 +1025,26 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach ms_message("UI - '%s' pressed", name); } - ++ (void)abstractCall:(id) object dict:(NSDictionary *) dict { + for (NSString* identifier in dict) { + if([identifier characterAtIndex:([identifier length] -1)] == ':') { + NSArray *arguments = [dict objectForKey:identifier]; + SEL selector = NSSelectorFromString(identifier); + NSMethodSignature *signature = [object methodSignatureForSelector:selector]; + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; + [invocation setTarget:object]; + [invocation setSelector:selector]; + for(int i=0; i<[arguments count]; i++) + { + id arg = [arguments objectAtIndex:i]; + [invocation setArgument:&arg atIndex:i+2]; // The first two arguments are the hidden arguments self and _cmd + } + [invocation invoke]; // Invoke the selector + } else { + NSDictionary *arguments = [dict objectForKey:identifier]; + id new_object = [object performSelector:NSSelectorFromString(identifier)]; + [LinphoneManager abstractCall:new_object dict:arguments]; + } + } +} @end diff --git a/Classes/LinphoneUI/LinphoneCallBar.h b/Classes/LinphoneUI/UICallBar.h similarity index 65% rename from Classes/LinphoneUI/LinphoneCallBar.h rename to Classes/LinphoneUI/UICallBar.h index 0a4b18262..28c0cfc14 100644 --- a/Classes/LinphoneUI/LinphoneCallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -1,4 +1,4 @@ -/* LinphoneCallBar.h +/* UICallBar.h * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -20,17 +20,20 @@ #import #import "UIMicroButton.h" +#import "UIPauseButton.h" +#import "UISpeakerButton.h" +#import "UIVideoButton.h" -@interface LinphoneCallBar : UIViewController { - UIButton* pauseButton; - UIButton* videoButton; - UIMicroButton* microButton; - UIButton* speakerButton; +@interface UICallBar: UIViewController { + UIPauseButton* pauseButton; + UIVideoButton* videoButton; + UIMicroButton* microButton; + UISpeakerButton* speakerButton; } -@property (nonatomic, retain) IBOutlet UIButton* pauseButton; -@property (nonatomic, retain) IBOutlet UIButton* videoButton; -@property (nonatomic, retain) IBOutlet UIMicroButton* microButton; -@property (nonatomic, retain) IBOutlet UIButton* speakerButton; --(IBAction) onPauseClick: (id) event; +@property (nonatomic, retain) IBOutlet UIPauseButton* pauseButton; +@property (nonatomic, retain) IBOutlet UIVideoButton* videoButton; +@property (nonatomic, retain) IBOutlet UIMicroButton* microButton; +@property (nonatomic, retain) IBOutlet UISpeakerButton* speakerButton; + @end diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m new file mode 100644 index 000000000..0171dfccf --- /dev/null +++ b/Classes/LinphoneUI/UICallBar.m @@ -0,0 +1,54 @@ +/* UICallBar.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UICallBar.h" +#import "LinphoneManager.h" + +#include "linphonecore.h" +#include "private.h" + +@implementation UICallBar + +@synthesize pauseButton; +@synthesize videoButton; +@synthesize microButton; +@synthesize speakerButton; + +- (void)viewDidLoad { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; +} + +- (void)callUpdate: (NSNotification*) notif { + // check LinphoneCore is initialized + LinphoneCore* lc = nil; + @try { + lc = [LinphoneManager getLc]; + } @catch (NSException* exc) { + return; + } + + //TODO + //[LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; + + [microButton update]; + [pauseButton update]; + [videoButton update]; +} + +@end diff --git a/Classes/LinphoneUI/LinphoneCallBar.xib b/Classes/LinphoneUI/UICallBar.xib similarity index 94% rename from Classes/LinphoneUI/LinphoneCallBar.xib rename to Classes/LinphoneUI/UICallBar.xib index a9dda05bd..2b55621c8 100644 --- a/Classes/LinphoneUI/LinphoneCallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -167,11 +167,14 @@ NSImage speacker-ON-over.png - + + NSImage + speacker-ON-actif.png + + NSImage speacker-OFF-actif.png - @@ -343,14 +346,6 @@ 15 - - - speakerButton - - - - 16 - videoButton @@ -368,13 +363,12 @@ 14 - - onPauseClick: - - - 7 + + speakerButton + + - 18 + 16 @@ -437,12 +431,6 @@ pause - - 9 - - - speaker - 10 @@ -461,10 +449,16 @@ micro + + 9 + + + speaker + - LinphoneCallBar + UICallBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -473,7 +467,7 @@ UIMicroButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIToggleVideoButton + UIVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -483,11 +477,12 @@ UIHangUpButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIPauseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + @@ -498,24 +493,13 @@ - LinphoneCallBar + UICallBar UIViewController - - onPauseClick: - id - - - onPauseClick: - - onPauseClick: - id - - UIMicroButton - UIButton - UIButton - UIButton + UIPauseButton + UISpeakerButton + UIVideoButton @@ -524,20 +508,20 @@ pauseButton - UIButton + UIPauseButton speakerButton - UIButton + UISpeakerButton videoButton - UIButton + UIVideoButton IBProjectSource - ./Classes/LinphoneCallBar.h + ./Classes/UICallBar.h @@ -556,6 +540,14 @@ ./Classes/UIMicroButton.h + + UIPauseButton + UIToggleButton + + IBProjectSource + ./Classes/UIPauseButton.h + + UISpeakerButton UIToggleButton @@ -573,8 +565,8 @@ - UIToggleVideoButton - UIButton + UIVideoButton + UIToggleButton videoUpdateIndicator UIActivityIndicatorView @@ -588,7 +580,7 @@ IBProjectSource - ./Classes/UIToggleVideoButton.h + ./Classes/UIVideoButton.h @@ -614,6 +606,7 @@ {222, 136} {222, 136} {160, 134} + {160, 134} {160, 134} {160, 134} {160, 134} diff --git a/Classes/LinphoneUI/ContactCell.h b/Classes/LinphoneUI/UIContactCell.h similarity index 81% rename from Classes/LinphoneUI/ContactCell.h rename to Classes/LinphoneUI/UIContactCell.h index fafb4d8cd..4990ce768 100644 --- a/Classes/LinphoneUI/ContactCell.h +++ b/Classes/LinphoneUI/UIContactCell.h @@ -1,4 +1,4 @@ -/* ContactCell.h +/* UIContactCell.h * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -19,9 +19,13 @@ #import -@interface ContactCell : UITableViewCell { - UILabel *label; +@interface UIContactCell : UITableViewCell { + UILabel *firstName; + UILabel *lastName; } -@property (nonatomic, retain) IBOutlet UILabel* label; +@property (nonatomic, retain) IBOutlet UILabel* firstName; +@property (nonatomic, retain) IBOutlet UILabel* lastName; + +- (void) update; @end diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m new file mode 100644 index 000000000..ea8980070 --- /dev/null +++ b/Classes/LinphoneUI/UIContactCell.m @@ -0,0 +1,76 @@ +/* UIContactCell.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIContactCell.h" + +@implementation UIContactCell + +@synthesize firstName; +@synthesize lastName; + +- (id)init { + if ((self = [super init]) != nil) { + NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIContactCell" + owner:self + options:nil]; + + if ([arrayOfViews count] >= 1) { + [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; + } + } + return self; +} + +- (void)touchUp:(id) sender { + [self setHighlighted:true animated:true]; +} + +- (void)touchDown:(id) sender { + [self setHighlighted:false animated:true]; +} + +- (void) update { + CGRect firstNameFrame = [firstName frame]; + CGRect lastNameFrame = [lastName frame]; + + lastNameFrame.origin.x -= firstNameFrame.size.width; + + // Compute firstName size + CGSize contraints; + contraints.height = [firstName frame].size.height; + contraints.width = ([lastName frame].size.width + [lastName frame].origin.x) - [firstName frame].origin.x; + CGSize firstNameSize = [[firstName text] sizeWithFont:[firstName font] constrainedToSize: contraints]; + firstNameFrame.size.width = firstNameSize.width; + + // Compute lastName size & position + lastNameFrame.origin.x += firstNameFrame.size.width; + lastNameFrame.size.width = (contraints.width + [firstName frame].origin.x) - lastNameFrame.origin.x; + + [firstName setFrame: firstNameFrame]; + [lastName setFrame: lastNameFrame]; +} + +- (void) dealloc { + [firstName release]; + [lastName release]; + + [super dealloc]; +} + +@end diff --git a/Classes/LinphoneUI/UIContactCell.xib b/Classes/LinphoneUI/UIContactCell.xib new file mode 100644 index 000000000..8544ad63c --- /dev/null +++ b/Classes/LinphoneUI/UIContactCell.xib @@ -0,0 +1,287 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUIView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 292 + {320, 44} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 274 + {{10, 0}, {55, 44}} + + + + _NS:328 + NO + YES + 7 + 2 + NO + + Firstname + + IBCocoaTouchFramework + John + + 1 + MCAwIDAAA + + + 1 + 10 + + 1 + 25 + + + Helvetica + 25 + 16 + + NO + + + + 274 + {{75, 0}, {200, 44}} + + + + _NS:328 + NO + YES + 7 + 2 + NO + + Lastname + + IBCocoaTouchFramework + Doe + + + 1 + 10 + + 2 + 25 + + + Helvetica-Bold + 25 + 16 + + NO + + + {320, 44} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + + + + backgroundView + + + + 15 + + + + firstName + + + + 11 + + + + lastName + + + + 12 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 16 + + + + + + + + + + 14 + + + background + + + 6 + + + firstName + + + 10 + + + lastName + + + + + UIContactCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 16 + + + + + UIContactCell + UITableViewCell + + UILabel + UILabel + + + + firstName + UILabel + + + lastName + UILabel + + + + IBProjectSource + ./Classes/UIContactCell.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + 1181 + + diff --git a/Classes/LinphoneUI/UIHistoryCell.h b/Classes/LinphoneUI/UIHistoryCell.h new file mode 100644 index 000000000..9af692820 --- /dev/null +++ b/Classes/LinphoneUI/UIHistoryCell.h @@ -0,0 +1,32 @@ +/* UIHistoryCell.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface UIHistoryCell : UITableViewCell { + UIImageView* imageView; + UILabel* displayName; +} + +@property (nonatomic, retain) IBOutlet UIImageView* imageView; +@property (nonatomic, retain) IBOutlet UILabel* displayName; + +-(IBAction) onDetails: (id) event; + +@end diff --git a/Classes/LinphoneUI/ContactCell.m b/Classes/LinphoneUI/UIHistoryCell.m similarity index 69% rename from Classes/LinphoneUI/ContactCell.m rename to Classes/LinphoneUI/UIHistoryCell.m index cbc0288b0..98924d8c6 100644 --- a/Classes/LinphoneUI/ContactCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -1,4 +1,4 @@ -/* ContactCell.m +/* UIHistoryCell.m * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -15,23 +15,37 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ + */ -#import "ContactCell.h" +#import "UIHistoryCell.h" -@implementation ContactCell +@implementation UIHistoryCell -@synthesize label; -- (id) init { - if((self = [super init]) != nil) { - NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"ContactCell" - owner:self - options:nil]; - - if ([arrayOfViews count] >= 1){ +@synthesize displayName; +@synthesize imageView; + +- (id)init { + if ((self = [super init]) != nil) { + NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIHistoryCell" + owner:self + options:nil]; + + if ([arrayOfViews count] >= 1) { [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; } } return self; } + +-(IBAction) onDetails: (id) event { + +} + +- (void) dealloc { + [displayName release]; + [imageView release]; + + [super dealloc]; +} + @end diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib new file mode 100644 index 000000000..50980973a --- /dev/null +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -0,0 +1,282 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUIImageView + IBUIView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 292 + {{10, 8}, {27, 27}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + + + 274 + {{45, 0}, {236, 44}} + + + + _NS:328 + NO + YES + 7 + 2 + NO + + Firstname + + IBCocoaTouchFramework + John + + 1 + MCAwIDAAA + + + 1 + 10 + + 1 + 25 + + + Helvetica + 25 + 16 + + NO + + + + 292 + {{289, 11}, {22, 22}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + bouton-detail-contact-over.png + + + NSImage + bouton-detail-contact-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + {320, 44} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + + + + imageView + + + + 11 + + + + displayName + + + + 8 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 12 + + + + + + + + + + 6 + + + imageView + + + 5 + + + firstName + + + 7 + + + details + + + + + UIHistoryCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 12 + + + + + UIHistoryCell + UITableViewCell + + onDetails: + id + + + onDetails: + + onDetails: + id + + + + UILabel + UIImageView + + + + displayName + UILabel + + + imageView + UIImageView + + + + IBProjectSource + ./Classes/UIHistoryCell.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {45, 45} + {45, 45} + + 1181 + + diff --git a/Classes/LinphoneUI/LinphoneMainBar.h b/Classes/LinphoneUI/UIMainBar.h similarity index 96% rename from Classes/LinphoneUI/LinphoneMainBar.h rename to Classes/LinphoneUI/UIMainBar.h index a059fa8a8..efb58843e 100644 --- a/Classes/LinphoneUI/LinphoneMainBar.h +++ b/Classes/LinphoneUI/UIMainBar.h @@ -1,4 +1,4 @@ -/* LinphoneMainBar.m +/* UIMainBar.m * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -19,7 +19,7 @@ #import -@interface LinphoneMainBar : UIViewController { +@interface UIMainBar : UIViewController { UIButton *historyButton; UIButton *contactsButton; UIButton *dialerButton; diff --git a/Classes/LinphoneUI/LinphoneMainBar.m b/Classes/LinphoneUI/UIMainBar.m similarity index 86% rename from Classes/LinphoneUI/LinphoneMainBar.m rename to Classes/LinphoneUI/UIMainBar.m index e3f858e21..32f84cbe1 100644 --- a/Classes/LinphoneUI/LinphoneMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -1,4 +1,4 @@ -/* LinphoneMainBar.m +/* UIMainBar.m * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -17,10 +17,10 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import "LinphoneMainBar.h" +#import "UIMainBar.h" #import "PhoneMainView.h" -@implementation LinphoneMainBar +@implementation UIMainBar @synthesize historyButton; @synthesize contactsButton; @@ -28,11 +28,11 @@ @synthesize settingsButton; @synthesize chatButton; -- (void) viewDidLoad { +- (void)viewDidLoad { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveLinphoneMainViewChangeEvent:) name:@"LinphoneMainViewChange" object:nil]; } -- (void) receiveLinphoneMainViewChangeEvent: (NSNotification*) notif { +- (void)receiveLinphoneMainViewChangeEvent: (NSNotification*) notif { PhoneView view = [[notif.userInfo objectForKey: @"view"] intValue]; if(view == PhoneView_History) { historyButton.selected = TRUE; @@ -61,7 +61,7 @@ } } -- (void) viewDidUnload { +- (void)viewDidUnload { [[NSNotificationCenter defaultCenter] removeObserver:self]; [historyButton release]; [contactsButton release]; @@ -70,28 +70,28 @@ [chatButton release]; } -- (void) dealloc { +- (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; } -- (IBAction) onHistoryClick: (id) sender { +- (IBAction)onHistoryClick: (id) sender { [[LinphoneManager instance] changeView:PhoneView_History]; } --(IBAction) onContactsClick: (id) event { +- (IBAction)onContactsClick: (id) event { [[LinphoneManager instance] changeView:PhoneView_Contacts]; } --(IBAction) onDialerClick: (id) event { +- (IBAction)onDialerClick: (id) event { [[LinphoneManager instance] changeView:PhoneView_Dialer]; } --(IBAction) onSettingsClick: (id) event { +- (IBAction)onSettingsClick: (id) event { [[LinphoneManager instance] changeView:PhoneView_Settings]; } --(IBAction) onChatClick: (id) event { +- (IBAction)onChatClick: (id) event { [[LinphoneManager instance] changeView:PhoneView_Chat]; } diff --git a/Classes/LinphoneUI/LinphoneMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib similarity index 99% rename from Classes/LinphoneUI/LinphoneMainBar.xib rename to Classes/LinphoneUI/UIMainBar.xib index e22c6d913..bdd3c6dba 100644 --- a/Classes/LinphoneUI/LinphoneMainBar.xib +++ b/Classes/LinphoneUI/UIMainBar.xib @@ -212,6 +212,7 @@ {{256, 0}, {64, 72}} + _NS:9 NO @@ -424,7 +425,7 @@ - LinphoneMainBar + UIMainBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -451,7 +452,7 @@ - LinphoneMainBar + UIMainBar UIViewController id @@ -513,7 +514,7 @@ IBProjectSource - ./Classes/LinphoneMainBar.h + ./Classes/UIMainBar.h diff --git a/Classes/LinphoneUI/UIMicroButton.h b/Classes/LinphoneUI/UIMicroButton.h index eab24d82b..40a208b0f 100644 --- a/Classes/LinphoneUI/UIMicroButton.h +++ b/Classes/LinphoneUI/UIMicroButton.h @@ -1,4 +1,4 @@ -/* UIMuteButton.h +/* UIMicroButton.h * * Copyright (C) 2011 Belledonne Comunications, Grenoble, France * @@ -18,8 +18,8 @@ */ #import -#import "UIToggleButton.h" +#import "UIToggleButton.h" @interface UIMicroButton : UIToggleButton { diff --git a/Classes/LinphoneUI/UIMicroButton.m b/Classes/LinphoneUI/UIMicroButton.m index 20b85983a..1238d0580 100644 --- a/Classes/LinphoneUI/UIMicroButton.m +++ b/Classes/LinphoneUI/UIMicroButton.m @@ -1,4 +1,4 @@ -/* UIMuteButton.m +/* UIMicroButton.m * * Copyright (C) 2011 Belledonne Comunications, Grenoble, France * @@ -31,7 +31,7 @@ linphone_core_mute_mic([LinphoneManager getLc], true); } -- (bool)isInitialStateOn { +- (bool)onUpdate { @try { return linphone_core_is_mic_muted([LinphoneManager getLc]) == false; } @catch(NSException* e) { diff --git a/Classes/LinphoneUI/UIPauseButton.h b/Classes/LinphoneUI/UIPauseButton.h new file mode 100644 index 000000000..963378287 --- /dev/null +++ b/Classes/LinphoneUI/UIPauseButton.h @@ -0,0 +1,25 @@ +/* UIPauseButton.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIToggleButton.h" + +@interface UIPauseButton : UIToggleButton { + +} +@end diff --git a/Classes/LinphoneUI/UIPauseButton.m b/Classes/LinphoneUI/UIPauseButton.m new file mode 100644 index 000000000..b271839ef --- /dev/null +++ b/Classes/LinphoneUI/UIPauseButton.m @@ -0,0 +1,106 @@ +/* UIPauseButton.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIPauseButton.h" +#import "LinphoneManager.h" + +#include "linphonecore.h" +#include "private.h" + +@implementation UIPauseButton + +- (void)onOn { + LinphoneCall* currentCall = [UIPauseButton getCall]; + if (currentCall != nil) { + linphone_core_pause_call([LinphoneManager getLc], currentCall); + } +} + +- (void)onOff { + LinphoneCall* currentCall = [UIPauseButton getCall]; + if (currentCall != nil) { + linphone_core_resume_call([LinphoneManager getLc], currentCall); + } +} + ++ (bool)isInConference: (LinphoneCall*) call { + if (!call) + return false; + return linphone_call_get_current_params(call)->in_conference; +} + ++ (int)notInConferenceCallCount: (LinphoneCore*) lc { + int count = 0; + const MSList* calls = linphone_core_get_calls(lc); + + while (calls != 0) { + if (![UIPauseButton isInConference: (LinphoneCall*)calls->data]) { + count++; + } + calls = calls->next; + } + return count; +} + +- (bool)onUpdate { + // TODO: disable pause on not running call + @try { + bool ret = false; + LinphoneCall* currentCall = [UIPauseButton getCall]; + if (currentCall != nil) { + LinphoneCallState state = linphone_call_get_state(currentCall); + if(state == LinphoneCallPaused || state == LinphoneCallPausing) { + ret = true; + } + } + LinphoneCore* lc = [LinphoneManager getLc]; + int callsCount = linphone_core_get_calls_nb(lc); + + if (currentCall) { + if (linphone_core_is_in_conference(lc)) { + [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:"is in conference"]; + } else if ([UIPauseButton notInConferenceCallCount: lc] == callsCount && callsCount == 1) { + [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:"call count == 1"]; + } else { + [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; + } + } else { + [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; + } + return ret; + } @catch(NSException* e) { + //not ready yet + return false; + } +} + ++ (LinphoneCall*)getCall { + LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* currentCall = linphone_core_get_current_call(lc); + if (currentCall == nil && linphone_core_get_calls_nb(lc) == 1) { + currentCall = (LinphoneCall*) linphone_core_get_calls(lc)->data; + } + return currentCall; +} + +- (void)dealloc { + [super dealloc]; +} + +@end diff --git a/Classes/LinphoneUI/UISpeakerButton.h b/Classes/LinphoneUI/UISpeakerButton.h index fb64c3e1f..02e723c84 100644 --- a/Classes/LinphoneUI/UISpeakerButton.h +++ b/Classes/LinphoneUI/UISpeakerButton.h @@ -18,8 +18,8 @@ */ #import -#import "UIToggleButton.h" +#import "UIToggleButton.h" @interface UISpeakerButton : UIToggleButton { diff --git a/Classes/LinphoneUI/UISpeakerButton.m b/Classes/LinphoneUI/UISpeakerButton.m index 3cf561365..6665fb799 100644 --- a/Classes/LinphoneUI/UISpeakerButton.m +++ b/Classes/LinphoneUI/UISpeakerButton.m @@ -31,7 +31,7 @@ static void audioRouteChangeListenerCallback ( const void *inPropertyValue // 4 ) { if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return; // 5 - [(UISpeakerButton*)inUserData reset]; + [(UISpeakerButton*)inUserData update]; } @@ -48,7 +48,7 @@ static void audioRouteChangeListenerCallback ( } --(void) onOn { +- (void)onOn { //redirect audio to speaker UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute @@ -56,13 +56,13 @@ static void audioRouteChangeListenerCallback ( , &audioRouteOverride); } --(void) onOff { +- (void)onOff { UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None; AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute , sizeof (audioRouteOverride) , &audioRouteOverride); } --(bool) isInitialStateOn { +- (bool)onUpdate { CFStringRef lNewRoute=CFSTR("Unknown"); UInt32 lNewRouteSize = sizeof(lNewRoute); OSStatus lStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute @@ -78,15 +78,6 @@ static void audioRouteChangeListenerCallback ( return false; } - -/* - // Only override drawRect: if you perform custom drawing. - // An empty implementation adversely affects performance during animation. - - (void)drawRect:(CGRect)rect { - // Drawing code. - } - */ - - (void)dealloc { OSStatus lStatus = AudioSessionRemovePropertyListenerWithUserData(routeChangeID, audioRouteChangeListenerCallback, self); if (lStatus) { @@ -95,5 +86,4 @@ static void audioRouteChangeListenerCallback ( [super dealloc]; } - @end diff --git a/Classes/LinphoneUI/LinphoneStatusBar.h b/Classes/LinphoneUI/UIStateBar.h similarity index 88% rename from Classes/LinphoneUI/LinphoneStatusBar.h rename to Classes/LinphoneUI/UIStateBar.h index bbd2d02c2..33a4a9ca5 100644 --- a/Classes/LinphoneUI/LinphoneStatusBar.h +++ b/Classes/LinphoneUI/UIStateBar.h @@ -1,6 +1,6 @@ -/* StatusSubViewController.h +/* UIStateBar.h * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -16,10 +16,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import -#include "linphonecore.h" -@interface LinphoneStatusBar : UIViewController { +#import + +@interface UIStateBar : UIViewController { UIImageView* image; UIActivityIndicatorView* spinner; UILabel* label; diff --git a/Classes/LinphoneUI/LinphoneStatusBar.m b/Classes/LinphoneUI/UIStateBar.m similarity index 86% rename from Classes/LinphoneUI/LinphoneStatusBar.m rename to Classes/LinphoneUI/UIStateBar.m index 472202c9f..22059760b 100644 --- a/Classes/LinphoneUI/LinphoneStatusBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -1,6 +1,6 @@ -/* StatusSubViewController.h +/* UIStateBar.m * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -17,25 +17,25 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import "LinphoneStatusBar.h" +#import "UIStateBar.h" #import "LinphoneManager.h" -@implementation LinphoneStatusBar +#include "linphonecore.h" + +@implementation UIStateBar @synthesize image; @synthesize spinner; @synthesize label; -- (void)viewDidLoad -{ +- (void)viewDidLoad { [super viewDidLoad]; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) name:@"LinphoneRegistrationUpdate" object:nil]; } -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait); } @@ -76,22 +76,22 @@ [label setText:message != nil ? message : NSLocalizedString(@"No SIP account defined", nil)];*/ case LinphoneRegistrationFailed: image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_red.png"]]; + [image setImage:[UIImage imageNamed:@"status_error.png"]]; [spinner stopAnimating]; [label setText:message]; case LinphoneRegistrationNone: image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_gray.png"]]; + [image setImage:[UIImage imageNamed:@"status_disconnected.png"]]; [spinner stopAnimating]; [label setText:message]; case LinphoneRegistrationProgress: - image.hidden = YES; - spinner.hidden = NO; - [spinner startAnimating]; + image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_inprogress.png"]]; + [spinner stopAnimating]; [label setText:message]; case LinphoneRegistrationOk: image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_green.png"]]; + [image setImage:[UIImage imageNamed:@"status_connected.png"]]; [spinner stopAnimating]; [label setText:message]; } diff --git a/Classes/LinphoneUI/LinphoneStatusBar.xib b/Classes/LinphoneUI/UIStateBar.xib similarity index 75% rename from Classes/LinphoneUI/LinphoneStatusBar.xib rename to Classes/LinphoneUI/UIStateBar.xib index 11c18af81..013370200 100644 --- a/Classes/LinphoneUI/LinphoneStatusBar.xib +++ b/Classes/LinphoneUI/UIStateBar.xib @@ -12,7 +12,6 @@ IBUIImageView - IBUIActivityIndicatorView IBUIView IBUILabel IBProxyObject @@ -43,7 +42,7 @@ {320, 23} - + _NS:9 NO IBCocoaTouchFramework @@ -55,10 +54,10 @@ -2147483356 - {{0, -1}, {25, 23}} + {{6, 6}, {10, 10}} - + _NS:567 NO IBCocoaTouchFramework @@ -67,22 +66,10 @@ status_gray.png - - - -2147483356 - {{0, 1}, {20, 20}} - - - - _NS:1030 - NO - IBCocoaTouchFramework - 2 - -2147483356 - {{28, 0}, {280, 21}} + {{22, 0}, {298, 20}} @@ -114,7 +101,7 @@ {320, 23} - + _NS:196 3 @@ -141,14 +128,6 @@ 9 - - - spinner - - - - 10 - view @@ -181,24 +160,17 @@ 4 - - - 7 - - - spin - 6 - label + status 5 @@ -215,7 +187,7 @@ - LinphoneStatusBar + UIStateBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -223,7 +195,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -231,37 +202,7 @@ 12 - - - - LinphoneStatusBar - UIViewController - - UIImageView - UILabel - UIActivityIndicatorView - - - - image - UIImageView - - - label - UILabel - - - spinner - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/LinphoneStatusBar.h - - - - + 0 IBCocoaTouchFramework diff --git a/Classes/LinphoneUI/UIToggleButton.h b/Classes/LinphoneUI/UIToggleButton.h index 50d8a6268..433fe8840 100644 --- a/Classes/LinphoneUI/UIToggleButton.h +++ b/Classes/LinphoneUI/UIToggleButton.h @@ -22,12 +22,12 @@ @protocol UIToggleButtonDelegate -(void) onOn; -(void) onOff; - -(bool) isInitialStateOn; + -(bool) onUpdate; @end @interface UIToggleButton : UIButton { } --(bool) reset; +-(bool) update; -(bool) toggle; @end diff --git a/Classes/LinphoneUI/UIToggleButton.m b/Classes/LinphoneUI/UIToggleButton.m index 0c34e15f2..73e3caae3 100644 --- a/Classes/LinphoneUI/UIToggleButton.m +++ b/Classes/LinphoneUI/UIToggleButton.m @@ -36,13 +36,13 @@ return self.selected; } -- (bool)reset { - self.selected = [self isInitialStateOn]; +- (bool)update { + self.selected = [self onUpdate]; return self.selected; } - (id) init { - [self reset]; + [self update]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; return self; } @@ -75,7 +75,7 @@ [NSException raise:NSInternalInconsistencyException format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; } --(bool) isInitialStateOn { +-(bool) onUpdate { [NSException raise:NSInternalInconsistencyException format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; return false; diff --git a/Classes/LinphoneUI/UIToggleVideoButton.m b/Classes/LinphoneUI/UIToggleVideoButton.m deleted file mode 100644 index da69d7174..000000000 --- a/Classes/LinphoneUI/UIToggleVideoButton.m +++ /dev/null @@ -1,75 +0,0 @@ -/* UIToggleVideoButton.m - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "UIToggleVideoButton.h" -#include "LinphoneManager.h" - -@implementation UIToggleVideoButton - -@synthesize videoUpdateIndicator; - --(void) touchUp:(id) sender { - LinphoneCore* lc = [LinphoneManager getLc]; - - if (!linphone_core_video_enabled(lc)) - return; - - [videoUpdateIndicator startAnimating]; - videoUpdateIndicator.hidden = NO; - self.enabled = NO; - - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - if (call) { - LinphoneCallParams* call_params = linphone_call_params_copy(linphone_call_get_current_params(call)); - if (linphone_call_params_video_enabled(call_params)) { - ms_message("Disabling video"); - linphone_call_params_enable_video(call_params, FALSE); - } else { - ms_message("Enabling video"); - linphone_call_params_enable_video(call_params, TRUE); - } - linphone_core_update_call(lc, call, call_params); - linphone_call_params_destroy(call_params); - } else { - ms_warning("Cannot toggle video, because no current call"); - } -} - -- (id) init { - [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; - return self; -} - -- (id)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self init]; - } - return self; -} - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (self) { - [self init]; - } - return self; -} - -@end diff --git a/Classes/LinphoneUI/UIToggleVideoButton.h b/Classes/LinphoneUI/UIVideoButton.h similarity index 91% rename from Classes/LinphoneUI/UIToggleVideoButton.h rename to Classes/LinphoneUI/UIVideoButton.h index 37a712ddd..17d588343 100644 --- a/Classes/LinphoneUI/UIToggleVideoButton.h +++ b/Classes/LinphoneUI/UIVideoButton.h @@ -1,4 +1,4 @@ -/* UIToggleVideoButton.h +/* UIVideoButton.h * * Copyright (C) 2011 Belledonne Comunications, Grenoble, France * @@ -19,11 +19,12 @@ #import -@interface UIToggleVideoButton : UIButton { +#import "UIToggleButton.h" + +@interface UIVideoButton : UIToggleButton { UIActivityIndicatorView* videoUpdateIndicator; } -- (id)initWithCoder:(NSCoder *)decoder; @property (nonatomic, retain) IBOutlet UIActivityIndicatorView* videoUpdateIndicator; diff --git a/Classes/LinphoneUI/UIVideoButton.m b/Classes/LinphoneUI/UIVideoButton.m new file mode 100644 index 000000000..8d13c0495 --- /dev/null +++ b/Classes/LinphoneUI/UIVideoButton.m @@ -0,0 +1,92 @@ +/* UIToggleVideoButton.m + * + * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIVideoButton.h" +#include "LinphoneManager.h" + +@implementation UIVideoButton + +@synthesize videoUpdateIndicator; + +- (void)onOn { + LinphoneCore* lc = [LinphoneManager getLc]; + + if (!linphone_core_video_enabled(lc)) + return; + + [videoUpdateIndicator startAnimating]; + [videoUpdateIndicator setHidden: FALSE]; + [self setEnabled: FALSE]; + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + if (call) { + LinphoneCallParams* call_params = linphone_call_params_copy(linphone_call_get_current_params(call)); + linphone_call_params_enable_video(call_params, TRUE); + linphone_core_update_call(lc, call, call_params); + linphone_call_params_destroy(call_params); + } else { + ms_warning("Cannot toggle video, because no current call"); + } + +} + +- (void)onOff { + LinphoneCore* lc = [LinphoneManager getLc]; + + if (!linphone_core_video_enabled(lc)) + return; + + [videoUpdateIndicator startAnimating]; + [videoUpdateIndicator setHidden: FALSE]; + [self setEnabled: FALSE]; + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + if (call) { + LinphoneCallParams* call_params = linphone_call_params_copy(linphone_call_get_current_params(call)); + linphone_call_params_enable_video(call_params, FALSE); + linphone_core_update_call(lc, call, call_params); + linphone_call_params_destroy(call_params); + } else { + ms_warning("Cannot toggle video, because no current call"); + } +} + +- (bool)onUpdate { + @try { + bool val = false; + LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]); + if (currentCall) { + LinphoneCallState state = linphone_call_get_state(currentCall); + if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) { + if (linphone_call_params_video_enabled(linphone_call_get_current_params(currentCall))) { + val = true; + } + [self setEnabled:TRUE]; + } else { + [self setEnabled:FALSE]; + } + } else { + [self setEnabled:FALSE]; + } + return val; + } @catch(NSException* e) { + //not ready yet + return false; + } +} + +@end diff --git a/Classes/MainScreenWithVideoPreview.xib b/Classes/MainScreenWithVideoPreview.xib index 813695dc9..9eadcbda7 100644 --- a/Classes/MainScreenWithVideoPreview.xib +++ b/Classes/MainScreenWithVideoPreview.xib @@ -44,6 +44,7 @@ 292 {768, 1024} + _NS:196 3 @@ -68,12 +69,19 @@ IBIPadFramework NO - - + + History + + History + + NSImage + history-orange.png + IBIPadFramework - 5 + + 1 1 @@ -82,25 +90,7 @@ NO - - History - - History - - NSImage - history-orange.png - - IBIPadFramework - - - - - 1 - 1 - - IBIPadFramework - NO - + Dialer @@ -109,6 +99,7 @@ dialer-orange.png IBIPadFramework + PhoneViewController-ipad @@ -120,11 +111,25 @@ IBIPadFramework NO - + + + IBIPadFramework + + 5 + + + + 1 + 1 + + IBIPadFramework + NO + IBIPadFramework + 0 @@ -142,12 +147,20 @@ 266 {{0, 975}, {768, 49}} + 3 MCAwAA NO IBIPadFramework + + + + + + + @@ -156,6 +169,7 @@ 274 {{0, 20}, {768, 1004}} + _NS:212 1 @@ -355,7 +369,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin PhoneViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin - CallHistoryTableViewController + HistoryTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin MoreViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -376,7 +390,228 @@ 44 - + + + + HistoryTableViewController + UITableViewController + + IBProjectSource + ./Classes/HistoryTableViewController.h + + + + MainScreenWithVideoPreview + UIViewController + + PhoneViewController + UIWindow + + + + phoneMainView + PhoneViewController + + + window + UIWindow + + + + IBProjectSource + ./Classes/MainScreenWithVideoPreview.h + + + + MoreViewController + UITableViewController + + UITableViewCell + UITableViewCell + UITextView + UITableViewCell + UILabel + + + + console + UITableViewCell + + + credit + UITableViewCell + + + creditText + UITextView + + + web + UITableViewCell + + + weburi + UILabel + + + + IBProjectSource + ./Classes/MoreViewController.h + + + + PhoneViewController + UIViewController + + onAddContact: + id + + + onAddContact: + + onAddContact: + id + + + + UITextField + UIButton + UIButton + UIButton + UIView + UIButton + UIEraseButton + UIButton + UIButton + UIButton + UILabel + MainScreenWithVideoPreview + UITabBarController + UIButton + UIButton + UIButton + UIButton + UIButton + UILabel + UIView + UIButton + UIButton + UIButton + UIButton + + + + address + UITextField + + + backToCallView + UIButton + + + callLarge + UIButton + + + callShort + UIButton + + + dialerView + UIView + + + eight + UIButton + + + erase + UIEraseButton + + + five + UIButton + + + four + UIButton + + + hash + UIButton + + + mDisplayName + UILabel + + + mMainScreenWithVideoPreview + MainScreenWithVideoPreview + + + myTabBarController + UITabBarController + + + nine + UIButton + + + one + UIButton + + + seven + UIButton + + + six + UIButton + + + star + UIButton + + + status + UILabel + + + statusViewHolder + UIView + + + switchCamera + UIButton + + + three + UIButton + + + two + UIButton + + + zero + UIButton + + + + IBProjectSource + ./Classes/PhoneViewController.h + + + + UIEraseButton + UIButton + + IBProjectSource + ./Classes/UIEraseButton.h + + + + 0 IBIPadFramework diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 85e829d48..d730d95e8 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -21,27 +21,26 @@ #import "LinphoneManager.h" @interface PhoneMainView : UIViewController { - UIView *statusBarView; + UIView *stateBarView; UIView *contentView; UIView *tabBarView; - PhoneView currentView; @private NSMutableDictionary *viewDescriptions; NSArray *views; - UIViewController *statusBarController; + UIViewController *stateBarController; UIViewController *callTabBarController; UIViewController *mainTabBarController; UIViewController *incomingCallTabBarController; } -@property (nonatomic, retain) IBOutlet UIView* statusBarView; +@property (nonatomic, retain) IBOutlet UIView* stateBarView; @property (nonatomic, retain) IBOutlet UIView* contentView; @property (nonatomic, retain) IBOutlet UIView* tabBarView; -@property (nonatomic, retain) IBOutlet UIViewController* statusBarController; +@property (nonatomic, retain) IBOutlet UIViewController* stateBarController; @property (nonatomic, retain) IBOutlet UIViewController* callTabBarController; @property (nonatomic, retain) IBOutlet UIViewController* mainTabBarController; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 788272d0d..fbc5c5301 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -19,8 +19,8 @@ #import "PhoneMainView.h" #import "PhoneViewController.h" -#import "HistoryController.h" -#import "ContactsController.h" +#import "HistoryViewController.h" +#import "ContactsViewController.h" #import "InCallViewController.h" typedef enum _TabBar { @@ -41,11 +41,11 @@ typedef enum _TabBar { @implementation PhoneMainView -@synthesize statusBarView; +@synthesize stateBarView; @synthesize contentView; @synthesize tabBarView; -@synthesize statusBarController; +@synthesize stateBarController; @synthesize callTabBarController; @synthesize mainTabBarController; @@ -64,14 +64,15 @@ typedef enum _TabBar { if(description == nil) return; - [contentView addSubview: description->content.view]; + UIView *innerView = description->content.view; + [contentView addSubview: innerView]; CGRect contentFrame = contentView.frame; if(description->statusEnabled) { - statusBarView.hidden = false; - contentFrame.origin.y = statusBarView.frame.size.height + statusBarView.frame.origin.y; + stateBarView.hidden = false; + contentFrame.origin.y = stateBarView.frame.size.height + stateBarView.frame.origin.y; } else { - statusBarView.hidden = true; + stateBarView.hidden = true; contentFrame.origin.y = 0; } @@ -85,7 +86,7 @@ typedef enum _TabBar { tabFrame.size.width = description->tabBar.view.frame.size.width; tabFrame.origin.y -= tabFrame.size.height; tabFrame.origin.x -= tabFrame.size.width; - tabBarView.frame = tabFrame; + [tabBarView setFrame: tabFrame]; contentFrame.size.height = tabFrame.origin.y - contentFrame.origin.y; for (UIView *view in description->tabBar.view.subviews) { if(view.tag == -1) { @@ -99,7 +100,14 @@ typedef enum _TabBar { contentFrame.size.height = tabFrame.origin.y - tabFrame.size.height; } - contentView.frame = contentFrame; + [contentView setFrame: contentFrame]; + CGRect innerContentFrame = innerView.frame; + innerContentFrame.size = contentFrame.size; + [innerView setFrame: innerContentFrame]; + + NSDictionary *dict = [notif.userInfo objectForKey: @"args"]; + if(dict != nil) + [LinphoneManager abstractCall:description->content dict:dict]; } - (void)viewDidLoad { @@ -113,14 +121,14 @@ typedef enum _TabBar { dumb = mainTabBarController.view; // Status Bar - [statusBarView addSubview: statusBarController.view]; + [stateBarView addSubview: stateBarController.view]; // // Main View // PhoneViewController* myPhoneViewController = [[PhoneViewController alloc] - initWithNibName:@"PhoneViewController" - bundle:[NSBundle mainBundle]]; + initWithNibName:@"PhoneViewController" + bundle:[NSBundle mainBundle]]; //[myPhoneViewController loadView]; ViewsDescription *mainViewDescription = [ViewsDescription alloc]; mainViewDescription->content = myPhoneViewController; @@ -132,9 +140,9 @@ typedef enum _TabBar { // // Contacts View // - ContactsController* myContactsController = [[ContactsController alloc] - initWithNibName:@"ContactsController" - bundle:[NSBundle mainBundle]]; + ContactsViewController* myContactsController = [[ContactsViewController alloc] + initWithNibName:@"ContactsViewController" + bundle:[NSBundle mainBundle]]; //[myContactsController loadView]; ViewsDescription *contactsDescription = [ViewsDescription alloc]; contactsDescription->content = myContactsController; @@ -146,9 +154,9 @@ typedef enum _TabBar { // // Call History View // - HistoryController* myHistoryController = [[HistoryController alloc] - initWithNibName:@"HistoryController" - bundle:[NSBundle mainBundle]]; + HistoryViewController* myHistoryController = [[HistoryViewController alloc] + initWithNibName:@"HistoryViewController" + bundle:[NSBundle mainBundle]]; //[myHistoryController loadView]; ViewsDescription *historyDescription = [ViewsDescription alloc]; historyDescription->content = myHistoryController; @@ -161,8 +169,8 @@ typedef enum _TabBar { // InCall View // InCallViewController* myInCallController = [[InCallViewController alloc] - initWithNibName:@"InCallViewController" - bundle:[NSBundle mainBundle]]; + initWithNibName:@"InCallViewController" + bundle:[NSBundle mainBundle]]; //[myHistoryController loadView]; ViewsDescription *inCallDescription = [ViewsDescription alloc]; inCallDescription->content = myInCallController; @@ -180,11 +188,13 @@ typedef enum _TabBar { } - (void)dealloc { - [super dealloc]; - [viewDescriptions dealloc]; - [statusBarView dealloc]; - [statusBarController dealloc]; - [mainTabBarController dealloc]; [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [viewDescriptions release]; + [stateBarView release]; + [stateBarController release]; + [mainTabBarController release]; + + [super dealloc]; } @end \ No newline at end of file diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 9451833ab..178a8c774 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -49,11 +49,8 @@ _NS:9 - 3 - MQA - - 2 - + 1 + MCAxIDAuMDkwOTI0NTczOTEAA YES IBCocoaTouchFramework @@ -66,10 +63,6 @@ _NS:9 - - 1 - MCAxIDAuMDkwOTI0NTczOTEgMAA - YES IBCocoaTouchFramework @@ -79,6 +72,7 @@ {{0, 400}, {320, 60}} + _NS:9 1 @@ -96,7 +90,9 @@ 3 MQA - + + 2 + IBCocoaTouchFramework @@ -173,6 +169,7 @@ {{160, 0}, {160, 77}} + _NS:9 NO @@ -271,6 +268,7 @@ {{192, 0}, {128, 72}} + _NS:9 NO @@ -344,6 +342,7 @@ NO + UIMainBar 1 @@ -354,6 +353,7 @@ NO + UICallBar 1 @@ -364,6 +364,7 @@ NO + UIStatusBar 1 @@ -400,14 +401,6 @@ 159 - - - statusBarView - - - - 176 - mainTabBarController @@ -416,14 +409,6 @@ 192 - - - statusBarController - - - - 193 - callTabBarController @@ -432,6 +417,22 @@ 196 + + + stateBarController + + + + 201 + + + + stateBarView + + + + 202 + @@ -559,25 +560,25 @@ 175 - statusBar + stateBar 178 - mainBarController + mainTabBarController 190 - statusBarController + stateBarController 194 - callBarController + callTabBarController @@ -637,11 +638,11 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - LinphoneMainBar + UIMainBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin - LinphoneStatusBar + UIStateBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin - LinphoneCallBar + UICallBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -658,29 +659,280 @@ - 196 + 202 YES - LinphoneCallBar + PhoneMainView UIViewController + + YES + + YES + callTabBarController + contentView + incomingCallTabBarController + mainTabBarController + stateBarController + stateBarView + tabBarView + + + YES + UIViewController + UIView + UIViewController + UIViewController + UIViewController + UIView + UIView + + + + YES + + YES + callTabBarController + contentView + incomingCallTabBarController + mainTabBarController + stateBarController + stateBarView + tabBarView + + + YES + + callTabBarController + UIViewController + + + contentView + UIView + + + incomingCallTabBarController + UIViewController + + + mainTabBarController + UIViewController + + + stateBarController + UIViewController + + + stateBarView + UIView + + + tabBarView + UIView + + + IBProjectSource - ./Classes/LinphoneCallBar.h + ./Classes/PhoneMainView.h - LinphoneMainBar + UICallBar UIViewController + + YES + + YES + microButton + pauseButton + speakerButton + videoButton + + + YES + UIMicroButton + UIPauseButton + UISpeakerButton + UIVideoButton + + + + YES + + YES + microButton + pauseButton + speakerButton + videoButton + + + YES + + microButton + UIMicroButton + + + pauseButton + UIPauseButton + + + speakerButton + UISpeakerButton + + + videoButton + UIVideoButton + + + IBProjectSource - ./Classes/LinphoneMainBar.h + ./Classes/UICallBar.h - LinphoneStatusBar + UIMainBar + UIViewController + + YES + + YES + onChatClick: + onContactsClick: + onDialerClick: + onHistoryClick: + onSettingsClick: + + + YES + id + id + id + id + id + + + + YES + + YES + onChatClick: + onContactsClick: + onDialerClick: + onHistoryClick: + onSettingsClick: + + + YES + + onChatClick: + id + + + onContactsClick: + id + + + onDialerClick: + id + + + onHistoryClick: + id + + + onSettingsClick: + id + + + + + YES + + YES + chatButton + contactsButton + dialerButton + historyButton + settingsButton + + + YES + UIButton + UIButton + UIButton + UIButton + UIButton + + + + YES + + YES + chatButton + contactsButton + dialerButton + historyButton + settingsButton + + + YES + + chatButton + UIButton + + + contactsButton + UIButton + + + dialerButton + UIButton + + + historyButton + UIButton + + + settingsButton + UIButton + + + + + IBProjectSource + ./Classes/UIMainBar.h + + + + UIMicroButton + UIToggleButton + + IBProjectSource + ./Classes/UIMicroButton.h + + + + UIPauseButton + UIToggleButton + + IBProjectSource + ./Classes/UIPauseButton.h + + + + UISpeakerButton + UIToggleButton + + IBProjectSource + ./Classes/UISpeakerButton.h + + + + UIStateBar UIViewController YES @@ -723,82 +975,34 @@ IBProjectSource - ./Classes/LinphoneStatusBar.h + ./Classes/UIStateBar.h - PhoneMainView - UIViewController + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + UIVideoButton + UIToggleButton - YES - - YES - callTabBarController - contentView - incomingCallTabBarController - mainTabBarController - statusBarController - statusBarView - tabBarView - - - YES - UIViewController - UIView - UIViewController - UIViewController - UIViewController - UIView - UIView - + videoUpdateIndicator + UIActivityIndicatorView - YES - - YES - callTabBarController - contentView - incomingCallTabBarController - mainTabBarController - statusBarController - statusBarView - tabBarView - - - YES - - callTabBarController - UIViewController - - - contentView - UIView - - - incomingCallTabBarController - UIViewController - - - mainTabBarController - UIViewController - - - statusBarController - UIViewController - - - statusBarView - UIView - - - tabBarView - UIView - + videoUpdateIndicator + + videoUpdateIndicator + UIActivityIndicatorView IBProjectSource - ./Classes/PhoneMainView.h + ./Classes/UIVideoButton.h diff --git a/Classes/PhoneViewController.h b/Classes/PhoneViewController.h index 5c99d57be..2312ce397 100644 --- a/Classes/PhoneViewController.h +++ b/Classes/PhoneViewController.h @@ -70,6 +70,7 @@ @property (nonatomic, retain) IBOutlet UIView* dialerView; @property (nonatomic, retain) IBOutlet UITextField* address; +@property (nonatomic, retain) IBOutlet UILabel* mDisplayName; @property (nonatomic, retain) IBOutlet UIButton* callShort; @property (nonatomic, retain) IBOutlet UIButton* callLarge; @property (nonatomic, retain) IBOutlet UILabel* status; diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m index 2f3feda4d..e8a7f5a48 100644 --- a/Classes/PhoneViewController.m +++ b/Classes/PhoneViewController.m @@ -31,6 +31,7 @@ @implementation PhoneViewController @synthesize dialerView; +@synthesize mDisplayName; @synthesize address; @synthesize callShort; @synthesize callLarge; diff --git a/Classes/Utils/OrderedDictionary.h b/Classes/Utils/OrderedDictionary.h new file mode 100644 index 000000000..2a3ecaa9d --- /dev/null +++ b/Classes/Utils/OrderedDictionary.h @@ -0,0 +1,37 @@ +// +// OrderedDictionary.h +// OrderedDictionary +// +// Created by Matt Gallagher on 19/12/08. +// Copyright 2008 Matt Gallagher. All rights reserved. +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. Permission is granted to anyone to +// use this software for any purpose, including commercial applications, and to +// alter it and redistribute it freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source +// distribution. +// + +@interface OrderedDictionary : NSMutableDictionary +{ + NSMutableDictionary *dictionary; + NSMutableArray *array; +} + +- (void)insertObject:(id)anObject forKey:(id)aKey atIndex:(NSUInteger)anIndex; +// Added by Diorcet Yann +- (void)insertObject:(id)anObject forKey:(id)aKey selector:(SEL) sel; +// +- (id)keyAtIndex:(NSUInteger)anIndex; +- (NSEnumerator *)reverseKeyEnumerator; + +@end diff --git a/Classes/Utils/OrderedDictionary.m b/Classes/Utils/OrderedDictionary.m new file mode 100644 index 000000000..8678ed0dd --- /dev/null +++ b/Classes/Utils/OrderedDictionary.m @@ -0,0 +1,170 @@ +// +// OrderedDictionary.m +// OrderedDictionary +// +// Created by Matt Gallagher on 19/12/08. +// Copyright 2008 Matt Gallagher. All rights reserved. +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. Permission is granted to anyone to +// use this software for any purpose, including commercial applications, and to +// alter it and redistribute it freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source +// distribution. +// + +#import "OrderedDictionary.h" + +NSString *DescriptionForObject(NSObject *object, id locale, NSUInteger indent) +{ + NSString *objectString; + if ([object isKindOfClass:[NSString class]]) + { + objectString = (NSString *)[[object retain] autorelease]; + } + else if ([object respondsToSelector:@selector(descriptionWithLocale:indent:)]) + { + objectString = [(NSDictionary *)object descriptionWithLocale:locale indent:indent]; + } + else if ([object respondsToSelector:@selector(descriptionWithLocale:)]) + { + objectString = [(NSSet *)object descriptionWithLocale:locale]; + } + else + { + objectString = [object description]; + } + return objectString; +} + +@implementation OrderedDictionary + +- (id)init +{ + return [self initWithCapacity:0]; +} + +- (id)initWithCapacity:(NSUInteger)capacity +{ + self = [super init]; + if (self != nil) + { + dictionary = [[NSMutableDictionary alloc] initWithCapacity:capacity]; + array = [[NSMutableArray alloc] initWithCapacity:capacity]; + } + return self; +} + +- (void)dealloc +{ + [dictionary release]; + [array release]; + [super dealloc]; +} + +- (id)copy +{ + return [self mutableCopy]; +} + +- (void)setObject:(id)anObject forKey:(id)aKey +{ + if (![dictionary objectForKey:aKey]) + { + [array addObject:aKey]; + } + [dictionary setObject:anObject forKey:aKey]; +} + +- (void)removeObjectForKey:(id)aKey +{ + [dictionary removeObjectForKey:aKey]; + [array removeObject:aKey]; +} + +- (NSUInteger)count +{ + return [dictionary count]; +} + +- (id)objectForKey:(id)aKey +{ + return [dictionary objectForKey:aKey]; +} + +- (NSEnumerator *)keyEnumerator +{ + return [array objectEnumerator]; +} + +- (NSEnumerator *)reverseKeyEnumerator +{ + return [array reverseObjectEnumerator]; +} + + +// Added by Diorcet Yann +- (void)insertObject:(id)anObject forKey:(id)aKey selector:(SEL)comparator +{ + if ([dictionary objectForKey:aKey]) + { + [self removeObjectForKey:aKey]; + } + NSUInteger anIndex; + for(anIndex = 0; anIndex < [array count]; ++anIndex) { + NSComparisonResult result = (NSComparisonResult) [aKey performSelector:comparator withObject:[array objectAtIndex: anIndex]]; + if(result <= 0) { + break; + } + } + [array insertObject:aKey atIndex:anIndex]; + [dictionary setObject:anObject forKey:aKey]; +} +// + +- (void)insertObject:(id)anObject forKey:(id)aKey atIndex:(NSUInteger)anIndex +{ + if ([dictionary objectForKey:aKey]) + { + [self removeObjectForKey:aKey]; + } + [array insertObject:aKey atIndex:anIndex]; + [dictionary setObject:anObject forKey:aKey]; +} + +- (id)keyAtIndex:(NSUInteger)anIndex +{ + return [array objectAtIndex:anIndex]; +} + +- (NSString *)descriptionWithLocale:(id)locale indent:(NSUInteger)level +{ + NSMutableString *indentString = [NSMutableString string]; + NSUInteger i, count = level; + for (i = 0; i < count; i++) + { + [indentString appendFormat:@" "]; + } + + NSMutableString *description = [NSMutableString string]; + [description appendFormat:@"%@{\n", indentString]; + for (NSObject *key in self) + { + [description appendFormat:@"%@ %@ = %@;\n", + indentString, + DescriptionForObject(key, locale, level), + DescriptionForObject([self objectForKey:key], locale, level)]; + } + [description appendFormat:@"%@}\n", indentString]; + return description; +} + +@end diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m index f885a5513..2da07cf5c 100644 --- a/Classes/VideoViewController.m +++ b/Classes/VideoViewController.m @@ -190,9 +190,9 @@ NSTimer *callQualityRefresher; [self performSelectorOnMainThread:@selector(configureOrientation) withObject:nil waitUntilDone:YES]; - [mMute reset]; - [mMuteLandRight reset]; - [mMuteLandLeft reset]; + [mMute update]; + [mMuteLandRight update]; + [mMuteLandLeft update]; maxCall = linphone_core_get_max_calls([LinphoneManager getLc]); linphone_core_set_max_calls([LinphoneManager getLc], 1); } @@ -218,9 +218,9 @@ NSTimer *callQualityRefresher; - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { [self configureOrientation:self.interfaceOrientation]; - [mMute reset]; - [mMuteLandRight reset]; - [mMuteLandLeft reset]; + [mMute update]; + [mMuteLandRight update]; + [mMuteLandLeft update]; } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [mLandscapeLeft removeFromSuperview]; diff --git a/Resources/HP.png b/Resources/HP.png deleted file mode 100755 index b3527b7826a113a123c88cbca091afdf7d3cfeab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3113 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 diff --git a/Resources/HP_inverse.png b/Resources/HP_inverse.png deleted file mode 100755 index 983f799de12d072ef5dbee41f882b55f714abf74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6868 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 LNkvXXu0mjf$+!vn diff --git a/Resources/appel-entrant.png b/Resources/appel-entrant.png new file mode 100644 index 0000000000000000000000000000000000000000..2ce5c676eef8a680dc26f089a494d5d0780a6fb8 GIT binary patch literal 2326 zcmbVOX;c$g7Oo@^AQBAXf*@^mKyU<-sw8AXARC)a6c7b>iliWE2#HC=fMXK^>ZlO| z0^){Ip+{U$P#IbsjRFd4D~b!);)0x3#{pZxX2gXqRGj(Y=^s<))Twu0ecyMNckelG zeeCQ=GRcDk0022UN)nHK+1Sf-Bmw}AH2!G?W=z(HC+X*^Q}rtmEeZ(b>J$`=Rv~F< zJc`J(m$#xb0f3OIOi0ovNn`jjwTgy}U}y%F24e%j%rJunk)@-0Fa=FhW`o< zz|RjA^QM)j^5Z2DpM7Cg2vwoiYxs2f%9Sf=E15L4HjNJRc)Sq}1|twd1nROg^@t%b zQ|CRZAVGC9tx}^`sx!e6MI=SNLLWlKBK?$tN+Xqi5zf?oE)-TWx&hJ9VH!kNsYdep zh}P-j(f@|=RkSW4TZ7W$QJs2)R)(ENs`n@vtKFYF8UbR_@aJfi*r6a9618lF3eD6< zOG2pFADUb#=R+_Tf?*B|;xHgK7lwrqVlhu7=0vc?9Ec}`M>W326-ID^#5^{W%MKF3 za5&6mLKs!V7IH))5swiu%8ky{>5)tsI_g)6`Tfjg{3(|&)}n}BtxZs?Ge$cgR-x9b zbqcix6weI;rHD+KIbx3-&!=o9s8*SU$|JOD75K5feC1dCOQ0a8kRyhf>`!@f#V{*^ z!3_%HV$CGvF{q!p^8cr1bSxP9NOSy8vy5(G9XPW5()yV3Wq8m`Y+|(7Xf#CSy#N6F zh-is0!EiU_-SBW2!7<>07Kn));zBmSjexgqcS4OYu&7P2dl{pg@dgkRxVK>dltsdHBkkW9>@r! z6g2xe+qx%AG`H0F`3`(&OmUG1Q65Al+Dv{OWWhPp<%pz?_i47Vu{T_NdFe^g;}#Dn_YZa2kFVM99QQNd%E_a|DeV8SD$*Ic0D_<4*eZW1ctpO+z z0eDC6bSvR_@tBY}X3AxLWsl2t+(hcl@dDkX+XcjdH`$7KhdhyWj^9J)Ipa*OM?{O8 zS=FK9LIqB-W>)dEo+P4wgL~^HX3t*Ye6GL6I*envOnvCI)O^!0)x(eE!=I0fraMof z%o-v|nkKOq|1DedTw2=6?-k|3Z`7bLLEV^A1P$1rq-;>NKl?Mb5Q+Nl*mo)7-S#e-s zj3hk2uhO;d+Biji)8NKBhjYZ$-n+6LTDm5`+t*&TqxXfaq_vRYCyaMXKdr|F6;B5g-=f2-HpGP@5(}%l1rwsQa*X%`dI#ZoCuTQ$r{qDq> z&a}YIKj3_345+*2DYJ7)PPaX7?mQMo_PQ{uoz|J)TS~jH3p(?QsrO&E8t33np18el zE#jWR&+7!cz->UCFc|mR&fJ!YKW~TR*9i-qx?Ssp9YA-5-hKCy;2$WHx?V49PbjN; zfh=0HCeS%+OU*S>_|kbZ8tzkX(OJx)VMY19fnxvX*+e^(HtW9i)KX*O>8pzd0;4)3 zpTc>|A~%J{eV6d)vMt>LzTV#3d8KvN?Ry&z|0tT)7U?Pe_rq0HsmR?E{=R!eb1LYoRdwCb{6mWMV|6uhEPR!F)Yc^DVz+a4wd1f|m zSUlK%r)$GcYg-jX?=5~$CwM$sz4zNN9AAg2ix*j#=jbn1C<-xi* zvEAF|@{Yo!*{8=5?~7~_zt|oYtJcf>WU)zv`c?0(nv-(Tk<@?nRi|lBf8T<*duP(R z74(U&14UzG?s>z#r3I6hA8YI>+vYrl$uGQa3or7zoOLePVYv!_B&T})CObNQDBR6e z5!QOGH#8AAJAFOxr+ojyIKzHRWyrd%FG~&y-;8Y^w{z$6!&$heCm#2}9ZlaRmZqmH z0h2j9Vh)bKB>F}x&2WB4t~mIi4LDFsSzcc{s4jTjE(>R literal 0 HcmV?d00001 diff --git a/Resources/appel-manque.png b/Resources/appel-manque.png new file mode 100644 index 0000000000000000000000000000000000000000..426dee899e10d8d25d18dc2b064a452817b86f8b GIT binary patch literal 2666 zcmbVOX;c&E8lEidAc-ili9-NI85n_-%$e`~=6RlX`QG=OuR=CI z#>3Um6#xK_Sc!0<{mZbwRA)y3K&41(^6iGNS(I#Eq)#_zD~t%hQ|Z$XFjlL`Ko%kj zRqpC@NF)GY(ltrR=H!HUwoy&xkC_o1di2%T%&dgy<+RGKXy!&?069n4`_onbwg{w{B(0H%s5 zOd5@8Zzdj#LU_+r{XaD$+k+ubG{^rm%jA~511FY$wZ7f>Yj_ZyePWFE(HI&m2m}Df zhFBplDd$?+t2b|=dmb(L(Webq>aDu@nP8u-qjJa90^By_c^w8EFQ`XbvGMp|uNs4m zfI_1|r6=Iv%R8Z9TW9|}qv!y?&Vt!1ndMZr=za@@yQT*yA8^KTt6HP-&)oBHOpGEq zdYkpOLnziK4q;=nR?Lu~n`<|@3|}4{eAg#4s_bY6oB>Z?n*{8+EYOD#uVyVRvU$N=0KOCZ zi0L)Oxy>4PtHM=QepzrAANt!ZY;S{)Z%~xwY_RMUP<~M$&_Y*wV|5 zUD5X22^gfUfBg(|28ma9y+qTa zQMB&wfS#W?k?a~N;GQ76KM+G%4&2y(oLb05pD3s=A1p~s4w``)qXuQJ1f(?i6zbt| zr!8yK#n+Bg8>jh$0FEoK1})^qyV9>pKAqbv&lw#LF0KKiCB5$TIrBe+A+I#~_ zMpCeGk~VDdavT0g6@J-Z_hZ%((b#m2IIdqw3YqQ9j#?9*F#p{{50iS@x``!sqE_*KX|%^Ew=kE?jiK zwW#^y*{RD)e)_y3zT;?b@~YaxjsJQ%54zxLdm5OR>k>cBdM`23=;WE2T~WdNaXe=5_$3_V?)8K}V?*QLuLqqwk(qoAc7a+nvtpmMKTSR-%2q z;hHo&(dWLGVlAP01-iN?$0~9?PE1oGsM2o(meYWsRY8mj-j4CSkG*F`n|x3IwqZ6T z$m%Zl48zqvtRbFC>81qPt3Z2H9($8p8PNWK2BaT;-di^v-A?G2QE`$g(co#|{JQGo zehHA;Y`LDB2Xx~6#}@DpWODt8T*pyG4|mK~Ftv8HV7Vh|eTGfwS!uQItdM%+9qOCa zn}ShaKnHxJA7iD}Zo?fNbSRPaV5;J(gGU&_X_swhbiw}VF>SoP!e+fk;mJJ9_05=+ zXXCc^&y(WZulOB+cCMEz6lI;$ZPZ=@SWBpcq~;FsyyorwPJ04Cl67sR56JCIZ>{Cx zPLFupMwO?k-LbpiCA0kwop$c@o_186iy3jS&5-@by~%Yud`7OgKi#`T5`qh!O}K24 z^0s%E9y%MCeQe#TcuHYF_OGvxtc&>YP1kMj>yk^uTNSX;H8A6o8^yDBsnR~!{(!V1 zDZG2A^RnaIr62YDST`d$gcAKj>qfxPlT|U))h_#TxVX$(Jv#e<0j>|hRyoX>c|J=K z-7af(In>%B$Nn*NWOK=>!INiQH}HlD~W5pPRpb9qP;v*Y;>qnN1)0l1CK;a+O3|#qGe%x;$&=yu{DW zuN1hrY`Oce%YSok`dpo{t>G!PPc#6lIml`V>ZUF+g+yN@kf{|A)eSWKjz8Q rwvDp%#87SkjIxPX9h1l}i@SRgOrmPTc-tMe~I%e0kBIgk=e7 literal 0 HcmV?d00001 diff --git a/Resources/appel-sortant.png b/Resources/appel-sortant.png new file mode 100644 index 0000000000000000000000000000000000000000..645875ce1977113661b9d6d8192ffddf589b646b GIT binary patch literal 2320 zcmbVOX;c&E8lHr(N{~g-P$OedP#efh$S#3wY?e*P)u4!kWJn^}Oa=k3w>O|@P!vVn zz+1qj1yNZPYOx?H0#=W$6fH%)Dq>x5L#wDL+(E^Ae|Y-i&N*}Dd%t;}=Uu+{J?G1h ziwP$>c{u?9K#Yu##A9C;_HrHU008GS>E1V(K|(`iXo4XP&6JxEK&UjNB4DIWu0rAw zxiWjjIV1=GY|=DR87hm8;wcQe0QnduAWLV&*Z>d|l4X=D(h(F)MN}F+pYr6yNeZY@ z@+pg$(NMHejHopct4v73su-zaRl0(!q=W>6L0LRZK!>1mFiWS^n|WD$%6nZNwjSH2 zQNZ^QG@VcR5R@!B4ipeH7@tL(rP)S=7LS+>872jG9%(+~WUO|7?Pv^$MZ=3VX|O|)Yb6Fnh7QrAkrF-y z`xBtlD0vXffnb=;fY@}1#erdAm{`meiP>Q+F&p9v;c<=6aan<4rbr0UIV`3KhC^Xa zAcRpxEFoJY5^?EapwBsERr#7Glv)W(; z#R*I>TCULO$Lz7=`H-yyF=DwSJNOI`xFVc-C!VDsRU~Iw9>;FE z@n9?2?wQ|&B5(56o&reWC$M!9*plQM1Vwr35ob$#*FUu**MPQM!8{TUZ*}u5gMf{T zW)4pQCi}X3tRlumLn;QPBP7V-X^%tWHTD1yJrH50Jt?_&#>T-b&tkjR{!hr{rO+E)@tZLA7N(csK>th zL9^$~_)c2hZl|=Razq8VIgbL}2mIa+TBIAM3T#>dul1XI7_BC9qw^V)sYQ<~4!BNr1zDXQo%w!YCZC;divbu< za1Fa6uvg!4pz6F@@h)oXjJn36zS9J?lmy33`>>$X)sy1y(dOrP>?tsVxnH)9ttm?AZgo=Gy8jtsvAbmx)Y5J}I$ZnG zE`Rgi1YHx(*sgWA;@wWIBTh+OaJ5ib2UJzLEt^|vN#i#44)rW9FL3V0<*H{nn;J-+ zZ32FZ<-l5@-9VM*ciZJVHnsf`qFphBlXd}wl=f?zUDxK!J}7nNL1cmb;@ruVWVL-f zZZS?_kAnYF+gGfaeGy68P0gN48tQN>-d0;vO00TAdRw&b!MvKbOclPo<+4Lr$nfdn zJAY^FN=rVvnV8^t@}LZQP}*DGo7}P*UjwI*<}68H)0>{(^44pmXhP&}&mz1`whaP* zW@MI>HRVdyU$-y2=($%ov*a*aTPdsruRBu?h2C2h(Ya((=_6|7yc*{UYOVFl*Gox# zN1Y}PHt@@TIxySsTXVF<5!g;#_(K#v&fn>)6f4Z#$$7YZ^K-?Ts{FPFl#o=^a(BCG zqg%coi6of!#{Oadt~QpVs>B(+`~8N~F0zXI73qbbW>@NukHW2viOr18f!@Hmg%@62 zr8(72zdt>ZZd+OS%Si*g=P-5XXIM@wDytsJc=+3KMOWy^e9!KqLrI6P>i!*j+Z%r@ zJ+#B|4Agy#F6aSR5x%ppw~}*+_Xs(}o^q{#ZHWQCC?=M;d6~Q9t4-wJU09iy$sL0^ zg8Es_LzDb&t{~y8m4Cd|6@c0dvORR5si2rlHBauiF+w_6fS+*W_LgbUg?YCr%g%bm zR6R3hY=8HrI{V`Nwk@iJX;-hbtSl}JUf`GXc)yF*_C>tMoAc6Z2K)t2-YnGXPWZW{ z)!jK6ZFlXG1I`||+1gU~>fE>OoYwu&58Z(c!^)T5vhrpP^H*3izr^eO<@w=*G=XvJ zH{zYSca{Ok`?Tc~ipOT&u&tWC|cm?NKaz+53 z8j;O51w|KYy&|$??QMun(Gk`qa+1xiXfQu^Qq7ZO=i(`sEF^^c;jrAXa)wRU3$mEJ7u3^ z)_zr9Xg;!9JN=gfw0~@Bz8l4;d-P=LjRi|rF!=mN|At%de!H;x?82IdQ}%kcOfRAP RHepv3ATl&YazvDp`yW0pdJ+Ht literal 0 HcmV?d00001 diff --git a/Resources/clavier-01-106px.png b/Resources/clavier-01-106px.png deleted file mode 100644 index d3ca4b8131808bd05bc1046ace54e40796abe788..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 328 zcmeAS@N?(olHy`uVBq!ia0vp^SwL*V!3HGzzUkKjDaPU;cPEB*=VV?2Ic!PZ?k)`f zL2$v|<&%LToCO|{#X#-XL734=V|E2lkiEpy*OmPit0cR;q}jhs;Xt7io-U3d6}R4A zcjRj_5OBD-aKaaZij-bQp11FGsiGQKhOPxTZL8 zUWs?*nBp+^Yp>SQ87;j)#h=_xx;0L^tPaz1Z$TgP6p+NKuf0}2OjGu;KmB6*$?c}b za(}=1y_4#v*frkzeph9VU89xsm0j!9E;3v(^5vhrVvl%(SNPKw*|)+#KQVZ^`njxg HN@xNAP*8aI diff --git a/Resources/clavier-01-108px.png b/Resources/clavier-01-108px.png deleted file mode 100644 index 9c84cb3dd17516ef124133470d37b0a38ea29189..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 330 zcmeAS@N?(olHy`uVBq!ia0vp^IY4Z~!3HFoU&LDhDaPU;cPEB*=VV?2Ic!PZ?k)`f zL2$v|<&%LToCO|{#X#-XL734=V|E2lkiEpy*OmPit0cQ3*XPz3Uw}fVJY5_^DsH{K zevywmrx$gjWOYWoe9 z9vPfpHgUo0U2ge2JEfGB+8U#^Htb_(^Etr6Goyi1!hliOAc09Op`PQ~%obi@14d@G z1SX*D7p0&BEI#M+BeKt`bP0l+XkKr!96> diff --git a/Resources/clavier-01-160px.png b/Resources/clavier-01-160px.png deleted file mode 100644 index e30025f846465ac156847bb2ace59fee7b179693..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^3xL>$gAGVN%-$#pq!^2X+?^QKos)S9?E(tj@pN$vskrs_ z+H2mX0G@`6pFG|fSZq4h7~qz`BUE>wlyhn4_c?;I^mBLrejMqo$ryh7yX~=#j@u?P z*``jL%q`!U=czR^WSTmt&$uFgf$a$A zF-|t=3E%1*q$iwV=zna$IVXXI<2w6}+}WNJ#2#3k*PpC#l%4BK_|wKG=M#bcWbkzL Kb6Mw<&;$UMs&+^K diff --git a/Resources/clavier.png b/Resources/clavier.png deleted file mode 100755 index df1026b655661858a4dda7772a357b0acb4b9f08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4259 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 FV1ig{9@78- diff --git a/Resources/contact.png b/Resources/contact.png deleted file mode 100755 index 32a5aee963f290d5eb5d46ed99a964166ce7957f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4547 zcmV;!5j^gRP)1^@s6n?UPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipr5 z4Fd_CX>@2HM@dakSAh-}000plNkl9Go&=OuC3%3}_lABrJjU_L@J4>`z*0f}? zLi_-vK~||~t4p{BF$=sKVCNpB5mpySh_a0>Su|x?wxC{6&&pqP8~cf>rSn0C4;msB=O+Z^+ET)j>g zXB;baNh|82&+s_`B$%`9O8OD`Hi%xweJ&Wy6Q3$R}03b9FKm;bjOUdd{$s+#=X#hb{6a

^6IfG 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 diff --git a/Resources/contact_vide.png b/Resources/contact_vide.png deleted file mode 100755 index dda753a324a693083cce1cfd3dd85699f53f41ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2905 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 diff --git a/Resources/micro.png b/Resources/micro.png deleted file mode 100755 index 1eee9ceeffbef5ffa1afc011907576eaaf15aa57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5956 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 diff --git a/Resources/micro_inverse.png b/Resources/micro_inverse.png deleted file mode 100755 index b4cd9f58897b7c6429217d017148f0b8934ad067..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9434 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 Xq_tsbF7?j500000NkvXXu0mjfdiBS@ diff --git a/Resources/pause.png b/Resources/pause.png deleted file mode 100755 index 4875f41c2fff285e9134a4d25890dc6860feb736..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2708 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 B&$|Es diff --git a/Resources/quality-call-0.png b/Resources/quality-call-0.png new file mode 100644 index 0000000000000000000000000000000000000000..7bdaf40abfdaf40163cbe04212df8b2cd62b1340 GIT binary patch literal 2137 zcmaJ?c~Db#9)AfjfDlMwSws$>;f9cdDN#ES^YVJzx_ncK=xR&AfTP?{7Yz&-ePwyvo?< zFwEwyn*jj8uy?THv|nHCYiEE400j2yyI5^tr3m3D;w1t_9#;kf!F)*u46;SsOgIka z^7C`Y-~a&7!wC~O3QklcjVBQixH=3$DUxd001yzQlyZ65uma40GlgP0?#a0!94O?| zaY;T=q$nv9&Jyk@kiqc<(FweQY#x=53kn1Slr*h?2v%@Gr6@-%rzz>Ux4Ja#S$9pu zfo~y-Y&!1GqBv2pAX6fPK_3FigGcfufxct{*~^BP&;UUi#E4WGz zvD|)Lfd$KXGNDu_S3$>VEB&(tk@UT+SpIHI+JO<3Tq%)EAn96K2S!Ex zf2c_G9xYeI!GG2JKZWH9`BIn|2g@aUWjyWT1opaAQW{eRa}^RE9i9#aJ zl1M>jybl<~svWWIrm2 z!C?AOSR|@1C4>>O&Sgn>dquEVvCifH#iee@)mcF#)n;bFGT}a$A1afGz_%^agd5l5 zyP@7YE`Q@%C>wH#+G2>h#s1f#*RQnh(H-C0RvWxGJ}lO{U8c45(%l6O0HDU%tl$LY zbVk4QX*z^NLaz~5xWTn6rtQhCEBfX&HR{bYB-tLjwn-y_dW>s}Og;+$ei%2tKZ7s; zLyPu#2G0Xsy~|hs=mV|BDjX0QYvuE=O9+S~2&BQ?XbZ4-e-06w0Ob1Dk5@dl)9+%R z-_e*ZX8owvOumVIX`|;xLTVPXRMi^OP#Zs!F{e=VK$N+oopE4+yq@4KShVmhh34Ed+m%A~r^x~$NoOT)Zw<+57WR!&J3 z48Jtq6Q86>I-*bc-D+iKEVN&FMC#UYZn-^gTpff!a7t$SURd-vgw-ij!i8l)clZH!TuYkAG@7c{NHQwMPs87R@$uuH@JM720_a@m*m6gi z)bCtz_HRww96elk9k^X`SEYIiDFdk z>4l8RhQ2_LOP|r39dGlm8>iu?E8_;84KJSyb38m{_AtI_R21D5c!KAZ&YvIE+fz}t zWP826(xk6NwB6cLy{Q~u9rV-HGQ3x+rhDfh@Ebm%x)Cb+<8UmyY6>-0KT7_)KX`(T z$n~k5HR>HG&j$SkNAl3Pi_znyr9-XXUh6?y7hD-}aYK)6i!(Jl^~~0Y;4s>}RJj|O za+-c`7FX?9zBE@o=TmAl+Znt4AbGVx718d0=1R_-^*=sMRPZ8;Z{`SMrk0?tFwdA~ zdE$q6INWASynE=>*8?nO=%wYsTeogaS^VUfsj)WY!lhZA;NZ}YsYch+XmeY8f3dj| z|KLt=81Yxs1iZk literal 0 HcmV?d00001 diff --git a/Resources/quality-call-1.png b/Resources/quality-call-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2cca9b39c0c54faf0cdc7506c73db121662fa7c1 GIT binary patch literal 2158 zcmaJ@dsGv57M}1-U}*v>0;Mnp5D}70cqAl%BqRhP1Te-5XX!Q}8Ay;kNCuK1@(@8l zuu;%fg-Tas(SwLet4J;Aa*&0}qu|l4ih#PJ^0a8_7S>Hv?EaxU=ggVk{hjZA_q+Fg ze@t0IT$G)Siwyt(cHC$--}t2%UpKTB0HAPJ?%|AqGZLAIY*nTrT9FzCm=a|Q407e7 zG?)*IB>K#Mz@Y$Oj+Y4%kwjiBU96N7MJ5bUCs!G>0U$J7rxJ;GzzCQEr^ysy_}TUj zJSdZd;kO6zAfAc^OJ&hHYIti-oIsqjLrjz4!#9DUI=YcS4kIE^C(lr5=(;fcYhJqX zY`P}l!PgLEM;QK%s6<`@$Wp3dFo*~d#1I7nDP$r!AdpI>`hors86rXcB(gt⩔0- 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 literal 0 HcmV?d00001 diff --git a/Resources/registration_inprogress.png b/Resources/registration_inprogress.png new file mode 100644 index 0000000000000000000000000000000000000000..17c3dad7d80b3a05715b984221d45dd9e840658e GIT binary patch literal 664 zcmV;J0%!e+P)7xUd7sGuY$>+y;Umt(!bRUO`3d z!Vs_vLAuyo3cK+egbITopubfNh;jubbsY$@?e!b=E z)uQcop1NCrci`QS7_P$S5BqD1Zr`%ic{V&_umMGx-ed+sND7*;S)(eNPOWaNlj*tq z8)JICvXZCIq1T5j=Ux*{n=;b^*I~I)VUN6I@bg@FCd`0Ys9jq8ynJfv{BLG>yr38lz7tGPAUv z1IvKgZQ_{#NVOoEBBd}hNu4T)v>B|`xhlc3`rL%(9L;bRydyeGT+XR%+T?v2?L1iw zA*}`9K!BOL$WawQ>>Qkh$`b8uf>tYF?^{^i+vFUX5IJ@ca%T}Bs!LX)Hg+N)W|<{l zwI!1m#JmHd$2vI2xya_i1J16M1Q z65Ahd@&oP000*V1^@s6{^R5m00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2ipo2 z4HPx$pLt~f00PEIL_t(Y$F-GDPZL2H#(y*0Zjm;c7!Ci51Z@>qqkaN7a5r8|Og{l9 z6HiK{WCatWM{XQQJT=jSH{*!|=qHf0)L2CMqoPC%pi=1Wc-Y;x+m3EJt7D^KXaYXY^mesC z1R%pvq#na&+cWPUauE?J3{p(YSFQL-%Ou%!97|ZvL<=MIRzxI9BJ&UcYsffq((RHz zKoVeaw9A(r5s8r;c}35S(K>+TxnZ$9HyoHt8QLdzzr#;rhpW!WQw-c&2vE~hV}nxF z5kzT{ta;Xf%$Z$20>jLb9q%SP9xpFj(?&-#B4ctLq@M^CabT4zI|U9wy1Pn1kG zW*(_wuKQnwg2nVXq=y%gEv^H80&Ci^T@nQ-Yud2gHRalsGv9QGCRTkAwzQF+*GaQ* zs8|5Yb+PsbD7kh#BBd$cZDjqUZzvosKumQH+6h~O4NG^=bK&s^jEU7_7sXuq8UvFJ zB<&6MP89#C>K0PB(U%4r7SnR#u?6b+O`owd`r|l!qL4~y)zO!&nj0~pQP|w}?f(4h z^l>j%DfB`jd(Dq1Kt@`Tktk~~#~K~70su>1UvYbjR!q#RiU?MmoLrt*L+UYv9tFLX zZ*O0)^W{Bo#><;lRpx8|kf*){GfpuvU#iWxPp_YzjSz0{M{nyxZ|}$cy~W=5McS|4 zYT6+IU%9uWFu7wc#lyUppmT2tXke*h*pK*I5du1RxTbj9rWK7tuWaVJKg1 Q^Z)<=07*qoM6N<$f{rD0jsO4v diff --git a/Resources/startcall-gray.png b/Resources/startcall-gray.png deleted file mode 100644 index 360e7baa0f60715e52647ceeefa55b8f8a059816..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2111 zcmV-F2*CG=P)00004XF*Lt006O% z3;baP00001b5ch_0Itp)=>Px#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy0%A)?L;(MXkIcUS000SaNLh0L01ejw01ejxLMWSf000L#Nkl+R_ukKlI^UxxY!4V8E-jq6Gy>qz%Bwv63J5-^F^lPd|Wx=MHmg}4a- z&?Mc=+pbu|zT4PxEQDxA_?q1w7x=BD)Nx4@#gXnC2mHaECZ>vMK_Z`5F8EK$$Cdxd zhXRK(nsZd6b#+Sc0anPy*}70eZ`k|nW2kG!i1&$e#R+1f2scD%-)<=ILxBug|CZb3 zJ<2D6-N7_chzBq*s-uskS#d^O=}KCZuu2#!KmY{=)qe#DP!Wczf5KWho#m_fp_p+* z4s=YgcM+;^J+&dN-!PBl9Ed5Mp?Bf{dq$C$kPASM&p-+$I%GpyF2oYHqs-qY*po-L zA_agMUu4uohZ#uAiC98ki`GSeJym42+1x}45Khtq^r&!J_?eti{YX>YEK?n(j#kI2 zS*oD9z+!QaB{%j8t|MKW@EGSO1PJGZ-Spq2VRCD%Uf)d(Pf>Hj^VCr>18!=i(G!51 zhTf;KhBt_ZMK616Nf2?#hB3hh@i4i@(f9#dT-p%>?46Bz&W&S2vG{&b%+Yg}ssv#X z%Jn7EE{EvMRlhiZeb=%hNYix;HHl@#-4_Qnq>f%FAZu}Ll;N;&$IA97uy;HDs%w5l zp0vAvP(#+Hx}L*|sMTaIrbz)C*gFFTssodyZ!Zn2hq3@$ks6`gCOu>nDFCoay{01X z@?ZgJC!K;b5y}GZgIvVE$?S8zRx3Rgf7fwDorO;^%%@o=gFfZCfe9m^lJ4Y| z$SsvMkZD}Z=`NhbPyk>ixO4x&GsuW|Y!8uoM|uX);% z_}<yvW6t$Wv1}!K$b9hI zgNrS7{pfqycdHYE{OITow?>ocoPL*f5Lm|aRf!%MG=3>Ji9ENH9f*#y8UI9M=s@`? zvt2gXifD%zvZSB1qBoJXm`C3pHFNb@0#v62PGGP$p6=S^wljz?gKgLDQ4Z3D|3gLx z(lOTYn%E%CFpAy+Sl5_WrAGh?6n9~r9x;R!uiNHt$(fYtSPbWTL<(*}4rUh9eW&($S6|NK-;%ahJWF?>1JCA!hX;CK*dFH!WUCB)i1v zX4DW5x*r{J;9~w+yVTLH74TRIC$y8ClH*2&S`C*5FqhVIIe-bm7w2m(T;D&eXJXf9 z*u-Hw*lY_Mm2Ub-2-La@xu}7VvQw`4WnYdOCs7;Va?G*yeS+OvdWdi1@CG*Ii!X@j z8eBwB%VnLG|E28o@0-=r2XX|Phb734P&bkVk;e$f#MBqp40u7z(;}A5j{-TQ{2+hh z|5`aJx2f%_-`x$!16)aL2pNu%7>%hI8P!=2S<|_$vbR)(U7B;n4dQs0nY~kZ2N3t= z;zK+keeY!GC8fw{=WIOgpDvR~s2_18MpV4Ve5HG1nfpu|x7?yERr2HvBXgyaO0~50000bbVXQnWMOn=I%9HWVRU5x zGB7bQEio`HGB8vzFgi6gIy5;eFfuwYFm0ffTmS$7C3HntbYx+4WjbwdWNBu305UK! pF)cALEiy1vF)%tcH99moD=;!TFfbhbE#LqE002ovPDHLkV1m&0&FKID diff --git a/Resources/stat_sys_signal_0.png b/Resources/stat_sys_signal_0.png deleted file mode 100644 index 0b7a04f44c498a89af7c15399c363fdfec2eb839..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 905 zcmV;419tq0P)P000>X1^@s6#OZ}&00001b5ch_0Itp) z=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipu9 z3IiUJ%=f?m00Rk0L_t(Y$GuifOH@%9e$JqiE*uqRK*tc25gct6(?Sfx0u4eFO>hJi z)EvzZ5|RYn|!QW?ZEkg&h0=x$xe5?%V2~?ld!gpmyL{ z+~>UaJn!?q=Wq@qfI!4>Rf91yfQW%Hx+(z>u_yqzotJm_J7bh#vt7#C27}?p&z+qd ztwK=%kdTn@{$W`ec6~lPZfd%afGo?H_IPq06c-CRA?Z))fl;BQva*}|CJNfzewzdXIlF-uHiZ`R9h>eXE z^ZMS+h(c<)HM&r)hlg!LaaLzI9@!&>wHY7>HtKnfh?dT9$>&vBa5qsir zI8akl1Bb&QI8{~gtg{o76B9vAemOLRy88Nvjo0@i$VpaK7C7f{I-Mf0tGgR71_#4t zJw7&uo!#BAjgNRvhzOi>#KpxymSybi@1wu3Pn1E6)0Za2YQ^6Eeh?S-oai$oA`lS{ z0s&aeX2JdIM9*2wW<2ld35g35Q4~d#%wn;iwXF>a@$o^N(P$JIhU2=sy3o_xE4Yv? zEXy(&WAOX^Xl-jlOLMdM+3)wmX0u^yYwJ|*>*^}pjg4T81(k~t5v*40FSFU4;@{rJ zHKXxDH)C{kG=3i)!J3?W5C{aW3z72j^7|i`mcI1&^X!60eG@ fdabbk@$UKq2IqP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz_en%SRCwClR?TX{KoFk9C?X;X3aKp~ z#Dj{0C-ETo20n$)&=>I5m*~}#FW{-*DIkc7hzC!t6coJrZ}(f+u!#nZu|0HQ9rBr( zZ|2+C-6*HiiGF*i^an%3PqkXDEf$Nn7?76bKIEJl96 z-xI-Zx1-f+Rc5xu9-mB-NF<^MgF$3Khr{8n;F(N@(&;qKW;2>jr?g(Lb&FhBd?pp2 z_l{I5#r;7xnM_D-C{2`zD!dE?g$m(tn8(9>IEhdJWR4_?qIe?N@AurIn(cP$og|;n zQ#PCB+K(=}5wXBX0Az+?T+I3sCMT_mHNk8)n=~4Y zxD^J;kZ3w>;pF|j-BOl`8A)F$-np{`Vn9Nl_xizt-nD300000NkvXXu0mjf_UI0I diff --git a/Resources/stat_sys_signal_2.png b/Resources/stat_sys_signal_2.png deleted file mode 100644 index fd543636c9d5c71f3e3557e6552b104b1cfa3e11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 595 zcmV-Z0<8UsP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz^+`lQRCwClR=sKhK@i?MPq7eDP`H?2 zAr>muVj-lqxu@_M(pcK%CDK~?0#*S*2nZq~Vquj?K*833v){rTdzafJ=b0247zaOg z=bM?GojvV*KC|Bzo&A9r_^H)u_siw-@pL*>t`fPfzogUYhhDGuY?CAsi8cq#WHQOZ z;cy^={eI8Z>ve_OHvfBLlf>h3Ga8K|0(LweFLIvG=UFb7WApi(&1N&U*=$Tlxp4Tr zR6;M6Y&I+QgKRpTGP$7)N)cHE5jaH^VzHR;2faE8RRLs55>3+rksJ;OVUf*lw+l{E zDwSBFP!P4BOeT&@V3nEp5p)qEFBXezI2`^g6M%lk3mr0VeX*CEe_Jj;B;*i#+$1O$ zFv`rHUEA$esm*4S_4|Ec34;UDuP_G*G6B1n*6Ve#5SB1R4W+2PFu7bhoe8wnYO(Qn zEG%K6P)ICaBGTA0R4r_&K&x7)Qhdtsx|NR0HsVBm?t zmt1ZQ7b=s^M~qwWvSRG4R;#zgVsU4mNwr#Sl*{EO!!XQiyz#tL@BAt> h9GU!!PofV21_1LdQ+v_>@umO(002ovPDHLkV1g|S2jTz# diff --git a/Resources/stat_sys_signal_3.png b/Resources/stat_sys_signal_3.png deleted file mode 100644 index 6c4873af3bdf0566ff9b294011217c0fa8cb1feb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 594 zcmV-Y0P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz^hrcPRCwClR=a8fQ4pP7SFsRLP}rDg zA(qy`LI`4I<5&0v7HKT)QuqsLt^5J82na&JMl8g_Dv^MKt#7mE!Yp^!?D|-fA{WNN zVeXuJ&g{-z<#0IAZ!eYpU}^Zt=krgq+3aP%-#^~uDF>K3`s zd_yW>*RE75CH4bsG#ZioKxs@7EW9ifg$kiiNYsPf9E4Q>m?MayD4syJ+pX|mvtF;g zgH)?kDi({>>2#>kXjquQ+nJ~g0`zmOP$-Da@EijZm?IMeFBvb~KX~kAnNG@e?F_Sn zKrUuxk!!VDIa;k&qh7BkJjdk4F_sHv&pX+ZQmG^o;W=h!0s|8mGdXHJC)VqA8V-lT zbIj-Si9~oe5PRe0JPVU@xh#V4ZUx<#xHcY7ihOE0NuIDyF}d-G$#c+rgzaO+e&SOx zfS?BV

    >;*CclSnz3h^EojTP9~ES2n3E^2~{2|tyW6}+wHbF8qSRk1_LqX`~AMC zB}=OSF_B1o#A2~~TsS}Je#yekipy(0pMOrL(+5+oTrOA1X0xxFrs=o1;|=-0j8~yz gVe&6NiM|CG00U?;Z&CX87ytkO07*qoM6N<$f^ggiLjV8( diff --git a/Resources/stat_sys_signal_4.png b/Resources/stat_sys_signal_4.png deleted file mode 100644 index a3320cbb4fd216a1215364d7a59856dee0e1fd32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 532 zcmV+v0_**WP)P000>X1^@s6#OZ}&0000PbVXQnQ*UN; zcVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUzwn;=mRCwCFRy~WtKoFh81gu0sA*WYa zTZ@QrSlaj_g01Z}Dedkz2-jMPz14vzTy1T2CkG0)YW%o;3mev$Xk4QUlOd1Eyq%Ao zjdna9>CsDj8cD5Ids{3PABV%C9EVd~*S~YQ-1}%W`og<`M>?JEG0@6nGGvmaFCIxMm9mn_Bz8di{a(qrZQE3>R%tvQQ@7it^?Gf2k>P=qu~gA+w^No% zrNSLT!Ez&6p2Ry z_NY>?*ZIfL0=pE6A;4QszFcHKK`03T)$tNWg0?4=Ei7p#?D$Av&lhdRfiV~k4}+y?eBeI7Zt<& zI%{G7SPAQzsMr|^+6`j`V;)h!K6g7l|Bu_u;Q4)Ed77%D72pcxAN%qFTem% Wt1S+j0li270000;u=vBoS#-wo>-L1;Fyx1 zl&avFo0y&&l$w}QS$HzlhJk@uDKjLZB*NFnDmgz_FA=0huOhbqsGEVo#=fE;F*!T6 zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%C zQ%e#RDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!W+OlMT!a6wD0u z42@09&CPWbj0_A7^bL&k4UKdS&8>`$tPBhkpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pF zzr4I$uiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMw zS&*t9lv*Mup|Ns9tG}vrp^yfdj z$e)id^$*AMO<3sTu({#Ki*x?H%eL*YZ`@XRMb%~kJBNbX1jnt$PbRmfL_Rk#a+<@t z$T7{x(AeO~jyq{7I&Y_0o>4!Rb@|*xz$yt+|W7Bxe%b&xVN_c*7u7lDuQJ-o1BeH*q*RW{ISW* zQYMFFes~8WVY%b&B3mxmJ<3t!d%A+@D0OjrC>SYc8NM z>jp!@5v%^1rF=>rSpqjo+{+EZzoaXv@`W5dWcS(g%F3&+R?q$E!7iGmwrSEUpEA2A zhO-v5p6@7ciGNc1v&_nFihP59!~KK5uUKfVcMQp3_#~0^_}mXevH5rFb^r5zGkK`6 TO5Y|JRB?E^`njxgN@xNA@EMY3 literal 0 HcmV?d00001 diff --git a/Resources/status_disconnected.png b/Resources/status_disconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..11455fb1be6f54561b931b76a4f9af283bc793ff GIT binary patch literal 575 zcmV-F0>J%=P)u)u8arSJ zBp}tnecTvQ4GxO%n5<1U*zZW8U3*Z94C4l1j=mg*nz&(J6 z5Q3%uQEKdVyZ6K4@QZV9YWClch`R450Ouiu$LPaxv)yh>X8x(F)2gaa*LCkwRjBF| zz^}vMP_{B!uh$jjCKq;_(CCCq#cAlCjWQ2H$bnpyO}me}5yQ7o;?O}bar zmd(tC0BAZA0ejjFW^Mv8GgP$+YGx2seF4uHmTLtyoIRO`@Y)-fT9Ns-AVnBDG^SF^hB#nfWY) zP&oiN9*=*DqWBHqld87r?~+eMaL&Pdk1WeR&t|i)FQ$LFT)rWqZ_GUHj)91z08e?I zpO{R29dJ%qke!KeTL N002ovPDHLkV1mzk{ptV! literal 0 HcmV?d00001 diff --git a/Resources/status_error.png b/Resources/status_error.png new file mode 100644 index 0000000000000000000000000000000000000000..e7617832b1d8783c5dfbfe99d72fda0648d85731 GIT binary patch literal 1488 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9Y!N$PAxIFeuK9D0>;u=vBoS#-wo>-L1;Fyx1 zl&avFo0y&&l$w}QS$HzlhJk@uDKjLZB*NFnDmgz_FA=0huOhbqsGEVo#=fE;F*!T6 zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%C zQ%e#RDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!W+OlMT!a6wD0u z42@09&CPWbj0_A7^bL&k4UKdS&8>`$tPBhkpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pF zzr4I$uiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMw zS&*t9lvT3&BOEG(d2Tf!ehn>g_2qa446+ba3~y$=HcmaxYh8KkNL2@+=N@z4uAR@ z4{|6pI0WhBOG?x=Ke23>A>0w^FzX$Yp|-$h#*I7z%q#*DjG^HSZ>@REzA|0-As_HG zAveF_NWMZE^P~L=jq4pAafgVdh)uQ+kiM|ZYrz9SYXxbA28o4o9{-LWFnBJ{d}ObW z!xj<*e-_)y(Kp&-5riVD;CADn_OPS2lAVCPM*}6M}O;w6m|T(NL1Tz;ZNzTfWL+5&t3= zD}~(~1liT+KAHSI=lm_D8%-NbW;_Ui_j06dLWm{u7&d_r*5jIxF5kE^50jm{+zKSEyYS+BruvuCKo|YGL(JOi%1E!GMvJ9;A5`&k^RW)5F;D%Zt=!EC{@ zcODZ1#Z)uD9WU6%`rsmSN_*t0u(V5If8QT<>63bNFn;B`$=UL$EUcdnFP-<%$4v3% zw`Dq9OXg@a{Isw=?%W}>IyGJGVYlH{e(tg*jR}gP`xE}YKQ~v-XO4!+mh-PH|0@*V zVA9@L^v-5dJ-bP0l+XkK Dz#0)Q literal 0 HcmV?d00001 diff --git a/Resources/status_gray.png b/Resources/status_gray.png deleted file mode 100644 index b4f871f3eb278503e10417f466b765eb306a1c52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 948 zcmeAS@N?(olHy`uVBq!ia0vp^l0YoZ!2%>hUg^vLQY`6?zK#qG8~eHcB(ehejKx9j zP7LeL$-D$|6p}rHd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_HU8X#UUXIG#NP=YDR z+ueoXe|!I#{XiaPfk$L9(Aw)D%;=;sy8@_Ut*47)h{frtlf6Ac0ws>uKRG`&swA`a|spd8=2<1^;G$UKmj-eDtum#aHo5 zZ#<)(&0U(w*_oFAA^Sn(gUp3%mv<>`o80j*(aHvAE7S5ufiM6J<$&Bo})T^Y0R zKz{H2wN-`@D*lU_DwgWqGSMLJDul!T=>`b4r|Meg$BLnMQab(IS8_5opzbn!soE9 zsh@>m(qjF|$F0JwUvKFMz2;_a;Qdg$@R!Piq%Z3y8K#==_)UL4U3 zJ2b)1y5UZ>O`XW*nGy9`oZ^m!?&8u6fKJS9W6WXOLvkP z+=b@;EYjvKbPeV{x!NoArg*Yh|A$L&?yE6KovLj&t+~Es(aLA*?RGw&pe5_|J-~e@ zubWxA=d)Ui)ixqGS=LR@XnS_a>Auw2&oAdD-(Hj6;q|GZe9gCdg z|NlvdiszCG5u9NA>7+w?X~mY~{)hj(TD6hs?POqTRxNRjC`m~yNwrEYN(E93Mh1pP zx(0^2h87`)##Sb#Rt6^828LD!2EIE?gi$o)=BH$)Rl+qGScVuHSs7YdnOZ_LbUoCW Q0Mx+X>FVdQ&MBb@00)?icK`qY diff --git a/Resources/status_green.png b/Resources/status_green.png deleted file mode 100644 index 1a39a42427823dbb36531709ed9ba198ffddaed8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1242 zcmV<01SR{4P)P000*V1^@s6{^R5m00001b5ch_0Itp) z=>Px#32;bRa{vGh*8l(w*8xH(n|J^K00(qQO+^RV1QibqBj~v8#{d8XY)M2xR7l6Q zm0N67RTPH5z0XW%&RhxtH56hLm=c3+fzm58nxa7^YP_YGATer8z<41|cu@jAn3!Oq zi4aAM2|l1iKut{K0U{Dhi__^Kw9^VsTPQSu6bg1O=X5S-`!G|O0)^D*dO9a(o&Vcw z?X~|6|5G$}cxQ|~+x|=8hBkD~?rc(swJ9>YfUS3gyn4d#t#H-^<~qvf`J9y{rA7Bl zi<+I6`;G1k(PY=}gCm_szo-tU13|}pq+FxmWd+lKlqR*OC$2;xmUigRmDp!BPotzx z7ap5idU0tkl2!~On;>DuFjSl?_GH2z()$!t0OGm?`&z2vL$`!H6m-tXc8Fa-om+Zv zNe{a8plfbi(!<}GVGJvdkxh`a5+t*6H&A(V55!l6Z`UA!4!tgG@gs1zT@>Mxo@2Vr zeZY<9kk>ZlggsS!Ih{GB8zg2VRBTbgiY+y)__M&w8wlBKR{S;&2~ZpKPPfZU1ehtH zt5}=*=Dw=)zusx1n|7m}o8x*+q23ozbzM~aVQJQiwkmVr8pI#c_X5uY-(7VXtGXW` zHL0;u2!GhM2Bo$D_8dv{xb4Z>{R>G*e^{^20aW+D0_2veTC0hN#8dh< z0Exwm`Nh092JnaV`uZcz`zFh3sWpFAO1)9A7pogWuEi2qlG`lf06?JK^%NFIG@I!2 zx9eZ~596H-sIAuA0b>6cN1|Sl2ugu-!Fomjlu+yQ2@=679Im~Stw>30b3rwY62%Mw z#RWODZ)o?_+j`V5*d9FUDH&JI67wK1kUyC7Byd52dr8M#Q}VLkj$ak)CIa|F&TVOr z9<#F9i~f)v^SA3O3qBtkJBw051h6@jxf~#qO>RbTykI<=8@usLFjg-B&iso9As#KT zmaz_;l~S-L-@6S>yPLFNJtIQn(*XiO$NZdDLDh=$ z04t(61Y$9OQ2ZoqG2?p#rzP5=;st}709vZzL#8kql;R^`6qv3AZ==LPyUbkjhjgW+ zJW0-R$KsL{)((K!6@4wJVn7KiyImeyhN%?m-I^DtbZ`9lRC6;xxSC{Jt+C!p+h-xf z>p&~q@}Lf*)R$6-%EL8ge?!>eQ-Y28mhEh*PxV~0=Vy-l-tjrgKk(@l_?+cG-0P}Z zQ|2ujx^a@s;-WHX+2#wSG@*$BLnS-I)uaIeA!nl!Vke5(K(Cdy*Bx0pGAs&3HvPGJ zolh_S(5F`v&2yFyU(HH= zw%$M2QTb_^UjA^O*-f7rq1Wg-6E(Vy_nSTaqn0^>w9+V1BA`^|+;?vNcMJH8QRCg# z0I_jaf2+6eIR>q> z3wzC;%D+;Bb3l1P*%9(0$~q$~t)p}x5!thn>_i&>0H*oIo`bXH<^TWy07*qoM6N<$ Eg5;A+jsO4v diff --git a/Resources/status_inprogress.png b/Resources/status_inprogress.png new file mode 100644 index 0000000000000000000000000000000000000000..d2fe9da56d4495847cb9fa90cf4674c411e0d388 GIT binary patch literal 684 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 Date: Fri, 15 Jun 2012 16:54:46 +0200 Subject: [PATCH 013/397] Cleaning and continue working on new ui --- Classes/CallDelegate.h | 4 +- Classes/ContactsViewController.h | 7 +- Classes/ContactsViewController.m | 14 +- Classes/ContactsViewController.xib | 18 +- Classes/DialerViewController.h | 67 ++ Classes/DialerViewController.m | 117 +++ ...ontroller.xib => DialerViewController.xib} | 750 ++++++------- Classes/HistoryTableViewController.m | 10 +- Classes/HistoryViewController.h | 4 + Classes/HistoryViewController.m | 7 + Classes/HistoryViewController.xib | 18 +- Classes/InCallViewController.h | 9 +- Classes/InCallViewController.m | 44 +- Classes/InCallViewController.xib | 316 +----- Classes/LinphoneAppDelegate.m | 1 - Classes/LinphoneUI/LinphoneManager.h | 45 +- Classes/LinphoneUI/LinphoneManager.m | 61 +- Classes/LinphoneUI/UICallBar.m | 5 +- Classes/LinphoneUI/UICallBar.xib | 19 +- Classes/LinphoneUI/UIEraseButton.h | 3 +- Classes/LinphoneUI/UIEraseButton.m | 15 +- Classes/LinphoneUI/UILongTouchButton.h | 31 + Classes/LinphoneUI/UILongTouchButton.m | 76 ++ Classes/LinphoneUI/UIMainBar.xib | 131 +-- Classes/LinphoneUI/UIMicroButton.m | 4 +- Classes/LinphoneUI/UIPauseButton.m | 4 +- Classes/LinphoneUI/UIStateBar.h | 12 +- Classes/LinphoneUI/UIStateBar.m | 113 +- Classes/LinphoneUI/UIStateBar.xib | 109 +- Classes/LinphoneUI/UIToggleButton.m | 2 +- Classes/LinphoneUI/UIVideoButton.m | 4 +- Classes/LinphoneUI/VideoZoomHandler.h | 30 +- Classes/LinphoneUI/VideoZoomHandler.m | 38 +- Classes/MainScreenWithVideoPreview.h | 7 +- Classes/MainScreenWithVideoPreview.m | 9 +- Classes/PhoneMainView.h | 20 +- Classes/PhoneMainView.m | 324 +++++- Classes/PhoneMainView.xib | 31 +- Classes/PhoneViewController.h | 101 -- Classes/PhoneViewController.m | 462 -------- Classes/VideoViewController-ipad.xib | 993 ------------------ Classes/VideoViewController.h | 74 -- Classes/VideoViewController.m | 230 ---- Classes/VideoViewController.xib | 919 ---------------- Resources/add-contact-actif.png | Bin 4832 -> 5431 bytes Resources/add-contact-inactif.png | Bin 4662 -> 2002 bytes Resources/add-contact-over.png | Bin 4798 -> 4430 bytes Resources/appeler-actif.png | Bin 9538 -> 8932 bytes Resources/appeler-over.png | Bin 5217 -> 5005 bytes Resources/backspace-actif.png | Bin 4693 -> 4200 bytes Resources/backspace-over.png | Bin 4716 -> 4200 bytes Resources/contacts-actif.png | Bin 3684 -> 5070 bytes Resources/contacts-over.png | Bin 3879 -> 5160 bytes Resources/contacts-selectionne.png | Bin 3538 -> 3291 bytes Resources/dialer-actif.png | Bin 13951 -> 20158 bytes Resources/dialer-over.png | Bin 12044 -> 16594 bytes Resources/history-actif.png | Bin 3451 -> 5113 bytes Resources/history-over.png | Bin 3590 -> 5186 bytes Resources/history-selectionne.png | Bin 3336 -> 5108 bytes Resources/settings-actif.png | Bin 4430 -> 5860 bytes Resources/settings-over.png | Bin 4702 -> 6003 bytes Resources/settings-selectionne.png | Bin 4298 -> 5832 bytes Resources/tchat-actif.png | Bin 2485 -> 4313 bytes Resources/tchat-over.png | Bin 2623 -> 4430 bytes Resources/tchat-selectionne.png | Bin 2426 -> 4355 bytes Resources/video-OFF-disabled.png | Bin 0 -> 3595 bytes linphone.xcodeproj/project.pbxproj | 74 +- 67 files changed, 1452 insertions(+), 3880 deletions(-) create mode 100644 Classes/DialerViewController.h create mode 100644 Classes/DialerViewController.m rename Classes/{PhoneViewController.xib => DialerViewController.xib} (86%) create mode 100644 Classes/LinphoneUI/UILongTouchButton.h create mode 100644 Classes/LinphoneUI/UILongTouchButton.m delete mode 100644 Classes/PhoneViewController.h delete mode 100644 Classes/PhoneViewController.m delete mode 100644 Classes/VideoViewController-ipad.xib delete mode 100644 Classes/VideoViewController.h delete mode 100644 Classes/VideoViewController.m delete mode 100644 Classes/VideoViewController.xib create mode 100644 Resources/video-OFF-disabled.png diff --git a/Classes/CallDelegate.h b/Classes/CallDelegate.h index 516c2074d..4541e13b2 100644 --- a/Classes/CallDelegate.h +++ b/Classes/CallDelegate.h @@ -29,14 +29,14 @@ enum CallDelegateType { CD_TRANSFER_CALL }; -@protocol UIActionSheetCustomDelegate +@protocol CallActionSheetDelegate - (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType) type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void*) datas; @end @interface CallDelegate : NSObject { enum CallDelegateType eventType; LinphoneCall* call; - id delegate; + id delegate; NSTimer* timeout; } diff --git a/Classes/ContactsViewController.h b/Classes/ContactsViewController.h index f1244803b..2f6de1125 100644 --- a/Classes/ContactsViewController.h +++ b/Classes/ContactsViewController.h @@ -19,13 +19,18 @@ #import +#import "ContactTableViewController.h" + @interface ContactsViewController : UIViewController { - UITableViewController *tableController; + ContactTableViewController *tableController; + UITableView *tableView; + UIButton *allButton; UIButton *linphoneButton; } @property (nonatomic, retain) IBOutlet UITableViewController* tableController; +@property (nonatomic, retain) IBOutlet UITableView *tableView; @property (nonatomic, retain) IBOutlet UIButton* allButton; @property (nonatomic, retain) IBOutlet UIButton* linphoneButton; diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 52ee33ce9..2512f2e1c 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -24,6 +24,8 @@ @implementation ContactsViewController @synthesize tableController; +@synthesize tableView; + @synthesize allButton; @synthesize linphoneButton; @@ -33,8 +35,12 @@ typedef enum _HistoryView { History_MAX } HistoryView; +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [self.tableView reloadData]; +} -- (void) changeView: (HistoryView) view { +- (void)changeView: (HistoryView) view { if(view == History_All) { allButton.selected = TRUE; } else { @@ -48,16 +54,16 @@ typedef enum _HistoryView { } } -- (void) viewDidLoad { +- (void)viewDidLoad { [super viewDidLoad]; [self changeView: History_All]; } --(IBAction) onAllClick: (id) event { +- (IBAction)onAllClick: (id) event { [self changeView: History_All]; } --(IBAction) onLinphoneClick: (id) event { +- (IBAction)onLinphoneClick: (id) event { [self changeView: History_Linphone]; } diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index 6b12285d4..3739eab2e 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -156,7 +156,6 @@ {{0, 58}, {320, 402}} - _NS:10 3 @@ -167,7 +166,7 @@ NO IBCocoaTouchFramework 0.0 - 15 + 10 0.0 0.0 YES @@ -238,6 +237,14 @@ 83
+ + + tableView + + + + 84 + onAllClick: @@ -374,7 +381,7 @@ - 83 + 84 @@ -407,6 +414,7 @@ UIButton UIButton UITableViewController + UITableView @@ -421,6 +429,10 @@ tableController UITableViewController + + tableView + UITableView + IBProjectSource diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h new file mode 100644 index 000000000..80e2c7a93 --- /dev/null +++ b/Classes/DialerViewController.h @@ -0,0 +1,67 @@ +/* DialerViewController.h + * + * Copyright (C) 2009 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +#import "UILinphone.h" + +@interface DialerViewController : UIViewController { + +@private + //Buttons + UITextField* addressField; + UIEraseButton* eraseButton; + UICallButton* callButton; + + //Key pad + UIDigitButton* oneButton; + UIDigitButton* twoButton; + UIDigitButton* threeButton; + UIDigitButton* fourButton; + UIDigitButton* fiveButton; + UIDigitButton* sixButton; + UIDigitButton* sevenButton; + UIDigitButton* eightButton; + UIDigitButton* nineButton; + UIDigitButton* starButton; + UIDigitButton* zeroButton; + UIDigitButton* hashButton; +} + +- (void)setAddress:(NSString*) address; + +@property (nonatomic, retain) IBOutlet UITextField* addressField; +@property (nonatomic, retain) IBOutlet UIButton* callButton; +@property (nonatomic, retain) IBOutlet UIEraseButton* eraseButton; +@property (nonatomic, retain) IBOutlet UIButton* oneButton; +@property (nonatomic, retain) IBOutlet UIButton* twoButton; +@property (nonatomic, retain) IBOutlet UIButton* threeButton; +@property (nonatomic, retain) IBOutlet UIButton* fourButton; +@property (nonatomic, retain) IBOutlet UIButton* fiveButton; +@property (nonatomic, retain) IBOutlet UIButton* sixButton; +@property (nonatomic, retain) IBOutlet UIButton* sevenButton; +@property (nonatomic, retain) IBOutlet UIButton* eightButton; +@property (nonatomic, retain) IBOutlet UIButton* nineButton; +@property (nonatomic, retain) IBOutlet UIButton* starButton; +@property (nonatomic, retain) IBOutlet UIButton* zeroButton; +@property (nonatomic, retain) IBOutlet UIButton* hashButton; + +- (IBAction)onAddContact: (id) event; + +@end diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m new file mode 100644 index 000000000..647defb5c --- /dev/null +++ b/Classes/DialerViewController.m @@ -0,0 +1,117 @@ +/* DialerViewController.h + * + * Copyright (C) 2009 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import +#import + +#import "DialerViewController.h" +#import "linphoneAppDelegate.h" +#import "IncallViewController.h" +#import "LinphoneManager.h" +#import "PhoneMainView.h" + +#include "linphonecore.h" +#include "private.h" + +@implementation DialerViewController + +@synthesize addressField; +@synthesize callButton; +@synthesize eraseButton; + +@synthesize oneButton; +@synthesize twoButton; +@synthesize threeButton; +@synthesize fourButton; +@synthesize fiveButton; +@synthesize sixButton; +@synthesize sevenButton; +@synthesize eightButton; +@synthesize nineButton; +@synthesize starButton; +@synthesize zeroButton; +@synthesize hashButton; + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + //TODO + /*if ([[NSUserDefaults standardUserDefaults] boolForKey:@"enable_first_login_view_preference"] == true) { + myFirstLoginViewController = [[FirstLoginViewController alloc] initWithNibName:@"FirstLoginViewController" + bundle:[NSBundle mainBundle]]; + [self presentModalViewController:myFirstLoginViewController animated:true]; + }*/ + // [[LinphoneManager instance] setRegistrationDelegate:self]; + + //TODO + //[mMainScreenWithVideoPreview showPreview:YES]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + [zeroButton initWithNumber:'0' addressField:addressField dtmf:false]; + [oneButton initWithNumber:'1' addressField:addressField dtmf:false]; + [twoButton initWithNumber:'2' addressField:addressField dtmf:false]; + [threeButton initWithNumber:'3' addressField:addressField dtmf:false]; + [fourButton initWithNumber:'4' addressField:addressField dtmf:false]; + [fiveButton initWithNumber:'5' addressField:addressField dtmf:false]; + [sixButton initWithNumber:'6' addressField:addressField dtmf:false]; + [sevenButton initWithNumber:'7' addressField:addressField dtmf:false]; + [eightButton initWithNumber:'8' addressField:addressField dtmf:false]; + [nineButton initWithNumber:'9' addressField:addressField dtmf:false]; + [starButton initWithNumber:'*' addressField:addressField dtmf:false]; + [hashButton initWithNumber:'#' addressField:addressField dtmf:false]; + [callButton initWithAddress:addressField]; + [eraseButton initWithAddressField:addressField]; +} + +- (void)setAddress:(NSString*) address { + [addressField setText:address]; +} + +- (void)dealloc { + [addressField release]; + [callButton release]; + [oneButton release]; + [twoButton release]; + [threeButton release]; + [fourButton release]; + [fiveButton release]; + [sixButton release]; + [sevenButton release]; + [eightButton release]; + [nineButton release]; + [starButton release]; + [zeroButton release]; + [hashButton release]; + [super dealloc]; +} + +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + if (textField == addressField) { + [addressField resignFirstResponder]; + } + return YES; +} + +- (IBAction)onAddContact: (id) event { + +} + +@end diff --git a/Classes/PhoneViewController.xib b/Classes/DialerViewController.xib similarity index 86% rename from Classes/PhoneViewController.xib rename to Classes/DialerViewController.xib index 87104bbe8..9eebe377a 100644 --- a/Classes/PhoneViewController.xib +++ b/Classes/DialerViewController.xib @@ -41,132 +41,86 @@ 292 YES - + - 292 + 288 YES - - + + 292 - {105, 72} - + {320, 80} + - + _NS:9 - NO + NO + IBCocoaTouchFramework + + NSImage + champ-saisie-numero.png + + + + + 292 + {320, 60} + + + + + 3 + MSAwAA + + NO + NO IBCocoaTouchFramework - 0 0 - + + sip: + 3 MQA - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + YES + 15 + + 1 + 3 + IBCocoaTouchFramework - - 3 - MC41AA + 1 + + Helvetica + Helvetica + 0 + 36 - - NSImage - add-contact-over.png - - - NSImage - add-contact-inactif.png - - - NSImage - add-contact-actif.png - - - 2 - 15 - - - Helvetica-Bold - 15 + + Helvetica + 36 16 - - - 292 - {{105, 0}, {110, 72}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - appeler-over.png - - - NSImage - appeler-actif.png - - - - - - - 292 - {{215, 0}, {105, 72}} - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - backspace-over.png - - - NSImage - backspace-actif.png - - - - - {{0, 293}, {320, 72}} + {320, 80} - + _NS:9 3 - MQA + MSAwAA 2 + YES IBCocoaTouchFramework - 292 + 288 YES @@ -208,7 +162,10 @@ 1 MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + + 3 + MC41AA + NSImage 1-over.png @@ -223,7 +180,11 @@ 2 15 - + + Helvetica-Bold + 15 + 16 + @@ -252,7 +213,7 @@ 2-actif.png - + @@ -277,7 +238,7 @@ 3-actif.png - + @@ -306,7 +267,7 @@ 4-actif.png - + @@ -335,7 +296,7 @@ 5-actif.png - + @@ -364,7 +325,7 @@ 7-actif.png - + @@ -393,7 +354,7 @@ 6-actif.png - + @@ -422,7 +383,7 @@ 8-actif.png - + @@ -451,7 +412,7 @@ 9-actif.png - + @@ -480,7 +441,7 @@ etoile-actif.png - + @@ -509,7 +470,7 @@ 0-actif.png - + @@ -538,7 +499,7 @@ diese-actif.png - +
{{0, 58}, {320, 260}} @@ -553,76 +514,111 @@
IBCocoaTouchFramework
- + - 292 + 288 YES - - + + 292 - {320, 80} - + {106, 69} + - + _NS:9 - NO - IBCocoaTouchFramework - - NSImage - champ-saisie-numero.png - - - - - 292 - {320, 60} - - - - - 3 - MSAwAA - NO - NO IBCocoaTouchFramework + 0 0 - - sip: - - YES - 15 - - 1 - 3 - IBCocoaTouchFramework + NO + NO + + + NSImage + add-contact-over.png - 1 - - Helvetica - Helvetica - 0 - 36 + + NSImage + add-contact-inactif.png - - Helvetica - 36 - 16 + + NSImage + add-contact-actif.png + + 2 + 15 + + + + + + 292 + {{106, 0}, {108, 69}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + appeler-over.png + + + NSImage + appeler-actif.png + + + + + + + 292 + {{214, 0}, {106, 69}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + backspace-over.png + + + NSImage + backspace-actif.png + + + - {320, 80} + {{0, 305}, {320, 69}} - + _NS:9 3 MSAwAA - YES IBCocoaTouchFramework @@ -651,131 +647,123 @@ - address - - - - 12 - - - - hash - - - - 46 - - - - zero - - - - 54 - - - - star - - - - 51 - - - - nine - - - - 47 - - - - eight - - - - 43 - - - - six - - - - 50 - - - - seven - - - - 49 - - - - five - - - - 44 - - - - four - - - - 45 - - - - three - - - - 52 - - - - two - - - - 53 - - - - one + oneButton - 48 + 191 - dialerView + twoButton - + - 181 + 192 - erase + threeButton + + + + 193 + + + + fourButton + + + + 194 + + + + fiveButton + + + + 195 + + + + sixButton + + + + 196 + + + + sevenButton + + + + 197 + + + + zeroButton + + + + 198 + + + + starButton + + + + 199 + + + + nineButton + + + + 200 + + + + hashButton + + + + 201 + + + + eraseButton - 186 + 202 - callLarge + callButton - 189 + 203 + + + + eightButton + + + + 204 + + + + addressField + + + + 205 @@ -783,7 +771,7 @@ - 19 + 190 @@ -957,9 +945,9 @@ YES - - + + toolBar @@ -970,18 +958,18 @@ addContact - - 184 - - - call - 185 backspace + + 184 + + + call + @@ -1045,7 +1033,7 @@ YES - PhoneViewController + DialerViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1059,7 +1047,7 @@ UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIEraseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1113,53 +1101,13 @@ - 189 + 205 YES - MainScreenWithVideoPreview - UIViewController - - YES - - YES - phoneMainView - window - - - YES - PhoneViewController - UIWindow - - - - YES - - YES - phoneMainView - window - - - YES - - phoneMainView - PhoneViewController - - - window - UIWindow - - - - - IBProjectSource - ./Classes/MainScreenWithVideoPreview.h - - - - PhoneViewController + DialerViewController UIViewController onAddContact: @@ -1176,52 +1124,36 @@ YES YES - address - backToCallView - callLarge - callShort - dialerView - eight - erase - five - four - hash - mMainScreenWithVideoPreview - myTabBarController - nine - one - seven - six - star - status - statusViewHolder - switchCamera - three - two - zero + addressField + callButton + eightButton + eraseButton + fiveButton + fourButton + hashButton + nineButton + oneButton + sevenButton + sixButton + starButton + threeButton + twoButton + zeroButton YES UITextField UIButton UIButton - UIButton - UIView - UIButton UIEraseButton UIButton UIButton UIButton - MainScreenWithVideoPreview - UITabBarController UIButton UIButton UIButton UIButton UIButton - UILabel - UIView - UIButton UIButton UIButton UIButton @@ -1231,129 +1163,89 @@ YES YES - address - backToCallView - callLarge - callShort - dialerView - eight - erase - five - four - hash - mMainScreenWithVideoPreview - myTabBarController - nine - one - seven - six - star - status - statusViewHolder - switchCamera - three - two - zero + addressField + callButton + eightButton + eraseButton + fiveButton + fourButton + hashButton + nineButton + oneButton + sevenButton + sixButton + starButton + threeButton + twoButton + zeroButton YES - address + addressField UITextField - backToCallView + callButton UIButton - callLarge + eightButton UIButton - callShort - UIButton - - - dialerView - UIView - - - eight - UIButton - - - erase + eraseButton UIEraseButton - five + fiveButton UIButton - four + fourButton UIButton - hash + hashButton UIButton - mMainScreenWithVideoPreview - MainScreenWithVideoPreview - - - myTabBarController - UITabBarController - - - nine + nineButton UIButton - one + oneButton UIButton - seven + sevenButton UIButton - six + sixButton UIButton - star + starButton UIButton - status - UILabel - - - statusViewHolder - UIView - - - switchCamera + threeButton UIButton - three + twoButton UIButton - two - UIButton - - - zero + zeroButton UIButton IBProjectSource - ./Classes/PhoneViewController.h + ./Classes/DialerViewController.h @@ -1374,12 +1266,20 @@ UIEraseButton - UIButton + UILongTouchButton IBProjectSource ./Classes/UIEraseButton.h + + UILongTouchButton + UIButton + + IBProjectSource + ./Classes/UILongTouchButton.h + + 0 @@ -1456,13 +1356,13 @@ {220, 113} {210, 113} {210, 113} - {210, 143} - {210, 143} - {210, 143} - {220, 143} - {220, 143} - {210, 143} - {210, 143} + {213, 138} + {213, 138} + {213, 138} + {214, 138} + {214, 138} + {213, 138} + {213, 138} {640, 135} {210, 113} {210, 113} diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index ae8fc4aae..052af435d 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -110,14 +110,8 @@ // Go to dialer view NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys: - [[NSDictionary alloc] initWithObjectsAndKeys: - [[NSArray alloc] initWithObjects: dispName, nil] - , @"setText:", nil] - , @"mDisplayName", - [[NSDictionary alloc] initWithObjectsAndKeys: - [[NSArray alloc] initWithObjects: phoneNumber, nil] - , @"setText:", nil] - , @"address", + [[NSArray alloc] initWithObjects: phoneNumber, nil] + , @"setAddress:", nil]; [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; diff --git a/Classes/HistoryViewController.h b/Classes/HistoryViewController.h index bfd90386e..7b7742e1d 100644 --- a/Classes/HistoryViewController.h +++ b/Classes/HistoryViewController.h @@ -23,11 +23,15 @@ @interface HistoryViewController : UIViewController { HistoryTableViewController *tableController; + UITableView *tableView; + UIButton *allButton; UIButton *missedButton; } @property (nonatomic, retain) IBOutlet HistoryTableViewController* tableController; +@property (nonatomic, retain) IBOutlet UITableView *tableView; + @property (nonatomic, retain) IBOutlet UIButton* allButton; @property (nonatomic, retain) IBOutlet UIButton* missedButton; diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 502827320..ea27f9250 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -21,7 +21,9 @@ @implementation HistoryViewController +@synthesize tableView; @synthesize tableController; + @synthesize allButton; @synthesize missedButton; @@ -31,6 +33,11 @@ typedef enum _HistoryView { History_MAX } HistoryView; +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [self.tableView reloadData]; +} + - (void)changeView: (HistoryView) view { if(view == History_All) { allButton.selected = TRUE; diff --git a/Classes/HistoryViewController.xib b/Classes/HistoryViewController.xib index 9fb67afc8..dc4740a57 100644 --- a/Classes/HistoryViewController.xib +++ b/Classes/HistoryViewController.xib @@ -156,7 +156,6 @@ {{0, 58}, {320, 402}} - _NS:9 3 @@ -165,7 +164,7 @@ YES IBCocoaTouchFramework 0.0 - 15 + 10 0.0 0.0 YES @@ -234,6 +233,14 @@ 28 + + + tableView + + + + 31 + onAllClick: @@ -370,7 +377,7 @@ - 30 + 31 @@ -403,6 +410,7 @@ UIButton UIButton HistoryTableViewController + UITableView @@ -417,6 +425,10 @@ tableController HistoryTableViewController + + tableView + UITableView + IBProjectSource diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index ccb5f3779..0f26a1cb2 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -20,17 +20,17 @@ #import #import -#import "linphonecore.h" -#import "PhoneViewController.h" #import "ConferenceCallDetailView.h" #import "UIVideoButton.h" #import "VideoZoomHandler.h" +#import "UILinphone.h" +#import "CallDelegate.h" -#include "UILinphone.h" +#include "linphonecore.h" @class VideoViewController; -@interface InCallViewController : UIViewController { +@interface InCallViewController : UIViewController { UIView* controlSubView, *hangUpView; @@ -66,7 +66,6 @@ #ifdef TEST_VIDEO_VIEW_CHANGE UIView* testVideoView; #endif - UIImageView* videoCallQuality; UICamSwitch* videoCameraSwitch; UIActivityIndicatorView* videoUpdateIndicator; UIActivityIndicatorView* videoWaitingForFirstImage; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 943341133..79f1796ef 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -18,7 +18,6 @@ */ #import "IncallViewController.h" -#import "VideoViewController.h" #import "LinphoneManager.h" #import #import @@ -186,7 +185,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { // show controls [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; - [controlSubView setAlpha:1.0]; + [[LinphoneManager instance] showTabBar: true]; [hangUpView setAlpha:1.0]; if ([LinphoneManager instance].frontCamId !=nil ) { // only show camera switch button if we have more than 1 camera @@ -205,6 +204,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [hangUpView setAlpha:0.0]; [videoCameraSwitch setAlpha:0.0]; [UIView commitAnimations]; + [[LinphoneManager instance] showTabBar: false]; hideControlsTimer = nil; } @@ -262,7 +262,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; [videoGroup setAlpha:1.0]; - [controlSubView setAlpha:0.0]; + [hangUpView setAlpha:0.0]; [callTableView setAlpha:0.0]; [UIView commitAnimations]; @@ -273,7 +273,8 @@ void addAnimationFadeTransition(UIView* view, float duration) { linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)videoView); linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)videoPreview); - [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationSlide]; + [[LinphoneManager instance] fullScreen: true]; + [[LinphoneManager instance] showTabBar: false]; // This is a bit hacky: take into account toolbar removal (only once). // It's probably possible to do this from the Xib file (?) @@ -295,7 +296,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; [videoGroup setAlpha:0.0]; - [controlSubView setAlpha:1.0]; + [[LinphoneManager instance] showTabBar: true]; [hangUpView setAlpha:1.0]; [callTableView setAlpha:1.0]; [videoCameraSwitch setAlpha:0.0]; @@ -317,7 +318,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { dialer.imageView.transform = CGAffineTransformIdentity; videoCallQuality.transform = CGAffineTransformIdentity; - [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; + [[LinphoneManager instance] fullScreen:false]; } /* Update in call view buttons (visibility, state, ...) and call duration text. @@ -327,11 +328,9 @@ void addAnimationFadeTransition(UIView* view, float duration) { // check LinphoneCore is initialized LinphoneCore* lc = nil; - @try { + if([LinphoneManager isLcReady]) lc = [LinphoneManager getLc]; - } @catch (NSException* exc) { - return; - } + // 1 call: show pause button, otherwise show merge btn // [LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; // reload table (glow update + call duration) @@ -395,17 +394,11 @@ void addAnimationFadeTransition(UIView* view, float duration) { if ([LinphoneManager runningOnIpad]) { ms_message("Running on iPad"); - mVideoViewController = [[VideoViewController alloc] initWithNibName:@"VideoViewController-ipad" - bundle:[NSBundle mainBundle]]; conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView-ipad" bundle:[NSBundle mainBundle]]; - } else { - mVideoViewController = [[VideoViewController alloc] initWithNibName:@"VideoViewController" - bundle:[NSBundle mainBundle]]; conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView" bundle:[NSBundle mainBundle]]; - } UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)]; @@ -630,12 +623,12 @@ void addAnimationFadeTransition(UIView* view, float duration) { if (modalVC != nil) { mVideoIsPending=FALSE; // clear previous native window ids - if (modalVC == mVideoViewController) { + /*if (modalVC == mVideoViewController) { mVideoShown=FALSE; linphone_core_set_native_video_window_id([LinphoneManager getLc],0); linphone_core_set_native_preview_window_id([LinphoneManager getLc],0); - } - [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; + }*/ + [[LinphoneManager instance] fullScreen:false]; [self dismissModalViewControllerAnimated:FALSE];//just in case } @@ -777,19 +770,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { if (call->videostream) { linphone_call_set_next_video_frame_decoded_callback(call, hideSpinner, self); } - return; - - if (mIncallViewIsReady) { - [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; - mVideoShown=TRUE; - if (self.modalViewController != mVideoViewController) - [self presentModalViewController:mVideoViewController animated:true]; - else - ms_message("Do not present again videoViewController"); - } else { - //postpone presentation - mVideoIsPending=TRUE; - } } -(void) dismissActionSheet: (id)o { diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index f8880c72f..1d2335581 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -12,7 +12,6 @@ YES - IBUIImageView IBUIButton IBUITableView IBUIView @@ -67,28 +66,16 @@ {{240, 354}, {80, 106}} - IBCocoaTouchFramework - - - 292 - {{4, 428}, {28, 28}} - - - - _NS:567 - NO - IBCocoaTouchFramework - 292 {{141, 212}, {37, 37}} - + _NS:1030 NO IBCocoaTouchFramework @@ -100,7 +87,7 @@ {320, 460} - + _NS:196 2 @@ -514,30 +501,6 @@ 141 - - - videoPreview - - - - 130 - - - - videoCallQuality - - - - 138 - - - - videoView - - - - 133 - callTableView @@ -562,14 +525,6 @@ 129 - - - videoWaitingForFirstImage - - - - 145 - star @@ -682,6 +637,30 @@ 45 + + + videoView + + + + 133 + + + + videoWaitingForFirstImage + + + + 145 + + + + videoPreview + + + + 130 + doAction: @@ -754,7 +733,6 @@ YES - @@ -766,32 +744,6 @@ - - 144 - - - - - 137 - - - videocallquality - - - 127 - - - preview - - - 132 - - - YES - - - display - 27 @@ -892,6 +844,23 @@ 5 + + 132 + + + display + + + 144 + + + + + 127 + + + preview + @@ -906,7 +875,6 @@ 126.IBPluginDependency 127.IBPluginDependency 132.IBPluginDependency - 137.IBPluginDependency 140.CustomClassName 140.IBPluginDependency 144.IBPluginDependency @@ -949,7 +917,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICamSwitch com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1295,203 +1262,6 @@ ./Classes/UIDigitButton.h - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UIMicroButton - UIToggleButton - - IBProjectSource - ./Classes/UIMicroButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - VideoViewController - UIViewController - - YES - - YES - mCallQuality - mCallQualityLandLeft - mCallQualityLandRight - mCamSwitch - mCamSwitchLandLeft - mCamSwitchLandRight - mDisplay - mDisplayLandLeft - mDisplayLandRight - mHangUp - mHangUpLandLeft - mHangUpLandRight - mLandscapeLeft - mLandscapeRight - mMute - mMuteLandLeft - mMuteLandRight - mPortrait - mPreview - mPreviewLandLeft - mPreviewLandRight - - - YES - UIImageView - UIImageView - UIImageView - UICamSwitch - UICamSwitch - UICamSwitch - UIView - UIView - UIView - UIHangUpButton - UIHangUpButton - UIHangUpButton - UIView - UIView - UIMicroButton - UIMicroButton - UIMicroButton - UIView - UIView - UIView - UIView - - - - YES - - YES - mCallQuality - mCallQualityLandLeft - mCallQualityLandRight - mCamSwitch - mCamSwitchLandLeft - mCamSwitchLandRight - mDisplay - mDisplayLandLeft - mDisplayLandRight - mHangUp - mHangUpLandLeft - mHangUpLandRight - mLandscapeLeft - mLandscapeRight - mMute - mMuteLandLeft - mMuteLandRight - mPortrait - mPreview - mPreviewLandLeft - mPreviewLandRight - - - YES - - mCallQuality - UIImageView - - - mCallQualityLandLeft - UIImageView - - - mCallQualityLandRight - UIImageView - - - mCamSwitch - UICamSwitch - - - mCamSwitchLandLeft - UICamSwitch - - - mCamSwitchLandRight - UICamSwitch - - - mDisplay - UIView - - - mDisplayLandLeft - UIView - - - mDisplayLandRight - UIView - - - mHangUp - UIHangUpButton - - - mHangUpLandLeft - UIHangUpButton - - - mHangUpLandRight - UIHangUpButton - - - mLandscapeLeft - UIView - - - mLandscapeRight - UIView - - - mMute - UIMicroButton - - - mMuteLandLeft - UIMicroButton - - - mMuteLandRight - UIMicroButton - - - mPortrait - UIView - - - mPreview - UIView - - - mPreviewLandLeft - UIView - - - mPreviewLandRight - UIView - - - - - IBProjectSource - ./Classes/VideoViewController.h - -
0 diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 6a95c069e..1a80a09a0 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -18,7 +18,6 @@ */ #import "PhoneMainView.h" -#import "PhoneViewController.h" #import "linphoneAppDelegate.h" #import "AddressBook/ABPerson.h" diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index 36bb3e922..7786e9e88 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -86,32 +86,35 @@ typedef struct _LinphoneCallAppData { @public CallContext currentCallContextBeforeGoingBackground; } -+(LinphoneManager*) instance; -+(LinphoneCore*) getLc; -+(BOOL) runningOnIpad; -+(void) set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason; -+(void) set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason; -+(void) logUIElementPressed:(const char*) name; ++ (LinphoneManager*) instance; ++ (LinphoneCore*) getLc; ++ (BOOL)isLcReady; ++ (BOOL)runningOnIpad; ++ (void)set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason; ++ (void)set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason; ++ (void)logUIElementPressed:(const char*) name; + (void)abstractCall:(id) object dict:(NSDictionary *) dict; --(void) registerLogView:(id) view; +- (void)registerLogView:(id) view; --(void) startLibLinphone; --(BOOL) isNotIphone3G; --(void) destroyLibLinphone; +- (void)startLibLinphone; +- (BOOL)isNotIphone3G; +- (void)destroyLibLinphone; --(BOOL) enterBackgroundMode; --(void) becomeActive; --(void) kickOffNetworkConnection; --(NSString*) getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log; --(UIImage*) getImageFromAddressBook:(NSString*) number; +- (BOOL)enterBackgroundMode; +- (void)becomeActive; +- (void)kickOffNetworkConnection; +- (NSString*)getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log; +- (UIImage*)getImageFromAddressBook:(NSString*) number; --(BOOL) reconfigureLinphoneIfNeeded:(NSDictionary *)oldSettings; --(void) setupNetworkReachabilityCallback; --(void) refreshRegisters; +- (BOOL)reconfigureLinphoneIfNeeded:(NSDictionary *)oldSettings; +- (void)setupNetworkReachabilityCallback; +- (void)refreshRegisters; --(void) changeView:(PhoneView) view; --(void) changeView:(PhoneView) view dict:(NSDictionary *)dict; --(PhoneView) currentView; +- (void)changeView:(PhoneView) view; +- (void)changeView:(PhoneView) view dict:(NSDictionary *)dict; +- (void)showTabBar:(BOOL) show; +- (void)fullScreen:(BOOL) enabled; +- (PhoneView) currentView; @property Connectivity connectivity; @property (readonly) const char* frontCamId; diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 31655c117..4a520d1a0 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -80,6 +80,20 @@ extern void libmsbcg729_init(); return theLinphoneManager; } +- (void) showTabBar:(BOOL) show { + NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithBool:show] forKey:@"tabBar"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; +} + +- (void)fullScreen:(BOOL) enabled { + if(enabled) + [[UIApplication sharedApplication] setStatusBarHidden:enabled withAnimation:UIStatusBarAnimationSlide]; + else + [[UIApplication sharedApplication] setStatusBarHidden:enabled withAnimation:UIStatusBarAnimationNone]; + NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithBool:enabled] forKey:@"fullscreen"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; +} + - (void)changeView:(PhoneView) view { [self changeView:view dict:nil]; } @@ -195,56 +209,19 @@ extern void libmsbcg729_init(); [[NSString stringWithFormat:@"%c", message] autorelease], @"message", nil]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self userInfo:dict]; - - const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); - NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); - switch (new_state) { - case LinphoneCallError: { - /* - NSString* lTitle= state->message!=nil?[NSString stringWithCString:state->message length:strlen(state->message)]: @"Error"; - NSString* lMessage=lTitle; - */ - NSString* lMessage; - NSString* lTitle; - LinphoneProxyConfig* proxyCfg; - //get default proxy - linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); - if (proxyCfg == nil) { - lMessage=NSLocalizedString(@"Please make sure your device is connected to the internet and double check your SIP account configuration in the settings.",nil ); - } else { - lMessage=[NSString stringWithFormat : NSLocalizedString(@"Cannot call %@",nil),lUserName]; - } - - if (linphone_call_get_reason(call) == LinphoneReasonNotFound) { - lMessage=[NSString stringWithFormat : NSLocalizedString(@"'%@' not registered to Service",nil), lUserName]; - } else { - if (message!=nil){ - lMessage=[NSString stringWithFormat : NSLocalizedString(@"%@\nReason was: %s",nil),lMessage, message]; - } - } - lTitle=NSLocalizedString(@"Call failed",nil); - UIAlertView* error = [[UIAlertView alloc] initWithTitle:lTitle - message:lMessage - delegate:nil - cancelButtonTitle:NSLocalizedString(@"Dismiss",nil) - otherButtonTitles:nil]; - [error show]; - [error release]; - break; - } - default: - break; - } - } -+(LinphoneCore*) getLc { ++ (LinphoneCore*)getLc { if (theLinphoneCore==nil) { @throw([NSException exceptionWithName:@"LinphoneCoreException" reason:@"Linphone core not initialized yet" userInfo:nil]); } return theLinphoneCore; } ++ (BOOL)isLcReady { + return theLinphoneCore != nil; +} + - (void)addLog:(NSString*) log { [mLogView addLog:log]; } diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 0171dfccf..d3b0eb147 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -37,11 +37,8 @@ - (void)callUpdate: (NSNotification*) notif { // check LinphoneCore is initialized LinphoneCore* lc = nil; - @try { + if([LinphoneManager isLcReady]) lc = [LinphoneManager getLc]; - } @catch (NSException* exc) { - return; - } //TODO //[LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 2b55621c8..88a73a157 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -38,10 +38,10 @@ -2147483356 - {320, 135} + {{0, 10}, {320, 125}} - + _NS:9 3 @@ -50,6 +50,9 @@ 2 + NO + NO + NO -1 NO IBCocoaTouchFramework @@ -60,7 +63,7 @@ {80, 67} - + _NS:9 NO @@ -70,6 +73,7 @@ 0 0 NO + NO 3 MQA @@ -86,6 +90,10 @@ NSImage video-ON-over.png + + NSImage + video-OFF-disabled.png + NSImage video-ON-actif.png @@ -318,7 +326,7 @@ {320, 135} - + _NS:9 1 @@ -469,7 +477,7 @@ UIVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -609,6 +617,7 @@ {160, 134} {160, 134} {160, 134} + {160, 134} {160, 134} {160, 134} diff --git a/Classes/LinphoneUI/UIEraseButton.h b/Classes/LinphoneUI/UIEraseButton.h index 168d930f1..44eebd84e 100644 --- a/Classes/LinphoneUI/UIEraseButton.h +++ b/Classes/LinphoneUI/UIEraseButton.h @@ -19,8 +19,9 @@ #import +#import "UILongTouchButton.h" -@interface UIEraseButton : UIButton { +@interface UIEraseButton : UILongTouchButton { @private UITextField* mAddress; diff --git a/Classes/LinphoneUI/UIEraseButton.m b/Classes/LinphoneUI/UIEraseButton.m index 1113ba817..0f2011267 100644 --- a/Classes/LinphoneUI/UIEraseButton.m +++ b/Classes/LinphoneUI/UIEraseButton.m @@ -21,15 +21,22 @@ @implementation UIEraseButton --(void) touchUp:(id) sender { - if ([mAddress.text length] > 0) { +-(void) touchDown:(id) sender { + if ([mAddress.text length] > 0) { [mAddress setText:[mAddress.text substringToIndex:[mAddress.text length]-1]]; - } + } } -(void) initWithAddressField:(UITextField*) address { mAddress = address; - [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; + [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; +} + +- (void)onRepeatTouch { +} + +- (void)onLongTouch { + [mAddress setText:@""]; } - (void)dealloc { diff --git a/Classes/LinphoneUI/UILongTouchButton.h b/Classes/LinphoneUI/UILongTouchButton.h new file mode 100644 index 000000000..e7fa2efb8 --- /dev/null +++ b/Classes/LinphoneUI/UILongTouchButton.h @@ -0,0 +1,31 @@ +/* UILongTouchButton.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@protocol UILongTouchButtonDelegate +-(void) onRepeatTouch; +-(void) onLongTouch; +@end + +@interface UILongTouchButton : UIButton { + +} + +@end diff --git a/Classes/LinphoneUI/UILongTouchButton.m b/Classes/LinphoneUI/UILongTouchButton.m new file mode 100644 index 000000000..616aa87c7 --- /dev/null +++ b/Classes/LinphoneUI/UILongTouchButton.m @@ -0,0 +1,76 @@ +/* UILongTouchButton.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UILongTouchButton.h" + +@implementation UILongTouchButton + +- (id)init { + [self addTarget:self action:@selector(___touchDown:) forControlEvents:UIControlEventTouchDown]; + [self addTarget:self action:@selector(___touchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside]; + return self; +} + +- (void)___touchDown:(id) sender { + [self performSelector:@selector(doLongTouch) withObject:nil afterDelay:0.5]; +} + +- (void)___touchUp:(id) sender { + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doLongTouch) object:nil]; + [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doRepeatTouch) object:nil]; +} + +- (void)doLongTouch { + [self onLongTouch]; + [self onRepeatTouch]; + [self performSelector:@selector(doRepeatTouch) withObject:nil afterDelay:0.1]; +} + +- (void)doRepeatTouch { + [self onRepeatTouch]; + [self performSelector:@selector(doRepeatTouch) withObject:nil afterDelay:0.1]; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self init]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self init]; + } + return self; +} + +- (void)onRepeatTouch { + [NSException raise:NSInternalInconsistencyException + format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; +} + +- (void)onLongTouch { + [NSException raise:NSInternalInconsistencyException + format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; +} + +@end diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib index bdd3c6dba..3779c3709 100644 --- a/Classes/LinphoneUI/UIMainBar.xib +++ b/Classes/LinphoneUI/UIMainBar.xib @@ -38,7 +38,7 @@ -2147483356 - {{0, 7}, {320, 65}} + {{0, 11}, {320, 66}} @@ -50,6 +50,9 @@ 2 + NO + NO + NO -1 NO IBCocoaTouchFramework @@ -57,7 +60,7 @@ 292 - {64, 72} + {64, 77} @@ -107,7 +110,7 @@ 292 - {{64, 0}, {64, 72}} + {{64, 0}, {64, 77}} @@ -141,38 +144,10 @@ - - - 292 - {{128, 0}, {64, 72}} - - - - _NS:9 - NO - - Dialer - - IBCocoaTouchFramework - 0 - 0 - NO - - - NSImage - dialer-actif.png - - - NSImage - dialer-over.png - - - - 292 - {{192, 0}, {64, 72}} + {{192, 0}, {64, 77}} @@ -206,13 +181,40 @@ + + + 292 + {{128, 0}, {64, 77}} + + + + _NS:9 + NO + + Dialer + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + dialer-actif.png + + + NSImage + dialer-over.png + + + + 292 - {{256, 0}, {64, 72}} + {{256, 0}, {64, 77}} - _NS:9 NO @@ -244,7 +246,7 @@ - {320, 72} + {320, 77} @@ -267,14 +269,6 @@ 13 - - - dialerButton - - - - 12 - view @@ -307,6 +301,14 @@ 29 + + + dialerButton + + + + 12 + onChatClick: @@ -378,10 +380,10 @@ - + mainTabBar @@ -389,6 +391,7 @@ 4 + mask @@ -404,12 +407,6 @@ history - - 7 - - - dialer - 8 @@ -422,6 +419,12 @@ settings + + 7 + + + dialer + @@ -528,20 +531,20 @@ YES 3 - {127, 144} - {127, 144} - {127, 144} - {132, 144} - {132, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} - {127, 144} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} 1181 diff --git a/Classes/LinphoneUI/UIMicroButton.m b/Classes/LinphoneUI/UIMicroButton.m index 1238d0580..d3b506951 100644 --- a/Classes/LinphoneUI/UIMicroButton.m +++ b/Classes/LinphoneUI/UIMicroButton.m @@ -32,9 +32,9 @@ } - (bool)onUpdate { - @try { + if([LinphoneManager isLcReady]) { return linphone_core_is_mic_muted([LinphoneManager getLc]) == false; - } @catch(NSException* e) { + } else { //not ready yet return true; } diff --git a/Classes/LinphoneUI/UIPauseButton.m b/Classes/LinphoneUI/UIPauseButton.m index b271839ef..1ff3186cc 100644 --- a/Classes/LinphoneUI/UIPauseButton.m +++ b/Classes/LinphoneUI/UIPauseButton.m @@ -60,7 +60,7 @@ - (bool)onUpdate { // TODO: disable pause on not running call - @try { + if([LinphoneManager isLcReady]) { bool ret = false; LinphoneCall* currentCall = [UIPauseButton getCall]; if (currentCall != nil) { @@ -84,7 +84,7 @@ [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; } return ret; - } @catch(NSException* e) { + } else { //not ready yet return false; } diff --git a/Classes/LinphoneUI/UIStateBar.h b/Classes/LinphoneUI/UIStateBar.h index 33a4a9ca5..e9033cb53 100644 --- a/Classes/LinphoneUI/UIStateBar.h +++ b/Classes/LinphoneUI/UIStateBar.h @@ -20,13 +20,13 @@ #import @interface UIStateBar : UIViewController { - UIImageView* image; - UIActivityIndicatorView* spinner; - UILabel* label; + UIImageView* registrationStateImage; + UILabel* registrationStateLabel; + UIImageView* callQualityImage; } -@property (nonatomic, retain) IBOutlet UIImageView* image; -@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* spinner; -@property (nonatomic, retain) IBOutlet UILabel* label; +@property (nonatomic, retain) IBOutlet UIImageView* registrationStateImage; +@property (nonatomic, retain) IBOutlet UILabel* registrationStateLabel; +@property (nonatomic, retain) IBOutlet UIImageView* callQualityImage; @end diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index 22059760b..524f1366f 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -24,15 +24,28 @@ @implementation UIStateBar -@synthesize image; -@synthesize spinner; -@synthesize label; +@synthesize registrationStateImage; +@synthesize registrationStateLabel; +@synthesize callQualityImage; + +NSTimer *callQualityTimer; - (void)viewDidLoad { [super viewDidLoad]; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) name:@"LinphoneRegistrationUpdate" object:nil]; + + // Set callQualityTimer + [callQualityImage setHidden: true]; + callQualityTimer = [NSTimer scheduledTimerWithTimeInterval:1 + target:self + selector:@selector(callQualityUpdate) + userInfo:nil + repeats:YES]; + + // Update to default state + [self proxyConfigUpdate: NULL]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { @@ -40,24 +53,56 @@ } - (void)registrationUpdate: (NSNotification*) notif { - LinphoneProxyConfig* config; + LinphoneProxyConfig* config = NULL; linphone_core_get_default_proxy([LinphoneManager getLc], &config); - + [self proxyConfigUpdate:config]; +} + +- (void)callQualityUpdate { + UIImage *image = nil; + if([LinphoneManager isLcReady]) { + LinphoneCall *call = linphone_core_get_current_call([LinphoneManager getLc]); + if(call != NULL) { + float quality = linphone_call_get_average_quality(call); + if(quality < 1) { + image = [UIImage imageNamed:@"quality-call-0.png"]; + } else if (quality < 2) { + image = [UIImage imageNamed:@"quality-call-1.png"]; + } else if (quality < 3) { + image = [UIImage imageNamed:@"quality-call-2.png"]; + } else { + image = [UIImage imageNamed:@"quality-call-3.png"]; + } + } + } + if(image != nil) { + [callQualityImage setHidden: false]; + [callQualityImage setImage: image]; + } else { + [callQualityImage setHidden: true]; + } +} + +- (void)proxyConfigUpdate: (LinphoneProxyConfig*) config { LinphoneRegistrationState state; NSString* message = nil; - + UIImage* image = nil; + if (config == NULL) { state = LinphoneRegistrationNone; - message = linphone_core_is_network_reachabled([LinphoneManager getLc]) ? NSLocalizedString(@"No SIP account configured", nil) : NSLocalizedString(@"Network down", nil); + if(![LinphoneManager isLcReady] || linphone_core_is_network_reachabled([LinphoneManager getLc])) + message = NSLocalizedString(@"No SIP account configured", nil); + else + message = NSLocalizedString(@"Network down", nil); } else { state = linphone_proxy_config_get_state(config); - + switch (state) { case LinphoneRegistrationOk: message = @"Registered"; break; case LinphoneRegistrationNone: - case LinphoneRegistrationCleared: - message = @"Not registered"; break; + case LinphoneRegistrationCleared: + message = @"Not registered"; break; case LinphoneRegistrationFailed: message = @"Registration failed"; break; case LinphoneRegistrationProgress: @@ -66,44 +111,46 @@ default: break; } } - - label.hidden = NO; + + registrationStateLabel.hidden = NO; switch(state) { case LinphoneRegistrationCleared: -/* image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_orange.png"]]; - [spinner stopAnimating]; - [label setText:message != nil ? message : NSLocalizedString(@"No SIP account defined", nil)];*/ + /* image.hidden = NO; + [image setImage:[UIImage imageNamed:@"status_orange.png"]]; + [spinner stopAnimating]; + [label setText:message != nil ? message : NSLocalizedString(@"No SIP account defined", nil)];*/ + break; case LinphoneRegistrationFailed: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_error.png"]]; - [spinner stopAnimating]; - [label setText:message]; + registrationStateImage.hidden = NO; + image = [UIImage imageNamed:@"status_error.png"]; + break; case LinphoneRegistrationNone: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_disconnected.png"]]; - [spinner stopAnimating]; - [label setText:message]; + registrationStateImage.hidden = NO; + image =[UIImage imageNamed:@"status_disconnected.png"]; + break; case LinphoneRegistrationProgress: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_inprogress.png"]]; - [spinner stopAnimating]; - [label setText:message]; + registrationStateImage.hidden = NO; + image = [UIImage imageNamed:@"status_inprogress.png"]; + break; case LinphoneRegistrationOk: - image.hidden = NO; - [image setImage:[UIImage imageNamed:@"status_connected.png"]]; - [spinner stopAnimating]; - [label setText:message]; + registrationStateImage.hidden = NO; + image = [UIImage imageNamed:@"status_connected.png"]; + break; } + [registrationStateLabel setText:message]; + [registrationStateImage setImage:image]; } - (void) viewDidUnload { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [callQualityTimer invalidate]; } - (void) dealloc { - [super dealloc]; [[NSNotificationCenter defaultCenter] removeObserver:self]; + [callQualityTimer invalidate]; + [callQualityTimer release]; + [super dealloc]; } @end diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib index 013370200..d692bb7d8 100644 --- a/Classes/LinphoneUI/UIStateBar.xib +++ b/Classes/LinphoneUI/UIStateBar.xib @@ -53,7 +53,7 @@ - -2147483356 + 292 {{6, 6}, {10, 10}} @@ -63,16 +63,16 @@ IBCocoaTouchFramework NSImage - status_gray.png + status_disconnected.png - -2147483356 - {{22, 0}, {298, 20}} + 292 + {{22, 0}, {189, 20}} - + _NS:328 NO YES @@ -97,6 +97,17 @@ 16 + + + 292 + {{219, 3}, {27, 17}} + + + + _NS:567 + NO + IBCocoaTouchFramework + {320, 23} @@ -112,22 +123,6 @@ - - - image - - - - 8 - - - - label - - - - 9 - view @@ -136,6 +131,30 @@ 11 + + + registrationStateImage + + + + 14 + + + + registrationStateLabel + + + + 15 + + + + callQualityImage + + + + 16 + @@ -163,6 +182,7 @@ + @@ -170,13 +190,13 @@ 6 - status + registrationStateLabel 5 - image + registrationStateImage 12 @@ -184,6 +204,12 @@ background + + 13 + + + callQualityImage +
@@ -192,6 +218,7 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -200,9 +227,39 @@ - 12 + 16 +
+ + + + UIStateBar + UIViewController + + UIImageView + UIImageView + UILabel + + + + callQualityImage + UIImageView + + + registrationStateImage + UIImageView + + + registrationStateLabel + UILabel + + + + IBProjectSource + ./Classes/UIStateBar.h + + + - 0 IBCocoaTouchFramework @@ -213,7 +270,7 @@ 3 {640, 46} - {25, 23} + {18, 17} 1181 diff --git a/Classes/LinphoneUI/UIToggleButton.m b/Classes/LinphoneUI/UIToggleButton.m index 73e3caae3..c5a2b62c5 100644 --- a/Classes/LinphoneUI/UIToggleButton.m +++ b/Classes/LinphoneUI/UIToggleButton.m @@ -41,7 +41,7 @@ return self.selected; } -- (id) init { +- (id)init { [self update]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; return self; diff --git a/Classes/LinphoneUI/UIVideoButton.m b/Classes/LinphoneUI/UIVideoButton.m index 8d13c0495..98687629a 100644 --- a/Classes/LinphoneUI/UIVideoButton.m +++ b/Classes/LinphoneUI/UIVideoButton.m @@ -66,7 +66,7 @@ } - (bool)onUpdate { - @try { + if([LinphoneManager isLcReady]) { bool val = false; LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]); if (currentCall) { @@ -83,7 +83,7 @@ [self setEnabled:FALSE]; } return val; - } @catch(NSException* e) { + } else { //not ready yet return false; } diff --git a/Classes/LinphoneUI/VideoZoomHandler.h b/Classes/LinphoneUI/VideoZoomHandler.h index 6065d2453..2b4bb3a86 100644 --- a/Classes/LinphoneUI/VideoZoomHandler.h +++ b/Classes/LinphoneUI/VideoZoomHandler.h @@ -1,10 +1,21 @@ -// -// VideoZoomHandler.h -// linphone -// -// Created by Pierre-Eric Pelloux-Prayer on 25/04/12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// +/* VideoZoomHandler.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ #import @@ -12,7 +23,8 @@ float zoomLevel, cx, cy; UIView* videoView; } --(void) setup: (UIView*) videoView; --(void) resetZoom; + +- (void) setup: (UIView*) videoView; +- (void) resetZoom; @end diff --git a/Classes/LinphoneUI/VideoZoomHandler.m b/Classes/LinphoneUI/VideoZoomHandler.m index 33c735f8f..ce529ba70 100644 --- a/Classes/LinphoneUI/VideoZoomHandler.m +++ b/Classes/LinphoneUI/VideoZoomHandler.m @@ -1,10 +1,21 @@ -// -// VideoZoomHandler.m -// linphone -// -// Created by Pierre-Eric Pelloux-Prayer on 25/04/12. -// Copyright (c) 2012 __MyCompanyName__. All rights reserved. -// +/* VideoZoomHandler.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ #import "VideoZoomHandler.h" #include "linphonecore.h" @@ -12,8 +23,7 @@ @implementation VideoZoomHandler - --(void) zoomInOut:(UITapGestureRecognizer*) reco { +- (void)zoomInOut:(UITapGestureRecognizer*) reco { if (zoomLevel != 1) zoomLevel = 1; else @@ -29,7 +39,7 @@ linphone_call_zoom_video(linphone_core_get_current_call([LinphoneManager getLc]), zoomLevel, &cx, &cy); } --(void) videoPan:(UIPanGestureRecognizer*) reco { +- (void)videoPan:(UIPanGestureRecognizer*) reco { if (zoomLevel <= 1.0) return; @@ -53,7 +63,7 @@ cy = y; } --(void) pinch:(UIPinchGestureRecognizer*) reco { +- (void)pinch:(UIPinchGestureRecognizer*) reco { float s = zoomLevel; // CGPoint point = [reco locationInView:videoGroup]; // float ccx = cx + (point.x / videoGroup.frame.size.width - 0.5) / s; @@ -76,13 +86,12 @@ linphone_call_zoom_video(linphone_core_get_current_call([LinphoneManager getLc]), s, &cx, &cy); } --(void) resetZoom { +- (void)resetZoom { zoomLevel = 1; cx = cy = 0.5; } - --(void) setup: (UIView*) view { +- (void)setup: (UIView*) view { videoView = view; UITapGestureRecognizer* doubleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(zoomInOut:)]; @@ -101,4 +110,5 @@ [self resetZoom]; } + @end diff --git a/Classes/MainScreenWithVideoPreview.h b/Classes/MainScreenWithVideoPreview.h index e981e7d63..c02bd0647 100644 --- a/Classes/MainScreenWithVideoPreview.h +++ b/Classes/MainScreenWithVideoPreview.h @@ -19,11 +19,12 @@ #import #import -#import "PhoneViewController.h" + +#import "DialerViewController.h" @interface MainScreenWithVideoPreview : UIViewController { UIWindow *window; - PhoneViewController* phoneMainView; + DialerViewController* phoneMainView; AVCaptureSession* session; @@ -36,6 +37,6 @@ -(void) useCameraAtIndex:(NSInteger)camIndex startSession:(BOOL)start; -@property (nonatomic, retain) IBOutlet PhoneViewController* phoneMainView; +@property (nonatomic, retain) IBOutlet DialerViewController* phoneMainView; @property (nonatomic, retain) IBOutlet UIWindow *window; @end diff --git a/Classes/MainScreenWithVideoPreview.m b/Classes/MainScreenWithVideoPreview.m index c35983820..ff2927ad7 100644 --- a/Classes/MainScreenWithVideoPreview.m +++ b/Classes/MainScreenWithVideoPreview.m @@ -129,12 +129,8 @@ -(void) showPreview:(BOOL) show { LinphoneCore* lc; - @try { + if([LinphoneManager isLcReady]) lc = [LinphoneManager getLc]; - } - @catch (NSException *exception) { - return; - } bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; @@ -160,7 +156,8 @@ -(void) viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - [phoneMainView.switchCamera addTarget:self action:@selector(switchCameraPressed) forControlEvents:UIControlEventTouchUpInside]; + //TODO + //[phoneMainView.switchCamera addTarget:self action:@selector(switchCameraPressed) forControlEvents:UIControlEventTouchUpInside]; } -(void) viewDidDisappear:(BOOL)animated { diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index d730d95e8..dfe55a503 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -18,9 +18,22 @@ */ #import -#import "LinphoneManager.h" -@interface PhoneMainView : UIViewController { +#import "LinphoneManager.h" +#import "CallDelegate.h" + +@interface ViewsDescription: NSObject{ +@public + UIViewController *content; + UIViewController *tabBar; + bool tabBarEnabled; + bool statusEnabled; + bool fullscreen; +} +-(id) copy; +@end + +@interface PhoneMainView : UIViewController { UIView *stateBarView; UIView *contentView; UIView *tabBarView; @@ -34,8 +47,11 @@ UIViewController *callTabBarController; UIViewController *mainTabBarController; UIViewController *incomingCallTabBarController; + ViewsDescription *currentViewDescription; + UIActionSheet *incomingCallActionSheet; } + @property (nonatomic, retain) IBOutlet UIView* stateBarView; @property (nonatomic, retain) IBOutlet UIView* contentView; @property (nonatomic, retain) IBOutlet UIView* tabBarView; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index fbc5c5301..72a6936ab 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -18,25 +18,22 @@ */ #import "PhoneMainView.h" -#import "PhoneViewController.h" +#import "DialerViewController.h" #import "HistoryViewController.h" #import "ContactsViewController.h" #import "InCallViewController.h" -typedef enum _TabBar { - TabBar_Main, - TabBar_END -} TabBar; - - -@interface ViewsDescription: NSObject{ - @public - UIViewController *content; - UIViewController *tabBar; - bool statusEnabled; -} -@end @implementation ViewsDescription + +-(id) copy { + ViewsDescription *copy = [ViewsDescription alloc]; + copy->content = self->content; + copy->tabBar = self->tabBar; + copy->tabBarEnabled = self->tabBarEnabled; + copy->statusEnabled = self->statusEnabled; + copy->fullscreen = self->fullscreen; + return copy; +} @end @implementation PhoneMainView @@ -52,33 +49,64 @@ typedef enum _TabBar { @synthesize incomingCallTabBarController; - (void)changeView: (NSNotification*) notif { - PhoneView view = [[notif.userInfo objectForKey: @"view"] intValue]; - ViewsDescription *description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; + NSNumber *viewId = [notif.userInfo objectForKey: @"view"]; + NSNumber *tabBar = [notif.userInfo objectForKey: @"tabBar"]; + NSNumber *fullscreen = [notif.userInfo objectForKey: @"fullscreen"]; - for (UIView *view in contentView.subviews) { - [view removeFromSuperview]; + if(viewId != nil) { + PhoneView view = [viewId intValue]; + currentViewDescription = [[viewDescriptions objectForKey:[NSNumber numberWithInt: view]] copy]; } - for (UIView *view in tabBarView.subviews) { - [view removeFromSuperview]; - } - if(description == nil) + + ViewsDescription *description = currentViewDescription; + if(description == nil) { return; + } UIView *innerView = description->content.view; - [contentView addSubview: innerView]; - CGRect contentFrame = contentView.frame; - if(description->statusEnabled) { - stateBarView.hidden = false; - contentFrame.origin.y = stateBarView.frame.size.height + stateBarView.frame.origin.y; - } else { - stateBarView.hidden = true; - contentFrame.origin.y = 0; + // Change view + if(viewId != nil) { + for (UIView *view in contentView.subviews) { + [view removeFromSuperview]; + } + for (UIView *view in tabBarView.subviews) { + [view removeFromSuperview]; + } + + [contentView addSubview: innerView]; + [tabBarView addSubview: description->tabBar.view]; } - // Resize tabbar + if(tabBar != nil) { + description->tabBarEnabled = [tabBar boolValue]; + } + + if(fullscreen != nil) { + description->fullscreen = [fullscreen boolValue]; + } + + CGRect contentFrame = contentView.frame; + + // Resize StateBar + CGRect stateBarFrame = stateBarView.frame; + if(description->fullscreen) + stateBarFrame.origin.y = -20; + else + stateBarFrame.origin.y = 0; + + if(description->statusEnabled) { + stateBarView.hidden = false; + [stateBarView setFrame: stateBarFrame]; + contentFrame.origin.y = stateBarFrame.size.height + stateBarFrame.origin.y; + } else { + stateBarView.hidden = true; + contentFrame.origin.y = stateBarFrame.origin.y; + } + + // Resize TabBar CGRect tabFrame = tabBarView.frame; - if(description->tabBar != nil) { + if(description->tabBar != nil && description->tabBarEnabled) { tabBarView.hidden = false; tabFrame.origin.y += tabFrame.size.height; tabFrame.origin.x += tabFrame.size.width; @@ -94,17 +122,20 @@ typedef enum _TabBar { break; } } - [tabBarView addSubview: description->tabBar.view]; } else { tabBarView.hidden = true; - contentFrame.size.height = tabFrame.origin.y - tabFrame.size.height; + contentFrame.size.height = tabFrame.origin.y + tabFrame.size.height; + if(description->fullscreen) + contentFrame.size.height += 20; } + // Resize innerView [contentView setFrame: contentFrame]; CGRect innerContentFrame = innerView.frame; innerContentFrame.size = contentFrame.size; [innerView setFrame: innerContentFrame]; + // Call abstractCall NSDictionary *dict = [notif.userInfo objectForKey: @"args"]; if(dict != nil) [LinphoneManager abstractCall:description->content dict:dict]; @@ -126,15 +157,17 @@ typedef enum _TabBar { // // Main View // - PhoneViewController* myPhoneViewController = [[PhoneViewController alloc] - initWithNibName:@"PhoneViewController" + DialerViewController* myDialerViewController = [[DialerViewController alloc] + initWithNibName:@"DialerViewController" bundle:[NSBundle mainBundle]]; //[myPhoneViewController loadView]; - ViewsDescription *mainViewDescription = [ViewsDescription alloc]; - mainViewDescription->content = myPhoneViewController; - mainViewDescription->tabBar = mainTabBarController; - mainViewDescription->statusEnabled = true; - [viewDescriptions setObject:mainViewDescription forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; + ViewsDescription *dialerDescription = [ViewsDescription alloc]; + dialerDescription->content = myDialerViewController; + dialerDescription->tabBar = mainTabBarController; + dialerDescription->statusEnabled = true; + dialerDescription->fullscreen = false; + dialerDescription->tabBarEnabled = true; + [viewDescriptions setObject:dialerDescription forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; // @@ -148,6 +181,8 @@ typedef enum _TabBar { contactsDescription->content = myContactsController; contactsDescription->tabBar = mainTabBarController; contactsDescription->statusEnabled = false; + contactsDescription->fullscreen = false; + contactsDescription->tabBarEnabled = true; [viewDescriptions setObject:contactsDescription forKey:[NSNumber numberWithInt: PhoneView_Contacts]]; @@ -162,6 +197,8 @@ typedef enum _TabBar { historyDescription->content = myHistoryController; historyDescription->tabBar = mainTabBarController; historyDescription->statusEnabled = false; + historyDescription->fullscreen = false; + historyDescription->tabBarEnabled = true; [viewDescriptions setObject:historyDescription forKey:[NSNumber numberWithInt: PhoneView_History]]; @@ -175,18 +212,218 @@ typedef enum _TabBar { ViewsDescription *inCallDescription = [ViewsDescription alloc]; inCallDescription->content = myInCallController; inCallDescription->tabBar = callTabBarController; - inCallDescription->statusEnabled = false; + inCallDescription->statusEnabled = true; + inCallDescription->fullscreen = false; + inCallDescription->tabBarEnabled = true; [viewDescriptions setObject:inCallDescription forKey:[NSNumber numberWithInt: PhoneView_InCall]]; - // Set observer + // Set observers [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; } - (void)viewDidUnload { [[NSNotificationCenter defaultCenter] removeObserver:self]; } +- (void)callUpdate: (NSNotification*) notif { + LinphoneCallWrapper *callWrapper = [notif.userInfo objectForKey: @"call"]; + LinphoneCall *call = callWrapper->call; + LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; + NSString *message = [notif.userInfo objectForKey: @"message"]; + + bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); + + switch (state) { + case LinphoneCallIncomingReceived: + { + [self displayIncomingCall:call]; + break; + } + case LinphoneCallOutgoingInit: + case LinphoneCallPausedByRemote: + case LinphoneCallConnected: + case LinphoneCallUpdated: + { + if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { + [[LinphoneManager instance] changeView:PhoneView_InCall]; + } + break; + } + case LinphoneCallUpdatedByRemote: + { + const LinphoneCallParams* current = linphone_call_get_current_params(call); + const LinphoneCallParams* remote = linphone_call_get_remote_params(call); + + /* remote wants to add video */ + if (!linphone_call_params_video_enabled(current) && + linphone_call_params_video_enabled(remote) && + !linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) { + linphone_core_defer_call_update([LinphoneManager getLc], call); + //TODO + //[self displayAskToEnableVideoCall:call forUser:lUserName withDisplayName:lDisplayName]; + } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { + if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { + [[LinphoneManager instance] changeView:PhoneView_InCall]; + } + } + break; + } + case LinphoneCallError: + { + [self displayCallError:call message: message]; + } + case LinphoneCallEnd: + { + [self dismissIncomingCall]; + if (canHideInCallView) { + if ([[LinphoneManager instance] currentView] != PhoneView_Dialer) { + // Go to dialer view + NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys: + [[NSArray alloc] initWithObjects: @"", nil] + , @"setAddress:", + nil]; + [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; + } + } else { + if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { + [[LinphoneManager instance] changeView:PhoneView_InCall]; + } + } + break; + } + case LinphoneCallStreamsRunning: + { + if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { + [[LinphoneManager instance] changeView:PhoneView_InCall]; + } + break; + } + default: + break; + } + +} + +- (void)displayCallError:(LinphoneCall*) call message:(NSString*) message { + const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); + NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); + NSString* lMessage; + NSString* lTitle; + + //get default proxy + LinphoneProxyConfig* proxyCfg; + linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); + if (proxyCfg == nil) { + lMessage = NSLocalizedString(@"Please make sure your device is connected to the internet and double check your SIP account configuration in the settings.", nil); + } else { + lMessage = [NSString stringWithFormat : NSLocalizedString(@"Cannot call %@", nil), lUserName]; + } + + if (linphone_call_get_reason(call) == LinphoneReasonNotFound) { + lMessage = [NSString stringWithFormat : NSLocalizedString(@"'%@' not registered to Service", nil), lUserName]; + } else { + if (message != nil) { + lMessage = [NSString stringWithFormat : NSLocalizedString(@"%@\nReason was: %@", nil), lMessage, message]; + } + } + lTitle = NSLocalizedString(@"Call failed",nil); + UIAlertView* error = [[UIAlertView alloc] initWithTitle:lTitle + message:lMessage + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Dismiss",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; +} + +- (void)dismissIncomingCall { + //cancel local notification, just in case + if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] + && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground ) { + // cancel local notif if needed + [[UIApplication sharedApplication] cancelAllLocalNotifications]; + } else { + if (incomingCallActionSheet) { + [incomingCallActionSheet dismissWithClickedButtonIndex:1 animated:true]; + incomingCallActionSheet = nil; + } + } + + //TODO + /* + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstlogindone_preference" ] == true) { + //first login case, dismmis first login view + [self dismissModalViewControllerAnimated:true]; + }; */ +} + + +- (void)displayIncomingCall:(LinphoneCall*) call{ + const char* userNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); + NSString* userName = userNameChars?[[[NSString alloc] initWithUTF8String:userNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); + const char* displayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); + NSString* displayName = [displayNameChars?[[NSString alloc] initWithUTF8String:displayNameChars]:@"" autorelease]; + + //TODO + //[mMainScreenWithVideoPreview showPreview:NO]; + if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] + && [UIApplication sharedApplication].applicationState != UIApplicationStateActive) { + // Create a new notification + UILocalNotification* notif = [[[UILocalNotification alloc] init] autorelease]; + if (notif) + { + notif.repeatInterval = 0; + notif.alertBody =[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:userName]; + notif.alertAction = @"Answer"; + notif.soundName = @"oldphone-mono-30s.caf"; + NSData *callData = [NSData dataWithBytes:&call length:sizeof(call)]; + notif.userInfo = [NSDictionary dictionaryWithObject:callData forKey:@"call"]; + + [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; + } + } else { + CallDelegate* cd = [[CallDelegate alloc] init]; + cd.eventType = CD_NEW_CALL; + cd.delegate = self; + cd.call = call; + + incomingCallActionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:userName] + delegate:cd + cancelButtonTitle:nil + destructiveButtonTitle:NSLocalizedString(@"Answer",nil) + otherButtonTitles:NSLocalizedString(@"Decline",nil),nil]; + + incomingCallActionSheet.actionSheetStyle = UIActionSheetStyleDefault; + //TODO + /*if ([LinphoneManager runningOnIpad]) { + if (self.modalViewController != nil) + [incomingCallActionSheet showInView:[self.modalViewController view]]; + else + [incomingCallActionSheet showInView:self.parentViewController.view]; + } else */{ + [incomingCallActionSheet showInView: self.view]; + } + [incomingCallActionSheet release]; + } +} + +- (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type + clickedButtonAtIndex:(NSInteger)buttonIndex + withUserDatas:(void *)datas { + if (type != CD_NEW_CALL) + return; + + LinphoneCall* call = (LinphoneCall*)datas; + if (buttonIndex == actionSheet.destructiveButtonIndex) { + linphone_core_accept_call([LinphoneManager getLc], call); + } else { + linphone_core_terminate_call([LinphoneManager getLc], call); + } + incomingCallActionSheet = nil; +} + - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; @@ -197,4 +434,5 @@ typedef enum _TabBar { [super dealloc]; } + @end \ No newline at end of file diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 178a8c774..c9b528625 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -40,6 +40,17 @@ 292 YES + + + 314 + {{0, 23}, {320, 380}} + + + + _NS:9 + YES + IBCocoaTouchFramework + 274 @@ -55,24 +66,12 @@ YES IBCocoaTouchFramework - - - 314 - {{0, 23}, {320, 380}} - - - - _NS:9 - YES - IBCocoaTouchFramework - 280 {{0, 400}, {320, 60}} - _NS:9 1 @@ -169,7 +168,6 @@ {{160, 0}, {160, 77}} - _NS:9 NO @@ -268,7 +266,6 @@ {{192, 0}, {128, 72}} - _NS:9 NO @@ -364,7 +361,7 @@ NO - UIStatusBar + UIStateBar 1 @@ -1046,8 +1043,8 @@ {254, 144} {320, 154} {320, 154} - {132, 144} - {132, 144} + {128, 154} + {128, 154} {320, 154} {320, 154} diff --git a/Classes/PhoneViewController.h b/Classes/PhoneViewController.h deleted file mode 100644 index 2312ce397..000000000 --- a/Classes/PhoneViewController.h +++ /dev/null @@ -1,101 +0,0 @@ -/* PhoneViewController.h - * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import -#import -#import "linphonecore.h" -#import "UILinphone.h" -#import "CallDelegate.h" - -@class MainScreenWithVideoPreview; -@class InCallViewController; -@class FirstLoginViewController; - - -@interface PhoneViewController : UIViewController { - -@private - //UI definition - UIView* dialerView; - UITextField* address; - UILabel* mDisplayName; - UIEraseButton* erase; - UICallButton* callShort; - UICallButton* callLarge; - - UILabel* status; - - //key pad - UIDigitButton* one; - UIDigitButton* two; - UIDigitButton* three; - UIDigitButton* four; - UIDigitButton* five; - UIDigitButton* six; - UIDigitButton* seven; - UIDigitButton* eight; - UIDigitButton* nine; - UIDigitButton* star; - UIDigitButton* zero; - UIDigitButton* hash; - - UIButton* backToCallView; - UIView* statusViewHolder; - - UITabBarController* myTabBarController; - - UIActionSheet *mIncomingCallActionSheet; - FirstLoginViewController* myFirstLoginViewController; - MainScreenWithVideoPreview* mMainScreenWithVideoPreview; - - UIButton* switchCamera; -} - -@property (nonatomic, retain) IBOutlet UIView* dialerView; - -@property (nonatomic, retain) IBOutlet UITextField* address; -@property (nonatomic, retain) IBOutlet UILabel* mDisplayName; -@property (nonatomic, retain) IBOutlet UIButton* callShort; -@property (nonatomic, retain) IBOutlet UIButton* callLarge; -@property (nonatomic, retain) IBOutlet UILabel* status; -@property (nonatomic, retain) IBOutlet UIEraseButton* erase; - -@property (nonatomic, retain) IBOutlet UIButton* one; -@property (nonatomic, retain) IBOutlet UIButton* two; -@property (nonatomic, retain) IBOutlet UIButton* three; -@property (nonatomic, retain) IBOutlet UIButton* four; -@property (nonatomic, retain) IBOutlet UIButton* five; -@property (nonatomic, retain) IBOutlet UIButton* six; -@property (nonatomic, retain) IBOutlet UIButton* seven; -@property (nonatomic, retain) IBOutlet UIButton* eight; -@property (nonatomic, retain) IBOutlet UIButton* nine; -@property (nonatomic, retain) IBOutlet UIButton* star; -@property (nonatomic, retain) IBOutlet UIButton* zero; -@property (nonatomic, retain) IBOutlet UIButton* hash; - -@property (nonatomic, retain) IBOutlet UIView* statusViewHolder; - -@property (nonatomic, retain) IBOutlet UIButton* backToCallView; - -@property (nonatomic, retain) IBOutlet UIButton* switchCamera; - -@property (nonatomic, retain) IBOutlet UITabBarController* myTabBarController; -@property (nonatomic, retain) IBOutlet MainScreenWithVideoPreview* mMainScreenWithVideoPreview; --(IBAction) onAddContact: (id) event; -@end diff --git a/Classes/PhoneViewController.m b/Classes/PhoneViewController.m deleted file mode 100644 index e8a7f5a48..000000000 --- a/Classes/PhoneViewController.m +++ /dev/null @@ -1,462 +0,0 @@ -/* PhoneViewController.h - * - * Copyright (C) 2009 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "PhoneViewController.h" -#import "linphoneAppDelegate.h" -#import "IncallViewController.h" -#import -#import -#import "LinphoneManager.h" -#include "FirstLoginViewController.h" -#include "MainScreenWithVideoPreview.h" -#include "linphonecore.h" -#include "private.h" -#import "PhoneMainView.h" - -@implementation PhoneViewController -@synthesize dialerView; -@synthesize mDisplayName; -@synthesize address; -@synthesize callShort; -@synthesize callLarge; -@synthesize status; -@synthesize erase; - -@synthesize one; -@synthesize two; -@synthesize three; -@synthesize four; -@synthesize five; -@synthesize six; -@synthesize seven; -@synthesize eight; -@synthesize nine; -@synthesize star; -@synthesize zero; -@synthesize hash; - -@synthesize statusViewHolder; - -@synthesize myTabBarController; -@synthesize mMainScreenWithVideoPreview; -@synthesize backToCallView; - -@synthesize switchCamera; - -- (void)updateCallAndBackButtons { - @try { - bool zeroCall = (linphone_core_get_calls_nb([LinphoneManager getLc]) == 0); - - [LinphoneManager set:callLarge hidden:!zeroCall withName:"CALL_LARGE button" andReason:__FUNCTION__]; - [LinphoneManager set:switchCamera hidden:!zeroCall withName:"SWITCH_CAM button" andReason:__FUNCTION__]; - [LinphoneManager set:callShort hidden:zeroCall withName:"CALL_SHORT button" andReason:__FUNCTION__]; - [LinphoneManager set:backToCallView hidden:zeroCall withName:"BACK button" andReason:__FUNCTION__]; - - [callShort setTitle:[UICallButton transforModeEnabled] ? @"transfer":@"call" forState:UIControlStateNormal]; - - if (!callShort.hidden) - [callShort setEnabled:!linphone_core_sound_resources_locked([LinphoneManager getLc])]; - } @catch (NSException* exc) { - // R.A.S: linphone core si simply not ready... - ms_warning("Catched exception %s: %s", - [exc.name cStringUsingEncoding:[NSString defaultCStringEncoding]], - [exc.reason cStringUsingEncoding:[NSString defaultCStringEncoding]]); - } -} - - -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - if ([[NSUserDefaults standardUserDefaults] boolForKey:@"enable_first_login_view_preference"] == true) { - myFirstLoginViewController = [[FirstLoginViewController alloc] initWithNibName:@"FirstLoginViewController" - bundle:[NSBundle mainBundle]]; - [self presentModalViewController:myFirstLoginViewController animated:true]; - } - // [[LinphoneManager instance] setRegistrationDelegate:self]; - - [mMainScreenWithVideoPreview showPreview:YES]; - [self updateCallAndBackButtons]; -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; -} - - -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib : may be called twice -- (void)viewDidLoad { - [super viewDidLoad]; - - // Set observer - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; - - [mDisplayName release]; - mDisplayName = [UILabel alloc]; - [zero initWithNumber:'0' addressField:address dtmf:false]; - [one initWithNumber:'1' addressField:address dtmf:false]; - [two initWithNumber:'2' addressField:address dtmf:false]; - [three initWithNumber:'3' addressField:address dtmf:false]; - [four initWithNumber:'4' addressField:address dtmf:false]; - [five initWithNumber:'5' addressField:address dtmf:false]; - [six initWithNumber:'6' addressField:address dtmf:false]; - [seven initWithNumber:'7' addressField:address dtmf:false]; - [eight initWithNumber:'8' addressField:address dtmf:false]; - [nine initWithNumber:'9' addressField:address dtmf:false]; - [star initWithNumber:'*' addressField:address dtmf:false]; - [hash initWithNumber:'#' addressField:address dtmf:false]; - [callShort initWithAddress:address]; - [callLarge initWithAddress:address]; - [erase initWithAddressField:address]; - [backToCallView addTarget:self action:@selector(backToCallViewPressed) forControlEvents:UIControlEventTouchUpInside]; - - /*if (statusSubViewController == nil) { - statusSubViewController = [[StatusSubViewController alloc] initWithNibName:@"StatusSubViewController" - bundle:[NSBundle mainBundle]]; - [statusViewHolder addSubview:statusSubViewController.view]; - }*/ - - [self updateCallAndBackButtons]; -} - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (BOOL)textFieldShouldReturn:(UITextField *)theTextField { - if (theTextField == address) { - [address resignFirstResponder]; - [mDisplayName setText:@""]; //display name only relefvant - - } - return YES; -} - -- (void)viewWillAppear:(BOOL)animated { - [self updateCallAndBackButtons]; - [super viewWillAppear:animated]; -} - -- (void)callUpdate: (NSNotification*) notif { - LinphoneCallWrapper *callWrapper = [notif.userInfo objectForKey: @"call"]; - LinphoneCall *call = callWrapper->call; - LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - - const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); - NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); - const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); - NSString* lDisplayName = [lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@"" autorelease]; - - bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); - - switch (state) { - case LinphoneCallIncomingReceived: - [self displayIncomingCall:call - NotificationFromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - break; - - case LinphoneCallOutgoingInit: - [self displayCall:call - InProgressFromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - break; - case LinphoneCallPausedByRemote: - case LinphoneCallConnected: - [self displayInCall: call - FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - break; - case LinphoneCallUpdatedByRemote: - { - const LinphoneCallParams* current = linphone_call_get_current_params(call); - const LinphoneCallParams* remote = linphone_call_get_remote_params(call); - - /* remote wants to add video */ - if (!linphone_call_params_video_enabled(current) && - linphone_call_params_video_enabled(remote) && - !linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) { - linphone_core_defer_call_update([LinphoneManager getLc], call); - [self displayAskToEnableVideoCall:call forUser:lUserName withDisplayName:lDisplayName]; - } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { - [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; - } - break; - } - case LinphoneCallUpdated: - { - const LinphoneCallParams* current = linphone_call_get_current_params(call); - if (linphone_call_params_video_enabled(current)) { - [self displayVideoCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; - } else { - [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; - } - break; - - } - case LinphoneCallError: { - if (canHideInCallView) { - [self displayDialerFromUI:nil - forUser:@"" - withDisplayName:@""]; - } else { - [self displayInCall:call - FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - } - break; - } - case LinphoneCallEnd: - if (canHideInCallView) { - [self displayDialerFromUI:nil - forUser:@"" - withDisplayName:@""]; - } else { - [self displayInCall:call - FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - } - break; - case LinphoneCallStreamsRunning: - //check video - if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { - [self displayVideoCall:call FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - } else { - [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; - } - break; - default: - break; - } - -} - -- (void)displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - - //cancel local notification, just in case - if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] - && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground ) { - // cancel local notif if needed - [[UIApplication sharedApplication] cancelAllLocalNotifications]; - } else { - if (mIncomingCallActionSheet) { - [mIncomingCallActionSheet dismissWithClickedButtonIndex:1 animated:true]; - mIncomingCallActionSheet=nil; - } - } - - if (username) { - [address setText:username]; - } //else keep previous - - [mDisplayName setText:displayName]; - - [self updateCallAndBackButtons]; - - if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstlogindone_preference" ] == true) { - //first login case, dismmis first login view - [self dismissModalViewControllerAnimated:true]; - }; - - [[LinphoneManager instance] changeView:PhoneView_Dialer]; - - [mMainScreenWithVideoPreview showPreview:YES]; -} - -- (void)displayIncomingCall:(LinphoneCall*) call NotificationFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [mMainScreenWithVideoPreview showPreview:NO]; - if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] - && [UIApplication sharedApplication].applicationState != UIApplicationStateActive) { - // Create a new notification - UILocalNotification* notif = [[[UILocalNotification alloc] init] autorelease]; - if (notif) - { - notif.repeatInterval = 0; - notif.alertBody =[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:username]; - notif.alertAction = @"Answer"; - notif.soundName = @"oldphone-mono-30s.caf"; - NSData *callData = [NSData dataWithBytes:&call length:sizeof(call)]; - notif.userInfo = [NSDictionary dictionaryWithObject:callData forKey:@"call"]; - - [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; - } - } else { - CallDelegate* cd = [[CallDelegate alloc] init]; - cd.eventType = CD_NEW_CALL; - cd.delegate = self; - cd.call = call; - - mIncomingCallActionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:username] - delegate:cd - cancelButtonTitle:nil - destructiveButtonTitle:NSLocalizedString(@"Answer",nil) - otherButtonTitles:NSLocalizedString(@"Decline",nil),nil]; - - mIncomingCallActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - if ([LinphoneManager runningOnIpad]) { - if (self.modalViewController != nil) - [mIncomingCallActionSheet showInView:[self.modalViewController view]]; - else - [mIncomingCallActionSheet showInView:self.parentViewController.view]; - } else { - [mIncomingCallActionSheet showInView:self.parentViewController.view]; - } - [mIncomingCallActionSheet release]; - } - - [mMainScreenWithVideoPreview showPreview:NO]; -} - -- (void)backToCallViewPressed { - [UICallButton enableTransforMode:NO]; - [[LinphoneManager instance] changeView:PhoneView_InCall]; - - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - - if (!call || !linphone_call_params_video_enabled(linphone_call_get_current_params(call)) || linphone_call_get_state(call) != LinphoneCallStreamsRunning) { - [self displayInCall: call - FromUI:nil - forUser:nil - withDisplayName:nil]; - } else { - [self displayVideoCall:call FromUI:nil forUser:nil withDisplayName:nil]; - } -} - -- (void)displayCall: (LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [mMainScreenWithVideoPreview showPreview:NO]; - if ([[LinphoneManager instance]currentView] != PhoneView_InCall) { - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } - - [mMainScreenWithVideoPreview showPreview:NO]; -} - -- (void)displayInCall: (LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [mMainScreenWithVideoPreview showPreview:NO]; - if ([[LinphoneManager instance]currentView] != PhoneView_InCall && (call == 0x0 || - linphone_call_get_dir(call)==LinphoneCallIncoming)){ - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } - - [LinphoneManager set:callLarge hidden:YES withName:"CALL_LARGE button" andReason:__FUNCTION__]; - [LinphoneManager set:switchCamera hidden:YES withName:"SWITCH_CAMERA button" andReason:__FUNCTION__]; - [LinphoneManager set:callShort hidden:NO withName:"CALL_SHORT button" andReason:__FUNCTION__]; - [LinphoneManager set:backToCallView hidden:NO withName:"CALL_BACK button" andReason:__FUNCTION__]; - - [self updateCallAndBackButtons]; -} - - -- (void)displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [mMainScreenWithVideoPreview showPreview:NO]; - - [mMainScreenWithVideoPreview showPreview:NO]; - [self updateCallAndBackButtons]; -} - -- (void)displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName { -} - -- (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { - if (type != CD_NEW_CALL) - return; - - LinphoneCall* call = (LinphoneCall*)datas; - if (buttonIndex == actionSheet.destructiveButtonIndex ) { - linphone_core_accept_call([LinphoneManager getLc],call); - } else { - linphone_core_terminate_call ([LinphoneManager getLc], call); - } - mIncomingCallActionSheet = nil; -} - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [address dealloc]; - [mDisplayName dealloc]; - [dialerView dealloc]; - [callShort dealloc]; - [callLarge dealloc]; - [status dealloc]; - [one dealloc]; - [two dealloc]; - [three dealloc]; - [four dealloc]; - [five dealloc]; - [six dealloc]; - [seven dealloc]; - [eight dealloc]; - [nine dealloc]; - [star dealloc]; - [zero dealloc]; - [hash dealloc]; - [myTabBarController release]; - [super dealloc]; -} - -- (void)displayRegisteredFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { - if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - //[myFirstLoginViewController displayRegisteredFromUI:viewCtrl forUser:username withDisplayName:displayName onDomain:domain]; - } -} - -- (void)displayRegisteringFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName onDomain:(NSString*)domain { - if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - //[myFirstLoginViewController displayRegisteringFromUI:viewCtrl forUser:username withDisplayName:displayName onDomain:domain]; - } -} - -- (void)displayRegistrationFailedFromUI:(UIViewController*) viewCtrl forUser:(NSString*) user withDisplayName:(NSString*) displayName onDomain:(NSString*)domain forReason:(NSString*) reason { - if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - //[myFirstLoginViewController displayRegistrationFailedFromUI:viewCtrl forUser:user withDisplayName:displayName onDomain:domain forReason:reason]; - } -} - -- (void)displayNotRegisteredFromUI:(UIViewController*) viewCtrl { - if (myFirstLoginViewController != nil && self.modalViewController == myFirstLoginViewController) { - //[myFirstLoginViewController displayNotRegisteredFromUI:viewCtrl]; - } -} - -- (void)firstVideoFrameDecoded: (LinphoneCall*) call { - // [mIncallViewController firstVideoFrameDecoded:call]; -} - -- (IBAction)onAddContact: (id) event { - -} - - -@end diff --git a/Classes/VideoViewController-ipad.xib b/Classes/VideoViewController-ipad.xib deleted file mode 100644 index 01b0daa4c..000000000 --- a/Classes/VideoViewController-ipad.xib +++ /dev/null @@ -1,993 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - IBUIButton - IBUIImageView - IBUIView - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 274 - {768, 1024} - - - - - 4 - MAA - - IBIPadFramework - - - - 274 - - - - 292 - {768, 1024} - - - - _NS:569 - NO - IBIPadFramework - - - - 292 - {{329, 962}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - stopcall-red.png - - - NSImage - clavier-01-108px.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{223, 962}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{598, 799}, {170, 225}} - - - - - 3 - MQA - - 2 - - - IBIPadFramework - - - - 292 - {{436, 962}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - 1 - switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{20, 976}, {28, 28}} - - - - _NS:567 - NO - IBIPadFramework - - - {768, 1024} - - - - _NS:212 - - 3 - MC42NjY2NjY2NjY3AA - - IBIPadFramework - - - - 274 - - - - 292 - {1024, 768} - - - - _NS:569 - NO - IBIPadFramework - - - - 292 - {{799, 598}, {225, 170}} - - - - 3 - MQA - - - IBIPadFramework - - - - 292 - {{351, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{458, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - - 292 - {{565, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - 1 - switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{20, 720}, {28, 28}} - - - _NS:567 - NO - IBIPadFramework - - - {1024, 768} - - - - _NS:212 - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - 3 - 3 - - IBIPadFramework - - - - 274 - - - - 292 - {1024, 768} - - - - _NS:569 - NO - IBIPadFramework - - - - 292 - {{799, 598}, {225, 170}} - - - - 3 - MQA - - - IBIPadFramework - - - - 292 - {{351, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{458, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - - 292 - {{565, 706}, {108, 62}} - - - - NO - IBIPadFramework - 0 - 0 - 1 - switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{20, 720}, {28, 28}} - - - _NS:567 - NO - IBIPadFramework - - - {1024, 768} - - - - _NS:212 - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - 3 - 3 - - IBIPadFramework - - - - - - - mCamSwitch - - - - 13 - - - - mHangUp - - - - 16 - - - - mPortrait - - - - 19 - - - - mPreview - - - - 20 - - - - view - - - - 22 - - - - mMute - - - - 23 - - - - mDisplay - - - - 27 - - - - mCamSwitchLandLeft - - - - 35 - - - - mCamSwitchLandRight - - - - 36 - - - - mDisplayLandLeft - - - - 37 - - - - mDisplayLandRight - - - - 38 - - - - mHangUpLandLeft - - - - 39 - - - - mHangUpLandRight - - - - 40 - - - - mLandscapeLeft - - - - 41 - - - - mLandscapeRight - - - - 42 - - - - mMuteLandLeft - - - - 43 - - - - mMuteLandRight - - - - 44 - - - - mPreviewLandLeft - - - - 45 - - - - mPreviewLandRight - - - - 46 - - - - mCallQuality - - - - 51 - - - - mCallQualityLandLeft - - - - 52 - - - - mCallQualityLandRight - - - - 53 - - - - - - 0 - - - - - - 1 - - - - root - - - -1 - - - File's Owner - - - -2 - - - - - 3 - - - - - - - - - - - portrait - - - 4 - - - - - - - - - - - landscape-right - - - 5 - - - Hang Up Button - - - 6 - - - - - 7 - - - preview - - - 8 - - - - - 10 - - - - preview - - - 11 - - - Hang Up Button - - - 12 - - - - - 9 - - - - - 25 - - - - - 26 - - - - - 29 - - - - - - - - - - - landscape-left - - - 30 - - - - - 31 - - - Hang Up Button - - - 32 - - - - - 33 - - - preview - - - 34 - - - - - 48 - - - - - 49 - - - - - 50 - - - - - - - VideoViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 53 - - - - - UICamSwitch - UIButton - - preview - UIView - - - preview - - preview - UIView - - - - IBProjectSource - ./Classes/UICamSwitch.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UIMuteButton - UIToggleButton - - IBProjectSource - ./Classes/UIMuteButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - VideoViewController - UIViewController - - UIImageView - UIImageView - UIImageView - UICamSwitch - UICamSwitch - UICamSwitch - UIView - UIView - UIView - UIHangUpButton - UIHangUpButton - UIHangUpButton - UIView - UIView - UIMuteButton - UIMuteButton - UIMuteButton - UIView - UIView - UIView - UIView - - - - mCallQuality - UIImageView - - - mCallQualityLandLeft - UIImageView - - - mCallQualityLandRight - UIImageView - - - mCamSwitch - UICamSwitch - - - mCamSwitchLandLeft - UICamSwitch - - - mCamSwitchLandRight - UICamSwitch - - - mDisplay - UIView - - - mDisplayLandLeft - UIView - - - mDisplayLandRight - UIView - - - mHangUp - UIHangUpButton - - - mHangUpLandLeft - UIHangUpButton - - - mHangUpLandRight - UIHangUpButton - - - mLandscapeLeft - UIView - - - mLandscapeRight - UIView - - - mMute - UIMuteButton - - - mMuteLandLeft - UIMuteButton - - - mMuteLandRight - UIMuteButton - - - mPortrait - UIView - - - mPreview - UIView - - - mPreviewLandLeft - UIView - - - mPreviewLandRight - UIView - - - - IBProjectSource - ./Classes/VideoViewController.h - - - - - 0 - IBIPadFramework - YES - 3 - - {108, 60} - {62, 54} - - 933 - - diff --git a/Classes/VideoViewController.h b/Classes/VideoViewController.h deleted file mode 100644 index b7a31603a..000000000 --- a/Classes/VideoViewController.h +++ /dev/null @@ -1,74 +0,0 @@ -/* VideoViewController.h - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -#import -#import "UILinphone.h" - -@interface VideoViewController : UIViewController { - UIView* mPortrait; - UIView* mDisplay; - UIView* mPreview; - UIMicroButton* mMute; - UIHangUpButton* mHangUp; - UICamSwitch* mCamSwitch; - - UIView* mLandscapeRight; - UIView* mDisplayLandRight; - UIView* mPreviewLandRight; - UIMicroButton* mMuteLandRight; - UIHangUpButton* mHangUpLandRight; - UICamSwitch* mCamSwitchLandRight; - - UIView* mLandscapeLeft; - UIView* mDisplayLandLeft; - UIView* mPreviewLandLeft; - UIMicroButton* mMuteLandLeft; - UIHangUpButton* mHangUpLandLeft; - UICamSwitch* mCamSwitchLandLeft; - BOOL isFirst; - int maxCall; - -} - -@property (nonatomic, retain) IBOutlet UIView* mPortrait; -@property (nonatomic, retain) IBOutlet UIView* mDisplay; -@property (nonatomic, retain) IBOutlet UIView* mPreview; -@property (nonatomic, retain) IBOutlet UIMicroButton* mMute; -@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUp; -@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitch; -@property (nonatomic, retain) IBOutlet UIImageView *mCallQuality; - -@property (nonatomic, retain) IBOutlet UIView* mLandscapeRight; -@property (nonatomic, retain) IBOutlet UIView* mDisplayLandRight; -@property (nonatomic, retain) IBOutlet UIView* mPreviewLandRight; -@property (nonatomic, retain) IBOutlet UIMicroButton* mMuteLandRight; -@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandRight; -@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandRight; -@property (nonatomic, retain) IBOutlet UIImageView *mCallQualityLandRight; - -@property (nonatomic, retain) IBOutlet UIView* mLandscapeLeft; -@property (nonatomic, retain) IBOutlet UIView* mDisplayLandLeft; -@property (nonatomic, retain) IBOutlet UIView* mPreviewLandLeft; -@property (nonatomic, retain) IBOutlet UIMicroButton* mMuteLandLeft; -@property (nonatomic, retain) IBOutlet UIHangUpButton* mHangUpLandLeft; -@property (nonatomic, retain) IBOutlet UICamSwitch* mCamSwitchLandLeft; -@property (retain, nonatomic) IBOutlet UIImageView *mCallQualityLandLeft; - -- (void) updateCallQualityIndicator; - -@end \ No newline at end of file diff --git a/Classes/VideoViewController.m b/Classes/VideoViewController.m deleted file mode 100644 index 2da07cf5c..000000000 --- a/Classes/VideoViewController.m +++ /dev/null @@ -1,230 +0,0 @@ -/* VideoViewController.m - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "VideoViewController.h" -#import "LinphoneManager.h" -#import - -@implementation VideoViewController -@synthesize mPortrait; -@synthesize mDisplay; -@synthesize mPreview; -@synthesize mMute; -@synthesize mHangUp; -@synthesize mCamSwitch; -@synthesize mCallQuality; - -@synthesize mLandscapeRight; -@synthesize mDisplayLandRight; -@synthesize mPreviewLandRight; -@synthesize mMuteLandRight; -@synthesize mHangUpLandRight; -@synthesize mCamSwitchLandRight; -@synthesize mCallQualityLandRight; - -@synthesize mLandscapeLeft; -@synthesize mDisplayLandLeft; -@synthesize mPreviewLandLeft; -@synthesize mMuteLandLeft; -@synthesize mHangUpLandLeft; -@synthesize mCamSwitchLandLeft; -@synthesize mCallQualityLandLeft; - -NSTimer *callQualityRefresher; - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)dealloc -{ - [mCallQuality release]; - [mCallQualityLandRight release]; - [mCallQualityLandLeft release]; - [super dealloc]; -} - -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -- (void)viewDidLoad -{ - [super viewDidLoad]; - /*[mMute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; - [mMuteLandRight initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE2 button"]; - [mMuteLandLeft initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE3 button"];*/ - [mCamSwitch setPreview:mPreview]; - [mCamSwitchLandRight setPreview:mPreviewLandRight]; - [mCamSwitchLandLeft setPreview:mPreviewLandLeft]; - - isFirst=TRUE; -} - -- (void) updateCallQualityIndicator -{ - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - if (!call) - return; - - if (linphone_call_get_average_quality(call) >= 4) { - [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; - [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; - [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_4.png"]]; - } - else if (linphone_call_get_average_quality(call) >= 3) { - [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_3.png"]]; - [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_3.png"]]; - [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_3.png"]]; - } - else if (linphone_call_get_average_quality(call) >= 2) { - [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_2.png"]]; - [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_2.png"]]; - [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_2.png"]]; - } - else if (linphone_call_get_average_quality(call) >= 1) { - [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_1.png"]]; - [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_1.png"]]; - [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_1.png"]]; - } - else { - [mCallQuality setImage: [UIImage imageNamed:@"stat_sys_signal_0.png"]]; - [mCallQualityLandRight setImage: [UIImage imageNamed:@"stat_sys_signal_0.png"]]; - [mCallQualityLandLeft setImage: [UIImage imageNamed:@"stat_sys_signal_0.png"]]; - } -} - - --(void) configureOrientation:(UIInterfaceOrientation) oritentation { - int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); - if (oritentation == UIInterfaceOrientationPortrait ) { - [self.view addSubview:mPortrait]; - linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)mDisplay); - linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)mPreview); - linphone_core_set_device_rotation([LinphoneManager getLc], 0); - - } else if (oritentation == UIInterfaceOrientationLandscapeRight ) { - [self.view addSubview:mLandscapeRight]; - linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)mDisplayLandRight); - linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)mPreviewLandRight); - linphone_core_set_device_rotation([LinphoneManager getLc], 270); - - } else if (oritentation == UIInterfaceOrientationLandscapeLeft ) { - [self.view addSubview:mLandscapeLeft]; - linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)mDisplayLandLeft); - linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)mPreviewLandLeft); - linphone_core_set_device_rotation([LinphoneManager getLc], 90); - } - if ((oldLinphoneOrientation != linphone_core_get_device_rotation([LinphoneManager getLc])) - && linphone_core_get_current_call([LinphoneManager getLc])) { - //Orientation has change, must call update call - linphone_core_update_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), NULL); - } -} - --(void) configureOrientation { - [self configureOrientation:self.interfaceOrientation]; -} - -- (void)viewDidUnload -{ - [mCallQuality release]; - mCallQuality = nil; - [self setMCallQualityLandRight:nil]; - [self setMCallQualityLandLeft:nil]; - [super viewDidUnload]; - - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - - --(void) viewDidDisappear:(BOOL)animated{ - [super viewDidDisappear:animated]; - [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; - linphone_core_set_max_calls([LinphoneManager getLc], maxCall); - - if (callQualityRefresher != nil) { - [callQualityRefresher invalidate]; - callQualityRefresher=nil; - } -} - --(void) viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - - //redirect audio to speaker - UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; - AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute - , sizeof (audioRouteOverride) - , &audioRouteOverride); - - - [self performSelectorOnMainThread:@selector(configureOrientation) - withObject:nil - waitUntilDone:YES]; - [mMute update]; - [mMuteLandRight update]; - [mMuteLandLeft update]; - maxCall = linphone_core_get_max_calls([LinphoneManager getLc]); - linphone_core_set_max_calls([LinphoneManager getLc], 1); -} - -- (void) viewDidAppear:(BOOL)animated{ - [super viewDidAppear:animated]; - [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; - - callQualityRefresher = [NSTimer scheduledTimerWithTimeInterval:1 - target:self - selector:@selector(updateCallQualityIndicator) - userInfo:nil - repeats:YES]; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - BOOL result = interfaceOrientation == UIInterfaceOrientationPortrait - || interfaceOrientation == UIInterfaceOrientationLandscapeRight - || interfaceOrientation == UIInterfaceOrientationLandscapeLeft; - - return result; -} - -- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { - [self configureOrientation:self.interfaceOrientation]; - [mMute update]; - [mMuteLandRight update]; - [mMuteLandLeft update]; -} -- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - [mLandscapeLeft removeFromSuperview]; - [mLandscapeRight removeFromSuperview]; - [mPortrait removeFromSuperview]; -} -@end diff --git a/Classes/VideoViewController.xib b/Classes/VideoViewController.xib deleted file mode 100644 index f7c680281..000000000 --- a/Classes/VideoViewController.xib +++ /dev/null @@ -1,919 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - YES - IBUIButton - IBUIImageView - IBUIView - IBProxyObject - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - {320, 460} - - - 1 - MCAwIDAAA - - IBCocoaTouchFramework - - - - 274 - - YES - - - 274 - {320, 420} - - - 1 - NO - IBCocoaTouchFramework - - - - 292 - {{1, 418}, {108, 62}} - - - NO - IBCocoaTouchFramework - 0 - 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - clavier-01-108px.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{106, 418}, {106, 63}} - - - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - stopcall-red.png - - - - - - - - 292 - {{211, 418}, {108, 62}} - - NO - IBCocoaTouchFramework - 0 - 0 - 1 - switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 292 - {{233, 309}, {80, 106}} - - - - 3 - MQA - - 2 - - - IBCocoaTouchFramework - - - - 292 - {{6, 387}, {28, 28}} - - - _NS:567 - NO - IBCocoaTouchFramework - - - {320, 480} - - - - 3 - MC42NjY2NjY2NjY3AA - - IBCocoaTouchFramework - - - - 292 - - YES - - - 274 - {420, 320} - - - - 3 - MQA - - - IBCocoaTouchFramework - - - - 292 - {{420, 0}, {60, 108}} - - - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - micro.png - - - NSImage - clavier-01-106px.png - - - - - - - 292 - {{420, 107}, {60, 106}} - - - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - - 292 - {{420, 212}, {60, 108}} - - NO - IBCocoaTouchFramework - 0 - 0 - Switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 274 - {{308, 233}, {106, 80}} - - - - 3 - MQA - - - IBCocoaTouchFramework - - - - 292 - {{8, 285}, {28, 28}} - - - _NS:567 - NO - IBCocoaTouchFramework - - - {480, 320} - - - - 3 - MQA - - - - 3 - 3 - - IBCocoaTouchFramework - - - - 292 - - YES - - - 274 - - YES - - - 292 - {{8, 285}, {28, 28}} - - - _NS:567 - NO - IBCocoaTouchFramework - - - {{60, 0}, {420, 320}} - - - - 3 - MQA - - - IBCocoaTouchFramework - - - - 292 - {60, 108} - - - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - - 292 - {{0, 107}, {60, 106}} - - - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - - 292 - {{0, 212}, {60, 108}} - - - NO - IBCocoaTouchFramework - 0 - 0 - Switch - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - - - - - - 274 - {{360, 233}, {106, 80}} - - - 3 - MQA - - - IBCocoaTouchFramework - - - {480, 320} - - - - 3 - MQA - - - - 3 - 3 - - IBCocoaTouchFramework - - - - - YES - - - mDisplay - - - - 10 - - - - mPreview - - - - 11 - - - - mCamSwitch - - - - 12 - - - - mMute - - - - 13 - - - - mPortrait - - - - 21 - - - - mHangUp - - - - 26 - - - - view - - - - 32 - - - - mMuteLandRight - - - - 40 - - - - mHangUpLandRight - - - - 41 - - - - mCamSwitchLandRight - - - - 42 - - - - mLandscapeRight - - - - 43 - - - - mPreviewLandRight - - - - 45 - - - - mMuteLandLeft - - - - 47 - - - - mHangUpLandLeft - - - - 48 - - - - mCamSwitchLandLeft - - - - 49 - - - - mPreviewLandLeft - - - - 50 - - - - mLandscapeLeft - - - - 51 - - - - mCallQuality - - - - 54 - - - - mDisplayLandRight - - - - 44 - - - - mCallQualityLandRight - - - - 58 - - - - mDisplayLandLeft - - - - 46 - - - - mCallQualityLandLeft - - - - 60 - - - - - YES - - 0 - - YES - - - - - - -1 - - - File's Owner - - - -2 - - - - - 31 - - - YES - - - root - - - 1 - - - YES - - - - - - - - - portrait - - - 5 - - - display - - - 9 - - - YES - - - preview - - - 6 - - - - - 7 - - - Hang Up Button - - - 8 - - - - - 14 - - - YES - - - - - - - - - landscape-right - - - 19 - - - Cam Switch - - - 18 - - - HangHup - - - 17 - - - Mute - - - 16 - - - preview - - - 34 - - - YES - - - - - - - - landscape-left - - - 35 - - - YES - - - preview - - - 36 - - - Cam Switch - - - 37 - - - HangHup - - - 38 - - - Mute - - - 52 - - - - - 56 - - - - - 15 - - - display - - - 39 - - - YES - - - - display - - - 59 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 1.IBPluginDependency - 14.IBPluginDependency - 15.IBPluginDependency - 16.IBPluginDependency - 17.CustomClassName - 17.IBPluginDependency - 18.CustomClassName - 18.IBPluginDependency - 19.CustomClassName - 19.IBPluginDependency - 31.IBPluginDependency - 34.IBPluginDependency - 35.IBPluginDependency - 36.CustomClassName - 36.IBPluginDependency - 37.CustomClassName - 37.IBPluginDependency - 38.CustomClassName - 38.IBPluginDependency - 39.IBPluginDependency - 5.IBPluginDependency - 52.IBPluginDependency - 56.IBPluginDependency - 59.IBPluginDependency - 6.CustomClassName - 6.IBPluginDependency - 7.CustomClassName - 7.IBPluginDependency - 8.CustomClassName - 8.IBPluginDependency - 9.IBPluginDependency - - - YES - VideoViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 60 - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - - YES - - YES - clavier-01-106px.png - clavier-01-108px.png - micro.png - stopcall-red.png - - - YES - {106, 60} - {108, 60} - {107, 67} - {62, 54} - - - 933 - - diff --git a/Resources/add-contact-actif.png b/Resources/add-contact-actif.png index 2a3f3f6c0b692118418ae0c8b40134434d758730..5da11546086d1908eac12c9caea69ef86b311d4d 100644 GIT binary patch delta 4670 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 delta 4066 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 E0e=*Id;kCd diff --git a/Resources/add-contact-inactif.png b/Resources/add-contact-inactif.png index 812fd0aef5004574e09602e37c75796996630069..f140e980b96cc232dd8a5247e5f237b97123783a 100644 GIT binary patch literal 2002 zcmaJ?dpy%^8y{Y$d1gJL96~Sk$dL0C)`VeZUfP^SrUyB_jyad6u+rmDiZ@1?YS~DR z9b^v4*&`mNC~qWZi(!V@_WbJ4_mB5;f3EAg@9+2eeDBZa{@mAfWxKgLLcpqE5C{Z8 zJK3KDA`7rvGE#s?+=o(uAoV-O(HLe4-*5Glqv(DbUYf1 zlKw0Ol~&V^Q9?!o2oY_67N0!Ho?5{j3^~%p$&k(bhm6y=-_D_=+$TFcLoC%lc?mu= zjkZ=MQ>cUpSso_+c4n>Y1a?o{(;`eu_TL3l-}uF`Ztdy|KF|f;>il1uu@P;L<01;a z7WiYF(WxhwVy>p{7lQm4Pn|1UX(lnxkE>%+&ma*|^`$nm)aF4s^f>B`lHnObru=y& zMrZtspwcqBx4tehbWg|3_bu5tW-{=wLUWIf`k)fj92VF0JKErv(n~El z#C_q8R&oV<`jcB4Hh6kN64!Ok-Jx~3pR`H&qgI``@1JLE3f$P*AC?tuo1kLl*Ig{& zRIhFt+>0|SO>^&>NX?Ppn*4HCmMwfa5%>fVXUR*|P_a@|!RU3KNPBJKY^nfTd-2dTofe#?aT)=? z3b(BA%%ihZ3yO~6*@49PU4o2nGLBii$|nyUZKdx#NJb?;k#Bu=w$l34Elb|@g&BUm z=2oB6vZqZ|ZbOsmnCaQ$cy+TPPqO=7TySGX$;h)>PqieEKtqOuLx649O@c6_YEkAw zid|wdruk5SZB_)m1u@e?3cd7QJ3@fi#@on=6Cz8WvC93yFsiK=xoPs1FMQr|yF$dD zJg#j-757`;X8Rf#80Zp>5;EpMHEZ9#*%v4-Llj``k(uD5co0=wMhRpqc>tE~CiXwa zOfbM&>-8QaiSh0^A1?t1>`TZfwLbu#DVzJ!LS!w^*Vv{p_k<&*QTh4xMyvD~4^j2n zV&^h#2uw5av1@DF!#JFL|JF!2!%(;}_q;8dP*kv_FK1U7Fi2!!`~ zAoYf#tKLf-hJm_~=^SXJI_gy0Gvemaf$98%+-*BQ&ND=r`T7HVP3SkV&yXM|MK6Y)f?1#dA*`T&pOTVfTyldXD65t#CT|U>>ioJ(I!T z+S&>YyWokDYcOwHcsZxUK2{L?kiXkkLF-m#f5gp%H(cS0J;W@p(m^6^JZM&PxlH72 zU0%e2meZ$IuBjnBu7=;Dh1=m`(M;_4%Y&1y$C~b*g7L3J8&%Rdlx8b)ny@ z;_|l3Yri~%$BK9Yw(?*7=PM7+cGh|NA+!@eUw zM~Dx(bSuhpjfKX-j%~r)DZMYRa<_P4u~B5yWBRn2*@5w|pVgVWwd2EIRv=Pa@v*KQ z?GQr04z>%2BrFcuyNq1BDfHXLe;6?6aUgH)be#96ypP6qDKvV<8&wlY`>vGBHwaUc zUVHC$M3UJbZ+^$->%vXmT{jj|{YPgXm1rPIJ-PAYZXJz^vfRQZg#|JP>J|B1>^pJ< z{|c_1L<2a>2s~tBasBAOHp}U5`H#l3&(y3fpGb(?y?M%*v0IEji66#S&Iy)ZeEq~l z>V!wEIq`4kB1)Np6p`ebg^~pcp?bo%qjBr|EO}cVr>}*TThuA$D5tEz< z0iJL?u|^c1I@+lC<#d2?TDqHgaTs9|>HH>6|7D&;HfTqpKOE}w|L{tlx%QfKV3N; z1pVia`fA^i9>#-0Vd*sSP#EYZrw(+l91_3*$v|ES7;s}*{|5s!fIb5>G)opKL%F_h TsCG~nn7$x1%GJKcHsJc-iQ~s( literal 4662 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 diff --git a/Resources/add-contact-over.png b/Resources/add-contact-over.png index 8bc6a0fac23d3f6b3a9ea2476e836c9ddc50d9ea..0230d7e768d341d2fee94fc95245f5dc79b59593 100644 GIT binary patch delta 3663 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 WE0~S-nm_#%L7F%{wKA+t*#7|fz1%SX delta 4034 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 Se}DeqM^cnklPQOp1^o{_!FQVg delta 8809 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 YqF|c9cYFBO#b*P+2xg*Jse_34FUYh11poj5 delta 4456 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 GkN*o?8BP2E diff --git a/Resources/backspace-actif.png b/Resources/backspace-actif.png index 387b1ef839d23867c7a610737fbca04e0c9cda94..b19ba4fa147728f365a4c199a347dbbf215d874c 100644 GIT binary patch delta 3429 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 b;v8(l$geYKGqis3lLq0n3^gm&?L+?$&dwq{ diff --git a/Resources/contacts-actif.png b/Resources/contacts-actif.png index 93088dd3e2feca179849a3174c5e38a3967500d0..88039d6c546904d99f35af7519d16565e82f5468 100644 GIT binary patch literal 5070 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 V;&sTWVE$kO^mUDK#TeVLe*r!B!D;{i literal 3684 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 diff --git a/Resources/contacts-over.png b/Resources/contacts-over.png index 2ac5159cf3b547891b4723a9aa0274f3fdaf6f7f..1cf7fd7abb726e62b81cec6ca1522516a621a1c5 100644 GIT binary patch literal 5160 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 ZQC9+SsOIBn0?_1w40TO(-fG*U{s$}YfT#cf diff --git a/Resources/contacts-selectionne.png b/Resources/contacts-selectionne.png index 58ddc4b7d853f9a7f259a34c4bbe5c1f7694943b..002335b08b6746e2a7a4e47885a584e20155d127 100644 GIT binary patch literal 3291 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 literal 3538 zcmV;@4K4DCP)APLLbrxsFXYe zk}3~{RLKjDlD@={Dy@Q{f(k=`gm}$n!S?#LGjsYdJF`1`v5mc6dp!Rq88o|luHW}x z&e=1wOiBrYKf!4Vd`$kWE0@XieG2yP??31wpSQGwh1HzvHn33knyt~m*J#f5{ZBr{ zXc|`u`DJk@Yc#Mm&FD=&nNFP-c9&Okis? zRPElkYP`2dg_8?%xd&cS##qBG7Qgm4#90-hUaG4C`t z)Y5N_0r<{$i-ydNts4-DL`oKIibm1cxMtRtH@3DS5}Df@KeeluE!y%MwRH<$5(xpu zasn2O-k`+RBVPscMUM2n|M3P@xd4;@>c_%i5l2hH@^otG$|6# zHyL<1BJr0Ift2a}@%uLBKi@Qe;&aiZns|A=4wV!6or#n)&n@lB8A815`e}#Hr(lc` z`TixJ6ZyU+pZn1Aug#SAF>Rksd-Jhx3_c|P;v_3;U0&SgWsE`kG2wgnZuy4%;kZYq zFY|~u-;qC}v$6=_;w1CzH+=Rp0)3hAy`2<`iv1}Qcy&a0dYR{2@>3@8hcA=`3BWEp zqI>!Iz7l}+?@}*i0>8Pb+*1hnIK}bv>w&Vb7?#880XoTp*AoKo-sR4>bos})Ms$V? zlML_O<(?)zcaaB4&ca4dMBNAQe?Bl;S!|>r4!-r$s(?XCr|N7SQV?l}MwZe1y zvwc1mmDpJ)@#+XK>o)On!69Gz$naxT5-+be7Id7eNs;*7Is>o9y?=(^mj^h1wRZ96 z_+HRV#H#23r>C&9-Yj`{&b{K9sMmr&vp4qu=|}SG%179iu=JGm=l@=lugKpLmSw-w zW=n_;aC!m{tK}!^i5jnwpY{9MrJfJc{jHJm$LLse9)(OZATF zd}5#6KEapSK7nFBfnq+vSL9a)ssMJ>arD$P#6s?)PiMy@&W=gEe`jUf@7xw*xH`3b zMzO7i;p~`Pdh#nV#156=V5>lcmmaMBck~Mbsb%`bQZ2x+uf^)*!E45{wcin8*mY6& ze$3xq!|>9^?DK8kza!Cq$3%R_@&@f8hTR&67O+IHZ@s|b>&wG_Pd!6Ngkdlxmn9n7 z?JqSi6^Z$(0QR+5O-&fUforG@4khng+7SYhSXHQ#<{0R}CY zy}mjn7Zl#wLJX?7_wiSp{2leyB*oK~tDg<=w8Wbu)@KGr%>vT*t`*o(UzjuurX-Gj zZn!3)LuEJ=Q!=qz$G#Q;E#M~XorH_ z<-FQCFW48=PL|V}5 z^MnDXF1z3RH@L-Tdyn=ILqu5hsRB51GdqU%5X0e^;)unz_72r5v%85yO5kMNaJ8RX zzm$L$oV}iB*9u69c?)34V}5%mJ5j?ka>4EF(S$?T@mmH?C$f{fy_REti!~{G*9jcB zYFjCDS;mRDf&M#|RjLB`>wQ5)1kh8@aqO0rRUf#TMxQ3orwI&A$(*{Z$+w9=J8I(4 zb=@V-!)*byg{;pUxtV=$?>eh*69#bTx{mXiM|b6x>C-q)Cv;c)c7L*oAb09{_VSG5 zT~q-a{dxdefT6dMyXIy#RCI5DF>B_Ydf`lZ{@?~iO`OWS)}b=AhYD|Xyr18iOd*kbHZ89G(&iqEC8`|N6VKjcVN^+Z`8_H zv;f22bpn7uJS{PplITyGCFf_3gl}nL{-@)H(~K6FUpqYw0?k2&^W)ZFa?6bCrOOYe zCE5gY#*P6x+65DEd$@yH!9J|L3y!gKv>}gie)4&~J zX#s{E^;WKNGH&3+u)cCE|LmycuC~_-0CRWjky?&zwH$q#!0wCF1@3jIMDEZQTH4#B zcQp!!_`#Hkfl(7flhU!a?U{bhH;l|@OvP72I!+8*ZFH*KnJ)n7(*y?Y8uO~JA_?C| zquK0sPqQ-TMA!p4J8B|jSQhON9OknoL)lfu5^Pat`gL_m;-#T9PTh7VaP2vLYtC5Z z`Ej#oA9Haq7Qj25RddeGu1109)+tUu;xiKcNdtfUER6$0*;T>zy7|Suijd!*%x=E) zX`-mxbk@V|*{tc*ZNnL)U4BoqC>qnBTd(BA#`1h8(2-6z@0aY-3yG9_HmPqOn4@4M#(Hd}wIdUV7 zOB2>4HV2s_wEm<~;D$@R->GtRR$KK|3x)?GR{pUm%(0=0p+R9_nIyA8VR)#TYU`rA=#$oz+&^O<|6k(-I8|!_!R)o>{9P$SrSj?2ELsH}X(TVf)pBp|hGp6%603 z=76+zG9IrJ_~|+Y4GMGSAZ^YqfQo&kdu7tZOG7jG?bia(g3Q|PT(8U$)AYR1Vc^IO zV1KK%DRMAY_UFp7294a_5PWpf!;<1s<5oh4qa~y>*!D|lKYw!^fedu zdsn7hTZrS+jLUyxScjGo+O}GbZMDIImCB!Pq@DIZ8a2?@T-g5KZyVTNCo(&lyucIL z^^6-U%<=&ssY{$mn)rNL0*oOo;i%P4pkBG2F4)u0x=?F98|2mx0yikuVT(`3OdPwV z7nHND^L)x$59jZC0GB3BOc+2~T3gBgykp?zw8SUl+4h5s;qs)r-*{ zZl6Hp6DZp!kmVDId;%@?2(;8AklQB^`2-@LKwrx(^wr!i!wl!@VcfP&PKKK4Oaemy2sHl~zGM~iC zT#>P=A{FE$;GnUg0RRA;l%%NAzh}U|I};Kd002UFamfEiV7Z8CxG3A3xwsoTnF54N z?2SwbrECq&O_fXyO*|bZOnCtS5Hm{^4Hper8E#{HTYAI)@X&kMI{cFc0C)vF91M-E zOjk!#S1^5YhJ-Gh? z*qXW+5_;I$*g121@DcwPF89Cjf2J9T3IB`5#hQ=!zm3w6RUj0xcQPepqi3WuW@Kk1 zWM`shVqxXr;GiXBW@KVyU}R=sVy0u_;AUawW@IG%Ul;K|ZB8a;+)AS2|4Y|DijUaB z#l?Y}fx+F~o!*^=-rmWafr*QY>pvLG%yj=a=$t+6Tns(v?3_vd2SL=-+1Sa_!Ntuh;Xp~ z-(|T)oJ>UV2l-USn4UH}B{zLy~dH&m5QBx;NH&YXF zCwp7M|B5fS<^MsyC<_ONkT@GV8{>cb&GpZ8adt6gadu%AVJ2n{;{PRU^8Y7h4F8N_ z_)l{Df0E^Yrv7E%e}?}%_5Tt7yLe3P{#A_AztRvOzKsO{q_3q!g;YE?idBADqbQ<& zUvFhhcqgrq+GZ+kh-o+HAApE~Z7&fkIS{>~=$z#t`dmso7QqM&r|k7c*eAw51L1k7sU0HhLlaCYqv9=2lieo-;{ULkXy?u7;JN0u2>r)&z;6O^tS z&4MG~E&&1+K;KftvM=Qh#N~pN8OvT%7c-4uwFtbMpn?HSe76*B5D`JXirA-041xg>Ie$w@Lf#Tw&$ zg0SJxO_`ySEV5H!%c$*(heq0x)1Bbg=(G`~5JZ^~+#igS(HN_q;Shzod67p$ zv8YK)RPYujDwXQU7!x;3*%misi$twK(lj%k(L9XO;7-YV%JOI|#XGgRF?`~@F9J+a zV2BJfg|ZRs_B$^6TZ7y4Ha@AQ9(2;TSoax!AOIq%AMH8Hd=|)^M*DyFqE)s@-7BCu zBEZ{pS72fr#+d(0*>TEET`Xq(ItF(%-Wk^<{2IX9P;A2DLnHrKV_Gq99nbQBb*DmTsGD8 zt(cU`S-HJHyw6RqS~Wuymbq?cWedFrz=yH8++E(TKAU-#W5S7;$Q7`a$H>$r#6ELH z8TCl=rHGMS;|w!x{s_;&mo1XCK(5OE%!m5=*?nX*AM}7GQa5hHhD*O3_OWqnUTLd?+sB%3!pq|tU)2-8s5#jB-pzf>HMv>RSj2^4@1-R ztT=GDIwgAg63m>WAa8{_GF9nQuv5h_G=AB05JyQli$$E)!}Dh0#R{bibFNoea#}Ek z%EGB9A-hnzS30Eo#td|>P7G$dW|6Zho?eC^tGz%ESgM5`nGXljI}AU%?85CT5pIiC zW=aOQoux?<)ff0Z_9?TKzKWC}f9AdA5dI`qX4)W%EXZDVd2xW#?CsZ(|_?WSqWY9-n5Ns9!4P=0JV6dCO;B3{qfDtu_m7W8 zBe}w~`A47<{n4G@m?7=otU`9h9A^`{(+CVFJ6=UMcMALHX3#*_qIJOz6~P|06sMaa z;6WJ^_S#})5J4=DR(Q<24?{)A^?U}T;EiX|_o+qFnxBg|G60nt3bq7RSf0I``?G!L zdY?&FDVahn1k-mRoKm!c7ATAo;$6Nw*nlx2=-qrYh8QAW+qvwc3DO<$Z*;GE)XId^ zQcJf*8}_VA@~VvWtJ&Ay8xEGPIw8-5QbQ|U8G(#v+gDwsPbv-~Re+<$Vi`NH0I>-JZ(RL{`NY@~3rxrH-2z6`*U zDqzoFDhuZG=6ZpR{}Lb>!9p?lh{YO;9o3}#`3MZ^mv5l*ar}ET-w#Dh9{05?2n0?F z%-l?dYH}5cr4dV}-=9Djs*q9c(DJJzFewnZ`*|M^gd?*v8@i-%smklUBaOE-QFjbU z>+ATzl(cQ-YY5ej3tGPh$pJ-Oc{tU37Jhb)vb$}*>=oTKHm~Upe204M){jmiS0>ze zBJ|FSR3&nqtNZ(qY<*4(eYL?TNot!Ya4wfvZ_}zDitdHcmbsTE!&fJ5f0a=_ z8rJ1b6UN`)#v5_tBmk5}89+p&z?j^5_<%azO{>wj@pn%(dY=U$H}`knjw_B~P?TaX zvjiPV)n1$=+>EN|Ne+EACUNQmP_j6}+;3V(D)-?Uxl8!FV5}L5NC&ZH#r7>|g+9~C9VPd<3k62WG`fr+_V%<`KW?|>Kr4CDaks76+CxigN{6HgVi$F8R>S|hmxomTZ*gAbZLr0 zL6lAgEu&F<+=$e&hMUaV5cx`0W;AMU{bDSR3re-p+i)*n=PNMW88Tma%IXgC*;O}D z=G|jyFoJYAAL}$wjx`n?G71=`?$k!dT1%++1_;=VkM1RGrM00?Cs>FGr}`(HCoNQ{ zG0XSAFE_@%u3+|AvZ%@@h=pQA?t5@-M=3p&SQY*#uGCP> z7d9m+4k$|~Wx^O@>`oMF^z^^q3v$HcI;&G?`bn{eH!krJB=Av&925G=i9&AadZnu^SI~t^Cbg{hTdi(V`&+a%#nhnA6*YeEu+QDOncD6pq zIzAo#@nm0pS8IjMdSwhT0vX$f`(Wnr&zPBOjgB6F$#4&s} z=?e6D6+g|TW|7ms;4aE*D>(*r0$7ZuUtr@&WAIi=miacf1Tz^7nP%1$;AK}nX`Amx zmVtC!uFO*Z9Yqdi0IxCWc05}G$$MPl<}yQ*G5INnQeWj?Pzu9qHxT{xs8^eskgvJ; zvB4f=!L;GTY6|?DE-QzMn(k@f+X?r6P>Bc3gIv?-fIl~uS;B%54f$4Oa^HS;VlB*= z0b$%O?`oIN7CqTeZ&itykR@BBp*cLHK&fh>p%KnG6nHA{=$y0|cWxRc}{Pc*zcTskH(366^j-FQX{f%QRes4M{<$;LKy*Ogl#!7C03>CaILbI>|mn#Vg z78EtX^iG7sW)>i57uM9<7;rs4!wJqc^0OG4bHh!wq1W)F3D%tjASB&@1MT>HH_`AyF=0P6l=+D}NQ$NQ7v3!Af)~+?YjV zUdT3!`8uT2P<0qGw-QOQP>8Q%MFVGw3)^--wBjf&gVWoWjd*+P;+o({KxCfkRi7+3 z@(Wf_#ZnEOpTWuaQGiZKx04acgSbi%+i`y%DeP zb~U5SJr?Nb1?FuF?#tsm7lJ>!E3f<%a#VM&cI)>#ad?~kPYoi*TGHC=Y`5S0*H0YM zr}5qvmcwE0{7hpG$rRZ?n;c@v~V0_+gIVHgI(;;}eB$?_k<^z=ie~Yqcz7q?B zOZ0ECM3GO1{JO}x?a=Rqwl1M=9(tyl2A&L?Dvq?VC?{Im>pcm*&gHr%o;5<}h zj8C%Rs?=g4sDoK5T`@dx0a)f0@;n)k;#>cEJWDwZ`wkwaBL&YIWC&tVrRY^35I=Z5)&o?KmIQULcU*}qK#@OO?-_j9C{k)vew1gr0 zAsv9eYRdT=mWR{38z)y*u<|KJj}@wvD~M_~K&yAQl>Xd=`c7U3UKrJU2Rb5~e;lVh zdmk0$j$!elSR*2)TAs#vHu<8Qg*5Wq!CVM;*#{ z=UI=8nI8^;?+1J=dWmW+x>sSaBV>X)e>gyduzh<~Vb|F90!2WjHXg ze9;9#t3ugLCs9@ZK91BniE$&3;f;kl)QENW`;HdwOdGLi@dyetKKdYQz58DmJY;T(t95~7?FpJ}gaNcHBOVMgK)^Vo0e z&kLM&Y9CJ3(D;{*)4Xo8p=C*qc-f;b!D&tv%xe0XA(-$3AR|0oY}~sTCoK3&`ObYu z))OqTcp&EDo~lJali~@@chG>u+B5`Bq^uX+Ica`GuN_D_`gR9<|D7nFC|eYjyZdl; zrRuoZ2Wo;EGahDNv20t@fN{VQMCI552=+LUrltur(sZB#38xi%K1t>vZS|0|>G`)q zS3+)H+iDWpfMlV&HGrBT6_2<2!LRnrk=DBdUt5*CVwxNLJj{SsCT#g_F{oJA-*@qxF1MbePdpeeI+Ix z)WE;b3w^tIj+@3B2n%0sJw!33__PIoggJh}!K*c0z&OUXeEZ(Ua?}a3<|4lZ?o)_t zW7R&hll__bUwAB$wJHcQ;F>3-|2`ac|Q*Z(ZZN(E`y_@V~C?KH%~v)9{rG z-q3sLYX{2w;D3{7p~<-(?P6HnDwYBJLM?Le$^`%nbL82>P(9}UAgA)L1k4R{bYpR; zUWcJgDG2M#SAVQ}vGWPvm+Q&bP_RwaT?^z`_Pb2l@jU3r@_g(K=dF4?t)ntQ=3Pp! z*Ttf-H_mVKjJuLd%$M)S`l)LKL)0K&%8or6NJjRg|aO z;-Nri;Y96x2%)s_WY-SwgG5sM_t&*01>stGCnz0J=**qcFs4+q;s{nmO8%;_2H=Yv zSW5AheBOVpsG~nkA_5U+bLWeL&BU)kB*$&sVcJp__kZ2dX=BS5x_UO(6#u!iwXcosBWSL7v z^GJKi$R%40GH?>oZP4x+b@juLrn4)!cc4?DMQmy@kQbAQSGY5vcYeLm=S}vvF`)nJ zwGRLCnxo4()yw9SQEmvZ9=NI@`>2dkMv1;48KW&QB{MVzwnEZxg8xyB*Te}a7jwfJ zT+^vW(bJ$EO8PT!rNNtci`>(43mEHgKc0?3jbbO550=t)-JM8s4orE}S$_jYBFsXZ|;} znR>|qxk{AwZGA>CW?0gYE|o5|T~g)mKQ3r^AUj*l`wUN@3}J{X5_l+&d1itUALk3p zSHFyTbjOROLE{TW^B{pJyFI~FL%wZ=O7#Lh4r)zj6*y$4yX{n=m}%{~K7VRV{&0V@ z6NG}!GNLI~q)XdrgYjD$>eXXesbl4rc6f{1KjBXgpiUjY7PvZ~DlAv2>ctQ)V}(G& zN?^Ue;#MnTLeEVp$PEmeVyJ1fAgemp$uDey)vcx&-@dg}DVBj#`{!rGaxxxf3tFZfxw(g&`0zhZLI zJ^tc(VPfIo;j#99M)HnrIOLQXfS(N}hyNV~4GAO+Ol+kBhA0U{RG8{7D7gF_Unxx` zoy@MP8i|f142Xn;tgIvyuFmf^T?oh-X0RFCN$Z(gAG_qe`TI8evE}`*1-%+hNwU_R zo4w5Gdht2+*?sH1`Rv{Ggdux2BLK38+MA&dh}N6+xdXc$#cPL+eH9W-*QF8Y3d=dG zFTx4$zb3i-#Nt8dHf-v5y?JX|z1SfzJLS9F^3HvEV;2TuEcxk#+yf>NyD?)xXm*Z5 zOo$AWRxND3RegO1zKieWFRev&VmTg(;yN$Sg;zT@RWo+gm zionS8cG3;%pS>ApS-Eb14}0-V>G@3disu??GA`St>>3$5v`xEiR9E9}WN+q)!eK8p z3eCHGEHR^b*M4F-zkU6iye%%iH@f|o(-3e586FD*9En|h)3fJ&)BvylHy-C$MLOC| z9G0eU`EDb!s6s>M!z-5p(x?4mJ8j6kZpU=x(S(HUHgYY42zbnF@|HoKAn1!?RHz2b ztr=xnd{1)4*?Ydnei2P0lLc?Qg>@P}FAMWx?e^OS@@4na?zO1EFK#WObTn{Q#s$uU z^bI&9%?1R)a%-*cBbOU;m&>8Jh;d%hu1Q>kW(NLF&ZdTrBm_%Mo_Ks#Hs; zWco@n@=&2xin>JSHRZ9{+U?bs=WCsI?djV7*>uC~Ut39H{^TGj`M7tGETSzpEZmID zaQW}s$krfAIK4t&D4A$?rR7#&$R@6`J4?8+2Z^?;VB}Oj0)cd3a}qr4UjA`j|JKA` z0|fYi_Mi8F&zC=cREQqYIGD>S^&taYr!%cML^Qo4$Bx!AmPYlH5cUNGyzo*5K&a-j zIpXYVtOkf!)vtn+qiJsM2zZIs9*lzeE$JDmq&AjeNw;W3W2n_~oKX(pv4bUlpWvz6 z1^%?ZVMoaI0=xKWIgdq*C~Ml$Q*cv9=aGz%5KjGhYPq{OzV|ZmMc3SAS!Kfe`D&`C z(+UfA-#xFTm_%`ehm07FR^1<~1V#i88N8h4QV793AI|;RAh-$HtXl(qJgUO|i$-Mx zmj4dqI=~jorsTLaj9pw?27d*RW#y!z4H&f^%XfPfd);N&9W2#hAObb{5o5;e*4i)J zga*Xor_nY&a_S;VNf2U60IqjF+}hpp)4=K_l4HRdT<{e$F@fabY0$BkyBfg7fh`eOk8&S#GklDJc?tW6lj zO#O*X%8KF$LID4}sOPE}#LJfln&|QMHwLd#s8TB*@)oi|Mt|_49xzVvybi+EJuGeR z*X?O|RwOf4C~BAScz7QsdSyiaOdqdSsDKJFg_DXuM8SRhwJI$SDU!+x0w01v$5)TT zVX(Zzis$knTq!u$g>3+Un@Fr*ln3_2|&_s7i#3vguMr}4&z z@-nU>%r!yXka{bm!lir}$+(&KnoV-NSn$E;-4f^)6KzA}C6-*ZC?oH^TQCAEqEmV% zZs?&5XWB7bG)6&c+pt-Kg&}-zy*q@@%O2J?dt!TqGq}d3kG#$%a*XW#FwQm3v|(Zn z&#?x$9Gs=_Gy`pU{xGzcLV-A)%oETus;b*u(i&siFSBY4D%jFRS!`t#b-K(l_#yM! z4SFL?I|R`WmC>k&dWZh}LOPP5R4~`O631)52EXz*)syczPiRSA`kqnbF@x)kQmo3g(#a1NwOBY2*Xu>xRGQ_~1-9+=DPDK`F zz0AAhn^5m+Y*SNz7a%YVVJ1GX6_JZVNMsx!!I++WDZ^@RZNk#KC8XDTS01)ng%;&w zFkoE#kakrPcRL1Qjf_>1>~j1Ckp)pQ5-e!rJ?$_CWCWV<*DDc~%>&Xnk1%hl2L6uk9D3jY~MlvL=e*XtCg~I(ED<%}=Xa4t4Z` zdfru}!WB4=2A0~oE~`a1qQ^|(Ya=LlGwIu>vUr|cgM5!C7wpIhf9tUA1T3gubUFAO z%6N`dtV_Wy8FZ4>=P;CPjMfMV2S!^qpH6d5m4-_J(D_8IS&QLbvq>G<)8WDRN2n;x5B@i5@dgZ4VBL7 zsxd)~VI1V^%(1D!gtAk+tO66QqhoIaB--^B5EQ^~Y&!tmT8kE$E&&#WX(Mw#jLRS? z5!@+7DnG8!?rE7ih_8OlLVLMT4B)ls9K#TohQ_zM3{Q_=H@pinpbY1liOAPwUCs@P zU>lK*`(MB;eUM$hJULrYx%_t_1%)@X5;JxWMKUdhx^8y9%)8`OJri*ZxfTgzUqR!JOVqeU<|IUS=X4R6dV}5aB5}0SiIQlm39kx&)#q(O zudG3OtSbC56+|H&Qrjmk;hr+ap^t!L(xzKFk}Y{EOWl<(@vHh!G<_IuhoIvGGvx9>Jd0aS+Cnc2 z6wTCgUU!*=JZhCaB&8U!;FG7KP*ck@$X%Rc^PHbma#?g2(^13#+2^dPHPERW5Tk^M6X^IQTT65jEz3sg^8xnHX?Q^(Wk%7R zVl%rNIu~aE#i@BeOHMty6Sa78D&=POucW#4Z(UOBR6I0Bk^sSA-y*UX95Se~LY@|Y znwU;%hq^m|?f+X`xy7Y~ODWG(_D> zPo_TC_knv|eP(hCJtVH%`8P6eK^tTDK)*-vGiZh&*a44TOR;ntMd#^fRf+yU` z;`1m4Mx-pg#fykdOTc}*)f`5y{U<_mEy8@NhIIA!Y$5&AXUd@{iF6*s>vT$x>Wo>= zof`o(58D-Dzo&+NEk=`Hs!J)BAmE?AKX>F}mIYazhL_SAXhdDBxn|lRq{K$qh(_Q& zC@14X9FPkxTY%8`@0ox}o`TloP+Fcq-(IehZF_9nX#?7=oMNcXq<`lg%0F~Rm=eY! z_DfqLj{RDUZR8WY*cjJxCKN>0BtJGx`aOca2@+#osjUa8+#;z~=piK`nNsm-M+TB+ zYMlVb$59Mwdb~{(cGF-qHTqIsfq|jz2JXtI`{Zqv)kzozPaJn+SICp3cOfB)|InD7 zfA`m{RgjvXmnV?6>=4Tc{R!Nt3tEvn9-;fdyZ}pe(@ZNQ8irftTgeU@9<)d9TnjF$ zP(66tPN;EIijg!ZRkWTfIEG6i>f zISZ-?LtZembJM3TBqJaK@%5&d+=j0EvVo4D#UA?V{DjE z^dWE<#S8u8I%EVh-zE6eXS}B%Hz_VquJzME0VRR<71Q^ZZU@$QMMtKu!|nn(#X*yP zol((Ys<0};U;CNI+ls|FhRch-o|5a*i{>V)r9!PO(4Xf?O~|I6y@IR69{t3RG-n{% zlv98vDQXW`P%44`^gwt%wXoz=NikF1#c{d%;EB!_L9dyU<|{!TWZwAi(0Xjo^1H%G zmxYpDk#GM5s#?(x!aThw%7H4F(W8rBHPwXP3$+ITvL-KQ~ zgw*ek&%2eG5j^9|=QUm}o|F)V7|Ko~F+T#0 zD(K$KHI<=Of1V6Q@#K60sK_k-lkmY@)MB7- z(e_uO65yaEss!9%O5_~h#FwpRUZN26#YPl@UV;aRnOHBxJD~td3uet%MV2&$skt;Y z%zbybv3Bj%N3`1wSKh>| zt>fCOn>L_Y3NT0+cmJ1Z>_zTA-JFc```-zf6Bh^t&D8C;1w4A?Q!ycZh}QVl5UyFx z`ds{+IOF6&n2&$p2Q}8z#$jMq+$O5eDIK5$etnYI277Bd!-&t!LxIj=eBb2(7N(#f z>awSX`FA>@S2{>j;yUE6mV`#UmWn11y0(#&_YZF;6+m5bG$mIcJ{A0I1Xzed_8|d=nLkcyGn1MsflaW|K4k?Ol33CgME+2lxB zSD9R{M6J2UPG~{AA?>z{FA3Bq-KzD22^rY>%o%Qfv3){8#Ro{SYqbthyW|+F&=(OC zNNB;HdujAt=RLZIMRU)&ygA36Patzsq2>8hTca12EsIPzcWF)DM5bXWjSe!%6k;Hq zdar4z8J5HIw|iA&s*$Rp1Y`vF%U;AWFcJk$3U?*ZjY&9-s~KmQYNUWb$+IL1ZbcH# zUn}f>Yy1i&^Z!nWthy+H>-i*k?*y&4+Zsq;APBeZ@QM+pw`l8Mb840Q7@`1|AOp%C z++>~$vZ`5NmCWjw>o5)eyFWBQ#dvV=$)V8;YqdoK9E*3UfSpU=R{@}nu6qrh+WYUE z_3QhU54TOn?BRxF&S=NN^m)Vu^gyk^{0K4BKdI;g1ghFga0Ls}wyG890wnZ*Y2{8-szop zw=&*(A8b!~`gTnbN?X~0TU+VC);8#OuNub|HX8xjo5!|5XC?k{kjc&%A%rQAR_r%=3Ic zC!+O%O6lpr*1Qh`-6Q{eB0Z9ukvp3~mquUapUjC?UGE>GGDb)#q+f(cY6_?k_mWSov5mpb34GU=Jha_+PKH zekyhwPJWJHNb(@yzXKawB-VZMO5Ml{pvI7Tx$MHpv+&m;)Ma7^QWg*EjT<3XXJiLd zSx^{HMw|3kXXS)u8$`Zk(Is%XaGFM1*WdW`cLGjlYX>5w@#1RK_K%liL1jw7l^x+X z*M>=_XX#1?Uy&naTytHV7t#7(f;~)I-?{F6>GF=~Sc)bxtky(V83TKLU)(tBebM1< zvQ$&SqA{+><+#HzC8ty7)leYi%BFDEtqee^>>9yH>l}&<<$;BL_CbJ56SJArRYLH! zTJz}Z1`*=uhTL;`faIH24KxN6*=_DK^|#>TfFCf%Fp0chN~!zJ8mx)PwKBm;u2yfa z#WZau^|}o!KnXgJu{{=NJL;DSc+M08p0MYoGmHz<#dUgqL|N{KF$XMnne>t$=V}_H z>ZP6cogIna2Mda(ZjUK)gKzp=sL?)b=iw3q%0|w~wu9V;0!9B?R{_>G_NdB-oQ6~` zFYjrfj;?n=c=bS@Vbtjc!(a5_x_+VTa~H68tyzItys_%}0&8i8w#@$~H1)stHc|d9 zgjKpXeFLy|0`MH~JuxLTW8Wc8gV`^)U)rPprg{rP|o`@1x0`Pir zq(!Idjl?Uz!osn?K3i72G0xlRM z@|${-t*Fd0{PT1{e-($l@Vz1XoFwK6mn=&GC>}SZo1Bq&-Fyf@c4D}sAC~5!_ex`4 zy;`{IGtz|JGXy?rICS7{Ho8c|`RSwHvX>vaDFxfbg{QT@$%M-+Q z`a?LPq>pB?${4CUc{`&5{IO`c_E|oE=7bybr&7P5IrQ*5+Y5OmRRSh=&>Nu195`no* zRyKWo<-iYhV@xMDNQf}CXgXP#!hR%FnXrUGa#*TMo8p`CZB9tcc#q#|2ia-0jyv9w zL7K%KD>=(3N{6LIWlpa;;~3=lqe}W>A6JzSC7Axy^D_?h`sn{f>Y5`O#bsbuV4?vs zX&lVDPKFxbUem>W1s?b6)w97-KO{!rZkH7jzuTO=3#jset~TQ{B~45WabxO;GOQlz zXor@oZ!s76xn&XX0PlTYngWLEZX@3N99mlodB)NLcD9Wy1z>Jx`4x9IAh|x6quI>Q zwO{IdKR#C(jCsIcnxWCA4nDEWZFCFeW%+k>L3^Lt)tjXnbZi75_+CLMTtRkb;cJ2j z@5*3i0IQj(;?_z6Iq-FBO%w&Gk<-jaPxEd1e|%#4xa_tv_K3W<=WnVz{4Gj^HCfPC zuQh_a5OgSbZsBM;#r3%kpJTRm&FrTFYQYUl5oDq z@jl((J0R7d^>?SCsW@R(KAVK2ZF=x5l*`}0&?iPplDpTj!=b3BS=CpJV+ZnUMmi&q zX2bzIk{3iCN{4e8D~5~4pJ;}6nk#T6(6b?>akN}}Xs0`d+~S%MFO?N{LtBwc<({1$ zA{m<;);1eK`=BB7dzPWIKY(IRocl zm4Yu!nDL?33Hp7BMpK9#iAsV7BF9$Ds^c>GeQO*Iu+NauivOulXg^&}5C=WPmP-~+ zAsA=ODPOA*5B?d&sGAxHO5=Ur&9N8~G0npmokq6pJS(S6Zu5|7Inumc&Wa}Kg0}YK zS=)3Q$k0OJf4zwprU3|n3Nu$l86O^ICglTjo`A}MFz}8Pi$-g&C&K~xy!W%G-=}XH z6zv$jndL)AXBH)ilLRS%Ib?k`9Yjx&Q~QwX5iz09qxA0S#Wp$u(O)(18J2q6=SIX+ z`CqtD@FMk&^6E##*JipEf+sQgkqy!q?S0HwBJ_3cof!;XHqZ_d+uZM6=+6*s8LJ_l zO3AfgJG37ReM9lI@)IU5s^mzm0{=|YAl5%*^_UU(e0{kOdiS|eHs_*GxIj^E3Kt+= z9Zt<2F2&w^F|XDlDye!#d^>_7nV|0_bIc628wcv@9xv8X_sbjPlSm2X2?}u}B{bhV zN9NE7Ij{x@f-%vCWfnodb4LOsW_FdJ=*SMJ*(@w6RSPU#5g#Lhgt_eUX|Gc?dh-pw z%2`}C?q=Er!6cNg^CB@sV?Ro^jm=!Y(sBa}t%rL0oDiL|HK-#9TV%NIHJuXSC&SUQ zg6Fd zAJ)HYW-C`g;a+YAk3c0}Jhz5cI~SDNn=1MA%cm5n*8~4qHddJIx>a}I%_mGqP{{y? z4#rw<`(cmL<+T*jkN7!ozHsnO?1!k$25jC4_BJqydPy{101m(!5q*me`jz2mOq)yl z#yD7Lwfz050=~pDJ@F+pB%K+4$;Gt@4dloWXI$j}25{8BUan%$uBA}?T^;`ZLWcqF zn+Zxkjsv%_4Dp@#^Rto!N3eVC6jV12yaadxb{1IgfEX8r;{RBCxV=i7y>H%8$}gOG zMC^(le`?zjZwi@XvS-vibJ;_9kr5318qn~C0}0;&OUwn!Mso69=o)0VnHiuJgj052 zs|Hqiw~x~cNcsd>d1`a~b(dQwFbcHHspcRaHJ)N%=lGGA^|+oSj5EVus%1~lyDICwGX-(A>6aK=A5UH_0I_L$?QPw@MQ_|}}f z$@~yfF`ZZgMO`=e`g8AIy3LXz_T}?6sHb~XCn}0#9oQY8=+MHN15r$ zIYMZcWQXkeQ+hS1uKKi{W*&q}(wAW_u|vUQP6cC!6P;99=1x1j67*V|EE^?A>9DmV z-T%#R7VNc$EE*$o=|U-*S6>r;@7oCgHD=VEKWZ-N|6Dof$}VH^!tHpcs*AKaHI3sU!+Uvk_nQo zwXm99`Js2cc8g%`S!+;Z_NyR?F!O4W!f$Yn6OFVB2LcAjr+i7aJ?dlCww*xABLdIp zFuD1Vti$H^N3CcUq&1!%u*H_aI^*w49AJKq8l?e|ko`2u#2QY9g`6&?tIai|V-0b= zo~2~60ju8N048XOf6e8CdM(g8dg@+G!^klOu!{RL4kmJNEj(^z8nrJfJH2#^H92%WRctkss^peR?oh()uNG)jlTK-`onL1i3?r)b ztax)zrRz|5ne);t1tvqf0^YlZPg1M3JLbc3OPYGd>%;B0Bwr&;uZ(P5Y)cKR5!(7h~?X_5@Iwa7%h;h9YQhvahQQQ_>>tRg>zs$XF*pF2DMP| zsL^61m24B;EeWw{9FAQrgq7){2*7oB^$I31FneRL?lBOKdsW## zu3!NqvcNN5a1ota6i84>q6rbPSTMC<9H>&m6-e<0rlQK*%%Z7;jtoMPCJak{4I89~&?7hm9 z@83y6djR!diko|RHE?04&vVC~w@F=AYdC`-n3fwtB7*vlSvZG{ny3-6l`-neue^eA zSA|94zomC4tX)Ewi|I#pJ+uKnHU=&;KK>X8l8?zDGBtbxwZv}6?{IjnCxpSXqV?(I z-5~+Yr7hk$eFbL*ph+rt%NZb3?fQH=p(--FZtHiz|4#rP4dC)P(?ph2NAwX|gSh}X zi-gp(>&$;lGGE|}DPgS$krDk5>niSROu%v9Nfu@RbRKCXO_85qkovL7I(G-=O=~c% z{o8VZGY@1Hm6Gq{*kA{91Anm4Nxi-!Er8FTww2UWpIk`H2pHG)wkd!Q&XHJ|qkJdLu8PHXn^gSkg zmlvHjSpG_k!nazmF`FzLY-20r;hVJ_{2H=08^3p`;X;eO2t;AaYyyc3HkQr@ZiN=( zWY>r9RBU+rgrB&E2P!uI8`mpFOXUV_HmS4g{O)?26Q*BRP_2fV(vcpPDBJ4sL76M? z*zHNl9gNG}i52z)^i2aT@nyj+e6($IH_-6aX-TT3F1>mHvZjR9Y0Ze-Sz(Myq)t?w zYK@ykWYB6BprXc&5t~iqcvSlV)Iw7nKGLC^O`-x)M*18irq^lD>2)pjM&j7QI9K{d zmp3Br1v#J-XKS{cSKCVL0zeB_$ z6!}}Cu=fg5Tk#sG)<7n*0KEVe#orNGwJ7=!WmJjJq!JNP4I&U1Z~~<+pk5PE9DG#h zA);fI zE1zHxcJygBk=lthia@E_Q5q`*q?UmDH=D?7E|83_sa`F1vfNH}UOl<5GhX8RzJ0XJ zd;a(XEda419!>clHoZ9QRwLQfif#aXEM>t&;KGZ|9PDKpRdNH!vxCWQ=|o1LSccd{ ztD~JH3K-k04(xZD@DnJ&-24J0dnjnn&*q5_zm%`*>7cm5cjjC0T-SwVa5VyRGmuOx zGU59J1t0DxbW`g9@0;qt=T|)D8ao^dsbBL7HQs-Cmcn+AD&*frSgHC=N%Jnup zc(Tf=wK#jc!5}X;T-{Cf?%Pih^w3-Z%x46BWPQx`$!k?G{-^p>)|3ZU8F6VLvGD}Va z8>2sD9HWvoDCAg0J~*`=KzWoHTZ9)_LOtEyfUBv`PZ+y{vs{6hx@VP$rO7->bFf0) zl`E)l2-))VFzQ%51rIC!SO)_+RYm40eqZ3tFw1b4J_+~W+hg*)> zOR7)*L<^Ag<74oJ!R22pwa?jAw3*NE6sO>Ltqq?$vc`pvF&)x+S}CR<*)8jW*e#q3 zP_|~h%FTuv4}=FGf&eeP(1)7t+0{mq`I{t74x?FD~gvjC$q!yq+SsF%^#uHiaiH{#D z1TO+9Ey?nw8AvMqAi6Ti?<#dI0=hyF*$kp~j;W@dQX{1$+Qd&Cg>Sp?jiYPuL=~Wb zG}4}k_#Hbj>4UwEmDRJUcQ}(e68~Uqvcx&6Ba_CjM$9S+B{+K8)KoGK8N90@F4O49BNRi5dY0hkTh+TLg#A2JB&R!9K48 z4pWTTf)`qY9(jHg$S`mDGdc#RA!mFcJ(`wpP{0SQD$J5@W`18~LFSMBG1#EJx^`5D z626)w0ldYl^GqX=pNkKUcO7`V?Lm`fouknjF3iJKZUA=|J3|0q5U4R(;h^D19x0LXuVTRD|F9} z6wMU8?2Mo%7y{V@jGq1lsJ?}wO)Nl-(n?=*dn}5%dm)6goA#pjQm#LQGsgi2U*GmPi$wkY|c;H**UtQ{*u1Q+e+kQ8tr+P=i(r zvjyH?83ySdQm3g23|e*UbzC;$ojkOepYO8!d+*5xoMP4nF%Hn&DI!^SP!ZU(*KWX_ZWW3)^W98yOUyMm!e{jZTiz^JF&x6zg>w}c7}hKgIxM)Z zGs*wksWz0U8=CrDJmO_dpBSSai#sU%QMPk~i)SY>&0+&>Hc?JfDi#3?5Ijb}wS`O} z_OZb2YA0+}E_e=8hFpK)y$)SPl{nCZu(Rm7st*sX28hrpMtd$C@jV2OxqbP}t0SR= zZ;ArQ4NtJNuuaDpl$|WHl-vygjJbPghtIg$_;$Aj(^hy2MWzf>ITqMh)5B zjfG_;EeI!P)>&ZpK-q^i>I$$aG1^^M@$pH)<1B6Y^sBt2e6HK3F^0&pacO>ATtG5n zgg{I&hgKns6)=s&EW+(J;YPawS2!W$T8>?O!Lwo9b2Cc{mx8Nku%sR*jXL6+$6FNs zcb!5Fdlc9RmjxWG;D!F(&V+rFBYrb!^EOoh%ot(ZU?q(qWzi~x%HVUzlul?JI&H2P z_<9>{z#g|9SqIOyILXr(QwYZ*7p1ERC@w>%&}PpPg=d|~>Tng{MHbBAJPQgN1@H1v zo-TBfGIfiEIZ8KQROd|rBKP1pFg?4Jq&rc7r2|eh)#Yx&=dOY&L02dPQxN=Yind^v z)qh+qxjGqJu(aZWkBMw3Q`OSf+ik1@L^+g5@AYUPV*RA8z=t zg-`D%bQ}b$XHT6s7Ss!-0P2=26k&R1p5KIoWq@!UqC_C&sAVFE^aZr3R0e#H`v`lU zAsv_{J}ffDDA_@ZFhhtmM^LZ1mK6!i0;9_V{cF@0NWfQ{G86&fQnQn70%zFsY2N`K z`zHn3sua3>9nQ(?0=ES6T9ORPhxPIqPJ?@)whO8NW_59jDMKz_OqTx@96Om>a#T=J zdF09w_yX?K4?pAYgHVBJ5XBsLj64L8Cjl?>PLUvL=MlJ?;47A(g0p`>_@a_9LMKrK z9tqG6n`U{CrU*Cgzq8{2&S=FpH>{Ol3fJkhUJEh2b_!r_SX00`2Qz?-ErjkiIDiF} zLKe@8&?7~la(O$AQdDYASF4LcM8q8mEW}B)#4{n5fw>bu%l)dL(*%xgty)>-HTv`6 z(=S;CNOKos<5PSxsuu_{)$jzUvQR_C63~%HQl=WU+6JhKU?@er$`(@1xVd4I4Nl55 z8?}q^Heb97kRDLFoRu4uBbP4>{r7{8I5Gn3C!YghLPp~2^BuTdwhGX%2I07}km8A` z+e@Wj9cJsw)D*K4UbATNXOns3Qr%uR3b3_}IB>RZ!IlDSZCeVkwQVWD)^=HL{|~t* Vh{nQ&dB*?%002ovPDHLkV1jUl-9i8W literal 13951 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�Y3S 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 PXPl+kQPVn{SK|Kw_;H{g literal 3451 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 diff --git a/Resources/history-selectionne.png b/Resources/history-selectionne.png index 751c7db9af6bea0cbb4fb3d6aec919479e0bf282..b672b21f3999c6560590cefe7de4beeb80342508 100644 GIT binary patch literal 5108 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 Q!50Itx#(!oVD5M4e!|-0Za7R@ugq6P` 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 UivE0xBLDyZ07*qoM6N<$f;*9`6aWAK diff --git a/Resources/settings-over.png b/Resources/settings-over.png index 13806e0c8fd10586114b556fe9cce7ca6874e5ef..37339b4af18a4bdebfaba9bad03a62862f7e0088 100644 GIT binary patch literal 6003 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 PZwRENt_Q7AwTt>6;SMe$ diff --git a/Resources/settings-selectionne.png b/Resources/settings-selectionne.png index 0844b8c98e97cc892562af9848e423138fb6edfc..1befba3bf617fddebe8f0769f63489733fbf911d 100644 GIT binary patch literal 5832 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 diff --git a/Resources/tchat-actif.png b/Resources/tchat-actif.png index facb65ea9656dd2d6c796f15a3c13c677de66c16..5e9716cc8608a97aa5ad7692d48b9ff2ab46d949 100644 GIT binary patch literal 4313 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 diff --git a/Resources/tchat-over.png b/Resources/tchat-over.png index fddc874b0f7a6ad1323e5e5fc4c09e28407a7f9d..1d945dbfddf1407017d817d5a6702adcaf4d97f7 100644 GIT binary patch literal 4430 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 Go$?>C(io=z diff --git a/Resources/tchat-selectionne.png b/Resources/tchat-selectionne.png index 5b42104d631e5249f661664fe6712f2657c5e984..2638c0c10816315a1ec5eec3c44daa25bdeeebbe 100644 GIT binary patch literal 4355 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

ukygzWD*uk&@f$`-q5N*&}Mp<(7r(~1y! zJlHGy?R&G-n!PQJYCKI*A6v9tR$$Q9h);_91jb97$&be5vQkl^CIPk8geLiqsKIFors1XB|ggUNQm}2<2GC@Qd zc!+ za;6~;1tV-u-8P^U^OOC8 hU)m}O*sy<=8C$8-{18oI7z_R;fTcOotj5&y$$!xmz&-!~ diff --git a/Resources/video-OFF-disabled.png b/Resources/video-OFF-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..bcbc4d7a83eda07321bf658f4f62b2879af7b725 GIT binary patch literal 3595 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 Date: Mon, 18 Jun 2012 15:18:00 +0200 Subject: [PATCH 014/397] Start to clean InCallView and add UICallCell --- Classes/ConferenceCallDetailView.m | 4 +- Classes/InCallViewController.h | 66 +- Classes/InCallViewController.m | 402 +++------ Classes/InCallViewController.xib | 849 +------------------- Classes/LinphoneUI/UICallBar.m | 1 + Classes/LinphoneUI/UICallBar.xib | 27 +- Classes/LinphoneUI/UICallCell.h | 41 + Classes/LinphoneUI/UICallCell.m | 53 ++ Classes/PhoneMainView.h | 1 + Classes/PhoneMainView.m | 82 +- Resources/champ-courbe-autres-numeros.png | Bin 0 -> 5349 bytes Resources/champ-courbe-participant-conf.png | Bin 0 -> 5282 bytes Resources/champ-titre-conference.png | Bin 0 -> 14741 bytes Resources/clavier-secondaire-actif.png | Bin 0 -> 6776 bytes Resources/clavier-secondaire-over.png | Bin 0 -> 4475 bytes Resources/pause-champ-numero-actif.png | Bin 0 -> 1536 bytes Resources/pause-champ-numero-over.png | Bin 0 -> 1531 bytes Resources/play-actif.png | Bin 0 -> 5562 bytes Resources/play-champ-numero-actif.png | Bin 0 -> 2267 bytes Resources/play-champ-numero-over.png | Bin 0 -> 2252 bytes Resources/play-over.png | Bin 0 -> 4087 bytes linphone.xcodeproj/project.pbxproj | 84 +- 22 files changed, 410 insertions(+), 1200 deletions(-) create mode 100644 Classes/LinphoneUI/UICallCell.h create mode 100644 Classes/LinphoneUI/UICallCell.m create mode 100644 Resources/champ-courbe-autres-numeros.png create mode 100644 Resources/champ-courbe-participant-conf.png create mode 100644 Resources/champ-titre-conference.png create mode 100644 Resources/clavier-secondaire-actif.png create mode 100644 Resources/clavier-secondaire-over.png create mode 100644 Resources/pause-champ-numero-actif.png create mode 100644 Resources/pause-champ-numero-over.png create mode 100644 Resources/play-actif.png create mode 100644 Resources/play-champ-numero-actif.png create mode 100644 Resources/play-champ-numero-over.png create mode 100644 Resources/play-over.png diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index a33907976..bb7df42dd 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -151,8 +151,8 @@ NSTimer *callQualityRefresher; [view removeFromSuperview]; } } - UIImageView* callquality = (UIImageView*) [cell viewWithTag:3]; - [InCallViewController updateIndicator:callquality withCallQuality:linphone_call_get_average_quality(call)]; + //UIImageView* callquality = (UIImageView*) [cell viewWithTag:3]; + //[InCallViewController updateIndicator:callquality withCallQuality:linphone_call_get_average_quality(call)]; tableView.rowHeight = 80; return cell; diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index 0f26a1cb2..f995ac87d 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -30,35 +30,9 @@ @class VideoViewController; -@interface InCallViewController : UIViewController { - - - UIView* controlSubView, *hangUpView; - - UIButton* endCtrl; - UIButton* dialer; - UIButton* contacts; +@interface InCallViewController : UIViewController { + UITableView* callTableView; - UIButton* addCall, *mergeCalls; - UIButton* transfer; - - - //key pad - - UIView* padSubView; - UIDigitButton* one; - UIDigitButton* two; - UIDigitButton* three; - UIDigitButton* four; - UIDigitButton* five; - UIDigitButton* six; - UIDigitButton* seven; - UIDigitButton* eight; - UIDigitButton* nine; - UIDigitButton* star; - UIDigitButton* zero; - UIDigitButton* hash; - UIButton* close; UIView* videoGroup; UIView* videoView; @@ -67,13 +41,12 @@ UIView* testVideoView; #endif UICamSwitch* videoCameraSwitch; - UIActivityIndicatorView* videoUpdateIndicator; UIActivityIndicatorView* videoWaitingForFirstImage; bool dismissed; NSTimer *durationRefreasher; - NSTimer * glowingTimer; + NSTimer *glowingTimer; float glow; NSIndexPath* activePath; @@ -89,45 +62,18 @@ BOOL mIncallViewIsReady; UIImage* verified, *unverified; - UIImage* stat_sys_signal_0, *stat_sys_signal_1, *stat_sys_signal_2, *stat_sys_signal_3, *stat_sys_signal_4; UIActionSheet* visibleActionSheet; NSTimer* hideControlsTimer; VideoZoomHandler* videoZoomHandler; } -- (IBAction)doAction:(id)sender; ++ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf; ++ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call; -+(LinphoneCall*) retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf; -+ (void) updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call; -+(void) updateIndicator:(UIImageView*) indicator withCallQuality:(float) quality; - -@property (nonatomic, retain) IBOutlet UIView* controlSubView; -@property (nonatomic, retain) IBOutlet UIView* padSubView; -@property (nonatomic, retain) IBOutlet UIView* hangUpView; @property (nonatomic, retain) IBOutlet UIViewController* conferenceDetail; - -@property (nonatomic, retain) IBOutlet UIButton* endCtrl; -@property (nonatomic, retain) IBOutlet UIButton* dialer; -@property (nonatomic, retain) IBOutlet UIButton* contacts; @property (nonatomic, retain) IBOutlet UITableView* callTableView; -@property (nonatomic, retain) IBOutlet UIButton* addCall; -@property (nonatomic, retain) IBOutlet UIButton* mergeCalls; -@property (nonatomic, retain) IBOutlet UIButton* transfer; -@property (nonatomic, retain) IBOutlet UIButton* one; -@property (nonatomic, retain) IBOutlet UIButton* two; -@property (nonatomic, retain) IBOutlet UIButton* three; -@property (nonatomic, retain) IBOutlet UIButton* four; -@property (nonatomic, retain) IBOutlet UIButton* five; -@property (nonatomic, retain) IBOutlet UIButton* six; -@property (nonatomic, retain) IBOutlet UIButton* seven; -@property (nonatomic, retain) IBOutlet UIButton* eight; -@property (nonatomic, retain) IBOutlet UIButton* nine; -@property (nonatomic, retain) IBOutlet UIButton* star; -@property (nonatomic, retain) IBOutlet UIButton* zero; -@property (nonatomic, retain) IBOutlet UIButton* hash; -@property (nonatomic, retain) IBOutlet UIButton* close; @property (nonatomic, retain) IBOutlet VideoViewController* videoViewController; @property (nonatomic, retain) IBOutlet UIView* videoGroup; @@ -136,9 +82,7 @@ @property (nonatomic, retain) IBOutlet UIView* testVideoView; #endif @property (nonatomic, retain) IBOutlet UIView* videoPreview; -@property (nonatomic, retain) IBOutlet UIImageView* videoCallQuality; @property (nonatomic, retain) IBOutlet UICamSwitch* videoCameraSwitch; -@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* videoUpdateIndicator; @property (nonatomic, retain) IBOutlet UIActivityIndicatorView* videoWaitingForFirstImage; @end diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 79f1796ef..38217c3e3 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -17,8 +17,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import "IncallViewController.h" -#import "LinphoneManager.h" #import #import #import @@ -26,85 +24,42 @@ #import #import +#import "IncallViewController.h" +#import "UICallCell.h" +#import "LinphoneManager.h" + #include "linphonecore.h" #include "private.h" -#define STRINGIFY(x) #x -#define TOSTRING(x) STRINGIFY(x) -#define AT __FILE__ ":" TOSTRING(__LINE__) - const NSInteger SECURE_BUTTON_TAG=5; @implementation InCallViewController -@synthesize controlSubView; -@synthesize padSubView; -@synthesize hangUpView; @synthesize conferenceDetail; - -@synthesize endCtrl; -@synthesize close; -@synthesize dialer; -@synthesize contacts; @synthesize callTableView; -@synthesize addCall; -@synthesize mergeCalls; -@synthesize transfer; - -@synthesize one; -@synthesize two; -@synthesize three; -@synthesize four; -@synthesize five; -@synthesize six; -@synthesize seven; -@synthesize eight; -@synthesize nine; -@synthesize star; -@synthesize zero; -@synthesize hash; @synthesize videoViewController; @synthesize videoGroup; @synthesize videoView; @synthesize videoPreview; -@synthesize videoCallQuality; @synthesize videoCameraSwitch; -@synthesize videoUpdateIndicator; @synthesize videoWaitingForFirstImage; #ifdef TEST_VIDEO_VIEW_CHANGE @synthesize testVideoView; #endif -//@synthesize addVideo; - - -+(void) updateIndicator:(UIImageView*) indicator withCallQuality:(float) quality { - if (quality >= 4 || quality < 0) { - [indicator setImage:[UIImage imageNamed:@"stat_sys_signal_4.png"]]; - } else if (quality >= 3) { - [indicator setImage:[UIImage imageNamed:@"stat_sys_signal_3.png"]]; - } else if (quality >= 2) { - [indicator setImage:[UIImage imageNamed:@"stat_sys_signal_2.png"]]; - } else if (quality >= 1) { - [indicator setImage:[UIImage imageNamed:@"stat_sys_signal_1.png"]]; - } else { - [indicator setImage:[UIImage imageNamed:@"stat_sys_signal_0.png"]]; - } -} - -bool isInConference(LinphoneCall* call) { ++ (bool)isInConference:(LinphoneCall*) call { if (!call) return false; return linphone_call_get_current_params(call)->in_conference; } -int callCount(LinphoneCore* lc) { ++ (int)callCount:(LinphoneCore*) lc { int count = 0; const MSList* calls = linphone_core_get_calls(lc); while (calls != 0) { - if (!isInConference((LinphoneCall*)calls->data)) { + if (![InCallViewController isInConference:((LinphoneCall*)calls->data)]) { count++; } calls = calls->next; @@ -112,8 +67,6 @@ int callCount(LinphoneCore* lc) { return count; } - - void addAnimationFadeTransition(UIView* view, float duration) { CATransition* animation = [CATransition animation]; animation.type = kCATransitionFromBottom; // kCATransitionFade; @@ -121,7 +74,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [view.layer addAnimation:animation forKey:nil]; } --(void) orientationChanged: (NSNotification*) notif { +- (void)orientationChanged: (NSNotification*) notif { int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; int newRotation = 0; @@ -162,22 +115,21 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.2f]; - endCtrl.imageView.transform = transform; - //TODO + //TODO + //endCtrl.imageView.transform = transform; //mute.imageView.transform = transform; //speaker.imageView.transform = transform; //pause.imageView.transform = transform; - contacts.imageView.transform = transform; - addCall.imageView.transform = transform; + //contacts.imageView.transform = transform; + //addCall.imageView.transform = transform; //addVideo.imageView.transform = transform; - dialer.imageView.transform = transform; - videoCallQuality.transform = transform; + //dialer.imageView.transform = transform; [UIView commitAnimations]; } } } --(void) showControls:(id)sender { +- (void)showControls:(id)sender { if (hideControlsTimer) { [hideControlsTimer invalidate]; hideControlsTimer = nil; @@ -186,7 +138,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; [[LinphoneManager instance] showTabBar: true]; - [hangUpView setAlpha:1.0]; if ([LinphoneManager instance].frontCamId !=nil ) { // only show camera switch button if we have more than 1 camera [videoCameraSwitch setAlpha:1.0]; @@ -194,56 +145,26 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView commitAnimations]; // hide controls in 5 sec - hideControlsTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(hideControls:) userInfo:nil repeats:NO]; + hideControlsTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 + target:self + selector:@selector(hideControls:) + userInfo:nil + repeats:NO]; } --(void) hideControls:(id)sender { +- (void)hideControls:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; - [controlSubView setAlpha:0.0]; - [hangUpView setAlpha:0.0]; [videoCameraSwitch setAlpha:0.0]; [UIView commitAnimations]; - [[LinphoneManager instance] showTabBar: false]; + [[LinphoneManager instance] showTabBar: false]; hideControlsTimer = nil; } --(void) batteryLevelChanged: (NSNotification*) notif { - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - if (!call || !linphone_call_params_video_enabled(linphone_call_get_current_params(call))) - return; - LinphoneCallAppData* appData = (LinphoneCallAppData*) linphone_call_get_user_pointer(call); - if ([UIDevice currentDevice].batteryState == UIDeviceBatteryStateUnplugged) { - float level = [UIDevice currentDevice].batteryLevel; - ms_message("Video call is running. Battery level: %.2f", level); - if (level < 0.1 && !appData->batteryWarningShown) { - // notify user - CallDelegate* cd = [[CallDelegate alloc] init]; - cd.eventType = CD_STOP_VIDEO_ON_LOW_BATTERY; - cd.delegate = self; - cd.call = call; - - if (visibleActionSheet != nil) { - [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE]; - } - NSString* title = NSLocalizedString(@"Battery is running low. Stop video ?",nil); - visibleActionSheet = [[UIActionSheet alloc] initWithTitle:title - delegate:cd - cancelButtonTitle:NSLocalizedString(@"Continue video",nil) - destructiveButtonTitle:NSLocalizedString(@"Stop video",nil) - otherButtonTitles:nil]; - - visibleActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - [visibleActionSheet showInView:self.view]; - appData->batteryWarningShown = TRUE; - } - } -} - #ifdef TEST_VIDEO_VIEW_CHANGE // Define TEST_VIDEO_VIEW_CHANGE in IncallViewController.h to enable video view switching testing --(void) _debugChangeVideoView { +- (void)_debugChangeVideoView { static bool normalView = false; if (normalView) { linphone_core_set_native_video_window_id([LinphoneManager getLc], (unsigned long)videoView); @@ -254,7 +175,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { } #endif --(void) enableVideoDisplay { +- (void)enableVideoDisplay { [self orientationChanged:nil]; [videoZoomHandler resetZoom]; @@ -262,8 +183,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; [videoGroup setAlpha:1.0]; - - [hangUpView setAlpha:0.0]; [callTableView setAlpha:0.0]; [UIView commitAnimations]; @@ -289,15 +208,14 @@ void addAnimationFadeTransition(UIView* view, float duration) { #ifdef TEST_VIDEO_VIEW_CHANGE [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(_debugChangeVideoView) userInfo:nil repeats:YES]; #endif - [self batteryLevelChanged:nil]; + // [self batteryLevelChanged:nil]; } --(void) disableVideoDisplay { +- (void)disableVideoDisplay { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; [videoGroup setAlpha:0.0]; [[LinphoneManager instance] showTabBar: true]; - [hangUpView setAlpha:1.0]; [callTableView setAlpha:1.0]; [videoCameraSwitch setAlpha:0.0]; [UIView commitAnimations]; @@ -308,22 +226,22 @@ void addAnimationFadeTransition(UIView* view, float duration) { } /* restore buttons orientation */ - endCtrl.imageView.transform = CGAffineTransformIdentity; + //endCtrl.imageView.transform = CGAffineTransformIdentity; //TODO //mute.imageView.transform = CGAffineTransformIdentity; //speaker.imageView.transform = CGAffineTransformIdentity; //pause.imageView.transform = CGAffineTransformIdentity; - contacts.imageView.transform = CGAffineTransformIdentity; - addCall.imageView.transform = CGAffineTransformIdentity; - dialer.imageView.transform = CGAffineTransformIdentity; - videoCallQuality.transform = CGAffineTransformIdentity; + //contacts.imageView.transform = CGAffineTransformIdentity; + //addCall.imageView.transform = CGAffineTransformIdentity; + //dialer.imageView.transform = CGAffineTransformIdentity; + //videoCallQuality.transform = CGAffineTransformIdentity; [[LinphoneManager instance] fullScreen:false]; } /* Update in call view buttons (visibility, state, ...) and call duration text. This is called periodically. The fullUpdate boolean is set when called after an event (call state change for instance) */ --(void) updateUIFromLinphoneState:(BOOL) fullUpdate { +- (void)updateUIFromLinphoneState:(BOOL) fullUpdate { activeCallCell = nil; // check LinphoneCore is initialized @@ -336,21 +254,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { // reload table (glow update + call duration) [callTableView reloadData]; - LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]); - - // hide pause/resume if in conference - if (currentCall) { - if (fullUpdate) { - videoUpdateIndicator.hidden = YES; - LinphoneCallState state = linphone_call_get_state(currentCall); - if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) { - } else { - [videoCallQuality setImage:nil]; - } - } - } - // [LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:AT]; - // update conference details view if displayed if (self.presentedViewController == conferenceDetail) { if (!linphone_core_is_in_conference(lc)) @@ -375,7 +278,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { unverified = [[UIImage imageNamed:@"unverified.png"] retain]; //Dialer init - [zero initWithNumber:'0']; + /*[zero initWithNumber:'0']; [one initWithNumber:'1']; [two initWithNumber:'2']; [three initWithNumber:'3']; @@ -390,7 +293,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [addCall addTarget:self action:@selector(addCallPressed) forControlEvents:UIControlEventTouchUpInside]; [mergeCalls addTarget:self action:@selector(mergeCallsPressed) forControlEvents:UIControlEventTouchUpInside]; - [LinphoneManager set:mergeCalls hidden:YES withName:"MERGE button" andReason:"initialisation"]; + [LinphoneManager set:mergeCalls hidden:YES withName:"MERGE button" andReason:"initialisation"];*/ if ([LinphoneManager runningOnIpad]) { ms_message("Running on iPad"); @@ -415,7 +318,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { mVideoIsPending=FALSE; //selectedCall = nil; - callTableView.rowHeight = 80; + //callTableView.rowHeight = 80; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil]; @@ -425,7 +328,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [videoCameraSwitch setPreview:videoPreview]; //addVideo.videoUpdateIndicator = videoUpdateIndicator; - [transfer addTarget:self action:@selector(transferPressed) forControlEvents:UIControlEventTouchUpInside]; + //[transfer addTarget:self action:@selector(transferPressed) forControlEvents:UIControlEventTouchUpInside]; // prevent buttons resizing /* @@ -439,7 +342,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { } --(void) transferPressed { +- (void)transferPressed { /* allow only if call is active */ if (!linphone_core_get_current_call([LinphoneManager getLc])) return; @@ -491,41 +394,25 @@ void addAnimationFadeTransition(UIView* view, float duration) { } visibleActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - if ([LinphoneManager runningOnIpad]) - [visibleActionSheet showFromRect:transfer.bounds inView:transfer animated:NO]; - else + if ([LinphoneManager runningOnIpad]) { + //[visibleActionSheet showFromRect:transfer.bounds inView:transfer animated:NO]; + } else [visibleActionSheet showInView:self.view]; } } --(void) addCallPressed { - [LinphoneManager logUIElementPressed:"CALL button"]; - [[LinphoneManager instance] changeView:PhoneView_Dialer]; -} - --(void) mergeCallsPressed { - [LinphoneManager logUIElementPressed:"MERGE button"]; - LinphoneCore* lc = [LinphoneManager getLc]; - linphone_core_add_all_to_conference(lc); -} - --(void)updateCallsDurations { +- (void)updateCallsDurations { [self updateUIFromLinphoneState: NO]; } --(void) awakeFromNib -{ - -} - --(void)viewDidAppear:(BOOL)animated { +- (void)viewDidAppear:(BOOL)animated { [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; [super viewDidAppear:animated]; if (dismissed) { [self dismissModalViewControllerAnimated:true]; } else { [self updateCallsDurations]; - durationRefreasher = [NSTimer scheduledTimerWithTimeInterval:1 + durationRefreasher = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateCallsDurations) userInfo:nil @@ -549,21 +436,21 @@ void addAnimationFadeTransition(UIView* view, float duration) { UIDevice* device = [UIDevice currentDevice]; if ([device respondsToSelector:@selector(isMultitaskingSupported)] && [device isMultitaskingSupported]) { - bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; + //bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; - [LinphoneManager set:contacts hidden:enableVideo withName:"CONTACT button" andReason:AT]; + //[LinphoneManager set:contacts hidden:enableVideo withName:"CONTACT button" andReason:AT]; //[LinphoneManager set:addVideo hidden:!contacts.hidden withName:"ADD_VIDEO button" andReason:AT]; } } } --(void) viewWillDisappear:(BOOL)animated { +- (void)viewWillDisappear:(BOOL)animated { if (visibleActionSheet != nil) { [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:NO]; } } -- (void) viewDidDisappear:(BOOL)animated { +- (void)viewDidDisappear:(BOOL)animated { if (durationRefreasher != nil) { [durationRefreasher invalidate]; durationRefreasher=nil; @@ -581,14 +468,14 @@ void addAnimationFadeTransition(UIView* view, float duration) { [[NSNotificationCenter defaultCenter] removeObserver:self]; } --(void) displayPad:(bool) enable { - if (videoView.hidden) - [LinphoneManager set:callTableView hidden:enable withName:"CALL_TABLE view" andReason:AT]; - [LinphoneManager set:hangUpView hidden:enable withName:"HANG_UP view" andReason:AT]; +- (void)displayPad:(bool) enable { + /*if (videoView.hidden) + [LinphoneManager set:callTableView hidden:enable withName:"CALL_TABLE view" andReason:AT];*/ + /*[LinphoneManager set:hangUpView hidden:enable withName:"HANG_UP view" andReason:AT]; [LinphoneManager set:controlSubView hidden:enable withName:"CONTROL view" andReason:AT]; - [LinphoneManager set:padSubView hidden:!enable withName:"PAD view" andReason:AT]; + [LinphoneManager set:padSubView hidden:!enable withName:"PAD view" andReason:AT];*/ } --(void) displayCall:(LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayCall:(LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { //restore view [self displayPad:false]; dismissed = false; @@ -599,11 +486,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [self updateUIFromLinphoneState: YES]; } --(void) displayIncomingCall:(LinphoneCall *)call NotificationFromUI:(UIViewController *)viewCtrl forUser:(NSString *)username withDisplayName:(NSString *)displayName { - -} - --(void) displayInCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayInCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { dismissed = false; UIDevice *device = [UIDevice currentDevice]; device.proximityMonitoringEnabled = YES; @@ -614,7 +497,8 @@ void addAnimationFadeTransition(UIView* view, float duration) { [self disableVideoDisplay]; } --(void) displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { + +- (void)displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [self disableVideoDisplay]; UIViewController* modalVC = self.modalViewController; UIDevice *device = [UIDevice currentDevice]; @@ -638,7 +522,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { static void hideSpinner(LinphoneCall* lc, void* user_data); --(void) hideSpinnerIndicator: (LinphoneCall*)call { +- (void)hideSpinnerIndicator: (LinphoneCall*)call { if (!videoWaitingForFirstImage.hidden) { videoWaitingForFirstImage.hidden = TRUE; } /*else { @@ -660,12 +544,12 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); switch (state) { - case LinphoneCallIncomingReceived: + /*case LinphoneCallIncomingReceived: [self displayIncomingCall:call NotificationFromUI:nil forUser:lUserName withDisplayName:lDisplayName]; - break; + break;*/ case LinphoneCallOutgoingInit: [self displayCall:call @@ -713,31 +597,6 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); [self disableVideoDisplay]; break; } - case LinphoneCallError: { - if (canHideInCallView) { - [self displayDialerFromUI:nil - forUser:@"" - withDisplayName:@""]; - } else { - [self displayInCall:call - FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - } - break; - } - case LinphoneCallEnd: - if (canHideInCallView) { - [self displayDialerFromUI:nil - forUser:@"" - withDisplayName:@""]; - } else { - [self displayInCall:call - FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - } - break; case LinphoneCallStreamsRunning: //check video if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { @@ -759,7 +618,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [thiz hideSpinnerIndicator:call]; } --(void) displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { [self enableVideoDisplay]; @@ -772,14 +631,14 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } } --(void) dismissActionSheet: (id)o { +- (void)dismissActionSheet: (id)o { if (visibleActionSheet != nil) { [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE]; visibleActionSheet = nil; } } --(void) displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName { if (linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) return; @@ -807,64 +666,24 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [visibleActionSheet release]; } --(void) firstVideoFrameDecoded: (LinphoneCall*) call { +- (void)firstVideoFrameDecoded: (LinphoneCall*) call { // hide video in progress view indicator videoWaitingForFirstImage.hidden = TRUE; } -- (IBAction)doAction:(id)sender { - - if (sender == dialer) { - [self displayPad:true]; - - } else if (sender == contacts) { - // start people picker - myPeoplePickerController = [[[ABPeoplePickerNavigationController alloc] init] autorelease]; - // TODO - //[myPeoplePickerController setPeoplePickerDelegate:[[ContactPickerDelegate alloc] init] ]; - - [self presentModalViewController: myPeoplePickerController animated:true]; - } else if (sender == close) { - [self displayPad:false]; - } -} - -// handle people picker behavior - -- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker - shouldContinueAfterSelectingPerson:(ABRecordRef)person { - return true; - -} - -- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker - shouldContinueAfterSelectingPerson:(ABRecordRef)person - property:(ABPropertyID)property - identifier:(ABMultiValueIdentifier)identifier { - - return false; -} - -- (void)peoplePickerNavigationControllerDidCancel:(ABPeoplePickerNavigationController *)peoplePicker { - [self dismissModalViewControllerAnimated:true]; -} - - - - - (void)dealloc { [super dealloc]; [[NSNotificationCenter defaultCenter] removeObserver:self]; } -+(LinphoneCall*) retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{ ++ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{ const MSList* calls = linphone_core_get_calls([LinphoneManager getLc]); if (!conf && linphone_core_get_conference_size([LinphoneManager getLc])) index--; while (calls != 0) { - if (isInConference((LinphoneCall*)calls->data) == conf) { + if ([InCallViewController isInConference:(LinphoneCall*)calls->data] == conf) { if (index == 0) break; index--; @@ -880,7 +699,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } } --(void) updateActive:(bool_t)active cell:(UITableViewCell*) cell { +- (void)updateActive:(bool_t)active cell:(UITableViewCell*) cell { if (!active) { cell.backgroundColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.2]; @@ -897,7 +716,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [cell.detailTextLabel setBackgroundColor:[UIColor clearColor]]; } --(void) updateGlow { +- (void)updateGlow { if (!activeCallCell) return; @@ -909,11 +728,11 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [callTableView setNeedsDisplay]; } --(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { +- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { [self updateActive:(cell == activeCallCell) cell:cell]; } -+ (void) updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call { ++ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call { if (call == NULL) { ms_warning("UpdateCell called with null call"); [label setText:@""]; @@ -999,7 +818,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } --(void) updateConferenceCell:(UITableViewCell*) cell at:(NSIndexPath*)indexPath { +- (void)updateConferenceCell:(UITableViewCell*) cell at:(NSIndexPath*)indexPath { LinphoneCore* lc = [LinphoneManager getLc]; NSString* t= [NSString stringWithFormat: @@ -1021,7 +840,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { cell.imageView.image = nil; } --(void) tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath +- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath { // show conference detail view [self presentModalViewController:conferenceDetail animated:true]; @@ -1029,32 +848,34 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } // UITableViewDataSource (required) -- (UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UITableViewCell *cell = [callTableView dequeueReusableCellWithIdentifier:@"MyIdentifier"]; +- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"]; if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"MyIdentifier"] autorelease]; - cell.selectionStyle = UITableViewCellSelectionStyleNone; - - cell.textLabel.font = [UIFont systemFontOfSize:40]; - cell.textLabel.autoresizingMask = UIViewAutoresizingFlexibleHeight; + cell = [[UICallCell alloc] init]; + } + + if([indexPath row] == 0) { + [cell firstCell]; + } else { + [cell otherCell]; } LinphoneCore* lc = [LinphoneManager getLc]; if (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0) { - [self updateConferenceCell:cell at:indexPath]; + /* [self updateConferenceCell:cell at:indexPath]; if (linphone_core_is_in_conference(lc)) activeCallCell = cell; cell.accessoryView = nil; if (linphone_core_is_in_conference(lc)) cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; else - cell.accessoryType = UITableViewCellAccessoryNone; + cell.accessoryType = UITableViewCellAccessoryNone;*/ } else { - LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + /*LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; if (call == nil) return cell; // return dummy cell - LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); + if (cell.accessoryView == nil) { UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 28, 28)] autorelease]; cell.accessoryView = containerView; @@ -1066,20 +887,22 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } [InCallViewController updateCellImageView:cell.imageView Label:cell.textLabel DetailLabel:cell.detailTextLabel AndAccessoryView:(UIView*)cell.accessoryView withCall:call]; if (linphone_core_get_current_call(lc) == call) - activeCallCell = cell; - cell.accessoryType = UITableViewCellAccessoryNone; + activeCallCell = cell;*/ + //cell.accessoryType = UITableViewCellAccessoryNone; // Call Quality Indicator - UIImageView* callquality = [UIImageView new]; + //TODO + /*UIImageView* callquality = [UIImageView new]; [callquality setFrame:CGRectMake(0, 0, 28, 28)]; - if (call->state == LinphoneCallStreamsRunning) + if (call->state == LinphoneCallStreamsRunning) { [InCallViewController updateIndicator: callquality withCallQuality:linphone_call_get_average_quality(call)]; } else { [callquality setImage:nil]; - } + }*/ + /*LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); if (enc != LinphoneMediaEncryptionNone) { cell.accessoryView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 28)] autorelease]; UIButton* accessoryBtn = [UIButton buttonWithType:UIButtonTypeCustom]; @@ -1099,18 +922,18 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { if (((UIButton*)accessoryBtn).imageView.image != nil && linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)) == LinphoneMediaEncryptionZRTP) { [((UIButton*)accessoryBtn) addTarget:self action:@selector(secureIconPressed:withEvent:) forControlEvents:UIControlEventTouchUpInside]; } - } + } */ - [cell.accessoryView addSubview:callquality]; - [callquality release]; + //[cell.accessoryView addSubview:callquality]; + //[callquality release]; } - cell.userInteractionEnabled = YES; - cell.selectionStyle = UITableViewCellSelectionStyleNone; + /*cell.userInteractionEnabled = YES; + cell.selectionStyle = UITableViewCellSelectionStyleNone;*/ return cell; } --(void) secureIconPressed:(UIControl*) button withEvent: (UIEvent*) evt { +- (void)secureIconPressed:(UIControl*) button withEvent: (UIEvent*) evt { NSSet* touches = [evt allTouches]; UITouch* touch = [touches anyObject]; CGPoint currentTouchPos = [touch locationInView:self.callTableView]; @@ -1141,7 +964,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } } --(void) actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { +- (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { LinphoneCall* call = (LinphoneCall*)datas; // maybe we could verify call validity @@ -1170,16 +993,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { visibleActionSheet = nil; break; } - case CD_STOP_VIDEO_ON_LOW_BATTERY: { - LinphoneCall* call = (LinphoneCall*)datas; - LinphoneCallParams* paramsCopy = linphone_call_params_copy(linphone_call_get_current_params(call)); - if ([visibleActionSheet destructiveButtonIndex] == buttonIndex) { - // stop video - linphone_call_params_enable_video(paramsCopy, FALSE); - linphone_core_update_call([LinphoneManager getLc], call, paramsCopy); - } - break; - } case CD_TRANSFER_CALL: { LinphoneCall* call = (LinphoneCall*)datas; // browse existing call and trasnfer to the one matching the btn id @@ -1209,26 +1022,19 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } } -// UITableViewDataSource (required) -- (NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { LinphoneCore* lc = [LinphoneManager getLc]; - return callCount(lc) + (int)(linphone_core_get_conference_size(lc) > 0); - - if (section == 0 && linphone_core_get_conference_size(lc) > 0) - return linphone_core_get_conference_size(lc) - linphone_core_is_in_conference(lc); - - return callCount(lc); + return [InCallViewController callCount:lc] + (int)(linphone_core_get_conference_size(lc) > 0); } -// UITableViewDataSource -- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; LinphoneCore* lc = [LinphoneManager getLc]; int count = 0; - if (callCount(lc) > 0) + if ([InCallViewController callCount:lc] > 0) count++; if (linphone_core_get_conference_size([LinphoneManager getLc]) > 0) @@ -1237,14 +1043,12 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { return count; } -// UITableViewDataSource -- (NSString*) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section +- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { return nil; } -// UITableViewDataSource -- (NSString*) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section +- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { return nil; } diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 1d2335581..0ed773a76 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -13,9 +13,9 @@ YES IBUIButton - IBUITableView - IBUIView IBUIActivityIndicatorView + IBUIView + IBUITableView IBProxyObject @@ -66,6 +66,7 @@ {{240, 354}, {80, 106}} + IBCocoaTouchFramework @@ -75,7 +76,7 @@ {{141, 212}, {37, 37}} - + _NS:1030 NO IBCocoaTouchFramework @@ -87,7 +88,7 @@ {320, 460} - + _NS:196 2 @@ -114,7 +115,7 @@ 0 0 Change camera - + 3 MQA @@ -122,7 +123,7 @@ 1 MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - + 3 MC41AA @@ -130,13 +131,13 @@ NSImage clavier-01-106px.png - + Helvetica-Bold Helvetica 2 15 - + Helvetica-Bold 15 16 @@ -148,7 +149,7 @@ {320, 251} - + _NS:418 YES @@ -157,335 +158,19 @@ NO 0 YES - 44 + 53 22 22 - - - -2147483356 - - YES - - - 292 - {{119, 251}, {82, 52}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - close - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 193}, {82, 52}} - - - - - 3 - MC42NjY2NjY2NjY3AA - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 19}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 19}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 2 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - - - - 292 - {{207, 19}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 3 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 77}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 4 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 77}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 5 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 77}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 6 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 135}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 7 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 135}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 8 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 135}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 9 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 193}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - * - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 193}, {82, 52}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - # - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - {{0, 71}, {320, 310}} - - - - - 3 - MC4yNAA - - NO - NO - IBCocoaTouchFramework - {320, 460} - + + 3 + MC42NjY2NjY2NjY3AA + NO IBCocoaTouchFramework @@ -501,14 +186,6 @@ 141

- - - callTableView - - - - 109 - view @@ -525,118 +202,6 @@ 129 - - - star - - - - 56 - - - - one - - - - 54 - - - - eight - - - - 75 - - - - hash - - - - 57 - - - - close - - - - 51 - - - - two - - - - 59 - - - - zero - - - - 55 - - - - three - - - - 60 - - - - four - - - - 67 - - - - six - - - - 71 - - - - seven - - - - 73 - - - - nine - - - - 58 - - - - five - - - - 69 - - - - padSubView - - - - 45 - videoView @@ -661,22 +226,13 @@ 130 - - - doAction: - - - 7 - - 101 - - delegate - - + callTableView + + - 108 + 109 @@ -686,6 +242,14 @@ 107 + + + delegate + + + + 108 +
@@ -717,7 +281,6 @@ - @@ -725,7 +288,7 @@ 140 - camswitch + camSwitch
126 @@ -739,114 +302,12 @@ video - - 106 - - - - - 27 - - - YES - - - - - - - - - - - - - - - - pad - - - 31 - - - star - - - 30 - - - 1 - - - 33 - - - 8 - - - 40 - - - hash - - - 29 - - - close - - - 39 - - - 2 - - - 41 - - - 0 - - - 38 - - - 3 - - - 35 - - - 4 - - - 37 - - - 6 - - - 34 - - - 7 - - - 32 - - - 9 - - - 36 - - - 5 - 132 + + YES + display @@ -854,6 +315,7 @@ 144 + waitIndicator
127 @@ -861,6 +323,12 @@ preview + + 106 + + + tableView +
@@ -878,33 +346,6 @@ 140.CustomClassName 140.IBPluginDependency 144.IBPluginDependency - 27.IBPluginDependency - 29.IBPluginDependency - 30.CustomClassName - 30.IBPluginDependency - 31.CustomClassName - 31.IBPluginDependency - 32.CustomClassName - 32.IBPluginDependency - 33.CustomClassName - 33.IBPluginDependency - 34.CustomClassName - 34.IBPluginDependency - 35.CustomClassName - 35.IBPluginDependency - 36.CustomClassName - 36.IBPluginDependency - 37.CustomClassName - 37.IBPluginDependency - 38.CustomClassName - 38.IBPluginDependency - 39.CustomClassName - 39.IBPluginDependency - 40.CustomClassName - 40.IBPluginDependency - 40.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 41.CustomClassName - 41.IBPluginDependency 9.IBPluginDependency @@ -921,33 +362,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin
@@ -970,232 +384,61 @@ InCallViewController UIViewController - - doAction: - id - - - doAction: - - doAction: - id - - YES YES - addCall callTableView - close conferenceDetail - contacts - controlSubView - dialer - eight - endCtrl - five - four - hangUpView - hash - mergeCalls - nine - one - padSubView - seven - six - star testVideoView - three - transfer - two - videoCallQuality videoCameraSwitch videoGroup videoPreview - videoUpdateIndicator videoView videoViewController videoWaitingForFirstImage - zero YES - UIButton UITableView - UIButton UIViewController - UIButton UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIImageView UICamSwitch UIView UIView - UIActivityIndicatorView UIView VideoViewController UIActivityIndicatorView - UIButton YES YES - addCall callTableView - close conferenceDetail - contacts - controlSubView - dialer - eight - endCtrl - five - four - hangUpView - hash - mergeCalls - nine - one - padSubView - seven - six - star testVideoView - three - transfer - two - videoCallQuality videoCameraSwitch videoGroup videoPreview - videoUpdateIndicator videoView videoViewController videoWaitingForFirstImage - zero YES - - addCall - UIButton - callTableView UITableView - - close - UIButton - conferenceDetail UIViewController - - contacts - UIButton - - - controlSubView - UIView - - - dialer - UIButton - - - eight - UIButton - - - endCtrl - UIButton - - - five - UIButton - - - four - UIButton - - - hangUpView - UIView - - - hash - UIButton - - - mergeCalls - UIButton - - - nine - UIButton - - - one - UIButton - - - padSubView - UIView - - - seven - UIButton - - - six - UIButton - - - star - UIButton - testVideoView UIView - - three - UIButton - - - transfer - UIButton - - - two - UIButton - - - videoCallQuality - UIImageView - videoCameraSwitch UICamSwitch @@ -1208,10 +451,6 @@ videoPreview UIView - - videoUpdateIndicator - UIActivityIndicatorView - videoView UIView @@ -1224,10 +463,6 @@ videoWaitingForFirstImage UIActivityIndicatorView - - zero - UIButton - @@ -1254,14 +489,6 @@ ./Classes/UICamSwitch.h - - UIDigitButton - UIButton - - IBProjectSource - ./Classes/UIDigitButton.h - -
0 diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index d3b0eb147..fe0dc3bc0 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -43,6 +43,7 @@ //TODO //[LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; + [speakerButton update]; [microButton update]; [pauseButton update]; [videoButton update]; diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 88a73a157..eb2bdafd0 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -236,21 +236,19 @@ 0 0 NO - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + NSImage pause-over.png + NSImage + play-actif.png + + NSImage pause-actif.png - @@ -310,15 +308,15 @@ MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
- + NSImage - dialer-meteo-sortir-over.png + clavier-secondaire-over.png - + NSImage - dialer-meteo-sortir-actif.png + clavier-secondaire-actif.png - + @@ -604,13 +602,14 @@ {160, 134} {160, 134} - {209, 136} - {209, 136} + {209, 136} + {209, 136} {160, 134} {160, 134} {160, 134} {209, 136} {209, 136} + {209, 136} {222, 136} {222, 136} {160, 134} diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h new file mode 100644 index 000000000..ef63592d6 --- /dev/null +++ b/Classes/LinphoneUI/UICallCell.h @@ -0,0 +1,41 @@ +/* UICallCell.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface UICallCell : UITableViewCell { + UIView *firstBackground; + UIView *otherBackground; + + UILabel *numberLabel; + UILabel *timeLabel; + UIImageView *stateView; +} + +@property (nonatomic, retain) IBOutlet UIView* firstBackground; +@property (nonatomic, retain) IBOutlet UIView* otherBackground; + +@property (nonatomic, retain) IBOutlet UILabel* numberLabel; +@property (nonatomic, retain) IBOutlet UILabel* timeLabel; +@property (nonatomic, retain) IBOutlet UIImageView* stateView; + +- (void)firstCell; +- (void)otherCell; + +@end diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m new file mode 100644 index 000000000..44da8c163 --- /dev/null +++ b/Classes/LinphoneUI/UICallCell.m @@ -0,0 +1,53 @@ +/* UICallCell.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UICallCell.h" + +@implementation UICallCell + +@synthesize firstBackground; +@synthesize otherBackground; +@synthesize stateView; +@synthesize numberLabel; +@synthesize timeLabel; + +- (id)init { + if ((self = [super init]) != nil) { + NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UICallCell" + owner:self + options:nil]; + + if ([arrayOfViews count] >= 1) { + [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; + } + } + return self; +} + +- (void)firstCell{ + [firstBackground setHidden:false]; + [otherBackground setHidden:true]; +} + +- (void)otherCell{ + [firstBackground setHidden:true]; + [otherBackground setHidden:false]; +} + +@end diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index dfe55a503..c43122510 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -50,6 +50,7 @@ ViewsDescription *currentViewDescription; UIActionSheet *incomingCallActionSheet; + UIActionSheet *batteryActionSheet; } @property (nonatomic, retain) IBOutlet UIView* stateBarView; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 72a6936ab..a471c2328 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -219,8 +219,18 @@ // Set observers - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(changeView:) + name:@"LinphoneMainViewChange" + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(callUpdate:) + name:@"LinphoneCallUpdate" + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(batteryLevelChanged:) + name:UIDeviceBatteryLevelDidChangeNotification + object:nil]; } - (void)viewDidUnload { @@ -409,19 +419,69 @@ } } +- (void)batteryLevelChanged: (NSNotification*) notif { + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + if (!call || !linphone_call_params_video_enabled(linphone_call_get_current_params(call))) + return; + LinphoneCallAppData* appData = (LinphoneCallAppData*) linphone_call_get_user_pointer(call); + if ([UIDevice currentDevice].batteryState == UIDeviceBatteryStateUnplugged) { + float level = [UIDevice currentDevice].batteryLevel; + ms_message("Video call is running. Battery level: %.2f", level); + if (level < 0.1 && !appData->batteryWarningShown) { + // notify user + CallDelegate* cd = [[CallDelegate alloc] init]; + cd.eventType = CD_STOP_VIDEO_ON_LOW_BATTERY; + cd.delegate = self; + cd.call = call; + + if (batteryActionSheet != nil) { + [batteryActionSheet dismissWithClickedButtonIndex:batteryActionSheet.cancelButtonIndex animated:TRUE]; + } + NSString* title = NSLocalizedString(@"Battery is running low. Stop video ?",nil); + batteryActionSheet = [[UIActionSheet alloc] initWithTitle:title + delegate:cd + cancelButtonTitle:NSLocalizedString(@"Continue video",nil) + destructiveButtonTitle:NSLocalizedString(@"Stop video",nil) + otherButtonTitles:nil]; + + batteryActionSheet.actionSheetStyle = UIActionSheetStyleDefault; + [batteryActionSheet showInView: self.view]; + [batteryActionSheet release]; + appData->batteryWarningShown = TRUE; + } + } +} + - (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { - if (type != CD_NEW_CALL) - return; - LinphoneCall* call = (LinphoneCall*)datas; - if (buttonIndex == actionSheet.destructiveButtonIndex) { - linphone_core_accept_call([LinphoneManager getLc], call); - } else { - linphone_core_terminate_call([LinphoneManager getLc], call); - } - incomingCallActionSheet = nil; + switch(type) { + case CD_NEW_CALL: + { + LinphoneCall* call = (LinphoneCall*)datas; + if (buttonIndex == actionSheet.destructiveButtonIndex) { + linphone_core_accept_call([LinphoneManager getLc], call); + } else { + linphone_core_terminate_call([LinphoneManager getLc], call); + } + incomingCallActionSheet = nil; + break; + } + case CD_STOP_VIDEO_ON_LOW_BATTERY: + { + LinphoneCall* call = (LinphoneCall*)datas; + LinphoneCallParams* paramsCopy = linphone_call_params_copy(linphone_call_get_current_params(call)); + if ([batteryActionSheet destructiveButtonIndex] == buttonIndex) { + // stop video + linphone_call_params_enable_video(paramsCopy, FALSE); + linphone_core_update_call([LinphoneManager getLc], call, paramsCopy); + } + break; + } + default: + break; + } } - (void)dealloc { diff --git a/Resources/champ-courbe-autres-numeros.png b/Resources/champ-courbe-autres-numeros.png new file mode 100644 index 0000000000000000000000000000000000000000..f4fd83b8f10921cebee4d63c7a6cda28d44e6481 GIT binary patch literal 5349 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 bK$|w%Tx|bV3~r+jxQ~s61HRPE>-7HsWg+bC literal 0 HcmV?d00001 diff --git a/Resources/champ-titre-conference.png b/Resources/champ-titre-conference.png new file mode 100644 index 0000000000000000000000000000000000000000..4e37e251254d51446752a790dfcc18f2578c5322 GIT binary patch literal 14741 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�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 literal 0 HcmV?d00001 diff --git a/Resources/clavier-secondaire-actif.png b/Resources/clavier-secondaire-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..43d512c0416939d8c213a49685fdb764d3fad0db GIT binary patch literal 6776 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 B1-k$M literal 0 HcmV?d00001 diff --git a/Resources/pause-champ-numero-actif.png b/Resources/pause-champ-numero-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca4db8c134563057f9133893eadcb0790bb9c4e GIT binary patch literal 1536 zcmbVMZA=q)7{9()StqO_lk)!eU@#eN?~bbdjTR<#A!CAM2^?E&Mf%dxV0fl6a z@{)iWhtAARmyKo9=`;@bv}~Cg#KCkfu=oLuOLW5_%d(khvcx50SDnyt`md|-tOk>*hapC;uy%{W4#Qh z3{p*ui=lj-uYb#wL6D>|Q19m5&Rqn}2GvyDMjZ`?1vCVe?TCgcx`p9^muU)wOzspX;7ol80Ww+m0+QYbcT2;stQH&6AU&c zLUVyIA7Dcu&PaLLHr@makuIkY3_G2x#G%Map@foYqEuLesu4{v7|(0TI>Nh{f5TYQ zI#S;mW;8A)!nSd=(2vIa1X!ru(;dYPg=mP~TtH|F)oNquwjdMYD{UrN_@nj(d<23T z5ER9=2#z6o1BzN4Bx$sgxI<6kh|z*3IM%{ibR>rBEmnhGt4C2gYA8hns8w<yZfM zb0n~pp$JcfXeQw|AoyLuTAqp}NRFX+maAvk*2DzV_*tHf_}MTZ>vX_L(ScB0j<;ty zTN}d#+8LjNV}oF+zC>UR|G3VoH`on!3|-FKK%!a)X3*&j!Z2Bk7`%e@{hyj?gkUuB z;rP$6Bvir##*eF`F9@s4!-Ry5;e^$&$YsYNNQ_k4EcMab-b2+lnxLM=sz#?rih6&L z|1H_tPzW~m7eJB^-&2O6;;Iq}>bcO<^A{wVNaBBQ2Uj+{xMc&M@!XWX#5^v!HE6hT zdhBkULZmQ*qFa&$$rR@QXwciEl^p3Fj7iO}UVU?L&jyA0(8y!y{cRBW6WEoi%-kD0 zwpsC-igkGWN=-i)UN^^1&NuGYUVIGXU)El&d6@o5l+b5*UYRC;&Js%% zUDk0~YD}IEp1r(NTGlmtZ(UX{l6P?=ATzQ z8p_ZO7alK|9=RmVmN&o9Ry!oUW}dlU9wRO0wBY&m=>w;buN|@M>)#<-sC3g6h4|yc zIc>k4q04i&{W@Dad6;OwIl7`+crg2EJu;uOv3a}8KUp_KTi%}Bm!=e-$S!WEhXbkVqD=x@xh~LST_G;S&tEcB5C;kCy literal 0 HcmV?d00001 diff --git a/Resources/pause-champ-numero-over.png b/Resources/pause-champ-numero-over.png new file mode 100644 index 0000000000000000000000000000000000000000..a2a15e52b4fbc141e25294cff45c17669cbf2598 GIT binary patch literal 1531 zcmbVMZA=q)82`5gsTB=xD%4QV!;Ked?*)2o&ldX*jTTEGSeIqv+Ft32?bW+O3STU^ z7<9;(M#AFUz)CW+SB%S?GZ8bE$u^TNI!26(i!X^;FhlvG%d+hX)a`@u!!Ehp|9S5D z{hs&#VNYZIYK2k(09fs6uzSVt7V*X9D*%w3J6Mn{3MGQWCp5Dmp^M^ZU8jDNTswjp42CoZj;lorHQyZ-sJJ@Hmt`32G#}uY zn82`6D9uRu*-pU(i;*s+5Q(|n&xoV^a-qbMA#o~(U>X#OMACUJTJwUJ{x^*0TJtU4 zF&gpGJln|y#D0XzGGMWGFLsnR6r&+`a*Ws%YOkFQbVlf?;If-w@sB3R1W6RrqZp>E zMRhnz=rPRVwAl<+o6bqtbg03CWjLOPwP%{e1tzH}^ivfq1vBCdSGeisqNe{<= zh9#pCCop|{Hu|FQY1iZkaE zPn4clPp))rl5u&`wW>o^SrRpLU~8RjA^B)Lrzv%`>QLWh=$q>k)8KlaN_jgEN~8)4 zh#`5)1+W{m!oU9b^%`V$KJnByHJG2`51mOQcMl9GjeF)HB5smsKb`1TmyNb#W^m;@ zg{Q17`<2emWc{Yz`&q50CLf<()o|kU$}aHJuD)Eij0@d4x9;PJv}T?d@?IIcuPm&S zjjizc^INYZ9dC}v3zbD@+is+qZ1t;4wZe_m+u;Z6rF-@t4^$wkrA-A6iiKcV8V)dX8@| z2+zJQU6cL!v5OTAQhM~kwjfv!7 zY3JMrf%?*|zs)YI1YxeZYGh$huH9I9{%+;fiP7o1)rwrnwR}~%^;CJ@?M>GQPnzf6 zGDauC!|`>JiI?6}Az}MHdEU;fJEa$1uACR9Erq2=&2!fh2abSylWy~^tn)IXLIyT; W49qNC`q`1bj$MvM`zO}6zJCC|%moPm literal 0 HcmV?d00001 diff --git a/Resources/play-actif.png b/Resources/play-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c26676892d607f56249cea64ca9519b09d1f60 GIT binary patch literal 5562 zcmbVMcR1VY+YhmdQkz;q(HfCNj3BjxqgtC*Z80hmB1-M8v|4H(Rin08wW*?|r7=3p zTCH89s8Ty`dd}&2-#>oW?~nJnuJ84I?&ta3pL;*?##i;uGM;Ay003tV^mR-r|M!&d zE(0|HKov1l#zqnN2)fn;Gn^~I-w}@nXu9B>&>#aZM>n)7+R^2XPaj$h006prm|GL9 zjjpIT!A0HCHG;O*$_i6(%Y&~6@Br08Z_hbYLy1u1H!U<5Jp)<(N~ z=m+A_W`S4DodZ3c5iX+YmqBU)Dii`QG{F%R;Dy2ZsstcK|Ke4l?0+50iGu!u5Im8h ze>-JuWDL^A;n5%kFhtfFq6h&gLcvgZxRR2R3pfk6D?fWc%b2wC4dSb}4KEY?@- zH-iq^*BS5OP4K{BLBALsop62xq$tJHzeDiyHZuB`80-5_q9`eo3vl$7gMuM)US7ZA z`U~w#Fh&2b8~+jQYktQYEoX}M#rff#DfMs_`>jmL-G4Xq3rO)s77IAWdAzwLTZ?Ea$*{ja(z+IX}h z0f#ro;V{2Dz}Ou}!1=o4yg}M#3Lqm#XAkTz`B!=Vj#dYa_qdIALE&*;puh5~;_)Bs z!=Z{W1Oft=SNuC}1jTifqAm=js3orjg(->tqwDhj$(bC*8M$B0@qe1-_YtK7e{KJ5 zeTwk!@Sw4jiNRAw<8(5*0RUiIHPF#C5BTJCeEX+L$s;;o%jfB3+-%s%;pvXj&FJmt z4<*1OQeI2}gaQ2qU~YUNb>6Oqp7BSWqmE9-5uocEmq!>#U(CK>64he1TshuMp@zsr#}{s3~4!9 znp+|?TTIWa*cZ&j)x=Au>ECr%R0t{du%{`_6e5$!L-?(cv8ZZmkzf`u`1WmW#FspYz-x#=4+$wAk$bFizgt1o^;Mj_pvj;M}ItLGc3|52LFR`$3$ z0ssozy5BMv&+M@tw=uDIT~7?wJy3E#kOl`91eJCr$Lonqji<4 z;M9j1c(!z^K04^(>{OQCSnB;zdE}IyY+lD#DUMelx-qjUx`w0B_Q1DV`D_)l@|D3% zM4NDcwJo$6A8g27Qk;9qPne_B>0n?hmv3AG?c_Rhl;TF_Fm5m3S`N9Vw$s_hdQ+Bs z!b;sw?mFuR0>mzATXya9^s9#j+vIQgYD~ZB-QS$G_depM(X670n(YX!Ha%74efe-( zy{4RACGm{4-|_O&oSn>0TEv&1dEi`nzqqJ`a0{bc@g=Ad59=Wy0`k$`VX`M?ezLQb zb=c_SSjcnkghblP{lc>P!DZOz z)d!!{(V8Q5=#`)z8ltNf%_-_G>}*vMu$6f{+RfE*az7`#*XL?0O1cKOO(v^@78aHg z1N)~>7d9R60=;O5A7phg;41}`rc-hM%0hFP_t;5P^R}>Dhxaj4S7cBa-MCLDSauvq z{*uguJ|_QsVuR^f3j+#Ol0~W_bio(Sk;6{6(qA5vw2I(wwjM?#M{ElNAtNV1MF%pC zPZ(2*tH5VG%XxgB31c1yA6fp`*~!rkOiq#Fi%fWM#JUb&yemKMLoT#5(JGq{2sn5V zazf1v5fMqIWzVIv+Euu=j*Q}U5z2TA=J!f7o@;*Ep-hh}xiLHZC^1pcX!y}aoBSIk z#F9F2U70ARqOttU#~UK=%=ajkS^U5!ln?Ue3u#7%*e@f~Y6oWZ&zkFf~@s`qF2|bfbZ*#Ew!kZ3hpXlcS$I%d8+# zi}^d;qlPjd$=aIl@80^j0QKtueCNUvxnEKW0iYU3WN??{Uwkm@yJ?gnQJJ0YQM>y- zEB|t)CL7^$e4f1n&Dh+h2Jlou6=w_|&9)gslyuJZR&JgilPjN=HbM$x@&)fg#lQYI zJ#%Tw;$ZQyFK$rGmmSftq1sS6*)m)-)cD;XlC8qdwxjV@w_&n|OEcnR#v=B`hgI`Y zl?2;lR$zRUXXxOqoD5bm|2XCBb?(ZIcHq)Q^N8NOS3#cI zqOT=E@3+l%2|kSM3>qt0jJAfTzGmoq8w;X0xzPWxTHc1pYa!TAuih!B68gD)>VoI_ zi?=1m&$PXIj_sj>P2StjG=N{HB4(#kHRu6(&w9=JJg1#@32=H;axNZOW zWTcPypoYX-V^V1`aF}8b5kh?HJqWOs-WuWwMHw((8_h0h@-R{=dq`q`K|EmOvtZ)D z!|z*7x!vh>UgBa}V{a-W|M5ocOUILC9h0p<;B~L(bC*e*@;OCjFG?L=~s{WpC81jrL3@}YJZ?=w+hD5C3^l3 zZR$u$3K?NSPv;bUNkGV73hUf3kL z2+%(Qe*x+>tfWp0&y3r5AK}?u=1(Y+d4unOhCBtc+EjRDAZb6=2JKCoOMFV{agh zbdny8|HY5{Hw}>O!KqW7$v~cSp23Z33Ro_*kD@rq@{N^5%z8HwT&z*%IA16JsjtA< z+7;RGIg+%bYPEF4#OuUg-`cD;V?a%G6V{4JYlxX-1x&5vyx#w~uBS6`PkO6aC1G!- zgUVZsv6D&}K>ryaz|fg!s1-cWI;|tTw_$E!_5IQ3$t)V`rcyOfOOcN!|JaY#I?774F3)Sf)x^0TEO&4_)((asC*-gScCBjuT zZhzP7e(!^jU2Q8&pDF$GVb~2omAdl61qg7I`^(vmR@XY3SyfT>Tl{h=vr$y_@+HL+&+IAV~b}0q8~N?buL6| z2A5mH#KI9eLL6gm=lUk*wa*`QkZw8pQb=r$|E%h0T@FfyG@PACLf}ta7W|)b$cd^_ zk4CM~6FpYAp}BHrplKXpUh(`fQPk-=&G9lM1H>#G0Gk#EV{VNsb;(&v6*ju$;{}PmfSO* zmtq+<7_4$}Tl$rU<;YWaAhW6*zm&vq-TWVSFC@*Q1RAfu6??$tT!vfh{wzqXx^@XO zAk9h0JVoxs1wYwb0aYBv7HL3>z3B^+of`cHyEJ#o<8>#X-e zFpIzgp%%o~@e=mbqg6SryLwZe^*=9cC9&f400QAaZ_uwXnQ~d}0Bq!ta8u@-uQy41 zkQALe1jaIVeVzCMQw^zmr&RjudDBJH1igC~Hy#PHOVg-wV@S?tOv%ia`b0*C=yTPg zjF)6nUFNpu@xqPEpYHTuafKPE%#QUstNOF|oh+&@+XW5wNllN_O*bZ`$m*e3G<#%L zwl3a(_NXAH;6i-Ls_zrsuJ<4M@Z0a(t*r2CiBx8#xLp1$&Oe_+(QB-aLMralN3`U3 z-AMI;$EB?HXAZxk_0_wkxWaRKD_Iu?SYm0woc=k`bbpNdy39D`O5=8Zo_3v&{aCp0 z7dTIUBHL7syrJ~uS(}M3lFSGXI^TCMw8`B?o&!4>T>=DvG;7JsiMa^FQeN_{gD9Kh z-9-s74IBpTh~*!7r$2JIZ3CfCywSUymmFtxlbWGl(}5+jQ-Dwy!|HY`q+Rp!bHmg7 zg)&l3%ZsmvjNXkn6UtCNX%L(syO-?YprFla7OYsBD)ZBjtMe-F8=utfLq2j*xLq!N zumcuy!ug>oRDQz`czcSgz09B+lc9ziuoj&iBa`2s3mP$Lcxm&unJH68Z1n#5}Wdt>vU$YFzNR-3l^f ztAAxXrfdV%T@1F%`*QE;%6!9aw!cDfh0&hWXP_^bP;7R;;TeX`gtj71d9B;^B&uag zLc;Bbsp0Uci`U6hbpq|X5sCKU1qYT|g*C88AQxAtD*~_OG2}BE()NkxiF%oYfNRd? zXw>e|X~J+&>Q173Fy?uD-94Y2;_9NowY_l8S$tz*u*34c6@6cRlhT(di`w{C}n5mg;8?|r8*H!&Yi>&|HVEZ<@cQ`No1yqg)cxJHk zX3x_1;0Fu$Fm$cYn$W~Wi7`HO3Nnai03Mq@H2Q($+gHFk+&ML9=VrC+o;=EzK@!7c zC|9)UXDvZWq83(fPH}3S?f1)SHJzLCDT0TU$1C$qrYn5pOR0MrE`znrG z)u|3nL3RmOj3KZ6v{2>mt~RO$Hbk5bZzDourU%0O42MfAIm;_wCYpSsf3g)kY5#2z z6_C$HtpHJS3E>LtcsRz8<5bv#r*Io7UcOWwAFB{ZkI%YibAZ8@69DxxNK?WX7fi|xu9y;H2 zUur(*S`kt&U0jvF$K*+SJuSODI&Fd5a|mQ3ShW9fDDkj`-Ls(Grp&XHmN;t06xnu5 z!$q1yrVS^UpPpgSv|;flSYY_-~bs8}BPxlO*q~v%GUL8~gMz=6iTo{!>y( zZrr3Wk&(ag2riikD^F~B%qZ5V^{W00+m2UG_V%M5#%rmSIX;730&w#eq_3#v7V^}5 v2i18$aD*Ws0zr8I&t*n+3ef!CvRokpi#WG6VIqBU0Ln7Zy{c2C231L%nCjQ6fPDCh{QuB%kZc#!R=xckGJANy5x_xFC^`#kSm z)m2#;%Yp;v1_A&OEL|>=6W=AoL-Y3q0I%=&4&En(Ik;GXuQqD&BGille2r0sfl@u1 zgUK;eQ(V}Or2&AqR+p{76|$8awNXz)Jvub2-bA1QAT8Z$Le=>g4yv#moq-GetFsFN zbs8?THdzMCOhPPIx4guRtuD#PR+r?f*%~N)DVS#E5CnP*M?tH;z+mB6xzJl)4zc$f z(;@J!3ZBn}-Z`a^Wr0GY83U7PaDp06fx#4nh9o92nap^Q0V6OSX3!Bv0>b1ZGB_{{ zzF!bw&8*RK_lY7>Mz^9SIzof#dc7yEx7rq5 zj{Vn-k7`@8i%l3^j#-SG&1#|^+UO}Tk-OhEuNffe{vrAj~9~$$(Q>2*Q^Lg=~S4DM=ABVKyI`;`kU=EMbaSNr`M$N)mw-BdkQ2 zfC^IhOo2eaW=N*6QiBCY4Qg!4u8y$#9?SYoEJtX@P~2$FHW~}2Iv^|8h#M`rMiVGp zoeauQwa(y?J>_{9tq3#geurr!W}_Z_n_rIZBlelef)tjRC1xP+;${hvBng9+oXjGc ziO*(0@3ETyCuelR8M>!A{-;@{j))HQY(KO9^J#xR@S~l)+=ejNM;s2vH#NlT?u(AE1jixTHsN`bWvxDq zTH9Yipibkp3uf4S=0wfiJJ8(cBkvs_?tO6?Zs75?v*&>}9y!)G$>onfD3fdtwVU{G zMd*`7!dTy!S-f+_v5nJzCoOZku2YEua~4ei*`Uu)AEsBK=9x550q;7CK{MvSP}gMV%Z4kHj}6 zR#i1RUjf;Dc4}c?-6Kc;8F%@r$@%-j(OZttfC?`jP;Lp#Dx|{S{?d{II4yI_|C|K* zMR+@a=(Tq*ZsM(o1rp+*>!$rJ_U0Mok4Q>t1nEvQ~Jox@_8^!9DKGp%rm$U+rE>N=TYE!v1Z-&w;|SF&c=D4FN) znvSM6BJoSRckXC-9KUMUzi&(nne>i4TkvGW`?MJjf<;T4lxJ)&NlstSr3d6W^ZK zKhSb8b#^|QVegKr!8C1{($jDUKO)zuXGsvs3-4TfN3yL88wBubSaMQFm@0 zuf9!*o&K$#O?C-7cz8jacVA;9J*-pJ!5iHO=Zi-cR95i( zV(*#2(cn2(@A+Okr-`ks{<*7Ew!W+2i65gR!5t8%^t-NNmK$n&uT`ph+KvtiONW2S zoL|rE_Th`o5u?qvVXJ)>*u%bR2zJfZHoYKcE7aCX0G zY+N^P)BC2jPAqfwh?UHe;e8iQ(ZW!+j7kPxe^Oq(@=h$r^SdDxXNcMb%5DDv?2l=@ literal 0 HcmV?d00001 diff --git a/Resources/play-champ-numero-over.png b/Resources/play-champ-numero-over.png new file mode 100644 index 0000000000000000000000000000000000000000..42d81a84587fb76f0befb79e2d2c38e357c2847a GIT binary patch literal 2252 zcmbVOX;f2Z8omi3fk1$O*a%dv0cl-G?hV<9GLnTrkSJxbq2id3Tu6ZAhU6*{w+Og^ zXx%_mDoZP^OC7`+Txd1QB6zgb8JFS)hzRY`0a2?{3(Sp*ogbe5n0wAW_j|wlJkPs) z?|aTylDHt2Mh&0>06qR9G^aiREi72q4y>83?E_ zYO;_dM59}g*NMyp0GCWdiV9OH6GU3n$kI45ESu4cvjJf4Jeygg%|S3Q1IaR&qL@R? zXPKZu7sdRPr-YPdDWW&T6sIyE?)a2yeCU17pB zws4a*WI{oPShW^|88e_J(5a}&K$l@rOgz#zDHzR4lCfY@^Yc z*K4#DOG5q#GG4nscjN@((TEmW4EUjFa%HG?nGrEz z3Rx5r|HIN5bRq~ALNF}gLIMuN7s9YuE|o?~qyjl#Du5!z@Px+uxG{1;jF1~46Y{w@ zGX@q$KsZ&x7Yig3NhC);!Bv>7n8u_J&K`L zJ!%G}$vjZ0(Hcxn+j%^1vXvng!*WC?x1dJwb$vyK_xKm^Bz$3vFopxa$y+FexpIz> z#}nesB#z`T-*R>TPtDkPFl=XY{7o#3k*_|B!IZ@CaO;4+Mai%<})e%6;o@BDV9QB$ee4hU8^QO&=kUhgx(5I+`K!fg` zvJTAi^OFUA6ObF~kuaxYPvUL{XIe8czB)_d2b?P0?wWbBv60h})ZiHnz><~+-jyvK zZpXK|*8@`;fR=+^4*|yNp?lx2g)W0RJ*8p|WrTQ|T-mJFl=$vft!lAPt}5$+Fu-f0d@DrXry~PFwsW7_>VU5Xh@Td?*rL1g8h+5falptYphY zF(qMezsrFz^_9^J2O0Z@#A0$QRi%{QBq80g?pe9iV_oO%;i(z$hxO;yxkgHc0kPV1 zjan@5UlI~8DNI{`#4VJZa3Mk1GDXo#(HCxv4QibG>hbLp<3$<1d;K+C+v!oi5r}S8 z$@bDdySrg(y3clE;JPMm-A7>=z{zKXfX_BgbsJn&Gu_W#F^Qfd{GmfW;1WI)K(vVk zr1t&-3AyDsziF_g+{=ES5T|$oK&2nTp6wO)H*tf){%zNFy4FnJprVDfnP)qIY(+@? zx%KQaMPdYD@E7uA=J)gClp!6^E@;E`#IFLpbRQ6Qc9YV74s2^HKJUxORXBFo2u;7+ zO~R9Il*}E$9eapf!`)}sQgX7hO|6TnzFg_G$HgbQtRcbj_!iHF&*!hLsU1JNW>iF1 zm9BMsO-Gl@kA8A>3H94F1%Fb?jJxN`vFNl9^qSzN`?SB!uWg%J>TxV4;7sWjHKA-) zZPCo=n!^J-A0%a@Zw{p#&5g6npr^fvI>YpBJJ5Q1vNC8;-$s$0npB;0wN-rCK5APM zU!S9K_zeEyL87%G!2V6?4q5+*KgqX}p$95I#{6$QWcf`e*B;yh0dhrg@x^Fm zZBybAlph_I$;ec1P{i?dBQH7Mees|1>eN}C-sK~6yY+iFTzj#%G4H$cmODi!Nc&Gd$j z>1;wmqHEd#?*$k2Js zQM5sR)}D_Kzq-o3yd2oJGH7)C9uMBw{`5w}p+k;kcdOlx zBJ=oS%Fy-Il0KUGG<|YRUjM7H6Ts4@ug}*7=LIeOtm644s^_eiDHZ)LKx5|F`|2kp xz#1}nM3#E}U%!sA9giLIja&O3F{ZLyUwTukwB9SWXqe9Xg(7Bw?5IRt_+QX|R;>U4 literal 0 HcmV?d00001 diff --git a/Resources/play-over.png b/Resources/play-over.png new file mode 100644 index 0000000000000000000000000000000000000000..8268d1f8a3700037778dcfdbb57336fb68260b83 GIT binary patch literal 4087 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 203b71cca..540db8b4b 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -255,6 +255,32 @@ D35498221587716B000081D8 /* UIStateBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* UIStateBar.m */; }; D35498231587716B000081D8 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; D35498241587716B000081D8 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; + D36C43C6158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; }; + D36C43C7158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; }; + D36C43CA158F2EE50048BA40 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; }; + D36C43CB158F2EE50048BA40 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; }; + D36C43D1158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */; }; + D36C43D2158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */; }; + D36C43D3158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */; }; + D36C43D4158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */; }; + D36C43D5158F2F370048BA40 /* champ-titre-conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* champ-titre-conference.png */; }; + D36C43D6158F2F370048BA40 /* champ-titre-conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* champ-titre-conference.png */; }; + D36C43D7158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */; }; + D36C43D8158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */; }; + D36C43D9158F2F370048BA40 /* clavier-secondaire-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */; }; + D36C43DA158F2F370048BA40 /* clavier-secondaire-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */; }; + D36C43E9158F3F7E0048BA40 /* play-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E7158F3F7E0048BA40 /* play-actif.png */; }; + D36C43EA158F3F7E0048BA40 /* play-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E7158F3F7E0048BA40 /* play-actif.png */; }; + D36C43EB158F3F7E0048BA40 /* play-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E8158F3F7E0048BA40 /* play-over.png */; }; + D36C43EC158F3F7E0048BA40 /* play-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E8158F3F7E0048BA40 /* play-over.png */; }; + D36C43F1158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */; }; + D36C43F2158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */; }; + D36C43F3158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */; }; + D36C43F4158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */; }; + D36C43F5158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */; }; + D36C43F6158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */; }; + D36C43F7158F61EA0048BA40 /* play-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */; }; + D36C43F8158F61EA0048BA40 /* play-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */; }; D36FB2D51589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; }; D36FB2D61589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; }; D37295CA158B1E2D00D2C0C7 /* registration_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */; }; @@ -807,6 +833,20 @@ D354981E1587716B000081D8 /* UIStateBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIStateBar.h; sourceTree = ""; }; D354981F1587716B000081D8 /* UIStateBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIStateBar.m; sourceTree = ""; }; D35498201587716B000081D8 /* UIStateBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIStateBar.xib; sourceTree = ""; }; + D36C43C4158F2E5A0048BA40 /* UICallCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallCell.h; sourceTree = ""; }; + D36C43C5158F2E5A0048BA40 /* UICallCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICallCell.m; sourceTree = ""; }; + D36C43C9158F2EE50048BA40 /* UICallCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UICallCell.xib; sourceTree = ""; }; + D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-courbe-autres-numeros.png"; path = "Resources/champ-courbe-autres-numeros.png"; sourceTree = ""; }; + D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-courbe-participant-conf.png"; path = "Resources/champ-courbe-participant-conf.png"; sourceTree = ""; }; + D36C43CE158F2F370048BA40 /* champ-titre-conference.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-titre-conference.png"; path = "Resources/champ-titre-conference.png"; sourceTree = ""; }; + D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "clavier-secondaire-actif.png"; path = "Resources/clavier-secondaire-actif.png"; sourceTree = ""; }; + D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "clavier-secondaire-over.png"; path = "Resources/clavier-secondaire-over.png"; sourceTree = ""; }; + D36C43E7158F3F7E0048BA40 /* play-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-actif.png"; path = "Resources/play-actif.png"; sourceTree = ""; }; + D36C43E8158F3F7E0048BA40 /* play-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-over.png"; path = "Resources/play-over.png"; sourceTree = ""; }; + D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause-champ-numero-actif.png"; path = "Resources/pause-champ-numero-actif.png"; sourceTree = ""; }; + D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause-champ-numero-over.png"; path = "Resources/pause-champ-numero-over.png"; sourceTree = ""; }; + D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-champ-numero-actif.png"; path = "Resources/play-champ-numero-actif.png"; sourceTree = ""; }; + D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-champ-numero-over.png"; path = "Resources/play-champ-numero-over.png"; sourceTree = ""; }; D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPauseButton.h; sourceTree = ""; }; D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPauseButton.m; sourceTree = ""; }; D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = registration_inprogress.png; path = Resources/registration_inprogress.png; sourceTree = ""; }; @@ -1282,6 +1322,9 @@ D326483D1588950F00930C67 /* UICallBar.xib */, 2214EB7812F846B1002A5394 /* UICallButton.h */, 2214EB7912F846B1002A5394 /* UICallButton.m */, + D36C43C4158F2E5A0048BA40 /* UICallCell.h */, + D36C43C5158F2E5A0048BA40 /* UICallCell.m */, + D36C43C9158F2EE50048BA40 /* UICallCell.xib */, 22AA8AFF13D83F6300B30535 /* UICamSwitch.h */, 22AA8B0013D83F6300B30535 /* UICamSwitch.m */, D3A55FBA15877E5E003FD403 /* UIContactCell.h */, @@ -1476,8 +1519,6 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */, - D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */, D3F83F2C1582223B00336684 /* 0-actif.png */, D3F83F2D1582223B00336684 /* 0-over.png */, D3F83F2E1582223B00336684 /* 1-actif.png */, @@ -1521,7 +1562,12 @@ D354981915876FE7000081D8 /* bouton-detail-contact-over.png */, D3F83F801582278D00336684 /* cancel-actif.png */, D3F83F811582278D00336684 /* cancel-over.png */, + D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */, + D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */, D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */, + D36C43CE158F2F370048BA40 /* champ-titre-conference.png */, + D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */, + D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */, D3F83F821582278D00336684 /* contact-actif-add-call.png */, D3F83F831582278D00336684 /* contact-over-add-call.png */, D38327EB1580FE3A00FA0D23 /* contacts-actif.png */, @@ -1565,7 +1611,13 @@ 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, D3F83EF8158205A100336684 /* pause-actif.png */, + D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */, + D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */, D3F83EF9158205A100336684 /* pause-over.png */, + D36C43E7158F3F7E0048BA40 /* play-actif.png */, + D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */, + D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */, + D36C43E8158F3F7E0048BA40 /* play-over.png */, D3432A5E158A4446001C6B0B /* quality-call-0.png */, D3432A5F158A4446001C6B0B /* quality-call-1.png */, D3432A60158A4446001C6B0B /* quality-call-2.png */, @@ -1574,6 +1626,7 @@ D3F83EFB158205A100336684 /* raccrocher-over.png */, D3F83F761582253100336684 /* refuser-actif.png */, D3F83F771582253100336684 /* refuser-over.png */, + D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */, 22F254801073D99800AC9B3F /* ringback.wav */, 70571E1913FABCB000CDD3C2 /* rootca.pem */, D38327EF1580FE3A00FA0D23 /* settings-actif.png */, @@ -1593,6 +1646,7 @@ D38327FF158100E400FA0D23 /* tchat-over.png */, D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */, D3F83F00158205A100336684 /* video-OFF-actif.png */, + D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */, D3F83F01158205A100336684 /* video-OFF-over.png */, D3F83F02158205A100336684 /* video-ON-actif.png */, D3F83F03158205A100336684 /* video-ON-over.png */, @@ -1836,6 +1890,18 @@ D3432A73158A45AF001C6B0B /* status_disconnected.png in Resources */, D37295CA158B1E2D00D2C0C7 /* registration_inprogress.png in Resources */, D37295DB158B3C9600D2C0C7 /* video-OFF-disabled.png in Resources */, + D36C43CA158F2EE50048BA40 /* UICallCell.xib in Resources */, + D36C43D1158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */, + D36C43D3158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */, + D36C43D5158F2F370048BA40 /* champ-titre-conference.png in Resources */, + D36C43D7158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */, + D36C43D9158F2F370048BA40 /* clavier-secondaire-over.png in Resources */, + D36C43E9158F3F7E0048BA40 /* play-actif.png in Resources */, + D36C43EB158F3F7E0048BA40 /* play-over.png in Resources */, + D36C43F1158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */, + D36C43F3158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */, + D36C43F5158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */, + D36C43F7158F61EA0048BA40 /* play-champ-numero-over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1971,6 +2037,18 @@ D3432A74158A45AF001C6B0B /* status_disconnected.png in Resources */, D37295CB158B1E2D00D2C0C7 /* registration_inprogress.png in Resources */, D37295DC158B3C9600D2C0C7 /* video-OFF-disabled.png in Resources */, + D36C43CB158F2EE50048BA40 /* UICallCell.xib in Resources */, + D36C43D2158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */, + D36C43D4158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */, + D36C43D6158F2F370048BA40 /* champ-titre-conference.png in Resources */, + D36C43D8158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */, + D36C43DA158F2F370048BA40 /* clavier-secondaire-over.png in Resources */, + D36C43EA158F3F7E0048BA40 /* play-actif.png in Resources */, + D36C43EC158F3F7E0048BA40 /* play-over.png in Resources */, + D36C43F2158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */, + D36C43F4158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */, + D36C43F6158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */, + D36C43F8158F61EA0048BA40 /* play-champ-numero-over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2018,6 +2096,7 @@ D36FB2D51589EF7C0036F6F2 /* UIPauseButton.m in Sources */, D31C9C98158A1CDF00756B45 /* UIHistoryCell.m in Sources */, D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */, + D36C43C6158F2E5A0048BA40 /* UICallCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2062,6 +2141,7 @@ D36FB2D61589EF7C0036F6F2 /* UIPauseButton.m in Sources */, D31C9C99158A1CDF00756B45 /* UIHistoryCell.m in Sources */, D32409C4158B49A600C8C119 /* UILongTouchButton.m in Sources */, + D36C43C7158F2E5A0048BA40 /* UICallCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 2443f37b9c627d8f4427b67cd931f9afb8bdcae4 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 21 Jun 2012 18:38:40 +0200 Subject: [PATCH 015/397] Add animation Continue new ui Fix some issues --- Classes/ContactTableViewController.m | 82 +- Classes/DialerViewController.h | 3 + Classes/DialerViewController.m | 17 +- Classes/DialerViewController.xib | 95 +- Classes/FirstLoginViewController.h | 1 - Classes/HistoryTableViewController.m | 35 +- Classes/InCallViewController.h | 6 +- Classes/InCallViewController.m | 202 +- Classes/InCallViewController.xib | 155 +- Classes/LinphoneUI/LinphoneManager.h | 3 +- Classes/LinphoneUI/LinphoneManager.m | 64 +- Classes/LinphoneUI/UIAddressTextField.h | 24 + Classes/LinphoneUI/UIAddressTextField.m | 29 + Classes/LinphoneUI/UICallCell.h | 7 +- Classes/LinphoneUI/UICallCell.m | 35 +- Classes/LinphoneUI/UICallCell.xib | 4744 +++++++++++++++++++++++ Classes/LinphoneUI/UIContactCell.h | 3 +- Classes/LinphoneUI/UIContactCell.m | 26 +- Classes/LinphoneUI/UIDigitButton.h | 15 +- Classes/LinphoneUI/UIDigitButton.m | 47 +- Classes/LinphoneUI/UIEraseButton.m | 1 + Classes/LinphoneUI/UIHistoryCell.h | 3 + Classes/LinphoneUI/UIHistoryCell.m | 31 +- Classes/LinphoneUI/UIHistoryCell.xib | 19 +- Classes/MoreViewController.h | 4 - Classes/PhoneMainView.h | 1 + Classes/PhoneMainView.m | 150 +- Classes/PhoneMainView.xib | 39 +- Resources/appeler-disabled.png | Bin 0 -> 2116 bytes Resources/backspace-disabled.png | Bin 0 -> 1987 bytes Resources/switch_camera_default.png | Bin 0 -> 6280 bytes Resources/switch_camera_over.png | Bin 0 -> 6326 bytes linphone.xcodeproj/project.pbxproj | 32 + main.m | 2 - 34 files changed, 5474 insertions(+), 401 deletions(-) create mode 100644 Classes/LinphoneUI/UIAddressTextField.h create mode 100644 Classes/LinphoneUI/UIAddressTextField.m create mode 100644 Classes/LinphoneUI/UICallCell.xib create mode 100644 Resources/appeler-disabled.png create mode 100644 Resources/backspace-disabled.png create mode 100644 Resources/switch_camera_default.png create mode 100644 Resources/switch_camera_over.png diff --git a/Classes/ContactTableViewController.m b/Classes/ContactTableViewController.m index 70a8129cc..cc5d1ce91 100644 --- a/Classes/ContactTableViewController.m +++ b/Classes/ContactTableViewController.m @@ -17,9 +17,9 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include "ContactTableViewController.h" -#import "FastAddressBook.h" +#import "ContactTableViewController.h" #import "UIContactCell.h" +#import "LinphoneManager.h" @implementation ContactTableViewController @@ -37,24 +37,35 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); for (id lPerson in lContacts) { CFStringRef lFirstName = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonFirstNameProperty); - CFStringRef lLocalizedFirstName = ABAddressBookCopyLocalizedLabel(lFirstName); + CFStringRef lLocalizedFirstName = (lFirstName != nil)? ABAddressBookCopyLocalizedLabel(lFirstName): nil; CFStringRef lLastName = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonLastNameProperty); - CFStringRef lLocalizedLastName = ABAddressBookCopyLocalizedLabel(lLastName); - NSString *name =[NSString stringWithFormat:@"%@%@", [(NSString *)lLocalizedFirstName retain], [(NSString *)lLocalizedLastName retain]]; - - // Put in correct subDic - NSString *firstChar = [[name substringToIndex:1] uppercaseString]; - OrderedDictionary *subDic =[lAddressBookMap objectForKey: firstChar]; - if(subDic == nil) { - subDic = [[OrderedDictionary alloc] init]; - [lAddressBookMap insertObject:subDic forKey:firstChar selector:@selector(caseInsensitiveCompare:)]; + CFStringRef lLocalizedLastName = (lLastName != nil)? ABAddressBookCopyLocalizedLabel(lLastName): nil; + NSString *name = nil; + if(lLocalizedFirstName != nil && lLocalizedLastName != nil) { + name=[NSString stringWithFormat:@"%@%@", [(NSString *)lLocalizedFirstName retain], [(NSString *)lLocalizedLastName retain]]; + } else if(lLocalizedLastName != nil) { + name=[NSString stringWithFormat:@"%@",[(NSString *)lLocalizedLastName retain]]; + } else if(lLocalizedFirstName != nil) { + name=[NSString stringWithFormat:@"%@",[(NSString *)lLocalizedFirstName retain]]; } - [subDic insertObject:lPerson forKey:name selector:@selector(caseInsensitiveCompare:)]; - - CFRelease(lLocalizedLastName); - CFRelease(lLastName); - CFRelease(lLocalizedFirstName); - CFRelease(lFirstName); + if(name != nil) { + // Put in correct subDic + NSString *firstChar = [[name substringToIndex:1] uppercaseString]; + OrderedDictionary *subDic =[lAddressBookMap objectForKey: firstChar]; + if(subDic == nil) { + subDic = [[OrderedDictionary alloc] init]; + [lAddressBookMap insertObject:subDic forKey:firstChar selector:@selector(caseInsensitiveCompare:)]; + } + [subDic insertObject:lPerson forKey:name selector:@selector(caseInsensitiveCompare:)]; + } + if(lLocalizedLastName != nil) + CFRelease(lLocalizedLastName); + if(lLastName != nil) + CFRelease(lLastName); + if(lLocalizedFirstName != nil) + CFRelease(lLocalizedFirstName); + if(lFirstName != nil) + CFRelease(lFirstName); } CFRelease(lContacts); } @@ -86,20 +97,9 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, NSString *key = [[subDic allKeys] objectAtIndex:[indexPath row]]; ABRecordRef record = [subDic objectForKey:key]; + + [cell update: record]; - CFStringRef lFirstName = ABRecordCopyValue(record, kABPersonFirstNameProperty); - CFStringRef lLocalizedFirstName = ABAddressBookCopyLocalizedLabel(lFirstName); - CFStringRef lLastName = ABRecordCopyValue(record, kABPersonLastNameProperty); - CFStringRef lLocalizedLastName = ABAddressBookCopyLocalizedLabel(lLastName); - - [cell.firstName setText: [(NSString *)lLocalizedFirstName retain]]; - [cell.lastName setText: [(NSString *)lLocalizedLastName retain]]; - [cell update]; - - CFRelease(lLocalizedLastName); - CFRelease(lLastName); - CFRelease(lLocalizedFirstName); - CFRelease(lFirstName); return cell; } @@ -111,6 +111,26 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]]; // TODO + ABMultiValueRef lPhoneNumbers = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonPhoneProperty); + for(CFIndex i = 0; i < ABMultiValueGetCount(lPhoneNumbers); i++) { + CFStringRef lLabel = ABMultiValueCopyLabelAtIndex(lPhoneNumbers, i); + if ([(NSString*)lLabel isEqualToString:(NSString*)kABPersonPhoneMainLabel]) { + CFStringRef lNumber = ABMultiValueCopyValueAtIndex(lPhoneNumbers,i); + NSString *number = [(NSString *)lNumber retain]; + + // Go to dialer view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: number, nil] autorelease] + , @"setAddress:", + nil] autorelease]; + [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; + + CFRelease(lNumber); + break; + } + CFRelease(lLabel); + } + CFRelease(lPhoneNumbers); } - (void)dealloc { diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index 80e2c7a93..6fd7025d7 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -26,6 +26,7 @@ @private //Buttons UITextField* addressField; + UIButton* addContact; UIEraseButton* eraseButton; UICallButton* callButton; @@ -47,6 +48,7 @@ - (void)setAddress:(NSString*) address; @property (nonatomic, retain) IBOutlet UITextField* addressField; +@property (nonatomic, retain) IBOutlet UIButton* addContact; @property (nonatomic, retain) IBOutlet UIButton* callButton; @property (nonatomic, retain) IBOutlet UIEraseButton* eraseButton; @property (nonatomic, retain) IBOutlet UIButton* oneButton; @@ -63,5 +65,6 @@ @property (nonatomic, retain) IBOutlet UIButton* hashButton; - (IBAction)onAddContact: (id) event; +- (IBAction)onAddressChange: (id)sender; @end diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 647defb5c..e9e7f6a5d 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -21,7 +21,6 @@ #import #import "DialerViewController.h" -#import "linphoneAppDelegate.h" #import "IncallViewController.h" #import "LinphoneManager.h" #import "PhoneMainView.h" @@ -32,6 +31,7 @@ @implementation DialerViewController @synthesize addressField; +@synthesize addContact; @synthesize callButton; @synthesize eraseButton; @@ -87,7 +87,10 @@ - (void)dealloc { [addressField release]; + [addContact release]; + [eraseButton release]; [callButton release]; + [oneButton release]; [twoButton release]; [threeButton release]; @@ -114,4 +117,16 @@ } +- (IBAction)onAddressChange: (id)sender { + if([[addressField text] length] > 0) { + [addContact setEnabled:TRUE]; + [eraseButton setEnabled:TRUE]; + [callButton setEnabled:TRUE]; + } else { + [addContact setEnabled:FALSE]; + [eraseButton setEnabled:FALSE]; + [callButton setEnabled:FALSE]; + } +} + @end diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index 9eebe377a..943859e1e 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -529,6 +529,7 @@ _NS:9 NO IBCocoaTouchFramework + NO 0 0 NO @@ -562,6 +563,7 @@ _NS:9 NO IBCocoaTouchFramework + NO 0 0 NO @@ -571,6 +573,10 @@ NSImage appeler-over.png + + NSImage + appeler-disabled.png + NSImage appeler-actif.png @@ -584,9 +590,11 @@ {{214, 0}, {106, 69}} + _NS:9 NO IBCocoaTouchFramework + NO 0 0 NO @@ -601,6 +609,10 @@ NSImage backspace-over.png + + NSImage + backspace-disabled.png + NSImage backspace-actif.png @@ -765,6 +777,14 @@ 205
+ + + addContact + + + + 206 + delegate @@ -773,6 +793,15 @@ 190 + + + onAddressChange: + + + 18 + + 208 + onAddContact: @@ -822,8 +851,8 @@ YES - + dialer @@ -850,7 +879,6 @@ - @@ -858,6 +886,7 @@ + pad @@ -1023,6 +1052,7 @@ 39.CustomClassName 39.IBPluginDependency 39.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 4.CustomClassName 4.IBPluginDependency 40.CustomClassName 40.IBPluginDependency @@ -1047,10 +1077,10 @@ UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIEraseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton @@ -1080,6 +1110,7 @@ UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIAddressTextField com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1101,7 +1132,7 @@ - 205 + 221
@@ -1110,20 +1141,42 @@ DialerViewController UIViewController - onAddContact: - id + YES + + YES + onAddContact: + onAddressChange: + + + YES + id + id + - onAddContact: - - onAddContact: - id + YES + + YES + onAddContact: + onAddressChange: + + + YES + + onAddContact: + id + + + onAddressChange: + id + YES YES + addContact addressField callButton eightButton @@ -1142,6 +1195,7 @@ YES + UIButton UITextField UIButton UIButton @@ -1163,6 +1217,7 @@ YES YES + addContact addressField callButton eightButton @@ -1181,6 +1236,10 @@ YES + + addContact + UIButton + addressField UITextField @@ -1248,6 +1307,14 @@ ./Classes/DialerViewController.h + + UIAddressTextField + UITextField + + IBProjectSource + ./Classes/UIAddressTextField.h + + UICallButton UIButton @@ -1258,7 +1325,7 @@ UIDigitButton - UIButton + UILongTouchButton IBProjectSource ./Classes/UIDigitButton.h @@ -1325,8 +1392,10 @@ add-contact-inactif.png add-contact-over.png appeler-actif.png + appeler-disabled.png appeler-over.png backspace-actif.png + backspace-disabled.png backspace-over.png champ-saisie-numero.png diese-actif.png @@ -1361,6 +1430,8 @@ {213, 138} {214, 138} {214, 138} + {214, 138} + {213, 138} {213, 138} {213, 138} {640, 135} diff --git a/Classes/FirstLoginViewController.h b/Classes/FirstLoginViewController.h index bd0d646fe..47ed65665 100644 --- a/Classes/FirstLoginViewController.h +++ b/Classes/FirstLoginViewController.h @@ -18,7 +18,6 @@ */ #import -#import "LinphoneAppDelegate.h" @interface FirstLoginViewController : UIViewController { UIButton* ok; diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index 052af435d..ae1b89ec1 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -45,35 +45,10 @@ cell = [[UIHistoryCell alloc] init]; } - // Set up the cell... - LinphoneAddress* partyToDisplay; const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); - LinphoneCallLog* callLogs = ms_list_nth_data(logs, indexPath.row) ; - - NSString *path; - if (callLogs->dir == LinphoneCallIncoming) { - if (callLogs->status == LinphoneCallSuccess) { - path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-entrant":@"appel-entrant" ofType:@"png"]; - } else { - //missed call - path = [[NSBundle mainBundle] pathForResource:@"appel-manque" ofType:@"png"]; - } - partyToDisplay=callLogs->from; - - } else { - path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-sortant":@"appel-sortant" ofType:@"png"]; - partyToDisplay=callLogs->to; - - } - UIImage *image = [UIImage imageWithContentsOfFile:path]; - - const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):""; + LinphoneCallLog* callLogs = ms_list_nth_data(logs, indexPath.row); - //TODO - //const char* displayName = linphone_address_get_display_name(partyToDisplay); - - [cell.displayName setText:[NSString stringWithFormat:@"%s", username]]; - cell.imageView.image = image; + [cell update:callLogs]; return cell; } @@ -109,10 +84,10 @@ NSString* dispName = [[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]]; // Go to dialer view - NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys: - [[NSArray alloc] initWithObjects: phoneNumber, nil] + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: phoneNumber, nil] autorelease] , @"setAddress:", - nil]; + nil] autorelease]; [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; [phoneNumber release]; diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index f995ac87d..8d737f00e 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -30,7 +30,7 @@ @class VideoViewController; -@interface InCallViewController : UIViewController { +@interface InCallViewController : UIViewController { UITableView* callTableView; @@ -43,8 +43,6 @@ UICamSwitch* videoCameraSwitch; UIActivityIndicatorView* videoWaitingForFirstImage; - bool dismissed; - NSTimer *durationRefreasher; NSTimer *glowingTimer; @@ -69,7 +67,7 @@ } + (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf; -+ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call; +//+ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call; @property (nonatomic, retain) IBOutlet UIViewController* conferenceDetail; @property (nonatomic, retain) IBOutlet UITableView* callTableView; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 38217c3e3..0a1f4ba45 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -175,16 +175,22 @@ void addAnimationFadeTransition(UIView* view, float duration) { } #endif -- (void)enableVideoDisplay { +- (void)enableVideoDisplay:(BOOL)animation { [self orientationChanged:nil]; [videoZoomHandler resetZoom]; - [UIView beginAnimations:nil context:nil]; - [UIView setAnimationDuration:1.0]; + if(animation) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:1.0]; + } + [videoGroup setAlpha:1.0]; [callTableView setAlpha:0.0]; - [UIView commitAnimations]; + + if(animation) { + [UIView commitAnimations]; + } videoView.alpha = 1.0; videoView.hidden = FALSE; @@ -195,30 +201,36 @@ void addAnimationFadeTransition(UIView* view, float duration) { [[LinphoneManager instance] fullScreen: true]; [[LinphoneManager instance] showTabBar: false]; - // This is a bit hacky: take into account toolbar removal (only once). - // It's probably possible to do this from the Xib file (?) - static bool done = false; - if (!done) { - ms_message("old center: %f %f", videoView.center.x, videoView.center.y); - videoView.center = CGPointMake(videoView.center.x, videoView.center.y + (self.view.frame.size.height - videoView.window.frame.size.height)); - ms_message("new center: %f %f", videoView.center.x, videoView.center.y); - done = true; - } - #ifdef TEST_VIDEO_VIEW_CHANGE [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(_debugChangeVideoView) userInfo:nil repeats:YES]; #endif // [self batteryLevelChanged:nil]; + + [self updateUIFromLinphoneState: YES]; + videoWaitingForFirstImage.hidden = NO; + [videoWaitingForFirstImage startAnimating]; + + // TODO + LinphoneCall *call = linphone_core_get_current_call([LinphoneManager getLc]); + if (call != NULL && call->videostream) { + linphone_call_set_next_video_frame_decoded_callback(call, hideSpinner, self); + } } -- (void)disableVideoDisplay { - [UIView beginAnimations:nil context:nil]; - [UIView setAnimationDuration:1.0]; +- (void)disableVideoDisplay:(BOOL)animation { + if(animation) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:1.0]; + } + [videoGroup setAlpha:0.0]; [[LinphoneManager instance] showTabBar: true]; [callTableView setAlpha:1.0]; [videoCameraSwitch setAlpha:0.0]; - [UIView commitAnimations]; + + if(animation) { + [UIView commitAnimations]; + } if (hideControlsTimer != nil) { [hideControlsTimer invalidate]; @@ -306,7 +318,8 @@ void addAnimationFadeTransition(UIView* view, float duration) { UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)]; [singleFingerTap setNumberOfTapsRequired:1]; - [videoGroup addGestureRecognizer:singleFingerTap]; + [singleFingerTap setCancelsTouchesInView: FALSE]; + [[[UIApplication sharedApplication].delegate window] addGestureRecognizer:singleFingerTap]; [singleFingerTap release]; videoZoomHandler = [[VideoZoomHandler alloc] init]; @@ -408,40 +421,34 @@ void addAnimationFadeTransition(UIView* view, float duration) { - (void)viewDidAppear:(BOOL)animated { [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; [super viewDidAppear:animated]; - if (dismissed) { - [self dismissModalViewControllerAnimated:true]; + + [self updateCallsDurations]; + durationRefreasher = [NSTimer scheduledTimerWithTimeInterval:1 + target:self + selector:@selector(updateCallsDurations) + userInfo:nil + repeats:YES]; + glowingTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 + target:self + selector:@selector(updateGlow) + userInfo:nil + repeats:YES]; + glow = 0; + mIncallViewIsReady=TRUE; + if (mVideoIsPending) { + mVideoIsPending=FALSE; + [self enableVideoDisplay: FALSE]; } else { - [self updateCallsDurations]; - durationRefreasher = [NSTimer scheduledTimerWithTimeInterval:1 - target:self - selector:@selector(updateCallsDurations) - userInfo:nil - repeats:YES]; - glowingTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 - target:self - selector:@selector(updateGlow) - userInfo:nil - repeats:YES]; - glow = 0; - mIncallViewIsReady=TRUE; - if (mVideoIsPending) { - mVideoIsPending=FALSE; - [self displayVideoCall:nil FromUI:self - forUser:nil - withDisplayName:nil]; - - } - - - UIDevice* device = [UIDevice currentDevice]; - if ([device respondsToSelector:@selector(isMultitaskingSupported)] - && [device isMultitaskingSupported]) { - //bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; - - //[LinphoneManager set:contacts hidden:enableVideo withName:"CONTACT button" andReason:AT]; - //[LinphoneManager set:addVideo hidden:!contacts.hidden withName:"ADD_VIDEO button" andReason:AT]; - } + [self disableVideoDisplay: FALSE]; } + + UIDevice* device = [UIDevice currentDevice]; + if ([device respondsToSelector:@selector(isMultitaskingSupported)] + && [device isMultitaskingSupported]) { + //bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; + //[LinphoneManager set:contacts hidden:enableVideo withName:"CONTACT button" andReason:AT]; + //[LinphoneManager set:addVideo hidden:!contacts.hidden withName:"ADD_VIDEO button" andReason:AT]; + } } - (void)viewWillDisappear:(BOOL)animated { @@ -451,15 +458,20 @@ void addAnimationFadeTransition(UIView* view, float duration) { } - (void)viewDidDisappear:(BOOL)animated { + if (hideControlsTimer != nil) { + [hideControlsTimer invalidate]; + hideControlsTimer = nil; + } if (durationRefreasher != nil) { [durationRefreasher invalidate]; durationRefreasher=nil; + } + if (glowingTimer != nil) { [glowingTimer invalidate]; glowingTimer = nil; } if (!mVideoShown) [[UIApplication sharedApplication] setIdleTimerDisabled:false]; mIncallViewIsReady=FALSE; - dismissed = false; } - (void)viewDidUnload { @@ -478,7 +490,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { - (void)displayCall:(LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { //restore view [self displayPad:false]; - dismissed = false; UIDevice *device = [UIDevice currentDevice]; device.proximityMonitoringEnabled = YES; //if ([speaker isOn]) @@ -487,7 +498,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { } - (void)displayInCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - dismissed = false; UIDevice *device = [UIDevice currentDevice]; device.proximityMonitoringEnabled = YES; if (call !=nil && linphone_call_get_dir(call)==LinphoneCallIncoming) { @@ -495,15 +505,14 @@ void addAnimationFadeTransition(UIView* view, float duration) { } [self updateUIFromLinphoneState: YES]; - [self disableVideoDisplay]; + [self disableVideoDisplay: TRUE]; } - (void)displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [self disableVideoDisplay]; + [self disableVideoDisplay: TRUE]; UIViewController* modalVC = self.modalViewController; UIDevice *device = [UIDevice currentDevice]; device.proximityMonitoringEnabled = NO; - dismissed = true; if (modalVC != nil) { mVideoIsPending=FALSE; // clear previous native window ids @@ -513,10 +522,10 @@ void addAnimationFadeTransition(UIView* view, float duration) { linphone_core_set_native_preview_window_id([LinphoneManager getLc],0); }*/ [[LinphoneManager instance] fullScreen:false]; - [self dismissModalViewControllerAnimated:FALSE];//just in case + //[self dismissModalViewControllerAnimated:FALSE];//just in case } - [self dismissModalViewControllerAnimated:FALSE]; //disable animation to avoid blanc bar just below status bar*/ + //[self dismissModalViewControllerAnimated:FALSE]; //disable animation to avoid blanc bar just below status bar*/ [self updateUIFromLinphoneState: YES]; } @@ -525,12 +534,11 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); - (void)hideSpinnerIndicator: (LinphoneCall*)call { if (!videoWaitingForFirstImage.hidden) { videoWaitingForFirstImage.hidden = TRUE; - } /*else { + } else { linphone_call_set_next_video_frame_decoded_callback(call, hideSpinner, self); - }*/ + } } - - (void)callUpdate: (NSNotification*) notif { LinphoneCallWrapper *callWrapper = [notif.userInfo objectForKey: @"call"]; LinphoneCall *call = callWrapper->call; @@ -541,7 +549,7 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); NSString* lDisplayName = [lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@"" autorelease]; - bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); + //bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); switch (state) { /*case LinphoneCallIncomingReceived: @@ -584,7 +592,7 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); { const LinphoneCallParams* current = linphone_call_get_current_params(call); if (linphone_call_params_video_enabled(current)) { - [self displayVideoCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; + [self enableVideoDisplay:TRUE]; } else { [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; } @@ -594,15 +602,13 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); case LinphoneCallPausing: case LinphoneCallPaused: { - [self disableVideoDisplay]; + [self disableVideoDisplay: TRUE]; break; } case LinphoneCallStreamsRunning: //check video if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { - [self displayVideoCall:call FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; + [self enableVideoDisplay:TRUE]; } else { [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; } @@ -618,19 +624,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [thiz hideSpinnerIndicator:call]; } -- (void)displayVideoCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - - [self enableVideoDisplay]; - - [self updateUIFromLinphoneState: YES]; - videoWaitingForFirstImage.hidden = NO; - [videoWaitingForFirstImage startAnimating]; - - if (call->videostream) { - linphone_call_set_next_video_frame_decoded_callback(call, hideSpinner, self); - } -} - - (void)dismissActionSheet: (id)o { if (visibleActionSheet != nil) { [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE]; @@ -672,8 +665,19 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } - (void)dealloc { - [super dealloc]; + [videoGroup release]; + [callTableView release]; + [videoView release]; + [videoPreview release]; +#ifdef TEST_VIDEO_VIEW_CHANGE + [testVideoView release]; +#endif + [videoCameraSwitch release]; + [videoWaitingForFirstImage release]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [super dealloc]; } + (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{ @@ -732,6 +736,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [self updateActive:(cell == activeCallCell) cell:cell]; } +/* + (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call { if (call == NULL) { ms_warning("UpdateCell called with null call"); @@ -746,7 +751,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { const char* lUserNameChars=linphone_address_get_username(addr); NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); NSMutableString* mss = [[NSMutableString alloc] init]; - /* contact name */ + // contact name const char* n = linphone_address_get_display_name(addr); if (n) [mss appendFormat:@"%s", n, nil]; @@ -815,8 +820,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [detailLabel setText:ms]; [ms release]; } -} - +}*/ - (void)updateConferenceCell:(UITableViewCell*) cell at:(NSIndexPath*)indexPath { LinphoneCore* lc = [LinphoneManager getLc]; @@ -847,7 +851,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } -// UITableViewDataSource (required) - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"]; if (cell == nil) { @@ -861,18 +864,25 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } LinphoneCore* lc = [LinphoneManager getLc]; - + LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + [cell updateCell:call]; + if(linphone_core_get_conference_size(lc) > 0) { + tableView.scrollEnabled = TRUE; + } else { + tableView.scrollEnabled = FALSE; + } + /* if (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0) { - /* [self updateConferenceCell:cell at:indexPath]; + [self updateConferenceCell:cell at:indexPath]; if (linphone_core_is_in_conference(lc)) activeCallCell = cell; cell.accessoryView = nil; if (linphone_core_is_in_conference(lc)) cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; else - cell.accessoryType = UITableViewCellAccessoryNone;*/ + cell.accessoryType = UITableViewCellAccessoryNone; } else { - /*LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; if (call == nil) return cell; // return dummy cell @@ -887,12 +897,12 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } [InCallViewController updateCellImageView:cell.imageView Label:cell.textLabel DetailLabel:cell.detailTextLabel AndAccessoryView:(UIView*)cell.accessoryView withCall:call]; if (linphone_core_get_current_call(lc) == call) - activeCallCell = cell;*/ + activeCallCell = cell; //cell.accessoryType = UITableViewCellAccessoryNone; // Call Quality Indicator //TODO - /*UIImageView* callquality = [UIImageView new]; + UIImageView* callquality = [UIImageView new]; [callquality setFrame:CGRectMake(0, 0, 28, 28)]; if (call->state == LinphoneCallStreamsRunning) { @@ -900,9 +910,9 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } else { [callquality setImage:nil]; - }*/ + } - /*LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); + LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); if (enc != LinphoneMediaEncryptionNone) { cell.accessoryView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 28)] autorelease]; UIButton* accessoryBtn = [UIButton buttonWithType:UIButtonTypeCustom]; @@ -922,12 +932,12 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { if (((UIButton*)accessoryBtn).imageView.image != nil && linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)) == LinphoneMediaEncryptionZRTP) { [((UIButton*)accessoryBtn) addTarget:self action:@selector(secureIconPressed:withEvent:) forControlEvents:UIControlEventTouchUpInside]; } - } */ + } //[cell.accessoryView addSubview:callquality]; //[callquality release]; } - + */ /*cell.userInteractionEnabled = YES; cell.selectionStyle = UITableViewCellSelectionStyleNone;*/ return cell; diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 0ed773a76..5640c3dad 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -12,10 +12,10 @@ YES - IBUIButton + IBUITableView IBUIActivityIndicatorView IBUIView - IBUITableView + IBUIButton IBProxyObject @@ -49,7 +49,7 @@ 292 - {320, 480} + {320, 460} @@ -66,7 +66,7 @@ {{240, 354}, {80, 106}} - + IBCocoaTouchFramework @@ -91,69 +91,26 @@ _NS:196 - 2 - MC4wNTQ5MDE5NjA3OCAwLjA4MjM1Mjk0MTE4IDAuMTI5NDExNzY0NwA - - NO - IBCocoaTouchFramework - - - - 292 - {320, 66} - - - - - 1 - MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA - - NO - NO - 0.0 - IBCocoaTouchFramework - 0 - 0 - Change camera - 3 - MQA - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - 3 - MC41AA - - - NSImage - clavier-01-106px.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 + MAA + IBCocoaTouchFramework 274 - {320, 251} + {320, 460} - + _NS:418 YES IBCocoaTouchFramework + 0.0 + 10 + 0.0 + 0.0 YES NO 0 @@ -162,6 +119,41 @@ 22 22 + + + -2147483356 + {84, 61} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + + 3 + MC41AA + + + NSImage + switch_camera_over.png + + + NSImage + switch_camera_default.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + {320, 460} @@ -178,14 +170,6 @@ YES - - - videoCameraSwitch - - - - 141 - view @@ -234,6 +218,14 @@ 109 + + + videoCameraSwitch + + + + 161 + dataSource @@ -278,18 +270,12 @@ YES - + - - 140 - - - camSwitch - 126 @@ -329,6 +315,12 @@ tableView + + 160 + + + camSwitch + @@ -343,9 +335,10 @@ 126.IBPluginDependency 127.IBPluginDependency 132.IBPluginDependency - 140.CustomClassName - 140.IBPluginDependency 144.IBPluginDependency + 160.CustomClassName + 160.IBPluginDependency + 160.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 9.IBPluginDependency @@ -358,9 +351,10 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICamSwitch com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -376,7 +370,7 @@ - 159 + 161 @@ -508,8 +502,17 @@ YES 3 - clavier-01-106px.png - {106, 60} + YES + + YES + switch_camera_default.png + switch_camera_over.png + + + YES + {167, 122} + {167, 122} + 1181 diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneUI/LinphoneManager.h index 7786e9e88..eaf47a14a 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneUI/LinphoneManager.h @@ -72,8 +72,7 @@ typedef struct _LinphoneCallAppData { NSTimer* mIterateTimer; id mLogView; bool isbackgroundModeEnabled; - - UIViewController* mCurrentViewController; + Connectivity connectivity; FastAddressBook* mFastAddressBook; const char* frontCamId; diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneUI/LinphoneManager.m index 4a520d1a0..b6b101b47 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneUI/LinphoneManager.m @@ -63,11 +63,13 @@ extern void libmsbcg729_init(); @implementation LinphoneManager +PhoneView currentView = -1; + @synthesize connectivity; @synthesize frontCamId; @synthesize backCamId; --(id) init { +- (id)init { assert (!theLinphoneManager); if ((self= [super init])) { mFastAddressBook = [[FastAddressBook alloc] init]; @@ -76,7 +78,7 @@ extern void libmsbcg729_init(); return self; } -+(LinphoneManager*) instance { ++ (LinphoneManager*)instance { return theLinphoneManager; } @@ -86,10 +88,6 @@ extern void libmsbcg729_init(); } - (void)fullScreen:(BOOL) enabled { - if(enabled) - [[UIApplication sharedApplication] setStatusBarHidden:enabled withAnimation:UIStatusBarAnimationSlide]; - else - [[UIApplication sharedApplication] setStatusBarHidden:enabled withAnimation:UIStatusBarAnimationNone]; NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithBool:enabled] forKey:@"fullscreen"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; } @@ -203,11 +201,10 @@ extern void libmsbcg729_init(); } // Post event - NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys: + NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: [[[LinphoneCallWrapper alloc] initWithCall: call] autorelease], @"call", [NSNumber numberWithInt:new_state], @"state", - [[NSString stringWithFormat:@"%c", message] autorelease], @"message", - nil]; + [NSString stringWithUTF8String:message], @"message", nil] autorelease]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self userInfo:dict]; } @@ -228,9 +225,9 @@ extern void libmsbcg729_init(); - (void)displayStatus:(NSString*) message { // Post event - NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys: + NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: message, @"message", - nil]; + nil] autorelease]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneDisplayStatus" object:self userInfo:dict]; } @@ -289,10 +286,10 @@ static void linphone_iphone_transfer_state_changed(LinphoneCore* lc, LinphoneCal ms_warning("NEW REGISTRATION STATE: '%s' (message: '%s')", linphone_registration_state_to_string(state), message); // Post event - NSDictionary* dict = [[NSDictionary alloc] initWithObjectsAndKeys: + NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithInt:state], @"state", - [[NSString stringWithFormat:@"%c", message] autorelease], @"message", - nil]; + [NSString stringWithFormat:@"%c", message], @"message", + nil] autorelease]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneRegistrationUpdate" object:self userInfo:dict]; // Show error @@ -344,7 +341,7 @@ static LinphoneCoreVTable linphonec_vtable = { }; --(void) configurePayloadType:(const char*) type fromPrefKey: (NSString*)key withRate:(int)rate { +- (void)configurePayloadType:(const char*) type fromPrefKey: (NSString*)key withRate:(int)rate { if ([[NSUserDefaults standardUserDefaults] boolForKey:key]) { PayloadType* pt; if((pt = linphone_core_find_payload_type(theLinphoneCore,type,rate))) { @@ -352,11 +349,13 @@ static LinphoneCoreVTable linphonec_vtable = { } } } --(void) kickOffNetworkConnection { + +- (void)kickOffNetworkConnection { /*start a new thread to avoid blocking the main ui in case of peer host failure*/ [NSThread detachNewThreadSelector:@selector(runNetworkConnection) toTarget:self withObject:nil]; } --(void) runNetworkConnection { + +- (void)runNetworkConnection { CFWriteStreamRef writeStream; CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"192.168.0.200"/*"linphone.org"*/, 15000, nil, &writeStream); CFWriteStreamOpen (writeStream); @@ -437,7 +436,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } --(BOOL) reconfigureLinphoneIfNeeded:(NSDictionary *)settings { +- (BOOL)reconfigureLinphoneIfNeeded:(NSDictionary *)settings { if (theLinphoneCore==nil) { ms_warning("cannot configure linphone because not initialized yet"); return NO; @@ -708,7 +707,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach [[NSUserDefaults standardUserDefaults] setBool:true forKey:@"check_config_disable_preference"]; } } --(void) destroyLibLinphone { +- (void)destroyLibLinphone { [mIterateTimer invalidate]; AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setDelegate:nil]; @@ -726,7 +725,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } //**********************BG mode management*************************/////////// --(BOOL) enterBackgroundMode { +- (BOOL)enterBackgroundMode { LinphoneProxyConfig* proxyCfg; linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg); linphone_core_stop_dtmf_stream(theLinphoneCore); @@ -777,11 +776,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //scheduling loop --(void) iterate { +- (void)iterate { linphone_core_iterate(theLinphoneCore); } --(void) setupNetworkReachabilityCallback { +- (void)setupNetworkReachabilityCallback { SCNetworkReachabilityContext *ctx=NULL; const char *nodeName="linphone.org"; @@ -816,7 +815,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach /************* *lib linphone init method */ --(void)startLibLinphone { +- (void)startLibLinphone { //get default config from bundle NSBundle* myBundle = [NSBundle mainBundle]; @@ -928,7 +927,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } --(void) refreshRegisters{ +- (void)refreshRegisters{ /*first check if network is available*/ if (proxyReachability){ SCNetworkReachabilityFlags flags=0; @@ -947,7 +946,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach linphone_core_refresh_registers(theLinphoneCore);//just to make sure REGISTRATION is up to date } --(void) becomeActive { +- (void)becomeActive { if (theLinphoneCore == nil) { //back from standby and background mode is disabled [self startLibLinphone]; @@ -961,11 +960,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach linphone_core_start_dtmf_stream(theLinphoneCore); } --(void) registerLogView:(id) view { +- (void)registerLogView:(id) view { mLogView = view; } --(void) beginInterruption { +- (void)beginInterruption { LinphoneCall* c = linphone_core_get_current_call(theLinphoneCore); ms_message("Sound interruption detected!"); if (c) { @@ -973,32 +972,32 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } --(void) endInterruption { +- (void)endInterruption { ms_message("Sound interruption ended!"); //let the user resume the call manually. } -+(BOOL) runningOnIpad { ++ (BOOL)runningOnIpad { #ifdef UI_USER_INTERFACE_IDIOM return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); #endif return NO; } -+(void) set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason{ ++ (void)set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason{ if (view.enabled != enabled) { ms_message("UI - '%s' is now '%s' ('%s')", name, enabled ? "ENABLED" : "DISABLED", reason); [view setEnabled:enabled]; } } -+(void) set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason{ ++ (void)set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason{ if (view.hidden != hidden) { ms_message("UI - '%s' is now '%s' ('%s')", name, hidden ? "HIDDEN" : "SHOWN", reason); [view setHidden:hidden]; } } -+(void) logUIElementPressed:(const char*) name { ++ (void)logUIElementPressed:(const char*) name { ms_message("UI - '%s' pressed", name); } @@ -1024,4 +1023,5 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } } + @end diff --git a/Classes/LinphoneUI/UIAddressTextField.h b/Classes/LinphoneUI/UIAddressTextField.h new file mode 100644 index 000000000..b08c462a3 --- /dev/null +++ b/Classes/LinphoneUI/UIAddressTextField.h @@ -0,0 +1,24 @@ +/* UIAddressTextField.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface UIAddressTextField : UITextField + +@end diff --git a/Classes/LinphoneUI/UIAddressTextField.m b/Classes/LinphoneUI/UIAddressTextField.m new file mode 100644 index 000000000..0e6b316e1 --- /dev/null +++ b/Classes/LinphoneUI/UIAddressTextField.m @@ -0,0 +1,29 @@ +/* UIAddressTextField.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIAddressTextField.h" + +@implementation UIAddressTextField + +- (void) setText:(NSString *)text { + [super setText:text]; + [self sendActionsForControlEvents:UIControlEventEditingChanged]; +} + +@end diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h index ef63592d6..e19eb8e62 100644 --- a/Classes/LinphoneUI/UICallCell.h +++ b/Classes/LinphoneUI/UICallCell.h @@ -19,11 +19,13 @@ #import +#include "linphonecore.h" + @interface UICallCell : UITableViewCell { UIView *firstBackground; UIView *otherBackground; - UILabel *numberLabel; + UILabel *addressLabel; UILabel *timeLabel; UIImageView *stateView; } @@ -31,11 +33,12 @@ @property (nonatomic, retain) IBOutlet UIView* firstBackground; @property (nonatomic, retain) IBOutlet UIView* otherBackground; -@property (nonatomic, retain) IBOutlet UILabel* numberLabel; +@property (nonatomic, retain) IBOutlet UILabel* addressLabel; @property (nonatomic, retain) IBOutlet UILabel* timeLabel; @property (nonatomic, retain) IBOutlet UIImageView* stateView; - (void)firstCell; - (void)otherCell; +- (void)updateCell:(LinphoneCall *)call; @end diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 44da8c163..e1f37e1fa 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -24,7 +24,7 @@ @synthesize firstBackground; @synthesize otherBackground; @synthesize stateView; -@synthesize numberLabel; +@synthesize addressLabel; @synthesize timeLabel; - (id)init { @@ -50,4 +50,37 @@ [otherBackground setHidden:false]; } +- (void)updateCell:(LinphoneCall *)call { + const LinphoneAddress* addr = linphone_call_get_remote_address(call); + + if (addr) { + const char* lUserNameChars=linphone_address_get_username(addr); + NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); + NSMutableString* mss = [[NSMutableString alloc] init]; + // contact name + const char* n = linphone_address_get_display_name(addr); + if (n) + [mss appendFormat:@"%s", n, nil]; + else + [mss appendFormat:@"%@",lUserName , nil]; + + [addressLabel setText:mss]; + + // TODO + //imageView.image = [[LinphoneManager instance] getImageFromAddressBook:lUserName]; + [mss release]; + } else { + [addressLabel setText:@"Unknown"]; + //TODO + //imageView.image = nil; + } + + + NSMutableString* msDuration = [[NSMutableString alloc] init ]; + int duration = linphone_call_get_duration(call); + [msDuration appendFormat:@"%02i:%02i", (duration/60), duration - 60 * (duration / 60), nil]; + [timeLabel setText:msDuration]; + [msDuration release]; +} + @end diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib new file mode 100644 index 000000000..9b55b8c9e --- /dev/null +++ b/Classes/LinphoneUI/UICallCell.xib @@ -0,0 +1,4744 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUIImageView + IBUIView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 288 + + + + 292 + {320, 63} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + champ-courbe-autres-numeros.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + -2147483356 + {320, 68} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + champ-saisie-numero.png + + + + + + + 292 + {{10, 0}, {206, 51}} + + + + _NS:9 + NO + NO + 7 + NO + IBCocoaTouchFramework + 0102030405 + + 10 + + 549453824 + {256, 256} + + + + + + TU0AKgAEAAh1eIH/cHJ5/3Bzff9vcXX/bnB3/3Byef9vcXX/bG51/2xudf9ucHf/cHN9/2dqdP9ucXv/ +cHJ5/3Bzff9qbHP/b3F1/3N1fP9sbnX/am13/2ptd/9sbnX/am13/3l7gf91d33/bG95/2xudf9sb3n/ +bG95/2dqdP9qbXf/c3V8/3Bzff93eoP/bG51/3Bzff9sbnX/dXd9/2dqdP9qbHP/bG51/2psc/9sb3n/ +am13/2ptd/9sb3n/bG51/3V3ff97fYP/YmVu/25xe/9sb3n/c3Z//2psc/9zdXz/cHN9/2dqcf9qbHP/ +YmVu/2dqdP9nanH/am13/2xvef91eIH/Z2p0/25xe/91d33/bG51/25wd/92eHz/dXd9/29xdf9ucHf/ +eHl9/2xudf9ucHf/bG95/3Bzff9sb3n/bnF7/3l7gf9zdn//c3Z//3N2f/91eIH/c3V8/3Byef9nanT/ +bnB3/3Byef91d33/dHZ8/2psc/9sbnX/Z2p0/3N1fP9qbXf/cXN6/2psdf9wcnv/dnd9/25xe/9ucHf/ +bnB3/2ptd/92eH//a254/3Fzev9sb3n/cHJ5/25wd/9ucHf/cHN9/25wd/9wcnn/dnh8/2xudf93eX// +dXd9/2dqdP9ucXv/dXd9/3N2f/9zdXz/Z2px/2xudf9ucXv/am13/3Bzff9zdXz/cHN9/2psc/9qbXf/ +bG51/2Jlbv9qbXf/aGp0/2hqcP9rbnX/cnV//29yfP9ucXv/bnF7/25xe/9zdn//bXB1/2xvef9qbXb/ +Zmly/2Jlbv9kZ3H/Zmhu/2Rncf9kZ3H/Zmlz/2Zpc/9kZ3H/bnB3/2Jlbv9nanT/ZGdx/2Zobv9zdXz/ +ZGdx/2xvef9maXP/foCG/2xvef9ucXv/bG95/25wd/9wc33/b3F1/3l8hv91eIH/cHN9/3N1fP9sb3n/ +d3qD/25wd/9zdn//cHJ5/3Bzff9wcnn/cHN9/3Bzff9ucXv/d3l//2ptd/9ucXv/c3Z//3N2f/9wcnn/ +bnF7/3N2f/9ucHf/cHJ5/3Bzff9sb3n/cHJ5/25xe/9wc33/bnF7/3Byef9zdXz/bnB3/25xe/9zdXz/ +d3l//3N2f/9sb3n/bnB3/3Bzff9sb3n/bnF7/25wd/9wcnn/cHJ5/3Byef9sbnX/c3V8/2psc/9zdXz/ +dnh8/3Byef9kZ3H/am13/25xe/9sb3n/bnF7/25xe/9zdn//Z2p0/2xudf95e4H/Z2p0/2xvef9ucXv/ +bG51/2psc/9ucXv/cHJ5/2psc/9qbXf/Z2px/2ptd/9qbHP/cHN9/2ptd/9sbnX/bG51/3V3ff9wcnn/ +c3V8/3Byef9wc33/d3l//29xdf9zdXz/bnB3/2ptd/9qbXf/Z2px/2Zpc/9kZ3H/am13/2xvef9nanH/ +cHJ5/29xdf9wcnn/Z2px/2xudf9zdXz/b3F1/25wd/9ucHf/bnB3/25wd/9+gIb/eHl9/3N1fP9wcnn/ +cHJ5/3Byef9qbHP/bG51/3Z4fP9wcnn/dXiB/2xudf9ucXv/bG51/3Byef9nanH/ZGdx/2Zpc/9nanH/ +Z2px/2Zobv9iZW7/Zmhu/2Zobv9qbXf/c3Z//1lcZf9maXP/Z2p0/3Byef9kZ3H/bG95/2xvef9qbHP/ +am13/2Zpc/9qbXf/bG51/2xvef9wc33/dXd9/2dqdP9sb3n/dXd9/2dqdP9ucHf/c3V8/3V3ff9qbXf/ +bnF7/3d5f/9ucHf/bG51/2xudf9wc33/bG51/2xudf91d33/bnB3/3Byef9wcnn/cHJ5/29xdf9ucHf/ +Z2p0/3Byef9wc33/eXuB/3d5f/9sb3n/bnF7/2psc/9zdXz/b3F5/29yev9qbHX/bnB4/3d5f/9wcnn/ +bnB3/2xudf9ucHf/dHZ7/25wd/9ucXn/bW92/3Byef9ucHf/bG51/3N1fP9ucXv/cHN9/3V3ff9qbHP/ +dnh8/3V3ff9nanH/bnB3/3V3ff9ucHf/cHJ5/2Zpc/9qbXf/bG95/2xudf9sb3n/dXd9/3Z4fP9vcXX/ +bnF7/25wd/9nanH/c3Z//3Bzff9wcnn/bnB3/3R2ff9ucXr/bnF7/3Bzff9sb3n/dXd9/25xev90dnz/ +dXiA/3V4gP9wcnn/c3Z//3Bzff9ucXv/cHN9/3N2f/9zdn//bG95/3d6g/9sb3n/c3Z//3Bzff9ucHf/ +d3l//2dqcf9qbXf/Z2p0/3d6g/9sbnX/am13/2Zpc/9nanT/am13/2Zobv9zdXz/bnB3/2dqdP9kZ3H/ +ZGZs/3Byef9gY2z/Z2px/2Rncf9maG7/YGNs/2Zobv9kZ3H/Zmhu/2ptd/9gY2z/ZGdx/2Rncf9nanT/ +ZGdx/2psc/9maXP/ZGdx/2Zobv9maG7/YmVu/2Zpc/9qbHP/am13/2psc/9ucXv/cHN9/2xudf9nanT/ +bnF7/3V3ff9wcnn/bnB3/29xdf9zdXz/bG95/3Bzff9sb3n/c3Z//3N2f/91eIH/bnF7/3V4gf9ucXv/ +dXiB/3l7gf9zdn//am13/3Byef9zdn//cHN9/3N2f/91eIH/e36H/3Bzff9wc33/foCG/3V4gf93eoP/ +eXuB/3N2f/9ucXv/dXiB/3V3ff9vcXX/c3V8/25wd/91d33/c3V8/3d5f/9wc33/cHJ5/25wd/93eX// +c3Z//3Bzff9ucXv/cHN9/3V3ff9vcXX/c3V8/25wd/9vcXX/bnB3/2xvef9nanT/Zmhu/2ptd/9sb3n/ +Zmlz/3Byef9tb3P/bnF7/2xudf9ucHf/dXd9/2xvef9sb3n/bG95/25xe/9ucXv/e36H/3l7gf9zdn// +c3Z//3V4gf93eoP/c3Z//3N2f/9+gYr/eXyG/4GDiv9wc33/d3qD/3N1fP93eX//cHJ5/3Bzff9wc33/ +bnF7/25xe/9ucHf/b3F1/3Byef9ucXv/eXuB/36Ahv9nanT/c3Z//3Byef93eX//bW9z/3Z4fP91d33/ +bnB3/25xe/9nanT/bG95/25wd/9ucXv/dXiB/3l8hv9ucHf/c3Z//3V4gf9ucHf/dXiB/3N2f/91d33/ +am13/29xdf91d33/bnB3/2xvef9ucXv/d3qD/25xe/9wcnn/c3Z//25wd/9ucHf/cHJ5/3V3ff9vcXX/ +cHJ5/2xudf9vcXX/bG51/3Byef9ucXj/aGty/21vc/9nanT/cHN9/25wd/9vcnr/a212/21wev91d33/ +am13/2xudf9maXP/am13/3R2e/9tb3b/bnF6/2xudf9wcnn/am13/2xudf9ucXv/bG95/25xe/9wc33/ +ZGdx/3Byef9ucHf/YmVu/2psc/9wc33/bnF7/2ptd/9maG7/bW9z/25wd/9sbnX/c3V8/3d5f/91d33/ +b3F1/25xe/9ucXv/Z2p0/3V3ff9wc33/bnF7/21vdv9zdnz/cHJ5/25weP9zdXz/bnF7/3l7gf9xc3r/ +d3mA/3d5f/9zdX3/b3F1/3N1fP9sbnX/bG51/25wd/9sbnX/cHJ5/2psc/92eHz/amxz/3Bzff9ucHf/ +bW9z/3h5ff9nanH/bG51/2Jlbv91eIH/amxz/2Zpc/9iZW7/YmVu/2dqdP9maG7/c3Z//3N1fP9qbXf/ +Z2p0/2dqdP91eIH/ZGdx/2xudf9nanT/am13/2ptd/9ucXv/bnF7/21vc/91eIH/Zmlz/25wd/9wcnn/ +bnB3/25wd/9vcXX/cHJ5/21vc/9sbnX/bG95/2dqdP9sbnX/bG51/2xvef9sbnX/bnF7/25xe/9nanT/ +bnF7/3Bzff91d33/cHN9/2ptd/9qbHP/bnF7/2Zpc/9qbXf/YmVu/2ptd/9qbHP/bG95/2Rncf9ucXv/ +ZGdx/25xe/9zdXz/bG95/2Rncf9tb3P/bG95/25wd/91d33/dXiB/3t9g/9ucHf/c3V8/3t9g/9ucXv/ +dXiB/3d5f/9wcnn/bnF7/3N2f/95e4H/cHN9/3V4gf9ucXv/d3qD/3V4gf93eX//c3Z//3N1fP9zdXz/ +d3l//3Bzff9ucXv/bnF7/3N1fP9zdXz/bG51/2xvef9nanH/Z2px/2dqdP9qbHP/YmVu/2BjbP9sbnX/ +bG51/2Rncf9sb3n/bG51/2ptd/9maXP/Z2px/25xe/9qbHP/Zmlz/2Zpc/9qbHP/Z2p0/3V4gf91d33/ +cHN9/25wd/9sb3n/am13/2Zpc/9sb3n/dXd9/3Bzff91eIH/bW9z/25xe/9sbnX/c3V8/21vc/9sbnX/ +cHN9/2ptd/9qbXf/bnF7/2ptd/9sbnX/bG51/3Byef93eX//ZGdx/2xvef9ucXv/dXd9/2xudf92eHz/ +dXd9/25wd/9sbnX/amxz/2xvef9vcXX/bnB3/3Bzff93eoP/bG95/3Bzff9zdn//bG95/3N2f/9wc33/ +dXiB/25xe/9zdXz/e32D/3Bzff9ucHf/bnF7/3V3ff9vcXX/b3F1/3N1fP9tb3P/bG51/3Byef9zdXz/ +bW9z/3Byef9nanH/amxz/2psc/9ucHf/bnB3/2psc/9sbnX/amxz/3V3fP9ucHj/bW93/2psdf9vcnr/ +dXd8/25wd/9qbXf/Z2p0/25xe/9zdoD/bXB6/3J0fP9wcnf/c3V8/29xdf9ucHf/bnF7/3Byef9zdXz/ +cHN9/2ptd/91d33/eHl9/2psc/9zdXz/dnh8/3N1fP9ucXv/Zmhu/29xdf9ucHf/bnB3/25wd/92eHz/ +cHJ5/2xudf9wcnn/bG95/2Rncf9wc33/bnF7/2ttdP9maXP/bnF5/2lsdf9laHL/am13/2ptd/9zdXz/ +bm92/3R3fv91d33/bnB3/21vc/9zdXz/bW9z/3Byef9ucHf/bnB3/3N1fP9nanH/d3l//25wd/97fYP/ +c3Z//3Bzff97fYP/bnF7/21vc/9maG7/eXuB/2ptd/9qbXf/ZGdx/2Zobv9nanT/Z2px/3N2f/9wcnn/ +am13/2ptd/9qbXf/d3qD/2Rncf9qbXf/Z2p0/2xvef9qbXf/Z2p0/2ptd/9maXP/d3l//2Rncf9qbXf/ +bnB3/2ptd/9qbXf/bG51/25xe/9tb3P/bnB3/25wd/9qbHP/bG51/2xudf9qbXf/bG51/3N1fP9zdXz/ +bG51/3N1fP91d33/dXd9/25xe/9sbnX/bW9z/3Bzff9maXP/bG51/2Rncf9nanT/Z2px/2ptd/9nanT/ +bnF7/2dqdP9wc33/cHJ5/2psc/9dYGr/bG51/2ptd/9sb3n/c3V8/2ptd/91eIH/bG51/2ptd/9zdn// +am13/25xe/9sb3n/Z2p0/2psc/9nanT/bG95/2xudf9ucXv/amxz/2xvef9sb3n/cHN9/2dqcf9maXP/ +Zmlz/25xe/9sb3n/am13/2ptd/9nanT/d3l//25xe/9zdn//bnB3/25xe/9wc33/cHN9/25xe/9qbXf/ +cHJ5/3Bzff9sb3n/cHN9/25wd/9wcnn/bnB3/29xdf94eX3/cHN9/25wd/9wc33/bnB3/25xe/97fYP/ +dXiB/3V3ff9sb3n/c3V8/3Byef9sbnX/c3V8/3V3ff9ucXv/c3V8/2psc/9ucXv/am13/3N1fP9sbnX/ +bG51/3V3ff9ucHf/cHJ5/3Byef9sb3n/bnB3/25wd/92eHz/gIKG/25wd/91d33/c3V8/3d5f/9ucHf/ +dnh8/3Z4fP9ucHf/bG51/2xudf9sbnX/bG51/2ptd/9sb3n/dXiB/2Zpc/9sb3n/Zmlz/2Jlbv9qbXf/ +Z2p0/2dqdP9iZW7/YGNs/2xvef9kZ3H/YGNs/2Zpc/9kZ3H/Zmhu/2Jlbv9qbXf/ZGdx/2Zpc/9qbXf/ +bnF7/2xudf9sb3n/Zmlz/2ptd/9sbnX/am13/21wef9laHH/am13/2dqdP9zdXz/bW92/25weP9rbnj/ +b3F6/3N2fv9ucXX/bG51/2dqcf9sb3n/b3J8/2xud/9ucXr/bW9z/25xe/9ucHf/bnB3/3Byef9ucHf/ +dXd9/3N1fP9sbnX/cHJ5/3V3ff9kZ3H/am13/3N1fP9wcnn/bG95/2Jlbv9nanT/am13/2ptd/9qbXf/ +d3l//25xe/9qbXf/bnF7/2ptd/9iZW7/am13/2ptd/9nanL/Z2ly/29xef9ucHf/amxz/3N1fP9wcnn/ +cHN9/3Byef9ydX7/dXd9/29xdv9rbnj/cHJ5/25wd/9wc33/bnB3/25wd/9zdXz/amxz/3d5f/9wcnn/ +d3l//29xdf9wcnn/eXuB/2xvef9vcXX/Z2px/3t9g/9sb3n/cHN9/2xvef9ucHf/cHJ5/25xe/9+f4P/ +dXd9/3Byef9qbXf/bG51/35/g/9qbHP/cHJ5/2xvef91d33/bnB3/25xe/9zdn//bG95/3l7gf9maG7/ +bnB3/2xvef9qbXf/am13/2psc/9qbXf/bG51/2psc/9sbnX/Zmlz/2Zpc/9nanH/Z2px/2Rncf9qbXf/ +Zmlz/2Jlbv9nanT/bG95/2xvef9kZ3H/Zmhu/2Jlbv9nanT/YGNs/2Rncf9dYGr/ZGdx/2Rncf9qbXf/ +ZGdx/2xvef9iZW7/Z2p0/2ptd/9maG7/XWBq/2psc/9nanT/am13/3N1fP9ucXv/eXyG/2ptd/9nanT/ +dXd9/25wd/9zdXz/cHJ5/3Byef9vcXX/bnF7/3Bzff9wcnn/eXuB/3N1fP91eIH/dXiB/3l8hv9zdXz/ +cHJ5/25xe/95e4H/d3qD/3N2f/9zdn//cHN9/3l7gf9zdXz/bnF7/25wd/9wc33/cHN9/3N2f/9sb3n/ +bG95/3Byef9wc33/bG95/25xe/9ucXv/cHJ5/25wd/9ucHf/eXuB/3N2f/9ucHf/bG95/25wd/9wc33/ +d3qD/3d5f/91d33/bG51/3Byef9sbnX/amxz/3N1fP94eX3/dXd9/3V4gf9ucHf/cHJ5/3Byef92eHz/ +bG95/3Bzff93eoP/c3Z//3N2f/9zdXz/bnB3/25wd/9zdXz/eHl9/3+Bh/9ucHf/dnh8/3Byef93eX// +bnB3/3d6g/95e4H/bnB3/3Byef9sbnX/bnB3/2psc/9qbXf/am13/3l8hv9maXP/bnF7/2psc/9kZ3H/ +bnF7/2xvef9ucXv/amxz/2ptd/91d33/bG51/2psc/9wc33/cHN9/2xudf9maXP/cHN9/2dqcf9nanT/ +amxz/2dqdP9sbnX/am13/2Zpc/9sb3n/bG51/2xvef9sbnj/ZWhy/2dqdP9nanH/bnF7/2ttdf9rbnb/ +a252/29xeP90dnz/am13/2ptd/9nanH/cHJ5/3N1fP9tcHj/bnF6/2dqdP9qbHP/Zmhu/2psc/9nanT/ +amxz/2dqdP9qbXf/YGNs/2dqdP91d33/YmVu/2xudf9sb3n/am13/2xudf9iZW7/am13/2xvef9ucXv/ +bG51/3d5f/9ucXv/am13/3Byef9ucHf/ZGdx/25xe/9sb3n/am13/2lsdP9wcnv/b3J7/21vd/9zdXz/ +bnB3/3Bzff9rbXT/a254/25xe/9rbXX/bW9z/25wd/9tb3P/b3F1/2xvef9wcnn/c3V8/2ptd/93eX// +bnB3/3V4gf9ucXv/cHJ5/3d6g/9qbXf/bG51/2Jlbv91eIH/am13/25xe/9maXP/amxz/2ptd/9qbXf/ +e32D/3N1fP9qbXf/bG51/2psc/91eIH/YGNs/2Zpc/9kZ3H/Z2p0/2Zpc/9nanH/bG95/2Rncf9zdXz/ +YGNs/2Zpc/9nanT/amxz/2Zpc/9qbHP/bG95/2xudf9qbHP/bG51/2Zpc/9nanT/amxz/2ptd/9maXP/ +cHN9/25xe/9maXP/am13/3Bzff91d33/bG95/2xvef9tb3P/dXd9/25wd/9ucHf/Zmlz/25wd/9tb3P/ +c3V8/21vc/92eHz/bnB3/3h5ff94eX3/bG51/2dqcf9sb3n/bnF7/25xe/9zdXz/cHJ5/36Ahv9wc33/ +c3V8/3l7gf9zdXz/bnF7/25xe/9sbnX/bG51/3N1fP9zdXz/b3F1/3N1fP9ucHf/c3V8/3Byef91d33/ +b3F1/2xudf9sb3n/dnh8/3Z4fP9zdXz/cHN9/3Bzff94eX3/b3F1/3Bzff9qbHP/bnB3/2xvef9wc33/ +ZGdx/2dqdP9nanT/am13/2ptd/9ucHf/cHJ5/3Byef9sbnX/bG51/3V3ff92eHz/amxz/25xe/9ucHf/ +cHN9/3d5f/93eX//c3V8/21vc/9zdXz/bW9z/2xudf9zdn//d3qD/3V4gf95e4H/bnF7/3N2f/91eIH/ +e32D/3Byef91eIH/eXuB/3d6g/93eoP/d3qD/3Bzff9wc33/bnF7/3V4gf+Bg4r/bG95/3V3ff9wc33/ +eXuB/25xe/97fof/eXuB/3N1fP9zdn//bG95/3V4gf9wcnn/d3qD/3V4gf9/gYf/cHJ5/3d6g/9wc33/ +bG95/3V4gf9zdn//dXiB/3N1fP9zdXz/eXyG/3V4gf9zdn//e32D/3l7gf9zdn//c3V8/3d6g/9ucHf/ +bnF7/2xvef9wc33/bG95/25xe/9qbXf/cHJ5/25wd/9wcnn/cnR6/21vdv9sb3n/bnB3/3Bzff9tcHr/ +cXN7/25wd/9vcXr/bnB6/2xudf9sbnX/Z2px/3V3ff9ydX7/b3J8/2tueP9rbXT/am13/2xudf9sbnX/ +bG51/3Byef9zdXz/cHJ5/2RmbP9ucHf/dXd9/2Rncf9qbXf/bG95/2dqdP9sbnX/YmVu/2ptd/9qbXf/ +bG95/2xudf91d33/bG95/2xudf9zdXz/bG51/2Zobv9wcnn/cHJ5/2xvef9rbnf/c3V+/3F0fv9sb3n/ +c3V8/3N1fP9zdXz/bnB0/29xeP90dnz/bW94/3Byef9wc33/b3F1/25wd/9tb3P/cHJ5/3Byef9qbHP/ +dXd9/2ptd/91d33/amxz/2xudf9zdXz/YmVu/25wd/9nanH/eXuB/25wd/9ucHf/bnB3/25wd/9wcnn/ +b3F1/36Ahv91d33/bnB3/2xudf9tb3P/fn+D/2psc/9sbnX/bnB3/25xe/9sbnX/amxz/25xe/9nanT/ +d3l//2Rncf9sbnX/bnB3/21vc/9nanH/b3F1/3Bzff9ucHf/bnB3/25xe/9sb3n/c3V8/3Byef91d33/ +b3F1/3h5ff9zdXz/bG51/3Byef91d33/dXiB/3V4gf9wc33/cHN9/3N2f/9sb3n/bnF7/2dqdP9wcnn/ +bW9z/3N1fP9sbnX/cHN9/2ptd/91d33/dXd9/2xudf9iZW7/am13/2ptd/9qbXf/bnF7/3Byef9zdn// +bnF7/25xe/9zdn//cHN9/25xe/9ucXv/bG51/2ptd/9sb3n/bnF7/2ptd/9sb3n/bnB3/25wd/9wcnn/ +dXd9/2xudf9maXP/Z2p0/3Z4fP9zdXz/dXd9/3N1fP9ucHf/dnh8/2ptd/9ucXv/ZGdx/2psc/9maXP/ +am13/2Jlbv9kZ3H/ZGdx/2Rncf9iZW7/Zmlz/2Zpc/9qbXf/ZGdx/2dqcf9sb3n/bnF7/2Rncf9qbXf/ +amxz/25xe/9zdXz/dXd9/2xvef9sbnX/cHN9/21vc/9qbHP/dXd9/3V3ff91d33/eHl9/25wd/9vcXX/ +bnB3/3Z4fP9ucHf/c3Z//3Z4fP91d33/cHJ5/3N1fP9ucHf/bnB3/25wd/91d33/f4KM/3Byef9zdn// +bnF7/3d5f/9sb3n/e32D/3h5ff9ucHf/cHN9/2ptd/9zdn//bG95/3Bzff9wcnn/e36H/25wd/9wc33/ +bG95/2ptd/9zdn//dXiB/3V3ff9sb3n/bnB3/3d6g/9ucXv/bnB3/3N2f/9zdn//bnB3/2xudf9wcnn/ +bW9z/29xdf9ucHf/bnB3/2xvef9wcnn/cHN9/3Bzff9wcnn/c3Z//3N2f/9xc3r/cHJ5/3N2f/93eoP/ +cHN9/3h6gP9zdXr/d3l//3h7hP9zdn//cHN9/2dqdP93eoL/dnmB/3N2fv9wcnr/bnB3/25wd/9vcXX/ +cHJ5/25wd/91d33/dXd9/3N1fP9maG7/bnB3/3l7gf9maG7/bG51/2ptd/9sbnX/amxz/2Jlbv9sbnX/ +cHN9/2ptd/9nanH/c3V8/2dqdP9nanH/Zmlz/2Zobv9ZXGX/ZGdx/2Zpc/9iZW7/YmVt/2xud/9sb3f/ +a210/29yef9wcnn/dnh8/29xdf9tcHr/bnF7/2Zpcv9naXD/Z2pz/2Jlbv9kZmz/Zmhu/2dqdP9nanT/ +ZGdx/25wd/9maXP/c3V8/2psc/9maXP/cHJ5/2Jlbv9wcnn/bnF7/3+Bh/9zdn//dXiB/3N1fP9wc33/ +cHN9/2xvef97fYP/cHN9/2xvef9sb3n/cHJ5/3+Bh/9sb3n/cHN9/3Byef9zdn//c3V8/3Byef9zdn// +bG95/3t+h/9sb3n/dXiB/3d6g/9wcnn/am13/3Byef9wc33/cHJ5/25xe/9zdn//cHJ5/3l7gf91eIH/ +eXyG/3d6g/95fIb/d3qD/3Bzff91eIH/d3l//3l8hv91d33/cHN9/2xvef9wc33/am13/3Byef9sbnX/ +cHJ5/29xdf91d33/bG95/3Bzff9ucHf/d3qD/3h5ff9sbnX/Zmlz/2xvef9wcnn/cHJ5/3Byef91d33/ +dXiB/3d5f/9wc33/e36H/3l7gf9wc33/c3Z//25wd/9wc33/d3qD/3Bzff9wcnn/cHN9/25xe/9wc33/ +c3V8/3h5ff9vcXX/amxz/2psc/92eHz/cHJ5/3Bzff9ucXv/bG51/3V4gf9ucXv/c3V8/2dqcf9sbnX/ +cHJ5/3N1fP9qbHP/bG51/29xdf9zdXz/bW9z/2xudf9wcnn/cHJ5/2xudf9sb3n/c3V8/3Z4fP9sb3n/ +cHN9/25xe/9zdn//dXd9/3d5f/9wc33/bG95/3N2f/9ucXv/bnB3/3d5f/95e4H/d3l//3d5f/9sb3n/ +cHJ5/29xdf92eHz/bnB3/3N1fP92eHz/dXd9/3N1fP9wcnn/b3F1/2xudf9wc33/dXd9/4CChv9tb3P/ +bnF7/2xudf91d33/bW9z/3d5f/92eHz/bW9z/2xudf9nanH/cHN9/2xvef9wcnn/bnB3/3d5f/9ucHf/ +cHN9/2xvef9sb3n/dXd9/3N2f/91d33/bnB3/25wd/95e4H/bG95/25wd/9wc33/dnh8/2xudf9qbHP/ +bnB3/21vc/9sbnX/bG95/2ptd/9ucHf/bnB3/25wd/9wcnn/bW9z/3N1fP9xc3r/a253/2psc/9nanT/ +bnF7/2dqdP9vcnz/aWx2/29xev9sb3n/amxz/2xudf9iZW7/cHN9/3R2fP9xdH3/bW93/2hrcv9sb3n/ +bG51/2xvef9sbnX/dXd9/3V3ff9wcnn/amxz/2xudf93eX//Z2px/2ptd/9qbXf/am13/2xvef9maG7/ +bW9z/25wd/9wcnn/b3F1/3N1fP9sbnX/bG51/2xvef9wcnn/Zmhu/2xvef9qbXf/Zmlz/2Vocv9sb3n/ +cXR7/2xvef9zdXz/c3V8/3V3ff9ucHT/bnB1/3R2fP9sb3j/b3F2/21vdf9tb3P/bG51/25wd/9zdXz/ +c3V8/2psc/93eX//am13/3d5f/9sbnX/am13/3d5f/9sbnX/bG51/2ptd/97fYP/dXd9/3Byef9vcXX/ +cHJ5/2xvef9ucHf/eXuB/2xvef9qbXf/am13/2xudf9+gIb/amxz/3Byef9ucHf/cHJ5/25wd/9ucHf/ +bnB3/2Zpc/91d33/Z2px/3N2f/9wcnn/bnB3/2psc/9sb3n/cHN9/3N1fP9zdn//dXiB/3Byef95fIb/ +dXiB/3d6g/93eoP/e36H/3l8hv9wc33/dXiB/3l7gf9+gYr/foCG/3d6g/93eoP/d3qD/3V3ff93eoP/ +cHN9/3d6g/91eIH/e32D/3Bzff9zdn//bnB3/3l7gf94eX3/c3Z//2dqdP9zdn//c3Z//3N2f/9ucHf/ +d3l//3l7gf97fYP/d3qD/3+CjP97fof/eXuB/3l7gf91d33/dXiB/3l7gf93eoP/cHJ5/3Bzff9ucXv/ +c3Z//25xe/97fYP/c3V8/2xvef9sb3n/d3l//3N2f/9wc33/cHJ5/2xvef9ucXv/am13/3Byef9sbnX/ +bW9z/25xe/9ucXv/ZGdx/2dqdP9qbHP/cHJ5/2dqcf9maG7/bG95/2dqdP9kZ3H/ZGdx/2ptd/9wc33/ +Z2p0/2ptd/9nanH/bG95/3N1fP9wc33/bG95/2xudf9zdXz/am13/2dqdP9ucXv/c3V8/3V3ff91d33/ +bG51/25xe/9sbnX/bG95/2ptd/9ucXv/bnF7/3V3ff92eHz/cHJ5/2xudf9tb3P/c3V8/3d5f/+Agob/ +bW9z/2xvef9sb3n/eHl9/2xudf93eoP/dXd9/2ptd/9qbXf/Zmlz/3N1fP9wcnn/c3Z//3Bzff97fof/ +cHJ5/3N2f/9sb3n/bG51/3V3ff9zdXz/c3V8/25wd/9ucHf/dXiB/25xe/9sb3n/cHN9/3N2f/9tb3P/ +bG51/3N1fP9sb3n/cHN9/3Bzff9sb3n/bnB3/25xe/9ucHf/cHJ5/21vc/91d33/c3V6/21wef9ucHf/ +bnB3/3N1fP9ucHf/cXN7/2xud/9wcnn/dHZ9/25wd/9ucHf/Z2px/3V3ff90dnv/cXR7/25wd/9lZ3D/ +amxz/2xudf9qbXf/am13/3Bzff9ucXv/bnF7/2Zpc/9sbnX/c3V8/2Rncf9maXP/Zmlz/2dqcf9maXP/ +XWBq/2dqcf9nanT/Z2p0/2Zpc/9sb3n/Z2px/2dqcf9qbXf/am13/2Jlbv9qbXf/bG51/2Vocf9oa3T/ +b3J5/3J1f/9tcHr/dHeA/3V4gf97fYP/dXd9/3Z4f/95e4H/bG93/21vdv9tb3b/bG51/2ptd/9tb3P/ +dXd9/3Byef9sbnX/d3l//2xudf92eHz/bG51/2xudf93eX//bG51/2xvef9sb3n/d3qD/3N2f/9ucXv/ +bG95/3Byef9ucHf/bnB3/3d5f/9ucHf/bG51/2ptd/9ucHf/gYOK/2ptd/9zdn//cHJ5/3N2f/9wcnn/ +bnB3/2xvef9qbXf/eXuB/2dqcf95e4H/dXiB/3N2f/9wc33/dXd9/3l7gf91d33/dXd9/3d6g/91d33/ +fX6B/3t9g/9/gYf/foCG/36Ahv97fYP/eHl9/3l7gf9+f4P/gYOK/36Ahv95e4H/d3qD/3N2f/91d33/ +d3qD/3Bzff9wc33/cHN9/3l7gf9zdn//dXiB/3N1fP9/gYf/e36H/3V4gf9sb3n/c3Z//3Bzff9wc33/ +bnF7/3Z4fP9zdXz/dXd9/25xe/93eX//dnh8/3V3ff94eX3/bnB3/25wd/91d33/cHJ5/25wd/9ucHf/ +bnB3/3N1fP9wcnn/dnh8/29xdf9qbHP/bG51/3Z4fP9wcnn/c3V8/25wd/9qbXf/bnF7/25wd/9zdn// +am13/25wd/9zdXz/dXd9/2ptd/9vcXX/bG51/3N1fP9sbnX/am13/3N1fP9ucXv/bG51/2xudf9wcnn/ +eHl9/2ptd/9zdXz/c3V8/3V4gf93eoP/eXuB/3l7gf9zdXz/e32D/3V4gf9zdXz/d3qD/3t9g/9+gIb/ +foGK/3N2f/97fYP/dXiB/3d6g/9wc33/dXiB/3N2f/91eIH/c3Z//3Bzff9ucHf/bnB3/3N1fP92eHz/ +gIKG/2xvef9ucHf/bnB3/3Z4fP9qbXf/c3Z//3N1fP9qbHP/am13/2BjbP9ucXv/Z2p0/25xe/9wc33/ +dXiB/2xudf9sb3n/bG95/2ptd/9wc33/cHN9/3N1fP9tb3P/am13/3V3ff9qbXf/Z2px/2xvef9ucXv/ +amxz/2Zpc/9sb3n/bG95/25xe/9sb3n/bG51/2xudf9qbXf/Zmlz/2Zpc/9maG7/am13/2tueP9nanT/ +Zmlz/2Zpc/9nanT/Z2lv/2ptd/9maXL/a252/2xvef9qbHP/am13/2Rncf9sb3n/b3J8/3Bze/9sbnT/ +Z2lw/2xudf9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9qbHP/bG95/3l7gf9qbXf/cHJ5/3d6g/9zdn// +c3Z//2ptd/9wc33/dXiB/3d6g/9wcnn/d3qD/3Bzff9wcnn/c3Z//3Bzff9maXP/bnF7/25xe/9sb3n/ +bG95/3N2f/9xdH7/am12/25wd/9ucXv/dXd9/2xudf9tb3b/cnV8/21veP9vcXj/bnB3/25wd/9wcnn/ +bW9z/3N1fP9zdXz/bG51/3d5f/9tb3P/dXd9/21vc/9sbnX/dXd9/2dqdP9maXP/Z2p0/3d5f/9zdXz/ +bnB3/2xudf91d33/bG95/2ptd/93eoP/c3Z//25xe/9sb3n/bnB3/4GDiv9qbXf/bG95/25wd/9ucXv/ +cHJ5/25xe/9ucHf/Z2px/3Z4fP9lZmr/c3V8/25wd/9tb3P/Z2p0/2dqcf9sb3n/amxz/2psc/9maXP/ +YmVu/2xvef9qbXf/bG95/2xvef91d33/bnF7/2xudf9sbnX/c3V8/3V3ff91d33/bG95/2xvef9qbXf/ +am13/2xvef9qbHP/cHJ5/2xudf91d33/bG51/3N1fP9vcXX/e32D/3d6g/9wc33/Z2p0/3Bzff91d33/ +c3V8/25wd/9zdn//d3l//3d5f/91d33/dXiB/3d5f/93eX//eXuB/25xe/9wc33/dXiB/3V4gf9zdn// +d3qD/35/g/97fYP/dXiB/3t+h/9zdn//bnF7/3Byef93eX//cHN9/3N2f/9wc33/bnB3/3Bzff9qbXf/ +c3V8/2dqcf9ucHf/c3V8/3N1fP9sbnX/bG51/2xudf9wc33/bG95/2ptd/9zdXz/c3V8/2psc/9sbnX/ +bnF7/3Z4fP9sbnX/bG51/2psc/9ucXv/c3V8/3N1fP9wcnn/bG51/3V3ff9sbnX/Z2p0/3Byef9wc33/ +dnh8/3d5f/9ucHf/c3Z//2xvef9zdXz/bG95/25xe/9ucHf/c3Z//3N2f/9wc33/bnB3/25wd/9zdn// +eXuB/4GDiv9ucHf/bnF7/3Bzff95e4H/cHN9/3d6g/93eoP/cHJ5/3N2f/9maXP/dXd9/3Bzff91d33/ +c3Z//3l8hv9ucHf/cHJ5/25xe/9ucHf/dXd9/3V3ff92eHz/b3F1/25wd/91d33/bG95/2xvef91eIH/ +dXiB/25xe/9sb3n/c3Z//3Bzff9wc33/cHN9/2xvef9zdXz/cHJ5/25wd/9wcnn/b3F1/3N1fP9zdXr/ +bW92/2xudf9tb3P/cHJ5/2xudv9tb3f/aWx1/25xef9ucXv/Zmhu/2dqdP9kZ3H/bG95/2xvef9vcXr/ +a252/2Vobv9sbnX/cHJ5/2xudf9zdXz/dXd9/2xvef9sb3n/Zmlz/2ptd/9zdXz/YmVu/2psc/91d33/ +cHN9/25wd/9nanH/bnB3/25xe/91eIH/bG95/3V3ff9sb3n/bnB3/3V4gf9ucXv/am13/25wd/9ucHf/ +bG95/29xeP9zdn7/dHd//21vdv9wcnn/cHJ5/3V3ff9qbXf/cHJ6/3d6g/9wc33/bnF6/3F0fv9ucXv/ +bnF7/2xudf9zdXz/cHJ5/2ptd/9zdXz/bG51/3V3ff9sbnX/b3F1/3d5f/9sbnX/amxz/29xdf92eHz/ +cHJ5/3Byef9ucHf/dXd9/2ptd/9maXP/c3Z//25xe/9sb3n/Zmlz/2psc/9/gYf/am13/2ptd/9qbHP/ +am13/21vc/9sbnX/bG51/2psc/93eX//Zmlz/3Bzff9ucXv/bnB3/2xudf9sbnX/bnB3/2xudf9sb3n/ +bnB3/2psc/9zdXz/bnB3/3N1fP9ucHf/eHl9/3Bzff9wcnn/cHN9/3d6g/95fIb/e32D/3V4gf93eoP/ +cHN9/2xvef9wc33/bG95/3V3ff9ucHf/dXd9/25wd/91eIH/bnB3/3l8hv93eX//c3V8/2psc/9zdXz/ +cHJ5/3N1fP9ucHf/c3V8/3N1fP92eHz/cHN9/3V3ff91d33/dXd9/3d5f/9qbHP/bnB3/3V3ff9zdXz/ +b3F1/25wd/91d33/cHJ5/25xe/93eX//bG51/2psc/9sbnX/eHl9/3Byef91d33/bnF7/2xudf91eIH/ +cHN9/3V4gf9kZ3H/bnB3/25xe/93eoP/c3V8/3N1fP9zdXz/eXuB/3N2f/9wcnn/eXuB/3t9g/9ucXv/ +cHJ5/3V4gf93eX//bnB3/3Byef9wcnn/d3l//3Bzff9zdn//c3V8/3Byef91d33/cHJ5/25wd/9zdXz/ +cHN9/3N1fP91d33/bG95/3N1fP9ucHf/c3V8/25wd/9wcnn/bnB3/3N2f/91eIH/c3Z//2xvef9ucXv/ +c3Z//3V4gf+DhYz/dXd9/3V3ff97fYP/f4GH/3t9g/9/gYf/hYeN/3t9g/95fIb/c3Z//36Biv9+gIb/ +foCG/31+gf+Bg4r/dnh8/3l7gf97fYP/dnh8/3t9g/97fYP/eXuB/3Bzff9ucXv/d3l//25wd/9qbHP/ +cHN9/3Bzff9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2dqdP9nanH/Z2p0/2Zpc/9kZ3H/Z2p0/2psc/9nanT/ +bG95/2Nmbv9gY2z/Zmhu/2ptd/9oa3P/bG52/2lsdv9sb3j/bnF7/21vc/9tb3P/Z2px/3Byef9xdHv/ +b3F4/3Byef9oanD/b3F1/3N1fP9ucHf/dXd9/3V3ff9ucHf/bnB3/2psc/9wcnn/dnh8/2Zobv9sbnX/ +dXd9/3N1fP9wcnn/Zmhu/2xudf9sb3n/dXd9/2ptd/9wcnn/b3F1/21vc/9wc33/bG51/2Rncf9qbHP/ +Z2p0/2BjbP9kZ3H/aGt1/2tud/9nanP/bnB4/21vdv91d33/bG51/21vc/9zdn3/a254/21vd/9tcHr/ +am13/2ptd/9sbnX/cHJ5/2xvef9nanT/c3V8/2psc/91d33/bG51/2xvef93eX//Z2p0/25xe/9wc33/ +e32D/3d6g/9zdn//cHN9/3d6g/9zdXz/bnF7/3l8hv9zdn//cHN9/2ptd/9ucHf/f4KM/2xvef9zdn// +cHN9/3Bzff9zdXz/c3Z//25xe/9nanT/eHl9/2dqcf9zdXz/cHJ5/25wd/9sbnX/bG51/29xdf9vcXX/ +cHJ5/3Byef9sbnX/c3V8/3Byef9sb3n/cHN9/3V3ff9wc33/bW9z/2ptd/9ucXv/dXd9/3Z4fP9wcnn/ +cHN9/2ptd/9nanT/cHN9/2psc/9wc33/am13/3Bzff9qbXf/bG95/2xudf93eoP/dXd9/2xvef9qbHP/ +bG95/2xvef9wc33/bG51/2ptd/9ucXv/bnF7/3Bzff9zdXz/dXd9/2xvef93eX//Zmlz/2ptd/9wc33/ +bG95/2ptd/9sbnX/cHN9/3Byef9zdXz/eXuB/3N2f/9qbXf/bnB3/3l7gf9wc33/dnh8/3N1fP9ucHf/ +bnF7/25wd/9zdXz/ZGdx/25wd/9zdXz/c3Z//25xe/9ucXv/cHN9/3d6g/95fIb/c3Z//36Ahv97fof/ +cHN9/3V4gf95e4H/e36H/3V3ff93eX//c3Z//3l8hv9zdn//d3qD/3d6g/9zdn//d3qD/3N2f/9sb3n/ +c3Z//3N2f/91eIH/d3qD/3Bzff9wc33/cHN9/25xe/9ucXv/cHN9/3Bzff91eIH/c3Z//3N2f/9ucHf/ +bW9z/3N1fP91d33/fn+D/25wd/9sb3n/dXiB/3d5f/9ucXv/d3l//3d6g/9zdn//bnF7/2psc/9wc33/ +cHJ5/3V3ff9zdXz/eXuB/2xudf9wcnn/bG95/2xudf91d33/dXd9/25xe/9ucHf/bG95/3V3ff9ucHf/ +Z2p0/3Bzff91d33/bW9z/2dqcf9wcnn/bG95/2ptd/9sbnX/bG51/25xe/9sbnX/am13/2xvef9qbHP/ +bG95/21veP9pa3L/YmVu/2Zobv9sb3n/bG51/2lsdP9oa3X/am12/2hrdf9maG7/Zmhu/1lcZf9maXP/ +bXB6/21wef9tb3f/Z2p0/25xdf9ucXv/bnB3/3N2f/93eX//bnF7/3Bzff9qbXf/c3Z//3d5f/9nanT/ +cHJ5/3N2f/93eX//cHJ5/2psc/9sbnX/bG95/3V3ff9sbnX/bG95/2ptd/9nanT/cHN9/2xvef9maXP/ +bG51/25xe/9kZmz/bG51/2xudv9ucHj/aWx0/25xe/9sb3n/cHN9/2dqdP9qbXf/cHJ4/25wdf9sbnb/ +c3V9/25wd/9wcnn/bG51/3Byef9ucHf/bG51/3V3ff9sbnX/dXd9/2xudf9sbnX/d3l//2dqdP9qbHP/ +b3F1/3Z4fP9zdn//bG95/25wd/91d33/bG95/2xvef97fof/dXiB/3N2f/9ucHf/cHJ5/3+CjP9qbXf/ +bnF7/25wd/9ucXv/cHN9/3N2f/9wc33/am13/3d5f/9nanH/cHJ5/3Byef9sbnX/Z2p0/2dqdP9sbnX/ +amxz/2xudf9nanT/Zmlz/2xvef9qbXf/am13/2xvef9zdXz/cHJ5/21vc/9wcnn/cHJ5/3Z4fP91d33/ +am13/3N1fP9ucXv/bG51/3V3ff9qbHP/cHN9/2ptd/9zdXz/bnB3/3Bzff9sb3n/foCG/3d5f/9ucXv/ +bW9z/3N1fP9zdXz/dnh8/3Byef9sbnX/bG95/3Bzff9wc33/cHN9/3V3ff9wcnn/dXiB/2Rncf9nanT/ +cHN9/2ptd/9qbXf/am13/2dqdP9qbXf/bG95/3N2f/9qbHP/Zmlz/2psc/91d33/bnF7/3Bzff9qbXf/ +Zmlz/2dqdP9sbnX/bnF7/2Zpc/9sbnX/bW9z/3N1fP9wcnn/bnB3/3Byef93eX//c3Z//25wd/91d33/ +eXuB/3Byef9wcnn/dXiB/3t9g/9ucHf/cHJ5/3Byef9zdn//cHN9/3d6g/97fYP/dXiB/3t+h/9zdn// +c3Z//3t9g/95e4H/d3qD/3t9g/9wc33/dXiB/3l7gf9wc33/dXiB/3V4gf9zdXz/d3qD/3l7gf91eIH/ +bnB3/3Byef9wc33/cHN9/3t9g/9vcXX/bnB3/3d5f/9zdn//bnF7/3d5f/91eIH/bnF7/25xe/9qbXf/ +cHN9/25xe/91eIH/cHN9/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3d5f/9zdn//c3Z//3V4gf95e4H/ +cHN9/3Byef93eX//dXd9/2xvef9qbXf/cHN9/25xe/9wcnn/bnF7/25wd/91d33/bnB3/3Byef9zdn// +bnB3/3Bzff9vcnv/b3F1/2dqdP9ucHf/cHN9/25xe/9vcnv/bXB6/29xev9ydX7/bnB3/25wd/9maG7/ +b3F1/3J0ev9tcHr/bW93/2Zpc/9sbnX/am13/2dqdP9ucXv/c3V8/2psc/9sb3n/amxz/2xvef9ucXv/ +ZGdx/2dqdP9ucXv/cHN9/2ptd/9iZW7/Zmlz/2xudf9ucXv/Z2p0/25xe/9sbnX/bG51/3N1fP9wcnn/ +Z2px/2xudf9ucXv/ZGZs/25wd/9vcXj/b3F4/25wd/9wcnn/cHJ5/3h5ff9nanT/bG51/29xeP9sbnX/ +bnB3/3F0fv9sb3n/bG51/2ptd/9ucHf/cHJ5/29xdf9zdXz/bG51/3l7gf9ucHf/bnB3/3d6g/9ucHf/ +bG51/2ptd/9zdn//c3Z//3Bzff9sb3n/c3Z//2dqdP9nanT/eXuB/3N2f/9wc33/am13/29xdf+Agob/ +bG51/25wd/9sbnX/cHJ5/2xvef9ucXv/b3F1/2xudf92eHz/Zmhu/3N1fP9sbnX/Z2p0/2Zpc/9nanT/ +bG51/2psc/9nanH/bG51/2Zpc/9wc33/am13/2ptd/9ucXv/cHN9/2xvef9tb3P/bnF7/25xe/9zdXz/ +dXd9/3Bzff9wc33/bnF7/2Zpc/93eX//bnB3/3V3ff9ucHf/bnF7/2xvef9zdn//cHN9/3+Bh/95e4H/ +c3Z//3Byef9zdn//dXiB/3d5f/9zdn//cHN9/25wd/9zdn//dXd9/3N1fP93eX//cHJ5/3d5f/9maXP/ +am13/3N1fP9sb3n/Z2px/2psc/9qbXf/Zmlz/2dqdP9wcnn/Zmlz/2BjbP9nanH/bG95/2ptd/9sb3n/ +bG95/2Jlbv9qbXf/amxz/2ptd/9iZW7/Zmlz/2Zobv9sb3n/am13/2ptd/9tb3P/dXd9/3N1fP9ucHf/ +dXd9/3Z4fP9tb3P/bW9z/3N1fP91d33/am13/2xudf9sbnX/bnF7/2ptd/9wc33/dXd9/3Byef93eX// +c3V8/2psc/94eX3/dnh8/3Z4fP91d33/bG51/25xe/9wc33/bG51/25xe/9sb3n/bG51/25xe/91d33/ +bG51/25wd/9vcXX/c3V8/3Byef97fYP/bnB3/21vc/9zdXz/c3V8/25wd/91d33/dXd9/3Byef9wcnn/ +amxz/2xudf9sb3n/cHN9/3Bzff91d33/bG51/2xvef9sbnX/bnB3/3N1fP9zdn//c3V8/25wd/9zdXz/ +dXd9/25xe/9sb3n/dXiB/3N2f/9sb3n/bG95/25xe/9wcnn/c3V8/2xudf9sbnX/dnh8/29xdf9ucHf/ +cHN9/3Byef9zdn//c3Z//3F0fv9sb3n/bG95/3V3ff9ucHj/b3F4/2ptdf9rbnf/cXR+/2ptd/9qbXf/ +YmVu/2xvef9wcnn/b3F6/3Bye/91eID/Z2px/3N1fP9vcXX/Z2px/2psc/97fYP/cHJ5/2psc/9zdXz/ +bG95/25xe/9wc33/c3V8/25xe/9ucXv/c3V8/25xe/9nanT/cHN9/2xudf9qbXf/bG51/2xvef9gY2z/ +c3V8/2xvef9qbHP/dXd9/2Zpc/9nanH/Zmly/2dqdP9pbHT/bG95/3J1fv93eX//bG95/3Byef9ucXv/ +bG50/21wev9kZ3D/Z2lz/2dqdP9gY2z/ZGdx/2Zobv9iZW7/Zmhu/2Jlbv9maXP/Zmhu/2Rncf9sbnX/ +bG95/2Zobv9qbXf/bnF7/2xvef9ucXv/amxz/25xe/9kZ3H/ZGdx/3V3ff9sb3n/bnF7/2Zpc/9tb3P/ +foCG/2psc/9sbnX/bG51/3Bzff9qbXf/bG95/2xudf9maXP/bG95/11gav9sb3n/amxz/2Rncf9kZ3H/ +Z2p0/2xudf9sbnX/bG51/2ptd/9maXP/c3V8/2ptd/9sb3n/bnF7/25xe/9sb3n/bG51/2xvef9ucXv/ +dnh8/3h5ff9zdn//dnh8/3V3ff9qbXf/eXuB/3Byef93eX//bG95/2xvef9ucHf/c3Z//25xe/9+gIb/ +eHl9/3N1fP9wcnn/c3Z//3V4gf93eX//cHN9/25xe/9sb3n/dXiB/3l7gf9ucXv/dXiB/25wd/93eoP/ +Zmlz/25wd/93eX//bnF7/2ptd/9sbnX/cHJ5/3Byef9ucXv/dXd9/3N1fP9nanH/bW9z/3N1fP9wc33/ +c3V8/25xe/9nanT/bnB3/25xe/9zdn//bG95/25wd/9sb3n/cHN9/25wd/9ucHf/am13/3h5ff9zdn// +bnF7/3l8hv95e4H/bnB3/25wd/93eX//eXuB/3Byef9ucHf/c3V8/3V4gf93eoP/d3qD/3V4gf91eIH/ +d3qD/3V4gf9wc33/e36H/3t9g/97fof/eXyG/3Bzff95e4H/d3qD/25wd/9wc33/bnF7/3Byef91eIH/ +d3qD/3Bzff9ucHf/bnB3/3Bzff9wc33/e32D/2xvef9tb3P/dXd9/3V3ff9wcnn/eXuB/3h5ff9wcnn/ +bnF7/2ptd/9ucHf/bnB3/3V4gf93eoP/e32D/3N1fP9zdn//c3Z//2ptd/9wc33/cHN9/3N2f/9ucXv/ +c3Z//3V3ff9sb3n/bnB3/3N2f/91d33/bnB3/2psc/9sbnX/cHJ5/2ptd/9sbnX/Zmlz/3Bzff9qbHP/ +Z2px/2dqcf9maXP/am13/2lrdP9oa3L/Z2p0/2psc/9wc33/bW9z/21vdv9sbnT/aWxz/3N1fv9ucXv/ +bG95/2dqdP9ydX//dHd//3Byef9wc3r/dnh+/2Zobv9wc33/cHJ5/2dqdP9nanT/d3qD/2xvef9qbXf/ +dnh8/25xe/9zdn//cHN9/3V3ff9wcnn/cHJ5/3N1fP9wcnn/amxz/3Bzff9qbXf/bnB3/25wd/91d33/ +Zmhu/3N1fP9zdXz/am13/3d6g/9nanT/Z2p0/2hrdP9oa3L/a212/2tueP9tcHn/dXd9/2xudf9vcXX/ +bnB3/25wdv90dn3/am12/2ptd/9wc33/bG51/2xudf9sbnX/bG51/2ptd/9qbHP/cHJ5/25wd/9ucHf/ +bG95/3Bzff9gY2z/bG51/25wd/9ucXv/bnF7/2ptd/9ucXv/am13/2Rncf91d33/c3V8/3N1fP9nanH/ +b3F1/36Ahv9ucHf/bG95/29xdf9zdXz/bnB3/2xudf9ucHf/bW9z/3N1fP9maG7/bnF7/25xe/9maXP/ +ZGdx/2xudf9sbnX/b3F1/3Byef9ucXv/bG51/3N1fP9wc33/cHN9/3Bzff9wc33/bnB3/2ptd/9ucXv/ +c3Z//3l7gf93eX//d3l//3V3ff91eIH/bG95/3l7gf9zdXz/d3qD/2ptd/9wc33/c3V8/3V4gf9wc33/ +f4GH/3d5f/9wc33/cHJ5/3Bzff9zdn//dXd9/25wd/9tb3P/am13/25xe/9zdXz/am13/3V3ff9ucHf/ +d3qD/2psc/9sb3n/eHl9/3Byef9ucHf/bnB3/3V3ff9wcnn/c3V8/3V3ff9wcnn/amxz/25wd/9wcnn/ +c3V8/3N1fP91d33/bG51/3Bzff9zdn//dXiB/2ptd/9zdXz/cHN9/3V4gf9zdn//c3Z//3Bzff97fYP/ +c3Z//2xvef95fIb/d3l//2xvef9wcnn/d3l//3d6g/9zdXz/c3V8/3N1fP9zdn//cHN9/3Bzff93eoP/ +dXiB/3t+h/95e4H/bnF7/3l8hv93eX//eXuB/3l7gf9ucHf/d3l//3d6g/9zdXz/eXuB/3d6g/9zdn// +eXyG/3d6g/91eIH/c3V8/3N1fP9zdn//dXiB/3l8hv9wc33/bG95/3V3ff91d33/cHJ5/3d5f/94eX3/ +cHJ5/25wd/9nanT/bG95/25xe/91d33/dnh8/3V3ff9sbnX/am13/25wd/9nanH/cHJ5/3Byef9wc33/ +bnF7/3Bzff91eIH/cHN9/2xvef9zdn//dXd9/25xe/9qbXf/bnF7/3N2f/9sb3n/bnB3/2dqdP91d33/ +b3F1/25wd/9ucHf/amxz/25wd/9ucHj/a254/2ptd/9tb3P/cHJ5/2ptd/9qbXf/Z2pz/2Vocf9sb3n/ +Zmhu/2dqdP9gY2z/Z2p0/2hrdf9oanD/aWx2/3BzfP9iZW7/bnF7/2ptd/9maXP/Zmlz/3V4gf9qbXf/ +Z2p0/25xe/9qbXf/bnF7/25xe/9ucXv/bnF7/25xe/91d33/cHJ5/2psc/9ucXv/Z2p0/2dqdP9sbnX/ +bnF7/2Jlbv9ucXv/am13/2psc/9zdXz/Zmlz/2Rncf9nanT/aGty/2xvd/9sbnb/c3V8/3V3ff9sbnX/ +bnB3/2tud/9tb3b/cXN6/21vdv9wcnn/dXd9/2xvef9sb3n/bG95/2xvef9sb3n/bG95/3N2f/9wcnn/ +cHJ5/3Bzff91eIH/Zmhu/25wd/9vcXX/c3V8/3N1fP9wcnn/c3V8/2psc/9qbHP/d3l//3V4gf9wc33/ +cHJ5/3Byef9/gYf/bG95/25wd/9vcXX/c3V8/2xudf9tb3P/am13/2ptd/9wc33/ZGdx/2xvef9ucXv/ +YmVu/2Zpc/9sbnX/Z2p0/21vc/9sbnX/am13/2dqdP9ucXv/bnF7/3Bzff9sb3n/bG95/2ptd/9nanT/ +bG95/2ptd/9zdXz/dnh8/3Z4fP9zdXz/cHJ5/2psc/93eX//am13/3N1fP9sbnX/b3F1/29xdf9wcnn/ +dXd9/36Ahv91d33/c3V8/21vc/9ucXv/cHN9/3N1fP9sb3n/Z2p0/2ptd/9sb3n/dnh8/29xdf94eX3/ +bnB3/3V3ff9nanH/bnB3/3h5ff9wcnn/bnB3/2xvef9zdXz/c3V8/3Byef92eHz/cHJ5/2psc/9sbnX/ +cHN9/3V4gf91eIH/dXiB/2ptd/9ucXv/bG95/3Bzff9qbXf/cHJ5/2xvef9zdXz/bG95/3Byef9ucHf/ +eHl9/3V3ff9qbXf/foCG/3V4gf9tb3P/bW9z/3V3ff91eIH/bW9z/2xudf9nanT/bnB3/2ptd/9sbnX/ +cHJ5/2xudf92eHz/dXd9/2dqdP91d33/bnF7/3N1fP9ucXv/Z2p0/3Bzff9wc33/bG51/2xvef9qbHP/ +Z2px/2dqdP9nanT/am13/2psc/9nanH/bG95/2dqdP9zdn//Zmlz/2Rncf9nanT/bG95/2psc/9wcnn/ +cHJ5/2Zpc/9sbnX/Z2p0/2psc/9qbXf/cHN9/3Bzff93eX//bG51/2ptd/9sbnX/amxz/3N1fP9ucHf/ +cHJ5/3Byef91eIH/dXiB/3V4gf9ucXv/eXuB/3V4gf9ucHf/ZGdx/2xvef9wc33/bnB3/21vc/9nanH/ +dXd9/21vc/9qbXf/am13/2dqdP9sb3n/bW94/2xudv9maXP/amxz/2ptd/9kZ3H/Zmlz/2Nmbv9jZm// +bG94/2dqcf9nanT/YGNs/2xvef9sb3n/amx0/2hrdf9oa3T/Wl1m/2dqdP9nanH/XWBq/2Rncf93eX// +am13/2ptd/9zdXz/bnB3/3Byef9zdXz/c3V8/3Byef9wcnn/dXd9/3Byef9ucHX/c3V8/25wd/9wc33/ +b3F7/3V3ff9naXP/d3l//3N2f/9sb3n/dnh//25wd/9vcXX/bW92/2xudf9sbnX/bnB3/29ye/9wc33/ +Z2px/2psc/9sbnX/amxz/29xev9sbnX/bW92/3V3ff9qbXf/am13/21vef9nanT/bW9z/2Rncf9ucHj/ +bG51/2tud/9rbnf/c3V7/2Zpc/9qbXf/bnB3/3V3ff9ucXv/c3Z//3N1fP9qbHP/Z2p0/3V3ff92eHz/ +cHJ5/25wd/9vcXX/fX6B/2ptd/9qbXf/bG95/3Bzff9sbnX/bG51/2dqdP9qbXf/bnF7/2Jlbv9sb3n/ +bG95/2Rncf9iZW7/amxz/2dqcf9qbXf/amxz/2ptd/9maXP/bnF7/2xvef9sb3n/bG95/3Bzff9sb3n/ +bG51/25wd/9sb3n/dXiB/3l7gf95e4H/c3Z//3V4gf9zdXz/eXyG/3V4gf97fYP/c3Z//3V4gf9wc33/ +e32D/3t9g/+Bg4r/fn+D/35/g/9zdn//e32D/3t9g/97fYP/c3Z//3Byef9wc33/dXiB/3N2f/9ucHf/ +d3l//3Bzff93eoP/am13/25wd/93eX//bG95/3Byef9wcnn/dXiB/3V4gf9ucXv/d3l//3N1fP9qbHP/ +bG51/3N1fP9zdXz/dXd9/3V3ff9qbXf/am13/2ptd/91d33/amxz/29xdf9ucHf/c3V8/2xudf9wcnn/ +bW9z/3V3ff91d33/bG51/3t9g/93eX//bG51/2xudf9zdXz/d3l//3Byef9sbnX/bG51/25wd/9wcnn/ +bnB3/3N1fP9vcXX/dXd9/3V3ff9nanH/d3l//25xe/92eHz/cHJ5/25wd/92eHz/c3V8/2xvef9ucXv/ +bG95/2psc/9ucXv/bnF7/2xudf9vcXX/bnB3/3N2f/9ucHf/e32D/3N1fP9ucHf/dXd9/3N2f/9ucXv/ +dXiB/3V3ff9wc33/bnB3/25wd/9vcXX/bG51/3Byef91d33/eHl9/25wd/9wc33/bnF7/2xvef91eIH/ +cHN9/3V4gf9ucHf/cHJ5/3Byef9wcnn/bG51/3N1fP9ucXv/am13/2Rncf9sb3n/cHN9/21vc/9tb3P/ +amxz/3Z4fP9ucHf/bG95/3Bzff9sb3n/bnF7/25weP9wc33/bG51/2xudf9wcnn/am13/2ttdf9ucHX/ +bG52/3J0e/9sb3n/cHJ5/2Zpc/91eID/bnF7/3BzfP9vcnv/dXd9/2dqcf9zdXz/b3F4/2ttdP9sbnX/ +dXd9/21wd/9rbXX/c3V8/2ptd/9vcnz/bXB6/21wev9tcHr/aWx2/21wev9wcnr/a21y/3Fzev9tb3T/ +cHJ5/3Byef91d33/a210/3d5gv9wc3z/bnF6/3V3ff9ucHf/bW92/25wd/9tb3T/bnB1/21wef9vcnv/ +bnF7/2dqdP9sbnX/amx0/2ttdP9wcnv/cHJ7/29xev96fIL/cHJ6/29xeP93eoL/b3J8/29xef9pbHb/ +b3J8/2ptdv9tcHr/bXB6/29ye/9iZW7/Z2p0/2xudf9sb3n/bG95/2xvef9sb3n/Zmlz/2ptd/9wc33/ +dXd9/2xvef9qbXf/Zmlz/3d6g/9sb3n/Z2p0/2ptd/91d33/bG51/2xvef9nanH/bnB3/3N2f/9qbHP/ +c3V8/3Bzff9qbXf/bnB3/25xe/9sb3n/bnF7/3Bzff9ucHf/bnB3/3Bzff91d33/c3V8/3V4gf9zdn// +cHN9/3Byef9ucXv/bnF7/3N2f/91eIH/e32D/3Bzff9zdn//bnB3/3d5f/9ucXv/dXd9/2ptd/9qbXf/ +bG51/3Byef91d33/d3l//3Bzff9ucHf/bnB3/3N1fP9wcnn/cHJ5/2xvef9qbXf/bG51/2xvef9sb3n/ +Zmlz/3Bzff9qbXf/dXd9/2Jlbv9nanT/d3l//2ptd/9tb3P/bG51/3Byef9zdXz/bG51/3Z4fP9wcnn/ +bG51/2psc/9sb3n/bG95/3V3ff91d33/am13/2ptd/9qbHP/am13/2Zpc/9sbnX/am13/2xvef9qbHP/ +cHJ5/29xdf95e4H/dnh8/2xudf95fIb/e32D/29xdf9sbnX/c3V8/3d5f/9wcnn/bnB3/25wd/9vcXX/ +c3V8/2psc/9ucHf/bW9z/3V3ff91d33/Z2p0/3V4gf9ucXv/c3V8/2dqdP9maXP/bnB3/2ptd/9nanT/ +Z2p0/2Zpc/9kZmz/Zmhu/2dqdP9maG7/ZGdx/2Zobv9maXP/ZGdx/3Bzff9maXP/ZGdx/2xvef9sb3n/ +amxz/3V3ff9wc33/bnF7/2ptd/9qbXf/amxz/2xudf9sb3n/dXd9/3N1fP9tb3P/b3F1/3Byef9qbXf/ +cHN9/25wd/91d33/bW9z/25wd/9sb3n/am13/2xudf92eHz/cHJ5/25wd/9qbHP/bnB3/3N1fP9tb3P/ +bG95/25wd/97fYP/cHN9/3d6g/9ucXv/bG95/3Byef9vcXj/cHJ5/2dqcf9sbnX/bnB3/25wd/9vcXj/ +bnB1/2xvdv9ydHv/bW9z/3Byef9nanH/cHJ5/21vdv9ydHv/b3F6/3V3ff9jZnD/a254/2ptd/9maXL/ +Z2ly/3F0e/9oa3X/Zmlz/25xev9pbHT/bG95/25xe/9pbHX/amx1/2hrc/9sb3f/am13/2Zobv9pbHb/ +Z2pz/2hrdf9tcHj/am12/2Nlbv9wc3r/aGt0/2xudP9sb3n/aGtz/2ZocP9sb3f/amxy/2tud/9ucHb/ +c3V8/3N1fP9qbXf/bnB3/3Byef9ucHf/cHJ5/3J0ev9vcXj/dnh+/3Bze/9rbXb/cXR+/25wd/9ucHf/ +am12/3BzfP9sb3f/cXN6/3Fzev9wcnn/Zmlz/2ptd/9qbXf/bG95/2Zpc/9maXP/Z2p0/2Rncf9iZW7/ +ZGdx/25wd/9kZ3H/Z2px/2Jlbv9zdXz/Zmhu/11gav9kZmz/bG95/2Rncf9maXP/XWBq/2Zobv9qbXf/ +XWBq/2dqdP9kZ3H/XWBq/2Jlbv9kZ3H/Z2px/2dqdP9sb3n/Z2p0/2psc/9ucXv/cHN9/25xe/9sb3n/ +bG95/25wd/9sbnX/bnB3/29xdf92eHz/cHN9/3d5f/9zdn//eXuB/25xe/95fIb/c3Z//3V4gf9ucXv/ +c3V8/3N1fP91eIH/eXuB/3l8hv9zdn//bnF7/25xe/91eIH/cHN9/3N2f/9wc33/bnB3/3N2f/91eIH/ +c3Z//3Byef95e4H/c3Z//3l8hv9ucHf/b3F1/3d5f/9vcXX/bnB3/3Byef9zdn//cHN9/25xe/93eX// +c3Z//2xvef9ucHf/bnF7/3Byef92eHz/eHl9/25wd/93eoP/c3Z//3l7gf9ucXv/cHJ5/3Byef9wc33/ +bG95/3Bzff9sb3n/d3qD/3V3ff9ucHf/fn+D/3l7gf9vcXX/bG95/3V3ff91eIH/cHN9/29xdf9qbHP/ +bG95/25xe/9qbHP/bnB3/25wd/91d33/dXd9/2xvef93eoP/dXiB/3t9g/9zdn//bG95/3V4gf9zdn// +c3Z//3N2f/91eIH/bG95/3Bzff91d33/bnB3/29xdf9wcnn/c3V8/2xudf97fYP/bnB3/2ptd/91d33/ +dXd9/21vc/91d33/bnF7/2xvef9maXP/ZGdx/2Zobv9qbHP/Z2p0/25wd/9qbXf/ZGZs/2Zobv9maXP/ +YmVu/2dqdP9nanH/Z2p0/2psc/9nanT/am13/2ptd/9nanT/dXd9/2xvef9nanT/Zmlz/25xe/9wcnn/ +bW9z/25wd/9sbnX/d3l//25wd/9wcnn/bnB3/2xudf9vcXX/cHJ5/3Bzff9qbHP/b3F1/3N1fP9ucHf/ +cHJ5/25wd/9tb3b/b3F4/25wd/9ucXv/Z2p0/3Bzff9vcXj/cnV+/29xef95e4H/Zmlz/3J1fv9qbXf/ +b3J8/25wd/9xdH7/cnR9/25xef93eYD/cHJ6/3R2fv90dn7/bG95/3F0ff9ucXr/bnB5/29yfP9nanL/ +bXB6/21wdv9tb3f/dnh9/3J1fv9tb3b/d3l+/29yfP9xdHv/cHN7/2ptd/9maXP/dHZ8/2xudP9ucHf/ +bnB0/3N1fP9zdXz/Z2p0/2xudf9sb3n/Zmlz/2tud/9xc3r/aGt1/3V3ff9ucHf/ZWhy/3Fze/9qbXf/ +bG94/21wd/9zdX3/amx0/21wev9ydHr/a254/2Zpc/9ucXv/bG95/3Byef9ucHf/bnB3/25wd/9sbnX/ +am13/2xvef92eHz/bnB3/25wd/9ucHf/e32D/3V3ff9sbnX/bG95/3V3ff9sbnX/bG95/2Zpc/9qbXf/ +cHN9/2Rncf9qbHP/bnF7/2psc/9ucHf/c3V8/25wd/9sbnX/c3V8/25wd/9ucHf/cHN9/3d5f/9ucXv/ +dXd9/3V3ff9wcnn/bG51/25wd/9tb3P/dXd9/3Bzff95e4H/c3Z//3N2f/9sb3n/eXyG/3l7gf9zdn// +bnB3/3N1fP9zdXz/c3Z//3t9g/9+gYr/dXiB/3N2f/9ucXv/bnF7/25xe/9ucXv/bG95/2xvef91eIH/ +c3Z//3N2f/9wcnn/eXyG/3d6g/9+gIb/c3V8/3N1fP95fIb/cHN9/3Bzff9zdXz/dXiB/3N2f/9ucXv/ +eXuB/3V4gf9ucHf/cHN9/3V4gf91eIH/e32D/36Ahv91d33/c3V8/25wd/91d33/bnB3/25wd/9ucHf/ +bnB3/2xudf9wc33/am13/3V3ff9wc33/Z2px/3d6g/9zdn//amxz/2xudf9zdXz/dXd9/3Bzff9qbXf/ +Z2p0/2xudf9wc33/Z2p0/2xudf9sbnX/c3V8/3Bzff9maXP/dXd9/2dqdP9wc33/bnF7/2dqdP9zdXz/ +bnF7/2xvef9ucXv/bnF7/2ptd/9sbnX/bnF7/2dqcf9maG7/Z2px/2dqdP9kZ3H/dXd9/2psc/9nanH/ +bnB3/2xvef9maG7/bnF7/2ptd/9ucXv/Zmlz/2psc/9qbHP/bG95/2xvef9wcnn/cHJ5/2dqdP9qbHP/ +Z2p0/2Zpc/9wc33/bG51/2ptd/9qbXf/am13/2xudf9sb3n/bG51/3Z4fP91d33/bnB3/2Zpc/9wcnn/ +cHJ5/21vc/9sbnX/b3F1/3h5ff9ucHf/cHJ5/2xudf9sbnX/bG95/25xe/9ucXv/Zmhu/21vc/9zdXz/ +bnB3/3N1fP9ucHf/b3F2/2ptd/9sbnX/bnB3/2Zobv9zdXz/bnB3/3N1fP9xc3r/eXuC/2hrcv9ydXz/ +a211/3R2ff9ucHf/cnV//3V3ff9vcXj/dnh9/3Bzff9xdH7/eHqD/3F0fv9wc3z/cHN8/3Byef90d4D/ +aWxz/3N2f/9ucXv/bXB6/3d5f/90d3//bG95/3V3ff9sb3n/c3Z//29yfP9wcnn/Z2pz/3h6gP9vcXX/ +cHJ5/25wd/92eHz/c3V8/21vc/9sbnX/bnF7/2psc/9sbnX/cnR8/2Zpc/9wcnn/Zmlz/2Nmb/90dn3/ +am13/25xev9vcnz/dnh+/21vc/90dnz/dHZ8/25wd/9maXP/bnF7/2ptd/9ucXv/bnF7/2xvef9ucHf/ +bG51/2psc/9sbnX/dnh8/25wd/9wcnn/bG51/3l8hv9zdn//Z2p0/2xvef9zdn//bnB3/3Byef9sb3n/ +bG95/25xe/9qbHP/bG95/3Bzff9sb3n/bnB3/3N2f/93eoP/dXiB/3d6g/9wc33/dXd9/3t9g/9+gIb/ +dXiB/3d6g/97fYP/c3V8/3Bzff9wc33/bnB3/3N2f/9zdn//eXuB/3Bzff9wcnn/am13/3V4gf91d33/ +cHJ5/25wd/9sb3n/cHJ5/2xvef91d33/d3l//2xvef9sb3n/am13/2xvef9sbnX/bnB3/25wd/9sb3n/ +d3qD/3d6g/9zdn//bnF7/3t+h/95e4H/foGK/3N2f/9wc33/eXyG/3N1fP91eIH/d3l//3d6g/97fYP/ +eXyG/3t9g/95e4H/c3V8/3Bzff91eIH/bnF7/3Bzff93eX//bnB3/3N1fP9wcnn/dXd9/2xudf9tb3P/ +bG51/2ptd/9nanT/cHN9/2ptd/93eX//d3l//2dqcf95e4H/dXd9/2Zpc/9maG7/bG95/2ptd/9nanT/ +Zmhu/2Jlbv9nanH/am13/2Jlbv9kZ3H/Zmhu/2ptd/9nanT/ZGdx/25wd/9maXP/Z2p0/2dqdP9kZ3H/ +bnB3/2Rncf9maG7/Z2p0/2ptd/9kZ3H/ZGdx/2dqdP9nanT/Z2px/2dqcf9nanT/YmVu/3Byef9qbHP/ +amxz/3N1fP9ucXv/bG51/3Z4fP9ucXv/bG95/2Zpc/9qbHP/amxz/25xe/9sb3n/dnh8/3V3ff9sb3n/ +am13/2xudf9nanT/bnF7/2psc/9wc33/bG95/2xvef9qbXf/am13/2dqdP91d33/bnF7/2xudf9sbnX/ +cHJ5/3Byef9sbnX/b3F1/29xdf94eX3/bnB3/3Byef9ucHf/amxz/2ptd/9wc33/c3Z//2ptd/9zdXz/ +dXiB/3N1fP93eoP/c3V8/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/2xvef9wc33/cHN9/3d6g/9nanT/ +c3Z+/2xvef94eoD/cHN9/3N2f/94eoD/cHJ5/3V3ff9wc33/bnF7/3d5f/9ucXv/bG95/3N1fP9sbnX/ +dXd9/2RmbP9ucHf/am13/2psc/94eX3/dXd9/29xdf94eX3/b3F1/3N1fP9sb3n/bW9z/2Zobv94eX3/ +b3F1/3Byef9wcnn/eHl9/3V3ff9tb3P/bnB3/3N1fP9sbnX/bG95/3N1fP9sbnX/dXd9/3Byef9qbHP/ +d3l//2ptd/9ucXv/cHN9/3V3ff9nanH/c3V8/25wd/9nanH/YGNs/2dqdP9maXP/am13/25xe/9sb3n/ +bG51/2psc/9nanT/amxz/3N1fP9qbXf/bG51/2psc/93eoP/bnF7/2Rncf9sbnX/cHN9/2xvef9sb3n/ +am13/2dqdP9qbXf/Z2p0/2ptd/9sb3n/bG51/25wd/9ucHf/dXd9/2xudf9zdXz/b3F1/2xudf9ucHf/ +dXd9/2ptd/9zdXz/dXd9/2xudf9qbXf/bG95/2xudf9wc33/cHJ5/3l7gf9sb3n/cHN9/25wd/95e4H/ +dXiB/25xe/9vcXX/b3F1/25wd/9sbnX/c3Z//3t+h/9ucXv/bnF7/3Bzff9sb3n/bG95/2xudf9wcnn/ +bnB3/3N2f/9zdn//bnF7/2ptd/91eIH/cHN9/3l7gf9wcnn/bW9z/3V3ff9tb3P/bG95/25wd/9vcXX/ +dXd9/3N1fP9zdXz/c3V8/25wd/9ucHf/c3V8/29xdf9zdXz/d3l//25wd/9wcnn/cHJ5/3Byef9qbXf/ +bG51/2xudf9sb3n/am13/3N1fP9qbXf/eHl9/3d5f/9vcXX/f4GH/3d5f/9wcnn/b3F1/3Z4fP92eHz/ +c3V8/2xudf9nanT/bG51/3N1fP9nanT/am13/2xvef9zdXz/cHJ5/29xdf93eX//dXd9/3N1fP9wcnn/ +b3F1/3Z4fP9wcnn/bnB3/3Byef9wc33/bnB3/25wd/9zdXz/c3V8/21vc/9sbnX/bG95/2dqdP9zdXz/ +bG51/2xvef91d33/cHJ5/25wd/93eX//cHJ5/3N1fP9qbHP/bnB3/2xvef91d33/c3Z//3d5f/91d33/ +c3Z//2xvef9ucHf/bG51/3N1fP9tb3P/dXd9/25wd/9sb3n/cHN9/3Bzff9ucHf/eXuB/3N2f/9zdXz/ +bnB3/3N1fP9ucHf/bG51/2xudf9sbnX/d3l//2ptd/9sb3n/bG95/2dqdP9sbnX/bnB3/3Byef9nanH/ +b3F1/3N2f/9wcnn/cHN9/2xvef9vcXX/bnF7/29xdf9wcnn/Zmhu/3N1fP9ucHf/dXd9/3V3ff93eX// +Z2p0/3N1fP9qbXf/dXiB/2xvef9sb3n/dnh8/21vc/91d33/bG95/2xvef9wc33/bG51/2psc/9ucXv/ +Zmlz/25xe/9dYGr/Zmlz/3Byef9qbXf/d3l//3Bzff9ucHf/d3l//25wd/9ucXv/bG95/2xvef9nanT/ +eHl9/25wd/9ucHf/cHJ5/3Z4fP91d33/bnB3/29xdf9zdXz/am13/2xudf9wc33/amxz/3V3ff9sbnX/ +amxz/3N1fP9qbXf/bG95/3N1fP93eoP/bG51/3V3ff92eHz/bG51/2Zpc/9wc33/cHN9/2xvef9sb3n/ +bnF7/2ptd/9qbHP/Zmlz/2dqcf91d33/Z2p0/2xvef9maXP/dXiB/25xe/9maXP/bG95/3N1fP9sb3n/ +bnF7/2psc/9maXP/am13/2psc/9nanT/cHJ5/2dqdP9qbXf/cHJ5/3Z4fP9wc33/dXd9/29xdf9sb3n/ +cHN9/3l7gf9wc33/c3Z//3V3ff9sb3n/bG95/25xe/9sb3n/dXd9/3N1fP97fof/bnF7/3Bzff9sb3n/ +eXuB/3N2f/9ucXv/bnB3/3N1fP9ucXv/bnF7/3N1fP93eoP/bG95/25wd/9ucXv/am13/2ptd/9ucHf/ +bnB3/2xudf9wc33/cHJ5/25wd/9qbHP/dXd9/3Byef91eIH/am13/2psc/9ucXv/bG51/2psc/9qbHP/ +Zmlz/25xe/9maXP/bnF7/3N1fP9qbXf/bG51/3Byef9tb3P/c3V8/3l7gf9ucHf/c3Z//3N2f/9wc33/ +bnB3/3Byef9wcnn/c3Z//3Byef93eX//bG95/3Z4fP95e4H/bG51/3+Bh/91d33/bG51/2ptd/91d33/ +cHN9/3Bzff9sb3n/Z2p0/2xudf9wc33/bG51/3Byef9qbXf/cHJ5/3Byef9qbXf/dXiB/3Bzff9zdXz/ +bG95/2xudf9zdXz/cHJ5/3Byef9wcnn/dXd9/3Byef9ucHf/bnB3/2xvef9sb3n/am13/2dqdP9nanT/ +cHN9/2xudf9qbHP/c3Z//2xvef9nanT/bnF7/2ptd/9ucXv/Z2px/21vc/9sbnX/eHl9/3Bzff9zdn// +d3l//3Bzff9ucHf/bG95/25wd/9wc33/bG95/3Bzff9ucHf/cHN9/3N2f/9ucXv/bG51/3d5f/9wcnn/ +bW9z/21vc/9zdXz/bnB3/2xvef9sbnX/bG51/3V3ff9maXP/Zmlz/2Zpc/9dYGr/amxz/2ptd/9sb3n/ +Zmlz/2xudf9wcnn/bG51/25wd/9tb3P/am13/2xvef9qbXf/bnF7/2Rncf9wc33/bG51/3N1fP9zdXz/ +dnh8/2dqcf9zdXz/b3F1/3V3ff9sb3n/bG95/3V3ff9ucHf/dXiB/3Byef9wcnn/c3Z//25xe/9ucHf/ +c3V8/2ptd/9wc33/Z2p0/3V4gf9zdXz/am13/3t9g/91eIH/dXiB/3t9g/9zdXz/dXiB/3Byef9ucXv/ +c3V8/36Bif9zdn//dXiB/3N2f/95fIb/eXuB/3N1fP9ucHf/dXd9/2xvef9zdn//d3qD/3Bzff95e4H/ +bnF7/2xudf93eX//bG95/3N1fP93eX//e32D/29xdf92eHz/dnh8/3Byef9sbnX/dnh8/3N2f/9ucXv/ +c3V8/3V3ff9wc33/c3Z//3Byef9wcnn/eXyG/3Bzff9wc33/am13/3t9g/9wc33/Z2p0/25xe/91d33/ +bnF7/3N2f/9ucHf/bG51/25wd/9vcXX/bG51/3N1fP9nanT/Zmlz/2xvef9wc33/bG95/2ptd/9kZ3H/ +amxz/2psc/9ucHf/Z2px/25xe/9wc33/amxz/21vc/9ucHf/cHJ5/25wd/9zdn//d3qD/2xvef9wc33/ +bG95/3l7gf91eIH/c3Z//3Byef9wc33/d3qD/3V4gf95fIb/foGK/3V4gf9zdn//dXiB/3V4gf91eIH/ +c3Z//3V4gf9zdXz/eXuB/3N2f/9ucHf/bG51/3V3ff9zdXz/eXuB/2xudf9vcXX/dXd9/2xvef9sb3n/ +bG95/2xvef92eHz/bnF7/3d5f/97fYP/bnF7/2xvef9wc33/b3F1/25xe/93eoP/bG95/3Byef9wcnn/ +cHJ5/2xudf9ucHf/bW9z/3Byef9ucHf/dnh8/3Byef93eX//e36H/25xe/+Bg4r/d3l//25wd/9wcnn/ +c3V8/3Z4fP91d33/c3Z//2xvef9wcnn/c3Z//2xvef9zdn//bnF7/3V4gf9zdn//cHJ5/3+Bh/93eoP/ +eXuB/3N2f/9wc33/dXiB/3N2f/9zdn//e32D/3d6g/95e4H/dXiB/3N2f/91eIH/c3Z//2xvef9ucXv/ +bG95/3l7gf9wc33/c3Z//3l8hv9wc33/b3F1/3Bzff9sb3n/c3V8/2Zpc/9tb3P/cHJ5/3Z4fP92eHz/ +dXiB/3h5ff9zdXz/bG95/25wd/9vcXX/cHJ5/3Byef91eIH/c3V8/3Bzff9zdn//cHN9/2ptd/91eIH/ +c3Z//2xvef9wcnn/cHN9/2xvef9ucXv/bG95/2xvef93eX//bnB3/3Byef9zdXz/Zmhu/2psc/9qbXf/ +bnF7/2Zpc/9qbHP/am13/2Zobv9sbnX/Z2px/2Zpc/9nanT/bG51/2xudf9iZW7/dXd9/25wd/92eHz/ +c3V8/3V3ff9nanT/bnF7/3Byef90d4H/c3Z//3N2f/94eoD/cnR7/36Ahv90d4D/dHeA/3p8gv92eYL/ +c3Z+/3Z5gv9vcnz/eXuC/21wev91eIH/bG51/2Jlbv9vcnz/a211/2lrcv9xdHv/aWxz/29yfP9qbHP/ +aWx2/2Zpcv91d33/aWx2/2xveP9qbXf/d3l//3Byef9ucHf/b3F1/3V3ff9sbnX/bnF7/3N1fP9sbnX/ +dXd9/2xudf9sbnX/d3h9/3Byef9wcnj/dHd7/3h6gP9sbnX/cHN9/3N1fP9tb3b/bG51/3V3ff9zdXz/ +bnB3/3N1fP9sb3n/am13/2xudf9nanT/bG51/3Z4fP9sbnX/bnF7/2dqdP93eoP/bnF7/2Zpc/9sbnX/ +dnh8/2xudf91d33/b3F1/2xvef9ucXv/bnB3/29xdf9wcnn/bG51/2psc/9zdXz/dXd9/3Byef9zdXz/ +bG51/2xudf9qbXf/c3V8/2xvef9zdXz/dnh8/25wd/9ucHf/cHJ5/3Byef9ucXv/dXd9/3t+h/9sb3n/ +cHJ5/2ptd/93eX//c3Z//3Bzff9ucHf/bG95/25xe/9wc33/c3Z//3l8hv9zdn//cHN9/3Bzff9wc33/ +cHN9/3Byef9wcnn/bnB3/3N2f/9ucXv/cHN9/2dqdP91eIH/dXd9/3d5f/9sbnX/bG51/3Bzff9sb3n/ +am13/2xudf9ucHf/dXd9/3Byef9zdn//d3l//2xudf9vcXX/c3V8/29xdf9ucHf/eHl9/3Byef9ucXv/ +bnF7/2ptd/9nanT/bG95/2xudf9wcnn/bnB3/3V3ff9sbnX/dXd9/3l7gf9vcXX/gYSN/3d5f/9sb3n/ +cHJ5/3Z4fP91d33/dnh8/3Byef9maG7/bnB3/3Bzff9wcnn/dXiB/3Byef9wc33/c3Z//3N1fP9/gYf/ +bnF7/3l7gf9wc33/c3V8/3l8hv93eoP/cHN9/3d6g/9wc33/c3Z//25xe/9ucXv/cHN9/3Bzff9ucXv/ +cHN9/3Byef93eoP/cHN9/3Bzff93eoP/dXiB/3Bzff91eIH/dXiB/3V4gf9qbXf/cHN9/3Bzff95e4H/ +c3Z//3l7gf95e4H/d3qD/3Bzff9wc33/dXiB/3d6g/9zdn//d3qD/3N2f/91eIH/c3Z//3Byef9ucHf/ +d3l//3N2f/9sb3n/bG95/25xe/9sbnX/c3V8/2xudf9ucHf/d3l//2dqdP9zdn//c3Z//2Zpc/9vcXX/ +bnB3/2xvef9kZ3H/bG51/3N1fP9vcXX/bnB3/25wd/9zdn//cHN9/25xe/9wc33/Zmlz/3d5f/9sb3n/ +dHeA/3h6gf93eX//am13/3BzfP9sb3n/cnV+/3J0e/91d33/dXh9/29xdv94eoH/bXB3/25weP9xdH3/ +bnF7/25wd/9wcnr/aWx2/29ye/9laG//aWx1/3J0ff9rbnj/cnV+/21weP9sb3n/dnh//2xvef9ydHv/ +cXN6/2psdP9naXD/cXN5/2psdP9sbnX/bG95/3d6hP9tcHr/cHN9/2xvef9wc33/bG95/25xe/9ydX7/ +bXB6/3h6gP9vcXj/bG51/3Z3ff9ydHv/b3F4/3N1e/90dn3/bnB0/3N1e/90dn3/bnF6/25wd/92eHz/ +c3Z//3Byef9wcnn/c3V8/2xudf9zdXz/bnB3/2xudf94eX3/am13/3Bzff9maXP/c3Z//3Bzff9maXP/ +bG51/3N1fP9sbnX/dXd9/2xudf9ucHf/bnF7/25wd/9ucHf/cHN9/2xvef9sbnX/c3V8/3h5ff9wcnn/ +c3V8/21vc/9vcXX/bG51/3l7gf9wc33/d3l//3V4gf9wcnn/bnF7/3Bzff9ucXv/bG95/3h5ff93eX// +bW9z/2xudf9nanT/d3l//25xe/9sb3n/amxz/2psc/9qbXf/bG95/2xvef9zdXz/cHJ5/2xudf9sb3n/ +am13/2xudf9sbnX/am13/2dqdP9ucXv/bG95/2xudf9maXP/dXd9/25xe/95e4H/bG51/25wd/9zdXz/ +cHJ5/2xvef9qbXf/bG51/3Z4fP9ucHf/dXd9/3d5f/9sbnX/b3F1/3Bzff9tb3P/bnB3/3V3ff9ucXv/ +cHJ5/25xe/9sbnX/bW9z/2xvef9qbXf/amxz/2ptd/9zdXz/am13/3Z4fP91eIH/bG51/3+Bh/91d33/ +bW9z/2xudf9wc33/bnF7/3N1fP9wcnn/ZGdx/21vc/9zdXz/bW9z/3Z4fP9sbnX/cHJ5/25wd/9sbnX/ +eXuB/2ptd/91d33/bG51/2dqcf93eX//am13/2xvef9ucXv/am13/25xe/9qbHP/bG51/2ptd/9sb3n/ +cHJ5/25wd/9sbnX/dXd9/2xvef9ucHf/d3qD/3Bzff9ucXv/c3Z//25xe/9ucXv/Z2p0/2xvef9ucXv/ +eXuB/3V4gf93eoP/dnh8/3N1fP9sbnX/bW9z/2xudf9ucHf/bW9z/2xvef9sbnX/bG95/2xudf9maXP/ +YmVu/2xvef9nanT/Zmlz/2xudf9sb3n/am13/25xe/9qbHP/bG51/3V3ff9qbHP/bG95/3Bzff9maXP/ +am13/21vef9tcHr/amxz/2psc/9zdXz/bG51/2xudf9vcXX/c3V8/3V3ff9sb3n/bnF7/2dqdP91eIH/ +bG95/3R2e/92eHz/dHZ9/2ptdv9ucHn/bG93/3Bze/9ucXn/c3Z+/3Fzev9sbnb/dnmC/3Byev9ydX7/ +dnh+/3N1fv91d33/d3l//25wef91eID/a212/3Bzff9vcnz/bW94/3V3f/9xdHz/bnF7/3V3gP9wcnv/ +cXN6/3R2fP9tcHr/bnB5/3N1fv9tb3j/bnB5/3J0ef93eoH/bW94/3V3ff9sbnX/cHJ5/25wd/9wcnn/ +dHZ8/21wef93eX7/bnF5/2tueP9xdHz/b3J6/21vdv9ucXn/c3V9/2xvdv9tcHj/bnF7/29yev9sb3n/ +dXd9/3V3ff9ucXv/dXiB/3V4gf9sb3n/cHN9/2xvef9qbXf/dXd9/3N1fP91d33/Zmhu/3V3ff9ucXv/ +ZGdx/2psc/9wc33/bG51/25wd/9nanH/Z2p0/2psc/9maG7/Zmhu/2xvef9nanT/Zmlz/3Byef92eHz/ +c3V8/3Byef9sb3n/bnB3/25wd/95fIb/cHN9/3l7gf91eIH/cHJ5/3N2f/91eIH/eXyG/3V4gf9+gIb/ +foGK/3N1fP9wc33/cHN9/36Biv97fYP/c3Z//3Bzff9zdn//c3Z//3N2f/9zdXz/dnh8/25wd/9ucHf/ +cHJ5/21vc/9vcXX/b3F1/2xvef9sb3n/cHN9/3Bzff9ucHf/Z2p0/3d6g/91eIH/foGK/2ptd/9ucXv/ +dnh8/3V3ff9sb3n/bG95/3Byef91eIH/bnF7/3V4gf93eoP/bG95/3Bzff91eIH/bnF7/25xe/94eX3/ +cHJ5/3N2f/9wc33/cHJ5/3Byef9wc33/bnB3/3Byef9ucXv/eXuB/25wd/91eIH/dXiB/2xvef9/gYf/ +eHl9/29xdf9sbnX/cHN9/25xe/91d33/bnF7/2BjbP9qbHP/am13/2Zobv9qbXf/Zmhu/2Zpc/9nanH/ +Z2px/3V3ff9qbHP/bG95/2xudf9nanH/cHJ5/2xvef9sb3n/bG95/2xudf9ucHf/b3F1/29xdf9ucXv/ +bnF7/3V4gf9ucXv/bnB3/25xe/9wc33/cHJ5/3l7gf9wc33/c3Z//3V4gf9zdn//bnF7/2xvef9zdn// +d3qD/3t9g/93eoP/eXyG/3l7gf93eoP/dXiB/3N1fP9wcnn/c3Z//3Bzff91eIH/cHN9/3l7gf9wc33/ +c3V8/25xe/97fYP/eXuB/3Bzff9wc33/cHN9/25xe/9sb3n/am13/29xdf92eHz/am13/25xe/9zdn// +Zmlz/2xvef9vcnz/b3J7/2dqdP9qbXf/c3Z//25xe/9sb3n/bnF7/3V4gf91eIH/cHN9/3N2f/9sb3n/ +eXuB/29ye/93eYD/eXuB/3l7gf9wc3v/dHd+/3V3fv92eH//c3aA/3t9hP90dn3/bnF6/3V3gP9vcnz/ +dnmD/3d6hP90d3z/d3mA/3x9gv91eH//e3yA/25xe/91d4D/dHd//29yfP92eYL/cnV+/29yef93eoL/ +dXiB/3F0ff93eX//bG94/2xueP9vcXj/bG94/21wef9ydHv/dnh8/29xef9wcnn/bG51/3N1fP9qbHP/ +b3F3/3J0e/9rbnj/eHp//3Byef9sb3n/dXiB/3V4gf9ydHv/b3F5/29yfP9ucHj/cXN6/29yef9ydX3/ +bnB3/3d5f/91eIH/bnF7/3V3ff91d33/bnB3/3N1fP9ucHf/bG51/3V3ff9zdXz/dnh8/2dqcf92eHz/ +dXd9/2dqdP9sb3n/dXd9/21vc/91d33/am13/2xudf9tb3P/bW9z/2xudf9wcnn/bG51/2psc/9zdXz/ +c3V8/3N1fP9wcnn/bG51/2xudf9vcXX/eXyG/25xe/91eIH/bnF7/2xvef9ucXv/bnF7/25xe/9wcnn/ +dXd9/3V4gf9sb3n/cHJ5/2psc/91d33/c3V8/2xudf9ucHf/bG95/2ptd/94eX3/bnB3/3V3ff9ucHf/ +cHJ5/3Byef9qbXf/am13/2xudf9qbHP/bG51/2xvef9ucXv/bG51/2dqdP91d33/bG95/3V4gf9maXP/ +bG95/3V3ff9zdXz/bG51/2psc/9sbnX/bnF7/2ptd/9wc33/d3l//2xudf9wcnn/dXd9/25wd/9ucXv/ +dXd9/3V4gf91eIH/c3Z//3Byef9sb3n/bnB3/25wd/9sbnX/bG51/3V3ff9ucHf/d3qD/3V4gf9ucHf/ +f4GH/3V4gf9tb3P/b3F1/3V3ff9ucXv/dXiB/3Bzff9nanT/bG95/25xe/9ucHf/dXd9/21vc/91d33/ +bnB3/25wd/93eoP/bnB3/3N1fP9ucHf/bW9z/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/25wd/9ucHf/ +bnB3/29xdf91d33/bnB3/21vc/9sbnX/am13/2psc/9wc33/bG95/2ptd/9ucXv/Z2p0/2psc/9iZW7/ +Zmlz/2ptd/9nanT/Zmhu/2ptd/9maXP/Zmlz/2dqcf9maG7/ZGdx/2Rncf9kZ3H/Zmlz/2Jlbv9nanT/ +YmVu/2BjbP9kZ3H/bG95/2xvef9gY2z/Zmhu/2RmbP9nanT/ZGdx/11gav9kZ3H/Z2p0/2Zpc/9nanT/ +am13/11gav9maXP/bG95/2xveP9oa3T/Zmlz/2ptd/9qbXf/bG51/21vdv9wc3z/bG95/2ptd/9qbXf/ +Zmlz/3N1fP9sbnb/cXN5/3F0ff90d3//bnB1/25wd/9vcXn/bXB6/25weP9wc33/bW92/2psc/9vcnv/ +am13/29yfP9ucXv/bG51/25wd/9ydHv/bnF6/3d6gv9ydHv/c3Z//3V4gf91eIH/e32D/3V4gf90dn3/ +e32D/3d6g/9xdH7/e32G/3d5ff91eIH/dnh9/3V4gf90dn3/eXuA/3x/h/94eoH/enyC/3l7gf99foH/ +c3Z//3N2f/94eoD/cXN5/3p7gP9xc3f/bG95/3V3ff91d33/bW92/21vdv9tb3f/aGt1/2ttdP9oa3X/ +bG95/2xvef91d33/c3Z//3Byef9wc33/dXd9/2ptd/9wc33/bG51/2xudf91d33/cHJ5/3Z4fP9nanH/ +dnh8/3N2f/9sbnX/bW9z/3N1fP9ucHf/d3l//25wd/9ucHf/b3F1/21vc/9sbnX/c3V8/21vc/9qbXf/ +cHN9/3V3ff9zdXz/c3V8/21vc/9sbnX/bG51/3N2f/9qbXf/bnF7/2dqdP9maXP/Z2px/2dqcf9maXP/ +ZGdx/2xvef9wcnn/amxz/2psc/9maXP/c3V8/25xe/9sbnX/am13/2psc/9sbnX/c3V8/2xudf9sb3n/ +bG51/2ptd/9qbXf/am13/2xvef9sbnX/bG51/2xudf9ucXv/cHN9/2ptd/9ucHf/d3l//25wd/93eX// +amxz/25wd/92eHz/dXd9/2xudf9qbXf/bG51/3V3ff9sb3n/bG95/3d5f/9qbXf/bG95/3Bzff9sbnX/ +cHJ5/3V3ff9zdn//c3Z//3Bzff9ucHf/bG95/25wd/9sb3n/bnB3/2xvef91d33/bnB3/3l8hv93eX// +bW9z/35/g/93eX//bnB3/2xudf9zdXz/bnB3/3V3ff9wcnn/Zmlz/29xdf9zdXz/bnB3/3Z4fP9tb3P/ +c3V8/3N1fP9vcXX/e32D/25wd/9wcnn/bnF7/2xudf9zdXz/am13/2xvef9qbXf/am13/2ptd/9tb3P/ +bG51/2xudf9vcXX/c3Z//25xe/9ucHf/bG95/2xvef9ucHf/dnh8/3Byef9ucHf/cHJ5/25wd/9ucHf/ +amxz/3Byef9zdn//dXiB/3Bzff97fYP/c3Z//3V4gf9sb3n/bnB3/29xdf9ucHf/bG51/3Byef9qbXf/ +c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/ZGdx/2ptd/9sbnX/c3V8/2xudf9kZ3H/bG51/25xe/9nanT/ +bG95/2xvef9iZW7/am13/25xef9vcnr/am13/2dqdP9ucHf/bG51/21vc/9tb3T/cnV8/25xev9qbXf/ +bnB3/25wd/93eH3/bW92/3Byef9vcXr/bG95/2dqc/9naXP/Zmlz/2Nmb/9nanH/aGp0/2Vocf9maXP/ +bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/bW9z/2ptd/9ucXv/am13/25xe/9sb3n/ +bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/bnB3/29xef91d33/bG50/2xveP9qbXf/ +cHN9/2psc/9sbnb/bG95/2xud/92eH7/bG95/2xudf9zdXz/bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/ +bnB3/3d5f/9sbnX/dXd9/3Byef9ucHf/c3V8/3V3ff9ucHf/dXd9/2xvef9qbXf/c3Z//25xe/91d33/ +am13/3l7gf93eX//cHJ5/3N1fP91eIH/cHJ5/3t+h/9wcnn/bG95/29xdf9ucHf/bG51/3V3ff9tb3P/ +bG51/3V3ff92eHz/c3V8/3Byef9sbnX/amxz/2xudf95e4H/bG51/3Z4fP9ucHf/bG51/3Byef9ucHf/ +cHJ5/25wd/91d33/eHl9/29xdf9sb3n/bG95/3V4gf93eX//bnF7/3d6g/9zdn//c3Z//3l7gf9zdn// +dXiB/3V3ff95e4H/e32D/3Z4fP95e4H/dXd9/3N2f/91eIH/dXiB/3d6g/9zdXz/bnF7/36Ahv93eoP/ +foGK/3V3ff9zdn//d3qD/3t9g/9wc33/bnB3/2xvef9zdXz/cHN9/3Bzff91eIH/bnB3/25wd/9zdXz/ +bG51/2xudf9zdXz/dXd9/3Bzff91eIH/cHJ5/25xe/9wcnn/bnB3/2xvef9ucHf/dnh8/25wd/95e4H/ +d3l//3Byef9+f4P/dXd9/25wd/9sbnX/c3V8/2xudf91d33/bG95/2Rncf9qbHP/am13/2dqcf9ucXv/ +am13/2ptd/9qbXf/Z2px/3N2f/9sbnX/bnF7/25xe/9sbnX/c3V8/2xvef9sb3n/bG51/29xdf9sb3n/ +bnB3/2xvef9ucXv/bnB3/3N2f/9sb3n/bnB3/25wd/9wcnn/b3F1/3Z4fP9ucXv/bG95/25xe/9wc33/ +bnF7/2xvef9zdn//c3Z//3V4gf9wc33/eXuB/3N2f/9zdn//bnB3/25wd/9tb3P/bnB3/25wd/9zdXz/ +bG51/3N1fP9qbXf/Z2px/25wd/92eHz/bnF7/2dqdP9sbnX/bnB3/3Bzff9ucHf/Z2px/21vc/9sb3n/ +Z2p0/2ptd/9sb3n/ZGZs/2xudf9ucXv/b3J6/2ptd/9qbXf/bG95/2xvef9qbHP/bW9z/3J1fP9wcnz/ +am13/25wd/9ucHf/dXd8/2xudf9vcnj/bnF7/29yfP9nanT/ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/ +am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/ +bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/bnB3/2xudf9ydHv/dnh+/25wd/9vcXn/ +bnB3/3Z4fP9sbnX/bnB3/29xef9tb3X/dnh9/3Byef9vcXX/dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/ +bG51/2xudf9wc33/b3F1/3Z4fP91d33/bG51/25xe/9wc33/bG51/3V3ff9sbnX/amxz/3N1fP9ucHf/ +c3V8/2Zobv9wc33/cHN9/2ptd/9vcXX/c3V8/29xdf92eHz/bW9z/2ptd/9sbnX/bG95/2dqdP9wc33/ +bG51/2xudf9zdXz/dXd9/3Bzff9wcnn/bG51/21vc/9qbHP/c3Z//2xudf9zdXz/bnB3/2xudf9zdXz/ +bW9z/2ptd/9tb3P/bnF7/3Z4fP9ucHf/bnB3/2xvef91eIH/dXd9/2xvef9zdn//bnB3/2xvef91d33/ +bG95/25wd/9ucHf/c3Z//3N2f/9ucXv/cHJ5/25xe/9ucHf/bnF7/3N2f/9zdn//bnB3/2dqdP91eIH/ +bnF7/3d5f/9sb3n/b3F1/3Bzff93eX//b3F1/25wd/9qbXf/c3V8/3Byef9ucHf/eHl9/25wd/9wcnn/ +cHJ5/2xvef9wcnn/c3Z//3d5f/9qbHP/Z2p0/2dqcf9sbnX/Z2px/2dqdP9nanT/bG51/3N1fP9qbXf/ +dXiB/3V3ff9sb3n/e32D/3V3ff9qbXf/am13/3Bzff9qbXf/dnh8/2ptd/9kZ3H/bG51/3Z4fP9ucHf/ +dnh8/3Byef9wc33/dXiB/25xe/97fof/bnF7/3Bzff9wc33/bnF7/3d5f/9ucXv/cHJ5/25wd/9wcnn/ +bnF7/25wd/9ucHf/cHN9/25xe/9zdn//cHN9/3N1fP9ucXv/bG95/25wd/93eX//bG95/3Byef9qbXf/ +bG51/25xe/9tb3P/dXd9/25wd/9ucXv/bnB3/3h5ff9wcnn/dXd9/2xudf9qbXf/bG51/2ptd/9qbHP/ +bG95/2Rncf9ucXv/ZGdx/2Jlbv9kZ3H/c3V8/25xe/9qbXf/bG51/25wd/9zdXz/c3V8/2Zobv9tb3P/ +bnB3/2xudf9ucHf/bG95/2RmbP9qbXf/bW93/25xef9rbnf/am13/25wd/9zdXz/bnB3/25wd/91d3z/ +dXd7/25wd/9tb3P/bW9z/3N1e/9sb3n/cnR6/3J0e/9xc3r/bG51/2psc/9ucHf/bG95/3Bzff91d33/ +bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn//bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/ +dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/bnB3/2xvef9tb3n/dHZ8/3h6g/9tb3j/ +cHN8/25wd/94eX3/Z2px/25weP9sbnb/cHJ5/3h6gf91eIH/cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/ +cHJ5/25xe/9ucHf/d3qD/3Byef91d33/cHN9/3Byef9wc33/dXd9/2xvef91d33/cHJ5/2dqdP93eX// +bnF7/3h5ff9nanH/dXd9/3V3ff9wcnn/b3F1/3N1fP9ucHf/d3l//21vc/9sbnX/bG51/25wd/9nanT/ +bnF7/2xudf9qbHP/dXd9/3V3ff9wc33/bnF7/2xudf9qbXf/am13/3V3ff9wcnn/dXd9/25wd/9qbXf/ +cHN9/25wd/9ucHf/bW9z/25xe/95e4H/bnB3/25xe/9ucHf/eXuB/3V4gf9ucXv/dXd9/25wd/9ucHf/ +c3Z//25wd/9ucHf/bG95/3Byef9ucXv/Z2px/25wd/9vcXX/b3F1/29xdf91d33/bnF7/2ptd/9kZmz/ +bnF7/2xudf91d33/Z2p0/2psc/9ucXv/c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/bG51/3N1fP9maXP/ +bnF7/3Bzff9sbnX/amxz/2xvef9wc33/bnB3/3Byef9sb3n/c3Z//2xvef9sb3n/bG95/2xvef9zdn// +b3F1/3l7gf93eX//c3V8/36Ahv93eX//bG95/2xvef95e4H/bnF7/3V4gf9ucHf/Z2px/25xe/93eX// +bnF7/3d5f/9ucXv/c3V8/3Byef9tb3P/eXuB/2xudf9ucHf/cHJ5/25wd/9zdXz/bnB3/25wd/9sbnX/ +am13/2psc/9nanT/amxz/2ptd/9sbnX/c3V8/21vc/9qbHP/am13/2xvef9qbXf/d3l//2xudf9sb3n/ +am13/2ptd/9wc33/am13/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9vcXX/b3F1/21vc/9tb3P/ +am13/25xe/9maXP/bG95/2Zpc/9kZ3H/Z2p0/3N1fP9sb3n/Zmlz/2xvef9qbXf/c3V8/2xvef9maXP/ +bG51/25xe/9vcXX/bnB3/29xdf9nanH/bW9z/2ttdP9sb3n/bG92/2xudf9tb3P/c3V8/2xudf9ucHf/ +dHZ9/29xef9tb3P/bG51/2psc/9zdXz/a254/29xev9ydHv/b3J7/21vc/9nanH/bG51/2dqdP9qbXf/ +bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/am13/2psc/9sb3n/bG51/2xvef9wc33/ +am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/c3Z//25wd/9qbXf/Z2p0/29yfP94eoP/ +b3F4/3V3ff9ucHf/dXd9/2Zpc/9sb3n/am13/2xud/90dn3/cHJ6/2xudf94eX3/cHJ5/2xudf9qbXf/ +am13/2xudf9sbnX/am13/3N1fP9sbnX/dXd9/25wd/9tb3P/cHJ5/25xe/9qbHP/c3V8/21vc/9qbHP/ +dnh8/3Bzff91eIH/Z2px/25xe/9zdn//bnB3/25wd/9wc33/bG95/3d5f/9vcXX/bnF7/3N1fP9zdn// +am13/3N2f/9zdn//bnB3/3d5f/93eoP/dXiB/3Bzff9wc33/bG95/2xvef91eIH/cHJ5/3N2f/9ucXv/ +b3F1/3V3ff9sb3n/cHJ5/29xdf9wcnn/d3l//25wd/9vcXX/bG51/3V4gf91eIH/cHJ5/3V4gf9wcnn/ +cHN9/3d5f/9ucHf/cHJ5/25wd/9sb3n/cHJ5/2psc/9ucHf/cHJ5/29xdf9sbnX/dnh8/25wd/9sbnX/ +Zmhu/25wd/9tb3P/dXd9/2ptd/9sbnX/bnF7/2xvef9kZ3H/Z2p0/2Zpc/9sb3n/Z2p0/2dqdP9wc33/ +Z2p0/3Bzff9wc33/am13/2xudf9ucXv/c3V8/25xe/9zdXz/bG51/3Byef9ucHf/bnB3/25wd/9vcXX/ +dXd9/2xudf94eX3/dXd9/3Byef93eoP/c3V8/2xudf9sbnX/eHl9/3Byef91d33/amxz/2Jkav9sbnX/ +bnF7/2psc/9wcnn/Z2px/2Zpc/9maXP/ZGdx/3Bzff9qbHP/amxz/2xvef9qbXf/am13/2ptd/9qbXf/ +bG51/2psc/9sbnX/bG51/2dqdP9qbXf/am13/25xe/9qbHP/bG51/2ptd/9wc33/am13/3N2f/9qbXf/ +cHN9/2ptd/9ucHf/dXd9/25wd/91d33/bnB3/3Byef9wcnn/cHJ5/21vc/9ucXv/bG51/25wd/9qbXf/ +am13/2ptd/9wc33/Z2p0/25xe/9qbHP/Z2px/2xvef93eX//c3Z//2xvef9ucXv/bnB3/3Z4fP9wcnn/ +amxz/2xudf9zdn//bnB3/2xvef9ucXv/Zmlz/25xe/9rbXT/b3J6/29xdv9ucHf/bnB3/3Bzff9sb3n/ +bnB3/3Z4fv9ucXr/b3F1/25wd/9tb3P/dnh+/2xvdv9tcHr/c3V7/29yfP9qbHP/YmVu/2xudf9qbXf/ +bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/cHJ5/25xe/9wcnn/d3l//29xdf91eIH/ +dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/cHN9/3V4gf9ucXv/bG95/2ptd/9wc3z/ +dnh//3Byef91eIH/c3Z//3t+h/9wc33/d3mC/3Z4f/9ydHn/dHZ+/3BzfP9sbnb/cHN9/3Byef9tb3P/ +bG95/2xudf9vcXX/bnB3/2xvef9zdn//d3l//3l7gf93eoP/cHN9/3d6g/93eoP/bnB3/3d5f/9zdXz/ +cHN9/3t9g/9zdn//dXiB/2Zobv9ucHf/dXd9/2xvef9ucHf/c3Z//2xvef93eX//b3F1/25wd/9tb3P/ +cHJ5/2dqcf9ucXv/c3V8/2xvef91d33/eXyG/3d6g/91eIH/c3Z//25wd/9qbXf/eXuB/3Bzff9zdn// +dXiB/3Bzff95fIb/dXd9/3l7gf91d33/eXuB/3+Bh/9zdn//dXiB/3Z4fP+Bg4r/f4GH/3d5f/99foH/ +dXd9/3d5f/9+f4P/eHl9/3h5ff93eX//d3l//3l8hv9ucXv/dXiB/3d6g/9zdXz/c3V8/3t9g/93eoP/ +c3Z//2xvef9zdn//dXiB/3l8hv9wc33/cHN9/25xe/93eX//bnB3/25wd/9sbnX/cHN9/25wd/9sb3n/ +cHN9/2xudf91d33/dXd9/3N1fP9vcXX/cHJ5/3h5ff9wcnn/dXd9/25xe/9zdn//cHN9/25wd/9wcnn/ +c3V8/3V4gf9zdn//e36H/3t+h/95fIb/f4GH/3t+h/9wc33/dXd9/3+Bh/97fYP/foGK/3d6g/9ucXv/ +dXiB/3l8hv9zdXz/eXuB/3Bzff9ucXv/bG95/25wd/95fIb/bnF7/25xe/9wc33/bnF7/3Bzff9wcnn/ +bnF7/3N1fP9wcnn/bnF7/2xvef9ucHf/bW9z/25wd/9zdXz/bnB3/2xvef9ucXv/d3l//25xe/93eoP/ +bnF7/3N2f/9wc33/bG95/3V3ff9sb3n/dnh8/25wd/9zdXz/bnB3/25xe/9ucHf/cHN9/2xudf9sbnX/ +bW9z/2ptd/9tb3P/cHN9/2ptd/9ucHf/Z2p0/2Zpc/9nanH/dXd9/3Byef9nanH/bG95/2xudf9wc33/ +am13/2dqdP9sbnX/bnF7/2ptd/9sb3n/bG95/2BjbP9nanT/amxz/2xvef9rbXX/bG51/2dqcf9nanT/ +ZGdx/2Zobv9qbXf/Zmlz/2Jlbv9nanH/ZGdx/25wd/9sb3j/bW92/3N1ef9tb3b/bnB3/2dqdP9ucHf/ +bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn//am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/ +c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/c3V8/2psc/9wcnn/am13/2dqdP9qbHP/ +bnB3/3R3fv9rbnX/bnB3/21vdf91eIH/Z2p0/2xvef9sb3n/bG92/3R2ff9wc33/bG95/3Bzff9zdn// +cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/2xudf9zdn//c3Z//2xvef9zdXz/dXd9/2xvef95e4H/ +cHJ5/25wd/91eIH/bnF7/3d6g/9maG7/bG95/3V3ff9sb3n/bnF7/3d6g/9wc33/eXuB/25wd/9ucHf/ +bW9z/3N1fP9qbHP/bnF7/2xvef9nanT/c3V8/3V3ff9qbXf/bG51/2xvef9qbHP/ZGdx/3N1fP9qbXf/ +cHJ5/25wd/9tb3P/cHJ5/2xudf9qbXf/amxz/2xvef93eX//Z2px/21vc/9sbnX/d3l//3N1fP9ucHf/ +dnh8/2xvef9ucHf/eHl9/29xdf9qbXf/amxz/25wd/9wcnn/bnB3/29xdf9tb3P/am13/2xudf9zdXz/ +bnF7/2ptd/9nanH/cHN9/2psc/9wc33/bG51/2xudf9sb3n/c3V8/2Rncf9nanH/YmVu/25xe/9nanT/ +bG51/3Bzff9qbXf/bG95/3Bzff9sb3n/bG51/25xe/93eX//cHN9/3d5f/9ucXv/c3Z//3Bzff9ucHf/ +bnB3/2xvef91d33/b3F1/3Z4fP94eX3/c3V8/3l7gf91d33/bG51/2dqdP93eX//bnB3/3l7gf9wcnn/ +Z2px/29xdf94eX3/bnB3/3l7gf9ucHf/bG95/3Bzff9ucXv/d3qD/3N2f/93eoP/e32D/3d5f/9+f4P/ +d3l//3d5f/97fYP/ent//3t+h/95e4H/eXuB/3l7gf97fYP/e32D/3V4gf93eX//fX6B/3+Bh/93eX// +f4KM/3d6g/93eoP/cHN9/2xvef91d33/bnB3/3V3ff9qbXf/bG95/2ptd/9ucXv/amxz/2xvef9qbHP/ +amxz/2dqcf9nanH/Zmhu/2dqdP9nanH/bG51/2Rncf9dYGr/XWBq/2xvef9nanT/YGNs/2Zpc/9sb3n/ +bnF7/25xe/9qbXf/bG51/2xudf9ucHf/dXd9/3V3ff9maG7/bG51/3N1fP90dn7/cXN5/25wd/9vcXX/ +bnF7/2xvef9vcXX/dXd9/25xe/9qbXf/bG95/25wd/93eH3/c3V8/3N1e/93eX//c3Z//25xe/9nanT/ +bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/ +bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/ +bG51/25xe/90d37/cHN6/3V3gP9wc33/foGK/3N1fP91eIH/cXR9/21wev9ydX3/cHN8/2ptd/9sb3n/ +bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9zdn//dXiB/3l7gf9wc33/c3Z//3d5f/9qbHP/ +d3l//29xdf9qbHP/c3V8/29xdf93eX//Z2px/25wd/94eX3/bnB3/3Byef91d33/cHJ5/3d5f/9sb3n/ +bG95/25wd/9ucHf/Z2p0/3Bzff9sb3n/bW9z/3N1fP91d33/bG95/2ptd/9ucXv/bW9z/2Zpc/91d33/ +bG95/3Bzff9qbXf/bG51/2xvef9qbHP/bG51/2psc/9qbXf/dXd9/2Rncf9qbHP/Zmlz/3Bzff9zdXz/ +Zmlz/3V3ff9qbHP/amxz/3V3ff9sbnX/am13/2dqdP9sb3n/bG95/2ptd/9qbXf/bW9z/29xdf9ucHf/ +eXuB/3Bzff9sb3n/am13/3Bzff9ucHf/eHl9/25xe/9wc33/d3qD/3t9g/9ucHf/bnB3/2ptd/93eoP/ +c3Z//3N1fP95e4H/c3V8/3N2f/91eIH/eXuB/3N1fP9zdn//d3qD/2ptd/9wc33/bG51/2ptd/9nanT/ +Zmlz/2Zpc/9iZW7/bG95/2psc/9wc33/dXd9/2xvef93eoP/bnF7/2ptd/9sbnX/dXd9/2ptd/95e4H/ +bnF7/2dqdP9sb3n/eHl9/29xdf93eX//bnB3/25xe/9ucXv/bnB3/3l7gf9ucXv/c3Z//3V4gf9zdXz/ +dXiB/3Bzff9wcnn/bnB3/3Byef91eIH/cHJ5/25wd/9sb3n/bG95/3Bzff9ucHf/bW9z/3V3ff94eX3/ +cHJ5/3l7gf9wcnn/bG95/25xe/9qbHP/c3V8/2ptd/9wc33/bW9z/3Byef9ucHf/c3V8/29xdf91d33/ +bG95/25xe/9ucHf/bG95/3Byef9wc33/bnB3/25xe/9zdXz/bG95/3N2f/97fof/e32D/25xe/93eoP/ +eXyG/3V4gf93eoP/cHJ5/25xe/9zdXz/c3V8/3Bzff9zdn//ZGdx/25wd/9tb3T/cXN6/3Fzev9ucXr/ +bnB3/2xvef9sb3n/b3F1/3d5f/9ucHf/bW9z/25wd/9ucHf/d3l//3J0ff9xdHv/cnR7/29xeP9ucHf/ +Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/ +bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/ +bG51/2psc/9vcXn/c3V7/25wdf9xc3r/bW9z/3d5f/9qbXf/am13/2ttdP9oa3X/c3Z9/3V3ff9sb3n/ +bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/am13/2xvef9sb3n/Z2px/2Zpc/9qbXf/ +XWBq/3Byef9maXP/XWBq/2xvef9maG7/c3V8/2Jlbv9qbXf/dXd9/2dqdP9ucXv/c3V8/2xudf9zdXz/ +bG51/2xudf9vcXX/cHJ5/29xdf9zdn//c3Z//3Bzff91eIH/eXyG/3V4gf9wc33/cHN9/25wd/9qbXf/ +d3l//25xe/9wcnn/bnB3/21vc/9zdXz/bG51/2ptd/9qbHP/bG95/3V3ff9iZW7/bG51/2Rncf9sb3n/ +cHJ5/2Jlbv9qbXf/Z2px/2Zobv9ucHf/Zmlz/2Rncf9kZ3H/Z2p0/2xudf9qbHP/bG51/2dqdP9sbnX/ +am13/3V3ff9ucXv/bnB3/2xvef9zdn//bG95/3h5ff9ucHf/cHJ5/3V3ff94eX3/bG51/2xudf9nanT/ +cHN9/25wd/9tb3P/bnF7/2ptd/9sb3n/bnF7/3Bzff9qbXf/bnF7/3d5f/9ucHf/c3Z//25wd/9ucXv/ +bnB3/2xvef9ucHf/am13/3d6g/9zdXz/eXuB/3t9g/91eIH/eXyG/3N2f/9ucHf/bG95/3l7gf9wcnn/ +d3qD/25xe/9nanT/bnB3/3l7gf9wcnn/eXyG/3Byef9ucXv/cHN9/25wd/93eoP/bnB3/25wd/9wc33/ +bnB3/3Z4fP9vcXX/bnB3/2xvef9ucHf/cHN9/2xvef9sb3n/bnB3/25wd/9zdXz/b3F1/29xdf91d33/ +dXd9/25wd/95e4H/cHJ5/2xvef9ucXv/Z2p0/3N1fP9qbXf/bG95/2psc/9sb3n/bG51/3Bzff9qbHP/ +cHN9/2ptd/9sb3n/amxz/2dqcf9qbHP/Z2p0/2Zobv9nanH/Z2px/2Rncf9maXP/c3V8/25xe/9maG7/ +c3V8/25wd/9sbnX/dnh8/2ptd/9sb3n/bnB3/25wd/9zdXz/dXd9/2dqcf9wcnn/bW9z/29xeP9sb3n/ +bXB6/2xvef9sb3n/bnB3/3Byef93eX//cHJ5/2xudf9ucHf/am13/3N1fP9sb3n/cXN6/3N1ff9vcXv/ +c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/ +cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/ +cHJ5/2xudf9ucHf/b3F4/3N1ev9pbHP/a253/2Vocv9wcnn/ZGdx/2Vocv9laHL/YmVv/3J0fP9zdoD/ +am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/c3V8/2xvef9wc33/c3V8/21vc/91d33/ +dXd9/2psc/91eIH/bnB3/2Zobv91d33/bnB3/3d5f/9maXP/cHJ5/3h5ff9sbnX/c3V8/3Z4fP9sb3n/ +eHl9/25wd/9tb3P/bW9z/3Byef9qbHP/cHJ5/25wd/9sbnX/bG95/3N1fP9ucXv/bG95/2ptd/9sbnX/ +Z2p0/3d5f/9qbXf/cHJ5/3Byef9ucHf/c3V8/2ptd/9wcnn/b3F1/25wd/92eHz/Z2px/29xdf9sbnX/ +cHJ5/3Z4fP9sbnX/dXiB/25xe/9zdn//e36H/3Byef9wc33/c3V8/25xe/9ucXv/cHJ5/25xe/9sb3n/ +bnB3/2xvef93eX//c3V8/25xe/9wcnn/dXiB/2xvef93eX//bnB3/25xe/9ucXv/d3qD/25wd/9qbXf/ +am13/3N2f/9ucHf/bnB3/3Bzff9sb3n/c3Z//3N2f/93eX//bG95/3N1fP91eIH/bnF7/3V4gf9ucXv/ +cHN9/25xe/9wcnn/cHJ5/2ptd/9zdn//bnB3/3N2f/92eHz/cHN9/3t9g/9wcnn/bnB3/25wd/94eX3/ +bnB3/3d5f/9wcnn/Zmhu/25wd/92eHz/bnB3/3l8hv9wcnn/cHN9/3Bzff9zdXz/d3qD/3N2f/91eIH/ +dXiB/25wd/94eX3/bnB3/29xdf9sbnX/bnB3/3Byef9vcXX/bG51/21vc/9sbnX/cHJ5/2xudf9tb3P/ +cHN9/3Bzff9sbnX/bnB3/2ptd/9qbXf/bG95/2Rncf9qbXf/ZGdx/2xvef9qbXf/cHN9/2ptd/91d33/ +am13/3N1fP9ucXv/cHJ5/25wd/9ucHf/cHJ5/25xe/9qbXf/bnB3/25wd/9sb3n/bnB3/3V3ff91d33/ +Z2px/3N1fP9ucXv/bG95/3V4gf9wcnn/bnF7/2ptd/9ucXv/cHN9/3N2f/9nanT/cHN9/2hrcv9qbXf/ +bG52/3Fzev9sbnX/bnB3/21vc/9tb3P/eHqA/2xudf9sbnX/bnB3/25wd/92eHz/bXB6/3Byef9ydHr/ +cXN5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/cHN9/3Byef9wc33/c3Z//25xe/9ucHf/ +bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn//d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/ +d3qD/3d6g/9wc33/c3V8/3N1fP93eoP/b3J6/3J0fP9rbnj/d3l//25wd/9wcnn/bW90/2xudf90dn3/ +dHd//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/cHJ5/25xe/9ucXv/c3Z//3h5ff9ucHf/ +c3V8/3N1fP9qbXf/dXiB/3Byef9nanH/cHJ5/21vc/94eX3/Zmhu/25wd/94eX3/bG51/3N1fP91d33/ +am13/3d5f/9sbnX/bG51/2xudf9wcnn/bG51/3N1fP9wcnn/cHJ5/3Byef94eX3/c3V8/2xvef9sb3n/ +bW9z/2Zobv91d33/cHJ5/2xudf9ucHf/am13/3Byef9nanT/am13/2xudf9wcnn/eHl9/2psc/9tb3P/ +amxz/2xvef91d33/am13/3d5f/9qbXf/am13/3d5f/9sbnX/Z2p0/2xudf9ucHf/bG51/21vc/9nanT/ +Z2p0/2xudf9tb3P/dnh8/3Byef9ucHf/bW9z/25xe/9tb3P/c3V8/2xudf9ucHf/bnB3/3d6g/9ucHf/ +bG51/25wd/9zdn//bnB3/25wd/9wc33/bnF7/3N1fP91d33/d3l//3V4gf9zdn//eXuB/3N2f/93eoP/ +c3Z//3N2f/9sb3n/bnB3/25wd/9nanT/c3V8/21vc/9zdXz/c3V8/2xvef93eoP/bnF7/2ptd/9sbnX/ +c3V8/2dqdP91d33/Z2p0/11gav9kZ3H/bG95/2Zobv9wcnn/Zmhu/2ptd/9nanT/Z2px/3Byef9qbXf/ +am13/25xe/9sbnX/bnF7/2ptd/9qbXf/Zmlz/2xudf9wc33/bnB3/2xvef9vcXX/b3F1/3N1fP9ucHf/ +b3F1/3V3ff9ucHf/am13/3V3ff9wcnn/bG51/25xe/9qbXf/am13/2Zpc/9sb3n/bG95/25xe/9qbXf/ +cHN9/2xvef9wc33/bG95/2ptd/9nanH/amxz/2psc/9qbHP/Zmlz/2psc/9sbnX/amxz/2dqdP9ucXv/ +cHN9/2Zpc/9ucHf/bG95/2xudf93eX//bnB3/25xe/9sbnX/cHJ5/3N1fP9wc33/Z2p0/3Bzff9ydX7/ +cnV+/3F0fv9ydX7/cHN9/3Bzff9wcnn/cHJ5/3p9hv9wcnn/cHJ5/3V4gf9zdn//d3l//3J1fv9ydHz/ +dXZ8/3Fzef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/ZGdx/2xudf9nanT/bG51/2xudf9sbnX/ +Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX//Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/ +bnB3/3N1fP9zdn//Z2p0/29xdf9vcXb/dnh//3Bze/96fIL/cHN9/36Biv93eX//e32D/3J1fv9vcnv/ +c3aA/3N2gP9nanT/bG51/3Bzff9nanT/am13/2ptd/9sb3n/am13/2psc/9nanH/bnF7/3N2f/93eX// +bnF7/3Bzff91eIH/bnF7/3d5f/9ucHf/amxz/3Byef9tb3P/d3l//2Zobv9ucXv/dXd9/25wd/91eIH/ +dXd9/2xvef93eoP/cHN9/2ptd/9vcXX/cHN9/25wd/91d33/cHJ5/25wd/9sb3n/eHl9/3N1fP9ucHf/ +bnB3/2xudf9iZW7/dXd9/2xvef9qbXf/bnB3/2xudf9ucXv/amxz/2xudf9tb3P/bnB3/3V3ff9kZ3H/ +bG51/2Zpc/9qbXf/cHN9/2dqdP93eX//bG51/2ptd/91d33/ZGdx/2Jlbv9maG7/amxz/2xudf9qbHP/ +Zmlz/2Zobv9maXP/ZGdx/2xvef9maXP/Zmlz/2dqcf9maXP/amxz/2xvef9sbnX/bG51/2xudf91d33/ +am13/2Zpc/9nanT/cHN9/2xudf9sbnX/bnB3/3Byef9zdXz/dnh8/3V4gf9wc33/c3Z//3t9g/9wc33/ +dXd9/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9wcnn/d3l//3V4gf9zdn//e36H/3d6g/9wcnn/ +c3V8/3d5f/9sb3n/dXiB/3Byef9nanH/bnB3/3d5f/9wcnn/d3qD/25wd/9wc33/bG95/25wd/92eHz/ +cHJ5/25wd/9ucHf/bG51/3Byef9ucHf/cHJ5/2dqdP9sb3n/c3Z//29xdf9ucHf/bW9z/2xvef9zdn// +cHN9/3Byef91eIH/bnB3/21vc/94eX3/dXd9/25wd/9zdXz/b3F1/25wd/9qbHP/c3V8/3Byef9zdn// +bnF7/3N1fP9wcnn/dXd9/3N1fP9sb3n/amxz/2xudf9qbXf/Z2px/2Zpc/9maXP/Z2px/2xudf9maXP/ +bG95/25xe/9nanT/bnF7/2xvef9tb3P/c3V8/2ptd/9qbXf/ZGdx/2xvef9nanT/bG95/2Jlbv9nanT/ +b3F4/25weP9vcXr/bG94/2tud/9qbXf/amxz/2Rncf9zdn//Z2p0/2ptd/9ucHf/bnB3/3Byef9ucHf/ +b3J3/21wev9oa3X/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/ +Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/ +bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3J0e/9ucXn/cnR7/29xeP95e4H/bnB3/2xudf9qbXf/ +aWt0/25wef9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn//c3V8/21vc/9ucHf/bG51/2xvef9wc33/ +dXd9/2xudf9zdXz/bnF7/2Zpc/9zdXz/Z2p0/2Jlbv9ucXv/bG51/3V3ff9iZW7/cHN9/3d5f/9qbXf/ +bnF7/25xe/9sbnX/c3V8/2Zpc/9gY2z/Zmhu/2Zpc/9maXP/bG95/2psc/9nanH/Z2px/2xvef9sb3n/ +Z2px/2psc/9maXP/YGNs/3V3ff9qbXf/bG51/2ptd/9nanH/am13/2Jlbv9qbHP/Z2px/2ptd/9ucXv/ +Zmlz/2psc/9kZ3H/bnF7/3V3ff9nanT/dXd9/2xudf9wcnn/d3l//2Zpc/9nanH/bW9z/21vc/9sbnX/ +bnB3/25wd/9ucHf/c3V8/25wd/94eX3/bnF7/25xe/9sb3n/c3V8/21vc/94eX3/bG95/25wd/9ucHf/ +d3l//2ptd/9maXP/amxz/3N1fP9sbnX/b3F1/3Byef9vcXX/c3V8/3Z4fP91d33/bnB3/3Byef94eX3/ +bnF7/3V3ff91d33/bnF7/25wd/9sb3n/bG95/2xvef93eX//cHN9/3t9g/91eIH/cHN9/3V4gf9wc33/ +am13/3Byef9zdn//am13/3d5f/9zdn//Z2p0/29xdf95e4H/bnB3/3d5f/9ucHf/c3V8/2xudf9vcXX/ +dnh8/3V3ff9wc33/bnF7/3V4gf9wc33/bnB3/3Bzff9qbXf/cHJ5/3V4gf9zdn//c3Z//3N1fP91d33/ +eXuB/3d5f/9zdn//e32D/3V4gf9zdXz/eXuB/3N2f/9zdn//eXyG/3V3ff93eX//dnh8/3t9g/97fYP/ +dXiB/3Bzff91eIH/c3Z//3d6g/9zdn//cHN9/3N1fP9zdn//c3Z//3N1fP9sb3n/bnB3/25wd/9ucXv/ +am13/3Bzff9wc33/Z2p0/3N1fP9zdXz/b3F1/3V3ff9sbnX/cHJ5/2dqdP91d33/bnF7/3N2f/9qbXf/ +c3Z//25xe/9tcHn/b3J8/29ye/9ucXv/bnF7/25xe/9ucXv/fH+I/3J1fv9zdn//d3l//3t9g/96fIL/ +d3qA/3Z4ff92eX7/cnN6/2xudf9sbnX/Zmlz/2psc/9nanT/am13/2xudf9maXP/bnF7/2dqdP9tb3P/ +cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/bG51/3Byef9iZW7/am13/2ptd/9sb3n/ +Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/bnF7/3N2ff9ydHz/gYOK/3V4gf91eIH/ +b3J8/25xev9zdX7/cnV//2hrdf9sb3n/bnB3/25wd/9wcnn/cHJ5/3N1fP9sbnX/am13/2ptd/9wcnn/ +dnh8/3d5f/9sb3n/cHN9/25xe/9ucHf/dnh8/2xvef9kZ3H/c3V8/2xudf94eX3/Z2px/3N2f/93eoP/ +bG95/3N2f/95e4H/bG95/3V4gf9ucXv/am13/25xe/9wc33/bnB3/25xe/9sb3n/bG95/25wd/92eHz/ +dXd9/29xdf9tb3P/Z2px/2dqcf91d33/am13/21vc/9wcnn/am13/2xvef9kZ3H/Z2p0/2Zobv9maXP/ +am13/2Rncf9maG7/XWBq/2Rncf9wcnn/YmVu/3Byef9maXP/Zmlz/3Byef9iZW7/YmVu/2psc/9nanT/ +bG51/2xudf9qbHP/bG51/25xe/9sb3n/dXd9/3Byef9ucHf/bG51/3N2f/9vcXX/eHl9/25wd/9vcXX/ +bnB3/3d5f/9ucHf/bnB3/25wd/91d33/bnB3/29xdf9wcnn/bG51/3Byef9zdn//d3l//3Bzff9wc33/ +d3l//2xvef9zdXz/dnh8/25xe/9ucHf/bnB3/29xdf9ucHf/dnh8/3Byef94eX3/dnh8/3N1fP92eHz/ +bnB3/2xudf9vcXX/c3V8/2psc/91d33/dXd9/2psc/9vcXX/d3l//3Byef93eX//bnF7/3N2f/9ucHf/ +b3F1/3h5ff9wc33/c3V8/25xe/9wc33/c3Z//25wd/9ucHf/bG95/25wd/9zdn//c3V8/25xe/9wc33/ +cHN9/3l8hv9zdn//cHN9/3d6g/9ucXv/bnB3/3t9g/93eoP/dXiB/3d6g/9wc33/c3Z//3N1fP9wc33/ +bnF7/3Bzff9wcnn/c3Z//3N2f/95e4H/c3Z//25xe/9vcXX/bnB3/2xvef9vcXX/am13/2xudf9vcXX/ +bnB3/2xudf9zdn//cHJ5/2xudf9wc33/bnF7/29xdf93eX//bnB3/3V4gf9ucXv/eXuB/3V4gf95e4H/ +Z2p0/2xvef9wc3z/dHeA/3Z5gv9ydX//b3F4/25wd/9ucHf/am13/3d5f/9ucHf/bnB3/2xudf9wcnn/ +bnF7/2xvef9tcHr/dXd+/3V4gP9wc33/cHJ5/2xvef9wc33/c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/ +bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/e36H/3N2f/97fYP/cHN9/3t9g/9zdn// +c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/c3V8/2xud/9ucXr/a210/3d6g/9qbXf/ +bG51/2psc/9sbnX/b3J8/3BzfP9rbXT/bG51/25wd/9ucHf/bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/ +bG95/3V3ff92eHz/bG51/3N1fP9ucHf/b3F1/3V3ff9sbnX/bG51/2xvef9qbXf/c3V8/2Rncf9zdXz/ +dnh8/2xudf9ucHf/dnh8/2xudf91d33/am13/2Rncf9qbHP/bnB3/2xudf9wc33/bG51/2xudf9qbXf/ +cHN9/3Byef9sbnX/bW9z/2psc/9qbHP/dXd9/2xvef9ucHf/c3V8/2xudf9ucHf/Zmhu/3Byef9tb3P/ +bnB3/25wd/9nanT/am13/2dqdP9ucXv/c3V8/2ptd/93eX//bnB3/25xe/94eX3/Zmhu/2dqdP9ucHf/ +bnB3/2xvef9ucHf/bnB3/25wd/9zdn//c3Z//3l7gf9ucXv/bnF7/3Bzff93eX//cHN9/3l7gf9zdXz/ +bnB3/3N2f/97fYP/cHJ5/25wd/9ucHf/c3Z//2xvef9wcnn/c3Z//2xvef9wcnn/c3V8/3Z4fP9ucXv/ +bG95/3d5f/9wc33/c3Z//3d5f/9ucXv/bnB3/3Byef9ucHf/bnB3/3d5f/9zdn//eXuB/3l7gf93eoP/ +d3l//25xe/9sbnX/b3F1/3N1fP9qbHP/c3V8/3N1fP9qbHP/bG51/3N1fP9tb3P/dXd9/2psc/9ucXv/ +bW9z/2xudf92eHz/c3V8/25wd/9wcnn/cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/bnF7/2xvef9sb3n/ +bnF7/25xe/9zdn//c3Z//3Bzff95e4H/c3Z//3Bzff99foH/eXuB/36Ahv97fYP/d3l//3V3ff91d33/ +dXiB/3d6g/93eoP/c3Z//3d6g/93eoP/e36H/3l8hv93eoP/cHN9/3N1fP9zdn//cHN9/3Byef9sb3n/ +b3F1/25xe/9ucHf/bnF7/3Byef9qbHP/cHJ5/2xudf9tb3P/dnh8/2xudf9wc33/bG95/3N2f/9zdn// +c3Z//2dqdP9sb3n/cHJ5/29yfP92eYD/cnV+/29xeP9tb3P/b3F1/2xudf93eX//bG51/2xudf9ucHf/ +c3V8/3V3ff9wc33/cnR8/3V3ff9xdH3/cHJ5/2xvef9qbXf/cHN8/25xe/9ucXv/c3V8/2ptd/9zdn// +bnB3/2xudf90dn3/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/cHJ5/3V3ff9tb3T/dHd9/2dqdP9zdXz/ +am13/2xvef9sb3n/am13/2Vocf9sb3n/am13/2Nmb/9qbHP/am13/3J0e/9ucHf/cXN6/2tud/93eoP/ +cHJ5/2xudf9sbnX/aGt0/21veP9xdH3/Z2p0/2ptd/9qbXf/am13/2ptd/9ucXv/dXd9/3Byef9vcXX/ +b3F1/25xe/9wc33/dXd9/2xudf9nanT/am13/2psc/91d33/bG51/2psc/9sbnX/Z2p0/3Byef9kZ3H/ +bG95/25xe/9sbnX/am13/3N1fP9qbHP/dXd9/2xvef9gY2z/Zmlz/2dqdP9nanH/bG95/2psc/9qbHP/ +Z2p0/2ptd/9qbXf/Z2px/2dqdP9kZ3H/ZGdx/3Byef9nanH/Z2px/2xvef9nanT/amxz/2BjbP9qbXf/ +amxz/2dqdP9qbXf/ZGdx/2dqcf9kZ3H/am13/25xe/9maXP/cHJ5/2ptd/9sb3n/dXd9/2Rncf9maXP/ +amxz/2xudf9sbnX/bG51/2ptd/9tb3P/bnF7/25xe/9zdXz/cHJ5/3Byef9sb3n/dXd9/2xudf9zdXz/ +am13/2ptd/9sbnX/cHJ5/2dqcf9kZ3H/Zmlz/2xvef9nanT/amxz/3N1fP9sbnX/bnB3/3V3ff94eX3/ +cHN9/29xdf94eX3/bG95/3N1fP91d33/bnB3/2xudf9tb3P/am13/2ptd/9zdXz/cHJ5/3N1fP91d33/ +c3V8/3h5ff9ucHf/bG95/21vc/9zdXz/Z2p0/3N1fP9zdXz/Zmlz/2dqdP9sb3n/bG51/3V3ff9vcXX/ +dXd9/2xudf9qbHP/dXd9/3N1fP9wcnn/cHN9/2xvef9ucXv/bnB3/25wd/9vcXX/bG51/2xudf9sbnX/ +b3F1/2xvef9ucXv/cHN9/25xe/9wcnn/dXiB/3N2f/9zdXz/dXiB/3N2f/93eoP/dXiB/3Bzff9wc33/ +cHJ5/3Bzff9zdn//c3Z//2xvef9ucXv/cHN9/3d5f/9zdn//bnF7/3N1fP9zdXz/c3Z//3N1fP9ucHf/ +cHJ5/3Bzff9zdn//cHN9/3V4gf9zdn//cHJ5/3Bzff9wcnn/cHJ5/3d6g/9ucHf/dXiB/3Byef95e4H/ +eXyG/36Ahv9zdn//c3Z//3Bzff9ydX//dnmA/3J1fv9zdn//bnB3/25wd/9sb3n/dXiB/2xvef9sbnX/ +cHJ5/3Z4fP92eHz/c3V7/3J0ff91d33/bnB3/21vd/9pbHb/Zmhx/2ttdf9sb3n/cXN6/3Fzev9tb3P/ +cHJ7/2ttdf9rbXT/cHN9/25xe/9tb3b/a254/25xev9ucXv/bG95/21wev9xdH7/b3F2/3Z4fv9qbXT/ +dXd9/3Bzff9xc3r/dXd9/3R2fv9sbnb/b3F5/29yfP9sb3b/bG52/2xudv9ydX//cXN7/3Z4fv9wcnn/ +foGK/3d6g/9ucHf/bnB3/25wdf9wc3v/dXd9/2ptdv9rbnf/bnB3/25wd/9ydHv/dHZ8/3N1fP9tcHn/ +bXB3/2tueP9ucXv/dXd9/3V3ff9sb3n/bnF7/25xe/9ucHf/eXuB/25xe/9vcXX/bG51/3N1fP92eHz/ +amxz/3V3ff91d33/bG51/2xudf94eX3/bnB3/3h5ff9zdXz/Z2p0/2xudf9ucHf/bW9z/3Byef9ucHf/ +bnB3/2xudf9zdXz/am13/2ptd/9qbXf/Z2p0/2Zpc/91d33/am13/2psc/9wcnn/amxz/2xudf9maG7/ +c3Z//2ptd/9ucXv/c3Z//2xvef9ucHf/b3F1/3V3ff92eHz/b3F1/3V3ff9ucHf/bnB3/3Z4fP9nanT/ +bnB3/3Byef9zdXz/bnB3/3Byef9ucHf/bnB3/3Byef9ucHf/c3V8/3Byef9ucXv/bG95/3V3ff9sbnX/ +bG95/2Zpc/9qbHP/am13/3N1fP9sbnX/amxz/2psc/9ucXv/bG51/2psc/9ucXv/am13/2psc/9ucXv/ +c3V8/2xvef9qbXf/dXd9/2xudf9ucXv/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/cHN9/2xudf9zdXz/ +dXd9/3N2f/9zdn//bG95/3Byef9ucXv/c3V8/25wd/9zdn//d3l//2xvef9ucXv/cHN9/3Byef95e4H/ +cHN9/3l7gf9wc33/bG95/3l7gf9zdn//dXiB/3N2f/9wc33/c3V8/25wd/9wcnn/cHJ5/3Byef9wc33/ +cHJ5/2xvef9wc33/bnF7/3Byef9ucHf/bW9z/3Byef9wcnn/bG51/3N1fP9sbnX/bnF7/3Bzff9tb3P/ +b3F1/25wd/9ucHf/c3V8/3V3ff9sb3n/cHJ5/2xvef91d33/c3Z//3Byef9ucHf/c3Z//3V4gf93eX// +dXd9/3h5ff95e4H/dnh8/3l7gf9/gYf/eXyG/3l7gf97fof/eXuB/3d5f/9/gYf/dXd9/3t9g/91d33/ +foCG/3t9g/97fof/c3Z//3N2f/9xc3r/cHN6/3J1fP9xc3v/cHJ5/2ptd/9nanT/Z2p0/3V3ff9qbHP/ +Z2px/2ptd/9ucXv/cHJ5/2lsdv9rbnj/b3J5/2xudf9rbnb/a252/2hqcv9naXH/a211/25xef9tcHr/ +a21z/3J0fP9tcHj/bG93/3F0fv9ydX3/b3F5/29xev9ydX3/dHd//3Byef9xdHz/eHqC/3V3ff94e4H/ +cXN6/3l8gv91d3//dnmB/3l7g/96fIP/c3V+/3d4fv92eID/dXd+/3F0fv9xc3v/d3qC/3h6gP99f4b/ +dnh//4OFjP9+f4P/ent//3d5f/94eoD/enyC/3p8gP9ydHv/cHN9/25xe/9vcnv/cnV+/3Z4gP92eH// +cnV+/29yev9wc3v/cHJ5/3V3ff92eHz/bnB3/25xe/9wc33/bnF7/3l7gf9wc33/cHJ5/25xe/9wc33/ +c3Z//2dqdP91d33/dXd9/25xe/9wc33/e32D/3Byef97fof/d3qD/3N1fP9wc33/d3qD/3N2f/9zdn// +c3Z//3N2f/9ucXv/bnF7/25xe/9ucHf/bnF7/2xvef9qbXf/d3qD/3N1fP9wc33/cHN9/25xe/9ucHf/ +Zmlz/3V3ff9sbnX/c3V8/3N1fP9ucHf/bnB3/29xdf9wcnn/dnh8/29xdf95e4H/b3F1/25wd/92eHz/ +Z2p0/2dqdP9ucHf/bnB3/21vc/9sbnX/bG51/2xudf9ucHf/bnB3/2xvef9sb3n/bG95/2ptd/92eHz/ +am13/25xe/9maXP/am13/2xudf9wc33/bG51/2Rncf9qbHP/am13/2psc/9qbHP/bG95/2ptd/9nanT/ +bG95/3N1fP9ucXv/am13/3N1fP91eIH/eXyG/3t9g/9zdn//c3Z//3Bzff9zdXz/bnB3/3N2f/9wcnn/ +dXiB/3l7gf91eIH/dXiB/3Bzff9wcnn/cHN9/3N1fP9vcXX/cHN9/3V3ff9qbXf/bG51/3N2f/9wcnn/ +d3l//2xudf9zdXz/bW9z/2xudf94eX3/c3Z//3V3ff9sb3n/bG95/25xe/9vcXX/bG51/29xdf9vcXX/ +bW9z/21vc/9vcXX/c3V8/2xudf9sb3n/bW9z/25wd/9wc33/cHJ5/29xdf94eX3/bnB3/3N2f/91d33/ +bW9z/2xudf9qbXf/bG51/25xe/9ucXv/bW9z/2xudf9ucHf/dXd9/25xe/9ucHf/amxz/2xudf9sbnX/ +bnB3/2xvef9ucHf/b3F1/2xudf9qbXf/c3Z//3N1fP91d33/dXiB/3N1fP91eIH/foGK/3N1fP93eoP/ +c3Z//3t+h/93eoP/e36H/3N1fP9zdn//cXN7/3N2gP96fIP/eXuB/3p8gv91d33/c3V8/3V3ff97fof/ +dXiB/3Bzff9wc33/dXd9/3V3ff90dnz/dXd+/3J1ff9ucXv/bXB5/3Bze/9pa3P/aWx2/3FzfP90d37/ +c3Z//3F0fP92eH//cnR9/3Bze/90d4H/dHeA/29yfP9xdHz/bXB4/29yfP9vcXv/bG95/21weP9tb3b/ +cHJ5/2ttc/92eHz/bnF6/25wef9ydX3/bXB6/25wd/9tcHn/bW92/29xd/9tb3b/bG54/3Fzd/90dnz/ +dHZ8/2xvef95fIb/cHN9/2xvef9wcnn/bnF7/3R2fP90dn3/cHJ6/21veP9tb3j/bG95/25xe/91d33/ +dHeA/3F0fP9zdn3/bnF6/3Bzff91eIH/d3l//25wd/9ucXv/bnB3/25wd/92eHz/bnB3/2ptd/9qbXf/ +bG51/25wd/9nanH/cHN9/3Bzff9qbXf/bnF7/3V3ff9tb3P/d3l//2xvef9nanT/Zmlz/2xvef9qbXf/ +bG95/2xudf9ucHf/bnB3/3Byef9ucXv/bnB3/25xe/9ucHf/am13/3N2f/9ucHf/bnF7/25wd/9qbXf/ +bG95/2psc/91d33/bG51/3N1fP9wcnn/bnB3/2xudf9sbnX/c3V8/3Bzff9qbHP/dXiB/2psc/9qbHP/ +c3V8/2Jlbv9dYGr/Z2px/2Rncf9maG7/Z2px/2dqcf9qbHP/bG95/2xudf9ucXv/bnB3/3V3ff9sb3n/ +d3l//25xe/9zdn//am13/25xe/9wc33/eXuB/3V4gf9sb3n/c3V8/3V4gf9zdn//d3l//36Ahv95e4H/ +dnh8/3l8hv9+gYr/e32D/3N2f/97fYP/bnB3/3N2f/93eX//cHN9/3N2f/9zdn//c3V8/3N1fP91eIH/ +c3Z//3l8hv97fYP/e32D/3Bzff9ucXv/cHJ5/3Bzff9zdn//c3V8/3V4gf95e4H/cHJ5/2dqdP9zdn// +cHN9/3l7gf9sb3n/dXiB/25xe/9sbnX/dnh8/3Byef91d33/bG51/29xdf9ucHf/b3F1/2psc/9sbnX/ +bG51/21vc/9sbnX/bW9z/3Bzff9wcnn/cHJ5/3Byef9wcnn/dXiB/25xe/9sb3n/eXuB/25xe/9zdn// +bnF7/25wd/9wcnn/bnF7/25wd/9ucXv/cHN9/25wd/9wcnn/cHJ5/3Z4fP9zdXz/cHJ5/2psc/9vcXX/ +bnB3/2xudf9ucHf/am13/2ptd/9qbHP/amxz/3Byef9sbnX/bG51/2xudf9tb3P/bG51/3Z4fP9sbnX/ +bnB3/21vc/9zdXz/bnF7/3Z4fP9tb3P/bG51/25xeP9ydX//dXd9/3V4gf91d33/bnB3/2ptd/9sb3n/ +dXiB/29xdf9sb3n/bnF7/3V3ff9zdXz/cHJ5/3Z4fP9xc3n/cHJ5/25wd/9ucXr/Zmlz/2psc/9wcnn/ +dXd7/25wd/9tb3P/dHd9/2tueP9sb3n/a210/21wef9sbnX/amxz/2hrdf9qbXT/am13/2psc/9ydX// +cnV+/3N2f/9vcnz/eXuA/3J1f/91eIH/enyD/3x/hf95e4H/dnh+/3d5f/96fIH/cnV//3J1fv91eIH/ +eHuF/3p8g/91d33/foGK/3V4gf9wc33/cHN9/3N2f/91eIH/eXuB/3V4fv9wc33/c3Z//25xe/9zdn// +eHqB/3V4gf9ydX7/dHZ8/25wd/9ucXv/cHN9/3N2f/9vcXX/bG95/25wd/9zdXz/dXd9/2xudf9sbnX/ +cHJ5/29xdf9ucXv/am13/3Bzff93eX//bnF7/3V3ff92eHz/b3F1/3d5f/9wcnn/bG51/2xudf9wcnn/ +cHJ5/2ptd/9tb3P/bnF7/2xvef9ucHf/b3F1/25wd/9wcnn/bG95/2xudf9ucHf/am13/25xe/9sbnX/ +am13/2ptd/9nanH/c3V8/2xudf9zdXz/bnF7/2xvef9sbnX/am13/3N1fP94eX3/bG95/3d5f/9ucHf/ +bnB3/3V4gf9sb3n/Z2p0/3V4gf9zdn//cHJ5/3N2f/9zdn//dXiB/3V4gf91eIH/e32D/3d6g/95e4H/ +c3Z//3l8hv91eIH/eXyG/3Bzff91eIH/dXiB/3t9g/93eoP/bnF7/3V4gf95fIb/bnF7/3Byef9ucXv/ +cHJ5/25wd/9zdn//dXiB/3V4gf9wcnn/c3Z//2xvef9qbXf/c3V8/2xvef9nanT/Z2px/2Zpc/9maG7/ +Zmlz/2Zobv9maXP/am13/2xvef9qbHP/bG51/2Zpc/9nanT/bG51/2psc/9ucXv/cHN9/2psc/9nanH/ +bG95/2ptd/9zdn//Z2p0/25xe/9sb3n/am13/3N1fP9ucXv/cHN9/2ptd/9qbXf/bG95/29xdf9sbnX/ +bG51/2xudf9tb3P/bG51/25wd/9wcnn/bW9z/2xvef9qbXf/cHJ5/3N1fP9sb3n/am13/3N1fP9sb3n/ +c3V8/2xudf9ucHf/bnB3/2xvef9ucHf/bnF7/3N2f/9ucHf/cHJ5/3Byef9zdXz/cHJ5/25xe/9sb3n/ +bG95/25wd/9sb3n/bG95/2xvef9sbnX/bG51/2xudf9wc33/bnB3/3Byef9ucHf/bnB3/25xe/94eX3/ +bnB3/3Byef9ucHf/dXd9/3N2f/93eX//b3F1/29xdf9ucHf/dHZ9/3N1fP91d33/eHl9/3Byef9sbnX/ +bnB3/3d5f/9vcXX/bnB3/3Byef92eHz/bnB3/3Byef9wc33/am13/2xvef9qbXf/am13/2dqdP9maXP/ +amxz/3N1fP9nanT/Z2px/2xvef9kZ3H/Zmhu/2RmbP9nanT/Zmhu/2dqcf9kZ3H/Zmhu/2Zobv9kZ3H/ +d3qD/3V4gf93eoP/dXd9/31+gf93eoP/dXiB/3l7gf91eIH/cHN9/3N2f/91eIH/eXyG/3d5f/91d33/ +d3l//3+Bh/97fYP/c3V8/3+Bh/91eIH/c3V8/3N1fP9wc33/d3l//3l8hv97fYP/c3Z//3N2f/9sb3n/ +bnF7/3Bzff9wc33/cHN9/3V3ff9ucXv/bnF7/3Byef9zdXz/bnB3/25wd/9tb3P/cHJ5/25xe/9ucHf/ +bnF7/2xvef9ucXv/cHN9/3N1fP91eIH/d3l//2xvef9zdn//dXiB/25xe/97fYP/dXiB/3V3ff9zdn// +d3l//3l7gf95e4H/dnh8/3d6g/91d33/eXuB/3h5ff96e3//e32D/3d5f/91d33/fn+D/3V3ff97fYP/ +d3l//3d5f/91d33/cHN9/3d6g/9zdn//eXyG/3N2f/9wcnn/c3V8/3N1fP95e4H/e32D/3N1fP97fof/ +cHN9/3Bzff97fof/am13/2Zpc/9ucHf/bG95/29xdf9sbnX/bW9z/2ptd/9sbnX/bnB3/3N1fP91d33/ +eHl9/25wd/93eX//bnB3/25xe/9nanH/bG51/25wd/9zdXz/c3V8/2dqcf9ucHf/c3V8/2psc/9vcXX/ +bnB3/25wd/9qbXf/cHN9/3d5f/9zdXz/bnB3/25wd/9wcnn/cHN9/3h5ff91d33/b3F1/29xdf9ucHf/ +b3F1/3Byef9sbnX/cHJ5/3Byef91d33/bG51/3Byef9qbHP/bnB3/3Byef9vcXX/dXiB/3V4gf9wcnn/ +bnB3/3N2f/9sb3n/eXuB/25wd/9wc33/cHJ5/2xvef93eX//c3Z//3d5f/9ucXv/bG95/3Bzff9ucXv/ +bG95/25xe/9wcnn/c3V8/3V3ff9zdn//d3qD/3N1fP9wcnn/bnF7/3V4gf9+gIb/dXiB/3Bzff93eoP/ +c3Z//3l8hv9zdn//bG95/2xvef9ucXv/cHJ5/3Bzff91eIH/bnF7/25xe/9wcnn/c3Z//3Bzff9wcnn/ +Z2p0/25wd/9vcXX/bnB3/25wd/9ucHf/bG51/25wd/9qbXf/cHN9/29xdf9vcXX/bnF7/3Bzff9zdn// +eXuB/3N1fP91eIH/bnB3/3V4gf91d33/d3l//3Byef9wcnn/bG95/3N2f/9wc33/c3Z//3Z4fP9wcnn/ +bG51/2xudf92eHz/bG51/2ptd/9sb3n/cHN9/2xvef9nanT/Z2p0/2xvef9qbXf/Zmlz/2Zpc/9maXP/ +Zmlz/2xudf91d33/bnB3/3Byef9zdXz/bG95/3Bzff9sb3n/cHN9/3Byef9zdn//c3V8/3Bzff9zdXz/ +cHN9/3Byef9sbnX/bG95/2xudf9wcnn/bnB3/25wd/9zdXz/cHJ5/25xe/9qbXf/bG51/2ptd/9qbHP/ +am13/2psc/9zdn//bnF7/2psc/93eoP/bG95/2dqdP9sbnX/bG95/3N1fP91eIH/dnh8/3Byef9zdXz/ +b3F1/21vc/9ucXv/cHN9/25xe/92eHz/cHJ5/3Byef9wcnn/c3V8/2xudf9wcnn/bW9z/3Bzff9qbXf/ +amxz/2xvef9ucHf/bnB3/2xudf9tb3P/c3V8/3V3ff9sbnX/bG95/25xe/9sbnX/c3V8/2xvef9qbXf/ +Z2p0/2xudf9qbXf/am13/2xudf9sbnX/bG51/25wd/9ucHf/bG95/25xe/9sb3n/bnB3/3N1fP9tb3P/ +cHJ5/25wd/9sbnX/bW9z/2dqcf9ucXv/Z2p0/2ptd/9sbnX/amxz/2xudf9ucHf/eHl9/3d5f/9vcXX/ +dXd9/25wd/9ucHf/eXyG/2ptd/9qbHP/bG95/2xvef9wcnn/bnF7/3Byef9sb3n/bnB3/3Bzff9zdn// +d3qD/3t9g/9zdn//d3qD/3N1fP9zdXz/am13/3Bzff9ucXv/cHN9/3N2f/9nanT/cHN9/25xe/9nanH/ +amxz/2xudf9qbXf/bG51/25xe/93eX//c3V8/29xdf9ucXv/bnB3/3N1fP92eHz/c3V8/2xudf9sb3n/ +bG95/25xe/91eIH/c3Z//3N2f/9wc33/dXd9/2xudf9zdXz/amxz/21vc/9ucHf/b3F1/3V3ff9zdXz/ +b3F1/25wd/91d33/cHJ5/3l7gf9sbnX/dXd9/3Byef9ucHf/c3V8/25xe/9wc33/bG95/2xudf9wc33/ +bG51/2Rncf9qbXf/am13/2dqdP9maXP/am13/3Byef9sbnX/bW9z/25wd/9ucXv/dXd9/2xvef9sb3n/ +c3V8/29xdf92eHz/bnB3/2xudf9qbXf/bnB3/29xdf9vcXX/cHJ5/29xdf91d33/cHJ5/3V3ff9wc33/ +bnF7/3Byef9zdn//cHJ5/3N1fP9wcnn/bnB3/2ptd/9sb3n/am13/3N1fP9vcXX/bW9z/25wd/9ucXv/ +bnF7/3l7gf9vcXX/c3V8/21vc/93eX//c3V8/3V3ff9vcXX/bnB3/2xudf9wcnn/bnF7/3N1fP9ucXv/ +cHJ5/2dqdP9sbnX/eHl9/29xdf9zdXz/dXd9/3Z4fP9zdXz/bnB3/2xvef9sb3n/cHJ5/3Byef9ucHf/ +bnB3/2psc/9sbnX/d3l//25wd/9ucXv/bG95/2xvef9zdXz/bnB3/3Byef9sbnX/bnB3/2xudf9sbnX/ +bG51/2ptd/9ucHf/bnB3/3Byef9ucHf/cHN9/3Byef9zdXz/c3Z//3V4gf91eIH/c3Z//3N2f/91eIH/ +c3V8/3N2f/9zdXz/e36H/3N2f/9ucXv/eXyG/3Bzff9sb3n/bG95/3Bzff9zdn//e36H/3t9g/9zdn// +c3Z//25wd/9ucXv/cHN9/3Z4fP91d33/d3l//3V3ff9ucHf/cHN9/3V4gf9ucXv/c3Z//2xvef9zdn// +bnF7/25wd/9ucXv/bnB3/3N1fP9ucHf/b3F1/2xvef9zdXz/amxz/2xvef9wc33/am13/25xe/9wcnn/ +bG51/2dqcf9ucHf/bG51/25wd/9qbXf/cHJ5/25wd/9wcnn/bG51/25wd/9zdXz/bnB3/25wd/9zdXz/ +amxz/25wd/9sbnX/bG51/21vc/9maG7/bG95/2dqdP9qbHP/bG51/2dqcf9nanH/Zmhu/3Byef9wcnn/ +Z2px/25wd/9gY2z/ZGZs/3Byef9iZW7/XWBq/2BjbP9maG7/ZGdx/2Zobv9maG7/ZGdx/2Zpc/9nanT/ +bnF7/3Bzff9zdXz/bG95/3V3ff9qbXf/bG51/2dqdP9qbHP/am13/2xvef9wcnn/amxz/3Byef9ucXv/ +Z2p0/2ptd/9ucHf/bnB3/21vc/9sb3n/c3V8/3V3ff9sbnX/bG51/2dqdP9nanT/cHJ5/25xe/9qbXf/ +bnB3/2Zpc/9maXP/am13/2xvef9ucXv/bnF7/3Bzff9ucHf/bnF7/2ptd/9sbnX/bnB3/21vc/9ucXv/ +bnF7/2xudf9nanT/dXd9/2ptd/9zdn//amxz/2ptd/9nanT/amxz/2xvef9ucXv/bG95/25wd/9sbnX/ +bnB3/2xudf9qbHP/bnB3/29xdf9ucHf/am13/25wd/9ucXv/bG95/2xvef9wc33/bnF7/3l7gf9wc33/ +cHJ5/3V4gf9wc33/eXuB/3Bzff9sb3n/cHJ5/25wd/9ucHf/bW9z/3Byef9tb3P/cHJ5/25wd/9zdXz/ +bG51/25wd/9nanT/bG51/2psc/9sbnX/bnB3/21vc/9sbnX/bnB3/25wd/9zdXz/bnB3/29xdf9vcXX/ +cHJ5/3Bzff91eIH/bnB3/3Bzff9wcnn/e36H/3d6g/95e4H/cHN9/3N1fP9ydHz/enyC/3p8gv99f4X/ +fn+D/3t9g/92eHz/d3qD/3t+h/9wc33/d3qD/3t9g/97fYP/d3qD/3d6g/94e4X/dXiB/3Z5gv9ydX7/ +dHeA/3Fzev9rbnj/bnB3/3d4ff9vcnz/cnV+/25xe/9vcXn/bnB3/21vdv9tb3b/bG51/25wd/9ucHT/ +bnB4/21wef9sb3n/bnB3/2ttdP9pa3X/aGty/2tueP9pa3X/a210/2tueP9sb3b/c3V7/25wd/9tb3b/ +cHJ5/21vdv9ucHf/bG51/3h6gP9ucHf/am13/3N2f/9qbHP/YmVu/2Jlbv9maXP/Z2p0/3N1fP9tcHr/ +bG95/2ptd/9oanT/am13/2xvef9xc33/cHN8/3R2fP9sb3n/amxz/2dqdP9ucXv/bG95/3V3ff9tb3P/ +cHN9/2ptd/9sb3n/am13/2xudf9wcnn/bnB3/21vc/9wcnn/dXd9/2ptd/9ucXv/cHN9/2xudf9wcnn/ +c3V8/2xudf9kZ3H/am13/25wd/9wcnn/bG51/2xvef9sbnX/am13/2Zpc/9maXP/bG95/2ptd/9qbXf/ +am13/2dqdP9nanT/Zmlz/2Zpc/9nanT/YmVu/2xvef9maXP/Z2px/2xudf9qbHP/Z2p0/2psc/9zdXz/ +cHN9/2dqdP9wcnn/amxz/2psc/91d33/Z2p0/2Rncf9maXP/bG95/2dqdP9sbnX/Z2px/2dqcf9nanT/ +Z2p0/3Bzff9wc33/cHJ5/2dqdP9wcnn/Z2p0/2dqcf9maXP/Zmlz/2ptd/9nanT/am13/2Rncf9sbnX/ +bG95/2Jlbv9nanT/bG51/2xvef9nanH/Z2p0/25xe/9ucXv/amxz/2dqcf9sbnX/bG95/3d5f/9wcnn/ +bnB3/3Byef9sbnX/bG51/3V3ff9ucHf/bnB3/3Byef9ucXv/bG95/3Byef9qbXf/bG51/2xvef9sbnX/ +c3V8/3Byef9vcXX/bG51/3Z4fP9zdXz/eHl9/25wd/9wcnn/bnB3/2xudf9wcnn/cHN9/3Byef9ucHf/ +bnB3/3Byef9sbnX/ZGdx/2xudf9sbnX/Z2p0/2dqdP9sbnX/bnB3/25wd/9vcXX/cHN9/3Byef94eX3/ +cHJ5/2xvef9wc33/cHN9/3d5f/9sb3n/bG95/25xe/9sb3n/bnB3/29xdf9wcnn/bG51/25wd/9wcnn/ +c3Z//25xe/9wc33/bnB3/3N1fP9zdXz/dXiB/2ptd/9ucHf/bG51/2xudf9sbnX/bnF7/2ptd/9sbnX/ +bG51/2xvef9wc33/dXd9/21vc/9zdXz/bnB3/3h5ff9wc33/eXuB/25xe/9qbXf/b3F4/3Bzff9ydHz/ +dHZ9/3V3ff9qbXf/bG51/3N1fP94eX3/bnB3/3N2f/92eHz/dXd9/3Byef9ucXv/cXR9/29xeP9xc3r/ +bnB3/25wev9pa3T/Z2p0/2ttdf9xc3v/bXB6/2xveP9rbnj/am12/2ZpcP9oanH/amxz/2dqcv9kZ3H/ +ZWhy/2Zpc/9maXD/Z2lv/3Bzff9tb3f/b3F6/21vdv9vcnv/bnB3/25wd/9vcXj/cXN6/3J0ev9ucHj/ +bXB6/29yfP9vcXb/bG95/2ttdf90d3//bG52/2xudv91d33/am13/2Rncf9nanT/bG95/21wev90d4D/ +cnR8/3Bzff9rbnj/am13/21wev9vcnz/cXR+/29yfP9zdX3/bXB6/2ptd/9nanT/bG95/2ptd/9ucXv/ +amxz/25xe/9qbXf/bG51/2ptd/9qbXf/bG95/2xvef9qbHP/bnF7/3V3ff9qbHP/bG95/3N1fP9sb3n/ +bG95/3Byef9vcXX/Zmlz/25wd/9zdXz/c3Z//3Byef9zdn//cHN9/25xe/9qbXf/bnB3/3N2f/9wc33/ +bG95/3Byef9sbnX/cHN9/25wd/9wcnn/bG95/2dqdP9wcnn/am13/3Byef9wc33/bG95/2xvef9vcXX/ +d3l//3d5f/9zdXz/c3V8/2ptd/9sb3n/d3l//2xudf9sbnX/Z2p0/3Byef9ucHf/bG51/2xudf9tb3P/ +bG95/2ptd/9zdXz/cHN9/3N1fP9sb3n/bnF7/2Zpc/9nanH/ZGdx/2dqdP9sb3n/am13/3Byef9nanH/ +bG51/3N1fP9kZmz/amxz/25wd/9wcnn/bG51/3Bzff9wc33/d3l//2xvef9qbXf/Z2px/2ptd/9zdXz/ +Z2p0/2dqcf9qbXf/Zmlz/2psc/9qbXf/ZGdx/2Zobv9maXP/am13/2dqcf9nanT/amxz/2ptd/9ucXv/ +bG51/3Byef9ucHf/b3F1/2psc/92eHz/cHJ5/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/3V4gf9wc33/ +c3V8/2xvef9wc33/bnB3/2dqdP9vcXX/b3F1/25wd/9sbnX/bG95/25wd/9sbnX/am13/25xe/9qbXf/ +dnh8/2xudf9tb3P/cHJ5/3Byef91d33/bG51/2dqdP9sb3n/am13/2dqdP9sbnX/bnF7/25wd/9wcnn/ +am13/3Bzff9ucHf/cHJ5/2xvef9ucHf/bG95/3Bzff9qbXf/cHJ5/2xvef9ucHf/bG95/3N2f/9sb3n/ +bG95/25wd/9wc33/dXiB/3l8hv9ucHf/dXiB/25xe/93eoP/c3Z//3d6g/9ucXv/am13/21weP9xc3v/ +b3F5/3R3fP90dnz/bnF7/21vc/9ucHf/dXd9/2ptd/9sb3n/bnF7/3N1fP9sbnX/bnB4/25xev9ucHj/ +bnF5/25wd/9tcHr/Z2p0/2xvd/9tcHj/cnV9/3Bze/9ydHv/cHN9/3BzfP9vcnz/dHZ8/3N1e/9xc3r/ +bnB5/3J0e/9wcnv/bnF5/21weP9ydHv/bG51/3Fze/9rbXb/bXB6/3Byef9sb3n/bG95/2xvef9rbXb/ +aWx0/21weP9pbHb/b3F6/2lsdv9rbnb/bnF6/2ptdv9qbXf/c3V8/2xvef9kZ3H/Zmlz/2xvef9qbXf/ +cHN7/2xvef9ucHn/am12/2tudv9tb3b/bW92/29yfP9ucHn/dXh//3Fzev91d33/dXd9/3V4gf9wc33/ +c3Z//3Byef91d33/bnB3/29xdf9wc33/bnF7/3N2f/9zdn//bnB3/3d5f/95e4H/cHJ5/3Bzff95e4H/ +dXiB/3d6g/9wc33/cHJ5/25xe/9wc33/dXiB/3l7gf9zdXz/c3Z//25xe/9wc33/bnB3/3Byef93eX// +cHN9/25wd/9ucHf/Z2px/3Byef9ucHf/bW9z/2dqdP9iZW7/am13/2Rncf9sbnX/c3V8/3N1fP9sbnX/ +b3F1/3h5ff93eX//dXiB/3N2f/9sb3n/cHN9/3l7gf9ucHf/cHN9/3V3ff97fYP/eXuB/3l7gf93eX// +dnh8/3t9g/95e4H/foGK/36Biv9/goz/f4GH/35/g/92eHz/dXiB/3Z4fP92eHz/e32D/3l7gf95fIb/ +c3Z//3V4gf93eoP/Zmlz/2ptd/9zdXz/cHJ5/2dqdP9ucXv/bnF7/3V3ff9sb3n/amxz/25wd/9wcnn/ +d3qD/3Bzff9ucXv/c3Z//2ptd/9ucHf/dXd9/25wd/9sb3n/cHJ5/3Bzff9wc33/c3Z//25wd/9sb3n/ +cHN9/25xe/91eIH/c3Z//25xe/9sb3n/e32D/3l8hv95fIb/c3Z//3V4gf9ucXv/bnF7/3V4gf95fIb/ +d3qD/3V4gf9zdn//d3qD/3Bzff9ucXv/bnB3/2xvef9sb3n/bG95/3N2f/91eIH/cHJ5/2xvef91d33/ +cHN9/3d5f/9ucHf/am13/3Byef9wcnn/dnh8/25wd/9sb3n/c3V8/29xdf9qbXf/bG95/3N1fP9wcnn/ +c3Z//3N2f/93eoP/cHN9/3V4gf9wc33/bnF7/25wd/9zdn//bG95/3Byef9ucHf/bG95/2xvef9zdn// +bG95/25wd/9ucHf/c3V8/3Byef91d33/amxz/25xe/9qbHP/c3V8/2xvef9ucHf/Zmlz/2Rncf9sb3f/ +b3J8/2ttdP9ucXr/cnR7/2xvef9tb3P/bnB3/3V3ff9sbnX/cHN9/3N2f/91d33/cHN9/29yfP9zdXz/ +bnF7/3F0fv90dn3/cXN7/2hrdf9vcXn/b3F5/3N2gP9wcnn/cXN8/3Bzff9ydHv/cnV+/3Z5gv92eYH/ +c3Z+/25xe/9zdn7/cnR9/3J1ff9tcHn/cXR9/3Fzev90d4D/bXB6/3N2gP9wc3z/b3J8/3F0ff9vcnz/ +b3F6/21wd/9ydX3/cHJ7/3J0e/9tb3f/a252/3N1fv9tcHj/cHJ5/3Z4f/9zdXz/Z2px/2psc/9wcnr/ +bW92/3J0e/9ucHn/bnF5/2xvd/9ucHT/cHJ5/21vdv9xc3r/b3F4/3N1e/9vcXn/bG95/25xe/91d33/ +c3V8/3N1fP9qbXf/c3V8/2xudf9sbnX/am13/2xudf9wcnn/cHJ5/21vc/92eHz/d3l//2ptd/9ucXv/ +dnh8/3Byef9wcnn/cHJ5/2xudf9maG7/bG51/3N1fP9wc33/bG51/2ptd/9sbnX/amxz/2ptd/9vcXX/ +dnh8/25xe/9ucHf/bG51/2dqdP9ucXv/cHJ5/25wd/9sbnX/Zmlz/3Bzff9nanT/bnF7/3N2f/9wc33/ +am13/25xe/93eoP/e32D/3V4gf95e4H/cHJ5/3Bzff97fYP/bnB3/3Byef9ucHf/cHN9/25xe/9wc33/ +bnB3/25wd/9ucHf/bW9z/3V3ff9wc33/dXiB/2xvef9wc33/bG51/3Byef9sb3n/bnB3/3N2f/9wcnn/ +c3V8/2psc/9zdXz/c3V8/2dqcf9sbnX/cHJ5/2xudf9sbnX/c3V8/3Byef91d33/dXd9/3Byef9wcnn/ +c3Z//3d6g/9ucXv/bnB3/3N2f/9ucHf/cHJ5/3d6g/9zdn//dXiB/3l8hv97fYP/fX6B/3t9g/91d33/ +d3qD/3l8hv93eX//fn+D/3t9g/97fYP/cHJ5/31+gf97fYP/fn+D/3l7gf9+gIb/d3l//3l7gf9zdn// +d3qD/3t9g/91eIH/dXiB/3N2f/9zdXz/c3V8/3N1fP9wc33/bG95/3N1fP93eoP/c3Z//3N1fP9sb3n/ +cHN9/3Bzff93eX//cHJ5/2ptd/9wcnn/bG95/3V3ff9sbnX/bnB3/3V3ff9ucHf/amxz/25wd/9zdXz/ +bG95/25wd/9sbnX/cHJ5/25wd/91d33/bnB3/25wd/9ucHf/dXd9/2xudf9sbnX/bW9z/2ptd/9qbXf/ +cHN9/2xudf9wcnn/bG51/2ptd/9qbXf/dXd9/2psc/9sb3n/Z2px/3N1fP9qbXf/bnB3/2Zpc/9dYGr/ +a210/29yfP9sbnX/bW92/3Fzev9sb3n/amxz/2xvef9ucXv/bG51/2xvef9zdXz/bnF7/2ptd/9rbnf/ +b3F4/21wev90dnv/dHd7/29xef9maW//bW93/3J0e/9zdXz/bnB4/3Byef9wc3z/dHd//3R3f/94eoP/ +dnmC/3V3gP9rbnf/c3V9/29yfP9vcnz/bnB2/21vdv9qbHL/b3J5/2xveP9sb3n/bXB6/21weP9tb3b/ +bG53/21weP9pa3P/cHJ6/29yev9ydHn/bnB3/25wdf91d33/bnF7/3J0fP93eX//c3V8/2Zobv9sbnX/ +c3V8/3BzfP91dnv/cnR5/3N1e/9xc3j/bW91/21veP9sbnT/bW92/29yev91d3//cHJ5/3Bzff91d33/ +d3l//3N1fP91d33/bG95/3l7gf9ucXv/bnB3/25xe/9sb3n/dXiB/3V4gf9ucXv/dXd9/3N2f/9nanT/ +bnF7/3l7gf9wc33/c3Z//3N2f/9sb3n/Z2p0/29xdf91eIH/c3Z//25wd/9ucHf/cHJ5/2xudf9ucHf/ +bG51/3Z4fP9wc33/cHJ5/3N2f/9nanT/cHN9/3Bzff9wcnn/bnF7/2ptd/95e4H/bG95/3N1fP95fIb/ +e32D/3N1fP9zdn//foGK/3l7gf91eIH/dXiB/3Byef9wc33/e36H/3V3ff91d33/dnh8/3t9g/95e4H/ +dXiB/3N2f/9zdXz/c3Z//3N1fP93eX//c3Z//3t+h/93eoP/eXuB/3N1fP9ucXv/bG95/2xvef9zdn// +cHN9/3Bzff9sb3n/cHN9/3N1fP9qbHP/bG51/3Byef9sbnX/amxz/3Bzff9wcnn/dXiB/3V3ff9wc33/ +bW9z/2xvef9ucXv/bnF7/2xudf9zdXz/bG51/2xudf9ucXv/am13/25wd/9wcnn/bG95/3N2f/9zdXz/ +bnB3/2xvef9wcnn/b3F1/3Z4fP9wcnn/cHJ5/2Zobv9ucXv/bnF7/3N1fP9qbXf/bnF7/21vc/9ucXv/ +bG51/2xvef9ucXv/bG51/2psc/9qbXf/ZGdx/2Zpc/9nanH/bG51/2Jlbv9nanT/bG95/2ptd/9qbHP/ +Z2p0/2xvef9ucXv/dXd9/3Byef9ucHf/cHN9/3Bzff97fYP/cHN9/25wd/93eoP/cHN9/2xvef91d33/ +eXyG/3N2f/93eoP/c3Z//3d6g/9wc33/e32D/3d5f/95e4H/dXd9/3t+h/9zdn//dXd9/3Bzff9wc33/ +bnB3/3V4gf9ucHf/bnF7/2xvef9wcnn/c3Z//3d6g/9ucHf/dXd9/25wd/95fIb/c3Z//3t9g/91eIH/ +am13/25xe/91eIH/b3J7/3F0fP92eH7/c3V8/25wd/9wc33/dXiB/3Byef9wc33/c3Z//3V4gf9zdn// +b3J8/3R2ff9xdH7/cnV+/3h6gP9wc3z/aGt0/21wd/90d3//c3Z//3Byef9vcXb/b3F4/25xe/9xdHz/ +cnR8/3N0ev9wcnv/bG95/3J0fP9vcnr/bnB5/21vdf9xdHv/b3F4/3N2fv9tb3j/cnR9/25xev9vcnv/ +bnB3/3R2fP9ydHv/bG52/21vd/9vcnz/b3F4/25xe/9tcHn/d3l//21wd/9ydHz/dnh8/3Byef9kZmz/ +Z2p0/3Byef9ucXv/dHd9/3N1fP9wc3z/dHd+/2xvef9sb3n/cHJ5/3Bzff90dn3/dnmD/3R2f/91eIH/ +eXyG/36Ahv95fIb/foCG/3V4gf95e4H/cHN9/3Byef9ucXv/c3V8/3V3ff9zdn//bnF7/3Z4fP9wc33/ +ZGdx/2ptd/9zdXz/Z2p0/2xvef9sb3n/Zmlz/2Jlbv9qbXf/c3V8/3N1fP9nanT/bG95/2xvef9qbXf/ +bG51/21vc/9zdXz/bnF7/2xudf9qbXf/YmVu/2xvef9sbnX/bG51/2Zpc/9kZ3H/cHN9/2Zpc/9ucHf/ +c3V8/3Byef9nanH/b3F1/3Z4fP9zdn//cHN9/3Bzff9ucHf/bnB3/3l7gf9wcnn/bnF7/25wd/9wc33/ +c3Z//3Bzff9ucXv/bG95/25xe/9ucHf/dXiB/3d6g/9+gYr/c3Z//3N2f/9vcXX/bnB3/25wd/9tb3P/ +cHN9/2ptd/9sb3n/Z2p0/25xe/9qbXf/ZGdx/2Zpc/9ucXv/am13/2Zpc/9wc33/cHJ5/3V3ff91d33/ +cHJ5/2psc/9qbXf/dXd9/3Bzff9tb3P/cHJ5/2xudf9qbHP/bG95/2psc/9qbXf/bG95/2xudf9wc33/ +bnF7/2ptd/9sb3n/bG95/2ptd/91d33/c3V8/25wd/9kZ3H/bG95/3V3ff91d33/bnB3/3Byef9sbnX/ +bG95/2psc/9qbXf/bG95/2xudf9nanT/bnF7/2dqdP9qbXf/bG51/2ptd/9maXP/am13/2xvef9sb3n/ +am13/2ptd/9zdXz/cHJ5/3Z4fP9wcnn/bnB3/2xvef9sb3n/c3V8/3Byef9sbnX/c3V8/2psc/9nanH/ +bG51/25wd/9tb3P/cHN9/2psc/9sbnX/bG51/3V3ff9ucHf/cHJ5/21vc/92eHz/am13/2dqdP9qbHP/ +bG51/2psc/9zdXz/am13/2xvef9qbXf/bG51/2xvef91d33/bnB3/3Z4fP9tb3P/eXuB/3N1fP93eX// +cHN9/2dqdP9ucHf/dXiB/29yfP9xdHz/dXh//25weP9sbnX/cHJ5/3N1fP9qbXf/bnF7/25xe/9sb3n/ +cHN8/3Byef9ydHv/bnB4/25xev9xc3r/am13/2dqdP9sb3j/bG95/3Bye/9rbnj/am12/2tueP9rbnj/ +bG95/29xeP9rbnf/bnF6/21wev9xdH3/cXR+/3F0ff9vcnv/cnR7/2hrdf9sbnb/bG94/25weP9sbnb/ +b3F5/2xvef9wc33/dHZ8/2ptd/9xc33/dnh8/21wev9ydX7/dHZ8/31+gv9ucHf/c3Z//3l7gf93eoP/ +Z2p0/2xvef9zdn//c3Z//3Z4fv92eH7/cHN9/3J1fv9sb3n/b3J8/2xvef9sb3n/dHd7/3Z4fv9tcHr/ +c3V8/3N1fP91d33/c3V8/3Z4fP9ucHf/dnh8/3N1fP9vcXX/bnB3/25xe/93eoP/c3Z//3Bzff95e4H/ +dXiB/2ptd/9zdn//d3qD/25xe/9zdn//dXd9/29xdf9maGz/b3F1/3V3ff91d33/bnB3/3Byef9ucHf/ +bG51/2xudf9sbnX/dXd9/25xe/9qbXf/bG51/1xfaP9qbHP/amxz/2psc/9iZW7/YmVu/2xvef9iZW7/ +Z2p0/25xe/9sb3n/am13/2psc/91d33/bnF7/3Byef9zdXz/bG95/3Byef91d33/bnB3/2xvef9ucHf/ +bnF7/3Byef9zdXz/cHJ5/25wd/9zdXz/bnB3/3Bzff9wc33/e36H/3Bzff91d33/bG95/3Bzff9wcnn/ +cHJ5/3N2f/9wc33/cHN9/25wd/91d33/bnB3/2dqcf9qbHP/c3V8/3Byef9nanH/bnF7/3N1fP93eX// +dXd9/25xe/9tb3P/cHJ5/3V3ff9zdn//bG95/25xe/9vcXX/b3F1/3N1fP9sbnX/bW9z/2xudf9ucHf/ +c3Z//3V4gf9ucHf/bnF7/25xe/9wcnn/d3qD/3V4gf9zdn//bG95/3N2f/93eoP/eXuB/3Bzff91eIH/ +cHN9/25xe/9ucHf/bnF7/3Bzff9ucXv/bnB3/3d5f/9sb3n/bnF7/3Bzff9wc33/bG95/3Byef9zdn// +cHN9/3Bzff9zdXz/d3qD/3V4gf97fYP/cHJ5/3N2f/9wc33/c3Z//3d5f/9zdn//cHJ5/3V4gf9wc33/ +cHN9/3N2f/93eoP/dXiB/3t9g/9zdXz/cHN9/3Bzff91d33/c3Z//3N2f/9sb3n/c3Z//2xudf9ucHf/ +bnB3/25wd/9qbHP/c3Z//3Bzff9zdn//bG95/3Byef9sbnX/d3l//2ptd/92eHz/bW9z/3d5f/9zdXz/ +d3l//3Bzff9maXP/bG95/3Bzff9sbnX/bnF7/3F0fv9xdH3/bnF7/3N2f/93eX//bG95/3Bzff91d33/ +dXd9/3Byef9ucHf/cXN6/21veP9sb3f/bXB4/2tudv9oa3X/am1z/2xud/9zdn3/am13/2tudv9oa3X/ +Zmlz/2hrdf9pbHP/aGt0/2hqcP9naW//Zmhu/2hrdf9oa3L/Z2p0/3N1fP9sbnX/bW9z/25wd/9sb3n/ +bG95/25xe/9sb3n/cHN9/3N2f/9qbXf/bnF7/3N2f/9ucHf/dXiB/3Z4fP99foH/b3F1/3N1fP94eX3/ +c3V8/2dqcf9qbHP/cHJ5/3N1fP91d33/dnh8/3Byef9zdn//bG51/3Byef9ucHf/bW9z/3V3ff91d33/ +bG51/3Byef9ucXv/c3V8/2xvef9zdXz/bG95/3d5f/9ucXv/bG51/3N1fP9ucHf/dnh8/3Byef9ucXv/ +d3l//3Bzff9nanT/c3Z//3d5f/9ucHf/cHJ5/3Z4fP9vcXX/ZWZq/29xdf9zdXz/dnh8/2ptd/9wc33/ +cHN9/25xe/9ucHf/bnB3/3N2f/9wc33/bnB3/3Byef9maG7/bG51/2xudf9qbXf/Zmlz/2Zpc/9sb3n/ +YmVu/2psc/9sb3n/am13/2dqdP9sbnX/bnF7/2xvef9ucXv/bnF7/2xudf9qbXf/bnF7/2xudf9qbXf/ +amxz/2xvef9sb3n/bnF7/2xudf9nanH/c3V8/2xudf9ucHf/bnF7/3d6g/9wcnn/dnh8/25wd/9wcnn/ +b3F1/29xdf9zdXz/bG95/3N1fP9sbnX/c3V8/2xvef9maXP/ZGdx/25xe/9qbXf/Zmlz/3Byef9zdXz/ +eHl9/3Z4fP9wcnn/bnB3/3Bzff91eIH/c3V8/29xdf9ucHf/bW9z/21vc/9wcnn/bG51/2xvef9sbnX/ +bG51/3Bzff9sb3n/ZGdx/2dqcf9maG7/Zmlz/2xvef9wc33/bnF7/2dqdP9ucHf/c3V8/3V3ff9sbnX/ +c3V8/2ptd/9ucXv/am13/2xvef9ucXv/bnB3/2xudf91d33/amxz/2xudf9ucHf/b3F1/2dqcf9ucHf/ +bnB3/25xe/9ucHf/bG95/3N1fP92eHz/dXd9/2xvef9wc33/cHJ5/25xe/9zdn//cHN9/3Byef91eIH/ +bnF7/25xe/9sb3n/dXiB/3V4gf9+gIb/dXd9/3V4gf91eIH/e32D/3N2f/93eoP/bnB3/3V3ff9sb3n/ +bnB3/25wd/9sb3n/bG51/3N2f/9wc33/dnh8/25wd/9zdXz/bG95/3d5f/9qbXf/dXd9/21vc/93eX// +cHN9/3Bzff9sb3n/ZGZs/3Byef9wc33/am13/29yfP9zdoD/c3Z+/3Byef93eoP/eXuB/3Byef93eoP/ +e32D/3l7gf91eID/dnmB/3t9gP92eIH/c3Z+/3R3f/9ydH3/cnV+/3J0ff9wcnn/eHqE/3N1fv9sb3n/ +bG95/25wd/9zdXz/bW9z/2xudf9ucHf/bG95/29xdf9zdXz/cHJ5/25xe/9qbXf/ZGdx/2psc/9qbXf/ +amxz/21vc/9wcnn/b3F1/3Byef9wc33/Z2p0/25xe/91eIH/bnB3/3d6g/95e4H/f4GH/3N1fP93eoP/ +e36H/3d6g/9wc33/bnF7/3t9g/95e4H/eXuB/36Ahv93eoP/eXuB/25xe/91eIH/c3Z//2xvef91d33/ +dXd9/2xudf9ucHf/cHJ5/3N1fP9zdXz/eHl9/3Bzff91eIH/cHN9/25xe/9zdXz/c3Z//3d5f/93eoP/ +dXiB/3d5f/9wc33/amxz/3Bzff93eX//bG95/3V4gf95e4H/cHJ5/2dqdP9ucHf/d3l//3l7gf9ucXv/ +cHN9/25xe/9sbnX/bG51/21vc/9ucXv/cHJ5/2xudf9ucXv/Zmlz/2ptd/9sbnX/am13/2dqdP9nanH/ +bnF7/2Zobv9ucHf/bnF7/25wd/9qbHP/am13/3Bzff9ucXv/bnB3/3Bzff9sbnX/bW9z/3N1fP9wcnn/ +bnB3/29xdf9ucHf/bG51/3Byef9qbXf/Zmlz/25xe/9nanH/bG95/25xe/91eIH/am13/3Bzff9nanT/ +am13/2Zpc/9nanT/cHN9/21vc/9zdXz/bW9z/3V3ff9ucXv/Zmlz/2dqdP91d33/bnF7/2ptd/9wc33/ +bG95/3V3ff93eX//cHN9/2psc/9qbHP/am13/2xvef9qbHP/bnF7/2dqcf9qbHP/bG95/2psc/9ucXv/ +bG51/21vc/91d33/cHJ5/2ptd/9sbnX/bG51/2psc/9ucHf/cHJ5/3Byef9qbHP/cHJ5/3N1fP94eX3/ +bnF7/3Bzff9ucXv/cHJ5/25wd/9wcnn/cHN9/25wd/9ucHf/dnh8/2dqdP9qbXf/bG51/21vc/9kZmz/ +b3F1/25wd/9zdXz/bnB3/25wd/9ucHf/c3V8/3V3ff9ucHf/c3Z//25wd/9ucHf/c3V8/3Bzff9wcnn/ +c3Z//2xvef9nanT/am13/3N2f/9ucXv/d3l//3Bzff9wc33/c3Z//3l7gf9wc33/c3Z//2xvef92eHz/ +bnB3/29xdf9ucHf/bnF7/2xvef91d33/c3Z//3V3ff9sb3n/cHJ5/29xdf91d33/bG51/3Z4fP9tb3P/ +d3l//3V3ff9wc33/cHN9/2Rncf91eIH/c3Z//2xveP9vcnz/c3aA/3V4gP9sb3n/dXiB/3V3ff9sbnX/ +c3V8/3Z4fP91d33/c3V8/29xdf9xc3n/cHJ5/3Fzev9vcXb/bG95/3Bzff9ucHf/bnB3/3V3ff9wcnn/ +bG95/2xudf9nanT/cHN9/2psc/9maXP/amxz/2psc/9qbHP/bG95/25xe/9sb3n/dXiB/3N1fP9wc33/ +d3qD/3N1fP9wc33/dXiB/3l7gf95e4H/d3qD/25xe/95e4H/d3qD/3N1fP91eIH/dXd9/3l8hv9sb3n/ +c3V8/3V3ff9wcnn/Z2p0/2Zpc/92eHz/dXd9/3V3ff91d33/bnB3/3Bzff9nanH/bnB3/2xvef9qbXf/ +bnF7/3Bzff9sbnX/cHJ5/3N1fP9wc33/c3Z//3t9g/91eIH/foGK/3d6g/93eoP/c3Z//3l7gf97fof/ +eXuB/3d6g/97fof/eXuB/3V3ff95fIb/e36H/3V4gf95e4H/eXyG/3Bzff9qbXf/cHJ5/3N2f/93eX// +bG51/3Byef9ucHf/bG51/25wd/9ucHf/c3V8/3V3ff9sbnX/bnF7/2Rncf9qbXf/Z2p0/2dqcf9nanH/ +YmVu/2xvef9iZGr/bG51/25xe/9sb3n/Z2p0/2xudf9wc33/bG95/2xvef9zdXz/bG51/2xudf9wc33/ +bG95/2dqdP9maXP/am13/2ptd/9sb3n/amxz/2Zpc/9zdXz/am13/2ptd/9ucXv/dXd9/2dqdP9qbXf/ +YmVu/2dqdP9iZW7/Z2px/2ptd/9maXP/bG95/2Zobv9qbXf/Zmlz/2BjbP9gY2z/bnF7/2ptd/9maXP/ +am13/2psc/9wc33/bnF7/2dqdP9ucXv/c3Z//3Bzff9wc33/bG95/3N2f/9ucHf/bG95/25xe/9sb3n/ +c3V8/25xe/9tb3P/dXd9/25wd/9ucHf/b3F1/25wd/9qbXf/am13/25wd/9sb3n/Zmlz/2ptd/9ucXv/ +c3V8/2ptd/9ucXv/bG51/2xvef9sb3n/bG95/2xvef9ucHf/am13/3Bzff9nanT/am13/2ptd/9sbnX/ +YmVu/2psc/9nanT/bG95/2psc/9qbHP/am13/25xe/9sb3n/amxz/25xe/9qbXf/bG51/25xe/9sb3n/ +bG51/2xudf9kZ3H/Z2p0/2Rncf9sb3n/cHJ5/3N1fP9sb3n/bW9z/25wd/91d33/c3V8/3V3ff9ucHf/ +eXuB/25wd/9wcnn/am13/2xvef9qbXf/c3Z//3V3ff91d33/b3F1/3Byef9ucXv/d3l//25xe/93eoP/ +cHJ5/3d6g/9ucXv/c3Z//3V4gf9maG7/dHeA/29ye/9rbnf/cHN8/3R2fP9vcnz/bG51/3Bzff91d33/ +bG51/3N1fP9zdXz/c3V8/3N1fP9tb3P/bnB3/3N1fP9ucXv/am13/2psc/9sb3n/am13/2psc/9zdXz/ +Z2p0/2xvef9nanH/amxz/3N1fP9sbnX/bG51/2xudf9tb3P/b3F1/3Byef91d33/cHJ5/3V4gP9zdXz/ +c3Z//3R3gP9ucXv/bnB3/2xvef9ucXv/cHJ5/3J0e/9rbXP/dHZ9/3V3ff9vcXj/cnR7/3R2fP91eIH/ +bW90/25xe/9zdXz/am13/2dqcf9maG7/dXd9/3Byef92eHz/dXiB/25xev90d4D/aGt1/3N2f/9xdH7/ +b3F4/3V4gf92eYH/c3V8/3d6g/95fIb/d3qD/3l8hv9+gYr/eXyG/4GDiv91eIH/dXiB/3V4gf91eIH/ +eXyG/3t9g/9ucXv/d3l//25xe/9ucHf/c3V8/3h5ff9ucXv/d3l//3V3ff9ucHf/Zmlz/29xdf92eHz/ +dnh8/2psc/9tb3P/cHJ5/2ptd/9sb3n/bG95/3N2f/91eIH/c3Z//3V4gf9qbXf/bnF7/25wd/9ucHf/ +bnF7/2Zpc/9zdn//Zmhu/29xdf9wc33/bG95/2dqdP9ucHf/d3qD/25xe/9wc33/cHN9/25wd/9ucHf/ +eHl9/3N1fP9ucHf/bnB3/25wd/9ucHf/bnF7/2xudf9qbHP/dXd9/2xudf9sb3n/cHN9/3V3ff9ucHf/ +cHJ5/2Zpc/9qbXf/Z2p0/21vc/9ucXv/am13/25wd/9vcXX/dnh8/25wd/9kZ3H/Zmlz/3V3ff9tb3P/ +bW9z/3Bzff9ucHf/dXiB/3l7gf9zdn//bG51/3N1fP9ucXv/cHN9/25wd/92eHz/bnB3/25xe/9wcnn/ +bnB3/3Bzff9ucHf/bnB3/3N1fP9wcnn/bG51/2xudf9qbXf/am13/2ptd/9qbXf/bnF7/2dqcf9sb3n/ +bnF7/3Bzff9sb3n/bG95/2xudf9sb3n/Zmlz/2dqdP9nanT/amxz/2dqcf9wc33/Zmlz/2ptd/9qbXf/ +am13/2Jlbv9sbnX/bG95/3V3ff9ucHf/bnB3/3N2f/93eoP/c3Z//3Byef91eIH/c3Z//3N1fP95fIb/ +dXiB/3V3ff91eIH/c3V8/3N2f/9ucXv/eXyG/31+gf9+gIb/dXiB/3V3ff91eIH/e32D/3d6g/93eoP/ +bnF7/3t9g/9sb3n/bG95/2dqdP9wcnn/am13/3V4gf93eX//dXd9/25wd/9wc33/cHN9/3d6g/9wc33/ +eXyG/25wd/94eX3/c3V8/3N1fP9zdXz/Zmhs/3V4f/9zdoD/bnB5/3R3gf92eH7/c3Z//25xe/93eoP/ +dXd9/29xdf9zdn//dXd9/3V3ff9wcnn/bG51/25xe/9zdXz/bnF7/21vc/9tb3P/cHJ5/2xvef9sbnX/ +dXd9/2xvef9wcnn/bG95/2dqdP91d33/bnB0/21vdv9tb3b/am13/2xudP9tcHr/c3V9/2xvef90d4D/ +b3J5/29xef9zdn3/cXN4/29xdv9tb3f/bXB6/2xvef9xdH3/Z2pz/3N1ff91d33/b3J5/3Fzev90dnv/ +dXd+/25wdf9wc33/dXd9/25xe/9qbXf/bnF7/3l7gf9zdn//eXuC/3Z5g/90d4D/d3mA/2xueP91d3// +dHeB/3N1e/95e4L/eXuB/3J0fP91eIH/cHN9/3Bzff9wc33/eXuB/3Bzff95fIb/cHN9/3N1fP9ucXv/ +bG95/3Byef9ucXv/Z2p0/25xe/9qbXf/Z2p0/2ptd/9zdXz/am13/3V3ff9zdXz/bG51/2Rncf9sbnX/ +dXd9/3Z4fP9nanT/bG51/25xe/9qbXf/am13/2ptd/9sb3n/cHN9/2xvef9ucXv/Zmlz/2ptd/9ucHf/ +bnB3/2xudf9kZmz/dnh8/2Zobv9ucHf/c3Z//2xvef9qbHP/bnB3/3d6g/9zdn//cHN9/3N2f/9wc33/ +cHN9/3l7gf9ucXv/bG95/2xvef9ucXv/cHN9/3N2f/9wcnn/bG95/3V3ff9ucHf/bnB3/3V3ff92eHz/ +am13/25xe/9kZ3H/bG51/2psc/9qbHP/bG95/2dqdP9qbXf/amxz/25xe/9qbXf/Zmhu/2Zobv9zdXz/ +bW9z/2psc/9ucXv/ZGdx/3N1fP91d33/c3V8/3Byef91d33/dXd9/3V3ff9ucHf/dXd9/25wd/9ucXv/ +bnF7/25wd/91d33/dXiB/25xe/91eIH/cHN9/2xvef9ucHf/cHN9/2xvef9ucXv/bnF7/3Bzff9ucHf/ +c3Z//3d6g/9zdn//cHN9/3Byef9tb3P/c3V8/25wd/9sb3n/am13/2psc/9qbHP/bG95/2Zpc/9nanT/ +am13/2ptd/9kZ3H/amxz/2ptd/91d33/bG51/21vc/9wcnn/c3V8/3Bzff9nanH/bnF7/2xudf9tb3P/ +cHJ5/2xudf9qbXf/bG51/25wd/9sbnX/Zmlz/25xe/91d33/c3V8/2xudf9sbnX/bnB3/3N1fP9zdXz/ +dXd9/2xudf91d33/Zmlz/2ptd/9maXP/am13/2psc/9wc33/cHN9/3Bzff9qbHP/bG95/2ptd/9sb3n/ +Zmlz/3V3ff9nanH/cHN9/2ptd/9ucXv/am13/2RmbP90dXv/cnR9/2ttdv9ucXn/cnV+/3N1fP9ucHf/ +c3Z//3V4gf9zdXz/dXiB/3N2f/95e4H/dXiB/3Bzff95fIb/eXyG/3t9g/9zdn//c3V8/3l8hv94e4H/ +dXd9/31/hf96fIL/eHuE/3Z5gf9zdXz/en2F/3R3f/9xc3r/cnR7/29xeP9wcnn/cXR8/3d5fv9wc3v/ +c3Z+/3Fzev9vcXj/cnR7/3J0ef9xc3r/b3F2/25wef9vcnr/cnR5/2ptc/9ydHz/dXd//3R2fP9vcnv/ +cHJ5/3R3gf9vcXj/c3Z//3p8gv9wcnn/Z2p0/2dqdP93eX//dnmC/3V3fv9ydX3/bXB6/29yeP9maXP/ +Z2py/2ptdf9nanT/bnF5/3J1ff9sb3b/cHN9/3Bzff9ucXv/cHN9/3l8hv91eIH/d3qD/3N2f/9zdn// +c3V8/3Bzff91eIH/cHN9/3N2f/93eX//c3Z//25wd/9wc33/c3Z//25wd/93eX//d3l//21vc/9iZW7/ +am13/3N1fP93eX//am13/2xudf9wcnn/bW9z/2xudf9sbnX/bG95/3N1fP9ucXv/cHN9/2dqdP9wc33/ +c3V8/3Bzff9ucHf/bG95/3d6g/9sb3n/cHN9/3l7gf9wc33/bnF7/3N2f/9+gIb/eXyG/3N2f/91eIH/ +c3Z//3Bzff91d33/cHJ5/25xe/9sb3n/bG95/25wd/9sb3n/Z2p0/2Rncf9ucXv/Zmlz/2dqdP9sb3n/ +c3V8/2psc/9wc33/am13/2xvef9qbHP/am13/25xe/9nanT/bG51/21vc/9zdXz/bG95/2Rncf9kZ3H/ +cHN9/2ptd/9nanT/bnF7/2dqdP9zdXz/dXd9/3V3ff9ucXv/cHN9/25xe/9wc33/amxz/2ptd/9nanT/ +amxz/2dqdP9qbHP/bnF7/2ptd/9qbHP/Zmlz/2Rncf9iZW7/Zmhu/2Rncf9iZW7/ZGdx/2Zobv9maXP/ +YmVu/2Rncf9maXP/Zmlz/2Zobv9kZ3H/Zmhu/2dqdP9maXP/Zmlz/2dqcf9kZ3H/Z2px/25xe/9qbXf/ +am13/2xvef9sb3n/Zmlz/2ptd/9ucHf/dXd9/3Byef9ucHf/bnF7/3N2f/9zdXz/bnB3/3Bzff9ucXv/ +bnB3/3V3ff9ucHf/bnB3/25wd/9ucHf/am13/2Zobv9zdXz/c3V8/3Byef9sbnX/bW9z/21vc/9wcnn/ +cHJ5/3Bzff9sbnX/dXd9/2dqdP9sbnX/Zmlz/2dqdP9nanT/bnF7/3N1fP91d33/bnB3/3V3ff9ucXv/ +cHJ5/25wd/92eHz/b3F1/3N1fP9zdXz/dnh8/25wd/9kZmz/bnB1/25xe/9tb3f/cHN9/3l7gf91eIH/ +c3Z//3t9g/9wc33/bnB3/3Bzff9zdn//d3l//3V3ff9sb3n/bnF7/3Byef90dn3/bXB3/2ptdv9vcnv/ +cnV+/21wdf9zdXz/bG93/25xev9tcHn/aGpz/3J0ev9wc3v/b3F6/3Bye/9pbHX/bnF5/2xvd/9xdH7/ +a254/2ptd/9zdXv/bG95/29yev9zdXv/bnB2/25wdv9vcXX/b3F4/25wdf9sb3b/cHJ5/3V3fP93eX// +bnB3/3ByeP91eIH/bW94/3V3fv93eX//bW95/2Zpc/9nanT/dXd9/3R2ff9wcnn/cHN7/2xvef9rbnT/ +Zmlz/2RncP9oa3P/Y2Zv/2Vocf9qbXb/a212/25xe/9qbXf/Z2p0/2dqdP9zdXz/bG95/3Byef9ucHf/ +bG95/2ptd/9wc33/c3V8/2ptd/9sb3n/cHN9/2xvef9qbXf/am13/3Bzff9tb3P/dnh8/3l8hv9vcXX/ +Zmhu/2xudf92eHz/d3qD/2xvef9ucXv/c3Z//3N1fP9wcnn/bG95/3Bzff93eX//c3Z//3V4gf9qbXf/ +c3Z//25wd/9wcnn/cHJ5/2ptd/95e4H/am13/3Byef9zdn//c3V8/2ptd/9zdn//foCG/3l8hv93eoP/ +eXuB/3V4gf95fIb/eXyG/3l7gf93eX//cHN9/3d6g/91eIH/d3qD/3N1fP9ucXv/e32D/3N1fP9zdn// +dXiB/3l7gf9wc33/cHN9/25wd/9wc33/cHJ5/25wd/91d33/amxz/2xudf9ucHf/dnh8/25wd/9kZ3H/ +ZGdx/3N1fP9qbXf/bG51/3Bzff9nanT/bnF7/3V3ff9zdXz/bG95/3Bzff9qbHP/bG95/2dqdP9sb3n/ +Z2p0/2xudf9qbHP/am13/3Bzff9ucXv/bG51/25wd/9qbXf/Z2p0/2xudf9qbXf/amxz/2ptd/9nanT/ +Z2p0/2Zpc/9qbXf/bG95/25xe/9ucXv/bG95/2xudf9ucXv/Z2p0/2xudf9qbHP/am13/2xudf9wcnn/ +bG51/2xudf9wcnn/bG95/2Rncf9sbnX/bnB3/3V3ff9wcnn/b3F1/25xe/91eIH/c3Z//25wd/9wc33/ +cHN9/3Byef9zdn//bnF7/2ptd/9ucXv/bG95/25wd/9kZ3H/bnF7/25xe/9sb3n/Z2p0/2ptd/9sbnX/ +bnF7/2xvef9qbXf/Z2p0/3N1fP9kZ3H/Z2px/2BjbP9iZW7/ZGdx/3N1fP9ucXv/am13/2xudf9wc33/ +bG95/2xvef9qbXf/dXd9/21vc/91d33/bnF7/3h5ff9ucHf/ZGZs/3Bydv9ucXv/bG95/25xe/9zdn// +d3qD/25xe/93eX//c3Z//25wd/9zdn//c3Z//3l7gf95e4H/cHJ5/3Bzff9vcnz/dXd+/3Byef9rbnj/ +cHN7/3Fze/9sbnb/cHJ4/2tueP9sb3j/bG95/2psc/9ydXz/cXN7/2lsdv9ydX7/aWtx/3Bye/9oa3T/ +bXB5/2RncP9laHL/bW93/2ptd/9sb3n/bnF6/2ptd/9qbXf/am13/2xvef9qbHT/a210/21vc/90dnz/ +dHZ8/25wd/9vcXb/c3Z//2xvd/9xdH3/cXR+/2tueP9maG7/Zmhu/3V3ff9zdX3/bnF7/3R3fv93eX7/ +c3V8/3J1fv9ucXr/bnF6/2tud/9vcXj/dXiA/3R2fv9wc33/bnF7/25xe/9sbnX/dXd9/3V3ff91eIH/ +dnh8/3N1fP9wcnn/bnF7/3d5f/9ucHf/cHJ5/3N1fP9zdXz/bnB3/3Byef9zdXz/b3F1/3Z4fP93eX// +bnB3/2dqcf9ucXv/dXd9/3l7gf9vcXX/bG95/3V4gf9zdXz/bnF7/2ptd/9wc33/d3l//3Bzff9zdn// +am13/3N2f/9wcnn/c3V8/25wd/9maXP/d3l//2dqcf9ucHf/bnB3/25xe/9nanT/cHJ5/3V3ff9wc33/ +cHN9/3N2f/91d33/cHJ5/3Byef9ucHf/bnB3/2dqcf9zdXz/bnB3/3Bzff9sb3n/Z2p0/3V3ff9ucHf/ +bnB3/3N2f/95e4H/cHN9/3N2f/9sb3n/cHJ5/2xudf9ucHf/dXd9/2xudf9ucHf/bnB3/3Z4fP9ucHf/ +Z2px/2ZobP9zdn//bnF7/25wd/9zdXz/amxz/3Byef91d33/bG95/2xvef9wc33/bG51/25xe/9ucXv/ +c3V8/2xudf9sbnX/Z2p0/2xudf9ucXv/bG95/2dqdP9sb3n/amxz/2Rncf9qbHP/bnF7/2dqcf9sb3n/ +am13/2ptd/9qbXf/bG95/25xe/9ucXv/bnF7/2xvef9qbHP/bnF7/25xe/9qbXf/Z2p0/21vc/9sbnX/ +bnF7/21vc/9ucHf/cHN9/3Byef9maG7/bnB3/3Byef9zdn//c3Z//2xvef9sb3n/cHN9/3N2f/9ucHf/ +cHN9/3N1fP9ucHf/dXiB/3Bzff9qbXf/cHN9/25wd/9ucHf/Zmlz/3V4gf93eoP/cHN9/2xvef9wcnn/ +bG95/25xe/91d33/bnF7/25xe/93eX//amxz/2xudf9qbHP/Zmlz/21vc/92eHz/dXd9/3Byef9tb3P/ +d3l//2xvef9ucXv/amxz/3N1fP9nanT/bG95/2dqdP9sb3n/Zmlz/2Jlbv9sbnX/am13/2psc/9sbnX/ +bnB3/3V3ff9sbnX/dXd9/3Byef9qbHP/bG51/2xvef9zdXz/c3V8/2ptd/9xdH3/bG54/25xe/9ucHf/ +am11/25wd/9tb3b/bG52/2tudP9rbnf/aGt0/2Zpc/9naW//cXN6/3R2fP9qbXf/cnR8/2Zob/9kZ3H/ +ZWhy/25wd/9laHH/aGt1/3Bzff9ucXv/cHN9/3Bzff9ucHf/amxz/29xdv9wcnr/b3F4/21vdv9ucHX/ +dnh8/3V3ff9xc3v/cHN4/3N1fP9ydHz/dHeA/3h6gP9wcnn/Zmlz/2Zobv9wc33/cXN5/3Fzev9ydHr/ +c3V8/29xef9tcHj/b3F3/2xudv9pa3T/bnF5/3N1fP9xc3n/c3V8/29xdf9ucXv/bG95/3d5f/91eIH/ +d3qD/3N2f/9zdn//cHN9/3N2f/95e4H/c3Z//3N2f/9zdn//cHN9/2xvef9ucHf/c3Z//25wd/93eX// +d3l//3N2f/9maXP/cHN9/3N2f/93eX//bnB3/3Byef91d33/b3F1/29xdf9sbnX/dXd9/3N1fP9ucHf/ +cHJ5/2Zobv9ucHf/am13/2ptd/9tb3P/Zmhu/3V3ff9iZW7/am13/2xvef9sbnX/Zmlz/2ptd/9zdXz/ +c3V8/3N1fP91d33/bnF7/2xvef9zdXz/bnB3/25wd/9nanT/dXiB/25xe/9zdn//bnB3/2dqdP9zdn// +am13/25xe/9zdn//dXiB/25wd/9zdn//am13/25xe/9vcXX/bnF7/3N1fP9sbnX/bnB3/3Byef92eHz/ +bnB3/2Zpc/9kZmz/cHJ5/2xvef9nanT/bnF7/2Zpc/9sb3n/c3Z//2xvef93eoP/dXiB/25wd/9zdn// +c3Z//3V3ff9ucHf/bnB3/2ptd/9ucHf/cHN9/3V4gf9wcnn/c3Z//25xe/9ucHf/bG95/3Bzff9wcnn/ +dXiB/25xe/9ucXv/bnB3/3Byef9wc33/cHN9/25xe/9ucXv/bnB3/3N2f/9sb3n/b3F1/2xvef9vcXX/ +bnB3/3N2f/9ucHf/bnB3/3Bzff9wc33/Zmlz/3Byef9zdXz/dXiB/3V4gf9ucHf/bG95/3N2f/91d33/ +bG95/3N2f/91eIH/bnF7/3d5f/9ucXv/am13/3Bzff9ucHf/bnB3/2ptd/93eX//dXiB/3N2f/9sb3n/ +cHJ5/2xudf9ucXv/c3Z//3N1fP9zdXz/dXiB/2xvef9wcnn/am13/2dqdP9ucHf/dXd9/3h5ff9zdXz/ +bnB3/3h5ff9zdXz/c3V8/29xdf92eHz/bnB3/25xe/9qbXf/bnF7/2xvef9kZ3H/amxz/2dqdP9iZW7/ +Z2p0/2xvef9ucXv/amxz/3N1fP9sb3n/ZGdx/2psc/9nanT/bG95/2xvef9oanH/cHN8/2tudv9sb3n/ +bW92/21vd/9vcXj/b3F2/3J0e/9vcXj/dHZ8/2ptd/9oa3L/bW9z/3d5f/94eoD/cHJ5/3p8gv9ucHf/ +cnR7/25wdP90dn3/bG52/3Bzev92eH//bnF7/3N2ff9xc3r/bnB4/2hrcv9tcHf/bXB6/2xudf9sbnX/ +am10/2xvef9ydHr/am10/2ttcv9ucXn/aWx0/3J0fP9vcnn/a213/2Rncf9kZmz/bnF7/3Byef9sb3n/ +dHZ8/3Bze/9sb3f/a212/2xvd/9rbnb/aGt1/25wef9sb3n/bG93/3Bzff9maXP/Z2p0/2psc/9ucXv/ +bG95/3N1fP9maXP/ZGdx/2Rncf9nanT/bG95/2Zpc/9kZ3H/Zmlz/2Zpc/9kZ3H/Zmlz/2Zpc/9iZW7/ +bG51/2xvef9kZ3H/XWBq/2Zpc/9sb3n/cHJ5/2Rncf9nanT/dXd9/2xudf9sbnX/am13/25xe/91d33/ +bG95/3N1fP9nanH/dXd9/25wd/9ucXv/bnB3/2dqcf94eX3/Zmlz/2xvef9ucXv/b3F1/2xudf9sbnX/ +c3V8/3N1fP91d33/dnh8/3N1fP9ucHf/cHJ5/2xudf9ucHf/Z2px/3N1fP9wcnn/bG95/2dqdP9iZW7/ +bnF7/2Zpc/9sb3n/cHN9/3d5f/9qbHP/c3V8/2psc/9wcnn/b3F1/3Bzff9zdXz/bnB3/2xudf9wcnn/ +c3V8/29xdf9qbHP/Zmhu/3Byef9ucHf/bnB3/3V4gf9wcnn/dXiB/3l8hv91eIH/c3Z//3V4gf9sb3n/ +d3qD/3V4gf95e4H/cHJ5/3N1fP9sb3n/bG95/3N2f/9wc33/cHJ5/3V3ff9ucHf/bnB3/25wd/9zdXz/ +bG51/3N1fP9sbnX/bnF7/21vc/9ucHf/c3V8/25xe/9sb3n/am13/2ptd/9sb3n/amxz/2psc/9nanT/ +Z2px/2xudf9ucXv/amxz/2Zpc/9sb3n/bG95/2BjbP9nanT/bW9z/25wd/9ucHf/amxz/2xudf9sb3n/ +c3V8/2ptd/9ucXv/dnh8/3Byef93eX//cHN9/2ptd/9zdXz/bG51/2xudf9qbHP/dXd9/3N1fP9zdXz/ +amxz/25wd/9ucHf/bnB3/3V3ff9wcnn/dXd9/3d5f/9ucHf/b3F1/2ptd/9nanT/bnB3/3V3ff92eHz/ +c3V8/2xudf92eHz/dXd9/3V3ff9wcnn/dnh8/3Byef9wc33/cHJ5/3Byef9zdXz/Zmhu/21vc/9qbXf/ +Zmlz/21vdv9xdH7/dXd9/21vc/9zdXz/bnF7/2Rncf9sbnX/bnF7/25xe/9ucXv/aWxz/3Bze/9ydHr/ +c3aA/3J1fv9ydXv/c3V8/3F0ff92eH//dnmC/3V4gf9sb3n/bXB6/29xef95e4H/eXuE/29yfP93eoT/ +bnF4/3J1f/9zdXz/cnV+/29xdv9zdXz/c3Z+/29yev92eH7/b3F4/2xvef9rbXT/cHJ5/29xeP9xc3f/ +bW9z/29xeP9xc3r/c3V9/3Bye/9zdXv/dXh//3Byef9xc3r/c3V8/29xdf9nanH/Zmhu/25wd/9sb3n/ +bG95/3R2fP9ucXr/bG94/2hrdf9ucXv/aGt1/2dqc/9rbnf/bG94/2lsc/9nanT/XWBq/2Zobv9maG7/ +bG95/2xvef9ucHf/Zmlz/2Zobv9maG7/Zmlz/2ptd/9maXP/ZGdx/2dqdP9nanT/Zmhu/2dqdP9nanT/ +YGNs/2xudf9ucHf/Zmhu/11gav9maXP/am13/3Byef9maXP/Z2p0/25wd/9maG7/Z2px/2Rncf9sb3n/ +bnF7/25xe/9wc33/Zmhu/3Bzff9nanT/bG95/2psc/9maXP/c3V8/2Jlbv9sbnX/bnB3/2xudf9maXP/ +Zmlz/3Bzff9ucXv/bG95/25xe/9ucXv/bnF7/2xvef9sbnX/bnF7/2dqdP9zdXz/c3V8/3Byef9tb3P/ +ZGZs/3Byef9sbnX/cHJ5/3V3ff93eX//b3F1/25wd/9nanH/bnF7/3Byef91eIH/dXiB/3N1fP9zdXz/ +c3Z//3d6g/9wc33/bnF7/2xvef9zdn//c3Z//3N1fP91eIH/bG95/25xe/91eIH/c3Z//2xvef9zdXz/ +amxz/3N1fP9qbXf/cHN9/2psc/9qbHP/amxz/2dqdP9ucXv/Z2p0/2psc/9sb3n/Z2p0/2Zpc/9qbXf/ +bnF7/2ptd/9sb3n/am13/2xvef9vcXX/cHJ5/3Z4fP9zdXz/c3V8/3Byef9wcnn/dnh8/25xe/9sb3n/ +bG95/2xvef9sb3n/dXiB/3N1fP9wcnn/dXiB/3Bzff9qbXf/bnF7/25wd/9sb3n/bnB3/29xdf9sbnX/ +c3V8/3V3ff9sbnX/cHN9/3N1fP9ucHf/c3V8/2xudf9nanH/bG95/29xdf9ucHf/ZGdx/3N1fP9sb3n/ +bG95/2Zpc/9sb3n/Zmlz/25wd/9wc33/bnF7/25xe/9zdXz/Z2p0/25wd/9qbHP/Z2px/2ptd/9zdXz/ +dXd9/2xvef9sbnX/dXd9/2xvef9ucXv/Zmhu/2ptd/9nanH/bG95/2psc/9qbXf/Zmlz/11gav9laHL/ +Z2lv/1xfaP9naW//am12/2xvef9sbnX/Z2p0/2Zpc/9iZW7/amxz/25xe/9ucXv/c3V8/2tud/9ydHv/ +cHJ4/25xev9tb3b/bG51/21wef9ucHf/cXN6/3R2fP9wcnj/bG51/21vdv9rbXb/dHZ+/3J1fP9rbnb/ +dHZ9/2xudf9tb3b/cXN5/2xvd/9ucHf/cHJ7/3Bzev9wcnn/c3V8/2xvef9ucHf/bG94/3J0ff9xc3v/ +dHZ+/29yev9xdHz/bXB5/3BzfP9ucHr/dXeA/3h6gP9ydX7/cHN9/3N2f/9ucHf/am13/2dqdP9wc33/ +cHN9/3N2f/95fIX/cXN9/25xe/9oa3X/c3V8/25wd/9sb3n/cHN9/3V3ff9wcnn/cHN9/2xvef9wc33/ +bG95/3V3ff91d33/d3l//3N1fP9ucHf/b3F1/3V3ff94eX3/dXd9/3Byef9zdXz/cHJ5/2dqdP9sb3n/ +bnF7/2xudf91d33/cHN9/2psc/9iZW7/am13/3Bzff9ucXv/amxz/2ptd/9zdXz/Z2px/2psc/9maXP/ +Z2p0/2dqdP9maXP/Z2p0/2BjbP9ucXv/Z2p0/2xvef9sbnX/amxz/3Z4fP9maG7/bnB3/2xvef9sb3n/ +bG95/2ptd/91d33/c3V8/3N1fP9zdXz/cHJ5/3N1fP9wc33/bnB3/3Bzff9qbXf/dXiB/3d5f/91d33/ +bnB3/2RmbP9ucHf/am13/2ptd/9ucXv/dXd9/2xudf9qbXf/YmVu/2xudf9sbnX/bG95/2xvef9sbnX/ +am13/3Bzff9zdXz/bG51/2Zpc/9kZ3H/bnF7/2xvef9qbHP/bG95/2psc/9sb3n/d3l//25xe/9kZ3H/ +Z2p0/2BjbP9kZ3H/Zmhu/2ptd/9kZ3H/Z2px/2Zobv9nanH/am13/2dqdP9qbXf/c3V8/25xe/9qbXf/ +bG51/25xe/9qbXf/cHJ5/29xdf9zdXz/b3F1/25xe/91d33/c3V8/3N1fP9ucXv/bnF7/3V3ff9wcnn/ +bnB3/25wd/9ucHf/bnB3/3Bzff9vcXX/b3F1/25wd/9sbnX/Zmhu/21vc/9tb3P/bG51/2xudf9qbXf/ +amxz/3Bzff9zdXz/bG51/3Bzff9wc33/bnF7/3Bzff9tb3P/bG51/3N1fP9vcXX/bnB3/2Zobv92eHz/ +cHJ5/3N1fP9nanH/cHJ5/25wd/9zdXz/dXd9/3Byef9wc33/d3l//25xe/91eIH/bG95/3N1fP9zdXz/ +dXiB/3l7gf9ucXv/cHJ5/3V4gf9zdXz/c3Z//25wd/9zdXz/bnF7/3V4gf9wc33/cHN9/3Bzff9qbHP/ +bW93/29ye/9pbHX/b3F6/29yfP9xdH7/bnF7/3Byef9wc33/bG95/2xvef9zdn//bnF7/3Bzff9sb3n/ +dHZ8/25xe/9xc3v/bnF7/21vdv9xc3r/cXN4/29yev9zdX3/cXN6/3F0fP9xdHz/b3J6/3d5gv9xdHv/ +bW93/3R2fv9qbXb/a254/3R2f/9tcHr/cHN8/21wev9tcHn/bnF4/3Bye/9vcnz/bnB3/2tueP9tcHr/ +bG51/25xev9qbXf/cHJ8/2xudf9qbXf/am13/3J0e/9ucXv/am13/2psc/9nanT/Z2px/2Jlbv9gY2z/ +am13/2dqdP9qbXf/c3Z//2ptd/9qbXf/ZGdx/25xe/9sb3n/bG51/3Byef9ucXv/cHJ5/3Byef9tb3P/ +cHJ5/25wd/93eX//d3qD/3d6g/91eIH/c3Z//25xe/93eoP/d3qD/3d6g/9zdn//dXiB/3d6g/9sb3n/ +cHN9/3Bzff9zdn//e32D/3l7gf9wc33/bG95/3N2f/95e4H/foCG/3N2f/93eoP/eXyG/3Bzff9wc33/ +dXd9/3d6g/95e4H/eXuB/3V4gf9wc33/e32D/3N1fP91eIH/c3Z//3Bzff95e4H/bG95/25wd/9ucXv/ +cHJ5/2ptd/9sb3n/cHN9/3V4gf9zdXz/cHJ5/3Byef9wcnn/c3V8/29xdf9ucHf/Z2p0/3Bzff91d33/ +cHN9/21vc/9kZ3H/bG95/2dqdP9sb3n/cHN9/3V3ff9qbXf/am13/2Rncf9nanT/amxz/2ptd/9nanT/ +Z2px/2Zpc/9ucXv/bnF7/2dqcf9ZXGX/XF9o/2Zpc/9maXP/Zmhu/2Rncf9kZ3H/Z2p0/2xvef9maXP/ +Z2p0/2xvef9maXP/bnF7/2xudf9wc33/amxz/2xvef9sbnX/bG51/3V3ff9ucHf/bnB3/3l7gf9ucXv/ +bnB3/25wd/9zdXz/am13/3V4gf9wcnn/cHJ5/3Byef9zdn//d3qD/3N2f/9zdn//cHJ5/3Bzff95e4H/ +cHN9/3Bzff9ucXv/cHN9/25xe/9wc33/bnB3/25wd/9wcnn/bW9z/2dqcf9vcXX/bnB3/25wd/9sbnX/ +am13/2xudf91d33/c3V8/2ptd/9wc33/cHJ5/3Byef9zdn//bG51/2xudf9zdn//am13/25wd/9kZ3H/ +c3Z//3N2f/9zdn//am13/3N2f/9wcnn/dXiB/36Ahv95fIb/eXyG/3t9g/9zdn//d3qD/25xe/9wcnn/ +cHJ5/3N2f/95fIb/cHN9/25xe/93eX//bnF7/3Byef9vcXX/c3V8/25xe/91eIH/cHN9/25xe/9sb3n/ +bG51/29xef9xdHz/aGtz/3Byef9ydHr/dHZ8/25xe/9ucXv/cHN9/25wd/9wcnn/dXiB/3Bzff9zdn// +bnF7/3Z4fv9xc3r/c3Z//21wev9tb3j/dHZ7/3J1ff9tcHr/cnV//29xef90dn//bXB6/3ByeP93eX// +cHF4/25wd/9zdXz/amxz/25wd/92eH7/bnB3/3N1fP9vcXj/aGt1/25wdP9vcXv/bnF7/2xudf9sb3n/ +cHN9/2xudf9zdXz/bG51/3N1fP9sbnX/amxz/2ptd/91d33/bnF7/2xvef9qbXf/bG95/2psc/9kZ3H/ +YGNs/2dqdP9nanH/Z2p0/3V3ff9qbXf/Z2p0/2BjbP9qbXf/Zmlz/2Zobv9nanT/Zmlz/2Zpc/9qbXf/ +Zmhu/2dqdP9maG7/dXd9/3V3ff9zdXz/bG95/3Bzff9qbXf/cHN9/3d5f/9wc33/cHJ5/3N1fP91d33/ +bG51/3Byef9wc33/c3Z//3d6g/93eoP/c3V8/25xe/9ucXv/dXd9/3V3ff9sb3n/bG95/3d5f/9sbnX/ +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/Zmlz/25xe/9nanT/bG95/2xvef9iZW7/am13/2BjbP9iZW7/ +Z2px/2Rncf9kZ3H/Zmlz/2ptd/9sb3n/bG95/2xudf9sb3n/bnF7/2xvef9sbnX/bnF7/2dqdP9ucXv/ +dXd9/3N2f/9ucHf/Z2p0/25wd/9ucHf/cHJ5/3N1fP92eHz/bG51/2xudf9kZ3H/am13/25wd/9sbnX/ +bG95/2xudf9nanT/cHN9/3Bzff9sbnX/YmVu/2Jlbv9ucXv/am13/2xudf9qbXf/Z2px/2xvef9wcnn/ +bG95/25wd/9sb3n/Z2p0/2xvef9qbXf/c3V8/2xudf9wcnn/bG95/3N1fP97fYP/cHN9/3Byef95fIb/ +dXiB/3Byef9zdXz/d3qD/25xe/97fYP/dXd9/3l7gf91eIH/eXyG/3l8hv91eIH/dXiB/3N2f/9wc33/ +d3qD/3Bzff9ucHf/Z2p0/25wd/9wcnn/cHJ5/25wd/9vcXX/cHN9/29xdf9nanH/bG51/2xudf9qbHP/ +am13/2dqdP9nanT/bnF7/2xvef9qbHP/am13/25xe/9qbXf/c3V8/2ptd/9nanT/bnF7/2dqdP9sbnX/ +ZGZs/3Byef9ucXv/bG95/2Rncf9sb3n/Z2px/25xe/9wc33/am13/2xvef9wc33/am13/2xvef9kZ3H/ +Z2p0/2psc/9qbXf/cHJ5/2dqcf9maXP/cHJ5/2psc/9sb3n/Z2px/2ptd/9nanT/Z2p0/2ptd/9nanH/ +amxz/2dqdP9sb3j/cnV8/2Zpc/9vcXf/a253/25xe/9qbHP/Z2p0/2dqdP9kZ3H/bG51/2xvef9qbXf/ +am13/2xudf9sb3n/aGt1/3V3ff9ucXj/bW92/3Z4fP91d33/bG92/3N1fP9sbnb/c3V8/25wd/9vcXX/ +eHl9/3N1fP9sbnX/bnB3/2psc/9sb3n/dXiB/25xe/9wcnn/bnF7/2ptd/9qbXf/c3V8/25xe/9qbHP/ +bG51/3N1fP9ucHf/cHJ5/25wd/9zdXz/bG51/21vc/9qbXf/d3l//2xvef9qbXf/am13/2psc/9qbXf/ +ZGdx/2BjbP9qbXf/amxz/2xvef91d33/bG95/3N1fP9naW//c3V8/3Byef9sb3n/cHN9/3V4gf9wc33/ +cHN9/25wd/9ucXv/bnF7/3d6g/91eIH/d3l//3V4gf9zdn//cHJ5/3N1fP93eX//c3V8/25wd/91d33/ +c3V8/21vc/9qbXf/bnB3/2xvef9ucXv/am13/2Zobv9maG7/Zmlz/3Bzff9zdXz/bG51/2ptd/91d33/ +bG51/21vc/9tb3P/bnB3/2xvef9sb3n/bG95/2Zpc/9ucXv/am13/3N1fP9ucHf/Z2px/3Z4fP9nanH/ +bnB3/25wd/9vcXX/bG95/2xvef9zdn//c3Z//3N2f/9ucHf/c3V8/3Bzff9ucXv/bG95/3N1fP9nanT/ +c3Z//3l7gf93eX//c3V8/3N1fP91eIH/cHJ5/3d6g/97fYP/f4GH/3d5f/9zdn//bnF7/3N2f/9zdn// +cHN9/3Bzff9ucHf/am13/3V3ff92eHz/bG95/2psc/9maXP/cHN9/25wd/9zdXz/cHJ5/2xvef9zdXz/ +dXd9/3N1fP9ucXv/bnB3/2xudf91d33/bnF7/3V3ff9wcnn/bnB3/2ptd/9sbnX/dXd9/2xudf9sbnX/ +eHl9/3N1fP9qbHP/bnB3/3V3ff9nanH/cHJ5/25wd/9ucHf/bG95/3N1fP9wcnn/cHJ5/3N2f/9ucXv/ +c3V8/3V4gf9ucXv/bnF7/25wd/9wc33/c3Z//3N2f/9wcnn/c3V8/3V4gf9wcnn/Zmlz/25xe/9ucHf/ +b3F1/25wd/9sb3n/cHN9/3V4gf9wc33/bnF7/25xe/9zdn//b3F1/3Z4fP9tb3P/amxz/3Byef9qbHP/ +bnB3/2dqcf9zdn//cHN9/25xe/9nanH/c3V8/2xudf9ucXv/eXuB/3V4gf9zdn//c3Z//2xudf9ucHf/ +bG51/25wd/9vcXX/c3V8/3d5f/9ucHf/cHJ5/3d5f/9ucHf/c3Z//3Byef9wcnn/c3V8/3Byef92eHz/ +bG51/2xudf9nanT/bG95/2xvef9maXP/a210/2Vocv9ucXv/am13/2xudf9sbnX/Z2p0/2ptd/9ucXv/ +bnB3/25xe/9qbXf/bG95/2Zpc/9zdXz/am13/2dqcf9wcnn/bnF7/2psc/9ucXv/am13/25xe/9qbXf/ +am13/3Bzff9sb3n/Z2p0/2ptd/9kZ3H/bG51/3V3ff9ucHf/c3V8/2xvef9sbnX/bG51/3Bzff9ucXv/ +Zmlz/2ptd/92eHz/bnB3/3N1fP9sb3n/dXiB/3Bzff9zdXz/c3V8/3h7hf91eIH/dXiB/3N2f/9zdn// +c3V8/2ptd/9ucXv/dXd9/3d6g/93eoP/fYCJ/3d6g/93eYD/bXB5/3N2f/9ucXv/bXB6/21wev9ydX7/ +c3V8/3V3ff9sbnX/cHJ5/3Byef93eoP/d3l//3h5ff9zdXz/bnF7/2psc/9sb3n/dXd9/2xvef9nanT/ +cHJ5/2ptd/9qbHP/am13/2xvef9sb3n/cHN9/25xe/9sbnX/bG51/2ptd/91d33/dXd9/2ptd/9qbXf/ +c3Z//2dqcf9nanT/amxz/2xudf9sbnX/am13/2xvef9maXP/bG95/2psc/9ucXv/bG51/2Jlbv9wcnn/ +YGNs/2Rncf9maXP/Z2px/2Zpc/9maXP/bG95/2dqdP9qbXf/Zmlz/2ptd/9qbXf/am13/2psc/9sb3n/ +ZGdx/2ptd/9zdXz/cHJ5/2dqcf9iZW7/bG95/2dqcf9sb3n/am13/3N1fP9qbHP/am13/2Zpc/9qbHP/ +am13/2xudf9ucHf/b3F1/2psc/9zdXz/dXd9/2psc/9maG7/Zmhu/3Z4fP9wcnn/cHJ5/25wd/9tb3P/ +c3V8/3V3ff9zdn//bG51/2xvef9qbXf/bnF7/2ptd/91d33/c3V8/29xdf9wcnn/b3F1/3V4gf9ucXv/ +bnB3/3l7gf9wc33/bG95/25xe/93eX//am13/3Bzff9wcnn/cHN9/3Bzff9wc33/bG95/2xvef92eHz/ +bnB3/29xdf9ucHf/bG95/2ptd/9maXP/bnF7/2ptd/9qbXf/Z2px/2Rncf9nanT/Zmhu/2BjbP9nanT/ +Zmlz/2Zpc/9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2xvef9qbXf/cHN9/2xudf92eHz/b3F1/2psc/9wc33/ +cHJ5/3N2f/9maXP/cHN9/3Bzff9wc33/am13/3N2f/9ucHf/c3Z//3V4gf9ucXv/c3Z//3N2f/9ucXv/ +dXiB/3N2f/9zdXz/cHN9/3d6g/9+gYr/c3Z//3d6g/95fIb/c3V8/3l7gf9zdXz/d3qD/3d6g/93eoP/ +eXuB/3N2f/9zdn//c3V8/3l7gf91eIH/bG95/25xe/9qbXf/c3Z//3V3ff9ucHf/bG95/2dqdP9sb3n/ +cHN9/25xe/9zdn//bnB3/3Bzff9ucHf/d3qD/3Bzff9ucHf/dXiB/3V4gf9wcnn/c3Z//3Bzff9zdn// +bnF7/3Byef97fYP/d3qD/2xvef9zdn//Z2p0/25xe/91eIH/bnF7/3V3ff91eIH/cHN9/3V3ff97fYP/ +d3qD/3N1fP9ucXv/dnmC/3Bzff90d4D/bnB3/3R3gP9wc3z/cHJ5/3ByeP90d33/bnF7/3R3gP9vcXj/ +b3F3/3Byef9maXP/Z2px/21vc/9tb3P/bnB3/3V3fP9xc3v/cHN7/2lsdP9sbnb/bW92/2lrdP9tb3f/ +b3F4/3Byev9wc33/bnB3/3Byef9wc33/eXyG/3d6g/93eX//c3Z//3N2f/9ucHf/cHN9/3V4gf9zdn// +bnF7/3d5f/91eIH/bnB3/25xe/9ucXv/bnB3/3V3ff9zdXz/bnB3/29xdf9wcnn/dnh8/3l7gf9wcnn/ +cHJ5/3V4gf9qbXf/bnB3/21vc/9ucHf/am13/25wd/9sbnX/ZGZs/25wd/9tb3P/c3V8/2xudf9qbHP/ +dXd9/2dqdP9sbnX/cHJ5/21vc/9ucHf/bG95/25xe/91eIH/c3Z//25xe/9zdn//cHN9/25xe/9vcXX/ +cHN9/2dqdP9sb3n/dXd9/3Z4fP9tb3P/Z2px/3Byef9sbnX/bnF7/2ptd/91d33/bnB3/25wd/9nanH/ +bW9z/2xudf9sb3n/bG95/2psc/9kZ3H/cHN9/25xe/9maXP/YmVu/2Rncf9sb3n/am13/2xudf9qbHP/ +bG51/3Byef9zdXz/bnF7/3Byef9wcnn/b3F1/3Bzff9ucXv/d3l//3Bzff9ucHf/bnF7/25wd/95e4H/ +bG95/29xdf93eX//bnF7/2xvef9ucXv/c3Z//2dqdP9zdn//bnF7/3Bzff9wc33/cHN9/3V4gf91eIH/ +e32D/3N2f/9wc33/cHN9/25xe/9zdn//cHN9/3d6g/93eoP/dXiB/3N1fP9wc33/c3Z//2xvef9maXP/ +cHN9/25wd/9zdXz/c3Z//2xvef9sb3n/cHJ5/25xe/9wc33/bnB3/3Bzff9ucHf/eHl9/29xdf9qbHP/ +bnF7/29xdf9zdXz/Zmlz/3Bzff9zdXz/cHJ5/2xvef93eoP/cHJ5/3Bzff91eIH/c3Z//3Bzff9wc33/ +am13/25xe/9ucHf/bnB3/25wd/9wc33/dXd9/2xvef9zdXz/eHl9/29xdf92eHz/bG51/2ptd/9qbXf/ +bnF7/25xe/9qbXf/Z2px/2Zobv9sb3n/bnF7/2Jlbv9maXP/Zmlz/25xe/9ucXv/bG51/2xudf9qbHP/ +amxz/25xe/9zdn//c3Z//3Byef9zdn//bnF7/3l8hv9zdn//c3V8/3d6g/97fYP/dXiB/3Z5g/93eoP/ +dnmC/3V3gP9wc33/fYCJ/3p8g/9wc33/d3qD/2ptd/9wc33/dnh+/3Byef90dnz/a254/2tueP9oa3X/ +c3V8/29yfP9pbHX/am13/3N1fv9sb3n/bG95/2xudf9xc3r/bnB0/3Byd/9sbnT/cXN5/25wd/9vcnv/ +cHJ2/25wdf9vcXX/amxz/2dqcf9tb3P/bG51/25wd/9zdXz/cXN6/25wef9sbnb/bnB3/21vdv9tb3X/ +cnR7/3Fzev9ucXn/bG95/2ptd/9sb3n/bG51/3d5f/93eX//c3V8/3Bzff9sb3n/am13/2xvef91d33/ +dXd9/2xudf91d33/dXd9/2xvef9ucXv/cHN9/3N1fP9zdXz/bnB3/25wd/9vcXX/bnB3/3V3ff93eX// +cHN9/25xe/93eoP/Z2p0/2xvef9sbnX/cHJ5/25wd/9sb3n/bnB3/2RmbP9ucHf/bG95/3N2f/9ucXv/ +bG51/3d5f/9ucHf/bnB3/3Bzff9wcnn/bnB3/2xvef9ucXv/dXiB/3d6g/91eIH/d3qD/3N2f/9wc33/ +cHJ5/3Bzff9sb3n/bnF7/3N2f/91d33/cHJ5/2ptd/9zdn//bG51/3Byef9wcnn/bnF7/2ptd/9sb3n/ +Z2p0/21vc/9ucHf/bG95/3Byef9ucHf/amxz/3V3ff92eHz/bnB3/2dqcf9qbHP/dXd9/3Byef9sbnX/ +b3F1/29xdf9ucHf/c3V8/3N1fP9sbnX/am13/2psc/9sb3n/Z2px/25xe/9nanT/amxz/2dqcf9nanH/ +dXd9/2psc/9sbnX/dXd9/2xudf9maXP/amxz/25xe/9nanT/bG95/2xvef9qbXf/bnB3/2xudf9qbXf/ +am13/3N1fP9tb3P/bG51/2xvef9sb3n/am13/2Zpc/9ucXv/am13/2psc/9kZ3H/Z2px/2ptd/9nanT/ +Zmlz/2ptd/9sbnX/bG51/21vc/9sbnX/bnB3/2xvef9wcnn/c3V8/2xvef93eX//cHN9/3d5f/9sb3n/ +am13/25xe/9wcnn/c3Z//2ptd/93eoP/c3Z//3N2f/9ucHf/c3Z//25wd/9wcnn/cHJ5/25wd/9wcnn/ +c3V8/2xudf9wcnn/bG51/2xudf9sbnX/am13/3Bzff9sbnX/cHJ5/3h5ff9tb3P/dXd9/3Byef9zdXz/ +c3V8/3V3ff92eHz/cHJ5/25wd/9ucHf/cHN9/3N2f/9sb3n/cHN9/3Bzff93eoP/eXuB/3V4gf91eIH/ +bG95/3N1fP95e4H/fn+D/3t9g/95e4H/fX6B/3Bzff99gIr/cnV+/3J0e/90d4D/d3mA/3R3gP90dn// +dHeA/3V4gf90dn7/b3F4/3l8hP94eoD/bG95/3BzfP9pa3L/b3F6/3V3ff9ucXr/dHZ9/2ptdv9rbXb/ +a212/3R2fP9wc33/bG52/25weP90dnv/bnB3/21weP9pbHb/am11/2lsc/9sb3f/bG5z/21veP9vcXj/ +bG95/29xef9ucHf/bW90/2Zobv9nanH/bG51/2xudf9sbnX/dHZ7/25weP9rbnj/Zmly/2Zpc/9nanL/ +Y2Zw/2ptd/9qbXX/am13/2xvef9qbXf/bG95/2xudf9zdn//c3V8/3Bzff9wc33/am13/2psc/9nanT/ +dXd9/3N1fP9qbXf/dXd9/3Bzff9sbnX/bG95/25xe/9wcnn/dnh8/3N1fP9ucHf/bW9z/2xudf93eX// +dXiB/25xe/9ucHf/eXuB/2xudf9wcnn/bG51/2xvef9ucHf/bG51/2ptd/9kZ3H/am13/2dqdP9qbXf/ +am13/2Zpc/9zdXz/bG51/2dqdP9sb3n/Z2px/2dqcf9qbHP/bG51/25xe/9ucXv/bG95/2xvef9qbXf/ +bG51/2dqdP9qbXf/Zmlz/2xudf9sb3n/cHJ5/2psc/9kZ3H/Z2p0/2dqdP9sbnX/bG95/2ptd/9qbHP/ +bG51/2BjbP9qbHP/Z2px/2psc/9qbXf/bG51/2Zpc/9qbXf/bnF7/2dqdP9gY2z/YmVu/2ptd/9nanT/ +Z2p0/2dqcf9qbHP/am13/2xvef9ucXv/bnB3/25wd/9ucHf/c3Z//25wd/9zdn//cHN9/2xvef9sb3n/ +bW9z/3l7gf9vcXX/bnB3/3V3ff9ucXv/bG95/25wd/9wc33/bG51/3Byef9ucHf/bnB3/3N1fP9ucHf/ +bnB3/29xdf91d33/b3F1/21vc/9sbnX/bnB3/25wd/9ucHf/c3V8/25wd/9ucHf/bnB3/29xdf91d33/ +b3F1/2Zobv9wcnn/am13/2dqdP9qbHP/Zmlz/2xudf9sb3n/bG95/2ptd/9qbHP/cHJ5/2Zpc/9sb3n/ +Zmhu/11gav9iZW7/Zmhu/2Zpc/9dYGr/am13/2dqdP9maG7/YmVu/2dqdP9kZ3H/Zmhu/2Rncf9kZ3H/ +am13/2dqdP9iZW7/Z2px/2BjbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Zpc/9ucXv/Zmlz/3Byef9nanT/ +Z2p0/2xvef9ucXv/bG95/25xe/9sbnX/bG51/3J0e/9xdHv/aGt1/2tueP9pbHb/bG95/2xvef9sbnX/ +bnB3/2Zobv9maXP/am13/3Bzff9ucXv/am13/25xe/9qbXb/dHeA/25xe/9rbnb/bnF6/3Bzff9ucXr/ +bXB5/3Fzev9xc3v/b3F5/29xef91d3//d3l//3F0fP92eID/cHJ5/3R2fP93eYH/cHJ6/3d5gf95fIX/ +eHqC/3d5fv98foT/fH6F/3N1fP90dnz/eXuA/3d5gP9ydHz/c3V9/3Z4fv90dnz/dnh8/3F0ev9zdXv/ +dXd9/3h6gP90dn3/dHZ+/3Bzff9sb3n/bG95/3N1fP9wc33/c3Z//3d6hP90dn3/c3Z//2lsdv9tcHr/ +bW93/21vd/9zdXz/am13/29xeP9wc33/am13/3Byef9ucHf/eHl9/3Z4fP91d33/dXd9/25wd/9sb3n/ +bnB3/3V3ff91d33/bnB3/3V3ff92eHz/b3F1/3Byef9wcnn/dXd9/3V3ff9ucHf/am13/2xudf9qbXf/ +dXd9/3l7gf9ucHf/bG95/3V4gf9maXP/am13/2dqcf9qbHP/amxz/2dqdP9nanH/XWBq/2Zpc/9maG7/ +am13/2xvef9nanT/c3V8/2dqcf9qbHP/bG95/2dqdP9qbHP/bG51/2xudf9wc33/am13/25xe/9qbXf/ +am13/2ptd/9qbXf/bG95/2ptd/9qbHP/cHN9/3d5f/9sb3n/bnB3/3Byef9tb3P/bW9z/25wd/9zdXz/ +b3F1/2xudf9sbnX/bG95/2xudf9ucHf/bG95/2ptd/9qbXf/bnF7/3d5f/9nanT/amxz/2psc/9ucXv/ +bnF7/3N2f/9wcnn/bnF7/2xvef9zdXz/dnh8/3Byef9ucHf/am13/25xe/9tb3P/dXd9/3Bzff9sbnX/ +amxz/2xudf9zdn//am13/2xudf91d33/bG95/2ptd/9qbHP/bG95/2Rncf9nanT/Z2p0/2psc/9ucXv/ +amxz/2dqdP9sb3n/bnF7/2xudf9qbHP/am13/2ptd/9sbnX/am13/3Byef9sb3n/bnB3/25wd/9wcnn/ +dXd9/25wd/9maXP/dXiB/25wd/9ucHf/cHJ5/25wd/9zdXz/cHN9/3N2f/9wc33/cHN9/3d6g/9wc33/ +eXuB/3N2f/9ucXv/cHJ5/25wd/9ucXv/Z2p0/3V3ff9sbnX/bnB3/25wd/94eX3/bnB3/25wd/9sb3n/ +bG95/3N1fP9qbXf/Z2p0/2ptd/9sbnX/bW9z/25wd/9zdXz/dXd9/25wd/9zdn//d3l//2xvef93eX// +c3Z//3Bzff91eIH/d3l//3l7gf9zdn//c3Z//3V3ff93eoT/enyD/3V3ff94e4P/eHqB/3V4gv90d4D/ +bnF7/3V4gf9qbXf/Z2p0/2xvef9wc33/c3V8/25wd/9ydHz/bnF6/3R3f/9ucHn/bG93/29yfP9ydHv/ +b3F4/25wdf9wcnf/bW92/25wdP9vcnr/cnR8/3V3fv9ucHf/dXh//2xud/9ydHz/dHd//25xef9zdn// +c3V8/3J0ef9wc3z/c3V9/3R3gP9sb3f/bXB6/3V4gv9ucXv/b3J8/2xvef9vcXj/bnB4/3Bzev9vcXj/ +cXN6/25wd/9ydXz/cHJ4/21wef9tb3P/Zmhu/2dqcf9sbnX/bW9z/2ptd/91d33/bnB0/25xe/9maXP/ +bnB3/21vc/9tb3P/c3V8/2ptd/9qbXf/bnF7/2xudf9sb3n/amxz/3V3ff9zdXz/bnF7/3Bzff9nanT/ +amxz/2Zpc/9wcnn/bG95/2xudf9qbXf/bG95/2Zobv9maXP/Zmlz/2Zpc/9qbXf/Z2p0/2dqcf9maG7/ +amxz/25wd/9zdn//am13/2ptd/9zdn//am13/2xvef9qbXf/am13/2ptd/9zdXz/bnB3/2dqcf91d33/ +b3F1/3N2f/93eoP/c3V8/3t9g/9zdXz/c3V8/3Bzff9sb3n/bnB3/25xe/9sb3n/c3Z//25wd/9zdXz/ +bnB3/2xudf9sbnX/amxz/2xudf9qbXf/bG51/2xvef91eIH/am13/2dqcf9nanH/Zmhu/2Rncf9maXP/ +am13/2Zobv9qbHP/Zmlz/2psc/9nanH/amxz/2xudf9qbHP/amxz/2xvef93eX//am13/2dqdP9nanH/ +bnF7/25xe/9wc33/b3F1/29xdf9ucHf/cHJ5/3Z4fP91d33/bG51/21vc/9ucHf/bW9z/3N1fP9wc33/ +am13/3Byef9ucHf/d3l//3Byef9sbnX/dXd9/2xvef9nanT/Z2p0/2xvef9maXP/amxz/2ptd/9sbnX/ +c3V8/2xudf9nanT/bG95/25xe/9qbXf/bG51/2ptd/9qbHP/bG51/2ptd/9sb3n/bG51/2ptd/9sbnX/ +cHJ5/3V3ff9wcnn/Z2px/3N2f/9nanT/bnB3/25wd/9ucHf/cHJ5/3Byef9wc33/cHN9/3Byef93eoP/ +c3Z//3V4gf9sb3n/bG95/25wd/9vcXX/cHJ5/2dqcf9zdXz/bG95/2ptd/9maXP/d3l//2dqcf9qbXf/ +amxz/2Zpc/9qbXf/Zmhu/2Jlbv9maG7/Zmlz/2Rncf9nanH/am13/2xvef9maXP/am13/3V3ff9qbXf/ +dXd9/3N1fP9ucHf/dXd9/3N1fP93eX//cHN9/25wd/9sb3n/bG95/25xef9qbXX/b3J8/3N1e/9xc3z/ +c3Z//25xe/9zdn//am13/3Byef9wc33/d3qD/3l8hv90d4D/dHeB/29xev90d4H/cXN7/21wef9tcHr/ +dHZ8/29yev9wc3r/dXh//3N1fv9wc3v/cnV9/3Z4gf94en//c3V8/3p8gf9rbnf/b3F7/3V3ff9ucXv/ +dHeA/3V4gf9ydX//cnR7/3h7hP98foX/cnV+/3d6hP99gIr/dnmB/3R3gP9zdXz/dnmB/3R3gP9wc33/ +bnF7/3J1fv9tcHr/dnh8/21vdv9wc33/bnB3/2dqdP9qbXf/bnF7/25wd/9wcnn/d3l//3N1fP91eIH/ +cHN9/3V4gf9wc33/c3Z//36Ahv93eoP/c3Z//3V4gf9wcnn/bnF7/3Byef95e4H/dXiB/3l7gf95e4H/ +c3Z//25xe/9ucXv/d3qD/3Bzff9ucHf/bnF7/3V4gf9wcnn/cHJ5/25wd/9ucHf/c3V8/3Byef9vcXX/ +bG51/3N1fP92eHz/dnh8/25wd/9wcnn/dXd9/2xudf9ucHf/bnB3/29xdf9ucXv/c3Z//3N2f/9maXP/ +c3Z//3Byef9wc33/c3Z//2xvef91d33/cHJ5/25wd/9ucXv/am13/25wd/9wc33/cHJ5/3V3ff9ucHf/ +c3V8/25wd/9ucHf/cHJ5/29xdf9tb3P/bnB3/2ptd/9sb3n/d3l//25wd/9tb3P/bG95/25wd/9tb3P/ +cHJ5/3Byef9sbnX/bG51/2xudf9tb3P/am13/2xudf9ucHf/bG51/21vc/9zdXz/dXiB/2xvef9sb3n/ +am13/25xe/9wc33/c3Z//2xvef9vcXX/bG95/25xe/9zdn//dXiB/25xe/9ucHf/bnF7/2xvef9zdn// +dXd9/25wd/9ucHf/bnB3/3d5f/9zdXz/bnB3/3N1fP9sbnX/Zmlz/2psc/9qbXf/ZGdx/2dqcf9qbXf/ +Zmhu/2xvef9nanH/ZGdx/2dqdP9sb3n/amxz/2xudf9sb3n/bG51/2ptd/9sbnX/cHJ5/25xe/9sb3n/ +bnF7/25xe/93eX//cHN9/2ptd/93eoP/cHN9/3Byef9wcnn/dXd9/3V3ff94eX3/e32D/3l7gf93eX// +f4KM/3l8hv97fYP/d3qD/3N1fP91d33/c3Z//3V4gf9wc33/eXuB/3V4gf9wcnn/bnB3/3l8hv9ucHf/ +c3Z//3Bzff9wcnn/cHN9/3Byef9wcnn/cHJ5/25wd/9sbnX/bG95/3Bzff9ucXv/bnB3/25xe/93eX// +bnB3/3V3ff9zdXz/bnB3/3V3ff9zdXz/d3l//3Bzff9ucHf/bG95/3R3gP91dnz/bnB3/3J0fP92eHz/ +b3F4/3J0e/9ucHf/c3V8/2psc/9qbXf/bG51/3Bzff9ucXv/c3V8/3J0e/9rbnT/c3V8/21wef9ucHf/ +bW92/3V3fP9tb3b/a212/21wev9qbXf/b3F4/2ttdf92eH//cnR7/25xeP91d33/Z2py/2xvef91d33/ +bnB3/3N2fv9vcnv/a254/2hrdf90d33/cHN9/2dqcv9nanT/dXiB/2dqdP9maG7/ZGdx/2Zpc/9qbHP/ +ZGdx/2BjbP9maXP/XWBq/25wd/9gY2z/Zmlz/2Zobv9maXP/Z2p0/2xudf9sbnX/bnB3/3N1fP9vcXX/ +cHJ5/2Zobv9sbnX/bG51/25wd/9wcnn/bnB3/25wd/91d33/cHN9/25wd/9ucHf/dXd9/3V3ff91d33/ +c3Z//3N1fP9ucHf/cHJ5/3V3ff9qbXf/bG51/25wd/9wc33/am13/2xvef9sbnX/cHJ5/3Byef9ucHf/ +bG51/25wd/9zdXz/c3V8/3V3ff9ucXv/bnF7/3V3ff9qbXf/bG51/21vc/9sbnX/am13/3N1fP9wcnn/ +Zmlz/3N2f/9ucHf/cHN9/3V3ff9wcnn/cHN9/29xdf9sb3n/bG95/2ptd/9sb3n/bnF7/2xvef91eIH/ +cHN9/3N2f/9ucXv/bnF7/3N2f/9wcnn/bnF7/2xvef9ucHf/cHJ5/3Z4fP9ucHf/bW9z/2ptd/9sb3n/ +bG51/3Byef9ucHf/am13/2xudf9qbXf/am13/25wd/9tb3P/bG51/2dqdP9qbHP/bG95/3V3ff9qbXf/ +Zmlz/2xudf9ucHf/dXd9/3V3ff9ucXv/cHJ5/3Bzff9ucXv/c3Z//3Z4fP9sbnX/b3F1/2xvef9ucHf/ +d3l//3V4gf9ucHf/bnF7/2xvef93eoP/cHJ5/25wd/9wcnn/bnB3/2dqdP9sbnX/am13/2Zpc/9qbXf/ +am13/2dqdP9wc33/Z2p0/2dqdP9zdXz/bnF7/2psc/9sbnX/bG51/2xudf9sbnX/bG51/2ptd/9sbnX/ +Z2p0/2xvef9qbXf/dXd9/2xudf9nanH/cHJ5/2psc/9sbnX/bG51/2xudf9sbnX/bnB3/3Byef9ucHf/ +bnB3/3l7gf91d33/c3Z//3Byef9sbnX/am13/2xudf9sb3n/ZGdx/25xe/9qbXf/am13/2xudf95e4H/ +bnB3/2xudf9sbnX/bW9z/3Byef9sbnX/bnB3/25wd/9qbXf/bG51/25wd/91d33/cHJ5/2xudf9wcnn/ +d3l//2xvef93eoP/dXiB/3N2f/91eIH/c3Z//3l8hv91eIH/cHJ5/3N1fP9ydHz/cXN5/3Byef90d3// +dXd9/3BzfP9wc3z/bG95/3Bzff9nanT/bnB3/3Bzff9zdn//cHN9/3V4gf90d4D/aGt1/3Z5g/9ucXr/ +dHeA/3BzfP94e4T/cHN9/3BzfP9wc33/dXiA/3N1fv9sb3n/eXuB/3N2f/9wcnn/d3qD/2ptd/93eoP/ +eXyG/3V4gf95fIb/eXuB/3Byef9sb3n/e32D/3d5f/9ucHf/bnB3/3t9g/9ucHf/b3F1/2xudf9ucHf/ +bW9z/2dqcf9kZ3H/am13/2psc/91d33/amxz/25wd/9tb3P/bG51/29xdf9wcnn/b3F1/3N1fP91d33/ +bnB3/2xvef9kZ3H/bG95/3Bzff9ucXv/d3qD/3V4gf9wc33/d3qD/3V4gf9wc33/dnh8/35/g/9+gIb/ +fX6B/36Ahv97fYP/dXiB/3d6g/95e4H/c3Z//3Bzff91eIH/e32D/3d6g/93eoP/c3Z//3d6g/93eoP/ +dXiB/3N2f/9wc33/dXd9/3d5f/95e4H/dXiB/3V3ff94eX3/bnB3/25wd/9sbnX/bG51/2xudf9ucHf/ +bnF7/2ptd/9wc33/bnB3/25xe/9zdn//bG95/3Bzff9ucHf/cHJ5/25xe/9sbnX/bG51/3Byef9wcnn/ +dXd9/2xudf9zdXz/bG51/25wd/9zdXz/bnB3/25wd/9ucHf/bG95/3N1fP92eHz/bG51/21vc/9wcnn/ +c3V8/2xudf91d33/bG95/2xudf9sbnX/amxz/2ptd/9sb3n/am13/2psc/9qbHP/bG51/2xudf94eX3/ +am13/2dqdP9ucHf/bnF7/3V3ff92eHz/bnB3/29xdf9zdXz/cHJ5/25wd/9zdXz/bG51/2ptd/9qbXf/ +amxz/25xe/9wcnn/Z2p0/2xudf9ucHf/d3qD/2ptd/9ucXv/bnF7/2xudf9qbXf/am13/2xvef9maXP/ +bG51/2ptd/9sbnX/cHN9/2dqdP9maXP/c3V8/3Bzff9sbnX/bG51/2xudf9sbnX/bW9z/2ptd/9qbXf/ +amxz/2dqdP9sb3n/bG51/3N1fP9qbHP/ZGdx/2dqdP9maXP/amxz/2ptd/9nanH/am13/2dqdP9sb3n/ +bG51/25wd/95e4H/dnh8/3V3ff9zdXz/bnB3/25wd/9ucHf/bG95/2Zpc/9zdn//bnF7/2xvef9wcnn/ +foGK/3N1fP9wc33/c3Z//3Bzff9ucXv/am13/2xvef9vcXX/bG51/21vc/9vcXX/dXd9/3Bzff9nanT/ +bnF7/3V3ff9nanT/dXd9/3Byef9sb3n/dXd9/25wd/91d33/bG95/2dqdP9qbHP/c3Z//3N1ff9rbXT/ +cHJ5/25wd/9rbnj/bnF7/2ptd/9wc33/bG51/21vc/9ucHf/bnF7/2xvef9wc33/am13/2Vocv9zdn// +bG51/25xe/9maXP/bnB3/2dqcf9nanH/amxz/2ptd/9maXP/YmVu/25wd/9kZ3H/YmVu/2Zpc/9cX2j/ +Z2p0/2xvef9maXP/Z2p0/3V3ff9sb3n/bG95/3l7gf91eIH/bnB3/3Bzff9+gIb/bnF7/29xdf9sb3n/ +bnF7/25wd/9sb3n/Z2p0/25xe/9qbXf/d3l//2dqdP9ucXv/bnB3/2ptd/9ucHf/bnF7/2xvef9zdXz/ +dXd9/25wd/9sb3n/aGp0/2xvef9tb3f/bnB3/3J1fv9tcHr/bnF6/3V4gf9wc33/c3V8/25wd/9zdn// +c3Z//3N2f/9ucXv/dXiB/3Byef9wc33/c3Z//3Byef9ucHf/cHN9/3d5f/9wc33/cHN9/25wd/91eIH/ +c3Z//3Bzff9vcXX/bnB3/3d5f/91eIH/dnh8/3V3ff91d33/d3l//3Byef9ucXv/bG95/2xvef9ucHf/ +c3V8/3N1fP9sbnX/c3V8/29xdf9wcnn/dXd9/25wd/9zdXz/am13/2xudf9sb3n/Z2p0/2xvef9sb3n/ +amxz/25xe/9sbnX/cHN9/2psc/9sb3n/bnF7/2psc/9nanH/Zmlz/2Zpc/9nanT/bnB3/2Zobv9qbHP/ +Z2p0/25xe/9nanT/bnF7/2xudf9sbnX/cHJ5/21vc/9ucHf/bG95/2xvef9ucXv/am13/25wd/9ucHf/ +dnh8/2xudf9nanH/b3F1/25xe/91d33/c3Z//2xvef9wcnn/c3Z//3Byef9ucHf/dXiB/3Bzff9ucXv/ +bnF7/3N2f/91eIH/c3Z//2xvef9wc33/c3V8/36Ahv9ucHf/dXd9/3V3ff9tb3P/Z2p0/2xudf9qbXf/ +Z2p0/2xudf9vcXX/b3F1/3V3ff9ucHf/bnB3/3V3ff91eIH/bnB3/2xvef9ucXv/cHN9/25xe/9zdn// +d3qD/3d5f/9zdXz/e32D/3l7gf9+f4P/e32D/3l7gf9+gYr/d3qD/3l7gf9+gIb/d3l//3V3ff91d33/ +eXuB/3V3ff93eX//gYOK/36Biv97fYP/d3qD/3Byef9ucHf/bnF7/25wd/9maG7/cHN9/2xvef9kZ3H/ +Z2p0/3V4gf9nanH/Z2px/2psc/9nanH/Z2px/2Jlbv9kZ3H/Zmlz/2Zpc/9maG7/ZGdx/2Rncf9maXP/ +YGNs/2dqdP9wcnn/ZGdx/3V3ff9sb3n/bG51/3N1fP9sbnX/d3l//3Byef9vcXX/bG51/3V4f/90d37/ +bW90/3N1fP9ucHf/bnB3/3N2f/9sb3n/cHJ5/2dqdP9ucHf/cHN9/3Bzff9ucHf/c3V8/3Byef9maG7/ +d3qD/2xudf9wcnn/am13/3N1fP9sb3n/bW9z/25wd/9ucHf/bnB3/2xudf91d33/cHJ5/2xudf9wc33/ +ZGdx/2xvef9wcnn/bG95/2xudf91d33/c3V8/2xudf94eX3/d3qD/25wd/9ucXv/foCG/3Bzff9wcnn/ +bnF7/25xe/9ucHf/am13/2psc/9rbnj/a254/3d6hP9wcnn/dXiB/3N1fP9ucXv/cHN9/3Bzff9wc33/ +eXuB/3Z5gv91eIH/cHJ8/2lrdP9rbnj/bW93/29xef9xdH3/bnF7/21wev9zdn//c3Z//3Bzff9ucXv/ +d3qD/3N2f/91d33/bnB3/3N1fP9vcXX/bnB3/3Byef9ucHf/b3F1/3Byef92eHz/bnB3/3Byef9ucHf/ +dXd9/3Byef9wc33/bG95/3Bzff91d33/d3l//3N1fP9sb3n/bnF7/3Z4fP9tb3P/am13/2xudf9qbHP/ +am13/25wd/9sb3n/Z2p0/3Bzff9sbnX/bnF7/3Bzff9nanT/bnF7/2ptd/9qbHP/am13/2Zpc/9qbXf/ +bG95/2xudf9wc33/bG51/25xe/9qbXf/bnF7/3Bzff9qbXf/bG51/2dqdP9qbXf/bnF7/3N1fP9sbnX/ +am13/25wd/92eHz/bnB3/3N2f/9sb3n/bG95/3Bzff9ucHf/bG51/29xdf9wcnn/bnF7/3Byef9wc33/ +bG95/3d6g/9sb3n/bnF7/3N1fP9zdn//dXiB/3d6g/9ucXv/cHJ5/3d6g/91eIH/cHN9/3N1fP9qbXf/ +bW9z/25wd/9ucHf/cHN9/3Byef9nanT/bG95/3Byef93eoP/bG95/3N1fP9wcnn/bG51/2psc/9qbXf/ +bG51/2Zpc/9sbnX/amxz/2dqdP9ucXv/bG51/2dqdP9ucXv/bG95/2psc/9nanH/Z2px/2xudf9sbnX/ +am13/2psc/9maG7/YGNs/2Rncf9kZ3H/bG95/2Zpc/9maXP/Z2p0/2Zpc/9kZ3H/bG95/2psc/9nanT/ +Zmlz/2xvef9sb3n/Zmlz/3d5f/91d33/dXd9/3Byef9ucHf/bnB3/3Byef9wcnn/am13/3d6g/9zdXz/ +bG95/3Byef95fIb/bG95/25wd/9sb3n/bG95/2xvef9qbHP/bG51/2xudf9qbHP/bG51/2psc/9sb3n/ +am13/2Zpc/9sb3n/dXd9/2Rncf9sb3n/Zmlz/2dqcf9maXP/Zmlz/3N1fP9qbXf/Z2px/2dqdP9xdH3/ +c3V8/2psc/9ucXv/amxz/2psc/9sb3n/am13/2xvef9qbXf/bG51/3Bzff9ucXv/bG95/3N1fP9wcnn/ +amxz/36Ahv9zdXz/cHJ5/2xudf93eX//bG95/21vc/9ucHf/bG95/2xvef9nanT/dXd9/2xvef9qbXf/ +cHN9/2Rncf9ucXv/bG95/2ptd/9sbnX/b3J7/29ye/9oa3X/c3V8/3J0fP9nanT/bG52/3h6gP9rbXT/ +bG51/21vdv9sbnX/bG51/21vdf9pa3L/bG92/2hrdf9zdn3/bXB6/2xvef9tb3b/Z2px/21vc/9sbnX/ +bG51/3Z4fP90dnz/cHJ7/2xvef9pbHP/bW92/2ttdv9sb3f/dHZ8/25wef9sbnf/cHJ5/25wd/9qbXf/ +am13/3N1fP9ucXv/c3V8/2xudf9ucXv/amxz/2ptd/9qbXf/bG51/2psc/9qbXf/am13/2psc/9qbHP/ +bG51/2xvef9sb3n/am13/2ptd/9sb3n/c3V8/3N2f/9wc33/cHN9/3V3ff94eX3/bnB3/3Bzff9zdXz/ +bnF7/25xe/9zdn//c3Z//2xvef97fYP/c3Z//3t9g/97fYP/c3V8/36Ahv91eIH/c3Z//3d5f/94eX3/ +d3qD/3l8hv91eIH/e32D/3N2f/9zdn//cHJ5/3d6g/91d33/bG95/25wd/9sb3n/bnB3/3V4gf91d33/ +bnB3/2xvef9ucXv/dXiB/3Byef91eIH/bG95/25wd/9wcnn/bW9z/2psc/9vcXX/cHJ5/2xvef9sb3n/ +bnF7/25xe/91eIH/am13/2xvef9zdXz/bnF7/3V3ff91d33/b3F1/29xdf91d33/bnB3/2xudf9zdXz/ +bnB3/25wd/9zdXz/cHN9/3N2f/9zdXz/bG95/25xe/9wc33/eXuB/3N1fP91eIH/dXiB/3Byef9sb3n/ +bnF7/25xe/9ucHf/bnF7/25xe/9wcnn/c3Z//25xe/9sb3n/cHN9/3Bzff9vcXX/bG95/2xvef9vcXX/ +bnB3/3Bzff9wcnn/b3F1/25wd/9zdXz/bnB3/3d5f/9ucHf/bG95/3N2f/9ucHf/cHJ5/3Bzff9zdXz/ +bnB3/25wd/9wc33/cHN9/2dqdP93eX//dnh8/3Z4fP9zdXz/bG51/2xudf9ucHf/bW9z/2dqcf9zdXz/ +bW9z/2xudf9sbnX/eXyG/2xudf9nanT/Z2px/2Zpc/9sbnX/Zmlz/2Zpc/9nanH/ZGdx/2xudf9qbHP/ +bnF7/2xudf9kZ3H/bG95/3V3ff9maXP/c3V8/25wd/9sb3n/c3Z//25xe/93eoP/dXd9/25wd/9ucXv/ +b3J6/3J0fP9ucHf/dXd9/29xdf9ucHf/cHN9/25xe/9zdn//bG95/2xvef9wc33/cHN9/25wd/9zdn// +bnF7/2ptd/94e4X/dHZ8/3J0fP9sbnX/dHZ8/29xeP9sbnX/b3F4/29xeP9tcHr/bnB0/3V3e/9wcnn/ +aGt1/21wev9jZm//cHJ5/25xev9tb3P/bW92/3Z4fP9ydHv/cHJ3/3V3fP9ydHv/aGtz/21vdv96fIP/ +bW93/2xvef9tb3f/aWx2/2xudf9rbXb/aWx1/2hrcv9pa3T/dnh+/25wd/9tb3f/a254/2dqcf9tb3P/ +bG51/25wd/91d33/cnV+/3F0ff9vcXr/aWxy/21vd/9tb3b/b3F5/3BzfP9rbnj/bnB4/25wd/9wcnn/ +bG51/25wd/94eX3/cHJ5/3N2f/9wcnn/c3Z//3Byef9zdXz/d3qD/3N1fP9wcnn/cHN9/3N2f/9sb3n/ +bG95/3Byef9zdXz/c3V8/29xdf9ucHf/bnF7/3l7gf93eX//dXd9/3N1fP91d33/dXd9/25wd/9ucHf/ +b3F1/25wd/9ucHf/bnF7/2ptd/9kZ3H/dXd9/2ptd/9zdXz/dnh8/25wd/94eX3/cHJ5/29xdf9wcnn/ +bG51/3Bzff9ucXv/bG51/3N1fP9tb3P/c3V8/2xudf9zdXz/cHN9/2psc/9qbXf/Z2p0/2ptd/91d33/ +dXd9/25wd/9ucHf/bG51/3Bzff9sbnX/bG95/2ptd/9sbnX/cHN9/21vc/9qbHP/am13/2xvef9tb3P/ +bG51/21vc/9qbHP/c3Z//2dqcf9sbnX/bW9z/21vc/9zdXz/c3V8/2xudf9tb3P/cHN9/25wd/9ucHf/ +Zmlz/2Zobv9maG7/am13/2Zpc/9qbXf/bG95/2psc/9qbXf/am13/3N2f/9qbXf/cHN9/3Bzff9nanH/ +ZGdx/2dqdP9qbXf/am13/2xudf9sbnX/bG51/25xe/9sbnX/am13/3Byef9zdXz/b3F1/2xudf9sbnX/ +bG51/2xvef9ucXv/am13/21vc/9sbnX/dXd9/2xudf93eoP/cHN9/21vc/9wcnn/bG51/2dqdP9sbnX/ +amxz/2dqcf9maXP/Z2p0/2ptd/9maXP/c3Z//3d5f/9wcnn/Z2p0/2Rncf9kZ3H/bG51/2ptd/9maXP/ +bG95/2xudf9maXP/Z2p0/3d6g/9qbHP/bG51/2psc/9maXP/bG51/2Zpc/9kZ3H/bG51/2dqdP9qbHP/ +amxz/2ptd/9nanT/YGNs/2ptd/9zdXz/YmVu/25xe/9sbnX/Z2px/2ptd/9qbXf/dXd9/25xe/9maXP/ +am13/25xe/9xc3r/a254/3ByeP9sbnX/a210/2ptd/9sbnX/am13/2dqdP9qbHP/Zmlz/2dqdP9maXP/ +am13/2hrcv9iZW7/cnR6/25xev9ucXr/a253/3R2ev9ucHn/bG51/21veP9rbnj/bnF7/21weP9vcnz/ +b3J6/2tueP9vcnz/ZWhx/3F0fP9wcnn/am11/2ptd/90d4D/cnV9/21weP9xc3v/cXN6/2psc/9qbXX/ +dXd//2ttdP9tcHr/a254/2lsdP9tb3T/aWx1/2hrdP9tbnX/aGt0/3d4ff9xc3j/bXB6/21vdv9maXP/ +amxz/2dqdP9qbXf/bnF7/3N1fP9vcnv/bXB6/2Vocv9qbXf/am13/3N1ff9xc3v/bW92/25xev9sb3n/ +bG95/2dqdP9sbnX/c3V8/2ptd/9qbXf/Z2px/2Zpc/9nanH/Z2px/2ptd/9nanH/Zmhu/2Zpc/9qbXf/ +YmVu/2Jlbv9maG7/Zmlz/2ptd/9sbnX/YmVu/2Zpc/9sb3n/c3V8/3Bzff9zdXz/cHN9/3d5f/9qbXf/ +bW9z/2xudf9ucHf/bnB3/3V3ff9sbnX/Z2px/3V3ff9wcnn/dXd9/3V3ff9sbnX/c3Z//3Bzff9tb3P/ +b3F1/29xdf92eHz/c3V8/2xudf91d33/am13/2ptd/9nanT/bnF7/2ptd/9iZW7/Z2px/2Jlbv9iZW7/ +Z2p0/2dqdP9nanH/Z2p0/2psc/9zdXz/bG51/3Byef9sbnX/bnB3/3N1fP9sbnX/YmVu/2psc/9qbXf/ +bG51/2dqdP9qbHP/Z2p0/3d5f/9nanH/bG51/21vc/9sbnX/c3V8/3V3ff9wcnn/bW9z/3Bzff9sbnX/ +amxz/25xe/9sb3n/b3F1/3d5f/9sb3n/cHN9/3Bzff9ucHf/bnF7/2xvef97fof/bnF7/3d6g/95e4H/ +c3V8/2xvef91eIH/c3V8/25wd/9ucXv/bnF7/25wd/9wc33/cHJ5/2xvef9zdn//cHJ5/2xudf9sbnX/ +am13/2ptd/9ucXv/cHN9/25wd/9ucHf/Z2p0/3V3ff9ucHf/eXuB/3N1fP9vcXX/cHJ5/25wd/9vcXX/ +c3V8/2xudf9sbnX/bnB3/3Byef9sbnX/bG51/3l7gf93eX//d3l//3Byef9sb3n/am13/25xe/9ucXv/ +am13/3N2f/9vcXX/amxz/2ptd/9+f4P/bnF7/3Byef9ucHf/bnB3/25wd/9sb3n/am13/3Bzff9wcnn/ +cHJ5/3N1fP93eoP/c3Z//25xe/95e4H/e36H/2dqdP91eIH/d3qD/3N2f/93eoP/d3qD/3t+h/97fYP/ +c3Z//3V4gf9sb3j/bnB2/25xef9ydXz/cXR9/3Bzff9vcXj/bG95/25wd/9sb3n/bG95/3Byef9sb3n/ +bG51/3J1fP9ucHf/Z2px/3J1fv9zdXr/cHJ5/2tueP9ydHr/cHJ6/29xd/9wc33/b3J8/3F0ff9xc3z/ +cXR9/3N2fv9ucHn/c3Z+/2hrdP9zdn7/dXh//29xeP9ucHf/dXiA/3F0ff9tcHr/dHZ7/3R2e/9pbHT/ +bnF4/3V4f/9sbnb/bnB3/2xudf9sbnX/bW90/2hrc/9rbXT/a254/2dqdP9wc33/bnB0/21wef9tb3P/ +amxz/21vc/9nanT/bG51/2xvef9sb3n/am13/3Byef9nanT/Zmlz/2dqdP9ucXv/cHN9/2ptd/9ucHf/ +bG51/25wd/9qbXf/am13/3V3ff9wcnn/cHJ5/2xudf9ucHf/bG51/2xudf9ucXv/Z2p0/2psc/9qbXf/ +bnF7/2psc/9qbXf/bG95/3Bzff9sb3n/am13/2dqdP9ucXv/cHN9/3d5f/94eX3/dnh8/3V3ff93eX// +bG51/2xudf9sb3n/bG95/2xudf9wcnn/cHJ5/2xudf92eHz/bnB3/3N1fP91d33/am13/2xvef9sb3n/ +bG51/21vc/9sbnX/dXd9/3N1fP9ucHf/cHN9/2ptd/9qbXf/Z2p0/3V3ff9wcnn/Z2p0/2ptd/9nanT/ +bG51/3Bzff9ucXv/bnB3/2xudf9tb3P/dnh8/29xdf9ucXv/cHN9/25xe/91d33/bG51/2dqcf9tb3P/ +cHJ5/2xudf9tb3P/bW9z/2ptd/93eX//Z2p0/2psc/9sbnX/am13/3V3ff92eHz/cHN9/29xdf91d33/ +bnB3/25wd/9qbXf/ZGdx/2psc/9ucXv/am13/2psc/9nanT/Z2px/2xudf9qbXf/dXiB/2xudf9wc33/ +dXd9/2xudf9nanT/bnF7/21vc/9sbnX/bG51/2ptd/9nanT/am13/2dqcf9nanT/bnF7/2ptd/9qbXf/ +am13/2ptd/9qbXf/bG95/25xe/9sb3n/Zmlz/2BjbP9qbXf/Zmhu/25wd/9qbXf/Z2px/2dqdP9maXP/ +Zmhu/2dqdP9kZ3H/Zmlz/2Zpc/9sb3n/am13/2dqdP93eoP/c3V8/3V3ff9nanT/ZGdx/2Jlbv9nanH/ +Z2px/2dqdP9sb3n/Z2p0/2Jlbv9nanT/eXuB/2ptd/9qbXf/bG51/2xudf9ucHf/b3F1/2dqdP9ucHf/ +bG51/21vc/9sbnX/c3V8/2xudf9qbHP/dnh8/3V3ff9maG7/c3Z//3N2f/9sb3n/c3V8/3N1fP94eX3/ +dXd9/3Byef9zdXz/c3Z8/3J0e/9ucXv/cnV7/29xef9vcXj/bW93/3Byef9ucHf/b3F1/29xdf9sbnX/ +bW9z/25wd/9wcnn/bG95/2hqcf91d37/cnV6/21wef9tb3b/dXd9/3R2fv9ucHf/b3F6/3F0ff9ucXv/ +cXN6/3J0ff9zdn7/cnR7/3Z5gf9rbnf/c3Z//3R3f/9vcXb/b3F2/3N2f/9wc33/bnB3/3R3gP90dnv/ +am10/3J0e/90dn3/bG51/29xef9sbnX/am12/2xvc/9gY2z/Zmlz/2dqdP9kZ3H/bG95/2dqcf9qbXf/ +amxz/2ptd/9qbXf/bG51/2xudf9wcnn/bnB3/21vc/9ucXv/Z2p0/2Zpc/9nanT/bG95/25xe/9wcnn/ +cHJ5/25wd/9ucHf/bW9z/25wd/9zdXz/dXd9/3Bzff9ucHf/bG95/2xvef9sb3n/dXd9/29xdf9ucHf/ +bnF7/3Bzff9vcXX/bG95/3V4gf91eIH/bnF7/3N1fP9wc33/d3qD/3d6g/95fIb/e36H/36Ahv9+f4P/ +e36H/3Bzff9wc33/dXiB/3N2f/9wc33/cHN9/25xe/9qbXf/eHl9/3N2f/91d33/dXd9/2xvef9wcnn/ +cHJ5/29xdf9sb3n/bnB3/3N1fP9zdXz/cHJ5/25xe/9qbXf/am13/2dqdP91d33/c3V8/2xudf9sb3n/ +cHJ5/3Byef9zdn//dXiB/3V4gf9zdn//cHJ5/3t9g/9wc33/dXiB/3d6g/95fIb/e32D/3d6g/9wc33/ +dXd9/3N2f/9zdn//cHN9/3N1fP9zdXz/d3qD/2ptd/9sb3n/cHJ5/25wd/91d33/dnh8/3V3ff9ucHf/ +dXd9/25wd/9tb3P/bG95/2ptd/9wcnn/c3Z//3Bzff9ucXv/dXd9/2xudf9ucHf/bnB3/3t9g/9vcXX/ +c3V8/3Z4fP9ucHf/amxz/25xe/9qbXf/am13/2xudf9qbXf/bG51/2psc/9nanH/bG51/25xe/9qbXf/ +am13/2xudf9qbXf/ZGdx/2xvef9ucXv/bG95/2Zobv9kZ3H/am13/2dqdP9zdXz/am13/2dqdP9zdXz/ +bG51/2xudf9zdXz/b3F1/2xvef9sb3n/c3Z//25xe/9vcXX/e32D/3d5f/93eX//bnB3/2xudf9nanT/ +bnB3/25wd/9sb3n/dXiB/25wd/9ucHf/bnB3/31+gf9ucHf/bG95/2xudf9nanT/Z2p0/21vc/9nanT/ +bG51/2psc/9sbnX/Zmlz/2xvef9nanT/Z2p0/3Bzff9zdXz/ZGdx/3N1fP9ucXv/bG51/3N1fP9ucXv/ +cHN9/3Bzff9sb3n/bG95/3Fze/9ydHv/b3J5/3R2fP9vcXb/bW95/2hrdf9oa3X/am13/2psc/9qbHP/ +bG95/2Zpc/9maXP/Z2p0/2dqc/9gY2z/cXR9/29xef9sb3j/bG52/3J0e/9vcnv/b3F1/25weP9wcnn/ +cHJ2/25weP9wcnn/bnB3/25weP9ydX7/Z2p0/3N2f/9xc33/bnB3/3Bzff9wc33/bnF7/21vc/9zdXz/ +dnh8/2xudf9zdn//d3qD/29xdf9wcnn/bG95/2xvef9sb3n/Zmhu/25wd/9ucHf/amxz/3V3ff9sb3n/ +cHJ5/29xdf9sbnX/bnB3/2xudf9tb3P/c3V8/2xudf9sbnX/bnF7/2Zpc/9qbXf/Z2p0/2ptd/9wc33/ +bG95/3Bzff9sb3n/bG51/25wd/9ucHf/c3V8/3N2f/9zdXz/b3F1/25wd/9ucHf/bG51/3V3ff9vcXX/ +bG51/25wd/9wcnn/bG95/25wd/91eIH/e32D/3Bzff9wc33/c3V8/3N2f/91eIH/eXuB/3d5f/9zdn// +dnh8/3d5f/9nanT/b3F1/25xe/9wc33/cHN9/3Bzff9ucXv/bnB3/3V4gf9wc33/c3Z//3V4gf9ucHf/ +cHN9/25xe/9ucHf/bG95/2xvef91d33/c3Z//25xe/9wc33/bnB3/25wd/9nanT/c3V8/3N2f/9qbXf/ +bG95/25wd/9sb3n/c3Z//3Bzff9zdn//c3Z//3Bzff95fIb/cHJ5/25xe/9zdn//cHN9/3Bzff9wc33/ +Z2p0/25wd/9zdn//bnF7/3Byef9wcnn/cHJ5/3d6g/9ucHf/cHJ5/3Bzff9sb3n/d3l//3Z4fP91d33/ +bnB3/3N2f/9ucHf/bnB3/25wd/9ucHf/cHJ5/3d5f/91eIH/c3Z//3l7gf9ucXv/bnF7/3N2f/9+gYr/ +c3V8/3d6g/97fYP/cHN9/3Byef9ucXv/bG95/2xvef9sb3n/bG95/3Bzff9ucXv/bnB3/3Bzff97fYP/ +dXiB/3Bzff9ucXv/cHN9/25xe/93eoP/e32D/3l7gf9zdn//cHJ5/3N2f/9wcnn/eXuB/3Bzff9ucHf/ +d3qD/3N1fP9zdXz/eXyG/3V3ff91d33/c3V8/3d6g/91eIH/c3V8/3l8hv93eoP/d3l//3Bzff9sb3n/ +Zmlz/25wd/9sbnX/b3F1/3Byef9ucHf/bnB3/2xvef97fYP/bnF7/25xe/9ucHf/bG51/2ptd/9qbHP/ +amxz/2xudf9ucHf/bnB3/2dqdP91eIH/am13/2xvef93eoP/c3Z//2Zpc/91d33/c3Z//3Bzff93eX// +c3Z//3V3ff9wc33/bnF7/25wd/91d3v/dXd7/3Byef91d3z/bnB0/3Byef9qbXf/bG95/25wd/9tb3P/ +bG51/25xe/9maXP/YmVu/2dqdP9kZ3H/YGNs/3J1fv9sb3n/Zmhu/2RmbP9sb3n/Z2py/2dqcf9oa3L/ +Z2lz/2dpb/9laHH/bG95/2ptd/9sbnX/bG95/2Rncf9wc33/bG95/2xudf9qbXf/c3Z//3V4gf9vcXX/ +cHJ5/3V3ff9sbnX/dXd9/3d5f/9tb3P/bnB3/2xudf9ucHf/bnF7/2Zobv9sbnX/bnB3/2dqcf91d33/ +bG51/25wd/9ucHf/b3F1/25wd/9ucHf/am13/3Bzff9sbnX/am13/2xvef9maXP/Z2p0/2Vocv9tb3T/ +c3V8/25wd/9ydHv/c3Z//2xvef9ucHf/bG95/3Bzff9zdXz/c3V8/25wd/9ucHf/b3F1/21vc/9wcnn/ +bW9z/25wd/9ucXv/c3Z//3Bzff9wcnn/dXiB/3d5f/9sb3n/bG95/29xdf9ucHf/cHJ5/3Z4fP9ucXv/ +c3V8/3Bzff9zdXz/ZGdx/2psc/9qbXf/am13/2ptd/9sb3n/bnB3/2dqdP9zdXz/bnF7/25xe/9wc33/ +bG51/2xvef9sb3n/am13/2psc/9sbnX/c3V8/3Bzff9ucHf/cHJ5/2xudf9tb3P/Z2px/2xvef9wc33/ +bG51/25wd/9ucHf/b3F1/3N1fP9zdXz/bnB3/25xe/9tb3P/dXd9/2xudf9sb3n/bnF7/25xe/9ucXv/ +am13/2Zpc/9sbnX/c3V8/25wd/9sbnX/bW9z/2xudf94eX3/bnB3/25wd/9ucXv/bnB3/3Z4fP91d33/ +eHl9/25wd/9zdXz/bG51/29xdf9ucHf/bnB3/3Byef91eIH/c3Z//3Bzff93eoP/bnF7/3Bzff9ucXv/ +eXyG/25wd/9zdXz/dnh8/25wd/9ucHf/bnF7/3Byef9qbXf/bnB3/25wd/9ucXv/bnB3/25wd/9sbnX/ +dnh8/25wd/9tb3P/bnB3/25wd/9qbXf/cHN9/3V3ff92eHz/cHJ5/2xudf9wc33/cHJ5/3l7gf9wc33/ +bnF7/3V3ff9tb3P/bnB3/3Byef9ucHf/b3F1/25wd/9zdXz/cHJ5/29xdf95e4H/dXiB/3l7gf9ucHf/ +bnB3/2RmbP9sbnX/Z2p0/2psc/9sbnX/am13/2Zpc/9qbHP/c3Z//2ptd/9qbXf/am13/2dqdP9maXP/ +am13/2Zpc/9qbXf/bG51/2xvef9nanT/bG95/2Rncf9maXP/bG95/2ptd/9iZW7/bnF7/2xvef9sbnX/ +cHN9/25xe/9zdXz/bnF7/2xvef9qbHP/cHN9/3Byef9sb3n/dnh8/21vc/9ucHf/bG51/25wd/9qbXf/ +bG51/21vc/92eHz/bnB3/2dqcf9zdXz/bnB3/2dqdP97fof/c3Z//25xe/9ucXv/eXuB/2xvef9ucHf/ +bG95/25xe/9ucHf/bnB3/25xe/9qbXf/bG51/2xvef9kZ3H/c3V8/25xe/9qbXf/bG51/3N2f/93eoP/ +cHJ5/3Bzff91d33/bG51/3V3ff95e4H/bG51/3Byef9ucHf/b3F1/3Byef9maG//Z2p0/2dqc/9hZG3/ +cHN9/2ttdP9oa3X/a21z/2psc/9qbXf/bG51/2ptd/9wc33/bG95/25xe/9tcHr/Z2p0/2dqdP9oa3P/ +bXB3/3J1fv9ucXv/bG95/3Byef9qbHP/amxz/2psc/9sb3n/bG95/2xvef9sbnX/bnF7/2psc/9sbnX/ +bnF7/2psc/9maXP/Zmlz/2ptd/9maXP/Z2px/25xe/9ucXv/amxz/2Zobv9kZ3H/Zmlz/2dqdP9wcnn/ +bG95/25xe/9wc33/c3V8/2Rncf9sbnX/am13/2psc/9nanT/bG95/2dqcf9qbHP/c3V8/25xe/9ucXv/ +cHN9/2psc/9qbXf/bnF7/25wd/9tb3P/b3F1/3V3ff9zdXz/c3V8/3N1fP9sbnX/bnB3/2psc/9ucHf/ +eHl9/25wd/9sbnX/bG51/2xvef9zdn//bnF7/2xudf9ucHf/bnB3/3V4gf9ucHf/cHJ5/3N1fP9ucXv/ +bnF7/3N1fP9qbHP/amxz/3V3ff9ucHf/bnB3/25wd/9ucHf/dnh8/21vc/9ucHf/c3V8/25wd/92eHz/ +dXd9/3Z4fP9ucXv/dXiB/25xe/9zdXz/am13/2Zpc/9qbHP/cHN9/2xvef9sbnX/cHN9/2ptd/9sbnX/ +bnB3/3l7gf9wcnn/c3Z//3V4gf9ucXv/bnB3/25xe/9ucHf/am13/25wd/9sb3n/bnF7/25wd/9ucHf/ +bG51/3d5f/9wcnn/b3F1/2xudf9ucHf/Z2px/2xvef9wc33/bnF7/2xvef9qbHP/bG95/2Zobv9sb3n/ +Z2px/2dqcf9qbXf/Z2p0/2Zpc/9sb3n/am13/2ptd/9qbXf/bG51/3V3ff9sb3n/eXyG/3l7gf95e4H/ +cHN9/25wd/9qbXf/c3Z//3N1fP9zdXz/dXiB/3V3ff91eIH/d3l//4OFjP97fYP/eXuB/3V4gf9zdn// +cHN9/3N2f/9wc33/d3qD/3V3ff91eIH/cHN9/3l7gf9zdXz/bnF7/3V4gf9wc33/am13/3d6g/91eIH/ +cHN9/3N2f/93eoP/e32D/3N2f/9wcnn/b3F1/3V3ff91eIH/bnF7/3l7gf9ucHf/c3V8/29xdf9ucHf/ +bW9z/21vc/9vcXX/dXd9/25wd/9sb3n/bnF7/2dqdP9nanT/e32D/3V3ff9wcnn/bnB3/3Z4fP9tb3P/ +b3F1/25wd/9ucHf/bG51/2psc/9zdn//bnF7/25wd/9zdXz/Zmhu/3Z4fP9ucXv/b3F1/21vc/99f4X/ +e32D/3V3ff93eoP/fX6C/3V3ff98foX/f4GI/3N2f/92eYL/cnR7/29yfP9zdn//aGt1/25wd/9qbHP/ +ZWhy/29ye/9sbnX/bW92/21vdv9nanH/am13/2dqcf9maXP/bnB3/2Zpc/9nanT/bG92/2hrdP9lZ3D/ +ZWhw/2xudP9ucXr/a212/2hqc/9qbXf/bG51/2xudf9qbXf/bnF7/3Byef9wcnn/b3F1/3N1fP9wcnn/ +bG51/3N1fP9vcXX/bnB3/3Byef9zdXz/bnB3/3Byef9wc33/dXd9/25xe/9sb3n/bnB3/25xe/9zdXz/ +eHl9/3N1fP9zdXz/cHN9/3Z4fP9nanH/bG51/3Bzff9sbnX/bnB3/3V3ff9tb3P/bG51/3Z4fP9wcnn/ +cHJ5/3N1fP9sbnX/bG51/2xvef9zdXz/bG51/2xudf9wcnn/c3V8/3Bzff9zdXz/bnB3/25wd/9sb3n/ +bG95/3d5f/9ucHf/cHJ5/2xvef9vcXX/c3Z//3Bzff9sb3n/bG95/25xe/91eIH/bnB3/3N2f/9zdn// +c3Z//3N2f/93eX//bnB3/2xvef9wc33/bG95/2xudf9sbnX/bG51/3Z4fP9qbXf/am13/3Byef9sbnX/ +c3V8/3N1fP9ucXv/bG95/3N1fP9qbHP/bW9z/21vc/9sbnX/bnB3/3V3ff9wc33/bG95/3N2f/9ucHf/ +bnF7/25xe/93eoP/cHN9/3N2f/95fIb/d3qD/3V3ff91eIH/dXd9/3N2f/9zdn//c3V8/3V4gf9wcnn/ +cHJ5/3Bzff91eIH/cHN9/25xe/9ucHf/cHJ5/2psc/9zdn//eXuB/3N2f/9ucXv/bG95/3N1fP9vcXX/ +c3V8/2xudf9sbnX/dXd9/25xe/9ucHf/cHN9/3Byef9wcnn/bnF7/3N1fP91eIH/bnF7/3l8hv95e4H/ +eXuB/25xe/9qbXf/Zmlz/3Byef9ucHf/am13/3Bzff9sb3n/cHN9/25wd/93eoP/c3Z//3Byef9ucHf/ +b3F1/2psc/9vcXX/bG51/3Byef9vcXX/am13/2xudf9zdXz/bG51/2xudf9wc33/bG95/2Zobv9wcnn/ +cHJ5/25xe/9sb3n/c3V8/3V3ff9ucXv/bG95/21vc/91d33/eXuB/25wd/91eIH/bG51/3Byef9tb3P/ +bnB3/2xvef9ucXv/cHJ5/3V4gf9wcnn/bG95/25xe/9qbXf/Zmlz/3Z5gv9zdn//cHN9/21vef92eH7/ +bnB3/29xdf9sb3n/bnB3/29xdf9vcXb/dHZ9/3Byef9ucHf/bG94/2Nmb/91d3z/bG95/2lsc/9nanT/ +bnF7/3V4gf9xc3v/c3Z//3N2fv9tcHr/dXd+/3J1f/9rbnj/bnF7/2xveP9tb3j/cXN6/29xeP9tb3P/ +aWty/2ptdP9wc3v/b3F4/3Bze/9ucXr/Z2p0/2xvef9qbHP/Zmlz/25wd/9nanL/aGt0/25xef9sbnb/ +aGt1/21wef9ydX7/dHeB/29xef9sb3j/bnF7/2xudf9qbHP/amxz/25xe/9sb3n/bG95/21vc/9ucXv/ +bnF7/2xvef92eHz/bnB3/3Byef9zdXz/cHJ5/21vc/9qbHP/bnF7/3N1fP9sbnX/bG51/2dqdP9sb3n/ +bG95/3Bzff9sb3n/c3V8/25xe/9wc33/Z2p0/2ptd/9ucXv/amxz/2dqdP9sb3n/Zmlz/2dqcf9sb3n/ +am13/2xvef9zdXz/amxz/2xudf9qbXf/bnF7/2ptd/9tb3P/bnF7/3V3ff9zdn//cHN9/25wd/9ucHf/ +bnB3/25wd/91eIH/bnB3/3Byef9ucHf/cHJ5/3N2f/91eIH/c3V8/3Bzff9wc33/e32D/25wd/9wc33/ +dXiB/3l7gf91eIH/d3l//2xvef9qbXf/bnF7/25wd/9qbHP/bnB3/2xudf94eX3/bnB3/2xudf9sb3n/ +am13/3Byef9zdXz/c3V8/2ptd/9zdXz/amxz/2xvef9ucHf/am13/21vc/92eHz/c3V8/25wd/91d33/ +b3F1/29xdf9vcXX/dnh8/25wd/9ucHf/bnB3/25xe/9qbXf/bG95/2psc/9sbnX/bG51/2xudf9qbXf/ +Z2p0/2dqdP9nanH/dXd9/2dqdP9nanH/ZGdx/2Zpc/9dYGr/Z2p0/3N1fP9sb3n/bG51/2ptd/9qbXf/ +amxz/2xvef9sbnX/am13/25xe/9wcnn/amxz/25xe/9qbHP/Z2p0/2xudf9sbnX/c3V8/2ptd/93eoP/ +cHN9/3Bzff9sb3n/am13/2psc/9ucHf/bW9z/2xudf9ucHf/bG51/3Byef9tb3P/d3l//3Bzff9sb3n/ +cHJ5/2xudf9maXP/bG51/2dqdP9wc33/am13/2xudf9ucHf/c3Z//25wd/9ucHf/dXiB/3V4gf9kZ3H/ +dXd9/25wd/91d33/bG51/3Bzff95fIb/c3Z//2xvef9sb3n/cnV+/3Z5gv9sbnX/enyC/29ydv9vcnz/ +bnB3/3Bzff9wc33/bG95/2xvef9wcnn/b3F1/2dqcf9ucHf/bG92/2hrdf91eIH/dXd+/3R2fv9ydHv/ +dXd8/29yd/9wcnf/b3F3/3J0e/9ucHj/b3J5/3V3ff9wcnj/cHJ3/3Fzev9sbnX/dHZ8/29xd/9tcHn/ +bG51/25xef9ydX7/bnB5/2xvef9vcXj/bG93/29yev9wcnj/aWx1/3Bze/9tcHr/a254/3Byef9tcHr/ +bW92/2dqdP9rbnb/dHZ9/3R2ff9zdX3/c3V8/29yef92eYL/dXd9/3Z4fP9+gYr/cXR+/3N2f/92eID/ +bW93/2hrdP9sb3n/b3J8/3V3ff9oa3X/YmVu/35/g/93eX//c3V8/3N1fP93eoP/c3Z//3N2f/9ucXv/ +cHN9/3V4gf9zdn//eXyG/3N2f/9wc33/cHN9/3Bzff9ucHf/am13/3Bzff91d33/bnF7/3Byef9sbnX/ +cHJ5/25wd/9zdXz/cHJ5/3V3ff9zdXz/cHN9/2ptd/9ucHf/d3qD/3Bzff9wc33/cHN9/2xvef9ucHf/ +dXiB/3Bzff91eIH/e32D/3V3ff93eoP/eXuB/3t9g/93eX//d3l//3l8hv97fof/e32D/36Ahv97fYP/ +eXuB/3V3ff91d33/gYOK/3Z4fP93eX//eHl9/3h5ff97fYP/d3qD/3N1fP95fIb/d3qD/3t+h/9wcnn/ +c3Z//3d6g/91eIH/dXiB/3l7gf9zdXz/c3V8/3V4gf9zdXz/Z2p0/2xvef9nanT/d3l//25wd/9qbXf/ +bnB3/2ptd/9ucXv/dXd9/3Z4fP9wcnn/c3V8/2xudf9vcXX/YmVu/2Jlbv9maG7/bnB3/2dqdP9iZW7/ +ZGdx/2BjbP9kZ3H/ZGdx/25wd/9kZ3H/Zmhu/2Zpc/9maXP/Zmlz/2Zobv9dYGr/YGNs/2Zobv9maG7/ +Z2p0/2Zpc/9nanT/Zmlz/3V4gf9sb3n/am13/2psc/9qbXf/Zmhu/25wd/91d33/c3V8/3N1fP9sb3n/ +bnF7/3Byef91eIH/c3Z//3N2f/91eIH/d3qD/3N1fP93eoP/cHN9/3Byef9wc33/c3V8/3d5f/9ucXv/ +eXyG/3l7gf91eIH/c3Z//25wd/9qbXf/c3V8/3Bzff9wc33/c3Z//25wd/9ucXv/bG95/3l7gf91d33/ +bnB3/3Byef9ucHf/bnB3/25xe/9wcnn/cHN9/2xvef9sb3n/bG95/3Bzff9ucHf/bnB3/3N1fP9zdXz/ +Zmhu/3Bzff9qbXf/bnF7/2ptd/9sb3n/dXiB/3Bzff9ucHf/bG51/3V2e/92eYD/bG52/3R2fP9sbnX/ +cXN6/21vd/9vcXn/cHJ5/3Byef9ucHf/bnB3/25wd/9qbHP/bG51/2psdP9pbHT/cHJ4/25weP9sb3f/ +bnB5/21vd/9ucHf/aGt1/2hrdP9qbXf/aGt0/2xvd/9sb3n/aWx0/21weP9nanT/ZWhv/25xev9vcnr/ +a254/25xeP9ydHz/dHZ9/29xe/9vcnz/b3J8/3N1ev9xdH3/cnR9/3F0ff92eYH/dXiA/25xev9zdXz/ +c3Z//3Byef9rbnj/b3J8/3h6gP90dn//cnR7/29xef9pbHb/cHJ5/21vc/9vcXX/d3l//29xdf90dnz/ +dnh8/2tud/9maXP/c3V8/3N1fP93eX//bG51/2psc/9zdXz/b3F1/25wd/9sbnX/bnF7/2ptd/9qbXf/ +amxz/2xvef9ucXv/bG51/3d5f/9vcXX/bnF7/3N1fP91d33/bnB3/2ptd/9zdn//c3Z//25xe/9wc33/ +am13/3Bzff9wc33/dXd9/3N1fP91d33/bnB3/25wd/9sbnX/bG95/3N2f/9ucXv/c3Z//3V4gf9zdXz/ +cHJ5/3d5f/91d33/cHJ5/3V3ff9tb3P/bG95/2xvef9wc33/am13/25xe/9ucXv/c3V8/3Byef91d33/ +bnB3/25wd/9ucHf/cHJ5/3l8hv9sb3n/bnB3/25wd/9ucHf/cHJ5/25wd/9qbXf/cHJ5/3Byef94eX3/ +bnB3/25wd/9zdXz/bnF7/3V4gf91d33/am13/29xdf9wcnn/bW9z/2Zpc/9qbXf/Zmlz/3Bzff9sbnX/ +Z2p0/2xvef9qbHP/Z2p0/2xvef9ucHf/Z2px/2dqdP9iZW7/ZGZs/25wd/9sb3n/bnF7/3d5f/91d33/ +bG95/3V3ff9qbXf/bG95/29xdf93eX//cHJ5/25xe/9wcnn/bnF7/2psc/9sbnX/Zmlz/2ptd/9sbnX/ +bG95/2xudf9tb3P/bnB3/25wd/97fof/c3Z//3V4gf9zdXz/dXiB/25xe/91eIH/e36H/3V4gf93eoP/ +d3qD/3d6g/93eX//eXyG/3l8hv95fIb/eXuB/3t9g/9zdn//d3qD/3N2f/9wcnn/bnB3/2xvef92eHz/ +b3F1/3l7gf93eX//c3V8/3N2f/9ucHf/Z2px/21vc/9sbnX/bG51/2xvef9qbHP/am13/2dqcf9zdn// +bG95/2psc/9sb3n/bG51/2ptd/9qbXf/bG51/25xe/9sb3n/bG51/2xudf9ucHf/bG51/2dqdP9sb3n/ +bG95/11gav9qbXf/am13/3Bzff9sbnX/bnF7/3V4gf9ucXv/bG51/2xudf9ydHz/dHZ8/29xef9ucXv/ +bG50/25xef9nanT/am13/2dqdP9nanT/Z2px/2Zpc/9nanH/Zmlz/2ttdP9oa3T/bnB4/3V3ff9ydX// +c3aA/3J1fv9tcHn/cnV+/29ye/9tb3f/cXR+/3J1fv92eH7/c3aA/25xev91d33/cXR9/21wd/9vcnz/ +c3Z//3J1ff90dnz/cnR8/3N1fP9wcnj/bnB3/3Byef91d3v/cHJ5/25wd/9tcHf/c3V8/3J0fP9sbnX/ +bW9z/3N2f/9wcnn/amxz/25xe/93eX//dHeA/3J0fP9vcnv/a211/29yef9ucHf/bW9z/3d5f/9vcXb/ +c3V9/3V3fv9sb3j/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/c3V8/2psc/9nanT/bG51/2ptd/9sbnX/ +bG51/2ptd/9sbnX/cHJ5/2xudf94eX3/bG95/25xe/9zdn//cHN9/2xvef9nanT/dXd9/3N2f/9sb3n/ +dXd9/2xvef9wc33/dXiB/3d5f/9zdXz/dXd9/25wd/9zdXz/amxz/2xudf9wcnn/am13/3Byef9sb3n/ +amxz/2Zpc/9wcnn/am13/2dqdP9wc33/amxz/2xvef9sb3n/bnF7/2xudf9zdXz/cHJ5/3Byef9wc33/ +bnF7/2ptd/9sbnX/bG51/2xudf93eX//bW9z/2xudf9sbnX/bG51/3Byef9wcnn/b3F1/2xvef9ucXv/ +dXiB/2xvef9ucHf/dXd9/3N1fP9zdn//dXd9/2xvef9ucHf/c3Z//25xe/9qbXf/cHN9/2ptd/95e4H/ +dXiB/3Bzff93eoP/c3Z//3t9g/9+f4P/eXyG/3d6g/91eIH/c3V8/3N2f/9qbXf/bW9z/25wd/93eX// +dXd9/3Byef93eX//cHJ5/3Byef9wcnn/e32D/3V4gf9wc33/bnF7/3Bzff9nanT/bG95/2ptd/9sbnX/ +bW9z/25wd/9ucHf/bG51/2dqdP9qbHP/dXiB/2xvef9ucXv/bG51/2ptd/9kZ3H/Z2p0/3Byef9maG7/ +am13/2dqdP9qbXf/Z2p0/2dqdP9sb3n/am13/3Bzff9ucXv/bG51/2xvef9sb3n/bG51/2dqdP9qbXf/ +dXd9/25wd/93eoP/dXiB/3V3ff91d33/b3F1/2Zobv9ucHf/bW9z/2xudf9ucXv/bG51/3Byef9tb3P/ +dXiB/3Bzff9qbHP/am13/2dqdP9sbnX/bG51/2ptd/9sb3n/bG95/2psc/9sbnX/Z2p0/2Zpc/9maXP/ +amxz/2xvef9iZW7/bG95/25xe/9wc33/amxz/2ptd/91eIH/bnF7/25wd/9sb3n/b3F4/3R2ff9wcnn/ +cXN4/21vc/9ydHv/bG51/25xev9wc33/cHN9/25wd/9wc33/cHN9/3Byef9wc33/bG94/25xef9xc3v/ +c3V8/29xeP91d33/bG95/3R3gP9ucXv/amx0/2xvef9ucXv/cHN8/3Bzff9wcnn/c3V8/3Byef9vcXj/ +cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/d3l//25wd/9wcnn/bnB3/3V3ff91d33/ +bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9xc3r/c3V8/21vdv93eoT/dXiB/3V3ff9/goz/ +cHJ8/3h6gf91d37/aWx2/2Vocv9ucXv/c3V8/3N1fP9qbXf/am13/3t9g/9wcnn/bnB3/3N1fP9ucXv/ +bG95/2xvef9wc33/bnF7/3N2f/9sb3n/d3l//2xvef9ucXv/bnF7/3V4gf9zdXz/Z2p0/3N2f/91d33/ +bG51/3V3ff9ucHf/cHJ5/3N2f/9zdn//c3Z//3N2f/9ucXv/c3Z//2ptd/9wcnn/cHN9/3Byef9wc33/ +c3V8/29xdf9ucHf/dnh8/3N1fP9wcnn/c3V8/21vc/9zdXz/bnB3/2xvef9ucHf/bnF7/2ptd/9ucHf/ +bnF7/25xe/9sbnX/bG51/2xudf9tb3P/dXiB/2psc/9qbHP/bG51/2dqdP9sb3n/bnF7/2ptd/9qbXf/ +am13/3V3ff9maXP/Zmhu/2ptd/9sb3n/bnF7/2xvef9maXP/Zmhu/2ptd/9maG7/XWBq/2Rncf9gY2z/ +bG95/2dqdP9qbHP/Z2p0/2psc/9qbXf/cHN9/3N1fP9ucXv/bnF7/2xudf9sbnX/am13/21vc/9ucHf/ +eXuB/3N1fP9wcnn/cHJ5/2xudf9qbHP/am13/3Bzff9sb3n/bG95/25wd/9wcnn/amxz/21vc/9sbnX/ +am13/2dqdP9qbXf/bG51/2xudf9sbnX/am13/3d5f/9sb3n/bnF7/2xvef9sb3n/bG51/3Byef92eHz/ +bG51/3N1fP9wc33/c3Z//3Bzff9zdXz/c3V8/3N1fP9wcnn/dXd9/2xudf9wcnn/bnB3/2ptd/9sbnX/ +am13/3Bzff9qbHP/d3l//3d5f/9zdXz/dXd9/25wd/9kZmz/bG95/2xvef9wc33/c3Z//29xdf9wc33/ +bnB3/3d6g/91eIH/bnF7/25xe/9sb3n/cHJ5/3Byef9wcnn/c3Z//3N1fP9wcnn/cHN9/3N2f/9wcnn/ +cHJ5/25xe/9zdn//Zmlz/3V4gf9wc33/d3l//2xudf9ucHf/d3l//25xe/9sb3n/bG95/3p8g/97fYP/ +dnmC/3V3ff91d3z/dHeA/3F0fP9zdXz/cXN6/3V3ff9ucHf/cHJ5/3Byef9sbnX/bnB0/29xeP9ucXr/ +b3F4/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/ +bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/bG51/3N1fP9nanT/amxz/2psc/9ucXv/ +cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/ZWhx/2Zpc/9jZnD/a254/2xudf9maXP/ +dXd9/2lrc/9wcnn/bXB4/2dpcP9laHL/am13/2xvef9zdXz/bG95/2xudf94eX3/bG95/25wd/9sb3n/ +bnF7/25xe/9ucXv/bnB3/3Byef9zdXz/bnB3/3h5ff9vcXX/bnF7/25wd/9zdn//cHJ5/2Zpc/9zdn// +cHN9/25xe/93eX//cHJ5/25xe/9zdn//c3Z//3Byef9zdXz/c3V8/3Byef9nanH/bG51/3Byef9sbnX/ +cHN9/3N1fP9ucHf/bG51/3V3ff9wc33/amxz/3V3ff9qbXf/bnB3/3Byef9ucHf/bG95/2ptd/9sbnX/ +bG95/25xe/9zdXz/am13/2xudf9qbXf/bG51/3V4gf9qbXf/bG51/25wd/9tb3P/bnF7/2xvef9sbnX/ +cHJ5/25wd/95e4H/bG51/2xudf9qbXf/bG95/2xvef9sb3n/Z2p0/2Zpc/9ucXv/am13/2Zpc/9sb3n/ +Zmlz/3N1fP9ucXv/bG51/2xvef9qbXf/dXd9/3Z4fP94eX3/c3V8/3Byef9sbnX/am13/3V3ff9zdn// +dXiB/3t+h/91eIH/cHN9/3N2f/9sb3n/bG51/25wd/95e4H/bG95/2xudf9sb3n/am13/2Rncf9nanH/ +YGNs/2Rncf9maXP/bG51/2ptd/9qbXf/am13/2ptd/91d33/bG95/3Bzff9sb3n/cHJ5/2xudf9sb3n/ +dXd9/2ptd/9sb3n/cHN9/3Bzff9ucXv/bG95/3Bzff9zdXz/bnF7/3N1fP9ucHf/dXd9/3Byef9tb3P/ +b3F1/2xudf9zdn//bnB3/3d5f/93eX//cHN9/3d6g/9ucXv/Zmlz/3Byef9ucHf/cHN9/3N2f/9sb3n/ +c3Z//25xe/91eIH/dXiB/3Bzff9zdn//cHJ5/25wd/9vcXX/bG51/3Byef9sbnX/am13/2xudf9sbnX/ +amxz/2psc/9qbHP/am13/2Jlbv9ucXv/bnF7/3N1fP9nanT/bnB3/3Z4fP9wcnn/bG51/2xudf95e4H/ +c3Z//25xe/9ucHf/bG95/25xev9vcXj/bXB6/21vef92eHz/cHJ5/25xe/9sb3n/bnB3/3Bydv9rbnf/ +bG94/29xeP9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/ +cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/am13/2psc/91d33/am13/2xudf9maXP/ +bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/dnh8/3Byev9zdXz/cXR9/3R3gP9wc33/ +bnF7/3+CjP9zdn//dnmD/3h7hP9xc3r/c3V8/3t9g/9+gIb/e32D/3d6g/9wc33/e32D/3Bzff9zdXz/ +cHN9/25xe/9zdn//bnF7/2xvef9ucXv/dXd9/29xdf91eIH/bnB3/2xvef9ucHf/dXd9/2xvef9kZ3H/ +cHN9/3N2f/9ucXv/d3l//2xvef9ucXv/dXiB/3V4gf9zdn//c3Z//3V4gf9wc33/am13/2xvef91eIH/ +bnF7/3V4gf91eIH/bnF7/2xvef93eX//cHN9/3Byef91eIH/bnB3/25xe/9wc33/c3Z//3Bzff9wc33/ +cHN9/25xe/9wc33/dXd9/25wd/9ucHf/bG95/25wd/93eoP/bnB3/25xe/9wc33/cHJ5/3Bzff9vcXX/ +bnB3/3Byef9tb3P/d3l//2ptd/9sbnX/am13/25xe/9wcnn/cHJ5/2xudf9qbHP/cHJ5/2xvef9qbHP/ +cHN9/2dqdP91eIH/d3qD/3Bzff9zdn//cHJ5/3d6g/95e4H/e36H/3V4gf93eoP/cHN9/3V4gf9sb3n/ +bG95/3Byef91eIH/c3Z//25xe/9wcnn/bG51/2dqcf9ucHf/dnh8/21vc/9qbXf/bG95/3Byef9sbnX/ +b3F1/2RmbP9sbnX/bG51/2ptd/9sb3n/Z2p0/2dqdP9sbnX/dXd9/2xudf9ucXv/bnF7/2xvef9nanT/ +bG51/3N1fP9sbnX/cHJ5/3Bzff9ucXv/bnF7/25xe/9wc33/cHN9/2xvef91d33/bnB3/3V3ff9zdXz/ +b3F1/2xvef9sb3n/c3Z//3Byef93eoP/d3qD/3N2f/91eIH/cHN9/2dqdP9ucHf/bnF7/3N2f/9wc33/ +bnB3/3N2f/9wcnn/eHl9/3V3ff9sbnX/bG95/2xudf9sbnX/bG51/2Zpc/9sbnX/amxz/2Zpc/9maXP/ +Zmhu/2Zobv9maG7/amxz/2xvef9gY2z/Z2p0/2xvef9ucXv/Zmlz/2xudf91d33/bG95/2xudf9ucHf/ +bnF7/25xe/9ucHf/bG51/2xudf9sb3n/am13/3J0e/9zdn//d3l//3Bzff9wc33/cHN9/25xe/9xc33/ +bnB2/25weP9wcnn/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/am13/2xudf9ucXv/bG95/25xe/9wc33/ +bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/ +am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn//d3qD/3l7gf93eoP/dXh//29yfP9vcnv/ +b3F1/2xudf93eoP/b3F4/3d5f/97fYb/dHZ//3V3ff97fYP/foCG/3t9g/9zdn//cHJ5/3l8hv9wc33/ +c3V8/3N2f/91eIH/d3qD/3d6g/9ucXv/cHN9/3N2f/9wcnn/d3qD/3N1fP9zdn//c3V8/3N2f/9sb3n/ +Zmlz/3N2f/91d33/bG95/3l7gf9sb3n/bnB3/25wd/9zdXz/bnB3/25wd/91d33/bnB3/2xudf9qbHP/ +cHJ5/21vc/92eHz/cHJ5/2xudf9sb3n/eHl9/3V3ff9wcnn/d3qD/25wd/9wc33/bnF7/3V4gf9wc33/ +bnF7/2xvef9sb3n/c3Z//3N2f/9wcnn/bG95/2xvef9sb3n/d3l//25wd/9vcXX/b3F1/29xdf9zdXz/ +bnB3/25wd/9ucHf/b3F1/3d5f/9qbXf/bG51/25wd/9wcnn/bnF7/3Byef9sbnX/amxz/3Byef9wcnn/ +amxz/3Byef9qbHP/cHN9/25xe/9tb3P/bnB3/21vc/91d33/dXiB/3V4gf9zdn//cHN9/25wd/9ucHf/ +c3V8/3Bzff91eIH/foGK/3t9g/93eoP/d3qD/3Byef9ucXv/dXiB/3d5f/9sb3n/bnB3/3Bzff9wc33/ +Z2p0/25wd/9maG7/bG51/2xudf9tb3P/bG51/2psc/9sb3n/bnB3/3l8hv9wc33/c3Z//3Bzff9wc33/ +am13/2xvef93eoP/cHJ5/3N1fP91d33/dXd9/3V3ff9zdXz/dXd9/3V3ff9wcnn/dXd9/29xdf91d33/ +dXd9/3Byef9sb3n/b3F1/3Byef9tb3P/dXd9/3d5f/9ucHf/cHJ5/3Byef9kZ3H/am13/2Zpc/9sb3n/ +bnF7/2ptd/9zdXz/bG51/3V3ff9zdXz/bnB3/3N1fP9sb3n/bG95/25wd/9ucHf/bG95/25wd/9wcnn/ +c3V8/29xdf9ucHf/bG51/29xdf9zdXz/Z2px/2xvef9zdn//eXuB/3Byef9wcnn/eXuB/25xe/9sb3n/ +bnB3/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/2xvd/9vcXn/am13/3Bzff9qbXf/am13/2psc/9ucHf/ +am13/2xudf9sbnb/bW92/3Byef9ucXv/bG95/2ptd/93eX//dXd9/3Byef9ucHf/c3V8/3N1fP91d33/ +c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/ +bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/bG95/2xvef9wcnn/am13/2tueP9maXD/ +Z2p0/2dqcf9iZW7/cHJ5/2hqcf9xc3r/bnB5/2xudf9qbXf/cHN9/3Z4fP9wcnn/bnB3/2xudf93eX// +Zmlz/2ptd/9ucHf/am13/25xe/9ucXv/bW9z/25wd/9sb3n/am13/3V3ff9qbXf/bG95/2ptd/9sb3n/ +ZGdx/11gav9qbXf/am13/2xvef9zdXz/Z2p0/2xudf9wcnn/bnB3/2xudf9ucHf/cHN9/25wd/9sbnX/ +am13/25xe/9sb3n/d3l//3Bzff9ucXv/bnF7/3l7gf91eIH/cHN9/3l8hv9zdXz/d3qD/25xe/91d33/ +c3V8/3N1fP9vcXX/bG51/3N1fP9wcnn/b3F1/21vc/9tb3P/bG51/3d5f/9sb3n/amxz/2xudf9sbnX/ +c3V8/2xudf9ucHf/bnB3/25wd/93eX//bnB3/2xudf9wcnn/c3V8/25xe/9wc33/bG95/25wd/91eIH/ +d3qD/3Bzff93eoP/cHN9/3l7gf91eIH/dXd9/3l7gf95e4H/e32D/4GDiv9/gYf/foCG/36Ahv9wc33/ +cHN9/2ptd/9sbnX/bG95/3N1fP9wc33/bnF7/25xe/9qbXf/Z2p0/25xe/9wc33/am13/2Zpc/9nanT/ +Z2p0/2Rncf9maXP/ZGdx/2dqdP9qbXf/amxz/2xudf9kZ3H/am13/2xudf97fYP/cHN9/3N1fP9ucXv/ +dXiB/2xvef9ucHf/d3l//25wd/9zdn//d3l//3V4gf91d33/cHN9/3l7gf95e4H/dXiB/3l8hv9wcnn/ +eXuB/3V4gf9wc33/cHN9/3N2f/91eIH/bnF7/3d5f/93eX//bnF7/3N1fP9tb3P/Z2px/25wd/9sbnX/ +dXd9/25wd/9qbXf/c3V8/2xudf9wc33/c3V8/2ptd/9wcnn/bG51/2xvef9tb3P/b3F1/2xvef9sb3n/ +bG95/25xe/9ucHf/bnF7/3N2f/9wcnn/d3l//2xvef9wc33/eXyG/3t+h/9zdn//d3qD/36Ahv93eoP/ +d3qD/3V4gf9ucXv/bnF7/25xe/9vcXX/amxz/3R2ff9wcnr/c3V6/25wd/92eHz/c3Z//25xe/9ucXv/ +bG95/29ye/9tb3f/bnB3/25wdP9sb3n/c3V8/25wd/9qbXf/dXd9/3V4gf9wc33/bG95/3N2f/91eIH/ +d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/dXiB/3t+h/9zdn//dXiB/25xe/97fYP/ +c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/bnB3/3Bzff9zdn//c3V8/29xeP9ucXn/ +bW90/2xveP9qbXf/Z2px/3d5f/9tb3T/c3V8/3N2fv9ucHj/cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn// +c3Z//2Rncf9maXP/Z2p0/2Zobv9qbXf/bG95/2psc/9nanT/am13/2dqcf9ucHf/ZGdx/2Zobv9maG7/ +Z2p0/2Rncf9gY2z/Z2p0/2dqdP9qbXf/cHN9/2dqdP9sbnX/bnF7/2xvef9qbXf/bG95/25xe/9sbnX/ +bG51/25wd/9wcnn/b3F1/3l7gf93eoP/c3Z//3N1fP95e4H/eXuB/25xe/93eX//bnB3/25xe/9sb3n/ +dXd9/3Byef9zdXz/bG51/2xudf9wc33/bG95/2xudf9sbnX/bG51/2ptd/91eIH/bnF7/2dqdP9nanH/ +Z2px/2Zpc/9maG7/Zmhu/2dqcf9qbHP/c3V8/2Zpc/9kZ3H/am13/25xe/9qbXf/bG95/2dqdP9qbXf/ +cHN9/3Bzff9nanH/cHN9/2ptd/9zdn//cHJ5/29xdf9wcnn/cHJ5/3N1fP91d33/dXd9/3Bzff9ucXv/ +bW9z/21vc/9ucHf/bnF7/3N2f/93eX//d3l//3d6g/9zdn//c3Z//3Bzff93eoP/foCG/3l8hv91d33/ +dXiB/3N2f/9ucXv/cHJ5/2xvef9zdXz/bnB3/25wd/9sb3n/amxz/29xdf9wcnn/e36H/3V4gf9zdn// +cHN9/3N2f/9ucHf/bnB3/3Z4fP9tb3P/c3V8/3Z4fP9wc33/cHN9/25xe/93eX//d3l//3Bzff95fIb/ +bnF7/3d5f/91eIH/cHN9/3N1fP9wcnn/bnF7/2xvef92eHz/dXiB/25xe/9ucXv/bG95/2ptd/9qbXf/ +bG95/3V3ff9wcnn/b3F1/3Z4fP9ucHf/c3V8/3V3ff9ucHf/c3V8/2ptd/9sbnX/bW9z/21vc/9ucHf/ +bG95/2xudf9ucHf/bW9z/21vc/9ucXv/am13/3V3ff9maG7/am13/2xvef92eHz/bnB3/29xdf91d33/ +am13/3Bzff91d33/d3l//3t9g/93eX//d3l//3d5f/98fYL/dniA/3Z4gP9xc3r/d3l//3Bzff9ucXv/ +bnF7/3Bzff9tcHr/b3J8/3F0ff9zdXz/cHN9/3l7gf9wc33/bnF7/3V3ff91eIH/bnF7/25xe/91d33/ +bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/bnB3/25wd/93eX//cHJ5/3Byef9ucHf/ +eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/bG95/2xudf9ucXv/cHJ5/3J0e/9sbnb/ +bG52/2Vocv9maXP/Zmhu/2Rncf9zdn//Z2px/21wd/9rbXb/Zmhv/2Nmb/9qbXf/cHJ5/2xvef9ucXv/ +bG95/3V4gf9qbHP/bG95/25xe/9ucXv/dXd9/3N1fP9vcXX/cHJ5/3N1fP9sbnX/c3V8/2ptd/9qbXf/ +bG51/25wd/9nanT/Zmlz/2ptd/9sbnX/am13/3V3ff9qbXf/am13/3Bzff9qbXf/bG51/2ptd/9qbXf/ +amxz/2Zpc/9kZ3H/bG95/2psc/9zdXz/cHN9/2xvef9qbHP/bG95/3N1fP9qbXf/dnh8/2ptd/9ucHf/ +bG95/3N2f/9ucXv/dXd9/25wd/9wcnn/c3Z//3Bzff9wcnn/bnB3/3Byef9wc33/f4GH/3V4gf9zdn// +bnF7/3Bzff9zdn//cHJ5/3Byef9wc33/cHN9/3l7gf9sb3n/bG95/2xvef92eHz/bnB3/25wd/9ucHf/ +b3F1/3Z4fP9wcnn/Zmlz/25xe/9qbHP/bG95/2xvef9qbXf/cHJ5/25wd/9wc33/dnh8/3Z4fP9zdn// +c3Z//25wd/9sb3n/Z2p0/2ptd/9ucXv/c3V8/3N1fP9wcnn/bW9z/2psc/9maG7/bG51/3V3ff9sb3n/ +bG51/3Byef9ucHf/bG51/3Byef9sbnX/bnB3/25wd/9tb3P/cHJ5/2Rncf9sbnX/bG95/3V4gf9ucXv/ +bG95/25xe/92eHz/bnB3/25wd/92eHz/bG51/3N1fP92eHz/dXd9/3Bzff9ucXv/c3Z//3Z4fP9vcXX/ +d3l//25wd/9zdXz/cHJ5/3Byef9ucHf/cHJ5/3Bzff9ucXv/eXuB/3l8hv91eIH/cHN9/25xe/9qbXf/ +bnF7/25xe/97fYP/dXiB/3N1fP95e4H/bG95/25xe/9wc33/bnB3/3N2f/9sb3n/cHJ5/3Byef9zdXz/ +dXiB/3N2f/9zdXz/c3Z//3N1fP9zdXz/d3qD/3N2f/97fof/bnF7/3Bzff9wc33/eXuB/25wd/9ucXv/ +dXiB/3Bzff95e4H/e32D/3V4gf91eIH/cHN9/3Byef9qbXf/dnh8/3Fzev9zdXz/cHJ5/3N2f/9zdn// +bnF7/2xvef9wc33/bG51/2xudv9rbXb/aWxz/2dpb/9ucXv/am13/2Rncf9qbXf/am13/2Zpc/9nanH/ +am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/ +cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/bnF7/25wd/9vcXX/c3V8/3Byef9vcnz/ +b3F4/3N1ff9ucXv/dHeA/3N1fP9zdXz/foCG/25wd/91d33/c3V9/21vdP9sb3b/c3V8/3V3ff9wc33/ +bG95/3Byef91d33/Z2px/2xvef9ucXv/cHN9/3N2f/9zdn//bG95/25xe/9wc33/bnF7/3V4gf9ucXv/ +bnB3/2xudf9zdXz/bnB3/2psc/9ucHf/bG51/3N1fP92eHz/bnB3/2xvef91d33/bnB3/25wd/9wcnn/ +cHJ5/2xudf9sbnX/bnB3/3V3ff9tb3P/eHl9/2xvef9ucXv/amxz/2xvef9zdXz/bG51/3N1fP9sbnX/ +c3V8/2xudf9zdXz/cHJ5/25xe/9ucHf/bG95/3Bzff9wc33/b3F1/25wd/9vcXX/cHJ5/3t9g/9ucHf/ +c3V8/2xudf9ucHf/bnF7/25wd/9ucHf/cHJ5/3Bzff93eX//bnB3/2xvef9ucHf/c3V8/25wd/9sbnX/ +am13/2ptd/9wc33/bnF7/2Rncf9qbXf/Z2p0/2ptd/9qbXf/amxz/25wd/9sbnX/bG95/3V3ff9wc33/ +cHN9/25xe/9sbnX/amxz/25wd/9wc33/cHN9/3d5f/91eIH/d3qD/3N2f/92eHz/bnB3/36Ahv9/gYf/ +eXuB/3p7f/9+gIb/e36H/3d6g/97fof/d3l//3l7gf92eHz/c3Z//31+gf9zdXz/eHl9/3t9g/9/goz/ +e32D/3d6g/9zdn//eXuB/2xvef9vcXX/dnh8/2ptd/9ucXv/c3V8/3Bzff9qbXf/am13/25xe/9ucXv/ +Z2px/3Byef9maXP/bG95/2ptd/9sb3n/Zmlz/2Rncf9kZmz/Zmhu/25wd/9wcnn/Zmlz/2xudf9qbXf/ +Zmlz/2dqdP9sbnX/dXd9/3Byef9ucHf/eHl9/25wd/9sbnX/c3V8/2xudf91d33/bG51/29xdf9wcnn/ +bG95/3V3ff9ucXv/bG95/3Bzff9sb3n/b3F1/3Byef9ucHf/dnh8/2Rncf9ucHf/bG51/3d5f/9qbXf/ +am13/3N1fP9sbnX/dnh8/3Z4fP9tb3P/bG95/25xe/9ucHf/amxz/3R2fP9tb3f/c3V6/2xudf9wcnn/ +cHJ5/25xe/9qbXf/c3V8/29xeP9xdH7/cXR+/3F0ff9wc33/dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/ +bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/ +bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/b3F1/3Byef9sbnX/bG51/25xe/9sbnX/ +cHJ5/25wd/9xc3r/bnB0/29xeP9ucHf/bG51/3t9g/9ucHX/dHd+/3N1e/9vcXX/b3F1/3N1fP91d33/ +cHN9/25xe/9wc33/d3l//2Rncf9sbnX/cHJ5/2xvef9wc33/am13/2xudf9ucHf/bnF7/25xe/9wc33/ +am13/2xvef9nanT/bG95/2psc/9kZ3H/am13/2xudf9ucXv/c3V8/2dqdP9qbHP/bG95/2ptd/9sb3n/ +bG95/2ptd/9sbnX/am13/2ptd/9wc33/bG95/3V3ff9wc33/bnF7/2xudf9zdXz/dnh8/25wd/93eoP/ +bG95/3V3ff9ucXv/c3Z//3Byef91d33/cHJ5/25xe/91eIH/dXiB/25wd/9ucXv/cHJ5/3V4gf97fof/ +c3Z//3V4gf9zdn//bnF7/3N2f/9wc33/cHJ5/3Byef9ucXv/d3qD/3Byef9sb3n/cHN9/3V4gf9wc33/ +bnF7/25wd/9sbnX/dnh8/3Byef9sbnX/cHJ5/2xudf9qbXf/bG51/2psc/9sb3n/bW9z/3Byef92eHz/ +dXd9/3V3ff9wcnn/bG95/25xe/9ucHf/dXd9/3Bzff93eX//dnh8/3N2f/9wcnn/bG95/2Rncf9zdn// +dnh8/25xe/9qbXf/cHN9/25xe/9ucHf/cHN9/2dqdP9wcnn/bG95/25wd/91d33/Z2p0/2xvef9wc33/ +eXyG/3Z4fP9wc33/c3V8/3d5f/9sb3n/bnB3/3Z4fP9sb3n/c3Z//3d6g/91eIH/cHN9/3N2f/95e4H/ +d3l//25wd/95e4H/bnF7/3V3ff9zdn//c3Z//3Bzff9wcnn/cHN9/25xe/93eX//d3l//3N2f/9ucXv/ +bnF7/2dqdP9sb3n/bnB3/3Z4fP9ucHf/bG95/3V4gf9ucHf/b3F1/3Bzff9ucHf/eXuB/2ptd/9ucHf/ +bnB3/29xdf91d33/cHJ5/25wd/9zdXz/bnB3/29xdf9wcnn/b3F1/3Z4fP9kZ3H/am13/2xvef91eIH/ +am13/2xudf9ucXv/Zmlz/3Bzff9zdXz/c3V8/3V4gf91eIH/bnF7/2ptd/9vcnz/bG95/3N1fP9naXD/ +Z2p0/2ptd/9sb3n/am13/25xe/9tb3b/cXN7/3F0fP9vcnv/cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/ +bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/c3V8/2xudf95e4H/bnB3/3N1fP93eX// +dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/am13/2Zpc/9nanT/bG51/2psc/9sb3n/ +bG51/2xvef9qbXb/am13/2lsdf9rbnj/am13/2dqdP91eIH/a211/3N1ff9sb3n/am12/2xudf9wcnn/ +dXd9/3N1fP9zdXz/dXd9/3Byef9dYGr/YmVu/2Zpc/9nanT/am13/2Rncf9maG7/ZGdx/2Zpc/9maXP/ +Z2p0/2Zobv9nanT/ZGdx/2Rncf9iZW7/XF9o/2Zobv9maG7/am13/25wd/9kZ3H/Zmlz/25xe/9sb3n/ +bnF7/2ptd/9sb3n/bnF7/2ptd/9tb3P/dXd9/3Byef95e4H/cHN9/3Bzff9vcXX/dXd9/3V3ff9ucXv/ +dXiB/25wd/92eHz/bnB3/3Z4fP9wcnn/c3Z//25wd/9ucHf/cHJ5/3Byef9tb3P/bG51/21vc/9zdXz/ +d3l//2xvef9sb3n/bG95/2xudf9qbXf/am13/2ptd/9nanT/bG51/3V3ff9ucHf/bnB3/25wd/9zdn// +cHJ5/25wd/9sbnX/bnB3/3N1fP9zdXz/bG51/3Byef9sbnX/bG51/25xe/9wcnn/cHN9/3Bzff9zdn// +e36H/3l7gf91eIH/cHN9/3Byef9ucXv/bG95/3Bzff91d33/d3qD/3d5f/93eoP/cHN9/25xe/9qbHP/ +eXuB/36Ahv95fIb/dXd9/3d6g/91eIH/c3Z//3V4gf9wc33/d3qD/3Bzff9zdn//eXyG/2xvef9ucHf/ +cHJ5/3l7gf9zdXz/cHJ5/3Byef92eHz/bnB3/3Byef9wc33/bG95/3N2f/91eIH/c3V8/2xvef9wcnn/ +e32D/3l7gf9sb3n/dXiB/3Byef9zdn//cHN9/3N2f/9zdn//bnB3/3V4gf9wc33/d3l//3V4gf91eIH/ +c3V8/3Bzff9qbXf/b3F1/21vc/91d33/bG95/2xudf91d33/am13/2xudf9qbXf/bG51/3V3ff9qbXf/ +bW9z/2xudf9tb3P/dXd9/2ptd/9tb3P/cHJ5/2ptd/9sbnX/bG95/2xudf91d33/Zmhu/25wd/9sbnX/ +dXd9/2xudf9vcXX/dnh8/2xudf92eHz/cHN9/21vc/9wcnn/c3V8/3Byef9nanT/bnF7/29ye/9wc33/ +bG51/2xvef9qbXf/am13/2xvef9zdXz/bnB0/3J0ev9xdHv/bnB6/25xe/91eIH/cHN9/25wd/95fIb/ +d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/ +d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/dnh8/2xvef9qbXf/am13/2xudf9qbXf/ +c3V8/2xudf9wcnn/bW92/3ByeP9vcXX/bnB3/2dqcf9nanH/d3l//25xdf90dnz/bW94/2tueP9nanT/ +bnF7/3V3ff9sb3n/cHN9/25xe/92eHz/YmVu/29xdf9zdn//d3l//3V4gf9wc33/bG95/25xe/9zdn// +dXiB/3d6g/9ucXv/eXuB/3N2f/97fYP/cHN9/2xvef9zdn//cHJ5/3N2f/97fof/c3Z//3Bzff93eoP/ +c3Z//3d6g/9wc33/cHN9/3Bzff9sb3n/bnB3/3V4gf9zdn//foGK/3N2f/9wc33/bnB3/3V3ff9zdn// +bnB3/3V4gf9sbnX/dnh8/25wd/92eHz/cHN9/3Z4fP9ucHf/bG95/25xe/91d33/b3F1/3Byef9wc33/ +d3qD/36Biv91eIH/dXiB/25xe/9ucHf/cHN9/2xvef9ucXv/bG95/25wd/9wc33/bG95/2xvef9wcnn/ +dXd9/3Byef9tb3P/bW9z/2dqdP9wc33/bG95/2dqdP9sb3n/ZGdx/2Zpc/9sb3n/Zmlz/2dqcf9maXP/ +bG51/3V3ff9sb3n/c3V8/25wd/9ucHf/bG51/2tueP9vcnz/dXeA/3h7hf9ydX7/dXd9/25wd/9ucHf/ +Zmds/3Byef9wcnn/c3V8/2dqdP9wcnn/cHJ5/2xudf9qbXf/Zmlz/2psc/9maXP/aGty/25xe/9nanT/ +a210/2hrdf91eIH/bnF7/2xvef9qbXf/c3V8/2dqdP9qbXf/am13/2xudf9ydHv/dHZ8/2ptd/9sb3n/ +bW92/3N1fP9ydHv/am12/3d4ff9wcnn/dXiA/3J1fv91eIH/cnR8/2xudf9wcnn/cHJ5/3V3ff9wcnn/ +cHJ5/21vc/9ucHf/Z2px/25wd/9ucHf/dHZ8/29xeP9sb3b/dnh//29xdf9sb3n/bnF7/29xdf94eX3/ +amxz/29xdf9tb3P/cHJ2/3V3ff9wcnn/b3F4/3R2fv9ucXj/bW93/3Fze/9vcXX/dXd+/2dpb/9sbnX/ +bnB6/3d5f/9sb3b/a254/3V3e/9sbnT/dHZ6/3Bzff92eHz/e32D/36Ahv99foH/d3l//3l7gf91d3z/ +c3Z+/2tudf9sb3n/am13/2Zpc/9nanT/bnF6/2ptdv9zdX7/c3V9/3V4gP9wc33/e32D/3V4gf9ucXv/ +e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/am13/25wd/9wcnn/bG51/3l7gf9ucHf/ +c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/ +bG95/3Bzff9sbnX/cHJ5/25xeP9ucHn/bG52/2tudv9nanT/am12/3F0fv9pbHX/bXB6/2psdP9nanH/ +Y2Zv/2Zpc/9ucHf/am13/25xe/9ucXv/b3J7/2Zpcv9rbnf/bW94/29yfP9ucXr/b3J6/21vdv9vcXj/ +bG93/2lsdP9rbXb/bXB4/21wev9nanP/aGt0/2Fkbf9gY2z/amxz/2dqcf9oa3X/cnV8/2Zocf9qbXb/ +a212/2xudf9sbnf/bW92/3Byef9ucHn/b3F4/2psdf9ucXv/bnF6/29ye/9sb3n/bW94/25wdf9xc3r/ +bnF3/3F0e/9vcnv/bXB4/3J0fP9ucHf/cHJ5/21wev9ucXv/amx1/2ptc/9tcHj/b3F4/3J0ef9tb3b/ +bXB4/3Bze/91d33/dHZ+/3Bze/9wcnn/b3F4/3h6gv93eH3/dHZ7/3Z4f/92eYL/d3qB/3d5gv90d3// +eXyF/3t+h/99f4f/e32G/31/hf98foX/fYCI/3p9hv9+gIb/e32E/3V3fv95e4P/enyD/3d5f/95e4H/ +enyE/3l8g/97fYL/dnh//3V3fv92eYL/cnV9/3Fze/9sb3j/bnF5/3F0ff9zdXv/bXB5/3R2ff9rbXX/ +amx1/2Rmbf9pbHX/aWx2/25wev9fYmz/Zmlz/2dqdP9kZ3H/Zmlz/2BjbP9maG7/XmFr/2Vocv9qbXf/ +Y2Zw/2Zpc/9oa3T/b3F5/2dqdP9maXP/ZGdx/25wd/9kZ3H/Zmlz/2Zpc/9oa3T/cXN6/3N1fP9rbnj/ +bnF6/2xvef90dn3/cHN7/2ttdf90dn3/b3J6/3V3ff9vcnv/dHd//3Byef9ucHf/cnV+/25xe/93eX// +cHJ5/3N1fP9ucHf/cHJ5/2dqcf9ucHf/bnB3/3R2ev9sbnb/a211/3N1fP9tb3T/bG51/25wd/9ucHf/ +dXd9/2dqdP9sbnX/bW95/25weP9xdHz/bnF5/2xveP9xc3z/bnB3/2xudf9xdHz/bnB3/3F0ff9sbnf/ +bnB5/29xeP92eH7/b3F4/3J0eP9xc3r/bG93/3Fzev9vcXr/am13/3N1fP9sb3n/cHN9/2xudf9zdX3/ +dHZ9/3V4gP9ucXv/c3Z//3N2f/9sb3n/cHJ5/3R2fP9vcXr/dnh+/3FzfP9vcnz/bnF7/3N2f/9sb3n/ +bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX//amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/ +ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/bG95/2xudf9wc33/am13/2Zpc/9sb3n/ +am13/25wd/9zdn//bnB3/25xe/9ucHj/b3F5/2hrc/9qbHT/Zmlz/2lsdv9rbnf/Z2py/25weP9xdHz/ +bW90/2hrdf9sb3n/cHN9/2xvef9zdXz/c3V8/3Bzff9rbnf/b3J8/29yfP9ydX//dXd+/3R2ff9tb3b/ +cnR6/2xveP9tcHr/bnB4/3J1ff9vcnz/bG52/3Fzff9oa3X/ZGdx/21vc/9tb3P/c3Z//3Z4f/9vcnr/ +cXN7/3F0ff9wcnz/bnF6/3Bzff9ydX7/c3Z//3N2f/9sb3n/c3Z9/3J1fv9ydX//dnmC/3N2f/92eYH/ +dXiB/3J1fv98foX/dHeB/3F0ff9ydX7/cHN8/3R3f/91d33/cHN8/29xef9vcXX/cHJ5/3Fzd/91d33/ +bnB3/25xe/9ucXv/cnR6/3F0fP9xc3j/bG52/21wef90dn3/dXh+/21vd/90d3z/bnF4/29xef9wc3z/ +bG95/3Bzff9xdH7/cnV+/25xev9wc3z/cnV+/3N2f/9wc3z/d3qE/3BzfP9rbnf/bnF6/3Byef9vcXn/ +cnR7/29xef9ydHv/bW92/2hrcv9qbXf/am13/2xudf9tb3P/cnR8/3N1fP90dn7/c3V6/3N1fP91eH// +bXB4/3F0e/9rbXP/bXB6/2xvd/90dnz/aGt0/3J0e/9zdXz/bnB3/3N1fP9ucHf/bnB3/2ttdP9wc3n/ +c3V7/3ByeP9wcnj/cXN5/3V3gP9ydHv/cHJ5/3Byef95e4H/bG51/2tud/9rbXb/bG95/25xe/9xc3r/ +bG53/29xeP9zdXn/dHd+/3Fzef9sbnT/cnR9/3F0ff9ydHz/bW94/3V4f/9ucXn/bG94/21wev9wc33/ +d3l//3Byef9wcnn/bW9z/25wd/9maG7/bG51/21veP90dnv/b3F6/21wev94eoH/cnV//3Fzev9sb3n/ +cHJ5/3Z4fP9sbnX/bW92/25xe/9wc33/dnmA/3FzfP9wc3z/dnmD/3R2fv9vcnr/dniB/3Z4gf92eH3/ +cnV+/3R3gf9ydHz/fH6E/3d5gP94eoD/c3Z+/2xveP9ucXr/bnF4/2Zpc/9sb3n/am13/25xe/9kZ3H/ +cXN9/25xev91eID/bnF7/2xvef9zdXz/bW92/3Byef91d37/cXR9/3t9h/90d3//cXR9/3N2f/95e4H/ +c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/f4GH/3d5f/93eoP/c3Z//3d6g/91d33/ +foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn//am13/25xe/9ucXv/c3Z//3Bzff9qbXf/ +c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bXB3/3V3ff9tb3j/bnF6/25xe/90dn3/cXN7/29yfP9vcnz/ +cHN9/3Fzev9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9tcHn/aWx2/2xvef9rbXT/am13/21wef9vcnz/ +am13/29yfP9nanT/bG95/2tueP9vcnv/bnF5/2tudv9ydHv/bG51/2Zpc/9vcXX/bnB3/3Bzff91eIH/ +bG95/25xe/9ucXv/bG95/21vdv9ucHf/c3Z//3N2f/90d4D/bnF7/21wev9zdn//b3F4/3N2f/9ucXv/ +c3V8/3N2f/9zdXz/eXuF/3Bzff9zdn//c3Z//3N2fv9zdn//eHqA/25xe/9tcHr/cnR8/3Byef9wcnn/ +cHN8/3Byef9ucHf/bnB3/21vdv9wcnn/b3F1/2dqcf9qbXf/cHN9/3Bzff9qbXf/dHZ8/25wd/9ucHf/ +cHJ5/21vd/9zdXz/bG95/3V4gf9ucXv/cHN8/3N2f/9ucXv/bnF7/3h7hf95fIX/dnh8/3x9gP99f4b/ +foCG/3x9gf9+gIf/foCG/3d6g/93eoP/eXyG/3t9g/95e4H/dnh8/25wd/9ucXj/b3J7/3Fzev9ydHv/ +eXt//3R2ff90dnz/bG94/3Byef9wcnr/dHd//3J0ff98foT/fX+F/3V3ff97fYP/dnh8/3Z4fv91dnv/ +d3l+/3F0fP90d37/cHJ6/3V4f/90d4H/cHN7/3Byef9zdXz/dXiB/2ptd/9tb3b/bW92/29yev9xdH7/ +b3F4/2lsdv9tb3f/c3V7/3N2f/9tcHr/bW92/3F0fv9ydX3/c3Z8/2xudf9ydX7/a210/2hrdf9maXP/ +bXB5/3N1fP9wc33/am13/2xudf9sbnX/Z2px/2xudf9vcXX/cHJ4/2ttdv9ucXr/dHd+/29yd/9sbnb/ +b3F1/3Bzff93eX//bnB4/2xvef9ucXr/cXN6/3Fzev9vcXj/bnB3/3h6gP9ydHv/bG51/29xeP9ydHv/ +bW92/2tudf9ucHf/amxz/3N1fP9ydHv/bnF6/2dqdP9nanT/aGt1/2xvef9nanT/bG95/2ptd/9ucXv/ +ZGdx/29xe/9xc3n/cnR9/2xvef9ucHf/c3V8/2xvef9tcHn/dHZ+/25xeP9zdn//a254/2ptdv9nanT/ +bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/ +Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/ +Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/aWx1/2xudf9sb3n/cHN8/2tueP9ucHf/ +bXB5/3J0fP9ucXb/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/cHN9/2ptd/9qbXf/Z2p0/2ptd/9sb3n/ +bnF7/2Zpc/9qbXf/YmVu/2dqdP9laHL/aGt0/2lsdf9oanH/bW95/2dqdP9iZW7/bG51/2ptd/9rbnj/ +bnF4/2Zpc/9naW//ZGdx/2Rncf9kZ3H/Zmhu/2ptd/9kZ3H/ZGdx/2BjbP9maG7/Z2p0/2Zpc/9nanT/ +Z2p0/2dqdP9ucXv/bG51/3d6g/9qbXf/am13/2xudf9sbnX/cHJ5/3V3ff9ucHf/bnB3/25xe/9wcnn/ +cHN9/3d6g/9zdXz/cHN9/3Byef9wc33/c3Z//3N1fP9sb3n/cHJ5/3d6g/91eIH/bnB3/3d5f/9ucXv/ +bnB3/25xe/9ucXv/cHN9/3N2f/93eoP/dXiB/3d6g/9wc33/cHN9/2xvef94eX3/c3V8/25wd/91d33/ +c3V8/3N2f/91eIH/c3Z//3Bzff9qbXf/Z2p0/2xvef9ucXv/bG95/25wd/9qbXf/bG51/2tud/9rbXT/ +bG95/3V3ff9wc33/dHZ8/2tueP9sbnb/Z2p0/2ttdf9oanP/amxz/2ptd/9maG7/bG95/2dqdP9sbnX/ +amx0/21weP9rbXb/bnF6/2xvef9zdXz/b3J8/25xe/9zdn//eXuB/36Biv9wcnn/cHN9/3F0fP9ydX3/ +bnF6/2ptd/9laHL/bW92/3N1fP9xdH3/b3F4/3Bydv9tcHr/dXd9/3h5ff9vcXj/eHqB/25xev9ucHf/ +am11/3Fzev91d33/cHJ5/29xdf9ucHf/bnF7/2dqdP9rbnj/b3F4/3Bze/9rbnf/b3J8/3Z5gv9xc3v/ +a253/25wd/9ucHf/d3qD/29xd/9sb3n/bXB6/3J0e/9tcHr/am13/2ptd/95e4H/cHJ5/2psc/9ucXv/ +cHJ5/25wd/9sbnX/bnB3/2dqcf9zdXz/c3V8/25xe/9qbXf/am13/2Zpc/9ucXv/YmVu/2Zpc/9kZ3H/ +am13/11gaP9rbnj/bG93/21wd/9tcHr/am13/2xvef9sbnX/a253/3R2fP9tb3P/dXd+/2lsdv9pbHX/ +Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/bG51/2xvef9zdn//amxz/2xudf9qbHP/ +bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/bG95/25xe/9maXP/bG51/2xudf9ucXv/ +bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/29xd/9zdXz/cnR7/2tudv9sb3n/bnF7/25xe/9qbXf/ +c3V8/3J0e/9wc3v/b3F4/3N1fP9wc33/e32D/3t9g/9+gYr/eXuB/3N1fP9sbnX/bnB3/2xudf9wcnn/ +bnF7/3Bzff9qbXf/bG95/2Zpc/9sb3n/bnF7/3R2e/9ucXn/bG51/3Fzev9ucHf/Z2p0/25xe/9zdn// +b3J8/3Byev9rbXT/aGtx/2dqcf9kZ3H/ZGdx/2Zobv9nanT/am13/2Zpc/9kZ3H/Zmhu/2xvef9nanT/ +bG51/2Zpc/9qbXf/bnF7/2ptd/93eoP/bnF7/2xudf9ucHf/c3V8/3N1fP9zdXz/bnF7/3N2f/9zdn// +c3Z//3N1fP93eoP/bnF7/25xe/9sb3n/bnF7/2xvef9sb3n/Z2px/2xudf9zdXz/cHJ5/2xudf9zdXz/ +bG51/2ptd/9sb3n/bG51/2ptd/9qbXf/am13/2dqdP9sb3n/ZGdx/2dqcf9nanH/bnB3/2ptd/9maXP/ +bG95/2ptd/9qbXf/bnF7/2ptd/9qbXf/Z2p0/2Zpc/9qbXf/bG95/2xudf9sb3n/bnB3/25wd/9ucXv/ +bnB3/3V3ff91eIH/dXd9/3Z4fP9ucHf/bG92/2hrcv9xc3r/a252/25wdv9ydX7/cHJ5/3Bzff9sb3n/ +b3J5/2tudv9xc3r/bG51/3V3e/9ydHv/c3V8/3N1fP9ucHf/bW92/3V3ff91eIH/amxz/2xudf9tb3b/ +b3F2/25weP9tb3b/amxz/29xdf91d33/c3V8/2xvef9wcnn/bnF7/3l7gf95e4H/cHJ5/3d5f/9ucHf/ +bnB1/2lsdf9ucHr/bG95/25xe/9qbXf/am13/3N1fP9sbnX/bW93/2xvef9vcXj/ZWhy/2ptd/90dnz/ +bnB1/2psc/9sbnX/bG51/3d5f/9tb3T/bW92/21vdv9rbnf/a254/2xudf9sbnX/eXyG/3Byef9sbnX/ +bnB3/25wd/9sbnX/bG95/2xvef9nanH/dXd9/3Z4fP91d33/cHJ5/3Byef9ucHf/c3Z//2psc/9zdXz/ +cHJ5/3N1fP9maG7/cHJ5/3Byev9wcnr/b3J7/2xudf9wcnn/bG51/2tud/9ydHv/bG52/3d5f/9tcHj/ +cHN8/3N2fv91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/bG51/25wd/9zdXz/d3l//2ptd/9qbXf/ +bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/ +bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9tb3b/cHN9/3F0fP9xc3r/cnV+/3d6g/9zdn// +cHN9/3R3gP90dn7/b3J6/25wd/9ucXv/cHJ5/3l7gf93eX//e36H/3d5f/91d33/bG51/25wd/9sb3n/ +cHN9/3N1fP9zdXz/bnB3/3V3ff9sbnX/cHJ5/3Byef9wc3r/aWx2/2VocP9kZ3H/ZGdx/11gav9kZ3H/ +Zmlz/2dqc/9rbXb/ZWhy/2ZpcP9nanH/bG95/2ptd/9sbnX/c3V8/3Byef9zdXz/bG51/2psc/9qbXf/ +Z2px/2psc/9maXP/Z2p0/2xvef9sbnX/eXuB/3Byef9ucHf/bG51/3Byef9wcnn/bnB3/2xudf9ucHf/ +bG95/2xudf9nanH/bG95/2dqcf9nanT/ZGdx/2Zpc/9sbnX/bG51/2Rncf9nanT/bnF7/2xvef9qbHP/ +dXd9/2ptd/9nanH/bG95/2dqcf9ucXv/bG95/25xe/9wcnn/bnF7/2xvef9qbXf/bnF7/3V3ff91d33/ +b3F1/3Byef9wcnn/bnB3/25xe/9sbnX/am13/2psc/9qbHP/bnB3/25wd/9sbnX/bG51/3N1fP9sbnX/ +bG95/21vc/9zdXz/dXd9/25xe/9wc33/am13/2dqdP9dYGn/aWx1/2ptdf9sbnP/b3F4/2xudf9ucXv/ +bG51/29xeP9rbXX/bnF5/21wef9ydHv/dHZ8/3R2ff9wcnn/bW92/2xvef9wc33/d3qD/2xudf9rbXX/ +a253/3Fzev9vcnv/b3F4/2xvef9vcXX/c3V8/3Byef9ucHf/bW9z/2xudf91d33/c3V8/21vc/94eX3/ +b3F1/25wdf9qbHL/cnR7/3N1fP9zdn//bnF7/25wd/9zdn//bG95/3Byef9vcnr/cXN5/21vdv9ydHv/ +dniB/3J0e/9wc3z/cHN9/3N1fP99gIn/b3F4/21wef9ucHf/bnB3/25wd/9nanT/bG51/3l7gf9ucXv/ +bG51/25wd/9ucHf/Z2p0/2ptd/9qbXf/ZGdx/2xvef9ucXv/Zmlz/2Zpc/9nanT/Zmlz/2xvef9qbXf/ +c3Z//3V3ff91d33/amxz/3Fze/93eX7/dXiC/3N2f/9wc33/eXuB/3J0e/9vcnz/cXR+/2ttd/91eH7/ +bG92/3Byef90dnz/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/ +bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/ +bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/aGty/2hrdf9tb3b/Z2py/2lrcv9sb3n/ +Z2p0/2Zobv9rbnj/bG95/2dqdP9jZm//ZWhy/2Rncf9sb3n/Zmlz/3Bzff9zdXz/dXiB/3Byef93eoP/ +cHN9/3l8hv97fYP/e32D/3V3ff99foH/dXd9/3l8hv95fIb/e3yB/3l8g/9ydH3/b3J7/25wd/9qbXf/ +bnB3/3Fzev92eH7/eXp//3p8gv92eH7/dXd9/3d6g/93eoP/dXd9/3d6g/9zdn//d3qD/3N1fP9wcnn/ +c3Z//3N1fP9zdn//c3V8/3Bzff91eIH/bnB3/3d6g/9wc33/bnF7/3Byef9wc33/dXd9/2ptd/9sb3n/ +bW9z/25wd/9ucHf/bnB3/3h5ff9ucHf/dXd9/2xvef9ucHf/bW9z/25wd/9nanH/bG51/3Z4fP91d33/ +b3F1/3Z4fP9vcXX/bW9z/3N1fP9qbXf/cHN9/2xvef9wcnn/dXd9/3Byef9sb3n/amxz/25xe/9wc33/ +bnF7/2psc/9qbXf/Z2p0/2Zobv9maXP/ZGdx/2dqcf9kZ3H/Zmlz/2psc/9qbXf/amxz/2psc/9zdXz/ +bnB3/2xudf9sbnX/bnF7/3N1fP9zdXz/dXd9/3N1fP9sbnX/ZWdt/2psdv9rbnj/a252/29yfP9sb3n/ +cHN9/2xvef9wcnn/aWxz/3Byef9tcHn/dHZ8/3R2fP9zdXz/cXN5/21wef9vcnv/dXiB/3t+h/9zdXz/ +b3F4/21wef9xc3r/am12/2hrdf9maXP/am13/25xe/9sb3n/bG51/2ptd/9qbHP/cHN9/3Bzff9sbnX/ +c3V8/21vdv9wcXf/c3V8/3t9g/97fYP/fX6B/3l7gf92eHz/foCG/3h5ff91d37/dHZ8/3Fzd/9ucHj/ +cXN6/3d6gv9vcnv/bG95/3Bzff9wc33/en2G/3N1fP9xdH3/cXN5/25xeP9xc3n/bG51/29xdf91eIH/ +bnF7/2dqdP9sbnX/bnB3/2psc/9sb3n/bnF7/2Zpc/9sb3n/c3V8/2xvef9wcnn/dXd9/2xudf9zdXz/ +Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dHd//3N0e/9tcHT/bnB3/3N1fP9qbHP/bG95/3N1fv9rbXf/ +dXd9/21vdf9zdXz/dXd8/3N1fP9sb3n/Z2p0/3V3ff91d33/bnB3/2xvef9sbnX/bnB3/25wd/91d33/ +bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/ +bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/bnB3/21vdP9wcnr/cXN5/21vdf9ucHf/ +c3Z//3N1fP9sb3n/cnR7/3N1e/9rbXT/aWx2/2xudf9nanT/c3V8/2xvef91d33/dXd9/2Rncf9kZ3H/ +Zmlz/2Jlbv9nanT/Z2p0/2Zpc/9kZ3H/Zmlz/2Rncf9qbXf/bG95/25wev9xdHz/bW93/29xef9sbnX/ +am13/25wd/9vcXn/cnR7/3ByeP9ydHv/bnB3/2xvef9zdn//bG95/25wd/9wcnn/cHJ5/3Bzff9qbXf/ +bW9z/25wd/9tb3P/bnB3/25wd/9sbnX/cHJ5/21vc/91eIH/cHN9/3N2f/93eoP/d3qD/3d5f/9wc33/ +cHJ5/21vc/9ucHf/cHJ5/21vc/91d33/b3F1/3V3ff9sbnX/bnB3/29xdf9sbnX/Zmhu/2xudf91d33/ +c3V8/29xdf93eX//b3F1/2xudf9ucXv/Z2p0/3Bzff9sb3n/bG95/25xe/9ucXv/bG95/2psc/9wc33/ +cHN9/3N1fP9sbnX/cHJ5/3N1fP9sb3n/bnF7/25wd/9ucHf/bnB3/2xudf9vcXX/bnB3/2xvef9sbnX/ +d3qD/3Bzff9zdn//c3Z//3d6g/95e4H/dXiB/3l7gf91eIH/am13/2ptd/9xc3r/bnB2/2xudf9ucHf/ +bW9z/3V3ff9ucHf/cHJ5/2lsc/9ucXv/b3F6/3V3ff90dnz/b3J7/3Byev9vcXj/b3F4/3V3ff93eX// +bG51/2hrdf9rbnj/bXB4/2Zpc/9rbXT/ZGdx/2dqdP9wcnn/am13/2dqcf9nanT/ZGdx/2Zpc/9maXP/ +Zmhu/2dqdP9jZm//aGpx/2hqcv9wcnr/cHJ5/3Byef9ucHf/bnB3/2xvef9ucHf/bW91/25xe/9qbXb/ +Zmlz/2lrdP9wcnr/bXB0/2dqcf9sbnX/bW9z/3Z5gv9tb3b/a254/21vd/9tb3b/c3V8/2xudf9vcXX/ +d3qD/3V3ff9ucHf/cHJ5/3Bzff9qbXf/bnF7/25wd/9qbHP/c3V8/3Z4fP9ucHf/cHN9/3Z4fP9ucHf/ +bnB3/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/21wev9xdHr/bnB4/25wd/91d33/bXB3/29xef9ydX7/ +a213/3h6fv9vcXf/cnV9/3h6gP93eoP/c3Z//25xe/9+gIb/foGK/3l7gf97fYP/d3l//3t9g/93eoP/ +foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/e32D/3N1fP9wcnn/cHJ5/25xe/9zdn// +c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/dXiB/3Bzff9wcnn/bXB6/3Fze/9ucXr/ +bnB3/3N2f/9ucXv/bG95/3BzfP9xdH3/bnF5/2xvef9ucHf/cHJ5/3h5ff9wcnn/foCG/3t9g/9qbXf/ +am13/3Bzff9qbHP/bG95/2xvef9nanT/amxz/2xvef9maXP/bnF7/3Bzff9wc3z/cXR+/25xeP9vcnz/ +c3V8/2ptd/9qbXf/b3F5/3J0ev9vcXf/am13/2dpc/9nanT/cHN9/2xudf9sbnX/cHN9/25xe/9wc33/ +Zmlz/2xudf9qbXf/amxz/2dqcf9kZ3H/Zmhu/2dqcf9qbHP/cHJ5/2ptd/9qbHP/am13/2Zpc/9sb3n/ +amxz/2ptd/9nanT/amxz/25xe/9qbXf/c3V8/2psc/9sb3n/Zmlz/2psc/9qbHP/amxz/2Jlbv9maXP/ +bnF7/2xvef9sbnX/dXd9/2psc/9sbnX/cHJ5/2xudf91d33/bnB3/2xvef92eHz/bnB3/25wd/9tb3P/ +eHl9/3N1fP9zdXz/cHJ5/3N1fP9zdXz/bnF7/25xe/9sb3n/bW9z/2xudf9ucHf/bG95/25wd/9wcnn/ +b3F1/3Byef9qbXf/bG95/2ptd/9wc33/cHN9/2xvef9wc33/bG95/2Jlbv9hZG3/bG51/21wef9qbXf/ +bnB6/3Byef91eIH/bnB3/2xvef9naXP/cHJ5/29xef91d37/dHZ9/25xev9vcXr/bnF4/3Byef91d33/ +d3l//25wd/9vcXj/cHJ5/3F0e/9ucHf/b3F4/25wd/9wcnn/dXd9/25wd/9qbHP/bnF7/3Byef9sb3n/ +bnF7/2xudf9wc33/b3F1/21vdv9sb3b/dXd9/25wd/9zdXz/bnB3/2xudf9sbnX/bW9z/2hrdP9wc3v/ +bXB6/2ptdP9qbXT/c3V8/21vdf9iZW7/ZGdx/2dqcf9ydX7/a211/2tueP9rbnj/bXB3/3N1fP9sbnX/ +bnB3/3t9g/91d33/bnB3/25xe/9zdn//am13/3Bzff9sb3n/bG95/3Bzff91d33/cHJ5/3N1fP91d33/ +bG51/3Byef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9xdH7/dnh+/3F0fv9wcnn/dXd9/2xudf9vcXf/ +dHZ8/21veP91d37/bW92/21wev90dnz/c3V8/21vc/9ucHf/dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/ +bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/ +cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/eXyG/36Biv91eIH/dHeA/3Fze/9wc3v/ +a252/2hrcv9maXP/YmVu/2Zobv9nanP/bG94/2xudv9pbHb/cHJ5/2ptd/91d33/bG95/36Ahv97fYP/ +am13/2xudf91d33/amxz/3V3ff9wc33/bG95/2xudf9zdn//Z2p0/3N2f/91d33/cnR7/3Byef9ucHf/ +cHJ5/2xvef9maXP/amxz/29xef9vcXj/cHJ3/25wev9qbXf/Zmlz/3Bzff9sbnX/am13/3Bzff9ucXv/ +cHN9/2ptd/9sbnX/bG51/2psc/9qbHP/Zmlz/2dqcf9nanH/bG51/3V3ff9wc33/bG51/3N1fP9sb3n/ +c3V8/2xudf9wcnn/am13/21vc/9zdn//cHN9/3d5f/9vcXX/dXd9/2psc/9ucXv/bnF7/25xe/9nanH/ +bG95/3V4gf97fYP/c3V8/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3N2f/9wc33/eXuB/3Bzff9ucXv/ +bG95/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/25wd/9qbXf/am13/21vc/9qbXf/am13/2xvef9sbnX/ +cHJ5/25wd/9wcnn/cHJ5/25wd/9wc33/dXd9/3l7gf91d33/dXd9/3Bzff9sb3n/am13/3Bydv9tb3b/ +am13/2ptd/9sbnX/dXd9/25wd/9wcnn/Z2px/3Byef9ucHn/dHd//3d4ff9vcXj/cXN5/2tud/9sb3n/ +c3V8/3V3ff9sbnX/aGt1/21wev9tb3j/Zmlz/2hrdf9maXP/cHN9/3Bzff9qbXf/Z2p0/2xvef9ucXv/ +bG51/25xe/9qbHP/bG95/2xudf9ucXr/aWx0/3J0e/9sbnX/cHN9/25xe/9nanT/bG95/2xudf9sbnX/ +c3V9/3R2fv9tcHr/cHJ3/3R2fP9wcnn/am13/2dqdP9ucHf/dnmC/25xe/9ucXv/bnF7/25xe/91d33/ +bnB3/29xdf93eX//cHN9/2ptd/9qbXf/cHN9/2Rncf9sbnX/Z2p0/2Rncf9nanT/bG95/2Zpc/9maXP/ +bG95/2dqcf9qbXf/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/a212/3N1e/9zdXz/b3F1/3d5f/9tcHr/ +cXR8/3Z4gP9ucXr/dnh//25wdf9ucHf/dXd9/2xvef9qbXf/bG51/3V3ff93eX//bG95/3Byef9ucHf/ +bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX//am13/3Bzff9wc33/bW9z/2ptd/9nanT/ +am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/Z2px/2ptd/9zdXz/bG95/2xvef9sbnb/ +cHJ6/21wev9sb3n/bnF7/2xvef9ucXv/dHeA/3Z4f/9xdH3/am13/3Bzff9zdXz/e32D/3V4gf+Fh43/ +f4KM/25xe/9sb3n/d3l//2xvef93eX//cHN9/3Bzff9zdXz/dXiB/2xvef94eoH/dnh+/25xev9ucXr/ +aGp0/2dqcf9nanT/XWBq/2Rncf9qbXb/bG93/21vd/9ucXj/bG51/2psc/9zdXz/Z2p0/2xvef9sb3n/ +bnB3/25wd/9qbXf/am13/2psc/9sb3n/bG51/2ptd/9sbnX/am13/2xudf93eX//eHl9/3Byef91eIH/ +c3Z//3d5f/9ucHf/c3Z//25wd/9ucHf/c3Z//25wd/93eX//bnB3/3Z4fP9nanH/bnB3/29xdf9ucHf/ +Z2px/2psc/91d33/c3V8/2psc/91d33/amxz/2psc/9sb3n/ZGdx/2dqdP9maXP/Zmlz/25wd/9qbXf/ +Z2p0/2ptd/91d33/bnF7/25xe/9tb3P/dXd9/3Bzff9ucXv/cHJ5/25xe/9ucHf/bnB3/3Byef9zdn// +c3Z//3V4gf9wcnn/eXuB/3l8hv91eIH/e32D/3t+h/97fof/eXuB/3l7gf93eoP/bnF7/2ptd/9xc3r/ +cnR7/2xvd/9tb3f/bnB3/3N1fP9sb3n/cHN9/2dqdP9wc3v/cXN8/3V3ff92eHz/bnB6/3Bye/9tcHj/ +bnB3/3V3ff94eX3/b3F1/21vdv9tcHr/bnF5/2tueP9qbXf/Z2p0/3N1fP9sb3n/amxz/2dqdP9sb3n/ +bG95/2psc/9nanT/Z2px/2xvef9maG7/Zmly/2Rncf9ucXr/bG51/3Bzff9ucXv/Z2p0/25xe/9sbnX/ +Z2p0/2hrdf9oa3X/ZWhv/2Rmbv9maXP/a254/2dqdP9iZW7/Z2px/29xeP9maXP/aWx0/2ptd/9rbnj/ +cHN9/2ptd/9qbXf/d3qD/3N1fP9sbnX/bnB3/3Byef9sb3n/bnF7/3Byef9ucHf/bG95/3V3ff9sb3n/ +bnB3/3Z4fP9vcXX/dXd9/2BjbP9sb3n/cHN9/2xvef9tb3P/b3F4/21wev9xdH3/bnF7/2xvef93eX// +bG95/2xud/90dnz/bG94/3Bzff9rbnb/bG95/3V3fP9ucHf/bnB3/2psc/92eHz/dXd9/25xe/9ucXv/ +bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/d3qD/2xvef9wc33/cHN9/25wd/9ucXv/ +bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/ +bG51/29xev9rbnj/cnV+/3Bzff9ucXv/bG95/3J1fv91dnv/cHN6/2hrdf9oa3X/Z2p0/3V3ff9ucHf/ +fX6B/3d5f/9wcnn/bnF7/3Z4fP9ucHf/dnh8/2xvef9ucXv/Z2p0/2ptd/9kZ3H/bnF7/3Byef9pa3T/ +bG95/2dqc/9sbnX/am13/2dqcf9qbHP/bnB3/21weP9tb3f/cnR7/25wd/9nanT/cHN9/2Zpc/9qbHP/ +amxz/2ptd/9ucXv/Z2p0/2xvef9qbXf/bG95/2xudf9nanT/Z2p0/2xudf9maXP/bnB3/2xvef9maG7/ +am13/2xvef9ucXv/Zmlz/2dqdP9maG7/Zmhu/2ptd/9nanH/c3V8/2psc/9zdXz/ZGdx/2ptd/9qbHP/ +amxz/2Jlbv9maXP/bnF7/3N1fP9nanH/cHN9/2psc/9sbnX/bG95/2psc/9sb3n/am13/2xvef92eHz/ +cHJ5/3Byef9ucHf/dXd9/25wd/9wcnn/bG51/3N1fP9wcnn/cHJ5/29xdf9vcXX/bG51/25wd/9sb3n/ +bnF7/2xvef9ucHf/bG51/25wd/9zdXz/bG51/3Bzff93eX//d3l//3V4gf9wc33/c3Z//2dqdP9nanT/ +b3J7/21wef9sb3f/bW91/25wd/9zdXz/bG95/3N1fP9qbHP/cHJ5/3Bzff91d37/eHl+/3V3ff9ydHn/ +bnF6/3Byef91eIH/eXuB/3N1fP9xc3r/cnV+/25wef9ucHf/bG51/2xudf9wc33/dXd9/25wd/9sbnX/ +c3V8/3V3ff9tb3P/bnB3/21vc/9ucXv/am13/21vdf9qbHH/cXN6/21vc/92eHz/c3V8/29xdf9ucXv/ +am13/2xvef9xdHv/cHN8/21vdv9tb3j/b3J8/3R3gP9qbXf/am13/25wd/91d3v/cXN3/3Byd/9tb3j/ +bG95/3h5ff9ucHf/bnB3/3l7gf9zdXz/amxz/2ptd/9wc33/Z2p0/2ptd/9qbXf/Zmlz/2xudf9wc33/ +bG51/2psc/9wc33/amxz/25xe/9sb3n/dXiB/3t9g/91eIH/dXd9/3h6gP91eH//dnh+/25xev9qbXf/ +cHN9/2hrc/9sb3f/dnh9/21wev90doD/cnV9/3V4gf96fIL/d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/ +bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/ +bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/ +dHZ9/21vdv9xc3r/cXN7/3Byef9wc33/cHN9/29ye/9ydX7/cnR7/21vdv9sbnX/cHJ5/2dqcf94eX3/ +bG95/3t9g/91d33/cHJ5/25wd/92eH7/bnB3/3h5ff9wc33/cnV+/21wd/9rbnj/bG95/29yfP91d33/ +bnB4/21wef9rbXf/bG51/2ptd/9kZ3H/Z2p0/2xveP9tcHj/a253/3Fze/9sbnX/Z2px/3R2fP9qbHP/ +bG51/25wd/9wc33/cHN9/2xudf9wc33/bG51/2ptd/9sbnX/Z2px/2xudf9qbXf/bnB3/3Z4fP9wc33/ +bG95/3V3ff9zdn//c3Z//25wd/9ucXv/bnB3/25wd/9zdn//bG95/3V4gf9ucHf/dXd9/2ptd/9zdn// +bnB3/3Byef9nanT/bnB3/3V4gf93eoP/bG95/3V3ff9tb3P/bG51/3Byef9tb3P/bnF7/25xe/9ucHf/ +dnh8/3N1fP9qbXf/amxz/3Bzff9ucXv/c3V8/2xudf9zdXz/bG95/2xudf9qbHP/am13/2ptd/9qbXf/ +am13/25wd/9ucHf/c3V8/2xvef9sbnX/dXd9/25xe/91eIH/eXyG/3l8hv93eoP/c3Z//3V4gf9ucXv/ +bnF7/3V4gf9wcnr/cHJ3/3BzeP9vcXX/dXd9/25wd/9wcnn/bG51/25weP91d3//dnmA/3h7hf9zdoD/ +dnh+/29yfP9ucXv/c3Z//3d5f/9wcnn/bnB0/3Fze/9ucHj/bnB4/29xdf9vcXX/c3V8/3N1fP9ucHf/ +amxz/3N2f/91d33/bG51/3Byef9sb3n/bG95/2xudf9sbnX/ZGdv/3Fzff9qbHP/dXd9/25xe/9nanT/ +bG95/2ptd/9qbXf/bXB4/21wef9sb3j/am1z/25wd/9wc33/ZGdx/2dqcf9ucHf/dnd8/29xef9ucHn/ +bG94/25wd/94eX3/bnB3/3Bzff97fof/dXd9/2psc/9sbnX/dXd9/2xudf9sbnX/bnB3/2xudf9sbnX/ +dnh8/25wd/9ucHf/dXd9/25wd/9zdXz/YGNs/2xudf9sb3n/amxz/2psc/9rbnj/bG51/3Fzef9wcnn/ +bG95/3l7gf9ucHf/bnB5/3d5gf9vcXj/c3Z//2xvdP9pbHX/am13/2dqdP9maG7/Zmlz/3Byef9zdXz/ +bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/bG51/21vc/91d33/am13/2xvef9zdXz/ +bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/ +bnB3/3V3ff9tb3b/b3F5/25weP9vcXj/bnB3/3ByeP9ucHb/cHJ5/29yfP9vcnz/bG54/29ye/9qbXf/ +dXiB/3N2f/9/gYf/eXyG/3h6gP93eX//fH6E/3J0e/95fIX/c3Z//3R3f/9wcnj/bXB5/25wd/9zdn// +dHeB/3F0fP9xdH7/bnB3/3Byef9zdXz/bG95/2xvef90dn//cnV//29yfP91d33/cHJ5/21vdv91d33/ +bnB3/3Byef9vcXv/dnh9/3V3ff9ucXr/dnl//3N1fP9ydX//bG95/2xveP9vcXj/cXR9/29ye/94eoH/ +d3qD/3N2f/96fIL/enyC/3t9g/91d3z/dnh//3Z4fv9zdn//enyC/3V3e/9+gIb/enyC/31+gv9zdXz/ +eXuB/3h5ff91d33/cHJ5/3d4ff96fIP/gIKJ/3V4gf94eoH/d3mC/3V3ff93eYL/cHJ5/3Z5gv91eID/ +cHN9/3p8gv91eID/cHN9/3N1fP93eoP/c3Z+/3Bzff9sb3n/c3Z//3Bzff9vcXX/bG51/25wd/9qbXf/ +Z2pz/2xudf9wcnn/bnB3/3N1fP9sbnX/bG51/3V3ff9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9wc33/ +bG95/2xudf9wcnn/b3F2/2xudf9rbnj/bG51/25xe/9qbXf/bG51/2Jlbv9pa3X/b3J6/3J1ev91d37/ +cnV+/3Byef9sb3n/bG92/3Bzff91d33/Z2p0/2lsdf9tcHr/bG93/21wef9ucHf/b3F1/3V3ff91d33/ +cHN9/2xvef91eIH/dXd9/25wd/9wcnn/cHJ5/3Byef9ucHf/cHJ5/2lrc/92eYD/bG95/3l7gf91d33/ +bnB3/25xe/9sb3n/bG95/3J0e/9xc3j/bnF5/2lsdP9sbnX/bnF7/2Jlbv9maXP/bG51/3J0e/9sbnf/ +a252/25wd/9ucHf/dnh8/2xudf9ucHf/dXiB/3Bzff9nanT/bnB3/3Z4fP9sbnX/bG51/25wd/9qbXf/ +am13/3Bzff9qbXf/am13/3V4gf9tb3P/cHJ5/2dqdP9sb3n/c3V8/3Byef9ucHf/dHeA/3Bzff91d3// +dHeB/2xvef95fIb/cHJ5/25xev93eYD/bW92/3R3f/9vcXj/bW92/3N1fP9wcnn/bnB3/2xvef91d33/ +dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/ +cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/ +cHN9/2dqdP9sb3n/aGt1/25weP9tcHf/cHN7/21vdv9ydXz/cHN7/3ByeP9ydHz/am12/2dqdP9rbXT/ +ZGdx/2xvef9qbXf/c3Z//3N1fP9xdHz/b3F4/3Z4fv9ucHf/dnh9/29xeP9wcnv/bG51/2lsdP9sbnT/ +bG93/3Byev9tb3b/cnR7/2xudf9ucHf/bG51/2dqcf9maG//bXB3/25wd/9tb3X/cnR6/29xev9rbnb/ +cnR5/3J0ev9wcnv/cHN8/3N1fP92eID/cHN9/3J1fP9ucHj/cXR9/29xeP9vcXj/bnB4/29yef9ucHj/ +d3h9/3BzfP9xc3r/dXd+/3J1fv91eID/bnF6/3N2gP9ucHf/b3F5/3J0e/9sbnb/dHZ7/2xvef9zdXz/ +am12/3F0ff9sb3j/bG94/2Zobf9rbXT/cXN6/3l7gf9vcXb/cnV+/3Bze/9tcHn/cXN9/25wd/9wcnz/ +cHJ5/2xvdv91d37/cHJ8/21vc/9ucHf/dHZ8/3J0e/9xdH3/bnB3/3J1fv9ydX3/bnB3/25wd/9ucHj/ +bW93/2ttdP9sbnX/bG95/2xudf9pbHb/Zmlz/25xe/95e4H/c3V8/3V4gf97fof/e36H/3d5f/9wc33/ +c3Z//25wd/9qbXf/dXd9/29xeP9sb3f/b3F3/25wd/91d33/bnF7/25xe/9sb3n/b3J7/3J1f/90d37/ +dnh//3N2f/9ydH3/b3J7/25wd/9wc33/dXiB/25wd/9tcHr/dXd+/25xef9sb3n/bnB3/25wd/93eX// +dnh8/2xvef9qbXf/dXd9/3N1fP9ucHf/c3Z//3Bzff9wc33/cnV+/3N2f/9pbHT/dniA/25wd/91d33/ +bnF7/21vc/9tb3P/bG51/2tueP9xdH7/cXN8/3Bze/9rbnj/a254/3N1fP9nanH/bG51/21vc/9zdnz/ +b3J6/29xdv9ucHT/bnB3/3d5f/9vcXX/cHJ5/3V4gf9wc33/bG95/2xvef91d33/bG95/3Byef9wcnn/ +bnB3/29xdf91d33/b3F1/25wd/97fYP/bnB3/3Byef9ucXv/c3Z//3d6g/9zdn//cHN9/3N2f/9wcnv/ +cXR8/25xe/9kZ3H/dXiB/2psc/9laHL/c3V8/2hrdP90dn3/bnF5/2xvef9vcnz/bnF7/25wd/9sbnX/ +bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/ +dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/ +cHJ5/3V3ff9sb3n/bW95/2hrdf9ucHf/bG52/21vd/9qbHP/bnB2/3J0e/9oanL/bG53/2hrcv9iZW7/ +a210/2BjbP9nanT/am13/3V3ff9zdXz/cHN9/21vd/9wc33/a254/3h6gP9rbnf/bW95/2hrdf9iZW// +aWxz/2lsdP9tb3X/aWx2/25xe/9qbXf/bG51/2Zpc/9iZW7/YmVu/2ptd/9ucHf/bW94/29xeP9tcHr/ +bnF7/25xef91d33/cnR7/3F0e/9wc3z/dHeB/3R3gP9ydHr/bnB2/3R2fP91d33/cXN7/3Fze/9zdn7/ +b3J6/3J1fP9ydX3/dHZ9/3V3ff9xdH7/cnV//21weP9ydHz/bW92/29xeP9sb3f/bG51/25xef9sb3f/ +cHN7/2ptdv9ucHn/a252/29xeP9kZ3H/aGt1/25xe/91eH//bG51/21wev9tb3b/bG53/29yfP9pbHb/ +aWx2/2xud/9rbXX/cXR7/21wev9oa3P/a212/29yfP9vcXr/c3aA/25xe/9xdH7/bnB5/2xvdv9wcnr/ +bnB4/2xvef9ucHj/bnB1/3Byef9vcXX/bnB4/2lsdf9wcnn/c3V8/2ptd/9sb3n/dXd9/3V3ff92eHz/ +dXd9/25xe/9ucHf/bG95/3V4gf9zdXz/bW94/25xe/9ucHX/c3V8/25wd/9sb3n/Zmlz/21wdP9zdn3/ +c3V7/3Z3fP9zdXz/cXN5/25wdv9sb3n/cHJ5/3V3ff9ucHf/b3F4/3R2e/9tb3b/a253/2hqdP9sbnX/ +bnF7/2ptd/9nanH/ZGdx/25xe/9maXP/YmVu/2Rncf9nanH/Zmlz/2ptd/9oanT/Y2Zu/29ye/9nanT/ +cHJ5/2dqdP9kZ3H/Zmhu/2Zobv9jZm//bG95/25xe/9sb3n/amxz/2ttdP9sb3n/ZGdx/2Zpc/9sbnX/ +dHZ8/3Fzd/9tb3f/b3F2/29xdf95e4H/b3F1/3N1fP94eX3/c3V8/25wd/9ucHf/dXd9/2xudf9ucXv/ +bnF7/25wd/9sb3n/c3V8/2xvef9wcnn/foCG/2xvef9wc3z/Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/ +bnB3/3J0ev9ydHv/Z2px/3l7gf9ucHf/Z2p0/3l7gf9wcnn/eXuB/3J0ef9ydHv/cHJ5/25wd/9vcXX/ +bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/ +dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/dXiB/3d6g/9zdn//dXiB/25xe/9wc33/ +dXiB/3V4gf9zdn//bG95/3N1fP9ucHj/cnV9/25xev9vcnv/a253/3Byef93eX//aGpu/3BzfP9tb3b/ +aGt1/25wd/9nanT/cHN9/3N2f/91eIH/d3l//3R2fP9vcXj/d3mC/21wev93eoP/cnV+/25xe/9ydHv/ +aGt0/3J1fv9wc33/dXiB/3V3ff97fYP/dnh8/3V4gf91d33/cHN9/2xvef9zdn//c3Z//3R3gf90dn// +eHqA/3p8gP92eH3/foCH/3x9gf90d4D/c3Z//3Z4gP93eoT/dHZ8/25wd/93eX//eHqA/3V4gP9zdn7/ +dXeA/25wev9ucXr/cXR9/3R2ff9vcXr/bnF6/3J1ff9tb3b/cXN6/25wdv9ydHr/bnB3/21vdv9vcXf/ +aWx1/3R2fP9vcnz/dHd+/3J0ff91eID/bXB6/3Fzev90d4D/eHuE/29yfP9vcnv/cHN9/3R3fv93eoL/ +d3qC/3V4gP94eoD/d3l+/3l7gf93eX//cnV+/3N2gP93eYD/d3l+/3+Bh/93eYH/eHqA/3h6gv94e4L/ +dXh//3l8g/91eH//dnh//3Fze/9ydHr/b3J6/3F0fv9wcnr/d3qD/3t9g/91eIH/d3qD/3t+h/97fof/ +d3qD/3d6g/9wc33/bnF7/2xvef91d33/bG95/21wef9tcHr/bG51/3J1fP9ucHf/c3V8/25wd/9tb3f/ +bXB6/29yev9xdH3/a253/21weP9tb3b/bG95/3N1fP93eX//bnB3/29xeP9ydHv/bW92/2tud/9qbXf/ +bG95/3d5f/9wc33/am13/2Zpc/91d33/cHN9/2ptd/9ucXv/bG95/3Byef9ydHz/c3V7/2hqcv92eH// +am13/3V3ff9zdXz/bnB3/25wd/9ucXv/bW92/3Fze/9ydX3/cnR8/2xudv9vcXj/cHJ5/2dqcf9qbHP/ +bG51/3N2f/90dnz/dHeA/3R2ff9ucXv/d3l//25wd/9zdXz/d3l//2xudf9qbXf/Z2p0/25xe/9nanT/ +am13/2dqdP9qbHP/Z2p0/25xe/9qbXf/am13/3l7gf9tb3P/cHJ5/2BjbP9sbnX/cHJ5/2xudf9ucHf/ +cHJ5/21wev9ydHv/dHeA/2Zpc/93eX//bnB3/2ptd/92eHz/bnB3/3p7gP9ydHr/cnV//25xe/9vcXX/ +b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/ +bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/ +amxz/2ptd/9sb3n/bnF7/25wd/90dn3/bG92/25xe/9sb3n/aGt0/2Rncf9qbHT/c3V8/2RmbP9wc33/ +cHN6/21wev9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/94eX3/bG95/3N2f/9wcnn/eXyG/3N2f/9wcnn/ +bnB3/2ptd/9ucXv/c3Z//3Bzff9zdXz/d3qD/3Byef9ucXv/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/ +bnF7/3N2f/96fIL/c3Z//32Aif95e4H/c3Z+/3Bzff9zdn//fYCJ/3d5f/92eH7/en2G/3p9hv92eYL/ +dXiB/3V4gf90d4H/c3Z//3V4gf96fIL/b3F4/3Bzff9ydX7/cHJ5/3Bzff9wcnn/dHeA/25weP9ucHf/ +bW92/2hrcf9xc3n/cHJ5/3Z4fP9ucXr/cHN8/2ptdv9qbXf/c3V8/3d5f/9qbXf/aGt1/2xudf9sb3n/ +bG95/21wev9tb3b/a254/2hqcf9maXP/a210/2Vocf9nanT/a210/2hrcv9ucXv/a210/2Nmb/9naXP/ +aGt0/2dqdP9maXL/Z2lw/2hrdf9kZ3D/ZGdw/2Zpc/9iZW//ZWhw/25xe/9wc33/bnB3/25wd/91d33/ +d3l//3N2f/91d33/bnF7/2xvef9sb3n/dXd9/25wd/9ucHj/cHJ7/2xveP90dnz/bnF7/2dqdP9zdXz/ +bG51/29xeP9ydH3/dHeA/3N1fv9maXP/a211/2xudv9qbXf/am13/3Bzff9vcnv/bXB6/2lsdP9sbnX/ +bW92/2ptd/91d33/bnF7/2dqdP9nanT/cHN9/3N1fP9qbHP/bG95/2ptd/9qbXf/bnF6/25xe/9laHL/ +bnF6/2Nmb/9qbXf/bG51/2Rncf9maXP/bG51/2xvef9qbXb/bG51/2ptdP9oa3P/c3V8/3Bzff91d33/ +ZGdx/2psc/9tb3X/cXN5/29xef9sb3n/bG51/3d5f/9sbnX/cHN9/3d5f/9qbXf/Z2p0/2Zpc/9zdXz/ +bW9z/29xdf9ucHf/amxz/21vc/9zdXz/cHJ5/3N1fP9+gIb/bnB3/3Bzff9kZ3H/bnB3/3N2f/9sb3n/ +bnB3/29xeP9wcnn/cXN7/2xudf92eHz/cHJ5/2xudf9ucHf/eHl9/21vc/91d37/b3F4/29xeP9ucHf/ +bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/c3Z//3+Bh/9zdn//d3qD/31+gf9zdn// +c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX//c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/ +am13/25wd/9wcnn/bG51/25xe/9qbXf/bXB6/2ttdP9oa3P/aGty/2ttdf9nanT/c3V8/2dqdP9rbnj/ +cXN7/2ttdP9kZ2//bW91/2dqdP9sb3n/cHJ5/3d5f/93eX//bG51/2xudf9wcnn/dXd9/2xudf9sbnX/ +c3V8/25wd/9wcnn/bnF7/3Bzff9ucXv/bnB3/2ptd/9ucHf/bnB3/3Bzff9ucXv/eXyG/3V3ff93eX// +c3Z//3N2f/9wcnn/dXiB/3l7gf91eIH/cHJ5/3t9g/97fYP/foCG/3t9g/9ucXv/c3Z//3l7gf9wcnn/ +eXuB/3Bzff9wc33/bG95/2Zpc/91d33/cHN9/2psc/9ucHf/bG95/3N1fP9vcXX/cHJ5/25wd/9zdXz/ +am13/3V3ff9wcnn/bG95/2ptd/9kZ3H/bG51/25wd/9tb3P/cHJ5/25xe/9zdn//cHJ5/25xe/9zdXz/ +c3V8/3d6g/9wc33/d3qD/3t9g/93eoP/d3qD/3t+h/97fYP/eHuF/31/hf96fIP/c3Z//3J1f/95e4H/ +am13/3N1fP9wcnn/bG95/3R2fP9ydHv/dXd7/2dqcf9ucHX/bnB3/21vd/9ucXv/dnh8/2xudf9ucHf/ +dXd9/3d5f/9zdXz/bnF7/2ptd/9qbXf/bG51/3N1fP9qbXf/bG95/2xvef9qbXf/dHZ8/2xvef9maXP/ +dXd9/2ptd/9sb3j/cnR7/3F0ff9xdHz/Z2lx/21vdv9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9sbnP/ +am13/21vdv9wc33/dXd9/25xe/9qbXf/b3F1/3Z4fP9zdn//b3F1/3Byef9wc33/bnF7/3Bzff90dnz/ +bG93/3R3gP9nanT/bnF7/25xe/9sb3n/bG95/3V4gf92eYL/c3V9/3N2fv9vcnr/b3F4/3d5f/91d33/ +d3qD/2xvef9ucHf/b3F4/3J0ev9ucXv/cHN8/2xvef93eoP/bW9z/3Byef92eHz/am13/2dqdP9qbXf/ +cHN9/2xudf9ucHf/bG95/2xudf9ucHf/dXd9/3Byef91d33/fn+D/25wd/9ydHz/Z2p0/25wd/9wc33/ +bnB3/2xvef9sb3j/cXN5/21wev9nanT/bnF7/2psc/9nanT/bG51/3h5ff9vcXX/eXuB/3Byef9vcXn/ +bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/ +bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/c3V8/25xe/9zdXz/bG51/2xvef9sbnX/ +cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/bW92/2ptd/9sbnX/Z2p0/3N1fP9nanH/ +b3F5/3F0ff9sb3f/Zmhv/29xeP9sbnX/cHJ5/3V3ff97fYP/eHl9/21vc/9sb3n/c3Z//3N2f/9sb3n/ +bnB3/25xe/9ucHf/bnB3/3N1fP91d33/bnF7/25wd/9ucHf/bG95/25wd/9ucXv/bnB3/3l7gf9zdXz/ +eHl9/3N1fP9wc33/bG95/3N1fP9wcnn/cHJ5/2xudf9zdXz/dXd9/3V3ff9zdXz/Z2px/29xdf91d33/ +b3F1/3V3ff9ucHf/c3V8/21vc/9maG7/cHN9/2xudf9nanT/Z2p0/2xudf9sb3n/am13/2dqdP9nanH/ +am13/2Zobv9ucHf/Zmlz/2Zobv9gY2z/XWBq/2dqcf9nanT/YmVu/2Zpc/9kZ3H/ZGdx/2Jlbv9iZW7/ +ZGdx/2Jlbv9maXP/Z2px/2dqdP9wcnn/Z2p0/2Rncf9qbXf/Z2p0/2Zpc/9maXP/Z2p0/2Zobv9qbHP/ +am13/2Jlbv9maG7/ZGdx/2dqcf9sb3n/bG95/2xvef9nanT/bG95/2psc/9sbnX/bnF7/3N1fP9qbHP/ +am13/25xe/91d33/bG95/2ptd/9nanH/amxz/2Rncf9qbXf/amxz/2tueP9rbnj/am11/3V3e/9wcnn/ +amxz/3d5f/9sb3n/bnF6/3F0fv9xdH3/dHZ8/2dqcv9tb3b/cHJ5/2xudf9zdXz/dXd9/21wev9tcHr/ +aWx2/2xvef9tb3n/dXiB/3d6g/9wcnn/bnB3/21vc/91d33/dXd9/2psc/9sb3n/bG95/3Byef9qbXf/ +bnF6/2xudf9ydH3/am13/25wd/9ucHf/bG95/3Byef9zdn//dHeA/3J0fP9tcHj/bG53/3J0e/94eoH/ +c3Z//3t+h/9sb3n/bG95/25xe/90dn3/bnB4/25wd/9tb3P/dXiB/2dqdP9nanT/cHN9/2xudf9nanT/ +ZGdx/2xvef9qbHP/ZGdx/2dqcf9kZ3H/Z2p0/2xvef9sb3n/bG95/3t9g/9qbXf/c3V8/2Zpc/9sb3n/ +cHN9/25wd/9wc33/bnB3/3ByeP9zdXr/bG95/3N2f/9wcnn/bG95/2xvef91d37/b3F2/3l7f/9xc3n/ +bnB3/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/ +bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/ +b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/94eoD/cXN7/29xef9vcnf/bG95/2xveP9ydX7/ +Z2p0/25xev9xdH3/a254/2RncP9rbnj/Z2p0/2xvef9wc33/c3Z//3N1fP9sb3n/cHJ5/3Fzff9ydX7/ +b3J8/3Byef9ydX7/cHJ5/3Bzff90d4D/cHN9/3V3ff9vcXX/bG51/2xudf9tb3P/bnB3/2xudf95e4H/ +cHN9/3R2fP91d3v/c3V8/2ptd/9sb3n/bG51/2xudf9qbXf/cnV8/3N1fP9wcnn/am13/2Fkbf9qbHP/ +c3V8/2xudf9ydXz/am13/25xe/9sbnX/ZWhx/3N1fP9sbnX/bG51/2xudf9sbnX/bG95/2ptd/9ucHf/ +b3F1/3N1fP9tb3P/dnh8/25xe/9sbnX/amxz/2Jlbv9qbHP/bG95/2Zpc/9qbXf/am13/2xudf9qbXf/ +am13/2xudf9qbXf/cHN9/2xvef9ucXv/d3l//3V3ff92eHz/dnh8/3Byef9sb3n/bnF7/3Bzff9sbnX/ +bW9z/3V3ff9qbHP/bnB3/2xudf9tb3P/c3V8/3Bzff9sb3n/Z2p0/2xvef9qbHP/bW9z/3N1fP92eHz/ +cHJ5/25wd/91d33/c3V8/25xe/9wcnn/am13/25xe/9qbXf/cHN9/2xvef9tcHr/bXB4/21veP9zdoD/ +bnF7/2xudf93eX//bG51/2tueP9wc3v/cnR7/3R2ev9naXD/bnB2/3N1fP9ucHf/dXd9/3V3ff9vcXj/ +b3F5/2xuc/9ucHf/cHJ2/3N2f/93eX//cHN9/2xvef9sb3n/dXiB/3h5ff9ucHf/c3V8/3N1fP9wcnn/ +bG95/3J1ff9sb3f/cnN5/2Vocv9qbHP/Z2p0/2BjbP9kZ3H/Zmlz/2dqc/9rbnT/aWtz/2Zob/9pa3L/ +cHN9/2xvef91eIH/Z2lz/2xudf9sb3f/cXR7/2ptd/9sbnX/am13/3V4gf9kZ3H/am13/3Byef9maG7/ +ZGdx/11gav9nanT/Zmhu/2Rncf9maG7/Zmhu/2Rncf9qbXf/ZGdx/2dqdP91eIH/YmVu/2dpc/9nanH/ +cHN9/3V4gf9wcnn/bnF7/25xev9wcnn/c3V8/2ptd/9ucXv/am13/2dqdP9sbnP/dnd8/2tueP90d37/ +cXN5/25xev9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/ +cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/ +c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/c3V8/2dqcP9sb3n/bW92/2xveP9sb3n/ +dXd+/2ptd/9wc33/cnV+/2xvef9maHL/bXB6/2dqdP9ucXv/bnF7/3V3ff94eX3/cHJ5/21vdv90dnz/ +bnF7/3F0fv9ydX7/cnV+/29xeP9vcnv/c3Z9/3N2gP91eIH/cHN9/3N1fP9zdn//d3qD/3d5f/91d33/ +gIKJ/3p8gv92eYP/dXiB/3d6g/9zdX3/eHqB/3h7hP91d37/dHZ9/3p7gP97fYH/enyC/3R3f/9ucXr/ +cnV+/3p8gv9ydHv/cnV9/3Byef90d4D/cnV9/29ye/94eoD/bnB3/29xeP9ucHf/bW92/21wev9rbnj/ +bnB6/2tueP9xdHv/b3F4/3d4ff9vcXj/bnB3/2xuc/9iZW//bW92/2xvef9rbnj/dHeA/3J1fv9xdH7/ +bW93/2xveP9ucHf/b3F4/3J1fv9vcnz/c3Z//3h7hf96fIL/eXyG/31+gv96fIL/enyC/3p8gv94e4X/ +d3qC/3V3ff97fYP/d3l//3Z4f/92eHz/d3l//31+gv99foL/enyD/3d5f/96fIP/dXd9/3N2f/91d33/ +eHl9/3Byef9wcnn/dXd9/3N1fP9wcnn/bnB3/2psc/9ucXv/bG51/2xvef9sb3n/aGt1/2lsdP9qbXX/ +cnV+/25wd/9nanT/d3l//2xveP9rbnj/cnV9/2xvef9ucHf/X2Jr/2ttc/9tcHr/bnB3/3N2f/92eH// +bnF7/21wev9qbHX/bXB3/2ttdP9ucXv/d3l//2ptd/9maXP/bG51/3V4gf93eX//bG51/3N1fP9wcnn/ +c3V8/2xvef9zdXz/am13/3J1ff9nanT/bG51/25xe/9kZmz/bG51/2xudf9ucHf/b3F1/21wd/9qbXX/ +a253/3V3ff9ucXv/d3l//25wdP9tcHf/c3V9/3R3f/9wc33/b3F1/2xudf97fYP/bG51/25wd/92eHz/ +b3F1/25wd/9qbHP/eHl9/3Byef9tb3P/b3F1/29xdf9sbnX/dXd9/3N1fP92eHz/f4GH/2dqdP9sb3n/ +am13/3Bzff95e4H/dXd9/3V4gf9vcnz/c3V+/3V3ff9tcHr/bnF7/21wef9sb3j/cHJ5/3d6gP9xc3v/ +dHd+/3R3gP9zdn//dnmC/3Bzff9zdn//c3V8/3N2f/91eIH/bnB3/3d5f/9sb3n/bnB3/25wd/93eX// +bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/ +cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/bnF7/3V4gP9ucHf/cHN8/29xeP9ucXn/ +a254/3V3ff9pbHb/cXR8/29yfP9wc3z/bG95/2xvef9qbXf/cHN9/3Byef91eIH/d3l//3Fze/9ucHj/ +dHd+/2ptd/92eYD/cHJ6/3V3f/9tcHr/cXR8/3V3fv92eYD/dXiB/29xeP9tcHn/bnF7/3Bzff9wc33/ +cHN9/3l8hf9ydX7/dHV7/3J0fP9ydX//cXN6/3Fzev9ydX3/b3J6/3Fzef9ydHz/dXiB/3Z4f/9vcnr/ +bW94/25xef92eHz/b3F2/3Bze/9wc3v/c3Z//25xe/9vcXr/d3l//21vdv9xc3r/b3J6/21weP9vcXv/ +bW94/25wef9rbnj/b3J8/21wef90dn3/cXN7/3Bze/9tb3X/ZWdu/2Zpc/9pa3P/Zmly/2tueP9rbnb/ +bG92/2Vocf9sbnX/aWxz/2dpb/9oanT/a210/21veP90dn3/b3J5/3R2fP9zdXr/bnF4/29ye/9ucXv/ +b3J8/3BzfP9xc3r/cXR9/3Bye/9ydHv/cXN9/3J1ff93eX//e32D/3R3f/9xdH3/c3Z//3F0ff9vcnz/ +dXd9/3d5f/9ucHf/cHJ5/3Byef9wcnn/cHJ5/3V3ff9sbnX/cHJ5/21vc/9ucXv/bnF7/2xvef9sb3j/ +bXB4/3V3fv9sb3n/Z2p0/3d5f/9sbnX/a210/29xd/9tcHr/cnR6/2Rmbv9sbnT/am13/2dqdP9ucXv/ +c3V8/2xudP9tcHr/a252/2xvef9ucXv/cHN9/3d5f/9ucXv/bG95/25xe/97fof/d3qD/25wd/91d33/ +cHJ5/3Byef9ucHf/cnR7/21vdv9ydXz/aGty/2xudf9ucXv/ZGZs/25wd/9ucHf/bW93/25weP9ucHf/ +bnB2/2xveP9zdXz/c3V8/3V4gf9sbnX/bG51/21wev9zdXz/am13/2xudf9qbXf/dXiB/2psc/9sbnX/ +dXd9/2xudf9tb3P/amxz/3Z4fP9vcXX/bnB3/2xvef9ucHf/am13/3d5f/91d33/c3V8/4GDiv9qbXf/ +cHN9/2dqcf9vcXX/c3V8/2ptd/9ucHf/bW92/3Bye/9ydX7/cnR7/3V4gf91d4D/cHJ7/3d5gP96fYf/ +eHqB/3R2fv9ydX3/bXB5/2xvef9sbnX/bG51/2ptd/9ucHf/c3V8/2xvef91d33/bnB3/3Byef9sb3n/ +dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/ +d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/c3V8/25wd/91d33/bG95/3F0ff9ydH3/ +dHd//3Bzff95e4H/c3Z+/3d6gP9wc3z/b3F5/2xudf9sbnX/Zmlz/2xvef9sb3n/dXd9/3N1fP9rbnj/ +bG52/3Z4f/9qbXb/dnh9/3Byd/9zdn3/bW93/25weP9ucXv/dHd//3V3f/90dnz/d3l//3d5f/9+gIb/ +d3l//3R3gP96fYb/dXd+/25xe/9wc33/c3V9/29yfP9xc3r/dHZ+/29yef9zdX3/c3V9/3N2f/9xdH7/ +bG95/3Bzev9ucHX/dHZ+/21vdv9qbXf/bG92/3Bze/9sb3f/bG94/3R2fP9tb3P/cnR5/3F0e/9ucHf/ +bG95/2xvef9ucHn/bnB3/3Bye/9vcXr/c3V9/3V3f/9xdHz/b3F4/2ttc/9rbXT/bnF5/2ptdf9sbnX/ +bG50/3F0fP9qbHP/bW92/2xvef9tb3b/cHJ3/2lsdv9wc3v/dXh//2tudv90dnv/cXN6/25xef9wcnn/ +dHZ+/25xe/9tcHr/bnB5/3F0ff9vcnv/bW94/3Byev9sb3j/a252/3J1fP9vcXn/a210/21wev9vcnz/ +bnB3/3N2f/93eoP/cHN9/3N2f/9zdn//c3Z//3V4gf91eIH/cHJ5/3d6g/9wc33/d3qD/3l8hv93eoP/ +dnmB/3Bzff90d4D/dXiB/3N2f/97fYP/d3l//21wev94e4P/dXd//3V4gv9vcnz/a251/3N1fP9vcXX/ +Z2px/2psc/97fYP/cXR7/2xudf9vcXj/bnF7/3N1fP93eX//bnF7/2dqdP9ucXv/d3qD/3d6g/9ucXv/ +cHN9/3V3ff9wc33/bnF7/3Z4fv9kZ3H/dniA/2xvef9qbHP/dXd9/2Zpc/9nanH/ZGdx/2Rncf9pbHL/ +a213/21wev9laHL/ZGdx/2Rncf9qbXf/Z2lv/2tud/9qbXb/c3V8/25wdf9sb3n/bnF7/3V4gf9qbXf/ +bnF7/3l7gf9sb3n/bG95/2dqdP91d33/bG95/2xvef9ucXv/bnF7/2dqdP93eX//c3Z//3N2f/+Bg4r/ +bG51/3Byef9maXP/bnB3/3Byef9sbnX/bnB3/25weP9ucHf/amxz/25wd/9vcXX/d3h9/3N1ev9tcHj/ +dXd7/3V3ff9wc3z/c3V9/3Byev9sb3n/bG51/2ptd/9maXP/am13/2xvef9ucXv/cHJ5/2dqcf9nanT/ +Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/ +Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/Zmhu/2Zpc/9kZ3H/cHJ5/2dqdP9qbXX/ +bnB4/29yfP9sbnX/c3V8/25xe/9xdHv/bXB5/3J1ff9pbHX/bW90/2ptd/9sb3n/am13/3Bzff9ucXv/ +cnR8/3J0e/94e4X/bG95/3l7gf9ucHf/dXiB/3Byef9ucXv/b3J8/3N1e/9wc33/cHJ6/2ttdP9zdXz/ +c3V8/21vc/9vcnz/bnF6/25xef9ucHf/cnR7/3R2fP9ydHv/bW92/3R3ff9vcXj/c3Z//25xe/9vcnz/ +c3V+/3F0ff94eoD/cHJ3/3R2e/9vcXX/a21z/25wd/90dnv/b3F5/3Fzev9xc3r/b3F1/3V3ff9ydX7/ +bnB1/2xudv9ucHf/bXB1/2tueP9tb3f/bG51/21wev9vcnz/b3J7/29ye/9qbXf/aWxz/29xef9nanH/ +bG92/2xveP91eIH/a21z/2lsdv9vcXX/b3F4/25wd/9tb3b/dHZ7/3N2ff9pbHb/d3mA/3J0e/91d33/ +cXR+/3R3gP9zdn7/dHeA/3R3gP97fof/d3qD/3d5gP91eH//cHN8/21wev9wc3z/dnmC/3N2f/9wc3v/ +eXuC/3V4gf9zdXz/dXd9/25wd/91d33/cHJ5/3Byef9wcnn/cHJ5/21vc/9wc33/am13/2xvef9qbXf/ +bnF7/2xueP9rbnX/bG52/29xef9ucHf/dXd9/3N1fP9rbnj/cXN6/3Byef9zdXr/bW5z/2hqcf9wc3z/ +cHJ5/2dqdP9nanT/d3qD/25xe/9sb3n/bnF6/25xe/9zdn//d3qD/25xe/9qbXf/bnF7/3l7gf95e4H/ +bW9z/3N1fP9zdXz/bG51/2xudf9zdXz/Zmhu/3R2fv9ydHv/am13/3d6g/9nanT/Z2p0/2dqdP9nanH/ +a254/21wef90dn3/bG51/2ptd/9qbXf/bnF7/2xvef9ydHv/am13/3Fze/9sbnb/am13/2xudf91d33/ +amxz/21vc/91d33/bnB3/25wd/9sbnX/cHN9/2xvef9ucHf/bG95/25wd/9qbHP/dnh8/3Bzff9wc33/ +f4KM/25wd/9wc33/am13/2xvef91d33/bG51/3N1fP9tb3n/bG51/2dqcf9nanT/bW92/3V3ff9zdX3/ +cXR8/3d6hP91eIH/cXR7/3J1ff9zdXz/am13/3Byef9wcnn/Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/ +bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/ +bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/cHJ5/29xdf9wc33/bnF7/3l8hv9ucXv/ +cHN9/3R3gP94eoD/cHN9/3l7gf9zdn//dHeA/3Bzff9xc3r/am13/25wd/9vcXX/cHJ5/25wd/9zdXz/ +c3V8/2ptd/9qbXf/d3l//25wd/94eX3/bnB3/3N1fP9qbXf/b3J8/29yfP90d37/d3mC/3Z4gf9zdn// +e32D/3l8hv9zdXz/dXd9/25xev9sb3j/aGt0/25xe/91d33/c3V8/2xudf9zdXz/bnB3/3V3ff9sbnX/ +bG95/25xe/9vcXj/dXd9/21vdv9zdXz/a213/2dqdP9rbnj/cXR9/3Byef9wcnn/dXd9/21vdv91d3z/ +c3Z//25wd/9sb3n/cHJ5/2xudv9sbnb/bnF4/25wd/9zdXz/c3V8/3Fzev9wc33/bG51/2dqdP9sb3n/ +Y2Zu/2ptd/9wcnn/enyC/2xvef9sbnX/bW92/2tud/9ucHf/aGt1/3V3ff92eHz/aGt1/3Z4f/9wcnn/ +bnB3/25xeP9zdn//bnB3/3Bzff9ucXv/eXuC/3Z5gv9ydHv/dnh//25xe/9sb3n/bG95/3Bzff9vcnv/ +Zmly/3J1fv9vcnv/dXd9/3d5f/9wcnn/c3V8/3Byef9zdXz/cHJ5/3V3ff9tb3P/dXd9/25wd/9wcnn/ +c3V8/25xe/9qbXf/a210/2tueP9qbXf/bG51/3d5f/9ucXv/bG51/29ye/9ucHf/cXR8/2ttdP9laG// +bnF6/2ptd/9maXP/Zmlz/3R3gf9tcHn/bG93/2xvdv9wcnn/c3V8/3d6g/9sbnX/amxz/25wd/93eX// +d3l//25wd/91d33/dXd9/25wd/9ucXv/dnh//2hrdP91d4D/a253/2psc/9zdXz/Zmlz/2Rncf9maXP/ +Z2px/21wev9sb3n/c3V8/25xe/9wcnn/cHJ5/3Z4fP9wcnn/dHZ6/2xudf92eH7/bW91/29xdf9ucHf/ +eHl9/2psc/9sbnX/dXd9/2xudf9qbXf/amxz/25xe/9sbnX/b3F1/29xdf9vcXX/Z2px/3V3ff91d33/ +c3V8/3+Bh/9nanT/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/bG95/21veP9qbHP/ZWhy/2xudf9xdH3/ +cXN5/21vdv90dnz/c3V8/21wef9wcnr/bnB6/21wd/9ucHf/cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn// +bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/am13/2xudf9ucHf/bG51/3V3ff99foH/ +Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/am13/25xe/9ucHf/c3V8/3V3ff95e4H/ +bnB3/3Fze/9wc3v/dHeA/3N2f/93eX//c3Z//3Z5gv9zdn7/cHJ4/2hrdP9qbXf/bG51/3N1fP9ucHf/ +c3V8/3V3ff9qbXf/Z2p0/3d5f/9sbnX/eHl9/25wd/91d33/b3F1/3Byef9wcnr/cXR8/3R3f/91eIH/ +cHJ5/3N2f/9zdn//bnB3/3Z4f/9ucXr/bnB4/21vc/9wcnn/dXd9/3h5ff9ucHf/dXd9/25wd/92eHz/ +bG51/3Byef9zdXz/am13/3V3ff9sbnX/dnh8/29xdf9qbHP/bG95/3Bzff9ucXv/am13/3Bzff9qbXf/ +dXd9/3V3ff9ucHf/bnB3/3Byef9vcXX/bnB3/25xe/9ucHf/c3Z//3V4gf9zdn//c3Z//2xvef9qbXf/ +c3V8/2dqcf9sbnX/bnB3/3d5f/9ucHf/am13/3Byef9wcnn/bnB3/2ptd/91eIH/eXuB/2dqdP93eX// +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/bG95/3N1fP9ucXv/aGty/3Z4fP9qbHP/Z2px/2xudf9ucXv/ +cHN9/2Zpc/9zdn//b3F1/2xvef9sb3n/Zmlz/2ptd/9nanT/bnF7/2ptd/9qbXf/bG51/3Bzff9sbnX/ +bG95/2xvef9ucXv/b3F4/21vdv9sbnf/bG51/2dqcf9wcnn/am13/2hrcv9ucHr/bW91/3BzfP9oanP/ +X2Jq/2hrdf9nanH/XWBq/2Rncf93eX//bnF6/29xev9sb3j/c3Z+/3d6g/95fIb/cHJ5/2xvef9wc33/ +eXyG/3t+h/9wc33/e32D/3t9g/91d33/cHN9/3p8gv9pbHb/e32E/3N2f/9sb3n/d3l//25wd/9vcXX/ +bG51/2xudf9vcXj/cHJ6/3R2fv9ucXv/bG95/3N1fP91d33/bnB3/3J0e/9tcHn/dniB/25xe/9ucHf/ +bnB3/3Z4fP9sbnX/cHJ5/3h5ff9sbnX/bG95/2ptd/9ucXv/am13/2xudf9qbXf/bG51/2Zpc/9wc33/ +cHN9/3N1fP9/gYf/am13/25xe/9sbnX/bnB3/3Bzff9nanT/bnF7/3Byef9wc3v/a253/2dqc/9wcnn/ +cXR9/25xeP9pbHX/Z2pz/2dqdP9laHD/bnB2/2ptd/9rbXX/bG95/2xvef9nanT/am13/3N1fP9wc33/ +d3qD/2xudf9wc33/bG51/3V3ff9nanT/amxz/2xudf9qbHP/bG95/2ptd/9qbXf/bG95/2xudf91d33/ +e32D/2Jlbv9ucXv/bG95/3N2f/9qbHP/c3V8/3Bzff9nanH/amxz/2Jlbv9nanT/Z2px/2ptd/9sb3n/ +dHeA/2lsdP9sb3j/b3F3/3Byef9wcnn/cHJ5/3Byef91d3v/b3J7/3Z4fv9ucHf/bnB3/2xvef9wc33/ +bG95/25xe/95e4H/cHJ5/2ptd/91eIH/bnB3/3d5f/9ucHf/dXd9/2xvef9ucXv/cnR7/3Bze/9xdHv/ +cHN9/2tueP9zdXz/dXd9/29xdf92eH//bXB6/21vd/9rbXf/bnB3/3V3ff94eX3/bG95/3l7gf9zdXz/ +e32D/3Bzff91eIH/eXuB/3N2f/97fof/c3Z//3t9g/9wc33/c3Z//3d5f/95fIb/d3qD/3N2f/93eoP/ +c3Z//3t9g/91eIH/c3V8/2xvef9sb3n/bG95/25wd/9wcnn/bW9z/3Byef91d33/c3Z//3V3ff9ucHf/ +bG51/25xe/9iZW7/bG51/2xvef9zdn//Zmlz/2Rncf9nanH/Z2p0/2dqdP9kZ3H/bnF7/3N1fP9nanT/ +d3l//2ptd/9nanT/bG51/3Byef9sbnX/am13/2xvef9ucXv/am13/2Zpc/9wc33/Z2p0/2BjbP9nanT/ +cHN9/2xvef9iZGr/bnF7/2xudf91d33/dnh8/3N1fP9wcnn/bG95/25xe/9ucXv/am13/2psc/9ucXv/ +am13/2psc/9qbXf/cHN9/29yfP9rbXb/bG93/2tueP9sbnX/dXd9/3Byef9tb3P/cXN6/21wef9ydHz/ +a251/2dqcv9ydHv/cHJ5/2psc/9sbnX/dnh//3Byef9sbnX/aWx1/2xvef9ucXv/dXd9/2Zpc/9gY2z/ +Z2px/3Byef9wcnn/Z2px/25xe/9sb3n/amxz/2Zobv9rbnj/Y2Zu/3Z5gv9vcnv/bG95/3d5f/9ucHf/ +bnB3/2xudf9tb3P/bnB3/3Fzev90dnz/c3Z+/25xe/9wc33/d3qD/3J0fP9ydHr/a254/3N2f/9tb3b/ +am13/2xudf92eHz/bnB3/3Byef9zdXz/bW9z/21vc/9tb3P/bnB3/3Byef9ucHf/bnB3/29xdf9nanH/ +c3V8/3N2f/9zdn//f4GH/2xudf9xc3r/ZGdx/2ptd/9sb3n/Z2px/3Byef9vcXb/b3F4/2xudf9nanT/ +cHN9/3V4gP90dnz/dHZ9/3N1fP91d33/bnB3/3N0eP9ydHr/cHJ5/3Byef9wcnn/amxz/2xudf92eHz/ +cHJ5/3V4gf9sbnX/bnF7/2xudf9wcnn/Z2px/2Rncf9maXP/Z2px/2dqcf9maG7/YmVu/2Zobv9maG7/ +am13/3N2f/9ZXGX/Zmlz/2dqdP9wcnn/ZGdx/2xvef9sb3n/amxz/2ptd/9maXP/am13/2xudf9sb3n/ +cHN9/3R2ff9oa3X/bG95/3F0ff9vcnz/dXd9/3N1fP9wcnn/dHZ8/3N2f/91d37/b3J5/2xudv9sbnX/ +cHN9/2xudf9sbnX/dXd9/2xvef9qbXf/e32D/3N1fP93eoP/bG95/3Z4fP9qbXf/c3Z//3J0e/9ucHn/ +cXN6/3R2fP9tb3P/c3V8/3Bzff9ucHf/c3V8/29yfP9ucXv/bnB3/3Byef93eX//e32D/3Byef97fYP/ +cHJ5/3t9g/9ucXv/cHN9/3V3ff9wc33/eXuB/3Byef9zdn//bG95/2ptd/9sb3n/c3V8/3N1fP9ucHf/ +bnB3/25wd/9zdXz/bG95/2ptd/9qbHP/am13/2Rncf9nanH/am13/2dqcf9nanT/am13/25xe/9wc33/ +amxz/2xudf9zdXz/amxz/25wd/9wc33/eXyG/2xvef9ucHf/cHJ5/3N1fP9ucXv/bG95/3N2f/97fYP/ +c3Z//36Biv91eIH/c3Z//3Bzff93eoP/c3Z//3l8hv93eoP/e32D/3l7gf9wc33/d3qD/25wd/9maG7/ +bG51/25wd/9sbnX/ZWZq/3N1fP9zdXz/c3Z//3V4gf9wc33/dXd9/3V3ff91d33/cHN9/3Bzff9wc33/ +dnh8/3Bzff9wc33/c3Z//3Z5gv91eIH/bXB5/3Bze/9sb3n/bG51/3V3ff9sb3n/bG51/3F0ff9tcHn/ +c3Z+/21vd/9naXP/am13/2xvef9iZW7/ZGdx/3V3ff9qbXX/Z2p0/2hrdf9xc3r/cnV8/3Z4f/9sbnX/ +amxz/2tudf91eIH/dHZ8/25wdf9ydX7/cnV+/2xvef9ucHf/cXR9/2dqdP90dn7/Zmlz/2Zpb/9sb3n/ +YmVu/2Zobv9kZ3H/Zmhu/2lsc/9sbnj/dHZ9/2xvef9sbnX/bG95/3V4gf9tcHn/cHN7/2tud/92eYH/ +b3J7/25wd/9vcXX/d3l9/3Byef9wc33/dHZ8/25wd/9sb3n/b3F1/25wd/9ucHf/bW9z/2xudf9ucHf/ +aGt1/25xev92eH7/dXeA/36Ahv9ucHf/dXiB/2Zobv9qbXf/bG95/2Zpc/9wcnn/bW90/2tueP9sbnX/ +Z2pz/2xvef9vcnv/cHJ7/3N1e/92eYH/c3Z//29yfP9zdX3/cnV9/3J1fv91eIH/d3qD/3N2f/9zdn// +foGK/3l8hv+Bg4r/cHN9/3d6g/9zdXz/d3l//3Byef9wc33/cHN9/25xe/9ucXv/bnB3/29xdf9wcnn/ +bnF7/3l7gf9+gIb/Z2p0/3N2f/9wcnn/d3l//21vc/92eHz/dXd9/25wd/9ucXv/Z2p0/2xvef9ucHf/ +bnF7/3V4gf94e4X/bnB3/3Fze/90d4D/cHN8/3V3ff9wc33/bnF7/3N1fP9ydHr/cnR6/21wd/9sb3n/ +bnF7/3d6g/9ucXv/cHJ5/3N2f/9ucHf/amxz/3V3ff9vcXX/dXd9/2xvef9zdn//bXB6/3V3fv9ydX7/ +cHN9/3N2f/90dnz/bnB3/3N2f/9wc33/bG95/3Fze/9ucXv/bXB6/2xveP9ucXv/dHeA/3p8gv9ucHf/ +dHd9/2xudf92eHz/cHJ5/3Byef9zdXz/bG95/3N1fP9sbnX/bnF7/2dqdP9nanT/bG51/2xvef9sb3n/ +amxz/2xudf9sbnX/dXd9/3N1fP9ucHf/bW9z/2xvef9maXP/am13/2xvef9sbnX/c3V8/3N1fP9zdXz/ +c3V8/29xdf9vcXX/cHN9/2ptd/9wcnn/c3V8/3d6g/9sbnX/bnB3/29xdf9vcXX/bG51/2psc/9ucXv/ +cHN9/2ptd/93eX//am13/2psc/9qbXf/bnF7/2xudf9ucXv/am13/3Bzff9ucXv/ZGdx/25xe/9nanH/ +YGNs/2Rncf9qbXf/bG51/2RmbP9ucXv/bnF7/3Bzff91eIH/c3Z+/3R2fP9zdXz/c3V8/3Fzef9ucHf/ +cHJ5/3Z4fP9wcnn/bnB4/29xeP9ydHz/cnR7/2xudv9wc3r/dXiB/3N1fP91d33/bnF7/29xdf91d33/ +bnF6/3F0fv9zdXz/aGt1/25xe/9ucXv/am13/25wd/95fIX/cnR6/2xvef9rbnj/cnV8/3V3ff93eX// +bnB3/21vdv9wcnb/d3l9/3d5gP9tcHX/cnR7/3N1fP9sb3n/bG94/3R2ff9qbHP/eHl+/25xe/9tb3P/ +dnh8/2Zpc/9qbXf/bG51/21vc/9sbnX/cHJ5/3V3ff9ucHf/bW9z/25wd/97fYP/cXN6/3FzfP9rbnf/ +dHeA/25xev9qbXb/bG92/3N2f/9tb3b/cnR7/21wev9sb3n/bG95/21wdf9tb3b/bnB4/2xudf9rbXP/ +bnB3/2lsdf9sbnj/dXd+/3J0e/97fYL/bG90/3ByeP9gY2z/bG51/2xudf9kZ3H/bG95/2xudv9sb3j/ +bG95/2ptdv9wcnn/dHZ9/25weP9ucHj/bnB5/3N1fP9tb3b/cXN7/29ye/9ucHf/bG95/2ptd/9maXP/ +bG95/3V3ff9wc33/dXiB/21vc/9ucXv/bG51/3N1fP9tb3P/bG51/3Bzff9qbXf/am13/25xe/9qbXf/ +bG51/2xudf9wcnn/d3l//2Rncf9sb3n/bnF7/3V3ff9sbnX/dnh8/3V3ff9ucHf/bG51/2psc/9sb3n/ +b3F1/25wd/9wc33/dnmC/2tud/9sb3j/bXB6/2hrdf9xc3r/a254/21wef9vcnz/cnR9/3R2fP9vcnz/ +bnB3/25xe/91d33/b3F1/29xdf9zdXz/ZWhx/2Zpcv9wcnr/bW92/3d5gP9rbnj/cXR+/21wd/90dn3/ +c3Z9/3J1ff91eIH/enyC/3Byef9zdn//c3V8/2xvef9vcnv/cnR7/21wev9sb3j/bnB3/3BzfP92eH7/ +bXB6/3R2fP9rbXT/eHl9/25weP9ucHf/cnR7/3Fzev92eH3/bG94/3N1fP9ucXv/bG51/25wdf9vcXj/ +b3F4/21vdP9sbnb/bW92/3R3gP9ucXv/bG52/2xudf9wcnn/Z2p0/2xudf9tb3P/bG51/3Bzff9zdXz/ +dXh8/3Z5f/9ucHf/a254/25xe/9qbXf/b3J8/29yfP94eoD/bG95/25wd/9ucXv/bnF7/2ptd/9oa3T/ +c3Z//3V4gf9wcnn/eXuB/25xe/9sb3n/bnB3/3V4gf9ucXv/d3l//25wd/92eHz/c3V8/2ptdP9zdXz/ +am13/2Zobv9sbnX/bnB3/2ptd/9gY2z/cHN9/25xe/9vcnz/cHJ8/3J1fv9ydX7/cHN8/3Byef91d33/ +b3F4/25weP90d37/cHJ5/3Byev9xc3v/c3V8/3J0e/9wc3v/cHN8/3N2f/9wcnn/d3qD/3N2f/9ucHf/ +d3l//25xe/91d4D/dHeA/2ptd/9wc33/cHN9/25xe/9wcnn/en2G/3N2fv9vcnz/b3J6/29yfP92eH7/ +dnh//3BzfP9ydHv/cnR5/3p8gv94e4T/cHJ4/3J1fv9ucXv/cHN8/3Bze/92eH7/am13/3h6gP9ucXv/ +c3V8/3l7gf9sb3n/bnB3/3Byef9ucHf/b3F1/3Byef91d33/cHJ5/29xdf9ucHf/eXyG/25xe/9vcnv/ +am13/3J0ev9vcXr/aGt1/2tudv9ydHz/a252/21vdv9tb3f/bW92/2xudf9rbXT/bG51/25xef9rbXT/ +aWx2/2xvef9qbXf/amx0/3F0ev9tb3b/cnR6/2hrcf9sbnf/am13/3Byef9wc33/bG95/3Bzff9tb3X/ +a252/2dqc/9fYWv/ZGZt/2xveP9qbXb/bG95/3F0e/91d3//b3F3/3J1ff9zdXz/bG95/3N1fP9wcnn/ +bG51/3N1fP91d33/bnF7/3N1fP9qbHP/bnF7/2ptd/9zdXz/bG51/2xudf91d33/bnB3/3Byef9wcnn/ +bG95/25wd/9ucHf/dnh8/4CChv9ucHf/dXd9/3N1fP93eX//bnB3/3Z4fP92eHz/bnB3/2xudf9sbnX/ +bG51/2xudf9qbXf/bG95/3V4gP9nanT/bW95/3F0ff9vcnn/dXd9/3N1e/90dnz/c3V7/21vdv9sb3j/ +Zmlz/2FkbP9maXP/ZGdx/2Zobv9iZW7/am13/2lsdv9rbnb/dHZ7/3Byef9zdXv/bG51/2xvef9qbXf/ +bnF5/21wev9rbnf/b3J8/2xvef9nanH/bnF7/2xvef9oa3T/a253/25xef9tb3j/bG51/21vdv9tb3f/ +cHN6/2lsdv9qbXf/ZGdw/3N1fP9nanT/Zmlz/2ptdv9ucHf/b3J8/21vdv9vcnz/bXB6/2hrdf9tb3f/ +bG95/29yfP9qbHP/aGtz/2ttdP9zdX7/bnB5/21vdv9sbnX/b3J8/2hrdf9sbnX/bnB3/21vdv9xc3r/ +dHZ8/3V3fv91d37/bnB3/2ptd/9vcnv/am13/25wd/90dnz/dXd+/2xudf9tb3b/a254/29xeP9nanL/ +aWt1/2ptd/9sb3n/amx0/25xe/9qbHP/Y2Zv/2hrdf9ucXv/bG94/29yfP9nanH/b3F4/2tueP9oa3X/ +cnR7/2ptd/9jZm//Zmlz/2ptd/9qbXf/YGNs/25xe/9qbXf/bW94/25xe/9ydX//cnV//3N2gP91eIL/ +dXd//29xeP9xc3v/dHd//29ye/9tcHn/cnR6/21wev9ucHn/a253/21wev9rbnj/amxz/3V3ff9wcnn/ +bG51/3V3ff9qbXf/b3J8/3J1fv9maXP/bnB3/21vc/9qbXf/Z2p0/3R2ff9sbnX/bW91/3Fzev9rbnj/ +dHZ9/3F0ff9vcnz/dXd9/3F0fP90d3//dXiB/21vdv90d3//b3J7/3R3f/9wcnv/cXR9/2dqdP94eX3/ +cHJ5/29xdf94eX3/amxz/21vc/9tb3P/am13/2xudf9ucHf/dXd9/2xvef9sbnX/am13/3d6g/9nanT/ +a253/2VocP9rbnT/bG93/2RncP9laHD/bG93/2hqcP9pbHP/ZGdx/2hqcP9maXP/amx0/2lsc/9rbnf/ +a210/2ttdP9tcHr/bXB5/2hqc/9ucXn/bW95/3Fzef9rbXT/cHJ5/2xvef9wcnn/cHN9/2xvef9ucXv/ +bnF6/3Byd/9ucHf/bnB3/3Byef94eX3/c3V8/3Byev9ydHv/dXd9/3Byd/9ydXr/dHZ9/2xudv9wcnn/ +bG51/2psc/9zdXz/eHl9/3V3ff91eIH/bnB3/3Byef9wcnn/dnh8/2xvef9wc33/d3qD/3N2f/9zdn// +c3V8/25wd/9ucHf/c3V8/3h5ff9/gYf/bnB3/3Z4fP9wcnn/d3l//25wd/93eoP/eXuB/25wd/9wcnn/ +bG51/25wd/9qbHP/am13/2ptd/94e4X/Z2pz/25xef9ydHv/a254/3Bzff9rbnj/dHd+/3J0ff9tb3f/ +cnR8/21vd/9qbHP/cHN9/3Bzff9sbnX/Zmlz/3Bzff9nanT/am13/21vef9tcHr/bXB6/2ptdf9tb3f/ +b3F5/3Byev9sb3n/cXN6/3J0fP91d33/bG51/3N1fP9wc33/bG51/25wd/9xdHv/cnR6/25wd/9wcnr/ +a252/29xef9sb3n/bnB5/2ttdv91eH//a253/2ptd/9rbnb/b3F4/29yfP9wcnn/bnB5/21vdv9rbnX/ +cnR6/29xev9ydXz/b3F4/21vdv9ydHv/c3V9/2ptd/9vcXj/bW92/25wd/9tb3b/bW92/25wd/9xc3r/ +cHN6/3R2fP93eX7/dXd//3Bzff9tcHr/dHZ8/25wd/9vcXj/b3F6/3R1fP9xc3r/cnR6/3Bzff9wc3z/ +aWx0/2xvdv9tb3X/cHJ6/25wdv93eH3/b3F3/2ttdP9tb3f/c3V7/3R3fP90d37/b3F4/3Z3ff91d33/ +cXN6/3Z4f/9xdH3/bXB6/3Byev9vcnz/cXR+/2hrdf9ydX//cXR9/2lsdv9sb3n/cXN8/25wd/9sb3j/ +bnB6/21wef9nanT/am12/3N1fP9vcXn/c3V7/3N1ev9qbXf/a210/21vdv9vcXj/bnB3/29xdf9zdXz/ +cHJ5/25wd/9wcnn/bG51/3N2f/90d4D/am13/21vc/9ucHf/b3F1/2xvef93eX//b3F4/2xudf9wc33/ +bG94/3R2ff9xc3r/bW92/3V3fP90d33/dHZ9/3Z4fv9wcnb/b3F4/3Fzev9xc3r/c3V8/3N2f/9oa3H/ +eHl9/3Byef9sb3n/d3qD/25xe/9wcnn/bnB3/25wd/9wcnn/cHN9/3d6g/9zdn//cHN9/3N2f/9/gYf/ +cHN9/3N2f/9qbXf/cHJ2/3R2ff9ucHf/cHJ5/3N2f/9ucXv/b3F4/21wev9sb3n/bG95/29xeP9vcnb/ +cHJ5/2xudv9tb3P/dXd7/3R2fP9sbnX/cXR9/25xe/9tcHr/b3F1/25wd/9nanT/Z2p0/2ptd/9qbXf/ +bnB3/3Byef9vcXj/bG51/29xdf9ucHf/dXd9/3Byef9wcnn/cHJ5/3N1fP9ydHr/c3V6/3J0fP9tb3T/ +c3V8/21vc/9sbnX/c3Z//3d6g/91eIH/eXuB/25xe/9zdn//dXiB/3t9g/9wcnn/dXiB/3l7gf93eoP/ +d3qD/3d6g/9wc33/cHN9/25xe/91eIH/gYOK/2xvef91d33/cHN9/3l7gf9ucXv/e36H/3l7gf9zdXz/ +c3Z//2xvef91eIH/cHJ5/3d6g/91eIH/foCG/25xeP9zdn//dnh//25wd/9xc3n/a253/3Z4fv9zdXz/ +b3F4/3Z5gf91eIH/c3V+/3t9g/95e4H/c3Z//3N1fP93eoP/bnB3/3F0ff9wcnn/cnV+/3d6gv9ydX7/ +cHN9/3d5f/95fIL/dXiB/3h6gP95e4H/foCG/3V3ff97fYP/e32D/3N2f/92eYL/eHqA/3d5gP9ydX7/ +dHeA/2ttd/9ucXr/cHJ8/3Fzev9xc3v/eXuC/3J0e/9ucHj/b3F5/3R2fP9xc3r/dHZ8/21veP9sbnX/ +aGt1/3N2f/9sb3n/cXN7/2lsdv9qbXT/cnR7/25xe/9rbnj/b3J7/2xueP9tb3f/bXB6/29xev9tcHj/ +cXN6/3J0e/9zdXz/dHZ9/3BzfP9xc3r/aGt0/21wef9qbHT/a210/2hrdf9sbnf/bG52/25xev9tcHr/ +bW94/2hqc/9ucHf/aGty/2hrdf9pbHP/b3F6/2psdf9oanP/am13/25xe/9sb3f/bW94/2dqdP9ucXn/ +bXB3/3FzeP9vcnj/bnF7/2hrdf9sbnX/bnB4/3F0e/9laG//bnB4/2xvef9sbnX/bG51/3N1fP9sbnX/ +bG95/25xe/9wcnn/bW9z/2xudf9zdXz/bnF7/25xe/9wcnn/a253/2tud/9tb3P/c3V8/29xdf9sbnX/ +bG95/3Bzff9sbnX/bnB3/2psc/9zdn//eXuB/25wd/9ucHf/cHN9/25xe/9ucHf/eXuB/2xvef9qbXf/ +c3Z//25xe/91d33/cHN9/2xvef92eHz/c3Z//3Byef91d33/b3F1/3Byef91d33/cHJ5/25xe/9ucXv/ +Zmhu/3N1fP9qbXf/bG51/3V3ff9nanT/Z2p0/2psc/9qbHP/amxz/3Bzff93eX//am13/25wd/9qbXf/ +eXuB/2ptd/9wc33/am13/2xudf9ucXv/Z2p0/2dqcf9qbXf/amxz/2psc/9iZW7/bG51/2dqdP9sbnX/ +bG51/25xe/9qbXf/am13/3Bzff9zdXz/Zmlz/2xvef9ucXv/amxz/2xudf9sbnX/ZGdx/2Rncf9kZ3H/ +YmVu/2Zpc/9oanP/bG53/2ptd/9vcXj/c3Z//3N2f/9wc33/bnF7/25xe/9zdn//b3J7/3Fze/9tcHr/ +bW91/3Bzff9tb3P/amxz/3V3ff91d33/dXd9/3h5ff9ucHf/b3F1/25wd/92eHz/bnB3/3N2f/92eHz/ +dXd9/3Byef9zdXz/bnB3/25wd/9ucHf/dXd9/3+CjP9wcnn/c3Z//25xe/93eX//bG95/3t9g/94eX3/ +bnB3/3Bzff9qbXf/c3Z//2xvef9wc33/cHJ5/3t+h/9ucHf/cHN7/3R3gP9ucHf/dXiB/25xe/95fIb/ +cnV+/29ye/91eIH/cHN9/25wd/9zdn//c3Z//25wd/9sbnX/cHJ5/2xvef9ucHf/bG51/3Byef91d33/ +bnB3/29xdf9zdXz/c3V8/2xvef91d33/cHN9/3Bzff9qbXf/cHJ5/3N1fP9ucHf/cHJ5/3Byef9zdn// +c3Z//3N2f/9qbXf/bXB5/3N2f/9wc33/cnV+/3d6g/90d4D/c3V8/3N2f/96fIL/enyC/31/hf90d4D/ +cnV+/29yfP95fIX/dHeA/3h6gP9ydX7/cnV+/3Z4fv9tcHn/am13/3R2fP9ucHf/b3F1/3J1fv9zdX7/ +bG95/3J1fv90dnz/d3l9/3h5ff9xc3r/dHZ9/2xudf9wcnr/bnB3/21wev9rbnj/b3F5/3Bzev9zdX7/ +dnmC/3J1f/9sb3n/dnh+/3Byev91eIH/b3J8/3R3f/9ucXv/b3F5/3F0fv91eIH/cXN5/3J1fv9wcnr/ +cXR9/3J0e/90d4D/cXN7/3V3ff9wc3v/cHJ5/3N1ff92eH//am11/3N1ff9ydHz/bG51/2xudf91d33/ +bnB3/3Byef9ucXv/c3Z//25wd/9sb3n/dnh8/25xe/9wcnn/c3V8/2xudf9nanT/bW9z/3Byef9vcXX/ +b3F1/3Bzff91d33/bnB3/25xe/9qbXf/c3Z//3h5ff9sbnX/bG51/2ptd/9sb3n/am13/3N1fP9sbnX/ +Zmlz/2xvef9qbXf/bG95/2dqdP9kZ3H/bnB3/2ptd/9maXP/Z2p0/2Rncf9maXP/Z2p0/2Zpc/9nanT/ +ZGdx/1xfaP9kZ3H/ZGdx/2Rncf9ucHf/YmVu/2Jlbv9maG7/ZGdx/2psc/9nanT/bnB3/2Zobv9kZ3H/ +Z2px/3d6g/9nanT/cHN9/2psc/9qbXf/dXd9/2xudf9nanH/bG95/2xudf9tb3P/Z2px/25wd/9ucHf/ +bG95/25wd/9zdn//c3V8/3Bzff93eoP/eXuB/25xe/93eoP/d3qD/3Byef9wc33/cHN9/2xudf9vcXX/ +c3V8/21vc/9sbnX/cHJ5/29xeP9tb3b/cHJ5/3V4gf91eIH/c3Z//3N2f/9ucXv/d3l//3Bye/90dnz/ +cXN9/2xvef9zdn//bnF7/25wd/93eX//eXuB/3d5f/93eX//bG95/3Byef9vcXX/dnh8/25wd/9zdXz/ +dnh8/3V3ff9zdXz/cHJ5/29xdf9sbnX/cHN9/3V3ff+Agob/bW9z/25xe/9sbnX/dXd9/21vc/93eX// +dnh8/21vc/9sbnX/Z2px/3Bzff9sb3n/cHJ5/25wd/93eX//bW92/29yfP9xc3v/aGt1/2xvef9kZ3H/ +dXd9/2xvef9pbHP/cXR7/25xe/9ucHf/cHN9/3Z4fP9sbnX/amxz/25wd/9ucHf/bG51/2psc/9ucHf/ +c3V8/2xudf9qbXf/c3V8/3V3ff9sb3n/c3V8/3Bzff91d33/bG51/3V3ff9zdXz/b3F1/3N1fP9ucHf/ +c3V8/3N1fP9zdXz/Zmlz/2ptd/9ucHf/bG95/3Bzff93eX//bnF7/29xdf9sbnX/c3V8/3V3ff91d33/ +bnB3/25wd/9ucHf/dXd9/25wd/92eHz/bnB3/2xvef91d33/bW9z/2xudf92eHz/bG51/2xvef9ucXv/ +am13/2ptd/9ucXv/c3V8/3V3ff94eX3/c3V8/3d5f/9vcXX/cHJ5/25wd/9sb3n/am13/2ptd/9wcnn/ +cHN9/3J1fv9wc33/am13/3R2fP9vcXX/cHJ5/2xudf9ydHz/bnB3/2xvef9vcnz/dnmC/25xe/9zdn// +bnF6/3N2fv9qbXf/dnh8/21vdv90dnz/b3F4/2tueP9ucXr/cHN9/2Vocv9tcHr/cnR8/2Jlbv9nanH/ +bnF7/2ptd/9qbXf/amxz/2Zpc/9maG7/Zmhu/2dqdP9maG7/Z2p0/2xvef9maXP/ZGdx/2Rncf9qbXf/ +Z2p0/2dqdP9ucXv/cHN9/2ptd/9sb3n/Z2p0/3Bzff92eHz/bG51/29xdf9ucHf/bnB3/3Byef97fYP/ +c3Z//25xe/91eIH/c3Z//3V4gf9zdn//bG95/3N2f/9wc33/bnF7/3N1fP9tb3P/bnB3/25wd/9sb3n/ +bnF7/2xvef9nanT/bnF7/2xvef9sbnX/dXd9/2Rncf9maG7/ZGdx/2Rncf9maG7/am13/25wd/9nanH/ +Z2p0/2ptd/95e4H/bG95/3N1fP9sbnX/amxz/3V3ff9sbnX/bG51/3Bzff9ucHf/bnB3/2ptd/9ucHf/ +b3F1/29xdf9ucHf/c3V8/25wd/9tb3P/dXd9/3N1fP9nanT/dXd9/3N1fP9qbXf/am13/2psc/9nanT/ +amxz/3Byef9nanH/Zmhv/2tueP9nanT/ZWhy/2ttdf9qbXf/am13/2ptd/9nanT/Z2px/3Bzff9sb3j/ +b3J8/2xvef9sbnX/c3V8/2ptd/9nanT/bnF7/3N1fP91d33/dXd9/2xudf9ucXv/bG51/2xvef9qbXf/ +bnF7/25xe/91d33/dnh8/3Byef9sbnX/bW9z/3N1fP93eX//gIKG/21vc/9sb3n/bG95/3h5ff9sbnX/ +d3qD/3V3ff9qbXf/am13/2Zpc/9zdXz/cHJ5/3N2f/9wc33/en2G/21vd/9vcnz/cnV8/2hqdP9nanT/ +ZGdx/3Byef9ucXv/aWxz/3F0fv9vcnz/bG95/3Bzff9zdn//bW9z/2xudf9zdXz/cHJ5/25wd/9qbXf/ +cHN9/3l7gf9ucHf/bnB3/3l7gf97fof/c3Z//3t+h/97fYP/e32D/3N2f/95e4H/eXyG/3N2f/95fIb/ +eXuB/36Ahv97fYP/foCG/3V3ff91d33/cHN9/3Bzff91eIH/eXyG/25xe/9qbXf/bnB3/3N2f/93eX// +dXiB/2ptd/9sb3n/bG95/3l7gf9wc33/eXuB/3Bzff9ucXv/dXd9/29xdf9sbnX/dnh8/2xudf9wcnn/ +cHN9/25xe/9wc33/c3Z//3V3ff91eIH/eXuB/3V4gf93eX//bnB3/25xe/9ucHf/bnB3/2xudf9nanH/ +bG51/3N1fP9wc33/c3V8/2psc/9zdXz/bG51/2xudf9qbXf/cHN9/3Byef9nanT/bG95/3l7gf9sbnX/ +bW9z/2xudf9sb3n/Zmlz/3Bzff9qbHP/cHN9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/bG95/2xvef9nanT/ +bnF7/3N2f/9wcnn/bnF7/3Bzff9ucXv/cHJ5/3Byef91eIH/cHJ5/3N2f/91d33/cHN9/2xvef9sb3n/ +dXiB/3Byef9wcnn/c3Z//3Bzff9ucHf/bG51/2xudf91d33/c3V8/2psc/9qbHP/am13/2xudf9nanH/ +c3V8/2psc/9maXP/bG95/2xudf9wc33/cHJ5/2xudf9wcnn/c3V8/2xudf9wc33/amxz/2xvef9sb3n/ +bG51/3N1fP9wcnn/Z2p0/3Bzff9zdXz/bnB3/3d5f/9qbXf/bnB3/25wd/9sbnX/bG51/3V3ff94eX3/ +b3F1/25wd/9zdXz/f4GH/2xvef9zdXz/bG95/2xudf92eHz/am13/2ptd/9ucXv/bG95/2psc/9maXP/ +bG51/2dqcf9kZ3H/Zmlz/2xvef9maXP/Z2p0/25xe/9zdXz/Z2p0/3N1fP9ucXv/am13/2ptd/9vcXX/ +b3F1/2xudf9zdXz/bG51/2tud/9ydHv/bXB6/29ye/9wc3z/d3qD/3l8hv95fIb/d3qD/3Bzff97fYP/ +dHeA/3h7gv95e4H/dHZ9/3t9g/91eIH/c3V8/3d6g/97fYP/foCG/36Biv9zdn//e32D/3V4gf93eoP/ +cHN9/3V4gf9zdn//dXiB/3N2f/9wc33/bnB3/25wd/9zdXz/dnh8/4CChv9sb3n/bnB3/25wd/92eHz/ +am13/3N2f/9zdXz/amxz/2ptd/9gY2z/bnF7/2dqdP9ucXv/cHN9/3V4gf9rbXX/bnF7/3R3gP9ydHv/ +c3Z//2ptd/93eX//cnV+/25weP9ydHz/bXB5/2dqcv9sb3n/bnF7/2psc/9maXP/bG95/2xvef9sb3n/ +am13/25wd/91d33/bG95/2xvef91eIH/d3qD/3Bzff93eX//dXiB/3Bzff9ucHf/c3V8/3N1fP9sbnX/ +bG95/2xvef9wc33/cHN9/3N1fP9qbHP/bW9z/2xudf9sbnX/c3V8/3d5f/9ucHf/am13/2xvef9zdn// +eXuB/3d6g/9ucXv/bnF7/3Byef95fIb/c3Z//3l8hv9wc33/dXiB/3l8hv91eIH/dXd9/3t+h/9ucXv/ +dXiB/3V4gf9wc33/bnF7/3N1fP91d33/d3qD/3d5f/9wcnn/dXd9/2dqdP9nanT/amxz/2Zpc/9iZW7/ +YmVu/2xudf9qbXf/cHN9/25xe/9nanT/cHN9/2ptd/9sbnX/am13/3N1fP9ucHf/Z2p0/25xe/93eoP/ +bG51/2ptd/9qbXf/bG95/2ptd/91d33/Z2p0/3Bzff9sb3n/cHJ5/3Byef91d33/Zmhu/3V3ff9zdXz/ +am13/25xe/9zdn//dXiB/3Bzff9ucHf/cHN9/25xe/9sb3n/dXd9/25wd/9wcnn/dnh8/3Byef9ucHf/ +bG95/3d5f/9wc33/cHJ5/25xe/91eIH/bnF7/3N1fP9sb3n/eXuB/3l7gf9wc33/dXd9/3l7gf93eX// +dXiB/36Ahv9zdXz/bnF7/3N2f/9wc33/eXyG/3l8hv92eHz/eXuB/35/g/95e4H/fX6B/3Bzff91eIH/ +dXiB/3Bzff93eoP/c3Z//25wd/93eoP/d3qD/3Bzff95e4H/am13/2xvef9ucHf/bG95/2xvef9zdn// +dXd9/2xvef9ucHf/c3V8/3+Bh/9sbnX/dXd9/2xudf9qbXf/eHl9/25wd/9sb3n/dXiB/3V4gf9zdXz/ +bnB3/2xvef9ucHf/cHJ5/25wd/9zdn//c3Z//3N1fP9+gIb/e36H/3V3ff9+f4P/fX6B/3Z4fP91eIH/ +c3Z//2xudf9sbnX/cHN9/2xvef9rbnj/dHZ8/3R2fP9ydHr/enyC/36Ahv97fYP/eXuB/3V4gf9wc33/ +enyD/3N2fv90dn7/cXN6/21vdv91d33/bG51/2dqdP9wcnn/cHN9/3Z4fP93eX//bnB3/3N2f/9sb3n/ +c3V8/2xvef9ucXv/bnB3/3N2f/9zdn//cHN9/25wd/9ucHf/c3Z//3l7gf+Bg4r/bnB3/25xe/9wc33/ +eXuB/3Bzff93eoP/d3qD/3Byef9zdn//Zmlz/3V3ff9wc33/dXd9/3N2f/95fIX/bG51/29xeP90d37/ +am13/3Bzff9sb3n/eHl9/3N1e/9rbnf/cXN7/25xe/9sb3n/dXiB/3V4gf9ucXv/bG95/3N2f/9ucXv/ +c3V8/2ptd/9sb3n/dXd9/25wd/9ucXv/dXiB/3l8hv9wc33/dXd9/3Bzff9zdXz/bnB3/3V3ff9wcnn/ +bG51/25wd/9ucHf/cHN9/3Bzff91d33/bW9z/2xudf9nanT/am13/25xe/9ucHf/Z2p0/2Rncf9qbHP/ +ZGdx/2dqdP9maG7/YmVu/2dqcf9maXP/cHJ5/2dqcf9sb3n/Z2px/2psc/9sb3n/amxz/2dqdP9zdXz/ +Z2p0/25xe/9zdXz/bG95/2xudf9ucHf/c3V8/3V3ff93eX//c3V8/3Z4fP9ucHf/cHJ5/3Byef9vcXX/ +am13/25wd/9ucHf/cHJ5/3Z4fP9wcnn/bG51/3N1fP9ucHf/bnB3/25wd/9zdn//bnF7/2psc/9ucXv/ +eXuB/29xdf9ucXv/bnB3/2xvef9qbXf/d3l//2xvef9zdn//dXiB/3Bzff9sb3n/cHN9/2Zpc/9zdn// +dXiB/2ptd/9wc33/dXiB/3N2f/9zdn//cHN9/3V4gf9zdn//c3Z//3t9g/95e4H/e32D/3t9g/95e4H/ +c3V8/3N1fP95e4H/cHJ5/2xvef9ucHf/cHN9/25wd/9sb3n/amxz/3N2f/9zdn//b3F1/25wd/9wcnn/ +bG95/25wd/9wc33/bG51/2psc/9ucXv/am13/3Bzff9ucXv/bG51/25wd/9zdXz/bnF7/3d6g/9zdXz/ +c3Z//3V4gf91eIH/e32D/3V4gf9zdXz/e32D/3d6g/9wc33/e36H/3Z4fP91eIH/dXd9/3V4gf9zdXz/ +eXuB/3t+h/9wc33/cHN9/3N2f/+Bg4r/bnB3/3V3ff9ucHf/bG51/3h5ff9vcXX/bG95/3V3ff91d33/ +bG51/2xudf9sbnX/Z2p0/2psc/9maXP/bG95/2dqcf9maXP/cHN9/3d5f/9nanT/cHN9/3N1fP9qbXf/ +bG51/2xudf9zdXz/c3V8/3l7gf9zdn//cHJ5/3Z4f/9wc3r/aGt1/2ptd/9wc33/amxz/2ptd/9qbXf/ +am13/3N1fP9rbnX/cHN8/3Fzev9wcnn/dXd9/3Byef9ucHf/c3V8/3Bzff9zdXz/dXd9/2xvef9zdXz/ +bnB3/3N1fP9ucHf/cHJ5/25wd/9zdn//dXiB/3N2f/9sb3n/bnF7/3N2f/91eIH/g4WM/3V3ff91d33/ +e32D/3+Bh/97fYP/f4GH/4WHjf97fYP/eXyG/3N2f/9+gYr/foCG/36Ahv99foH/gIKJ/3N1ev9zdX3/ +dXd+/2lrdf9ucXv/am13/3N1fP91d33/a254/3N1fP9xc3n/amxz/3Bzff9wc33/amxz/2Rncf9qbXf/ +bG51/2ptd/9qbHP/bnB3/3V3ff9sbnX/amxz/3V3ff93eX//cHJ5/3V3ff9ucXv/cHN9/2xudf9qbXf/ +bG95/2dqdP9sb3n/bG51/25xe/9wc33/cHN9/2dqdP9qbHP/am13/25wd/91d33/dXd9/3N1fP9ucHf/ +bG95/3Bzff9zdn//bnF7/2xvef9sb3n/bG95/3d5f/9sb3n/dXd9/25xe/9wc33/c3Z//29xdf9ucHf/ +dnh8/2psc/91d33/dXd9/25wd/9qbXf/bnB3/2xvef9wc33/bnF7/2dqdP9qbXf/Zmhu/2ptd/9sb3n/ +bG51/2dqdP9qbXf/bW9z/25wd/92eHz/cHJ5/2Zpc/9wc33/bG95/2xudf9nanT/bnF7/25wd/9qbHP/ +bnB3/3d5f/9tb3P/cHJ5/25wd/9ucHf/am13/3V3ff9qbXf/cHN9/3Bzff9ucHf/bnB3/3Bzff9maXP/ +c3Z//3N1fP9sbnX/cHJ5/3N2f/9wcnn/bnB3/25wd/9wcnn/cHJ5/3Byef91d33/bnB3/25wd/92eHz/ +c3V8/2xudf9qbXf/cHN9/2xudf9sbnX/bnB3/3Byef9qbXf/Z2p0/2Zpc/9ucXv/am13/2Zpc/9maXP/ +Zmlz/2Jlbv9nanH/Z2p0/2Rncf9maXP/bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/ +bW9z/2ptd/9ucXv/am13/25xe/9sb3n/bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/ +bnB3/3Byef91d33/bW9z/21vc/9wcnn/f4GH/21vc/9wc33/am13/25wd/91d33/bG95/2xudf9zdXz/ +bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/bnB3/3d5f/9wcnn/bnB3/3h5ff93eX//bG51/3V3ff93eX// +bnB3/25wd/9ucHf/bnF7/3Bzff93eoP/eXyG/3N2f/97fYP/cnV//21wev9wc33/c3Z//2xvef9ucXv/ +bnB3/25wd/91d33/cHJ3/3V4gP91eIH/c3Z//3d6g/9zdn//bG95/3N2f/9zdn//dXiB/3d6g/9wc33/ +cHN9/3Bzff9ucXv/bnF7/3Bzff9wc33/dXiB/3N2f/9zdn//bnB3/21vc/9zdXz/dXd9/35/g/9ucHf/ +bG95/3V4gf93eX//bnF7/3d5f/93eoP/c3Z//25xe/9qbHP/cHN9/3Byef91d33/c3V8/3l7gf9sbnb/ +cXR8/3V4gv9wcnz/eXyG/3V3ff99foH/fH6F/3J1f/92eID/cXN6/2hrdf9wc33/dXd9/21vc/9nanH/ +cHJ5/3l7gf93eX//dXd9/3V4gf95e4H/c3V8/25xe/91eIH/eXyG/3N2f/95fIb/c3Z//3d6g/9wc33/ +cHN9/25xe/9sb3n/bG95/2xvef9zdn//c3Z//3d5f/9vcXX/bnB3/25wd/9wcnn/dXd9/3N1fP9ucXv/ +b3F1/2xvef9wc33/d3l//3N2f/9wcnn/cHJ5/2xvef91d33/bnF7/3d5f/9wcnn/d3qD/3d6g/9zdn// +c3Z//35/g/91d33/fX6B/31+gf91eIH/dXiB/3l7gf9+gIb/f4GH/36Ahv97fYP/fX6B/3d5f/95e4H/ +foCG/3d5f/93eX//dnh8/3N2f/91eIH/foCG/3t9g/9ucXv/d3qD/3N2f/9zdn//cHJ5/3V4gf9zdn// +cHN9/3V4gf95fIb/cHN9/25xe/9sb3n/bnF7/2ptd/92eHz/Z2p0/3Byef9ucXv/bG95/2xudf9zdXz/ +amxz/3V3ff9zdXz/am13/25xe/91eIH/c3Z//25xe/9ucXv/cHJ5/25xe/9ucXv/dXd9/2xvef9sb3n/ +c3V8/25wd/9sbnX/bG51/3Bzff9sbnX/bnB3/2psc/9wcnn/bW9z/2ptd/9nanT/cHN9/25xe/9nanT/ +ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/ +dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/ +bnB3/2xudf9zdXz/d3l//2psc/9qbXf/cHJ5/3+Bh/9sbnX/bnF7/2ptd/9vcXX/dnh8/3Byef9vcXX/ +dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/bG51/2xudf9wc33/bG51/21vc/94eX3/d3l//21vc/9zdXz/ +c3V8/2ptd/9sbnX/bG51/25wd/9wcnn/d3l//3N2f/9ucHf/c3V7/3N1fP9vcXj/bG95/3N2f/9ucXv/ +c3Z//2xvef9ucXv/c3Z//21wev92eYD/eHqB/3V3gP97fof/c3Z//3N2f/97fYP/eXuB/3d6g/97fYP/ +cHN9/3V4gf95e4H/cHN9/3V4gf91eIH/c3V8/3d6g/95e4H/dXiB/25wd/9wcnn/cHN9/3Bzff97fYP/ +b3F1/25wd/93eX//c3Z//25xe/93eX//dXiB/25xe/9ucXv/am13/3Bzff9ucXv/dXiB/3Bzff94e4X/ +b3F4/25xev91d33/aGt0/2xvef9sbnX/c3V8/3N1fP9tcHr/dXd9/3J0ff9wcnn/d3l//3V3ff9sb3n/ +am13/3Bzff9ucHf/bnF7/2xvef9ucXv/d3l//3Byef9sb3n/c3Z//3l8hv9wc33/eXyG/2xvef9wc33/ +bG95/3Bzff9ucXv/bG51/2xvef9sbnX/c3V8/3N1fP93eX//b3F1/29xdf9sbnX/bG95/3V3ff9zdXz/ +am13/2psc/9sbnX/bG95/25xe/9qbXf/Z2p0/2psc/9nanT/dXd9/2ptd/9zdXz/bG51/2xvef9qbXf/ +bG51/2xudf9zdXz/Z2p0/25xe/9qbXf/amxz/2Zpc/9qbXf/am13/25xe/9sb3n/am13/25xe/9sb3n/ +bG95/3Bzff9sbnX/bG51/2xudf9sbnX/bG95/3Bzff9sb3n/amxz/3Bzff9sbnX/bG51/2psc/9wc33/ +cHJ5/25wd/9ucXv/d3qD/3Byef91eIH/bG95/25xe/9qbXf/dXd9/2xvef9wc33/cHJ5/3N1fP9ucXv/ +cHN9/2xvef91eIH/dXiB/2psc/9sbnX/c3V8/2xvef9ucHf/cHJ5/25wd/9wcnn/bnB3/3V3ff9wcnn/ +bnF7/3N1fP9zdXz/am13/2xudf9wc33/am13/2psc/9maXP/bnF7/21vc/9ucHf/bnB3/3V3ff9wcnn/ +bG51/2psc/9ucHf/bG95/3Bzff91d33/bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn// +bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/ +bnB3/2xvef9sb3n/dXd9/3l8hv9ucHf/bnB3/3N2f/+BhI3/c3V8/3N2f/9sb3n/c3V8/3l7gf91eIH/ +cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/cHJ5/25xe/9ucHf/d3qD/3N2f/9wc33/e36H/36Biv9zdn// +eXyG/3l7gf9wc33/c3Z//25xe/9qbXf/bW9z/3V3ff9zdXz/bnB4/3N1fP9xc3j/bnB2/25wd/91d33/ +cHJ5/25xe/9ucHf/bnF7/25xe/9tb3f/cXR9/3N1fP9vcXn/d3l//3N1fP9qbHP/eHl9/3Z4fP92eHz/ +dXd9/2xudf9ucXv/cHN9/2xudf9ucXv/bG95/2xudf9ucXv/dXd9/2xudf9ucHf/b3F1/3N1fP9wcnn/ +e32D/25wd/9tb3P/c3V8/3N1fP9ucHf/dXd9/3V3ff9wcnn/cHJ5/2psc/9sbnX/bG95/3Bzff9wc33/ +dXd9/2xudf9tcHr/c3V8/2xvef9zdXz/b3F1/3Byef90dnz/bnB3/3J0ev9wc3v/bG95/3V4gf9zdn// +bG95/2xvef9ucXv/c3Z//25xe/9nanT/cHJ5/3d5f/9vcXX/Z2px/3V3ff94eX3/bnB3/3l7gf9sbnX/ +bG51/21vc/9zdXz/bnF7/25wd/9ucHf/bG95/3Byef9wcnn/dXd9/25wd/9vcXX/b3F1/25wd/91d33/ +bnF7/25xe/9sbnX/am13/25xe/9wc33/bG95/2dqdP9sbnX/amxz/3Z4fP9ucHf/bnF7/25wd/9wc33/ +bnB3/25wd/9vcXX/dnh8/25wd/92eHz/cHJ5/21vc/9ucHf/bnB3/3Byef9zdn//dXiB/3N2f/93eoP/ +cHN9/3Bzff9wc33/bG95/2xudf9sbnX/bG51/25wd/9wc33/bnF7/2Zpc/9sb3n/amxz/2dqdP9kZ3H/ +bG95/2ptd/9maXP/bnB3/3V3ff9sbnX/bG95/2xudf9ucXv/Z2p0/3N1fP9nanT/bG95/2xvef9ucXv/ +am13/2xvef9nanH/dXd9/3Byef9maXP/am13/25xe/9ucHf/am13/2xudf9tb3P/bG95/2psc/9ucXv/ +bnF7/2ptd/9wc33/cHN9/2Zpc/9sbnX/cHN9/2ptd/9qbXf/Zmlz/2ptd/9sbnX/Z2p0/2ptd/91d33/ +bnF7/21vc/9nanH/bG51/2dqdP9qbXf/bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/ +am13/2psc/9sb3n/bG51/2xvef9wc33/am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/ +c3Z//25wd/9qbXf/Z2p0/3Bzff95fIb/cHJ5/3N1fP9zdn//g4WM/3N1fP9wc33/am13/25wd/9zdXz/ +cHJ5/2xudf94eX3/cHJ5/2xudf9qbXf/am13/2xudf9sbnX/am13/3N1fP9ucXv/b3F1/3d5f/91d33/ +am13/3N1fP9wc33/Z2p0/2xvef9sbnX/bnB3/2ptd/94eX3/c3Z//25xe/92eYP/c3V8/21vdv9ucHf/ +cHN9/2xvef9sbnX/bG51/2xvef9rbnj/bXB6/3J1fv9ydX7/dHeA/3d6g/91eIH/cHN9/3t+h/97fYP/ +e36H/3l8hv9wc33/eXuB/3d6g/9ucHf/cHN9/25xe/9wcnn/dXiB/3d6g/9wc33/bnB3/25wd/9wc33/ +cHN9/3t9g/9sb3n/bW9z/3V3ff91d33/cHJ5/3l7gf94eX3/cHJ5/25xe/9qbXf/bnB3/25wd/91eIH/ +d3qD/3p8gv9xc3v/cHN9/3R3fv9ucHf/bnF7/25wd/9zdn//c3Z//25xe/9zdXv/bnF7/25wd/9zdn// +dXd9/25wd/9qbHP/bG51/3N2f/9sb3n/am13/2xvef93eX//bnB3/2ptd/9zdn//eXuB/3Byef95fIb/ +bnF7/25xe/9wcnn/c3Z//3Bzff9ucHf/bnB3/3Bzff9wcnn/cHJ5/3V4gf9ucXv/bnB3/29xdf9ucXv/ +dXd9/3N2f/9zdn//bnB3/2xvef9zdXz/dnh8/3V3ff9ucHf/cHJ5/25wd/92eHz/b3F1/3Byef9sbnX/ +am13/2ptd/9sbnX/am13/3N1fP9nanT/cHJ5/2psc/9nanT/Z2p0/2dqdP9qbXf/bG95/25xe/9qbHP/ +am13/2ptd/9nanT/Z2p0/2Zobv9kZ3H/Z2p0/2xudf9qbXf/cHN9/3N1fP9sbnX/bnB3/2xudf9ucHf/ +Z2p0/3N2f/91eIH/bnB3/3Byef93eX//bnB3/3Byef9sbnX/cHJ5/2ptd/93eX//bG95/2xvef91eIH/ +c3Z//29xdf9wcnn/amxz/3V3ff9ucXv/amxz/25wd/9ucXv/am13/3Byef9tb3P/bG51/2xvef9qbHP/ +bnF7/25xe/9sbnX/dXd9/3Bzff9nanT/bG51/25xe/9sbnX/amxz/2Rncf9nanT/Z2p0/2Zpc/9maXP/ +dXd9/25xe/9qbHP/YmVu/2xudf9qbXf/bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/ +cHJ5/25xe/9wcnn/d3l//29xdf91eIH/dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/ +cHN9/3V4gf9ucXv/bG95/2ptd/9wc33/d3l//2xudf9ucHf/c3V8/35/g/9ucHf/bnB3/2dqdP9sbnX/ +cHJ5/25xe/9sbnX/cHN9/3Byef9tb3P/bG95/2xudf9vcXX/bnB3/2xvef9zdn//bnF7/2xvef95fIb/ +eXuB/25xe/95e4H/eXuB/3N1fP91eIH/d3qD/3N2f/9wc33/e32D/3N2f/9tcHn/d3qD/3N1ff9tcHr/ +cHN9/3d6g/9zdn//bG95/25wd/9ucHf/c3V8/3Byev9xdH7/dnmC/3R3gP97fof/eXuB/25xe/95fIb/ +d3l//3l7gf95e4H/bnB3/3d5f/93eoP/c3V8/3l7gf93eoP/c3Z//3l8hv93eoP/dXiB/3N1fP9zdXz/ +c3Z//3V4gf95fIb/cHN9/2xvef91d33/dXd9/3Byef93eX//eHl9/3Byef9ucHf/Z2p0/2xvef9ucXv/ +dXd9/3Z4fP91d33/a211/2ttdv9zdXv/a210/25xe/9tb3P/bnF7/25xe/9tb3f/cXR9/3J0ff9sb3n/ +c3Z//3V3ff9ucXv/am13/25xe/9sb3n/amxz/2Zpc/9sb3n/dXd9/2ptd/9kZ3H/bG95/3Byef9nanH/ +c3V8/2Zobv9sbnX/bG51/2ptd/9nanT/ZGdx/2Zpc/9maXP/ZGdx/2Zpc/9wcnn/Z2p0/2Jlbv9maXP/ +Z2p0/3Bzff9sb3n/bnF7/2psc/9qbXf/bnF7/3V3ff9wc33/am13/25wd/9qbHP/dnh8/25wd/9wcnn/ +bnF7/3Bzff9zdXz/cHN9/3N1fP95e4H/bnB3/3V3ff9ucXv/bG95/2xvef9ucXv/bG51/25wd/91d33/ +bnB3/25xe/9ucXv/am13/25xe/9sbnX/Z2p0/2xudf9nanT/Z2p0/2dqdP9sb3n/YmVu/2dqcf9nanH/ +ZGdx/2Jlbv9ucXv/Z2p0/2Zpc/9sbnX/c3V8/2xudf9sb3n/bG51/2xvef9kZ3H/c3V8/2xudf9sb3n/ +c3Z//2xvef9vcXX/bnB3/2psc/91d33/bnB3/2xudf9qbXf/cHJ5/2ptd/9wc33/bG51/2xudf9ucHf/ +bG51/25xe/9ucXv/am13/3N1fP9wc33/Zmlz/2dqcf9qbXf/Z2p0/2psc/9maXP/am13/2ptd/9sbnX/ +bG51/3Z4fP9sbnX/bnB3/2dqdP9ucHf/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn// +am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/ +c3V8/2psc/9wcnn/am13/2dqdP9qbHP/bnB3/3d5f/9tb3P/bG51/3V3ff9+f4P/bnB3/3Byef9ucHf/ +b3F1/3V3ff9wc33/bG95/3Bzff9zdn//cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/3l7gf95e4H/ +g4WM/36Ahv97fYP/foCG/36Ahv9zdn//dXiB/3V4gf9wcnn/bnB3/3h5ff91d33/a254/3x+hf9ydX7/ +b3J6/3R3gP95e4H/cHN9/2xvef9vcXX/bnF7/3N2f/9tcHr/b3F4/3Fzev9sbnX/dnh8/3V3ff9nanT/ +dXd9/25xe/9zdXz/bnF7/2dqdP9wc33/cHN9/2xudf9sb3n/amxz/2dqcf9nanT/Z2p0/2ptd/9qbHP/ +Z2px/2xvef9nanT/c3Z//2Zpc/9kZ3H/Z2p0/2xvef9qbHP/cHJ5/3Byef9maXP/bG51/2dqdP9qbHP/ +am13/3Bzff9wc33/dnh//2ttdf9qbXX/cXN6/2ptd/9ucXv/Z2px/2ptd/9rbXf/bnF4/3J1fv91eID/ +bnF6/3l7gf91eIH/bnB3/2Rncf9sb3n/cHJ5/29xdf9qbHP/cHJ5/3Z4fP9nanT/Z2p0/2ptd/91d33/ +b3F1/3d5f/9tb3P/bG51/2xvef9wcnn/bnB3/2ptd/9sb3n/am13/2ptd/9nanT/cHJ5/2dqdP9nanT/ +Z2p0/25xe/91d33/bG95/2xvef9nanH/bG51/2xvef9zdXz/bnF7/2psc/9qbXf/Zmlz/3Bzff9qbXf/ +am13/2xvef9nanT/Z2px/2xudf9nanH/bG95/2dqdP91d33/bG51/2Zpc/9maXP/am13/2Zpc/9qbXf/ +cHJ5/2dqdP9sb3n/cHN9/2dqdP9qbXf/Z2px/2dqdP9qbXf/Zmlz/2dqdP9nanT/am13/2Rncf9qbHP/ +amxz/2psc/9kZ3H/cHN9/2ptd/9qbHP/am13/3Byef9qbHP/am13/2psc/9maXP/YGNs/25xe/9nanH/ +am13/3Bzff9sbnX/am13/2psc/9nanT/bnF7/2ptd/9zdn//c3Z//3l8hv93eX//fn+D/3N2f/9zdn// +eXyG/3V3ff93eoP/d3qD/25xe/95e4H/c3Z//2ptd/9ucHf/dXiB/3N2f/9wc33/bG95/25xe/9sb3n/ +bnB3/3Byef97fYP/c3Z//25xe/9nanT/bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/ +bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/ +cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/bG51/25xe/91d33/bW9z/2xudf9wcnn/fX6B/2xvef9qbXf/ +Z2p0/2dqdP9ucXv/bnF7/2ptd/9sb3n/bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9qbXf/ +Z2p0/3Byef9wcnn/ZGdx/25wd/9sb3n/Zmhu/2xvef9maXP/cHJ5/21vc/91d33/dXd9/2xudf93eYD/ +b3J5/2ptd/9sb3n/bnF7/2xvef9tb3P/bW9z/25wd/9zdXz/bnB3/3Bze/9zdn3/b3F1/3V3ff91d33/ +Z2px/3d5f/9ucXv/dnh8/3Byef9ucHf/dnh8/3N1fP9sb3n/bnF7/2xvef9qbHP/bnF7/25xe/9sbnX/ +b3F1/25wd/9zdn//bnB3/3t9g/9zdXz/bnB3/3V3ff9zdn//bnF7/3V4gf91d33/cHN9/25wd/9ucHf/ +b3F1/2xudf9wcnn/dXd9/3h5ff9ucHf/bnF6/3V2fP9tb3T/cHN9/25wd/9wc33/cHJ5/29xeP9xdHz/ +cnR6/2xudf9zdXz/bnF7/2ptd/9kZ3H/bG95/25xe/9ucHf/bG95/3Bzff95e4H/bnF7/25wd/9sb3n/ +dnh8/2xudf93eX//bG51/2xudf9qbXf/am13/2xudf9maXP/am13/2ptd/9qbXf/am13/3N1fP9qbXf/ +Zmlz/2psc/91d33/dnh8/3N1fP91d33/bG51/2dqcf9ucXv/cHN9/3Byef9sbnX/bnB3/2ptd/91d33/ +bnB3/3V3ff9sb3n/cHN9/25wd/9ucHf/am13/25wd/9ucHf/d3l//29xdf9sbnX/bG51/2ptd/9wc33/ +cHN9/3Bzff9sb3n/bG51/3Bzff9qbXf/bG95/2xudf9nanT/bG95/2xudf9nanH/Z2p0/2ptd/9nanT/ +Z2p0/2dqdP9sbnX/Z2p0/25xe/9qbXf/amxz/3Bzff93eX//bnB3/3Byef9sb3n/c3Z//2ptd/9zdn// +cHJ5/3Bzff97fYP/c3Z//3d6g/9zdn//dXd9/3d6g/9zdn//bnB3/3Byef9ucHf/cHJ5/3N1fP9ucHf/ +b3F1/3N1fP9tb3P/cHJ5/3N1fP9sbnX/bnF7/3N1fP9qbXf/bnB3/3V3ff9zdXz/c3V8/25wd/9vcXX/ +cHJ5/2xudf9qbXf/c3V8/25wd/9ucHf/Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/ +cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/ +bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/bG51/2psc/9wcnn/dnh8/21vc/9sbnX/cHJ5/3l8hv9ucHf/ +dXd9/25wd/9sb3n/dXd9/3V3ff9sb3n/bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/ +d3qD/3V4gf93eoP/d3qD/3V4gf93eoP/eXuB/3Byef91eIH/c3Z//3Byef9vcXX/eXuB/3Z4fP9tb3b/ +d3qD/3N1fP9ucHf/bnF7/3N1fP9zdXz/b3F1/29xdf9vcXX/cHJ5/25wd/9tb3j/b3J5/21vc/91d33/ +dXd9/2dqdP91eIH/bnF7/3N1fP9nanT/Zmlz/25wd/9qbXf/Z2p0/2dqdP9maXP/ZGZs/2Zobv9nanT/ +Zmhu/2Rncf9maG7/Zmlz/2Rncf9wc33/Zmlz/2Rncf9sb3n/bG95/2psc/91d33/cHN9/25xe/9qbXf/ +am13/2psc/9sbnX/bG95/3V3ff9ydHz/bG5z/21vdP9wc3z/amx0/2xvef9qbXf/am13/2ptd/9rbXT/ +a252/21wef9sbnX/dnh8/3Byef9ucHf/amxz/25wd/9ucXv/bnB3/2xudf9ucHf/c3V8/2Zpc/9nanH/ +bG51/3N1fP9ucHf/d3l//2xudf9vcXX/bG51/2xvef9wc33/bnF7/3l7gf93eoP/cHN9/25xe/94eX3/ +bnB3/2xudf9qbHP/dXd9/3Z4fP91d33/eHl9/25wd/9vcXX/c3V8/3Byef9zdXz/bnB3/25wd/9sbnX/ +eHl9/29xdf91d33/bG95/2ptd/9qbXf/bG51/2dqdP9sb3n/ZGdx/3d5f/9qbXf/ZGdx/2Rncf9sb3n/ +cHJ5/3Byef9wcnn/cHJ5/25xe/9zdn//bnF7/3Bzff9ucHf/b3F1/3N1fP9sbnX/bG51/2xvef9zdXz/ +b3F1/3Byef9sbnX/b3F1/2xudf9zdXz/bnF7/3Bzff91eIH/e32D/3N2f/9zdn//c3V8/3d6g/9qbXf/ +cHN9/25wd/9ucHf/eHl9/3N1fP9ucHf/bnB3/25wd/9sb3n/cHJ5/2ptd/9sb3n/bG95/3Byef9zdXz/ +am13/2xudf9wcnn/bW9z/25wd/9sb3n/amxz/3V3ff9zdXz/bG51/2xudf9zdXz/cHJ5/2xvef9tb3P/ +am13/3N1fP9ucHf/bnB3/3V4gf9ucXv/c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/ +cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/ +bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/cHJ5/2xudf9ucHf/cHJ5/3h5ff9vcXX/bnB3/3Bzff97fof/ +c3Z//3V4gf9ucHf/bnF7/3l7gf91eIH/am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/ +c3V8/3N1fP9zdXz/dnh8/3Z4fP9zdXz/dXd9/3N1fP9sbnX/bnF7/2ptd/9wc33/bG95/3d6g/91d33/ +bnB3/3l6gP9wc3v/bW91/3Bzff9ucXv/bnF7/2dqdP9sb3n/am13/3Byef9ucHj/bW94/3Byef9ucHf/ +dXd9/3V3ff9sb3n/d3qD/3V4gf97fYP/c3Z//2xvef91eIH/c3Z//3N2f/9zdn//dXiB/2xvef9wc33/ +dXd9/25wd/9vcXX/cHJ5/3N1fP9sbnX/e32D/25wd/9qbXf/dXd9/3V3ff9tb3P/dXd9/25xe/9sb3n/ +Zmlz/2Rncf9maG7/amxz/2dqdP9ucHf/am13/2Zobv9pa3H/cHN5/21vdP9zdXz/bG51/3Byef9wcnn/ +a211/2tudv9ucHn/aGt0/3V3ff9sb3n/Z2p0/2Zpc/9ucXv/am13/2xudf9maXP/bG95/3Bzff9kZ3H/ +YmVu/2xudf9zdXz/bG51/3V3ff9ucHf/bnB3/25xe/9ucHf/bnB3/2psc/92eHz/cHJ5/25wd/9sb3n/ +d3l//3Byef9sbnX/bG51/3Byef92eHz/c3V8/3h5ff9ucXv/bnB3/3V4gf91eIH/dXiB/3Bzff9zdn// +cHJ5/3d5f/9sb3n/dXd9/3Bzff9wcnn/cHJ5/21vc/9ucHf/cHN9/2ptd/93eoP/bnB3/2psc/9nanH/ +b3F1/3N1fP9ucHf/cHJ5/3Byef9ucHf/dXd9/25xe/9ucXv/amxz/21vc/9wc33/bG51/29xdf9wcnn/ +cHJ5/25wd/9ucHf/bnB3/21vc/9qbXf/bG95/25wd/9ucHf/c3V8/3h5ff9sbnX/c3V8/2dqdP91d33/ +ZGdx/25xe/9qbXf/bnB3/3h5ff9wcnn/bG51/21vc/9qbXf/am13/2xudf9sbnX/bG95/2xvef9ucXv/ +c3V8/2dqdP9sbnX/am13/2dqcf9nanT/Z2p0/2Zobv9qbXf/am13/2Rncf9qbHP/am13/2xvef9sb3n/ +Z2px/2Zpc/9wc33/am13/2xudf91d33/cHJ5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/ +cHN9/3Byef9wc33/c3Z//25xe/9ucHf/bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn// +d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/d3qD/3d6g/9wc33/c3V8/3N1fP95fIb/cHN9/3Bzff9zdn// +e36H/3Bzff9zdn//bG95/2xudf91d33/c3Z//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/ +cHJ5/25xe/9zdn//dXiB/3d5f/95e4H/d3qD/3d6g/93eX//cHJ5/3N2f/93eoP/cHN9/2ptd/91d33/ +cHN9/2hrcv91eID/b3J7/2xueP9zdn7/cHN9/3Byef9ucHf/bnF7/2xvef9ucXv/cHJ6/21wef9tb3f/ +bG51/3N1fP9wc33/Zmlz/3V3ff9nanT/cHN9/25xe/9nanT/c3V8/25xe/9sb3n/bnF7/25xe/9qbXf/ +bG51/25xe/9nanH/Zmhu/2dqcf9nanT/ZGdx/3V3ff9qbHP/Z2px/25wd/9sb3n/Zmhu/25xe/9qbXf/ +bnF7/2Zpc/9qbHP/amxz/2xvef9sb3n/cHJ5/3Byef9oa3X/bG51/29ye/9tcHr/c3Z//25wd/9ucXv/ +dHZ9/21vd/9tb3b/b3F6/2xudf92eHz/dXd9/25wd/9maXP/cHJ5/2ptd/9sbnX/bG51/25wd/9zdXz/ +am13/2RmbP9tb3P/dXd9/2xudf92eHz/bW9z/2xudf9zdXz/bG51/2xudf9qbHP/dXd9/2xudf9ucHf/ +bnF7/3V4gf9wc33/am13/2dqdP9zdn//dXd9/3Bzff92eHz/bnF7/2ptd/9zdn//c3V8/3Byef9sbnX/ +cHJ5/2xudf91d33/am13/3Bzff9zdXz/cHJ5/3Byef9sbnX/amxz/25wd/9nanT/dXd9/2dqdP9kZ3H/ +ZGdx/2dqcf9qbXf/amxz/25xe/9qbHP/am13/3N1fP9sb3n/bnF7/21vc/9sbnX/bnF7/2xudf9sbnX/ +bG95/2xvef9qbXf/bG51/2xudf9vcXX/b3F1/25wd/9ucXv/bnF7/3V4gf95e4H/bnF7/3d5f/9wcnn/ +d3l//2dqdP9zdn//cHJ5/3Byef93eX//bnF7/2xvef9qbXf/b3F1/29xdf9vcXX/bG51/29xdf9sbnX/ +c3Z//3N2f/9ucXv/bnB3/3Bzff9zdn//c3Z//3N2f/9ucXv/dXiB/3V4gf9sb3n/bnB3/3Bzff9wc33/ +cHN9/3Byef9wcnn/d3qD/25xe/9sb3n/eHl9/3Byef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/ +ZGdx/2xudf9nanT/bG51/2xudf9sbnX/Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX// +Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/bnB3/3N1fP9zdn//Z2p0/29xdf9vcXX/dXd9/2xudf9ucHf/ +dXd9/3t9g/9ucHf/cHJ5/2ptd/9nanT/bnF7/3Bzff9maXP/bG51/3Bzff9nanT/am13/2ptd/9sb3n/ +am13/2psc/9nanH/am13/2xvef9wc33/cHJ5/2xvef9wc33/bnF7/2psc/9sb3n/bG95/3Bzff9qbXf/ +d3l//3d5f/9oa3L/d3l//3N1e/9sb3n/b3J8/3d6g/91eIH/cHN9/3d6g/9zdn//dnmC/3J1fP9rbnf/ +aWx2/2dpb/9qbXf/Z2p0/2Rncf9ucHf/Zmlz/2dqdP9nanT/ZGdx/25wd/9kZ3H/Zmhu/2dqdP9qbXf/ +ZGdx/2Rncf9nanT/Z2p0/2dqcf9nanH/Z2p0/2Jlbv9wcnn/amxz/2psc/9zdXz/bnF7/2xudf92eHz/ +bnF7/2xvef9maXP/amxz/2psc/9ucXv/bG95/3Z4fP91d33/bG95/2xveP9ydH3/cXN7/3V4gf9wcnn/ +c3Z//3R3gP9ucHf/bG93/21wef9oa3X/dXd9/25xe/9sbnX/bG51/3Byef9sb3n/bnF7/3N1fP9wc33/ +c3Z//2xvef9nanH/bnB3/3d5f/9sb3n/d3qD/2xvef9wc33/dXiB/25wd/9sb3n/bG51/3V3ff9ucHf/ +bG51/2xvef91d33/bnF7/2ptd/9maXP/c3V8/3N1fP9wcnn/dnh8/2xudf9sbnX/c3V8/25xe/9wc33/ +bnF7/3Bzff9zdXz/dXiB/25xe/91eIH/dXiB/3Bzff91eIH/dXiB/3Bzff97fYP/c3Z//36Biv91d33/ +am13/2xvef9ucXv/cHN9/2xvef9zdXz/bnB3/3Bzff91d33/cHJ5/3Bzff9qbHP/amxz/25xe/9qbHP/ +Z2px/2xvef9sb3n/bG51/2xudf9nanT/bG51/2psc/9sb3n/am13/2xvef91d33/dnh8/2ptd/9zdXz/ +bG51/25xe/9kZ3H/bG95/2xudf9sbnX/dXd9/2xvef9qbXf/am13/29xdf9ucHf/b3F1/2xudf9ucHf/ +b3F1/3N1fP9zdXz/cHJ5/3N1fP92eHz/cHJ5/3Byef9zdXz/bG51/3V3ff9zdXz/amxz/21vc/9ucXv/ +bG95/2xvef9nanT/Z2px/2ptd/9nanH/Z2px/25xe/9nanT/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/ +ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/ +dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3N1fP9qbXf/ +bG51/3V3ff97fYP/b3F1/3N1fP9sbnX/bG51/25wd/9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn// +c3V8/21vc/9ucHf/bG51/3Byef9zdXz/dnh8/3Z4fP9zdXz/dnh8/3N1fP9ucHf/c3V8/3Byef9zdXz/ +am13/3h5ff93eX//b3F1/3p9g/9vcnr/bW92/25xe/9zdXz/cHN9/2xudf9sb3n/am13/2xudf9qbXb/ +a254/2tud/9sb3n/c3V8/3Byef9vcXX/d3l//3V3ff9zdXz/cHJ5/29xdf92eHz/cHJ5/25wd/9wcnn/ +cHN9/25wd/9ucHf/c3V8/3N1fP9tb3P/bG51/2xvef9nanT/c3V8/2xudf9sb3n/dXd9/3Byef9ucHf/ +d3l//3Byef9zdXz/amxz/25wd/9sb3n/dXd9/3N2f/93eX//dXd9/3J1fv9sb3j/bW94/2psc/9wc33/ +amxz/2ptd/9sb3n/aGtz/2ttdf9vcnz/bW92/3h6gP9zdn//c3V8/25wd/9zdXz/Zmlz/2Rncf9gY2z/ +Zmhu/2Zpc/9gY2z/XWBq/2Rncf9sb3n/ZGdx/3Byef9kZ3H/am13/2dqdP9iZW7/Zmhu/2Jlbv9nanT/ +amxz/2psc/9sbnX/c3V8/25xe/9qbXf/Z2p0/2xvef9ucXv/c3V8/3V3ff9sbnX/bnB3/3N1fP9sb3n/ +cHN9/25xe/9wc33/cHJ5/3V4gf9zdXz/c3Z//3V4gf9zdXz/c3Z//3N2f/9ucXv/d3qD/25wd/95e4H/ +am13/2ptd/9qbXf/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/eXyG/3N2f/91eIH/bnB3/25wd/92eHz/ +bnB3/29xdf91d33/c3Z//25xe/9wcnn/am13/2xvef9ucHf/bG95/2xvef9ucXv/dXd9/3Z4fP9vcXX/ +dnh8/2ptd/9ucXv/YGJo/2psc/9qbXf/bG51/3d5f/9tb3P/bW9z/2xudf9vcXX/bG51/2xudf9ucHf/ +bG51/29xdf91d33/dXd9/3N1fP9sbnX/dXd9/25xe/9qbXf/cHN9/2psc/9sb3n/Z2p0/2Rncf9maG7/ +ZGdx/2Zpc/9nanT/Zmhu/2dqcf9sb3n/am13/21vc/92eHz/cHJ5/2xudf9sbnX/Zmlz/2psc/9nanT/ +am13/2xudf9maXP/bnF7/2dqdP9tb3P/cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/ +bG51/3Byef9iZW7/am13/2ptd/9sb3n/Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/ +Z2p0/2Zpc/9sb3n/c3Z//2ptd/9ucXv/am13/2psc/9ucXv/cHN9/2dqdP9sb3n/bnB3/25wd/9wcnn/ +cHJ5/3N1fP9sbnX/am13/2ptd/9ucXv/c3V8/3h5ff9zdXz/cHJ5/3Bzff9ucXv/bnB3/3N1fP9ucXv/ +d3l//2xvef92eHz/eXuB/2xudf96fIP/bnF5/2xudf9sb3n/c3V8/25xe/9nanT/Z2p0/2xudf9sbnX/ +bW93/21veP9vcXn/am13/3Byef9wcnn/am13/3V4gf9wc33/c3V8/2xvef9sbnX/c3V8/3Byef9wcnn/ +cHJ5/3V3ff9wcnn/bnB3/25wd/9sb3n/bG95/2ptd/9nanT/Z2p0/3Bzff9sbnX/amxz/3N2f/9sb3n/ +Z2p0/25xe/9qbXf/bnF7/2dqcf9tb3P/bG51/3h5ff9wc33/c3Z//3d5f/9ucXv/a251/2lsdv9nanT/ +bnF7/2psc/9qbXf/bnF7/21vd/9ucXv/cHN8/2xudf93eX//cHJ5/21vc/9tb3P/c3V8/3N1fP9wcnn/ +bG95/2xvef9zdn//am13/2dqdP9wc33/eXuB/3Bzff97fYP/c3V8/3N2f/9zdn//bG95/2xvef9sbnX/ +c3V8/25wd/9ucHf/bG51/3V3ff9ucXv/bG51/2psc/9wc33/cHN9/3N1fP93eoP/bnB3/29xdf9wc33/ +bG95/2ptd/9qbHP/amxz/2Zpc/9sb3n/bG51/2xvef9ucXv/am13/2xvef9qbXf/bG51/3V3ff9sbnX/ +d3l//2ptd/9maXP/Zmlz/2ptd/9qbXf/Zmlz/2psc/9maG7/Z2p0/3Byef9qbHP/bG95/2dqcf9nanT/ +bG95/2Jlbv9gY2z/Zmlz/2Zpc/9maG7/Zmhu/2dqdP9kZ3H/Z2px/2dqcf9qbXf/am13/3Bzff9wc33/ +bG51/3N1fP9sbnX/c3V8/2Vmav9ucHf/bG51/2xudf95e4H/b3F1/29xdf9qbHP/bW9z/21vc/9ucXv/ +bnB3/3Byef9ucHf/d3l//3V4gf95e4H/dXiB/3l7gf9wc33/dXiB/3d6g/9wc33/eXuB/3l7gf9ucXv/ +cHJ5/3Bzff9ucXv/cHN9/25wd/9ucHf/c3Z//25xe/9ucXv/eXuB/3V4gf9wc33/cHJ5/2xvef9wc33/ +c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/ +e36H/3N2f/97fYP/cHN9/3t9g/9zdn//c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/ +dXd9/2xudf9ucHf/cHN9/3t9g/9ucXv/cHN9/25wd/9sbnX/bnF7/25xe/9qbHP/bG51/25wd/9ucHf/ +bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/cHN9/3N2f/93eoP/c3Z//3V4gf91eIH/cHN9/25xe/9wc33/ +cHJ5/3Z4fP9wcnn/d3l//3t+h/9ucXv/fX+G/3Fze/9rbnf/cHJ5/3N1fP9zdXz/bG95/2ptd/9qbHP/ +aGpx/2ptdP9sb3n/cnV+/21wev91eIH/c3Z//3Byef9/gYf/d3qD/3l7gf9zdn//cHN9/3V4gf9zdn// +c3Z//3t9g/93eoP/eXuB/3V4gf9zdn//dXiB/3N2f/9sb3n/bnF7/2xvef95e4H/cHN9/3N2f/95fIb/ +cHN9/29xdf9wc33/bG95/3N1fP9maXP/bW9z/3Byef92eHz/dnh8/3V4gf94eX3/cnR7/21veP9vcXj/ +a21z/3Z4fP9sbnX/bnF7/2xvef9rbnX/b3J6/3F0ff9qbXf/dXiB/3N2f/9sb3n/cHJ5/3Bzff9zdn// +cHN9/2xvef9ucHf/dXd9/2psc/9qbHP/cHJ5/3N1fP9vcXX/dnh8/25wd/9wcnn/c3V8/2ptd/9wcnn/ +cHJ5/3d6g/9wc33/bnF7/2xvef91d33/c3V8/21vc/9tb3P/dXd9/3Bzff9zdXz/c3Z//2xudf9nanT/ +bnF7/2ptd/9qbXf/Z2p0/2psc/9qbHP/bG95/2xudf9wc33/bnF7/2ptd/9ucXv/bG51/2dqdP9ucXv/ +Zmlz/3V4gf9qbXf/Zmlz/2psc/9tb3P/bG51/2psc/9sbnX/am13/25xe/91d33/b3F1/3Byef9vcXX/ +cHJ5/3Z4fP9ucHf/am13/3Byef9wcnn/bG51/2ptd/9sbnX/am13/2ptd/9nanT/cHN9/25wd/91d33/ +dXd9/2xudf91d33/bG51/3V3ff9nanH/cHJ5/2xvef9sb3n/eXuB/25wd/9ucHf/Z2px/21vc/9tb3P/ +c3V8/2psc/9tb3P/bG51/3V3ff9wcnn/dnh8/3Bzff92eHz/cHJ5/25xe/91eIH/bnF7/3V4gf9wc33/ +am13/25wd/9wc33/bnF7/3Bzff9vcXX/bnB3/3V4gf9ucXv/cHN9/3d5f/9wc33/cHJ5/2xvef9qbXf/ +cHN9/25xe/9ucXv/c3V8/2ptd/9zdn//bnB3/2xudf91d33/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/ +cHJ5/3V3ff9tb3P/dXd9/2dqdP9zdXz/am13/2xvef9sb3n/am13/2Rncf9sb3n/am13/2Jlbv9qbHP/ +am13/3N1fP9qbHP/bG51/3Byef9+gIb/cHJ5/3Byef9sbnX/bG51/25wd/9wc33/Zmlz/2ptd/9qbXf/ +am13/2ptd/9ucXv/dXd9/3Byef9vcXX/b3F1/3N1fP9zdXz/eXuB/25wd/9zdXz/cHJ5/2xvef9sb3n/ +cHJ5/2ptd/91d33/bG51/3V3ff95e4H/b3F1/36Bif9ydHv/bG52/3N1fP9zdXz/dnh8/3V3ff9ucHf/ +bG51/25wd/9rbnj/cXN6/3V3gP9wcnn/cHN9/3N2f/9zdXz/f4GH/25xe/95e4H/cHN9/3N1fP95fIb/ +d3qD/3Bzff93eoP/cHN9/3N2f/9ucXv/bnF7/3Bzff9wc33/bnF7/3Bzff9wcnn/d3qD/3Bzff9wc33/ +d3qD/3V4gf9wc33/dXiB/3V4gf91eIH/am13/3Bzff9wc33/eXuB/3N2f/95e4H/eXuB/3Z4gf9vcnz/ +b3J4/21wev91d33/bnB3/3Bzff91eIH/b3J5/3Bzff9xc3r/bnB3/3d5f/9zdn//bG95/2xvef9ucXv/ +dXd9/3Byef9qbXf/bW9z/3V3ff9nanH/bG51/25xe/9ucXv/bW9z/3Z4fP9sbnX/bG95/25xe/9nanT/ +bG51/2ptd/9wc33/bG51/25wd/9ucHf/cHJ5/25xe/9sbnX/bG51/3V3ff9zdXz/dXd9/3l7gf9wcnn/ +bnB3/3V4gf9wc33/cHN9/2xvef9ucHf/am13/25xe/9sb3n/c3Z//3N2f/9sb3n/bnB3/25wd/9sbnX/ +c3V8/2xudf97fYP/bnB3/2xudf9qbXf/am13/25wd/9nanT/am13/2dqdP9sb3n/dXd9/2psc/9qbXf/ +Z2p0/2xudf91d33/bG51/2dqdP9wcnn/cHN9/2xudf9qbHP/am13/2ptd/9sb3n/Z2p0/2xvef9nanT/ +bG95/2xvef9maXP/am13/2psc/9ucXv/YmVu/2xudf9nanT/am13/3V3ff9qbXf/am13/2Rncf9sbnX/ +am13/2ptd/9ucHf/bnB3/2ptd/91d33/c3Z//3V3ff9wc33/dXd9/3Bzff9wc33/c3Z//25xe/91eIH/ +cHN9/2xudf9ucHf/bnB3/25wd/9wcnn/bG51/2xudf9wcnn/bG51/3Byef94eX3/bG51/2xudf9nanT/ +ZGdx/2xudf9sb3n/cHJ5/3Byef9tb3P/bnF7/2psc/9qbHP/cHN9/25xe/9sbnX/am13/25xe/9ucXv/ +am13/2xvef9wc33/bW9z/3V3ff9nanH/c3V8/25xe/9wcnn/c3V8/3N1fP9qbHP/bnB3/25xe/9qbHP/ +amxz/2psc/9ucXv/Zmlz/2psc/9sb3n/dXiB/2ptd/9ucXv/am13/2xudf9sbnX/c3V8/2Zpc/9qbXf/ +bnB3/25wd/9zdXz/c3V8/3N1fP9sb3n/bG51/2ptd/9wcnn/cHJ5/3l7gf9ucHf/dXd9/25wd/9zdXz/ +bG51/25xe/9sbnX/c3V8/2ptd/92eHz/dXiB/2xudf97fYT/cXN6/2dqc/9qbXf/am13/3Bzff91d33/ +bnB3/2xvef9sb3n/bG94/21wd/91d3z/bG51/3Byef9ucHf/bG51/3l7gf9qbXf/dXd9/2xudf9nanH/ +d3l//2ptd/9sb3n/bnF7/2ptd/9ucXv/amxz/2xudf9qbXf/bG95/3Byef9ucHf/bG51/3V3ff9sb3n/ +bnB3/3d6g/9wc33/bnF7/3N2f/9ucXv/bnF7/2dqdP9sb3n/bnF7/3l7gf91eIH/d3qD/3Z4fP9ydHv/ +a252/2xudP9qbHP/c3V8/21vc/9wcnn/cHJ5/25wd/9sbnX/a212/2Nmb/9sb3n/Z2p0/2Zpc/9sbnX/ +bG95/3V3ff9ucXv/bG95/29xdf93eX//Zmlz/25wd/9wcnn/c3V8/3Byef97fYP/c3V8/3Bzff91eIH/ +bG95/25xe/9wcnn/dXiB/3Bzff9wcnn/bnB3/25xe/91d33/bnB3/2xudf91d33/dXd9/3N1fP94eX3/ +bnB3/29xdf92eHz/cHJ5/3Byef9qbHP/b3F1/2psc/9ucHf/bnB3/3N2f/91eIH/cHN9/3Bzff9ucHf/ +cHJ5/3Bzff9sb3n/dXiB/25wd/9ucHf/b3F1/25wd/9wcnn/bG51/3Byef9sbnX/bnB3/3Z4fP9tb3P/ +bG51/2psc/9qbXf/d3l//2xudf9kZ3H/am13/25xe/9qbXf/Z2px/2dqcf9maXP/bG95/2dqdP9ucXv/ +bnF7/25xe/9wc33/bG51/25xe/9tb3P/dnh8/2Zpc/9ucXv/am13/2ptd/93eX//bG95/2xvef9qbHP/ +bnB3/29xdf9zdXz/bG51/2ptd/9qbXf/cHN9/25wd/9wc33/bnF7/3N1fP9wcnn/bnB3/25xe/9qbXf/ +bG95/25xe/9nanT/am13/2ptd/9qbHP/Z2p0/2psc/9nanT/bG95/2Zpc/9sb3n/dnh8/21vc/9sbnX/ +bG51/2xudf9ucHf/bnB3/3Byef9wc33/bnB3/3V3ff9ucHf/bnB3/3V4gf91eIH/cHN9/25xe/91eIH/ +d3qD/3Byef91eIH/c3Z//25wd/92eHz/amxz/3Z4fP9wcnn/c3V8/3N1fP9zdXz/amxz/25wd/9wcnn/ +bG51/2ptd/9sbnX/c3V8/2psc/9vcXX/cHJ5/3V3ff9wcnn/cHJ5/25wd/9ucHf/bnB3/3V3ff9nanH/ +bG95/2xvef9qbXf/c3Z//3N2f/95e4H/dXiB/3Bzff9zdn//dXiB/3d6g/+Bg4r/d3l//35/g/97fYP/ +fn+D/3V3ff95fIb/c3Z//3l7gf9ucHf/dXiB/3V4gf9tcHr/fYCH/3V3fv9wc3v/dXeA/3Bzff97fYP/ +e32D/25xe/9ucHf/cnR7/21wev9tb3f/a254/2Zobv9maXP/Z2px/2dqcf91d33/amxz/2xvef9sbnX/ +Z2px/3Byef9sb3n/bG95/2xvef9sbnX/bnB3/29xdf9vcXX/bnF7/25xe/91eIH/bnF7/25wd/9ucXv/ +cHN9/3Byef95e4H/cHN9/3N2f/91eIH/c3Z//25xe/9sb3n/c3Z//3d6g/97fYP/d3qD/3l8hv95e4H/ +dXiB/3F0fv9ucHf/aGt0/2xvef9sbnX/bG95/2hrdf9rbXf/a254/3F0fP9ucXv/en2D/3l7gf9wc33/ +cHN9/3Bzff9wc33/bnB3/29xdf9vcXX/dXd9/2Zobv9tb3P/bnF7/25xe/9sbnX/dXd9/25wd/9wcnn/ +cHJ5/2dqdP9qbXf/bW9z/3Z4fP9sbnX/amxz/2dqdP9qbXf/bnF7/2Zpc/9maXP/cHN9/3N1fP9sb3n/ +dXd9/2psc/9maXP/bG95/2xudf9qbHP/Zmlz/2dqdP9maXP/bG51/2dqdP9ucXv/bnF7/2ptd/9qbXf/ +Zmlz/2dqcf9qbXf/Zmlz/3N1fP9nanT/amxz/2psc/9sbnX/am13/2dqdP9maXP/Zmlz/2psc/9zdXz/ +bG51/2xudf9iZW7/Z2p0/3N1fP9qbXf/Zmlz/2ptd/9sb3n/am13/2dqcf9kZ3H/Zmlz/25xe/9nanT/ +am13/2xvef9qbXf/cHN9/2Zpc/9nanT/Z2p0/25xe/9gY2z/Zmlz/2Rncf9iZW7/cHJ5/2xvef9nanT/ +Z2px/2ptd/9qbHP/am13/21vc/9sbnX/Zmlz/3Bzff9nanT/bnF7/2xvef9ucXv/bG95/2ptd/9ucXv/ +bG51/2xvef9sb3n/Zmlz/2dqdP9qbXf/Zmlz/2dqdP9maG7/Zmlz/2ptd/9nanH/am13/3Byef9kZ3H/ +Z2px/2Zobv9iZW7/Zmlz/2xudf9qbXf/am13/2xudf9ucXv/amxz/2psc/9ucXv/bG95/2dqdP9nanH/ +bG95/3Bzff9sbnX/Z2p0/2xvef9qbHP/c3V8/2dqdP91d33/bnB3/3Z4fP92eHz/bnF7/2psc/9sbnX/ +cHJ5/21vc/9wcnn/cHJ5/3V3ff9ucHf/bW9z/3V3ff93eX//bnF7/25xe/9sbnX/bG51/3Byef9wc33/ +Zmhu/25wd/9ucHf/Z2p0/2ptd/9wcnn/c3V8/2xudf9vcXX/bnB3/3Byef9zdXz/eXuB/2xudf91d33/ +dXd9/3V3ff9ucHf/c3V8/25wd/91d33/bnB3/3d6g/91eIH/bnB3/3t9hP9wc33/a212/3Bzff9wc33/ +dXiB/3l7gf9wc33/cHJ5/3N2f/9ucXv/b3F6/3V3ff9tb3P/dXd9/25wd/9ucHf/d3qD/25wd/9zdXz/ +bnB3/21vc/92eHz/bnB3/3Byef9wcnn/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/25wd/9tb3P/ +bG51/2ptd/9qbHP/cHN9/2xvef9qbXf/bnF7/2dqdP9qbHP/YmVu/2Zpc/9qbXf/Z2p0/2Zobv9qbXf/ +Z2pz/2dqc/9pbHP/a21y/2ttdP90dnz/bnB3/2xvef9tcHr/bnF7/2ptd/9maXH/ZWhy/2xvef9sb3n/ +YGNs/2Zobv9kZmz/d3l//3N2f/9ucXv/c3V8/3t+h/9sb3n/c3V8/3V4gf95fIb/eHl9/31+gf9zdXz/ +dXiB/3d6g/9ucXv/cHN9/3Bzff93eX//bnB3/2xvef9ucHf/bG95/3Z4fP9qbXf/bG95/3V3ff94eX3/ +cHJ5/3V3ff9wcnn/am13/3N1fP9tb3P/am13/2Zpc/9nanT/am13/21vc/9sbnX/c3V8/3V3ff9zdn// +c3Z//3Byef9zdXz/eXuB/3Bzff95fIb/c3V8/3N2f/9wc33/c3Z//3V4gf92eHz/e32D/3V3ff9zdn// +eXyG/3N2f/9zdn//bnF7/3V4gf93eoP/bnF7/2ptd/9zdXz/c3V8/3Byef9vcXX/bG51/2xvef91d33/ +bG51/3Byef9ucXv/am13/25xe/9qbHP/am13/2dqdP9ucXv/XWBq/2ptd/9nanT/Zmlz/3N1fP9sb3n/ +am13/2dqdP9sb3n/bG51/25wd/9tb3P/bW9z/2dqcf92eHz/cHJ5/3V3ff9zdXz/cHJ5/3Bzff9wc33/ +c3Z//3Bzff9zdn//c3Z//2xvef9qbHP/bnB3/25wd/9zdXz/bW9z/2xudf9zdXz/b3F1/3N1fP94eX3/ +bnB3/2xudf9vcXX/Z2px/2psc/9wcnn/bnB3/25wd/9ucHf/cHN9/2dqdP9sbnX/cHN9/3N1fP9sb3n/ +amxz/25xe/9ucXv/bG51/2ptd/9ucXv/bG51/3Z4fP9qbHP/dnh8/25xe/9zdn//c3Z//3Bzff9qbHP/ +bnB3/3N1fP9tb3P/bnF7/2ptd/91d33/bnB3/25wd/9wcnn/dnh8/3N1fP9wcnn/bnB3/25wd/9wc33/ +dXiB/2dqdP9wcnn/c3V8/2xvef9wc33/cHN9/3N2f/9ucHf/b3F1/29xdf9zdXz/cHJ5/3l8hv9sb3n/ +dXiB/3N1fP92eHz/bW9z/3Byef9ucHf/dXd9/25wd/95fIb/d3l//21vc/96e4H/b3F5/2Zpcv9sbnX/ +am13/3Byef94eX3/bnB3/25wd/9zdXz/cHJ3/3Fzev91d3v/bW9z/3N1fP9zdXz/b3F1/3t9g/9ucHf/ +cHJ5/25xe/9sbnX/c3V8/2ptd/9sb3n/am13/2ptd/9qbXf/bW9z/2xudf9sbnX/b3F1/3N2f/9ucXv/ +bnB3/2xvef9sb3n/bnB3/3Z4fP9wcnn/bnB3/3Byef9ucHf/bnB3/2psc/9wcnn/c3Z//3V4gf9wc33/ +e32D/3N2f/90d4D/bnF7/25xef9rbnf/c3Z//3Byef9wcnn/bnF7/3N2fv9xdHv/bG95/2hrdf9wc33/ +bG95/2Rncf9qbXf/bG51/3h5ff9zdXz/cHJ5/25wd/93eoP/am13/25xe/9ucXv/cHN9/2xvef9zdn// +bG95/25xe/9zdXz/bG51/25wd/9wcnn/d3l//2dqdP9iZW7/Zmlz/2ptd/9zdXz/am13/2xudf9wcnn/ +d3l//25wd/91d33/bnB3/2ptd/91d33/b3F1/2psc/9nanH/b3F1/2xudf9vcXX/b3F1/3Byef91d33/ +bnB3/25wd/9sbnX/bW9z/3N1fP9nanT/d3l//2xudf9qbXf/amxz/2psc/9nanH/Zmhu/2dqdP9kZ3H/ +YmVu/2xudf9gY2z/Zmhu/2BjbP9maXP/bG51/2Rncf9iZW7/Zmlz/2Rncf9maXP/Zmhu/2Rncf9nanT/ +bnF7/2dqdP9sb3n/bnF7/2xvef9ucXv/Z2p0/25xe/9ucXv/c3V8/2Zobv9wcnn/bnB3/2Zpc/91d33/ +bnF7/25wd/9qbHP/bnB3/2ptd/9sb3n/amxz/2dqdP9iZW7/bnF7/2dqdP9zdXz/bnF7/2xvef9wc33/ +bG95/2xvef9sbnX/am13/2ptd/9maXP/YmVu/2xvef9ucHf/c3V8/21vc/9sbnX/cHJ5/2ptd/9wc33/ +dXd9/25wd/9wcnn/bW9z/2Zobv9qbXf/dXiB/25xe/9sb3n/bG95/3N2f/9wcnn/cHN9/3V3ff91d33/ +bnF7/2xvef91d33/bnF7/2xudf9qbXf/am13/2xudf91d33/am13/3N1fP9ucXv/bG95/2xvef9qbXf/ +ZGdx/2dqcf9maXP/Z2p0/2xvef9qbXf/Z2p0/2dqcf9qbHP/bG95/3N1fP9wc33/bG95/2ptd/9tb3P/ +bnB3/3Bzff9maG7/bG51/2xudf9sbnX/bnF7/25xe/91eIH/cHJ5/3N1fP9ucHf/dXiB/3N2f/95e4H/ +c3Z//3d6g/9wc33/eXuB/25xe/9wcnn/c3Z//3Z4fP9ucHf/eXuB/3d5f/9wcnn/fH2C/3F0fP9wcnz/ +c3Z//3N2f/93eoP/eXyG/3Bzff91d33/eHuF/3N1e/9ydHn/cHN9/2tud/9qbXf/am13/2dqcf9zdn// +bG51/25xe/9ucXv/bG51/3N1fP9sb3n/bG95/2xudf9vcXX/bG95/25wd/9sb3n/bnF7/25wd/9zdn// +bG95/25wd/9ucHf/cHJ5/29xdf92eHz/bnF7/2xvef9ucXv/cHN9/25xe/9sb3n/c3Z//3N2f/91eIH/ +cHN9/3l7gf9zdn//c3Z//25weP9ucXn/bG51/3Byef9vcXX/bG95/25wd/9zdXz/cXN6/2lsdP9ucHf/ +dnh8/25xe/9nanT/bG51/25wd/92eHz/c3V8/3N1fP9sbnX/dnh8/2xudf9ucHf/bnF7/3N1fP9ucHf/ +dXd9/25wd/9wc33/dXiB/25xe/9sb3n/cHN9/3d6g/9ucHf/bG95/3Byef9wc33/eXuB/25xe/9wcnn/ +cHN9/3V4gf9ucHf/dXd9/25wd/9wcnn/dXiB/25xe/9sb3n/Z2p0/2xvef9qbXf/bnB3/29xdf9ucHf/ +dXd9/25wd/9ucHf/bnB3/25wd/9wc33/am13/3d5f/9ucHf/bnB3/25wd/9sb3n/cHJ5/3N1fP9wc33/ +bnB3/25wd/93eX//bnB3/25wd/9ucHf/dXd9/3h5ff9zdXz/bG51/3Byef9wcnn/cHN9/3Byef9ucHf/ +bnB3/3N1fP9sbnX/am13/2xvef9qbXf/c3V8/2Zpc/9ucXv/am13/2xvef9iZW7/am13/2dqdP9kZ3H/ +cHN9/2xvef9sbnX/amxz/3Bzff9sbnX/am13/3N2f/9zdXz/bnF7/3l8hv9zdn//eXyG/3V4gf9zdn// +c3Z//25xe/9wc33/bnB3/3Byef9zdXz/bG51/2dqcf9wcnn/c3V8/3N1fP9sbnX/bG51/2xvef9qbXf/ +c3V8/3V3ff9sb3n/bG95/2ptd/9iZW7/Zmlz/25xe/9qbXf/am13/2Zpc/9sb3n/amxz/2psc/9ucXv/ +bnF7/2dqdP9maXP/bG95/2Zpc/9maG7/ZGdx/2dqcf9kZ3H/bG95/2Jlbv9qbXf/am13/2Zpc/9nanT/ +Zmlz/2BjbP9kZmz/ZGdx/2Rncf9qbXf/Z2px/2Zpc/9kZ3H/Zmhu/2ptd/9wc33/c3V8/2xudf9nanT/ +bG51/3Bzff9sb3n/Zmhu/25wd/9ucHf/bG51/25xe/9wc33/dXd9/29xdf9ucHf/bnB3/3N2f/9ucHf/ +eHl9/3Byef91d33/b3F1/3V3ff9ucHf/bnB3/25wd/9zdXz/am13/3V4gf91d33/bG94/3d5gP9tcHj/ +aGt1/2ptd/9qbXf/bG95/3N1fP9sbnX/am13/25xe/9vcXf/cHJ5/3V3e/9wcnn/cHN9/3V4gf9ucXv/ +e36H/25xe/9wc33/cHN9/25xe/93eX//bnF7/3Byef9ucHf/cHJ5/25xe/9ucHf/bnB3/3Bzff9ucXv/ +c3Z//3Bzff9zdXz/bnF7/2xvef9ucHf/d3l//2xvef9wcnn/am13/2xudf9ucXv/bW9z/3V3ff9ucHf/ +bnF7/25wd/94eX3/cHJ5/3N1fP9qbXX/aGt1/2hrdP9ucXv/bG51/2ptd/9qbXf/bnF7/2tueP9kZ3D/ +ZWhx/3J1fP9ucXv/am13/2xudf9ucHf/c3V8/3N1fP9ucXv/bG95/3Z4fP9qbHP/cHJ5/25wd/9zdXz/ +bnB3/3d5f/9wcnn/bnF7/3Bzff9nanT/bnF7/25xe/93eoP/bnB3/2xvef9nanT/bnB3/3N1fP9qbHP/ +amxz/2ptd/91d33/bG95/25xe/9sbnX/bG51/25xe/9nanH/Z2px/2Zpc/9maXP/YmVu/2dqdP9qbHP/ +bG95/3N1fP9qbHP/am13/2dqdP9maXP/cHN9/2dqdP9zdXz/bG51/2xudf9wc33/bnB3/21vc/9tb3P/ +c3V8/2xvef9sb3n/e36H/25wd/9zdXz/bnB3/3V4gf97fYP/cHN9/3Byef9zdn//c3Z//3d6g/9wcnn/ +bnB3/3Byef95e4H/cHJ5/3V4gf95e4H/c3Z//3l7gf9zdXz/eXyG/3d6g/95fIb/bG95/3V4gf9zdXz/ +cHN9/3l8hv95e4H/dnh8/3N2f/9+gIb/dXiB/3V4gf9tb3P/bW9z/2dqcf92eHz/bnB3/3d6g/9zdXz/ +am13/2xvef9qbXf/Zmlz/2dqcf9nanH/am13/2dqdP9nanT/bG95/3Bzff9ucHf/bW9z/25wd/9tb3P/ +am13/3N1fP91d33/bG95/2ptd/9ucXv/ZWZq/2dqcf9wcnn/bnB3/25wd/9vcXX/c3V8/25wd/9ucXv/ +d3l//3V3ff9ucXv/bG95/3V3ff9wcnn/bnF7/2xvef9ucXv/cHJ5/3V3ff9sb3n/d3l//3d5f/91eIH/ +eXuB/3d6g/9ucXv/c3Z//3t9g/97fYP/fX6B/3Bzff9zdn//c3V8/3Bzff93eoP/dXiB/3V4gf9sb3n/ +Z2p0/25wd/9ucXv/cHJ5/2dqdP9ucXv/bnB3/25wd/9wcnn/cHN9/3Z4fP9sbnX/bG51/21vc/9wc33/ +bG95/3N1fP9ucXv/dXd9/2xudf92eHz/bnF7/3Byef91eIH/c3Z//29xdf95e4H/d3l//3N1fP97foX/ +dXd9/3J0e/9zdn//dXd9/31+gf97fof/dXiB/3V4gf91eIH/dHZ9/3J1f/92eH//bnF7/3N1fP9wcnn/ +bW9z/3l7gf9sbnX/bnB3/3Byef9ucHf/c3V8/25wd/9ucHf/bG51/2ptd/9qbHP/Z2p0/2psc/9qbXf/ +bG51/3N1fP9tb3P/amxz/2ptd/9sb3n/am13/3d5f/9sbnX/bG95/2ptd/9qbXf/cHN9/2ptd/9zdXz/ +cHJ5/25wd/9ucHf/c3V8/2xvef91d37/cHN4/3R2ff9ydX3/eHqA/3V4gf9zdn//b3J8/29yfP9vcnj/ +aGpy/2hrdP9zdXz/bG95/2Zpc/9sb3n/am13/3V3ff9wc33/cHN9/25xe/94eX3/am13/3Bzff91eIH/ +c3Z//2xvef91d33/b3F1/2xvef9ucXv/Z2p0/25xe/9wc33/eXyG/3Byef9ucHf/am13/3N2f/93eoP/ +bnF7/25wd/9wcnn/dnh8/25wd/9ucXv/bW9z/2xudf9zdXz/bG51/2psc/9qbXf/bG95/2ptd/9ucHf/ +bG51/25wd/93eX//am13/25wd/9sbnX/am13/25xe/9nanT/c3V8/2ptd/9sbnX/cHJ5/2xudf9sbnX/ +bG51/3N1fP9tb3P/bnB3/3V3ff9sbnX/am13/2dqdP9ucXv/dXd9/2xvef9nanT/am13/2xudf9wc33/ +amxz/2psc/9nanT/c3V8/2xudf9zdXz/dXd9/3Byef9zdn//bG95/3N2f/9ucXv/cHN9/2dqdP9ucXv/ +bnB3/2dqdP9wc33/bG95/25wd/9ucHf/d3l//3Byef9wcnn/Z2px/2xudf9iZW7/bnF7/2psc/91eIH/ +bG95/2psc/9maXP/Z2p0/2Zobv9maG7/ZGdx/2Zobv9iZW7/YGNs/2Rncf9nanT/ZGdx/2Rncf9kZ3H/ +YGNs/2Rncf9sb3n/bG95/2dqdP9maXP/Z2p0/11fZf9iZW7/bG95/2xvef9qbXf/bG51/2xvef9qbXf/ +bnF7/3Z4fP94eX3/cHJ5/2xudf9zdn//cHN9/3N1fP9ucHf/bnF7/3Bzff93eX//bnB3/3Z4fP92eHz/ +c3V8/3V3ff9wc33/b3F1/29xdf9zdXz/bnB3/3N1fP9tb3P/bG51/2xudf9sbnX/cHN9/2ptd/91d33/ +Z2p0/2Rncf9sbnX/bG95/2xvef9nanT/bG51/2xudf9sbnX/bnB3/3Bzff91d33/b3F1/25wd/9ucHf/ +c3V8/3Byef92eHz/cHJ5/3V3ff9qbHP/c3Z//3Bzff9wcnn/dXiB/3V3ff9sbnX/eHl9/3V3ff9wcnn/ +dXiB/3Byef9sb3j/b3F1/2xvef9zdn//eHl9/2xvef9wcnn/cHN8/21wev9tb3j/cHJ5/2dqcv9maXP/ +Zmlz/2Rncf9wc33/amxz/2psc/9sb3n/am13/2ptd/9qbXf/am13/2xudf9qbHP/bG51/2xudf9nanT/ +am13/2ptd/9ucXv/amxz/2xudf9qbXf/cHN9/2ptd/9zdn//am13/3Bzff9qbXf/bnB3/3V3ff9ucHf/ +dXd9/25wd/9wcnn/cHJ5/3Byef9tb3P/bnF7/21vd/9ucXn/bW93/3R2ff9sb3n/am13/2ptd/9ucXv/ +b3F4/2hrc/9sb3n/d3l//3N2f/9sb3n/bnF7/25wd/9ucXv/Z2p0/2dqdP9qbXf/bnF7/2Zpc/9nanT/ +Z2p0/2ptd/9nanT/bnF7/2xudf9qbXf/bG51/2psc/9tb3P/bnF7/3l7gf9tb3P/amxz/2psc/9ucXv/ +cHN9/25xe/9ucXv/c3Z//3l7gf9zdn//dXiB/25xe/9wc33/d3qD/3N1fP9zdXz/bnB3/25xe/9ucXv/ +c3Z//3N1fP9wc33/eXyG/3N2f/9wc33/c3V8/3N2f/93eoP/c3Z//3t9g/9zdn//cHJ5/3t9g/9zdn// +d3l//3V3ff93eoP/c3Z//3d6g/97fof/c3Z//3N1fP9zdn//eXuB/3l8hv9zdn//bG95/3N2f/9wcnn/ +d3l//3Byef9ucHf/bnB3/3h5ff9sbnX/cHJ5/3Z4fP9wcnn/bnB3/2ptd/9ucXv/bG51/2xvef9nanH/ +bnF7/2xudf9nanT/bnF7/2ptd/9qbXf/Z2p0/3N1fP9sbnX/Z2p0/2xudf9qbXf/Zmlz/3N1fP9qbXf/ +fn+D/3Z4fP9wcnn/c3V8/3N2f/9sb3n/bnF7/25wd/9wcnn/bnB3/2xvef9wc33/d3l//25xe/9wcnn/ +cHN9/25wd/9ucHf/d3l//3N2f/91d33/bnB3/3N1fP9lZmr/Zmlz/25xe/9sb3n/am13/2dqcf9qbXf/ +amxz/2dqdP9ucHf/cHJ5/2dqdP9kZ3H/bnF7/2ptd/9nanT/amxz/2ptd/9qbXf/cHJ5/2psc/9zdXz/ +c3V8/25wd/9zdXz/dXd9/29xdf9ucXv/dXiB/3Bzff91d33/bG95/25xe/9wcnn/bnF7/3Bzff9wcnn/ +eXuB/25wd/9qbXf/bnF7/3V4gf9wc33/bnF7/3V4gf9ucXv/cHN9/3Bzff93eoP/eXyG/3N2f/9zdn// +cHN9/3d6g/9zdn//e32D/3d6g/95fIb/cHN9/3l7gf91eIH/c3V8/3d6g/91eIH/c3Z//3t+h/97fob/ +d3qE/3p8g/90dn7/bXB6/25wd/9sb3n/cHN9/3d5f/9ucXv/bnB3/25xe/9xdH7/c3V9/3d5gP9wc33/ +bnF7/2xvef9ucHf/eXyG/25xe/9ucXv/cHN9/25xe/9wc33/cHJ5/25xe/9zdXz/cHJ5/25xe/9sb3n/ +bnB3/21vc/9ucHf/c3V8/25wd/9sb3n/bnF7/3d5f/9ucXv/d3qD/25xe/9zdn//cHN9/2xvef91d33/ +bG95/3Z4fP9ucHf/c3V8/25wd/9ucXv/bnB3/3Bzff9tb3f/bnB3/21vc/9ydHz/bnB3/25wd/9wcnn/ +cHJ5/3Fzef9oa3P/aGtx/3V3ff9wcnn/Z2px/2xvef9sbnX/dnh8/3N1fP91eIH/c3Z//3V4gf9sb3n/ +bG95/3Bzff9ucXv/bG95/3N2f/9sb3n/cHN9/25wd/9sb3n/bnB3/25xe/93eoP/bnB3/2xudf9qbHP/ +c3V8/3N1fP9ucHf/bnB3/3V3ff92eHz/c3V8/2xvef9qbXf/bnB3/3N1fP9sbnX/am13/2xudf9sbnX/ +amxz/25wd/9tb3P/bnB3/3V3ff9ucHf/bG95/2ptd/9tb3P/bnB3/2psc/9zdXz/bnB3/2ptd/91eIH/ +bnB3/25wd/9ucHf/bnF7/25wd/9zdXz/dXiB/25wd/9sb3n/bnB3/3N1fP91d33/bnB3/2psc/9tb3P/ +bG51/3V3ff9sbnX/bG51/25wd/91d33/bG51/3Byef9zdXz/am13/2ptd/9nanT/bG95/2psc/9qbXf/ +ZGdx/2ptd/9qbHP/Zmlz/2ptd/9qbXf/am13/2psc/9zdXz/bG51/2xudf9wcnn/bnF7/25xe/91eIH/ +cHN9/3+Bh/93eX//bG95/3Bzff9zdn//bG95/25xe/9ucHf/cHJ5/25wd/9qbXf/bnF7/3V4gf9ucXv/ +cHJ5/25xe/9ucHf/cHN9/3d5f/91eIH/c3V8/3Byef9ucXv/ZGdx/25wd/9wcnn/cHN9/2xvef9wcnn/ +bnF7/2xvef9wc33/d3l//3d5f/9zdXz/bG51/3Z4fP9zdXz/cHJ5/25wd/9wcnn/bG51/3V3ff9qbXf/ +cHN9/3N1fP9sb3n/bG95/2xvef9qbHP/Z2p0/25xe/9nanT/c3V8/2dqdP9qbXf/Z2px/2psc/9sb3n/ +amxz/3Byef9maG7/YmVu/2ptd/9sb3n/amxz/2Zpc/9ucHf/Z2px/2xudf9tb3P/bnB3/3Bzff9ucHf/ +dXiB/25wd/9zdXz/bnB3/3V3ff9zdXz/dXd9/2xudf91d33/bG95/25wd/9zdn//dXd9/29xdf92eHz/ +eHl9/3J0e/92eH7/bXB4/2hrdP9qbHP/Zmlz/3Byef91d33/am13/21vc/9sb3n/bm92/21weP92eH// +bnB3/2xvef9wc33/bnF7/3d6g/9zdn//d3qD/3t9g/93eX//fn+D/3d5f/93eX//e32D/3p7f/97fof/ +eXuB/3l7gf95e4H/e32D/3t9g/91eIH/d3l//31+gf9/gYf/d3l//3+CjP93eoP/d3qD/3Bzff9sb3n/ +dXd9/25wd/91d33/am13/2xvef9qbXf/bnF7/2psc/9rbnj/aGty/2hqc/9maG//am13/2dqcf9qbXf/ +bnF7/2xveP9tcHj/YmVu/19ibP9sb3n/Z2p0/2BjbP9maXP/bG95/3h5ff9wc33/c3Z//25wd/91d33/ +bG95/2xvef9sb3n/bnB3/25wd/92eHz/cHJ5/3Byef9sb3n/bnB3/25wd/9ucHf/dXd9/2xudf9qbHP/ +Z2px/3Byef9ucHf/am13/2xvef9wc33/c3V8/25xe/9ucXv/bG51/25xe/9wc33/bG51/25wd/9ucHf/ +bnB3/2ptd/9wcnn/b3F1/25wd/93eX//cHJ5/25wd/9vcXX/bG51/25wd/9sbnX/cHN9/2xvef9ucXv/ +eXuB/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/3d6g/9ucHf/bG51/2xvef91d33/eHl9/3Bzff9sb3n/ +bnB3/25wd/95e4H/bG51/2xvef9ucHf/d3l//25xe/9wc33/dXd9/2xvef9zdXz/bnB3/25xe/9ucXv/ +bnF7/2dqdP9sb3n/bG95/2xudf9wc33/cHJ5/25wd/9sb3n/dXd9/25wd/9sb3n/bG51/2ptd/9nanT/ +bnF7/2xudf99foH/dXd9/21vc/9wcnn/c3Z//25wd/9ucHf/b3F1/2xudf9sbnX/Z2px/3N1fP9zdXz/ +bG51/21vc/9sb3n/am13/2xvef9zdXz/bG95/3Bzff91d33/cHJ5/2Rncf9ucHf/bnB3/3Bzff9ucHf/ +bnF7/25xe/9wcnn/cHN9/3d6g/93eoP/c3Z//2xvef91eIH/c3Z//3N2f/9ucXv/cHN9/3N1fP93eoP/ +bnF7/3d6g/91eIH/cHN9/3N2f/9wc33/bG95/2xvef91eIH/bnF7/3V3ff9sbnX/bG51/2xudf9sb3n/ +bnF7/2ptd/93eX//bW9z/2psc/9zdn//cHJ5/25wd/9sbnX/cHJ5/2psc/9vcXX/bnB3/25wd/9zdXz/ +bG51/3Byef9ucHf/dXd9/2xudf9zdXz/bnB3/3h5ff9sbnX/eHl9/25xe/9wcnn/c3Z//2xvef9qbHP/ +cHN9/3V3ff9sb3j/dHeB/25wef9sb3n/bnF7/25wd/9zdn//dXiB/2xvef9ucHf/bnF7/3R2fP9vcnn/ +dnh//25wd/9ucXv/bnF7/25wd/95e4H/bnF7/3N2f/91eIH/c3V8/3V4gf9wc33/cHJ5/25wd/9wcnn/ +dXiB/3Byef9ucHf/bG95/2xvef9wc33/bnB3/21vc/91d33/eHl9/3Byef95e4H/cHJ5/2xvef9ucXv/ +amxz/3N1fP9qbXf/cHN9/21vc/9wcnn/bnB3/3N1fP9vcXX/dHZ9/21wef9xc3z/bnB3/3N2f/9ucXv/ +c3Z//3V4gf9wc33/dXd+/2xvef9ydX7/e36H/3t9g/9ucXv/d3qD/3l8hv94eX3/cHJ5/3V3ff9tb3P/ +cHJ5/2xudf9ucHf/bG51/2ptd/9sbnX/dnh8/25wd/9qbXf/Z2p0/2dqdP9sbnX/bnF7/3V3ff9sbnX/ +bG51/2Zpc/9sb3n/am13/2ptd/9sb3n/c3V8/3Bzff9wc33/bG95/2ptd/9ucXv/cHN9/3Byef9ucHf/ +bG51/2xvef9nanT/bnB3/29xdf9zdXz/dnh8/25wd/9qbXf/amxz/2xudf9qbXf/Z2p0/2xvef9qbHP/ +Zmlz/3Bzff9sbnX/bG95/2ptd/9zdXz/bG51/25xe/91d33/bG51/2psc/9ucHf/dXd9/3h5ff9wcnn/ +Zmlz/2dqdP9sbnX/dnh8/2xudf9ucHf/b3F1/3d5f/9sbnX/cHJ5/3V3ff9qbXf/bG95/2xudf9sb3n/ +bnB3/3N1fP9qbHP/bnB3/2xudf9nanT/am13/2xvef9sbnX/bW9z/3N1fP9sbnX/bG95/2psc/9sb3n/ +Z2p0/25xe/9qbXf/eXuB/3d5f/9sbnX/bG51/3Bzff9sbnX/bW9z/2xudf9sbnX/bG51/2Zpc/9zdn// +cHN9/2xvef9vcXX/cHJ5/29xdf9wcnn/c3V8/25xe/92eHz/dnh8/3Byef9maG7/bnB3/3N1fP9zdXz/ +bnB3/3Byef9wc33/dXiB/3V4gf97fof/eXyG/3d6g/9qbXf/dXiB/3Bzff9wc33/bnB3/29xdf9sbnX/ +dXd9/25xe/9wc33/c3Z//3Byef9ucHf/bG51/25wd/9qbHP/dXd9/3Byef93eX//amxz/21vc/9sbnX/ +bnF7/2xvef9ucHf/dXd9/21vc/9ucHf/c3V8/3Byef9ucHf/bG51/3Byef9sbnX/bG51/2ptd/9sbnX/ +bnB3/2xudf9zdXz/bG51/3V3ff9qbXf/dXd9/25xe/91d33/Z2p0/3h5ff9ucHf/b3F1/3Byef93eoP/ +c3V8/3l7gf96fIP/c3Z//3Z5g/9ucXr/bG51/2xudf9qbXf/bnF7/3d5f/9tb3P/bW9z/2xudf9ucHf/ +b3F2/3d5gv9wcnn/bnF7/3Bzff9ucHf/d3qD/25wd/9ucHf/cHN9/25wd/92eHz/b3F1/25wd/9sb3n/ +bnB3/3Bzff9sb3n/bG95/25wd/9ucHf/c3V8/29xdf9vcXX/dXd9/3V3ff9ucHf/eXuB/3Byef9sb3n/ +bnF7/2dqdP9zdXz/am13/2xvef9qbHP/bG95/2xudf9wc33/amxz/3Bzff9qbXb/bG53/2hqdP9vcnz/ +am13/3Byef9wcnj/cXN6/3JzeP9oanP/Z2pz/3N1fP9ucXv/Zmhu/3N1fP9ucHf/dnh8/3Byef94eX3/ +bnB3/3V3ff9sbnX/bG51/25wd/9sbnX/bG51/3N1fP9wc33/am13/2dqdP9maXP/amxz/2ptd/9zdXz/ +Z2px/2Zpc/9iZW7/Zmlz/2RmbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Rncf9iZW7/Z2p0/2Zpc/9maG7/ +Zmlz/2Zpc/9qbXf/Zmlz/2xvef9sbnX/bnF7/3N1fP9qbXf/amxz/2psc/9qbXf/am13/2xudf91d33/ +b3F1/2xvef91d33/bG95/3Byef9sbnX/dXd9/2ptd/9wc33/dXd9/21vc/9nanH/cHJ5/3Z4fP92eHz/ +c3V8/2dqcf9sb3n/cHJ5/3t9g/9wc33/c3V8/25wd/93eoP/bnB3/3N1fP91d33/bG51/3Byef9sbnX/ +cHJ5/3Byef91d33/b3F1/3Byef9sbnX/bnB3/3N1fP9ucHf/bW9z/29xdf9zdXz/b3F1/2xvef9ucHf/ +cHN9/25wd/9wc33/bG95/3+Bh/93eX//bnB3/25xe/91eIH/cHN9/3N2f/9zdn//cHJ5/2ptd/9kZ3H/ +dXiB/3Bzff9sb3n/cHJ5/3Bzff9wcnn/c3Z//3l7gf9zdn//c3Z//3l7gf9wc33/Z2p0/25wd/91eIH/ +c3Z//3Byef9vcXX/bnB3/3Bzff9zdn//d3l//3h5ff9zdn//bG95/3d6g/9zdn//cHN9/25wd/9vcXX/ +cHJ5/3N1fP9ucHf/dXd9/3N1fP9ucHf/bnB3/3Byef9sbnX/Zmlz/25xe/9ucXv/d3l//2ptd/9qbHP/ +amxz/2ptd/9qbXf/am13/3N1fP9sbnX/Z2p0/2ptd/9sb3n/Z2px/2Zpc/9nanT/ZGdx/2Zpc/9kZ3H/ +amxz/2ptd/9nanT/cHN9/2xudf9wcnn/bG51/3Z4fP91d33/dXd9/2xvef95e4H/bnB3/25wd/9wcnn/ +c3Z//25wd/9zdn//dnh8/29yfP94eoH/bnB5/25wd/9ucXv/bnB3/3Byef93eX//bW9z/21vc/9sb3n/ +a252/2xudf92eYL/cHJ5/3Bzff9wc33/c3V8/3d6g/9zdn//dXiB/3V4gf9ucHf/eHl9/25wd/9vcXX/ +bG51/25wd/9wcnn/b3F1/2xudf9tb3P/bG51/3Byef9sbnX/bW9z/3Bzff9wc33/bG51/25wd/9qbXf/ +am13/2xvef9kZ3H/am13/2Rncf9sb3n/am13/3Bzff9qbXf/dXd9/2ptd/9xc3v/bG53/2ttc/9lZ3D/ +Z2p0/2Zpc/9maXP/ZGdx/2dqdP9tb3j/am13/21vdv90dn3/dXd9/2dqcf9zdXz/bnF7/3N1fP9qbXf/ +dXd9/2xvef9ucXv/bW9z/3Byef9wcnn/b3F1/2xvef9ucXv/dXd9/25wd/9ucHf/bG95/25xe/9zdXz/ +e32D/3Byef9vcXX/bnB3/25xe/9wcnn/b3F1/2xudf9wcnn/cHJ5/3Byef9wcnn/bG51/3Byef9ucXv/ +am13/2ptd/9sbnX/bnF7/2dqdP9qbXf/am13/2xvef91d33/cHJ5/29xdf9vcXX/bG95/3Byef9ucHf/ +c3V8/25wd/9sbnX/dnh8/3Byef9ucHf/bW9z/3V3ff9sb3n/d3l//3d6g/9zdXz/bG95/3d6g/97fYP/ +d3l//3Bzff9sb3n/cHJ5/2xvef92eHz/am13/2xvef9ucHf/eXyG/25xe/93eX//cHN9/25xe/9wcnn/ +bG95/2xvef9wc33/dXiB/25wd/9ucXv/am13/25wd/9wc33/bnF7/2xvef9sb3n/cHN9/25wd/9sb3n/ +Z2p0/25xe/9nanT/bnF7/21vc/+Agob/d3l//25wd/9ucHf/dXiB/3Bzff9zdn//c3Z//25xe/9ucXv/ +Zmlz/3N2f/9ucXv/bnB3/25wd/9ucXv/bW9z/25wd/91d33/bnB3/25xe/9zdXz/am13/2Rncf9qbXf/ +bG95/2ptd/9nanT/Z2px/2Zpc/9nanT/Z2p0/3Byef9ucHf/bnB3/2dqcf9zdXz/bG95/2ptd/9qbHP/ +bG51/2xvef9sb3n/bG51/3Bzff9ucXv/am13/2xudf9ucXv/bnB3/2dqdP91d33/c3V8/3d5f/9sbnX/ +b3F1/3Byef9wcnn/bG95/2ptd/91d33/bG51/2ptd/9sb3n/cHN9/2Zpc/9qbHP/bG95/2xudf9sb3n/ +Z2p0/2ptd/9qbXf/Z2p0/2ptd/9nanH/am13/2Zpc/9wcnn/c3V8/3V3ff9qbXf/cHN9/2dqdP9maXP/ +am13/3N1fP9tb3P/c3V8/3N1fP9sb3n/d3qC/25wef9ucHX/bnB3/25wd/9ucXv/d3qD/3Byef9ucHf/ +b3J8/29xef9sbnT/cHJ6/2dpb/9qbXf/Z2p0/2dqcf9wcnn/am13/2ptd/9ucXv/bG51/25xe/9qbXf/ +am13/2Zpc/9sbnX/cHN9/25wd/9sb3n/b3F1/29xdf9zdXz/bnB3/29xdf91d33/bnB3/2ptd/91d33/ +cHJ5/2xudf9ucXv/am13/2ptd/9maXP/bG95/2xvef9ucXv/am13/3Bzff9sb3n/cHN9/21wev9tcHr/ +bG95/3h6gP91eIH/foCG/3Z5gv93eoP/dXiA/25weP9pbHb/bnF7/3Bzff9maXP/bnB3/2xvef95fIb/ +dXiB/3t+h/93eoP/dXiB/3Byef9zdn//bG95/25xe/9sb3n/cHN9/3V4gf9wc33/bnB3/25wd/9wc33/ +c3Z//36Ahv91eIH/c3V8/25wd/9wc33/bnB3/2xudf9ucHf/c3V8/3V3ff9zdn//bnF7/2xvef9zdn// +cHN9/3Bzff9ucXv/c3V8/3Bzff9sbnX/bG95/25wd/9zdXz/dXd9/3Byef9sbnX/b3F1/2ptd/9ucHf/ +bG51/3N1fP9qbXf/bG51/3V3ff9ucXv/bnB3/2xudf9zdXz/bW9z/3Byef91d33/bG51/2ptd/9qbXf/ +cHN9/2xvef9qbXf/Zmlz/2xudf9qbXf/c3V8/2Zpc/9maXP/Z2px/3Bzff9nanH/bnF7/2xvef9qbHP/ +am13/2Zpc/9nanH/Zmhu/2Zpc/9kZ3H/Zmlz/2dqcf9kZ3H/Z2p0/2Zpc/9nanT/bG51/2xvef9sbnX/ +am13/2dqcf9sb3n/Zmlz/25xe/9sbnX/f4GH/3V3ff9sbnX/bG95/3Bzff9sbnX/bnF7/2xvef9qbHP/ +amxz/2RmbP9wc33/am13/2xudf9wcnn/cHJ5/2xudf9ucHf/c3V8/2ptd/9sb3n/bnF7/2xudf9iZW7/ +Z2p0/2xvef9sb3n/Z2p0/2ptd/9qbXf/bG95/3Bzff91d33/dXd9/3V3ff9vcXX/d3l//3V3ff9zdXz/ +bG51/2xudf9sb3n/bnF7/21vc/9zdXz/dXd9/25wd/9ucHf/bnB3/21vc/9nanH/c3V8/2xvef91d33/ +Z2p0/21vc/9zdXz/bnB3/2xudf9wcnn/d3l//2ptd/9nanT/am13/3V3ff9sbnX/bG51/2xvef9sbnX/ +am13/2Zpc/9sbnX/bG51/2xudf9ucHf/bW9z/3Byef9sb3n/dXd9/3V3ff93eX//bW9z/3V3ff9sbnX/ +bG51/2xudf91d33/cHJ5/3d5f/91eIH/cXR+/3Z5gv9wc3r/aGt1/25wd/9ucHf/bnF7/3d5f/9sbnX/ +bG95/2xvef9ydHv/bnF5/3V4gf9ucHf/cHN9/2xvef9ucHf/dnh8/3Byef9ucHf/bnB3/2xudf9wcnn/ +bnB3/3Byef9nanT/bG95/3N2f/9vcXX/bnB3/21vc/9sb3n/c3Z//3Bzff9wcnn/dXiB/25wd/9tb3P/ +eHl9/3V3ff9ucHf/c3V8/29xdf9ucHf/amxz/3N1fP9wcnn/c3Z//25xe/9zdXz/cHJ5/3V3ff9zdX3/ +bnF7/29xeP90d4D/cHN9/3Bzff9sb3n/cXN7/3Bze/9tb3f/aGp0/2xvef9ucXv/Z2p0/25xe/9sb3n/ +c3V8/25wd/94eX3/bnB3/3Bzff9wcnn/cHN9/25xe/9zdn//cHJ5/3N2f/91eIH/cHN9/3Byef9sb3n/ +c3V8/3N1fP97fYP/c3V8/29xdf9vcXX/dXd9/21vc/9ucHf/cHJ5/3Byef9wcnn/dXd9/2xvef9nanT/ +bG95/2ptd/9qbXf/amxz/2Zpc/9qbXf/Zmlz/2dqdP9sbnX/bG95/3N1fP9wc33/am13/2psc/9sbnX/ +bnF7/2xudf9zdXz/bG95/25wd/91d33/cHN9/25xe/9ucHf/dXd9/29xdf9zdXz/c3V8/25wd/9ucHf/ +bnF7/3V3ff9ucXv/d3qD/2xvef9ucHf/bG95/3d5f/9sb3n/bnB3/3Byef95fIb/bnB3/3N1fP9wcnn/ +bW9z/25wd/9wcnn/bG51/21vc/9wcnn/bG51/25wd/9ucHf/bG51/2xvef9sb3n/amxz/25wd/9ucXv/ +bW9z/2xudf9sb3n/bnF7/2xvef91eIH/bG95/4GDiv91d33/bW9z/3Byef9wc33/am13/25xe/9sb3n/ +amxz/2xudf9maXP/dnh8/2xvef9ucHf/cHJ5/25wd/9sbnX/b3F1/3Z4fP9zdXz/c3V8/3N1fP9ucHf/ +amxz/2xudf9wcnn/bnB3/29xdf9ucHf/bnB3/25xe/91eIH/d3l//3d6g/93eX//bG95/3d5f/9zdXz/ +cHN9/2psc/9ucHf/cHN9/3Bzff9ucXv/c3Z//3N2f/9wcnn/cHJ5/3Bzff9wcnn/cHJ5/3d6g/95fIb/ +eXyG/25xe/9zdn//c3Z//25xe/91eIH/e32D/3l8hv91eIH/c3V8/3d6g/97fYP/bnF7/25wd/9ucXv/ +cHJ5/3Bzff9sb3n/cHN9/3Byef9sb3n/cHJ5/25wd/9wc33/bnB3/25xe/9wcnn/eHl9/29xdf91d33/ +cHJ5/2xudf9vcXX/d3l//3Bzff97fYP/dXiB/29yfP91eIH/cHN9/21wev9wc33/cHJ5/2xvef93eX// +bnB3/2xvef9wcnn/cXR9/21weP91d33/bnB3/3N1fP9sbnX/b3F1/3Z4fP91d33/cHN9/25xe/91eIH/ +cHN9/25wd/9wc33/am13/3Byef91eIH/c3Z//3N2f/9zdXz/dXd9/3l7gf93eX//c3Z//3t9g/91eIH/ +c3V8/3l7gf9zdn//c3Z//3l8hv91d33/d3l//3Z4fP97fYP/e32D/3V4gf9wc33/dXiB/3N2f/92eYL/ +c3Z+/3Bye/9vcXj/c3V8/25wd/9ucXv/bG95/2xvef9xdHz/bG95/2ptd/9wc33/cHN9/2dqdP9zdXz/ +c3V8/25xe/9sb3n/c3V8/2xvef9qbXf/bG51/3V3ff9ucHf/c3V8/29xdf9wcnn/cHN9/2xvef9qbXf/ +bG51/3N1fP92eHz/eXuB/3N1fP9sbnX/bW9z/3Z4fP9sbnX/am13/2xvef9sb3n/cHJ5/3Byef9ucHf/ +amxz/3N1fP9ucXv/bG95/2ptd/9maXP/bnB3/2xudf9sb3n/bG51/2xvef9wc33/c3V8/2xvef9tb3P/ +bW9z/3Byef9qbHP/c3V8/25wd/9sb3n/dXd9/3V3ff9ucHf/bW9z/3Byef9ucHf/cHJ5/3Byef9sbnX/ +bG51/25xe/9wc33/am13/3Bzff9qbXf/bnB3/25wd/91d33/bG51/2psc/9ucHf/d3qD/2xvef9wc33/ +cHJ5/25wd/9ucXv/c3Z//25wd/9wcnn/cHN9/25wd/9wc33/bnF7/3Byef9zdn//d3qD/3Byef9zdn// +dXiB/25xe/9wc33/bnF7/3Bzff9wcnn/dXiB/2ptd/+BhI3/eXuB/25xe/91eIH/c3Z//2xvef9wc33/ +bnF7/2xudf9nanT/Z2p0/3V3ff9ucHf/bG95/3Byef9ucHf/bG51/25wd/91d33/c3V8/3V3ff9ucXv/ +cHJ5/2xvef9wcnn/c3Z//3N2f/9wc33/cHJ5/25xe/9ucXv/dXd9/3Z4fP93eX//eHl9/25wd/94eX3/ +cHJ5/3V3ff9qbHP/bW9z/25wd/9ucHf/bnB3/3N1fP9ucXv/bG51/2psc/9nanH/Z2px/2dqdP9sb3n/ +am13/3N1fP9maXP/amxz/2ptd/9qbXf/am13/3Bzff9zdXz/am13/2ptd/9zdXz/dnh8/2dqdP9wcnn/ +cHN9/2xvef9ucXv/Z2p0/25xe/9vcXX/amxz/3V3ff9vcXX/c3V8/2ptd/9wc33/cHN9/3l7gf9ucHf/ +c3Z//2xvef9sb3n/cHJ5/3Z4fP9wcnn/eHl9/3Z4fP9ydHv/dXd8/25wd/9qbHP/bG51/2xudf9sbnX/ +dnh8/2xudf9sbnX/bnB3/29xeP9tcHj/dHZ9/25xe/9zdn//bnB3/29xdf94eX3/cHN9/3N1fP9ucXv/ +cHN9/3N2f/9ucHf/bnB3/2xvef9ucHf/c3Z//3N1fP9ucXv/cHN9/3Bzff95fIb/c3Z//3Bzff93eoP/ +bnF7/25wd/97fYP/d3qD/3V4gf93eoP/cHN9/3N2f/9zdXz/cHN9/25xe/9wc33/cHJ5/3N2f/9zdn// +eHqA/3N2fv9vcnr/bnB3/3R2ff9wcnn/c3V8/3V3ff90dnz/c3Z9/29xef9tb3f/c3Z//3Byef9sbnX/ +cHN9/25xe/9zdn//cHN9/3d5f/9ucXv/cHJ5/29xdf9wcnn/cHJ5/3V4gf9ucHf/c3Z//3V3ff91d33/ +amxz/25wd/9wcnn/dnh8/3l7gf9zdXz/bW9z/2xudf9zdXz/bG51/2xudf9zdXz/bG95/3Byef9wcnn/ +c3V8/25wd/9zdXz/cHJ5/3N1fP9ucHf/Z2p0/2xvef9sbnX/bnB3/21vc/9ucHf/cHJ5/3V3ff9qbXf/ +bnB3/2ptd/9ucXv/Zmlz/3N1fP9vcXX/bnB3/3V3ff9wcnn/am13/2xudf9ucXv/am13/3Bzff9ucXv/ +bG51/21vc/9ucXv/cHN9/2xudf91d33/bW9z/2xudf9sbnX/dXd9/2psc/9qbHP/bW9z/3V3ff9tb3P/ +bG95/2xudf9qbXf/bG51/3V3ff9ucHf/bnB3/3Bzff9vcXX/bG95/2xvef9vcXX/cHN9/3V3ff9sb3n/ +dXd9/25wd/9ucXv/c3Z//2ptd/9sb3n/bG51/3N1fP9nanT/gIKG/3Z4fP9vcXX/dXiB/25xe/9qbXf/ +c3Z//3Bzff9sbnX/bG51/25wd/91eIH/c3V8/25xe/9sb3n/bnF7/2xvef9zdn//c3Z//3V4gf93eoP/ +cHN9/3Byef9ucHf/cHN9/3d6g/9wc33/cHN9/3N1fP9ucXv/bnF7/3l7gf93eX//eXuB/3l7gf9ucXv/ +dnh8/3Byef9zdXz/bnB3/25wd/9wcnn/bnF7/2xvef9wc33/bnF7/2xudf9ucHf/bnB3/25wd/9vcXX/ +cHJ5/3V3ff95e4H/bnB3/25wd/9wc33/bnF7/3Bzff95e4H/foCG/3d5f/92eHz/fn+D/36Ahv9zdXz/ +e32D/3+Bh/95fIb/e36H/3N2f/9+gIb/eHl9/3V3ff97fYP/d3l//3l7gf94eX3/e32D/3d6g/9+gIb/ +c3V8/3d6g/9ucXv/Z2p0/29xdf93eX//c3Z//3l7gf94eoD/dXiB/3R2fv9qbXf/aGty/2dqcf9qbHP/ +ZGdx/25wd/9nanH/Z2p0/2xvef9qbXT/aWty/3Fzev9qbHP/bnF7/21vc/9sbnX/dnh8/3N1fP9ucHf/ +cHJ5/3Byef9zdXz/bnB3/25wd/9ucHf/b3F1/25xe/9sb3n/bG95/25xe/9ucXv/c3Z//3N2f/9wc33/ +eXuB/3N2f/9wc33/fX6B/3l7gf9+gIb/e32D/3d5f/91d33/dXd9/3V4gf93eoP/d3qD/3N2f/93eoP/ +d3qD/3t+h/97fof/eHuC/3R3gP93eoL/eXuB/3l7gf93eX//dXh+/3R2fP9ucXv/bnB3/25xe/9wcnn/ +amxz/3Byef9sbnX/c3Z//3V4gf93eX//c3Z//3N2f/9ucXv/cHN9/25xe/93eX//bG95/3Byef9zdn// +dXiB/25xe/9wc33/dXiB/3t9g/9/gYf/d3qD/3Bzff91eIH/d3qD/3Bzff91eIH/d3qD/25xe/9sb3n/ +cHN9/3Bzff9ucHf/cHN9/3N2f/91eIH/c3Z//3N1fP9zdn//cHJ5/3Bzff9sb3n/bnB3/3N1fP9zdXz/ +b3F1/3Byef9wcnn/c3V8/2xudf91d33/cHJ5/25wd/93eX//c3V8/29xdf9ucHf/cHN9/2xvef91d33/ +c3V8/2ptd/9sbnX/bnF7/3V3ff9sbnX/bnF7/2xudf9qbXf/bG51/3N1fP9kZ3H/am13/2xudf93eX// +amxz/2xvef9qbXf/ZGdx/2xudf9sb3n/Z2p0/2psc/9qbXf/amxz/2ptd/9sbnX/amxz/2xvef9zdXz/ +amxz/25xe/9qbXf/am13/2xvef9wcnn/bnF7/25xe/93eX//cHJ5/4GEjf97fYP/d3qD/3l7gf91eIH/ +bG95/3l8hv97fYP/cHN9/25xe/9sb3n/d3qD/3N1fP9ucXv/dXiB/3N2f/9wc33/c3Z//3V4gf93eoP/ +eXuB/3Bzff9ucXv/bG95/2ptd/91d33/bnB3/3N1fP9ucHf/bG95/25xe/91eIH/d3l//3d5f/93eX// +bnF7/3d5f/9wc33/dXiB/2xvef9ucXv/dXiB/3N2f/91eIH/eXuB/3N2f/9ucXv/bnF7/3Bzff9zdXz/ +cHJ5/3N2f/95e4H/d3qD/25wd/9ucHf/bnF7/3Bzff9wc33/dXd9/3d5f/9wcnn/bnB3/25xe/9zdn// +bG95/2xvef9wc33/bG95/3Byef9nanT/bnF7/25wd/9sb3n/dXd9/3Bzff9wcnn/am13/3Bzff9zdXz/ +dnh8/29xdf9zdXz/am13/2Zpc/9qbXf/c3V8/3Byef9zdXz/dXd9/3J0e/92eH3/bW90/2xudv9tb3P/ +bG95/2xvef93eX//c3Z//3d6g/90d4D/bXB6/25wef90dn3/b3F2/3V3ff9sbnX/amxz/3V3ff9zdXz/ +cHJ5/3Bzff9sb3n/bnF7/25wd/9ucHf/b3F1/2xudf9sbnX/bG51/29xdf9sb3n/bnF7/3Bzff9ucXv/ +cHJ5/3V4gf9zdn//c3V8/3V4gf9zdn//d3qD/3V4gf9wc33/cHN9/3Byef9wc33/c3Z//3N2f/9sb3n/ +bnF7/3Bzff92eH7/c3Z//29yfP9ucXr/c3Z//3N2f/91d33/c3Z//3R2fP9zdoD/cHN9/3Bzff91eIH/ +c3Z//3Byef9wc33/cHJ5/3N1fP9wc33/c3V8/3V3ff9wcnn/bnB3/3Byef9ucHf/dXd9/2ptd/9ucXv/ +bG95/25xe/9maXP/amxz/2xvef9wc33/dXiB/2ptd/9sbnX/bG95/2xvef9sbnX/c3V8/3N1fP9sbnX/ +am13/2xvef9sbnX/Z2p0/25xe/9wc33/dXd9/25wd/9vcXX/bnB3/2xvef9ucXv/cHN9/25xe/9zdn// +dXiB/25wd/9wc33/cHN9/3N2f/9sb3n/d3qD/3Bzff9sb3n/eXyG/3Bzff9vcXX/b3F1/3N1fP9qbHP/ +cHN9/3Bzff9nanT/am13/2ptd/9wc33/amxz/2ptd/9nanH/Zmlz/2dqcf9maXP/YGNs/2Rncf9nanH/ +c3V8/2xudf9sb3n/amxz/2Zpc/9qbXf/bnF7/2xudf9tb3P/cHJ5/25wd/9ucXv/bnF7/3Byef9ucHf/ +cHN9/25wd/91eIH/bnF7/25xe/91eIH/dnh8/3N2f/91eIH/fn+D/3h5ff+Ji5H/fn+D/3l7gf9+f4P/ +e32D/3N1fP9+f4P/foCG/3d5f/91d33/cHN9/3l7gf91d33/cHN9/3N2f/9wc33/bnF7/3V4gf9zdn// +dXiB/3V4gf9zdn//c3Z//3Byef9ucXv/c3Z//25xe/9ucXv/bnB3/25wd/9qbXf/dXd9/3d5f/91d33/ +d3l//25wd/91d33/bnB3/3Z4fP9sbnX/c3V8/3V3ff9wcnn/cHJ5/3Z4fP9zdXz/b3F1/25wd/9wcnn/ +b3F1/21vc/9zdXz/dXd9/3d5f/9qbXf/bG51/25xe/9sbnX/dXd9/3V3ff93eX//am13/2psc/9ucXv/ +am13/2Jlbv9qbHP/am13/2dqcf9maXP/XWBq/2dqcf9kZ3H/Z2p0/3Bzff9qbXf/Z2px/2Rncf9sb3n/ +bG95/3Bzff9qbHP/c3V8/2xudf9maXP/Z2p0/3Bzff9sbnX/c3V8/3V3ff9xdH3/cnV+/2xudv9tb3b/ +bG51/2ptd/9ucHf/dnh8/25wd/9wcnn/bnB3/29xef9wcnn/dXh+/3Bzff95e4H/cHN9/2xvef95e4H/ +c3Z//3V4gf9zdn//cHN9/3N1fP9ucHf/cHJ5/3Byef9wcnn/cHN9/3Byef9sb3n/cHN9/25xe/9wcnn/ +bnB3/21vc/9wcnn/cHJ5/2xudf9zdXz/bG51/25xe/9wc33/bW9z/29xdf9ucHf/bnB3/3N1fP91d33/ +bG95/3Byef9sb3n/dHZ9/3R3f/9ucXn/bnB3/25xe/91d33/dXd9/3N2f/91eID/eHqA/3J0e/93eYD/ +foCG/3l8hv95e4H/e36H/3l7gf9zdn//c3Z//3V3ff93eX//bnF7/25xe/9wc33/dXiB/3V4gf9vcXX/ +cHN9/3Bzff9zdn//bG51/29xdf9wcnn/dnh8/3l7gf9wcnn/bnF7/3N2f/91eIH/cHJ5/3V4gf93eoP/ +bnF7/3N2f/9zdn//c3Z//3Bzff93eoP/eXyG/31+gf95e4H/c3Z//3V4gf9zdXz/c3Z//3N2f/9zdXz/ +dXiB/3t9g/92eHz/eXuB/3d5f/95e4H/dXd9/3t9g/93eoP/c3Z//36Biv91eIH/bnF7/3Byef93eoP/ +cHN9/3l7gf93eoP/bG95/2xvef9wc33/dXd9/2xvef9zdn//bG95/2xvef9zdXz/cHJ5/2dqcf9qbHP/ +bW9z/3V3ff9qbXf/c3V8/25wd/9sb3n/cHN9/3V4gf9sb3n/bnF7/2xvef9ucXv/bnF7/3Byef9ucXv/ +c3Z//3l7gf93eoP/eXyG/3d5f/93eX//fX6B/2ptd/9sbnX/am13/3Bzff9maXP/e32D/3Bzff9tb3P/ +c3V8/2xvef9nanT/bnF7/25xe/9qbHP/bW9z/2psc/9ucXv/bG51/2Zpc/9sb3n/am13/2Rncf9qbXf/ +am13/2dqdP9nanT/Z2px/2dqcf9nanH/ZGdx/2dqdP9maXP/Zmhu/2Jlbv9iZW7/ZGZs/25wd/9zdXz/ +cHN9/3N1fP9nanH/bnF7/2dqcf9wc33/Z2p0/2ptd/93eX//bnF7/3Byef91d33/bnB3/25wd/9vcXX/ +cHJ5/21vc/9ucHf/cHJ5/3Z4fP95e4H/bG51/25wd/9zdn//bG51/3h5ff91d33/d3l//3Byef9qbHP/ +c3V8/25xe/9kZ3H/am13/2xvef9nanH/Z2p0/2BjbP9nanH/YmVu/2Jlbv9nanT/am13/2dqcf9kZ3H/ +bnF7/3Byef94eX3/bW9z/3V3ff9ucHf/Zmlz/2Zpc/9zdn//cHJ5/3V4gf94eoD/c3Z//3J1f/9tcHj/ +bW92/2xudf9sbnX/bG51/3N1fP9wcnn/cHJ5/25wd/9vcnz/bnB3/3N1fP9sbnX/c3V8/21vc/9sbnX/ +eHl9/3N2f/91d33/bG95/2xvef9ucXv/b3F1/2xudf9vcXX/b3F1/21vc/9tb3P/b3F1/3N1fP9sbnX/ +bG95/21vc/9ucHf/cHN9/3Byef9vcXX/eHl9/25wd/9zdn//dXd9/21vc/9sbnX/am13/2xudf9ucXv/ +bnF7/21vc/9sbnX/bnB3/3V3ff9wc3v/bnB3/25wdP9sb3n/c3Z//3V4gf9ucXv/dHZ8/3V2ev9ucHf/ +a253/3N2f/9zdXz/dXd9/3V4gf9zdXz/c3Z//3d5f/91eIH/d3l//3N1fP9ucHf/cHJ5/3Bzff9sb3n/ +amxz/2ptd/9wcnn/bnF7/2Rncf9sbnX/bnF7/3Bzff91eIH/bG95/25xe/9wc33/bnF7/2ptd/9wc33/ +cHN9/2ptd/9sb3n/am13/2xudf9maXP/cHN9/25xe/9wc33/bG95/2xudf9sbnX/amxz/2xudf9sbnX/ +amxz/2ptd/9ucXv/Z2p0/2xudf9nanT/amxz/2BjbP9ucXv/am13/2xudf91d33/bnF7/2xudf9sbnX/ +cHN9/2xudf9zdXz/c3V8/25wd/9ucHf/dXd9/3Z4fP9wcnn/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/ +cHJ5/3N1fP97fYP/cHN9/3V4gf9wcnn/bG95/25xe/9zdXz/amxz/21vc/9ucHf/bnB3/2xudf9sbnX/ +bnF7/2xudf9wc33/bG95/3Byef9sbnX/cHJ5/3V3ff9ucHf/cHJ5/25xe/91d33/am13/3+Bh/91d33/ +bnB3/3Z4fP9ucHf/amxz/2xvef9wc33/Zmlz/2psc/9maXP/am13/2dqdP9nanT/am13/2Zobv9iZW7/ +Z2px/2ptd/9maXP/ZGdx/2Zobv9kZ3H/Zmhu/2Zobv9maXP/ZGZs/2Rncf9iZW7/ZGdx/2Zobv9ucHf/ +cHJ5/2Zpc/9wc33/Zmhu/25xe/9kZ3H/am13/2BjbP9kZ3H/bnB3/2ptd/9sb3n/bnF7/2ptd/9qbXf/ +am13/2xvef9qbHP/bG51/21vc/91d33/dXd9/25wd/9vcXX/c3Z//2xvef91eIH/d3qD/3l8hv9wc33/ +bnF7/3l7gf91eIH/bnF7/3N2f/97fYP/c3V8/3V4gf9sb3n/bnF7/2ptd/9ucHf/dXiB/3V4gf9ucXv/ +am13/3V4gf95e4H/e32D/3Bzff93eX//cHJ5/25wd/9ucHf/dXiB/3N2f/95fIb/e32D/3l7gf9ydX// +bnF7/25wd/9sb3n/bnB3/2xvef9wc33/bnF7/3Byef9vcXn/c3V9/29yev91eH7/bG95/3V4gf9ucXv/ +bG51/3Z4fP9wcnn/dXd9/2xudf9vcXX/bnB3/29xdf9qbHP/bG51/2xudf9tb3P/bG51/21vc/9wc33/ +cHJ5/3Byef9wcnn/cHJ5/3V4gf9ucXv/bG95/3l7gf9ucXv/c3Z//25xe/9ucHf/cHJ5/25xe/9ucHf/ +bnF7/3Bzff9ucHf/cHJ5/3Byef92eHz/c3V8/25wd/9sbnP/cHJ5/3Bzff9ucXv/am13/29yfP9xdHv/ +a211/2psdP9wcnn/bG51/2xudf9sbnX/bW9z/3Z4fP92eHz/bnB3/3Z4fP9wcnn/am13/25xe/9zdXz/ +bnF7/2xudf9qbXf/bnF7/3N1fP9nanH/cHJ5/3Byef91d33/e32D/3Byef91d33/c3V8/3Byef9tb3P/ +cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/amxz/3Bzff9wc33/cHN9/2ptd/9sbnX/bG95/2dqcf9wcnn/ +bnB3/25xe/9wcnn/dXd9/2xudf9ucHf/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/d3qD/3Byef9ucHf/ +bW9z/3Byef9sbnX/c3V8/3Bzff9ucHf/bnF7/3V4gf95e4H/c3Z//3d6g/9ucXv/b3F1/3N1fP9ucHf/ +Zmhu/2ptd/9qbXf/d3l//2xudf9ucXv/bG51/2psc/9wcnn/c3V8/25wd/9ucHf/bG95/3Bzff9wcnn/ +bG95/3N1fP9ucHf/dXd9/25wd/9wcnn/am13/2xudf91d33/d3l//3t9g/9+f4P/fn+D/3l7gf+IipD/ +foGK/3l7gf9+gYr/foCG/3N1fP97fYP/e32D/3V3ff93eX//eHl9/3l7gf91d33/dXd9/3d6g/9zdXz/ +bG95/25wd/91d33/cHJ5/2xvef9sb3n/Z2p0/2psc/9qbHP/am13/2dqcf9qbXf/Zmlz/2Rncf9maG7/ +cHJ5/3V3ff9qbXf/c3V8/2Zobv9kZ3H/ZGdx/25wd/9kZ3H/Z2p0/3Bzff9ucXv/cHN9/3Bzff9ucHf/ +amxz/29xdf9wcnn/bnB3/2xudf9tb3P/dnh8/3V3ff9wcnn/b3F1/3Byef9wcnn/c3Z//3N1fP91eIH/ +bG95/2ptd/91d33/dXd9/2xudf9ucHf/dnh8/2xudf9wcnn/bG51/2xudf9maXP/am13/3N1fP9zdXz/ +bG51/2dqcf9wcnn/c3V8/3Z4fP9qbXf/dXd9/2ptd/9maXP/bG51/2Zpc/9maG7/Zmlz/2ptd/9sb3j/ +bW92/21vdv9tb3f/bnB3/2ptd/9nanT/cHN9/3Bzff9sb3n/b3F4/29yfP9rbnj/cXR9/2hrdf9ucXv/ +bG95/2ptd/9zdXz/bnF7/3Bzff9qbXf/am13/2xvef9vcXX/bG51/2xudf9sbnX/bW9z/2xudf9ucHf/ +cHJ5/21vc/9sb3n/am13/3Byef9zdXz/bG95/2ptd/9zdXz/bG95/3N1fP9sbnX/bnB3/25wd/9sb3n/ +bnB3/25xe/9zdn//bnB3/3Byef9wcnn/c3V8/3Fzev9ucXn/bG95/3Bzff9zdn//cHN9/25wd/9wc33/ +cXN6/2xud/9sbnX/cHN9/25wd/9wcnn/bnB3/25wd/91d33/c3V8/2xvef9zdXz/bnF7/25xe/9qbXf/ +bnF7/25xe/9qbHP/bG51/2ptd/9qbXf/Zmlz/2xvef9sb3n/bG95/3N2f/9sb3n/bnF7/25xe/9sb3n/ +bG95/25xe/9wc33/bG95/25xe/9sbnX/bG51/2dqdP9zdXz/dnh8/3Z4fP9wc33/bnB3/3Bzff9sb3n/ +bG95/29xdf9wcnn/dXiB/3d5f/9ucXv/c3V8/3N2f/9ucXv/bG95/3V4gf9zdn//cHN9/3l8hv91eIH/ +cHN9/3Byef93eoP/bnF7/3V4gf9zdn//cHJ5/3Byef91eIH/eXuB/3N2f/91eIH/c3Z//3Bzff92eHz/ +dXd9/2Zobv9ucHf/cHJ5/3V3ff9sbnX/bnF7/2xudf9nanT/cHJ5/3N1fP9sbnX/bnB3/25wd/9zdXz/ +bnB3/3Bzff9wc33/bnB3/3V4gf9wc33/dXiB/3N1fP91eIH/e32D/3l7gf95e4H/e32D/3t9g/91d33/ +g4WM/3d6g/9wcnn/dXiB/3V4gf9nanT/dXiB/3d6g/9wc33/c3V8/3N1fP9zdn//bG95/25wd/9ucXv/ +bG95/29xdf9sbnX/dXd9/3Bzff9sb3n/bnB3/25wd/9ucHf/b3F1/3N1fP9ucHf/dXd9/2ptd/9nanH/ +bW9z/3d5f/95e4H/cHJ5/3t9g/9ucHf/c3V8/21vc/91d33/bG51/3Byef93eX//bnF7/3N1fP9wcnn/ +bnB3/2dqcf9sbnX/bG95/2psc/9sbnX/Z2px/2xvef9zdXz/Z2px/2Zobv9qbXf/ZGdx/2xvef9sb3n/ +dXd9/2ptd/9qbHP/bnF7/25xe/9maXP/bG51/3N1fP9qbHP/cHJ5/2psc/9qbHP/ZGdx/2psc/9wc33/ +cHN9/2ptd/9nanT/bG95/25xe/91d33/bG51/3d5f/9ucHf/bG51/2psc/9wcnn/bG51/3Byef9wcnn/ +dHZ8/21vdv9tcHn/bG51/25wd/9sbnX/Zmlz/2xvef9sb3n/am13/25xe/9vcnn/bXB3/3V3fv9ucHf/ +cHN9/3Byef9sb3n/d3l//3N2f/93eX//bnF7/2xvef9wc33/bnF7/2xvef9ucXv/cHJ5/3N1fP91d33/ +c3Z//3d6g/9zdXz/cHJ5/25xe/91eIH/foCG/3V4gf9wc33/d3qD/3N2f/95fIb/c3Z//2xvef9sb3n/ +bnF7/3Byef9wc33/dXiB/25xe/9ucXv/cHJ5/3N2f/9ydX7/cHJ5/2xvef9ucXv/c3Z//3Bzff9wc33/ +cnV+/3J0ev9ucHn/a254/3Bzff9vcXX/b3F1/25xe/9wc33/dnh8/3N1fP9ucHf/d3l//3Byef92eHz/ +bnF7/3N2f/95e4H/cHJ5/25xe/9zdn//cHN9/25xe/91eIH/d3qD/3d6g/97fof/dXiB/3t9g/99foH/ +e32D/3d6g/93eoP/eXuB/3V4gf91eIH/dXiB/3V3ff92eHz/eXuB/3t9g/9+f4P/eXuB/3Bzff95e4H/ +cHN9/3Bzff9wcnn/bnF7/3V4gf95e4H/cHN9/3Bzff93eoP/bnB3/2ptd/9ucXv/bnB3/2xvef91eIH/ +cHN9/2xvef9vcXX/c3V8/25wd/9ucHf/c3V8/2xudf9sbnX/dXd9/3V3ff9wc33/dXiB/3V4gf9zdn// +eXuB/3N2f/9maXP/bnB3/3Bzff95e4H/dXiB/3l7gf9zdn//c3Z//3t9g/97fYP/c3V8/3Z4fP93eoP/ +eXyG/3d5f/97fYP/foCG/3h5ff9+f4P/e32D/35/g/91d33/eXuB/36Ahv9sb3n/am13/3Bzff92eHz/ +bnB3/3l8hv9wc33/bnB3/25xe/9ucXv/Zmlz/3V4gf97fYP/c3V8/3Byef9zdXz/d3qD/3V3ff93eX// +foCG/3Z4fP91d33/c3Z//3t9g/97fYP/d3qD/3V4gf91d33/dXd9/3N2f/95e4H/d3qD/3d6g/9sb3n/ +bG95/3Byef95e4H/e36H/3Bzff95fIb/cHJ5/3V4gf9zdXz/c3Z//29xdf9zdXz/dXiB/3Bzff93eX// +cHJ5/2xvef9qbHP/bnB3/25wd/9tb3P/bW9z/25wd/9zdXz/dXiB/2xvef9ucHf/c3Z//3Byef91d33/ +c3V8/3d5f/9wcnn/bW9z/3N1fP9zdXz/bG51/25wd/91d33/bW9z/3Bzff9sb3n/bnB3/2psc/9ucHf/ +dnh8/3N2f/9vcXX/amxz/2xvef9wc33/c3V8/2xudf93eX//bG51/2xudf9qbHP/dXiB/3N2f/9zdn// +cHN8/3N1fP9tb3b/cXN6/25wd/9ucHf/b3F1/25wd/9ucXv/c3Z//3Bzff92eYL/dHZ+/3Fzev93eX// +bW92/3V3ff9wcnn/bnB3/3N1fP9ucXv/cHN9/2xvef9sbnX/cHN9/2xudf9kZ3H/am13/2ptd/9nanT/ +Zmlz/2ptd/9wcnn/bG51/21vc/9ucHf/bnF7/3V3ff9sb3n/bG95/3N1fP9vcXX/dnh8/25wd/9sbnX/ +am13/25wd/9vcXX/b3F1/3Byef9vcXX/dXd9/3Byef90dn3/cXN9/25wd/9tcHn/bXB6/25xe/9ucHf/ +bnB3/3Byef9wc3r/bW94/2ptd/9zdXz/b3F1/21vc/9ucHf/bnF7/3V3ff9sb3n/bnB3/3V3ff9sb3n/ +c3V8/3Byef9zdXz/c3Z//25wd/9ucXv/bG95/25wd/9wcnn/cHN9/3N1fP9ucXv/d3l//25xe/9wc33/ +dXd9/3N2f/9wcnn/d3qD/3d5f/9zdn//c3Z//3Byef9wcnn/bnB3/25xe/9wc33/dXd9/2xudf9tb3P/ +c3V8/2dqdP9sbnX/bG51/21vc/9wcnn/c3V8/2Rncf9qbXf/bnF7/2xudf9tb3P/am13/2xudf9qbHP/ +dXd9/25xe/9qbXf/bG95/25xe/9sbnX/cHJ5/3V3ff9ucHf/cHJ5/3d5f/93eX//c3Z//3V4gf91eIH/ +bG95/3V3ff91d33/Zmhu/25wd/91d33/dnh8/3Byef9wcnn/b3F1/2xudf9wcnn/cHJ5/2Rncf9nanT/ +am13/2ptd/9nanT/bG51/2Zpc/9maG7/bG95/2dqdP9qbXf/Z2px/2dqcf9qbXf/c3V8/3Byef9wcnn/ +dnh8/2xudf93eoP/am13/21vc/9qbXf/bG51/2psc/9zdXz/d3l//25wd/9ucHf/b3F1/25wd/9qbXf/ +bG51/3V3ff9qbHP/amxz/29xdf9wcnn/c3V8/2xvef9ucHf/bG51/2ptd/9sbnX/c3V8/3N1fP9wcnn/ +amxz/2xudf9qbXf/c3V8/3V3ff9qbXf/d3l//2xudf9ucHf/bG51/2xvef9sbnX/cHJ5/3Z4fP9zdXz/ +c3V8/2ptd/9sbnX/amxz/2xudf9sbnX/bW9z/21vc/9sbnX/cHJ5/3V3ff9sbnX/bG51/3Z4fP9sb3n/ +dXd9/3Byef93eX//bnF7/29xdf91d33/cHN9/2xvef9wcnn/eHl9/3Byef95e4H/c3Z//25wd/9qbXf/ +bnB3/3d5f/91eIH/bnF7/25wd/9wc33/dXiB/3d5f/9ucHf/dXiB/25wd/9sb3n/Z2p0/2ptd/9sb3n/ +bnF7/25xe/9wc3z/bnB3/29yev9ucHf/b3F1/2xudf9qbXf/bnF7/3N2f/9wc33/bXB6/3F0ff9sbnf/ +cXR9/2ttdP9qbXf/Z2p0/2psc/9sb3n/bnF7/2xvef9ucHf/bG51/25wd/9sbnX/amxz/25wd/9vcXX/ +bnB3/2ptd/9ucHf/bnF7/2xvef9sb3n/cHN9/25xe/95e4H/cHN9/3Byef91eIH/cHN9/3l7gf9wc33/ +bG95/3Byef9ucHf/bnB3/21vc/9wcnn/bW9z/3Byef9ucHf/c3V8/2xudv9sbnX/a211/25xev9ucXv/ +bnB3/3Byef9ydHv/b3J7/25wef9ucHf/c3V8/25wd/9vcXX/b3F1/3Byef9zdXz/bG51/3N1fP94eX3/ +bnB3/3V3ff9ucHf/bnB3/3d5f/9wcnn/c3Z//3V4gf91eIH/bG95/3N2f/9wcnn/bnB3/3d5f/9sbnX/ +cHJ5/3V3ff91d33/b3F1/3N1fP92eHz/c3V8/3Byef9ucHf/bnB3/21vc/9sbnX/c3V8/3d5f/9ucHf/ +am13/25xe/9kZ3H/bG51/2ptd/9sbnX/bG95/3N1fP9maXP/bG51/2xvef9sb3n/bW9z/2xudf9ucHf/ +bnB3/3V4gf9ucXv/bnB3/25xe/9wcnn/bnB3/3Byef91d33/bG51/2xudf92eHz/d3l//3N1fP9zdXz/ +c3V8/25wd/91d33/c3Z//2dqcf9ucHf/dXiB/3t9g/91eIH/d3qD/3Bzff9ucHf/c3Z//3N2f/9sb3n/ +bnB3/3N1fP9ucHf/bnB3/3Bzff9ucXv/bnF7/3Z4fP91d33/c3V8/25wd/9tb3P/cHJ5/25wd/9sb3n/ +bnF7/3Z4fP9vcXX/e32D/25wd/9qbXf/am13/25wd/9nanH/cHJ5/3d6g/9sb3n/cHJ5/3Byef9wc33/ +bnB3/25xe/91eIH/am13/2xvef9ucHf/bnF7/3Bzff9sb3n/bnF7/29xdf9ucHf/bW9z/3N1fP9wcnn/ +c3V8/2xudf9ucHf/am13/3N1fP92eHz/am13/3V3ff9qbHP/am13/2xudf9qbXf/amxz/2xvef91d33/ +cHN9/3V3ff9sb3n/bG51/2dqdP9qbHP/bG51/2xudf9sbnX/bG51/2ptd/9wc33/amxz/2Rncf9ucXv/ +Z2p0/25xe/9sb3n/dXd9/2ptd/9qbXf/cHN9/25xe/9nanT/bG95/3V3ff9sbnX/cHN9/2ptd/9nanT/ +ZGdx/2xudf9zdXz/cHN9/25wd/9vcXX/bG95/3V3ff94eX3/bnB3/3l7gf9ucXv/bnB3/2dqdP91d33/ +bnB3/25wd/9wcnn/bnF7/21veP9wcnn/b3J8/3Byef9ucXv/am13/3Bzff9zdn//bG95/3Byef9ydH3/ +cHJ7/3V2e/9vcXf/cHJ5/25wd/9sbnX/cHJ5/3Bzff9wcnn/bnB3/25wd/9wcnn/bG51/2Rncf9sbnX/ +bG51/2dqdP9nanT/bG51/25wd/9ucHf/b3F1/3Bzff9wcnn/eHl9/3Byef9sb3n/cHN9/3Bzff93eX// +bG95/2xvef9ucXv/bG95/25wd/9vcXX/cHJ5/2xudf9ucHf/cHJ5/3N2f/9vcnz/b3J8/25xev9wc33/ +cHN9/3Byef9ucHf/bnB3/3Fzev9tb3b/bW91/25xe/9qbXf/bG51/2xudf9sb3n/c3V8/2ptd/9zdXz/ +dXd9/25wd/91d33/b3F1/25xe/93eX//bnB3/3Bzff9ucXv/c3Z//2xvef91eIH/bnF7/3Bzff95fIb/ +d3qD/3l8hv97fof/e32D/3V3ff95fIb/e32D/3N2f/9zdn//bnF7/3Bzff9wcnn/bG95/25xe/91eIH/ +bnB3/3Byef91d33/bG95/3Byef9sb3n/bnB3/3Bzff91d33/amxz/25wd/9wcnn/bnB3/25wd/9ucXv/ +bnF7/2ptd/95e4H/bnF7/25xe/9zdn//cHN9/3Byef9wc33/d3l//3N1fP9wcnn/dXd9/3V4gf9wcnn/ +cHN9/25xe/9ucXv/dXd9/3V4gf9maXP/am13/3Bzff94eX3/c3V8/3N1fP9vcXX/b3F1/3Byef91d33/ +bnB3/2ptd/9wcnn/cHJ5/21vc/9zdXz/bG95/2ptd/91d33/c3V8/3V3ff9qbXf/am13/2xudf91eIH/ +d3qD/3l8hv9+gIb/c3Z//4GDiv9zdn//c3Z//3Bzff9ucXv/am13/3N1fP95fIb/bnB3/25wd/9ucHf/ +cHJ5/2xudf9sbnX/c3V8/2dqcf9sbnX/bG95/25xe/9zdn//bG95/2xvef9ucHf/bnB3/25wd/9wc33/ +cHN9/3N2f/9ucHf/amxz/29xdf91d33/eHl9/2xudf92eHz/bW9z/25wd/9ucHf/bnF7/25wd/91d33/ +dXiB/3V3ff92eHz/bnB3/2xudf9nanH/bnB3/2xudf9vcXX/bG51/2xudf9qbXf/bnF7/2ptd/9qbXf/ +c3V8/2psc/92eHz/c3V8/3V3ff9wcnn/bnB3/3N2f/9wc33/am13/2xvef95e4H/bnB3/3Z4fP9ucHf/ +bG51/2psc/9vcXX/dXd9/3N1fP9sb3n/cHJ5/25xe/95e4H/eXuB/3Byef93eX//bnB3/29xdf9nanH/ +am13/2Rncf9maG7/Zmlz/2tueP9oa3P/am11/2ptd/9qbXf/bG51/2Rncf9qbXf/c3V8/2xudf9qbHP/ +b3F6/2xud/9zdXr/bnB3/3Byef9wcnn/bnB3/3N1fP91eIH/cHN9/3N1fP9sb3n/cHN9/25wd/9nanT/ +b3F1/29xdf9ucHf/bG51/2xvef9ucHf/bG51/2ptd/9ucXv/am13/3Z4fP9sbnX/bW9z/3Byef9wcnn/ +dXd9/2xudf9nanT/bG95/2ptd/9nanT/bG51/25xe/9ucHf/cHJ5/2ptd/9vcnz/bW92/2xvd/9sb3n/ +bG95/2dqdP9nanT/Z2p0/2ttdP9sb3n/bXB4/2xveP9zdn//bG95/2xvef9ucHf/cHN9/3N1fP9qbXf/ +dXd9/3d5f/9qbXf/c3V8/2xudf9tb3P/d3l//2ptd/9ucXv/bG95/3Bzff9qbXf/bnF7/2psc/9maXP/ +cHJ5/2ptd/9qbXf/cHN9/25xe/9sbnX/cHJ5/3N1fP9ucHf/bnB3/2xvef9wcnn/bG51/2xvef9wc33/ +dXiB/2xvef9ucXv/d3l//2xvef9ucXv/bnB3/3Bzff9zdn//dXiB/2xvef9wc33/c3Z//25wd/9ucHf/ +cHJ5/25wd/9nanH/dXd9/25wd/9tb3P/bG51/25wd/9tb3P/bG51/2xvef9sbnX/bW9z/3h5ff91d33/ +cHJ5/3N1fP9wcnn/cHJ5/3Z4fP9wcnn/Z2px/2xudf9zdn//dXd9/25xe/9zdn//cHN9/3Bzff91eIH/ +eXuB/3N1fP9ucXv/d3qD/3t9g/92eHz/fn+D/3l7gf97fYP/fX6B/3t9g/97fYP/c3V8/3Bzff91eIH/ +c3V8/3Byef9zdXz/dXd9/25wd/9+gYr/d3qD/3N1fP9zdXz/cHN9/2xvef95e4H/f4GH/3Bzff9zdXz/ +cHN9/3Bzff9ucHf/bG95/3N2f/9nanT/bnB3/3Byef91eIH/dXiB/3N2f/9zdn//c3V8/3Bzff9zdXz/ +c3Z//25xe/9zdn//bnB3/2xvef9ucXv/dnh8/3Z4fP9wcnn/dnh8/21vc/9zdXz/bG51/2xvef9tb3P/ +c3V8/3V3ff9ucXv/cHN9/2ptd/9nanT/XF9o/2Zpc/9qbXf/amxz/2dqcf9sbnX/bG51/3Bzff9nanH/ +Zmlz/25xe/9qbXf/c3V8/3V3ff91d33/bG51/2psc/9wc33/am13/2dqdP9qbXf/dXiB/25wd/92eHz/ +bnF7/25wd/9sb3n/b3F1/3N1fP9wcnn/bnB3/21vc/9sbnX/dXd9/3N1fP9tb3P/eHl9/29xdf9vcXX/ +Zmhu/3V3ff9ucHf/bG95/3Byef9xdH3/bnF7/3Fze/9ucHf/bnB3/29xdf9sbnX/c3V8/3N1fP9ucHf/ +b3F1/3J0ev9zdn//dnmD/3N2f/91eIH/bnF7/25xe/91eIH/eXyG/3d6g/91eIH/c3Z//3d6g/9wc33/ +bnF7/25wd/9sb3n/bG95/2xvef9zdn//dXiB/3Byef9sb3n/dXd9/3Bzff93eX//bnB3/2ptd/9wcnn/ +cHJ5/3Z4fP9ucHf/bG95/3N1fP9vcXX/am13/2xvef9zdXz/cHJ5/3N2f/9zdn//d3qD/3Bzff9xdH7/ +c3Z9/3J1fP9zdXz/bnB3/2xudf9sb3n/bnF6/21veP9tb3j/c3Z//2xvef9ucHf/bnB3/3N1fP94eX3/ +b3F1/3V3ff93eX//bnB3/3V3ff9ucHf/cHJ5/3V3ff9ucHf/bnF7/2xudf9ucXv/Z2p0/3Bzff9qbXf/ +am13/25xe/9sb3n/Z2p0/2xvef9qbXf/YmVu/2Rncf9maXP/Zmhu/2Zobv9maG7/Z2p0/2Rncf9maG7/ +Zmlz/25wd/9maG7/Zmhu/2xvef9gY2z/Zmlz/2Rncf9nanH/Zmlz/2Rncf9cX2j/Zmlz/2Zpc/9kZ3H/ +YmVu/2Zpc/9nanT/YmVu/3N1fP9nanH/Zmhu/2Zpc/9qbHP/Z2px/2xudf9sb3n/am13/2xudf9wc33/ +c3V8/25xe/9sb3n/am13/2ptd/9zdXz/bnB3/2Zobv9nanT/bnF7/3Bzff9sb3n/bG95/2ptd/9sbnX/ +bG95/2xvef9sbnX/Zmlz/2ptd/9ucXv/am13/3N1fP9sbnX/cHJ5/3Byef9zdXz/dXd9/2xudf9vcXX/ +c3V8/25xe/9wc33/bnF7/3Bzff9sbnX/e32D/3V3ff9ucHf/cHJ5/2xvef9nanT/dXd9/3l8hv9sb3n/ +b3F1/25wd/9ucHf/bnB3/25wd/9zdn//am13/25wd/9wcnn/c3Z//3N2f/9ucHf/cHN9/3Byef9wc33/ +bnF7/3V4gf9ucXv/dXd9/25wd/9qbHP/bnB3/3V3ff91d33/bnB3/3Z4fP9sbnX/c3V8/25wd/9sbnX/ +bG51/25xe/9zdXz/c3V8/3V3ff9zdXz/bG51/2RmbP9nanT/am13/2dqdP9sbnX/bG95/25wd/9ucXv/ +bG51/2dqdP9zdXz/bG95/3V3ff91d33/dXd9/2xudf9sbnX/dXd9/25wd/9vcXX/c3V8/3l7gf9sbnX/ +c3V8/2dqdP9nanT/Zmlz/2ptd/9ucXv/bG95/2xudf9qbXf/amxz/3Bzff9wc33/bG51/3N1fP9sbnX/ +bG51/2Jlbv93eoP/c3Z//3V4gf94e4X/eXuC/3V3ff9ydX3/a254/3Byef9tb3P/bnB3/3Byef9zdXz/ +bW9z/21vc/9xcnj/dHZ+/3l6f/94eoH/foCG/3d5f/95e4H/c3Z//3d6g/97fYP/dXiB/3V4gf9zdn// +c3V8/3N1fP9zdXz/cHN9/2xvef9zdXz/d3qD/3N2f/9zdXz/bG95/3Bzff9wc33/d3l//3Byef9qbXf/ +cHJ5/2xvef91d33/bG51/25wd/91d33/bnB3/2psc/9ucHf/c3V8/2xvef9ucHf/bG51/3Byef9ucHf/ +cnR6/3N1e/9wcnn/dXd9/2ptd/9sb3n/am13/2tudv9qbXf/am13/3Bzff9sbnX/cHJ5/2xudf9qbXf/ +dnh8/21vc/9sb3n/c3V8/2xudf9wcnn/bW9z/3Byef93eX//bnB3/2xvef9sbnX/cHN9/2xudf94eX3/ +bnB3/25wd/93eX//dXd9/25xe/91eIH/dnh8/25wd/9wc33/dXd9/3N1fP9ucHf/bnF7/3l7gf9wcnn/ +bnF7/3N2f/93eoP/bnF7/25xe/93eX//cHJ5/25xe/9ucHf/bnF7/2xvef9ucXv/bG51/2xvef9wc33/ +b3F1/25wd/9wc33/bnB3/2psc/94eX3/bnB3/29xdf9ucHf/bG51/25wd/9ucXv/cHN9/3Byef9ucXv/ +dXiB/3l7gf95e4H/cHN9/3Bzff9ucXv/eHl9/3V3ff9nanH/bG51/3Byef91d33/b3F1/25wd/9tb3P/ +bG51/25wd/9ucHf/bG51/2dqdP9sb3n/am13/2Rncf9qbXf/bG51/3Bzff9qbXf/bG95/2xvef9kZ3H/ +Z2p0/3Bzff9zdXz/c3V8/3N1fP91d33/bnB3/3t9g/9zdn//cHJ5/3N1fP9wcnn/am13/3d6g/95fIb/ +cHN9/3Bzff9zdn//cHN9/3Byef9wcnn/d3qD/2xvef9zdXz/cHJ5/3V4gf95e4H/c3V8/3Bzff91d33/ +d3qD/3d6g/91eIH/d3qD/3d6g/91eIH/dXd9/3t9g/97fYP/e32D/3l8hv97fof/cHN9/3d6g/9wc33/ +c3Z//3N2f/93eoP/eXuB/3V4gf95e4H/dXiB/2ptd/9qbXf/cHJ5/25wd/9sbnX/bG51/2xudf9ucHf/ +c3V8/21vc/9nanT/cHN9/25xe/93eX//dXd9/3Bzff9qbXf/bG51/3N1fP9sb3n/bG51/25xe/91eIH/ +am13/25xe/9kZ3H/amxz/2Rncf9nanT/cHJ5/2ptd/9nanH/Z2p0/2Rncf9maXP/Zmlz/2Zobv9nanT/ +YmVu/2Zobv9cX2j/bnF7/2ptd/9ucHf/b3F4/2tueP9tb3f/am12/2dpb/9maXP/Zmlz/2Rncf9maXP/ +Z2p0/2dqcf9sbnT/a254/2tueP9wc3r/a253/25xe/9tb3P/bnF7/2xudf9sb3n/bnF7/2xudf9qbHP/ +am13/2Rncf9maXP/Z2px/2xudf9iZW7/Z2p0/2xvef9qbXf/amxz/2dqdP9sb3n/bnF7/3V3ff9wcnn/ +bnB3/3Bzff9wc33/e32D/3Bzff9ucHf/d3qD/3Bzff9sb3n/dXd9/3l8hv9zdn//d3qD/3N2f/93eoP/ +cXR9/3Z4fv9ydHv/dHZ9/3Z4fP9ucHf/cHJ5/3Bydv9wcnr/b3F4/25wd/91eIH/bnB3/25xe/9sb3n/ +cHJ5/3Z4fP9tb3P/am13/3N1fP9qbXf/bnF7/2dqcf9ucXv/dXd9/2xvef9ucXv/bG51/2xvef9qbHP/ +dXd9/2ptd/9sbnX/dnh8/3N1fP9sb3n/dXd9/25xe/9nanT/Z2p0/25xe/9sb3n/amxz/2psc/9wc33/ +am13/2xudf9wc33/dXd9/2psc/9qbHP/bnF7/2dqcf9sbnX/bW9z/25wd/9sbnX/bnB3/2xudf9qbXf/ +bnF7/21vc/9vcXX/dXd9/21vc/9qbHP/eXuB/25xe/9wc33/cHN9/2xvef9ucHf/cHJ5/2xvef9ucHf/ +bG95/25xe/91d33/dnh8/25xe/9sbnX/am13/3N1fP9ucXv/YmVu/2ptd/9sb3n/bnF7/2psc/9qbHP/ +Z2px/2dqcf9nanH/Z2px/2dqdP9maXP/am13/2dqdP9kZ3H/bG95/2psc/9wc33/bG95/3Bzff9zdXz/ +Z2px/21vc/9zdn//cHN9/3Z4fP91d33/c3Z//25xe/95fIb/c3Z//25wd/9ucHf/bnB3/2ptd/9zdn// +e32D/25wd/9vcXX/cHN9/25xe/9ucHf/cHJ5/3V4gf9nanT/bnB3/25wd/93eoP/c3Z//2xvef9ucHf/ +bG95/3Bzff9wcnn/cHN9/2xvef9ucXv/bG51/2xudf9ucHf/bnF7/3N1fP9zdXz/dXd9/25wd/9wcnn/ +am13/2xvef9qbXf/cHN9/3Bzff9sb3n/cHN9/2xvef9iZW7/YGNs/2psc/9sb3n/Zmlz/2xudf9sbnX/ +bW9z/3N1fP9tb3P/amxz/3N1fP9ucHf/d3l//3V3ff9ucXv/am13/2ptd/9wc33/am13/2ptd/9ucHf/ +e32D/3Byef91d33/bG51/25wd/9ucHf/cHJ5/3V3ff9ucHf/amxz/25xe/9wcnn/bG95/25xe/9sbnX/ +cHN9/29xdf9sbnX/Z2px/2xvef9qbHP/am13/2xvef9tb3b/b3F5/29yev9tb3P/cHJ5/2xvef9sbnX/ +bG51/3N1fP9vcXX/a211/2xudv9vcXn/cnR7/25wd/9wcnn/bG51/2xvef9qbHP/am13/2xvef9sbnX/ +Z2p0/25xe/9nanT/am13/2xudf9qbXf/Zmlz/2ptd/9sb3n/bG95/2ptd/9qbXf/c3V8/3Byef92eHz/ +cHJ5/25wd/9sb3n/bG95/3N1fP9wcnn/bG51/3N1fP9qbHP/Z2px/2xudf9ucHf/bW9z/3Bzff9qbHP/ +bG51/25weP9xdHv/cXR8/25xe/91d33/b3F1/3N1fP9ucHX/bnB3/21vdf9rbXP/c3V8/2ptd/9sb3n/ +am13/2xudf91d33/bG51/2xvef91d33/bnB3/3Byef9sbnX/cHN9/3V4gf9wcnn/bG95/2ptd/9wcnn/ +b3F1/3h5ff9tb3P/bG51/3N1fP91d33/bnB3/3l7gf9zdn//bnF7/3Byef93eX//d3l//25xe/9wcnn/ +d3l//2xvef9sb3n/cHN9/3V3ff9ucHf/bnB3/3V3ff9ucHf/bG95/2xudf9wcnn/bnB3/3Byef9ucHf/ +bnB3/25xe/9qbXf/bW9z/3Bzff9qbHP/ZGdx/3N1fP9qbHP/am13/2xvef9nanT/amxz/2xudf9qbXf/ +bG51/2xudf9sb3n/dXd9/2xvef9ucXv/bG95/2xudf9zdXz/bG95/2BjbP9maXP/bG95/3Bzff9nanT/ +am13/2dqdP9qbHP/am13/2ptd/9qbXf/Z2p0/25xe/9sb3n/Zmlz/2xvef9sbnX/cHN9/2ptd/9zdXz/ +c3V8/2Rncf9sbnX/dXd9/3N2f/91d33/dXd9/3V4gf9ucXv/dXiB/3Bzff9ucHf/cHJ5/25wd/9sb3n/ +c3Z//3t9g/9sb3n/b3F1/25wd/9ucHf/b3F1/29xdf9zdXz/Zmhu/25wd/9sbnX/c3V8/3Bzff9qbXf/ +bnB3/2psc/9wcnn/am13/3Byef9sbnX/cHJ5/2xudf9tb3P/bG51/3Byef91d33/bnF7/3d5f/9ucHf/ +cHJ5/3Byef9ucHf/cHN9/3V3ff95e4H/dXd9/3V3ff9wc33/bG95/2ptd/9vcXX/bnB3/2ptd/9sb3n/ +bnB3/21vc/9zdXz/bW9z/2psc/91d33/am13/3V4gf94eX3/cHJ5/25wd/9ucHf/cHJ5/2xudf9qbXf/ +bG95/3N2f/9qbXf/bG95/2Rncf9nanT/Zmlz/3Bzff9wc33/am13/2dqdP9sb3n/bnF7/2xudf9ucXv/ +amxz/2xvef9sbnX/bnF7/2Rncf9zdXz/bG51/21vc/9sbnX/b3F4/3FzfP9vcnv/bnB3/3N2f/9zdn// +bnF7/3Byef9wc33/bnB3/25xe/9xc3v/cXR9/3d5gP9wc33/dXiB/3Bzff9ucXv/bnB3/25xe/9wc33/ +bnF7/25wd/93eX//bG95/25xe/9wc33/cHN9/2xvef9wcnn/c3Z//3Bzff9wc33/c3V8/3d6g/91eIH/ +e32D/3Byef9zdn//cHN9/3N2f/93eX//c3Z//3Byef91eIH/cHN9/3Bzff9zdn//d3qD/3V4gf97fYP/ +c3V8/3Bzff9xdH3/cnR7/3F0fv9wc3r/cHJ5/2xudf9wc33/am13/25xev9tb3b/a210/3N1fv9wc33/ +c3Z//2xvef9wcnn/dXd9/2xudf9zdXz/eHl9/3Bzff9zdXz/bnB3/3V3ff93eoP/c3Z//3N2f/91d33/ +eXuB/3N1fP97fof/c3Z//3N2f/9+gIb/e32D/3l8hv9/gYf/d3qD/3N1fP9zdXz/foCG/3t9g/93eoP/ +dXiB/36Ahv91d33/c3V8/3t9g/9+gIb/dXd9/3N1fP93eX//bG95/25wd/9vcXX/c3Z//25xe/91eIH/ +bnB3/3Byef9zdXz/bnF7/3Byef91eIH/cHN9/3V3ff95fIb/cHN9/3V4gf95fIb/dXd9/3N1fP9zdn// +cHN9/3Byef9ucXv/cHN9/3d6g/91eIH/c3Z//3V4gf9ucXv/dXiB/3V4gf9nanT/bG51/3N2f/93eX// +cHN9/25wd/9sbnX/bG51/25wd/9sbnX/c3V8/2xudf91d33/bnB3/2psc/9zdXz/bG51/3V3ff9ucHf/ +c3Z//3h5ff9qbHP/bnB3/3N2f/9wc33/c3V8/3N1fP9zdXz/cHN9/3h5ff9ucHf/bnB3/25wd/9nanT/ +bG95/3V4gf9/gYf/cHN9/3Byef9ucXv/cHN9/3Byef9zdXz/dXiB/2dqdP9wc33/bnB3/3Bzff93eoP/ +c3V8/3N2f/9ucXv/dXiB/3Bzff91eIH/c3V8/3t9g/91eIH/c3Z//3d6g/91eIH/e32D/3l8hv9+gYr/ +eXuB/3l7gf95fIb/dXiB/3t9g/97fof/e36H/3l7gf95e4H/d3qD/25xe/9qbXf/cHJ5/3N1fP9sb3n/ +bnF7/3Byef9wcnn/dXd9/29xdf9qbHP/dnh8/3N1fP93eX//dnh8/2xvef9qbXf/bG95/25xe/9sbnX/ +bG95/2xvef93eX//bG95/25xe/9qbXf/am13/2dqdP9zdXz/bG95/2psc/9nanT/bG95/2xvef9qbHP/ +Z2p0/2dqcf9sb3n/Zmhu/2Rncf9dYGr/cHJ5/2xudf9sb3n/a210/2ttdf9rbnj/aGpx/2Rncf9maXP/ +Zmlz/2Zobv9iZW7/ZGdx/2Jlbv9maXP/aGpw/2xvd/9xc3r/bG51/3N1fP9qbXf/bnF7/2ptd/9sb3n/ +bnF7/25wd/9sbnX/dXd9/2psc/9sbnX/bnB3/29xdf9nanH/bnB3/25wd/9ucXv/bnB3/2xvef9zdXz/ +dnh8/3V3ff9sb3n/cHN9/3Byef9ucXv/c3Z//3Bzff9wcnn/dXiB/25xe/9ucXv/bG95/3V4gf91eIH/ +foCG/3V3ff91eIH/dHeA/3R3fv90d4D/dHeA/3Bzff9ucXv/cHJ5/2xudf9vcXj/bW94/21vdv9zdn7/ +cHN9/3Z4fP9ucHf/c3V8/3V3ff9ucHf/dXiB/3d5f/91d33/cHJ5/2xudf9sb3n/dXd9/25xe/9sb3n/ +Zmlz/25xe/9qbHP/bnF7/2ptd/9qbHP/cHN9/2xvef9ucXv/dXiB/2xvef9tb3P/am13/3N1fP9ucXv/ +Z2p0/2psc/9wcnn/Zmlz/2Zpc/9sb3n/bnF7/2dqdP9sbnX/c3V8/2ptd/9qbXf/amxz/25xe/9sb3n/ +bG95/2dqdP9sbnX/bnB3/25wd/9tb3P/cHJ5/2xudf9qbXf/dXd9/3Byef9ucHf/bnB3/25wd/9ucHf/ +bnF7/3Bzff9ucHf/bnF7/2xvef95fIb/bnF7/25xe/9wc33/bG95/3V4gf9zdXz/ZGdx/2Zpc/9wc33/ +bnF7/2ptd/9sb3n/am13/2xvef9qbXf/amxz/2ptd/9maXP/bnF7/2Zpc/9gY2z/am13/2psc/91d33/ +bG95/2xvef91d33/ZGdx/2psc/9ucXv/dXiB/3Z4fP91eIH/d3l//3d6g/97fYP/d3qD/3N2f/9zdn// +cHN9/3V3ff97fYP/g4WM/3Bzff9ucXv/cHN9/3Byef9ucHf/cHJ5/3V4gf9qbHP/dXiB/25wd/9ucXv/ +dXiB/25wd/9wcnn/am13/3Bzff9ucXv/cHJ5/21vc/9zdXz/bnB3/21vc/9zdXz/bnB3/3h5ff9ucHf/ +dXd9/25wd/9ucHf/c3V8/2xudf9wc33/d3l//3d5f/91eIH/cHN9/3N2f/9nanT/Z2p0/25xe/9sb3n/ +bG95/2xvef9ucHf/bnF7/3V4gf9wcnn/Zmlz/3V3ff9wc33/d3l//3h5ff91d33/b3F1/25wd/9zdXz/ +bnB3/3Byef9ucHf/d3l//25xe/9sb3n/bG51/2xudf9sbnX/cHN9/3V3ff9ucHf/bG51/3N1fP91d33/ +bW9z/25wd/9tb3P/bnF7/2ptd/9sbnX/Zmhu/2xvef9qbHP/bnF7/2xudf9vcXb/cXN7/29xev9sb3n/ +c3Z//25xe/9ucHf/bG95/2xvef9ucHf/cHJ5/21vdv9wcnj/dXd7/29xe/9wc33/bnF7/3Byef9ucHf/ +cHJ5/3Bzff9ucHf/bnB3/3Z4fP9nanT/am13/2xudf9tb3P/ZGZs/29xdf9ucHf/c3V8/25wd/9ucHf/ +bnB3/3N1fP91d33/bnB3/3N2f/9ucHf/bnB3/3N1fP9wc33/cHJ5/3N2f/9sb3n/Z2p0/2ptd/9zdn// +bnF7/3d5f/9wc33/cXN9/3R3f/91eH//dXiB/3V4gf9wc33/bnF7/3Bzff9ucXr/cnR9/3Bzff9ucXv/ +dHZ9/3N2f/91d33/bG95/3Byef91d33/bG95/3Bzff91eIH/c3V8/2xvef9ucHf/c3V8/3V3ff9wcnn/ +bnB3/25wd/92eHz/bG95/3d5f/9ucXv/bnB3/3l7gf9zdXz/c3V8/3l7gf9ucHf/bW9z/2xudf92eHz/ +cHJ5/3Byef9sbnX/dnh8/2ptd/9qbXf/dXd9/3Z4fP9sbnX/bnB3/3d5f/9ucHf/amxz/2xudf9zdXz/ +bnF7/3Bzff9qbXf/bG51/21vc/9wcnn/bnB3/3N2f/9ucHf/bG51/3Bzff9ucHf/bnB3/3Bzff9ucHf/ +b3F1/29xdf9wc33/cHJ5/3N2f/91eIH/foGK/3V4gf95fIb/eXyG/3N2f/9+gYr/d3qD/3Bzff9wc33/ +e32D/3d6g/91eIH/eXyG/3N2f/95fIb/dXiB/3V4gf95fIb/cHN9/3t9g/95fIb/cHN9/3V4gf9wcnn/ +d3l//3V3ff92eHz/eXuB/2dqdP9ucHf/dXiB/2ptd/9ucXv/bG95/3Bzff9sb3n/dXd9/2xudf9qbXf/ +am13/2dqdP9nanT/bnF7/3l7gf9sbnX/bG51/25wd/9sbnX/am13/2xudf9ucXv/ZGZs/2ptd/9maXP/ +bG95/3N1fP9nanT/amxz/2Zpc/9qbXf/bG51/25wd/9tb3P/dXd9/3Byef9sbnX/dXd9/3Byef92eHz/ +c3V8/3h5ff9ucHf/bG51/3V3ff9ucXv/dXiB/3l8hv95fIb/d3qD/3N2f/91eIH/bnF7/25xe/91eIH/ +cHJ5/3Byef9zdn//bnB3/25wd/9wc33/bnF7/2dqdP91eIH/dXiB/3l7gf95fIb/dXiB/3N1fP9wc33/ +c3Z//2xvef9zdn//bnF7/3l7gf9zdn//bnF7/25wd/9vcXX/b3F1/3N1fP9zdXz/bnB3/2psc/9zdn// +dXd9/2xudf9wcnn/bG95/2xvef9sbnX/bG51/1xfaP9ucXv/bG95/3N1fP9tcHr/bW91/3ByeP9tb3j/ +aGp0/2xvef9qbXf/bG95/2dqdP9sbnX/bnB3/29xef9oa3X/bG93/3Byev9rbnj/bnF7/2xudf9sb3n/ +bG95/2xvef9sb3n/bnB3/2ptd/9wc33/Z2p0/2ptd/9qbXf/bG51/2Jlbv9qbHP/Z2p0/2xvef9qbHP/ +amxz/2ptd/9ucXv/bG95/2psc/9ucXv/am13/2xudf9ucXv/bG95/2xudf9sbnX/ZGdx/2dqdP9kZ3H/ +bG95/3Byef9zdXz/bG95/21vdP9ucHf/cnR6/3Fzev9vcXj/bG95/2xudf9ucHf/bG51/2ptd/9rbnj/ +a254/3J1fv91d33/dXd9/29xdf9wcnn/c3Z//25xe/91eIH/d3qD/3N2f/9ucHf/bnB3/3N1fP93eX// +bnF7/25xe/9qbXf/c3Z//3Bzff91d33/bnF7/2xudf94eX3/cHJ5/3V3ff91eIH/bnF7/25wd/9sb3n/ +dXd9/25wd/91d33/bG51/3Z4fP9qbHP/Z2p0/3Bzff92eHz/bG51/3Byef92eHz/bW9z/2xudf9vcXX/ +dnh8/3N1fP9zdXz/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/bG51/2ptd/9ucXv/am13/2psc/9wc33/ +Zmlz/2ptd/9maXP/am13/2dqcf9maXP/Z2px/25wd/9kZ3H/Zmhu/2Zpc/9nanH/cHJ5/2Zpc/9gY2z/ +YmVu/2Zpc/9qbXf/Zmhu/2dqdP9iZW7/Z2p0/2Zobv9maG7/am13/2Rncf9maXP/Zmhu/2BjbP9maXP/ +ZGdx/2ptd/9nanT/bG95/3Byef9kZ3H/ZGdx/2ptd/91d33/dXd9/3V3ff94eX3/cHJ5/3N2f/9ucXv/ +c3V8/3V4gf9zdXz/bnB3/3N2f/9+gIb/bnB3/29xdf9ucHf/bG51/2xudf9ucHf/dXd9/2ZobP9ucHf/ +bG51/25wd/92eHz/bG51/2xudf9qbHP/bnB3/29xdf9ucHf/bG51/3Bzff9qbXf/bG51/25xe/9wc33/ +bG95/3Bzff9zdXz/am13/2xudf91d33/bG51/3Byef91d33/d3l//3N2f/9ucXv/cHN9/2xvef9sbnX/ +cHJ5/29xdf9sbnX/bG95/2ptd/9vcXX/c3V8/3Byef9maG7/c3V8/3N1fP92eHz/d3l//3V4gf9ucHf/ +cHN9/3Bzff9wcnn/d3qD/3Bzff95e4H/cHN9/2xvef9sb3n/bnB3/29xdf91d33/dXd9/3Bzff9sb3n/ +dXiB/3V3ff9ucHf/cHJ5/3Byef9wcnn/bnB3/3Byef9maG7/cHJ5/25wd/9wc33/bnB3/25weP9wcnn/ +bXB5/25wd/9wcnn/b3F1/3N1fP9sbnX/bnB3/3Byef9vcXj/bG52/2xvef9vcnv/bXB5/2xvef9sbnX/ +bG95/2Zpc/9nanT/Z2p0/2psc/9nanH/cHN9/2Zpc/9qbXf/am13/2ptd/9iZW7/bG51/2xvef91d33/ +bnB3/25wd/9zdn//d3qD/3N2f/9wcnn/dXiB/3N2f/9zdXz/eXyG/3V4gf91d33/dXiB/3N1fP9zdn// +bnF7/3l8hv99foH/foCG/3V4gf91d33/dXiB/3V3fv90d4D/cXR+/25xe/9wcnn/c3Z//3Byef9wcnr/ +cHJ5/2tueP90d4D/d3l//3V3ff9ucHf/cHN9/3V3ff9wc33/c3Z//3d6g/91d33/bG95/2xvef9zdn// +eXyG/25xe/9ucHf/bnB3/3Z4fP9wcnn/c3V8/2xudf9nanH/cHN9/2ptd/9ucXv/d3l//21vc/9tb3P/ +b3F1/3Z4fP9ucHf/cHJ5/2ptd/94eX3/bnB3/2dqcf9ucHf/c3V8/2psc/9wcnn/dnh8/29xdf9qbHP/ +bW9z/3N1fP9zdXz/cHJ5/2xudf9qbXf/am13/2xvef9qbHP/am13/2dqcf9kZ3H/am13/2psc/9maG7/ +Z2p0/1xfaP9gY2z/YmVu/2dqdP9kZ3H/ZGdx/2Zobv9ucHf/Zmlz/2Rncf9nanT/Z2px/25xe/9qbXf/ +ZGdx/2Zpc/9wc33/c3V8/2xudf9zdXz/bG51/2xvef9qbXf/am13/3N1fP9ucHf/cHJ5/25xe/9maXP/ +cHN9/25wd/92eHz/cHJ5/25xe/9zdXz/amxz/2xudf91d33/dXd9/3N1fP92eHz/d3l//3N1fP91d33/ +bG95/29xdf9wcnn/amxz/2xudf9wcnn/eXuB/3Byef9tb3P/bG51/2Zpc/9nanT/am13/3N1fP9gY2z/ +am13/2dqdP9qbXf/bnF7/2dqcf9ucHf/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/cHJ5/21vc/9wcnn/ +dXd9/3Byef92eHz/dnh8/25xe/9ucXv/eXuB/3N1fP91eIH/e36H/3t+h/93eX//cHN9/3N2f/9ucHf/ +am13/3V3ff9ucHf/bG95/3Byef9sb3n/bnF7/3N2f/9ucXv/am13/3N1fP9ucXv/dXd9/3d5f/91eIH/ +bG95/25wd/9ucXv/bnB3/3N2f/9sb3n/d3l//3Bzff9ucXv/bG95/25wd/9ucHf/d3l//3Z4fP9sb3n/ +am13/3V3ff9zdXz/bnB3/3N2f/9wc33/cHN9/3N2f/91eIH/Z2p0/25xe/9ucHf/dXd9/3R3gP9wcnv/ +cnR8/3Bzff9ucXv/c3Z//25xe/9zdn//bG95/3Bzff9zdn//bnF7/3F0ff9zdn//cXR+/3F0ff9wcnn/ +bW9z/3N1fP9ucHf/bG95/2ptd/9qbHP/amxz/2xvef9maXP/Z2p0/2ptd/9qbXf/ZGdx/2psc/9qbXf/ +dXd9/2xudf9tb3P/cHJ5/3N1fP9wc33/Z2px/25xe/9sbnX/bW9z/3Byef9sbnX/am13/2xudf9ucHf/ +bG51/2Zpc/9ucXv/dXd9/3N1fP9sbnX/bG92/29xef9wc3v/dHd//3F0ff9wcnn/cHJ5/3Byef9ydHz/ +bnB4/21weP9tb3f/cHN9/3Bzff9wc33/amxz/2xvef95e4H/dXiB/3N2f/9+gYr/eXyG/3d5f/93eX// +foCG/4OFjP97fYP/dXiB/25xe/95fIb/c3Z//3t9g/9wc33/cHN9/3d5f/9wc33/c3Z//3d6g/9ucXv/ +cHN9/29xdf93eX//bnB3/3N1fP9ucHf/eHl9/2psc/9maXP/bG95/25xe/9maXP/bG51/3N1fP9sbnX/ +Zmlz/2xudf9zdXz/cHN9/25xe/9qbXf/am13/2Zpc/9ucXv/amxz/2dqdP9maXP/Zmlz/25xe/9qbHP/ +Z2px/2dqdP9iZW7/Zmhu/2Jlbv9nanT/Zmhu/2Zpc/9maG7/bnB3/2dqdP9kZ3H/Z2p0/2Rncf9nanT/ +ZGdx/11gav9gY2z/am13/2ptd/9maG7/am13/2dqcf9ucXv/bnF7/2ptd/9zdXz/am13/2ptd/9qbXf/ +Z2px/3N1fP9ucHf/eHl9/3Bzff9wc33/d3l//2xudf9ucHf/c3Z//3l7gf91eIH/eXuB/3l8hv91eIH/ +dXiB/3V4gf9wc33/dXiB/25xe/9ucHf/bnF7/3l8hv9zdn//cHJ5/3Bzff9ucXv/cHN9/3V4gf9+gIb/ +bG95/3V4gf9zdXz/dXiB/3d6g/9qbXf/cHJ5/2xvef9wcnn/bG95/2xvef9sb3n/c3V8/3N1fP9ucHf/ +c3V8/3N1fP9wc33/dXd9/3d5f/9sb3n/cHJ5/3N1fP9qbXf/bG95/3V3ff91d33/dnh8/3V3ff9ucXv/ +bnB3/2xvef91eIH/c3V8/2xvef9wc33/am13/3Byef93eoP/cHN9/2dqdP9wc33/cHN9/3V3ff94eX3/ +dXd9/2xudf9vcXX/bnB3/2dqcf9wcnn/bG51/3V3ff9wcnn/bG51/2ptd/9nanT/bG51/25xe/9qbXf/ +Z2px/2Rncf9ucXv/Zmlz/2Jlbv9kZ3H/Z2px/2Zpc/9qbXf/Z2p0/11gav9nanT/amxz/25xe/9qbXf/ +a211/2lrdP9oa3X/aWtz/2xvef9sb3n/cHN9/2psc/9wcnn/bnB3/2xuc/9sb3n/amx1/2hrdP9oam// +ZGdx/2Zobv9nanT/Zmlz/2Zpc/9nanH/ZGdx/2dqcf9ucXv/am13/2ptd/9sb3n/bG95/2Zpc/9qbXf/ +bnB3/3V3ff9wcnn/bnB3/25xe/9zdn//c3V8/25wd/9wc33/bnF7/25wd/91d33/bnB3/25wd/9ucHf/ +bnB3/2ptd/9maG7/c3V8/3N1fP9wcnn/bG51/21vc/9ucHT/bnB3/3Byef9wcnr/bG95/2xvef9ucHf/ +cnR7/2xudv9rbXb/aWx2/25xe/9zdXz/dXd9/25wd/91d33/c3V8/2xvef9qbXf/d3l//2xvef9qbHP/ +bG51/25xe/91eIH/bnF7/25wd/9kZ3H/dXd9/2ptd/9ucXv/am13/2xvef9sb3n/bG51/2xvef91d33/ +am13/2ptd/9sbnX/dXd9/25wd/91d33/bG51/3Z4fP9nanT/am13/25wd/9zdXz/bG51/29xdf9zdXz/ +b3F1/2psc/9ucHf/dXd9/3N1fP9ucXv/am13/2ptd/9qbXf/cHN9/2xudf9ucXv/bG51/25wd/92eHz/ +bG51/21vc/9zdXz/bG51/29xdf9qbXf/cHN9/25xe/9zdXz/bnB3/3h5ff9zdXz/bnB3/25wd/9vcXX/ +c3Z//25xe/9sb3n/bG95/3d5f/9zdn//cHN9/3d6g/9wcnn/dXiB/3V4gf9wcnn/e32D/3Bzff9zdn// +cHN9/2ptd/9ucXv/bG95/3d5f/9wc33/c3Z//3d6g/9sb3n/cHN9/3l7gf95e4H/cHN9/3V4gf91eIH/ +c3V8/25wd/9wc33/bG95/3V4gf9qbXf/cHJ5/25xe/93eoP/cHN9/29xdf9zdXz/bnB3/21vc/9qbXf/ +cHN9/2Rncf9ucXv/Z2p0/25wd/91d33/amxz/21vc/9tb3P/am13/25wd/9ucXv/bG95/3d5f/91eIH/ +dXiB/3V4gf9zdn//dXiB/3V4gf95e4H/c3Z//3d6g/97fYP/dXiB/3d6g/97fof/e36H/3d6g/93eoP/ +cHN9/25xe/9sb3n/dXd9/2xvef9ucXv/cHN9/2xudf9sb3n/bnF7/2dqdP9gY2z/Z2p0/2ptd/9wcnn/ +cHN9/2ptd/9nanT/bG51/2xvef9kZ3H/bnF7/2ptd/93eX//bnB3/21vc/9qbXf/am13/2xvef93eX// +cHN9/2ptd/9maXP/dXd9/3Bzff9qbXf/bnF7/2xvef9wcnn/c3V8/3V3ff9maG7/amxz/2ptd/9wc33/ +bnF7/25wd/9ucHb/bW93/3J0e/9zdn//cHN9/3V4gf9sb3n/dXiB/25xe/9sb3n/b3J8/21wev9tcHr/ +b3J7/2xvef9sbnX/bnF7/2dqdP9sbnX/amxz/2ptd/9sbnX/cHJ5/2xudf9sbnX/cHJ5/2xvef9kZ3H/ +bG51/25wd/91d33/cHJ5/29xdf9ucXv/dXiB/3N2f/9ucHf/cHN9/3Bzff9wcnn/c3Z//25xe/9qbXf/ +bnF7/2xvef9ucHf/ZGdx/25xe/9ucXv/bG95/2dqdP9qbXf/bW92/2tudv9sb3n/bG95/2dqdP9maXP/ +Zmlz/2xudf9laHH/Y2Zw/2Zpc/9ydHv/bnF7/2ptd/9sbnX/cHN9/25xe/9qbXf/am13/3Byef9qbXf/ +Z2p0/2xudf9zdXz/d3l//3V3ff9ucHf/amxz/3l7gf9wc33/cHN9/25wd/9ucHf/cHN9/3Byef91eIH/ +eXuB/3Byef9wc33/bnB3/3d6g/9wc33/dXiB/3N1fP95fIb/dXd9/3N1fP9zdn//c3Z//3Bzff9zdn// +d3qD/3Bzff9sb3n/c3Z//3l8hv97fYP/dXiB/3N2f/9zdn//c3V8/3t9g/9zdn//dXiB/25wd/9wcnn/ +c3Z//25wd/9ucHf/dXd9/2psc/9ucHf/Z2p0/3Bzff9ucXv/cHN9/2xvef93eX//c3Z//3Bzff9wc33/ +bnB3/3N2f/9wc33/cHJ5/2xvef95e4H/cHN9/3Byef93eX//cHJ5/3V4gf9zdn//bG95/3d5f/9zdXz/ +cHN9/2xvef9sb3n/bnB3/3Byef93eX//c3V8/25xe/95e4H/bG95/2xvef95e4H/dnh8/25wd/93eX// +d3l//25xe/9sb3n/cHN9/25wd/9zdn//bG95/25wd/9ucXv/eXyG/3N1fP9tb3P/c3V8/25wd/9vcXX/ +bG51/3Byef9maG7/cHJ5/25wd/9wc33/dXd9/2xudf9ucHf/bnB3/2xudf9ucHf/cHJ5/3Byef92eHz/ +cHJ5/3N1fP9wc33/bnF7/2xvef9sb3n/bnF7/2ptd/9ucXv/cHN9/25wd/9ucHf/dXd9/3d5f/9zdn// +dXd9/25xe/9sb3n/bG95/3V3ff9ucHf/bnB3/3N1fP9sbnX/bnB3/3Z4fP9ucHf/Z2px/2xvef91eIH/ +d3qD/3d6g/91eIH/am13/2xvef9ucXv/bnB3/3Byef9sbnX/dXd9/2xvef9sbnX/bG51/2xudf9qbXf/ +dXd9/25xe/9nanT/Z2p0/3Bzff9zdXz/amxz/2xvef9qbXf/am13/25xe/9wc33/YmVu/2dqdP9sbnX/ +bnF7/2xvef9pbHb/a254/2xuc/9rbnX/cHJ5/25wd/91d33/am13/3Bzff9wcnn/cHJ5/29xef9ucHn/ +bnF5/29ye/9sb3n/amxz/25xe/9ucXv/am13/2dqdP9tb3P/bG51/25xe/9tb3P/bnB3/3Bzff9wcnn/ +Zmhu/25wd/9wcnn/c3Z//3N2f/9sb3n/bG95/3Bzff9zdn//bnB3/3Bzff9zdXz/bnB3/3V4gf9wc33/ +am13/3Bzff9ucHf/bnB3/2Zpc/91eIH/d3qD/3Bzff9sb3n/cHJ5/2xvef9rbnj/cHJ3/2xudv9qbXf/ +Zmlz/2xudf9qbXf/aGp0/2dqdP9tb3X/dXd8/3V3ff9wcnn/bW9z/3d5f/9zdXz/bnF7/25wd/91d33/ +c3V8/2xudf9vcXX/d3l//3l7gf92eHz/bnB3/2dqdP93eX//cHN9/25xe/9wcnn/cHJ5/3N2f/9wcnn/ +d3qD/3l8hv9zdXz/cHN9/2xvef93eX//cHJ5/3N1fP9ucHf/dXd9/2xudf9tb3P/b3F1/25wd/9maG7/ +bG51/3Byef9qbHP/YmVu/25wd/93eX//dXd9/25wd/9sbnX/cHJ5/29xdf91d33/b3F1/3Byef9ucHf/ +b3F1/3N2f/9ucHf/bnB3/3V4gf9qbXf/c3Z//3Bzff95e4H/eXuB/3d6g/9zdn//foCG/31+gf97fYP/ +d3l//3h5ff97fYP/d3qD/3N2f/9wc33/e32D/3d6g/9wc33/e32D/3N2f/95fIb/d3qD/25xe/95e4H/ +dXiB/3V4gf9ucXv/bG95/25wd/9wcnn/d3qD/25xe/9wcnn/dnh8/2xudf9sbnX/dXd9/3N1fP9wcnn/ +eHl9/3Z4fP9ucHf/am13/2xvef9nanT/bG95/2dqdP9sbnX/bG51/3N2f/9wc33/amxz/2ptd/9nanT/ +am13/2xvef9sb3n/ZGdx/3Bzff9ucHf/c3V8/3N1fP9nanH/bG51/2ptd/9qbXf/am13/3N1fP9ucHf/ +dXd9/3N1fP91d33/c3V8/25wd/9wcnn/bG95/2ptd/9nanT/bnF7/3Z4fP9sbnX/bnB3/3V3ff93eX// +c3V8/25xe/9qbXf/am13/2xudf9zdXz/am13/2xvef9ucXv/Zmlz/2xudf9zdXz/bnB3/2Vmav9ucHf/ +c3V8/3l7gf9wc33/c3Z//2dqdP9wcnn/bG51/2psc/9zdXz/bG51/3V3ff9wcnn/bW9z/2ptd/9sbnX/ +cHN9/3V3ff9ucXv/am13/29xdf92eHz/c3Z//29xdf9wcnn/cHN9/25xe/9wc33/dXd9/2dqcf9qbXf/ +bnB3/3Bzff90d4D/cnR7/29yfP9sb3n/bnF7/3N2f/9zdn//eXuB/3N1fP91eIH/dXiB/3V4gP9ucXv/ +b3J8/3BzfP9vcnv/bnF7/25wd/9zdn//bG95/29xdf9sb3n/b3F1/25wd/9zdn//bnB3/25wd/9wc33/ +cHN9/2Zpc/9wcnn/c3V8/3V4gf91eIH/bnB3/2xvef9zdn//dXd9/2xvef9zdn//dXiB/25xe/93eX// +bnF7/2ptd/9wc33/bnB3/25wd/9qbXf/d3l//3V4gf9zdn//bG95/3Byef9tb3b/bW94/29ye/9wcnn/ +bnB3/2xvef9sb3n/c3V8/2xvef9qbXf/b3F5/3V3ff94eX3/c3V8/25wd/94eX3/d3l//3V3ff9ucHf/ +d3l//3V3ff9tb3P/bW9z/3V3ff95e4H/cHJ5/2ptd/9maXP/c3V8/2dqdP9nanT/Z2p0/2dqdP9qbXf/ +Zmlz/2xvef91d33/Z2p0/2xudf9nanT/dXd9/2ptd/9ucXv/am13/3d5f/9ucHf/bnB3/3Byef9ucXv/ +ZGdx/2xvef9wc33/bnB3/2psc/9wcnn/e32D/3V3ff9ucHf/bG95/25wd/9ucHf/eXuB/25wd/9ucXv/ +bG95/2xvef93eX//bnB3/25xe/91eIH/bG95/3Byef9sbnX/dXd9/3Byef9ucHf/bG51/3Z4fP9zdXz/ +am13/2xudf9sbnX/bnB3/25xe/9qbHP/Zmlz/3V3ff9ucXv/bG51/3V3ff9tb3P/am13/2ptd/9kZ3H/ +dXd9/2xvef9ucHf/am13/2ptd/9qbXf/bG51/3V4gf9sb3n/bnB3/3V3ff9sbnX/bG95/3V3ff9zdn// +bnF7/3d5f/95e4H/cHN9/3Bzff91eIH/bnB3/3Bzff9ucHf/bnF7/29xdf95e4H/c3Z//2xvef9wcnn/ +bG51/2xvef9ucXv/bnF7/2Zpc/9zdn//bnB3/3N1fP9zdXz/Zmhu/29xdf9ucHf/cHJ5/29xdf94eX3/ +c3V8/3N1fP9ucXv/bnF7/3Bzff9sb3n/bnF7/2xvef9sb3n/Z2px/25xe/9zdXz/amxz/2ptd/9ucXv/ +dXd9/2xvef9qbXf/Z2px/2psc/9kZ3H/am13/2psc/9qbXf/bG95/2Rncf9sbnX/cHJ5/2xudf9lZmr/ +bnB3/3V3ff93eoP/cHN9/3d5f/9qbXf/cHJ5/29xdf9qbHP/dXd9/2psc/93eX//cHN9/2xvef9sb3n/ +bG95/3V4gf93eoP/cHJ5/25wd/9tb3P/dXd9/3V3ff9qbHP/bG95/2xvef9wcnn/am13/25xe/9maG7/ +bG95/2xvef9zdn//b3J8/3Fzev9vcnr/a253/2xudf9ucXv/am13/3N1fP9sbnX/cHN9/25xe/9qbXf/ +bnF6/25xef9tcHr/bXB6/2ptd/9qbXf/bG95/2psc/9qbHP/Z2p0/2dqcf9sbnX/bnF7/2psc/9maXP/ +bG95/2xvef9gY2z/Z2p0/21vc/9ucHf/bnB3/2psc/9sbnX/bG95/3N1fP9qbXf/bnF7/3Z4fP9wcnn/ +d3l//3Bzff9qbXf/c3V8/2xudf9sbnX/amxz/3V3ff9zdXz/c3V8/2psc/9ucHf/b3F4/25wd/9xc3n/ +bnB3/2ptd/9sbnX/bnB3/2xvef9qbXf/aWx2/29xeP91d33/dnh8/3N1fP9sbnX/dnh8/3d5f/9zdXz/ +bnB3/3V3ff9zdXz/bW9z/2xudf92eHz/d3l//3Bzff9sb3n/Z2p0/3Bzff9ucXv/bG95/2ptd/9qbXf/ +am13/21vc/91d33/eHl9/29xdf9ucHf/bG51/3Z4fP9sbnX/dXd9/2xudf93eX//bnB3/21vc/9tb3P/ +c3V8/2Rncf9wcnn/dXiB/3Bzff9ucXv/dXiB/4GDiv91eIH/bnF7/25wd/9ucHf/bG95/3Z4fP9ucHf/ +bG95/25wd/9qbXf/d3l//25wd/9sb3n/c3Z//25wd/9wc33/Zmlz/3N2f/9zdn//bnF7/2xvef93eX// +dXd9/3Bzff9ucHf/am13/3Bzff9wc33/bnB3/2ptd/92eHz/cHN9/29xdf91d33/bnF7/25xe/9wcnn/ +Z2p0/3d6g/9zdn//c3Z//3Bzff9ucXv/cHJ5/3Byef91eIH/bnF7/2xvef91d33/bnB3/3N2f/95e4H/ +bnB3/2xvef91d33/cHN9/2ptd/9nanT/bG95/2Zpc/9nanT/Zmhu/2dqcf9kZ3H/c3V8/25xe/9maXP/ +am13/2Zpc/9qbHP/am13/2ptd/9kZ3H/cHN9/2dqdP9wcnn/bG95/2BjbP9qbHP/amxz/2ptd/9sbnX/ +cHN9/25xe/9wc33/bnF7/25xe/9ucXv/am13/3N1fP9zdXz/c3V8/2xudf9zdXz/dnh8/3Byef9ucHf/ +dXd9/3N1fP9ucXv/cHJ5/2ptd/9ucXv/am13/3Bzff9sb3n/bG95/25wd/9ucHf/bG95/3Bzff9ucXv/ +Z2p0/3Bzff9wc33/eXuB/3V3ff92eHz/Z2px/2xvef9wcnn/Z2p0/3N2f/9nanT/d3l//3Bzff9tb3P/ +bnB3/29xdf9zdn//d3l//3Bzff9sb3n/bG95/3V4gf94eX3/bnB3/3N1fP9zdXz/cHJ5/2xvef9zdn// +amxz/2psc/9nanT/bnF7/2hqdP9ucHb/bXB4/2xvdv9ucHf/dXd9/29xdf92eHz/b3F1/3Z4fP9zdXz/ +bnB3/3Byef9wcnn/cXN6/3N1fP9wcnn/cHJ5/3Z4fP9ucXv/bG95/2xvef9sb3n/bG95/3V4gf9zdXz/ +cHJ5/3V4gf9wc33/am13/25xe/9ucHf/bG95/25wd/9vcXX/bG51/3N1fP91d33/bG51/3Bzff9zdXz/ +bnB3/3N1fP9sbnX/Z2px/2xvef9vcXX/bnB3/2Rncf9zdXz/bG95/2xvef9maXP/bG95/2hrdf9wcnn/ +cHJ7/3J0fP9ucHf/Z2p0/25xe/9zdXz/b3J7/2ptdf9sb3n/c3V8/3V3ff9sb3n/bG51/3V3ff91eIH/ +bnF7/3Byef92eHz/dXd9/2xudf9sbnX/dnh8/3d6g/91d33/cHN9/2ptd/91eIH/d3qD/3d6g/9ucHf/ +bG95/25wd/9ucHf/dXiB/3l7gf9wc33/c3V8/3N2f/9+gYr/eXuB/35/g/92eHz/f4GH/3V3ff91eIH/ +dXd9/35/g/9wcnn/eHl9/31+gf93eX//eHl9/3d5f/+Fh43/fn+D/3l7gf92eHz/dXd9/3Bzff9+gYr/ +c3Z//3Bzff9sb3n/cHN9/3l7gf9wcnn/c3V8/3V4gf9zdXz/dXiB/2dqdP9zdn//c3Z//3Bzff9sb3n/ +dXd9/3Z4fP9wc33/bG51/2Zpc/9wc33/cHJ5/29xdf9ucHf/dXd9/3Byef9ucHf/eHl9/2xvef9ucHf/ +cHJ5/25wd/93eX//dXd9/3Byef9ucHf/bnB3/2xudf9vcXX/dXd9/2xudf9sbnX/c3V8/2ptd/9wcnn/ +eHl9/3Bzff91eIH/dXiB/3V3ff9wcnn/bnB3/3V3ff9qbHP/cHN9/3Byef9ucXv/bG95/3V4gf93eX// +Z2p0/25xe/9sb3n/bnB3/3N1fP9ucHf/bG51/3Bzff9nanT/am13/25xe/9maXP/am13/2xudf9sbnX/ +bG51/3V3ff9ucHf/cHJ5/3N1fP9ucXv/c3V8/25wd/9ucHf/cHJ5/3N1fP9vcXX/dXd9/3h5ff9wcnn/ +cHJ5/3V3ff9zdXz/cHJ5/25wd/9qbHP/bnF7/2xudf9sb3n/bG95/2dqdP9nanT/Zmhu/2Rncf9nanT/ +Z2px/1xfaP9maG7/ZGdx/3Byef9maXP/bnB3/1lcZf9iZW7/Zmhu/2Jlbv9nanT/XWBq/2xvef9nanT/ +amxz/2xudf9qbHP/bnF7/3d5f/9qbXf/Zmlz/2xudf91eIH/d3l//2xudf9zdXz/cHJ5/3N1fP9sb3n/ +dXd9/2Zpc/9maG7/Z2px/2ptd/9oanT/bnB5/29xeP9ucHj/bG51/3Z4fP9vcXX/dnh8/29xdf91d33/ +bnF7/3Bzff91eIH/dHZ+/3N1ff9zdn3/bnF7/25xe/91d33/cHJ5/25wd/9ucHf/bnB3/25wd/9wc33/ +b3F1/29xdf9ucHf/bG51/2Zobv9tb3P/bW9z/2xudf9sbnX/am13/2psc/9wc33/c3V8/2xudf9wc33/ +cHN9/25xe/9wc33/bW9z/2xudf9zdXz/b3F1/25wd/9maG7/dnh8/3Byef9zdXz/Z2px/3Byef9ucHj/ +cHJ6/25xef9tb3b/bG51/2RmbP9sbnX/bnF4/25wd/9sb3j/dHZ+/3V4gf95e4H/bnF7/3Byef91eIH/ +dnh8/3Byef9ucXv/c3V8/3N1fP9ucHf/b3F1/3d5f/97fYP/dXd9/3Bzff9sb3n/d3l//3Z4fP9zdXz/ +amxz/2xudf9qbXf/am13/2xvef9zdXz/amxz/2psc/9kZ3H/c3V8/2Zpc/9qbXf/ZGdx/3Byef9iZW7/ +ZGZs/2Rncf9maXP/XV9l/2Rncf9nanT/ZGZs/2BjbP9iZW7/cHN9/2ptd/9maG7/YmVu/2Jlbv9iZW7/ +cHJ5/2dqcf9kZ3H/YGNs/2Rncf9kZ3H/YmVu/2dqcf9qbXf/bG51/2ptd/9iZW7/bnF7/25xe/9qbXf/ +bG51/3N1fP91d33/c3V8/25wd/9qbHP/cHN9/3Bzff9wcnn/cHJ5/3d6g/91eIH/cHJ5/3t9g/9wc33/ +c3Z//3N2f/9wcnn/eXyG/3l7gf9ucXv/cHJ5/2xvef9wcnn/bnB3/3d6g/9ucXv/cHJ5/3t9g/9wc33/ +d3qD/3d6g/9wc33/d3qD/3t9g/9zdn//cHN9/3Byef91d33/Z2p0/2xvef9ucHf/c3Z//25xe/93eoP/ +eXuB/2xvef9zdn//cHJ5/25xe/9wc33/b3F1/2xudf9zdXz/am13/25wd/9wcnn/Zmlz/2ptd/9sbnX/ +bG95/2ptd/9zdXz/bW9z/25xe/9zdXz/c3V8/3Bzff9sbnX/bnB3/3Bzff9sb3n/bG51/3V3ff93eX// +bnB3/3Byef9wcnn/cHJ5/3Byef91d33/bG51/3Byef9tb3P/bnF7/25xe/9sb3n/am13/2xudf9nanT/ +am13/2dqdP9iZW7/am13/25xe/9zdn//bG95/3V3ff9kZmz/bW9z/21vc/9ucHf/dXd9/2dqdP95e4H/ +cHN9/2xvef9sb3n/bnF7/3Bzff93eX//bnF7/2xvef9ucXv/e36H/3d6g/9ucHf/dXd9/3Byef9wcnn/ +bnB3/3N1fP9qbHP/bG51/2xudf91d33/bW93/29xeP9tcHj/aGt1/2Vocf9ucXv/amxz/3d5f/9sbnX/ +bnF7/3Byef9wcnn/cXN6/3F0ev9wc33/c3Z//3Byef9wc33/eXuB/3Bzff9wc33/bnF7/3Bzff9ucXv/ +cHN9/25wd/9ucHf/cHJ5/21vc/9nanH/b3F1/25wd/9ucHf/bG51/2ptd/9sbnX/dXd9/3N1fP9qbXf/ +cHN9/3Byef9wcnn/c3Z//2xudf9sbnX/c3Z//2ptd/9ucHf/ZGdx/3N2f/9zdn//c3Z//2ptd/9zdn// +cXN7/3N2gP91eIH/cnV//3N1fP9qbXf/cHJ5/29xeP9ucHj/bW94/3J0e/90d3//eXyG/3Bzff9ucXv/ +d3l//3d5f/9ucXv/c3V8/25xe/9wcnn/bnB3/25wd/91d33/e36H/3Z4fP9wcnn/bnB3/3V4gf91d33/ +dnh8/25wd/9wcnn/c3V8/3Byef9zdn//e32D/2xvef9sb3n/Z2p0/3d6g/9zdn//dXiB/25wd/93eX// +Z2p0/2xvef9ucHf/c3V8/2ZobP9sbnX/c3V8/2psc/9nanT/amxz/3l7gf9ucXv/Zmlz/2Zobv9sbnX/ +ZGdx/3Bzff9maG7/amxz/2Zpc/9qbHP/bnB3/2xudf9ucHf/cHJ5/2xvef9wc33/Z2p0/3Bzff9wc33/ +dXiB/3N2f/93eoP/d3qD/3l7gf91d33/c3Z//3V4gf95fIb/cHN9/3N1fP95fIb/d3qD/3V3ff95fIb/ +cHN9/3V4gf9wc33/bnB3/3d5f/91d33/bnB3/2xudf9sbnX/bW9z/25wd/94eX3/bG95/2xvef93eX// +bnB3/3N1fP9zdn//bnF7/3d6g/93eX//cHN9/3Bzff9zdn//dXd9/2psc/9ucHf/bW9z/2xvef9qbXf/ +c3V8/3V3ff9kZ3H/bG51/2dqcf9maG7/Z2p0/2Rncf9kZ3H/bG95/2dqcf9qbHP/Z2p0/2Rncf9qbHP/ +Z2px/2psc/9qbHP/cHN9/2ptd/9zdXz/c3V8/3N1fP91d33/cHN9/3Bzff91eIH/bnF7/25wd/9zdn// +d3qD/3Bzff9zdn//c3Z//3N2f/91eIH/dXiB/3Byef93eoP/cHN9/3d6g/95fIb/d3qD/3d6g/9wc33/ +c3Z//3V4gf9wc33/am13/3N1fP93eoP/e32D/3l7gf95fIb/am13/3N2f/9zdXz/c3V8/3l7gf9sb3n/ +eXuB/3V4gf9ucHf/bnB3/25xe/9zdXz/d3l//25xe/9nanT/bnF7/3d6g/93eoP/bnF7/3Bzff91d33/ +cHN9/25xe/93eX//Zmlz/2xvef9zdXz/e32D/3Bzff9zdXv/dHZ//3F0fv9sb3n/d3qD/3N1fP93eoP/ +cHJ5/3N2f/9zdn//c3Z//3Bzff9zdX3/dHeA/3V4gf9zdn//cHN9/3d6g/9wc33/bnB3/2dqdP9ucHf/ +cHJ5/3Byef9ucHf/b3F1/3Bzff9vcXX/Z2px/2xudf9sbnX/amxz/2ptd/9nanT/Z2p0/25xe/9sb3n/ +amxz/2ptd/9ucXv/am13/3N1fP9qbXf/Z2p0/25xe/9nanT/bG51/2RmbP9wcnn/bnF7/2xvef9kZ3H/ +bG95/2lsc/9ucXr/b3F5/2xvef9ucHf/Z2p0/2xvef9ucHf/bG52/2dqdP9tcHf/bG94/3Byef9nanH/ +Zmlz/3Byef94eX3/bnB3/3N1fP9wcnn/c3V8/2xudf9ucHf/c3V8/3l7gf9zdXz/bG95/21vc/92eHz/ +c3V8/3Bzff9sbnX/bG51/21vc/9sbnX/bnB3/3V3ff9tb3P/bG51/2dqdP91eIH/c3V8/3Byef9tb3P/ +eHl9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/am13/3V3ff9ucHf/bG51/25wd/9+gIb/cHN9/3Byef9tb3P/ +bG51/2psc/97fYP/bG51/2ptd/9qbXf/b3F1/3N1fP9ucHf/bG51/3N1fP9ucHf/cHN9/2Zpc/9qbXf/ +am13/2ptd/9qbHP/cHN9/2xvef9wc33/bG51/2Rncf9qbHP/am13/2ptd/9sbnX/c3V8/2ptd/9nanT/ +d3l//2xudf9sb3n/bG51/2xudf94eX3/dXd9/3Byef9vcXX/bG95/25wd/9sb3n/eXuB/3Bzff9wcnn/ +eXuB/3Byef9zdn//eXuB/3Bzff9ucXv/dXd9/3V3ff9wc33/c3Z//3N2f/9sb3n/cHJ5/3Byef9wc33/ +cHJ5/3d5f/97fYP/cHJ5/25xe/9ucHf/b3F1/3Byef9sbnX/am13/3N1fP9tb3P/am13/25xe/9kZ3H/ +am13/2ptd/9ucXv/bG51/3N1fP9ucHf/c3V8/3N1fP9ucHf/dXd9/25xe/9qbXf/cHN9/2xudf9sbnX/ +c3V8/3V3ff9ucHf/dXd9/3Byef9wcnn/cHJ5/3Byef9tb3P/cHN9/2ptd/9sb3n/am13/25xe/9sb3n/ +am13/2dqdP9qbXf/am13/2BjbP9qbHP/cHN9/3V3ff91d33/dnh8/2Vmav9ucHf/bnB3/2xvef91eIH/ +Z2p0/3N2f/9zdn//bnF7/2xvef9ucXv/c3Z//3d6g/9ucXv/am13/25xe/95e4H/eXuB/21vc/9zdXz/ +c3V8/2xudf9sbnX/c3V8/2Zobv9qbXf/bG51/3V3ff9rbXX/bG52/25vdf9sb3j/Zmlz/3Bzff9sbnX/ +d3l//21vc/9sbnX/c3V8/3V3ff9vcnv/bnB3/29xef9zdn//bnF7/3N1fP91eIH/bnF7/25xe/9ucHf/ +cHN9/3N2f/9zdn//cHJ5/3N1fP91eIH/cHJ5/2Zpc/9ucXv/bnB3/29xdf9ucHf/bG95/3Bzff91eIH/ +cHN9/25xe/9ucXv/c3Z//29xdf92eHz/bW9z/2psc/9wcnn/amxz/25wd/9nanH/c3Z//3Bzff9ucXv/ +Z2px/3N1fP9ucHf/cHJ7/3R2f/9xdH7/cHJ5/2dqdP9sb3n/cHJ5/29xeP9tb3j/cnR6/3R2ff93eX// +bnB3/3Byef93eX//dnh8/2ptd/9wcnn/cHJ5/3Byef9qbHP/cHJ5/3h5ff93eX//dXd9/25xe/9vcXX/ +eHl9/3d5f/91eIH/c3V8/3N1fP9wc33/cHJ5/2xvef9zdn//bG95/2xvef9sb3n/d3qD/25xe/9wc33/ +bG95/3d5f/9sbnX/b3F1/25wd/9ucHf/ZGZs/2Zpc/9wc33/amxz/2dqdP9sbnX/d3l//2dqdP9sb3n/ +Z2px/2Zobv9gY2z/eXuB/2Zpc/9sbnX/amxz/2xudf9zdXz/bW9z/2xvef91d33/bG95/3V4gf9sb3n/ +c3Z//3d6g/91eIH/cHN9/3l7gf93eoP/foCG/3N2f/9ucXv/c3V8/3N2f/91eIH/dXd9/36Ahv9zdn// +c3V8/36Biv9zdXz/cHN9/29xdf9vcXX/dnh8/3V3ff9wcnn/bW9z/25wd/9ucHf/am13/3d5f/9ucXv/ +am13/3h5ff9sb3n/c3Z//3t+h/9sbnX/bG95/3N1fP9ucXv/cHN9/25xe/9ucXv/Z2p0/2ptd/9sbnX/ +cHJ5/25wd/9zdn//dXd9/2xvef9vcXX/bW9z/2xudf9ucXv/am13/21vc/91d33/bnB3/25wd/91d33/ +Z2px/25wd/9wcnn/c3Z//25wd/95e4H/d3qD/3d6g/93eX//cHN9/3Z4fP9wcnn/bnB3/3N1fP9sbnX/ +bnB3/3V3ff93eX//cHJ5/3N1fP9wcnn/c3V8/3Byef91d33/bW9z/3V3ff9ucHf/cHJ5/3N1fP9ucXv/ +am13/2xudf9qbXf/bG95/2xudf9iZW7/am13/3N1fP9zdXz/c3V8/3d5f/9lZmr/bW9z/2xudf9ucHf/ +c3Z//2dqdP9wc33/c3Z//3Byef9sbnX/cHJ5/3N1fP93eoP/bG51/2psc/9ucHf/d3l//3d5f/9ucHf/ +dXd9/3V3ff9ucHf/bnF7/3d5f/9qbXf/cHJ5/29xdf91eIH/bnF7/3Fze/9ydHz/bnF7/2ptd/91d33/ +bnB3/3V3ff9vcXX/bnF7/3N2f/93eoP/cnV8/25wd/9tb3j/dnh8/25wd/9vcXX/bnB3/2xvef9qbXf/ +Zmlz/25xe/9qbXf/am13/2dqcf9kZ3H/Z2p0/2Zobv9gY2z/Z2p0/2Zpc/9maXP/amxz/2Rncf9qbXf/ +am13/2dqdP9sb3n/am13/3Bzff9sbnX/dnh8/29xdf9qbHP/cHN9/3Byef9zdn//Zmlz/3Bzff9wc33/ +cHN9/2ptd/9zdn//bnB3/3FzfP9wcnr/a211/25wd/9sbnX/bG95/25weP9xc3r/cHN7/3J1fv94eoP/ +fYCJ/3N2f/93eoP/eXyG/3d6g/9zdXz/dXiB/3d6g/9wc33/am13/25wd/93eoP/eXuB/3d5f/9zdn// +bnF7/3t9g/95e4H/c3Z//3Byef9wcnn/cHN9/2xvef9ucHf/dXd9/3Byef9qbHP/b3F1/3d6g/9wc33/ +c3Z//2xvef91d33/am13/25wd/9sb3n/bnF7/2dqcf9sbnX/dnh8/29xdf9qbXf/bG51/3t9g/9qbXf/ +bnF7/2xudf9sbnX/Z2px/3t9g/9qbHP/bnB3/2xudf9tb3P/bnF7/25wd/9ucHf/dXd9/3Byef91d33/ +amxz/25wd/91d33/dXd9/25wd/9zdXz/bG51/3N1fP9sbnX/ZGZs/2dqdP9qbXf/am13/2dqdP9sb3n/ +amxz/2Rncf9zdXz/Zmlz/2dqdP9kZ3H/ZGZs/2ptd/9sb3n/Z2p0/2Jlbv9kZmz/XWBq/2BjbP9qbXf/ +Zmlz/2Jlbv9sb3n/am13/2xvef9zdXz/Z2p0/2xudf9ucXv/bnF7/3Byef9zdXz/c3V8/2psc/9ucHf/ +bG95/2xvef9tb3P/c3V8/3h5ff9sbnX/bnB3/25wd/9wc33/cHN9/2xvef9ucHf/dXd9/3Bzff9ucHf/ +cHN9/2dqdP9sb3n/c3Z//3Z4fP9qbXf/c3V8/2ptd/9sbnX/cHN9/2xvef9zdXz/bnF7/2xudf9sb3n/ +amxz/2psc/9sb3n/bG95/2Zpc/9qbXf/Z2p0/25xe/9qbXf/am13/2xudf9wc33/bG51/2xvef9sb3n/ +bnF7/3Byef9ucHf/bnB3/3N1fP9tb3P/Zmhu/29xdf91d33/dXd9/3d5f/93eoP/amxz/25wd/9ucXv/ +c3Z//3d5f/9sb3n/c3Z//3l7gf9zdXz/am13/3N2f/93eoP/eXyG/3Byef9sb3n/cHN9/3l8hv97fof/ +cHN9/3t9g/97fYP/dXd9/3Bzff97fYP/am13/25xe/9ucHf/eXuB/21wef90dnz/dXd//3R3gP9zdXz/ +eXuB/3Bzff95fIb/c3Z//3Bzff91eIH/eXuB/3Z5gv9ydHz/c3aA/3p9g/9zdn//cHN9/3Bzff9ucXv/ +c3Z//3Bzff93eoP/d3qD/3V4gf9zdXz/cHN9/3N2f/9sb3n/Zmlz/3Bzff9ucHf/c3V8/3N2f/9sb3n/ +bG95/3Byef9ucXv/cHN9/25wd/9wc33/bnB3/3h5ff9vcXX/amxz/25xe/9vcXX/c3V8/2Zpc/9wc33/ +c3V8/3Byef9sb3n/d3qD/3Byef9vcnv/cHJ6/29xef9ucHf/amxz/21vc/9sbnX/b3F1/25wd/9wcnr/ +cXR9/3V3ff9sb3n/c3V8/3h5ff93eoP/cHN9/25xe/9zdn//cHN9/2dqdP9wc33/e32D/3l8hv93eoP/ +c3Z//3Bzff93eX//dXd9/3Byef9ucHf/b3F1/3Bzff9ucXv/bnF7/3N2f/9ucHf/Z2p0/2ptd/93eX// +bnB3/25wd/9qbHP/dXd9/2xudf9vcXX/bnB3/2xvef9maXP/bG95/3Z4fP9vcXX/bG51/25xe/9/goz/ +dXiB/3N2f/9ucHf/b3F1/2psc/9+f4P/bG51/29xdf9ucHf/b3F1/3Byef9sbnX/bnB3/3V3ff9wc33/ +c3Z//2psc/9vcXX/dXd9/3N1fP9qbXf/bnF7/2xudf9wc33/amxz/2BjbP9kZ3H/amxz/2ptd/9maXP/ +cHN9/2xudf9maXP/d3l//2xudf91d33/bG51/2ptd/91d33/bnF7/2ptd/9nanH/Zmlz/2Rncf9kZ3H/ +cHN9/2xvef9nanT/dXd9/25xe/9ucXv/c3V8/25wd/9sb3n/dnh8/3Byef9ucXv/c3V8/3Bzff9maXP/ +bnB3/3Byef9wcnn/bnB3/3N2f/95e4H/cHN9/3Byef9wc33/dXiB/3N2f/9wc33/cHN9/3t9g/93eoP/ +dXiB/3t9g/9zdn//d3qD/3l8hv95fIb/cHN9/3l8hv9zdn//cHN9/3l7gf9ucXv/c3Z//3V3ff9vcXX/ +c3V8/25wd/9wcnn/dXd9/3Z4fP9zdXz/cHJ5/2xvef9ucXv/bnF7/2ptd/9qbHP/bnF7/2ptd/9qbHP/ +am13/3Bzff9wc33/am13/2xudf9ucXv/bG51/2Rncf9sbnX/c3V8/3V3ff9zdXz/c3V8/2BjbP9maXP/ +am13/2xudf9wc33/Zmlz/25xe/91d33/bG51/2Zpc/9sb3n/bnF7/3V3ff9maXP/YGNs/2dqcf9wcnn/ +cHJ5/2dqcf9ucXv/bG95/2psc/9maG7/am13/2BjbP9nanH/Z2px/3V3ff9qbHP/bnB3/29xd/9sbnX/ +amxz/2xvef9maXP/cHJ5/2psc/9nanH/bG95/3Bzff9ucXr/aGtz/2ptd/9zdXz/bW9z/2xudf9sb3n/ +bG95/2ptd/9maXP/bnF7/2ptd/9qbHP/ZGdx/2dqcf9qbXf/Z2p0/2Zpc/9qbXf/bG51/2xudf9tb3P/ +bG51/25wd/9sb3n/cHJ5/3N1fP9sb3n/d3l//3Bzff93eX//bG95/2ptd/9ucXv/cHJ5/3N2f/9qbXf/ +d3qD/3N2f/9zdn//bnB3/3N2f/9ucHf/bnB4/2ptdv9rbnf/bG51/2Rncf9sbnX/am13/2psc/9pbHT/ +bXB4/2xueP9wc33/bG51/3Byef94eX3/cHN9/3Bzff9sb3n/c3Z//25xe/9nanT/bnF7/3d5f/91eIH/ +c3Z//25xe/9zdn//eXuB/3Z4fP91d33/bG51/21vc/9ucHf/bG51/2xudf9zdXz/bG51/2Rncf9maXP/ +cHJ5/2dqcf9maXP/YmVu/25xe/9nanT/bG51/2xudf9qbXf/Zmhu/21vc/9zdXz/bW9z/2ptd/9sb3n/ +f4GH/25xe/9sb3n/bG51/2xudf9qbHP/fX6B/2psc/9sbnX/b3F1/29xdf9zdXz/bG95/2xvef9wc33/ +cHN9/3Bzff9qbHP/cHJ5/3V3ff9zdn//bnF7/3V3ff9ucHf/dXiB/3Byef9nanH/bnF7/3Bzff93eoP/ +bG95/3l7gf93eoP/d3l//3+Bh/9zdXz/d3qD/3Bzff9wc33/eXyG/3d6g/9ucXv/bnB3/2xvef9sbnX/ +am13/3V3ff9wc33/Z2p0/3h5ff9zdXz/c3V8/3d5f/9sb3n/bG95/3h5ff9ucHf/c3V8/3V3ff91d33/ +Z2px/25wd/9wc33/bG95/2xudf9sbnX/c3V8/2ptd/9maXP/amxz/2ptd/9ucXv/am13/2ptd/9zdXz/ +cHN9/2ptd/9ucXv/ZGdx/2ptd/9nanT/cHJ5/2Rncf9zdXz/am13/2ptd/9ucXv/am13/3Bzff9wc33/ +bG95/3V3ff9qbXf/bnB3/3N2f/91eIH/cHN9/3V3ff91d33/dXd9/3Bzff9wc33/cHN9/3Z4fP9wc33/ +cHN9/3N2f/93eoP/d3qD/25xe/9zdXz/dXiB/3Byef9sb3n/cHN9/3l7gf91eIH/dXd9/3d5f/9kZ3H/ +bnB3/2xudf9zdXz/eHl9/25wd/91d33/dnh8/2ptd/9maXP/c3V8/3N1fP93eX//bG51/2psc/9sbnX/ +dXiB/3V3ff9vcXX/c3Z//3N2f/9sb3n/bnB3/3N2f/9sb3n/bG95/21vc/95e4H/b3F2/3J0ev90dn7/ +dnmC/3V3ff95fIb/dXd9/3t+h/9wc33/c3V8/3V4gf93eoP/dnmB/3Fzev9vcXf/dXh+/29xdf9tb3P/ +bG51/25wd/9ucHf/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/29xdf9maG7/cHJ5/2ptd/9nanT/ +amxz/2Zpc/9sbnX/bG95/2xvef9qbXf/amxz/3Byef9maXP/bG95/2Zobv9dYGr/YmVu/2Zobv9maXP/ +XWBq/2ptd/9nanT/Zmhu/2Jlbv9nanT/Zmhy/2hqcf9oa3P/aWtz/2ptd/9qbHP/bG51/25wd/9rbXL/ +aGty/2ttc/9pbHX/Z2p0/2Vocv9maXP/bnF7/3Bzff9ucHf/bG51/3N1fP9sbnX/Zmlz/2xvef9zdXz/ +c3V8/3N1fP9qbHP/bnF7/3N1fP9wc33/bnF7/2Zpc/9nanH/Zmlz/2Rncf9sbnX/cHN9/2psc/9kZ3H/ +ZGdx/25wd/9iZW7/ZGdx/11gav9nanT/ZGdx/2Zobv9qbHP/Z2px/2Jlbv9nanT/cHN9/2dqdP9qbXf/ +bG95/36Biv9ucXv/bG95/21vc/9tb3P/b3F1/4CChv9ucHf/cHJ5/3Byef9zdXz/c3Z//3Byef9wc33/ +cHN9/3N2f/9wc33/am13/25wd/9wc33/dXd9/25wd/9ucHf/bG51/3Bzff9nanT/YmRq/2dqdP9qbXf/ +bG95/2Zpc/9ucXv/Z2p0/2Jlbv9ucHf/YmVu/2dqdP9nanH/Z2px/3Byef9zdXz/amxz/2dqcf9nanT/ +Zmlz/2dqdP9sb3n/am13/2Zpc/91d33/bG95/3Byef93eX//dXiB/3V4gf97fof/d3qD/3t9g/93eoP/ +c3Z//2Zpc/9zdXz/c3V8/3V4gf9sb3n/cHJ5/3d5f/9ucXv/bG51/25xe/9wc33/dXiB/3N1fP91d33/ +eXuB/3t9g/91eIH/foCG/3V3ff93eoP/dXiB/3V4gf9sb3n/d3qD/3N2f/9wcnn/dXiB/3V4gf95e4H/ +dXiB/3Bzff93eX//c3Z//3Byef9wc33/dXiB/3N2f/91d33/c3V8/3N1fP9wcnn/bnB3/3Byef92eHz/ +cHJ5/25wd/9ucHf/c3V8/3N1fP9sbnX/bW9z/3N2f/9wcnn/amxz/25xe/93eX//dXiB/3N2f/9zdn// +Z2p0/2ptd/9ucXv/cHN9/3V4gf9wcnn/c3Z//3d5f/9sb3n/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/ +b3F1/3h5ff95e4H/b3F1/3N1fP91d33/bG95/2ptd/91d33/amxz/2ttdP9sbnX/c3Z//2ptd/9vcXj/ +cHJ3/25wd/9tb3P/cHJ5/2xudf93eX//am13/21vc/9zdXz/dXd9/3J0e/9sb3n/bXB6/3Bzff9sbnb/ +amxz/2ptd/9rbnj/bG51/2tud/9wcnn/bG95/25wd/9ucHf/cHJ5/3V3ff9ucHf/Zmlz/3R3gP9tcHf/ +bnB3/3Fzef9ucHf/cnR7/3Bzff9ydX7/cHJ8/3Bzff93eoP/cHN9/3h6gP9zdn7/bnF7/3Byef9vcXj/ +bnF7/2hrdf91d33/bW92/25wd/9vcXj/eHl9/29xef9wcnn/cHN8/3Z3fP95e4H/dXd9/3d5f/96fIP/ +cnV+/3F0e/91d37/dniA/3V3ff9wcnn/c3Z//3Z4f/93eoP/dXiB/3Bzff91eIH/bnF7/2ptd/91eIH/ +e32D/3d5f/93eX//c3V8/3d6g/9zdn//dnh8/3N1fP9ucHf/bnF7/25xe/9vcXX/bG95/3V3ff9vcXX/ +amxz/2xudf92eHz/bnB3/3Byef9nanT/cHN9/2ptd/9ucHf/c3Z//3Byef9qbHP/b3F1/3Z4fP9qbHP/ +bG51/25wd/9/gYf/cHJ5/2ptd/9tb3P/bnB3/2ptd/9/gYf/bnB3/29xdf9ucHf/bG95/3Byef9tb3P/ +am13/2ptd/9wc33/bnF7/2dqdP9sbnX/c3V8/3h5ff9wcnn/bnF7/2xvef9wcnn/am13/2Vmav9sbnX/ +bnF7/3Byef9sbnX/dnh8/3Bzff9ucHf/eXuB/3V3ff93eoP/cHN9/3N2f/97fof/e36H/3V4gf91d33/ +dXd9/25xe/9zdXz/dXiB/3V4gf9wc33/e32D/3d6g/95fIb/e36H/2xvef9ucXv/d3l//25xe/9zdn// +c3Z//3N2f/9maG7/bnB3/3N1fP9wcnn/b3F1/21vc/9zdXz/bG51/2dqcf9wcnn/bnF7/3N1fP9ucHf/ +bG95/3V3ff9zdXz/bG51/3Byef9ucHf/c3V8/25wd/91d33/am13/3V4gf9ucXv/amxz/2xvef9ucXv/ +cHN9/3Bzff9wcnn/c3V8/3Byef9wcnn/cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/ +d3l//25wd/9wcnn/bnB3/3V3ff91d33/bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9wcnn/ +c3V8/2Zobv9nanT/bnF7/2xvef91d33/bG51/2ptd/9zdXz/Z2p0/2Rncf9ucXv/c3V8/3N1fP9qbXf/ +am13/2psc/93eX//d3qD/2xudf9ucXv/bG95/2ptd/9qbXf/c3V8/2ptd/9xc3r/bnB3/3d5f/9ucHf/ +cHJ5/29xd/9ucXv/amxz/25wd/9ucHf/d3l//25wd/9vcXX/dXd9/3d5f/9wcnn/bG52/25xe/9xdHz/ +am13/2ttdf9qbXf/bG51/2xudf9rbnf/bXB6/2xudf9qbXf/bG51/3Byef90dnz/cHJ5/2hrc/9ydX7/ +aGt1/25wd/9wcnn/bnB4/25weP9ydHv/b3J7/29ye/9vcXj/dXiB/3F0ff9zdn//bG95/2xvef9ucHf/ +cXN3/3Byef9oa3P/cnR8/2xveP9qbXf/aWx1/3R2ff9pbHP/am13/2dqc/9pbHb/bG51/2Rncf9maG7/ +bG95/2psc/9maXP/bG94/29xef9sb3f/am12/2ttdv9ydHr/c3V8/3Bzff9vcXX/cHJ5/2xvef9qbXf/ +cHN9/3d5f/93eX//d3l//3Byef91eIH/c3Z//3d6g/93eoP/cHN9/3N2f/9wc33/bG95/29xdf91d33/ +b3F1/2psc/9sbnX/dnh8/25wd/9sbnX/bG51/25wd/9qbHP/bG51/2xvef9wcnn/amxz/2xudf92eHz/ +Z2px/25wd/9ucHf/f4GH/3Z4fP9zdXz/cHJ5/25wd/9qbXf/gYOK/2xvef9ucXv/bnB3/3V4gf9zdn// +c3Z//3N2f/91eIH/e32D/3t9g/92eHz/eXuB/31+gf9/gYf/eXuB/3V4gf9zdn//dXiB/3Bzff9qbXf/ +c3V8/3d6g/93eoP/c3Z//3t9g/93eoP/bnF7/3t9g/9ucXv/dXiB/25xe/9vcXX/eXuB/3d6g/9sb3n/ +bnB3/25wd/9nanH/bW9z/25wd/9sbnX/Z2px/3N2f/9ucXv/c3Z//3V3ff91d33/d3qD/36Ahv91eIH/ +eXuB/3d6g/93eoP/bG95/3t9g/97fYP/d3qD/3V3ff91d33/dXiB/3V4gf9ucXv/d3qD/3V4gf9zdn// +bnB3/3Byef95e4H/dXiB/3Byef9zdn//bnB3/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/ +bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/ +bG51/3N1fP9nanT/amxz/2psc/9ucXv/cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/ +ZGdx/2dqdP9cX2j/YGNs/2Zpc/9maXP/bG95/2Rncf9kZ3H/cHJ5/2Zobv9kZ3H/am13/2xvef9zdXz/ +bG95/2xudf9sbnX/d3l//3l8hv9sbnX/c3V8/3N1fP9zdXz/b3F1/3V3ff9sb3n/cnR6/3Fzev90dn7/ +bnF5/3J0e/9wcnf/cHJ5/2xudf9ucHf/bnB3/3d5f/9sbnX/b3F1/3V3ff91d33/cnR7/2xudv9sbnb/ +cXN7/2ttc/9qbHX/bG93/3Fzef9rbXb/bG53/29yev9tcHj/a254/2xvef9ucXn/c3V7/29yev9rbXb/ +cnV//25xef9wcnn/c3V8/3V3ff9ydHn/eXuA/3V3fv90dn3/c3V9/3h7hf91eID/dXd+/3N1fP90dnz/ +cHJ5/3R2fv9xdH3/b3J8/3J1fP9wc3v/a252/29xeP9ydX//bW94/2xveP9nanT/a253/2xudf9qbXf/ +bW9z/3Bzff9qbXf/aGt0/2xvef9zdn3/am11/21veP9sbnb/bW94/2xvef9qbXf/am13/3Bzff9sbnX/ +Z2p0/2xvef9ucXv/c3V8/2xvef9sbnX/c3V8/3N1fP9zdXz/cHJ5/21vc/9qbXf/bnF7/21vc/9ucHf/ +dnh8/21vc/9qbHP/cHJ5/3l7gf9wcnn/bG95/2xvef9ucXv/bnB3/2xvef9zdn//cHN9/2xvef9qbXf/ +eHl9/2dqdP9nanT/bG51/3t9g/9sb3n/cHN9/2xvef9qbXf/Z2p0/3t9g/9qbHP/Z2px/2dqcf9maXP/ +Z2px/2dqcf9qbHP/am13/25xe/9qbXf/Z2p0/2xudf9wc33/c3V8/2xvef9qbXf/bW9z/25wd/9ucHf/ +Zmhu/2xudf9sbnX/c3V8/2dqdP9zdn//c3Z//25wd/95e4H/am13/3V4gf9zdn//cHJ5/3l7gf97fYP/ +cHJ5/3N2f/9wcnn/bG95/3Byef9zdn//dXiB/2xvef91eIH/c3Z//3d6g/91eIH/c3V8/3N2f/97fYP/ +bnF7/3N2f/9zdn//c3Z//2dqdP95e4H/c3Z//25xe/9ucHf/bG95/25xe/9zdXz/Zmlz/3N1fP9zdXz/ +c3V8/25wd/9wcnn/dnh8/3Z4fP9ucHf/cHN9/25wd/9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/ +bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/ +am13/2psc/91d33/am13/2xudf9maXP/bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/ +dnh8/3Byef9zdXz/Zmlz/2xvef9wc33/dXiB/3d5f/9wc33/cHN9/36Biv9wcnn/c3V8/3t9g/9+gIb/ +e32D/3d6g/9wc33/cHN9/3l8hv+Bg4r/dXiB/3t9g/93eoP/eXuB/3N2f/91d33/b3F1/3R2fP9vcXn/ +cnR8/21vdv90dnv/bnB3/3Byef9qbXf/bG95/2xvef93eX//bG51/25wd/93eX//e36H/3Z5gv9tcHr/ +b3J7/3Z3ff9rbnf/bG94/2xveP90dn//bW92/3J1ff9wc33/bW92/21wev9ydX//cHN9/3F0ff9tcHn/ +aWty/21vdv9qbHP/bG94/3V3fv9tcHn/a210/3Z4fv9tb3b/bW92/21veP9ucXr/b3F6/21wef9tb3b/ +cXN6/2xudP9ydHv/b3F5/2xvd/9ydHz/bW93/2tueP90dnz/cXN6/29xeP9sbnX/amxz/2xudf9qbHP/ +bG51/2xudf9wc33/bG51/2ptd/9wc3z/c3V8/21vdv9zdXz/bnB3/25xev9ucHf/cHJ5/25xe/9zdn// +cHJ5/2ptd/9zdXz/cHN9/3V3ff93eX//cHJ5/3V4gf9zdn//dXd9/3Bzff9ucHf/c3V8/3Bzff9zdXz/ +cHN9/3l7gf9wc33/am13/3Byef93eX//am13/2xvef9sb3n/bG95/2ptd/9sbnX/dXd9/3Byef9qbXf/ +Z2p0/3V3ff9nanT/bG51/29xdf9+gIb/dXd9/3V3ff9ucHf/bnB3/25wd/+Bg4r/bnB3/29xdf9vcXX/ +bG51/2xudf9ucHf/bnB3/21vc/91d33/bnB3/25wd/9vcXX/dnh8/3l7gf9zdn//cHN9/25wd/9ucXv/ +bnB3/2dqcf9vcXX/bG51/3N1fP9qbXf/dXiB/3N2f/9ucHf/d3l//2dqdP91eIH/c3Z//3N1fP9zdn// +eXyG/3N1fP93eoP/cHN9/3Bzff9zdXz/bnF7/3V4gf9wc33/eXyG/3V4gf95e4H/d3qD/2xudf9sbnX/ +dnh8/3Byef9zdXz/bnB3/25xe/9gY2z/bnF7/25xe/9ucHf/bG51/2xudf9sb3n/bG95/2dqcf9zdXz/ +bG95/3N2f/9ucHf/bnB3/3N1fP92eHz/b3F1/3Byef9ucHf/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/ +am13/2xudf9ucXv/bG95/25xe/9wc33/bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/ +bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn// +d3qD/3l7gf93eoP/e32D/3Bzff9zdn//d3qD/36Ahv97fof/dXiB/3d5f/+DhYz/dXiB/3V3ff97fYP/ +foCG/3t9g/9zdn//cHJ5/3N1fP93eX//d3qD/2xvef93eX//c3Z//3N2f/9ucXv/dXd9/25wd/94eoD/ +dHeA/3N2f/9ucXv/dnh//2xvef9wcnn/bG51/2xudf9qbHP/eHl9/2xvef9sb3n/d3l//3d6g/91d33/ +bnF7/3Bzff96fIP/bnB3/29xdf9ucXr/d3h8/2xudf9ydHv/bnB3/2ptd/9vcXj/bnF7/2xudf9wcnn/ +b3F4/2Zpc/9rbnX/am13/29yfP93eoD/b3J8/2xvef95e4H/b3F1/2xvef9ucXv/b3J8/3F0ff9vcnv/ +bnF7/3Z4fv9wcnn/dnh+/3J0fP9ydHv/dXd9/2xudv9nanT/dnh+/25xe/9ucXv/am13/2ptdP9qbHP/ +bW9z/2xudf9qbHP/cHN9/2xudf9sb3n/dXd9/3d5f/9wc33/eHqA/3N2f/9sb3n/c3Z//3d6g/91eIH/ +e32D/3N2f/9wc33/e32D/3l8hv9+gIb/e32D/3Bzff95e4H/d3l//3d5f/9ucXv/bnB3/25wd/9ucXv/ +bG95/2xudf9wc33/amxz/2BjbP9nanH/bG95/2Zpc/9nanH/Zmlz/2ptd/9nanT/am13/3V3ff9ucXv/ +am13/2ptd/9zdXz/bG51/2xudf9qbXf/e32D/25xe/9wc33/am13/2ptd/9qbXf/f4GH/2ptd/9qbXf/ +bG95/2ptd/9wcnn/bnB3/25wd/9sbnX/dnh8/25wd/9sb3n/bG95/3V3ff93eX//cHN9/3N2f/9wcnn/ +cHN9/3Byef9nanT/cHJ5/3Byef9wc33/am13/3N2f/9zdn//cHJ5/3l8hv9ucXv/dXiB/3Bzff9vcXX/ +bnB3/3h5ff9tb3P/bG95/2psc/9qbHP/Z2p0/2ptd/9ucXv/Zmlz/2xvef9sbnX/am13/25xe/9sbnX/ +bW9z/3h5ff9wc33/c3V8/3N1fP9wc33/amxz/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/3Byef9maXP/ +bnF7/2xudf9ucXv/am13/2xvef9zdXz/cHN9/2xudf9wcnn/bG51/3Byef9ucXv/bG95/2ptd/93eX// +dXd9/3Byef9ucHf/c3V8/3N1fP91d33/c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/ +eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/ +bG95/2xvef9wcnn/am13/3Bzff9nanT/Z2p0/25xe/9zdXz/dXd9/2xudf9sbnX/c3V8/2xudf9qbXf/ +cHN9/3Z4fP9wcnn/bnB3/2xudf9tb3P/dXd9/3V4gf9sbnX/dXd9/3V3ff91d33/c3V8/3Z4fP9vcXX/ +c3Z//3V3ff9sbnX/Z2p0/3V3ff9qbXf/bnF7/2dqdP9qbHP/Z2p0/3V3ff9ucHf/bnB3/3N1fP92eHz/ +dXd9/3Byef9wcnn/eXuB/25wd/9sb3n/c3V8/3Z4fP9ucHf/cHJ5/21vc/9sbnX/cHJ5/3N2f/9wcnn/ +c3Z//3N2f/9qbXf/c3V8/3N1fP93eoP/eXyG/25xe/9qbXf/fX6B/21vc/9nanT/bnF7/2xvef9sb3n/ +bG95/2xvef9wc33/amxz/2xvef9sb3n/bG95/25xe/9nanT/ZGdx/3V3ff9wcnn/bnB3/21vc/9vcXX/ +am13/29xdf9ucHf/bG95/3N2f/9sb3n/bG95/3N2f/93eX//bnF7/3d5f/9wc33/cHJ5/3N2f/91eIH/ +c3Z//3l7gf9sb3n/bnB3/3N1fP91d33/dXd9/3N1fP9sbnX/dnh8/3Z4fP91d33/bnB3/21vc/9qbHP/ +am13/2xudf9tb3P/cHJ5/2xudf9kZmz/bnB3/3V3ff9sbnX/b3F1/2psc/9wcnn/bG51/2xvef91d33/ +c3Z//3Byef9ucHf/e32D/3N1fP9zdXz/c3V8/4OFjP91eIH/fX6B/3d5f/97fYP/dXd9/4mLkf93eX// +dXiB/3d6g/9zdn//dXiB/3Bzff9zdn//dXd9/3t+h/97fYP/dXd9/3Bzff95e4H/f4GH/3d6g/9ucXv/ +bnB3/3Byef9wcnn/Z2p0/25wd/9vcXX/cHJ5/2psc/9ucHf/bnB3/2xudf93eX//am13/3N2f/9sb3n/ +bnB3/25xe/91eIH/am13/3Bzff9ucHf/bG95/3Byef9wcnn/c3V8/2xudf9wcnn/bnB3/25wd/9zdXz/ +cHN9/3N1fP91eIH/c3Z//3N2f/95e4H/dXiB/25wd/9ucXv/bnF7/25xe/9vcXX/amxz/3V3ff9zdXz/ +amxz/3N1fP9tb3P/cHN9/2ptd/9ucHf/c3V8/3d5f/9qbXf/cHJ5/21vc/9sb3n/c3V8/25wd/9qbXf/ +dXd9/3V4gf9wc33/bG95/3N2f/91eIH/d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/ +dXiB/3t+h/9zdn//dXiB/25xe/97fYP/c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/ +bnB3/3Bzff9zdn//c3V8/3Byef91d33/bG51/21vc/91d33/dXd9/3d5f/9sb3n/bnF7/3l7gf9wcnn/ +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//cHJ5/3d5f/95fIb/bnB3/3N2f/91d33/dXd9/25xe/95e4H/ +am13/3V4gf9wc33/bnB3/25wd/94eX3/b3F1/3V3ff9vcXX/b3F1/2xudf9ucXv/bG51/25wd/91d33/ +dnh8/3N1fP9sb3n/bnB3/3Z4fP9tb3P/bG51/25xe/91d33/amxz/2xvef9qbXf/bW9z/3Byef91d33/ +bW9z/25xe/9ucXv/Z2px/21vc/9sbnX/c3Z//36Ahv9sb3n/ZGdx/3d6g/9kZ3H/YGNs/2Zpc/9kZ3H/ +ZGdx/2Zpc/9nanT/bG95/2psc/9qbXf/bnF7/25xe/9ucXv/Z2p0/2Zpc/91d33/cHN9/25xe/9sbnX/ +amxz/2psc/9ucHf/bnB3/2xudf91eIH/bnF7/3Bzff93eoP/eXuB/3Bzff91eIH/cHN9/2ptd/9ucXv/ +cHN9/25wd/91d33/bW9z/2xudf9ucHf/cHN9/3N1fP9wc33/bG95/3V3ff9ucXv/cHN9/2ptd/9nanH/ +ZGdx/2Zpc/9iZW7/ZGdx/2Zpc/9nanH/XWBq/2psc/9ucXv/ZGdx/2xudf9kZ3H/bG95/2Zpc/9qbXf/ +cHN9/3Bzff9sbnX/bW9z/3N2f/9sb3n/bnB3/29xdf9+gIb/cHJ5/3Byef9ucHf/cHJ5/21vc/9+gIb/ +bG95/2xudf9wcnn/bG51/25xe/9qbHP/amxz/2dqdP93eX//cHN9/2ptd/9sbnX/c3V8/3N2f/9ucXv/ +Z2px/2dqcf9nanT/Z2px/2BjbP9nanT/bG51/2xvef9qbHP/am13/2ptd/9qbXf/dXiB/2psc/9ucXv/ +bW9z/2xvef9ucXv/d3qD/25wd/9wcnn/bnB3/2ptd/9wcnn/c3Z//3V3ff9sb3n/cHN9/3N1fP9wc33/ +eXuB/3d5f/91d33/e32D/3t9g/97fYP/f4GH/36Ahv9zdXz/d3l//3t9g/93eX//d3l//3d5f/9+f4P/ +e32D/3Bzff93eoP/c3Z//36Ahv9zdn//dXiB/3t9g/97fof/c3Z//3V4gf9zdXz/cHN9/3l7gf9wc33/ +bnF7/3V3ff91eIH/bnF7/25xe/91d33/bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/ +bnB3/25wd/93eX//cHJ5/3Byef9ucHf/eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/ +bG95/2xudf9ucXv/cHJ5/3N1fP9ucHf/c3V8/2dqdP9maXP/bnF7/25xe/9ucXv/ZGdx/2dqcf9ucHf/ +Zmhu/2Jlbv9qbXf/cHJ5/2xvef9ucXv/bG95/2dqdP9wc33/c3Z//2xudf9wc33/cHN9/3Byef9sbnX/ +cHN9/2dqdP9qbXf/bG95/2xvef9qbXf/c3V8/2xudf9wc33/am13/2ptd/9qbXf/cHJ5/25wd/9ucHf/ +dXd9/3V3ff9zdXz/bnB3/25wd/92eHz/bG95/2dqdP91d33/dXd9/2xudf9qbXf/bG51/2xudf9qbXf/ +c3V8/25wd/9sb3n/cHN9/2ptd/9wcnn/bnB3/3Bzff9+gIb/bnB3/2psc/9/gYf/b3F1/2psc/9zdXz/ +bnB3/3Byef9wcnn/bnF7/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/2xudf9maG7/d3l//3l7gf9zdn// +bnB3/2xudf9nanT/bnB3/25wd/9qbXf/c3Z//2ptd/9sb3n/c3Z//3d5f/9ucXv/dHeA/3N2f/9rbnf/ +bnF7/25xe/9ucHf/eXuB/2xvef9sb3n/cHN9/3d5f/95e4H/dXd9/3Bzff91d33/cHN9/3Z4fP9ucHf/ +bG51/29xdf9ucHf/bnB3/2xvef9zdn//c3Z//2Zpc/9zdn//d3qD/25wd/9wc33/am13/3V4gf9wc33/ +dXiB/36Ahv9+f4P/dXd9/3V3ff97fYP/c3Z//3N1fP9wc33/foGK/3V4gf91eIH/eXuB/3t9g/91d33/ +g4WM/3t9g/9zdn//eXuB/3Bzff91eIH/cHJ5/25xe/9ucHf/eXyG/3l7gf9wc33/cHN9/3N2f/93eX// +c3Z//25wd/9sb3n/bnF7/25wd/9nanT/b3F1/25wd/9wcnn/bW9z/2xudf9ucHf/am13/3l7gf9nanT/ +bnF7/25xe/9wc33/cHN9/3t+h/9qbXf/bnF7/3Byef9ucHf/bnF7/3V4gf91eIH/dXd9/3l8hv91d33/ +d3l//36Ahv95e4H/d3l//3l8hv95e4H/d3l//36Ahv97fYP/cHN9/3V4gf91eIH/cHN9/3Byef9qbXf/ +dnh8/3Byef9nanT/bnF7/2psc/9zdXz/bG51/2ptd/9ucXv/c3V8/2dqdP9qbXf/Z2px/2Zobv9ucXv/ +am13/2Rncf9qbXf/am13/2Zpc/9nanH/am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/ +eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/ +bnF7/25wd/9vcXX/c3V8/3Byef9ucXv/bnB3/3N1fP9qbXf/Z2p0/3Bzff92eHz/dXd9/2psc/9wcnn/ +dXd9/21vc/9sbnX/c3V8/3V3ff9wc33/bG95/3Byef9sb3n/c3V8/3l7gf9sb3n/cHN9/3V3ff9zdXz/ +cHN9/3V4gf9sb3n/bnB3/29yfP9wc33/bG95/3d5ff9sb3n/dXd9/2ptd/9sb3n/am13/25xe/9wcnn/ +c3Z//3V4gf95e4H/d3l//25xe/9ucXv/d3l//25xev9qbXf/cHJ5/3J0e/9sbnX/bG52/2xudf9sbnX/ +bnB3/3N1fP9tb3P/a254/2tueP9oa3T/a253/2xudf9vcXn/eXuC/29xeP9qbHP/fH6F/25wdf9nanL/ +cnR7/29xeP9xc3r/cHJ5/21vd/9zdXz/b3F4/25xev9ucXv/b3J8/25xe/9sbnX/Zmlz/3N2fP9xdH7/ +cnR7/21vc/9nanT/ZGdx/2xudf9sbnX/amxz/25xe/9qbXf/am13/25xev90dnz/a211/2ptd/9sb3n/ +Z2pz/2xvef9sbnX/amxz/3N1fP9nanT/Z2p0/2xvef9zdXz/c3V8/3Bzff9sb3n/cHN9/2xvef9zdXz/ +bG95/2xudf9qbXf/bG95/2xudf9qbXf/cHJ5/25wd/9nanH/cHN9/3N2f/9sb3n/cHJ5/2Zpc/9wcnn/ +bG51/3Bzff93eX//d3qD/3Byef9qbXf/dXiB/25xe/9zdXz/cHN9/36Biv9zdn//c3Z//25xe/9zdn// +c3Z//4GDiv9zdn//cHJ5/3l7gf9wcnn/c3Z//3N1fP9wc33/bG95/3d6g/91eIH/b3F1/29xdf9zdXz/ +eHl9/3h5ff9tb3P/bG51/2xudf9qbHP/Z2p0/21vc/9wcnn/cHJ5/25wd/9wcnn/cHJ5/25wd/95fIb/ +Z2p0/25xe/9wc33/bnF7/25xe/97fof/c3Z//3d5f/91d33/eHl9/3d5f/95e4H/e32D/3l7gf9+gYr/ +eXyG/3l8hv+Agob/cHJ5/25wd/9wc33/bG95/2xvef92eHz/dXd9/2xudf9tb3P/bG95/25xe/9ucHf/ +amxz/3V3ff9wcnn/bnB3/3Byef9vcXX/d3l//25xe/9zdn//eXuB/3l8hv9zdn//dXiB/3Bzff9wc33/ +dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/ +bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/ +b3F1/3Byef9sbnX/bG51/25xe/9sbnX/cHJ5/25wd/9zdXz/bW9z/2psc/9wc33/dXd9/3N1fP9nanT/ +bnF7/3Z4fP9vcXX/b3F1/3N1fP91d33/cHN9/25xe/9wc33/bG95/3Bzff93eoP/bG51/3Byef9ucXv/ +bnF7/3Byef91d33/bG51/21vd/9tcHr/c3V9/2xvdv92eH3/b3F4/3Byef9sbnX/bG51/2xudf9qbXf/ +bW9z/3N1fP91d33/dXiB/3V3ff9ucHf/bXB6/3J1fv9vcXj/a212/25xe/9ucXv/bnB4/29yd/9ucXr/ +cnR7/3F0ff92eH7/b3F4/3N1fv9xdH3/bnB2/3BzfP9vcXj/cnV8/3x+hP9tb3b/a210/3p8gv9vcXb/ +aGp0/2xveP9vcXf/bnF5/25xef9tb3b/bXB6/25weP9tb3f/bnB4/3Bzev9ucHj/bW91/2dqc/9ydXr/ +eHl//3N1fP9tb3b/bnB3/2xudf9vcXX/b3F1/2xudf9wcnn/bG51/2xudf9xc3r/d3mA/29xd/9ucXv/ +c3V+/3BzfP9sb3n/amxz/2psc/9ucHf/YmVu/2Zpc/9nanT/Z2p0/2dqdP9maXP/Zmlz/25wd/9maXP/ +Z2p0/2Zobv9kZ3H/YmVu/2Rncf9kZ3H/Zmhu/2ptd/9sbnX/ZGdx/2xudf9wc33/am13/2ptd/9iZW7/ +bG51/2Zpc/9ucXv/dXd9/3N1fP9ucHf/bnB3/3N2f/9sb3n/bnB3/25wd/95e4H/bnB3/2xvef9qbXf/ +bnB3/2xudf99foH/cHJ5/25wd/9zdXz/bnB3/3Byef9ucHf/cHN9/3Byef97fof/eXuB/25xe/9wcnn/ +eHl9/3Z4fP94eX3/bW9z/2xudf9sbnX/b3F1/25wd/9vcXX/cHJ5/3Byef9sbnX/cHJ5/25wd/9tb3P/ +d3l//2dqcf9ucHf/c3V8/2ptd/9sbnX/dXd9/2ptd/9sb3n/bG51/2dqdP9qbXf/am13/2ptd/9maXP/ +bnF7/2xudf9sbnX/cHJ5/25xe/9sb3n/c3V8/25wd/9ucXv/eXuB/3V4gf9ucXv/c3V8/3V4gf91eIH/ +bnF7/2ptd/9wc33/cHN9/3Byef9wc33/bnB3/3d5f/9wcnn/cHN9/3d6g/95e4H/c3Z//3V4gf9ucXv/ +cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/ +c3V8/2xudf95e4H/bnB3/3N1fP93eX//dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/ +am13/2Zpc/9nanT/bG51/2psc/9sb3n/bG51/2xvef9qbXf/bG95/2dqcf9maXP/bnF7/3Byef9sb3n/ +Zmlz/2ptd/9ucXv/am13/2xudf9wcnn/dXd9/3N1fP9zdXz/dXd9/25xe/9zdn//e36H/2xvef9zdXz/ +cHJ5/3V3ff91d33/dXd9/25wd/9sbnf/b3J6/3N2f/9sb3f/dniA/3F0ff90dnz/bnB3/21vc/9sbnX/ +am13/2psc/9ucXv/bnF7/3V3ff9wc33/Z2p0/3Byef9ucXv/a252/2lsdv9sb3n/a254/2tueP9tcHj/ +bG95/2hrdf9maXP/bnF5/2lrcf9tcHj/am13/2dqcv9pbHb/aWt0/2psdP9wcnv/ZWhy/2Zpc/9vcnr/ +a252/2dqc/9nanT/cXR8/25wef9ucHj/ZWhx/2Vocv9kZ3H/Zmlx/2dpcP9nanT/aWx0/2Vocf9gY2z/ +Z2p0/3N1ff9qbXf/Zmly/2Zocf9jZm7/ZWhy/2dqcf9kZ3H/Z2p0/2Rncf9nanP/b3J7/3R3f/9rbnb/ +a211/3R2fP9ydHv/bnF7/21vc/9ucHf/d3l//2psc/9ucHf/cHN9/3N1fP9zdXz/c3Z//2xvef91eIH/ +c3V8/3Z4fP9zdXz/cHJ5/25wd/9ucXv/b3F1/25wd/9ucHf/bnB3/2xudf9sbnX/c3V8/2xudf9sbnX/ +Zmlz/2psc/9qbXf/bnF7/3N1fP9wc33/am13/2ptd/9ucXv/bG51/25wd/9ucHf/foCG/25xe/9wcnn/ +b3F1/2xudf9zdXz/e32D/3N1fP9ucHf/c3V8/25wd/9zdXz/bnF7/3N2f/9wcnn/eXyG/3d6g/9zdn// +c3Z//3d5f/93eX//eXuB/25xe/9ucXv/bnB3/2xvef9sb3n/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/ +cHJ5/3d5f/9kZ3H/bnF7/3Bzff9sb3n/bnF7/3V4gf9ucHf/bG95/25xe/9ucHf/cHN9/25wd/9ucXv/ +bG95/3N1fP9ucHf/bnB3/25xe/91eIH/dXiB/3N2f/9sb3n/bnB3/3h5ff9ucHf/bG51/21vc/9wcnn/ +c3V8/3Byef9nanT/bnF7/3N2f/9sb3n/cHJ5/2xvef95e4H/cHN9/3Bzff91eIH/dXiB/3Z4fP9zdn// +bG95/25xe/91eIH/cHN9/25wd/95fIb/d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/ +bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/ +dnh8/2xvef9qbXf/am13/2xudf9qbXf/c3V8/2xudf9wcnn/bnB3/3N1fP9vcXX/bG51/3V3ff91d33/ +dXd9/2ptd/9sb3n/am13/2ptd/9maXP/bnF7/3V3ff9sb3n/cHN9/25xe/9qbXf/cHN9/3V4gf9sbnX/ +cHJ5/2xudf92eHz/cHN9/3d5f/9wc33/bnB4/29xef95e4L/bnB2/3N2fv9ucXr/c3V+/2xvef9ucHf/ +cHJ5/25xe/9ucHf/dXd9/3Byef91d33/c3V8/21vc/9ydHz/b3F6/2ttdv9rbXX/am13/2Zpc/9rbnf/ +bG94/2tueP9naXD/Zmlz/2xveP9oa3X/cnR7/2ptd/9oa3T/cnR7/2xudf9sb3b/dHZ+/3Bydv9sb3n/ +cHN8/3J1ff9tcHn/b3F1/3l7gf92eH7/dXd9/25wd/9tb3f/aGt1/25wd/9ucHf/bG95/3R2f/9ucHf/ +bW92/25wd/97fIH/cHJ5/21wef9ucHf/am13/21wev9ucXv/bnB3/3N2f/9ucHf/b3F4/3F0fv90d4H/ +a254/2lsdv9xdH7/c3V8/3N2f/9wc33/d3qD/3t+h/9ucXv/cHN9/3d6g/91eIH/dXiB/25xe/9ucHf/ +e36H/3Bzff95fIb/d3qD/3Bzff9nanT/bnB3/2xvef9sb3n/c3V8/2ptd/9nanH/cHJ5/3Byef9vcXX/ +bG95/2xudf9ucHf/bG95/3Bzff94eX3/dXd9/3Byef9wcnn/eXuB/3N2f/9zdXz/c3Z//3l8hv9ucXv/ +bnF7/25wd/9ucXv/cHN9/3l8hv9wc33/bG95/3V3ff9wcnn/cHJ5/3Byef9wcnn/bG51/3N1fP9sb3n/ +bG51/2xudf9wc33/bG95/25wd/9qbHP/Z2px/2dqcf9kZ3H/Z2p0/2xudf9sb3n/bnB3/2xudf9vcXX/ +bnB3/25xe/93eX//ZGdx/25xe/9wc33/c3Z//3N2f/95fIb/cHJ5/3V4gf93eoP/c3Z//3t9g/91d33/ +dXiB/3Bzff93eoP/c3Z//3N2f/93eoP/eXuB/3l7gf93eoP/dXiB/3d5f/9/gYf/foCG/3d5f/92eHz/ +e32D/36Ahv99foH/d3l//3t9g/9+f4P/eXuB/3d6g/9wc33/foGK/3N2f/9zdn//eXyG/3l8hv97fYP/ +d3qD/3V4gf9wc33/e32D/3V4gf9ucXv/e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/ +am13/25wd/9wcnn/bG51/3l7gf9ucHf/c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/ +bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/bG95/3Bzff9sbnX/cHJ5/3Byef9ucHf/am13/2psc/91d33/ +dXd9/3Byef9maXP/am13/2dqdP9nanH/YmVu/2Zpc/9ucHf/am13/25xe/9ucXv/am13/25xe/91d33/ +amxz/25xe/9qbXf/bnF7/25wd/9zdXz/am13/25xe/9zdn//fH+I/3Byev90d4D/b3J6/3Bzff9nanT/ +bG51/2ptd/9qbXf/bnB3/3N1fP9wcnn/dXd9/3N1fP9sbnb/dXd+/3R3f/9vcnr/bnF6/3Bzff9vcXv/ +dnmC/3p8gv94eoD/cnV//3Byef9zdn//cHJ5/3h6gP9wc33/bnB3/3Z5gv9zdXz/c3V8/3l8hv91d33/ +dHZ8/3R2ff92eYL/dHeA/3N1fP95fIX/d3qD/3Z4f/9wc33/bG95/2dpc/9ucHf/bG51/29xdf9wcnn/ +bnB3/25wd/9sb3n/e32D/29ye/9ucXr/bnB3/21vdv9tcHr/bnB3/29xdf9ucXv/cHJ5/25wd/9tcHr/ +dnmC/2tueP9sb3n/d3qD/3N2f/9ucXv/bnB3/25xe/93eX//bG95/25wd/9wc33/cHN9/3N2f/9wc33/ +bnB3/3t+h/9ucHf/dXiB/3N1fP9wcnn/Z2px/3Byef9sbnX/bnB3/25xe/9ucXv/bnF7/3N2f/9wc33/ +c3V8/2ptd/9sb3n/cHJ5/3N1fP93eoP/eXyG/36Ahv91d33/dnh8/36Ahv95fIb/cHN9/3N1fP9/gYf/ +c3Z//3V4gf93eoP/d3l//3d5f/+Cg4f/e32D/3Z4fP95fIb/c3Z//3V4gf9zdn//c3Z//25wd/95e4H/ +d3qD/3N2f/9zdn//d3qD/3N2f/93eX//bnB3/2xvef9sb3n/bG95/25wd/9ucHf/dnh8/3Byef9vcXX/ +bG51/25wd/9wcnn/dXd9/2Zobv9sb3n/bnF7/3Bzff91eIH/e32D/25wd/9ucXv/bG95/3Byef9zdn// +bnB3/3V4gf9wc33/eXyG/3V3ff93eX//e32D/2Zpc/9nanT/Z2p0/2xudf9sbnX/c3V8/2ptd/9sbnX/ +am13/3N1fP9sb3n/cHN9/2xudf9zdXz/dXd9/25wd/9wcnn/bnF7/36Biv9zdXz/c3V8/3t9g/95fIb/ +d3l//3Bzff9ucXv/bnF7/3N2f/9sb3n/bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX// +amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/ +bG95/2xudf9wc33/am13/2Zpc/9sb3n/am13/25wd/9zdn//bnB3/25xe/9wcnn/c3V8/25wd/9ucHf/ +d3l//3Z4fP92eHz/am13/25xe/9wcnn/bW9z/2dqdP9sb3n/cHN9/2xvef9zdXz/c3V8/2xvef9wc33/ +dXd9/2xudf9sb3n/bG51/2xvef9qbXf/bnF7/2ptd/9wc33/bnF7/3h7hf9sb3b/cHJ7/25wdv9ucXv/ +am13/2xudf9sbnX/bG95/2xudf9ucXv/dXiB/3V4gf9zdXz/b3F1/3R2fP9xc3v/bnB1/25wd/9ucHf/ +am13/3Bzff91d33/dnh8/3Byef9sbnX/cHN9/3Byef95e4H/cHN9/25xe/91d33/bW9z/25wd/9wcnn/ +bnB3/29xdf9ucHf/c3V8/3Byef9vcXX/eXuB/3V4gf95e4H/bnB3/25wd/9kZmz/bG51/2dqdP9qbHP/ +bG51/2ptd/9maXP/amxz/3N2f/9qbXf/am13/2ttdv9rbnX/cHJ6/2xvef9wcnn/cHN9/3Byef9vcnn/ +bXB6/3N2gP9oa3X/Z2p0/2xvef9qbXf/dXiB/3N1fP93eoP/eXyG/3N2f/93eX//fn+D/3l8hv95fIb/ +dXiB/3d6g/9+gYr/cHN9/3d6g/91eIH/bnF7/2dqdP9sb3n/bnF7/25wd/9wc33/bG95/2ptd/9wc33/ +bnF7/3Byef9sb3n/bnF7/2xvef9sb3n/c3V8/3V3ff9zdXz/bnB3/25wd/93eX//bnF7/3Byef9ucHf/ +e32D/25wd/9wc33/c3V8/25xe/9ucHf/eXyG/3N1fP9ucHf/dnh8/21vc/9sb3n/cHJ5/25xe/9sbnX/ +dXd9/3V3ff9ucXv/bG51/3N1fP9ucXv/dnh8/2xudf9qbXf/bG51/21vc/9tb3P/bW9z/3N1fP9sbnX/ +amxz/2dqdP9sbnX/bnF7/3N1fP9kZ3H/bG51/2xvef9nanT/am13/2xvef9maG7/bG51/2xudf9qbHP/ +Z2p0/2Rncf9maXP/Zmhu/2Zpc/9iZW7/ZGdx/2dqdP9qbXf/am13/2xvef9qbXf/amxz/3N1fP9maXP/ +Z2px/2Zpc/9sb3n/am13/25xe/9kZ3H/cHN9/25xe/9sbnX/bG95/2xvef91eIH/bnB3/29xdf93eX// +eXyG/3d6g/9wc33/cHN9/3N2f/95e4H/c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/ +f4GH/3d5f/93eoP/c3Z//3d6g/91d33/foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn// +am13/25xe/9ucXv/c3Z//3Bzff9qbXf/c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bnB3/3V3ff9ucHf/ +am13/3V4gf95e4H/eXuB/2xvef9wc33/cHN9/3N1fP9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9sbnX/ +cHN9/3d5f/9qbXf/bnB3/21vc/9wcnn/bnF7/3V3ff9ucXv/bG51/25wd/94eoH/bnB4/3J0fP9vcXn/ +dHZ9/2xudf9qbXf/Z2p0/2ptd/9nanP/bG95/2xvef93eX//bnF7/2psc/9tcHn/bnB5/21vdP9rbXT/ +bnB3/2dqcf9sb3n/cHN9/25xe/9sb3n/amxz/2xvef9maG7/bG95/2dqcf9nanH/am13/2dqdP9maXP/ +bG95/2ptd/9qbXf/am13/2xudf91d33/bG95/3l8hv95e4H/eXuB/3Bzff9ucHf/am13/3N2f/9zdXz/ +c3V8/3V4gf91d33/dXiB/3d5f/+DhYz/e32D/3h6gP9zdn7/b3F5/2xvef9rbnj/Z2px/2dqdP9qbHP/ +a210/2xvef93eX//c3V8/25xev91eIH/cHN9/2xudf9sbnX/cHJ5/3Bzff9kZ3H/bnF7/3N1fP9sb3n/ +bG95/2xvef9ucXv/dXiB/2xvef91d33/bnF7/3N1fP9sbnX/bnB3/2xudf9ucHf/bG51/25wd/9qbXf/ +c3Z//25wd/9sb3n/bnF7/2ptd/9sb3n/bnB3/3Bzff93eoP/c3Z//25xe/9sb3n/dXiB/25xe/9wc33/ +cHJ5/3t+h/9ucXv/bG95/29xdf9sbnX/cHJ5/3t9g/9ucXv/amxz/3V3ff9qbHP/am13/2ptd/9sb3n/ +Z2p0/3V3ff9sb3n/am13/2psc/9zdXz/cHJ5/3d5f/9tb3P/bW9z/2xudf9nanH/bG51/2xudf91d33/ +bG51/21vc/9sbnX/bG51/3Z4fP92eHz/Z2p0/2xvef91d33/c3V8/25xe/9zdXz/b3F1/25wd/9ucHf/ +bnB3/25wd/9nanT/bG95/2ptd/9ucXv/am13/2xudf9sbnX/bG95/25wd/9wcnn/bG95/2xudf9zdXz/ +Z2p0/2dqcf9nanT/bG95/2ptd/9ucXv/ZGdx/25xe/9zdXz/bG51/2xvef9qbXf/cHJ5/2dqcf9nanH/ +bG95/3Bzff9ucXv/Z2p0/2dqdP9nanT/bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/ +cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/ +c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/ +bnB3/2xvef91eIH/dnh8/3V3ff9ucHf/cHN9/3N1fP9vcXX/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/ +bnB3/3Z4fP93eX//bG51/3N1fP9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9ucXv/d3qD/29yfP9zdn// +c3V9/3l7gf9qbXf/bnF7/3Byef9zdn//a254/3N2f/91eIH/e32D/3d6g/9wcnn/cXR+/3J1fv9ucXn/ +bnB3/3Byef9qbHT/c3Z//3h6gP9zdn//bnF7/2xvef9zdXz/b3F1/3N1e/9sbnX/bG51/3R2fP9ucXv/ +bnB3/3F0ff9vcXj/b3F4/25xe/9zdXz/dXiB/25xe/95fIb/eXuB/3l7gf9ucXv/am13/2Zpc/9wcnn/ +bnB3/2ptd/9wc33/bG95/3Bzff9ucHf/d3qD/3N2f/9wcnn/bnB3/29xdv9ucHf/cHJ5/25wd/9ucXv/ +bG95/25wd/9sb3j/dXd8/29xd/9sbnX/cHN9/2xvef9ucHf/bG95/3d5f/91eIH/Zmlz/3V4gf95e4H/ +cHN9/3N1fP91eIH/d3qD/4GDiv95e4H/eXyG/3V4gf93eoP/bnF7/3N1fP9ucXv/bG95/2xvef9ucHf/ +bnB3/3N2f/9wcnn/bnB3/2ptd/9ucHf/bG51/25wd/9ucXv/d3l//25xe/9ucHf/amxz/3d5f/9ucXv/ +am13/2ptd/91d33/bG51/3Byef9ucHf/cHN9/3V4gf9+gYr/d3qD/3Bzff97fof/cHN9/3N2f/93eoP/ +dXiB/3N2f/97fof/e32D/3d6g/91d33/e32D/3d6g/9+gYr/cHN9/3N1fP9zdXz/cHJ5/2xvef9ucHf/ +dXd9/25wd/9tb3P/bnB3/25wd/9zdn//dXd9/25wd/9tb3P/c3V8/2xvef9sb3n/cHN9/2dqcf9qbHP/ +amxz/2ptd/9qbXf/Z2p0/2ptd/9sb3n/cHN9/2xudf9nanT/am13/2dqdP9maXP/Z2p0/2dqdP9kZ3H/ +am13/2Rncf9maG7/YmVu/2Zpc/9kZ3H/am13/1xfaP9qbXf/bG95/2BjbP9kZ3H/Z2px/2xvef9maG7/ +Zmhu/25wd/9zdXz/bnF7/2dqdP9maXP/Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/ +bG51/2xvef9zdn//amxz/2xudf9qbHP/bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/ +bG95/25xe/9maXP/bG51/2xudf9ucXv/bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/25wd/9zdXz/ +cHJ5/29xdf9sbnX/dXd9/3V4gf95e4H/cHN9/3V4gf9zdn//cHJ5/3N1fP9wc33/e32D/3t9g/9+gYr/ +eXuB/3Bzff95e4H/eXuB/25wd/9zdn//bG95/3N2f/91eIH/eXyG/3d5f/9wcnb/b3F2/3Z4ff9vcXj/ +cHN7/21veP90dn3/am13/3Byef9wcnn/cHN8/2psc/9ucHf/bnB3/3V3ff9wcnn/bW9z/29xeP9sb3n/ +amxy/2Zpcv9oa3T/X2Js/2hrdf9xc3v/bG95/2xudf9pbHb/bXB6/2ttdf9rbnf/a252/2lsdv9tb3j/ +bW93/2psdP9vcnz/amx0/2dqdP9tb3b/bG51/3N1fP9qbXf/d3qD/3Bzff9wc33/bG95/2ptd/9qbHP/ +bnB3/21vc/9sbnX/bnB3/2xudf9wcnn/bW9z/3d5f/9wc33/bG95/29xef9sbnX/aWx2/2ptd/9nanT/ +am13/2xudf9nanT/a210/3N1ff9vcXn/bW93/3V4gf91eIH/am13/2ptd/9wc33/cHN9/2Jlbv9ucXv/ +dXd9/25wd/9sbnX/bG51/25wd/91d33/cHJ5/3V3ff9sbnX/cHN9/2dqdP9vcXX/bG51/2xudf9qbXf/ +am13/2xudf9zdXz/bnB3/29xdf9maXP/bG95/2xvef9sb3n/c3Z//3V4gf9wcnn/c3V8/2psc/91d33/ +cHN9/25xe/9sb3n/d3l//2xvef9ucXv/bnB3/2xudf9zdXz/foCG/3N2f/9sb3n/d3qD/2xvef9sb3n/ +c3Z//3N1fP9ucHf/dnh8/3Byef9ucHf/bG95/3V3ff9wcnn/e32D/29xdf9tb3P/bG51/29xdf9ucHf/ +b3F1/3Z4fP9ucHf/bnB3/3Byef9zdXz/dXd9/3V3ff9nanH/bG51/3d5f/9sb3n/am13/2xvef9sbnX/ +bnF7/2xvef9nanT/am13/2Rncf9maXP/Zmlz/2dqdP9iZW7/XF9o/2Rncf9ucXv/am13/3Byef9zdXz/ +bG51/3V3ff9ucHf/bG51/2psc/9zdXz/cHJ5/3N1fP9maG7/cHJ5/3N1fP9nanT/dXd9/2xudf92eHz/ +b3F1/2xvef91eIH/d3qD/3V4gf9sb3n/bnF7/3N2f/91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/ +bG51/25wd/9zdXz/d3l//2ptd/9qbXf/bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/ +bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9sbnX/ +bnF7/2ptd/9sbnX/am13/3d5f/93eX//eHl9/25wd/91d33/cHN9/25wd/9ucXv/cHJ5/3l7gf93eX// +e36H/3d5f/9ucHf/dXiB/3d5f/9wcnn/c3Z//2xvef9ucXv/c3Z//3l7gf92eHz/Z2pz/2Zpcv9ucHj/ +Zmlz/2hrc/9pbHb/bXB6/2dqdP9maXP/Zmlz/2dqdP9hZGz/Z2px/2dqcf9zdXz/am13/2dqdP9oa3X/ +a254/2hrdP9oa3P/am13/2hqcf9tcHj/cHJ5/3Byef90dnz/bnB5/3V4gf9ydHz/cXR+/29ye/9vcnv/ +b3J8/3N2f/9xc3r/eXyF/29ye/9tb3f/cnR+/3N1fP93eX//bnF7/3l8hv95e4H/dXiB/3N2f/9ucHf/ +am13/3N1fP9wc33/cHN9/3N2f/9ucHf/bnF7/2xvef95e4H/dXd9/25wd/9wc3r/cHN6/29ye/9ydX7/ +c3Z//3V4gf9zdXz/c3Z//3J1fv94eoL/cXN6/25weP9zdXz/c3V8/3V4gf91d33/foCG/3t9g/9wc33/ +d3qD/3l7gf93eoP/c3Z//3N2f/9zdn//d3qD/3N2f/93eX//bnB3/3V4gf9nanT/cHJ5/3Byef9wcnn/ +cHJ5/2xvef9wcnn/d3qD/3N2f/91d33/am13/3N1fP9wc33/cHN9/3l8hv97fYP/d3qD/3N2f/9ucHf/ +eXuB/3N2f/9ucXv/cHN9/3l7gf9wc33/c3Z//25wd/9wcnn/dXiB/36Ahv9zdn//bnB3/3d6g/9vcXX/ +bnB3/3N1fP9wcnn/bG51/3h5ff9wcnn/cHJ5/2xudf9zdXz/cHJ5/3d5f/9tb3P/bG51/2dqdP9ucHf/ +bnB3/3Byef93eX//bnF7/25wd/9ucXv/c3Z//3V3ff91d33/Z2p0/25xe/95e4H/c3Z//3N2f/9wc33/ +bnB3/3N2f/9ucHf/bnB3/3V3ff9sbnX/cHJ5/3V3ff91d33/b3F1/2dqcf9wcnn/c3Z//3Byef9zdn// +dXiB/3Bzff95e4H/c3Z//25xe/9qbXf/c3Z//3V3ff91d33/amxz/3Byef94eX3/bG95/3N2f/9ucXv/ +dXd9/25wd/9ucXv/d3qD/3V4gf93eoP/b3F1/3Byef91d33/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/ +am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/ +bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/ +Z2px/2dqdP9qbHP/Zmlz/2Jlbv9qbXf/am13/2xvef9maG7/Z2p0/2Rncf9gY2z/ZGdx/2Rncf9sb3n/ +Zmlz/3Bzff9zdXz/amxz/2ptd/9zdXz/bG51/25xe/9qbXf/am13/2xvef91d33/c3V8/21wev9vcXb/ +dHZ8/25wd/9vcnz/bXB5/3N2f/9sbnX/bG51/25wd/9ucXv/Zmlz/21vc/9sbnX/dXd9/25wd/9ucHf/ +cXN6/29xeP9ucHj/bnF6/3Bzff9vcnz/dHeA/3J1f/9wc33/dnmC/3J0fP93eYD/dHZ9/29xeP9wcnr/ +bnB4/3Byef9ydHv/b3F5/3h7gv9vcnz/bG93/3Fzev9sb3n/dnh8/29xdf95e4H/d3l//3N1fP9zdn// +bnB3/2dqcf9tb3P/bG51/2xudf9sb3n/amxz/2ptd/9nanH/c3Z//2xvef9qbHP/bG94/21vdv9rbnb/ +bG95/2ptd/9qbXf/Z2p0/2xudf9sbnX/cnR7/29xeP9oa3T/bG95/2xvef9ucXv/bG95/3V4gf9zdn// +amxz/25xe/91d33/bnB3/21vc/9qbXf/cHJ5/3d5f/9wcnn/d3l//2xvef91d33/Z2p0/25xe/9sb3n/ +bG95/3Byef9tb3P/bW9z/3Bzff9sbnX/Z2p0/2BjbP9nanT/Z2p0/2Zpc/9sb3n/bnF7/2dqdP9nanT/ +YmVu/25wd/9maXP/ZGZs/2Rncf9sb3n/Zmhu/2ptd/9kZ3H/YmVu/2Zpc/9ucHf/Z2p0/2BjbP9sb3n/ +YmVu/2Rncf9qbXf/Zmlz/2psc/9qbXf/Zmlz/2Rncf9iZW7/am13/2dqdP9zdn//amxz/2psc/9nanT/ +am13/2xudf9nanH/dXd9/2xudf9tb3P/bnB3/3Byef94eX3/d3l//2ptd/9ucXv/eXuB/3V4gf93eoP/ +dXiB/3N1fP95e4H/cHN9/3Bzff93eoP/cHJ5/3V4gf91eIH/c3Z//25wd/9qbXf/cHN9/3V3ff9vcXX/ +c3Z//3V4gf9ucHf/c3Z//25wd/9wc33/Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dXiB/2ptd/9wc33/ +bnF7/3Z4fP9wcnn/cHJ5/3l7gf93eX//e32D/29xdf91d33/dXd9/3N1fP9sb3n/Z2p0/3V3ff91d33/ +bnB3/2xvef9sbnX/bnB3/25wd/91d33/bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/ +bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/ +bnB3/21vc/9wcnn/bG51/2xvef9qbXf/dnh8/3h5ff91d33/bG51/25wd/9ucHf/am13/2xudf9nanT/ +c3V8/2xvef91d33/dXd9/2xudf9sb3n/c3V8/2dqdP9ucXv/Zmlz/2xvef9wcnn/d3l//3Bzff9wc3v/ +bXB5/3J1fv9qbXf/bnF7/2ptd/9zdXz/bG51/25wd/9zdXz/bnF7/2ptd/9ucXv/cHJ5/3d5f/9ucXv/ +cHN9/3V4gf9ucXv/bnF7/25wd/9vcnz/bXB6/21wev9oa3X/bXB6/3R2fP9ucHX/eHqA/29xef9sb3n/ +bG95/2dqdP9qbXf/Z2p0/2Zpc/9ydHz/bXB4/2lsc/9tb3j/a253/3V3ff9ucHf/d3qD/3V4gf91d33/ +dXd9/29xdf9maG7/bnB3/21vc/9sbnX/bnF7/2xudf9wcnn/bW9z/3V4gf9wc33/amxz/2ptd/9qbXb/ +bnB3/29xeP9qbXf/bnB3/2dqcf9sbnX/bG51/21wev9rbnf/Z2p0/2psc/9sb3n/cHJ5/2psc/91d33/ +dXd9/2psc/9sb3n/c3V8/3Byef9sb3n/bnB3/3V3ff94eX3/bnF7/3l8hv9zdXz/e32D/2xvef9zdn// +d3qD/3N2f/93eoP/dXd9/3N2f/9+gIb/cHN9/3N1fP9sb3n/cHN9/3N2f/9zdn//d3qD/3t9g/95fIb/ +d3qD/3Bzff97fof/eXyG/3V4gf9zdXz/dXiB/25wd/9wcnn/bnB3/3Byef91d33/d3qD/3d5f/9sb3n/ +d3l//25wd/9ucXv/d3qD/3V4gf91eIH/d3qD/3V4gf91eIH/dXd9/3t9g/93eoP/foGK/3Byef9ucXv/ +bnB3/25xe/9wcnn/c3V8/3t+h/9wc33/cHJ5/25xe/9wc33/d3l//3h5ff9qbXf/cHJ5/3d6g/9wcnn/ +dnh8/3N1fP9sbnX/dnh8/29xdf9ucHf/cHJ5/21vc/9zdXz/c3V8/3N1fP9tb3P/bG51/3N2f/9ucXv/ +bG51/2xvef9wc33/Zmlz/2xvef9nanH/Zmlz/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/25xe/9qbXf/ +bnF7/25wd/91d33/bnF7/2xvef93eoP/eXuB/36Ahv9wcnn/c3Z//3l7gf93eoP/c3Z//25xe/9+gIb/ +foGK/3l7gf97fYP/d3l//3t9g/93eoP/foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/ +e32D/3N1fP9wcnn/cHJ5/25xe/9zdn//c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/ +dXiB/3Bzff9wcnn/bG95/25wd/9zdXz/bG51/3V3ff92eHz/dXd9/25wd/9sb3n/bnF7/2xvef9ucHf/ +cHJ5/3h5ff9wcnn/foCG/3t9g/9tb3P/cHJ5/3Z4fP9ucHf/dXd9/2ptd/9ucHf/c3Z//3V4gf92eHz/ +c3V7/21wd/9wcnr/am13/3N1fP9sbnX/bnF7/2ptd/9sbnX/cHN9/25xe/9qbHP/bnB3/29xdf91d33/ +bG95/25xe/9wcnn/bG95/21vc/9ucHf/bG95/25wd/91d33/amxz/25xe/9zdn//c3V8/36Biv93eoP/ +c3Z//3d6g/91d33/cHN9/3d6g/91d33/foCJ/2Zpcv9jZnD/bnB3/2ptdv9vcnz/amxz/3d5f/93eX// +c3V8/3V3ff9ucHf/ZGZs/2xvef9sb3n/cHN9/3N2f/9vcXX/cHN9/25wd/93eoP/dXiB/25xe/9ucXv/ +bXB6/3Byef9vcXr/bnB3/2xvef9nanT/cHJ5/25weP90d37/c3V6/25weP9ucXr/c3Z//25xe/9maXP/ +c3V8/3V3ff9nanH/bnB3/3N1fP9zdXz/bnB3/21vc/9zdXz/d3l//25xe/9zdn//bG51/3Bzff9kZmz/ +bG51/2xvef9sbnX/c3V8/29xdf9sb3n/c3Z//25wd/9qbXf/Z2p0/3Byef9ucHf/bG51/3Bzff9zdn// +cHN9/2xvef9sb3n/dXd9/3V4gf9zdn//cHJ5/3V4gf9ucXv/cHN9/3Bzff9ucHf/c3Z//3d5f/91d33/ +Z2px/3Z4fP9sbnX/bG51/3Bzff9ucHf/bW9z/25wd/9sbnX/bnF7/2xudf9wc33/cHJ5/3V3ff9nanT/ +bG51/2dqdP9nanT/am13/2xudf93eoP/bG51/2xudf9wcnn/cHJ5/3d6g/93eX//bnB3/25wd/93eoP/ +cHN9/3d5f/9zdn//am13/3V3ff9ucHf/c3V8/3V3ff9tb3P/cHJ5/3N1fP91d33/bG51/2xudf9ucHf/ +dnh8/2xvef91eIH/cHN9/25wd/9zdXz/bnB3/2xvef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9zdn// +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//e36H/3l7gf9/gYf/bnB3/25xe/91d33/c3V8/21vc/9ucHf/ +dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/ +dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/ +eXyG/36Biv91eIH/dXiB/3N1fP9wc33/dXiB/25xe/9zdn//dXd9/3Bzff9ucHf/cHJ5/3Byef9qbXf/ +cHJ5/2ptd/91d33/bG95/36Ahv97fYP/bW9z/3Byef91d33/b3F1/3Bzff9sb3n/bG95/3V4gf95e4H/ +d3l//3d5gv9ucXv/cHN9/25wd/9zdn//c3V8/3Bzff9sb3n/bnB3/3Z4fP9zdn//am13/25xe/9ucHf/ +dXiB/25wd/9wc33/cHN9/3Byef9vcXX/bG51/25wd/9zdXz/dXd9/2psc/9wcnn/bnF7/2xudf91d33/ +c3V8/25wd/9ucXv/am13/2psc/9sbnX/bW9z/3V3ff9ucHf/aWxz/3Fzef9sbnX/c3V+/25wd/93eX// +d3l//3Bzff93eoP/bnF7/2Zpc/9wcnn/bnB3/3Bzff9zdn//bG95/3N2f/9ucXv/dXiB/3V4gf9wc33/ +cnV+/25weP9rbXX/bXB4/2hqcf9maXP/YGNs/2ptd/9qbXf/b3J7/25wd/9pa3P/amxz/2ptd/9wc33/ +Zmlz/3V3ff91d33/amxz/3Byef9zdXz/cHN9/3N2f/9wc33/eXyG/3l8hv91eIH/d3qD/25xe/9zdn// +ZGdx/25wd/9ucXv/bW9z/3Byef9sbnX/bG51/3N1fP9qbHP/Zmlz/2dqdP9sbnX/amxz/2Rncf9ucXv/ +am13/2xvef9nanH/YmVu/2ptd/9qbXf/Z2px/2Zpc/9nanT/amxz/2psc/9sb3n/Z2p0/25xe/9wc33/ +cHN9/2Zpc/93eX//Z2p0/2xudf9zdn//c3Z//2ptd/9wcnn/b3F1/3Byef9vcXX/cHJ5/25wd/91d33/ +Z2p0/2ptd/9qbHP/bG51/2xvef9sbnX/d3qD/2dqdP9sbnX/bnF7/2xvef93eX//bnF7/2xudf9nanT/ +c3V8/2ptd/9qbXf/bG95/2Zpc/9wcnn/am13/2xvef9wc33/amxz/2ptd/9sb3n/cHN9/2ptd/9tb3P/ +bG95/3Z4fP9ucHf/c3V8/25xe/9qbHP/bnF7/2xudf9sbnX/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/ +am13/2xudf9zdXz/cHJ5/3Byef9wcnn/am13/3N1fP9wc33/eXyG/21vc/9ucHf/dXd9/2xvef9qbXf/ +bG51/3V3ff93eX//bG95/3Byef9ucHf/bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX// +am13/3Bzff9wc33/bW9z/2ptd/9nanT/am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/ +Z2px/2ptd/9zdXz/bG95/2xvef9qbHP/bG51/25xe/9nanT/dnh8/3N1fP9wc33/bnF7/3N2f/9zdn// +am13/3Bzff9zdXz/e32D/3V4gf+Fh43/f4KM/3N2f/93eoP/foCG/3N1fP95fIb/dnh8/3l7gf9+gIb/ +e36H/36Ahv95fIb/c3Z//3N2f/9sb3n/dXiB/2xvef9ucXv/bG95/3Byef91eIH/eXuB/2ptd/9ucXv/ +bnB3/3Bzff9wcnn/c3Z//3V4gf9sb3n/bG95/2xudf9sbnX/cHJ5/3V3ff9nanH/bnF7/3Bzff9ucXv/ +d3qD/3N2f/9ucXv/dXiB/3Byef9qbXf/b3F4/25wd/92eHz/cXR9/25wd/9vcnv/bG95/3N2f/9wcnn/ +d3qD/3d6g/9zdn//dXiB/3Bzff9nanT/bnB3/25xe/9zdn//cHN9/25wd/9zdn//cHJ5/3h5ff91d33/ +bG51/2xvef9tb3f/bnB4/29xev9rbnj/bnB3/2psc/9ucHf/b3F5/3J0ev9ucHb/Zmhv/2ptdP9sb3n/ +cHJ5/2dqcf93eX//c3V8/2dqcf9qbXf/cHJ5/25xe/9ucXv/cHN9/3t9g/95fIb/c3Z//3d6g/9zdn// +d3qD/2ptd/9zdXz/dXiB/3Bzff95fIb/dXd9/3V4gf9+gIb/cHN9/25xe/9qbXf/cHJ5/25wd/9sbnX/ +c3Z//3Bzff9wc33/bW9z/2ptd/9ucXv/bG95/2psc/9nanH/Z2px/2psc/9sbnX/bG95/2xudf9zdXz/ +dXd9/3N1fP9qbXf/dXiB/2dqdP9wcnn/c3V8/3N1fP9sbnX/am13/2xudf9sb3n/am13/2xvef9sb3n/ +dXd9/2ptd/9qbXf/Z2p0/2xudf9wcnn/b3F1/31+gf9vcXX/bW9z/3N2f/9wc33/dXiB/3N1fP9ucHf/ +cHN9/3d6g/9zdn//c3Z//3N2f/9sb3n/eXuB/25wd/9zdn//dXd9/25wd/9ucXv/dXiB/3l7gf9sb3n/ +bnB3/3N1fP9wcnn/Z2p0/2xvef9sb3n/bG51/25xe/9qbXf/bG95/2BjbP9sb3n/cHN9/2xvef9tb3P/ +bnB3/2xvef9qbXf/cHN9/25xe/9ucXv/bG95/25xe/91d33/c3V8/3t9g/9qbXf/bG95/3Z4fP9ucHf/ +bnB3/2psc/92eHz/dXd9/25xe/9ucXv/bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/ +d3qD/2xvef9wc33/cHN9/25wd/9ucXv/bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/ +amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/amxz/2ptd/9qbXf/Z2p0/3Bzff9ucHf/cHJ5/21vc/9ucHf/ +bnB3/2Zpc/9nanT/Z2p0/3V3ff9ucHf/fX6B/3d5f/9sbnX/bG95/3h5ff9ucHf/cHN9/2xvef9ucHf/ +dnh8/3V3ff91d33/dXd9/29xdf9ucHf/bG51/3Byef9sbnX/bG95/2ptd/9sbnX/cHN9/3V3ff9maXP/ +bG95/2xudf9qbXf/amxz/2ptd/9sb3n/Zmhu/2psc/9maXP/amx0/2ptd/9sb3n/YmVu/2xvef9tcHn/ +bW92/3V3ff9xdH3/bXB6/3V3ff9vcXj/bXB5/3Fzev9ydHr/dXh//3J0fP9vcXn/b3J7/29xdv9wcnn/ +bW9z/3V3ff93eX//bnB3/3Byef9wcnn/ZGdx/2ptd/9maXP/bG95/25xe/9qbXf/c3V8/2xudf91d33/ +c3V8/25wd/9zdXz/bXB6/21wev9ucXn/bG95/2xvef9sbnX/bnB3/25xe/92eH3/c3V8/2ptdf9vcXb/ +c3V8/3N2f/9maXP/e36H/3N2f/9sb3n/bG95/25xe/9zdn//cHN9/3N2f/93eX//eXuB/3Bzff93eoP/ +cHN9/3d6g/9nanT/bnB3/3N2f/9wcnn/c3Z//25wd/9ucXv/d3l//25wd/9sbnX/Z2p0/3Byef9ucHf/ +am13/3V4gf91eIH/c3Z//25wd/9sb3n/c3V8/3N2f/9ucHf/bnB3/25xe/9ucHf/bnB3/3V4gf9wc33/ +c3Z//3V3ff91d33/bnB3/3l7gf9nanT/bnF7/3Bzff9zdXz/bG51/2xudf9sbnX/bnB3/2xudf9sbnX/ +bG95/3Z4fP9qbXf/bG95/2xvef9wcnn/d3qD/3N1fP9+gIb/c3V8/3N1fP93eoP/dXiB/3t+h/93eoP/ +c3Z//3N2f/9+gYr/eXyG/3N2f/91eIH/bG95/3V4gf9ucHf/dXd9/3V3ff9wcnn/bG95/3N1fP9wc33/ +Zmlz/2dqcf9qbXf/eHl9/2xvef9wc33/c3Z//25xe/9zdn//cHN9/3V4gf9sb3n/dXiB/3t9g/91eIH/ +dXd9/3l7gf95e4H/d3l//35/g/95e4H/d3qD/3d6g/95e4H/eXyG/3d6g/+DhYz/dXiB/3d6g/97fYP/ +d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/ +bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/ +ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/dXd9/2xudf9ucHf/bG95/2xudf9zdXz/bnF7/3Byef9sbnX/ +bG51/21vc/9sbnX/cHJ5/2dqcf94eX3/bG95/3t9g/91d33/am13/25xe/91d33/am13/2ptd/9sbnX/ +bW9z/3V3ff94eX3/dXd9/29yfP9ucHf/bnB3/2ptd/9ydHz/b3F1/3V3ff9ucHf/bnB3/3V3ff9zdXz/ +Z2px/3Byef9ucXv/dXiB/3Byef9zdn//dXiB/3Byef9sb3n/a254/3Byd/9vcXn/cHJ5/2ttc/9tb3j/ +bnF7/25xev91d37/cHN8/25weP90dn//cXN5/29yev9ydH3/bnB3/3V3fv9ydX7/b3J8/3F0fv9zdn// +dXiB/25xe/93eX//d3l//25xe/9zdXz/bW9z/2dqcf9ucHf/bG51/3V3ff9ucHf/am13/3N1fP9sbnX/ +cHN9/3N1fP9qbXf/cHJ5/2xudf9rbnf/amx0/2ttc/9kZ3H/Zmlz/2psc/9qbXf/bnF6/3F0fP9rbnf/ +bXB4/3R2fP9wc33/YGNs/3d6g/9ucXv/Zmlz/2psc/9qbHP/Z2p0/2dqdP9nanT/c3V8/25wd/9sb3n/ +cHJ5/2dqcf9wc33/Zmlz/2xudf9qbXf/amxz/2ptd/9qbXf/bG95/3N1fP9sbnX/bG51/2Zpc/9qbXf/ +bG51/2psc/91d33/cHN9/25xe/9qbXf/am13/3Bzff9zdXz/amxz/2psc/9nanH/Z2px/2Zpc/9ucXv/ +am13/3Bzff9zdXz/cHJ5/2psc/91d33/bnB3/25xe/91d33/dXd9/2xvef9sb3n/bG95/25xe/9qbXf/ +cHN9/3N2f/95e4H/bG95/3N2f/9wcnn/cHJ5/3d6g/9wc33/foCG/25wd/9vcXX/c3V8/2xudf92eHz/ +cHJ5/29xdf9sbnX/dXd9/25wd/9wcnn/bG95/2Zpc/9zdXz/bW9z/3Z4fP91d33/bW9z/25wd/91d33/ +dXd9/2xudf9ucHf/cHJ5/25wd/9qbHP/bG95/25xe/9sbnX/bnF7/2dqcf9nanT/YGNs/2xudf9sb3n/ +amxz/2psc/9qbXf/amxz/2psc/9sb3n/am13/2xvef9qbHP/cHN9/3N1fP9sb3n/eXuB/2dqcf9nanT/ +am13/2dqdP9maG7/Zmlz/3Byef9zdXz/bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/ +bG51/21vc/91d33/am13/2xvef9zdXz/bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/ +Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/bnB3/3V3ff9sbnX/bG51/25wd/9qbXf/c3V8/25wd/9ucXv/ +am13/2xvef9sb3n/am13/25xe/9qbXf/dXiB/3N2f/9/gYf/eXyG/3Bzff91eIH/d3l//25wd/9zdXz/ +bnB3/29xdf9zdXz/dnh8/3V3ff9wcnr/b3F4/3J0ev9tb3f/cXN6/2ttdP9ucXv/bG51/25wd/94eX3/ +cHJ5/2dqcf9zdXz/c3V8/3N1fP9ucHf/bnB3/3Z4fP9vcXb/bXB6/2xvef9wc3z/cXN7/3Fze/9xdHv/ +cHJ5/3R2fv92eH7/dHeB/3R3f/9xdHz/eXuA/3d5f/9ydX3/eXyF/3BzfP93eYD/dHd//3Bzff90dn3/ +cHJ5/25xe/9tcHn/dnh8/3V3gP9ucXr/bnF6/2xvef9rbnj/aWx2/2tueP90dnz/b3F4/25wdP90dnv/ +bW93/3J0fP9zdXz/bW92/3J0fP9qbXf/bG51/25wdf9ucHb/bG51/2psc/9sbnX/am13/2ptd/9ydHr/ +Z2pz/2ptd/9xc3n/bG95/2Jlbv99foH/c3V8/2xudf9tb3P/bG51/25wd/9ucHf/bnB3/3V3ff91d33/ +cHN9/3Byef9maG7/bG95/2Rncf9iZW7/Z2p0/2xudf9qbXf/Z2p0/2xudf9ucXv/amxz/2dqdP9nanT/ +am13/2dqcf9nanH/cHJ5/25xe/9sb3n/am13/2xudf9ucXv/c3V8/2xvef9qbXf/bnB3/29xdf9ucHf/ +c3V8/3Byef91d33/bG95/2xvef9nanT/dXd9/29xdf9wcnn/dXd9/3Bzff9qbXf/bG51/2xudf9sb3n/ +Zmlz/2ptd/9qbXf/cHJ5/2Rncf9qbHP/Z2p0/2ptd/9sb3n/bG95/3d6g/9nanH/Z2px/25xe/9qbHP/ +d3l//2xvef9qbHP/bG51/3N1fP9sb3n/bG95/25xe/9maXP/bG95/2dqcf9ucXv/bG95/2dqcf9nanT/ +bnF7/25xe/9maXP/bG51/2ptd/95e4H/cHJ5/3V4gf93eoP/cHJ5/3l7gf9wc33/bnF7/2dqdP9sb3n/ +c3V8/3Byef9ucHf/c3Z//25xe/9ucXv/cHN9/25xe/9ucXv/bG95/3h5ff94eX3/cHJ5/4CChv9sbnX/ +bG51/3N1fP9wcnn/bnB3/2xvef91d33/dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/ +bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/ +cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/cHN9/2dqdP9sb3n/Z2p0/2xudf9qbHP/Z2p0/25xe/9qbXf/ +bnF7/2dqcf9qbXf/am13/2Zpc/9qbHP/ZGdx/2xvef9qbXf/c3Z//3N1fP9qbXf/am13/3N1fP9qbXf/ +bnF7/2ptd/9sbnX/bnF7/3Bzff9ucXv/am11/2xudf9xc3j/a211/3Fzev9tb3T/cHN9/2Zpc/9ucHf/ +dnh8/3Byef9rbXT/dHZ7/3Bzff90d4D/cHN9/2xvef9zdn//bnB3/25wd/9tcHr/cnV8/29xef9wcnr/ +cnR6/21vdv9wc3v/c3V7/3V3ff9wc33/bXB6/3N2fv90dnr/bnB1/3V3ff9tb3b/cXN6/3Byef9vcXn/ +cHJ5/3Byef9xc33/cHN8/3d5f/93eoL/cnV+/3BzfP9ucXr/bXB5/2tueP9tcHn/dnh+/3J0ff9vcnn/ +dHZ+/21wef9vcXr/b3J8/21vdv9ydX7/bG95/25wd/9tcHn/bW92/2dqdP9nanT/bnB3/25wd/9ucXv/ +dXd9/2ptdv9rbnf/bnF5/2xvef9iZW7/d3qD/2ptd/9qbXf/am13/2ptd/9qbXf/bG95/2ptd/9wcnn/ +bG95/2xvef9ucHf/Zmhu/2xvef9iZW7/ZGdx/2psc/9nanH/Zmlz/2Rncf9qbHP/bG95/2psc/9qbHP/ +Zmlz/2ptd/9qbHP/amxz/3Byef9qbHP/Z2p0/2psc/9iZW7/bG95/3Bzff9qbHP/amxz/2ptd/9sbnX/ +amxz/25xe/9ucHf/dXd9/29xdf9wcnn/Zmlz/3V3ff9sbnX/bnB3/3N1fP91d33/bnB3/3Byef9vcXX/ +bnB3/2psc/9sb3n/bnB3/3V4gf9qbHP/bG51/29xdf9sb3n/cHJ5/3Byef+Agob/bG51/2xudf9zdXz/ +bW9z/3Z4fP9zdXz/bnB3/25wd/94eX3/dXd9/3Byef9zdXz/bnB3/3V3ff9ucHf/dXd9/3Z4fP9vcXX/ +bG95/3V4gf93eoP/bnF7/2xvef91eIH/eXyG/25xe/93eoP/d3qD/3N1fP97fof/dXiB/3V4gf9ucXv/ +c3Z//3d6g/9zdn//cHN9/3N2f/9ucXv/bnF7/25xe/9sb3n/cHN9/25wd/94eX3/eHl9/3V3ff9/gYf/ +bG95/2xvef9wc33/bnF7/25wd/9sbnX/bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/ +bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/ +cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/cHJ5/3V3ff9sb3n/bG95/2dqdP9qbHP/Zmhu/2Rncf9nanT/ +amxz/2Zpc/9cX2j/ZGZs/2Zobv9gY2z/amxz/2BjbP9nanT/am13/3V3ff9zdXz/am13/2xudf9sb3n/ +bG51/2xvef9sbnX/am13/3N1fP9zdXz/c3V8/3Byef94eoD/eHuC/3N1fP93eX7/cnR5/3R2ff9sbnX/ +dXd9/3d6g/9zdXz/bnB2/3N1ff91d33/dXd9/3N1fP9sbnX/cHJ5/21wev9wc33/b3J7/3R3fv9ucXr/ +b3J3/3N1ef9rbnf/bnF7/3J0fP9ydX7/bnF6/2tueP9wc3z/b3F6/2lsdP9wcnn/aWx2/21veP9rbnj/ +bG95/21veP9pa3T/amxz/25wdv9ucHf/b3F2/2hqc/9tb3b/bG92/29xef9nanT/bnB3/3J1ff9vcXr/ +b3F4/3J0fP9ydHv/c3V7/3N1fP9tb3T/dHZ8/2ttdv9tb3X/a253/2xudf9laHL/ZGdx/2xudf9qbXf/ +bG95/3V3ff9qbHP/a213/2xudP9ucXv/ZGdx/3t9g/9ucXv/Z2p0/2xudf9qbHP/bnF7/2ptd/9ucXv/ +d3l//3N1fP91d33/dnh8/2xudf9wcnn/Zmlz/2dqdP9sbnX/bnB3/3Byef9vcXX/cHJ5/3Z4fP9vcXX/ +bnB3/2xudf9ucHf/am13/2ptd/9zdXz/bG51/2ptd/9qbXf/Z2p0/3Byef94eX3/b3F1/2xudf9sbnX/ +bW9z/2xudf9wcnn/bnF7/3V3ff9sb3n/cHJ5/2psc/93eX//bW9z/25wd/9wcnn/dXd9/25wd/9wc33/ +bnF7/25xe/9qbXf/c3V8/3N2f/95fIb/bG95/3Bzff9zdXz/bnF7/3N2f/9zdn//gYSN/3N1fP9ucHf/ +c3Z//25wd/91eIH/cHN9/25xe/9ucHf/d3l//3d6g/93eoP/eXuB/3Byef9zdn//c3V8/3l7gf95e4H/ +c3Z//3Bzff95e4H/eXuB/25wd/9ucXv/d3l//3t+h/9zdXz/e32D/3N2f/9sb3n/dnh8/25wd/9zdXz/ +Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/bG51/2xudf9qbXf/bG51/3Byef9ucHf/dXd9/3V3ff9zdXz/ +f4GH/29xdf9zdXz/cHJ5/25wd/9vcXX/bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/ +c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/ +dXiB/3d6g/9zdn//dXiB/25xe/9wc33/dXiB/3V4gf9zdn//bG95/3N1fP9ucHf/bnF7/2xvef9ucHf/ +cHJ5/2xudf9wcnn/Z2px/25wd/9tb3P/Z2p0/25wd/9nanT/cHN9/3N2f/91eIH/d3l//25xe/9sb3n/ +c3Z//25xe/91d33/bG51/29xdf91d33/dXd9/3N1fP9oa3T/cXR8/3N1ev9tcHn/b3J8/29xd/9zdXz/ +am13/3V3ff91d33/cHJ5/2xudv9ydHv/cXN6/3J0e/9wcnn/am13/25xe/9rbXP/bW92/21veP9vcnr/ +bXB6/21weP9ucHX/bG93/3Fze/9zdn7/dnmA/3N2f/9xdH7/d3l//3FzfP9tb3b/c3V6/25wef9xc3j/ +b3J3/25xef9zdn3/bG94/29xef91d3z/cXN4/3Bydv9qbXb/bXB6/21vd/9ydHv/Z2p0/2ttdP9ucHb/ +bG51/2hrc/9qbXb/a253/3J1ff9wc33/a210/3R2ff9nanT/aGty/2psc/9sbnX/ZGdx/2Zpc/9sbnX/ +Z2p0/2xvef9wc33/Zmlz/2xvef9qbXf/bnF7/2Jlbv93eoP/bnF7/2Zpc/9nanH/amxz/3Bzff9sbnX/ +bnF7/3V3ff9ucXv/bG95/3Byef9qbHP/am13/2Zpc/9kZ3H/Z2px/2dqcf9qbHP/bG51/2dqdP9ucXv/ +Z2px/2dqcf9maXP/Z2p0/2psc/9nanT/c3V8/2dqdP9qbXf/am13/2Zpc/9qbHP/am13/2dqcf9nanT/ +Z2p0/2Zobv9maXP/Z2p0/2ptd/9wc33/am13/2xudf9iZW7/c3V8/2Zpc/9ucXv/bnF7/3Bzff9sbnX/ +cHJ5/2xvef9qbXf/am13/2xudf9sbnX/d3l//2dqdP9sbnX/bG51/2dqdP9qbXf/am13/3t9g/9kZ3H/ +Zmlz/3Byef9qbHP/c3Z//2xvef9ucHf/bG51/3Z4fP9zdXz/dXd9/3V3ff9vcXX/cHJ5/2xvef9zdn// +c3Z//2xvef9qbXf/dXiB/3d5f/9ucHf/cHJ5/3l7gf91eIH/amxz/2xvef9sb3n/amxz/3Bzff9qbHP/ +bG95/2BjbP9sbnX/cHJ5/2xudf9ucHf/cHJ5/2ptd/9qbHP/am13/2ptd/9ucHf/bnB3/3N1fP9wc33/ +cHN9/4GDiv9ucHf/c3Z//25xe/9vcXX/b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/ +d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/ +bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/amxz/2ptd/9sb3n/bnF7/25wd/91d33/bnB3/25xe/9wc33/ +bnB3/3Bzff9zdn//d3qD/2xvef95fIb/dXd9/25xe/9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/97fYP/ +dXiB/3l8hv93eoP/eXyG/3N2f/9wcnn/dXiB/3l7gf9wc33/bnB3/3R2fv93eYH/c3V+/3R2fv9vcnn/ +cHN9/2ptd/91eIH/d3qD/3V4gf9wcnn/b3J8/29yfP9wcnn/cHJ5/21vc/9zdXz/b3F1/2xvef9tb3n/ +cHN7/3J0ff9wc3z/Z2p0/29xef9zdn//bnF7/3d4ff9zdn//cHJ5/3Z4fv9xc3f/am10/2xvef9ucHf/ +a254/21wev9wcnb/dXd9/25xev9vcnz/dnh//3Fzev9zdX3/Z2p0/25xe/9sb3n/dnh+/2hrdP9ucHf/ +bXB5/25xe/9sb3n/cHN9/3N2f/94e4X/c3Z//29xdf91d33/c3V8/2xudf9qbXf/bG95/2Zpc/9maXP/ +bG51/25wd/9wcnn/dXd9/2psc/9ucHf/bG95/3V3ff9maXP/f4GH/3V4gf9wcnn/cHN9/3Bzff93eX// +c3Z//3V4gf97fof/eXuB/3t9g/97fYP/d3qD/3l8hv9zdn//cHN9/3N1fP9zdXz/bnF7/25xe/9ucXv/ +dnh8/25wd/9wcnn/bG95/3N1fP9sbnX/Z2p0/3N1fP9kZ3H/Z2p0/2psc/9kZ3H/am13/2xvef9sbnX/ +bnF7/3Bzff9sbnX/Z2p0/2ptd/9ucXv/c3V8/25wd/9qbXf/ZGdx/3N1fP9nanT/bG95/25xe/9wc33/ +bG95/25xe/9qbXf/bnF7/2ptd/9ucHf/b3F1/3d5f/9maG7/b3F1/2xudf9nanT/bnB3/2xvef9/gYf/ +bG95/25xe/93eoP/cHJ5/3t+h/9wc33/cHN9/25wd/91eIH/dXd9/3N2f/9wc33/cHJ5/3V4gf9zdn// +d3l//3V3ff9vcXX/bG51/3V3ff9zdXz/bG51/2psc/9wc33/foGK/3N1fP93eoP/c3Z//25wd/91d33/ +bnB3/25wd/9kZ3H/bnB3/3N2f/9sb3n/bnB3/3Byef9ucHf/bG95/25wd/9sb3n/bnB3/25wd/9sb3n/ +cHN9/2xvef9/gYf/cHJ5/3Byef9ucHf/bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/ +c3Z//3+Bh/9zdn//d3qD/31+gf9zdn//c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX// +c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/am13/25wd/9wcnn/bG51/25xe/9qbXf/bnF7/2xudf9qbXf/ +amxz/2Zpc/9sb3n/am13/25xe/9maXP/bG95/2xudf9iZW7/bG51/2dqdP9sb3n/cHJ5/3d5f/93eX// +am13/2ptd/9qbXf/am13/25xe/9sbnX/Z2p0/25xe/9wc33/cHN9/25vdf9qbHX/bG51/2ptdv9rbnj/ +Z2pz/2dqdP9kZ3H/am13/3N1fP9sb3n/Zmlz/2psc/9maXP/am13/2Zpc/9qbHP/am13/2psc/9sbnX/ +Z2p0/21vdv9tcHr/bG95/15ha/9nanH/a210/2ttdP9wcnn/dHZ9/2ptd/9sb3n/aGty/2dqdP9oa3T/ +amxz/2ptd/9wcnn/bW9z/3Z4fP9qbXf/bnB3/3Z4fP9sbnX/am13/2Rncf9qbXf/am13/3d5f/9nanH/ +bG51/2xudf9ucHf/bG95/25wd/9ucHf/dXiB/25xe/9sbnX/dXd9/25xe/9tb3P/cHJ5/25wd/9nanH/ +amxz/29xdf9ucHf/cHJ5/3N1fP9qbXf/am13/2ptd/9sb3n/YmVu/36Ahv9sb3n/Z2p0/2dqdP9qbXf/ +cHN9/2ptd/9sb3n/dXd9/3V3ff9wcnn/c3V8/3Byef9ucXv/bG95/2ptd/9ucHf/bG95/25xe/9sb3n/ +bG95/3V3ff9ucHf/bG95/25wd/93eX//bnB3/25wd/97fYP/amxz/25wd/9ucHf/bG51/25wd/9sb3n/ +bW9z/2xvef9ucXv/Z2p0/2Jlbv9nanH/am13/3Bzff9qbXf/am13/2Rncf9wc33/amxz/2xudf9ucHf/ +c3V8/2xvef9ucXv/am13/3Bzff9nanT/bG51/21vc/92eHz/Zmhu/2xudf9tb3P/bG51/29xdf9zdXz/ +f4KM/25xe/9nanT/d3qD/2xvef93eX//cHJ5/2xvef9ucHf/dXiB/3h5ff9zdn//c3Z//3Byef9zdn// +dXiB/3t9g/95fIb/cHJ5/3Bzff97fYP/fn+D/3Z4fP9wc33/e32D/3t+h/9wc33/dXiB/3Bzff9ucXv/ +dXiB/25wd/9wc33/Z2p0/25wd/9wc33/bnB3/2xvef9sb3n/bnB3/2ptd/9qbXf/bnF7/25wd/9sbnX/ +bG51/3N1fP9wcnn/f4GH/3Byef9wcnn/bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/ +Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/ +c3V8/25xe/9zdXz/bG51/2xvef9sbnX/cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/ +bnB3/2ptd/9qbXf/c3V8/25xe/9ucXv/am13/2xvef9ucHf/ZGZs/25wd/9sbnX/cHJ5/3V3ff97fYP/ +eHl9/25wd/9ucHf/bnB3/3Byef9wc33/bW9z/2psc/9zdXz/dXd9/3N1fP9ydHr/Zmlz/2ptd/9oa3X/ +b3J8/2xvef9ucHf/bnB3/3V3ff93eX//dXd9/25wd/9ucHf/bnF7/3N2f/9ucXv/bnF7/3N2f/9ucHf/ +bG95/2xvef9vcXX/dXd9/3Byef9kZmz/bW9z/25wd/9ucXv/d3l//3d6g/9wc33/dXiB/3N1fP9wcnn/ +bG95/3Byef9sbnX/cHJ5/25wd/9zdn//bnB3/25xe/95e4H/bG95/25wd/9qbXf/b3F1/29xdf94eX3/ +bnB3/25wd/9ucHf/b3F1/3Byef9sb3n/cHJ5/3d5f/9zdXz/bG51/3N1fP9ucXv/bG51/3N1fP9sbnX/ +Z2p0/2dqdP9sb3n/bnB3/25xe/9wc33/amxz/29xdf9wcnn/c3V8/2Jlbv9/gYf/bnB3/21vc/9sbnX/ +bG95/3d5f/9wc33/dXiB/3l7gf93eX//c3Z//3V4gf9ucXv/bnF7/25wd/9maXP/bnB3/25xe/9ucXv/ +cHJ5/2xvef91d33/b3F1/2xudf9ucHf/dnh8/25wd/9sbnX/dXiB/2psc/9sb3n/bG51/2dqdP9qbXf/ +am13/2psc/9sb3n/bnF7/2ptd/9qbXf/bnF7/25xe/91d33/am13/2ptd/9kZ3H/c3V8/2ptd/9qbHP/ +am13/25xe/9qbXf/am13/2psc/9sb3n/ZGdx/2xudf9nanT/cHN9/2Rncf9nanT/bG51/2dqdP9qbXf/ +bnF7/36Ahv9qbXf/Z2p0/3N2f/9sbnX/dXd9/2xvef9qbXf/bW9z/3d5f/93eX//dXd9/3Byef9ucHf/ +cHN9/3N2f/93eX//dXd9/2xvef9qbXf/dXd9/3V3ff9sb3n/b3F1/3Z4fP93eX//bnB3/3N2f/9ucXv/ +bnB3/3Bzff9sb3n/bnF7/2Zpc/9sb3n/cHN9/25wd/9wc33/bnB3/2xudf9ucHf/bnB3/3V3ff9wcnn/ +bW9z/25wd/9zdXz/c3V8/3+Bh/91d33/cHJ5/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/ +bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/ +Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/95e4H/ +c3V8/3Bzff9wc33/Z2p0/3Bzff9zdXz/cHJ5/2xudf9wcnn/am13/2Jlbv9qbXf/Z2p0/2xvef9wc33/ +c3Z//3N1fP9sbnX/bG95/21vc/9ucXv/bnF7/2dqdP9kZ3H/bnF7/3Bzff9ucXv/cnR7/2Rncf9qbHP/ +am13/3Bzff9sb3n/bnB3/2psc/9zdXz/dXd9/3N1fP9qbXf/bG51/25wd/92eHz/cHJ5/3Byef9zdXz/ +b3F1/25wd/9nanT/bW9z/25wd/9sb3n/ZGdx/2ptd/9qbXf/am13/25xe/93eX//cHJ5/3N1fP9wcnn/ +bW9z/21vc/9ucHf/bG51/2Zpc/9nanH/bG95/2dqcf9maXP/bnF7/2psc/9maXP/am13/2xudf9sbnX/ +c3V8/2psc/9nanT/a253/2xudf9wc33/a254/3Byef91eID/bG95/2xvef91d33/cHJ5/2ptd/9ucXv/ +bG95/2hrdf9qbXf/bG51/2xudf9qbXf/Z2p0/2Rncf9nanH/a254/2xvef9gY2z/gIKG/2xudf9tb3P/ +bG51/29xdf91d33/cHJ5/3V3ff91d33/c3Z//3Bzff91d33/cHN9/3Bzff9wcnn/am13/25wd/9zdn// +cHN9/3V4gf93eoP/d3l//2ptd/9ucHf/bnB3/3Z4fP9qbHP/bW9z/3Z4fP9sbnX/bnB3/3Byef9qbHP/ +bnB3/2ptd/9sbnX/bnB3/3N1fP9ucHf/bG51/3N1fP9wcnn/dnh8/3Byef9ucHf/bG51/3N1fP9ucHf/ +bnB3/25xe/9zdn//c3Z//3Bzff9wc33/d3qD/25xe/91eIH/cHN9/3l8hv9zdXz/dXd9/3l7gf92eHz/ +eXuB/3t9g/+FiJH/d3qD/3Bzff9/gYf/dXiB/3t+h/91eIH/d3qD/3V4gf9+gYr/e32D/3d6g/9zdn// +c3V8/3N2f/9zdn//dnh8/3V4gf9sb3n/bG95/3Z4fP91d33/bG51/21vc/9wcnn/d3l//25xe/91d33/ +cHJ5/25wd/9ucXv/bnB3/3Byef9nanH/cHN9/3V4gf9wcnn/bnF7/25xe/9ucHf/cHJ5/25xe/91eIH/ +cHN9/3Byef9ucXv/c3Z//3N2f/9+gIb/dnh8/3Bzff9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/ +eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/ +dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/ +c3V8/2Zobv9sb3n/bG51/2Zpc/9qbXf/am13/2ptd/9nanT/am13/2xvef9kZ3H/bG95/2dqdP9ucXv/ +bnF7/3V3ff94eX3/bG95/3N2f/9sb3n/cHN9/3Bzff9ucHf/Z2p0/3V3ff91d33/dXd9/3h5ff9sbnX/ +bnB3/2xvef91d33/c3Z//2xvef9qbXf/c3Z//3l7gf91eIH/bnB3/3Byef9wc33/d3l//3Byef9wcnn/ +cHJ5/21vc/9sbnX/amxz/2xudf9sbnX/bG51/2Zobv9wcnn/bG51/25xe/9ucXv/c3V8/3J0e/9sb3n/ +bnB3/2xudf9ucHT/bG51/2Zpc/9vcXj/bG51/21vdv9tb3b/bW93/3R2ff9rbnf/aGt1/2dqdP9sbnX/ +am13/3Fzev9qbHP/a253/2xveP9qbHP/bG95/2xveP9wcnj/dHZ7/21vdf9ydXz/dXd9/3J0ff9sb3n/ +b3J8/3N1fP9vcXj/b3F4/21vc/9qbXf/bG95/3Byef9ucHf/b3F1/29xeP9zdXz/Z2px/4GDiv9sb3n/ +bnF7/3Byef9wcnn/dXiB/3N2f/93eoP/e32D/3V4gf9wc33/c3Z//3V3ff9ucHf/b3F1/2psc/9ucHf/ +bnF7/25wd/9zdn//c3V8/3Z4fP9qbHP/bG51/21vc/92eHz/bG51/29xdf92eHz/amxz/2xudf9wc33/ +Zmlz/3Byef9qbXf/bnB3/25wd/92eHz/b3F1/25wd/9zdXz/c3V8/3V3ff9wc33/am13/2dqcf9wcnn/ +bW9z/29xdf9sbnX/cHJ5/2xvef9wcnn/bG51/2xvef9maXP/cHJ5/25wd/94eX3/Zmhu/2xudf9sb3n/ +Z2p0/2ptd/9sb3n/foCG/25xe/9sbnX/eXuB/2xvef93eX//bG51/25wd/9tb3P/dXd9/3N1fP91d33/ +bG51/2psc/9zdXz/c3V8/3N1fP9sb3n/amxz/2ptd/92eHz/c3V8/29xdf9ucHf/cHN9/3d6g/9ucXv/ +d3l//3Bzff9zdXz/cHN9/3Byef9wc33/am13/3Bzff95e4H/dXd9/3V4gf9wc33/cHN9/3V3ff91eIH/ +eXuB/3N1fP9zdXz/cHN9/3d6g/95e4H/g4WM/3l8hv91eIH/d3qD/3Bzff9zdn//c3V8/3N2f/91eIH/ +bnB3/3d5f/9sb3n/bnB3/25wd/93eX//bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/ +dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/ +bnF7/3V4gf9ucHf/c3Z//3Bzff9qbXf/c3V8/3Bzff91eIH/bG95/2xvef9zdn//bG95/2xvef9qbXf/ +cHN9/3Byef91eIH/d3l//2xvef9zdn//bnB3/3N2f/9wc33/cHJ5/2ptd/9zdXz/cHJ5/3V3ff92eHz/ +Z2p0/2ptd/9qbXf/cHN9/2ptd/9sbnX/amxz/3Byef91d33/c3V8/2dqdP9tb3P/bnF7/3V4gf9wc33/ +cHN9/3d6g/9zdXz/bnF7/25xe/9xc3r/dXiA/3N1fP9tcHr/c3Z//3Z4fv94e4T/enyC/31/hv94eoD/ +dHeA/3Bzff9ucXv/cHN6/29xef9tcHn/cnR7/25wd/9vcXX/aWx1/2ttdv9wcnn/b3F3/21vdv9sbnb/ +bW92/21wdv9xc3n/bG50/21vdP9wcnj/bW91/25xef9xdHz/cXR9/3Fzev9vcXj/b3F4/3Z4gP9wc3v/ +bG95/29yfP9ydHz/cXN7/21wev9ucHf/bnF7/3Byef9wc33/bnB3/25wd/9xc3r/cHJ5/2Zobv+Agob/ +bG51/2xudf9sbnX/bG51/3N1fP9wcnn/eHl9/3V3ff91d33/c3V8/3Bzff9zdXz/amxz/2psc/9nanT/ +Z2px/2xudf9sbnX/cHN9/2xudf9wc33/Z2p0/2psc/9sbnX/dXd9/2ptd/9qbHP/c3V8/2ptd/9qbXf/ +cHN9/2dqdP9ucXv/bnB3/3N1fP9ucHf/dXd9/25wd/9sb3n/c3Z//3N2f/93eX//dXiB/25xe/9sb3n/ +c3Z//25wd/9wcnn/c3V8/3N2f/9ucXv/c3Z//2xvef9zdXz/Z2px/3Byef9sbnX/cHN9/2Rncf9qbHP/ +bnF7/2dqcf9qbXf/am13/3V4gf9maXP/ZGdx/3N1fP9nanT/cHJ5/2psc/9nanT/Z2px/3V3ff9zdXz/ +bnF7/2ptd/9qbXf/cHN9/3N1fP9zdXz/c3V8/25wd/9ucHf/d3qD/3N2f/9ucHf/bG95/3Bzff95e4H/ +bG95/3V3ff9sb3n/bnB3/25xe/9sb3n/bnB3/2dqcf9vcXX/c3V8/2ptd/9ucHf/bG51/2ptd/9nanT/ +bG51/3N1fP9sbnX/bW9z/2xudf9zdXz/dXd9/31+gf9zdXz/bG95/2xvef9sbnX/bG51/2ptd/9ucHf/ +c3V8/2xvef91d33/bnB3/3Byef9sb3n/dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/ +bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/ +c3V8/25wd/91d33/am13/3Bzff9sbnX/amxz/25wd/9sb3n/bnF7/2ptd/9qbXf/dXd9/2xudf9sbnX/ +Zmlz/2xvef9sb3n/dXd9/3N1fP9qbXf/bnF7/21vc/9zdXz/cHJ5/25xe/9sb3n/c3Z//3Bzff93eX// +eHqA/2hrdf9ucHf/a254/3N2f/9ucHf/bnB3/25wd/9wcnn/eXuB/3V3ff9sbnX/bG51/21vdv91d3z/ +am13/2psc/9ucXv/amxz/2dqcf9nanT/Z2pz/2dqc/9maHL/YmRt/2Zobv9pbHb/bG53/25wef9wcnr/ +cHJ5/2tueP9tb3f/bG51/3Fzev9sb3f/bG95/21wev9vcnr/bG53/2xudf9rbnX/b3J6/25wef9ucXn/ +am13/2tueP9ydHv/cHJ6/25wd/9ucXn/dHZ9/29xdv9wcnr/dHZ9/3BzeP9ucHf/bnB4/29xef93eYD/ +bnF2/25wd/9xc3v/cXN4/3N1e/9xc3r/cXN6/3N2f/9wc33/d3qD/3Byef9wcnn/cXR9/3Bzff9nanT/ +f4KM/3Bzff9ucHf/b3F1/21vc/9zdXz/bnB3/3V3ff93eX//cHN9/25xe/9wc33/dXd9/29xdf9ucHf/ +bnB3/25wd/9vcXX/cHN9/3N2f/9ucXv/dXiB/2xvef9ucXv/bnF7/3l7gf91d33/d3l//35/g/94eX3/ +eXuB/36Ahv96e3//f4GH/3l8hv9+gYr/eXyG/4CChv97fYP/dXd9/3l8hv99foH/fn+D/35/g/93eX// +cHN9/3t9g/9wc33/c3V8/3Byef9wc33/b3F1/3Z4fP9qbXf/bG95/2Jlbv9qbXf/am13/2ptd/9gY2z/ +Zmlz/2xvef9kZ3H/Zmlz/2xvef93eoP/am13/2Rncf9wc33/ZGdx/2ptd/9maG7/Z2px/2Zobv9zdXz/ +d3qD/3Bzff9sb3n/amxz/3Byef9zdXz/dnh8/3N1fP9sbnX/bG51/3h5ff9wcnn/bnB3/25wd/9zdXz/ +d3l//25wd/91d33/bnB3/21vc/9wcnn/bnB3/2xvef9maXP/bnB3/3Byef9sbnX/bnB3/25wd/9wcnn/ +amxz/25wd/92eHz/bnB3/29xdf9wcnn/cHJ5/3Z4fP9+gIb/c3V8/3Byef9sb3n/bG51/2ptd/9maXP/ +am13/2xvef9ucXv/cHJ5/2dqcf9nanT/Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/ +Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/ +Zmhu/2Zpc/9kZ3H/cHJ5/2Zpc/9qbXf/am13/2Rncf9maXP/Z2p0/2xvef9maXP/bG51/3Bzff9maXP/ +bW9z/2ptd/9sb3n/am13/3Bzff9ucXv/amxz/25xe/9sbnX/cHJ5/2xvef9qbXf/ZGdx/2ptd/9qbXf/ +c3V8/3F0e/9laHH/bG51/2dqc/9tcHr/amxz/2ptd/9nanT/cHJ5/3l7gf91d33/amxz/2xudf9vcXj/ +d3h8/3Byef9vcXX/dXd9/21vc/9sbnX/bG95/29yfP9wc3v/bW92/2ptd/9sb3j/c3V7/3V4f/90dnr/ +c3V8/3Byev9xc3v/c3Z9/29xeP91d4D/bnB4/21wev91d37/dnh//3Fze/9tb3b/bW93/3J0e/9zdn3/ +cnV+/25xe/9vcnn/cnV//25xe/9wcnr/cHN8/3Z4gf9wcnn/cHJ6/3d6hP9zdXz/cXN9/3Bzff9zdXz/ +fYCJ/25wd/9sb3n/bG95/29xeP90dnv/b3J7/25wd/9ucHf/bW92/3N1fP9ucHf/bnB3/29yef9wcnn/ +Z2px/35/g/9ucHf/bG51/21vc/9qbXf/bnF7/2xvef93eX//d3l//3N1fP9ucXv/bnF7/25xe/9nanT/ +amxz/2Zpc/9nanT/ZGdx/2dqdP9nanT/ZGdx/3Byef9kZ3H/bG51/2xudf9sb3n/Zmlz/2psc/9wc33/ +amxz/2xudf9zdXz/amxz/2xvef9qbXf/bnF7/2ptd/9sb3n/am13/2xudf9ucXv/cHN9/3Bzff9wc33/ +am13/2ptd/91d33/bnB3/2xudf9sbnX/bnB3/2xudf92eHz/bG51/25wd/9kZ3H/bG95/3N1fP9sb3n/ +ZGZs/2ptd/9ucXv/bG51/2ptd/9zdXz/fn+D/2xvef9sb3n/foCG/25xe/91eIH/bnF7/25wd/9vcXX/ +dXd9/3d5f/9wc33/c3Z//25wd/9zdn//bnF7/3V3ff9ucXv/bG51/29xdf94eX3/c3Z//25wd/9ucXv/ +c3Z//3l7gf9wcnn/d3l//25xe/9wcnn/cHN9/3N2f/9zdXz/am13/2xvef91d33/bG51/3N1fP9sb3n/ +bG51/2dqcf9sb3n/dXd9/2psc/9qbXf/bG95/2xvef9wcnn/d3qD/3V3ff91d33/am13/3Byef9wcnn/ +Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/ +am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/ +cHJ5/29xdf9wc33/bnF7/3l8hv9sb3n/cHN9/3N2f/9sb3n/bG95/3N2f/9wc33/bG95/3Bzff93eX// +am13/25wd/9vcXX/cHJ5/25wd/9zdXz/c3V8/2xudf9sb3n/bnB3/2xvef9sbnX/amxz/1xfaP9nanH/ +Z2px/3Bzff9ucXv/a253/2xud/9tb3j/cXR7/21vc/9ucHf/amxz/25xe/93eX//c3V8/2hqdP9rbnf/ +bXB5/3R2ev9sbnX/bW9z/25wd/9qbHP/cHJ5/29xef9zdX3/cHJ7/21weP9sb3n/bnB3/3N2f/94eoD/ +b3J7/3N2f/9zdn//eHuF/3l7gf92eH7/fX+F/3R2ff91eH7/enyC/3p8gv94eoH/d3h9/31/hv97fYP/ +e32D/3x9gf94eoD/dnh8/31/hf94eX7/d3l//3d5f/97fYP/cHN9/3V3ff97fof/cHN9/2xvef9wc33/ +cHN9/3t+h/9zdXz/c3Z//3d6g/9wc33/d3mA/3J1f/9ucHb/bXB5/21vdv9ucHf/bnB3/25wd/9vcnv/ +cHJ5/2dqcf9+gIb/bnF7/3N1fP9vcXX/bnF7/3d6g/9wc33/e36H/3l8hv9zdn//cHN9/25xe/91d33/ +bnB3/25xe/9sb3n/bnF7/2xvef9ucXv/cHN9/3Byef93eX//bG51/2xudf9sbnX/bG95/2dqdP9qbHP/ +bnF7/2psc/9nanH/am13/2Zpc/9nanT/Z2px/2ptd/9sbnX/bnF7/2xudf9tb3P/cHJ5/3V3ff91d33/ +dXd9/2xvef9sb3n/dXiB/25wd/9wc33/c3V8/3V4gf9zdn//d3qD/3N2f/95fIb/cHN9/3l8hv97fYP/ +eXuB/2dqdP9zdn//eXyG/3Bzff91eIH/eXuB/3+Bh/9ucXv/bnB3/35/g/9tb3P/dXd9/3Byef9wcnn/ +b3F1/3d5f/93eX//bnF7/3Bzff9sb3n/cHJ5/25xe/93eX//c3Z//3Byef9ucHf/dXd9/3N1fP9sb3n/ +bG95/3N2f/93eX//bnB3/3V3ff9vcXX/bnF7/3Bzff9ucXv/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/ +bG95/2xvef9qbHP/bG95/3V3ff9vcXX/bG51/2xvef9qbXf/cHJ5/3l7gf91d33/bnF7/25wd/9ucHf/ +cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn//bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/ +am13/2xudf9ucHf/bG51/3V3ff99foH/Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/ +am13/25xe/9ucHf/c3V8/3V3ff95e4H/bnB3/3V3ff92eHz/amxz/2xudf92eHz/bnF7/2xudf9ucHf/ +c3V8/2dqdP9qbXf/bG51/3N1fP9ucHf/c3V8/3V3ff9ucHf/cHJ5/3Byef9zdXz/bW9z/21vc/9kZmz/ +bG51/2xvef91d33/bG50/3Byef9vcXb/cXN5/3Fzef9qbXf/bG95/2Zpc/9sb3n/d3l//3N1fP9rbXT/ +bXB4/29yev9zdXz/bnB3/25wd/9zdn//am13/25xe/9ucHr/cHN7/2xudv9oa3X/a254/2xudf9wc33/ +dXd9/2xudf9ucHf/bnB3/3Byef91d33/bnB3/3d5f/9ucHf/bG95/3N2f/92eHz/cHJ5/25wd/9wcnn/ +cHJ5/3Byef9wcnn/bnB3/25wd/9sb3n/bnB3/25wd/91eIH/c3Z//3Byef9ucHf/d3l//29xdf9nanH/ +bG51/21vc/93eoP/bG51/2ptd/9ucXv/amxz/3N1fP9qbXb/aWt0/29xeP9sb3j/bG51/2xvef9ucHf/ +bG95/2xvef9nanH/fn+D/25wd/9ucHf/am13/2xudf91d33/bG51/3l7gf91eIH/cHN9/3N2f/9wc33/ +d3l//2xvef9wc33/bnB3/2xvef9sb3n/bnF7/3Bzff9ucXv/d3l//2ptd/9ucHf/bG95/3Byef9vcXX/ +b3F1/3N1fP9vcXX/b3F1/3Bzff9nanT/bG51/2ptd/9ucXv/bG51/2xvef9sb3n/bG51/2xudf9sb3n/ +dXd9/3Bzff9qbXf/am13/3Byef9qbXf/am13/2Zpc/9ucXv/bG95/2xvef9nanT/bnF7/2Rncf9sb3n/ +bnF7/25xe/9gY2z/Z2p0/2xvef9qbXf/am13/3Bzff93eoP/am13/2ptd/97fYP/bG51/2xvef9ucXv/ +bG95/2psc/91d33/dXd9/2ptd/9zdXz/bnB3/3Bzff9ucHf/dnh8/25xe/9wcnn/cHJ5/3d6g/9ucXv/ +cHN9/2xvef9wc33/AA0BAAADAAAAAQEAAAABAQADAAAAAQEAAAABAgADAAAABAAEAKoBAwADAAAAAQAB +AAABBgADAAAAAQACAAABEQAEAAAAAgAEALIBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQCA +AAABFwAEAAAAAgAEALoBHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAEAMIAAAAAAAgACAAI +AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + + + + + + 3 + MCAwAA + + + scrollViewTexturedBackgroundColor + + + 0 + 10 + + 1 + 30 + + + Helvetica + 30 + 16 + + + + + 292 + {{224, 14}, {25, 25}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + + + 292 + {{262, 12}, {50, 29}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + 00:01 + + + 0 + 10 + 1 + + 1 + 15 + + + Helvetica + 15 + 16 + + + + {320, 53} + + + + _NS:9 + NO + IBCocoaTouchFramework + + + + + + + stateView + + + + 24 + + + + timeLabel + + + + 25 + + + + firstBackground + + + + 26 + + + + otherBackground + + + + 27 + + + + addressLabel + + + + 28 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 16 + + + + + + + + + + + + 14 + + + otherBackground + + + 17 + + + addressLabel + + + 18 + + + stateView + + + 19 + + + timeLabel + + + 20 + + + firstBackground + + + + + UICallCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 28 + + + + + UICallCell + UITableViewCell + + UILabel + UIView + UIView + UIImageView + UILabel + + + + addressLabel + UILabel + + + firstBackground + UIView + + + otherBackground + UIView + + + stateView + UIImageView + + + timeLabel + UILabel + + + + IBProjectSource + ./Classes/UICallCell.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {640, 125} + {640, 135} + + 1181 + + diff --git a/Classes/LinphoneUI/UIContactCell.h b/Classes/LinphoneUI/UIContactCell.h index 4990ce768..f9e03e81d 100644 --- a/Classes/LinphoneUI/UIContactCell.h +++ b/Classes/LinphoneUI/UIContactCell.h @@ -18,6 +18,7 @@ */ #import +#import @interface UIContactCell : UITableViewCell { UILabel *firstName; @@ -27,5 +28,5 @@ @property (nonatomic, retain) IBOutlet UILabel* firstName; @property (nonatomic, retain) IBOutlet UILabel* lastName; -- (void) update; +- (void)update:(ABRecordRef) record; @end diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index ea8980070..2f1443e1b 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -45,7 +45,31 @@ [self setHighlighted:false animated:true]; } -- (void) update { +- (void) update:(ABRecordRef) record { + CFStringRef lFirstName = ABRecordCopyValue(record, kABPersonFirstNameProperty); + CFStringRef lLocalizedFirstName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lFirstName):nil; + CFStringRef lLastName = ABRecordCopyValue(record, kABPersonLastNameProperty); + CFStringRef lLocalizedLastName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lLastName):nil; + + if(lLocalizedFirstName != nil) + [firstName setText: [(NSString *)lLocalizedFirstName retain]]; + else + [firstName setText: @""]; + + if(lLocalizedLastName != nil) + [lastName setText: [(NSString *)lLocalizedLastName retain]]; + else + [lastName setText: @""]; + + if(lLocalizedLastName != nil) + CFRelease(lLocalizedLastName); + if(lLastName != nil) + CFRelease(lLastName); + if(lLocalizedFirstName != nil) + CFRelease(lLocalizedFirstName); + if(lFirstName != nil) + CFRelease(lFirstName); + CGRect firstNameFrame = [firstName frame]; CGRect lastNameFrame = [lastName frame]; diff --git a/Classes/LinphoneUI/UIDigitButton.h b/Classes/LinphoneUI/UIDigitButton.h index 70f7aee18..bb4cf415e 100644 --- a/Classes/LinphoneUI/UIDigitButton.h +++ b/Classes/LinphoneUI/UIDigitButton.h @@ -16,21 +16,24 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import -#include "linphonecore.h" -@interface UIDigitButton : UIButton { +#import + +#import "UILongTouchButton.h" + + +@interface UIDigitButton : UILongTouchButton { @private char mDigit; UITextField* mAddress; - bool_t sendDtmfDuringCall; + bool sendDtmfDuringCall; } -(void) initWithNumber:(char)digit ; --(void) initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool_t)send; +-(void) initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool)send; -@property bool_t sendDtmfDuringCall; +@property bool sendDtmfDuringCall; @end diff --git a/Classes/LinphoneUI/UIDigitButton.m b/Classes/LinphoneUI/UIDigitButton.m index 2a0cad86c..d0fd07868 100644 --- a/Classes/LinphoneUI/UIDigitButton.m +++ b/Classes/LinphoneUI/UIDigitButton.m @@ -25,58 +25,43 @@ @synthesize sendDtmfDuringCall; - - --(void) touchDown:(id) sender { +- (void)touchDown:(id) sender { if (mAddress && (!sendDtmfDuringCall || !linphone_core_in_call([LinphoneManager getLc]))) { NSString* newAddress = [NSString stringWithFormat:@"%@%c",mAddress.text,mDigit]; [mAddress setText:newAddress]; linphone_core_play_dtmf([LinphoneManager getLc], mDigit, -1); - if (mDigit == '0') { - //start timer for + - [self performSelector:@selector(doKeyZeroLongPress) withObject:nil afterDelay:0.5]; - } } else { - linphone_core_send_dtmf([LinphoneManager getLc],mDigit); + linphone_core_send_dtmf([LinphoneManager getLc], mDigit); linphone_core_play_dtmf([LinphoneManager getLc], mDigit, 100); } } --(void) touchUp:(id) sender { +- (void)touchUp:(id) sender { linphone_core_stop_dtmf([LinphoneManager getLc]); - if (mDigit == '0') { - //cancel timer for + - [NSObject cancelPreviousPerformRequestsWithTarget:self - selector:@selector(doKeyZeroLongPress) - object:nil]; - } - - } --(void)doKeyZeroLongPress { - NSString* newAddress = [[mAddress.text substringToIndex: [mAddress.text length]-1] stringByAppendingString:@"+"]; - [mAddress setText:newAddress]; - +- (void)onRepeatTouch { } --(void) initWithNumber:(char)digit { +- (void)onLongTouch { + if (mDigit == '0') { + NSString* newAddress = [[mAddress.text substringToIndex: [mAddress.text length]-1] stringByAppendingString:@"+"]; + [mAddress setText:newAddress]; + [mAddress sendActionsForControlEvents:UIControlEventEditingChanged]; + } +} + +- (void)initWithNumber:(char)digit { [self initWithNumber:digit addressField:nil dtmf:true]; } --(void) initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool_t)sendDtmf{ + +- (void)initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool)sendDtmf{ sendDtmfDuringCall = sendDtmf; - mDigit=digit ; + mDigit=digit; mAddress=address?[address retain]:nil; [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside]; } -/* - // Only override drawRect: if you perform custom drawing. - // An empty implementation adversely affects performance during animation. - - (void)drawRect:(CGRect)rect { - // Drawing code. - } - */ - (void)dealloc { [super dealloc]; diff --git a/Classes/LinphoneUI/UIEraseButton.m b/Classes/LinphoneUI/UIEraseButton.m index 0f2011267..9c44d10d9 100644 --- a/Classes/LinphoneUI/UIEraseButton.m +++ b/Classes/LinphoneUI/UIEraseButton.m @@ -21,6 +21,7 @@ @implementation UIEraseButton + -(void) touchDown:(id) sender { if ([mAddress.text length] > 0) { [mAddress setText:[mAddress.text substringToIndex:[mAddress.text length]-1]]; diff --git a/Classes/LinphoneUI/UIHistoryCell.h b/Classes/LinphoneUI/UIHistoryCell.h index 9af692820..1de3013ba 100644 --- a/Classes/LinphoneUI/UIHistoryCell.h +++ b/Classes/LinphoneUI/UIHistoryCell.h @@ -19,6 +19,8 @@ #import +#include "linphonecore.h" + @interface UIHistoryCell : UITableViewCell { UIImageView* imageView; UILabel* displayName; @@ -28,5 +30,6 @@ @property (nonatomic, retain) IBOutlet UILabel* displayName; -(IBAction) onDetails: (id) event; +- (void)update:(LinphoneCallLog*) callLogs; @end diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 98924d8c6..755871c23 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -37,10 +37,39 @@ return self; } --(IBAction) onDetails: (id) event { +- (IBAction)onDetails: (id) event { } +- (void)update:(LinphoneCallLog*) callLogs { + // Set up the cell... + LinphoneAddress* partyToDisplay; + NSString *path; + if (callLogs->dir == LinphoneCallIncoming) { + if (callLogs->status == LinphoneCallSuccess) { + path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-entrant":@"appel-entrant" ofType:@"png"]; + } else { + //missed call + path = [[NSBundle mainBundle] pathForResource:@"appel-manque" ofType:@"png"]; + } + partyToDisplay=callLogs->from; + + } else { + path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-sortant":@"appel-sortant" ofType:@"png"]; + partyToDisplay=callLogs->to; + + } + UIImage *image = [UIImage imageWithContentsOfFile:path]; + + const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):""; + + //TODO + //const char* displayName = linphone_address_get_display_name(partyToDisplay); + + [displayName setText:[NSString stringWithFormat:@"%s", username]]; + [imageView setImage: image]; +} + - (void) dealloc { [displayName release]; [imageView release]; diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index 50980973a..03b25d18f 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -87,7 +87,7 @@ 292 - {{289, 11}, {22, 22}} + {{276, 0}, {44, 44}} @@ -97,6 +97,10 @@ 0 0 NO + 11 + 11 + 11 + 11 3 MQA @@ -109,11 +113,11 @@ 3 MC41AA - + NSImage bouton-detail-contact-over.png - + NSImage bouton-detail-contact-actif.png @@ -131,7 +135,7 @@ {320, 44} - + _NS:9 3 @@ -185,9 +189,9 @@ 12 - + @@ -207,7 +211,7 @@ 7 - details + detailsButton @@ -220,13 +224,14 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + - 12 + 13 diff --git a/Classes/MoreViewController.h b/Classes/MoreViewController.h index e907de322..896a3a003 100644 --- a/Classes/MoreViewController.h +++ b/Classes/MoreViewController.h @@ -18,10 +18,6 @@ */ #import -#include "linphoneAppDelegate.h" - - - @class ConsoleViewController; @interface MoreViewController : UITableViewController { diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index c43122510..c02e8ed8d 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -29,6 +29,7 @@ bool tabBarEnabled; bool statusEnabled; bool fullscreen; + PhoneView viewId; } -(id) copy; @end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index a471c2328..25677f8c3 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -17,6 +17,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#import + #import "PhoneMainView.h" #import "DialerViewController.h" #import "HistoryViewController.h" @@ -25,13 +27,14 @@ @implementation ViewsDescription --(id) copy { +- (id)copy { ViewsDescription *copy = [ViewsDescription alloc]; copy->content = self->content; copy->tabBar = self->tabBar; copy->tabBarEnabled = self->tabBarEnabled; copy->statusEnabled = self->statusEnabled; copy->fullscreen = self->fullscreen; + copy->viewId = self->viewId; return copy; } @end @@ -48,54 +51,105 @@ @synthesize mainTabBarController; @synthesize incomingCallTabBarController; ++ (void)addSubView:(UIViewController*)controller view:(UIView*)view { + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [controller viewWillAppear:NO]; + } + [view addSubview: controller.view]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [controller viewDidAppear:NO]; + } +} + ++ (void)removeSubView:(UIViewController*)controller { + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [controller viewWillDisappear:NO]; + } + [controller.view removeFromSuperview]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [controller viewDidDisappear:NO]; + } +} + - (void)changeView: (NSNotification*) notif { NSNumber *viewId = [notif.userInfo objectForKey: @"view"]; NSNumber *tabBar = [notif.userInfo objectForKey: @"tabBar"]; NSNumber *fullscreen = [notif.userInfo objectForKey: @"fullscreen"]; + // Copy view description + ViewsDescription *oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; + + // Check view change if(viewId != nil) { PhoneView view = [viewId intValue]; - currentViewDescription = [[viewDescriptions objectForKey:[NSNumber numberWithInt: view]] copy]; + ViewsDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; + if(description == nil) + return; + description->viewId = view; // Auto-set viewId + if(currentViewDescription == nil || description->viewId != currentViewDescription->viewId) { + if(currentViewDescription != nil) + [currentViewDescription dealloc]; + currentViewDescription = [description copy]; + } else { + viewId = nil; + } } - - ViewsDescription *description = currentViewDescription; - if(description == nil) { + + if(currentViewDescription == nil) { return; } - UIView *innerView = description->content.view; - - // Change view - if(viewId != nil) { - for (UIView *view in contentView.subviews) { - [view removeFromSuperview]; - } - for (UIView *view in tabBarView.subviews) { - [view removeFromSuperview]; - } - - [contentView addSubview: innerView]; - [tabBarView addSubview: description->tabBar.view]; - } - if(tabBar != nil) { - description->tabBarEnabled = [tabBar boolValue]; + currentViewDescription->tabBarEnabled = [tabBar boolValue]; } if(fullscreen != nil) { - description->fullscreen = [fullscreen boolValue]; + currentViewDescription->fullscreen = [fullscreen boolValue]; + [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription->fullscreen withAnimation:UIStatusBarAnimationSlide ]; + } else { + [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription->fullscreen withAnimation:UIStatusBarAnimationNone]; } + // View Transitions + if(viewId != nil) { + if(oldViewDescription != nil) { + CATransition* trans = [CATransition animation]; + [trans setType:kCATransitionPush]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + [trans setSubtype:kCATransitionFromRight]; + [contentView.layer addAnimation:trans forKey:@"Transition"]; + if((oldViewDescription->statusEnabled == true && currentViewDescription->statusEnabled == false) || + (oldViewDescription->statusEnabled == false && currentViewDescription->statusEnabled == true)) { + [stateBarView.layer addAnimation:trans forKey:@"Transition"]; + } + if(oldViewDescription->tabBar != currentViewDescription->tabBar) { + [tabBarView.layer addAnimation:trans forKey:@"Transition"]; + } + [PhoneMainView removeSubView: oldViewDescription->content]; + [PhoneMainView removeSubView: oldViewDescription->tabBar]; + } + } + + // Start animation + if(tabBar != nil || fullscreen != nil) { + [UIView beginAnimations:@"resize" context:nil]; + [UIView setAnimationDuration:0.35]; + [UIView setAnimationBeginsFromCurrentState:TRUE]; + } + + UIView *innerView = currentViewDescription->content.view; + CGRect contentFrame = contentView.frame; // Resize StateBar CGRect stateBarFrame = stateBarView.frame; - if(description->fullscreen) + if(currentViewDescription->fullscreen) stateBarFrame.origin.y = -20; else stateBarFrame.origin.y = 0; - if(description->statusEnabled) { + if(currentViewDescription->statusEnabled) { stateBarView.hidden = false; [stateBarView setFrame: stateBarFrame]; contentFrame.origin.y = stateBarFrame.size.height + stateBarFrame.origin.y; @@ -106,39 +160,57 @@ // Resize TabBar CGRect tabFrame = tabBarView.frame; - if(description->tabBar != nil && description->tabBarEnabled) { - tabBarView.hidden = false; - tabFrame.origin.y += tabFrame.size.height; - tabFrame.origin.x += tabFrame.size.width; - tabFrame.size.height = description->tabBar.view.frame.size.height; - tabFrame.size.width = description->tabBar.view.frame.size.width; + if(currentViewDescription->tabBar != nil && currentViewDescription->tabBarEnabled) { + tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - 20; + tabFrame.origin.x = [[UIScreen mainScreen] bounds].size.width; + tabFrame.size.height = currentViewDescription->tabBar.view.frame.size.height; + tabFrame.size.width = currentViewDescription->tabBar.view.frame.size.width; tabFrame.origin.y -= tabFrame.size.height; tabFrame.origin.x -= tabFrame.size.width; - [tabBarView setFrame: tabFrame]; contentFrame.size.height = tabFrame.origin.y - contentFrame.origin.y; - for (UIView *view in description->tabBar.view.subviews) { + for (UIView *view in currentViewDescription->tabBar.view.subviews) { if(view.tag == -1) { contentFrame.size.height += view.frame.origin.y; break; } } } else { - tabBarView.hidden = true; contentFrame.size.height = tabFrame.origin.y + tabFrame.size.height; - if(description->fullscreen) + if(currentViewDescription->fullscreen) contentFrame.size.height += 20; + tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - 20; } // Resize innerView - [contentView setFrame: contentFrame]; CGRect innerContentFrame = innerView.frame; innerContentFrame.size = contentFrame.size; + + + // Set frames + [contentView setFrame: contentFrame]; [innerView setFrame: innerContentFrame]; + [tabBarView setFrame: tabFrame]; + + // Commit animation + if(tabBar != nil || fullscreen != nil) { + [UIView commitAnimations]; + } + + // Change view + if(viewId != nil) { + [PhoneMainView addSubView: currentViewDescription->content view:contentView]; + [PhoneMainView addSubView: currentViewDescription->tabBar view:tabBarView]; + } // Call abstractCall NSDictionary *dict = [notif.userInfo objectForKey: @"args"]; if(dict != nil) - [LinphoneManager abstractCall:description->content dict:dict]; + [LinphoneManager abstractCall:currentViewDescription->content dict:dict]; + + // Dealloc old view description + if(oldViewDescription != nil) { + [oldViewDescription dealloc]; + } } - (void)viewDidLoad { @@ -290,10 +362,10 @@ if (canHideInCallView) { if ([[LinphoneManager instance] currentView] != PhoneView_Dialer) { // Go to dialer view - NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys: - [[NSArray alloc] initWithObjects: @"", nil] + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: @"", nil] autorelease] , @"setAddress:", - nil]; + nil] autorelease]; [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; } } else { diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index c9b528625..d18ddd8b0 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -59,9 +59,9 @@ _NS:9 - - 1 - MCAxIDAuMDkwOTI0NTczOTEAA + + 3 + MQA YES IBCocoaTouchFramework @@ -74,8 +74,8 @@ _NS:9 - 1 - MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MSAwAA + 3 + MCAwAA YES IBCocoaTouchFramework @@ -132,10 +132,7 @@ IBCocoaTouchFramework 0 0 - - 3 - MQA - + 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA @@ -935,38 +932,38 @@ YES YES - image - label - spinner + callQualityImage + registrationStateImage + registrationStateLabel YES UIImageView + UIImageView UILabel - UIActivityIndicatorView YES YES - image - label - spinner + callQualityImage + registrationStateImage + registrationStateLabel YES - image + callQualityImage UIImageView - label - UILabel + registrationStateImage + UIImageView - spinner - UIActivityIndicatorView + registrationStateLabel + UILabel diff --git a/Resources/appeler-disabled.png b/Resources/appeler-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..5600f19459666f1cd62aae1c6e3329a384e7b000 GIT binary patch literal 2116 zcmZ9NdpHy98^`B3$0)B7qEt>(R8BdcnL{LIhP52(jn*QPOwP%a-j{?>nUFT8VUELS zWO_rg#eRuqC`Qbj=I~Cx-(SDydG70e?$7hRuIIY$>$#q9y2k}aX$eIM001BjcCz#2 zXBs~+VxoJy>Uu0ci3Ykj+5vX=<||TpHlK*!a`L?m07%O1g#h4rp#mQQBf)O=!2gKK zOPxLuU#o}UlOeF3wb$J-_SfA@a?vWiOFo9_C$R5*9R;mx=~(o2vnJ09=flk~-0+>Y zf>uk;%_??LNi^m&2d@SlGrg!>lxd}hKA&oPMJ{W8Tt4k74o8bWb!OC#pu2 znl2~5777#T=T0g=vXJ4G`u$S4L9Q%b<42xix&_&1- z>`cZqAh^pkd~vPfQezf3YqTr-(EN*DJ_^bzn~I-4G|4ZD{$>sJMJVU*>d8o+8T zKvpLKAs{RXAPb5ew5kClQT_l3OCE*t>%B@uR)=5yDwZt|67c$;k_QFI?i z$pnmuf@f`>;I5Lpx`Bm7l?EpR7D3mThI@?!V?1D%q{gV! z3m8uA)2D|;^_iaKF z@bV+wX(ge5enCyG_fLP``tjrNc<$K`gUL^uD<`_TZ2EHXJBikA7E#cO2PV9N(hOOSIrE=p=ev^uC;e1}>%VG;?}+ zixsb}y0RF1fAO=|+vbXN46C6a`P;^6ua{A~V_&FKGalei%+X!NbJacfA%jHZ2HT1j z@y1o(s5kwEu*)Y_Vr$CVgqu>**$*O6B0QAzMyQ$j5w{-Ir@vyAG{Ko5n6-N>Qnew0 z-$Lv~iz&%&5N)GV4 zF+Aj2EU45jEMtfh{K5Nqpn*Y;FwV>NBv@5-?ru1bk$7zMraf7OhX}}79iivGGfOpQ z71#LpY84DSW!|Z;T;I5;U0UlneD7I!NGg4wf9j{PI-FhbxE@#v#_ zCURcdPd{4F9FdC$xf?;Ir?`>oP;<>nOo%Uqp`v_!yxi%8O{vWfZym77{q|;m z<-)3iz1n_=G_4w1whs+*k6*lr3ND@C8opyPnGS3EJ{|EBqd}@JZOADu$f^c?sLJXi z#0Lmeujz}@H#CGCh@GU1qWa^y=K_TZM2j1!GLu9E$vHH_b1mDQW`-p9m5o4mpM?gU zfdJaXX|uDMy^j+GnYK*{K;vYESAl##cqK1vMG<_n_to>)Zv?13`d{>$@)6$yej~n7 zz{qEpInB`lYm@;Ts^h~lT|q=JF?W1tBhDiQaYn>XRjoH1zQs1q^rr`e$8OB97`W~R p##(2-66 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 z zHYF~_AUUbsn<{tozPVGM_>O4l;#(G1{i2*28;ekzeY(vUrdyRW_1Rk^vpH`)4f@4R zihZ9we4{3{=5@P0kAM8?;@zL770b&mLJb9weCQ8Im9^W${RMuOuFj|86{|uOGb0OF z#So1G+tFSgD^Hi!)%#VWJS-uWxm>{Z(vb9G->Uwq%{_mduyxRKo9rk)k*oe*L6GLq z4U5_jFQ3$Ra#V#}9eoKjIgXfoXf{B8ggpE_5P#_&Ab2e663Um+QD13f|CV5C$S$MU3j{gcHgHLiF==>>|p%T4|B%3 zfH<9uYspun@|a_(LN%!eOTK0){x=2##Lkt_oUy3k>>J6_*vje)z$+OM@a~HMi&#

RNa zedwgGSn7c-z&EC7TAEQh<7g(SuE)C(5fL_GWM!A$<^A8k73(9%PdOVM;o1ITc;1V5 zxJeft0pxVN&VLI@pt$VN5Em2qQ!4Kk%C)V1oip(g(8S)pI724@SvN7|voWQZlF+Uh z4bot5LMADtkA8nlpKoD6c2=N^)!vidc>WCzP~sC7&9$gENONOt9nVft%~+Ua8D z>{kYga6vL(zQg%=LsipmlTFlO=zMoXWa17-}K1)l$f z(7vQiWSY`Ol(&mNa3G03EO+M7=-M(%NzSx0B9&Q?3_FkXJr2>Ag>Ve4xCX-K-^M}U zIxjO3BT67%<%*o)g(rIUZ{N$6?q+CKCJZY1~=0{o6hAblq^NN|)#YrCrI zJZXO%5TCFEh(*6P;d_y$8@dr+qLO#*b{VyZqOe-}L;aQ4#h*XD;Cx?N5&{9h3=eXQ zu@1($R`-&U&Qo}?&L?ZJ7jxKEGj#<~IpA%C6z-t}2k$Gf&elC_mzR@yBzgC`4sk}r z)v)Wa>5lV5)K1aCJNa^Pt<^dCL?lB+&b@E(pz`B8QXev&%sWp#XnK^aNgpG1=R8Tg zxr1~6SeS4$V7KDnZF+$bkxFYbd`;wDaPTMjP!I#Oh*|^nv{JJLNGlmB^}ABU!q*%u z#b11W_!BnZs)koBCH*BNRnd9MN1}IT`G*lX!`JAjpje<7`!=Z5Ymk}(L0KNjMqya! x5Wz-07;VD|`I~Zuw!#-R42h8-VkDw=NALvls8In*{pruY0W4Y{RjFYU`CmYaIQ#$r literal 0 HcmV?d00001 diff --git a/Resources/switch_camera_over.png b/Resources/switch_camera_over.png new file mode 100644 index 0000000000000000000000000000000000000000..7afcd0a2348aa16ddaf0165b2884a81217695245 GIT binary patch literal 6326 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 -#import "LinphoneAppDelegate.h" - int main(int argc, char *argv[]) { From bfa794d3573889b9940e83096a50aedb5f3ff3d6 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 22 Jun 2012 10:40:52 +0200 Subject: [PATCH 016/397] Add Chat and Settings views --- Classes/ChatViewController.h | 26 +++++ Classes/ChatViewController.m | 24 +++++ Classes/ChatViewController.xib | 122 ++++++++++++++++++++++ Classes/ConferenceCallDetailView.m | 11 +- Classes/DialerViewController.xib | 157 ++++++++++++++--------------- Classes/InCallViewController.h | 1 - Classes/InCallViewController.m | 21 ++-- Classes/LinphoneUI/UICallBar.xib | 52 ++-------- Classes/LinphoneUI/UIHistoryCell.m | 10 +- Classes/PhoneMainView.m | 32 ++++++ Classes/SettingsViewController.h | 26 +++++ Classes/SettingsViewController.m | 24 +++++ Classes/SettingsViewController.xib | 123 ++++++++++++++++++++++ linphone.xcodeproj/project.pbxproj | 38 ++++++- 14 files changed, 520 insertions(+), 147 deletions(-) create mode 100644 Classes/ChatViewController.h create mode 100644 Classes/ChatViewController.m create mode 100644 Classes/ChatViewController.xib create mode 100644 Classes/SettingsViewController.h create mode 100644 Classes/SettingsViewController.m create mode 100644 Classes/SettingsViewController.xib diff --git a/Classes/ChatViewController.h b/Classes/ChatViewController.h new file mode 100644 index 000000000..9635763e4 --- /dev/null +++ b/Classes/ChatViewController.h @@ -0,0 +1,26 @@ +/* ChatViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface ChatViewController : UIViewController { + +} + +@end diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m new file mode 100644 index 000000000..8d5de8916 --- /dev/null +++ b/Classes/ChatViewController.m @@ -0,0 +1,24 @@ +/* ChatViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "ChatViewController.h" + +@implementation ChatViewController + +@end diff --git a/Classes/ChatViewController.xib b/Classes/ChatViewController.xib new file mode 100644 index 000000000..e9c5b872e --- /dev/null +++ b/Classes/ChatViewController.xib @@ -0,0 +1,122 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBProxyObject + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + {{0, 20}, {320, 460}} + + + + 3 + MQA + + 2 + + + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + + + 0 + + + + + + 1 + + + + + -1 + + + File's Owner + + + -2 + + + + + + + ChatViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 3 + + + + + ChatViewController + UIViewController + + IBProjectSource + ./Classes/ChatViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + 1181 + + diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m index bb7df42dd..17769f2e7 100644 --- a/Classes/ConferenceCallDetailView.m +++ b/Classes/ConferenceCallDetailView.m @@ -132,14 +132,15 @@ NSTimer *callQualityRefresher; cell = conferenceDetailCell; self.conferenceDetailCell = nil; } - + //TODO /* retrieve cell's fields using tags */ - UIImageView* image = (UIImageView*) [cell viewWithTag:1]; - UILabel* label = (UILabel*) [cell viewWithTag:2]; + //UIImageView* image = (UIImageView*) [cell viewWithTag:1]; + //UILabel* label = (UILabel*) [cell viewWithTag:2]; /* update cell content */ - LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:YES]; - [InCallViewController updateCellImageView:image Label:label DetailLabel:nil AndAccessoryView:nil withCall:call]; + //LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:YES]; + + //[InCallViewController updateCellImageView:image Label:label DetailLabel:nil AndAccessoryView:nil withCall:call]; cell.accessoryType = UITableViewCellAccessoryNone; if (cell.accessoryView == nil) { diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index 943859e1e..e05e78d72 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -41,83 +41,6 @@ 292 YES - - - 288 - - YES - - - 292 - {320, 80} - - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - champ-saisie-numero.png - - - - - 292 - {320, 60} - - - - - 3 - MSAwAA - - NO - NO - IBCocoaTouchFramework - 0 - - sip: - - 3 - MQA - - YES - 15 - - 1 - 3 - IBCocoaTouchFramework - - 1 - - Helvetica - Helvetica - 0 - 36 - - - Helvetica - 36 - 16 - - - - {320, 80} - - - - _NS:9 - - 3 - MSAwAA - - 2 - - - YES - IBCocoaTouchFramework - 288 @@ -157,7 +80,10 @@ IBCocoaTouchFramework 0 0 - + + 3 + MQA + 1 MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA @@ -510,8 +436,82 @@ 3 MQA + + 2 + + + IBCocoaTouchFramework + + + + 288 + + YES + + + 292 + {320, 80} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + champ-saisie-numero.png + + + + + 292 + {320, 60} + + + + + 3 + MSAwAA + + NO + NO + IBCocoaTouchFramework + 0 + + sip: + + YES + 15 + + 1 + 3 + IBCocoaTouchFramework + + 1 + + Helvetica + Helvetica + 0 + 36 + + + Helvetica + 36 + 16 + + + + {320, 80} + + + + _NS:9 + + 3 + MSAwAA + YES IBCocoaTouchFramework @@ -590,7 +590,6 @@ {{214, 0}, {106, 69}} - _NS:9 NO IBCocoaTouchFramework diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index 8d737f00e..8234edf1a 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -57,7 +57,6 @@ ConferenceCallDetailView* conferenceDetail; BOOL mVideoShown; BOOL mVideoIsPending; - BOOL mIncallViewIsReady; UIImage* verified, *unverified; UIActionSheet* visibleActionSheet; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 0a1f4ba45..ea6dc59cd 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -134,6 +134,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [hideControlsTimer invalidate]; hideControlsTimer = nil; } + // show controls [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; @@ -157,9 +158,14 @@ void addAnimationFadeTransition(UIView* view, float duration) { [UIView setAnimationDuration:0.3]; [videoCameraSwitch setAlpha:0.0]; [UIView commitAnimations]; - [[LinphoneManager instance] showTabBar: false]; - hideControlsTimer = nil; + if([[LinphoneManager instance] currentView] == PhoneView_InCall) + [[LinphoneManager instance] showTabBar: false]; + + if (hideControlsTimer) { + [hideControlsTimer invalidate]; + hideControlsTimer = nil; + } } #ifdef TEST_VIDEO_VIEW_CHANGE @@ -327,7 +333,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { videoGroup.alpha = 0; mVideoShown=FALSE; - mIncallViewIsReady=FALSE; mVideoIsPending=FALSE; //selectedCall = nil; @@ -434,7 +439,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { userInfo:nil repeats:YES]; glow = 0; - mIncallViewIsReady=TRUE; if (mVideoIsPending) { mVideoIsPending=FALSE; [self enableVideoDisplay: FALSE]; @@ -455,23 +459,22 @@ void addAnimationFadeTransition(UIView* view, float duration) { if (visibleActionSheet != nil) { [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:NO]; } -} - -- (void)viewDidDisappear:(BOOL)animated { if (hideControlsTimer != nil) { [hideControlsTimer invalidate]; hideControlsTimer = nil; } if (durationRefreasher != nil) { [durationRefreasher invalidate]; - durationRefreasher=nil; + durationRefreasher = nil; } if (glowingTimer != nil) { [glowingTimer invalidate]; glowingTimer = nil; } +} + +- (void)viewDidDisappear:(BOOL)animated { if (!mVideoShown) [[UIApplication sharedApplication] setIdleTimerDisabled:false]; - mIncallViewIsReady=FALSE; } - (void)viewDidUnload { diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index eb2bdafd0..644ab0de9 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -74,14 +74,6 @@ 0 NO NO - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - 3 MC41AA @@ -128,11 +120,6 @@ 0 0 NO - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - NSImage @@ -165,11 +152,6 @@ 0 0 NO - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - NSImage @@ -202,11 +184,6 @@ 0 0 NO - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - NSImage @@ -268,21 +245,15 @@ 0 0 NO - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + NSImage raccrocher-over.png - + NSImage raccrocher-actif.png - @@ -302,11 +273,6 @@ 0 0 NO - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - NSImage @@ -469,26 +435,26 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIMicroButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIHangUpButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIPauseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 755871c23..f62e35bc6 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -44,22 +44,22 @@ - (void)update:(LinphoneCallLog*) callLogs { // Set up the cell... LinphoneAddress* partyToDisplay; - NSString *path; + NSString *name; if (callLogs->dir == LinphoneCallIncoming) { if (callLogs->status == LinphoneCallSuccess) { - path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-entrant":@"appel-entrant" ofType:@"png"]; + name = callLogs->video_enabled?@"appel-entrant.png":@"appel-entrant.png"; } else { //missed call - path = [[NSBundle mainBundle] pathForResource:@"appel-manque" ofType:@"png"]; + name = @"appel-manque.png"; } partyToDisplay=callLogs->from; } else { - path = [[NSBundle mainBundle] pathForResource:callLogs->video_enabled?@"appel-sortant":@"appel-sortant" ofType:@"png"]; + name = callLogs->video_enabled?@"appel-sortant.png":@"appel-sortant.png"; partyToDisplay=callLogs->to; } - UIImage *image = [UIImage imageWithContentsOfFile:path]; + UIImage *image = [UIImage imageNamed:name]; const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):""; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 25677f8c3..184be86ae 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -24,6 +24,8 @@ #import "HistoryViewController.h" #import "ContactsViewController.h" #import "InCallViewController.h" +#import "SettingsViewController.h" +#import "ChatViewController.h" @implementation ViewsDescription @@ -290,6 +292,36 @@ [viewDescriptions setObject:inCallDescription forKey:[NSNumber numberWithInt: PhoneView_InCall]]; + // + // Settings View + // + SettingsViewController* mySettingsViewController = [[SettingsViewController alloc] + initWithNibName:@"SettingsViewController" + bundle:[NSBundle mainBundle]]; + //[myHistoryController loadView]; + ViewsDescription *settingsDescription = [ViewsDescription alloc]; + settingsDescription->content = mySettingsViewController; + settingsDescription->tabBar = mainTabBarController; + settingsDescription->statusEnabled = true; + settingsDescription->fullscreen = false; + settingsDescription->tabBarEnabled = true; + [viewDescriptions setObject:settingsDescription forKey:[NSNumber numberWithInt: PhoneView_Settings]]; + + // + // Chat View + // + ChatViewController* myChatViewController = [[ChatViewController alloc] + initWithNibName:@"ChatViewController" + bundle:[NSBundle mainBundle]]; + //[myHistoryController loadView]; + ViewsDescription *chatDescription = [ViewsDescription alloc]; + chatDescription->content = myChatViewController; + chatDescription->tabBar = mainTabBarController; + chatDescription->statusEnabled = true; + chatDescription->fullscreen = false; + chatDescription->tabBarEnabled = true; + [viewDescriptions setObject:settingsDescription forKey:[NSNumber numberWithInt: PhoneView_Chat]]; + // Set observers [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) diff --git a/Classes/SettingsViewController.h b/Classes/SettingsViewController.h new file mode 100644 index 000000000..0641988c3 --- /dev/null +++ b/Classes/SettingsViewController.h @@ -0,0 +1,26 @@ +/* SettingsViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface SettingsViewController : UIViewController { + +} + +@end diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m new file mode 100644 index 000000000..693186477 --- /dev/null +++ b/Classes/SettingsViewController.m @@ -0,0 +1,24 @@ +/* SettingsViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "SettingsViewController.h" + +@implementation SettingsViewController + +@end diff --git a/Classes/SettingsViewController.xib b/Classes/SettingsViewController.xib new file mode 100644 index 000000000..61ae418cc --- /dev/null +++ b/Classes/SettingsViewController.xib @@ -0,0 +1,123 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBProxyObject + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + {{0, 20}, {320, 460}} + + + + + 3 + MQA + + 2 + + + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + + + 0 + + + + + + 1 + + + + + -1 + + + File's Owner + + + -2 + + + + + + + SettingsViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 3 + + + + + SettingsViewController + UIViewController + + IBProjectSource + ./Classes/SettingsViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + 1181 + + diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 8aa4fdf96..561b95780 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -265,6 +265,14 @@ D35E758A15932DE60066B1C1 /* backspace-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758815932DE60066B1C1 /* backspace-disabled.png */; }; D35E758D15934F360066B1C1 /* appeler-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* appeler-disabled.png */; }; D35E758E15934F360066B1C1 /* appeler-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* appeler-disabled.png */; }; + D35E7597159460580066B1C1 /* ChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7595159460560066B1C1 /* ChatViewController.m */; }; + D35E7598159460580066B1C1 /* ChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7595159460560066B1C1 /* ChatViewController.m */; }; + D35E7599159460580066B1C1 /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35E7596159460570066B1C1 /* ChatViewController.xib */; }; + D35E759A159460580066B1C1 /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35E7596159460570066B1C1 /* ChatViewController.xib */; }; + D35E759F159460B70066B1C1 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E759D159460B50066B1C1 /* SettingsViewController.m */; }; + D35E75A0159460B70066B1C1 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E759D159460B50066B1C1 /* SettingsViewController.m */; }; + D35E75A1159460B70066B1C1 /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35E759E159460B60066B1C1 /* SettingsViewController.xib */; }; + D35E75A2159460B70066B1C1 /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35E759E159460B60066B1C1 /* SettingsViewController.xib */; }; D36C43C6158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; }; D36C43C7158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; }; D36C43CA158F2EE50048BA40 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; }; @@ -849,6 +857,12 @@ D35E7580159328EB0066B1C1 /* UIAddressTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIAddressTextField.m; sourceTree = ""; }; D35E758815932DE60066B1C1 /* backspace-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "backspace-disabled.png"; path = "Resources/backspace-disabled.png"; sourceTree = ""; }; D35E758C15934F360066B1C1 /* appeler-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appeler-disabled.png"; path = "Resources/appeler-disabled.png"; sourceTree = ""; }; + D35E7594159460560066B1C1 /* ChatViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatViewController.h; sourceTree = ""; }; + D35E7595159460560066B1C1 /* ChatViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatViewController.m; sourceTree = ""; }; + D35E7596159460570066B1C1 /* ChatViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ChatViewController.xib; sourceTree = ""; }; + D35E759C159460B50066B1C1 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = ""; }; + D35E759D159460B50066B1C1 /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = ""; }; + D35E759E159460B60066B1C1 /* SettingsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SettingsViewController.xib; sourceTree = ""; }; D36C43C4158F2E5A0048BA40 /* UICallCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallCell.h; sourceTree = ""; }; D36C43C5158F2E5A0048BA40 /* UICallCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICallCell.m; sourceTree = ""; }; D36C43C9158F2EE50048BA40 /* UICallCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UICallCell.xib; sourceTree = ""; }; @@ -1069,6 +1083,9 @@ children = ( 340751E4150E4D0200B89C47 /* CallDelegate.h */, 2211DBBB14769C8200DEE054 /* CallDelegate.m */, + D35E7594159460560066B1C1 /* ChatViewController.h */, + D35E7595159460560066B1C1 /* ChatViewController.m */, + D35E7596159460570066B1C1 /* ChatViewController.xib */, 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */, 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */, 344ABD75147FCB68007420B6 /* ConferenceCallDetailView.h */, @@ -1082,14 +1099,17 @@ D35497FD15875372000081D8 /* ContactsViewController.xib */, D3549814158761CF000081D8 /* ContactTableViewController.h */, D3549815158761D0000081D8 /* ContactTableViewController.m */, + 22F2508B107141E100AC9B3F /* DialerViewController.h */, + 22F2508C107141E100AC9B3F /* DialerViewController.m */, + 22F2508D107141E100AC9B3F /* DialerViewController.xib */, 2218A92212FBE1340088A667 /* FirstLoginViewController.h */, 2218A92312FBE1340088A667 /* FirstLoginViewController.m */, 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */, + D3ED3EA41587334B006C0DE4 /* HistoryTableViewController.h */, + D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */, D3ED3EB515873928006C0DE4 /* HistoryViewController.h */, D3ED3EB615873929006C0DE4 /* HistoryViewController.m */, D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */, - D3ED3EA41587334B006C0DE4 /* HistoryTableViewController.h */, - D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */, 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */, D3F83EE91582021700336684 /* InCallViewController.h */, D3F83EEA1582021700336684 /* InCallViewController.m */, @@ -1108,9 +1128,9 @@ D3F83F8D15822ABD00336684 /* PhoneMainView.m */, D34734791580DDF1003C7B8C /* PhoneMainView.xib */, 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */, - 22F2508B107141E100AC9B3F /* DialerViewController.h */, - 22F2508C107141E100AC9B3F /* DialerViewController.m */, - 22F2508D107141E100AC9B3F /* DialerViewController.xib */, + D35E759C159460B50066B1C1 /* SettingsViewController.h */, + D35E759D159460B50066B1C1 /* SettingsViewController.m */, + D35E759E159460B60066B1C1 /* SettingsViewController.xib */, D326483415887D4400930C67 /* Utils */, 34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */, 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */, @@ -1928,6 +1948,8 @@ D35E757A15931E5D0066B1C1 /* switch_camera_over.png in Resources */, D35E758915932DE60066B1C1 /* backspace-disabled.png in Resources */, D35E758D15934F360066B1C1 /* appeler-disabled.png in Resources */, + D35E7599159460580066B1C1 /* ChatViewController.xib in Resources */, + D35E75A1159460B70066B1C1 /* SettingsViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2079,6 +2101,8 @@ D35E757B15931E5D0066B1C1 /* switch_camera_over.png in Resources */, D35E758A15932DE60066B1C1 /* backspace-disabled.png in Resources */, D35E758E15934F360066B1C1 /* appeler-disabled.png in Resources */, + D35E759A159460580066B1C1 /* ChatViewController.xib in Resources */, + D35E75A2159460B70066B1C1 /* SettingsViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2128,6 +2152,8 @@ D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */, D36C43C6158F2E5A0048BA40 /* UICallCell.m in Sources */, D35E7581159328EB0066B1C1 /* UIAddressTextField.m in Sources */, + D35E7597159460580066B1C1 /* ChatViewController.m in Sources */, + D35E759F159460B70066B1C1 /* SettingsViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2174,6 +2200,8 @@ D32409C4158B49A600C8C119 /* UILongTouchButton.m in Sources */, D36C43C7158F2E5A0048BA40 /* UICallCell.m in Sources */, D35E7582159328EB0066B1C1 /* UIAddressTextField.m in Sources */, + D35E7598159460580066B1C1 /* ChatViewController.m in Sources */, + D35E75A0159460B70066B1C1 /* SettingsViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 3dbced109b6dc8c424905b76e2862a1a72b48b93 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 25 Jun 2012 12:40:29 +0200 Subject: [PATCH 017/397] Edit mode in history Move setting delegate to setting controller Start chat view Start incoming call view --- Classes/ChatTableViewController.h | 26 + Classes/ChatTableViewController.m | 48 + Classes/ChatViewController.h | 3 + Classes/ChatViewController.m | 8 + Classes/ChatViewController.xib | 284 +- ...roller.h => ContactsTableViewController.h} | 4 +- ...roller.m => ContactsTableViewController.m} | 8 +- Classes/ContactsViewController.h | 10 +- Classes/ContactsViewController.xib | 6 +- Classes/DialerViewController.xib | 1 - Classes/HistoryTableViewController.h | 5 +- Classes/HistoryTableViewController.m | 20 +- Classes/HistoryViewController.h | 8 +- Classes/HistoryViewController.m | 20 +- Classes/HistoryViewController.xib | 45 +- Classes/InCallViewController.m | 9 +- Classes/IncomingCallViewController.h | 31 + Classes/IncomingCallViewController.m | 34 + Classes/IncomingCallViewController.xib | 4839 +++++++++++++++++ Classes/LinphoneCoreSettingsStore.m | 8 +- Classes/{LinphoneUI => }/LinphoneManager.h | 16 +- Classes/{LinphoneUI => }/LinphoneManager.m | 143 +- Classes/LinphoneUI/UIChatCell.h | 33 + Classes/LinphoneUI/UIChatCell.m | 75 + Classes/LinphoneUI/UIChatCell.xib | 337 ++ .../LinphoneUI/UICompositeViewController.h | 26 + .../LinphoneUI/UICompositeViewController.m | 24 + .../LinphoneUI/UICompositeViewController.xib | 189 + Classes/LinphoneUI/UIContactCell.h | 9 +- Classes/LinphoneUI/UIContactCell.m | 37 +- Classes/LinphoneUI/UIContactCell.xib | 24 +- Classes/LinphoneUI/UIHistoryCell.h | 16 +- Classes/LinphoneUI/UIHistoryCell.m | 63 +- Classes/LinphoneUI/UIHistoryCell.xib | 135 +- Classes/LinphoneUI/UIToggleButton.m | 12 +- Classes/LinphoneUI/UIVideoButton.m | 23 +- Classes/MainScreenWithVideoPreview.m | 6 +- Classes/PhoneMainView.m | 78 +- Classes/PhoneMainView.xib | 201 +- Classes/SettingsViewController.h | 2 +- Classes/SettingsViewController.m | 45 +- Classes/SettingsViewController.xib | 4 +- Classes/Utils/AbstractCall.h | 27 + Classes/Utils/AbstractCall.m | 47 + Resources/champ-titre-incoming.png | Bin 0 -> 8593 bytes ...ix-supprimer-ligne-liste-history-actif.png | Bin 0 -> 4317 bytes ...oix-supprimer-ligne-liste-history-over.png | Bin 0 -> 3320 bytes Resources/ok-edit-list-history-actif.png | Bin 0 -> 4098 bytes Resources/ok-edit-list-history-over.png | Bin 0 -> 3845 bytes Resources/tchat-edit-actif.png | Bin 0 -> 4596 bytes Resources/tchat-edit-over.png | Bin 0 -> 4284 bytes Resources/tchat-new-discussion-actif.png | Bin 0 -> 7658 bytes Resources/tchat-new-discussion-over.png | Bin 0 -> 6706 bytes linphone.xcodeproj/project.pbxproj | 144 +- 54 files changed, 6635 insertions(+), 498 deletions(-) create mode 100644 Classes/ChatTableViewController.h create mode 100644 Classes/ChatTableViewController.m rename Classes/{ContactTableViewController.h => ContactsTableViewController.h} (92%) rename Classes/{ContactTableViewController.m => ContactsTableViewController.m} (96%) create mode 100644 Classes/IncomingCallViewController.h create mode 100644 Classes/IncomingCallViewController.m create mode 100644 Classes/IncomingCallViewController.xib rename Classes/{LinphoneUI => }/LinphoneManager.h (90%) rename Classes/{LinphoneUI => }/LinphoneManager.m (86%) create mode 100644 Classes/LinphoneUI/UIChatCell.h create mode 100644 Classes/LinphoneUI/UIChatCell.m create mode 100644 Classes/LinphoneUI/UIChatCell.xib create mode 100644 Classes/LinphoneUI/UICompositeViewController.h create mode 100644 Classes/LinphoneUI/UICompositeViewController.m create mode 100644 Classes/LinphoneUI/UICompositeViewController.xib create mode 100644 Classes/Utils/AbstractCall.h create mode 100644 Classes/Utils/AbstractCall.m create mode 100644 Resources/champ-titre-incoming.png create mode 100644 Resources/croix-supprimer-ligne-liste-history-actif.png create mode 100644 Resources/croix-supprimer-ligne-liste-history-over.png create mode 100644 Resources/ok-edit-list-history-actif.png create mode 100644 Resources/ok-edit-list-history-over.png create mode 100644 Resources/tchat-edit-actif.png create mode 100644 Resources/tchat-edit-over.png create mode 100644 Resources/tchat-new-discussion-actif.png create mode 100644 Resources/tchat-new-discussion-over.png diff --git a/Classes/ChatTableViewController.h b/Classes/ChatTableViewController.h new file mode 100644 index 000000000..2b9367245 --- /dev/null +++ b/Classes/ChatTableViewController.h @@ -0,0 +1,26 @@ +/* ChatTableViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface ChatTableViewController : UITableViewController { + +} + +@end diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m new file mode 100644 index 000000000..969125b08 --- /dev/null +++ b/Classes/ChatTableViewController.m @@ -0,0 +1,48 @@ +/* ChatTableViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "ChatTableViewController.h" +#import "UIChatCell.h" + +@implementation ChatTableViewController + + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + return 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + UIChatCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIChatCell"]; + if (cell == nil) { + cell = [[UIChatCell alloc] init]; + } + + [cell update]; + + return cell; +} + +@end diff --git a/Classes/ChatViewController.h b/Classes/ChatViewController.h index 9635763e4..abc40aed9 100644 --- a/Classes/ChatViewController.h +++ b/Classes/ChatViewController.h @@ -23,4 +23,7 @@ } +- (IBAction)onNew:(id) event; +- (IBAction)onEdit:(id) event; + @end diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 8d5de8916..bb6c94fae 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -21,4 +21,12 @@ @implementation ChatViewController +- (IBAction)onNew: (id) event { + +} + +- (IBAction)onEdit: (id) event { + +} + @end diff --git a/Classes/ChatViewController.xib b/Classes/ChatViewController.xib index e9c5b872e..6e6ce99bd 100644 --- a/Classes/ChatViewController.xib +++ b/Classes/ChatViewController.xib @@ -11,8 +11,11 @@ 1181 - IBProxyObject + IBUITableViewController + IBUITableView IBUIView + IBUIButton + IBProxyObject com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -30,22 +33,151 @@ IBFirstResponder IBCocoaTouchFramework - + - 274 - {{0, 20}, {320, 460}} + 292 + + + + 288 + + + + 292 + {160, 58} + + + + _NS:9 + NO + + All + + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + tchat-new-discussion-over.png + + + NSImage + all-call-selectionne.png + + + NSImage + tchat-new-discussion-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{160, 0}, {160, 58}} + + + + _NS:9 + NO + + Missed + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + tchat-edit-over.png + + + NSImage + missed-selectionne.png + + + NSImage + tchat-edit-actif.png + + + + + + {320, 58} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 274 + {{0, 58}, {320, 402}} + + + _NS:9 + + 3 + MQA + + YES + IBCocoaTouchFramework + 0.0 + 10 + 0.0 + 0.0 + YES + 1 + 0 + YES + 44 + 22 + 22 + + + {320, 460} + + _NS:9 3 MQA - - 2 - + - IBCocoaTouchFramework + + NO + + + 1 + 1 + + IBCocoaTouchFramework + NO + @@ -53,9 +185,51 @@ view - + - 3 + 14 + + + + view + + + + 13 + + + + dataSource + + + + 11 + + + + delegate + + + + 12 + + + + onEdit: + + + 7 + + 17 + + + + onNew: + + + 7 + + 15 @@ -66,11 +240,6 @@ - - 1 - - - -1 @@ -82,6 +251,49 @@ + + 4 + + + tableController + + + 5 + + + + + + + + + 6 + + + tableView + + + 7 + + + + + + + header + + + 9 + + + edit + + + 10 + + + new + @@ -89,19 +301,49 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + ChatTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + - 3 + 17 + + ChatTableViewController + UITableViewController + + IBProjectSource + ./Classes/ChatTableViewController.h + + ChatViewController UIViewController + + id + id + + + + onEdit: + id + + + onNew: + id + + IBProjectSource ./Classes/ChatViewController.h @@ -117,6 +359,14 @@ YES 3 + + {213, 117} + {213, 117} + {320, 117} + {320, 117} + {320, 117} + {320, 117} + 1181 diff --git a/Classes/ContactTableViewController.h b/Classes/ContactsTableViewController.h similarity index 92% rename from Classes/ContactTableViewController.h rename to Classes/ContactsTableViewController.h index 97c0717e3..696b0ef7e 100644 --- a/Classes/ContactTableViewController.h +++ b/Classes/ContactsTableViewController.h @@ -1,4 +1,4 @@ -/* ContactTableViewController.h +/* ContactsTableViewController.h * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -22,7 +22,7 @@ #import "OrderedDictionary.h" -@interface ContactTableViewController : UITableViewController { +@interface ContactsTableViewController : UITableViewController { OrderedDictionary* addressBookMap; ABAddressBookRef addressBook; diff --git a/Classes/ContactTableViewController.m b/Classes/ContactsTableViewController.m similarity index 96% rename from Classes/ContactTableViewController.m rename to Classes/ContactsTableViewController.m index cc5d1ce91..f03e74c18 100644 --- a/Classes/ContactTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -1,4 +1,4 @@ -/* ContactTableViewController.m +/* ContactsTableViewController.m * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -17,16 +17,16 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import "ContactTableViewController.h" +#import "ContactsTableViewController.h" #import "UIContactCell.h" #import "LinphoneManager.h" -@implementation ContactTableViewController +@implementation ContactsTableViewController #pragma mark Table view methods void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { - ContactTableViewController* controller = (ContactTableViewController*)context; + ContactsTableViewController* controller = (ContactsTableViewController*)context; OrderedDictionary* lAddressBookMap = controller->addressBookMap; @synchronized (lAddressBookMap) { diff --git a/Classes/ContactsViewController.h b/Classes/ContactsViewController.h index 2f6de1125..50326d42f 100644 --- a/Classes/ContactsViewController.h +++ b/Classes/ContactsViewController.h @@ -19,22 +19,22 @@ #import -#import "ContactTableViewController.h" +#import "ContactsTableViewController.h" @interface ContactsViewController : UIViewController { - ContactTableViewController *tableController; + ContactsTableViewController *tableController; UITableView *tableView; UIButton *allButton; UIButton *linphoneButton; } -@property (nonatomic, retain) IBOutlet UITableViewController* tableController; +@property (nonatomic, retain) IBOutlet ContactsTableViewController* tableController; @property (nonatomic, retain) IBOutlet UITableView *tableView; @property (nonatomic, retain) IBOutlet UIButton* allButton; @property (nonatomic, retain) IBOutlet UIButton* linphoneButton; --(IBAction) onAllClick: (id) event; --(IBAction) onLinphoneClick: (id) event; +- (IBAction)onAllClick:(id) event; +- (IBAction)onLinphoneClick:(id) event; @end diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index 3739eab2e..f58cd17b9 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -374,7 +374,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - ContactTableViewController + ContactsTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -386,11 +386,11 @@ - ContactTableViewController + ContactsTableViewController UITableViewController IBProjectSource - ./Classes/ContactTableViewController.h + ./Classes/ContactsTableViewController.h diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index e05e78d72..d306d0e8d 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -487,7 +487,6 @@ 3 IBCocoaTouchFramework - 1 Helvetica Helvetica diff --git a/Classes/HistoryTableViewController.h b/Classes/HistoryTableViewController.h index 990881727..1d3add2c2 100644 --- a/Classes/HistoryTableViewController.h +++ b/Classes/HistoryTableViewController.h @@ -20,7 +20,10 @@ #import @interface HistoryTableViewController : UITableViewController { - + @private + BOOL editMode; } +- (void) toggleEditMode; + @end diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index ae1b89ec1..f96b3d10d 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -23,9 +23,11 @@ @implementation HistoryTableViewController --(void) doAction:(id)sender { - linphone_core_clear_call_logs([LinphoneManager getLc]); - [self.tableView reloadData]; +- (id)init { + if((self = [super init]) != nil) { + self->editMode = false; + } + return self; } #pragma mark Table view methods @@ -48,6 +50,11 @@ const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); LinphoneCallLog* callLogs = ms_list_nth_data(logs, indexPath.row); + if(editMode) + [cell enterEditMode]; + else + [cell exitEditMode]; + [cell update:callLogs]; return cell; @@ -61,10 +68,8 @@ LinphoneAddress* partyToCall; if (callLogs->dir == LinphoneCallIncoming) { partyToCall=callLogs->from; - } else { partyToCall=callLogs->to; - } const char* username = linphone_address_get_username(partyToCall)!=0?linphone_address_get_username(partyToCall):""; const char* displayName = linphone_address_get_display_name(partyToCall)!=0?linphone_address_get_display_name(partyToCall):""; @@ -94,6 +99,11 @@ [dispName release]; } +- (void) toggleEditMode { + editMode = !editMode; + [(UITableView*)[self view] reloadData]; +} + - (void)dealloc { [super dealloc]; } diff --git a/Classes/HistoryViewController.h b/Classes/HistoryViewController.h index 7b7742e1d..e7158b1bc 100644 --- a/Classes/HistoryViewController.h +++ b/Classes/HistoryViewController.h @@ -22,11 +22,13 @@ #import "HistoryTableViewController.h" @interface HistoryViewController : UIViewController { + @private HistoryTableViewController *tableController; UITableView *tableView; UIButton *allButton; UIButton *missedButton; + UIButton *editButton; } @property (nonatomic, retain) IBOutlet HistoryTableViewController* tableController; @@ -34,8 +36,10 @@ @property (nonatomic, retain) IBOutlet UIButton* allButton; @property (nonatomic, retain) IBOutlet UIButton* missedButton; +@property (nonatomic, retain) IBOutlet UIButton* editButton; --(IBAction) onAllClick: (id) event; --(IBAction) onMissedClick: (id) event; +- (IBAction)onAllClick:(id) event; +- (IBAction)onMissedClick:(id) event; +- (IBAction)onEditClick:(id) event; @end diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index ea27f9250..9a4628b61 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -26,6 +26,7 @@ @synthesize allButton; @synthesize missedButton; +@synthesize editButton; typedef enum _HistoryView { History_All, @@ -55,14 +56,29 @@ typedef enum _HistoryView { - (void)viewDidLoad { [super viewDidLoad]; [self changeView: History_All]; + + // Set selected+over background: IB lack ! + [editButton setBackgroundImage:[UIImage imageNamed:@"ok-edit-list-history-over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; } -- (IBAction)onAllClick: (id) event { +- (IBAction)onAllClick:(id) event { [self changeView: History_All]; } -- (IBAction)onMissedClick: (id) event { +- (IBAction)onMissedClick:(id) event { [self changeView: History_Missed]; } +- (IBAction)onEditClick:(id) event { + [tableController toggleEditMode]; +} + +- (void)dealloc { + [allButton release]; + [missedButton release]; + [editButton release]; + [super dealloc]; +} + @end diff --git a/Classes/HistoryViewController.xib b/Classes/HistoryViewController.xib index dc4740a57..9c6feaeb1 100644 --- a/Classes/HistoryViewController.xib +++ b/Classes/HistoryViewController.xib @@ -128,6 +128,10 @@ NSImage edit-history-over.png + + NSImage + ok-edit-list-history-actif.png + NSImage edit-history-actif.png @@ -241,6 +245,14 @@ 31 + + + editButton + + + + 33 + onAllClick: @@ -259,6 +271,15 @@ 30 + + + onEditClick: + + + 7 + + 32 + dataSource @@ -370,14 +391,15 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + - 31 + 33 @@ -394,6 +416,7 @@ UIViewController id + id id @@ -401,6 +424,10 @@ onAllClick: id + + onEditClick: + id + onMissedClick: id @@ -408,6 +435,7 @@ UIButton + UIButton UIButton HistoryTableViewController UITableView @@ -417,6 +445,10 @@ allButton UIButton + + editButton + UIButton + missedButton UIButton @@ -435,6 +467,14 @@ ./Classes/HistoryViewController.h + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + 0 @@ -452,6 +492,7 @@ {214, 117} {213, 117} {213, 117} + {214, 117} 1181 diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index ea6dc59cd..310c3e0ee 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -415,7 +415,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { if ([LinphoneManager runningOnIpad]) { //[visibleActionSheet showFromRect:transfer.bounds inView:transfer animated:NO]; } else - [visibleActionSheet showInView:self.view]; + [visibleActionSheet showInView:[[UIApplication sharedApplication].delegate window]]; } } @@ -543,8 +543,7 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); } - (void)callUpdate: (NSNotification*) notif { - LinphoneCallWrapper *callWrapper = [notif.userInfo objectForKey: @"call"]; - LinphoneCall *call = callWrapper->call; + LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); @@ -655,7 +654,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { otherButtonTitles:nil]; visibleActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - [visibleActionSheet showInView:self.view]; + [visibleActionSheet showInView:[[UIApplication sharedApplication].delegate window]]; /* start cancel timer */ cd.timeout = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(dismissActionSheet:) userInfo:nil repeats:NO]; @@ -972,7 +971,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { otherButtonTitles:nil]; visibleActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - [visibleActionSheet showInView:self.view]; + [visibleActionSheet showInView:[[UIApplication sharedApplication].delegate window]]; [visibleActionSheet release]; } } diff --git a/Classes/IncomingCallViewController.h b/Classes/IncomingCallViewController.h new file mode 100644 index 000000000..cd1555006 --- /dev/null +++ b/Classes/IncomingCallViewController.h @@ -0,0 +1,31 @@ +/* IncomingCallViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface IncomingCallViewController : UIViewController { + UILabel* addressLabel; +} + +@property (nonatomic, retain) IBOutlet UILabel* addressLabel; + +- (IBAction)onAcceptClick:(id) event; +- (IBAction)onDeclineClick:(id) event; + +@end diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m new file mode 100644 index 000000000..69fc66e79 --- /dev/null +++ b/Classes/IncomingCallViewController.m @@ -0,0 +1,34 @@ +/* IncomingCallViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "IncomingCallViewController.h" + +@implementation IncomingCallViewController + +@synthesize addressLabel; + +- (IBAction)onAcceptClick:(id) event { + +} + +- (IBAction)onDeclineClick:(id) event { + +} + +@end diff --git a/Classes/IncomingCallViewController.xib b/Classes/IncomingCallViewController.xib new file mode 100644 index 000000000..b0cdd3cbf --- /dev/null +++ b/Classes/IncomingCallViewController.xib @@ -0,0 +1,4839 @@ + + + + 1280 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUIImageView + IBUIView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 292 + + + + 292 + {320, 68} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + champ-titre-incoming.png + + + + + 292 + {{0, 47}, {320, 63}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + champ-courbe-autres-numeros.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{10, 53}, {300, 51}} + + + + _NS:9 + NO + NO + 7 + NO + IBCocoaTouchFramework + 0102030405 + + 10 + + 549453824 + {256, 256} + + + + + + TU0AKgAEAAh1eIH/cHJ5/3Bzff9vcXX/bnB3/3Byef9vcXX/bG51/2xudf9ucHf/cHN9/2dqdP9ucXv/ +cHJ5/3Bzff9qbHP/b3F1/3N1fP9sbnX/am13/2ptd/9sbnX/am13/3l7gf91d33/bG95/2xudf9sb3n/ +bG95/2dqdP9qbXf/c3V8/3Bzff93eoP/bG51/3Bzff9sbnX/dXd9/2dqdP9qbHP/bG51/2psc/9sb3n/ +am13/2ptd/9sb3n/bG51/3V3ff97fYP/YmVu/25xe/9sb3n/c3Z//2psc/9zdXz/cHN9/2dqcf9qbHP/ +YmVu/2dqdP9nanH/am13/2xvef91eIH/Z2p0/25xe/91d33/bG51/25wd/92eHz/dXd9/29xdf9ucHf/ +eHl9/2xudf9ucHf/bG95/3Bzff9sb3n/bnF7/3l7gf9zdn//c3Z//3N2f/91eIH/c3V8/3Byef9nanT/ +bnB3/3Byef91d33/dHZ8/2psc/9sbnX/Z2p0/3N1fP9qbXf/cXN6/2psdf9wcnv/dnd9/25xe/9ucHf/ +bnB3/2ptd/92eH//a254/3Fzev9sb3n/cHJ5/25wd/9ucHf/cHN9/25wd/9wcnn/dnh8/2xudf93eX// +dXd9/2dqdP9ucXv/dXd9/3N2f/9zdXz/Z2px/2xudf9ucXv/am13/3Bzff9zdXz/cHN9/2psc/9qbXf/ +bG51/2Jlbv9qbXf/aGp0/2hqcP9rbnX/cnV//29yfP9ucXv/bnF7/25xe/9zdn//bXB1/2xvef9qbXb/ +Zmly/2Jlbv9kZ3H/Zmhu/2Rncf9kZ3H/Zmlz/2Zpc/9kZ3H/bnB3/2Jlbv9nanT/ZGdx/2Zobv9zdXz/ +ZGdx/2xvef9maXP/foCG/2xvef9ucXv/bG95/25wd/9wc33/b3F1/3l8hv91eIH/cHN9/3N1fP9sb3n/ +d3qD/25wd/9zdn//cHJ5/3Bzff9wcnn/cHN9/3Bzff9ucXv/d3l//2ptd/9ucXv/c3Z//3N2f/9wcnn/ +bnF7/3N2f/9ucHf/cHJ5/3Bzff9sb3n/cHJ5/25xe/9wc33/bnF7/3Byef9zdXz/bnB3/25xe/9zdXz/ +d3l//3N2f/9sb3n/bnB3/3Bzff9sb3n/bnF7/25wd/9wcnn/cHJ5/3Byef9sbnX/c3V8/2psc/9zdXz/ +dnh8/3Byef9kZ3H/am13/25xe/9sb3n/bnF7/25xe/9zdn//Z2p0/2xudf95e4H/Z2p0/2xvef9ucXv/ +bG51/2psc/9ucXv/cHJ5/2psc/9qbXf/Z2px/2ptd/9qbHP/cHN9/2ptd/9sbnX/bG51/3V3ff9wcnn/ +c3V8/3Byef9wc33/d3l//29xdf9zdXz/bnB3/2ptd/9qbXf/Z2px/2Zpc/9kZ3H/am13/2xvef9nanH/ +cHJ5/29xdf9wcnn/Z2px/2xudf9zdXz/b3F1/25wd/9ucHf/bnB3/25wd/9+gIb/eHl9/3N1fP9wcnn/ +cHJ5/3Byef9qbHP/bG51/3Z4fP9wcnn/dXiB/2xudf9ucXv/bG51/3Byef9nanH/ZGdx/2Zpc/9nanH/ +Z2px/2Zobv9iZW7/Zmhu/2Zobv9qbXf/c3Z//1lcZf9maXP/Z2p0/3Byef9kZ3H/bG95/2xvef9qbHP/ +am13/2Zpc/9qbXf/bG51/2xvef9wc33/dXd9/2dqdP9sb3n/dXd9/2dqdP9ucHf/c3V8/3V3ff9qbXf/ +bnF7/3d5f/9ucHf/bG51/2xudf9wc33/bG51/2xudf91d33/bnB3/3Byef9wcnn/cHJ5/29xdf9ucHf/ +Z2p0/3Byef9wc33/eXuB/3d5f/9sb3n/bnF7/2psc/9zdXz/b3F5/29yev9qbHX/bnB4/3d5f/9wcnn/ +bnB3/2xudf9ucHf/dHZ7/25wd/9ucXn/bW92/3Byef9ucHf/bG51/3N1fP9ucXv/cHN9/3V3ff9qbHP/ +dnh8/3V3ff9nanH/bnB3/3V3ff9ucHf/cHJ5/2Zpc/9qbXf/bG95/2xudf9sb3n/dXd9/3Z4fP9vcXX/ +bnF7/25wd/9nanH/c3Z//3Bzff9wcnn/bnB3/3R2ff9ucXr/bnF7/3Bzff9sb3n/dXd9/25xev90dnz/ +dXiA/3V4gP9wcnn/c3Z//3Bzff9ucXv/cHN9/3N2f/9zdn//bG95/3d6g/9sb3n/c3Z//3Bzff9ucHf/ +d3l//2dqcf9qbXf/Z2p0/3d6g/9sbnX/am13/2Zpc/9nanT/am13/2Zobv9zdXz/bnB3/2dqdP9kZ3H/ +ZGZs/3Byef9gY2z/Z2px/2Rncf9maG7/YGNs/2Zobv9kZ3H/Zmhu/2ptd/9gY2z/ZGdx/2Rncf9nanT/ +ZGdx/2psc/9maXP/ZGdx/2Zobv9maG7/YmVu/2Zpc/9qbHP/am13/2psc/9ucXv/cHN9/2xudf9nanT/ +bnF7/3V3ff9wcnn/bnB3/29xdf9zdXz/bG95/3Bzff9sb3n/c3Z//3N2f/91eIH/bnF7/3V4gf9ucXv/ +dXiB/3l7gf9zdn//am13/3Byef9zdn//cHN9/3N2f/91eIH/e36H/3Bzff9wc33/foCG/3V4gf93eoP/ +eXuB/3N2f/9ucXv/dXiB/3V3ff9vcXX/c3V8/25wd/91d33/c3V8/3d5f/9wc33/cHJ5/25wd/93eX// +c3Z//3Bzff9ucXv/cHN9/3V3ff9vcXX/c3V8/25wd/9vcXX/bnB3/2xvef9nanT/Zmhu/2ptd/9sb3n/ +Zmlz/3Byef9tb3P/bnF7/2xudf9ucHf/dXd9/2xvef9sb3n/bG95/25xe/9ucXv/e36H/3l7gf9zdn// +c3Z//3V4gf93eoP/c3Z//3N2f/9+gYr/eXyG/4GDiv9wc33/d3qD/3N1fP93eX//cHJ5/3Bzff9wc33/ +bnF7/25xe/9ucHf/b3F1/3Byef9ucXv/eXuB/36Ahv9nanT/c3Z//3Byef93eX//bW9z/3Z4fP91d33/ +bnB3/25xe/9nanT/bG95/25wd/9ucXv/dXiB/3l8hv9ucHf/c3Z//3V4gf9ucHf/dXiB/3N2f/91d33/ +am13/29xdf91d33/bnB3/2xvef9ucXv/d3qD/25xe/9wcnn/c3Z//25wd/9ucHf/cHJ5/3V3ff9vcXX/ +cHJ5/2xudf9vcXX/bG51/3Byef9ucXj/aGty/21vc/9nanT/cHN9/25wd/9vcnr/a212/21wev91d33/ +am13/2xudf9maXP/am13/3R2e/9tb3b/bnF6/2xudf9wcnn/am13/2xudf9ucXv/bG95/25xe/9wc33/ +ZGdx/3Byef9ucHf/YmVu/2psc/9wc33/bnF7/2ptd/9maG7/bW9z/25wd/9sbnX/c3V8/3d5f/91d33/ +b3F1/25xe/9ucXv/Z2p0/3V3ff9wc33/bnF7/21vdv9zdnz/cHJ5/25weP9zdXz/bnF7/3l7gf9xc3r/ +d3mA/3d5f/9zdX3/b3F1/3N1fP9sbnX/bG51/25wd/9sbnX/cHJ5/2psc/92eHz/amxz/3Bzff9ucHf/ +bW9z/3h5ff9nanH/bG51/2Jlbv91eIH/amxz/2Zpc/9iZW7/YmVu/2dqdP9maG7/c3Z//3N1fP9qbXf/ +Z2p0/2dqdP91eIH/ZGdx/2xudf9nanT/am13/2ptd/9ucXv/bnF7/21vc/91eIH/Zmlz/25wd/9wcnn/ +bnB3/25wd/9vcXX/cHJ5/21vc/9sbnX/bG95/2dqdP9sbnX/bG51/2xvef9sbnX/bnF7/25xe/9nanT/ +bnF7/3Bzff91d33/cHN9/2ptd/9qbHP/bnF7/2Zpc/9qbXf/YmVu/2ptd/9qbHP/bG95/2Rncf9ucXv/ +ZGdx/25xe/9zdXz/bG95/2Rncf9tb3P/bG95/25wd/91d33/dXiB/3t9g/9ucHf/c3V8/3t9g/9ucXv/ +dXiB/3d5f/9wcnn/bnF7/3N2f/95e4H/cHN9/3V4gf9ucXv/d3qD/3V4gf93eX//c3Z//3N1fP9zdXz/ +d3l//3Bzff9ucXv/bnF7/3N1fP9zdXz/bG51/2xvef9nanH/Z2px/2dqdP9qbHP/YmVu/2BjbP9sbnX/ +bG51/2Rncf9sb3n/bG51/2ptd/9maXP/Z2px/25xe/9qbHP/Zmlz/2Zpc/9qbHP/Z2p0/3V4gf91d33/ +cHN9/25wd/9sb3n/am13/2Zpc/9sb3n/dXd9/3Bzff91eIH/bW9z/25xe/9sbnX/c3V8/21vc/9sbnX/ +cHN9/2ptd/9qbXf/bnF7/2ptd/9sbnX/bG51/3Byef93eX//ZGdx/2xvef9ucXv/dXd9/2xudf92eHz/ +dXd9/25wd/9sbnX/amxz/2xvef9vcXX/bnB3/3Bzff93eoP/bG95/3Bzff9zdn//bG95/3N2f/9wc33/ +dXiB/25xe/9zdXz/e32D/3Bzff9ucHf/bnF7/3V3ff9vcXX/b3F1/3N1fP9tb3P/bG51/3Byef9zdXz/ +bW9z/3Byef9nanH/amxz/2psc/9ucHf/bnB3/2psc/9sbnX/amxz/3V3fP9ucHj/bW93/2psdf9vcnr/ +dXd8/25wd/9qbXf/Z2p0/25xe/9zdoD/bXB6/3J0fP9wcnf/c3V8/29xdf9ucHf/bnF7/3Byef9zdXz/ +cHN9/2ptd/91d33/eHl9/2psc/9zdXz/dnh8/3N1fP9ucXv/Zmhu/29xdf9ucHf/bnB3/25wd/92eHz/ +cHJ5/2xudf9wcnn/bG95/2Rncf9wc33/bnF7/2ttdP9maXP/bnF5/2lsdf9laHL/am13/2ptd/9zdXz/ +bm92/3R3fv91d33/bnB3/21vc/9zdXz/bW9z/3Byef9ucHf/bnB3/3N1fP9nanH/d3l//25wd/97fYP/ +c3Z//3Bzff97fYP/bnF7/21vc/9maG7/eXuB/2ptd/9qbXf/ZGdx/2Zobv9nanT/Z2px/3N2f/9wcnn/ +am13/2ptd/9qbXf/d3qD/2Rncf9qbXf/Z2p0/2xvef9qbXf/Z2p0/2ptd/9maXP/d3l//2Rncf9qbXf/ +bnB3/2ptd/9qbXf/bG51/25xe/9tb3P/bnB3/25wd/9qbHP/bG51/2xudf9qbXf/bG51/3N1fP9zdXz/ +bG51/3N1fP91d33/dXd9/25xe/9sbnX/bW9z/3Bzff9maXP/bG51/2Rncf9nanT/Z2px/2ptd/9nanT/ +bnF7/2dqdP9wc33/cHJ5/2psc/9dYGr/bG51/2ptd/9sb3n/c3V8/2ptd/91eIH/bG51/2ptd/9zdn// +am13/25xe/9sb3n/Z2p0/2psc/9nanT/bG95/2xudf9ucXv/amxz/2xvef9sb3n/cHN9/2dqcf9maXP/ +Zmlz/25xe/9sb3n/am13/2ptd/9nanT/d3l//25xe/9zdn//bnB3/25xe/9wc33/cHN9/25xe/9qbXf/ +cHJ5/3Bzff9sb3n/cHN9/25wd/9wcnn/bnB3/29xdf94eX3/cHN9/25wd/9wc33/bnB3/25xe/97fYP/ +dXiB/3V3ff9sb3n/c3V8/3Byef9sbnX/c3V8/3V3ff9ucXv/c3V8/2psc/9ucXv/am13/3N1fP9sbnX/ +bG51/3V3ff9ucHf/cHJ5/3Byef9sb3n/bnB3/25wd/92eHz/gIKG/25wd/91d33/c3V8/3d5f/9ucHf/ +dnh8/3Z4fP9ucHf/bG51/2xudf9sbnX/bG51/2ptd/9sb3n/dXiB/2Zpc/9sb3n/Zmlz/2Jlbv9qbXf/ +Z2p0/2dqdP9iZW7/YGNs/2xvef9kZ3H/YGNs/2Zpc/9kZ3H/Zmhu/2Jlbv9qbXf/ZGdx/2Zpc/9qbXf/ +bnF7/2xudf9sb3n/Zmlz/2ptd/9sbnX/am13/21wef9laHH/am13/2dqdP9zdXz/bW92/25weP9rbnj/ +b3F6/3N2fv9ucXX/bG51/2dqcf9sb3n/b3J8/2xud/9ucXr/bW9z/25xe/9ucHf/bnB3/3Byef9ucHf/ +dXd9/3N1fP9sbnX/cHJ5/3V3ff9kZ3H/am13/3N1fP9wcnn/bG95/2Jlbv9nanT/am13/2ptd/9qbXf/ +d3l//25xe/9qbXf/bnF7/2ptd/9iZW7/am13/2ptd/9nanL/Z2ly/29xef9ucHf/amxz/3N1fP9wcnn/ +cHN9/3Byef9ydX7/dXd9/29xdv9rbnj/cHJ5/25wd/9wc33/bnB3/25wd/9zdXz/amxz/3d5f/9wcnn/ +d3l//29xdf9wcnn/eXuB/2xvef9vcXX/Z2px/3t9g/9sb3n/cHN9/2xvef9ucHf/cHJ5/25xe/9+f4P/ +dXd9/3Byef9qbXf/bG51/35/g/9qbHP/cHJ5/2xvef91d33/bnB3/25xe/9zdn//bG95/3l7gf9maG7/ +bnB3/2xvef9qbXf/am13/2psc/9qbXf/bG51/2psc/9sbnX/Zmlz/2Zpc/9nanH/Z2px/2Rncf9qbXf/ +Zmlz/2Jlbv9nanT/bG95/2xvef9kZ3H/Zmhu/2Jlbv9nanT/YGNs/2Rncf9dYGr/ZGdx/2Rncf9qbXf/ +ZGdx/2xvef9iZW7/Z2p0/2ptd/9maG7/XWBq/2psc/9nanT/am13/3N1fP9ucXv/eXyG/2ptd/9nanT/ +dXd9/25wd/9zdXz/cHJ5/3Byef9vcXX/bnF7/3Bzff9wcnn/eXuB/3N1fP91eIH/dXiB/3l8hv9zdXz/ +cHJ5/25xe/95e4H/d3qD/3N2f/9zdn//cHN9/3l7gf9zdXz/bnF7/25wd/9wc33/cHN9/3N2f/9sb3n/ +bG95/3Byef9wc33/bG95/25xe/9ucXv/cHJ5/25wd/9ucHf/eXuB/3N2f/9ucHf/bG95/25wd/9wc33/ +d3qD/3d5f/91d33/bG51/3Byef9sbnX/amxz/3N1fP94eX3/dXd9/3V4gf9ucHf/cHJ5/3Byef92eHz/ +bG95/3Bzff93eoP/c3Z//3N2f/9zdXz/bnB3/25wd/9zdXz/eHl9/3+Bh/9ucHf/dnh8/3Byef93eX// +bnB3/3d6g/95e4H/bnB3/3Byef9sbnX/bnB3/2psc/9qbXf/am13/3l8hv9maXP/bnF7/2psc/9kZ3H/ +bnF7/2xvef9ucXv/amxz/2ptd/91d33/bG51/2psc/9wc33/cHN9/2xudf9maXP/cHN9/2dqcf9nanT/ +amxz/2dqdP9sbnX/am13/2Zpc/9sb3n/bG51/2xvef9sbnj/ZWhy/2dqdP9nanH/bnF7/2ttdf9rbnb/ +a252/29xeP90dnz/am13/2ptd/9nanH/cHJ5/3N1fP9tcHj/bnF6/2dqdP9qbHP/Zmhu/2psc/9nanT/ +amxz/2dqdP9qbXf/YGNs/2dqdP91d33/YmVu/2xudf9sb3n/am13/2xudf9iZW7/am13/2xvef9ucXv/ +bG51/3d5f/9ucXv/am13/3Byef9ucHf/ZGdx/25xe/9sb3n/am13/2lsdP9wcnv/b3J7/21vd/9zdXz/ +bnB3/3Bzff9rbXT/a254/25xe/9rbXX/bW9z/25wd/9tb3P/b3F1/2xvef9wcnn/c3V8/2ptd/93eX// +bnB3/3V4gf9ucXv/cHJ5/3d6g/9qbXf/bG51/2Jlbv91eIH/am13/25xe/9maXP/amxz/2ptd/9qbXf/ +e32D/3N1fP9qbXf/bG51/2psc/91eIH/YGNs/2Zpc/9kZ3H/Z2p0/2Zpc/9nanH/bG95/2Rncf9zdXz/ +YGNs/2Zpc/9nanT/amxz/2Zpc/9qbHP/bG95/2xudf9qbHP/bG51/2Zpc/9nanT/amxz/2ptd/9maXP/ +cHN9/25xe/9maXP/am13/3Bzff91d33/bG95/2xvef9tb3P/dXd9/25wd/9ucHf/Zmlz/25wd/9tb3P/ +c3V8/21vc/92eHz/bnB3/3h5ff94eX3/bG51/2dqcf9sb3n/bnF7/25xe/9zdXz/cHJ5/36Ahv9wc33/ +c3V8/3l7gf9zdXz/bnF7/25xe/9sbnX/bG51/3N1fP9zdXz/b3F1/3N1fP9ucHf/c3V8/3Byef91d33/ +b3F1/2xudf9sb3n/dnh8/3Z4fP9zdXz/cHN9/3Bzff94eX3/b3F1/3Bzff9qbHP/bnB3/2xvef9wc33/ +ZGdx/2dqdP9nanT/am13/2ptd/9ucHf/cHJ5/3Byef9sbnX/bG51/3V3ff92eHz/amxz/25xe/9ucHf/ +cHN9/3d5f/93eX//c3V8/21vc/9zdXz/bW9z/2xudf9zdn//d3qD/3V4gf95e4H/bnF7/3N2f/91eIH/ +e32D/3Byef91eIH/eXuB/3d6g/93eoP/d3qD/3Bzff9wc33/bnF7/3V4gf+Bg4r/bG95/3V3ff9wc33/ +eXuB/25xe/97fof/eXuB/3N1fP9zdn//bG95/3V4gf9wcnn/d3qD/3V4gf9/gYf/cHJ5/3d6g/9wc33/ +bG95/3V4gf9zdn//dXiB/3N1fP9zdXz/eXyG/3V4gf9zdn//e32D/3l7gf9zdn//c3V8/3d6g/9ucHf/ +bnF7/2xvef9wc33/bG95/25xe/9qbXf/cHJ5/25wd/9wcnn/cnR6/21vdv9sb3n/bnB3/3Bzff9tcHr/ +cXN7/25wd/9vcXr/bnB6/2xudf9sbnX/Z2px/3V3ff9ydX7/b3J8/2tueP9rbXT/am13/2xudf9sbnX/ +bG51/3Byef9zdXz/cHJ5/2RmbP9ucHf/dXd9/2Rncf9qbXf/bG95/2dqdP9sbnX/YmVu/2ptd/9qbXf/ +bG95/2xudf91d33/bG95/2xudf9zdXz/bG51/2Zobv9wcnn/cHJ5/2xvef9rbnf/c3V+/3F0fv9sb3n/ +c3V8/3N1fP9zdXz/bnB0/29xeP90dnz/bW94/3Byef9wc33/b3F1/25wd/9tb3P/cHJ5/3Byef9qbHP/ +dXd9/2ptd/91d33/amxz/2xudf9zdXz/YmVu/25wd/9nanH/eXuB/25wd/9ucHf/bnB3/25wd/9wcnn/ +b3F1/36Ahv91d33/bnB3/2xudf9tb3P/fn+D/2psc/9sbnX/bnB3/25xe/9sbnX/amxz/25xe/9nanT/ +d3l//2Rncf9sbnX/bnB3/21vc/9nanH/b3F1/3Bzff9ucHf/bnB3/25xe/9sb3n/c3V8/3Byef91d33/ +b3F1/3h5ff9zdXz/bG51/3Byef91d33/dXiB/3V4gf9wc33/cHN9/3N2f/9sb3n/bnF7/2dqdP9wcnn/ +bW9z/3N1fP9sbnX/cHN9/2ptd/91d33/dXd9/2xudf9iZW7/am13/2ptd/9qbXf/bnF7/3Byef9zdn// +bnF7/25xe/9zdn//cHN9/25xe/9ucXv/bG51/2ptd/9sb3n/bnF7/2ptd/9sb3n/bnB3/25wd/9wcnn/ +dXd9/2xudf9maXP/Z2p0/3Z4fP9zdXz/dXd9/3N1fP9ucHf/dnh8/2ptd/9ucXv/ZGdx/2psc/9maXP/ +am13/2Jlbv9kZ3H/ZGdx/2Rncf9iZW7/Zmlz/2Zpc/9qbXf/ZGdx/2dqcf9sb3n/bnF7/2Rncf9qbXf/ +amxz/25xe/9zdXz/dXd9/2xvef9sbnX/cHN9/21vc/9qbHP/dXd9/3V3ff91d33/eHl9/25wd/9vcXX/ +bnB3/3Z4fP9ucHf/c3Z//3Z4fP91d33/cHJ5/3N1fP9ucHf/bnB3/25wd/91d33/f4KM/3Byef9zdn// +bnF7/3d5f/9sb3n/e32D/3h5ff9ucHf/cHN9/2ptd/9zdn//bG95/3Bzff9wcnn/e36H/25wd/9wc33/ +bG95/2ptd/9zdn//dXiB/3V3ff9sb3n/bnB3/3d6g/9ucXv/bnB3/3N2f/9zdn//bnB3/2xudf9wcnn/ +bW9z/29xdf9ucHf/bnB3/2xvef9wcnn/cHN9/3Bzff9wcnn/c3Z//3N2f/9xc3r/cHJ5/3N2f/93eoP/ +cHN9/3h6gP9zdXr/d3l//3h7hP9zdn//cHN9/2dqdP93eoL/dnmB/3N2fv9wcnr/bnB3/25wd/9vcXX/ +cHJ5/25wd/91d33/dXd9/3N1fP9maG7/bnB3/3l7gf9maG7/bG51/2ptd/9sbnX/amxz/2Jlbv9sbnX/ +cHN9/2ptd/9nanH/c3V8/2dqdP9nanH/Zmlz/2Zobv9ZXGX/ZGdx/2Zpc/9iZW7/YmVt/2xud/9sb3f/ +a210/29yef9wcnn/dnh8/29xdf9tcHr/bnF7/2Zpcv9naXD/Z2pz/2Jlbv9kZmz/Zmhu/2dqdP9nanT/ +ZGdx/25wd/9maXP/c3V8/2psc/9maXP/cHJ5/2Jlbv9wcnn/bnF7/3+Bh/9zdn//dXiB/3N1fP9wc33/ +cHN9/2xvef97fYP/cHN9/2xvef9sb3n/cHJ5/3+Bh/9sb3n/cHN9/3Byef9zdn//c3V8/3Byef9zdn// +bG95/3t+h/9sb3n/dXiB/3d6g/9wcnn/am13/3Byef9wc33/cHJ5/25xe/9zdn//cHJ5/3l7gf91eIH/ +eXyG/3d6g/95fIb/d3qD/3Bzff91eIH/d3l//3l8hv91d33/cHN9/2xvef9wc33/am13/3Byef9sbnX/ +cHJ5/29xdf91d33/bG95/3Bzff9ucHf/d3qD/3h5ff9sbnX/Zmlz/2xvef9wcnn/cHJ5/3Byef91d33/ +dXiB/3d5f/9wc33/e36H/3l7gf9wc33/c3Z//25wd/9wc33/d3qD/3Bzff9wcnn/cHN9/25xe/9wc33/ +c3V8/3h5ff9vcXX/amxz/2psc/92eHz/cHJ5/3Bzff9ucXv/bG51/3V4gf9ucXv/c3V8/2dqcf9sbnX/ +cHJ5/3N1fP9qbHP/bG51/29xdf9zdXz/bW9z/2xudf9wcnn/cHJ5/2xudf9sb3n/c3V8/3Z4fP9sb3n/ +cHN9/25xe/9zdn//dXd9/3d5f/9wc33/bG95/3N2f/9ucXv/bnB3/3d5f/95e4H/d3l//3d5f/9sb3n/ +cHJ5/29xdf92eHz/bnB3/3N1fP92eHz/dXd9/3N1fP9wcnn/b3F1/2xudf9wc33/dXd9/4CChv9tb3P/ +bnF7/2xudf91d33/bW9z/3d5f/92eHz/bW9z/2xudf9nanH/cHN9/2xvef9wcnn/bnB3/3d5f/9ucHf/ +cHN9/2xvef9sb3n/dXd9/3N2f/91d33/bnB3/25wd/95e4H/bG95/25wd/9wc33/dnh8/2xudf9qbHP/ +bnB3/21vc/9sbnX/bG95/2ptd/9ucHf/bnB3/25wd/9wcnn/bW9z/3N1fP9xc3r/a253/2psc/9nanT/ +bnF7/2dqdP9vcnz/aWx2/29xev9sb3n/amxz/2xudf9iZW7/cHN9/3R2fP9xdH3/bW93/2hrcv9sb3n/ +bG51/2xvef9sbnX/dXd9/3V3ff9wcnn/amxz/2xudf93eX//Z2px/2ptd/9qbXf/am13/2xvef9maG7/ +bW9z/25wd/9wcnn/b3F1/3N1fP9sbnX/bG51/2xvef9wcnn/Zmhu/2xvef9qbXf/Zmlz/2Vocv9sb3n/ +cXR7/2xvef9zdXz/c3V8/3V3ff9ucHT/bnB1/3R2fP9sb3j/b3F2/21vdf9tb3P/bG51/25wd/9zdXz/ +c3V8/2psc/93eX//am13/3d5f/9sbnX/am13/3d5f/9sbnX/bG51/2ptd/97fYP/dXd9/3Byef9vcXX/ +cHJ5/2xvef9ucHf/eXuB/2xvef9qbXf/am13/2xudf9+gIb/amxz/3Byef9ucHf/cHJ5/25wd/9ucHf/ +bnB3/2Zpc/91d33/Z2px/3N2f/9wcnn/bnB3/2psc/9sb3n/cHN9/3N1fP9zdn//dXiB/3Byef95fIb/ +dXiB/3d6g/93eoP/e36H/3l8hv9wc33/dXiB/3l7gf9+gYr/foCG/3d6g/93eoP/d3qD/3V3ff93eoP/ +cHN9/3d6g/91eIH/e32D/3Bzff9zdn//bnB3/3l7gf94eX3/c3Z//2dqdP9zdn//c3Z//3N2f/9ucHf/ +d3l//3l7gf97fYP/d3qD/3+CjP97fof/eXuB/3l7gf91d33/dXiB/3l7gf93eoP/cHJ5/3Bzff9ucXv/ +c3Z//25xe/97fYP/c3V8/2xvef9sb3n/d3l//3N2f/9wc33/cHJ5/2xvef9ucXv/am13/3Byef9sbnX/ +bW9z/25xe/9ucXv/ZGdx/2dqdP9qbHP/cHJ5/2dqcf9maG7/bG95/2dqdP9kZ3H/ZGdx/2ptd/9wc33/ +Z2p0/2ptd/9nanH/bG95/3N1fP9wc33/bG95/2xudf9zdXz/am13/2dqdP9ucXv/c3V8/3V3ff91d33/ +bG51/25xe/9sbnX/bG95/2ptd/9ucXv/bnF7/3V3ff92eHz/cHJ5/2xudf9tb3P/c3V8/3d5f/+Agob/ +bW9z/2xvef9sb3n/eHl9/2xudf93eoP/dXd9/2ptd/9qbXf/Zmlz/3N1fP9wcnn/c3Z//3Bzff97fof/ +cHJ5/3N2f/9sb3n/bG51/3V3ff9zdXz/c3V8/25wd/9ucHf/dXiB/25xe/9sb3n/cHN9/3N2f/9tb3P/ +bG51/3N1fP9sb3n/cHN9/3Bzff9sb3n/bnB3/25xe/9ucHf/cHJ5/21vc/91d33/c3V6/21wef9ucHf/ +bnB3/3N1fP9ucHf/cXN7/2xud/9wcnn/dHZ9/25wd/9ucHf/Z2px/3V3ff90dnv/cXR7/25wd/9lZ3D/ +amxz/2xudf9qbXf/am13/3Bzff9ucXv/bnF7/2Zpc/9sbnX/c3V8/2Rncf9maXP/Zmlz/2dqcf9maXP/ +XWBq/2dqcf9nanT/Z2p0/2Zpc/9sb3n/Z2px/2dqcf9qbXf/am13/2Jlbv9qbXf/bG51/2Vocf9oa3T/ +b3J5/3J1f/9tcHr/dHeA/3V4gf97fYP/dXd9/3Z4f/95e4H/bG93/21vdv9tb3b/bG51/2ptd/9tb3P/ +dXd9/3Byef9sbnX/d3l//2xudf92eHz/bG51/2xudf93eX//bG51/2xvef9sb3n/d3qD/3N2f/9ucXv/ +bG95/3Byef9ucHf/bnB3/3d5f/9ucHf/bG51/2ptd/9ucHf/gYOK/2ptd/9zdn//cHJ5/3N2f/9wcnn/ +bnB3/2xvef9qbXf/eXuB/2dqcf95e4H/dXiB/3N2f/9wc33/dXd9/3l7gf91d33/dXd9/3d6g/91d33/ +fX6B/3t9g/9/gYf/foCG/36Ahv97fYP/eHl9/3l7gf9+f4P/gYOK/36Ahv95e4H/d3qD/3N2f/91d33/ +d3qD/3Bzff9wc33/cHN9/3l7gf9zdn//dXiB/3N1fP9/gYf/e36H/3V4gf9sb3n/c3Z//3Bzff9wc33/ +bnF7/3Z4fP9zdXz/dXd9/25xe/93eX//dnh8/3V3ff94eX3/bnB3/25wd/91d33/cHJ5/25wd/9ucHf/ +bnB3/3N1fP9wcnn/dnh8/29xdf9qbHP/bG51/3Z4fP9wcnn/c3V8/25wd/9qbXf/bnF7/25wd/9zdn// +am13/25wd/9zdXz/dXd9/2ptd/9vcXX/bG51/3N1fP9sbnX/am13/3N1fP9ucXv/bG51/2xudf9wcnn/ +eHl9/2ptd/9zdXz/c3V8/3V4gf93eoP/eXuB/3l7gf9zdXz/e32D/3V4gf9zdXz/d3qD/3t9g/9+gIb/ +foGK/3N2f/97fYP/dXiB/3d6g/9wc33/dXiB/3N2f/91eIH/c3Z//3Bzff9ucHf/bnB3/3N1fP92eHz/ +gIKG/2xvef9ucHf/bnB3/3Z4fP9qbXf/c3Z//3N1fP9qbHP/am13/2BjbP9ucXv/Z2p0/25xe/9wc33/ +dXiB/2xudf9sb3n/bG95/2ptd/9wc33/cHN9/3N1fP9tb3P/am13/3V3ff9qbXf/Z2px/2xvef9ucXv/ +amxz/2Zpc/9sb3n/bG95/25xe/9sb3n/bG51/2xudf9qbXf/Zmlz/2Zpc/9maG7/am13/2tueP9nanT/ +Zmlz/2Zpc/9nanT/Z2lv/2ptd/9maXL/a252/2xvef9qbHP/am13/2Rncf9sb3n/b3J8/3Bze/9sbnT/ +Z2lw/2xudf9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9qbHP/bG95/3l7gf9qbXf/cHJ5/3d6g/9zdn// +c3Z//2ptd/9wc33/dXiB/3d6g/9wcnn/d3qD/3Bzff9wcnn/c3Z//3Bzff9maXP/bnF7/25xe/9sb3n/ +bG95/3N2f/9xdH7/am12/25wd/9ucXv/dXd9/2xudf9tb3b/cnV8/21veP9vcXj/bnB3/25wd/9wcnn/ +bW9z/3N1fP9zdXz/bG51/3d5f/9tb3P/dXd9/21vc/9sbnX/dXd9/2dqdP9maXP/Z2p0/3d5f/9zdXz/ +bnB3/2xudf91d33/bG95/2ptd/93eoP/c3Z//25xe/9sb3n/bnB3/4GDiv9qbXf/bG95/25wd/9ucXv/ +cHJ5/25xe/9ucHf/Z2px/3Z4fP9lZmr/c3V8/25wd/9tb3P/Z2p0/2dqcf9sb3n/amxz/2psc/9maXP/ +YmVu/2xvef9qbXf/bG95/2xvef91d33/bnF7/2xudf9sbnX/c3V8/3V3ff91d33/bG95/2xvef9qbXf/ +am13/2xvef9qbHP/cHJ5/2xudf91d33/bG51/3N1fP9vcXX/e32D/3d6g/9wc33/Z2p0/3Bzff91d33/ +c3V8/25wd/9zdn//d3l//3d5f/91d33/dXiB/3d5f/93eX//eXuB/25xe/9wc33/dXiB/3V4gf9zdn// +d3qD/35/g/97fYP/dXiB/3t+h/9zdn//bnF7/3Byef93eX//cHN9/3N2f/9wc33/bnB3/3Bzff9qbXf/ +c3V8/2dqcf9ucHf/c3V8/3N1fP9sbnX/bG51/2xudf9wc33/bG95/2ptd/9zdXz/c3V8/2psc/9sbnX/ +bnF7/3Z4fP9sbnX/bG51/2psc/9ucXv/c3V8/3N1fP9wcnn/bG51/3V3ff9sbnX/Z2p0/3Byef9wc33/ +dnh8/3d5f/9ucHf/c3Z//2xvef9zdXz/bG95/25xe/9ucHf/c3Z//3N2f/9wc33/bnB3/25wd/9zdn// +eXuB/4GDiv9ucHf/bnF7/3Bzff95e4H/cHN9/3d6g/93eoP/cHJ5/3N2f/9maXP/dXd9/3Bzff91d33/ +c3Z//3l8hv9ucHf/cHJ5/25xe/9ucHf/dXd9/3V3ff92eHz/b3F1/25wd/91d33/bG95/2xvef91eIH/ +dXiB/25xe/9sb3n/c3Z//3Bzff9wc33/cHN9/2xvef9zdXz/cHJ5/25wd/9wcnn/b3F1/3N1fP9zdXr/ +bW92/2xudf9tb3P/cHJ5/2xudv9tb3f/aWx1/25xef9ucXv/Zmhu/2dqdP9kZ3H/bG95/2xvef9vcXr/ +a252/2Vobv9sbnX/cHJ5/2xudf9zdXz/dXd9/2xvef9sb3n/Zmlz/2ptd/9zdXz/YmVu/2psc/91d33/ +cHN9/25wd/9nanH/bnB3/25xe/91eIH/bG95/3V3ff9sb3n/bnB3/3V4gf9ucXv/am13/25wd/9ucHf/ +bG95/29xeP9zdn7/dHd//21vdv9wcnn/cHJ5/3V3ff9qbXf/cHJ6/3d6g/9wc33/bnF6/3F0fv9ucXv/ +bnF7/2xudf9zdXz/cHJ5/2ptd/9zdXz/bG51/3V3ff9sbnX/b3F1/3d5f/9sbnX/amxz/29xdf92eHz/ +cHJ5/3Byef9ucHf/dXd9/2ptd/9maXP/c3Z//25xe/9sb3n/Zmlz/2psc/9/gYf/am13/2ptd/9qbHP/ +am13/21vc/9sbnX/bG51/2psc/93eX//Zmlz/3Bzff9ucXv/bnB3/2xudf9sbnX/bnB3/2xudf9sb3n/ +bnB3/2psc/9zdXz/bnB3/3N1fP9ucHf/eHl9/3Bzff9wcnn/cHN9/3d6g/95fIb/e32D/3V4gf93eoP/ +cHN9/2xvef9wc33/bG95/3V3ff9ucHf/dXd9/25wd/91eIH/bnB3/3l8hv93eX//c3V8/2psc/9zdXz/ +cHJ5/3N1fP9ucHf/c3V8/3N1fP92eHz/cHN9/3V3ff91d33/dXd9/3d5f/9qbHP/bnB3/3V3ff9zdXz/ +b3F1/25wd/91d33/cHJ5/25xe/93eX//bG51/2psc/9sbnX/eHl9/3Byef91d33/bnF7/2xudf91eIH/ +cHN9/3V4gf9kZ3H/bnB3/25xe/93eoP/c3V8/3N1fP9zdXz/eXuB/3N2f/9wcnn/eXuB/3t9g/9ucXv/ +cHJ5/3V4gf93eX//bnB3/3Byef9wcnn/d3l//3Bzff9zdn//c3V8/3Byef91d33/cHJ5/25wd/9zdXz/ +cHN9/3N1fP91d33/bG95/3N1fP9ucHf/c3V8/25wd/9wcnn/bnB3/3N2f/91eIH/c3Z//2xvef9ucXv/ +c3Z//3V4gf+DhYz/dXd9/3V3ff97fYP/f4GH/3t9g/9/gYf/hYeN/3t9g/95fIb/c3Z//36Biv9+gIb/ +foCG/31+gf+Bg4r/dnh8/3l7gf97fYP/dnh8/3t9g/97fYP/eXuB/3Bzff9ucXv/d3l//25wd/9qbHP/ +cHN9/3Bzff9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2dqdP9nanH/Z2p0/2Zpc/9kZ3H/Z2p0/2psc/9nanT/ +bG95/2Nmbv9gY2z/Zmhu/2ptd/9oa3P/bG52/2lsdv9sb3j/bnF7/21vc/9tb3P/Z2px/3Byef9xdHv/ +b3F4/3Byef9oanD/b3F1/3N1fP9ucHf/dXd9/3V3ff9ucHf/bnB3/2psc/9wcnn/dnh8/2Zobv9sbnX/ +dXd9/3N1fP9wcnn/Zmhu/2xudf9sb3n/dXd9/2ptd/9wcnn/b3F1/21vc/9wc33/bG51/2Rncf9qbHP/ +Z2p0/2BjbP9kZ3H/aGt1/2tud/9nanP/bnB4/21vdv91d33/bG51/21vc/9zdn3/a254/21vd/9tcHr/ +am13/2ptd/9sbnX/cHJ5/2xvef9nanT/c3V8/2psc/91d33/bG51/2xvef93eX//Z2p0/25xe/9wc33/ +e32D/3d6g/9zdn//cHN9/3d6g/9zdXz/bnF7/3l8hv9zdn//cHN9/2ptd/9ucHf/f4KM/2xvef9zdn// +cHN9/3Bzff9zdXz/c3Z//25xe/9nanT/eHl9/2dqcf9zdXz/cHJ5/25wd/9sbnX/bG51/29xdf9vcXX/ +cHJ5/3Byef9sbnX/c3V8/3Byef9sb3n/cHN9/3V3ff9wc33/bW9z/2ptd/9ucXv/dXd9/3Z4fP9wcnn/ +cHN9/2ptd/9nanT/cHN9/2psc/9wc33/am13/3Bzff9qbXf/bG95/2xudf93eoP/dXd9/2xvef9qbHP/ +bG95/2xvef9wc33/bG51/2ptd/9ucXv/bnF7/3Bzff9zdXz/dXd9/2xvef93eX//Zmlz/2ptd/9wc33/ +bG95/2ptd/9sbnX/cHN9/3Byef9zdXz/eXuB/3N2f/9qbXf/bnB3/3l7gf9wc33/dnh8/3N1fP9ucHf/ +bnF7/25wd/9zdXz/ZGdx/25wd/9zdXz/c3Z//25xe/9ucXv/cHN9/3d6g/95fIb/c3Z//36Ahv97fof/ +cHN9/3V4gf95e4H/e36H/3V3ff93eX//c3Z//3l8hv9zdn//d3qD/3d6g/9zdn//d3qD/3N2f/9sb3n/ +c3Z//3N2f/91eIH/d3qD/3Bzff9wc33/cHN9/25xe/9ucXv/cHN9/3Bzff91eIH/c3Z//3N2f/9ucHf/ +bW9z/3N1fP91d33/fn+D/25wd/9sb3n/dXiB/3d5f/9ucXv/d3l//3d6g/9zdn//bnF7/2psc/9wc33/ +cHJ5/3V3ff9zdXz/eXuB/2xudf9wcnn/bG95/2xudf91d33/dXd9/25xe/9ucHf/bG95/3V3ff9ucHf/ +Z2p0/3Bzff91d33/bW9z/2dqcf9wcnn/bG95/2ptd/9sbnX/bG51/25xe/9sbnX/am13/2xvef9qbHP/ +bG95/21veP9pa3L/YmVu/2Zobv9sb3n/bG51/2lsdP9oa3X/am12/2hrdf9maG7/Zmhu/1lcZf9maXP/ +bXB6/21wef9tb3f/Z2p0/25xdf9ucXv/bnB3/3N2f/93eX//bnF7/3Bzff9qbXf/c3Z//3d5f/9nanT/ +cHJ5/3N2f/93eX//cHJ5/2psc/9sbnX/bG95/3V3ff9sbnX/bG95/2ptd/9nanT/cHN9/2xvef9maXP/ +bG51/25xe/9kZmz/bG51/2xudv9ucHj/aWx0/25xe/9sb3n/cHN9/2dqdP9qbXf/cHJ4/25wdf9sbnb/ +c3V9/25wd/9wcnn/bG51/3Byef9ucHf/bG51/3V3ff9sbnX/dXd9/2xudf9sbnX/d3l//2dqdP9qbHP/ +b3F1/3Z4fP9zdn//bG95/25wd/91d33/bG95/2xvef97fof/dXiB/3N2f/9ucHf/cHJ5/3+CjP9qbXf/ +bnF7/25wd/9ucXv/cHN9/3N2f/9wc33/am13/3d5f/9nanH/cHJ5/3Byef9sbnX/Z2p0/2dqdP9sbnX/ +amxz/2xudf9nanT/Zmlz/2xvef9qbXf/am13/2xvef9zdXz/cHJ5/21vc/9wcnn/cHJ5/3Z4fP91d33/ +am13/3N1fP9ucXv/bG51/3V3ff9qbHP/cHN9/2ptd/9zdXz/bnB3/3Bzff9sb3n/foCG/3d5f/9ucXv/ +bW9z/3N1fP9zdXz/dnh8/3Byef9sbnX/bG95/3Bzff9wc33/cHN9/3V3ff9wcnn/dXiB/2Rncf9nanT/ +cHN9/2ptd/9qbXf/am13/2dqdP9qbXf/bG95/3N2f/9qbHP/Zmlz/2psc/91d33/bnF7/3Bzff9qbXf/ +Zmlz/2dqdP9sbnX/bnF7/2Zpc/9sbnX/bW9z/3N1fP9wcnn/bnB3/3Byef93eX//c3Z//25wd/91d33/ +eXuB/3Byef9wcnn/dXiB/3t9g/9ucHf/cHJ5/3Byef9zdn//cHN9/3d6g/97fYP/dXiB/3t+h/9zdn// +c3Z//3t9g/95e4H/d3qD/3t9g/9wc33/dXiB/3l7gf9wc33/dXiB/3V4gf9zdXz/d3qD/3l7gf91eIH/ +bnB3/3Byef9wc33/cHN9/3t9g/9vcXX/bnB3/3d5f/9zdn//bnF7/3d5f/91eIH/bnF7/25xe/9qbXf/ +cHN9/25xe/91eIH/cHN9/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3d5f/9zdn//c3Z//3V4gf95e4H/ +cHN9/3Byef93eX//dXd9/2xvef9qbXf/cHN9/25xe/9wcnn/bnF7/25wd/91d33/bnB3/3Byef9zdn// +bnB3/3Bzff9vcnv/b3F1/2dqdP9ucHf/cHN9/25xe/9vcnv/bXB6/29xev9ydX7/bnB3/25wd/9maG7/ +b3F1/3J0ev9tcHr/bW93/2Zpc/9sbnX/am13/2dqdP9ucXv/c3V8/2psc/9sb3n/amxz/2xvef9ucXv/ +ZGdx/2dqdP9ucXv/cHN9/2ptd/9iZW7/Zmlz/2xudf9ucXv/Z2p0/25xe/9sbnX/bG51/3N1fP9wcnn/ +Z2px/2xudf9ucXv/ZGZs/25wd/9vcXj/b3F4/25wd/9wcnn/cHJ5/3h5ff9nanT/bG51/29xeP9sbnX/ +bnB3/3F0fv9sb3n/bG51/2ptd/9ucHf/cHJ5/29xdf9zdXz/bG51/3l7gf9ucHf/bnB3/3d6g/9ucHf/ +bG51/2ptd/9zdn//c3Z//3Bzff9sb3n/c3Z//2dqdP9nanT/eXuB/3N2f/9wc33/am13/29xdf+Agob/ +bG51/25wd/9sbnX/cHJ5/2xvef9ucXv/b3F1/2xudf92eHz/Zmhu/3N1fP9sbnX/Z2p0/2Zpc/9nanT/ +bG51/2psc/9nanH/bG51/2Zpc/9wc33/am13/2ptd/9ucXv/cHN9/2xvef9tb3P/bnF7/25xe/9zdXz/ +dXd9/3Bzff9wc33/bnF7/2Zpc/93eX//bnB3/3V3ff9ucHf/bnF7/2xvef9zdn//cHN9/3+Bh/95e4H/ +c3Z//3Byef9zdn//dXiB/3d5f/9zdn//cHN9/25wd/9zdn//dXd9/3N1fP93eX//cHJ5/3d5f/9maXP/ +am13/3N1fP9sb3n/Z2px/2psc/9qbXf/Zmlz/2dqdP9wcnn/Zmlz/2BjbP9nanH/bG95/2ptd/9sb3n/ +bG95/2Jlbv9qbXf/amxz/2ptd/9iZW7/Zmlz/2Zobv9sb3n/am13/2ptd/9tb3P/dXd9/3N1fP9ucHf/ +dXd9/3Z4fP9tb3P/bW9z/3N1fP91d33/am13/2xudf9sbnX/bnF7/2ptd/9wc33/dXd9/3Byef93eX// +c3V8/2psc/94eX3/dnh8/3Z4fP91d33/bG51/25xe/9wc33/bG51/25xe/9sb3n/bG51/25xe/91d33/ +bG51/25wd/9vcXX/c3V8/3Byef97fYP/bnB3/21vc/9zdXz/c3V8/25wd/91d33/dXd9/3Byef9wcnn/ +amxz/2xudf9sb3n/cHN9/3Bzff91d33/bG51/2xvef9sbnX/bnB3/3N1fP9zdn//c3V8/25wd/9zdXz/ +dXd9/25xe/9sb3n/dXiB/3N2f/9sb3n/bG95/25xe/9wcnn/c3V8/2xudf9sbnX/dnh8/29xdf9ucHf/ +cHN9/3Byef9zdn//c3Z//3F0fv9sb3n/bG95/3V3ff9ucHj/b3F4/2ptdf9rbnf/cXR+/2ptd/9qbXf/ +YmVu/2xvef9wcnn/b3F6/3Bye/91eID/Z2px/3N1fP9vcXX/Z2px/2psc/97fYP/cHJ5/2psc/9zdXz/ +bG95/25xe/9wc33/c3V8/25xe/9ucXv/c3V8/25xe/9nanT/cHN9/2xudf9qbXf/bG51/2xvef9gY2z/ +c3V8/2xvef9qbHP/dXd9/2Zpc/9nanH/Zmly/2dqdP9pbHT/bG95/3J1fv93eX//bG95/3Byef9ucXv/ +bG50/21wev9kZ3D/Z2lz/2dqdP9gY2z/ZGdx/2Zobv9iZW7/Zmhu/2Jlbv9maXP/Zmhu/2Rncf9sbnX/ +bG95/2Zobv9qbXf/bnF7/2xvef9ucXv/amxz/25xe/9kZ3H/ZGdx/3V3ff9sb3n/bnF7/2Zpc/9tb3P/ +foCG/2psc/9sbnX/bG51/3Bzff9qbXf/bG95/2xudf9maXP/bG95/11gav9sb3n/amxz/2Rncf9kZ3H/ +Z2p0/2xudf9sbnX/bG51/2ptd/9maXP/c3V8/2ptd/9sb3n/bnF7/25xe/9sb3n/bG51/2xvef9ucXv/ +dnh8/3h5ff9zdn//dnh8/3V3ff9qbXf/eXuB/3Byef93eX//bG95/2xvef9ucHf/c3Z//25xe/9+gIb/ +eHl9/3N1fP9wcnn/c3Z//3V4gf93eX//cHN9/25xe/9sb3n/dXiB/3l7gf9ucXv/dXiB/25wd/93eoP/ +Zmlz/25wd/93eX//bnF7/2ptd/9sbnX/cHJ5/3Byef9ucXv/dXd9/3N1fP9nanH/bW9z/3N1fP9wc33/ +c3V8/25xe/9nanT/bnB3/25xe/9zdn//bG95/25wd/9sb3n/cHN9/25wd/9ucHf/am13/3h5ff9zdn// +bnF7/3l8hv95e4H/bnB3/25wd/93eX//eXuB/3Byef9ucHf/c3V8/3V4gf93eoP/d3qD/3V4gf91eIH/ +d3qD/3V4gf9wc33/e36H/3t9g/97fof/eXyG/3Bzff95e4H/d3qD/25wd/9wc33/bnF7/3Byef91eIH/ +d3qD/3Bzff9ucHf/bnB3/3Bzff9wc33/e32D/2xvef9tb3P/dXd9/3V3ff9wcnn/eXuB/3h5ff9wcnn/ +bnF7/2ptd/9ucHf/bnB3/3V4gf93eoP/e32D/3N1fP9zdn//c3Z//2ptd/9wc33/cHN9/3N2f/9ucXv/ +c3Z//3V3ff9sb3n/bnB3/3N2f/91d33/bnB3/2psc/9sbnX/cHJ5/2ptd/9sbnX/Zmlz/3Bzff9qbHP/ +Z2px/2dqcf9maXP/am13/2lrdP9oa3L/Z2p0/2psc/9wc33/bW9z/21vdv9sbnT/aWxz/3N1fv9ucXv/ +bG95/2dqdP9ydX//dHd//3Byef9wc3r/dnh+/2Zobv9wc33/cHJ5/2dqdP9nanT/d3qD/2xvef9qbXf/ +dnh8/25xe/9zdn//cHN9/3V3ff9wcnn/cHJ5/3N1fP9wcnn/amxz/3Bzff9qbXf/bnB3/25wd/91d33/ +Zmhu/3N1fP9zdXz/am13/3d6g/9nanT/Z2p0/2hrdP9oa3L/a212/2tueP9tcHn/dXd9/2xudf9vcXX/ +bnB3/25wdv90dn3/am12/2ptd/9wc33/bG51/2xudf9sbnX/bG51/2ptd/9qbHP/cHJ5/25wd/9ucHf/ +bG95/3Bzff9gY2z/bG51/25wd/9ucXv/bnF7/2ptd/9ucXv/am13/2Rncf91d33/c3V8/3N1fP9nanH/ +b3F1/36Ahv9ucHf/bG95/29xdf9zdXz/bnB3/2xudf9ucHf/bW9z/3N1fP9maG7/bnF7/25xe/9maXP/ +ZGdx/2xudf9sbnX/b3F1/3Byef9ucXv/bG51/3N1fP9wc33/cHN9/3Bzff9wc33/bnB3/2ptd/9ucXv/ +c3Z//3l7gf93eX//d3l//3V3ff91eIH/bG95/3l7gf9zdXz/d3qD/2ptd/9wc33/c3V8/3V4gf9wc33/ +f4GH/3d5f/9wc33/cHJ5/3Bzff9zdn//dXd9/25wd/9tb3P/am13/25xe/9zdXz/am13/3V3ff9ucHf/ +d3qD/2psc/9sb3n/eHl9/3Byef9ucHf/bnB3/3V3ff9wcnn/c3V8/3V3ff9wcnn/amxz/25wd/9wcnn/ +c3V8/3N1fP91d33/bG51/3Bzff9zdn//dXiB/2ptd/9zdXz/cHN9/3V4gf9zdn//c3Z//3Bzff97fYP/ +c3Z//2xvef95fIb/d3l//2xvef9wcnn/d3l//3d6g/9zdXz/c3V8/3N1fP9zdn//cHN9/3Bzff93eoP/ +dXiB/3t+h/95e4H/bnF7/3l8hv93eX//eXuB/3l7gf9ucHf/d3l//3d6g/9zdXz/eXuB/3d6g/9zdn// +eXyG/3d6g/91eIH/c3V8/3N1fP9zdn//dXiB/3l8hv9wc33/bG95/3V3ff91d33/cHJ5/3d5f/94eX3/ +cHJ5/25wd/9nanT/bG95/25xe/91d33/dnh8/3V3ff9sbnX/am13/25wd/9nanH/cHJ5/3Byef9wc33/ +bnF7/3Bzff91eIH/cHN9/2xvef9zdn//dXd9/25xe/9qbXf/bnF7/3N2f/9sb3n/bnB3/2dqdP91d33/ +b3F1/25wd/9ucHf/amxz/25wd/9ucHj/a254/2ptd/9tb3P/cHJ5/2ptd/9qbXf/Z2pz/2Vocf9sb3n/ +Zmhu/2dqdP9gY2z/Z2p0/2hrdf9oanD/aWx2/3BzfP9iZW7/bnF7/2ptd/9maXP/Zmlz/3V4gf9qbXf/ +Z2p0/25xe/9qbXf/bnF7/25xe/9ucXv/bnF7/25xe/91d33/cHJ5/2psc/9ucXv/Z2p0/2dqdP9sbnX/ +bnF7/2Jlbv9ucXv/am13/2psc/9zdXz/Zmlz/2Rncf9nanT/aGty/2xvd/9sbnb/c3V8/3V3ff9sbnX/ +bnB3/2tud/9tb3b/cXN6/21vdv9wcnn/dXd9/2xvef9sb3n/bG95/2xvef9sb3n/bG95/3N2f/9wcnn/ +cHJ5/3Bzff91eIH/Zmhu/25wd/9vcXX/c3V8/3N1fP9wcnn/c3V8/2psc/9qbHP/d3l//3V4gf9wc33/ +cHJ5/3Byef9/gYf/bG95/25wd/9vcXX/c3V8/2xudf9tb3P/am13/2ptd/9wc33/ZGdx/2xvef9ucXv/ +YmVu/2Zpc/9sbnX/Z2p0/21vc/9sbnX/am13/2dqdP9ucXv/bnF7/3Bzff9sb3n/bG95/2ptd/9nanT/ +bG95/2ptd/9zdXz/dnh8/3Z4fP9zdXz/cHJ5/2psc/93eX//am13/3N1fP9sbnX/b3F1/29xdf9wcnn/ +dXd9/36Ahv91d33/c3V8/21vc/9ucXv/cHN9/3N1fP9sb3n/Z2p0/2ptd/9sb3n/dnh8/29xdf94eX3/ +bnB3/3V3ff9nanH/bnB3/3h5ff9wcnn/bnB3/2xvef9zdXz/c3V8/3Byef92eHz/cHJ5/2psc/9sbnX/ +cHN9/3V4gf91eIH/dXiB/2ptd/9ucXv/bG95/3Bzff9qbXf/cHJ5/2xvef9zdXz/bG95/3Byef9ucHf/ +eHl9/3V3ff9qbXf/foCG/3V4gf9tb3P/bW9z/3V3ff91eIH/bW9z/2xudf9nanT/bnB3/2ptd/9sbnX/ +cHJ5/2xudf92eHz/dXd9/2dqdP91d33/bnF7/3N1fP9ucXv/Z2p0/3Bzff9wc33/bG51/2xvef9qbHP/ +Z2px/2dqdP9nanT/am13/2psc/9nanH/bG95/2dqdP9zdn//Zmlz/2Rncf9nanT/bG95/2psc/9wcnn/ +cHJ5/2Zpc/9sbnX/Z2p0/2psc/9qbXf/cHN9/3Bzff93eX//bG51/2ptd/9sbnX/amxz/3N1fP9ucHf/ +cHJ5/3Byef91eIH/dXiB/3V4gf9ucXv/eXuB/3V4gf9ucHf/ZGdx/2xvef9wc33/bnB3/21vc/9nanH/ +dXd9/21vc/9qbXf/am13/2dqdP9sb3n/bW94/2xudv9maXP/amxz/2ptd/9kZ3H/Zmlz/2Nmbv9jZm// +bG94/2dqcf9nanT/YGNs/2xvef9sb3n/amx0/2hrdf9oa3T/Wl1m/2dqdP9nanH/XWBq/2Rncf93eX// +am13/2ptd/9zdXz/bnB3/3Byef9zdXz/c3V8/3Byef9wcnn/dXd9/3Byef9ucHX/c3V8/25wd/9wc33/ +b3F7/3V3ff9naXP/d3l//3N2f/9sb3n/dnh//25wd/9vcXX/bW92/2xudf9sbnX/bnB3/29ye/9wc33/ +Z2px/2psc/9sbnX/amxz/29xev9sbnX/bW92/3V3ff9qbXf/am13/21vef9nanT/bW9z/2Rncf9ucHj/ +bG51/2tud/9rbnf/c3V7/2Zpc/9qbXf/bnB3/3V3ff9ucXv/c3Z//3N1fP9qbHP/Z2p0/3V3ff92eHz/ +cHJ5/25wd/9vcXX/fX6B/2ptd/9qbXf/bG95/3Bzff9sbnX/bG51/2dqdP9qbXf/bnF7/2Jlbv9sb3n/ +bG95/2Rncf9iZW7/amxz/2dqcf9qbXf/amxz/2ptd/9maXP/bnF7/2xvef9sb3n/bG95/3Bzff9sb3n/ +bG51/25wd/9sb3n/dXiB/3l7gf95e4H/c3Z//3V4gf9zdXz/eXyG/3V4gf97fYP/c3Z//3V4gf9wc33/ +e32D/3t9g/+Bg4r/fn+D/35/g/9zdn//e32D/3t9g/97fYP/c3Z//3Byef9wc33/dXiB/3N2f/9ucHf/ +d3l//3Bzff93eoP/am13/25wd/93eX//bG95/3Byef9wcnn/dXiB/3V4gf9ucXv/d3l//3N1fP9qbHP/ +bG51/3N1fP9zdXz/dXd9/3V3ff9qbXf/am13/2ptd/91d33/amxz/29xdf9ucHf/c3V8/2xudf9wcnn/ +bW9z/3V3ff91d33/bG51/3t9g/93eX//bG51/2xudf9zdXz/d3l//3Byef9sbnX/bG51/25wd/9wcnn/ +bnB3/3N1fP9vcXX/dXd9/3V3ff9nanH/d3l//25xe/92eHz/cHJ5/25wd/92eHz/c3V8/2xvef9ucXv/ +bG95/2psc/9ucXv/bnF7/2xudf9vcXX/bnB3/3N2f/9ucHf/e32D/3N1fP9ucHf/dXd9/3N2f/9ucXv/ +dXiB/3V3ff9wc33/bnB3/25wd/9vcXX/bG51/3Byef91d33/eHl9/25wd/9wc33/bnF7/2xvef91eIH/ +cHN9/3V4gf9ucHf/cHJ5/3Byef9wcnn/bG51/3N1fP9ucXv/am13/2Rncf9sb3n/cHN9/21vc/9tb3P/ +amxz/3Z4fP9ucHf/bG95/3Bzff9sb3n/bnF7/25weP9wc33/bG51/2xudf9wcnn/am13/2ttdf9ucHX/ +bG52/3J0e/9sb3n/cHJ5/2Zpc/91eID/bnF7/3BzfP9vcnv/dXd9/2dqcf9zdXz/b3F4/2ttdP9sbnX/ +dXd9/21wd/9rbXX/c3V8/2ptd/9vcnz/bXB6/21wev9tcHr/aWx2/21wev9wcnr/a21y/3Fzev9tb3T/ +cHJ5/3Byef91d33/a210/3d5gv9wc3z/bnF6/3V3ff9ucHf/bW92/25wd/9tb3T/bnB1/21wef9vcnv/ +bnF7/2dqdP9sbnX/amx0/2ttdP9wcnv/cHJ7/29xev96fIL/cHJ6/29xeP93eoL/b3J8/29xef9pbHb/ +b3J8/2ptdv9tcHr/bXB6/29ye/9iZW7/Z2p0/2xudf9sb3n/bG95/2xvef9sb3n/Zmlz/2ptd/9wc33/ +dXd9/2xvef9qbXf/Zmlz/3d6g/9sb3n/Z2p0/2ptd/91d33/bG51/2xvef9nanH/bnB3/3N2f/9qbHP/ +c3V8/3Bzff9qbXf/bnB3/25xe/9sb3n/bnF7/3Bzff9ucHf/bnB3/3Bzff91d33/c3V8/3V4gf9zdn// +cHN9/3Byef9ucXv/bnF7/3N2f/91eIH/e32D/3Bzff9zdn//bnB3/3d5f/9ucXv/dXd9/2ptd/9qbXf/ +bG51/3Byef91d33/d3l//3Bzff9ucHf/bnB3/3N1fP9wcnn/cHJ5/2xvef9qbXf/bG51/2xvef9sb3n/ +Zmlz/3Bzff9qbXf/dXd9/2Jlbv9nanT/d3l//2ptd/9tb3P/bG51/3Byef9zdXz/bG51/3Z4fP9wcnn/ +bG51/2psc/9sb3n/bG95/3V3ff91d33/am13/2ptd/9qbHP/am13/2Zpc/9sbnX/am13/2xvef9qbHP/ +cHJ5/29xdf95e4H/dnh8/2xudf95fIb/e32D/29xdf9sbnX/c3V8/3d5f/9wcnn/bnB3/25wd/9vcXX/ +c3V8/2psc/9ucHf/bW9z/3V3ff91d33/Z2p0/3V4gf9ucXv/c3V8/2dqdP9maXP/bnB3/2ptd/9nanT/ +Z2p0/2Zpc/9kZmz/Zmhu/2dqdP9maG7/ZGdx/2Zobv9maXP/ZGdx/3Bzff9maXP/ZGdx/2xvef9sb3n/ +amxz/3V3ff9wc33/bnF7/2ptd/9qbXf/amxz/2xudf9sb3n/dXd9/3N1fP9tb3P/b3F1/3Byef9qbXf/ +cHN9/25wd/91d33/bW9z/25wd/9sb3n/am13/2xudf92eHz/cHJ5/25wd/9qbHP/bnB3/3N1fP9tb3P/ +bG95/25wd/97fYP/cHN9/3d6g/9ucXv/bG95/3Byef9vcXj/cHJ5/2dqcf9sbnX/bnB3/25wd/9vcXj/ +bnB1/2xvdv9ydHv/bW9z/3Byef9nanH/cHJ5/21vdv9ydHv/b3F6/3V3ff9jZnD/a254/2ptd/9maXL/ +Z2ly/3F0e/9oa3X/Zmlz/25xev9pbHT/bG95/25xe/9pbHX/amx1/2hrc/9sb3f/am13/2Zobv9pbHb/ +Z2pz/2hrdf9tcHj/am12/2Nlbv9wc3r/aGt0/2xudP9sb3n/aGtz/2ZocP9sb3f/amxy/2tud/9ucHb/ +c3V8/3N1fP9qbXf/bnB3/3Byef9ucHf/cHJ5/3J0ev9vcXj/dnh+/3Bze/9rbXb/cXR+/25wd/9ucHf/ +am12/3BzfP9sb3f/cXN6/3Fzev9wcnn/Zmlz/2ptd/9qbXf/bG95/2Zpc/9maXP/Z2p0/2Rncf9iZW7/ +ZGdx/25wd/9kZ3H/Z2px/2Jlbv9zdXz/Zmhu/11gav9kZmz/bG95/2Rncf9maXP/XWBq/2Zobv9qbXf/ +XWBq/2dqdP9kZ3H/XWBq/2Jlbv9kZ3H/Z2px/2dqdP9sb3n/Z2p0/2psc/9ucXv/cHN9/25xe/9sb3n/ +bG95/25wd/9sbnX/bnB3/29xdf92eHz/cHN9/3d5f/9zdn//eXuB/25xe/95fIb/c3Z//3V4gf9ucXv/ +c3V8/3N1fP91eIH/eXuB/3l8hv9zdn//bnF7/25xe/91eIH/cHN9/3N2f/9wc33/bnB3/3N2f/91eIH/ +c3Z//3Byef95e4H/c3Z//3l8hv9ucHf/b3F1/3d5f/9vcXX/bnB3/3Byef9zdn//cHN9/25xe/93eX// +c3Z//2xvef9ucHf/bnF7/3Byef92eHz/eHl9/25wd/93eoP/c3Z//3l7gf9ucXv/cHJ5/3Byef9wc33/ +bG95/3Bzff9sb3n/d3qD/3V3ff9ucHf/fn+D/3l7gf9vcXX/bG95/3V3ff91eIH/cHN9/29xdf9qbHP/ +bG95/25xe/9qbHP/bnB3/25wd/91d33/dXd9/2xvef93eoP/dXiB/3t9g/9zdn//bG95/3V4gf9zdn// +c3Z//3N2f/91eIH/bG95/3Bzff91d33/bnB3/29xdf9wcnn/c3V8/2xudf97fYP/bnB3/2ptd/91d33/ +dXd9/21vc/91d33/bnF7/2xvef9maXP/ZGdx/2Zobv9qbHP/Z2p0/25wd/9qbXf/ZGZs/2Zobv9maXP/ +YmVu/2dqdP9nanH/Z2p0/2psc/9nanT/am13/2ptd/9nanT/dXd9/2xvef9nanT/Zmlz/25xe/9wcnn/ +bW9z/25wd/9sbnX/d3l//25wd/9wcnn/bnB3/2xudf9vcXX/cHJ5/3Bzff9qbHP/b3F1/3N1fP9ucHf/ +cHJ5/25wd/9tb3b/b3F4/25wd/9ucXv/Z2p0/3Bzff9vcXj/cnV+/29xef95e4H/Zmlz/3J1fv9qbXf/ +b3J8/25wd/9xdH7/cnR9/25xef93eYD/cHJ6/3R2fv90dn7/bG95/3F0ff9ucXr/bnB5/29yfP9nanL/ +bXB6/21wdv9tb3f/dnh9/3J1fv9tb3b/d3l+/29yfP9xdHv/cHN7/2ptd/9maXP/dHZ8/2xudP9ucHf/ +bnB0/3N1fP9zdXz/Z2p0/2xudf9sb3n/Zmlz/2tud/9xc3r/aGt1/3V3ff9ucHf/ZWhy/3Fze/9qbXf/ +bG94/21wd/9zdX3/amx0/21wev9ydHr/a254/2Zpc/9ucXv/bG95/3Byef9ucHf/bnB3/25wd/9sbnX/ +am13/2xvef92eHz/bnB3/25wd/9ucHf/e32D/3V3ff9sbnX/bG95/3V3ff9sbnX/bG95/2Zpc/9qbXf/ +cHN9/2Rncf9qbHP/bnF7/2psc/9ucHf/c3V8/25wd/9sbnX/c3V8/25wd/9ucHf/cHN9/3d5f/9ucXv/ +dXd9/3V3ff9wcnn/bG51/25wd/9tb3P/dXd9/3Bzff95e4H/c3Z//3N2f/9sb3n/eXyG/3l7gf9zdn// +bnB3/3N1fP9zdXz/c3Z//3t9g/9+gYr/dXiB/3N2f/9ucXv/bnF7/25xe/9ucXv/bG95/2xvef91eIH/ +c3Z//3N2f/9wcnn/eXyG/3d6g/9+gIb/c3V8/3N1fP95fIb/cHN9/3Bzff9zdXz/dXiB/3N2f/9ucXv/ +eXuB/3V4gf9ucHf/cHN9/3V4gf91eIH/e32D/36Ahv91d33/c3V8/25wd/91d33/bnB3/25wd/9ucHf/ +bnB3/2xudf9wc33/am13/3V3ff9wc33/Z2px/3d6g/9zdn//amxz/2xudf9zdXz/dXd9/3Bzff9qbXf/ +Z2p0/2xudf9wc33/Z2p0/2xudf9sbnX/c3V8/3Bzff9maXP/dXd9/2dqdP9wc33/bnF7/2dqdP9zdXz/ +bnF7/2xvef9ucXv/bnF7/2ptd/9sbnX/bnF7/2dqcf9maG7/Z2px/2dqdP9kZ3H/dXd9/2psc/9nanH/ +bnB3/2xvef9maG7/bnF7/2ptd/9ucXv/Zmlz/2psc/9qbHP/bG95/2xvef9wcnn/cHJ5/2dqdP9qbHP/ +Z2p0/2Zpc/9wc33/bG51/2ptd/9qbXf/am13/2xudf9sb3n/bG51/3Z4fP91d33/bnB3/2Zpc/9wcnn/ +cHJ5/21vc/9sbnX/b3F1/3h5ff9ucHf/cHJ5/2xudf9sbnX/bG95/25xe/9ucXv/Zmhu/21vc/9zdXz/ +bnB3/3N1fP9ucHf/b3F2/2ptd/9sbnX/bnB3/2Zobv9zdXz/bnB3/3N1fP9xc3r/eXuC/2hrcv9ydXz/ +a211/3R2ff9ucHf/cnV//3V3ff9vcXj/dnh9/3Bzff9xdH7/eHqD/3F0fv9wc3z/cHN8/3Byef90d4D/ +aWxz/3N2f/9ucXv/bXB6/3d5f/90d3//bG95/3V3ff9sb3n/c3Z//29yfP9wcnn/Z2pz/3h6gP9vcXX/ +cHJ5/25wd/92eHz/c3V8/21vc/9sbnX/bnF7/2psc/9sbnX/cnR8/2Zpc/9wcnn/Zmlz/2Nmb/90dn3/ +am13/25xev9vcnz/dnh+/21vc/90dnz/dHZ8/25wd/9maXP/bnF7/2ptd/9ucXv/bnF7/2xvef9ucHf/ +bG51/2psc/9sbnX/dnh8/25wd/9wcnn/bG51/3l8hv9zdn//Z2p0/2xvef9zdn//bnB3/3Byef9sb3n/ +bG95/25xe/9qbHP/bG95/3Bzff9sb3n/bnB3/3N2f/93eoP/dXiB/3d6g/9wc33/dXd9/3t9g/9+gIb/ +dXiB/3d6g/97fYP/c3V8/3Bzff9wc33/bnB3/3N2f/9zdn//eXuB/3Bzff9wcnn/am13/3V4gf91d33/ +cHJ5/25wd/9sb3n/cHJ5/2xvef91d33/d3l//2xvef9sb3n/am13/2xvef9sbnX/bnB3/25wd/9sb3n/ +d3qD/3d6g/9zdn//bnF7/3t+h/95e4H/foGK/3N2f/9wc33/eXyG/3N1fP91eIH/d3l//3d6g/97fYP/ +eXyG/3t9g/95e4H/c3V8/3Bzff91eIH/bnF7/3Bzff93eX//bnB3/3N1fP9wcnn/dXd9/2xudf9tb3P/ +bG51/2ptd/9nanT/cHN9/2ptd/93eX//d3l//2dqcf95e4H/dXd9/2Zpc/9maG7/bG95/2ptd/9nanT/ +Zmhu/2Jlbv9nanH/am13/2Jlbv9kZ3H/Zmhu/2ptd/9nanT/ZGdx/25wd/9maXP/Z2p0/2dqdP9kZ3H/ +bnB3/2Rncf9maG7/Z2p0/2ptd/9kZ3H/ZGdx/2dqdP9nanT/Z2px/2dqcf9nanT/YmVu/3Byef9qbHP/ +amxz/3N1fP9ucXv/bG51/3Z4fP9ucXv/bG95/2Zpc/9qbHP/amxz/25xe/9sb3n/dnh8/3V3ff9sb3n/ +am13/2xudf9nanT/bnF7/2psc/9wc33/bG95/2xvef9qbXf/am13/2dqdP91d33/bnF7/2xudf9sbnX/ +cHJ5/3Byef9sbnX/b3F1/29xdf94eX3/bnB3/3Byef9ucHf/amxz/2ptd/9wc33/c3Z//2ptd/9zdXz/ +dXiB/3N1fP93eoP/c3V8/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/2xvef9wc33/cHN9/3d6g/9nanT/ +c3Z+/2xvef94eoD/cHN9/3N2f/94eoD/cHJ5/3V3ff9wc33/bnF7/3d5f/9ucXv/bG95/3N1fP9sbnX/ +dXd9/2RmbP9ucHf/am13/2psc/94eX3/dXd9/29xdf94eX3/b3F1/3N1fP9sb3n/bW9z/2Zobv94eX3/ +b3F1/3Byef9wcnn/eHl9/3V3ff9tb3P/bnB3/3N1fP9sbnX/bG95/3N1fP9sbnX/dXd9/3Byef9qbHP/ +d3l//2ptd/9ucXv/cHN9/3V3ff9nanH/c3V8/25wd/9nanH/YGNs/2dqdP9maXP/am13/25xe/9sb3n/ +bG51/2psc/9nanT/amxz/3N1fP9qbXf/bG51/2psc/93eoP/bnF7/2Rncf9sbnX/cHN9/2xvef9sb3n/ +am13/2dqdP9qbXf/Z2p0/2ptd/9sb3n/bG51/25wd/9ucHf/dXd9/2xudf9zdXz/b3F1/2xudf9ucHf/ +dXd9/2ptd/9zdXz/dXd9/2xudf9qbXf/bG95/2xudf9wc33/cHJ5/3l7gf9sb3n/cHN9/25wd/95e4H/ +dXiB/25xe/9vcXX/b3F1/25wd/9sbnX/c3Z//3t+h/9ucXv/bnF7/3Bzff9sb3n/bG95/2xudf9wcnn/ +bnB3/3N2f/9zdn//bnF7/2ptd/91eIH/cHN9/3l7gf9wcnn/bW9z/3V3ff9tb3P/bG95/25wd/9vcXX/ +dXd9/3N1fP9zdXz/c3V8/25wd/9ucHf/c3V8/29xdf9zdXz/d3l//25wd/9wcnn/cHJ5/3Byef9qbXf/ +bG51/2xudf9sb3n/am13/3N1fP9qbXf/eHl9/3d5f/9vcXX/f4GH/3d5f/9wcnn/b3F1/3Z4fP92eHz/ +c3V8/2xudf9nanT/bG51/3N1fP9nanT/am13/2xvef9zdXz/cHJ5/29xdf93eX//dXd9/3N1fP9wcnn/ +b3F1/3Z4fP9wcnn/bnB3/3Byef9wc33/bnB3/25wd/9zdXz/c3V8/21vc/9sbnX/bG95/2dqdP9zdXz/ +bG51/2xvef91d33/cHJ5/25wd/93eX//cHJ5/3N1fP9qbHP/bnB3/2xvef91d33/c3Z//3d5f/91d33/ +c3Z//2xvef9ucHf/bG51/3N1fP9tb3P/dXd9/25wd/9sb3n/cHN9/3Bzff9ucHf/eXuB/3N2f/9zdXz/ +bnB3/3N1fP9ucHf/bG51/2xudf9sbnX/d3l//2ptd/9sb3n/bG95/2dqdP9sbnX/bnB3/3Byef9nanH/ +b3F1/3N2f/9wcnn/cHN9/2xvef9vcXX/bnF7/29xdf9wcnn/Zmhu/3N1fP9ucHf/dXd9/3V3ff93eX// +Z2p0/3N1fP9qbXf/dXiB/2xvef9sb3n/dnh8/21vc/91d33/bG95/2xvef9wc33/bG51/2psc/9ucXv/ +Zmlz/25xe/9dYGr/Zmlz/3Byef9qbXf/d3l//3Bzff9ucHf/d3l//25wd/9ucXv/bG95/2xvef9nanT/ +eHl9/25wd/9ucHf/cHJ5/3Z4fP91d33/bnB3/29xdf9zdXz/am13/2xudf9wc33/amxz/3V3ff9sbnX/ +amxz/3N1fP9qbXf/bG95/3N1fP93eoP/bG51/3V3ff92eHz/bG51/2Zpc/9wc33/cHN9/2xvef9sb3n/ +bnF7/2ptd/9qbHP/Zmlz/2dqcf91d33/Z2p0/2xvef9maXP/dXiB/25xe/9maXP/bG95/3N1fP9sb3n/ +bnF7/2psc/9maXP/am13/2psc/9nanT/cHJ5/2dqdP9qbXf/cHJ5/3Z4fP9wc33/dXd9/29xdf9sb3n/ +cHN9/3l7gf9wc33/c3Z//3V3ff9sb3n/bG95/25xe/9sb3n/dXd9/3N1fP97fof/bnF7/3Bzff9sb3n/ +eXuB/3N2f/9ucXv/bnB3/3N1fP9ucXv/bnF7/3N1fP93eoP/bG95/25wd/9ucXv/am13/2ptd/9ucHf/ +bnB3/2xudf9wc33/cHJ5/25wd/9qbHP/dXd9/3Byef91eIH/am13/2psc/9ucXv/bG51/2psc/9qbHP/ +Zmlz/25xe/9maXP/bnF7/3N1fP9qbXf/bG51/3Byef9tb3P/c3V8/3l7gf9ucHf/c3Z//3N2f/9wc33/ +bnB3/3Byef9wcnn/c3Z//3Byef93eX//bG95/3Z4fP95e4H/bG51/3+Bh/91d33/bG51/2ptd/91d33/ +cHN9/3Bzff9sb3n/Z2p0/2xudf9wc33/bG51/3Byef9qbXf/cHJ5/3Byef9qbXf/dXiB/3Bzff9zdXz/ +bG95/2xudf9zdXz/cHJ5/3Byef9wcnn/dXd9/3Byef9ucHf/bnB3/2xvef9sb3n/am13/2dqdP9nanT/ +cHN9/2xudf9qbHP/c3Z//2xvef9nanT/bnF7/2ptd/9ucXv/Z2px/21vc/9sbnX/eHl9/3Bzff9zdn// +d3l//3Bzff9ucHf/bG95/25wd/9wc33/bG95/3Bzff9ucHf/cHN9/3N2f/9ucXv/bG51/3d5f/9wcnn/ +bW9z/21vc/9zdXz/bnB3/2xvef9sbnX/bG51/3V3ff9maXP/Zmlz/2Zpc/9dYGr/amxz/2ptd/9sb3n/ +Zmlz/2xudf9wcnn/bG51/25wd/9tb3P/am13/2xvef9qbXf/bnF7/2Rncf9wc33/bG51/3N1fP9zdXz/ +dnh8/2dqcf9zdXz/b3F1/3V3ff9sb3n/bG95/3V3ff9ucHf/dXiB/3Byef9wcnn/c3Z//25xe/9ucHf/ +c3V8/2ptd/9wc33/Z2p0/3V4gf9zdXz/am13/3t9g/91eIH/dXiB/3t9g/9zdXz/dXiB/3Byef9ucXv/ +c3V8/36Bif9zdn//dXiB/3N2f/95fIb/eXuB/3N1fP9ucHf/dXd9/2xvef9zdn//d3qD/3Bzff95e4H/ +bnF7/2xudf93eX//bG95/3N1fP93eX//e32D/29xdf92eHz/dnh8/3Byef9sbnX/dnh8/3N2f/9ucXv/ +c3V8/3V3ff9wc33/c3Z//3Byef9wcnn/eXyG/3Bzff9wc33/am13/3t9g/9wc33/Z2p0/25xe/91d33/ +bnF7/3N2f/9ucHf/bG51/25wd/9vcXX/bG51/3N1fP9nanT/Zmlz/2xvef9wc33/bG95/2ptd/9kZ3H/ +amxz/2psc/9ucHf/Z2px/25xe/9wc33/amxz/21vc/9ucHf/cHJ5/25wd/9zdn//d3qD/2xvef9wc33/ +bG95/3l7gf91eIH/c3Z//3Byef9wc33/d3qD/3V4gf95fIb/foGK/3V4gf9zdn//dXiB/3V4gf91eIH/ +c3Z//3V4gf9zdXz/eXuB/3N2f/9ucHf/bG51/3V3ff9zdXz/eXuB/2xudf9vcXX/dXd9/2xvef9sb3n/ +bG95/2xvef92eHz/bnF7/3d5f/97fYP/bnF7/2xvef9wc33/b3F1/25xe/93eoP/bG95/3Byef9wcnn/ +cHJ5/2xudf9ucHf/bW9z/3Byef9ucHf/dnh8/3Byef93eX//e36H/25xe/+Bg4r/d3l//25wd/9wcnn/ +c3V8/3Z4fP91d33/c3Z//2xvef9wcnn/c3Z//2xvef9zdn//bnF7/3V4gf9zdn//cHJ5/3+Bh/93eoP/ +eXuB/3N2f/9wc33/dXiB/3N2f/9zdn//e32D/3d6g/95e4H/dXiB/3N2f/91eIH/c3Z//2xvef9ucXv/ +bG95/3l7gf9wc33/c3Z//3l8hv9wc33/b3F1/3Bzff9sb3n/c3V8/2Zpc/9tb3P/cHJ5/3Z4fP92eHz/ +dXiB/3h5ff9zdXz/bG95/25wd/9vcXX/cHJ5/3Byef91eIH/c3V8/3Bzff9zdn//cHN9/2ptd/91eIH/ +c3Z//2xvef9wcnn/cHN9/2xvef9ucXv/bG95/2xvef93eX//bnB3/3Byef9zdXz/Zmhu/2psc/9qbXf/ +bnF7/2Zpc/9qbHP/am13/2Zobv9sbnX/Z2px/2Zpc/9nanT/bG51/2xudf9iZW7/dXd9/25wd/92eHz/ +c3V8/3V3ff9nanT/bnF7/3Byef90d4H/c3Z//3N2f/94eoD/cnR7/36Ahv90d4D/dHeA/3p8gv92eYL/ +c3Z+/3Z5gv9vcnz/eXuC/21wev91eIH/bG51/2Jlbv9vcnz/a211/2lrcv9xdHv/aWxz/29yfP9qbHP/ +aWx2/2Zpcv91d33/aWx2/2xveP9qbXf/d3l//3Byef9ucHf/b3F1/3V3ff9sbnX/bnF7/3N1fP9sbnX/ +dXd9/2xudf9sbnX/d3h9/3Byef9wcnj/dHd7/3h6gP9sbnX/cHN9/3N1fP9tb3b/bG51/3V3ff9zdXz/ +bnB3/3N1fP9sb3n/am13/2xudf9nanT/bG51/3Z4fP9sbnX/bnF7/2dqdP93eoP/bnF7/2Zpc/9sbnX/ +dnh8/2xudf91d33/b3F1/2xvef9ucXv/bnB3/29xdf9wcnn/bG51/2psc/9zdXz/dXd9/3Byef9zdXz/ +bG51/2xudf9qbXf/c3V8/2xvef9zdXz/dnh8/25wd/9ucHf/cHJ5/3Byef9ucXv/dXd9/3t+h/9sb3n/ +cHJ5/2ptd/93eX//c3Z//3Bzff9ucHf/bG95/25xe/9wc33/c3Z//3l8hv9zdn//cHN9/3Bzff9wc33/ +cHN9/3Byef9wcnn/bnB3/3N2f/9ucXv/cHN9/2dqdP91eIH/dXd9/3d5f/9sbnX/bG51/3Bzff9sb3n/ +am13/2xudf9ucHf/dXd9/3Byef9zdn//d3l//2xudf9vcXX/c3V8/29xdf9ucHf/eHl9/3Byef9ucXv/ +bnF7/2ptd/9nanT/bG95/2xudf9wcnn/bnB3/3V3ff9sbnX/dXd9/3l7gf9vcXX/gYSN/3d5f/9sb3n/ +cHJ5/3Z4fP91d33/dnh8/3Byef9maG7/bnB3/3Bzff9wcnn/dXiB/3Byef9wc33/c3Z//3N1fP9/gYf/ +bnF7/3l7gf9wc33/c3V8/3l8hv93eoP/cHN9/3d6g/9wc33/c3Z//25xe/9ucXv/cHN9/3Bzff9ucXv/ +cHN9/3Byef93eoP/cHN9/3Bzff93eoP/dXiB/3Bzff91eIH/dXiB/3V4gf9qbXf/cHN9/3Bzff95e4H/ +c3Z//3l7gf95e4H/d3qD/3Bzff9wc33/dXiB/3d6g/9zdn//d3qD/3N2f/91eIH/c3Z//3Byef9ucHf/ +d3l//3N2f/9sb3n/bG95/25xe/9sbnX/c3V8/2xudf9ucHf/d3l//2dqdP9zdn//c3Z//2Zpc/9vcXX/ +bnB3/2xvef9kZ3H/bG51/3N1fP9vcXX/bnB3/25wd/9zdn//cHN9/25xe/9wc33/Zmlz/3d5f/9sb3n/ +dHeA/3h6gf93eX//am13/3BzfP9sb3n/cnV+/3J0e/91d33/dXh9/29xdv94eoH/bXB3/25weP9xdH3/ +bnF7/25wd/9wcnr/aWx2/29ye/9laG//aWx1/3J0ff9rbnj/cnV+/21weP9sb3n/dnh//2xvef9ydHv/ +cXN6/2psdP9naXD/cXN5/2psdP9sbnX/bG95/3d6hP9tcHr/cHN9/2xvef9wc33/bG95/25xe/9ydX7/ +bXB6/3h6gP9vcXj/bG51/3Z3ff9ydHv/b3F4/3N1e/90dn3/bnB0/3N1e/90dn3/bnF6/25wd/92eHz/ +c3Z//3Byef9wcnn/c3V8/2xudf9zdXz/bnB3/2xudf94eX3/am13/3Bzff9maXP/c3Z//3Bzff9maXP/ +bG51/3N1fP9sbnX/dXd9/2xudf9ucHf/bnF7/25wd/9ucHf/cHN9/2xvef9sbnX/c3V8/3h5ff9wcnn/ +c3V8/21vc/9vcXX/bG51/3l7gf9wc33/d3l//3V4gf9wcnn/bnF7/3Bzff9ucXv/bG95/3h5ff93eX// +bW9z/2xudf9nanT/d3l//25xe/9sb3n/amxz/2psc/9qbXf/bG95/2xvef9zdXz/cHJ5/2xudf9sb3n/ +am13/2xudf9sbnX/am13/2dqdP9ucXv/bG95/2xudf9maXP/dXd9/25xe/95e4H/bG51/25wd/9zdXz/ +cHJ5/2xvef9qbXf/bG51/3Z4fP9ucHf/dXd9/3d5f/9sbnX/b3F1/3Bzff9tb3P/bnB3/3V3ff9ucXv/ +cHJ5/25xe/9sbnX/bW9z/2xvef9qbXf/amxz/2ptd/9zdXz/am13/3Z4fP91eIH/bG51/3+Bh/91d33/ +bW9z/2xudf9wc33/bnF7/3N1fP9wcnn/ZGdx/21vc/9zdXz/bW9z/3Z4fP9sbnX/cHJ5/25wd/9sbnX/ +eXuB/2ptd/91d33/bG51/2dqcf93eX//am13/2xvef9ucXv/am13/25xe/9qbHP/bG51/2ptd/9sb3n/ +cHJ5/25wd/9sbnX/dXd9/2xvef9ucHf/d3qD/3Bzff9ucXv/c3Z//25xe/9ucXv/Z2p0/2xvef9ucXv/ +eXuB/3V4gf93eoP/dnh8/3N1fP9sbnX/bW9z/2xudf9ucHf/bW9z/2xvef9sbnX/bG95/2xudf9maXP/ +YmVu/2xvef9nanT/Zmlz/2xudf9sb3n/am13/25xe/9qbHP/bG51/3V3ff9qbHP/bG95/3Bzff9maXP/ +am13/21vef9tcHr/amxz/2psc/9zdXz/bG51/2xudf9vcXX/c3V8/3V3ff9sb3n/bnF7/2dqdP91eIH/ +bG95/3R2e/92eHz/dHZ9/2ptdv9ucHn/bG93/3Bze/9ucXn/c3Z+/3Fzev9sbnb/dnmC/3Byev9ydX7/ +dnh+/3N1fv91d33/d3l//25wef91eID/a212/3Bzff9vcnz/bW94/3V3f/9xdHz/bnF7/3V3gP9wcnv/ +cXN6/3R2fP9tcHr/bnB5/3N1fv9tb3j/bnB5/3J0ef93eoH/bW94/3V3ff9sbnX/cHJ5/25wd/9wcnn/ +dHZ8/21wef93eX7/bnF5/2tueP9xdHz/b3J6/21vdv9ucXn/c3V9/2xvdv9tcHj/bnF7/29yev9sb3n/ +dXd9/3V3ff9ucXv/dXiB/3V4gf9sb3n/cHN9/2xvef9qbXf/dXd9/3N1fP91d33/Zmhu/3V3ff9ucXv/ +ZGdx/2psc/9wc33/bG51/25wd/9nanH/Z2p0/2psc/9maG7/Zmhu/2xvef9nanT/Zmlz/3Byef92eHz/ +c3V8/3Byef9sb3n/bnB3/25wd/95fIb/cHN9/3l7gf91eIH/cHJ5/3N2f/91eIH/eXyG/3V4gf9+gIb/ +foGK/3N1fP9wc33/cHN9/36Biv97fYP/c3Z//3Bzff9zdn//c3Z//3N2f/9zdXz/dnh8/25wd/9ucHf/ +cHJ5/21vc/9vcXX/b3F1/2xvef9sb3n/cHN9/3Bzff9ucHf/Z2p0/3d6g/91eIH/foGK/2ptd/9ucXv/ +dnh8/3V3ff9sb3n/bG95/3Byef91eIH/bnF7/3V4gf93eoP/bG95/3Bzff91eIH/bnF7/25xe/94eX3/ +cHJ5/3N2f/9wc33/cHJ5/3Byef9wc33/bnB3/3Byef9ucXv/eXuB/25wd/91eIH/dXiB/2xvef9/gYf/ +eHl9/29xdf9sbnX/cHN9/25xe/91d33/bnF7/2BjbP9qbHP/am13/2Zobv9qbXf/Zmhu/2Zpc/9nanH/ +Z2px/3V3ff9qbHP/bG95/2xudf9nanH/cHJ5/2xvef9sb3n/bG95/2xudf9ucHf/b3F1/29xdf9ucXv/ +bnF7/3V4gf9ucXv/bnB3/25xe/9wc33/cHJ5/3l7gf9wc33/c3Z//3V4gf9zdn//bnF7/2xvef9zdn// +d3qD/3t9g/93eoP/eXyG/3l7gf93eoP/dXiB/3N1fP9wcnn/c3Z//3Bzff91eIH/cHN9/3l7gf9wc33/ +c3V8/25xe/97fYP/eXuB/3Bzff9wc33/cHN9/25xe/9sb3n/am13/29xdf92eHz/am13/25xe/9zdn// +Zmlz/2xvef9vcnz/b3J7/2dqdP9qbXf/c3Z//25xe/9sb3n/bnF7/3V4gf91eIH/cHN9/3N2f/9sb3n/ +eXuB/29ye/93eYD/eXuB/3l7gf9wc3v/dHd+/3V3fv92eH//c3aA/3t9hP90dn3/bnF6/3V3gP9vcnz/ +dnmD/3d6hP90d3z/d3mA/3x9gv91eH//e3yA/25xe/91d4D/dHd//29yfP92eYL/cnV+/29yef93eoL/ +dXiB/3F0ff93eX//bG94/2xueP9vcXj/bG94/21wef9ydHv/dnh8/29xef9wcnn/bG51/3N1fP9qbHP/ +b3F3/3J0e/9rbnj/eHp//3Byef9sb3n/dXiB/3V4gf9ydHv/b3F5/29yfP9ucHj/cXN6/29yef9ydX3/ +bnB3/3d5f/91eIH/bnF7/3V3ff91d33/bnB3/3N1fP9ucHf/bG51/3V3ff9zdXz/dnh8/2dqcf92eHz/ +dXd9/2dqdP9sb3n/dXd9/21vc/91d33/am13/2xudf9tb3P/bW9z/2xudf9wcnn/bG51/2psc/9zdXz/ +c3V8/3N1fP9wcnn/bG51/2xudf9vcXX/eXyG/25xe/91eIH/bnF7/2xvef9ucXv/bnF7/25xe/9wcnn/ +dXd9/3V4gf9sb3n/cHJ5/2psc/91d33/c3V8/2xudf9ucHf/bG95/2ptd/94eX3/bnB3/3V3ff9ucHf/ +cHJ5/3Byef9qbXf/am13/2xudf9qbHP/bG51/2xvef9ucXv/bG51/2dqdP91d33/bG95/3V4gf9maXP/ +bG95/3V3ff9zdXz/bG51/2psc/9sbnX/bnF7/2ptd/9wc33/d3l//2xudf9wcnn/dXd9/25wd/9ucXv/ +dXd9/3V4gf91eIH/c3Z//3Byef9sb3n/bnB3/25wd/9sbnX/bG51/3V3ff9ucHf/d3qD/3V4gf9ucHf/ +f4GH/3V4gf9tb3P/b3F1/3V3ff9ucXv/dXiB/3Bzff9nanT/bG95/25xe/9ucHf/dXd9/21vc/91d33/ +bnB3/25wd/93eoP/bnB3/3N1fP9ucHf/bW9z/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/25wd/9ucHf/ +bnB3/29xdf91d33/bnB3/21vc/9sbnX/am13/2psc/9wc33/bG95/2ptd/9ucXv/Z2p0/2psc/9iZW7/ +Zmlz/2ptd/9nanT/Zmhu/2ptd/9maXP/Zmlz/2dqcf9maG7/ZGdx/2Rncf9kZ3H/Zmlz/2Jlbv9nanT/ +YmVu/2BjbP9kZ3H/bG95/2xvef9gY2z/Zmhu/2RmbP9nanT/ZGdx/11gav9kZ3H/Z2p0/2Zpc/9nanT/ +am13/11gav9maXP/bG95/2xveP9oa3T/Zmlz/2ptd/9qbXf/bG51/21vdv9wc3z/bG95/2ptd/9qbXf/ +Zmlz/3N1fP9sbnb/cXN5/3F0ff90d3//bnB1/25wd/9vcXn/bXB6/25weP9wc33/bW92/2psc/9vcnv/ +am13/29yfP9ucXv/bG51/25wd/9ydHv/bnF6/3d6gv9ydHv/c3Z//3V4gf91eIH/e32D/3V4gf90dn3/ +e32D/3d6g/9xdH7/e32G/3d5ff91eIH/dnh9/3V4gf90dn3/eXuA/3x/h/94eoH/enyC/3l7gf99foH/ +c3Z//3N2f/94eoD/cXN5/3p7gP9xc3f/bG95/3V3ff91d33/bW92/21vdv9tb3f/aGt1/2ttdP9oa3X/ +bG95/2xvef91d33/c3Z//3Byef9wc33/dXd9/2ptd/9wc33/bG51/2xudf91d33/cHJ5/3Z4fP9nanH/ +dnh8/3N2f/9sbnX/bW9z/3N1fP9ucHf/d3l//25wd/9ucHf/b3F1/21vc/9sbnX/c3V8/21vc/9qbXf/ +cHN9/3V3ff9zdXz/c3V8/21vc/9sbnX/bG51/3N2f/9qbXf/bnF7/2dqdP9maXP/Z2px/2dqcf9maXP/ +ZGdx/2xvef9wcnn/amxz/2psc/9maXP/c3V8/25xe/9sbnX/am13/2psc/9sbnX/c3V8/2xudf9sb3n/ +bG51/2ptd/9qbXf/am13/2xvef9sbnX/bG51/2xudf9ucXv/cHN9/2ptd/9ucHf/d3l//25wd/93eX// +amxz/25wd/92eHz/dXd9/2xudf9qbXf/bG51/3V3ff9sb3n/bG95/3d5f/9qbXf/bG95/3Bzff9sbnX/ +cHJ5/3V3ff9zdn//c3Z//3Bzff9ucHf/bG95/25wd/9sb3n/bnB3/2xvef91d33/bnB3/3l8hv93eX// +bW9z/35/g/93eX//bnB3/2xudf9zdXz/bnB3/3V3ff9wcnn/Zmlz/29xdf9zdXz/bnB3/3Z4fP9tb3P/ +c3V8/3N1fP9vcXX/e32D/25wd/9wcnn/bnF7/2xudf9zdXz/am13/2xvef9qbXf/am13/2ptd/9tb3P/ +bG51/2xudf9vcXX/c3Z//25xe/9ucHf/bG95/2xvef9ucHf/dnh8/3Byef9ucHf/cHJ5/25wd/9ucHf/ +amxz/3Byef9zdn//dXiB/3Bzff97fYP/c3Z//3V4gf9sb3n/bnB3/29xdf9ucHf/bG51/3Byef9qbXf/ +c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/ZGdx/2ptd/9sbnX/c3V8/2xudf9kZ3H/bG51/25xe/9nanT/ +bG95/2xvef9iZW7/am13/25xef9vcnr/am13/2dqdP9ucHf/bG51/21vc/9tb3T/cnV8/25xev9qbXf/ +bnB3/25wd/93eH3/bW92/3Byef9vcXr/bG95/2dqc/9naXP/Zmlz/2Nmb/9nanH/aGp0/2Vocf9maXP/ +bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/bW9z/2ptd/9ucXv/am13/25xe/9sb3n/ +bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/bnB3/29xef91d33/bG50/2xveP9qbXf/ +cHN9/2psc/9sbnb/bG95/2xud/92eH7/bG95/2xudf9zdXz/bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/ +bnB3/3d5f/9sbnX/dXd9/3Byef9ucHf/c3V8/3V3ff9ucHf/dXd9/2xvef9qbXf/c3Z//25xe/91d33/ +am13/3l7gf93eX//cHJ5/3N1fP91eIH/cHJ5/3t+h/9wcnn/bG95/29xdf9ucHf/bG51/3V3ff9tb3P/ +bG51/3V3ff92eHz/c3V8/3Byef9sbnX/amxz/2xudf95e4H/bG51/3Z4fP9ucHf/bG51/3Byef9ucHf/ +cHJ5/25wd/91d33/eHl9/29xdf9sb3n/bG95/3V4gf93eX//bnF7/3d6g/9zdn//c3Z//3l7gf9zdn// +dXiB/3V3ff95e4H/e32D/3Z4fP95e4H/dXd9/3N2f/91eIH/dXiB/3d6g/9zdXz/bnF7/36Ahv93eoP/ +foGK/3V3ff9zdn//d3qD/3t9g/9wc33/bnB3/2xvef9zdXz/cHN9/3Bzff91eIH/bnB3/25wd/9zdXz/ +bG51/2xudf9zdXz/dXd9/3Bzff91eIH/cHJ5/25xe/9wcnn/bnB3/2xvef9ucHf/dnh8/25wd/95e4H/ +d3l//3Byef9+f4P/dXd9/25wd/9sbnX/c3V8/2xudf91d33/bG95/2Rncf9qbHP/am13/2dqcf9ucXv/ +am13/2ptd/9qbXf/Z2px/3N2f/9sbnX/bnF7/25xe/9sbnX/c3V8/2xvef9sb3n/bG51/29xdf9sb3n/ +bnB3/2xvef9ucXv/bnB3/3N2f/9sb3n/bnB3/25wd/9wcnn/b3F1/3Z4fP9ucXv/bG95/25xe/9wc33/ +bnF7/2xvef9zdn//c3Z//3V4gf9wc33/eXuB/3N2f/9zdn//bnB3/25wd/9tb3P/bnB3/25wd/9zdXz/ +bG51/3N1fP9qbXf/Z2px/25wd/92eHz/bnF7/2dqdP9sbnX/bnB3/3Bzff9ucHf/Z2px/21vc/9sb3n/ +Z2p0/2ptd/9sb3n/ZGZs/2xudf9ucXv/b3J6/2ptd/9qbXf/bG95/2xvef9qbHP/bW9z/3J1fP9wcnz/ +am13/25wd/9ucHf/dXd8/2xudf9vcnj/bnF7/29yfP9nanT/ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/ +am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/ +bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/bnB3/2xudf9ydHv/dnh+/25wd/9vcXn/ +bnB3/3Z4fP9sbnX/bnB3/29xef9tb3X/dnh9/3Byef9vcXX/dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/ +bG51/2xudf9wc33/b3F1/3Z4fP91d33/bG51/25xe/9wc33/bG51/3V3ff9sbnX/amxz/3N1fP9ucHf/ +c3V8/2Zobv9wc33/cHN9/2ptd/9vcXX/c3V8/29xdf92eHz/bW9z/2ptd/9sbnX/bG95/2dqdP9wc33/ +bG51/2xudf9zdXz/dXd9/3Bzff9wcnn/bG51/21vc/9qbHP/c3Z//2xudf9zdXz/bnB3/2xudf9zdXz/ +bW9z/2ptd/9tb3P/bnF7/3Z4fP9ucHf/bnB3/2xvef91eIH/dXd9/2xvef9zdn//bnB3/2xvef91d33/ +bG95/25wd/9ucHf/c3Z//3N2f/9ucXv/cHJ5/25xe/9ucHf/bnF7/3N2f/9zdn//bnB3/2dqdP91eIH/ +bnF7/3d5f/9sb3n/b3F1/3Bzff93eX//b3F1/25wd/9qbXf/c3V8/3Byef9ucHf/eHl9/25wd/9wcnn/ +cHJ5/2xvef9wcnn/c3Z//3d5f/9qbHP/Z2p0/2dqcf9sbnX/Z2px/2dqdP9nanT/bG51/3N1fP9qbXf/ +dXiB/3V3ff9sb3n/e32D/3V3ff9qbXf/am13/3Bzff9qbXf/dnh8/2ptd/9kZ3H/bG51/3Z4fP9ucHf/ +dnh8/3Byef9wc33/dXiB/25xe/97fof/bnF7/3Bzff9wc33/bnF7/3d5f/9ucXv/cHJ5/25wd/9wcnn/ +bnF7/25wd/9ucHf/cHN9/25xe/9zdn//cHN9/3N1fP9ucXv/bG95/25wd/93eX//bG95/3Byef9qbXf/ +bG51/25xe/9tb3P/dXd9/25wd/9ucXv/bnB3/3h5ff9wcnn/dXd9/2xudf9qbXf/bG51/2ptd/9qbHP/ +bG95/2Rncf9ucXv/ZGdx/2Jlbv9kZ3H/c3V8/25xe/9qbXf/bG51/25wd/9zdXz/c3V8/2Zobv9tb3P/ +bnB3/2xudf9ucHf/bG95/2RmbP9qbXf/bW93/25xef9rbnf/am13/25wd/9zdXz/bnB3/25wd/91d3z/ +dXd7/25wd/9tb3P/bW9z/3N1e/9sb3n/cnR6/3J0e/9xc3r/bG51/2psc/9ucHf/bG95/3Bzff91d33/ +bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn//bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/ +dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/bnB3/2xvef9tb3n/dHZ8/3h6g/9tb3j/ +cHN8/25wd/94eX3/Z2px/25weP9sbnb/cHJ5/3h6gf91eIH/cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/ +cHJ5/25xe/9ucHf/d3qD/3Byef91d33/cHN9/3Byef9wc33/dXd9/2xvef91d33/cHJ5/2dqdP93eX// +bnF7/3h5ff9nanH/dXd9/3V3ff9wcnn/b3F1/3N1fP9ucHf/d3l//21vc/9sbnX/bG51/25wd/9nanT/ +bnF7/2xudf9qbHP/dXd9/3V3ff9wc33/bnF7/2xudf9qbXf/am13/3V3ff9wcnn/dXd9/25wd/9qbXf/ +cHN9/25wd/9ucHf/bW9z/25xe/95e4H/bnB3/25xe/9ucHf/eXuB/3V4gf9ucXv/dXd9/25wd/9ucHf/ +c3Z//25wd/9ucHf/bG95/3Byef9ucXv/Z2px/25wd/9vcXX/b3F1/29xdf91d33/bnF7/2ptd/9kZmz/ +bnF7/2xudf91d33/Z2p0/2psc/9ucXv/c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/bG51/3N1fP9maXP/ +bnF7/3Bzff9sbnX/amxz/2xvef9wc33/bnB3/3Byef9sb3n/c3Z//2xvef9sb3n/bG95/2xvef9zdn// +b3F1/3l7gf93eX//c3V8/36Ahv93eX//bG95/2xvef95e4H/bnF7/3V4gf9ucHf/Z2px/25xe/93eX// +bnF7/3d5f/9ucXv/c3V8/3Byef9tb3P/eXuB/2xudf9ucHf/cHJ5/25wd/9zdXz/bnB3/25wd/9sbnX/ +am13/2psc/9nanT/amxz/2ptd/9sbnX/c3V8/21vc/9qbHP/am13/2xvef9qbXf/d3l//2xudf9sb3n/ +am13/2ptd/9wc33/am13/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9vcXX/b3F1/21vc/9tb3P/ +am13/25xe/9maXP/bG95/2Zpc/9kZ3H/Z2p0/3N1fP9sb3n/Zmlz/2xvef9qbXf/c3V8/2xvef9maXP/ +bG51/25xe/9vcXX/bnB3/29xdf9nanH/bW9z/2ttdP9sb3n/bG92/2xudf9tb3P/c3V8/2xudf9ucHf/ +dHZ9/29xef9tb3P/bG51/2psc/9zdXz/a254/29xev9ydHv/b3J7/21vc/9nanH/bG51/2dqdP9qbXf/ +bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/am13/2psc/9sb3n/bG51/2xvef9wc33/ +am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/c3Z//25wd/9qbXf/Z2p0/29yfP94eoP/ +b3F4/3V3ff9ucHf/dXd9/2Zpc/9sb3n/am13/2xud/90dn3/cHJ6/2xudf94eX3/cHJ5/2xudf9qbXf/ +am13/2xudf9sbnX/am13/3N1fP9sbnX/dXd9/25wd/9tb3P/cHJ5/25xe/9qbHP/c3V8/21vc/9qbHP/ +dnh8/3Bzff91eIH/Z2px/25xe/9zdn//bnB3/25wd/9wc33/bG95/3d5f/9vcXX/bnF7/3N1fP9zdn// +am13/3N2f/9zdn//bnB3/3d5f/93eoP/dXiB/3Bzff9wc33/bG95/2xvef91eIH/cHJ5/3N2f/9ucXv/ +b3F1/3V3ff9sb3n/cHJ5/29xdf9wcnn/d3l//25wd/9vcXX/bG51/3V4gf91eIH/cHJ5/3V4gf9wcnn/ +cHN9/3d5f/9ucHf/cHJ5/25wd/9sb3n/cHJ5/2psc/9ucHf/cHJ5/29xdf9sbnX/dnh8/25wd/9sbnX/ +Zmhu/25wd/9tb3P/dXd9/2ptd/9sbnX/bnF7/2xvef9kZ3H/Z2p0/2Zpc/9sb3n/Z2p0/2dqdP9wc33/ +Z2p0/3Bzff9wc33/am13/2xudf9ucXv/c3V8/25xe/9zdXz/bG51/3Byef9ucHf/bnB3/25wd/9vcXX/ +dXd9/2xudf94eX3/dXd9/3Byef93eoP/c3V8/2xudf9sbnX/eHl9/3Byef91d33/amxz/2Jkav9sbnX/ +bnF7/2psc/9wcnn/Z2px/2Zpc/9maXP/ZGdx/3Bzff9qbHP/amxz/2xvef9qbXf/am13/2ptd/9qbXf/ +bG51/2psc/9sbnX/bG51/2dqdP9qbXf/am13/25xe/9qbHP/bG51/2ptd/9wc33/am13/3N2f/9qbXf/ +cHN9/2ptd/9ucHf/dXd9/25wd/91d33/bnB3/3Byef9wcnn/cHJ5/21vc/9ucXv/bG51/25wd/9qbXf/ +am13/2ptd/9wc33/Z2p0/25xe/9qbHP/Z2px/2xvef93eX//c3Z//2xvef9ucXv/bnB3/3Z4fP9wcnn/ +amxz/2xudf9zdn//bnB3/2xvef9ucXv/Zmlz/25xe/9rbXT/b3J6/29xdv9ucHf/bnB3/3Bzff9sb3n/ +bnB3/3Z4fv9ucXr/b3F1/25wd/9tb3P/dnh+/2xvdv9tcHr/c3V7/29yfP9qbHP/YmVu/2xudf9qbXf/ +bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/cHJ5/25xe/9wcnn/d3l//29xdf91eIH/ +dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/cHN9/3V4gf9ucXv/bG95/2ptd/9wc3z/ +dnh//3Byef91eIH/c3Z//3t+h/9wc33/d3mC/3Z4f/9ydHn/dHZ+/3BzfP9sbnb/cHN9/3Byef9tb3P/ +bG95/2xudf9vcXX/bnB3/2xvef9zdn//d3l//3l7gf93eoP/cHN9/3d6g/93eoP/bnB3/3d5f/9zdXz/ +cHN9/3t9g/9zdn//dXiB/2Zobv9ucHf/dXd9/2xvef9ucHf/c3Z//2xvef93eX//b3F1/25wd/9tb3P/ +cHJ5/2dqcf9ucXv/c3V8/2xvef91d33/eXyG/3d6g/91eIH/c3Z//25wd/9qbXf/eXuB/3Bzff9zdn// +dXiB/3Bzff95fIb/dXd9/3l7gf91d33/eXuB/3+Bh/9zdn//dXiB/3Z4fP+Bg4r/f4GH/3d5f/99foH/ +dXd9/3d5f/9+f4P/eHl9/3h5ff93eX//d3l//3l8hv9ucXv/dXiB/3d6g/9zdXz/c3V8/3t9g/93eoP/ +c3Z//2xvef9zdn//dXiB/3l8hv9wc33/cHN9/25xe/93eX//bnB3/25wd/9sbnX/cHN9/25wd/9sb3n/ +cHN9/2xudf91d33/dXd9/3N1fP9vcXX/cHJ5/3h5ff9wcnn/dXd9/25xe/9zdn//cHN9/25wd/9wcnn/ +c3V8/3V4gf9zdn//e36H/3t+h/95fIb/f4GH/3t+h/9wc33/dXd9/3+Bh/97fYP/foGK/3d6g/9ucXv/ +dXiB/3l8hv9zdXz/eXuB/3Bzff9ucXv/bG95/25wd/95fIb/bnF7/25xe/9wc33/bnF7/3Bzff9wcnn/ +bnF7/3N1fP9wcnn/bnF7/2xvef9ucHf/bW9z/25wd/9zdXz/bnB3/2xvef9ucXv/d3l//25xe/93eoP/ +bnF7/3N2f/9wc33/bG95/3V3ff9sb3n/dnh8/25wd/9zdXz/bnB3/25xe/9ucHf/cHN9/2xudf9sbnX/ +bW9z/2ptd/9tb3P/cHN9/2ptd/9ucHf/Z2p0/2Zpc/9nanH/dXd9/3Byef9nanH/bG95/2xudf9wc33/ +am13/2dqdP9sbnX/bnF7/2ptd/9sb3n/bG95/2BjbP9nanT/amxz/2xvef9rbXX/bG51/2dqcf9nanT/ +ZGdx/2Zobv9qbXf/Zmlz/2Jlbv9nanH/ZGdx/25wd/9sb3j/bW92/3N1ef9tb3b/bnB3/2dqdP9ucHf/ +bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn//am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/ +c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/c3V8/2psc/9wcnn/am13/2dqdP9qbHP/ +bnB3/3R3fv9rbnX/bnB3/21vdf91eIH/Z2p0/2xvef9sb3n/bG92/3R2ff9wc33/bG95/3Bzff9zdn// +cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/2xudf9zdn//c3Z//2xvef9zdXz/dXd9/2xvef95e4H/ +cHJ5/25wd/91eIH/bnF7/3d6g/9maG7/bG95/3V3ff9sb3n/bnF7/3d6g/9wc33/eXuB/25wd/9ucHf/ +bW9z/3N1fP9qbHP/bnF7/2xvef9nanT/c3V8/3V3ff9qbXf/bG51/2xvef9qbHP/ZGdx/3N1fP9qbXf/ +cHJ5/25wd/9tb3P/cHJ5/2xudf9qbXf/amxz/2xvef93eX//Z2px/21vc/9sbnX/d3l//3N1fP9ucHf/ +dnh8/2xvef9ucHf/eHl9/29xdf9qbXf/amxz/25wd/9wcnn/bnB3/29xdf9tb3P/am13/2xudf9zdXz/ +bnF7/2ptd/9nanH/cHN9/2psc/9wc33/bG51/2xudf9sb3n/c3V8/2Rncf9nanH/YmVu/25xe/9nanT/ +bG51/3Bzff9qbXf/bG95/3Bzff9sb3n/bG51/25xe/93eX//cHN9/3d5f/9ucXv/c3Z//3Bzff9ucHf/ +bnB3/2xvef91d33/b3F1/3Z4fP94eX3/c3V8/3l7gf91d33/bG51/2dqdP93eX//bnB3/3l7gf9wcnn/ +Z2px/29xdf94eX3/bnB3/3l7gf9ucHf/bG95/3Bzff9ucXv/d3qD/3N2f/93eoP/e32D/3d5f/9+f4P/ +d3l//3d5f/97fYP/ent//3t+h/95e4H/eXuB/3l7gf97fYP/e32D/3V4gf93eX//fX6B/3+Bh/93eX// +f4KM/3d6g/93eoP/cHN9/2xvef91d33/bnB3/3V3ff9qbXf/bG95/2ptd/9ucXv/amxz/2xvef9qbHP/ +amxz/2dqcf9nanH/Zmhu/2dqdP9nanH/bG51/2Rncf9dYGr/XWBq/2xvef9nanT/YGNs/2Zpc/9sb3n/ +bnF7/25xe/9qbXf/bG51/2xudf9ucHf/dXd9/3V3ff9maG7/bG51/3N1fP90dn7/cXN5/25wd/9vcXX/ +bnF7/2xvef9vcXX/dXd9/25xe/9qbXf/bG95/25wd/93eH3/c3V8/3N1e/93eX//c3Z//25xe/9nanT/ +bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/ +bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/ +bG51/25xe/90d37/cHN6/3V3gP9wc33/foGK/3N1fP91eIH/cXR9/21wev9ydX3/cHN8/2ptd/9sb3n/ +bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9zdn//dXiB/3l7gf9wc33/c3Z//3d5f/9qbHP/ +d3l//29xdf9qbHP/c3V8/29xdf93eX//Z2px/25wd/94eX3/bnB3/3Byef91d33/cHJ5/3d5f/9sb3n/ +bG95/25wd/9ucHf/Z2p0/3Bzff9sb3n/bW9z/3N1fP91d33/bG95/2ptd/9ucXv/bW9z/2Zpc/91d33/ +bG95/3Bzff9qbXf/bG51/2xvef9qbHP/bG51/2psc/9qbXf/dXd9/2Rncf9qbHP/Zmlz/3Bzff9zdXz/ +Zmlz/3V3ff9qbHP/amxz/3V3ff9sbnX/am13/2dqdP9sb3n/bG95/2ptd/9qbXf/bW9z/29xdf9ucHf/ +eXuB/3Bzff9sb3n/am13/3Bzff9ucHf/eHl9/25xe/9wc33/d3qD/3t9g/9ucHf/bnB3/2ptd/93eoP/ +c3Z//3N1fP95e4H/c3V8/3N2f/91eIH/eXuB/3N1fP9zdn//d3qD/2ptd/9wc33/bG51/2ptd/9nanT/ +Zmlz/2Zpc/9iZW7/bG95/2psc/9wc33/dXd9/2xvef93eoP/bnF7/2ptd/9sbnX/dXd9/2ptd/95e4H/ +bnF7/2dqdP9sb3n/eHl9/29xdf93eX//bnB3/25xe/9ucXv/bnB3/3l7gf9ucXv/c3Z//3V4gf9zdXz/ +dXiB/3Bzff9wcnn/bnB3/3Byef91eIH/cHJ5/25wd/9sb3n/bG95/3Bzff9ucHf/bW9z/3V3ff94eX3/ +cHJ5/3l7gf9wcnn/bG95/25xe/9qbHP/c3V8/2ptd/9wc33/bW9z/3Byef9ucHf/c3V8/29xdf91d33/ +bG95/25xe/9ucHf/bG95/3Byef9wc33/bnB3/25xe/9zdXz/bG95/3N2f/97fof/e32D/25xe/93eoP/ +eXyG/3V4gf93eoP/cHJ5/25xe/9zdXz/c3V8/3Bzff9zdn//ZGdx/25wd/9tb3T/cXN6/3Fzev9ucXr/ +bnB3/2xvef9sb3n/b3F1/3d5f/9ucHf/bW9z/25wd/9ucHf/d3l//3J0ff9xdHv/cnR7/29xeP9ucHf/ +Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/ +bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/ +bG51/2psc/9vcXn/c3V7/25wdf9xc3r/bW9z/3d5f/9qbXf/am13/2ttdP9oa3X/c3Z9/3V3ff9sb3n/ +bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/am13/2xvef9sb3n/Z2px/2Zpc/9qbXf/ +XWBq/3Byef9maXP/XWBq/2xvef9maG7/c3V8/2Jlbv9qbXf/dXd9/2dqdP9ucXv/c3V8/2xudf9zdXz/ +bG51/2xudf9vcXX/cHJ5/29xdf9zdn//c3Z//3Bzff91eIH/eXyG/3V4gf9wc33/cHN9/25wd/9qbXf/ +d3l//25xe/9wcnn/bnB3/21vc/9zdXz/bG51/2ptd/9qbHP/bG95/3V3ff9iZW7/bG51/2Rncf9sb3n/ +cHJ5/2Jlbv9qbXf/Z2px/2Zobv9ucHf/Zmlz/2Rncf9kZ3H/Z2p0/2xudf9qbHP/bG51/2dqdP9sbnX/ +am13/3V3ff9ucXv/bnB3/2xvef9zdn//bG95/3h5ff9ucHf/cHJ5/3V3ff94eX3/bG51/2xudf9nanT/ +cHN9/25wd/9tb3P/bnF7/2ptd/9sb3n/bnF7/3Bzff9qbXf/bnF7/3d5f/9ucHf/c3Z//25wd/9ucXv/ +bnB3/2xvef9ucHf/am13/3d6g/9zdXz/eXuB/3t9g/91eIH/eXyG/3N2f/9ucHf/bG95/3l7gf9wcnn/ +d3qD/25xe/9nanT/bnB3/3l7gf9wcnn/eXyG/3Byef9ucXv/cHN9/25wd/93eoP/bnB3/25wd/9wc33/ +bnB3/3Z4fP9vcXX/bnB3/2xvef9ucHf/cHN9/2xvef9sb3n/bnB3/25wd/9zdXz/b3F1/29xdf91d33/ +dXd9/25wd/95e4H/cHJ5/2xvef9ucXv/Z2p0/3N1fP9qbXf/bG95/2psc/9sb3n/bG51/3Bzff9qbHP/ +cHN9/2ptd/9sb3n/amxz/2dqcf9qbHP/Z2p0/2Zobv9nanH/Z2px/2Rncf9maXP/c3V8/25xe/9maG7/ +c3V8/25wd/9sbnX/dnh8/2ptd/9sb3n/bnB3/25wd/9zdXz/dXd9/2dqcf9wcnn/bW9z/29xeP9sb3n/ +bXB6/2xvef9sb3n/bnB3/3Byef93eX//cHJ5/2xudf9ucHf/am13/3N1fP9sb3n/cXN6/3N1ff9vcXv/ +c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/ +cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/ +cHJ5/2xudf9ucHf/b3F4/3N1ev9pbHP/a253/2Vocv9wcnn/ZGdx/2Vocv9laHL/YmVv/3J0fP9zdoD/ +am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/c3V8/2xvef9wc33/c3V8/21vc/91d33/ +dXd9/2psc/91eIH/bnB3/2Zobv91d33/bnB3/3d5f/9maXP/cHJ5/3h5ff9sbnX/c3V8/3Z4fP9sb3n/ +eHl9/25wd/9tb3P/bW9z/3Byef9qbHP/cHJ5/25wd/9sbnX/bG95/3N1fP9ucXv/bG95/2ptd/9sbnX/ +Z2p0/3d5f/9qbXf/cHJ5/3Byef9ucHf/c3V8/2ptd/9wcnn/b3F1/25wd/92eHz/Z2px/29xdf9sbnX/ +cHJ5/3Z4fP9sbnX/dXiB/25xe/9zdn//e36H/3Byef9wc33/c3V8/25xe/9ucXv/cHJ5/25xe/9sb3n/ +bnB3/2xvef93eX//c3V8/25xe/9wcnn/dXiB/2xvef93eX//bnB3/25xe/9ucXv/d3qD/25wd/9qbXf/ +am13/3N2f/9ucHf/bnB3/3Bzff9sb3n/c3Z//3N2f/93eX//bG95/3N1fP91eIH/bnF7/3V4gf9ucXv/ +cHN9/25xe/9wcnn/cHJ5/2ptd/9zdn//bnB3/3N2f/92eHz/cHN9/3t9g/9wcnn/bnB3/25wd/94eX3/ +bnB3/3d5f/9wcnn/Zmhu/25wd/92eHz/bnB3/3l8hv9wcnn/cHN9/3Bzff9zdXz/d3qD/3N2f/91eIH/ +dXiB/25wd/94eX3/bnB3/29xdf9sbnX/bnB3/3Byef9vcXX/bG51/21vc/9sbnX/cHJ5/2xudf9tb3P/ +cHN9/3Bzff9sbnX/bnB3/2ptd/9qbXf/bG95/2Rncf9qbXf/ZGdx/2xvef9qbXf/cHN9/2ptd/91d33/ +am13/3N1fP9ucXv/cHJ5/25wd/9ucHf/cHJ5/25xe/9qbXf/bnB3/25wd/9sb3n/bnB3/3V3ff91d33/ +Z2px/3N1fP9ucXv/bG95/3V4gf9wcnn/bnF7/2ptd/9ucXv/cHN9/3N2f/9nanT/cHN9/2hrcv9qbXf/ +bG52/3Fzev9sbnX/bnB3/21vc/9tb3P/eHqA/2xudf9sbnX/bnB3/25wd/92eHz/bXB6/3Byef9ydHr/ +cXN5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/cHN9/3Byef9wc33/c3Z//25xe/9ucHf/ +bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn//d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/ +d3qD/3d6g/9wc33/c3V8/3N1fP93eoP/b3J6/3J0fP9rbnj/d3l//25wd/9wcnn/bW90/2xudf90dn3/ +dHd//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/cHJ5/25xe/9ucXv/c3Z//3h5ff9ucHf/ +c3V8/3N1fP9qbXf/dXiB/3Byef9nanH/cHJ5/21vc/94eX3/Zmhu/25wd/94eX3/bG51/3N1fP91d33/ +am13/3d5f/9sbnX/bG51/2xudf9wcnn/bG51/3N1fP9wcnn/cHJ5/3Byef94eX3/c3V8/2xvef9sb3n/ +bW9z/2Zobv91d33/cHJ5/2xudf9ucHf/am13/3Byef9nanT/am13/2xudf9wcnn/eHl9/2psc/9tb3P/ +amxz/2xvef91d33/am13/3d5f/9qbXf/am13/3d5f/9sbnX/Z2p0/2xudf9ucHf/bG51/21vc/9nanT/ +Z2p0/2xudf9tb3P/dnh8/3Byef9ucHf/bW9z/25xe/9tb3P/c3V8/2xudf9ucHf/bnB3/3d6g/9ucHf/ +bG51/25wd/9zdn//bnB3/25wd/9wc33/bnF7/3N1fP91d33/d3l//3V4gf9zdn//eXuB/3N2f/93eoP/ +c3Z//3N2f/9sb3n/bnB3/25wd/9nanT/c3V8/21vc/9zdXz/c3V8/2xvef93eoP/bnF7/2ptd/9sbnX/ +c3V8/2dqdP91d33/Z2p0/11gav9kZ3H/bG95/2Zobv9wcnn/Zmhu/2ptd/9nanT/Z2px/3Byef9qbXf/ +am13/25xe/9sbnX/bnF7/2ptd/9qbXf/Zmlz/2xudf9wc33/bnB3/2xvef9vcXX/b3F1/3N1fP9ucHf/ +b3F1/3V3ff9ucHf/am13/3V3ff9wcnn/bG51/25xe/9qbXf/am13/2Zpc/9sb3n/bG95/25xe/9qbXf/ +cHN9/2xvef9wc33/bG95/2ptd/9nanH/amxz/2psc/9qbHP/Zmlz/2psc/9sbnX/amxz/2dqdP9ucXv/ +cHN9/2Zpc/9ucHf/bG95/2xudf93eX//bnB3/25xe/9sbnX/cHJ5/3N1fP9wc33/Z2p0/3Bzff9ydX7/ +cnV+/3F0fv9ydX7/cHN9/3Bzff9wcnn/cHJ5/3p9hv9wcnn/cHJ5/3V4gf9zdn//d3l//3J1fv9ydHz/ +dXZ8/3Fzef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/ZGdx/2xudf9nanT/bG51/2xudf9sbnX/ +Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX//Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/ +bnB3/3N1fP9zdn//Z2p0/29xdf9vcXb/dnh//3Bze/96fIL/cHN9/36Biv93eX//e32D/3J1fv9vcnv/ +c3aA/3N2gP9nanT/bG51/3Bzff9nanT/am13/2ptd/9sb3n/am13/2psc/9nanH/bnF7/3N2f/93eX// +bnF7/3Bzff91eIH/bnF7/3d5f/9ucHf/amxz/3Byef9tb3P/d3l//2Zobv9ucXv/dXd9/25wd/91eIH/ +dXd9/2xvef93eoP/cHN9/2ptd/9vcXX/cHN9/25wd/91d33/cHJ5/25wd/9sb3n/eHl9/3N1fP9ucHf/ +bnB3/2xudf9iZW7/dXd9/2xvef9qbXf/bnB3/2xudf9ucXv/amxz/2xudf9tb3P/bnB3/3V3ff9kZ3H/ +bG51/2Zpc/9qbXf/cHN9/2dqdP93eX//bG51/2ptd/91d33/ZGdx/2Jlbv9maG7/amxz/2xudf9qbHP/ +Zmlz/2Zobv9maXP/ZGdx/2xvef9maXP/Zmlz/2dqcf9maXP/amxz/2xvef9sbnX/bG51/2xudf91d33/ +am13/2Zpc/9nanT/cHN9/2xudf9sbnX/bnB3/3Byef9zdXz/dnh8/3V4gf9wc33/c3Z//3t9g/9wc33/ +dXd9/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9wcnn/d3l//3V4gf9zdn//e36H/3d6g/9wcnn/ +c3V8/3d5f/9sb3n/dXiB/3Byef9nanH/bnB3/3d5f/9wcnn/d3qD/25wd/9wc33/bG95/25wd/92eHz/ +cHJ5/25wd/9ucHf/bG51/3Byef9ucHf/cHJ5/2dqdP9sb3n/c3Z//29xdf9ucHf/bW9z/2xvef9zdn// +cHN9/3Byef91eIH/bnB3/21vc/94eX3/dXd9/25wd/9zdXz/b3F1/25wd/9qbHP/c3V8/3Byef9zdn// +bnF7/3N1fP9wcnn/dXd9/3N1fP9sb3n/amxz/2xudf9qbXf/Z2px/2Zpc/9maXP/Z2px/2xudf9maXP/ +bG95/25xe/9nanT/bnF7/2xvef9tb3P/c3V8/2ptd/9qbXf/ZGdx/2xvef9nanT/bG95/2Jlbv9nanT/ +b3F4/25weP9vcXr/bG94/2tud/9qbXf/amxz/2Rncf9zdn//Z2p0/2ptd/9ucHf/bnB3/3Byef9ucHf/ +b3J3/21wev9oa3X/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/ +Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/ +bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3J0e/9ucXn/cnR7/29xeP95e4H/bnB3/2xudf9qbXf/ +aWt0/25wef9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn//c3V8/21vc/9ucHf/bG51/2xvef9wc33/ +dXd9/2xudf9zdXz/bnF7/2Zpc/9zdXz/Z2p0/2Jlbv9ucXv/bG51/3V3ff9iZW7/cHN9/3d5f/9qbXf/ +bnF7/25xe/9sbnX/c3V8/2Zpc/9gY2z/Zmhu/2Zpc/9maXP/bG95/2psc/9nanH/Z2px/2xvef9sb3n/ +Z2px/2psc/9maXP/YGNs/3V3ff9qbXf/bG51/2ptd/9nanH/am13/2Jlbv9qbHP/Z2px/2ptd/9ucXv/ +Zmlz/2psc/9kZ3H/bnF7/3V3ff9nanT/dXd9/2xudf9wcnn/d3l//2Zpc/9nanH/bW9z/21vc/9sbnX/ +bnB3/25wd/9ucHf/c3V8/25wd/94eX3/bnF7/25xe/9sb3n/c3V8/21vc/94eX3/bG95/25wd/9ucHf/ +d3l//2ptd/9maXP/amxz/3N1fP9sbnX/b3F1/3Byef9vcXX/c3V8/3Z4fP91d33/bnB3/3Byef94eX3/ +bnF7/3V3ff91d33/bnF7/25wd/9sb3n/bG95/2xvef93eX//cHN9/3t9g/91eIH/cHN9/3V4gf9wc33/ +am13/3Byef9zdn//am13/3d5f/9zdn//Z2p0/29xdf95e4H/bnB3/3d5f/9ucHf/c3V8/2xudf9vcXX/ +dnh8/3V3ff9wc33/bnF7/3V4gf9wc33/bnB3/3Bzff9qbXf/cHJ5/3V4gf9zdn//c3Z//3N1fP91d33/ +eXuB/3d5f/9zdn//e32D/3V4gf9zdXz/eXuB/3N2f/9zdn//eXyG/3V3ff93eX//dnh8/3t9g/97fYP/ +dXiB/3Bzff91eIH/c3Z//3d6g/9zdn//cHN9/3N1fP9zdn//c3Z//3N1fP9sb3n/bnB3/25wd/9ucXv/ +am13/3Bzff9wc33/Z2p0/3N1fP9zdXz/b3F1/3V3ff9sbnX/cHJ5/2dqdP91d33/bnF7/3N2f/9qbXf/ +c3Z//25xe/9tcHn/b3J8/29ye/9ucXv/bnF7/25xe/9ucXv/fH+I/3J1fv9zdn//d3l//3t9g/96fIL/ +d3qA/3Z4ff92eX7/cnN6/2xudf9sbnX/Zmlz/2psc/9nanT/am13/2xudf9maXP/bnF7/2dqdP9tb3P/ +cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/bG51/3Byef9iZW7/am13/2ptd/9sb3n/ +Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/bnF7/3N2ff9ydHz/gYOK/3V4gf91eIH/ +b3J8/25xev9zdX7/cnV//2hrdf9sb3n/bnB3/25wd/9wcnn/cHJ5/3N1fP9sbnX/am13/2ptd/9wcnn/ +dnh8/3d5f/9sb3n/cHN9/25xe/9ucHf/dnh8/2xvef9kZ3H/c3V8/2xudf94eX3/Z2px/3N2f/93eoP/ +bG95/3N2f/95e4H/bG95/3V4gf9ucXv/am13/25xe/9wc33/bnB3/25xe/9sb3n/bG95/25wd/92eHz/ +dXd9/29xdf9tb3P/Z2px/2dqcf91d33/am13/21vc/9wcnn/am13/2xvef9kZ3H/Z2p0/2Zobv9maXP/ +am13/2Rncf9maG7/XWBq/2Rncf9wcnn/YmVu/3Byef9maXP/Zmlz/3Byef9iZW7/YmVu/2psc/9nanT/ +bG51/2xudf9qbHP/bG51/25xe/9sb3n/dXd9/3Byef9ucHf/bG51/3N2f/9vcXX/eHl9/25wd/9vcXX/ +bnB3/3d5f/9ucHf/bnB3/25wd/91d33/bnB3/29xdf9wcnn/bG51/3Byef9zdn//d3l//3Bzff9wc33/ +d3l//2xvef9zdXz/dnh8/25xe/9ucHf/bnB3/29xdf9ucHf/dnh8/3Byef94eX3/dnh8/3N1fP92eHz/ +bnB3/2xudf9vcXX/c3V8/2psc/91d33/dXd9/2psc/9vcXX/d3l//3Byef93eX//bnF7/3N2f/9ucHf/ +b3F1/3h5ff9wc33/c3V8/25xe/9wc33/c3Z//25wd/9ucHf/bG95/25wd/9zdn//c3V8/25xe/9wc33/ +cHN9/3l8hv9zdn//cHN9/3d6g/9ucXv/bnB3/3t9g/93eoP/dXiB/3d6g/9wc33/c3Z//3N1fP9wc33/ +bnF7/3Bzff9wcnn/c3Z//3N2f/95e4H/c3Z//25xe/9vcXX/bnB3/2xvef9vcXX/am13/2xudf9vcXX/ +bnB3/2xudf9zdn//cHJ5/2xudf9wc33/bnF7/29xdf93eX//bnB3/3V4gf9ucXv/eXuB/3V4gf95e4H/ +Z2p0/2xvef9wc3z/dHeA/3Z5gv9ydX//b3F4/25wd/9ucHf/am13/3d5f/9ucHf/bnB3/2xudf9wcnn/ +bnF7/2xvef9tcHr/dXd+/3V4gP9wc33/cHJ5/2xvef9wc33/c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/ +bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/e36H/3N2f/97fYP/cHN9/3t9g/9zdn// +c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/c3V8/2xud/9ucXr/a210/3d6g/9qbXf/ +bG51/2psc/9sbnX/b3J8/3BzfP9rbXT/bG51/25wd/9ucHf/bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/ +bG95/3V3ff92eHz/bG51/3N1fP9ucHf/b3F1/3V3ff9sbnX/bG51/2xvef9qbXf/c3V8/2Rncf9zdXz/ +dnh8/2xudf9ucHf/dnh8/2xudf91d33/am13/2Rncf9qbHP/bnB3/2xudf9wc33/bG51/2xudf9qbXf/ +cHN9/3Byef9sbnX/bW9z/2psc/9qbHP/dXd9/2xvef9ucHf/c3V8/2xudf9ucHf/Zmhu/3Byef9tb3P/ +bnB3/25wd/9nanT/am13/2dqdP9ucXv/c3V8/2ptd/93eX//bnB3/25xe/94eX3/Zmhu/2dqdP9ucHf/ +bnB3/2xvef9ucHf/bnB3/25wd/9zdn//c3Z//3l7gf9ucXv/bnF7/3Bzff93eX//cHN9/3l7gf9zdXz/ +bnB3/3N2f/97fYP/cHJ5/25wd/9ucHf/c3Z//2xvef9wcnn/c3Z//2xvef9wcnn/c3V8/3Z4fP9ucXv/ +bG95/3d5f/9wc33/c3Z//3d5f/9ucXv/bnB3/3Byef9ucHf/bnB3/3d5f/9zdn//eXuB/3l7gf93eoP/ +d3l//25xe/9sbnX/b3F1/3N1fP9qbHP/c3V8/3N1fP9qbHP/bG51/3N1fP9tb3P/dXd9/2psc/9ucXv/ +bW9z/2xudf92eHz/c3V8/25wd/9wcnn/cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/bnF7/2xvef9sb3n/ +bnF7/25xe/9zdn//c3Z//3Bzff95e4H/c3Z//3Bzff99foH/eXuB/36Ahv97fYP/d3l//3V3ff91d33/ +dXiB/3d6g/93eoP/c3Z//3d6g/93eoP/e36H/3l8hv93eoP/cHN9/3N1fP9zdn//cHN9/3Byef9sb3n/ +b3F1/25xe/9ucHf/bnF7/3Byef9qbHP/cHJ5/2xudf9tb3P/dnh8/2xudf9wc33/bG95/3N2f/9zdn// +c3Z//2dqdP9sb3n/cHJ5/29yfP92eYD/cnV+/29xeP9tb3P/b3F1/2xudf93eX//bG51/2xudf9ucHf/ +c3V8/3V3ff9wc33/cnR8/3V3ff9xdH3/cHJ5/2xvef9qbXf/cHN8/25xe/9ucXv/c3V8/2ptd/9zdn// +bnB3/2xudf90dn3/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/cHJ5/3V3ff9tb3T/dHd9/2dqdP9zdXz/ +am13/2xvef9sb3n/am13/2Vocf9sb3n/am13/2Nmb/9qbHP/am13/3J0e/9ucHf/cXN6/2tud/93eoP/ +cHJ5/2xudf9sbnX/aGt0/21veP9xdH3/Z2p0/2ptd/9qbXf/am13/2ptd/9ucXv/dXd9/3Byef9vcXX/ +b3F1/25xe/9wc33/dXd9/2xudf9nanT/am13/2psc/91d33/bG51/2psc/9sbnX/Z2p0/3Byef9kZ3H/ +bG95/25xe/9sbnX/am13/3N1fP9qbHP/dXd9/2xvef9gY2z/Zmlz/2dqdP9nanH/bG95/2psc/9qbHP/ +Z2p0/2ptd/9qbXf/Z2px/2dqdP9kZ3H/ZGdx/3Byef9nanH/Z2px/2xvef9nanT/amxz/2BjbP9qbXf/ +amxz/2dqdP9qbXf/ZGdx/2dqcf9kZ3H/am13/25xe/9maXP/cHJ5/2ptd/9sb3n/dXd9/2Rncf9maXP/ +amxz/2xudf9sbnX/bG51/2ptd/9tb3P/bnF7/25xe/9zdXz/cHJ5/3Byef9sb3n/dXd9/2xudf9zdXz/ +am13/2ptd/9sbnX/cHJ5/2dqcf9kZ3H/Zmlz/2xvef9nanT/amxz/3N1fP9sbnX/bnB3/3V3ff94eX3/ +cHN9/29xdf94eX3/bG95/3N1fP91d33/bnB3/2xudf9tb3P/am13/2ptd/9zdXz/cHJ5/3N1fP91d33/ +c3V8/3h5ff9ucHf/bG95/21vc/9zdXz/Z2p0/3N1fP9zdXz/Zmlz/2dqdP9sb3n/bG51/3V3ff9vcXX/ +dXd9/2xudf9qbHP/dXd9/3N1fP9wcnn/cHN9/2xvef9ucXv/bnB3/25wd/9vcXX/bG51/2xudf9sbnX/ +b3F1/2xvef9ucXv/cHN9/25xe/9wcnn/dXiB/3N2f/9zdXz/dXiB/3N2f/93eoP/dXiB/3Bzff9wc33/ +cHJ5/3Bzff9zdn//c3Z//2xvef9ucXv/cHN9/3d5f/9zdn//bnF7/3N1fP9zdXz/c3Z//3N1fP9ucHf/ +cHJ5/3Bzff9zdn//cHN9/3V4gf9zdn//cHJ5/3Bzff9wcnn/cHJ5/3d6g/9ucHf/dXiB/3Byef95e4H/ +eXyG/36Ahv9zdn//c3Z//3Bzff9ydX//dnmA/3J1fv9zdn//bnB3/25wd/9sb3n/dXiB/2xvef9sbnX/ +cHJ5/3Z4fP92eHz/c3V7/3J0ff91d33/bnB3/21vd/9pbHb/Zmhx/2ttdf9sb3n/cXN6/3Fzev9tb3P/ +cHJ7/2ttdf9rbXT/cHN9/25xe/9tb3b/a254/25xev9ucXv/bG95/21wev9xdH7/b3F2/3Z4fv9qbXT/ +dXd9/3Bzff9xc3r/dXd9/3R2fv9sbnb/b3F5/29yfP9sb3b/bG52/2xudv9ydX//cXN7/3Z4fv9wcnn/ +foGK/3d6g/9ucHf/bnB3/25wdf9wc3v/dXd9/2ptdv9rbnf/bnB3/25wd/9ydHv/dHZ8/3N1fP9tcHn/ +bXB3/2tueP9ucXv/dXd9/3V3ff9sb3n/bnF7/25xe/9ucHf/eXuB/25xe/9vcXX/bG51/3N1fP92eHz/ +amxz/3V3ff91d33/bG51/2xudf94eX3/bnB3/3h5ff9zdXz/Z2p0/2xudf9ucHf/bW9z/3Byef9ucHf/ +bnB3/2xudf9zdXz/am13/2ptd/9qbXf/Z2p0/2Zpc/91d33/am13/2psc/9wcnn/amxz/2xudf9maG7/ +c3Z//2ptd/9ucXv/c3Z//2xvef9ucHf/b3F1/3V3ff92eHz/b3F1/3V3ff9ucHf/bnB3/3Z4fP9nanT/ +bnB3/3Byef9zdXz/bnB3/3Byef9ucHf/bnB3/3Byef9ucHf/c3V8/3Byef9ucXv/bG95/3V3ff9sbnX/ +bG95/2Zpc/9qbHP/am13/3N1fP9sbnX/amxz/2psc/9ucXv/bG51/2psc/9ucXv/am13/2psc/9ucXv/ +c3V8/2xvef9qbXf/dXd9/2xudf9ucXv/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/cHN9/2xudf9zdXz/ +dXd9/3N2f/9zdn//bG95/3Byef9ucXv/c3V8/25wd/9zdn//d3l//2xvef9ucXv/cHN9/3Byef95e4H/ +cHN9/3l7gf9wc33/bG95/3l7gf9zdn//dXiB/3N2f/9wc33/c3V8/25wd/9wcnn/cHJ5/3Byef9wc33/ +cHJ5/2xvef9wc33/bnF7/3Byef9ucHf/bW9z/3Byef9wcnn/bG51/3N1fP9sbnX/bnF7/3Bzff9tb3P/ +b3F1/25wd/9ucHf/c3V8/3V3ff9sb3n/cHJ5/2xvef91d33/c3Z//3Byef9ucHf/c3Z//3V4gf93eX// +dXd9/3h5ff95e4H/dnh8/3l7gf9/gYf/eXyG/3l7gf97fof/eXuB/3d5f/9/gYf/dXd9/3t9g/91d33/ +foCG/3t9g/97fof/c3Z//3N2f/9xc3r/cHN6/3J1fP9xc3v/cHJ5/2ptd/9nanT/Z2p0/3V3ff9qbHP/ +Z2px/2ptd/9ucXv/cHJ5/2lsdv9rbnj/b3J5/2xudf9rbnb/a252/2hqcv9naXH/a211/25xef9tcHr/ +a21z/3J0fP9tcHj/bG93/3F0fv9ydX3/b3F5/29xev9ydX3/dHd//3Byef9xdHz/eHqC/3V3ff94e4H/ +cXN6/3l8gv91d3//dnmB/3l7g/96fIP/c3V+/3d4fv92eID/dXd+/3F0fv9xc3v/d3qC/3h6gP99f4b/ +dnh//4OFjP9+f4P/ent//3d5f/94eoD/enyC/3p8gP9ydHv/cHN9/25xe/9vcnv/cnV+/3Z4gP92eH// +cnV+/29yev9wc3v/cHJ5/3V3ff92eHz/bnB3/25xe/9wc33/bnF7/3l7gf9wc33/cHJ5/25xe/9wc33/ +c3Z//2dqdP91d33/dXd9/25xe/9wc33/e32D/3Byef97fof/d3qD/3N1fP9wc33/d3qD/3N2f/9zdn// +c3Z//3N2f/9ucXv/bnF7/25xe/9ucHf/bnF7/2xvef9qbXf/d3qD/3N1fP9wc33/cHN9/25xe/9ucHf/ +Zmlz/3V3ff9sbnX/c3V8/3N1fP9ucHf/bnB3/29xdf9wcnn/dnh8/29xdf95e4H/b3F1/25wd/92eHz/ +Z2p0/2dqdP9ucHf/bnB3/21vc/9sbnX/bG51/2xudf9ucHf/bnB3/2xvef9sb3n/bG95/2ptd/92eHz/ +am13/25xe/9maXP/am13/2xudf9wc33/bG51/2Rncf9qbHP/am13/2psc/9qbHP/bG95/2ptd/9nanT/ +bG95/3N1fP9ucXv/am13/3N1fP91eIH/eXyG/3t9g/9zdn//c3Z//3Bzff9zdXz/bnB3/3N2f/9wcnn/ +dXiB/3l7gf91eIH/dXiB/3Bzff9wcnn/cHN9/3N1fP9vcXX/cHN9/3V3ff9qbXf/bG51/3N2f/9wcnn/ +d3l//2xudf9zdXz/bW9z/2xudf94eX3/c3Z//3V3ff9sb3n/bG95/25xe/9vcXX/bG51/29xdf9vcXX/ +bW9z/21vc/9vcXX/c3V8/2xudf9sb3n/bW9z/25wd/9wc33/cHJ5/29xdf94eX3/bnB3/3N2f/91d33/ +bW9z/2xudf9qbXf/bG51/25xe/9ucXv/bW9z/2xudf9ucHf/dXd9/25xe/9ucHf/amxz/2xudf9sbnX/ +bnB3/2xvef9ucHf/b3F1/2xudf9qbXf/c3Z//3N1fP91d33/dXiB/3N1fP91eIH/foGK/3N1fP93eoP/ +c3Z//3t+h/93eoP/e36H/3N1fP9zdn//cXN7/3N2gP96fIP/eXuB/3p8gv91d33/c3V8/3V3ff97fof/ +dXiB/3Bzff9wc33/dXd9/3V3ff90dnz/dXd+/3J1ff9ucXv/bXB5/3Bze/9pa3P/aWx2/3FzfP90d37/ +c3Z//3F0fP92eH//cnR9/3Bze/90d4H/dHeA/29yfP9xdHz/bXB4/29yfP9vcXv/bG95/21weP9tb3b/ +cHJ5/2ttc/92eHz/bnF6/25wef9ydX3/bXB6/25wd/9tcHn/bW92/29xd/9tb3b/bG54/3Fzd/90dnz/ +dHZ8/2xvef95fIb/cHN9/2xvef9wcnn/bnF7/3R2fP90dn3/cHJ6/21veP9tb3j/bG95/25xe/91d33/ +dHeA/3F0fP9zdn3/bnF6/3Bzff91eIH/d3l//25wd/9ucXv/bnB3/25wd/92eHz/bnB3/2ptd/9qbXf/ +bG51/25wd/9nanH/cHN9/3Bzff9qbXf/bnF7/3V3ff9tb3P/d3l//2xvef9nanT/Zmlz/2xvef9qbXf/ +bG95/2xudf9ucHf/bnB3/3Byef9ucXv/bnB3/25xe/9ucHf/am13/3N2f/9ucHf/bnF7/25wd/9qbXf/ +bG95/2psc/91d33/bG51/3N1fP9wcnn/bnB3/2xudf9sbnX/c3V8/3Bzff9qbHP/dXiB/2psc/9qbHP/ +c3V8/2Jlbv9dYGr/Z2px/2Rncf9maG7/Z2px/2dqcf9qbHP/bG95/2xudf9ucXv/bnB3/3V3ff9sb3n/ +d3l//25xe/9zdn//am13/25xe/9wc33/eXuB/3V4gf9sb3n/c3V8/3V4gf9zdn//d3l//36Ahv95e4H/ +dnh8/3l8hv9+gYr/e32D/3N2f/97fYP/bnB3/3N2f/93eX//cHN9/3N2f/9zdn//c3V8/3N1fP91eIH/ +c3Z//3l8hv97fYP/e32D/3Bzff9ucXv/cHJ5/3Bzff9zdn//c3V8/3V4gf95e4H/cHJ5/2dqdP9zdn// +cHN9/3l7gf9sb3n/dXiB/25xe/9sbnX/dnh8/3Byef91d33/bG51/29xdf9ucHf/b3F1/2psc/9sbnX/ +bG51/21vc/9sbnX/bW9z/3Bzff9wcnn/cHJ5/3Byef9wcnn/dXiB/25xe/9sb3n/eXuB/25xe/9zdn// +bnF7/25wd/9wcnn/bnF7/25wd/9ucXv/cHN9/25wd/9wcnn/cHJ5/3Z4fP9zdXz/cHJ5/2psc/9vcXX/ +bnB3/2xudf9ucHf/am13/2ptd/9qbHP/amxz/3Byef9sbnX/bG51/2xudf9tb3P/bG51/3Z4fP9sbnX/ +bnB3/21vc/9zdXz/bnF7/3Z4fP9tb3P/bG51/25xeP9ydX//dXd9/3V4gf91d33/bnB3/2ptd/9sb3n/ +dXiB/29xdf9sb3n/bnF7/3V3ff9zdXz/cHJ5/3Z4fP9xc3n/cHJ5/25wd/9ucXr/Zmlz/2psc/9wcnn/ +dXd7/25wd/9tb3P/dHd9/2tueP9sb3n/a210/21wef9sbnX/amxz/2hrdf9qbXT/am13/2psc/9ydX// +cnV+/3N2f/9vcnz/eXuA/3J1f/91eIH/enyD/3x/hf95e4H/dnh+/3d5f/96fIH/cnV//3J1fv91eIH/ +eHuF/3p8g/91d33/foGK/3V4gf9wc33/cHN9/3N2f/91eIH/eXuB/3V4fv9wc33/c3Z//25xe/9zdn// +eHqB/3V4gf9ydX7/dHZ8/25wd/9ucXv/cHN9/3N2f/9vcXX/bG95/25wd/9zdXz/dXd9/2xudf9sbnX/ +cHJ5/29xdf9ucXv/am13/3Bzff93eX//bnF7/3V3ff92eHz/b3F1/3d5f/9wcnn/bG51/2xudf9wcnn/ +cHJ5/2ptd/9tb3P/bnF7/2xvef9ucHf/b3F1/25wd/9wcnn/bG95/2xudf9ucHf/am13/25xe/9sbnX/ +am13/2ptd/9nanH/c3V8/2xudf9zdXz/bnF7/2xvef9sbnX/am13/3N1fP94eX3/bG95/3d5f/9ucHf/ +bnB3/3V4gf9sb3n/Z2p0/3V4gf9zdn//cHJ5/3N2f/9zdn//dXiB/3V4gf91eIH/e32D/3d6g/95e4H/ +c3Z//3l8hv91eIH/eXyG/3Bzff91eIH/dXiB/3t9g/93eoP/bnF7/3V4gf95fIb/bnF7/3Byef9ucXv/ +cHJ5/25wd/9zdn//dXiB/3V4gf9wcnn/c3Z//2xvef9qbXf/c3V8/2xvef9nanT/Z2px/2Zpc/9maG7/ +Zmlz/2Zobv9maXP/am13/2xvef9qbHP/bG51/2Zpc/9nanT/bG51/2psc/9ucXv/cHN9/2psc/9nanH/ +bG95/2ptd/9zdn//Z2p0/25xe/9sb3n/am13/3N1fP9ucXv/cHN9/2ptd/9qbXf/bG95/29xdf9sbnX/ +bG51/2xudf9tb3P/bG51/25wd/9wcnn/bW9z/2xvef9qbXf/cHJ5/3N1fP9sb3n/am13/3N1fP9sb3n/ +c3V8/2xudf9ucHf/bnB3/2xvef9ucHf/bnF7/3N2f/9ucHf/cHJ5/3Byef9zdXz/cHJ5/25xe/9sb3n/ +bG95/25wd/9sb3n/bG95/2xvef9sbnX/bG51/2xudf9wc33/bnB3/3Byef9ucHf/bnB3/25xe/94eX3/ +bnB3/3Byef9ucHf/dXd9/3N2f/93eX//b3F1/29xdf9ucHf/dHZ9/3N1fP91d33/eHl9/3Byef9sbnX/ +bnB3/3d5f/9vcXX/bnB3/3Byef92eHz/bnB3/3Byef9wc33/am13/2xvef9qbXf/am13/2dqdP9maXP/ +amxz/3N1fP9nanT/Z2px/2xvef9kZ3H/Zmhu/2RmbP9nanT/Zmhu/2dqcf9kZ3H/Zmhu/2Zobv9kZ3H/ +d3qD/3V4gf93eoP/dXd9/31+gf93eoP/dXiB/3l7gf91eIH/cHN9/3N2f/91eIH/eXyG/3d5f/91d33/ +d3l//3+Bh/97fYP/c3V8/3+Bh/91eIH/c3V8/3N1fP9wc33/d3l//3l8hv97fYP/c3Z//3N2f/9sb3n/ +bnF7/3Bzff9wc33/cHN9/3V3ff9ucXv/bnF7/3Byef9zdXz/bnB3/25wd/9tb3P/cHJ5/25xe/9ucHf/ +bnF7/2xvef9ucXv/cHN9/3N1fP91eIH/d3l//2xvef9zdn//dXiB/25xe/97fYP/dXiB/3V3ff9zdn// +d3l//3l7gf95e4H/dnh8/3d6g/91d33/eXuB/3h5ff96e3//e32D/3d5f/91d33/fn+D/3V3ff97fYP/ +d3l//3d5f/91d33/cHN9/3d6g/9zdn//eXyG/3N2f/9wcnn/c3V8/3N1fP95e4H/e32D/3N1fP97fof/ +cHN9/3Bzff97fof/am13/2Zpc/9ucHf/bG95/29xdf9sbnX/bW9z/2ptd/9sbnX/bnB3/3N1fP91d33/ +eHl9/25wd/93eX//bnB3/25xe/9nanH/bG51/25wd/9zdXz/c3V8/2dqcf9ucHf/c3V8/2psc/9vcXX/ +bnB3/25wd/9qbXf/cHN9/3d5f/9zdXz/bnB3/25wd/9wcnn/cHN9/3h5ff91d33/b3F1/29xdf9ucHf/ +b3F1/3Byef9sbnX/cHJ5/3Byef91d33/bG51/3Byef9qbHP/bnB3/3Byef9vcXX/dXiB/3V4gf9wcnn/ +bnB3/3N2f/9sb3n/eXuB/25wd/9wc33/cHJ5/2xvef93eX//c3Z//3d5f/9ucXv/bG95/3Bzff9ucXv/ +bG95/25xe/9wcnn/c3V8/3V3ff9zdn//d3qD/3N1fP9wcnn/bnF7/3V4gf9+gIb/dXiB/3Bzff93eoP/ +c3Z//3l8hv9zdn//bG95/2xvef9ucXv/cHJ5/3Bzff91eIH/bnF7/25xe/9wcnn/c3Z//3Bzff9wcnn/ +Z2p0/25wd/9vcXX/bnB3/25wd/9ucHf/bG51/25wd/9qbXf/cHN9/29xdf9vcXX/bnF7/3Bzff9zdn// +eXuB/3N1fP91eIH/bnB3/3V4gf91d33/d3l//3Byef9wcnn/bG95/3N2f/9wc33/c3Z//3Z4fP9wcnn/ +bG51/2xudf92eHz/bG51/2ptd/9sb3n/cHN9/2xvef9nanT/Z2p0/2xvef9qbXf/Zmlz/2Zpc/9maXP/ +Zmlz/2xudf91d33/bnB3/3Byef9zdXz/bG95/3Bzff9sb3n/cHN9/3Byef9zdn//c3V8/3Bzff9zdXz/ +cHN9/3Byef9sbnX/bG95/2xudf9wcnn/bnB3/25wd/9zdXz/cHJ5/25xe/9qbXf/bG51/2ptd/9qbHP/ +am13/2psc/9zdn//bnF7/2psc/93eoP/bG95/2dqdP9sbnX/bG95/3N1fP91eIH/dnh8/3Byef9zdXz/ +b3F1/21vc/9ucXv/cHN9/25xe/92eHz/cHJ5/3Byef9wcnn/c3V8/2xudf9wcnn/bW9z/3Bzff9qbXf/ +amxz/2xvef9ucHf/bnB3/2xudf9tb3P/c3V8/3V3ff9sbnX/bG95/25xe/9sbnX/c3V8/2xvef9qbXf/ +Z2p0/2xudf9qbXf/am13/2xudf9sbnX/bG51/25wd/9ucHf/bG95/25xe/9sb3n/bnB3/3N1fP9tb3P/ +cHJ5/25wd/9sbnX/bW9z/2dqcf9ucXv/Z2p0/2ptd/9sbnX/amxz/2xudf9ucHf/eHl9/3d5f/9vcXX/ +dXd9/25wd/9ucHf/eXyG/2ptd/9qbHP/bG95/2xvef9wcnn/bnF7/3Byef9sb3n/bnB3/3Bzff9zdn// +d3qD/3t9g/9zdn//d3qD/3N1fP9zdXz/am13/3Bzff9ucXv/cHN9/3N2f/9nanT/cHN9/25xe/9nanH/ +amxz/2xudf9qbXf/bG51/25xe/93eX//c3V8/29xdf9ucXv/bnB3/3N1fP92eHz/c3V8/2xudf9sb3n/ +bG95/25xe/91eIH/c3Z//3N2f/9wc33/dXd9/2xudf9zdXz/amxz/21vc/9ucHf/b3F1/3V3ff9zdXz/ +b3F1/25wd/91d33/cHJ5/3l7gf9sbnX/dXd9/3Byef9ucHf/c3V8/25xe/9wc33/bG95/2xudf9wc33/ +bG51/2Rncf9qbXf/am13/2dqdP9maXP/am13/3Byef9sbnX/bW9z/25wd/9ucXv/dXd9/2xvef9sb3n/ +c3V8/29xdf92eHz/bnB3/2xudf9qbXf/bnB3/29xdf9vcXX/cHJ5/29xdf91d33/cHJ5/3V3ff9wc33/ +bnF7/3Byef9zdn//cHJ5/3N1fP9wcnn/bnB3/2ptd/9sb3n/am13/3N1fP9vcXX/bW9z/25wd/9ucXv/ +bnF7/3l7gf9vcXX/c3V8/21vc/93eX//c3V8/3V3ff9vcXX/bnB3/2xudf9wcnn/bnF7/3N1fP9ucXv/ +cHJ5/2dqdP9sbnX/eHl9/29xdf9zdXz/dXd9/3Z4fP9zdXz/bnB3/2xvef9sb3n/cHJ5/3Byef9ucHf/ +bnB3/2psc/9sbnX/d3l//25wd/9ucXv/bG95/2xvef9zdXz/bnB3/3Byef9sbnX/bnB3/2xudf9sbnX/ +bG51/2ptd/9ucHf/bnB3/3Byef9ucHf/cHN9/3Byef9zdXz/c3Z//3V4gf91eIH/c3Z//3N2f/91eIH/ +c3V8/3N2f/9zdXz/e36H/3N2f/9ucXv/eXyG/3Bzff9sb3n/bG95/3Bzff9zdn//e36H/3t9g/9zdn// +c3Z//25wd/9ucXv/cHN9/3Z4fP91d33/d3l//3V3ff9ucHf/cHN9/3V4gf9ucXv/c3Z//2xvef9zdn// +bnF7/25wd/9ucXv/bnB3/3N1fP9ucHf/b3F1/2xvef9zdXz/amxz/2xvef9wc33/am13/25xe/9wcnn/ +bG51/2dqcf9ucHf/bG51/25wd/9qbXf/cHJ5/25wd/9wcnn/bG51/25wd/9zdXz/bnB3/25wd/9zdXz/ +amxz/25wd/9sbnX/bG51/21vc/9maG7/bG95/2dqdP9qbHP/bG51/2dqcf9nanH/Zmhu/3Byef9wcnn/ +Z2px/25wd/9gY2z/ZGZs/3Byef9iZW7/XWBq/2BjbP9maG7/ZGdx/2Zobv9maG7/ZGdx/2Zpc/9nanT/ +bnF7/3Bzff9zdXz/bG95/3V3ff9qbXf/bG51/2dqdP9qbHP/am13/2xvef9wcnn/amxz/3Byef9ucXv/ +Z2p0/2ptd/9ucHf/bnB3/21vc/9sb3n/c3V8/3V3ff9sbnX/bG51/2dqdP9nanT/cHJ5/25xe/9qbXf/ +bnB3/2Zpc/9maXP/am13/2xvef9ucXv/bnF7/3Bzff9ucHf/bnF7/2ptd/9sbnX/bnB3/21vc/9ucXv/ +bnF7/2xudf9nanT/dXd9/2ptd/9zdn//amxz/2ptd/9nanT/amxz/2xvef9ucXv/bG95/25wd/9sbnX/ +bnB3/2xudf9qbHP/bnB3/29xdf9ucHf/am13/25wd/9ucXv/bG95/2xvef9wc33/bnF7/3l7gf9wc33/ +cHJ5/3V4gf9wc33/eXuB/3Bzff9sb3n/cHJ5/25wd/9ucHf/bW9z/3Byef9tb3P/cHJ5/25wd/9zdXz/ +bG51/25wd/9nanT/bG51/2psc/9sbnX/bnB3/21vc/9sbnX/bnB3/25wd/9zdXz/bnB3/29xdf9vcXX/ +cHJ5/3Bzff91eIH/bnB3/3Bzff9wcnn/e36H/3d6g/95e4H/cHN9/3N1fP9ydHz/enyC/3p8gv99f4X/ +fn+D/3t9g/92eHz/d3qD/3t+h/9wc33/d3qD/3t9g/97fYP/d3qD/3d6g/94e4X/dXiB/3Z5gv9ydX7/ +dHeA/3Fzev9rbnj/bnB3/3d4ff9vcnz/cnV+/25xe/9vcXn/bnB3/21vdv9tb3b/bG51/25wd/9ucHT/ +bnB4/21wef9sb3n/bnB3/2ttdP9pa3X/aGty/2tueP9pa3X/a210/2tueP9sb3b/c3V7/25wd/9tb3b/ +cHJ5/21vdv9ucHf/bG51/3h6gP9ucHf/am13/3N2f/9qbHP/YmVu/2Jlbv9maXP/Z2p0/3N1fP9tcHr/ +bG95/2ptd/9oanT/am13/2xvef9xc33/cHN8/3R2fP9sb3n/amxz/2dqdP9ucXv/bG95/3V3ff9tb3P/ +cHN9/2ptd/9sb3n/am13/2xudf9wcnn/bnB3/21vc/9wcnn/dXd9/2ptd/9ucXv/cHN9/2xudf9wcnn/ +c3V8/2xudf9kZ3H/am13/25wd/9wcnn/bG51/2xvef9sbnX/am13/2Zpc/9maXP/bG95/2ptd/9qbXf/ +am13/2dqdP9nanT/Zmlz/2Zpc/9nanT/YmVu/2xvef9maXP/Z2px/2xudf9qbHP/Z2p0/2psc/9zdXz/ +cHN9/2dqdP9wcnn/amxz/2psc/91d33/Z2p0/2Rncf9maXP/bG95/2dqdP9sbnX/Z2px/2dqcf9nanT/ +Z2p0/3Bzff9wc33/cHJ5/2dqdP9wcnn/Z2p0/2dqcf9maXP/Zmlz/2ptd/9nanT/am13/2Rncf9sbnX/ +bG95/2Jlbv9nanT/bG51/2xvef9nanH/Z2p0/25xe/9ucXv/amxz/2dqcf9sbnX/bG95/3d5f/9wcnn/ +bnB3/3Byef9sbnX/bG51/3V3ff9ucHf/bnB3/3Byef9ucXv/bG95/3Byef9qbXf/bG51/2xvef9sbnX/ +c3V8/3Byef9vcXX/bG51/3Z4fP9zdXz/eHl9/25wd/9wcnn/bnB3/2xudf9wcnn/cHN9/3Byef9ucHf/ +bnB3/3Byef9sbnX/ZGdx/2xudf9sbnX/Z2p0/2dqdP9sbnX/bnB3/25wd/9vcXX/cHN9/3Byef94eX3/ +cHJ5/2xvef9wc33/cHN9/3d5f/9sb3n/bG95/25xe/9sb3n/bnB3/29xdf9wcnn/bG51/25wd/9wcnn/ +c3Z//25xe/9wc33/bnB3/3N1fP9zdXz/dXiB/2ptd/9ucHf/bG51/2xudf9sbnX/bnF7/2ptd/9sbnX/ +bG51/2xvef9wc33/dXd9/21vc/9zdXz/bnB3/3h5ff9wc33/eXuB/25xe/9qbXf/b3F4/3Bzff9ydHz/ +dHZ9/3V3ff9qbXf/bG51/3N1fP94eX3/bnB3/3N2f/92eHz/dXd9/3Byef9ucXv/cXR9/29xeP9xc3r/ +bnB3/25wev9pa3T/Z2p0/2ttdf9xc3v/bXB6/2xveP9rbnj/am12/2ZpcP9oanH/amxz/2dqcv9kZ3H/ +ZWhy/2Zpc/9maXD/Z2lv/3Bzff9tb3f/b3F6/21vdv9vcnv/bnB3/25wd/9vcXj/cXN6/3J0ev9ucHj/ +bXB6/29yfP9vcXb/bG95/2ttdf90d3//bG52/2xudv91d33/am13/2Rncf9nanT/bG95/21wev90d4D/ +cnR8/3Bzff9rbnj/am13/21wev9vcnz/cXR+/29yfP9zdX3/bXB6/2ptd/9nanT/bG95/2ptd/9ucXv/ +amxz/25xe/9qbXf/bG51/2ptd/9qbXf/bG95/2xvef9qbHP/bnF7/3V3ff9qbHP/bG95/3N1fP9sb3n/ +bG95/3Byef9vcXX/Zmlz/25wd/9zdXz/c3Z//3Byef9zdn//cHN9/25xe/9qbXf/bnB3/3N2f/9wc33/ +bG95/3Byef9sbnX/cHN9/25wd/9wcnn/bG95/2dqdP9wcnn/am13/3Byef9wc33/bG95/2xvef9vcXX/ +d3l//3d5f/9zdXz/c3V8/2ptd/9sb3n/d3l//2xudf9sbnX/Z2p0/3Byef9ucHf/bG51/2xudf9tb3P/ +bG95/2ptd/9zdXz/cHN9/3N1fP9sb3n/bnF7/2Zpc/9nanH/ZGdx/2dqdP9sb3n/am13/3Byef9nanH/ +bG51/3N1fP9kZmz/amxz/25wd/9wcnn/bG51/3Bzff9wc33/d3l//2xvef9qbXf/Z2px/2ptd/9zdXz/ +Z2p0/2dqcf9qbXf/Zmlz/2psc/9qbXf/ZGdx/2Zobv9maXP/am13/2dqcf9nanT/amxz/2ptd/9ucXv/ +bG51/3Byef9ucHf/b3F1/2psc/92eHz/cHJ5/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/3V4gf9wc33/ +c3V8/2xvef9wc33/bnB3/2dqdP9vcXX/b3F1/25wd/9sbnX/bG95/25wd/9sbnX/am13/25xe/9qbXf/ +dnh8/2xudf9tb3P/cHJ5/3Byef91d33/bG51/2dqdP9sb3n/am13/2dqdP9sbnX/bnF7/25wd/9wcnn/ +am13/3Bzff9ucHf/cHJ5/2xvef9ucHf/bG95/3Bzff9qbXf/cHJ5/2xvef9ucHf/bG95/3N2f/9sb3n/ +bG95/25wd/9wc33/dXiB/3l8hv9ucHf/dXiB/25xe/93eoP/c3Z//3d6g/9ucXv/am13/21weP9xc3v/ +b3F5/3R3fP90dnz/bnF7/21vc/9ucHf/dXd9/2ptd/9sb3n/bnF7/3N1fP9sbnX/bnB4/25xev9ucHj/ +bnF5/25wd/9tcHr/Z2p0/2xvd/9tcHj/cnV9/3Bze/9ydHv/cHN9/3BzfP9vcnz/dHZ8/3N1e/9xc3r/ +bnB5/3J0e/9wcnv/bnF5/21weP9ydHv/bG51/3Fze/9rbXb/bXB6/3Byef9sb3n/bG95/2xvef9rbXb/ +aWx0/21weP9pbHb/b3F6/2lsdv9rbnb/bnF6/2ptdv9qbXf/c3V8/2xvef9kZ3H/Zmlz/2xvef9qbXf/ +cHN7/2xvef9ucHn/am12/2tudv9tb3b/bW92/29yfP9ucHn/dXh//3Fzev91d33/dXd9/3V4gf9wc33/ +c3Z//3Byef91d33/bnB3/29xdf9wc33/bnF7/3N2f/9zdn//bnB3/3d5f/95e4H/cHJ5/3Bzff95e4H/ +dXiB/3d6g/9wc33/cHJ5/25xe/9wc33/dXiB/3l7gf9zdXz/c3Z//25xe/9wc33/bnB3/3Byef93eX// +cHN9/25wd/9ucHf/Z2px/3Byef9ucHf/bW9z/2dqdP9iZW7/am13/2Rncf9sbnX/c3V8/3N1fP9sbnX/ +b3F1/3h5ff93eX//dXiB/3N2f/9sb3n/cHN9/3l7gf9ucHf/cHN9/3V3ff97fYP/eXuB/3l7gf93eX// +dnh8/3t9g/95e4H/foGK/36Biv9/goz/f4GH/35/g/92eHz/dXiB/3Z4fP92eHz/e32D/3l7gf95fIb/ +c3Z//3V4gf93eoP/Zmlz/2ptd/9zdXz/cHJ5/2dqdP9ucXv/bnF7/3V3ff9sb3n/amxz/25wd/9wcnn/ +d3qD/3Bzff9ucXv/c3Z//2ptd/9ucHf/dXd9/25wd/9sb3n/cHJ5/3Bzff9wc33/c3Z//25wd/9sb3n/ +cHN9/25xe/91eIH/c3Z//25xe/9sb3n/e32D/3l8hv95fIb/c3Z//3V4gf9ucXv/bnF7/3V4gf95fIb/ +d3qD/3V4gf9zdn//d3qD/3Bzff9ucXv/bnB3/2xvef9sb3n/bG95/3N2f/91eIH/cHJ5/2xvef91d33/ +cHN9/3d5f/9ucHf/am13/3Byef9wcnn/dnh8/25wd/9sb3n/c3V8/29xdf9qbXf/bG95/3N1fP9wcnn/ +c3Z//3N2f/93eoP/cHN9/3V4gf9wc33/bnF7/25wd/9zdn//bG95/3Byef9ucHf/bG95/2xvef9zdn// +bG95/25wd/9ucHf/c3V8/3Byef91d33/amxz/25xe/9qbHP/c3V8/2xvef9ucHf/Zmlz/2Rncf9sb3f/ +b3J8/2ttdP9ucXr/cnR7/2xvef9tb3P/bnB3/3V3ff9sbnX/cHN9/3N2f/91d33/cHN9/29yfP9zdXz/ +bnF7/3F0fv90dn3/cXN7/2hrdf9vcXn/b3F5/3N2gP9wcnn/cXN8/3Bzff9ydHv/cnV+/3Z5gv92eYH/ +c3Z+/25xe/9zdn7/cnR9/3J1ff9tcHn/cXR9/3Fzev90d4D/bXB6/3N2gP9wc3z/b3J8/3F0ff9vcnz/ +b3F6/21wd/9ydX3/cHJ7/3J0e/9tb3f/a252/3N1fv9tcHj/cHJ5/3Z4f/9zdXz/Z2px/2psc/9wcnr/ +bW92/3J0e/9ucHn/bnF5/2xvd/9ucHT/cHJ5/21vdv9xc3r/b3F4/3N1e/9vcXn/bG95/25xe/91d33/ +c3V8/3N1fP9qbXf/c3V8/2xudf9sbnX/am13/2xudf9wcnn/cHJ5/21vc/92eHz/d3l//2ptd/9ucXv/ +dnh8/3Byef9wcnn/cHJ5/2xudf9maG7/bG51/3N1fP9wc33/bG51/2ptd/9sbnX/amxz/2ptd/9vcXX/ +dnh8/25xe/9ucHf/bG51/2dqdP9ucXv/cHJ5/25wd/9sbnX/Zmlz/3Bzff9nanT/bnF7/3N2f/9wc33/ +am13/25xe/93eoP/e32D/3V4gf95e4H/cHJ5/3Bzff97fYP/bnB3/3Byef9ucHf/cHN9/25xe/9wc33/ +bnB3/25wd/9ucHf/bW9z/3V3ff9wc33/dXiB/2xvef9wc33/bG51/3Byef9sb3n/bnB3/3N2f/9wcnn/ +c3V8/2psc/9zdXz/c3V8/2dqcf9sbnX/cHJ5/2xudf9sbnX/c3V8/3Byef91d33/dXd9/3Byef9wcnn/ +c3Z//3d6g/9ucXv/bnB3/3N2f/9ucHf/cHJ5/3d6g/9zdn//dXiB/3l8hv97fYP/fX6B/3t9g/91d33/ +d3qD/3l8hv93eX//fn+D/3t9g/97fYP/cHJ5/31+gf97fYP/fn+D/3l7gf9+gIb/d3l//3l7gf9zdn// +d3qD/3t9g/91eIH/dXiB/3N2f/9zdXz/c3V8/3N1fP9wc33/bG95/3N1fP93eoP/c3Z//3N1fP9sb3n/ +cHN9/3Bzff93eX//cHJ5/2ptd/9wcnn/bG95/3V3ff9sbnX/bnB3/3V3ff9ucHf/amxz/25wd/9zdXz/ +bG95/25wd/9sbnX/cHJ5/25wd/91d33/bnB3/25wd/9ucHf/dXd9/2xudf9sbnX/bW9z/2ptd/9qbXf/ +cHN9/2xudf9wcnn/bG51/2ptd/9qbXf/dXd9/2psc/9sb3n/Z2px/3N1fP9qbXf/bnB3/2Zpc/9dYGr/ +a210/29yfP9sbnX/bW92/3Fzev9sb3n/amxz/2xvef9ucXv/bG51/2xvef9zdXz/bnF7/2ptd/9rbnf/ +b3F4/21wev90dnv/dHd7/29xef9maW//bW93/3J0e/9zdXz/bnB4/3Byef9wc3z/dHd//3R3f/94eoP/ +dnmC/3V3gP9rbnf/c3V9/29yfP9vcnz/bnB2/21vdv9qbHL/b3J5/2xveP9sb3n/bXB6/21weP9tb3b/ +bG53/21weP9pa3P/cHJ6/29yev9ydHn/bnB3/25wdf91d33/bnF7/3J0fP93eX//c3V8/2Zobv9sbnX/ +c3V8/3BzfP91dnv/cnR5/3N1e/9xc3j/bW91/21veP9sbnT/bW92/29yev91d3//cHJ5/3Bzff91d33/ +d3l//3N1fP91d33/bG95/3l7gf9ucXv/bnB3/25xe/9sb3n/dXiB/3V4gf9ucXv/dXd9/3N2f/9nanT/ +bnF7/3l7gf9wc33/c3Z//3N2f/9sb3n/Z2p0/29xdf91eIH/c3Z//25wd/9ucHf/cHJ5/2xudf9ucHf/ +bG51/3Z4fP9wc33/cHJ5/3N2f/9nanT/cHN9/3Bzff9wcnn/bnF7/2ptd/95e4H/bG95/3N1fP95fIb/ +e32D/3N1fP9zdn//foGK/3l7gf91eIH/dXiB/3Byef9wc33/e36H/3V3ff91d33/dnh8/3t9g/95e4H/ +dXiB/3N2f/9zdXz/c3Z//3N1fP93eX//c3Z//3t+h/93eoP/eXuB/3N1fP9ucXv/bG95/2xvef9zdn// +cHN9/3Bzff9sb3n/cHN9/3N1fP9qbHP/bG51/3Byef9sbnX/amxz/3Bzff9wcnn/dXiB/3V3ff9wc33/ +bW9z/2xvef9ucXv/bnF7/2xudf9zdXz/bG51/2xudf9ucXv/am13/25wd/9wcnn/bG95/3N2f/9zdXz/ +bnB3/2xvef9wcnn/b3F1/3Z4fP9wcnn/cHJ5/2Zobv9ucXv/bnF7/3N1fP9qbXf/bnF7/21vc/9ucXv/ +bG51/2xvef9ucXv/bG51/2psc/9qbXf/ZGdx/2Zpc/9nanH/bG51/2Jlbv9nanT/bG95/2ptd/9qbHP/ +Z2p0/2xvef9ucXv/dXd9/3Byef9ucHf/cHN9/3Bzff97fYP/cHN9/25wd/93eoP/cHN9/2xvef91d33/ +eXyG/3N2f/93eoP/c3Z//3d6g/9wc33/e32D/3d5f/95e4H/dXd9/3t+h/9zdn//dXd9/3Bzff9wc33/ +bnB3/3V4gf9ucHf/bnF7/2xvef9wcnn/c3Z//3d6g/9ucHf/dXd9/25wd/95fIb/c3Z//3t9g/91eIH/ +am13/25xe/91eIH/b3J7/3F0fP92eH7/c3V8/25wd/9wc33/dXiB/3Byef9wc33/c3Z//3V4gf9zdn// +b3J8/3R2ff9xdH7/cnV+/3h6gP9wc3z/aGt0/21wd/90d3//c3Z//3Byef9vcXb/b3F4/25xe/9xdHz/ +cnR8/3N0ev9wcnv/bG95/3J0fP9vcnr/bnB5/21vdf9xdHv/b3F4/3N2fv9tb3j/cnR9/25xev9vcnv/ +bnB3/3R2fP9ydHv/bG52/21vd/9vcnz/b3F4/25xe/9tcHn/d3l//21wd/9ydHz/dnh8/3Byef9kZmz/ +Z2p0/3Byef9ucXv/dHd9/3N1fP9wc3z/dHd+/2xvef9sb3n/cHJ5/3Bzff90dn3/dnmD/3R2f/91eIH/ +eXyG/36Ahv95fIb/foCG/3V4gf95e4H/cHN9/3Byef9ucXv/c3V8/3V3ff9zdn//bnF7/3Z4fP9wc33/ +ZGdx/2ptd/9zdXz/Z2p0/2xvef9sb3n/Zmlz/2Jlbv9qbXf/c3V8/3N1fP9nanT/bG95/2xvef9qbXf/ +bG51/21vc/9zdXz/bnF7/2xudf9qbXf/YmVu/2xvef9sbnX/bG51/2Zpc/9kZ3H/cHN9/2Zpc/9ucHf/ +c3V8/3Byef9nanH/b3F1/3Z4fP9zdn//cHN9/3Bzff9ucHf/bnB3/3l7gf9wcnn/bnF7/25wd/9wc33/ +c3Z//3Bzff9ucXv/bG95/25xe/9ucHf/dXiB/3d6g/9+gYr/c3Z//3N2f/9vcXX/bnB3/25wd/9tb3P/ +cHN9/2ptd/9sb3n/Z2p0/25xe/9qbXf/ZGdx/2Zpc/9ucXv/am13/2Zpc/9wc33/cHJ5/3V3ff91d33/ +cHJ5/2psc/9qbXf/dXd9/3Bzff9tb3P/cHJ5/2xudf9qbHP/bG95/2psc/9qbXf/bG95/2xudf9wc33/ +bnF7/2ptd/9sb3n/bG95/2ptd/91d33/c3V8/25wd/9kZ3H/bG95/3V3ff91d33/bnB3/3Byef9sbnX/ +bG95/2psc/9qbXf/bG95/2xudf9nanT/bnF7/2dqdP9qbXf/bG51/2ptd/9maXP/am13/2xvef9sb3n/ +am13/2ptd/9zdXz/cHJ5/3Z4fP9wcnn/bnB3/2xvef9sb3n/c3V8/3Byef9sbnX/c3V8/2psc/9nanH/ +bG51/25wd/9tb3P/cHN9/2psc/9sbnX/bG51/3V3ff9ucHf/cHJ5/21vc/92eHz/am13/2dqdP9qbHP/ +bG51/2psc/9zdXz/am13/2xvef9qbXf/bG51/2xvef91d33/bnB3/3Z4fP9tb3P/eXuB/3N1fP93eX// +cHN9/2dqdP9ucHf/dXiB/29yfP9xdHz/dXh//25weP9sbnX/cHJ5/3N1fP9qbXf/bnF7/25xe/9sb3n/ +cHN8/3Byef9ydHv/bnB4/25xev9xc3r/am13/2dqdP9sb3j/bG95/3Bye/9rbnj/am12/2tueP9rbnj/ +bG95/29xeP9rbnf/bnF6/21wev9xdH3/cXR+/3F0ff9vcnv/cnR7/2hrdf9sbnb/bG94/25weP9sbnb/ +b3F5/2xvef9wc33/dHZ8/2ptd/9xc33/dnh8/21wev9ydX7/dHZ8/31+gv9ucHf/c3Z//3l7gf93eoP/ +Z2p0/2xvef9zdn//c3Z//3Z4fv92eH7/cHN9/3J1fv9sb3n/b3J8/2xvef9sb3n/dHd7/3Z4fv9tcHr/ +c3V8/3N1fP91d33/c3V8/3Z4fP9ucHf/dnh8/3N1fP9vcXX/bnB3/25xe/93eoP/c3Z//3Bzff95e4H/ +dXiB/2ptd/9zdn//d3qD/25xe/9zdn//dXd9/29xdf9maGz/b3F1/3V3ff91d33/bnB3/3Byef9ucHf/ +bG51/2xudf9sbnX/dXd9/25xe/9qbXf/bG51/1xfaP9qbHP/amxz/2psc/9iZW7/YmVu/2xvef9iZW7/ +Z2p0/25xe/9sb3n/am13/2psc/91d33/bnF7/3Byef9zdXz/bG95/3Byef91d33/bnB3/2xvef9ucHf/ +bnF7/3Byef9zdXz/cHJ5/25wd/9zdXz/bnB3/3Bzff9wc33/e36H/3Bzff91d33/bG95/3Bzff9wcnn/ +cHJ5/3N2f/9wc33/cHN9/25wd/91d33/bnB3/2dqcf9qbHP/c3V8/3Byef9nanH/bnF7/3N1fP93eX// +dXd9/25xe/9tb3P/cHJ5/3V3ff9zdn//bG95/25xe/9vcXX/b3F1/3N1fP9sbnX/bW9z/2xudf9ucHf/ +c3Z//3V4gf9ucHf/bnF7/25xe/9wcnn/d3qD/3V4gf9zdn//bG95/3N2f/93eoP/eXuB/3Bzff91eIH/ +cHN9/25xe/9ucHf/bnF7/3Bzff9ucXv/bnB3/3d5f/9sb3n/bnF7/3Bzff9wc33/bG95/3Byef9zdn// +cHN9/3Bzff9zdXz/d3qD/3V4gf97fYP/cHJ5/3N2f/9wc33/c3Z//3d5f/9zdn//cHJ5/3V4gf9wc33/ +cHN9/3N2f/93eoP/dXiB/3t9g/9zdXz/cHN9/3Bzff91d33/c3Z//3N2f/9sb3n/c3Z//2xudf9ucHf/ +bnB3/25wd/9qbHP/c3Z//3Bzff9zdn//bG95/3Byef9sbnX/d3l//2ptd/92eHz/bW9z/3d5f/9zdXz/ +d3l//3Bzff9maXP/bG95/3Bzff9sbnX/bnF7/3F0fv9xdH3/bnF7/3N2f/93eX//bG95/3Bzff91d33/ +dXd9/3Byef9ucHf/cXN6/21veP9sb3f/bXB4/2tudv9oa3X/am1z/2xud/9zdn3/am13/2tudv9oa3X/ +Zmlz/2hrdf9pbHP/aGt0/2hqcP9naW//Zmhu/2hrdf9oa3L/Z2p0/3N1fP9sbnX/bW9z/25wd/9sb3n/ +bG95/25xe/9sb3n/cHN9/3N2f/9qbXf/bnF7/3N2f/9ucHf/dXiB/3Z4fP99foH/b3F1/3N1fP94eX3/ +c3V8/2dqcf9qbHP/cHJ5/3N1fP91d33/dnh8/3Byef9zdn//bG51/3Byef9ucHf/bW9z/3V3ff91d33/ +bG51/3Byef9ucXv/c3V8/2xvef9zdXz/bG95/3d5f/9ucXv/bG51/3N1fP9ucHf/dnh8/3Byef9ucXv/ +d3l//3Bzff9nanT/c3Z//3d5f/9ucHf/cHJ5/3Z4fP9vcXX/ZWZq/29xdf9zdXz/dnh8/2ptd/9wc33/ +cHN9/25xe/9ucHf/bnB3/3N2f/9wc33/bnB3/3Byef9maG7/bG51/2xudf9qbXf/Zmlz/2Zpc/9sb3n/ +YmVu/2psc/9sb3n/am13/2dqdP9sbnX/bnF7/2xvef9ucXv/bnF7/2xudf9qbXf/bnF7/2xudf9qbXf/ +amxz/2xvef9sb3n/bnF7/2xudf9nanH/c3V8/2xudf9ucHf/bnF7/3d6g/9wcnn/dnh8/25wd/9wcnn/ +b3F1/29xdf9zdXz/bG95/3N1fP9sbnX/c3V8/2xvef9maXP/ZGdx/25xe/9qbXf/Zmlz/3Byef9zdXz/ +eHl9/3Z4fP9wcnn/bnB3/3Bzff91eIH/c3V8/29xdf9ucHf/bW9z/21vc/9wcnn/bG51/2xvef9sbnX/ +bG51/3Bzff9sb3n/ZGdx/2dqcf9maG7/Zmlz/2xvef9wc33/bnF7/2dqdP9ucHf/c3V8/3V3ff9sbnX/ +c3V8/2ptd/9ucXv/am13/2xvef9ucXv/bnB3/2xudf91d33/amxz/2xudf9ucHf/b3F1/2dqcf9ucHf/ +bnB3/25xe/9ucHf/bG95/3N1fP92eHz/dXd9/2xvef9wc33/cHJ5/25xe/9zdn//cHN9/3Byef91eIH/ +bnF7/25xe/9sb3n/dXiB/3V4gf9+gIb/dXd9/3V4gf91eIH/e32D/3N2f/93eoP/bnB3/3V3ff9sb3n/ +bnB3/25wd/9sb3n/bG51/3N2f/9wc33/dnh8/25wd/9zdXz/bG95/3d5f/9qbXf/dXd9/21vc/93eX// +cHN9/3Bzff9sb3n/ZGZs/3Byef9wc33/am13/29yfP9zdoD/c3Z+/3Byef93eoP/eXuB/3Byef93eoP/ +e32D/3l7gf91eID/dnmB/3t9gP92eIH/c3Z+/3R3f/9ydH3/cnV+/3J0ff9wcnn/eHqE/3N1fv9sb3n/ +bG95/25wd/9zdXz/bW9z/2xudf9ucHf/bG95/29xdf9zdXz/cHJ5/25xe/9qbXf/ZGdx/2psc/9qbXf/ +amxz/21vc/9wcnn/b3F1/3Byef9wc33/Z2p0/25xe/91eIH/bnB3/3d6g/95e4H/f4GH/3N1fP93eoP/ +e36H/3d6g/9wc33/bnF7/3t9g/95e4H/eXuB/36Ahv93eoP/eXuB/25xe/91eIH/c3Z//2xvef91d33/ +dXd9/2xudf9ucHf/cHJ5/3N1fP9zdXz/eHl9/3Bzff91eIH/cHN9/25xe/9zdXz/c3Z//3d5f/93eoP/ +dXiB/3d5f/9wc33/amxz/3Bzff93eX//bG95/3V4gf95e4H/cHJ5/2dqdP9ucHf/d3l//3l7gf9ucXv/ +cHN9/25xe/9sbnX/bG51/21vc/9ucXv/cHJ5/2xudf9ucXv/Zmlz/2ptd/9sbnX/am13/2dqdP9nanH/ +bnF7/2Zobv9ucHf/bnF7/25wd/9qbHP/am13/3Bzff9ucXv/bnB3/3Bzff9sbnX/bW9z/3N1fP9wcnn/ +bnB3/29xdf9ucHf/bG51/3Byef9qbXf/Zmlz/25xe/9nanH/bG95/25xe/91eIH/am13/3Bzff9nanT/ +am13/2Zpc/9nanT/cHN9/21vc/9zdXz/bW9z/3V3ff9ucXv/Zmlz/2dqdP91d33/bnF7/2ptd/9wc33/ +bG95/3V3ff93eX//cHN9/2psc/9qbHP/am13/2xvef9qbHP/bnF7/2dqcf9qbHP/bG95/2psc/9ucXv/ +bG51/21vc/91d33/cHJ5/2ptd/9sbnX/bG51/2psc/9ucHf/cHJ5/3Byef9qbHP/cHJ5/3N1fP94eX3/ +bnF7/3Bzff9ucXv/cHJ5/25wd/9wcnn/cHN9/25wd/9ucHf/dnh8/2dqdP9qbXf/bG51/21vc/9kZmz/ +b3F1/25wd/9zdXz/bnB3/25wd/9ucHf/c3V8/3V3ff9ucHf/c3Z//25wd/9ucHf/c3V8/3Bzff9wcnn/ +c3Z//2xvef9nanT/am13/3N2f/9ucXv/d3l//3Bzff9wc33/c3Z//3l7gf9wc33/c3Z//2xvef92eHz/ +bnB3/29xdf9ucHf/bnF7/2xvef91d33/c3Z//3V3ff9sb3n/cHJ5/29xdf91d33/bG51/3Z4fP9tb3P/ +d3l//3V3ff9wc33/cHN9/2Rncf91eIH/c3Z//2xveP9vcnz/c3aA/3V4gP9sb3n/dXiB/3V3ff9sbnX/ +c3V8/3Z4fP91d33/c3V8/29xdf9xc3n/cHJ5/3Fzev9vcXb/bG95/3Bzff9ucHf/bnB3/3V3ff9wcnn/ +bG95/2xudf9nanT/cHN9/2psc/9maXP/amxz/2psc/9qbHP/bG95/25xe/9sb3n/dXiB/3N1fP9wc33/ +d3qD/3N1fP9wc33/dXiB/3l7gf95e4H/d3qD/25xe/95e4H/d3qD/3N1fP91eIH/dXd9/3l8hv9sb3n/ +c3V8/3V3ff9wcnn/Z2p0/2Zpc/92eHz/dXd9/3V3ff91d33/bnB3/3Bzff9nanH/bnB3/2xvef9qbXf/ +bnF7/3Bzff9sbnX/cHJ5/3N1fP9wc33/c3Z//3t9g/91eIH/foGK/3d6g/93eoP/c3Z//3l7gf97fof/ +eXuB/3d6g/97fof/eXuB/3V3ff95fIb/e36H/3V4gf95e4H/eXyG/3Bzff9qbXf/cHJ5/3N2f/93eX// +bG51/3Byef9ucHf/bG51/25wd/9ucHf/c3V8/3V3ff9sbnX/bnF7/2Rncf9qbXf/Z2p0/2dqcf9nanH/ +YmVu/2xvef9iZGr/bG51/25xe/9sb3n/Z2p0/2xudf9wc33/bG95/2xvef9zdXz/bG51/2xudf9wc33/ +bG95/2dqdP9maXP/am13/2ptd/9sb3n/amxz/2Zpc/9zdXz/am13/2ptd/9ucXv/dXd9/2dqdP9qbXf/ +YmVu/2dqdP9iZW7/Z2px/2ptd/9maXP/bG95/2Zobv9qbXf/Zmlz/2BjbP9gY2z/bnF7/2ptd/9maXP/ +am13/2psc/9wc33/bnF7/2dqdP9ucXv/c3Z//3Bzff9wc33/bG95/3N2f/9ucHf/bG95/25xe/9sb3n/ +c3V8/25xe/9tb3P/dXd9/25wd/9ucHf/b3F1/25wd/9qbXf/am13/25wd/9sb3n/Zmlz/2ptd/9ucXv/ +c3V8/2ptd/9ucXv/bG51/2xvef9sb3n/bG95/2xvef9ucHf/am13/3Bzff9nanT/am13/2ptd/9sbnX/ +YmVu/2psc/9nanT/bG95/2psc/9qbHP/am13/25xe/9sb3n/amxz/25xe/9qbXf/bG51/25xe/9sb3n/ +bG51/2xudf9kZ3H/Z2p0/2Rncf9sb3n/cHJ5/3N1fP9sb3n/bW9z/25wd/91d33/c3V8/3V3ff9ucHf/ +eXuB/25wd/9wcnn/am13/2xvef9qbXf/c3Z//3V3ff91d33/b3F1/3Byef9ucXv/d3l//25xe/93eoP/ +cHJ5/3d6g/9ucXv/c3Z//3V4gf9maG7/dHeA/29ye/9rbnf/cHN8/3R2fP9vcnz/bG51/3Bzff91d33/ +bG51/3N1fP9zdXz/c3V8/3N1fP9tb3P/bnB3/3N1fP9ucXv/am13/2psc/9sb3n/am13/2psc/9zdXz/ +Z2p0/2xvef9nanH/amxz/3N1fP9sbnX/bG51/2xudf9tb3P/b3F1/3Byef91d33/cHJ5/3V4gP9zdXz/ +c3Z//3R3gP9ucXv/bnB3/2xvef9ucXv/cHJ5/3J0e/9rbXP/dHZ9/3V3ff9vcXj/cnR7/3R2fP91eIH/ +bW90/25xe/9zdXz/am13/2dqcf9maG7/dXd9/3Byef92eHz/dXiB/25xev90d4D/aGt1/3N2f/9xdH7/ +b3F4/3V4gf92eYH/c3V8/3d6g/95fIb/d3qD/3l8hv9+gYr/eXyG/4GDiv91eIH/dXiB/3V4gf91eIH/ +eXyG/3t9g/9ucXv/d3l//25xe/9ucHf/c3V8/3h5ff9ucXv/d3l//3V3ff9ucHf/Zmlz/29xdf92eHz/ +dnh8/2psc/9tb3P/cHJ5/2ptd/9sb3n/bG95/3N2f/91eIH/c3Z//3V4gf9qbXf/bnF7/25wd/9ucHf/ +bnF7/2Zpc/9zdn//Zmhu/29xdf9wc33/bG95/2dqdP9ucHf/d3qD/25xe/9wc33/cHN9/25wd/9ucHf/ +eHl9/3N1fP9ucHf/bnB3/25wd/9ucHf/bnF7/2xudf9qbHP/dXd9/2xudf9sb3n/cHN9/3V3ff9ucHf/ +cHJ5/2Zpc/9qbXf/Z2p0/21vc/9ucXv/am13/25wd/9vcXX/dnh8/25wd/9kZ3H/Zmlz/3V3ff9tb3P/ +bW9z/3Bzff9ucHf/dXiB/3l7gf9zdn//bG51/3N1fP9ucXv/cHN9/25wd/92eHz/bnB3/25xe/9wcnn/ +bnB3/3Bzff9ucHf/bnB3/3N1fP9wcnn/bG51/2xudf9qbXf/am13/2ptd/9qbXf/bnF7/2dqcf9sb3n/ +bnF7/3Bzff9sb3n/bG95/2xudf9sb3n/Zmlz/2dqdP9nanT/amxz/2dqcf9wc33/Zmlz/2ptd/9qbXf/ +am13/2Jlbv9sbnX/bG95/3V3ff9ucHf/bnB3/3N2f/93eoP/c3Z//3Byef91eIH/c3Z//3N1fP95fIb/ +dXiB/3V3ff91eIH/c3V8/3N2f/9ucXv/eXyG/31+gf9+gIb/dXiB/3V3ff91eIH/e32D/3d6g/93eoP/ +bnF7/3t9g/9sb3n/bG95/2dqdP9wcnn/am13/3V4gf93eX//dXd9/25wd/9wc33/cHN9/3d6g/9wc33/ +eXyG/25wd/94eX3/c3V8/3N1fP9zdXz/Zmhs/3V4f/9zdoD/bnB5/3R3gf92eH7/c3Z//25xe/93eoP/ +dXd9/29xdf9zdn//dXd9/3V3ff9wcnn/bG51/25xe/9zdXz/bnF7/21vc/9tb3P/cHJ5/2xvef9sbnX/ +dXd9/2xvef9wcnn/bG95/2dqdP91d33/bnB0/21vdv9tb3b/am13/2xudP9tcHr/c3V9/2xvef90d4D/ +b3J5/29xef9zdn3/cXN4/29xdv9tb3f/bXB6/2xvef9xdH3/Z2pz/3N1ff91d33/b3J5/3Fzev90dnv/ +dXd+/25wdf9wc33/dXd9/25xe/9qbXf/bnF7/3l7gf9zdn//eXuC/3Z5g/90d4D/d3mA/2xueP91d3// +dHeB/3N1e/95e4L/eXuB/3J0fP91eIH/cHN9/3Bzff9wc33/eXuB/3Bzff95fIb/cHN9/3N1fP9ucXv/ +bG95/3Byef9ucXv/Z2p0/25xe/9qbXf/Z2p0/2ptd/9zdXz/am13/3V3ff9zdXz/bG51/2Rncf9sbnX/ +dXd9/3Z4fP9nanT/bG51/25xe/9qbXf/am13/2ptd/9sb3n/cHN9/2xvef9ucXv/Zmlz/2ptd/9ucHf/ +bnB3/2xudf9kZmz/dnh8/2Zobv9ucHf/c3Z//2xvef9qbHP/bnB3/3d6g/9zdn//cHN9/3N2f/9wc33/ +cHN9/3l7gf9ucXv/bG95/2xvef9ucXv/cHN9/3N2f/9wcnn/bG95/3V3ff9ucHf/bnB3/3V3ff92eHz/ +am13/25xe/9kZ3H/bG51/2psc/9qbHP/bG95/2dqdP9qbXf/amxz/25xe/9qbXf/Zmhu/2Zobv9zdXz/ +bW9z/2psc/9ucXv/ZGdx/3N1fP91d33/c3V8/3Byef91d33/dXd9/3V3ff9ucHf/dXd9/25wd/9ucXv/ +bnF7/25wd/91d33/dXiB/25xe/91eIH/cHN9/2xvef9ucHf/cHN9/2xvef9ucXv/bnF7/3Bzff9ucHf/ +c3Z//3d6g/9zdn//cHN9/3Byef9tb3P/c3V8/25wd/9sb3n/am13/2psc/9qbHP/bG95/2Zpc/9nanT/ +am13/2ptd/9kZ3H/amxz/2ptd/91d33/bG51/21vc/9wcnn/c3V8/3Bzff9nanH/bnF7/2xudf9tb3P/ +cHJ5/2xudf9qbXf/bG51/25wd/9sbnX/Zmlz/25xe/91d33/c3V8/2xudf9sbnX/bnB3/3N1fP9zdXz/ +dXd9/2xudf91d33/Zmlz/2ptd/9maXP/am13/2psc/9wc33/cHN9/3Bzff9qbHP/bG95/2ptd/9sb3n/ +Zmlz/3V3ff9nanH/cHN9/2ptd/9ucXv/am13/2RmbP90dXv/cnR9/2ttdv9ucXn/cnV+/3N1fP9ucHf/ +c3Z//3V4gf9zdXz/dXiB/3N2f/95e4H/dXiB/3Bzff95fIb/eXyG/3t9g/9zdn//c3V8/3l8hv94e4H/ +dXd9/31/hf96fIL/eHuE/3Z5gf9zdXz/en2F/3R3f/9xc3r/cnR7/29xeP9wcnn/cXR8/3d5fv9wc3v/ +c3Z+/3Fzev9vcXj/cnR7/3J0ef9xc3r/b3F2/25wef9vcnr/cnR5/2ptc/9ydHz/dXd//3R2fP9vcnv/ +cHJ5/3R3gf9vcXj/c3Z//3p8gv9wcnn/Z2p0/2dqdP93eX//dnmC/3V3fv9ydX3/bXB6/29yeP9maXP/ +Z2py/2ptdf9nanT/bnF5/3J1ff9sb3b/cHN9/3Bzff9ucXv/cHN9/3l8hv91eIH/d3qD/3N2f/9zdn// +c3V8/3Bzff91eIH/cHN9/3N2f/93eX//c3Z//25wd/9wc33/c3Z//25wd/93eX//d3l//21vc/9iZW7/ +am13/3N1fP93eX//am13/2xudf9wcnn/bW9z/2xudf9sbnX/bG95/3N1fP9ucXv/cHN9/2dqdP9wc33/ +c3V8/3Bzff9ucHf/bG95/3d6g/9sb3n/cHN9/3l7gf9wc33/bnF7/3N2f/9+gIb/eXyG/3N2f/91eIH/ +c3Z//3Bzff91d33/cHJ5/25xe/9sb3n/bG95/25wd/9sb3n/Z2p0/2Rncf9ucXv/Zmlz/2dqdP9sb3n/ +c3V8/2psc/9wc33/am13/2xvef9qbHP/am13/25xe/9nanT/bG51/21vc/9zdXz/bG95/2Rncf9kZ3H/ +cHN9/2ptd/9nanT/bnF7/2dqdP9zdXz/dXd9/3V3ff9ucXv/cHN9/25xe/9wc33/amxz/2ptd/9nanT/ +amxz/2dqdP9qbHP/bnF7/2ptd/9qbHP/Zmlz/2Rncf9iZW7/Zmhu/2Rncf9iZW7/ZGdx/2Zobv9maXP/ +YmVu/2Rncf9maXP/Zmlz/2Zobv9kZ3H/Zmhu/2dqdP9maXP/Zmlz/2dqcf9kZ3H/Z2px/25xe/9qbXf/ +am13/2xvef9sb3n/Zmlz/2ptd/9ucHf/dXd9/3Byef9ucHf/bnF7/3N2f/9zdXz/bnB3/3Bzff9ucXv/ +bnB3/3V3ff9ucHf/bnB3/25wd/9ucHf/am13/2Zobv9zdXz/c3V8/3Byef9sbnX/bW9z/21vc/9wcnn/ +cHJ5/3Bzff9sbnX/dXd9/2dqdP9sbnX/Zmlz/2dqdP9nanT/bnF7/3N1fP91d33/bnB3/3V3ff9ucXv/ +cHJ5/25wd/92eHz/b3F1/3N1fP9zdXz/dnh8/25wd/9kZmz/bnB1/25xe/9tb3f/cHN9/3l7gf91eIH/ +c3Z//3t9g/9wc33/bnB3/3Bzff9zdn//d3l//3V3ff9sb3n/bnF7/3Byef90dn3/bXB3/2ptdv9vcnv/ +cnV+/21wdf9zdXz/bG93/25xev9tcHn/aGpz/3J0ev9wc3v/b3F6/3Bye/9pbHX/bnF5/2xvd/9xdH7/ +a254/2ptd/9zdXv/bG95/29yev9zdXv/bnB2/25wdv9vcXX/b3F4/25wdf9sb3b/cHJ5/3V3fP93eX// +bnB3/3ByeP91eIH/bW94/3V3fv93eX//bW95/2Zpc/9nanT/dXd9/3R2ff9wcnn/cHN7/2xvef9rbnT/ +Zmlz/2RncP9oa3P/Y2Zv/2Vocf9qbXb/a212/25xe/9qbXf/Z2p0/2dqdP9zdXz/bG95/3Byef9ucHf/ +bG95/2ptd/9wc33/c3V8/2ptd/9sb3n/cHN9/2xvef9qbXf/am13/3Bzff9tb3P/dnh8/3l8hv9vcXX/ +Zmhu/2xudf92eHz/d3qD/2xvef9ucXv/c3Z//3N1fP9wcnn/bG95/3Bzff93eX//c3Z//3V4gf9qbXf/ +c3Z//25wd/9wcnn/cHJ5/2ptd/95e4H/am13/3Byef9zdn//c3V8/2ptd/9zdn//foCG/3l8hv93eoP/ +eXuB/3V4gf95fIb/eXyG/3l7gf93eX//cHN9/3d6g/91eIH/d3qD/3N1fP9ucXv/e32D/3N1fP9zdn// +dXiB/3l7gf9wc33/cHN9/25wd/9wc33/cHJ5/25wd/91d33/amxz/2xudf9ucHf/dnh8/25wd/9kZ3H/ +ZGdx/3N1fP9qbXf/bG51/3Bzff9nanT/bnF7/3V3ff9zdXz/bG95/3Bzff9qbHP/bG95/2dqdP9sb3n/ +Z2p0/2xudf9qbHP/am13/3Bzff9ucXv/bG51/25wd/9qbXf/Z2p0/2xudf9qbXf/amxz/2ptd/9nanT/ +Z2p0/2Zpc/9qbXf/bG95/25xe/9ucXv/bG95/2xudf9ucXv/Z2p0/2xudf9qbHP/am13/2xudf9wcnn/ +bG51/2xudf9wcnn/bG95/2Rncf9sbnX/bnB3/3V3ff9wcnn/b3F1/25xe/91eIH/c3Z//25wd/9wc33/ +cHN9/3Byef9zdn//bnF7/2ptd/9ucXv/bG95/25wd/9kZ3H/bnF7/25xe/9sb3n/Z2p0/2ptd/9sbnX/ +bnF7/2xvef9qbXf/Z2p0/3N1fP9kZ3H/Z2px/2BjbP9iZW7/ZGdx/3N1fP9ucXv/am13/2xudf9wc33/ +bG95/2xvef9qbXf/dXd9/21vc/91d33/bnF7/3h5ff9ucHf/ZGZs/3Bydv9ucXv/bG95/25xe/9zdn// +d3qD/25xe/93eX//c3Z//25wd/9zdn//c3Z//3l7gf95e4H/cHJ5/3Bzff9vcnz/dXd+/3Byef9rbnj/ +cHN7/3Fze/9sbnb/cHJ4/2tueP9sb3j/bG95/2psc/9ydXz/cXN7/2lsdv9ydX7/aWtx/3Bye/9oa3T/ +bXB5/2RncP9laHL/bW93/2ptd/9sb3n/bnF6/2ptd/9qbXf/am13/2xvef9qbHT/a210/21vc/90dnz/ +dHZ8/25wd/9vcXb/c3Z//2xvd/9xdH3/cXR+/2tueP9maG7/Zmhu/3V3ff9zdX3/bnF7/3R3fv93eX7/ +c3V8/3J1fv9ucXr/bnF6/2tud/9vcXj/dXiA/3R2fv9wc33/bnF7/25xe/9sbnX/dXd9/3V3ff91eIH/ +dnh8/3N1fP9wcnn/bnF7/3d5f/9ucHf/cHJ5/3N1fP9zdXz/bnB3/3Byef9zdXz/b3F1/3Z4fP93eX// +bnB3/2dqcf9ucXv/dXd9/3l7gf9vcXX/bG95/3V4gf9zdXz/bnF7/2ptd/9wc33/d3l//3Bzff9zdn// +am13/3N2f/9wcnn/c3V8/25wd/9maXP/d3l//2dqcf9ucHf/bnB3/25xe/9nanT/cHJ5/3V3ff9wc33/ +cHN9/3N2f/91d33/cHJ5/3Byef9ucHf/bnB3/2dqcf9zdXz/bnB3/3Bzff9sb3n/Z2p0/3V3ff9ucHf/ +bnB3/3N2f/95e4H/cHN9/3N2f/9sb3n/cHJ5/2xudf9ucHf/dXd9/2xudf9ucHf/bnB3/3Z4fP9ucHf/ +Z2px/2ZobP9zdn//bnF7/25wd/9zdXz/amxz/3Byef91d33/bG95/2xvef9wc33/bG51/25xe/9ucXv/ +c3V8/2xudf9sbnX/Z2p0/2xudf9ucXv/bG95/2dqdP9sb3n/amxz/2Rncf9qbHP/bnF7/2dqcf9sb3n/ +am13/2ptd/9qbXf/bG95/25xe/9ucXv/bnF7/2xvef9qbHP/bnF7/25xe/9qbXf/Z2p0/21vc/9sbnX/ +bnF7/21vc/9ucHf/cHN9/3Byef9maG7/bnB3/3Byef9zdn//c3Z//2xvef9sb3n/cHN9/3N2f/9ucHf/ +cHN9/3N1fP9ucHf/dXiB/3Bzff9qbXf/cHN9/25wd/9ucHf/Zmlz/3V4gf93eoP/cHN9/2xvef9wcnn/ +bG95/25xe/91d33/bnF7/25xe/93eX//amxz/2xudf9qbHP/Zmlz/21vc/92eHz/dXd9/3Byef9tb3P/ +d3l//2xvef9ucXv/amxz/3N1fP9nanT/bG95/2dqdP9sb3n/Zmlz/2Jlbv9sbnX/am13/2psc/9sbnX/ +bnB3/3V3ff9sbnX/dXd9/3Byef9qbHP/bG51/2xvef9zdXz/c3V8/2ptd/9xdH3/bG54/25xe/9ucHf/ +am11/25wd/9tb3b/bG52/2tudP9rbnf/aGt0/2Zpc/9naW//cXN6/3R2fP9qbXf/cnR8/2Zob/9kZ3H/ +ZWhy/25wd/9laHH/aGt1/3Bzff9ucXv/cHN9/3Bzff9ucHf/amxz/29xdv9wcnr/b3F4/21vdv9ucHX/ +dnh8/3V3ff9xc3v/cHN4/3N1fP9ydHz/dHeA/3h6gP9wcnn/Zmlz/2Zobv9wc33/cXN5/3Fzev9ydHr/ +c3V8/29xef9tcHj/b3F3/2xudv9pa3T/bnF5/3N1fP9xc3n/c3V8/29xdf9ucXv/bG95/3d5f/91eIH/ +d3qD/3N2f/9zdn//cHN9/3N2f/95e4H/c3Z//3N2f/9zdn//cHN9/2xvef9ucHf/c3Z//25wd/93eX// +d3l//3N2f/9maXP/cHN9/3N2f/93eX//bnB3/3Byef91d33/b3F1/29xdf9sbnX/dXd9/3N1fP9ucHf/ +cHJ5/2Zobv9ucHf/am13/2ptd/9tb3P/Zmhu/3V3ff9iZW7/am13/2xvef9sbnX/Zmlz/2ptd/9zdXz/ +c3V8/3N1fP91d33/bnF7/2xvef9zdXz/bnB3/25wd/9nanT/dXiB/25xe/9zdn//bnB3/2dqdP9zdn// +am13/25xe/9zdn//dXiB/25wd/9zdn//am13/25xe/9vcXX/bnF7/3N1fP9sbnX/bnB3/3Byef92eHz/ +bnB3/2Zpc/9kZmz/cHJ5/2xvef9nanT/bnF7/2Zpc/9sb3n/c3Z//2xvef93eoP/dXiB/25wd/9zdn// +c3Z//3V3ff9ucHf/bnB3/2ptd/9ucHf/cHN9/3V4gf9wcnn/c3Z//25xe/9ucHf/bG95/3Bzff9wcnn/ +dXiB/25xe/9ucXv/bnB3/3Byef9wc33/cHN9/25xe/9ucXv/bnB3/3N2f/9sb3n/b3F1/2xvef9vcXX/ +bnB3/3N2f/9ucHf/bnB3/3Bzff9wc33/Zmlz/3Byef9zdXz/dXiB/3V4gf9ucHf/bG95/3N2f/91d33/ +bG95/3N2f/91eIH/bnF7/3d5f/9ucXv/am13/3Bzff9ucHf/bnB3/2ptd/93eX//dXiB/3N2f/9sb3n/ +cHJ5/2xudf9ucXv/c3Z//3N1fP9zdXz/dXiB/2xvef9wcnn/am13/2dqdP9ucHf/dXd9/3h5ff9zdXz/ +bnB3/3h5ff9zdXz/c3V8/29xdf92eHz/bnB3/25xe/9qbXf/bnF7/2xvef9kZ3H/amxz/2dqdP9iZW7/ +Z2p0/2xvef9ucXv/amxz/3N1fP9sb3n/ZGdx/2psc/9nanT/bG95/2xvef9oanH/cHN8/2tudv9sb3n/ +bW92/21vd/9vcXj/b3F2/3J0e/9vcXj/dHZ8/2ptd/9oa3L/bW9z/3d5f/94eoD/cHJ5/3p8gv9ucHf/ +cnR7/25wdP90dn3/bG52/3Bzev92eH//bnF7/3N2ff9xc3r/bnB4/2hrcv9tcHf/bXB6/2xudf9sbnX/ +am10/2xvef9ydHr/am10/2ttcv9ucXn/aWx0/3J0fP9vcnn/a213/2Rncf9kZmz/bnF7/3Byef9sb3n/ +dHZ8/3Bze/9sb3f/a212/2xvd/9rbnb/aGt1/25wef9sb3n/bG93/3Bzff9maXP/Z2p0/2psc/9ucXv/ +bG95/3N1fP9maXP/ZGdx/2Rncf9nanT/bG95/2Zpc/9kZ3H/Zmlz/2Zpc/9kZ3H/Zmlz/2Zpc/9iZW7/ +bG51/2xvef9kZ3H/XWBq/2Zpc/9sb3n/cHJ5/2Rncf9nanT/dXd9/2xudf9sbnX/am13/25xe/91d33/ +bG95/3N1fP9nanH/dXd9/25wd/9ucXv/bnB3/2dqcf94eX3/Zmlz/2xvef9ucXv/b3F1/2xudf9sbnX/ +c3V8/3N1fP91d33/dnh8/3N1fP9ucHf/cHJ5/2xudf9ucHf/Z2px/3N1fP9wcnn/bG95/2dqdP9iZW7/ +bnF7/2Zpc/9sb3n/cHN9/3d5f/9qbHP/c3V8/2psc/9wcnn/b3F1/3Bzff9zdXz/bnB3/2xudf9wcnn/ +c3V8/29xdf9qbHP/Zmhu/3Byef9ucHf/bnB3/3V4gf9wcnn/dXiB/3l8hv91eIH/c3Z//3V4gf9sb3n/ +d3qD/3V4gf95e4H/cHJ5/3N1fP9sb3n/bG95/3N2f/9wc33/cHJ5/3V3ff9ucHf/bnB3/25wd/9zdXz/ +bG51/3N1fP9sbnX/bnF7/21vc/9ucHf/c3V8/25xe/9sb3n/am13/2ptd/9sb3n/amxz/2psc/9nanT/ +Z2px/2xudf9ucXv/amxz/2Zpc/9sb3n/bG95/2BjbP9nanT/bW9z/25wd/9ucHf/amxz/2xudf9sb3n/ +c3V8/2ptd/9ucXv/dnh8/3Byef93eX//cHN9/2ptd/9zdXz/bG51/2xudf9qbHP/dXd9/3N1fP9zdXz/ +amxz/25wd/9ucHf/bnB3/3V3ff9wcnn/dXd9/3d5f/9ucHf/b3F1/2ptd/9nanT/bnB3/3V3ff92eHz/ +c3V8/2xudf92eHz/dXd9/3V3ff9wcnn/dnh8/3Byef9wc33/cHJ5/3Byef9zdXz/Zmhu/21vc/9qbXf/ +Zmlz/21vdv9xdH7/dXd9/21vc/9zdXz/bnF7/2Rncf9sbnX/bnF7/25xe/9ucXv/aWxz/3Bze/9ydHr/ +c3aA/3J1fv9ydXv/c3V8/3F0ff92eH//dnmC/3V4gf9sb3n/bXB6/29xef95e4H/eXuE/29yfP93eoT/ +bnF4/3J1f/9zdXz/cnV+/29xdv9zdXz/c3Z+/29yev92eH7/b3F4/2xvef9rbXT/cHJ5/29xeP9xc3f/ +bW9z/29xeP9xc3r/c3V9/3Bye/9zdXv/dXh//3Byef9xc3r/c3V8/29xdf9nanH/Zmhu/25wd/9sb3n/ +bG95/3R2fP9ucXr/bG94/2hrdf9ucXv/aGt1/2dqc/9rbnf/bG94/2lsc/9nanT/XWBq/2Zobv9maG7/ +bG95/2xvef9ucHf/Zmlz/2Zobv9maG7/Zmlz/2ptd/9maXP/ZGdx/2dqdP9nanT/Zmhu/2dqdP9nanT/ +YGNs/2xudf9ucHf/Zmhu/11gav9maXP/am13/3Byef9maXP/Z2p0/25wd/9maG7/Z2px/2Rncf9sb3n/ +bnF7/25xe/9wc33/Zmhu/3Bzff9nanT/bG95/2psc/9maXP/c3V8/2Jlbv9sbnX/bnB3/2xudf9maXP/ +Zmlz/3Bzff9ucXv/bG95/25xe/9ucXv/bnF7/2xvef9sbnX/bnF7/2dqdP9zdXz/c3V8/3Byef9tb3P/ +ZGZs/3Byef9sbnX/cHJ5/3V3ff93eX//b3F1/25wd/9nanH/bnF7/3Byef91eIH/dXiB/3N1fP9zdXz/ +c3Z//3d6g/9wc33/bnF7/2xvef9zdn//c3Z//3N1fP91eIH/bG95/25xe/91eIH/c3Z//2xvef9zdXz/ +amxz/3N1fP9qbXf/cHN9/2psc/9qbHP/amxz/2dqdP9ucXv/Z2p0/2psc/9sb3n/Z2p0/2Zpc/9qbXf/ +bnF7/2ptd/9sb3n/am13/2xvef9vcXX/cHJ5/3Z4fP9zdXz/c3V8/3Byef9wcnn/dnh8/25xe/9sb3n/ +bG95/2xvef9sb3n/dXiB/3N1fP9wcnn/dXiB/3Bzff9qbXf/bnF7/25wd/9sb3n/bnB3/29xdf9sbnX/ +c3V8/3V3ff9sbnX/cHN9/3N1fP9ucHf/c3V8/2xudf9nanH/bG95/29xdf9ucHf/ZGdx/3N1fP9sb3n/ +bG95/2Zpc/9sb3n/Zmlz/25wd/9wc33/bnF7/25xe/9zdXz/Z2p0/25wd/9qbHP/Z2px/2ptd/9zdXz/ +dXd9/2xvef9sbnX/dXd9/2xvef9ucXv/Zmhu/2ptd/9nanH/bG95/2psc/9qbXf/Zmlz/11gav9laHL/ +Z2lv/1xfaP9naW//am12/2xvef9sbnX/Z2p0/2Zpc/9iZW7/amxz/25xe/9ucXv/c3V8/2tud/9ydHv/ +cHJ4/25xev9tb3b/bG51/21wef9ucHf/cXN6/3R2fP9wcnj/bG51/21vdv9rbXb/dHZ+/3J1fP9rbnb/ +dHZ9/2xudf9tb3b/cXN5/2xvd/9ucHf/cHJ7/3Bzev9wcnn/c3V8/2xvef9ucHf/bG94/3J0ff9xc3v/ +dHZ+/29yev9xdHz/bXB5/3BzfP9ucHr/dXeA/3h6gP9ydX7/cHN9/3N2f/9ucHf/am13/2dqdP9wc33/ +cHN9/3N2f/95fIX/cXN9/25xe/9oa3X/c3V8/25wd/9sb3n/cHN9/3V3ff9wcnn/cHN9/2xvef9wc33/ +bG95/3V3ff91d33/d3l//3N1fP9ucHf/b3F1/3V3ff94eX3/dXd9/3Byef9zdXz/cHJ5/2dqdP9sb3n/ +bnF7/2xudf91d33/cHN9/2psc/9iZW7/am13/3Bzff9ucXv/amxz/2ptd/9zdXz/Z2px/2psc/9maXP/ +Z2p0/2dqdP9maXP/Z2p0/2BjbP9ucXv/Z2p0/2xvef9sbnX/amxz/3Z4fP9maG7/bnB3/2xvef9sb3n/ +bG95/2ptd/91d33/c3V8/3N1fP9zdXz/cHJ5/3N1fP9wc33/bnB3/3Bzff9qbXf/dXiB/3d5f/91d33/ +bnB3/2RmbP9ucHf/am13/2ptd/9ucXv/dXd9/2xudf9qbXf/YmVu/2xudf9sbnX/bG95/2xvef9sbnX/ +am13/3Bzff9zdXz/bG51/2Zpc/9kZ3H/bnF7/2xvef9qbHP/bG95/2psc/9sb3n/d3l//25xe/9kZ3H/ +Z2p0/2BjbP9kZ3H/Zmhu/2ptd/9kZ3H/Z2px/2Zobv9nanH/am13/2dqdP9qbXf/c3V8/25xe/9qbXf/ +bG51/25xe/9qbXf/cHJ5/29xdf9zdXz/b3F1/25xe/91d33/c3V8/3N1fP9ucXv/bnF7/3V3ff9wcnn/ +bnB3/25wd/9ucHf/bnB3/3Bzff9vcXX/b3F1/25wd/9sbnX/Zmhu/21vc/9tb3P/bG51/2xudf9qbXf/ +amxz/3Bzff9zdXz/bG51/3Bzff9wc33/bnF7/3Bzff9tb3P/bG51/3N1fP9vcXX/bnB3/2Zobv92eHz/ +cHJ5/3N1fP9nanH/cHJ5/25wd/9zdXz/dXd9/3Byef9wc33/d3l//25xe/91eIH/bG95/3N1fP9zdXz/ +dXiB/3l7gf9ucXv/cHJ5/3V4gf9zdXz/c3Z//25wd/9zdXz/bnF7/3V4gf9wc33/cHN9/3Bzff9qbHP/ +bW93/29ye/9pbHX/b3F6/29yfP9xdH7/bnF7/3Byef9wc33/bG95/2xvef9zdn//bnF7/3Bzff9sb3n/ +dHZ8/25xe/9xc3v/bnF7/21vdv9xc3r/cXN4/29yev9zdX3/cXN6/3F0fP9xdHz/b3J6/3d5gv9xdHv/ +bW93/3R2fv9qbXb/a254/3R2f/9tcHr/cHN8/21wev9tcHn/bnF4/3Bye/9vcnz/bnB3/2tueP9tcHr/ +bG51/25xev9qbXf/cHJ8/2xudf9qbXf/am13/3J0e/9ucXv/am13/2psc/9nanT/Z2px/2Jlbv9gY2z/ +am13/2dqdP9qbXf/c3Z//2ptd/9qbXf/ZGdx/25xe/9sb3n/bG51/3Byef9ucXv/cHJ5/3Byef9tb3P/ +cHJ5/25wd/93eX//d3qD/3d6g/91eIH/c3Z//25xe/93eoP/d3qD/3d6g/9zdn//dXiB/3d6g/9sb3n/ +cHN9/3Bzff9zdn//e32D/3l7gf9wc33/bG95/3N2f/95e4H/foCG/3N2f/93eoP/eXyG/3Bzff9wc33/ +dXd9/3d6g/95e4H/eXuB/3V4gf9wc33/e32D/3N1fP91eIH/c3Z//3Bzff95e4H/bG95/25wd/9ucXv/ +cHJ5/2ptd/9sb3n/cHN9/3V4gf9zdXz/cHJ5/3Byef9wcnn/c3V8/29xdf9ucHf/Z2p0/3Bzff91d33/ +cHN9/21vc/9kZ3H/bG95/2dqdP9sb3n/cHN9/3V3ff9qbXf/am13/2Rncf9nanT/amxz/2ptd/9nanT/ +Z2px/2Zpc/9ucXv/bnF7/2dqcf9ZXGX/XF9o/2Zpc/9maXP/Zmhu/2Rncf9kZ3H/Z2p0/2xvef9maXP/ +Z2p0/2xvef9maXP/bnF7/2xudf9wc33/amxz/2xvef9sbnX/bG51/3V3ff9ucHf/bnB3/3l7gf9ucXv/ +bnB3/25wd/9zdXz/am13/3V4gf9wcnn/cHJ5/3Byef9zdn//d3qD/3N2f/9zdn//cHJ5/3Bzff95e4H/ +cHN9/3Bzff9ucXv/cHN9/25xe/9wc33/bnB3/25wd/9wcnn/bW9z/2dqcf9vcXX/bnB3/25wd/9sbnX/ +am13/2xudf91d33/c3V8/2ptd/9wc33/cHJ5/3Byef9zdn//bG51/2xudf9zdn//am13/25wd/9kZ3H/ +c3Z//3N2f/9zdn//am13/3N2f/9wcnn/dXiB/36Ahv95fIb/eXyG/3t9g/9zdn//d3qD/25xe/9wcnn/ +cHJ5/3N2f/95fIb/cHN9/25xe/93eX//bnF7/3Byef9vcXX/c3V8/25xe/91eIH/cHN9/25xe/9sb3n/ +bG51/29xef9xdHz/aGtz/3Byef9ydHr/dHZ8/25xe/9ucXv/cHN9/25wd/9wcnn/dXiB/3Bzff9zdn// +bnF7/3Z4fv9xc3r/c3Z//21wev9tb3j/dHZ7/3J1ff9tcHr/cnV//29xef90dn//bXB6/3ByeP93eX// +cHF4/25wd/9zdXz/amxz/25wd/92eH7/bnB3/3N1fP9vcXj/aGt1/25wdP9vcXv/bnF7/2xudf9sb3n/ +cHN9/2xudf9zdXz/bG51/3N1fP9sbnX/amxz/2ptd/91d33/bnF7/2xvef9qbXf/bG95/2psc/9kZ3H/ +YGNs/2dqdP9nanH/Z2p0/3V3ff9qbXf/Z2p0/2BjbP9qbXf/Zmlz/2Zobv9nanT/Zmlz/2Zpc/9qbXf/ +Zmhu/2dqdP9maG7/dXd9/3V3ff9zdXz/bG95/3Bzff9qbXf/cHN9/3d5f/9wc33/cHJ5/3N1fP91d33/ +bG51/3Byef9wc33/c3Z//3d6g/93eoP/c3V8/25xe/9ucXv/dXd9/3V3ff9sb3n/bG95/3d5f/9sbnX/ +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/Zmlz/25xe/9nanT/bG95/2xvef9iZW7/am13/2BjbP9iZW7/ +Z2px/2Rncf9kZ3H/Zmlz/2ptd/9sb3n/bG95/2xudf9sb3n/bnF7/2xvef9sbnX/bnF7/2dqdP9ucXv/ +dXd9/3N2f/9ucHf/Z2p0/25wd/9ucHf/cHJ5/3N1fP92eHz/bG51/2xudf9kZ3H/am13/25wd/9sbnX/ +bG95/2xudf9nanT/cHN9/3Bzff9sbnX/YmVu/2Jlbv9ucXv/am13/2xudf9qbXf/Z2px/2xvef9wcnn/ +bG95/25wd/9sb3n/Z2p0/2xvef9qbXf/c3V8/2xudf9wcnn/bG95/3N1fP97fYP/cHN9/3Byef95fIb/ +dXiB/3Byef9zdXz/d3qD/25xe/97fYP/dXd9/3l7gf91eIH/eXyG/3l8hv91eIH/dXiB/3N2f/9wc33/ +d3qD/3Bzff9ucHf/Z2p0/25wd/9wcnn/cHJ5/25wd/9vcXX/cHN9/29xdf9nanH/bG51/2xudf9qbHP/ +am13/2dqdP9nanT/bnF7/2xvef9qbHP/am13/25xe/9qbXf/c3V8/2ptd/9nanT/bnF7/2dqdP9sbnX/ +ZGZs/3Byef9ucXv/bG95/2Rncf9sb3n/Z2px/25xe/9wc33/am13/2xvef9wc33/am13/2xvef9kZ3H/ +Z2p0/2psc/9qbXf/cHJ5/2dqcf9maXP/cHJ5/2psc/9sb3n/Z2px/2ptd/9nanT/Z2p0/2ptd/9nanH/ +amxz/2dqdP9sb3j/cnV8/2Zpc/9vcXf/a253/25xe/9qbHP/Z2p0/2dqdP9kZ3H/bG51/2xvef9qbXf/ +am13/2xudf9sb3n/aGt1/3V3ff9ucXj/bW92/3Z4fP91d33/bG92/3N1fP9sbnb/c3V8/25wd/9vcXX/ +eHl9/3N1fP9sbnX/bnB3/2psc/9sb3n/dXiB/25xe/9wcnn/bnF7/2ptd/9qbXf/c3V8/25xe/9qbHP/ +bG51/3N1fP9ucHf/cHJ5/25wd/9zdXz/bG51/21vc/9qbXf/d3l//2xvef9qbXf/am13/2psc/9qbXf/ +ZGdx/2BjbP9qbXf/amxz/2xvef91d33/bG95/3N1fP9naW//c3V8/3Byef9sb3n/cHN9/3V4gf9wc33/ +cHN9/25wd/9ucXv/bnF7/3d6g/91eIH/d3l//3V4gf9zdn//cHJ5/3N1fP93eX//c3V8/25wd/91d33/ +c3V8/21vc/9qbXf/bnB3/2xvef9ucXv/am13/2Zobv9maG7/Zmlz/3Bzff9zdXz/bG51/2ptd/91d33/ +bG51/21vc/9tb3P/bnB3/2xvef9sb3n/bG95/2Zpc/9ucXv/am13/3N1fP9ucHf/Z2px/3Z4fP9nanH/ +bnB3/25wd/9vcXX/bG95/2xvef9zdn//c3Z//3N2f/9ucHf/c3V8/3Bzff9ucXv/bG95/3N1fP9nanT/ +c3Z//3l7gf93eX//c3V8/3N1fP91eIH/cHJ5/3d6g/97fYP/f4GH/3d5f/9zdn//bnF7/3N2f/9zdn// +cHN9/3Bzff9ucHf/am13/3V3ff92eHz/bG95/2psc/9maXP/cHN9/25wd/9zdXz/cHJ5/2xvef9zdXz/ +dXd9/3N1fP9ucXv/bnB3/2xudf91d33/bnF7/3V3ff9wcnn/bnB3/2ptd/9sbnX/dXd9/2xudf9sbnX/ +eHl9/3N1fP9qbHP/bnB3/3V3ff9nanH/cHJ5/25wd/9ucHf/bG95/3N1fP9wcnn/cHJ5/3N2f/9ucXv/ +c3V8/3V4gf9ucXv/bnF7/25wd/9wc33/c3Z//3N2f/9wcnn/c3V8/3V4gf9wcnn/Zmlz/25xe/9ucHf/ +b3F1/25wd/9sb3n/cHN9/3V4gf9wc33/bnF7/25xe/9zdn//b3F1/3Z4fP9tb3P/amxz/3Byef9qbHP/ +bnB3/2dqcf9zdn//cHN9/25xe/9nanH/c3V8/2xudf9ucXv/eXuB/3V4gf9zdn//c3Z//2xudf9ucHf/ +bG51/25wd/9vcXX/c3V8/3d5f/9ucHf/cHJ5/3d5f/9ucHf/c3Z//3Byef9wcnn/c3V8/3Byef92eHz/ +bG51/2xudf9nanT/bG95/2xvef9maXP/a210/2Vocv9ucXv/am13/2xudf9sbnX/Z2p0/2ptd/9ucXv/ +bnB3/25xe/9qbXf/bG95/2Zpc/9zdXz/am13/2dqcf9wcnn/bnF7/2psc/9ucXv/am13/25xe/9qbXf/ +am13/3Bzff9sb3n/Z2p0/2ptd/9kZ3H/bG51/3V3ff9ucHf/c3V8/2xvef9sbnX/bG51/3Bzff9ucXv/ +Zmlz/2ptd/92eHz/bnB3/3N1fP9sb3n/dXiB/3Bzff9zdXz/c3V8/3h7hf91eIH/dXiB/3N2f/9zdn// +c3V8/2ptd/9ucXv/dXd9/3d6g/93eoP/fYCJ/3d6g/93eYD/bXB5/3N2f/9ucXv/bXB6/21wev9ydX7/ +c3V8/3V3ff9sbnX/cHJ5/3Byef93eoP/d3l//3h5ff9zdXz/bnF7/2psc/9sb3n/dXd9/2xvef9nanT/ +cHJ5/2ptd/9qbHP/am13/2xvef9sb3n/cHN9/25xe/9sbnX/bG51/2ptd/91d33/dXd9/2ptd/9qbXf/ +c3Z//2dqcf9nanT/amxz/2xudf9sbnX/am13/2xvef9maXP/bG95/2psc/9ucXv/bG51/2Jlbv9wcnn/ +YGNs/2Rncf9maXP/Z2px/2Zpc/9maXP/bG95/2dqdP9qbXf/Zmlz/2ptd/9qbXf/am13/2psc/9sb3n/ +ZGdx/2ptd/9zdXz/cHJ5/2dqcf9iZW7/bG95/2dqcf9sb3n/am13/3N1fP9qbHP/am13/2Zpc/9qbHP/ +am13/2xudf9ucHf/b3F1/2psc/9zdXz/dXd9/2psc/9maG7/Zmhu/3Z4fP9wcnn/cHJ5/25wd/9tb3P/ +c3V8/3V3ff9zdn//bG51/2xvef9qbXf/bnF7/2ptd/91d33/c3V8/29xdf9wcnn/b3F1/3V4gf9ucXv/ +bnB3/3l7gf9wc33/bG95/25xe/93eX//am13/3Bzff9wcnn/cHN9/3Bzff9wc33/bG95/2xvef92eHz/ +bnB3/29xdf9ucHf/bG95/2ptd/9maXP/bnF7/2ptd/9qbXf/Z2px/2Rncf9nanT/Zmhu/2BjbP9nanT/ +Zmlz/2Zpc/9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2xvef9qbXf/cHN9/2xudf92eHz/b3F1/2psc/9wc33/ +cHJ5/3N2f/9maXP/cHN9/3Bzff9wc33/am13/3N2f/9ucHf/c3Z//3V4gf9ucXv/c3Z//3N2f/9ucXv/ +dXiB/3N2f/9zdXz/cHN9/3d6g/9+gYr/c3Z//3d6g/95fIb/c3V8/3l7gf9zdXz/d3qD/3d6g/93eoP/ +eXuB/3N2f/9zdn//c3V8/3l7gf91eIH/bG95/25xe/9qbXf/c3Z//3V3ff9ucHf/bG95/2dqdP9sb3n/ +cHN9/25xe/9zdn//bnB3/3Bzff9ucHf/d3qD/3Bzff9ucHf/dXiB/3V4gf9wcnn/c3Z//3Bzff9zdn// +bnF7/3Byef97fYP/d3qD/2xvef9zdn//Z2p0/25xe/91eIH/bnF7/3V3ff91eIH/cHN9/3V3ff97fYP/ +d3qD/3N1fP9ucXv/dnmC/3Bzff90d4D/bnB3/3R3gP9wc3z/cHJ5/3ByeP90d33/bnF7/3R3gP9vcXj/ +b3F3/3Byef9maXP/Z2px/21vc/9tb3P/bnB3/3V3fP9xc3v/cHN7/2lsdP9sbnb/bW92/2lrdP9tb3f/ +b3F4/3Byev9wc33/bnB3/3Byef9wc33/eXyG/3d6g/93eX//c3Z//3N2f/9ucHf/cHN9/3V4gf9zdn// +bnF7/3d5f/91eIH/bnB3/25xe/9ucXv/bnB3/3V3ff9zdXz/bnB3/29xdf9wcnn/dnh8/3l7gf9wcnn/ +cHJ5/3V4gf9qbXf/bnB3/21vc/9ucHf/am13/25wd/9sbnX/ZGZs/25wd/9tb3P/c3V8/2xudf9qbHP/ +dXd9/2dqdP9sbnX/cHJ5/21vc/9ucHf/bG95/25xe/91eIH/c3Z//25xe/9zdn//cHN9/25xe/9vcXX/ +cHN9/2dqdP9sb3n/dXd9/3Z4fP9tb3P/Z2px/3Byef9sbnX/bnF7/2ptd/91d33/bnB3/25wd/9nanH/ +bW9z/2xudf9sb3n/bG95/2psc/9kZ3H/cHN9/25xe/9maXP/YmVu/2Rncf9sb3n/am13/2xudf9qbHP/ +bG51/3Byef9zdXz/bnF7/3Byef9wcnn/b3F1/3Bzff9ucXv/d3l//3Bzff9ucHf/bnF7/25wd/95e4H/ +bG95/29xdf93eX//bnF7/2xvef9ucXv/c3Z//2dqdP9zdn//bnF7/3Bzff9wc33/cHN9/3V4gf91eIH/ +e32D/3N2f/9wc33/cHN9/25xe/9zdn//cHN9/3d6g/93eoP/dXiB/3N1fP9wc33/c3Z//2xvef9maXP/ +cHN9/25wd/9zdXz/c3Z//2xvef9sb3n/cHJ5/25xe/9wc33/bnB3/3Bzff9ucHf/eHl9/29xdf9qbHP/ +bnF7/29xdf9zdXz/Zmlz/3Bzff9zdXz/cHJ5/2xvef93eoP/cHJ5/3Bzff91eIH/c3Z//3Bzff9wc33/ +am13/25xe/9ucHf/bnB3/25wd/9wc33/dXd9/2xvef9zdXz/eHl9/29xdf92eHz/bG51/2ptd/9qbXf/ +bnF7/25xe/9qbXf/Z2px/2Zobv9sb3n/bnF7/2Jlbv9maXP/Zmlz/25xe/9ucXv/bG51/2xudf9qbHP/ +amxz/25xe/9zdn//c3Z//3Byef9zdn//bnF7/3l8hv9zdn//c3V8/3d6g/97fYP/dXiB/3Z5g/93eoP/ +dnmC/3V3gP9wc33/fYCJ/3p8g/9wc33/d3qD/2ptd/9wc33/dnh+/3Byef90dnz/a254/2tueP9oa3X/ +c3V8/29yfP9pbHX/am13/3N1fv9sb3n/bG95/2xudf9xc3r/bnB0/3Byd/9sbnT/cXN5/25wd/9vcnv/ +cHJ2/25wdf9vcXX/amxz/2dqcf9tb3P/bG51/25wd/9zdXz/cXN6/25wef9sbnb/bnB3/21vdv9tb3X/ +cnR7/3Fzev9ucXn/bG95/2ptd/9sb3n/bG51/3d5f/93eX//c3V8/3Bzff9sb3n/am13/2xvef91d33/ +dXd9/2xudf91d33/dXd9/2xvef9ucXv/cHN9/3N1fP9zdXz/bnB3/25wd/9vcXX/bnB3/3V3ff93eX// +cHN9/25xe/93eoP/Z2p0/2xvef9sbnX/cHJ5/25wd/9sb3n/bnB3/2RmbP9ucHf/bG95/3N2f/9ucXv/ +bG51/3d5f/9ucHf/bnB3/3Bzff9wcnn/bnB3/2xvef9ucXv/dXiB/3d6g/91eIH/d3qD/3N2f/9wc33/ +cHJ5/3Bzff9sb3n/bnF7/3N2f/91d33/cHJ5/2ptd/9zdn//bG51/3Byef9wcnn/bnF7/2ptd/9sb3n/ +Z2p0/21vc/9ucHf/bG95/3Byef9ucHf/amxz/3V3ff92eHz/bnB3/2dqcf9qbHP/dXd9/3Byef9sbnX/ +b3F1/29xdf9ucHf/c3V8/3N1fP9sbnX/am13/2psc/9sb3n/Z2px/25xe/9nanT/amxz/2dqcf9nanH/ +dXd9/2psc/9sbnX/dXd9/2xudf9maXP/amxz/25xe/9nanT/bG95/2xvef9qbXf/bnB3/2xudf9qbXf/ +am13/3N1fP9tb3P/bG51/2xvef9sb3n/am13/2Zpc/9ucXv/am13/2psc/9kZ3H/Z2px/2ptd/9nanT/ +Zmlz/2ptd/9sbnX/bG51/21vc/9sbnX/bnB3/2xvef9wcnn/c3V8/2xvef93eX//cHN9/3d5f/9sb3n/ +am13/25xe/9wcnn/c3Z//2ptd/93eoP/c3Z//3N2f/9ucHf/c3Z//25wd/9wcnn/cHJ5/25wd/9wcnn/ +c3V8/2xudf9wcnn/bG51/2xudf9sbnX/am13/3Bzff9sbnX/cHJ5/3h5ff9tb3P/dXd9/3Byef9zdXz/ +c3V8/3V3ff92eHz/cHJ5/25wd/9ucHf/cHN9/3N2f/9sb3n/cHN9/3Bzff93eoP/eXuB/3V4gf91eIH/ +bG95/3N1fP95e4H/fn+D/3t9g/95e4H/fX6B/3Bzff99gIr/cnV+/3J0e/90d4D/d3mA/3R3gP90dn// +dHeA/3V4gf90dn7/b3F4/3l8hP94eoD/bG95/3BzfP9pa3L/b3F6/3V3ff9ucXr/dHZ9/2ptdv9rbXb/ +a212/3R2fP9wc33/bG52/25weP90dnv/bnB3/21weP9pbHb/am11/2lsc/9sb3f/bG5z/21veP9vcXj/ +bG95/29xef9ucHf/bW90/2Zobv9nanH/bG51/2xudf9sbnX/dHZ7/25weP9rbnj/Zmly/2Zpc/9nanL/ +Y2Zw/2ptd/9qbXX/am13/2xvef9qbXf/bG95/2xudf9zdn//c3V8/3Bzff9wc33/am13/2psc/9nanT/ +dXd9/3N1fP9qbXf/dXd9/3Bzff9sbnX/bG95/25xe/9wcnn/dnh8/3N1fP9ucHf/bW9z/2xudf93eX// +dXiB/25xe/9ucHf/eXuB/2xudf9wcnn/bG51/2xvef9ucHf/bG51/2ptd/9kZ3H/am13/2dqdP9qbXf/ +am13/2Zpc/9zdXz/bG51/2dqdP9sb3n/Z2px/2dqcf9qbHP/bG51/25xe/9ucXv/bG95/2xvef9qbXf/ +bG51/2dqdP9qbXf/Zmlz/2xudf9sb3n/cHJ5/2psc/9kZ3H/Z2p0/2dqdP9sbnX/bG95/2ptd/9qbHP/ +bG51/2BjbP9qbHP/Z2px/2psc/9qbXf/bG51/2Zpc/9qbXf/bnF7/2dqdP9gY2z/YmVu/2ptd/9nanT/ +Z2p0/2dqcf9qbHP/am13/2xvef9ucXv/bnB3/25wd/9ucHf/c3Z//25wd/9zdn//cHN9/2xvef9sb3n/ +bW9z/3l7gf9vcXX/bnB3/3V3ff9ucXv/bG95/25wd/9wc33/bG51/3Byef9ucHf/bnB3/3N1fP9ucHf/ +bnB3/29xdf91d33/b3F1/21vc/9sbnX/bnB3/25wd/9ucHf/c3V8/25wd/9ucHf/bnB3/29xdf91d33/ +b3F1/2Zobv9wcnn/am13/2dqdP9qbHP/Zmlz/2xudf9sb3n/bG95/2ptd/9qbHP/cHJ5/2Zpc/9sb3n/ +Zmhu/11gav9iZW7/Zmhu/2Zpc/9dYGr/am13/2dqdP9maG7/YmVu/2dqdP9kZ3H/Zmhu/2Rncf9kZ3H/ +am13/2dqdP9iZW7/Z2px/2BjbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Zpc/9ucXv/Zmlz/3Byef9nanT/ +Z2p0/2xvef9ucXv/bG95/25xe/9sbnX/bG51/3J0e/9xdHv/aGt1/2tueP9pbHb/bG95/2xvef9sbnX/ +bnB3/2Zobv9maXP/am13/3Bzff9ucXv/am13/25xe/9qbXb/dHeA/25xe/9rbnb/bnF6/3Bzff9ucXr/ +bXB5/3Fzev9xc3v/b3F5/29xef91d3//d3l//3F0fP92eID/cHJ5/3R2fP93eYH/cHJ6/3d5gf95fIX/ +eHqC/3d5fv98foT/fH6F/3N1fP90dnz/eXuA/3d5gP9ydHz/c3V9/3Z4fv90dnz/dnh8/3F0ev9zdXv/ +dXd9/3h6gP90dn3/dHZ+/3Bzff9sb3n/bG95/3N1fP9wc33/c3Z//3d6hP90dn3/c3Z//2lsdv9tcHr/ +bW93/21vd/9zdXz/am13/29xeP9wc33/am13/3Byef9ucHf/eHl9/3Z4fP91d33/dXd9/25wd/9sb3n/ +bnB3/3V3ff91d33/bnB3/3V3ff92eHz/b3F1/3Byef9wcnn/dXd9/3V3ff9ucHf/am13/2xudf9qbXf/ +dXd9/3l7gf9ucHf/bG95/3V4gf9maXP/am13/2dqcf9qbHP/amxz/2dqdP9nanH/XWBq/2Zpc/9maG7/ +am13/2xvef9nanT/c3V8/2dqcf9qbHP/bG95/2dqdP9qbHP/bG51/2xudf9wc33/am13/25xe/9qbXf/ +am13/2ptd/9qbXf/bG95/2ptd/9qbHP/cHN9/3d5f/9sb3n/bnB3/3Byef9tb3P/bW9z/25wd/9zdXz/ +b3F1/2xudf9sbnX/bG95/2xudf9ucHf/bG95/2ptd/9qbXf/bnF7/3d5f/9nanT/amxz/2psc/9ucXv/ +bnF7/3N2f/9wcnn/bnF7/2xvef9zdXz/dnh8/3Byef9ucHf/am13/25xe/9tb3P/dXd9/3Bzff9sbnX/ +amxz/2xudf9zdn//am13/2xudf91d33/bG95/2ptd/9qbHP/bG95/2Rncf9nanT/Z2p0/2psc/9ucXv/ +amxz/2dqdP9sb3n/bnF7/2xudf9qbHP/am13/2ptd/9sbnX/am13/3Byef9sb3n/bnB3/25wd/9wcnn/ +dXd9/25wd/9maXP/dXiB/25wd/9ucHf/cHJ5/25wd/9zdXz/cHN9/3N2f/9wc33/cHN9/3d6g/9wc33/ +eXuB/3N2f/9ucXv/cHJ5/25wd/9ucXv/Z2p0/3V3ff9sbnX/bnB3/25wd/94eX3/bnB3/25wd/9sb3n/ +bG95/3N1fP9qbXf/Z2p0/2ptd/9sbnX/bW9z/25wd/9zdXz/dXd9/25wd/9zdn//d3l//2xvef93eX// +c3Z//3Bzff91eIH/d3l//3l7gf9zdn//c3Z//3V3ff93eoT/enyD/3V3ff94e4P/eHqB/3V4gv90d4D/ +bnF7/3V4gf9qbXf/Z2p0/2xvef9wc33/c3V8/25wd/9ydHz/bnF6/3R3f/9ucHn/bG93/29yfP9ydHv/ +b3F4/25wdf9wcnf/bW92/25wdP9vcnr/cnR8/3V3fv9ucHf/dXh//2xud/9ydHz/dHd//25xef9zdn// +c3V8/3J0ef9wc3z/c3V9/3R3gP9sb3f/bXB6/3V4gv9ucXv/b3J8/2xvef9vcXj/bnB4/3Bzev9vcXj/ +cXN6/25wd/9ydXz/cHJ4/21wef9tb3P/Zmhu/2dqcf9sbnX/bW9z/2ptd/91d33/bnB0/25xe/9maXP/ +bnB3/21vc/9tb3P/c3V8/2ptd/9qbXf/bnF7/2xudf9sb3n/amxz/3V3ff9zdXz/bnF7/3Bzff9nanT/ +amxz/2Zpc/9wcnn/bG95/2xudf9qbXf/bG95/2Zobv9maXP/Zmlz/2Zpc/9qbXf/Z2p0/2dqcf9maG7/ +amxz/25wd/9zdn//am13/2ptd/9zdn//am13/2xvef9qbXf/am13/2ptd/9zdXz/bnB3/2dqcf91d33/ +b3F1/3N2f/93eoP/c3V8/3t9g/9zdXz/c3V8/3Bzff9sb3n/bnB3/25xe/9sb3n/c3Z//25wd/9zdXz/ +bnB3/2xudf9sbnX/amxz/2xudf9qbXf/bG51/2xvef91eIH/am13/2dqcf9nanH/Zmhu/2Rncf9maXP/ +am13/2Zobv9qbHP/Zmlz/2psc/9nanH/amxz/2xudf9qbHP/amxz/2xvef93eX//am13/2dqdP9nanH/ +bnF7/25xe/9wc33/b3F1/29xdf9ucHf/cHJ5/3Z4fP91d33/bG51/21vc/9ucHf/bW9z/3N1fP9wc33/ +am13/3Byef9ucHf/d3l//3Byef9sbnX/dXd9/2xvef9nanT/Z2p0/2xvef9maXP/amxz/2ptd/9sbnX/ +c3V8/2xudf9nanT/bG95/25xe/9qbXf/bG51/2ptd/9qbHP/bG51/2ptd/9sb3n/bG51/2ptd/9sbnX/ +cHJ5/3V3ff9wcnn/Z2px/3N2f/9nanT/bnB3/25wd/9ucHf/cHJ5/3Byef9wc33/cHN9/3Byef93eoP/ +c3Z//3V4gf9sb3n/bG95/25wd/9vcXX/cHJ5/2dqcf9zdXz/bG95/2ptd/9maXP/d3l//2dqcf9qbXf/ +amxz/2Zpc/9qbXf/Zmhu/2Jlbv9maG7/Zmlz/2Rncf9nanH/am13/2xvef9maXP/am13/3V3ff9qbXf/ +dXd9/3N1fP9ucHf/dXd9/3N1fP93eX//cHN9/25wd/9sb3n/bG95/25xef9qbXX/b3J8/3N1e/9xc3z/ +c3Z//25xe/9zdn//am13/3Byef9wc33/d3qD/3l8hv90d4D/dHeB/29xev90d4H/cXN7/21wef9tcHr/ +dHZ8/29yev9wc3r/dXh//3N1fv9wc3v/cnV9/3Z4gf94en//c3V8/3p8gf9rbnf/b3F7/3V3ff9ucXv/ +dHeA/3V4gf9ydX//cnR7/3h7hP98foX/cnV+/3d6hP99gIr/dnmB/3R3gP9zdXz/dnmB/3R3gP9wc33/ +bnF7/3J1fv9tcHr/dnh8/21vdv9wc33/bnB3/2dqdP9qbXf/bnF7/25wd/9wcnn/d3l//3N1fP91eIH/ +cHN9/3V4gf9wc33/c3Z//36Ahv93eoP/c3Z//3V4gf9wcnn/bnF7/3Byef95e4H/dXiB/3l7gf95e4H/ +c3Z//25xe/9ucXv/d3qD/3Bzff9ucHf/bnF7/3V4gf9wcnn/cHJ5/25wd/9ucHf/c3V8/3Byef9vcXX/ +bG51/3N1fP92eHz/dnh8/25wd/9wcnn/dXd9/2xudf9ucHf/bnB3/29xdf9ucXv/c3Z//3N2f/9maXP/ +c3Z//3Byef9wc33/c3Z//2xvef91d33/cHJ5/25wd/9ucXv/am13/25wd/9wc33/cHJ5/3V3ff9ucHf/ +c3V8/25wd/9ucHf/cHJ5/29xdf9tb3P/bnB3/2ptd/9sb3n/d3l//25wd/9tb3P/bG95/25wd/9tb3P/ +cHJ5/3Byef9sbnX/bG51/2xudf9tb3P/am13/2xudf9ucHf/bG51/21vc/9zdXz/dXiB/2xvef9sb3n/ +am13/25xe/9wc33/c3Z//2xvef9vcXX/bG95/25xe/9zdn//dXiB/25xe/9ucHf/bnF7/2xvef9zdn// +dXd9/25wd/9ucHf/bnB3/3d5f/9zdXz/bnB3/3N1fP9sbnX/Zmlz/2psc/9qbXf/ZGdx/2dqcf9qbXf/ +Zmhu/2xvef9nanH/ZGdx/2dqdP9sb3n/amxz/2xudf9sb3n/bG51/2ptd/9sbnX/cHJ5/25xe/9sb3n/ +bnF7/25xe/93eX//cHN9/2ptd/93eoP/cHN9/3Byef9wcnn/dXd9/3V3ff94eX3/e32D/3l7gf93eX// +f4KM/3l8hv97fYP/d3qD/3N1fP91d33/c3Z//3V4gf9wc33/eXuB/3V4gf9wcnn/bnB3/3l8hv9ucHf/ +c3Z//3Bzff9wcnn/cHN9/3Byef9wcnn/cHJ5/25wd/9sbnX/bG95/3Bzff9ucXv/bnB3/25xe/93eX// +bnB3/3V3ff9zdXz/bnB3/3V3ff9zdXz/d3l//3Bzff9ucHf/bG95/3R3gP91dnz/bnB3/3J0fP92eHz/ +b3F4/3J0e/9ucHf/c3V8/2psc/9qbXf/bG51/3Bzff9ucXv/c3V8/3J0e/9rbnT/c3V8/21wef9ucHf/ +bW92/3V3fP9tb3b/a212/21wev9qbXf/b3F4/2ttdf92eH//cnR7/25xeP91d33/Z2py/2xvef91d33/ +bnB3/3N2fv9vcnv/a254/2hrdf90d33/cHN9/2dqcv9nanT/dXiB/2dqdP9maG7/ZGdx/2Zpc/9qbHP/ +ZGdx/2BjbP9maXP/XWBq/25wd/9gY2z/Zmlz/2Zobv9maXP/Z2p0/2xudf9sbnX/bnB3/3N1fP9vcXX/ +cHJ5/2Zobv9sbnX/bG51/25wd/9wcnn/bnB3/25wd/91d33/cHN9/25wd/9ucHf/dXd9/3V3ff91d33/ +c3Z//3N1fP9ucHf/cHJ5/3V3ff9qbXf/bG51/25wd/9wc33/am13/2xvef9sbnX/cHJ5/3Byef9ucHf/ +bG51/25wd/9zdXz/c3V8/3V3ff9ucXv/bnF7/3V3ff9qbXf/bG51/21vc/9sbnX/am13/3N1fP9wcnn/ +Zmlz/3N2f/9ucHf/cHN9/3V3ff9wcnn/cHN9/29xdf9sb3n/bG95/2ptd/9sb3n/bnF7/2xvef91eIH/ +cHN9/3N2f/9ucXv/bnF7/3N2f/9wcnn/bnF7/2xvef9ucHf/cHJ5/3Z4fP9ucHf/bW9z/2ptd/9sb3n/ +bG51/3Byef9ucHf/am13/2xudf9qbXf/am13/25wd/9tb3P/bG51/2dqdP9qbHP/bG95/3V3ff9qbXf/ +Zmlz/2xudf9ucHf/dXd9/3V3ff9ucXv/cHJ5/3Bzff9ucXv/c3Z//3Z4fP9sbnX/b3F1/2xvef9ucHf/ +d3l//3V4gf9ucHf/bnF7/2xvef93eoP/cHJ5/25wd/9wcnn/bnB3/2dqdP9sbnX/am13/2Zpc/9qbXf/ +am13/2dqdP9wc33/Z2p0/2dqdP9zdXz/bnF7/2psc/9sbnX/bG51/2xudf9sbnX/bG51/2ptd/9sbnX/ +Z2p0/2xvef9qbXf/dXd9/2xudf9nanH/cHJ5/2psc/9sbnX/bG51/2xudf9sbnX/bnB3/3Byef9ucHf/ +bnB3/3l7gf91d33/c3Z//3Byef9sbnX/am13/2xudf9sb3n/ZGdx/25xe/9qbXf/am13/2xudf95e4H/ +bnB3/2xudf9sbnX/bW9z/3Byef9sbnX/bnB3/25wd/9qbXf/bG51/25wd/91d33/cHJ5/2xudf9wcnn/ +d3l//2xvef93eoP/dXiB/3N2f/91eIH/c3Z//3l8hv91eIH/cHJ5/3N1fP9ydHz/cXN5/3Byef90d3// +dXd9/3BzfP9wc3z/bG95/3Bzff9nanT/bnB3/3Bzff9zdn//cHN9/3V4gf90d4D/aGt1/3Z5g/9ucXr/ +dHeA/3BzfP94e4T/cHN9/3BzfP9wc33/dXiA/3N1fv9sb3n/eXuB/3N2f/9wcnn/d3qD/2ptd/93eoP/ +eXyG/3V4gf95fIb/eXuB/3Byef9sb3n/e32D/3d5f/9ucHf/bnB3/3t9g/9ucHf/b3F1/2xudf9ucHf/ +bW9z/2dqcf9kZ3H/am13/2psc/91d33/amxz/25wd/9tb3P/bG51/29xdf9wcnn/b3F1/3N1fP91d33/ +bnB3/2xvef9kZ3H/bG95/3Bzff9ucXv/d3qD/3V4gf9wc33/d3qD/3V4gf9wc33/dnh8/35/g/9+gIb/ +fX6B/36Ahv97fYP/dXiB/3d6g/95e4H/c3Z//3Bzff91eIH/e32D/3d6g/93eoP/c3Z//3d6g/93eoP/ +dXiB/3N2f/9wc33/dXd9/3d5f/95e4H/dXiB/3V3ff94eX3/bnB3/25wd/9sbnX/bG51/2xudf9ucHf/ +bnF7/2ptd/9wc33/bnB3/25xe/9zdn//bG95/3Bzff9ucHf/cHJ5/25xe/9sbnX/bG51/3Byef9wcnn/ +dXd9/2xudf9zdXz/bG51/25wd/9zdXz/bnB3/25wd/9ucHf/bG95/3N1fP92eHz/bG51/21vc/9wcnn/ +c3V8/2xudf91d33/bG95/2xudf9sbnX/amxz/2ptd/9sb3n/am13/2psc/9qbHP/bG51/2xudf94eX3/ +am13/2dqdP9ucHf/bnF7/3V3ff92eHz/bnB3/29xdf9zdXz/cHJ5/25wd/9zdXz/bG51/2ptd/9qbXf/ +amxz/25xe/9wcnn/Z2p0/2xudf9ucHf/d3qD/2ptd/9ucXv/bnF7/2xudf9qbXf/am13/2xvef9maXP/ +bG51/2ptd/9sbnX/cHN9/2dqdP9maXP/c3V8/3Bzff9sbnX/bG51/2xudf9sbnX/bW9z/2ptd/9qbXf/ +amxz/2dqdP9sb3n/bG51/3N1fP9qbHP/ZGdx/2dqdP9maXP/amxz/2ptd/9nanH/am13/2dqdP9sb3n/ +bG51/25wd/95e4H/dnh8/3V3ff9zdXz/bnB3/25wd/9ucHf/bG95/2Zpc/9zdn//bnF7/2xvef9wcnn/ +foGK/3N1fP9wc33/c3Z//3Bzff9ucXv/am13/2xvef9vcXX/bG51/21vc/9vcXX/dXd9/3Bzff9nanT/ +bnF7/3V3ff9nanT/dXd9/3Byef9sb3n/dXd9/25wd/91d33/bG95/2dqdP9qbHP/c3Z//3N1ff9rbXT/ +cHJ5/25wd/9rbnj/bnF7/2ptd/9wc33/bG51/21vc/9ucHf/bnF7/2xvef9wc33/am13/2Vocv9zdn// +bG51/25xe/9maXP/bnB3/2dqcf9nanH/amxz/2ptd/9maXP/YmVu/25wd/9kZ3H/YmVu/2Zpc/9cX2j/ +Z2p0/2xvef9maXP/Z2p0/3V3ff9sb3n/bG95/3l7gf91eIH/bnB3/3Bzff9+gIb/bnF7/29xdf9sb3n/ +bnF7/25wd/9sb3n/Z2p0/25xe/9qbXf/d3l//2dqdP9ucXv/bnB3/2ptd/9ucHf/bnF7/2xvef9zdXz/ +dXd9/25wd/9sb3n/aGp0/2xvef9tb3f/bnB3/3J1fv9tcHr/bnF6/3V4gf9wc33/c3V8/25wd/9zdn// +c3Z//3N2f/9ucXv/dXiB/3Byef9wc33/c3Z//3Byef9ucHf/cHN9/3d5f/9wc33/cHN9/25wd/91eIH/ +c3Z//3Bzff9vcXX/bnB3/3d5f/91eIH/dnh8/3V3ff91d33/d3l//3Byef9ucXv/bG95/2xvef9ucHf/ +c3V8/3N1fP9sbnX/c3V8/29xdf9wcnn/dXd9/25wd/9zdXz/am13/2xudf9sb3n/Z2p0/2xvef9sb3n/ +amxz/25xe/9sbnX/cHN9/2psc/9sb3n/bnF7/2psc/9nanH/Zmlz/2Zpc/9nanT/bnB3/2Zobv9qbHP/ +Z2p0/25xe/9nanT/bnF7/2xudf9sbnX/cHJ5/21vc/9ucHf/bG95/2xvef9ucXv/am13/25wd/9ucHf/ +dnh8/2xudf9nanH/b3F1/25xe/91d33/c3Z//2xvef9wcnn/c3Z//3Byef9ucHf/dXiB/3Bzff9ucXv/ +bnF7/3N2f/91eIH/c3Z//2xvef9wc33/c3V8/36Ahv9ucHf/dXd9/3V3ff9tb3P/Z2p0/2xudf9qbXf/ +Z2p0/2xudf9vcXX/b3F1/3V3ff9ucHf/bnB3/3V3ff91eIH/bnB3/2xvef9ucXv/cHN9/25xe/9zdn// +d3qD/3d5f/9zdXz/e32D/3l7gf9+f4P/e32D/3l7gf9+gYr/d3qD/3l7gf9+gIb/d3l//3V3ff91d33/ +eXuB/3V3ff93eX//gYOK/36Biv97fYP/d3qD/3Byef9ucHf/bnF7/25wd/9maG7/cHN9/2xvef9kZ3H/ +Z2p0/3V4gf9nanH/Z2px/2psc/9nanH/Z2px/2Jlbv9kZ3H/Zmlz/2Zpc/9maG7/ZGdx/2Rncf9maXP/ +YGNs/2dqdP9wcnn/ZGdx/3V3ff9sb3n/bG51/3N1fP9sbnX/d3l//3Byef9vcXX/bG51/3V4f/90d37/ +bW90/3N1fP9ucHf/bnB3/3N2f/9sb3n/cHJ5/2dqdP9ucHf/cHN9/3Bzff9ucHf/c3V8/3Byef9maG7/ +d3qD/2xudf9wcnn/am13/3N1fP9sb3n/bW9z/25wd/9ucHf/bnB3/2xudf91d33/cHJ5/2xudf9wc33/ +ZGdx/2xvef9wcnn/bG95/2xudf91d33/c3V8/2xudf94eX3/d3qD/25wd/9ucXv/foCG/3Bzff9wcnn/ +bnF7/25xe/9ucHf/am13/2psc/9rbnj/a254/3d6hP9wcnn/dXiB/3N1fP9ucXv/cHN9/3Bzff9wc33/ +eXuB/3Z5gv91eIH/cHJ8/2lrdP9rbnj/bW93/29xef9xdH3/bnF7/21wev9zdn//c3Z//3Bzff9ucXv/ +d3qD/3N2f/91d33/bnB3/3N1fP9vcXX/bnB3/3Byef9ucHf/b3F1/3Byef92eHz/bnB3/3Byef9ucHf/ +dXd9/3Byef9wc33/bG95/3Bzff91d33/d3l//3N1fP9sb3n/bnF7/3Z4fP9tb3P/am13/2xudf9qbHP/ +am13/25wd/9sb3n/Z2p0/3Bzff9sbnX/bnF7/3Bzff9nanT/bnF7/2ptd/9qbHP/am13/2Zpc/9qbXf/ +bG95/2xudf9wc33/bG51/25xe/9qbXf/bnF7/3Bzff9qbXf/bG51/2dqdP9qbXf/bnF7/3N1fP9sbnX/ +am13/25wd/92eHz/bnB3/3N2f/9sb3n/bG95/3Bzff9ucHf/bG51/29xdf9wcnn/bnF7/3Byef9wc33/ +bG95/3d6g/9sb3n/bnF7/3N1fP9zdn//dXiB/3d6g/9ucXv/cHJ5/3d6g/91eIH/cHN9/3N1fP9qbXf/ +bW9z/25wd/9ucHf/cHN9/3Byef9nanT/bG95/3Byef93eoP/bG95/3N1fP9wcnn/bG51/2psc/9qbXf/ +bG51/2Zpc/9sbnX/amxz/2dqdP9ucXv/bG51/2dqdP9ucXv/bG95/2psc/9nanH/Z2px/2xudf9sbnX/ +am13/2psc/9maG7/YGNs/2Rncf9kZ3H/bG95/2Zpc/9maXP/Z2p0/2Zpc/9kZ3H/bG95/2psc/9nanT/ +Zmlz/2xvef9sb3n/Zmlz/3d5f/91d33/dXd9/3Byef9ucHf/bnB3/3Byef9wcnn/am13/3d6g/9zdXz/ +bG95/3Byef95fIb/bG95/25wd/9sb3n/bG95/2xvef9qbHP/bG51/2xudf9qbHP/bG51/2psc/9sb3n/ +am13/2Zpc/9sb3n/dXd9/2Rncf9sb3n/Zmlz/2dqcf9maXP/Zmlz/3N1fP9qbXf/Z2px/2dqdP9xdH3/ +c3V8/2psc/9ucXv/amxz/2psc/9sb3n/am13/2xvef9qbXf/bG51/3Bzff9ucXv/bG95/3N1fP9wcnn/ +amxz/36Ahv9zdXz/cHJ5/2xudf93eX//bG95/21vc/9ucHf/bG95/2xvef9nanT/dXd9/2xvef9qbXf/ +cHN9/2Rncf9ucXv/bG95/2ptd/9sbnX/b3J7/29ye/9oa3X/c3V8/3J0fP9nanT/bG52/3h6gP9rbXT/ +bG51/21vdv9sbnX/bG51/21vdf9pa3L/bG92/2hrdf9zdn3/bXB6/2xvef9tb3b/Z2px/21vc/9sbnX/ +bG51/3Z4fP90dnz/cHJ7/2xvef9pbHP/bW92/2ttdv9sb3f/dHZ8/25wef9sbnf/cHJ5/25wd/9qbXf/ +am13/3N1fP9ucXv/c3V8/2xudf9ucXv/amxz/2ptd/9qbXf/bG51/2psc/9qbXf/am13/2psc/9qbHP/ +bG51/2xvef9sb3n/am13/2ptd/9sb3n/c3V8/3N2f/9wc33/cHN9/3V3ff94eX3/bnB3/3Bzff9zdXz/ +bnF7/25xe/9zdn//c3Z//2xvef97fYP/c3Z//3t9g/97fYP/c3V8/36Ahv91eIH/c3Z//3d5f/94eX3/ +d3qD/3l8hv91eIH/e32D/3N2f/9zdn//cHJ5/3d6g/91d33/bG95/25wd/9sb3n/bnB3/3V4gf91d33/ +bnB3/2xvef9ucXv/dXiB/3Byef91eIH/bG95/25wd/9wcnn/bW9z/2psc/9vcXX/cHJ5/2xvef9sb3n/ +bnF7/25xe/91eIH/am13/2xvef9zdXz/bnF7/3V3ff91d33/b3F1/29xdf91d33/bnB3/2xudf9zdXz/ +bnB3/25wd/9zdXz/cHN9/3N2f/9zdXz/bG95/25xe/9wc33/eXuB/3N1fP91eIH/dXiB/3Byef9sb3n/ +bnF7/25xe/9ucHf/bnF7/25xe/9wcnn/c3Z//25xe/9sb3n/cHN9/3Bzff9vcXX/bG95/2xvef9vcXX/ +bnB3/3Bzff9wcnn/b3F1/25wd/9zdXz/bnB3/3d5f/9ucHf/bG95/3N2f/9ucHf/cHJ5/3Bzff9zdXz/ +bnB3/25wd/9wc33/cHN9/2dqdP93eX//dnh8/3Z4fP9zdXz/bG51/2xudf9ucHf/bW9z/2dqcf9zdXz/ +bW9z/2xudf9sbnX/eXyG/2xudf9nanT/Z2px/2Zpc/9sbnX/Zmlz/2Zpc/9nanH/ZGdx/2xudf9qbHP/ +bnF7/2xudf9kZ3H/bG95/3V3ff9maXP/c3V8/25wd/9sb3n/c3Z//25xe/93eoP/dXd9/25wd/9ucXv/ +b3J6/3J0fP9ucHf/dXd9/29xdf9ucHf/cHN9/25xe/9zdn//bG95/2xvef9wc33/cHN9/25wd/9zdn// +bnF7/2ptd/94e4X/dHZ8/3J0fP9sbnX/dHZ8/29xeP9sbnX/b3F4/29xeP9tcHr/bnB0/3V3e/9wcnn/ +aGt1/21wev9jZm//cHJ5/25xev9tb3P/bW92/3Z4fP9ydHv/cHJ3/3V3fP9ydHv/aGtz/21vdv96fIP/ +bW93/2xvef9tb3f/aWx2/2xudf9rbXb/aWx1/2hrcv9pa3T/dnh+/25wd/9tb3f/a254/2dqcf9tb3P/ +bG51/25wd/91d33/cnV+/3F0ff9vcXr/aWxy/21vd/9tb3b/b3F5/3BzfP9rbnj/bnB4/25wd/9wcnn/ +bG51/25wd/94eX3/cHJ5/3N2f/9wcnn/c3Z//3Byef9zdXz/d3qD/3N1fP9wcnn/cHN9/3N2f/9sb3n/ +bG95/3Byef9zdXz/c3V8/29xdf9ucHf/bnF7/3l7gf93eX//dXd9/3N1fP91d33/dXd9/25wd/9ucHf/ +b3F1/25wd/9ucHf/bnF7/2ptd/9kZ3H/dXd9/2ptd/9zdXz/dnh8/25wd/94eX3/cHJ5/29xdf9wcnn/ +bG51/3Bzff9ucXv/bG51/3N1fP9tb3P/c3V8/2xudf9zdXz/cHN9/2psc/9qbXf/Z2p0/2ptd/91d33/ +dXd9/25wd/9ucHf/bG51/3Bzff9sbnX/bG95/2ptd/9sbnX/cHN9/21vc/9qbHP/am13/2xvef9tb3P/ +bG51/21vc/9qbHP/c3Z//2dqcf9sbnX/bW9z/21vc/9zdXz/c3V8/2xudf9tb3P/cHN9/25wd/9ucHf/ +Zmlz/2Zobv9maG7/am13/2Zpc/9qbXf/bG95/2psc/9qbXf/am13/3N2f/9qbXf/cHN9/3Bzff9nanH/ +ZGdx/2dqdP9qbXf/am13/2xudf9sbnX/bG51/25xe/9sbnX/am13/3Byef9zdXz/b3F1/2xudf9sbnX/ +bG51/2xvef9ucXv/am13/21vc/9sbnX/dXd9/2xudf93eoP/cHN9/21vc/9wcnn/bG51/2dqdP9sbnX/ +amxz/2dqcf9maXP/Z2p0/2ptd/9maXP/c3Z//3d5f/9wcnn/Z2p0/2Rncf9kZ3H/bG51/2ptd/9maXP/ +bG95/2xudf9maXP/Z2p0/3d6g/9qbHP/bG51/2psc/9maXP/bG51/2Zpc/9kZ3H/bG51/2dqdP9qbHP/ +amxz/2ptd/9nanT/YGNs/2ptd/9zdXz/YmVu/25xe/9sbnX/Z2px/2ptd/9qbXf/dXd9/25xe/9maXP/ +am13/25xe/9xc3r/a254/3ByeP9sbnX/a210/2ptd/9sbnX/am13/2dqdP9qbHP/Zmlz/2dqdP9maXP/ +am13/2hrcv9iZW7/cnR6/25xev9ucXr/a253/3R2ev9ucHn/bG51/21veP9rbnj/bnF7/21weP9vcnz/ +b3J6/2tueP9vcnz/ZWhx/3F0fP9wcnn/am11/2ptd/90d4D/cnV9/21weP9xc3v/cXN6/2psc/9qbXX/ +dXd//2ttdP9tcHr/a254/2lsdP9tb3T/aWx1/2hrdP9tbnX/aGt0/3d4ff9xc3j/bXB6/21vdv9maXP/ +amxz/2dqdP9qbXf/bnF7/3N1fP9vcnv/bXB6/2Vocv9qbXf/am13/3N1ff9xc3v/bW92/25xev9sb3n/ +bG95/2dqdP9sbnX/c3V8/2ptd/9qbXf/Z2px/2Zpc/9nanH/Z2px/2ptd/9nanH/Zmhu/2Zpc/9qbXf/ +YmVu/2Jlbv9maG7/Zmlz/2ptd/9sbnX/YmVu/2Zpc/9sb3n/c3V8/3Bzff9zdXz/cHN9/3d5f/9qbXf/ +bW9z/2xudf9ucHf/bnB3/3V3ff9sbnX/Z2px/3V3ff9wcnn/dXd9/3V3ff9sbnX/c3Z//3Bzff9tb3P/ +b3F1/29xdf92eHz/c3V8/2xudf91d33/am13/2ptd/9nanT/bnF7/2ptd/9iZW7/Z2px/2Jlbv9iZW7/ +Z2p0/2dqdP9nanH/Z2p0/2psc/9zdXz/bG51/3Byef9sbnX/bnB3/3N1fP9sbnX/YmVu/2psc/9qbXf/ +bG51/2dqdP9qbHP/Z2p0/3d5f/9nanH/bG51/21vc/9sbnX/c3V8/3V3ff9wcnn/bW9z/3Bzff9sbnX/ +amxz/25xe/9sb3n/b3F1/3d5f/9sb3n/cHN9/3Bzff9ucHf/bnF7/2xvef97fof/bnF7/3d6g/95e4H/ +c3V8/2xvef91eIH/c3V8/25wd/9ucXv/bnF7/25wd/9wc33/cHJ5/2xvef9zdn//cHJ5/2xudf9sbnX/ +am13/2ptd/9ucXv/cHN9/25wd/9ucHf/Z2p0/3V3ff9ucHf/eXuB/3N1fP9vcXX/cHJ5/25wd/9vcXX/ +c3V8/2xudf9sbnX/bnB3/3Byef9sbnX/bG51/3l7gf93eX//d3l//3Byef9sb3n/am13/25xe/9ucXv/ +am13/3N2f/9vcXX/amxz/2ptd/9+f4P/bnF7/3Byef9ucHf/bnB3/25wd/9sb3n/am13/3Bzff9wcnn/ +cHJ5/3N1fP93eoP/c3Z//25xe/95e4H/e36H/2dqdP91eIH/d3qD/3N2f/93eoP/d3qD/3t+h/97fYP/ +c3Z//3V4gf9sb3j/bnB2/25xef9ydXz/cXR9/3Bzff9vcXj/bG95/25wd/9sb3n/bG95/3Byef9sb3n/ +bG51/3J1fP9ucHf/Z2px/3J1fv9zdXr/cHJ5/2tueP9ydHr/cHJ6/29xd/9wc33/b3J8/3F0ff9xc3z/ +cXR9/3N2fv9ucHn/c3Z+/2hrdP9zdn7/dXh//29xeP9ucHf/dXiA/3F0ff9tcHr/dHZ7/3R2e/9pbHT/ +bnF4/3V4f/9sbnb/bnB3/2xudf9sbnX/bW90/2hrc/9rbXT/a254/2dqdP9wc33/bnB0/21wef9tb3P/ +amxz/21vc/9nanT/bG51/2xvef9sb3n/am13/3Byef9nanT/Zmlz/2dqdP9ucXv/cHN9/2ptd/9ucHf/ +bG51/25wd/9qbXf/am13/3V3ff9wcnn/cHJ5/2xudf9ucHf/bG51/2xudf9ucXv/Z2p0/2psc/9qbXf/ +bnF7/2psc/9qbXf/bG95/3Bzff9sb3n/am13/2dqdP9ucXv/cHN9/3d5f/94eX3/dnh8/3V3ff93eX// +bG51/2xudf9sb3n/bG95/2xudf9wcnn/cHJ5/2xudf92eHz/bnB3/3N1fP91d33/am13/2xvef9sb3n/ +bG51/21vc/9sbnX/dXd9/3N1fP9ucHf/cHN9/2ptd/9qbXf/Z2p0/3V3ff9wcnn/Z2p0/2ptd/9nanT/ +bG51/3Bzff9ucXv/bnB3/2xudf9tb3P/dnh8/29xdf9ucXv/cHN9/25xe/91d33/bG51/2dqcf9tb3P/ +cHJ5/2xudf9tb3P/bW9z/2ptd/93eX//Z2p0/2psc/9sbnX/am13/3V3ff92eHz/cHN9/29xdf91d33/ +bnB3/25wd/9qbXf/ZGdx/2psc/9ucXv/am13/2psc/9nanT/Z2px/2xudf9qbXf/dXiB/2xudf9wc33/ +dXd9/2xudf9nanT/bnF7/21vc/9sbnX/bG51/2ptd/9nanT/am13/2dqcf9nanT/bnF7/2ptd/9qbXf/ +am13/2ptd/9qbXf/bG95/25xe/9sb3n/Zmlz/2BjbP9qbXf/Zmhu/25wd/9qbXf/Z2px/2dqdP9maXP/ +Zmhu/2dqdP9kZ3H/Zmlz/2Zpc/9sb3n/am13/2dqdP93eoP/c3V8/3V3ff9nanT/ZGdx/2Jlbv9nanH/ +Z2px/2dqdP9sb3n/Z2p0/2Jlbv9nanT/eXuB/2ptd/9qbXf/bG51/2xudf9ucHf/b3F1/2dqdP9ucHf/ +bG51/21vc/9sbnX/c3V8/2xudf9qbHP/dnh8/3V3ff9maG7/c3Z//3N2f/9sb3n/c3V8/3N1fP94eX3/ +dXd9/3Byef9zdXz/c3Z8/3J0e/9ucXv/cnV7/29xef9vcXj/bW93/3Byef9ucHf/b3F1/29xdf9sbnX/ +bW9z/25wd/9wcnn/bG95/2hqcf91d37/cnV6/21wef9tb3b/dXd9/3R2fv9ucHf/b3F6/3F0ff9ucXv/ +cXN6/3J0ff9zdn7/cnR7/3Z5gf9rbnf/c3Z//3R3f/9vcXb/b3F2/3N2f/9wc33/bnB3/3R3gP90dnv/ +am10/3J0e/90dn3/bG51/29xef9sbnX/am12/2xvc/9gY2z/Zmlz/2dqdP9kZ3H/bG95/2dqcf9qbXf/ +amxz/2ptd/9qbXf/bG51/2xudf9wcnn/bnB3/21vc/9ucXv/Z2p0/2Zpc/9nanT/bG95/25xe/9wcnn/ +cHJ5/25wd/9ucHf/bW9z/25wd/9zdXz/dXd9/3Bzff9ucHf/bG95/2xvef9sb3n/dXd9/29xdf9ucHf/ +bnF7/3Bzff9vcXX/bG95/3V4gf91eIH/bnF7/3N1fP9wc33/d3qD/3d6g/95fIb/e36H/36Ahv9+f4P/ +e36H/3Bzff9wc33/dXiB/3N2f/9wc33/cHN9/25xe/9qbXf/eHl9/3N2f/91d33/dXd9/2xvef9wcnn/ +cHJ5/29xdf9sb3n/bnB3/3N1fP9zdXz/cHJ5/25xe/9qbXf/am13/2dqdP91d33/c3V8/2xudf9sb3n/ +cHJ5/3Byef9zdn//dXiB/3V4gf9zdn//cHJ5/3t9g/9wc33/dXiB/3d6g/95fIb/e32D/3d6g/9wc33/ +dXd9/3N2f/9zdn//cHN9/3N1fP9zdXz/d3qD/2ptd/9sb3n/cHJ5/25wd/91d33/dnh8/3V3ff9ucHf/ +dXd9/25wd/9tb3P/bG95/2ptd/9wcnn/c3Z//3Bzff9ucXv/dXd9/2xudf9ucHf/bnB3/3t9g/9vcXX/ +c3V8/3Z4fP9ucHf/amxz/25xe/9qbXf/am13/2xudf9qbXf/bG51/2psc/9nanH/bG51/25xe/9qbXf/ +am13/2xudf9qbXf/ZGdx/2xvef9ucXv/bG95/2Zobv9kZ3H/am13/2dqdP9zdXz/am13/2dqdP9zdXz/ +bG51/2xudf9zdXz/b3F1/2xvef9sb3n/c3Z//25xe/9vcXX/e32D/3d5f/93eX//bnB3/2xudf9nanT/ +bnB3/25wd/9sb3n/dXiB/25wd/9ucHf/bnB3/31+gf9ucHf/bG95/2xudf9nanT/Z2p0/21vc/9nanT/ +bG51/2psc/9sbnX/Zmlz/2xvef9nanT/Z2p0/3Bzff9zdXz/ZGdx/3N1fP9ucXv/bG51/3N1fP9ucXv/ +cHN9/3Bzff9sb3n/bG95/3Fze/9ydHv/b3J5/3R2fP9vcXb/bW95/2hrdf9oa3X/am13/2psc/9qbHP/ +bG95/2Zpc/9maXP/Z2p0/2dqc/9gY2z/cXR9/29xef9sb3j/bG52/3J0e/9vcnv/b3F1/25weP9wcnn/ +cHJ2/25weP9wcnn/bnB3/25weP9ydX7/Z2p0/3N2f/9xc33/bnB3/3Bzff9wc33/bnF7/21vc/9zdXz/ +dnh8/2xudf9zdn//d3qD/29xdf9wcnn/bG95/2xvef9sb3n/Zmhu/25wd/9ucHf/amxz/3V3ff9sb3n/ +cHJ5/29xdf9sbnX/bnB3/2xudf9tb3P/c3V8/2xudf9sbnX/bnF7/2Zpc/9qbXf/Z2p0/2ptd/9wc33/ +bG95/3Bzff9sb3n/bG51/25wd/9ucHf/c3V8/3N2f/9zdXz/b3F1/25wd/9ucHf/bG51/3V3ff9vcXX/ +bG51/25wd/9wcnn/bG95/25wd/91eIH/e32D/3Bzff9wc33/c3V8/3N2f/91eIH/eXuB/3d5f/9zdn// +dnh8/3d5f/9nanT/b3F1/25xe/9wc33/cHN9/3Bzff9ucXv/bnB3/3V4gf9wc33/c3Z//3V4gf9ucHf/ +cHN9/25xe/9ucHf/bG95/2xvef91d33/c3Z//25xe/9wc33/bnB3/25wd/9nanT/c3V8/3N2f/9qbXf/ +bG95/25wd/9sb3n/c3Z//3Bzff9zdn//c3Z//3Bzff95fIb/cHJ5/25xe/9zdn//cHN9/3Bzff9wc33/ +Z2p0/25wd/9zdn//bnF7/3Byef9wcnn/cHJ5/3d6g/9ucHf/cHJ5/3Bzff9sb3n/d3l//3Z4fP91d33/ +bnB3/3N2f/9ucHf/bnB3/25wd/9ucHf/cHJ5/3d5f/91eIH/c3Z//3l7gf9ucXv/bnF7/3N2f/9+gYr/ +c3V8/3d6g/97fYP/cHN9/3Byef9ucXv/bG95/2xvef9sb3n/bG95/3Bzff9ucXv/bnB3/3Bzff97fYP/ +dXiB/3Bzff9ucXv/cHN9/25xe/93eoP/e32D/3l7gf9zdn//cHJ5/3N2f/9wcnn/eXuB/3Bzff9ucHf/ +d3qD/3N1fP9zdXz/eXyG/3V3ff91d33/c3V8/3d6g/91eIH/c3V8/3l8hv93eoP/d3l//3Bzff9sb3n/ +Zmlz/25wd/9sbnX/b3F1/3Byef9ucHf/bnB3/2xvef97fYP/bnF7/25xe/9ucHf/bG51/2ptd/9qbHP/ +amxz/2xudf9ucHf/bnB3/2dqdP91eIH/am13/2xvef93eoP/c3Z//2Zpc/91d33/c3Z//3Bzff93eX// +c3Z//3V3ff9wc33/bnF7/25wd/91d3v/dXd7/3Byef91d3z/bnB0/3Byef9qbXf/bG95/25wd/9tb3P/ +bG51/25xe/9maXP/YmVu/2dqdP9kZ3H/YGNs/3J1fv9sb3n/Zmhu/2RmbP9sb3n/Z2py/2dqcf9oa3L/ +Z2lz/2dpb/9laHH/bG95/2ptd/9sbnX/bG95/2Rncf9wc33/bG95/2xudf9qbXf/c3Z//3V4gf9vcXX/ +cHJ5/3V3ff9sbnX/dXd9/3d5f/9tb3P/bnB3/2xudf9ucHf/bnF7/2Zobv9sbnX/bnB3/2dqcf91d33/ +bG51/25wd/9ucHf/b3F1/25wd/9ucHf/am13/3Bzff9sbnX/am13/2xvef9maXP/Z2p0/2Vocv9tb3T/ +c3V8/25wd/9ydHv/c3Z//2xvef9ucHf/bG95/3Bzff9zdXz/c3V8/25wd/9ucHf/b3F1/21vc/9wcnn/ +bW9z/25wd/9ucXv/c3Z//3Bzff9wcnn/dXiB/3d5f/9sb3n/bG95/29xdf9ucHf/cHJ5/3Z4fP9ucXv/ +c3V8/3Bzff9zdXz/ZGdx/2psc/9qbXf/am13/2ptd/9sb3n/bnB3/2dqdP9zdXz/bnF7/25xe/9wc33/ +bG51/2xvef9sb3n/am13/2psc/9sbnX/c3V8/3Bzff9ucHf/cHJ5/2xudf9tb3P/Z2px/2xvef9wc33/ +bG51/25wd/9ucHf/b3F1/3N1fP9zdXz/bnB3/25xe/9tb3P/dXd9/2xudf9sb3n/bnF7/25xe/9ucXv/ +am13/2Zpc/9sbnX/c3V8/25wd/9sbnX/bW9z/2xudf94eX3/bnB3/25wd/9ucXv/bnB3/3Z4fP91d33/ +eHl9/25wd/9zdXz/bG51/29xdf9ucHf/bnB3/3Byef91eIH/c3Z//3Bzff93eoP/bnF7/3Bzff9ucXv/ +eXyG/25wd/9zdXz/dnh8/25wd/9ucHf/bnF7/3Byef9qbXf/bnB3/25wd/9ucXv/bnB3/25wd/9sbnX/ +dnh8/25wd/9tb3P/bnB3/25wd/9qbXf/cHN9/3V3ff92eHz/cHJ5/2xudf9wc33/cHJ5/3l7gf9wc33/ +bnF7/3V3ff9tb3P/bnB3/3Byef9ucHf/b3F1/25wd/9zdXz/cHJ5/29xdf95e4H/dXiB/3l7gf9ucHf/ +bnB3/2RmbP9sbnX/Z2p0/2psc/9sbnX/am13/2Zpc/9qbHP/c3Z//2ptd/9qbXf/am13/2dqdP9maXP/ +am13/2Zpc/9qbXf/bG51/2xvef9nanT/bG95/2Rncf9maXP/bG95/2ptd/9iZW7/bnF7/2xvef9sbnX/ +cHN9/25xe/9zdXz/bnF7/2xvef9qbHP/cHN9/3Byef9sb3n/dnh8/21vc/9ucHf/bG51/25wd/9qbXf/ +bG51/21vc/92eHz/bnB3/2dqcf9zdXz/bnB3/2dqdP97fof/c3Z//25xe/9ucXv/eXuB/2xvef9ucHf/ +bG95/25xe/9ucHf/bnB3/25xe/9qbXf/bG51/2xvef9kZ3H/c3V8/25xe/9qbXf/bG51/3N2f/93eoP/ +cHJ5/3Bzff91d33/bG51/3V3ff95e4H/bG51/3Byef9ucHf/b3F1/3Byef9maG//Z2p0/2dqc/9hZG3/ +cHN9/2ttdP9oa3X/a21z/2psc/9qbXf/bG51/2ptd/9wc33/bG95/25xe/9tcHr/Z2p0/2dqdP9oa3P/ +bXB3/3J1fv9ucXv/bG95/3Byef9qbHP/amxz/2psc/9sb3n/bG95/2xvef9sbnX/bnF7/2psc/9sbnX/ +bnF7/2psc/9maXP/Zmlz/2ptd/9maXP/Z2px/25xe/9ucXv/amxz/2Zobv9kZ3H/Zmlz/2dqdP9wcnn/ +bG95/25xe/9wc33/c3V8/2Rncf9sbnX/am13/2psc/9nanT/bG95/2dqcf9qbHP/c3V8/25xe/9ucXv/ +cHN9/2psc/9qbXf/bnF7/25wd/9tb3P/b3F1/3V3ff9zdXz/c3V8/3N1fP9sbnX/bnB3/2psc/9ucHf/ +eHl9/25wd/9sbnX/bG51/2xvef9zdn//bnF7/2xudf9ucHf/bnB3/3V4gf9ucHf/cHJ5/3N1fP9ucXv/ +bnF7/3N1fP9qbHP/amxz/3V3ff9ucHf/bnB3/25wd/9ucHf/dnh8/21vc/9ucHf/c3V8/25wd/92eHz/ +dXd9/3Z4fP9ucXv/dXiB/25xe/9zdXz/am13/2Zpc/9qbHP/cHN9/2xvef9sbnX/cHN9/2ptd/9sbnX/ +bnB3/3l7gf9wcnn/c3Z//3V4gf9ucXv/bnB3/25xe/9ucHf/am13/25wd/9sb3n/bnF7/25wd/9ucHf/ +bG51/3d5f/9wcnn/b3F1/2xudf9ucHf/Z2px/2xvef9wc33/bnF7/2xvef9qbHP/bG95/2Zobv9sb3n/ +Z2px/2dqcf9qbXf/Z2p0/2Zpc/9sb3n/am13/2ptd/9qbXf/bG51/3V3ff9sb3n/eXyG/3l7gf95e4H/ +cHN9/25wd/9qbXf/c3Z//3N1fP9zdXz/dXiB/3V3ff91eIH/d3l//4OFjP97fYP/eXuB/3V4gf9zdn// +cHN9/3N2f/9wc33/d3qD/3V3ff91eIH/cHN9/3l7gf9zdXz/bnF7/3V4gf9wc33/am13/3d6g/91eIH/ +cHN9/3N2f/93eoP/e32D/3N2f/9wcnn/b3F1/3V3ff91eIH/bnF7/3l7gf9ucHf/c3V8/29xdf9ucHf/ +bW9z/21vc/9vcXX/dXd9/25wd/9sb3n/bnF7/2dqdP9nanT/e32D/3V3ff9wcnn/bnB3/3Z4fP9tb3P/ +b3F1/25wd/9ucHf/bG51/2psc/9zdn//bnF7/25wd/9zdXz/Zmhu/3Z4fP9ucXv/b3F1/21vc/99f4X/ +e32D/3V3ff93eoP/fX6C/3V3ff98foX/f4GI/3N2f/92eYL/cnR7/29yfP9zdn//aGt1/25wd/9qbHP/ +ZWhy/29ye/9sbnX/bW92/21vdv9nanH/am13/2dqcf9maXP/bnB3/2Zpc/9nanT/bG92/2hrdP9lZ3D/ +ZWhw/2xudP9ucXr/a212/2hqc/9qbXf/bG51/2xudf9qbXf/bnF7/3Byef9wcnn/b3F1/3N1fP9wcnn/ +bG51/3N1fP9vcXX/bnB3/3Byef9zdXz/bnB3/3Byef9wc33/dXd9/25xe/9sb3n/bnB3/25xe/9zdXz/ +eHl9/3N1fP9zdXz/cHN9/3Z4fP9nanH/bG51/3Bzff9sbnX/bnB3/3V3ff9tb3P/bG51/3Z4fP9wcnn/ +cHJ5/3N1fP9sbnX/bG51/2xvef9zdXz/bG51/2xudf9wcnn/c3V8/3Bzff9zdXz/bnB3/25wd/9sb3n/ +bG95/3d5f/9ucHf/cHJ5/2xvef9vcXX/c3Z//3Bzff9sb3n/bG95/25xe/91eIH/bnB3/3N2f/9zdn// +c3Z//3N2f/93eX//bnB3/2xvef9wc33/bG95/2xudf9sbnX/bG51/3Z4fP9qbXf/am13/3Byef9sbnX/ +c3V8/3N1fP9ucXv/bG95/3N1fP9qbHP/bW9z/21vc/9sbnX/bnB3/3V3ff9wc33/bG95/3N2f/9ucHf/ +bnF7/25xe/93eoP/cHN9/3N2f/95fIb/d3qD/3V3ff91eIH/dXd9/3N2f/9zdn//c3V8/3V4gf9wcnn/ +cHJ5/3Bzff91eIH/cHN9/25xe/9ucHf/cHJ5/2psc/9zdn//eXuB/3N2f/9ucXv/bG95/3N1fP9vcXX/ +c3V8/2xudf9sbnX/dXd9/25xe/9ucHf/cHN9/3Byef9wcnn/bnF7/3N1fP91eIH/bnF7/3l8hv95e4H/ +eXuB/25xe/9qbXf/Zmlz/3Byef9ucHf/am13/3Bzff9sb3n/cHN9/25wd/93eoP/c3Z//3Byef9ucHf/ +b3F1/2psc/9vcXX/bG51/3Byef9vcXX/am13/2xudf9zdXz/bG51/2xudf9wc33/bG95/2Zobv9wcnn/ +cHJ5/25xe/9sb3n/c3V8/3V3ff9ucXv/bG95/21vc/91d33/eXuB/25wd/91eIH/bG51/3Byef9tb3P/ +bnB3/2xvef9ucXv/cHJ5/3V4gf9wcnn/bG95/25xe/9qbXf/Zmlz/3Z5gv9zdn//cHN9/21vef92eH7/ +bnB3/29xdf9sb3n/bnB3/29xdf9vcXb/dHZ9/3Byef9ucHf/bG94/2Nmb/91d3z/bG95/2lsc/9nanT/ +bnF7/3V4gf9xc3v/c3Z//3N2fv9tcHr/dXd+/3J1f/9rbnj/bnF7/2xveP9tb3j/cXN6/29xeP9tb3P/ +aWty/2ptdP9wc3v/b3F4/3Bze/9ucXr/Z2p0/2xvef9qbHP/Zmlz/25wd/9nanL/aGt0/25xef9sbnb/ +aGt1/21wef9ydX7/dHeB/29xef9sb3j/bnF7/2xudf9qbHP/amxz/25xe/9sb3n/bG95/21vc/9ucXv/ +bnF7/2xvef92eHz/bnB3/3Byef9zdXz/cHJ5/21vc/9qbHP/bnF7/3N1fP9sbnX/bG51/2dqdP9sb3n/ +bG95/3Bzff9sb3n/c3V8/25xe/9wc33/Z2p0/2ptd/9ucXv/amxz/2dqdP9sb3n/Zmlz/2dqcf9sb3n/ +am13/2xvef9zdXz/amxz/2xudf9qbXf/bnF7/2ptd/9tb3P/bnF7/3V3ff9zdn//cHN9/25wd/9ucHf/ +bnB3/25wd/91eIH/bnB3/3Byef9ucHf/cHJ5/3N2f/91eIH/c3V8/3Bzff9wc33/e32D/25wd/9wc33/ +dXiB/3l7gf91eIH/d3l//2xvef9qbXf/bnF7/25wd/9qbHP/bnB3/2xudf94eX3/bnB3/2xudf9sb3n/ +am13/3Byef9zdXz/c3V8/2ptd/9zdXz/amxz/2xvef9ucHf/am13/21vc/92eHz/c3V8/25wd/91d33/ +b3F1/29xdf9vcXX/dnh8/25wd/9ucHf/bnB3/25xe/9qbXf/bG95/2psc/9sbnX/bG51/2xudf9qbXf/ +Z2p0/2dqdP9nanH/dXd9/2dqdP9nanH/ZGdx/2Zpc/9dYGr/Z2p0/3N1fP9sb3n/bG51/2ptd/9qbXf/ +amxz/2xvef9sbnX/am13/25xe/9wcnn/amxz/25xe/9qbHP/Z2p0/2xudf9sbnX/c3V8/2ptd/93eoP/ +cHN9/3Bzff9sb3n/am13/2psc/9ucHf/bW9z/2xudf9ucHf/bG51/3Byef9tb3P/d3l//3Bzff9sb3n/ +cHJ5/2xudf9maXP/bG51/2dqdP9wc33/am13/2xudf9ucHf/c3Z//25wd/9ucHf/dXiB/3V4gf9kZ3H/ +dXd9/25wd/91d33/bG51/3Bzff95fIb/c3Z//2xvef9sb3n/cnV+/3Z5gv9sbnX/enyC/29ydv9vcnz/ +bnB3/3Bzff9wc33/bG95/2xvef9wcnn/b3F1/2dqcf9ucHf/bG92/2hrdf91eIH/dXd+/3R2fv9ydHv/ +dXd8/29yd/9wcnf/b3F3/3J0e/9ucHj/b3J5/3V3ff9wcnj/cHJ3/3Fzev9sbnX/dHZ8/29xd/9tcHn/ +bG51/25xef9ydX7/bnB5/2xvef9vcXj/bG93/29yev9wcnj/aWx1/3Bze/9tcHr/a254/3Byef9tcHr/ +bW92/2dqdP9rbnb/dHZ9/3R2ff9zdX3/c3V8/29yef92eYL/dXd9/3Z4fP9+gYr/cXR+/3N2f/92eID/ +bW93/2hrdP9sb3n/b3J8/3V3ff9oa3X/YmVu/35/g/93eX//c3V8/3N1fP93eoP/c3Z//3N2f/9ucXv/ +cHN9/3V4gf9zdn//eXyG/3N2f/9wc33/cHN9/3Bzff9ucHf/am13/3Bzff91d33/bnF7/3Byef9sbnX/ +cHJ5/25wd/9zdXz/cHJ5/3V3ff9zdXz/cHN9/2ptd/9ucHf/d3qD/3Bzff9wc33/cHN9/2xvef9ucHf/ +dXiB/3Bzff91eIH/e32D/3V3ff93eoP/eXuB/3t9g/93eX//d3l//3l8hv97fof/e32D/36Ahv97fYP/ +eXuB/3V3ff91d33/gYOK/3Z4fP93eX//eHl9/3h5ff97fYP/d3qD/3N1fP95fIb/d3qD/3t+h/9wcnn/ +c3Z//3d6g/91eIH/dXiB/3l7gf9zdXz/c3V8/3V4gf9zdXz/Z2p0/2xvef9nanT/d3l//25wd/9qbXf/ +bnB3/2ptd/9ucXv/dXd9/3Z4fP9wcnn/c3V8/2xudf9vcXX/YmVu/2Jlbv9maG7/bnB3/2dqdP9iZW7/ +ZGdx/2BjbP9kZ3H/ZGdx/25wd/9kZ3H/Zmhu/2Zpc/9maXP/Zmlz/2Zobv9dYGr/YGNs/2Zobv9maG7/ +Z2p0/2Zpc/9nanT/Zmlz/3V4gf9sb3n/am13/2psc/9qbXf/Zmhu/25wd/91d33/c3V8/3N1fP9sb3n/ +bnF7/3Byef91eIH/c3Z//3N2f/91eIH/d3qD/3N1fP93eoP/cHN9/3Byef9wc33/c3V8/3d5f/9ucXv/ +eXyG/3l7gf91eIH/c3Z//25wd/9qbXf/c3V8/3Bzff9wc33/c3Z//25wd/9ucXv/bG95/3l7gf91d33/ +bnB3/3Byef9ucHf/bnB3/25xe/9wcnn/cHN9/2xvef9sb3n/bG95/3Bzff9ucHf/bnB3/3N1fP9zdXz/ +Zmhu/3Bzff9qbXf/bnF7/2ptd/9sb3n/dXiB/3Bzff9ucHf/bG51/3V2e/92eYD/bG52/3R2fP9sbnX/ +cXN6/21vd/9vcXn/cHJ5/3Byef9ucHf/bnB3/25wd/9qbHP/bG51/2psdP9pbHT/cHJ4/25weP9sb3f/ +bnB5/21vd/9ucHf/aGt1/2hrdP9qbXf/aGt0/2xvd/9sb3n/aWx0/21weP9nanT/ZWhv/25xev9vcnr/ +a254/25xeP9ydHz/dHZ9/29xe/9vcnz/b3J8/3N1ev9xdH3/cnR9/3F0ff92eYH/dXiA/25xev9zdXz/ +c3Z//3Byef9rbnj/b3J8/3h6gP90dn//cnR7/29xef9pbHb/cHJ5/21vc/9vcXX/d3l//29xdf90dnz/ +dnh8/2tud/9maXP/c3V8/3N1fP93eX//bG51/2psc/9zdXz/b3F1/25wd/9sbnX/bnF7/2ptd/9qbXf/ +amxz/2xvef9ucXv/bG51/3d5f/9vcXX/bnF7/3N1fP91d33/bnB3/2ptd/9zdn//c3Z//25xe/9wc33/ +am13/3Bzff9wc33/dXd9/3N1fP91d33/bnB3/25wd/9sbnX/bG95/3N2f/9ucXv/c3Z//3V4gf9zdXz/ +cHJ5/3d5f/91d33/cHJ5/3V3ff9tb3P/bG95/2xvef9wc33/am13/25xe/9ucXv/c3V8/3Byef91d33/ +bnB3/25wd/9ucHf/cHJ5/3l8hv9sb3n/bnB3/25wd/9ucHf/cHJ5/25wd/9qbXf/cHJ5/3Byef94eX3/ +bnB3/25wd/9zdXz/bnF7/3V4gf91d33/am13/29xdf9wcnn/bW9z/2Zpc/9qbXf/Zmlz/3Bzff9sbnX/ +Z2p0/2xvef9qbHP/Z2p0/2xvef9ucHf/Z2px/2dqdP9iZW7/ZGZs/25wd/9sb3n/bnF7/3d5f/91d33/ +bG95/3V3ff9qbXf/bG95/29xdf93eX//cHJ5/25xe/9wcnn/bnF7/2psc/9sbnX/Zmlz/2ptd/9sbnX/ +bG95/2xudf9tb3P/bnB3/25wd/97fof/c3Z//3V4gf9zdXz/dXiB/25xe/91eIH/e36H/3V4gf93eoP/ +d3qD/3d6g/93eX//eXyG/3l8hv95fIb/eXuB/3t9g/9zdn//d3qD/3N2f/9wcnn/bnB3/2xvef92eHz/ +b3F1/3l7gf93eX//c3V8/3N2f/9ucHf/Z2px/21vc/9sbnX/bG51/2xvef9qbHP/am13/2dqcf9zdn// +bG95/2psc/9sb3n/bG51/2ptd/9qbXf/bG51/25xe/9sb3n/bG51/2xudf9ucHf/bG51/2dqdP9sb3n/ +bG95/11gav9qbXf/am13/3Bzff9sbnX/bnF7/3V4gf9ucXv/bG51/2xudf9ydHz/dHZ8/29xef9ucXv/ +bG50/25xef9nanT/am13/2dqdP9nanT/Z2px/2Zpc/9nanH/Zmlz/2ttdP9oa3T/bnB4/3V3ff9ydX// +c3aA/3J1fv9tcHn/cnV+/29ye/9tb3f/cXR+/3J1fv92eH7/c3aA/25xev91d33/cXR9/21wd/9vcnz/ +c3Z//3J1ff90dnz/cnR8/3N1fP9wcnj/bnB3/3Byef91d3v/cHJ5/25wd/9tcHf/c3V8/3J0fP9sbnX/ +bW9z/3N2f/9wcnn/amxz/25xe/93eX//dHeA/3J0fP9vcnv/a211/29yef9ucHf/bW9z/3d5f/9vcXb/ +c3V9/3V3fv9sb3j/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/c3V8/2psc/9nanT/bG51/2ptd/9sbnX/ +bG51/2ptd/9sbnX/cHJ5/2xudf94eX3/bG95/25xe/9zdn//cHN9/2xvef9nanT/dXd9/3N2f/9sb3n/ +dXd9/2xvef9wc33/dXiB/3d5f/9zdXz/dXd9/25wd/9zdXz/amxz/2xudf9wcnn/am13/3Byef9sb3n/ +amxz/2Zpc/9wcnn/am13/2dqdP9wc33/amxz/2xvef9sb3n/bnF7/2xudf9zdXz/cHJ5/3Byef9wc33/ +bnF7/2ptd/9sbnX/bG51/2xudf93eX//bW9z/2xudf9sbnX/bG51/3Byef9wcnn/b3F1/2xvef9ucXv/ +dXiB/2xvef9ucHf/dXd9/3N1fP9zdn//dXd9/2xvef9ucHf/c3Z//25xe/9qbXf/cHN9/2ptd/95e4H/ +dXiB/3Bzff93eoP/c3Z//3t9g/9+f4P/eXyG/3d6g/91eIH/c3V8/3N2f/9qbXf/bW9z/25wd/93eX// +dXd9/3Byef93eX//cHJ5/3Byef9wcnn/e32D/3V4gf9wc33/bnF7/3Bzff9nanT/bG95/2ptd/9sbnX/ +bW9z/25wd/9ucHf/bG51/2dqdP9qbHP/dXiB/2xvef9ucXv/bG51/2ptd/9kZ3H/Z2p0/3Byef9maG7/ +am13/2dqdP9qbXf/Z2p0/2dqdP9sb3n/am13/3Bzff9ucXv/bG51/2xvef9sb3n/bG51/2dqdP9qbXf/ +dXd9/25wd/93eoP/dXiB/3V3ff91d33/b3F1/2Zobv9ucHf/bW9z/2xudf9ucXv/bG51/3Byef9tb3P/ +dXiB/3Bzff9qbHP/am13/2dqdP9sbnX/bG51/2ptd/9sb3n/bG95/2psc/9sbnX/Z2p0/2Zpc/9maXP/ +amxz/2xvef9iZW7/bG95/25xe/9wc33/amxz/2ptd/91eIH/bnF7/25wd/9sb3n/b3F4/3R2ff9wcnn/ +cXN4/21vc/9ydHv/bG51/25xev9wc33/cHN9/25wd/9wc33/cHN9/3Byef9wc33/bG94/25xef9xc3v/ +c3V8/29xeP91d33/bG95/3R3gP9ucXv/amx0/2xvef9ucXv/cHN8/3Bzff9wcnn/c3V8/3Byef9vcXj/ +cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/d3l//25wd/9wcnn/bnB3/3V3ff91d33/ +bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9xc3r/c3V8/21vdv93eoT/dXiB/3V3ff9/goz/ +cHJ8/3h6gf91d37/aWx2/2Vocv9ucXv/c3V8/3N1fP9qbXf/am13/3t9g/9wcnn/bnB3/3N1fP9ucXv/ +bG95/2xvef9wc33/bnF7/3N2f/9sb3n/d3l//2xvef9ucXv/bnF7/3V4gf9zdXz/Z2p0/3N2f/91d33/ +bG51/3V3ff9ucHf/cHJ5/3N2f/9zdn//c3Z//3N2f/9ucXv/c3Z//2ptd/9wcnn/cHN9/3Byef9wc33/ +c3V8/29xdf9ucHf/dnh8/3N1fP9wcnn/c3V8/21vc/9zdXz/bnB3/2xvef9ucHf/bnF7/2ptd/9ucHf/ +bnF7/25xe/9sbnX/bG51/2xudf9tb3P/dXiB/2psc/9qbHP/bG51/2dqdP9sb3n/bnF7/2ptd/9qbXf/ +am13/3V3ff9maXP/Zmhu/2ptd/9sb3n/bnF7/2xvef9maXP/Zmhu/2ptd/9maG7/XWBq/2Rncf9gY2z/ +bG95/2dqdP9qbHP/Z2p0/2psc/9qbXf/cHN9/3N1fP9ucXv/bnF7/2xudf9sbnX/am13/21vc/9ucHf/ +eXuB/3N1fP9wcnn/cHJ5/2xudf9qbHP/am13/3Bzff9sb3n/bG95/25wd/9wcnn/amxz/21vc/9sbnX/ +am13/2dqdP9qbXf/bG51/2xudf9sbnX/am13/3d5f/9sb3n/bnF7/2xvef9sb3n/bG51/3Byef92eHz/ +bG51/3N1fP9wc33/c3Z//3Bzff9zdXz/c3V8/3N1fP9wcnn/dXd9/2xudf9wcnn/bnB3/2ptd/9sbnX/ +am13/3Bzff9qbHP/d3l//3d5f/9zdXz/dXd9/25wd/9kZmz/bG95/2xvef9wc33/c3Z//29xdf9wc33/ +bnB3/3d6g/91eIH/bnF7/25xe/9sb3n/cHJ5/3Byef9wcnn/c3Z//3N1fP9wcnn/cHN9/3N2f/9wcnn/ +cHJ5/25xe/9zdn//Zmlz/3V4gf9wc33/d3l//2xudf9ucHf/d3l//25xe/9sb3n/bG95/3p8g/97fYP/ +dnmC/3V3ff91d3z/dHeA/3F0fP9zdXz/cXN6/3V3ff9ucHf/cHJ5/3Byef9sbnX/bnB0/29xeP9ucXr/ +b3F4/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/ +bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/bG51/3N1fP9nanT/amxz/2psc/9ucXv/ +cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/ZWhx/2Zpc/9jZnD/a254/2xudf9maXP/ +dXd9/2lrc/9wcnn/bXB4/2dpcP9laHL/am13/2xvef9zdXz/bG95/2xudf94eX3/bG95/25wd/9sb3n/ +bnF7/25xe/9ucXv/bnB3/3Byef9zdXz/bnB3/3h5ff9vcXX/bnF7/25wd/9zdn//cHJ5/2Zpc/9zdn// +cHN9/25xe/93eX//cHJ5/25xe/9zdn//c3Z//3Byef9zdXz/c3V8/3Byef9nanH/bG51/3Byef9sbnX/ +cHN9/3N1fP9ucHf/bG51/3V3ff9wc33/amxz/3V3ff9qbXf/bnB3/3Byef9ucHf/bG95/2ptd/9sbnX/ +bG95/25xe/9zdXz/am13/2xudf9qbXf/bG51/3V4gf9qbXf/bG51/25wd/9tb3P/bnF7/2xvef9sbnX/ +cHJ5/25wd/95e4H/bG51/2xudf9qbXf/bG95/2xvef9sb3n/Z2p0/2Zpc/9ucXv/am13/2Zpc/9sb3n/ +Zmlz/3N1fP9ucXv/bG51/2xvef9qbXf/dXd9/3Z4fP94eX3/c3V8/3Byef9sbnX/am13/3V3ff9zdn// +dXiB/3t+h/91eIH/cHN9/3N2f/9sb3n/bG51/25wd/95e4H/bG95/2xudf9sb3n/am13/2Rncf9nanH/ +YGNs/2Rncf9maXP/bG51/2ptd/9qbXf/am13/2ptd/91d33/bG95/3Bzff9sb3n/cHJ5/2xudf9sb3n/ +dXd9/2ptd/9sb3n/cHN9/3Bzff9ucXv/bG95/3Bzff9zdXz/bnF7/3N1fP9ucHf/dXd9/3Byef9tb3P/ +b3F1/2xudf9zdn//bnB3/3d5f/93eX//cHN9/3d6g/9ucXv/Zmlz/3Byef9ucHf/cHN9/3N2f/9sb3n/ +c3Z//25xe/91eIH/dXiB/3Bzff9zdn//cHJ5/25wd/9vcXX/bG51/3Byef9sbnX/am13/2xudf9sbnX/ +amxz/2psc/9qbHP/am13/2Jlbv9ucXv/bnF7/3N1fP9nanT/bnB3/3Z4fP9wcnn/bG51/2xudf95e4H/ +c3Z//25xe/9ucHf/bG95/25xev9vcXj/bXB6/21vef92eHz/cHJ5/25xe/9sb3n/bnB3/3Bydv9rbnf/ +bG94/29xeP9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/ +cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/am13/2psc/91d33/am13/2xudf9maXP/ +bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/dnh8/3Byev9zdXz/cXR9/3R3gP9wc33/ +bnF7/3+CjP9zdn//dnmD/3h7hP9xc3r/c3V8/3t9g/9+gIb/e32D/3d6g/9wc33/e32D/3Bzff9zdXz/ +cHN9/25xe/9zdn//bnF7/2xvef9ucXv/dXd9/29xdf91eIH/bnB3/2xvef9ucHf/dXd9/2xvef9kZ3H/ +cHN9/3N2f/9ucXv/d3l//2xvef9ucXv/dXiB/3V4gf9zdn//c3Z//3V4gf9wc33/am13/2xvef91eIH/ +bnF7/3V4gf91eIH/bnF7/2xvef93eX//cHN9/3Byef91eIH/bnB3/25xe/9wc33/c3Z//3Bzff9wc33/ +cHN9/25xe/9wc33/dXd9/25wd/9ucHf/bG95/25wd/93eoP/bnB3/25xe/9wc33/cHJ5/3Bzff9vcXX/ +bnB3/3Byef9tb3P/d3l//2ptd/9sbnX/am13/25xe/9wcnn/cHJ5/2xudf9qbHP/cHJ5/2xvef9qbHP/ +cHN9/2dqdP91eIH/d3qD/3Bzff9zdn//cHJ5/3d6g/95e4H/e36H/3V4gf93eoP/cHN9/3V4gf9sb3n/ +bG95/3Byef91eIH/c3Z//25xe/9wcnn/bG51/2dqcf9ucHf/dnh8/21vc/9qbXf/bG95/3Byef9sbnX/ +b3F1/2RmbP9sbnX/bG51/2ptd/9sb3n/Z2p0/2dqdP9sbnX/dXd9/2xudf9ucXv/bnF7/2xvef9nanT/ +bG51/3N1fP9sbnX/cHJ5/3Bzff9ucXv/bnF7/25xe/9wc33/cHN9/2xvef91d33/bnB3/3V3ff9zdXz/ +b3F1/2xvef9sb3n/c3Z//3Byef93eoP/d3qD/3N2f/91eIH/cHN9/2dqdP9ucHf/bnF7/3N2f/9wc33/ +bnB3/3N2f/9wcnn/eHl9/3V3ff9sbnX/bG95/2xudf9sbnX/bG51/2Zpc/9sbnX/amxz/2Zpc/9maXP/ +Zmhu/2Zobv9maG7/amxz/2xvef9gY2z/Z2p0/2xvef9ucXv/Zmlz/2xudf91d33/bG95/2xudf9ucHf/ +bnF7/25xe/9ucHf/bG51/2xudf9sb3n/am13/3J0e/9zdn//d3l//3Bzff9wc33/cHN9/25xe/9xc33/ +bnB2/25weP9wcnn/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/am13/2xudf9ucXv/bG95/25xe/9wc33/ +bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/ +am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn//d3qD/3l7gf93eoP/dXh//29yfP9vcnv/ +b3F1/2xudf93eoP/b3F4/3d5f/97fYb/dHZ//3V3ff97fYP/foCG/3t9g/9zdn//cHJ5/3l8hv9wc33/ +c3V8/3N2f/91eIH/d3qD/3d6g/9ucXv/cHN9/3N2f/9wcnn/d3qD/3N1fP9zdn//c3V8/3N2f/9sb3n/ +Zmlz/3N2f/91d33/bG95/3l7gf9sb3n/bnB3/25wd/9zdXz/bnB3/25wd/91d33/bnB3/2xudf9qbHP/ +cHJ5/21vc/92eHz/cHJ5/2xudf9sb3n/eHl9/3V3ff9wcnn/d3qD/25wd/9wc33/bnF7/3V4gf9wc33/ +bnF7/2xvef9sb3n/c3Z//3N2f/9wcnn/bG95/2xvef9sb3n/d3l//25wd/9vcXX/b3F1/29xdf9zdXz/ +bnB3/25wd/9ucHf/b3F1/3d5f/9qbXf/bG51/25wd/9wcnn/bnF7/3Byef9sbnX/amxz/3Byef9wcnn/ +amxz/3Byef9qbHP/cHN9/25xe/9tb3P/bnB3/21vc/91d33/dXiB/3V4gf9zdn//cHN9/25wd/9ucHf/ +c3V8/3Bzff91eIH/foGK/3t9g/93eoP/d3qD/3Byef9ucXv/dXiB/3d5f/9sb3n/bnB3/3Bzff9wc33/ +Z2p0/25wd/9maG7/bG51/2xudf9tb3P/bG51/2psc/9sb3n/bnB3/3l8hv9wc33/c3Z//3Bzff9wc33/ +am13/2xvef93eoP/cHJ5/3N1fP91d33/dXd9/3V3ff9zdXz/dXd9/3V3ff9wcnn/dXd9/29xdf91d33/ +dXd9/3Byef9sb3n/b3F1/3Byef9tb3P/dXd9/3d5f/9ucHf/cHJ5/3Byef9kZ3H/am13/2Zpc/9sb3n/ +bnF7/2ptd/9zdXz/bG51/3V3ff9zdXz/bnB3/3N1fP9sb3n/bG95/25wd/9ucHf/bG95/25wd/9wcnn/ +c3V8/29xdf9ucHf/bG51/29xdf9zdXz/Z2px/2xvef9zdn//eXuB/3Byef9wcnn/eXuB/25xe/9sb3n/ +bnB3/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/2xvd/9vcXn/am13/3Bzff9qbXf/am13/2psc/9ucHf/ +am13/2xudf9sbnb/bW92/3Byef9ucXv/bG95/2ptd/93eX//dXd9/3Byef9ucHf/c3V8/3N1fP91d33/ +c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/ +bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/bG95/2xvef9wcnn/am13/2tueP9maXD/ +Z2p0/2dqcf9iZW7/cHJ5/2hqcf9xc3r/bnB5/2xudf9qbXf/cHN9/3Z4fP9wcnn/bnB3/2xudf93eX// +Zmlz/2ptd/9ucHf/am13/25xe/9ucXv/bW9z/25wd/9sb3n/am13/3V3ff9qbXf/bG95/2ptd/9sb3n/ +ZGdx/11gav9qbXf/am13/2xvef9zdXz/Z2p0/2xudf9wcnn/bnB3/2xudf9ucHf/cHN9/25wd/9sbnX/ +am13/25xe/9sb3n/d3l//3Bzff9ucXv/bnF7/3l7gf91eIH/cHN9/3l8hv9zdXz/d3qD/25xe/91d33/ +c3V8/3N1fP9vcXX/bG51/3N1fP9wcnn/b3F1/21vc/9tb3P/bG51/3d5f/9sb3n/amxz/2xudf9sbnX/ +c3V8/2xudf9ucHf/bnB3/25wd/93eX//bnB3/2xudf9wcnn/c3V8/25xe/9wc33/bG95/25wd/91eIH/ +d3qD/3Bzff93eoP/cHN9/3l7gf91eIH/dXd9/3l7gf95e4H/e32D/4GDiv9/gYf/foCG/36Ahv9wc33/ +cHN9/2ptd/9sbnX/bG95/3N1fP9wc33/bnF7/25xe/9qbXf/Z2p0/25xe/9wc33/am13/2Zpc/9nanT/ +Z2p0/2Rncf9maXP/ZGdx/2dqdP9qbXf/amxz/2xudf9kZ3H/am13/2xudf97fYP/cHN9/3N1fP9ucXv/ +dXiB/2xvef9ucHf/d3l//25wd/9zdn//d3l//3V4gf91d33/cHN9/3l7gf95e4H/dXiB/3l8hv9wcnn/ +eXuB/3V4gf9wc33/cHN9/3N2f/91eIH/bnF7/3d5f/93eX//bnF7/3N1fP9tb3P/Z2px/25wd/9sbnX/ +dXd9/25wd/9qbXf/c3V8/2xudf9wc33/c3V8/2ptd/9wcnn/bG51/2xvef9tb3P/b3F1/2xvef9sb3n/ +bG95/25xe/9ucHf/bnF7/3N2f/9wcnn/d3l//2xvef9wc33/eXyG/3t+h/9zdn//d3qD/36Ahv93eoP/ +d3qD/3V4gf9ucXv/bnF7/25xe/9vcXX/amxz/3R2ff9wcnr/c3V6/25wd/92eHz/c3Z//25xe/9ucXv/ +bG95/29ye/9tb3f/bnB3/25wdP9sb3n/c3V8/25wd/9qbXf/dXd9/3V4gf9wc33/bG95/3N2f/91eIH/ +d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/dXiB/3t+h/9zdn//dXiB/25xe/97fYP/ +c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/bnB3/3Bzff9zdn//c3V8/29xeP9ucXn/ +bW90/2xveP9qbXf/Z2px/3d5f/9tb3T/c3V8/3N2fv9ucHj/cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn// +c3Z//2Rncf9maXP/Z2p0/2Zobv9qbXf/bG95/2psc/9nanT/am13/2dqcf9ucHf/ZGdx/2Zobv9maG7/ +Z2p0/2Rncf9gY2z/Z2p0/2dqdP9qbXf/cHN9/2dqdP9sbnX/bnF7/2xvef9qbXf/bG95/25xe/9sbnX/ +bG51/25wd/9wcnn/b3F1/3l7gf93eoP/c3Z//3N1fP95e4H/eXuB/25xe/93eX//bnB3/25xe/9sb3n/ +dXd9/3Byef9zdXz/bG51/2xudf9wc33/bG95/2xudf9sbnX/bG51/2ptd/91eIH/bnF7/2dqdP9nanH/ +Z2px/2Zpc/9maG7/Zmhu/2dqcf9qbHP/c3V8/2Zpc/9kZ3H/am13/25xe/9qbXf/bG95/2dqdP9qbXf/ +cHN9/3Bzff9nanH/cHN9/2ptd/9zdn//cHJ5/29xdf9wcnn/cHJ5/3N1fP91d33/dXd9/3Bzff9ucXv/ +bW9z/21vc/9ucHf/bnF7/3N2f/93eX//d3l//3d6g/9zdn//c3Z//3Bzff93eoP/foCG/3l8hv91d33/ +dXiB/3N2f/9ucXv/cHJ5/2xvef9zdXz/bnB3/25wd/9sb3n/amxz/29xdf9wcnn/e36H/3V4gf9zdn// +cHN9/3N2f/9ucHf/bnB3/3Z4fP9tb3P/c3V8/3Z4fP9wc33/cHN9/25xe/93eX//d3l//3Bzff95fIb/ +bnF7/3d5f/91eIH/cHN9/3N1fP9wcnn/bnF7/2xvef92eHz/dXiB/25xe/9ucXv/bG95/2ptd/9qbXf/ +bG95/3V3ff9wcnn/b3F1/3Z4fP9ucHf/c3V8/3V3ff9ucHf/c3V8/2ptd/9sbnX/bW9z/21vc/9ucHf/ +bG95/2xudf9ucHf/bW9z/21vc/9ucXv/am13/3V3ff9maG7/am13/2xvef92eHz/bnB3/29xdf91d33/ +am13/3Bzff91d33/d3l//3t9g/93eX//d3l//3d5f/98fYL/dniA/3Z4gP9xc3r/d3l//3Bzff9ucXv/ +bnF7/3Bzff9tcHr/b3J8/3F0ff9zdXz/cHN9/3l7gf9wc33/bnF7/3V3ff91eIH/bnF7/25xe/91d33/ +bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/bnB3/25wd/93eX//cHJ5/3Byef9ucHf/ +eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/bG95/2xudf9ucXv/cHJ5/3J0e/9sbnb/ +bG52/2Vocv9maXP/Zmhu/2Rncf9zdn//Z2px/21wd/9rbXb/Zmhv/2Nmb/9qbXf/cHJ5/2xvef9ucXv/ +bG95/3V4gf9qbHP/bG95/25xe/9ucXv/dXd9/3N1fP9vcXX/cHJ5/3N1fP9sbnX/c3V8/2ptd/9qbXf/ +bG51/25wd/9nanT/Zmlz/2ptd/9sbnX/am13/3V3ff9qbXf/am13/3Bzff9qbXf/bG51/2ptd/9qbXf/ +amxz/2Zpc/9kZ3H/bG95/2psc/9zdXz/cHN9/2xvef9qbHP/bG95/3N1fP9qbXf/dnh8/2ptd/9ucHf/ +bG95/3N2f/9ucXv/dXd9/25wd/9wcnn/c3Z//3Bzff9wcnn/bnB3/3Byef9wc33/f4GH/3V4gf9zdn// +bnF7/3Bzff9zdn//cHJ5/3Byef9wc33/cHN9/3l7gf9sb3n/bG95/2xvef92eHz/bnB3/25wd/9ucHf/ +b3F1/3Z4fP9wcnn/Zmlz/25xe/9qbHP/bG95/2xvef9qbXf/cHJ5/25wd/9wc33/dnh8/3Z4fP9zdn// +c3Z//25wd/9sb3n/Z2p0/2ptd/9ucXv/c3V8/3N1fP9wcnn/bW9z/2psc/9maG7/bG51/3V3ff9sb3n/ +bG51/3Byef9ucHf/bG51/3Byef9sbnX/bnB3/25wd/9tb3P/cHJ5/2Rncf9sbnX/bG95/3V4gf9ucXv/ +bG95/25xe/92eHz/bnB3/25wd/92eHz/bG51/3N1fP92eHz/dXd9/3Bzff9ucXv/c3Z//3Z4fP9vcXX/ +d3l//25wd/9zdXz/cHJ5/3Byef9ucHf/cHJ5/3Bzff9ucXv/eXuB/3l8hv91eIH/cHN9/25xe/9qbXf/ +bnF7/25xe/97fYP/dXiB/3N1fP95e4H/bG95/25xe/9wc33/bnB3/3N2f/9sb3n/cHJ5/3Byef9zdXz/ +dXiB/3N2f/9zdXz/c3Z//3N1fP9zdXz/d3qD/3N2f/97fof/bnF7/3Bzff9wc33/eXuB/25wd/9ucXv/ +dXiB/3Bzff95e4H/e32D/3V4gf91eIH/cHN9/3Byef9qbXf/dnh8/3Fzev9zdXz/cHJ5/3N2f/9zdn// +bnF7/2xvef9wc33/bG51/2xudv9rbXb/aWxz/2dpb/9ucXv/am13/2Rncf9qbXf/am13/2Zpc/9nanH/ +am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/ +cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/bnF7/25wd/9vcXX/c3V8/3Byef9vcnz/ +b3F4/3N1ff9ucXv/dHeA/3N1fP9zdXz/foCG/25wd/91d33/c3V9/21vdP9sb3b/c3V8/3V3ff9wc33/ +bG95/3Byef91d33/Z2px/2xvef9ucXv/cHN9/3N2f/9zdn//bG95/25xe/9wc33/bnF7/3V4gf9ucXv/ +bnB3/2xudf9zdXz/bnB3/2psc/9ucHf/bG51/3N1fP92eHz/bnB3/2xvef91d33/bnB3/25wd/9wcnn/ +cHJ5/2xudf9sbnX/bnB3/3V3ff9tb3P/eHl9/2xvef9ucXv/amxz/2xvef9zdXz/bG51/3N1fP9sbnX/ +c3V8/2xudf9zdXz/cHJ5/25xe/9ucHf/bG95/3Bzff9wc33/b3F1/25wd/9vcXX/cHJ5/3t9g/9ucHf/ +c3V8/2xudf9ucHf/bnF7/25wd/9ucHf/cHJ5/3Bzff93eX//bnB3/2xvef9ucHf/c3V8/25wd/9sbnX/ +am13/2ptd/9wc33/bnF7/2Rncf9qbXf/Z2p0/2ptd/9qbXf/amxz/25wd/9sbnX/bG95/3V3ff9wc33/ +cHN9/25xe/9sbnX/amxz/25wd/9wc33/cHN9/3d5f/91eIH/d3qD/3N2f/92eHz/bnB3/36Ahv9/gYf/ +eXuB/3p7f/9+gIb/e36H/3d6g/97fof/d3l//3l7gf92eHz/c3Z//31+gf9zdXz/eHl9/3t9g/9/goz/ +e32D/3d6g/9zdn//eXuB/2xvef9vcXX/dnh8/2ptd/9ucXv/c3V8/3Bzff9qbXf/am13/25xe/9ucXv/ +Z2px/3Byef9maXP/bG95/2ptd/9sb3n/Zmlz/2Rncf9kZmz/Zmhu/25wd/9wcnn/Zmlz/2xudf9qbXf/ +Zmlz/2dqdP9sbnX/dXd9/3Byef9ucHf/eHl9/25wd/9sbnX/c3V8/2xudf91d33/bG51/29xdf9wcnn/ +bG95/3V3ff9ucXv/bG95/3Bzff9sb3n/b3F1/3Byef9ucHf/dnh8/2Rncf9ucHf/bG51/3d5f/9qbXf/ +am13/3N1fP9sbnX/dnh8/3Z4fP9tb3P/bG95/25xe/9ucHf/amxz/3R2fP9tb3f/c3V6/2xudf9wcnn/ +cHJ5/25xe/9qbXf/c3V8/29xeP9xdH7/cXR+/3F0ff9wc33/dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/ +bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/ +bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/b3F1/3Byef9sbnX/bG51/25xe/9sbnX/ +cHJ5/25wd/9xc3r/bnB0/29xeP9ucHf/bG51/3t9g/9ucHX/dHd+/3N1e/9vcXX/b3F1/3N1fP91d33/ +cHN9/25xe/9wc33/d3l//2Rncf9sbnX/cHJ5/2xvef9wc33/am13/2xudf9ucHf/bnF7/25xe/9wc33/ +am13/2xvef9nanT/bG95/2psc/9kZ3H/am13/2xudf9ucXv/c3V8/2dqdP9qbHP/bG95/2ptd/9sb3n/ +bG95/2ptd/9sbnX/am13/2ptd/9wc33/bG95/3V3ff9wc33/bnF7/2xudf9zdXz/dnh8/25wd/93eoP/ +bG95/3V3ff9ucXv/c3Z//3Byef91d33/cHJ5/25xe/91eIH/dXiB/25wd/9ucXv/cHJ5/3V4gf97fof/ +c3Z//3V4gf9zdn//bnF7/3N2f/9wc33/cHJ5/3Byef9ucXv/d3qD/3Byef9sb3n/cHN9/3V4gf9wc33/ +bnF7/25wd/9sbnX/dnh8/3Byef9sbnX/cHJ5/2xudf9qbXf/bG51/2psc/9sb3n/bW9z/3Byef92eHz/ +dXd9/3V3ff9wcnn/bG95/25xe/9ucHf/dXd9/3Bzff93eX//dnh8/3N2f/9wcnn/bG95/2Rncf9zdn// +dnh8/25xe/9qbXf/cHN9/25xe/9ucHf/cHN9/2dqdP9wcnn/bG95/25wd/91d33/Z2p0/2xvef9wc33/ +eXyG/3Z4fP9wc33/c3V8/3d5f/9sb3n/bnB3/3Z4fP9sb3n/c3Z//3d6g/91eIH/cHN9/3N2f/95e4H/ +d3l//25wd/95e4H/bnF7/3V3ff9zdn//c3Z//3Bzff9wcnn/cHN9/25xe/93eX//d3l//3N2f/9ucXv/ +bnF7/2dqdP9sb3n/bnB3/3Z4fP9ucHf/bG95/3V4gf9ucHf/b3F1/3Bzff9ucHf/eXuB/2ptd/9ucHf/ +bnB3/29xdf91d33/cHJ5/25wd/9zdXz/bnB3/29xdf9wcnn/b3F1/3Z4fP9kZ3H/am13/2xvef91eIH/ +am13/2xudf9ucXv/Zmlz/3Bzff9zdXz/c3V8/3V4gf91eIH/bnF7/2ptd/9vcnz/bG95/3N1fP9naXD/ +Z2p0/2ptd/9sb3n/am13/25xe/9tb3b/cXN7/3F0fP9vcnv/cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/ +bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/c3V8/2xudf95e4H/bnB3/3N1fP93eX// +dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/am13/2Zpc/9nanT/bG51/2psc/9sb3n/ +bG51/2xvef9qbXb/am13/2lsdf9rbnj/am13/2dqdP91eIH/a211/3N1ff9sb3n/am12/2xudf9wcnn/ +dXd9/3N1fP9zdXz/dXd9/3Byef9dYGr/YmVu/2Zpc/9nanT/am13/2Rncf9maG7/ZGdx/2Zpc/9maXP/ +Z2p0/2Zobv9nanT/ZGdx/2Rncf9iZW7/XF9o/2Zobv9maG7/am13/25wd/9kZ3H/Zmlz/25xe/9sb3n/ +bnF7/2ptd/9sb3n/bnF7/2ptd/9tb3P/dXd9/3Byef95e4H/cHN9/3Bzff9vcXX/dXd9/3V3ff9ucXv/ +dXiB/25wd/92eHz/bnB3/3Z4fP9wcnn/c3Z//25wd/9ucHf/cHJ5/3Byef9tb3P/bG51/21vc/9zdXz/ +d3l//2xvef9sb3n/bG95/2xudf9qbXf/am13/2ptd/9nanT/bG51/3V3ff9ucHf/bnB3/25wd/9zdn// +cHJ5/25wd/9sbnX/bnB3/3N1fP9zdXz/bG51/3Byef9sbnX/bG51/25xe/9wcnn/cHN9/3Bzff9zdn// +e36H/3l7gf91eIH/cHN9/3Byef9ucXv/bG95/3Bzff91d33/d3qD/3d5f/93eoP/cHN9/25xe/9qbHP/ +eXuB/36Ahv95fIb/dXd9/3d6g/91eIH/c3Z//3V4gf9wc33/d3qD/3Bzff9zdn//eXyG/2xvef9ucHf/ +cHJ5/3l7gf9zdXz/cHJ5/3Byef92eHz/bnB3/3Byef9wc33/bG95/3N2f/91eIH/c3V8/2xvef9wcnn/ +e32D/3l7gf9sb3n/dXiB/3Byef9zdn//cHN9/3N2f/9zdn//bnB3/3V4gf9wc33/d3l//3V4gf91eIH/ +c3V8/3Bzff9qbXf/b3F1/21vc/91d33/bG95/2xudf91d33/am13/2xudf9qbXf/bG51/3V3ff9qbXf/ +bW9z/2xudf9tb3P/dXd9/2ptd/9tb3P/cHJ5/2ptd/9sbnX/bG95/2xudf91d33/Zmhu/25wd/9sbnX/ +dXd9/2xudf9vcXX/dnh8/2xudf92eHz/cHN9/21vc/9wcnn/c3V8/3Byef9nanT/bnF7/29ye/9wc33/ +bG51/2xvef9qbXf/am13/2xvef9zdXz/bnB0/3J0ev9xdHv/bnB6/25xe/91eIH/cHN9/25wd/95fIb/ +d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/ +d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/dnh8/2xvef9qbXf/am13/2xudf9qbXf/ +c3V8/2xudf9wcnn/bW92/3ByeP9vcXX/bnB3/2dqcf9nanH/d3l//25xdf90dnz/bW94/2tueP9nanT/ +bnF7/3V3ff9sb3n/cHN9/25xe/92eHz/YmVu/29xdf9zdn//d3l//3V4gf9wc33/bG95/25xe/9zdn// +dXiB/3d6g/9ucXv/eXuB/3N2f/97fYP/cHN9/2xvef9zdn//cHJ5/3N2f/97fof/c3Z//3Bzff93eoP/ +c3Z//3d6g/9wc33/cHN9/3Bzff9sb3n/bnB3/3V4gf9zdn//foGK/3N2f/9wc33/bnB3/3V3ff9zdn// +bnB3/3V4gf9sbnX/dnh8/25wd/92eHz/cHN9/3Z4fP9ucHf/bG95/25xe/91d33/b3F1/3Byef9wc33/ +d3qD/36Biv91eIH/dXiB/25xe/9ucHf/cHN9/2xvef9ucXv/bG95/25wd/9wc33/bG95/2xvef9wcnn/ +dXd9/3Byef9tb3P/bW9z/2dqdP9wc33/bG95/2dqdP9sb3n/ZGdx/2Zpc/9sb3n/Zmlz/2dqcf9maXP/ +bG51/3V3ff9sb3n/c3V8/25wd/9ucHf/bG51/2tueP9vcnz/dXeA/3h7hf9ydX7/dXd9/25wd/9ucHf/ +Zmds/3Byef9wcnn/c3V8/2dqdP9wcnn/cHJ5/2xudf9qbXf/Zmlz/2psc/9maXP/aGty/25xe/9nanT/ +a210/2hrdf91eIH/bnF7/2xvef9qbXf/c3V8/2dqdP9qbXf/am13/2xudf9ydHv/dHZ8/2ptd/9sb3n/ +bW92/3N1fP9ydHv/am12/3d4ff9wcnn/dXiA/3J1fv91eIH/cnR8/2xudf9wcnn/cHJ5/3V3ff9wcnn/ +cHJ5/21vc/9ucHf/Z2px/25wd/9ucHf/dHZ8/29xeP9sb3b/dnh//29xdf9sb3n/bnF7/29xdf94eX3/ +amxz/29xdf9tb3P/cHJ2/3V3ff9wcnn/b3F4/3R2fv9ucXj/bW93/3Fze/9vcXX/dXd+/2dpb/9sbnX/ +bnB6/3d5f/9sb3b/a254/3V3e/9sbnT/dHZ6/3Bzff92eHz/e32D/36Ahv99foH/d3l//3l7gf91d3z/ +c3Z+/2tudf9sb3n/am13/2Zpc/9nanT/bnF6/2ptdv9zdX7/c3V9/3V4gP9wc33/e32D/3V4gf9ucXv/ +e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/am13/25wd/9wcnn/bG51/3l7gf9ucHf/ +c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/ +bG95/3Bzff9sbnX/cHJ5/25xeP9ucHn/bG52/2tudv9nanT/am12/3F0fv9pbHX/bXB6/2psdP9nanH/ +Y2Zv/2Zpc/9ucHf/am13/25xe/9ucXv/b3J7/2Zpcv9rbnf/bW94/29yfP9ucXr/b3J6/21vdv9vcXj/ +bG93/2lsdP9rbXb/bXB4/21wev9nanP/aGt0/2Fkbf9gY2z/amxz/2dqcf9oa3X/cnV8/2Zocf9qbXb/ +a212/2xudf9sbnf/bW92/3Byef9ucHn/b3F4/2psdf9ucXv/bnF6/29ye/9sb3n/bW94/25wdf9xc3r/ +bnF3/3F0e/9vcnv/bXB4/3J0fP9ucHf/cHJ5/21wev9ucXv/amx1/2ptc/9tcHj/b3F4/3J0ef9tb3b/ +bXB4/3Bze/91d33/dHZ+/3Bze/9wcnn/b3F4/3h6gv93eH3/dHZ7/3Z4f/92eYL/d3qB/3d5gv90d3// +eXyF/3t+h/99f4f/e32G/31/hf98foX/fYCI/3p9hv9+gIb/e32E/3V3fv95e4P/enyD/3d5f/95e4H/ +enyE/3l8g/97fYL/dnh//3V3fv92eYL/cnV9/3Fze/9sb3j/bnF5/3F0ff9zdXv/bXB5/3R2ff9rbXX/ +amx1/2Rmbf9pbHX/aWx2/25wev9fYmz/Zmlz/2dqdP9kZ3H/Zmlz/2BjbP9maG7/XmFr/2Vocv9qbXf/ +Y2Zw/2Zpc/9oa3T/b3F5/2dqdP9maXP/ZGdx/25wd/9kZ3H/Zmlz/2Zpc/9oa3T/cXN6/3N1fP9rbnj/ +bnF6/2xvef90dn3/cHN7/2ttdf90dn3/b3J6/3V3ff9vcnv/dHd//3Byef9ucHf/cnV+/25xe/93eX// +cHJ5/3N1fP9ucHf/cHJ5/2dqcf9ucHf/bnB3/3R2ev9sbnb/a211/3N1fP9tb3T/bG51/25wd/9ucHf/ +dXd9/2dqdP9sbnX/bW95/25weP9xdHz/bnF5/2xveP9xc3z/bnB3/2xudf9xdHz/bnB3/3F0ff9sbnf/ +bnB5/29xeP92eH7/b3F4/3J0eP9xc3r/bG93/3Fzev9vcXr/am13/3N1fP9sb3n/cHN9/2xudf9zdX3/ +dHZ9/3V4gP9ucXv/c3Z//3N2f/9sb3n/cHJ5/3R2fP9vcXr/dnh+/3FzfP9vcnz/bnF7/3N2f/9sb3n/ +bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX//amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/ +ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/bG95/2xudf9wc33/am13/2Zpc/9sb3n/ +am13/25wd/9zdn//bnB3/25xe/9ucHj/b3F5/2hrc/9qbHT/Zmlz/2lsdv9rbnf/Z2py/25weP9xdHz/ +bW90/2hrdf9sb3n/cHN9/2xvef9zdXz/c3V8/3Bzff9rbnf/b3J8/29yfP9ydX//dXd+/3R2ff9tb3b/ +cnR6/2xveP9tcHr/bnB4/3J1ff9vcnz/bG52/3Fzff9oa3X/ZGdx/21vc/9tb3P/c3Z//3Z4f/9vcnr/ +cXN7/3F0ff9wcnz/bnF6/3Bzff9ydX7/c3Z//3N2f/9sb3n/c3Z9/3J1fv9ydX//dnmC/3N2f/92eYH/ +dXiB/3J1fv98foX/dHeB/3F0ff9ydX7/cHN8/3R3f/91d33/cHN8/29xef9vcXX/cHJ5/3Fzd/91d33/ +bnB3/25xe/9ucXv/cnR6/3F0fP9xc3j/bG52/21wef90dn3/dXh+/21vd/90d3z/bnF4/29xef9wc3z/ +bG95/3Bzff9xdH7/cnV+/25xev9wc3z/cnV+/3N2f/9wc3z/d3qE/3BzfP9rbnf/bnF6/3Byef9vcXn/ +cnR7/29xef9ydHv/bW92/2hrcv9qbXf/am13/2xudf9tb3P/cnR8/3N1fP90dn7/c3V6/3N1fP91eH// +bXB4/3F0e/9rbXP/bXB6/2xvd/90dnz/aGt0/3J0e/9zdXz/bnB3/3N1fP9ucHf/bnB3/2ttdP9wc3n/ +c3V7/3ByeP9wcnj/cXN5/3V3gP9ydHv/cHJ5/3Byef95e4H/bG51/2tud/9rbXb/bG95/25xe/9xc3r/ +bG53/29xeP9zdXn/dHd+/3Fzef9sbnT/cnR9/3F0ff9ydHz/bW94/3V4f/9ucXn/bG94/21wev9wc33/ +d3l//3Byef9wcnn/bW9z/25wd/9maG7/bG51/21veP90dnv/b3F6/21wev94eoH/cnV//3Fzev9sb3n/ +cHJ5/3Z4fP9sbnX/bW92/25xe/9wc33/dnmA/3FzfP9wc3z/dnmD/3R2fv9vcnr/dniB/3Z4gf92eH3/ +cnV+/3R3gf9ydHz/fH6E/3d5gP94eoD/c3Z+/2xveP9ucXr/bnF4/2Zpc/9sb3n/am13/25xe/9kZ3H/ +cXN9/25xev91eID/bnF7/2xvef9zdXz/bW92/3Byef91d37/cXR9/3t9h/90d3//cXR9/3N2f/95e4H/ +c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/f4GH/3d5f/93eoP/c3Z//3d6g/91d33/ +foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn//am13/25xe/9ucXv/c3Z//3Bzff9qbXf/ +c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bXB3/3V3ff9tb3j/bnF6/25xe/90dn3/cXN7/29yfP9vcnz/ +cHN9/3Fzev9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9tcHn/aWx2/2xvef9rbXT/am13/21wef9vcnz/ +am13/29yfP9nanT/bG95/2tueP9vcnv/bnF5/2tudv9ydHv/bG51/2Zpc/9vcXX/bnB3/3Bzff91eIH/ +bG95/25xe/9ucXv/bG95/21vdv9ucHf/c3Z//3N2f/90d4D/bnF7/21wev9zdn//b3F4/3N2f/9ucXv/ +c3V8/3N2f/9zdXz/eXuF/3Bzff9zdn//c3Z//3N2fv9zdn//eHqA/25xe/9tcHr/cnR8/3Byef9wcnn/ +cHN8/3Byef9ucHf/bnB3/21vdv9wcnn/b3F1/2dqcf9qbXf/cHN9/3Bzff9qbXf/dHZ8/25wd/9ucHf/ +cHJ5/21vd/9zdXz/bG95/3V4gf9ucXv/cHN8/3N2f/9ucXv/bnF7/3h7hf95fIX/dnh8/3x9gP99f4b/ +foCG/3x9gf9+gIf/foCG/3d6g/93eoP/eXyG/3t9g/95e4H/dnh8/25wd/9ucXj/b3J7/3Fzev9ydHv/ +eXt//3R2ff90dnz/bG94/3Byef9wcnr/dHd//3J0ff98foT/fX+F/3V3ff97fYP/dnh8/3Z4fv91dnv/ +d3l+/3F0fP90d37/cHJ6/3V4f/90d4H/cHN7/3Byef9zdXz/dXiB/2ptd/9tb3b/bW92/29yev9xdH7/ +b3F4/2lsdv9tb3f/c3V7/3N2f/9tcHr/bW92/3F0fv9ydX3/c3Z8/2xudf9ydX7/a210/2hrdf9maXP/ +bXB5/3N1fP9wc33/am13/2xudf9sbnX/Z2px/2xudf9vcXX/cHJ4/2ttdv9ucXr/dHd+/29yd/9sbnb/ +b3F1/3Bzff93eX//bnB4/2xvef9ucXr/cXN6/3Fzev9vcXj/bnB3/3h6gP9ydHv/bG51/29xeP9ydHv/ +bW92/2tudf9ucHf/amxz/3N1fP9ydHv/bnF6/2dqdP9nanT/aGt1/2xvef9nanT/bG95/2ptd/9ucXv/ +ZGdx/29xe/9xc3n/cnR9/2xvef9ucHf/c3V8/2xvef9tcHn/dHZ+/25xeP9zdn//a254/2ptdv9nanT/ +bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/ +Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/ +Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/aWx1/2xudf9sb3n/cHN8/2tueP9ucHf/ +bXB5/3J0fP9ucXb/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/cHN9/2ptd/9qbXf/Z2p0/2ptd/9sb3n/ +bnF7/2Zpc/9qbXf/YmVu/2dqdP9laHL/aGt0/2lsdf9oanH/bW95/2dqdP9iZW7/bG51/2ptd/9rbnj/ +bnF4/2Zpc/9naW//ZGdx/2Rncf9kZ3H/Zmhu/2ptd/9kZ3H/ZGdx/2BjbP9maG7/Z2p0/2Zpc/9nanT/ +Z2p0/2dqdP9ucXv/bG51/3d6g/9qbXf/am13/2xudf9sbnX/cHJ5/3V3ff9ucHf/bnB3/25xe/9wcnn/ +cHN9/3d6g/9zdXz/cHN9/3Byef9wc33/c3Z//3N1fP9sb3n/cHJ5/3d6g/91eIH/bnB3/3d5f/9ucXv/ +bnB3/25xe/9ucXv/cHN9/3N2f/93eoP/dXiB/3d6g/9wc33/cHN9/2xvef94eX3/c3V8/25wd/91d33/ +c3V8/3N2f/91eIH/c3Z//3Bzff9qbXf/Z2p0/2xvef9ucXv/bG95/25wd/9qbXf/bG51/2tud/9rbXT/ +bG95/3V3ff9wc33/dHZ8/2tueP9sbnb/Z2p0/2ttdf9oanP/amxz/2ptd/9maG7/bG95/2dqdP9sbnX/ +amx0/21weP9rbXb/bnF6/2xvef9zdXz/b3J8/25xe/9zdn//eXuB/36Biv9wcnn/cHN9/3F0fP9ydX3/ +bnF6/2ptd/9laHL/bW92/3N1fP9xdH3/b3F4/3Bydv9tcHr/dXd9/3h5ff9vcXj/eHqB/25xev9ucHf/ +am11/3Fzev91d33/cHJ5/29xdf9ucHf/bnF7/2dqdP9rbnj/b3F4/3Bze/9rbnf/b3J8/3Z5gv9xc3v/ +a253/25wd/9ucHf/d3qD/29xd/9sb3n/bXB6/3J0e/9tcHr/am13/2ptd/95e4H/cHJ5/2psc/9ucXv/ +cHJ5/25wd/9sbnX/bnB3/2dqcf9zdXz/c3V8/25xe/9qbXf/am13/2Zpc/9ucXv/YmVu/2Zpc/9kZ3H/ +am13/11gaP9rbnj/bG93/21wd/9tcHr/am13/2xvef9sbnX/a253/3R2fP9tb3P/dXd+/2lsdv9pbHX/ +Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/bG51/2xvef9zdn//amxz/2xudf9qbHP/ +bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/bG95/25xe/9maXP/bG51/2xudf9ucXv/ +bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/29xd/9zdXz/cnR7/2tudv9sb3n/bnF7/25xe/9qbXf/ +c3V8/3J0e/9wc3v/b3F4/3N1fP9wc33/e32D/3t9g/9+gYr/eXuB/3N1fP9sbnX/bnB3/2xudf9wcnn/ +bnF7/3Bzff9qbXf/bG95/2Zpc/9sb3n/bnF7/3R2e/9ucXn/bG51/3Fzev9ucHf/Z2p0/25xe/9zdn// +b3J8/3Byev9rbXT/aGtx/2dqcf9kZ3H/ZGdx/2Zobv9nanT/am13/2Zpc/9kZ3H/Zmhu/2xvef9nanT/ +bG51/2Zpc/9qbXf/bnF7/2ptd/93eoP/bnF7/2xudf9ucHf/c3V8/3N1fP9zdXz/bnF7/3N2f/9zdn// +c3Z//3N1fP93eoP/bnF7/25xe/9sb3n/bnF7/2xvef9sb3n/Z2px/2xudf9zdXz/cHJ5/2xudf9zdXz/ +bG51/2ptd/9sb3n/bG51/2ptd/9qbXf/am13/2dqdP9sb3n/ZGdx/2dqcf9nanH/bnB3/2ptd/9maXP/ +bG95/2ptd/9qbXf/bnF7/2ptd/9qbXf/Z2p0/2Zpc/9qbXf/bG95/2xudf9sb3n/bnB3/25wd/9ucXv/ +bnB3/3V3ff91eIH/dXd9/3Z4fP9ucHf/bG92/2hrcv9xc3r/a252/25wdv9ydX7/cHJ5/3Bzff9sb3n/ +b3J5/2tudv9xc3r/bG51/3V3e/9ydHv/c3V8/3N1fP9ucHf/bW92/3V3ff91eIH/amxz/2xudf9tb3b/ +b3F2/25weP9tb3b/amxz/29xdf91d33/c3V8/2xvef9wcnn/bnF7/3l7gf95e4H/cHJ5/3d5f/9ucHf/ +bnB1/2lsdf9ucHr/bG95/25xe/9qbXf/am13/3N1fP9sbnX/bW93/2xvef9vcXj/ZWhy/2ptd/90dnz/ +bnB1/2psc/9sbnX/bG51/3d5f/9tb3T/bW92/21vdv9rbnf/a254/2xudf9sbnX/eXyG/3Byef9sbnX/ +bnB3/25wd/9sbnX/bG95/2xvef9nanH/dXd9/3Z4fP91d33/cHJ5/3Byef9ucHf/c3Z//2psc/9zdXz/ +cHJ5/3N1fP9maG7/cHJ5/3Byev9wcnr/b3J7/2xudf9wcnn/bG51/2tud/9ydHv/bG52/3d5f/9tcHj/ +cHN8/3N2fv91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/bG51/25wd/9zdXz/d3l//2ptd/9qbXf/ +bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/ +bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9tb3b/cHN9/3F0fP9xc3r/cnV+/3d6g/9zdn// +cHN9/3R3gP90dn7/b3J6/25wd/9ucXv/cHJ5/3l7gf93eX//e36H/3d5f/91d33/bG51/25wd/9sb3n/ +cHN9/3N1fP9zdXz/bnB3/3V3ff9sbnX/cHJ5/3Byef9wc3r/aWx2/2VocP9kZ3H/ZGdx/11gav9kZ3H/ +Zmlz/2dqc/9rbXb/ZWhy/2ZpcP9nanH/bG95/2ptd/9sbnX/c3V8/3Byef9zdXz/bG51/2psc/9qbXf/ +Z2px/2psc/9maXP/Z2p0/2xvef9sbnX/eXuB/3Byef9ucHf/bG51/3Byef9wcnn/bnB3/2xudf9ucHf/ +bG95/2xudf9nanH/bG95/2dqcf9nanT/ZGdx/2Zpc/9sbnX/bG51/2Rncf9nanT/bnF7/2xvef9qbHP/ +dXd9/2ptd/9nanH/bG95/2dqcf9ucXv/bG95/25xe/9wcnn/bnF7/2xvef9qbXf/bnF7/3V3ff91d33/ +b3F1/3Byef9wcnn/bnB3/25xe/9sbnX/am13/2psc/9qbHP/bnB3/25wd/9sbnX/bG51/3N1fP9sbnX/ +bG95/21vc/9zdXz/dXd9/25xe/9wc33/am13/2dqdP9dYGn/aWx1/2ptdf9sbnP/b3F4/2xudf9ucXv/ +bG51/29xeP9rbXX/bnF5/21wef9ydHv/dHZ8/3R2ff9wcnn/bW92/2xvef9wc33/d3qD/2xudf9rbXX/ +a253/3Fzev9vcnv/b3F4/2xvef9vcXX/c3V8/3Byef9ucHf/bW9z/2xudf91d33/c3V8/21vc/94eX3/ +b3F1/25wdf9qbHL/cnR7/3N1fP9zdn//bnF7/25wd/9zdn//bG95/3Byef9vcnr/cXN5/21vdv9ydHv/ +dniB/3J0e/9wc3z/cHN9/3N1fP99gIn/b3F4/21wef9ucHf/bnB3/25wd/9nanT/bG51/3l7gf9ucXv/ +bG51/25wd/9ucHf/Z2p0/2ptd/9qbXf/ZGdx/2xvef9ucXv/Zmlz/2Zpc/9nanT/Zmlz/2xvef9qbXf/ +c3Z//3V3ff91d33/amxz/3Fze/93eX7/dXiC/3N2f/9wc33/eXuB/3J0e/9vcnz/cXR+/2ttd/91eH7/ +bG92/3Byef90dnz/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/ +bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/ +bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/aGty/2hrdf9tb3b/Z2py/2lrcv9sb3n/ +Z2p0/2Zobv9rbnj/bG95/2dqdP9jZm//ZWhy/2Rncf9sb3n/Zmlz/3Bzff9zdXz/dXiB/3Byef93eoP/ +cHN9/3l8hv97fYP/e32D/3V3ff99foH/dXd9/3l8hv95fIb/e3yB/3l8g/9ydH3/b3J7/25wd/9qbXf/ +bnB3/3Fzev92eH7/eXp//3p8gv92eH7/dXd9/3d6g/93eoP/dXd9/3d6g/9zdn//d3qD/3N1fP9wcnn/ +c3Z//3N1fP9zdn//c3V8/3Bzff91eIH/bnB3/3d6g/9wc33/bnF7/3Byef9wc33/dXd9/2ptd/9sb3n/ +bW9z/25wd/9ucHf/bnB3/3h5ff9ucHf/dXd9/2xvef9ucHf/bW9z/25wd/9nanH/bG51/3Z4fP91d33/ +b3F1/3Z4fP9vcXX/bW9z/3N1fP9qbXf/cHN9/2xvef9wcnn/dXd9/3Byef9sb3n/amxz/25xe/9wc33/ +bnF7/2psc/9qbXf/Z2p0/2Zobv9maXP/ZGdx/2dqcf9kZ3H/Zmlz/2psc/9qbXf/amxz/2psc/9zdXz/ +bnB3/2xudf9sbnX/bnF7/3N1fP9zdXz/dXd9/3N1fP9sbnX/ZWdt/2psdv9rbnj/a252/29yfP9sb3n/ +cHN9/2xvef9wcnn/aWxz/3Byef9tcHn/dHZ8/3R2fP9zdXz/cXN5/21wef9vcnv/dXiB/3t+h/9zdXz/ +b3F4/21wef9xc3r/am12/2hrdf9maXP/am13/25xe/9sb3n/bG51/2ptd/9qbHP/cHN9/3Bzff9sbnX/ +c3V8/21vdv9wcXf/c3V8/3t9g/97fYP/fX6B/3l7gf92eHz/foCG/3h5ff91d37/dHZ8/3Fzd/9ucHj/ +cXN6/3d6gv9vcnv/bG95/3Bzff9wc33/en2G/3N1fP9xdH3/cXN5/25xeP9xc3n/bG51/29xdf91eIH/ +bnF7/2dqdP9sbnX/bnB3/2psc/9sb3n/bnF7/2Zpc/9sb3n/c3V8/2xvef9wcnn/dXd9/2xudf9zdXz/ +Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dHd//3N0e/9tcHT/bnB3/3N1fP9qbHP/bG95/3N1fv9rbXf/ +dXd9/21vdf9zdXz/dXd8/3N1fP9sb3n/Z2p0/3V3ff91d33/bnB3/2xvef9sbnX/bnB3/25wd/91d33/ +bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/ +bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/bnB3/21vdP9wcnr/cXN5/21vdf9ucHf/ +c3Z//3N1fP9sb3n/cnR7/3N1e/9rbXT/aWx2/2xudf9nanT/c3V8/2xvef91d33/dXd9/2Rncf9kZ3H/ +Zmlz/2Jlbv9nanT/Z2p0/2Zpc/9kZ3H/Zmlz/2Rncf9qbXf/bG95/25wev9xdHz/bW93/29xef9sbnX/ +am13/25wd/9vcXn/cnR7/3ByeP9ydHv/bnB3/2xvef9zdn//bG95/25wd/9wcnn/cHJ5/3Bzff9qbXf/ +bW9z/25wd/9tb3P/bnB3/25wd/9sbnX/cHJ5/21vc/91eIH/cHN9/3N2f/93eoP/d3qD/3d5f/9wc33/ +cHJ5/21vc/9ucHf/cHJ5/21vc/91d33/b3F1/3V3ff9sbnX/bnB3/29xdf9sbnX/Zmhu/2xudf91d33/ +c3V8/29xdf93eX//b3F1/2xudf9ucXv/Z2p0/3Bzff9sb3n/bG95/25xe/9ucXv/bG95/2psc/9wc33/ +cHN9/3N1fP9sbnX/cHJ5/3N1fP9sb3n/bnF7/25wd/9ucHf/bnB3/2xudf9vcXX/bnB3/2xvef9sbnX/ +d3qD/3Bzff9zdn//c3Z//3d6g/95e4H/dXiB/3l7gf91eIH/am13/2ptd/9xc3r/bnB2/2xudf9ucHf/ +bW9z/3V3ff9ucHf/cHJ5/2lsc/9ucXv/b3F6/3V3ff90dnz/b3J7/3Byev9vcXj/b3F4/3V3ff93eX// +bG51/2hrdf9rbnj/bXB4/2Zpc/9rbXT/ZGdx/2dqdP9wcnn/am13/2dqcf9nanT/ZGdx/2Zpc/9maXP/ +Zmhu/2dqdP9jZm//aGpx/2hqcv9wcnr/cHJ5/3Byef9ucHf/bnB3/2xvef9ucHf/bW91/25xe/9qbXb/ +Zmlz/2lrdP9wcnr/bXB0/2dqcf9sbnX/bW9z/3Z5gv9tb3b/a254/21vd/9tb3b/c3V8/2xudf9vcXX/ +d3qD/3V3ff9ucHf/cHJ5/3Bzff9qbXf/bnF7/25wd/9qbHP/c3V8/3Z4fP9ucHf/cHN9/3Z4fP9ucHf/ +bnB3/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/21wev9xdHr/bnB4/25wd/91d33/bXB3/29xef9ydX7/ +a213/3h6fv9vcXf/cnV9/3h6gP93eoP/c3Z//25xe/9+gIb/foGK/3l7gf97fYP/d3l//3t9g/93eoP/ +foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/e32D/3N1fP9wcnn/cHJ5/25xe/9zdn// +c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/dXiB/3Bzff9wcnn/bXB6/3Fze/9ucXr/ +bnB3/3N2f/9ucXv/bG95/3BzfP9xdH3/bnF5/2xvef9ucHf/cHJ5/3h5ff9wcnn/foCG/3t9g/9qbXf/ +am13/3Bzff9qbHP/bG95/2xvef9nanT/amxz/2xvef9maXP/bnF7/3Bzff9wc3z/cXR+/25xeP9vcnz/ +c3V8/2ptd/9qbXf/b3F5/3J0ev9vcXf/am13/2dpc/9nanT/cHN9/2xudf9sbnX/cHN9/25xe/9wc33/ +Zmlz/2xudf9qbXf/amxz/2dqcf9kZ3H/Zmhu/2dqcf9qbHP/cHJ5/2ptd/9qbHP/am13/2Zpc/9sb3n/ +amxz/2ptd/9nanT/amxz/25xe/9qbXf/c3V8/2psc/9sb3n/Zmlz/2psc/9qbHP/amxz/2Jlbv9maXP/ +bnF7/2xvef9sbnX/dXd9/2psc/9sbnX/cHJ5/2xudf91d33/bnB3/2xvef92eHz/bnB3/25wd/9tb3P/ +eHl9/3N1fP9zdXz/cHJ5/3N1fP9zdXz/bnF7/25xe/9sb3n/bW9z/2xudf9ucHf/bG95/25wd/9wcnn/ +b3F1/3Byef9qbXf/bG95/2ptd/9wc33/cHN9/2xvef9wc33/bG95/2Jlbv9hZG3/bG51/21wef9qbXf/ +bnB6/3Byef91eIH/bnB3/2xvef9naXP/cHJ5/29xef91d37/dHZ9/25xev9vcXr/bnF4/3Byef91d33/ +d3l//25wd/9vcXj/cHJ5/3F0e/9ucHf/b3F4/25wd/9wcnn/dXd9/25wd/9qbHP/bnF7/3Byef9sb3n/ +bnF7/2xudf9wc33/b3F1/21vdv9sb3b/dXd9/25wd/9zdXz/bnB3/2xudf9sbnX/bW9z/2hrdP9wc3v/ +bXB6/2ptdP9qbXT/c3V8/21vdf9iZW7/ZGdx/2dqcf9ydX7/a211/2tueP9rbnj/bXB3/3N1fP9sbnX/ +bnB3/3t9g/91d33/bnB3/25xe/9zdn//am13/3Bzff9sb3n/bG95/3Bzff91d33/cHJ5/3N1fP91d33/ +bG51/3Byef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9xdH7/dnh+/3F0fv9wcnn/dXd9/2xudf9vcXf/ +dHZ8/21veP91d37/bW92/21wev90dnz/c3V8/21vc/9ucHf/dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/ +bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/ +cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/eXyG/36Biv91eIH/dHeA/3Fze/9wc3v/ +a252/2hrcv9maXP/YmVu/2Zobv9nanP/bG94/2xudv9pbHb/cHJ5/2ptd/91d33/bG95/36Ahv97fYP/ +am13/2xudf91d33/amxz/3V3ff9wc33/bG95/2xudf9zdn//Z2p0/3N2f/91d33/cnR7/3Byef9ucHf/ +cHJ5/2xvef9maXP/amxz/29xef9vcXj/cHJ3/25wev9qbXf/Zmlz/3Bzff9sbnX/am13/3Bzff9ucXv/ +cHN9/2ptd/9sbnX/bG51/2psc/9qbHP/Zmlz/2dqcf9nanH/bG51/3V3ff9wc33/bG51/3N1fP9sb3n/ +c3V8/2xudf9wcnn/am13/21vc/9zdn//cHN9/3d5f/9vcXX/dXd9/2psc/9ucXv/bnF7/25xe/9nanH/ +bG95/3V4gf97fYP/c3V8/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3N2f/9wc33/eXuB/3Bzff9ucXv/ +bG95/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/25wd/9qbXf/am13/21vc/9qbXf/am13/2xvef9sbnX/ +cHJ5/25wd/9wcnn/cHJ5/25wd/9wc33/dXd9/3l7gf91d33/dXd9/3Bzff9sb3n/am13/3Bydv9tb3b/ +am13/2ptd/9sbnX/dXd9/25wd/9wcnn/Z2px/3Byef9ucHn/dHd//3d4ff9vcXj/cXN5/2tud/9sb3n/ +c3V8/3V3ff9sbnX/aGt1/21wev9tb3j/Zmlz/2hrdf9maXP/cHN9/3Bzff9qbXf/Z2p0/2xvef9ucXv/ +bG51/25xe/9qbHP/bG95/2xudf9ucXr/aWx0/3J0e/9sbnX/cHN9/25xe/9nanT/bG95/2xudf9sbnX/ +c3V9/3R2fv9tcHr/cHJ3/3R2fP9wcnn/am13/2dqdP9ucHf/dnmC/25xe/9ucXv/bnF7/25xe/91d33/ +bnB3/29xdf93eX//cHN9/2ptd/9qbXf/cHN9/2Rncf9sbnX/Z2p0/2Rncf9nanT/bG95/2Zpc/9maXP/ +bG95/2dqcf9qbXf/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/a212/3N1e/9zdXz/b3F1/3d5f/9tcHr/ +cXR8/3Z4gP9ucXr/dnh//25wdf9ucHf/dXd9/2xvef9qbXf/bG51/3V3ff93eX//bG95/3Byef9ucHf/ +bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX//am13/3Bzff9wc33/bW9z/2ptd/9nanT/ +am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/Z2px/2ptd/9zdXz/bG95/2xvef9sbnb/ +cHJ6/21wev9sb3n/bnF7/2xvef9ucXv/dHeA/3Z4f/9xdH3/am13/3Bzff9zdXz/e32D/3V4gf+Fh43/ +f4KM/25xe/9sb3n/d3l//2xvef93eX//cHN9/3Bzff9zdXz/dXiB/2xvef94eoH/dnh+/25xev9ucXr/ +aGp0/2dqcf9nanT/XWBq/2Rncf9qbXb/bG93/21vd/9ucXj/bG51/2psc/9zdXz/Z2p0/2xvef9sb3n/ +bnB3/25wd/9qbXf/am13/2psc/9sb3n/bG51/2ptd/9sbnX/am13/2xudf93eX//eHl9/3Byef91eIH/ +c3Z//3d5f/9ucHf/c3Z//25wd/9ucHf/c3Z//25wd/93eX//bnB3/3Z4fP9nanH/bnB3/29xdf9ucHf/ +Z2px/2psc/91d33/c3V8/2psc/91d33/amxz/2psc/9sb3n/ZGdx/2dqdP9maXP/Zmlz/25wd/9qbXf/ +Z2p0/2ptd/91d33/bnF7/25xe/9tb3P/dXd9/3Bzff9ucXv/cHJ5/25xe/9ucHf/bnB3/3Byef9zdn// +c3Z//3V4gf9wcnn/eXuB/3l8hv91eIH/e32D/3t+h/97fof/eXuB/3l7gf93eoP/bnF7/2ptd/9xc3r/ +cnR7/2xvd/9tb3f/bnB3/3N1fP9sb3n/cHN9/2dqdP9wc3v/cXN8/3V3ff92eHz/bnB6/3Bye/9tcHj/ +bnB3/3V3ff94eX3/b3F1/21vdv9tcHr/bnF5/2tueP9qbXf/Z2p0/3N1fP9sb3n/amxz/2dqdP9sb3n/ +bG95/2psc/9nanT/Z2px/2xvef9maG7/Zmly/2Rncf9ucXr/bG51/3Bzff9ucXv/Z2p0/25xe/9sbnX/ +Z2p0/2hrdf9oa3X/ZWhv/2Rmbv9maXP/a254/2dqdP9iZW7/Z2px/29xeP9maXP/aWx0/2ptd/9rbnj/ +cHN9/2ptd/9qbXf/d3qD/3N1fP9sbnX/bnB3/3Byef9sb3n/bnF7/3Byef9ucHf/bG95/3V3ff9sb3n/ +bnB3/3Z4fP9vcXX/dXd9/2BjbP9sb3n/cHN9/2xvef9tb3P/b3F4/21wev9xdH3/bnF7/2xvef93eX// +bG95/2xud/90dnz/bG94/3Bzff9rbnb/bG95/3V3fP9ucHf/bnB3/2psc/92eHz/dXd9/25xe/9ucXv/ +bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/d3qD/2xvef9wc33/cHN9/25wd/9ucXv/ +bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/ +bG51/29xev9rbnj/cnV+/3Bzff9ucXv/bG95/3J1fv91dnv/cHN6/2hrdf9oa3X/Z2p0/3V3ff9ucHf/ +fX6B/3d5f/9wcnn/bnF7/3Z4fP9ucHf/dnh8/2xvef9ucXv/Z2p0/2ptd/9kZ3H/bnF7/3Byef9pa3T/ +bG95/2dqc/9sbnX/am13/2dqcf9qbHP/bnB3/21weP9tb3f/cnR7/25wd/9nanT/cHN9/2Zpc/9qbHP/ +amxz/2ptd/9ucXv/Z2p0/2xvef9qbXf/bG95/2xudf9nanT/Z2p0/2xudf9maXP/bnB3/2xvef9maG7/ +am13/2xvef9ucXv/Zmlz/2dqdP9maG7/Zmhu/2ptd/9nanH/c3V8/2psc/9zdXz/ZGdx/2ptd/9qbHP/ +amxz/2Jlbv9maXP/bnF7/3N1fP9nanH/cHN9/2psc/9sbnX/bG95/2psc/9sb3n/am13/2xvef92eHz/ +cHJ5/3Byef9ucHf/dXd9/25wd/9wcnn/bG51/3N1fP9wcnn/cHJ5/29xdf9vcXX/bG51/25wd/9sb3n/ +bnF7/2xvef9ucHf/bG51/25wd/9zdXz/bG51/3Bzff93eX//d3l//3V4gf9wc33/c3Z//2dqdP9nanT/ +b3J7/21wef9sb3f/bW91/25wd/9zdXz/bG95/3N1fP9qbHP/cHJ5/3Bzff91d37/eHl+/3V3ff9ydHn/ +bnF6/3Byef91eIH/eXuB/3N1fP9xc3r/cnV+/25wef9ucHf/bG51/2xudf9wc33/dXd9/25wd/9sbnX/ +c3V8/3V3ff9tb3P/bnB3/21vc/9ucXv/am13/21vdf9qbHH/cXN6/21vc/92eHz/c3V8/29xdf9ucXv/ +am13/2xvef9xdHv/cHN8/21vdv9tb3j/b3J8/3R3gP9qbXf/am13/25wd/91d3v/cXN3/3Byd/9tb3j/ +bG95/3h5ff9ucHf/bnB3/3l7gf9zdXz/amxz/2ptd/9wc33/Z2p0/2ptd/9qbXf/Zmlz/2xudf9wc33/ +bG51/2psc/9wc33/amxz/25xe/9sb3n/dXiB/3t9g/91eIH/dXd9/3h6gP91eH//dnh+/25xev9qbXf/ +cHN9/2hrc/9sb3f/dnh9/21wev90doD/cnV9/3V4gf96fIL/d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/ +bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/ +bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/ +dHZ9/21vdv9xc3r/cXN7/3Byef9wc33/cHN9/29ye/9ydX7/cnR7/21vdv9sbnX/cHJ5/2dqcf94eX3/ +bG95/3t9g/91d33/cHJ5/25wd/92eH7/bnB3/3h5ff9wc33/cnV+/21wd/9rbnj/bG95/29yfP91d33/ +bnB4/21wef9rbXf/bG51/2ptd/9kZ3H/Z2p0/2xveP9tcHj/a253/3Fze/9sbnX/Z2px/3R2fP9qbHP/ +bG51/25wd/9wc33/cHN9/2xudf9wc33/bG51/2ptd/9sbnX/Z2px/2xudf9qbXf/bnB3/3Z4fP9wc33/ +bG95/3V3ff9zdn//c3Z//25wd/9ucXv/bnB3/25wd/9zdn//bG95/3V4gf9ucHf/dXd9/2ptd/9zdn// +bnB3/3Byef9nanT/bnB3/3V4gf93eoP/bG95/3V3ff9tb3P/bG51/3Byef9tb3P/bnF7/25xe/9ucHf/ +dnh8/3N1fP9qbXf/amxz/3Bzff9ucXv/c3V8/2xudf9zdXz/bG95/2xudf9qbHP/am13/2ptd/9qbXf/ +am13/25wd/9ucHf/c3V8/2xvef9sbnX/dXd9/25xe/91eIH/eXyG/3l8hv93eoP/c3Z//3V4gf9ucXv/ +bnF7/3V4gf9wcnr/cHJ3/3BzeP9vcXX/dXd9/25wd/9wcnn/bG51/25weP91d3//dnmA/3h7hf9zdoD/ +dnh+/29yfP9ucXv/c3Z//3d5f/9wcnn/bnB0/3Fze/9ucHj/bnB4/29xdf9vcXX/c3V8/3N1fP9ucHf/ +amxz/3N2f/91d33/bG51/3Byef9sb3n/bG95/2xudf9sbnX/ZGdv/3Fzff9qbHP/dXd9/25xe/9nanT/ +bG95/2ptd/9qbXf/bXB4/21wef9sb3j/am1z/25wd/9wc33/ZGdx/2dqcf9ucHf/dnd8/29xef9ucHn/ +bG94/25wd/94eX3/bnB3/3Bzff97fof/dXd9/2psc/9sbnX/dXd9/2xudf9sbnX/bnB3/2xudf9sbnX/ +dnh8/25wd/9ucHf/dXd9/25wd/9zdXz/YGNs/2xudf9sb3n/amxz/2psc/9rbnj/bG51/3Fzef9wcnn/ +bG95/3l7gf9ucHf/bnB5/3d5gf9vcXj/c3Z//2xvdP9pbHX/am13/2dqdP9maG7/Zmlz/3Byef9zdXz/ +bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/bG51/21vc/91d33/am13/2xvef9zdXz/ +bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/ +bnB3/3V3ff9tb3b/b3F5/25weP9vcXj/bnB3/3ByeP9ucHb/cHJ5/29yfP9vcnz/bG54/29ye/9qbXf/ +dXiB/3N2f/9/gYf/eXyG/3h6gP93eX//fH6E/3J0e/95fIX/c3Z//3R3f/9wcnj/bXB5/25wd/9zdn// +dHeB/3F0fP9xdH7/bnB3/3Byef9zdXz/bG95/2xvef90dn//cnV//29yfP91d33/cHJ5/21vdv91d33/ +bnB3/3Byef9vcXv/dnh9/3V3ff9ucXr/dnl//3N1fP9ydX//bG95/2xveP9vcXj/cXR9/29ye/94eoH/ +d3qD/3N2f/96fIL/enyC/3t9g/91d3z/dnh//3Z4fv9zdn//enyC/3V3e/9+gIb/enyC/31+gv9zdXz/ +eXuB/3h5ff91d33/cHJ5/3d4ff96fIP/gIKJ/3V4gf94eoH/d3mC/3V3ff93eYL/cHJ5/3Z5gv91eID/ +cHN9/3p8gv91eID/cHN9/3N1fP93eoP/c3Z+/3Bzff9sb3n/c3Z//3Bzff9vcXX/bG51/25wd/9qbXf/ +Z2pz/2xudf9wcnn/bnB3/3N1fP9sbnX/bG51/3V3ff9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9wc33/ +bG95/2xudf9wcnn/b3F2/2xudf9rbnj/bG51/25xe/9qbXf/bG51/2Jlbv9pa3X/b3J6/3J1ev91d37/ +cnV+/3Byef9sb3n/bG92/3Bzff91d33/Z2p0/2lsdf9tcHr/bG93/21wef9ucHf/b3F1/3V3ff91d33/ +cHN9/2xvef91eIH/dXd9/25wd/9wcnn/cHJ5/3Byef9ucHf/cHJ5/2lrc/92eYD/bG95/3l7gf91d33/ +bnB3/25xe/9sb3n/bG95/3J0e/9xc3j/bnF5/2lsdP9sbnX/bnF7/2Jlbv9maXP/bG51/3J0e/9sbnf/ +a252/25wd/9ucHf/dnh8/2xudf9ucHf/dXiB/3Bzff9nanT/bnB3/3Z4fP9sbnX/bG51/25wd/9qbXf/ +am13/3Bzff9qbXf/am13/3V4gf9tb3P/cHJ5/2dqdP9sb3n/c3V8/3Byef9ucHf/dHeA/3Bzff91d3// +dHeB/2xvef95fIb/cHJ5/25xev93eYD/bW92/3R3f/9vcXj/bW92/3N1fP9wcnn/bnB3/2xvef91d33/ +dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/ +cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/ +cHN9/2dqdP9sb3n/aGt1/25weP9tcHf/cHN7/21vdv9ydXz/cHN7/3ByeP9ydHz/am12/2dqdP9rbXT/ +ZGdx/2xvef9qbXf/c3Z//3N1fP9xdHz/b3F4/3Z4fv9ucHf/dnh9/29xeP9wcnv/bG51/2lsdP9sbnT/ +bG93/3Byev9tb3b/cnR7/2xudf9ucHf/bG51/2dqcf9maG//bXB3/25wd/9tb3X/cnR6/29xev9rbnb/ +cnR5/3J0ev9wcnv/cHN8/3N1fP92eID/cHN9/3J1fP9ucHj/cXR9/29xeP9vcXj/bnB4/29yef9ucHj/ +d3h9/3BzfP9xc3r/dXd+/3J1fv91eID/bnF6/3N2gP9ucHf/b3F5/3J0e/9sbnb/dHZ7/2xvef9zdXz/ +am12/3F0ff9sb3j/bG94/2Zobf9rbXT/cXN6/3l7gf9vcXb/cnV+/3Bze/9tcHn/cXN9/25wd/9wcnz/ +cHJ5/2xvdv91d37/cHJ8/21vc/9ucHf/dHZ8/3J0e/9xdH3/bnB3/3J1fv9ydX3/bnB3/25wd/9ucHj/ +bW93/2ttdP9sbnX/bG95/2xudf9pbHb/Zmlz/25xe/95e4H/c3V8/3V4gf97fof/e36H/3d5f/9wc33/ +c3Z//25wd/9qbXf/dXd9/29xeP9sb3f/b3F3/25wd/91d33/bnF7/25xe/9sb3n/b3J7/3J1f/90d37/ +dnh//3N2f/9ydH3/b3J7/25wd/9wc33/dXiB/25wd/9tcHr/dXd+/25xef9sb3n/bnB3/25wd/93eX// +dnh8/2xvef9qbXf/dXd9/3N1fP9ucHf/c3Z//3Bzff9wc33/cnV+/3N2f/9pbHT/dniA/25wd/91d33/ +bnF7/21vc/9tb3P/bG51/2tueP9xdH7/cXN8/3Bze/9rbnj/a254/3N1fP9nanH/bG51/21vc/9zdnz/ +b3J6/29xdv9ucHT/bnB3/3d5f/9vcXX/cHJ5/3V4gf9wc33/bG95/2xvef91d33/bG95/3Byef9wcnn/ +bnB3/29xdf91d33/b3F1/25wd/97fYP/bnB3/3Byef9ucXv/c3Z//3d6g/9zdn//cHN9/3N2f/9wcnv/ +cXR8/25xe/9kZ3H/dXiB/2psc/9laHL/c3V8/2hrdP90dn3/bnF5/2xvef9vcnz/bnF7/25wd/9sbnX/ +bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/ +dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/ +cHJ5/3V3ff9sb3n/bW95/2hrdf9ucHf/bG52/21vd/9qbHP/bnB2/3J0e/9oanL/bG53/2hrcv9iZW7/ +a210/2BjbP9nanT/am13/3V3ff9zdXz/cHN9/21vd/9wc33/a254/3h6gP9rbnf/bW95/2hrdf9iZW// +aWxz/2lsdP9tb3X/aWx2/25xe/9qbXf/bG51/2Zpc/9iZW7/YmVu/2ptd/9ucHf/bW94/29xeP9tcHr/ +bnF7/25xef91d33/cnR7/3F0e/9wc3z/dHeB/3R3gP9ydHr/bnB2/3R2fP91d33/cXN7/3Fze/9zdn7/ +b3J6/3J1fP9ydX3/dHZ9/3V3ff9xdH7/cnV//21weP9ydHz/bW92/29xeP9sb3f/bG51/25xef9sb3f/ +cHN7/2ptdv9ucHn/a252/29xeP9kZ3H/aGt1/25xe/91eH//bG51/21wev9tb3b/bG53/29yfP9pbHb/ +aWx2/2xud/9rbXX/cXR7/21wev9oa3P/a212/29yfP9vcXr/c3aA/25xe/9xdH7/bnB5/2xvdv9wcnr/ +bnB4/2xvef9ucHj/bnB1/3Byef9vcXX/bnB4/2lsdf9wcnn/c3V8/2ptd/9sb3n/dXd9/3V3ff92eHz/ +dXd9/25xe/9ucHf/bG95/3V4gf9zdXz/bW94/25xe/9ucHX/c3V8/25wd/9sb3n/Zmlz/21wdP9zdn3/ +c3V7/3Z3fP9zdXz/cXN5/25wdv9sb3n/cHJ5/3V3ff9ucHf/b3F4/3R2e/9tb3b/a253/2hqdP9sbnX/ +bnF7/2ptd/9nanH/ZGdx/25xe/9maXP/YmVu/2Rncf9nanH/Zmlz/2ptd/9oanT/Y2Zu/29ye/9nanT/ +cHJ5/2dqdP9kZ3H/Zmhu/2Zobv9jZm//bG95/25xe/9sb3n/amxz/2ttdP9sb3n/ZGdx/2Zpc/9sbnX/ +dHZ8/3Fzd/9tb3f/b3F2/29xdf95e4H/b3F1/3N1fP94eX3/c3V8/25wd/9ucHf/dXd9/2xudf9ucXv/ +bnF7/25wd/9sb3n/c3V8/2xvef9wcnn/foCG/2xvef9wc3z/Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/ +bnB3/3J0ev9ydHv/Z2px/3l7gf9ucHf/Z2p0/3l7gf9wcnn/eXuB/3J0ef9ydHv/cHJ5/25wd/9vcXX/ +bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/ +dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/dXiB/3d6g/9zdn//dXiB/25xe/9wc33/ +dXiB/3V4gf9zdn//bG95/3N1fP9ucHj/cnV9/25xev9vcnv/a253/3Byef93eX//aGpu/3BzfP9tb3b/ +aGt1/25wd/9nanT/cHN9/3N2f/91eIH/d3l//3R2fP9vcXj/d3mC/21wev93eoP/cnV+/25xe/9ydHv/ +aGt0/3J1fv9wc33/dXiB/3V3ff97fYP/dnh8/3V4gf91d33/cHN9/2xvef9zdn//c3Z//3R3gf90dn// +eHqA/3p8gP92eH3/foCH/3x9gf90d4D/c3Z//3Z4gP93eoT/dHZ8/25wd/93eX//eHqA/3V4gP9zdn7/ +dXeA/25wev9ucXr/cXR9/3R2ff9vcXr/bnF6/3J1ff9tb3b/cXN6/25wdv9ydHr/bnB3/21vdv9vcXf/ +aWx1/3R2fP9vcnz/dHd+/3J0ff91eID/bXB6/3Fzev90d4D/eHuE/29yfP9vcnv/cHN9/3R3fv93eoL/ +d3qC/3V4gP94eoD/d3l+/3l7gf93eX//cnV+/3N2gP93eYD/d3l+/3+Bh/93eYH/eHqA/3h6gv94e4L/ +dXh//3l8g/91eH//dnh//3Fze/9ydHr/b3J6/3F0fv9wcnr/d3qD/3t9g/91eIH/d3qD/3t+h/97fof/ +d3qD/3d6g/9wc33/bnF7/2xvef91d33/bG95/21wef9tcHr/bG51/3J1fP9ucHf/c3V8/25wd/9tb3f/ +bXB6/29yev9xdH3/a253/21weP9tb3b/bG95/3N1fP93eX//bnB3/29xeP9ydHv/bW92/2tud/9qbXf/ +bG95/3d5f/9wc33/am13/2Zpc/91d33/cHN9/2ptd/9ucXv/bG95/3Byef9ydHz/c3V7/2hqcv92eH// +am13/3V3ff9zdXz/bnB3/25wd/9ucXv/bW92/3Fze/9ydX3/cnR8/2xudv9vcXj/cHJ5/2dqcf9qbHP/ +bG51/3N2f/90dnz/dHeA/3R2ff9ucXv/d3l//25wd/9zdXz/d3l//2xudf9qbXf/Z2p0/25xe/9nanT/ +am13/2dqdP9qbHP/Z2p0/25xe/9qbXf/am13/3l7gf9tb3P/cHJ5/2BjbP9sbnX/cHJ5/2xudf9ucHf/ +cHJ5/21wev9ydHv/dHeA/2Zpc/93eX//bnB3/2ptd/92eHz/bnB3/3p7gP9ydHr/cnV//25xe/9vcXX/ +b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/ +bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/ +amxz/2ptd/9sb3n/bnF7/25wd/90dn3/bG92/25xe/9sb3n/aGt0/2Rncf9qbHT/c3V8/2RmbP9wc33/ +cHN6/21wev9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/94eX3/bG95/3N2f/9wcnn/eXyG/3N2f/9wcnn/ +bnB3/2ptd/9ucXv/c3Z//3Bzff9zdXz/d3qD/3Byef9ucXv/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/ +bnF7/3N2f/96fIL/c3Z//32Aif95e4H/c3Z+/3Bzff9zdn//fYCJ/3d5f/92eH7/en2G/3p9hv92eYL/ +dXiB/3V4gf90d4H/c3Z//3V4gf96fIL/b3F4/3Bzff9ydX7/cHJ5/3Bzff9wcnn/dHeA/25weP9ucHf/ +bW92/2hrcf9xc3n/cHJ5/3Z4fP9ucXr/cHN8/2ptdv9qbXf/c3V8/3d5f/9qbXf/aGt1/2xudf9sb3n/ +bG95/21wev9tb3b/a254/2hqcf9maXP/a210/2Vocf9nanT/a210/2hrcv9ucXv/a210/2Nmb/9naXP/ +aGt0/2dqdP9maXL/Z2lw/2hrdf9kZ3D/ZGdw/2Zpc/9iZW//ZWhw/25xe/9wc33/bnB3/25wd/91d33/ +d3l//3N2f/91d33/bnF7/2xvef9sb3n/dXd9/25wd/9ucHj/cHJ7/2xveP90dnz/bnF7/2dqdP9zdXz/ +bG51/29xeP9ydH3/dHeA/3N1fv9maXP/a211/2xudv9qbXf/am13/3Bzff9vcnv/bXB6/2lsdP9sbnX/ +bW92/2ptd/91d33/bnF7/2dqdP9nanT/cHN9/3N1fP9qbHP/bG95/2ptd/9qbXf/bnF6/25xe/9laHL/ +bnF6/2Nmb/9qbXf/bG51/2Rncf9maXP/bG51/2xvef9qbXb/bG51/2ptdP9oa3P/c3V8/3Bzff91d33/ +ZGdx/2psc/9tb3X/cXN5/29xef9sb3n/bG51/3d5f/9sbnX/cHN9/3d5f/9qbXf/Z2p0/2Zpc/9zdXz/ +bW9z/29xdf9ucHf/amxz/21vc/9zdXz/cHJ5/3N1fP9+gIb/bnB3/3Bzff9kZ3H/bnB3/3N2f/9sb3n/ +bnB3/29xeP9wcnn/cXN7/2xudf92eHz/cHJ5/2xudf9ucHf/eHl9/21vc/91d37/b3F4/29xeP9ucHf/ +bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/c3Z//3+Bh/9zdn//d3qD/31+gf9zdn// +c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX//c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/ +am13/25wd/9wcnn/bG51/25xe/9qbXf/bXB6/2ttdP9oa3P/aGty/2ttdf9nanT/c3V8/2dqdP9rbnj/ +cXN7/2ttdP9kZ2//bW91/2dqdP9sb3n/cHJ5/3d5f/93eX//bG51/2xudf9wcnn/dXd9/2xudf9sbnX/ +c3V8/25wd/9wcnn/bnF7/3Bzff9ucXv/bnB3/2ptd/9ucHf/bnB3/3Bzff9ucXv/eXyG/3V3ff93eX// +c3Z//3N2f/9wcnn/dXiB/3l7gf91eIH/cHJ5/3t9g/97fYP/foCG/3t9g/9ucXv/c3Z//3l7gf9wcnn/ +eXuB/3Bzff9wc33/bG95/2Zpc/91d33/cHN9/2psc/9ucHf/bG95/3N1fP9vcXX/cHJ5/25wd/9zdXz/ +am13/3V3ff9wcnn/bG95/2ptd/9kZ3H/bG51/25wd/9tb3P/cHJ5/25xe/9zdn//cHJ5/25xe/9zdXz/ +c3V8/3d6g/9wc33/d3qD/3t9g/93eoP/d3qD/3t+h/97fYP/eHuF/31/hf96fIP/c3Z//3J1f/95e4H/ +am13/3N1fP9wcnn/bG95/3R2fP9ydHv/dXd7/2dqcf9ucHX/bnB3/21vd/9ucXv/dnh8/2xudf9ucHf/ +dXd9/3d5f/9zdXz/bnF7/2ptd/9qbXf/bG51/3N1fP9qbXf/bG95/2xvef9qbXf/dHZ8/2xvef9maXP/ +dXd9/2ptd/9sb3j/cnR7/3F0ff9xdHz/Z2lx/21vdv9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9sbnP/ +am13/21vdv9wc33/dXd9/25xe/9qbXf/b3F1/3Z4fP9zdn//b3F1/3Byef9wc33/bnF7/3Bzff90dnz/ +bG93/3R3gP9nanT/bnF7/25xe/9sb3n/bG95/3V4gf92eYL/c3V9/3N2fv9vcnr/b3F4/3d5f/91d33/ +d3qD/2xvef9ucHf/b3F4/3J0ev9ucXv/cHN8/2xvef93eoP/bW9z/3Byef92eHz/am13/2dqdP9qbXf/ +cHN9/2xudf9ucHf/bG95/2xudf9ucHf/dXd9/3Byef91d33/fn+D/25wd/9ydHz/Z2p0/25wd/9wc33/ +bnB3/2xvef9sb3j/cXN5/21wev9nanT/bnF7/2psc/9nanT/bG51/3h5ff9vcXX/eXuB/3Byef9vcXn/ +bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/ +bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/c3V8/25xe/9zdXz/bG51/2xvef9sbnX/ +cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/bW92/2ptd/9sbnX/Z2p0/3N1fP9nanH/ +b3F5/3F0ff9sb3f/Zmhv/29xeP9sbnX/cHJ5/3V3ff97fYP/eHl9/21vc/9sb3n/c3Z//3N2f/9sb3n/ +bnB3/25xe/9ucHf/bnB3/3N1fP91d33/bnF7/25wd/9ucHf/bG95/25wd/9ucXv/bnB3/3l7gf9zdXz/ +eHl9/3N1fP9wc33/bG95/3N1fP9wcnn/cHJ5/2xudf9zdXz/dXd9/3V3ff9zdXz/Z2px/29xdf91d33/ +b3F1/3V3ff9ucHf/c3V8/21vc/9maG7/cHN9/2xudf9nanT/Z2p0/2xudf9sb3n/am13/2dqdP9nanH/ +am13/2Zobv9ucHf/Zmlz/2Zobv9gY2z/XWBq/2dqcf9nanT/YmVu/2Zpc/9kZ3H/ZGdx/2Jlbv9iZW7/ +ZGdx/2Jlbv9maXP/Z2px/2dqdP9wcnn/Z2p0/2Rncf9qbXf/Z2p0/2Zpc/9maXP/Z2p0/2Zobv9qbHP/ +am13/2Jlbv9maG7/ZGdx/2dqcf9sb3n/bG95/2xvef9nanT/bG95/2psc/9sbnX/bnF7/3N1fP9qbHP/ +am13/25xe/91d33/bG95/2ptd/9nanH/amxz/2Rncf9qbXf/amxz/2tueP9rbnj/am11/3V3e/9wcnn/ +amxz/3d5f/9sb3n/bnF6/3F0fv9xdH3/dHZ8/2dqcv9tb3b/cHJ5/2xudf9zdXz/dXd9/21wev9tcHr/ +aWx2/2xvef9tb3n/dXiB/3d6g/9wcnn/bnB3/21vc/91d33/dXd9/2psc/9sb3n/bG95/3Byef9qbXf/ +bnF6/2xudf9ydH3/am13/25wd/9ucHf/bG95/3Byef9zdn//dHeA/3J0fP9tcHj/bG53/3J0e/94eoH/ +c3Z//3t+h/9sb3n/bG95/25xe/90dn3/bnB4/25wd/9tb3P/dXiB/2dqdP9nanT/cHN9/2xudf9nanT/ +ZGdx/2xvef9qbHP/ZGdx/2dqcf9kZ3H/Z2p0/2xvef9sb3n/bG95/3t9g/9qbXf/c3V8/2Zpc/9sb3n/ +cHN9/25wd/9wc33/bnB3/3ByeP9zdXr/bG95/3N2f/9wcnn/bG95/2xvef91d37/b3F2/3l7f/9xc3n/ +bnB3/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/ +bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/ +b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/94eoD/cXN7/29xef9vcnf/bG95/2xveP9ydX7/ +Z2p0/25xev9xdH3/a254/2RncP9rbnj/Z2p0/2xvef9wc33/c3Z//3N1fP9sb3n/cHJ5/3Fzff9ydX7/ +b3J8/3Byef9ydX7/cHJ5/3Bzff90d4D/cHN9/3V3ff9vcXX/bG51/2xudf9tb3P/bnB3/2xudf95e4H/ +cHN9/3R2fP91d3v/c3V8/2ptd/9sb3n/bG51/2xudf9qbXf/cnV8/3N1fP9wcnn/am13/2Fkbf9qbHP/ +c3V8/2xudf9ydXz/am13/25xe/9sbnX/ZWhx/3N1fP9sbnX/bG51/2xudf9sbnX/bG95/2ptd/9ucHf/ +b3F1/3N1fP9tb3P/dnh8/25xe/9sbnX/amxz/2Jlbv9qbHP/bG95/2Zpc/9qbXf/am13/2xudf9qbXf/ +am13/2xudf9qbXf/cHN9/2xvef9ucXv/d3l//3V3ff92eHz/dnh8/3Byef9sb3n/bnF7/3Bzff9sbnX/ +bW9z/3V3ff9qbHP/bnB3/2xudf9tb3P/c3V8/3Bzff9sb3n/Z2p0/2xvef9qbHP/bW9z/3N1fP92eHz/ +cHJ5/25wd/91d33/c3V8/25xe/9wcnn/am13/25xe/9qbXf/cHN9/2xvef9tcHr/bXB4/21veP9zdoD/ +bnF7/2xudf93eX//bG51/2tueP9wc3v/cnR7/3R2ev9naXD/bnB2/3N1fP9ucHf/dXd9/3V3ff9vcXj/ +b3F5/2xuc/9ucHf/cHJ2/3N2f/93eX//cHN9/2xvef9sb3n/dXiB/3h5ff9ucHf/c3V8/3N1fP9wcnn/ +bG95/3J1ff9sb3f/cnN5/2Vocv9qbHP/Z2p0/2BjbP9kZ3H/Zmlz/2dqc/9rbnT/aWtz/2Zob/9pa3L/ +cHN9/2xvef91eIH/Z2lz/2xudf9sb3f/cXR7/2ptd/9sbnX/am13/3V4gf9kZ3H/am13/3Byef9maG7/ +ZGdx/11gav9nanT/Zmhu/2Rncf9maG7/Zmhu/2Rncf9qbXf/ZGdx/2dqdP91eIH/YmVu/2dpc/9nanH/ +cHN9/3V4gf9wcnn/bnF7/25xev9wcnn/c3V8/2ptd/9ucXv/am13/2dqdP9sbnP/dnd8/2tueP90d37/ +cXN5/25xev9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/ +cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/ +c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/c3V8/2dqcP9sb3n/bW92/2xveP9sb3n/ +dXd+/2ptd/9wc33/cnV+/2xvef9maHL/bXB6/2dqdP9ucXv/bnF7/3V3ff94eX3/cHJ5/21vdv90dnz/ +bnF7/3F0fv9ydX7/cnV+/29xeP9vcnv/c3Z9/3N2gP91eIH/cHN9/3N1fP9zdn//d3qD/3d5f/91d33/ +gIKJ/3p8gv92eYP/dXiB/3d6g/9zdX3/eHqB/3h7hP91d37/dHZ9/3p7gP97fYH/enyC/3R3f/9ucXr/ +cnV+/3p8gv9ydHv/cnV9/3Byef90d4D/cnV9/29ye/94eoD/bnB3/29xeP9ucHf/bW92/21wev9rbnj/ +bnB6/2tueP9xdHv/b3F4/3d4ff9vcXj/bnB3/2xuc/9iZW//bW92/2xvef9rbnj/dHeA/3J1fv9xdH7/ +bW93/2xveP9ucHf/b3F4/3J1fv9vcnz/c3Z//3h7hf96fIL/eXyG/31+gv96fIL/enyC/3p8gv94e4X/ +d3qC/3V3ff97fYP/d3l//3Z4f/92eHz/d3l//31+gv99foL/enyD/3d5f/96fIP/dXd9/3N2f/91d33/ +eHl9/3Byef9wcnn/dXd9/3N1fP9wcnn/bnB3/2psc/9ucXv/bG51/2xvef9sb3n/aGt1/2lsdP9qbXX/ +cnV+/25wd/9nanT/d3l//2xveP9rbnj/cnV9/2xvef9ucHf/X2Jr/2ttc/9tcHr/bnB3/3N2f/92eH// +bnF7/21wev9qbHX/bXB3/2ttdP9ucXv/d3l//2ptd/9maXP/bG51/3V4gf93eX//bG51/3N1fP9wcnn/ +c3V8/2xvef9zdXz/am13/3J1ff9nanT/bG51/25xe/9kZmz/bG51/2xudf9ucHf/b3F1/21wd/9qbXX/ +a253/3V3ff9ucXv/d3l//25wdP9tcHf/c3V9/3R3f/9wc33/b3F1/2xudf97fYP/bG51/25wd/92eHz/ +b3F1/25wd/9qbHP/eHl9/3Byef9tb3P/b3F1/29xdf9sbnX/dXd9/3N1fP92eHz/f4GH/2dqdP9sb3n/ +am13/3Bzff95e4H/dXd9/3V4gf9vcnz/c3V+/3V3ff9tcHr/bnF7/21wef9sb3j/cHJ5/3d6gP9xc3v/ +dHd+/3R3gP9zdn//dnmC/3Bzff9zdn//c3V8/3N2f/91eIH/bnB3/3d5f/9sb3n/bnB3/25wd/93eX// +bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/ +cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/bnF7/3V4gP9ucHf/cHN8/29xeP9ucXn/ +a254/3V3ff9pbHb/cXR8/29yfP9wc3z/bG95/2xvef9qbXf/cHN9/3Byef91eIH/d3l//3Fze/9ucHj/ +dHd+/2ptd/92eYD/cHJ6/3V3f/9tcHr/cXR8/3V3fv92eYD/dXiB/29xeP9tcHn/bnF7/3Bzff9wc33/ +cHN9/3l8hf9ydX7/dHV7/3J0fP9ydX//cXN6/3Fzev9ydX3/b3J6/3Fzef9ydHz/dXiB/3Z4f/9vcnr/ +bW94/25xef92eHz/b3F2/3Bze/9wc3v/c3Z//25xe/9vcXr/d3l//21vdv9xc3r/b3J6/21weP9vcXv/ +bW94/25wef9rbnj/b3J8/21wef90dn3/cXN7/3Bze/9tb3X/ZWdu/2Zpc/9pa3P/Zmly/2tueP9rbnb/ +bG92/2Vocf9sbnX/aWxz/2dpb/9oanT/a210/21veP90dn3/b3J5/3R2fP9zdXr/bnF4/29ye/9ucXv/ +b3J8/3BzfP9xc3r/cXR9/3Bye/9ydHv/cXN9/3J1ff93eX//e32D/3R3f/9xdH3/c3Z//3F0ff9vcnz/ +dXd9/3d5f/9ucHf/cHJ5/3Byef9wcnn/cHJ5/3V3ff9sbnX/cHJ5/21vc/9ucXv/bnF7/2xvef9sb3j/ +bXB4/3V3fv9sb3n/Z2p0/3d5f/9sbnX/a210/29xd/9tcHr/cnR6/2Rmbv9sbnT/am13/2dqdP9ucXv/ +c3V8/2xudP9tcHr/a252/2xvef9ucXv/cHN9/3d5f/9ucXv/bG95/25xe/97fof/d3qD/25wd/91d33/ +cHJ5/3Byef9ucHf/cnR7/21vdv9ydXz/aGty/2xudf9ucXv/ZGZs/25wd/9ucHf/bW93/25weP9ucHf/ +bnB2/2xveP9zdXz/c3V8/3V4gf9sbnX/bG51/21wev9zdXz/am13/2xudf9qbXf/dXiB/2psc/9sbnX/ +dXd9/2xudf9tb3P/amxz/3Z4fP9vcXX/bnB3/2xvef9ucHf/am13/3d5f/91d33/c3V8/4GDiv9qbXf/ +cHN9/2dqcf9vcXX/c3V8/2ptd/9ucHf/bW92/3Bye/9ydX7/cnR7/3V4gf91d4D/cHJ7/3d5gP96fYf/ +eHqB/3R2fv9ydX3/bXB5/2xvef9sbnX/bG51/2ptd/9ucHf/c3V8/2xvef91d33/bnB3/3Byef9sb3n/ +dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/ +d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/c3V8/25wd/91d33/bG95/3F0ff9ydH3/ +dHd//3Bzff95e4H/c3Z+/3d6gP9wc3z/b3F5/2xudf9sbnX/Zmlz/2xvef9sb3n/dXd9/3N1fP9rbnj/ +bG52/3Z4f/9qbXb/dnh9/3Byd/9zdn3/bW93/25weP9ucXv/dHd//3V3f/90dnz/d3l//3d5f/9+gIb/ +d3l//3R3gP96fYb/dXd+/25xe/9wc33/c3V9/29yfP9xc3r/dHZ+/29yef9zdX3/c3V9/3N2f/9xdH7/ +bG95/3Bzev9ucHX/dHZ+/21vdv9qbXf/bG92/3Bze/9sb3f/bG94/3R2fP9tb3P/cnR5/3F0e/9ucHf/ +bG95/2xvef9ucHn/bnB3/3Bye/9vcXr/c3V9/3V3f/9xdHz/b3F4/2ttc/9rbXT/bnF5/2ptdf9sbnX/ +bG50/3F0fP9qbHP/bW92/2xvef9tb3b/cHJ3/2lsdv9wc3v/dXh//2tudv90dnv/cXN6/25xef9wcnn/ +dHZ+/25xe/9tcHr/bnB5/3F0ff9vcnv/bW94/3Byev9sb3j/a252/3J1fP9vcXn/a210/21wev9vcnz/ +bnB3/3N2f/93eoP/cHN9/3N2f/9zdn//c3Z//3V4gf91eIH/cHJ5/3d6g/9wc33/d3qD/3l8hv93eoP/ +dnmB/3Bzff90d4D/dXiB/3N2f/97fYP/d3l//21wev94e4P/dXd//3V4gv9vcnz/a251/3N1fP9vcXX/ +Z2px/2psc/97fYP/cXR7/2xudf9vcXj/bnF7/3N1fP93eX//bnF7/2dqdP9ucXv/d3qD/3d6g/9ucXv/ +cHN9/3V3ff9wc33/bnF7/3Z4fv9kZ3H/dniA/2xvef9qbHP/dXd9/2Zpc/9nanH/ZGdx/2Rncf9pbHL/ +a213/21wev9laHL/ZGdx/2Rncf9qbXf/Z2lv/2tud/9qbXb/c3V8/25wdf9sb3n/bnF7/3V4gf9qbXf/ +bnF7/3l7gf9sb3n/bG95/2dqdP91d33/bG95/2xvef9ucXv/bnF7/2dqdP93eX//c3Z//3N2f/+Bg4r/ +bG51/3Byef9maXP/bnB3/3Byef9sbnX/bnB3/25weP9ucHf/amxz/25wd/9vcXX/d3h9/3N1ev9tcHj/ +dXd7/3V3ff9wc3z/c3V9/3Byev9sb3n/bG51/2ptd/9maXP/am13/2xvef9ucXv/cHJ5/2dqcf9nanT/ +Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/ +Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/Zmhu/2Zpc/9kZ3H/cHJ5/2dqdP9qbXX/ +bnB4/29yfP9sbnX/c3V8/25xe/9xdHv/bXB5/3J1ff9pbHX/bW90/2ptd/9sb3n/am13/3Bzff9ucXv/ +cnR8/3J0e/94e4X/bG95/3l7gf9ucHf/dXiB/3Byef9ucXv/b3J8/3N1e/9wc33/cHJ6/2ttdP9zdXz/ +c3V8/21vc/9vcnz/bnF6/25xef9ucHf/cnR7/3R2fP9ydHv/bW92/3R3ff9vcXj/c3Z//25xe/9vcnz/ +c3V+/3F0ff94eoD/cHJ3/3R2e/9vcXX/a21z/25wd/90dnv/b3F5/3Fzev9xc3r/b3F1/3V3ff9ydX7/ +bnB1/2xudv9ucHf/bXB1/2tueP9tb3f/bG51/21wev9vcnz/b3J7/29ye/9qbXf/aWxz/29xef9nanH/ +bG92/2xveP91eIH/a21z/2lsdv9vcXX/b3F4/25wd/9tb3b/dHZ7/3N2ff9pbHb/d3mA/3J0e/91d33/ +cXR+/3R3gP9zdn7/dHeA/3R3gP97fof/d3qD/3d5gP91eH//cHN8/21wev9wc3z/dnmC/3N2f/9wc3v/ +eXuC/3V4gf9zdXz/dXd9/25wd/91d33/cHJ5/3Byef9wcnn/cHJ5/21vc/9wc33/am13/2xvef9qbXf/ +bnF7/2xueP9rbnX/bG52/29xef9ucHf/dXd9/3N1fP9rbnj/cXN6/3Byef9zdXr/bW5z/2hqcf9wc3z/ +cHJ5/2dqdP9nanT/d3qD/25xe/9sb3n/bnF6/25xe/9zdn//d3qD/25xe/9qbXf/bnF7/3l7gf95e4H/ +bW9z/3N1fP9zdXz/bG51/2xudf9zdXz/Zmhu/3R2fv9ydHv/am13/3d6g/9nanT/Z2p0/2dqdP9nanH/ +a254/21wef90dn3/bG51/2ptd/9qbXf/bnF7/2xvef9ydHv/am13/3Fze/9sbnb/am13/2xudf91d33/ +amxz/21vc/91d33/bnB3/25wd/9sbnX/cHN9/2xvef9ucHf/bG95/25wd/9qbHP/dnh8/3Bzff9wc33/ +f4KM/25wd/9wc33/am13/2xvef91d33/bG51/3N1fP9tb3n/bG51/2dqcf9nanT/bW92/3V3ff9zdX3/ +cXR8/3d6hP91eIH/cXR7/3J1ff9zdXz/am13/3Byef9wcnn/Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/ +bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/ +bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/cHJ5/29xdf9wc33/bnF7/3l8hv9ucXv/ +cHN9/3R3gP94eoD/cHN9/3l7gf9zdn//dHeA/3Bzff9xc3r/am13/25wd/9vcXX/cHJ5/25wd/9zdXz/ +c3V8/2ptd/9qbXf/d3l//25wd/94eX3/bnB3/3N1fP9qbXf/b3J8/29yfP90d37/d3mC/3Z4gf9zdn// +e32D/3l8hv9zdXz/dXd9/25xev9sb3j/aGt0/25xe/91d33/c3V8/2xudf9zdXz/bnB3/3V3ff9sbnX/ +bG95/25xe/9vcXj/dXd9/21vdv9zdXz/a213/2dqdP9rbnj/cXR9/3Byef9wcnn/dXd9/21vdv91d3z/ +c3Z//25wd/9sb3n/cHJ5/2xudv9sbnb/bnF4/25wd/9zdXz/c3V8/3Fzev9wc33/bG51/2dqdP9sb3n/ +Y2Zu/2ptd/9wcnn/enyC/2xvef9sbnX/bW92/2tud/9ucHf/aGt1/3V3ff92eHz/aGt1/3Z4f/9wcnn/ +bnB3/25xeP9zdn//bnB3/3Bzff9ucXv/eXuC/3Z5gv9ydHv/dnh//25xe/9sb3n/bG95/3Bzff9vcnv/ +Zmly/3J1fv9vcnv/dXd9/3d5f/9wcnn/c3V8/3Byef9zdXz/cHJ5/3V3ff9tb3P/dXd9/25wd/9wcnn/ +c3V8/25xe/9qbXf/a210/2tueP9qbXf/bG51/3d5f/9ucXv/bG51/29ye/9ucHf/cXR8/2ttdP9laG// +bnF6/2ptd/9maXP/Zmlz/3R3gf9tcHn/bG93/2xvdv9wcnn/c3V8/3d6g/9sbnX/amxz/25wd/93eX// +d3l//25wd/91d33/dXd9/25wd/9ucXv/dnh//2hrdP91d4D/a253/2psc/9zdXz/Zmlz/2Rncf9maXP/ +Z2px/21wev9sb3n/c3V8/25xe/9wcnn/cHJ5/3Z4fP9wcnn/dHZ6/2xudf92eH7/bW91/29xdf9ucHf/ +eHl9/2psc/9sbnX/dXd9/2xudf9qbXf/amxz/25xe/9sbnX/b3F1/29xdf9vcXX/Z2px/3V3ff91d33/ +c3V8/3+Bh/9nanT/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/bG95/21veP9qbHP/ZWhy/2xudf9xdH3/ +cXN5/21vdv90dnz/c3V8/21wef9wcnr/bnB6/21wd/9ucHf/cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn// +bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/am13/2xudf9ucHf/bG51/3V3ff99foH/ +Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/am13/25xe/9ucHf/c3V8/3V3ff95e4H/ +bnB3/3Fze/9wc3v/dHeA/3N2f/93eX//c3Z//3Z5gv9zdn7/cHJ4/2hrdP9qbXf/bG51/3N1fP9ucHf/ +c3V8/3V3ff9qbXf/Z2p0/3d5f/9sbnX/eHl9/25wd/91d33/b3F1/3Byef9wcnr/cXR8/3R3f/91eIH/ +cHJ5/3N2f/9zdn//bnB3/3Z4f/9ucXr/bnB4/21vc/9wcnn/dXd9/3h5ff9ucHf/dXd9/25wd/92eHz/ +bG51/3Byef9zdXz/am13/3V3ff9sbnX/dnh8/29xdf9qbHP/bG95/3Bzff9ucXv/am13/3Bzff9qbXf/ +dXd9/3V3ff9ucHf/bnB3/3Byef9vcXX/bnB3/25xe/9ucHf/c3Z//3V4gf9zdn//c3Z//2xvef9qbXf/ +c3V8/2dqcf9sbnX/bnB3/3d5f/9ucHf/am13/3Byef9wcnn/bnB3/2ptd/91eIH/eXuB/2dqdP93eX// +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/bG95/3N1fP9ucXv/aGty/3Z4fP9qbHP/Z2px/2xudf9ucXv/ +cHN9/2Zpc/9zdn//b3F1/2xvef9sb3n/Zmlz/2ptd/9nanT/bnF7/2ptd/9qbXf/bG51/3Bzff9sbnX/ +bG95/2xvef9ucXv/b3F4/21vdv9sbnf/bG51/2dqcf9wcnn/am13/2hrcv9ucHr/bW91/3BzfP9oanP/ +X2Jq/2hrdf9nanH/XWBq/2Rncf93eX//bnF6/29xev9sb3j/c3Z+/3d6g/95fIb/cHJ5/2xvef9wc33/ +eXyG/3t+h/9wc33/e32D/3t9g/91d33/cHN9/3p8gv9pbHb/e32E/3N2f/9sb3n/d3l//25wd/9vcXX/ +bG51/2xudf9vcXj/cHJ6/3R2fv9ucXv/bG95/3N1fP91d33/bnB3/3J0e/9tcHn/dniB/25xe/9ucHf/ +bnB3/3Z4fP9sbnX/cHJ5/3h5ff9sbnX/bG95/2ptd/9ucXv/am13/2xudf9qbXf/bG51/2Zpc/9wc33/ +cHN9/3N1fP9/gYf/am13/25xe/9sbnX/bnB3/3Bzff9nanT/bnF7/3Byef9wc3v/a253/2dqc/9wcnn/ +cXR9/25xeP9pbHX/Z2pz/2dqdP9laHD/bnB2/2ptd/9rbXX/bG95/2xvef9nanT/am13/3N1fP9wc33/ +d3qD/2xudf9wc33/bG51/3V3ff9nanT/amxz/2xudf9qbHP/bG95/2ptd/9qbXf/bG95/2xudf91d33/ +e32D/2Jlbv9ucXv/bG95/3N2f/9qbHP/c3V8/3Bzff9nanH/amxz/2Jlbv9nanT/Z2px/2ptd/9sb3n/ +dHeA/2lsdP9sb3j/b3F3/3Byef9wcnn/cHJ5/3Byef91d3v/b3J7/3Z4fv9ucHf/bnB3/2xvef9wc33/ +bG95/25xe/95e4H/cHJ5/2ptd/91eIH/bnB3/3d5f/9ucHf/dXd9/2xvef9ucXv/cnR7/3Bze/9xdHv/ +cHN9/2tueP9zdXz/dXd9/29xdf92eH//bXB6/21vd/9rbXf/bnB3/3V3ff94eX3/bG95/3l7gf9zdXz/ +e32D/3Bzff91eIH/eXuB/3N2f/97fof/c3Z//3t9g/9wc33/c3Z//3d5f/95fIb/d3qD/3N2f/93eoP/ +c3Z//3t9g/91eIH/c3V8/2xvef9sb3n/bG95/25wd/9wcnn/bW9z/3Byef91d33/c3Z//3V3ff9ucHf/ +bG51/25xe/9iZW7/bG51/2xvef9zdn//Zmlz/2Rncf9nanH/Z2p0/2dqdP9kZ3H/bnF7/3N1fP9nanT/ +d3l//2ptd/9nanT/bG51/3Byef9sbnX/am13/2xvef9ucXv/am13/2Zpc/9wc33/Z2p0/2BjbP9nanT/ +cHN9/2xvef9iZGr/bnF7/2xudf91d33/dnh8/3N1fP9wcnn/bG95/25xe/9ucXv/am13/2psc/9ucXv/ +am13/2psc/9qbXf/cHN9/29yfP9rbXb/bG93/2tueP9sbnX/dXd9/3Byef9tb3P/cXN6/21wef9ydHz/ +a251/2dqcv9ydHv/cHJ5/2psc/9sbnX/dnh//3Byef9sbnX/aWx1/2xvef9ucXv/dXd9/2Zpc/9gY2z/ +Z2px/3Byef9wcnn/Z2px/25xe/9sb3n/amxz/2Zobv9rbnj/Y2Zu/3Z5gv9vcnv/bG95/3d5f/9ucHf/ +bnB3/2xudf9tb3P/bnB3/3Fzev90dnz/c3Z+/25xe/9wc33/d3qD/3J0fP9ydHr/a254/3N2f/9tb3b/ +am13/2xudf92eHz/bnB3/3Byef9zdXz/bW9z/21vc/9tb3P/bnB3/3Byef9ucHf/bnB3/29xdf9nanH/ +c3V8/3N2f/9zdn//f4GH/2xudf9xc3r/ZGdx/2ptd/9sb3n/Z2px/3Byef9vcXb/b3F4/2xudf9nanT/ +cHN9/3V4gP90dnz/dHZ9/3N1fP91d33/bnB3/3N0eP9ydHr/cHJ5/3Byef9wcnn/amxz/2xudf92eHz/ +cHJ5/3V4gf9sbnX/bnF7/2xudf9wcnn/Z2px/2Rncf9maXP/Z2px/2dqcf9maG7/YmVu/2Zobv9maG7/ +am13/3N2f/9ZXGX/Zmlz/2dqdP9wcnn/ZGdx/2xvef9sb3n/amxz/2ptd/9maXP/am13/2xudf9sb3n/ +cHN9/3R2ff9oa3X/bG95/3F0ff9vcnz/dXd9/3N1fP9wcnn/dHZ8/3N2f/91d37/b3J5/2xudv9sbnX/ +cHN9/2xudf9sbnX/dXd9/2xvef9qbXf/e32D/3N1fP93eoP/bG95/3Z4fP9qbXf/c3Z//3J0e/9ucHn/ +cXN6/3R2fP9tb3P/c3V8/3Bzff9ucHf/c3V8/29yfP9ucXv/bnB3/3Byef93eX//e32D/3Byef97fYP/ +cHJ5/3t9g/9ucXv/cHN9/3V3ff9wc33/eXuB/3Byef9zdn//bG95/2ptd/9sb3n/c3V8/3N1fP9ucHf/ +bnB3/25wd/9zdXz/bG95/2ptd/9qbHP/am13/2Rncf9nanH/am13/2dqcf9nanT/am13/25xe/9wc33/ +amxz/2xudf9zdXz/amxz/25wd/9wc33/eXyG/2xvef9ucHf/cHJ5/3N1fP9ucXv/bG95/3N2f/97fYP/ +c3Z//36Biv91eIH/c3Z//3Bzff93eoP/c3Z//3l8hv93eoP/e32D/3l7gf9wc33/d3qD/25wd/9maG7/ +bG51/25wd/9sbnX/ZWZq/3N1fP9zdXz/c3Z//3V4gf9wc33/dXd9/3V3ff91d33/cHN9/3Bzff9wc33/ +dnh8/3Bzff9wc33/c3Z//3Z5gv91eIH/bXB5/3Bze/9sb3n/bG51/3V3ff9sb3n/bG51/3F0ff9tcHn/ +c3Z+/21vd/9naXP/am13/2xvef9iZW7/ZGdx/3V3ff9qbXX/Z2p0/2hrdf9xc3r/cnV8/3Z4f/9sbnX/ +amxz/2tudf91eIH/dHZ8/25wdf9ydX7/cnV+/2xvef9ucHf/cXR9/2dqdP90dn7/Zmlz/2Zpb/9sb3n/ +YmVu/2Zobv9kZ3H/Zmhu/2lsc/9sbnj/dHZ9/2xvef9sbnX/bG95/3V4gf9tcHn/cHN7/2tud/92eYH/ +b3J7/25wd/9vcXX/d3l9/3Byef9wc33/dHZ8/25wd/9sb3n/b3F1/25wd/9ucHf/bW9z/2xudf9ucHf/ +aGt1/25xev92eH7/dXeA/36Ahv9ucHf/dXiB/2Zobv9qbXf/bG95/2Zpc/9wcnn/bW90/2tueP9sbnX/ +Z2pz/2xvef9vcnv/cHJ7/3N1e/92eYH/c3Z//29yfP9zdX3/cnV9/3J1fv91eIH/d3qD/3N2f/9zdn// +foGK/3l8hv+Bg4r/cHN9/3d6g/9zdXz/d3l//3Byef9wc33/cHN9/25xe/9ucXv/bnB3/29xdf9wcnn/ +bnF7/3l7gf9+gIb/Z2p0/3N2f/9wcnn/d3l//21vc/92eHz/dXd9/25wd/9ucXv/Z2p0/2xvef9ucHf/ +bnF7/3V4gf94e4X/bnB3/3Fze/90d4D/cHN8/3V3ff9wc33/bnF7/3N1fP9ydHr/cnR6/21wd/9sb3n/ +bnF7/3d6g/9ucXv/cHJ5/3N2f/9ucHf/amxz/3V3ff9vcXX/dXd9/2xvef9zdn//bXB6/3V3fv9ydX7/ +cHN9/3N2f/90dnz/bnB3/3N2f/9wc33/bG95/3Fze/9ucXv/bXB6/2xveP9ucXv/dHeA/3p8gv9ucHf/ +dHd9/2xudf92eHz/cHJ5/3Byef9zdXz/bG95/3N1fP9sbnX/bnF7/2dqdP9nanT/bG51/2xvef9sb3n/ +amxz/2xudf9sbnX/dXd9/3N1fP9ucHf/bW9z/2xvef9maXP/am13/2xvef9sbnX/c3V8/3N1fP9zdXz/ +c3V8/29xdf9vcXX/cHN9/2ptd/9wcnn/c3V8/3d6g/9sbnX/bnB3/29xdf9vcXX/bG51/2psc/9ucXv/ +cHN9/2ptd/93eX//am13/2psc/9qbXf/bnF7/2xudf9ucXv/am13/3Bzff9ucXv/ZGdx/25xe/9nanH/ +YGNs/2Rncf9qbXf/bG51/2RmbP9ucXv/bnF7/3Bzff91eIH/c3Z+/3R2fP9zdXz/c3V8/3Fzef9ucHf/ +cHJ5/3Z4fP9wcnn/bnB4/29xeP9ydHz/cnR7/2xudv9wc3r/dXiB/3N1fP91d33/bnF7/29xdf91d33/ +bnF6/3F0fv9zdXz/aGt1/25xe/9ucXv/am13/25wd/95fIX/cnR6/2xvef9rbnj/cnV8/3V3ff93eX// +bnB3/21vdv9wcnb/d3l9/3d5gP9tcHX/cnR7/3N1fP9sb3n/bG94/3R2ff9qbHP/eHl+/25xe/9tb3P/ +dnh8/2Zpc/9qbXf/bG51/21vc/9sbnX/cHJ5/3V3ff9ucHf/bW9z/25wd/97fYP/cXN6/3FzfP9rbnf/ +dHeA/25xev9qbXb/bG92/3N2f/9tb3b/cnR7/21wev9sb3n/bG95/21wdf9tb3b/bnB4/2xudf9rbXP/ +bnB3/2lsdf9sbnj/dXd+/3J0e/97fYL/bG90/3ByeP9gY2z/bG51/2xudf9kZ3H/bG95/2xudv9sb3j/ +bG95/2ptdv9wcnn/dHZ9/25weP9ucHj/bnB5/3N1fP9tb3b/cXN7/29ye/9ucHf/bG95/2ptd/9maXP/ +bG95/3V3ff9wc33/dXiB/21vc/9ucXv/bG51/3N1fP9tb3P/bG51/3Bzff9qbXf/am13/25xe/9qbXf/ +bG51/2xudf9wcnn/d3l//2Rncf9sb3n/bnF7/3V3ff9sbnX/dnh8/3V3ff9ucHf/bG51/2psc/9sb3n/ +b3F1/25wd/9wc33/dnmC/2tud/9sb3j/bXB6/2hrdf9xc3r/a254/21wef9vcnz/cnR9/3R2fP9vcnz/ +bnB3/25xe/91d33/b3F1/29xdf9zdXz/ZWhx/2Zpcv9wcnr/bW92/3d5gP9rbnj/cXR+/21wd/90dn3/ +c3Z9/3J1ff91eIH/enyC/3Byef9zdn//c3V8/2xvef9vcnv/cnR7/21wev9sb3j/bnB3/3BzfP92eH7/ +bXB6/3R2fP9rbXT/eHl9/25weP9ucHf/cnR7/3Fzev92eH3/bG94/3N1fP9ucXv/bG51/25wdf9vcXj/ +b3F4/21vdP9sbnb/bW92/3R3gP9ucXv/bG52/2xudf9wcnn/Z2p0/2xudf9tb3P/bG51/3Bzff9zdXz/ +dXh8/3Z5f/9ucHf/a254/25xe/9qbXf/b3J8/29yfP94eoD/bG95/25wd/9ucXv/bnF7/2ptd/9oa3T/ +c3Z//3V4gf9wcnn/eXuB/25xe/9sb3n/bnB3/3V4gf9ucXv/d3l//25wd/92eHz/c3V8/2ptdP9zdXz/ +am13/2Zobv9sbnX/bnB3/2ptd/9gY2z/cHN9/25xe/9vcnz/cHJ8/3J1fv9ydX7/cHN8/3Byef91d33/ +b3F4/25weP90d37/cHJ5/3Byev9xc3v/c3V8/3J0e/9wc3v/cHN8/3N2f/9wcnn/d3qD/3N2f/9ucHf/ +d3l//25xe/91d4D/dHeA/2ptd/9wc33/cHN9/25xe/9wcnn/en2G/3N2fv9vcnz/b3J6/29yfP92eH7/ +dnh//3BzfP9ydHv/cnR5/3p8gv94e4T/cHJ4/3J1fv9ucXv/cHN8/3Bze/92eH7/am13/3h6gP9ucXv/ +c3V8/3l7gf9sb3n/bnB3/3Byef9ucHf/b3F1/3Byef91d33/cHJ5/29xdf9ucHf/eXyG/25xe/9vcnv/ +am13/3J0ev9vcXr/aGt1/2tudv9ydHz/a252/21vdv9tb3f/bW92/2xudf9rbXT/bG51/25xef9rbXT/ +aWx2/2xvef9qbXf/amx0/3F0ev9tb3b/cnR6/2hrcf9sbnf/am13/3Byef9wc33/bG95/3Bzff9tb3X/ +a252/2dqc/9fYWv/ZGZt/2xveP9qbXb/bG95/3F0e/91d3//b3F3/3J1ff9zdXz/bG95/3N1fP9wcnn/ +bG51/3N1fP91d33/bnF7/3N1fP9qbHP/bnF7/2ptd/9zdXz/bG51/2xudf91d33/bnB3/3Byef9wcnn/ +bG95/25wd/9ucHf/dnh8/4CChv9ucHf/dXd9/3N1fP93eX//bnB3/3Z4fP92eHz/bnB3/2xudf9sbnX/ +bG51/2xudf9qbXf/bG95/3V4gP9nanT/bW95/3F0ff9vcnn/dXd9/3N1e/90dnz/c3V7/21vdv9sb3j/ +Zmlz/2FkbP9maXP/ZGdx/2Zobv9iZW7/am13/2lsdv9rbnb/dHZ7/3Byef9zdXv/bG51/2xvef9qbXf/ +bnF5/21wev9rbnf/b3J8/2xvef9nanH/bnF7/2xvef9oa3T/a253/25xef9tb3j/bG51/21vdv9tb3f/ +cHN6/2lsdv9qbXf/ZGdw/3N1fP9nanT/Zmlz/2ptdv9ucHf/b3J8/21vdv9vcnz/bXB6/2hrdf9tb3f/ +bG95/29yfP9qbHP/aGtz/2ttdP9zdX7/bnB5/21vdv9sbnX/b3J8/2hrdf9sbnX/bnB3/21vdv9xc3r/ +dHZ8/3V3fv91d37/bnB3/2ptd/9vcnv/am13/25wd/90dnz/dXd+/2xudf9tb3b/a254/29xeP9nanL/ +aWt1/2ptd/9sb3n/amx0/25xe/9qbHP/Y2Zv/2hrdf9ucXv/bG94/29yfP9nanH/b3F4/2tueP9oa3X/ +cnR7/2ptd/9jZm//Zmlz/2ptd/9qbXf/YGNs/25xe/9qbXf/bW94/25xe/9ydX//cnV//3N2gP91eIL/ +dXd//29xeP9xc3v/dHd//29ye/9tcHn/cnR6/21wev9ucHn/a253/21wev9rbnj/amxz/3V3ff9wcnn/ +bG51/3V3ff9qbXf/b3J8/3J1fv9maXP/bnB3/21vc/9qbXf/Z2p0/3R2ff9sbnX/bW91/3Fzev9rbnj/ +dHZ9/3F0ff9vcnz/dXd9/3F0fP90d3//dXiB/21vdv90d3//b3J7/3R3f/9wcnv/cXR9/2dqdP94eX3/ +cHJ5/29xdf94eX3/amxz/21vc/9tb3P/am13/2xudf9ucHf/dXd9/2xvef9sbnX/am13/3d6g/9nanT/ +a253/2VocP9rbnT/bG93/2RncP9laHD/bG93/2hqcP9pbHP/ZGdx/2hqcP9maXP/amx0/2lsc/9rbnf/ +a210/2ttdP9tcHr/bXB5/2hqc/9ucXn/bW95/3Fzef9rbXT/cHJ5/2xvef9wcnn/cHN9/2xvef9ucXv/ +bnF6/3Byd/9ucHf/bnB3/3Byef94eX3/c3V8/3Byev9ydHv/dXd9/3Byd/9ydXr/dHZ9/2xudv9wcnn/ +bG51/2psc/9zdXz/eHl9/3V3ff91eIH/bnB3/3Byef9wcnn/dnh8/2xvef9wc33/d3qD/3N2f/9zdn// +c3V8/25wd/9ucHf/c3V8/3h5ff9/gYf/bnB3/3Z4fP9wcnn/d3l//25wd/93eoP/eXuB/25wd/9wcnn/ +bG51/25wd/9qbHP/am13/2ptd/94e4X/Z2pz/25xef9ydHv/a254/3Bzff9rbnj/dHd+/3J0ff9tb3f/ +cnR8/21vd/9qbHP/cHN9/3Bzff9sbnX/Zmlz/3Bzff9nanT/am13/21vef9tcHr/bXB6/2ptdf9tb3f/ +b3F5/3Byev9sb3n/cXN6/3J0fP91d33/bG51/3N1fP9wc33/bG51/25wd/9xdHv/cnR6/25wd/9wcnr/ +a252/29xef9sb3n/bnB5/2ttdv91eH//a253/2ptd/9rbnb/b3F4/29yfP9wcnn/bnB5/21vdv9rbnX/ +cnR6/29xev9ydXz/b3F4/21vdv9ydHv/c3V9/2ptd/9vcXj/bW92/25wd/9tb3b/bW92/25wd/9xc3r/ +cHN6/3R2fP93eX7/dXd//3Bzff9tcHr/dHZ8/25wd/9vcXj/b3F6/3R1fP9xc3r/cnR6/3Bzff9wc3z/ +aWx0/2xvdv9tb3X/cHJ6/25wdv93eH3/b3F3/2ttdP9tb3f/c3V7/3R3fP90d37/b3F4/3Z3ff91d33/ +cXN6/3Z4f/9xdH3/bXB6/3Byev9vcnz/cXR+/2hrdf9ydX//cXR9/2lsdv9sb3n/cXN8/25wd/9sb3j/ +bnB6/21wef9nanT/am12/3N1fP9vcXn/c3V7/3N1ev9qbXf/a210/21vdv9vcXj/bnB3/29xdf9zdXz/ +cHJ5/25wd/9wcnn/bG51/3N2f/90d4D/am13/21vc/9ucHf/b3F1/2xvef93eX//b3F4/2xudf9wc33/ +bG94/3R2ff9xc3r/bW92/3V3fP90d33/dHZ9/3Z4fv9wcnb/b3F4/3Fzev9xc3r/c3V8/3N2f/9oa3H/ +eHl9/3Byef9sb3n/d3qD/25xe/9wcnn/bnB3/25wd/9wcnn/cHN9/3d6g/9zdn//cHN9/3N2f/9/gYf/ +cHN9/3N2f/9qbXf/cHJ2/3R2ff9ucHf/cHJ5/3N2f/9ucXv/b3F4/21wev9sb3n/bG95/29xeP9vcnb/ +cHJ5/2xudv9tb3P/dXd7/3R2fP9sbnX/cXR9/25xe/9tcHr/b3F1/25wd/9nanT/Z2p0/2ptd/9qbXf/ +bnB3/3Byef9vcXj/bG51/29xdf9ucHf/dXd9/3Byef9wcnn/cHJ5/3N1fP9ydHr/c3V6/3J0fP9tb3T/ +c3V8/21vc/9sbnX/c3Z//3d6g/91eIH/eXuB/25xe/9zdn//dXiB/3t9g/9wcnn/dXiB/3l7gf93eoP/ +d3qD/3d6g/9wc33/cHN9/25xe/91eIH/gYOK/2xvef91d33/cHN9/3l7gf9ucXv/e36H/3l7gf9zdXz/ +c3Z//2xvef91eIH/cHJ5/3d6g/91eIH/foCG/25xeP9zdn//dnh//25wd/9xc3n/a253/3Z4fv9zdXz/ +b3F4/3Z5gf91eIH/c3V+/3t9g/95e4H/c3Z//3N1fP93eoP/bnB3/3F0ff9wcnn/cnV+/3d6gv9ydX7/ +cHN9/3d5f/95fIL/dXiB/3h6gP95e4H/foCG/3V3ff97fYP/e32D/3N2f/92eYL/eHqA/3d5gP9ydX7/ +dHeA/2ttd/9ucXr/cHJ8/3Fzev9xc3v/eXuC/3J0e/9ucHj/b3F5/3R2fP9xc3r/dHZ8/21veP9sbnX/ +aGt1/3N2f/9sb3n/cXN7/2lsdv9qbXT/cnR7/25xe/9rbnj/b3J7/2xueP9tb3f/bXB6/29xev9tcHj/ +cXN6/3J0e/9zdXz/dHZ9/3BzfP9xc3r/aGt0/21wef9qbHT/a210/2hrdf9sbnf/bG52/25xev9tcHr/ +bW94/2hqc/9ucHf/aGty/2hrdf9pbHP/b3F6/2psdf9oanP/am13/25xe/9sb3f/bW94/2dqdP9ucXn/ +bXB3/3FzeP9vcnj/bnF7/2hrdf9sbnX/bnB4/3F0e/9laG//bnB4/2xvef9sbnX/bG51/3N1fP9sbnX/ +bG95/25xe/9wcnn/bW9z/2xudf9zdXz/bnF7/25xe/9wcnn/a253/2tud/9tb3P/c3V8/29xdf9sbnX/ +bG95/3Bzff9sbnX/bnB3/2psc/9zdn//eXuB/25wd/9ucHf/cHN9/25xe/9ucHf/eXuB/2xvef9qbXf/ +c3Z//25xe/91d33/cHN9/2xvef92eHz/c3Z//3Byef91d33/b3F1/3Byef91d33/cHJ5/25xe/9ucXv/ +Zmhu/3N1fP9qbXf/bG51/3V3ff9nanT/Z2p0/2psc/9qbHP/amxz/3Bzff93eX//am13/25wd/9qbXf/ +eXuB/2ptd/9wc33/am13/2xudf9ucXv/Z2p0/2dqcf9qbXf/amxz/2psc/9iZW7/bG51/2dqdP9sbnX/ +bG51/25xe/9qbXf/am13/3Bzff9zdXz/Zmlz/2xvef9ucXv/amxz/2xudf9sbnX/ZGdx/2Rncf9kZ3H/ +YmVu/2Zpc/9oanP/bG53/2ptd/9vcXj/c3Z//3N2f/9wc33/bnF7/25xe/9zdn//b3J7/3Fze/9tcHr/ +bW91/3Bzff9tb3P/amxz/3V3ff91d33/dXd9/3h5ff9ucHf/b3F1/25wd/92eHz/bnB3/3N2f/92eHz/ +dXd9/3Byef9zdXz/bnB3/25wd/9ucHf/dXd9/3+CjP9wcnn/c3Z//25xe/93eX//bG95/3t9g/94eX3/ +bnB3/3Bzff9qbXf/c3Z//2xvef9wc33/cHJ5/3t+h/9ucHf/cHN7/3R3gP9ucHf/dXiB/25xe/95fIb/ +cnV+/29ye/91eIH/cHN9/25wd/9zdn//c3Z//25wd/9sbnX/cHJ5/2xvef9ucHf/bG51/3Byef91d33/ +bnB3/29xdf9zdXz/c3V8/2xvef91d33/cHN9/3Bzff9qbXf/cHJ5/3N1fP9ucHf/cHJ5/3Byef9zdn// +c3Z//3N2f/9qbXf/bXB5/3N2f/9wc33/cnV+/3d6g/90d4D/c3V8/3N2f/96fIL/enyC/31/hf90d4D/ +cnV+/29yfP95fIX/dHeA/3h6gP9ydX7/cnV+/3Z4fv9tcHn/am13/3R2fP9ucHf/b3F1/3J1fv9zdX7/ +bG95/3J1fv90dnz/d3l9/3h5ff9xc3r/dHZ9/2xudf9wcnr/bnB3/21wev9rbnj/b3F5/3Bzev9zdX7/ +dnmC/3J1f/9sb3n/dnh+/3Byev91eIH/b3J8/3R3f/9ucXv/b3F5/3F0fv91eIH/cXN5/3J1fv9wcnr/ +cXR9/3J0e/90d4D/cXN7/3V3ff9wc3v/cHJ5/3N1ff92eH//am11/3N1ff9ydHz/bG51/2xudf91d33/ +bnB3/3Byef9ucXv/c3Z//25wd/9sb3n/dnh8/25xe/9wcnn/c3V8/2xudf9nanT/bW9z/3Byef9vcXX/ +b3F1/3Bzff91d33/bnB3/25xe/9qbXf/c3Z//3h5ff9sbnX/bG51/2ptd/9sb3n/am13/3N1fP9sbnX/ +Zmlz/2xvef9qbXf/bG95/2dqdP9kZ3H/bnB3/2ptd/9maXP/Z2p0/2Rncf9maXP/Z2p0/2Zpc/9nanT/ +ZGdx/1xfaP9kZ3H/ZGdx/2Rncf9ucHf/YmVu/2Jlbv9maG7/ZGdx/2psc/9nanT/bnB3/2Zobv9kZ3H/ +Z2px/3d6g/9nanT/cHN9/2psc/9qbXf/dXd9/2xudf9nanH/bG95/2xudf9tb3P/Z2px/25wd/9ucHf/ +bG95/25wd/9zdn//c3V8/3Bzff93eoP/eXuB/25xe/93eoP/d3qD/3Byef9wc33/cHN9/2xudf9vcXX/ +c3V8/21vc/9sbnX/cHJ5/29xeP9tb3b/cHJ5/3V4gf91eIH/c3Z//3N2f/9ucXv/d3l//3Bye/90dnz/ +cXN9/2xvef9zdn//bnF7/25wd/93eX//eXuB/3d5f/93eX//bG95/3Byef9vcXX/dnh8/25wd/9zdXz/ +dnh8/3V3ff9zdXz/cHJ5/29xdf9sbnX/cHN9/3V3ff+Agob/bW9z/25xe/9sbnX/dXd9/21vc/93eX// +dnh8/21vc/9sbnX/Z2px/3Bzff9sb3n/cHJ5/25wd/93eX//bW92/29yfP9xc3v/aGt1/2xvef9kZ3H/ +dXd9/2xvef9pbHP/cXR7/25xe/9ucHf/cHN9/3Z4fP9sbnX/amxz/25wd/9ucHf/bG51/2psc/9ucHf/ +c3V8/2xudf9qbXf/c3V8/3V3ff9sb3n/c3V8/3Bzff91d33/bG51/3V3ff9zdXz/b3F1/3N1fP9ucHf/ +c3V8/3N1fP9zdXz/Zmlz/2ptd/9ucHf/bG95/3Bzff93eX//bnF7/29xdf9sbnX/c3V8/3V3ff91d33/ +bnB3/25wd/9ucHf/dXd9/25wd/92eHz/bnB3/2xvef91d33/bW9z/2xudf92eHz/bG51/2xvef9ucXv/ +am13/2ptd/9ucXv/c3V8/3V3ff94eX3/c3V8/3d5f/9vcXX/cHJ5/25wd/9sb3n/am13/2ptd/9wcnn/ +cHN9/3J1fv9wc33/am13/3R2fP9vcXX/cHJ5/2xudf9ydHz/bnB3/2xvef9vcnz/dnmC/25xe/9zdn// +bnF6/3N2fv9qbXf/dnh8/21vdv90dnz/b3F4/2tueP9ucXr/cHN9/2Vocv9tcHr/cnR8/2Jlbv9nanH/ +bnF7/2ptd/9qbXf/amxz/2Zpc/9maG7/Zmhu/2dqdP9maG7/Z2p0/2xvef9maXP/ZGdx/2Rncf9qbXf/ +Z2p0/2dqdP9ucXv/cHN9/2ptd/9sb3n/Z2p0/3Bzff92eHz/bG51/29xdf9ucHf/bnB3/3Byef97fYP/ +c3Z//25xe/91eIH/c3Z//3V4gf9zdn//bG95/3N2f/9wc33/bnF7/3N1fP9tb3P/bnB3/25wd/9sb3n/ +bnF7/2xvef9nanT/bnF7/2xvef9sbnX/dXd9/2Rncf9maG7/ZGdx/2Rncf9maG7/am13/25wd/9nanH/ +Z2p0/2ptd/95e4H/bG95/3N1fP9sbnX/amxz/3V3ff9sbnX/bG51/3Bzff9ucHf/bnB3/2ptd/9ucHf/ +b3F1/29xdf9ucHf/c3V8/25wd/9tb3P/dXd9/3N1fP9nanT/dXd9/3N1fP9qbXf/am13/2psc/9nanT/ +amxz/3Byef9nanH/Zmhv/2tueP9nanT/ZWhy/2ttdf9qbXf/am13/2ptd/9nanT/Z2px/3Bzff9sb3j/ +b3J8/2xvef9sbnX/c3V8/2ptd/9nanT/bnF7/3N1fP91d33/dXd9/2xudf9ucXv/bG51/2xvef9qbXf/ +bnF7/25xe/91d33/dnh8/3Byef9sbnX/bW9z/3N1fP93eX//gIKG/21vc/9sb3n/bG95/3h5ff9sbnX/ +d3qD/3V3ff9qbXf/am13/2Zpc/9zdXz/cHJ5/3N2f/9wc33/en2G/21vd/9vcnz/cnV8/2hqdP9nanT/ +ZGdx/3Byef9ucXv/aWxz/3F0fv9vcnz/bG95/3Bzff9zdn//bW9z/2xudf9zdXz/cHJ5/25wd/9qbXf/ +cHN9/3l7gf9ucHf/bnB3/3l7gf97fof/c3Z//3t+h/97fYP/e32D/3N2f/95e4H/eXyG/3N2f/95fIb/ +eXuB/36Ahv97fYP/foCG/3V3ff91d33/cHN9/3Bzff91eIH/eXyG/25xe/9qbXf/bnB3/3N2f/93eX// +dXiB/2ptd/9sb3n/bG95/3l7gf9wc33/eXuB/3Bzff9ucXv/dXd9/29xdf9sbnX/dnh8/2xudf9wcnn/ +cHN9/25xe/9wc33/c3Z//3V3ff91eIH/eXuB/3V4gf93eX//bnB3/25xe/9ucHf/bnB3/2xudf9nanH/ +bG51/3N1fP9wc33/c3V8/2psc/9zdXz/bG51/2xudf9qbXf/cHN9/3Byef9nanT/bG95/3l7gf9sbnX/ +bW9z/2xudf9sb3n/Zmlz/3Bzff9qbHP/cHN9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/bG95/2xvef9nanT/ +bnF7/3N2f/9wcnn/bnF7/3Bzff9ucXv/cHJ5/3Byef91eIH/cHJ5/3N2f/91d33/cHN9/2xvef9sb3n/ +dXiB/3Byef9wcnn/c3Z//3Bzff9ucHf/bG51/2xudf91d33/c3V8/2psc/9qbHP/am13/2xudf9nanH/ +c3V8/2psc/9maXP/bG95/2xudf9wc33/cHJ5/2xudf9wcnn/c3V8/2xudf9wc33/amxz/2xvef9sb3n/ +bG51/3N1fP9wcnn/Z2p0/3Bzff9zdXz/bnB3/3d5f/9qbXf/bnB3/25wd/9sbnX/bG51/3V3ff94eX3/ +b3F1/25wd/9zdXz/f4GH/2xvef9zdXz/bG95/2xudf92eHz/am13/2ptd/9ucXv/bG95/2psc/9maXP/ +bG51/2dqcf9kZ3H/Zmlz/2xvef9maXP/Z2p0/25xe/9zdXz/Z2p0/3N1fP9ucXv/am13/2ptd/9vcXX/ +b3F1/2xudf9zdXz/bG51/2tud/9ydHv/bXB6/29ye/9wc3z/d3qD/3l8hv95fIb/d3qD/3Bzff97fYP/ +dHeA/3h7gv95e4H/dHZ9/3t9g/91eIH/c3V8/3d6g/97fYP/foCG/36Biv9zdn//e32D/3V4gf93eoP/ +cHN9/3V4gf9zdn//dXiB/3N2f/9wc33/bnB3/25wd/9zdXz/dnh8/4CChv9sb3n/bnB3/25wd/92eHz/ +am13/3N2f/9zdXz/amxz/2ptd/9gY2z/bnF7/2dqdP9ucXv/cHN9/3V4gf9rbXX/bnF7/3R3gP9ydHv/ +c3Z//2ptd/93eX//cnV+/25weP9ydHz/bXB5/2dqcv9sb3n/bnF7/2psc/9maXP/bG95/2xvef9sb3n/ +am13/25wd/91d33/bG95/2xvef91eIH/d3qD/3Bzff93eX//dXiB/3Bzff9ucHf/c3V8/3N1fP9sbnX/ +bG95/2xvef9wc33/cHN9/3N1fP9qbHP/bW9z/2xudf9sbnX/c3V8/3d5f/9ucHf/am13/2xvef9zdn// +eXuB/3d6g/9ucXv/bnF7/3Byef95fIb/c3Z//3l8hv9wc33/dXiB/3l8hv91eIH/dXd9/3t+h/9ucXv/ +dXiB/3V4gf9wc33/bnF7/3N1fP91d33/d3qD/3d5f/9wcnn/dXd9/2dqdP9nanT/amxz/2Zpc/9iZW7/ +YmVu/2xudf9qbXf/cHN9/25xe/9nanT/cHN9/2ptd/9sbnX/am13/3N1fP9ucHf/Z2p0/25xe/93eoP/ +bG51/2ptd/9qbXf/bG95/2ptd/91d33/Z2p0/3Bzff9sb3n/cHJ5/3Byef91d33/Zmhu/3V3ff9zdXz/ +am13/25xe/9zdn//dXiB/3Bzff9ucHf/cHN9/25xe/9sb3n/dXd9/25wd/9wcnn/dnh8/3Byef9ucHf/ +bG95/3d5f/9wc33/cHJ5/25xe/91eIH/bnF7/3N1fP9sb3n/eXuB/3l7gf9wc33/dXd9/3l7gf93eX// +dXiB/36Ahv9zdXz/bnF7/3N2f/9wc33/eXyG/3l8hv92eHz/eXuB/35/g/95e4H/fX6B/3Bzff91eIH/ +dXiB/3Bzff93eoP/c3Z//25wd/93eoP/d3qD/3Bzff95e4H/am13/2xvef9ucHf/bG95/2xvef9zdn// +dXd9/2xvef9ucHf/c3V8/3+Bh/9sbnX/dXd9/2xudf9qbXf/eHl9/25wd/9sb3n/dXiB/3V4gf9zdXz/ +bnB3/2xvef9ucHf/cHJ5/25wd/9zdn//c3Z//3N1fP9+gIb/e36H/3V3ff9+f4P/fX6B/3Z4fP91eIH/ +c3Z//2xudf9sbnX/cHN9/2xvef9rbnj/dHZ8/3R2fP9ydHr/enyC/36Ahv97fYP/eXuB/3V4gf9wc33/ +enyD/3N2fv90dn7/cXN6/21vdv91d33/bG51/2dqdP9wcnn/cHN9/3Z4fP93eX//bnB3/3N2f/9sb3n/ +c3V8/2xvef9ucXv/bnB3/3N2f/9zdn//cHN9/25wd/9ucHf/c3Z//3l7gf+Bg4r/bnB3/25xe/9wc33/ +eXuB/3Bzff93eoP/d3qD/3Byef9zdn//Zmlz/3V3ff9wc33/dXd9/3N2f/95fIX/bG51/29xeP90d37/ +am13/3Bzff9sb3n/eHl9/3N1e/9rbnf/cXN7/25xe/9sb3n/dXiB/3V4gf9ucXv/bG95/3N2f/9ucXv/ +c3V8/2ptd/9sb3n/dXd9/25wd/9ucXv/dXiB/3l8hv9wc33/dXd9/3Bzff9zdXz/bnB3/3V3ff9wcnn/ +bG51/25wd/9ucHf/cHN9/3Bzff91d33/bW9z/2xudf9nanT/am13/25xe/9ucHf/Z2p0/2Rncf9qbHP/ +ZGdx/2dqdP9maG7/YmVu/2dqcf9maXP/cHJ5/2dqcf9sb3n/Z2px/2psc/9sb3n/amxz/2dqdP9zdXz/ +Z2p0/25xe/9zdXz/bG95/2xudf9ucHf/c3V8/3V3ff93eX//c3V8/3Z4fP9ucHf/cHJ5/3Byef9vcXX/ +am13/25wd/9ucHf/cHJ5/3Z4fP9wcnn/bG51/3N1fP9ucHf/bnB3/25wd/9zdn//bnF7/2psc/9ucXv/ +eXuB/29xdf9ucXv/bnB3/2xvef9qbXf/d3l//2xvef9zdn//dXiB/3Bzff9sb3n/cHN9/2Zpc/9zdn// +dXiB/2ptd/9wc33/dXiB/3N2f/9zdn//cHN9/3V4gf9zdn//c3Z//3t9g/95e4H/e32D/3t9g/95e4H/ +c3V8/3N1fP95e4H/cHJ5/2xvef9ucHf/cHN9/25wd/9sb3n/amxz/3N2f/9zdn//b3F1/25wd/9wcnn/ +bG95/25wd/9wc33/bG51/2psc/9ucXv/am13/3Bzff9ucXv/bG51/25wd/9zdXz/bnF7/3d6g/9zdXz/ +c3Z//3V4gf91eIH/e32D/3V4gf9zdXz/e32D/3d6g/9wc33/e36H/3Z4fP91eIH/dXd9/3V4gf9zdXz/ +eXuB/3t+h/9wc33/cHN9/3N2f/+Bg4r/bnB3/3V3ff9ucHf/bG51/3h5ff9vcXX/bG95/3V3ff91d33/ +bG51/2xudf9sbnX/Z2p0/2psc/9maXP/bG95/2dqcf9maXP/cHN9/3d5f/9nanT/cHN9/3N1fP9qbXf/ +bG51/2xudf9zdXz/c3V8/3l7gf9zdn//cHJ5/3Z4f/9wc3r/aGt1/2ptd/9wc33/amxz/2ptd/9qbXf/ +am13/3N1fP9rbnX/cHN8/3Fzev9wcnn/dXd9/3Byef9ucHf/c3V8/3Bzff9zdXz/dXd9/2xvef9zdXz/ +bnB3/3N1fP9ucHf/cHJ5/25wd/9zdn//dXiB/3N2f/9sb3n/bnF7/3N2f/91eIH/g4WM/3V3ff91d33/ +e32D/3+Bh/97fYP/f4GH/4WHjf97fYP/eXyG/3N2f/9+gYr/foCG/36Ahv99foH/gIKJ/3N1ev9zdX3/ +dXd+/2lrdf9ucXv/am13/3N1fP91d33/a254/3N1fP9xc3n/amxz/3Bzff9wc33/amxz/2Rncf9qbXf/ +bG51/2ptd/9qbHP/bnB3/3V3ff9sbnX/amxz/3V3ff93eX//cHJ5/3V3ff9ucXv/cHN9/2xudf9qbXf/ +bG95/2dqdP9sb3n/bG51/25xe/9wc33/cHN9/2dqdP9qbHP/am13/25wd/91d33/dXd9/3N1fP9ucHf/ +bG95/3Bzff9zdn//bnF7/2xvef9sb3n/bG95/3d5f/9sb3n/dXd9/25xe/9wc33/c3Z//29xdf9ucHf/ +dnh8/2psc/91d33/dXd9/25wd/9qbXf/bnB3/2xvef9wc33/bnF7/2dqdP9qbXf/Zmhu/2ptd/9sb3n/ +bG51/2dqdP9qbXf/bW9z/25wd/92eHz/cHJ5/2Zpc/9wc33/bG95/2xudf9nanT/bnF7/25wd/9qbHP/ +bnB3/3d5f/9tb3P/cHJ5/25wd/9ucHf/am13/3V3ff9qbXf/cHN9/3Bzff9ucHf/bnB3/3Bzff9maXP/ +c3Z//3N1fP9sbnX/cHJ5/3N2f/9wcnn/bnB3/25wd/9wcnn/cHJ5/3Byef91d33/bnB3/25wd/92eHz/ +c3V8/2xudf9qbXf/cHN9/2xudf9sbnX/bnB3/3Byef9qbXf/Z2p0/2Zpc/9ucXv/am13/2Zpc/9maXP/ +Zmlz/2Jlbv9nanH/Z2p0/2Rncf9maXP/bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/ +bW9z/2ptd/9ucXv/am13/25xe/9sb3n/bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/ +bnB3/3Byef91d33/bW9z/21vc/9wcnn/f4GH/21vc/9wc33/am13/25wd/91d33/bG95/2xudf9zdXz/ +bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/bnB3/3d5f/9wcnn/bnB3/3h5ff93eX//bG51/3V3ff93eX// +bnB3/25wd/9ucHf/bnF7/3Bzff93eoP/eXyG/3N2f/97fYP/cnV//21wev9wc33/c3Z//2xvef9ucXv/ +bnB3/25wd/91d33/cHJ3/3V4gP91eIH/c3Z//3d6g/9zdn//bG95/3N2f/9zdn//dXiB/3d6g/9wc33/ +cHN9/3Bzff9ucXv/bnF7/3Bzff9wc33/dXiB/3N2f/9zdn//bnB3/21vc/9zdXz/dXd9/35/g/9ucHf/ +bG95/3V4gf93eX//bnF7/3d5f/93eoP/c3Z//25xe/9qbHP/cHN9/3Byef91d33/c3V8/3l7gf9sbnb/ +cXR8/3V4gv9wcnz/eXyG/3V3ff99foH/fH6F/3J1f/92eID/cXN6/2hrdf9wc33/dXd9/21vc/9nanH/ +cHJ5/3l7gf93eX//dXd9/3V4gf95e4H/c3V8/25xe/91eIH/eXyG/3N2f/95fIb/c3Z//3d6g/9wc33/ +cHN9/25xe/9sb3n/bG95/2xvef9zdn//c3Z//3d5f/9vcXX/bnB3/25wd/9wcnn/dXd9/3N1fP9ucXv/ +b3F1/2xvef9wc33/d3l//3N2f/9wcnn/cHJ5/2xvef91d33/bnF7/3d5f/9wcnn/d3qD/3d6g/9zdn// +c3Z//35/g/91d33/fX6B/31+gf91eIH/dXiB/3l7gf9+gIb/f4GH/36Ahv97fYP/fX6B/3d5f/95e4H/ +foCG/3d5f/93eX//dnh8/3N2f/91eIH/foCG/3t9g/9ucXv/d3qD/3N2f/9zdn//cHJ5/3V4gf9zdn// +cHN9/3V4gf95fIb/cHN9/25xe/9sb3n/bnF7/2ptd/92eHz/Z2p0/3Byef9ucXv/bG95/2xudf9zdXz/ +amxz/3V3ff9zdXz/am13/25xe/91eIH/c3Z//25xe/9ucXv/cHJ5/25xe/9ucXv/dXd9/2xvef9sb3n/ +c3V8/25wd/9sbnX/bG51/3Bzff9sbnX/bnB3/2psc/9wcnn/bW9z/2ptd/9nanT/cHN9/25xe/9nanT/ +ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/ +dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/ +bnB3/2xudf9zdXz/d3l//2psc/9qbXf/cHJ5/3+Bh/9sbnX/bnF7/2ptd/9vcXX/dnh8/3Byef9vcXX/ +dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/bG51/2xudf9wc33/bG51/21vc/94eX3/d3l//21vc/9zdXz/ +c3V8/2ptd/9sbnX/bG51/25wd/9wcnn/d3l//3N2f/9ucHf/c3V7/3N1fP9vcXj/bG95/3N2f/9ucXv/ +c3Z//2xvef9ucXv/c3Z//21wev92eYD/eHqB/3V3gP97fof/c3Z//3N2f/97fYP/eXuB/3d6g/97fYP/ +cHN9/3V4gf95e4H/cHN9/3V4gf91eIH/c3V8/3d6g/95e4H/dXiB/25wd/9wcnn/cHN9/3Bzff97fYP/ +b3F1/25wd/93eX//c3Z//25xe/93eX//dXiB/25xe/9ucXv/am13/3Bzff9ucXv/dXiB/3Bzff94e4X/ +b3F4/25xev91d33/aGt0/2xvef9sbnX/c3V8/3N1fP9tcHr/dXd9/3J0ff9wcnn/d3l//3V3ff9sb3n/ +am13/3Bzff9ucHf/bnF7/2xvef9ucXv/d3l//3Byef9sb3n/c3Z//3l8hv9wc33/eXyG/2xvef9wc33/ +bG95/3Bzff9ucXv/bG51/2xvef9sbnX/c3V8/3N1fP93eX//b3F1/29xdf9sbnX/bG95/3V3ff9zdXz/ +am13/2psc/9sbnX/bG95/25xe/9qbXf/Z2p0/2psc/9nanT/dXd9/2ptd/9zdXz/bG51/2xvef9qbXf/ +bG51/2xudf9zdXz/Z2p0/25xe/9qbXf/amxz/2Zpc/9qbXf/am13/25xe/9sb3n/am13/25xe/9sb3n/ +bG95/3Bzff9sbnX/bG51/2xudf9sbnX/bG95/3Bzff9sb3n/amxz/3Bzff9sbnX/bG51/2psc/9wc33/ +cHJ5/25wd/9ucXv/d3qD/3Byef91eIH/bG95/25xe/9qbXf/dXd9/2xvef9wc33/cHJ5/3N1fP9ucXv/ +cHN9/2xvef91eIH/dXiB/2psc/9sbnX/c3V8/2xvef9ucHf/cHJ5/25wd/9wcnn/bnB3/3V3ff9wcnn/ +bnF7/3N1fP9zdXz/am13/2xudf9wc33/am13/2psc/9maXP/bnF7/21vc/9ucHf/bnB3/3V3ff9wcnn/ +bG51/2psc/9ucHf/bG95/3Bzff91d33/bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn// +bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/ +bnB3/2xvef9sb3n/dXd9/3l8hv9ucHf/bnB3/3N2f/+BhI3/c3V8/3N2f/9sb3n/c3V8/3l7gf91eIH/ +cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/cHJ5/25xe/9ucHf/d3qD/3N2f/9wc33/e36H/36Biv9zdn// +eXyG/3l7gf9wc33/c3Z//25xe/9qbXf/bW9z/3V3ff9zdXz/bnB4/3N1fP9xc3j/bnB2/25wd/91d33/ +cHJ5/25xe/9ucHf/bnF7/25xe/9tb3f/cXR9/3N1fP9vcXn/d3l//3N1fP9qbHP/eHl9/3Z4fP92eHz/ +dXd9/2xudf9ucXv/cHN9/2xudf9ucXv/bG95/2xudf9ucXv/dXd9/2xudf9ucHf/b3F1/3N1fP9wcnn/ +e32D/25wd/9tb3P/c3V8/3N1fP9ucHf/dXd9/3V3ff9wcnn/cHJ5/2psc/9sbnX/bG95/3Bzff9wc33/ +dXd9/2xudf9tcHr/c3V8/2xvef9zdXz/b3F1/3Byef90dnz/bnB3/3J0ev9wc3v/bG95/3V4gf9zdn// +bG95/2xvef9ucXv/c3Z//25xe/9nanT/cHJ5/3d5f/9vcXX/Z2px/3V3ff94eX3/bnB3/3l7gf9sbnX/ +bG51/21vc/9zdXz/bnF7/25wd/9ucHf/bG95/3Byef9wcnn/dXd9/25wd/9vcXX/b3F1/25wd/91d33/ +bnF7/25xe/9sbnX/am13/25xe/9wc33/bG95/2dqdP9sbnX/amxz/3Z4fP9ucHf/bnF7/25wd/9wc33/ +bnB3/25wd/9vcXX/dnh8/25wd/92eHz/cHJ5/21vc/9ucHf/bnB3/3Byef9zdn//dXiB/3N2f/93eoP/ +cHN9/3Bzff9wc33/bG95/2xudf9sbnX/bG51/25wd/9wc33/bnF7/2Zpc/9sb3n/amxz/2dqdP9kZ3H/ +bG95/2ptd/9maXP/bnB3/3V3ff9sbnX/bG95/2xudf9ucXv/Z2p0/3N1fP9nanT/bG95/2xvef9ucXv/ +am13/2xvef9nanH/dXd9/3Byef9maXP/am13/25xe/9ucHf/am13/2xudf9tb3P/bG95/2psc/9ucXv/ +bnF7/2ptd/9wc33/cHN9/2Zpc/9sbnX/cHN9/2ptd/9qbXf/Zmlz/2ptd/9sbnX/Z2p0/2ptd/91d33/ +bnF7/21vc/9nanH/bG51/2dqdP9qbXf/bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/ +am13/2psc/9sb3n/bG51/2xvef9wc33/am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/ +c3Z//25wd/9qbXf/Z2p0/3Bzff95fIb/cHJ5/3N1fP9zdn//g4WM/3N1fP9wc33/am13/25wd/9zdXz/ +cHJ5/2xudf94eX3/cHJ5/2xudf9qbXf/am13/2xudf9sbnX/am13/3N1fP9ucXv/b3F1/3d5f/91d33/ +am13/3N1fP9wc33/Z2p0/2xvef9sbnX/bnB3/2ptd/94eX3/c3Z//25xe/92eYP/c3V8/21vdv9ucHf/ +cHN9/2xvef9sbnX/bG51/2xvef9rbnj/bXB6/3J1fv9ydX7/dHeA/3d6g/91eIH/cHN9/3t+h/97fYP/ +e36H/3l8hv9wc33/eXuB/3d6g/9ucHf/cHN9/25xe/9wcnn/dXiB/3d6g/9wc33/bnB3/25wd/9wc33/ +cHN9/3t9g/9sb3n/bW9z/3V3ff91d33/cHJ5/3l7gf94eX3/cHJ5/25xe/9qbXf/bnB3/25wd/91eIH/ +d3qD/3p8gv9xc3v/cHN9/3R3fv9ucHf/bnF7/25wd/9zdn//c3Z//25xe/9zdXv/bnF7/25wd/9zdn// +dXd9/25wd/9qbHP/bG51/3N2f/9sb3n/am13/2xvef93eX//bnB3/2ptd/9zdn//eXuB/3Byef95fIb/ +bnF7/25xe/9wcnn/c3Z//3Bzff9ucHf/bnB3/3Bzff9wcnn/cHJ5/3V4gf9ucXv/bnB3/29xdf9ucXv/ +dXd9/3N2f/9zdn//bnB3/2xvef9zdXz/dnh8/3V3ff9ucHf/cHJ5/25wd/92eHz/b3F1/3Byef9sbnX/ +am13/2ptd/9sbnX/am13/3N1fP9nanT/cHJ5/2psc/9nanT/Z2p0/2dqdP9qbXf/bG95/25xe/9qbHP/ +am13/2ptd/9nanT/Z2p0/2Zobv9kZ3H/Z2p0/2xudf9qbXf/cHN9/3N1fP9sbnX/bnB3/2xudf9ucHf/ +Z2p0/3N2f/91eIH/bnB3/3Byef93eX//bnB3/3Byef9sbnX/cHJ5/2ptd/93eX//bG95/2xvef91eIH/ +c3Z//29xdf9wcnn/amxz/3V3ff9ucXv/amxz/25wd/9ucXv/am13/3Byef9tb3P/bG51/2xvef9qbHP/ +bnF7/25xe/9sbnX/dXd9/3Bzff9nanT/bG51/25xe/9sbnX/amxz/2Rncf9nanT/Z2p0/2Zpc/9maXP/ +dXd9/25xe/9qbHP/YmVu/2xudf9qbXf/bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/ +cHJ5/25xe/9wcnn/d3l//29xdf91eIH/dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/ +cHN9/3V4gf9ucXv/bG95/2ptd/9wc33/d3l//2xudf9ucHf/c3V8/35/g/9ucHf/bnB3/2dqdP9sbnX/ +cHJ5/25xe/9sbnX/cHN9/3Byef9tb3P/bG95/2xudf9vcXX/bnB3/2xvef9zdn//bnF7/2xvef95fIb/ +eXuB/25xe/95e4H/eXuB/3N1fP91eIH/d3qD/3N2f/9wc33/e32D/3N2f/9tcHn/d3qD/3N1ff9tcHr/ +cHN9/3d6g/9zdn//bG95/25wd/9ucHf/c3V8/3Byev9xdH7/dnmC/3R3gP97fof/eXuB/25xe/95fIb/ +d3l//3l7gf95e4H/bnB3/3d5f/93eoP/c3V8/3l7gf93eoP/c3Z//3l8hv93eoP/dXiB/3N1fP9zdXz/ +c3Z//3V4gf95fIb/cHN9/2xvef91d33/dXd9/3Byef93eX//eHl9/3Byef9ucHf/Z2p0/2xvef9ucXv/ +dXd9/3Z4fP91d33/a211/2ttdv9zdXv/a210/25xe/9tb3P/bnF7/25xe/9tb3f/cXR9/3J0ff9sb3n/ +c3Z//3V3ff9ucXv/am13/25xe/9sb3n/amxz/2Zpc/9sb3n/dXd9/2ptd/9kZ3H/bG95/3Byef9nanH/ +c3V8/2Zobv9sbnX/bG51/2ptd/9nanT/ZGdx/2Zpc/9maXP/ZGdx/2Zpc/9wcnn/Z2p0/2Jlbv9maXP/ +Z2p0/3Bzff9sb3n/bnF7/2psc/9qbXf/bnF7/3V3ff9wc33/am13/25wd/9qbHP/dnh8/25wd/9wcnn/ +bnF7/3Bzff9zdXz/cHN9/3N1fP95e4H/bnB3/3V3ff9ucXv/bG95/2xvef9ucXv/bG51/25wd/91d33/ +bnB3/25xe/9ucXv/am13/25xe/9sbnX/Z2p0/2xudf9nanT/Z2p0/2dqdP9sb3n/YmVu/2dqcf9nanH/ +ZGdx/2Jlbv9ucXv/Z2p0/2Zpc/9sbnX/c3V8/2xudf9sb3n/bG51/2xvef9kZ3H/c3V8/2xudf9sb3n/ +c3Z//2xvef9vcXX/bnB3/2psc/91d33/bnB3/2xudf9qbXf/cHJ5/2ptd/9wc33/bG51/2xudf9ucHf/ +bG51/25xe/9ucXv/am13/3N1fP9wc33/Zmlz/2dqcf9qbXf/Z2p0/2psc/9maXP/am13/2ptd/9sbnX/ +bG51/3Z4fP9sbnX/bnB3/2dqdP9ucHf/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn// +am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/ +c3V8/2psc/9wcnn/am13/2dqdP9qbHP/bnB3/3d5f/9tb3P/bG51/3V3ff9+f4P/bnB3/3Byef9ucHf/ +b3F1/3V3ff9wc33/bG95/3Bzff9zdn//cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/3l7gf95e4H/ +g4WM/36Ahv97fYP/foCG/36Ahv9zdn//dXiB/3V4gf9wcnn/bnB3/3h5ff91d33/a254/3x+hf9ydX7/ +b3J6/3R3gP95e4H/cHN9/2xvef9vcXX/bnF7/3N2f/9tcHr/b3F4/3Fzev9sbnX/dnh8/3V3ff9nanT/ +dXd9/25xe/9zdXz/bnF7/2dqdP9wc33/cHN9/2xudf9sb3n/amxz/2dqcf9nanT/Z2p0/2ptd/9qbHP/ +Z2px/2xvef9nanT/c3Z//2Zpc/9kZ3H/Z2p0/2xvef9qbHP/cHJ5/3Byef9maXP/bG51/2dqdP9qbHP/ +am13/3Bzff9wc33/dnh//2ttdf9qbXX/cXN6/2ptd/9ucXv/Z2px/2ptd/9rbXf/bnF4/3J1fv91eID/ +bnF6/3l7gf91eIH/bnB3/2Rncf9sb3n/cHJ5/29xdf9qbHP/cHJ5/3Z4fP9nanT/Z2p0/2ptd/91d33/ +b3F1/3d5f/9tb3P/bG51/2xvef9wcnn/bnB3/2ptd/9sb3n/am13/2ptd/9nanT/cHJ5/2dqdP9nanT/ +Z2p0/25xe/91d33/bG95/2xvef9nanH/bG51/2xvef9zdXz/bnF7/2psc/9qbXf/Zmlz/3Bzff9qbXf/ +am13/2xvef9nanT/Z2px/2xudf9nanH/bG95/2dqdP91d33/bG51/2Zpc/9maXP/am13/2Zpc/9qbXf/ +cHJ5/2dqdP9sb3n/cHN9/2dqdP9qbXf/Z2px/2dqdP9qbXf/Zmlz/2dqdP9nanT/am13/2Rncf9qbHP/ +amxz/2psc/9kZ3H/cHN9/2ptd/9qbHP/am13/3Byef9qbHP/am13/2psc/9maXP/YGNs/25xe/9nanH/ +am13/3Bzff9sbnX/am13/2psc/9nanT/bnF7/2ptd/9zdn//c3Z//3l8hv93eX//fn+D/3N2f/9zdn// +eXyG/3V3ff93eoP/d3qD/25xe/95e4H/c3Z//2ptd/9ucHf/dXiB/3N2f/9wc33/bG95/25xe/9sb3n/ +bnB3/3Byef97fYP/c3Z//25xe/9nanT/bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/ +bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/ +cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/bG51/25xe/91d33/bW9z/2xudf9wcnn/fX6B/2xvef9qbXf/ +Z2p0/2dqdP9ucXv/bnF7/2ptd/9sb3n/bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9qbXf/ +Z2p0/3Byef9wcnn/ZGdx/25wd/9sb3n/Zmhu/2xvef9maXP/cHJ5/21vc/91d33/dXd9/2xudf93eYD/ +b3J5/2ptd/9sb3n/bnF7/2xvef9tb3P/bW9z/25wd/9zdXz/bnB3/3Bze/9zdn3/b3F1/3V3ff91d33/ +Z2px/3d5f/9ucXv/dnh8/3Byef9ucHf/dnh8/3N1fP9sb3n/bnF7/2xvef9qbHP/bnF7/25xe/9sbnX/ +b3F1/25wd/9zdn//bnB3/3t9g/9zdXz/bnB3/3V3ff9zdn//bnF7/3V4gf91d33/cHN9/25wd/9ucHf/ +b3F1/2xudf9wcnn/dXd9/3h5ff9ucHf/bnF6/3V2fP9tb3T/cHN9/25wd/9wc33/cHJ5/29xeP9xdHz/ +cnR6/2xudf9zdXz/bnF7/2ptd/9kZ3H/bG95/25xe/9ucHf/bG95/3Bzff95e4H/bnF7/25wd/9sb3n/ +dnh8/2xudf93eX//bG51/2xudf9qbXf/am13/2xudf9maXP/am13/2ptd/9qbXf/am13/3N1fP9qbXf/ +Zmlz/2psc/91d33/dnh8/3N1fP91d33/bG51/2dqcf9ucXv/cHN9/3Byef9sbnX/bnB3/2ptd/91d33/ +bnB3/3V3ff9sb3n/cHN9/25wd/9ucHf/am13/25wd/9ucHf/d3l//29xdf9sbnX/bG51/2ptd/9wc33/ +cHN9/3Bzff9sb3n/bG51/3Bzff9qbXf/bG95/2xudf9nanT/bG95/2xudf9nanH/Z2p0/2ptd/9nanT/ +Z2p0/2dqdP9sbnX/Z2p0/25xe/9qbXf/amxz/3Bzff93eX//bnB3/3Byef9sb3n/c3Z//2ptd/9zdn// +cHJ5/3Bzff97fYP/c3Z//3d6g/9zdn//dXd9/3d6g/9zdn//bnB3/3Byef9ucHf/cHJ5/3N1fP9ucHf/ +b3F1/3N1fP9tb3P/cHJ5/3N1fP9sbnX/bnF7/3N1fP9qbXf/bnB3/3V3ff9zdXz/c3V8/25wd/9vcXX/ +cHJ5/2xudf9qbXf/c3V8/25wd/9ucHf/Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/ +cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/ +bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/bG51/2psc/9wcnn/dnh8/21vc/9sbnX/cHJ5/3l8hv9ucHf/ +dXd9/25wd/9sb3n/dXd9/3V3ff9sb3n/bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/ +d3qD/3V4gf93eoP/d3qD/3V4gf93eoP/eXuB/3Byef91eIH/c3Z//3Byef9vcXX/eXuB/3Z4fP9tb3b/ +d3qD/3N1fP9ucHf/bnF7/3N1fP9zdXz/b3F1/29xdf9vcXX/cHJ5/25wd/9tb3j/b3J5/21vc/91d33/ +dXd9/2dqdP91eIH/bnF7/3N1fP9nanT/Zmlz/25wd/9qbXf/Z2p0/2dqdP9maXP/ZGZs/2Zobv9nanT/ +Zmhu/2Rncf9maG7/Zmlz/2Rncf9wc33/Zmlz/2Rncf9sb3n/bG95/2psc/91d33/cHN9/25xe/9qbXf/ +am13/2psc/9sbnX/bG95/3V3ff9ydHz/bG5z/21vdP9wc3z/amx0/2xvef9qbXf/am13/2ptd/9rbXT/ +a252/21wef9sbnX/dnh8/3Byef9ucHf/amxz/25wd/9ucXv/bnB3/2xudf9ucHf/c3V8/2Zpc/9nanH/ +bG51/3N1fP9ucHf/d3l//2xudf9vcXX/bG51/2xvef9wc33/bnF7/3l7gf93eoP/cHN9/25xe/94eX3/ +bnB3/2xudf9qbHP/dXd9/3Z4fP91d33/eHl9/25wd/9vcXX/c3V8/3Byef9zdXz/bnB3/25wd/9sbnX/ +eHl9/29xdf91d33/bG95/2ptd/9qbXf/bG51/2dqdP9sb3n/ZGdx/3d5f/9qbXf/ZGdx/2Rncf9sb3n/ +cHJ5/3Byef9wcnn/cHJ5/25xe/9zdn//bnF7/3Bzff9ucHf/b3F1/3N1fP9sbnX/bG51/2xvef9zdXz/ +b3F1/3Byef9sbnX/b3F1/2xudf9zdXz/bnF7/3Bzff91eIH/e32D/3N2f/9zdn//c3V8/3d6g/9qbXf/ +cHN9/25wd/9ucHf/eHl9/3N1fP9ucHf/bnB3/25wd/9sb3n/cHJ5/2ptd/9sb3n/bG95/3Byef9zdXz/ +am13/2xudf9wcnn/bW9z/25wd/9sb3n/amxz/3V3ff9zdXz/bG51/2xudf9zdXz/cHJ5/2xvef9tb3P/ +am13/3N1fP9ucHf/bnB3/3V4gf9ucXv/c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/ +cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/ +bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/cHJ5/2xudf9ucHf/cHJ5/3h5ff9vcXX/bnB3/3Bzff97fof/ +c3Z//3V4gf9ucHf/bnF7/3l7gf91eIH/am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/ +c3V8/3N1fP9zdXz/dnh8/3Z4fP9zdXz/dXd9/3N1fP9sbnX/bnF7/2ptd/9wc33/bG95/3d6g/91d33/ +bnB3/3l6gP9wc3v/bW91/3Bzff9ucXv/bnF7/2dqdP9sb3n/am13/3Byef9ucHj/bW94/3Byef9ucHf/ +dXd9/3V3ff9sb3n/d3qD/3V4gf97fYP/c3Z//2xvef91eIH/c3Z//3N2f/9zdn//dXiB/2xvef9wc33/ +dXd9/25wd/9vcXX/cHJ5/3N1fP9sbnX/e32D/25wd/9qbXf/dXd9/3V3ff9tb3P/dXd9/25xe/9sb3n/ +Zmlz/2Rncf9maG7/amxz/2dqdP9ucHf/am13/2Zobv9pa3H/cHN5/21vdP9zdXz/bG51/3Byef9wcnn/ +a211/2tudv9ucHn/aGt0/3V3ff9sb3n/Z2p0/2Zpc/9ucXv/am13/2xudf9maXP/bG95/3Bzff9kZ3H/ +YmVu/2xudf9zdXz/bG51/3V3ff9ucHf/bnB3/25xe/9ucHf/bnB3/2psc/92eHz/cHJ5/25wd/9sb3n/ +d3l//3Byef9sbnX/bG51/3Byef92eHz/c3V8/3h5ff9ucXv/bnB3/3V4gf91eIH/dXiB/3Bzff9zdn// +cHJ5/3d5f/9sb3n/dXd9/3Bzff9wcnn/cHJ5/21vc/9ucHf/cHN9/2ptd/93eoP/bnB3/2psc/9nanH/ +b3F1/3N1fP9ucHf/cHJ5/3Byef9ucHf/dXd9/25xe/9ucXv/amxz/21vc/9wc33/bG51/29xdf9wcnn/ +cHJ5/25wd/9ucHf/bnB3/21vc/9qbXf/bG95/25wd/9ucHf/c3V8/3h5ff9sbnX/c3V8/2dqdP91d33/ +ZGdx/25xe/9qbXf/bnB3/3h5ff9wcnn/bG51/21vc/9qbXf/am13/2xudf9sbnX/bG95/2xvef9ucXv/ +c3V8/2dqdP9sbnX/am13/2dqcf9nanT/Z2p0/2Zobv9qbXf/am13/2Rncf9qbHP/am13/2xvef9sb3n/ +Z2px/2Zpc/9wc33/am13/2xudf91d33/cHJ5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/ +cHN9/3Byef9wc33/c3Z//25xe/9ucHf/bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn// +d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/d3qD/3d6g/9wc33/c3V8/3N1fP95fIb/cHN9/3Bzff9zdn// +e36H/3Bzff9zdn//bG95/2xudf91d33/c3Z//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/ +cHJ5/25xe/9zdn//dXiB/3d5f/95e4H/d3qD/3d6g/93eX//cHJ5/3N2f/93eoP/cHN9/2ptd/91d33/ +cHN9/2hrcv91eID/b3J7/2xueP9zdn7/cHN9/3Byef9ucHf/bnF7/2xvef9ucXv/cHJ6/21wef9tb3f/ +bG51/3N1fP9wc33/Zmlz/3V3ff9nanT/cHN9/25xe/9nanT/c3V8/25xe/9sb3n/bnF7/25xe/9qbXf/ +bG51/25xe/9nanH/Zmhu/2dqcf9nanT/ZGdx/3V3ff9qbHP/Z2px/25wd/9sb3n/Zmhu/25xe/9qbXf/ +bnF7/2Zpc/9qbHP/amxz/2xvef9sb3n/cHJ5/3Byef9oa3X/bG51/29ye/9tcHr/c3Z//25wd/9ucXv/ +dHZ9/21vd/9tb3b/b3F6/2xudf92eHz/dXd9/25wd/9maXP/cHJ5/2ptd/9sbnX/bG51/25wd/9zdXz/ +am13/2RmbP9tb3P/dXd9/2xudf92eHz/bW9z/2xudf9zdXz/bG51/2xudf9qbHP/dXd9/2xudf9ucHf/ +bnF7/3V4gf9wc33/am13/2dqdP9zdn//dXd9/3Bzff92eHz/bnF7/2ptd/9zdn//c3V8/3Byef9sbnX/ +cHJ5/2xudf91d33/am13/3Bzff9zdXz/cHJ5/3Byef9sbnX/amxz/25wd/9nanT/dXd9/2dqdP9kZ3H/ +ZGdx/2dqcf9qbXf/amxz/25xe/9qbHP/am13/3N1fP9sb3n/bnF7/21vc/9sbnX/bnF7/2xudf9sbnX/ +bG95/2xvef9qbXf/bG51/2xudf9vcXX/b3F1/25wd/9ucXv/bnF7/3V4gf95e4H/bnF7/3d5f/9wcnn/ +d3l//2dqdP9zdn//cHJ5/3Byef93eX//bnF7/2xvef9qbXf/b3F1/29xdf9vcXX/bG51/29xdf9sbnX/ +c3Z//3N2f/9ucXv/bnB3/3Bzff9zdn//c3Z//3N2f/9ucXv/dXiB/3V4gf9sb3n/bnB3/3Bzff9wc33/ +cHN9/3Byef9wcnn/d3qD/25xe/9sb3n/eHl9/3Byef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/ +ZGdx/2xudf9nanT/bG51/2xudf9sbnX/Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX// +Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/bnB3/3N1fP9zdn//Z2p0/29xdf9vcXX/dXd9/2xudf9ucHf/ +dXd9/3t9g/9ucHf/cHJ5/2ptd/9nanT/bnF7/3Bzff9maXP/bG51/3Bzff9nanT/am13/2ptd/9sb3n/ +am13/2psc/9nanH/am13/2xvef9wc33/cHJ5/2xvef9wc33/bnF7/2psc/9sb3n/bG95/3Bzff9qbXf/ +d3l//3d5f/9oa3L/d3l//3N1e/9sb3n/b3J8/3d6g/91eIH/cHN9/3d6g/9zdn//dnmC/3J1fP9rbnf/ +aWx2/2dpb/9qbXf/Z2p0/2Rncf9ucHf/Zmlz/2dqdP9nanT/ZGdx/25wd/9kZ3H/Zmhu/2dqdP9qbXf/ +ZGdx/2Rncf9nanT/Z2p0/2dqcf9nanH/Z2p0/2Jlbv9wcnn/amxz/2psc/9zdXz/bnF7/2xudf92eHz/ +bnF7/2xvef9maXP/amxz/2psc/9ucXv/bG95/3Z4fP91d33/bG95/2xveP9ydH3/cXN7/3V4gf9wcnn/ +c3Z//3R3gP9ucHf/bG93/21wef9oa3X/dXd9/25xe/9sbnX/bG51/3Byef9sb3n/bnF7/3N1fP9wc33/ +c3Z//2xvef9nanH/bnB3/3d5f/9sb3n/d3qD/2xvef9wc33/dXiB/25wd/9sb3n/bG51/3V3ff9ucHf/ +bG51/2xvef91d33/bnF7/2ptd/9maXP/c3V8/3N1fP9wcnn/dnh8/2xudf9sbnX/c3V8/25xe/9wc33/ +bnF7/3Bzff9zdXz/dXiB/25xe/91eIH/dXiB/3Bzff91eIH/dXiB/3Bzff97fYP/c3Z//36Biv91d33/ +am13/2xvef9ucXv/cHN9/2xvef9zdXz/bnB3/3Bzff91d33/cHJ5/3Bzff9qbHP/amxz/25xe/9qbHP/ +Z2px/2xvef9sb3n/bG51/2xudf9nanT/bG51/2psc/9sb3n/am13/2xvef91d33/dnh8/2ptd/9zdXz/ +bG51/25xe/9kZ3H/bG95/2xudf9sbnX/dXd9/2xvef9qbXf/am13/29xdf9ucHf/b3F1/2xudf9ucHf/ +b3F1/3N1fP9zdXz/cHJ5/3N1fP92eHz/cHJ5/3Byef9zdXz/bG51/3V3ff9zdXz/amxz/21vc/9ucXv/ +bG95/2xvef9nanT/Z2px/2ptd/9nanH/Z2px/25xe/9nanT/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/ +ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/ +dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3N1fP9qbXf/ +bG51/3V3ff97fYP/b3F1/3N1fP9sbnX/bG51/25wd/9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn// +c3V8/21vc/9ucHf/bG51/3Byef9zdXz/dnh8/3Z4fP9zdXz/dnh8/3N1fP9ucHf/c3V8/3Byef9zdXz/ +am13/3h5ff93eX//b3F1/3p9g/9vcnr/bW92/25xe/9zdXz/cHN9/2xudf9sb3n/am13/2xudf9qbXb/ +a254/2tud/9sb3n/c3V8/3Byef9vcXX/d3l//3V3ff9zdXz/cHJ5/29xdf92eHz/cHJ5/25wd/9wcnn/ +cHN9/25wd/9ucHf/c3V8/3N1fP9tb3P/bG51/2xvef9nanT/c3V8/2xudf9sb3n/dXd9/3Byef9ucHf/ +d3l//3Byef9zdXz/amxz/25wd/9sb3n/dXd9/3N2f/93eX//dXd9/3J1fv9sb3j/bW94/2psc/9wc33/ +amxz/2ptd/9sb3n/aGtz/2ttdf9vcnz/bW92/3h6gP9zdn//c3V8/25wd/9zdXz/Zmlz/2Rncf9gY2z/ +Zmhu/2Zpc/9gY2z/XWBq/2Rncf9sb3n/ZGdx/3Byef9kZ3H/am13/2dqdP9iZW7/Zmhu/2Jlbv9nanT/ +amxz/2psc/9sbnX/c3V8/25xe/9qbXf/Z2p0/2xvef9ucXv/c3V8/3V3ff9sbnX/bnB3/3N1fP9sb3n/ +cHN9/25xe/9wc33/cHJ5/3V4gf9zdXz/c3Z//3V4gf9zdXz/c3Z//3N2f/9ucXv/d3qD/25wd/95e4H/ +am13/2ptd/9qbXf/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/eXyG/3N2f/91eIH/bnB3/25wd/92eHz/ +bnB3/29xdf91d33/c3Z//25xe/9wcnn/am13/2xvef9ucHf/bG95/2xvef9ucXv/dXd9/3Z4fP9vcXX/ +dnh8/2ptd/9ucXv/YGJo/2psc/9qbXf/bG51/3d5f/9tb3P/bW9z/2xudf9vcXX/bG51/2xudf9ucHf/ +bG51/29xdf91d33/dXd9/3N1fP9sbnX/dXd9/25xe/9qbXf/cHN9/2psc/9sb3n/Z2p0/2Rncf9maG7/ +ZGdx/2Zpc/9nanT/Zmhu/2dqcf9sb3n/am13/21vc/92eHz/cHJ5/2xudf9sbnX/Zmlz/2psc/9nanT/ +am13/2xudf9maXP/bnF7/2dqdP9tb3P/cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/ +bG51/3Byef9iZW7/am13/2ptd/9sb3n/Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/ +Z2p0/2Zpc/9sb3n/c3Z//2ptd/9ucXv/am13/2psc/9ucXv/cHN9/2dqdP9sb3n/bnB3/25wd/9wcnn/ +cHJ5/3N1fP9sbnX/am13/2ptd/9ucXv/c3V8/3h5ff9zdXz/cHJ5/3Bzff9ucXv/bnB3/3N1fP9ucXv/ +d3l//2xvef92eHz/eXuB/2xudf96fIP/bnF5/2xudf9sb3n/c3V8/25xe/9nanT/Z2p0/2xudf9sbnX/ +bW93/21veP9vcXn/am13/3Byef9wcnn/am13/3V4gf9wc33/c3V8/2xvef9sbnX/c3V8/3Byef9wcnn/ +cHJ5/3V3ff9wcnn/bnB3/25wd/9sb3n/bG95/2ptd/9nanT/Z2p0/3Bzff9sbnX/amxz/3N2f/9sb3n/ +Z2p0/25xe/9qbXf/bnF7/2dqcf9tb3P/bG51/3h5ff9wc33/c3Z//3d5f/9ucXv/a251/2lsdv9nanT/ +bnF7/2psc/9qbXf/bnF7/21vd/9ucXv/cHN8/2xudf93eX//cHJ5/21vc/9tb3P/c3V8/3N1fP9wcnn/ +bG95/2xvef9zdn//am13/2dqdP9wc33/eXuB/3Bzff97fYP/c3V8/3N2f/9zdn//bG95/2xvef9sbnX/ +c3V8/25wd/9ucHf/bG51/3V3ff9ucXv/bG51/2psc/9wc33/cHN9/3N1fP93eoP/bnB3/29xdf9wc33/ +bG95/2ptd/9qbHP/amxz/2Zpc/9sb3n/bG51/2xvef9ucXv/am13/2xvef9qbXf/bG51/3V3ff9sbnX/ +d3l//2ptd/9maXP/Zmlz/2ptd/9qbXf/Zmlz/2psc/9maG7/Z2p0/3Byef9qbHP/bG95/2dqcf9nanT/ +bG95/2Jlbv9gY2z/Zmlz/2Zpc/9maG7/Zmhu/2dqdP9kZ3H/Z2px/2dqcf9qbXf/am13/3Bzff9wc33/ +bG51/3N1fP9sbnX/c3V8/2Vmav9ucHf/bG51/2xudf95e4H/b3F1/29xdf9qbHP/bW9z/21vc/9ucXv/ +bnB3/3Byef9ucHf/d3l//3V4gf95e4H/dXiB/3l7gf9wc33/dXiB/3d6g/9wc33/eXuB/3l7gf9ucXv/ +cHJ5/3Bzff9ucXv/cHN9/25wd/9ucHf/c3Z//25xe/9ucXv/eXuB/3V4gf9wc33/cHJ5/2xvef9wc33/ +c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/ +e36H/3N2f/97fYP/cHN9/3t9g/9zdn//c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/ +dXd9/2xudf9ucHf/cHN9/3t9g/9ucXv/cHN9/25wd/9sbnX/bnF7/25xe/9qbHP/bG51/25wd/9ucHf/ +bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/cHN9/3N2f/93eoP/c3Z//3V4gf91eIH/cHN9/25xe/9wc33/ +cHJ5/3Z4fP9wcnn/d3l//3t+h/9ucXv/fX+G/3Fze/9rbnf/cHJ5/3N1fP9zdXz/bG95/2ptd/9qbHP/ +aGpx/2ptdP9sb3n/cnV+/21wev91eIH/c3Z//3Byef9/gYf/d3qD/3l7gf9zdn//cHN9/3V4gf9zdn// +c3Z//3t9g/93eoP/eXuB/3V4gf9zdn//dXiB/3N2f/9sb3n/bnF7/2xvef95e4H/cHN9/3N2f/95fIb/ +cHN9/29xdf9wc33/bG95/3N1fP9maXP/bW9z/3Byef92eHz/dnh8/3V4gf94eX3/cnR7/21veP9vcXj/ +a21z/3Z4fP9sbnX/bnF7/2xvef9rbnX/b3J6/3F0ff9qbXf/dXiB/3N2f/9sb3n/cHJ5/3Bzff9zdn// +cHN9/2xvef9ucHf/dXd9/2psc/9qbHP/cHJ5/3N1fP9vcXX/dnh8/25wd/9wcnn/c3V8/2ptd/9wcnn/ +cHJ5/3d6g/9wc33/bnF7/2xvef91d33/c3V8/21vc/9tb3P/dXd9/3Bzff9zdXz/c3Z//2xudf9nanT/ +bnF7/2ptd/9qbXf/Z2p0/2psc/9qbHP/bG95/2xudf9wc33/bnF7/2ptd/9ucXv/bG51/2dqdP9ucXv/ +Zmlz/3V4gf9qbXf/Zmlz/2psc/9tb3P/bG51/2psc/9sbnX/am13/25xe/91d33/b3F1/3Byef9vcXX/ +cHJ5/3Z4fP9ucHf/am13/3Byef9wcnn/bG51/2ptd/9sbnX/am13/2ptd/9nanT/cHN9/25wd/91d33/ +dXd9/2xudf91d33/bG51/3V3ff9nanH/cHJ5/2xvef9sb3n/eXuB/25wd/9ucHf/Z2px/21vc/9tb3P/ +c3V8/2psc/9tb3P/bG51/3V3ff9wcnn/dnh8/3Bzff92eHz/cHJ5/25xe/91eIH/bnF7/3V4gf9wc33/ +am13/25wd/9wc33/bnF7/3Bzff9vcXX/bnB3/3V4gf9ucXv/cHN9/3d5f/9wc33/cHJ5/2xvef9qbXf/ +cHN9/25xe/9ucXv/c3V8/2ptd/9zdn//bnB3/2xudf91d33/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/ +cHJ5/3V3ff9tb3P/dXd9/2dqdP9zdXz/am13/2xvef9sb3n/am13/2Rncf9sb3n/am13/2Jlbv9qbHP/ +am13/3N1fP9qbHP/bG51/3Byef9+gIb/cHJ5/3Byef9sbnX/bG51/25wd/9wc33/Zmlz/2ptd/9qbXf/ +am13/2ptd/9ucXv/dXd9/3Byef9vcXX/b3F1/3N1fP9zdXz/eXuB/25wd/9zdXz/cHJ5/2xvef9sb3n/ +cHJ5/2ptd/91d33/bG51/3V3ff95e4H/b3F1/36Bif9ydHv/bG52/3N1fP9zdXz/dnh8/3V3ff9ucHf/ +bG51/25wd/9rbnj/cXN6/3V3gP9wcnn/cHN9/3N2f/9zdXz/f4GH/25xe/95e4H/cHN9/3N1fP95fIb/ +d3qD/3Bzff93eoP/cHN9/3N2f/9ucXv/bnF7/3Bzff9wc33/bnF7/3Bzff9wcnn/d3qD/3Bzff9wc33/ +d3qD/3V4gf9wc33/dXiB/3V4gf91eIH/am13/3Bzff9wc33/eXuB/3N2f/95e4H/eXuB/3Z4gf9vcnz/ +b3J4/21wev91d33/bnB3/3Bzff91eIH/b3J5/3Bzff9xc3r/bnB3/3d5f/9zdn//bG95/2xvef9ucXv/ +dXd9/3Byef9qbXf/bW9z/3V3ff9nanH/bG51/25xe/9ucXv/bW9z/3Z4fP9sbnX/bG95/25xe/9nanT/ +bG51/2ptd/9wc33/bG51/25wd/9ucHf/cHJ5/25xe/9sbnX/bG51/3V3ff9zdXz/dXd9/3l7gf9wcnn/ +bnB3/3V4gf9wc33/cHN9/2xvef9ucHf/am13/25xe/9sb3n/c3Z//3N2f/9sb3n/bnB3/25wd/9sbnX/ +c3V8/2xudf97fYP/bnB3/2xudf9qbXf/am13/25wd/9nanT/am13/2dqdP9sb3n/dXd9/2psc/9qbXf/ +Z2p0/2xudf91d33/bG51/2dqdP9wcnn/cHN9/2xudf9qbHP/am13/2ptd/9sb3n/Z2p0/2xvef9nanT/ +bG95/2xvef9maXP/am13/2psc/9ucXv/YmVu/2xudf9nanT/am13/3V3ff9qbXf/am13/2Rncf9sbnX/ +am13/2ptd/9ucHf/bnB3/2ptd/91d33/c3Z//3V3ff9wc33/dXd9/3Bzff9wc33/c3Z//25xe/91eIH/ +cHN9/2xudf9ucHf/bnB3/25wd/9wcnn/bG51/2xudf9wcnn/bG51/3Byef94eX3/bG51/2xudf9nanT/ +ZGdx/2xudf9sb3n/cHJ5/3Byef9tb3P/bnF7/2psc/9qbHP/cHN9/25xe/9sbnX/am13/25xe/9ucXv/ +am13/2xvef9wc33/bW9z/3V3ff9nanH/c3V8/25xe/9wcnn/c3V8/3N1fP9qbHP/bnB3/25xe/9qbHP/ +amxz/2psc/9ucXv/Zmlz/2psc/9sb3n/dXiB/2ptd/9ucXv/am13/2xudf9sbnX/c3V8/2Zpc/9qbXf/ +bnB3/25wd/9zdXz/c3V8/3N1fP9sb3n/bG51/2ptd/9wcnn/cHJ5/3l7gf9ucHf/dXd9/25wd/9zdXz/ +bG51/25xe/9sbnX/c3V8/2ptd/92eHz/dXiB/2xudf97fYT/cXN6/2dqc/9qbXf/am13/3Bzff91d33/ +bnB3/2xvef9sb3n/bG94/21wd/91d3z/bG51/3Byef9ucHf/bG51/3l7gf9qbXf/dXd9/2xudf9nanH/ +d3l//2ptd/9sb3n/bnF7/2ptd/9ucXv/amxz/2xudf9qbXf/bG95/3Byef9ucHf/bG51/3V3ff9sb3n/ +bnB3/3d6g/9wc33/bnF7/3N2f/9ucXv/bnF7/2dqdP9sb3n/bnF7/3l7gf91eIH/d3qD/3Z4fP9ydHv/ +a252/2xudP9qbHP/c3V8/21vc/9wcnn/cHJ5/25wd/9sbnX/a212/2Nmb/9sb3n/Z2p0/2Zpc/9sbnX/ +bG95/3V3ff9ucXv/bG95/29xdf93eX//Zmlz/25wd/9wcnn/c3V8/3Byef97fYP/c3V8/3Bzff91eIH/ +bG95/25xe/9wcnn/dXiB/3Bzff9wcnn/bnB3/25xe/91d33/bnB3/2xudf91d33/dXd9/3N1fP94eX3/ +bnB3/29xdf92eHz/cHJ5/3Byef9qbHP/b3F1/2psc/9ucHf/bnB3/3N2f/91eIH/cHN9/3Bzff9ucHf/ +cHJ5/3Bzff9sb3n/dXiB/25wd/9ucHf/b3F1/25wd/9wcnn/bG51/3Byef9sbnX/bnB3/3Z4fP9tb3P/ +bG51/2psc/9qbXf/d3l//2xudf9kZ3H/am13/25xe/9qbXf/Z2px/2dqcf9maXP/bG95/2dqdP9ucXv/ +bnF7/25xe/9wc33/bG51/25xe/9tb3P/dnh8/2Zpc/9ucXv/am13/2ptd/93eX//bG95/2xvef9qbHP/ +bnB3/29xdf9zdXz/bG51/2ptd/9qbXf/cHN9/25wd/9wc33/bnF7/3N1fP9wcnn/bnB3/25xe/9qbXf/ +bG95/25xe/9nanT/am13/2ptd/9qbHP/Z2p0/2psc/9nanT/bG95/2Zpc/9sb3n/dnh8/21vc/9sbnX/ +bG51/2xudf9ucHf/bnB3/3Byef9wc33/bnB3/3V3ff9ucHf/bnB3/3V4gf91eIH/cHN9/25xe/91eIH/ +d3qD/3Byef91eIH/c3Z//25wd/92eHz/amxz/3Z4fP9wcnn/c3V8/3N1fP9zdXz/amxz/25wd/9wcnn/ +bG51/2ptd/9sbnX/c3V8/2psc/9vcXX/cHJ5/3V3ff9wcnn/cHJ5/25wd/9ucHf/bnB3/3V3ff9nanH/ +bG95/2xvef9qbXf/c3Z//3N2f/95e4H/dXiB/3Bzff9zdn//dXiB/3d6g/+Bg4r/d3l//35/g/97fYP/ +fn+D/3V3ff95fIb/c3Z//3l7gf9ucHf/dXiB/3V4gf9tcHr/fYCH/3V3fv9wc3v/dXeA/3Bzff97fYP/ +e32D/25xe/9ucHf/cnR7/21wev9tb3f/a254/2Zobv9maXP/Z2px/2dqcf91d33/amxz/2xvef9sbnX/ +Z2px/3Byef9sb3n/bG95/2xvef9sbnX/bnB3/29xdf9vcXX/bnF7/25xe/91eIH/bnF7/25wd/9ucXv/ +cHN9/3Byef95e4H/cHN9/3N2f/91eIH/c3Z//25xe/9sb3n/c3Z//3d6g/97fYP/d3qD/3l8hv95e4H/ +dXiB/3F0fv9ucHf/aGt0/2xvef9sbnX/bG95/2hrdf9rbXf/a254/3F0fP9ucXv/en2D/3l7gf9wc33/ +cHN9/3Bzff9wc33/bnB3/29xdf9vcXX/dXd9/2Zobv9tb3P/bnF7/25xe/9sbnX/dXd9/25wd/9wcnn/ +cHJ5/2dqdP9qbXf/bW9z/3Z4fP9sbnX/amxz/2dqdP9qbXf/bnF7/2Zpc/9maXP/cHN9/3N1fP9sb3n/ +dXd9/2psc/9maXP/bG95/2xudf9qbHP/Zmlz/2dqdP9maXP/bG51/2dqdP9ucXv/bnF7/2ptd/9qbXf/ +Zmlz/2dqcf9qbXf/Zmlz/3N1fP9nanT/amxz/2psc/9sbnX/am13/2dqdP9maXP/Zmlz/2psc/9zdXz/ +bG51/2xudf9iZW7/Z2p0/3N1fP9qbXf/Zmlz/2ptd/9sb3n/am13/2dqcf9kZ3H/Zmlz/25xe/9nanT/ +am13/2xvef9qbXf/cHN9/2Zpc/9nanT/Z2p0/25xe/9gY2z/Zmlz/2Rncf9iZW7/cHJ5/2xvef9nanT/ +Z2px/2ptd/9qbHP/am13/21vc/9sbnX/Zmlz/3Bzff9nanT/bnF7/2xvef9ucXv/bG95/2ptd/9ucXv/ +bG51/2xvef9sb3n/Zmlz/2dqdP9qbXf/Zmlz/2dqdP9maG7/Zmlz/2ptd/9nanH/am13/3Byef9kZ3H/ +Z2px/2Zobv9iZW7/Zmlz/2xudf9qbXf/am13/2xudf9ucXv/amxz/2psc/9ucXv/bG95/2dqdP9nanH/ +bG95/3Bzff9sbnX/Z2p0/2xvef9qbHP/c3V8/2dqdP91d33/bnB3/3Z4fP92eHz/bnF7/2psc/9sbnX/ +cHJ5/21vc/9wcnn/cHJ5/3V3ff9ucHf/bW9z/3V3ff93eX//bnF7/25xe/9sbnX/bG51/3Byef9wc33/ +Zmhu/25wd/9ucHf/Z2p0/2ptd/9wcnn/c3V8/2xudf9vcXX/bnB3/3Byef9zdXz/eXuB/2xudf91d33/ +dXd9/3V3ff9ucHf/c3V8/25wd/91d33/bnB3/3d6g/91eIH/bnB3/3t9hP9wc33/a212/3Bzff9wc33/ +dXiB/3l7gf9wc33/cHJ5/3N2f/9ucXv/b3F6/3V3ff9tb3P/dXd9/25wd/9ucHf/d3qD/25wd/9zdXz/ +bnB3/21vc/92eHz/bnB3/3Byef9wcnn/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/25wd/9tb3P/ +bG51/2ptd/9qbHP/cHN9/2xvef9qbXf/bnF7/2dqdP9qbHP/YmVu/2Zpc/9qbXf/Z2p0/2Zobv9qbXf/ +Z2pz/2dqc/9pbHP/a21y/2ttdP90dnz/bnB3/2xvef9tcHr/bnF7/2ptd/9maXH/ZWhy/2xvef9sb3n/ +YGNs/2Zobv9kZmz/d3l//3N2f/9ucXv/c3V8/3t+h/9sb3n/c3V8/3V4gf95fIb/eHl9/31+gf9zdXz/ +dXiB/3d6g/9ucXv/cHN9/3Bzff93eX//bnB3/2xvef9ucHf/bG95/3Z4fP9qbXf/bG95/3V3ff94eX3/ +cHJ5/3V3ff9wcnn/am13/3N1fP9tb3P/am13/2Zpc/9nanT/am13/21vc/9sbnX/c3V8/3V3ff9zdn// +c3Z//3Byef9zdXz/eXuB/3Bzff95fIb/c3V8/3N2f/9wc33/c3Z//3V4gf92eHz/e32D/3V3ff9zdn// +eXyG/3N2f/9zdn//bnF7/3V4gf93eoP/bnF7/2ptd/9zdXz/c3V8/3Byef9vcXX/bG51/2xvef91d33/ +bG51/3Byef9ucXv/am13/25xe/9qbHP/am13/2dqdP9ucXv/XWBq/2ptd/9nanT/Zmlz/3N1fP9sb3n/ +am13/2dqdP9sb3n/bG51/25wd/9tb3P/bW9z/2dqcf92eHz/cHJ5/3V3ff9zdXz/cHJ5/3Bzff9wc33/ +c3Z//3Bzff9zdn//c3Z//2xvef9qbHP/bnB3/25wd/9zdXz/bW9z/2xudf9zdXz/b3F1/3N1fP94eX3/ +bnB3/2xudf9vcXX/Z2px/2psc/9wcnn/bnB3/25wd/9ucHf/cHN9/2dqdP9sbnX/cHN9/3N1fP9sb3n/ +amxz/25xe/9ucXv/bG51/2ptd/9ucXv/bG51/3Z4fP9qbHP/dnh8/25xe/9zdn//c3Z//3Bzff9qbHP/ +bnB3/3N1fP9tb3P/bnF7/2ptd/91d33/bnB3/25wd/9wcnn/dnh8/3N1fP9wcnn/bnB3/25wd/9wc33/ +dXiB/2dqdP9wcnn/c3V8/2xvef9wc33/cHN9/3N2f/9ucHf/b3F1/29xdf9zdXz/cHJ5/3l8hv9sb3n/ +dXiB/3N1fP92eHz/bW9z/3Byef9ucHf/dXd9/25wd/95fIb/d3l//21vc/96e4H/b3F5/2Zpcv9sbnX/ +am13/3Byef94eX3/bnB3/25wd/9zdXz/cHJ3/3Fzev91d3v/bW9z/3N1fP9zdXz/b3F1/3t9g/9ucHf/ +cHJ5/25xe/9sbnX/c3V8/2ptd/9sb3n/am13/2ptd/9qbXf/bW9z/2xudf9sbnX/b3F1/3N2f/9ucXv/ +bnB3/2xvef9sb3n/bnB3/3Z4fP9wcnn/bnB3/3Byef9ucHf/bnB3/2psc/9wcnn/c3Z//3V4gf9wc33/ +e32D/3N2f/90d4D/bnF7/25xef9rbnf/c3Z//3Byef9wcnn/bnF7/3N2fv9xdHv/bG95/2hrdf9wc33/ +bG95/2Rncf9qbXf/bG51/3h5ff9zdXz/cHJ5/25wd/93eoP/am13/25xe/9ucXv/cHN9/2xvef9zdn// +bG95/25xe/9zdXz/bG51/25wd/9wcnn/d3l//2dqdP9iZW7/Zmlz/2ptd/9zdXz/am13/2xudf9wcnn/ +d3l//25wd/91d33/bnB3/2ptd/91d33/b3F1/2psc/9nanH/b3F1/2xudf9vcXX/b3F1/3Byef91d33/ +bnB3/25wd/9sbnX/bW9z/3N1fP9nanT/d3l//2xudf9qbXf/amxz/2psc/9nanH/Zmhu/2dqdP9kZ3H/ +YmVu/2xudf9gY2z/Zmhu/2BjbP9maXP/bG51/2Rncf9iZW7/Zmlz/2Rncf9maXP/Zmhu/2Rncf9nanT/ +bnF7/2dqdP9sb3n/bnF7/2xvef9ucXv/Z2p0/25xe/9ucXv/c3V8/2Zobv9wcnn/bnB3/2Zpc/91d33/ +bnF7/25wd/9qbHP/bnB3/2ptd/9sb3n/amxz/2dqdP9iZW7/bnF7/2dqdP9zdXz/bnF7/2xvef9wc33/ +bG95/2xvef9sbnX/am13/2ptd/9maXP/YmVu/2xvef9ucHf/c3V8/21vc/9sbnX/cHJ5/2ptd/9wc33/ +dXd9/25wd/9wcnn/bW9z/2Zobv9qbXf/dXiB/25xe/9sb3n/bG95/3N2f/9wcnn/cHN9/3V3ff91d33/ +bnF7/2xvef91d33/bnF7/2xudf9qbXf/am13/2xudf91d33/am13/3N1fP9ucXv/bG95/2xvef9qbXf/ +ZGdx/2dqcf9maXP/Z2p0/2xvef9qbXf/Z2p0/2dqcf9qbHP/bG95/3N1fP9wc33/bG95/2ptd/9tb3P/ +bnB3/3Bzff9maG7/bG51/2xudf9sbnX/bnF7/25xe/91eIH/cHJ5/3N1fP9ucHf/dXiB/3N2f/95e4H/ +c3Z//3d6g/9wc33/eXuB/25xe/9wcnn/c3Z//3Z4fP9ucHf/eXuB/3d5f/9wcnn/fH2C/3F0fP9wcnz/ +c3Z//3N2f/93eoP/eXyG/3Bzff91d33/eHuF/3N1e/9ydHn/cHN9/2tud/9qbXf/am13/2dqcf9zdn// +bG51/25xe/9ucXv/bG51/3N1fP9sb3n/bG95/2xudf9vcXX/bG95/25wd/9sb3n/bnF7/25wd/9zdn// +bG95/25wd/9ucHf/cHJ5/29xdf92eHz/bnF7/2xvef9ucXv/cHN9/25xe/9sb3n/c3Z//3N2f/91eIH/ +cHN9/3l7gf9zdn//c3Z//25weP9ucXn/bG51/3Byef9vcXX/bG95/25wd/9zdXz/cXN6/2lsdP9ucHf/ +dnh8/25xe/9nanT/bG51/25wd/92eHz/c3V8/3N1fP9sbnX/dnh8/2xudf9ucHf/bnF7/3N1fP9ucHf/ +dXd9/25wd/9wc33/dXiB/25xe/9sb3n/cHN9/3d6g/9ucHf/bG95/3Byef9wc33/eXuB/25xe/9wcnn/ +cHN9/3V4gf9ucHf/dXd9/25wd/9wcnn/dXiB/25xe/9sb3n/Z2p0/2xvef9qbXf/bnB3/29xdf9ucHf/ +dXd9/25wd/9ucHf/bnB3/25wd/9wc33/am13/3d5f/9ucHf/bnB3/25wd/9sb3n/cHJ5/3N1fP9wc33/ +bnB3/25wd/93eX//bnB3/25wd/9ucHf/dXd9/3h5ff9zdXz/bG51/3Byef9wcnn/cHN9/3Byef9ucHf/ +bnB3/3N1fP9sbnX/am13/2xvef9qbXf/c3V8/2Zpc/9ucXv/am13/2xvef9iZW7/am13/2dqdP9kZ3H/ +cHN9/2xvef9sbnX/amxz/3Bzff9sbnX/am13/3N2f/9zdXz/bnF7/3l8hv9zdn//eXyG/3V4gf9zdn// +c3Z//25xe/9wc33/bnB3/3Byef9zdXz/bG51/2dqcf9wcnn/c3V8/3N1fP9sbnX/bG51/2xvef9qbXf/ +c3V8/3V3ff9sb3n/bG95/2ptd/9iZW7/Zmlz/25xe/9qbXf/am13/2Zpc/9sb3n/amxz/2psc/9ucXv/ +bnF7/2dqdP9maXP/bG95/2Zpc/9maG7/ZGdx/2dqcf9kZ3H/bG95/2Jlbv9qbXf/am13/2Zpc/9nanT/ +Zmlz/2BjbP9kZmz/ZGdx/2Rncf9qbXf/Z2px/2Zpc/9kZ3H/Zmhu/2ptd/9wc33/c3V8/2xudf9nanT/ +bG51/3Bzff9sb3n/Zmhu/25wd/9ucHf/bG51/25xe/9wc33/dXd9/29xdf9ucHf/bnB3/3N2f/9ucHf/ +eHl9/3Byef91d33/b3F1/3V3ff9ucHf/bnB3/25wd/9zdXz/am13/3V4gf91d33/bG94/3d5gP9tcHj/ +aGt1/2ptd/9qbXf/bG95/3N1fP9sbnX/am13/25xe/9vcXf/cHJ5/3V3e/9wcnn/cHN9/3V4gf9ucXv/ +e36H/25xe/9wc33/cHN9/25xe/93eX//bnF7/3Byef9ucHf/cHJ5/25xe/9ucHf/bnB3/3Bzff9ucXv/ +c3Z//3Bzff9zdXz/bnF7/2xvef9ucHf/d3l//2xvef9wcnn/am13/2xudf9ucXv/bW9z/3V3ff9ucHf/ +bnF7/25wd/94eX3/cHJ5/3N1fP9qbXX/aGt1/2hrdP9ucXv/bG51/2ptd/9qbXf/bnF7/2tueP9kZ3D/ +ZWhx/3J1fP9ucXv/am13/2xudf9ucHf/c3V8/3N1fP9ucXv/bG95/3Z4fP9qbHP/cHJ5/25wd/9zdXz/ +bnB3/3d5f/9wcnn/bnF7/3Bzff9nanT/bnF7/25xe/93eoP/bnB3/2xvef9nanT/bnB3/3N1fP9qbHP/ +amxz/2ptd/91d33/bG95/25xe/9sbnX/bG51/25xe/9nanH/Z2px/2Zpc/9maXP/YmVu/2dqdP9qbHP/ +bG95/3N1fP9qbHP/am13/2dqdP9maXP/cHN9/2dqdP9zdXz/bG51/2xudf9wc33/bnB3/21vc/9tb3P/ +c3V8/2xvef9sb3n/e36H/25wd/9zdXz/bnB3/3V4gf97fYP/cHN9/3Byef9zdn//c3Z//3d6g/9wcnn/ +bnB3/3Byef95e4H/cHJ5/3V4gf95e4H/c3Z//3l7gf9zdXz/eXyG/3d6g/95fIb/bG95/3V4gf9zdXz/ +cHN9/3l8hv95e4H/dnh8/3N2f/9+gIb/dXiB/3V4gf9tb3P/bW9z/2dqcf92eHz/bnB3/3d6g/9zdXz/ +am13/2xvef9qbXf/Zmlz/2dqcf9nanH/am13/2dqdP9nanT/bG95/3Bzff9ucHf/bW9z/25wd/9tb3P/ +am13/3N1fP91d33/bG95/2ptd/9ucXv/ZWZq/2dqcf9wcnn/bnB3/25wd/9vcXX/c3V8/25wd/9ucXv/ +d3l//3V3ff9ucXv/bG95/3V3ff9wcnn/bnF7/2xvef9ucXv/cHJ5/3V3ff9sb3n/d3l//3d5f/91eIH/ +eXuB/3d6g/9ucXv/c3Z//3t9g/97fYP/fX6B/3Bzff9zdn//c3V8/3Bzff93eoP/dXiB/3V4gf9sb3n/ +Z2p0/25wd/9ucXv/cHJ5/2dqdP9ucXv/bnB3/25wd/9wcnn/cHN9/3Z4fP9sbnX/bG51/21vc/9wc33/ +bG95/3N1fP9ucXv/dXd9/2xudf92eHz/bnF7/3Byef91eIH/c3Z//29xdf95e4H/d3l//3N1fP97foX/ +dXd9/3J0e/9zdn//dXd9/31+gf97fof/dXiB/3V4gf91eIH/dHZ9/3J1f/92eH//bnF7/3N1fP9wcnn/ +bW9z/3l7gf9sbnX/bnB3/3Byef9ucHf/c3V8/25wd/9ucHf/bG51/2ptd/9qbHP/Z2p0/2psc/9qbXf/ +bG51/3N1fP9tb3P/amxz/2ptd/9sb3n/am13/3d5f/9sbnX/bG95/2ptd/9qbXf/cHN9/2ptd/9zdXz/ +cHJ5/25wd/9ucHf/c3V8/2xvef91d37/cHN4/3R2ff9ydX3/eHqA/3V4gf9zdn//b3J8/29yfP9vcnj/ +aGpy/2hrdP9zdXz/bG95/2Zpc/9sb3n/am13/3V3ff9wc33/cHN9/25xe/94eX3/am13/3Bzff91eIH/ +c3Z//2xvef91d33/b3F1/2xvef9ucXv/Z2p0/25xe/9wc33/eXyG/3Byef9ucHf/am13/3N2f/93eoP/ +bnF7/25wd/9wcnn/dnh8/25wd/9ucXv/bW9z/2xudf9zdXz/bG51/2psc/9qbXf/bG95/2ptd/9ucHf/ +bG51/25wd/93eX//am13/25wd/9sbnX/am13/25xe/9nanT/c3V8/2ptd/9sbnX/cHJ5/2xudf9sbnX/ +bG51/3N1fP9tb3P/bnB3/3V3ff9sbnX/am13/2dqdP9ucXv/dXd9/2xvef9nanT/am13/2xudf9wc33/ +amxz/2psc/9nanT/c3V8/2xudf9zdXz/dXd9/3Byef9zdn//bG95/3N2f/9ucXv/cHN9/2dqdP9ucXv/ +bnB3/2dqdP9wc33/bG95/25wd/9ucHf/d3l//3Byef9wcnn/Z2px/2xudf9iZW7/bnF7/2psc/91eIH/ +bG95/2psc/9maXP/Z2p0/2Zobv9maG7/ZGdx/2Zobv9iZW7/YGNs/2Rncf9nanT/ZGdx/2Rncf9kZ3H/ +YGNs/2Rncf9sb3n/bG95/2dqdP9maXP/Z2p0/11fZf9iZW7/bG95/2xvef9qbXf/bG51/2xvef9qbXf/ +bnF7/3Z4fP94eX3/cHJ5/2xudf9zdn//cHN9/3N1fP9ucHf/bnF7/3Bzff93eX//bnB3/3Z4fP92eHz/ +c3V8/3V3ff9wc33/b3F1/29xdf9zdXz/bnB3/3N1fP9tb3P/bG51/2xudf9sbnX/cHN9/2ptd/91d33/ +Z2p0/2Rncf9sbnX/bG95/2xvef9nanT/bG51/2xudf9sbnX/bnB3/3Bzff91d33/b3F1/25wd/9ucHf/ +c3V8/3Byef92eHz/cHJ5/3V3ff9qbHP/c3Z//3Bzff9wcnn/dXiB/3V3ff9sbnX/eHl9/3V3ff9wcnn/ +dXiB/3Byef9sb3j/b3F1/2xvef9zdn//eHl9/2xvef9wcnn/cHN8/21wev9tb3j/cHJ5/2dqcv9maXP/ +Zmlz/2Rncf9wc33/amxz/2psc/9sb3n/am13/2ptd/9qbXf/am13/2xudf9qbHP/bG51/2xudf9nanT/ +am13/2ptd/9ucXv/amxz/2xudf9qbXf/cHN9/2ptd/9zdn//am13/3Bzff9qbXf/bnB3/3V3ff9ucHf/ +dXd9/25wd/9wcnn/cHJ5/3Byef9tb3P/bnF7/21vd/9ucXn/bW93/3R2ff9sb3n/am13/2ptd/9ucXv/ +b3F4/2hrc/9sb3n/d3l//3N2f/9sb3n/bnF7/25wd/9ucXv/Z2p0/2dqdP9qbXf/bnF7/2Zpc/9nanT/ +Z2p0/2ptd/9nanT/bnF7/2xudf9qbXf/bG51/2psc/9tb3P/bnF7/3l7gf9tb3P/amxz/2psc/9ucXv/ +cHN9/25xe/9ucXv/c3Z//3l7gf9zdn//dXiB/25xe/9wc33/d3qD/3N1fP9zdXz/bnB3/25xe/9ucXv/ +c3Z//3N1fP9wc33/eXyG/3N2f/9wc33/c3V8/3N2f/93eoP/c3Z//3t9g/9zdn//cHJ5/3t9g/9zdn// +d3l//3V3ff93eoP/c3Z//3d6g/97fof/c3Z//3N1fP9zdn//eXuB/3l8hv9zdn//bG95/3N2f/9wcnn/ +d3l//3Byef9ucHf/bnB3/3h5ff9sbnX/cHJ5/3Z4fP9wcnn/bnB3/2ptd/9ucXv/bG51/2xvef9nanH/ +bnF7/2xudf9nanT/bnF7/2ptd/9qbXf/Z2p0/3N1fP9sbnX/Z2p0/2xudf9qbXf/Zmlz/3N1fP9qbXf/ +fn+D/3Z4fP9wcnn/c3V8/3N2f/9sb3n/bnF7/25wd/9wcnn/bnB3/2xvef9wc33/d3l//25xe/9wcnn/ +cHN9/25wd/9ucHf/d3l//3N2f/91d33/bnB3/3N1fP9lZmr/Zmlz/25xe/9sb3n/am13/2dqcf9qbXf/ +amxz/2dqdP9ucHf/cHJ5/2dqdP9kZ3H/bnF7/2ptd/9nanT/amxz/2ptd/9qbXf/cHJ5/2psc/9zdXz/ +c3V8/25wd/9zdXz/dXd9/29xdf9ucXv/dXiB/3Bzff91d33/bG95/25xe/9wcnn/bnF7/3Bzff9wcnn/ +eXuB/25wd/9qbXf/bnF7/3V4gf9wc33/bnF7/3V4gf9ucXv/cHN9/3Bzff93eoP/eXyG/3N2f/9zdn// +cHN9/3d6g/9zdn//e32D/3d6g/95fIb/cHN9/3l7gf91eIH/c3V8/3d6g/91eIH/c3Z//3t+h/97fob/ +d3qE/3p8g/90dn7/bXB6/25wd/9sb3n/cHN9/3d5f/9ucXv/bnB3/25xe/9xdH7/c3V9/3d5gP9wc33/ +bnF7/2xvef9ucHf/eXyG/25xe/9ucXv/cHN9/25xe/9wc33/cHJ5/25xe/9zdXz/cHJ5/25xe/9sb3n/ +bnB3/21vc/9ucHf/c3V8/25wd/9sb3n/bnF7/3d5f/9ucXv/d3qD/25xe/9zdn//cHN9/2xvef91d33/ +bG95/3Z4fP9ucHf/c3V8/25wd/9ucXv/bnB3/3Bzff9tb3f/bnB3/21vc/9ydHz/bnB3/25wd/9wcnn/ +cHJ5/3Fzef9oa3P/aGtx/3V3ff9wcnn/Z2px/2xvef9sbnX/dnh8/3N1fP91eIH/c3Z//3V4gf9sb3n/ +bG95/3Bzff9ucXv/bG95/3N2f/9sb3n/cHN9/25wd/9sb3n/bnB3/25xe/93eoP/bnB3/2xudf9qbHP/ +c3V8/3N1fP9ucHf/bnB3/3V3ff92eHz/c3V8/2xvef9qbXf/bnB3/3N1fP9sbnX/am13/2xudf9sbnX/ +amxz/25wd/9tb3P/bnB3/3V3ff9ucHf/bG95/2ptd/9tb3P/bnB3/2psc/9zdXz/bnB3/2ptd/91eIH/ +bnB3/25wd/9ucHf/bnF7/25wd/9zdXz/dXiB/25wd/9sb3n/bnB3/3N1fP91d33/bnB3/2psc/9tb3P/ +bG51/3V3ff9sbnX/bG51/25wd/91d33/bG51/3Byef9zdXz/am13/2ptd/9nanT/bG95/2psc/9qbXf/ +ZGdx/2ptd/9qbHP/Zmlz/2ptd/9qbXf/am13/2psc/9zdXz/bG51/2xudf9wcnn/bnF7/25xe/91eIH/ +cHN9/3+Bh/93eX//bG95/3Bzff9zdn//bG95/25xe/9ucHf/cHJ5/25wd/9qbXf/bnF7/3V4gf9ucXv/ +cHJ5/25xe/9ucHf/cHN9/3d5f/91eIH/c3V8/3Byef9ucXv/ZGdx/25wd/9wcnn/cHN9/2xvef9wcnn/ +bnF7/2xvef9wc33/d3l//3d5f/9zdXz/bG51/3Z4fP9zdXz/cHJ5/25wd/9wcnn/bG51/3V3ff9qbXf/ +cHN9/3N1fP9sb3n/bG95/2xvef9qbHP/Z2p0/25xe/9nanT/c3V8/2dqdP9qbXf/Z2px/2psc/9sb3n/ +amxz/3Byef9maG7/YmVu/2ptd/9sb3n/amxz/2Zpc/9ucHf/Z2px/2xudf9tb3P/bnB3/3Bzff9ucHf/ +dXiB/25wd/9zdXz/bnB3/3V3ff9zdXz/dXd9/2xudf91d33/bG95/25wd/9zdn//dXd9/29xdf92eHz/ +eHl9/3J0e/92eH7/bXB4/2hrdP9qbHP/Zmlz/3Byef91d33/am13/21vc/9sb3n/bm92/21weP92eH// +bnB3/2xvef9wc33/bnF7/3d6g/9zdn//d3qD/3t9g/93eX//fn+D/3d5f/93eX//e32D/3p7f/97fof/ +eXuB/3l7gf95e4H/e32D/3t9g/91eIH/d3l//31+gf9/gYf/d3l//3+CjP93eoP/d3qD/3Bzff9sb3n/ +dXd9/25wd/91d33/am13/2xvef9qbXf/bnF7/2psc/9rbnj/aGty/2hqc/9maG//am13/2dqcf9qbXf/ +bnF7/2xveP9tcHj/YmVu/19ibP9sb3n/Z2p0/2BjbP9maXP/bG95/3h5ff9wc33/c3Z//25wd/91d33/ +bG95/2xvef9sb3n/bnB3/25wd/92eHz/cHJ5/3Byef9sb3n/bnB3/25wd/9ucHf/dXd9/2xudf9qbHP/ +Z2px/3Byef9ucHf/am13/2xvef9wc33/c3V8/25xe/9ucXv/bG51/25xe/9wc33/bG51/25wd/9ucHf/ +bnB3/2ptd/9wcnn/b3F1/25wd/93eX//cHJ5/25wd/9vcXX/bG51/25wd/9sbnX/cHN9/2xvef9ucXv/ +eXuB/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/3d6g/9ucHf/bG51/2xvef91d33/eHl9/3Bzff9sb3n/ +bnB3/25wd/95e4H/bG51/2xvef9ucHf/d3l//25xe/9wc33/dXd9/2xvef9zdXz/bnB3/25xe/9ucXv/ +bnF7/2dqdP9sb3n/bG95/2xudf9wc33/cHJ5/25wd/9sb3n/dXd9/25wd/9sb3n/bG51/2ptd/9nanT/ +bnF7/2xudf99foH/dXd9/21vc/9wcnn/c3Z//25wd/9ucHf/b3F1/2xudf9sbnX/Z2px/3N1fP9zdXz/ +bG51/21vc/9sb3n/am13/2xvef9zdXz/bG95/3Bzff91d33/cHJ5/2Rncf9ucHf/bnB3/3Bzff9ucHf/ +bnF7/25xe/9wcnn/cHN9/3d6g/93eoP/c3Z//2xvef91eIH/c3Z//3N2f/9ucXv/cHN9/3N1fP93eoP/ +bnF7/3d6g/91eIH/cHN9/3N2f/9wc33/bG95/2xvef91eIH/bnF7/3V3ff9sbnX/bG51/2xudf9sb3n/ +bnF7/2ptd/93eX//bW9z/2psc/9zdn//cHJ5/25wd/9sbnX/cHJ5/2psc/9vcXX/bnB3/25wd/9zdXz/ +bG51/3Byef9ucHf/dXd9/2xudf9zdXz/bnB3/3h5ff9sbnX/eHl9/25xe/9wcnn/c3Z//2xvef9qbHP/ +cHN9/3V3ff9sb3j/dHeB/25wef9sb3n/bnF7/25wd/9zdn//dXiB/2xvef9ucHf/bnF7/3R2fP9vcnn/ +dnh//25wd/9ucXv/bnF7/25wd/95e4H/bnF7/3N2f/91eIH/c3V8/3V4gf9wc33/cHJ5/25wd/9wcnn/ +dXiB/3Byef9ucHf/bG95/2xvef9wc33/bnB3/21vc/91d33/eHl9/3Byef95e4H/cHJ5/2xvef9ucXv/ +amxz/3N1fP9qbXf/cHN9/21vc/9wcnn/bnB3/3N1fP9vcXX/dHZ9/21wef9xc3z/bnB3/3N2f/9ucXv/ +c3Z//3V4gf9wc33/dXd+/2xvef9ydX7/e36H/3t9g/9ucXv/d3qD/3l8hv94eX3/cHJ5/3V3ff9tb3P/ +cHJ5/2xudf9ucHf/bG51/2ptd/9sbnX/dnh8/25wd/9qbXf/Z2p0/2dqdP9sbnX/bnF7/3V3ff9sbnX/ +bG51/2Zpc/9sb3n/am13/2ptd/9sb3n/c3V8/3Bzff9wc33/bG95/2ptd/9ucXv/cHN9/3Byef9ucHf/ +bG51/2xvef9nanT/bnB3/29xdf9zdXz/dnh8/25wd/9qbXf/amxz/2xudf9qbXf/Z2p0/2xvef9qbHP/ +Zmlz/3Bzff9sbnX/bG95/2ptd/9zdXz/bG51/25xe/91d33/bG51/2psc/9ucHf/dXd9/3h5ff9wcnn/ +Zmlz/2dqdP9sbnX/dnh8/2xudf9ucHf/b3F1/3d5f/9sbnX/cHJ5/3V3ff9qbXf/bG95/2xudf9sb3n/ +bnB3/3N1fP9qbHP/bnB3/2xudf9nanT/am13/2xvef9sbnX/bW9z/3N1fP9sbnX/bG95/2psc/9sb3n/ +Z2p0/25xe/9qbXf/eXuB/3d5f/9sbnX/bG51/3Bzff9sbnX/bW9z/2xudf9sbnX/bG51/2Zpc/9zdn// +cHN9/2xvef9vcXX/cHJ5/29xdf9wcnn/c3V8/25xe/92eHz/dnh8/3Byef9maG7/bnB3/3N1fP9zdXz/ +bnB3/3Byef9wc33/dXiB/3V4gf97fof/eXyG/3d6g/9qbXf/dXiB/3Bzff9wc33/bnB3/29xdf9sbnX/ +dXd9/25xe/9wc33/c3Z//3Byef9ucHf/bG51/25wd/9qbHP/dXd9/3Byef93eX//amxz/21vc/9sbnX/ +bnF7/2xvef9ucHf/dXd9/21vc/9ucHf/c3V8/3Byef9ucHf/bG51/3Byef9sbnX/bG51/2ptd/9sbnX/ +bnB3/2xudf9zdXz/bG51/3V3ff9qbXf/dXd9/25xe/91d33/Z2p0/3h5ff9ucHf/b3F1/3Byef93eoP/ +c3V8/3l7gf96fIP/c3Z//3Z5g/9ucXr/bG51/2xudf9qbXf/bnF7/3d5f/9tb3P/bW9z/2xudf9ucHf/ +b3F2/3d5gv9wcnn/bnF7/3Bzff9ucHf/d3qD/25wd/9ucHf/cHN9/25wd/92eHz/b3F1/25wd/9sb3n/ +bnB3/3Bzff9sb3n/bG95/25wd/9ucHf/c3V8/29xdf9vcXX/dXd9/3V3ff9ucHf/eXuB/3Byef9sb3n/ +bnF7/2dqdP9zdXz/am13/2xvef9qbHP/bG95/2xudf9wc33/amxz/3Bzff9qbXb/bG53/2hqdP9vcnz/ +am13/3Byef9wcnj/cXN6/3JzeP9oanP/Z2pz/3N1fP9ucXv/Zmhu/3N1fP9ucHf/dnh8/3Byef94eX3/ +bnB3/3V3ff9sbnX/bG51/25wd/9sbnX/bG51/3N1fP9wc33/am13/2dqdP9maXP/amxz/2ptd/9zdXz/ +Z2px/2Zpc/9iZW7/Zmlz/2RmbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Rncf9iZW7/Z2p0/2Zpc/9maG7/ +Zmlz/2Zpc/9qbXf/Zmlz/2xvef9sbnX/bnF7/3N1fP9qbXf/amxz/2psc/9qbXf/am13/2xudf91d33/ +b3F1/2xvef91d33/bG95/3Byef9sbnX/dXd9/2ptd/9wc33/dXd9/21vc/9nanH/cHJ5/3Z4fP92eHz/ +c3V8/2dqcf9sb3n/cHJ5/3t9g/9wc33/c3V8/25wd/93eoP/bnB3/3N1fP91d33/bG51/3Byef9sbnX/ +cHJ5/3Byef91d33/b3F1/3Byef9sbnX/bnB3/3N1fP9ucHf/bW9z/29xdf9zdXz/b3F1/2xvef9ucHf/ +cHN9/25wd/9wc33/bG95/3+Bh/93eX//bnB3/25xe/91eIH/cHN9/3N2f/9zdn//cHJ5/2ptd/9kZ3H/ +dXiB/3Bzff9sb3n/cHJ5/3Bzff9wcnn/c3Z//3l7gf9zdn//c3Z//3l7gf9wc33/Z2p0/25wd/91eIH/ +c3Z//3Byef9vcXX/bnB3/3Bzff9zdn//d3l//3h5ff9zdn//bG95/3d6g/9zdn//cHN9/25wd/9vcXX/ +cHJ5/3N1fP9ucHf/dXd9/3N1fP9ucHf/bnB3/3Byef9sbnX/Zmlz/25xe/9ucXv/d3l//2ptd/9qbHP/ +amxz/2ptd/9qbXf/am13/3N1fP9sbnX/Z2p0/2ptd/9sb3n/Z2px/2Zpc/9nanT/ZGdx/2Zpc/9kZ3H/ +amxz/2ptd/9nanT/cHN9/2xudf9wcnn/bG51/3Z4fP91d33/dXd9/2xvef95e4H/bnB3/25wd/9wcnn/ +c3Z//25wd/9zdn//dnh8/29yfP94eoH/bnB5/25wd/9ucXv/bnB3/3Byef93eX//bW9z/21vc/9sb3n/ +a252/2xudf92eYL/cHJ5/3Bzff9wc33/c3V8/3d6g/9zdn//dXiB/3V4gf9ucHf/eHl9/25wd/9vcXX/ +bG51/25wd/9wcnn/b3F1/2xudf9tb3P/bG51/3Byef9sbnX/bW9z/3Bzff9wc33/bG51/25wd/9qbXf/ +am13/2xvef9kZ3H/am13/2Rncf9sb3n/am13/3Bzff9qbXf/dXd9/2ptd/9xc3v/bG53/2ttc/9lZ3D/ +Z2p0/2Zpc/9maXP/ZGdx/2dqdP9tb3j/am13/21vdv90dn3/dXd9/2dqcf9zdXz/bnF7/3N1fP9qbXf/ +dXd9/2xvef9ucXv/bW9z/3Byef9wcnn/b3F1/2xvef9ucXv/dXd9/25wd/9ucHf/bG95/25xe/9zdXz/ +e32D/3Byef9vcXX/bnB3/25xe/9wcnn/b3F1/2xudf9wcnn/cHJ5/3Byef9wcnn/bG51/3Byef9ucXv/ +am13/2ptd/9sbnX/bnF7/2dqdP9qbXf/am13/2xvef91d33/cHJ5/29xdf9vcXX/bG95/3Byef9ucHf/ +c3V8/25wd/9sbnX/dnh8/3Byef9ucHf/bW9z/3V3ff9sb3n/d3l//3d6g/9zdXz/bG95/3d6g/97fYP/ +d3l//3Bzff9sb3n/cHJ5/2xvef92eHz/am13/2xvef9ucHf/eXyG/25xe/93eX//cHN9/25xe/9wcnn/ +bG95/2xvef9wc33/dXiB/25wd/9ucXv/am13/25wd/9wc33/bnF7/2xvef9sb3n/cHN9/25wd/9sb3n/ +Z2p0/25xe/9nanT/bnF7/21vc/+Agob/d3l//25wd/9ucHf/dXiB/3Bzff9zdn//c3Z//25xe/9ucXv/ +Zmlz/3N2f/9ucXv/bnB3/25wd/9ucXv/bW9z/25wd/91d33/bnB3/25xe/9zdXz/am13/2Rncf9qbXf/ +bG95/2ptd/9nanT/Z2px/2Zpc/9nanT/Z2p0/3Byef9ucHf/bnB3/2dqcf9zdXz/bG95/2ptd/9qbHP/ +bG51/2xvef9sb3n/bG51/3Bzff9ucXv/am13/2xudf9ucXv/bnB3/2dqdP91d33/c3V8/3d5f/9sbnX/ +b3F1/3Byef9wcnn/bG95/2ptd/91d33/bG51/2ptd/9sb3n/cHN9/2Zpc/9qbHP/bG95/2xudf9sb3n/ +Z2p0/2ptd/9qbXf/Z2p0/2ptd/9nanH/am13/2Zpc/9wcnn/c3V8/3V3ff9qbXf/cHN9/2dqdP9maXP/ +am13/3N1fP9tb3P/c3V8/3N1fP9sb3n/d3qC/25wef9ucHX/bnB3/25wd/9ucXv/d3qD/3Byef9ucHf/ +b3J8/29xef9sbnT/cHJ6/2dpb/9qbXf/Z2p0/2dqcf9wcnn/am13/2ptd/9ucXv/bG51/25xe/9qbXf/ +am13/2Zpc/9sbnX/cHN9/25wd/9sb3n/b3F1/29xdf9zdXz/bnB3/29xdf91d33/bnB3/2ptd/91d33/ +cHJ5/2xudf9ucXv/am13/2ptd/9maXP/bG95/2xvef9ucXv/am13/3Bzff9sb3n/cHN9/21wev9tcHr/ +bG95/3h6gP91eIH/foCG/3Z5gv93eoP/dXiA/25weP9pbHb/bnF7/3Bzff9maXP/bnB3/2xvef95fIb/ +dXiB/3t+h/93eoP/dXiB/3Byef9zdn//bG95/25xe/9sb3n/cHN9/3V4gf9wc33/bnB3/25wd/9wc33/ +c3Z//36Ahv91eIH/c3V8/25wd/9wc33/bnB3/2xudf9ucHf/c3V8/3V3ff9zdn//bnF7/2xvef9zdn// +cHN9/3Bzff9ucXv/c3V8/3Bzff9sbnX/bG95/25wd/9zdXz/dXd9/3Byef9sbnX/b3F1/2ptd/9ucHf/ +bG51/3N1fP9qbXf/bG51/3V3ff9ucXv/bnB3/2xudf9zdXz/bW9z/3Byef91d33/bG51/2ptd/9qbXf/ +cHN9/2xvef9qbXf/Zmlz/2xudf9qbXf/c3V8/2Zpc/9maXP/Z2px/3Bzff9nanH/bnF7/2xvef9qbHP/ +am13/2Zpc/9nanH/Zmhu/2Zpc/9kZ3H/Zmlz/2dqcf9kZ3H/Z2p0/2Zpc/9nanT/bG51/2xvef9sbnX/ +am13/2dqcf9sb3n/Zmlz/25xe/9sbnX/f4GH/3V3ff9sbnX/bG95/3Bzff9sbnX/bnF7/2xvef9qbHP/ +amxz/2RmbP9wc33/am13/2xudf9wcnn/cHJ5/2xudf9ucHf/c3V8/2ptd/9sb3n/bnF7/2xudf9iZW7/ +Z2p0/2xvef9sb3n/Z2p0/2ptd/9qbXf/bG95/3Bzff91d33/dXd9/3V3ff9vcXX/d3l//3V3ff9zdXz/ +bG51/2xudf9sb3n/bnF7/21vc/9zdXz/dXd9/25wd/9ucHf/bnB3/21vc/9nanH/c3V8/2xvef91d33/ +Z2p0/21vc/9zdXz/bnB3/2xudf9wcnn/d3l//2ptd/9nanT/am13/3V3ff9sbnX/bG51/2xvef9sbnX/ +am13/2Zpc/9sbnX/bG51/2xudf9ucHf/bW9z/3Byef9sb3n/dXd9/3V3ff93eX//bW9z/3V3ff9sbnX/ +bG51/2xudf91d33/cHJ5/3d5f/91eIH/cXR+/3Z5gv9wc3r/aGt1/25wd/9ucHf/bnF7/3d5f/9sbnX/ +bG95/2xvef9ydHv/bnF5/3V4gf9ucHf/cHN9/2xvef9ucHf/dnh8/3Byef9ucHf/bnB3/2xudf9wcnn/ +bnB3/3Byef9nanT/bG95/3N2f/9vcXX/bnB3/21vc/9sb3n/c3Z//3Bzff9wcnn/dXiB/25wd/9tb3P/ +eHl9/3V3ff9ucHf/c3V8/29xdf9ucHf/amxz/3N1fP9wcnn/c3Z//25xe/9zdXz/cHJ5/3V3ff9zdX3/ +bnF7/29xeP90d4D/cHN9/3Bzff9sb3n/cXN7/3Bze/9tb3f/aGp0/2xvef9ucXv/Z2p0/25xe/9sb3n/ +c3V8/25wd/94eX3/bnB3/3Bzff9wcnn/cHN9/25xe/9zdn//cHJ5/3N2f/91eIH/cHN9/3Byef9sb3n/ +c3V8/3N1fP97fYP/c3V8/29xdf9vcXX/dXd9/21vc/9ucHf/cHJ5/3Byef9wcnn/dXd9/2xvef9nanT/ +bG95/2ptd/9qbXf/amxz/2Zpc/9qbXf/Zmlz/2dqdP9sbnX/bG95/3N1fP9wc33/am13/2psc/9sbnX/ +bnF7/2xudf9zdXz/bG95/25wd/91d33/cHN9/25xe/9ucHf/dXd9/29xdf9zdXz/c3V8/25wd/9ucHf/ +bnF7/3V3ff9ucXv/d3qD/2xvef9ucHf/bG95/3d5f/9sb3n/bnB3/3Byef95fIb/bnB3/3N1fP9wcnn/ +bW9z/25wd/9wcnn/bG51/21vc/9wcnn/bG51/25wd/9ucHf/bG51/2xvef9sb3n/amxz/25wd/9ucXv/ +bW9z/2xudf9sb3n/bnF7/2xvef91eIH/bG95/4GDiv91d33/bW9z/3Byef9wc33/am13/25xe/9sb3n/ +amxz/2xudf9maXP/dnh8/2xvef9ucHf/cHJ5/25wd/9sbnX/b3F1/3Z4fP9zdXz/c3V8/3N1fP9ucHf/ +amxz/2xudf9wcnn/bnB3/29xdf9ucHf/bnB3/25xe/91eIH/d3l//3d6g/93eX//bG95/3d5f/9zdXz/ +cHN9/2psc/9ucHf/cHN9/3Bzff9ucXv/c3Z//3N2f/9wcnn/cHJ5/3Bzff9wcnn/cHJ5/3d6g/95fIb/ +eXyG/25xe/9zdn//c3Z//25xe/91eIH/e32D/3l8hv91eIH/c3V8/3d6g/97fYP/bnF7/25wd/9ucXv/ +cHJ5/3Bzff9sb3n/cHN9/3Byef9sb3n/cHJ5/25wd/9wc33/bnB3/25xe/9wcnn/eHl9/29xdf91d33/ +cHJ5/2xudf9vcXX/d3l//3Bzff97fYP/dXiB/29yfP91eIH/cHN9/21wev9wc33/cHJ5/2xvef93eX// +bnB3/2xvef9wcnn/cXR9/21weP91d33/bnB3/3N1fP9sbnX/b3F1/3Z4fP91d33/cHN9/25xe/91eIH/ +cHN9/25wd/9wc33/am13/3Byef91eIH/c3Z//3N2f/9zdXz/dXd9/3l7gf93eX//c3Z//3t9g/91eIH/ +c3V8/3l7gf9zdn//c3Z//3l8hv91d33/d3l//3Z4fP97fYP/e32D/3V4gf9wc33/dXiB/3N2f/92eYL/ +c3Z+/3Bye/9vcXj/c3V8/25wd/9ucXv/bG95/2xvef9xdHz/bG95/2ptd/9wc33/cHN9/2dqdP9zdXz/ +c3V8/25xe/9sb3n/c3V8/2xvef9qbXf/bG51/3V3ff9ucHf/c3V8/29xdf9wcnn/cHN9/2xvef9qbXf/ +bG51/3N1fP92eHz/eXuB/3N1fP9sbnX/bW9z/3Z4fP9sbnX/am13/2xvef9sb3n/cHJ5/3Byef9ucHf/ +amxz/3N1fP9ucXv/bG95/2ptd/9maXP/bnB3/2xudf9sb3n/bG51/2xvef9wc33/c3V8/2xvef9tb3P/ +bW9z/3Byef9qbHP/c3V8/25wd/9sb3n/dXd9/3V3ff9ucHf/bW9z/3Byef9ucHf/cHJ5/3Byef9sbnX/ +bG51/25xe/9wc33/am13/3Bzff9qbXf/bnB3/25wd/91d33/bG51/2psc/9ucHf/d3qD/2xvef9wc33/ +cHJ5/25wd/9ucXv/c3Z//25wd/9wcnn/cHN9/25wd/9wc33/bnF7/3Byef9zdn//d3qD/3Byef9zdn// +dXiB/25xe/9wc33/bnF7/3Bzff9wcnn/dXiB/2ptd/+BhI3/eXuB/25xe/91eIH/c3Z//2xvef9wc33/ +bnF7/2xudf9nanT/Z2p0/3V3ff9ucHf/bG95/3Byef9ucHf/bG51/25wd/91d33/c3V8/3V3ff9ucXv/ +cHJ5/2xvef9wcnn/c3Z//3N2f/9wc33/cHJ5/25xe/9ucXv/dXd9/3Z4fP93eX//eHl9/25wd/94eX3/ +cHJ5/3V3ff9qbHP/bW9z/25wd/9ucHf/bnB3/3N1fP9ucXv/bG51/2psc/9nanH/Z2px/2dqdP9sb3n/ +am13/3N1fP9maXP/amxz/2ptd/9qbXf/am13/3Bzff9zdXz/am13/2ptd/9zdXz/dnh8/2dqdP9wcnn/ +cHN9/2xvef9ucXv/Z2p0/25xe/9vcXX/amxz/3V3ff9vcXX/c3V8/2ptd/9wc33/cHN9/3l7gf9ucHf/ +c3Z//2xvef9sb3n/cHJ5/3Z4fP9wcnn/eHl9/3Z4fP9ydHv/dXd8/25wd/9qbHP/bG51/2xudf9sbnX/ +dnh8/2xudf9sbnX/bnB3/29xeP9tcHj/dHZ9/25xe/9zdn//bnB3/29xdf94eX3/cHN9/3N1fP9ucXv/ +cHN9/3N2f/9ucHf/bnB3/2xvef9ucHf/c3Z//3N1fP9ucXv/cHN9/3Bzff95fIb/c3Z//3Bzff93eoP/ +bnF7/25wd/97fYP/d3qD/3V4gf93eoP/cHN9/3N2f/9zdXz/cHN9/25xe/9wc33/cHJ5/3N2f/9zdn// +eHqA/3N2fv9vcnr/bnB3/3R2ff9wcnn/c3V8/3V3ff90dnz/c3Z9/29xef9tb3f/c3Z//3Byef9sbnX/ +cHN9/25xe/9zdn//cHN9/3d5f/9ucXv/cHJ5/29xdf9wcnn/cHJ5/3V4gf9ucHf/c3Z//3V3ff91d33/ +amxz/25wd/9wcnn/dnh8/3l7gf9zdXz/bW9z/2xudf9zdXz/bG51/2xudf9zdXz/bG95/3Byef9wcnn/ +c3V8/25wd/9zdXz/cHJ5/3N1fP9ucHf/Z2p0/2xvef9sbnX/bnB3/21vc/9ucHf/cHJ5/3V3ff9qbXf/ +bnB3/2ptd/9ucXv/Zmlz/3N1fP9vcXX/bnB3/3V3ff9wcnn/am13/2xudf9ucXv/am13/3Bzff9ucXv/ +bG51/21vc/9ucXv/cHN9/2xudf91d33/bW9z/2xudf9sbnX/dXd9/2psc/9qbHP/bW9z/3V3ff9tb3P/ +bG95/2xudf9qbXf/bG51/3V3ff9ucHf/bnB3/3Bzff9vcXX/bG95/2xvef9vcXX/cHN9/3V3ff9sb3n/ +dXd9/25wd/9ucXv/c3Z//2ptd/9sb3n/bG51/3N1fP9nanT/gIKG/3Z4fP9vcXX/dXiB/25xe/9qbXf/ +c3Z//3Bzff9sbnX/bG51/25wd/91eIH/c3V8/25xe/9sb3n/bnF7/2xvef9zdn//c3Z//3V4gf93eoP/ +cHN9/3Byef9ucHf/cHN9/3d6g/9wc33/cHN9/3N1fP9ucXv/bnF7/3l7gf93eX//eXuB/3l7gf9ucXv/ +dnh8/3Byef9zdXz/bnB3/25wd/9wcnn/bnF7/2xvef9wc33/bnF7/2xudf9ucHf/bnB3/25wd/9vcXX/ +cHJ5/3V3ff95e4H/bnB3/25wd/9wc33/bnF7/3Bzff95e4H/foCG/3d5f/92eHz/fn+D/36Ahv9zdXz/ +e32D/3+Bh/95fIb/e36H/3N2f/9+gIb/eHl9/3V3ff97fYP/d3l//3l7gf94eX3/e32D/3d6g/9+gIb/ +c3V8/3d6g/9ucXv/Z2p0/29xdf93eX//c3Z//3l7gf94eoD/dXiB/3R2fv9qbXf/aGty/2dqcf9qbHP/ +ZGdx/25wd/9nanH/Z2p0/2xvef9qbXT/aWty/3Fzev9qbHP/bnF7/21vc/9sbnX/dnh8/3N1fP9ucHf/ +cHJ5/3Byef9zdXz/bnB3/25wd/9ucHf/b3F1/25xe/9sb3n/bG95/25xe/9ucXv/c3Z//3N2f/9wc33/ +eXuB/3N2f/9wc33/fX6B/3l7gf9+gIb/e32D/3d5f/91d33/dXd9/3V4gf93eoP/d3qD/3N2f/93eoP/ +d3qD/3t+h/97fof/eHuC/3R3gP93eoL/eXuB/3l7gf93eX//dXh+/3R2fP9ucXv/bnB3/25xe/9wcnn/ +amxz/3Byef9sbnX/c3Z//3V4gf93eX//c3Z//3N2f/9ucXv/cHN9/25xe/93eX//bG95/3Byef9zdn// +dXiB/25xe/9wc33/dXiB/3t9g/9/gYf/d3qD/3Bzff91eIH/d3qD/3Bzff91eIH/d3qD/25xe/9sb3n/ +cHN9/3Bzff9ucHf/cHN9/3N2f/91eIH/c3Z//3N1fP9zdn//cHJ5/3Bzff9sb3n/bnB3/3N1fP9zdXz/ +b3F1/3Byef9wcnn/c3V8/2xudf91d33/cHJ5/25wd/93eX//c3V8/29xdf9ucHf/cHN9/2xvef91d33/ +c3V8/2ptd/9sbnX/bnF7/3V3ff9sbnX/bnF7/2xudf9qbXf/bG51/3N1fP9kZ3H/am13/2xudf93eX// +amxz/2xvef9qbXf/ZGdx/2xudf9sb3n/Z2p0/2psc/9qbXf/amxz/2ptd/9sbnX/amxz/2xvef9zdXz/ +amxz/25xe/9qbXf/am13/2xvef9wcnn/bnF7/25xe/93eX//cHJ5/4GEjf97fYP/d3qD/3l7gf91eIH/ +bG95/3l8hv97fYP/cHN9/25xe/9sb3n/d3qD/3N1fP9ucXv/dXiB/3N2f/9wc33/c3Z//3V4gf93eoP/ +eXuB/3Bzff9ucXv/bG95/2ptd/91d33/bnB3/3N1fP9ucHf/bG95/25xe/91eIH/d3l//3d5f/93eX// +bnF7/3d5f/9wc33/dXiB/2xvef9ucXv/dXiB/3N2f/91eIH/eXuB/3N2f/9ucXv/bnF7/3Bzff9zdXz/ +cHJ5/3N2f/95e4H/d3qD/25wd/9ucHf/bnF7/3Bzff9wc33/dXd9/3d5f/9wcnn/bnB3/25xe/9zdn// +bG95/2xvef9wc33/bG95/3Byef9nanT/bnF7/25wd/9sb3n/dXd9/3Bzff9wcnn/am13/3Bzff9zdXz/ +dnh8/29xdf9zdXz/am13/2Zpc/9qbXf/c3V8/3Byef9zdXz/dXd9/3J0e/92eH3/bW90/2xudv9tb3P/ +bG95/2xvef93eX//c3Z//3d6g/90d4D/bXB6/25wef90dn3/b3F2/3V3ff9sbnX/amxz/3V3ff9zdXz/ +cHJ5/3Bzff9sb3n/bnF7/25wd/9ucHf/b3F1/2xudf9sbnX/bG51/29xdf9sb3n/bnF7/3Bzff9ucXv/ +cHJ5/3V4gf9zdn//c3V8/3V4gf9zdn//d3qD/3V4gf9wc33/cHN9/3Byef9wc33/c3Z//3N2f/9sb3n/ +bnF7/3Bzff92eH7/c3Z//29yfP9ucXr/c3Z//3N2f/91d33/c3Z//3R2fP9zdoD/cHN9/3Bzff91eIH/ +c3Z//3Byef9wc33/cHJ5/3N1fP9wc33/c3V8/3V3ff9wcnn/bnB3/3Byef9ucHf/dXd9/2ptd/9ucXv/ +bG95/25xe/9maXP/amxz/2xvef9wc33/dXiB/2ptd/9sbnX/bG95/2xvef9sbnX/c3V8/3N1fP9sbnX/ +am13/2xvef9sbnX/Z2p0/25xe/9wc33/dXd9/25wd/9vcXX/bnB3/2xvef9ucXv/cHN9/25xe/9zdn// +dXiB/25wd/9wc33/cHN9/3N2f/9sb3n/d3qD/3Bzff9sb3n/eXyG/3Bzff9vcXX/b3F1/3N1fP9qbHP/ +cHN9/3Bzff9nanT/am13/2ptd/9wc33/amxz/2ptd/9nanH/Zmlz/2dqcf9maXP/YGNs/2Rncf9nanH/ +c3V8/2xudf9sb3n/amxz/2Zpc/9qbXf/bnF7/2xudf9tb3P/cHJ5/25wd/9ucXv/bnF7/3Byef9ucHf/ +cHN9/25wd/91eIH/bnF7/25xe/91eIH/dnh8/3N2f/91eIH/fn+D/3h5ff+Ji5H/fn+D/3l7gf9+f4P/ +e32D/3N1fP9+f4P/foCG/3d5f/91d33/cHN9/3l7gf91d33/cHN9/3N2f/9wc33/bnF7/3V4gf9zdn// +dXiB/3V4gf9zdn//c3Z//3Byef9ucXv/c3Z//25xe/9ucXv/bnB3/25wd/9qbXf/dXd9/3d5f/91d33/ +d3l//25wd/91d33/bnB3/3Z4fP9sbnX/c3V8/3V3ff9wcnn/cHJ5/3Z4fP9zdXz/b3F1/25wd/9wcnn/ +b3F1/21vc/9zdXz/dXd9/3d5f/9qbXf/bG51/25xe/9sbnX/dXd9/3V3ff93eX//am13/2psc/9ucXv/ +am13/2Jlbv9qbHP/am13/2dqcf9maXP/XWBq/2dqcf9kZ3H/Z2p0/3Bzff9qbXf/Z2px/2Rncf9sb3n/ +bG95/3Bzff9qbHP/c3V8/2xudf9maXP/Z2p0/3Bzff9sbnX/c3V8/3V3ff9xdH3/cnV+/2xudv9tb3b/ +bG51/2ptd/9ucHf/dnh8/25wd/9wcnn/bnB3/29xef9wcnn/dXh+/3Bzff95e4H/cHN9/2xvef95e4H/ +c3Z//3V4gf9zdn//cHN9/3N1fP9ucHf/cHJ5/3Byef9wcnn/cHN9/3Byef9sb3n/cHN9/25xe/9wcnn/ +bnB3/21vc/9wcnn/cHJ5/2xudf9zdXz/bG51/25xe/9wc33/bW9z/29xdf9ucHf/bnB3/3N1fP91d33/ +bG95/3Byef9sb3n/dHZ9/3R3f/9ucXn/bnB3/25xe/91d33/dXd9/3N2f/91eID/eHqA/3J0e/93eYD/ +foCG/3l8hv95e4H/e36H/3l7gf9zdn//c3Z//3V3ff93eX//bnF7/25xe/9wc33/dXiB/3V4gf9vcXX/ +cHN9/3Bzff9zdn//bG51/29xdf9wcnn/dnh8/3l7gf9wcnn/bnF7/3N2f/91eIH/cHJ5/3V4gf93eoP/ +bnF7/3N2f/9zdn//c3Z//3Bzff93eoP/eXyG/31+gf95e4H/c3Z//3V4gf9zdXz/c3Z//3N2f/9zdXz/ +dXiB/3t9g/92eHz/eXuB/3d5f/95e4H/dXd9/3t9g/93eoP/c3Z//36Biv91eIH/bnF7/3Byef93eoP/ +cHN9/3l7gf93eoP/bG95/2xvef9wc33/dXd9/2xvef9zdn//bG95/2xvef9zdXz/cHJ5/2dqcf9qbHP/ +bW9z/3V3ff9qbXf/c3V8/25wd/9sb3n/cHN9/3V4gf9sb3n/bnF7/2xvef9ucXv/bnF7/3Byef9ucXv/ +c3Z//3l7gf93eoP/eXyG/3d5f/93eX//fX6B/2ptd/9sbnX/am13/3Bzff9maXP/e32D/3Bzff9tb3P/ +c3V8/2xvef9nanT/bnF7/25xe/9qbHP/bW9z/2psc/9ucXv/bG51/2Zpc/9sb3n/am13/2Rncf9qbXf/ +am13/2dqdP9nanT/Z2px/2dqcf9nanH/ZGdx/2dqdP9maXP/Zmhu/2Jlbv9iZW7/ZGZs/25wd/9zdXz/ +cHN9/3N1fP9nanH/bnF7/2dqcf9wc33/Z2p0/2ptd/93eX//bnF7/3Byef91d33/bnB3/25wd/9vcXX/ +cHJ5/21vc/9ucHf/cHJ5/3Z4fP95e4H/bG51/25wd/9zdn//bG51/3h5ff91d33/d3l//3Byef9qbHP/ +c3V8/25xe/9kZ3H/am13/2xvef9nanH/Z2p0/2BjbP9nanH/YmVu/2Jlbv9nanT/am13/2dqcf9kZ3H/ +bnF7/3Byef94eX3/bW9z/3V3ff9ucHf/Zmlz/2Zpc/9zdn//cHJ5/3V4gf94eoD/c3Z//3J1f/9tcHj/ +bW92/2xudf9sbnX/bG51/3N1fP9wcnn/cHJ5/25wd/9vcnz/bnB3/3N1fP9sbnX/c3V8/21vc/9sbnX/ +eHl9/3N2f/91d33/bG95/2xvef9ucXv/b3F1/2xudf9vcXX/b3F1/21vc/9tb3P/b3F1/3N1fP9sbnX/ +bG95/21vc/9ucHf/cHN9/3Byef9vcXX/eHl9/25wd/9zdn//dXd9/21vc/9sbnX/am13/2xudf9ucXv/ +bnF7/21vc/9sbnX/bnB3/3V3ff9wc3v/bnB3/25wdP9sb3n/c3Z//3V4gf9ucXv/dHZ8/3V2ev9ucHf/ +a253/3N2f/9zdXz/dXd9/3V4gf9zdXz/c3Z//3d5f/91eIH/d3l//3N1fP9ucHf/cHJ5/3Bzff9sb3n/ +amxz/2ptd/9wcnn/bnF7/2Rncf9sbnX/bnF7/3Bzff91eIH/bG95/25xe/9wc33/bnF7/2ptd/9wc33/ +cHN9/2ptd/9sb3n/am13/2xudf9maXP/cHN9/25xe/9wc33/bG95/2xudf9sbnX/amxz/2xudf9sbnX/ +amxz/2ptd/9ucXv/Z2p0/2xudf9nanT/amxz/2BjbP9ucXv/am13/2xudf91d33/bnF7/2xudf9sbnX/ +cHN9/2xudf9zdXz/c3V8/25wd/9ucHf/dXd9/3Z4fP9wcnn/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/ +cHJ5/3N1fP97fYP/cHN9/3V4gf9wcnn/bG95/25xe/9zdXz/amxz/21vc/9ucHf/bnB3/2xudf9sbnX/ +bnF7/2xudf9wc33/bG95/3Byef9sbnX/cHJ5/3V3ff9ucHf/cHJ5/25xe/91d33/am13/3+Bh/91d33/ +bnB3/3Z4fP9ucHf/amxz/2xvef9wc33/Zmlz/2psc/9maXP/am13/2dqdP9nanT/am13/2Zobv9iZW7/ +Z2px/2ptd/9maXP/ZGdx/2Zobv9kZ3H/Zmhu/2Zobv9maXP/ZGZs/2Rncf9iZW7/ZGdx/2Zobv9ucHf/ +cHJ5/2Zpc/9wc33/Zmhu/25xe/9kZ3H/am13/2BjbP9kZ3H/bnB3/2ptd/9sb3n/bnF7/2ptd/9qbXf/ +am13/2xvef9qbHP/bG51/21vc/91d33/dXd9/25wd/9vcXX/c3Z//2xvef91eIH/d3qD/3l8hv9wc33/ +bnF7/3l7gf91eIH/bnF7/3N2f/97fYP/c3V8/3V4gf9sb3n/bnF7/2ptd/9ucHf/dXiB/3V4gf9ucXv/ +am13/3V4gf95e4H/e32D/3Bzff93eX//cHJ5/25wd/9ucHf/dXiB/3N2f/95fIb/e32D/3l7gf9ydX// +bnF7/25wd/9sb3n/bnB3/2xvef9wc33/bnF7/3Byef9vcXn/c3V9/29yev91eH7/bG95/3V4gf9ucXv/ +bG51/3Z4fP9wcnn/dXd9/2xudf9vcXX/bnB3/29xdf9qbHP/bG51/2xudf9tb3P/bG51/21vc/9wc33/ +cHJ5/3Byef9wcnn/cHJ5/3V4gf9ucXv/bG95/3l7gf9ucXv/c3Z//25xe/9ucHf/cHJ5/25xe/9ucHf/ +bnF7/3Bzff9ucHf/cHJ5/3Byef92eHz/c3V8/25wd/9sbnP/cHJ5/3Bzff9ucXv/am13/29yfP9xdHv/ +a211/2psdP9wcnn/bG51/2xudf9sbnX/bW9z/3Z4fP92eHz/bnB3/3Z4fP9wcnn/am13/25xe/9zdXz/ +bnF7/2xudf9qbXf/bnF7/3N1fP9nanH/cHJ5/3Byef91d33/e32D/3Byef91d33/c3V8/3Byef9tb3P/ +cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/amxz/3Bzff9wc33/cHN9/2ptd/9sbnX/bG95/2dqcf9wcnn/ +bnB3/25xe/9wcnn/dXd9/2xudf9ucHf/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/d3qD/3Byef9ucHf/ +bW9z/3Byef9sbnX/c3V8/3Bzff9ucHf/bnF7/3V4gf95e4H/c3Z//3d6g/9ucXv/b3F1/3N1fP9ucHf/ +Zmhu/2ptd/9qbXf/d3l//2xudf9ucXv/bG51/2psc/9wcnn/c3V8/25wd/9ucHf/bG95/3Bzff9wcnn/ +bG95/3N1fP9ucHf/dXd9/25wd/9wcnn/am13/2xudf91d33/d3l//3t9g/9+f4P/fn+D/3l7gf+IipD/ +foGK/3l7gf9+gYr/foCG/3N1fP97fYP/e32D/3V3ff93eX//eHl9/3l7gf91d33/dXd9/3d6g/9zdXz/ +bG95/25wd/91d33/cHJ5/2xvef9sb3n/Z2p0/2psc/9qbHP/am13/2dqcf9qbXf/Zmlz/2Rncf9maG7/ +cHJ5/3V3ff9qbXf/c3V8/2Zobv9kZ3H/ZGdx/25wd/9kZ3H/Z2p0/3Bzff9ucXv/cHN9/3Bzff9ucHf/ +amxz/29xdf9wcnn/bnB3/2xudf9tb3P/dnh8/3V3ff9wcnn/b3F1/3Byef9wcnn/c3Z//3N1fP91eIH/ +bG95/2ptd/91d33/dXd9/2xudf9ucHf/dnh8/2xudf9wcnn/bG51/2xudf9maXP/am13/3N1fP9zdXz/ +bG51/2dqcf9wcnn/c3V8/3Z4fP9qbXf/dXd9/2ptd/9maXP/bG51/2Zpc/9maG7/Zmlz/2ptd/9sb3j/ +bW92/21vdv9tb3f/bnB3/2ptd/9nanT/cHN9/3Bzff9sb3n/b3F4/29yfP9rbnj/cXR9/2hrdf9ucXv/ +bG95/2ptd/9zdXz/bnF7/3Bzff9qbXf/am13/2xvef9vcXX/bG51/2xudf9sbnX/bW9z/2xudf9ucHf/ +cHJ5/21vc/9sb3n/am13/3Byef9zdXz/bG95/2ptd/9zdXz/bG95/3N1fP9sbnX/bnB3/25wd/9sb3n/ +bnB3/25xe/9zdn//bnB3/3Byef9wcnn/c3V8/3Fzev9ucXn/bG95/3Bzff9zdn//cHN9/25wd/9wc33/ +cXN6/2xud/9sbnX/cHN9/25wd/9wcnn/bnB3/25wd/91d33/c3V8/2xvef9zdXz/bnF7/25xe/9qbXf/ +bnF7/25xe/9qbHP/bG51/2ptd/9qbXf/Zmlz/2xvef9sb3n/bG95/3N2f/9sb3n/bnF7/25xe/9sb3n/ +bG95/25xe/9wc33/bG95/25xe/9sbnX/bG51/2dqdP9zdXz/dnh8/3Z4fP9wc33/bnB3/3Bzff9sb3n/ +bG95/29xdf9wcnn/dXiB/3d5f/9ucXv/c3V8/3N2f/9ucXv/bG95/3V4gf9zdn//cHN9/3l8hv91eIH/ +cHN9/3Byef93eoP/bnF7/3V4gf9zdn//cHJ5/3Byef91eIH/eXuB/3N2f/91eIH/c3Z//3Bzff92eHz/ +dXd9/2Zobv9ucHf/cHJ5/3V3ff9sbnX/bnF7/2xudf9nanT/cHJ5/3N1fP9sbnX/bnB3/25wd/9zdXz/ +bnB3/3Bzff9wc33/bnB3/3V4gf9wc33/dXiB/3N1fP91eIH/e32D/3l7gf95e4H/e32D/3t9g/91d33/ +g4WM/3d6g/9wcnn/dXiB/3V4gf9nanT/dXiB/3d6g/9wc33/c3V8/3N1fP9zdn//bG95/25wd/9ucXv/ +bG95/29xdf9sbnX/dXd9/3Bzff9sb3n/bnB3/25wd/9ucHf/b3F1/3N1fP9ucHf/dXd9/2ptd/9nanH/ +bW9z/3d5f/95e4H/cHJ5/3t9g/9ucHf/c3V8/21vc/91d33/bG51/3Byef93eX//bnF7/3N1fP9wcnn/ +bnB3/2dqcf9sbnX/bG95/2psc/9sbnX/Z2px/2xvef9zdXz/Z2px/2Zobv9qbXf/ZGdx/2xvef9sb3n/ +dXd9/2ptd/9qbHP/bnF7/25xe/9maXP/bG51/3N1fP9qbHP/cHJ5/2psc/9qbHP/ZGdx/2psc/9wc33/ +cHN9/2ptd/9nanT/bG95/25xe/91d33/bG51/3d5f/9ucHf/bG51/2psc/9wcnn/bG51/3Byef9wcnn/ +dHZ8/21vdv9tcHn/bG51/25wd/9sbnX/Zmlz/2xvef9sb3n/am13/25xe/9vcnn/bXB3/3V3fv9ucHf/ +cHN9/3Byef9sb3n/d3l//3N2f/93eX//bnF7/2xvef9wc33/bnF7/2xvef9ucXv/cHJ5/3N1fP91d33/ +c3Z//3d6g/9zdXz/cHJ5/25xe/91eIH/foCG/3V4gf9wc33/d3qD/3N2f/95fIb/c3Z//2xvef9sb3n/ +bnF7/3Byef9wc33/dXiB/25xe/9ucXv/cHJ5/3N2f/9ydX7/cHJ5/2xvef9ucXv/c3Z//3Bzff9wc33/ +cnV+/3J0ev9ucHn/a254/3Bzff9vcXX/b3F1/25xe/9wc33/dnh8/3N1fP9ucHf/d3l//3Byef92eHz/ +bnF7/3N2f/95e4H/cHJ5/25xe/9zdn//cHN9/25xe/91eIH/d3qD/3d6g/97fof/dXiB/3t9g/99foH/ +e32D/3d6g/93eoP/eXuB/3V4gf91eIH/dXiB/3V3ff92eHz/eXuB/3t9g/9+f4P/eXuB/3Bzff95e4H/ +cHN9/3Bzff9wcnn/bnF7/3V4gf95e4H/cHN9/3Bzff93eoP/bnB3/2ptd/9ucXv/bnB3/2xvef91eIH/ +cHN9/2xvef9vcXX/c3V8/25wd/9ucHf/c3V8/2xudf9sbnX/dXd9/3V3ff9wc33/dXiB/3V4gf9zdn// +eXuB/3N2f/9maXP/bnB3/3Bzff95e4H/dXiB/3l7gf9zdn//c3Z//3t9g/97fYP/c3V8/3Z4fP93eoP/ +eXyG/3d5f/97fYP/foCG/3h5ff9+f4P/e32D/35/g/91d33/eXuB/36Ahv9sb3n/am13/3Bzff92eHz/ +bnB3/3l8hv9wc33/bnB3/25xe/9ucXv/Zmlz/3V4gf97fYP/c3V8/3Byef9zdXz/d3qD/3V3ff93eX// +foCG/3Z4fP91d33/c3Z//3t9g/97fYP/d3qD/3V4gf91d33/dXd9/3N2f/95e4H/d3qD/3d6g/9sb3n/ +bG95/3Byef95e4H/e36H/3Bzff95fIb/cHJ5/3V4gf9zdXz/c3Z//29xdf9zdXz/dXiB/3Bzff93eX// +cHJ5/2xvef9qbHP/bnB3/25wd/9tb3P/bW9z/25wd/9zdXz/dXiB/2xvef9ucHf/c3Z//3Byef91d33/ +c3V8/3d5f/9wcnn/bW9z/3N1fP9zdXz/bG51/25wd/91d33/bW9z/3Bzff9sb3n/bnB3/2psc/9ucHf/ +dnh8/3N2f/9vcXX/amxz/2xvef9wc33/c3V8/2xudf93eX//bG51/2xudf9qbHP/dXiB/3N2f/9zdn// +cHN8/3N1fP9tb3b/cXN6/25wd/9ucHf/b3F1/25wd/9ucXv/c3Z//3Bzff92eYL/dHZ+/3Fzev93eX// +bW92/3V3ff9wcnn/bnB3/3N1fP9ucXv/cHN9/2xvef9sbnX/cHN9/2xudf9kZ3H/am13/2ptd/9nanT/ +Zmlz/2ptd/9wcnn/bG51/21vc/9ucHf/bnF7/3V3ff9sb3n/bG95/3N1fP9vcXX/dnh8/25wd/9sbnX/ +am13/25wd/9vcXX/b3F1/3Byef9vcXX/dXd9/3Byef90dn3/cXN9/25wd/9tcHn/bXB6/25xe/9ucHf/ +bnB3/3Byef9wc3r/bW94/2ptd/9zdXz/b3F1/21vc/9ucHf/bnF7/3V3ff9sb3n/bnB3/3V3ff9sb3n/ +c3V8/3Byef9zdXz/c3Z//25wd/9ucXv/bG95/25wd/9wcnn/cHN9/3N1fP9ucXv/d3l//25xe/9wc33/ +dXd9/3N2f/9wcnn/d3qD/3d5f/9zdn//c3Z//3Byef9wcnn/bnB3/25xe/9wc33/dXd9/2xudf9tb3P/ +c3V8/2dqdP9sbnX/bG51/21vc/9wcnn/c3V8/2Rncf9qbXf/bnF7/2xudf9tb3P/am13/2xudf9qbHP/ +dXd9/25xe/9qbXf/bG95/25xe/9sbnX/cHJ5/3V3ff9ucHf/cHJ5/3d5f/93eX//c3Z//3V4gf91eIH/ +bG95/3V3ff91d33/Zmhu/25wd/91d33/dnh8/3Byef9wcnn/b3F1/2xudf9wcnn/cHJ5/2Rncf9nanT/ +am13/2ptd/9nanT/bG51/2Zpc/9maG7/bG95/2dqdP9qbXf/Z2px/2dqcf9qbXf/c3V8/3Byef9wcnn/ +dnh8/2xudf93eoP/am13/21vc/9qbXf/bG51/2psc/9zdXz/d3l//25wd/9ucHf/b3F1/25wd/9qbXf/ +bG51/3V3ff9qbHP/amxz/29xdf9wcnn/c3V8/2xvef9ucHf/bG51/2ptd/9sbnX/c3V8/3N1fP9wcnn/ +amxz/2xudf9qbXf/c3V8/3V3ff9qbXf/d3l//2xudf9ucHf/bG51/2xvef9sbnX/cHJ5/3Z4fP9zdXz/ +c3V8/2ptd/9sbnX/amxz/2xudf9sbnX/bW9z/21vc/9sbnX/cHJ5/3V3ff9sbnX/bG51/3Z4fP9sb3n/ +dXd9/3Byef93eX//bnF7/29xdf91d33/cHN9/2xvef9wcnn/eHl9/3Byef95e4H/c3Z//25wd/9qbXf/ +bnB3/3d5f/91eIH/bnF7/25wd/9wc33/dXiB/3d5f/9ucHf/dXiB/25wd/9sb3n/Z2p0/2ptd/9sb3n/ +bnF7/25xe/9wc3z/bnB3/29yev9ucHf/b3F1/2xudf9qbXf/bnF7/3N2f/9wc33/bXB6/3F0ff9sbnf/ +cXR9/2ttdP9qbXf/Z2p0/2psc/9sb3n/bnF7/2xvef9ucHf/bG51/25wd/9sbnX/amxz/25wd/9vcXX/ +bnB3/2ptd/9ucHf/bnF7/2xvef9sb3n/cHN9/25xe/95e4H/cHN9/3Byef91eIH/cHN9/3l7gf9wc33/ +bG95/3Byef9ucHf/bnB3/21vc/9wcnn/bW9z/3Byef9ucHf/c3V8/2xudv9sbnX/a211/25xev9ucXv/ +bnB3/3Byef9ydHv/b3J7/25wef9ucHf/c3V8/25wd/9vcXX/b3F1/3Byef9zdXz/bG51/3N1fP94eX3/ +bnB3/3V3ff9ucHf/bnB3/3d5f/9wcnn/c3Z//3V4gf91eIH/bG95/3N2f/9wcnn/bnB3/3d5f/9sbnX/ +cHJ5/3V3ff91d33/b3F1/3N1fP92eHz/c3V8/3Byef9ucHf/bnB3/21vc/9sbnX/c3V8/3d5f/9ucHf/ +am13/25xe/9kZ3H/bG51/2ptd/9sbnX/bG95/3N1fP9maXP/bG51/2xvef9sb3n/bW9z/2xudf9ucHf/ +bnB3/3V4gf9ucXv/bnB3/25xe/9wcnn/bnB3/3Byef91d33/bG51/2xudf92eHz/d3l//3N1fP9zdXz/ +c3V8/25wd/91d33/c3Z//2dqcf9ucHf/dXiB/3t9g/91eIH/d3qD/3Bzff9ucHf/c3Z//3N2f/9sb3n/ +bnB3/3N1fP9ucHf/bnB3/3Bzff9ucXv/bnF7/3Z4fP91d33/c3V8/25wd/9tb3P/cHJ5/25wd/9sb3n/ +bnF7/3Z4fP9vcXX/e32D/25wd/9qbXf/am13/25wd/9nanH/cHJ5/3d6g/9sb3n/cHJ5/3Byef9wc33/ +bnB3/25xe/91eIH/am13/2xvef9ucHf/bnF7/3Bzff9sb3n/bnF7/29xdf9ucHf/bW9z/3N1fP9wcnn/ +c3V8/2xudf9ucHf/am13/3N1fP92eHz/am13/3V3ff9qbHP/am13/2xudf9qbXf/amxz/2xvef91d33/ +cHN9/3V3ff9sb3n/bG51/2dqdP9qbHP/bG51/2xudf9sbnX/bG51/2ptd/9wc33/amxz/2Rncf9ucXv/ +Z2p0/25xe/9sb3n/dXd9/2ptd/9qbXf/cHN9/25xe/9nanT/bG95/3V3ff9sbnX/cHN9/2ptd/9nanT/ +ZGdx/2xudf9zdXz/cHN9/25wd/9vcXX/bG95/3V3ff94eX3/bnB3/3l7gf9ucXv/bnB3/2dqdP91d33/ +bnB3/25wd/9wcnn/bnF7/21veP9wcnn/b3J8/3Byef9ucXv/am13/3Bzff9zdn//bG95/3Byef9ydH3/ +cHJ7/3V2e/9vcXf/cHJ5/25wd/9sbnX/cHJ5/3Bzff9wcnn/bnB3/25wd/9wcnn/bG51/2Rncf9sbnX/ +bG51/2dqdP9nanT/bG51/25wd/9ucHf/b3F1/3Bzff9wcnn/eHl9/3Byef9sb3n/cHN9/3Bzff93eX// +bG95/2xvef9ucXv/bG95/25wd/9vcXX/cHJ5/2xudf9ucHf/cHJ5/3N2f/9vcnz/b3J8/25xev9wc33/ +cHN9/3Byef9ucHf/bnB3/3Fzev9tb3b/bW91/25xe/9qbXf/bG51/2xudf9sb3n/c3V8/2ptd/9zdXz/ +dXd9/25wd/91d33/b3F1/25xe/93eX//bnB3/3Bzff9ucXv/c3Z//2xvef91eIH/bnF7/3Bzff95fIb/ +d3qD/3l8hv97fof/e32D/3V3ff95fIb/e32D/3N2f/9zdn//bnF7/3Bzff9wcnn/bG95/25xe/91eIH/ +bnB3/3Byef91d33/bG95/3Byef9sb3n/bnB3/3Bzff91d33/amxz/25wd/9wcnn/bnB3/25wd/9ucXv/ +bnF7/2ptd/95e4H/bnF7/25xe/9zdn//cHN9/3Byef9wc33/d3l//3N1fP9wcnn/dXd9/3V4gf9wcnn/ +cHN9/25xe/9ucXv/dXd9/3V4gf9maXP/am13/3Bzff94eX3/c3V8/3N1fP9vcXX/b3F1/3Byef91d33/ +bnB3/2ptd/9wcnn/cHJ5/21vc/9zdXz/bG95/2ptd/91d33/c3V8/3V3ff9qbXf/am13/2xudf91eIH/ +d3qD/3l8hv9+gIb/c3Z//4GDiv9zdn//c3Z//3Bzff9ucXv/am13/3N1fP95fIb/bnB3/25wd/9ucHf/ +cHJ5/2xudf9sbnX/c3V8/2dqcf9sbnX/bG95/25xe/9zdn//bG95/2xvef9ucHf/bnB3/25wd/9wc33/ +cHN9/3N2f/9ucHf/amxz/29xdf91d33/eHl9/2xudf92eHz/bW9z/25wd/9ucHf/bnF7/25wd/91d33/ +dXiB/3V3ff92eHz/bnB3/2xudf9nanH/bnB3/2xudf9vcXX/bG51/2xudf9qbXf/bnF7/2ptd/9qbXf/ +c3V8/2psc/92eHz/c3V8/3V3ff9wcnn/bnB3/3N2f/9wc33/am13/2xvef95e4H/bnB3/3Z4fP9ucHf/ +bG51/2psc/9vcXX/dXd9/3N1fP9sb3n/cHJ5/25xe/95e4H/eXuB/3Byef93eX//bnB3/29xdf9nanH/ +am13/2Rncf9maG7/Zmlz/2tueP9oa3P/am11/2ptd/9qbXf/bG51/2Rncf9qbXf/c3V8/2xudf9qbHP/ +b3F6/2xud/9zdXr/bnB3/3Byef9wcnn/bnB3/3N1fP91eIH/cHN9/3N1fP9sb3n/cHN9/25wd/9nanT/ +b3F1/29xdf9ucHf/bG51/2xvef9ucHf/bG51/2ptd/9ucXv/am13/3Z4fP9sbnX/bW9z/3Byef9wcnn/ +dXd9/2xudf9nanT/bG95/2ptd/9nanT/bG51/25xe/9ucHf/cHJ5/2ptd/9vcnz/bW92/2xvd/9sb3n/ +bG95/2dqdP9nanT/Z2p0/2ttdP9sb3n/bXB4/2xveP9zdn//bG95/2xvef9ucHf/cHN9/3N1fP9qbXf/ +dXd9/3d5f/9qbXf/c3V8/2xudf9tb3P/d3l//2ptd/9ucXv/bG95/3Bzff9qbXf/bnF7/2psc/9maXP/ +cHJ5/2ptd/9qbXf/cHN9/25xe/9sbnX/cHJ5/3N1fP9ucHf/bnB3/2xvef9wcnn/bG51/2xvef9wc33/ +dXiB/2xvef9ucXv/d3l//2xvef9ucXv/bnB3/3Bzff9zdn//dXiB/2xvef9wc33/c3Z//25wd/9ucHf/ +cHJ5/25wd/9nanH/dXd9/25wd/9tb3P/bG51/25wd/9tb3P/bG51/2xvef9sbnX/bW9z/3h5ff91d33/ +cHJ5/3N1fP9wcnn/cHJ5/3Z4fP9wcnn/Z2px/2xudf9zdn//dXd9/25xe/9zdn//cHN9/3Bzff91eIH/ +eXuB/3N1fP9ucXv/d3qD/3t9g/92eHz/fn+D/3l7gf97fYP/fX6B/3t9g/97fYP/c3V8/3Bzff91eIH/ +c3V8/3Byef9zdXz/dXd9/25wd/9+gYr/d3qD/3N1fP9zdXz/cHN9/2xvef95e4H/f4GH/3Bzff9zdXz/ +cHN9/3Bzff9ucHf/bG95/3N2f/9nanT/bnB3/3Byef91eIH/dXiB/3N2f/9zdn//c3V8/3Bzff9zdXz/ +c3Z//25xe/9zdn//bnB3/2xvef9ucXv/dnh8/3Z4fP9wcnn/dnh8/21vc/9zdXz/bG51/2xvef9tb3P/ +c3V8/3V3ff9ucXv/cHN9/2ptd/9nanT/XF9o/2Zpc/9qbXf/amxz/2dqcf9sbnX/bG51/3Bzff9nanH/ +Zmlz/25xe/9qbXf/c3V8/3V3ff91d33/bG51/2psc/9wc33/am13/2dqdP9qbXf/dXiB/25wd/92eHz/ +bnF7/25wd/9sb3n/b3F1/3N1fP9wcnn/bnB3/21vc/9sbnX/dXd9/3N1fP9tb3P/eHl9/29xdf9vcXX/ +Zmhu/3V3ff9ucHf/bG95/3Byef9xdH3/bnF7/3Fze/9ucHf/bnB3/29xdf9sbnX/c3V8/3N1fP9ucHf/ +b3F1/3J0ev9zdn//dnmD/3N2f/91eIH/bnF7/25xe/91eIH/eXyG/3d6g/91eIH/c3Z//3d6g/9wc33/ +bnF7/25wd/9sb3n/bG95/2xvef9zdn//dXiB/3Byef9sb3n/dXd9/3Bzff93eX//bnB3/2ptd/9wcnn/ +cHJ5/3Z4fP9ucHf/bG95/3N1fP9vcXX/am13/2xvef9zdXz/cHJ5/3N2f/9zdn//d3qD/3Bzff9xdH7/ +c3Z9/3J1fP9zdXz/bnB3/2xudf9sb3n/bnF6/21veP9tb3j/c3Z//2xvef9ucHf/bnB3/3N1fP94eX3/ +b3F1/3V3ff93eX//bnB3/3V3ff9ucHf/cHJ5/3V3ff9ucHf/bnF7/2xudf9ucXv/Z2p0/3Bzff9qbXf/ +am13/25xe/9sb3n/Z2p0/2xvef9qbXf/YmVu/2Rncf9maXP/Zmhu/2Zobv9maG7/Z2p0/2Rncf9maG7/ +Zmlz/25wd/9maG7/Zmhu/2xvef9gY2z/Zmlz/2Rncf9nanH/Zmlz/2Rncf9cX2j/Zmlz/2Zpc/9kZ3H/ +YmVu/2Zpc/9nanT/YmVu/3N1fP9nanH/Zmhu/2Zpc/9qbHP/Z2px/2xudf9sb3n/am13/2xudf9wc33/ +c3V8/25xe/9sb3n/am13/2ptd/9zdXz/bnB3/2Zobv9nanT/bnF7/3Bzff9sb3n/bG95/2ptd/9sbnX/ +bG95/2xvef9sbnX/Zmlz/2ptd/9ucXv/am13/3N1fP9sbnX/cHJ5/3Byef9zdXz/dXd9/2xudf9vcXX/ +c3V8/25xe/9wc33/bnF7/3Bzff9sbnX/e32D/3V3ff9ucHf/cHJ5/2xvef9nanT/dXd9/3l8hv9sb3n/ +b3F1/25wd/9ucHf/bnB3/25wd/9zdn//am13/25wd/9wcnn/c3Z//3N2f/9ucHf/cHN9/3Byef9wc33/ +bnF7/3V4gf9ucXv/dXd9/25wd/9qbHP/bnB3/3V3ff91d33/bnB3/3Z4fP9sbnX/c3V8/25wd/9sbnX/ +bG51/25xe/9zdXz/c3V8/3V3ff9zdXz/bG51/2RmbP9nanT/am13/2dqdP9sbnX/bG95/25wd/9ucXv/ +bG51/2dqdP9zdXz/bG95/3V3ff91d33/dXd9/2xudf9sbnX/dXd9/25wd/9vcXX/c3V8/3l7gf9sbnX/ +c3V8/2dqdP9nanT/Zmlz/2ptd/9ucXv/bG95/2xudf9qbXf/amxz/3Bzff9wc33/bG51/3N1fP9sbnX/ +bG51/2Jlbv93eoP/c3Z//3V4gf94e4X/eXuC/3V3ff9ydX3/a254/3Byef9tb3P/bnB3/3Byef9zdXz/ +bW9z/21vc/9xcnj/dHZ+/3l6f/94eoH/foCG/3d5f/95e4H/c3Z//3d6g/97fYP/dXiB/3V4gf9zdn// +c3V8/3N1fP9zdXz/cHN9/2xvef9zdXz/d3qD/3N2f/9zdXz/bG95/3Bzff9wc33/d3l//3Byef9qbXf/ +cHJ5/2xvef91d33/bG51/25wd/91d33/bnB3/2psc/9ucHf/c3V8/2xvef9ucHf/bG51/3Byef9ucHf/ +cnR6/3N1e/9wcnn/dXd9/2ptd/9sb3n/am13/2tudv9qbXf/am13/3Bzff9sbnX/cHJ5/2xudf9qbXf/ +dnh8/21vc/9sb3n/c3V8/2xudf9wcnn/bW9z/3Byef93eX//bnB3/2xvef9sbnX/cHN9/2xudf94eX3/ +bnB3/25wd/93eX//dXd9/25xe/91eIH/dnh8/25wd/9wc33/dXd9/3N1fP9ucHf/bnF7/3l7gf9wcnn/ +bnF7/3N2f/93eoP/bnF7/25xe/93eX//cHJ5/25xe/9ucHf/bnF7/2xvef9ucXv/bG51/2xvef9wc33/ +b3F1/25wd/9wc33/bnB3/2psc/94eX3/bnB3/29xdf9ucHf/bG51/25wd/9ucXv/cHN9/3Byef9ucXv/ +dXiB/3l7gf95e4H/cHN9/3Bzff9ucXv/eHl9/3V3ff9nanH/bG51/3Byef91d33/b3F1/25wd/9tb3P/ +bG51/25wd/9ucHf/bG51/2dqdP9sb3n/am13/2Rncf9qbXf/bG51/3Bzff9qbXf/bG95/2xvef9kZ3H/ +Z2p0/3Bzff9zdXz/c3V8/3N1fP91d33/bnB3/3t9g/9zdn//cHJ5/3N1fP9wcnn/am13/3d6g/95fIb/ +cHN9/3Bzff9zdn//cHN9/3Byef9wcnn/d3qD/2xvef9zdXz/cHJ5/3V4gf95e4H/c3V8/3Bzff91d33/ +d3qD/3d6g/91eIH/d3qD/3d6g/91eIH/dXd9/3t9g/97fYP/e32D/3l8hv97fof/cHN9/3d6g/9wc33/ +c3Z//3N2f/93eoP/eXuB/3V4gf95e4H/dXiB/2ptd/9qbXf/cHJ5/25wd/9sbnX/bG51/2xudf9ucHf/ +c3V8/21vc/9nanT/cHN9/25xe/93eX//dXd9/3Bzff9qbXf/bG51/3N1fP9sb3n/bG51/25xe/91eIH/ +am13/25xe/9kZ3H/amxz/2Rncf9nanT/cHJ5/2ptd/9nanH/Z2p0/2Rncf9maXP/Zmlz/2Zobv9nanT/ +YmVu/2Zobv9cX2j/bnF7/2ptd/9ucHf/b3F4/2tueP9tb3f/am12/2dpb/9maXP/Zmlz/2Rncf9maXP/ +Z2p0/2dqcf9sbnT/a254/2tueP9wc3r/a253/25xe/9tb3P/bnF7/2xudf9sb3n/bnF7/2xudf9qbHP/ +am13/2Rncf9maXP/Z2px/2xudf9iZW7/Z2p0/2xvef9qbXf/amxz/2dqdP9sb3n/bnF7/3V3ff9wcnn/ +bnB3/3Bzff9wc33/e32D/3Bzff9ucHf/d3qD/3Bzff9sb3n/dXd9/3l8hv9zdn//d3qD/3N2f/93eoP/ +cXR9/3Z4fv9ydHv/dHZ9/3Z4fP9ucHf/cHJ5/3Bydv9wcnr/b3F4/25wd/91eIH/bnB3/25xe/9sb3n/ +cHJ5/3Z4fP9tb3P/am13/3N1fP9qbXf/bnF7/2dqcf9ucXv/dXd9/2xvef9ucXv/bG51/2xvef9qbHP/ +dXd9/2ptd/9sbnX/dnh8/3N1fP9sb3n/dXd9/25xe/9nanT/Z2p0/25xe/9sb3n/amxz/2psc/9wc33/ +am13/2xudf9wc33/dXd9/2psc/9qbHP/bnF7/2dqcf9sbnX/bW9z/25wd/9sbnX/bnB3/2xudf9qbXf/ +bnF7/21vc/9vcXX/dXd9/21vc/9qbHP/eXuB/25xe/9wc33/cHN9/2xvef9ucHf/cHJ5/2xvef9ucHf/ +bG95/25xe/91d33/dnh8/25xe/9sbnX/am13/3N1fP9ucXv/YmVu/2ptd/9sb3n/bnF7/2psc/9qbHP/ +Z2px/2dqcf9nanH/Z2px/2dqdP9maXP/am13/2dqdP9kZ3H/bG95/2psc/9wc33/bG95/3Bzff9zdXz/ +Z2px/21vc/9zdn//cHN9/3Z4fP91d33/c3Z//25xe/95fIb/c3Z//25wd/9ucHf/bnB3/2ptd/9zdn// +e32D/25wd/9vcXX/cHN9/25xe/9ucHf/cHJ5/3V4gf9nanT/bnB3/25wd/93eoP/c3Z//2xvef9ucHf/ +bG95/3Bzff9wcnn/cHN9/2xvef9ucXv/bG51/2xudf9ucHf/bnF7/3N1fP9zdXz/dXd9/25wd/9wcnn/ +am13/2xvef9qbXf/cHN9/3Bzff9sb3n/cHN9/2xvef9iZW7/YGNs/2psc/9sb3n/Zmlz/2xudf9sbnX/ +bW9z/3N1fP9tb3P/amxz/3N1fP9ucHf/d3l//3V3ff9ucXv/am13/2ptd/9wc33/am13/2ptd/9ucHf/ +e32D/3Byef91d33/bG51/25wd/9ucHf/cHJ5/3V3ff9ucHf/amxz/25xe/9wcnn/bG95/25xe/9sbnX/ +cHN9/29xdf9sbnX/Z2px/2xvef9qbHP/am13/2xvef9tb3b/b3F5/29yev9tb3P/cHJ5/2xvef9sbnX/ +bG51/3N1fP9vcXX/a211/2xudv9vcXn/cnR7/25wd/9wcnn/bG51/2xvef9qbHP/am13/2xvef9sbnX/ +Z2p0/25xe/9nanT/am13/2xudf9qbXf/Zmlz/2ptd/9sb3n/bG95/2ptd/9qbXf/c3V8/3Byef92eHz/ +cHJ5/25wd/9sb3n/bG95/3N1fP9wcnn/bG51/3N1fP9qbHP/Z2px/2xudf9ucHf/bW9z/3Bzff9qbHP/ +bG51/25weP9xdHv/cXR8/25xe/91d33/b3F1/3N1fP9ucHX/bnB3/21vdf9rbXP/c3V8/2ptd/9sb3n/ +am13/2xudf91d33/bG51/2xvef91d33/bnB3/3Byef9sbnX/cHN9/3V4gf9wcnn/bG95/2ptd/9wcnn/ +b3F1/3h5ff9tb3P/bG51/3N1fP91d33/bnB3/3l7gf9zdn//bnF7/3Byef93eX//d3l//25xe/9wcnn/ +d3l//2xvef9sb3n/cHN9/3V3ff9ucHf/bnB3/3V3ff9ucHf/bG95/2xudf9wcnn/bnB3/3Byef9ucHf/ +bnB3/25xe/9qbXf/bW9z/3Bzff9qbHP/ZGdx/3N1fP9qbHP/am13/2xvef9nanT/amxz/2xudf9qbXf/ +bG51/2xudf9sb3n/dXd9/2xvef9ucXv/bG95/2xudf9zdXz/bG95/2BjbP9maXP/bG95/3Bzff9nanT/ +am13/2dqdP9qbHP/am13/2ptd/9qbXf/Z2p0/25xe/9sb3n/Zmlz/2xvef9sbnX/cHN9/2ptd/9zdXz/ +c3V8/2Rncf9sbnX/dXd9/3N2f/91d33/dXd9/3V4gf9ucXv/dXiB/3Bzff9ucHf/cHJ5/25wd/9sb3n/ +c3Z//3t9g/9sb3n/b3F1/25wd/9ucHf/b3F1/29xdf9zdXz/Zmhu/25wd/9sbnX/c3V8/3Bzff9qbXf/ +bnB3/2psc/9wcnn/am13/3Byef9sbnX/cHJ5/2xudf9tb3P/bG51/3Byef91d33/bnF7/3d5f/9ucHf/ +cHJ5/3Byef9ucHf/cHN9/3V3ff95e4H/dXd9/3V3ff9wc33/bG95/2ptd/9vcXX/bnB3/2ptd/9sb3n/ +bnB3/21vc/9zdXz/bW9z/2psc/91d33/am13/3V4gf94eX3/cHJ5/25wd/9ucHf/cHJ5/2xudf9qbXf/ +bG95/3N2f/9qbXf/bG95/2Rncf9nanT/Zmlz/3Bzff9wc33/am13/2dqdP9sb3n/bnF7/2xudf9ucXv/ +amxz/2xvef9sbnX/bnF7/2Rncf9zdXz/bG51/21vc/9sbnX/b3F4/3FzfP9vcnv/bnB3/3N2f/9zdn// +bnF7/3Byef9wc33/bnB3/25xe/9xc3v/cXR9/3d5gP9wc33/dXiB/3Bzff9ucXv/bnB3/25xe/9wc33/ +bnF7/25wd/93eX//bG95/25xe/9wc33/cHN9/2xvef9wcnn/c3Z//3Bzff9wc33/c3V8/3d6g/91eIH/ +e32D/3Byef9zdn//cHN9/3N2f/93eX//c3Z//3Byef91eIH/cHN9/3Bzff9zdn//d3qD/3V4gf97fYP/ +c3V8/3Bzff9xdH3/cnR7/3F0fv9wc3r/cHJ5/2xudf9wc33/am13/25xev9tb3b/a210/3N1fv9wc33/ +c3Z//2xvef9wcnn/dXd9/2xudf9zdXz/eHl9/3Bzff9zdXz/bnB3/3V3ff93eoP/c3Z//3N2f/91d33/ +eXuB/3N1fP97fof/c3Z//3N2f/9+gIb/e32D/3l8hv9/gYf/d3qD/3N1fP9zdXz/foCG/3t9g/93eoP/ +dXiB/36Ahv91d33/c3V8/3t9g/9+gIb/dXd9/3N1fP93eX//bG95/25wd/9vcXX/c3Z//25xe/91eIH/ +bnB3/3Byef9zdXz/bnF7/3Byef91eIH/cHN9/3V3ff95fIb/cHN9/3V4gf95fIb/dXd9/3N1fP9zdn// +cHN9/3Byef9ucXv/cHN9/3d6g/91eIH/c3Z//3V4gf9ucXv/dXiB/3V4gf9nanT/bG51/3N2f/93eX// +cHN9/25wd/9sbnX/bG51/25wd/9sbnX/c3V8/2xudf91d33/bnB3/2psc/9zdXz/bG51/3V3ff9ucHf/ +c3Z//3h5ff9qbHP/bnB3/3N2f/9wc33/c3V8/3N1fP9zdXz/cHN9/3h5ff9ucHf/bnB3/25wd/9nanT/ +bG95/3V4gf9/gYf/cHN9/3Byef9ucXv/cHN9/3Byef9zdXz/dXiB/2dqdP9wc33/bnB3/3Bzff93eoP/ +c3V8/3N2f/9ucXv/dXiB/3Bzff91eIH/c3V8/3t9g/91eIH/c3Z//3d6g/91eIH/e32D/3l8hv9+gYr/ +eXuB/3l7gf95fIb/dXiB/3t9g/97fof/e36H/3l7gf95e4H/d3qD/25xe/9qbXf/cHJ5/3N1fP9sb3n/ +bnF7/3Byef9wcnn/dXd9/29xdf9qbHP/dnh8/3N1fP93eX//dnh8/2xvef9qbXf/bG95/25xe/9sbnX/ +bG95/2xvef93eX//bG95/25xe/9qbXf/am13/2dqdP9zdXz/bG95/2psc/9nanT/bG95/2xvef9qbHP/ +Z2p0/2dqcf9sb3n/Zmhu/2Rncf9dYGr/cHJ5/2xudf9sb3n/a210/2ttdf9rbnj/aGpx/2Rncf9maXP/ +Zmlz/2Zobv9iZW7/ZGdx/2Jlbv9maXP/aGpw/2xvd/9xc3r/bG51/3N1fP9qbXf/bnF7/2ptd/9sb3n/ +bnF7/25wd/9sbnX/dXd9/2psc/9sbnX/bnB3/29xdf9nanH/bnB3/25wd/9ucXv/bnB3/2xvef9zdXz/ +dnh8/3V3ff9sb3n/cHN9/3Byef9ucXv/c3Z//3Bzff9wcnn/dXiB/25xe/9ucXv/bG95/3V4gf91eIH/ +foCG/3V3ff91eIH/dHeA/3R3fv90d4D/dHeA/3Bzff9ucXv/cHJ5/2xudf9vcXj/bW94/21vdv9zdn7/ +cHN9/3Z4fP9ucHf/c3V8/3V3ff9ucHf/dXiB/3d5f/91d33/cHJ5/2xudf9sb3n/dXd9/25xe/9sb3n/ +Zmlz/25xe/9qbHP/bnF7/2ptd/9qbHP/cHN9/2xvef9ucXv/dXiB/2xvef9tb3P/am13/3N1fP9ucXv/ +Z2p0/2psc/9wcnn/Zmlz/2Zpc/9sb3n/bnF7/2dqdP9sbnX/c3V8/2ptd/9qbXf/amxz/25xe/9sb3n/ +bG95/2dqdP9sbnX/bnB3/25wd/9tb3P/cHJ5/2xudf9qbXf/dXd9/3Byef9ucHf/bnB3/25wd/9ucHf/ +bnF7/3Bzff9ucHf/bnF7/2xvef95fIb/bnF7/25xe/9wc33/bG95/3V4gf9zdXz/ZGdx/2Zpc/9wc33/ +bnF7/2ptd/9sb3n/am13/2xvef9qbXf/amxz/2ptd/9maXP/bnF7/2Zpc/9gY2z/am13/2psc/91d33/ +bG95/2xvef91d33/ZGdx/2psc/9ucXv/dXiB/3Z4fP91eIH/d3l//3d6g/97fYP/d3qD/3N2f/9zdn// +cHN9/3V3ff97fYP/g4WM/3Bzff9ucXv/cHN9/3Byef9ucHf/cHJ5/3V4gf9qbHP/dXiB/25wd/9ucXv/ +dXiB/25wd/9wcnn/am13/3Bzff9ucXv/cHJ5/21vc/9zdXz/bnB3/21vc/9zdXz/bnB3/3h5ff9ucHf/ +dXd9/25wd/9ucHf/c3V8/2xudf9wc33/d3l//3d5f/91eIH/cHN9/3N2f/9nanT/Z2p0/25xe/9sb3n/ +bG95/2xvef9ucHf/bnF7/3V4gf9wcnn/Zmlz/3V3ff9wc33/d3l//3h5ff91d33/b3F1/25wd/9zdXz/ +bnB3/3Byef9ucHf/d3l//25xe/9sb3n/bG51/2xudf9sbnX/cHN9/3V3ff9ucHf/bG51/3N1fP91d33/ +bW9z/25wd/9tb3P/bnF7/2ptd/9sbnX/Zmhu/2xvef9qbHP/bnF7/2xudf9vcXb/cXN7/29xev9sb3n/ +c3Z//25xe/9ucHf/bG95/2xvef9ucHf/cHJ5/21vdv9wcnj/dXd7/29xe/9wc33/bnF7/3Byef9ucHf/ +cHJ5/3Bzff9ucHf/bnB3/3Z4fP9nanT/am13/2xudf9tb3P/ZGZs/29xdf9ucHf/c3V8/25wd/9ucHf/ +bnB3/3N1fP91d33/bnB3/3N2f/9ucHf/bnB3/3N1fP9wc33/cHJ5/3N2f/9sb3n/Z2p0/2ptd/9zdn// +bnF7/3d5f/9wc33/cXN9/3R3f/91eH//dXiB/3V4gf9wc33/bnF7/3Bzff9ucXr/cnR9/3Bzff9ucXv/ +dHZ9/3N2f/91d33/bG95/3Byef91d33/bG95/3Bzff91eIH/c3V8/2xvef9ucHf/c3V8/3V3ff9wcnn/ +bnB3/25wd/92eHz/bG95/3d5f/9ucXv/bnB3/3l7gf9zdXz/c3V8/3l7gf9ucHf/bW9z/2xudf92eHz/ +cHJ5/3Byef9sbnX/dnh8/2ptd/9qbXf/dXd9/3Z4fP9sbnX/bnB3/3d5f/9ucHf/amxz/2xudf9zdXz/ +bnF7/3Bzff9qbXf/bG51/21vc/9wcnn/bnB3/3N2f/9ucHf/bG51/3Bzff9ucHf/bnB3/3Bzff9ucHf/ +b3F1/29xdf9wc33/cHJ5/3N2f/91eIH/foGK/3V4gf95fIb/eXyG/3N2f/9+gYr/d3qD/3Bzff9wc33/ +e32D/3d6g/91eIH/eXyG/3N2f/95fIb/dXiB/3V4gf95fIb/cHN9/3t9g/95fIb/cHN9/3V4gf9wcnn/ +d3l//3V3ff92eHz/eXuB/2dqdP9ucHf/dXiB/2ptd/9ucXv/bG95/3Bzff9sb3n/dXd9/2xudf9qbXf/ +am13/2dqdP9nanT/bnF7/3l7gf9sbnX/bG51/25wd/9sbnX/am13/2xudf9ucXv/ZGZs/2ptd/9maXP/ +bG95/3N1fP9nanT/amxz/2Zpc/9qbXf/bG51/25wd/9tb3P/dXd9/3Byef9sbnX/dXd9/3Byef92eHz/ +c3V8/3h5ff9ucHf/bG51/3V3ff9ucXv/dXiB/3l8hv95fIb/d3qD/3N2f/91eIH/bnF7/25xe/91eIH/ +cHJ5/3Byef9zdn//bnB3/25wd/9wc33/bnF7/2dqdP91eIH/dXiB/3l7gf95fIb/dXiB/3N1fP9wc33/ +c3Z//2xvef9zdn//bnF7/3l7gf9zdn//bnF7/25wd/9vcXX/b3F1/3N1fP9zdXz/bnB3/2psc/9zdn// +dXd9/2xudf9wcnn/bG95/2xvef9sbnX/bG51/1xfaP9ucXv/bG95/3N1fP9tcHr/bW91/3ByeP9tb3j/ +aGp0/2xvef9qbXf/bG95/2dqdP9sbnX/bnB3/29xef9oa3X/bG93/3Byev9rbnj/bnF7/2xudf9sb3n/ +bG95/2xvef9sb3n/bnB3/2ptd/9wc33/Z2p0/2ptd/9qbXf/bG51/2Jlbv9qbHP/Z2p0/2xvef9qbHP/ +amxz/2ptd/9ucXv/bG95/2psc/9ucXv/am13/2xudf9ucXv/bG95/2xudf9sbnX/ZGdx/2dqdP9kZ3H/ +bG95/3Byef9zdXz/bG95/21vdP9ucHf/cnR6/3Fzev9vcXj/bG95/2xudf9ucHf/bG51/2ptd/9rbnj/ +a254/3J1fv91d33/dXd9/29xdf9wcnn/c3Z//25xe/91eIH/d3qD/3N2f/9ucHf/bnB3/3N1fP93eX// +bnF7/25xe/9qbXf/c3Z//3Bzff91d33/bnF7/2xudf94eX3/cHJ5/3V3ff91eIH/bnF7/25wd/9sb3n/ +dXd9/25wd/91d33/bG51/3Z4fP9qbHP/Z2p0/3Bzff92eHz/bG51/3Byef92eHz/bW9z/2xudf9vcXX/ +dnh8/3N1fP9zdXz/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/bG51/2ptd/9ucXv/am13/2psc/9wc33/ +Zmlz/2ptd/9maXP/am13/2dqcf9maXP/Z2px/25wd/9kZ3H/Zmhu/2Zpc/9nanH/cHJ5/2Zpc/9gY2z/ +YmVu/2Zpc/9qbXf/Zmhu/2dqdP9iZW7/Z2p0/2Zobv9maG7/am13/2Rncf9maXP/Zmhu/2BjbP9maXP/ +ZGdx/2ptd/9nanT/bG95/3Byef9kZ3H/ZGdx/2ptd/91d33/dXd9/3V3ff94eX3/cHJ5/3N2f/9ucXv/ +c3V8/3V4gf9zdXz/bnB3/3N2f/9+gIb/bnB3/29xdf9ucHf/bG51/2xudf9ucHf/dXd9/2ZobP9ucHf/ +bG51/25wd/92eHz/bG51/2xudf9qbHP/bnB3/29xdf9ucHf/bG51/3Bzff9qbXf/bG51/25xe/9wc33/ +bG95/3Bzff9zdXz/am13/2xudf91d33/bG51/3Byef91d33/d3l//3N2f/9ucXv/cHN9/2xvef9sbnX/ +cHJ5/29xdf9sbnX/bG95/2ptd/9vcXX/c3V8/3Byef9maG7/c3V8/3N1fP92eHz/d3l//3V4gf9ucHf/ +cHN9/3Bzff9wcnn/d3qD/3Bzff95e4H/cHN9/2xvef9sb3n/bnB3/29xdf91d33/dXd9/3Bzff9sb3n/ +dXiB/3V3ff9ucHf/cHJ5/3Byef9wcnn/bnB3/3Byef9maG7/cHJ5/25wd/9wc33/bnB3/25weP9wcnn/ +bXB5/25wd/9wcnn/b3F1/3N1fP9sbnX/bnB3/3Byef9vcXj/bG52/2xvef9vcnv/bXB5/2xvef9sbnX/ +bG95/2Zpc/9nanT/Z2p0/2psc/9nanH/cHN9/2Zpc/9qbXf/am13/2ptd/9iZW7/bG51/2xvef91d33/ +bnB3/25wd/9zdn//d3qD/3N2f/9wcnn/dXiB/3N2f/9zdXz/eXyG/3V4gf91d33/dXiB/3N1fP9zdn// +bnF7/3l8hv99foH/foCG/3V4gf91d33/dXiB/3V3fv90d4D/cXR+/25xe/9wcnn/c3Z//3Byef9wcnr/ +cHJ5/2tueP90d4D/d3l//3V3ff9ucHf/cHN9/3V3ff9wc33/c3Z//3d6g/91d33/bG95/2xvef9zdn// +eXyG/25xe/9ucHf/bnB3/3Z4fP9wcnn/c3V8/2xudf9nanH/cHN9/2ptd/9ucXv/d3l//21vc/9tb3P/ +b3F1/3Z4fP9ucHf/cHJ5/2ptd/94eX3/bnB3/2dqcf9ucHf/c3V8/2psc/9wcnn/dnh8/29xdf9qbHP/ +bW9z/3N1fP9zdXz/cHJ5/2xudf9qbXf/am13/2xvef9qbHP/am13/2dqcf9kZ3H/am13/2psc/9maG7/ +Z2p0/1xfaP9gY2z/YmVu/2dqdP9kZ3H/ZGdx/2Zobv9ucHf/Zmlz/2Rncf9nanT/Z2px/25xe/9qbXf/ +ZGdx/2Zpc/9wc33/c3V8/2xudf9zdXz/bG51/2xvef9qbXf/am13/3N1fP9ucHf/cHJ5/25xe/9maXP/ +cHN9/25wd/92eHz/cHJ5/25xe/9zdXz/amxz/2xudf91d33/dXd9/3N1fP92eHz/d3l//3N1fP91d33/ +bG95/29xdf9wcnn/amxz/2xudf9wcnn/eXuB/3Byef9tb3P/bG51/2Zpc/9nanT/am13/3N1fP9gY2z/ +am13/2dqdP9qbXf/bnF7/2dqcf9ucHf/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/cHJ5/21vc/9wcnn/ +dXd9/3Byef92eHz/dnh8/25xe/9ucXv/eXuB/3N1fP91eIH/e36H/3t+h/93eX//cHN9/3N2f/9ucHf/ +am13/3V3ff9ucHf/bG95/3Byef9sb3n/bnF7/3N2f/9ucXv/am13/3N1fP9ucXv/dXd9/3d5f/91eIH/ +bG95/25wd/9ucXv/bnB3/3N2f/9sb3n/d3l//3Bzff9ucXv/bG95/25wd/9ucHf/d3l//3Z4fP9sb3n/ +am13/3V3ff9zdXz/bnB3/3N2f/9wc33/cHN9/3N2f/91eIH/Z2p0/25xe/9ucHf/dXd9/3R3gP9wcnv/ +cnR8/3Bzff9ucXv/c3Z//25xe/9zdn//bG95/3Bzff9zdn//bnF7/3F0ff9zdn//cXR+/3F0ff9wcnn/ +bW9z/3N1fP9ucHf/bG95/2ptd/9qbHP/amxz/2xvef9maXP/Z2p0/2ptd/9qbXf/ZGdx/2psc/9qbXf/ +dXd9/2xudf9tb3P/cHJ5/3N1fP9wc33/Z2px/25xe/9sbnX/bW9z/3Byef9sbnX/am13/2xudf9ucHf/ +bG51/2Zpc/9ucXv/dXd9/3N1fP9sbnX/bG92/29xef9wc3v/dHd//3F0ff9wcnn/cHJ5/3Byef9ydHz/ +bnB4/21weP9tb3f/cHN9/3Bzff9wc33/amxz/2xvef95e4H/dXiB/3N2f/9+gYr/eXyG/3d5f/93eX// +foCG/4OFjP97fYP/dXiB/25xe/95fIb/c3Z//3t9g/9wc33/cHN9/3d5f/9wc33/c3Z//3d6g/9ucXv/ +cHN9/29xdf93eX//bnB3/3N1fP9ucHf/eHl9/2psc/9maXP/bG95/25xe/9maXP/bG51/3N1fP9sbnX/ +Zmlz/2xudf9zdXz/cHN9/25xe/9qbXf/am13/2Zpc/9ucXv/amxz/2dqdP9maXP/Zmlz/25xe/9qbHP/ +Z2px/2dqdP9iZW7/Zmhu/2Jlbv9nanT/Zmhu/2Zpc/9maG7/bnB3/2dqdP9kZ3H/Z2p0/2Rncf9nanT/ +ZGdx/11gav9gY2z/am13/2ptd/9maG7/am13/2dqcf9ucXv/bnF7/2ptd/9zdXz/am13/2ptd/9qbXf/ +Z2px/3N1fP9ucHf/eHl9/3Bzff9wc33/d3l//2xudf9ucHf/c3Z//3l7gf91eIH/eXuB/3l8hv91eIH/ +dXiB/3V4gf9wc33/dXiB/25xe/9ucHf/bnF7/3l8hv9zdn//cHJ5/3Bzff9ucXv/cHN9/3V4gf9+gIb/ +bG95/3V4gf9zdXz/dXiB/3d6g/9qbXf/cHJ5/2xvef9wcnn/bG95/2xvef9sb3n/c3V8/3N1fP9ucHf/ +c3V8/3N1fP9wc33/dXd9/3d5f/9sb3n/cHJ5/3N1fP9qbXf/bG95/3V3ff91d33/dnh8/3V3ff9ucXv/ +bnB3/2xvef91eIH/c3V8/2xvef9wc33/am13/3Byef93eoP/cHN9/2dqdP9wc33/cHN9/3V3ff94eX3/ +dXd9/2xudf9vcXX/bnB3/2dqcf9wcnn/bG51/3V3ff9wcnn/bG51/2ptd/9nanT/bG51/25xe/9qbXf/ +Z2px/2Rncf9ucXv/Zmlz/2Jlbv9kZ3H/Z2px/2Zpc/9qbXf/Z2p0/11gav9nanT/amxz/25xe/9qbXf/ +a211/2lrdP9oa3X/aWtz/2xvef9sb3n/cHN9/2psc/9wcnn/bnB3/2xuc/9sb3n/amx1/2hrdP9oam// +ZGdx/2Zobv9nanT/Zmlz/2Zpc/9nanH/ZGdx/2dqcf9ucXv/am13/2ptd/9sb3n/bG95/2Zpc/9qbXf/ +bnB3/3V3ff9wcnn/bnB3/25xe/9zdn//c3V8/25wd/9wc33/bnF7/25wd/91d33/bnB3/25wd/9ucHf/ +bnB3/2ptd/9maG7/c3V8/3N1fP9wcnn/bG51/21vc/9ucHT/bnB3/3Byef9wcnr/bG95/2xvef9ucHf/ +cnR7/2xudv9rbXb/aWx2/25xe/9zdXz/dXd9/25wd/91d33/c3V8/2xvef9qbXf/d3l//2xvef9qbHP/ +bG51/25xe/91eIH/bnF7/25wd/9kZ3H/dXd9/2ptd/9ucXv/am13/2xvef9sb3n/bG51/2xvef91d33/ +am13/2ptd/9sbnX/dXd9/25wd/91d33/bG51/3Z4fP9nanT/am13/25wd/9zdXz/bG51/29xdf9zdXz/ +b3F1/2psc/9ucHf/dXd9/3N1fP9ucXv/am13/2ptd/9qbXf/cHN9/2xudf9ucXv/bG51/25wd/92eHz/ +bG51/21vc/9zdXz/bG51/29xdf9qbXf/cHN9/25xe/9zdXz/bnB3/3h5ff9zdXz/bnB3/25wd/9vcXX/ +c3Z//25xe/9sb3n/bG95/3d5f/9zdn//cHN9/3d6g/9wcnn/dXiB/3V4gf9wcnn/e32D/3Bzff9zdn// +cHN9/2ptd/9ucXv/bG95/3d5f/9wc33/c3Z//3d6g/9sb3n/cHN9/3l7gf95e4H/cHN9/3V4gf91eIH/ +c3V8/25wd/9wc33/bG95/3V4gf9qbXf/cHJ5/25xe/93eoP/cHN9/29xdf9zdXz/bnB3/21vc/9qbXf/ +cHN9/2Rncf9ucXv/Z2p0/25wd/91d33/amxz/21vc/9tb3P/am13/25wd/9ucXv/bG95/3d5f/91eIH/ +dXiB/3V4gf9zdn//dXiB/3V4gf95e4H/c3Z//3d6g/97fYP/dXiB/3d6g/97fof/e36H/3d6g/93eoP/ +cHN9/25xe/9sb3n/dXd9/2xvef9ucXv/cHN9/2xudf9sb3n/bnF7/2dqdP9gY2z/Z2p0/2ptd/9wcnn/ +cHN9/2ptd/9nanT/bG51/2xvef9kZ3H/bnF7/2ptd/93eX//bnB3/21vc/9qbXf/am13/2xvef93eX// +cHN9/2ptd/9maXP/dXd9/3Bzff9qbXf/bnF7/2xvef9wcnn/c3V8/3V3ff9maG7/amxz/2ptd/9wc33/ +bnF7/25wd/9ucHb/bW93/3J0e/9zdn//cHN9/3V4gf9sb3n/dXiB/25xe/9sb3n/b3J8/21wev9tcHr/ +b3J7/2xvef9sbnX/bnF7/2dqdP9sbnX/amxz/2ptd/9sbnX/cHJ5/2xudf9sbnX/cHJ5/2xvef9kZ3H/ +bG51/25wd/91d33/cHJ5/29xdf9ucXv/dXiB/3N2f/9ucHf/cHN9/3Bzff9wcnn/c3Z//25xe/9qbXf/ +bnF7/2xvef9ucHf/ZGdx/25xe/9ucXv/bG95/2dqdP9qbXf/bW92/2tudv9sb3n/bG95/2dqdP9maXP/ +Zmlz/2xudf9laHH/Y2Zw/2Zpc/9ydHv/bnF7/2ptd/9sbnX/cHN9/25xe/9qbXf/am13/3Byef9qbXf/ +Z2p0/2xudf9zdXz/d3l//3V3ff9ucHf/amxz/3l7gf9wc33/cHN9/25wd/9ucHf/cHN9/3Byef91eIH/ +eXuB/3Byef9wc33/bnB3/3d6g/9wc33/dXiB/3N1fP95fIb/dXd9/3N1fP9zdn//c3Z//3Bzff9zdn// +d3qD/3Bzff9sb3n/c3Z//3l8hv97fYP/dXiB/3N2f/9zdn//c3V8/3t9g/9zdn//dXiB/25wd/9wcnn/ +c3Z//25wd/9ucHf/dXd9/2psc/9ucHf/Z2p0/3Bzff9ucXv/cHN9/2xvef93eX//c3Z//3Bzff9wc33/ +bnB3/3N2f/9wc33/cHJ5/2xvef95e4H/cHN9/3Byef93eX//cHJ5/3V4gf9zdn//bG95/3d5f/9zdXz/ +cHN9/2xvef9sb3n/bnB3/3Byef93eX//c3V8/25xe/95e4H/bG95/2xvef95e4H/dnh8/25wd/93eX// +d3l//25xe/9sb3n/cHN9/25wd/9zdn//bG95/25wd/9ucXv/eXyG/3N1fP9tb3P/c3V8/25wd/9vcXX/ +bG51/3Byef9maG7/cHJ5/25wd/9wc33/dXd9/2xudf9ucHf/bnB3/2xudf9ucHf/cHJ5/3Byef92eHz/ +cHJ5/3N1fP9wc33/bnF7/2xvef9sb3n/bnF7/2ptd/9ucXv/cHN9/25wd/9ucHf/dXd9/3d5f/9zdn// +dXd9/25xe/9sb3n/bG95/3V3ff9ucHf/bnB3/3N1fP9sbnX/bnB3/3Z4fP9ucHf/Z2px/2xvef91eIH/ +d3qD/3d6g/91eIH/am13/2xvef9ucXv/bnB3/3Byef9sbnX/dXd9/2xvef9sbnX/bG51/2xudf9qbXf/ +dXd9/25xe/9nanT/Z2p0/3Bzff9zdXz/amxz/2xvef9qbXf/am13/25xe/9wc33/YmVu/2dqdP9sbnX/ +bnF7/2xvef9pbHb/a254/2xuc/9rbnX/cHJ5/25wd/91d33/am13/3Bzff9wcnn/cHJ5/29xef9ucHn/ +bnF5/29ye/9sb3n/amxz/25xe/9ucXv/am13/2dqdP9tb3P/bG51/25xe/9tb3P/bnB3/3Bzff9wcnn/ +Zmhu/25wd/9wcnn/c3Z//3N2f/9sb3n/bG95/3Bzff9zdn//bnB3/3Bzff9zdXz/bnB3/3V4gf9wc33/ +am13/3Bzff9ucHf/bnB3/2Zpc/91eIH/d3qD/3Bzff9sb3n/cHJ5/2xvef9rbnj/cHJ3/2xudv9qbXf/ +Zmlz/2xudf9qbXf/aGp0/2dqdP9tb3X/dXd8/3V3ff9wcnn/bW9z/3d5f/9zdXz/bnF7/25wd/91d33/ +c3V8/2xudf9vcXX/d3l//3l7gf92eHz/bnB3/2dqdP93eX//cHN9/25xe/9wcnn/cHJ5/3N2f/9wcnn/ +d3qD/3l8hv9zdXz/cHN9/2xvef93eX//cHJ5/3N1fP9ucHf/dXd9/2xudf9tb3P/b3F1/25wd/9maG7/ +bG51/3Byef9qbHP/YmVu/25wd/93eX//dXd9/25wd/9sbnX/cHJ5/29xdf91d33/b3F1/3Byef9ucHf/ +b3F1/3N2f/9ucHf/bnB3/3V4gf9qbXf/c3Z//3Bzff95e4H/eXuB/3d6g/9zdn//foCG/31+gf97fYP/ +d3l//3h5ff97fYP/d3qD/3N2f/9wc33/e32D/3d6g/9wc33/e32D/3N2f/95fIb/d3qD/25xe/95e4H/ +dXiB/3V4gf9ucXv/bG95/25wd/9wcnn/d3qD/25xe/9wcnn/dnh8/2xudf9sbnX/dXd9/3N1fP9wcnn/ +eHl9/3Z4fP9ucHf/am13/2xvef9nanT/bG95/2dqdP9sbnX/bG51/3N2f/9wc33/amxz/2ptd/9nanT/ +am13/2xvef9sb3n/ZGdx/3Bzff9ucHf/c3V8/3N1fP9nanH/bG51/2ptd/9qbXf/am13/3N1fP9ucHf/ +dXd9/3N1fP91d33/c3V8/25wd/9wcnn/bG95/2ptd/9nanT/bnF7/3Z4fP9sbnX/bnB3/3V3ff93eX// +c3V8/25xe/9qbXf/am13/2xudf9zdXz/am13/2xvef9ucXv/Zmlz/2xudf9zdXz/bnB3/2Vmav9ucHf/ +c3V8/3l7gf9wc33/c3Z//2dqdP9wcnn/bG51/2psc/9zdXz/bG51/3V3ff9wcnn/bW9z/2ptd/9sbnX/ +cHN9/3V3ff9ucXv/am13/29xdf92eHz/c3Z//29xdf9wcnn/cHN9/25xe/9wc33/dXd9/2dqcf9qbXf/ +bnB3/3Bzff90d4D/cnR7/29yfP9sb3n/bnF7/3N2f/9zdn//eXuB/3N1fP91eIH/dXiB/3V4gP9ucXv/ +b3J8/3BzfP9vcnv/bnF7/25wd/9zdn//bG95/29xdf9sb3n/b3F1/25wd/9zdn//bnB3/25wd/9wc33/ +cHN9/2Zpc/9wcnn/c3V8/3V4gf91eIH/bnB3/2xvef9zdn//dXd9/2xvef9zdn//dXiB/25xe/93eX// +bnF7/2ptd/9wc33/bnB3/25wd/9qbXf/d3l//3V4gf9zdn//bG95/3Byef9tb3b/bW94/29ye/9wcnn/ +bnB3/2xvef9sb3n/c3V8/2xvef9qbXf/b3F5/3V3ff94eX3/c3V8/25wd/94eX3/d3l//3V3ff9ucHf/ +d3l//3V3ff9tb3P/bW9z/3V3ff95e4H/cHJ5/2ptd/9maXP/c3V8/2dqdP9nanT/Z2p0/2dqdP9qbXf/ +Zmlz/2xvef91d33/Z2p0/2xudf9nanT/dXd9/2ptd/9ucXv/am13/3d5f/9ucHf/bnB3/3Byef9ucXv/ +ZGdx/2xvef9wc33/bnB3/2psc/9wcnn/e32D/3V3ff9ucHf/bG95/25wd/9ucHf/eXuB/25wd/9ucXv/ +bG95/2xvef93eX//bnB3/25xe/91eIH/bG95/3Byef9sbnX/dXd9/3Byef9ucHf/bG51/3Z4fP9zdXz/ +am13/2xudf9sbnX/bnB3/25xe/9qbHP/Zmlz/3V3ff9ucXv/bG51/3V3ff9tb3P/am13/2ptd/9kZ3H/ +dXd9/2xvef9ucHf/am13/2ptd/9qbXf/bG51/3V4gf9sb3n/bnB3/3V3ff9sbnX/bG95/3V3ff9zdn// +bnF7/3d5f/95e4H/cHN9/3Bzff91eIH/bnB3/3Bzff9ucHf/bnF7/29xdf95e4H/c3Z//2xvef9wcnn/ +bG51/2xvef9ucXv/bnF7/2Zpc/9zdn//bnB3/3N1fP9zdXz/Zmhu/29xdf9ucHf/cHJ5/29xdf94eX3/ +c3V8/3N1fP9ucXv/bnF7/3Bzff9sb3n/bnF7/2xvef9sb3n/Z2px/25xe/9zdXz/amxz/2ptd/9ucXv/ +dXd9/2xvef9qbXf/Z2px/2psc/9kZ3H/am13/2psc/9qbXf/bG95/2Rncf9sbnX/cHJ5/2xudf9lZmr/ +bnB3/3V3ff93eoP/cHN9/3d5f/9qbXf/cHJ5/29xdf9qbHP/dXd9/2psc/93eX//cHN9/2xvef9sb3n/ +bG95/3V4gf93eoP/cHJ5/25wd/9tb3P/dXd9/3V3ff9qbHP/bG95/2xvef9wcnn/am13/25xe/9maG7/ +bG95/2xvef9zdn//b3J8/3Fzev9vcnr/a253/2xudf9ucXv/am13/3N1fP9sbnX/cHN9/25xe/9qbXf/ +bnF6/25xef9tcHr/bXB6/2ptd/9qbXf/bG95/2psc/9qbHP/Z2p0/2dqcf9sbnX/bnF7/2psc/9maXP/ +bG95/2xvef9gY2z/Z2p0/21vc/9ucHf/bnB3/2psc/9sbnX/bG95/3N1fP9qbXf/bnF7/3Z4fP9wcnn/ +d3l//3Bzff9qbXf/c3V8/2xudf9sbnX/amxz/3V3ff9zdXz/c3V8/2psc/9ucHf/b3F4/25wd/9xc3n/ +bnB3/2ptd/9sbnX/bnB3/2xvef9qbXf/aWx2/29xeP91d33/dnh8/3N1fP9sbnX/dnh8/3d5f/9zdXz/ +bnB3/3V3ff9zdXz/bW9z/2xudf92eHz/d3l//3Bzff9sb3n/Z2p0/3Bzff9ucXv/bG95/2ptd/9qbXf/ +am13/21vc/91d33/eHl9/29xdf9ucHf/bG51/3Z4fP9sbnX/dXd9/2xudf93eX//bnB3/21vc/9tb3P/ +c3V8/2Rncf9wcnn/dXiB/3Bzff9ucXv/dXiB/4GDiv91eIH/bnF7/25wd/9ucHf/bG95/3Z4fP9ucHf/ +bG95/25wd/9qbXf/d3l//25wd/9sb3n/c3Z//25wd/9wc33/Zmlz/3N2f/9zdn//bnF7/2xvef93eX// +dXd9/3Bzff9ucHf/am13/3Bzff9wc33/bnB3/2ptd/92eHz/cHN9/29xdf91d33/bnF7/25xe/9wcnn/ +Z2p0/3d6g/9zdn//c3Z//3Bzff9ucXv/cHJ5/3Byef91eIH/bnF7/2xvef91d33/bnB3/3N2f/95e4H/ +bnB3/2xvef91d33/cHN9/2ptd/9nanT/bG95/2Zpc/9nanT/Zmhu/2dqcf9kZ3H/c3V8/25xe/9maXP/ +am13/2Zpc/9qbHP/am13/2ptd/9kZ3H/cHN9/2dqdP9wcnn/bG95/2BjbP9qbHP/amxz/2ptd/9sbnX/ +cHN9/25xe/9wc33/bnF7/25xe/9ucXv/am13/3N1fP9zdXz/c3V8/2xudf9zdXz/dnh8/3Byef9ucHf/ +dXd9/3N1fP9ucXv/cHJ5/2ptd/9ucXv/am13/3Bzff9sb3n/bG95/25wd/9ucHf/bG95/3Bzff9ucXv/ +Z2p0/3Bzff9wc33/eXuB/3V3ff92eHz/Z2px/2xvef9wcnn/Z2p0/3N2f/9nanT/d3l//3Bzff9tb3P/ +bnB3/29xdf9zdn//d3l//3Bzff9sb3n/bG95/3V4gf94eX3/bnB3/3N1fP9zdXz/cHJ5/2xvef9zdn// +amxz/2psc/9nanT/bnF7/2hqdP9ucHb/bXB4/2xvdv9ucHf/dXd9/29xdf92eHz/b3F1/3Z4fP9zdXz/ +bnB3/3Byef9wcnn/cXN6/3N1fP9wcnn/cHJ5/3Z4fP9ucXv/bG95/2xvef9sb3n/bG95/3V4gf9zdXz/ +cHJ5/3V4gf9wc33/am13/25xe/9ucHf/bG95/25wd/9vcXX/bG51/3N1fP91d33/bG51/3Bzff9zdXz/ +bnB3/3N1fP9sbnX/Z2px/2xvef9vcXX/bnB3/2Rncf9zdXz/bG95/2xvef9maXP/bG95/2hrdf9wcnn/ +cHJ7/3J0fP9ucHf/Z2p0/25xe/9zdXz/b3J7/2ptdf9sb3n/c3V8/3V3ff9sb3n/bG51/3V3ff91eIH/ +bnF7/3Byef92eHz/dXd9/2xudf9sbnX/dnh8/3d6g/91d33/cHN9/2ptd/91eIH/d3qD/3d6g/9ucHf/ +bG95/25wd/9ucHf/dXiB/3l7gf9wc33/c3V8/3N2f/9+gYr/eXuB/35/g/92eHz/f4GH/3V3ff91eIH/ +dXd9/35/g/9wcnn/eHl9/31+gf93eX//eHl9/3d5f/+Fh43/fn+D/3l7gf92eHz/dXd9/3Bzff9+gYr/ +c3Z//3Bzff9sb3n/cHN9/3l7gf9wcnn/c3V8/3V4gf9zdXz/dXiB/2dqdP9zdn//c3Z//3Bzff9sb3n/ +dXd9/3Z4fP9wc33/bG51/2Zpc/9wc33/cHJ5/29xdf9ucHf/dXd9/3Byef9ucHf/eHl9/2xvef9ucHf/ +cHJ5/25wd/93eX//dXd9/3Byef9ucHf/bnB3/2xudf9vcXX/dXd9/2xudf9sbnX/c3V8/2ptd/9wcnn/ +eHl9/3Bzff91eIH/dXiB/3V3ff9wcnn/bnB3/3V3ff9qbHP/cHN9/3Byef9ucXv/bG95/3V4gf93eX// +Z2p0/25xe/9sb3n/bnB3/3N1fP9ucHf/bG51/3Bzff9nanT/am13/25xe/9maXP/am13/2xudf9sbnX/ +bG51/3V3ff9ucHf/cHJ5/3N1fP9ucXv/c3V8/25wd/9ucHf/cHJ5/3N1fP9vcXX/dXd9/3h5ff9wcnn/ +cHJ5/3V3ff9zdXz/cHJ5/25wd/9qbHP/bnF7/2xudf9sb3n/bG95/2dqdP9nanT/Zmhu/2Rncf9nanT/ +Z2px/1xfaP9maG7/ZGdx/3Byef9maXP/bnB3/1lcZf9iZW7/Zmhu/2Jlbv9nanT/XWBq/2xvef9nanT/ +amxz/2xudf9qbHP/bnF7/3d5f/9qbXf/Zmlz/2xudf91eIH/d3l//2xudf9zdXz/cHJ5/3N1fP9sb3n/ +dXd9/2Zpc/9maG7/Z2px/2ptd/9oanT/bnB5/29xeP9ucHj/bG51/3Z4fP9vcXX/dnh8/29xdf91d33/ +bnF7/3Bzff91eIH/dHZ+/3N1ff9zdn3/bnF7/25xe/91d33/cHJ5/25wd/9ucHf/bnB3/25wd/9wc33/ +b3F1/29xdf9ucHf/bG51/2Zobv9tb3P/bW9z/2xudf9sbnX/am13/2psc/9wc33/c3V8/2xudf9wc33/ +cHN9/25xe/9wc33/bW9z/2xudf9zdXz/b3F1/25wd/9maG7/dnh8/3Byef9zdXz/Z2px/3Byef9ucHj/ +cHJ6/25xef9tb3b/bG51/2RmbP9sbnX/bnF4/25wd/9sb3j/dHZ+/3V4gf95e4H/bnF7/3Byef91eIH/ +dnh8/3Byef9ucXv/c3V8/3N1fP9ucHf/b3F1/3d5f/97fYP/dXd9/3Bzff9sb3n/d3l//3Z4fP9zdXz/ +amxz/2xudf9qbXf/am13/2xvef9zdXz/amxz/2psc/9kZ3H/c3V8/2Zpc/9qbXf/ZGdx/3Byef9iZW7/ +ZGZs/2Rncf9maXP/XV9l/2Rncf9nanT/ZGZs/2BjbP9iZW7/cHN9/2ptd/9maG7/YmVu/2Jlbv9iZW7/ +cHJ5/2dqcf9kZ3H/YGNs/2Rncf9kZ3H/YmVu/2dqcf9qbXf/bG51/2ptd/9iZW7/bnF7/25xe/9qbXf/ +bG51/3N1fP91d33/c3V8/25wd/9qbHP/cHN9/3Bzff9wcnn/cHJ5/3d6g/91eIH/cHJ5/3t9g/9wc33/ +c3Z//3N2f/9wcnn/eXyG/3l7gf9ucXv/cHJ5/2xvef9wcnn/bnB3/3d6g/9ucXv/cHJ5/3t9g/9wc33/ +d3qD/3d6g/9wc33/d3qD/3t9g/9zdn//cHN9/3Byef91d33/Z2p0/2xvef9ucHf/c3Z//25xe/93eoP/ +eXuB/2xvef9zdn//cHJ5/25xe/9wc33/b3F1/2xudf9zdXz/am13/25wd/9wcnn/Zmlz/2ptd/9sbnX/ +bG95/2ptd/9zdXz/bW9z/25xe/9zdXz/c3V8/3Bzff9sbnX/bnB3/3Bzff9sb3n/bG51/3V3ff93eX// +bnB3/3Byef9wcnn/cHJ5/3Byef91d33/bG51/3Byef9tb3P/bnF7/25xe/9sb3n/am13/2xudf9nanT/ +am13/2dqdP9iZW7/am13/25xe/9zdn//bG95/3V3ff9kZmz/bW9z/21vc/9ucHf/dXd9/2dqdP95e4H/ +cHN9/2xvef9sb3n/bnF7/3Bzff93eX//bnF7/2xvef9ucXv/e36H/3d6g/9ucHf/dXd9/3Byef9wcnn/ +bnB3/3N1fP9qbHP/bG51/2xudf91d33/bW93/29xeP9tcHj/aGt1/2Vocf9ucXv/amxz/3d5f/9sbnX/ +bnF7/3Byef9wcnn/cXN6/3F0ev9wc33/c3Z//3Byef9wc33/eXuB/3Bzff9wc33/bnF7/3Bzff9ucXv/ +cHN9/25wd/9ucHf/cHJ5/21vc/9nanH/b3F1/25wd/9ucHf/bG51/2ptd/9sbnX/dXd9/3N1fP9qbXf/ +cHN9/3Byef9wcnn/c3Z//2xudf9sbnX/c3Z//2ptd/9ucHf/ZGdx/3N2f/9zdn//c3Z//2ptd/9zdn// +cXN7/3N2gP91eIH/cnV//3N1fP9qbXf/cHJ5/29xeP9ucHj/bW94/3J0e/90d3//eXyG/3Bzff9ucXv/ +d3l//3d5f/9ucXv/c3V8/25xe/9wcnn/bnB3/25wd/91d33/e36H/3Z4fP9wcnn/bnB3/3V4gf91d33/ +dnh8/25wd/9wcnn/c3V8/3Byef9zdn//e32D/2xvef9sb3n/Z2p0/3d6g/9zdn//dXiB/25wd/93eX// +Z2p0/2xvef9ucHf/c3V8/2ZobP9sbnX/c3V8/2psc/9nanT/amxz/3l7gf9ucXv/Zmlz/2Zobv9sbnX/ +ZGdx/3Bzff9maG7/amxz/2Zpc/9qbHP/bnB3/2xudf9ucHf/cHJ5/2xvef9wc33/Z2p0/3Bzff9wc33/ +dXiB/3N2f/93eoP/d3qD/3l7gf91d33/c3Z//3V4gf95fIb/cHN9/3N1fP95fIb/d3qD/3V3ff95fIb/ +cHN9/3V4gf9wc33/bnB3/3d5f/91d33/bnB3/2xudf9sbnX/bW9z/25wd/94eX3/bG95/2xvef93eX// +bnB3/3N1fP9zdn//bnF7/3d6g/93eX//cHN9/3Bzff9zdn//dXd9/2psc/9ucHf/bW9z/2xvef9qbXf/ +c3V8/3V3ff9kZ3H/bG51/2dqcf9maG7/Z2p0/2Rncf9kZ3H/bG95/2dqcf9qbHP/Z2p0/2Rncf9qbHP/ +Z2px/2psc/9qbHP/cHN9/2ptd/9zdXz/c3V8/3N1fP91d33/cHN9/3Bzff91eIH/bnF7/25wd/9zdn// +d3qD/3Bzff9zdn//c3Z//3N2f/91eIH/dXiB/3Byef93eoP/cHN9/3d6g/95fIb/d3qD/3d6g/9wc33/ +c3Z//3V4gf9wc33/am13/3N1fP93eoP/e32D/3l7gf95fIb/am13/3N2f/9zdXz/c3V8/3l7gf9sb3n/ +eXuB/3V4gf9ucHf/bnB3/25xe/9zdXz/d3l//25xe/9nanT/bnF7/3d6g/93eoP/bnF7/3Bzff91d33/ +cHN9/25xe/93eX//Zmlz/2xvef9zdXz/e32D/3Bzff9zdXv/dHZ//3F0fv9sb3n/d3qD/3N1fP93eoP/ +cHJ5/3N2f/9zdn//c3Z//3Bzff9zdX3/dHeA/3V4gf9zdn//cHN9/3d6g/9wc33/bnB3/2dqdP9ucHf/ +cHJ5/3Byef9ucHf/b3F1/3Bzff9vcXX/Z2px/2xudf9sbnX/amxz/2ptd/9nanT/Z2p0/25xe/9sb3n/ +amxz/2ptd/9ucXv/am13/3N1fP9qbXf/Z2p0/25xe/9nanT/bG51/2RmbP9wcnn/bnF7/2xvef9kZ3H/ +bG95/2lsc/9ucXr/b3F5/2xvef9ucHf/Z2p0/2xvef9ucHf/bG52/2dqdP9tcHf/bG94/3Byef9nanH/ +Zmlz/3Byef94eX3/bnB3/3N1fP9wcnn/c3V8/2xudf9ucHf/c3V8/3l7gf9zdXz/bG95/21vc/92eHz/ +c3V8/3Bzff9sbnX/bG51/21vc/9sbnX/bnB3/3V3ff9tb3P/bG51/2dqdP91eIH/c3V8/3Byef9tb3P/ +eHl9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/am13/3V3ff9ucHf/bG51/25wd/9+gIb/cHN9/3Byef9tb3P/ +bG51/2psc/97fYP/bG51/2ptd/9qbXf/b3F1/3N1fP9ucHf/bG51/3N1fP9ucHf/cHN9/2Zpc/9qbXf/ +am13/2ptd/9qbHP/cHN9/2xvef9wc33/bG51/2Rncf9qbHP/am13/2ptd/9sbnX/c3V8/2ptd/9nanT/ +d3l//2xudf9sb3n/bG51/2xudf94eX3/dXd9/3Byef9vcXX/bG95/25wd/9sb3n/eXuB/3Bzff9wcnn/ +eXuB/3Byef9zdn//eXuB/3Bzff9ucXv/dXd9/3V3ff9wc33/c3Z//3N2f/9sb3n/cHJ5/3Byef9wc33/ +cHJ5/3d5f/97fYP/cHJ5/25xe/9ucHf/b3F1/3Byef9sbnX/am13/3N1fP9tb3P/am13/25xe/9kZ3H/ +am13/2ptd/9ucXv/bG51/3N1fP9ucHf/c3V8/3N1fP9ucHf/dXd9/25xe/9qbXf/cHN9/2xudf9sbnX/ +c3V8/3V3ff9ucHf/dXd9/3Byef9wcnn/cHJ5/3Byef9tb3P/cHN9/2ptd/9sb3n/am13/25xe/9sb3n/ +am13/2dqdP9qbXf/am13/2BjbP9qbHP/cHN9/3V3ff91d33/dnh8/2Vmav9ucHf/bnB3/2xvef91eIH/ +Z2p0/3N2f/9zdn//bnF7/2xvef9ucXv/c3Z//3d6g/9ucXv/am13/25xe/95e4H/eXuB/21vc/9zdXz/ +c3V8/2xudf9sbnX/c3V8/2Zobv9qbXf/bG51/3V3ff9rbXX/bG52/25vdf9sb3j/Zmlz/3Bzff9sbnX/ +d3l//21vc/9sbnX/c3V8/3V3ff9vcnv/bnB3/29xef9zdn//bnF7/3N1fP91eIH/bnF7/25xe/9ucHf/ +cHN9/3N2f/9zdn//cHJ5/3N1fP91eIH/cHJ5/2Zpc/9ucXv/bnB3/29xdf9ucHf/bG95/3Bzff91eIH/ +cHN9/25xe/9ucXv/c3Z//29xdf92eHz/bW9z/2psc/9wcnn/amxz/25wd/9nanH/c3Z//3Bzff9ucXv/ +Z2px/3N1fP9ucHf/cHJ7/3R2f/9xdH7/cHJ5/2dqdP9sb3n/cHJ5/29xeP9tb3j/cnR6/3R2ff93eX// +bnB3/3Byef93eX//dnh8/2ptd/9wcnn/cHJ5/3Byef9qbHP/cHJ5/3h5ff93eX//dXd9/25xe/9vcXX/ +eHl9/3d5f/91eIH/c3V8/3N1fP9wc33/cHJ5/2xvef9zdn//bG95/2xvef9sb3n/d3qD/25xe/9wc33/ +bG95/3d5f/9sbnX/b3F1/25wd/9ucHf/ZGZs/2Zpc/9wc33/amxz/2dqdP9sbnX/d3l//2dqdP9sb3n/ +Z2px/2Zobv9gY2z/eXuB/2Zpc/9sbnX/amxz/2xudf9zdXz/bW9z/2xvef91d33/bG95/3V4gf9sb3n/ +c3Z//3d6g/91eIH/cHN9/3l7gf93eoP/foCG/3N2f/9ucXv/c3V8/3N2f/91eIH/dXd9/36Ahv9zdn// +c3V8/36Biv9zdXz/cHN9/29xdf9vcXX/dnh8/3V3ff9wcnn/bW9z/25wd/9ucHf/am13/3d5f/9ucXv/ +am13/3h5ff9sb3n/c3Z//3t+h/9sbnX/bG95/3N1fP9ucXv/cHN9/25xe/9ucXv/Z2p0/2ptd/9sbnX/ +cHJ5/25wd/9zdn//dXd9/2xvef9vcXX/bW9z/2xudf9ucXv/am13/21vc/91d33/bnB3/25wd/91d33/ +Z2px/25wd/9wcnn/c3Z//25wd/95e4H/d3qD/3d6g/93eX//cHN9/3Z4fP9wcnn/bnB3/3N1fP9sbnX/ +bnB3/3V3ff93eX//cHJ5/3N1fP9wcnn/c3V8/3Byef91d33/bW9z/3V3ff9ucHf/cHJ5/3N1fP9ucXv/ +am13/2xudf9qbXf/bG95/2xudf9iZW7/am13/3N1fP9zdXz/c3V8/3d5f/9lZmr/bW9z/2xudf9ucHf/ +c3Z//2dqdP9wc33/c3Z//3Byef9sbnX/cHJ5/3N1fP93eoP/bG51/2psc/9ucHf/d3l//3d5f/9ucHf/ +dXd9/3V3ff9ucHf/bnF7/3d5f/9qbXf/cHJ5/29xdf91eIH/bnF7/3Fze/9ydHz/bnF7/2ptd/91d33/ +bnB3/3V3ff9vcXX/bnF7/3N2f/93eoP/cnV8/25wd/9tb3j/dnh8/25wd/9vcXX/bnB3/2xvef9qbXf/ +Zmlz/25xe/9qbXf/am13/2dqcf9kZ3H/Z2p0/2Zobv9gY2z/Z2p0/2Zpc/9maXP/amxz/2Rncf9qbXf/ +am13/2dqdP9sb3n/am13/3Bzff9sbnX/dnh8/29xdf9qbHP/cHN9/3Byef9zdn//Zmlz/3Bzff9wc33/ +cHN9/2ptd/9zdn//bnB3/3FzfP9wcnr/a211/25wd/9sbnX/bG95/25weP9xc3r/cHN7/3J1fv94eoP/ +fYCJ/3N2f/93eoP/eXyG/3d6g/9zdXz/dXiB/3d6g/9wc33/am13/25wd/93eoP/eXuB/3d5f/9zdn// +bnF7/3t9g/95e4H/c3Z//3Byef9wcnn/cHN9/2xvef9ucHf/dXd9/3Byef9qbHP/b3F1/3d6g/9wc33/ +c3Z//2xvef91d33/am13/25wd/9sb3n/bnF7/2dqcf9sbnX/dnh8/29xdf9qbXf/bG51/3t9g/9qbXf/ +bnF7/2xudf9sbnX/Z2px/3t9g/9qbHP/bnB3/2xudf9tb3P/bnF7/25wd/9ucHf/dXd9/3Byef91d33/ +amxz/25wd/91d33/dXd9/25wd/9zdXz/bG51/3N1fP9sbnX/ZGZs/2dqdP9qbXf/am13/2dqdP9sb3n/ +amxz/2Rncf9zdXz/Zmlz/2dqdP9kZ3H/ZGZs/2ptd/9sb3n/Z2p0/2Jlbv9kZmz/XWBq/2BjbP9qbXf/ +Zmlz/2Jlbv9sb3n/am13/2xvef9zdXz/Z2p0/2xudf9ucXv/bnF7/3Byef9zdXz/c3V8/2psc/9ucHf/ +bG95/2xvef9tb3P/c3V8/3h5ff9sbnX/bnB3/25wd/9wc33/cHN9/2xvef9ucHf/dXd9/3Bzff9ucHf/ +cHN9/2dqdP9sb3n/c3Z//3Z4fP9qbXf/c3V8/2ptd/9sbnX/cHN9/2xvef9zdXz/bnF7/2xudf9sb3n/ +amxz/2psc/9sb3n/bG95/2Zpc/9qbXf/Z2p0/25xe/9qbXf/am13/2xudf9wc33/bG51/2xvef9sb3n/ +bnF7/3Byef9ucHf/bnB3/3N1fP9tb3P/Zmhu/29xdf91d33/dXd9/3d5f/93eoP/amxz/25wd/9ucXv/ +c3Z//3d5f/9sb3n/c3Z//3l7gf9zdXz/am13/3N2f/93eoP/eXyG/3Byef9sb3n/cHN9/3l8hv97fof/ +cHN9/3t9g/97fYP/dXd9/3Bzff97fYP/am13/25xe/9ucHf/eXuB/21wef90dnz/dXd//3R3gP9zdXz/ +eXuB/3Bzff95fIb/c3Z//3Bzff91eIH/eXuB/3Z5gv9ydHz/c3aA/3p9g/9zdn//cHN9/3Bzff9ucXv/ +c3Z//3Bzff93eoP/d3qD/3V4gf9zdXz/cHN9/3N2f/9sb3n/Zmlz/3Bzff9ucHf/c3V8/3N2f/9sb3n/ +bG95/3Byef9ucXv/cHN9/25wd/9wc33/bnB3/3h5ff9vcXX/amxz/25xe/9vcXX/c3V8/2Zpc/9wc33/ +c3V8/3Byef9sb3n/d3qD/3Byef9vcnv/cHJ6/29xef9ucHf/amxz/21vc/9sbnX/b3F1/25wd/9wcnr/ +cXR9/3V3ff9sb3n/c3V8/3h5ff93eoP/cHN9/25xe/9zdn//cHN9/2dqdP9wc33/e32D/3l8hv93eoP/ +c3Z//3Bzff93eX//dXd9/3Byef9ucHf/b3F1/3Bzff9ucXv/bnF7/3N2f/9ucHf/Z2p0/2ptd/93eX// +bnB3/25wd/9qbHP/dXd9/2xudf9vcXX/bnB3/2xvef9maXP/bG95/3Z4fP9vcXX/bG51/25xe/9/goz/ +dXiB/3N2f/9ucHf/b3F1/2psc/9+f4P/bG51/29xdf9ucHf/b3F1/3Byef9sbnX/bnB3/3V3ff9wc33/ +c3Z//2psc/9vcXX/dXd9/3N1fP9qbXf/bnF7/2xudf9wc33/amxz/2BjbP9kZ3H/amxz/2ptd/9maXP/ +cHN9/2xudf9maXP/d3l//2xudf91d33/bG51/2ptd/91d33/bnF7/2ptd/9nanH/Zmlz/2Rncf9kZ3H/ +cHN9/2xvef9nanT/dXd9/25xe/9ucXv/c3V8/25wd/9sb3n/dnh8/3Byef9ucXv/c3V8/3Bzff9maXP/ +bnB3/3Byef9wcnn/bnB3/3N2f/95e4H/cHN9/3Byef9wc33/dXiB/3N2f/9wc33/cHN9/3t9g/93eoP/ +dXiB/3t9g/9zdn//d3qD/3l8hv95fIb/cHN9/3l8hv9zdn//cHN9/3l7gf9ucXv/c3Z//3V3ff9vcXX/ +c3V8/25wd/9wcnn/dXd9/3Z4fP9zdXz/cHJ5/2xvef9ucXv/bnF7/2ptd/9qbHP/bnF7/2ptd/9qbHP/ +am13/3Bzff9wc33/am13/2xudf9ucXv/bG51/2Rncf9sbnX/c3V8/3V3ff9zdXz/c3V8/2BjbP9maXP/ +am13/2xudf9wc33/Zmlz/25xe/91d33/bG51/2Zpc/9sb3n/bnF7/3V3ff9maXP/YGNs/2dqcf9wcnn/ +cHJ5/2dqcf9ucXv/bG95/2psc/9maG7/am13/2BjbP9nanH/Z2px/3V3ff9qbHP/bnB3/29xd/9sbnX/ +amxz/2xvef9maXP/cHJ5/2psc/9nanH/bG95/3Bzff9ucXr/aGtz/2ptd/9zdXz/bW9z/2xudf9sb3n/ +bG95/2ptd/9maXP/bnF7/2ptd/9qbHP/ZGdx/2dqcf9qbXf/Z2p0/2Zpc/9qbXf/bG51/2xudf9tb3P/ +bG51/25wd/9sb3n/cHJ5/3N1fP9sb3n/d3l//3Bzff93eX//bG95/2ptd/9ucXv/cHJ5/3N2f/9qbXf/ +d3qD/3N2f/9zdn//bnB3/3N2f/9ucHf/bnB4/2ptdv9rbnf/bG51/2Rncf9sbnX/am13/2psc/9pbHT/ +bXB4/2xueP9wc33/bG51/3Byef94eX3/cHN9/3Bzff9sb3n/c3Z//25xe/9nanT/bnF7/3d5f/91eIH/ +c3Z//25xe/9zdn//eXuB/3Z4fP91d33/bG51/21vc/9ucHf/bG51/2xudf9zdXz/bG51/2Rncf9maXP/ +cHJ5/2dqcf9maXP/YmVu/25xe/9nanT/bG51/2xudf9qbXf/Zmhu/21vc/9zdXz/bW9z/2ptd/9sb3n/ +f4GH/25xe/9sb3n/bG51/2xudf9qbHP/fX6B/2psc/9sbnX/b3F1/29xdf9zdXz/bG95/2xvef9wc33/ +cHN9/3Bzff9qbHP/cHJ5/3V3ff9zdn//bnF7/3V3ff9ucHf/dXiB/3Byef9nanH/bnF7/3Bzff93eoP/ +bG95/3l7gf93eoP/d3l//3+Bh/9zdXz/d3qD/3Bzff9wc33/eXyG/3d6g/9ucXv/bnB3/2xvef9sbnX/ +am13/3V3ff9wc33/Z2p0/3h5ff9zdXz/c3V8/3d5f/9sb3n/bG95/3h5ff9ucHf/c3V8/3V3ff91d33/ +Z2px/25wd/9wc33/bG95/2xudf9sbnX/c3V8/2ptd/9maXP/amxz/2ptd/9ucXv/am13/2ptd/9zdXz/ +cHN9/2ptd/9ucXv/ZGdx/2ptd/9nanT/cHJ5/2Rncf9zdXz/am13/2ptd/9ucXv/am13/3Bzff9wc33/ +bG95/3V3ff9qbXf/bnB3/3N2f/91eIH/cHN9/3V3ff91d33/dXd9/3Bzff9wc33/cHN9/3Z4fP9wc33/ +cHN9/3N2f/93eoP/d3qD/25xe/9zdXz/dXiB/3Byef9sb3n/cHN9/3l7gf91eIH/dXd9/3d5f/9kZ3H/ +bnB3/2xudf9zdXz/eHl9/25wd/91d33/dnh8/2ptd/9maXP/c3V8/3N1fP93eX//bG51/2psc/9sbnX/ +dXiB/3V3ff9vcXX/c3Z//3N2f/9sb3n/bnB3/3N2f/9sb3n/bG95/21vc/95e4H/b3F2/3J0ev90dn7/ +dnmC/3V3ff95fIb/dXd9/3t+h/9wc33/c3V8/3V4gf93eoP/dnmB/3Fzev9vcXf/dXh+/29xdf9tb3P/ +bG51/25wd/9ucHf/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/29xdf9maG7/cHJ5/2ptd/9nanT/ +amxz/2Zpc/9sbnX/bG95/2xvef9qbXf/amxz/3Byef9maXP/bG95/2Zobv9dYGr/YmVu/2Zobv9maXP/ +XWBq/2ptd/9nanT/Zmhu/2Jlbv9nanT/Zmhy/2hqcf9oa3P/aWtz/2ptd/9qbHP/bG51/25wd/9rbXL/ +aGty/2ttc/9pbHX/Z2p0/2Vocv9maXP/bnF7/3Bzff9ucHf/bG51/3N1fP9sbnX/Zmlz/2xvef9zdXz/ +c3V8/3N1fP9qbHP/bnF7/3N1fP9wc33/bnF7/2Zpc/9nanH/Zmlz/2Rncf9sbnX/cHN9/2psc/9kZ3H/ +ZGdx/25wd/9iZW7/ZGdx/11gav9nanT/ZGdx/2Zobv9qbHP/Z2px/2Jlbv9nanT/cHN9/2dqdP9qbXf/ +bG95/36Biv9ucXv/bG95/21vc/9tb3P/b3F1/4CChv9ucHf/cHJ5/3Byef9zdXz/c3Z//3Byef9wc33/ +cHN9/3N2f/9wc33/am13/25wd/9wc33/dXd9/25wd/9ucHf/bG51/3Bzff9nanT/YmRq/2dqdP9qbXf/ +bG95/2Zpc/9ucXv/Z2p0/2Jlbv9ucHf/YmVu/2dqdP9nanH/Z2px/3Byef9zdXz/amxz/2dqcf9nanT/ +Zmlz/2dqdP9sb3n/am13/2Zpc/91d33/bG95/3Byef93eX//dXiB/3V4gf97fof/d3qD/3t9g/93eoP/ +c3Z//2Zpc/9zdXz/c3V8/3V4gf9sb3n/cHJ5/3d5f/9ucXv/bG51/25xe/9wc33/dXiB/3N1fP91d33/ +eXuB/3t9g/91eIH/foCG/3V3ff93eoP/dXiB/3V4gf9sb3n/d3qD/3N2f/9wcnn/dXiB/3V4gf95e4H/ +dXiB/3Bzff93eX//c3Z//3Byef9wc33/dXiB/3N2f/91d33/c3V8/3N1fP9wcnn/bnB3/3Byef92eHz/ +cHJ5/25wd/9ucHf/c3V8/3N1fP9sbnX/bW9z/3N2f/9wcnn/amxz/25xe/93eX//dXiB/3N2f/9zdn// +Z2p0/2ptd/9ucXv/cHN9/3V4gf9wcnn/c3Z//3d5f/9sb3n/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/ +b3F1/3h5ff95e4H/b3F1/3N1fP91d33/bG95/2ptd/91d33/amxz/2ttdP9sbnX/c3Z//2ptd/9vcXj/ +cHJ3/25wd/9tb3P/cHJ5/2xudf93eX//am13/21vc/9zdXz/dXd9/3J0e/9sb3n/bXB6/3Bzff9sbnb/ +amxz/2ptd/9rbnj/bG51/2tud/9wcnn/bG95/25wd/9ucHf/cHJ5/3V3ff9ucHf/Zmlz/3R3gP9tcHf/ +bnB3/3Fzef9ucHf/cnR7/3Bzff9ydX7/cHJ8/3Bzff93eoP/cHN9/3h6gP9zdn7/bnF7/3Byef9vcXj/ +bnF7/2hrdf91d33/bW92/25wd/9vcXj/eHl9/29xef9wcnn/cHN8/3Z3fP95e4H/dXd9/3d5f/96fIP/ +cnV+/3F0e/91d37/dniA/3V3ff9wcnn/c3Z//3Z4f/93eoP/dXiB/3Bzff91eIH/bnF7/2ptd/91eIH/ +e32D/3d5f/93eX//c3V8/3d6g/9zdn//dnh8/3N1fP9ucHf/bnF7/25xe/9vcXX/bG95/3V3ff9vcXX/ +amxz/2xudf92eHz/bnB3/3Byef9nanT/cHN9/2ptd/9ucHf/c3Z//3Byef9qbHP/b3F1/3Z4fP9qbHP/ +bG51/25wd/9/gYf/cHJ5/2ptd/9tb3P/bnB3/2ptd/9/gYf/bnB3/29xdf9ucHf/bG95/3Byef9tb3P/ +am13/2ptd/9wc33/bnF7/2dqdP9sbnX/c3V8/3h5ff9wcnn/bnF7/2xvef9wcnn/am13/2Vmav9sbnX/ +bnF7/3Byef9sbnX/dnh8/3Bzff9ucHf/eXuB/3V3ff93eoP/cHN9/3N2f/97fof/e36H/3V4gf91d33/ +dXd9/25xe/9zdXz/dXiB/3V4gf9wc33/e32D/3d6g/95fIb/e36H/2xvef9ucXv/d3l//25xe/9zdn// +c3Z//3N2f/9maG7/bnB3/3N1fP9wcnn/b3F1/21vc/9zdXz/bG51/2dqcf9wcnn/bnF7/3N1fP9ucHf/ +bG95/3V3ff9zdXz/bG51/3Byef9ucHf/c3V8/25wd/91d33/am13/3V4gf9ucXv/amxz/2xvef9ucXv/ +cHN9/3Bzff9wcnn/c3V8/3Byef9wcnn/cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/ +d3l//25wd/9wcnn/bnB3/3V3ff91d33/bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9wcnn/ +c3V8/2Zobv9nanT/bnF7/2xvef91d33/bG51/2ptd/9zdXz/Z2p0/2Rncf9ucXv/c3V8/3N1fP9qbXf/ +am13/2psc/93eX//d3qD/2xudf9ucXv/bG95/2ptd/9qbXf/c3V8/2ptd/9xc3r/bnB3/3d5f/9ucHf/ +cHJ5/29xd/9ucXv/amxz/25wd/9ucHf/d3l//25wd/9vcXX/dXd9/3d5f/9wcnn/bG52/25xe/9xdHz/ +am13/2ttdf9qbXf/bG51/2xudf9rbnf/bXB6/2xudf9qbXf/bG51/3Byef90dnz/cHJ5/2hrc/9ydX7/ +aGt1/25wd/9wcnn/bnB4/25weP9ydHv/b3J7/29ye/9vcXj/dXiB/3F0ff9zdn//bG95/2xvef9ucHf/ +cXN3/3Byef9oa3P/cnR8/2xveP9qbXf/aWx1/3R2ff9pbHP/am13/2dqc/9pbHb/bG51/2Rncf9maG7/ +bG95/2psc/9maXP/bG94/29xef9sb3f/am12/2ttdv9ydHr/c3V8/3Bzff9vcXX/cHJ5/2xvef9qbXf/ +cHN9/3d5f/93eX//d3l//3Byef91eIH/c3Z//3d6g/93eoP/cHN9/3N2f/9wc33/bG95/29xdf91d33/ +b3F1/2psc/9sbnX/dnh8/25wd/9sbnX/bG51/25wd/9qbHP/bG51/2xvef9wcnn/amxz/2xudf92eHz/ +Z2px/25wd/9ucHf/f4GH/3Z4fP9zdXz/cHJ5/25wd/9qbXf/gYOK/2xvef9ucXv/bnB3/3V4gf9zdn// +c3Z//3N2f/91eIH/e32D/3t9g/92eHz/eXuB/31+gf9/gYf/eXuB/3V4gf9zdn//dXiB/3Bzff9qbXf/ +c3V8/3d6g/93eoP/c3Z//3t9g/93eoP/bnF7/3t9g/9ucXv/dXiB/25xe/9vcXX/eXuB/3d6g/9sb3n/ +bnB3/25wd/9nanH/bW9z/25wd/9sbnX/Z2px/3N2f/9ucXv/c3Z//3V3ff91d33/d3qD/36Ahv91eIH/ +eXuB/3d6g/93eoP/bG95/3t9g/97fYP/d3qD/3V3ff91d33/dXiB/3V4gf9ucXv/d3qD/3V4gf9zdn// +bnB3/3Byef95e4H/dXiB/3Byef9zdn//bnB3/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/ +bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/ +bG51/3N1fP9nanT/amxz/2psc/9ucXv/cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/ +ZGdx/2dqdP9cX2j/YGNs/2Zpc/9maXP/bG95/2Rncf9kZ3H/cHJ5/2Zobv9kZ3H/am13/2xvef9zdXz/ +bG95/2xudf9sbnX/d3l//3l8hv9sbnX/c3V8/3N1fP9zdXz/b3F1/3V3ff9sb3n/cnR6/3Fzev90dn7/ +bnF5/3J0e/9wcnf/cHJ5/2xudf9ucHf/bnB3/3d5f/9sbnX/b3F1/3V3ff91d33/cnR7/2xudv9sbnb/ +cXN7/2ttc/9qbHX/bG93/3Fzef9rbXb/bG53/29yev9tcHj/a254/2xvef9ucXn/c3V7/29yev9rbXb/ +cnV//25xef9wcnn/c3V8/3V3ff9ydHn/eXuA/3V3fv90dn3/c3V9/3h7hf91eID/dXd+/3N1fP90dnz/ +cHJ5/3R2fv9xdH3/b3J8/3J1fP9wc3v/a252/29xeP9ydX//bW94/2xveP9nanT/a253/2xudf9qbXf/ +bW9z/3Bzff9qbXf/aGt0/2xvef9zdn3/am11/21veP9sbnb/bW94/2xvef9qbXf/am13/3Bzff9sbnX/ +Z2p0/2xvef9ucXv/c3V8/2xvef9sbnX/c3V8/3N1fP9zdXz/cHJ5/21vc/9qbXf/bnF7/21vc/9ucHf/ +dnh8/21vc/9qbHP/cHJ5/3l7gf9wcnn/bG95/2xvef9ucXv/bnB3/2xvef9zdn//cHN9/2xvef9qbXf/ +eHl9/2dqdP9nanT/bG51/3t9g/9sb3n/cHN9/2xvef9qbXf/Z2p0/3t9g/9qbHP/Z2px/2dqcf9maXP/ +Z2px/2dqcf9qbHP/am13/25xe/9qbXf/Z2p0/2xudf9wc33/c3V8/2xvef9qbXf/bW9z/25wd/9ucHf/ +Zmhu/2xudf9sbnX/c3V8/2dqdP9zdn//c3Z//25wd/95e4H/am13/3V4gf9zdn//cHJ5/3l7gf97fYP/ +cHJ5/3N2f/9wcnn/bG95/3Byef9zdn//dXiB/2xvef91eIH/c3Z//3d6g/91eIH/c3V8/3N2f/97fYP/ +bnF7/3N2f/9zdn//c3Z//2dqdP95e4H/c3Z//25xe/9ucHf/bG95/25xe/9zdXz/Zmlz/3N1fP9zdXz/ +c3V8/25wd/9wcnn/dnh8/3Z4fP9ucHf/cHN9/25wd/9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/ +bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/ +am13/2psc/91d33/am13/2xudf9maXP/bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/ +dnh8/3Byef9zdXz/Zmlz/2xvef9wc33/dXiB/3d5f/9wc33/cHN9/36Biv9wcnn/c3V8/3t9g/9+gIb/ +e32D/3d6g/9wc33/cHN9/3l8hv+Bg4r/dXiB/3t9g/93eoP/eXuB/3N2f/91d33/b3F1/3R2fP9vcXn/ +cnR8/21vdv90dnv/bnB3/3Byef9qbXf/bG95/2xvef93eX//bG51/25wd/93eX//e36H/3Z5gv9tcHr/ +b3J7/3Z3ff9rbnf/bG94/2xveP90dn//bW92/3J1ff9wc33/bW92/21wev9ydX//cHN9/3F0ff9tcHn/ +aWty/21vdv9qbHP/bG94/3V3fv9tcHn/a210/3Z4fv9tb3b/bW92/21veP9ucXr/b3F6/21wef9tb3b/ +cXN6/2xudP9ydHv/b3F5/2xvd/9ydHz/bW93/2tueP90dnz/cXN6/29xeP9sbnX/amxz/2xudf9qbHP/ +bG51/2xudf9wc33/bG51/2ptd/9wc3z/c3V8/21vdv9zdXz/bnB3/25xev9ucHf/cHJ5/25xe/9zdn// +cHJ5/2ptd/9zdXz/cHN9/3V3ff93eX//cHJ5/3V4gf9zdn//dXd9/3Bzff9ucHf/c3V8/3Bzff9zdXz/ +cHN9/3l7gf9wc33/am13/3Byef93eX//am13/2xvef9sb3n/bG95/2ptd/9sbnX/dXd9/3Byef9qbXf/ +Z2p0/3V3ff9nanT/bG51/29xdf9+gIb/dXd9/3V3ff9ucHf/bnB3/25wd/+Bg4r/bnB3/29xdf9vcXX/ +bG51/2xudf9ucHf/bnB3/21vc/91d33/bnB3/25wd/9vcXX/dnh8/3l7gf9zdn//cHN9/25wd/9ucXv/ +bnB3/2dqcf9vcXX/bG51/3N1fP9qbXf/dXiB/3N2f/9ucHf/d3l//2dqdP91eIH/c3Z//3N1fP9zdn// +eXyG/3N1fP93eoP/cHN9/3Bzff9zdXz/bnF7/3V4gf9wc33/eXyG/3V4gf95e4H/d3qD/2xudf9sbnX/ +dnh8/3Byef9zdXz/bnB3/25xe/9gY2z/bnF7/25xe/9ucHf/bG51/2xudf9sb3n/bG95/2dqcf9zdXz/ +bG95/3N2f/9ucHf/bnB3/3N1fP92eHz/b3F1/3Byef9ucHf/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/ +am13/2xudf9ucXv/bG95/25xe/9wc33/bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/ +bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn// +d3qD/3l7gf93eoP/e32D/3Bzff9zdn//d3qD/36Ahv97fof/dXiB/3d5f/+DhYz/dXiB/3V3ff97fYP/ +foCG/3t9g/9zdn//cHJ5/3N1fP93eX//d3qD/2xvef93eX//c3Z//3N2f/9ucXv/dXd9/25wd/94eoD/ +dHeA/3N2f/9ucXv/dnh//2xvef9wcnn/bG51/2xudf9qbHP/eHl9/2xvef9sb3n/d3l//3d6g/91d33/ +bnF7/3Bzff96fIP/bnB3/29xdf9ucXr/d3h8/2xudf9ydHv/bnB3/2ptd/9vcXj/bnF7/2xudf9wcnn/ +b3F4/2Zpc/9rbnX/am13/29yfP93eoD/b3J8/2xvef95e4H/b3F1/2xvef9ucXv/b3J8/3F0ff9vcnv/ +bnF7/3Z4fv9wcnn/dnh+/3J0fP9ydHv/dXd9/2xudv9nanT/dnh+/25xe/9ucXv/am13/2ptdP9qbHP/ +bW9z/2xudf9qbHP/cHN9/2xudf9sb3n/dXd9/3d5f/9wc33/eHqA/3N2f/9sb3n/c3Z//3d6g/91eIH/ +e32D/3N2f/9wc33/e32D/3l8hv9+gIb/e32D/3Bzff95e4H/d3l//3d5f/9ucXv/bnB3/25wd/9ucXv/ +bG95/2xudf9wc33/amxz/2BjbP9nanH/bG95/2Zpc/9nanH/Zmlz/2ptd/9nanT/am13/3V3ff9ucXv/ +am13/2ptd/9zdXz/bG51/2xudf9qbXf/e32D/25xe/9wc33/am13/2ptd/9qbXf/f4GH/2ptd/9qbXf/ +bG95/2ptd/9wcnn/bnB3/25wd/9sbnX/dnh8/25wd/9sb3n/bG95/3V3ff93eX//cHN9/3N2f/9wcnn/ +cHN9/3Byef9nanT/cHJ5/3Byef9wc33/am13/3N2f/9zdn//cHJ5/3l8hv9ucXv/dXiB/3Bzff9vcXX/ +bnB3/3h5ff9tb3P/bG95/2psc/9qbHP/Z2p0/2ptd/9ucXv/Zmlz/2xvef9sbnX/am13/25xe/9sbnX/ +bW9z/3h5ff9wc33/c3V8/3N1fP9wc33/amxz/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/3Byef9maXP/ +bnF7/2xudf9ucXv/am13/2xvef9zdXz/cHN9/2xudf9wcnn/bG51/3Byef9ucXv/bG95/2ptd/93eX// +dXd9/3Byef9ucHf/c3V8/3N1fP91d33/c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/ +eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/ +bG95/2xvef9wcnn/am13/3Bzff9nanT/Z2p0/25xe/9zdXz/dXd9/2xudf9sbnX/c3V8/2xudf9qbXf/ +cHN9/3Z4fP9wcnn/bnB3/2xudf9tb3P/dXd9/3V4gf9sbnX/dXd9/3V3ff91d33/c3V8/3Z4fP9vcXX/ +c3Z//3V3ff9sbnX/Z2p0/3V3ff9qbXf/bnF7/2dqdP9qbHP/Z2p0/3V3ff9ucHf/bnB3/3N1fP92eHz/ +dXd9/3Byef9wcnn/eXuB/25wd/9sb3n/c3V8/3Z4fP9ucHf/cHJ5/21vc/9sbnX/cHJ5/3N2f/9wcnn/ +c3Z//3N2f/9qbXf/c3V8/3N1fP93eoP/eXyG/25xe/9qbXf/fX6B/21vc/9nanT/bnF7/2xvef9sb3n/ +bG95/2xvef9wc33/amxz/2xvef9sb3n/bG95/25xe/9nanT/ZGdx/3V3ff9wcnn/bnB3/21vc/9vcXX/ +am13/29xdf9ucHf/bG95/3N2f/9sb3n/bG95/3N2f/93eX//bnF7/3d5f/9wc33/cHJ5/3N2f/91eIH/ +c3Z//3l7gf9sb3n/bnB3/3N1fP91d33/dXd9/3N1fP9sbnX/dnh8/3Z4fP91d33/bnB3/21vc/9qbHP/ +am13/2xudf9tb3P/cHJ5/2xudf9kZmz/bnB3/3V3ff9sbnX/b3F1/2psc/9wcnn/bG51/2xvef91d33/ +c3Z//3Byef9ucHf/e32D/3N1fP9zdXz/c3V8/4OFjP91eIH/fX6B/3d5f/97fYP/dXd9/4mLkf93eX// +dXiB/3d6g/9zdn//dXiB/3Bzff9zdn//dXd9/3t+h/97fYP/dXd9/3Bzff95e4H/f4GH/3d6g/9ucXv/ +bnB3/3Byef9wcnn/Z2p0/25wd/9vcXX/cHJ5/2psc/9ucHf/bnB3/2xudf93eX//am13/3N2f/9sb3n/ +bnB3/25xe/91eIH/am13/3Bzff9ucHf/bG95/3Byef9wcnn/c3V8/2xudf9wcnn/bnB3/25wd/9zdXz/ +cHN9/3N1fP91eIH/c3Z//3N2f/95e4H/dXiB/25wd/9ucXv/bnF7/25xe/9vcXX/amxz/3V3ff9zdXz/ +amxz/3N1fP9tb3P/cHN9/2ptd/9ucHf/c3V8/3d5f/9qbXf/cHJ5/21vc/9sb3n/c3V8/25wd/9qbXf/ +dXd9/3V4gf9wc33/bG95/3N2f/91eIH/d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/ +dXiB/3t+h/9zdn//dXiB/25xe/97fYP/c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/ +bnB3/3Bzff9zdn//c3V8/3Byef91d33/bG51/21vc/91d33/dXd9/3d5f/9sb3n/bnF7/3l7gf9wcnn/ +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//cHJ5/3d5f/95fIb/bnB3/3N2f/91d33/dXd9/25xe/95e4H/ +am13/3V4gf9wc33/bnB3/25wd/94eX3/b3F1/3V3ff9vcXX/b3F1/2xudf9ucXv/bG51/25wd/91d33/ +dnh8/3N1fP9sb3n/bnB3/3Z4fP9tb3P/bG51/25xe/91d33/amxz/2xvef9qbXf/bW9z/3Byef91d33/ +bW9z/25xe/9ucXv/Z2px/21vc/9sbnX/c3Z//36Ahv9sb3n/ZGdx/3d6g/9kZ3H/YGNs/2Zpc/9kZ3H/ +ZGdx/2Zpc/9nanT/bG95/2psc/9qbXf/bnF7/25xe/9ucXv/Z2p0/2Zpc/91d33/cHN9/25xe/9sbnX/ +amxz/2psc/9ucHf/bnB3/2xudf91eIH/bnF7/3Bzff93eoP/eXuB/3Bzff91eIH/cHN9/2ptd/9ucXv/ +cHN9/25wd/91d33/bW9z/2xudf9ucHf/cHN9/3N1fP9wc33/bG95/3V3ff9ucXv/cHN9/2ptd/9nanH/ +ZGdx/2Zpc/9iZW7/ZGdx/2Zpc/9nanH/XWBq/2psc/9ucXv/ZGdx/2xudf9kZ3H/bG95/2Zpc/9qbXf/ +cHN9/3Bzff9sbnX/bW9z/3N2f/9sb3n/bnB3/29xdf9+gIb/cHJ5/3Byef9ucHf/cHJ5/21vc/9+gIb/ +bG95/2xudf9wcnn/bG51/25xe/9qbHP/amxz/2dqdP93eX//cHN9/2ptd/9sbnX/c3V8/3N2f/9ucXv/ +Z2px/2dqcf9nanT/Z2px/2BjbP9nanT/bG51/2xvef9qbHP/am13/2ptd/9qbXf/dXiB/2psc/9ucXv/ +bW9z/2xvef9ucXv/d3qD/25wd/9wcnn/bnB3/2ptd/9wcnn/c3Z//3V3ff9sb3n/cHN9/3N1fP9wc33/ +eXuB/3d5f/91d33/e32D/3t9g/97fYP/f4GH/36Ahv9zdXz/d3l//3t9g/93eX//d3l//3d5f/9+f4P/ +e32D/3Bzff93eoP/c3Z//36Ahv9zdn//dXiB/3t9g/97fof/c3Z//3V4gf9zdXz/cHN9/3l7gf9wc33/ +bnF7/3V3ff91eIH/bnF7/25xe/91d33/bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/ +bnB3/25wd/93eX//cHJ5/3Byef9ucHf/eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/ +bG95/2xudf9ucXv/cHJ5/3N1fP9ucHf/c3V8/2dqdP9maXP/bnF7/25xe/9ucXv/ZGdx/2dqcf9ucHf/ +Zmhu/2Jlbv9qbXf/cHJ5/2xvef9ucXv/bG95/2dqdP9wc33/c3Z//2xudf9wc33/cHN9/3Byef9sbnX/ +cHN9/2dqdP9qbXf/bG95/2xvef9qbXf/c3V8/2xudf9wc33/am13/2ptd/9qbXf/cHJ5/25wd/9ucHf/ +dXd9/3V3ff9zdXz/bnB3/25wd/92eHz/bG95/2dqdP91d33/dXd9/2xudf9qbXf/bG51/2xudf9qbXf/ +c3V8/25wd/9sb3n/cHN9/2ptd/9wcnn/bnB3/3Bzff9+gIb/bnB3/2psc/9/gYf/b3F1/2psc/9zdXz/ +bnB3/3Byef9wcnn/bnF7/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/2xudf9maG7/d3l//3l7gf9zdn// +bnB3/2xudf9nanT/bnB3/25wd/9qbXf/c3Z//2ptd/9sb3n/c3Z//3d5f/9ucXv/dHeA/3N2f/9rbnf/ +bnF7/25xe/9ucHf/eXuB/2xvef9sb3n/cHN9/3d5f/95e4H/dXd9/3Bzff91d33/cHN9/3Z4fP9ucHf/ +bG51/29xdf9ucHf/bnB3/2xvef9zdn//c3Z//2Zpc/9zdn//d3qD/25wd/9wc33/am13/3V4gf9wc33/ +dXiB/36Ahv9+f4P/dXd9/3V3ff97fYP/c3Z//3N1fP9wc33/foGK/3V4gf91eIH/eXuB/3t9g/91d33/ +g4WM/3t9g/9zdn//eXuB/3Bzff91eIH/cHJ5/25xe/9ucHf/eXyG/3l7gf9wc33/cHN9/3N2f/93eX// +c3Z//25wd/9sb3n/bnF7/25wd/9nanT/b3F1/25wd/9wcnn/bW9z/2xudf9ucHf/am13/3l7gf9nanT/ +bnF7/25xe/9wc33/cHN9/3t+h/9qbXf/bnF7/3Byef9ucHf/bnF7/3V4gf91eIH/dXd9/3l8hv91d33/ +d3l//36Ahv95e4H/d3l//3l8hv95e4H/d3l//36Ahv97fYP/cHN9/3V4gf91eIH/cHN9/3Byef9qbXf/ +dnh8/3Byef9nanT/bnF7/2psc/9zdXz/bG51/2ptd/9ucXv/c3V8/2dqdP9qbXf/Z2px/2Zobv9ucXv/ +am13/2Rncf9qbXf/am13/2Zpc/9nanH/am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/ +eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/ +bnF7/25wd/9vcXX/c3V8/3Byef9ucXv/bnB3/3N1fP9qbXf/Z2p0/3Bzff92eHz/dXd9/2psc/9wcnn/ +dXd9/21vc/9sbnX/c3V8/3V3ff9wc33/bG95/3Byef9sb3n/c3V8/3l7gf9sb3n/cHN9/3V3ff9zdXz/ +cHN9/3V4gf9sb3n/bnB3/29yfP9wc33/bG95/3d5ff9sb3n/dXd9/2ptd/9sb3n/am13/25xe/9wcnn/ +c3Z//3V4gf95e4H/d3l//25xe/9ucXv/d3l//25xev9qbXf/cHJ5/3J0e/9sbnX/bG52/2xudf9sbnX/ +bnB3/3N1fP9tb3P/a254/2tueP9oa3T/a253/2xudf9vcXn/eXuC/29xeP9qbHP/fH6F/25wdf9nanL/ +cnR7/29xeP9xc3r/cHJ5/21vd/9zdXz/b3F4/25xev9ucXv/b3J8/25xe/9sbnX/Zmlz/3N2fP9xdH7/ +cnR7/21vc/9nanT/ZGdx/2xudf9sbnX/amxz/25xe/9qbXf/am13/25xev90dnz/a211/2ptd/9sb3n/ +Z2pz/2xvef9sbnX/amxz/3N1fP9nanT/Z2p0/2xvef9zdXz/c3V8/3Bzff9sb3n/cHN9/2xvef9zdXz/ +bG95/2xudf9qbXf/bG95/2xudf9qbXf/cHJ5/25wd/9nanH/cHN9/3N2f/9sb3n/cHJ5/2Zpc/9wcnn/ +bG51/3Bzff93eX//d3qD/3Byef9qbXf/dXiB/25xe/9zdXz/cHN9/36Biv9zdn//c3Z//25xe/9zdn// +c3Z//4GDiv9zdn//cHJ5/3l7gf9wcnn/c3Z//3N1fP9wc33/bG95/3d6g/91eIH/b3F1/29xdf9zdXz/ +eHl9/3h5ff9tb3P/bG51/2xudf9qbHP/Z2p0/21vc/9wcnn/cHJ5/25wd/9wcnn/cHJ5/25wd/95fIb/ +Z2p0/25xe/9wc33/bnF7/25xe/97fof/c3Z//3d5f/91d33/eHl9/3d5f/95e4H/e32D/3l7gf9+gYr/ +eXyG/3l8hv+Agob/cHJ5/25wd/9wc33/bG95/2xvef92eHz/dXd9/2xudf9tb3P/bG95/25xe/9ucHf/ +amxz/3V3ff9wcnn/bnB3/3Byef9vcXX/d3l//25xe/9zdn//eXuB/3l8hv9zdn//dXiB/3Bzff9wc33/ +dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/ +bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/ +b3F1/3Byef9sbnX/bG51/25xe/9sbnX/cHJ5/25wd/9zdXz/bW9z/2psc/9wc33/dXd9/3N1fP9nanT/ +bnF7/3Z4fP9vcXX/b3F1/3N1fP91d33/cHN9/25xe/9wc33/bG95/3Bzff93eoP/bG51/3Byef9ucXv/ +bnF7/3Byef91d33/bG51/21vd/9tcHr/c3V9/2xvdv92eH3/b3F4/3Byef9sbnX/bG51/2xudf9qbXf/ +bW9z/3N1fP91d33/dXiB/3V3ff9ucHf/bXB6/3J1fv9vcXj/a212/25xe/9ucXv/bnB4/29yd/9ucXr/ +cnR7/3F0ff92eH7/b3F4/3N1fv9xdH3/bnB2/3BzfP9vcXj/cnV8/3x+hP9tb3b/a210/3p8gv9vcXb/ +aGp0/2xveP9vcXf/bnF5/25xef9tb3b/bXB6/25weP9tb3f/bnB4/3Bzev9ucHj/bW91/2dqc/9ydXr/ +eHl//3N1fP9tb3b/bnB3/2xudf9vcXX/b3F1/2xudf9wcnn/bG51/2xudf9xc3r/d3mA/29xd/9ucXv/ +c3V+/3BzfP9sb3n/amxz/2psc/9ucHf/YmVu/2Zpc/9nanT/Z2p0/2dqdP9maXP/Zmlz/25wd/9maXP/ +Z2p0/2Zobv9kZ3H/YmVu/2Rncf9kZ3H/Zmhu/2ptd/9sbnX/ZGdx/2xudf9wc33/am13/2ptd/9iZW7/ +bG51/2Zpc/9ucXv/dXd9/3N1fP9ucHf/bnB3/3N2f/9sb3n/bnB3/25wd/95e4H/bnB3/2xvef9qbXf/ +bnB3/2xudf99foH/cHJ5/25wd/9zdXz/bnB3/3Byef9ucHf/cHN9/3Byef97fof/eXuB/25xe/9wcnn/ +eHl9/3Z4fP94eX3/bW9z/2xudf9sbnX/b3F1/25wd/9vcXX/cHJ5/3Byef9sbnX/cHJ5/25wd/9tb3P/ +d3l//2dqcf9ucHf/c3V8/2ptd/9sbnX/dXd9/2ptd/9sb3n/bG51/2dqdP9qbXf/am13/2ptd/9maXP/ +bnF7/2xudf9sbnX/cHJ5/25xe/9sb3n/c3V8/25wd/9ucXv/eXuB/3V4gf9ucXv/c3V8/3V4gf91eIH/ +bnF7/2ptd/9wc33/cHN9/3Byef9wc33/bnB3/3d5f/9wcnn/cHN9/3d6g/95e4H/c3Z//3V4gf9ucXv/ +cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/ +c3V8/2xudf95e4H/bnB3/3N1fP93eX//dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/ +am13/2Zpc/9nanT/bG51/2psc/9sb3n/bG51/2xvef9qbXf/bG95/2dqcf9maXP/bnF7/3Byef9sb3n/ +Zmlz/2ptd/9ucXv/am13/2xudf9wcnn/dXd9/3N1fP9zdXz/dXd9/25xe/9zdn//e36H/2xvef9zdXz/ +cHJ5/3V3ff91d33/dXd9/25wd/9sbnf/b3J6/3N2f/9sb3f/dniA/3F0ff90dnz/bnB3/21vc/9sbnX/ +am13/2psc/9ucXv/bnF7/3V3ff9wc33/Z2p0/3Byef9ucXv/a252/2lsdv9sb3n/a254/2tueP9tcHj/ +bG95/2hrdf9maXP/bnF5/2lrcf9tcHj/am13/2dqcv9pbHb/aWt0/2psdP9wcnv/ZWhy/2Zpc/9vcnr/ +a252/2dqc/9nanT/cXR8/25wef9ucHj/ZWhx/2Vocv9kZ3H/Zmlx/2dpcP9nanT/aWx0/2Vocf9gY2z/ +Z2p0/3N1ff9qbXf/Zmly/2Zocf9jZm7/ZWhy/2dqcf9kZ3H/Z2p0/2Rncf9nanP/b3J7/3R3f/9rbnb/ +a211/3R2fP9ydHv/bnF7/21vc/9ucHf/d3l//2psc/9ucHf/cHN9/3N1fP9zdXz/c3Z//2xvef91eIH/ +c3V8/3Z4fP9zdXz/cHJ5/25wd/9ucXv/b3F1/25wd/9ucHf/bnB3/2xudf9sbnX/c3V8/2xudf9sbnX/ +Zmlz/2psc/9qbXf/bnF7/3N1fP9wc33/am13/2ptd/9ucXv/bG51/25wd/9ucHf/foCG/25xe/9wcnn/ +b3F1/2xudf9zdXz/e32D/3N1fP9ucHf/c3V8/25wd/9zdXz/bnF7/3N2f/9wcnn/eXyG/3d6g/9zdn// +c3Z//3d5f/93eX//eXuB/25xe/9ucXv/bnB3/2xvef9sb3n/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/ +cHJ5/3d5f/9kZ3H/bnF7/3Bzff9sb3n/bnF7/3V4gf9ucHf/bG95/25xe/9ucHf/cHN9/25wd/9ucXv/ +bG95/3N1fP9ucHf/bnB3/25xe/91eIH/dXiB/3N2f/9sb3n/bnB3/3h5ff9ucHf/bG51/21vc/9wcnn/ +c3V8/3Byef9nanT/bnF7/3N2f/9sb3n/cHJ5/2xvef95e4H/cHN9/3Bzff91eIH/dXiB/3Z4fP9zdn// +bG95/25xe/91eIH/cHN9/25wd/95fIb/d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/ +bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/ +dnh8/2xvef9qbXf/am13/2xudf9qbXf/c3V8/2xudf9wcnn/bnB3/3N1fP9vcXX/bG51/3V3ff91d33/ +dXd9/2ptd/9sb3n/am13/2ptd/9maXP/bnF7/3V3ff9sb3n/cHN9/25xe/9qbXf/cHN9/3V4gf9sbnX/ +cHJ5/2xudf92eHz/cHN9/3d5f/9wc33/bnB4/29xef95e4L/bnB2/3N2fv9ucXr/c3V+/2xvef9ucHf/ +cHJ5/25xe/9ucHf/dXd9/3Byef91d33/c3V8/21vc/9ydHz/b3F6/2ttdv9rbXX/am13/2Zpc/9rbnf/ +bG94/2tueP9naXD/Zmlz/2xveP9oa3X/cnR7/2ptd/9oa3T/cnR7/2xudf9sb3b/dHZ+/3Bydv9sb3n/ +cHN8/3J1ff9tcHn/b3F1/3l7gf92eH7/dXd9/25wd/9tb3f/aGt1/25wd/9ucHf/bG95/3R2f/9ucHf/ +bW92/25wd/97fIH/cHJ5/21wef9ucHf/am13/21wev9ucXv/bnB3/3N2f/9ucHf/b3F4/3F0fv90d4H/ +a254/2lsdv9xdH7/c3V8/3N2f/9wc33/d3qD/3t+h/9ucXv/cHN9/3d6g/91eIH/dXiB/25xe/9ucHf/ +e36H/3Bzff95fIb/d3qD/3Bzff9nanT/bnB3/2xvef9sb3n/c3V8/2ptd/9nanH/cHJ5/3Byef9vcXX/ +bG95/2xudf9ucHf/bG95/3Bzff94eX3/dXd9/3Byef9wcnn/eXuB/3N2f/9zdXz/c3Z//3l8hv9ucXv/ +bnF7/25wd/9ucXv/cHN9/3l8hv9wc33/bG95/3V3ff9wcnn/cHJ5/3Byef9wcnn/bG51/3N1fP9sb3n/ +bG51/2xudf9wc33/bG95/25wd/9qbHP/Z2px/2dqcf9kZ3H/Z2p0/2xudf9sb3n/bnB3/2xudf9vcXX/ +bnB3/25xe/93eX//ZGdx/25xe/9wc33/c3Z//3N2f/95fIb/cHJ5/3V4gf93eoP/c3Z//3t9g/91d33/ +dXiB/3Bzff93eoP/c3Z//3N2f/93eoP/eXuB/3l7gf93eoP/dXiB/3d5f/9/gYf/foCG/3d5f/92eHz/ +e32D/36Ahv99foH/d3l//3t9g/9+f4P/eXuB/3d6g/9wc33/foGK/3N2f/9zdn//eXyG/3l8hv97fYP/ +d3qD/3V4gf9wc33/e32D/3V4gf9ucXv/e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/ +am13/25wd/9wcnn/bG51/3l7gf9ucHf/c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/ +bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/bG95/3Bzff9sbnX/cHJ5/3Byef9ucHf/am13/2psc/91d33/ +dXd9/3Byef9maXP/am13/2dqdP9nanH/YmVu/2Zpc/9ucHf/am13/25xe/9ucXv/am13/25xe/91d33/ +amxz/25xe/9qbXf/bnF7/25wd/9zdXz/am13/25xe/9zdn//fH+I/3Byev90d4D/b3J6/3Bzff9nanT/ +bG51/2ptd/9qbXf/bnB3/3N1fP9wcnn/dXd9/3N1fP9sbnb/dXd+/3R3f/9vcnr/bnF6/3Bzff9vcXv/ +dnmC/3p8gv94eoD/cnV//3Byef9zdn//cHJ5/3h6gP9wc33/bnB3/3Z5gv9zdXz/c3V8/3l8hv91d33/ +dHZ8/3R2ff92eYL/dHeA/3N1fP95fIX/d3qD/3Z4f/9wc33/bG95/2dpc/9ucHf/bG51/29xdf9wcnn/ +bnB3/25wd/9sb3n/e32D/29ye/9ucXr/bnB3/21vdv9tcHr/bnB3/29xdf9ucXv/cHJ5/25wd/9tcHr/ +dnmC/2tueP9sb3n/d3qD/3N2f/9ucXv/bnB3/25xe/93eX//bG95/25wd/9wc33/cHN9/3N2f/9wc33/ +bnB3/3t+h/9ucHf/dXiB/3N1fP9wcnn/Z2px/3Byef9sbnX/bnB3/25xe/9ucXv/bnF7/3N2f/9wc33/ +c3V8/2ptd/9sb3n/cHJ5/3N1fP93eoP/eXyG/36Ahv91d33/dnh8/36Ahv95fIb/cHN9/3N1fP9/gYf/ +c3Z//3V4gf93eoP/d3l//3d5f/+Cg4f/e32D/3Z4fP95fIb/c3Z//3V4gf9zdn//c3Z//25wd/95e4H/ +d3qD/3N2f/9zdn//d3qD/3N2f/93eX//bnB3/2xvef9sb3n/bG95/25wd/9ucHf/dnh8/3Byef9vcXX/ +bG51/25wd/9wcnn/dXd9/2Zobv9sb3n/bnF7/3Bzff91eIH/e32D/25wd/9ucXv/bG95/3Byef9zdn// +bnB3/3V4gf9wc33/eXyG/3V3ff93eX//e32D/2Zpc/9nanT/Z2p0/2xudf9sbnX/c3V8/2ptd/9sbnX/ +am13/3N1fP9sb3n/cHN9/2xudf9zdXz/dXd9/25wd/9wcnn/bnF7/36Biv9zdXz/c3V8/3t9g/95fIb/ +d3l//3Bzff9ucXv/bnF7/3N2f/9sb3n/bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX// +amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/ +bG95/2xudf9wc33/am13/2Zpc/9sb3n/am13/25wd/9zdn//bnB3/25xe/9wcnn/c3V8/25wd/9ucHf/ +d3l//3Z4fP92eHz/am13/25xe/9wcnn/bW9z/2dqdP9sb3n/cHN9/2xvef9zdXz/c3V8/2xvef9wc33/ +dXd9/2xudf9sb3n/bG51/2xvef9qbXf/bnF7/2ptd/9wc33/bnF7/3h7hf9sb3b/cHJ7/25wdv9ucXv/ +am13/2xudf9sbnX/bG95/2xudf9ucXv/dXiB/3V4gf9zdXz/b3F1/3R2fP9xc3v/bnB1/25wd/9ucHf/ +am13/3Bzff91d33/dnh8/3Byef9sbnX/cHN9/3Byef95e4H/cHN9/25xe/91d33/bW9z/25wd/9wcnn/ +bnB3/29xdf9ucHf/c3V8/3Byef9vcXX/eXuB/3V4gf95e4H/bnB3/25wd/9kZmz/bG51/2dqdP9qbHP/ +bG51/2ptd/9maXP/amxz/3N2f/9qbXf/am13/2ttdv9rbnX/cHJ6/2xvef9wcnn/cHN9/3Byef9vcnn/ +bXB6/3N2gP9oa3X/Z2p0/2xvef9qbXf/dXiB/3N1fP93eoP/eXyG/3N2f/93eX//fn+D/3l8hv95fIb/ +dXiB/3d6g/9+gYr/cHN9/3d6g/91eIH/bnF7/2dqdP9sb3n/bnF7/25wd/9wc33/bG95/2ptd/9wc33/ +bnF7/3Byef9sb3n/bnF7/2xvef9sb3n/c3V8/3V3ff9zdXz/bnB3/25wd/93eX//bnF7/3Byef9ucHf/ +e32D/25wd/9wc33/c3V8/25xe/9ucHf/eXyG/3N1fP9ucHf/dnh8/21vc/9sb3n/cHJ5/25xe/9sbnX/ +dXd9/3V3ff9ucXv/bG51/3N1fP9ucXv/dnh8/2xudf9qbXf/bG51/21vc/9tb3P/bW9z/3N1fP9sbnX/ +amxz/2dqdP9sbnX/bnF7/3N1fP9kZ3H/bG51/2xvef9nanT/am13/2xvef9maG7/bG51/2xudf9qbHP/ +Z2p0/2Rncf9maXP/Zmhu/2Zpc/9iZW7/ZGdx/2dqdP9qbXf/am13/2xvef9qbXf/amxz/3N1fP9maXP/ +Z2px/2Zpc/9sb3n/am13/25xe/9kZ3H/cHN9/25xe/9sbnX/bG95/2xvef91eIH/bnB3/29xdf93eX// +eXyG/3d6g/9wc33/cHN9/3N2f/95e4H/c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/ +f4GH/3d5f/93eoP/c3Z//3d6g/91d33/foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn// +am13/25xe/9ucXv/c3Z//3Bzff9qbXf/c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bnB3/3V3ff9ucHf/ +am13/3V4gf95e4H/eXuB/2xvef9wc33/cHN9/3N1fP9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9sbnX/ +cHN9/3d5f/9qbXf/bnB3/21vc/9wcnn/bnF7/3V3ff9ucXv/bG51/25wd/94eoH/bnB4/3J0fP9vcXn/ +dHZ9/2xudf9qbXf/Z2p0/2ptd/9nanP/bG95/2xvef93eX//bnF7/2psc/9tcHn/bnB5/21vdP9rbXT/ +bnB3/2dqcf9sb3n/cHN9/25xe/9sb3n/amxz/2xvef9maG7/bG95/2dqcf9nanH/am13/2dqdP9maXP/ +bG95/2ptd/9qbXf/am13/2xudf91d33/bG95/3l8hv95e4H/eXuB/3Bzff9ucHf/am13/3N2f/9zdXz/ +c3V8/3V4gf91d33/dXiB/3d5f/+DhYz/e32D/3h6gP9zdn7/b3F5/2xvef9rbnj/Z2px/2dqdP9qbHP/ +a210/2xvef93eX//c3V8/25xev91eIH/cHN9/2xudf9sbnX/cHJ5/3Bzff9kZ3H/bnF7/3N1fP9sb3n/ +bG95/2xvef9ucXv/dXiB/2xvef91d33/bnF7/3N1fP9sbnX/bnB3/2xudf9ucHf/bG51/25wd/9qbXf/ +c3Z//25wd/9sb3n/bnF7/2ptd/9sb3n/bnB3/3Bzff93eoP/c3Z//25xe/9sb3n/dXiB/25xe/9wc33/ +cHJ5/3t+h/9ucXv/bG95/29xdf9sbnX/cHJ5/3t9g/9ucXv/amxz/3V3ff9qbHP/am13/2ptd/9sb3n/ +Z2p0/3V3ff9sb3n/am13/2psc/9zdXz/cHJ5/3d5f/9tb3P/bW9z/2xudf9nanH/bG51/2xudf91d33/ +bG51/21vc/9sbnX/bG51/3Z4fP92eHz/Z2p0/2xvef91d33/c3V8/25xe/9zdXz/b3F1/25wd/9ucHf/ +bnB3/25wd/9nanT/bG95/2ptd/9ucXv/am13/2xudf9sbnX/bG95/25wd/9wcnn/bG95/2xudf9zdXz/ +Z2p0/2dqcf9nanT/bG95/2ptd/9ucXv/ZGdx/25xe/9zdXz/bG51/2xvef9qbXf/cHJ5/2dqcf9nanH/ +bG95/3Bzff9ucXv/Z2p0/2dqdP9nanT/bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/ +cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/ +c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/ +bnB3/2xvef91eIH/dnh8/3V3ff9ucHf/cHN9/3N1fP9vcXX/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/ +bnB3/3Z4fP93eX//bG51/3N1fP9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9ucXv/d3qD/29yfP9zdn// +c3V9/3l7gf9qbXf/bnF7/3Byef9zdn//a254/3N2f/91eIH/e32D/3d6g/9wcnn/cXR+/3J1fv9ucXn/ +bnB3/3Byef9qbHT/c3Z//3h6gP9zdn//bnF7/2xvef9zdXz/b3F1/3N1e/9sbnX/bG51/3R2fP9ucXv/ +bnB3/3F0ff9vcXj/b3F4/25xe/9zdXz/dXiB/25xe/95fIb/eXuB/3l7gf9ucXv/am13/2Zpc/9wcnn/ +bnB3/2ptd/9wc33/bG95/3Bzff9ucHf/d3qD/3N2f/9wcnn/bnB3/29xdv9ucHf/cHJ5/25wd/9ucXv/ +bG95/25wd/9sb3j/dXd8/29xd/9sbnX/cHN9/2xvef9ucHf/bG95/3d5f/91eIH/Zmlz/3V4gf95e4H/ +cHN9/3N1fP91eIH/d3qD/4GDiv95e4H/eXyG/3V4gf93eoP/bnF7/3N1fP9ucXv/bG95/2xvef9ucHf/ +bnB3/3N2f/9wcnn/bnB3/2ptd/9ucHf/bG51/25wd/9ucXv/d3l//25xe/9ucHf/amxz/3d5f/9ucXv/ +am13/2ptd/91d33/bG51/3Byef9ucHf/cHN9/3V4gf9+gYr/d3qD/3Bzff97fof/cHN9/3N2f/93eoP/ +dXiB/3N2f/97fof/e32D/3d6g/91d33/e32D/3d6g/9+gYr/cHN9/3N1fP9zdXz/cHJ5/2xvef9ucHf/ +dXd9/25wd/9tb3P/bnB3/25wd/9zdn//dXd9/25wd/9tb3P/c3V8/2xvef9sb3n/cHN9/2dqcf9qbHP/ +amxz/2ptd/9qbXf/Z2p0/2ptd/9sb3n/cHN9/2xudf9nanT/am13/2dqdP9maXP/Z2p0/2dqdP9kZ3H/ +am13/2Rncf9maG7/YmVu/2Zpc/9kZ3H/am13/1xfaP9qbXf/bG95/2BjbP9kZ3H/Z2px/2xvef9maG7/ +Zmhu/25wd/9zdXz/bnF7/2dqdP9maXP/Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/ +bG51/2xvef9zdn//amxz/2xudf9qbHP/bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/ +bG95/25xe/9maXP/bG51/2xudf9ucXv/bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/25wd/9zdXz/ +cHJ5/29xdf9sbnX/dXd9/3V4gf95e4H/cHN9/3V4gf9zdn//cHJ5/3N1fP9wc33/e32D/3t9g/9+gYr/ +eXuB/3Bzff95e4H/eXuB/25wd/9zdn//bG95/3N2f/91eIH/eXyG/3d5f/9wcnb/b3F2/3Z4ff9vcXj/ +cHN7/21veP90dn3/am13/3Byef9wcnn/cHN8/2psc/9ucHf/bnB3/3V3ff9wcnn/bW9z/29xeP9sb3n/ +amxy/2Zpcv9oa3T/X2Js/2hrdf9xc3v/bG95/2xudf9pbHb/bXB6/2ttdf9rbnf/a252/2lsdv9tb3j/ +bW93/2psdP9vcnz/amx0/2dqdP9tb3b/bG51/3N1fP9qbXf/d3qD/3Bzff9wc33/bG95/2ptd/9qbHP/ +bnB3/21vc/9sbnX/bnB3/2xudf9wcnn/bW9z/3d5f/9wc33/bG95/29xef9sbnX/aWx2/2ptd/9nanT/ +am13/2xudf9nanT/a210/3N1ff9vcXn/bW93/3V4gf91eIH/am13/2ptd/9wc33/cHN9/2Jlbv9ucXv/ +dXd9/25wd/9sbnX/bG51/25wd/91d33/cHJ5/3V3ff9sbnX/cHN9/2dqdP9vcXX/bG51/2xudf9qbXf/ +am13/2xudf9zdXz/bnB3/29xdf9maXP/bG95/2xvef9sb3n/c3Z//3V4gf9wcnn/c3V8/2psc/91d33/ +cHN9/25xe/9sb3n/d3l//2xvef9ucXv/bnB3/2xudf9zdXz/foCG/3N2f/9sb3n/d3qD/2xvef9sb3n/ +c3Z//3N1fP9ucHf/dnh8/3Byef9ucHf/bG95/3V3ff9wcnn/e32D/29xdf9tb3P/bG51/29xdf9ucHf/ +b3F1/3Z4fP9ucHf/bnB3/3Byef9zdXz/dXd9/3V3ff9nanH/bG51/3d5f/9sb3n/am13/2xvef9sbnX/ +bnF7/2xvef9nanT/am13/2Rncf9maXP/Zmlz/2dqdP9iZW7/XF9o/2Rncf9ucXv/am13/3Byef9zdXz/ +bG51/3V3ff9ucHf/bG51/2psc/9zdXz/cHJ5/3N1fP9maG7/cHJ5/3N1fP9nanT/dXd9/2xudf92eHz/ +b3F1/2xvef91eIH/d3qD/3V4gf9sb3n/bnF7/3N2f/91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/ +bG51/25wd/9zdXz/d3l//2ptd/9qbXf/bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/ +bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9sbnX/ +bnF7/2ptd/9sbnX/am13/3d5f/93eX//eHl9/25wd/91d33/cHN9/25wd/9ucXv/cHJ5/3l7gf93eX// +e36H/3d5f/9ucHf/dXiB/3d5f/9wcnn/c3Z//2xvef9ucXv/c3Z//3l7gf92eHz/Z2pz/2Zpcv9ucHj/ +Zmlz/2hrc/9pbHb/bXB6/2dqdP9maXP/Zmlz/2dqdP9hZGz/Z2px/2dqcf9zdXz/am13/2dqdP9oa3X/ +a254/2hrdP9oa3P/am13/2hqcf9tcHj/cHJ5/3Byef90dnz/bnB5/3V4gf9ydHz/cXR+/29ye/9vcnv/ +b3J8/3N2f/9xc3r/eXyF/29ye/9tb3f/cnR+/3N1fP93eX//bnF7/3l8hv95e4H/dXiB/3N2f/9ucHf/ +am13/3N1fP9wc33/cHN9/3N2f/9ucHf/bnF7/2xvef95e4H/dXd9/25wd/9wc3r/cHN6/29ye/9ydX7/ +c3Z//3V4gf9zdXz/c3Z//3J1fv94eoL/cXN6/25weP9zdXz/c3V8/3V4gf91d33/foCG/3t9g/9wc33/ +d3qD/3l7gf93eoP/c3Z//3N2f/9zdn//d3qD/3N2f/93eX//bnB3/3V4gf9nanT/cHJ5/3Byef9wcnn/ +cHJ5/2xvef9wcnn/d3qD/3N2f/91d33/am13/3N1fP9wc33/cHN9/3l8hv97fYP/d3qD/3N2f/9ucHf/ +eXuB/3N2f/9ucXv/cHN9/3l7gf9wc33/c3Z//25wd/9wcnn/dXiB/36Ahv9zdn//bnB3/3d6g/9vcXX/ +bnB3/3N1fP9wcnn/bG51/3h5ff9wcnn/cHJ5/2xudf9zdXz/cHJ5/3d5f/9tb3P/bG51/2dqdP9ucHf/ +bnB3/3Byef93eX//bnF7/25wd/9ucXv/c3Z//3V3ff91d33/Z2p0/25xe/95e4H/c3Z//3N2f/9wc33/ +bnB3/3N2f/9ucHf/bnB3/3V3ff9sbnX/cHJ5/3V3ff91d33/b3F1/2dqcf9wcnn/c3Z//3Byef9zdn// +dXiB/3Bzff95e4H/c3Z//25xe/9qbXf/c3Z//3V3ff91d33/amxz/3Byef94eX3/bG95/3N2f/9ucXv/ +dXd9/25wd/9ucXv/d3qD/3V4gf93eoP/b3F1/3Byef91d33/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/ +am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/ +bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/ +Z2px/2dqdP9qbHP/Zmlz/2Jlbv9qbXf/am13/2xvef9maG7/Z2p0/2Rncf9gY2z/ZGdx/2Rncf9sb3n/ +Zmlz/3Bzff9zdXz/amxz/2ptd/9zdXz/bG51/25xe/9qbXf/am13/2xvef91d33/c3V8/21wev9vcXb/ +dHZ8/25wd/9vcnz/bXB5/3N2f/9sbnX/bG51/25wd/9ucXv/Zmlz/21vc/9sbnX/dXd9/25wd/9ucHf/ +cXN6/29xeP9ucHj/bnF6/3Bzff9vcnz/dHeA/3J1f/9wc33/dnmC/3J0fP93eYD/dHZ9/29xeP9wcnr/ +bnB4/3Byef9ydHv/b3F5/3h7gv9vcnz/bG93/3Fzev9sb3n/dnh8/29xdf95e4H/d3l//3N1fP9zdn// +bnB3/2dqcf9tb3P/bG51/2xudf9sb3n/amxz/2ptd/9nanH/c3Z//2xvef9qbHP/bG94/21vdv9rbnb/ +bG95/2ptd/9qbXf/Z2p0/2xudf9sbnX/cnR7/29xeP9oa3T/bG95/2xvef9ucXv/bG95/3V4gf9zdn// +amxz/25xe/91d33/bnB3/21vc/9qbXf/cHJ5/3d5f/9wcnn/d3l//2xvef91d33/Z2p0/25xe/9sb3n/ +bG95/3Byef9tb3P/bW9z/3Bzff9sbnX/Z2p0/2BjbP9nanT/Z2p0/2Zpc/9sb3n/bnF7/2dqdP9nanT/ +YmVu/25wd/9maXP/ZGZs/2Rncf9sb3n/Zmhu/2ptd/9kZ3H/YmVu/2Zpc/9ucHf/Z2p0/2BjbP9sb3n/ +YmVu/2Rncf9qbXf/Zmlz/2psc/9qbXf/Zmlz/2Rncf9iZW7/am13/2dqdP9zdn//amxz/2psc/9nanT/ +am13/2xudf9nanH/dXd9/2xudf9tb3P/bnB3/3Byef94eX3/d3l//2ptd/9ucXv/eXuB/3V4gf93eoP/ +dXiB/3N1fP95e4H/cHN9/3Bzff93eoP/cHJ5/3V4gf91eIH/c3Z//25wd/9qbXf/cHN9/3V3ff9vcXX/ +c3Z//3V4gf9ucHf/c3Z//25wd/9wc33/Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dXiB/2ptd/9wc33/ +bnF7/3Z4fP9wcnn/cHJ5/3l7gf93eX//e32D/29xdf91d33/dXd9/3N1fP9sb3n/Z2p0/3V3ff91d33/ +bnB3/2xvef9sbnX/bnB3/25wd/91d33/bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/ +bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/ +bnB3/21vc/9wcnn/bG51/2xvef9qbXf/dnh8/3h5ff91d33/bG51/25wd/9ucHf/am13/2xudf9nanT/ +c3V8/2xvef91d33/dXd9/2xudf9sb3n/c3V8/2dqdP9ucXv/Zmlz/2xvef9wcnn/d3l//3Bzff9wc3v/ +bXB5/3J1fv9qbXf/bnF7/2ptd/9zdXz/bG51/25wd/9zdXz/bnF7/2ptd/9ucXv/cHJ5/3d5f/9ucXv/ +cHN9/3V4gf9ucXv/bnF7/25wd/9vcnz/bXB6/21wev9oa3X/bXB6/3R2fP9ucHX/eHqA/29xef9sb3n/ +bG95/2dqdP9qbXf/Z2p0/2Zpc/9ydHz/bXB4/2lsc/9tb3j/a253/3V3ff9ucHf/d3qD/3V4gf91d33/ +dXd9/29xdf9maG7/bnB3/21vc/9sbnX/bnF7/2xudf9wcnn/bW9z/3V4gf9wc33/amxz/2ptd/9qbXb/ +bnB3/29xeP9qbXf/bnB3/2dqcf9sbnX/bG51/21wev9rbnf/Z2p0/2psc/9sb3n/cHJ5/2psc/91d33/ +dXd9/2psc/9sb3n/c3V8/3Byef9sb3n/bnB3/3V3ff94eX3/bnF7/3l8hv9zdXz/e32D/2xvef9zdn// +d3qD/3N2f/93eoP/dXd9/3N2f/9+gIb/cHN9/3N1fP9sb3n/cHN9/3N2f/9zdn//d3qD/3t9g/95fIb/ +d3qD/3Bzff97fof/eXyG/3V4gf9zdXz/dXiB/25wd/9wcnn/bnB3/3Byef91d33/d3qD/3d5f/9sb3n/ +d3l//25wd/9ucXv/d3qD/3V4gf91eIH/d3qD/3V4gf91eIH/dXd9/3t9g/93eoP/foGK/3Byef9ucXv/ +bnB3/25xe/9wcnn/c3V8/3t+h/9wc33/cHJ5/25xe/9wc33/d3l//3h5ff9qbXf/cHJ5/3d6g/9wcnn/ +dnh8/3N1fP9sbnX/dnh8/29xdf9ucHf/cHJ5/21vc/9zdXz/c3V8/3N1fP9tb3P/bG51/3N2f/9ucXv/ +bG51/2xvef9wc33/Zmlz/2xvef9nanH/Zmlz/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/25xe/9qbXf/ +bnF7/25wd/91d33/bnF7/2xvef93eoP/eXuB/36Ahv9wcnn/c3Z//3l7gf93eoP/c3Z//25xe/9+gIb/ +foGK/3l7gf97fYP/d3l//3t9g/93eoP/foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/ +e32D/3N1fP9wcnn/cHJ5/25xe/9zdn//c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/ +dXiB/3Bzff9wcnn/bG95/25wd/9zdXz/bG51/3V3ff92eHz/dXd9/25wd/9sb3n/bnF7/2xvef9ucHf/ +cHJ5/3h5ff9wcnn/foCG/3t9g/9tb3P/cHJ5/3Z4fP9ucHf/dXd9/2ptd/9ucHf/c3Z//3V4gf92eHz/ +c3V7/21wd/9wcnr/am13/3N1fP9sbnX/bnF7/2ptd/9sbnX/cHN9/25xe/9qbHP/bnB3/29xdf91d33/ +bG95/25xe/9wcnn/bG95/21vc/9ucHf/bG95/25wd/91d33/amxz/25xe/9zdn//c3V8/36Biv93eoP/ +c3Z//3d6g/91d33/cHN9/3d6g/91d33/foCJ/2Zpcv9jZnD/bnB3/2ptdv9vcnz/amxz/3d5f/93eX// +c3V8/3V3ff9ucHf/ZGZs/2xvef9sb3n/cHN9/3N2f/9vcXX/cHN9/25wd/93eoP/dXiB/25xe/9ucXv/ +bXB6/3Byef9vcXr/bnB3/2xvef9nanT/cHJ5/25weP90d37/c3V6/25weP9ucXr/c3Z//25xe/9maXP/ +c3V8/3V3ff9nanH/bnB3/3N1fP9zdXz/bnB3/21vc/9zdXz/d3l//25xe/9zdn//bG51/3Bzff9kZmz/ +bG51/2xvef9sbnX/c3V8/29xdf9sb3n/c3Z//25wd/9qbXf/Z2p0/3Byef9ucHf/bG51/3Bzff9zdn// +cHN9/2xvef9sb3n/dXd9/3V4gf9zdn//cHJ5/3V4gf9ucXv/cHN9/3Bzff9ucHf/c3Z//3d5f/91d33/ +Z2px/3Z4fP9sbnX/bG51/3Bzff9ucHf/bW9z/25wd/9sbnX/bnF7/2xudf9wc33/cHJ5/3V3ff9nanT/ +bG51/2dqdP9nanT/am13/2xudf93eoP/bG51/2xudf9wcnn/cHJ5/3d6g/93eX//bnB3/25wd/93eoP/ +cHN9/3d5f/9zdn//am13/3V3ff9ucHf/c3V8/3V3ff9tb3P/cHJ5/3N1fP91d33/bG51/2xudf9ucHf/ +dnh8/2xvef91eIH/cHN9/25wd/9zdXz/bnB3/2xvef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9zdn// +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//e36H/3l7gf9/gYf/bnB3/25xe/91d33/c3V8/21vc/9ucHf/ +dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/ +dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/ +eXyG/36Biv91eIH/dXiB/3N1fP9wc33/dXiB/25xe/9zdn//dXd9/3Bzff9ucHf/cHJ5/3Byef9qbXf/ +cHJ5/2ptd/91d33/bG95/36Ahv97fYP/bW9z/3Byef91d33/b3F1/3Bzff9sb3n/bG95/3V4gf95e4H/ +d3l//3d5gv9ucXv/cHN9/25wd/9zdn//c3V8/3Bzff9sb3n/bnB3/3Z4fP9zdn//am13/25xe/9ucHf/ +dXiB/25wd/9wc33/cHN9/3Byef9vcXX/bG51/25wd/9zdXz/dXd9/2psc/9wcnn/bnF7/2xudf91d33/ +c3V8/25wd/9ucXv/am13/2psc/9sbnX/bW9z/3V3ff9ucHf/aWxz/3Fzef9sbnX/c3V+/25wd/93eX// +d3l//3Bzff93eoP/bnF7/2Zpc/9wcnn/bnB3/3Bzff9zdn//bG95/3N2f/9ucXv/dXiB/3V4gf9wc33/ +cnV+/25weP9rbXX/bXB4/2hqcf9maXP/YGNs/2ptd/9qbXf/b3J7/25wd/9pa3P/amxz/2ptd/9wc33/ +Zmlz/3V3ff91d33/amxz/3Byef9zdXz/cHN9/3N2f/9wc33/eXyG/3l8hv91eIH/d3qD/25xe/9zdn// +ZGdx/25wd/9ucXv/bW9z/3Byef9sbnX/bG51/3N1fP9qbHP/Zmlz/2dqdP9sbnX/amxz/2Rncf9ucXv/ +am13/2xvef9nanH/YmVu/2ptd/9qbXf/Z2px/2Zpc/9nanT/amxz/2psc/9sb3n/Z2p0/25xe/9wc33/ +cHN9/2Zpc/93eX//Z2p0/2xudf9zdn//c3Z//2ptd/9wcnn/b3F1/3Byef9vcXX/cHJ5/25wd/91d33/ +Z2p0/2ptd/9qbHP/bG51/2xvef9sbnX/d3qD/2dqdP9sbnX/bnF7/2xvef93eX//bnF7/2xudf9nanT/ +c3V8/2ptd/9qbXf/bG95/2Zpc/9wcnn/am13/2xvef9wc33/amxz/2ptd/9sb3n/cHN9/2ptd/9tb3P/ +bG95/3Z4fP9ucHf/c3V8/25xe/9qbHP/bnF7/2xudf9sbnX/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/ +am13/2xudf9zdXz/cHJ5/3Byef9wcnn/am13/3N1fP9wc33/eXyG/21vc/9ucHf/dXd9/2xvef9qbXf/ +bG51/3V3ff93eX//bG95/3Byef9ucHf/bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX// +am13/3Bzff9wc33/bW9z/2ptd/9nanT/am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/ +Z2px/2ptd/9zdXz/bG95/2xvef9qbHP/bG51/25xe/9nanT/dnh8/3N1fP9wc33/bnF7/3N2f/9zdn// +am13/3Bzff9zdXz/e32D/3V4gf+Fh43/f4KM/3N2f/93eoP/foCG/3N1fP95fIb/dnh8/3l7gf9+gIb/ +e36H/36Ahv95fIb/c3Z//3N2f/9sb3n/dXiB/2xvef9ucXv/bG95/3Byef91eIH/eXuB/2ptd/9ucXv/ +bnB3/3Bzff9wcnn/c3Z//3V4gf9sb3n/bG95/2xudf9sbnX/cHJ5/3V3ff9nanH/bnF7/3Bzff9ucXv/ +d3qD/3N2f/9ucXv/dXiB/3Byef9qbXf/b3F4/25wd/92eHz/cXR9/25wd/9vcnv/bG95/3N2f/9wcnn/ +d3qD/3d6g/9zdn//dXiB/3Bzff9nanT/bnB3/25xe/9zdn//cHN9/25wd/9zdn//cHJ5/3h5ff91d33/ +bG51/2xvef9tb3f/bnB4/29xev9rbnj/bnB3/2psc/9ucHf/b3F5/3J0ev9ucHb/Zmhv/2ptdP9sb3n/ +cHJ5/2dqcf93eX//c3V8/2dqcf9qbXf/cHJ5/25xe/9ucXv/cHN9/3t9g/95fIb/c3Z//3d6g/9zdn// +d3qD/2ptd/9zdXz/dXiB/3Bzff95fIb/dXd9/3V4gf9+gIb/cHN9/25xe/9qbXf/cHJ5/25wd/9sbnX/ +c3Z//3Bzff9wc33/bW9z/2ptd/9ucXv/bG95/2psc/9nanH/Z2px/2psc/9sbnX/bG95/2xudf9zdXz/ +dXd9/3N1fP9qbXf/dXiB/2dqdP9wcnn/c3V8/3N1fP9sbnX/am13/2xudf9sb3n/am13/2xvef9sb3n/ +dXd9/2ptd/9qbXf/Z2p0/2xudf9wcnn/b3F1/31+gf9vcXX/bW9z/3N2f/9wc33/dXiB/3N1fP9ucHf/ +cHN9/3d6g/9zdn//c3Z//3N2f/9sb3n/eXuB/25wd/9zdn//dXd9/25wd/9ucXv/dXiB/3l7gf9sb3n/ +bnB3/3N1fP9wcnn/Z2p0/2xvef9sb3n/bG51/25xe/9qbXf/bG95/2BjbP9sb3n/cHN9/2xvef9tb3P/ +bnB3/2xvef9qbXf/cHN9/25xe/9ucXv/bG95/25xe/91d33/c3V8/3t9g/9qbXf/bG95/3Z4fP9ucHf/ +bnB3/2psc/92eHz/dXd9/25xe/9ucXv/bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/ +d3qD/2xvef9wc33/cHN9/25wd/9ucXv/bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/ +amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/amxz/2ptd/9qbXf/Z2p0/3Bzff9ucHf/cHJ5/21vc/9ucHf/ +bnB3/2Zpc/9nanT/Z2p0/3V3ff9ucHf/fX6B/3d5f/9sbnX/bG95/3h5ff9ucHf/cHN9/2xvef9ucHf/ +dnh8/3V3ff91d33/dXd9/29xdf9ucHf/bG51/3Byef9sbnX/bG95/2ptd/9sbnX/cHN9/3V3ff9maXP/ +bG95/2xudf9qbXf/amxz/2ptd/9sb3n/Zmhu/2psc/9maXP/amx0/2ptd/9sb3n/YmVu/2xvef9tcHn/ +bW92/3V3ff9xdH3/bXB6/3V3ff9vcXj/bXB5/3Fzev9ydHr/dXh//3J0fP9vcXn/b3J7/29xdv9wcnn/ +bW9z/3V3ff93eX//bnB3/3Byef9wcnn/ZGdx/2ptd/9maXP/bG95/25xe/9qbXf/c3V8/2xudf91d33/ +c3V8/25wd/9zdXz/bXB6/21wev9ucXn/bG95/2xvef9sbnX/bnB3/25xe/92eH3/c3V8/2ptdf9vcXb/ +c3V8/3N2f/9maXP/e36H/3N2f/9sb3n/bG95/25xe/9zdn//cHN9/3N2f/93eX//eXuB/3Bzff93eoP/ +cHN9/3d6g/9nanT/bnB3/3N2f/9wcnn/c3Z//25wd/9ucXv/d3l//25wd/9sbnX/Z2p0/3Byef9ucHf/ +am13/3V4gf91eIH/c3Z//25wd/9sb3n/c3V8/3N2f/9ucHf/bnB3/25xe/9ucHf/bnB3/3V4gf9wc33/ +c3Z//3V3ff91d33/bnB3/3l7gf9nanT/bnF7/3Bzff9zdXz/bG51/2xudf9sbnX/bnB3/2xudf9sbnX/ +bG95/3Z4fP9qbXf/bG95/2xvef9wcnn/d3qD/3N1fP9+gIb/c3V8/3N1fP93eoP/dXiB/3t+h/93eoP/ +c3Z//3N2f/9+gYr/eXyG/3N2f/91eIH/bG95/3V4gf9ucHf/dXd9/3V3ff9wcnn/bG95/3N1fP9wc33/ +Zmlz/2dqcf9qbXf/eHl9/2xvef9wc33/c3Z//25xe/9zdn//cHN9/3V4gf9sb3n/dXiB/3t9g/91eIH/ +dXd9/3l7gf95e4H/d3l//35/g/95e4H/d3qD/3d6g/95e4H/eXyG/3d6g/+DhYz/dXiB/3d6g/97fYP/ +d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/ +bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/ +ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/dXd9/2xudf9ucHf/bG95/2xudf9zdXz/bnF7/3Byef9sbnX/ +bG51/21vc/9sbnX/cHJ5/2dqcf94eX3/bG95/3t9g/91d33/am13/25xe/91d33/am13/2ptd/9sbnX/ +bW9z/3V3ff94eX3/dXd9/29yfP9ucHf/bnB3/2ptd/9ydHz/b3F1/3V3ff9ucHf/bnB3/3V3ff9zdXz/ +Z2px/3Byef9ucXv/dXiB/3Byef9zdn//dXiB/3Byef9sb3n/a254/3Byd/9vcXn/cHJ5/2ttc/9tb3j/ +bnF7/25xev91d37/cHN8/25weP90dn//cXN5/29yev9ydH3/bnB3/3V3fv9ydX7/b3J8/3F0fv9zdn// +dXiB/25xe/93eX//d3l//25xe/9zdXz/bW9z/2dqcf9ucHf/bG51/3V3ff9ucHf/am13/3N1fP9sbnX/ +cHN9/3N1fP9qbXf/cHJ5/2xudf9rbnf/amx0/2ttc/9kZ3H/Zmlz/2psc/9qbXf/bnF6/3F0fP9rbnf/ +bXB4/3R2fP9wc33/YGNs/3d6g/9ucXv/Zmlz/2psc/9qbHP/Z2p0/2dqdP9nanT/c3V8/25wd/9sb3n/ +cHJ5/2dqcf9wc33/Zmlz/2xudf9qbXf/amxz/2ptd/9qbXf/bG95/3N1fP9sbnX/bG51/2Zpc/9qbXf/ +bG51/2psc/91d33/cHN9/25xe/9qbXf/am13/3Bzff9zdXz/amxz/2psc/9nanH/Z2px/2Zpc/9ucXv/ +am13/3Bzff9zdXz/cHJ5/2psc/91d33/bnB3/25xe/91d33/dXd9/2xvef9sb3n/bG95/25xe/9qbXf/ +cHN9/3N2f/95e4H/bG95/3N2f/9wcnn/cHJ5/3d6g/9wc33/foCG/25wd/9vcXX/c3V8/2xudf92eHz/ +cHJ5/29xdf9sbnX/dXd9/25wd/9wcnn/bG95/2Zpc/9zdXz/bW9z/3Z4fP91d33/bW9z/25wd/91d33/ +dXd9/2xudf9ucHf/cHJ5/25wd/9qbHP/bG95/25xe/9sbnX/bnF7/2dqcf9nanT/YGNs/2xudf9sb3n/ +amxz/2psc/9qbXf/amxz/2psc/9sb3n/am13/2xvef9qbHP/cHN9/3N1fP9sb3n/eXuB/2dqcf9nanT/ +am13/2dqdP9maG7/Zmlz/3Byef9zdXz/bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/ +bG51/21vc/91d33/am13/2xvef9zdXz/bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/ +Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/bnB3/3V3ff9sbnX/bG51/25wd/9qbXf/c3V8/25wd/9ucXv/ +am13/2xvef9sb3n/am13/25xe/9qbXf/dXiB/3N2f/9/gYf/eXyG/3Bzff91eIH/d3l//25wd/9zdXz/ +bnB3/29xdf9zdXz/dnh8/3V3ff9wcnr/b3F4/3J0ev9tb3f/cXN6/2ttdP9ucXv/bG51/25wd/94eX3/ +cHJ5/2dqcf9zdXz/c3V8/3N1fP9ucHf/bnB3/3Z4fP9vcXb/bXB6/2xvef9wc3z/cXN7/3Fze/9xdHv/ +cHJ5/3R2fv92eH7/dHeB/3R3f/9xdHz/eXuA/3d5f/9ydX3/eXyF/3BzfP93eYD/dHd//3Bzff90dn3/ +cHJ5/25xe/9tcHn/dnh8/3V3gP9ucXr/bnF6/2xvef9rbnj/aWx2/2tueP90dnz/b3F4/25wdP90dnv/ +bW93/3J0fP9zdXz/bW92/3J0fP9qbXf/bG51/25wdf9ucHb/bG51/2psc/9sbnX/am13/2ptd/9ydHr/ +Z2pz/2ptd/9xc3n/bG95/2Jlbv99foH/c3V8/2xudf9tb3P/bG51/25wd/9ucHf/bnB3/3V3ff91d33/ +cHN9/3Byef9maG7/bG95/2Rncf9iZW7/Z2p0/2xudf9qbXf/Z2p0/2xudf9ucXv/amxz/2dqdP9nanT/ +am13/2dqcf9nanH/cHJ5/25xe/9sb3n/am13/2xudf9ucXv/c3V8/2xvef9qbXf/bnB3/29xdf9ucHf/ +c3V8/3Byef91d33/bG95/2xvef9nanT/dXd9/29xdf9wcnn/dXd9/3Bzff9qbXf/bG51/2xudf9sb3n/ +Zmlz/2ptd/9qbXf/cHJ5/2Rncf9qbHP/Z2p0/2ptd/9sb3n/bG95/3d6g/9nanH/Z2px/25xe/9qbHP/ +d3l//2xvef9qbHP/bG51/3N1fP9sb3n/bG95/25xe/9maXP/bG95/2dqcf9ucXv/bG95/2dqcf9nanT/ +bnF7/25xe/9maXP/bG51/2ptd/95e4H/cHJ5/3V4gf93eoP/cHJ5/3l7gf9wc33/bnF7/2dqdP9sb3n/ +c3V8/3Byef9ucHf/c3Z//25xe/9ucXv/cHN9/25xe/9ucXv/bG95/3h5ff94eX3/cHJ5/4CChv9sbnX/ +bG51/3N1fP9wcnn/bnB3/2xvef91d33/dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/ +bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/ +cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/cHN9/2dqdP9sb3n/Z2p0/2xudf9qbHP/Z2p0/25xe/9qbXf/ +bnF7/2dqcf9qbXf/am13/2Zpc/9qbHP/ZGdx/2xvef9qbXf/c3Z//3N1fP9qbXf/am13/3N1fP9qbXf/ +bnF7/2ptd/9sbnX/bnF7/3Bzff9ucXv/am11/2xudf9xc3j/a211/3Fzev9tb3T/cHN9/2Zpc/9ucHf/ +dnh8/3Byef9rbXT/dHZ7/3Bzff90d4D/cHN9/2xvef9zdn//bnB3/25wd/9tcHr/cnV8/29xef9wcnr/ +cnR6/21vdv9wc3v/c3V7/3V3ff9wc33/bXB6/3N2fv90dnr/bnB1/3V3ff9tb3b/cXN6/3Byef9vcXn/ +cHJ5/3Byef9xc33/cHN8/3d5f/93eoL/cnV+/3BzfP9ucXr/bXB5/2tueP9tcHn/dnh+/3J0ff9vcnn/ +dHZ+/21wef9vcXr/b3J8/21vdv9ydX7/bG95/25wd/9tcHn/bW92/2dqdP9nanT/bnB3/25wd/9ucXv/ +dXd9/2ptdv9rbnf/bnF5/2xvef9iZW7/d3qD/2ptd/9qbXf/am13/2ptd/9qbXf/bG95/2ptd/9wcnn/ +bG95/2xvef9ucHf/Zmhu/2xvef9iZW7/ZGdx/2psc/9nanH/Zmlz/2Rncf9qbHP/bG95/2psc/9qbHP/ +Zmlz/2ptd/9qbHP/amxz/3Byef9qbHP/Z2p0/2psc/9iZW7/bG95/3Bzff9qbHP/amxz/2ptd/9sbnX/ +amxz/25xe/9ucHf/dXd9/29xdf9wcnn/Zmlz/3V3ff9sbnX/bnB3/3N1fP91d33/bnB3/3Byef9vcXX/ +bnB3/2psc/9sb3n/bnB3/3V4gf9qbHP/bG51/29xdf9sb3n/cHJ5/3Byef+Agob/bG51/2xudf9zdXz/ +bW9z/3Z4fP9zdXz/bnB3/25wd/94eX3/dXd9/3Byef9zdXz/bnB3/3V3ff9ucHf/dXd9/3Z4fP9vcXX/ +bG95/3V4gf93eoP/bnF7/2xvef91eIH/eXyG/25xe/93eoP/d3qD/3N1fP97fof/dXiB/3V4gf9ucXv/ +c3Z//3d6g/9zdn//cHN9/3N2f/9ucXv/bnF7/25xe/9sb3n/cHN9/25wd/94eX3/eHl9/3V3ff9/gYf/ +bG95/2xvef9wc33/bnF7/25wd/9sbnX/bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/ +bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/ +cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/cHJ5/3V3ff9sb3n/bG95/2dqdP9qbHP/Zmhu/2Rncf9nanT/ +amxz/2Zpc/9cX2j/ZGZs/2Zobv9gY2z/amxz/2BjbP9nanT/am13/3V3ff9zdXz/am13/2xudf9sb3n/ +bG51/2xvef9sbnX/am13/3N1fP9zdXz/c3V8/3Byef94eoD/eHuC/3N1fP93eX7/cnR5/3R2ff9sbnX/ +dXd9/3d6g/9zdXz/bnB2/3N1ff91d33/dXd9/3N1fP9sbnX/cHJ5/21wev9wc33/b3J7/3R3fv9ucXr/ +b3J3/3N1ef9rbnf/bnF7/3J0fP9ydX7/bnF6/2tueP9wc3z/b3F6/2lsdP9wcnn/aWx2/21veP9rbnj/ +bG95/21veP9pa3T/amxz/25wdv9ucHf/b3F2/2hqc/9tb3b/bG92/29xef9nanT/bnB3/3J1ff9vcXr/ +b3F4/3J0fP9ydHv/c3V7/3N1fP9tb3T/dHZ8/2ttdv9tb3X/a253/2xudf9laHL/ZGdx/2xudf9qbXf/ +bG95/3V3ff9qbHP/a213/2xudP9ucXv/ZGdx/3t9g/9ucXv/Z2p0/2xudf9qbHP/bnF7/2ptd/9ucXv/ +d3l//3N1fP91d33/dnh8/2xudf9wcnn/Zmlz/2dqdP9sbnX/bnB3/3Byef9vcXX/cHJ5/3Z4fP9vcXX/ +bnB3/2xudf9ucHf/am13/2ptd/9zdXz/bG51/2ptd/9qbXf/Z2p0/3Byef94eX3/b3F1/2xudf9sbnX/ +bW9z/2xudf9wcnn/bnF7/3V3ff9sb3n/cHJ5/2psc/93eX//bW9z/25wd/9wcnn/dXd9/25wd/9wc33/ +bnF7/25xe/9qbXf/c3V8/3N2f/95fIb/bG95/3Bzff9zdXz/bnF7/3N2f/9zdn//gYSN/3N1fP9ucHf/ +c3Z//25wd/91eIH/cHN9/25xe/9ucHf/d3l//3d6g/93eoP/eXuB/3Byef9zdn//c3V8/3l7gf95e4H/ +c3Z//3Bzff95e4H/eXuB/25wd/9ucXv/d3l//3t+h/9zdXz/e32D/3N2f/9sb3n/dnh8/25wd/9zdXz/ +Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/bG51/2xudf9qbXf/bG51/3Byef9ucHf/dXd9/3V3ff9zdXz/ +f4GH/29xdf9zdXz/cHJ5/25wd/9vcXX/bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/ +c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/ +dXiB/3d6g/9zdn//dXiB/25xe/9wc33/dXiB/3V4gf9zdn//bG95/3N1fP9ucHf/bnF7/2xvef9ucHf/ +cHJ5/2xudf9wcnn/Z2px/25wd/9tb3P/Z2p0/25wd/9nanT/cHN9/3N2f/91eIH/d3l//25xe/9sb3n/ +c3Z//25xe/91d33/bG51/29xdf91d33/dXd9/3N1fP9oa3T/cXR8/3N1ev9tcHn/b3J8/29xd/9zdXz/ +am13/3V3ff91d33/cHJ5/2xudv9ydHv/cXN6/3J0e/9wcnn/am13/25xe/9rbXP/bW92/21veP9vcnr/ +bXB6/21weP9ucHX/bG93/3Fze/9zdn7/dnmA/3N2f/9xdH7/d3l//3FzfP9tb3b/c3V6/25wef9xc3j/ +b3J3/25xef9zdn3/bG94/29xef91d3z/cXN4/3Bydv9qbXb/bXB6/21vd/9ydHv/Z2p0/2ttdP9ucHb/ +bG51/2hrc/9qbXb/a253/3J1ff9wc33/a210/3R2ff9nanT/aGty/2psc/9sbnX/ZGdx/2Zpc/9sbnX/ +Z2p0/2xvef9wc33/Zmlz/2xvef9qbXf/bnF7/2Jlbv93eoP/bnF7/2Zpc/9nanH/amxz/3Bzff9sbnX/ +bnF7/3V3ff9ucXv/bG95/3Byef9qbHP/am13/2Zpc/9kZ3H/Z2px/2dqcf9qbHP/bG51/2dqdP9ucXv/ +Z2px/2dqcf9maXP/Z2p0/2psc/9nanT/c3V8/2dqdP9qbXf/am13/2Zpc/9qbHP/am13/2dqcf9nanT/ +Z2p0/2Zobv9maXP/Z2p0/2ptd/9wc33/am13/2xudf9iZW7/c3V8/2Zpc/9ucXv/bnF7/3Bzff9sbnX/ +cHJ5/2xvef9qbXf/am13/2xudf9sbnX/d3l//2dqdP9sbnX/bG51/2dqdP9qbXf/am13/3t9g/9kZ3H/ +Zmlz/3Byef9qbHP/c3Z//2xvef9ucHf/bG51/3Z4fP9zdXz/dXd9/3V3ff9vcXX/cHJ5/2xvef9zdn// +c3Z//2xvef9qbXf/dXiB/3d5f/9ucHf/cHJ5/3l7gf91eIH/amxz/2xvef9sb3n/amxz/3Bzff9qbHP/ +bG95/2BjbP9sbnX/cHJ5/2xudf9ucHf/cHJ5/2ptd/9qbHP/am13/2ptd/9ucHf/bnB3/3N1fP9wc33/ +cHN9/4GDiv9ucHf/c3Z//25xe/9vcXX/b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/ +d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/ +bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/amxz/2ptd/9sb3n/bnF7/25wd/91d33/bnB3/25xe/9wc33/ +bnB3/3Bzff9zdn//d3qD/2xvef95fIb/dXd9/25xe/9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/97fYP/ +dXiB/3l8hv93eoP/eXyG/3N2f/9wcnn/dXiB/3l7gf9wc33/bnB3/3R2fv93eYH/c3V+/3R2fv9vcnn/ +cHN9/2ptd/91eIH/d3qD/3V4gf9wcnn/b3J8/29yfP9wcnn/cHJ5/21vc/9zdXz/b3F1/2xvef9tb3n/ +cHN7/3J0ff9wc3z/Z2p0/29xef9zdn//bnF7/3d4ff9zdn//cHJ5/3Z4fv9xc3f/am10/2xvef9ucHf/ +a254/21wev9wcnb/dXd9/25xev9vcnz/dnh//3Fzev9zdX3/Z2p0/25xe/9sb3n/dnh+/2hrdP9ucHf/ +bXB5/25xe/9sb3n/cHN9/3N2f/94e4X/c3Z//29xdf91d33/c3V8/2xudf9qbXf/bG95/2Zpc/9maXP/ +bG51/25wd/9wcnn/dXd9/2psc/9ucHf/bG95/3V3ff9maXP/f4GH/3V4gf9wcnn/cHN9/3Bzff93eX// +c3Z//3V4gf97fof/eXuB/3t9g/97fYP/d3qD/3l8hv9zdn//cHN9/3N1fP9zdXz/bnF7/25xe/9ucXv/ +dnh8/25wd/9wcnn/bG95/3N1fP9sbnX/Z2p0/3N1fP9kZ3H/Z2p0/2psc/9kZ3H/am13/2xvef9sbnX/ +bnF7/3Bzff9sbnX/Z2p0/2ptd/9ucXv/c3V8/25wd/9qbXf/ZGdx/3N1fP9nanT/bG95/25xe/9wc33/ +bG95/25xe/9qbXf/bnF7/2ptd/9ucHf/b3F1/3d5f/9maG7/b3F1/2xudf9nanT/bnB3/2xvef9/gYf/ +bG95/25xe/93eoP/cHJ5/3t+h/9wc33/cHN9/25wd/91eIH/dXd9/3N2f/9wc33/cHJ5/3V4gf9zdn// +d3l//3V3ff9vcXX/bG51/3V3ff9zdXz/bG51/2psc/9wc33/foGK/3N1fP93eoP/c3Z//25wd/91d33/ +bnB3/25wd/9kZ3H/bnB3/3N2f/9sb3n/bnB3/3Byef9ucHf/bG95/25wd/9sb3n/bnB3/25wd/9sb3n/ +cHN9/2xvef9/gYf/cHJ5/3Byef9ucHf/bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/ +c3Z//3+Bh/9zdn//d3qD/31+gf9zdn//c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX// +c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/am13/25wd/9wcnn/bG51/25xe/9qbXf/bnF7/2xudf9qbXf/ +amxz/2Zpc/9sb3n/am13/25xe/9maXP/bG95/2xudf9iZW7/bG51/2dqdP9sb3n/cHJ5/3d5f/93eX// +am13/2ptd/9qbXf/am13/25xe/9sbnX/Z2p0/25xe/9wc33/cHN9/25vdf9qbHX/bG51/2ptdv9rbnj/ +Z2pz/2dqdP9kZ3H/am13/3N1fP9sb3n/Zmlz/2psc/9maXP/am13/2Zpc/9qbHP/am13/2psc/9sbnX/ +Z2p0/21vdv9tcHr/bG95/15ha/9nanH/a210/2ttdP9wcnn/dHZ9/2ptd/9sb3n/aGty/2dqdP9oa3T/ +amxz/2ptd/9wcnn/bW9z/3Z4fP9qbXf/bnB3/3Z4fP9sbnX/am13/2Rncf9qbXf/am13/3d5f/9nanH/ +bG51/2xudf9ucHf/bG95/25wd/9ucHf/dXiB/25xe/9sbnX/dXd9/25xe/9tb3P/cHJ5/25wd/9nanH/ +amxz/29xdf9ucHf/cHJ5/3N1fP9qbXf/am13/2ptd/9sb3n/YmVu/36Ahv9sb3n/Z2p0/2dqdP9qbXf/ +cHN9/2ptd/9sb3n/dXd9/3V3ff9wcnn/c3V8/3Byef9ucXv/bG95/2ptd/9ucHf/bG95/25xe/9sb3n/ +bG95/3V3ff9ucHf/bG95/25wd/93eX//bnB3/25wd/97fYP/amxz/25wd/9ucHf/bG51/25wd/9sb3n/ +bW9z/2xvef9ucXv/Z2p0/2Jlbv9nanH/am13/3Bzff9qbXf/am13/2Rncf9wc33/amxz/2xudf9ucHf/ +c3V8/2xvef9ucXv/am13/3Bzff9nanT/bG51/21vc/92eHz/Zmhu/2xudf9tb3P/bG51/29xdf9zdXz/ +f4KM/25xe/9nanT/d3qD/2xvef93eX//cHJ5/2xvef9ucHf/dXiB/3h5ff9zdn//c3Z//3Byef9zdn// +dXiB/3t9g/95fIb/cHJ5/3Bzff97fYP/fn+D/3Z4fP9wc33/e32D/3t+h/9wc33/dXiB/3Bzff9ucXv/ +dXiB/25wd/9wc33/Z2p0/25wd/9wc33/bnB3/2xvef9sb3n/bnB3/2ptd/9qbXf/bnF7/25wd/9sbnX/ +bG51/3N1fP9wcnn/f4GH/3Byef9wcnn/bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/ +Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/ +c3V8/25xe/9zdXz/bG51/2xvef9sbnX/cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/ +bnB3/2ptd/9qbXf/c3V8/25xe/9ucXv/am13/2xvef9ucHf/ZGZs/25wd/9sbnX/cHJ5/3V3ff97fYP/ +eHl9/25wd/9ucHf/bnB3/3Byef9wc33/bW9z/2psc/9zdXz/dXd9/3N1fP9ydHr/Zmlz/2ptd/9oa3X/ +b3J8/2xvef9ucHf/bnB3/3V3ff93eX//dXd9/25wd/9ucHf/bnF7/3N2f/9ucXv/bnF7/3N2f/9ucHf/ +bG95/2xvef9vcXX/dXd9/3Byef9kZmz/bW9z/25wd/9ucXv/d3l//3d6g/9wc33/dXiB/3N1fP9wcnn/ +bG95/3Byef9sbnX/cHJ5/25wd/9zdn//bnB3/25xe/95e4H/bG95/25wd/9qbXf/b3F1/29xdf94eX3/ +bnB3/25wd/9ucHf/b3F1/3Byef9sb3n/cHJ5/3d5f/9zdXz/bG51/3N1fP9ucXv/bG51/3N1fP9sbnX/ +Z2p0/2dqdP9sb3n/bnB3/25xe/9wc33/amxz/29xdf9wcnn/c3V8/2Jlbv9/gYf/bnB3/21vc/9sbnX/ +bG95/3d5f/9wc33/dXiB/3l7gf93eX//c3Z//3V4gf9ucXv/bnF7/25wd/9maXP/bnB3/25xe/9ucXv/ +cHJ5/2xvef91d33/b3F1/2xudf9ucHf/dnh8/25wd/9sbnX/dXiB/2psc/9sb3n/bG51/2dqdP9qbXf/ +am13/2psc/9sb3n/bnF7/2ptd/9qbXf/bnF7/25xe/91d33/am13/2ptd/9kZ3H/c3V8/2ptd/9qbHP/ +am13/25xe/9qbXf/am13/2psc/9sb3n/ZGdx/2xudf9nanT/cHN9/2Rncf9nanT/bG51/2dqdP9qbXf/ +bnF7/36Ahv9qbXf/Z2p0/3N2f/9sbnX/dXd9/2xvef9qbXf/bW9z/3d5f/93eX//dXd9/3Byef9ucHf/ +cHN9/3N2f/93eX//dXd9/2xvef9qbXf/dXd9/3V3ff9sb3n/b3F1/3Z4fP93eX//bnB3/3N2f/9ucXv/ +bnB3/3Bzff9sb3n/bnF7/2Zpc/9sb3n/cHN9/25wd/9wc33/bnB3/2xudf9ucHf/bnB3/3V3ff9wcnn/ +bW9z/25wd/9zdXz/c3V8/3+Bh/91d33/cHJ5/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/ +bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/ +Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/95e4H/ +c3V8/3Bzff9wc33/Z2p0/3Bzff9zdXz/cHJ5/2xudf9wcnn/am13/2Jlbv9qbXf/Z2p0/2xvef9wc33/ +c3Z//3N1fP9sbnX/bG95/21vc/9ucXv/bnF7/2dqdP9kZ3H/bnF7/3Bzff9ucXv/cnR7/2Rncf9qbHP/ +am13/3Bzff9sb3n/bnB3/2psc/9zdXz/dXd9/3N1fP9qbXf/bG51/25wd/92eHz/cHJ5/3Byef9zdXz/ +b3F1/25wd/9nanT/bW9z/25wd/9sb3n/ZGdx/2ptd/9qbXf/am13/25xe/93eX//cHJ5/3N1fP9wcnn/ +bW9z/21vc/9ucHf/bG51/2Zpc/9nanH/bG95/2dqcf9maXP/bnF7/2psc/9maXP/am13/2xudf9sbnX/ +c3V8/2psc/9nanT/a253/2xudf9wc33/a254/3Byef91eID/bG95/2xvef91d33/cHJ5/2ptd/9ucXv/ +bG95/2hrdf9qbXf/bG51/2xudf9qbXf/Z2p0/2Rncf9nanH/a254/2xvef9gY2z/gIKG/2xudf9tb3P/ +bG51/29xdf91d33/cHJ5/3V3ff91d33/c3Z//3Bzff91d33/cHN9/3Bzff9wcnn/am13/25wd/9zdn// +cHN9/3V4gf93eoP/d3l//2ptd/9ucHf/bnB3/3Z4fP9qbHP/bW9z/3Z4fP9sbnX/bnB3/3Byef9qbHP/ +bnB3/2ptd/9sbnX/bnB3/3N1fP9ucHf/bG51/3N1fP9wcnn/dnh8/3Byef9ucHf/bG51/3N1fP9ucHf/ +bnB3/25xe/9zdn//c3Z//3Bzff9wc33/d3qD/25xe/91eIH/cHN9/3l8hv9zdXz/dXd9/3l7gf92eHz/ +eXuB/3t9g/+FiJH/d3qD/3Bzff9/gYf/dXiB/3t+h/91eIH/d3qD/3V4gf9+gYr/e32D/3d6g/9zdn// +c3V8/3N2f/9zdn//dnh8/3V4gf9sb3n/bG95/3Z4fP91d33/bG51/21vc/9wcnn/d3l//25xe/91d33/ +cHJ5/25wd/9ucXv/bnB3/3Byef9nanH/cHN9/3V4gf9wcnn/bnF7/25xe/9ucHf/cHJ5/25xe/91eIH/ +cHN9/3Byef9ucXv/c3Z//3N2f/9+gIb/dnh8/3Bzff9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/ +eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/ +dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/ +c3V8/2Zobv9sb3n/bG51/2Zpc/9qbXf/am13/2ptd/9nanT/am13/2xvef9kZ3H/bG95/2dqdP9ucXv/ +bnF7/3V3ff94eX3/bG95/3N2f/9sb3n/cHN9/3Bzff9ucHf/Z2p0/3V3ff91d33/dXd9/3h5ff9sbnX/ +bnB3/2xvef91d33/c3Z//2xvef9qbXf/c3Z//3l7gf91eIH/bnB3/3Byef9wc33/d3l//3Byef9wcnn/ +cHJ5/21vc/9sbnX/amxz/2xudf9sbnX/bG51/2Zobv9wcnn/bG51/25xe/9ucXv/c3V8/3J0e/9sb3n/ +bnB3/2xudf9ucHT/bG51/2Zpc/9vcXj/bG51/21vdv9tb3b/bW93/3R2ff9rbnf/aGt1/2dqdP9sbnX/ +am13/3Fzev9qbHP/a253/2xveP9qbHP/bG95/2xveP9wcnj/dHZ7/21vdf9ydXz/dXd9/3J0ff9sb3n/ +b3J8/3N1fP9vcXj/b3F4/21vc/9qbXf/bG95/3Byef9ucHf/b3F1/29xeP9zdXz/Z2px/4GDiv9sb3n/ +bnF7/3Byef9wcnn/dXiB/3N2f/93eoP/e32D/3V4gf9wc33/c3Z//3V3ff9ucHf/b3F1/2psc/9ucHf/ +bnF7/25wd/9zdn//c3V8/3Z4fP9qbHP/bG51/21vc/92eHz/bG51/29xdf92eHz/amxz/2xudf9wc33/ +Zmlz/3Byef9qbXf/bnB3/25wd/92eHz/b3F1/25wd/9zdXz/c3V8/3V3ff9wc33/am13/2dqcf9wcnn/ +bW9z/29xdf9sbnX/cHJ5/2xvef9wcnn/bG51/2xvef9maXP/cHJ5/25wd/94eX3/Zmhu/2xudf9sb3n/ +Z2p0/2ptd/9sb3n/foCG/25xe/9sbnX/eXuB/2xvef93eX//bG51/25wd/9tb3P/dXd9/3N1fP91d33/ +bG51/2psc/9zdXz/c3V8/3N1fP9sb3n/amxz/2ptd/92eHz/c3V8/29xdf9ucHf/cHN9/3d6g/9ucXv/ +d3l//3Bzff9zdXz/cHN9/3Byef9wc33/am13/3Bzff95e4H/dXd9/3V4gf9wc33/cHN9/3V3ff91eIH/ +eXuB/3N1fP9zdXz/cHN9/3d6g/95e4H/g4WM/3l8hv91eIH/d3qD/3Bzff9zdn//c3V8/3N2f/91eIH/ +bnB3/3d5f/9sb3n/bnB3/25wd/93eX//bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/ +dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/ +bnF7/3V4gf9ucHf/c3Z//3Bzff9qbXf/c3V8/3Bzff91eIH/bG95/2xvef9zdn//bG95/2xvef9qbXf/ +cHN9/3Byef91eIH/d3l//2xvef9zdn//bnB3/3N2f/9wc33/cHJ5/2ptd/9zdXz/cHJ5/3V3ff92eHz/ +Z2p0/2ptd/9qbXf/cHN9/2ptd/9sbnX/amxz/3Byef91d33/c3V8/2dqdP9tb3P/bnF7/3V4gf9wc33/ +cHN9/3d6g/9zdXz/bnF7/25xe/9xc3r/dXiA/3N1fP9tcHr/c3Z//3Z4fv94e4T/enyC/31/hv94eoD/ +dHeA/3Bzff9ucXv/cHN6/29xef9tcHn/cnR7/25wd/9vcXX/aWx1/2ttdv9wcnn/b3F3/21vdv9sbnb/ +bW92/21wdv9xc3n/bG50/21vdP9wcnj/bW91/25xef9xdHz/cXR9/3Fzev9vcXj/b3F4/3Z4gP9wc3v/ +bG95/29yfP9ydHz/cXN7/21wev9ucHf/bnF7/3Byef9wc33/bnB3/25wd/9xc3r/cHJ5/2Zobv+Agob/ +bG51/2xudf9sbnX/bG51/3N1fP9wcnn/eHl9/3V3ff91d33/c3V8/3Bzff9zdXz/amxz/2psc/9nanT/ +Z2px/2xudf9sbnX/cHN9/2xudf9wc33/Z2p0/2psc/9sbnX/dXd9/2ptd/9qbHP/c3V8/2ptd/9qbXf/ +cHN9/2dqdP9ucXv/bnB3/3N1fP9ucHf/dXd9/25wd/9sb3n/c3Z//3N2f/93eX//dXiB/25xe/9sb3n/ +c3Z//25wd/9wcnn/c3V8/3N2f/9ucXv/c3Z//2xvef9zdXz/Z2px/3Byef9sbnX/cHN9/2Rncf9qbHP/ +bnF7/2dqcf9qbXf/am13/3V4gf9maXP/ZGdx/3N1fP9nanT/cHJ5/2psc/9nanT/Z2px/3V3ff9zdXz/ +bnF7/2ptd/9qbXf/cHN9/3N1fP9zdXz/c3V8/25wd/9ucHf/d3qD/3N2f/9ucHf/bG95/3Bzff95e4H/ +bG95/3V3ff9sb3n/bnB3/25xe/9sb3n/bnB3/2dqcf9vcXX/c3V8/2ptd/9ucHf/bG51/2ptd/9nanT/ +bG51/3N1fP9sbnX/bW9z/2xudf9zdXz/dXd9/31+gf9zdXz/bG95/2xvef9sbnX/bG51/2ptd/9ucHf/ +c3V8/2xvef91d33/bnB3/3Byef9sb3n/dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/ +bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/ +c3V8/25wd/91d33/am13/3Bzff9sbnX/amxz/25wd/9sb3n/bnF7/2ptd/9qbXf/dXd9/2xudf9sbnX/ +Zmlz/2xvef9sb3n/dXd9/3N1fP9qbXf/bnF7/21vc/9zdXz/cHJ5/25xe/9sb3n/c3Z//3Bzff93eX// +eHqA/2hrdf9ucHf/a254/3N2f/9ucHf/bnB3/25wd/9wcnn/eXuB/3V3ff9sbnX/bG51/21vdv91d3z/ +am13/2psc/9ucXv/amxz/2dqcf9nanT/Z2pz/2dqc/9maHL/YmRt/2Zobv9pbHb/bG53/25wef9wcnr/ +cHJ5/2tueP9tb3f/bG51/3Fzev9sb3f/bG95/21wev9vcnr/bG53/2xudf9rbnX/b3J6/25wef9ucXn/ +am13/2tueP9ydHv/cHJ6/25wd/9ucXn/dHZ9/29xdv9wcnr/dHZ9/3BzeP9ucHf/bnB4/29xef93eYD/ +bnF2/25wd/9xc3v/cXN4/3N1e/9xc3r/cXN6/3N2f/9wc33/d3qD/3Byef9wcnn/cXR9/3Bzff9nanT/ +f4KM/3Bzff9ucHf/b3F1/21vc/9zdXz/bnB3/3V3ff93eX//cHN9/25xe/9wc33/dXd9/29xdf9ucHf/ +bnB3/25wd/9vcXX/cHN9/3N2f/9ucXv/dXiB/2xvef9ucXv/bnF7/3l7gf91d33/d3l//35/g/94eX3/ +eXuB/36Ahv96e3//f4GH/3l8hv9+gYr/eXyG/4CChv97fYP/dXd9/3l8hv99foH/fn+D/35/g/93eX// +cHN9/3t9g/9wc33/c3V8/3Byef9wc33/b3F1/3Z4fP9qbXf/bG95/2Jlbv9qbXf/am13/2ptd/9gY2z/ +Zmlz/2xvef9kZ3H/Zmlz/2xvef93eoP/am13/2Rncf9wc33/ZGdx/2ptd/9maG7/Z2px/2Zobv9zdXz/ +d3qD/3Bzff9sb3n/amxz/3Byef9zdXz/dnh8/3N1fP9sbnX/bG51/3h5ff9wcnn/bnB3/25wd/9zdXz/ +d3l//25wd/91d33/bnB3/21vc/9wcnn/bnB3/2xvef9maXP/bnB3/3Byef9sbnX/bnB3/25wd/9wcnn/ +amxz/25wd/92eHz/bnB3/29xdf9wcnn/cHJ5/3Z4fP9+gIb/c3V8/3Byef9sb3n/bG51/2ptd/9maXP/ +am13/2xvef9ucXv/cHJ5/2dqcf9nanT/Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/ +Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/ +Zmhu/2Zpc/9kZ3H/cHJ5/2Zpc/9qbXf/am13/2Rncf9maXP/Z2p0/2xvef9maXP/bG51/3Bzff9maXP/ +bW9z/2ptd/9sb3n/am13/3Bzff9ucXv/amxz/25xe/9sbnX/cHJ5/2xvef9qbXf/ZGdx/2ptd/9qbXf/ +c3V8/3F0e/9laHH/bG51/2dqc/9tcHr/amxz/2ptd/9nanT/cHJ5/3l7gf91d33/amxz/2xudf9vcXj/ +d3h8/3Byef9vcXX/dXd9/21vc/9sbnX/bG95/29yfP9wc3v/bW92/2ptd/9sb3j/c3V7/3V4f/90dnr/ +c3V8/3Byev9xc3v/c3Z9/29xeP91d4D/bnB4/21wev91d37/dnh//3Fze/9tb3b/bW93/3J0e/9zdn3/ +cnV+/25xe/9vcnn/cnV//25xe/9wcnr/cHN8/3Z4gf9wcnn/cHJ6/3d6hP9zdXz/cXN9/3Bzff9zdXz/ +fYCJ/25wd/9sb3n/bG95/29xeP90dnv/b3J7/25wd/9ucHf/bW92/3N1fP9ucHf/bnB3/29yef9wcnn/ +Z2px/35/g/9ucHf/bG51/21vc/9qbXf/bnF7/2xvef93eX//d3l//3N1fP9ucXv/bnF7/25xe/9nanT/ +amxz/2Zpc/9nanT/ZGdx/2dqdP9nanT/ZGdx/3Byef9kZ3H/bG51/2xudf9sb3n/Zmlz/2psc/9wc33/ +amxz/2xudf9zdXz/amxz/2xvef9qbXf/bnF7/2ptd/9sb3n/am13/2xudf9ucXv/cHN9/3Bzff9wc33/ +am13/2ptd/91d33/bnB3/2xudf9sbnX/bnB3/2xudf92eHz/bG51/25wd/9kZ3H/bG95/3N1fP9sb3n/ +ZGZs/2ptd/9ucXv/bG51/2ptd/9zdXz/fn+D/2xvef9sb3n/foCG/25xe/91eIH/bnF7/25wd/9vcXX/ +dXd9/3d5f/9wc33/c3Z//25wd/9zdn//bnF7/3V3ff9ucXv/bG51/29xdf94eX3/c3Z//25wd/9ucXv/ +c3Z//3l7gf9wcnn/d3l//25xe/9wcnn/cHN9/3N2f/9zdXz/am13/2xvef91d33/bG51/3N1fP9sb3n/ +bG51/2dqcf9sb3n/dXd9/2psc/9qbXf/bG95/2xvef9wcnn/d3qD/3V3ff91d33/am13/3Byef9wcnn/ +Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/ +am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/ +cHJ5/29xdf9wc33/bnF7/3l8hv9sb3n/cHN9/3N2f/9sb3n/bG95/3N2f/9wc33/bG95/3Bzff93eX// +am13/25wd/9vcXX/cHJ5/25wd/9zdXz/c3V8/2xudf9sb3n/bnB3/2xvef9sbnX/amxz/1xfaP9nanH/ +Z2px/3Bzff9ucXv/a253/2xud/9tb3j/cXR7/21vc/9ucHf/amxz/25xe/93eX//c3V8/2hqdP9rbnf/ +bXB5/3R2ev9sbnX/bW9z/25wd/9qbHP/cHJ5/29xef9zdX3/cHJ7/21weP9sb3n/bnB3/3N2f/94eoD/ +b3J7/3N2f/9zdn//eHuF/3l7gf92eH7/fX+F/3R2ff91eH7/enyC/3p8gv94eoH/d3h9/31/hv97fYP/ +e32D/3x9gf94eoD/dnh8/31/hf94eX7/d3l//3d5f/97fYP/cHN9/3V3ff97fof/cHN9/2xvef9wc33/ +cHN9/3t+h/9zdXz/c3Z//3d6g/9wc33/d3mA/3J1f/9ucHb/bXB5/21vdv9ucHf/bnB3/25wd/9vcnv/ +cHJ5/2dqcf9+gIb/bnF7/3N1fP9vcXX/bnF7/3d6g/9wc33/e36H/3l8hv9zdn//cHN9/25xe/91d33/ +bnB3/25xe/9sb3n/bnF7/2xvef9ucXv/cHN9/3Byef93eX//bG51/2xudf9sbnX/bG95/2dqdP9qbHP/ +bnF7/2psc/9nanH/am13/2Zpc/9nanT/Z2px/2ptd/9sbnX/bnF7/2xudf9tb3P/cHJ5/3V3ff91d33/ +dXd9/2xvef9sb3n/dXiB/25wd/9wc33/c3V8/3V4gf9zdn//d3qD/3N2f/95fIb/cHN9/3l8hv97fYP/ +eXuB/2dqdP9zdn//eXyG/3Bzff91eIH/eXuB/3+Bh/9ucXv/bnB3/35/g/9tb3P/dXd9/3Byef9wcnn/ +b3F1/3d5f/93eX//bnF7/3Bzff9sb3n/cHJ5/25xe/93eX//c3Z//3Byef9ucHf/dXd9/3N1fP9sb3n/ +bG95/3N2f/93eX//bnB3/3V3ff9vcXX/bnF7/3Bzff9ucXv/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/ +bG95/2xvef9qbHP/bG95/3V3ff9vcXX/bG51/2xvef9qbXf/cHJ5/3l7gf91d33/bnF7/25wd/9ucHf/ +cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn//bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/ +am13/2xudf9ucHf/bG51/3V3ff99foH/Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/ +am13/25xe/9ucHf/c3V8/3V3ff95e4H/bnB3/3V3ff92eHz/amxz/2xudf92eHz/bnF7/2xudf9ucHf/ +c3V8/2dqdP9qbXf/bG51/3N1fP9ucHf/c3V8/3V3ff9ucHf/cHJ5/3Byef9zdXz/bW9z/21vc/9kZmz/ +bG51/2xvef91d33/bG50/3Byef9vcXb/cXN5/3Fzef9qbXf/bG95/2Zpc/9sb3n/d3l//3N1fP9rbXT/ +bXB4/29yev9zdXz/bnB3/25wd/9zdn//am13/25xe/9ucHr/cHN7/2xudv9oa3X/a254/2xudf9wc33/ +dXd9/2xudf9ucHf/bnB3/3Byef91d33/bnB3/3d5f/9ucHf/bG95/3N2f/92eHz/cHJ5/25wd/9wcnn/ +cHJ5/3Byef9wcnn/bnB3/25wd/9sb3n/bnB3/25wd/91eIH/c3Z//3Byef9ucHf/d3l//29xdf9nanH/ +bG51/21vc/93eoP/bG51/2ptd/9ucXv/amxz/3N1fP9qbXb/aWt0/29xeP9sb3j/bG51/2xvef9ucHf/ +bG95/2xvef9nanH/fn+D/25wd/9ucHf/am13/2xudf91d33/bG51/3l7gf91eIH/cHN9/3N2f/9wc33/ +d3l//2xvef9wc33/bnB3/2xvef9sb3n/bnF7/3Bzff9ucXv/d3l//2ptd/9ucHf/bG95/3Byef9vcXX/ +b3F1/3N1fP9vcXX/b3F1/3Bzff9nanT/bG51/2ptd/9ucXv/bG51/2xvef9sb3n/bG51/2xudf9sb3n/ +dXd9/3Bzff9qbXf/am13/3Byef9qbXf/am13/2Zpc/9ucXv/bG95/2xvef9nanT/bnF7/2Rncf9sb3n/ +bnF7/25xe/9gY2z/Z2p0/2xvef9qbXf/am13/3Bzff93eoP/am13/2ptd/97fYP/bG51/2xvef9ucXv/ +bG95/2psc/91d33/dXd9/2ptd/9zdXz/bnB3/3Bzff9ucHf/dnh8/25xe/9wcnn/cHJ5/3d6g/9ucXv/ +cHN9/2xvef9wc33/AA0BAAADAAAAAQEAAAABAQADAAAAAQEAAAABAgADAAAABAAEAKoBAwADAAAAAQAB +AAABBgADAAAAAQACAAABEQAEAAAAAgAEALIBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQCA +AAABFwAEAAAAAgAEALoBHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAEAMIAAAAAAAgACAAI +AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + + + + + + 3 + MCAwAA + + + scrollViewTexturedBackgroundColor + + + 0 + 10 + + 1 + 30 + + + Helvetica + 30 + 16 + + + + {320, 110} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 292 + + + + -2147483356 + {{0, 9}, {320, 67}} + + + + _NS:9 + + 3 + MQA + + + -1 + NO + IBCocoaTouchFramework + + + + 292 + {160, 77} + + + + _NS:9 + NO + + Accept + + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + decrocher-over.png + + + NSImage + decrocher-actif.png + + + + + + + 292 + {{160, 0}, {160, 77}} + + + _NS:9 + NO + + Decline + + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + NSImage + refuser-over.png + + + NSImage + refuser-actif.png + + + + + + {{0, 383}, {320, 77}} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NSAwAA + + NO + IBCocoaTouchFramework + + + {{0, 20}, {320, 460}} + + + + + 3 + MQA + + + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + addressLabel + + + + 14 + + + + onDeclineClick: + + + 7 + + 16 + + + + onAcceptClick: + + + 7 + + 15 + + + + + + 0 + + + + + + 1 + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + tabBar + + + 7 + + + accept + + + 6 + + + decline + + + 5 + + + mask + + + 8 + + + + + + + + + + 9 + + + addressLabel + + + 12 + + + headerBackground + + + 10 + + + otherBackground + + + + + IncomingCallViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 16 + + + + + IncomingCallViewController + UIViewController + + id + id + + + + onAcceptClick: + id + + + onDeclineClick: + id + + + + addressLabel + UILabel + + + addressLabel + + addressLabel + UILabel + + + + IBProjectSource + ./Classes/IncomingCallViewController.h + + + + + 0 + IBCocoaTouchFramework + YES + 3 + + {640, 125} + {640, 135} + {320, 154} + {320, 154} + {320, 154} + {320, 154} + + 1181 + + diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index ff048546f..3b59c41b2 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -78,7 +78,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); const MSList *elem=codecs; for(;elem!=NULL;elem=elem->next){ PayloadType *pt=(PayloadType*)elem->data; - NSString *pref=[LinphoneManager getPrefForCodec:pt->mime_type withRate:pt->clock_rate]; + NSString *pref=[LinphoneManager getPreferenceForCodec:pt->mime_type withRate:pt->clock_rate]; if (pref){ [self setBool: linphone_core_payload_type_enabled(lc,pt) forKey: pref]; }else{ @@ -173,7 +173,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); if (linphone_core_tunnel_available()){ /*FIXME: enhance linphonecore API to handle tunnel more easily in applications */ - LinphoneTunnel *tun=linphone_core_get_tunnel(lc); + //LinphoneTunnel *tun=linphone_core_get_tunnel(lc); //[self setString: linphone_tunnel_get_servers(tun) forKey:tunnel_address_preference]; //[self setInteger: blabla forKey:tunnel_port_preference]; //[self setString: forKey:@"tunnel_enabled_preference"]; @@ -350,12 +350,12 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); for (elem=linphone_core_get_audio_codecs(lc);elem!=NULL;elem=elem->next){ pt=(PayloadType*)elem->data; - NSString *pref=[LinphoneManager getPrefForCodec:pt->mime_type withRate:pt->clock_rate]; + NSString *pref=[LinphoneManager getPreferenceForCodec:pt->mime_type withRate:pt->clock_rate]; linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]); } for (elem=linphone_core_get_video_codecs(lc);elem!=NULL;elem=elem->next){ pt=(PayloadType*)elem->data; - NSString *pref=[LinphoneManager getPrefForCodec:pt->mime_type withRate:pt->clock_rate]; + NSString *pref=[LinphoneManager getPreferenceForCodec:pt->mime_type withRate:pt->clock_rate]; linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]); } diff --git a/Classes/LinphoneUI/LinphoneManager.h b/Classes/LinphoneManager.h similarity index 90% rename from Classes/LinphoneUI/LinphoneManager.h rename to Classes/LinphoneManager.h index aed04c825..270a7be0e 100644 --- a/Classes/LinphoneUI/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -35,6 +35,7 @@ typedef enum _PhoneView { PhoneView_Chat, PhoneView_Contacts, PhoneView_InCall, + PhoneView_IncomingCall, PhoneView_END } PhoneView; @@ -43,6 +44,7 @@ typedef enum _Connectivity { wwan ,none } Connectivity; + @class FastAddressBook; /* Application specific call context */ @@ -62,14 +64,7 @@ typedef struct _LinphoneCallAppData { int transferButtonIndex; } LinphoneCallAppData; -@interface LinphoneCallWrapper : NSObject { - @public - LinphoneCall* call; -} -- (id) initWithCall: (LinphoneCall*) call; -@end - -@interface LinphoneManager : NSObject { +@interface LinphoneManager : NSObject { @protected SCNetworkReachabilityRef proxyReachability; @private @@ -96,10 +91,11 @@ typedef struct _LinphoneCallAppData { + (void)set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason; + (void)set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason; + (void)logUIElementPressed:(const char*) name; -+ (void)abstractCall:(id) object dict:(NSDictionary *) dict; - (void)registerLogView:(id) view; -+ (NSString *)getPrefForCodec: (const char*) name withRate: (int) rate; ++ (NSString *)getPreferenceForCodec: (const char*) name withRate: (int) rate; ++ (BOOL)codecIsSupported:(NSString *) prefName; + - (void)startLibLinphone; - (BOOL)isNotIphone3G; - (void)destroyLibLinphone; diff --git a/Classes/LinphoneUI/LinphoneManager.m b/Classes/LinphoneManager.m similarity index 86% rename from Classes/LinphoneUI/LinphoneManager.m rename to Classes/LinphoneManager.m index 35c32a106..8cde595e9 100644 --- a/Classes/LinphoneUI/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -54,17 +54,6 @@ extern void libmssilk_init(); extern void libmsbcg729_init(); #endif -@implementation LinphoneCallWrapper - -- (id) initWithCall: (LinphoneCall*) acall { - if((self = [super init]) != nil) { - call = acall; - } - return self; -} - -@end - @implementation LinphoneManager PhoneView currentView = -1; @@ -76,9 +65,9 @@ PhoneView currentView = -1; @synthesize settingsStore; struct codec_name_pref_table{ -const char *name; -int rate; -NSString *prefname; + const char *name; + int rate; + NSString *prefname; }; struct codec_name_pref_table codec_pref_table[]={ @@ -98,7 +87,7 @@ struct codec_name_pref_table codec_pref_table[]={ { NULL,0,Nil } }; -+ (NSString *) getPrefForCodec: (const char*) name withRate: (int) rate{ ++ (NSString *)getPreferenceForCodec: (const char*) name withRate: (int) rate{ int i; for(i=0;codec_pref_table[i].name!=NULL;++i){ if (strcasecmp(codec_pref_table[i].name,name)==0 && codec_pref_table[i].rate==rate) @@ -107,6 +96,15 @@ struct codec_name_pref_table codec_pref_table[]={ return Nil; } ++ (BOOL)codecIsSupported:(NSString *) prefName{ + int i; + for(i=0;codec_pref_table[i].name!=NULL;++i){ + if ([prefName compare:codec_pref_table[i].prefname]==0){ + return linphone_core_find_payload_type([LinphoneManager getLc],codec_pref_table[i].name, codec_pref_table[i].rate)!=NULL; + } + } + return TRUE; +} - (id)init { assert (!theLinphoneManager); @@ -221,7 +219,7 @@ struct codec_name_pref_table codec_pref_table[]={ return; } --(void) onCall:(LinphoneCall*) call StateChanged: (LinphoneCallState) new_state withMessage: (const char *) message { +- (void)onCall:(LinphoneCall*) call StateChanged: (LinphoneCallState) new_state withMessage: (const char *) message { // Handling wrapper if(new_state == LinphoneCallReleased) { if(linphone_call_get_user_pointer(call) != NULL) { @@ -242,7 +240,7 @@ struct codec_name_pref_table codec_pref_table[]={ // Post event NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[LinphoneCallWrapper alloc] initWithCall: call] autorelease], @"call", + [NSValue valueWithPointer:call], @"call", [NSNumber numberWithInt:new_state], @"state", [NSString stringWithUTF8String:message], @"message", nil] autorelease]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self userInfo:dict]; @@ -328,38 +326,12 @@ static void linphone_iphone_transfer_state_changed(LinphoneCore* lc, LinphoneCal // Post event NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: [NSNumber numberWithInt:state], @"state", - [NSString stringWithFormat:@"%c", message], @"message", + [NSValue valueWithPointer:cfg], @"cfg", + [NSString stringWithUTF8String:message], @"message", nil] autorelease]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneRegistrationUpdate" object:self userInfo:dict]; - - // Show error - if (state == LinphoneRegistrationFailed) { - NSString* lErrorMessage=nil; - if (linphone_proxy_config_get_error(cfg) == LinphoneReasonBadCredentials) { - lErrorMessage = NSLocalizedString(@"Bad credentials, check your account settings",nil); - } else if (linphone_proxy_config_get_error(cfg) == LinphoneReasonNoResponse) { - lErrorMessage = NSLocalizedString(@"SIP server unreachable",nil); - } - - if (lErrorMessage != nil - && linphone_proxy_config_get_error(cfg) != LinphoneReasonNoResponse) { //do not report network connection issue on registration - //default behavior if no registration delegates - UIApplicationState s = [UIApplication sharedApplication].applicationState; - - // do not stack error message when going to backgroud - if (s != UIApplicationStateBackground) { - UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Registration failure",nil) - message:lErrorMessage - delegate:nil - cancelButtonTitle:NSLocalizedString(@"Continue",nil) - otherButtonTitles:nil ,nil]; - [error show]; - [error release]; - } - } - - } } + static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyConfig* cfg, LinphoneRegistrationState state,const char* message) { [(LinphoneManager*)linphone_core_get_user_data(lc) onRegister:lc cfg:cfg state:state message:message]; } @@ -502,6 +474,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach [[NSUserDefaults standardUserDefaults] setBool:true forKey:@"check_config_disable_preference"]; } } + - (void)destroyLibLinphone { [mIterateTimer invalidate]; AVAudioSession *audioSession = [AVAudioSession sharedInstance]; @@ -762,6 +735,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach linphone_core_start_dtmf_stream(theLinphoneCore); } + - (void)registerLogView:(id) view { mLogView = view; } @@ -778,6 +752,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach ms_message("Sound interruption ended!"); //let the user resume the call manually. } + + (BOOL)runningOnIpad { #ifdef UI_USER_INTERFACE_IDIOM return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); @@ -803,80 +778,4 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach ms_message("UI - '%s' pressed", name); } -+ (void)abstractCall:(id) object dict:(NSDictionary *) dict { - for (NSString* identifier in dict) { - if([identifier characterAtIndex:([identifier length] -1)] == ':') { - NSArray *arguments = [dict objectForKey:identifier]; - SEL selector = NSSelectorFromString(identifier); - NSMethodSignature *signature = [object methodSignatureForSelector:selector]; - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; - [invocation setTarget:object]; - [invocation setSelector:selector]; - for(int i=0; i<[arguments count]; i++) - { - id arg = [arguments objectAtIndex:i]; - [invocation setArgument:&arg atIndex:i+2]; // The first two arguments are the hidden arguments self and _cmd - } - [invocation invoke]; // Invoke the selector - } else { - NSDictionary *arguments = [dict objectForKey:identifier]; - id new_object = [object performSelector:NSSelectorFromString(identifier)]; - [LinphoneManager abstractCall:new_object dict:arguments]; - } - } -} - -- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender { - ms_message("Synchronize settings"); - [[self settingsStore] synchronize]; -} - -- (BOOL)codecSupported:(NSString *) prefName{ - int i; - for(i=0;codec_pref_table[i].name!=NULL;++i){ - if ([prefName compare:codec_pref_table[i].prefname]==0){ - return linphone_core_find_payload_type(theLinphoneCore,codec_pref_table[i].name, codec_pref_table[i].rate)!=NULL; - } - } - return TRUE; -} - -- (NSDictionary*)filterPreferenceSpecifier:(NSDictionary *)specifier { - if (!theLinphoneCore) { - // LinphoneCore not ready: do not filter - return specifier; - } - NSString* identifier = [specifier objectForKey:@"Identifier"]; - if (identifier == nil) { - identifier = [specifier objectForKey:@"Key"]; - } - if (!identifier) { - // child pane maybe - NSString* title = [specifier objectForKey:@"Title"]; - if ([title isEqualToString:@"Video"]) { - if (!linphone_core_video_supported(theLinphoneCore)) - return nil; - } - return specifier; - } - // NSLog(@"Specifier received: %@", identifier); - if ([identifier isEqualToString:@"silk_24k_preference"]) { - if (![self isNotIphone3G]) - return nil; - } - if ([identifier isEqualToString:@"backgroundmode_preference"]) { - UIDevice* device = [UIDevice currentDevice]; - if ([device respondsToSelector:@selector(isMultitaskingSupported)]) { - if ([device isMultitaskingSupported]) { - return specifier; - } - } - // hide setting if bg mode not supported - return nil; - } - if (![self codecSupported:identifier]) - return Nil; - return specifier; -} - @end diff --git a/Classes/LinphoneUI/UIChatCell.h b/Classes/LinphoneUI/UIChatCell.h new file mode 100644 index 000000000..a0581bfa0 --- /dev/null +++ b/Classes/LinphoneUI/UIChatCell.h @@ -0,0 +1,33 @@ +/* UIChatCell.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface UIChatCell : UITableViewCell { + UILabel *displayNameLabel; + UILabel *chatContentLabel; +} + +@property (nonatomic, retain) IBOutlet UILabel* displayNameLabel; +@property (nonatomic, retain) IBOutlet UILabel* chatContentLabel; + +- (IBAction)onDetails: (id) event; + +- (void)update; +@end diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m new file mode 100644 index 000000000..414584644 --- /dev/null +++ b/Classes/LinphoneUI/UIChatCell.m @@ -0,0 +1,75 @@ +/* UIChatCell.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIChatCell.h" + +@implementation UIChatCell + +@synthesize displayNameLabel; +@synthesize chatContentLabel; + +- (id)init { + if ((self = [super init]) != nil) { + NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIChatCell" + owner:self + options:nil]; + + if ([arrayOfViews count] >= 1) { + [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; + } + } + return self; +} + +- (IBAction)onDetails: (id) event { + +} + +- (void)update{ + // + // Adapt size + // + CGRect firstNameFrame = [displayNameLabel frame]; + CGRect lastNameFrame = [chatContentLabel frame]; + + lastNameFrame.origin.x -= firstNameFrame.size.width; + + // Compute firstName size + CGSize contraints; + contraints.height = [displayNameLabel frame].size.height; + contraints.width = ([chatContentLabel frame].size.width + [chatContentLabel frame].origin.x) - [displayNameLabel frame].origin.x; + CGSize firstNameSize = [[displayNameLabel text] sizeWithFont:[displayNameLabel font] constrainedToSize: contraints]; + firstNameFrame.size.width = firstNameSize.width; + + // Compute lastName size & position + lastNameFrame.origin.x += firstNameFrame.size.width; + lastNameFrame.size.width = (contraints.width + [displayNameLabel frame].origin.x) - lastNameFrame.origin.x; + + [displayNameLabel setFrame: firstNameFrame]; + [chatContentLabel setFrame: lastNameFrame]; +} + +- (void)dealloc { + [displayNameLabel release]; + [chatContentLabel release]; + + [super dealloc]; +} + +@end diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib new file mode 100644 index 000000000..38bed9633 --- /dev/null +++ b/Classes/LinphoneUI/UIChatCell.xib @@ -0,0 +1,337 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUIImageView + IBUIView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 292 + {{10, 8}, {27, 27}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + + + 274 + {{45, 0}, {60, 44}} + + + + _NS:328 + NO + YES + 7 + 2 + NO + + Firstname + + IBCocoaTouchFramework + John + + 1 + MCAwIDAAA + + + 1 + 10 + + 1 + 25 + + + Helvetica + 25 + 16 + + NO + + + + 274 + {{110, 0}, {170, 44}} + + + + _NS:328 + NO + YES + 7 + 2 + NO + + Firstname + + IBCocoaTouchFramework + This is a message + + + 1 + 10 + + 1 + 12 + + + Helvetica + 12 + 16 + + NO + + + + 292 + {{276, 0}, {44, 44}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + 11 + 11 + 11 + 11 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + NSImage + bouton-detail-contact-over.png + + + NSImage + bouton-detail-contact-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + {320, 44} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + + + + displayNameLabel + + + + 23 + + + + chatContentLabel + + + + 24 + + + + onDetails: + + + 7 + + 22 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 17 + + + + + + + + + + + 18 + + + detailsButton + + + 19 + + + imageView + + + 20 + + + displayNameLabel + + + 21 + + + chatContentLabel + + + + + UIChatCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 24 + + + + + UIChatCell + UITableViewCell + + onDetails: + id + + + onDetails: + + onDetails: + id + + + + UILabel + UILabel + + + + chatContentLabel + UILabel + + + displayNameLabel + UILabel + + + + IBProjectSource + ./Classes/UIChatCell.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {45, 45} + {45, 45} + + 1181 + + diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h new file mode 100644 index 000000000..71d7d97d3 --- /dev/null +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -0,0 +1,26 @@ +/* UICompositeViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface UICompositeViewController : UIViewController { + +} + +@end diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m new file mode 100644 index 000000000..9472919b8 --- /dev/null +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -0,0 +1,24 @@ +/* UICompositeViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UICompositeViewController.h" + +@implementation UICompositeViewController + +@end diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib new file mode 100644 index 000000000..4546f97b3 --- /dev/null +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -0,0 +1,189 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBProxyObject + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 314 + {{0, 23}, {320, 380}} + + + _NS:9 + YES + IBCocoaTouchFramework + + + + 274 + {320, 23} + + + + _NS:9 + + 3 + MQA + + YES + IBCocoaTouchFramework + + + + 280 + {{0, 400}, {320, 60}} + + + _NS:9 + + 3 + MCAwAA + + YES + IBCocoaTouchFramework + + + {{0, 20}, {320, 460}} + + + + 3 + MQA + + 2 + + + + IBCocoaTouchFramework + + + + + + + view + + + + 3 + + + + + + 0 + + + + + + 1 + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 15 + + + content + + + 14 + + + stateBar + + + 16 + + + tabBar + + + + + UICompositeViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 16 + + + + + UICompositeViewController + UIViewController + + IBProjectSource + ./Classes/UICompositeViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + 1181 + + diff --git a/Classes/LinphoneUI/UIContactCell.h b/Classes/LinphoneUI/UIContactCell.h index f9e03e81d..5b2217399 100644 --- a/Classes/LinphoneUI/UIContactCell.h +++ b/Classes/LinphoneUI/UIContactCell.h @@ -21,12 +21,13 @@ #import @interface UIContactCell : UITableViewCell { - UILabel *firstName; - UILabel *lastName; + UILabel *firstNameLabel; + UILabel *lastNameLabel; } -@property (nonatomic, retain) IBOutlet UILabel* firstName; -@property (nonatomic, retain) IBOutlet UILabel* lastName; +@property (nonatomic, retain) IBOutlet UILabel* firstNameLabel; +@property (nonatomic, retain) IBOutlet UILabel* lastNameLabel; - (void)update:(ABRecordRef) record; + @end diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index 2f1443e1b..92dbee030 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -21,8 +21,8 @@ @implementation UIContactCell -@synthesize firstName; -@synthesize lastName; +@synthesize firstNameLabel; +@synthesize lastNameLabel; - (id)init { if ((self = [super init]) != nil) { @@ -45,21 +45,21 @@ [self setHighlighted:false animated:true]; } -- (void) update:(ABRecordRef) record { +- (void)update:(ABRecordRef) record { CFStringRef lFirstName = ABRecordCopyValue(record, kABPersonFirstNameProperty); CFStringRef lLocalizedFirstName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lFirstName):nil; CFStringRef lLastName = ABRecordCopyValue(record, kABPersonLastNameProperty); CFStringRef lLocalizedLastName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lLastName):nil; if(lLocalizedFirstName != nil) - [firstName setText: [(NSString *)lLocalizedFirstName retain]]; + [firstNameLabel setText: [(NSString *)lLocalizedFirstName retain]]; else - [firstName setText: @""]; + [firstNameLabel setText: @""]; if(lLocalizedLastName != nil) - [lastName setText: [(NSString *)lLocalizedLastName retain]]; + [lastNameLabel setText: [(NSString *)lLocalizedLastName retain]]; else - [lastName setText: @""]; + [lastNameLabel setText: @""]; if(lLocalizedLastName != nil) CFRelease(lLocalizedLastName); @@ -70,29 +70,32 @@ if(lFirstName != nil) CFRelease(lFirstName); - CGRect firstNameFrame = [firstName frame]; - CGRect lastNameFrame = [lastName frame]; + // + // Adapt size + // + CGRect firstNameFrame = [firstNameLabel frame]; + CGRect lastNameFrame = [lastNameLabel frame]; lastNameFrame.origin.x -= firstNameFrame.size.width; // Compute firstName size CGSize contraints; - contraints.height = [firstName frame].size.height; - contraints.width = ([lastName frame].size.width + [lastName frame].origin.x) - [firstName frame].origin.x; - CGSize firstNameSize = [[firstName text] sizeWithFont:[firstName font] constrainedToSize: contraints]; + contraints.height = [firstNameLabel frame].size.height; + contraints.width = ([lastNameLabel frame].size.width + [lastNameLabel frame].origin.x) - [firstNameLabel frame].origin.x; + CGSize firstNameSize = [[firstNameLabel text] sizeWithFont:[firstNameLabel font] constrainedToSize: contraints]; firstNameFrame.size.width = firstNameSize.width; // Compute lastName size & position lastNameFrame.origin.x += firstNameFrame.size.width; - lastNameFrame.size.width = (contraints.width + [firstName frame].origin.x) - lastNameFrame.origin.x; + lastNameFrame.size.width = (contraints.width + [firstNameLabel frame].origin.x) - lastNameFrame.origin.x; - [firstName setFrame: firstNameFrame]; - [lastName setFrame: lastNameFrame]; + [firstNameLabel setFrame: firstNameFrame]; + [lastNameLabel setFrame: lastNameFrame]; } - (void) dealloc { - [firstName release]; - [lastName release]; + [firstNameLabel release]; + [lastNameLabel release]; [super dealloc]; } diff --git a/Classes/LinphoneUI/UIContactCell.xib b/Classes/LinphoneUI/UIContactCell.xib index 8544ad63c..6eae6e799 100644 --- a/Classes/LinphoneUI/UIContactCell.xib +++ b/Classes/LinphoneUI/UIContactCell.xib @@ -113,7 +113,6 @@ {{75, 0}, {200, 44}} - _NS:328 NO YES @@ -144,7 +143,6 @@ {320, 44} - _NS:9 3 @@ -168,19 +166,19 @@ - firstName + firstNameLabel - 11 + 17 - lastName + lastNameLabel - 12 + 18 @@ -246,7 +244,7 @@ - 16 + 18 @@ -254,16 +252,16 @@ UIContactCell UITableViewCell - UILabel - UILabel + UILabel + UILabel - - firstName + + firstNameLabel UILabel - - lastName + + lastNameLabel UILabel diff --git a/Classes/LinphoneUI/UIHistoryCell.h b/Classes/LinphoneUI/UIHistoryCell.h index 1de3013ba..2d7575d32 100644 --- a/Classes/LinphoneUI/UIHistoryCell.h +++ b/Classes/LinphoneUI/UIHistoryCell.h @@ -23,13 +23,23 @@ @interface UIHistoryCell : UITableViewCell { UIImageView* imageView; - UILabel* displayName; + UILabel* displayNameLabel; + UIButton* detailsButton; + UIButton* deleteButton; + @private + LinphoneCallLog *callLog; } @property (nonatomic, retain) IBOutlet UIImageView* imageView; -@property (nonatomic, retain) IBOutlet UILabel* displayName; +@property (nonatomic, retain) IBOutlet UILabel* displayNameLabel; +@property (nonatomic, retain) IBOutlet UIButton* detailsButton; +@property (nonatomic, retain) IBOutlet UIButton* deleteButton; + +- (IBAction)onDetails:(id) event; +- (IBAction)onDelete:(id) event; --(IBAction) onDetails: (id) event; - (void)update:(LinphoneCallLog*) callLogs; +- (void)enterEditMode; +- (void)exitEditMode; @end diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index f62e35bc6..22c874a59 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -18,11 +18,14 @@ */ #import "UIHistoryCell.h" +#import "LinphoneManager.h" @implementation UIHistoryCell -@synthesize displayName; +@synthesize displayNameLabel; @synthesize imageView; +@synthesize deleteButton; +@synthesize detailsButton; - (id)init { if ((self = [super init]) != nil) { @@ -33,45 +36,65 @@ if ([arrayOfViews count] >= 1) { [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; } + + self->callLog = NULL; } return self; } -- (IBAction)onDetails: (id) event { - +- (IBAction)onDetails:(id) event { + if(callLog != NULL) { + + } } -- (void)update:(LinphoneCallLog*) callLogs { +- (IBAction)onDelete:(id)event { + if(callLog != NULL) { + linphone_core_remove_call_log([LinphoneManager getLc], callLog); + UITableView *parentTable = (UITableView *)self.superview; + [parentTable reloadData]; + } +} + +- (void)update:(LinphoneCallLog*) aCallLog { + self->callLog = aCallLog; // Set up the cell... LinphoneAddress* partyToDisplay; - NSString *name; - if (callLogs->dir == LinphoneCallIncoming) { - if (callLogs->status == LinphoneCallSuccess) { - name = callLogs->video_enabled?@"appel-entrant.png":@"appel-entrant.png"; + UIImage *image; + if (aCallLog->dir == LinphoneCallIncoming) { + if (aCallLog->status == LinphoneCallSuccess) { + image = [UIImage imageNamed:aCallLog->video_enabled?@"appel-entrant.png":@"appel-entrant.png"]; } else { //missed call - name = @"appel-manque.png"; + image = [UIImage imageNamed:@"appel-manque.png"]; } - partyToDisplay=callLogs->from; - + partyToDisplay = aCallLog->from; } else { - name = callLogs->video_enabled?@"appel-sortant.png":@"appel-sortant.png"; - partyToDisplay=callLogs->to; - + image = [UIImage imageNamed:aCallLog->video_enabled?@"appel-sortant.png":@"appel-sortant.png"]; + partyToDisplay = aCallLog->to; } - UIImage *image = [UIImage imageNamed:name]; - - const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):""; - //TODO + const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):""; //const char* displayName = linphone_address_get_display_name(partyToDisplay); - [displayName setText:[NSString stringWithFormat:@"%s", username]]; + [displayNameLabel setText:[NSString stringWithUTF8String: username]]; [imageView setImage: image]; } +- (void)enterEditMode { + [deleteButton setHidden:false]; + [detailsButton setHidden:true]; +} + +- (void)exitEditMode { + [detailsButton setHidden:false]; + [deleteButton setHidden:true]; +} + - (void) dealloc { - [displayName release]; + [detailsButton release]; + [deleteButton release]; + [displayNameLabel release]; [imageView release]; [super dealloc]; diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index 03b25d18f..e826247f7 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -90,7 +90,7 @@ {{276, 0}, {44, 44}} - + _NS:9 NO IBCocoaTouchFramework @@ -101,15 +101,7 @@ 11 11 11 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + 3 MC41AA @@ -121,16 +113,44 @@ NSImage bouton-detail-contact-actif.png - + 2 15 - + Helvetica-Bold 15 16 + + + -2147483356 + {{276, 0}, {44, 44}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + 11 + 11 + 11 + 11 + + + NSImage + croix-supprimer-ligne-liste-history-over.png + + + NSImage + croix-supprimer-ligne-liste-history-actif.png + + + + {320, 44} @@ -159,11 +179,45 @@ - displayName + displayNameLabel - 8 + 14 + + + + deleteButton + + + + 16 + + + + detailsButton + + + + 17 + + + + onDetails: + + + 7 + + 19 + + + + onDelete: + + + 7 + + 18 @@ -192,6 +246,7 @@ + @@ -205,7 +260,7 @@ 5 - firstName + displayNameLabel 7 @@ -213,6 +268,12 @@ detailsButton + + 15 + + + deleteButton + @@ -221,41 +282,57 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + - 13 + 19 UIHistoryCell UITableViewCell - - onDetails: - id - - - onDetails: - + + id + id + + + + onDelete: + id + + onDetails: id - + - UILabel + UIButton + UIButton + UILabel UIImageView - - displayName + + deleteButton + UIButton + + + detailsButton + UIButton + + + displayNameLabel UILabel @@ -281,6 +358,8 @@ {45, 45} {45, 45} + {45, 45} + {45, 45} 1181 diff --git a/Classes/LinphoneUI/UIToggleButton.m b/Classes/LinphoneUI/UIToggleButton.m index c5a2b62c5..02c2b4dd4 100644 --- a/Classes/LinphoneUI/UIToggleButton.m +++ b/Classes/LinphoneUI/UIToggleButton.m @@ -68,16 +68,16 @@ } -(void) onOn { - [NSException raise:NSInternalInconsistencyException - format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; + /*[NSException raise:NSInternalInconsistencyException + format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];*/ } -(void) onOff { - [NSException raise:NSInternalInconsistencyException - format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; + /*[NSException raise:NSInternalInconsistencyException + format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];*/ } -(bool) onUpdate { - [NSException raise:NSInternalInconsistencyException - format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; + /*[NSException raise:NSInternalInconsistencyException + format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];*/ return false; } diff --git a/Classes/LinphoneUI/UIVideoButton.m b/Classes/LinphoneUI/UIVideoButton.m index 98687629a..2a7713b0f 100644 --- a/Classes/LinphoneUI/UIVideoButton.m +++ b/Classes/LinphoneUI/UIVideoButton.m @@ -68,20 +68,27 @@ - (bool)onUpdate { if([LinphoneManager isLcReady]) { bool val = false; - LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]); - if (currentCall) { - LinphoneCallState state = linphone_call_get_state(currentCall); - if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) { - if (linphone_call_params_video_enabled(linphone_call_get_current_params(currentCall))) { - val = true; + if(linphone_core_video_enabled([LinphoneManager getLc])) { + LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]); + if (currentCall) { + LinphoneCallState state = linphone_call_get_state(currentCall); + if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) { + if (linphone_call_params_video_enabled(linphone_call_get_current_params(currentCall))) { + val = true; + } + [self setEnabled:TRUE]; + } else { + // Disable button if the call is not running + [self setEnabled:FALSE]; } - [self setEnabled:TRUE]; } else { + // Disable button if there is no call [self setEnabled:FALSE]; } } else { + // Disable button if video is not enabled [self setEnabled:FALSE]; - } + } return val; } else { //not ready yet diff --git a/Classes/MainScreenWithVideoPreview.m b/Classes/MainScreenWithVideoPreview.m index 35bc73bc3..411e79b12 100644 --- a/Classes/MainScreenWithVideoPreview.m +++ b/Classes/MainScreenWithVideoPreview.m @@ -16,9 +16,11 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import "MainScreenWithVideoPreview.h" + #import -#import "LinphoneUI/LinphoneManager.h" + +#import "MainScreenWithVideoPreview.h" +#import "LinphoneManager.h" @implementation MainScreenWithVideoPreview @synthesize window; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index f0c8a2e3a..93a8736e8 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -23,10 +23,13 @@ #import "DialerViewController.h" #import "HistoryViewController.h" #import "ContactsViewController.h" +#import "IncomingCallViewController.h" #import "InCallViewController.h" #import "SettingsViewController.h" #import "ChatViewController.h" +#import "AbstractCall.h" + @implementation ViewsDescription - (id)copy { @@ -207,7 +210,7 @@ // Call abstractCall NSDictionary *dict = [notif.userInfo objectForKey: @"args"]; if(dict != nil) - [LinphoneManager abstractCall:currentViewDescription->content dict:dict]; + [AbstractCall call:currentViewDescription->content dict:dict]; // Dealloc old view description if(oldViewDescription != nil) { @@ -275,6 +278,20 @@ historyDescription->tabBarEnabled = true; [viewDescriptions setObject:historyDescription forKey:[NSNumber numberWithInt: PhoneView_History]]; + // + // IncomingCall View + // + IncomingCallViewController* myIncomingCallController = [[IncomingCallViewController alloc] + initWithNibName:@"IncomingCallViewController" + bundle:[NSBundle mainBundle]]; + //[myChatViewController loadView]; + ViewsDescription *incomingCallDescription = [ViewsDescription alloc]; + incomingCallDescription->content = myIncomingCallController; + incomingCallDescription->tabBar = mainTabBarController; + incomingCallDescription->statusEnabled = true; + incomingCallDescription->fullscreen = false; + incomingCallDescription->tabBarEnabled = true; + [viewDescriptions setObject:incomingCallDescription forKey:[NSNumber numberWithInt: PhoneView_Chat]]; // // InCall View @@ -285,10 +302,10 @@ //[myInCallController loadView]; ViewsDescription *inCallDescription = [ViewsDescription alloc]; inCallDescription->content = myInCallController; - inCallDescription->tabBar = callTabBarController; + inCallDescription->tabBar = nil; inCallDescription->statusEnabled = true; inCallDescription->fullscreen = false; - inCallDescription->tabBarEnabled = true; + inCallDescription->tabBarEnabled = false; [viewDescriptions setObject:inCallDescription forKey:[NSNumber numberWithInt: PhoneView_InCall]]; @@ -302,7 +319,7 @@ ViewsDescription *settingsDescription = [ViewsDescription alloc]; settingsDescription->content = mySettingsViewController; settingsDescription->tabBar = mainTabBarController; - settingsDescription->statusEnabled = true; + settingsDescription->statusEnabled = false; settingsDescription->fullscreen = false; settingsDescription->tabBarEnabled = true; [viewDescriptions setObject:settingsDescription forKey:[NSNumber numberWithInt: PhoneView_Settings]]; @@ -317,10 +334,10 @@ ViewsDescription *chatDescription = [ViewsDescription alloc]; chatDescription->content = myChatViewController; chatDescription->tabBar = mainTabBarController; - chatDescription->statusEnabled = true; + chatDescription->statusEnabled = false; chatDescription->fullscreen = false; chatDescription->tabBarEnabled = true; - [viewDescriptions setObject:settingsDescription forKey:[NSNumber numberWithInt: PhoneView_Chat]]; + [viewDescriptions setObject:chatDescription forKey:[NSNumber numberWithInt: PhoneView_Chat]]; // Set observers [[NSNotificationCenter defaultCenter] addObserver:self @@ -331,6 +348,11 @@ selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(registrationUpdate:) + name:@"LinphoneRegistrationUpdate" + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) name:UIDeviceBatteryLevelDidChangeNotification @@ -341,9 +363,40 @@ [[NSNotificationCenter defaultCenter] removeObserver:self]; } +- (void)registrationUpdate: (NSNotification*) notif { + LinphoneRegistrationState state = [[notif.userInfo objectForKey: @"state"] intValue]; + LinphoneProxyConfig *cfg = [[notif.userInfo objectForKey: @"cfg"] pointerValue]; + // Show error + if (state == LinphoneRegistrationFailed) { + NSString* lErrorMessage=nil; + if (linphone_proxy_config_get_error(cfg) == LinphoneReasonBadCredentials) { + lErrorMessage = NSLocalizedString(@"Bad credentials, check your account settings",nil); + } else if (linphone_proxy_config_get_error(cfg) == LinphoneReasonNoResponse) { + lErrorMessage = NSLocalizedString(@"SIP server unreachable",nil); + } + + if (lErrorMessage != nil && linphone_proxy_config_get_error(cfg) != LinphoneReasonNoResponse) { + //do not report network connection issue on registration + //default behavior if no registration delegates + UIApplicationState s = [UIApplication sharedApplication].applicationState; + + // do not stack error message when going to backgroud + if (s != UIApplicationStateBackground) { + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Registration failure",nil) + message:lErrorMessage + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil ,nil]; + [error show]; + [error release]; + } + } + + } +} + - (void)callUpdate: (NSNotification*) notif { - LinphoneCallWrapper *callWrapper = [notif.userInfo objectForKey: @"call"]; - LinphoneCall *call = callWrapper->call; + LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; NSString *message = [notif.userInfo objectForKey: @"message"]; @@ -370,14 +423,7 @@ const LinphoneCallParams* current = linphone_call_get_current_params(call); const LinphoneCallParams* remote = linphone_call_get_remote_params(call); - /* remote wants to add video */ - if (!linphone_call_params_video_enabled(current) && - linphone_call_params_video_enabled(remote) && - !linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) { - linphone_core_defer_call_update([LinphoneManager getLc], call); - //TODO - //[self displayAskToEnableVideoCall:call forUser:lUserName withDisplayName:lDisplayName]; - } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { + if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { [[LinphoneManager instance] changeView:PhoneView_InCall]; } diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index d18ddd8b0..f1857e52a 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -46,7 +46,7 @@ {{0, 23}, {320, 380}} - + _NS:9 YES IBCocoaTouchFramework @@ -95,114 +95,6 @@ IBCocoaTouchFramework - - - 292 - - YES - - - -2147483356 - {{0, 9}, {320, 67}} - - - - _NS:9 - - 3 - MQA - - - -1 - NO - IBCocoaTouchFramework - - - - 292 - {160, 77} - - - - _NS:9 - NO - - Accept - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - decrocher-over.png - - - NSImage - decrocher-actif.png - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{160, 0}, {160, 77}} - - - _NS:9 - NO - - Decline - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - refuser-over.png - - - NSImage - refuser-actif.png - - - - - - {320, 77} - - - - _NS:9 - - 1 - MCAxIDAuMTkxOTQ1NDc1NSAwAA - - NO - IBCocoaTouchFramework - 292 @@ -245,7 +137,10 @@ 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - + + 3 + MC41AA + NSImage contact-over-add-call.png @@ -254,8 +149,15 @@ NSImage contact-actif-add-call.png - - + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + @@ -286,7 +188,7 @@ cancel-actif.png - + @@ -319,7 +221,7 @@ - + {320, 72} @@ -387,14 +289,6 @@ 160 - - - contentView - - - - 159 - mainTabBarController @@ -427,6 +321,14 @@ 202 + + + contentView + + + + 159 + @@ -450,18 +352,6 @@ - - 123 - - - YES - - - - - - incomingTabBar - 129 @@ -529,27 +419,6 @@ mask - - 127 - - - decline - - - 170 - - - YES - - - mask - - - 124 - - - accept - 175 @@ -584,11 +453,6 @@ -1.IBPluginDependency -2.CustomClassName -2.IBPluginDependency - 123.IBPluginDependency - 124.IBPluginDependency - 124.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 127.IBPluginDependency - 127.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 129.IBPluginDependency 130.IBPluginDependency 130.IBUIButtonInspectorSelectedStateConfigurationMetadataKey @@ -599,7 +463,6 @@ 135.IBPluginDependency 152.IBPluginDependency 169.IBPluginDependency - 170.IBPluginDependency 175.IBPluginDependency 178.CustomClassName 178.IBPluginDependency @@ -617,11 +480,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -631,7 +489,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIMainBar com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIStateBar @@ -653,7 +510,7 @@ - 202 + 207 @@ -1025,12 +882,8 @@ cancel-over.png contact-actif-add-call.png contact-over-add-call.png - decrocher-actif.png - decrocher-over.png dialer-actif.png dialer-over.png - refuser-actif.png - refuser-over.png YES @@ -1038,12 +891,8 @@ {254, 144} {254, 144} {254, 144} - {320, 154} - {320, 154} {128, 154} {128, 154} - {320, 154} - {320, 154} 1181 diff --git a/Classes/SettingsViewController.h b/Classes/SettingsViewController.h index b26cd0129..c6b0b4754 100644 --- a/Classes/SettingsViewController.h +++ b/Classes/SettingsViewController.h @@ -21,7 +21,7 @@ #import "IASKAppSettingsViewController.h" -@interface SettingsViewController: UIViewController { +@interface SettingsViewController: UIViewController { IASKAppSettingsViewController *settingsController; UINavigationController *navigationController; } diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index cd54f3fe9..8b4a8da4a 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -27,7 +27,7 @@ - (void)viewDidLoad { settingsController.delegate = [LinphoneManager instance]; - settingsController.settingsReaderDelegate = [LinphoneManager instance]; + settingsController.settingsReaderDelegate = self; settingsController.settingsStore=[[LinphoneManager instance] settingsStore]; settingsController.showCreditsFooter = FALSE; @@ -35,4 +35,47 @@ [self.view addSubview: navigationController.view]; } +- (NSDictionary*)filterPreferenceSpecifier:(NSDictionary *)specifier { + if (![LinphoneManager isLcReady]) { + // LinphoneCore not ready: do not filter + return specifier; + } + NSString* identifier = [specifier objectForKey:@"Identifier"]; + if (identifier == nil) { + identifier = [specifier objectForKey:@"Key"]; + } + if (!identifier) { + // child pane maybe + NSString* title = [specifier objectForKey:@"Title"]; + if ([title isEqualToString:@"Video"]) { + if (!linphone_core_video_supported([LinphoneManager getLc])) + return nil; + } + return specifier; + } + // NSLog(@"Specifier received: %@", identifier); + if ([identifier isEqualToString:@"silk_24k_preference"]) { + if (![[LinphoneManager instance] isNotIphone3G]) + return nil; + } + if ([identifier isEqualToString:@"backgroundmode_preference"]) { + UIDevice* device = [UIDevice currentDevice]; + if ([device respondsToSelector:@selector(isMultitaskingSupported)]) { + if ([device isMultitaskingSupported]) { + return specifier; + } + } + // hide setting if bg mode not supported + return nil; + } + if (![LinphoneManager codecIsSupported:identifier]) + return Nil; + return specifier; +} + +- (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender { + ms_message("Synchronize settings"); + [[[LinphoneManager instance] settingsStore] synchronize]; +} + @end diff --git a/Classes/SettingsViewController.xib b/Classes/SettingsViewController.xib index 598a2964e..38b76b8c3 100644 --- a/Classes/SettingsViewController.xib +++ b/Classes/SettingsViewController.xib @@ -62,12 +62,12 @@ YES IBCocoaTouchFramework - + NO - Item + Settings IBCocoaTouchFramework diff --git a/Classes/Utils/AbstractCall.h b/Classes/Utils/AbstractCall.h new file mode 100644 index 000000000..170c022ab --- /dev/null +++ b/Classes/Utils/AbstractCall.h @@ -0,0 +1,27 @@ +/* AbstractCall.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface AbstractCall : NSObject { +} + ++ (void)call:(id) object dict:(NSDictionary *) dict; + +@end diff --git a/Classes/Utils/AbstractCall.m b/Classes/Utils/AbstractCall.m new file mode 100644 index 000000000..8a76bd041 --- /dev/null +++ b/Classes/Utils/AbstractCall.m @@ -0,0 +1,47 @@ +/* AbstractCall.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "AbstractCall.h" + +@implementation AbstractCall + ++ (void)call:(id) object dict:(NSDictionary *) dict { + for (NSString* identifier in dict) { + if([identifier characterAtIndex:([identifier length] -1)] == ':') { + NSArray *arguments = [dict objectForKey:identifier]; + SEL selector = NSSelectorFromString(identifier); + NSMethodSignature *signature = [object methodSignatureForSelector:selector]; + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; + [invocation setTarget:object]; + [invocation setSelector:selector]; + for(int i=0; i<[arguments count]; i++) + { + id arg = [arguments objectAtIndex:i]; + [invocation setArgument:&arg atIndex:i+2]; // The first two arguments are the hidden arguments self and _cmd + } + [invocation invoke]; // Invoke the selector + } else { + NSDictionary *arguments = [dict objectForKey:identifier]; + id new_object = [object performSelector:NSSelectorFromString(identifier)]; + [AbstractCall call:new_object dict:arguments]; + } + } +} + +@end diff --git a/Resources/champ-titre-incoming.png b/Resources/champ-titre-incoming.png new file mode 100644 index 0000000000000000000000000000000000000000..109575547e1847608b04d318f97c664d3b4b9d67 GIT binary patch literal 8593 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 ABme*a literal 0 HcmV?d00001 diff --git a/Resources/croix-supprimer-ligne-liste-history-actif.png b/Resources/croix-supprimer-ligne-liste-history-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..ef1ae410e6b093cbd3f27486cf8e4bd5af25167c GIT binary patch literal 4317 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 literal 0 HcmV?d00001 diff --git a/Resources/ok-edit-list-history-actif.png b/Resources/ok-edit-list-history-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb188033bbb135645dab5309aec81a4676aed9c GIT binary patch literal 4098 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 N+>B&RtTy(D`!}d22HgMv literal 0 HcmV?d00001 diff --git a/Resources/ok-edit-list-history-over.png b/Resources/ok-edit-list-history-over.png new file mode 100644 index 0000000000000000000000000000000000000000..51411d7db83034022e5a4dcb73e620c4f623ae34 GIT binary patch literal 3845 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 W^rm^#C%NU#A5$XXAil)Xga04u>6aV; literal 0 HcmV?d00001 diff --git a/Resources/tchat-edit-actif.png b/Resources/tchat-edit-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..428ce5df8eeb1c40d98fd1dbfeab9fa265e49e96 GIT binary patch literal 4596 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 b+8ZZ>XXl#=UO&z|e23B3G0`s4atQl3jMW$I literal 0 HcmV?d00001 diff --git a/Resources/tchat-edit-over.png b/Resources/tchat-edit-over.png new file mode 100644 index 0000000000000000000000000000000000000000..62c0a4c34508a136cd65a41651ef8f20ddcd9f70 GIT binary patch literal 4284 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 xC%L9;4qx#DNN9jd+v1}6v=Nf-2wmrGM%Lg_77 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 82146ba57..e45e8ef95 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -42,7 +42,6 @@ 224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; }; 2248E90E12F7E4CF00220D9C /* UIDigitButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */; }; - 2248E99F12F801C200220D9C /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E99E12F801C200220D9C /* LinphoneManager.m */; }; 225CB2FA11ABB76400628906 /* linphone-banner.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2F911ABB76400628906 /* linphone-banner.png */; }; 226183AD1472527D0037138E /* libSKP_SILK_SDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AA1472527D0037138E /* libSKP_SILK_SDK.a */; }; 226183AE1472527D0037138E /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AB1472527D0037138E /* libsrtp.a */; }; @@ -91,7 +90,6 @@ 22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81C111C44E100B04932 /* MoreViewController.m */; }; 22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81F111C44E100B04932 /* ConsoleViewController.m */; }; 22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */; }; - 22D8F14D147548E2008C97DB /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E99E12F801C200220D9C /* LinphoneManager.m */; }; 22D8F14E147548E2008C97DB /* UICallButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB7912F846B1002A5394 /* UICallButton.m */; }; 22D8F14F147548E2008C97DB /* UIHangUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */; }; 22D8F151147548E2008C97DB /* UIMicroButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMicroButton.m */; }; @@ -185,6 +183,10 @@ 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; D31AC4B0158A29C600C2638B /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; }; D31AC4B1158A29C600C2638B /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; }; + D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */; }; + D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */; }; + D31B4B23159876C0002E6C72 /* UICompositeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */; }; + D31B4B24159876C0002E6C72 /* UICompositeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */; }; D31C9C8A158A179A00756B45 /* fond-detail-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C89158A179A00756B45 /* fond-detail-numero.png */; }; D31C9C8B158A179A00756B45 /* fond-detail-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C89158A179A00756B45 /* fond-detail-numero.png */; }; D31C9C90158A1C1000756B45 /* appel-entrant.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8D158A1C1000756B45 /* appel-entrant.png */; }; @@ -244,8 +246,8 @@ D354981115875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */; }; D354981215875608000081D8 /* add-contact-depuis-detail-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */; }; D354981315875608000081D8 /* add-contact-depuis-detail-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */; }; - D3549816158761D0000081D8 /* ContactTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactTableViewController.m */; }; - D3549817158761D0000081D8 /* ContactTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactTableViewController.m */; }; + D3549816158761D0000081D8 /* ContactsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactsTableViewController.m */; }; + D3549817158761D0000081D8 /* ContactsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactsTableViewController.m */; }; D354981A15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */; }; D354981B15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */; }; D354981C15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* bouton-detail-contact-over.png */; }; @@ -364,6 +366,26 @@ D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; D3A55FC015877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; + D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; }; + D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; }; + D3EA5403159852080037DC6B /* tchat-edit-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* tchat-edit-actif.png */; }; + D3EA5404159852080037DC6B /* tchat-edit-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* tchat-edit-actif.png */; }; + D3EA5405159852080037DC6B /* tchat-edit-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5400159852080037DC6B /* tchat-edit-over.png */; }; + D3EA5406159852080037DC6B /* tchat-edit-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5400159852080037DC6B /* tchat-edit-over.png */; }; + D3EA5407159852080037DC6B /* tchat-new-discussion-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5401159852080037DC6B /* tchat-new-discussion-actif.png */; }; + D3EA5408159852080037DC6B /* tchat-new-discussion-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5401159852080037DC6B /* tchat-new-discussion-actif.png */; }; + D3EA5409159852080037DC6B /* tchat-new-discussion-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5402159852080037DC6B /* tchat-new-discussion-over.png */; }; + D3EA540A159852080037DC6B /* tchat-new-discussion-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5402159852080037DC6B /* tchat-new-discussion-over.png */; }; + D3EA540D1598528B0037DC6B /* ChatTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA540C1598528B0037DC6B /* ChatTableViewController.m */; }; + D3EA540E1598528B0037DC6B /* ChatTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA540C1598528B0037DC6B /* ChatTableViewController.m */; }; + D3EA5411159853750037DC6B /* UIChatCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA5410159853750037DC6B /* UIChatCell.m */; }; + D3EA5412159853750037DC6B /* UIChatCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA5410159853750037DC6B /* UIChatCell.m */; }; + D3EA5414159853C90037DC6B /* UIChatCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5413159853C90037DC6B /* UIChatCell.xib */; }; + D3EA5415159853C90037DC6B /* UIChatCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5413159853C90037DC6B /* UIChatCell.xib */; }; + D3EA5418159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png */; }; + D3EA5419159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png */; }; + D3EA541A159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5417159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png */; }; + D3EA541B159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5417159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png */; }; D3ED3E411585FB4A006C0DE4 /* fond-clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */; }; D3ED3E421585FB4A006C0DE4 /* fond-clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */; }; D3ED3E451585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */; }; @@ -406,6 +428,18 @@ D3ED3EB4158738FB006C0DE4 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; }; D3ED3EB81587392C006C0DE4 /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryViewController.m */; }; D3ED3EB91587392C006C0DE4 /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryViewController.m */; }; + D3F26BEC159869A6005F9CAB /* AbstractCall.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEB159869A6005F9CAB /* AbstractCall.m */; }; + D3F26BED159869A6005F9CAB /* AbstractCall.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEB159869A6005F9CAB /* AbstractCall.m */; }; + D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */; }; + D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */; }; + D3F26BF315986B73005F9CAB /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; }; + D3F26BF415986B73005F9CAB /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; }; + D3F26BF715986DAD005F9CAB /* ok-edit-list-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF515986DAD005F9CAB /* ok-edit-list-history-actif.png */; }; + D3F26BF815986DAD005F9CAB /* ok-edit-list-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF515986DAD005F9CAB /* ok-edit-list-history-actif.png */; }; + D3F26BF915986DAD005F9CAB /* ok-edit-list-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* ok-edit-list-history-over.png */; }; + D3F26BFA15986DAD005F9CAB /* ok-edit-list-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* ok-edit-list-history-over.png */; }; + D3F26BFC15987083005F9CAB /* champ-titre-incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* champ-titre-incoming.png */; }; + D3F26BFD15987083005F9CAB /* champ-titre-incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* champ-titre-incoming.png */; }; D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; @@ -696,8 +730,6 @@ 224567C1107B968500F10948 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDigitButton.h; sourceTree = ""; }; 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIDigitButton.m; sourceTree = ""; }; - 2248E99D12F801C200220D9C /* LinphoneManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneManager.h; sourceTree = ""; }; - 2248E99E12F801C200220D9C /* LinphoneManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneManager.m; sourceTree = ""; }; 2258633C11410BAC00C5A737 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = ""; }; 225CB2F911ABB76400628906 /* linphone-banner.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "linphone-banner.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/linphone-banner.png"; sourceTree = ""; }; 226183AA1472527D0037138E /* libSKP_SILK_SDK.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libSKP_SILK_SDK.a; path = "liblinphone-sdk/apple-darwin/lib/libSKP_SILK_SDK.a"; sourceTree = ""; }; @@ -849,6 +881,9 @@ 70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIHistoryCell.xib; sourceTree = ""; }; + D31B4B1E159876C0002E6C72 /* UICompositeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICompositeViewController.h; sourceTree = ""; }; + D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICompositeViewController.m; sourceTree = ""; }; + D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UICompositeViewController.xib; sourceTree = ""; }; D31C9C89158A179A00756B45 /* fond-detail-numero.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "fond-detail-numero.png"; path = "Resources/fond-detail-numero.png"; sourceTree = ""; }; D31C9C8D158A1C1000756B45 /* appel-entrant.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appel-entrant.png"; path = "Resources/appel-entrant.png"; sourceTree = ""; }; D31C9C8E158A1C1000756B45 /* appel-manque.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appel-manque.png"; path = "Resources/appel-manque.png"; sourceTree = ""; }; @@ -886,8 +921,8 @@ D354980515875534000081D8 /* linphone-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "linphone-selectionne.png"; path = "Resources/linphone-selectionne.png"; sourceTree = ""; }; D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-depuis-detail-actif.png"; path = "Resources/add-contact-depuis-detail-actif.png"; sourceTree = ""; }; D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-depuis-detail-over.png"; path = "Resources/add-contact-depuis-detail-over.png"; sourceTree = ""; }; - D3549814158761CF000081D8 /* ContactTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactTableViewController.h; sourceTree = ""; }; - D3549815158761D0000081D8 /* ContactTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactTableViewController.m; sourceTree = ""; }; + D3549814158761CF000081D8 /* ContactsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsTableViewController.h; sourceTree = ""; }; + D3549815158761D0000081D8 /* ContactsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactsTableViewController.m; sourceTree = ""; }; D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bouton-detail-contact-actif.png"; path = "Resources/bouton-detail-contact-actif.png"; sourceTree = ""; }; D354981915876FE7000081D8 /* bouton-detail-contact-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bouton-detail-contact-over.png"; path = "Resources/bouton-detail-contact-over.png"; sourceTree = ""; }; D354981E1587716B000081D8 /* UIStateBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIStateBar.h; sourceTree = ""; }; @@ -977,6 +1012,19 @@ D3A55FBA15877E5E003FD403 /* UIContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactCell.h; sourceTree = ""; }; D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = ""; }; D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = ""; }; + D3EA53FB159850E80037DC6B /* LinphoneManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneManager.h; sourceTree = ""; }; + D3EA53FC159850E80037DC6B /* LinphoneManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneManager.m; sourceTree = ""; }; + D3EA53FF159852080037DC6B /* tchat-edit-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-edit-actif.png"; path = "Resources/tchat-edit-actif.png"; sourceTree = ""; }; + D3EA5400159852080037DC6B /* tchat-edit-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-edit-over.png"; path = "Resources/tchat-edit-over.png"; sourceTree = ""; }; + D3EA5401159852080037DC6B /* tchat-new-discussion-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-new-discussion-actif.png"; path = "Resources/tchat-new-discussion-actif.png"; sourceTree = ""; }; + D3EA5402159852080037DC6B /* tchat-new-discussion-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-new-discussion-over.png"; path = "Resources/tchat-new-discussion-over.png"; sourceTree = ""; }; + D3EA540B1598528B0037DC6B /* ChatTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatTableViewController.h; sourceTree = ""; }; + D3EA540C1598528B0037DC6B /* ChatTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatTableViewController.m; sourceTree = ""; }; + D3EA540F159853750037DC6B /* UIChatCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIChatCell.h; sourceTree = ""; }; + D3EA5410159853750037DC6B /* UIChatCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIChatCell.m; sourceTree = ""; }; + D3EA5413159853C90037DC6B /* UIChatCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIChatCell.xib; sourceTree = ""; }; + D3EA5416159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "croix-supprimer-ligne-liste-history-actif.png"; path = "Resources/croix-supprimer-ligne-liste-history-actif.png"; sourceTree = ""; }; + D3EA5417159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "croix-supprimer-ligne-liste-history-over.png"; path = "Resources/croix-supprimer-ligne-liste-history-over.png"; sourceTree = ""; }; D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "fond-clavier.png"; path = "Resources/fond-clavier.png"; sourceTree = ""; }; D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-saisie-numero.png"; path = "Resources/champ-saisie-numero.png"; sourceTree = ""; }; D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "barre-noire-top.png"; path = "Resources/barre-noire-top.png"; sourceTree = ""; }; @@ -1001,6 +1049,14 @@ D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = ""; }; D3ED3EB515873928006C0DE4 /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = ""; }; D3ED3EB615873929006C0DE4 /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = ""; }; + D3F26BEA159869A6005F9CAB /* AbstractCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AbstractCall.h; path = Utils/AbstractCall.h; sourceTree = ""; }; + D3F26BEB159869A6005F9CAB /* AbstractCall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AbstractCall.m; path = Utils/AbstractCall.m; sourceTree = ""; }; + D3F26BEE15986B71005F9CAB /* IncomingCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IncomingCallViewController.h; sourceTree = ""; }; + D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IncomingCallViewController.m; sourceTree = ""; }; + D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IncomingCallViewController.xib; sourceTree = ""; }; + D3F26BF515986DAD005F9CAB /* ok-edit-list-history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ok-edit-list-history-actif.png"; path = "Resources/ok-edit-list-history-actif.png"; sourceTree = ""; }; + D3F26BF615986DAD005F9CAB /* ok-edit-list-history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ok-edit-list-history-over.png"; path = "Resources/ok-edit-list-history-over.png"; sourceTree = ""; }; + D3F26BFB15987083005F9CAB /* champ-titre-incoming.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-titre-incoming.png"; path = "Resources/champ-titre-incoming.png"; sourceTree = ""; }; D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; }; D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; }; D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; }; @@ -1166,6 +1222,8 @@ children = ( 340751E4150E4D0200B89C47 /* CallDelegate.h */, 2211DBBB14769C8200DEE054 /* CallDelegate.m */, + D3EA540B1598528B0037DC6B /* ChatTableViewController.h */, + D3EA540C1598528B0037DC6B /* ChatTableViewController.m */, D35E7594159460560066B1C1 /* ChatViewController.h */, D35E7595159460560066B1C1 /* ChatViewController.m */, D35E7596159460570066B1C1 /* ChatViewController.xib */, @@ -1177,11 +1235,11 @@ 22E0A820111C44E100B04932 /* ConsoleViewController.h */, 22E0A81F111C44E100B04932 /* ConsoleViewController.m */, 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */, + D3549814158761CF000081D8 /* ContactsTableViewController.h */, + D3549815158761D0000081D8 /* ContactsTableViewController.m */, D35497FB15875372000081D8 /* ContactsViewController.h */, D35497FC15875372000081D8 /* ContactsViewController.m */, D35497FD15875372000081D8 /* ContactsViewController.xib */, - D3549814158761CF000081D8 /* ContactTableViewController.h */, - D3549815158761D0000081D8 /* ContactTableViewController.m */, 22F2508B107141E100AC9B3F /* DialerViewController.h */, 22F2508C107141E100AC9B3F /* DialerViewController.m */, 22F2508D107141E100AC9B3F /* DialerViewController.xib */, @@ -1197,11 +1255,16 @@ D3F83EE91582021700336684 /* InCallViewController.h */, D3F83EEA1582021700336684 /* InCallViewController.m */, D3F83EEB1582021700336684 /* InCallViewController.xib */, + D3F26BEE15986B71005F9CAB /* IncomingCallViewController.h */, + D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */, + D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */, D3F83F9115824D3500336684 /* LinphoneApp.xib */, 1D3623240D0F684500981E51 /* LinphoneAppDelegate.h */, 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */, D37DC6BF1594AE1800B2A5EB /* LinphoneCoreSettingsStore.h */, D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */, + D3EA53FB159850E80037DC6B /* LinphoneManager.h */, + D3EA53FC159850E80037DC6B /* LinphoneManager.m */, 2214EB7012F84668002A5394 /* LinphoneUI */, 34CA8537148F692A00503C01 /* MainScreenWithVideoPreview.h */, 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */, @@ -1433,8 +1496,6 @@ children = ( 223963151393CFAE001DE689 /* FastAddressBook.h */, 223963161393CFAF001DE689 /* FastAddressBook.m */, - 2248E99D12F801C200220D9C /* LinphoneManager.h */, - 2248E99E12F801C200220D9C /* LinphoneManager.m */, 2218A5CE12F973450088A667 /* LogView.h */, D35E757F159328EA0066B1C1 /* UIAddressTextField.h */, D35E7580159328EB0066B1C1 /* UIAddressTextField.m */, @@ -1450,6 +1511,12 @@ D36C43C9158F2EE50048BA40 /* UICallCell.xib */, 22AA8AFF13D83F6300B30535 /* UICamSwitch.h */, 22AA8B0013D83F6300B30535 /* UICamSwitch.m */, + D3EA540F159853750037DC6B /* UIChatCell.h */, + D3EA5410159853750037DC6B /* UIChatCell.m */, + D3EA5413159853C90037DC6B /* UIChatCell.xib */, + D31B4B1E159876C0002E6C72 /* UICompositeViewController.h */, + D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */, + D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */, D3A55FBA15877E5E003FD403 /* UIContactCell.h */, D3A55FBB15877E5E003FD403 /* UIContactCell.m */, D3A55FBE15877E69003FD403 /* UIContactCell.xib */, @@ -1691,6 +1758,7 @@ D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */, D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */, D36C43CE158F2F370048BA40 /* champ-titre-conference.png */, + D3F26BFB15987083005F9CAB /* champ-titre-incoming.png */, D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */, D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */, D3F83F821582278D00336684 /* contact-actif-add-call.png */, @@ -1698,6 +1766,8 @@ D38327EB1580FE3A00FA0D23 /* contacts-actif.png */, D38327FC158100E400FA0D23 /* contacts-over.png */, D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */, + D3EA5416159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png */, + D3EA5417159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png */, D3F83F741582253100336684 /* decrocher-actif.png */, D3F83F751582253100336684 /* decrocher-over.png */, D38327ED1580FE3A00FA0D23 /* dialer-actif.png */, @@ -1733,6 +1803,8 @@ D3ED3E9615872EF1006C0DE4 /* missed-actif.png */, D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */, 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */, + D3F26BF515986DAD005F9CAB /* ok-edit-list-history-actif.png */, + D3F26BF615986DAD005F9CAB /* ok-edit-list-history-over.png */, 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, D3F83EF8158205A100336684 /* pause-actif.png */, @@ -1770,6 +1842,10 @@ D35E757515931E5D0066B1C1 /* switch_camera_default.png */, D35E757615931E5D0066B1C1 /* switch_camera_over.png */, D38327F11580FE3A00FA0D23 /* tchat-actif.png */, + D3EA53FF159852080037DC6B /* tchat-edit-actif.png */, + D3EA5400159852080037DC6B /* tchat-edit-over.png */, + D3EA5401159852080037DC6B /* tchat-new-discussion-actif.png */, + D3EA5402159852080037DC6B /* tchat-new-discussion-over.png */, D38327FF158100E400FA0D23 /* tchat-over.png */, D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */, D3F83F00158205A100336684 /* video-OFF-actif.png */, @@ -1794,6 +1870,8 @@ D326483415887D4400930C67 /* Utils */ = { isa = PBXGroup; children = ( + D3F26BEA159869A6005F9CAB /* AbstractCall.h */, + D3F26BEB159869A6005F9CAB /* AbstractCall.m */, D326483615887D5200930C67 /* OrderedDictionary.h */, D326483715887D5200930C67 /* OrderedDictionary.m */, ); @@ -2127,6 +2205,18 @@ D37DC7151594AE6F00B2A5EB /* IASKSpecifierValuesView.xib in Resources */, D32942A41594C94300556A1C /* SettingsViewController.xib in Resources */, D34F6F9E1594D3FB0095705B /* InAppSettings.bundle in Resources */, + D3EA5403159852080037DC6B /* tchat-edit-actif.png in Resources */, + D3EA5405159852080037DC6B /* tchat-edit-over.png in Resources */, + D3EA5407159852080037DC6B /* tchat-new-discussion-actif.png in Resources */, + D3EA5409159852080037DC6B /* tchat-new-discussion-over.png in Resources */, + D3EA5414159853C90037DC6B /* UIChatCell.xib in Resources */, + D3EA5418159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png in Resources */, + D3EA541A159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png in Resources */, + D3F26BF315986B73005F9CAB /* IncomingCallViewController.xib in Resources */, + D3F26BF715986DAD005F9CAB /* ok-edit-list-history-actif.png in Resources */, + D3F26BF915986DAD005F9CAB /* ok-edit-list-history-over.png in Resources */, + D3F26BFC15987083005F9CAB /* champ-titre-incoming.png in Resources */, + D31B4B23159876C0002E6C72 /* UICompositeViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2285,6 +2375,18 @@ D37DC7161594AE6F00B2A5EB /* IASKSpecifierValuesView.xib in Resources */, D32942A51594C94300556A1C /* SettingsViewController.xib in Resources */, D34F6F9F1594D3FB0095705B /* InAppSettings.bundle in Resources */, + D3EA5404159852080037DC6B /* tchat-edit-actif.png in Resources */, + D3EA5406159852080037DC6B /* tchat-edit-over.png in Resources */, + D3EA5408159852080037DC6B /* tchat-new-discussion-actif.png in Resources */, + D3EA540A159852080037DC6B /* tchat-new-discussion-over.png in Resources */, + D3EA5415159853C90037DC6B /* UIChatCell.xib in Resources */, + D3EA5419159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png in Resources */, + D3EA541B159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png in Resources */, + D3F26BF415986B73005F9CAB /* IncomingCallViewController.xib in Resources */, + D3F26BF815986DAD005F9CAB /* ok-edit-list-history-actif.png in Resources */, + D3F26BFA15986DAD005F9CAB /* ok-edit-list-history-over.png in Resources */, + D3F26BFD15987083005F9CAB /* champ-titre-incoming.png in Resources */, + D31B4B24159876C0002E6C72 /* UICompositeViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2301,7 +2403,6 @@ 22E0A822111C44E100B04932 /* MoreViewController.m in Sources */, 22E0A824111C44E100B04932 /* ConsoleViewController.m in Sources */, 2248E90E12F7E4CF00220D9C /* UIDigitButton.m in Sources */, - 2248E99F12F801C200220D9C /* LinphoneManager.m in Sources */, 2214EB7A12F846B1002A5394 /* UICallButton.m in Sources */, 2214EB8912F84EBB002A5394 /* UIHangUpButton.m in Sources */, 2214EBF312F86360002A5394 /* UIMicroButton.m in Sources */, @@ -2323,7 +2424,7 @@ D3ED3EA71587334E006C0DE4 /* HistoryTableViewController.m in Sources */, D3ED3EB81587392C006C0DE4 /* HistoryViewController.m in Sources */, D35497FE15875372000081D8 /* ContactsViewController.m in Sources */, - D3549816158761D0000081D8 /* ContactTableViewController.m in Sources */, + D3549816158761D0000081D8 /* ContactsTableViewController.m in Sources */, D35498211587716B000081D8 /* UIStateBar.m in Sources */, D3A55FBC15877E5E003FD403 /* UIContactCell.m in Sources */, D326483815887D5200930C67 /* OrderedDictionary.m in Sources */, @@ -2352,6 +2453,12 @@ D37DC7051594AE6F00B2A5EB /* IASKSlider.m in Sources */, D37DC7071594AE6F00B2A5EB /* IASKSwitch.m in Sources */, D37DC7091594AE6F00B2A5EB /* IASKTextField.m in Sources */, + D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */, + D3EA540D1598528B0037DC6B /* ChatTableViewController.m in Sources */, + D3EA5411159853750037DC6B /* UIChatCell.m in Sources */, + D3F26BEC159869A6005F9CAB /* AbstractCall.m in Sources */, + D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */, + D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2365,7 +2472,6 @@ 22D8F14A147548E2008C97DB /* MoreViewController.m in Sources */, 22D8F14B147548E2008C97DB /* ConsoleViewController.m in Sources */, 22D8F14C147548E2008C97DB /* UIDigitButton.m in Sources */, - 22D8F14D147548E2008C97DB /* LinphoneManager.m in Sources */, 22D8F14E147548E2008C97DB /* UICallButton.m in Sources */, 22D8F14F147548E2008C97DB /* UIHangUpButton.m in Sources */, 22D8F151147548E2008C97DB /* UIMicroButton.m in Sources */, @@ -2387,7 +2493,7 @@ D3ED3EA81587334E006C0DE4 /* HistoryTableViewController.m in Sources */, D3ED3EB91587392C006C0DE4 /* HistoryViewController.m in Sources */, D35497FF15875372000081D8 /* ContactsViewController.m in Sources */, - D3549817158761D0000081D8 /* ContactTableViewController.m in Sources */, + D3549817158761D0000081D8 /* ContactsTableViewController.m in Sources */, D35498221587716B000081D8 /* UIStateBar.m in Sources */, D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */, D326483915887D5200930C67 /* OrderedDictionary.m in Sources */, @@ -2416,6 +2522,12 @@ D37DC7061594AE6F00B2A5EB /* IASKSlider.m in Sources */, D37DC7081594AE6F00B2A5EB /* IASKSwitch.m in Sources */, D37DC70A1594AE6F00B2A5EB /* IASKTextField.m in Sources */, + D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */, + D3EA540E1598528B0037DC6B /* ChatTableViewController.m in Sources */, + D3EA5412159853750037DC6B /* UIChatCell.m in Sources */, + D3F26BED159869A6005F9CAB /* AbstractCall.m in Sources */, + D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */, + D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 15d394318f2d8297342b2a8e7b835a075c8b41da Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 25 Jun 2012 17:57:50 +0200 Subject: [PATCH 018/397] Split main view in UICompositeViewController --- Classes/ChatViewController.h | 6 +- Classes/ChatViewController.m | 6 + Classes/ChatViewController.xib | 21 +- Classes/ContactsViewController.m | 4 + Classes/DialerViewController.m | 4 + Classes/HistoryViewController.m | 4 + Classes/InCallViewController.m | 4 + Classes/IncomingCallViewController.m | 4 + Classes/LinphoneUI/UICallBar.m | 4 + Classes/LinphoneUI/UIChatCell.h | 2 + Classes/LinphoneUI/UIChatCell.m | 4 + Classes/LinphoneUI/UIChatCell.xib | 16 +- .../LinphoneUI/UICompositeViewController.h | 38 ++ .../LinphoneUI/UICompositeViewController.m | 263 ++++++++- .../LinphoneUI/UICompositeViewController.xib | 45 +- Classes/LinphoneUI/UIMainBar.m | 11 +- Classes/LinphoneUI/UIStateBar.m | 9 +- Classes/PhoneMainView.h | 39 +- Classes/PhoneMainView.m | 317 +++-------- Classes/PhoneMainView.xib | 521 +++--------------- Classes/SettingsViewController.m | 4 + Resources/avatar-inconnu.png | Bin 0 -> 18862 bytes Resources/avatar-small.png | Bin 0 -> 9001 bytes Resources/champ-titre-incoming.png | Bin 8593 -> 13492 bytes linphone.xcodeproj/project.pbxproj | 12 + 25 files changed, 615 insertions(+), 723 deletions(-) create mode 100644 Resources/avatar-inconnu.png create mode 100644 Resources/avatar-small.png diff --git a/Classes/ChatViewController.h b/Classes/ChatViewController.h index abc40aed9..3b30aa446 100644 --- a/Classes/ChatViewController.h +++ b/Classes/ChatViewController.h @@ -19,10 +19,14 @@ #import +#import "ChatTableViewController.h" + @interface ChatViewController : UIViewController { - + ChatTableViewController *tableController; } +@property (nonatomic, retain) IBOutlet ChatTableViewController* tableController; + - (IBAction)onNew:(id) event; - (IBAction)onEdit:(id) event; diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index bb6c94fae..dd8f609d1 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -21,6 +21,12 @@ @implementation ChatViewController +@synthesize tableController; + +- (id)init { + return [super initWithNibName:@"ChatViewController" bundle:[NSBundle mainBundle]]; +} + - (IBAction)onNew: (id) event { } diff --git a/Classes/ChatViewController.xib b/Classes/ChatViewController.xib index 6e6ce99bd..e3944cd49 100644 --- a/Classes/ChatViewController.xib +++ b/Classes/ChatViewController.xib @@ -189,6 +189,14 @@

14
+ + + tableController + + + + 18 + view @@ -315,7 +323,7 @@ - 17 + 18 @@ -344,6 +352,17 @@ id + + tableController + ChatTableViewController + + + tableController + + tableController + ChatTableViewController + + IBProjectSource ./Classes/ChatViewController.h diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 2512f2e1c..a946c277b 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -35,6 +35,10 @@ typedef enum _HistoryView { History_MAX } HistoryView; +- (id)init { + return [super initWithNibName:@"ContactsViewController" bundle:[NSBundle mainBundle]]; +} + - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self.tableView reloadData]; diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index e9e7f6a5d..22247ba79 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -48,6 +48,10 @@ @synthesize zeroButton; @synthesize hashButton; +- (id)init { + return [super initWithNibName:@"DialerViewController" bundle:[NSBundle mainBundle]]; +} + - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; //TODO diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 9a4628b61..0a1f8c4e8 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -34,6 +34,10 @@ typedef enum _HistoryView { History_MAX } HistoryView; +- (id)init { + return [super initWithNibName:@"HistoryViewController" bundle:[NSBundle mainBundle]]; +} + - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self.tableView reloadData]; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 310c3e0ee..4b39572f3 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -48,6 +48,10 @@ const NSInteger SECURE_BUTTON_TAG=5; @synthesize testVideoView; #endif +- (id)init { + return [super initWithNibName:@"InCallViewController" bundle:[NSBundle mainBundle]]; +} + + (bool)isInConference:(LinphoneCall*) call { if (!call) return false; diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 69fc66e79..0e8a2acb3 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -23,6 +23,10 @@ @synthesize addressLabel; +- (id)init { + return [super initWithNibName:@"IncomingCallViewController" bundle:[NSBundle mainBundle]]; +} + - (IBAction)onAcceptClick:(id) event { } diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index fe0dc3bc0..59cc5417c 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -30,6 +30,10 @@ @synthesize microButton; @synthesize speakerButton; +- (id)init { + return [super initWithNibName:@"UICallBar" bundle:[NSBundle mainBundle]]; +} + - (void)viewDidLoad { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; } diff --git a/Classes/LinphoneUI/UIChatCell.h b/Classes/LinphoneUI/UIChatCell.h index a0581bfa0..6d10e6374 100644 --- a/Classes/LinphoneUI/UIChatCell.h +++ b/Classes/LinphoneUI/UIChatCell.h @@ -20,10 +20,12 @@ #import @interface UIChatCell : UITableViewCell { + UIImageView *avatarView; UILabel *displayNameLabel; UILabel *chatContentLabel; } +@property (nonatomic, retain) IBOutlet UIImageView *avatarView; @property (nonatomic, retain) IBOutlet UILabel* displayNameLabel; @property (nonatomic, retain) IBOutlet UILabel* chatContentLabel; diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index 414584644..ae8693e42 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -21,6 +21,7 @@ @implementation UIChatCell +@synthesize avatarView; @synthesize displayNameLabel; @synthesize chatContentLabel; @@ -42,6 +43,9 @@ } - (void)update{ + + [avatarView setImage:[UIImage imageNamed:@"avatar-small.png"]]; + // // Adapt size // diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib index 38bed9633..dcdc7cd9d 100644 --- a/Classes/LinphoneUI/UIChatCell.xib +++ b/Classes/LinphoneUI/UIChatCell.xib @@ -123,7 +123,6 @@ {{276, 0}, {44, 44}} - _NS:9 NO IBCocoaTouchFramework @@ -198,6 +197,14 @@ 24 + + + avatarView + + + + 25 + onDetails: @@ -281,7 +288,7 @@ - 24 + 25 @@ -300,10 +307,15 @@ + UIImageView UILabel UILabel + + avatarView + UIImageView + chatContentLabel UILabel diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index 71d7d97d3..c684228e0 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -18,9 +18,47 @@ */ #import +#import "LinphoneManager.h" + +@interface UICompositeViewDescription: NSObject{ +@public + NSString *content; + NSString *stateBar; + BOOL stateBarEnabled; + NSString *tabBar; + BOOL tabBarEnabled; + BOOL fullscreen; +} +- (id)copy; +- (id)init:(NSString *)content stateBar:(NSString*)stateBar + stateBarEnabled:(BOOL) stateBarEnabled + tabBar:(NSString*)tabBar + tabBarEnabled:(BOOL) tabBarEnabled + fullscreen:(BOOL) fullscreen; +@end @interface UICompositeViewController : UIViewController { + @private + UIView *stateBarView; + UIViewController *stateBarViewController; + UIView *contentView; + UIViewController *contentViewController; + UIView *tabBarView; + UIViewController *tabBarViewController; + NSMutableDictionary *viewControllerCache; + + UICompositeViewDescription *currentViewDescription; } +@property (nonatomic, retain) IBOutlet UIView* stateBarView; +@property (nonatomic, retain) IBOutlet UIView* contentView; +@property (nonatomic, retain) IBOutlet UIView* tabBarView; + +- (void) changeView:(UICompositeViewDescription *)description; +- (void) setFullScreen:(BOOL) enabled; +- (void) setToolBarHidden:(BOOL) hidden; + +- (UIViewController *) getCurrentViewController; + @end diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 9472919b8..895f0f06a 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -19,6 +19,267 @@ #import "UICompositeViewController.h" -@implementation UICompositeViewController +#import + +@implementation UICompositeViewDescription + +- (id)copy { + UICompositeViewDescription *copy = [UICompositeViewDescription alloc]; + copy->content = self->content; + copy->tabBar = self->tabBar; + copy->tabBarEnabled = self->tabBarEnabled; + copy->stateBarEnabled = self->stateBarEnabled; + copy->fullscreen = self->fullscreen; + return copy; +} + +- (id)init:(NSString *)acontent stateBar:(NSString*)astateBar + stateBarEnabled:(BOOL) astateBarEnabled + tabBar:(NSString*)atabBar + tabBarEnabled:(BOOL) atabBarEnabled + fullscreen:(BOOL) afullscreen { + self->content = acontent; + self->stateBar = astateBar; + self->stateBarEnabled = astateBarEnabled; + self->tabBar = atabBar; + self->tabBarEnabled = atabBarEnabled; + self->fullscreen = afullscreen; + + return self; +} + +@end + +@implementation UICompositeViewController + +@synthesize stateBarView; +@synthesize contentView; +@synthesize tabBarView; + + +- (void)myInit { + self->viewControllerCache = [[NSMutableDictionary alloc] init]; +} + +- (id)init{ + self = [super init]; + if (self) { + [self myInit]; + } + return self; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self myInit]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self myInit]; + } + return self; +} + +- (void)dealloc { + [contentView release]; + [stateBarView release]; + [tabBarView release]; + [viewControllerCache removeAllObjects]; + [currentViewDescription dealloc]; + [super dealloc]; +} + ++ (void)addSubView:(UIViewController*)controller view:(UIView*)view { + if(controller != nil) { + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [controller viewWillAppear:NO]; + } + [view addSubview: controller.view]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [controller viewDidAppear:NO]; + } + } +} + ++ (void)removeSubView:(UIViewController*)controller { + if(controller != nil) { + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [controller viewWillDisappear:NO]; + } + [controller.view removeFromSuperview]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [controller viewDidDisappear:NO]; + } + } +} + +- (UIViewController*)getCachedController:(NSString*)name { + UIViewController *controller = nil; + if(name != nil) { + controller = [viewControllerCache objectForKey:name]; + if(controller == nil) { + controller = [[NSClassFromString(name) alloc] init]; + [viewControllerCache setValue:controller forKey:name]; + } + } + return controller; +} + +- (void)update: (UICompositeViewDescription*) description tabBar:(NSNumber*)tabBar fullscreen:(NSNumber*)fullscreen { + + // Copy view description + UICompositeViewDescription *oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; + + if(description != nil) { + currentViewDescription = description; + + // Animate only with a previous screen + if(oldViewDescription != nil) { + CATransition* trans = [CATransition animation]; + [trans setType:kCATransitionPush]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + [trans setSubtype:kCATransitionFromRight]; + [contentView.layer addAnimation:trans forKey:@"Transition"]; + if((oldViewDescription->stateBarEnabled == true && currentViewDescription->stateBarEnabled == false) || + (oldViewDescription->stateBarEnabled == false && currentViewDescription->stateBarEnabled == true)) { + [stateBarView.layer addAnimation:trans forKey:@"Transition"]; + } + if(oldViewDescription->tabBar != currentViewDescription->tabBar) { + [tabBarView.layer addAnimation:trans forKey:@"Transition"]; + } + } + + if(contentViewController != nil) { + [UICompositeViewController removeSubView: contentViewController]; + } + if(tabBarViewController != nil) { + [UICompositeViewController removeSubView: tabBarViewController]; + } + if(stateBarViewController != nil) { + [UICompositeViewController removeSubView: stateBarViewController]; + } + + stateBarViewController = [self getCachedController:description->stateBar]; + contentViewController = [self getCachedController:description->content]; + tabBarViewController = [self getCachedController:description->tabBar]; + } + + if(currentViewDescription == nil) { + return; + } + + if(tabBar != nil) { + currentViewDescription->tabBarEnabled = [tabBar boolValue]; + } + + if(fullscreen != nil) { + currentViewDescription->fullscreen = [fullscreen boolValue]; + [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription->fullscreen withAnimation:UIStatusBarAnimationSlide ]; + } else { + [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription->fullscreen withAnimation:UIStatusBarAnimationNone]; + } + + // Start animation + if(tabBar != nil || fullscreen != nil) { + [UIView beginAnimations:@"resize" context:nil]; + [UIView setAnimationDuration:0.35]; + [UIView setAnimationBeginsFromCurrentState:TRUE]; + } + + UIView *innerView = contentViewController.view; + + CGRect contentFrame = contentView.frame; + + // Resize StateBar + CGRect stateBarFrame = stateBarView.frame; + if(currentViewDescription->fullscreen) + stateBarFrame.origin.y = -20; + else + stateBarFrame.origin.y = 0; + + if(stateBarViewController != nil && currentViewDescription->stateBarEnabled) { + stateBarView.hidden = false; + [stateBarView setFrame: stateBarFrame]; + contentFrame.origin.y = stateBarFrame.size.height + stateBarFrame.origin.y; + } else { + stateBarView.hidden = true; + contentFrame.origin.y = stateBarFrame.origin.y; + } + + // Resize TabBar + CGRect tabFrame = tabBarView.frame; + if(tabBarViewController != nil && currentViewDescription->tabBarEnabled) { + tabBarView.hidden = false; + tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - 20; + tabFrame.origin.x = [[UIScreen mainScreen] bounds].size.width; + tabFrame.size.height = tabBarViewController.view.frame.size.height; + tabFrame.size.width = tabBarViewController.view.frame.size.width; + tabFrame.origin.y -= tabFrame.size.height; + tabFrame.origin.x -= tabFrame.size.width; + contentFrame.size.height = tabFrame.origin.y - contentFrame.origin.y; + for (UIView *view in tabBarViewController.view.subviews) { + if(view.tag == -1) { + contentFrame.size.height += view.frame.origin.y; + break; + } + } + } else { + tabBarView.hidden = true; + contentFrame.size.height = tabFrame.origin.y + tabFrame.size.height; + if(currentViewDescription->fullscreen) + contentFrame.size.height += 20; + tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - 20; + } + + // Resize innerView + CGRect innerContentFrame = innerView.frame; + innerContentFrame.size = contentFrame.size; + + + // Set frames + [contentView setFrame: contentFrame]; + [innerView setFrame: innerContentFrame]; + [tabBarView setFrame: tabFrame]; + + // Commit animation + if(tabBar != nil || fullscreen != nil) { + [UIView commitAnimations]; + } + + // Change view + if(description != nil) { + [UICompositeViewController addSubView: contentViewController view:contentView]; + [UICompositeViewController addSubView: tabBarViewController view:tabBarView]; + [UICompositeViewController addSubView: stateBarViewController view:stateBarView]; + } + + // Dealloc old view description + if(oldViewDescription != nil) { + [oldViewDescription dealloc]; + } +} + +- (void) changeView:(UICompositeViewDescription *)description { + [self view]; // Force view load + [self update:description tabBar:nil fullscreen:nil]; +} + +- (void) setFullScreen:(BOOL) enabled { + [self update:nil tabBar:nil fullscreen:[NSNumber numberWithBool:enabled]]; +} + +- (void) setToolBarHidden:(BOOL) hidden { + [self update:nil tabBar:[NSNumber numberWithBool:!hidden] fullscreen:nil]; +} + +- (UIViewController *) getCurrentViewController { + return contentViewController; +} @end diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib index 4546f97b3..15ca250eb 100644 --- a/Classes/LinphoneUI/UICompositeViewController.xib +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -98,6 +98,30 @@ 3
+ + + contentView + + + + 17 + + + + stateBarView + + + + 18 + + + + tabBarView + + + + 19 + @@ -162,13 +186,32 @@ - 16 + 19 UICompositeViewController UIViewController + + UIView + UIView + UIView + + + + contentView + UIView + + + stateBarView + UIView + + + tabBarView + UIView + + IBProjectSource ./Classes/UICompositeViewController.h diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 32f84cbe1..c7bd8aa41 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -28,12 +28,21 @@ @synthesize settingsButton; @synthesize chatButton; +- (id)init { + return [super initWithNibName:@"UIMainBar" bundle:[NSBundle mainBundle]]; +} + - (void)viewDidLoad { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveLinphoneMainViewChangeEvent:) name:@"LinphoneMainViewChange" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveLinphoneMainViewChangeEvent:) name:@"LinphoneMainViewChange" object:nil]; + [self update:[[LinphoneManager instance] currentView]]; } - (void)receiveLinphoneMainViewChangeEvent: (NSNotification*) notif { PhoneView view = [[notif.userInfo objectForKey: @"view"] intValue]; + [self update:view]; +} + +- (void)update:(PhoneView) view { if(view == PhoneView_History) { historyButton.selected = TRUE; } else { diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index 524f1366f..2600765b6 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -30,6 +30,10 @@ NSTimer *callQualityTimer; +- (id)init { + return [super initWithNibName:@"UIStateBar" bundle:[NSBundle mainBundle]]; +} + - (void)viewDidLoad { [super viewDidLoad]; @@ -45,7 +49,10 @@ NSTimer *callQualityTimer; repeats:YES]; // Update to default state - [self proxyConfigUpdate: NULL]; + LinphoneProxyConfig* config = NULL; + if([LinphoneManager isLcReady]) + linphone_core_get_default_proxy([LinphoneManager getLc], &config); + [self proxyConfigUpdate: config]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index c02e8ed8d..c9951908b 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -21,48 +21,21 @@ #import "LinphoneManager.h" #import "CallDelegate.h" - -@interface ViewsDescription: NSObject{ -@public - UIViewController *content; - UIViewController *tabBar; - bool tabBarEnabled; - bool statusEnabled; - bool fullscreen; - PhoneView viewId; -} --(id) copy; -@end +#import "UICompositeViewController.h" @interface PhoneMainView : UIViewController { - UIView *stateBarView; - UIView *contentView; - UIView *tabBarView; + UICompositeViewController *mainViewController; + UICompositeViewController *modalViewController; @private NSMutableDictionary *viewDescriptions; - NSArray *views; - - UIViewController *stateBarController; - - UIViewController *callTabBarController; - UIViewController *mainTabBarController; - UIViewController *incomingCallTabBarController; - ViewsDescription *currentViewDescription; + PhoneView currentPhoneView; UIActionSheet *incomingCallActionSheet; UIActionSheet *batteryActionSheet; } -@property (nonatomic, retain) IBOutlet UIView* stateBarView; -@property (nonatomic, retain) IBOutlet UIView* contentView; -@property (nonatomic, retain) IBOutlet UIView* tabBarView; +@property (nonatomic, retain) IBOutlet UICompositeViewController *mainViewController; +@property (nonatomic, retain) IBOutlet UICompositeViewController *modalViewController; -@property (nonatomic, retain) IBOutlet UIViewController* stateBarController; - -@property (nonatomic, retain) IBOutlet UIViewController* callTabBarController; -@property (nonatomic, retain) IBOutlet UIViewController* mainTabBarController; -@property (nonatomic, retain) IBOutlet UIViewController* incomingCallTabBarController; - --(void) changeView: (NSNotification*) notif; @end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 93a8736e8..e286a2786 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -30,313 +30,163 @@ #import "AbstractCall.h" -@implementation ViewsDescription - -- (id)copy { - ViewsDescription *copy = [ViewsDescription alloc]; - copy->content = self->content; - copy->tabBar = self->tabBar; - copy->tabBarEnabled = self->tabBarEnabled; - copy->statusEnabled = self->statusEnabled; - copy->fullscreen = self->fullscreen; - copy->viewId = self->viewId; - return copy; -} -@end - @implementation PhoneMainView -@synthesize stateBarView; -@synthesize contentView; -@synthesize tabBarView; +@synthesize mainViewController; +@synthesize modalViewController; -@synthesize stateBarController; - -@synthesize callTabBarController; -@synthesize mainTabBarController; -@synthesize incomingCallTabBarController; - -+ (void)addSubView:(UIViewController*)controller view:(UIView*)view { - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [controller viewWillAppear:NO]; - } - [view addSubview: controller.view]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [controller viewDidAppear:NO]; - } +- (void)myInit { + self->currentPhoneView = -1; } -+ (void)removeSubView:(UIViewController*)controller { - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [controller viewWillDisappear:NO]; - } - [controller.view removeFromSuperview]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [controller viewDidDisappear:NO]; +- (id)init { + self = [super init]; + if (self) { + [self myInit]; } + return self; } +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self myInit]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self myInit]; + } + return self; +} + - (void)changeView: (NSNotification*) notif { NSNumber *viewId = [notif.userInfo objectForKey: @"view"]; NSNumber *tabBar = [notif.userInfo objectForKey: @"tabBar"]; NSNumber *fullscreen = [notif.userInfo objectForKey: @"fullscreen"]; - // Copy view description - ViewsDescription *oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; - // Check view change if(viewId != nil) { PhoneView view = [viewId intValue]; - ViewsDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; + UICompositeViewDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; if(description == nil) return; - description->viewId = view; // Auto-set viewId - if(currentViewDescription == nil || description->viewId != currentViewDescription->viewId) { - if(currentViewDescription != nil) - [currentViewDescription dealloc]; - currentViewDescription = [description copy]; - } else { - viewId = nil; - } - } - - if(currentViewDescription == nil) { - return; + if(view != currentPhoneView) { + [mainViewController changeView:description]; + currentPhoneView = view; + } } if(tabBar != nil) { - currentViewDescription->tabBarEnabled = [tabBar boolValue]; + [mainViewController setToolBarHidden:![tabBar boolValue]]; } if(fullscreen != nil) { - currentViewDescription->fullscreen = [fullscreen boolValue]; - [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription->fullscreen withAnimation:UIStatusBarAnimationSlide ]; - } else { - [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription->fullscreen withAnimation:UIStatusBarAnimationNone]; - } - - // View Transitions - if(viewId != nil) { - if(oldViewDescription != nil) { - CATransition* trans = [CATransition animation]; - [trans setType:kCATransitionPush]; - [trans setDuration:0.35]; - [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; - [trans setSubtype:kCATransitionFromRight]; - [contentView.layer addAnimation:trans forKey:@"Transition"]; - if((oldViewDescription->statusEnabled == true && currentViewDescription->statusEnabled == false) || - (oldViewDescription->statusEnabled == false && currentViewDescription->statusEnabled == true)) { - [stateBarView.layer addAnimation:trans forKey:@"Transition"]; - } - if(oldViewDescription->tabBar != currentViewDescription->tabBar) { - [tabBarView.layer addAnimation:trans forKey:@"Transition"]; - } - [PhoneMainView removeSubView: oldViewDescription->content]; - [PhoneMainView removeSubView: oldViewDescription->tabBar]; - } - } - - // Start animation - if(tabBar != nil || fullscreen != nil) { - [UIView beginAnimations:@"resize" context:nil]; - [UIView setAnimationDuration:0.35]; - [UIView setAnimationBeginsFromCurrentState:TRUE]; - } - - UIView *innerView = currentViewDescription->content.view; - - CGRect contentFrame = contentView.frame; - - // Resize StateBar - CGRect stateBarFrame = stateBarView.frame; - if(currentViewDescription->fullscreen) - stateBarFrame.origin.y = -20; - else - stateBarFrame.origin.y = 0; - - if(currentViewDescription->statusEnabled) { - stateBarView.hidden = false; - [stateBarView setFrame: stateBarFrame]; - contentFrame.origin.y = stateBarFrame.size.height + stateBarFrame.origin.y; - } else { - stateBarView.hidden = true; - contentFrame.origin.y = stateBarFrame.origin.y; - } - - // Resize TabBar - CGRect tabFrame = tabBarView.frame; - if(currentViewDescription->tabBar != nil && currentViewDescription->tabBarEnabled) { - tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - 20; - tabFrame.origin.x = [[UIScreen mainScreen] bounds].size.width; - tabFrame.size.height = currentViewDescription->tabBar.view.frame.size.height; - tabFrame.size.width = currentViewDescription->tabBar.view.frame.size.width; - tabFrame.origin.y -= tabFrame.size.height; - tabFrame.origin.x -= tabFrame.size.width; - contentFrame.size.height = tabFrame.origin.y - contentFrame.origin.y; - for (UIView *view in currentViewDescription->tabBar.view.subviews) { - if(view.tag == -1) { - contentFrame.size.height += view.frame.origin.y; - break; - } - } - } else { - contentFrame.size.height = tabFrame.origin.y + tabFrame.size.height; - if(currentViewDescription->fullscreen) - contentFrame.size.height += 20; - tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - 20; - } - - // Resize innerView - CGRect innerContentFrame = innerView.frame; - innerContentFrame.size = contentFrame.size; - - - // Set frames - [contentView setFrame: contentFrame]; - [innerView setFrame: innerContentFrame]; - [tabBarView setFrame: tabFrame]; - - // Commit animation - if(tabBar != nil || fullscreen != nil) { - [UIView commitAnimations]; - } - - // Change view - if(viewId != nil) { - [PhoneMainView addSubView: currentViewDescription->content view:contentView]; - [PhoneMainView addSubView: currentViewDescription->tabBar view:tabBarView]; + [mainViewController setFullScreen:[fullscreen boolValue]]; } // Call abstractCall NSDictionary *dict = [notif.userInfo objectForKey: @"args"]; if(dict != nil) - [AbstractCall call:currentViewDescription->content dict:dict]; - - // Dealloc old view description - if(oldViewDescription != nil) { - [oldViewDescription dealloc]; - } + [AbstractCall call:[mainViewController getCurrentViewController] dict:dict]; } - (void)viewDidLoad { [super viewDidLoad]; - UIView *dumb; + + [[self view] addSubview: mainViewController.view]; // Init view descriptions viewDescriptions = [[NSMutableDictionary alloc] init]; - // Load Bars - dumb = mainTabBarController.view; - - // Status Bar - [stateBarView addSubview: stateBarController.view]; - // // Main View // - DialerViewController* myDialerViewController = [[DialerViewController alloc] - initWithNibName:@"DialerViewController" - bundle:[NSBundle mainBundle]]; - //[myPhoneViewController loadView]; - ViewsDescription *dialerDescription = [ViewsDescription alloc]; - dialerDescription->content = myDialerViewController; - dialerDescription->tabBar = mainTabBarController; - dialerDescription->statusEnabled = true; - dialerDescription->fullscreen = false; + UICompositeViewDescription *dialerDescription = [UICompositeViewDescription alloc]; + dialerDescription->content = @"DialerViewController"; + dialerDescription->tabBar = @"UIMainBar"; dialerDescription->tabBarEnabled = true; + dialerDescription->stateBar = @"UIStateBar"; + dialerDescription->stateBarEnabled = true; + dialerDescription->fullscreen = false; [viewDescriptions setObject:dialerDescription forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; // // Contacts View // - ContactsViewController* myContactsController = [[ContactsViewController alloc] - initWithNibName:@"ContactsViewController" - bundle:[NSBundle mainBundle]]; - //[myContactsController loadView]; - ViewsDescription *contactsDescription = [ViewsDescription alloc]; - contactsDescription->content = myContactsController; - contactsDescription->tabBar = mainTabBarController; - contactsDescription->statusEnabled = false; - contactsDescription->fullscreen = false; + UICompositeViewDescription *contactsDescription = [UICompositeViewDescription alloc]; + contactsDescription->content = @"ContactsViewController"; + contactsDescription->tabBar = @"UIMainBar"; contactsDescription->tabBarEnabled = true; + contactsDescription->stateBar = nil; + contactsDescription->stateBarEnabled = false; + contactsDescription->fullscreen = false; [viewDescriptions setObject:contactsDescription forKey:[NSNumber numberWithInt: PhoneView_Contacts]]; // // Call History View // - HistoryViewController* myHistoryController = [[HistoryViewController alloc] - initWithNibName:@"HistoryViewController" - bundle:[NSBundle mainBundle]]; - //[myHistoryController loadView]; - ViewsDescription *historyDescription = [ViewsDescription alloc]; - historyDescription->content = myHistoryController; - historyDescription->tabBar = mainTabBarController; - historyDescription->statusEnabled = false; - historyDescription->fullscreen = false; + UICompositeViewDescription *historyDescription = [UICompositeViewDescription alloc]; + historyDescription->content = @"HistoryViewController"; + historyDescription->tabBar = @"UIMainBar"; historyDescription->tabBarEnabled = true; + historyDescription->stateBar = nil; + historyDescription->stateBarEnabled = false; + historyDescription->fullscreen = false; [viewDescriptions setObject:historyDescription forKey:[NSNumber numberWithInt: PhoneView_History]]; // // IncomingCall View // - IncomingCallViewController* myIncomingCallController = [[IncomingCallViewController alloc] - initWithNibName:@"IncomingCallViewController" - bundle:[NSBundle mainBundle]]; - //[myChatViewController loadView]; - ViewsDescription *incomingCallDescription = [ViewsDescription alloc]; - incomingCallDescription->content = myIncomingCallController; - incomingCallDescription->tabBar = mainTabBarController; - incomingCallDescription->statusEnabled = true; + UICompositeViewDescription *incomingCallDescription = [UICompositeViewDescription alloc]; + incomingCallDescription->content = @"IncomingCallViewController"; + incomingCallDescription->tabBar = nil; + incomingCallDescription->tabBarEnabled = false; + incomingCallDescription->stateBar = @"UIStateBar"; + incomingCallDescription->stateBarEnabled = true; incomingCallDescription->fullscreen = false; - incomingCallDescription->tabBarEnabled = true; - [viewDescriptions setObject:incomingCallDescription forKey:[NSNumber numberWithInt: PhoneView_Chat]]; + [viewDescriptions setObject:incomingCallDescription forKey:[NSNumber numberWithInt: PhoneView_IncomingCall]]; // // InCall View // - InCallViewController* myInCallController = [[InCallViewController alloc] - initWithNibName:@"InCallViewController" - bundle:[NSBundle mainBundle]]; - //[myInCallController loadView]; - ViewsDescription *inCallDescription = [ViewsDescription alloc]; - inCallDescription->content = myInCallController; - inCallDescription->tabBar = nil; - inCallDescription->statusEnabled = true; + UICompositeViewDescription *inCallDescription = [UICompositeViewDescription alloc]; + inCallDescription->content = @"InCallViewController"; + inCallDescription->tabBar = @"UICallBar"; + inCallDescription->tabBarEnabled = true; + inCallDescription->stateBar = @"UIStateBar"; + inCallDescription->stateBarEnabled = true; inCallDescription->fullscreen = false; - inCallDescription->tabBarEnabled = false; [viewDescriptions setObject:inCallDescription forKey:[NSNumber numberWithInt: PhoneView_InCall]]; // // Settings View // - SettingsViewController* mySettingsViewController = [[SettingsViewController alloc] - initWithNibName:@"SettingsViewController" - bundle:[NSBundle mainBundle]]; - //[mySettingsViewController loadView]; - ViewsDescription *settingsDescription = [ViewsDescription alloc]; - settingsDescription->content = mySettingsViewController; - settingsDescription->tabBar = mainTabBarController; - settingsDescription->statusEnabled = false; - settingsDescription->fullscreen = false; + UICompositeViewDescription *settingsDescription = [UICompositeViewDescription alloc]; + settingsDescription->content = @"SettingsViewController"; + settingsDescription->tabBar = @"UIMainBar"; settingsDescription->tabBarEnabled = true; + settingsDescription->stateBar = nil; + settingsDescription->stateBarEnabled = false; + settingsDescription->fullscreen = false; [viewDescriptions setObject:settingsDescription forKey:[NSNumber numberWithInt: PhoneView_Settings]]; // // Chat View // - ChatViewController* myChatViewController = [[ChatViewController alloc] - initWithNibName:@"ChatViewController" - bundle:[NSBundle mainBundle]]; - //[myChatViewController loadView]; - ViewsDescription *chatDescription = [ViewsDescription alloc]; - chatDescription->content = myChatViewController; - chatDescription->tabBar = mainTabBarController; - chatDescription->statusEnabled = false; - chatDescription->fullscreen = false; + UICompositeViewDescription *chatDescription = [UICompositeViewDescription alloc]; + chatDescription->content = @"ChatViewController"; + chatDescription->tabBar = @"UIMainBar"; chatDescription->tabBarEnabled = true; + chatDescription->stateBar = nil; + chatDescription->stateBarEnabled = false; + chatDescription->fullscreen = false; [viewDescriptions setObject:chatDescription forKey:[NSNumber numberWithInt: PhoneView_Chat]]; // Set observers @@ -395,7 +245,7 @@ } } -- (void)callUpdate: (NSNotification*) notif { +- (void)callUpdate:(NSNotification*) notif { LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; NSString *message = [notif.userInfo objectForKey: @"message"]; @@ -521,6 +371,7 @@ - (void)displayIncomingCall:(LinphoneCall*) call{ +#if 0 const char* userNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); NSString* userName = userNameChars?[[[NSString alloc] initWithUTF8String:userNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); const char* displayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); @@ -567,6 +418,10 @@ } [incomingCallActionSheet release]; } +#endif + //UICompositeViewController *controller = [[UICompositeViewController alloc] initWithNibName:@"UICompositeViewController" bundle:[NSBundle mainBundle]]; + [modalViewController changeView:[viewDescriptions objectForKey:[NSNumber numberWithInt:PhoneView_IncomingCall]]]; + [self presentModalViewController:modalViewController animated:false]; } - (void)batteryLevelChanged: (NSNotification*) notif { @@ -637,10 +492,8 @@ - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [viewDescriptions removeAllObjects]; [viewDescriptions release]; - [stateBarView release]; - [stateBarController release]; - [mainTabBarController release]; [super dealloc]; } diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index f1857e52a..0976956ee 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -38,53 +38,10 @@ 292 - - YES - - - 314 - {{0, 23}, {320, 380}} - - - - _NS:9 - YES - IBCocoaTouchFramework - - - - 274 - {320, 23} - - - - _NS:9 - - 3 - MQA - - YES - IBCocoaTouchFramework - - - - 280 - {{0, 400}, {320, 60}} - - - _NS:9 - - 3 - MCAwAA - - YES - IBCocoaTouchFramework - - {320, 460} - + _NS:9 3 @@ -132,7 +89,10 @@ IBCocoaTouchFramework 0 0 - + + 3 + MQA + 1 MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA @@ -165,6 +125,7 @@ {{192, 0}, {128, 72}} + _NS:9 NO @@ -236,9 +197,9 @@ NO IBCocoaTouchFramework - + NO - UIMainBar + UICompositeViewController 1 @@ -247,20 +208,9 @@ IBCocoaTouchFramework NO - + NO - UICallBar - - - 1 - 1 - - IBCocoaTouchFramework - NO - - - NO - UIStateBar + UICompositeViewController 1 @@ -283,51 +233,19 @@ - tabBarView + mainViewController - + - 160 + 209 - mainTabBarController + modalViewController - + - 192 - - - - callTabBarController - - - - 196 - - - - stateBarController - - - - 201 - - - - stateBarView - - - - 202 - - - - contentView - - - - 159 + 211 @@ -388,31 +306,10 @@ YES - - - root - - 135 - - - YES - - - tabBar - - - 53 - - - YES - - - content - 169 @@ -420,28 +317,16 @@ mask - 175 - - - stateBar + 208 + + + mainViewController - 178 - + 210 + - mainTabBarController - - - 190 - - - stateBarController - - - 194 - - - callTabBarController + modalViewController @@ -460,17 +345,12 @@ 131.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 133.IBPluginDependency 133.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 135.IBPluginDependency 152.IBPluginDependency 169.IBPluginDependency - 175.IBPluginDependency - 178.CustomClassName - 178.IBPluginDependency - 190.CustomClassName - 190.IBPluginDependency - 194.CustomClassName - 194.IBPluginDependency - 53.IBPluginDependency + 208.CustomClassName + 208.IBPluginDependency + 210.CustomClassName + 210.IBPluginDependency YES @@ -487,14 +367,9 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICompositeViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMainBar - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIStateBar - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICallBar - com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UICompositeViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -510,7 +385,7 @@ - 207 + 211 @@ -522,21 +397,53 @@ YES YES - callTabBarController + mainViewController + modalViewController + + + YES + UICompositeViewController + UICompositeViewController + + + + YES + + YES + mainViewController + modalViewController + + + YES + + mainViewController + UICompositeViewController + + + modalViewController + UICompositeViewController + + + + + IBProjectSource + ./Classes/PhoneMainView.h + + + + UICompositeViewController + UIViewController + + YES + + YES contentView - incomingCallTabBarController - mainTabBarController - stateBarController stateBarView tabBarView YES - UIViewController UIView - UIViewController - UIViewController - UIViewController UIView UIView @@ -545,36 +452,16 @@ YES YES - callTabBarController contentView - incomingCallTabBarController - mainTabBarController - stateBarController stateBarView tabBarView YES - - callTabBarController - UIViewController - contentView UIView - - incomingCallTabBarController - UIViewController - - - mainTabBarController - UIViewController - - - stateBarController - UIViewController - stateBarView UIView @@ -587,273 +474,7 @@ IBProjectSource - ./Classes/PhoneMainView.h - - - - UICallBar - UIViewController - - YES - - YES - microButton - pauseButton - speakerButton - videoButton - - - YES - UIMicroButton - UIPauseButton - UISpeakerButton - UIVideoButton - - - - YES - - YES - microButton - pauseButton - speakerButton - videoButton - - - YES - - microButton - UIMicroButton - - - pauseButton - UIPauseButton - - - speakerButton - UISpeakerButton - - - videoButton - UIVideoButton - - - - - IBProjectSource - ./Classes/UICallBar.h - - - - UIMainBar - UIViewController - - YES - - YES - onChatClick: - onContactsClick: - onDialerClick: - onHistoryClick: - onSettingsClick: - - - YES - id - id - id - id - id - - - - YES - - YES - onChatClick: - onContactsClick: - onDialerClick: - onHistoryClick: - onSettingsClick: - - - YES - - onChatClick: - id - - - onContactsClick: - id - - - onDialerClick: - id - - - onHistoryClick: - id - - - onSettingsClick: - id - - - - - YES - - YES - chatButton - contactsButton - dialerButton - historyButton - settingsButton - - - YES - UIButton - UIButton - UIButton - UIButton - UIButton - - - - YES - - YES - chatButton - contactsButton - dialerButton - historyButton - settingsButton - - - YES - - chatButton - UIButton - - - contactsButton - UIButton - - - dialerButton - UIButton - - - historyButton - UIButton - - - settingsButton - UIButton - - - - - IBProjectSource - ./Classes/UIMainBar.h - - - - UIMicroButton - UIToggleButton - - IBProjectSource - ./Classes/UIMicroButton.h - - - - UIPauseButton - UIToggleButton - - IBProjectSource - ./Classes/UIPauseButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - ./Classes/UISpeakerButton.h - - - - UIStateBar - UIViewController - - YES - - YES - callQualityImage - registrationStateImage - registrationStateLabel - - - YES - UIImageView - UIImageView - UILabel - - - - YES - - YES - callQualityImage - registrationStateImage - registrationStateLabel - - - YES - - callQualityImage - UIImageView - - - registrationStateImage - UIImageView - - - registrationStateLabel - UILabel - - - - - IBProjectSource - ./Classes/UIStateBar.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - UIVideoButton - UIToggleButton - - videoUpdateIndicator - UIActivityIndicatorView - - - videoUpdateIndicator - - videoUpdateIndicator - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/UIVideoButton.h + ./Classes/UICompositeViewController.h diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 8b4a8da4a..099c208c1 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -25,6 +25,10 @@ @synthesize settingsController; @synthesize navigationController; +- (id)init { + return [super initWithNibName:@"SettingsViewController" bundle:[NSBundle mainBundle]]; +} + - (void)viewDidLoad { settingsController.delegate = [LinphoneManager instance]; settingsController.settingsReaderDelegate = self; diff --git a/Resources/avatar-inconnu.png b/Resources/avatar-inconnu.png new file mode 100644 index 0000000000000000000000000000000000000000..1d1a7f705c68d5d057670c33bf940419752f7cf1 GIT binary patch literal 18862 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 EU(80DIRF3v literal 0 HcmV?d00001 diff --git a/Resources/avatar-small.png b/Resources/avatar-small.png new file mode 100644 index 0000000000000000000000000000000000000000..143da15124b4ce77cab932c6eb6d2ff2a9807ac0 GIT binary patch literal 9001 zcmbVyWmr`2`Yzo$wA9du)DS~UclUtA5JTwDL)XyVC@C#144|k;OLt0_G?G#xpa=Kf zzkSY!|MmZH*0t8P-sfHSb3eV-mlda{qe@KhhyV=@jaXex$>8B0@%O^RK|@1d$jv@| z5a;%DrKro0OBrGB(CdLaC5(Ehf2nq>+g!n*WlEOlgf`Y*R9IOx4JnbDM z4U|;=W9vbZVRb?v+$9ABe0_cSeTDhmJRJo<5)u-BIfR7x9uRz9{;micKR#D4wtpCu zU|x2f&h7|jH&@_aMjKl_fq^_s)Ls4wtN^W-E zE-+Vwx{?g*!xMgcXM0IOkhmZSBqky#CL{{wG}p zF(FYEF(Dywu&4wGqzn=l7JN`u0LzOhC@4q>sr;j>?&^iGakYc}W7qk?t`JBF1Qr%j z{$F(^6+K}#2sck7H#hh{9iZprhH&$8a&reN8j1q7ZS0&~|H^;M^Y3VtV4luCFnbkG zHy7Z)@+;~5KiC%*5dtfUh>8dc|2uARMUaS!khrL*_(LX)-tUZTr2Kf-zJ|dP>p>ey21doGy!FGopG^C*;=WQeFv`z?V)1&2zGnL`*`@T#3>BbVvtVIPB6XB-4^go5krwpH1a7lg z!`w81HbC_o*duawXv6%MAA2IMGA_7nkGE|jJ>;4Vlm#-au;N}Ew_rehfAzn1d!wLJA92Ap8c{ zEy~JrCeHiJ-ZcCgqNb=RuXV!n*mgqb>YkzI^0F-V2zA!fCGz){^_1TjDpP9|xA&bPta|%GV4lwKmyU$s}$O4z3R!+A9w69a~$qqclvL zCcrZvtw#%bwW5J3PZX7bs^5r$aQjtIRy#eu7`whIFQTLj!X+=1TN2OF78*RBS%|tH zclFe1H)}Pw@`~1LzLKC_@JWrGdRzL$?suao-okGz4M68=I0jR>z3+rwr=f(Zyx3?9 z)+E}rZPJJ3+G8q(+f!P_;7`>WZOvKF*Xo!tkzdc7=a5*!xrHs%H1Yn1&xcI|`}+o~ zw$4KQoSU1Cc%upuyA#BdJ7guaElLh!5c z5XMh&>TS*qrb_x8)C+VQ4Uk?woPhbK-b;B4$1aE(6$QMu`|0?vh>O2#p>K5Dh&S5qR$JdtmI-*FUR#bxSW(TCx9;j@Q}kGXrmod-4c z%HNJzms4X2Rqy6?V%WzJ2{`!f!20A(5H2YBQ%gEGUtR9dYD6XNC7Y?Uzm(bxL>l*F z%S!UEMz2j0&%N94!b26yVIHz)@f6)=&Q3MO(YKv*c}I%VVbI}Ox>~U;V#ZgJdEENX z`wcQ0CH=f(WVqx|z2AVx`wogfY7{{Z-4zVgJ$4cuGPi!Ad2d{6M)0`zfdI>a;{{H& zq^cCo4Sc6{BC7oFI9INT6qGTlY3(XyF{=IU9>Kfqd4AiZdvO?Imr6HtnK0n|{pK|M zu@ML*jK4TqR6CTM&EMeiwUFNwRj+Tzc3#AaxluV)T#S8$Kh8AbV}|tn#4JAHcm*&6 zCmGY#2UQvtE1p_EDJJDtjR&Vl^L}q^%>L2ZE=>;>8IViiyVQ{KQ)j8RVA_b+%MVY# znhTLnqNIQKhV8N2q4WoaAk&I^Uc&L)L-!MaSd0+Sl4LjyfQosjSx!mRlH9 z5YQD7BS$8p_A25V={N^rZbVlES*zbERIOVMsL%S+zs<(4UE6cXaCOoblS! zYLWX%RYgwcD*z>#mB_7V-7h)m=HJP4cT6^7N>LU$krxarxQ6q1XP7^3wqE@7_Vy>A z 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 literal 0 HcmV?d00001 diff --git a/Resources/champ-titre-incoming.png b/Resources/champ-titre-incoming.png index 109575547e1847608b04d318f97c664d3b4b9d67..205064389172550cbd4a7afef8f7169425ec6ca0 100644 GIT binary patch literal 13492 zcmbt*WmFtXyYArb?u1~$gG+D=E+LTM1PJc#ZXrMj5Zq;O2=0Ru++}cgcjtEY{?1wF zto!5sxHUapy{fCLs^6-5_2~#zWmybVQdAHKgdz7{N*x4(^#`uQkP(4%sMc;3kRg6i zkd*?x{QYIMg5!V^6#Ms|oj@QoyuW`KP)ZsxP>AF#rzDNEh)9CTNUSpBUk?INgXE;d zHQeWqmfYMarqe}E-E2=@fY3apOLgWRi3R!H+`&4PO0T4B!e>#YspAf+*d>6=_gMa z0%q`TnzqD)~?G2I~L3 zy(>X)495XHKYrVZ{&P8d-7?S|NCknlbykUeRTRH7GB1WmVY);|7<$G z&sTp>i`#u;f{7S}4F7og;B)%med^J=dvYKx>%}ant>ZrZ_q||NKNU=v8@YLA&Fp8Z zmt<>NNs@>~A)Hfr$NQ4?^l8R8LQ>y9ayXc6NOD@^o-wG&D3{K>WY3M$GFv z*7`$bO2Rr!LOaYuwR1ysvx61s!xZU*sFB0%dZWLBe0*L@E}AgD+K5jYqVRFQ&It!fJAs__D;sfp3g z2k-zg!?pkJ{^Hh|kd9Qcgpk^WP__(8)(FLM`-B4zg4I^$Isf*bTCQT+tuUWGq$``N z44oRX#&@Y>8VzBx*-lpp+W8n5LUFOwWjq>g?*8 zQ&vWCC3|qT7o9#=XCqW+^K$w9rfAyo_u)W(5}zBUyn;e(`c{BuNeDIa?(uQ&?~Oi( zQ$qw^zbXW)*)mx-H@+9xUVv!d8lBksT0ETI+U#p=Zku#j)=K27XV=#g*&H45FFBGv zT%YtEFPYA@n4(2fi8|Pd@{fo=(bMFNzuw#=ii+S>i_rK+k~k!*ssHNvA@(HF_vSQi zG~Cx#0O}ug(iUAF%?lEr($u22wtIPoYw+FLH;=R9ApTQ$S1-b*I>gFIIpbl@P5SP( z{i)%hT*&D6CrCc`c`($vSJL2x$@b;3Otoa1q-=6wArb;P zrSZL*vKyP97c7061|t_d`HF528HD%t4rSI34V)WZ$dYw!2+)%jKZbd={-k(ldwOtK z!YB!Sa&I@ENMv|VCh zDw&zl)b-vYzx8gz$(&5q?{liPp~>O8rxDe}?6&^hW%8Sjccs@t1nTcn0r3xb)(<}R z>bLX#P@vdboG`mF&GW*ayW!~Wh`W8)qJP_>f9dSjzH=qB!`|>kB*Xntts!m1=meZa zO(lB!d}Dti?6whM@Qg@hw@h>IW1xcNuex1b;l|MD{UH{f%aYcEro`6P1K`s}yR23|xphLWp`or8m%+$jjX* z82uTyjrM)s_z~@be(?c;C-ZkL4cp%Z%E^IbT4miOR{Ddt{2HW613oubm+d=bVk%l@ z12!!BHP|u2_gwrG(QAI6f4=8%8`(+{+Hv$gDlzC#q4FRo+(DHdR-@0ccz z^kTgnHCHa!ye?lcci96Uz)6+~pbzTp^Td|!6Tm&`3}#jSM6 zN;S!H4_ns@TK zRzrhVM6S>tkM~5^dbIRabVND~vB9JHe<;EU13O8j_F9ZM@RYT@RI8!dp1+`ex0L1+UAktz!Prs9^6y>8DlFC;iV zy@V!?+?mBk%{&;@k0);rr6V$u-|OCO>X8n)-FSJ%y!fRbc|3yYTvHp~7LU$e8Q+Od z>G+0wrT`tc2p?BGkgWW3DAGx*f(FD#gsRTB2``n`FR)Cfe$8BuReNDRYxZExe(r5{ z9=sN-L8vquQM(}r2;}JKc-p-3h&rgbm{O&j$JDH2+xBM9!S8rG^{-gO5Cy%vNvGLF zMIb+BDV(0Kfo6RZ78-Xfe&cP76e@UK%7S&=d_(zoeDlJ!S%p}Qz#ArH8-120a4 z%J?Y4j)-_azA%XqB@+oO=T3;v4q49CvQ9Im=p8h-u&fMkSj(bjEX8{F@FLrK<<((D zX%AJV7lM{SBXUWF0VM`}^#xMuH`o9WAUSWn_0cbHax3bQO0>$`>nZOU#_MLwynvm$ z7Gu9ICFz`@Y38qO7tF`lvo?>%ulsuAvS5{Zn;X}ws(V@h(@ z0%xvrPM`4n?8}%S4-%7ec>7DwhhjfE-CrBe(<)LvKU6mxJHeP5Tdce<;IOpA-^S1o zgc?F)dmy3cPZI>)_LnF^MPQIyhNIB2&HlS_hr|r1?jJlkOPM2_5kKrgHKKSu_4}_W zkl{JTR>Gd!{_+~}vgzET%QrRLJT%y+8`lfAJvWe>3Vo!{ z`C3xVFdX${bj~93bRQV&g%1%nUQBD1pDWjkdy<5mN4Ln3Z|L_GPTB$h379 z?03hETF$l?D(A=>b~2hBM)m4DvS#5x?*#7T{xSzHQjAY6=0+371~v9DrJBsz+R8B# z3=_~tMH2>Y8q(K*4zdeh%9oNgO+t-@gdm} zWEZX(M#c+95)68~=7y>Diyw|y>Q=bR7noG>3boZ2pC|EgL6xU_zT3Mv2&&Iw9|c&0 zCIGsPjPR9|Rl^bkAC>N!QY7^C%f&m})-`!WrjekoEgYnDUq5a*^Qq#qX`~Yzo148C zFT|I-xJ>%P4@_|#Tm1ntB}A+*>pEoPlP6v49@V)Q$IS3L`_AW8`v*rI{j?Paf0X4$juetg>gxvNcLx#r5M=2?Jb0OHaU{CjCfgki%~ze|^F9r_=a8 z`Wku`ZU2>g2F&GyH!<-pm73n$q%wO?$LvWmqnb~-I|$?oT_kXQXKST!nVRRS+j)Lh})-SM4nR zlO1V|{fDD~=1K#u%F7B@E?!Q0&!|+u85K@cI{IoOSfe;w-Acml_q#7%-Nb4yhtK9 z>&))wS`fL$Xbt+X!8o|qar8!A%pyg~Run|g;}g}1@m-+8tGGxz*Yl1-7=tD!I*qp- z=S>(?YiIWDBq}rsV!6`{7`A-2D`>gn{*eXB$a+X2um%lVo{wvGFYi6UKLCVx0PYc4z&oqA*p|zrm z6gSOlf}J~K{wj_^z)ZY-KIQ{f^4nLonMV}q?!Lo9z#5m;xIVF7480!dpzheHF_JJ+ zJ~vK$4=lG>4!?_EHs)4TX%(}UZ(E%u%t0skv(D;jY~1@D?TsbPNEqPe5ldkOO^Ck7 zQ+m9MbhgGT1_(UB7|Kg^lgeBRHTG+E2)rorIZ0{+g%8=V${Rfe&My!v)I9DeAGaZX ziJ#NockN)U*1Dv=ij~h+FEXl{Up?P!w{*k!%mDDcs`JQIdou=M2ug^6y%6FHy)tk8 z`qQuw-hc*8Y!+X6kkUX^Tz}>D21OTBb0m94R0Lg+0im}DRoi)OnAE7%FXfcrq7Mb9 zcS(9en{k`FEWm!^o!WAT_Q+K!=v+;IRv3G_5 z%z#ALjOUt&B$)n6Lv|A0tiLxGpB5LeAa(1lW6hu0Gw*p|1KQ1H8-B=3e%5ZD6gkTwXRt7$Dauo?;xbxd(L0P)9$_IK`-$Tov-(avY$-f= z&8}gv1nC{fsa$B9Uiac)A)$HI#tL*+Fljbl(hq}oD935u#8=vzrj1`XKeh7fdcl5; z!~kqm4xJ;(>m((T_^X=;+i;)~$X~5O+V^@@=MMi6d@Pzarnxk+##tQFE4 zW@$g&sgRAzcSW$-U^HbVo!s%BdU+u|Dc{L-$7nSBb%W<#;BL#$N9)1_)XQtEEXNhw z!^LwWXJnGdp6?7VAIN_sQWbWZw3OGzr+x5-%F*HurErSZ94oLxaGzd24kk+PR5Yx4KJKXa{;I3z!@-e;Yj=9lsFE*} zo6qGU1>HX(-@^TQ{DkmVl;2MH+s|f(!$3M*U8q8`;x~&p)U$cA6T`vY8>ztxT?e?$s*V#%rD5$I#o>0w zGyYx6x6WPn&#+FN=~Sd}oM0?d14XfN5-VmBi>tXyKiA4{18&gjlG}>p9XOMg1=>Gq^I$M!5a@zfqnIu?2O5fteC-zeDUyfiu71iAA8893GzMvlbZvrHZ%BMQlX8A zoNXPXY!|G^M0UM%)wZOwRue8nLvCjs{gq{kltNL{%N%DU3Rk%}3M0W7f7RmLqgfXe-@8%X=?w6kmY|2e#hCf+KmF)r*%f;?s z&UCQ8#uIL=E~k%Q(Y%yJlRZ=%ihaC4A3fCt85(AZHc^4h->GG~>b@&dM9f!DP}TaX znE6d0aYT7Oo(df?cZV*8YI$cZ$V=jihlMu|5#-XR{9QZ!{q!3qn{;fDmM!HaqVa$% z!Fo)i_h?4mY(Ysi#c}}5S)H)JxL|DgVW7hc9dq+%hZtP%8VlwY5q9d}fvqdPW&EdS zC%y{GXEW6%LAQcQ=prwJavFbn2RD5N%;BNA(!wJVI%2j)aaik;&4Osp{f#L0@WV00 zn~bRz5it${HQ(`1*j-SE;d&GkauUY6{&xmt%;*@fDr5FESr%VPn9oo)pXTMa>qx_0 z88XP|hSG2l2~{#V)AZ@!p92apfXQ7SLm5&;E!Mlo-gYa$Nm)%`B7hec^N_CHCHZY# zPvIc|9V7idzNS>5nEcJ+12{bJK^Un-wv6rWNyI^nkbM7$j?=j&U0GX8lf~f2Wn{$Y zfzmy9pnO??HaMu?T6XfR!%WqN@XW~_1FS7urc7Rj0b4(^l=3834&WI={<~; zJN75fPbhv!{re#rOd&nT-)AB;Oo?!5t2%dhK70?B4pQh#>;NPc~@CS zka{p~(Ze@We!SdKV|lyglB_6lh?w~&$wgxE85=)KJv^qq+REP0I6{MTUrspi32=pQ z^F;K0=So#1u~VR=%q%NuCX(GJQ%%bxcv{*K^$- z3ICqw+gqMHW4U&PnWxtVZpM@N+4QA8#i9Q)VoqNlho~Dp%dm4Z_{iN6mHIs`z~IMr z(bvwH5X?0kBvItTwAd%6BaCaO0Wqnp?OU`TEMF9;T@v(8`kI{>UE&oU-x6=8V8Zy@ z5}u~9x)0x>L~n#_Hh!C@hwIljRHcd(VOJ$>n7^A2oTL!W+2D7tghgUzQWdmNFJv3o z`qTk8{E9a@y$Ai;Ez z4Yx6RJda#)DZfMJZg?2ZWOB`BCwzrB$gRrnqV)`3{0qN-St;fqzoW~q^gQn-p^ij= zBH-o3arQLWfT*K9e5(($_+Rs!Ohg*i2^zYYcC3x`p65qOLsry$K_qS`lrUjJ3`ZwV zzEsh(GkK-VXzZCNA-cb?3u(#vMveyphu1=R&kuEOTc#XfvR0_bYX#RRi2YY~lM^(gUVstcmVO zqJi(n%L}DL3`HsKytm_M4Oh-wfdQZ&IaJ{qOc)qHOH@0Bx);cQdYmUhItK`5CCPk; zQ=rzJAJN$RWQDF{Zj)Xwd?P-+?~bjNg0(;->0MK`nzFbN$gurTH2xdAYzhl#s?sZN+g@uZMewhB}xZ zY3V1g0KG?9MR{KFB;ua5rW@Vpe3RWT?c5mKNn_+yb;p$QR6wHro{rt9u^@w9 zjuvm|RoHq0;E?W6RHWkfpG65Xqz?D?rKpFM)M!w6Op}Lrzi-MNd>CfEU1_L?*L8rh z?A9i~<4Sx?YHr>@Y>OJimCK(voeS+cOo;soX>Dz_xJmYIeH94P2uqj>*W;j+@&u=k zA0MBSm4^@YkY3{xMQ>Hg6!nJ-vy#4GgSaC)Bfe(K6qe+EG5kmo+%OxEFPf?k1La+4~__zgB-{}Ps~M@s-rnaQJqfL=%K8I5p(_rfc@QoRN;r&8H!M=0 zCZBYZxbqwxo%9x);GC<3xz%UAw6-3yllI(t_q6;IUM$-i;j_1i#4)u z66VRxZ3G0IJ72HSFGdwh(H^$7bLErVU5)xl!geC&AD{ETle1 zmP{eIfuw@5f;e#H_7)MIRy4Oq^rbf~?EHc@hs`zlTpDHJbV_`XH+bGx$BKEzrv`&h zub$RauV~TWSLJd!Yd?~kZJRGl>2^m(`_mEyN#<;qib&9MhOKwiT6!=gr1oPNXNAh! zdrz-W-L`6lw6!{@jk&cYsiT&pt&py(9z_un3&i@GMa}1M_ptk7^a(>GlPdkFOm6V_ z34=`P1XQoh`l-nTXQtfG&&1EqjEh7;iW~8L??3=IWeJurQc|F9x&N}EgtGWsXT-_y z>$As5_UvL$`#(5EQh_Cex`H`2(-Z`d)VZTdIuo_P+{MPV_crOfJ1k(EsX7WsS=?~h z>y;#GTJ$4MWZ;zhP^iJ5qv%U0fW2BNAp8SN{FTnN88rkKF_#3;QaZ#yF(TK&=Fs&=7W^&G2}JzpNHqrGEus+sFh%Vi(aVbWkv zm~NH5QM30Q)bOC%k4WRQe9pY`Y+AI3xquhhr?vG{y@l*V)B1%+Y=S|W^^P1E(3l92 zx+cL<^6A9Ns^osY=@doP%YfUE$7Ow%cqC0kI2W?lB z*aw)WH=i`&$rdx&=M}>O3q)PnZN&v_-YSho*#3q03`Go3(;VbEqmt3HMuo5kK=}id z$gmnrF1K4(l>Cd(KTM1PU2(U%SiT#}^~a%_=Uxk)rEUU;Ld$>5J!k zF!=W|6}#b*sD69cNo&Tl?oZw7$)of_p_wG-v-D=y?DBGbZWS{Qz*NgTYm}-|Sq|{k zIE3aGGoILNlEpur~bx|p`5QL1E;7%M73xVB*0wld;Ot8LR7qAXmzyWL0rs4fQb$;d|oh_ ztCprYKXxOozkjCid6KzDeb=|-xX8HU$v7?e)^XT;Z8YHA%zy;Y@bV!r2P9iDomIon zPKy1JVv*~6i`Z9z%+OwX@**l0ss!}_i@0wij9U2U@b=?Va$}Z=UbVIh&u?5$=AuJ$ zYt8w!BjXsNJ9jSf7xk&7Cw-s+U2;2+t7~oG?dH-x+q*l)e&EO9)gokZ)k56*;nDa} z>rlbN8t0pV2nh&;&+``x@VQZXP3u?0jZ*r;Q zClYL7A^A{vlP(*JUX=;{KD>->VzdSYeybzvvw{kQJ-myjcHF}?6@$<3SQF^DQlNUZ zpZV`f;ROqkH!%FtD?ZGTDG6FO3}ps`%F|$hI^$K%S2H@YS8&JM(|m!g{sIo`-ESO7 z@isuc^G#>MpclZ{nzFoFE6~I9^lHNU<*>6UnXM{Oq%N6_-ukn+ET2Rs4gv5rsI{4~ zFMB>v=(-*81bt3!tggIKRqCueRK@~~E^iTbTHH5)22<+F;Oq&lG%o5laShPHwOAq z#iukd5O-fnj|#niopZ;^KxSWBP6|YF9xy37rXmo=SM&t@cn7Y5cs6Rpe^2#}P%jC6ZSB$;X02{O}ANP&3=WFs~>-SrZ&Tg*lfT`4eB5UN!M&BDB zyK>UU=Xc6gQ|GoS^@O8AwJ5ad0WHLU%_BqR-V2Ya~*V zBUNmwa$0lVX-`iND_w-0Be!LoCM7Qx_!gSv1`@LV3TP5I*T;*n6?TRuDD8&W1|F-+ z@dp%z?*e;2fRW&c(+Ou;nym9s#B`h8F%RoHVBE0COWPmFcrlra)as5l^01z7ynOgI zoHV%YMg!!D%aq+6&tucIf?GOK{xGM6A3oAF{KU9$3dI_vU|fl@6~ zu5Rt>Poon%fR#J+4|Oaz0^00tFCT>GaCs2Wq~^{$gyj5gCKkxf0Jy>Gn!zKEsQbD_ zsfQic;^#(t)2+_6fxzjt!2U0Q69gTLSGei#7Vt4Q7+A5Y5ljLYQhG-G&h!l6Pr1=R z|Ex8Uo+zK&LG|*SV$N~m=eeqI+dB*K9C`L_Y8Lu!e1Y_r$a(55=OcYN_pRP%?-rZx zJwI7v?qblJyLj$ih6b~L>E935&hI`d`DL_xXz``%?q!h<>n2zjM-4sMp7Oh5(?wiVlIz))g~1+=$q%}?zqHDq$O1E8 z{tCLTbA5cqdWk&o-O({~_V!}3wBMH!rfk@WHa{6D`NiI~E{*p4tShF{VMBIKPcw9T zn-CuU4YwuTp(frTAs#)!Ru-)&8ENh9VsQMC?5pPMj}p0>U!ad2ltYsYiH1*Jb{nm= z2dBqg2ljce@xYr&;|KR=@r@fWi1@^B|sN*8<6%$_SV4IDI}O|@f<9wxuEiB zSKYQ-%UxN1P2&k0Fl$`*)<&Y0t!4Y~dCN`wU$ksgzC=~y)&WZiQMo(`DAJSy6>sPo z8;qa?uZ6J0{dLRRy$)8S$4+|u9v>jm2Lqi57Y;p-jfLf+0sBpOg+j~0<;Rqlm)BiX z$YS{#)C@voaSEvRd-;j0#ijrSh{s`)-?Xxdz!rVed!TeNeZeKEJRKsp7&4)ga^EyF1^ zZMAe(88B|jBIn;2Fsz>b(Iqs)UMC=pO|ts-OmmGslDI89kX60QFru0T@N9qw zS$f5~(sVNHA27@wdQ=hMm#g%KCVXl;9Qa-jotTf7&Ac_08MM83W>>CvSr5&3%7Mv~ z$?b?L(OmESn2g~!KDiK0uqLZQ`+0NutDj(uMA821R!-xYyF_0OumK*(3_487ME$#rsAk%Lki!@N0PC|X z8Fw$m^z*30oSx=!zl_an-@r5-p~Xd!Kd)B%nJIkeR8k}qeU*7An0w%QuYtGhc{a+J z{0{C;u6*J89JQv##c=xkj$>CMSsid)PprR-C)_cb{)l#ZS`T@**`~~s**mW!Bz-Z( zWZLO*vh2ri0X5xE&@#Y7@Q);9^M_hXSRIVHly0L7+7tYWP+!@)SHhGe;`+m}*k zJcgMV$yszdS^NzJV9+zhGqs$pXG%eu*M70*ROe#o9ob~h{_a^iTwiLir1O2geJvNW z6{^#g#C>Wd0A-waHEGr^Lo{f55n1$jumQYmiwDV**-v#PTU`kS6_;+Z~Cl;4Zp%W%ApKsOL(s#R`9fll64^Bh|6!&`6{snllVef7L zgh%@*l^=I*6Rwwj|9+-?ey6b8N=Wl@3mjXb)2G=i0H*^u*8R2g^@8-ayzus=4ihui zxPN20ENL*&X;w54&axT6=89*Yxt5ez0VEcUfe7Ecqkb>7(6*Lh>b{x*MDqyuW7e*l zPgHbVlRrI-q%yKmlGE??y=oKV%iHf&KXrRF!87@}G$MS7Mpt`Z@fTb%#=gh$ah^ zWn5i(hv@M(9R-@2n#Sg5LYtaA59b=ubn0xo%9onM7U=^cb|@7pCXJv~%x`zj2LbOR zP1QR}^V)1{B>>o`oMztM@eS1)+Jx~J>Sv~T z{^GSxMFma*5J$RZ%y{15B6)c#IA2XXCK6tDSX~v@g*aaQxVrluSkrLt_75355d6Cu z)i8WQ%^axAj2AjTYxB7iju>%QB-lp}+R~ajh@>TQgqAOu0XRGw(w~Pd!j5b2R>Dq6 zDwuV}X61=r_c>-~%zmnPk&<%WhN1S#2XLD>QS7*cFn=%pL8Ah2)W2w4DI!!7Di~S- zVM=O{^iTd@<(wo)n?Uh@my?>A488o@&VNI75kvnMRM&{z5O^TRA(Z4V-jxRNAK>nP z@V;!s{|{jA272GW<1qVQshHgv;cVl#ua!ltfBiTGA^lDyQT;wN}J) z=j5ORsKw1v1WN~=M3DU^W_ABP`At2a4?WjsDdXXcs`DubGrIz%1}{%`QISJ;04qTI z95u8lX9w{Vype|Q$(kk7Y7P#a_n3)f<>;JdQc|x0NLo}%aTm%(NeOQ1QR+_U3cqs5p@S@FodqdSjX5pOI#M;kl4`O1lf1^;iiC?K@Y+D9 zY}m*%`3s>dClwbStuB&BCHMBGcTux!cBVy>jaA!6wc9yAQ6v$Q)r+PW;|3?$7-Eq< z0;xCOa!@p$b2@x*a{*??II#DYx~ia9{*vo0DDQ$loSBU+l%Bqt@PQ>&8LTkxEQlFc zB`glV5Q_Ibe^68SDzcAH_^Em2{?kKvZ|DQ$@gr1n<#FUu;|#2xpTd`x^}*i|7vAXJ zow;wn!Jp$A+MjW3tI=aZPV$Zul&8jRJX5+0F%DY^AMI9xs8-u|tWtt(9K^M4sEG?> zQfId*PU+vBElp2<^nzYaXwT5n2$C&BPk#&Wv5UTnd!zN|FEMcu5(8eq&2H5+Q3)XXP7_3bv!Kbnz{w*-P=jtzt5P}}pYED6#u>Evg6pdS z^89>YfIlNY8a$kfub&ux5)W@0qk%KD$GVL+$H8W!F8yob!fRBfe08}tsUP8-aT2>8 zBXiUjEu-qaUvbFD$Z|)8GpsEojExK3Tt7%kPGrn?gHE|}r}tGg)PM43IW+<6SZ`<2 zq82Hr<6NUd2fM>HbClh)a5DrV+`PAT@`RQu8WG<6gX-zp40W00UDJSW{D2p*1FprkCBnH+7lzZy1tkrYiU z&Gu}seLFD8SnFQ(>j3sPV(~j4DnMUs|5`dDKF8XbNGXf ztMjuU*sD^&6}=Enl?-#+vP<+eG5So1A7WrfokV>Ui2%SK-7HB{%w8>e$N)1aqa;q6xbZEl6IITOg_a zV#~UC@TsNyJo5UnnjUCWFD!{-SJ!%vgw$8@&{ZkduvrUu-5$%)qx69_wW{ zqVWmJ$)3{uV%$C4lCo8i>Y$xG0l}ZFhx_~AL{b~TExP#cGTdMcz5R(SQiPG9&2!dz zpKo`r#i&&gL4YsRG!Csw03PM%cFeOU^%r^jmVYvg^M`sMFO1*M1) zRY|KH6J&zy=+X(4fVse-%_6#gIIyVA+Z2cNJF{+v(5t2 z46X`&6C|14*7zigeh!Gs@ZOL1|481y()a%-aVtOh4YV(KA8-#O0N)pZ3_1V+ literal 8593 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 ABme*a diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index e45e8ef95..21854c92d 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -187,6 +187,10 @@ D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */; }; D31B4B23159876C0002E6C72 /* UICompositeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */; }; D31B4B24159876C0002E6C72 /* UICompositeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */; }; + D31B4B281598A390002E6C72 /* avatar-inconnu.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B261598A390002E6C72 /* avatar-inconnu.png */; }; + D31B4B291598A390002E6C72 /* avatar-inconnu.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B261598A390002E6C72 /* avatar-inconnu.png */; }; + D31B4B2A1598A390002E6C72 /* avatar-small.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B271598A390002E6C72 /* avatar-small.png */; }; + D31B4B2B1598A390002E6C72 /* avatar-small.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B271598A390002E6C72 /* avatar-small.png */; }; D31C9C8A158A179A00756B45 /* fond-detail-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C89158A179A00756B45 /* fond-detail-numero.png */; }; D31C9C8B158A179A00756B45 /* fond-detail-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C89158A179A00756B45 /* fond-detail-numero.png */; }; D31C9C90158A1C1000756B45 /* appel-entrant.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8D158A1C1000756B45 /* appel-entrant.png */; }; @@ -884,6 +888,8 @@ D31B4B1E159876C0002E6C72 /* UICompositeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICompositeViewController.h; sourceTree = ""; }; D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICompositeViewController.m; sourceTree = ""; }; D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UICompositeViewController.xib; sourceTree = ""; }; + D31B4B261598A390002E6C72 /* avatar-inconnu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "avatar-inconnu.png"; path = "Resources/avatar-inconnu.png"; sourceTree = ""; }; + D31B4B271598A390002E6C72 /* avatar-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "avatar-small.png"; path = "Resources/avatar-small.png"; sourceTree = ""; }; D31C9C89158A179A00756B45 /* fond-detail-numero.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "fond-detail-numero.png"; path = "Resources/fond-detail-numero.png"; sourceTree = ""; }; D31C9C8D158A1C1000756B45 /* appel-entrant.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appel-entrant.png"; path = "Resources/appel-entrant.png"; sourceTree = ""; }; D31C9C8E158A1C1000756B45 /* appel-manque.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appel-manque.png"; path = "Resources/appel-manque.png"; sourceTree = ""; }; @@ -1746,6 +1752,8 @@ D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */, D35E758C15934F360066B1C1 /* appeler-disabled.png */, D3ED3E7115861ABD006C0DE4 /* appeler-over.png */, + D31B4B261598A390002E6C72 /* avatar-inconnu.png */, + D31B4B271598A390002E6C72 /* avatar-small.png */, D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */, D35E758815932DE60066B1C1 /* backspace-disabled.png */, D3ED3E7715861B1B006C0DE4 /* backspace-over.png */, @@ -2217,6 +2225,8 @@ D3F26BF915986DAD005F9CAB /* ok-edit-list-history-over.png in Resources */, D3F26BFC15987083005F9CAB /* champ-titre-incoming.png in Resources */, D31B4B23159876C0002E6C72 /* UICompositeViewController.xib in Resources */, + D31B4B281598A390002E6C72 /* avatar-inconnu.png in Resources */, + D31B4B2A1598A390002E6C72 /* avatar-small.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2387,6 +2397,8 @@ D3F26BFA15986DAD005F9CAB /* ok-edit-list-history-over.png in Resources */, D3F26BFD15987083005F9CAB /* champ-titre-incoming.png in Resources */, D31B4B24159876C0002E6C72 /* UICompositeViewController.xib in Resources */, + D31B4B291598A390002E6C72 /* avatar-inconnu.png in Resources */, + D31B4B2B1598A390002E6C72 /* avatar-small.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From c62dabc1bc0e2a55c2d40915c6463d1daf76d6f1 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 26 Jun 2012 18:13:43 +0200 Subject: [PATCH 019/397] Fix first login view Working Incoming call view Fix some value with inappsettings --- Classes/CallDelegate.h | 1 - Classes/DialerViewController.m | 6 - Classes/FirstLoginViewController.h | 24 +- Classes/FirstLoginViewController.m | 89 +-- Classes/FirstLoginViewController.xib | 665 ++++++++++-------- Classes/IncomingCallViewController.h | 20 +- Classes/IncomingCallViewController.m | 47 +- Classes/IncomingCallViewController.xib | 113 ++- Classes/LinphoneApp.xib | 69 +- Classes/LinphoneAppDelegate.m | 22 +- Classes/LinphoneCoreSettingsStore.m | 81 +-- Classes/LinphoneManager.h | 1 + Classes/LinphoneManager.m | 14 +- Classes/LinphoneUI/FastAddressBook.m | 4 +- .../LinphoneUI/UICompositeViewController.m | 25 +- Classes/LinphoneUI/UIModalViewController.h | 38 + Classes/LinphoneUI/UIModalViewController.m | 38 + Classes/PhoneMainView.h | 13 +- Classes/PhoneMainView.m | 166 +++-- Classes/PhoneMainView.xib | 64 +- Classes/SettingsViewController.m | 36 +- Resources/ombre-cotes-avatar.png | Bin 0 -> 12436 bytes Settings/InAppSettings.bundle/Advanced.plist | 10 + Settings/InAppSettings.bundle/Root.plist | 4 +- linphone.xcodeproj/project.pbxproj | 14 + linphonerc | 1 - 26 files changed, 912 insertions(+), 653 deletions(-) create mode 100644 Classes/LinphoneUI/UIModalViewController.h create mode 100644 Classes/LinphoneUI/UIModalViewController.m create mode 100644 Resources/ombre-cotes-avatar.png diff --git a/Classes/CallDelegate.h b/Classes/CallDelegate.h index 4541e13b2..216149417 100644 --- a/Classes/CallDelegate.h +++ b/Classes/CallDelegate.h @@ -22,7 +22,6 @@ enum CallDelegateType { CD_UNDEFINED = 0, - CD_NEW_CALL, CD_ZRTP, CD_VIDEO_UPDATE, CD_STOP_VIDEO_ON_LOW_BATTERY, diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 22247ba79..39b91711d 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -54,12 +54,6 @@ - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - //TODO - /*if ([[NSUserDefaults standardUserDefaults] boolForKey:@"enable_first_login_view_preference"] == true) { - myFirstLoginViewController = [[FirstLoginViewController alloc] initWithNibName:@"FirstLoginViewController" - bundle:[NSBundle mainBundle]]; - [self presentModalViewController:myFirstLoginViewController animated:true]; - }*/ // [[LinphoneManager instance] setRegistrationDelegate:self]; //TODO diff --git a/Classes/FirstLoginViewController.h b/Classes/FirstLoginViewController.h index 47ed65665..12e3f0ace 100644 --- a/Classes/FirstLoginViewController.h +++ b/Classes/FirstLoginViewController.h @@ -19,19 +19,21 @@ #import -@interface FirstLoginViewController : UIViewController { - UIButton* ok; - UIButton* site; - UITextField* username; - UIView* activityIndicator; +@interface FirstLoginViewController : UIViewController{ + UIButton* loginButton; + UIButton* siteButton; + UITextField* usernameField; + UITextField* passwordField; + UIView* waitView; } --(void) doOk:(id)sender; +- (IBAction)onLoginClick:(id)sender; +- (IBAction)onSiteClick:(id)sender; -@property (nonatomic, retain) IBOutlet UIButton* ok; -@property (nonatomic, retain) IBOutlet UIButton* site; -@property (nonatomic, retain) IBOutlet UITextField* username; -@property (nonatomic, retain) IBOutlet UITextField* passwd; -@property (nonatomic, retain) IBOutlet UIView* activityIndicator; +@property (nonatomic, retain) IBOutlet UIButton* loginButton; +@property (nonatomic, retain) IBOutlet UIButton* siteButton; +@property (nonatomic, retain) IBOutlet UITextField* usernameField; +@property (nonatomic, retain) IBOutlet UITextField* passwordField; +@property (nonatomic, retain) IBOutlet UIView* waitView; @end diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index cd83a5461..437c76a2a 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -23,28 +23,31 @@ @implementation FirstLoginViewController -@synthesize ok; -@synthesize username; -@synthesize passwd; -@synthesize activityIndicator; -@synthesize site; +@synthesize loginButton; +@synthesize siteButton; +@synthesize usernameField; +@synthesize passwordField; +@synthesize waitView; + +- (id)init { + return [super initWithNibName:@"FirstLoginViewController" bundle:[NSBundle mainBundle]]; +} - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - //[username setText:[[NSUserDefaults standardUserDefaults] stringForKey:@"username_preference"]]; - //[passwd setText:[[NSUserDefaults standardUserDefaults] stringForKey:@"password_preference"]]; + [usernameField setText:[[LinphoneManager instance].settingsStore objectForKey:@"username_preference"]]; + [passwordField setText:[[LinphoneManager instance].settingsStore objectForKey:@"password_preference"]]; } --(void) viewDidLoad { - NSString* siteUrl = [[NSUserDefaults standardUserDefaults] stringForKey:@"firt_login_view_url"]; +- (void)viewDidLoad { + NSString* siteUrl = [[LinphoneManager instance].settingsStore objectForKey:@"first_login_view_url"]; if (siteUrl==nil) { siteUrl=@"http://www.linphone.org"; } - [site setTitle:siteUrl forState:UIControlStateNormal]; + [siteButton setTitle:siteUrl forState:UIControlStateNormal]; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) name:@"LinphoneRegistrationUpdate" object:nil]; - } - (void)registrationUpdate: (NSNotification*) notif { @@ -52,36 +55,36 @@ switch (state) { case LinphoneRegistrationOk: { - [[NSUserDefaults standardUserDefaults] setBool:false forKey:@"enable_first_login_view_preference"]; - [self.activityIndicator setHidden:true]; - [self dismissModalViewControllerAnimated:YES]; + [[LinphoneManager instance].settingsStore setBool:false forKey:@"enable_first_login_view_preference"]; + [self.waitView setHidden:true]; + [[LinphoneManager instance] changeView:PhoneView_Dialer]; break; } case LinphoneRegistrationNone: case LinphoneRegistrationCleared: { - [self.activityIndicator setHidden:true]; + [self.waitView setHidden:true]; break; } case LinphoneRegistrationFailed: { - [self.activityIndicator setHidden:true]; + [self.waitView setHidden:true]; //default behavior if no registration delegates - //UIAlertView* error = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Registration failure for user %@",user] - // message:reason - // delegate:nil - // cancelButtonTitle:@"Continue" - // otherButtonTitles:nil ,nil]; - //[error show]; - //[error release]; + /*UIAlertView* error = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Registration failure for user %@", usernameField.text] + message:[notif.userInfo objectForKey: @"message"] + delegate:nil + cancelButtonTitle:@"Continue" + otherButtonTitles:nil,nil]; + [error show]; + [error release];*/ //erase uername passwd [[LinphoneManager instance].settingsStore setObject:Nil forKey:@"username_preference"]; [[LinphoneManager instance].settingsStore setObject:Nil forKey:@"password_preference"]; break; } case LinphoneRegistrationProgress: { - [self.activityIndicator setHidden:false]; + [self.waitView setHidden:false]; break; } default: break; @@ -90,27 +93,29 @@ - (void)dealloc { [super dealloc]; - [ok dealloc]; - [site dealloc]; - [username dealloc]; - [activityIndicator dealloc]; + [loginButton dealloc]; + [siteButton dealloc]; + [usernameField dealloc]; + [passwordField dealloc]; + [waitView dealloc]; [[NSNotificationCenter defaultCenter] removeObserver:self]; } -- (void) viewDidUnload { +- (void)viewDidUnload { [[NSNotificationCenter defaultCenter] removeObserver:self]; } --(void) doOk:(id)sender { - if (sender == site) { - NSURL *url = [NSURL URLWithString:site.titleLabel.text]; - [[UIApplication sharedApplication] openURL:url]; - return; - } +- (void)onSiteClick:(id)sender { + NSURL *url = [NSURL URLWithString:siteButton.titleLabel.text]; + [[UIApplication sharedApplication] openURL:url]; + return; +} + +- (void)onLoginClick:(id)sender { NSString* errorMessage=nil; - if ([username.text length]==0 ) { + if ([usernameField.text length]==0 ) { errorMessage=NSLocalizedString(@"Enter your username",nil); - } else if ([passwd.text length]==0 ) { + } else if ([passwordField.text length]==0 ) { errorMessage=NSLocalizedString(@"Enter your password",nil); } @@ -124,12 +129,11 @@ [error show]; [error release]; } else { - [[LinphoneManager instance].settingsStore setObject:username.text forKey:@"username_preference"]; - [[LinphoneManager instance].settingsStore setObject:passwd.text forKey:@"password_preference"]; - [self.activityIndicator setHidden:false]; + [[LinphoneManager instance].settingsStore setObject:usernameField.text forKey:@"username_preference"]; + [[LinphoneManager instance].settingsStore setObject:passwordField.text forKey:@"password_preference"]; + [self.waitView setHidden:false]; + [[LinphoneManager instance].settingsStore synchronize]; }; - - } - (BOOL)textFieldShouldReturn:(UITextField *)theTextField { @@ -138,5 +142,4 @@ return YES; } - @end diff --git a/Classes/FirstLoginViewController.xib b/Classes/FirstLoginViewController.xib index 5ab733adc..6f148cbb2 100644 --- a/Classes/FirstLoginViewController.xib +++ b/Classes/FirstLoginViewController.xib @@ -2,23 +2,22 @@ 784 - 10K549 - 1938 - 1038.36 - 461.00 + 11E53 + 2182 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 + 1181 YES - IBUIView - IBUIImageView - IBUIViewController - IBProxyObject IBUIActivityIndicatorView - IBUITextField IBUIButton + IBUIImageView + IBUIView + IBUITextField + IBProxyObject YES @@ -38,212 +37,210 @@ IBFirstResponder IBCocoaTouchFramework - - - - 292 - - YES - - - 292 - {{0, -20}, {360, 480}} - - - NO - NO - 9 - NO - IBCocoaTouchFramework - - NSImage - wallpaper_iphone_320x480.png - - - - - -2147483356 - {{60, 400}, {200, 37}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - 3 - MC41AA - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{60, 200}, {200, 31}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - 3 - Password - - 3 - MAA - - 2 - - - YES - YES - 17 - - 1 - YES - IBCocoaTouchFramework - - - 1 - 12 - - - Helvetica - 12 - 16 - - - - - 292 - {{60, 150}, {200, 31}} - - - NO - NO - IBCocoaTouchFramework - 0 - - 3 - Username - - 3 - MAA - - - YES - 17 - - 1 - IBCocoaTouchFramework - - - - - - - 292 - {{60, 300}, {200, 37}} - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - 1 - Login - - - 5 - MSAwLjY2MDAwMDAyNjIgMCAwAA - - 3 - - 1 0.66 0 0 1 - - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 - - - - - -2147483356 - - YES - - - 292 - {{142, 211}, {37, 37}} - - - NO - NO - NO - IBCocoaTouchFramework - NO - YES - 0 - - - {320, 460} - - - - 3 - MSAwLjY2AA - - - NO - IBCocoaTouchFramework + + + 292 + + YES + + + 292 + {360, 480} + + + + NO + NO + 9 + NO + IBCocoaTouchFramework + + NSImage + wallpaper_iphone_320x480.png - {{0, 20}, {320, 460}} - - - - 3 - MQA - + + + -2147483356 + {{60, 420}, {200, 37}} + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + 3 + MC41AA + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{60, 220}, {200, 31}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + 3 + Password + + 3 + MAA + + 2 + + + YES + YES + 17 + + 1 + YES + IBCocoaTouchFramework + + + 1 + 12 + + + Helvetica + 12 + 16 + + + + + 292 + {{60, 170}, {200, 31}} + + + + NO + NO + IBCocoaTouchFramework + 0 + + 3 + Username + + 3 + MAA + + + YES + 17 + + 1 + IBCocoaTouchFramework + + + + + + + 292 + {{60, 320}, {200, 37}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + 1 + Login + + + 5 + MSAwLjY2MDAwMDAyNjIgMCAwAA + + 3 + + 1 0.66 0 0 1 + + + + 2 + 2 + + + Helvetica-Bold + 18 + 16 + + + + + -2147483356 + + YES + + + 292 + {{142, 211}, {37, 37}} + + + + NO + NO + NO + IBCocoaTouchFramework + NO + YES + 0 + + + {320, 460} + + + + + 3 + MSAwLjY2AA + + + NO + IBCocoaTouchFramework - - IBCocoaTouchFramework - - - 1 - 1 + {320, 460} + + + + _NS:9 + + 3 + MQA + IBCocoaTouchFramework - NO @@ -253,41 +250,49 @@ view - + - 3 + 56 - passwd - - - - 15 - - - - activityIndicator + waitView - 33 + 57 - username - - - - 38 - - - - site + siteButton - 36 + 58 + + + + usernameField + + + + 59 + + + + passwordField + + + + 60 + + + + loginButton + + + + 61 @@ -307,21 +312,21 @@ - doOk: + onLoginClick: 7 - 20 + 62 - doOk: + onSiteClick: 7 - 37 + 63 @@ -347,49 +352,48 @@ - 4 - + 55 + YES - + + + + + + - 1 - - - YES - - - - - - - - + 5 + + + background - 12 - - - - - 6 - - - username + 35 + + + siteButton 8 - - passwd + + passwordField - 5 - - + 6 + + + usernameField + + + 12 + + + loginButton 31 @@ -398,19 +402,14 @@ YES - - wait + + waitView 32 - - - 35 - - - site + activityIndicator @@ -422,34 +421,23 @@ -1.IBPluginDependency -2.CustomClassName -2.IBPluginDependency - 1.IBPluginDependency - 1.IBUserGuides 12.IBPluginDependency 12.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 31.IBPluginDependency 32.IBPluginDependency 35.IBPluginDependency - 4.IBPluginDependency 5.IBPluginDependency + 55.IBPluginDependency 6.IBPluginDependency 8.IBPluginDependency - + YES FirstLoginViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - YES - - - 104 - 0 - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -472,9 +460,106 @@ - 54 + 63 + + + + YES + + FirstLoginViewController + UIViewController + + YES + + YES + onLoginClick: + onSiteClick: + + + YES + id + id + + + + YES + + YES + onLoginClick: + onSiteClick: + + + YES + + onLoginClick: + id + + + onSiteClick: + id + + + + + YES + + YES + loginButton + passwordField + siteButton + usernameField + waitView + + + YES + UIButton + UITextField + UIButton + UITextField + UIView + + + + YES + + YES + loginButton + passwordField + siteButton + usernameField + waitView + + + YES + + loginButton + UIButton + + + passwordField + UITextField + + + siteButton + UIButton + + + usernameField + UITextField + + + waitView + UIView + + + + + IBProjectSource + ./Classes/FirstLoginViewController.h + + + - 0 IBCocoaTouchFramework @@ -483,7 +568,7 @@ com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 @@ -495,6 +580,6 @@ wallpaper_iphone_320x480.png {320, 480} - 933 + 1181 diff --git a/Classes/IncomingCallViewController.h b/Classes/IncomingCallViewController.h index cd1555006..ba2a9563a 100644 --- a/Classes/IncomingCallViewController.h +++ b/Classes/IncomingCallViewController.h @@ -19,13 +19,31 @@ #import -@interface IncomingCallViewController : UIViewController { +#import "UIModalViewController.h" + +#include "linphonecore.h" + +typedef enum _IncomingCallStates { + IncomingCall_Accepted, + IncomingCall_Decline, + IncomingCall_Aborted +} IncomingCallStats; + +@interface IncomingCallViewController : UIModalViewController { +@private UILabel* addressLabel; + UIImageView* avatarImage; + LinphoneCall *call; } @property (nonatomic, retain) IBOutlet UILabel* addressLabel; +@property (nonatomic, retain) IBOutlet UIImageView* avatarImage; - (IBAction)onAcceptClick:(id) event; - (IBAction)onDeclineClick:(id) event; +- (void)update:(LinphoneCall*)call; + +- (LinphoneCall*) getCall; + @end diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 0e8a2acb3..109a2577d 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -18,21 +18,62 @@ */ #import "IncomingCallViewController.h" +#import "LinphoneManager.h" @implementation IncomingCallViewController @synthesize addressLabel; +@synthesize avatarImage; - (id)init { - return [super initWithNibName:@"IncomingCallViewController" bundle:[NSBundle mainBundle]]; + self = [super initWithNibName:@"IncomingCallViewController" bundle:[NSBundle mainBundle]]; + if(self) { + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(callUpdate:) + name:@"LinphoneCallUpdate" + object:nil]; + } + return self; } -- (IBAction)onAcceptClick:(id) event { +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [super dealloc]; } -- (IBAction)onDeclineClick:(id) event { +- (void)callUpdate:(NSNotification*)notif { + LinphoneCall *acall = [[notif.userInfo objectForKey: @"call"] pointerValue]; + LinphoneCallState astate = [[notif.userInfo objectForKey: @"state"] intValue]; + if(call == acall && (astate == LinphoneCallEnd || astate == LinphoneCallError)) { + [self dismiss: IncomingCall_Aborted]; + } +} +- (IBAction)onAcceptClick:(id)event { + linphone_core_accept_call([LinphoneManager getLc], call); + [self dismiss: IncomingCall_Accepted]; +} + +- (IBAction)onDeclineClick:(id)event { + linphone_core_terminate_call([LinphoneManager getLc], call); + [self dismiss: IncomingCall_Decline]; +} + +- (void)update:(LinphoneCall*)acall { + [self view]; //Force view load + + call = acall; + const char* userNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); + NSString* userName = userNameChars?[[[NSString alloc] initWithUTF8String:userNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); + const char* displayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); + NSString* displayName = [displayNameChars?[[NSString alloc] initWithUTF8String:displayNameChars]:@"" autorelease]; + + [addressLabel setText:([displayName length]>0)?displayName:userName]; +} + +- (LinphoneCall*) getCall { + return call; } @end diff --git a/Classes/IncomingCallViewController.xib b/Classes/IncomingCallViewController.xib index b0cdd3cbf..dbd4b76ca 100644 --- a/Classes/IncomingCallViewController.xib +++ b/Classes/IncomingCallViewController.xib @@ -1,7 +1,7 @@ - 1280 + 1296 11E53 2182 1138.47 @@ -39,7 +39,7 @@ - 292 + 288 @@ -62,7 +62,7 @@ {{0, 47}, {320, 63}} - + _NS:9 NO IBCocoaTouchFramework @@ -93,7 +93,7 @@ {{10, 53}, {300, 51}} - + _NS:9 NO NO @@ -4488,7 +4488,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - + 3 MCAwAA @@ -4508,24 +4508,48 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 16 + + + 292 + {{0, 96}, {320, 262}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + ombre-cotes-avatar.png + + + + + 292 + {{80, 113}, {160, 170}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + avatar-inconnu.png + + - {320, 110} + {320, 395} _NS:9 - - 3 - MQA - - 2 - - + IBCocoaTouchFramework - 292 + 264 @@ -4538,7 +4562,9 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 3 MQA - + + 2 + -1 NO @@ -4629,10 +4655,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 3 - MQA - + 1 + MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA + NO IBCocoaTouchFramework @@ -4655,6 +4681,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 14 + + + avatarImage + + + + 20 + onDeclineClick: @@ -4738,6 +4772,8 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + + @@ -4759,6 +4795,18 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE otherBackground + + 18 + + + avatarShadowImage + + + 19 + + + avatarImage + @@ -4770,6 +4818,8 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -4783,7 +4833,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 16 + 20 @@ -4804,17 +4854,20 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE id - - addressLabel - UILabel - - - addressLabel - + + UILabel + UIImageView + + + addressLabel UILabel - + + avatarImage + UIImageView + + IBProjectSource ./Classes/IncomingCallViewController.h @@ -4824,13 +4877,19 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 0 IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + YES 3 + {320, 339} {640, 125} {640, 135} {320, 154} {320, 154} + {640, 523} {320, 154} {320, 154} diff --git a/Classes/LinphoneApp.xib b/Classes/LinphoneApp.xib index 5e580fba6..ed352e92e 100644 --- a/Classes/LinphoneApp.xib +++ b/Classes/LinphoneApp.xib @@ -54,6 +54,7 @@ YES + PhoneMainView 1 @@ -148,77 +149,57 @@ - - IASKAbstractSettingsStore - NSObject - - IBProjectSource - ./Classes/IASKAbstractSettingsStore.h - - LinphoneAppDelegate NSObject - - LinphoneCoreSettingsStore - UIWindow - - - - settings - LinphoneCoreSettingsStore - - + + window + UIWindow + + + window + window UIWindow - + IBProjectSource ./Classes/LinphoneAppDelegate.h - LinphoneCoreSettingsStore - IASKAbstractSettingsStore + PhoneMainView + UIViewController + + mainViewController + UICompositeViewController + + + mainViewController + + mainViewController + UICompositeViewController + + IBProjectSource - ./Classes/LinphoneCoreSettingsStore.h + ./Classes/PhoneMainView.h - PhoneMainView + UICompositeViewController UIViewController - UIViewController UIView - UIViewController - UIViewController - UIViewController UIView UIView - - callTabBarController - UIViewController - contentView UIView - - incomingCallTabBarController - UIViewController - - - mainTabBarController - UIViewController - - - stateBarController - UIViewController - stateBarView UIView @@ -230,7 +211,7 @@ IBProjectSource - ./Classes/PhoneMainView.h + ./Classes/UICompositeViewController.h diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 351483b88..079869ac6 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -94,7 +94,7 @@ int __aeabi_idiv(int a, int b) { - (void)applicationDidBecomeActive:(UIApplication *)application { if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground - && [[NSUserDefaults standardUserDefaults] boolForKey:@"disable_autoboot_preference"]) { + && ![[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]) { // autoboot disabled, doing nothing return; } else if ([LinphoneManager instance] == nil) { @@ -133,13 +133,21 @@ int __aeabi_idiv(int a, int b) { } - (void)loadDefaultSettings:(NSDictionary *) appDefaults { + for(NSString* key in appDefaults){ + NSLog(@"Overload %@ to in app settings.", key); + [[[LinphoneManager instance] settingsStore] setObject:[appDefaults objectForKey:key] forKey:key]; + } [[[LinphoneManager instance] settingsStore] synchronize]; } - (void)setupUI { - - // Change to default view - [[LinphoneManager instance] changeView: PhoneView_Dialer]; + if ([[LinphoneManager instance].settingsStore boolForKey:@"enable_first_login_view_preference"] == true) { + // Change to fist login view + [[LinphoneManager instance] changeView: PhoneView_FirstLoginView]; + } else { + // Change to default view + [[LinphoneManager instance] changeView: PhoneView_Dialer]; + } [UIDevice currentDevice].batteryMonitoringEnabled = YES; } @@ -174,11 +182,11 @@ int __aeabi_idiv(int a, int b) { /* explicitely instanciate LinphoneManager */ LinphoneManager* lm = [[LinphoneManager alloc] init]; assert(lm == [LinphoneManager instance]); - - [self setupUI]; [[LinphoneManager instance] startLibLinphone]; + [self setupUI]; + [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound]; [self setupGSMInteraction]; @@ -200,7 +208,7 @@ int __aeabi_idiv(int a, int b) { ms_warning("Local notification received with nil call"); return; } - linphone_core_accept_call([LinphoneManager getLc], call); + linphone_core_accept_call([LinphoneManager getLc], call); } @end diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 3b59c41b2..ec00af1cf 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -25,62 +25,62 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); @implementation LinphoneCoreSettingsStore -- (void)handleMigration{ - +- (void)handleMigration { NSUserDefaults *oldconfig=[NSUserDefaults standardUserDefaults]; NSArray *allkeys=[[oldconfig dictionaryRepresentation] allKeys]; - for(NSString* key in allkeys){ - NSLog(@"Migrating old config item %@ to in app settings.",key); - [self setObject:[oldconfig objectForKey:key] forKey:key]; - } - [self synchronize]; - NSLog(@"Migration done"); + for(NSString* key in allkeys){ + NSLog(@"Migrating old config item %@ to in app settings.",key); + [self setObject:[oldconfig objectForKey:key] forKey:key]; + } + [self synchronize]; + NSLog(@"Migration done"); } -- (id)init{ +- (id)init { self = [super init]; if (self){ dict=[[NSMutableDictionary alloc] init]; changedDict=[[NSMutableDictionary alloc] init]; - LinphoneCore *lc=[LinphoneManager getLc]; - if (lp_config_get_int(linphone_core_get_config(lc),"app","config_migrated",0)==0){ + [self transformLinphoneCoreToKeys]; + LinphoneCore *lc=[LinphoneManager getLc]; + if (lp_config_get_int(linphone_core_get_config(lc),"app","config_migrated",0) == 0) { [self handleMigration]; lp_config_set_int(linphone_core_get_config(lc),"app","config_migrated",1); } - [self transformLinphoneCoreToKeys]; } return self; } -- (void)dealloc{ - [super dealloc]; +- (void)dealloc { [dict release]; [changedDict release]; + [super dealloc]; } -- (void)transformKeysToLinphoneCore{ +- (void)transformKeysToLinphoneCore { //LinphoneCore *lc=[LinphoneManager getLc]; } -- (void)setString:(const char*)value forKey:(NSString*)key{ +- (void)setString:(const char*)value forKey:(NSString*)key { id obj=Nil; if (value) obj=[[NSString alloc] initWithCString:value encoding:[NSString defaultCStringEncoding] ]; [self setObject: obj forKey:key]; } -- (NSString*)stringForKey:(NSString*) key{ +- (NSString*)stringForKey:(NSString*) key { return [self objectForKey: key]; } -- (void)transformCodecsToKeys: (const MSList *)codecs{ +- (void)transformCodecsToKeys: (const MSList *)codecs { LinphoneCore *lc=[LinphoneManager getLc]; const MSList *elem=codecs; for(;elem!=NULL;elem=elem->next){ PayloadType *pt=(PayloadType*)elem->data; NSString *pref=[LinphoneManager getPreferenceForCodec:pt->mime_type withRate:pt->clock_rate]; if (pref){ - [self setBool: linphone_core_payload_type_enabled(lc,pt) forKey: pref]; + bool_t value = linphone_core_payload_type_enabled(lc,pt); + [self setBool:value forKey: pref]; }else{ ms_warning("Codec %s/%i supported by core is not shown in iOS app config view.", pt->mime_type,pt->clock_rate); @@ -88,7 +88,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } } -- (void)transformLinphoneCoreToKeys{ +- (void)transformLinphoneCoreToKeys { LinphoneCore *lc=[LinphoneManager getLc]; LinphoneProxyConfig *cfg=NULL; linphone_core_get_default_proxy(lc,&cfg); @@ -157,11 +157,11 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } [self setString:val forKey:@"media_encryption_preference"]; } - - [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference",0) forKey:@"debugenable_preference"]; - [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference",0) forKey:@"check_config_disable_preference"]; - [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","wifi_only_preference",0) forKey:@"wifi_only_preference"]; - [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","backgroundmode_preference",TRUE) forKey:@"backgroundmode_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","enable_first_login_view_preference", 0) forKey:@"enable_first_login_view_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference", 0) forKey:@"debugenable_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference", 0) forKey:@"check_config_disable_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","wifi_only_preference", 0) forKey:@"wifi_only_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","backgroundmode_preference", TRUE) forKey:@"backgroundmode_preference"]; /*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/ BOOL start_at_boot; if ([[NSUserDefaults standardUserDefaults] objectForKey:@"start_at_boot_preference"]==Nil) @@ -169,8 +169,6 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); else start_at_boot=[[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]; [self setBool: start_at_boot forKey:@"start_at_boot_preference"]; - - if (linphone_core_tunnel_available()){ /*FIXME: enhance linphonecore API to handle tunnel more easily in applications */ //LinphoneTunnel *tun=linphone_core_get_tunnel(lc); @@ -200,14 +198,14 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); return [dict valueForKey:key]; } -- (BOOL)valueChangedForKey:(NSString*)key{ +- (BOOL)valueChangedForKey:(NSString*)key { return [ [changedDict valueForKey:key] boolValue]; } -- (void)synchronizeAccount{ - LinphoneCore *lc=[LinphoneManager getLc]; +- (void)synchronizeAccount { + LinphoneCore *lc = [LinphoneManager getLc]; LinphoneManager* lLinphoneMgr = [LinphoneManager instance]; - LinphoneProxyConfig* proxyCfg=NULL; + LinphoneProxyConfig* proxyCfg = NULL; /* unregister before modifying any settings */ { linphone_core_get_default_proxy(lc, &proxyCfg); @@ -370,16 +368,16 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); else linphone_core_set_media_encryption(lc, LinphoneMediaEncryptionNone); NSString* stun_server = [self stringForKey:@"stun_preference"]; - if ([stun_server length]>0){ + if ([stun_server length] > 0){ linphone_core_set_stun_server(lc,[stun_server cStringUsingEncoding:[NSString defaultCStringEncoding]]); linphone_core_set_firewall_policy(lc, LinphonePolicyUseStun); - }else{ + } else { linphone_core_set_stun_server(lc, NULL); linphone_core_set_firewall_policy(lc, LinphonePolicyNoFirewall); } LinphoneVideoPolicy policy; - policy.automatically_accept = [self boolForKey:@"start_video_preference"];; + policy.automatically_accept = [self boolForKey:@"start_video_preference"]; policy.automatically_initiate = [self boolForKey:@"start_video_preference"]; linphone_core_set_video_policy(lc, &policy); @@ -391,21 +389,24 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); if (backgroundSupported) { isbackgroundModeEnabled = [self boolForKey:@"backgroundmode_preference"]; } else { - isbackgroundModeEnabled=false; + isbackgroundModeEnabled = false; } - lp_config_set_int(linphone_core_get_config(lc),"app","backgroundmode_preference",isbackgroundModeEnabled); + lp_config_set_int(linphone_core_get_config(lc),"app","backgroundmode_preference", isbackgroundModeEnabled); - BOOL debugmode=[self boolForKey:@"debugenable_preference"]; - lp_config_set_int(linphone_core_get_config(lc),"app","debugenable_preference",debugmode); + BOOL firstloginview = [self boolForKey:@"enable_first_login_view_preference"]; + lp_config_set_int(linphone_core_get_config(lc),"app","enable_first_login_view_preference", firstloginview); + + BOOL debugmode = [self boolForKey:@"debugenable_preference"]; + lp_config_set_int(linphone_core_get_config(lc),"app","debugenable_preference", debugmode); if (debugmode) linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler); else linphone_core_disable_logs(); /*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/ - BOOL start_at_boot=[self boolForKey:@"start_at_boot_preference"]; + BOOL start_at_boot = [self boolForKey:@"start_at_boot_preference"]; [[NSUserDefaults standardUserDefaults] setBool: start_at_boot forKey:@"start_at_boot_preference"]; [changedDict release]; - changedDict=[[NSMutableDictionary alloc] init]; + changedDict = [[NSMutableDictionary alloc] init]; return YES; } diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 270a7be0e..9975dad3d 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -29,6 +29,7 @@ #include "linphonecore.h" typedef enum _PhoneView { + PhoneView_FirstLoginView, PhoneView_Dialer, PhoneView_History, PhoneView_Settings, diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 8cde595e9..15cbf418d 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -352,16 +352,6 @@ static LinphoneCoreVTable linphonec_vtable = { .transfer_state_changed=linphone_iphone_transfer_state_changed }; - -- (void)configurePayloadType:(const char*) type fromPrefKey: (NSString*)key withRate:(int)rate { - if ([[NSUserDefaults standardUserDefaults] boolForKey:key]) { - PayloadType* pt; - if((pt = linphone_core_find_payload_type(theLinphoneCore,type,rate))) { - linphone_core_enable_payload_type(theLinphoneCore,pt, TRUE); - } - } -} - - (void)kickOffNetworkConnection { /*start a new thread to avoid blocking the main ui in case of peer host failure*/ [NSThread detachNewThreadSelector:@selector(runNetworkConnection) toTarget:self withObject:nil]; @@ -471,7 +461,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach // no proxy configured alert - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { if (buttonIndex == 1) { - [[NSUserDefaults standardUserDefaults] setBool:true forKey:@"check_config_disable_preference"]; + [[[LinphoneManager instance] settingsStore] setBool:true forKey:@"check_config_disable_preference"]; } } @@ -498,7 +488,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg); linphone_core_stop_dtmf_stream(theLinphoneCore); - if (proxyCfg && lp_config_get_int(linphone_core_get_config(theLinphoneCore),"app","backgroundmode_preference",0)) { + if (proxyCfg && [settingsStore boolForKey:@"backgroundmode_preference"]) { //For registration register linphone_core_refresh_registers(theLinphoneCore); diff --git a/Classes/LinphoneUI/FastAddressBook.m b/Classes/LinphoneUI/FastAddressBook.m index e1e3334c6..5cf73de15 100644 --- a/Classes/LinphoneUI/FastAddressBook.m +++ b/Classes/LinphoneUI/FastAddressBook.m @@ -18,6 +18,8 @@ */ #import "FastAddressBook.h" +#import "LinphoneManager.h" + @implementation FastAddressBook @synthesize addressBook; @@ -30,7 +32,7 @@ +(NSString*) appendCountryCodeIfPossible:(NSString*) number { if (![number hasPrefix:@"+"] && ![number hasPrefix:@"00"]) { - NSString* lCountryCode = [[NSUserDefaults standardUserDefaults] stringForKey:@"countrycode_preference"]; + NSString* lCountryCode = [[LinphoneManager instance].settingsStore objectForKey:@"countrycode_preference"]; if (lCountryCode && [lCountryCode length]>0) { //append country code return [lCountryCode stringByAppendingString:number]; diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 895f0f06a..6e7cba69b 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -130,6 +130,8 @@ return controller; } +#define IPHONE_STATUSBAR_HEIGHT 20 + - (void)update: (UICompositeViewDescription*) description tabBar:(NSNumber*)tabBar fullscreen:(NSNumber*)fullscreen { // Copy view description @@ -198,25 +200,22 @@ // Resize StateBar CGRect stateBarFrame = stateBarView.frame; + int origin = 0; if(currentViewDescription->fullscreen) - stateBarFrame.origin.y = -20; - else - stateBarFrame.origin.y = 0; + origin = -IPHONE_STATUSBAR_HEIGHT; if(stateBarViewController != nil && currentViewDescription->stateBarEnabled) { - stateBarView.hidden = false; - [stateBarView setFrame: stateBarFrame]; - contentFrame.origin.y = stateBarFrame.size.height + stateBarFrame.origin.y; + contentFrame.origin.y = origin + stateBarFrame.size.height; + stateBarFrame.origin.y = origin; } else { - stateBarView.hidden = true; - contentFrame.origin.y = stateBarFrame.origin.y; + contentFrame.origin.y = origin; + stateBarFrame.origin.y = origin - stateBarFrame.size.height; } // Resize TabBar CGRect tabFrame = tabBarView.frame; if(tabBarViewController != nil && currentViewDescription->tabBarEnabled) { - tabBarView.hidden = false; - tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - 20; + tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - IPHONE_STATUSBAR_HEIGHT; tabFrame.origin.x = [[UIScreen mainScreen] bounds].size.width; tabFrame.size.height = tabBarViewController.view.frame.size.height; tabFrame.size.width = tabBarViewController.view.frame.size.width; @@ -230,11 +229,10 @@ } } } else { - tabBarView.hidden = true; contentFrame.size.height = tabFrame.origin.y + tabFrame.size.height; if(currentViewDescription->fullscreen) - contentFrame.size.height += 20; - tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - 20; + contentFrame.size.height += IPHONE_STATUSBAR_HEIGHT; + tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - IPHONE_STATUSBAR_HEIGHT; } // Resize innerView @@ -246,6 +244,7 @@ [contentView setFrame: contentFrame]; [innerView setFrame: innerContentFrame]; [tabBarView setFrame: tabFrame]; + [stateBarView setFrame: stateBarFrame]; // Commit animation if(tabBar != nil || fullscreen != nil) { diff --git a/Classes/LinphoneUI/UIModalViewController.h b/Classes/LinphoneUI/UIModalViewController.h new file mode 100644 index 000000000..f422b632a --- /dev/null +++ b/Classes/LinphoneUI/UIModalViewController.h @@ -0,0 +1,38 @@ +/* UIModalViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@class UIModalViewController; + +@protocol UIModalViewDelegate + +- (void)modalViewDismiss:(UIModalViewController*)controller value:(int)value; + +@end + +@interface UIModalViewController : UIViewController { + id modalDelegate; +} + +- (void)setModalDelegate:(id)delegate; +- (void)dismiss:(int)value; +- (void)dismiss; + +@end diff --git a/Classes/LinphoneUI/UIModalViewController.m b/Classes/LinphoneUI/UIModalViewController.m new file mode 100644 index 000000000..6207ccbb8 --- /dev/null +++ b/Classes/LinphoneUI/UIModalViewController.m @@ -0,0 +1,38 @@ +/* UIModalViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIModalViewController.h" + +@implementation UIModalViewController + +- (void)dismiss:(int)value { + if(modalDelegate != nil) + [modalDelegate modalViewDismiss:self value:value]; +} + +- (void)dismiss{ + if(modalDelegate != nil) + [modalDelegate modalViewDismiss:self value:0]; +} + +- (void)setModalDelegate:(id)delegate { + modalDelegate = delegate; +} + +@end diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index c9951908b..b8dc86c26 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -22,20 +22,23 @@ #import "LinphoneManager.h" #import "CallDelegate.h" #import "UICompositeViewController.h" +#import "UIModalViewController.h" -@interface PhoneMainView : UIViewController { - UICompositeViewController *mainViewController; - UICompositeViewController *modalViewController; - +@interface PhoneMainView : UIViewController { @private + UICompositeViewController *mainViewController; + + NSMutableArray *modalControllers; + NSMutableDictionary *viewDescriptions; PhoneView currentPhoneView; UIActionSheet *incomingCallActionSheet; UIActionSheet *batteryActionSheet; + + int loadCount; } @property (nonatomic, retain) IBOutlet UICompositeViewController *mainViewController; -@property (nonatomic, retain) IBOutlet UICompositeViewController *modalViewController; @end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index e286a2786..2992fbcbc 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -20,23 +20,23 @@ #import #import "PhoneMainView.h" -#import "DialerViewController.h" -#import "HistoryViewController.h" -#import "ContactsViewController.h" + +#import "FirstLoginViewController.h" #import "IncomingCallViewController.h" -#import "InCallViewController.h" -#import "SettingsViewController.h" -#import "ChatViewController.h" #import "AbstractCall.h" @implementation PhoneMainView @synthesize mainViewController; -@synthesize modalViewController; - (void)myInit { - self->currentPhoneView = -1; + currentPhoneView = -1; + loadCount = 0; // For avoiding IOS 4 bug + + // Init view descriptions + viewDescriptions = [[NSMutableDictionary alloc] init]; + modalControllers = [[NSMutableArray alloc] init]; } - (id)init { @@ -95,13 +95,13 @@ } - (void)viewDidLoad { + // Avoid IOS 4 bug + if(self->loadCount++ > 0) + return; + [super viewDidLoad]; - [[self view] addSubview: mainViewController.view]; - // Init view descriptions - viewDescriptions = [[NSMutableDictionary alloc] init]; - // // Main View // @@ -140,18 +140,6 @@ historyDescription->fullscreen = false; [viewDescriptions setObject:historyDescription forKey:[NSNumber numberWithInt: PhoneView_History]]; - // - // IncomingCall View - // - UICompositeViewDescription *incomingCallDescription = [UICompositeViewDescription alloc]; - incomingCallDescription->content = @"IncomingCallViewController"; - incomingCallDescription->tabBar = nil; - incomingCallDescription->tabBarEnabled = false; - incomingCallDescription->stateBar = @"UIStateBar"; - incomingCallDescription->stateBarEnabled = true; - incomingCallDescription->fullscreen = false; - [viewDescriptions setObject:incomingCallDescription forKey:[NSNumber numberWithInt: PhoneView_IncomingCall]]; - // // InCall View // @@ -188,6 +176,18 @@ chatDescription->stateBarEnabled = false; chatDescription->fullscreen = false; [viewDescriptions setObject:chatDescription forKey:[NSNumber numberWithInt: PhoneView_Chat]]; + + // + // IncomingCall View + // + UICompositeViewDescription *incomingCallDescription = [UICompositeViewDescription alloc]; + incomingCallDescription->content = @"FirstLoginViewController"; + incomingCallDescription->tabBar = nil; + incomingCallDescription->tabBarEnabled = false; + incomingCallDescription->stateBar = nil; + incomingCallDescription->stateBarEnabled = false; + incomingCallDescription->fullscreen = false; + [viewDescriptions setObject:incomingCallDescription forKey:[NSNumber numberWithInt: PhoneView_FirstLoginView]]; // Set observers [[NSNotificationCenter defaultCenter] addObserver:self @@ -208,12 +208,16 @@ name:UIDeviceBatteryLevelDidChangeNotification object:nil]; } - + - (void)viewDidUnload { + [super viewDidUnload]; [[NSNotificationCenter defaultCenter] removeObserver:self]; + + // Avoid IOS 4 bug + self->loadCount--; } -- (void)registrationUpdate: (NSNotification*) notif { +- (void)registrationUpdate:(NSNotification*)notif { LinphoneRegistrationState state = [[notif.userInfo objectForKey: @"state"] intValue]; LinphoneProxyConfig *cfg = [[notif.userInfo objectForKey: @"cfg"] pointerValue]; // Show error @@ -236,7 +240,7 @@ message:lErrorMessage delegate:nil cancelButtonTitle:NSLocalizedString(@"Continue",nil) - otherButtonTitles:nil ,nil]; + otherButtonTitles:nil,nil]; [error show]; [error release]; } @@ -245,7 +249,7 @@ } } -- (void)callUpdate:(NSNotification*) notif { +- (void)callUpdate:(NSNotification*)notif { LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; NSString *message = [notif.userInfo objectForKey: @"message"]; @@ -286,7 +290,7 @@ } case LinphoneCallEnd: { - [self dismissIncomingCall]; + [self dismissIncomingCall:call]; if (canHideInCallView) { if ([[LinphoneManager instance] currentView] != PhoneView_Dialer) { // Go to dialer view @@ -348,30 +352,18 @@ [error release]; } -- (void)dismissIncomingCall { +- (void)dismissIncomingCall:(LinphoneCall*)call { //cancel local notification, just in case if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] - && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground ) { + && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground) { // cancel local notif if needed [[UIApplication sharedApplication] cancelAllLocalNotifications]; - } else { - if (incomingCallActionSheet) { - [incomingCallActionSheet dismissWithClickedButtonIndex:1 animated:true]; - incomingCallActionSheet = nil; - } } - - //TODO - /* - if ([[NSUserDefaults standardUserDefaults] boolForKey:@"firstlogindone_preference" ] == true) { - //first login case, dismmis first login view - [self dismissModalViewControllerAnimated:true]; - }; */ } - (void)displayIncomingCall:(LinphoneCall*) call{ -#if 0 + const char* userNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); NSString* userName = userNameChars?[[[NSString alloc] initWithUTF8String:userNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); const char* displayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); @@ -394,37 +386,14 @@ [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; } - } else { - CallDelegate* cd = [[CallDelegate alloc] init]; - cd.eventType = CD_NEW_CALL; - cd.delegate = self; - cd.call = call; - - incomingCallActionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:userName] - delegate:cd - cancelButtonTitle:nil - destructiveButtonTitle:NSLocalizedString(@"Answer",nil) - otherButtonTitles:NSLocalizedString(@"Decline",nil),nil]; - - incomingCallActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - //TODO - /*if ([LinphoneManager runningOnIpad]) { - if (self.modalViewController != nil) - [incomingCallActionSheet showInView:[self.modalViewController view]]; - else - [incomingCallActionSheet showInView:self.parentViewController.view]; - } else */{ - [incomingCallActionSheet showInView: self.view]; - } - [incomingCallActionSheet release]; + } else { + IncomingCallViewController *controller = [[IncomingCallViewController alloc] init]; + [controller update:call]; + [self addModalViewController:controller]; } -#endif - //UICompositeViewController *controller = [[UICompositeViewController alloc] initWithNibName:@"UICompositeViewController" bundle:[NSBundle mainBundle]]; - [modalViewController changeView:[viewDescriptions objectForKey:[NSNumber numberWithInt:PhoneView_IncomingCall]]]; - [self presentModalViewController:modalViewController animated:false]; } -- (void)batteryLevelChanged: (NSNotification*) notif { +- (void)batteryLevelChanged:(NSNotification*)notif { LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); if (!call || !linphone_call_params_video_enabled(linphone_call_get_current_params(call))) return; @@ -460,28 +429,17 @@ - (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { - switch(type) { - case CD_NEW_CALL: - { - LinphoneCall* call = (LinphoneCall*)datas; - if (buttonIndex == actionSheet.destructiveButtonIndex) { - linphone_core_accept_call([LinphoneManager getLc], call); - } else { - linphone_core_terminate_call([LinphoneManager getLc], call); - } - incomingCallActionSheet = nil; - break; - } case CD_STOP_VIDEO_ON_LOW_BATTERY: { LinphoneCall* call = (LinphoneCall*)datas; LinphoneCallParams* paramsCopy = linphone_call_params_copy(linphone_call_get_current_params(call)); - if ([batteryActionSheet destructiveButtonIndex] == buttonIndex) { + if (buttonIndex == [batteryActionSheet destructiveButtonIndex]) { // stop video linphone_call_params_enable_video(paramsCopy, FALSE); linphone_core_update_call([LinphoneManager getLc], call, paramsCopy); } + batteryActionSheet = nil; break; } default: @@ -489,12 +447,50 @@ } } +- (void)modalViewDismiss:(UIModalViewController*)controller value:(int)value { + [self removeModalViewController:controller]; +} + +- (void)addModalViewController:(UIModalViewController*)controller { + [controller setModalDelegate:self]; + [modalControllers insertObject:controller atIndex:0]; + + CATransition* trans = [CATransition animation]; + [trans setType:kCATransitionFade]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + [trans setSubtype:kCATransitionFromRight]; + [[self view].layer addAnimation:trans forKey:@"Appear"]; + + [[self view] addSubview:[controller view]]; + [[self view] bringSubviewToFront:[controller view]]; +} + +- (void)removeModalViewController:(UIModalViewController*)controller { + [controller setModalDelegate:nil]; + [modalControllers removeObject:controller]; + + CATransition* trans = [CATransition animation]; + [trans setType:kCATransitionFade]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + [trans setSubtype:kCATransitionFromRight]; + [[self view].layer addAnimation:trans forKey:@"Disappear"]; + + [[controller view] removeFromSuperview]; +} + - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [mainViewController release]; + [viewDescriptions removeAllObjects]; [viewDescriptions release]; + [modalControllers removeAllObjects]; + [modalControllers release]; + [super dealloc]; } diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 0976956ee..c88d806f2 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -41,7 +41,6 @@ {320, 460} - _NS:9 3 @@ -125,7 +124,6 @@ {{192, 0}, {128, 72}} - _NS:9 NO @@ -208,17 +206,6 @@ IBCocoaTouchFramework NO - - NO - UICompositeViewController - - - 1 - 1 - - IBCocoaTouchFramework - NO - @@ -239,14 +226,6 @@ 209 - - - modalViewController - - - - 211 - @@ -322,12 +301,6 @@ mainViewController - - 210 - - - modalViewController - @@ -349,8 +322,6 @@ 169.IBPluginDependency 208.CustomClassName 208.IBPluginDependency - 210.CustomClassName - 210.IBPluginDependency YES @@ -369,8 +340,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICompositeViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICompositeViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -394,35 +363,14 @@ PhoneMainView UIViewController - YES - - YES - mainViewController - modalViewController - - - YES - UICompositeViewController - UICompositeViewController - + mainViewController + UICompositeViewController - YES - - YES - mainViewController - modalViewController - - - YES - - mainViewController - UICompositeViewController - - - modalViewController - UICompositeViewController - + mainViewController + + mainViewController + UICompositeViewController diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 099c208c1..5411037f3 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -30,7 +30,7 @@ } - (void)viewDidLoad { - settingsController.delegate = [LinphoneManager instance]; + settingsController.delegate = self; settingsController.settingsReaderDelegate = self; settingsController.settingsStore=[[LinphoneManager instance] settingsStore]; settingsController.showCreditsFooter = FALSE; @@ -71,6 +71,10 @@ } // hide setting if bg mode not supported return nil; + } + if ([identifier isEqualToString:@"enable_first_login_view_preference"]) { + // hide first login view preference + return nil; } if (![LinphoneManager codecIsSupported:identifier]) return Nil; @@ -78,8 +82,34 @@ } - (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender { - ms_message("Synchronize settings"); - [[[LinphoneManager instance] settingsStore] synchronize]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [settingsController viewWillDisappear:NO]; + } +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [settingsController viewWillAppear:NO]; + } +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [settingsController viewDidAppear:NO]; + } +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [settingsController viewDidDisappear:NO]; + } } @end diff --git a/Resources/ombre-cotes-avatar.png b/Resources/ombre-cotes-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..7a8aac483c8ddab649af4cd6e71483af126fd502 GIT binary patch literal 12436 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 PSToggleSwitchSpecifier + + DefaultValue + + Key + enable_first_login_view_preference + Title + First login view + Type + PSToggleSwitchSpecifier + diff --git a/Settings/InAppSettings.bundle/Root.plist b/Settings/InAppSettings.bundle/Root.plist index f2aa11c6c..ae95540e2 100644 --- a/Settings/InAppSettings.bundle/Root.plist +++ b/Settings/InAppSettings.bundle/Root.plist @@ -110,7 +110,7 @@ File - audio + Audio Title Audio Codecs Type @@ -118,7 +118,7 @@ File - video + Video Title Video Type diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 21854c92d..8fb12ee79 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -444,6 +444,10 @@ D3F26BFA15986DAD005F9CAB /* ok-edit-list-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* ok-edit-list-history-over.png */; }; D3F26BFC15987083005F9CAB /* champ-titre-incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* champ-titre-incoming.png */; }; D3F26BFD15987083005F9CAB /* champ-titre-incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* champ-titre-incoming.png */; }; + D3F34F301599B008005BE94F /* ombre-cotes-avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* ombre-cotes-avatar.png */; }; + D3F34F311599B008005BE94F /* ombre-cotes-avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* ombre-cotes-avatar.png */; }; + D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; + D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; @@ -1063,6 +1067,9 @@ D3F26BF515986DAD005F9CAB /* ok-edit-list-history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ok-edit-list-history-actif.png"; path = "Resources/ok-edit-list-history-actif.png"; sourceTree = ""; }; D3F26BF615986DAD005F9CAB /* ok-edit-list-history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ok-edit-list-history-over.png"; path = "Resources/ok-edit-list-history-over.png"; sourceTree = ""; }; D3F26BFB15987083005F9CAB /* champ-titre-incoming.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-titre-incoming.png"; path = "Resources/champ-titre-incoming.png"; sourceTree = ""; }; + D3F34F2F1599B008005BE94F /* ombre-cotes-avatar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ombre-cotes-avatar.png"; path = "Resources/ombre-cotes-avatar.png"; sourceTree = ""; }; + D3F34F331599C354005BE94F /* UIModalViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIModalViewController.h; sourceTree = ""; }; + D3F34F341599C354005BE94F /* UIModalViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIModalViewController.m; sourceTree = ""; }; D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; }; D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; }; D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; }; @@ -1545,6 +1552,8 @@ D3ED3E861586291C006C0DE4 /* UIMainBar.xib */, 2214EBF112F86360002A5394 /* UIMicroButton.h */, 2214EBF212F86360002A5394 /* UIMicroButton.m */, + D3F34F331599C354005BE94F /* UIModalViewController.h */, + D3F34F341599C354005BE94F /* UIModalViewController.m */, D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */, D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */, 22968A5D12F875C600588287 /* UISpeakerButton.h */, @@ -1815,6 +1824,7 @@ D3F26BF615986DAD005F9CAB /* ok-edit-list-history-over.png */, 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, + D3F34F2F1599B008005BE94F /* ombre-cotes-avatar.png */, D3F83EF8158205A100336684 /* pause-actif.png */, D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */, D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */, @@ -2227,6 +2237,7 @@ D31B4B23159876C0002E6C72 /* UICompositeViewController.xib in Resources */, D31B4B281598A390002E6C72 /* avatar-inconnu.png in Resources */, D31B4B2A1598A390002E6C72 /* avatar-small.png in Resources */, + D3F34F301599B008005BE94F /* ombre-cotes-avatar.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2399,6 +2410,7 @@ D31B4B24159876C0002E6C72 /* UICompositeViewController.xib in Resources */, D31B4B291598A390002E6C72 /* avatar-inconnu.png in Resources */, D31B4B2B1598A390002E6C72 /* avatar-small.png in Resources */, + D3F34F311599B008005BE94F /* ombre-cotes-avatar.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2471,6 +2483,7 @@ D3F26BEC159869A6005F9CAB /* AbstractCall.m in Sources */, D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */, D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */, + D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2540,6 +2553,7 @@ D3F26BED159869A6005F9CAB /* AbstractCall.m in Sources */, D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */, D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */, + D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/linphonerc b/linphonerc index 9a2ba91f6..8eede1cd0 100644 --- a/linphonerc +++ b/linphonerc @@ -42,4 +42,3 @@ show_local=0 enabled=1 size=qvga display_filter_auto_rotate=1 - From 6d669665c90331eb2b00031e6da3eb79227592f9 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 27 Jun 2012 18:06:59 +0200 Subject: [PATCH 020/397] Add multi call support Call details --- Classes/DialerViewController.h | 14 +- Classes/DialerViewController.m | 44 ++- Classes/DialerViewController.xib | 208 ++++++++-- Classes/HistoryTableViewController.h | 2 + Classes/HistoryTableViewController.m | 14 +- Classes/HistoryViewController.h | 5 +- Classes/HistoryViewController.m | 7 + Classes/InCallTableViewController.h | 37 ++ Classes/InCallTableViewController.m | 277 +++++++++++++ Classes/InCallViewController.h | 40 +- Classes/InCallViewController.m | 444 ++++----------------- Classes/InCallViewController.xib | 82 +++- Classes/LinphoneUI/UICallBar.h | 10 +- Classes/LinphoneUI/UICallBar.m | 48 ++- Classes/LinphoneUI/UICallBar.xib | 186 +++++++-- Classes/LinphoneUI/UICallButton.m | 1 - Classes/LinphoneUI/UICallCell.h | 39 +- Classes/LinphoneUI/UICallCell.m | 154 ++++++-- Classes/LinphoneUI/UICallCell.xib | 543 ++++++++++++++++++-------- Classes/LinphoneUI/UIHistoryCell.m | 6 + Classes/LinphoneUI/UIMainBar.m | 7 +- Classes/LinphoneUI/UIToggleButton.h | 13 +- Classes/LinphoneUI/UIToggleButton.m | 16 + Resources/add-call-actif.png | Bin 7123 -> 0 bytes Resources/add-call-over.png | Bin 7259 -> 0 bytes Resources/add_call_more_default.png | Bin 0 -> 3587 bytes Resources/add_call_more_disable.png | Bin 0 -> 3465 bytes Resources/add_call_more_over.png | Bin 0 -> 3554 bytes Resources/cadenas-barre.png | Bin 0 -> 1876 bytes Resources/cadenas-interrogation.png | Bin 0 -> 1658 bytes Resources/cadenas.png | Bin 0 -> 1340 bytes Resources/finir-conference-actif.png | Bin 0 -> 6850 bytes Resources/finir-conference-over.png | Bin 0 -> 4511 bytes Resources/options_default.png | Bin 0 -> 7422 bytes Resources/options_disabled.png | Bin 0 -> 7265 bytes Resources/options_over.png | Bin 0 -> 7447 bytes Resources/ring-champ-numero-actif.png | Bin 0 -> 2431 bytes Resources/start-conference-actif.png | Bin 0 -> 8390 bytes Resources/start-conference-over.png | Bin 0 -> 5518 bytes linphone.xcodeproj/project.pbxproj | 104 ++++- 40 files changed, 1567 insertions(+), 734 deletions(-) create mode 100644 Classes/InCallTableViewController.h create mode 100644 Classes/InCallTableViewController.m delete mode 100644 Resources/add-call-actif.png delete mode 100644 Resources/add-call-over.png create mode 100644 Resources/add_call_more_default.png create mode 100644 Resources/add_call_more_disable.png create mode 100644 Resources/add_call_more_over.png create mode 100644 Resources/cadenas-barre.png create mode 100644 Resources/cadenas-interrogation.png create mode 100644 Resources/cadenas.png create mode 100644 Resources/finir-conference-actif.png create mode 100644 Resources/finir-conference-over.png create mode 100644 Resources/options_default.png create mode 100644 Resources/options_disabled.png create mode 100644 Resources/options_over.png create mode 100644 Resources/ring-champ-numero-actif.png create mode 100644 Resources/start-conference-actif.png create mode 100644 Resources/start-conference-over.png diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index 6fd7025d7..3f9083caf 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -26,9 +26,11 @@ @private //Buttons UITextField* addressField; - UIButton* addContact; + UIButton* addContactButton; + UIButton* cancelButton; UIEraseButton* eraseButton; UICallButton* callButton; + UICallButton* addCallButton; //Key pad UIDigitButton* oneButton; @@ -48,8 +50,10 @@ - (void)setAddress:(NSString*) address; @property (nonatomic, retain) IBOutlet UITextField* addressField; -@property (nonatomic, retain) IBOutlet UIButton* addContact; -@property (nonatomic, retain) IBOutlet UIButton* callButton; +@property (nonatomic, retain) IBOutlet UIButton* addContactButton; +@property (nonatomic, retain) IBOutlet UICallButton* callButton; +@property (nonatomic, retain) IBOutlet UICallButton* addCallButton; +@property (nonatomic, retain) IBOutlet UIButton* cancelButton; @property (nonatomic, retain) IBOutlet UIEraseButton* eraseButton; @property (nonatomic, retain) IBOutlet UIButton* oneButton; @property (nonatomic, retain) IBOutlet UIButton* twoButton; @@ -64,7 +68,9 @@ @property (nonatomic, retain) IBOutlet UIButton* zeroButton; @property (nonatomic, retain) IBOutlet UIButton* hashButton; -- (IBAction)onAddContact: (id) event; +- (IBAction)onAddContactClick: (id) event; +- (IBAction)onCancelClick: (id) event; +- (IBAction)onAddCallClick: (id) event; - (IBAction)onAddressChange: (id)sender; @end diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 39b91711d..c66283bf3 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -31,7 +31,9 @@ @implementation DialerViewController @synthesize addressField; -@synthesize addContact; +@synthesize addContactButton; +@synthesize cancelButton; +@synthesize addCallButton; @synthesize callButton; @synthesize eraseButton; @@ -52,12 +54,27 @@ return [super initWithNibName:@"DialerViewController" bundle:[NSBundle mainBundle]]; } -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; +- (void)viewWillAppear:(BOOL)animated { // [[LinphoneManager instance] setRegistrationDelegate:self]; //TODO //[mMainScreenWithVideoPreview showPreview:YES]; + + if([LinphoneManager isLcReady]) { + LinphoneCore *lc = [LinphoneManager getLc]; + if(linphone_core_get_calls_nb(lc) > 0) { + [addCallButton setHidden:false]; + [callButton setHidden:true]; + [cancelButton setHidden:false]; + [addContactButton setHidden:true]; + } else { + [addCallButton setHidden:true]; + [callButton setHidden:false]; + [cancelButton setHidden:true]; + [addContactButton setHidden:false]; + } + } + [super viewWillAppear:animated]; } - (void)viewDidLoad { @@ -76,6 +93,7 @@ [starButton initWithNumber:'*' addressField:addressField dtmf:false]; [hashButton initWithNumber:'#' addressField:addressField dtmf:false]; [callButton initWithAddress:addressField]; + [addCallButton initWithAddress:addressField]; [eraseButton initWithAddressField:addressField]; } @@ -85,9 +103,11 @@ - (void)dealloc { [addressField release]; - [addContact release]; + [addContactButton release]; + [cancelButton release]; [eraseButton release]; [callButton release]; + [addCallButton release]; [oneButton release]; [twoButton release]; @@ -111,19 +131,29 @@ return YES; } -- (IBAction)onAddContact: (id) event { +- (IBAction)onAddContactClick: (id) event { + +} + +- (IBAction)onCancelClick: (id) event { + [[LinphoneManager instance] changeView:PhoneView_InCall]; +} + +- (IBAction)onAddCallClick: (id) event { } - (IBAction)onAddressChange: (id)sender { if([[addressField text] length] > 0) { - [addContact setEnabled:TRUE]; + [addContactButton setEnabled:TRUE]; [eraseButton setEnabled:TRUE]; [callButton setEnabled:TRUE]; + [addCallButton setEnabled:TRUE]; } else { - [addContact setEnabled:FALSE]; + [addContactButton setEnabled:FALSE]; [eraseButton setEnabled:FALSE]; [callButton setEnabled:FALSE]; + [addCallButton setEnabled:FALSE]; } } diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index d306d0e8d..5063349d6 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -518,13 +518,13 @@ 288 YES - + 292 {106, 69} - + _NS:9 NO IBCocoaTouchFramework @@ -534,15 +534,15 @@ NO NO - + NSImage add-contact-over.png - + NSImage add-contact-inactif.png - + NSImage add-contact-actif.png @@ -552,13 +552,34 @@ - + + + -2147483356 + {106, 69} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + + + + + + 292 {{106, 0}, {108, 69}} - + _NS:9 NO IBCocoaTouchFramework @@ -583,6 +604,37 @@ + + + -2147483356 + {{106, 0}, {108, 69}} + + + + _NS:9 + NO + IBCocoaTouchFramework + NO + 0 + 0 + NO + NO + + + NSImage + add_call_more_over.png + + + NSImage + add_call_more_disable.png + + + NSImage + add_call_more_default.png + + + + 292 @@ -622,7 +674,7 @@ {{0, 305}, {320, 69}} - + _NS:9 3 @@ -751,14 +803,6 @@ 202 - - - callButton - - - - 203 - eightButton @@ -777,11 +821,35 @@ - addContact + addContactButton + + + + 225 + + + + cancelButton - 206 + 226 + + + + addCallButton + + + + 227 + + + + callButton + + + + 231 @@ -802,12 +870,30 @@ - onAddContact: + onCancelClick: 7 - 187 + 229 + + + + onAddCallClick: + + + 7 + + 228 + + + + onAddContactClick: + + + 7 + + 230 @@ -972,9 +1058,11 @@ YES - + + + toolBar @@ -983,19 +1071,31 @@ 183 - addContact + cancelButton 185 - backspace + backspaceButton 184 - call + addCallButton + + + 222 + + + addContactButton + + + 224 + + + callButton @@ -1021,6 +1121,11 @@ 185.CustomClassName 185.IBPluginDependency 185.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 222.IBPluginDependency + 222.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 224.CustomClassName + 224.IBPluginDependency + 224.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 29.CustomClassName 29.IBPluginDependency 30.CustomClassName @@ -1075,10 +1180,15 @@ UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIEraseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UICallButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton @@ -1130,7 +1240,7 @@ - 221 + 231 @@ -1142,41 +1252,57 @@ YES YES - onAddContact: + onAddCallClick: + onAddContactClick: onAddressChange: + onCancelClick: YES id id + id + id YES YES - onAddContact: + onAddCallClick: + onAddContactClick: onAddressChange: + onCancelClick: YES - onAddContact: + onAddCallClick: + id + + + onAddContactClick: id onAddressChange: id + + onCancelClick: + id + YES YES - addContact + addCallButton + addContactButton addressField callButton + cancelButton eightButton eraseButton fiveButton @@ -1193,8 +1319,10 @@ YES + UICallButton UIButton UITextField + UICallButton UIButton UIButton UIEraseButton @@ -1215,9 +1343,11 @@ YES YES - addContact + addCallButton + addContactButton addressField callButton + cancelButton eightButton eraseButton fiveButton @@ -1235,7 +1365,11 @@ YES - addContact + addCallButton + UICallButton + + + addContactButton UIButton @@ -1244,6 +1378,10 @@ callButton + UICallButton + + + cancelButton UIButton @@ -1389,6 +1527,9 @@ add-contact-actif.png add-contact-inactif.png add-contact-over.png + add_call_more_default.png + add_call_more_disable.png + add_call_more_over.png appeler-actif.png appeler-disabled.png appeler-over.png @@ -1429,6 +1570,9 @@ {214, 138} {214, 138} {214, 138} + {214, 138} + {214, 138} + {214, 138} {213, 138} {213, 138} {213, 138} diff --git a/Classes/HistoryTableViewController.h b/Classes/HistoryTableViewController.h index 1d3add2c2..09f55b9e7 100644 --- a/Classes/HistoryTableViewController.h +++ b/Classes/HistoryTableViewController.h @@ -25,5 +25,7 @@ } - (void) toggleEditMode; +- (void) enterEditMode; +- (void) exitEditMode; @end diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index f96b3d10d..abef2df6c 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -30,8 +30,6 @@ return self; } -#pragma mark Table view methods - - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } @@ -104,6 +102,18 @@ [(UITableView*)[self view] reloadData]; } +- (void) enterEditMode { + if(!editMode) { + [self toggleEditMode]; + } +} + +- (void) exitEditMode { + if(editMode) { + [self toggleEditMode]; + } +} + - (void)dealloc { [super dealloc]; } diff --git a/Classes/HistoryViewController.h b/Classes/HistoryViewController.h index e7158b1bc..10b329ab0 100644 --- a/Classes/HistoryViewController.h +++ b/Classes/HistoryViewController.h @@ -20,6 +20,7 @@ #import #import "HistoryTableViewController.h" +#import "UIToggleButton.h" @interface HistoryViewController : UIViewController { @private @@ -28,7 +29,7 @@ UIButton *allButton; UIButton *missedButton; - UIButton *editButton; + UIToggleButton *editButton; } @property (nonatomic, retain) IBOutlet HistoryTableViewController* tableController; @@ -36,7 +37,7 @@ @property (nonatomic, retain) IBOutlet UIButton* allButton; @property (nonatomic, retain) IBOutlet UIButton* missedButton; -@property (nonatomic, retain) IBOutlet UIButton* editButton; +@property (nonatomic, retain) IBOutlet UIToggleButton* editButton; - (IBAction)onAllClick:(id) event; - (IBAction)onMissedClick:(id) event; diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 0a1f8c4e8..261e2fb3f 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -78,6 +78,13 @@ typedef enum _HistoryView { [tableController toggleEditMode]; } + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [tableController exitEditMode]; + [editButton setOff]; +} + - (void)dealloc { [allButton release]; [missedButton release]; diff --git a/Classes/InCallTableViewController.h b/Classes/InCallTableViewController.h new file mode 100644 index 000000000..518cf947a --- /dev/null +++ b/Classes/InCallTableViewController.h @@ -0,0 +1,37 @@ +/* InCallTableViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +#import "UICallCell.h" + +#include "linphonecore.h" + +@interface InCallTableViewController : UITableViewController { + NSMutableDictionary* callCellData; + NSTimer *updateTime; +} + +- (void)removeCallData:(LinphoneCall*) call; +- (UICallCellData*)addCallData:(LinphoneCall*) call; +- (UICallCellData*)getCallData:(LinphoneCall*) call; +- (void)minimizeAll; +- (void)maximizeAll; + +@end diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m new file mode 100644 index 000000000..f5db69eeb --- /dev/null +++ b/Classes/InCallTableViewController.m @@ -0,0 +1,277 @@ +/* InCallTableViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "InCallTableViewController.h" +#import "UICallCell.h" +#import "LinphoneManager.h" + +#include "private.h" + +@implementation InCallTableViewController + +- (void)myInit { + self->callCellData = [[NSMutableDictionary alloc] init]; +} + +- (id)init{ + self = [super init]; + if (self) { + [self myInit]; + } + return self; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self myInit]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self myInit]; + } + return self; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + updateTime = [NSTimer scheduledTimerWithTimeInterval:1 + target:self + selector:@selector(update) + userInfo:nil + repeats:YES]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if (updateTime != nil) { + [updateTime invalidate]; + updateTime = nil; + } +} + ++ (bool)isInConference:(LinphoneCall*) call { + if (!call) + return false; + return linphone_call_get_current_params(call)->in_conference; +} + ++ (int)callCount:(LinphoneCore*) lc { + int count = 0; + const MSList* calls = linphone_core_get_calls(lc); + + while (calls != 0) { + if (![InCallTableViewController isInConference:((LinphoneCall*)calls->data)]) { + count++; + } + calls = calls->next; + } + return count; +} + ++ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{ + const MSList* calls = linphone_core_get_calls([LinphoneManager getLc]); + + if (!conf && linphone_core_get_conference_size([LinphoneManager getLc])) + index--; + + while (calls != 0) { + if ([InCallTableViewController isInConference:(LinphoneCall*)calls->data] == conf) { + if (index == 0) + break; + index--; + } + calls = calls->next; + } + + if (calls == 0) { + ms_error("Cannot find call with index %d (in conf: %d)", index, conf); + return nil; + } else { + return (LinphoneCall*)calls->data; + } +} + + +- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"]; + if (cell == nil) { + cell = [[UICallCell alloc] init]; + } + + LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + [cell setData:[self addCallData:call]]; + [cell update]; + + if ([indexPath row] == 0) { + [cell firstCell]; + } else { + [cell otherCell]; + } + + if (linphone_core_get_calls_nb(lc) > 1) { + tableView.scrollEnabled = TRUE; + } else { + tableView.scrollEnabled = FALSE; + } + return cell; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + LinphoneCore* lc = [LinphoneManager getLc]; + + return [InCallTableViewController callCount:lc] + (int)(linphone_core_get_conference_size(lc) > 0); +} + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; + LinphoneCore* lc = [LinphoneManager getLc]; + int count = 0; + + if ([InCallTableViewController callCount:lc] > 0) + count++; + + if (linphone_core_get_conference_size([LinphoneManager getLc]) > 0) + count ++; + + return count; +} + +- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section +{ + return nil; +} + +- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section +{ + return nil; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath +{ + LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + UICallCellData* data = [callCellData objectForKey:[NSValue valueWithPointer:call]]; + if(data != nil &&data->minimize) + return [UICallCell getMinimizedHeight]; + return [UICallCell getMaximizedHeight]; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + [tableView deselectRowAtIndexPath:indexPath animated:NO]; + + LinphoneCore* lc = [LinphoneManager getLc]; + + bool inConf = (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0); + + LinphoneCall* selectedCall = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConf]; + + if (inConf) { + if (linphone_core_is_in_conference(lc)) + return; + LinphoneCall* current = linphone_core_get_current_call(lc); + if (current) + linphone_core_pause_call(lc, current); + linphone_core_enter_conference([LinphoneManager getLc]); + } else if (selectedCall) { + if (linphone_core_is_in_conference(lc)) { + linphone_core_leave_conference(lc); + } + if(!linphone_core_sound_resources_locked(lc)) { + linphone_core_resume_call([LinphoneManager getLc], selectedCall); + } + } +} + +- (void)removeCallData:(LinphoneCall*) call { + // Remove data associated with the call + if(call != NULL) { + NSValue *value = [NSValue valueWithPointer:call]; + UICallCellData * data = [callCellData objectForKey:value]; + if(data == nil) { + [callCellData removeObjectForKey:value]; + } + } +} + +- (UICallCellData*)addCallData:(LinphoneCall*) call { + // Handle data associated with the call + UICallCellData * data = nil; + if(call != NULL) { + NSValue *value = [NSValue valueWithPointer:call]; + data = [callCellData objectForKey:value]; + if(data == nil) { + data = [[UICallCellData alloc] init:call]; + [callCellData setObject:data forKey:value]; + } + } + return data; +} + +- (UICallCellData*)getCallData:(LinphoneCall*) call { + // Handle data associated with the call + UICallCellData * data = nil; + if(call != NULL) { + NSValue *value = [NSValue valueWithPointer:call]; + data = [callCellData objectForKey:value]; + } + return data; +} + +- (void)update { + UITableView *tableView = [self tableView]; + for (int section = 0; section < [tableView numberOfSections]; section++) { + for (int row = 0; row < [tableView numberOfRowsInSection:section]; row++) { + NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section]; + UICallCell* cell = (UICallCell*) [tableView cellForRowAtIndexPath:cellPath]; + [cell update]; + } + } +} + +- (void)dealloc { + [callCellData removeAllObjects]; + [callCellData dealloc]; + [super dealloc]; +} + +- (void)minimizeAll { + for(id key in callCellData) { + UICallCellData *data = [callCellData objectForKey:key]; + data->minimize = true; + } + [[self tableView] reloadData]; +} + +- (void)maximizeAll { + for(id key in callCellData) { + UICallCellData *data = [callCellData objectForKey:key]; + data->minimize = false; + } + [[self tableView] reloadData]; +} + + +@end diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index 8234edf1a..651baac8e 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -18,20 +18,18 @@ */ #import -#import -#import "ConferenceCallDetailView.h" -#import "UIVideoButton.h" #import "VideoZoomHandler.h" -#import "UILinphone.h" +#import "UICamSwitch.h" #import "CallDelegate.h" -#include "linphonecore.h" +#import "InCallTableViewController.h" @class VideoViewController; -@interface InCallViewController : UIViewController { +@interface InCallViewController : UIViewController { + InCallTableViewController* callTableController; UITableView* callTableView; UIView* videoGroup; @@ -41,38 +39,20 @@ UIView* testVideoView; #endif UICamSwitch* videoCameraSwitch; + UIActivityIndicatorView* videoWaitingForFirstImage; - NSTimer *durationRefreasher; - NSTimer *glowingTimer; - - float glow; - NSIndexPath* activePath; - - ABPeoplePickerNavigationController* myPeoplePickerController; - - UITableViewCell* activeCallCell; - - VideoViewController* mVideoViewController; - ConferenceCallDetailView* conferenceDetail; - BOOL mVideoShown; - BOOL mVideoIsPending; - - UIImage* verified, *unverified; - UIActionSheet* visibleActionSheet; - NSTimer* hideControlsTimer; + + BOOL videoShown; VideoZoomHandler* videoZoomHandler; + + UIActionSheet* visibleActionSheet; } -+ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf; -//+ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call; - -@property (nonatomic, retain) IBOutlet UIViewController* conferenceDetail; +@property (nonatomic, retain) IBOutlet InCallTableViewController* callTableController; @property (nonatomic, retain) IBOutlet UITableView* callTableView; -@property (nonatomic, retain) IBOutlet VideoViewController* videoViewController; - @property (nonatomic, retain) IBOutlet UIView* videoGroup; @property (nonatomic, retain) IBOutlet UIView* videoView; #ifdef TEST_VIDEO_VIEW_CHANGE diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 4b39572f3..e7b625855 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -33,11 +33,11 @@ const NSInteger SECURE_BUTTON_TAG=5; + @implementation InCallViewController -@synthesize conferenceDetail; +@synthesize callTableController; @synthesize callTableView; -@synthesize videoViewController; @synthesize videoGroup; @synthesize videoView; @@ -52,32 +52,6 @@ const NSInteger SECURE_BUTTON_TAG=5; return [super initWithNibName:@"InCallViewController" bundle:[NSBundle mainBundle]]; } -+ (bool)isInConference:(LinphoneCall*) call { - if (!call) - return false; - return linphone_call_get_current_params(call)->in_conference; -} - -+ (int)callCount:(LinphoneCore*) lc { - int count = 0; - const MSList* calls = linphone_core_get_calls(lc); - - while (calls != 0) { - if (![InCallViewController isInConference:((LinphoneCall*)calls->data)]) { - count++; - } - calls = calls->next; - } - return count; -} - -void addAnimationFadeTransition(UIView* view, float duration) { - CATransition* animation = [CATransition animation]; - animation.type = kCATransitionFromBottom; // kCATransitionFade; - animation.duration = duration; - [view.layer addAnimation:animation forKey:nil]; -} - - (void)orientationChanged: (NSNotification*) notif { int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; @@ -163,7 +137,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { [videoCameraSwitch setAlpha:0.0]; [UIView commitAnimations]; - if([[LinphoneManager instance] currentView] == PhoneView_InCall) + if([[LinphoneManager instance] currentView] == PhoneView_InCall && videoShown) [[LinphoneManager instance] showTabBar: false]; if (hideControlsTimer) { @@ -186,6 +160,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { #endif - (void)enableVideoDisplay:(BOOL)animation { + videoShown = true; [self orientationChanged:nil]; [videoZoomHandler resetZoom]; @@ -228,6 +203,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { } - (void)disableVideoDisplay:(BOOL)animation { + videoShown = false; if(animation) { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; @@ -264,8 +240,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { /* Update in call view buttons (visibility, state, ...) and call duration text. This is called periodically. The fullUpdate boolean is set when called after an event (call state change for instance) */ - (void)updateUIFromLinphoneState:(BOOL) fullUpdate { - activeCallCell = nil; - // check LinphoneCore is initialized LinphoneCore* lc = nil; if([LinphoneManager isLcReady]) @@ -277,12 +251,13 @@ void addAnimationFadeTransition(UIView* view, float duration) { [callTableView reloadData]; // update conference details view if displayed - if (self.presentedViewController == conferenceDetail) { + //TODO + /*if (self.presentedViewController == conferenceDetail) { if (!linphone_core_is_in_conference(lc)) [self dismissModalViewControllerAnimated:YES]; else [conferenceDetail.table reloadData]; - } + }*/ } // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. @@ -296,8 +271,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { /*[mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] debugName:"SPEAKER button"]; */ - verified = [[UIImage imageNamed:@"secured.png"] retain]; - unverified = [[UIImage imageNamed:@"unverified.png"] retain]; //Dialer init /*[zero initWithNumber:'0']; @@ -317,6 +290,8 @@ void addAnimationFadeTransition(UIView* view, float duration) { [mergeCalls addTarget:self action:@selector(mergeCallsPressed) forControlEvents:UIControlEventTouchUpInside]; [LinphoneManager set:mergeCalls hidden:YES withName:"MERGE button" andReason:"initialisation"];*/ + //TODO + /* if ([LinphoneManager runningOnIpad]) { ms_message("Running on iPad"); conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView-ipad" @@ -324,7 +299,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { } else { conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView" bundle:[NSBundle mainBundle]]; - } + }*/ UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)]; [singleFingerTap setNumberOfTapsRequired:1]; @@ -335,9 +310,7 @@ void addAnimationFadeTransition(UIView* view, float duration) { videoZoomHandler = [[VideoZoomHandler alloc] init]; [videoZoomHandler setup:videoGroup]; videoGroup.alpha = 0; - - mVideoShown=FALSE; - mVideoIsPending=FALSE; + //selectedCall = nil; //callTableView.rowHeight = 80; @@ -361,7 +334,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { contacts.imageView.contentMode = UIViewContentModeCenter; addCall.imageView.contentMode = UIViewContentModeCenter; dialer.imageView.contentMode = UIViewContentModeCenter;*/ - } - (void)transferPressed { @@ -404,7 +376,8 @@ void addAnimationFadeTransition(UIView* view, float duration) { [visibleActionSheet release]; visibleActionSheet = nil; - [UICallButton enableTransforMode:YES]; + //TODO + /*[UICallButton enableTransforMode:YES];*/ [[LinphoneManager instance] changeView:PhoneView_Dialer]; } else { // add 'Other' option @@ -423,40 +396,9 @@ void addAnimationFadeTransition(UIView* view, float duration) { } } -- (void)updateCallsDurations { - [self updateUIFromLinphoneState: NO]; -} - - (void)viewDidAppear:(BOOL)animated { [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; - [super viewDidAppear:animated]; - - [self updateCallsDurations]; - durationRefreasher = [NSTimer scheduledTimerWithTimeInterval:1 - target:self - selector:@selector(updateCallsDurations) - userInfo:nil - repeats:YES]; - glowingTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 - target:self - selector:@selector(updateGlow) - userInfo:nil - repeats:YES]; - glow = 0; - if (mVideoIsPending) { - mVideoIsPending=FALSE; - [self enableVideoDisplay: FALSE]; - } else { - [self disableVideoDisplay: FALSE]; - } - - UIDevice* device = [UIDevice currentDevice]; - if ([device respondsToSelector:@selector(isMultitaskingSupported)] - && [device isMultitaskingSupported]) { - //bool enableVideo = [[NSUserDefaults standardUserDefaults] boolForKey:@"enable_video_preference"]; - //[LinphoneManager set:contacts hidden:enableVideo withName:"CONTACT button" andReason:AT]; - //[LinphoneManager set:addVideo hidden:!contacts.hidden withName:"ADD_VIDEO button" andReason:AT]; - } + [super viewDidAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { @@ -467,23 +409,13 @@ void addAnimationFadeTransition(UIView* view, float duration) { [hideControlsTimer invalidate]; hideControlsTimer = nil; } - if (durationRefreasher != nil) { - [durationRefreasher invalidate]; - durationRefreasher = nil; - } - if (glowingTimer != nil) { - [glowingTimer invalidate]; - glowingTimer = nil; - } } - (void)viewDidDisappear:(BOOL)animated { - if (!mVideoShown) [[UIApplication sharedApplication] setIdleTimerDisabled:false]; + if (!videoShown) [[UIApplication sharedApplication] setIdleTimerDisabled:false]; } - (void)viewDidUnload { - [verified release]; - [unverified release]; [[NSNotificationCenter defaultCenter] removeObserver:self]; } @@ -494,17 +426,19 @@ void addAnimationFadeTransition(UIView* view, float duration) { [LinphoneManager set:controlSubView hidden:enable withName:"CONTROL view" andReason:AT]; [LinphoneManager set:padSubView hidden:!enable withName:"PAD view" andReason:AT];*/ } -- (void)displayCall:(LinphoneCall*) call InProgressFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - //restore view - [self displayPad:false]; + +- (void)displayVideoCall:(LinphoneCall*) call { UIDevice *device = [UIDevice currentDevice]; device.proximityMonitoringEnabled = YES; - //if ([speaker isOn]) - // [speaker toggle]; - [self updateUIFromLinphoneState: YES]; + if (call !=nil && linphone_call_get_dir(call)==LinphoneCallIncoming) { + //if ([speaker isOn]) [speaker toggle]; + } + [self updateUIFromLinphoneState: YES]; + + [self enableVideoDisplay: TRUE]; } -- (void)displayInCall:(LinphoneCall*) call FromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayInCall:(LinphoneCall*) call { UIDevice *device = [UIDevice currentDevice]; device.proximityMonitoringEnabled = YES; if (call !=nil && linphone_call_get_dir(call)==LinphoneCallIncoming) { @@ -515,27 +449,6 @@ void addAnimationFadeTransition(UIView* view, float duration) { [self disableVideoDisplay: TRUE]; } -- (void)displayDialerFromUI:(UIViewController*) viewCtrl forUser:(NSString*) username withDisplayName:(NSString*) displayName { - [self disableVideoDisplay: TRUE]; - UIViewController* modalVC = self.modalViewController; - UIDevice *device = [UIDevice currentDevice]; - device.proximityMonitoringEnabled = NO; - if (modalVC != nil) { - mVideoIsPending=FALSE; - // clear previous native window ids - /*if (modalVC == mVideoViewController) { - mVideoShown=FALSE; - linphone_core_set_native_video_window_id([LinphoneManager getLc],0); - linphone_core_set_native_preview_window_id([LinphoneManager getLc],0); - }*/ - [[LinphoneManager instance] fullScreen:false]; - //[self dismissModalViewControllerAnimated:FALSE];//just in case - } - - //[self dismissModalViewControllerAnimated:FALSE]; //disable animation to avoid blanc bar just below status bar*/ - [self updateUIFromLinphoneState: YES]; -} - static void hideSpinner(LinphoneCall* lc, void* user_data); - (void)hideSpinnerIndicator: (LinphoneCall*)call { @@ -550,33 +463,31 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); - NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); - const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); - NSString* lDisplayName = [lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@"" autorelease]; - - //bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); + // Handle data associated with the call + if(state == LinphoneCallReleased) { + [callTableController removeCallData: call]; + } else { + [callTableController addCallData: call]; + } switch (state) { - /*case LinphoneCallIncomingReceived: - [self displayIncomingCall:call - NotificationFromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - break;*/ - + case LinphoneCallIncomingReceived: case LinphoneCallOutgoingInit: - [self displayCall:call - InProgressFromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; - break; + { + if(linphone_core_get_calls_nb([LinphoneManager getLc]) > 1) { + [callTableController minimizeAll]; + } + } case LinphoneCallPausedByRemote: case LinphoneCallConnected: - [self displayInCall: call - FromUI:nil - forUser:lUserName - withDisplayName:lDisplayName]; + case LinphoneCallStreamsRunning: + case LinphoneCallUpdated: + //check video + if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { + [self displayVideoCall:call]; + } else { + [self displayInCall:call]; + } break; case LinphoneCallUpdatedByRemote: { @@ -588,37 +499,27 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); linphone_call_params_video_enabled(remote) && !linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) { linphone_core_defer_call_update([LinphoneManager getLc], call); - [self displayAskToEnableVideoCall:call forUser:lUserName withDisplayName:lDisplayName]; + [self displayAskToEnableVideoCall:call]; } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { - [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; + [self displayInCall:call]; } break; } - case LinphoneCallUpdated: - { - const LinphoneCallParams* current = linphone_call_get_current_params(call); - if (linphone_call_params_video_enabled(current)) { - [self enableVideoDisplay:TRUE]; - } else { - [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; - } - break; - - } case LinphoneCallPausing: case LinphoneCallPaused: { [self disableVideoDisplay: TRUE]; break; } - case LinphoneCallStreamsRunning: - //check video - if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { - [self enableVideoDisplay:TRUE]; - } else { - [self displayInCall:call FromUI:nil forUser:lUserName withDisplayName:lDisplayName]; + case LinphoneCallEnd: + case LinphoneCallError: + { + if(linphone_core_get_calls_nb([LinphoneManager getLc]) <= 1) { + [callTableController maximizeAll]; } - break; + //[self updateUIFromLinphoneState: YES]; + break; + } default: break; } @@ -637,10 +538,15 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } } -- (void)displayAskToEnableVideoCall:(LinphoneCall*) call forUser:(NSString*) username withDisplayName:(NSString*) displayName { +- (void)displayAskToEnableVideoCall:(LinphoneCall*) call { if (linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) return; + const char* lUserNameChars = linphone_address_get_username(linphone_call_get_remote_address(call)); + NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); + const char* lDisplayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); + NSString* lDisplayName = [lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@"" autorelease]; + // ask the user if he agrees CallDelegate* cd = [[CallDelegate alloc] init]; cd.eventType = CD_VIDEO_UPDATE; @@ -650,7 +556,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { if (visibleActionSheet != nil) { [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE]; } - NSString* title = [NSString stringWithFormat : NSLocalizedString(@"'%@' would like to enable video",nil), ([displayName length] > 0) ?displayName:username]; + NSString* title = [NSString stringWithFormat : NSLocalizedString(@"'%@' would like to enable video",nil), ([lDisplayName length] > 0)?lDisplayName:lUserName]; visibleActionSheet = [[UIActionSheet alloc] initWithTitle:title delegate:cd cancelButtonTitle:NSLocalizedString(@"Decline",nil) @@ -682,66 +588,11 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [videoWaitingForFirstImage release]; [[NSNotificationCenter defaultCenter] removeObserver:self]; - + [super dealloc]; } -+ (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{ - const MSList* calls = linphone_core_get_calls([LinphoneManager getLc]); - - if (!conf && linphone_core_get_conference_size([LinphoneManager getLc])) - index--; - - while (calls != 0) { - if ([InCallViewController isInConference:(LinphoneCall*)calls->data] == conf) { - if (index == 0) - break; - index--; - } - calls = calls->next; - } - - if (calls == 0) { - ms_error("Cannot find call with index %d (in conf: %d)", index, conf); - return nil; - } else { - return (LinphoneCall*)calls->data; - } -} - -- (void)updateActive:(bool_t)active cell:(UITableViewCell*) cell { - if (!active) { - - cell.backgroundColor = [UIColor colorWithRed:0.2 green:0.2 blue:0.2 alpha:0.2]; - - UIColor* c = [[UIColor blackColor] colorWithAlphaComponent:0.5]; - [cell.textLabel setTextColor:c]; - [cell.detailTextLabel setTextColor:c]; - } else { - cell.backgroundColor = [UIColor colorWithRed:0.4 green:0.4 blue:0.4 alpha:(0.7+sin(2*glow)*0.3)]; - [cell.textLabel setTextColor:[UIColor whiteColor]]; - [cell.detailTextLabel setTextColor:[UIColor whiteColor]]; - } - [cell.textLabel setBackgroundColor:[UIColor clearColor]]; - [cell.detailTextLabel setBackgroundColor:[UIColor clearColor]]; -} - -- (void)updateGlow { - if (!activeCallCell) - return; - - glow += 0.1; - - [self updateActive:YES cell:activeCallCell]; - [activeCallCell.backgroundView setNeedsDisplay]; - [activeCallCell setNeedsDisplay]; - [callTableView setNeedsDisplay]; -} - -- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { - [self updateActive:(cell == activeCallCell) cell:cell]; -} - +//TODO /* + (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call { if (call == NULL) { @@ -827,7 +678,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [ms release]; } }*/ - +/* - (void)updateConferenceCell:(UITableViewCell*) cell at:(NSIndexPath*)indexPath { LinphoneCore* lc = [LinphoneManager getLc]; @@ -850,105 +701,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { cell.imageView.image = nil; } -- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath -{ - // show conference detail view - [self presentModalViewController:conferenceDetail animated:true]; - -} - -- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"]; - if (cell == nil) { - cell = [[UICallCell alloc] init]; - } - - if([indexPath row] == 0) { - [cell firstCell]; - } else { - [cell otherCell]; - } - - LinphoneCore* lc = [LinphoneManager getLc]; - LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; - [cell updateCell:call]; - if(linphone_core_get_conference_size(lc) > 0) { - tableView.scrollEnabled = TRUE; - } else { - tableView.scrollEnabled = FALSE; - } - /* - if (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0) { - [self updateConferenceCell:cell at:indexPath]; - if (linphone_core_is_in_conference(lc)) - activeCallCell = cell; - cell.accessoryView = nil; - if (linphone_core_is_in_conference(lc)) - cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; - else - cell.accessoryType = UITableViewCellAccessoryNone; - } else { - LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:NO]; - if (call == nil) - return cell; // return dummy cell - - if (cell.accessoryView == nil) { - UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 28, 28)] autorelease]; - cell.accessoryView = containerView; - } - else { - for (UIView *view in cell.accessoryView.subviews) { - [view removeFromSuperview]; - } - } - [InCallViewController updateCellImageView:cell.imageView Label:cell.textLabel DetailLabel:cell.detailTextLabel AndAccessoryView:(UIView*)cell.accessoryView withCall:call]; - if (linphone_core_get_current_call(lc) == call) - activeCallCell = cell; - //cell.accessoryType = UITableViewCellAccessoryNone; - - // Call Quality Indicator - //TODO - UIImageView* callquality = [UIImageView new]; - [callquality setFrame:CGRectMake(0, 0, 28, 28)]; - if (call->state == LinphoneCallStreamsRunning) - { - [InCallViewController updateIndicator: callquality withCallQuality:linphone_call_get_average_quality(call)]; - } - else { - [callquality setImage:nil]; - } - - LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); - if (enc != LinphoneMediaEncryptionNone) { - cell.accessoryView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 60, 28)] autorelease]; - UIButton* accessoryBtn = [UIButton buttonWithType:UIButtonTypeCustom]; - [accessoryBtn setFrame:CGRectMake(30, 0, 28, 28)]; - [accessoryBtn setImage:nil forState:UIControlStateNormal]; - [accessoryBtn setTag:SECURE_BUTTON_TAG]; - accessoryBtn.backgroundColor = [UIColor clearColor]; - accessoryBtn.userInteractionEnabled = YES; - - if (enc == LinphoneMediaEncryptionSRTP || linphone_call_get_authentication_token_verified(call)) { - [accessoryBtn setImage: verified forState:UIControlStateNormal]; - } else { - [accessoryBtn setImage: unverified forState:UIControlStateNormal]; - } - [cell.accessoryView addSubview:accessoryBtn]; - - if (((UIButton*)accessoryBtn).imageView.image != nil && linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)) == LinphoneMediaEncryptionZRTP) { - [((UIButton*)accessoryBtn) addTarget:self action:@selector(secureIconPressed:withEvent:) forControlEvents:UIControlEventTouchUpInside]; - } - } - - //[cell.accessoryView addSubview:callquality]; - //[callquality release]; - } - */ - /*cell.userInteractionEnabled = YES; - cell.selectionStyle = UITableViewCellSelectionStyleNone;*/ - return cell; -} - - (void)secureIconPressed:(UIControl*) button withEvent: (UIEvent*) evt { NSSet* touches = [evt allTouches]; UITouch* touch = [touches anyObject]; @@ -979,7 +731,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [visibleActionSheet release]; } } - +*/ - (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { LinphoneCall* call = (LinphoneCall*)datas; // maybe we could verify call validity @@ -1029,7 +781,8 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } // user must jhave pressed 'other...' button as we did not find a call // with the correct indice - [UICallButton enableTransforMode:YES]; + //TODO + //[UICallButton enableTransforMode:YES]; [[LinphoneManager instance] changeView:PhoneView_Dialer]; break; } @@ -1037,65 +790,4 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { ms_error("Unhandled CallDelegate event of type: %d received - ignoring", type); } } - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ - LinphoneCore* lc = [LinphoneManager getLc]; - - return [InCallViewController callCount:lc] + (int)(linphone_core_get_conference_size(lc) > 0); -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; - LinphoneCore* lc = [LinphoneManager getLc]; - int count = 0; - - if ([InCallViewController callCount:lc] > 0) - count++; - - if (linphone_core_get_conference_size([LinphoneManager getLc]) > 0) - count ++; - - return count; -} - -- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section -{ - return nil; -} - -- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section -{ - return nil; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - [tableView deselectRowAtIndexPath:indexPath animated:NO]; - - LinphoneCore* lc = [LinphoneManager getLc]; - - bool inConf = (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0); - - LinphoneCall* selectedCall = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:inConf]; - - if (inConf) { - if (linphone_core_is_in_conference(lc)) - return; - LinphoneCall* current = linphone_core_get_current_call(lc); - if (current) - linphone_core_pause_call(lc, current); - linphone_core_enter_conference([LinphoneManager getLc]); - } else if (selectedCall) { - if (linphone_core_is_in_conference(lc)) { - linphone_core_leave_conference(lc); - } - if(!linphone_core_sound_resources_locked(lc)) { - linphone_core_resume_call([LinphoneManager getLc], selectedCall); - } - } - - [self updateUIFromLinphoneState: YES]; -} - @end diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 5640c3dad..bbec5dd1a 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -12,6 +12,7 @@ YES + IBUITableViewController IBUITableView IBUIActivityIndicatorView IBUIView @@ -108,7 +109,7 @@ YES IBCocoaTouchFramework 0.0 - 10 + 20 0.0 0.0 YES @@ -166,6 +167,15 @@ NO IBCocoaTouchFramework + + + + 1 + 1 + + IBCocoaTouchFramework + NO + @@ -226,21 +236,37 @@ 161 + + + callTableController + + + + 167 + dataSource - + - 107 + 168 delegate - + - 108 + 169 + + + + view + + + + 166 @@ -313,7 +339,7 @@ 106 - tableView + callTableView 160 @@ -321,6 +347,15 @@ camSwitch + + 162 + + + YES + + + callTableController + @@ -339,6 +374,8 @@ 160.CustomClassName 160.IBPluginDependency 160.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 162.CustomClassName + 162.IBPluginDependency 9.IBPluginDependency @@ -355,6 +392,8 @@ UICamSwitch com.apple.InterfaceBuilder.IBCocoaTouchPlugin + InCallTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -370,11 +409,19 @@ - 161 + 169 YES + + InCallTableViewController + UITableViewController + + IBProjectSource + ./Classes/InCallTableViewController.h + + InCallViewController UIViewController @@ -382,26 +429,24 @@ YES YES + callTableController callTableView - conferenceDetail testVideoView videoCameraSwitch videoGroup videoPreview videoView - videoViewController videoWaitingForFirstImage YES + InCallTableViewController UITableView - UIViewController UIView UICamSwitch UIView UIView UIView - VideoViewController UIActivityIndicatorView @@ -409,25 +454,24 @@ YES YES + callTableController callTableView - conferenceDetail testVideoView videoCameraSwitch videoGroup videoPreview videoView - videoViewController videoWaitingForFirstImage YES - callTableView - UITableView + callTableController + InCallTableViewController - conferenceDetail - UIViewController + callTableView + UITableView testVideoView @@ -449,10 +493,6 @@ videoView UIView - - videoViewController - VideoViewController - videoWaitingForFirstImage UIActivityIndicatorView diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index 28c0cfc14..9733ee39a 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -26,14 +26,22 @@ @interface UICallBar: UIViewController { UIPauseButton* pauseButton; + UIButton* startConferenceButton; + UIButton* stopConferenceButton; UIVideoButton* videoButton; UIMicroButton* microButton; - UISpeakerButton* speakerButton; + UISpeakerButton* speakerButton; + UIButton* optionsButton; } @property (nonatomic, retain) IBOutlet UIPauseButton* pauseButton; +@property (nonatomic, retain) IBOutlet UIButton* startConferenceButton; +@property (nonatomic, retain) IBOutlet UIButton* stopConferenceButton; @property (nonatomic, retain) IBOutlet UIVideoButton* videoButton; @property (nonatomic, retain) IBOutlet UIMicroButton* microButton; @property (nonatomic, retain) IBOutlet UISpeakerButton* speakerButton; +@property (nonatomic, retain) IBOutlet UIButton* optionsButton; + +- (IBAction)onOptionsClick:(id)sender; @end diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 59cc5417c..b568553a3 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -26,9 +26,12 @@ @implementation UICallBar @synthesize pauseButton; +@synthesize startConferenceButton; +@synthesize stopConferenceButton; @synthesize videoButton; @synthesize microButton; -@synthesize speakerButton; +@synthesize speakerButton; +@synthesize optionsButton; - (id)init { return [super initWithNibName:@"UICallBar" bundle:[NSBundle mainBundle]]; @@ -38,6 +41,10 @@ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; } +- (void)viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + - (void)callUpdate: (NSNotification*) notif { // check LinphoneCore is initialized LinphoneCore* lc = nil; @@ -51,6 +58,45 @@ [microButton update]; [pauseButton update]; [videoButton update]; + + if(linphone_core_get_calls_nb(lc) > 1) { + [pauseButton setHidden:true]; + LinphoneCall *currentCall = linphone_core_get_current_call(lc); + if(currentCall == NULL || !linphone_call_get_current_params(currentCall)->in_conference) { + [startConferenceButton setHidden:false]; + [stopConferenceButton setHidden:true]; + } else { + [startConferenceButton setHidden:true]; + [stopConferenceButton setHidden:false]; + } + } else { + [pauseButton setHidden:false]; + [startConferenceButton setHidden:true]; + [stopConferenceButton setHidden:true]; + } +} + +- (void)dealloc { + [pauseButton release]; + [startConferenceButton release]; + [stopConferenceButton release]; + [videoButton release]; + [microButton release]; + [speakerButton release]; + [optionsButton release]; + + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [super dealloc]; +} + +- (IBAction)onOptionsClick:(id)sender { + // Go to dialer view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: @"", nil] autorelease] + , @"setAddress:", + nil] autorelease]; + [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; } @end diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 644ab0de9..76785e424 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -185,14 +185,17 @@ 0 NO - + + NSImage + options_over.png + + NSImage add-call-over.png - NSImage - add-call-actif.png + options_default.png @@ -203,7 +206,7 @@ {{0, 67}, {105, 68}} - + _NS:9 NO @@ -218,7 +221,7 @@ NSImage pause-over.png - + NSImage play-actif.png @@ -229,6 +232,58 @@ + + + -2147483384 + {{0, 67}, {105, 68}} + + + + _NS:9 + NO + + Start Conference + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + start-conference-over.png + + + + NSImage + start-conference-actif.png + + + + + + + -2147483384 + {{0, 67}, {105, 68}} + + + + _NS:9 + NO + + Stop conference + + IBCocoaTouchFramework + 0 + 0 + NO + + + + + + + 264 @@ -263,7 +318,6 @@ {{215, 67}, {105, 68}} - _NS:9 NO @@ -342,6 +396,39 @@ 16 + + + optionsButton + + + + 19 + + + + stopConferenceButton + + + + 25 + + + + startConferenceButton + + + + 26 + + + + onOptionsClick: + + + 7 + + 20 + @@ -374,6 +461,8 @@ + + callTabBar @@ -389,43 +478,55 @@ 6 - back + dialerButton 7 - hangup + hangupButton 8 - pause + pauseButton 10 - addCall + optionsButton 12 - video + videoButton 11 - micro + microButton 9 - speaker + speakerButton + + + 21 + + + startConferenceButton + + + 23 + + + stopConferenceButton @@ -435,13 +536,17 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIMicroButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -451,7 +556,7 @@ UIPauseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -460,17 +565,31 @@ - 18 + 26 UICallBar UIViewController + + onOptionsClick: + id + + + onOptionsClick: + + onOptionsClick: + id + + UIMicroButton + UIButton UIPauseButton UISpeakerButton + UIButton + UIButton UIVideoButton @@ -478,6 +597,10 @@ microButton UIMicroButton + + optionsButton + UIButton + pauseButton UIPauseButton @@ -486,6 +609,14 @@ speakerButton UISpeakerButton + + startConferenceButton + UIButton + + + stopConferenceButton + UIButton + videoButton UIVideoButton @@ -504,22 +635,6 @@ ./Classes/UIHangUpButton.h - - UIMicroButton - UIToggleButton - - IBProjectSource - ./Classes/UIMicroButton.h - - - - UIPauseButton - UIToggleButton - - IBProjectSource - ./Classes/UIPauseButton.h - - UISpeakerButton UIToggleButton @@ -566,13 +681,14 @@ YES 3 - {160, 134} - {160, 134} + {16, 16} {209, 136} {209, 136} {160, 134} {160, 134} {160, 134} + {160, 134} + {160, 134} {209, 136} {209, 136} {209, 136} @@ -581,6 +697,8 @@ {160, 134} {160, 134} {160, 134} + {209, 136} + {209, 136} {160, 134} {160, 134} {160, 134} diff --git a/Classes/LinphoneUI/UICallButton.m b/Classes/LinphoneUI/UICallButton.m index 6957344e5..850ad2df5 100644 --- a/Classes/LinphoneUI/UICallButton.m +++ b/Classes/LinphoneUI/UICallButton.m @@ -21,7 +21,6 @@ #import "LinphoneManager.h" #import "CoreTelephony/CTCallCenter.h" - @implementation UICallButton static BOOL transferMode = NO; diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h index e19eb8e62..306c53423 100644 --- a/Classes/LinphoneUI/UICallCell.h +++ b/Classes/LinphoneUI/UICallCell.h @@ -21,24 +21,53 @@ #include "linphonecore.h" + +@interface UICallCellData : NSObject { + @public + bool minimize; + LinphoneCall *call; +} + +- (id)init:(LinphoneCall*) call; + +@end + @interface UICallCell : UITableViewCell { + @private UIView *firstBackground; UIView *otherBackground; UILabel *addressLabel; - UILabel *timeLabel; - UIImageView *stateView; + UILabel *stateLabel; + UIImageView *stateImage; + UIImageView *avatarImage; + + UIView *headerView; + UIView *avatarView; + + UICallCellData *data; } +@property (weak) UICallCellData *data; + @property (nonatomic, retain) IBOutlet UIView* firstBackground; @property (nonatomic, retain) IBOutlet UIView* otherBackground; @property (nonatomic, retain) IBOutlet UILabel* addressLabel; -@property (nonatomic, retain) IBOutlet UILabel* timeLabel; -@property (nonatomic, retain) IBOutlet UIImageView* stateView; +@property (nonatomic, retain) IBOutlet UILabel* stateLabel; +@property (nonatomic, retain) IBOutlet UIImageView* stateImage; +@property (nonatomic, retain) IBOutlet UIImageView* avatarImage; + +@property (nonatomic, retain) IBOutlet UIView* headerView; +@property (nonatomic, retain) IBOutlet UIView* avatarView; - (void)firstCell; - (void)otherCell; -- (void)updateCell:(LinphoneCall *)call; +- (void)update; + +- (IBAction)doHeaderClick:(id)sender; + ++ (int)getMaximizedHeight; ++ (int)getMinimizedHeight; @end diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index e1f37e1fa..adcddb327 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -19,13 +19,32 @@ #import "UICallCell.h" +@implementation UICallCellData + +- (id)init:(LinphoneCall*) acall { + self = [super init]; + if(self != nil) { + self->minimize = false; + self->call = acall; + } + return self; +} +@end + @implementation UICallCell +@synthesize data; + @synthesize firstBackground; @synthesize otherBackground; -@synthesize stateView; + @synthesize addressLabel; -@synthesize timeLabel; +@synthesize stateLabel; +@synthesize stateImage; +@synthesize avatarImage; + +@synthesize headerView; +@synthesize avatarView; - (id)init { if ((self = [super init]) != nil) { @@ -50,37 +69,106 @@ [otherBackground setHidden:false]; } -- (void)updateCell:(LinphoneCall *)call { - const LinphoneAddress* addr = linphone_call_get_remote_address(call); - - if (addr) { - const char* lUserNameChars=linphone_address_get_username(addr); - NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); - NSMutableString* mss = [[NSMutableString alloc] init]; - // contact name - const char* n = linphone_address_get_display_name(addr); - if (n) - [mss appendFormat:@"%s", n, nil]; - else - [mss appendFormat:@"%@",lUserName , nil]; - - [addressLabel setText:mss]; - - // TODO - //imageView.image = [[LinphoneManager instance] getImageFromAddressBook:lUserName]; - [mss release]; - } else { - [addressLabel setText:@"Unknown"]; - //TODO - //imageView.image = nil; - } - - - NSMutableString* msDuration = [[NSMutableString alloc] init ]; - int duration = linphone_call_get_duration(call); - [msDuration appendFormat:@"%02i:%02i", (duration/60), duration - 60 * (duration / 60), nil]; - [timeLabel setText:msDuration]; - [msDuration release]; +- (void)update:(UICallCellData*) adata { + self->data = adata; + [self update]; } +- (void)update { + if(data) { + LinphoneCall *call = data->call; + const LinphoneAddress* addr = linphone_call_get_remote_address(call); + + if (addr) { + const char* lUserNameChars=linphone_address_get_username(addr); + NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); + NSMutableString* mss = [[NSMutableString alloc] init]; + // contact name + const char* n = linphone_address_get_display_name(addr); + if (n) + [mss appendFormat:@"%s", n, nil]; + else + [mss appendFormat:@"%@",lUserName , nil]; + + [addressLabel setText:mss]; + + // TODO + //imageView.image = [[LinphoneManager instance] getImageFromAddressBook:lUserName]; + [mss release]; + } else { + [addressLabel setText:@"Unknown"]; + //TODO + //imageView.image = nil; + } + + + LinphoneCallState state = linphone_call_get_state(call); + if(state == LinphoneCallPaused || state == LinphoneCallPausing) { + [stateImage setImage:[UIImage imageNamed:@"pause-champ-numero-actif"]]; + } else if(state == LinphoneCallOutgoingRinging) { + [stateImage setImage:[UIImage imageNamed:@"ring-champ-numero-actif"]]; + } else if(state == LinphoneCallOutgoingInit || state == LinphoneCallOutgoingProgress){ + [stateImage setImage:nil]; + } else { + [stateImage setImage:[UIImage imageNamed:@"play-champ-numero-actif"]]; + } + + NSMutableString* msDuration = [[NSMutableString alloc] init]; + int duration = linphone_call_get_duration(call); + [msDuration appendFormat:@"%02i:%02i", (duration/60), duration - 60 * (duration / 60), nil]; + [stateLabel setText:msDuration]; + [msDuration release]; + + if(!data->minimize) { + CGRect frame = [self frame]; + frame.size.height = [avatarView frame].size.height; + [self setFrame:frame]; + [avatarView setHidden:false]; + } else { + CGRect frame = [self frame]; + frame.size.height = [headerView frame].size.height; + [self setFrame:frame]; + [avatarView setHidden:true]; + } + } +} + +- (IBAction)doHeaderClick:(id)sender { + NSLog(@"Toggle UICallCell"); + if(data) { + data->minimize = !data->minimize; + [self selfUpdate]; + } +} + +- (void)selfUpdate { + UITableView *parentTable = (UITableView *)self.superview; + if(parentTable) { + NSIndexPath *index= [parentTable indexPathForCell:self]; + if(index != nil) { + [parentTable reloadRowsAtIndexPaths:[[NSArray alloc] initWithObjects:index, nil] withRowAnimation:false]; + } + } +} + +- (void)dealloc { + [firstBackground release]; + [otherBackground release]; + [addressLabel release]; + [stateLabel release]; + [stateImage release]; + [avatarImage release]; + [headerView release]; + [super dealloc]; +} + ++ (int)getMaximizedHeight { + return 300; +} + ++ (int)getMinimizedHeight { + return 58; +} + + @end diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib index 9b55b8c9e..c64c44004 100644 --- a/Classes/LinphoneUI/UICallCell.xib +++ b/Classes/LinphoneUI/UICallCell.xib @@ -37,83 +37,158 @@ 288 - + 292 - {320, 63} + + + + 292 + {{0, 63}, {320, 250}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{0, 48}, {320, 262}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + ombre-cotes-avatar.png + + + + + 292 + {{80, 65}, {160, 170}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + avatar-inconnu.png + + + + {320, 300} - + _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - NO - + 3 - MC41AA + MCAwAA - - NSImage - champ-courbe-autres-numeros.png - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - -2147483356 - {320, 68} - - - - _NS:9 - NO + NO IBCocoaTouchFramework - 0 - 0 - NO - - - NSImage - champ-saisie-numero.png - - - - + 292 - {{10, 0}, {206, 51}} - - - - _NS:9 - NO - NO - 7 - NO - IBCocoaTouchFramework - 0102030405 - - 10 - - 549453824 - {256, 256} - - - - - - TU0AKgAEAAh1eIH/cHJ5/3Bzff9vcXX/bnB3/3Byef9vcXX/bG51/2xudf9ucHf/cHN9/2dqdP9ucXv/ + + + + 292 + {320, 63} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + champ-courbe-autres-numeros.png + + + + + + + -2147483356 + {320, 68} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + champ-saisie-numero.png + + + + + + + 292 + {{10, 0}, {206, 51}} + + + + _NS:9 + NO + NO + 7 + NO + IBCocoaTouchFramework + 0102030405 + + 10 + + 549453824 + {256, 256} + + + + + + TU0AKgAEAAh1eIH/cHJ5/3Bzff9vcXX/bnB3/3Byef9vcXX/bG51/2xudf9ucHf/cHN9/2dqdP9ucXv/ cHJ5/3Bzff9qbHP/b3F1/3N1fP9sbnX/am13/2ptd/9sbnX/am13/3l7gf91d33/bG95/2xudf9sb3n/ bG95/2dqdP9qbXf/c3V8/3Bzff93eoP/bG51/3Bzff9sbnX/dXd9/2dqdP9qbHP/bG51/2psc/9sb3n/ am13/2ptd/9sb3n/bG51/3V3ff97fYP/YmVu/25xe/9sb3n/c3Z//2psc/9zdXz/cHN9/2dqcf9qbHP/ @@ -4486,75 +4561,100 @@ cHN9/2xvef9wc33/AA0BAAADAAAAAQEAAAABAQADAAAAAQEAAAABAgADAAAABAAEAKoBAwADAAAAAQAB AAABBgADAAAAAQACAAABEQAEAAAAAgAEALIBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQCA AAABFwAEAAAAAgAEALoBHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAEAMIAAAAAAAgACAAI AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - - - - - - 3 - MCAwAA + + + + + + + scrollViewTexturedBackgroundColor + + + 0 + 10 + + 1 + 30 + + + Helvetica + 30 + 16 - scrollViewTexturedBackgroundColor - - - 0 - 10 - - 1 - 30 - - - Helvetica - 30 - 16 - - - - - 292 - {{224, 14}, {25, 25}} + + + 292 + {{224, 14}, {25, 25}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + + + 292 + {{262, 12}, {50, 29}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + 12:34 + + + 0 + 10 + 1 + + 1 + 15 + + + Helvetica + 15 + 16 + + + + + 292 + {{0, 5}, {200, 40}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + + + + + + + {320, 63} - + _NS:9 - NO + + NO IBCocoaTouchFramework - - - 292 - {{262, 12}, {50, 29}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - 00:01 - - - 0 - 10 - 1 - - 1 - 15 - - - Helvetica - 15 - 16 - - - {320, 53} + {320, 300} - + _NS:9 NO IBCocoaTouchFramework @@ -4564,27 +4664,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - stateView + avatarImage - + - 24 - - - - timeLabel - - - - 25 - - - - firstBackground - - - - 26 + 34 @@ -4594,6 +4678,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 27 + + + firstBackground + + + + 26 + addressLabel @@ -4602,6 +4694,47 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 28 + + + stateImage + + + + 33 + + + + stateLabel + + + + 32 + + + + avatarView + + + + 41 + + + + headerView + + + + 42 + + + + doHeaderClick: + + + 7 + + 39 + @@ -4626,43 +4759,88 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 16 - - - - - + + + + 31 + + + + + + + + avatarView + + + 29 + + + avatarImage + + + 36 + + + + + + + + + + + headerView + 14 - + otherBackground + + 20 + + + firstBackground + 17 - + addressLabel 18 - + stateView 19 - - timeLabel + + stateLabel - 20 - - - firstBackground + 38 + + + toggleButton + + + 30 + + + avatarShadowImage + + + 44 + + @@ -4679,44 +4857,77 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 28 + 44 UICallCell UITableViewCell + + doHeaderClick: + id + + + doHeaderClick: + + doHeaderClick: + id + + UILabel + UIImageView + UIView UIView + UIView UIView - UIImageView - UILabel + UIImageView + UILabel addressLabel UILabel + + avatarImage + UIImageView + + + avatarView + UIView + firstBackground UIView + + headerView + UIView + otherBackground UIView - - stateView + + stateImage UIImageView - - timeLabel + + stateLabel UILabel @@ -4736,8 +4947,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE YES 3 + {320, 339} {640, 125} {640, 135} + {640, 523} 1181 diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 22c874a59..4b6ba19d1 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -27,6 +27,8 @@ @synthesize deleteButton; @synthesize detailsButton; +#define DETAILS_DISABLED + - (id)init { if ((self = [super init]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIHistoryCell" @@ -87,7 +89,11 @@ } - (void)exitEditMode { +#ifdef DETAILS_DISABLED + [detailsButton setHidden:true]; +#else [detailsButton setHidden:false]; +#endif [deleteButton setHidden:true]; } diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index c7bd8aa41..de9e36f8a 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -37,9 +37,10 @@ [self update:[[LinphoneManager instance] currentView]]; } -- (void)receiveLinphoneMainViewChangeEvent: (NSNotification*) notif { - PhoneView view = [[notif.userInfo objectForKey: @"view"] intValue]; - [self update:view]; +- (void)receiveLinphoneMainViewChangeEvent: (NSNotification*) notif { + NSNumber *viewNumber = [notif.userInfo objectForKey: @"view"]; + if(viewNumber != nil) + [self update:[viewNumber intValue]]; } - (void)update:(PhoneView) view { diff --git a/Classes/LinphoneUI/UIToggleButton.h b/Classes/LinphoneUI/UIToggleButton.h index 433fe8840..f3265e903 100644 --- a/Classes/LinphoneUI/UIToggleButton.h +++ b/Classes/LinphoneUI/UIToggleButton.h @@ -20,14 +20,17 @@ #import @protocol UIToggleButtonDelegate - -(void) onOn; - -(void) onOff; - -(bool) onUpdate; + - (void)onOn; + - (void)onOff; + - (bool)onUpdate; @end @interface UIToggleButton : UIButton { } --(bool) update; --(bool) toggle; + +- (bool)update; +- (void)setOn; +- (void)setOff; +- (bool)toggle; @end diff --git a/Classes/LinphoneUI/UIToggleButton.m b/Classes/LinphoneUI/UIToggleButton.m index 02c2b4dd4..5194912bc 100644 --- a/Classes/LinphoneUI/UIToggleButton.m +++ b/Classes/LinphoneUI/UIToggleButton.m @@ -36,6 +36,18 @@ return self.selected; } +- (void)setOn { + if (!self.selected) { + [self toggle]; + } +} + +- (void)setOff { + if (self.selected) { + [self toggle]; + } +} + - (bool)update { self.selected = [self onUpdate]; return self.selected; @@ -63,18 +75,22 @@ return self; } + - (void)dealloc { [super dealloc]; } + -(void) onOn { /*[NSException raise:NSInternalInconsistencyException format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];*/ } + -(void) onOff { /*[NSException raise:NSInternalInconsistencyException format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];*/ } + -(bool) onUpdate { /*[NSException raise:NSInternalInconsistencyException format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];*/ diff --git a/Resources/add-call-actif.png b/Resources/add-call-actif.png deleted file mode 100644 index 8dbce108c7a13b7215c5678dbd60029435a5a3ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7123 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 diff --git a/Resources/add_call_more_default.png b/Resources/add_call_more_default.png new file mode 100644 index 0000000000000000000000000000000000000000..0932c749d964806d504320892ec3ae231700510e GIT binary patch literal 3587 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 literal 0 HcmV?d00001 diff --git a/Resources/add_call_more_disable.png b/Resources/add_call_more_disable.png new file mode 100644 index 0000000000000000000000000000000000000000..caee628d048ef6f36a869da034e38a35e0982fa5 GIT binary patch literal 3465 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 CI_M4n literal 0 HcmV?d00001 diff --git a/Resources/add_call_more_over.png b/Resources/add_call_more_over.png new file mode 100644 index 0000000000000000000000000000000000000000..09e5b91978ecd75e57f89e100ab2d39428d8c09b GIT binary patch literal 3554 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�H|q_gAuUy6A}l=AgWHi``Zi87ZBHLb=;Fb^*1g!Laja9 zd@lGFLavr_-vwnz(}GIEj)U<$DAoiCAy5eOU_qQnB#HqM2!{9&!iSMqSR@f35(ok( z9xmn0j^#^qD)odf%93&mNzx|a^PNs7&ne&$_5waE7K=R^2og&nVjX2x5_QE|9g&j? zD%@eRn{A|-u!0^%G><4DrCch~cPUtGX=(3;t&WL8Q6=NMP#YiSL41qFlh<3cgVf>w zgz-VNLtkdY`8wP|l-NzwdE`e}fwsD%oF0!BpK z2`=`3YR0F6;d`3nU(GVPMRlNO`M&ijqp zcAwl>MxYUOyT`$*jWoYDEKKg51i*K1eKW;FEJE-)N)hiz?OdHW|dOx-f`I)E^+TkD)pGo1^^v)L!YRF6xS z-){Xm=K->TeT}9o0}c+~zAWQk9Zewn)t?+c^X9Jz9&<*KhsEn>@|yO{O~{&S=o({p|H9N?1WI}Ya$$bQg*)rg zM|vGMzx3%Ky|55@Yp~H2x^`sba{Pq`(f+WCAD)>K{IY&KoGxpwnb~q6AmHPjs4XH% zPCvf#$<@twGG~%kTS>v2Ti+ylBQ#ESFNc2CH;@*XWSci9Ifj|g zmdz~j_i7%T1F*k+tz|7vXN8Z|F9ui5ocp4vE52nBaw=%>yw2kHYFcTX^K8(Qp_}4C z7nG!X#6+&A>|AB}YI|aD*0Tjfapl<4`w;=V9bt`8fHd<6sOka6kT0z?w0Wv*yh6DoomDvG+YQjxZ=HSgBbBx$6ewP(8$7pN5n1k)nzUn2 z8a-@Q(A3tk@}m#Wo@S561iGUPUWv_E&G*~%s#GqgHvFdqLyIwQo3*75N88v#`%aw< z+%T`P-~eJI*Jwugm%BM3wHq7Oy|S$A*fnqeALa;YB{!mviOjfe)ZW;O&0hd7Ud9|6 zxVg77XNmY(7YDP=KSZ_%sit)GpJmoX&qaUdOxr3}Ji5e4VdRR3hd0GWM>OuKMQL4s zzB-C+E`p-(uAx`c^&mH*V)SmoD($ecc~fK19rxiz-_tX08;wh|cpEV2;Cbor!vJA5 z91L6ozd3It0}Qt5tkg~edrG7cQui&=Ov^_cZpO`wcH>E(x|T=C>!@R|+XjT**ZcP! zX|2le*~Msg2sXKSmUNA_f@+`e6$CqNVc X%+t(>((I3fJolU?d8w*dVXXQaSpuga literal 0 HcmV?d00001 diff --git a/Resources/cadenas-interrogation.png b/Resources/cadenas-interrogation.png new file mode 100644 index 0000000000000000000000000000000000000000..1f68accf219a5d0c035feb80ff39ef4db62c198e GIT binary patch literal 1658 zcmbVNX;2eq82*xQ1mwslVw8$&L_xGo+B#WCuvdLzFfKCDH z5iKfEtY}+HEw)&-GKw?WORKh3samb}5NFzPhT2v|ahxfRSi9k{{o(kdJF~Oj`|a~Q z@A19w?uOz;g{jHYk^umzwgs4jede&Yke>hmr~erB6KhOmEG}j#RnFAlGyzOr%1uBv zKfZ!+5V*HCbcVTnGS}b zu}j2yqrK%i2WB1f#aen1$uL2kR9aJ0BdL)~D0+ny(Q36Z4Vg^LBE;d^0E0)wf$*$x z1&j!LXkU==Q2{8Xh`XsOMlWI`9ZkU>wA-Hu2f|~8VoN5C;6W)Ofu(+bEUyuCm~jyQ zhVfK%*jXDSqz)oXRnZ>yJj!Q{liAum+ffY2Mx$Fy``AOlD>2GbPj7X{Ki-6Fht^qoGF$LZB$i2#}qBU33E302(h$ zRW0ZF48YsR8=L`^bN;9Ur#7W@9nW5PsNtQYeofgDej?zUirz9Qwq%0AxbBdVb7Wq} zN@2@zL=b(57vO8$%&(w?9}+rmn7c|Ix1cH7JQKv(c5=Hg%6>)Sl8X{Z{`1DK(u@zF zEgcVsvIOB>Z#7o-#dVp|ia%_;_8G9BtnZrHv|z~aZGATw0=wfIT-j%W?G-03reKM8 zS{|j}JHIlgPXe9U4+${t>4e7C-Lo#2pcPsHhZIx;`6!C(Wb_vb4O!AAyq<2viQ{0W;g zdZV3PpzuLM%0OA~&rROW!pu1d^EloET1Rikqm0OH!zVvx@7fDKxSNCtGm->lSijQE zDc#w&KJ#9+Yt@74(Ohn5_Kx?zto?yAH*&Xe(|4`E@!lM68fd=h+F0!ct$Q2XkuTO0 zg5rW>{Ql)@O0V&E8$?sDr;DRJzGk>!hey>>GNohR-_O~yov-Gji?M{re6aTHs-Ej1 zUfSW`w@-AE@ow94NAZQEj>+P@J=3Nb5Af5PoA=!x?7A_t?VPaLycbMU4wLkx(AJg5 zdxo-JujRTHR=)k>Wb$iMWg1tTlP!)8S|;rq_P%Gf9?s1@OD1=3y^=~EU5$54XTbh} z2|_ZlWfE~S)RSk6zp&@!svcAxm%E|#7Z4J4Cuq1Jo;>vKD=pv5jr|R5mPOdd=CalQ E0Au+)`v3p{ literal 0 HcmV?d00001 diff --git a/Resources/cadenas.png b/Resources/cadenas.png new file mode 100644 index 0000000000000000000000000000000000000000..0a48c7d1464962b9304307449de57e3c806ec44b GIT binary patch literal 1340 zcmbVMTWs4@7(VGGbQ>*Ms}(x7$~a*K(Zv@bMH<7KyA2N=*8a#{60`)2Ee3D-kHHhlOBxgeM(v%7BvKX zDWx9~;hZ>tdXbnK$zMbr092->SX_@s4suB)XBQ2Oy_i!m8-R|kqADf_kxulZ0ZHb` z)wxeeLQ3)EQ|%ELQ3EI=b&qPOZ?q?t934!0Qe;;r(NW~EKo035QOsrK0$1e8bzKgx zjctk~)*<>JPi_Pik3@-pq9LN)4%?E@1ql~zryWj~Wm^db(vX4-MKf(Q%Q+YhLSpkF zu{SN1=6Z$DrY~&qWJcFjj-rN#hwZ}-yP^$Hw8!HyG#I80BiafhvMv_eT5K997uOvbglyCVaLqu~x|5{r5mH@WV+a=CzpL|xHhijpmNKs2N1N+F}DM4+#oh=@r^Hf-Z~HnJ6vCcS`C zAx+5<>-FWNZT!1K(9bxa(*ZZ~_TbP%t{@X~`5k_mVaZKy>i^V?!og5RbNr`S%3HVt zjpbJBV`FQ0kc=lr!=vFp^34x;I(f-s#}0Tnd|s_S|1{m(VuepwP$Uz2<$V0tCn(*29+<*$}4rnWil}rqA3YtL`;b)LdF#64$_qCU1Uz%r?@zQh4)Npl-@+t3C<)61(qloNa!( zCDza}{p%kZIk7NyweHsR0QjuJJ#(tXQdM_w(fr7%JrCDMe>V~H@1Nh_db<(iJEv?z zroE3nn8?4r@AS3t8yD)Amw@e~<|%&i@Wjmve`d^kNYoTRcd2B%?{ok451PhLKj}R( zQ);$*_Z^%1yHXu#X!_Cm)`4rt{7J?2PJ6Yj6pBCOJ?p!CPN0{{|#{L1!>$r#j literal 0 HcmV?d00001 diff --git a/Resources/finir-conference-actif.png b/Resources/finir-conference-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..baf09bc3dde2df17e802aef29c1f37f57caa0c53 GIT binary patch literal 6850 zcmbVxcQjnz*S=2l61_`^s581j^cKDMZiq65F?zxvg6Kqx=piCR7X;CJjV^lh-s=oM z`IPVP{o}jdKi<36UH9yB_Vet0_SyTMyUvZ&)>J0Kr^81>LnBgEQP91Aj^5u9co=AC z=)nu0$?gSOxS}y!59$E-v4MfnWbL80U=~$~jU!kWY-8`|(F>MDL&J1%(l>@1Yp8?l zpb$QrKRSHA5chjD8k(fEue*(%3mDE~3wCsJlVUsg{)3Ih$zF=hNLT});Vut;;iTdZ z1MB%~>f8Cd*ooV-Nk3ze^ab4$K)`St7GH>~nns{3lTNA>;S8apwo}0r(-1 zKlA!a+Y_z}{{L?LS8Y#yKX)*{F4z<51+%+f4~Iwpg70JZzZ?3ac<&8J3+8mcC^oJN zP&+RO*bT0#AjNh+!e{Sf4*~$i06?Iq5I|G_AR-0?$|}jri_6K2Dv8L80>ov3|8o2{ ztfGLdkb}MzZd>fJYcu`ih*=erbLKx)_AI zzC95&e|^*#$H6zj1tIW-531B)W=DR+$T^cy)*e%c&jl5#6Y67Ief{9j%1(_+JGuFG zpgu4#pe}7YOMGv7_=Bdi$*1A%7y`V)x&T6qrY`u9e7+2VsIj4G<4@!-8@nDm=B;pMs z?TO^&VA}@By0!b1x!@A(Ju#PItH>5iFk#cA{3Kox(Mo+5;gUY*qXL$B?`UFd3=kxo z=BbqYE}MiM$D=ug%6DssdTmgmuCCsQj0l-cN12IDIVPU)92GDT5O7O8!Hw@QjVP`_ z8akpB9;y%X6ij zbf*1$s*y!_a-qNo9$(U}S@-W~l|Ct57a zUNq#sEBJCF!$@KMs=EhIPJI)b>0=&_VNlBg&Lav;+$TPBo*YU5+z9E$fEvrt$jN;> zxxEBH?&Rbhi|}c+k-Bmq?DqDEXihyC9mw%MoOysO`mWU`VnHlen7y*&77ToeEns=) zKngCfLk>~C>Sn=z4u{?f%p-}aubx!8Mlm$_KW9*OxRgcUok)|dXTJ!ca}D~O=4Uc- zYGTXe>3MXRqlzbp!mhP27i$I*a-wN1A9ib$IBI5`NFKB2S1g+!ft&LK`Vklj{ z;8po4I4e`L^K*^mL_ODW#=J>S55qQQKqoL|Ne#0Bpj%^7X#Omg*R((*m3ioO@DyD- z=nmam@W-mQ57Fhvp-3`h7nz1}a}zKV%v6}he{#~1w2 z-#Wf_i}K5p6EiWAZQ|}6J`E*CWtPVWIi7QI2hxa%lY+%)R;v~Z zTn-ME1N0s=U8`q7(?y*i>)0ETH>4bbf_j;&%*JZbxwj8`5-@3DDqcrH*49p*x3c@D z03aKA#bR={TwbCZA%A{{$yPEe;vV;)@vfyv;ps^5Q9l+@J;Egj>viX1Q=n#Te~-sp zP}&Xxjh9?Dl9&M|D|&ZyNYID!|E?OI*=)h2-6$Y{2#tO4Xcd8)ACb5dtMd&mW-7<) zk_ug=(Y|BAdn;zObqp948br@LXI`hPj<>tMxVz)({9$tuSW#Jd1q&QsSLju!!};}j z+C*U$Pe~~{9&<2EphWkY(SPHBLup~m>e)q)ykv_?s!+HJY?Bq2>%f|<$#iY;AbT-O z@Z{@DwM93P$D4?RD5lbA^(7N~PU8Y3bf>#)0SPZLtM~J5tw(?8?<+@)(RlTAJ12fI z>(^!SSoX~g3nY1D7983v<#S5Cv9zbZlVMs}k!vK7;<}hA-rNhkqqXj~VH`yVrN)GY zrl-?RX(uvoq@sH=+>)_6P*It4^RmdKZIz+#Xkpf7zl#n_(8CK|r@uqqUSV1pq6Run z-z7ty(39LANtTS}^&Qh2`xaN-+UD4^P?20-94roJOCuumV>V2T`700~I@`HqtmRFfD$0+?Qou5^YEJp_ikY1yFTMGe)rNYsnEt`{eDmIO7j84>m>T87 zd8sTW88+Faz4r|{UgXM4k5p_f{8Y2Fz47F-IuC2tO`0TJ9tiPc;c}jR5d>7&aH9op zqi>mT5z%B!e=ppLFT>BtIg5bjCU5#6{yc=&(7OG2YWyv!p-iazlwxIGp@23aZ*3L9 z(x8S~G#^@Z=GNAkA}{eXg3i{q4+lS%YY2HB^uW8Pb=0S!W-CizgBo55Kuh(H!8c^# zzEcd`jqbRw?i8iq;S9fykk@OCmi!hu5DJt4bjLJG3*pvTEe6-z?_TJB_!QA?N#!Q7n_#{MxVFh zi2VA=7aV_iHyI{TiZ||sD9I}tkTT3u`cz)fj;?y9Ccb*t!^-e@H*f6G#qFvDzf}t1 z`2|g-2jR?vk4U;no)@L5F0_pt!BhBrZ=3?W3J%L+>3zo42ih zFa~EwR0jju@WJ!YHR2j^*Mc0+lr(JH!W;>z(<9`H^*U$XEyp%~^Wha_~~bag8^leK)g)Hde)-}Rq-WZ3PF+29eJBkhf%)S!7m<9Qnm|()4!;V zIk$2VCEuAz+Xl(Tm#a<3B%>%0O`cbfd_2s{f!%gXXowR=tqT2%pQ&mS1acUk$>p|* zG%2}s^;?-+&^=ygsYt%=3#L$9SvhSkuiDmeyj0( zS=k%XJv6&>wNk=x(4`xA#U!|MkYJ`55X(mQ9@NZ}AGFfYI~9OE>#qcnQC;TDQ*_z3+C*S;R!i9)EOgtQt&&y}#-=eUhBF?S8plj=s&{ zEQVL5HI~z481~e6K=TkA*Xchce};oqG9-TeEpcCC2}(lL$q#;CNKl_G+}$^ z(}cGdso&u*FKjm%ou!9j*qXt5OYh)4FQj>q`H{`WqAR`PuN%(@11C71@Z_}=^pco0 z?1<6WnLNZ>x^TU^8s1q zCDtz1z9B`B?^wYUkJ)C%qk@%mE-agiA(2oGBlfgS%Nf7(Ylp)#si5Xsnc;cUA4Vff zGAo-S&gHa}WV*jWU#~AkGW6;W>OoD`zki&`rx>cZ%e=!Oa8(V(riCDK5p#v98-^&3 zk>Z=If`jjVL9Ytl7&`l-w;qAt;N@4IIk}cMjW1Q>qzT@C?eZINi4Y&Qm&T}t#}vTa za_v?NxwuLSwA5%^Q{sLbh5x9HX$=rnov9Qa%sDvPTwYJMQ)(vo-DKR2u46y#T)x#$ zXfwLP=q9m*q~kOZAz#~e)lbrd)HdO1ohA~ySQ%|!*EaxL>6F>5y19iYa0sg6`2OGNh}}-E7%97l;O%uEgJViczOVvg;}BxzOierJ-W0Olo8Fy@8Of#oz46L zqDFQmwcOp1JEbl*x+GHq!?10$77UfI_VoS!T=QLP*mn&&gRQJ~&SdGPotHrm3lENz zxB~Qb=FgK+%HBK(l9Zk`c7{t$Qmm5NPv(A(l&*I1snJXf!I7CS8xz9QbtqqJXv$TP z?L3ad9KJBeBa5jzxWf)y;Nq%N=~U?#jHhI%>+&+$w~%_+XpfUM_0hewZ};2XLn`y# zswAs)0`cYL2FtSvbmTf=A#2+S1KP=q7cwkKem(HVJ9c z_R(CeAa-1r+1BIERH|aO$mSLG2;7vv>@#!XWn5^Ny!#yEzAt|cn-+iFzJ6`z&+Kwq z(YF$pnO7e59x5y6o!Qd!Y8~X&Jue?F*9UHFG#uBh!Pd+ ztvg|C^Hdw}>D)UJU317u&Vmk{E+vzG1RLu??vKyqo1flRMTQW`@tuzV}npPgC5o7NAmqSwp1^! zidME0^OX4Pn7%ZzPd;SOFjuEywm{B5I`X$eJS}p{cFB1Betb*s40klqpbHb-lQ(qY zod;poc^|iht~_;Gf0q7;=xuR)Sf`BgIB&*g0l|-tA7o3dyqYO}OHDd4zAt&w#?Nv_ zyda(vb!*}FO(zHs%OuMPj9>822$N_KXt4VV{RJE*wcc{e1t&WkE;VZ}KsLuF)Px8GQo|T@NkGdcnS(_=tOEcrr0A%xa zr4=f(bcrjOPb})Mjgsk}v7=h2U5(qHA#Jz0SElo~^~sv%-gU$|OC|>SXgFD7_KR^^&pB=B>QZoWLqdbM0{QzdkTU9^M3x)BO}$G zrpB`g6{`*l{ejJ|l{&Xw@^ULT<~*y_O%m6Xtim9th~)Ca^hC$ZLjq9Ahwq*stDC@U^BDyjMkZ)5n^BH@l=|18bhAQc%vlB5@o*q9N$FMW~ z+Y6I#;Zxk3?HK}T*M1(k@!iGypWJqzrgdX&Xn}5hf?!EcB=q0Q?m1SgQoLx2@wpgt zyx{~)E$`KD4z}6|n1~MH(3YqunyY*R4#eGdN~gY@Jq|N3krkg*Q(2|X@w&z-1M=6C zgu2w)J0Cx&VlEY0Hyk$qv7wEe7{UNd)jz~gBq%9QU2XHA`eZyDMyr54m5Vk&q2~%c zX5L!g=bTMUk-s8ZCeg|o>ck9meVwT6C4l{OSY0b%f3Mg$yS>G{`z3LDCaD)BS1iLJ zNRyU(!}+`j_v(ljc_}7-(L$M}R@z&8y5rK+~C%9 zq+y6^Ze8EdM%=s{zg5D_n@wv1$YFi;vhdtiOn^m`SOzRelclO&{ZR50)NyddbAQa$ z^G)w7sR6l=ZEi=NRIO02Re#k@nLv0%d%Ld?$+J|c&Vw(}jePYYV8r)!MB++?~3Rhb>2!Wj4x!V zxPB4_Wjv_+bdWffWH3B-$42~BdH4+7bH%@??Ps?iqtQe+;8_4C;$4l{j`N~rMS zH@f3V*XP1%pWbm?JfnJB^>otHIkaQ7#mP-)%M|=;gZMm|SnGU|hGv(UMu=K!3LNd1 z)i2pqXI^i#;vuprlI{&vTK{71K8KXbV5w%?8J<7fWK=?xeNYF$W=i*N>Sk;Yi02MW z#uIi3yOp0rr55*@bVkMAm~-q5aOgoHKP;$ zp0HO)IkG65ZDKMJh0F4_^GmHJrh#Q6Z0CuPuijd9JcpG0Q%n7rLKC>md9E6O6su)w zg5o53W4$Dw->HDEcc!mN??jBEia(t|Y8IFE1BK2WeKX;cT> zq2#yG&K&+?G$N)m`OH-FGo)T{SE-O&5iG~rAd612v@Jv^V5eTFY(4nB-Q00{ehTHw zvsZ9g_1|x1c}j$P`f8kjV#m5vU%s|D*JS3I`PAG*TcyAFZAd4okNM?TU;Z%Ud8DgG zNI_Shht2@J)rXqaEcH`#t_Xn(Z{@89`?RsEd#5w9E8aIGnS4Sd9W(hnIUuRBd^ldHYuo?@@d@UBVJ&lL^uNnIR@ zAZD9V5LW1TY4^J^3n>5>V_k;je(M_umT6%qvb$z>NVA+yN;^H)h#QB&cooOQ_m E0~pY=6951J literal 0 HcmV?d00001 diff --git a/Resources/finir-conference-over.png b/Resources/finir-conference-over.png new file mode 100644 index 0000000000000000000000000000000000000000..132af8c6d0a088fbeca3b9592ada28506bc53d26 GIT binary patch literal 4511 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 literal 0 HcmV?d00001 diff --git a/Resources/options_default.png b/Resources/options_default.png new file mode 100644 index 0000000000000000000000000000000000000000..dd06140cdd230d95643de0c3b131e2cda0dcd9c6 GIT binary patch literal 7422 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 literal 0 HcmV?d00001 diff --git a/Resources/options_disabled.png b/Resources/options_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..0339da9723b59af1d887d92a092694bf0f5462be GIT binary patch literal 7265 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 literal 0 HcmV?d00001 diff --git a/Resources/ring-champ-numero-actif.png b/Resources/ring-champ-numero-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..1231ba873cf5bcceeaea871b36567ee72158ee4e GIT binary patch literal 2431 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 literal 0 HcmV?d00001 diff --git a/Resources/start-conference-actif.png b/Resources/start-conference-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..ca03a9940a7263c85dc6ddf6a27cd6c13db86b38 GIT binary patch literal 8390 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 literal 0 HcmV?d00001 diff --git a/Resources/start-conference-over.png b/Resources/start-conference-over.png new file mode 100644 index 0000000000000000000000000000000000000000..6446f9dea2de4d5b9fac7faf0c4e6ce1595e639b GIT binary patch literal 5518 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 UVOt-bUtdUXXx>CUQMZr!AG_-bHvj+t literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 8fb12ee79..d6a3dc5c7 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -181,6 +181,18 @@ 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; + D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; + D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; + D31AAF63159B5B6F002C6B02 /* start-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */; }; + D31AAF64159B5B6F002C6B02 /* start-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */; }; + D31AAF65159B5B6F002C6B02 /* start-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF62159B5B6E002C6B02 /* start-conference-over.png */; }; + D31AAF66159B5B6F002C6B02 /* start-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF62159B5B6E002C6B02 /* start-conference-over.png */; }; + D31AAF69159B5C68002C6B02 /* finir-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */; }; + D31AAF6A159B5C68002C6B02 /* finir-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */; }; + D31AAF6B159B5C68002C6B02 /* finir-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF68159B5C68002C6B02 /* finir-conference-over.png */; }; + D31AAF6C159B5C68002C6B02 /* finir-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF68159B5C68002C6B02 /* finir-conference-over.png */; }; + D31AAF6E159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */; }; + D31AAF6F159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */; }; D31AC4B0158A29C600C2638B /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; }; D31AC4B1158A29C600C2638B /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; }; D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */; }; @@ -370,6 +382,24 @@ D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; D3A55FC015877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; + D3D6A39E159B0EEF005F692C /* add_call_more_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_more_default.png */; }; + D3D6A39F159B0EEF005F692C /* add_call_more_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_more_default.png */; }; + D3D6A3A0159B0EEF005F692C /* add_call_more_disable.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */; }; + D3D6A3A1159B0EEF005F692C /* add_call_more_disable.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */; }; + D3D6A3A2159B0EEF005F692C /* add_call_more_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39D159B0EEF005F692C /* add_call_more_over.png */; }; + D3D6A3A3159B0EEF005F692C /* add_call_more_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39D159B0EEF005F692C /* add_call_more_over.png */; }; + D3D6A3AB159B0EFE005F692C /* cadenas-barre.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */; }; + D3D6A3AC159B0EFE005F692C /* cadenas-barre.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */; }; + D3D6A3AD159B0EFE005F692C /* cadenas-interrogation.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */; }; + D3D6A3AE159B0EFE005F692C /* cadenas-interrogation.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */; }; + D3D6A3AF159B0EFE005F692C /* cadenas.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A7159B0EFE005F692C /* cadenas.png */; }; + D3D6A3B0159B0EFE005F692C /* cadenas.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A7159B0EFE005F692C /* cadenas.png */; }; + D3D6A3B1159B0EFE005F692C /* options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A8159B0EFE005F692C /* options_default.png */; }; + D3D6A3B2159B0EFE005F692C /* options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A8159B0EFE005F692C /* options_default.png */; }; + D3D6A3B3159B0EFE005F692C /* options_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A9159B0EFE005F692C /* options_disabled.png */; }; + D3D6A3B4159B0EFE005F692C /* options_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A9159B0EFE005F692C /* options_disabled.png */; }; + D3D6A3B5159B0EFE005F692C /* options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3AA159B0EFE005F692C /* options_over.png */; }; + D3D6A3B6159B0EFE005F692C /* options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3AA159B0EFE005F692C /* options_over.png */; }; D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; }; D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; }; D3EA5403159852080037DC6B /* tchat-edit-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* tchat-edit-actif.png */; }; @@ -452,10 +482,6 @@ D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; - D3F83F04158205A100336684 /* add-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF0158205A100336684 /* add-call-actif.png */; }; - D3F83F05158205A100336684 /* add-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF0158205A100336684 /* add-call-actif.png */; }; - D3F83F06158205A100336684 /* add-call-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF1158205A100336684 /* add-call-over.png */; }; - D3F83F07158205A100336684 /* add-call-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF1158205A100336684 /* add-call-over.png */; }; D3F83F08158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */; }; D3F83F09158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */; }; D3F83F0A158205A100336684 /* dialer-meteo-sortir-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */; }; @@ -888,6 +914,13 @@ 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallTableViewController.h; sourceTree = ""; }; + D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallTableViewController.m; sourceTree = ""; }; + D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "start-conference-actif.png"; path = "Resources/start-conference-actif.png"; sourceTree = ""; }; + D31AAF62159B5B6E002C6B02 /* start-conference-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "start-conference-over.png"; path = "Resources/start-conference-over.png"; sourceTree = ""; }; + D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "finir-conference-actif.png"; path = "Resources/finir-conference-actif.png"; sourceTree = ""; }; + D31AAF68159B5C68002C6B02 /* finir-conference-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "finir-conference-over.png"; path = "Resources/finir-conference-over.png"; sourceTree = ""; }; + D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ring-champ-numero-actif.png"; path = "Resources/ring-champ-numero-actif.png"; sourceTree = ""; }; D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIHistoryCell.xib; sourceTree = ""; }; D31B4B1E159876C0002E6C72 /* UICompositeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICompositeViewController.h; sourceTree = ""; }; D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICompositeViewController.m; sourceTree = ""; }; @@ -1022,6 +1055,15 @@ D3A55FBA15877E5E003FD403 /* UIContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactCell.h; sourceTree = ""; }; D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = ""; }; D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = ""; }; + D3D6A39B159B0EEF005F692C /* add_call_more_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_default.png; path = Resources/add_call_more_default.png; sourceTree = ""; }; + D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_disable.png; path = Resources/add_call_more_disable.png; sourceTree = ""; }; + D3D6A39D159B0EEF005F692C /* add_call_more_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_over.png; path = Resources/add_call_more_over.png; sourceTree = ""; }; + D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cadenas-barre.png"; path = "Resources/cadenas-barre.png"; sourceTree = ""; }; + D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cadenas-interrogation.png"; path = "Resources/cadenas-interrogation.png"; sourceTree = ""; }; + D3D6A3A7159B0EFE005F692C /* cadenas.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cadenas.png; path = Resources/cadenas.png; sourceTree = ""; }; + D3D6A3A8159B0EFE005F692C /* options_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_default.png; path = Resources/options_default.png; sourceTree = ""; }; + D3D6A3A9159B0EFE005F692C /* options_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_disabled.png; path = Resources/options_disabled.png; sourceTree = ""; }; + D3D6A3AA159B0EFE005F692C /* options_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_over.png; path = Resources/options_over.png; sourceTree = ""; }; D3EA53FB159850E80037DC6B /* LinphoneManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneManager.h; sourceTree = ""; }; D3EA53FC159850E80037DC6B /* LinphoneManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneManager.m; sourceTree = ""; }; D3EA53FF159852080037DC6B /* tchat-edit-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-edit-actif.png"; path = "Resources/tchat-edit-actif.png"; sourceTree = ""; }; @@ -1073,8 +1115,6 @@ D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; }; D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; }; D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; }; - D3F83EF0158205A100336684 /* add-call-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-call-actif.png"; path = "Resources/add-call-actif.png"; sourceTree = ""; }; - D3F83EF1158205A100336684 /* add-call-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-call-over.png"; path = "Resources/add-call-over.png"; sourceTree = ""; }; D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-meteo-sortir-actif.png"; path = "Resources/dialer-meteo-sortir-actif.png"; sourceTree = ""; }; D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-meteo-sortir-over.png"; path = "Resources/dialer-meteo-sortir-over.png"; sourceTree = ""; }; D3F83EF4158205A100336684 /* micro-OFF-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro-OFF-actif.png"; path = "Resources/micro-OFF-actif.png"; sourceTree = ""; }; @@ -1264,6 +1304,8 @@ D3ED3EB515873928006C0DE4 /* HistoryViewController.h */, D3ED3EB615873929006C0DE4 /* HistoryViewController.m */, D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */, + D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */, + D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */, 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */, D3F83EE91582021700336684 /* InCallViewController.h */, D3F83EEA1582021700336684 /* InCallViewController.m */, @@ -1744,13 +1786,14 @@ D3F83F3D1582223B00336684 /* 8-over.png */, D3F83F3E1582223B00336684 /* 9-actif.png */, D3F83F3F1582223B00336684 /* 9-over.png */, - D3F83EF0158205A100336684 /* add-call-actif.png */, - D3F83EF1158205A100336684 /* add-call-over.png */, D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */, D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */, D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */, D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */, D3ED3E6915861A53006C0DE4 /* add-contact-over.png */, + D3D6A39B159B0EEF005F692C /* add_call_more_default.png */, + D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */, + D3D6A39D159B0EEF005F692C /* add_call_more_over.png */, D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */, D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */, D354980215875534000081D8 /* all-contacts-actif.png */, @@ -1769,6 +1812,9 @@ D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */, D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */, D354981915876FE7000081D8 /* bouton-detail-contact-over.png */, + D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */, + D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */, + D3D6A3A7159B0EFE005F692C /* cadenas.png */, D3F83F801582278D00336684 /* cancel-actif.png */, D3F83F811582278D00336684 /* cancel-over.png */, D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */, @@ -1798,6 +1844,8 @@ D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */, D3F83F421582223B00336684 /* etoile-actif.png */, D3F83F431582223B00336684 /* etoile-over.png */, + D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */, + D31AAF68159B5C68002C6B02 /* finir-conference-over.png */, D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */, D31C9C89158A179A00756B45 /* fond-detail-numero.png */, D347347C1580E5F8003C7B8C /* history-actif.png */, @@ -1825,6 +1873,9 @@ 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, D3F34F2F1599B008005BE94F /* ombre-cotes-avatar.png */, + D3D6A3A8159B0EFE005F692C /* options_default.png */, + D3D6A3A9159B0EFE005F692C /* options_disabled.png */, + D3D6A3AA159B0EFE005F692C /* options_over.png */, D3F83EF8158205A100336684 /* pause-actif.png */, D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */, D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */, @@ -1842,6 +1893,7 @@ D3F83F761582253100336684 /* refuser-actif.png */, D3F83F771582253100336684 /* refuser-over.png */, D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */, + D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */, 22F254801073D99800AC9B3F /* ringback.wav */, 70571E1913FABCB000CDD3C2 /* rootca.pem */, D38327EF1580FE3A00FA0D23 /* settings-actif.png */, @@ -1851,6 +1903,8 @@ D3F83EFD158205A100336684 /* speacker-OFF-over.png */, D3F83EFE158205A100336684 /* speacker-ON-actif.png */, D3F83EFF158205A100336684 /* speacker-ON-over.png */, + D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */, + D31AAF62159B5B6E002C6B02 /* start-conference-over.png */, 22226C11118197C0000CA27B /* startcall-green.png */, D3432A5C158A4446001C6B0B /* status_connected.png */, D3432A70158A45AF001C6B0B /* status_disconnected.png */, @@ -2100,8 +2154,6 @@ D3832802158100E400FA0D23 /* settings-over.png in Resources */, D3832803158100E400FA0D23 /* tchat-over.png in Resources */, D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */, - D3F83F04158205A100336684 /* add-call-actif.png in Resources */, - D3F83F06158205A100336684 /* add-call-over.png in Resources */, D3F83F08158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */, D3F83F0A158205A100336684 /* dialer-meteo-sortir-over.png in Resources */, D3F83F0C158205A100336684 /* micro-OFF-actif.png in Resources */, @@ -2238,6 +2290,20 @@ D31B4B281598A390002E6C72 /* avatar-inconnu.png in Resources */, D31B4B2A1598A390002E6C72 /* avatar-small.png in Resources */, D3F34F301599B008005BE94F /* ombre-cotes-avatar.png in Resources */, + D3D6A39E159B0EEF005F692C /* add_call_more_default.png in Resources */, + D3D6A3A0159B0EEF005F692C /* add_call_more_disable.png in Resources */, + D3D6A3A2159B0EEF005F692C /* add_call_more_over.png in Resources */, + D3D6A3AB159B0EFE005F692C /* cadenas-barre.png in Resources */, + D3D6A3AD159B0EFE005F692C /* cadenas-interrogation.png in Resources */, + D3D6A3AF159B0EFE005F692C /* cadenas.png in Resources */, + D3D6A3B1159B0EFE005F692C /* options_default.png in Resources */, + D3D6A3B3159B0EFE005F692C /* options_disabled.png in Resources */, + D3D6A3B5159B0EFE005F692C /* options_over.png in Resources */, + D31AAF63159B5B6F002C6B02 /* start-conference-actif.png in Resources */, + D31AAF65159B5B6F002C6B02 /* start-conference-over.png in Resources */, + D31AAF69159B5C68002C6B02 /* finir-conference-actif.png in Resources */, + D31AAF6B159B5C68002C6B02 /* finir-conference-over.png in Resources */, + D31AAF6E159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2273,8 +2339,6 @@ 57282931154AF1460076F540 /* history-orange.png in Resources */, 57282933154AF14D0076F540 /* dialer-orange.png in Resources */, D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */, - D3F83F05158205A100336684 /* add-call-actif.png in Resources */, - D3F83F07158205A100336684 /* add-call-over.png in Resources */, D3F83F09158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */, D3F83F0B158205A100336684 /* dialer-meteo-sortir-over.png in Resources */, D3F83F0D158205A100336684 /* micro-OFF-actif.png in Resources */, @@ -2411,6 +2475,20 @@ D31B4B291598A390002E6C72 /* avatar-inconnu.png in Resources */, D31B4B2B1598A390002E6C72 /* avatar-small.png in Resources */, D3F34F311599B008005BE94F /* ombre-cotes-avatar.png in Resources */, + D3D6A39F159B0EEF005F692C /* add_call_more_default.png in Resources */, + D3D6A3A1159B0EEF005F692C /* add_call_more_disable.png in Resources */, + D3D6A3A3159B0EEF005F692C /* add_call_more_over.png in Resources */, + D3D6A3AC159B0EFE005F692C /* cadenas-barre.png in Resources */, + D3D6A3AE159B0EFE005F692C /* cadenas-interrogation.png in Resources */, + D3D6A3B0159B0EFE005F692C /* cadenas.png in Resources */, + D3D6A3B2159B0EFE005F692C /* options_default.png in Resources */, + D3D6A3B4159B0EFE005F692C /* options_disabled.png in Resources */, + D3D6A3B6159B0EFE005F692C /* options_over.png in Resources */, + D31AAF64159B5B6F002C6B02 /* start-conference-actif.png in Resources */, + D31AAF66159B5B6F002C6B02 /* start-conference-over.png in Resources */, + D31AAF6A159B5C68002C6B02 /* finir-conference-actif.png in Resources */, + D31AAF6C159B5C68002C6B02 /* finir-conference-over.png in Resources */, + D31AAF6F159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2484,6 +2562,7 @@ D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */, D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */, D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */, + D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2554,6 +2633,7 @@ D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */, D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */, D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */, + D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 6b1d647c269ff53a46d4a97977ee5779dedcd0a7 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 28 Jun 2012 18:42:47 +0200 Subject: [PATCH 021/397] Improve UI Add conference stuff Adjust button behaviours --- Classes/ContactsTableViewController.m | 2 +- Classes/DialerViewController.xib | 30 +- Classes/HistoryTableViewController.m | 2 +- Classes/InCallTableViewController.h | 1 + Classes/InCallTableViewController.m | 106 +++++-- Classes/InCallViewController.m | 36 ++- Classes/InCallViewController.xib | 28 +- Classes/LinphoneUI/UICallBar.h | 12 +- Classes/LinphoneUI/UICallBar.m | 31 +- Classes/LinphoneUI/UICallBar.xib | 131 ++++----- Classes/LinphoneUI/UICallCell.h | 6 +- Classes/LinphoneUI/UICallCell.m | 43 ++- Classes/LinphoneUI/UICallCell.xib | 132 ++++++++- Classes/LinphoneUI/UIConferenceHeader.h | 35 +++ Classes/LinphoneUI/UIConferenceHeader.m | 51 ++++ Classes/LinphoneUI/UIConferenceHeader.xib | 277 ++++++++++++++++++ Classes/LinphoneUI/UIContactCell.h | 2 + Classes/LinphoneUI/UIContactCell.m | 4 +- Classes/LinphoneUI/UIHangUpButton.h | 4 +- Classes/LinphoneUI/UIHangUpButton.m | 95 ++++-- Classes/LinphoneUI/UIHistoryCell.h | 2 + Classes/LinphoneUI/UIHistoryCell.m | 4 +- Classes/LinphoneUI/UIPauseButton.h | 15 +- Classes/LinphoneUI/UIPauseButton.m | 154 ++++++++-- Resources/cancel_white_bg_default.png | Bin 0 -> 5149 bytes Resources/cancel_white_bg_disabled.png | Bin 0 -> 4975 bytes Resources/cancel_white_bg_over.png | Bin 0 -> 5130 bytes .../champ-courbe-autres-numeros-first.png | Bin 0 -> 2577 bytes Resources/outgoing-champ-numero-actif.png | Bin 0 -> 1502 bytes linphone.xcodeproj/project.pbxproj | 44 +++ 30 files changed, 1023 insertions(+), 224 deletions(-) create mode 100644 Classes/LinphoneUI/UIConferenceHeader.h create mode 100644 Classes/LinphoneUI/UIConferenceHeader.m create mode 100644 Classes/LinphoneUI/UIConferenceHeader.xib create mode 100644 Resources/cancel_white_bg_default.png create mode 100644 Resources/cancel_white_bg_disabled.png create mode 100644 Resources/cancel_white_bg_over.png create mode 100644 Resources/champ-courbe-autres-numeros-first.png create mode 100644 Resources/outgoing-champ-numero-actif.png diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index f03e74c18..ece60dc47 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -90,7 +90,7 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UIContactCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIContactCell"]; if (cell == nil) { - cell = [[UIContactCell alloc] init]; + cell = [[UIContactCell alloc] initWithIdentifier:@"UIContactCell"]; } OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index 5063349d6..c3ef74098 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -534,15 +534,15 @@ NO NO - + NSImage add-contact-over.png - + NSImage add-contact-inactif.png - + NSImage add-contact-actif.png @@ -567,9 +567,18 @@ NO NO - - - + + NSImage + cancel_white_bg_over.png + + + NSImage + cancel_white_bg_disabled.png + + + NSImage + cancel_white_bg_default.png + @@ -641,6 +650,7 @@ {{214, 0}, {106, 69}} + _NS:9 NO IBCocoaTouchFramework @@ -1177,7 +1187,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1536,6 +1546,9 @@ backspace-actif.png backspace-disabled.png backspace-over.png + cancel_white_bg_default.png + cancel_white_bg_disabled.png + cancel_white_bg_over.png champ-saisie-numero.png diese-actif.png diese-over.png @@ -1576,6 +1589,9 @@ {213, 138} {213, 138} {213, 138} + {213, 138} + {213, 138} + {213, 138} {640, 135} {210, 113} {210, 113} diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index abef2df6c..7f9f7a04e 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -42,7 +42,7 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UIHistoryCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIHistoryCell"]; if (cell == nil) { - cell = [[UIHistoryCell alloc] init]; + cell = [[UIHistoryCell alloc] initWithIdentifier:@"UIHistoryCell"]; } const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); diff --git a/Classes/InCallTableViewController.h b/Classes/InCallTableViewController.h index 518cf947a..99abc4d60 100644 --- a/Classes/InCallTableViewController.h +++ b/Classes/InCallTableViewController.h @@ -24,6 +24,7 @@ #include "linphonecore.h" @interface InCallTableViewController : UITableViewController { + @private NSMutableDictionary* callCellData; NSTimer *updateTime; } diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index f5db69eeb..edd9fe1ce 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -19,12 +19,18 @@ #import "InCallTableViewController.h" #import "UICallCell.h" +#import "UIConferenceHeader.h" #import "LinphoneManager.h" #include "private.h" @implementation InCallTableViewController +enum TableSection { + ConferenceSection = 0, + CallSection = 1 +}; + - (void)myInit { self->callCellData = [[NSMutableDictionary alloc] init]; } @@ -53,6 +59,7 @@ return self; } + - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; updateTime = [NSTimer scheduledTimerWithTimeInterval:1 @@ -92,9 +99,6 @@ + (LinphoneCall*)retrieveCallAtIndex: (NSInteger) index inConference:(bool) conf{ const MSList* calls = linphone_core_get_calls([LinphoneManager getLc]); - if (!conf && linphone_core_get_conference_size([LinphoneManager getLc])) - index--; - while (calls != 0) { if ([InCallTableViewController isInConference:(LinphoneCall*)calls->data] == conf) { if (index == 0) @@ -113,24 +117,72 @@ } +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if(section == CallSection) { + return [[UIView alloc] initWithFrame:CGRectZero]; + } else if(section == ConferenceSection) { + LinphoneCore* lc = [LinphoneManager getLc]; + if(linphone_core_get_conference_size(lc) > 0){ + UIConferenceHeader *headerController = [[UIConferenceHeader alloc] init]; + [headerController update]; + UIView *headerView = [headerController view]; + [headerController release]; + return headerView; + } else { + return [[UIView alloc] initWithFrame:CGRectZero]; + } + } + return [[UIView alloc] initWithFrame:CGRectZero]; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + return [[UIView alloc] initWithFrame:CGRectZero]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + LinphoneCore* lc = [LinphoneManager getLc]; + if(section == CallSection) { + return 0.000001f; // Hack UITableView = 0 + } else if(section == ConferenceSection) { + if(linphone_core_get_conference_size(lc) > 0) { + return [UIConferenceHeader getHeight]; + } + } + return 0.000001f; // Hack UITableView = 0 +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + LinphoneCore* lc = [LinphoneManager getLc]; + if(section == CallSection) { + return 0.000000f; // Hack UITableView = 0 + } else if(section == ConferenceSection) { + if(linphone_core_get_conference_size(lc) > 0) { + return 20; + } + } + return 0.000001f; // Hack UITableView = 0 +} + - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"]; if (cell == nil) { - cell = [[UICallCell alloc] init]; + cell = [[UICallCell alloc] initWithIdentifier:@"UICallCell"]; } + bool inConference = indexPath.section == ConferenceSection; + LinphoneCore* lc = [LinphoneManager getLc]; - LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; [cell setData:[self addCallData:call]]; [cell update]; - if ([indexPath row] == 0) { + if ([indexPath section] == CallSection && [indexPath row] == 0 && linphone_core_get_conference_size(lc) == 0) { [cell firstCell]; } else { [cell otherCell]; } - if (linphone_core_get_calls_nb(lc) > 1) { + if (linphone_core_get_calls_nb(lc) > 1 || linphone_core_get_conference_size(lc) > 0) { tableView.scrollEnabled = TRUE; } else { tableView.scrollEnabled = FALSE; @@ -138,40 +190,40 @@ return cell; } -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + int count = 0; + LinphoneCore* lc = [LinphoneManager getLc]; - return [InCallTableViewController callCount:lc] + (int)(linphone_core_get_conference_size(lc) > 0); + if(section == CallSection) { + count = [InCallTableViewController callCount:lc]; + } else { + count = linphone_core_get_conference_size(lc); + if(linphone_core_is_in_conference(lc)) { + count--; + } + } + return count; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 1; - LinphoneCore* lc = [LinphoneManager getLc]; - int count = 0; - - if ([InCallTableViewController callCount:lc] > 0) - count++; - - if (linphone_core_get_conference_size([LinphoneManager getLc]) > 0) - count ++; - - return count; + return 2; } - (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - return nil; + return @""; } - (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { - return nil; + return @""; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:NO]; + bool inConference = indexPath.section == ConferenceSection; + LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; UICallCellData* data = [callCellData objectForKey:[NSValue valueWithPointer:call]]; if(data != nil &&data->minimize) return [UICallCell getMinimizedHeight]; @@ -184,11 +236,11 @@ LinphoneCore* lc = [LinphoneManager getLc]; - bool inConf = (indexPath.row == 0 && linphone_core_get_conference_size(lc) > 0); + bool inConference = indexPath.section == ConferenceSection; - LinphoneCall* selectedCall = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConf]; + LinphoneCall* selectedCall = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; - if (inConf) { + if (inConference) { if (linphone_core_is_in_conference(lc)) return; LinphoneCall* current = linphone_core_get_current_call(lc); diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index e7b625855..ef5b48163 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -397,11 +397,17 @@ const NSInteger SECURE_BUTTON_TAG=5; } - (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; - [super viewDidAppear:animated]; + + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewDidAppear:NO]; + } } - (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; if (visibleActionSheet != nil) { [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:NO]; } @@ -409,10 +415,26 @@ const NSInteger SECURE_BUTTON_TAG=5; [hideControlsTimer invalidate]; hideControlsTimer = nil; } + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewWillDisappear:NO]; + } +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewWillAppear:NO]; + } } - (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + if (!videoShown) [[UIApplication sharedApplication] setIdleTimerDisabled:false]; + + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewDidDisappear:NO]; + } } - (void)viewDidUnload { @@ -463,6 +485,12 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; + // Fake call update: Refresh UI + if(call == NULL) { + [self updateUIFromLinphoneState: YES]; + return; + } + // Handle data associated with the call if(state == LinphoneCallReleased) { [callTableController removeCallData: call]; @@ -517,7 +545,7 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); if(linphone_core_get_calls_nb([LinphoneManager getLc]) <= 1) { [callTableController maximizeAll]; } - //[self updateUIFromLinphoneState: YES]; + [self updateUIFromLinphoneState: YES]; break; } default: @@ -790,4 +818,8 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { ms_error("Unhandled CallDelegate event of type: %d received - ignoring", type); } } + + + + @end diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index bbec5dd1a..26a28d6a4 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -67,7 +67,7 @@ {{240, 354}, {80, 106}} - + IBCocoaTouchFramework @@ -100,25 +100,33 @@ 274 - {320, 460} + {{0, -10}, {320, 480}} - + _NS:418 YES IBCocoaTouchFramework - 0.0 - 20 + 10 + 25 0.0 0.0 - YES + NO NO + 10 + 25 + 0.0 + 0.0 + 1 + 1 + 0 + NO YES - 53 - 22 - 22 + 44 + 10 + 10 @@ -159,7 +167,7 @@ {320, 460} - + 3 MC42NjY2NjY2NjY3AA diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index 9733ee39a..b93362fbc 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -23,25 +23,27 @@ #import "UIPauseButton.h" #import "UISpeakerButton.h" #import "UIVideoButton.h" +#import "UIHangUpButton.h" @interface UICallBar: UIViewController { UIPauseButton* pauseButton; - UIButton* startConferenceButton; - UIButton* stopConferenceButton; + UIButton* conferenceButton; UIVideoButton* videoButton; UIMicroButton* microButton; UISpeakerButton* speakerButton; UIButton* optionsButton; + UIHangUpButton* hangupButton; } @property (nonatomic, retain) IBOutlet UIPauseButton* pauseButton; -@property (nonatomic, retain) IBOutlet UIButton* startConferenceButton; -@property (nonatomic, retain) IBOutlet UIButton* stopConferenceButton; +@property (nonatomic, retain) IBOutlet UIButton* conferenceButton; @property (nonatomic, retain) IBOutlet UIVideoButton* videoButton; @property (nonatomic, retain) IBOutlet UIMicroButton* microButton; @property (nonatomic, retain) IBOutlet UISpeakerButton* speakerButton; -@property (nonatomic, retain) IBOutlet UIButton* optionsButton; +@property (nonatomic, retain) IBOutlet UIButton* optionsButton; +@property (nonatomic, retain) IBOutlet UIHangUpButton* hangupButton; - (IBAction)onOptionsClick:(id)sender; +- (IBAction)onConferenceClick:(id)sender; @end diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index b568553a3..74e7f2f75 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -26,18 +26,19 @@ @implementation UICallBar @synthesize pauseButton; -@synthesize startConferenceButton; -@synthesize stopConferenceButton; +@synthesize conferenceButton; @synthesize videoButton; @synthesize microButton; @synthesize speakerButton; @synthesize optionsButton; +@synthesize hangupButton; - (id)init { return [super initWithNibName:@"UICallBar" bundle:[NSBundle mainBundle]]; } - (void)viewDidLoad { + [pauseButton setType:UIPauseButtonType_CurrentCall call:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; } @@ -58,28 +59,24 @@ [microButton update]; [pauseButton update]; [videoButton update]; + [hangupButton update]; if(linphone_core_get_calls_nb(lc) > 1) { - [pauseButton setHidden:true]; - LinphoneCall *currentCall = linphone_core_get_current_call(lc); - if(currentCall == NULL || !linphone_call_get_current_params(currentCall)->in_conference) { - [startConferenceButton setHidden:false]; - [stopConferenceButton setHidden:true]; - } else { - [startConferenceButton setHidden:true]; - [stopConferenceButton setHidden:false]; + if(![pauseButton isHidden]) { + [pauseButton setHidden:true]; + [conferenceButton setHidden:false]; } } else { - [pauseButton setHidden:false]; - [startConferenceButton setHidden:true]; - [stopConferenceButton setHidden:true]; + if([pauseButton isHidden]) { + [pauseButton setHidden:false]; + [conferenceButton setHidden:true]; + } } } - (void)dealloc { [pauseButton release]; - [startConferenceButton release]; - [stopConferenceButton release]; + [conferenceButton release]; [videoButton release]; [microButton release]; [speakerButton release]; @@ -99,4 +96,8 @@ [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; } +- (IBAction)onConferenceClick:(id)sender { + linphone_core_add_all_to_conference([LinphoneManager getLc]); +} + @end diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 76785e424..92d108fa6 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -221,7 +221,7 @@ NSImage pause-over.png - + NSImage play-actif.png @@ -238,7 +238,7 @@ {{0, 67}, {105, 68}} - + _NS:9 NO @@ -248,42 +248,19 @@ 0 0 NO + NO - + NSImage start-conference-over.png - - + NSImage start-conference-actif.png - - - -2147483384 - {{0, 67}, {105, 68}} - - - - _NS:9 - NO - - Stop conference - - IBCocoaTouchFramework - 0 - 0 - NO - - - - - - - 264 @@ -318,6 +295,7 @@ {{215, 67}, {105, 68}} + _NS:9 NO @@ -406,19 +384,19 @@ - stopConferenceButton - - - - 25 - - - - startConferenceButton + conferenceButton - 26 + 27 + + + + hangupButton + + + + 29 @@ -429,6 +407,15 @@ 20 + + + onConferenceClick: + + + 7 + + 28 + @@ -462,7 +449,6 @@ - callTabBar @@ -520,13 +506,7 @@ 21 - startConferenceButton - - - 23 - - - stopConferenceButton + conferenceButton @@ -545,8 +525,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -565,34 +543,45 @@ - 26 + 29 UICallBar UIViewController - - onOptionsClick: - id - - - onOptionsClick: - + + id + id + + + + onConferenceClick: + id + + onOptionsClick: id - + + UIButton + UIHangUpButton UIMicroButton UIButton UIPauseButton UISpeakerButton - UIButton - UIButton UIVideoButton + + conferenceButton + UIButton + + + hangupButton + UIHangUpButton + microButton UIMicroButton @@ -609,14 +598,6 @@ speakerButton UISpeakerButton - - startConferenceButton - UIButton - - - stopConferenceButton - UIButton - videoButton UIVideoButton @@ -635,6 +616,22 @@ ./Classes/UIHangUpButton.h + + UIMicroButton + UIToggleButton + + IBProjectSource + ./Classes/UIMicroButton.h + + + + UIPauseButton + UIToggleButton + + IBProjectSource + ./Classes/UIPauseButton.h + + UISpeakerButton UIToggleButton diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h index 306c53423..05a7eccc0 100644 --- a/Classes/LinphoneUI/UICallCell.h +++ b/Classes/LinphoneUI/UICallCell.h @@ -20,7 +20,7 @@ #import #include "linphonecore.h" - +#include "UIPauseButton.h" @interface UICallCellData : NSObject { @public @@ -40,6 +40,7 @@ UILabel *addressLabel; UILabel *stateLabel; UIImageView *stateImage; + UIPauseButton *pauseButton; UIImageView *avatarImage; UIView *headerView; @@ -57,6 +58,7 @@ @property (nonatomic, retain) IBOutlet UILabel* stateLabel; @property (nonatomic, retain) IBOutlet UIImageView* stateImage; @property (nonatomic, retain) IBOutlet UIImageView* avatarImage; +@property (nonatomic, retain) IBOutlet UIPauseButton *pauseButton; @property (nonatomic, retain) IBOutlet UIView* headerView; @property (nonatomic, retain) IBOutlet UIView* avatarView; @@ -65,6 +67,8 @@ - (void)otherCell; - (void)update; +- (id)initWithIdentifier:(NSString*)identifier; + - (IBAction)doHeaderClick:(id)sender; + (int)getMaximizedHeight; diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index adcddb327..cfdd143c7 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -42,12 +42,13 @@ @synthesize stateLabel; @synthesize stateImage; @synthesize avatarImage; +@synthesize pauseButton; @synthesize headerView; @synthesize avatarView; -- (id)init { - if ((self = [super init]) != nil) { +- (id)initWithIdentifier:(NSString*)identifier { + if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UICallCell" owner:self options:nil]; @@ -55,6 +56,9 @@ if ([arrayOfViews count] >= 1) { [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; } + // Set selected+over background: IB lack ! + [pauseButton setImage:[UIImage imageNamed:@"pause-champ-numero-over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; } return self; } @@ -75,12 +79,13 @@ } - (void)update { - if(data) { - LinphoneCall *call = data->call; + LinphoneCall *call = NULL; + if(data != nil && data->call != NULL) { + call = data->call; const LinphoneAddress* addr = linphone_call_get_remote_address(call); - if (addr) { - const char* lUserNameChars=linphone_address_get_username(addr); + if (addr != NULL) { + const char* lUserNameChars = linphone_address_get_username(addr); NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); NSMutableString* mss = [[NSMutableString alloc] init]; // contact name @@ -103,14 +108,19 @@ LinphoneCallState state = linphone_call_get_state(call); - if(state == LinphoneCallPaused || state == LinphoneCallPausing) { - [stateImage setImage:[UIImage imageNamed:@"pause-champ-numero-actif"]]; - } else if(state == LinphoneCallOutgoingRinging) { + + if(state == LinphoneCallOutgoingRinging) { [stateImage setImage:[UIImage imageNamed:@"ring-champ-numero-actif"]]; + [stateImage setHidden:false]; + [pauseButton setHidden:true]; } else if(state == LinphoneCallOutgoingInit || state == LinphoneCallOutgoingProgress){ - [stateImage setImage:nil]; + [stateImage setImage:[UIImage imageNamed:@"outgoing-champ-numero-actif"]]; + [stateImage setHidden:false]; + [pauseButton setHidden:true]; } else { - [stateImage setImage:[UIImage imageNamed:@"play-champ-numero-actif"]]; + [stateImage setHidden:true]; + [pauseButton setHidden:false]; + [pauseButton update]; } NSMutableString* msDuration = [[NSMutableString alloc] init]; @@ -131,6 +141,7 @@ [avatarView setHidden:true]; } } + [pauseButton setType:UIPauseButtonType_Call call:call]; } - (IBAction)doHeaderClick:(id)sender { @@ -143,12 +154,16 @@ - (void)selfUpdate { UITableView *parentTable = (UITableView *)self.superview; + [parentTable beginUpdates]; + [parentTable reloadData]; + [parentTable endUpdates]; + /* if(parentTable) { NSIndexPath *index= [parentTable indexPathForCell:self]; if(index != nil) { [parentTable reloadRowsAtIndexPaths:[[NSArray alloc] initWithObjects:index, nil] withRowAnimation:false]; } - } + }*/ } - (void)dealloc { @@ -163,11 +178,11 @@ } + (int)getMaximizedHeight { - return 300; + return 280; } + (int)getMinimizedHeight { - return 58; + return 54; } diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib index c64c44004..265869dbc 100644 --- a/Classes/LinphoneUI/UICallCell.xib +++ b/Classes/LinphoneUI/UICallCell.xib @@ -49,6 +49,10 @@ _NS:9 + + 3 + MCAwAA + NO IBCocoaTouchFramework 0 @@ -83,6 +87,7 @@ _NS:9 + NO IBCocoaTouchFramework @@ -98,6 +103,7 @@ _NS:9 + NO IBCocoaTouchFramework @@ -111,10 +117,8 @@ _NS:9 - - 3 - MCAwAA - + + NO NO IBCocoaTouchFramework @@ -130,7 +134,7 @@ _NS:9 - NO + IBCocoaTouchFramework 0 0 @@ -146,12 +150,12 @@ -2147483356 - {320, 68} + {320, 63} _NS:9 - NO + IBCocoaTouchFramework 0 0 @@ -159,7 +163,7 @@ NSImage - champ-saisie-numero.png + champ-courbe-autres-numeros-first.png @@ -170,7 +174,7 @@ {{10, 0}, {206, 51}} - + _NS:9 NO NO @@ -4593,6 +4597,40 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE NO IBCocoaTouchFramework + + + 292 + {{216, 6}, {41, 41}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + 8 + 8 + 8 + 8 + + + NSImage + play-champ-numero-over.png + + + NSImage + pause-champ-numero-actif.png + + + NSImage + play-champ-numero-actif.png + + + + 292 @@ -4656,6 +4694,19 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE _NS:9 + + NO + IBCocoaTouchFramework + + + + 292 + {320, 460} + + + + _NS:9 + NO IBCocoaTouchFramework @@ -4726,6 +4777,22 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 42 + + + backgroundView + + + + 46 + + + + pauseButton + + + + 48 + doHeaderClick: @@ -4791,6 +4858,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + headerView @@ -4817,7 +4885,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 18 - stateView + stateImage 19 @@ -4842,6 +4910,18 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + + 45 + + + background + + + 47 + + + pauseButton + @@ -4864,12 +4944,16 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIPauseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + - 44 + 48 @@ -4894,6 +4978,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE UIView UIView UIView + UIPauseButton UIImageView UILabel @@ -4922,6 +5007,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE otherBackground UIView + + pauseButton + UIPauseButton + stateImage UIImageView @@ -4936,6 +5025,22 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE ./Classes/UICallCell.h + + UIPauseButton + UIToggleButton + + IBProjectSource + ./Classes/UIPauseButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + 0 @@ -4948,9 +5053,12 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 3 {320, 339} + {640, 125} {640, 125} - {640, 135} {640, 523} + {43, 50} + {43, 46} + {43, 46} 1181 diff --git a/Classes/LinphoneUI/UIConferenceHeader.h b/Classes/LinphoneUI/UIConferenceHeader.h new file mode 100644 index 000000000..22b87cfaa --- /dev/null +++ b/Classes/LinphoneUI/UIConferenceHeader.h @@ -0,0 +1,35 @@ +/* UIConferenceHeader.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +#import "UIPauseButton.h" + +@interface UIConferenceHeader : UIViewController { + UIImageView *stateImage; + UIPauseButton *pauseButton; +} + +@property (nonatomic, retain) IBOutlet UIImageView* stateImage; +@property (nonatomic, retain) IBOutlet UIPauseButton *pauseButton; + ++ (int)getHeight; +- (void)update; + +@end diff --git a/Classes/LinphoneUI/UIConferenceHeader.m b/Classes/LinphoneUI/UIConferenceHeader.m new file mode 100644 index 000000000..240453ff8 --- /dev/null +++ b/Classes/LinphoneUI/UIConferenceHeader.m @@ -0,0 +1,51 @@ +/* UIConferenceHeader.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIConferenceHeader.h" + +#import "LinphoneManager.h" + +@implementation UIConferenceHeader + +@synthesize stateImage; +@synthesize pauseButton; + +- (id)init { + return [super initWithNibName:@"UIConferenceHeader" bundle:[NSBundle mainBundle]]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + // Set selected+over background: IB lack ! + [pauseButton setImage:[UIImage imageNamed:@"pause-champ-numero-over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [pauseButton setType:UIPauseButtonType_Conference call:nil]; +} + ++ (int)getHeight { + return 50; +} + +- (void)update { + [self view]; + [stateImage setHidden:true]; + [pauseButton update]; +} + +@end diff --git a/Classes/LinphoneUI/UIConferenceHeader.xib b/Classes/LinphoneUI/UIConferenceHeader.xib new file mode 100644 index 000000000..6839db24a --- /dev/null +++ b/Classes/LinphoneUI/UIConferenceHeader.xib @@ -0,0 +1,277 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUIImageView + IBUIView + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 292 + {320, 68} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + champ-titre-conference.png + + + + + 292 + {{224, 14}, {25, 25}} + + + _NS:9 + NO + IBCocoaTouchFramework + + + + 292 + {{216, 6}, {41, 41}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + 8 + 8 + 8 + 8 + + 3 + MC41AA + + + NSImage + play-champ-numero-over.png + + + NSImage + pause-champ-numero-actif.png + + + NSImage + play-champ-numero-actif.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + {320, 68} + + + + _NS:9 + + 3 + MQA + + 2 + + + NO + IBCocoaTouchFramework + + + + + + + view + + + + 5 + + + + stateImage + + + + 9 + + + + pauseButton + + + + 14 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + + + 7 + + + backgroundImage + + + 8 + + + stateImage + + + 13 + + + pauseButton + + + + + UIConferenceHeader + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIPauseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 14 + + + + + UIConferenceHeader + UIViewController + + UIPauseButton + UIImageView + + + + pauseButton + UIPauseButton + + + stateImage + UIImageView + + + + IBProjectSource + ./Classes/UIConferenceHeader.h + + + + UIPauseButton + UIToggleButton + + IBProjectSource + ./Classes/UIPauseButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {640, 135} + {43, 50} + {43, 46} + {43, 46} + + 1181 + + diff --git a/Classes/LinphoneUI/UIContactCell.h b/Classes/LinphoneUI/UIContactCell.h index 5b2217399..d7376d0ad 100644 --- a/Classes/LinphoneUI/UIContactCell.h +++ b/Classes/LinphoneUI/UIContactCell.h @@ -30,4 +30,6 @@ - (void)update:(ABRecordRef) record; +- (id)initWithIdentifier:(NSString*)identifier; + @end diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index 92dbee030..a0b292195 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -24,8 +24,8 @@ @synthesize firstNameLabel; @synthesize lastNameLabel; -- (id)init { - if ((self = [super init]) != nil) { +- (id)initWithIdentifier:(NSString*)identifier { + if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIContactCell" owner:self options:nil]; diff --git a/Classes/LinphoneUI/UIHangUpButton.h b/Classes/LinphoneUI/UIHangUpButton.h index d279493a3..596a81213 100644 --- a/Classes/LinphoneUI/UIHangUpButton.h +++ b/Classes/LinphoneUI/UIHangUpButton.h @@ -16,11 +16,13 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import +#import @interface UIHangUpButton : UIButton { } +- (void)update; + @end diff --git a/Classes/LinphoneUI/UIHangUpButton.m b/Classes/LinphoneUI/UIHangUpButton.m index a7a291e61..bc7b5da2f 100644 --- a/Classes/LinphoneUI/UIHangUpButton.m +++ b/Classes/LinphoneUI/UIHangUpButton.m @@ -20,46 +20,91 @@ #import "UIHangUpButton.h" #import "LinphoneManager.h" +#import "private.h" + @implementation UIHangUpButton --(void) touchUp:(id) sender { - LinphoneCore* lc = [LinphoneManager getLc]; - if (!lc) - return; - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - - if (call) - linphone_core_terminate_call(lc,call); - else if (linphone_core_is_in_conference(lc)) { - linphone_core_terminate_conference(lc); - } else { - const MSList* calls = linphone_core_get_calls(lc); - if (ms_list_size(calls) == 1 - && !linphone_call_params_local_conference_mode(linphone_call_get_current_params((LinphoneCall*)(calls->data)))) { - //Only one call in the list, hangin up! - linphone_core_terminate_call(lc,(LinphoneCall*)(calls->data)); - } else { - ms_message("Cannot make a decision on which call to terminate"); - } - } ++ (bool)isInConference:(LinphoneCall*) call { + if (!call) + return false; + return linphone_call_get_current_params(call)->in_conference; } -- (id)initWithFrame:(CGRect)frame { ++ (int)callCount:(LinphoneCore*) lc { + int count = 0; + const MSList* calls = linphone_core_get_calls(lc); - self = [super initWithFrame:frame]; + while (calls != 0) { + if (![UIHangUpButton isInConference:((LinphoneCall*)calls->data)]) { + count++; + } + calls = calls->next; + } + return count; +} + +-(void) touchUp:(id) sender { + if([LinphoneManager isLcReady]) { + LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* currentcall = linphone_core_get_current_call(lc); + if (linphone_core_is_in_conference(lc) || // In conference + (linphone_core_get_conference_size(lc) > 0 && [UIHangUpButton callCount:lc] == 0) // Only one conf + ) { + linphone_core_terminate_conference(lc); + } else if(currentcall != NULL) { // In a call + linphone_core_terminate_call(lc, currentcall); + } else { + const MSList* calls = linphone_core_get_calls(lc); + if (ms_list_size(calls) == 1) { // Only one call + linphone_core_terminate_call(lc,(LinphoneCall*)(calls->data)); + } + } + } +} + +- (void)myInit { + [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; +} + +- (id)init{ + self = [super init]; if (self) { - [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; + [self myInit]; } return self; } + - (id)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (self) { - [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; - } + [self myInit]; + } return self; } +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self myInit]; + } + return self; +} + +- (void)update { + if([LinphoneManager isLcReady]) { + LinphoneCore * lc = [LinphoneManager getLc]; + if(linphone_core_get_calls_nb(lc) == 1 || // One call + linphone_core_get_current_call(lc) != NULL || // In call + linphone_core_is_in_conference(lc) || // In conference + (linphone_core_get_conference_size(lc) > 0 && [UIHangUpButton callCount:lc] == 0) // Only one conf + ) { + [self setEnabled:true]; + return; + } + } + [self setEnabled:false]; +} + /* // Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. diff --git a/Classes/LinphoneUI/UIHistoryCell.h b/Classes/LinphoneUI/UIHistoryCell.h index 2d7575d32..7500e1c8a 100644 --- a/Classes/LinphoneUI/UIHistoryCell.h +++ b/Classes/LinphoneUI/UIHistoryCell.h @@ -35,6 +35,8 @@ @property (nonatomic, retain) IBOutlet UIButton* detailsButton; @property (nonatomic, retain) IBOutlet UIButton* deleteButton; +- (id)initWithIdentifier:(NSString*)identifier; + - (IBAction)onDetails:(id) event; - (IBAction)onDelete:(id) event; diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 4b6ba19d1..81dafdde6 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -29,8 +29,8 @@ #define DETAILS_DISABLED -- (id)init { - if ((self = [super init]) != nil) { +- (id)initWithIdentifier:(NSString*)identifier { + if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIHistoryCell" owner:self options:nil]; diff --git a/Classes/LinphoneUI/UIPauseButton.h b/Classes/LinphoneUI/UIPauseButton.h index 963378287..105b8b828 100644 --- a/Classes/LinphoneUI/UIPauseButton.h +++ b/Classes/LinphoneUI/UIPauseButton.h @@ -19,7 +19,20 @@ #import "UIToggleButton.h" +#import "linphonecore.h" + +typedef enum _UIPauseButtonType { + UIPauseButtonType_CurrentCall, + UIPauseButtonType_Call, + UIPauseButtonType_Conference +} UIPauseButtonType; + @interface UIPauseButton : UIToggleButton { - + @private + UIPauseButtonType type; + LinphoneCall* call; } + +- (void)setType:(UIPauseButtonType) type call:(LinphoneCall*)call; + @end diff --git a/Classes/LinphoneUI/UIPauseButton.m b/Classes/LinphoneUI/UIPauseButton.m index 1ff3186cc..615babfa7 100644 --- a/Classes/LinphoneUI/UIPauseButton.m +++ b/Classes/LinphoneUI/UIPauseButton.m @@ -25,17 +25,91 @@ @implementation UIPauseButton +- (void)myInit { + self->type = UIPauseButtonType_CurrentCall; +} + +- (id)init{ + self = [super init]; + if (self) { + [self myInit]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self myInit]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self myInit]; + } + return self; +} + +- (void)setType:(UIPauseButtonType) atype call:(LinphoneCall*)acall { + self->type = atype; + self->call = acall; +} + - (void)onOn { - LinphoneCall* currentCall = [UIPauseButton getCall]; - if (currentCall != nil) { - linphone_core_pause_call([LinphoneManager getLc], currentCall); + switch (type) { + case UIPauseButtonType_Call: + { + if (call != nil) { + linphone_core_pause_call([LinphoneManager getLc], call); + } + break; + } + case UIPauseButtonType_Conference: + { + linphone_core_leave_conference([LinphoneManager getLc]); + + // Fake event + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self]; + break; + } + case UIPauseButtonType_CurrentCall: + { + LinphoneCall* currentCall = [UIPauseButton getCall]; + if (currentCall != nil) { + linphone_core_pause_call([LinphoneManager getLc], currentCall); + } + break; + } } } - (void)onOff { - LinphoneCall* currentCall = [UIPauseButton getCall]; - if (currentCall != nil) { - linphone_core_resume_call([LinphoneManager getLc], currentCall); + switch (type) { + case UIPauseButtonType_Call: + { + if (call != nil) { + linphone_core_resume_call([LinphoneManager getLc], call); + } + break; + } + case UIPauseButtonType_Conference: + { + linphone_core_enter_conference([LinphoneManager getLc]); + // Fake event + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self]; + break; + } + case UIPauseButtonType_CurrentCall: + { + LinphoneCall* currentCall = [UIPauseButton getCall]; + if (currentCall != nil) { + linphone_core_resume_call([LinphoneManager getLc], currentCall); + } + break; + } } } @@ -59,35 +133,53 @@ } - (bool)onUpdate { + bool ret = false; // TODO: disable pause on not running call if([LinphoneManager isLcReady]) { - bool ret = false; - LinphoneCall* currentCall = [UIPauseButton getCall]; - if (currentCall != nil) { - LinphoneCallState state = linphone_call_get_state(currentCall); - if(state == LinphoneCallPaused || state == LinphoneCallPausing) { - ret = true; + LinphoneCore *lc = [LinphoneManager getLc]; + switch (type) { + case UIPauseButtonType_Call: + { + if (call != nil) { + LinphoneCallState state = linphone_call_get_state(call); + if(state == LinphoneCallPaused || state == LinphoneCallPausing) { + ret = true; + } + [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:""]; + } else { + [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; + } + break; + } + case UIPauseButtonType_Conference: + { + if(linphone_core_get_conference_size(lc) > 0) { + if (!linphone_core_is_in_conference(lc)) { + ret = true; + } + [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:""]; + } else { + [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; + } + break; + } + case UIPauseButtonType_CurrentCall: + { + LinphoneCall* currentCall = [UIPauseButton getCall]; + if (currentCall != nil) { + LinphoneCallState state = linphone_call_get_state(currentCall); + if(state == LinphoneCallPaused || state == LinphoneCallPausing) { + ret = true; + } + [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:""]; + } else { + [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; + } + break; } } - LinphoneCore* lc = [LinphoneManager getLc]; - int callsCount = linphone_core_get_calls_nb(lc); - - if (currentCall) { - if (linphone_core_is_in_conference(lc)) { - [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:"is in conference"]; - } else if ([UIPauseButton notInConferenceCallCount: lc] == callsCount && callsCount == 1) { - [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:"call count == 1"]; - } else { - [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; - } - } else { - [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; - } - return ret; - } else { - //not ready yet - return false; - } + } + return ret; } + (LinphoneCall*)getCall { diff --git a/Resources/cancel_white_bg_default.png b/Resources/cancel_white_bg_default.png new file mode 100644 index 0000000000000000000000000000000000000000..b68fb8744ff7e27165a30e9e671151f64492073f GIT binary patch literal 5149 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 literal 0 HcmV?d00001 diff --git a/Resources/cancel_white_bg_over.png b/Resources/cancel_white_bg_over.png new file mode 100644 index 0000000000000000000000000000000000000000..7b045d22217eca62e9db81cb1b4ead8d92afa4ed GIT binary patch literal 5130 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 literal 0 HcmV?d00001 diff --git a/Resources/outgoing-champ-numero-actif.png b/Resources/outgoing-champ-numero-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1f8f99b8248338a1c65030b4ecd62f6ebd45fd GIT binary patch literal 1502 zcmV<41tI#0P)W1pWQrR7pl${dg^f22$)bcPqoPi%%9sohkt~>* zC`JgPiy%4@2N`I_2NEIj1vG+;;#6?34Bs-g8Ad4^-NxFrYkTi`{6O2?yLD@~UZjgB zx$QZoj$p*wY4<>0L8_{tfr=hv<4ToxXFVLKYG~h<4e3g zX$A>~!nCxBc?am*K_gWMOZ8rp{c1!Q+Q3>Da(Aia%@h|TH5XQ+X|mr_9Ot* z*4A>ZEv^Z;BuPF1(Cc*rt~5@VYR;JQ?bFLwykAjK5%#RrYGnzd@ntJk{bfqYn5`2< zNU}WSyuYvKl+^Ej_2`jrniEYb002T{85@$*3QQ9xpI!cJ(Taou=RCTEnJy{Ql$u#< zd13XQg$oy&5(_*^+~8mW4Cd0TS@-u8Jy-n1od*wUCFXc12nNBFa@_LLnwq%4OG-*u zoKZ!NRWho$AR1n@SW6v6MV72lN0sX8YG$=sX~&KoNyZ5&B|kU(zOA?G`gy&=F~Lf*q2VS9@1+Es;l-VOI}|;wQA3<4`Px^V`C!&fR>il3{X5-IsTMzv!AwFtYz+X zW$R}}1$R1~00582BWqp>jjbg+J=C^t!=~p)1lQ~J005K8ghXmim+xTdhPMyx-@o5D zVmK58hD2-KuKuF$&iv+jZ|jE-4FRX1t_49%Fl-8a>i=xJ*06E&mbX;kjIo5YI1xaK zU~$dq+PS7|(}^wbR7@Hq6>-pNNs$X_GcgB(*ZGYlRK8q;tdk66mEs8%N+xPSqPpiKoHU2Q=$3Qia!H%95J z5Tw%bp_XnoY}#G<(HAOkPJA?XSNB6MQvR-Rn{sj*A;~GBmDd1}GgFOuyDE2H0D$uH zawbHQ$EfpTocme{tb`T?NU28lsfqfML(l-QefxIOg)E?~>=(*-1YD0C{OZ8vVXMQLGiSnPvmrZs zsu)p=M2gKw5lqj>DosuMR z&N)JdEJ;3}-!Dv=Hfw%rTDoy4X>c)2y$+=`ZatL99rnwY?mJU=y8AzUuQG4Z(x&Nm z-Ti<%l#_azU@{4R2cg|vjvW}`L4`A_p7kB6Y=%$dUy&f-R+-W3Waz1^LiT^;r} ze>!ve>(KeRbLX=9`g%>@erWQ9oRgE|Wn50`x#6h3cBSo&bHCKr0YF|}o?y4zslB}& ziP{(dgDRWOn>W7xtj*2M6~_&1etteHC@2_T7QR#MUq()E_Qg^CNdN!<07*qoM6N<$ Ef@FfvMF0Q* literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index d6a3dc5c7..e4529577b 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -213,6 +213,20 @@ D31C9C95158A1C1000756B45 /* appel-sortant.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8F158A1C1000756B45 /* appel-sortant.png */; }; D31C9C98158A1CDF00756B45 /* UIHistoryCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */; }; D31C9C99158A1CDF00756B45 /* UIHistoryCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */; }; + D3211BA6159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */; }; + D3211BA7159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */; }; + D3211BB0159C4EF10098460B /* UIConferenceHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3211BAE159C4EF00098460B /* UIConferenceHeader.m */; }; + D3211BB1159C4EF10098460B /* UIConferenceHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3211BAE159C4EF00098460B /* UIConferenceHeader.m */; }; + D3211BB2159C4EF10098460B /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */; }; + D3211BB3159C4EF10098460B /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */; }; + D3211BB9159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */; }; + D3211BBA159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */; }; + D3211BBE159CBFD60098460B /* cancel_white_bg_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */; }; + D3211BBF159CBFD70098460B /* cancel_white_bg_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */; }; + D3211BC0159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */; }; + D3211BC1159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */; }; + D3211BC2159CBFD70098460B /* cancel_white_bg_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */; }; + D3211BC3159CBFD70098460B /* cancel_white_bg_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */; }; D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D32409C4158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D326483815887D5200930C67 /* OrderedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483715887D5200930C67 /* OrderedDictionary.m */; }; @@ -933,6 +947,14 @@ D31C9C8F158A1C1000756B45 /* appel-sortant.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appel-sortant.png"; path = "Resources/appel-sortant.png"; sourceTree = ""; }; D31C9C96158A1CDE00756B45 /* UIHistoryCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIHistoryCell.h; sourceTree = ""; }; D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIHistoryCell.m; sourceTree = ""; }; + D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "outgoing-champ-numero-actif.png"; path = "Resources/outgoing-champ-numero-actif.png"; sourceTree = ""; }; + D3211BAD159C4EF00098460B /* UIConferenceHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIConferenceHeader.h; sourceTree = ""; }; + D3211BAE159C4EF00098460B /* UIConferenceHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIConferenceHeader.m; sourceTree = ""; }; + D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIConferenceHeader.xib; sourceTree = ""; }; + D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-courbe-autres-numeros-first.png"; path = "Resources/champ-courbe-autres-numeros-first.png"; sourceTree = ""; }; + D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_white_bg_default.png; path = Resources/cancel_white_bg_default.png; sourceTree = ""; }; + D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_white_bg_disabled.png; path = Resources/cancel_white_bg_disabled.png; sourceTree = ""; }; + D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_white_bg_over.png; path = Resources/cancel_white_bg_over.png; sourceTree = ""; }; D32409C1158B49A600C8C119 /* UILongTouchButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILongTouchButton.h; sourceTree = ""; }; D32409C2158B49A600C8C119 /* UILongTouchButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UILongTouchButton.m; sourceTree = ""; }; D326483615887D5200930C67 /* OrderedDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OrderedDictionary.h; path = Utils/OrderedDictionary.h; sourceTree = ""; }; @@ -1572,6 +1594,9 @@ D31B4B1E159876C0002E6C72 /* UICompositeViewController.h */, D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */, D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */, + D3211BAD159C4EF00098460B /* UIConferenceHeader.h */, + D3211BAE159C4EF00098460B /* UIConferenceHeader.m */, + D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */, D3A55FBA15877E5E003FD403 /* UIContactCell.h */, D3A55FBB15877E5E003FD403 /* UIContactCell.m */, D3A55FBE15877E69003FD403 /* UIContactCell.xib */, @@ -1817,6 +1842,10 @@ D3D6A3A7159B0EFE005F692C /* cadenas.png */, D3F83F801582278D00336684 /* cancel-actif.png */, D3F83F811582278D00336684 /* cancel-over.png */, + D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */, + D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */, + D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */, + D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */, D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */, D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */, D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */, @@ -1876,6 +1905,7 @@ D3D6A3A8159B0EFE005F692C /* options_default.png */, D3D6A3A9159B0EFE005F692C /* options_disabled.png */, D3D6A3AA159B0EFE005F692C /* options_over.png */, + D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */, D3F83EF8158205A100336684 /* pause-actif.png */, D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */, D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */, @@ -2304,6 +2334,12 @@ D31AAF69159B5C68002C6B02 /* finir-conference-actif.png in Resources */, D31AAF6B159B5C68002C6B02 /* finir-conference-over.png in Resources */, D31AAF6E159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */, + D3211BA6159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */, + D3211BB2159C4EF10098460B /* UIConferenceHeader.xib in Resources */, + D3211BB9159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */, + D3211BBE159CBFD60098460B /* cancel_white_bg_default.png in Resources */, + D3211BC0159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */, + D3211BC2159CBFD70098460B /* cancel_white_bg_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2489,6 +2525,12 @@ D31AAF6A159B5C68002C6B02 /* finir-conference-actif.png in Resources */, D31AAF6C159B5C68002C6B02 /* finir-conference-over.png in Resources */, D31AAF6F159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */, + D3211BA7159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */, + D3211BB3159C4EF10098460B /* UIConferenceHeader.xib in Resources */, + D3211BBA159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */, + D3211BBF159CBFD70098460B /* cancel_white_bg_default.png in Resources */, + D3211BC1159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */, + D3211BC3159CBFD70098460B /* cancel_white_bg_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2563,6 +2605,7 @@ D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */, D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */, + D3211BB0159C4EF10098460B /* UIConferenceHeader.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2634,6 +2677,7 @@ D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */, D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */, + D3211BB1159C4EF10098460B /* UIConferenceHeader.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From e1b7f91385a84ac3ce881ac12ac6263b117f2066 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 29 Jun 2012 18:39:23 +0200 Subject: [PATCH 022/397] Add incall dialer Add animation improve UI --- Classes/ConferenceCallDetailCell.xib | 257 --- Classes/ConferenceCallDetailView-ipad.xib | 479 ------ Classes/ConferenceCallDetailView.h | 44 - Classes/ConferenceCallDetailView.m | 168 -- Classes/ConferenceCallDetailView.xib | 478 ------ Classes/DialerViewController.h | 1 + Classes/DialerViewController.m | 25 +- Classes/DialerViewController.xib | 59 +- Classes/InCallTableViewController.m | 8 +- Classes/InCallViewController.m | 311 +--- Classes/LinphoneManager.h | 2 + Classes/LinphoneManager.m | 56 +- Classes/LinphoneUI/UICallBar.h | 31 + Classes/LinphoneUI/UICallBar.m | 96 ++ Classes/LinphoneUI/UICallBar.xib | 1416 +++++++++++++---- .../LinphoneUI/UICompositeViewController.h | 6 + .../LinphoneUI/UICompositeViewController.m | 29 +- .../LinphoneUI/UICompositeViewController.xib | 13 + Classes/LinphoneUI/UIHangUpButton.m | 8 +- Classes/LinphoneUI/UIMainBar.xib | 7 +- Classes/LinphoneUI/UIPassView.h | 24 + Classes/LinphoneUI/UIPassView.m | 44 + Classes/LinphoneUI/UIPauseButton.m | 8 +- Classes/LinphoneUI/UISpeakerButton.m | 52 +- Classes/LinphoneUI/UIToggleButton.m | 17 +- Classes/LinphoneUI/UIVideoButton.h | 5 +- Classes/LinphoneUI/UIVideoButton.m | 6 - Classes/PhoneMainView.m | 50 +- Classes/Utils/CPAnimationSequence.h | 26 + Classes/Utils/CPAnimationSequence.m | 79 + Classes/Utils/CPAnimationStep.h | 46 + Classes/Utils/CPAnimationStep.m | 124 ++ Resources/toy-mono.wav | Bin 0 -> 477458 bytes linphone.xcodeproj/project.pbxproj | 56 +- main.m | 2 - 35 files changed, 1839 insertions(+), 2194 deletions(-) delete mode 100644 Classes/ConferenceCallDetailCell.xib delete mode 100644 Classes/ConferenceCallDetailView-ipad.xib delete mode 100644 Classes/ConferenceCallDetailView.h delete mode 100644 Classes/ConferenceCallDetailView.m delete mode 100644 Classes/ConferenceCallDetailView.xib create mode 100644 Classes/LinphoneUI/UIPassView.h create mode 100644 Classes/LinphoneUI/UIPassView.m create mode 100755 Classes/Utils/CPAnimationSequence.h create mode 100755 Classes/Utils/CPAnimationSequence.m create mode 100755 Classes/Utils/CPAnimationStep.h create mode 100755 Classes/Utils/CPAnimationStep.m create mode 100644 Resources/toy-mono.wav diff --git a/Classes/ConferenceCallDetailCell.xib b/Classes/ConferenceCallDetailCell.xib deleted file mode 100644 index 1a406056a..000000000 --- a/Classes/ConferenceCallDetailCell.xib +++ /dev/null @@ -1,257 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - IBUITableViewCell - IBUIImageView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - - - 256 - - - - 292 - {80, 80} - - - - _NS:567 - 1 - NO - IBCocoaTouchFramework - - - - 274 - {{80, 0}, {212, 80}} - - - - _NS:328 - NO - YES - 7 - 2 - NO - IBCocoaTouchFramework - Texte de test - - 1 - MCAwIDAAA - - - 1 - 10 - - 1 - 40 - - - Helvetica - 40 - 16 - - - - - 292 - {{292, 26}, {28, 28}} - - - - _NS:567 - 3 - NO - IBCocoaTouchFramework - - - {320, 79} - - - - _NS:395 - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {320, 80} - - - - _NS:384 - IBCocoaTouchFramework - - ConferenceDetailCellIdentifier - - - - - - - - conferenceDetailCell - - - - 7 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 3 - - - - - - - - - - 5 - - - - - 8 - - - - - 6 - - - - - - - ConferenceCallDetailView - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 8 - - - - - ConferenceCallDetailView - UIViewController - - UIButton - UIButton - UITableViewCell - UIButton - UIButton - UIButton - UITableView - - - - addCall - UIButton - - - back - UIButton - - - conferenceDetailCell - UITableViewCell - - - hangup - UIButton - - - mute - UIButton - - - speaker - UIButton - - - table - UITableView - - - - IBProjectSource - ./Classes/ConferenceCallDetailView.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - 933 - - diff --git a/Classes/ConferenceCallDetailView-ipad.xib b/Classes/ConferenceCallDetailView-ipad.xib deleted file mode 100644 index 57f2d7412..000000000 --- a/Classes/ConferenceCallDetailView-ipad.xib +++ /dev/null @@ -1,479 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - IBUIButton - IBUITableView - IBUIView - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - 274 - - - - 274 - {768, 872} - - - - _NS:418 - - 3 - MCAwAA - - YES - IBIPadFramework - YES - 0 - NO - YES - 44 - 22 - 22 - - - - 292 - {{224, 874}, {107, 66}} - - - - NO - IBIPadFramework - 0 - 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - effacer.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{437, 873}, {107, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - HP_inverse.png - - - NSImage - HP.png - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 - - - - - 292 - {{224, 938}, {320, 66}} - - - - - 1 - MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - stopcall-red.png - - - NSImage - clavier-01-106px.png - - - - - - - 292 - {{331, 873}, {106, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - mic_active.png - - - NSImage - micro_inverse.png - - - NSImage - micro.png - - - - - - {{0, 20}, {768, 1004}} - - - - - 3 - MC42NjY2NjY2NjY3AA - - - 2 - - IBIPadFramework - - - - - - - back - - - - 8 - - - - hangup - - - - 9 - - - - mute - - - - 10 - - - - speaker - - - - 11 - - - - table - - - - 12 - - - - view - - - - 13 - - - - dataSource - - - - 14 - - - - delegate - - - - 15 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 3 - - - Erase - - - 4 - - - speaker - - - 5 - - - - - 6 - - - end - - - 7 - - - mute - - - - - ConferenceCallDetailView - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIEraseButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UISpeakerButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - - 15 - - - - - ConferenceCallDetailView - UIViewController - - UIButton - UIButton - UITableViewCell - UIButton - UIButton - UIButton - UITableView - - - - addCall - UIButton - - - back - UIButton - - - conferenceDetailCell - UITableViewCell - - - hangup - UIButton - - - mute - UIButton - - - speaker - UIButton - - - table - UITableView - - - - IBProjectSource - ./Classes/ConferenceCallDetailView.h - - - - UIEraseButton - UIButton - - IBProjectSource - ./Classes/UIEraseButton.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UIMuteButton - UIToggleButton - - IBProjectSource - ./Classes/UIMuteButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - ./Classes/UISpeakerButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - - 0 - IBIPadFramework - YES - 3 - - {107, 67} - {107, 67} - {106, 60} - {66, 65} - {20, 20} - {107, 67} - {107, 67} - {62, 54} - - 933 - - diff --git a/Classes/ConferenceCallDetailView.h b/Classes/ConferenceCallDetailView.h deleted file mode 100644 index 1c0ff02c0..000000000 --- a/Classes/ConferenceCallDetailView.h +++ /dev/null @@ -1,44 +0,0 @@ -/* ConferenceCallDetailView.h - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -#import -#import "LinphoneUI/UIMicroButton.h" -#import "LinphoneUI/UISpeakerButton.h" - -@interface ConferenceCallDetailView : UIViewController { - - UIMicroButton* mute; - UISpeakerButton* speaker; - UIButton* back; - UIButton* hangup; - UITableView* table; - - UITableViewCell* conferenceDetailCell; -} - -@property (nonatomic, retain) IBOutlet UIButton* mute; -@property (nonatomic, retain) IBOutlet UIButton* speaker; -@property (nonatomic, retain) IBOutlet UIButton* addCall; -@property (nonatomic, retain) IBOutlet UIButton* back; -@property (nonatomic, retain) IBOutlet UIButton* hangup; -@property (nonatomic, retain) IBOutlet UITableView* table; - -@property (nonatomic, assign) IBOutlet UITableViewCell* conferenceDetailCell; - --(void) updateCallQuality; -@end diff --git a/Classes/ConferenceCallDetailView.m b/Classes/ConferenceCallDetailView.m deleted file mode 100644 index 17769f2e7..000000000 --- a/Classes/ConferenceCallDetailView.m +++ /dev/null @@ -1,168 +0,0 @@ -/* ConferenceCallDetailView.m - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "ConferenceCallDetailView.h" -#import "LinphoneManager.h" -#import "InCallViewController.h" - -#include "linphonecore.h" - -@implementation ConferenceCallDetailView - -@synthesize mute; -@synthesize speaker; -@synthesize back; -@synthesize hangup; -@synthesize table; -@synthesize addCall; - -@synthesize conferenceDetailCell; - -NSTimer *callQualityRefresher; - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - [back addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside]; - - table.rowHeight = 80; - - /*[mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; - [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] debugName:"SPEAKER button"]; - */ -} - --(void) backButtonPressed { - [self dismissModalViewControllerAnimated:YES]; -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - --(void) viewWillAppear:(BOOL)animated { - [table reloadData]; - [mute update]; - [speaker update]; - [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; - [super viewWillAppear:animated]; -} - --(void) viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - callQualityRefresher = [NSTimer scheduledTimerWithTimeInterval:1 - target:self - selector:@selector(updateCallQuality) - userInfo:nil - repeats:YES]; -} - --(void) viewDidDisappear:(BOOL)animated { - [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; - - if (callQualityRefresher != nil) { - [callQualityRefresher invalidate]; - callQualityRefresher=nil; - } -} - --(void) updateCallQuality { - [table reloadData]; - [table setNeedsDisplay]; -} - -#pragma mark - UITableView delegates --(void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { - if (indexPath.row % 2) - cell.backgroundColor = [UIColor lightGrayColor]; - else - cell.backgroundColor = [UIColor darkGrayColor]; -} - --(UITableViewCell*) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - static NSString* identifier = @"ConferenceDetailCellIdentifier"; - UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier]; - if (cell == nil) { - [[NSBundle mainBundle] loadNibNamed:@"ConferenceCallDetailCell" owner:self options:nil]; - cell = conferenceDetailCell; - self.conferenceDetailCell = nil; - } - //TODO - /* retrieve cell's fields using tags */ - //UIImageView* image = (UIImageView*) [cell viewWithTag:1]; - //UILabel* label = (UILabel*) [cell viewWithTag:2]; - - /* update cell content */ - //LinphoneCall* call = [InCallViewController retrieveCallAtIndex:indexPath.row inConference:YES]; - - //[InCallViewController updateCellImageView:image Label:label DetailLabel:nil AndAccessoryView:nil withCall:call]; - - cell.accessoryType = UITableViewCellAccessoryNone; - if (cell.accessoryView == nil) { - UIView *containerView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 28, 28)] autorelease]; - cell.accessoryView = containerView; - } - else { - for (UIView *view in cell.accessoryView.subviews) { - [view removeFromSuperview]; - } - } - //UIImageView* callquality = (UIImageView*) [cell viewWithTag:3]; - //[InCallViewController updateIndicator:callquality withCallQuality:linphone_call_get_average_quality(call)]; - tableView.rowHeight = 80; - - return cell; -} - --(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - LinphoneCore* lc = [LinphoneManager getLc]; - int result = linphone_core_get_conference_size(lc) - (int)linphone_core_is_in_conference(lc); - return result; -} - -@end diff --git a/Classes/ConferenceCallDetailView.xib b/Classes/ConferenceCallDetailView.xib deleted file mode 100644 index 3b80aa096..000000000 --- a/Classes/ConferenceCallDetailView.xib +++ /dev/null @@ -1,478 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - IBUITableView - IBUIButton - IBUIView - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - - - 274 - {320, 328} - - - - _NS:418 - - 3 - MCAwAA - - YES - IBCocoaTouchFramework - YES - 0 - NO - YES - 44 - 22 - 22 - - - - 292 - {{107, 328}, {106, 66}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - 3 - MC41AA - - - NSImage - mic_active.png - - - NSImage - micro_inverse.png - - - NSImage - micro.png - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 - - - - - 292 - {{213, 328}, {107, 66}} - - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - HP_inverse.png - - - NSImage - HP.png - - - - - - - 292 - {{0, 394}, {320, 66}} - - - - - 1 - MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - stopcall-red.png - - - NSImage - clavier-01-106px.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{0, 328}, {107, 66}} - - - - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - effacer.png - - - - - - {{0, 20}, {320, 460}} - - - - - 3 - MC42NjY2NjY2NjY3AA - - - IBCocoaTouchFramework - - - - - - - back - - - - 16 - - - - hangup - - - - 17 - - - - mute - - - - 18 - - - - speaker - - - - 19 - - - - view - - - - 20 - - - - table - - - - 23 - - - - dataSource - - - - 21 - - - - delegate - - - - 22 - - - - - - 0 - - - - - - 1 - - - - - - - - - - - - -1 - - - File's Owner - - - -2 - - - - - 7 - - - - - - 10 - - - mute - - - 11 - - - end - - - 12 - - - speaker - - - 14 - - - Erase - - - - - ConferenceCallDetailView - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UISpeakerButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIEraseButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 23 - - - - - ConferenceCallDetailView - UIViewController - - UIButton - UIButton - UITableViewCell - UIButton - UIButton - UIButton - UITableView - - - - addCall - UIButton - - - back - UIButton - - - conferenceDetailCell - UITableViewCell - - - hangup - UIButton - - - mute - UIButton - - - speaker - UIButton - - - table - UITableView - - - - IBProjectSource - ./Classes/ConferenceCallDetailView.h - - - - UIEraseButton - UIButton - - IBProjectSource - ./Classes/UIEraseButton.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UIMuteButton - UIToggleButton - - IBProjectSource - ./Classes/UIMuteButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - ./Classes/UISpeakerButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - - 0 - IBCocoaTouchFramework - YES - 3 - - {107, 67} - {107, 67} - {106, 60} - {66, 65} - {20, 20} - {107, 67} - {107, 67} - {62, 54} - - 933 - - diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index 3f9083caf..188c63465 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -55,6 +55,7 @@ @property (nonatomic, retain) IBOutlet UICallButton* addCallButton; @property (nonatomic, retain) IBOutlet UIButton* cancelButton; @property (nonatomic, retain) IBOutlet UIEraseButton* eraseButton; + @property (nonatomic, retain) IBOutlet UIButton* oneButton; @property (nonatomic, retain) IBOutlet UIButton* twoButton; @property (nonatomic, retain) IBOutlet UIButton* threeButton; diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index c66283bf3..f2a3dfc1d 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -55,11 +55,15 @@ } - (void)viewWillAppear:(BOOL)animated { - // [[LinphoneManager instance] setRegistrationDelegate:self]; - - //TODO - //[mMainScreenWithVideoPreview showPreview:YES]; - + [super viewWillAppear:animated]; + [self update]; +} + +- (void)callUpdate:(NSNotification*)notif { + [self update]; +} + +- (void)update { if([LinphoneManager isLcReady]) { LinphoneCore *lc = [LinphoneManager getLc]; if(linphone_core_get_calls_nb(lc) > 0) { @@ -74,7 +78,6 @@ [addContactButton setHidden:false]; } } - [super viewWillAppear:animated]; } - (void)viewDidLoad { @@ -95,6 +98,13 @@ [callButton initWithAddress:addressField]; [addCallButton initWithAddress:addressField]; [eraseButton initWithAddressField:addressField]; + + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; +} + +- (void)viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; } - (void)setAddress:(NSString*) address { @@ -121,6 +131,9 @@ [starButton release]; [zeroButton release]; [hashButton release]; + + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [super dealloc]; } diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index c3ef74098..26df9878a 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -224,35 +224,6 @@ - - - 292 - {{0, 135}, {107, 54}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - 7-over.png - - - NSImage - 7-actif.png - - - - 292 @@ -282,6 +253,35 @@ + + + 292 + {{0, 135}, {107, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 7-over.png + + + NSImage + 7-actif.png + + + + 292 @@ -650,7 +650,6 @@ {{214, 0}, {106, 69}} - _NS:9 NO IBCocoaTouchFramework diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index edd9fe1ce..f5802c21f 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -31,14 +31,14 @@ enum TableSection { CallSection = 1 }; -- (void)myInit { +- (void)initInCallTableViewController { self->callCellData = [[NSMutableDictionary alloc] init]; } - (id)init{ self = [super init]; if (self) { - [self myInit]; + [self initInCallTableViewController]; } return self; } @@ -46,7 +46,7 @@ enum TableSection { - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { - [self myInit]; + [self initInCallTableViewController]; } return self; } @@ -54,7 +54,7 @@ enum TableSection { - (id)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (self) { - [self myInit]; + [self initInCallTableViewController]; } return self; } diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index ef5b48163..11a16c8f5 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -52,6 +52,8 @@ const NSInteger SECURE_BUTTON_TAG=5; return [super initWithNibName:@"InCallViewController" bundle:[NSBundle mainBundle]]; } +//TODO +/* - (void)orientationChanged: (NSNotification*) notif { int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; @@ -76,7 +78,7 @@ const NSInteger SECURE_BUTTON_TAG=5; linphone_core_update_call([LinphoneManager getLc], call, NULL); - /* animate button images rotation */ + // animate button images rotation #define degreesToRadians(x) (M_PI * x / 180.0) CGAffineTransform transform = CGAffineTransformIdentity; switch (orientation) { @@ -105,7 +107,7 @@ const NSInteger SECURE_BUTTON_TAG=5; [UIView commitAnimations]; } } -} +}*/ - (void)showControls:(id)sender { if (hideControlsTimer) { @@ -161,7 +163,8 @@ const NSInteger SECURE_BUTTON_TAG=5; - (void)enableVideoDisplay:(BOOL)animation { videoShown = true; - [self orientationChanged:nil]; + //TODO + //[self orientationChanged:nil]; [videoZoomHandler resetZoom]; @@ -180,9 +183,6 @@ const NSInteger SECURE_BUTTON_TAG=5; videoView.alpha = 1.0; videoView.hidden = FALSE; - linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)videoView); - linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)videoPreview); - [[LinphoneManager instance] fullScreen: true]; [[LinphoneManager instance] showTabBar: false]; @@ -191,11 +191,9 @@ const NSInteger SECURE_BUTTON_TAG=5; #endif // [self batteryLevelChanged:nil]; - [self updateUIFromLinphoneState: YES]; videoWaitingForFirstImage.hidden = NO; [videoWaitingForFirstImage startAnimating]; - // TODO LinphoneCall *call = linphone_core_get_current_call([LinphoneManager getLc]); if (call != NULL && call->videostream) { linphone_call_set_next_video_frame_decoded_callback(call, hideSpinner, self); @@ -222,84 +220,21 @@ const NSInteger SECURE_BUTTON_TAG=5; [hideControlsTimer invalidate]; hideControlsTimer = nil; } - - /* restore buttons orientation */ - //endCtrl.imageView.transform = CGAffineTransformIdentity; - //TODO - //mute.imageView.transform = CGAffineTransformIdentity; - //speaker.imageView.transform = CGAffineTransformIdentity; - //pause.imageView.transform = CGAffineTransformIdentity; - //contacts.imageView.transform = CGAffineTransformIdentity; - //addCall.imageView.transform = CGAffineTransformIdentity; - //dialer.imageView.transform = CGAffineTransformIdentity; - //videoCallQuality.transform = CGAffineTransformIdentity; [[LinphoneManager instance] fullScreen:false]; } -/* Update in call view buttons (visibility, state, ...) and call duration text. - This is called periodically. The fullUpdate boolean is set when called after an event (call state change for instance) */ -- (void)updateUIFromLinphoneState:(BOOL) fullUpdate { - // check LinphoneCore is initialized - LinphoneCore* lc = nil; - if([LinphoneManager isLcReady]) - lc = [LinphoneManager getLc]; - - // 1 call: show pause button, otherwise show merge btn - // [LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; - // reload table (glow update + call duration) - [callTableView reloadData]; - - // update conference details view if displayed - //TODO - /*if (self.presentedViewController == conferenceDetail) { - if (!linphone_core_is_in_conference(lc)) - [self dismissModalViewControllerAnimated:YES]; - else - [conferenceDetail.table reloadData]; - }*/ -} - // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; + // Set windows (warn memory leaks) + linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)videoView); + linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)videoPreview); + // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; - - //Controls - /*[mute initWithOnImage:[UIImage imageNamed:@"micro_inverse.png"] offImage:[UIImage imageNamed:@"micro.png"] debugName:"MUTE button"]; - [speaker initWithOnImage:[UIImage imageNamed:@"HP_inverse.png"] offImage:[UIImage imageNamed:@"HP.png"] debugName:"SPEAKER button"]; - */ - //Dialer init - /*[zero initWithNumber:'0']; - [one initWithNumber:'1']; - [two initWithNumber:'2']; - [three initWithNumber:'3']; - [four initWithNumber:'4']; - [five initWithNumber:'5']; - [six initWithNumber:'6']; - [seven initWithNumber:'7']; - [eight initWithNumber:'8']; - [nine initWithNumber:'9']; - [star initWithNumber:'*']; - [hash initWithNumber:'#']; - - [addCall addTarget:self action:@selector(addCallPressed) forControlEvents:UIControlEventTouchUpInside]; - [mergeCalls addTarget:self action:@selector(mergeCallsPressed) forControlEvents:UIControlEventTouchUpInside]; - [LinphoneManager set:mergeCalls hidden:YES withName:"MERGE button" andReason:"initialisation"];*/ - - //TODO - /* - if ([LinphoneManager runningOnIpad]) { - ms_message("Running on iPad"); - conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView-ipad" - bundle:[NSBundle mainBundle]]; - } else { - conferenceDetail = [[ConferenceCallDetailView alloc] initWithNibName:@"ConferenceCallDetailView" - bundle:[NSBundle mainBundle]]; - }*/ UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)]; [singleFingerTap setNumberOfTapsRequired:1]; @@ -310,30 +245,13 @@ const NSInteger SECURE_BUTTON_TAG=5; videoZoomHandler = [[VideoZoomHandler alloc] init]; [videoZoomHandler setup:videoGroup]; videoGroup.alpha = 0; - - //selectedCall = nil; - - //callTableView.rowHeight = 80; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil]; + //[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) name:UIDeviceBatteryLevelDidChangeNotification object:nil]; [videoCameraSwitch setPreview:videoPreview]; - //addVideo.videoUpdateIndicator = videoUpdateIndicator; - - //[transfer addTarget:self action:@selector(transferPressed) forControlEvents:UIControlEventTouchUpInside]; - - // prevent buttons resizing - /* - endCtrl.imageView.contentMode = UIViewContentModeCenter; - mute.imageView.contentMode = UIViewContentModeCenter; - speaker.imageView.contentMode = UIViewContentModeCenter; - pause.imageView.contentMode = UIViewContentModeCenter; - contacts.imageView.contentMode = UIViewContentModeCenter; - addCall.imageView.contentMode = UIViewContentModeCenter; - dialer.imageView.contentMode = UIViewContentModeCenter;*/ } - (void)transferPressed { @@ -441,53 +359,40 @@ const NSInteger SECURE_BUTTON_TAG=5; [[NSNotificationCenter defaultCenter] removeObserver:self]; } -- (void)displayPad:(bool) enable { - /*if (videoView.hidden) - [LinphoneManager set:callTableView hidden:enable withName:"CALL_TABLE view" andReason:AT];*/ - /*[LinphoneManager set:hangUpView hidden:enable withName:"HANG_UP view" andReason:AT]; - [LinphoneManager set:controlSubView hidden:enable withName:"CONTROL view" andReason:AT]; - [LinphoneManager set:padSubView hidden:!enable withName:"PAD view" andReason:AT];*/ -} - - (void)displayVideoCall:(LinphoneCall*) call { UIDevice *device = [UIDevice currentDevice]; device.proximityMonitoringEnabled = YES; - if (call !=nil && linphone_call_get_dir(call)==LinphoneCallIncoming) { - //if ([speaker isOn]) [speaker toggle]; - } - [self updateUIFromLinphoneState: YES]; - [self enableVideoDisplay: TRUE]; + if(!videoShown) + [self enableVideoDisplay: TRUE]; } -- (void)displayInCall:(LinphoneCall*) call { +- (void)displayTableCall:(LinphoneCall*) call { UIDevice *device = [UIDevice currentDevice]; device.proximityMonitoringEnabled = YES; - if (call !=nil && linphone_call_get_dir(call)==LinphoneCallIncoming) { - //if ([speaker isOn]) [speaker toggle]; - } - [self updateUIFromLinphoneState: YES]; - [self disableVideoDisplay: TRUE]; + if(videoShown) + [self disableVideoDisplay: TRUE]; } -static void hideSpinner(LinphoneCall* lc, void* user_data); - - (void)hideSpinnerIndicator: (LinphoneCall*)call { - if (!videoWaitingForFirstImage.hidden) { - videoWaitingForFirstImage.hidden = TRUE; - } else { - linphone_call_set_next_video_frame_decoded_callback(call, hideSpinner, self); - } + videoWaitingForFirstImage.hidden = TRUE; +} + +static void hideSpinner(LinphoneCall* call, void* user_data) { + InCallViewController* thiz = (InCallViewController*) user_data; + [thiz hideSpinnerIndicator:call]; } - (void)callUpdate: (NSNotification*) notif { LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - // Fake call update: Refresh UI + // Update table + [callTableView reloadData]; + + // Fake call update if(call == NULL) { - [self updateUIFromLinphoneState: YES]; return; } @@ -506,17 +411,18 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); [callTableController minimizeAll]; } } - case LinphoneCallPausedByRemote: case LinphoneCallConnected: case LinphoneCallStreamsRunning: case LinphoneCallUpdated: + { //check video if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { [self displayVideoCall:call]; } else { - [self displayInCall:call]; + [self displayTableCall:call]; } break; + } case LinphoneCallUpdatedByRemote: { const LinphoneCallParams* current = linphone_call_get_current_params(call); @@ -529,14 +435,15 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); linphone_core_defer_call_update([LinphoneManager getLc], call); [self displayAskToEnableVideoCall:call]; } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { - [self displayInCall:call]; + [self displayTableCall:call]; } break; } case LinphoneCallPausing: case LinphoneCallPaused: + case LinphoneCallPausedByRemote: { - [self disableVideoDisplay: TRUE]; + [self displayTableCall: call]; break; } case LinphoneCallEnd: @@ -545,7 +452,6 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); if(linphone_core_get_calls_nb([LinphoneManager getLc]) <= 1) { [callTableController maximizeAll]; } - [self updateUIFromLinphoneState: YES]; break; } default: @@ -554,11 +460,6 @@ static void hideSpinner(LinphoneCall* lc, void* user_data); } -static void hideSpinner(LinphoneCall* call, void* user_data) { - InCallViewController* thiz = (InCallViewController*) user_data; - [thiz hideSpinnerIndicator:call]; -} - - (void)dismissActionSheet: (id)o { if (visibleActionSheet != nil) { [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE]; @@ -599,11 +500,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [visibleActionSheet release]; } -- (void)firstVideoFrameDecoded: (LinphoneCall*) call { - // hide video in progress view indicator - videoWaitingForFirstImage.hidden = TRUE; -} - - (void)dealloc { [videoGroup release]; [callTableView release]; @@ -620,146 +516,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [super dealloc]; } -//TODO -/* -+ (void)updateCellImageView:(UIImageView*)imageView Label:(UILabel*)label DetailLabel:(UILabel*)detailLabel AndAccessoryView:(UIView*)accessoryView withCall:(LinphoneCall*) call { - if (call == NULL) { - ms_warning("UpdateCell called with null call"); - [label setText:@""]; - return; - } - const LinphoneAddress* addr = linphone_call_get_remote_address(call); - - label.adjustsFontSizeToFitWidth = YES; - - if (addr) { - const char* lUserNameChars=linphone_address_get_username(addr); - NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); - NSMutableString* mss = [[NSMutableString alloc] init]; - // contact name - const char* n = linphone_address_get_display_name(addr); - if (n) - [mss appendFormat:@"%s", n, nil]; - else - [mss appendFormat:@"%@",lUserName , nil]; - - if ([mss compare:label.text] != 0 || imageView.image == nil) { - [label setText:mss]; - - imageView.image = [[LinphoneManager instance] getImageFromAddressBook:lUserName]; - } - [mss release]; - } else { - [label setText:@"plop"]; - imageView.image = nil; - } - - if (detailLabel != nil) { - NSMutableString* ms = [[NSMutableString alloc] init ]; - if (linphone_call_get_state(call) == LinphoneCallStreamsRunning) { - int duration = linphone_call_get_duration(call); - if (duration >= 60) - [ms appendFormat:@"%02i:%02i", (duration/60), duration - 60*(duration/60), nil]; - else - [ms appendFormat:@"%02i sec", duration, nil]; - } else { - switch (linphone_call_get_state(call)) { - case LinphoneCallPaused: - if(!linphone_core_sound_resources_locked(linphone_call_get_core(call))) { - [ms appendFormat:@"%@", NSLocalizedString(@"Paused (tap to resume)", nil), nil]; - } else { - [ms appendFormat:@"%@", NSLocalizedString(@"Paused", nil), nil]; - } - break; - case LinphoneCallOutgoingInit: - case LinphoneCallOutgoingProgress: - [ms appendFormat:@"%@...", NSLocalizedString(@"In progress", nil), nil]; - break; - case LinphoneCallOutgoingRinging: - [ms appendFormat:@"%@...", NSLocalizedString(@"Ringing...", nil), nil]; - break; - case LinphoneCallPausedByRemote: - { - switch (linphone_call_get_transfer_state(call)) { - case LinphoneCallOutgoingInit: - case LinphoneCallOutgoingProgress: - [ms appendFormat:@"%@...", NSLocalizedString(@"Transfer in progress", nil), nil]; - break; - case LinphoneCallConnected: - [ms appendFormat:@"%@", NSLocalizedString(@"Transfer successful", nil), nil]; - break; - case LinphoneCallError: - [ms appendFormat:@"%@", NSLocalizedString(@"Transfer failed", nil), nil]; - break; - case LinphoneCallIdle: - default: - [ms appendFormat:@"%@...", NSLocalizedString(@"Paused by remote", nil), nil]; - break; - } - break; - default: - break; - } - } - } - [detailLabel setText:ms]; - [ms release]; - } -}*/ -/* -- (void)updateConferenceCell:(UITableViewCell*) cell at:(NSIndexPath*)indexPath { - LinphoneCore* lc = [LinphoneManager getLc]; - - NSString* t= [NSString stringWithFormat: - NSLocalizedString(@"Conference", nil), - linphone_core_get_conference_size(lc) - linphone_core_is_in_conference(lc)]; - [cell.textLabel setText:t]; - - [self updateActive:NO cell:cell]; - cell.selected = NO; - - [callTableView deselectRowAtIndexPath:indexPath animated:NO]; - - if (!linphone_core_is_in_conference(lc)) { - [cell.detailTextLabel setText:NSLocalizedString(@"(tap to enter conference)", nil)]; - } else { - [cell.detailTextLabel setText: - [NSString stringWithFormat:NSLocalizedString(@"(me + %d participants)", nil), linphone_core_get_conference_size(lc) - linphone_core_is_in_conference(lc)]]; - } - cell.imageView.image = nil; -} - -- (void)secureIconPressed:(UIControl*) button withEvent: (UIEvent*) evt { - NSSet* touches = [evt allTouches]; - UITouch* touch = [touches anyObject]; - CGPoint currentTouchPos = [touch locationInView:self.callTableView]; - NSIndexPath *path = [self.callTableView indexPathForRowAtPoint:currentTouchPos]; - if (path) { - LinphoneCall* call = [InCallViewController retrieveCallAtIndex:path.row inConference:NO]; - // start action sheet to validate/unvalidate zrtp code - CallDelegate* cd = [[CallDelegate alloc] init]; - cd.eventType = CD_ZRTP; - cd.delegate = self; - cd.call = call; - UIView* container=(UIView*)[callTableView cellForRowAtIndexPath:path].accessoryView; - UIButton *button=(UIButton*)[container viewWithTag:SECURE_BUTTON_TAG]; - [button setImage:nil forState:UIControlStateNormal]; - - if (visibleActionSheet != nil) { - [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE]; - } - visibleActionSheet = [[UIActionSheet alloc] initWithTitle:[NSString stringWithFormat:NSLocalizedString(@" Mark auth token '%s' as:",nil),linphone_call_get_authentication_token(call)] - delegate:cd - cancelButtonTitle:NSLocalizedString(@"Unverified",nil) - destructiveButtonTitle:NSLocalizedString(@"Verified",nil) - otherButtonTitles:nil]; - - visibleActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - [visibleActionSheet showInView:[[UIApplication sharedApplication].delegate window]]; - [visibleActionSheet release]; - } -} -*/ - (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { LinphoneCall* call = (LinphoneCall*)datas; // maybe we could verify call validity @@ -819,7 +575,4 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } } - - - @end diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 9975dad3d..a7c527252 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -116,6 +116,8 @@ typedef struct _LinphoneCallAppData { - (void)fullScreen:(BOOL) enabled; - (PhoneView) currentView; +- (void)enableSpeaker:(BOOL)enable; + @property (nonatomic, retain) id settingsStore; @property Connectivity connectivity; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 15cbf418d..ee51828a7 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -17,8 +17,6 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include "linphonecore_utils.h" -#include "lpconfig.h" #include #include #include @@ -32,6 +30,10 @@ #import "FastAddressBook.h" #import "LinphoneCoreSettingsStore.h" +#include "linphonecore_utils.h" +#include "lpconfig.h" +#include "private.h" + static LinphoneCore* theLinphoneCore=nil; static LinphoneManager* theLinphoneManager=nil; @@ -219,9 +221,9 @@ struct codec_name_pref_table codec_pref_table[]={ return; } -- (void)onCall:(LinphoneCall*) call StateChanged: (LinphoneCallState) new_state withMessage: (const char *) message { +- (void)onCall:(LinphoneCall*)call StateChanged:(LinphoneCallState)state withMessage:(const char *)message { // Handling wrapper - if(new_state == LinphoneCallReleased) { + if(state == LinphoneCallReleased) { if(linphone_call_get_user_pointer(call) != NULL) { free (linphone_call_get_user_pointer(call)); linphone_call_set_user_pointer(call, NULL); @@ -234,14 +236,19 @@ struct codec_name_pref_table codec_pref_table[]={ linphone_call_set_user_pointer(call, data); } - if (new_state == LinphoneCallIncomingReceived) { + if (state == LinphoneCallIncomingReceived) { [self updateCallWithAddressBookData:call]; // display name is updated } + if ((state == LinphoneCallEnd || state == LinphoneCallError)) { + if(linphone_core_get_calls_nb([LinphoneManager getLc]) == 0) + [self enableSpeaker:FALSE]; + } + // Post event NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: [NSValue valueWithPointer:call], @"call", - [NSNumber numberWithInt:new_state], @"state", + [NSNumber numberWithInt:state], @"state", [NSString stringWithUTF8String:message], @"message", nil] autorelease]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self userInfo:dict]; } @@ -532,7 +539,6 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } - //scheduling loop - (void)iterate { linphone_core_iterate(theLinphoneCore); @@ -573,7 +579,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach /************* *lib linphone init method */ -- (void)startLibLinphone { +- (void)startLibLinphone { //get default config from bundle NSBundle* myBundle = [NSBundle mainBundle]; @@ -610,11 +616,12 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach linphone_core_set_root_ca(theLinphoneCore, lRootCa); // Set audio assets - const char* lRing = [[myBundle pathForResource:@"oldphone-mono"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; + const char* lRing = [[myBundle pathForResource:@"oldphone-mono"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; linphone_core_set_ring(theLinphoneCore, lRing ); - const char* lRingBack = [[myBundle pathForResource:@"ringback"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; + const char* lRingBack = [[myBundle pathForResource:@"ringback"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; linphone_core_set_ringback(theLinphoneCore, lRingBack); - + const char* lPlay = [[myBundle pathForResource:@"toy-mono"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; + linphone_core_set_play_file(theLinphoneCore, lPlay); linphone_core_set_zrtp_secrets_file(theLinphoneCore, [zrtpSecretsFileName cStringUsingEncoding:[NSString defaultCStringEncoding]]); @@ -665,11 +672,6 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } - if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] - && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground) { - //go directly to bg mode - [self enterBackgroundMode]; - } NSUInteger cpucount = [[NSProcessInfo processInfo] processorCount]; ms_set_cpu_count(cpucount); @@ -692,7 +694,12 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach ms_warning("Linphone [%s] started on [%s]" ,linphone_core_get_version() ,[[UIDevice currentDevice].model cStringUsingEncoding:[NSString defaultCStringEncoding]] ); - + + if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] + && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground) { + //go directly to bg mode + [self enterBackgroundMode]; + } } - (void)refreshRegisters{ @@ -743,6 +750,21 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //let the user resume the call manually. } +- (void)enableSpeaker:(BOOL)enable { + //redirect audio to speaker + if(enable) { + UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; + AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute + , sizeof (audioRouteOverride) + , &audioRouteOverride); + } else { + UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None; + AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute + , sizeof (audioRouteOverride) + , &audioRouteOverride); + } +} + + (BOOL)runningOnIpad { #ifdef UI_USER_INTERFACE_IDIOM return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index b93362fbc..564722771 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -24,6 +24,7 @@ #import "UISpeakerButton.h" #import "UIVideoButton.h" #import "UIHangUpButton.h" +#import "UIDigitButton.h" @interface UICallBar: UIViewController { UIPauseButton* pauseButton; @@ -33,6 +34,21 @@ UISpeakerButton* speakerButton; UIButton* optionsButton; UIHangUpButton* hangupButton; + UIView* padView; + + //Key pad + UIDigitButton* oneButton; + UIDigitButton* twoButton; + UIDigitButton* threeButton; + UIDigitButton* fourButton; + UIDigitButton* fiveButton; + UIDigitButton* sixButton; + UIDigitButton* sevenButton; + UIDigitButton* eightButton; + UIDigitButton* nineButton; + UIDigitButton* starButton; + UIDigitButton* zeroButton; + UIDigitButton* hashButton; } @property (nonatomic, retain) IBOutlet UIPauseButton* pauseButton; @@ -42,8 +58,23 @@ @property (nonatomic, retain) IBOutlet UISpeakerButton* speakerButton; @property (nonatomic, retain) IBOutlet UIButton* optionsButton; @property (nonatomic, retain) IBOutlet UIHangUpButton* hangupButton; +@property (nonatomic, retain) IBOutlet UIView* padView; + +@property (nonatomic, retain) IBOutlet UIButton* oneButton; +@property (nonatomic, retain) IBOutlet UIButton* twoButton; +@property (nonatomic, retain) IBOutlet UIButton* threeButton; +@property (nonatomic, retain) IBOutlet UIButton* fourButton; +@property (nonatomic, retain) IBOutlet UIButton* fiveButton; +@property (nonatomic, retain) IBOutlet UIButton* sixButton; +@property (nonatomic, retain) IBOutlet UIButton* sevenButton; +@property (nonatomic, retain) IBOutlet UIButton* eightButton; +@property (nonatomic, retain) IBOutlet UIButton* nineButton; +@property (nonatomic, retain) IBOutlet UIButton* starButton; +@property (nonatomic, retain) IBOutlet UIButton* zeroButton; +@property (nonatomic, retain) IBOutlet UIButton* hashButton; - (IBAction)onOptionsClick:(id)sender; - (IBAction)onConferenceClick:(id)sender; +- (IBAction)onPadClick:(id)sender; @end diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 74e7f2f75..c63769ada 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -20,6 +20,9 @@ #import "UICallBar.h" #import "LinphoneManager.h" +#import "CPAnimationSequence.h" +#import "CPAnimationStep.h" + #include "linphonecore.h" #include "private.h" @@ -32,6 +35,20 @@ @synthesize speakerButton; @synthesize optionsButton; @synthesize hangupButton; +@synthesize padView; + +@synthesize oneButton; +@synthesize twoButton; +@synthesize threeButton; +@synthesize fourButton; +@synthesize fiveButton; +@synthesize sixButton; +@synthesize sevenButton; +@synthesize eightButton; +@synthesize nineButton; +@synthesize starButton; +@synthesize zeroButton; +@synthesize hashButton; - (id)init { return [super initWithNibName:@"UICallBar" bundle:[NSBundle mainBundle]]; @@ -39,6 +56,20 @@ - (void)viewDidLoad { [pauseButton setType:UIPauseButtonType_CurrentCall call:nil]; + + [zeroButton initWithNumber:'0' addressField:nil dtmf:true]; + [oneButton initWithNumber:'1' addressField:nil dtmf:true]; + [twoButton initWithNumber:'2' addressField:nil dtmf:true]; + [threeButton initWithNumber:'3' addressField:nil dtmf:true]; + [fourButton initWithNumber:'4' addressField:nil dtmf:true]; + [fiveButton initWithNumber:'5' addressField:nil dtmf:true]; + [sixButton initWithNumber:'6' addressField:nil dtmf:true]; + [sevenButton initWithNumber:'7' addressField:nil dtmf:true]; + [eightButton initWithNumber:'8' addressField:nil dtmf:true]; + [nineButton initWithNumber:'9' addressField:nil dtmf:true]; + [starButton initWithNumber:'*' addressField:nil dtmf:true]; + [hashButton initWithNumber:'#' addressField:nil dtmf:true]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; } @@ -47,6 +78,9 @@ } - (void)callUpdate: (NSNotification*) notif { + //LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; + LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; + // check LinphoneCore is initialized LinphoneCore* lc = nil; if([LinphoneManager isLcReady]) @@ -72,6 +106,20 @@ [conferenceButton setHidden:true]; } } + + if(linphone_core_get_current_call(lc) == NULL) { + [self hidePad]; + } + + switch(state) { + LinphoneCallEnd: + LinphoneCallError: + LinphoneCallIncoming: + LinphoneCallOutgoing: + [self hidePad]; + default: + break; + } } - (void)dealloc { @@ -87,6 +135,54 @@ [super dealloc]; } +- (IBAction)onPadClick:(id)sender { + if([padView isHidden]) { + [self showPad]; + } else { + [self hidePad]; + } +} + +- (void)showPad{ + CGRect frame = [padView frame]; + int original_y = frame.origin.y; + frame.origin.y = [[self view] frame].size.height; + [padView setFrame:frame]; + [padView setHidden:FALSE]; + CPAnimationSequence* move = [CPAnimationSequence sequenceWithSteps: + [CPAnimationStep for:0.5 animate:^{ + CGRect frame = [padView frame]; + frame.origin.y = original_y; + [padView setFrame:frame]; + }], + nil + ]; + [move run]; + [move release]; +} + +- (void)hidePad{ + CGRect frame = [padView frame]; + int original_y = frame.origin.y; + + CPAnimationSequence* move = [CPAnimationSequence sequenceWithSteps: + [CPAnimationStep for:0.5 animate:^{ + CGRect frame = [padView frame]; + frame.origin.y = [[self view] frame].size.height; + [padView setFrame:frame]; + }], + [CPAnimationStep after:0.0 animate:^{ + CGRect frame = [padView frame]; + frame.origin.y = original_y; + [padView setHidden:TRUE]; + [padView setFrame:frame]; + }], + nil + ]; + [move run]; + [move release]; +} + - (IBAction)onOptionsClick:(id)sender { // Go to dialer view NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 92d108fa6..529c86679 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -38,17 +38,13 @@ -2147483356 - {{0, 10}, {320, 125}} + {{0, 335}, {320, 125}} - _NS:9 - 3 - MQA - - 2 - + 1 + MCAxIDAuMTkxOTQ1NDc1NQA NO NO @@ -57,277 +53,664 @@ NO IBCocoaTouchFramework - + - 292 - {80, 67} + -2147483360 + + + + 292 + {{-20, 20}, {107, 54}} + + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + 3 + MC41AA + + + NSImage + 1-over.png + + + NSImage + 1-actif.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{87, 20}, {106, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 2-over.png + + + NSImage + 2-actif.png + + + + + + + 292 + {{193, 20}, {107, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 3-actif.png + + + + + + + 292 + {{-20, 82}, {107, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 4-over.png + + + NSImage + 4-actif.png + + + + + + + 292 + {{87, 82}, {106, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 5-over.png + + + NSImage + 5-actif.png + + + + + + + 292 + {{193, 82}, {107, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 6-over.png + + + NSImage + 6-actif.png + + + + + + + 292 + {{-20, 144}, {107, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 7-over.png + + + NSImage + 7-actif.png + + + + + + + 292 + {{87, 144}, {106, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 8-over.png + + + NSImage + 8-actif.png + + + + + + + 292 + {{193, 144}, {107, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 9-over.png + + + NSImage + 9-actif.png + + + + + + + 292 + {{-20, 206}, {107, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + etoile-over.png + + + NSImage + etoile-actif.png + + + + + + + 292 + {{87, 206}, {106, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + 0-over.png + + + NSImage + 0-actif.png + + + + + + + 292 + {{193, 206}, {107, 54}} + + + + NO + NO + IBCocoaTouchFramework + 0 + 0 + + + 1 + MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA + + + + NSImage + diese-over.png + + + NSImage + diese-actif.png + + + + + + {{20, 57}, {281, 260}} - _NS:9 - NO - - Video - - IBCocoaTouchFramework - 0 - 0 - NO - NO - + 3 - MC41AA - - - NSImage - video-ON-over.png - - - NSImage - video-OFF-disabled.png - - - NSImage - video-ON-actif.png - - - NSImage - video-OFF-actif.png - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 + MSAwLjQAA + + 2 + + IBCocoaTouchFramework - + 292 - {{80, 0}, {80, 67}} + + + + 292 + {80, 67} + + + + _NS:9 + NO + + Video + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + video-ON-over.png + + + NSImage + video-OFF-disabled.png + + + NSImage + video-ON-actif.png + + + NSImage + video-OFF-actif.png + + + 2 + 15 + + + + + + 292 + {{80, 0}, {80, 67}} + + + + _NS:9 + NO + + Micro + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + micro-ON-over.png + + + NSImage + micro-ON-actif.png + + + NSImage + micro-OFF-actif.png + + + + + + + 292 + {{160, 0}, {80, 67}} + + + + _NS:9 + NO + + Speaker + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + speacker-ON-over.png + + + NSImage + speacker-ON-actif.png + + + NSImage + speacker-OFF-actif.png + + + + + + + 292 + {{240, 0}, {80, 67}} + + + + _NS:9 + NO + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + options_over.png + + + NSImage + add-call-over.png + + + NSImage + options_default.png + + + + + + + 264 + {{0, 67}, {105, 68}} + + + + _NS:9 + NO + + Pause + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + pause-over.png + + + NSImage + play-actif.png + + + NSImage + pause-actif.png + + + + + + + -2147483384 + {{0, 67}, {105, 68}} + + + + _NS:9 + NO + + Start Conference + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + start-conference-over.png + + + NSImage + start-conference-actif.png + + + + + + + 264 + {{105, 67}, {111, 68}} + + + + _NS:9 + NO + + Hangup + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + raccrocher-over.png + + + NSImage + raccrocher-actif.png + + + + + + + 264 + {{215, 67}, {105, 68}} + + + + _NS:9 + NO + + Back + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + clavier-secondaire-over.png + + + NSImage + clavier-secondaire-actif.png + + + + + + + {{0, 325}, {320, 135}} - + _NS:9 - NO - - Micro + + 3 + MCAwAA IBCocoaTouchFramework - 0 - 0 - NO - - - NSImage - micro-ON-over.png - - - NSImage - micro-ON-actif.png - - - NSImage - micro-OFF-actif.png - - - - - - - 292 - {{160, 0}, {80, 67}} - - - - _NS:9 - NO - - Speaker - - IBCocoaTouchFramework - 0 - 0 - NO - - - NSImage - speacker-ON-over.png - - - NSImage - speacker-ON-actif.png - - - NSImage - speacker-OFF-actif.png - - - - - - - 292 - {{240, 0}, {80, 67}} - - - - _NS:9 - NO - - Add call - - IBCocoaTouchFramework - 0 - 0 - NO - - - NSImage - options_over.png - - - NSImage - add-call-over.png - - - NSImage - options_default.png - - - - - - - 264 - {{0, 67}, {105, 68}} - - - - _NS:9 - NO - - Pause - - IBCocoaTouchFramework - 0 - 0 - NO - - - NSImage - pause-over.png - - - NSImage - play-actif.png - - - NSImage - pause-actif.png - - - - - - - -2147483384 - {{0, 67}, {105, 68}} - - - - _NS:9 - NO - - Start Conference - - IBCocoaTouchFramework - 0 - 0 - NO - NO - - - NSImage - start-conference-over.png - - - NSImage - start-conference-actif.png - - - - - - - 264 - {{105, 67}, {111, 68}} - - - - _NS:9 - NO - - Hangup - - IBCocoaTouchFramework - 0 - 0 - NO - - - NSImage - raccrocher-over.png - - - NSImage - raccrocher-actif.png - - - - - - - 264 - {{215, 67}, {105, 68}} - - - - _NS:9 - NO - - Back - - IBCocoaTouchFramework - 0 - 0 - NO - - - NSImage - clavier-secondaire-over.png - - - NSImage - clavier-secondaire-actif.png - - - - - {320, 135} + {320, 460} - + _NS:9 - - 1 - MCAxIDAuMTkxOTQ1NDc1NSAwAA - + NO IBCocoaTouchFramework @@ -344,43 +727,11 @@ - pauseButton + hangupButton - + - 15 - - - - videoButton - - - - 17 - - - - microButton - - - - 14 - - - - speakerButton - - - - 16 - - - - optionsButton - - - - 19 + 29 @@ -392,11 +743,156 @@ - hangupButton + pauseButton - + - 29 + 15 + + + + optionsButton + + + + 19 + + + + speakerButton + + + + 16 + + + + microButton + + + + 14 + + + + videoButton + + + + 17 + + + + padView + + + + 45 + + + + zeroButton + + + + 47 + + + + twoButton + + + + 48 + + + + threeButton + + + + 49 + + + + starButton + + + + 50 + + + + sixButton + + + + 51 + + + + sevenButton + + + + 52 + + + + oneButton + + + + 53 + + + + nineButton + + + + 54 + + + + hashButton + + + + 55 + + + + fourButton + + + + 56 + + + + fiveButton + + + + 57 + + + + eightButton + + + + 58 + + + + onPadClick: + + + 7 + + 46 @@ -441,14 +937,8 @@ - - - - - - - - + + callTabBar @@ -460,53 +950,161 @@ mask + + 30 + + + + + + + + + + + + + buttons + 6 - + dialerButton 7 - + hangupButton + + 21 + + + conferenceButton + 8 - + pauseButton 10 - + optionsButton - - 12 - - - videoButton - - - 11 - - - microButton - 9 - + speakerButton - 21 - + 11 + + + microButton + + + 12 + + + videoButton + + + 31 + + + + + + + + + + + + + + + - conferenceButton + pad + + + 43 + + + 1 + + + 42 + + + 2 + + + 41 + + + 3 + + + 40 + + + 5 + + + 39 + + + 4 + + + 38 + + + 7 + + + 37 + + + 8 + + + 36 + + + 9 + + + 35 + + + # + + + 34 + + + 0 + + + 33 + + + * + + + 32 + + + 6 @@ -525,7 +1123,45 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIPassView com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -543,7 +1179,7 @@ - 29 + 58 @@ -553,6 +1189,7 @@ id id + id @@ -563,51 +1200,128 @@ onOptionsClick: id + + onPadClick: + id + UIButton + UIButton + UIButton + UIButton UIHangUpButton + UIButton UIMicroButton + UIButton + UIButton UIButton + UIView UIPauseButton + UIButton + UIButton UISpeakerButton + UIButton + UIButton + UIButton UIVideoButton + UIButton conferenceButton UIButton + + eightButton + UIButton + + + fiveButton + UIButton + + + fourButton + UIButton + hangupButton UIHangUpButton + + hashButton + UIButton + microButton UIMicroButton + + nineButton + UIButton + + + oneButton + UIButton + optionsButton UIButton + + padView + UIView + pauseButton UIPauseButton + + sevenButton + UIButton + + + sixButton + UIButton + speakerButton UISpeakerButton + + starButton + UIButton + + + threeButton + UIButton + + + twoButton + UIButton + videoButton UIVideoButton + + zeroButton + UIButton + IBProjectSource ./Classes/UICallBar.h + + UIDigitButton + UILongTouchButton + + IBProjectSource + ./Classes/UIDigitButton.h + + UIHangUpButton UIButton @@ -616,6 +1330,14 @@ ./Classes/UIHangUpButton.h + + UILongTouchButton + UIButton + + IBProjectSource + ./Classes/UILongTouchButton.h + + UIMicroButton UIToggleButton @@ -624,6 +1346,14 @@ ./Classes/UIMicroButton.h + + UIPassView + UIView + + IBProjectSource + ./Classes/UIPassView.h + + UIPauseButton UIToggleButton @@ -651,17 +1381,6 @@ UIVideoButton UIToggleButton - - videoUpdateIndicator - UIActivityIndicatorView - - - videoUpdateIndicator - - videoUpdateIndicator - UIActivityIndicatorView - - IBProjectSource ./Classes/UIVideoButton.h @@ -678,9 +1397,32 @@ YES 3 + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} {16, 16} {209, 136} {209, 136} + {210, 113} + {210, 113} + {210, 113} + {210, 113} {160, 134} {160, 134} {160, 134} diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index c684228e0..0a551c8a7 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -18,6 +18,8 @@ */ #import +#import + #import "LinphoneManager.h" @interface UICompositeViewDescription: NSObject{ @@ -35,6 +37,7 @@ tabBar:(NSString*)tabBar tabBarEnabled:(BOOL) tabBarEnabled fullscreen:(BOOL) fullscreen; + @end @interface UICompositeViewController : UIViewController { @@ -49,8 +52,11 @@ NSMutableDictionary *viewControllerCache; UICompositeViewDescription *currentViewDescription; + CATransition *viewTransition; } +@property (strong) CATransition *viewTransition; + @property (nonatomic, retain) IBOutlet UIView* stateBarView; @property (nonatomic, retain) IBOutlet UIView* contentView; @property (nonatomic, retain) IBOutlet UIView* tabBarView; diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 6e7cba69b..06286378b 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -19,8 +19,6 @@ #import "UICompositeViewController.h" -#import - @implementation UICompositeViewDescription - (id)copy { @@ -56,15 +54,16 @@ @synthesize contentView; @synthesize tabBarView; +@synthesize viewTransition; -- (void)myInit { +- (void)initUICompositeViewController { self->viewControllerCache = [[NSMutableDictionary alloc] init]; } - (id)init{ self = [super init]; if (self) { - [self myInit]; + [self initUICompositeViewController]; } return self; } @@ -72,7 +71,7 @@ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { - [self myInit]; + [self initUICompositeViewController]; } return self; } @@ -80,7 +79,7 @@ - (id)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (self) { - [self myInit]; + [self initUICompositeViewController]; } return self; } @@ -141,19 +140,14 @@ currentViewDescription = description; // Animate only with a previous screen - if(oldViewDescription != nil) { - CATransition* trans = [CATransition animation]; - [trans setType:kCATransitionPush]; - [trans setDuration:0.35]; - [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; - [trans setSubtype:kCATransitionFromRight]; - [contentView.layer addAnimation:trans forKey:@"Transition"]; + if(oldViewDescription != nil && viewTransition != nil) { + [contentView.layer addAnimation:viewTransition forKey:@"Transition"]; if((oldViewDescription->stateBarEnabled == true && currentViewDescription->stateBarEnabled == false) || (oldViewDescription->stateBarEnabled == false && currentViewDescription->stateBarEnabled == true)) { - [stateBarView.layer addAnimation:trans forKey:@"Transition"]; + [stateBarView.layer addAnimation:viewTransition forKey:@"Transition"]; } if(oldViewDescription->tabBar != currentViewDescription->tabBar) { - [tabBarView.layer addAnimation:trans forKey:@"Transition"]; + [tabBarView.layer addAnimation:viewTransition forKey:@"Transition"]; } } @@ -230,11 +224,12 @@ } } else { contentFrame.size.height = tabFrame.origin.y + tabFrame.size.height; - if(currentViewDescription->fullscreen) - contentFrame.size.height += IPHONE_STATUSBAR_HEIGHT; tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - IPHONE_STATUSBAR_HEIGHT; } + if(currentViewDescription->fullscreen) + contentFrame.size.height = [[UIScreen mainScreen] bounds].size.height + IPHONE_STATUSBAR_HEIGHT; + // Resize innerView CGRect innerContentFrame = innerView.frame; innerContentFrame.size = contentFrame.size; diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib index 15ca250eb..1b47e9536 100644 --- a/Classes/LinphoneUI/UICompositeViewController.xib +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -40,6 +40,7 @@ {{0, 23}, {320, 380}} + _NS:9 YES IBCocoaTouchFramework @@ -65,6 +66,7 @@ {{0, 400}, {320, 60}} + _NS:9 3 @@ -77,6 +79,7 @@ {{0, 20}, {320, 460}} + 3 MQA @@ -178,8 +181,10 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIPassView com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIPassView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -217,6 +222,14 @@ ./Classes/UICompositeViewController.h + + UIPassView + UIView + + IBProjectSource + ./Classes/UIPassView.h + + 0 diff --git a/Classes/LinphoneUI/UIHangUpButton.m b/Classes/LinphoneUI/UIHangUpButton.m index bc7b5da2f..c7cb1ddab 100644 --- a/Classes/LinphoneUI/UIHangUpButton.m +++ b/Classes/LinphoneUI/UIHangUpButton.m @@ -62,14 +62,14 @@ } } -- (void)myInit { +- (void)initUIHangUpButton { [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; } - (id)init{ self = [super init]; if (self) { - [self myInit]; + [self initUIHangUpButton]; } return self; } @@ -77,7 +77,7 @@ - (id)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (self) { - [self myInit]; + [self initUIHangUpButton]; } return self; } @@ -85,7 +85,7 @@ - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { - [self myInit]; + [self initUIHangUpButton]; } return self; } diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib index 3779c3709..c42a61920 100644 --- a/Classes/LinphoneUI/UIMainBar.xib +++ b/Classes/LinphoneUI/UIMainBar.xib @@ -44,11 +44,8 @@ _NS:9 - 3 - MQA - - 2 - + 1 + MCAxIDAuMDkwOTI0NTczOTEAA NO NO diff --git a/Classes/LinphoneUI/UIPassView.h b/Classes/LinphoneUI/UIPassView.h new file mode 100644 index 000000000..839832347 --- /dev/null +++ b/Classes/LinphoneUI/UIPassView.h @@ -0,0 +1,24 @@ +/* UIPassView.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface UIPassView : UIView + +@end diff --git a/Classes/LinphoneUI/UIPassView.m b/Classes/LinphoneUI/UIPassView.m new file mode 100644 index 000000000..201f0fa2d --- /dev/null +++ b/Classes/LinphoneUI/UIPassView.m @@ -0,0 +1,44 @@ +/* UIPassView.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIPassView.h" + +@implementation UIPassView + +- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { + BOOL pointInside = NO; + + for(UIView *child in [self subviews]) { + if(![child isHidden]) { + if(CGRectContainsPoint(child.frame, point)) { + CGPoint newPoint = point; + newPoint.x -= child.frame.origin.x; + newPoint.y -= child.frame.origin.y; + if([child pointInside:newPoint withEvent:event]) { + pointInside = YES; + break; + } + } + } + } + + return pointInside; +} + +@end diff --git a/Classes/LinphoneUI/UIPauseButton.m b/Classes/LinphoneUI/UIPauseButton.m index 615babfa7..36fe79341 100644 --- a/Classes/LinphoneUI/UIPauseButton.m +++ b/Classes/LinphoneUI/UIPauseButton.m @@ -25,14 +25,14 @@ @implementation UIPauseButton -- (void)myInit { +- (void)initUIPauseButton { self->type = UIPauseButtonType_CurrentCall; } - (id)init{ self = [super init]; if (self) { - [self myInit]; + [self initUIPauseButton]; } return self; } @@ -40,7 +40,7 @@ - (id)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (self) { - [self myInit]; + [self initUIPauseButton]; } return self; } @@ -48,7 +48,7 @@ - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { - [self myInit]; + [self initUIPauseButton]; } return self; } diff --git a/Classes/LinphoneUI/UISpeakerButton.m b/Classes/LinphoneUI/UISpeakerButton.m index 6665fb799..d931cb4df 100644 --- a/Classes/LinphoneUI/UISpeakerButton.m +++ b/Classes/LinphoneUI/UISpeakerButton.m @@ -17,8 +17,11 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import "UISpeakerButton.h" #import +#import "UISpeakerButton.h" + +#import "LinphoneManager.h" + #include "linphonecore.h" @implementation UISpeakerButton @@ -35,33 +38,46 @@ static void audioRouteChangeListenerCallback ( } +- (void)initUISpeakerButton { + AudioSessionInitialize(NULL, NULL, NULL, NULL); + OSStatus lStatus = AudioSessionAddPropertyListener(routeChangeID, audioRouteChangeListenerCallback, self); + if (lStatus) { + ms_error ("cannot register route change handler [%ld]",lStatus); + } +} + - (id)init { - if((self = [super init]) != nil) { - - AudioSessionInitialize(NULL, NULL, NULL, NULL); - OSStatus lStatus = AudioSessionAddPropertyListener(routeChangeID, audioRouteChangeListenerCallback, self); - if (lStatus) { - ms_error ("cannot register route change handler [%ld]",lStatus); - } + self = [super init]; + if (self) { + [self initUISpeakerButton]; } return self; } +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUISpeakerButton]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUISpeakerButton]; + } + return self; +} - (void)onOn { - //redirect audio to speaker - UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; - AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute - , sizeof (audioRouteOverride) - , &audioRouteOverride); - + [[LinphoneManager instance] enableSpeaker:TRUE]; } + - (void)onOff { - UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None; - AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute - , sizeof (audioRouteOverride) - , &audioRouteOverride); + [[LinphoneManager instance] enableSpeaker:FALSE]; } + - (bool)onUpdate { CFStringRef lNewRoute=CFSTR("Unknown"); UInt32 lNewRouteSize = sizeof(lNewRoute); diff --git a/Classes/LinphoneUI/UIToggleButton.m b/Classes/LinphoneUI/UIToggleButton.m index 5194912bc..92efe199d 100644 --- a/Classes/LinphoneUI/UIToggleButton.m +++ b/Classes/LinphoneUI/UIToggleButton.m @@ -53,16 +53,24 @@ return self.selected; } -- (id)init { + +- (void)initUIToggleButton { [self update]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; - return self; +} + +- (id)init { + self = [super init]; + if (self) { + [self initUIToggleButton]; + } + return self; } - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { - [self init]; + [self initUIToggleButton]; } return self; } @@ -70,12 +78,11 @@ - (id)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (self) { - [self init]; + [self initUIToggleButton]; } return self; } - - (void)dealloc { [super dealloc]; } diff --git a/Classes/LinphoneUI/UIVideoButton.h b/Classes/LinphoneUI/UIVideoButton.h index 17d588343..86586ce74 100644 --- a/Classes/LinphoneUI/UIVideoButton.h +++ b/Classes/LinphoneUI/UIVideoButton.h @@ -22,10 +22,7 @@ #import "UIToggleButton.h" @interface UIVideoButton : UIToggleButton { - UIActivityIndicatorView* videoUpdateIndicator; + BOOL locked; } - -@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* videoUpdateIndicator; - @end diff --git a/Classes/LinphoneUI/UIVideoButton.m b/Classes/LinphoneUI/UIVideoButton.m index 2a7713b0f..961f1686a 100644 --- a/Classes/LinphoneUI/UIVideoButton.m +++ b/Classes/LinphoneUI/UIVideoButton.m @@ -22,16 +22,12 @@ @implementation UIVideoButton -@synthesize videoUpdateIndicator; - - (void)onOn { LinphoneCore* lc = [LinphoneManager getLc]; if (!linphone_core_video_enabled(lc)) return; - [videoUpdateIndicator startAnimating]; - [videoUpdateIndicator setHidden: FALSE]; [self setEnabled: FALSE]; LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); if (call) { @@ -51,8 +47,6 @@ if (!linphone_core_video_enabled(lc)) return; - [videoUpdateIndicator startAnimating]; - [videoUpdateIndicator setHidden: FALSE]; [self setEnabled: FALSE]; LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); if (call) { diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 2992fbcbc..1c0f0ab5e 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -30,7 +30,7 @@ @synthesize mainViewController; -- (void)myInit { +- (void)initPhoneMainView { currentPhoneView = -1; loadCount = 0; // For avoiding IOS 4 bug @@ -42,7 +42,7 @@ - (id)init { self = [super init]; if (self) { - [self myInit]; + [self initPhoneMainView]; } return self; } @@ -50,7 +50,7 @@ - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { - [self myInit]; + [self initPhoneMainView]; } return self; } @@ -58,11 +58,52 @@ - (id)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (self) { - [self myInit]; + [self initPhoneMainView]; } return self; } +- (CATransition*)getTransition:(PhoneView)old new:(PhoneView)new { + CATransition* trans = [CATransition animation]; + [trans setType:kCATransitionPush]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + + bool left = false; + + if(old == PhoneView_Chat) { + if(new == PhoneView_Contacts || + new == PhoneView_Dialer || + new == PhoneView_Settings || + new == PhoneView_History) { + left = true; + } + } else if(old == PhoneView_Settings) { + if(new == PhoneView_Dialer || + new == PhoneView_Contacts || + new == PhoneView_History) { + left = true; + } + } else if(old == PhoneView_Dialer) { + if(new == PhoneView_Contacts || + new == PhoneView_History) { + left = true; + } + } else if(old == PhoneView_Contacts) { + if(new == PhoneView_History) { + left = true; + } + } + + if(left) { + [trans setSubtype:kCATransitionFromLeft]; + } else { + [trans setSubtype:kCATransitionFromRight]; + } + + return trans; +} + - (void)changeView: (NSNotification*) notif { NSNumber *viewId = [notif.userInfo objectForKey: @"view"]; NSNumber *tabBar = [notif.userInfo objectForKey: @"tabBar"]; @@ -75,6 +116,7 @@ if(description == nil) return; if(view != currentPhoneView) { + [mainViewController setViewTransition:[self getTransition:currentPhoneView new:view]]; [mainViewController changeView:description]; currentPhoneView = view; } diff --git a/Classes/Utils/CPAnimationSequence.h b/Classes/Utils/CPAnimationSequence.h new file mode 100755 index 000000000..d018d1dfc --- /dev/null +++ b/Classes/Utils/CPAnimationSequence.h @@ -0,0 +1,26 @@ + +// Created by Yang Meyer on 26.07.11. +// Copyright 2011-2012 compeople AG. All rights reserved. + +#import +#import "CPAnimationStep.h" + +/** + A CPAnimationSequence defines a sequence of CPAnimationStep objects, which can + be `-run` animatedly or non-animatedly. + + CPAnimationSequence implements the Composite design pattern, with CPAnimationStep + as the base class. + */ +@interface CPAnimationSequence : CPAnimationStep + +#pragma mark - constructors + ++ (id) sequenceWithSteps:(CPAnimationStep*)first, ... NS_REQUIRES_NIL_TERMINATION; + +#pragma mark - properties + +/** Animations steps, from first to last. */ +@property (nonatomic, strong, readonly) NSArray* steps; + +@end diff --git a/Classes/Utils/CPAnimationSequence.m b/Classes/Utils/CPAnimationSequence.m new file mode 100755 index 000000000..e87e869ec --- /dev/null +++ b/Classes/Utils/CPAnimationSequence.m @@ -0,0 +1,79 @@ + +// Created by Yang Meyer on 26.07.11. +// Copyright 2011-2012 compeople AG. All rights reserved. + +#import "CPAnimationSequence.h" + +@interface CPAnimationStep(hidden) +- (NSArray*) animationStepArray; +@end + +@interface CPAnimationSequence() +@property (nonatomic, strong, readwrite) NSArray* steps; +@end + +#pragma mark - +@implementation CPAnimationSequence + +@synthesize steps; + +#pragma mark - Object lifecycle + ++ (id) sequenceWithSteps:(CPAnimationStep*)first, ... { + CPAnimationSequence* instance = [[self alloc] init]; + if (instance) { + NSMutableArray* tempSteps = [[NSMutableArray alloc] initWithCapacity:10]; + va_list args; + va_start(args, first); + [tempSteps insertObject:first atIndex:0]; + CPAnimationStep* aStep; + while ((aStep = va_arg(args, CPAnimationStep*))) { + [tempSteps insertObject:aStep atIndex:0]; + } + instance.steps = [NSArray arrayWithArray:tempSteps]; + va_end(args); + } + return instance; +} + + +#pragma mark - property override + +- (void) setDelay:(NSTimeInterval)delay { + NSAssert(NO, @"Setting a delay on a sequence is undefined and therefore disallowed!"); +} + +- (void) setDuration:(NSTimeInterval)duration { + NSAssert(NO, @"Setting a duration on a sequence is undefined and therefore disallowed!"); +} + +- (void) setOptions:(UIViewAnimationOptions)options { + NSAssert(NO, @"Setting options on a sequence is undefined and therefore disallowed!"); +} + +#pragma mark - build the sequence + +- (NSArray*) animationStepArray { + NSMutableArray* array = [NSMutableArray arrayWithCapacity:[self.steps count]]; + for (CPAnimationStep* current in self.steps) { + [array addObjectsFromArray:[current animationStepArray]]; + } + return array; +} + +#pragma mark - pretty-print + +- (NSString*) description { + NSMutableString* sequenceBody = [[NSMutableString alloc] initWithCapacity:100*[self.steps count]]; + for (CPAnimationStep* step in self.steps) { + [sequenceBody appendString:[step description]]; + } + // indent + [sequenceBody replaceOccurrencesOfString:@"\n" + withString:@"\n " + options:NSCaseInsensitiveSearch + range:NSMakeRange(0, [sequenceBody length])]; + return [NSString stringWithFormat:@"\n(sequence:%@\n)", sequenceBody]; +} + +@end diff --git a/Classes/Utils/CPAnimationStep.h b/Classes/Utils/CPAnimationStep.h new file mode 100755 index 000000000..ca67b485c --- /dev/null +++ b/Classes/Utils/CPAnimationStep.h @@ -0,0 +1,46 @@ + +// Created by Yang Meyer on 26.07.11. +// Copyright 2011 compeople AG. All rights reserved. + +#import + +/** Helper type definition for the component. */ +typedef void (^AnimationStep)(void); + +/** + A CPAnimationStep defines a single animation object with a delay, duration, execution block and animation options. + */ +@interface CPAnimationStep : NSObject + +#pragma mark - constructors + ++ (id) after:(NSTimeInterval)delay + animate:(AnimationStep)step; + ++ (id) for:(NSTimeInterval)duration + animate:(AnimationStep)step; + ++ (id) after:(NSTimeInterval)delay + for:(NSTimeInterval)duration + animate:(AnimationStep)step; + ++ (id) after:(NSTimeInterval)delay + for:(NSTimeInterval)duration + options:(UIViewAnimationOptions)theOptions + animate:(AnimationStep)step; + +#pragma mark - properties (normally already set by the constructor) + +@property (nonatomic) NSTimeInterval delay; +@property (nonatomic) NSTimeInterval duration; +@property (nonatomic, copy) AnimationStep step; +@property (nonatomic) UIViewAnimationOptions options; + +#pragma mark - execution + +/** Starts the step execution. */ +- (void) runAnimated:(BOOL)animated; +/** Shortcut for [step runAnimated:YES] */ +- (void) run; + +@end diff --git a/Classes/Utils/CPAnimationStep.m b/Classes/Utils/CPAnimationStep.m new file mode 100755 index 000000000..8ea76a77d --- /dev/null +++ b/Classes/Utils/CPAnimationStep.m @@ -0,0 +1,124 @@ + +// Created by Yang Meyer on 26.07.11. +// Copyright 2011-2012 compeople AG. All rights reserved. + +#import "CPAnimationStep.h" + +@interface CPAnimationStep() +/** A temporary reverse queue of animation steps, i.e. from last to first. + It is created when the step is run, and is modified during the animation, + and is destroyed when the animation finishes. */ +@property (nonatomic, strong) NSMutableArray* consumableSteps; +@end + +@implementation CPAnimationStep + +@synthesize delay, duration, step, options; +@synthesize consumableSteps; + +#pragma mark overrides + + +#pragma mark construction + ++ (id) after:(NSTimeInterval)delay animate:(AnimationStep)step { + return [self after:delay for:0.0 options:0 animate:step]; +} + ++ (id) for:(NSTimeInterval)duration animate:(AnimationStep)step { + return [self after:0.0 for:duration options:0 animate:step]; +} + ++ (id) after:(NSTimeInterval)delay for:(NSTimeInterval)duration animate:(AnimationStep)step { + return [self after:delay for:duration options:0 animate:step]; +} + ++ (id) after:(NSTimeInterval)theDelay + for:(NSTimeInterval)theDuration + options:(UIViewAnimationOptions)theOptions + animate:(AnimationStep)theStep { + + CPAnimationStep* instance = [[self alloc] init]; + if (instance) { + instance.delay = theDelay; + instance.duration = theDuration; + instance.options = theOptions; + instance.step = [theStep copy]; + } + return instance; +} + +#pragma mark action + +// From http://stackoverflow.com/questions/4007023/blocks-instead-of-performselectorwithobjectafterdelay ++ (void) runBlock:(AnimationStep)block afterDelay:(NSTimeInterval)delay { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay), dispatch_get_current_queue(), block); +} + +- (NSArray*) animationStepArray { + // subclasses must override this! + return [NSArray arrayWithObject:self]; +} + +- (void) runAnimated:(BOOL)animated { + if (!self.consumableSteps) { + self.consumableSteps = [[NSMutableArray alloc] initWithArray:[self animationStepArray]]; + } + if (![self.consumableSteps count]) { // recursion anchor + self.consumableSteps = nil; + return; // we're done + } + AnimationStep completionStep = ^{ + [self.consumableSteps removeLastObject]; + [self runAnimated:animated]; // recurse! + }; + CPAnimationStep* currentStep = [self.consumableSteps lastObject]; + // Note: do not animate to short steps + if (animated && currentStep.duration >= 0.02) { + [UIView animateWithDuration:currentStep.duration + delay:currentStep.delay + options:currentStep.options + animations:currentStep.step + completion:^(BOOL finished) { + if (finished) { + completionStep(); + } + }]; + } else { + void (^execution)(void) = ^{ + currentStep.step(); + completionStep(); + }; + + if (animated && currentStep.delay) { + [CPAnimationStep runBlock:execution afterDelay:currentStep.delay]; + } else { + execution(); + } + } +} + +- (void) run { + [self runAnimated:YES]; +} + +#pragma mark - pretty-print + +- (NSString*) description { + NSMutableString* result = [[NSMutableString alloc] initWithCapacity:100]; + [result appendString:@"\n["]; + if (self.delay > 0.0) { + [result appendFormat:@"after:%.1f ", self.delay]; + } + if (self.duration > 0.0) { + [result appendFormat:@"for:%.1f ", self.duration]; + } + if (self.options > 0) { + [result appendFormat:@"options:%d ", self.options]; + } + [result appendFormat:@"animate:%@", self.step]; + [result appendString:@"]"]; + return result; +} + +@end diff --git a/Resources/toy-mono.wav b/Resources/toy-mono.wav new file mode 100644 index 0000000000000000000000000000000000000000..a225ac2cb6513bc52dc33dd3344dd2a181403db1 GIT binary patch literal 477458 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%0A@} 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

Ur_<@m~k4USq? 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index e4529577b..b2de10655 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -147,8 +147,6 @@ 34075199150645A300B89C47 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340751961506459A00B89C47 /* CoreTelephony.framework */; }; 340751E7150F38FD00B89C47 /* UIVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIVideoButton.m */; }; 340751E8150F38FD00B89C47 /* UIVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIVideoButton.m */; }; - 340A75B014C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; }; - 340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */; }; 3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; 3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; @@ -159,12 +157,6 @@ 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; 3422AA5314978352000D4E8A /* PhoneViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */; }; 3422AA5414978352000D4E8A /* PhoneViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */; }; - 344ABD72147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */; }; - 344ABD73147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */; }; - 344ABD77147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */ = {isa = PBXBuildFile; fileRef = 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */; }; - 344ABD78147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */ = {isa = PBXBuildFile; fileRef = 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */; }; - 344ABD7A147FD32B007420B6 /* ConferenceCallDetailCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */; }; - 344ABD7B147FD32B007420B6 /* ConferenceCallDetailCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */; }; 344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDE71484E723007420B6 /* libzrtpcpp.a */; }; 344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; 344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -229,6 +221,12 @@ D3211BC3159CBFD70098460B /* cancel_white_bg_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */; }; D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D32409C4158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; + D32460E6159D9AAD00BA7F3A /* UIPassView.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460E5159D9AAD00BA7F3A /* UIPassView.m */; }; + D32460E7159D9AAD00BA7F3A /* UIPassView.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460E5159D9AAD00BA7F3A /* UIPassView.m */; }; + D32460ED159DA47700BA7F3A /* CPAnimationSequence.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460EA159DA47700BA7F3A /* CPAnimationSequence.m */; }; + D32460EE159DA47700BA7F3A /* CPAnimationSequence.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460EA159DA47700BA7F3A /* CPAnimationSequence.m */; }; + D32460EF159DA47700BA7F3A /* CPAnimationStep.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460EC159DA47700BA7F3A /* CPAnimationStep.m */; }; + D32460F0159DA47700BA7F3A /* CPAnimationStep.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460EC159DA47700BA7F3A /* CPAnimationStep.m */; }; D326483815887D5200930C67 /* OrderedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483715887D5200930C67 /* OrderedDictionary.m */; }; D326483915887D5200930C67 /* OrderedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483715887D5200930C67 /* OrderedDictionary.m */; }; D326483E1588950F00930C67 /* UICallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* UICallBar.m */; }; @@ -396,6 +394,8 @@ D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; D3A55FC015877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; + D3C714B3159DB84400705B8E /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; + D3C714B4159DB84400705B8E /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; D3D6A39E159B0EEF005F692C /* add_call_more_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_more_default.png */; }; D3D6A39F159B0EEF005F692C /* add_call_more_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_more_default.png */; }; D3D6A3A0159B0EEF005F692C /* add_call_more_disable.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */; }; @@ -903,17 +903,12 @@ 340751E4150E4D0200B89C47 /* CallDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallDelegate.h; sourceTree = ""; }; 340751E5150F38FC00B89C47 /* UIVideoButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIVideoButton.h; sourceTree = ""; }; 340751E6150F38FD00B89C47 /* UIVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIVideoButton.m; sourceTree = ""; }; - 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "ConferenceCallDetailView-ipad.xib"; sourceTree = ""; }; 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = nowebcamCIF.jpg; path = submodules/linphone/mediastreamer2/src/nowebcamCIF.jpg; sourceTree = ""; }; 341FCA8D149798210084BC26 /* linphonerc-ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "linphonerc-ipad"; sourceTree = ""; }; 34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoZoomHandler.h; path = LinphoneUI/VideoZoomHandler.h; sourceTree = ""; }; 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VideoZoomHandler.m; path = LinphoneUI/VideoZoomHandler.m; sourceTree = ""; }; 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "InCallViewController-ipad.xib"; sourceTree = ""; }; 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "PhoneViewController-ipad.xib"; sourceTree = ""; }; - 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConferenceCallDetailView.xib; sourceTree = ""; }; - 344ABD75147FCB68007420B6 /* ConferenceCallDetailView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConferenceCallDetailView.h; sourceTree = ""; }; - 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ConferenceCallDetailView.m; sourceTree = ""; }; - 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ConferenceCallDetailCell.xib; sourceTree = ""; }; 344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = ""; }; 344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; }; 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; }; @@ -957,6 +952,12 @@ D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_white_bg_over.png; path = Resources/cancel_white_bg_over.png; sourceTree = ""; }; D32409C1158B49A600C8C119 /* UILongTouchButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILongTouchButton.h; sourceTree = ""; }; D32409C2158B49A600C8C119 /* UILongTouchButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UILongTouchButton.m; sourceTree = ""; }; + D32460E4159D9AAD00BA7F3A /* UIPassView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPassView.h; sourceTree = ""; }; + D32460E5159D9AAD00BA7F3A /* UIPassView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPassView.m; sourceTree = ""; }; + D32460E9159DA47700BA7F3A /* CPAnimationSequence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPAnimationSequence.h; path = Utils/CPAnimationSequence.h; sourceTree = ""; }; + D32460EA159DA47700BA7F3A /* CPAnimationSequence.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CPAnimationSequence.m; path = Utils/CPAnimationSequence.m; sourceTree = ""; }; + D32460EB159DA47700BA7F3A /* CPAnimationStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPAnimationStep.h; path = Utils/CPAnimationStep.h; sourceTree = ""; }; + D32460EC159DA47700BA7F3A /* CPAnimationStep.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CPAnimationStep.m; path = Utils/CPAnimationStep.m; sourceTree = ""; }; D326483615887D5200930C67 /* OrderedDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OrderedDictionary.h; path = Utils/OrderedDictionary.h; sourceTree = ""; }; D326483715887D5200930C67 /* OrderedDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OrderedDictionary.m; path = Utils/OrderedDictionary.m; sourceTree = ""; }; D326483B1588950F00930C67 /* UICallBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallBar.h; sourceTree = ""; }; @@ -1077,6 +1078,7 @@ D3A55FBA15877E5E003FD403 /* UIContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactCell.h; sourceTree = ""; }; D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = ""; }; D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = ""; }; + D3C714B2159DB84400705B8E /* toy-mono.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "toy-mono.wav"; path = "Resources/toy-mono.wav"; sourceTree = ""; }; D3D6A39B159B0EEF005F692C /* add_call_more_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_default.png; path = Resources/add_call_more_default.png; sourceTree = ""; }; D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_disable.png; path = Resources/add_call_more_disable.png; sourceTree = ""; }; D3D6A39D159B0EEF005F692C /* add_call_more_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_over.png; path = Resources/add_call_more_over.png; sourceTree = ""; }; @@ -1302,11 +1304,6 @@ D35E7594159460560066B1C1 /* ChatViewController.h */, D35E7595159460560066B1C1 /* ChatViewController.m */, D35E7596159460570066B1C1 /* ChatViewController.xib */, - 344ABD79147FD32B007420B6 /* ConferenceCallDetailCell.xib */, - 340A75AF14C0670A006AA708 /* ConferenceCallDetailView-ipad.xib */, - 344ABD75147FCB68007420B6 /* ConferenceCallDetailView.h */, - 344ABD76147FCB68007420B6 /* ConferenceCallDetailView.m */, - 344ABD71147FC438007420B6 /* ConferenceCallDetailView.xib */, 22E0A820111C44E100B04932 /* ConsoleViewController.h */, 22E0A81F111C44E100B04932 /* ConsoleViewController.m */, 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */, @@ -1621,6 +1618,8 @@ 2214EBF212F86360002A5394 /* UIMicroButton.m */, D3F34F331599C354005BE94F /* UIModalViewController.h */, D3F34F341599C354005BE94F /* UIModalViewController.m */, + D32460E4159D9AAD00BA7F3A /* UIPassView.h */, + D32460E5159D9AAD00BA7F3A /* UIPassView.m */, D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */, D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */, 22968A5D12F875C600588287 /* UISpeakerButton.h */, @@ -1950,6 +1949,7 @@ D3EA5402159852080037DC6B /* tchat-new-discussion-over.png */, D38327FF158100E400FA0D23 /* tchat-over.png */, D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */, + D3C714B2159DB84400705B8E /* toy-mono.wav */, D3F83F00158205A100336684 /* video-OFF-actif.png */, D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */, D3F83F01158205A100336684 /* video-OFF-over.png */, @@ -1972,6 +1972,10 @@ D326483415887D4400930C67 /* Utils */ = { isa = PBXGroup; children = ( + D32460E9159DA47700BA7F3A /* CPAnimationSequence.h */, + D32460EA159DA47700BA7F3A /* CPAnimationSequence.m */, + D32460EB159DA47700BA7F3A /* CPAnimationStep.h */, + D32460EC159DA47700BA7F3A /* CPAnimationStep.m */, D3F26BEA159869A6005F9CAB /* AbstractCall.h */, D3F26BEB159869A6005F9CAB /* AbstractCall.m */, D326483615887D5200930C67 /* OrderedDictionary.h */, @@ -2157,13 +2161,10 @@ 228B19AF130290C500F154D3 /* iTunesArtwork in Resources */, 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */, - 344ABD72147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */, - 344ABD7A147FD32B007420B6 /* ConferenceCallDetailCell.xib in Resources */, 34CA852F148F646700503C01 /* MainScreenWithVideoPreview.xib in Resources */, 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 3422AA5314978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */, - 340A75B014C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */, 3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */, 34C7646C14CD5585008E9607 /* dialer-orange.png in Resources */, 34C7646D14CD5585008E9607 /* history-orange.png in Resources */, @@ -2340,6 +2341,7 @@ D3211BBE159CBFD60098460B /* cancel_white_bg_default.png in Resources */, D3211BC0159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */, D3211BC2159CBFD70098460B /* cancel_white_bg_over.png in Resources */, + D3C714B3159DB84400705B8E /* toy-mono.wav in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2364,13 +2366,10 @@ 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */, 22D8F142147548E2008C97DB /* rootca.pem in Resources */, 2211DB95147564B400DEE054 /* Settings.bundle in Resources */, - 344ABD73147FC438007420B6 /* ConferenceCallDetailView.xib in Resources */, - 344ABD7B147FD32B007420B6 /* ConferenceCallDetailCell.xib in Resources */, 34CA8530148F646700503C01 /* MainScreenWithVideoPreview.xib in Resources */, 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 3422AA5414978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */, - 340A75B114C0670B006AA708 /* ConferenceCallDetailView-ipad.xib in Resources */, 3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */, 57282931154AF1460076F540 /* history-orange.png in Resources */, 57282933154AF14D0076F540 /* dialer-orange.png in Resources */, @@ -2531,6 +2530,7 @@ D3211BBF159CBFD70098460B /* cancel_white_bg_default.png in Resources */, D3211BC1159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */, D3211BC3159CBFD70098460B /* cancel_white_bg_over.png in Resources */, + D3C714B4159DB84400705B8E /* toy-mono.wav in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2558,7 +2558,6 @@ 223963171393CFAF001DE689 /* FastAddressBook.m in Sources */, 22AA8B0113D83F6300B30535 /* UICamSwitch.m in Sources */, 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */, - 344ABD77147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, 34CA8539148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, 340751E7150F38FD00B89C47 /* UIVideoButton.m in Sources */, 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, @@ -2606,6 +2605,9 @@ D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */, D3211BB0159C4EF10098460B /* UIConferenceHeader.m in Sources */, + D32460E6159D9AAD00BA7F3A /* UIPassView.m in Sources */, + D32460ED159DA47700BA7F3A /* CPAnimationSequence.m in Sources */, + D32460EF159DA47700BA7F3A /* CPAnimationStep.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2630,7 +2632,6 @@ 22D8F157147548E2008C97DB /* FastAddressBook.m in Sources */, 22D8F159147548E2008C97DB /* UICamSwitch.m in Sources */, 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */, - 344ABD78147FCB68007420B6 /* ConferenceCallDetailView.m in Sources */, 34CA853A148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, 340751E8150F38FD00B89C47 /* UIVideoButton.m in Sources */, 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, @@ -2678,6 +2679,9 @@ D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */, D3211BB1159C4EF10098460B /* UIConferenceHeader.m in Sources */, + D32460E7159D9AAD00BA7F3A /* UIPassView.m in Sources */, + D32460EE159DA47700BA7F3A /* CPAnimationSequence.m in Sources */, + D32460F0159DA47700BA7F3A /* CPAnimationStep.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/main.m b/main.m index 511484655..ecec28813 100644 --- a/main.m +++ b/main.m @@ -20,8 +20,6 @@ #import int main(int argc, char *argv[]) { - - NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; From 170c82498a7033f3d3db475553551d079d0266e9 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 29 Jun 2012 18:39:43 +0200 Subject: [PATCH 023/397] Update linphone submodule (memory leak fix) --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 630e26944..179727a5f 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 630e26944dd6e5cca53787452b162ec6baf7ba48 +Subproject commit 179727a5f65c4f9043b8534e59be8ecf508073ad From 7b1e2087032af10f38d53b9eb6f26d069d602be4 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 2 Jul 2012 18:49:14 +0200 Subject: [PATCH 024/397] Improve UI Add pragma mark Add wait indicator on video button --- Classes/ContactsTableViewController.h | 2 +- Classes/ContactsTableViewController.m | 11 +- Classes/ContactsViewController.m | 19 +- Classes/ContactsViewController.xib | 4 +- Classes/DialerViewController.h | 4 +- Classes/DialerViewController.m | 110 +-- Classes/FirstLoginViewController.m | 38 +- Classes/HistoryTableViewController.h | 2 +- Classes/HistoryTableViewController.m | 12 +- Classes/HistoryViewController.m | 54 +- Classes/InCallTableViewController.h | 2 +- Classes/InCallTableViewController.m | 277 ++++---- Classes/InCallViewController.m | 282 ++++---- Classes/IncomingCallViewController.m | 28 +- Classes/LinphoneAppDelegate.m | 12 +- Classes/LinphoneManager.h | 4 +- Classes/LinphoneManager.m | 31 +- Classes/LinphoneUI/UICallBar.m | 123 ++-- Classes/LinphoneUI/UICallBar.xib | 52 +- Classes/LinphoneUI/UICallButton.m | 41 +- Classes/LinphoneUI/UICallCell.h | 11 +- Classes/LinphoneUI/UICallCell.m | 102 +-- Classes/LinphoneUI/UICallCell.xib | 106 ++- Classes/LinphoneUI/UIChatCell.m | 18 +- .../LinphoneUI/UICompositeViewController.m | 5 + Classes/LinphoneUI/UIConferenceHeader.m | 18 + Classes/LinphoneUI/UIContactCell.m | 20 +- Classes/LinphoneUI/UIDigitButton.m | 56 +- Classes/LinphoneUI/UIDuration.h | 33 - Classes/LinphoneUI/UIDuration.m | 66 -- Classes/LinphoneUI/UIEraseButton.m | 25 +- Classes/LinphoneUI/UIHangUpButton.m | 58 +- Classes/LinphoneUI/UIHistoryCell.m | 26 +- Classes/LinphoneUI/UILinphone.h | 29 - Classes/LinphoneUI/UILongTouchButton.m | 45 +- Classes/LinphoneUI/UIMainBar.m | 39 +- Classes/LinphoneUI/UIPauseButton.m | 84 +-- Classes/LinphoneUI/UISpeakerButton.m | 36 +- Classes/LinphoneUI/UIStateBar.m | 80 ++- Classes/LinphoneUI/UIToggleButton.m | 69 +- Classes/LinphoneUI/UIVideoButton.h | 7 + Classes/LinphoneUI/UIVideoButton.m | 65 +- Classes/MainScreenWithVideoPreview.h | 42 -- Classes/MainScreenWithVideoPreview.m | 185 ------ Classes/MainScreenWithVideoPreview.xib | 629 ------------------ Classes/MoreViewController.h | 2 +- Classes/MoreViewController.m | 43 +- Classes/PhoneMainView.m | 179 ++--- Classes/SettingsViewController.m | 67 +- Classes/Utils/CPAnimationSequence.m | 5 + Classes/Utils/CPAnimationStep.h | 2 +- Classes/Utils/CPAnimationStep.m | 8 +- .../supprimer-participant-conf-actif.png | Bin 0 -> 2116 bytes Resources/supprimer-participant-conf-over.png | Bin 0 -> 2090 bytes Resources/video-ON-disabled.png | Bin 0 -> 3044 bytes linphone.xcodeproj/project.pbxproj | 40 +- 56 files changed, 1347 insertions(+), 1961 deletions(-) delete mode 100644 Classes/LinphoneUI/UIDuration.h delete mode 100644 Classes/LinphoneUI/UIDuration.m delete mode 100644 Classes/LinphoneUI/UILinphone.h delete mode 100644 Classes/MainScreenWithVideoPreview.h delete mode 100644 Classes/MainScreenWithVideoPreview.m delete mode 100644 Classes/MainScreenWithVideoPreview.xib create mode 100644 Resources/supprimer-participant-conf-actif.png create mode 100644 Resources/supprimer-participant-conf-over.png create mode 100644 Resources/video-ON-disabled.png diff --git a/Classes/ContactsTableViewController.h b/Classes/ContactsTableViewController.h index 696b0ef7e..5ef07e6ea 100644 --- a/Classes/ContactsTableViewController.h +++ b/Classes/ContactsTableViewController.h @@ -22,7 +22,7 @@ #import "OrderedDictionary.h" -@interface ContactsTableViewController : UITableViewController { +@interface ContactsTableViewController : UITableViewController { OrderedDictionary* addressBookMap; ABAddressBookRef addressBook; diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index ece60dc47..55c1b33d2 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -23,8 +23,6 @@ @implementation ContactsTableViewController -#pragma mark Table view methods - void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { ContactsTableViewController* controller = (ContactsTableViewController*)context; OrderedDictionary* lAddressBookMap = controller->addressBookMap; @@ -72,6 +70,9 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, [(UITableView *)controller.view reloadData]; } + +#pragma mark - ViewController Functions + - (void) viewDidLoad { addressBookMap = [[OrderedDictionary alloc] init]; addressBook = ABAddressBookCreate(); @@ -79,6 +80,9 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, sync_toc_address_book(addressBook, nil, self); } + +#pragma mark - UITableViewDataSource Functions + - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [addressBookMap count]; } @@ -133,6 +137,9 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, CFRelease(lPhoneNumbers); } + +#pragma mark - Lifecycle Functions + - (void)dealloc { [super dealloc]; [addressBookMap removeAllObjects]; diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index a946c277b..e3f3df8a6 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -35,15 +35,29 @@ typedef enum _HistoryView { History_MAX } HistoryView; +#pragma mark - Lifecycle Functions + - (id)init { return [super initWithNibName:@"ContactsViewController" bundle:[NSBundle mainBundle]]; } + +#pragma mark - ViewController Functions + - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self.tableView reloadData]; } + +- (void)viewDidLoad { + [super viewDidLoad]; + [self changeView: History_All]; +} + + +#pragma mark - + - (void)changeView: (HistoryView) view { if(view == History_All) { allButton.selected = TRUE; @@ -58,10 +72,7 @@ typedef enum _HistoryView { } } -- (void)viewDidLoad { - [super viewDidLoad]; - [self changeView: History_All]; -} +#pragma mark - Action Functions - (IBAction)onAllClick: (id) event { [self changeView: History_All]; diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index f58cd17b9..05961c8d6 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -413,7 +413,7 @@ UIButton UIButton - UITableViewController + ContactsTableViewController UITableView @@ -427,7 +427,7 @@

tableController - UITableViewController + ContactsTableViewController tableView diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index 188c63465..6db7ae801 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -19,7 +19,9 @@ #import -#import "UILinphone.h" +#import "UIEraseButton.h" +#import "UICallButton.h" +#import "UIDigitButton.h" @interface DialerViewController : UIViewController { diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index f2a3dfc1d..302f98355 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -50,36 +50,46 @@ @synthesize zeroButton; @synthesize hashButton; +#pragma mark - Lifecycle Functions + - (id)init { return [super initWithNibName:@"DialerViewController" bundle:[NSBundle mainBundle]]; } +- (void)dealloc { + [addressField release]; + [addContactButton release]; + [cancelButton release]; + [eraseButton release]; + [callButton release]; + [addCallButton release]; + + [oneButton release]; + [twoButton release]; + [threeButton release]; + [fourButton release]; + [fiveButton release]; + [sixButton release]; + [sevenButton release]; + [eightButton release]; + [nineButton release]; + [starButton release]; + [zeroButton release]; + [hashButton release]; + + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [super dealloc]; +} + + +#pragma mark - ViewController Functions + - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self update]; } -- (void)callUpdate:(NSNotification*)notif { - [self update]; -} - -- (void)update { - if([LinphoneManager isLcReady]) { - LinphoneCore *lc = [LinphoneManager getLc]; - if(linphone_core_get_calls_nb(lc) > 0) { - [addCallButton setHidden:false]; - [callButton setHidden:true]; - [cancelButton setHidden:false]; - [addContactButton setHidden:true]; - } else { - [addCallButton setHidden:true]; - [callButton setHidden:false]; - [cancelButton setHidden:true]; - [addContactButton setHidden:false]; - } - } -} - - (void)viewDidLoad { [super viewDidLoad]; @@ -107,35 +117,40 @@ [[NSNotificationCenter defaultCenter] removeObserver:self]; } + +#pragma mark - Event Functions + +- (void)callUpdate:(NSNotification*)notif { + [self update]; +} + + +#pragma mark - + +- (void)update { + if([LinphoneManager isLcReady]) { + LinphoneCore *lc = [LinphoneManager getLc]; + if(linphone_core_get_calls_nb(lc) > 0) { + [addCallButton setHidden:false]; + [callButton setHidden:true]; + [cancelButton setHidden:false]; + [addContactButton setHidden:true]; + } else { + [addCallButton setHidden:true]; + [callButton setHidden:false]; + [cancelButton setHidden:true]; + [addContactButton setHidden:false]; + } + } +} + + - (void)setAddress:(NSString*) address { [addressField setText:address]; } -- (void)dealloc { - [addressField release]; - [addContactButton release]; - [cancelButton release]; - [eraseButton release]; - [callButton release]; - [addCallButton release]; - - [oneButton release]; - [twoButton release]; - [threeButton release]; - [fourButton release]; - [fiveButton release]; - [sixButton release]; - [sevenButton release]; - [eightButton release]; - [nineButton release]; - [starButton release]; - [zeroButton release]; - [hashButton release]; - - [[NSNotificationCenter defaultCenter] removeObserver:self]; - - [super dealloc]; -} + +#pragma mark - UITextFieldDelegate Functions - (BOOL)textFieldShouldReturn:(UITextField *)textField { if (textField == addressField) { @@ -144,6 +159,9 @@ return YES; } + +#pragma mark - Action Functions + - (IBAction)onAddContactClick: (id) event { } diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index 437c76a2a..d3f202da5 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -29,10 +29,24 @@ @synthesize passwordField; @synthesize waitView; +#pragma mark - Lifecycle Functions + - (id)init { return [super initWithNibName:@"FirstLoginViewController" bundle:[NSBundle mainBundle]]; } +- (void)dealloc { + [super dealloc]; + [loginButton dealloc]; + [siteButton dealloc]; + [usernameField dealloc]; + [passwordField dealloc]; + [waitView dealloc]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +#pragma mark - ViewController Functions + - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [usernameField setText:[[LinphoneManager instance].settingsStore objectForKey:@"username_preference"]]; @@ -50,6 +64,13 @@ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) name:@"LinphoneRegistrationUpdate" object:nil]; } +- (void)viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + + +#pragma mark - Event Functions + - (void)registrationUpdate: (NSNotification*) notif { LinphoneRegistrationState state = [[notif.userInfo objectForKey: @"state"] intValue]; switch (state) { @@ -91,19 +112,7 @@ } } -- (void)dealloc { - [super dealloc]; - [loginButton dealloc]; - [siteButton dealloc]; - [usernameField dealloc]; - [passwordField dealloc]; - [waitView dealloc]; - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (void)viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} +#pragma mark - Action Functions - (void)onSiteClick:(id)sender { NSURL *url = [NSURL URLWithString:siteButton.titleLabel.text]; @@ -136,6 +145,9 @@ }; } + +#pragma mark - UITextFieldDelegate Functions + - (BOOL)textFieldShouldReturn:(UITextField *)theTextField { // When the user presses return, take focus away from the text field so that the keyboard is dismissed. [theTextField resignFirstResponder]; diff --git a/Classes/HistoryTableViewController.h b/Classes/HistoryTableViewController.h index 09f55b9e7..b668e5fc4 100644 --- a/Classes/HistoryTableViewController.h +++ b/Classes/HistoryTableViewController.h @@ -19,7 +19,7 @@ #import -@interface HistoryTableViewController : UITableViewController { +@interface HistoryTableViewController : UITableViewController { @private BOOL editMode; } diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index 7f9f7a04e..83635f53a 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -23,6 +23,8 @@ @implementation HistoryTableViewController +#pragma mark - Lifecycle Functions + - (id)init { if((self = [super init]) != nil) { self->editMode = false; @@ -30,6 +32,9 @@ return self; } + +#pragma mark - UITableViewDataSource Functions + - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } @@ -97,6 +102,9 @@ [dispName release]; } + +#pragma mark - + - (void) toggleEditMode { editMode = !editMode; [(UITableView*)[self view] reloadData]; @@ -114,9 +122,5 @@ } } -- (void)dealloc { - [super dealloc]; -} - @end diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 261e2fb3f..afad71699 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -34,15 +34,46 @@ typedef enum _HistoryView { History_MAX } HistoryView; + +#pragma mark - Lifecycle Functions + - (id)init { return [super initWithNibName:@"HistoryViewController" bundle:[NSBundle mainBundle]]; } +- (void)dealloc { + [allButton release]; + [missedButton release]; + [editButton release]; + [super dealloc]; +} + + +#pragma mark - ViewController Functions + - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self.tableView reloadData]; } +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [tableController exitEditMode]; + [editButton setOff]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + [self changeView: History_All]; + + // Set selected+over background: IB lack ! + [editButton setBackgroundImage:[UIImage imageNamed:@"ok-edit-list-history-over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; +} + + +#pragma mark - + - (void)changeView: (HistoryView) view { if(view == History_All) { allButton.selected = TRUE; @@ -57,14 +88,8 @@ typedef enum _HistoryView { } } -- (void)viewDidLoad { - [super viewDidLoad]; - [self changeView: History_All]; - - // Set selected+over background: IB lack ! - [editButton setBackgroundImage:[UIImage imageNamed:@"ok-edit-list-history-over.png"] - forState:(UIControlStateHighlighted | UIControlStateSelected)]; -} + +#pragma mark - Action Functions - (IBAction)onAllClick:(id) event { [self changeView: History_All]; @@ -79,17 +104,4 @@ typedef enum _HistoryView { } -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [tableController exitEditMode]; - [editButton setOff]; -} - -- (void)dealloc { - [allButton release]; - [missedButton release]; - [editButton release]; - [super dealloc]; -} - @end diff --git a/Classes/InCallTableViewController.h b/Classes/InCallTableViewController.h index 99abc4d60..1ccd38a08 100644 --- a/Classes/InCallTableViewController.h +++ b/Classes/InCallTableViewController.h @@ -23,7 +23,7 @@ #include "linphonecore.h" -@interface InCallTableViewController : UITableViewController { +@interface InCallTableViewController : UITableViewController { @private NSMutableDictionary* callCellData; NSTimer *updateTime; diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index f5802c21f..4ca89b328 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -31,6 +31,8 @@ enum TableSection { CallSection = 1 }; +#pragma mark - Lifecycle Functions + - (void)initInCallTableViewController { self->callCellData = [[NSMutableDictionary alloc] init]; } @@ -59,6 +61,13 @@ enum TableSection { return self; } +- (void)dealloc { + [callCellData removeAllObjects]; + [callCellData dealloc]; + [super dealloc]; +} + +#pragma mark - ViewController Functions - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; @@ -77,6 +86,9 @@ enum TableSection { } } + +#pragma mark - Static Functions + + (bool)isInConference:(LinphoneCall*) call { if (!call) return false; @@ -117,145 +129,7 @@ enum TableSection { } -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - if(section == CallSection) { - return [[UIView alloc] initWithFrame:CGRectZero]; - } else if(section == ConferenceSection) { - LinphoneCore* lc = [LinphoneManager getLc]; - if(linphone_core_get_conference_size(lc) > 0){ - UIConferenceHeader *headerController = [[UIConferenceHeader alloc] init]; - [headerController update]; - UIView *headerView = [headerController view]; - [headerController release]; - return headerView; - } else { - return [[UIView alloc] initWithFrame:CGRectZero]; - } - } - return [[UIView alloc] initWithFrame:CGRectZero]; -} - -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - return [[UIView alloc] initWithFrame:CGRectZero]; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - LinphoneCore* lc = [LinphoneManager getLc]; - if(section == CallSection) { - return 0.000001f; // Hack UITableView = 0 - } else if(section == ConferenceSection) { - if(linphone_core_get_conference_size(lc) > 0) { - return [UIConferenceHeader getHeight]; - } - } - return 0.000001f; // Hack UITableView = 0 -} - -- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { - LinphoneCore* lc = [LinphoneManager getLc]; - if(section == CallSection) { - return 0.000000f; // Hack UITableView = 0 - } else if(section == ConferenceSection) { - if(linphone_core_get_conference_size(lc) > 0) { - return 20; - } - } - return 0.000001f; // Hack UITableView = 0 -} - -- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"]; - if (cell == nil) { - cell = [[UICallCell alloc] initWithIdentifier:@"UICallCell"]; - } - - bool inConference = indexPath.section == ConferenceSection; - - LinphoneCore* lc = [LinphoneManager getLc]; - LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; - [cell setData:[self addCallData:call]]; - [cell update]; - - if ([indexPath section] == CallSection && [indexPath row] == 0 && linphone_core_get_conference_size(lc) == 0) { - [cell firstCell]; - } else { - [cell otherCell]; - } - - if (linphone_core_get_calls_nb(lc) > 1 || linphone_core_get_conference_size(lc) > 0) { - tableView.scrollEnabled = TRUE; - } else { - tableView.scrollEnabled = FALSE; - } - return cell; -} - -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - int count = 0; - - LinphoneCore* lc = [LinphoneManager getLc]; - - if(section == CallSection) { - count = [InCallTableViewController callCount:lc]; - } else { - count = linphone_core_get_conference_size(lc); - if(linphone_core_is_in_conference(lc)) { - count--; - } - } - return count; -} - -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 2; -} - -- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section -{ - return @""; -} - -- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section -{ - return @""; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath -{ - bool inConference = indexPath.section == ConferenceSection; - LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; - UICallCellData* data = [callCellData objectForKey:[NSValue valueWithPointer:call]]; - if(data != nil &&data->minimize) - return [UICallCell getMinimizedHeight]; - return [UICallCell getMaximizedHeight]; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath -{ - [tableView deselectRowAtIndexPath:indexPath animated:NO]; - - LinphoneCore* lc = [LinphoneManager getLc]; - - bool inConference = indexPath.section == ConferenceSection; - - LinphoneCall* selectedCall = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; - - if (inConference) { - if (linphone_core_is_in_conference(lc)) - return; - LinphoneCall* current = linphone_core_get_current_call(lc); - if (current) - linphone_core_pause_call(lc, current); - linphone_core_enter_conference([LinphoneManager getLc]); - } else if (selectedCall) { - if (linphone_core_is_in_conference(lc)) { - linphone_core_leave_conference(lc); - } - if(!linphone_core_sound_resources_locked(lc)) { - linphone_core_resume_call([LinphoneManager getLc], selectedCall); - } - } -} +#pragma mark - - (void)removeCallData:(LinphoneCall*) call { // Remove data associated with the call @@ -303,12 +177,6 @@ enum TableSection { } } -- (void)dealloc { - [callCellData removeAllObjects]; - [callCellData dealloc]; - [super dealloc]; -} - - (void)minimizeAll { for(id key in callCellData) { UICallCellData *data = [callCellData objectForKey:key]; @@ -325,5 +193,124 @@ enum TableSection { [[self tableView] reloadData]; } +#pragma mark - UITableViewDataSource Functions + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if(section == CallSection) { + return [[UIView alloc] initWithFrame:CGRectZero]; + } else if(section == ConferenceSection) { + LinphoneCore* lc = [LinphoneManager getLc]; + if(linphone_core_get_conference_size(lc) > 0){ + UIConferenceHeader *headerController = [[UIConferenceHeader alloc] init]; + [headerController update]; + UIView *headerView = [headerController view]; + [headerController release]; + return headerView; + } else { + return [[UIView alloc] initWithFrame:CGRectZero]; + } + } + return [[UIView alloc] initWithFrame:CGRectZero]; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + return [[UIView alloc] initWithFrame:CGRectZero]; +} + +- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"]; + if (cell == nil) { + cell = [[UICallCell alloc] initWithIdentifier:@"UICallCell"]; + } + + bool inConference = indexPath.section == ConferenceSection; + + LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; + [cell setData:[self addCallData:call]]; + + // Update cell + if ([indexPath section] == CallSection && [indexPath row] == 0 && linphone_core_get_conference_size(lc) == 0) { + [cell setFirstCell:true]; + } else { + [cell setFirstCell:false]; + } + [cell setConferenceCall:inConference]; + [cell update]; + + if (linphone_core_get_calls_nb(lc) > 1 || linphone_core_get_conference_size(lc) > 0) { + tableView.scrollEnabled = true; + } else { + tableView.scrollEnabled = false; + } + return cell; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + int count = 0; + + LinphoneCore* lc = [LinphoneManager getLc]; + + if(section == CallSection) { + count = [InCallTableViewController callCount:lc]; + } else { + count = linphone_core_get_conference_size(lc); + if(linphone_core_is_in_conference(lc)) { + count--; + } + } + return count; +} + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 2; +} + +- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section +{ + return @""; +} + +- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section +{ + return @""; +} + + +#pragma mark - UITableViewDelegate Functions + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + LinphoneCore* lc = [LinphoneManager getLc]; + if(section == CallSection) { + return 0.000001f; // Hack UITableView = 0 + } else if(section == ConferenceSection) { + if(linphone_core_get_conference_size(lc) > 0) { + return [UIConferenceHeader getHeight]; + } + } + return 0.000001f; // Hack UITableView = 0 +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + LinphoneCore* lc = [LinphoneManager getLc]; + if(section == CallSection) { + return 0.000001f; // Hack UITableView = 0 + } else if(section == ConferenceSection) { + if(linphone_core_get_conference_size(lc) > 0) { + return 20; + } + } + return 0.000001f; // Hack UITableView = 0 +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath +{ + bool inConference = indexPath.section == ConferenceSection; + LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; + UICallCellData* data = [callCellData objectForKey:[NSValue valueWithPointer:call]]; + if(data != nil &&data->minimize) + return [UICallCell getMinimizedHeight]; + return [UICallCell getMaximizedHeight]; +} @end diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 11a16c8f5..01b0699fc 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -48,66 +48,110 @@ const NSInteger SECURE_BUTTON_TAG=5; @synthesize testVideoView; #endif + +#pragma mark - Lifecycle Functions + - (id)init { return [super initWithNibName:@"InCallViewController" bundle:[NSBundle mainBundle]]; } -//TODO -/* -- (void)orientationChanged: (NSNotification*) notif { - int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); - UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; - int newRotation = 0; - switch (orientation) { - case UIInterfaceOrientationLandscapeRight: - newRotation = 270; - break; - case UIInterfaceOrientationLandscapeLeft: - newRotation = 90; - break; - default: - newRotation = 0; +- (void)dealloc { + [callTableController release]; + [callTableView release]; + + [videoGroup release]; + [videoView release]; + [videoPreview release]; +#ifdef TEST_VIDEO_VIEW_CHANGE + [testVideoView release]; +#endif + [videoCameraSwitch release]; + + [videoWaitingForFirstImage release]; + + [videoZoomHandler release]; + + [super dealloc]; +} + + +#pragma mark - ViewController Functions + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + + [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; + UIDevice *device = [UIDevice currentDevice]; + device.proximityMonitoringEnabled = YES; + + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewDidAppear:NO]; + } +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if (visibleActionSheet != nil) { + [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:NO]; } - if (oldLinphoneOrientation != newRotation) { - linphone_core_set_device_rotation([LinphoneManager getLc], newRotation); - linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)videoView); - - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - if (call && linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { - //Orientation has changed, must call update call - linphone_core_update_call([LinphoneManager getLc], call, NULL); - - - // animate button images rotation -#define degreesToRadians(x) (M_PI * x / 180.0) - CGAffineTransform transform = CGAffineTransformIdentity; - switch (orientation) { - case UIInterfaceOrientationLandscapeRight: - transform = CGAffineTransformMakeRotation(degreesToRadians(90)); - break; - case UIInterfaceOrientationLandscapeLeft: - transform = CGAffineTransformMakeRotation(degreesToRadians(-90)); - break; - default: - transform = CGAffineTransformIdentity; - break; - } - - [UIView beginAnimations:nil context:NULL]; - [UIView setAnimationDuration:0.2f]; - //TODO - //endCtrl.imageView.transform = transform; - //mute.imageView.transform = transform; - //speaker.imageView.transform = transform; - //pause.imageView.transform = transform; - //contacts.imageView.transform = transform; - //addCall.imageView.transform = transform; - //addVideo.imageView.transform = transform; - //dialer.imageView.transform = transform; - [UIView commitAnimations]; - } - } -}*/ + if (hideControlsTimer != nil) { + [hideControlsTimer invalidate]; + hideControlsTimer = nil; + } + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewWillDisappear:NO]; + } +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewWillAppear:NO]; + } +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + + [[UIApplication sharedApplication] setIdleTimerDisabled:false]; + UIDevice *device = [UIDevice currentDevice]; + device.proximityMonitoringEnabled = NO; + + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewDidDisappear:NO]; + } +} + +- (void)viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + // Set windows (warn memory leaks) + linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)videoView); + linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)videoPreview); + + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; + + + UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)]; + [singleFingerTap setNumberOfTapsRequired:1]; + [singleFingerTap setCancelsTouchesInView: FALSE]; + [[[UIApplication sharedApplication].delegate window] addGestureRecognizer:singleFingerTap]; + [singleFingerTap release]; + + videoZoomHandler = [[VideoZoomHandler alloc] init]; + [videoZoomHandler setup:videoGroup]; + videoGroup.alpha = 0; + + [videoCameraSwitch setPreview:videoPreview]; +} + + +#pragma mark - - (void)showControls:(id)sender { if (hideControlsTimer) { @@ -141,7 +185,7 @@ const NSInteger SECURE_BUTTON_TAG=5; if([[LinphoneManager instance] currentView] == PhoneView_InCall && videoShown) [[LinphoneManager instance] showTabBar: false]; - + if (hideControlsTimer) { [hideControlsTimer invalidate]; hideControlsTimer = nil; @@ -162,9 +206,10 @@ const NSInteger SECURE_BUTTON_TAG=5; #endif - (void)enableVideoDisplay:(BOOL)animation { + if(videoShown) + return; + videoShown = true; - //TODO - //[self orientationChanged:nil]; [videoZoomHandler resetZoom]; @@ -189,7 +234,7 @@ const NSInteger SECURE_BUTTON_TAG=5; #ifdef TEST_VIDEO_VIEW_CHANGE [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(_debugChangeVideoView) userInfo:nil repeats:YES]; #endif - // [self batteryLevelChanged:nil]; + // [self batteryLevelChanged:nil]; videoWaitingForFirstImage.hidden = NO; [videoWaitingForFirstImage startAnimating]; @@ -201,17 +246,20 @@ const NSInteger SECURE_BUTTON_TAG=5; } - (void)disableVideoDisplay:(BOOL)animation { + if(!videoShown) + return; + videoShown = false; if(animation) { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; } - + [videoGroup setAlpha:0.0]; [[LinphoneManager instance] showTabBar: true]; [callTableView setAlpha:1.0]; [videoCameraSwitch setAlpha:0.0]; - + if(animation) { [UIView commitAnimations]; } @@ -224,36 +272,6 @@ const NSInteger SECURE_BUTTON_TAG=5; [[LinphoneManager instance] fullScreen:false]; } -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void)viewDidLoad { - [super viewDidLoad]; - - // Set windows (warn memory leaks) - linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)videoView); - linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)videoPreview); - - // Set observer - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; - - - UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)]; - [singleFingerTap setNumberOfTapsRequired:1]; - [singleFingerTap setCancelsTouchesInView: FALSE]; - [[[UIApplication sharedApplication].delegate window] addGestureRecognizer:singleFingerTap]; - [singleFingerTap release]; - - videoZoomHandler = [[VideoZoomHandler alloc] init]; - [videoZoomHandler setup:videoGroup]; - videoGroup.alpha = 0; - - [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; - //[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) name:UIDeviceBatteryLevelDidChangeNotification object:nil]; - - - [videoCameraSwitch setPreview:videoPreview]; -} - - (void)transferPressed { /* allow only if call is active */ if (!linphone_core_get_current_call([LinphoneManager getLc])) @@ -314,67 +332,17 @@ const NSInteger SECURE_BUTTON_TAG=5; } } -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - - [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; - - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [callTableController viewDidAppear:NO]; - } -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - if (visibleActionSheet != nil) { - [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:NO]; - } - if (hideControlsTimer != nil) { - [hideControlsTimer invalidate]; - hideControlsTimer = nil; - } - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [callTableController viewWillDisappear:NO]; - } -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [callTableController viewWillAppear:NO]; - } -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - - if (!videoShown) [[UIApplication sharedApplication] setIdleTimerDisabled:false]; - - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [callTableController viewDidDisappear:NO]; - } -} - -- (void)viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -- (void)displayVideoCall:(LinphoneCall*) call { - UIDevice *device = [UIDevice currentDevice]; - device.proximityMonitoringEnabled = YES; - - if(!videoShown) - [self enableVideoDisplay: TRUE]; +- (void)displayVideoCall:(LinphoneCall*) call { + [self enableVideoDisplay: TRUE]; } - (void)displayTableCall:(LinphoneCall*) call { - UIDevice *device = [UIDevice currentDevice]; - device.proximityMonitoringEnabled = YES; - - if(videoShown) - [self disableVideoDisplay: TRUE]; + [self disableVideoDisplay: TRUE]; } + +#pragma mark - Spinner Functions + - (void)hideSpinnerIndicator: (LinphoneCall*)call { videoWaitingForFirstImage.hidden = TRUE; } @@ -384,6 +352,8 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [thiz hideSpinnerIndicator:call]; } +#pragma mark - Event Functions + - (void)callUpdate: (NSNotification*) notif { LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; @@ -460,6 +430,8 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { } +#pragma mark - ActionSheet Functions + - (void)dismissActionSheet: (id)o { if (visibleActionSheet != nil) { [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE]; @@ -500,22 +472,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [visibleActionSheet release]; } -- (void)dealloc { - [videoGroup release]; - [callTableView release]; - [videoView release]; - [videoPreview release]; -#ifdef TEST_VIDEO_VIEW_CHANGE - [testVideoView release]; -#endif - [videoCameraSwitch release]; - [videoWaitingForFirstImage release]; - - [[NSNotificationCenter defaultCenter] removeObserver:self]; - - [super dealloc]; -} - - (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas { LinphoneCall* call = (LinphoneCall*)datas; // maybe we could verify call validity diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 109a2577d..47965e2c3 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -25,6 +25,9 @@ @synthesize addressLabel; @synthesize avatarImage; + +#pragma mark - Lifecycle Functions + - (id)init { self = [super initWithNibName:@"IncomingCallViewController" bundle:[NSBundle mainBundle]]; if(self) { @@ -42,6 +45,9 @@ [super dealloc]; } + +#pragma mark - Event Functions + - (void)callUpdate:(NSNotification*)notif { LinphoneCall *acall = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState astate = [[notif.userInfo objectForKey: @"state"] intValue]; @@ -50,15 +56,8 @@ } } -- (IBAction)onAcceptClick:(id)event { - linphone_core_accept_call([LinphoneManager getLc], call); - [self dismiss: IncomingCall_Accepted]; -} -- (IBAction)onDeclineClick:(id)event { - linphone_core_terminate_call([LinphoneManager getLc], call); - [self dismiss: IncomingCall_Decline]; -} +#pragma mark - - (void)update:(LinphoneCall*)acall { [self view]; //Force view load @@ -76,4 +75,17 @@ return call; } + +#pragma mark - Action Functions + +- (IBAction)onAcceptClick:(id)event { + linphone_core_accept_call([LinphoneManager getLc], call); + [self dismiss: IncomingCall_Accepted]; +} + +- (IBAction)onDeclineClick:(id)event { + linphone_core_terminate_call([LinphoneManager getLc], call); + [self dismiss: IncomingCall_Decline]; +} + @end diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 079869ac6..2fa9e57c8 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -153,13 +153,15 @@ int __aeabi_idiv(int a, int b) { } - (void)setupGSMInteraction { - callCenter = [[CTCallCenter alloc] init]; - callCenter.callEventHandler = ^(CTCall* call) { - // post on main thread - [self performSelectorOnMainThread:@selector(handleGSMCallInteration:) + if (callCenter == nil) { + callCenter = [[CTCallCenter alloc] init]; + callCenter.callEventHandler = ^(CTCall* call) { + // post on main thread + [self performSelectorOnMainThread:@selector(handleGSMCallInteration:) withObject:callCenter waitUntilDone:YES]; - }; + }; + } } - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index a7c527252..7818511b1 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -89,9 +89,6 @@ typedef struct _LinphoneCallAppData { + (LinphoneCore*) getLc; + (BOOL)isLcReady; + (BOOL)runningOnIpad; -+ (void)set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason; -+ (void)set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason; -+ (void)logUIElementPressed:(const char*) name; - (void)registerLogView:(id) view; + (NSString *)getPreferenceForCodec: (const char*) name withRate: (int) rate; @@ -117,6 +114,7 @@ typedef struct _LinphoneCallAppData { - (PhoneView) currentView; - (void)enableSpeaker:(BOOL)enable; +- (BOOL)isSpeakerEnabled; @property (nonatomic, retain) id settingsStore; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index ee51828a7..cbff80a55 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -765,6 +765,19 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } +- (BOOL)isSpeakerEnabled { + CFStringRef lNewRoute = CFSTR("Unknown"); + UInt32 lNewRouteSize = sizeof(lNewRoute); + OSStatus lStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &lNewRouteSize, &lNewRoute); + if (!lStatus && lNewRouteSize > 0) { + NSString *route = (NSString *) lNewRoute; + ms_message("Current audio route is [%s]", [route cStringUsingEncoding:[NSString defaultCStringEncoding]]); + return [route isEqualToString: @"Speaker"] || [route isEqualToString: @"SpeakerAndMicrophone"]; + } else { + return false; + } +} + + (BOOL)runningOnIpad { #ifdef UI_USER_INTERFACE_IDIOM return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); @@ -772,22 +785,4 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach return NO; } -+ (void)set:(UIButton*)view enabled: (BOOL) enabled withName:(const char*)name andReason:(const char*) reason{ - if (view.enabled != enabled) { - ms_message("UI - '%s' is now '%s' ('%s')", name, enabled ? "ENABLED" : "DISABLED", reason); - [view setEnabled:enabled]; - } -} - -+ (void)set:(UIView*)view hidden: (BOOL) hidden withName:(const char*)name andReason:(const char*) reason{ - if (view.hidden != hidden) { - ms_message("UI - '%s' is now '%s' ('%s')", name, hidden ? "HIDDEN" : "SHOWN", reason); - [view setHidden:hidden]; - } -} - -+ (void)logUIElementPressed:(const char*) name { - ms_message("UI - '%s' pressed", name); -} - @end diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index c63769ada..4ce0132b2 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -50,10 +50,29 @@ @synthesize zeroButton; @synthesize hashButton; + +#pragma mark - Lifecycle Functions + - (id)init { return [super initWithNibName:@"UICallBar" bundle:[NSBundle mainBundle]]; } +- (void)dealloc { + [pauseButton release]; + [conferenceButton release]; + [videoButton release]; + [microButton release]; + [speakerButton release]; + [optionsButton release]; + + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [super dealloc]; +} + + +#pragma mark - ViewController Functions + - (void)viewDidLoad { [pauseButton setType:UIPauseButtonType_CurrentCall call:nil]; @@ -71,12 +90,19 @@ [hashButton initWithNumber:'#' addressField:nil dtmf:true]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; + + // Set selected+over background: IB lack ! + [videoButton setBackgroundImage:[UIImage imageNamed:@"video-ON-disabled.png"] + forState:(UIControlStateDisabled | UIControlStateSelected)]; } - (void)viewDidUnload { [[NSNotificationCenter defaultCenter] removeObserver:self]; } + +#pragma mark - Event Functions + - (void)callUpdate: (NSNotification*) notif { //LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; @@ -122,19 +148,54 @@ } } -- (void)dealloc { - [pauseButton release]; - [conferenceButton release]; - [videoButton release]; - [microButton release]; - [speakerButton release]; - [optionsButton release]; - - [[NSNotificationCenter defaultCenter] removeObserver:self]; - - [super dealloc]; + +#pragma mark - + +- (void)showPad{ + if([padView isHidden]) { + CGRect frame = [padView frame]; + int original_y = frame.origin.y; + frame.origin.y = [[self view] frame].size.height; + [padView setFrame:frame]; + [padView setHidden:FALSE]; + CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: + [[CPAnimationStep for:0.5 animate:^{ + CGRect frame = [padView frame]; + frame.origin.y = original_y; + [padView setFrame:frame]; + }] autorelease], + nil + ] autorelease]; + [move run]; + } } +- (void)hidePad{ + if(![padView isHidden]) { + CGRect frame = [padView frame]; + int original_y = frame.origin.y; + + CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: + [[CPAnimationStep for:0.5 animate:^{ + CGRect frame = [padView frame]; + frame.origin.y = [[self view] frame].size.height; + [padView setFrame:frame]; + }] autorelease], + [[CPAnimationStep after:0.0 animate:^{ + CGRect frame = [padView frame]; + frame.origin.y = original_y; + [padView setHidden:TRUE]; + [padView setFrame:frame]; + }] autorelease], + nil + ] autorelease]; + [move run]; + } +} + + +#pragma mark - Action Functions + - (IBAction)onPadClick:(id)sender { if([padView isHidden]) { [self showPad]; @@ -143,46 +204,6 @@ } } -- (void)showPad{ - CGRect frame = [padView frame]; - int original_y = frame.origin.y; - frame.origin.y = [[self view] frame].size.height; - [padView setFrame:frame]; - [padView setHidden:FALSE]; - CPAnimationSequence* move = [CPAnimationSequence sequenceWithSteps: - [CPAnimationStep for:0.5 animate:^{ - CGRect frame = [padView frame]; - frame.origin.y = original_y; - [padView setFrame:frame]; - }], - nil - ]; - [move run]; - [move release]; -} - -- (void)hidePad{ - CGRect frame = [padView frame]; - int original_y = frame.origin.y; - - CPAnimationSequence* move = [CPAnimationSequence sequenceWithSteps: - [CPAnimationStep for:0.5 animate:^{ - CGRect frame = [padView frame]; - frame.origin.y = [[self view] frame].size.height; - [padView setFrame:frame]; - }], - [CPAnimationStep after:0.0 animate:^{ - CGRect frame = [padView frame]; - frame.origin.y = original_y; - [padView setHidden:TRUE]; - [padView setFrame:frame]; - }], - nil - ]; - [move run]; - [move release]; -} - - (IBAction)onOptionsClick:(id)sender { // Go to dialer view NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 529c86679..f2aea4760 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -11,9 +11,10 @@ 1181 - IBProxyObject - IBUIView IBUIButton + IBUIActivityIndicatorView + IBUIView + IBProxyObject com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -41,6 +42,7 @@ {{0, 335}, {320, 125}} + _NS:9 1 @@ -424,6 +426,7 @@ {{20, 57}, {281, 260}} + _NS:9 3 @@ -444,7 +447,7 @@ {80, 67} - + _NS:9 NO @@ -478,6 +481,18 @@ + + + -2147483356 + {{20, 18}, {37, 37}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 292 @@ -903,6 +918,14 @@ 20 + + + waitView + + + + 60 + onConferenceClick: @@ -962,6 +985,7 @@ + buttons @@ -1106,6 +1130,12 @@ 6 + + 59 + + + waitView + @@ -1120,7 +1150,7 @@ UIVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1163,6 +1193,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIHangUpButton @@ -1179,7 +1210,7 @@ - 58 + 60
@@ -1381,6 +1412,17 @@ UIVideoButton UIToggleButton + + waitView + UIActivityIndicatorView + + + waitView + + waitView + UIActivityIndicatorView + + IBProjectSource ./Classes/UIVideoButton.h diff --git a/Classes/LinphoneUI/UICallButton.m b/Classes/LinphoneUI/UICallButton.m index 850ad2df5..56d34fd18 100644 --- a/Classes/LinphoneUI/UICallButton.m +++ b/Classes/LinphoneUI/UICallButton.m @@ -25,6 +25,23 @@ static BOOL transferMode = NO; +#pragma mark - Lifecycle Functions + +-(void) initWithAddress:(UITextField*) address{ + mAddress=[address retain]; + transferMode = NO; + [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; +} + +- (void)dealloc { + [super dealloc]; + [mAddress release]; + +} + + +#pragma mark - Statics Functions + +(void) enableTransforMode:(BOOL) enable { transferMode = enable; } @@ -33,6 +50,9 @@ static BOOL transferMode = NO; return transferMode; } + +#pragma mark - + -(void) touchUp:(id) sender { if (!linphone_core_is_network_reachabled([LinphoneManager getLc])) { UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Network Error",nil) @@ -109,25 +129,4 @@ static BOOL transferMode = NO; } - -/* - // Only override drawRect: if you perform custom drawing. - // An empty implementation adversely affects performance during animation. - - (void)drawRect:(CGRect)rect { - // Drawing code. - } - */ --(void) initWithAddress:(UITextField*) address{ - mAddress=[address retain]; - transferMode = NO; - [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; -} - -- (void)dealloc { - [super dealloc]; - [mAddress release]; - -} - - @end diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h index 05a7eccc0..ae278cff5 100644 --- a/Classes/LinphoneUI/UICallCell.h +++ b/Classes/LinphoneUI/UICallCell.h @@ -34,6 +34,9 @@ @interface UICallCell : UITableViewCell { @private + BOOL firstCell; + BOOL conferenceCall; + UIView *firstBackground; UIView *otherBackground; @@ -41,6 +44,7 @@ UILabel *stateLabel; UIImageView *stateImage; UIPauseButton *pauseButton; + UIButton *removeButton; UIImageView *avatarImage; UIView *headerView; @@ -58,18 +62,21 @@ @property (nonatomic, retain) IBOutlet UILabel* stateLabel; @property (nonatomic, retain) IBOutlet UIImageView* stateImage; @property (nonatomic, retain) IBOutlet UIImageView* avatarImage; +@property (nonatomic, retain) IBOutlet UIButton *removeButton; @property (nonatomic, retain) IBOutlet UIPauseButton *pauseButton; @property (nonatomic, retain) IBOutlet UIView* headerView; @property (nonatomic, retain) IBOutlet UIView* avatarView; -- (void)firstCell; -- (void)otherCell; +@property (assign) BOOL firstCell; +@property (assign) BOOL conferenceCall; + - (void)update; - (id)initWithIdentifier:(NSString*)identifier; - (IBAction)doHeaderClick:(id)sender; +- (IBAction)doRemoveClick:(id)sender; + (int)getMaximizedHeight; + (int)getMinimizedHeight; diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index cfdd143c7..200cf0066 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -19,6 +19,8 @@ #import "UICallCell.h" +#import "LinphoneManager.h" + @implementation UICallCellData - (id)init:(LinphoneCall*) acall { @@ -43,10 +45,17 @@ @synthesize stateImage; @synthesize avatarImage; @synthesize pauseButton; +@synthesize removeButton; @synthesize headerView; @synthesize avatarView; +@synthesize firstCell; +@synthesize conferenceCall; + + +#pragma mark - Lifecycle Functions + - (id)initWithIdentifier:(NSString*)identifier { if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UICallCell" @@ -63,16 +72,31 @@ return self; } -- (void)firstCell{ - [firstBackground setHidden:false]; - [otherBackground setHidden:true]; +- (void)dealloc { + [firstBackground release]; + [otherBackground release]; + [addressLabel release]; + [stateLabel release]; + [stateImage release]; + [avatarImage release]; + [headerView release]; + [super dealloc]; } -- (void)otherCell{ - [firstBackground setHidden:true]; - [otherBackground setHidden:false]; + +#pragma mark - Static cell sizes + ++ (int)getMaximizedHeight { + return 280; } ++ (int)getMinimizedHeight { + return 54; +} + + +#pragma mark - + - (void)update:(UICallCellData*) adata { self->data = adata; [self update]; @@ -109,18 +133,25 @@ LinphoneCallState state = linphone_call_get_state(call); - if(state == LinphoneCallOutgoingRinging) { - [stateImage setImage:[UIImage imageNamed:@"ring-champ-numero-actif"]]; - [stateImage setHidden:false]; - [pauseButton setHidden:true]; - } else if(state == LinphoneCallOutgoingInit || state == LinphoneCallOutgoingProgress){ - [stateImage setImage:[UIImage imageNamed:@"outgoing-champ-numero-actif"]]; - [stateImage setHidden:false]; - [pauseButton setHidden:true]; + if(!conferenceCall) { + if(state == LinphoneCallOutgoingRinging) { + [stateImage setImage:[UIImage imageNamed:@"ring-champ-numero-actif"]]; + [stateImage setHidden:false]; + [pauseButton setHidden:true]; + } else if(state == LinphoneCallOutgoingInit || state == LinphoneCallOutgoingProgress){ + [stateImage setImage:[UIImage imageNamed:@"outgoing-champ-numero-actif"]]; + [stateImage setHidden:false]; + [pauseButton setHidden:true]; + } else { + [stateImage setHidden:true]; + [pauseButton setHidden:false]; + [pauseButton update]; + } + [removeButton setHidden:true]; } else { [stateImage setHidden:true]; - [pauseButton setHidden:false]; - [pauseButton update]; + [pauseButton setHidden:true]; + [removeButton setHidden:false]; } NSMutableString* msDuration = [[NSMutableString alloc] init]; @@ -142,14 +173,9 @@ } } [pauseButton setType:UIPauseButtonType_Call call:call]; -} - -- (IBAction)doHeaderClick:(id)sender { - NSLog(@"Toggle UICallCell"); - if(data) { - data->minimize = !data->minimize; - [self selfUpdate]; - } + + [firstBackground setHidden:!firstCell]; + [otherBackground setHidden:firstCell]; } - (void)selfUpdate { @@ -166,24 +192,20 @@ }*/ } -- (void)dealloc { - [firstBackground release]; - [otherBackground release]; - [addressLabel release]; - [stateLabel release]; - [stateImage release]; - [avatarImage release]; - [headerView release]; - [super dealloc]; + +#pragma mark - Action Functions + +- (IBAction)doHeaderClick:(id)sender { + if(data) { + data->minimize = !data->minimize; + [self selfUpdate]; + } } -+ (int)getMaximizedHeight { - return 280; +- (IBAction)doRemoveClick:(id)sender { + if(data != nil && data->call != NULL) { + linphone_core_remove_from_conference([LinphoneManager getLc], data->call); + } } -+ (int)getMinimizedHeight { - return 54; -} - - @end diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib index 265869dbc..1c1d7f2f6 100644 --- a/Classes/LinphoneUI/UICallCell.xib +++ b/Classes/LinphoneUI/UICallCell.xib @@ -153,7 +153,7 @@ {320, 63} - + _NS:9 IBCocoaTouchFramework @@ -4597,9 +4597,9 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE NO IBCocoaTouchFramework - + - 292 + -2147483356 {{216, 6}, {41, 41}} @@ -4616,6 +4616,36 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 8 8 + + NSImage + supprimer-participant-conf-over.png + + + NSImage + supprimer-participant-conf-actif.png + + + + + + + -2147483356 + {{216, 6}, {41, 41}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + 8 + 8 + 8 + 8 + NSImage play-champ-numero-over.png @@ -4666,7 +4696,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {{0, 5}, {200, 40}} - _NS:9 NO IBCocoaTouchFramework @@ -4793,6 +4822,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 48 + + + removeButton + + + + 50 + doHeaderClick: @@ -4802,6 +4839,15 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 39 + + + doRemoveClick: + + + 7 + + 51 + @@ -4859,6 +4905,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + headerView @@ -4893,12 +4940,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE stateLabel - - 38 - - - toggleButton - 30 @@ -4922,6 +4963,18 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE pauseButton + + 49 + + + removeButton + + + 38 + + + toggleButton + @@ -4947,30 +5000,36 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIPauseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + + UIPauseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + - 48 + 51 UICallCell UITableViewCell - - doHeaderClick: - id - - - doHeaderClick: - + + id + id + + + doHeaderClick: id - + + doRemoveClick: + id + + UILabel UIImageView @@ -4979,6 +5038,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE UIView UIView UIPauseButton + UIButton UIImageView UILabel @@ -5011,6 +5071,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE pauseButton UIPauseButton + + removeButton + UIButton + stateImage UIImageView @@ -5059,6 +5123,8 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {43, 50} {43, 46} {43, 46} + {43, 43} + {43, 43} 1181 diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index ae8693e42..6d0a7737d 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -25,6 +25,9 @@ @synthesize displayNameLabel; @synthesize chatContentLabel; + +#pragma mark - Lifecycle Functions + - (id)init { if ((self = [super init]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIChatCell" @@ -38,10 +41,15 @@ return self; } -- (IBAction)onDetails: (id) event { +- (void)dealloc { + [displayNameLabel release]; + [chatContentLabel release]; + [super dealloc]; } +#pragma mark - + - (void)update{ [avatarView setImage:[UIImage imageNamed:@"avatar-small.png"]]; @@ -69,11 +77,11 @@ [chatContentLabel setFrame: lastNameFrame]; } -- (void)dealloc { - [displayNameLabel release]; - [chatContentLabel release]; + +#pragma mark - Action Functions + +- (IBAction)onDetails: (id) event { - [super dealloc]; } @end diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 06286378b..76efd4cde 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -56,6 +56,9 @@ @synthesize viewTransition; + +#pragma mark - Lifecycle Functions + - (void)initUICompositeViewController { self->viewControllerCache = [[NSMutableDictionary alloc] init]; } @@ -93,6 +96,8 @@ [super dealloc]; } +#pragma mark - + + (void)addSubView:(UIViewController*)controller view:(UIView*)view { if(controller != nil) { if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { diff --git a/Classes/LinphoneUI/UIConferenceHeader.m b/Classes/LinphoneUI/UIConferenceHeader.m index 240453ff8..06354bf87 100644 --- a/Classes/LinphoneUI/UIConferenceHeader.m +++ b/Classes/LinphoneUI/UIConferenceHeader.m @@ -26,10 +26,22 @@ @synthesize stateImage; @synthesize pauseButton; + +#pragma mark - Lifecycle Functions + - (id)init { return [super initWithNibName:@"UIConferenceHeader" bundle:[NSBundle mainBundle]]; } +- (void)dealloc { + [stateImage release]; + [pauseButton release]; + [super dealloc]; +} + + +#pragma mark - ViewController Functions + - (void)viewDidLoad { [super viewDidLoad]; // Set selected+over background: IB lack ! @@ -38,10 +50,16 @@ [pauseButton setType:UIPauseButtonType_Conference call:nil]; } + +#pragma mark - Static size Functions + + (int)getHeight { return 50; } + +#pragma mark - + - (void)update { [self view]; [stateImage setHidden:true]; diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index a0b292195..c5ebbf8dd 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -24,6 +24,9 @@ @synthesize firstNameLabel; @synthesize lastNameLabel; + +#pragma mark - Lifecycle Functions + - (id)initWithIdentifier:(NSString*)identifier { if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIContactCell" @@ -37,6 +40,16 @@ return self; } +- (void) dealloc { + [firstNameLabel release]; + [lastNameLabel release]; + + [super dealloc]; +} + + +#pragma mark - + - (void)touchUp:(id) sender { [self setHighlighted:true animated:true]; } @@ -93,11 +106,4 @@ [lastNameLabel setFrame: lastNameFrame]; } -- (void) dealloc { - [firstNameLabel release]; - [lastNameLabel release]; - - [super dealloc]; -} - @end diff --git a/Classes/LinphoneUI/UIDigitButton.m b/Classes/LinphoneUI/UIDigitButton.m index d0fd07868..7136b6cfc 100644 --- a/Classes/LinphoneUI/UIDigitButton.m +++ b/Classes/LinphoneUI/UIDigitButton.m @@ -25,31 +25,8 @@ @synthesize sendDtmfDuringCall; -- (void)touchDown:(id) sender { - if (mAddress && (!sendDtmfDuringCall || !linphone_core_in_call([LinphoneManager getLc]))) { - NSString* newAddress = [NSString stringWithFormat:@"%@%c",mAddress.text,mDigit]; - [mAddress setText:newAddress]; - linphone_core_play_dtmf([LinphoneManager getLc], mDigit, -1); - } else { - linphone_core_send_dtmf([LinphoneManager getLc], mDigit); - linphone_core_play_dtmf([LinphoneManager getLc], mDigit, 100); - } -} -- (void)touchUp:(id) sender { - linphone_core_stop_dtmf([LinphoneManager getLc]); -} - -- (void)onRepeatTouch { -} - -- (void)onLongTouch { - if (mDigit == '0') { - NSString* newAddress = [[mAddress.text substringToIndex: [mAddress.text length]-1] stringByAppendingString:@"+"]; - [mAddress setText:newAddress]; - [mAddress sendActionsForControlEvents:UIControlEventEditingChanged]; - } -} +#pragma mark - Lifecycle Functions - (void)initWithNumber:(char)digit { [self initWithNumber:digit addressField:nil dtmf:true]; @@ -69,4 +46,35 @@ } +#pragma mark - Actions Functions + +- (void)touchDown:(id) sender { + if (mAddress && (!sendDtmfDuringCall || !linphone_core_in_call([LinphoneManager getLc]))) { + NSString* newAddress = [NSString stringWithFormat:@"%@%c",mAddress.text,mDigit]; + [mAddress setText:newAddress]; + linphone_core_play_dtmf([LinphoneManager getLc], mDigit, -1); + } else { + linphone_core_send_dtmf([LinphoneManager getLc], mDigit); + linphone_core_play_dtmf([LinphoneManager getLc], mDigit, 100); + } +} + +- (void)touchUp:(id) sender { + linphone_core_stop_dtmf([LinphoneManager getLc]); +} + + +#pragma mark - UILongTouchButtonDelegate Functions + +- (void)onRepeatTouch { +} + +- (void)onLongTouch { + if (mDigit == '0') { + NSString* newAddress = [[mAddress.text substringToIndex: [mAddress.text length]-1] stringByAppendingString:@"+"]; + [mAddress setText:newAddress]; + [mAddress sendActionsForControlEvents:UIControlEventEditingChanged]; + } +} + @end diff --git a/Classes/LinphoneUI/UIDuration.h b/Classes/LinphoneUI/UIDuration.h deleted file mode 100644 index 9493d43cd..000000000 --- a/Classes/LinphoneUI/UIDuration.h +++ /dev/null @@ -1,33 +0,0 @@ -/* UIDuration.h - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - - - -#import - - -@interface UIDuration : UILabel { -@private - NSTimer *durationRefreasher; -} - --(void) start; --(void) stop; - -@end diff --git a/Classes/LinphoneUI/UIDuration.m b/Classes/LinphoneUI/UIDuration.m deleted file mode 100644 index 54351b929..000000000 --- a/Classes/LinphoneUI/UIDuration.m +++ /dev/null @@ -1,66 +0,0 @@ -/* UIDuration.m - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - - - -#import "UIDuration.h" -#import "LinphoneManager.h" - - -@implementation UIDuration - --(void)updateCallDuration { - int lDuration = linphone_core_get_current_call_duration([LinphoneManager getLc]); - if (lDuration < 60) { - [self setText:[NSString stringWithFormat: @"%02i s", lDuration]]; - } else { - [self setText:[NSString stringWithFormat: @"%02i:%02i", lDuration/60,lDuration - 60 *(lDuration/60)]]; - } -} - --(void) start { - [self setText:@"00 s"]; - durationRefreasher = [NSTimer scheduledTimerWithTimeInterval:1 - target:self - selector:@selector(updateCallDuration) - userInfo:nil - repeats:YES]; -} --(void) stop { - [durationRefreasher invalidate]; - durationRefreasher=nil; - -} - - -/* - // Only override drawRect: if you perform custom drawing. - // An empty implementation adversely affects performance during animation. - - (void)drawRect:(CGRect)rect { - // Drawing code. - } - */ - -- (void)dealloc { - [super dealloc]; - [durationRefreasher invalidate]; -} - - -@end diff --git a/Classes/LinphoneUI/UIEraseButton.m b/Classes/LinphoneUI/UIEraseButton.m index 9c44d10d9..5a4b58e22 100644 --- a/Classes/LinphoneUI/UIEraseButton.m +++ b/Classes/LinphoneUI/UIEraseButton.m @@ -22,16 +22,28 @@ @implementation UIEraseButton +#pragma mark - Lifecycle Functions + +-(void) initWithAddressField:(UITextField*) address { + mAddress = address; + [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; +} + +- (void)dealloc { + [super dealloc]; +} + + +#pragma mark - Action Functions + -(void) touchDown:(id) sender { if ([mAddress.text length] > 0) { [mAddress setText:[mAddress.text substringToIndex:[mAddress.text length]-1]]; } } --(void) initWithAddressField:(UITextField*) address { - mAddress = address; - [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; -} + +#pragma mark - UILongTouchButtonDelegate Functions - (void)onRepeatTouch { } @@ -40,9 +52,4 @@ [mAddress setText:@""]; } -- (void)dealloc { - [super dealloc]; -} - - @end diff --git a/Classes/LinphoneUI/UIHangUpButton.m b/Classes/LinphoneUI/UIHangUpButton.m index c7cb1ddab..ec71460d1 100644 --- a/Classes/LinphoneUI/UIHangUpButton.m +++ b/Classes/LinphoneUI/UIHangUpButton.m @@ -24,6 +24,9 @@ @implementation UIHangUpButton + +#pragma mark - Static Functions + + (bool)isInConference:(LinphoneCall*) call { if (!call) return false; @@ -43,24 +46,8 @@ return count; } --(void) touchUp:(id) sender { - if([LinphoneManager isLcReady]) { - LinphoneCore* lc = [LinphoneManager getLc]; - LinphoneCall* currentcall = linphone_core_get_current_call(lc); - if (linphone_core_is_in_conference(lc) || // In conference - (linphone_core_get_conference_size(lc) > 0 && [UIHangUpButton callCount:lc] == 0) // Only one conf - ) { - linphone_core_terminate_conference(lc); - } else if(currentcall != NULL) { // In a call - linphone_core_terminate_call(lc, currentcall); - } else { - const MSList* calls = linphone_core_get_calls(lc); - if (ms_list_size(calls) == 1) { // Only one call - linphone_core_terminate_call(lc,(LinphoneCall*)(calls->data)); - } - } - } -} + +#pragma mark - Lifecycle Functions - (void)initUIHangUpButton { [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; @@ -90,6 +77,13 @@ return self; } +- (void)dealloc { + [super dealloc]; +} + + +#pragma mark - + - (void)update { if([LinphoneManager isLcReady]) { LinphoneCore * lc = [LinphoneManager getLc]; @@ -105,17 +99,25 @@ [self setEnabled:false]; } -/* - // Only override drawRect: if you perform custom drawing. - // An empty implementation adversely affects performance during animation. - - (void)drawRect:(CGRect)rect { - // Drawing code. - } - */ +#pragma mark - Action Functions -- (void)dealloc { - [super dealloc]; +-(void) touchUp:(id) sender { + if([LinphoneManager isLcReady]) { + LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* currentcall = linphone_core_get_current_call(lc); + if (linphone_core_is_in_conference(lc) || // In conference + (linphone_core_get_conference_size(lc) > 0 && [UIHangUpButton callCount:lc] == 0) // Only one conf + ) { + linphone_core_terminate_conference(lc); + } else if(currentcall != NULL) { // In a call + linphone_core_terminate_call(lc, currentcall); + } else { + const MSList* calls = linphone_core_get_calls(lc); + if (ms_list_size(calls) == 1) { // Only one call + linphone_core_terminate_call(lc,(LinphoneCall*)(calls->data)); + } + } + } } - @end diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 81dafdde6..f9692c9e0 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -29,6 +29,8 @@ #define DETAILS_DISABLED +#pragma mark - Lifecycle Functions + - (id)initWithIdentifier:(NSString*)identifier { if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIHistoryCell" @@ -44,6 +46,18 @@ return self; } +- (void) dealloc { + [detailsButton release]; + [deleteButton release]; + [displayNameLabel release]; + [imageView release]; + + [super dealloc]; +} + + +#pragma mark - Action Functions + - (IBAction)onDetails:(id) event { if(callLog != NULL) { @@ -58,6 +72,9 @@ } } + +#pragma mark - + - (void)update:(LinphoneCallLog*) aCallLog { self->callLog = aCallLog; // Set up the cell... @@ -97,13 +114,4 @@ [deleteButton setHidden:true]; } -- (void) dealloc { - [detailsButton release]; - [deleteButton release]; - [displayNameLabel release]; - [imageView release]; - - [super dealloc]; -} - @end diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h deleted file mode 100644 index e195b8d5f..000000000 --- a/Classes/LinphoneUI/UILinphone.h +++ /dev/null @@ -1,29 +0,0 @@ -/* UILinphone.h - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "UICallButton.h" -#import "UIHangUpButton.h" -#import "UIDigitButton.h" -#import "UIToggleButton.h" -#import "UIMicroButton.h" -#import "UISpeakerButton.h" -#import "UIDuration.h" -#import "UIEraseButton.h" -#import "UICamSwitch.h" -#import "UIPauseResumeButton.h" diff --git a/Classes/LinphoneUI/UILongTouchButton.m b/Classes/LinphoneUI/UILongTouchButton.m index 616aa87c7..03088ce79 100644 --- a/Classes/LinphoneUI/UILongTouchButton.m +++ b/Classes/LinphoneUI/UILongTouchButton.m @@ -21,12 +21,39 @@ @implementation UILongTouchButton -- (id)init { + +#pragma mark - Lifecycle Functions + +- (id)initUILongTouchButton { [self addTarget:self action:@selector(___touchDown:) forControlEvents:UIControlEventTouchDown]; [self addTarget:self action:@selector(___touchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside]; return self; } +- (id)init { + self = [super init]; + if (self) { + [self initUILongTouchButton]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUILongTouchButton]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUILongTouchButton]; + } + return self; +} + - (void)___touchDown:(id) sender { [self performSelector:@selector(doLongTouch) withObject:nil afterDelay:0.5]; } @@ -47,22 +74,6 @@ [self performSelector:@selector(doRepeatTouch) withObject:nil afterDelay:0.1]; } -- (id)initWithFrame:(CGRect)frame { - self = [super initWithFrame:frame]; - if (self) { - [self init]; - } - return self; -} - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (self) { - [self init]; - } - return self; -} - - (void)onRepeatTouch { [NSException raise:NSInternalInconsistencyException format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index de9e36f8a..36150e13c 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -28,16 +28,38 @@ @synthesize settingsButton; @synthesize chatButton; + +#pragma mark - Lifecycle Functions + - (id)init { return [super initWithNibName:@"UIMainBar" bundle:[NSBundle mainBundle]]; } +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [super dealloc]; +} + + +#pragma mark - ViewController Functions + - (void)viewDidLoad { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receiveLinphoneMainViewChangeEvent:) name:@"LinphoneMainViewChange" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil]; [self update:[[LinphoneManager instance] currentView]]; } -- (void)receiveLinphoneMainViewChangeEvent: (NSNotification*) notif { +- (void)viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [historyButton release]; + [contactsButton release]; + [dialerButton release]; + [settingsButton release]; + [chatButton release]; +} + +#pragma mark - + +- (void)changeView: (NSNotification*) notif { NSNumber *viewNumber = [notif.userInfo objectForKey: @"view"]; if(viewNumber != nil) [self update:[viewNumber intValue]]; @@ -71,19 +93,8 @@ } } -- (void)viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [historyButton release]; - [contactsButton release]; - [dialerButton release]; - [settingsButton release]; - [chatButton release]; -} -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [super dealloc]; -} +#pragma mark - Action Functions - (IBAction)onHistoryClick: (id) sender { [[LinphoneManager instance] changeView:PhoneView_History]; diff --git a/Classes/LinphoneUI/UIPauseButton.m b/Classes/LinphoneUI/UIPauseButton.m index 36fe79341..fc53aa47e 100644 --- a/Classes/LinphoneUI/UIPauseButton.m +++ b/Classes/LinphoneUI/UIPauseButton.m @@ -25,6 +25,9 @@ @implementation UIPauseButton + +#pragma mark - Lifecycle Functions + - (void)initUIPauseButton { self->type = UIPauseButtonType_CurrentCall; } @@ -53,11 +56,48 @@ return self; } + +#pragma mark - Static Functions + ++ (bool)isInConference: (LinphoneCall*) call { + if (!call) + return false; + return linphone_call_get_current_params(call)->in_conference; +} + ++ (int)notInConferenceCallCount: (LinphoneCore*) lc { + int count = 0; + const MSList* calls = linphone_core_get_calls(lc); + + while (calls != 0) { + if (![UIPauseButton isInConference: (LinphoneCall*)calls->data]) { + count++; + } + calls = calls->next; + } + return count; +} + ++ (LinphoneCall*)getCall { + LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* currentCall = linphone_core_get_current_call(lc); + if (currentCall == nil && linphone_core_get_calls_nb(lc) == 1) { + currentCall = (LinphoneCall*) linphone_core_get_calls(lc)->data; + } + return currentCall; +} + + +#pragma mark - + - (void)setType:(UIPauseButtonType) atype call:(LinphoneCall*)acall { self->type = atype; self->call = acall; } + +#pragma mark - UIToggleButtonDelegate Functions + - (void)onOn { switch (type) { case UIPauseButtonType_Call: @@ -113,25 +153,6 @@ } } -+ (bool)isInConference: (LinphoneCall*) call { - if (!call) - return false; - return linphone_call_get_current_params(call)->in_conference; -} - -+ (int)notInConferenceCallCount: (LinphoneCore*) lc { - int count = 0; - const MSList* calls = linphone_core_get_calls(lc); - - while (calls != 0) { - if (![UIPauseButton isInConference: (LinphoneCall*)calls->data]) { - count++; - } - calls = calls->next; - } - return count; -} - - (bool)onUpdate { bool ret = false; // TODO: disable pause on not running call @@ -145,9 +166,9 @@ if(state == LinphoneCallPaused || state == LinphoneCallPausing) { ret = true; } - [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:""]; + [self setEnabled:TRUE]; } else { - [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; + [self setEnabled:FALSE]; } break; } @@ -157,9 +178,9 @@ if (!linphone_core_is_in_conference(lc)) { ret = true; } - [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:""]; + [self setEnabled:TRUE]; } else { - [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; + [self setEnabled:FALSE]; } break; } @@ -171,9 +192,9 @@ if(state == LinphoneCallPaused || state == LinphoneCallPausing) { ret = true; } - [LinphoneManager set:self enabled:TRUE withName:"PAUSE button" andReason:""]; + [self setEnabled:TRUE]; } else { - [LinphoneManager set:self enabled:FALSE withName:"PAUSE button" andReason:""]; + [self setEnabled:FALSE]; } break; } @@ -182,17 +203,4 @@ return ret; } -+ (LinphoneCall*)getCall { - LinphoneCore* lc = [LinphoneManager getLc]; - LinphoneCall* currentCall = linphone_core_get_current_call(lc); - if (currentCall == nil && linphone_core_get_calls_nb(lc) == 1) { - currentCall = (LinphoneCall*) linphone_core_get_calls(lc)->data; - } - return currentCall; -} - -- (void)dealloc { - [super dealloc]; -} - @end diff --git a/Classes/LinphoneUI/UISpeakerButton.m b/Classes/LinphoneUI/UISpeakerButton.m index d931cb4df..cae8f76b0 100644 --- a/Classes/LinphoneUI/UISpeakerButton.m +++ b/Classes/LinphoneUI/UISpeakerButton.m @@ -25,6 +25,10 @@ #include "linphonecore.h" @implementation UISpeakerButton + + +#pragma mark - Static Functions + static AudioSessionPropertyID routeChangeID = kAudioSessionProperty_AudioRouteChange; static void audioRouteChangeListenerCallback ( @@ -70,6 +74,16 @@ static void audioRouteChangeListenerCallback ( return self; } +- (void)dealloc { + OSStatus lStatus = AudioSessionRemovePropertyListenerWithUserData(routeChangeID, audioRouteChangeListenerCallback, self); + if (lStatus) { + ms_error ("cannot un register route change handler [%ld]",lStatus); + } + [super dealloc]; +} + +#pragma mark - UIToggleButtonDelegate Functions + - (void)onOn { [[LinphoneManager instance] enableSpeaker:TRUE]; } @@ -79,27 +93,7 @@ static void audioRouteChangeListenerCallback ( } - (bool)onUpdate { - CFStringRef lNewRoute=CFSTR("Unknown"); - UInt32 lNewRouteSize = sizeof(lNewRoute); - OSStatus lStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute - ,&lNewRouteSize - ,&lNewRoute); - if (!lStatus && CFStringGetLength(lNewRoute) > 0) { - char route[64]; - CFStringGetCString(lNewRoute, route,sizeof(route), kCFStringEncodingUTF8); - ms_message("Current audio route is [%s]",route); - return ( kCFCompareEqualTo == CFStringCompare (lNewRoute,CFSTR("Speaker"),0) - || kCFCompareEqualTo == CFStringCompare (lNewRoute,CFSTR("SpeakerAndMicrophone"),0)); - } else - return false; -} - -- (void)dealloc { - OSStatus lStatus = AudioSessionRemovePropertyListenerWithUserData(routeChangeID, audioRouteChangeListenerCallback, self); - if (lStatus) { - ms_error ("cannot un register route change handler [%ld]",lStatus); - } - [super dealloc]; + return [[LinphoneManager instance] isSpeakerEnabled]; } @end diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index 2600765b6..dd5724bf6 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -30,10 +30,23 @@ NSTimer *callQualityTimer; + +#pragma mark - Lifecycle Functions + - (id)init { return [super initWithNibName:@"UIStateBar" bundle:[NSBundle mainBundle]]; } +- (void) dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [callQualityTimer invalidate]; + [callQualityTimer release]; + [super dealloc]; +} + + +#pragma mark - ViewController Functions + - (void)viewDidLoad { [super viewDidLoad]; @@ -55,41 +68,20 @@ NSTimer *callQualityTimer; [self proxyConfigUpdate: config]; } -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return (interfaceOrientation == UIInterfaceOrientationPortrait); +- (void) viewDidUnload { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [callQualityTimer invalidate]; } + +#pragma mark - Event Functions + - (void)registrationUpdate: (NSNotification*) notif { LinphoneProxyConfig* config = NULL; linphone_core_get_default_proxy([LinphoneManager getLc], &config); [self proxyConfigUpdate:config]; } -- (void)callQualityUpdate { - UIImage *image = nil; - if([LinphoneManager isLcReady]) { - LinphoneCall *call = linphone_core_get_current_call([LinphoneManager getLc]); - if(call != NULL) { - float quality = linphone_call_get_average_quality(call); - if(quality < 1) { - image = [UIImage imageNamed:@"quality-call-0.png"]; - } else if (quality < 2) { - image = [UIImage imageNamed:@"quality-call-1.png"]; - } else if (quality < 3) { - image = [UIImage imageNamed:@"quality-call-2.png"]; - } else { - image = [UIImage imageNamed:@"quality-call-3.png"]; - } - } - } - if(image != nil) { - [callQualityImage setHidden: false]; - [callQualityImage setImage: image]; - } else { - [callQualityImage setHidden: true]; - } -} - - (void)proxyConfigUpdate: (LinphoneProxyConfig*) config { LinphoneRegistrationState state; NSString* message = nil; @@ -148,16 +140,32 @@ NSTimer *callQualityTimer; [registrationStateImage setImage:image]; } -- (void) viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [callQualityTimer invalidate]; -} -- (void) dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [callQualityTimer invalidate]; - [callQualityTimer release]; - [super dealloc]; +#pragma mark - + +- (void)callQualityUpdate { + UIImage *image = nil; + if([LinphoneManager isLcReady]) { + LinphoneCall *call = linphone_core_get_current_call([LinphoneManager getLc]); + if(call != NULL) { + float quality = linphone_call_get_average_quality(call); + if(quality < 1) { + image = [UIImage imageNamed:@"quality-call-0.png"]; + } else if (quality < 2) { + image = [UIImage imageNamed:@"quality-call-1.png"]; + } else if (quality < 3) { + image = [UIImage imageNamed:@"quality-call-2.png"]; + } else { + image = [UIImage imageNamed:@"quality-call-3.png"]; + } + } + } + if(image != nil) { + [callQualityImage setHidden: false]; + [callQualityImage setImage: image]; + } else { + [callQualityImage setHidden: true]; + } } @end diff --git a/Classes/LinphoneUI/UIToggleButton.m b/Classes/LinphoneUI/UIToggleButton.m index 92efe199d..a8b92feab 100644 --- a/Classes/LinphoneUI/UIToggleButton.m +++ b/Classes/LinphoneUI/UIToggleButton.m @@ -21,38 +21,8 @@ @implementation UIToggleButton -- (void)touchUp:(id) sender { - [self toggle]; -} - -- (bool)toggle { - if (self.selected) { - self.selected=!self.selected; - [self onOff]; - } else { - self.selected=!self.selected; - [self onOn]; - } - return self.selected; -} - -- (void)setOn { - if (!self.selected) { - [self toggle]; - } -} - -- (void)setOff { - if (self.selected) { - [self toggle]; - } -} - -- (bool)update { - self.selected = [self onUpdate]; - return self.selected; -} +#pragma mark - Lifecycle Functions - (void)initUIToggleButton { [self update]; @@ -88,6 +58,43 @@ } +#pragma mark - + +- (void)touchUp:(id) sender { + [self toggle]; +} + +- (bool)toggle { + if (self.selected) { + self.selected=!self.selected; + [self onOff]; + } else { + self.selected=!self.selected; + [self onOn]; + } + return self.selected; +} + +- (void)setOn { + if (!self.selected) { + [self toggle]; + } +} + +- (void)setOff { + if (self.selected) { + [self toggle]; + } +} + +- (bool)update { + self.selected = [self onUpdate]; + return self.selected; +} + + +#pragma mark - UIToggleButtonDelegate Functions + -(void) onOn { /*[NSException raise:NSInternalInconsistencyException format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)];*/ diff --git a/Classes/LinphoneUI/UIVideoButton.h b/Classes/LinphoneUI/UIVideoButton.h index 86586ce74..fbd07c43f 100644 --- a/Classes/LinphoneUI/UIVideoButton.h +++ b/Classes/LinphoneUI/UIVideoButton.h @@ -23,6 +23,13 @@ @interface UIVideoButton : UIToggleButton { BOOL locked; + BOOL unlockVideoState; + UIActivityIndicatorView *waitView; } +@property (assign) BOOL locked; +@property (assign) BOOL unlockVideoState; + +@property (nonatomic, retain) IBOutlet UIActivityIndicatorView* waitView; + @end diff --git a/Classes/LinphoneUI/UIVideoButton.m b/Classes/LinphoneUI/UIVideoButton.m index 961f1686a..f5b0b9055 100644 --- a/Classes/LinphoneUI/UIVideoButton.m +++ b/Classes/LinphoneUI/UIVideoButton.m @@ -22,6 +22,39 @@ @implementation UIVideoButton +@synthesize locked; +@synthesize unlockVideoState; +@synthesize waitView; + +- (void)initUIVideoButton { + self->locked = FALSE; + self->unlockVideoState = FALSE; +} + +- (id)init{ + self = [super init]; + if (self) { + [self initUIVideoButton]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUIVideoButton]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUIVideoButton]; + } + return self; +} + - (void)onOn { LinphoneCore* lc = [LinphoneManager getLc]; @@ -29,6 +62,10 @@ return; [self setEnabled: FALSE]; + [waitView startAnimating]; + [self setLocked: TRUE]; + [self setUnlockVideoState: TRUE]; + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); if (call) { LinphoneCallParams* call_params = linphone_call_params_copy(linphone_call_get_current_params(call)); @@ -37,8 +74,7 @@ linphone_call_params_destroy(call_params); } else { ms_warning("Cannot toggle video, because no current call"); - } - + } } - (void)onOff { @@ -48,6 +84,10 @@ return; [self setEnabled: FALSE]; + [waitView startAnimating]; + [self setLocked: TRUE]; + [self setUnlockVideoState: FALSE]; + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); if (call) { LinphoneCallParams* call_params = linphone_call_params_copy(linphone_call_get_current_params(call)); @@ -69,19 +109,33 @@ if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) { if (linphone_call_params_video_enabled(linphone_call_get_current_params(currentCall))) { val = true; + if(locked && unlockVideoState) { + locked = FALSE; + [waitView stopAnimating]; + } + } else { + if(locked && !unlockVideoState) { + locked = FALSE; + [waitView stopAnimating]; + } + } + if(!locked) { + [self setEnabled:TRUE]; } - [self setEnabled:TRUE]; } else { // Disable button if the call is not running [self setEnabled:FALSE]; + [waitView stopAnimating]; } } else { // Disable button if there is no call [self setEnabled:FALSE]; + [waitView stopAnimating]; } } else { // Disable button if video is not enabled [self setEnabled:FALSE]; + [waitView stopAnimating]; } return val; } else { @@ -90,4 +144,9 @@ } } +- (void)dealloc { + [waitView release]; + [super dealloc]; +} + @end diff --git a/Classes/MainScreenWithVideoPreview.h b/Classes/MainScreenWithVideoPreview.h deleted file mode 100644 index c02bd0647..000000000 --- a/Classes/MainScreenWithVideoPreview.h +++ /dev/null @@ -1,42 +0,0 @@ -/* MainScreenWithVideoPreview.h - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import -#import - -#import "DialerViewController.h" - -@interface MainScreenWithVideoPreview : UIViewController { - UIWindow *window; - DialerViewController* phoneMainView; - - - AVCaptureSession* session; - AVCaptureDeviceInput* input; - - int currentCamera; -} - --(void) showPreview:(BOOL) show; - --(void) useCameraAtIndex:(NSInteger)camIndex startSession:(BOOL)start; - -@property (nonatomic, retain) IBOutlet DialerViewController* phoneMainView; -@property (nonatomic, retain) IBOutlet UIWindow *window; -@end diff --git a/Classes/MainScreenWithVideoPreview.m b/Classes/MainScreenWithVideoPreview.m deleted file mode 100644 index 411e79b12..000000000 --- a/Classes/MainScreenWithVideoPreview.m +++ /dev/null @@ -1,185 +0,0 @@ -/* MainScreenWithVideoPreview.h - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import - -#import "MainScreenWithVideoPreview.h" -#import "LinphoneManager.h" - -@implementation MainScreenWithVideoPreview -@synthesize window; -@synthesize phoneMainView; - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil -{ - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - // Custom initialization - } - return self; -} - -- (void)didReceiveMemoryWarning -{ - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -#pragma mark - View lifecycle - -/* -// Implement loadView to create a view hierarchy programmatically, without using a nib. -- (void)loadView -{ -} -*/ - --(void) initVideoPreview { - session = [[AVCaptureSession alloc] init]; - - currentCamera = 0; - - AVCaptureVideoPreviewLayer* previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:session]; - - previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; - previewLayer.frame = self.view.bounds; - [self.view.layer addSublayer:previewLayer]; - - [session beginConfiguration]; - [session setSessionPreset:AVCaptureSessionPresetHigh]; - [session commitConfiguration]; - - [self useCameraAtIndex:0 startSession:NO]; -} - -// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. -- (void)viewDidLoad -{ - [super viewDidLoad]; -} - --(void) switchCameraPressed { - [self useCameraAtIndex: (currentCamera + 1) startSession:YES]; -} - --(void) useCameraAtIndex:(NSInteger)camIndex startSession:(BOOL)start { - @synchronized (self) { - [session stopRunning]; - - if (input != nil) - [session removeInput:input]; - - NSError* error; - - NSAutoreleasePool* pool = [[NSAutoreleasePool alloc]init]; - NSArray* array = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; - if ( [array count] == 0) { - ms_warning("No camera available (running on simulator ?"); - return; - } - currentCamera = camIndex % [array count]; - AVCaptureDevice* device = (AVCaptureDevice*) [array objectAtIndex:currentCamera]; - input = [[AVCaptureDeviceInput deviceInputWithDevice:device - error:&error] retain]; - - [session addInput:input]; - - [pool drain]; - - if (start) - [session startRunning]; - } -} - --(void) stopPreview:(id) a { - @synchronized (self) { - if (!session.running) - return; - [self.view removeFromSuperview]; - [session stopRunning]; - } -} - --(void) startPreview:(id) a { - @synchronized (self) { - if (session.running) - return; - [window addSubview:self.view]; - [window sendSubviewToBack:self.view]; - [session startRunning]; - } -} - - --(void) showPreview:(BOOL) show { - LinphoneCore* lc; - if([LinphoneManager isLcReady]) - lc = [LinphoneManager getLc]; - - lc = [LinphoneManager getLc]; - - if (lc==NULL) return; - - bool enableVideo = linphone_core_video_enabled(lc); - - if (enableVideo) { - LinphoneCall* call = linphone_core_get_current_call(lc); - if (show && call && linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { - return; - } - - if (session == nil) { - [self initVideoPreview]; - } - - if (show && !session.running) { - [self performSelectorInBackground:@selector(startPreview:) withObject:nil]; - } else if (!show && session.running) { - [self performSelectorInBackground:@selector(stopPreview:) withObject:nil]; - } - } else { - [self stopPreview:nil]; - } -} - --(void) viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - //TODO - //[phoneMainView.switchCamera addTarget:self action:@selector(switchCameraPressed) forControlEvents:UIControlEventTouchUpInside]; -} - --(void) viewDidDisappear:(BOOL)animated { - -} - -- (void)viewDidUnload -{ - [super viewDidUnload]; - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - -/*- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation -{ - return NO; -}*/ - -@end diff --git a/Classes/MainScreenWithVideoPreview.xib b/Classes/MainScreenWithVideoPreview.xib deleted file mode 100644 index 9eadcbda7..000000000 --- a/Classes/MainScreenWithVideoPreview.xib +++ /dev/null @@ -1,629 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBProxyObject - IBUITabBarItem - IBUIViewController - IBUICustomObject - IBUITabBarController - IBUIWindow - IBUITabBar - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - IBIPadFramework - - - - 292 - {768, 1024} - - - _NS:196 - - 3 - MC42NjY2NjY2NjY3AA - - NO - NO - - 2 - - IBIPadFramework - YES - - - - - 2 - - - 1 - 1 - - IBIPadFramework - NO - - History - - History - - NSImage - history-orange.png - - IBIPadFramework - - - - - - 1 - 1 - - IBIPadFramework - NO - - - - - - Dialer - - NSImage - dialer-orange.png - - IBIPadFramework - - - - PhoneViewController-ipad - - - 1 - 1 - - IBIPadFramework - NO - - - - IBIPadFramework - - 5 - - - - 1 - 1 - - IBIPadFramework - NO - - - - - IBIPadFramework - - 0 - - - - - 1 - 1 - - IBIPadFramework - NO - - - - - 266 - {{0, 975}, {768, 49}} - - - - 3 - MCAwAA - - NO - IBIPadFramework - - - - - - - - - - - - - 274 - {{0, 20}, {768, 1004}} - - - _NS:212 - - 1 - MC40MzUwMTEzNDA3IDAuNjI1IDEAA - - IBIPadFramework - - - 2 - - - 1 - 1 - - IBIPadFramework - NO - - - - - - - delegate - - - - 30 - - - - window - - - - 9 - - - - phoneMainView - - - - 44 - - - - window - - - - 27 - - - - myTabBarController - - - - 28 - - - - mMainScreenWithVideoPreview - - - - 31 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 3 - - - - - - 6 - - - - - - - - 16 - - - linphoneAppDelegate - - - 17 - - - - - - - - - - - - 18 - - - - - - dialer - - - 19 - - - - - - history - - - 20 - - - - - - more - - - 21 - - - - - - Contacts - - - 22 - - - - - 23 - - - - - 24 - - - - - 25 - - - - - 26 - - - - - 7 - - - - - - - - UIApplication - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - linphoneAppDelegate - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - PhoneViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - HistoryTableViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - MoreViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - MainScreenWithVideoPreview - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 44 - - - - - HistoryTableViewController - UITableViewController - - IBProjectSource - ./Classes/HistoryTableViewController.h - - - - MainScreenWithVideoPreview - UIViewController - - PhoneViewController - UIWindow - - - - phoneMainView - PhoneViewController - - - window - UIWindow - - - - IBProjectSource - ./Classes/MainScreenWithVideoPreview.h - - - - MoreViewController - UITableViewController - - UITableViewCell - UITableViewCell - UITextView - UITableViewCell - UILabel - - - - console - UITableViewCell - - - credit - UITableViewCell - - - creditText - UITextView - - - web - UITableViewCell - - - weburi - UILabel - - - - IBProjectSource - ./Classes/MoreViewController.h - - - - PhoneViewController - UIViewController - - onAddContact: - id - - - onAddContact: - - onAddContact: - id - - - - UITextField - UIButton - UIButton - UIButton - UIView - UIButton - UIEraseButton - UIButton - UIButton - UIButton - UILabel - MainScreenWithVideoPreview - UITabBarController - UIButton - UIButton - UIButton - UIButton - UIButton - UILabel - UIView - UIButton - UIButton - UIButton - UIButton - - - - address - UITextField - - - backToCallView - UIButton - - - callLarge - UIButton - - - callShort - UIButton - - - dialerView - UIView - - - eight - UIButton - - - erase - UIEraseButton - - - five - UIButton - - - four - UIButton - - - hash - UIButton - - - mDisplayName - UILabel - - - mMainScreenWithVideoPreview - MainScreenWithVideoPreview - - - myTabBarController - UITabBarController - - - nine - UIButton - - - one - UIButton - - - seven - UIButton - - - six - UIButton - - - star - UIButton - - - status - UILabel - - - statusViewHolder - UIView - - - switchCamera - UIButton - - - three - UIButton - - - two - UIButton - - - zero - UIButton - - - - IBProjectSource - ./Classes/PhoneViewController.h - - - - UIEraseButton - UIButton - - IBProjectSource - ./Classes/UIEraseButton.h - - - - - 0 - IBIPadFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - - {25, 24} - {25, 23} - - 1181 - - diff --git a/Classes/MoreViewController.h b/Classes/MoreViewController.h index 896a3a003..4cc2a28d4 100644 --- a/Classes/MoreViewController.h +++ b/Classes/MoreViewController.h @@ -20,7 +20,7 @@ #import @class ConsoleViewController; -@interface MoreViewController : UITableViewController { +@interface MoreViewController : UITableViewController { bool isLogViewEnabled; diff --git a/Classes/MoreViewController.m b/Classes/MoreViewController.m index 9a9eb35d3..6963f31ab 100644 --- a/Classes/MoreViewController.m +++ b/Classes/MoreViewController.m @@ -23,13 +23,16 @@ #include "lpconfig.h" @implementation MoreViewController + @synthesize web; @synthesize credit; @synthesize console; @synthesize creditText; @synthesize weburi; -//Implement viewDidLoad to do additional setup after loading the view, typically from a nib. + +#pragma mark - Lifecycle Functions + - (void)viewDidLoad { [super viewDidLoad]; [creditText setText: [NSString stringWithFormat:creditText.text,[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]]]; @@ -39,38 +42,35 @@ } -/* -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} -*/ - -- (void)didReceiveMemoryWarning { - // Releases the view if it doesn't have a superview. - [super didReceiveMemoryWarning]; - - // Release any cached data, images, etc that aren't in use. -} - -- (void)viewDidUnload { - // Release any retained subviews of the main view. - // e.g. self.myOutlet = nil; -} - - (void)dealloc { + [credit release]; + [creditText release]; + + [web release]; + [weburi release]; + [console release]; + + [consoleViewController release]; [super dealloc]; } + +#pragma mark - + -(void) enableLogView { isLogViewEnabled = true; } + +#pragma mark - UITableViewDelegate Functions + - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 2; } + +#pragma mark - UITableViewDataSource Functions + - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == 0) { return 230; @@ -79,7 +79,6 @@ } } -// Customize the number of rows in the table view. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { if (section == 0) { return 1; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 1c0f0ab5e..8d9e26959 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -30,6 +30,9 @@ @synthesize mainViewController; + +#pragma mark - Lifecycle Functions + - (void)initPhoneMainView { currentPhoneView = -1; loadCount = 0; // For avoiding IOS 4 bug @@ -63,78 +66,22 @@ return self; } -- (CATransition*)getTransition:(PhoneView)old new:(PhoneView)new { - CATransition* trans = [CATransition animation]; - [trans setType:kCATransitionPush]; - [trans setDuration:0.35]; - [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; - bool left = false; + [mainViewController release]; - if(old == PhoneView_Chat) { - if(new == PhoneView_Contacts || - new == PhoneView_Dialer || - new == PhoneView_Settings || - new == PhoneView_History) { - left = true; - } - } else if(old == PhoneView_Settings) { - if(new == PhoneView_Dialer || - new == PhoneView_Contacts || - new == PhoneView_History) { - left = true; - } - } else if(old == PhoneView_Dialer) { - if(new == PhoneView_Contacts || - new == PhoneView_History) { - left = true; - } - } else if(old == PhoneView_Contacts) { - if(new == PhoneView_History) { - left = true; - } - } + [viewDescriptions removeAllObjects]; + [viewDescriptions release]; - if(left) { - [trans setSubtype:kCATransitionFromLeft]; - } else { - [trans setSubtype:kCATransitionFromRight]; - } - - return trans; + [modalControllers removeAllObjects]; + [modalControllers release]; + + [super dealloc]; } -- (void)changeView: (NSNotification*) notif { - NSNumber *viewId = [notif.userInfo objectForKey: @"view"]; - NSNumber *tabBar = [notif.userInfo objectForKey: @"tabBar"]; - NSNumber *fullscreen = [notif.userInfo objectForKey: @"fullscreen"]; - - // Check view change - if(viewId != nil) { - PhoneView view = [viewId intValue]; - UICompositeViewDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; - if(description == nil) - return; - if(view != currentPhoneView) { - [mainViewController setViewTransition:[self getTransition:currentPhoneView new:view]]; - [mainViewController changeView:description]; - currentPhoneView = view; - } - } - - if(tabBar != nil) { - [mainViewController setToolBarHidden:![tabBar boolValue]]; - } - - if(fullscreen != nil) { - [mainViewController setFullScreen:[fullscreen boolValue]]; - } - - // Call abstractCall - NSDictionary *dict = [notif.userInfo objectForKey: @"args"]; - if(dict != nil) - [AbstractCall call:[mainViewController getCurrentViewController] dict:dict]; -} + +#pragma mark - ViewController Functions - (void)viewDidLoad { // Avoid IOS 4 bug @@ -259,6 +206,9 @@ self->loadCount--; } + +#pragma mark - Event Functions + - (void)registrationUpdate:(NSNotification*)notif { LinphoneRegistrationState state = [[notif.userInfo objectForKey: @"state"] intValue]; LinphoneProxyConfig *cfg = [[notif.userInfo objectForKey: @"cfg"] pointerValue]; @@ -362,6 +312,82 @@ } + +#pragma mark - + +- (CATransition*)getTransition:(PhoneView)old new:(PhoneView)new { + CATransition* trans = [CATransition animation]; + [trans setType:kCATransitionPush]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + + bool left = false; + + if(old == PhoneView_Chat) { + if(new == PhoneView_Contacts || + new == PhoneView_Dialer || + new == PhoneView_Settings || + new == PhoneView_History) { + left = true; + } + } else if(old == PhoneView_Settings) { + if(new == PhoneView_Dialer || + new == PhoneView_Contacts || + new == PhoneView_History) { + left = true; + } + } else if(old == PhoneView_Dialer) { + if(new == PhoneView_Contacts || + new == PhoneView_History) { + left = true; + } + } else if(old == PhoneView_Contacts) { + if(new == PhoneView_History) { + left = true; + } + } + + if(left) { + [trans setSubtype:kCATransitionFromLeft]; + } else { + [trans setSubtype:kCATransitionFromRight]; + } + + return trans; +} + +- (void)changeView: (NSNotification*) notif { + NSNumber *viewId = [notif.userInfo objectForKey: @"view"]; + NSNumber *tabBar = [notif.userInfo objectForKey: @"tabBar"]; + NSNumber *fullscreen = [notif.userInfo objectForKey: @"fullscreen"]; + + // Check view change + if(viewId != nil) { + PhoneView view = [viewId intValue]; + UICompositeViewDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; + if(description == nil) + return; + if(view != currentPhoneView) { + [mainViewController setViewTransition:[self getTransition:currentPhoneView new:view]]; + [mainViewController changeView:description]; + currentPhoneView = view; + } + } + + if(tabBar != nil) { + [mainViewController setToolBarHidden:![tabBar boolValue]]; + } + + if(fullscreen != nil) { + [mainViewController setFullScreen:[fullscreen boolValue]]; + } + + // Call abstractCall + NSDictionary *dict = [notif.userInfo objectForKey: @"args"]; + if(dict != nil) + [AbstractCall call:[mainViewController getCurrentViewController] dict:dict]; +} + - (void)displayCallError:(LinphoneCall*) call message:(NSString*) message { const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); @@ -404,6 +430,8 @@ } +#pragma mark - ActionSheet Functions + - (void)displayIncomingCall:(LinphoneCall*) call{ const char* userNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); @@ -489,6 +517,9 @@ } } + +#pragma mark - Modal Functions + - (void)modalViewDismiss:(UIModalViewController*)controller value:(int)value { [self removeModalViewController:controller]; } @@ -522,18 +553,4 @@ [[controller view] removeFromSuperview]; } -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - - [mainViewController release]; - - [viewDescriptions removeAllObjects]; - [viewDescriptions release]; - - [modalControllers removeAllObjects]; - [modalControllers release]; - - [super dealloc]; -} - @end \ No newline at end of file diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 5411037f3..bd5f34100 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -25,10 +25,15 @@ @synthesize settingsController; @synthesize navigationController; +#pragma mark - Lifecycle Functions + - (id)init { return [super initWithNibName:@"SettingsViewController" bundle:[NSBundle mainBundle]]; } + +#pragma mark - ViewController Functions + - (void)viewDidLoad { settingsController.delegate = self; settingsController.settingsReaderDelegate = self; @@ -39,6 +44,37 @@ [self.view addSubview: navigationController.view]; } +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [settingsController viewWillDisappear:NO]; + } +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [settingsController viewWillAppear:NO]; + } +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [settingsController viewDidAppear:NO]; + } +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [settingsController viewDidDisappear:NO]; + } +} + + +#pragma mark - IASKSettingsReaderFilterDelegate Functions + - (NSDictionary*)filterPreferenceSpecifier:(NSDictionary *)specifier { if (![LinphoneManager isLcReady]) { // LinphoneCore not ready: do not filter @@ -81,35 +117,10 @@ return specifier; } + +#pragma mark - IASKSettingsDelegate Functions + - (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender { } -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewWillDisappear:NO]; - } -} - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewWillAppear:NO]; - } -} - -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewDidAppear:NO]; - } -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewDidDisappear:NO]; - } -} - @end diff --git a/Classes/Utils/CPAnimationSequence.m b/Classes/Utils/CPAnimationSequence.m index e87e869ec..d0b1ebd35 100755 --- a/Classes/Utils/CPAnimationSequence.m +++ b/Classes/Utils/CPAnimationSequence.m @@ -32,10 +32,15 @@ } instance.steps = [NSArray arrayWithArray:tempSteps]; va_end(args); + [tempSteps release]; } return instance; } +- (void) dealloc { + [steps release]; + [super dealloc]; +} #pragma mark - property override diff --git a/Classes/Utils/CPAnimationStep.h b/Classes/Utils/CPAnimationStep.h index ca67b485c..709594a7c 100755 --- a/Classes/Utils/CPAnimationStep.h +++ b/Classes/Utils/CPAnimationStep.h @@ -33,7 +33,7 @@ typedef void (^AnimationStep)(void); @property (nonatomic) NSTimeInterval delay; @property (nonatomic) NSTimeInterval duration; -@property (nonatomic, copy) AnimationStep step; +@property (nonatomic, strong) AnimationStep step; @property (nonatomic) UIViewAnimationOptions options; #pragma mark - execution diff --git a/Classes/Utils/CPAnimationStep.m b/Classes/Utils/CPAnimationStep.m index 8ea76a77d..ba99bbfd9 100755 --- a/Classes/Utils/CPAnimationStep.m +++ b/Classes/Utils/CPAnimationStep.m @@ -43,11 +43,16 @@ instance.delay = theDelay; instance.duration = theDuration; instance.options = theOptions; - instance.step = [theStep copy]; + instance.step = theStep; } return instance; } +- (void)dealloc { + [step release]; + [super dealloc]; +} + #pragma mark action // From http://stackoverflow.com/questions/4007023/blocks-instead-of-performselectorwithobjectafterdelay @@ -65,6 +70,7 @@ self.consumableSteps = [[NSMutableArray alloc] initWithArray:[self animationStepArray]]; } if (![self.consumableSteps count]) { // recursion anchor + [self.consumableSteps release]; self.consumableSteps = nil; return; // we're done } diff --git a/Resources/supprimer-participant-conf-actif.png b/Resources/supprimer-participant-conf-actif.png new file mode 100644 index 0000000000000000000000000000000000000000..8c1843de8d4e30161a197b708189b475bd0a6d9c GIT binary patch literal 2116 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 literal 0 HcmV?d00001 diff --git a/Resources/video-ON-disabled.png b/Resources/video-ON-disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..b51fa8db39b539126091fe4697307a85b6261f86 GIT binary patch literal 3044 zcmai0c{tQ-8~z!FVHiV}8A~XfK_xsC*+Sq9KiCvX8NiqD7=a$u1njAuSk7 z6e0T((_|g{zK`{rbIx^r|9_;|#4007`K#~9nOFq36u z2q$ZI(u({WIB#AwGiD)cF^#GtSip_PT=NG2=&`?z4M=;9U?sT%%q>m0esO`gc@=C1 zpO9EJUvuLN_CdpoZ#)8rJ&%7?et>heT|j*NiS+1rojUa0?KW+j)~T^aOg{HVwSpCB z39aTDkLsyVHZaUa(u8D|!d)*P&)S+eOyH?C%-dCNghxO!%aVWY^P_N)YxI6~*N6tV z>A=}Um6%mdk_Eaj7KAoGIU077q)O7iFPJXrV}+vtzYCuD?2D6pAQSw6X{Rm$WbqhW zHiU!H&q@Ob@~ioFQ()H=aF=OH53p144g6DvWcVOb!o~mrs)Cc?SA|}0!IfiLAP@e8 zqr?qsW~r8<&RoDB?5aQkxbW&v&^&q75%L^td=0WHLRU6Z?n`L5GGw;W=WK!HSflfo zFr0@8v6SaK1rn%Nlzq?K7>{^xs3iwvZaJb=y zUnk?!jO>-lM#Y#G1Ss`4Djz839eu7TEe)`_3Y+HVh=K5JbFaYtZZ~YNZ*v~CvZ3?- zvpKd98yuH@MrG1E8TQkEaA_A^#g<_K)!`n!wPts2ftE!unu);R&O#^^Mx$2E&Y^(R zMA7}LZ=TYVK{{%dh)crX(97-gmq5qo%ruULY_Wa+j_)Hpt_0p2%bmjw9~jgruX{b_ zdB%YAD;RG++txloxCf*)nwHNQJvyw-;X}ZJTGSetzsQZ5>m7~Z+|rwU5?$Rr<=Y<3 zk@P?u2y@z&;fEypaN@4b1!!?3I#D3fCV&D6W6P0vf+X~R-A!3=kU6B%9-vm;bgFoW zT@rDxEbn5Po^Wk)L(Xo%KuH_9okatEKe070`F@IH8Ls45bJ&};;aHSxpv~O(+Y7({+ROLwdDB@7ISBH{x>+JCLB~S-wk-!-R%b@L% z?XI*Rl_Mg@IlAc1dF?}*<+l{EAj}W-$=ZYUH}mni?g`CNqPc-bq1HR5n$l0fo%$!= zIeMMbm7U28H|4_G?BxAJXgpxYfv3v0i9;|8K?3!13UEl!ltgXnJ@L+xXL#CpfGCQ( z&YL7VHc`;&6*|r)iT^(Q+hXi(#E~So$=Ek(QX90nu67rCowywpEE6Q_rs5jZr15)% zW`ea{S>0HV=I>s`K-4SdcD4sg@%#IUGC!4)Kxd#{mtXaFuN&=eZWf!lTrdNib3c{O z7BRTZ@}n(YxbGkC3d6RxAft*()b)1t?+1>Go6=XH93V7v388f%U^8);#e?s~<}3+#3Q z1}wT*F^f4?39#!kY|`L0;rd_vZ|StL(g^vEr`VZNKY(Pf8fmXeTvn@c9reoJ^S`#b zBY$&^yonrnD`Bm>+^c*IsBa*Obz@@GbUEuCTp~SXqsaLe2Kn9(FBSr)UbMa&m=n>d z^10e6b;4iF`8=jaD{j)119?g@wjn{JNK|pGXN2705R(X4$}1g4z3>BykKFSLiJFQo-=+b9$RP?bWX= zh}_*XH)_voJslv>$6B&(K(cJ`bHR__O0fmFBA(d1wXa#*;}*QE)IiPR?hEDdsV$m~ z6_N++TlVrkoyva=Ov^>3C+127&`D08qsx)vV^Hg6m1=SL~XBU-Zb%cOKquxfAE`%Z_7*GCsQ97 zo#&lgHwjY`GIOl^OsfHpRFuem_;?utjuyF;S^-siFHfQP52!kN5umlNY9d9O<3wJU z+!s&v4oqvCmv9Si+|?10In%r4*n>+DYMZmUsuozT>66sg`Ud=SJ-T)sL)7olru~#k z_DEZQtfaEAoF`e*u& zY*$j_jlVp_z362Vb>^eJHY*8mE~RDqz^MAr=J0qZn@t`?KrBz>U$9O3AQUOaGX-yNH)4N|TLZv8Siyd#BU( zOG_b|FI1;ISUGWdG433@Le{v<$(euh1ptN@KimqD;V^6<@pXtzKAvgmx_+uSQC8pX zAv&r-I{VpKF{fjEmg0Nouul92b(7Q9gwM{cw|TQ{M9Jwi9jB6x=*H4;?w5lTf)yALs#NQCL33Lby^OaI;g?VnFMWA`y}ab$86l^8*9Y zZMGcELP9ybatPjWW&;IWzi0i{RC3lh@?sS=RmN*VlS&XF( z7^4sdXN8Pa1*G=ey9km@L+<_%$x0{oq)9Vb!3^{d#bU?eU~z-i17Ix;9)A~s3;%b_ z0SY)xfag(lc4W4QZOl%U$2ADe<*mc3jSPQn+jUSE^L;|visrM5#yiIY*Z6b_-XQ_B zxh^UcA0PRW8?}i7?Q#B(- zzERi7h0%MY#SDd5L3^$>jBy00=5B!=CQ?jbXl|>_2(8b-g13*3PBp9y9a`e;R36}u z)TJ5^ibQ0R-7{=7m%gOQ7)V;h4;jvhXZM86yy`cozT?ef@L8(90E8n483mM<&P-*j z<88HzYyZmB`b&aQB>!j5SRR&h^s-S6BLf77JG#1Q6{+AOULcdTx*g(7Zd`%Y7h?N} z?!ySX*s_Kp=sN8Do8XqW;IinmFddQKu><~tF*{*;n527xIYz;S$gRb$4)qP|OI)Uj zS}DD0qgJH;*p-m2>|8EJ-u9!4>LN+U>0779LYzl{*S%5Nd^JXLG%Rr43z!}&+KR#n zmQ{GID6{`o(OkTWX@0uOosqoEqv_-4c9DI7Isc_MD%b+@o@NR9G`wen#`eJ|RHIQ? zv*bi02VU3R`WR<#v~7pB^0pkQZ=#oc-Q@#+3BqsaLfM`bJ$yf6OEd7x>c*ZP>pu>d Mn^+lB3~xmJ7gI-@NdN!< literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index b2de10655..89f5d7a41 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -58,7 +58,6 @@ 228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 228697C311AC29B800E9E0CA /* CFNetwork.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 228B19AF130290C500F154D3 /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = 228B19AE130290C500F154D3 /* iTunesArtwork */; }; 22968A5F12F875C600588287 /* UISpeakerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A5E12F875C600588287 /* UISpeakerButton.m */; }; - 22968A8812F87C2000588287 /* UIDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A8712F87C2000588287 /* UIDuration.m */; }; 22A10F3B11F8960300373793 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2C10765B400068D98F /* libortp.a */; }; 22AA8AFD13D7125600B30535 /* libx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AA8AFB13D7125500B30535 /* libx264.a */; }; 22AA8AFE13D7125600B30535 /* libmsx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AA8AFC13D7125500B30535 /* libmsx264.a */; }; @@ -94,7 +93,6 @@ 22D8F14F147548E2008C97DB /* UIHangUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */; }; 22D8F151147548E2008C97DB /* UIMicroButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMicroButton.m */; }; 22D8F152147548E2008C97DB /* UISpeakerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A5E12F875C600588287 /* UISpeakerButton.m */; }; - 22D8F153147548E2008C97DB /* UIDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A8712F87C2000588287 /* UIDuration.m */; }; 22D8F154147548E2008C97DB /* FirstLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2218A92312FBE1340088A667 /* FirstLoginViewController.m */; }; 22D8F155147548E2008C97DB /* UIBluetoothButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */; }; 22D8F156147548E2008C97DB /* UIEraseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */; }; @@ -163,10 +161,6 @@ 34A6ECEB14CF13CB00460C04 /* icone-linphone-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */; }; 34C7646C14CD5585008E9607 /* dialer-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646A14CD5585008E9607 /* dialer-orange.png */; }; 34C7646D14CD5585008E9607 /* history-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646B14CD5585008E9607 /* history-orange.png */; }; - 34CA852F148F646700503C01 /* MainScreenWithVideoPreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34CA852E148F646700503C01 /* MainScreenWithVideoPreview.xib */; }; - 34CA8530148F646700503C01 /* MainScreenWithVideoPreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34CA852E148F646700503C01 /* MainScreenWithVideoPreview.xib */; }; - 34CA8539148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */ = {isa = PBXBuildFile; fileRef = 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */; }; - 34CA853A148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */ = {isa = PBXBuildFile; fileRef = 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */; }; 57282931154AF1460076F540 /* history-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646B14CD5585008E9607 /* history-orange.png */; }; 57282933154AF14D0076F540 /* dialer-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646A14CD5585008E9607 /* dialer-orange.png */; }; 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; @@ -332,6 +326,11 @@ D37295CB158B1E2D00D2C0C7 /* registration_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */; }; D37295DB158B3C9600D2C0C7 /* video-OFF-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */; }; D37295DC158B3C9600D2C0C7 /* video-OFF-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */; }; + D377BBFA15A19DA6002B696B /* video-ON-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D377BBF915A19DA6002B696B /* video-ON-disabled.png */; }; + D37B96B715A1A6F20005CCD2 /* supprimer-participant-conf-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* supprimer-participant-conf-actif.png */; }; + D37B96B815A1A6F20005CCD2 /* supprimer-participant-conf-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* supprimer-participant-conf-actif.png */; }; + D37B96B915A1A6F20005CCD2 /* supprimer-participant-conf-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* supprimer-participant-conf-over.png */; }; + D37B96BA15A1A6F20005CCD2 /* supprimer-participant-conf-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* supprimer-participant-conf-over.png */; }; D37DC6C11594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; D37DC6C21594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; D37DC6ED1594AE6F00B2A5EB /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */; }; @@ -755,7 +754,6 @@ 2214EB7912F846B1002A5394 /* UICallButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICallButton.m; sourceTree = ""; }; 2214EB8712F84EBB002A5394 /* UIHangUpButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIHangUpButton.h; sourceTree = ""; }; 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIHangUpButton.m; sourceTree = ""; }; - 2214EB8A12F84FE9002A5394 /* UILinphone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILinphone.h; sourceTree = ""; }; 2214EBF112F86360002A5394 /* UIMicroButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIMicroButton.h; sourceTree = ""; }; 2214EBF212F86360002A5394 /* UIMicroButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMicroButton.m; sourceTree = ""; }; 2218A5CE12F973450088A667 /* LogView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogView.h; sourceTree = ""; }; @@ -798,8 +796,6 @@ 228B19AE130290C500F154D3 /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = text; name = iTunesArtwork; path = Resources/iTunesArtwork; sourceTree = ""; }; 22968A5D12F875C600588287 /* UISpeakerButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UISpeakerButton.h; sourceTree = ""; }; 22968A5E12F875C600588287 /* UISpeakerButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UISpeakerButton.m; sourceTree = ""; }; - 22968A8612F87C2000588287 /* UIDuration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDuration.h; sourceTree = ""; }; - 22968A8712F87C2000588287 /* UIDuration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIDuration.m; sourceTree = ""; }; 22AA8AFB13D7125500B30535 /* libx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libx264.a; path = "liblinphone-sdk/apple-darwin/lib/libx264.a"; sourceTree = ""; }; 22AA8AFC13D7125500B30535 /* libmsx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsx264.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsx264.a"; sourceTree = ""; }; 22AA8AFF13D83F6300B30535 /* UICamSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICamSwitch.h; sourceTree = ""; }; @@ -915,9 +911,6 @@ 34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "icone-linphone-72.png"; path = "Resources/icone-linphone-72.png"; sourceTree = ""; }; 34C7646A14CD5585008E9607 /* dialer-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-orange.png"; path = "submodules/linphone/pixmaps/dialer-orange.png"; sourceTree = ""; }; 34C7646B14CD5585008E9607 /* history-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-orange.png"; path = "submodules/linphone/pixmaps/history-orange.png"; sourceTree = ""; }; - 34CA852E148F646700503C01 /* MainScreenWithVideoPreview.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MainScreenWithVideoPreview.xib; sourceTree = ""; }; - 34CA8537148F692A00503C01 /* MainScreenWithVideoPreview.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainScreenWithVideoPreview.h; sourceTree = ""; }; - 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainScreenWithVideoPreview.m; sourceTree = ""; }; 70571E1913FABCB000CDD3C2 /* rootca.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rootca.pem; path = Resources/rootca.pem; sourceTree = ""; }; 7066FC0B13E830E400EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; }; 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; @@ -1023,6 +1016,9 @@ D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPauseButton.m; sourceTree = ""; }; D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = registration_inprogress.png; path = Resources/registration_inprogress.png; sourceTree = ""; }; D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-OFF-disabled.png"; path = "Resources/video-OFF-disabled.png"; sourceTree = ""; }; + D377BBF915A19DA6002B696B /* video-ON-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-ON-disabled.png"; path = "Resources/video-ON-disabled.png"; sourceTree = ""; }; + D37B96B515A1A6F20005CCD2 /* supprimer-participant-conf-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "supprimer-participant-conf-actif.png"; path = "Resources/supprimer-participant-conf-actif.png"; sourceTree = ""; }; + D37B96B615A1A6F20005CCD2 /* supprimer-participant-conf-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "supprimer-participant-conf-over.png"; path = "Resources/supprimer-participant-conf-over.png"; sourceTree = ""; }; D37DC6BF1594AE1800B2A5EB /* LinphoneCoreSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCoreSettingsStore.h; sourceTree = ""; }; D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCoreSettingsStore.m; sourceTree = ""; }; D37DC6C51594AE6F00B2A5EB /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = ""; }; @@ -1340,9 +1336,6 @@ D3EA53FB159850E80037DC6B /* LinphoneManager.h */, D3EA53FC159850E80037DC6B /* LinphoneManager.m */, 2214EB7012F84668002A5394 /* LinphoneUI */, - 34CA8537148F692A00503C01 /* MainScreenWithVideoPreview.h */, - 34CA8538148F692A00503C01 /* MainScreenWithVideoPreview.m */, - 34CA852E148F646700503C01 /* MainScreenWithVideoPreview.xib */, 22E0A81D111C44E100B04932 /* MoreViewController.h */, 22E0A81C111C44E100B04932 /* MoreViewController.m */, 22E0A81B111C44E100B04932 /* MoreViewController.xib */, @@ -1599,8 +1592,6 @@ D3A55FBE15877E69003FD403 /* UIContactCell.xib */, 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */, 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */, - 22968A8612F87C2000588287 /* UIDuration.h */, - 22968A8712F87C2000588287 /* UIDuration.m */, 22BB1A67132FF16A005CD7AA /* UIEraseButton.h */, 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */, 2214EB8712F84EBB002A5394 /* UIHangUpButton.h */, @@ -1608,7 +1599,6 @@ D31C9C96158A1CDE00756B45 /* UIHistoryCell.h */, D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */, D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */, - 2214EB8A12F84FE9002A5394 /* UILinphone.h */, D32409C1158B49A600C8C119 /* UILongTouchButton.h */, D32409C2158B49A600C8C119 /* UILongTouchButton.m */, D3ED3E841586291B006C0DE4 /* UIMainBar.h */, @@ -1940,6 +1930,8 @@ D3432A5D158A4446001C6B0B /* status_error.png */, D3432A6F158A45AF001C6B0B /* status_inprogress.png */, 22226C13118197EC000CA27B /* stopcall-red.png */, + D37B96B515A1A6F20005CCD2 /* supprimer-participant-conf-actif.png */, + D37B96B615A1A6F20005CCD2 /* supprimer-participant-conf-over.png */, D35E757515931E5D0066B1C1 /* switch_camera_default.png */, D35E757615931E5D0066B1C1 /* switch_camera_over.png */, D38327F11580FE3A00FA0D23 /* tchat-actif.png */, @@ -1954,6 +1946,7 @@ D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */, D3F83F01158205A100336684 /* video-OFF-over.png */, D3F83F02158205A100336684 /* video-ON-actif.png */, + D377BBF915A19DA6002B696B /* video-ON-disabled.png */, D3F83F03158205A100336684 /* video-ON-over.png */, ); name = Resources; @@ -2161,7 +2154,6 @@ 228B19AF130290C500F154D3 /* iTunesArtwork in Resources */, 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */, - 34CA852F148F646700503C01 /* MainScreenWithVideoPreview.xib in Resources */, 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 3422AA5314978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */, @@ -2342,6 +2334,9 @@ D3211BC0159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */, D3211BC2159CBFD70098460B /* cancel_white_bg_over.png in Resources */, D3C714B3159DB84400705B8E /* toy-mono.wav in Resources */, + D377BBFA15A19DA6002B696B /* video-ON-disabled.png in Resources */, + D37B96B715A1A6F20005CCD2 /* supprimer-participant-conf-actif.png in Resources */, + D37B96B915A1A6F20005CCD2 /* supprimer-participant-conf-over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2366,7 +2361,6 @@ 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */, 22D8F142147548E2008C97DB /* rootca.pem in Resources */, 2211DB95147564B400DEE054 /* Settings.bundle in Resources */, - 34CA8530148F646700503C01 /* MainScreenWithVideoPreview.xib in Resources */, 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 3422AA5414978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */, @@ -2531,6 +2525,8 @@ D3211BC1159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */, D3211BC3159CBFD70098460B /* cancel_white_bg_over.png in Resources */, D3C714B4159DB84400705B8E /* toy-mono.wav in Resources */, + D37B96B815A1A6F20005CCD2 /* supprimer-participant-conf-actif.png in Resources */, + D37B96BA15A1A6F20005CCD2 /* supprimer-participant-conf-over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2551,14 +2547,12 @@ 2214EB8912F84EBB002A5394 /* UIHangUpButton.m in Sources */, 2214EBF312F86360002A5394 /* UIMicroButton.m in Sources */, 22968A5F12F875C600588287 /* UISpeakerButton.m in Sources */, - 22968A8812F87C2000588287 /* UIDuration.m in Sources */, 2218A92512FBE1340088A667 /* FirstLoginViewController.m in Sources */, 22C755601317E59C007BC101 /* UIBluetoothButton.m in Sources */, 22BB1A69132FF16A005CD7AA /* UIEraseButton.m in Sources */, 223963171393CFAF001DE689 /* FastAddressBook.m in Sources */, 22AA8B0113D83F6300B30535 /* UICamSwitch.m in Sources */, 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */, - 34CA8539148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, 340751E7150F38FD00B89C47 /* UIVideoButton.m in Sources */, 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, D3F83EEC1582021700336684 /* InCallViewController.m in Sources */, @@ -2625,14 +2619,12 @@ 22D8F14F147548E2008C97DB /* UIHangUpButton.m in Sources */, 22D8F151147548E2008C97DB /* UIMicroButton.m in Sources */, 22D8F152147548E2008C97DB /* UISpeakerButton.m in Sources */, - 22D8F153147548E2008C97DB /* UIDuration.m in Sources */, 22D8F154147548E2008C97DB /* FirstLoginViewController.m in Sources */, 22D8F155147548E2008C97DB /* UIBluetoothButton.m in Sources */, 22D8F156147548E2008C97DB /* UIEraseButton.m in Sources */, 22D8F157147548E2008C97DB /* FastAddressBook.m in Sources */, 22D8F159147548E2008C97DB /* UICamSwitch.m in Sources */, 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */, - 34CA853A148F692A00503C01 /* MainScreenWithVideoPreview.m in Sources */, 340751E8150F38FD00B89C47 /* UIVideoButton.m in Sources */, 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */, D3F83EED1582021700336684 /* InCallViewController.m in Sources */, From 9f48dc0d9a397ce103ea5cc1567b9bc602f2f11a Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 3 Jul 2012 12:19:29 +0200 Subject: [PATCH 025/397] Rename resources images --- Classes/ChatViewController.h | 2 +- Classes/ChatViewController.m | 2 +- Classes/ChatViewController.xib | 57 +- Classes/ContactsViewController.xib | 45 +- Classes/DialerViewController.h | 6 +- Classes/DialerViewController.m | 36 +- Classes/DialerViewController.xib | 464 ++--- Classes/HistoryViewController.m | 2 +- Classes/HistoryViewController.xib | 57 +- Classes/InCallViewController.xib | 6 +- Classes/IncomingCallViewController.xib | 78 +- Classes/LinphoneUI/UICallBar.h | 4 +- Classes/LinphoneUI/UICallBar.m | 42 +- Classes/LinphoneUI/UICallBar.xib | 882 ++++----- Classes/LinphoneUI/UICallCell.h | 6 +- Classes/LinphoneUI/UICallCell.m | 21 +- Classes/LinphoneUI/UICallCell.xib | 198 +- Classes/LinphoneUI/UIHistoryCell.m | 7 +- Classes/LinphoneUI/UIHistoryCell.xib | 19 +- Classes/LinphoneUI/UIMainBar.xib | 115 +- Classes/LinphoneUI/UIStateBar.m | 16 +- Classes/LinphoneUI/UIStateBar.xib | 6 +- .../{LinphoneUI => Utils}/FastAddressBook.h | 0 .../{LinphoneUI => Utils}/FastAddressBook.m | 0 Resources/0-over.png | Bin 8319 -> 0 bytes Resources/1-over.png | Bin 6702 -> 0 bytes Resources/2-over.png | Bin 8058 -> 0 bytes Resources/3-over.png | Bin 8422 -> 0 bytes Resources/4-over.png | Bin 8055 -> 0 bytes Resources/5-over.png | Bin 7975 -> 0 bytes Resources/6-over.png | Bin 8932 -> 0 bytes Resources/7-over.png | Bin 7562 -> 0 bytes Resources/8-over.png | Bin 9272 -> 0 bytes Resources/9-over.png | Bin 8947 -> 0 bytes ...decrocher-actif.png => accept_default.png} | Bin .../{decrocher-over.png => accept_over.png} | Bin ..._more_default.png => add_call_default.png} | Bin ...more_disable.png => add_call_disabled.png} | Bin ...d_call_more_over.png => add_call_over.png} | Bin ...tact-actif.png => add_contact_default.png} | Bin ...t-inactif.png => add_contact_disabled.png} | Bin ...-contact-over.png => add_contact_over.png} | Bin ...bre-cotes-avatar.png => avatar_shadow.png} | Bin ...{avatar-inconnu.png => avatar_unknown.png} | Bin ...tar-small.png => avatar_unknown_small.png} | Bin Resources/back_default.png | Bin 0 -> 4632 bytes Resources/back_disabled.png | Bin 0 -> 4484 bytes Resources/back_over.png | Bin 0 -> 4664 bytes ...kspace-actif.png => backspace_default.png} | Bin ...ce-disabled.png => backspace_disabled.png} | Bin ...{backspace-over.png => backspace_over.png} | Bin .../{appeler-actif.png => call_default.png} | Bin ...appeler-disabled.png => call_disabled.png} | Bin Resources/{appeler-over.png => call_over.png} | Bin ...all-0.png => call_quality_indicator_0.png} | Bin ...all-1.png => call_quality_indicator_1.png} | Bin ...all-2.png => call_quality_indicator_2.png} | Bin ...all-3.png => call_quality_indicator_3.png} | Bin ...ctif.png => call_state_delete_default.png} | Bin ...nf-over.png => call_state_delete_over.png} | Bin ...if.png => call_state_outgoing_default.png} | Bin ...actif.png => call_state_pause_default.png} | Bin ...ero-over.png => call_state_pause_over.png} | Bin ...-actif.png => call_state_play_default.png} | Bin ...mero-over.png => call_state_play_over.png} | Bin ...tif.png => call_state_ringing_default.png} | Bin ...l-entrant.png => call_status_incoming.png} | Bin ...ppel-manque.png => call_status_missed.png} | Bin ...l-sortant.png => call_status_outgoing.png} | Bin .../{cancel-actif.png => cancel_default.png} | Bin .../{cancel-over.png => cancel_over.png} | Bin Resources/cancel_white_bg_default.png | Bin 5149 -> 0 bytes Resources/cancel_white_bg_disabled.png | Bin 4975 -> 0 bytes Resources/cancel_white_bg_over.png | Bin 5130 -> 0 bytes ...ourbe-autres-numeros.png => cell_call.png} | Bin Resources/cell_call_first.png | Bin 0 -> 4868 bytes ...rticipant-conf.png => cell_conference.png} | Bin .../champ-courbe-autres-numeros-first.png | Bin 2577 -> 0 bytes Resources/champ-titre-incoming.png | Bin 13492 -> 0 bytes ...cussion-actif.png => chat_add_default.png} | Bin ...-discussion-over.png => chat_add_over.png} | Bin .../{tchat-actif.png => chat_default.png} | Bin ...t-edit-actif.png => chat_edit_default.png} | Bin ...tchat-edit-over.png => chat_edit_over.png} | Bin Resources/{tchat-over.png => chat_over.png} | Bin ...chat-selectionne.png => chat_selected.png} | Bin ...rence-actif.png => conference_default.png} | Bin ...onference-over.png => conference_over.png} | Bin Resources/contact-actif-add-call.png | Bin 4396 -> 0 bytes Resources/contact-over-add-call.png | Bin 4596 -> 0 bytes ...ail-actif.png => contacts_add_default.png} | Bin ...-detail-over.png => contacts_add_over.png} | Bin ...cts-actif.png => contacts_all_default.png} | Bin ...ectionne.png => contacts_all_selected.png} | Bin ...ontacts-actif.png => contacts_default.png} | Bin ...ctif.png => contacts_linphone_default.png} | Bin ...nne.png => contacts_linphone_selected.png} | Bin .../{contacts-over.png => contacts_over.png} | Bin ...-selectionne.png => contacts_selected.png} | Bin ...{refuser-actif.png => decline_default.png} | Bin .../{refuser-over.png => decline_over.png} | Bin Resources/dialer-meteo-sortir-actif.png | Bin 5797 -> 0 bytes Resources/dialer-meteo-sortir-over.png | Bin 4243 -> 0 bytes ...mero.png => dialer_address_background.png} | Bin ...daire-actif.png => dialer_alt_default.png} | Bin ...econdaire-over.png => dialer_alt_over.png} | Bin .../{dialer-over.png => dialer_default.png} | Bin Resources/dialer_over.png | Bin 0 -> 16688 bytes .../{dialer-actif.png => dialer_selected.png} | Bin Resources/diese-over.png | Bin 8617 -> 0 bytes Resources/etoile-actif.png | Bin 4479 -> 0 bytes Resources/etoile-over.png | Bin 6148 -> 0 bytes Resources/finir-conference-actif.png | Bin 6850 -> 0 bytes Resources/finir-conference-over.png | Bin 4511 -> 0 bytes Resources/fond-detail-numero.png | Bin 3673 -> 0 bytes ...accrocher-actif.png => hangup_default.png} | Bin .../{raccrocher-over.png => hangup_over.png} | Bin ...e-conference.png => header_conference.png} | Bin Resources/header_incoming.png | Bin 0 -> 14028 bytes ...call-actif.png => history_all_default.png} | Bin ...lectionne.png => history_all_selected.png} | Bin ...{history-actif.png => history_default.png} | Bin ...ory-actif.png => history_edit_default.png} | Bin ...history-over.png => history_edit_over.png} | Bin ...d-actif.png => history_missed_default.png} | Bin ...tionne.png => history_missed_selected.png} | Bin ...story-actif.png => history_ok_default.png} | Bin ...t-history-over.png => history_ok_over.png} | Bin .../{history-over.png => history_over.png} | Bin ...y-selectionne.png => history_selected.png} | Bin Resources/icone-linphone-57.png | Bin 2450 -> 0 bytes Resources/icone-linphone-72.png | Bin 15015 -> 0 bytes ...status_connected.png => led_connected.png} | Bin ..._disconnected.png => led_disconnected.png} | Bin Resources/{status_error.png => led_error.png} | Bin ...atus_inprogress.png => led_inprogress.png} | Bin Resources/linphone_icon_57.png | Bin 0 -> 3155 bytes Resources/linphone_icon_72.png | Bin 0 -> 4085 bytes ...tory-actif.png => list_delete_default.png} | Bin ...-history-over.png => list_delete_over.png} | Bin ...act-actif.png => list_details_default.png} | Bin ...contact-over.png => list_details_over.png} | Bin ...ro-OFF-actif.png => micro_off_default.png} | Bin Resources/micro_off_disabled.png | Bin 0 -> 6858 bytes ...{micro-OFF-over.png => micro_off_over.png} | Bin ...icro-ON-actif.png => micro_on_default.png} | Bin Resources/micro_on_disabled.png | Bin 0 -> 5779 bytes .../{micro-ON-over.png => micro_on_over.png} | Bin ...fond-clavier.png => numpad_background.png} | Bin .../{8-actif.png => numpad_eight_default.png} | Bin Resources/numpad_eight_over.png | Bin 0 -> 8590 bytes .../{5-actif.png => numpad_five_default.png} | Bin Resources/numpad_five_over.png | Bin 0 -> 7532 bytes .../{4-actif.png => numpad_four_default.png} | Bin Resources/numpad_four_over.png | Bin 0 -> 7468 bytes .../{9-actif.png => numpad_nine_default.png} | Bin Resources/numpad_nine_over.png | Bin 0 -> 8276 bytes .../{1-actif.png => numpad_one_default.png} | Bin Resources/numpad_one_over.png | Bin 0 -> 6908 bytes .../{7-actif.png => numpad_seven_default.png} | Bin Resources/numpad_seven_over.png | Bin 0 -> 7393 bytes ...ese-actif.png => numpad_sharp_default.png} | Bin Resources/numpad_sharp_over.png | Bin 0 -> 7618 bytes .../{6-actif.png => numpad_six_default.png} | Bin Resources/numpad_six_over.png | Bin 0 -> 8298 bytes Resources/numpad_star_default.png | Bin 0 -> 4467 bytes Resources/numpad_star_over.png | Bin 0 -> 7712 bytes .../{3-actif.png => numpad_three_default.png} | Bin Resources/numpad_three_over.png | Bin 0 -> 7835 bytes .../{2-actif.png => numpad_two_default.png} | Bin Resources/numpad_two_over.png | Bin 0 -> 7729 bytes .../{0-actif.png => numpad_zero_default.png} | Bin Resources/numpad_zero_over.png | Bin 0 -> 8291 bytes Resources/options_default.png | Bin 7422 -> 7933 bytes Resources/options_disabled.png | Bin 7265 -> 7683 bytes Resources/options_over.png | Bin 7447 -> 7955 bytes ...{pause-actif.png => pause_off_default.png} | Bin .../{pause-over.png => pause_off_over.png} | Bin .../{play-actif.png => pause_on_default.png} | Bin .../{play-over.png => pause_on_over.png} | Bin Resources/registration_inprogress.png | Bin 664 -> 0 bytes .../{cadenas-barre.png => security_ko.png} | Bin Resources/{cadenas.png => security_ok.png} | Bin ...interrogation.png => security_pending.png} | Bin ...ettings-actif.png => settings_default.png} | Bin .../{settings-over.png => settings_over.png} | Bin ...-selectionne.png => settings_selected.png} | Bin ...-OFF-actif.png => speaker_off_default.png} | Bin Resources/speaker_off_disabled.png | Bin 0 -> 6889 bytes ...cker-OFF-over.png => speaker_off_over.png} | Bin ...er-ON-actif.png => speaker_on_default.png} | Bin Resources/speaker_on_disabled.png | Bin 0 -> 5547 bytes ...eacker-ON-over.png => speaker_on_over.png} | Bin ...-noire-top.png => statebar_background.png} | Bin Resources/switch_camera_default.png | Bin 6280 -> 4067 bytes Resources/switch_camera_over.png | Bin 6326 -> 4163 bytes ...eo-OFF-actif.png => video_off_default.png} | Bin ...FF-disabled.png => video_off_disabled.png} | Bin ...{video-OFF-over.png => video_off_over.png} | Bin ...ideo-ON-actif.png => video_on_default.png} | Bin ...-ON-disabled.png => video_on_disabled.png} | Bin .../{video-ON-over.png => video_on_over.png} | Bin linphone-Info.plist | 6 +- linphone.xcodeproj/project.pbxproj | 1750 ++++++++--------- 204 files changed, 1814 insertions(+), 2013 deletions(-) rename Classes/{LinphoneUI => Utils}/FastAddressBook.h (100%) rename Classes/{LinphoneUI => Utils}/FastAddressBook.m (100%) delete mode 100644 Resources/0-over.png delete mode 100644 Resources/1-over.png delete mode 100644 Resources/2-over.png delete mode 100644 Resources/3-over.png delete mode 100644 Resources/4-over.png delete mode 100644 Resources/5-over.png delete mode 100644 Resources/6-over.png delete mode 100644 Resources/7-over.png delete mode 100644 Resources/8-over.png delete mode 100644 Resources/9-over.png rename Resources/{decrocher-actif.png => accept_default.png} (100%) rename Resources/{decrocher-over.png => accept_over.png} (100%) rename Resources/{add_call_more_default.png => add_call_default.png} (100%) rename Resources/{add_call_more_disable.png => add_call_disabled.png} (100%) rename Resources/{add_call_more_over.png => add_call_over.png} (100%) rename Resources/{add-contact-actif.png => add_contact_default.png} (100%) rename Resources/{add-contact-inactif.png => add_contact_disabled.png} (100%) rename Resources/{add-contact-over.png => add_contact_over.png} (100%) rename Resources/{ombre-cotes-avatar.png => avatar_shadow.png} (100%) rename Resources/{avatar-inconnu.png => avatar_unknown.png} (100%) rename Resources/{avatar-small.png => avatar_unknown_small.png} (100%) create mode 100644 Resources/back_default.png create mode 100644 Resources/back_disabled.png create mode 100644 Resources/back_over.png rename Resources/{backspace-actif.png => backspace_default.png} (100%) rename Resources/{backspace-disabled.png => backspace_disabled.png} (100%) rename Resources/{backspace-over.png => backspace_over.png} (100%) rename Resources/{appeler-actif.png => call_default.png} (100%) rename Resources/{appeler-disabled.png => call_disabled.png} (100%) rename Resources/{appeler-over.png => call_over.png} (100%) rename Resources/{quality-call-0.png => call_quality_indicator_0.png} (100%) rename Resources/{quality-call-1.png => call_quality_indicator_1.png} (100%) rename Resources/{quality-call-2.png => call_quality_indicator_2.png} (100%) rename Resources/{quality-call-3.png => call_quality_indicator_3.png} (100%) rename Resources/{supprimer-participant-conf-actif.png => call_state_delete_default.png} (100%) rename Resources/{supprimer-participant-conf-over.png => call_state_delete_over.png} (100%) rename Resources/{outgoing-champ-numero-actif.png => call_state_outgoing_default.png} (100%) rename Resources/{pause-champ-numero-actif.png => call_state_pause_default.png} (100%) rename Resources/{pause-champ-numero-over.png => call_state_pause_over.png} (100%) rename Resources/{play-champ-numero-actif.png => call_state_play_default.png} (100%) rename Resources/{play-champ-numero-over.png => call_state_play_over.png} (100%) rename Resources/{ring-champ-numero-actif.png => call_state_ringing_default.png} (100%) rename Resources/{appel-entrant.png => call_status_incoming.png} (100%) rename Resources/{appel-manque.png => call_status_missed.png} (100%) rename Resources/{appel-sortant.png => call_status_outgoing.png} (100%) rename Resources/{cancel-actif.png => cancel_default.png} (100%) rename Resources/{cancel-over.png => cancel_over.png} (100%) delete mode 100644 Resources/cancel_white_bg_default.png delete mode 100644 Resources/cancel_white_bg_disabled.png delete mode 100644 Resources/cancel_white_bg_over.png rename Resources/{champ-courbe-autres-numeros.png => cell_call.png} (100%) create mode 100644 Resources/cell_call_first.png rename Resources/{champ-courbe-participant-conf.png => cell_conference.png} (100%) delete mode 100644 Resources/champ-courbe-autres-numeros-first.png delete mode 100644 Resources/champ-titre-incoming.png rename Resources/{tchat-new-discussion-actif.png => chat_add_default.png} (100%) rename Resources/{tchat-new-discussion-over.png => chat_add_over.png} (100%) rename Resources/{tchat-actif.png => chat_default.png} (100%) rename Resources/{tchat-edit-actif.png => chat_edit_default.png} (100%) rename Resources/{tchat-edit-over.png => chat_edit_over.png} (100%) rename Resources/{tchat-over.png => chat_over.png} (100%) rename Resources/{tchat-selectionne.png => chat_selected.png} (100%) rename Resources/{start-conference-actif.png => conference_default.png} (100%) rename Resources/{start-conference-over.png => conference_over.png} (100%) delete mode 100644 Resources/contact-actif-add-call.png delete mode 100644 Resources/contact-over-add-call.png rename Resources/{add-contact-depuis-detail-actif.png => contacts_add_default.png} (100%) rename Resources/{add-contact-depuis-detail-over.png => contacts_add_over.png} (100%) rename Resources/{all-contacts-actif.png => contacts_all_default.png} (100%) rename Resources/{all-contacts-selectionne.png => contacts_all_selected.png} (100%) rename Resources/{contacts-actif.png => contacts_default.png} (100%) rename Resources/{linphone-actif.png => contacts_linphone_default.png} (100%) rename Resources/{linphone-selectionne.png => contacts_linphone_selected.png} (100%) rename Resources/{contacts-over.png => contacts_over.png} (100%) rename Resources/{contacts-selectionne.png => contacts_selected.png} (100%) rename Resources/{refuser-actif.png => decline_default.png} (100%) rename Resources/{refuser-over.png => decline_over.png} (100%) delete mode 100644 Resources/dialer-meteo-sortir-actif.png delete mode 100644 Resources/dialer-meteo-sortir-over.png rename Resources/{champ-saisie-numero.png => dialer_address_background.png} (100%) rename Resources/{clavier-secondaire-actif.png => dialer_alt_default.png} (100%) rename Resources/{clavier-secondaire-over.png => dialer_alt_over.png} (100%) rename Resources/{dialer-over.png => dialer_default.png} (100%) create mode 100644 Resources/dialer_over.png rename Resources/{dialer-actif.png => dialer_selected.png} (100%) delete mode 100644 Resources/diese-over.png delete mode 100644 Resources/etoile-actif.png delete mode 100644 Resources/etoile-over.png delete mode 100644 Resources/finir-conference-actif.png delete mode 100644 Resources/finir-conference-over.png delete mode 100644 Resources/fond-detail-numero.png rename Resources/{raccrocher-actif.png => hangup_default.png} (100%) rename Resources/{raccrocher-over.png => hangup_over.png} (100%) rename Resources/{champ-titre-conference.png => header_conference.png} (100%) create mode 100644 Resources/header_incoming.png rename Resources/{all-call-actif.png => history_all_default.png} (100%) rename Resources/{all-call-selectionne.png => history_all_selected.png} (100%) rename Resources/{history-actif.png => history_default.png} (100%) rename Resources/{edit-history-actif.png => history_edit_default.png} (100%) rename Resources/{edit-history-over.png => history_edit_over.png} (100%) rename Resources/{missed-actif.png => history_missed_default.png} (100%) rename Resources/{missed-selectionne.png => history_missed_selected.png} (100%) rename Resources/{ok-edit-list-history-actif.png => history_ok_default.png} (100%) rename Resources/{ok-edit-list-history-over.png => history_ok_over.png} (100%) rename Resources/{history-over.png => history_over.png} (100%) rename Resources/{history-selectionne.png => history_selected.png} (100%) delete mode 100644 Resources/icone-linphone-57.png delete mode 100644 Resources/icone-linphone-72.png rename Resources/{status_connected.png => led_connected.png} (100%) rename Resources/{status_disconnected.png => led_disconnected.png} (100%) rename Resources/{status_error.png => led_error.png} (100%) rename Resources/{status_inprogress.png => led_inprogress.png} (100%) create mode 100644 Resources/linphone_icon_57.png create mode 100644 Resources/linphone_icon_72.png rename Resources/{croix-supprimer-ligne-liste-history-actif.png => list_delete_default.png} (100%) rename Resources/{croix-supprimer-ligne-liste-history-over.png => list_delete_over.png} (100%) rename Resources/{bouton-detail-contact-actif.png => list_details_default.png} (100%) rename Resources/{bouton-detail-contact-over.png => list_details_over.png} (100%) rename Resources/{micro-OFF-actif.png => micro_off_default.png} (100%) create mode 100644 Resources/micro_off_disabled.png rename Resources/{micro-OFF-over.png => micro_off_over.png} (100%) rename Resources/{micro-ON-actif.png => micro_on_default.png} (100%) create mode 100644 Resources/micro_on_disabled.png rename Resources/{micro-ON-over.png => micro_on_over.png} (100%) rename Resources/{fond-clavier.png => numpad_background.png} (100%) rename Resources/{8-actif.png => numpad_eight_default.png} (100%) create mode 100644 Resources/numpad_eight_over.png rename Resources/{5-actif.png => numpad_five_default.png} (100%) create mode 100644 Resources/numpad_five_over.png rename Resources/{4-actif.png => numpad_four_default.png} (100%) create mode 100644 Resources/numpad_four_over.png rename Resources/{9-actif.png => numpad_nine_default.png} (100%) create mode 100644 Resources/numpad_nine_over.png rename Resources/{1-actif.png => numpad_one_default.png} (100%) create mode 100644 Resources/numpad_one_over.png rename Resources/{7-actif.png => numpad_seven_default.png} (100%) create mode 100644 Resources/numpad_seven_over.png rename Resources/{diese-actif.png => numpad_sharp_default.png} (100%) create mode 100644 Resources/numpad_sharp_over.png rename Resources/{6-actif.png => numpad_six_default.png} (100%) create mode 100644 Resources/numpad_six_over.png create mode 100644 Resources/numpad_star_default.png create mode 100644 Resources/numpad_star_over.png rename Resources/{3-actif.png => numpad_three_default.png} (100%) create mode 100644 Resources/numpad_three_over.png rename Resources/{2-actif.png => numpad_two_default.png} (100%) create mode 100644 Resources/numpad_two_over.png rename Resources/{0-actif.png => numpad_zero_default.png} (100%) create mode 100644 Resources/numpad_zero_over.png rename Resources/{pause-actif.png => pause_off_default.png} (100%) rename Resources/{pause-over.png => pause_off_over.png} (100%) rename Resources/{play-actif.png => pause_on_default.png} (100%) rename Resources/{play-over.png => pause_on_over.png} (100%) delete mode 100644 Resources/registration_inprogress.png rename Resources/{cadenas-barre.png => security_ko.png} (100%) rename Resources/{cadenas.png => security_ok.png} (100%) rename Resources/{cadenas-interrogation.png => security_pending.png} (100%) rename Resources/{settings-actif.png => settings_default.png} (100%) rename Resources/{settings-over.png => settings_over.png} (100%) rename Resources/{settings-selectionne.png => settings_selected.png} (100%) rename Resources/{speacker-OFF-actif.png => speaker_off_default.png} (100%) create mode 100644 Resources/speaker_off_disabled.png rename Resources/{speacker-OFF-over.png => speaker_off_over.png} (100%) rename Resources/{speacker-ON-actif.png => speaker_on_default.png} (100%) create mode 100644 Resources/speaker_on_disabled.png rename Resources/{speacker-ON-over.png => speaker_on_over.png} (100%) rename Resources/{barre-noire-top.png => statebar_background.png} (100%) rename Resources/{video-OFF-actif.png => video_off_default.png} (100%) rename Resources/{video-OFF-disabled.png => video_off_disabled.png} (100%) rename Resources/{video-OFF-over.png => video_off_over.png} (100%) rename Resources/{video-ON-actif.png => video_on_default.png} (100%) rename Resources/{video-ON-disabled.png => video_on_disabled.png} (100%) rename Resources/{video-ON-over.png => video_on_over.png} (100%) diff --git a/Classes/ChatViewController.h b/Classes/ChatViewController.h index 3b30aa446..a6df7bda6 100644 --- a/Classes/ChatViewController.h +++ b/Classes/ChatViewController.h @@ -27,7 +27,7 @@ @property (nonatomic, retain) IBOutlet ChatTableViewController* tableController; -- (IBAction)onNew:(id) event; +- (IBAction)onAdd:(id) event; - (IBAction)onEdit:(id) event; @end diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index dd8f609d1..5f52c3bd7 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -27,7 +27,7 @@ return [super initWithNibName:@"ChatViewController" bundle:[NSBundle mainBundle]]; } -- (IBAction)onNew: (id) event { +- (IBAction)onAdd: (id) event { } diff --git a/Classes/ChatViewController.xib b/Classes/ChatViewController.xib index e3944cd49..3145cd267 100644 --- a/Classes/ChatViewController.xib +++ b/Classes/ChatViewController.xib @@ -61,18 +61,18 @@ 3 MC41AA - + NSImage - tchat-new-discussion-over.png + chat_add_over.png + + + NSImage + chat_add_default.png NSImage all-call-selectionne.png - - NSImage - tchat-new-discussion-actif.png - 2 15 @@ -100,18 +100,18 @@ 0 NO - + NSImage - tchat-edit-over.png + chat_edit_over.png + + + NSImage + chat_edit_default.png NSImage missed-selectionne.png - - NSImage - tchat-edit-actif.png - @@ -136,6 +136,7 @@ {{0, 58}, {320, 402}} + _NS:9 3 @@ -232,12 +233,12 @@ - onNew: + onAdd: 7 - 15 + 19 @@ -294,13 +295,13 @@ 9 - edit + editButton 10 - new + addButton @@ -310,20 +311,20 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + ChatTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + - 18 + 19 @@ -339,16 +340,16 @@ ChatViewController UIViewController + id id - id - - onEdit: + + onAdd: id - - onNew: + + onEdit: id @@ -380,11 +381,11 @@ 3 {213, 117} + {320, 117} + {320, 117} + {320, 117} + {320, 117} {213, 117} - {320, 117} - {320, 117} - {320, 117} - {320, 117} 1181 diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index 05961c8d6..d95d9e6ab 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -61,13 +61,13 @@ 3 MC41AA - + NSImage - all-contacts-selectionne.png + contacts_all_selected.png - + NSImage - all-contacts-actif.png + contacts_all_default.png 2 @@ -96,13 +96,13 @@ 0 NO - + NSImage - linphone-selectionne.png + contacts_linphone_selected.png - + NSImage - linphone-actif.png + contacts_linphone_default.png @@ -124,13 +124,13 @@ 0 NO - + NSImage - add-contact-depuis-detail-over.png + contacts_add_over.png - + NSImage - add-contact-depuis-detail-actif.png + contacts_add_default.png @@ -156,6 +156,7 @@ {{0, 58}, {320, 402}} + _NS:10 3 @@ -331,19 +332,19 @@ 4 - all + allButton 5 - linphone + linphoneButton 6 - addContact + addButton 69 @@ -370,7 +371,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -450,12 +451,12 @@ YES 3 - {214, 117} - {214, 117} - {213, 117} - {213, 117} - {213, 117} - {213, 117} + {214, 117} + {214, 117} + {213, 117} + {213, 117} + {213, 117} + {213, 117} 1181 diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index 6db7ae801..e5436109a 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -46,7 +46,7 @@ UIDigitButton* nineButton; UIDigitButton* starButton; UIDigitButton* zeroButton; - UIDigitButton* hashButton; + UIDigitButton* sharpButton; } - (void)setAddress:(NSString*) address; @@ -69,10 +69,10 @@ @property (nonatomic, retain) IBOutlet UIButton* nineButton; @property (nonatomic, retain) IBOutlet UIButton* starButton; @property (nonatomic, retain) IBOutlet UIButton* zeroButton; -@property (nonatomic, retain) IBOutlet UIButton* hashButton; +@property (nonatomic, retain) IBOutlet UIButton* sharpButton; - (IBAction)onAddContactClick: (id) event; -- (IBAction)onCancelClick: (id) event; +- (IBAction)onBackClick: (id) event; - (IBAction)onAddCallClick: (id) event; - (IBAction)onAddressChange: (id)sender; diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 302f98355..5c2f9269e 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -48,7 +48,7 @@ @synthesize nineButton; @synthesize starButton; @synthesize zeroButton; -@synthesize hashButton; +@synthesize sharpButton; #pragma mark - Lifecycle Functions @@ -75,7 +75,7 @@ [nineButton release]; [starButton release]; [zeroButton release]; - [hashButton release]; + [sharpButton release]; [[NSNotificationCenter defaultCenter] removeObserver:self]; @@ -93,21 +93,21 @@ - (void)viewDidLoad { [super viewDidLoad]; - [zeroButton initWithNumber:'0' addressField:addressField dtmf:false]; - [oneButton initWithNumber:'1' addressField:addressField dtmf:false]; - [twoButton initWithNumber:'2' addressField:addressField dtmf:false]; - [threeButton initWithNumber:'3' addressField:addressField dtmf:false]; - [fourButton initWithNumber:'4' addressField:addressField dtmf:false]; - [fiveButton initWithNumber:'5' addressField:addressField dtmf:false]; - [sixButton initWithNumber:'6' addressField:addressField dtmf:false]; - [sevenButton initWithNumber:'7' addressField:addressField dtmf:false]; - [eightButton initWithNumber:'8' addressField:addressField dtmf:false]; - [nineButton initWithNumber:'9' addressField:addressField dtmf:false]; - [starButton initWithNumber:'*' addressField:addressField dtmf:false]; - [hashButton initWithNumber:'#' addressField:addressField dtmf:false]; - [callButton initWithAddress:addressField]; - [addCallButton initWithAddress:addressField]; - [eraseButton initWithAddressField:addressField]; + [zeroButton initWithNumber:'0' addressField:addressField dtmf:false]; + [oneButton initWithNumber:'1' addressField:addressField dtmf:false]; + [twoButton initWithNumber:'2' addressField:addressField dtmf:false]; + [threeButton initWithNumber:'3' addressField:addressField dtmf:false]; + [fourButton initWithNumber:'4' addressField:addressField dtmf:false]; + [fiveButton initWithNumber:'5' addressField:addressField dtmf:false]; + [sixButton initWithNumber:'6' addressField:addressField dtmf:false]; + [sevenButton initWithNumber:'7' addressField:addressField dtmf:false]; + [eightButton initWithNumber:'8' addressField:addressField dtmf:false]; + [nineButton initWithNumber:'9' addressField:addressField dtmf:false]; + [starButton initWithNumber:'*' addressField:addressField dtmf:false]; + [sharpButton initWithNumber:'#' addressField:addressField dtmf:false]; + [callButton initWithAddress:addressField]; + [addCallButton initWithAddress:addressField]; + [eraseButton initWithAddressField:addressField]; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; @@ -166,7 +166,7 @@ } -- (IBAction)onCancelClick: (id) event { +- (IBAction)onBackClick: (id) event { [[LinphoneManager instance] changeView:PhoneView_InCall]; } diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index 26df9878a..371cd5d74 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -61,7 +61,7 @@ IBCocoaTouchFramework NSImage - fond-clavier.png + numpad_background.png @@ -80,25 +80,17 @@ IBCocoaTouchFramework 0 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - 3 MC41AA - + NSImage - 1-over.png + numpad_one_over.png - + NSImage - 1-actif.png + numpad_one_default.png Helvetica-Bold @@ -124,19 +116,14 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 2-over.png + numpad_two_over.png - + NSImage - 2-actif.png + numpad_two_default.png @@ -153,15 +140,14 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 3-actif.png + numpad_three_over.png + + + NSImage + numpad_three_default.png @@ -178,19 +164,14 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 4-over.png + numpad_four_over.png - + NSImage - 4-actif.png + numpad_four_default.png @@ -207,19 +188,14 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 5-over.png + numpad_five_over.png - + NSImage - 5-actif.png + numpad_five_default.png @@ -236,19 +212,14 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 6-over.png + numpad_six_over.png - + NSImage - 6-actif.png + numpad_six_default.png @@ -265,19 +236,14 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 7-over.png + numpad_seven_over.png - + NSImage - 7-actif.png + numpad_seven_default.png @@ -294,19 +260,14 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 8-over.png + numpad_eight_over.png - + NSImage - 8-actif.png + numpad_eight_default.png @@ -323,19 +284,14 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 9-over.png + numpad_nine_over.png - + NSImage - 9-actif.png + numpad_nine_default.png @@ -352,19 +308,14 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - etoile-over.png + numpad_star_over.png - + NSImage - etoile-actif.png + numpad_star_default.png @@ -381,19 +332,14 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 0-over.png + numpad_zero_over.png - + NSImage - 0-actif.png + numpad_zero_default.png @@ -410,19 +356,14 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - diese-over.png + numpad_sharp_over.png - + NSImage - diese-actif.png + numpad_sharp_default.png @@ -459,7 +400,7 @@ IBCocoaTouchFramework NSImage - champ-saisie-numero.png + dialer_address_background.png @@ -479,7 +420,10 @@ 0 sip: - + + 3 + MQA + YES 15 @@ -534,17 +478,17 @@ NO NO - + NSImage - add-contact-over.png + add_contact_over.png - + NSImage - add-contact-inactif.png + add_contact_disabled.png - + NSImage - add-contact-actif.png + add_contact_default.png 2 @@ -567,18 +511,18 @@ NO NO - + NSImage - cancel_white_bg_over.png + back_over.png + + + NSImage + back_default.png NSImage cancel_white_bg_disabled.png - - NSImage - cancel_white_bg_default.png - @@ -598,17 +542,17 @@ NO NO - + NSImage - appeler-over.png + call_over.png - + NSImage - appeler-disabled.png + call_disabled.png - + NSImage - appeler-actif.png + call_default.png @@ -629,17 +573,17 @@ NO NO - + NSImage - add_call_more_over.png + add_call_over.png - + NSImage - add_call_more_disable.png + add_call_disabled.png - + NSImage - add_call_more_default.png + add_call_default.png @@ -650,6 +594,7 @@ {{214, 0}, {106, 69}} + _NS:9 NO IBCocoaTouchFramework @@ -658,23 +603,18 @@ 0 NO NO - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + NSImage - backspace-over.png + backspace_over.png - + NSImage - backspace-disabled.png + backspace_disabled.png - + NSImage - backspace-actif.png + backspace_default.png @@ -796,14 +736,6 @@ 200 - - - hashButton - - - - 201 - eraseButton @@ -860,6 +792,14 @@ 231 + + + sharpButton + + + + 232 + delegate @@ -879,12 +819,12 @@ - onCancelClick: + onBackClick: 7 - 229 + 233 @@ -978,8 +918,8 @@ - + pad @@ -1080,7 +1020,7 @@ 183 - cancelButton + backButton 185 @@ -1137,6 +1077,7 @@ 224.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 29.CustomClassName 29.IBPluginDependency + 29.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 30.CustomClassName 30.IBPluginDependency 30.IBUIButtonInspectorSelectedStateConfigurationMetadataKey @@ -1186,55 +1127,56 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIEraseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICallButton + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIAddressTextField com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + @@ -1249,7 +1191,7 @@ - 231 + 233 @@ -1264,7 +1206,7 @@ onAddCallClick: onAddContactClick: onAddressChange: - onCancelClick: + onBackClick: YES @@ -1281,7 +1223,7 @@ onAddCallClick: onAddContactClick: onAddressChange: - onCancelClick: + onBackClick: YES @@ -1298,7 +1240,7 @@ id - onCancelClick: + onBackClick: id @@ -1316,10 +1258,10 @@ eraseButton fiveButton fourButton - hashButton nineButton oneButton sevenButton + sharpButton sixButton starButton threeButton @@ -1361,10 +1303,10 @@ eraseButton fiveButton fourButton - hashButton nineButton oneButton sevenButton + sharpButton sixButton starButton threeButton @@ -1409,10 +1351,6 @@ fourButton UIButton - - hashButton - UIButton - nineButton UIButton @@ -1425,6 +1363,10 @@ sevenButton UIButton + + sharpButton + UIButton + sixButton UIButton @@ -1514,74 +1456,50 @@ YES YES - 0-actif.png - 0-over.png - 1-actif.png - 1-over.png - 2-actif.png - 2-over.png - 3-actif.png - 4-actif.png - 4-over.png - 5-actif.png - 5-over.png - 6-actif.png - 6-over.png - 7-actif.png - 7-over.png - 8-actif.png - 8-over.png - 9-actif.png - 9-over.png - add-contact-actif.png - add-contact-inactif.png - add-contact-over.png - add_call_more_default.png - add_call_more_disable.png - add_call_more_over.png - appeler-actif.png - appeler-disabled.png - appeler-over.png - backspace-actif.png - backspace-disabled.png - backspace-over.png - cancel_white_bg_default.png + add_call_default.png + add_call_disabled.png + add_call_over.png + add_contact_default.png + add_contact_disabled.png + add_contact_over.png + back_default.png + back_over.png + backspace_default.png + backspace_disabled.png + backspace_over.png + call_default.png + call_disabled.png + call_over.png cancel_white_bg_disabled.png - cancel_white_bg_over.png - champ-saisie-numero.png - diese-actif.png - diese-over.png - etoile-actif.png - etoile-over.png - fond-clavier.png + dialer_address_background.png + numpad_background.png + numpad_eight_default.png + numpad_eight_over.png + numpad_five_default.png + numpad_five_over.png + numpad_four_default.png + numpad_four_over.png + numpad_nine_default.png + numpad_nine_over.png + numpad_one_default.png + numpad_one_over.png + numpad_seven_default.png + numpad_seven_over.png + numpad_sharp_default.png + numpad_sharp_over.png + numpad_six_default.png + numpad_six_over.png + numpad_star_default.png + numpad_star_over.png + numpad_three_default.png + numpad_three_over.png + numpad_two_default.png + numpad_two_over.png + numpad_zero_default.png + numpad_zero_over.png YES - {220, 113} - {220, 113} - {210, 113} - {210, 113} - {220, 113} - {220, 113} - {210, 113} - {210, 113} - {210, 113} - {220, 113} - {220, 113} - {210, 113} - {210, 113} - {210, 113} - {210, 113} - {220, 113} - {220, 113} - {210, 113} - {210, 113} - {213, 138} - {213, 138} - {213, 138} - {214, 138} - {214, 138} - {214, 138} {214, 138} {214, 138} {214, 138} @@ -1591,12 +1509,38 @@ {213, 138} {213, 138} {213, 138} + {213, 138} + {213, 138} + {214, 138} + {214, 138} + {214, 138} + {213, 138} {640, 135} - {210, 113} - {210, 113} - {210, 113} - {210, 113} {640, 523} + {220, 113} + {220, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {220, 113} + {220, 113} 1181 diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index afad71699..3d49390fa 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -67,7 +67,7 @@ typedef enum _HistoryView { [self changeView: History_All]; // Set selected+over background: IB lack ! - [editButton setBackgroundImage:[UIImage imageNamed:@"ok-edit-list-history-over.png"] + [editButton setImage:[UIImage imageNamed:@"history_ok_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; } diff --git a/Classes/HistoryViewController.xib b/Classes/HistoryViewController.xib index 9c6feaeb1..b08c9fb4d 100644 --- a/Classes/HistoryViewController.xib +++ b/Classes/HistoryViewController.xib @@ -61,13 +61,13 @@ 3 MC41AA - + NSImage - all-call-selectionne.png + history_all_selected.png - + NSImage - all-call-actif.png + history_all_default.png 2 @@ -96,13 +96,13 @@ 0 NO - + NSImage - missed-selectionne.png + history_missed_selected.png - + NSImage - missed-actif.png + history_missed_default.png @@ -124,17 +124,17 @@ 0 NO - + NSImage - edit-history-over.png + history_edit_over.png - + NSImage - ok-edit-list-history-actif.png + history_ok_default.png - + NSImage - edit-history-actif.png + history_edit_default.png @@ -160,6 +160,7 @@ {{0, 58}, {320, 402}} + _NS:9 3 @@ -348,19 +349,19 @@ 4 - all + allButton 5 - missed + missedButton 6 - edit + editButton 17 @@ -388,9 +389,9 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -435,7 +436,7 @@ UIButton - UIButton + UIToggleButton UIButton HistoryTableViewController UITableView @@ -447,7 +448,7 @@ editButton - UIButton + UIToggleButton missedButton @@ -486,13 +487,13 @@ YES 3 - {213, 117} - {213, 117} - {214, 117} - {214, 117} - {213, 117} - {213, 117} - {214, 117} + {213, 117} + {213, 117} + {214, 117} + {214, 117} + {213, 117} + {213, 117} + {214, 117} 1181 diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 26a28d6a4..48ce96c59 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -131,7 +131,7 @@ -2147483356 - {84, 61} + {85, 33} _NS:9 @@ -558,8 +558,8 @@ YES - {167, 122} - {167, 122} + {170, 65} + {170, 65} 1181 diff --git a/Classes/IncomingCallViewController.xib b/Classes/IncomingCallViewController.xib index dbd4b76ca..69ca84bb3 100644 --- a/Classes/IncomingCallViewController.xib +++ b/Classes/IncomingCallViewController.xib @@ -4520,7 +4520,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework NSImage - ombre-cotes-avatar.png + avatar_shadow.png @@ -4535,7 +4535,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework NSImage - avatar-inconnu.png + avatar_unknown.png @@ -4554,7 +4554,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE -2147483356 - {{0, 9}, {320, 67}} + {{0, 10}, {320, 67}} @@ -4585,22 +4585,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework 0 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + NSImage - decrocher-over.png + accept_over.png - + NSImage - decrocher-actif.png + accept_default.png @@ -4611,6 +4603,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {{160, 0}, {160, 77}} + _NS:9 NO @@ -4619,19 +4612,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + NSImage - refuser-over.png + decline_over.png - + NSImage - refuser-actif.png + decline_default.png @@ -4751,19 +4739,13 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 7 - accept + acceptButton 6 - decline - - - 5 - - - mask + declineButton 8 @@ -4807,6 +4789,12 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE avatarImage + + 5 + + + mask + @@ -4823,9 +4811,9 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -4839,7 +4827,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IncomingCallViewController - UIViewController + UIModalViewController id id @@ -4873,6 +4861,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE ./Classes/IncomingCallViewController.h + + UIModalViewController + UIViewController + + IBProjectSource + ./Classes/UIModalViewController.h + + 0 @@ -4884,14 +4880,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE YES 3 - {320, 339} + {320, 154} + {320, 154} + {16, 16} + {320, 339} {640, 125} {640, 135} - {320, 154} - {320, 154} - {640, 523} - {320, 154} - {320, 154} + {320, 154} + {320, 154} 1181 diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index 564722771..6bc9c0f1b 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -48,7 +48,7 @@ UIDigitButton* nineButton; UIDigitButton* starButton; UIDigitButton* zeroButton; - UIDigitButton* hashButton; + UIDigitButton* sharpButton; } @property (nonatomic, retain) IBOutlet UIPauseButton* pauseButton; @@ -71,7 +71,7 @@ @property (nonatomic, retain) IBOutlet UIButton* nineButton; @property (nonatomic, retain) IBOutlet UIButton* starButton; @property (nonatomic, retain) IBOutlet UIButton* zeroButton; -@property (nonatomic, retain) IBOutlet UIButton* hashButton; +@property (nonatomic, retain) IBOutlet UIButton* sharpButton; - (IBAction)onOptionsClick:(id)sender; - (IBAction)onConferenceClick:(id)sender; diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 4ce0132b2..2efde062e 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -48,7 +48,7 @@ @synthesize nineButton; @synthesize starButton; @synthesize zeroButton; -@synthesize hashButton; +@synthesize sharpButton; #pragma mark - Lifecycle Functions @@ -65,6 +65,19 @@ [speakerButton release]; [optionsButton release]; + [oneButton release]; + [twoButton release]; + [threeButton release]; + [fourButton release]; + [fiveButton release]; + [sixButton release]; + [sevenButton release]; + [eightButton release]; + [nineButton release]; + [starButton release]; + [zeroButton release]; + [sharpButton release]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; @@ -87,13 +100,34 @@ [eightButton initWithNumber:'8' addressField:nil dtmf:true]; [nineButton initWithNumber:'9' addressField:nil dtmf:true]; [starButton initWithNumber:'*' addressField:nil dtmf:true]; - [hashButton initWithNumber:'#' addressField:nil dtmf:true]; + [sharpButton initWithNumber:'#' addressField:nil dtmf:true]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; - // Set selected+over background: IB lack ! - [videoButton setBackgroundImage:[UIImage imageNamed:@"video-ON-disabled.png"] + // Set selected+disabled background: IB lack ! + [videoButton setImage:[UIImage imageNamed:@"video_on_disabled.png"] forState:(UIControlStateDisabled | UIControlStateSelected)]; + // Set selected+over background: IB lack ! + [videoButton setImage:[UIImage imageNamed:@"video_on_over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+disabled background: IB lack ! + [speakerButton setImage:[UIImage imageNamed:@"speaker_on_disabled.png"] + forState:(UIControlStateDisabled | UIControlStateSelected)]; + // Set selected+over background: IB lack ! + [speakerButton setImage:[UIImage imageNamed:@"speaker_on_over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+disabled background: IB lack ! + [microButton setImage:[UIImage imageNamed:@"micro_on_disabled.png"] + forState:(UIControlStateDisabled | UIControlStateSelected)]; + // Set selected+over background: IB lack ! + [microButton setImage:[UIImage imageNamed:@"micro_on_over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+over background: IB lack ! + [pauseButton setImage:[UIImage imageNamed:@"pause_on_over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; } - (void)viewDidUnload { diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index f2aea4760..5773c1431 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -42,7 +42,6 @@ {{0, 335}, {320, 125}} - _NS:9 1 @@ -59,13 +58,13 @@ -2147483360 - + 292 - {{-20, 20}, {107, 54}} + {{-20, 10}, {107, 54}} - + 1 MC40MDAwMDAwMSAxIDEgMAA @@ -75,25 +74,17 @@ IBCocoaTouchFramework 0 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - 3 MC41AA - + NSImage - 1-over.png + numpad_one_over.png - + NSImage - 1-actif.png + numpad_one_default.png Helvetica-Bold @@ -101,302 +92,256 @@ 2 15 - + Helvetica-Bold 15 16 - + 292 - {{87, 20}, {106, 54}} + {{87, 10}, {106, 54}} - + NO NO IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 2-over.png + numpad_two_over.png - + NSImage - 2-actif.png + numpad_two_default.png - + - + 292 - {{193, 20}, {107, 54}} + {{193, 10}, {107, 54}} - + NO NO IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 3-actif.png + numpad_three_over.png + + + NSImage + numpad_three_default.png - + - + 292 - {{-20, 82}, {107, 54}} + {{-20, 72}, {107, 54}} - + NO NO IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 4-over.png + numpad_four_over.png - + NSImage - 4-actif.png + numpad_four_default.png - + - + 292 - {{87, 82}, {106, 54}} + {{87, 72}, {106, 54}} - + NO NO IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 5-over.png + numpad_five_over.png - + NSImage - 5-actif.png + numpad_five_default.png - + - + 292 - {{193, 82}, {107, 54}} + {{193, 72}, {107, 54}} - + NO NO IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 6-over.png + numpad_six_over.png - + NSImage - 6-actif.png + numpad_six_default.png - + - + 292 - {{-20, 144}, {107, 54}} + {{-20, 134}, {107, 54}} - + NO NO IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 7-over.png + numpad_seven_over.png - + NSImage - 7-actif.png + numpad_seven_default.png - + - + 292 - {{87, 144}, {106, 54}} + {{87, 134}, {106, 54}} - + NO NO IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 8-over.png + numpad_eight_over.png - + NSImage - 8-actif.png + numpad_eight_default.png - + - + 292 - {{193, 144}, {107, 54}} + {{193, 134}, {107, 54}} - + NO NO IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 9-over.png + numpad_nine_over.png - + NSImage - 9-actif.png + numpad_nine_default.png - + - + 292 - {{-20, 206}, {107, 54}} + {{-20, 196}, {107, 54}} - + NO NO IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - etoile-over.png + numpad_star_over.png - + NSImage - etoile-actif.png + numpad_star_default.png - + - + 292 - {{87, 206}, {106, 54}} + {{87, 196}, {106, 54}} - + NO NO IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - 0-over.png + numpad_zero_over.png - + NSImage - 0-actif.png + numpad_zero_default.png - + - + 292 - {{193, 206}, {107, 54}} + {{193, 196}, {107, 54}} @@ -405,28 +350,23 @@ IBCocoaTouchFramework 0 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - + NSImage - diese-over.png + numpad_sharp_over.png - + NSImage - diese-actif.png + numpad_sharp_default.png - + {{20, 57}, {281, 260}} - + _NS:9 3 @@ -459,32 +399,32 @@ NO NO - + NSImage - video-ON-over.png + video_off_over.png - + NSImage - video-OFF-disabled.png + video_off_disabled.png - + NSImage - video-ON-actif.png + video_on_default.png - + NSImage - video-OFF-actif.png + video_off_default.png 2 15 - + -2147483356 - {{20, 18}, {37, 37}} + {{20, 20}, {37, 37}} @@ -510,20 +450,24 @@ 0 NO - + NSImage - micro-ON-over.png + micro_off_over.png - + NSImage - micro-ON-actif.png + micro_off_disabled.png - + NSImage - micro-OFF-actif.png + micro_on_default.png + + + NSImage + micro_off_default.png - + @@ -542,20 +486,24 @@ 0 NO - + NSImage - speacker-ON-over.png + speaker_off_over.png - + NSImage - speacker-ON-actif.png + speaker_off_disabled.png - + NSImage - speacker-OFF-actif.png + speaker_on_default.png + + + NSImage + speaker_off_default.png - + @@ -574,20 +522,16 @@ 0 NO - + NSImage options_over.png - - NSImage - add-call-over.png - - + NSImage options_default.png - + @@ -606,20 +550,20 @@ 0 NO - + NSImage - pause-over.png + pause_off_over.png - + NSImage - play-actif.png + pause_on_default.png - + NSImage - pause-actif.png + pause_off_default.png - + @@ -639,16 +583,16 @@ NO NO - + NSImage - start-conference-over.png + conference_over.png - + NSImage - start-conference-actif.png + conference_default.png - + @@ -667,16 +611,16 @@ 0 NO - + NSImage - raccrocher-over.png + hangup_over.png - + NSImage - raccrocher-actif.png + hangup_default.png - + @@ -695,17 +639,16 @@ 0 NO - + NSImage - clavier-secondaire-over.png + dialer_alt_over.png - + NSImage - clavier-secondaire-actif.png + dialer_alt_default.png - - + {{0, 325}, {320, 135}} @@ -806,99 +749,99 @@ - zeroButton + eightButton - + - 47 - - - - twoButton - - - - 48 - - - - threeButton - - - - 49 - - - - starButton - - - - 50 - - - - sixButton - - - - 51 - - - - sevenButton - - - - 52 - - - - oneButton - - - - 53 - - - - nineButton - - - - 54 - - - - hashButton - - - - 55 - - - - fourButton - - - - 56 + 75 fiveButton - + - 57 + 76 - eightButton + fourButton - + - 58 + 77 + + + + nineButton + + + + 78 + + + + oneButton + + + + 79 + + + + sevenButton + + + + 80 + + + + sharpButton + + + + 81 + + + + sixButton + + + + 82 + + + + starButton + + + + 83 + + + + threeButton + + + + 84 + + + + twoButton + + + + 85 + + + + zeroButton + + + + 86 @@ -1042,100 +985,100 @@ 31 - - - - - - - - - - - - + + + + + + + + + + + + pad - - 43 - - - 1 - - - 42 - - - 2 - - - 41 - - - 3 - - - 40 - - - 5 - - - 39 - - - 4 - - - 38 - - - 7 - - - 37 - - - 8 - - - 36 - - - 9 - - - 35 - - - # - - - 34 - - - 0 - - - 33 - - - * - - - 32 - - - 6 - 59 waitView + + 73 + + + 1 + + + 72 + + + 2 + + + 71 + + + 3 + + + 69 + + + 4 + + + 70 + + + 5 + + + 63 + + + 6 + + + 68 + + + 7 + + + 67 + + + 8 + + + 66 + + + 9 + + + 62 + + + * + + + 64 + + + 0 + + + 65 + + + # + @@ -1144,73 +1087,74 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIMicroButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIPassView com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIHangUpButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIPauseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + - 60 + 86 @@ -1242,7 +1186,6 @@ UIButton UIButton UIHangUpButton - UIButton UIMicroButton UIButton UIButton @@ -1250,6 +1193,7 @@ UIView UIPauseButton UIButton + UIButton UIButton UISpeakerButton UIButton @@ -1279,10 +1223,6 @@ hangupButton UIHangUpButton - - hashButton - UIButton - microButton UIMicroButton @@ -1311,6 +1251,10 @@ sevenButton UIButton + + sharpButton + UIButton + sixButton UIButton @@ -1439,51 +1383,53 @@ YES 3 - {220, 113} - {220, 113} - {210, 113} - {210, 113} - {220, 113} - {220, 113} - {210, 113} - {210, 113} - {210, 113} - {220, 113} - {220, 113} - {210, 113} - {210, 113} - {210, 113} - {210, 113} - {220, 113} - {220, 113} - {210, 113} - {210, 113} - {16, 16} - {209, 136} - {209, 136} - {210, 113} - {210, 113} - {210, 113} - {210, 113} - {160, 134} - {160, 134} - {160, 134} + {209, 136} + {209, 136} + {209, 136} + {209, 136} + {222, 136} + {222, 136} + {160, 134} + {160, 134} + {160, 134} + {160, 134} + {220, 113} + {220, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {220, 113} + {220, 113} {160, 134} {160, 134} - {209, 136} - {209, 136} - {209, 136} - {222, 136} - {222, 136} - {160, 134} - {160, 134} - {160, 134} - {209, 136} - {209, 136} - {160, 134} - {160, 134} - {160, 134} - {160, 134} + {209, 136} + {209, 136} + {209, 136} + {160, 134} + {160, 134} + {160, 134} + {160, 134} + {160, 134} + {160, 134} + {160, 134} + {160, 134} 1181 diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h index ae278cff5..dbc77ae4c 100644 --- a/Classes/LinphoneUI/UICallCell.h +++ b/Classes/LinphoneUI/UICallCell.h @@ -37,8 +37,7 @@ BOOL firstCell; BOOL conferenceCall; - UIView *firstBackground; - UIView *otherBackground; + UIImageView* headerBackgroundImage; UILabel *addressLabel; UILabel *stateLabel; @@ -55,8 +54,7 @@ @property (weak) UICallCellData *data; -@property (nonatomic, retain) IBOutlet UIView* firstBackground; -@property (nonatomic, retain) IBOutlet UIView* otherBackground; +@property (nonatomic, retain) IBOutlet UIImageView* headerBackgroundImage; @property (nonatomic, retain) IBOutlet UILabel* addressLabel; @property (nonatomic, retain) IBOutlet UILabel* stateLabel; diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 200cf0066..628bab0eb 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -37,8 +37,7 @@ @synthesize data; -@synthesize firstBackground; -@synthesize otherBackground; +@synthesize headerBackgroundImage; @synthesize addressLabel; @synthesize stateLabel; @@ -66,15 +65,14 @@ [self addSubview:[[arrayOfViews objectAtIndex:0] retain]]; } // Set selected+over background: IB lack ! - [pauseButton setImage:[UIImage imageNamed:@"pause-champ-numero-over.png"] + [pauseButton setImage:[UIImage imageNamed:@"call_state_pause_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; } return self; } - (void)dealloc { - [firstBackground release]; - [otherBackground release]; + [headerBackgroundImage release]; [addressLabel release]; [stateLabel release]; [stateImage release]; @@ -135,11 +133,11 @@ if(!conferenceCall) { if(state == LinphoneCallOutgoingRinging) { - [stateImage setImage:[UIImage imageNamed:@"ring-champ-numero-actif"]]; + [stateImage setImage:[UIImage imageNamed:@"call_state_ringing_default.png"]]; [stateImage setHidden:false]; [pauseButton setHidden:true]; } else if(state == LinphoneCallOutgoingInit || state == LinphoneCallOutgoingProgress){ - [stateImage setImage:[UIImage imageNamed:@"outgoing-champ-numero-actif"]]; + [stateImage setImage:[UIImage imageNamed:@"call_state_outgoing_default.png"]]; [stateImage setHidden:false]; [pauseButton setHidden:true]; } else { @@ -148,10 +146,16 @@ [pauseButton update]; } [removeButton setHidden:true]; + if(firstCell) { + [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_call_first.png"]]; + } else { + [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_call.png"]]; + } } else { [stateImage setHidden:true]; [pauseButton setHidden:true]; [removeButton setHidden:false]; + [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_conference.png"]]; } NSMutableString* msDuration = [[NSMutableString alloc] init]; @@ -173,9 +177,6 @@ } } [pauseButton setType:UIPauseButtonType_Call call:call]; - - [firstBackground setHidden:!firstCell]; - [otherBackground setHidden:firstCell]; } - (void)selfUpdate { diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib index 1c1d7f2f6..b58251e3f 100644 --- a/Classes/LinphoneUI/UICallCell.xib +++ b/Classes/LinphoneUI/UICallCell.xib @@ -92,7 +92,7 @@ IBCocoaTouchFramework NSImage - ombre-cotes-avatar.png + avatar_shadow.png @@ -108,7 +108,7 @@ IBCocoaTouchFramework NSImage - avatar-inconnu.png + avatar_unknown.png @@ -126,47 +126,20 @@ 292 - + 292 {320, 63} - + _NS:9 - + NO IBCocoaTouchFramework - 0 - 0 - NO - - + NSImage - champ-courbe-autres-numeros.png + cell_call_first.png - - - - - - -2147483356 - {320, 63} - - - - _NS:9 - - IBCocoaTouchFramework - 0 - 0 - NO - - - NSImage - champ-courbe-autres-numeros-first.png - - - @@ -174,7 +147,7 @@ {{10, 0}, {206, 51}} - + _NS:9 NO NO @@ -4598,6 +4571,36 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework + + -2147483356 + {{216, 6}, {41, 41}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + 8 + 8 + 8 + 8 + + + NSImage + call_state_delete_over.png + + + NSImage + call_state_delete_default.png + + + + + -2147483356 {{216, 6}, {41, 41}} @@ -4618,45 +4621,15 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE NSImage - supprimer-participant-conf-over.png - - - NSImage - supprimer-participant-conf-actif.png - - - - - - - -2147483356 - {{216, 6}, {41, 41}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - NO - NO - 8 - 8 - 8 - 8 - - - NSImage - play-champ-numero-over.png + call_state_play_over.png NSImage - pause-champ-numero-actif.png + call_state_pause_default.png NSImage - play-champ-numero-actif.png + call_state_play_default.png @@ -4696,6 +4669,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {{0, 5}, {200, 40}} + _NS:9 NO IBCocoaTouchFramework @@ -4711,7 +4685,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 63} - + _NS:9 NO @@ -4750,22 +4724,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 34 - - - otherBackground - - - - 27 - - - - firstBackground - - - - 26 - addressLabel @@ -4830,6 +4788,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 50 + + + headerBackgroundImage + + + + 54 + doHeaderClick: @@ -4901,27 +4867,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - - + headerView - - 14 - - - otherBackground - - - 20 - - - firstBackground - 17 @@ -4975,6 +4928,12 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE toggleButton + + 52 + + + headerBackgroundImage + @@ -4982,14 +4941,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -5000,16 +4955,17 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIPauseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIPauseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 51 + 54 @@ -5034,9 +4990,8 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE UILabel UIImageView UIView - UIView + UIImageView UIView - UIView UIPauseButton UIButton UIImageView @@ -5055,18 +5010,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE avatarView UIView - - firstBackground - UIView + + headerBackgroundImage + UIImageView headerView UIView - - otherBackground - UIView - pauseButton UIPauseButton @@ -5116,15 +5067,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE YES 3 - {320, 339} - {640, 125} - {640, 125} - {640, 523} - {43, 50} - {43, 46} - {43, 46} - {43, 43} - {43, 43} + {640, 523} + {320, 339} + {43, 43} + {43, 43} + {43, 50} + {43, 46} + {43, 46} + {640, 125} 1181 diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index f9692c9e0..248431b35 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -82,14 +82,13 @@ UIImage *image; if (aCallLog->dir == LinphoneCallIncoming) { if (aCallLog->status == LinphoneCallSuccess) { - image = [UIImage imageNamed:aCallLog->video_enabled?@"appel-entrant.png":@"appel-entrant.png"]; + image = [UIImage imageNamed:@"call_status_incoming.png"]; } else { - //missed call - image = [UIImage imageNamed:@"appel-manque.png"]; + image = [UIImage imageNamed:@"call_status_missed.png"]; } partyToDisplay = aCallLog->from; } else { - image = [UIImage imageNamed:aCallLog->video_enabled?@"appel-sortant.png":@"appel-sortant.png"]; + image = [UIImage imageNamed:@"call_status_outgoing.png"]; partyToDisplay = aCallLog->to; } diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index e826247f7..d6b863fc9 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -107,11 +107,11 @@ NSImage - bouton-detail-contact-over.png + list_details_over.png NSImage - bouton-detail-contact-actif.png + list_details_default.png 2 @@ -129,6 +129,7 @@ {{276, 0}, {44, 44}} + _NS:9 NO IBCocoaTouchFramework @@ -142,11 +143,11 @@ NSImage - croix-supprimer-ligne-liste-history-over.png + list_delete_over.png NSImage - croix-supprimer-ligne-liste-history-actif.png + list_delete_default.png @@ -284,7 +285,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -356,10 +357,10 @@ YES 3 - {45, 45} - {45, 45} - {45, 45} - {45, 45} + {45, 45} + {45, 45} + {45, 45} + {45, 45} 1181 diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib index c42a61920..fa4fa09b3 100644 --- a/Classes/LinphoneUI/UIMainBar.xib +++ b/Classes/LinphoneUI/UIMainBar.xib @@ -70,29 +70,21 @@ 0 0 NO - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - 3 MC41AA - + NSImage - history-over.png + history_over.png - + NSImage - history-selectionne.png + history_selected.png - + NSImage - history-actif.png + history_default.png 2 @@ -120,23 +112,18 @@ 0 0 NO - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + NSImage - contacts-over.png + contacts_over.png - + NSImage - contacts-selectionne.png + contacts_selected.png - + NSImage - contacts-actif.png + contacts_default.png @@ -157,23 +144,18 @@ 0 0 NO - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + NSImage - settings-over.png + settings_over.png - + NSImage - settings-selectionne.png + settings_selected.png - + NSImage - settings-actif.png + settings_default.png @@ -195,13 +177,17 @@ 0 NO - + NSImage - dialer-actif.png + dialer_over.png - + NSImage - dialer-over.png + dialer_selected.png + + + NSImage + dialer_default.png @@ -212,6 +198,7 @@ {{256, 0}, {64, 77}} + _NS:9 NO @@ -221,23 +208,18 @@ 0 0 NO - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - + NSImage - tchat-over.png + chat_over.png - + NSImage - tchat-selectionne.png + chat_selected.png - + NSImage - tchat-actif.png + chat_default.png @@ -437,7 +419,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -528,20 +510,21 @@ YES 3 - {128, 154} - {128, 154} - {128, 154} - {128, 154} - {128, 154} - {128, 154} - {128, 154} - {128, 154} - {128, 154} - {128, 154} - {128, 154} - {128, 154} - {128, 154} - {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} + {128, 154} 1181 diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index dd5724bf6..8df168b19 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -121,19 +121,19 @@ NSTimer *callQualityTimer; break; case LinphoneRegistrationFailed: registrationStateImage.hidden = NO; - image = [UIImage imageNamed:@"status_error.png"]; + image = [UIImage imageNamed:@"led_error.png"]; break; case LinphoneRegistrationNone: registrationStateImage.hidden = NO; - image =[UIImage imageNamed:@"status_disconnected.png"]; + image =[UIImage imageNamed:@"led_disconnected.png"]; break; case LinphoneRegistrationProgress: registrationStateImage.hidden = NO; - image = [UIImage imageNamed:@"status_inprogress.png"]; + image = [UIImage imageNamed:@"led_inprogress.png"]; break; case LinphoneRegistrationOk: registrationStateImage.hidden = NO; - image = [UIImage imageNamed:@"status_connected.png"]; + image = [UIImage imageNamed:@"led_connected.png"]; break; } [registrationStateLabel setText:message]; @@ -150,13 +150,13 @@ NSTimer *callQualityTimer; if(call != NULL) { float quality = linphone_call_get_average_quality(call); if(quality < 1) { - image = [UIImage imageNamed:@"quality-call-0.png"]; + image = [UIImage imageNamed:@"call_quality_indicator_0.png"]; } else if (quality < 2) { - image = [UIImage imageNamed:@"quality-call-1.png"]; + image = [UIImage imageNamed:@"call_quality_indicator_1.png"]; } else if (quality < 3) { - image = [UIImage imageNamed:@"quality-call-2.png"]; + image = [UIImage imageNamed:@"call_quality_indicator_2.png"]; } else { - image = [UIImage imageNamed:@"quality-call-3.png"]; + image = [UIImage imageNamed:@"call_quality_indicator_3.png"]; } } } diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib index d692bb7d8..7ef29c7d7 100644 --- a/Classes/LinphoneUI/UIStateBar.xib +++ b/Classes/LinphoneUI/UIStateBar.xib @@ -48,7 +48,7 @@ IBCocoaTouchFramework NSImage - barre-noire-top.png + statebar_background.png @@ -208,7 +208,7 @@ 13 - callQualityImage + callQualityIndicatorImage @@ -269,7 +269,7 @@ YES 3 - {640, 46} + {640, 46} {18, 17} 1181 diff --git a/Classes/LinphoneUI/FastAddressBook.h b/Classes/Utils/FastAddressBook.h similarity index 100% rename from Classes/LinphoneUI/FastAddressBook.h rename to Classes/Utils/FastAddressBook.h diff --git a/Classes/LinphoneUI/FastAddressBook.m b/Classes/Utils/FastAddressBook.m similarity index 100% rename from Classes/LinphoneUI/FastAddressBook.m rename to Classes/Utils/FastAddressBook.m diff --git a/Resources/0-over.png b/Resources/0-over.png deleted file mode 100644 index 9431f0fbd683fe2e2ec9af7c6af4f13126be21d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8319 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 AGynhq diff --git a/Resources/2-over.png b/Resources/2-over.png deleted file mode 100644 index c7c462bdcae812d727f66dde4327df9d20b541f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8058 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 KT$PM@=>Gw3Z>yyM diff --git a/Resources/3-over.png b/Resources/3-over.png deleted file mode 100644 index ab5aa87d54e854f8cd3b80a3ae937867e92dd69b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8422 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 CC}Z9L diff --git a/Resources/4-over.png b/Resources/4-over.png deleted file mode 100644 index 1ac846c18cfe328dafda59336dc0a9393acea78d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8055 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 diff --git a/Resources/5-over.png b/Resources/5-over.png deleted file mode 100644 index ea9ffcc1536cafa4bebc923c14cbf4e108478ea0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7975 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 diff --git a/Resources/6-over.png b/Resources/6-over.png deleted file mode 100644 index 3184169473f279c4c4a31ede5c33982052dc334f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8932 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 diff --git a/Resources/8-over.png b/Resources/8-over.png deleted file mode 100644 index 7dddf83e9a1fa3e8fdd2dc18bc97a0d44a949dde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9272 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�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 fNE^g#aPA2fyT; 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 literal 0 HcmV?d00001 diff --git a/Resources/back_over.png b/Resources/back_over.png new file mode 100644 index 0000000000000000000000000000000000000000..d06321994f0b6901f1d5e507ffbdc665a4b5e72f GIT binary patch literal 4664 zcmbVQX*iVa+aGI4M2jV58d+n^V8+gj8N=AKg$iS4VzP{8CL~!yV_!lkA-il1DiX4! zjk1^Zp(i3svP|}O^gR9F_e013!+RgceO=di-RJr{f9IE*Ze?L~fKQwc0011o8l$aQ zdq3-q;o$}V*i5qZ)mefV&Cr2nL%vA!$5Ds?B!TQk1Y*5$?nG-Mj&SwzYoZPSz;Tge z>p*ibH`BtCy}`IW9dLlRFUuML(9sX@#o;}PG@u*No#dknT71?70+I;2ptCS@h`BF{ z=s_|Lq!4WaEo||Do_I|HNM8@A6QIR%;7z3AfC1iKK2)s$UC=MTTCDTlwK53!ONHjC z3;HK12XiYRicBE_VPJ?79s-8|;ZQJCRZU%8T@k1PfkKoaD#}n5C8)ZVs)`l_0{r&@ zv7%837qzU>n15rjBwdgPjpnPRtnBaa5B66DlPT`XP)$wEJs&D6N-PZ}>Qx^aE?G{@mdK6~<#>duNLVK@l`Yo zkuVqrsb=s`-5N+Z8e<4ig`nV2C`<(g`q!55|G`X|m5lNpIsOk>eqXT|xOe;y^;yDy zhKK0GnivXeG?YSBcL4wa4=fsK8!+V7u)WeB!p$8OjVNnIpmIRcZ<>Ef@_dkP+}-N@ zzB0d$HW7h1AaKj!X1|K{i)Zi0Lw}yWt|)aB0{tMw@AB4RXJ^~=@zh(kdRHg^R^p`M z=JK?l!!*)=>92UpWs*f@FWR$ zRELU*%4*JIeqg9*F0A(S!NuGHLk-VMR!Rp-%exW6R;^oXAw znc8%jXN59F=`s%s8;|2m?3K({!*3@!68ifrQ|GW11@fgO*zy7+&)M$GOdx;<7;t3y zn8(aR!R)1e(;V6uPZ@%#%Fl*atv_@alHIiH`jZ8Z{E&db5*tvDpT9vrq6;6v1%dM0 zKxQB1ay#s>N(3HtiDwXgZmz0EjJ-UKYVu*bCTA=eX?c3{^@(Z_*H(~k>IBm9aLnzE z(rVXC`!&_zjTL%f`}U|Dm9eUztc`8#7;C(4x*RyS&A{?!`&SqUrJf78@mMKw`h9k9 zZFq3`at z2e%f-Lww^xc2{GIF9&(Gvi0%AA)$u>e4&d?!KsHtrSL(YdkRcjD~q;Sv@N;X zS6qbAh0V&hD6NKxOEvsm+1mWB^KH)aIgM3a!^L_LwU1YohWNS)Be!YsB}F!~qIz?~ zHwT=z)M>h0=fD7t^FuQHKjN#SD~f!g#PYr$sZWPioi0}W@Wv-)&^(FndwF&9KA!Ry z&0JvT2IJw|fdeVnGpsf}q?3HXEcD*UI zV3@iHX4uaq+1*2(U2hI`rEqa%)XJ_df1e*-$-3Z{S^KBror97n6bQ?vMDfs3xfYHZ*Jr^$3V`JdyFi<&io0D z`+BZWLmSKO;|cdS)HAoDZWcv-F0JprEv^6nh9(sm(Yaoknle@6*fZHb(3Eu;##s*@ z^hk)wF_a+)IKo9#VgI9jI_?MBf->2WZK+NOmXB2rSq|{hU%xHtm$%No| z*=h)YTbnpH8fVo!wu-YAV5)XY<{s|ZAsq0~ex7Dweh2@y^CNtRXjxfV z)Z)vS2_B4;ry2wE!h;Zx8ITi=FFS*{(yTH>krW3UwvX+X{P;PBJX#E~48n39uVFj+sa!ouN zPw?a5Xo?t5qUYm894kfEpbg`X`76b1)7-6e^!l2U63YaKGgKQK`z&t_otu!ctUf#zh`NbHLV_NZ0FLRDN@x0`Q`s03HdE62Rv4HQS*%{!Cb+%M%slU}j& zG>_FqsU3;Byro&4HdQqR_KA!|KMRW4IB1AXcLidEFkA*`Xg%Ty`3M1RfJPtWTStCn zKPr?ay@LFTaRHg=8@C+JN!@SZyOIK0%*k)m;GJ=%rcw6v zJNtDxJ9y(wiE-b|TWPlIqGYq zMOeG@Fh^|Z$%{uq%b^tnM06O4o-=jmTF+6ApW2gcr~0{7Z|g!W=IMxe?&4bnNJyKs z9YtpIyuzqi_{S6CG3+PkT1+WH^S|x(DV%^Bsbp}Ya6*?LqDNhnLr2a`n=GUO9~M4v zvANRPWBqpIO@;2!99V16rC5XXbnlqR`>%rI*cZQ!Db%Iaoeh`R??O^C&@;?`|LS0( zVvp>~bvNd@sY^2z;heh3+oB1R=;Di@6HF`8Phh#Osss5^wTv`lz-Y#HeLch{Y7*+dX>-&wDSmA8i z&{nBw)iee_6XIPvcN@mkzsbvK`N)&ccF|6jYpCf}f+KU~;m_nJPhlKyuGHLUQNc!x zF~a#Sxd>G*U1IMG@;0NItR>A8U`rAY|6*>|ZO`0^s85(TnYnjW=r2ue1#2yLKR-CH zUUuR+tE_1C(<)@#=jmHr?hsL5o3)VqHcbvWXT;LT;kLO3Gt??fK8w0k3NqC4q>M*t zYy6!nDWdSDx^Z-$yr<3O7Amn~yx2Gnlb6g{IrxxXTgiOoxBjl=={>U!<;!B{e0(Y% z2Np21!9~8!`b@*hJma~vu2Eq!JQbp$QC#BX_I1iJ^Q%YN@oL6|?pdg#;!$sSjbKn9 zO6q_*q2uF1qs*u^hscscxxKK?iA0&@<=2fCKb)y=5}+4KWUmM3&f*_^@)`=6Z4Rxr z-FdRwWxDj5<5K#lkL>Yh0lhzP&j&&K-D1=gR!PX5)Tg2AU)lzOwDYjrBom$vvQ(7TMvtZJe-g3=yB9u#%2_e&rH7njWDM{Sl;=E0{r)xr2>~W)fcHgR>%hoGjTU>e} zMnBtUee>C?lI!cW_LTv%RmOt))DgKl;2OR6ZZh{vdF;}Btxx0d8 zqz+6^-CrKRAT#JS0xJ1*Ru#$HEE135wF48r&rJ*KIOgSV=*Kt*o!dGFSHT@EsjNIZ zUeu$Vv{6`8l>ElMJ7}NG5#f?Ni#x6t*-}u&iqR)UUb*ABPC4SdWNekvE?mpV3 z@S0u_be_Zb3lODd-Wrnmy{&jOD5Y@Rp6zrM;LNiQRf8Ft-F(ud;IWb2 z_twkw6>|FzPV&I9KHDV7kNclw!!CTeuQ`72$GkBYT^hC+D6eHFn;KGU?0+TlU0i(q zf`kpjJ~pJ+eo4Q|ZvGlZ;ZkXuba|Bn-`Khnwm)PtDQ=fC))P=?*>vg?)63$GQ|tcX z%HWmNRiV<9xL1Pigul?W1yB{AM$`|5hjuqY+j{%@^6hswHaFWv1fr7_uy`Pjik+fz59zmp-8af|9m~*l2ShMwq@uH_GM3Mki nBA_Fo^D~mm0M~5Wq0f@l9S_p6`Fh9p{^ei|EzlJPuHpX!+ln?S literal 0 HcmV?d00001 diff --git a/Resources/backspace-actif.png b/Resources/backspace_default.png similarity index 100% rename from Resources/backspace-actif.png rename to Resources/backspace_default.png diff --git a/Resources/backspace-disabled.png b/Resources/backspace_disabled.png similarity index 100% rename from Resources/backspace-disabled.png rename to Resources/backspace_disabled.png diff --git a/Resources/backspace-over.png b/Resources/backspace_over.png similarity index 100% rename from Resources/backspace-over.png rename to Resources/backspace_over.png diff --git a/Resources/appeler-actif.png b/Resources/call_default.png similarity index 100% rename from Resources/appeler-actif.png rename to Resources/call_default.png diff --git a/Resources/appeler-disabled.png b/Resources/call_disabled.png similarity index 100% rename from Resources/appeler-disabled.png rename to Resources/call_disabled.png diff --git a/Resources/appeler-over.png b/Resources/call_over.png similarity index 100% rename from Resources/appeler-over.png rename to Resources/call_over.png diff --git a/Resources/quality-call-0.png b/Resources/call_quality_indicator_0.png similarity index 100% rename from Resources/quality-call-0.png rename to Resources/call_quality_indicator_0.png diff --git a/Resources/quality-call-1.png b/Resources/call_quality_indicator_1.png similarity index 100% rename from Resources/quality-call-1.png rename to Resources/call_quality_indicator_1.png diff --git a/Resources/quality-call-2.png b/Resources/call_quality_indicator_2.png similarity index 100% rename from Resources/quality-call-2.png rename to Resources/call_quality_indicator_2.png diff --git a/Resources/quality-call-3.png b/Resources/call_quality_indicator_3.png similarity index 100% rename from Resources/quality-call-3.png rename to Resources/call_quality_indicator_3.png diff --git a/Resources/supprimer-participant-conf-actif.png b/Resources/call_state_delete_default.png similarity index 100% rename from Resources/supprimer-participant-conf-actif.png rename to Resources/call_state_delete_default.png diff --git a/Resources/supprimer-participant-conf-over.png b/Resources/call_state_delete_over.png similarity index 100% rename from Resources/supprimer-participant-conf-over.png rename to Resources/call_state_delete_over.png diff --git a/Resources/outgoing-champ-numero-actif.png b/Resources/call_state_outgoing_default.png similarity index 100% rename from Resources/outgoing-champ-numero-actif.png rename to Resources/call_state_outgoing_default.png diff --git a/Resources/pause-champ-numero-actif.png b/Resources/call_state_pause_default.png similarity index 100% rename from Resources/pause-champ-numero-actif.png rename to Resources/call_state_pause_default.png diff --git a/Resources/pause-champ-numero-over.png b/Resources/call_state_pause_over.png similarity index 100% rename from Resources/pause-champ-numero-over.png rename to Resources/call_state_pause_over.png diff --git a/Resources/play-champ-numero-actif.png b/Resources/call_state_play_default.png similarity index 100% rename from Resources/play-champ-numero-actif.png rename to Resources/call_state_play_default.png diff --git a/Resources/play-champ-numero-over.png b/Resources/call_state_play_over.png similarity index 100% rename from Resources/play-champ-numero-over.png rename to Resources/call_state_play_over.png diff --git a/Resources/ring-champ-numero-actif.png b/Resources/call_state_ringing_default.png similarity index 100% rename from Resources/ring-champ-numero-actif.png rename to Resources/call_state_ringing_default.png diff --git a/Resources/appel-entrant.png b/Resources/call_status_incoming.png similarity index 100% rename from Resources/appel-entrant.png rename to Resources/call_status_incoming.png diff --git a/Resources/appel-manque.png b/Resources/call_status_missed.png similarity index 100% rename from Resources/appel-manque.png rename to Resources/call_status_missed.png diff --git a/Resources/appel-sortant.png b/Resources/call_status_outgoing.png similarity index 100% rename from Resources/appel-sortant.png rename to Resources/call_status_outgoing.png diff --git a/Resources/cancel-actif.png b/Resources/cancel_default.png similarity index 100% rename from Resources/cancel-actif.png rename to Resources/cancel_default.png diff --git a/Resources/cancel-over.png b/Resources/cancel_over.png similarity index 100% rename from Resources/cancel-over.png rename to Resources/cancel_over.png diff --git a/Resources/cancel_white_bg_default.png b/Resources/cancel_white_bg_default.png deleted file mode 100644 index b68fb8744ff7e27165a30e9e671151f64492073f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5149 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 diff --git a/Resources/cancel_white_bg_over.png b/Resources/cancel_white_bg_over.png deleted file mode 100644 index 7b045d22217eca62e9db81cb1b4ead8d92afa4ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5130 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 GkNgiNa9W@M literal 0 HcmV?d00001 diff --git a/Resources/champ-courbe-participant-conf.png b/Resources/cell_conference.png similarity index 100% rename from Resources/champ-courbe-participant-conf.png rename to Resources/cell_conference.png diff --git a/Resources/champ-courbe-autres-numeros-first.png b/Resources/champ-courbe-autres-numeros-first.png deleted file mode 100644 index c4b177df906b9711996fbac611f543902893dac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2577 zcmZvddpuNmAIE>gxQ)wFatkARl3g*PL3&);VU{T?MG;1nOH6AXQ5cLo#vsbJtUF7& z<`!l&V{%WHp-9xYvqn2cjY}?t=gdC)diIZf&Ut;#`JUhF{663J_wzch*GY16#L6Pn z5C8yK`|mK$0Em#GI$Ba3x*qo$Vna7^9~>3~_Jn5GMYm(Xhk_86NBx8Lz6h(BC)QI(k97?0u^6uqypvwc0$4d0J? zSwof*`Q3k2dQ0p(CuZ`wxMOy*M%Pm)WXc3u0kb$hhs@_p4mg(a!%yaCub#4Ru*eVe zkMv*8pNgIe9eCK&8llsZUgGXMUa9?D}#w zLiI!KnOG!lf6ORTL12TyY(Li%@h+$ZlAz7pq|96+sWufykiJ-AXhb2I3G4k;tIgA~8~qXFX5JKgt9s2YDe7lcSeT zpH+V>mZcng5AIzdvNo8jybsfQdqJfWN6f_lTRg zI4C+Qv=PzzODPpeC@DB7DhC1kP{7))k^Gmpu!qtEw>AK}#jLl!f_A$@bwZ#b)bZD1 z5y?MU`$fdT(YpvCnZBqfa8fw{k#t-VwnP0vZ6vMo_fiPa_t-uXaI8mBC~9SHKzq-13N zObX$v1P%6oLPL}YH>vQ1Aq!g;q253oe@sG#K2f3ChU)&8IKo#0nrl|12oCLX2k=Z! zmq+E5+x=D-FNR@q2JC%Uvmv2sd~f-uZ0??|c~6l>-p($^rg6AA78=GT=yr6aw#$RW zN!RsWdJ?sqcf{Gb9sjIk<=2i=uk%7>#G}d>o=j8oy9=~bH2sdABpIa<=81I}$*Oa; zt$Z#~UTPjQ8lbc&t7hQrpjSD({FQPGXNezeIm2N2p7u|p5qjWn(BkoNx+*YvgKx_D ziH#*wIG1EbO%I%LveLm;CYfY>*)5`+H=xZ`xhzn>8_40(qP08_nUZ9ELI6(B_Qbw{ zN=EYa!(D;+0rwcge+B1nm1(1OR+ddPZ8)^nWXTUPy5-JIN_wt?d$~i`lP_6(zSmt% zz1eAO13mtYUKE+wLH=SJD}GX#%EXFso!Y`(z; zW9Rw%D`hz5bdK)CaM|9@)z!fdEzwhG{7EbPPZHZ}q4ZjO^!%&+-}*TOo_KV#gFnPp zBsMg9=Q!uQBZf7~TDoVe%cjS-Pp0=NX2J?0x7`MJ_a!tlEKdeCxV@KXxgN}GBs+a_ zoF6mCspMX$j@(0XZdsD{3ZuNDQOIYzUGyB?XVI$}zBM&fm62O#elhNDqON%aa)>Au z%<|c;x1UKLUStQh&K^C5AfGw6r(cJhxBG^O^GJx&^)V^`tvYXxmCoVMkKaf$zfB+@)_N(qpQkr4;#Z zKkQ9!D?balMmT(K(jl<%c(&cQ3mu8QG2Qi6%SLpwAwTUVGW_iNzl5+*-8^wF2WsGLymCrzX-x>wJMdJaVJ*rqXC zx0olunbB3loyFdt6AWD*_6&MjbtIg?-5G2sD3m&8EKByJRwd5;&ZrOn z`Ada-CykfxL|5(1t}Y~fDNMB@Jgb;M0O{H6CT=bk`Ps*mB5-$*AS~7}E@3?!Ef|;4 zWmae+O1;*skC+7gxk_NQL2R$n>oxdlrbP=0s#DX47FKPxH+@I=HPjMwD!!J`>>DJtP z8f9-PDc->=cnLB(APxG*>)Ku)$o8^0av04D8DmqPnaiZneGvQIw-e|YM(gw&aeUU` z#t};A!mlG(Kh+h+HAl2|u?B^iPiR=96DGT=RZ`__gN=m@cfsm3ALM?h9*GmXAd*Y;zO@8Dq6-ng``_ nshbt|B|x1bLx1Dl!;sC`cS@Ue3MsKs06Oe#9Wgbhz3==7b~}Q` diff --git a/Resources/champ-titre-incoming.png b/Resources/champ-titre-incoming.png deleted file mode 100644 index 205064389172550cbd4a7afef8f7169425ec6ca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13492 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 diff --git a/Resources/tchat-new-discussion-actif.png b/Resources/chat_add_default.png similarity index 100% rename from Resources/tchat-new-discussion-actif.png rename to Resources/chat_add_default.png diff --git a/Resources/tchat-new-discussion-over.png b/Resources/chat_add_over.png similarity index 100% rename from Resources/tchat-new-discussion-over.png rename to Resources/chat_add_over.png diff --git a/Resources/tchat-actif.png b/Resources/chat_default.png similarity index 100% rename from Resources/tchat-actif.png rename to Resources/chat_default.png diff --git a/Resources/tchat-edit-actif.png b/Resources/chat_edit_default.png similarity index 100% rename from Resources/tchat-edit-actif.png rename to Resources/chat_edit_default.png diff --git a/Resources/tchat-edit-over.png b/Resources/chat_edit_over.png similarity index 100% rename from Resources/tchat-edit-over.png rename to Resources/chat_edit_over.png diff --git a/Resources/tchat-over.png b/Resources/chat_over.png similarity index 100% rename from Resources/tchat-over.png rename to Resources/chat_over.png diff --git a/Resources/tchat-selectionne.png b/Resources/chat_selected.png similarity index 100% rename from Resources/tchat-selectionne.png rename to Resources/chat_selected.png diff --git a/Resources/start-conference-actif.png b/Resources/conference_default.png similarity index 100% rename from Resources/start-conference-actif.png rename to Resources/conference_default.png diff --git a/Resources/start-conference-over.png b/Resources/conference_over.png similarity index 100% rename from Resources/start-conference-over.png rename to Resources/conference_over.png diff --git a/Resources/contact-actif-add-call.png b/Resources/contact-actif-add-call.png deleted file mode 100644 index 566556be6df4f0f2b6aad9ab5699d6fc91cb62b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4396 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 diff --git a/Resources/add-contact-depuis-detail-actif.png b/Resources/contacts_add_default.png similarity index 100% rename from Resources/add-contact-depuis-detail-actif.png rename to Resources/contacts_add_default.png diff --git a/Resources/add-contact-depuis-detail-over.png b/Resources/contacts_add_over.png similarity index 100% rename from Resources/add-contact-depuis-detail-over.png rename to Resources/contacts_add_over.png diff --git a/Resources/all-contacts-actif.png b/Resources/contacts_all_default.png similarity index 100% rename from Resources/all-contacts-actif.png rename to Resources/contacts_all_default.png diff --git a/Resources/all-contacts-selectionne.png b/Resources/contacts_all_selected.png similarity index 100% rename from Resources/all-contacts-selectionne.png rename to Resources/contacts_all_selected.png diff --git a/Resources/contacts-actif.png b/Resources/contacts_default.png similarity index 100% rename from Resources/contacts-actif.png rename to Resources/contacts_default.png diff --git a/Resources/linphone-actif.png b/Resources/contacts_linphone_default.png similarity index 100% rename from Resources/linphone-actif.png rename to Resources/contacts_linphone_default.png diff --git a/Resources/linphone-selectionne.png b/Resources/contacts_linphone_selected.png similarity index 100% rename from Resources/linphone-selectionne.png rename to Resources/contacts_linphone_selected.png diff --git a/Resources/contacts-over.png b/Resources/contacts_over.png similarity index 100% rename from Resources/contacts-over.png rename to Resources/contacts_over.png diff --git a/Resources/contacts-selectionne.png b/Resources/contacts_selected.png similarity index 100% rename from Resources/contacts-selectionne.png rename to Resources/contacts_selected.png diff --git a/Resources/refuser-actif.png b/Resources/decline_default.png similarity index 100% rename from Resources/refuser-actif.png rename to Resources/decline_default.png diff --git a/Resources/refuser-over.png b/Resources/decline_over.png similarity index 100% rename from Resources/refuser-over.png rename to Resources/decline_over.png diff --git a/Resources/dialer-meteo-sortir-actif.png b/Resources/dialer-meteo-sortir-actif.png deleted file mode 100644 index 942899997c63bc4fac4412710e2c51196ec854d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5797 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 diff --git a/Resources/champ-saisie-numero.png b/Resources/dialer_address_background.png similarity index 100% rename from Resources/champ-saisie-numero.png rename to Resources/dialer_address_background.png diff --git a/Resources/clavier-secondaire-actif.png b/Resources/dialer_alt_default.png similarity index 100% rename from Resources/clavier-secondaire-actif.png rename to Resources/dialer_alt_default.png diff --git a/Resources/clavier-secondaire-over.png b/Resources/dialer_alt_over.png similarity index 100% rename from Resources/clavier-secondaire-over.png rename to Resources/dialer_alt_over.png diff --git a/Resources/dialer-over.png b/Resources/dialer_default.png similarity index 100% rename from Resources/dialer-over.png rename to Resources/dialer_default.png diff --git a/Resources/dialer_over.png b/Resources/dialer_over.png new file mode 100644 index 0000000000000000000000000000000000000000..3727c5fbad50941265e6e607bc44b411da171ed9 GIT binary patch literal 16688 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 Uk_zQN|1kI^CMQ}gtQYYA0LC_`n*aa+ literal 0 HcmV?d00001 diff --git a/Resources/dialer-actif.png b/Resources/dialer_selected.png similarity index 100% rename from Resources/dialer-actif.png rename to Resources/dialer_selected.png diff --git a/Resources/diese-over.png b/Resources/diese-over.png deleted file mode 100644 index 8e37b9c892db7e8911b9fcecf7319e2240ddf2a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8617 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 Nm8TjCpP=Sp{|63l*rosg diff --git a/Resources/etoile-actif.png b/Resources/etoile-actif.png deleted file mode 100644 index 41c13aa406ed6590bed9cc52e82a93a1c658e6c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4479 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 diff --git a/Resources/etoile-over.png b/Resources/etoile-over.png deleted file mode 100644 index 88daff5a30a1d37c312bfed032d5c4cf1fa7a0a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 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 E1rMtto&W#< diff --git a/Resources/finir-conference-actif.png b/Resources/finir-conference-actif.png deleted file mode 100644 index baf09bc3dde2df17e802aef29c1f37f57caa0c53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6850 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 E0~pY=6951J diff --git a/Resources/finir-conference-over.png b/Resources/finir-conference-over.png deleted file mode 100644 index 132af8c6d0a088fbeca3b9592ada28506bc53d26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4511 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 diff --git a/Resources/fond-detail-numero.png b/Resources/fond-detail-numero.png deleted file mode 100644 index 31efad8aaec582024a47f09a70e10c2b14d02ae7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3673 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 Z_<5KikjjL;pjVXuMOihON-2x5{{iuQm8$>% diff --git a/Resources/status_connected.png b/Resources/led_connected.png similarity index 100% rename from Resources/status_connected.png rename to Resources/led_connected.png diff --git a/Resources/status_disconnected.png b/Resources/led_disconnected.png similarity index 100% rename from Resources/status_disconnected.png rename to Resources/led_disconnected.png diff --git a/Resources/status_error.png b/Resources/led_error.png similarity index 100% rename from Resources/status_error.png rename to Resources/led_error.png diff --git a/Resources/status_inprogress.png b/Resources/led_inprogress.png similarity index 100% rename from Resources/status_inprogress.png rename to Resources/led_inprogress.png diff --git a/Resources/linphone_icon_57.png b/Resources/linphone_icon_57.png new file mode 100644 index 0000000000000000000000000000000000000000..14e274350411db7f5a14a127dcb32d2111e2a153 GIT binary patch literal 3155 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 literal 0 HcmV?d00001 diff --git a/Resources/linphone_icon_72.png b/Resources/linphone_icon_72.png new file mode 100644 index 0000000000000000000000000000000000000000..b01eef8c436d8acd46bfe55cf5d160ad7e5eaa4a GIT binary patch literal 4085 zcmV&Q_ zr#N(J#V1;=`YNl6)z;S6)`fkw@7Y@4b9xT7PjSL0qFA-~K$%29#sFr3gv@sy&a~ej zHwn49H_1)7T*6xYu61&9_xL;Cv-j_}_iyjBB_RayuyNtU4B%{FIxwU2ULH5`$%lGi zGq9=izJBJ4-Trt9rFaBwTsZM!;5lH_aTIbmp$@op=8D}P_l}4nXyd|(nZR=3c0fv* zc*6q%cm`NHbH#37S70|mo#bo=CY%uQh7a}v)4NELdqgbfALKxUgXLX6Bq2nX&iROw zq+3anjH6;awt^C@*?Cy9ofrWhp~f0QjkRcPO$cEgOBDi`H*>}AkEIO@sxp9G40DAn zTkRBFa1}XIXOn%(ER>9_KGO{ocROnHVcOQMLTx(| zQ;dB?Ipx>iN8Z_&fE2Msp~DBMe*7+i4d3=vd%d(_K~?;@#tDX_bPUB;-hy-1#aJ?P z63!<~1NYbKX!+Y4xHf-=F!ZSS%yCl~`_reeG6`H$^mXF_{;q^aa_8=;)bTktmeGzLXNrBqE?Ecve7;(DWupvm2B#N*6 zA!Up1LF&{M;pRj54}63Fz&8YH_aQVDWEn}4k?m=ue`gYzV^1Yx?35VG)f3)bo2g!Y zH@er=9oCzq#&@2h{*@Qxb=20zgv-bre>x@K zTa0tYg&@f>@!=zN?ETFWLWhs)o3zr=O#Ic$ShMpm!$H2j^I~*&dsIHBa5Az3U@;kvhj9rs+0=83cv$ztWSr#{41P=cw3*mlQ7Xgyld z2`8vGl=N&0&c6cZjEk@rkHTJ964PZ2zn4%`J?&qtruoCy`fP1kRnr)|^hvBa1ySMc zUwp{^-`(5&d&DKzQ?dAA0QNk33!WWccE=4Hf+VYrvTN^V#HBYP+tL!wX9T=7t^Ny5 z@4t-ZZi|Vx7nO19@7_jnWJZPW{@D$9_k0CJ=6O^8v<92Akp0VlO#6m4-RWYr*$IHv zS;(o&-=gGuiw8vxfRdiY$ZKxrw5LDDIcsiAe7N}#wa-2l6J9Xqn(qHiEzFU3o&`Wo zk0x>$v>=HIk32`tl(P_;if7km{QI{PsM$-PW;eRegT1IUaut?hD=H=L>`Sm_=f#vH z44vxbKgPBB)0nt%_x}Osne)1T8$mx?Zkj>FvjMU#jnn@45qp2Vguu7Ej!Ji;39@84 zaZbMw&E1M;=SIwMXuv#*Ba@K}mN4S7n~<%xs5qf(?ECGVxWE3tsBmj;KBqmk206{q z9k%7B85qH%`pc4)8#PvfVbH~NZwD=(zJ=?nwF!{}U<7^Czw!h-?zuG9EL*Hp-11;d z9?jLpkyS5s|2EYyrXKDki>r6G6Hm~wAl!VIy^sAfjqg4e6`oc)8l{&mfyiiCYi|ai z?emogO&hR|6F*QqW(Yjn*AuASOIk@KHfJIJ1K-f}!K<+;HI=r{{}&bhdA`wA5v2FuqMcwlTX2%Ybcs~E%u_)?(mk+-btAZ!;+w^ zNz*Bszlgk9bGyBZ-4KGdwJTF5%b*FeWI4&2G!0vR3D(>KthxDEa|=7~5x0WoYD0Io zqPg4ATy2D#>hbN}N}#?P`q+=8q-RlZ!BrH^yADU$m_FOc>CaZp#}HH{9@h@$TJ8j%*)z zCf}OE?gjk}6z#>MD8KP1-R{Wa0ikPyD%%VP*?Q}_7@@#%ktZHvT9D$%WaPpn6kqm( z<3>yu23vmnmmj5+9Oy}qEK_*lHI!X{FV>v=lnRk3T0eUybsKa#`;`U2mRH31WzUda zS(T#N2M@Ki5$~RjNJ?rL5{3ZLMNnZ$!sM9YAijND3D)mJbG4$mTF_jr2w`H$%*B$K z6S-$Oag>iEW6Wff^uG7?_-aQ-f?cRj{;5RYr-Tgw6 zNGq-+W6TsXtES_ee({h93)UY%=mOcEqS=we(H11dc`Me_6<#9_lGgdGBE;MZH)cN@2PqA zFF=iMr+M|Ww6A-U;>(wif8O_zlzw`> zBvX0YBUrPYG`#&Z*6iarQ|f$lX~Tjlkuhc>8Dq!b+HzvID%uN2QGV0U$s9j@z_bUR zydT$=4^T3W4@p{whA>2gAju+O%eM`jD+Q1g3uV_WBk$~M`b}qsgY10ZpU^!u$Z5&c z0THNeDnjo;ki94|Wtl1z&bf(_tL}}vm8A=zh8lK0@O`Y=8YEdCg`2|>s|kP(!t8rPc-qKHDsFukBWNVO{w^KVt%@aCin@$|iRRYPy*ik&@u|4HJ3piO zgQxm^)A_S6Lva)%NlC81v;0mCC-oY_7g4czDVD4pbaw|WAHRWj-+HXs78FNn-Po;v z|8LSOr;v5Z1##mgS)pkD4K%I#J(jFwD(uKeQQEMeO2{@DM@8qFwXiY%ftB6PuP%fd zYG`=t89dwH$C_e=F55F0bJxq*3gUk)VFZ0_ziSS*qGS3#BMQOVAf{>_UDfF7dpW0F z8AA?4`upg+e#6KG52Ci{NOJ1*k|cL{`;#eY#6~BKM5*C^+ZF zNMTCquJ-jW_bF4_$VwzREopUi!P4D=6bU7x@4d#ok$2X7{0Cn@-m{S?`1gN~+E$A# zzannDEw3D;+T>Ig*UTq4vjzw@?2NFTj3zBf2vsC7oPdsvuk|UDEwB7|nfZufl9j}E zL>NII?yWCIDYL=CR0ZMY5T@q9UOXOq;Yc)B3u;Rd@k2pp7n4Ad@a|nh-g$RmN$3B#aa#RC{&7Yxz;sryVErQc=L%{NBYzsI};y$iPCF-OYl$uzWsi5pH8BqRJE->A%YCQ2iY#i<$%wYw!G=vVyuFyh z^Os>OoY?1sWLBL)X4M%8{UJO%z9dkyhd^C5z5~_h-bREG0!$p`r&DspVzMWnl@LLJ z+RtMwr4cMZal~4%K+Sdxt$oOrHL4E3fzSoOW($!cVy@P`I+i$2aNS!+UQ zPQMvR>3cn0vRKKPI-8uSvt#0fX&}jo51e$ri$LvLQThN=kX{!1JqAGV@MqC!j{&;3 zTgPpZi5zHx+NSlbv}A#2=c^o9bvs)7&~}jyh8!UT?rqN_%s`YJYI_DFF1N{|hokRNQc{oPS0y(*>3c9zM zj*X8KYTQCkceD{O$ensKvfUAr$G7W$zzmX%#YDALC0HMX$k7z*qYgJw(iN#_ZUK@d zv8F29b4ah4Lwe<0Z25ibs6=1{T?Fet#k1piOf~ugIa4(W92~)fM_xlxqFbWoZlL+2 zTM>F<-+A;0p$nSVv|oy?J3NaAELJXoA+!f^$~xpq7FR{~-e39*PQ+?YUU9D^M~@Ftq?e zbz`cY$QAY=%%dNZNK)6IqtH4uf{h~>d*6S>{p{Pb?J0D3b=1^gCDb^x_Ztv7 zU}Txq9GFL@brs zrV&08#(yx-8QRYgT|E)+kT=OHp*WOdJq#f+m>^7ny|4_q_ofC3Ff~Gr2ZvO&5MTri ngckMOi5>FR6aP3SFoORFL6aPKs}LmD00000NkvXXu0mjff_Lmr literal 0 HcmV?d00001 diff --git a/Resources/croix-supprimer-ligne-liste-history-actif.png b/Resources/list_delete_default.png similarity index 100% rename from Resources/croix-supprimer-ligne-liste-history-actif.png rename to Resources/list_delete_default.png diff --git a/Resources/croix-supprimer-ligne-liste-history-over.png b/Resources/list_delete_over.png similarity index 100% rename from Resources/croix-supprimer-ligne-liste-history-over.png rename to Resources/list_delete_over.png diff --git a/Resources/bouton-detail-contact-actif.png b/Resources/list_details_default.png similarity index 100% rename from Resources/bouton-detail-contact-actif.png rename to Resources/list_details_default.png diff --git a/Resources/bouton-detail-contact-over.png b/Resources/list_details_over.png similarity index 100% rename from Resources/bouton-detail-contact-over.png rename to Resources/list_details_over.png diff --git a/Resources/micro-OFF-actif.png b/Resources/micro_off_default.png similarity index 100% rename from Resources/micro-OFF-actif.png rename to Resources/micro_off_default.png diff --git a/Resources/micro_off_disabled.png b/Resources/micro_off_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..39f55197e1c689db615a8af2607ffd20da0b51bf GIT binary patch literal 6858 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 YNsrm7yOJ>#fBr71DL+)IRj>;GALpuVVE_OC literal 0 HcmV?d00001 diff --git a/Resources/micro-OFF-over.png b/Resources/micro_off_over.png similarity index 100% rename from Resources/micro-OFF-over.png rename to Resources/micro_off_over.png diff --git a/Resources/micro-ON-actif.png b/Resources/micro_on_default.png similarity index 100% rename from Resources/micro-ON-actif.png rename to Resources/micro_on_default.png diff --git a/Resources/micro_on_disabled.png b/Resources/micro_on_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..87fee6aa17770a91f45fb5e25432efe72a5fdaf5 GIT binary patch literal 5779 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 Uzo&nM|Nc#^t!|+9S``)cKcZPmz5oCK literal 0 HcmV?d00001 diff --git a/Resources/micro-ON-over.png b/Resources/micro_on_over.png similarity index 100% rename from Resources/micro-ON-over.png rename to Resources/micro_on_over.png diff --git a/Resources/fond-clavier.png b/Resources/numpad_background.png similarity index 100% rename from Resources/fond-clavier.png rename to Resources/numpad_background.png diff --git a/Resources/8-actif.png b/Resources/numpad_eight_default.png similarity index 100% rename from Resources/8-actif.png rename to Resources/numpad_eight_default.png diff --git a/Resources/numpad_eight_over.png b/Resources/numpad_eight_over.png new file mode 100644 index 0000000000000000000000000000000000000000..2ccb7f97c13e81f0cf51b5ca65bab29912a3f6a2 GIT binary patch literal 8590 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 literal 0 HcmV?d00001 diff --git a/Resources/5-actif.png b/Resources/numpad_five_default.png similarity index 100% rename from Resources/5-actif.png rename to Resources/numpad_five_default.png diff --git a/Resources/numpad_five_over.png b/Resources/numpad_five_over.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4a62e6314e081e3a2afa9c3ef79831c0aef7de GIT binary patch literal 7532 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 MgsUl3%bAD%7xD3t<8 literal 0 HcmV?d00001 diff --git a/Resources/4-actif.png b/Resources/numpad_four_default.png similarity index 100% rename from Resources/4-actif.png rename to Resources/numpad_four_default.png diff --git a/Resources/numpad_four_over.png b/Resources/numpad_four_over.png new file mode 100644 index 0000000000000000000000000000000000000000..2bffe94d5902def34e583206be012b278092646e GIT binary patch literal 7468 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 A8UO$Q literal 0 HcmV?d00001 diff --git a/Resources/9-actif.png b/Resources/numpad_nine_default.png similarity index 100% rename from Resources/9-actif.png rename to Resources/numpad_nine_default.png diff --git a/Resources/numpad_nine_over.png b/Resources/numpad_nine_over.png new file mode 100644 index 0000000000000000000000000000000000000000..c457e84002c038d9f79c5773b9bb957d065b40da GIT binary patch literal 8276 zcmbVxWl&t()-41H?jbmhyL97j4K(gq#7@-G$iSUMcz)<9D;npyKiVM^ZrVE4G`nnInBvDY%UOMO-BaAiF#ckj& zywJaVczs;l9?>W$k}^JSP#Y&00$>fZb8wYnJZ|e^1UT4AF&YVJ@N2j!!0a6$ejYGA zKTUlbKPMY8TSggafTWN3BY_JH0R{NDIJi{KEVIVIVJ1Ku|?k3hJI^YM9md-Hk=@WMUp_<&+!Vt;XfKs=8gJf6O;2&fN_t0&Vx z3}Be2jfaC9!U66I_=^#04fjGwF+N86?-X3zG&KH0?CSY3oxw!n5 z*T1|y5xTJd6UKk__SE-vgYoIYJmFp*Hjn*y$@CBSv3CEv&|i*^(THn#I6O85>I{b4 zc)7q_5h`FQ#>Y3jwhp%9{6JBDAW%e*Uj)Q2ED8k5DJdw3$t#E`2`h;3i^&21;rMS@ zMI|8xelbNkc?Bgf5U2>0S5lG}1t|)PKAIv*iUR*&Ra`w0P*)q+Ke`T&x_@IIrT!PJ zxPk`^ihz6Q!{N^VOn|mM90B*Vhr0n3^n?H!P#Xu=zwE!-^Y3iIFb{`UFk2-LxC`K4 z^%ZycFZ%y)-l7UXLAl3dL==Gh0*ZoSjDKTo|9@)6_ZSS{U&HZ#4a+}Uj}!RU@;{^h zX#D5!z+4|sjK|~A(4UMoK|!GjR{_iE`z%@CK0L_uVp#DgVPc_7K2Y+b^19oKHB*I+ z&exQ|LZ()<`J^zGy=F7m=dG`l1WD$B59t+s*;1#Gg+aGcc#a9ZS*I7PD~ zn)dyjisn&zk}0j#cw}PmLJ%V+nF4}BNJOn}t6TjLxoVjJ1*JJci6_O7yj+{nWJ+V7)rSCG8dEl86r2#6W z#?Elwg}V!y+>-)jag8o7kM@J!GmYfrV+0drGiGhcqvn)cVg16xzIY?&dqhfJk9ELS zjAUBYyA5j=I(@H?kAnK4@l`5jD7$#UPGcM36A>C?;oN`{7e+0y(`2xHDOPAx$OgUf z_4jbW5W%J;EXFIed~29Z-l>Z=dXAH!a1Ev1{+dL63@-Hj;t%z)u`JJHv1ERMNGgJq z+k9r)+R7$FnbLYP0W9pQmf!3wQ(VuqpKu1Dyo1JK4B_KZ(6In2ka7-=^7+r?q;*kQ zh)2M)8Z_*|77+#RRlNw6IK>2u+p3=Pr5P6n3LGj5C!B}0C$16rsr9? z=SS5OrvqJ4NkUOu!sOZUbgh3Axzgqd>h^Zz1G zI>fJchPpHq1=*|5wS3-XIHfTUR*$uB8_Hq$`Y=;n+3j`Wd~ZE-7d(zy{p73Z` zX~9^V$6g&LSG#SI)5?2{XDCpV5EYzCyFx}ZX8>c6?#;K3Xbuek%nwEFQh;bWb9`Gw z+th4ZO+(yi;vBz3?b@od)@3Z*kAm3*m~OsKhb{MLauubbL20-O;b!)qneobLJyL?` z1lxx`-%yWpFJcewZT@*4UyS*i$ceq~i;(d!^wnibTfl1n>YA}xt6Y4$%*udMiReI9 z+?Vp?p{Ij<8x+%%<7!WncA_eq8qc+L<&r6KHcKuqZZF(LC%ri#q!si~Ja)xTu0;)& z9F>L=tovr|o<;4Jzm8d=n+%zq2G4hSLo~&-*A&{;mBh=)#~cpvScs|!ijlf1gb@|Z zOxP`b^c>SN=VX%m4e58|VR)Sf^kI{nuRGCS>_0X>CjW%^;blg2-Aw2^APWxmXSwiM zr9zrQdj|Byb;f$Y54a6L2e*LHG-Wu{5ZLgETxWq0tRIS{V+_2X`J!0-Nu84+ z6bDC&UGA@5My;vZt*v;E-94I_$C=*KJVMt=Xjrh%;F~Yj;uVriPC@P6l%iyEbv4q* z4U}@kICe9CbTlMJmyUax`c|e2M$R4L+e8eW)8O8i`6I+-ht(zO4eToDk^^ z&%KmGCKSs{5)kYdR6Ll1QPqbhY0bu;s?m~*WXdK4cQ;G;s~iZ5@!eoZS(nW@&=O>vuDJ zu6?XsJda+Sw*E3$ysTcCtD$aPT6fC-Bni`~o1`5OM3GNB!-FYXQN1vdP3V1UbAqE{m?%083vI{X2*w0 z`xmuWCX#G&O|b_;msUfVZE|f#hiYYVmgXZh zu*_=lUs;XBKU@i|KJ1BnYTVMJYW^84s9K}z$HyVBw;Za{m>>GA97lNFzeDK#lV~4j zq|NZ}H5wEs2ntt!q8w!7pG1qRDVD4vn2^82Vfg*W?6;&=3z+_9ByY|w=(@>{a~GRk zSsZn1sRpC8s7HqlqPau3vaW|p)jA_Ad5u)$7Rt6Nz{|Fw2FaZrW!N)Xpyw0MZuHMh zmaZ9{#sY8q?DP&eOmcaq0nnFY1R12%WcbQZ*^jumJW5ObsD1cu0qIS?saeTLJd+(8?Owsb%?i~LMn;K^mV~% zK^%p1_85v(Xm>WHOYEvnE)4jkQwcuItQYF)aV$WMIkon_wvP0y{jBt?)jnRDq1Cm( zkq(Jt$zy@z8$7LMMU4EiL4dX~e(DMaP7-(w4mMV5WMdJsSQv?u$Q-Bb?iUU91XzF7 zfByz^w`e|fHr+%ZDRvB7HKl~8(!PPu8h?V0LjXZE8y4|QU|qsy8e$&+*zN=O6vo!c z(W579fD9;HzxCSkJeS077I^l(T=yxL+DjE8b2|Coy60ai^TpE>)yq3dr}$YpXj8YX zdv=Rr_-HHb4@rNZN`*5LeKl@&_-fzc`CTa=-36k8+jv1wIsHkJ@$gmH3RTjK_2_C| zY^@{1b6wknOg{E^U^OWiR)R;@+!=Bz*3iD9=nf-0GPLtuxcV%kXv1eyPw(%+^oIA8 zrkO?M;8I*N#-TPfR4o!F#OnqT-Kv5N83yVbTTgJxU0$1n>PgfW8^jr*%Jb=Horylu z82dP{4OwV+>4dReJBW61nfoAi2IB7gVJL$mne=TUg-Xd@O3W2P?T>*?5x@Ug=6981 z_7BFz7H?db-yiJf=?sG>6jdmCDV!TB6ftdW=Svt(wxyyOGnu!KLbvF%qUcK@?+t$H zOikK`R0s_)^v}HHS3sk9FVfLf?6+I?^iG0RS&I`Q3 zmS!*KgBEJb&O>IaM=rB>$l_9XpJ2^jO8@k4$?W3YZ*%P~x0acet=C%c6&kKyTDq^; zShLWSFh8NQke8^)lh7OFMLqMc|7uac9m$%7sSk6ie%c;_bapSS>6(GCqCBC(8Vi&z z>H&x^uHUsVU0dV?m{63E^LF0oKrI|so2sp(+wb>8C^ZhJ!;zM@=;g6F3S4A`_{~51 zN9EHqviF{^(fuit67kIHOxqiX7!P#hV1oL)ZqRF8*Ex0LaK=V08{mUgb>bIcG^AQtMh}yPY z#pM-njgWt;1rA1xy!l++CceJrH}iz&8Krk5f3NOg7m`N%i{%i~LOG)65?j_ z@vqBoCWyFlUggzX<isN*%OWdC*h&0Z=J{ir* zaLL0=D=R9R+vZU2CK&7nQ=t$K%1YfmTxkcYmb>l`Wi5xx=I>W3ZGzWNF59%&QQqql zQIoi}2L*A5n$V8L%uM^O`xn?9_TQXMDQ7=FY@`eNd4LS27y^R|Vm`h8-i=DhU+PzE zPXfW%5G~mpIPCY93Sg;5O)e<;nl73{n0gdN zF+Q(;d?u88RBLvLo%=ZkOoi5qUw&kCwVD+pj%|(38FQ9a5rj;7i}VdJdEt!MnK((` zl#>~cBj!D5Nwa%SWA#?xt zHjh=cIAY{edd4Wxi?Q@v)WmP(VK0X%j)dcyyNh{~YgsIEsVio5{dpRSij*JLi|h#P zT{e;aLF4CvmlnsnorQV3$j;-A%hx%VzS-;Nl3jLXr}<_fbh$L;SXj|h*pU2Q5^FYe z0{PK^RA3)%dEbWo1Ow8%Y%W-@!n^-23()QT#T9~RSeoq@oO}sJ*R#%&=;@2@lPOx0 z2gwpv%H zlf4l61s=d9i`zt5PJ7|0$-7QTZezj7 zrST{&aL-7HZ*axK&zgFl>3}@T<0G-yvlpqn`k*#923E^5Vo8oe4*VUe>O@g@(!TcX zlxky#CtUj`LadtHin`sgjH$Y3%JHyZKsl!s?k`m0i*bmHpk8o5IH{~hs5@^&FvFJ~ ze4+y8cj(UM@ey)wLdc3~bmL+&EX=0~fofh~p@j*3ipCQZm}er&QSXv7r<(~*FZCg0 zY$mB@8>PwQ{UP%$(ySic`J84GpQ2A9cFb7`4;b@jM`(EIxS-qFXWzY9 zwBLRoV_?&+dLkMN`bpFsjOA1~7&1uw(VWeAu<m4%(;(^5C53<0!u z^N&fAn3h^x-%tA&&mC>;WPD5BNfCGvqsm4lt)^r~r{_7Sr)Nsx%IRM7n%Br-a6+6t zQXfCFx)AlY=5e08t@-!9IB(A-&!6x3@(B~pPwvnh>!t;_48t5N~Sh4JTL z$+kf8RFH-lJ$7Z~=ECPz*hUmz_pGxKmiFQ*wd1$r<*SYqZdo~<+&vLK*W<;9nfQ&W zQRS%d^#t2kz&%&UW$jed${z8+2k+B>LNS+^C8<-juAA>AF|HQ=@UkxBp^O_5+w1eQ z<)FLmpkiw}(EHb+%tKlAN4n{+>|2RJRR`nG=hjUai1Y1z0-BEw*e(&rPNKxeyZL|G zI5|7d&*3fY(lYy$Rl}q$`p#570;q|vP!T6j5ipCzo#v4x>){=5MXSY8|O1~Q4 zb^6kO;@l-bSUdZq9BB~F2Dq-BGYqvwn-G;vrCpFRT%8!N7(I z&$9FYFzR~o$vnauo?E@utWg0Lkm`uAAW>*9&&X5Fdtb*_JL{b8$Sj6x;P>1XS_MbG ztjXQ`1Po0XJL^G(*(%jI<9w3rB$<=NWS8?pOc zE~l#}{&It_!*$Z~I-(OZ%Gl3MqFN&D`L@+1R*|*h(pq(FujV{4*L;d(NDk>wcAk^F zxz_!tjksZbowKhHN%-5CR{Wa2oDbL8FCfmoupUFj&#y%MGycyis5yFQI5Ju&zjl=ffON2z6n_4WJXz0ShPUvFFiH~3#SXw0^>g< zy?*YMz=wFPOh0_Xz^3)B4BL8tf5co~_93b;lZq2eFx2>wU*%n94AZDdA?wOK>Fdj$ zar&6M&a05f@~RdWi&TlPd~-NbH#y=>FMiRY!lCZGk`ec7c^hL^nS~cauSe{eai`-I zLPNS|Nl5TGOp9W&jKy}Rk8zPpE95unfBXY~YG5P>>PJ^2YS+zl0~PPhn@gO0+9gC+ zF2CJZB{pr>dSK1RNL9~i;Sh7pBS&%qZ|Fvqjzmq+Gs)=mB^DR^0M8(m+o6K9VRVX~ zNs6I84rvunI16t{jRL-&YrtdG?;E((({YVXe_rZyU;k!mTzT_-ZT=+ic-Vh@>fu^I zf17y=qgcm-GTZ}?WxGLKGLDRy{*-CGbYx9~b(GKao754f+2=r=Ya@D+yr9+bpVEtq zHI+64exi$ALg|;g{Cboa!Xt_oJSI|ljcP|~^HMc#o2%4MkiIQ+2f5;xw{=A~ixwq3 z+TyFy%}K(kuYOk;jMlpsXAPr5H?;u;?c0;g*lYdK9PDR%fhT@lLD%0_LO)8IrRddi z&&S_r#^Nbv%&*UpQGS1G9x>%E!pv5wW||t?X|*+PDTKP%65J`~s#g8yd~=CA$kGsm zTy61px+&C}@jvh%?e|GcK6hbW$o)2$CjJr2fb0+5jLa6vidL7Qo6T!WP&oV54Np(@ z{=p2qZ4~J?BHa$&)Fq_kNl7Ldq2?b&Z2QF`ZqG+H& zzCTq-qNtqa6HR5!xzNMKBy)a*ULWm4bez>;)xwqiCPd9sy&N2A79XGBm7Ve77TYXf zOfA6iMMHl~s&CQRN6}b?OmiiI63cw47vTVnS}ZT17L$V~)ODL%rQWW=gM4)`sw;$s zb)`^GGxqKDh4Gez2RBL8%a}PKVLp%|6KwJaj)}wv2j-VF)`1Lidal8V!>+1$W;xSC z3Wp*K#BB01YJErQp;y)e>95%L8?sP>v!sHVXR|py-xf%TQpIztgR-vW2KkX0kU%Ia03T?L8SseR$`_8H-EA@@mUXqobVR-S!9uv(j<-` zKylRJ4$Da&BE&{J4qM3k-PmrQ4_!XCeu?zwa!F#P>i*Lpq6Wf_hnZv7WORpOhp#U1 zQiXLEotszb_Tq6JNr`LLkz(AF1BTSJwc^aTM*}yIbk?@?VTarvb~z8bIYG~&4ba}n aJ-tanAT)F5jm2O8`BfA(!Bz4vLjMP6e>@)m literal 0 HcmV?d00001 diff --git a/Resources/1-actif.png b/Resources/numpad_one_default.png similarity index 100% rename from Resources/1-actif.png rename to Resources/numpad_one_default.png diff --git a/Resources/numpad_one_over.png b/Resources/numpad_one_over.png new file mode 100644 index 0000000000000000000000000000000000000000..abe10c6e7d5ea67782a0354a2ecc6d89f3902540 GIT binary patch literal 6908 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 BND}}6 literal 0 HcmV?d00001 diff --git a/Resources/7-actif.png b/Resources/numpad_seven_default.png similarity index 100% rename from Resources/7-actif.png rename to Resources/numpad_seven_default.png diff --git a/Resources/numpad_seven_over.png b/Resources/numpad_seven_over.png new file mode 100644 index 0000000000000000000000000000000000000000..9ec3198351722b0a9e698c3a54439a11f81565bf GIT binary patch literal 7393 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℘-*S@ zy3bywLCjeHxt&DmuXHy40 zPTk@5)VfbarM`J?%k)m#d?mQvT9IzJ`+B#0o%V{wVQAZ@eg_N?Z$E9?%$&APhfq{F z(COlIQwh{Y%ZsS^&)t+l#<8ZOmgzx6N`A0vi;G_y z_fA@?=iFSyf0%UoWS_b1UMX^8t8TwxbAeGyFxOsHr5IC8h5i#&XLME=rNKe~!l8#DkO^Nf)w%^)Hn*>_q zZr90&?fQbq(ajjrp!cXxN<%M3)o3S-T<=`oLtzWPUj;x)jU~lhf`n^dE(P~`g~DD# z0*+ea)Dbp7tQ*!wi(#NpM`Q5Lpy+&TxAUw+QdOi!eRKA+5# zd)5m%ZMm&&(dlf}4{*J4@Iv58EWs_^<}T_~-ZJLb93H-8u`p%9T17+Z=)=>h__CDW%`rd91m83Vw+PQ9_YI&}Kx-8q*b`7T z)|cHJD}HO<(c?AhIp#Wkjz}HPtCYmiZ;O-JiPAoy;htCe8a>j=8@Elm_LtgB_0DrY zGyUccV*}ed0)cnvU4kD04hu4rntKrBkKgq}O;}{)`u(Q2=JuDa=>?`h93&i=^nA(n zD{8Inx;IU^GCK%dq+pO48%=X?*yeL0NpIdVcG9>^Tu0vA76PVOAj)O0ZhJ}b{;IP* z!mSNGa+wnoRLlST)m=i?_mcOvhUV4oGo;Hf$a!V;bN6KT5{mUd5-K7Y-0wehu>&4O zv_FVXGz|HDX}0SqCFtR>q->0Qq*F{J;+#)iQ^hmf*GbyYc7cQc&L7X6AOL(hr!e9@`4{7{7AiApqh^HH4SlVVsMNc|=HRx+j4c z0GHB9eukn-8}=TU*LpkNDTWisnzrN+nye@K2y6FgE~LRVEFMDcSB*cDi4)J98|qcI z-Jp)uX- -pErh-iJVvDWh-1(%jNwM14W3^c&914)^7tT$~MpGqV6_2Jd?4?H~D zyhBM~HBh36ymj+6SSw48olam28W;Y#SdFJ$b2{Z~=cfL6;}g#HhUyb37* literal 0 HcmV?d00001 diff --git a/Resources/numpad_star_default.png b/Resources/numpad_star_default.png new file mode 100644 index 0000000000000000000000000000000000000000..6034e1a995d15d1805b09aa59caf875f4745be34 GIT binary patch literal 4467 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 literal 0 HcmV?d00001 diff --git a/Resources/numpad_star_over.png b/Resources/numpad_star_over.png new file mode 100644 index 0000000000000000000000000000000000000000..ac9639ff708f4276d4d66c3154cd19c18820f4f7 GIT binary patch literal 7712 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 literal 0 HcmV?d00001 diff --git a/Resources/3-actif.png b/Resources/numpad_three_default.png similarity index 100% rename from Resources/3-actif.png rename to Resources/numpad_three_default.png diff --git a/Resources/numpad_three_over.png b/Resources/numpad_three_over.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb1e1dc8b5f99f6acc4bd1515d3462526a82bb3 GIT binary patch literal 7835 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 literal 0 HcmV?d00001 diff --git a/Resources/0-actif.png b/Resources/numpad_zero_default.png similarity index 100% rename from Resources/0-actif.png rename to Resources/numpad_zero_default.png diff --git a/Resources/numpad_zero_over.png b/Resources/numpad_zero_over.png new file mode 100644 index 0000000000000000000000000000000000000000..86c14f38c71c362c145bc253bc6d9cba7e908cb0 GIT binary patch literal 8291 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 literal 0 HcmV?d00001 diff --git a/Resources/options_default.png b/Resources/options_default.png index dd06140cdd230d95643de0c3b131e2cda0dcd9c6..2a2c832e6bc9d2d5c36eae6ea85c6704d407bf73 100644 GIT binary patch delta 7320 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 BwT%D( delta 6827 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 O8*0j$O63Zcul@@IX`v_p diff --git a/Resources/options_disabled.png b/Resources/options_disabled.png index 0339da9723b59af1d887d92a092694bf0f5462be..3f5a32482a9f0b77a81306aa0654b08bf1994f6d 100644 GIT binary patch delta 7068 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�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 diff --git a/Resources/pause-actif.png b/Resources/pause_off_default.png similarity index 100% rename from Resources/pause-actif.png rename to Resources/pause_off_default.png diff --git a/Resources/pause-over.png b/Resources/pause_off_over.png similarity index 100% rename from Resources/pause-over.png rename to Resources/pause_off_over.png diff --git a/Resources/play-actif.png b/Resources/pause_on_default.png similarity index 100% rename from Resources/play-actif.png rename to Resources/pause_on_default.png diff --git a/Resources/play-over.png b/Resources/pause_on_over.png similarity index 100% rename from Resources/play-over.png rename to Resources/pause_on_over.png diff --git a/Resources/registration_inprogress.png b/Resources/registration_inprogress.png deleted file mode 100644 index 17c3dad7d80b3a05715b984221d45dd9e840658e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 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 literal 0 HcmV?d00001 diff --git a/Resources/speacker-OFF-over.png b/Resources/speaker_off_over.png similarity index 100% rename from Resources/speacker-OFF-over.png rename to Resources/speaker_off_over.png diff --git a/Resources/speacker-ON-actif.png b/Resources/speaker_on_default.png similarity index 100% rename from Resources/speacker-ON-actif.png rename to Resources/speaker_on_default.png diff --git a/Resources/speaker_on_disabled.png b/Resources/speaker_on_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..a07dc1f5c794c657cfdb9013b9da93fd72190c56 GIT binary patch literal 5547 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 literal 0 HcmV?d00001 diff --git a/Resources/speacker-ON-over.png b/Resources/speaker_on_over.png similarity index 100% rename from Resources/speacker-ON-over.png rename to Resources/speaker_on_over.png diff --git a/Resources/barre-noire-top.png b/Resources/statebar_background.png similarity index 100% rename from Resources/barre-noire-top.png rename to Resources/statebar_background.png diff --git a/Resources/switch_camera_default.png b/Resources/switch_camera_default.png index e0e42c09f5b886d00a457c57c6eb968ddf8ed2ba..2145e1db3b37d63d82c10c6cea2e93e97ae7b849 100644 GIT binary patch delta 3266 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 A(f|Me delta 5496 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 delta 5543 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 diff --git a/Resources/video-OFF-actif.png b/Resources/video_off_default.png similarity index 100% rename from Resources/video-OFF-actif.png rename to Resources/video_off_default.png diff --git a/Resources/video-OFF-disabled.png b/Resources/video_off_disabled.png similarity index 100% rename from Resources/video-OFF-disabled.png rename to Resources/video_off_disabled.png diff --git a/Resources/video-OFF-over.png b/Resources/video_off_over.png similarity index 100% rename from Resources/video-OFF-over.png rename to Resources/video_off_over.png diff --git a/Resources/video-ON-actif.png b/Resources/video_on_default.png similarity index 100% rename from Resources/video-ON-actif.png rename to Resources/video_on_default.png diff --git a/Resources/video-ON-disabled.png b/Resources/video_on_disabled.png similarity index 100% rename from Resources/video-ON-disabled.png rename to Resources/video_on_disabled.png diff --git a/Resources/video-ON-over.png b/Resources/video_on_over.png similarity index 100% rename from Resources/video-ON-over.png rename to Resources/video_on_over.png diff --git a/linphone-Info.plist b/linphone-Info.plist index e0ae92cdc..6fcc7adf1 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -12,8 +12,8 @@ CFBundleIconFiles - icone-linphone-57.png - icone-linphone-72.png + linphone_icon_57.png + linphone_icon_72.png CFBundleIdentifier org.linphone.phone @@ -32,7 +32,7 @@ NSMainNibFile LinphoneApp NSMainNibFile~ipad - MainScreenWithVideoPreview + LinphoneApp UIApplicationExitsOnSuspend UIBackgroundModes diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 89f5d7a41..00dd5f44e 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -11,7 +11,7 @@ 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - 22058C71116E305000B08DDD /* icone-linphone-57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* icone-linphone-57.png */; }; + 22058C71116E305000B08DDD /* linphone_icon_57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* linphone_icon_57.png */; }; 220FAD3110765B400068D98F /* libeXosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2810765B400068D98F /* libeXosip2.a */; }; 220FAD3210765B400068D98F /* libgsm.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2910765B400068D98F /* libgsm.a */; }; 220FAD3610765B400068D98F /* libosip2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2D10765B400068D98F /* libosip2.a */; }; @@ -27,8 +27,6 @@ 2214EBF312F86360002A5394 /* UIMicroButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMicroButton.m */; }; 2218A92512FBE1340088A667 /* FirstLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2218A92312FBE1340088A667 /* FirstLoginViewController.m */; }; 2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; }; - 22226C12118197C0000CA27B /* startcall-green.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C11118197C0000CA27B /* startcall-green.png */; }; - 22226C14118197EC000CA27B /* stopcall-red.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C13118197EC000CA27B /* stopcall-red.png */; }; 22276E8313C73D3100210156 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8013C73D3100210156 /* libavcodec.a */; }; 22276E8413C73D3100210156 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8113C73D3100210156 /* libavutil.a */; }; 22276E8513C73D3100210156 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8213C73D3100210156 /* libswscale.a */; }; @@ -37,7 +35,6 @@ 223148E41178A08200637D6A /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E31178A08200637D6A /* libilbc.a */; }; 223148E61178A09900637D6A /* libmsilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E51178A09900637D6A /* libmsilbc.a */; }; 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; - 223963171393CFAF001DE689 /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 223963161393CFAF001DE689 /* FastAddressBook.m */; }; 2242E313125235120061DDCE /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; 224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; }; @@ -56,7 +53,6 @@ 2274402F106F335E006EC466 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2274402E106F335E006EC466 /* AudioToolbox.framework */; }; 2274550810700509006EC466 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc */; }; 228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 228697C311AC29B800E9E0CA /* CFNetwork.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; - 228B19AF130290C500F154D3 /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = 228B19AE130290C500F154D3 /* iTunesArtwork */; }; 22968A5F12F875C600588287 /* UISpeakerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A5E12F875C600588287 /* UISpeakerButton.m */; }; 22A10F3B11F8960300373793 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2C10765B400068D98F /* libortp.a */; }; 22AA8AFD13D7125600B30535 /* libx264.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22AA8AFB13D7125500B30535 /* libx264.a */; }; @@ -73,14 +69,11 @@ 22D8F124147548E2008C97DB /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; }; - 22D8F12E147548E2008C97DB /* icone-linphone-57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* icone-linphone-57.png */; }; - 22D8F12F147548E2008C97DB /* startcall-green.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C11118197C0000CA27B /* startcall-green.png */; }; - 22D8F130147548E2008C97DB /* stopcall-red.png in Resources */ = {isa = PBXBuildFile; fileRef = 22226C13118197EC000CA27B /* stopcall-red.png */; }; + 22D8F12E147548E2008C97DB /* linphone_icon_57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* linphone_icon_57.png */; }; 22D8F137147548E2008C97DB /* linphone-banner.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2F911ABB76400628906 /* linphone-banner.png */; }; 22D8F138147548E2008C97DB /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; }; 22D8F139147548E2008C97DB /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; 22D8F13B147548E2008C97DB /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; }; - 22D8F13C147548E2008C97DB /* iTunesArtwork in Resources */ = {isa = PBXBuildFile; fileRef = 228B19AE130290C500F154D3 /* iTunesArtwork */; }; 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; }; 22D8F142147548E2008C97DB /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; 22D8F144147548E2008C97DB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; @@ -96,7 +89,6 @@ 22D8F154147548E2008C97DB /* FirstLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2218A92312FBE1340088A667 /* FirstLoginViewController.m */; }; 22D8F155147548E2008C97DB /* UIBluetoothButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */; }; 22D8F156147548E2008C97DB /* UIEraseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */; }; - 22D8F157147548E2008C97DB /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = 223963161393CFAF001DE689 /* FastAddressBook.m */; }; 22D8F159147548E2008C97DB /* UICamSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = 22AA8B0013D83F6300B30535 /* UICamSwitch.m */; }; 22D8F15B147548E2008C97DB /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 22D8F15C147548E2008C97DB /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; @@ -145,8 +137,6 @@ 34075199150645A300B89C47 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340751961506459A00B89C47 /* CoreTelephony.framework */; }; 340751E7150F38FD00B89C47 /* UIVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIVideoButton.m */; }; 340751E8150F38FD00B89C47 /* UIVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIVideoButton.m */; }; - 3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; - 3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */; }; 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; }; @@ -158,61 +148,51 @@ 344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDE71484E723007420B6 /* libzrtpcpp.a */; }; 344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; 344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; - 34A6ECEB14CF13CB00460C04 /* icone-linphone-72.png in Resources */ = {isa = PBXBuildFile; fileRef = 34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */; }; - 34C7646C14CD5585008E9607 /* dialer-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646A14CD5585008E9607 /* dialer-orange.png */; }; - 34C7646D14CD5585008E9607 /* history-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646B14CD5585008E9607 /* history-orange.png */; }; - 57282931154AF1460076F540 /* history-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646B14CD5585008E9607 /* history-orange.png */; }; - 57282933154AF14D0076F540 /* dialer-orange.png in Resources */ = {isa = PBXBuildFile; fileRef = 34C7646A14CD5585008E9607 /* dialer-orange.png */; }; + 34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */ = {isa = PBXBuildFile; fileRef = 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */; }; 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; - D31AAF63159B5B6F002C6B02 /* start-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */; }; - D31AAF64159B5B6F002C6B02 /* start-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */; }; - D31AAF65159B5B6F002C6B02 /* start-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF62159B5B6E002C6B02 /* start-conference-over.png */; }; - D31AAF66159B5B6F002C6B02 /* start-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF62159B5B6E002C6B02 /* start-conference-over.png */; }; - D31AAF69159B5C68002C6B02 /* finir-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */; }; - D31AAF6A159B5C68002C6B02 /* finir-conference-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */; }; - D31AAF6B159B5C68002C6B02 /* finir-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF68159B5C68002C6B02 /* finir-conference-over.png */; }; - D31AAF6C159B5C68002C6B02 /* finir-conference-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF68159B5C68002C6B02 /* finir-conference-over.png */; }; - D31AAF6E159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */; }; - D31AAF6F159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */; }; + D31AAF63159B5B6F002C6B02 /* conference_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* conference_default.png */; }; + D31AAF64159B5B6F002C6B02 /* conference_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* conference_default.png */; }; + D31AAF65159B5B6F002C6B02 /* conference_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF62159B5B6E002C6B02 /* conference_over.png */; }; + D31AAF66159B5B6F002C6B02 /* conference_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF62159B5B6E002C6B02 /* conference_over.png */; }; + D31AAF6E159B65E1002C6B02 /* call_state_ringing_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF6D159B65E1002C6B02 /* call_state_ringing_default.png */; }; + D31AAF6F159B65E1002C6B02 /* call_state_ringing_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF6D159B65E1002C6B02 /* call_state_ringing_default.png */; }; D31AC4B0158A29C600C2638B /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; }; D31AC4B1158A29C600C2638B /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; }; D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */; }; D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */; }; D31B4B23159876C0002E6C72 /* UICompositeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */; }; D31B4B24159876C0002E6C72 /* UICompositeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */; }; - D31B4B281598A390002E6C72 /* avatar-inconnu.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B261598A390002E6C72 /* avatar-inconnu.png */; }; - D31B4B291598A390002E6C72 /* avatar-inconnu.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B261598A390002E6C72 /* avatar-inconnu.png */; }; - D31B4B2A1598A390002E6C72 /* avatar-small.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B271598A390002E6C72 /* avatar-small.png */; }; - D31B4B2B1598A390002E6C72 /* avatar-small.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B271598A390002E6C72 /* avatar-small.png */; }; - D31C9C8A158A179A00756B45 /* fond-detail-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C89158A179A00756B45 /* fond-detail-numero.png */; }; - D31C9C8B158A179A00756B45 /* fond-detail-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C89158A179A00756B45 /* fond-detail-numero.png */; }; - D31C9C90158A1C1000756B45 /* appel-entrant.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8D158A1C1000756B45 /* appel-entrant.png */; }; - D31C9C91158A1C1000756B45 /* appel-entrant.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8D158A1C1000756B45 /* appel-entrant.png */; }; - D31C9C92158A1C1000756B45 /* appel-manque.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8E158A1C1000756B45 /* appel-manque.png */; }; - D31C9C93158A1C1000756B45 /* appel-manque.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8E158A1C1000756B45 /* appel-manque.png */; }; - D31C9C94158A1C1000756B45 /* appel-sortant.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8F158A1C1000756B45 /* appel-sortant.png */; }; - D31C9C95158A1C1000756B45 /* appel-sortant.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8F158A1C1000756B45 /* appel-sortant.png */; }; + D31B4B281598A390002E6C72 /* avatar_unknown.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B261598A390002E6C72 /* avatar_unknown.png */; }; + D31B4B291598A390002E6C72 /* avatar_unknown.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B261598A390002E6C72 /* avatar_unknown.png */; }; + D31B4B2A1598A390002E6C72 /* avatar_unknown_small.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B271598A390002E6C72 /* avatar_unknown_small.png */; }; + D31B4B2B1598A390002E6C72 /* avatar_unknown_small.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B271598A390002E6C72 /* avatar_unknown_small.png */; }; + D31C9C90158A1C1000756B45 /* call_status_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8D158A1C1000756B45 /* call_status_incoming.png */; }; + D31C9C91158A1C1000756B45 /* call_status_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8D158A1C1000756B45 /* call_status_incoming.png */; }; + D31C9C92158A1C1000756B45 /* call_status_missed.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8E158A1C1000756B45 /* call_status_missed.png */; }; + D31C9C93158A1C1000756B45 /* call_status_missed.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8E158A1C1000756B45 /* call_status_missed.png */; }; + D31C9C94158A1C1000756B45 /* call_status_outgoing.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8F158A1C1000756B45 /* call_status_outgoing.png */; }; + D31C9C95158A1C1000756B45 /* call_status_outgoing.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8F158A1C1000756B45 /* call_status_outgoing.png */; }; D31C9C98158A1CDF00756B45 /* UIHistoryCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */; }; D31C9C99158A1CDF00756B45 /* UIHistoryCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */; }; - D3211BA6159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */; }; - D3211BA7159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */; }; + D3211BA6159C3D410098460B /* call_state_outgoing_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* call_state_outgoing_default.png */; }; + D3211BA7159C3D410098460B /* call_state_outgoing_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* call_state_outgoing_default.png */; }; D3211BB0159C4EF10098460B /* UIConferenceHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3211BAE159C4EF00098460B /* UIConferenceHeader.m */; }; D3211BB1159C4EF10098460B /* UIConferenceHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3211BAE159C4EF00098460B /* UIConferenceHeader.m */; }; D3211BB2159C4EF10098460B /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */; }; D3211BB3159C4EF10098460B /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */; }; - D3211BB9159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */; }; - D3211BBA159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */; }; - D3211BBE159CBFD60098460B /* cancel_white_bg_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */; }; - D3211BBF159CBFD70098460B /* cancel_white_bg_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */; }; - D3211BC0159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */; }; - D3211BC1159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */; }; - D3211BC2159CBFD70098460B /* cancel_white_bg_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */; }; - D3211BC3159CBFD70098460B /* cancel_white_bg_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */; }; + D3211BB9159C8A820098460B /* cell_call_first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* cell_call_first.png */; }; + D3211BBA159C8A820098460B /* cell_call_first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* cell_call_first.png */; }; + D3211BBE159CBFD60098460B /* back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* back_default.png */; }; + D3211BBF159CBFD70098460B /* back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* back_default.png */; }; + D3211BC0159CBFD70098460B /* back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* back_disabled.png */; }; + D3211BC1159CBFD70098460B /* back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* back_disabled.png */; }; + D3211BC2159CBFD70098460B /* back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* back_over.png */; }; + D3211BC3159CBFD70098460B /* back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* back_over.png */; }; D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D32409C4158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D32460E6159D9AAD00BA7F3A /* UIPassView.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460E5159D9AAD00BA7F3A /* UIPassView.m */; }; @@ -231,49 +211,51 @@ D32648451588F6FC00930C67 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32648431588F6FB00930C67 /* UIToggleButton.m */; }; D32942A41594C94300556A1C /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D32942A31594C94200556A1C /* SettingsViewController.xib */; }; D32942A51594C94300556A1C /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D32942A31594C94200556A1C /* SettingsViewController.xib */; }; - D3432A62158A4446001C6B0B /* status_connected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5C158A4446001C6B0B /* status_connected.png */; }; - D3432A63158A4446001C6B0B /* status_connected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5C158A4446001C6B0B /* status_connected.png */; }; - D3432A64158A4446001C6B0B /* status_error.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5D158A4446001C6B0B /* status_error.png */; }; - D3432A65158A4446001C6B0B /* status_error.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5D158A4446001C6B0B /* status_error.png */; }; - D3432A66158A4446001C6B0B /* quality-call-0.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5E158A4446001C6B0B /* quality-call-0.png */; }; - D3432A67158A4446001C6B0B /* quality-call-0.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5E158A4446001C6B0B /* quality-call-0.png */; }; - D3432A68158A4446001C6B0B /* quality-call-1.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5F158A4446001C6B0B /* quality-call-1.png */; }; - D3432A69158A4446001C6B0B /* quality-call-1.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5F158A4446001C6B0B /* quality-call-1.png */; }; - D3432A6A158A4446001C6B0B /* quality-call-2.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A60158A4446001C6B0B /* quality-call-2.png */; }; - D3432A6B158A4446001C6B0B /* quality-call-2.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A60158A4446001C6B0B /* quality-call-2.png */; }; - D3432A6C158A4446001C6B0B /* quality-call-3.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A61158A4446001C6B0B /* quality-call-3.png */; }; - D3432A6D158A4446001C6B0B /* quality-call-3.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A61158A4446001C6B0B /* quality-call-3.png */; }; - D3432A71158A45AF001C6B0B /* status_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A6F158A45AF001C6B0B /* status_inprogress.png */; }; - D3432A72158A45AF001C6B0B /* status_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A6F158A45AF001C6B0B /* status_inprogress.png */; }; - D3432A73158A45AF001C6B0B /* status_disconnected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A70158A45AF001C6B0B /* status_disconnected.png */; }; - D3432A74158A45AF001C6B0B /* status_disconnected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A70158A45AF001C6B0B /* status_disconnected.png */; }; + D32B9DFC15A2F131000B6DEC /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */; }; + D32B9DFD15A2F131000B6DEC /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */; }; + D3432A62158A4446001C6B0B /* led_connected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5C158A4446001C6B0B /* led_connected.png */; }; + D3432A63158A4446001C6B0B /* led_connected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5C158A4446001C6B0B /* led_connected.png */; }; + D3432A64158A4446001C6B0B /* led_error.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5D158A4446001C6B0B /* led_error.png */; }; + D3432A65158A4446001C6B0B /* led_error.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5D158A4446001C6B0B /* led_error.png */; }; + D3432A66158A4446001C6B0B /* call_quality_indicator_0.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */; }; + D3432A67158A4446001C6B0B /* call_quality_indicator_0.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */; }; + D3432A68158A4446001C6B0B /* call_quality_indicator_1.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5F158A4446001C6B0B /* call_quality_indicator_1.png */; }; + D3432A69158A4446001C6B0B /* call_quality_indicator_1.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5F158A4446001C6B0B /* call_quality_indicator_1.png */; }; + D3432A6A158A4446001C6B0B /* call_quality_indicator_2.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A60158A4446001C6B0B /* call_quality_indicator_2.png */; }; + D3432A6B158A4446001C6B0B /* call_quality_indicator_2.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A60158A4446001C6B0B /* call_quality_indicator_2.png */; }; + D3432A6C158A4446001C6B0B /* call_quality_indicator_3.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A61158A4446001C6B0B /* call_quality_indicator_3.png */; }; + D3432A6D158A4446001C6B0B /* call_quality_indicator_3.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A61158A4446001C6B0B /* call_quality_indicator_3.png */; }; + D3432A71158A45AF001C6B0B /* led_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A6F158A45AF001C6B0B /* led_inprogress.png */; }; + D3432A72158A45AF001C6B0B /* led_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A6F158A45AF001C6B0B /* led_inprogress.png */; }; + D3432A73158A45AF001C6B0B /* led_disconnected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A70158A45AF001C6B0B /* led_disconnected.png */; }; + D3432A74158A45AF001C6B0B /* led_disconnected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A70158A45AF001C6B0B /* led_disconnected.png */; }; D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; }; - D347347E1580E5F8003C7B8C /* history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history-actif.png */; }; - D347347F1580E5F8003C7B8C /* history-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history-selectionne.png */; }; + D347347E1580E5F8003C7B8C /* history_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history_default.png */; }; + D347347F1580E5F8003C7B8C /* history_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history_selected.png */; }; D34F6F9E1594D3FB0095705B /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; }; D34F6F9F1594D3FB0095705B /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; }; D35497FE15875372000081D8 /* ContactsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsViewController.m */; }; D35497FF15875372000081D8 /* ContactsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsViewController.m */; }; D354980015875372000081D8 /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsViewController.xib */; }; D354980115875372000081D8 /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsViewController.xib */; }; - D354980615875534000081D8 /* all-contacts-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* all-contacts-actif.png */; }; - D354980715875534000081D8 /* all-contacts-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* all-contacts-actif.png */; }; - D354980815875534000081D8 /* all-contacts-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* all-contacts-selectionne.png */; }; - D354980915875534000081D8 /* all-contacts-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* all-contacts-selectionne.png */; }; - D354980A15875534000081D8 /* linphone-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* linphone-actif.png */; }; - D354980B15875534000081D8 /* linphone-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* linphone-actif.png */; }; - D354980C15875534000081D8 /* linphone-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* linphone-selectionne.png */; }; - D354980D15875534000081D8 /* linphone-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* linphone-selectionne.png */; }; - D354981015875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */; }; - D354981115875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */; }; - D354981215875608000081D8 /* add-contact-depuis-detail-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */; }; - D354981315875608000081D8 /* add-contact-depuis-detail-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */; }; + D354980615875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_default.png */; }; + D354980715875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_default.png */; }; + D354980815875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_selected.png */; }; + D354980915875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_selected.png */; }; + D354980A15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_default.png */; }; + D354980B15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_default.png */; }; + D354980C15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_selected.png */; }; + D354980D15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_selected.png */; }; + D354981015875608000081D8 /* contacts_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* contacts_add_default.png */; }; + D354981115875608000081D8 /* contacts_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* contacts_add_default.png */; }; + D354981215875608000081D8 /* contacts_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* contacts_add_over.png */; }; + D354981315875608000081D8 /* contacts_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* contacts_add_over.png */; }; D3549816158761D0000081D8 /* ContactsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactsTableViewController.m */; }; D3549817158761D0000081D8 /* ContactsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactsTableViewController.m */; }; - D354981A15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */; }; - D354981B15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */; }; - D354981C15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* bouton-detail-contact-over.png */; }; - D354981D15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* bouton-detail-contact-over.png */; }; + D354981A15876FE7000081D8 /* list_details_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* list_details_default.png */; }; + D354981B15876FE7000081D8 /* list_details_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* list_details_default.png */; }; + D354981C15876FE7000081D8 /* list_details_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* list_details_over.png */; }; + D354981D15876FE7000081D8 /* list_details_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* list_details_over.png */; }; D35498211587716B000081D8 /* UIStateBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* UIStateBar.m */; }; D35498221587716B000081D8 /* UIStateBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* UIStateBar.m */; }; D35498231587716B000081D8 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; @@ -284,53 +266,59 @@ D35E757B15931E5D0066B1C1 /* switch_camera_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757615931E5D0066B1C1 /* switch_camera_over.png */; }; D35E7581159328EB0066B1C1 /* UIAddressTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7580159328EB0066B1C1 /* UIAddressTextField.m */; }; D35E7582159328EB0066B1C1 /* UIAddressTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7580159328EB0066B1C1 /* UIAddressTextField.m */; }; - D35E758915932DE60066B1C1 /* backspace-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758815932DE60066B1C1 /* backspace-disabled.png */; }; - D35E758A15932DE60066B1C1 /* backspace-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758815932DE60066B1C1 /* backspace-disabled.png */; }; - D35E758D15934F360066B1C1 /* appeler-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* appeler-disabled.png */; }; - D35E758E15934F360066B1C1 /* appeler-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* appeler-disabled.png */; }; + D35E758915932DE60066B1C1 /* backspace_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758815932DE60066B1C1 /* backspace_disabled.png */; }; + D35E758A15932DE60066B1C1 /* backspace_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758815932DE60066B1C1 /* backspace_disabled.png */; }; + D35E758D15934F360066B1C1 /* call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* call_disabled.png */; }; + D35E758E15934F360066B1C1 /* call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* call_disabled.png */; }; D35E7597159460580066B1C1 /* ChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7595159460560066B1C1 /* ChatViewController.m */; }; D35E7598159460580066B1C1 /* ChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7595159460560066B1C1 /* ChatViewController.m */; }; D35E7599159460580066B1C1 /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35E7596159460570066B1C1 /* ChatViewController.xib */; }; D35E759A159460580066B1C1 /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35E7596159460570066B1C1 /* ChatViewController.xib */; }; D35E759F159460B70066B1C1 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E759D159460B50066B1C1 /* SettingsViewController.m */; }; D35E75A0159460B70066B1C1 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E759D159460B50066B1C1 /* SettingsViewController.m */; }; + D35EA76315A2DF8D003E025D /* micro_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35EA76115A2DF8D003E025D /* micro_off_disabled.png */; }; + D35EA76415A2DF8D003E025D /* micro_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35EA76115A2DF8D003E025D /* micro_off_disabled.png */; }; + D35EA76515A2DF8D003E025D /* micro_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35EA76215A2DF8D003E025D /* micro_on_disabled.png */; }; + D35EA76615A2DF8D003E025D /* micro_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35EA76215A2DF8D003E025D /* micro_on_disabled.png */; }; + D365AA7B15A2DE7500CAFE3F /* speaker_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D365AA7915A2DE7500CAFE3F /* speaker_off_disabled.png */; }; + D365AA7C15A2DE7500CAFE3F /* speaker_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D365AA7915A2DE7500CAFE3F /* speaker_off_disabled.png */; }; + D365AA7D15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */; }; + D365AA7E15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */; }; D36C43C6158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; }; D36C43C7158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; }; D36C43CA158F2EE50048BA40 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; }; D36C43CB158F2EE50048BA40 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; }; - D36C43D1158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */; }; - D36C43D2158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */; }; - D36C43D3158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */; }; - D36C43D4158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */; }; - D36C43D5158F2F370048BA40 /* champ-titre-conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* champ-titre-conference.png */; }; - D36C43D6158F2F370048BA40 /* champ-titre-conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* champ-titre-conference.png */; }; - D36C43D7158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */; }; - D36C43D8158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */; }; - D36C43D9158F2F370048BA40 /* clavier-secondaire-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */; }; - D36C43DA158F2F370048BA40 /* clavier-secondaire-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */; }; - D36C43E9158F3F7E0048BA40 /* play-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E7158F3F7E0048BA40 /* play-actif.png */; }; - D36C43EA158F3F7E0048BA40 /* play-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E7158F3F7E0048BA40 /* play-actif.png */; }; - D36C43EB158F3F7E0048BA40 /* play-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E8158F3F7E0048BA40 /* play-over.png */; }; - D36C43EC158F3F7E0048BA40 /* play-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E8158F3F7E0048BA40 /* play-over.png */; }; - D36C43F1158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */; }; - D36C43F2158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */; }; - D36C43F3158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */; }; - D36C43F4158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */; }; - D36C43F5158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */; }; - D36C43F6158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */; }; - D36C43F7158F61EA0048BA40 /* play-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */; }; - D36C43F8158F61EA0048BA40 /* play-champ-numero-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */; }; + D36C43D1158F2F370048BA40 /* cell_call.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* cell_call.png */; }; + D36C43D2158F2F370048BA40 /* cell_call.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* cell_call.png */; }; + D36C43D3158F2F370048BA40 /* cell_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* cell_conference.png */; }; + D36C43D4158F2F370048BA40 /* cell_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* cell_conference.png */; }; + D36C43D5158F2F370048BA40 /* header_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* header_conference.png */; }; + D36C43D6158F2F370048BA40 /* header_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* header_conference.png */; }; + D36C43D7158F2F370048BA40 /* dialer_alt_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CF158F2F370048BA40 /* dialer_alt_default.png */; }; + D36C43D8158F2F370048BA40 /* dialer_alt_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CF158F2F370048BA40 /* dialer_alt_default.png */; }; + D36C43D9158F2F370048BA40 /* dialer_alt_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43D0158F2F370048BA40 /* dialer_alt_over.png */; }; + D36C43DA158F2F370048BA40 /* dialer_alt_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43D0158F2F370048BA40 /* dialer_alt_over.png */; }; + D36C43E9158F3F7E0048BA40 /* pause_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E7158F3F7E0048BA40 /* pause_on_default.png */; }; + D36C43EA158F3F7E0048BA40 /* pause_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E7158F3F7E0048BA40 /* pause_on_default.png */; }; + D36C43EB158F3F7E0048BA40 /* pause_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E8158F3F7E0048BA40 /* pause_on_over.png */; }; + D36C43EC158F3F7E0048BA40 /* pause_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E8158F3F7E0048BA40 /* pause_on_over.png */; }; + D36C43F1158F61EA0048BA40 /* call_state_pause_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43ED158F61EA0048BA40 /* call_state_pause_default.png */; }; + D36C43F2158F61EA0048BA40 /* call_state_pause_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43ED158F61EA0048BA40 /* call_state_pause_default.png */; }; + D36C43F3158F61EA0048BA40 /* call_state_pause_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EE158F61EA0048BA40 /* call_state_pause_over.png */; }; + D36C43F4158F61EA0048BA40 /* call_state_pause_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EE158F61EA0048BA40 /* call_state_pause_over.png */; }; + D36C43F5158F61EA0048BA40 /* call_state_play_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EF158F61EA0048BA40 /* call_state_play_default.png */; }; + D36C43F6158F61EA0048BA40 /* call_state_play_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EF158F61EA0048BA40 /* call_state_play_default.png */; }; + D36C43F7158F61EA0048BA40 /* call_state_play_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43F0158F61EA0048BA40 /* call_state_play_over.png */; }; + D36C43F8158F61EA0048BA40 /* call_state_play_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43F0158F61EA0048BA40 /* call_state_play_over.png */; }; D36FB2D51589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; }; D36FB2D61589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; }; - D37295CA158B1E2D00D2C0C7 /* registration_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */; }; - D37295CB158B1E2D00D2C0C7 /* registration_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */; }; - D37295DB158B3C9600D2C0C7 /* video-OFF-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */; }; - D37295DC158B3C9600D2C0C7 /* video-OFF-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */; }; - D377BBFA15A19DA6002B696B /* video-ON-disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D377BBF915A19DA6002B696B /* video-ON-disabled.png */; }; - D37B96B715A1A6F20005CCD2 /* supprimer-participant-conf-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* supprimer-participant-conf-actif.png */; }; - D37B96B815A1A6F20005CCD2 /* supprimer-participant-conf-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* supprimer-participant-conf-actif.png */; }; - D37B96B915A1A6F20005CCD2 /* supprimer-participant-conf-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* supprimer-participant-conf-over.png */; }; - D37B96BA15A1A6F20005CCD2 /* supprimer-participant-conf-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* supprimer-participant-conf-over.png */; }; + D37295DB158B3C9600D2C0C7 /* video_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */; }; + D37295DC158B3C9600D2C0C7 /* video_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */; }; + D377BBFA15A19DA6002B696B /* video_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D377BBF915A19DA6002B696B /* video_on_disabled.png */; }; + D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; + D37B96B815A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; + D37B96B915A1A6F20005CCD2 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; }; + D37B96BA15A1A6F20005CCD2 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; }; D37DC6C11594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; D37DC6C21594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; D37DC6ED1594AE6F00B2A5EB /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */; }; @@ -377,36 +365,40 @@ D37DC7161594AE6F00B2A5EB /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6EC1594AE6F00B2A5EB /* IASKSpecifierValuesView.xib */; }; D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; }; D37DC7191594AF3F00B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; }; - D38327F31580FE3A00FA0D23 /* contacts-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EB1580FE3A00FA0D23 /* contacts-actif.png */; }; - D38327F41580FE3A00FA0D23 /* contacts-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */; }; - D38327F51580FE3A00FA0D23 /* dialer-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327ED1580FE3A00FA0D23 /* dialer-actif.png */; }; - D38327F61580FE3A00FA0D23 /* dialer-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EE1580FE3A00FA0D23 /* dialer-over.png */; }; - D38327F71580FE3A00FA0D23 /* settings-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EF1580FE3A00FA0D23 /* settings-actif.png */; }; - D38327F81580FE3A00FA0D23 /* settings-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F01580FE3A00FA0D23 /* settings-selectionne.png */; }; - D38327F91580FE3A00FA0D23 /* tchat-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F11580FE3A00FA0D23 /* tchat-actif.png */; }; - D38327FA1580FE3A00FA0D23 /* tchat-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */; }; - D3832800158100E400FA0D23 /* contacts-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FC158100E400FA0D23 /* contacts-over.png */; }; - D3832801158100E400FA0D23 /* history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history-over.png */; }; - D3832802158100E400FA0D23 /* settings-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings-over.png */; }; - D3832803158100E400FA0D23 /* tchat-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* tchat-over.png */; }; + D38327F31580FE3A00FA0D23 /* contacts_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EB1580FE3A00FA0D23 /* contacts_default.png */; }; + D38327F41580FE3A00FA0D23 /* contacts_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EC1580FE3A00FA0D23 /* contacts_selected.png */; }; + D38327F51580FE3A00FA0D23 /* dialer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327ED1580FE3A00FA0D23 /* dialer_default.png */; }; + D38327F61580FE3A00FA0D23 /* dialer_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EE1580FE3A00FA0D23 /* dialer_over.png */; }; + D38327F71580FE3A00FA0D23 /* settings_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EF1580FE3A00FA0D23 /* settings_default.png */; }; + D38327F81580FE3A00FA0D23 /* settings_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F01580FE3A00FA0D23 /* settings_selected.png */; }; + D38327F91580FE3A00FA0D23 /* chat_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F11580FE3A00FA0D23 /* chat_default.png */; }; + D38327FA1580FE3A00FA0D23 /* chat_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F21580FE3A00FA0D23 /* chat_selected.png */; }; + D3832800158100E400FA0D23 /* contacts_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FC158100E400FA0D23 /* contacts_over.png */; }; + D3832801158100E400FA0D23 /* history_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history_over.png */; }; + D3832802158100E400FA0D23 /* settings_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings_over.png */; }; + D3832803158100E400FA0D23 /* chat_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* chat_over.png */; }; D3A55FBC15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; D3A55FC015877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; + D3C2814B15A2D38D0098AA42 /* dialer_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2814A15A2D38D0098AA42 /* dialer_selected.png */; }; + D3C2814C15A2D38D0098AA42 /* dialer_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2814A15A2D38D0098AA42 /* dialer_selected.png */; }; + D3C2815215A2D64A0098AA42 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; + D3C2815315A2D64A0098AA42 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; D3C714B3159DB84400705B8E /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; D3C714B4159DB84400705B8E /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; - D3D6A39E159B0EEF005F692C /* add_call_more_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_more_default.png */; }; - D3D6A39F159B0EEF005F692C /* add_call_more_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_more_default.png */; }; - D3D6A3A0159B0EEF005F692C /* add_call_more_disable.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */; }; - D3D6A3A1159B0EEF005F692C /* add_call_more_disable.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */; }; - D3D6A3A2159B0EEF005F692C /* add_call_more_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39D159B0EEF005F692C /* add_call_more_over.png */; }; - D3D6A3A3159B0EEF005F692C /* add_call_more_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39D159B0EEF005F692C /* add_call_more_over.png */; }; - D3D6A3AB159B0EFE005F692C /* cadenas-barre.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */; }; - D3D6A3AC159B0EFE005F692C /* cadenas-barre.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */; }; - D3D6A3AD159B0EFE005F692C /* cadenas-interrogation.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */; }; - D3D6A3AE159B0EFE005F692C /* cadenas-interrogation.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */; }; - D3D6A3AF159B0EFE005F692C /* cadenas.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A7159B0EFE005F692C /* cadenas.png */; }; - D3D6A3B0159B0EFE005F692C /* cadenas.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A7159B0EFE005F692C /* cadenas.png */; }; + D3D6A39E159B0EEF005F692C /* add_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_default.png */; }; + D3D6A39F159B0EEF005F692C /* add_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_default.png */; }; + D3D6A3A0159B0EEF005F692C /* add_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_disabled.png */; }; + D3D6A3A1159B0EEF005F692C /* add_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_disabled.png */; }; + D3D6A3A2159B0EEF005F692C /* add_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39D159B0EEF005F692C /* add_call_over.png */; }; + D3D6A3A3159B0EEF005F692C /* add_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39D159B0EEF005F692C /* add_call_over.png */; }; + D3D6A3AB159B0EFE005F692C /* security_ko.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A5159B0EFE005F692C /* security_ko.png */; }; + D3D6A3AC159B0EFE005F692C /* security_ko.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A5159B0EFE005F692C /* security_ko.png */; }; + D3D6A3AD159B0EFE005F692C /* security_pending.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A6159B0EFE005F692C /* security_pending.png */; }; + D3D6A3AE159B0EFE005F692C /* security_pending.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A6159B0EFE005F692C /* security_pending.png */; }; + D3D6A3AF159B0EFE005F692C /* security_ok.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A7159B0EFE005F692C /* security_ok.png */; }; + D3D6A3B0159B0EFE005F692C /* security_ok.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A7159B0EFE005F692C /* security_ok.png */; }; D3D6A3B1159B0EFE005F692C /* options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A8159B0EFE005F692C /* options_default.png */; }; D3D6A3B2159B0EFE005F692C /* options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A8159B0EFE005F692C /* options_default.png */; }; D3D6A3B3159B0EFE005F692C /* options_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A9159B0EFE005F692C /* options_disabled.png */; }; @@ -415,60 +407,60 @@ D3D6A3B6159B0EFE005F692C /* options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3AA159B0EFE005F692C /* options_over.png */; }; D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; }; D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; }; - D3EA5403159852080037DC6B /* tchat-edit-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* tchat-edit-actif.png */; }; - D3EA5404159852080037DC6B /* tchat-edit-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* tchat-edit-actif.png */; }; - D3EA5405159852080037DC6B /* tchat-edit-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5400159852080037DC6B /* tchat-edit-over.png */; }; - D3EA5406159852080037DC6B /* tchat-edit-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5400159852080037DC6B /* tchat-edit-over.png */; }; - D3EA5407159852080037DC6B /* tchat-new-discussion-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5401159852080037DC6B /* tchat-new-discussion-actif.png */; }; - D3EA5408159852080037DC6B /* tchat-new-discussion-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5401159852080037DC6B /* tchat-new-discussion-actif.png */; }; - D3EA5409159852080037DC6B /* tchat-new-discussion-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5402159852080037DC6B /* tchat-new-discussion-over.png */; }; - D3EA540A159852080037DC6B /* tchat-new-discussion-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5402159852080037DC6B /* tchat-new-discussion-over.png */; }; + D3EA5403159852080037DC6B /* chat_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* chat_edit_default.png */; }; + D3EA5404159852080037DC6B /* chat_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* chat_edit_default.png */; }; + D3EA5405159852080037DC6B /* chat_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5400159852080037DC6B /* chat_edit_over.png */; }; + D3EA5406159852080037DC6B /* chat_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5400159852080037DC6B /* chat_edit_over.png */; }; + D3EA5407159852080037DC6B /* chat_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5401159852080037DC6B /* chat_add_default.png */; }; + D3EA5408159852080037DC6B /* chat_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5401159852080037DC6B /* chat_add_default.png */; }; + D3EA5409159852080037DC6B /* chat_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5402159852080037DC6B /* chat_add_over.png */; }; + D3EA540A159852080037DC6B /* chat_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5402159852080037DC6B /* chat_add_over.png */; }; D3EA540D1598528B0037DC6B /* ChatTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA540C1598528B0037DC6B /* ChatTableViewController.m */; }; D3EA540E1598528B0037DC6B /* ChatTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA540C1598528B0037DC6B /* ChatTableViewController.m */; }; D3EA5411159853750037DC6B /* UIChatCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA5410159853750037DC6B /* UIChatCell.m */; }; D3EA5412159853750037DC6B /* UIChatCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA5410159853750037DC6B /* UIChatCell.m */; }; D3EA5414159853C90037DC6B /* UIChatCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5413159853C90037DC6B /* UIChatCell.xib */; }; D3EA5415159853C90037DC6B /* UIChatCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5413159853C90037DC6B /* UIChatCell.xib */; }; - D3EA5418159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png */; }; - D3EA5419159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png */; }; - D3EA541A159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5417159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png */; }; - D3EA541B159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5417159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png */; }; - D3ED3E411585FB4A006C0DE4 /* fond-clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */; }; - D3ED3E421585FB4A006C0DE4 /* fond-clavier.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */; }; - D3ED3E451585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */; }; - D3ED3E461585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */; }; - D3ED3E521585FFFD006C0DE4 /* barre-noire-top.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */; }; - D3ED3E531585FFFD006C0DE4 /* barre-noire-top.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */; }; - D3ED3E6A15861A53006C0DE4 /* add-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */; }; - D3ED3E6B15861A53006C0DE4 /* add-contact-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */; }; - D3ED3E6C15861A53006C0DE4 /* add-contact-inactif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */; }; - D3ED3E6D15861A53006C0DE4 /* add-contact-inactif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */; }; - D3ED3E6E15861A53006C0DE4 /* add-contact-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6915861A53006C0DE4 /* add-contact-over.png */; }; - D3ED3E6F15861A53006C0DE4 /* add-contact-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6915861A53006C0DE4 /* add-contact-over.png */; }; - D3ED3E7215861ABD006C0DE4 /* appeler-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */; }; - D3ED3E7315861ABD006C0DE4 /* appeler-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */; }; - D3ED3E7415861ABD006C0DE4 /* appeler-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7115861ABD006C0DE4 /* appeler-over.png */; }; - D3ED3E7515861ABD006C0DE4 /* appeler-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7115861ABD006C0DE4 /* appeler-over.png */; }; - D3ED3E7815861B1B006C0DE4 /* backspace-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */; }; - D3ED3E7915861B1B006C0DE4 /* backspace-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */; }; - D3ED3E7A15861B1B006C0DE4 /* backspace-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7715861B1B006C0DE4 /* backspace-over.png */; }; - D3ED3E7B15861B1B006C0DE4 /* backspace-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7715861B1B006C0DE4 /* backspace-over.png */; }; + D3EA5418159858A80037DC6B /* list_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* list_delete_default.png */; }; + D3EA5419159858A80037DC6B /* list_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* list_delete_default.png */; }; + D3EA541A159858A80037DC6B /* list_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5417159858A80037DC6B /* list_delete_over.png */; }; + D3EA541B159858A80037DC6B /* list_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5417159858A80037DC6B /* list_delete_over.png */; }; + D3ED3E411585FB4A006C0DE4 /* numpad_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* numpad_background.png */; }; + D3ED3E421585FB4A006C0DE4 /* numpad_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* numpad_background.png */; }; + D3ED3E451585FB8C006C0DE4 /* dialer_address_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */; }; + D3ED3E461585FB8C006C0DE4 /* dialer_address_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */; }; + D3ED3E521585FFFD006C0DE4 /* statebar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* statebar_background.png */; }; + D3ED3E531585FFFD006C0DE4 /* statebar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* statebar_background.png */; }; + D3ED3E6A15861A53006C0DE4 /* add_contact_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add_contact_default.png */; }; + D3ED3E6B15861A53006C0DE4 /* add_contact_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add_contact_default.png */; }; + D3ED3E6C15861A53006C0DE4 /* add_contact_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6815861A53006C0DE4 /* add_contact_disabled.png */; }; + D3ED3E6D15861A53006C0DE4 /* add_contact_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6815861A53006C0DE4 /* add_contact_disabled.png */; }; + D3ED3E6E15861A53006C0DE4 /* add_contact_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6915861A53006C0DE4 /* add_contact_over.png */; }; + D3ED3E6F15861A53006C0DE4 /* add_contact_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6915861A53006C0DE4 /* add_contact_over.png */; }; + D3ED3E7215861ABD006C0DE4 /* call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7015861ABD006C0DE4 /* call_default.png */; }; + D3ED3E7315861ABD006C0DE4 /* call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7015861ABD006C0DE4 /* call_default.png */; }; + D3ED3E7415861ABD006C0DE4 /* call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7115861ABD006C0DE4 /* call_over.png */; }; + D3ED3E7515861ABD006C0DE4 /* call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7115861ABD006C0DE4 /* call_over.png */; }; + D3ED3E7815861B1B006C0DE4 /* backspace_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7615861B1B006C0DE4 /* backspace_default.png */; }; + D3ED3E7915861B1B006C0DE4 /* backspace_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7615861B1B006C0DE4 /* backspace_default.png */; }; + D3ED3E7A15861B1B006C0DE4 /* backspace_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7715861B1B006C0DE4 /* backspace_over.png */; }; + D3ED3E7B15861B1B006C0DE4 /* backspace_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7715861B1B006C0DE4 /* backspace_over.png */; }; D3ED3E871586291E006C0DE4 /* UIMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* UIMainBar.m */; }; D3ED3E881586291E006C0DE4 /* UIMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* UIMainBar.m */; }; D3ED3E891586291E006C0DE4 /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* UIMainBar.xib */; }; D3ED3E8A1586291E006C0DE4 /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* UIMainBar.xib */; }; - D3ED3E9815872EF1006C0DE4 /* all-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */; }; - D3ED3E9915872EF1006C0DE4 /* all-call-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */; }; - D3ED3E9A15872EF1006C0DE4 /* all-call-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */; }; - D3ED3E9B15872EF1006C0DE4 /* all-call-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */; }; - D3ED3E9C15872EF1006C0DE4 /* edit-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */; }; - D3ED3E9D15872EF1006C0DE4 /* edit-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */; }; - D3ED3E9E15872EF1006C0DE4 /* edit-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */; }; - D3ED3E9F15872EF1006C0DE4 /* edit-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */; }; - D3ED3EA015872EF1006C0DE4 /* missed-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* missed-actif.png */; }; - D3ED3EA115872EF1006C0DE4 /* missed-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* missed-actif.png */; }; - D3ED3EA215872EF1006C0DE4 /* missed-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */; }; - D3ED3EA315872EF1006C0DE4 /* missed-selectionne.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */; }; + D3ED3E9815872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_default.png */; }; + D3ED3E9915872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_default.png */; }; + D3ED3E9A15872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */; }; + D3ED3E9B15872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */; }; + D3ED3E9C15872EF1006C0DE4 /* history_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */; }; + D3ED3E9D15872EF1006C0DE4 /* history_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */; }; + D3ED3E9E15872EF1006C0DE4 /* history_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */; }; + D3ED3E9F15872EF1006C0DE4 /* history_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */; }; + D3ED3EA015872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */; }; + D3ED3EA115872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */; }; + D3ED3EA215872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */; }; + D3ED3EA315872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */; }; D3ED3EA71587334E006C0DE4 /* HistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */; }; D3ED3EA81587334E006C0DE4 /* HistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */; }; D3ED3EB3158738FB006C0DE4 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; }; @@ -481,120 +473,110 @@ D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */; }; D3F26BF315986B73005F9CAB /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; }; D3F26BF415986B73005F9CAB /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; }; - D3F26BF715986DAD005F9CAB /* ok-edit-list-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF515986DAD005F9CAB /* ok-edit-list-history-actif.png */; }; - D3F26BF815986DAD005F9CAB /* ok-edit-list-history-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF515986DAD005F9CAB /* ok-edit-list-history-actif.png */; }; - D3F26BF915986DAD005F9CAB /* ok-edit-list-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* ok-edit-list-history-over.png */; }; - D3F26BFA15986DAD005F9CAB /* ok-edit-list-history-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* ok-edit-list-history-over.png */; }; - D3F26BFC15987083005F9CAB /* champ-titre-incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* champ-titre-incoming.png */; }; - D3F26BFD15987083005F9CAB /* champ-titre-incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* champ-titre-incoming.png */; }; - D3F34F301599B008005BE94F /* ombre-cotes-avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* ombre-cotes-avatar.png */; }; - D3F34F311599B008005BE94F /* ombre-cotes-avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* ombre-cotes-avatar.png */; }; + D3F26BF715986DAD005F9CAB /* history_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF515986DAD005F9CAB /* history_ok_default.png */; }; + D3F26BF815986DAD005F9CAB /* history_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF515986DAD005F9CAB /* history_ok_default.png */; }; + D3F26BF915986DAD005F9CAB /* history_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* history_ok_over.png */; }; + D3F26BFA15986DAD005F9CAB /* history_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* history_ok_over.png */; }; + D3F26BFC15987083005F9CAB /* header_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* header_incoming.png */; }; + D3F26BFD15987083005F9CAB /* header_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* header_incoming.png */; }; + D3F34F301599B008005BE94F /* avatar_shadow.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* avatar_shadow.png */; }; + D3F34F311599B008005BE94F /* avatar_shadow.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* avatar_shadow.png */; }; D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; - D3F83F08158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */; }; - D3F83F09158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */; }; - D3F83F0A158205A100336684 /* dialer-meteo-sortir-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */; }; - D3F83F0B158205A100336684 /* dialer-meteo-sortir-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */; }; - D3F83F0C158205A100336684 /* micro-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF4158205A100336684 /* micro-OFF-actif.png */; }; - D3F83F0D158205A100336684 /* micro-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF4158205A100336684 /* micro-OFF-actif.png */; }; - D3F83F0E158205A100336684 /* micro-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF5158205A100336684 /* micro-OFF-over.png */; }; - D3F83F0F158205A100336684 /* micro-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF5158205A100336684 /* micro-OFF-over.png */; }; - D3F83F10158205A100336684 /* micro-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF6158205A100336684 /* micro-ON-actif.png */; }; - D3F83F11158205A100336684 /* micro-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF6158205A100336684 /* micro-ON-actif.png */; }; - D3F83F12158205A100336684 /* micro-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF7158205A100336684 /* micro-ON-over.png */; }; - D3F83F13158205A100336684 /* micro-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF7158205A100336684 /* micro-ON-over.png */; }; - D3F83F14158205A100336684 /* pause-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF8158205A100336684 /* pause-actif.png */; }; - D3F83F15158205A100336684 /* pause-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF8158205A100336684 /* pause-actif.png */; }; - D3F83F16158205A100336684 /* pause-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF9158205A100336684 /* pause-over.png */; }; - D3F83F17158205A100336684 /* pause-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF9158205A100336684 /* pause-over.png */; }; - D3F83F18158205A100336684 /* raccrocher-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFA158205A100336684 /* raccrocher-actif.png */; }; - D3F83F19158205A100336684 /* raccrocher-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFA158205A100336684 /* raccrocher-actif.png */; }; - D3F83F1A158205A100336684 /* raccrocher-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFB158205A100336684 /* raccrocher-over.png */; }; - D3F83F1B158205A100336684 /* raccrocher-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFB158205A100336684 /* raccrocher-over.png */; }; - D3F83F1C158205A100336684 /* speacker-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFC158205A100336684 /* speacker-OFF-actif.png */; }; - D3F83F1D158205A100336684 /* speacker-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFC158205A100336684 /* speacker-OFF-actif.png */; }; - D3F83F1E158205A100336684 /* speacker-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFD158205A100336684 /* speacker-OFF-over.png */; }; - D3F83F1F158205A100336684 /* speacker-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFD158205A100336684 /* speacker-OFF-over.png */; }; - D3F83F20158205A100336684 /* speacker-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFE158205A100336684 /* speacker-ON-actif.png */; }; - D3F83F21158205A100336684 /* speacker-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFE158205A100336684 /* speacker-ON-actif.png */; }; - D3F83F22158205A100336684 /* speacker-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFF158205A100336684 /* speacker-ON-over.png */; }; - D3F83F23158205A100336684 /* speacker-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFF158205A100336684 /* speacker-ON-over.png */; }; - D3F83F24158205A100336684 /* video-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F00158205A100336684 /* video-OFF-actif.png */; }; - D3F83F25158205A100336684 /* video-OFF-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F00158205A100336684 /* video-OFF-actif.png */; }; - D3F83F26158205A100336684 /* video-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F01158205A100336684 /* video-OFF-over.png */; }; - D3F83F27158205A100336684 /* video-OFF-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F01158205A100336684 /* video-OFF-over.png */; }; - D3F83F28158205A100336684 /* video-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F02158205A100336684 /* video-ON-actif.png */; }; - D3F83F29158205A100336684 /* video-ON-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F02158205A100336684 /* video-ON-actif.png */; }; - D3F83F2A158205A100336684 /* video-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F03158205A100336684 /* video-ON-over.png */; }; - D3F83F2B158205A100336684 /* video-ON-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F03158205A100336684 /* video-ON-over.png */; }; - D3F83F441582223B00336684 /* 0-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2C1582223B00336684 /* 0-actif.png */; }; - D3F83F451582223B00336684 /* 0-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2C1582223B00336684 /* 0-actif.png */; }; - D3F83F461582223B00336684 /* 0-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2D1582223B00336684 /* 0-over.png */; }; - D3F83F471582223B00336684 /* 0-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2D1582223B00336684 /* 0-over.png */; }; - D3F83F481582223B00336684 /* 1-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2E1582223B00336684 /* 1-actif.png */; }; - D3F83F491582223B00336684 /* 1-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2E1582223B00336684 /* 1-actif.png */; }; - D3F83F4A1582223B00336684 /* 1-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2F1582223B00336684 /* 1-over.png */; }; - D3F83F4B1582223B00336684 /* 1-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2F1582223B00336684 /* 1-over.png */; }; - D3F83F4C1582223B00336684 /* 2-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F301582223B00336684 /* 2-actif.png */; }; - D3F83F4D1582223B00336684 /* 2-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F301582223B00336684 /* 2-actif.png */; }; - D3F83F4E1582223B00336684 /* 2-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F311582223B00336684 /* 2-over.png */; }; - D3F83F4F1582223B00336684 /* 2-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F311582223B00336684 /* 2-over.png */; }; - D3F83F501582223B00336684 /* 3-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F321582223B00336684 /* 3-actif.png */; }; - D3F83F511582223B00336684 /* 3-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F321582223B00336684 /* 3-actif.png */; }; - D3F83F521582223B00336684 /* 3-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F331582223B00336684 /* 3-over.png */; }; - D3F83F531582223B00336684 /* 3-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F331582223B00336684 /* 3-over.png */; }; - D3F83F541582223B00336684 /* 4-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F341582223B00336684 /* 4-actif.png */; }; - D3F83F551582223B00336684 /* 4-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F341582223B00336684 /* 4-actif.png */; }; - D3F83F561582223B00336684 /* 4-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F351582223B00336684 /* 4-over.png */; }; - D3F83F571582223B00336684 /* 4-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F351582223B00336684 /* 4-over.png */; }; - D3F83F581582223B00336684 /* 5-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F361582223B00336684 /* 5-actif.png */; }; - D3F83F591582223B00336684 /* 5-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F361582223B00336684 /* 5-actif.png */; }; - D3F83F5A1582223B00336684 /* 5-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F371582223B00336684 /* 5-over.png */; }; - D3F83F5B1582223B00336684 /* 5-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F371582223B00336684 /* 5-over.png */; }; - D3F83F5C1582223B00336684 /* 6-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F381582223B00336684 /* 6-actif.png */; }; - D3F83F5D1582223B00336684 /* 6-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F381582223B00336684 /* 6-actif.png */; }; - D3F83F5E1582223B00336684 /* 6-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F391582223B00336684 /* 6-over.png */; }; - D3F83F5F1582223B00336684 /* 6-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F391582223B00336684 /* 6-over.png */; }; - D3F83F601582223B00336684 /* 7-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3A1582223B00336684 /* 7-actif.png */; }; - D3F83F611582223B00336684 /* 7-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3A1582223B00336684 /* 7-actif.png */; }; - D3F83F621582223B00336684 /* 7-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3B1582223B00336684 /* 7-over.png */; }; - D3F83F631582223B00336684 /* 7-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3B1582223B00336684 /* 7-over.png */; }; - D3F83F641582223B00336684 /* 8-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3C1582223B00336684 /* 8-actif.png */; }; - D3F83F651582223B00336684 /* 8-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3C1582223B00336684 /* 8-actif.png */; }; - D3F83F661582223B00336684 /* 8-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3D1582223B00336684 /* 8-over.png */; }; - D3F83F671582223B00336684 /* 8-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3D1582223B00336684 /* 8-over.png */; }; - D3F83F681582223B00336684 /* 9-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3E1582223B00336684 /* 9-actif.png */; }; - D3F83F691582223B00336684 /* 9-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3E1582223B00336684 /* 9-actif.png */; }; - D3F83F6A1582223B00336684 /* 9-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3F1582223B00336684 /* 9-over.png */; }; - D3F83F6B1582223B00336684 /* 9-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3F1582223B00336684 /* 9-over.png */; }; - D3F83F6C1582223B00336684 /* diese-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F401582223B00336684 /* diese-actif.png */; }; - D3F83F6D1582223B00336684 /* diese-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F401582223B00336684 /* diese-actif.png */; }; - D3F83F6E1582223B00336684 /* diese-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F411582223B00336684 /* diese-over.png */; }; - D3F83F6F1582223B00336684 /* diese-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F411582223B00336684 /* diese-over.png */; }; - D3F83F701582223B00336684 /* etoile-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F421582223B00336684 /* etoile-actif.png */; }; - D3F83F711582223B00336684 /* etoile-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F421582223B00336684 /* etoile-actif.png */; }; - D3F83F721582223B00336684 /* etoile-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F431582223B00336684 /* etoile-over.png */; }; - D3F83F731582223B00336684 /* etoile-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F431582223B00336684 /* etoile-over.png */; }; - D3F83F781582253100336684 /* decrocher-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* decrocher-actif.png */; }; - D3F83F791582253100336684 /* decrocher-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* decrocher-actif.png */; }; - D3F83F7A1582253100336684 /* decrocher-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F751582253100336684 /* decrocher-over.png */; }; - D3F83F7B1582253100336684 /* decrocher-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F751582253100336684 /* decrocher-over.png */; }; - D3F83F7C1582253100336684 /* refuser-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F761582253100336684 /* refuser-actif.png */; }; - D3F83F7D1582253100336684 /* refuser-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F761582253100336684 /* refuser-actif.png */; }; - D3F83F7E1582253100336684 /* refuser-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F771582253100336684 /* refuser-over.png */; }; - D3F83F7F1582253100336684 /* refuser-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F771582253100336684 /* refuser-over.png */; }; - D3F83F841582278D00336684 /* cancel-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F801582278D00336684 /* cancel-actif.png */; }; - D3F83F851582278D00336684 /* cancel-actif.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F801582278D00336684 /* cancel-actif.png */; }; - D3F83F861582278D00336684 /* cancel-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F811582278D00336684 /* cancel-over.png */; }; - D3F83F871582278D00336684 /* cancel-over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F811582278D00336684 /* cancel-over.png */; }; - D3F83F881582278D00336684 /* contact-actif-add-call.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F821582278D00336684 /* contact-actif-add-call.png */; }; - D3F83F891582278D00336684 /* contact-actif-add-call.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F821582278D00336684 /* contact-actif-add-call.png */; }; - D3F83F8A1582278D00336684 /* contact-over-add-call.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F831582278D00336684 /* contact-over-add-call.png */; }; - D3F83F8B1582278D00336684 /* contact-over-add-call.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F831582278D00336684 /* contact-over-add-call.png */; }; + D3F83F0C158205A100336684 /* micro_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF4158205A100336684 /* micro_off_default.png */; }; + D3F83F0D158205A100336684 /* micro_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF4158205A100336684 /* micro_off_default.png */; }; + D3F83F0E158205A100336684 /* micro_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF5158205A100336684 /* micro_off_over.png */; }; + D3F83F0F158205A100336684 /* micro_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF5158205A100336684 /* micro_off_over.png */; }; + D3F83F10158205A100336684 /* micro_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF6158205A100336684 /* micro_on_default.png */; }; + D3F83F11158205A100336684 /* micro_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF6158205A100336684 /* micro_on_default.png */; }; + D3F83F12158205A100336684 /* micro_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF7158205A100336684 /* micro_on_over.png */; }; + D3F83F13158205A100336684 /* micro_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF7158205A100336684 /* micro_on_over.png */; }; + D3F83F14158205A100336684 /* pause_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF8158205A100336684 /* pause_off_default.png */; }; + D3F83F15158205A100336684 /* pause_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF8158205A100336684 /* pause_off_default.png */; }; + D3F83F16158205A100336684 /* pause_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF9158205A100336684 /* pause_off_over.png */; }; + D3F83F17158205A100336684 /* pause_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF9158205A100336684 /* pause_off_over.png */; }; + D3F83F18158205A100336684 /* hangup_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFA158205A100336684 /* hangup_default.png */; }; + D3F83F19158205A100336684 /* hangup_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFA158205A100336684 /* hangup_default.png */; }; + D3F83F1A158205A100336684 /* hangup_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFB158205A100336684 /* hangup_over.png */; }; + D3F83F1B158205A100336684 /* hangup_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFB158205A100336684 /* hangup_over.png */; }; + D3F83F1C158205A100336684 /* speaker_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFC158205A100336684 /* speaker_off_default.png */; }; + D3F83F1D158205A100336684 /* speaker_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFC158205A100336684 /* speaker_off_default.png */; }; + D3F83F1E158205A100336684 /* speaker_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFD158205A100336684 /* speaker_off_over.png */; }; + D3F83F1F158205A100336684 /* speaker_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFD158205A100336684 /* speaker_off_over.png */; }; + D3F83F20158205A100336684 /* speaker_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFE158205A100336684 /* speaker_on_default.png */; }; + D3F83F21158205A100336684 /* speaker_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFE158205A100336684 /* speaker_on_default.png */; }; + D3F83F22158205A100336684 /* speaker_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFF158205A100336684 /* speaker_on_over.png */; }; + D3F83F23158205A100336684 /* speaker_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFF158205A100336684 /* speaker_on_over.png */; }; + D3F83F24158205A100336684 /* video_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F00158205A100336684 /* video_off_default.png */; }; + D3F83F25158205A100336684 /* video_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F00158205A100336684 /* video_off_default.png */; }; + D3F83F26158205A100336684 /* video_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F01158205A100336684 /* video_off_over.png */; }; + D3F83F27158205A100336684 /* video_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F01158205A100336684 /* video_off_over.png */; }; + D3F83F28158205A100336684 /* video_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F02158205A100336684 /* video_on_default.png */; }; + D3F83F29158205A100336684 /* video_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F02158205A100336684 /* video_on_default.png */; }; + D3F83F2A158205A100336684 /* video_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F03158205A100336684 /* video_on_over.png */; }; + D3F83F2B158205A100336684 /* video_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F03158205A100336684 /* video_on_over.png */; }; + D3F83F441582223B00336684 /* numpad_zero_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2C1582223B00336684 /* numpad_zero_default.png */; }; + D3F83F451582223B00336684 /* numpad_zero_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2C1582223B00336684 /* numpad_zero_default.png */; }; + D3F83F461582223B00336684 /* numpad_zero_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2D1582223B00336684 /* numpad_zero_over.png */; }; + D3F83F471582223B00336684 /* numpad_zero_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2D1582223B00336684 /* numpad_zero_over.png */; }; + D3F83F481582223B00336684 /* numpad_one_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2E1582223B00336684 /* numpad_one_default.png */; }; + D3F83F491582223B00336684 /* numpad_one_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2E1582223B00336684 /* numpad_one_default.png */; }; + D3F83F4A1582223B00336684 /* numpad_one_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2F1582223B00336684 /* numpad_one_over.png */; }; + D3F83F4B1582223B00336684 /* numpad_one_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2F1582223B00336684 /* numpad_one_over.png */; }; + D3F83F4C1582223B00336684 /* numpad_two_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F301582223B00336684 /* numpad_two_default.png */; }; + D3F83F4D1582223B00336684 /* numpad_two_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F301582223B00336684 /* numpad_two_default.png */; }; + D3F83F4E1582223B00336684 /* numpad_two_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F311582223B00336684 /* numpad_two_over.png */; }; + D3F83F4F1582223B00336684 /* numpad_two_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F311582223B00336684 /* numpad_two_over.png */; }; + D3F83F501582223B00336684 /* numpad_three_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F321582223B00336684 /* numpad_three_default.png */; }; + D3F83F511582223B00336684 /* numpad_three_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F321582223B00336684 /* numpad_three_default.png */; }; + D3F83F521582223B00336684 /* numpad_three_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F331582223B00336684 /* numpad_three_over.png */; }; + D3F83F531582223B00336684 /* numpad_three_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F331582223B00336684 /* numpad_three_over.png */; }; + D3F83F541582223B00336684 /* numpad_four_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F341582223B00336684 /* numpad_four_default.png */; }; + D3F83F551582223B00336684 /* numpad_four_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F341582223B00336684 /* numpad_four_default.png */; }; + D3F83F561582223B00336684 /* numpad_four_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F351582223B00336684 /* numpad_four_over.png */; }; + D3F83F571582223B00336684 /* numpad_four_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F351582223B00336684 /* numpad_four_over.png */; }; + D3F83F581582223B00336684 /* numpad_five_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F361582223B00336684 /* numpad_five_default.png */; }; + D3F83F591582223B00336684 /* numpad_five_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F361582223B00336684 /* numpad_five_default.png */; }; + D3F83F5A1582223B00336684 /* numpad_five_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F371582223B00336684 /* numpad_five_over.png */; }; + D3F83F5B1582223B00336684 /* numpad_five_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F371582223B00336684 /* numpad_five_over.png */; }; + D3F83F5C1582223B00336684 /* numpad_six_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F381582223B00336684 /* numpad_six_default.png */; }; + D3F83F5D1582223B00336684 /* numpad_six_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F381582223B00336684 /* numpad_six_default.png */; }; + D3F83F5E1582223B00336684 /* numpad_six_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F391582223B00336684 /* numpad_six_over.png */; }; + D3F83F5F1582223B00336684 /* numpad_six_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F391582223B00336684 /* numpad_six_over.png */; }; + D3F83F601582223B00336684 /* numpad_seven_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3A1582223B00336684 /* numpad_seven_default.png */; }; + D3F83F611582223B00336684 /* numpad_seven_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3A1582223B00336684 /* numpad_seven_default.png */; }; + D3F83F621582223B00336684 /* numpad_seven_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3B1582223B00336684 /* numpad_seven_over.png */; }; + D3F83F631582223B00336684 /* numpad_seven_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3B1582223B00336684 /* numpad_seven_over.png */; }; + D3F83F641582223B00336684 /* numpad_eight_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3C1582223B00336684 /* numpad_eight_default.png */; }; + D3F83F651582223B00336684 /* numpad_eight_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3C1582223B00336684 /* numpad_eight_default.png */; }; + D3F83F661582223B00336684 /* numpad_eight_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3D1582223B00336684 /* numpad_eight_over.png */; }; + D3F83F671582223B00336684 /* numpad_eight_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3D1582223B00336684 /* numpad_eight_over.png */; }; + D3F83F681582223B00336684 /* numpad_nine_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3E1582223B00336684 /* numpad_nine_default.png */; }; + D3F83F691582223B00336684 /* numpad_nine_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3E1582223B00336684 /* numpad_nine_default.png */; }; + D3F83F6A1582223B00336684 /* numpad_nine_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3F1582223B00336684 /* numpad_nine_over.png */; }; + D3F83F6B1582223B00336684 /* numpad_nine_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3F1582223B00336684 /* numpad_nine_over.png */; }; + D3F83F6C1582223B00336684 /* numpad_sharp_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F401582223B00336684 /* numpad_sharp_default.png */; }; + D3F83F6D1582223B00336684 /* numpad_sharp_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F401582223B00336684 /* numpad_sharp_default.png */; }; + D3F83F6E1582223B00336684 /* numpad_sharp_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F411582223B00336684 /* numpad_sharp_over.png */; }; + D3F83F6F1582223B00336684 /* numpad_sharp_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F411582223B00336684 /* numpad_sharp_over.png */; }; + D3F83F721582223B00336684 /* numpad_star_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F431582223B00336684 /* numpad_star_default.png */; }; + D3F83F731582223B00336684 /* numpad_star_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F431582223B00336684 /* numpad_star_default.png */; }; + D3F83F781582253100336684 /* accept_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* accept_default.png */; }; + D3F83F791582253100336684 /* accept_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* accept_default.png */; }; + D3F83F7A1582253100336684 /* accept_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F751582253100336684 /* accept_over.png */; }; + D3F83F7B1582253100336684 /* accept_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F751582253100336684 /* accept_over.png */; }; + D3F83F7C1582253100336684 /* decline_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F761582253100336684 /* decline_default.png */; }; + D3F83F7D1582253100336684 /* decline_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F761582253100336684 /* decline_default.png */; }; + D3F83F7E1582253100336684 /* decline_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F771582253100336684 /* decline_over.png */; }; + D3F83F7F1582253100336684 /* decline_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F771582253100336684 /* decline_over.png */; }; + D3F83F841582278D00336684 /* cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F801582278D00336684 /* cancel_default.png */; }; + D3F83F851582278D00336684 /* cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F801582278D00336684 /* cancel_default.png */; }; + D3F83F861582278D00336684 /* cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F811582278D00336684 /* cancel_over.png */; }; + D3F83F871582278D00336684 /* cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F811582278D00336684 /* cancel_over.png */; }; D3F83F8E15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; D3F83F8F15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; D3F83F9215824D3600336684 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; @@ -630,7 +612,7 @@ 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneAppDelegate.m; sourceTree = ""; }; 1D6058910D05DD3D006BFB54 /* linphone.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = linphone.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - 22058C70116E305000B08DDD /* icone-linphone-57.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "icone-linphone-57.png"; path = "Resources/icone-linphone-57.png"; sourceTree = ""; }; + 22058C70116E305000B08DDD /* linphone_icon_57.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_57.png; path = Resources/linphone_icon_57.png; sourceTree = ""; }; 220FAC79107654FC0068D98F /* eX_call.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eX_call.h; sourceTree = ""; }; 220FAC7A107654FC0068D98F /* eX_message.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eX_message.h; sourceTree = ""; }; 220FAC7B107654FC0068D98F /* eX_options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eX_options.h; sourceTree = ""; }; @@ -760,8 +742,6 @@ 2218A92212FBE1340088A667 /* FirstLoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstLoginViewController.h; sourceTree = ""; }; 2218A92312FBE1340088A667 /* FirstLoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirstLoginViewController.m; sourceTree = ""; }; 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FirstLoginViewController.xib; sourceTree = ""; }; - 22226C11118197C0000CA27B /* startcall-green.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "startcall-green.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/startcall-green.png"; sourceTree = ""; }; - 22226C13118197EC000CA27B /* stopcall-red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "stopcall-red.png"; path = "liblinphone-sdk/apple-darwin/share/pixmaps/linphone/stopcall-red.png"; sourceTree = ""; }; 22276E8013C73D3100210156 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "liblinphone-sdk/apple-darwin/lib/libavcodec.a"; sourceTree = ""; }; 22276E8113C73D3100210156 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = "liblinphone-sdk/apple-darwin/lib/libavutil.a"; sourceTree = ""; }; 22276E8213C73D3100210156 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = "liblinphone-sdk/apple-darwin/lib/libswscale.a"; sourceTree = ""; }; @@ -770,8 +750,6 @@ 223148E31178A08200637D6A /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = ""; }; 223148E51178A09900637D6A /* libmsilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsilbc.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsilbc.a"; sourceTree = ""; }; 2237D4081084D7A9001383EE /* oldphone-mono.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "oldphone-mono.wav"; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/oldphone-mono.wav"; sourceTree = ""; }; - 223963151393CFAE001DE689 /* FastAddressBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FastAddressBook.h; sourceTree = ""; }; - 223963161393CFAF001DE689 /* FastAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FastAddressBook.m; sourceTree = ""; }; 2242E312125235120061DDCE /* oldphone-mono-30s.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "oldphone-mono-30s.caf"; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/oldphone-mono-30s.caf"; sourceTree = ""; }; 224567C1107B968500F10948 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDigitButton.h; sourceTree = ""; }; @@ -793,7 +771,6 @@ 22744056106F9BC9006EC466 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; 2274550710700509006EC466 /* linphonerc */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = linphonerc; sourceTree = ""; }; 228697C311AC29B800E9E0CA /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; - 228B19AE130290C500F154D3 /* iTunesArtwork */ = {isa = PBXFileReference; lastKnownFileType = text; name = iTunesArtwork; path = Resources/iTunesArtwork; sourceTree = ""; }; 22968A5D12F875C600588287 /* UISpeakerButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UISpeakerButton.h; sourceTree = ""; }; 22968A5E12F875C600588287 /* UISpeakerButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UISpeakerButton.m; sourceTree = ""; }; 22AA8AFB13D7125500B30535 /* libx264.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libx264.a; path = "liblinphone-sdk/apple-darwin/lib/libx264.a"; sourceTree = ""; }; @@ -899,7 +876,6 @@ 340751E4150E4D0200B89C47 /* CallDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallDelegate.h; sourceTree = ""; }; 340751E5150F38FC00B89C47 /* UIVideoButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIVideoButton.h; sourceTree = ""; }; 340751E6150F38FD00B89C47 /* UIVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIVideoButton.m; sourceTree = ""; }; - 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = nowebcamCIF.jpg; path = submodules/linphone/mediastreamer2/src/nowebcamCIF.jpg; sourceTree = ""; }; 341FCA8D149798210084BC26 /* linphonerc-ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "linphonerc-ipad"; sourceTree = ""; }; 34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoZoomHandler.h; path = LinphoneUI/VideoZoomHandler.h; sourceTree = ""; }; 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VideoZoomHandler.m; path = LinphoneUI/VideoZoomHandler.m; sourceTree = ""; }; @@ -908,9 +884,7 @@ 344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = ""; }; 344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; }; 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; }; - 34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "icone-linphone-72.png"; path = "Resources/icone-linphone-72.png"; sourceTree = ""; }; - 34C7646A14CD5585008E9607 /* dialer-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-orange.png"; path = "submodules/linphone/pixmaps/dialer-orange.png"; sourceTree = ""; }; - 34C7646B14CD5585008E9607 /* history-orange.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-orange.png"; path = "submodules/linphone/pixmaps/history-orange.png"; sourceTree = ""; }; + 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_72.png; path = Resources/linphone_icon_72.png; sourceTree = ""; }; 70571E1913FABCB000CDD3C2 /* rootca.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rootca.pem; path = Resources/rootca.pem; sourceTree = ""; }; 7066FC0B13E830E400EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; }; 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; @@ -918,31 +892,28 @@ 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallTableViewController.h; sourceTree = ""; }; D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallTableViewController.m; sourceTree = ""; }; - D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "start-conference-actif.png"; path = "Resources/start-conference-actif.png"; sourceTree = ""; }; - D31AAF62159B5B6E002C6B02 /* start-conference-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "start-conference-over.png"; path = "Resources/start-conference-over.png"; sourceTree = ""; }; - D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "finir-conference-actif.png"; path = "Resources/finir-conference-actif.png"; sourceTree = ""; }; - D31AAF68159B5C68002C6B02 /* finir-conference-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "finir-conference-over.png"; path = "Resources/finir-conference-over.png"; sourceTree = ""; }; - D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ring-champ-numero-actif.png"; path = "Resources/ring-champ-numero-actif.png"; sourceTree = ""; }; + D31AAF61159B5B6E002C6B02 /* conference_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = conference_default.png; path = Resources/conference_default.png; sourceTree = ""; }; + D31AAF62159B5B6E002C6B02 /* conference_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = conference_over.png; path = Resources/conference_over.png; sourceTree = ""; }; + D31AAF6D159B65E1002C6B02 /* call_state_ringing_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_ringing_default.png; path = Resources/call_state_ringing_default.png; sourceTree = ""; }; D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIHistoryCell.xib; sourceTree = ""; }; D31B4B1E159876C0002E6C72 /* UICompositeViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICompositeViewController.h; sourceTree = ""; }; D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICompositeViewController.m; sourceTree = ""; }; D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UICompositeViewController.xib; sourceTree = ""; }; - D31B4B261598A390002E6C72 /* avatar-inconnu.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "avatar-inconnu.png"; path = "Resources/avatar-inconnu.png"; sourceTree = ""; }; - D31B4B271598A390002E6C72 /* avatar-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "avatar-small.png"; path = "Resources/avatar-small.png"; sourceTree = ""; }; - D31C9C89158A179A00756B45 /* fond-detail-numero.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "fond-detail-numero.png"; path = "Resources/fond-detail-numero.png"; sourceTree = ""; }; - D31C9C8D158A1C1000756B45 /* appel-entrant.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appel-entrant.png"; path = "Resources/appel-entrant.png"; sourceTree = ""; }; - D31C9C8E158A1C1000756B45 /* appel-manque.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appel-manque.png"; path = "Resources/appel-manque.png"; sourceTree = ""; }; - D31C9C8F158A1C1000756B45 /* appel-sortant.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appel-sortant.png"; path = "Resources/appel-sortant.png"; sourceTree = ""; }; + D31B4B261598A390002E6C72 /* avatar_unknown.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = avatar_unknown.png; path = Resources/avatar_unknown.png; sourceTree = ""; }; + D31B4B271598A390002E6C72 /* avatar_unknown_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = avatar_unknown_small.png; path = Resources/avatar_unknown_small.png; sourceTree = ""; }; + D31C9C8D158A1C1000756B45 /* call_status_incoming.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_status_incoming.png; path = Resources/call_status_incoming.png; sourceTree = ""; }; + D31C9C8E158A1C1000756B45 /* call_status_missed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_status_missed.png; path = Resources/call_status_missed.png; sourceTree = ""; }; + D31C9C8F158A1C1000756B45 /* call_status_outgoing.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_status_outgoing.png; path = Resources/call_status_outgoing.png; sourceTree = ""; }; D31C9C96158A1CDE00756B45 /* UIHistoryCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIHistoryCell.h; sourceTree = ""; }; D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIHistoryCell.m; sourceTree = ""; }; - D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "outgoing-champ-numero-actif.png"; path = "Resources/outgoing-champ-numero-actif.png"; sourceTree = ""; }; + D3211BA5159C3D410098460B /* call_state_outgoing_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_outgoing_default.png; path = Resources/call_state_outgoing_default.png; sourceTree = ""; }; D3211BAD159C4EF00098460B /* UIConferenceHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIConferenceHeader.h; sourceTree = ""; }; D3211BAE159C4EF00098460B /* UIConferenceHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIConferenceHeader.m; sourceTree = ""; }; D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIConferenceHeader.xib; sourceTree = ""; }; - D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-courbe-autres-numeros-first.png"; path = "Resources/champ-courbe-autres-numeros-first.png"; sourceTree = ""; }; - D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_white_bg_default.png; path = Resources/cancel_white_bg_default.png; sourceTree = ""; }; - D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_white_bg_disabled.png; path = Resources/cancel_white_bg_disabled.png; sourceTree = ""; }; - D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_white_bg_over.png; path = Resources/cancel_white_bg_over.png; sourceTree = ""; }; + D3211BB8159C8A820098460B /* cell_call_first.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_first.png; path = Resources/cell_call_first.png; sourceTree = ""; }; + D3211BBB159CBFD60098460B /* back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_default.png; path = Resources/back_default.png; sourceTree = ""; }; + D3211BBC159CBFD60098460B /* back_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_disabled.png; path = Resources/back_disabled.png; sourceTree = ""; }; + D3211BBD159CBFD60098460B /* back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_over.png; path = Resources/back_over.png; sourceTree = ""; }; D32409C1158B49A600C8C119 /* UILongTouchButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILongTouchButton.h; sourceTree = ""; }; D32409C2158B49A600C8C119 /* UILongTouchButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UILongTouchButton.m; sourceTree = ""; }; D32460E4159D9AAD00BA7F3A /* UIPassView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPassView.h; sourceTree = ""; }; @@ -959,31 +930,33 @@ D32648421588F6FA00930C67 /* UIToggleButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIToggleButton.h; sourceTree = ""; }; D32648431588F6FB00930C67 /* UIToggleButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIToggleButton.m; sourceTree = ""; }; D32942A31594C94200556A1C /* SettingsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SettingsViewController.xib; sourceTree = ""; }; - D3432A5C158A4446001C6B0B /* status_connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_connected.png; path = Resources/status_connected.png; sourceTree = ""; }; - D3432A5D158A4446001C6B0B /* status_error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_error.png; path = Resources/status_error.png; sourceTree = ""; }; - D3432A5E158A4446001C6B0B /* quality-call-0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "quality-call-0.png"; path = "Resources/quality-call-0.png"; sourceTree = ""; }; - D3432A5F158A4446001C6B0B /* quality-call-1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "quality-call-1.png"; path = "Resources/quality-call-1.png"; sourceTree = ""; }; - D3432A60158A4446001C6B0B /* quality-call-2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "quality-call-2.png"; path = "Resources/quality-call-2.png"; sourceTree = ""; }; - D3432A61158A4446001C6B0B /* quality-call-3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "quality-call-3.png"; path = "Resources/quality-call-3.png"; sourceTree = ""; }; - D3432A6F158A45AF001C6B0B /* status_inprogress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_inprogress.png; path = Resources/status_inprogress.png; sourceTree = ""; }; - D3432A70158A45AF001C6B0B /* status_disconnected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = status_disconnected.png; path = Resources/status_disconnected.png; sourceTree = ""; }; + D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FastAddressBook.h; path = Utils/FastAddressBook.h; sourceTree = ""; }; + D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FastAddressBook.m; path = Utils/FastAddressBook.m; sourceTree = ""; }; + D3432A5C158A4446001C6B0B /* led_connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_connected.png; path = Resources/led_connected.png; sourceTree = ""; }; + D3432A5D158A4446001C6B0B /* led_error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_error.png; path = Resources/led_error.png; sourceTree = ""; }; + D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_quality_indicator_0.png; path = Resources/call_quality_indicator_0.png; sourceTree = ""; }; + D3432A5F158A4446001C6B0B /* call_quality_indicator_1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_quality_indicator_1.png; path = Resources/call_quality_indicator_1.png; sourceTree = ""; }; + D3432A60158A4446001C6B0B /* call_quality_indicator_2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_quality_indicator_2.png; path = Resources/call_quality_indicator_2.png; sourceTree = ""; }; + D3432A61158A4446001C6B0B /* call_quality_indicator_3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_quality_indicator_3.png; path = Resources/call_quality_indicator_3.png; sourceTree = ""; }; + D3432A6F158A45AF001C6B0B /* led_inprogress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_inprogress.png; path = Resources/led_inprogress.png; sourceTree = ""; }; + D3432A70158A45AF001C6B0B /* led_disconnected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_disconnected.png; path = Resources/led_disconnected.png; sourceTree = ""; }; D34734791580DDF1003C7B8C /* PhoneMainView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PhoneMainView.xib; sourceTree = ""; }; - D347347C1580E5F8003C7B8C /* history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-actif.png"; path = "Resources/history-actif.png"; sourceTree = ""; }; - D347347D1580E5F8003C7B8C /* history-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-selectionne.png"; path = "Resources/history-selectionne.png"; sourceTree = ""; }; + D347347C1580E5F8003C7B8C /* history_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_default.png; path = Resources/history_default.png; sourceTree = ""; }; + D347347D1580E5F8003C7B8C /* history_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_selected.png; path = Resources/history_selected.png; sourceTree = ""; }; D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = InAppSettings.bundle; sourceTree = ""; }; D35497FB15875372000081D8 /* ContactsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsViewController.h; sourceTree = ""; }; D35497FC15875372000081D8 /* ContactsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactsViewController.m; sourceTree = ""; }; D35497FD15875372000081D8 /* ContactsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactsViewController.xib; sourceTree = ""; }; - D354980215875534000081D8 /* all-contacts-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-contacts-actif.png"; path = "Resources/all-contacts-actif.png"; sourceTree = ""; }; - D354980315875534000081D8 /* all-contacts-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-contacts-selectionne.png"; path = "Resources/all-contacts-selectionne.png"; sourceTree = ""; }; - D354980415875534000081D8 /* linphone-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "linphone-actif.png"; path = "Resources/linphone-actif.png"; sourceTree = ""; }; - D354980515875534000081D8 /* linphone-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "linphone-selectionne.png"; path = "Resources/linphone-selectionne.png"; sourceTree = ""; }; - D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-depuis-detail-actif.png"; path = "Resources/add-contact-depuis-detail-actif.png"; sourceTree = ""; }; - D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-depuis-detail-over.png"; path = "Resources/add-contact-depuis-detail-over.png"; sourceTree = ""; }; + D354980215875534000081D8 /* contacts_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_default.png; path = Resources/contacts_all_default.png; sourceTree = ""; }; + D354980315875534000081D8 /* contacts_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_selected.png; path = Resources/contacts_all_selected.png; sourceTree = ""; }; + D354980415875534000081D8 /* contacts_linphone_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_linphone_default.png; path = Resources/contacts_linphone_default.png; sourceTree = ""; }; + D354980515875534000081D8 /* contacts_linphone_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_linphone_selected.png; path = Resources/contacts_linphone_selected.png; sourceTree = ""; }; + D354980E15875608000081D8 /* contacts_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_add_default.png; path = Resources/contacts_add_default.png; sourceTree = ""; }; + D354980F15875608000081D8 /* contacts_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_add_over.png; path = Resources/contacts_add_over.png; sourceTree = ""; }; D3549814158761CF000081D8 /* ContactsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsTableViewController.h; sourceTree = ""; }; D3549815158761D0000081D8 /* ContactsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactsTableViewController.m; sourceTree = ""; }; - D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bouton-detail-contact-actif.png"; path = "Resources/bouton-detail-contact-actif.png"; sourceTree = ""; }; - D354981915876FE7000081D8 /* bouton-detail-contact-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "bouton-detail-contact-over.png"; path = "Resources/bouton-detail-contact-over.png"; sourceTree = ""; }; + D354981815876FE7000081D8 /* list_details_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_details_default.png; path = Resources/list_details_default.png; sourceTree = ""; }; + D354981915876FE7000081D8 /* list_details_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_details_over.png; path = Resources/list_details_over.png; sourceTree = ""; }; D354981E1587716B000081D8 /* UIStateBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIStateBar.h; sourceTree = ""; }; D354981F1587716B000081D8 /* UIStateBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIStateBar.m; sourceTree = ""; }; D35498201587716B000081D8 /* UIStateBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIStateBar.xib; sourceTree = ""; }; @@ -991,34 +964,37 @@ D35E757615931E5D0066B1C1 /* switch_camera_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = switch_camera_over.png; path = Resources/switch_camera_over.png; sourceTree = ""; }; D35E757F159328EA0066B1C1 /* UIAddressTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIAddressTextField.h; sourceTree = ""; }; D35E7580159328EB0066B1C1 /* UIAddressTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIAddressTextField.m; sourceTree = ""; }; - D35E758815932DE60066B1C1 /* backspace-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "backspace-disabled.png"; path = "Resources/backspace-disabled.png"; sourceTree = ""; }; - D35E758C15934F360066B1C1 /* appeler-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appeler-disabled.png"; path = "Resources/appeler-disabled.png"; sourceTree = ""; }; + D35E758815932DE60066B1C1 /* backspace_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backspace_disabled.png; path = Resources/backspace_disabled.png; sourceTree = ""; }; + D35E758C15934F360066B1C1 /* call_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_disabled.png; path = Resources/call_disabled.png; sourceTree = ""; }; D35E7594159460560066B1C1 /* ChatViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatViewController.h; sourceTree = ""; }; D35E7595159460560066B1C1 /* ChatViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatViewController.m; sourceTree = ""; }; D35E7596159460570066B1C1 /* ChatViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ChatViewController.xib; sourceTree = ""; }; D35E759C159460B50066B1C1 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = ""; }; D35E759D159460B50066B1C1 /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = ""; }; + D35EA76115A2DF8D003E025D /* micro_off_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_disabled.png; path = Resources/micro_off_disabled.png; sourceTree = ""; }; + D35EA76215A2DF8D003E025D /* micro_on_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_on_disabled.png; path = Resources/micro_on_disabled.png; sourceTree = ""; }; + D365AA7915A2DE7500CAFE3F /* speaker_off_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_off_disabled.png; path = Resources/speaker_off_disabled.png; sourceTree = ""; }; + D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_on_disabled.png; path = Resources/speaker_on_disabled.png; sourceTree = ""; }; D36C43C4158F2E5A0048BA40 /* UICallCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallCell.h; sourceTree = ""; }; D36C43C5158F2E5A0048BA40 /* UICallCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICallCell.m; sourceTree = ""; }; D36C43C9158F2EE50048BA40 /* UICallCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UICallCell.xib; sourceTree = ""; }; - D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-courbe-autres-numeros.png"; path = "Resources/champ-courbe-autres-numeros.png"; sourceTree = ""; }; - D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-courbe-participant-conf.png"; path = "Resources/champ-courbe-participant-conf.png"; sourceTree = ""; }; - D36C43CE158F2F370048BA40 /* champ-titre-conference.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-titre-conference.png"; path = "Resources/champ-titre-conference.png"; sourceTree = ""; }; - D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "clavier-secondaire-actif.png"; path = "Resources/clavier-secondaire-actif.png"; sourceTree = ""; }; - D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "clavier-secondaire-over.png"; path = "Resources/clavier-secondaire-over.png"; sourceTree = ""; }; - D36C43E7158F3F7E0048BA40 /* play-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-actif.png"; path = "Resources/play-actif.png"; sourceTree = ""; }; - D36C43E8158F3F7E0048BA40 /* play-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-over.png"; path = "Resources/play-over.png"; sourceTree = ""; }; - D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause-champ-numero-actif.png"; path = "Resources/pause-champ-numero-actif.png"; sourceTree = ""; }; - D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause-champ-numero-over.png"; path = "Resources/pause-champ-numero-over.png"; sourceTree = ""; }; - D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-champ-numero-actif.png"; path = "Resources/play-champ-numero-actif.png"; sourceTree = ""; }; - D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "play-champ-numero-over.png"; path = "Resources/play-champ-numero-over.png"; sourceTree = ""; }; + D36C43CC158F2F370048BA40 /* cell_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call.png; path = Resources/cell_call.png; sourceTree = ""; }; + D36C43CD158F2F370048BA40 /* cell_conference.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_conference.png; path = Resources/cell_conference.png; sourceTree = ""; }; + D36C43CE158F2F370048BA40 /* header_conference.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = header_conference.png; path = Resources/header_conference.png; sourceTree = ""; }; + D36C43CF158F2F370048BA40 /* dialer_alt_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_default.png; path = Resources/dialer_alt_default.png; sourceTree = ""; }; + D36C43D0158F2F370048BA40 /* dialer_alt_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_over.png; path = Resources/dialer_alt_over.png; sourceTree = ""; }; + D36C43E7158F3F7E0048BA40 /* pause_on_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_on_default.png; path = Resources/pause_on_default.png; sourceTree = ""; }; + D36C43E8158F3F7E0048BA40 /* pause_on_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_on_over.png; path = Resources/pause_on_over.png; sourceTree = ""; }; + D36C43ED158F61EA0048BA40 /* call_state_pause_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_pause_default.png; path = Resources/call_state_pause_default.png; sourceTree = ""; }; + D36C43EE158F61EA0048BA40 /* call_state_pause_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_pause_over.png; path = Resources/call_state_pause_over.png; sourceTree = ""; }; + D36C43EF158F61EA0048BA40 /* call_state_play_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_play_default.png; path = Resources/call_state_play_default.png; sourceTree = ""; }; + D36C43F0158F61EA0048BA40 /* call_state_play_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_play_over.png; path = Resources/call_state_play_over.png; sourceTree = ""; }; D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPauseButton.h; sourceTree = ""; }; D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPauseButton.m; sourceTree = ""; }; - D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = registration_inprogress.png; path = Resources/registration_inprogress.png; sourceTree = ""; }; - D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-OFF-disabled.png"; path = "Resources/video-OFF-disabled.png"; sourceTree = ""; }; - D377BBF915A19DA6002B696B /* video-ON-disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-ON-disabled.png"; path = "Resources/video-ON-disabled.png"; sourceTree = ""; }; - D37B96B515A1A6F20005CCD2 /* supprimer-participant-conf-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "supprimer-participant-conf-actif.png"; path = "Resources/supprimer-participant-conf-actif.png"; sourceTree = ""; }; - D37B96B615A1A6F20005CCD2 /* supprimer-participant-conf-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "supprimer-participant-conf-over.png"; path = "Resources/supprimer-participant-conf-over.png"; sourceTree = ""; }; + D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_off_disabled.png; path = Resources/video_off_disabled.png; sourceTree = ""; }; + D377BBF915A19DA6002B696B /* video_on_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_disabled.png; path = Resources/video_on_disabled.png; sourceTree = ""; }; + D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_default.png; path = Resources/call_state_delete_default.png; sourceTree = ""; }; + D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_over.png; path = Resources/call_state_delete_over.png; sourceTree = ""; }; D37DC6BF1594AE1800B2A5EB /* LinphoneCoreSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCoreSettingsStore.h; sourceTree = ""; }; D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCoreSettingsStore.m; sourceTree = ""; }; D37DC6C51594AE6F00B2A5EB /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = ""; }; @@ -1059,63 +1035,65 @@ D37DC6EB1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSToggleSwitchSpecifierViewCell.xib; sourceTree = ""; }; D37DC6EC1594AE6F00B2A5EB /* IASKSpecifierValuesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKSpecifierValuesView.xib; sourceTree = ""; }; D37DC7171594AF3400B2A5EB /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; - D38327EB1580FE3A00FA0D23 /* contacts-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts-actif.png"; path = "Resources/contacts-actif.png"; sourceTree = ""; }; - D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts-selectionne.png"; path = "Resources/contacts-selectionne.png"; sourceTree = ""; }; - D38327ED1580FE3A00FA0D23 /* dialer-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-actif.png"; path = "Resources/dialer-actif.png"; sourceTree = ""; }; - D38327EE1580FE3A00FA0D23 /* dialer-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-over.png"; path = "Resources/dialer-over.png"; sourceTree = ""; }; - D38327EF1580FE3A00FA0D23 /* settings-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings-actif.png"; path = "Resources/settings-actif.png"; sourceTree = ""; }; - D38327F01580FE3A00FA0D23 /* settings-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings-selectionne.png"; path = "Resources/settings-selectionne.png"; sourceTree = ""; }; - D38327F11580FE3A00FA0D23 /* tchat-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-actif.png"; path = "Resources/tchat-actif.png"; sourceTree = ""; }; - D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-selectionne.png"; path = "Resources/tchat-selectionne.png"; sourceTree = ""; }; - D38327FC158100E400FA0D23 /* contacts-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contacts-over.png"; path = "Resources/contacts-over.png"; sourceTree = ""; }; - D38327FD158100E400FA0D23 /* history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "history-over.png"; path = "Resources/history-over.png"; sourceTree = ""; }; - D38327FE158100E400FA0D23 /* settings-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "settings-over.png"; path = "Resources/settings-over.png"; sourceTree = ""; }; - D38327FF158100E400FA0D23 /* tchat-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-over.png"; path = "Resources/tchat-over.png"; sourceTree = ""; }; + D38327EB1580FE3A00FA0D23 /* contacts_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_default.png; path = Resources/contacts_default.png; sourceTree = ""; }; + D38327EC1580FE3A00FA0D23 /* contacts_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_selected.png; path = Resources/contacts_selected.png; sourceTree = ""; }; + D38327ED1580FE3A00FA0D23 /* dialer_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_default.png; path = Resources/dialer_default.png; sourceTree = ""; }; + D38327EE1580FE3A00FA0D23 /* dialer_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_over.png; path = Resources/dialer_over.png; sourceTree = ""; }; + D38327EF1580FE3A00FA0D23 /* settings_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_default.png; path = Resources/settings_default.png; sourceTree = ""; }; + D38327F01580FE3A00FA0D23 /* settings_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_selected.png; path = Resources/settings_selected.png; sourceTree = ""; }; + D38327F11580FE3A00FA0D23 /* chat_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_default.png; path = Resources/chat_default.png; sourceTree = ""; }; + D38327F21580FE3A00FA0D23 /* chat_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_selected.png; path = Resources/chat_selected.png; sourceTree = ""; }; + D38327FC158100E400FA0D23 /* contacts_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_over.png; path = Resources/contacts_over.png; sourceTree = ""; }; + D38327FD158100E400FA0D23 /* history_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_over.png; path = Resources/history_over.png; sourceTree = ""; }; + D38327FE158100E400FA0D23 /* settings_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_over.png; path = Resources/settings_over.png; sourceTree = ""; }; + D38327FF158100E400FA0D23 /* chat_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_over.png; path = Resources/chat_over.png; sourceTree = ""; }; D3A55FBA15877E5E003FD403 /* UIContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactCell.h; sourceTree = ""; }; D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = ""; }; D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = ""; }; + D3C2814A15A2D38D0098AA42 /* dialer_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_selected.png; path = Resources/dialer_selected.png; sourceTree = ""; }; + D3C2815115A2D64A0098AA42 /* numpad_star_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_star_over.png; path = Resources/numpad_star_over.png; sourceTree = ""; }; D3C714B2159DB84400705B8E /* toy-mono.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "toy-mono.wav"; path = "Resources/toy-mono.wav"; sourceTree = ""; }; - D3D6A39B159B0EEF005F692C /* add_call_more_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_default.png; path = Resources/add_call_more_default.png; sourceTree = ""; }; - D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_disable.png; path = Resources/add_call_more_disable.png; sourceTree = ""; }; - D3D6A39D159B0EEF005F692C /* add_call_more_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_more_over.png; path = Resources/add_call_more_over.png; sourceTree = ""; }; - D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cadenas-barre.png"; path = "Resources/cadenas-barre.png"; sourceTree = ""; }; - D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cadenas-interrogation.png"; path = "Resources/cadenas-interrogation.png"; sourceTree = ""; }; - D3D6A3A7159B0EFE005F692C /* cadenas.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cadenas.png; path = Resources/cadenas.png; sourceTree = ""; }; + D3D6A39B159B0EEF005F692C /* add_call_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_default.png; path = Resources/add_call_default.png; sourceTree = ""; }; + D3D6A39C159B0EEF005F692C /* add_call_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_disabled.png; path = Resources/add_call_disabled.png; sourceTree = ""; }; + D3D6A39D159B0EEF005F692C /* add_call_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_over.png; path = Resources/add_call_over.png; sourceTree = ""; }; + D3D6A3A5159B0EFE005F692C /* security_ko.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = security_ko.png; path = Resources/security_ko.png; sourceTree = ""; }; + D3D6A3A6159B0EFE005F692C /* security_pending.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = security_pending.png; path = Resources/security_pending.png; sourceTree = ""; }; + D3D6A3A7159B0EFE005F692C /* security_ok.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = security_ok.png; path = Resources/security_ok.png; sourceTree = ""; }; D3D6A3A8159B0EFE005F692C /* options_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_default.png; path = Resources/options_default.png; sourceTree = ""; }; D3D6A3A9159B0EFE005F692C /* options_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_disabled.png; path = Resources/options_disabled.png; sourceTree = ""; }; D3D6A3AA159B0EFE005F692C /* options_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_over.png; path = Resources/options_over.png; sourceTree = ""; }; D3EA53FB159850E80037DC6B /* LinphoneManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneManager.h; sourceTree = ""; }; D3EA53FC159850E80037DC6B /* LinphoneManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneManager.m; sourceTree = ""; }; - D3EA53FF159852080037DC6B /* tchat-edit-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-edit-actif.png"; path = "Resources/tchat-edit-actif.png"; sourceTree = ""; }; - D3EA5400159852080037DC6B /* tchat-edit-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-edit-over.png"; path = "Resources/tchat-edit-over.png"; sourceTree = ""; }; - D3EA5401159852080037DC6B /* tchat-new-discussion-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-new-discussion-actif.png"; path = "Resources/tchat-new-discussion-actif.png"; sourceTree = ""; }; - D3EA5402159852080037DC6B /* tchat-new-discussion-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "tchat-new-discussion-over.png"; path = "Resources/tchat-new-discussion-over.png"; sourceTree = ""; }; + D3EA53FF159852080037DC6B /* chat_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_edit_default.png; path = Resources/chat_edit_default.png; sourceTree = ""; }; + D3EA5400159852080037DC6B /* chat_edit_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_edit_over.png; path = Resources/chat_edit_over.png; sourceTree = ""; }; + D3EA5401159852080037DC6B /* chat_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_add_default.png; path = Resources/chat_add_default.png; sourceTree = ""; }; + D3EA5402159852080037DC6B /* chat_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_add_over.png; path = Resources/chat_add_over.png; sourceTree = ""; }; D3EA540B1598528B0037DC6B /* ChatTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatTableViewController.h; sourceTree = ""; }; D3EA540C1598528B0037DC6B /* ChatTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatTableViewController.m; sourceTree = ""; }; D3EA540F159853750037DC6B /* UIChatCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIChatCell.h; sourceTree = ""; }; D3EA5410159853750037DC6B /* UIChatCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIChatCell.m; sourceTree = ""; }; D3EA5413159853C90037DC6B /* UIChatCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIChatCell.xib; sourceTree = ""; }; - D3EA5416159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "croix-supprimer-ligne-liste-history-actif.png"; path = "Resources/croix-supprimer-ligne-liste-history-actif.png"; sourceTree = ""; }; - D3EA5417159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "croix-supprimer-ligne-liste-history-over.png"; path = "Resources/croix-supprimer-ligne-liste-history-over.png"; sourceTree = ""; }; - D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "fond-clavier.png"; path = "Resources/fond-clavier.png"; sourceTree = ""; }; - D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-saisie-numero.png"; path = "Resources/champ-saisie-numero.png"; sourceTree = ""; }; - D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "barre-noire-top.png"; path = "Resources/barre-noire-top.png"; sourceTree = ""; }; - D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-actif.png"; path = "Resources/add-contact-actif.png"; sourceTree = ""; }; - D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-inactif.png"; path = "Resources/add-contact-inactif.png"; sourceTree = ""; }; - D3ED3E6915861A53006C0DE4 /* add-contact-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add-contact-over.png"; path = "Resources/add-contact-over.png"; sourceTree = ""; }; - D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appeler-actif.png"; path = "Resources/appeler-actif.png"; sourceTree = ""; }; - D3ED3E7115861ABD006C0DE4 /* appeler-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "appeler-over.png"; path = "Resources/appeler-over.png"; sourceTree = ""; }; - D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "backspace-actif.png"; path = "Resources/backspace-actif.png"; sourceTree = ""; }; - D3ED3E7715861B1B006C0DE4 /* backspace-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "backspace-over.png"; path = "Resources/backspace-over.png"; sourceTree = ""; }; + D3EA5416159858A80037DC6B /* list_delete_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_delete_default.png; path = Resources/list_delete_default.png; sourceTree = ""; }; + D3EA5417159858A80037DC6B /* list_delete_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_delete_over.png; path = Resources/list_delete_over.png; sourceTree = ""; }; + D3ED3E401585FB4A006C0DE4 /* numpad_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_background.png; path = Resources/numpad_background.png; sourceTree = ""; }; + D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_address_background.png; path = Resources/dialer_address_background.png; sourceTree = ""; }; + D3ED3E511585FFFD006C0DE4 /* statebar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = statebar_background.png; path = Resources/statebar_background.png; sourceTree = ""; }; + D3ED3E6715861A53006C0DE4 /* add_contact_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_contact_default.png; path = Resources/add_contact_default.png; sourceTree = ""; }; + D3ED3E6815861A53006C0DE4 /* add_contact_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_contact_disabled.png; path = Resources/add_contact_disabled.png; sourceTree = ""; }; + D3ED3E6915861A53006C0DE4 /* add_contact_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_contact_over.png; path = Resources/add_contact_over.png; sourceTree = ""; }; + D3ED3E7015861ABD006C0DE4 /* call_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_default.png; path = Resources/call_default.png; sourceTree = ""; }; + D3ED3E7115861ABD006C0DE4 /* call_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_over.png; path = Resources/call_over.png; sourceTree = ""; }; + D3ED3E7615861B1B006C0DE4 /* backspace_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backspace_default.png; path = Resources/backspace_default.png; sourceTree = ""; }; + D3ED3E7715861B1B006C0DE4 /* backspace_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backspace_over.png; path = Resources/backspace_over.png; sourceTree = ""; }; D3ED3E841586291B006C0DE4 /* UIMainBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIMainBar.h; sourceTree = ""; }; D3ED3E851586291B006C0DE4 /* UIMainBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMainBar.m; sourceTree = ""; }; D3ED3E861586291C006C0DE4 /* UIMainBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIMainBar.xib; sourceTree = ""; }; - D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-call-actif.png"; path = "Resources/all-call-actif.png"; sourceTree = ""; }; - D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "all-call-selectionne.png"; path = "Resources/all-call-selectionne.png"; sourceTree = ""; }; - D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "edit-history-actif.png"; path = "Resources/edit-history-actif.png"; sourceTree = ""; }; - D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "edit-history-over.png"; path = "Resources/edit-history-over.png"; sourceTree = ""; }; - D3ED3E9615872EF1006C0DE4 /* missed-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "missed-actif.png"; path = "Resources/missed-actif.png"; sourceTree = ""; }; - D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "missed-selectionne.png"; path = "Resources/missed-selectionne.png"; sourceTree = ""; }; + D3ED3E9215872EF1006C0DE4 /* history_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_default.png; path = Resources/history_all_default.png; sourceTree = ""; }; + D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_selected.png; path = Resources/history_all_selected.png; sourceTree = ""; }; + D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_edit_default.png; path = Resources/history_edit_default.png; sourceTree = ""; }; + D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_edit_over.png; path = Resources/history_edit_over.png; sourceTree = ""; }; + D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_default.png; path = Resources/history_missed_default.png; sourceTree = ""; }; + D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_selected.png; path = Resources/history_missed_selected.png; sourceTree = ""; }; D3ED3EA41587334B006C0DE4 /* HistoryTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryTableViewController.h; sourceTree = ""; }; D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryTableViewController.m; sourceTree = ""; }; D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = ""; }; @@ -1126,65 +1104,60 @@ D3F26BEE15986B71005F9CAB /* IncomingCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IncomingCallViewController.h; sourceTree = ""; }; D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IncomingCallViewController.m; sourceTree = ""; }; D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IncomingCallViewController.xib; sourceTree = ""; }; - D3F26BF515986DAD005F9CAB /* ok-edit-list-history-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ok-edit-list-history-actif.png"; path = "Resources/ok-edit-list-history-actif.png"; sourceTree = ""; }; - D3F26BF615986DAD005F9CAB /* ok-edit-list-history-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ok-edit-list-history-over.png"; path = "Resources/ok-edit-list-history-over.png"; sourceTree = ""; }; - D3F26BFB15987083005F9CAB /* champ-titre-incoming.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "champ-titre-incoming.png"; path = "Resources/champ-titre-incoming.png"; sourceTree = ""; }; - D3F34F2F1599B008005BE94F /* ombre-cotes-avatar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ombre-cotes-avatar.png"; path = "Resources/ombre-cotes-avatar.png"; sourceTree = ""; }; + D3F26BF515986DAD005F9CAB /* history_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_ok_default.png; path = Resources/history_ok_default.png; sourceTree = ""; }; + D3F26BF615986DAD005F9CAB /* history_ok_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_ok_over.png; path = Resources/history_ok_over.png; sourceTree = ""; }; + D3F26BFB15987083005F9CAB /* header_incoming.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = header_incoming.png; path = Resources/header_incoming.png; sourceTree = ""; }; + D3F34F2F1599B008005BE94F /* avatar_shadow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = avatar_shadow.png; path = Resources/avatar_shadow.png; sourceTree = ""; }; D3F34F331599C354005BE94F /* UIModalViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIModalViewController.h; sourceTree = ""; }; D3F34F341599C354005BE94F /* UIModalViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIModalViewController.m; sourceTree = ""; }; D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; }; D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; }; D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; }; - D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-meteo-sortir-actif.png"; path = "Resources/dialer-meteo-sortir-actif.png"; sourceTree = ""; }; - D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer-meteo-sortir-over.png"; path = "Resources/dialer-meteo-sortir-over.png"; sourceTree = ""; }; - D3F83EF4158205A100336684 /* micro-OFF-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro-OFF-actif.png"; path = "Resources/micro-OFF-actif.png"; sourceTree = ""; }; - D3F83EF5158205A100336684 /* micro-OFF-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro-OFF-over.png"; path = "Resources/micro-OFF-over.png"; sourceTree = ""; }; - D3F83EF6158205A100336684 /* micro-ON-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro-ON-actif.png"; path = "Resources/micro-ON-actif.png"; sourceTree = ""; }; - D3F83EF7158205A100336684 /* micro-ON-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "micro-ON-over.png"; path = "Resources/micro-ON-over.png"; sourceTree = ""; }; - D3F83EF8158205A100336684 /* pause-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause-actif.png"; path = "Resources/pause-actif.png"; sourceTree = ""; }; - D3F83EF9158205A100336684 /* pause-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "pause-over.png"; path = "Resources/pause-over.png"; sourceTree = ""; }; - D3F83EFA158205A100336684 /* raccrocher-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "raccrocher-actif.png"; path = "Resources/raccrocher-actif.png"; sourceTree = ""; }; - D3F83EFB158205A100336684 /* raccrocher-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "raccrocher-over.png"; path = "Resources/raccrocher-over.png"; sourceTree = ""; }; - D3F83EFC158205A100336684 /* speacker-OFF-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speacker-OFF-actif.png"; path = "Resources/speacker-OFF-actif.png"; sourceTree = ""; }; - D3F83EFD158205A100336684 /* speacker-OFF-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speacker-OFF-over.png"; path = "Resources/speacker-OFF-over.png"; sourceTree = ""; }; - D3F83EFE158205A100336684 /* speacker-ON-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speacker-ON-actif.png"; path = "Resources/speacker-ON-actif.png"; sourceTree = ""; }; - D3F83EFF158205A100336684 /* speacker-ON-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "speacker-ON-over.png"; path = "Resources/speacker-ON-over.png"; sourceTree = ""; }; - D3F83F00158205A100336684 /* video-OFF-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-OFF-actif.png"; path = "Resources/video-OFF-actif.png"; sourceTree = ""; }; - D3F83F01158205A100336684 /* video-OFF-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-OFF-over.png"; path = "Resources/video-OFF-over.png"; sourceTree = ""; }; - D3F83F02158205A100336684 /* video-ON-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-ON-actif.png"; path = "Resources/video-ON-actif.png"; sourceTree = ""; }; - D3F83F03158205A100336684 /* video-ON-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video-ON-over.png"; path = "Resources/video-ON-over.png"; sourceTree = ""; }; - D3F83F2C1582223B00336684 /* 0-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "0-actif.png"; path = "Resources/0-actif.png"; sourceTree = ""; }; - D3F83F2D1582223B00336684 /* 0-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "0-over.png"; path = "Resources/0-over.png"; sourceTree = ""; }; - D3F83F2E1582223B00336684 /* 1-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "1-actif.png"; path = "Resources/1-actif.png"; sourceTree = ""; }; - D3F83F2F1582223B00336684 /* 1-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "1-over.png"; path = "Resources/1-over.png"; sourceTree = ""; }; - D3F83F301582223B00336684 /* 2-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "2-actif.png"; path = "Resources/2-actif.png"; sourceTree = ""; }; - D3F83F311582223B00336684 /* 2-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "2-over.png"; path = "Resources/2-over.png"; sourceTree = ""; }; - D3F83F321582223B00336684 /* 3-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "3-actif.png"; path = "Resources/3-actif.png"; sourceTree = ""; }; - D3F83F331582223B00336684 /* 3-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "3-over.png"; path = "Resources/3-over.png"; sourceTree = ""; }; - D3F83F341582223B00336684 /* 4-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "4-actif.png"; path = "Resources/4-actif.png"; sourceTree = ""; }; - D3F83F351582223B00336684 /* 4-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "4-over.png"; path = "Resources/4-over.png"; sourceTree = ""; }; - D3F83F361582223B00336684 /* 5-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "5-actif.png"; path = "Resources/5-actif.png"; sourceTree = ""; }; - D3F83F371582223B00336684 /* 5-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "5-over.png"; path = "Resources/5-over.png"; sourceTree = ""; }; - D3F83F381582223B00336684 /* 6-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "6-actif.png"; path = "Resources/6-actif.png"; sourceTree = ""; }; - D3F83F391582223B00336684 /* 6-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "6-over.png"; path = "Resources/6-over.png"; sourceTree = ""; }; - D3F83F3A1582223B00336684 /* 7-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "7-actif.png"; path = "Resources/7-actif.png"; sourceTree = ""; }; - D3F83F3B1582223B00336684 /* 7-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "7-over.png"; path = "Resources/7-over.png"; sourceTree = ""; }; - D3F83F3C1582223B00336684 /* 8-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "8-actif.png"; path = "Resources/8-actif.png"; sourceTree = ""; }; - D3F83F3D1582223B00336684 /* 8-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "8-over.png"; path = "Resources/8-over.png"; sourceTree = ""; }; - D3F83F3E1582223B00336684 /* 9-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "9-actif.png"; path = "Resources/9-actif.png"; sourceTree = ""; }; - D3F83F3F1582223B00336684 /* 9-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "9-over.png"; path = "Resources/9-over.png"; sourceTree = ""; }; - D3F83F401582223B00336684 /* diese-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "diese-actif.png"; path = "Resources/diese-actif.png"; sourceTree = ""; }; - D3F83F411582223B00336684 /* diese-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "diese-over.png"; path = "Resources/diese-over.png"; sourceTree = ""; }; - D3F83F421582223B00336684 /* etoile-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "etoile-actif.png"; path = "Resources/etoile-actif.png"; sourceTree = ""; }; - D3F83F431582223B00336684 /* etoile-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "etoile-over.png"; path = "Resources/etoile-over.png"; sourceTree = ""; }; - D3F83F741582253100336684 /* decrocher-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "decrocher-actif.png"; path = "Resources/decrocher-actif.png"; sourceTree = ""; }; - D3F83F751582253100336684 /* decrocher-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "decrocher-over.png"; path = "Resources/decrocher-over.png"; sourceTree = ""; }; - D3F83F761582253100336684 /* refuser-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "refuser-actif.png"; path = "Resources/refuser-actif.png"; sourceTree = ""; }; - D3F83F771582253100336684 /* refuser-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "refuser-over.png"; path = "Resources/refuser-over.png"; sourceTree = ""; }; - D3F83F801582278D00336684 /* cancel-actif.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cancel-actif.png"; path = "Resources/cancel-actif.png"; sourceTree = ""; }; - D3F83F811582278D00336684 /* cancel-over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "cancel-over.png"; path = "Resources/cancel-over.png"; sourceTree = ""; }; - D3F83F821582278D00336684 /* contact-actif-add-call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contact-actif-add-call.png"; path = "Resources/contact-actif-add-call.png"; sourceTree = ""; }; - D3F83F831582278D00336684 /* contact-over-add-call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "contact-over-add-call.png"; path = "Resources/contact-over-add-call.png"; sourceTree = ""; }; + D3F83EF4158205A100336684 /* micro_off_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_default.png; path = Resources/micro_off_default.png; sourceTree = ""; }; + D3F83EF5158205A100336684 /* micro_off_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_over.png; path = Resources/micro_off_over.png; sourceTree = ""; }; + D3F83EF6158205A100336684 /* micro_on_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_on_default.png; path = Resources/micro_on_default.png; sourceTree = ""; }; + D3F83EF7158205A100336684 /* micro_on_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_on_over.png; path = Resources/micro_on_over.png; sourceTree = ""; }; + D3F83EF8158205A100336684 /* pause_off_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_off_default.png; path = Resources/pause_off_default.png; sourceTree = ""; }; + D3F83EF9158205A100336684 /* pause_off_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_off_over.png; path = Resources/pause_off_over.png; sourceTree = ""; }; + D3F83EFA158205A100336684 /* hangup_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = hangup_default.png; path = Resources/hangup_default.png; sourceTree = ""; }; + D3F83EFB158205A100336684 /* hangup_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = hangup_over.png; path = Resources/hangup_over.png; sourceTree = ""; }; + D3F83EFC158205A100336684 /* speaker_off_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_off_default.png; path = Resources/speaker_off_default.png; sourceTree = ""; }; + D3F83EFD158205A100336684 /* speaker_off_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_off_over.png; path = Resources/speaker_off_over.png; sourceTree = ""; }; + D3F83EFE158205A100336684 /* speaker_on_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_on_default.png; path = Resources/speaker_on_default.png; sourceTree = ""; }; + D3F83EFF158205A100336684 /* speaker_on_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_on_over.png; path = Resources/speaker_on_over.png; sourceTree = ""; }; + D3F83F00158205A100336684 /* video_off_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_off_default.png; path = Resources/video_off_default.png; sourceTree = ""; }; + D3F83F01158205A100336684 /* video_off_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_off_over.png; path = Resources/video_off_over.png; sourceTree = ""; }; + D3F83F02158205A100336684 /* video_on_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_default.png; path = Resources/video_on_default.png; sourceTree = ""; }; + D3F83F03158205A100336684 /* video_on_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_over.png; path = Resources/video_on_over.png; sourceTree = ""; }; + D3F83F2C1582223B00336684 /* numpad_zero_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_zero_default.png; path = Resources/numpad_zero_default.png; sourceTree = ""; }; + D3F83F2D1582223B00336684 /* numpad_zero_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_zero_over.png; path = Resources/numpad_zero_over.png; sourceTree = ""; }; + D3F83F2E1582223B00336684 /* numpad_one_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_one_default.png; path = Resources/numpad_one_default.png; sourceTree = ""; }; + D3F83F2F1582223B00336684 /* numpad_one_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_one_over.png; path = Resources/numpad_one_over.png; sourceTree = ""; }; + D3F83F301582223B00336684 /* numpad_two_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_two_default.png; path = Resources/numpad_two_default.png; sourceTree = ""; }; + D3F83F311582223B00336684 /* numpad_two_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_two_over.png; path = Resources/numpad_two_over.png; sourceTree = ""; }; + D3F83F321582223B00336684 /* numpad_three_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_three_default.png; path = Resources/numpad_three_default.png; sourceTree = ""; }; + D3F83F331582223B00336684 /* numpad_three_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_three_over.png; path = Resources/numpad_three_over.png; sourceTree = ""; }; + D3F83F341582223B00336684 /* numpad_four_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_four_default.png; path = Resources/numpad_four_default.png; sourceTree = ""; }; + D3F83F351582223B00336684 /* numpad_four_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_four_over.png; path = Resources/numpad_four_over.png; sourceTree = ""; }; + D3F83F361582223B00336684 /* numpad_five_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_five_default.png; path = Resources/numpad_five_default.png; sourceTree = ""; }; + D3F83F371582223B00336684 /* numpad_five_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_five_over.png; path = Resources/numpad_five_over.png; sourceTree = ""; }; + D3F83F381582223B00336684 /* numpad_six_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_six_default.png; path = Resources/numpad_six_default.png; sourceTree = ""; }; + D3F83F391582223B00336684 /* numpad_six_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_six_over.png; path = Resources/numpad_six_over.png; sourceTree = ""; }; + D3F83F3A1582223B00336684 /* numpad_seven_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_seven_default.png; path = Resources/numpad_seven_default.png; sourceTree = ""; }; + D3F83F3B1582223B00336684 /* numpad_seven_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_seven_over.png; path = Resources/numpad_seven_over.png; sourceTree = ""; }; + D3F83F3C1582223B00336684 /* numpad_eight_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_eight_default.png; path = Resources/numpad_eight_default.png; sourceTree = ""; }; + D3F83F3D1582223B00336684 /* numpad_eight_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_eight_over.png; path = Resources/numpad_eight_over.png; sourceTree = ""; }; + D3F83F3E1582223B00336684 /* numpad_nine_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_nine_default.png; path = Resources/numpad_nine_default.png; sourceTree = ""; }; + D3F83F3F1582223B00336684 /* numpad_nine_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_nine_over.png; path = Resources/numpad_nine_over.png; sourceTree = ""; }; + D3F83F401582223B00336684 /* numpad_sharp_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_sharp_default.png; path = Resources/numpad_sharp_default.png; sourceTree = ""; }; + D3F83F411582223B00336684 /* numpad_sharp_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_sharp_over.png; path = Resources/numpad_sharp_over.png; sourceTree = ""; }; + D3F83F431582223B00336684 /* numpad_star_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_star_default.png; path = Resources/numpad_star_default.png; sourceTree = ""; }; + D3F83F741582253100336684 /* accept_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = accept_default.png; path = Resources/accept_default.png; sourceTree = ""; }; + D3F83F751582253100336684 /* accept_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = accept_over.png; path = Resources/accept_over.png; sourceTree = ""; }; + D3F83F761582253100336684 /* decline_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = decline_default.png; path = Resources/decline_default.png; sourceTree = ""; }; + D3F83F771582253100336684 /* decline_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = decline_over.png; path = Resources/decline_over.png; sourceTree = ""; }; + D3F83F801582278D00336684 /* cancel_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_default.png; path = Resources/cancel_default.png; sourceTree = ""; }; + D3F83F811582278D00336684 /* cancel_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_over.png; path = Resources/cancel_over.png; sourceTree = ""; }; D3F83F8C158229C500336684 /* PhoneMainView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhoneMainView.h; sourceTree = ""; }; D3F83F8D15822ABD00336684 /* PhoneMainView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhoneMainView.m; sourceTree = ""; }; D3F83F9115824D3500336684 /* LinphoneApp.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneApp.xib; sourceTree = ""; }; @@ -1561,8 +1534,6 @@ 2214EB7012F84668002A5394 /* LinphoneUI */ = { isa = PBXGroup; children = ( - 223963151393CFAE001DE689 /* FastAddressBook.h */, - 223963161393CFAF001DE689 /* FastAddressBook.m */, 2218A5CE12F973450088A667 /* LogView.h */, D35E757F159328EA0066B1C1 /* UIAddressTextField.h */, D35E7580159328EB0066B1C1 /* UIAddressTextField.m */, @@ -1780,174 +1751,165 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - D3F83F2C1582223B00336684 /* 0-actif.png */, - D3F83F2D1582223B00336684 /* 0-over.png */, - D3F83F2E1582223B00336684 /* 1-actif.png */, - D3F83F2F1582223B00336684 /* 1-over.png */, - D3F83F301582223B00336684 /* 2-actif.png */, - D3F83F311582223B00336684 /* 2-over.png */, - D3F83F321582223B00336684 /* 3-actif.png */, - D3F83F331582223B00336684 /* 3-over.png */, - D3F83F341582223B00336684 /* 4-actif.png */, - D3F83F351582223B00336684 /* 4-over.png */, - D3F83F361582223B00336684 /* 5-actif.png */, - D3F83F371582223B00336684 /* 5-over.png */, - D3F83F381582223B00336684 /* 6-actif.png */, - D3F83F391582223B00336684 /* 6-over.png */, - D3F83F3A1582223B00336684 /* 7-actif.png */, - D3F83F3B1582223B00336684 /* 7-over.png */, - D3F83F3C1582223B00336684 /* 8-actif.png */, - D3F83F3D1582223B00336684 /* 8-over.png */, - D3F83F3E1582223B00336684 /* 9-actif.png */, - D3F83F3F1582223B00336684 /* 9-over.png */, - D3ED3E6715861A53006C0DE4 /* add-contact-actif.png */, - D354980E15875608000081D8 /* add-contact-depuis-detail-actif.png */, - D354980F15875608000081D8 /* add-contact-depuis-detail-over.png */, - D3ED3E6815861A53006C0DE4 /* add-contact-inactif.png */, - D3ED3E6915861A53006C0DE4 /* add-contact-over.png */, - D3D6A39B159B0EEF005F692C /* add_call_more_default.png */, - D3D6A39C159B0EEF005F692C /* add_call_more_disable.png */, - D3D6A39D159B0EEF005F692C /* add_call_more_over.png */, - D3ED3E9215872EF1006C0DE4 /* all-call-actif.png */, - D3ED3E9315872EF1006C0DE4 /* all-call-selectionne.png */, - D354980215875534000081D8 /* all-contacts-actif.png */, - D354980315875534000081D8 /* all-contacts-selectionne.png */, - D31C9C8D158A1C1000756B45 /* appel-entrant.png */, - D31C9C8E158A1C1000756B45 /* appel-manque.png */, - D31C9C8F158A1C1000756B45 /* appel-sortant.png */, - D3ED3E7015861ABD006C0DE4 /* appeler-actif.png */, - D35E758C15934F360066B1C1 /* appeler-disabled.png */, - D3ED3E7115861ABD006C0DE4 /* appeler-over.png */, - D31B4B261598A390002E6C72 /* avatar-inconnu.png */, - D31B4B271598A390002E6C72 /* avatar-small.png */, - D3ED3E7615861B1B006C0DE4 /* backspace-actif.png */, - D35E758815932DE60066B1C1 /* backspace-disabled.png */, - D3ED3E7715861B1B006C0DE4 /* backspace-over.png */, - D3ED3E511585FFFD006C0DE4 /* barre-noire-top.png */, - D354981815876FE7000081D8 /* bouton-detail-contact-actif.png */, - D354981915876FE7000081D8 /* bouton-detail-contact-over.png */, - D3D6A3A5159B0EFE005F692C /* cadenas-barre.png */, - D3D6A3A6159B0EFE005F692C /* cadenas-interrogation.png */, - D3D6A3A7159B0EFE005F692C /* cadenas.png */, - D3F83F801582278D00336684 /* cancel-actif.png */, - D3F83F811582278D00336684 /* cancel-over.png */, - D3211BBB159CBFD60098460B /* cancel_white_bg_default.png */, - D3211BBC159CBFD60098460B /* cancel_white_bg_disabled.png */, - D3211BBD159CBFD60098460B /* cancel_white_bg_over.png */, - D3211BB8159C8A820098460B /* champ-courbe-autres-numeros-first.png */, - D36C43CC158F2F370048BA40 /* champ-courbe-autres-numeros.png */, - D36C43CD158F2F370048BA40 /* champ-courbe-participant-conf.png */, - D3ED3E441585FB8C006C0DE4 /* champ-saisie-numero.png */, - D36C43CE158F2F370048BA40 /* champ-titre-conference.png */, - D3F26BFB15987083005F9CAB /* champ-titre-incoming.png */, - D36C43CF158F2F370048BA40 /* clavier-secondaire-actif.png */, - D36C43D0158F2F370048BA40 /* clavier-secondaire-over.png */, - D3F83F821582278D00336684 /* contact-actif-add-call.png */, - D3F83F831582278D00336684 /* contact-over-add-call.png */, - D38327EB1580FE3A00FA0D23 /* contacts-actif.png */, - D38327FC158100E400FA0D23 /* contacts-over.png */, - D38327EC1580FE3A00FA0D23 /* contacts-selectionne.png */, - D3EA5416159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png */, - D3EA5417159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png */, - D3F83F741582253100336684 /* decrocher-actif.png */, - D3F83F751582253100336684 /* decrocher-over.png */, - D38327ED1580FE3A00FA0D23 /* dialer-actif.png */, - D3F83EF2158205A100336684 /* dialer-meteo-sortir-actif.png */, - D3F83EF3158205A100336684 /* dialer-meteo-sortir-over.png */, - 34C7646A14CD5585008E9607 /* dialer-orange.png */, - D38327EE1580FE3A00FA0D23 /* dialer-over.png */, - D3F83F401582223B00336684 /* diese-actif.png */, - D3F83F411582223B00336684 /* diese-over.png */, - D3ED3E9415872EF1006C0DE4 /* edit-history-actif.png */, - D3ED3E9515872EF1006C0DE4 /* edit-history-over.png */, - D3F83F421582223B00336684 /* etoile-actif.png */, - D3F83F431582223B00336684 /* etoile-over.png */, - D31AAF67159B5C68002C6B02 /* finir-conference-actif.png */, - D31AAF68159B5C68002C6B02 /* finir-conference-over.png */, - D3ED3E401585FB4A006C0DE4 /* fond-clavier.png */, - D31C9C89158A179A00756B45 /* fond-detail-numero.png */, - D347347C1580E5F8003C7B8C /* history-actif.png */, - 34C7646B14CD5585008E9607 /* history-orange.png */, - D38327FD158100E400FA0D23 /* history-over.png */, - D347347D1580E5F8003C7B8C /* history-selectionne.png */, - 22058C70116E305000B08DDD /* icone-linphone-57.png */, - 34A6ECEA14CF13CB00460C04 /* icone-linphone-72.png */, - 228B19AE130290C500F154D3 /* iTunesArtwork */, - D354980415875534000081D8 /* linphone-actif.png */, + D3F83F741582253100336684 /* accept_default.png */, + D3F83F751582253100336684 /* accept_over.png */, + D3D6A39B159B0EEF005F692C /* add_call_default.png */, + D3D6A39C159B0EEF005F692C /* add_call_disabled.png */, + D3D6A39D159B0EEF005F692C /* add_call_over.png */, + D3ED3E6715861A53006C0DE4 /* add_contact_default.png */, + D3ED3E6815861A53006C0DE4 /* add_contact_disabled.png */, + D3ED3E6915861A53006C0DE4 /* add_contact_over.png */, + D3F34F2F1599B008005BE94F /* avatar_shadow.png */, + D31B4B261598A390002E6C72 /* avatar_unknown.png */, + D31B4B271598A390002E6C72 /* avatar_unknown_small.png */, + D3211BBB159CBFD60098460B /* back_default.png */, + D3211BBC159CBFD60098460B /* back_disabled.png */, + D3211BBD159CBFD60098460B /* back_over.png */, + D3ED3E7615861B1B006C0DE4 /* backspace_default.png */, + D35E758815932DE60066B1C1 /* backspace_disabled.png */, + D3ED3E7715861B1B006C0DE4 /* backspace_over.png */, + D3ED3E7015861ABD006C0DE4 /* call_default.png */, + D35E758C15934F360066B1C1 /* call_disabled.png */, + D3ED3E7115861ABD006C0DE4 /* call_over.png */, + D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */, + D3432A5F158A4446001C6B0B /* call_quality_indicator_1.png */, + D3432A60158A4446001C6B0B /* call_quality_indicator_2.png */, + D3432A61158A4446001C6B0B /* call_quality_indicator_3.png */, + D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */, + D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */, + D3211BA5159C3D410098460B /* call_state_outgoing_default.png */, + D36C43ED158F61EA0048BA40 /* call_state_pause_default.png */, + D36C43EE158F61EA0048BA40 /* call_state_pause_over.png */, + D36C43EF158F61EA0048BA40 /* call_state_play_default.png */, + D36C43F0158F61EA0048BA40 /* call_state_play_over.png */, + D31AAF6D159B65E1002C6B02 /* call_state_ringing_default.png */, + D31C9C8D158A1C1000756B45 /* call_status_incoming.png */, + D31C9C8E158A1C1000756B45 /* call_status_missed.png */, + D31C9C8F158A1C1000756B45 /* call_status_outgoing.png */, + D3F83F801582278D00336684 /* cancel_default.png */, + D3F83F811582278D00336684 /* cancel_over.png */, + D36C43CC158F2F370048BA40 /* cell_call.png */, + D3211BB8159C8A820098460B /* cell_call_first.png */, + D36C43CD158F2F370048BA40 /* cell_conference.png */, + D3EA5401159852080037DC6B /* chat_add_default.png */, + D3EA5402159852080037DC6B /* chat_add_over.png */, + D38327F11580FE3A00FA0D23 /* chat_default.png */, + D3EA53FF159852080037DC6B /* chat_edit_default.png */, + D3EA5400159852080037DC6B /* chat_edit_over.png */, + D38327FF158100E400FA0D23 /* chat_over.png */, + D38327F21580FE3A00FA0D23 /* chat_selected.png */, + D31AAF61159B5B6E002C6B02 /* conference_default.png */, + D31AAF62159B5B6E002C6B02 /* conference_over.png */, + D354980E15875608000081D8 /* contacts_add_default.png */, + D354980F15875608000081D8 /* contacts_add_over.png */, + D354980215875534000081D8 /* contacts_all_default.png */, + D354980315875534000081D8 /* contacts_all_selected.png */, + D38327EB1580FE3A00FA0D23 /* contacts_default.png */, + D354980415875534000081D8 /* contacts_linphone_default.png */, + D354980515875534000081D8 /* contacts_linphone_selected.png */, + D38327FC158100E400FA0D23 /* contacts_over.png */, + D38327EC1580FE3A00FA0D23 /* contacts_selected.png */, + D3F83F761582253100336684 /* decline_default.png */, + D3F83F771582253100336684 /* decline_over.png */, + D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */, + D36C43CF158F2F370048BA40 /* dialer_alt_default.png */, + D36C43D0158F2F370048BA40 /* dialer_alt_over.png */, + D38327ED1580FE3A00FA0D23 /* dialer_default.png */, + D38327EE1580FE3A00FA0D23 /* dialer_over.png */, + D3C2814A15A2D38D0098AA42 /* dialer_selected.png */, + D3F83EFA158205A100336684 /* hangup_default.png */, + D3F83EFB158205A100336684 /* hangup_over.png */, + D36C43CE158F2F370048BA40 /* header_conference.png */, + D3F26BFB15987083005F9CAB /* header_incoming.png */, + D3ED3E9215872EF1006C0DE4 /* history_all_default.png */, + D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */, + D347347C1580E5F8003C7B8C /* history_default.png */, + D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */, + D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */, + D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */, + D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */, + D3F26BF515986DAD005F9CAB /* history_ok_default.png */, + D3F26BF615986DAD005F9CAB /* history_ok_over.png */, + D38327FD158100E400FA0D23 /* history_over.png */, + D347347D1580E5F8003C7B8C /* history_selected.png */, + D3432A5C158A4446001C6B0B /* led_connected.png */, + D3432A70158A45AF001C6B0B /* led_disconnected.png */, + D3432A5D158A4446001C6B0B /* led_error.png */, + D3432A6F158A45AF001C6B0B /* led_inprogress.png */, 225CB2F911ABB76400628906 /* linphone-banner.png */, 8D1107310486CEB800E47090 /* linphone-Info.plist */, - D354980515875534000081D8 /* linphone-selectionne.png */, + 22058C70116E305000B08DDD /* linphone_icon_57.png */, + 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */, 2274550710700509006EC466 /* linphonerc */, 341FCA8D149798210084BC26 /* linphonerc-ipad */, - D3F83EF4158205A100336684 /* micro-OFF-actif.png */, - D3F83EF5158205A100336684 /* micro-OFF-over.png */, - D3F83EF6158205A100336684 /* micro-ON-actif.png */, - D3F83EF7158205A100336684 /* micro-ON-over.png */, - D3ED3E9615872EF1006C0DE4 /* missed-actif.png */, - D3ED3E9715872EF1006C0DE4 /* missed-selectionne.png */, - 3418843614C58BB100EA48C7 /* nowebcamCIF.jpg */, - D3F26BF515986DAD005F9CAB /* ok-edit-list-history-actif.png */, - D3F26BF615986DAD005F9CAB /* ok-edit-list-history-over.png */, + D3EA5416159858A80037DC6B /* list_delete_default.png */, + D3EA5417159858A80037DC6B /* list_delete_over.png */, + D354981815876FE7000081D8 /* list_details_default.png */, + D354981915876FE7000081D8 /* list_details_over.png */, + D3F83EF4158205A100336684 /* micro_off_default.png */, + D35EA76115A2DF8D003E025D /* micro_off_disabled.png */, + D3F83EF5158205A100336684 /* micro_off_over.png */, + D3F83EF6158205A100336684 /* micro_on_default.png */, + D35EA76215A2DF8D003E025D /* micro_on_disabled.png */, + D3F83EF7158205A100336684 /* micro_on_over.png */, + D3ED3E401585FB4A006C0DE4 /* numpad_background.png */, + D3F83F3C1582223B00336684 /* numpad_eight_default.png */, + D3F83F3D1582223B00336684 /* numpad_eight_over.png */, + D3F83F361582223B00336684 /* numpad_five_default.png */, + D3F83F371582223B00336684 /* numpad_five_over.png */, + D3F83F341582223B00336684 /* numpad_four_default.png */, + D3F83F351582223B00336684 /* numpad_four_over.png */, + D3F83F3E1582223B00336684 /* numpad_nine_default.png */, + D3F83F3F1582223B00336684 /* numpad_nine_over.png */, + D3F83F2E1582223B00336684 /* numpad_one_default.png */, + D3F83F2F1582223B00336684 /* numpad_one_over.png */, + D3F83F3A1582223B00336684 /* numpad_seven_default.png */, + D3F83F3B1582223B00336684 /* numpad_seven_over.png */, + D3F83F401582223B00336684 /* numpad_sharp_default.png */, + D3F83F411582223B00336684 /* numpad_sharp_over.png */, + D3F83F381582223B00336684 /* numpad_six_default.png */, + D3F83F391582223B00336684 /* numpad_six_over.png */, + D3F83F431582223B00336684 /* numpad_star_default.png */, + D3C2815115A2D64A0098AA42 /* numpad_star_over.png */, + D3F83F321582223B00336684 /* numpad_three_default.png */, + D3F83F331582223B00336684 /* numpad_three_over.png */, + D3F83F301582223B00336684 /* numpad_two_default.png */, + D3F83F311582223B00336684 /* numpad_two_over.png */, + D3F83F2C1582223B00336684 /* numpad_zero_default.png */, + D3F83F2D1582223B00336684 /* numpad_zero_over.png */, 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, - D3F34F2F1599B008005BE94F /* ombre-cotes-avatar.png */, D3D6A3A8159B0EFE005F692C /* options_default.png */, D3D6A3A9159B0EFE005F692C /* options_disabled.png */, D3D6A3AA159B0EFE005F692C /* options_over.png */, - D3211BA5159C3D410098460B /* outgoing-champ-numero-actif.png */, - D3F83EF8158205A100336684 /* pause-actif.png */, - D36C43ED158F61EA0048BA40 /* pause-champ-numero-actif.png */, - D36C43EE158F61EA0048BA40 /* pause-champ-numero-over.png */, - D3F83EF9158205A100336684 /* pause-over.png */, - D36C43E7158F3F7E0048BA40 /* play-actif.png */, - D36C43EF158F61EA0048BA40 /* play-champ-numero-actif.png */, - D36C43F0158F61EA0048BA40 /* play-champ-numero-over.png */, - D36C43E8158F3F7E0048BA40 /* play-over.png */, - D3432A5E158A4446001C6B0B /* quality-call-0.png */, - D3432A5F158A4446001C6B0B /* quality-call-1.png */, - D3432A60158A4446001C6B0B /* quality-call-2.png */, - D3432A61158A4446001C6B0B /* quality-call-3.png */, - D3F83EFA158205A100336684 /* raccrocher-actif.png */, - D3F83EFB158205A100336684 /* raccrocher-over.png */, - D3F83F761582253100336684 /* refuser-actif.png */, - D3F83F771582253100336684 /* refuser-over.png */, - D37295C9158B1E2D00D2C0C7 /* registration_inprogress.png */, - D31AAF6D159B65E1002C6B02 /* ring-champ-numero-actif.png */, + D3F83EF8158205A100336684 /* pause_off_default.png */, + D3F83EF9158205A100336684 /* pause_off_over.png */, + D36C43E7158F3F7E0048BA40 /* pause_on_default.png */, + D36C43E8158F3F7E0048BA40 /* pause_on_over.png */, 22F254801073D99800AC9B3F /* ringback.wav */, 70571E1913FABCB000CDD3C2 /* rootca.pem */, - D38327EF1580FE3A00FA0D23 /* settings-actif.png */, - D38327FE158100E400FA0D23 /* settings-over.png */, - D38327F01580FE3A00FA0D23 /* settings-selectionne.png */, - D3F83EFC158205A100336684 /* speacker-OFF-actif.png */, - D3F83EFD158205A100336684 /* speacker-OFF-over.png */, - D3F83EFE158205A100336684 /* speacker-ON-actif.png */, - D3F83EFF158205A100336684 /* speacker-ON-over.png */, - D31AAF61159B5B6E002C6B02 /* start-conference-actif.png */, - D31AAF62159B5B6E002C6B02 /* start-conference-over.png */, - 22226C11118197C0000CA27B /* startcall-green.png */, - D3432A5C158A4446001C6B0B /* status_connected.png */, - D3432A70158A45AF001C6B0B /* status_disconnected.png */, - D3432A5D158A4446001C6B0B /* status_error.png */, - D3432A6F158A45AF001C6B0B /* status_inprogress.png */, - 22226C13118197EC000CA27B /* stopcall-red.png */, - D37B96B515A1A6F20005CCD2 /* supprimer-participant-conf-actif.png */, - D37B96B615A1A6F20005CCD2 /* supprimer-participant-conf-over.png */, + D3D6A3A5159B0EFE005F692C /* security_ko.png */, + D3D6A3A7159B0EFE005F692C /* security_ok.png */, + D3D6A3A6159B0EFE005F692C /* security_pending.png */, + D38327EF1580FE3A00FA0D23 /* settings_default.png */, + D38327FE158100E400FA0D23 /* settings_over.png */, + D38327F01580FE3A00FA0D23 /* settings_selected.png */, + D3F83EFC158205A100336684 /* speaker_off_default.png */, + D365AA7915A2DE7500CAFE3F /* speaker_off_disabled.png */, + D3F83EFD158205A100336684 /* speaker_off_over.png */, + D3F83EFE158205A100336684 /* speaker_on_default.png */, + D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */, + D3F83EFF158205A100336684 /* speaker_on_over.png */, + D3ED3E511585FFFD006C0DE4 /* statebar_background.png */, D35E757515931E5D0066B1C1 /* switch_camera_default.png */, D35E757615931E5D0066B1C1 /* switch_camera_over.png */, - D38327F11580FE3A00FA0D23 /* tchat-actif.png */, - D3EA53FF159852080037DC6B /* tchat-edit-actif.png */, - D3EA5400159852080037DC6B /* tchat-edit-over.png */, - D3EA5401159852080037DC6B /* tchat-new-discussion-actif.png */, - D3EA5402159852080037DC6B /* tchat-new-discussion-over.png */, - D38327FF158100E400FA0D23 /* tchat-over.png */, - D38327F21580FE3A00FA0D23 /* tchat-selectionne.png */, D3C714B2159DB84400705B8E /* toy-mono.wav */, - D3F83F00158205A100336684 /* video-OFF-actif.png */, - D37295DA158B3C9600D2C0C7 /* video-OFF-disabled.png */, - D3F83F01158205A100336684 /* video-OFF-over.png */, - D3F83F02158205A100336684 /* video-ON-actif.png */, - D377BBF915A19DA6002B696B /* video-ON-disabled.png */, - D3F83F03158205A100336684 /* video-ON-over.png */, + D3F83F00158205A100336684 /* video_off_default.png */, + D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */, + D3F83F01158205A100336684 /* video_off_over.png */, + D3F83F02158205A100336684 /* video_on_default.png */, + D377BBF915A19DA6002B696B /* video_on_disabled.png */, + D3F83F03158205A100336684 /* video_on_over.png */, ); name = Resources; sourceTree = ""; @@ -1965,12 +1927,14 @@ D326483415887D4400930C67 /* Utils */ = { isa = PBXGroup; children = ( + D3F26BEA159869A6005F9CAB /* AbstractCall.h */, + D3F26BEB159869A6005F9CAB /* AbstractCall.m */, D32460E9159DA47700BA7F3A /* CPAnimationSequence.h */, D32460EA159DA47700BA7F3A /* CPAnimationSequence.m */, D32460EB159DA47700BA7F3A /* CPAnimationStep.h */, D32460EC159DA47700BA7F3A /* CPAnimationStep.m */, - D3F26BEA159869A6005F9CAB /* AbstractCall.h */, - D3F26BEB159869A6005F9CAB /* AbstractCall.m */, + D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */, + D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */, D326483615887D5200930C67 /* OrderedDictionary.h */, D326483715887D5200930C67 /* OrderedDictionary.m */, ); @@ -2144,151 +2108,138 @@ 22F51EF6107FA66500F98953 /* untitled.plist in Resources */, 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */, 22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */, - 22058C71116E305000B08DDD /* icone-linphone-57.png in Resources */, - 22226C12118197C0000CA27B /* startcall-green.png in Resources */, - 22226C14118197EC000CA27B /* stopcall-red.png in Resources */, + 22058C71116E305000B08DDD /* linphone_icon_57.png in Resources */, 225CB2FA11ABB76400628906 /* linphone-banner.png in Resources */, 2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */, 2242E313125235120061DDCE /* oldphone-mono-30s.caf in Resources */, 2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */, - 228B19AF130290C500F154D3 /* iTunesArtwork in Resources */, 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */, 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 3422AA5314978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */, - 3418843714C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */, - 34C7646C14CD5585008E9607 /* dialer-orange.png in Resources */, - 34C7646D14CD5585008E9607 /* history-orange.png in Resources */, - 34A6ECEB14CF13CB00460C04 /* icone-linphone-72.png in Resources */, + 34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */, D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */, - D347347E1580E5F8003C7B8C /* history-actif.png in Resources */, - D347347F1580E5F8003C7B8C /* history-selectionne.png in Resources */, - D38327F31580FE3A00FA0D23 /* contacts-actif.png in Resources */, - D38327F41580FE3A00FA0D23 /* contacts-selectionne.png in Resources */, - D38327F51580FE3A00FA0D23 /* dialer-actif.png in Resources */, - D38327F61580FE3A00FA0D23 /* dialer-over.png in Resources */, - D38327F71580FE3A00FA0D23 /* settings-actif.png in Resources */, - D38327F81580FE3A00FA0D23 /* settings-selectionne.png in Resources */, - D38327F91580FE3A00FA0D23 /* tchat-actif.png in Resources */, - D38327FA1580FE3A00FA0D23 /* tchat-selectionne.png in Resources */, - D3832800158100E400FA0D23 /* contacts-over.png in Resources */, - D3832801158100E400FA0D23 /* history-over.png in Resources */, - D3832802158100E400FA0D23 /* settings-over.png in Resources */, - D3832803158100E400FA0D23 /* tchat-over.png in Resources */, + D347347E1580E5F8003C7B8C /* history_default.png in Resources */, + D347347F1580E5F8003C7B8C /* history_selected.png in Resources */, + D38327F31580FE3A00FA0D23 /* contacts_default.png in Resources */, + D38327F41580FE3A00FA0D23 /* contacts_selected.png in Resources */, + D38327F51580FE3A00FA0D23 /* dialer_default.png in Resources */, + D38327F61580FE3A00FA0D23 /* dialer_over.png in Resources */, + D38327F71580FE3A00FA0D23 /* settings_default.png in Resources */, + D38327F81580FE3A00FA0D23 /* settings_selected.png in Resources */, + D38327F91580FE3A00FA0D23 /* chat_default.png in Resources */, + D38327FA1580FE3A00FA0D23 /* chat_selected.png in Resources */, + D3832800158100E400FA0D23 /* contacts_over.png in Resources */, + D3832801158100E400FA0D23 /* history_over.png in Resources */, + D3832802158100E400FA0D23 /* settings_over.png in Resources */, + D3832803158100E400FA0D23 /* chat_over.png in Resources */, D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */, - D3F83F08158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */, - D3F83F0A158205A100336684 /* dialer-meteo-sortir-over.png in Resources */, - D3F83F0C158205A100336684 /* micro-OFF-actif.png in Resources */, - D3F83F0E158205A100336684 /* micro-OFF-over.png in Resources */, - D3F83F10158205A100336684 /* micro-ON-actif.png in Resources */, - D3F83F12158205A100336684 /* micro-ON-over.png in Resources */, - D3F83F14158205A100336684 /* pause-actif.png in Resources */, - D3F83F16158205A100336684 /* pause-over.png in Resources */, - D3F83F18158205A100336684 /* raccrocher-actif.png in Resources */, - D3F83F1A158205A100336684 /* raccrocher-over.png in Resources */, - D3F83F1C158205A100336684 /* speacker-OFF-actif.png in Resources */, - D3F83F1E158205A100336684 /* speacker-OFF-over.png in Resources */, - D3F83F20158205A100336684 /* speacker-ON-actif.png in Resources */, - D3F83F22158205A100336684 /* speacker-ON-over.png in Resources */, - D3F83F24158205A100336684 /* video-OFF-actif.png in Resources */, - D3F83F26158205A100336684 /* video-OFF-over.png in Resources */, - D3F83F28158205A100336684 /* video-ON-actif.png in Resources */, - D3F83F2A158205A100336684 /* video-ON-over.png in Resources */, - D3F83F441582223B00336684 /* 0-actif.png in Resources */, - D3F83F461582223B00336684 /* 0-over.png in Resources */, - D3F83F481582223B00336684 /* 1-actif.png in Resources */, - D3F83F4A1582223B00336684 /* 1-over.png in Resources */, - D3F83F4C1582223B00336684 /* 2-actif.png in Resources */, - D3F83F4E1582223B00336684 /* 2-over.png in Resources */, - D3F83F501582223B00336684 /* 3-actif.png in Resources */, - D3F83F521582223B00336684 /* 3-over.png in Resources */, - D3F83F541582223B00336684 /* 4-actif.png in Resources */, - D3F83F561582223B00336684 /* 4-over.png in Resources */, - D3F83F581582223B00336684 /* 5-actif.png in Resources */, - D3F83F5A1582223B00336684 /* 5-over.png in Resources */, - D3F83F5C1582223B00336684 /* 6-actif.png in Resources */, - D3F83F5E1582223B00336684 /* 6-over.png in Resources */, - D3F83F601582223B00336684 /* 7-actif.png in Resources */, - D3F83F621582223B00336684 /* 7-over.png in Resources */, - D3F83F641582223B00336684 /* 8-actif.png in Resources */, - D3F83F661582223B00336684 /* 8-over.png in Resources */, - D3F83F681582223B00336684 /* 9-actif.png in Resources */, - D3F83F6A1582223B00336684 /* 9-over.png in Resources */, - D3F83F6C1582223B00336684 /* diese-actif.png in Resources */, - D3F83F6E1582223B00336684 /* diese-over.png in Resources */, - D3F83F701582223B00336684 /* etoile-actif.png in Resources */, - D3F83F721582223B00336684 /* etoile-over.png in Resources */, - D3F83F781582253100336684 /* decrocher-actif.png in Resources */, - D3F83F7A1582253100336684 /* decrocher-over.png in Resources */, - D3F83F7C1582253100336684 /* refuser-actif.png in Resources */, - D3F83F7E1582253100336684 /* refuser-over.png in Resources */, - D3F83F841582278D00336684 /* cancel-actif.png in Resources */, - D3F83F861582278D00336684 /* cancel-over.png in Resources */, - D3F83F881582278D00336684 /* contact-actif-add-call.png in Resources */, - D3F83F8A1582278D00336684 /* contact-over-add-call.png in Resources */, + D3F83F0C158205A100336684 /* micro_off_default.png in Resources */, + D3F83F0E158205A100336684 /* micro_off_over.png in Resources */, + D3F83F10158205A100336684 /* micro_on_default.png in Resources */, + D3F83F12158205A100336684 /* micro_on_over.png in Resources */, + D3F83F14158205A100336684 /* pause_off_default.png in Resources */, + D3F83F16158205A100336684 /* pause_off_over.png in Resources */, + D3F83F18158205A100336684 /* hangup_default.png in Resources */, + D3F83F1A158205A100336684 /* hangup_over.png in Resources */, + D3F83F1C158205A100336684 /* speaker_off_default.png in Resources */, + D3F83F1E158205A100336684 /* speaker_off_over.png in Resources */, + D3F83F20158205A100336684 /* speaker_on_default.png in Resources */, + D3F83F22158205A100336684 /* speaker_on_over.png in Resources */, + D3F83F24158205A100336684 /* video_off_default.png in Resources */, + D3F83F26158205A100336684 /* video_off_over.png in Resources */, + D3F83F28158205A100336684 /* video_on_default.png in Resources */, + D3F83F2A158205A100336684 /* video_on_over.png in Resources */, + D3F83F441582223B00336684 /* numpad_zero_default.png in Resources */, + D3F83F461582223B00336684 /* numpad_zero_over.png in Resources */, + D3F83F481582223B00336684 /* numpad_one_default.png in Resources */, + D3F83F4A1582223B00336684 /* numpad_one_over.png in Resources */, + D3F83F4C1582223B00336684 /* numpad_two_default.png in Resources */, + D3F83F4E1582223B00336684 /* numpad_two_over.png in Resources */, + D3F83F501582223B00336684 /* numpad_three_default.png in Resources */, + D3F83F521582223B00336684 /* numpad_three_over.png in Resources */, + D3F83F541582223B00336684 /* numpad_four_default.png in Resources */, + D3F83F561582223B00336684 /* numpad_four_over.png in Resources */, + D3F83F581582223B00336684 /* numpad_five_default.png in Resources */, + D3F83F5A1582223B00336684 /* numpad_five_over.png in Resources */, + D3F83F5C1582223B00336684 /* numpad_six_default.png in Resources */, + D3F83F5E1582223B00336684 /* numpad_six_over.png in Resources */, + D3F83F601582223B00336684 /* numpad_seven_default.png in Resources */, + D3F83F621582223B00336684 /* numpad_seven_over.png in Resources */, + D3F83F641582223B00336684 /* numpad_eight_default.png in Resources */, + D3F83F661582223B00336684 /* numpad_eight_over.png in Resources */, + D3F83F681582223B00336684 /* numpad_nine_default.png in Resources */, + D3F83F6A1582223B00336684 /* numpad_nine_over.png in Resources */, + D3F83F6C1582223B00336684 /* numpad_sharp_default.png in Resources */, + D3F83F6E1582223B00336684 /* numpad_sharp_over.png in Resources */, + D3F83F721582223B00336684 /* numpad_star_default.png in Resources */, + D3F83F781582253100336684 /* accept_default.png in Resources */, + D3F83F7A1582253100336684 /* accept_over.png in Resources */, + D3F83F7C1582253100336684 /* decline_default.png in Resources */, + D3F83F7E1582253100336684 /* decline_over.png in Resources */, + D3F83F841582278D00336684 /* cancel_default.png in Resources */, + D3F83F861582278D00336684 /* cancel_over.png in Resources */, D3F83F9215824D3600336684 /* LinphoneApp.xib in Resources */, - D3ED3E411585FB4A006C0DE4 /* fond-clavier.png in Resources */, - D3ED3E451585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */, - D3ED3E521585FFFD006C0DE4 /* barre-noire-top.png in Resources */, - D3ED3E6A15861A53006C0DE4 /* add-contact-actif.png in Resources */, - D3ED3E6C15861A53006C0DE4 /* add-contact-inactif.png in Resources */, - D3ED3E6E15861A53006C0DE4 /* add-contact-over.png in Resources */, - D3ED3E7215861ABD006C0DE4 /* appeler-actif.png in Resources */, - D3ED3E7415861ABD006C0DE4 /* appeler-over.png in Resources */, - D3ED3E7815861B1B006C0DE4 /* backspace-actif.png in Resources */, - D3ED3E7A15861B1B006C0DE4 /* backspace-over.png in Resources */, + D3ED3E411585FB4A006C0DE4 /* numpad_background.png in Resources */, + D3ED3E451585FB8C006C0DE4 /* dialer_address_background.png in Resources */, + D3ED3E521585FFFD006C0DE4 /* statebar_background.png in Resources */, + D3ED3E6A15861A53006C0DE4 /* add_contact_default.png in Resources */, + D3ED3E6C15861A53006C0DE4 /* add_contact_disabled.png in Resources */, + D3ED3E6E15861A53006C0DE4 /* add_contact_over.png in Resources */, + D3ED3E7215861ABD006C0DE4 /* call_default.png in Resources */, + D3ED3E7415861ABD006C0DE4 /* call_over.png in Resources */, + D3ED3E7815861B1B006C0DE4 /* backspace_default.png in Resources */, + D3ED3E7A15861B1B006C0DE4 /* backspace_over.png in Resources */, D3ED3E891586291E006C0DE4 /* UIMainBar.xib in Resources */, - D3ED3E9815872EF1006C0DE4 /* all-call-actif.png in Resources */, - D3ED3E9A15872EF1006C0DE4 /* all-call-selectionne.png in Resources */, - D3ED3E9C15872EF1006C0DE4 /* edit-history-actif.png in Resources */, - D3ED3E9E15872EF1006C0DE4 /* edit-history-over.png in Resources */, - D3ED3EA015872EF1006C0DE4 /* missed-actif.png in Resources */, - D3ED3EA215872EF1006C0DE4 /* missed-selectionne.png in Resources */, + D3ED3E9815872EF1006C0DE4 /* history_all_default.png in Resources */, + D3ED3E9A15872EF1006C0DE4 /* history_all_selected.png in Resources */, + D3ED3E9C15872EF1006C0DE4 /* history_edit_default.png in Resources */, + D3ED3E9E15872EF1006C0DE4 /* history_edit_over.png in Resources */, + D3ED3EA015872EF1006C0DE4 /* history_missed_default.png in Resources */, + D3ED3EA215872EF1006C0DE4 /* history_missed_selected.png in Resources */, D3ED3EB3158738FB006C0DE4 /* HistoryViewController.xib in Resources */, D354980015875372000081D8 /* ContactsViewController.xib in Resources */, - D354980615875534000081D8 /* all-contacts-actif.png in Resources */, - D354980815875534000081D8 /* all-contacts-selectionne.png in Resources */, - D354980A15875534000081D8 /* linphone-actif.png in Resources */, - D354980C15875534000081D8 /* linphone-selectionne.png in Resources */, - D354981015875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */, - D354981215875608000081D8 /* add-contact-depuis-detail-over.png in Resources */, - D354981A15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */, - D354981C15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */, + D354980615875534000081D8 /* contacts_all_default.png in Resources */, + D354980815875534000081D8 /* contacts_all_selected.png in Resources */, + D354980A15875534000081D8 /* contacts_linphone_default.png in Resources */, + D354980C15875534000081D8 /* contacts_linphone_selected.png in Resources */, + D354981015875608000081D8 /* contacts_add_default.png in Resources */, + D354981215875608000081D8 /* contacts_add_over.png in Resources */, + D354981A15876FE7000081D8 /* list_details_default.png in Resources */, + D354981C15876FE7000081D8 /* list_details_over.png in Resources */, D35498231587716B000081D8 /* UIStateBar.xib in Resources */, D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */, D32648401588950F00930C67 /* UICallBar.xib in Resources */, - D31C9C8A158A179A00756B45 /* fond-detail-numero.png in Resources */, - D31C9C90158A1C1000756B45 /* appel-entrant.png in Resources */, - D31C9C92158A1C1000756B45 /* appel-manque.png in Resources */, - D31C9C94158A1C1000756B45 /* appel-sortant.png in Resources */, + D31C9C90158A1C1000756B45 /* call_status_incoming.png in Resources */, + D31C9C92158A1C1000756B45 /* call_status_missed.png in Resources */, + D31C9C94158A1C1000756B45 /* call_status_outgoing.png in Resources */, D31AC4B0158A29C600C2638B /* UIHistoryCell.xib in Resources */, - D3432A62158A4446001C6B0B /* status_connected.png in Resources */, - D3432A64158A4446001C6B0B /* status_error.png in Resources */, - D3432A66158A4446001C6B0B /* quality-call-0.png in Resources */, - D3432A68158A4446001C6B0B /* quality-call-1.png in Resources */, - D3432A6A158A4446001C6B0B /* quality-call-2.png in Resources */, - D3432A6C158A4446001C6B0B /* quality-call-3.png in Resources */, - D3432A71158A45AF001C6B0B /* status_inprogress.png in Resources */, - D3432A73158A45AF001C6B0B /* status_disconnected.png in Resources */, - D37295CA158B1E2D00D2C0C7 /* registration_inprogress.png in Resources */, - D37295DB158B3C9600D2C0C7 /* video-OFF-disabled.png in Resources */, + D3432A62158A4446001C6B0B /* led_connected.png in Resources */, + D3432A64158A4446001C6B0B /* led_error.png in Resources */, + D3432A66158A4446001C6B0B /* call_quality_indicator_0.png in Resources */, + D3432A68158A4446001C6B0B /* call_quality_indicator_1.png in Resources */, + D3432A6A158A4446001C6B0B /* call_quality_indicator_2.png in Resources */, + D3432A6C158A4446001C6B0B /* call_quality_indicator_3.png in Resources */, + D3432A71158A45AF001C6B0B /* led_inprogress.png in Resources */, + D3432A73158A45AF001C6B0B /* led_disconnected.png in Resources */, + D37295DB158B3C9600D2C0C7 /* video_off_disabled.png in Resources */, D36C43CA158F2EE50048BA40 /* UICallCell.xib in Resources */, - D36C43D1158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */, - D36C43D3158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */, - D36C43D5158F2F370048BA40 /* champ-titre-conference.png in Resources */, - D36C43D7158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */, - D36C43D9158F2F370048BA40 /* clavier-secondaire-over.png in Resources */, - D36C43E9158F3F7E0048BA40 /* play-actif.png in Resources */, - D36C43EB158F3F7E0048BA40 /* play-over.png in Resources */, - D36C43F1158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */, - D36C43F3158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */, - D36C43F5158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */, - D36C43F7158F61EA0048BA40 /* play-champ-numero-over.png in Resources */, + D36C43D1158F2F370048BA40 /* cell_call.png in Resources */, + D36C43D3158F2F370048BA40 /* cell_conference.png in Resources */, + D36C43D5158F2F370048BA40 /* header_conference.png in Resources */, + D36C43D7158F2F370048BA40 /* dialer_alt_default.png in Resources */, + D36C43D9158F2F370048BA40 /* dialer_alt_over.png in Resources */, + D36C43E9158F3F7E0048BA40 /* pause_on_default.png in Resources */, + D36C43EB158F3F7E0048BA40 /* pause_on_over.png in Resources */, + D36C43F1158F61EA0048BA40 /* call_state_pause_default.png in Resources */, + D36C43F3158F61EA0048BA40 /* call_state_pause_over.png in Resources */, + D36C43F5158F61EA0048BA40 /* call_state_play_default.png in Resources */, + D36C43F7158F61EA0048BA40 /* call_state_play_over.png in Resources */, D35E757815931E5D0066B1C1 /* switch_camera_default.png in Resources */, D35E757A15931E5D0066B1C1 /* switch_camera_over.png in Resources */, - D35E758915932DE60066B1C1 /* backspace-disabled.png in Resources */, - D35E758D15934F360066B1C1 /* appeler-disabled.png in Resources */, + D35E758915932DE60066B1C1 /* backspace_disabled.png in Resources */, + D35E758D15934F360066B1C1 /* call_disabled.png in Resources */, D35E7599159460580066B1C1 /* ChatViewController.xib in Resources */, D37DC70B1594AE6F00B2A5EB /* IASKAppSettingsView.xib in Resources */, D37DC70D1594AE6F00B2A5EB /* IASKAppSettingsWebView.xib in Resources */, @@ -2298,45 +2249,49 @@ D37DC7151594AE6F00B2A5EB /* IASKSpecifierValuesView.xib in Resources */, D32942A41594C94300556A1C /* SettingsViewController.xib in Resources */, D34F6F9E1594D3FB0095705B /* InAppSettings.bundle in Resources */, - D3EA5403159852080037DC6B /* tchat-edit-actif.png in Resources */, - D3EA5405159852080037DC6B /* tchat-edit-over.png in Resources */, - D3EA5407159852080037DC6B /* tchat-new-discussion-actif.png in Resources */, - D3EA5409159852080037DC6B /* tchat-new-discussion-over.png in Resources */, + D3EA5403159852080037DC6B /* chat_edit_default.png in Resources */, + D3EA5405159852080037DC6B /* chat_edit_over.png in Resources */, + D3EA5407159852080037DC6B /* chat_add_default.png in Resources */, + D3EA5409159852080037DC6B /* chat_add_over.png in Resources */, D3EA5414159853C90037DC6B /* UIChatCell.xib in Resources */, - D3EA5418159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png in Resources */, - D3EA541A159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png in Resources */, + D3EA5418159858A80037DC6B /* list_delete_default.png in Resources */, + D3EA541A159858A80037DC6B /* list_delete_over.png in Resources */, D3F26BF315986B73005F9CAB /* IncomingCallViewController.xib in Resources */, - D3F26BF715986DAD005F9CAB /* ok-edit-list-history-actif.png in Resources */, - D3F26BF915986DAD005F9CAB /* ok-edit-list-history-over.png in Resources */, - D3F26BFC15987083005F9CAB /* champ-titre-incoming.png in Resources */, + D3F26BF715986DAD005F9CAB /* history_ok_default.png in Resources */, + D3F26BF915986DAD005F9CAB /* history_ok_over.png in Resources */, + D3F26BFC15987083005F9CAB /* header_incoming.png in Resources */, D31B4B23159876C0002E6C72 /* UICompositeViewController.xib in Resources */, - D31B4B281598A390002E6C72 /* avatar-inconnu.png in Resources */, - D31B4B2A1598A390002E6C72 /* avatar-small.png in Resources */, - D3F34F301599B008005BE94F /* ombre-cotes-avatar.png in Resources */, - D3D6A39E159B0EEF005F692C /* add_call_more_default.png in Resources */, - D3D6A3A0159B0EEF005F692C /* add_call_more_disable.png in Resources */, - D3D6A3A2159B0EEF005F692C /* add_call_more_over.png in Resources */, - D3D6A3AB159B0EFE005F692C /* cadenas-barre.png in Resources */, - D3D6A3AD159B0EFE005F692C /* cadenas-interrogation.png in Resources */, - D3D6A3AF159B0EFE005F692C /* cadenas.png in Resources */, + D31B4B281598A390002E6C72 /* avatar_unknown.png in Resources */, + D31B4B2A1598A390002E6C72 /* avatar_unknown_small.png in Resources */, + D3F34F301599B008005BE94F /* avatar_shadow.png in Resources */, + D3D6A39E159B0EEF005F692C /* add_call_default.png in Resources */, + D3D6A3A0159B0EEF005F692C /* add_call_disabled.png in Resources */, + D3D6A3A2159B0EEF005F692C /* add_call_over.png in Resources */, + D3D6A3AB159B0EFE005F692C /* security_ko.png in Resources */, + D3D6A3AD159B0EFE005F692C /* security_pending.png in Resources */, + D3D6A3AF159B0EFE005F692C /* security_ok.png in Resources */, D3D6A3B1159B0EFE005F692C /* options_default.png in Resources */, D3D6A3B3159B0EFE005F692C /* options_disabled.png in Resources */, D3D6A3B5159B0EFE005F692C /* options_over.png in Resources */, - D31AAF63159B5B6F002C6B02 /* start-conference-actif.png in Resources */, - D31AAF65159B5B6F002C6B02 /* start-conference-over.png in Resources */, - D31AAF69159B5C68002C6B02 /* finir-conference-actif.png in Resources */, - D31AAF6B159B5C68002C6B02 /* finir-conference-over.png in Resources */, - D31AAF6E159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */, - D3211BA6159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */, + D31AAF63159B5B6F002C6B02 /* conference_default.png in Resources */, + D31AAF65159B5B6F002C6B02 /* conference_over.png in Resources */, + D31AAF6E159B65E1002C6B02 /* call_state_ringing_default.png in Resources */, + D3211BA6159C3D410098460B /* call_state_outgoing_default.png in Resources */, D3211BB2159C4EF10098460B /* UIConferenceHeader.xib in Resources */, - D3211BB9159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */, - D3211BBE159CBFD60098460B /* cancel_white_bg_default.png in Resources */, - D3211BC0159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */, - D3211BC2159CBFD70098460B /* cancel_white_bg_over.png in Resources */, + D3211BB9159C8A820098460B /* cell_call_first.png in Resources */, + D3211BBE159CBFD60098460B /* back_default.png in Resources */, + D3211BC0159CBFD70098460B /* back_disabled.png in Resources */, + D3211BC2159CBFD70098460B /* back_over.png in Resources */, D3C714B3159DB84400705B8E /* toy-mono.wav in Resources */, - D377BBFA15A19DA6002B696B /* video-ON-disabled.png in Resources */, - D37B96B715A1A6F20005CCD2 /* supprimer-participant-conf-actif.png in Resources */, - D37B96B915A1A6F20005CCD2 /* supprimer-participant-conf-over.png in Resources */, + D377BBFA15A19DA6002B696B /* video_on_disabled.png in Resources */, + D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */, + D37B96B915A1A6F20005CCD2 /* call_state_delete_over.png in Resources */, + D3C2814B15A2D38D0098AA42 /* dialer_selected.png in Resources */, + D3C2815215A2D64A0098AA42 /* numpad_star_over.png in Resources */, + D365AA7B15A2DE7500CAFE3F /* speaker_off_disabled.png in Resources */, + D365AA7D15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */, + D35EA76315A2DF8D003E025D /* micro_off_disabled.png in Resources */, + D35EA76515A2DF8D003E025D /* micro_on_disabled.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2350,136 +2305,123 @@ 22D8F124147548E2008C97DB /* untitled.plist in Resources */, 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */, 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */, - 22D8F12E147548E2008C97DB /* icone-linphone-57.png in Resources */, - 22D8F12F147548E2008C97DB /* startcall-green.png in Resources */, - 22D8F130147548E2008C97DB /* stopcall-red.png in Resources */, + 22D8F12E147548E2008C97DB /* linphone_icon_57.png in Resources */, 22D8F137147548E2008C97DB /* linphone-banner.png in Resources */, 22D8F138147548E2008C97DB /* MoreViewController.xib in Resources */, 22D8F139147548E2008C97DB /* oldphone-mono-30s.caf in Resources */, 22D8F13B147548E2008C97DB /* FirstLoginViewController.xib in Resources */, - 22D8F13C147548E2008C97DB /* iTunesArtwork in Resources */, 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */, 22D8F142147548E2008C97DB /* rootca.pem in Resources */, 2211DB95147564B400DEE054 /* Settings.bundle in Resources */, 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 3422AA5414978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */, - 3418843814C58BB100EA48C7 /* nowebcamCIF.jpg in Resources */, - 57282931154AF1460076F540 /* history-orange.png in Resources */, - 57282933154AF14D0076F540 /* dialer-orange.png in Resources */, D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */, - D3F83F09158205A100336684 /* dialer-meteo-sortir-actif.png in Resources */, - D3F83F0B158205A100336684 /* dialer-meteo-sortir-over.png in Resources */, - D3F83F0D158205A100336684 /* micro-OFF-actif.png in Resources */, - D3F83F0F158205A100336684 /* micro-OFF-over.png in Resources */, - D3F83F11158205A100336684 /* micro-ON-actif.png in Resources */, - D3F83F13158205A100336684 /* micro-ON-over.png in Resources */, - D3F83F15158205A100336684 /* pause-actif.png in Resources */, - D3F83F17158205A100336684 /* pause-over.png in Resources */, - D3F83F19158205A100336684 /* raccrocher-actif.png in Resources */, - D3F83F1B158205A100336684 /* raccrocher-over.png in Resources */, - D3F83F1D158205A100336684 /* speacker-OFF-actif.png in Resources */, - D3F83F1F158205A100336684 /* speacker-OFF-over.png in Resources */, - D3F83F21158205A100336684 /* speacker-ON-actif.png in Resources */, - D3F83F23158205A100336684 /* speacker-ON-over.png in Resources */, - D3F83F25158205A100336684 /* video-OFF-actif.png in Resources */, - D3F83F27158205A100336684 /* video-OFF-over.png in Resources */, - D3F83F29158205A100336684 /* video-ON-actif.png in Resources */, - D3F83F2B158205A100336684 /* video-ON-over.png in Resources */, - D3F83F451582223B00336684 /* 0-actif.png in Resources */, - D3F83F471582223B00336684 /* 0-over.png in Resources */, - D3F83F491582223B00336684 /* 1-actif.png in Resources */, - D3F83F4B1582223B00336684 /* 1-over.png in Resources */, - D3F83F4D1582223B00336684 /* 2-actif.png in Resources */, - D3F83F4F1582223B00336684 /* 2-over.png in Resources */, - D3F83F511582223B00336684 /* 3-actif.png in Resources */, - D3F83F531582223B00336684 /* 3-over.png in Resources */, - D3F83F551582223B00336684 /* 4-actif.png in Resources */, - D3F83F571582223B00336684 /* 4-over.png in Resources */, - D3F83F591582223B00336684 /* 5-actif.png in Resources */, - D3F83F5B1582223B00336684 /* 5-over.png in Resources */, - D3F83F5D1582223B00336684 /* 6-actif.png in Resources */, - D3F83F5F1582223B00336684 /* 6-over.png in Resources */, - D3F83F611582223B00336684 /* 7-actif.png in Resources */, - D3F83F631582223B00336684 /* 7-over.png in Resources */, - D3F83F651582223B00336684 /* 8-actif.png in Resources */, - D3F83F671582223B00336684 /* 8-over.png in Resources */, - D3F83F691582223B00336684 /* 9-actif.png in Resources */, - D3F83F6B1582223B00336684 /* 9-over.png in Resources */, - D3F83F6D1582223B00336684 /* diese-actif.png in Resources */, - D3F83F6F1582223B00336684 /* diese-over.png in Resources */, - D3F83F711582223B00336684 /* etoile-actif.png in Resources */, - D3F83F731582223B00336684 /* etoile-over.png in Resources */, - D3F83F791582253100336684 /* decrocher-actif.png in Resources */, - D3F83F7B1582253100336684 /* decrocher-over.png in Resources */, - D3F83F7D1582253100336684 /* refuser-actif.png in Resources */, - D3F83F7F1582253100336684 /* refuser-over.png in Resources */, - D3F83F851582278D00336684 /* cancel-actif.png in Resources */, - D3F83F871582278D00336684 /* cancel-over.png in Resources */, - D3F83F891582278D00336684 /* contact-actif-add-call.png in Resources */, - D3F83F8B1582278D00336684 /* contact-over-add-call.png in Resources */, + D3F83F0D158205A100336684 /* micro_off_default.png in Resources */, + D3F83F0F158205A100336684 /* micro_off_over.png in Resources */, + D3F83F11158205A100336684 /* micro_on_default.png in Resources */, + D3F83F13158205A100336684 /* micro_on_over.png in Resources */, + D3F83F15158205A100336684 /* pause_off_default.png in Resources */, + D3F83F17158205A100336684 /* pause_off_over.png in Resources */, + D3F83F19158205A100336684 /* hangup_default.png in Resources */, + D3F83F1B158205A100336684 /* hangup_over.png in Resources */, + D3F83F1D158205A100336684 /* speaker_off_default.png in Resources */, + D3F83F1F158205A100336684 /* speaker_off_over.png in Resources */, + D3F83F21158205A100336684 /* speaker_on_default.png in Resources */, + D3F83F23158205A100336684 /* speaker_on_over.png in Resources */, + D3F83F25158205A100336684 /* video_off_default.png in Resources */, + D3F83F27158205A100336684 /* video_off_over.png in Resources */, + D3F83F29158205A100336684 /* video_on_default.png in Resources */, + D3F83F2B158205A100336684 /* video_on_over.png in Resources */, + D3F83F451582223B00336684 /* numpad_zero_default.png in Resources */, + D3F83F471582223B00336684 /* numpad_zero_over.png in Resources */, + D3F83F491582223B00336684 /* numpad_one_default.png in Resources */, + D3F83F4B1582223B00336684 /* numpad_one_over.png in Resources */, + D3F83F4D1582223B00336684 /* numpad_two_default.png in Resources */, + D3F83F4F1582223B00336684 /* numpad_two_over.png in Resources */, + D3F83F511582223B00336684 /* numpad_three_default.png in Resources */, + D3F83F531582223B00336684 /* numpad_three_over.png in Resources */, + D3F83F551582223B00336684 /* numpad_four_default.png in Resources */, + D3F83F571582223B00336684 /* numpad_four_over.png in Resources */, + D3F83F591582223B00336684 /* numpad_five_default.png in Resources */, + D3F83F5B1582223B00336684 /* numpad_five_over.png in Resources */, + D3F83F5D1582223B00336684 /* numpad_six_default.png in Resources */, + D3F83F5F1582223B00336684 /* numpad_six_over.png in Resources */, + D3F83F611582223B00336684 /* numpad_seven_default.png in Resources */, + D3F83F631582223B00336684 /* numpad_seven_over.png in Resources */, + D3F83F651582223B00336684 /* numpad_eight_default.png in Resources */, + D3F83F671582223B00336684 /* numpad_eight_over.png in Resources */, + D3F83F691582223B00336684 /* numpad_nine_default.png in Resources */, + D3F83F6B1582223B00336684 /* numpad_nine_over.png in Resources */, + D3F83F6D1582223B00336684 /* numpad_sharp_default.png in Resources */, + D3F83F6F1582223B00336684 /* numpad_sharp_over.png in Resources */, + D3F83F731582223B00336684 /* numpad_star_default.png in Resources */, + D3F83F791582253100336684 /* accept_default.png in Resources */, + D3F83F7B1582253100336684 /* accept_over.png in Resources */, + D3F83F7D1582253100336684 /* decline_default.png in Resources */, + D3F83F7F1582253100336684 /* decline_over.png in Resources */, + D3F83F851582278D00336684 /* cancel_default.png in Resources */, + D3F83F871582278D00336684 /* cancel_over.png in Resources */, D3F83F9315824D3600336684 /* LinphoneApp.xib in Resources */, - D3ED3E421585FB4A006C0DE4 /* fond-clavier.png in Resources */, - D3ED3E461585FB8C006C0DE4 /* champ-saisie-numero.png in Resources */, - D3ED3E531585FFFD006C0DE4 /* barre-noire-top.png in Resources */, - D3ED3E6B15861A53006C0DE4 /* add-contact-actif.png in Resources */, - D3ED3E6D15861A53006C0DE4 /* add-contact-inactif.png in Resources */, - D3ED3E6F15861A53006C0DE4 /* add-contact-over.png in Resources */, - D3ED3E7315861ABD006C0DE4 /* appeler-actif.png in Resources */, - D3ED3E7515861ABD006C0DE4 /* appeler-over.png in Resources */, - D3ED3E7915861B1B006C0DE4 /* backspace-actif.png in Resources */, - D3ED3E7B15861B1B006C0DE4 /* backspace-over.png in Resources */, + D3ED3E421585FB4A006C0DE4 /* numpad_background.png in Resources */, + D3ED3E461585FB8C006C0DE4 /* dialer_address_background.png in Resources */, + D3ED3E531585FFFD006C0DE4 /* statebar_background.png in Resources */, + D3ED3E6B15861A53006C0DE4 /* add_contact_default.png in Resources */, + D3ED3E6D15861A53006C0DE4 /* add_contact_disabled.png in Resources */, + D3ED3E6F15861A53006C0DE4 /* add_contact_over.png in Resources */, + D3ED3E7315861ABD006C0DE4 /* call_default.png in Resources */, + D3ED3E7515861ABD006C0DE4 /* call_over.png in Resources */, + D3ED3E7915861B1B006C0DE4 /* backspace_default.png in Resources */, + D3ED3E7B15861B1B006C0DE4 /* backspace_over.png in Resources */, D3ED3E8A1586291E006C0DE4 /* UIMainBar.xib in Resources */, - D3ED3E9915872EF1006C0DE4 /* all-call-actif.png in Resources */, - D3ED3E9B15872EF1006C0DE4 /* all-call-selectionne.png in Resources */, - D3ED3E9D15872EF1006C0DE4 /* edit-history-actif.png in Resources */, - D3ED3E9F15872EF1006C0DE4 /* edit-history-over.png in Resources */, - D3ED3EA115872EF1006C0DE4 /* missed-actif.png in Resources */, - D3ED3EA315872EF1006C0DE4 /* missed-selectionne.png in Resources */, + D3ED3E9915872EF1006C0DE4 /* history_all_default.png in Resources */, + D3ED3E9B15872EF1006C0DE4 /* history_all_selected.png in Resources */, + D3ED3E9D15872EF1006C0DE4 /* history_edit_default.png in Resources */, + D3ED3E9F15872EF1006C0DE4 /* history_edit_over.png in Resources */, + D3ED3EA115872EF1006C0DE4 /* history_missed_default.png in Resources */, + D3ED3EA315872EF1006C0DE4 /* history_missed_selected.png in Resources */, D3ED3EB4158738FB006C0DE4 /* HistoryViewController.xib in Resources */, D354980115875372000081D8 /* ContactsViewController.xib in Resources */, - D354980715875534000081D8 /* all-contacts-actif.png in Resources */, - D354980915875534000081D8 /* all-contacts-selectionne.png in Resources */, - D354980B15875534000081D8 /* linphone-actif.png in Resources */, - D354980D15875534000081D8 /* linphone-selectionne.png in Resources */, - D354981115875608000081D8 /* add-contact-depuis-detail-actif.png in Resources */, - D354981315875608000081D8 /* add-contact-depuis-detail-over.png in Resources */, - D354981B15876FE7000081D8 /* bouton-detail-contact-actif.png in Resources */, - D354981D15876FE7000081D8 /* bouton-detail-contact-over.png in Resources */, + D354980715875534000081D8 /* contacts_all_default.png in Resources */, + D354980915875534000081D8 /* contacts_all_selected.png in Resources */, + D354980B15875534000081D8 /* contacts_linphone_default.png in Resources */, + D354980D15875534000081D8 /* contacts_linphone_selected.png in Resources */, + D354981115875608000081D8 /* contacts_add_default.png in Resources */, + D354981315875608000081D8 /* contacts_add_over.png in Resources */, + D354981B15876FE7000081D8 /* list_details_default.png in Resources */, + D354981D15876FE7000081D8 /* list_details_over.png in Resources */, D35498241587716B000081D8 /* UIStateBar.xib in Resources */, D3A55FC015877E69003FD403 /* UIContactCell.xib in Resources */, D32648411588950F00930C67 /* UICallBar.xib in Resources */, - D31C9C8B158A179A00756B45 /* fond-detail-numero.png in Resources */, - D31C9C91158A1C1000756B45 /* appel-entrant.png in Resources */, - D31C9C93158A1C1000756B45 /* appel-manque.png in Resources */, - D31C9C95158A1C1000756B45 /* appel-sortant.png in Resources */, + D31C9C91158A1C1000756B45 /* call_status_incoming.png in Resources */, + D31C9C93158A1C1000756B45 /* call_status_missed.png in Resources */, + D31C9C95158A1C1000756B45 /* call_status_outgoing.png in Resources */, D31AC4B1158A29C600C2638B /* UIHistoryCell.xib in Resources */, - D3432A63158A4446001C6B0B /* status_connected.png in Resources */, - D3432A65158A4446001C6B0B /* status_error.png in Resources */, - D3432A67158A4446001C6B0B /* quality-call-0.png in Resources */, - D3432A69158A4446001C6B0B /* quality-call-1.png in Resources */, - D3432A6B158A4446001C6B0B /* quality-call-2.png in Resources */, - D3432A6D158A4446001C6B0B /* quality-call-3.png in Resources */, - D3432A72158A45AF001C6B0B /* status_inprogress.png in Resources */, - D3432A74158A45AF001C6B0B /* status_disconnected.png in Resources */, - D37295CB158B1E2D00D2C0C7 /* registration_inprogress.png in Resources */, - D37295DC158B3C9600D2C0C7 /* video-OFF-disabled.png in Resources */, + D3432A63158A4446001C6B0B /* led_connected.png in Resources */, + D3432A65158A4446001C6B0B /* led_error.png in Resources */, + D3432A67158A4446001C6B0B /* call_quality_indicator_0.png in Resources */, + D3432A69158A4446001C6B0B /* call_quality_indicator_1.png in Resources */, + D3432A6B158A4446001C6B0B /* call_quality_indicator_2.png in Resources */, + D3432A6D158A4446001C6B0B /* call_quality_indicator_3.png in Resources */, + D3432A72158A45AF001C6B0B /* led_inprogress.png in Resources */, + D3432A74158A45AF001C6B0B /* led_disconnected.png in Resources */, + D37295DC158B3C9600D2C0C7 /* video_off_disabled.png in Resources */, D36C43CB158F2EE50048BA40 /* UICallCell.xib in Resources */, - D36C43D2158F2F370048BA40 /* champ-courbe-autres-numeros.png in Resources */, - D36C43D4158F2F370048BA40 /* champ-courbe-participant-conf.png in Resources */, - D36C43D6158F2F370048BA40 /* champ-titre-conference.png in Resources */, - D36C43D8158F2F370048BA40 /* clavier-secondaire-actif.png in Resources */, - D36C43DA158F2F370048BA40 /* clavier-secondaire-over.png in Resources */, - D36C43EA158F3F7E0048BA40 /* play-actif.png in Resources */, - D36C43EC158F3F7E0048BA40 /* play-over.png in Resources */, - D36C43F2158F61EA0048BA40 /* pause-champ-numero-actif.png in Resources */, - D36C43F4158F61EA0048BA40 /* pause-champ-numero-over.png in Resources */, - D36C43F6158F61EA0048BA40 /* play-champ-numero-actif.png in Resources */, - D36C43F8158F61EA0048BA40 /* play-champ-numero-over.png in Resources */, + D36C43D2158F2F370048BA40 /* cell_call.png in Resources */, + D36C43D4158F2F370048BA40 /* cell_conference.png in Resources */, + D36C43D6158F2F370048BA40 /* header_conference.png in Resources */, + D36C43D8158F2F370048BA40 /* dialer_alt_default.png in Resources */, + D36C43DA158F2F370048BA40 /* dialer_alt_over.png in Resources */, + D36C43EA158F3F7E0048BA40 /* pause_on_default.png in Resources */, + D36C43EC158F3F7E0048BA40 /* pause_on_over.png in Resources */, + D36C43F2158F61EA0048BA40 /* call_state_pause_default.png in Resources */, + D36C43F4158F61EA0048BA40 /* call_state_pause_over.png in Resources */, + D36C43F6158F61EA0048BA40 /* call_state_play_default.png in Resources */, + D36C43F8158F61EA0048BA40 /* call_state_play_over.png in Resources */, D35E757915931E5D0066B1C1 /* switch_camera_default.png in Resources */, D35E757B15931E5D0066B1C1 /* switch_camera_over.png in Resources */, - D35E758A15932DE60066B1C1 /* backspace-disabled.png in Resources */, - D35E758E15934F360066B1C1 /* appeler-disabled.png in Resources */, + D35E758A15932DE60066B1C1 /* backspace_disabled.png in Resources */, + D35E758E15934F360066B1C1 /* call_disabled.png in Resources */, D35E759A159460580066B1C1 /* ChatViewController.xib in Resources */, D37DC70C1594AE6F00B2A5EB /* IASKAppSettingsView.xib in Resources */, D37DC70E1594AE6F00B2A5EB /* IASKAppSettingsWebView.xib in Resources */, @@ -2489,44 +2431,48 @@ D37DC7161594AE6F00B2A5EB /* IASKSpecifierValuesView.xib in Resources */, D32942A51594C94300556A1C /* SettingsViewController.xib in Resources */, D34F6F9F1594D3FB0095705B /* InAppSettings.bundle in Resources */, - D3EA5404159852080037DC6B /* tchat-edit-actif.png in Resources */, - D3EA5406159852080037DC6B /* tchat-edit-over.png in Resources */, - D3EA5408159852080037DC6B /* tchat-new-discussion-actif.png in Resources */, - D3EA540A159852080037DC6B /* tchat-new-discussion-over.png in Resources */, + D3EA5404159852080037DC6B /* chat_edit_default.png in Resources */, + D3EA5406159852080037DC6B /* chat_edit_over.png in Resources */, + D3EA5408159852080037DC6B /* chat_add_default.png in Resources */, + D3EA540A159852080037DC6B /* chat_add_over.png in Resources */, D3EA5415159853C90037DC6B /* UIChatCell.xib in Resources */, - D3EA5419159858A80037DC6B /* croix-supprimer-ligne-liste-history-actif.png in Resources */, - D3EA541B159858A80037DC6B /* croix-supprimer-ligne-liste-history-over.png in Resources */, + D3EA5419159858A80037DC6B /* list_delete_default.png in Resources */, + D3EA541B159858A80037DC6B /* list_delete_over.png in Resources */, D3F26BF415986B73005F9CAB /* IncomingCallViewController.xib in Resources */, - D3F26BF815986DAD005F9CAB /* ok-edit-list-history-actif.png in Resources */, - D3F26BFA15986DAD005F9CAB /* ok-edit-list-history-over.png in Resources */, - D3F26BFD15987083005F9CAB /* champ-titre-incoming.png in Resources */, + D3F26BF815986DAD005F9CAB /* history_ok_default.png in Resources */, + D3F26BFA15986DAD005F9CAB /* history_ok_over.png in Resources */, + D3F26BFD15987083005F9CAB /* header_incoming.png in Resources */, D31B4B24159876C0002E6C72 /* UICompositeViewController.xib in Resources */, - D31B4B291598A390002E6C72 /* avatar-inconnu.png in Resources */, - D31B4B2B1598A390002E6C72 /* avatar-small.png in Resources */, - D3F34F311599B008005BE94F /* ombre-cotes-avatar.png in Resources */, - D3D6A39F159B0EEF005F692C /* add_call_more_default.png in Resources */, - D3D6A3A1159B0EEF005F692C /* add_call_more_disable.png in Resources */, - D3D6A3A3159B0EEF005F692C /* add_call_more_over.png in Resources */, - D3D6A3AC159B0EFE005F692C /* cadenas-barre.png in Resources */, - D3D6A3AE159B0EFE005F692C /* cadenas-interrogation.png in Resources */, - D3D6A3B0159B0EFE005F692C /* cadenas.png in Resources */, + D31B4B291598A390002E6C72 /* avatar_unknown.png in Resources */, + D31B4B2B1598A390002E6C72 /* avatar_unknown_small.png in Resources */, + D3F34F311599B008005BE94F /* avatar_shadow.png in Resources */, + D3D6A39F159B0EEF005F692C /* add_call_default.png in Resources */, + D3D6A3A1159B0EEF005F692C /* add_call_disabled.png in Resources */, + D3D6A3A3159B0EEF005F692C /* add_call_over.png in Resources */, + D3D6A3AC159B0EFE005F692C /* security_ko.png in Resources */, + D3D6A3AE159B0EFE005F692C /* security_pending.png in Resources */, + D3D6A3B0159B0EFE005F692C /* security_ok.png in Resources */, D3D6A3B2159B0EFE005F692C /* options_default.png in Resources */, D3D6A3B4159B0EFE005F692C /* options_disabled.png in Resources */, D3D6A3B6159B0EFE005F692C /* options_over.png in Resources */, - D31AAF64159B5B6F002C6B02 /* start-conference-actif.png in Resources */, - D31AAF66159B5B6F002C6B02 /* start-conference-over.png in Resources */, - D31AAF6A159B5C68002C6B02 /* finir-conference-actif.png in Resources */, - D31AAF6C159B5C68002C6B02 /* finir-conference-over.png in Resources */, - D31AAF6F159B65E1002C6B02 /* ring-champ-numero-actif.png in Resources */, - D3211BA7159C3D410098460B /* outgoing-champ-numero-actif.png in Resources */, + D31AAF64159B5B6F002C6B02 /* conference_default.png in Resources */, + D31AAF66159B5B6F002C6B02 /* conference_over.png in Resources */, + D31AAF6F159B65E1002C6B02 /* call_state_ringing_default.png in Resources */, + D3211BA7159C3D410098460B /* call_state_outgoing_default.png in Resources */, D3211BB3159C4EF10098460B /* UIConferenceHeader.xib in Resources */, - D3211BBA159C8A820098460B /* champ-courbe-autres-numeros-first.png in Resources */, - D3211BBF159CBFD70098460B /* cancel_white_bg_default.png in Resources */, - D3211BC1159CBFD70098460B /* cancel_white_bg_disabled.png in Resources */, - D3211BC3159CBFD70098460B /* cancel_white_bg_over.png in Resources */, + D3211BBA159C8A820098460B /* cell_call_first.png in Resources */, + D3211BBF159CBFD70098460B /* back_default.png in Resources */, + D3211BC1159CBFD70098460B /* back_disabled.png in Resources */, + D3211BC3159CBFD70098460B /* back_over.png in Resources */, D3C714B4159DB84400705B8E /* toy-mono.wav in Resources */, - D37B96B815A1A6F20005CCD2 /* supprimer-participant-conf-actif.png in Resources */, - D37B96BA15A1A6F20005CCD2 /* supprimer-participant-conf-over.png in Resources */, + D37B96B815A1A6F20005CCD2 /* call_state_delete_default.png in Resources */, + D37B96BA15A1A6F20005CCD2 /* call_state_delete_over.png in Resources */, + D3C2814C15A2D38D0098AA42 /* dialer_selected.png in Resources */, + D3C2815315A2D64A0098AA42 /* numpad_star_over.png in Resources */, + D365AA7C15A2DE7500CAFE3F /* speaker_off_disabled.png in Resources */, + D365AA7E15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */, + D35EA76415A2DF8D003E025D /* micro_off_disabled.png in Resources */, + D35EA76615A2DF8D003E025D /* micro_on_disabled.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2550,7 +2496,6 @@ 2218A92512FBE1340088A667 /* FirstLoginViewController.m in Sources */, 22C755601317E59C007BC101 /* UIBluetoothButton.m in Sources */, 22BB1A69132FF16A005CD7AA /* UIEraseButton.m in Sources */, - 223963171393CFAF001DE689 /* FastAddressBook.m in Sources */, 22AA8B0113D83F6300B30535 /* UICamSwitch.m in Sources */, 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */, 340751E7150F38FD00B89C47 /* UIVideoButton.m in Sources */, @@ -2602,6 +2547,7 @@ D32460E6159D9AAD00BA7F3A /* UIPassView.m in Sources */, D32460ED159DA47700BA7F3A /* CPAnimationSequence.m in Sources */, D32460EF159DA47700BA7F3A /* CPAnimationStep.m in Sources */, + D32B9DFC15A2F131000B6DEC /* FastAddressBook.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2622,7 +2568,6 @@ 22D8F154147548E2008C97DB /* FirstLoginViewController.m in Sources */, 22D8F155147548E2008C97DB /* UIBluetoothButton.m in Sources */, 22D8F156147548E2008C97DB /* UIEraseButton.m in Sources */, - 22D8F157147548E2008C97DB /* FastAddressBook.m in Sources */, 22D8F159147548E2008C97DB /* UICamSwitch.m in Sources */, 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */, 340751E8150F38FD00B89C47 /* UIVideoButton.m in Sources */, @@ -2674,6 +2619,7 @@ D32460E7159D9AAD00BA7F3A /* UIPassView.m in Sources */, D32460EE159DA47700BA7F3A /* CPAnimationSequence.m in Sources */, D32460F0159DA47700BA7F3A /* CPAnimationStep.m in Sources */, + D32B9DFD15A2F131000B6DEC /* FastAddressBook.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From c5790060b361e172d3ac28ef209a8b13a4e02178 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 3 Jul 2012 14:21:14 +0200 Subject: [PATCH 026/397] Change selected cell in list views Add blinking on current call in "InCall" view --- Classes/InCallTableViewController.m | 4 +- Classes/LinphoneUI/UICallCell.h | 8 +- Classes/LinphoneUI/UICallCell.m | 68 +++++++++++-- Classes/LinphoneUI/UICallCell.xib | 47 ++++++++- Classes/LinphoneUI/UIContactCell.xib | 117 +++++++++++++---------- Classes/LinphoneUI/UIHistoryCell.xib | 58 ++++++++++- Resources/cell_call_first_hightlight.png | Bin 0 -> 1786 bytes Resources/cell_call_hightlight.png | Bin 0 -> 2386 bytes Resources/list_hightlight.png | Bin 0 -> 36632 bytes linphone.xcodeproj/project.pbxproj | 18 ++++ 10 files changed, 250 insertions(+), 70 deletions(-) create mode 100644 Resources/cell_call_first_hightlight.png create mode 100644 Resources/cell_call_hightlight.png create mode 100644 Resources/list_hightlight.png diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index 4ca89b328..a2908bfec 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -226,6 +226,7 @@ enum TableSection { bool inConference = indexPath.section == ConferenceSection; LinphoneCore* lc = [LinphoneManager getLc]; + LinphoneCall* currentCall = linphone_core_get_current_call(lc); LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; [cell setData:[self addCallData:call]]; @@ -235,7 +236,8 @@ enum TableSection { } else { [cell setFirstCell:false]; } - [cell setConferenceCall:inConference]; + [cell setCurrentCall:(currentCall == call)]; + [cell setConferenceCell:inConference]; [cell update]; if (linphone_core_get_calls_nb(lc) > 1 || linphone_core_get_conference_size(lc) > 0) { diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h index dbc77ae4c..ff82a28dd 100644 --- a/Classes/LinphoneUI/UICallCell.h +++ b/Classes/LinphoneUI/UICallCell.h @@ -35,9 +35,11 @@ @interface UICallCell : UITableViewCell { @private BOOL firstCell; - BOOL conferenceCall; + BOOL conferenceCell; + BOOL currentCall; UIImageView* headerBackgroundImage; + UIImageView* headerBackgroundHightlightImage; UILabel *addressLabel; UILabel *stateLabel; @@ -55,6 +57,7 @@ @property (weak) UICallCellData *data; @property (nonatomic, retain) IBOutlet UIImageView* headerBackgroundImage; +@property (nonatomic, retain) IBOutlet UIImageView* headerBackgroundHightlightImage; @property (nonatomic, retain) IBOutlet UILabel* addressLabel; @property (nonatomic, retain) IBOutlet UILabel* stateLabel; @@ -67,7 +70,8 @@ @property (nonatomic, retain) IBOutlet UIView* avatarView; @property (assign) BOOL firstCell; -@property (assign) BOOL conferenceCall; +@property (assign) BOOL conferenceCell; +@property (nonatomic, assign) BOOL currentCall; - (void)update; diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 628bab0eb..49800f98f 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -17,6 +17,8 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#import + #import "UICallCell.h" #import "LinphoneManager.h" @@ -38,6 +40,7 @@ @synthesize data; @synthesize headerBackgroundImage; +@synthesize headerBackgroundHightlightImage; @synthesize addressLabel; @synthesize stateLabel; @@ -50,8 +53,8 @@ @synthesize avatarView; @synthesize firstCell; -@synthesize conferenceCall; - +@synthesize conferenceCell; +@synthesize currentCall; #pragma mark - Lifecycle Functions @@ -67,6 +70,8 @@ // Set selected+over background: IB lack ! [pauseButton setImage:[UIImage imageNamed:@"call_state_pause_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + self->currentCall = FALSE; } return self; } @@ -82,7 +87,27 @@ } -#pragma mark - Static cell sizes +- (void)prepareForReuse { + [super prepareForReuse]; + self->currentCall = FALSE; + [headerBackgroundHightlightImage setAlpha:0.0f]; +} + +#pragma mark - Properties Functions + +- (void)setCurrentCall:(BOOL) val { + BOOL oldVal = currentCall; + currentCall = val; + if(oldVal != val) { + if (currentCall) { + [self startBlinkAnimation:@"Blink" target:headerBackgroundHightlightImage]; + } else { + [self stopBlinkAnimation:@"Blink" target:headerBackgroundHightlightImage]; + } + } +} + +#pragma mark - Static Functions + (int)getMaximizedHeight { return 280; @@ -92,7 +117,31 @@ return 54; } +- (void)startBlinkAnimation:(NSString *)animationID target:(UIView *)target +{ + [UIView animateWithDuration:1.0 + delay: 0.0 + options: ([target alpha] == 1.0f)? UIViewAnimationOptionCurveEaseIn: UIViewAnimationOptionCurveEaseOut + animations:^{ + if([target alpha] == 1.0f) + [target setAlpha:0.0f]; + else + [target setAlpha:1.0f]; + } + completion:^(BOOL finished){ + if(finished) { + [self startBlinkAnimation: animationID target:target]; + } + }]; +} + +- (void)stopBlinkAnimation:(NSString *)animationID target:(UIView *)target { + [target.layer removeAnimationForKey:animationID]; + [target setAlpha:0.0f]; +} + + #pragma mark - - (void)update:(UICallCellData*) adata { @@ -131,7 +180,7 @@ LinphoneCallState state = linphone_call_get_state(call); - if(!conferenceCall) { + if(!conferenceCell) { if(state == LinphoneCallOutgoingRinging) { [stateImage setImage:[UIImage imageNamed:@"call_state_ringing_default.png"]]; [stateImage setHidden:false]; @@ -148,8 +197,10 @@ [removeButton setHidden:true]; if(firstCell) { [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_call_first.png"]]; + [headerBackgroundHightlightImage setImage:[UIImage imageNamed:@"cell_call_first_hightlight.png"]]; } else { [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_call.png"]]; + [headerBackgroundHightlightImage setImage:[UIImage imageNamed:@"cell_call_hightlight.png"]]; } } else { [stateImage setHidden:true]; @@ -157,7 +208,7 @@ [removeButton setHidden:false]; [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_conference.png"]]; } - + NSMutableString* msDuration = [[NSMutableString alloc] init]; int duration = linphone_call_get_duration(call); [msDuration appendFormat:@"%02i:%02i", (duration/60), duration - 60 * (duration / 60), nil]; @@ -181,16 +232,15 @@ - (void)selfUpdate { UITableView *parentTable = (UITableView *)self.superview; - [parentTable beginUpdates]; + /*[parentTable beginUpdates]; [parentTable reloadData]; - [parentTable endUpdates]; - /* + [parentTable endUpdates];*/ if(parentTable) { NSIndexPath *index= [parentTable indexPathForCell:self]; if(index != nil) { [parentTable reloadRowsAtIndexPaths:[[NSArray alloc] initWithObjects:index, nil] withRowAnimation:false]; } - }*/ + } } diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib index b58251e3f..b6da4700f 100644 --- a/Classes/LinphoneUI/UICallCell.xib +++ b/Classes/LinphoneUI/UICallCell.xib @@ -132,7 +132,7 @@ {320, 63} - + _NS:9 NO IBCocoaTouchFramework @@ -141,6 +141,18 @@ cell_call_first.png + + + 292 + {320, 63} + + + + _NS:9 + 0.0 + NO + IBCocoaTouchFramework + 292 @@ -4640,7 +4652,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {{262, 12}, {50, 29}} - _NS:9 NO YES @@ -4707,7 +4718,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 460} - _NS:9 NO @@ -4796,6 +4806,22 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 54 + + + headerBackgroundHightlightImage + + + + 57 + + + + selectedBackgroundView + + + + 58 + doHeaderClick: @@ -4871,6 +4897,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + headerView @@ -4934,6 +4961,12 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE headerBackgroundImage + + 56 + + + headerBackgroundHightlightImage + @@ -4960,12 +4993,13 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 54 + 58 @@ -4990,6 +5024,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE UILabel UIImageView UIView + UIImageView UIImageView UIView UIPauseButton @@ -5010,6 +5045,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE avatarView UIView + + headerBackgroundHightlightImage + UIImageView + headerBackgroundImage UIImageView diff --git a/Classes/LinphoneUI/UIContactCell.xib b/Classes/LinphoneUI/UIContactCell.xib index 6eae6e799..f31f32511 100644 --- a/Classes/LinphoneUI/UIContactCell.xib +++ b/Classes/LinphoneUI/UIContactCell.xib @@ -11,7 +11,7 @@ 1181 - IBUIButton + IBUIImageView IBUIView IBUILabel IBProxyObject @@ -36,41 +36,6 @@ 292 - - - 292 - {320, 44} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - NO - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - 274 @@ -113,6 +78,7 @@ {{75, 0}, {200, 44}} + _NS:328 NO YES @@ -143,6 +109,7 @@ {320, 44} + _NS:9 3 @@ -153,17 +120,35 @@ IBCocoaTouchFramework + + + 292 + {320, 44} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + list_hightlight.png + + + + + 292 + {320, 44} + + + + _NS:9 + NO + IBCocoaTouchFramework + - - - backgroundView - - - - 15 - firstNameLabel @@ -180,6 +165,22 @@ 18 + + + selectedBackgroundView + + + + 20 + + + + backgroundView + + + + 22 + @@ -206,16 +207,9 @@ - - - 14 - - - background - 6 @@ -228,6 +222,18 @@ lastName + + 19 + + + selectedBackground + + + 21 + + + background + @@ -236,15 +242,16 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 18 + 22 @@ -280,6 +287,10 @@ YES 3 + + list_hightlight.png + {640, 88} + 1181 diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index d6b863fc9..c978fbc8e 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -167,6 +167,31 @@ IBCocoaTouchFramework + + + 292 + {320, 44} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + list_hightlight.png + + + + + 292 + {320, 44} + + + _NS:9 + NO + IBCocoaTouchFramework + @@ -202,6 +227,22 @@ 17 + + + selectedBackgroundView + + + + 22 + + + + backgroundView + + + + 24 + onDetails: @@ -275,6 +316,18 @@ deleteButton + + 21 + + + selectedBackground + + + 23 + + + background + @@ -286,6 +339,8 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -296,7 +351,7 @@ - 19 + 24 @@ -361,6 +416,7 @@ {45, 45} {45, 45} {45, 45} + {640, 88} 1181 diff --git a/Resources/cell_call_first_hightlight.png b/Resources/cell_call_first_hightlight.png new file mode 100644 index 0000000000000000000000000000000000000000..99ea085a69d449cf435f6088814f8498772d4de6 GIT binary patch literal 1786 zcmcIlc{Ce%5dKBGuA;h9XDe(^tLWjVl@(`$y0@sK*wShoaYYa$6i?CCwsllAtlO?8 zO2yI8D9_zc?Gi$$vxlRKNYNyl{eRbc``+%nH}lP#dEd;unLj4o(H;0OBJ>VNeWXZD%Pq zA+|?K;!Gk9d00qHv$in36vJ9(d;X-tRcf0SNNW9%bWEnfuTu6+M;8l1LL@l1rHEbx0t3Z8Uv-85~mO80ga#*E0woylGb6WK zE`W#AVCV#U=WtmRbT|1E|BCUs3k94dJ}Yp(e$cwXdyebFH#lKy3fjvRc{BZ3Y<+y# zJw>As4;P}(sHA$?z$wHQ-K1~Ux&e-V?t4XiG4wOpf{M(PLu@4J+L=dg_0CzAJZ<$n z%;Jp~@pwH{c`dx2;1%kvxiocp91+wx+j!T~qr%ZPBDx}4G%KqcJ(3nmmmmuvi+=omx&|G(bTRpY;9p&^nTAl`UJOME!nQx1O zVywd#OgWsPEHiN*qjccrqim+wqPlKo03FUN$~Iz@x?n5i^m6lXOc$&&C)h6*Ri=WSK1C!fr4J|Nb1&Cpm)Ts`GUc;PII)7sR$ zR^Ql#PH1#q(GB|Sd%l8XU%$?QrIApO81g~m9m^AlC>@F7=p*JwQe^9L(s6M7Q@kR! zlQ;7+*{wC1zuJ?&=WSrBMfg#P?#eswi13lTqKWsqiyi7IzXXRu$BjHYJ7Dxvn9yHQ z6yq!v2f>HW2$5CZ2Onx76f?FKqeTeVey@G$j2Jj!s1FR&7FagLSJ>LpqJEJa4)u=f z8|oM(kC%FT2eoyOP1`^Fz{?2RKzVx^|_k*9LOxDX&oaxc#R-*(;Ds zYfxa*VNsI1uz7ats?h_TO-gCM1H0z>#nLoE@=dBH@X|ywd$~0wO#AH#e(%gQCzI3k z=5c_^AS^2-ETJ;PO&cKTU+PG$PKJug8nC%a8JN3slL1Z1EW7JL<6?6`v~oohXp5Dy zm3L^t*HUX;t@M4M=2oR$>*c+&-Ze$zHCW0-q!OaaV7xWFgm#w!wXxs(j?zxq3oEvt{MR~< zA`<9Ctve0u^AO?%Q_I5bsWDi$jIQo!2M-hyK0d-G52bjf@G literal 0 HcmV?d00001 diff --git a/Resources/cell_call_hightlight.png b/Resources/cell_call_hightlight.png new file mode 100644 index 0000000000000000000000000000000000000000..4aaf77e56c19de7ea412fd15f2bc3d1fb624ea1c GIT binary patch literal 2386 zcmb_edo&a5AAd-%C6|@tS4er^Lq$}`HM|tLZQZt&GQ}G;mofLu%{8kH78OOlvv z7-=lYHMuNz$)#MH+c0w*X7Bp{{dLaooZoZK_xU{M`#qoMdCvEIZ+B0_92Des%K-os z98aA%3xG6Ha*l@lCfSdo+gl{?o2RqG2?Dl4eaJML1J5Rav z;>joF{x3Ju5#i*%e5%tK)QzqSj`^mhFqh{?YA?$gnzSD7*sP9E#gRVT<_ik^t^kdu zCC=6DZOcPZ6e9s^{7_p5wchA#6UM zPrFkKVd#FqKi8RxK5X451e#CpWYPPE+tPjVj7S_d`O{ z2csnUMnRx94zTHulp97_4WkN1d&Iv357uaY==%@?R4F;m&$0!O?O^Y% zf#kZCbj9}eTA zvK3^6@+ZxnY1jL5nPGNK&I(m4YATn{4H*AfDKcwh-W94PC+uVQ2jA7% zP0Wl{Wq7;J0+6WvOsk&yqXSawwfPGB1qoXauM;7y1imeV!k{B+$ixayn8wb?pMkJc z*c(10jdT7J+z&rqGimA(hc(nC+iVXO+_&qIBl1NYhq#%F@WPlBj z277@NfD$E1VFQ57-hVXz7xn+0^@}h3;;sLk^^41X;f;S_Ri%-`wme@O!&Y{DBE8?G zu^h^pN+u8Diz2rV+0Crd>dqe=QyqblSZQae=qC0!_e%kyeQ_dhILHG<5m}vEoAIrY zf)cA7)B=ox|JwBGC>?P|;y%#>C9|!HD>oG(g zdvhM{ci(O1Rye32$X%hmJg792G_#l(R-rN3q12G5oY~?tHs~YXxbt3f0+Y8!>1T0| z1|scfv+V}E(;g;NXwh^$;)_w*NDB|juFBKAiUs=?vJA|wr2O%hREowlKFTY=`!#|( zR0!COoluTSv|{C{W%SWU?@LvH-l<-x+E6_4D z+I{V|eTw-Ink}N{P&CN82@@pY7kA$U??@Jurnln}mde4K6td7WD#;KV^tuwWEg?%h zFl4lpQ13zLX31qGo_}+tEGAFf{)Ec#&Z|Mo_cvZATm}JZyV7}5 z##G$5?^dfIwV^!gwYjLUGat(+zC=6ke-p#Ke2t29?Rk~E8a~W#;?!n?(U>NDt`0=mznVNzIk@6Qs6eD`QV zz9EcCb`vcaMAJ*aG)7oP`0|M~6mQ$hdYHA-7BZ35hVdS?4b`2NQ;U;S?lANMS5{vg zaCQHX6P@Wj?r+&XT4XK?EJQGt;-I!A?9qeSGHs>hO8F|N7lN!X3DwGZj zGhi^@p7YRY=2PvG`)f}{u*CEQIGIIO8lK6%JS|_pIxS$5kR8%#njY?1>s7v~M9 z7X~Nln-G{8`ig!cCAn@o_>6eNY1Bcr1+PW>;fmje5{jPQ=%P;ajbK;p#s~9;SzD`O zm8=6^$=*2@wdS18;?o?SjAC8%Z$H5J)axUds`O5mDL~8~Pt}`=A`}%JPD$DsbMV$@ zSl1pnDQ*rg>c4#HcsS>p<+&k0{KyG*BCk<3d&MlI?(3{U?%BLIcQwFVvA;s9qGDZG zMP@!;PkEe1}9j%f!x>8Oi+rKSUj z0!-ARy7k8>j_genT~7OA+N=}prg2AV`Yt(MSpIyAsJ+Q5CE|rt@2&_wrh7qA(ne^p zJuvmw@Jg|8M^IE3-YGVs0Nh8F@JT9s8TdCTzb5ea88Dk@2|&5)QAM%r%eb?f U{c&8ZWcmS)Ct)Y(wpafBHwEG{$p8QV literal 0 HcmV?d00001 diff --git a/Resources/list_hightlight.png b/Resources/list_hightlight.png new file mode 100644 index 0000000000000000000000000000000000000000..929bfbdbf63848a80189328f1374895160d0eda8 GIT binary patch literal 36632 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 00dd5f44e..7b6a1fd9a 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -153,6 +153,8 @@ 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; + D3196D2D15A3199D007FEEBA /* list_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_hightlight.png */; }; + D3196D2E15A3199D007FEEBA /* list_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_hightlight.png */; }; D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; D31AAF63159B5B6F002C6B02 /* conference_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* conference_default.png */; }; @@ -377,6 +379,10 @@ D3832801158100E400FA0D23 /* history_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history_over.png */; }; D3832802158100E400FA0D23 /* settings_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings_over.png */; }; D3832803158100E400FA0D23 /* chat_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* chat_over.png */; }; + D38D14AF15A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_hightlight.png */; }; + D38D14B015A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_hightlight.png */; }; + D38D14B115A30B3D008497E8 /* cell_call_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AE15A30B3D008497E8 /* cell_call_hightlight.png */; }; + D38D14B215A30B3D008497E8 /* cell_call_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AE15A30B3D008497E8 /* cell_call_hightlight.png */; }; D3A55FBC15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; @@ -890,6 +896,7 @@ 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + D3196D2C15A3199D007FEEBA /* list_hightlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_hightlight.png; path = Resources/list_hightlight.png; sourceTree = ""; }; D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallTableViewController.h; sourceTree = ""; }; D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallTableViewController.m; sourceTree = ""; }; D31AAF61159B5B6E002C6B02 /* conference_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = conference_default.png; path = Resources/conference_default.png; sourceTree = ""; }; @@ -1047,6 +1054,8 @@ D38327FD158100E400FA0D23 /* history_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_over.png; path = Resources/history_over.png; sourceTree = ""; }; D38327FE158100E400FA0D23 /* settings_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_over.png; path = Resources/settings_over.png; sourceTree = ""; }; D38327FF158100E400FA0D23 /* chat_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_over.png; path = Resources/chat_over.png; sourceTree = ""; }; + D38D14AD15A30B3D008497E8 /* cell_call_first_hightlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_first_hightlight.png; path = Resources/cell_call_first_hightlight.png; sourceTree = ""; }; + D38D14AE15A30B3D008497E8 /* cell_call_hightlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_hightlight.png; path = Resources/cell_call_hightlight.png; sourceTree = ""; }; D3A55FBA15877E5E003FD403 /* UIContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactCell.h; sourceTree = ""; }; D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = ""; }; D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = ""; }; @@ -1751,6 +1760,7 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + D3196D2C15A3199D007FEEBA /* list_hightlight.png */, D3F83F741582253100336684 /* accept_default.png */, D3F83F751582253100336684 /* accept_over.png */, D3D6A39B159B0EEF005F692C /* add_call_default.png */, @@ -1790,6 +1800,8 @@ D3F83F811582278D00336684 /* cancel_over.png */, D36C43CC158F2F370048BA40 /* cell_call.png */, D3211BB8159C8A820098460B /* cell_call_first.png */, + D38D14AD15A30B3D008497E8 /* cell_call_first_hightlight.png */, + D38D14AE15A30B3D008497E8 /* cell_call_hightlight.png */, D36C43CD158F2F370048BA40 /* cell_conference.png */, D3EA5401159852080037DC6B /* chat_add_default.png */, D3EA5402159852080037DC6B /* chat_add_over.png */, @@ -2292,6 +2304,9 @@ D365AA7D15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */, D35EA76315A2DF8D003E025D /* micro_off_disabled.png in Resources */, D35EA76515A2DF8D003E025D /* micro_on_disabled.png in Resources */, + D38D14AF15A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */, + D38D14B115A30B3D008497E8 /* cell_call_hightlight.png in Resources */, + D3196D2D15A3199D007FEEBA /* list_hightlight.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2473,6 +2488,9 @@ D365AA7E15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */, D35EA76415A2DF8D003E025D /* micro_off_disabled.png in Resources */, D35EA76615A2DF8D003E025D /* micro_on_disabled.png in Resources */, + D38D14B015A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */, + D38D14B215A30B3D008497E8 /* cell_call_hightlight.png in Resources */, + D3196D2E15A3199D007FEEBA /* list_hightlight.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From c4fd64c36e3417340c60fe813290b4c90d53723f Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 3 Jul 2012 17:32:41 +0200 Subject: [PATCH 027/397] Add call transfert Add missing backgrounds --- Classes/ContactsViewController.xib | 5 +- Classes/DialerViewController.h | 8 +- Classes/DialerViewController.m | 56 +++-- Classes/DialerViewController.xib | 264 ++++++++++++++++++++--- Classes/HistoryViewController.xib | 5 +- Classes/InCallViewController.xib | 45 +++- Classes/IncomingCallViewController.xib | 122 ++++++----- Classes/LinphoneUI/UICallBar.h | 9 + Classes/LinphoneUI/UICallBar.m | 159 +++++++++++--- Classes/LinphoneUI/UICallBar.xib | 225 ++++++++++++++++++- Classes/LinphoneUI/UICallButton.h | 6 +- Classes/LinphoneUI/UICallButton.m | 72 +++---- Classes/LinphoneUI/UICallCell.m | 14 +- Classes/LinphoneUI/UIContactCell.xib | 12 +- Classes/LinphoneUI/UIDigitButton.h | 15 +- Classes/LinphoneUI/UIDigitButton.m | 60 ++++-- Classes/LinphoneUI/UIEraseButton.h | 7 +- Classes/LinphoneUI/UIEraseButton.m | 40 +++- Classes/LinphoneUI/UIHistoryCell.xib | 10 +- Classes/LinphoneUI/UITransferButton.h | 29 +++ Classes/LinphoneUI/UITransferButton.m | 131 +++++++++++ Classes/PhoneMainView.m | 33 ++- Classes/Utils/CPAnimationStep.m | 10 +- Resources/contacts_all_default.png | Bin 6459 -> 7073 bytes Resources/contacts_all_selected.png | Bin 7073 -> 6459 bytes Resources/contacts_linphone_default.png | Bin 8575 -> 9428 bytes Resources/contacts_linphone_selected.png | Bin 9428 -> 8575 bytes Resources/history_all_default.png | Bin 6040 -> 6620 bytes Resources/history_all_selected.png | Bin 6620 -> 6040 bytes Resources/history_missed_default.png | Bin 8044 -> 8649 bytes Resources/history_missed_selected.png | Bin 8649 -> 8044 bytes Resources/options_add_default.png | Bin 0 -> 5136 bytes Resources/options_add_over.png | Bin 0 -> 5089 bytes Resources/options_transfer_default.png | Bin 0 -> 5314 bytes Resources/options_transfer_over.png | Bin 0 -> 5339 bytes linphone.xcodeproj/project.pbxproj | 130 ++++++----- 36 files changed, 1141 insertions(+), 326 deletions(-) create mode 100644 Classes/LinphoneUI/UITransferButton.h create mode 100644 Classes/LinphoneUI/UITransferButton.m create mode 100644 Resources/options_add_default.png create mode 100644 Resources/options_add_over.png create mode 100644 Resources/options_transfer_default.png create mode 100644 Resources/options_transfer_over.png diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index d95d9e6ab..6b6098c90 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -156,11 +156,10 @@ {{0, 58}, {320, 402}} - _NS:10 - 3 - MQA + 1 + MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA NO YES diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index e5436109a..10fa19e33 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -21,10 +21,10 @@ #import "UIEraseButton.h" #import "UICallButton.h" +#import "UITransferButton.h" #import "UIDigitButton.h" @interface DialerViewController : UIViewController { - @private //Buttons UITextField* addressField; @@ -33,6 +33,7 @@ UIEraseButton* eraseButton; UICallButton* callButton; UICallButton* addCallButton; + UITransferButton* transferButton; //Key pad UIDigitButton* oneButton; @@ -47,14 +48,18 @@ UIDigitButton* starButton; UIDigitButton* zeroButton; UIDigitButton* sharpButton; + + BOOL transferMode; } - (void)setAddress:(NSString*) address; +- (void)setTransferMode:(NSNumber*) enable; @property (nonatomic, retain) IBOutlet UITextField* addressField; @property (nonatomic, retain) IBOutlet UIButton* addContactButton; @property (nonatomic, retain) IBOutlet UICallButton* callButton; @property (nonatomic, retain) IBOutlet UICallButton* addCallButton; +@property (nonatomic, retain) IBOutlet UITransferButton* transferButton; @property (nonatomic, retain) IBOutlet UIButton* cancelButton; @property (nonatomic, retain) IBOutlet UIEraseButton* eraseButton; @@ -73,7 +78,6 @@ - (IBAction)onAddContactClick: (id) event; - (IBAction)onBackClick: (id) event; -- (IBAction)onAddCallClick: (id) event; - (IBAction)onAddressChange: (id)sender; @end diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 5c2f9269e..a8774c35f 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -34,6 +34,7 @@ @synthesize addContactButton; @synthesize cancelButton; @synthesize addCallButton; +@synthesize transferButton; @synthesize callButton; @synthesize eraseButton; @@ -53,7 +54,11 @@ #pragma mark - Lifecycle Functions - (id)init { - return [super initWithNibName:@"DialerViewController" bundle:[NSBundle mainBundle]]; + self = [super initWithNibName:@"DialerViewController" bundle:[NSBundle mainBundle]]; + if(self) { + self->transferMode = FALSE; + } + return self; } - (void)dealloc { @@ -63,6 +68,7 @@ [eraseButton release]; [callButton release]; [addCallButton release]; + [transferButton release]; [oneButton release]; [twoButton release]; @@ -93,21 +99,18 @@ - (void)viewDidLoad { [super viewDidLoad]; - [zeroButton initWithNumber:'0' addressField:addressField dtmf:false]; - [oneButton initWithNumber:'1' addressField:addressField dtmf:false]; - [twoButton initWithNumber:'2' addressField:addressField dtmf:false]; - [threeButton initWithNumber:'3' addressField:addressField dtmf:false]; - [fourButton initWithNumber:'4' addressField:addressField dtmf:false]; - [fiveButton initWithNumber:'5' addressField:addressField dtmf:false]; - [sixButton initWithNumber:'6' addressField:addressField dtmf:false]; - [sevenButton initWithNumber:'7' addressField:addressField dtmf:false]; - [eightButton initWithNumber:'8' addressField:addressField dtmf:false]; - [nineButton initWithNumber:'9' addressField:addressField dtmf:false]; - [starButton initWithNumber:'*' addressField:addressField dtmf:false]; - [sharpButton initWithNumber:'#' addressField:addressField dtmf:false]; - [callButton initWithAddress:addressField]; - [addCallButton initWithAddress:addressField]; - [eraseButton initWithAddressField:addressField]; + [zeroButton setDigit:'0']; + [oneButton setDigit:'1']; + [twoButton setDigit:'2']; + [threeButton setDigit:'3']; + [fourButton setDigit:'4']; + [fiveButton setDigit:'5']; + [sixButton setDigit:'6']; + [sevenButton setDigit:'7']; + [eightButton setDigit:'8']; + [nineButton setDigit:'9']; + [starButton setDigit:'*']; + [sharpButton setDigit:'#']; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; @@ -131,7 +134,13 @@ if([LinphoneManager isLcReady]) { LinphoneCore *lc = [LinphoneManager getLc]; if(linphone_core_get_calls_nb(lc) > 0) { - [addCallButton setHidden:false]; + if(transferMode) { + [addCallButton setHidden:true]; + [transferButton setHidden:false]; + } else { + [addCallButton setHidden:false]; + [transferButton setHidden:true]; + } [callButton setHidden:true]; [cancelButton setHidden:false]; [addContactButton setHidden:true]; @@ -140,15 +149,20 @@ [callButton setHidden:false]; [cancelButton setHidden:true]; [addContactButton setHidden:false]; + [transferButton setHidden:true]; } } } - - (void)setAddress:(NSString*) address { [addressField setText:address]; } +- (void)setTransferMode:(NSNumber*) n { + transferMode = [n boolValue]; + [self update]; +} + #pragma mark - UITextFieldDelegate Functions @@ -170,21 +184,19 @@ [[LinphoneManager instance] changeView:PhoneView_InCall]; } -- (IBAction)onAddCallClick: (id) event { - -} - - (IBAction)onAddressChange: (id)sender { if([[addressField text] length] > 0) { [addContactButton setEnabled:TRUE]; [eraseButton setEnabled:TRUE]; [callButton setEnabled:TRUE]; [addCallButton setEnabled:TRUE]; + [transferButton setEnabled:TRUE]; } else { [addContactButton setEnabled:FALSE]; [eraseButton setEnabled:FALSE]; [callButton setEnabled:FALSE]; [addCallButton setEnabled:FALSE]; + [transferButton setEnabled:FALSE]; } } diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index 371cd5d74..dfe28c0d4 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -558,6 +558,37 @@ + + -2147483356 + {{106, 0}, {108, 69}} + + + + _NS:9 + NO + IBCocoaTouchFramework + NO + 0 + 0 + NO + NO + + + NSImage + add_call_over.png + + + NSImage + add_call_disabled.png + + + NSImage + add_call_default.png + + + + + -2147483356 {{106, 0}, {108, 69}} @@ -573,18 +604,9 @@ NO NO - - NSImage - add_call_over.png - - - NSImage - add_call_disabled.png - - - NSImage - add_call_default.png - + + + @@ -800,6 +822,14 @@ 232 + + + transferButton + + + + 253 + delegate @@ -817,6 +847,102 @@ 208 + + + addressField + + + + 242 + + + + addressField + + + + 243 + + + + addressField + + + + 244 + + + + addressField + + + + 245 + + + + addressField + + + + 246 + + + + addressField + + + + 247 + + + + addressField + + + + 248 + + + + addressField + + + + 241 + + + + addressField + + + + 240 + + + + addressField + + + + 249 + + + + addressField + + + + 250 + + + + addressField + + + + 251 + onBackClick: @@ -827,13 +953,20 @@ 233 - - onAddCallClick: + + addressField - - 7 + - 228 + 234 + + + + addressField + + + + 252 @@ -844,6 +977,22 @@ 230 + + + addressField + + + + 235 + + + + addressField + + + + 237 + @@ -1012,6 +1161,7 @@ + toolBar @@ -1046,6 +1196,12 @@ callButton + + 236 + + + transferButton + @@ -1075,6 +1231,9 @@ 224.CustomClassName 224.IBPluginDependency 224.IBUIButtonInspectorSelectedStateConfigurationMetadataKey + 236.CustomClassName + 236.IBPluginDependency + 236.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 29.CustomClassName 29.IBPluginDependency 29.IBUIButtonInspectorSelectedStateConfigurationMetadataKey @@ -1139,6 +1298,9 @@ UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UITransferButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1191,7 +1353,7 @@ - 233 + 253 @@ -1203,7 +1365,6 @@ YES YES - onAddCallClick: onAddContactClick: onAddressChange: onBackClick: @@ -1213,24 +1374,18 @@ id id id - id YES YES - onAddCallClick: onAddContactClick: onAddressChange: onBackClick: YES - - onAddCallClick: - id - onAddContactClick: id @@ -1265,6 +1420,7 @@ sixButton starButton threeButton + transferButton twoButton zeroButton @@ -1286,6 +1442,7 @@ UIButton UIButton UIButton + UITransferButton UIButton UIButton @@ -1310,6 +1467,7 @@ sixButton starButton threeButton + transferButton twoButton zeroButton @@ -1379,6 +1537,10 @@ threeButton UIButton + + transferButton + UITransferButton + twoButton UIButton @@ -1405,6 +1567,17 @@ UICallButton UIButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + IBProjectSource ./Classes/UICallButton.h @@ -1413,6 +1586,17 @@ UIDigitButton UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + IBProjectSource ./Classes/UIDigitButton.h @@ -1421,6 +1605,17 @@ UIEraseButton UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + IBProjectSource ./Classes/UIEraseButton.h @@ -1434,6 +1629,25 @@ ./Classes/UILongTouchButton.h + + UITransferButton + UIButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UITransferButton.h + + 0 diff --git a/Classes/HistoryViewController.xib b/Classes/HistoryViewController.xib index b08c9fb4d..446e0a4ac 100644 --- a/Classes/HistoryViewController.xib +++ b/Classes/HistoryViewController.xib @@ -160,11 +160,10 @@ {{0, 58}, {320, 402}} - _NS:9 - 3 - MQA + 1 + MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA YES IBCocoaTouchFramework diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 48ce96c59..b72909f8b 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -12,12 +12,13 @@ YES - IBUITableViewController - IBUITableView - IBUIActivityIndicatorView - IBUIView IBUIButton IBProxyObject + IBUIImageView + IBUIActivityIndicatorView + IBUITableViewController + IBUITableView + IBUIView YES @@ -42,6 +43,24 @@ 274 YES + + + 274 + {320, 460} + + + + _NS:9 + NO + + + + IBCocoaTouchFramework + + NSImage + numpad_background.png + + 292 @@ -103,7 +122,7 @@ {{0, -10}, {320, 480}} - + _NS:418 YES @@ -134,6 +153,7 @@ {85, 33} + _NS:9 NO IBCocoaTouchFramework @@ -307,6 +327,7 @@ + @@ -353,7 +374,7 @@ 160 - camSwitch + videoCameraSwitch 162 @@ -364,6 +385,12 @@ callTableController + + 171 + + + background + @@ -384,6 +411,7 @@ 160.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 162.CustomClassName 162.IBPluginDependency + 171.IBPluginDependency 9.IBPluginDependency @@ -403,6 +431,7 @@ InCallTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -417,7 +446,7 @@ - 169 + 171 @@ -553,11 +582,13 @@ YES YES + numpad_background.png switch_camera_default.png switch_camera_over.png YES + {640, 523} {170, 65} {170, 65} diff --git a/Classes/IncomingCallViewController.xib b/Classes/IncomingCallViewController.xib index 69ca84bb3..30cd717ea 100644 --- a/Classes/IncomingCallViewController.xib +++ b/Classes/IncomingCallViewController.xib @@ -37,54 +37,56 @@ 274 + + + 274 + {320, 460} + + + + _NS:9 + NO + + + + IBCocoaTouchFramework + + NSImage + numpad_background.png + + 288 + + + 292 + {{0, 49}, {320, 63}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + cell_call_first.png + + 292 {320, 68} - + _NS:9 NO IBCocoaTouchFramework NSImage - champ-titre-incoming.png - - - - - 292 - {{0, 47}, {320, 63}} - - - - _NS:9 - NO - IBCocoaTouchFramework - 0 - 0 - NO - - 3 - MC41AA - - - NSImage - champ-courbe-autres-numeros.png - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 + header_incoming.png @@ -4585,7 +4587,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework 0 0 - + + 3 + MC41AA + NSImage accept_over.png @@ -4594,8 +4599,15 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE NSImage accept_default.png - - + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + @@ -4622,7 +4634,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE decline_default.png - + {{0, 383}, {320, 77}} @@ -4641,7 +4653,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {{0, 20}, {320, 460}} - + 1 MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA @@ -4710,6 +4722,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + @@ -4752,10 +4765,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - + @@ -4771,12 +4784,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE headerBackground - - 10 - - - otherBackground - 18 @@ -4795,6 +4802,18 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE mask + + 21 + + + addressBackgroundImage + + + 22 + + + background + @@ -4803,11 +4822,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -4821,7 +4840,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 20 + 22 @@ -4882,12 +4901,13 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 154} {320, 154} - {16, 16} + {640, 523} {320, 339} - {640, 125} - {640, 135} + {640, 125} {320, 154} {320, 154} + {640, 135} + {640, 523} 1181 diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index 6bc9c0f1b..ac8019936 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -35,6 +35,9 @@ UIButton* optionsButton; UIHangUpButton* hangupButton; UIView* padView; + UIView* optionsView; + UIButton* optionsAddButton; + UIButton* optionsTransferButton; //Key pad UIDigitButton* oneButton; @@ -59,6 +62,10 @@ @property (nonatomic, retain) IBOutlet UIButton* optionsButton; @property (nonatomic, retain) IBOutlet UIHangUpButton* hangupButton; @property (nonatomic, retain) IBOutlet UIView* padView; +@property (nonatomic, retain) IBOutlet UIView* optionsView; + +@property (nonatomic, retain) IBOutlet UIButton* optionsAddButton; +@property (nonatomic, retain) IBOutlet UIButton* optionsTransferButton; @property (nonatomic, retain) IBOutlet UIButton* oneButton; @property (nonatomic, retain) IBOutlet UIButton* twoButton; @@ -74,6 +81,8 @@ @property (nonatomic, retain) IBOutlet UIButton* sharpButton; - (IBAction)onOptionsClick:(id)sender; +- (IBAction)onOptionsTransferClick:(id)sender; +- (IBAction)onOptionsAddClick:(id)sender; - (IBAction)onConferenceClick:(id)sender; - (IBAction)onPadClick:(id)sender; diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 2efde062e..4e0b4d8b7 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -35,7 +35,12 @@ @synthesize speakerButton; @synthesize optionsButton; @synthesize hangupButton; + +@synthesize optionsAddButton; +@synthesize optionsTransferButton; + @synthesize padView; +@synthesize optionsView; @synthesize oneButton; @synthesize twoButton; @@ -65,6 +70,9 @@ [speakerButton release]; [optionsButton release]; + [optionsAddButton release]; + [optionsTransferButton release]; + [oneButton release]; [twoButton release]; [threeButton release]; @@ -78,6 +86,9 @@ [zeroButton release]; [sharpButton release]; + [padView release]; + [optionsView release]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; @@ -89,18 +100,30 @@ - (void)viewDidLoad { [pauseButton setType:UIPauseButtonType_CurrentCall call:nil]; - [zeroButton initWithNumber:'0' addressField:nil dtmf:true]; - [oneButton initWithNumber:'1' addressField:nil dtmf:true]; - [twoButton initWithNumber:'2' addressField:nil dtmf:true]; - [threeButton initWithNumber:'3' addressField:nil dtmf:true]; - [fourButton initWithNumber:'4' addressField:nil dtmf:true]; - [fiveButton initWithNumber:'5' addressField:nil dtmf:true]; - [sixButton initWithNumber:'6' addressField:nil dtmf:true]; - [sevenButton initWithNumber:'7' addressField:nil dtmf:true]; - [eightButton initWithNumber:'8' addressField:nil dtmf:true]; - [nineButton initWithNumber:'9' addressField:nil dtmf:true]; - [starButton initWithNumber:'*' addressField:nil dtmf:true]; - [sharpButton initWithNumber:'#' addressField:nil dtmf:true]; + [zeroButton setDigit:'0']; + [zeroButton setDtmf:true]; + [oneButton setDigit:'1']; + [oneButton setDtmf:true]; + [twoButton setDigit:'2']; + [twoButton setDtmf:true]; + [threeButton setDigit:'3']; + [threeButton setDtmf:true]; + [fourButton setDigit:'4']; + [fourButton setDtmf:true]; + [fiveButton setDigit:'5']; + [fiveButton setDtmf:true]; + [sixButton setDigit:'6']; + [sixButton setDtmf:true]; + [sevenButton setDigit:'7']; + [sevenButton setDtmf:true]; + [eightButton setDigit:'8']; + [eightButton setDtmf:true]; + [nineButton setDigit:'9']; + [nineButton setDtmf:true]; + [starButton setDigit:'*']; + [starButton setDtmf:true]; + [sharpButton setDigit:'#']; + [sharpButton setDtmf:true]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; @@ -141,13 +164,7 @@ //LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - // check LinphoneCore is initialized - LinphoneCore* lc = nil; - if([LinphoneManager isLcReady]) - lc = [LinphoneManager getLc]; - - //TODO - //[LinphoneManager set:mergeCalls hidden:!pause.hidden withName:"MERGE button" andReason:"call count"]; + LinphoneCore* lc = [LinphoneManager getLc]; [speakerButton update]; [microButton update]; @@ -155,6 +172,8 @@ [videoButton update]; [hangupButton update]; + + // Show Pause/Conference button following call count if(linphone_core_get_calls_nb(lc) > 1) { if(![pauseButton isHidden]) { [pauseButton setHidden:true]; @@ -167,16 +186,29 @@ } } - if(linphone_core_get_current_call(lc) == NULL) { + // Disable menu when no call & no conference + if(linphone_core_get_current_call(lc) == NULL && linphone_core_is_in_conference(lc) == FALSE) { [self hidePad]; + [self hideOptions]; + [optionsButton setEnabled:FALSE]; + } else { + [optionsButton setEnabled:TRUE]; } + // Disable transfert in conference + if(linphone_core_is_in_conference(lc)) { + [optionsTransferButton setEnabled:FALSE]; + } else { + [optionsTransferButton setEnabled:TRUE]; + } + switch(state) { LinphoneCallEnd: LinphoneCallError: LinphoneCallIncoming: LinphoneCallOutgoing: [self hidePad]; + [self hideOptions]; default: break; } @@ -193,7 +225,10 @@ [padView setFrame:frame]; [padView setHidden:FALSE]; CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep for:0.5 animate:^{ + [[CPAnimationStep after:0.0 + for:0.5 + options:UIViewAnimationOptionCurveEaseOut + animate:^{ CGRect frame = [padView frame]; frame.origin.y = original_y; [padView setFrame:frame]; @@ -210,12 +245,16 @@ int original_y = frame.origin.y; CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep for:0.5 animate:^{ + [[CPAnimationStep after:0.0 + for:0.5 + options:UIViewAnimationOptionCurveEaseIn + animate:^{ CGRect frame = [padView frame]; frame.origin.y = [[self view] frame].size.height; [padView setFrame:frame]; }] autorelease], - [[CPAnimationStep after:0.0 animate:^{ + [[CPAnimationStep after:0.0 + animate:^{ CGRect frame = [padView frame]; frame.origin.y = original_y; [padView setHidden:TRUE]; @@ -227,6 +266,55 @@ } } +- (void)showOptions{ + if([optionsView isHidden]) { + CGRect frame = [optionsView frame]; + int original_y = frame.origin.y; + frame.origin.y = [[self view] frame].size.height; + [optionsView setFrame:frame]; + [optionsView setHidden:FALSE]; + CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: + [[CPAnimationStep after:0.0 + for:0.5 + options:UIViewAnimationOptionCurveEaseOut + animate:^{ + CGRect frame = [optionsView frame]; + frame.origin.y = original_y; + [optionsView setFrame:frame]; + }] autorelease], + nil + ] autorelease]; + [move run]; + } +} + +- (void)hideOptions{ + if(![optionsView isHidden]) { + CGRect frame = [optionsView frame]; + int original_y = frame.origin.y; + + CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: + [[CPAnimationStep after:0.0 + for:0.5 + options:UIViewAnimationOptionCurveEaseIn + animate:^{ + CGRect frame = [optionsView frame]; + frame.origin.y = [[self view] frame].size.height; + [optionsView setFrame:frame]; + }] autorelease], + [[CPAnimationStep after:0.0 + animate:^{ + CGRect frame = [optionsView frame]; + frame.origin.y = original_y; + [optionsView setHidden:TRUE]; + [optionsView setFrame:frame]; + }] autorelease], + nil + ] autorelease]; + [move run]; + } +} + #pragma mark - Action Functions @@ -238,15 +326,38 @@ } } -- (IBAction)onOptionsClick:(id)sender { +- (IBAction)onOptionsTransferClick:(id)sender { + [self hideOptions]; // Go to dialer view NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: [[[NSArray alloc] initWithObjects: @"", nil] autorelease] , @"setAddress:", + [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: TRUE], nil] autorelease] + , @"setTransferMode:", nil] autorelease]; [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; } +- (IBAction)onOptionsAddClick:(id)sender { + [self hideOptions]; + // Go to dialer view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: @"", nil] autorelease] + , @"setAddress:", + [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: FALSE], nil] autorelease] + , @"setTransferMode:", + nil] autorelease]; + [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; +} + +- (IBAction)onOptionsClick:(id)sender { + if([optionsView isHidden]) { + [self showOptions]; + } else { + [self hideOptions]; + } +} + - (IBAction)onConferenceClick:(id)sender { linphone_core_add_all_to_conference([LinphoneManager getLc]); } diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 5773c1431..0936438fe 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -42,6 +42,7 @@ {{0, 335}, {320, 125}} + _NS:9 1 @@ -377,6 +378,81 @@ IBCocoaTouchFramework + + + -2147483356 + + + + 292 + {80, 67} + + + + _NS:9 + NO + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + options_transfer_over.png + + + NSImage + options_transfer_default.png + + + 2 + 15 + + + + + + 292 + {{0, 58}, {80, 75}} + + + + _NS:9 + NO + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + options_add_over.png + + + NSImage + options_add_default.png + + + + + + {{240, 201}, {80, 134}} + + + + _NS:9 + + 3 + MCAwAA + + IBCocoaTouchFramework + 292 @@ -415,10 +491,7 @@ NSImage video_off_default.png - - 2 - 15 - + @@ -526,6 +599,10 @@ NSImage options_over.png + + NSImage + options_disabled.png + NSImage options_default.png @@ -628,7 +705,7 @@ {{215, 67}, {105, 68}} - + _NS:9 NO @@ -656,10 +733,7 @@ _NS:9 - - 3 - MCAwAA - + IBCocoaTouchFramework @@ -843,6 +917,30 @@ 86 + + + optionsView + + + + 92 + + + + optionsAddButton + + + + 96 + + + + optionsTransferButton + + + + 97 + onPadClick: @@ -878,6 +976,42 @@ 28 + + + onOptionsClick: + + + 7 + + 89 + + + + onOptionsAddClick: + + + 7 + + 93 + + + + onOptionsClick: + + + 7 + + 91 + + + + onOptionsTransferClick: + + + 7 + + 98 + @@ -905,6 +1039,7 @@ + callTabBar @@ -1079,6 +1214,28 @@ # + + 87 + + + + + + + optionsView + + + 88 + + + optionsAddButton + + + 90 + + + optionsTansferButton + @@ -1087,7 +1244,7 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIMicroButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1146,15 +1303,20 @@ UIPauseButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + - 86 + 98 @@ -1163,7 +1325,9 @@ UIViewController id + id id + id id @@ -1171,10 +1335,18 @@ onConferenceClick: id + + onOptionsAddClick: + id + onOptionsClick: id + + onOptionsTransferClick: + id + onPadClick: id @@ -1189,7 +1361,10 @@ UIMicroButton UIButton UIButton + UIButton UIButton + UIButton + UIView UIView UIPauseButton UIButton @@ -1235,10 +1410,22 @@ oneButton UIButton + + optionsAddButton + UIButton + optionsButton UIButton + + optionsTransferButton + UIButton + + + optionsView + UIView + padView UIView @@ -1292,6 +1479,17 @@ UIDigitButton UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + IBProjectSource ./Classes/UIDigitButton.h @@ -1417,8 +1615,13 @@ {220, 113} {220, 113} {220, 113} + {160, 134} + {160, 134} {160, 134} + {160, 134} {160, 134} + {16, 16} + {16, 16} {209, 136} {209, 136} {209, 136} diff --git a/Classes/LinphoneUI/UICallButton.h b/Classes/LinphoneUI/UICallButton.h index 5fc1547fb..955d9a4ee 100644 --- a/Classes/LinphoneUI/UICallButton.h +++ b/Classes/LinphoneUI/UICallButton.h @@ -22,11 +22,9 @@ @interface UICallButton : UIButton { @private - UITextField* mAddress; + UITextField* addressField; } --(void) initWithAddress:(UITextField*) address; -+(void) enableTransforMode:(BOOL) enable; -+(BOOL) transforModeEnabled; +@property (nonatomic, retain) IBOutlet UITextField* addressField; @end diff --git a/Classes/LinphoneUI/UICallButton.m b/Classes/LinphoneUI/UICallButton.m index 56d34fd18..12d647da7 100644 --- a/Classes/LinphoneUI/UICallButton.m +++ b/Classes/LinphoneUI/UICallButton.m @@ -19,38 +19,49 @@ #import "UICallButton.h" #import "LinphoneManager.h" -#import "CoreTelephony/CTCallCenter.h" + +#import @implementation UICallButton -static BOOL transferMode = NO; +@synthesize addressField; #pragma mark - Lifecycle Functions --(void) initWithAddress:(UITextField*) address{ - mAddress=[address retain]; - transferMode = NO; - [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; +- (void)initUICallButton { + [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; } +- (id)init { + self = [super init]; + if (self) { + [self initUICallButton]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUICallButton]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUICallButton]; + } + return self; +} + - (void)dealloc { + [addressField release]; + [super dealloc]; - [mAddress release]; - } - -#pragma mark - Statics Functions - -+(void) enableTransforMode:(BOOL) enable { - transferMode = enable; -} - -+(BOOL) transforModeEnabled { - return transferMode; -} - - #pragma mark - -(void) touchUp:(id) sender { @@ -86,14 +97,9 @@ static BOOL transferMode = NO; linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters([LinphoneManager getLc]); - if ([mAddress.text length] == 0) return; //just return - if ([mAddress.text hasPrefix:@"sip:"]) { - if (transferMode) { - linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), [mAddress.text cStringUsingEncoding:[NSString defaultCStringEncoding]]); - } else { - linphone_core_invite_with_params([LinphoneManager getLc],[mAddress.text cStringUsingEncoding:[NSString defaultCStringEncoding]],lcallParams); - } - [UICallButton enableTransforMode:NO]; + if ([addressField.text length] == 0) return; //just return + if ([addressField.text hasPrefix:@"sip:"]) { + linphone_core_invite_with_params([LinphoneManager getLc],[addressField.text cStringUsingEncoding:[NSString defaultCStringEncoding]],lcallParams); } else if ( proxyCfg==nil){ UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid sip address",nil) message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to place a call or use a valid sip address (I.E sip:john@example.net)",nil) @@ -104,7 +110,7 @@ static BOOL transferMode = NO; [error release]; } else { char normalizedUserName[256]; - NSString* toUserName = [NSString stringWithString:[mAddress text]]; + NSString* toUserName = [NSString stringWithString:[addressField text]]; NSString* lDisplayName = [[LinphoneManager instance] getDisplayNameFromAddressBook:toUserName andUpdateCallLog:nil]; linphone_proxy_config_normalize_number(proxyCfg,[toUserName cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); @@ -113,20 +119,14 @@ static BOOL transferMode = NO; linphone_address_set_display_name(tmpAddress,(lDisplayName)?[lDisplayName cStringUsingEncoding:[NSString defaultCStringEncoding]]:nil); - if (transferMode) { - linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), normalizedUserName); - } else { - linphone_core_invite_address_with_params([LinphoneManager getLc],tmpAddress,lcallParams) ; - } + linphone_core_invite_address_with_params([LinphoneManager getLc],tmpAddress,lcallParams) ; linphone_address_destroy(tmpAddress); } linphone_call_params_destroy(lcallParams); - [UICallButton enableTransforMode:NO]; } else if (linphone_core_inc_invite_pending([LinphoneManager getLc])) { linphone_core_accept_call([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); } - } @end diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 49800f98f..083b7ba3a 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -117,21 +117,17 @@ return 54; } -- (void)startBlinkAnimation:(NSString *)animationID target:(UIView *)target -{ +- (void)startBlinkAnimation:(NSString *)animationID target:(UIView *)target { [UIView animateWithDuration:1.0 delay: 0.0 - options: ([target alpha] == 1.0f)? UIViewAnimationOptionCurveEaseIn: UIViewAnimationOptionCurveEaseOut + options: UIViewAnimationOptionRepeat | + UIViewAnimationOptionAutoreverse | + UIViewAnimationOptionAllowUserInteraction | + UIViewAnimationOptionCurveEaseIn animations:^{ - if([target alpha] == 1.0f) - [target setAlpha:0.0f]; - else [target setAlpha:1.0f]; } completion:^(BOOL finished){ - if(finished) { - [self startBlinkAnimation: animationID target:target]; - } }]; } diff --git a/Classes/LinphoneUI/UIContactCell.xib b/Classes/LinphoneUI/UIContactCell.xib index f31f32511..0b24a4a60 100644 --- a/Classes/LinphoneUI/UIContactCell.xib +++ b/Classes/LinphoneUI/UIContactCell.xib @@ -78,7 +78,6 @@ {{75, 0}, {200, 44}} - _NS:328 NO YES @@ -109,14 +108,10 @@ {320, 44} - _NS:9 - + 3 - MQA - - 2 - + MCAwAA IBCocoaTouchFramework @@ -126,7 +121,6 @@ {320, 44} - _NS:9 NO IBCocoaTouchFramework @@ -141,8 +135,8 @@ {320, 44} - _NS:9 + NO IBCocoaTouchFramework diff --git a/Classes/LinphoneUI/UIDigitButton.h b/Classes/LinphoneUI/UIDigitButton.h index bb4cf415e..65f2d20a5 100644 --- a/Classes/LinphoneUI/UIDigitButton.h +++ b/Classes/LinphoneUI/UIDigitButton.h @@ -24,16 +24,13 @@ @interface UIDigitButton : UILongTouchButton { @private - char mDigit; - UITextField* mAddress; - - bool sendDtmfDuringCall; - + char digit; + bool dtmf; + UITextField* addressField; } --(void) initWithNumber:(char)digit ; --(void) initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool)send; - -@property bool sendDtmfDuringCall; +@property (nonatomic, retain) IBOutlet UITextField* addressField; +@property char digit; +@property bool dtmf; @end diff --git a/Classes/LinphoneUI/UIDigitButton.m b/Classes/LinphoneUI/UIDigitButton.m index 7136b6cfc..a93fc5080 100644 --- a/Classes/LinphoneUI/UIDigitButton.m +++ b/Classes/LinphoneUI/UIDigitButton.m @@ -23,39 +23,59 @@ @implementation UIDigitButton -@synthesize sendDtmfDuringCall; +@synthesize dtmf; +@synthesize digit; +@synthesize addressField; #pragma mark - Lifecycle Functions -- (void)initWithNumber:(char)digit { - [self initWithNumber:digit addressField:nil dtmf:true]; -} - -- (void)initWithNumber:(char)digit addressField:(UITextField*) address dtmf:(bool)sendDtmf{ - sendDtmfDuringCall = sendDtmf; - mDigit=digit; - mAddress=address?[address retain]:nil; +- (void)initUIDigitButton { + self->dtmf = FALSE; [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside]; } +- (id)init { + self = [super init]; + if (self) { + [self initUIDigitButton]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUIDigitButton]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUIDigitButton]; + } + return self; +} + - (void)dealloc { [super dealloc]; - [mAddress release]; + [addressField release]; } #pragma mark - Actions Functions - (void)touchDown:(id) sender { - if (mAddress && (!sendDtmfDuringCall || !linphone_core_in_call([LinphoneManager getLc]))) { - NSString* newAddress = [NSString stringWithFormat:@"%@%c",mAddress.text,mDigit]; - [mAddress setText:newAddress]; - linphone_core_play_dtmf([LinphoneManager getLc], mDigit, -1); + if (addressField && (!dtmf || !linphone_core_in_call([LinphoneManager getLc]))) { + NSString* newAddress = [NSString stringWithFormat:@"%@%c",addressField.text, digit]; + [addressField setText:newAddress]; + linphone_core_play_dtmf([LinphoneManager getLc], digit, -1); } else { - linphone_core_send_dtmf([LinphoneManager getLc], mDigit); - linphone_core_play_dtmf([LinphoneManager getLc], mDigit, 100); + linphone_core_send_dtmf([LinphoneManager getLc], digit); + linphone_core_play_dtmf([LinphoneManager getLc], digit, 100); } } @@ -70,10 +90,10 @@ } - (void)onLongTouch { - if (mDigit == '0') { - NSString* newAddress = [[mAddress.text substringToIndex: [mAddress.text length]-1] stringByAppendingString:@"+"]; - [mAddress setText:newAddress]; - [mAddress sendActionsForControlEvents:UIControlEventEditingChanged]; + if (digit == '0') { + NSString* newAddress = [[addressField.text substringToIndex: [addressField.text length]-1] stringByAppendingString:@"+"]; + [addressField setText:newAddress]; + [addressField sendActionsForControlEvents:UIControlEventEditingChanged]; } } diff --git a/Classes/LinphoneUI/UIEraseButton.h b/Classes/LinphoneUI/UIEraseButton.h index 44eebd84e..0e9e2af51 100644 --- a/Classes/LinphoneUI/UIEraseButton.h +++ b/Classes/LinphoneUI/UIEraseButton.h @@ -23,8 +23,9 @@ @interface UIEraseButton : UILongTouchButton { @private - UITextField* mAddress; - + UITextField* addressField; } --(void) initWithAddressField:(UITextField*) address; + +@property (nonatomic, retain) IBOutlet UITextField* addressField; + @end diff --git a/Classes/LinphoneUI/UIEraseButton.m b/Classes/LinphoneUI/UIEraseButton.m index 5a4b58e22..9b4e96eb4 100644 --- a/Classes/LinphoneUI/UIEraseButton.m +++ b/Classes/LinphoneUI/UIEraseButton.m @@ -22,23 +22,49 @@ @implementation UIEraseButton +@synthesize addressField; + + #pragma mark - Lifecycle Functions --(void) initWithAddressField:(UITextField*) address { - mAddress = address; +- (void)initUIEraseButton { [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; } -- (void)dealloc { - [super dealloc]; +- (id)init { + self = [super init]; + if (self) { + [self initUIEraseButton]; + } + return self; } +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUIEraseButton]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUIEraseButton]; + } + return self; +} + +- (void)dealloc { + [super dealloc]; + [addressField release]; +} #pragma mark - Action Functions -(void) touchDown:(id) sender { - if ([mAddress.text length] > 0) { - [mAddress setText:[mAddress.text substringToIndex:[mAddress.text length]-1]]; + if ([addressField.text length] > 0) { + [addressField setText:[addressField.text substringToIndex:[addressField.text length]-1]]; } } @@ -49,7 +75,7 @@ } - (void)onLongTouch { - [mAddress setText:@""]; + [addressField setText:@""]; } @end diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index c978fbc8e..bba065224 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -129,7 +129,6 @@ {{276, 0}, {44, 44}} - _NS:9 NO IBCocoaTouchFramework @@ -158,12 +157,9 @@ _NS:9 - + 3 - MQA - - 2 - + MCAwAA IBCocoaTouchFramework @@ -173,7 +169,6 @@ {320, 44} - _NS:9 NO IBCocoaTouchFramework @@ -189,6 +184,7 @@ _NS:9 + NO IBCocoaTouchFramework diff --git a/Classes/LinphoneUI/UITransferButton.h b/Classes/LinphoneUI/UITransferButton.h new file mode 100644 index 000000000..f6178358e --- /dev/null +++ b/Classes/LinphoneUI/UITransferButton.h @@ -0,0 +1,29 @@ +/* UITransferButton.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface UITransferButton : UIButton { +@private + UITextField* addressField; +} + +@property (nonatomic, retain) IBOutlet UITextField* addressField; + +@end diff --git a/Classes/LinphoneUI/UITransferButton.m b/Classes/LinphoneUI/UITransferButton.m new file mode 100644 index 000000000..6a105db9b --- /dev/null +++ b/Classes/LinphoneUI/UITransferButton.m @@ -0,0 +1,131 @@ +/* UITransferButton.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ +#import "UITransferButton.h" +#import "LinphoneManager.h" + +#import + +@implementation UITransferButton + +@synthesize addressField; + +#pragma mark - Lifecycle Functions + +- (void)initUICallButton { + [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; +} + +- (id)init { + self = [super init]; + if (self) { + [self initUICallButton]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUICallButton]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUICallButton]; + } + return self; +} + +- (void)dealloc { + [addressField release]; + + [super dealloc]; +} + +#pragma mark - + +-(void) touchUp:(id) sender { + if (!linphone_core_is_network_reachabled([LinphoneManager getLc])) { + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Network Error",nil) + message:NSLocalizedString(@"There is no network connection available, enable WIFI or WWAN prior to place a call",nil) + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; + return; + } + + CTCallCenter* ct = [[CTCallCenter alloc] init]; + if ([ct.currentCalls count] > 0) { + ms_error("GSM call in progress, cancelling outgoing SIP call request"); + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Cannot make call",nil) + message:NSLocalizedString(@"Please terminate GSM call",nil) + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; + [ct release]; + return; + } + [ct release]; + + if (TRUE /*!linphone_core_in_call([LinphoneManager getLc])*/) { + LinphoneProxyConfig* proxyCfg; + //get default proxy + linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); + LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters([LinphoneManager getLc]); + + if ([addressField.text length] == 0) return; //just return + if ([addressField.text hasPrefix:@"sip:"]) { + linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), [addressField.text cStringUsingEncoding:[NSString defaultCStringEncoding]]); + } else if ( proxyCfg==nil){ + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid sip address",nil) + message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to place a call or use a valid sip address (I.E sip:john@example.net)",nil) + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; + } else { + char normalizedUserName[256]; + NSString* toUserName = [NSString stringWithString:[addressField text]]; + NSString* lDisplayName = [[LinphoneManager instance] getDisplayNameFromAddressBook:toUserName andUpdateCallLog:nil]; + + linphone_proxy_config_normalize_number(proxyCfg,[toUserName cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); + LinphoneAddress* tmpAddress = linphone_address_new(linphone_core_get_identity([LinphoneManager getLc])); + linphone_address_set_username(tmpAddress,normalizedUserName); + linphone_address_set_display_name(tmpAddress,(lDisplayName)?[lDisplayName cStringUsingEncoding:[NSString defaultCStringEncoding]]:nil); + + + linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), normalizedUserName); + + linphone_address_destroy(tmpAddress); + } + linphone_call_params_destroy(lcallParams); + } else if (linphone_core_inc_invite_pending([LinphoneManager getLc])) { + linphone_core_accept_call([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); + } +} + +@end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 8d9e26959..43be2d8cd 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -259,9 +259,7 @@ case LinphoneCallConnected: case LinphoneCallUpdated: { - if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } + [[LinphoneManager instance] changeView:PhoneView_InCall]; break; } case LinphoneCallUpdatedByRemote: @@ -270,9 +268,7 @@ const LinphoneCallParams* remote = linphone_call_get_remote_params(call); if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { - if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } + [[LinphoneManager instance] changeView:PhoneView_InCall]; } break; } @@ -284,32 +280,27 @@ { [self dismissIncomingCall:call]; if (canHideInCallView) { - if ([[LinphoneManager instance] currentView] != PhoneView_Dialer) { - // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: @"", nil] autorelease] - , @"setAddress:", - nil] autorelease]; - [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; - } + // Go to dialer view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: @"", nil] autorelease] + , @"setAddress:", + [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: FALSE], nil] autorelease] + , @"setTransferMode:", + nil] autorelease]; + [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; } else { - if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } + [[LinphoneManager instance] changeView:PhoneView_InCall]; } break; } case LinphoneCallStreamsRunning: { - if ([[LinphoneManager instance] currentView] != PhoneView_InCall) { - [[LinphoneManager instance] changeView:PhoneView_InCall]; - } + [[LinphoneManager instance] changeView:PhoneView_InCall]; break; } default: break; } - } diff --git a/Classes/Utils/CPAnimationStep.m b/Classes/Utils/CPAnimationStep.m index ba99bbfd9..4ad40220f 100755 --- a/Classes/Utils/CPAnimationStep.m +++ b/Classes/Utils/CPAnimationStep.m @@ -74,7 +74,7 @@ self.consumableSteps = nil; return; // we're done } - AnimationStep completionStep = ^{ + void (^completionStep)(BOOL) = ^(BOOL animated){ [self.consumableSteps removeLastObject]; [self runAnimated:animated]; // recurse! }; @@ -87,13 +87,15 @@ animations:currentStep.step completion:^(BOOL finished) { if (finished) { - completionStep(); - } + completionStep(TRUE); + } else { + completionStep(FALSE); + } }]; } else { void (^execution)(void) = ^{ currentStep.step(); - completionStep(); + completionStep(FALSE); }; if (animated && currentStep.delay) { diff --git a/Resources/contacts_all_default.png b/Resources/contacts_all_default.png index 18e7eebd495c5800b014cbdbaeb0f283e6c566dc..d062ce11cd26952680dfa7df029649be6522ce9f 100644 GIT binary patch delta 6171 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 Z{{cr;>YsvQ#9#mb002ovPDHLkV1h@Jjj;d# delta 7683 zcmV+e9{l0dN&iByVFCe0lb!+{lYasp0Y$T(0u})X_|4~$0014Yle_~Ve`GVxTfL2V zou2mQ+Yg>Z5&91bHi(ITe*ex+2xVbmVI|VI*Z`N6TMt+mYM;4$3&l*JdH)!}F8v4c zH8V3aL9?QK9iO~-17!UD_y7F0yJ%YeF@lWy&-9;(=`Ya1OpHW;WM%Vxo z6B8o{f!Kfk{2?6IY^*Fme=^d?0cb8k#lL_5CT!xb-+z>3C5Q}bpouKRr0~0so&yms z+5cbwp??1S$pVQWtRT$O7D%q&bNu)3KbTw;6M?3HP5kxi7ZWfUVIrVrVF4b9hCmlf zh~UYK*MI-{^W(=4AUn_%D){#g2>k&wfW`t%WSqTx6NMQDlEOjgf6reRD}5FV9Yrc; zYEaAoa}RY(3V;A&q;6>jbl;#X%|I#V-#=hJ%!myJnaIY@PNYs76TKs6E@8&>KS){j z7n(?kEzN}Zc~uppfoSoDJ!r|B=^wE4VS>j8;nGZykH^#A6v$Y%c|VXuQxD27jG*Xc zVq%75M;1nK>4pbiECgv1|gj-4REGG21ZEo z2BmO5ABx)Yad+zVj<4L^7F4k0VR4g>}v<9}eOjoAic z0X9x4bP%vPefidd%Qx=>*}z7og@NY#PhYklJWWz`|7QeN(7;AFm;-J#LrMl9Nx06! z55$B8Htjp%=VWo^)&n5-{*#wL1aUVp?P~^@lfVR!f5QlGFn z3n>pFf1M3*_XPqN=dId0u$2d-0)_?UKS{6aU8O--FGETks1vzFBnNpj0w4gp*7p)c5XWz(Evkzm>xeX^xFfp~?+_)r zGAQf^A_Ngd_|&_9QcpqDlOWPVkoYLR6%=HFe@a>?Md5=b7Q20BKeMx!tlOS5&_48q zo15F++5PaHnVrw)GnaQVmUkxhA736!P$w^%Ad*vK5AMeE3f0fdrNXVC$B-4gX`rB*F#lmop_Ca2PAjAAZ< zf3IK){iXxM7RJDla+h0t1c!JwJzMT-PrpCMoD>oZoCGi_IAw!K2G~;T6m^1lJHM2E zfAVQ1PNae)6th;D6H+)+Ck3??F#vXr3glAXxeBea%raC+W%ejcAv_U+)(e|0sot~O zyK{5U0D>ZEZF%KZMWjnYVFH*wzVvp8e`Wsy94NlI3F^iDdt1^?rk5$|wAp92YwUFs z-9-av{rg5s`AZ}yCV#er57Kk<=daCZ8-rL~*+>pV9aScDCy^m}-KS2>FRj?)bJM@3 zXVKBf<@%3}xrJp{`E!GhF*WmY$2M2uapKFWh^ysJR*oJ%n0Uc<$J65vmJo3mf3A8I zqgm(2*>WcyFKjpOg*@6QWfkdM0@2T)7lsQX2X{b@B zm5;LPc*&f-P(Rb$$^;s5eWS((W?#)E9{;%V1?9IjWz(EK*}qs=OAmnM{gEr-yq-pd z7qiaFb_Q!qPs1O?XX|y0-Wqy5@xs#U(Cn0ZB@sWpaY=a{w%Z$z#-F?JVgfV73GP~> zrr*!bw_j}Z5wm#pe2+opU945|rYV~}^t3-Uf=2x!Ch8ac>VITRjENy6N)#k9AmAf}EFg-2kq|?O ziH{&b7$A?aM?JT9y}Ro+n9$ksxWINfJ1y<6=f2K47p?oRG+uT_taIPTw#y55ueoh6 z-#^ufk+3>FpJ$F)vg+)We~E^u2~q6*mX1A3PsTBHT_gkqK@YER_jVH(nui7bAp79) zi#=_Fj1ZiTQrR73p(!oo0_!DfaelSUN)uGx*BjT8nVvf5T3Yvbit=)7WrZW-lklw! z$56*OapIHdDXT{g-;wbzG(jdF-g3pu1xLl(fsq8BHyIP>T#H_xe=jQ|4e-H7V-r(% zni?NH>sH7T153-`8%hqhrMw6wzY^R$x$at%y+!f*_YK6Xt#9Sat`rVnBAO*4E=3US3&i z?d(G%Agk*e`h+Wre+(%sivWpmKh0QIzb=G)G0raZ9E-+0@nd zUeP&V5Mr=Ji?A30TOlLS3&b%=ID`;Xxe4R2%F~zq=c=qHe~Tk~h`vwH0$;E}bCOAs zxQlF4Pc$W(EPbHNHLNnhncpsG!hi-)797jI)=*7<3U&u%@rI$n(TV@D&AxT(P|lN9A1sjV!D z{S5!AugLrcryENVO=*3MS9naoRl`WZb-KjG2Ic3Jp6B((YS+?o$^j$%>hXHpdk3Hb zLZaB?{ODR-2Gx`#BY6_-uLe9GFG%Xolw(Q6W552Ge;E?@N7KUAuKw6ARdOpxKLnkh z5S4B!ycPT7K+qrFpSppsMG|ZsY$8Wv?jG_lm2OK+NMow6Kg-js7O#0MTH1T!4EJ(a|XYvd{}Lr zzMZ!__jYf&^SC>9FYIKq%nq~1-jDZY-psz=d#>kEO2u`Wap7~}bK!I0bBhb#N|sga zY-u#wbT2o#p}=@yK|yn4s3y2%7%gR$fBUK~v5#P6pmEmJ7}`}|YaxAUCtPRKegVM_ zU1W5Euz2->-ZJWT`O6DeMyKxnb+EG|7CvQF!e?4;p%;g?Plf&)qJ!|xVmW}|z1fGO zzd*@Kd5Me3htsuR=i-Q>)sH2=<=490OnWNZ+<#pv=DkDv{ZTf7fnI zJr{9g>qU6ADTt!NIR%lbIwA-v9N6S1@Ug6cFEab+;p3-(T~T2{SI2HRe|5M! zCGpc`57ERZZ3rSpmN0-V0y$hB`O^qrHb~#058LtmoGhmYhUVrMzx-t1*C~=kxo|@j z;HWqX5CO)V97e}RoLZpIgU5dxf0ftq(pO(o^~0|{8`rNxwS{wMdrMn$xc~C#;MMWg z9d%GiK?c3={9_em{NTgSMvK zJ3`+aIr+tbj&noTQ?d0_M9{ljVH$|SlN@DGXtA_uxXH&dS8=@V9y!q;e}%Hl-x99f zxPI*)y%#?3>VSv;_Lq~({tAljsLS;+P$;fK5v1}3g%y3SHcMX?z_+z>(~eN^yQ4iBSgUD2(fwH>sEvb&oGyT|SUCv3#%-Gc zCV4r(@N8savaY(K(4+dNe+~?fW$sbYYL*CUVVw+GtH>Wzksa~Ae9x{r3|vbKpw`?_ zBQG=Lib{zLav`iUYABb1lb%k3udBTUkb3^&-(!7)G=3Grx1rc8FO!OHwG0p?6+{Xk z*C`-mi@`9B*sQ$1VlUuw>ijU~DxeRuu=r1paJv8a{Z_D<0p*{Mf1ge0aFyg9UmSB# zn>eIRErFw-V6)Np?#|G3Lwuplscf^uo|K4WMVmKpd#vZ(VhXk^b+Yq?j;yBb=3hWceke_wo9Lb2ykeN zfOXQ{cWK|AotWI`(UZBE$bFw~vS7vlBob!Mc3IxsZU5K@q8F~+9I6g{|64E8EMWu; z35jEZ3 zTCk&R-?$?ne_v_COQ-E-CGScmB^Ha za&BmB=H3HJpJs&HESb{q+Y|jmP&v@ioR_QpvyoG6d2gU(!>+m@wn+N)D?BP8OG_EE z(rFCxw4(6I{~~kHR6G87=8*AH|w!^{HpzZ$n zPpgHwe-|`p6G>mHEYVzU9Qt@}ChQgq6N*#nqM`o$#ebYr5ioy(RIdb$`kxrRafjOB zmS2#^d={r%X(Z^AgyniWd#TaQb?L(_L}@!@)N^t$%oso_vW|+3E#cZKHQK*bx5?>9 zbwvrbc#AypUir7MeouJ7z!?t^K<^rl<#S4@e`C=!3ykD6h*I_Gq!Byy<}MWzX4%D8 z?ERF)_QLc5oJB1u)7krGk?eo;)cM$DCe#Op#}0M2LAS?G=AeIf-=OSZ>IpzYH%v_e zEq5cciN-x*yD%E0M8%mA2&ENBrO)O72cPZVJ2F0rX+(8bo&wf2i_;+?mu?gU^%yx(lBvD2Z-Yu{ECj$`W6m zc)4t;rn%uQWiEKhF5%s=FFnPD&xOyv;(|r$o(#eyWz9q;&yym} zhZM=56e*HFDUv@aQdUu1@|kmM zs&R~;qA2y%TedgXr+HEr#$Q6je|3?va>51BjD0oXr~{}(AylGCX%#m1FwirA1@+5( zg&!W=E#!x{J^G(M|5DzAq)~P88fClbF2eX0Vv0UYi?Lc!<^zS!$9w(yweshGos>65 z!brqPlY;%V$oNErfmVbI->m)4?RNe47auxU@^D=&gi27PPI_6>dPPI zuD9LZ`$3EJKUPCh+^)*9f8rFkJKgKSLgN4vE!qWG?C!tUKOC6>*;H5g%ftI3AP$dQ zyBS!`Gc<=#=ECnq0gbLw_kw3p1d-TK$P{7(!GYls2mX}LzBnVfSvq!y_O?R9-5(vh z_h2kMKE)&Jf8CFm^I@EhMGWa@ z4O3+J7NL*{)Scq`IY|GzYkDrtD zEK%NXtcEhX|6n{kfAI*w(ZZ6#yxNM=f=$^B#IG(!5*MT7(4I(AYE(XZ^*itiYH!~i zTx*X+6>#K1w52c(1o71U{?{Mb`oFUMw{-a~(8s%kbS3m~f`$~$&dk`=Tnj+qe>{5p zbZm0^zvr$s)@->ucpsH#W?yvn46Wo{h%c6~9^jwo0hy!Te=yBC5$$)@KB7VEi5|e7 z@frOSTvDj0%j_VMzvUOI^VrPz=_k*=zTC#sIWzn6#;tA=PbB1JaXB2c9aqLjY9?G9 zmuQ@I=DTP-GBV8wiaU4wkCMN6Bob!9*n=82jo2v2&GMHN(ip5n3(0!wa@#t*uy!xm zjEz7BVvIsXf7f>;`sR&rYXXAAm={k>r68P-OA;oK)Y4Gp5T$!wfn#z0ddK?wcXp42 zF>izog-j9h2S5@FQCb=%+0+*yA4~tX&$d9H9Iri z0Z=|8{KKO5wY5GeF(d z1-S)dQ;%r^9B9NHOwf65lN)PJ^pB|Sr-8ov)#c<}y17G{=8 zdsjbA>SY$7DWu}$EAv^x`1QA29F(H$f3X#s)COJ%v>;kmg&);^45J=b=Y}C4{Jk@Z$Q21R53F7`J%ChIc+Wa=`M?k?{u-KI*-G zapo%RL!l|1{~8osrW?05t~Bc37YW`TY2Aw;V4Dg-v#%fP#fy^ zZH7kV-*W&p)|e~aya}6No%yCD+z#lxe}sGav22jpd&Ca@ujJ3xFR^nzq%1VaiBsff zc{QbFT#3rDpQuv*Nm&R?cFqUk*VF~z=+yp`@pq-z!)L*ekfDpH=G1RQ$WWHR`fp!r zLtaki_|)UeZBFm<>ncm@DoW<9wrE-D{jV#HD8zh;<*Kw-erzrX|HCBme}_lHe}H2y zS$)stCXa}Hend=aX{r3oN>tA&fA!;C&2z6_fw}*6_Lln!s>_Q|e+?xkFSSu< zRJ}54_60}IUTX(r)#b(5KNgg9XxyXl(4J;cg5TnxK*a5K`HKshYPWz$fOzIwJKZ5W zE(%A&6SwXRpk{Mz1)dfxUtMaWeT{&4zm~Qb)o^;jQ22*euNo>#TN|se0R1j5H}8^q zRLl;BKptmyx%8ISIYNnXe+s5^`!7-a4>i86hH96-?Hrqm4u8VR%=6jpKdRC0y`h>0 z&;VWU>I-543RUIBNA|ZKKX;wq?Y~cbLszDsJOekhnl^$aQepRdb%1XqJbA6Xi&mSP zo9hjRupHUHJ|Yr9IxJ=iEphF{Sk-7E^$&ckOI{6Qzw37k;W?_P#h*ZD#hR<=#T!NplIn z0!)098j4e>#@=?&a%x6_rul4#LgD(Vvf_eVev@4`ajIX~3%&ZvGAx$=8_!aB$>R&n zlg}Nt!URLl zna>vF5p6__YK*OC{rX=kX92Q0?hFVoV^Z8MC|&-Q;Icf^ymKM;xtPc!d>k0Z5HODR zHxU#dE_c4xU@{9G3P6M>*y@3HC~vN-03U(gAo%c?Y;LG7fA?y0ey_9z7PP~wZGoTc zec$gZ$lmC^ax*|jC(vOHzy&l%#w7^dWi}2Z7PJ;nf5*11I6b%^9bNrY-TL)WHh}NM z`5TtnbJ49E)j|b2kVh=T!0_jQ{(~f4)xUuCL!5J&4cmdxkoD29xv> zh>xfpi#(AQ?Hmdn(IY~$Z1L6QMJzIeRr~LaeE+6hf3D=d4hEAgBw0}T9%+j}(1s|` zd@OR6q^G5#HR9}lyh-Nk{qJ7E9-002ovPDHLkV1f?}@EQOB diff --git a/Resources/contacts_linphone_selected.png b/Resources/contacts_linphone_selected.png index 0a75d15f05bd419973490c1d3e7bad04df91830d..9d240afeb881e833bfef8226ac8ac88d831105de 100644 GIT binary patch delta 7683 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 delta 8543 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 Z{{cr;>YsvQ#9#mb002ovPDHLkV1h@Jjj;d# diff --git a/Resources/history_all_default.png b/Resources/history_all_default.png index fe9f61f2f8fce2e1b9e0e73866eb95e562e1749e..9790cc94533d8be38989606ef8960b8700626aeb 100644 GIT binary patch delta 5715 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 FV1mo=+YkT% delta 5130 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 diff --git a/Resources/history_all_selected.png b/Resources/history_all_selected.png index 9790cc94533d8be38989606ef8960b8700626aeb..fe9f61f2f8fce2e1b9e0e73866eb95e562e1749e 100644 GIT binary patch delta 5130 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 delta 5715 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 FV1mo=+YkT% diff --git a/Resources/history_missed_default.png b/Resources/history_missed_default.png index 0f2f99b4ef3f5ed365c096da5152b4c9dac7d0d8..cb413d997c63dc64215aed61386b624d26aea688 100644 GIT binary patch delta 7758 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 literal 0 HcmV?d00001 diff --git a/Resources/options_add_over.png b/Resources/options_add_over.png new file mode 100644 index 0000000000000000000000000000000000000000..efbda469018d90e969027526129a05c58a48b240 GIT binary patch literal 5089 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 D#|n-k literal 0 HcmV?d00001 diff --git a/Resources/options_transfer_default.png b/Resources/options_transfer_default.png new file mode 100644 index 0000000000000000000000000000000000000000..0fb0981f9d7555a9d42ced8793bd84c4348a1bd5 GIT binary patch literal 5314 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 MQ`Ux7LEs_(0|~SZA^-pY literal 0 HcmV?d00001 diff --git a/Resources/options_transfer_over.png b/Resources/options_transfer_over.png new file mode 100644 index 0000000000000000000000000000000000000000..0199183297d75bc8a3cdc6acda6a0a155d3369c8 GIT binary patch literal 5339 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 7b6a1fd9a..0765ea3eb 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -155,6 +155,16 @@ 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; D3196D2D15A3199D007FEEBA /* list_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_hightlight.png */; }; D3196D2E15A3199D007FEEBA /* list_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_hightlight.png */; }; + D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; + D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; + D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3115A321E2007FEEBA /* options_add_over.png */; }; + D3196D3715A321E3007FEEBA /* options_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3115A321E2007FEEBA /* options_add_over.png */; }; + D3196D3815A321E3007FEEBA /* options_transfer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3215A321E3007FEEBA /* options_transfer_default.png */; }; + D3196D3915A321E3007FEEBA /* options_transfer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3215A321E3007FEEBA /* options_transfer_default.png */; }; + D3196D3A15A321E3007FEEBA /* options_transfer_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3315A321E3007FEEBA /* options_transfer_over.png */; }; + D3196D3B15A321E3007FEEBA /* options_transfer_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3315A321E3007FEEBA /* options_transfer_over.png */; }; + D3196D3E15A32BD8007FEEBA /* UITransferButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D3196D3D15A32BD8007FEEBA /* UITransferButton.m */; }; + D3196D3F15A32BD8007FEEBA /* UITransferButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D3196D3D15A32BD8007FEEBA /* UITransferButton.m */; }; D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; D31AAF63159B5B6F002C6B02 /* conference_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* conference_default.png */; }; @@ -240,14 +250,14 @@ D35497FF15875372000081D8 /* ContactsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsViewController.m */; }; D354980015875372000081D8 /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsViewController.xib */; }; D354980115875372000081D8 /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsViewController.xib */; }; - D354980615875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_default.png */; }; - D354980715875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_default.png */; }; - D354980815875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_selected.png */; }; - D354980915875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_selected.png */; }; - D354980A15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_default.png */; }; - D354980B15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_default.png */; }; - D354980C15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_selected.png */; }; - D354980D15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_selected.png */; }; + D354980615875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_selected.png */; }; + D354980715875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_selected.png */; }; + D354980815875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_default.png */; }; + D354980915875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_default.png */; }; + D354980A15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_selected.png */; }; + D354980B15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_selected.png */; }; + D354980C15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_default.png */; }; + D354980D15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_default.png */; }; D354981015875608000081D8 /* contacts_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* contacts_add_default.png */; }; D354981115875608000081D8 /* contacts_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* contacts_add_default.png */; }; D354981215875608000081D8 /* contacts_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* contacts_add_over.png */; }; @@ -455,18 +465,18 @@ D3ED3E881586291E006C0DE4 /* UIMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* UIMainBar.m */; }; D3ED3E891586291E006C0DE4 /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* UIMainBar.xib */; }; D3ED3E8A1586291E006C0DE4 /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* UIMainBar.xib */; }; - D3ED3E9815872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_default.png */; }; - D3ED3E9915872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_default.png */; }; - D3ED3E9A15872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */; }; - D3ED3E9B15872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */; }; + D3ED3E9815872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */; }; + D3ED3E9915872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */; }; + D3ED3E9A15872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_default.png */; }; + D3ED3E9B15872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_default.png */; }; D3ED3E9C15872EF1006C0DE4 /* history_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */; }; D3ED3E9D15872EF1006C0DE4 /* history_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */; }; D3ED3E9E15872EF1006C0DE4 /* history_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */; }; D3ED3E9F15872EF1006C0DE4 /* history_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */; }; - D3ED3EA015872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */; }; - D3ED3EA115872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */; }; - D3ED3EA215872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */; }; - D3ED3EA315872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */; }; + D3ED3EA015872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */; }; + D3ED3EA115872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */; }; + D3ED3EA215872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */; }; + D3ED3EA315872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */; }; D3ED3EA71587334E006C0DE4 /* HistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */; }; D3ED3EA81587334E006C0DE4 /* HistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */; }; D3ED3EB3158738FB006C0DE4 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; }; @@ -897,6 +907,12 @@ 70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; D3196D2C15A3199D007FEEBA /* list_hightlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_hightlight.png; path = Resources/list_hightlight.png; sourceTree = ""; }; + D3196D3015A321E2007FEEBA /* options_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_default.png; path = Resources/options_add_default.png; sourceTree = ""; }; + D3196D3115A321E2007FEEBA /* options_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_over.png; path = Resources/options_add_over.png; sourceTree = ""; }; + D3196D3215A321E3007FEEBA /* options_transfer_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_default.png; path = Resources/options_transfer_default.png; sourceTree = ""; }; + D3196D3315A321E3007FEEBA /* options_transfer_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_over.png; path = Resources/options_transfer_over.png; sourceTree = ""; }; + D3196D3C15A32BD7007FEEBA /* UITransferButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UITransferButton.h; sourceTree = ""; }; + D3196D3D15A32BD8007FEEBA /* UITransferButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UITransferButton.m; sourceTree = ""; }; D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallTableViewController.h; sourceTree = ""; }; D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallTableViewController.m; sourceTree = ""; }; D31AAF61159B5B6E002C6B02 /* conference_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = conference_default.png; path = Resources/conference_default.png; sourceTree = ""; }; @@ -954,10 +970,10 @@ D35497FB15875372000081D8 /* ContactsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsViewController.h; sourceTree = ""; }; D35497FC15875372000081D8 /* ContactsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactsViewController.m; sourceTree = ""; }; D35497FD15875372000081D8 /* ContactsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactsViewController.xib; sourceTree = ""; }; - D354980215875534000081D8 /* contacts_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_default.png; path = Resources/contacts_all_default.png; sourceTree = ""; }; - D354980315875534000081D8 /* contacts_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_selected.png; path = Resources/contacts_all_selected.png; sourceTree = ""; }; - D354980415875534000081D8 /* contacts_linphone_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_linphone_default.png; path = Resources/contacts_linphone_default.png; sourceTree = ""; }; - D354980515875534000081D8 /* contacts_linphone_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_linphone_selected.png; path = Resources/contacts_linphone_selected.png; sourceTree = ""; }; + D354980215875534000081D8 /* contacts_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_selected.png; path = Resources/contacts_all_selected.png; sourceTree = ""; }; + D354980315875534000081D8 /* contacts_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_default.png; path = Resources/contacts_all_default.png; sourceTree = ""; }; + D354980415875534000081D8 /* contacts_linphone_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_linphone_selected.png; path = Resources/contacts_linphone_selected.png; sourceTree = ""; }; + D354980515875534000081D8 /* contacts_linphone_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_linphone_default.png; path = Resources/contacts_linphone_default.png; sourceTree = ""; }; D354980E15875608000081D8 /* contacts_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_add_default.png; path = Resources/contacts_add_default.png; sourceTree = ""; }; D354980F15875608000081D8 /* contacts_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_add_over.png; path = Resources/contacts_add_over.png; sourceTree = ""; }; D3549814158761CF000081D8 /* ContactsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsTableViewController.h; sourceTree = ""; }; @@ -1097,12 +1113,12 @@ D3ED3E841586291B006C0DE4 /* UIMainBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIMainBar.h; sourceTree = ""; }; D3ED3E851586291B006C0DE4 /* UIMainBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMainBar.m; sourceTree = ""; }; D3ED3E861586291C006C0DE4 /* UIMainBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIMainBar.xib; sourceTree = ""; }; - D3ED3E9215872EF1006C0DE4 /* history_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_default.png; path = Resources/history_all_default.png; sourceTree = ""; }; - D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_selected.png; path = Resources/history_all_selected.png; sourceTree = ""; }; + D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_selected.png; path = Resources/history_all_selected.png; sourceTree = ""; }; + D3ED3E9315872EF1006C0DE4 /* history_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_default.png; path = Resources/history_all_default.png; sourceTree = ""; }; D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_edit_default.png; path = Resources/history_edit_default.png; sourceTree = ""; }; D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_edit_over.png; path = Resources/history_edit_over.png; sourceTree = ""; }; - D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_default.png; path = Resources/history_missed_default.png; sourceTree = ""; }; - D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_selected.png; path = Resources/history_missed_selected.png; sourceTree = ""; }; + D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_selected.png; path = Resources/history_missed_selected.png; sourceTree = ""; }; + D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_default.png; path = Resources/history_missed_default.png; sourceTree = ""; }; D3ED3EA41587334B006C0DE4 /* HistoryTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryTableViewController.h; sourceTree = ""; }; D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryTableViewController.m; sourceTree = ""; }; D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = ""; }; @@ -1601,6 +1617,8 @@ D32648431588F6FB00930C67 /* UIToggleButton.m */, 340751E5150F38FC00B89C47 /* UIVideoButton.h */, 340751E6150F38FD00B89C47 /* UIVideoButton.m */, + D3196D3C15A32BD7007FEEBA /* UITransferButton.h */, + D3196D3D15A32BD8007FEEBA /* UITransferButton.m */, ); path = LinphoneUI; sourceTree = ""; @@ -1760,7 +1778,6 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - D3196D2C15A3199D007FEEBA /* list_hightlight.png */, D3F83F741582253100336684 /* accept_default.png */, D3F83F751582253100336684 /* accept_over.png */, D3D6A39B159B0EEF005F692C /* add_call_default.png */, @@ -1814,11 +1831,11 @@ D31AAF62159B5B6E002C6B02 /* conference_over.png */, D354980E15875608000081D8 /* contacts_add_default.png */, D354980F15875608000081D8 /* contacts_add_over.png */, - D354980215875534000081D8 /* contacts_all_default.png */, - D354980315875534000081D8 /* contacts_all_selected.png */, + D354980215875534000081D8 /* contacts_all_selected.png */, + D354980315875534000081D8 /* contacts_all_default.png */, D38327EB1580FE3A00FA0D23 /* contacts_default.png */, - D354980415875534000081D8 /* contacts_linphone_default.png */, - D354980515875534000081D8 /* contacts_linphone_selected.png */, + D354980415875534000081D8 /* contacts_linphone_selected.png */, + D354980515875534000081D8 /* contacts_linphone_default.png */, D38327FC158100E400FA0D23 /* contacts_over.png */, D38327EC1580FE3A00FA0D23 /* contacts_selected.png */, D3F83F761582253100336684 /* decline_default.png */, @@ -1833,13 +1850,13 @@ D3F83EFB158205A100336684 /* hangup_over.png */, D36C43CE158F2F370048BA40 /* header_conference.png */, D3F26BFB15987083005F9CAB /* header_incoming.png */, - D3ED3E9215872EF1006C0DE4 /* history_all_default.png */, - D3ED3E9315872EF1006C0DE4 /* history_all_selected.png */, + D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */, + D3ED3E9315872EF1006C0DE4 /* history_all_default.png */, D347347C1580E5F8003C7B8C /* history_default.png */, D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */, D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */, - D3ED3E9615872EF1006C0DE4 /* history_missed_default.png */, - D3ED3E9715872EF1006C0DE4 /* history_missed_selected.png */, + D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */, + D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */, D3F26BF515986DAD005F9CAB /* history_ok_default.png */, D3F26BF615986DAD005F9CAB /* history_ok_over.png */, D38327FD158100E400FA0D23 /* history_over.png */, @@ -1858,6 +1875,7 @@ D3EA5417159858A80037DC6B /* list_delete_over.png */, D354981815876FE7000081D8 /* list_details_default.png */, D354981915876FE7000081D8 /* list_details_over.png */, + D3196D2C15A3199D007FEEBA /* list_hightlight.png */, D3F83EF4158205A100336684 /* micro_off_default.png */, D35EA76115A2DF8D003E025D /* micro_off_disabled.png */, D3F83EF5158205A100336684 /* micro_off_over.png */, @@ -1891,9 +1909,13 @@ D3F83F2D1582223B00336684 /* numpad_zero_over.png */, 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, + D3196D3015A321E2007FEEBA /* options_add_default.png */, + D3196D3115A321E2007FEEBA /* options_add_over.png */, D3D6A3A8159B0EFE005F692C /* options_default.png */, D3D6A3A9159B0EFE005F692C /* options_disabled.png */, D3D6A3AA159B0EFE005F692C /* options_over.png */, + D3196D3215A321E3007FEEBA /* options_transfer_default.png */, + D3196D3315A321E3007FEEBA /* options_transfer_over.png */, D3F83EF8158205A100336684 /* pause_off_default.png */, D3F83EF9158205A100336684 /* pause_off_over.png */, D36C43E7158F3F7E0048BA40 /* pause_on_default.png */, @@ -2204,18 +2226,18 @@ D3ED3E7815861B1B006C0DE4 /* backspace_default.png in Resources */, D3ED3E7A15861B1B006C0DE4 /* backspace_over.png in Resources */, D3ED3E891586291E006C0DE4 /* UIMainBar.xib in Resources */, - D3ED3E9815872EF1006C0DE4 /* history_all_default.png in Resources */, - D3ED3E9A15872EF1006C0DE4 /* history_all_selected.png in Resources */, + D3ED3E9815872EF1006C0DE4 /* history_all_selected.png in Resources */, + D3ED3E9A15872EF1006C0DE4 /* history_all_default.png in Resources */, D3ED3E9C15872EF1006C0DE4 /* history_edit_default.png in Resources */, D3ED3E9E15872EF1006C0DE4 /* history_edit_over.png in Resources */, - D3ED3EA015872EF1006C0DE4 /* history_missed_default.png in Resources */, - D3ED3EA215872EF1006C0DE4 /* history_missed_selected.png in Resources */, + D3ED3EA015872EF1006C0DE4 /* history_missed_selected.png in Resources */, + D3ED3EA215872EF1006C0DE4 /* history_missed_default.png in Resources */, D3ED3EB3158738FB006C0DE4 /* HistoryViewController.xib in Resources */, D354980015875372000081D8 /* ContactsViewController.xib in Resources */, - D354980615875534000081D8 /* contacts_all_default.png in Resources */, - D354980815875534000081D8 /* contacts_all_selected.png in Resources */, - D354980A15875534000081D8 /* contacts_linphone_default.png in Resources */, - D354980C15875534000081D8 /* contacts_linphone_selected.png in Resources */, + D354980615875534000081D8 /* contacts_all_selected.png in Resources */, + D354980815875534000081D8 /* contacts_all_default.png in Resources */, + D354980A15875534000081D8 /* contacts_linphone_selected.png in Resources */, + D354980C15875534000081D8 /* contacts_linphone_default.png in Resources */, D354981015875608000081D8 /* contacts_add_default.png in Resources */, D354981215875608000081D8 /* contacts_add_over.png in Resources */, D354981A15876FE7000081D8 /* list_details_default.png in Resources */, @@ -2307,6 +2329,10 @@ D38D14AF15A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */, D38D14B115A30B3D008497E8 /* cell_call_hightlight.png in Resources */, D3196D2D15A3199D007FEEBA /* list_hightlight.png in Resources */, + D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */, + D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */, + D3196D3815A321E3007FEEBA /* options_transfer_default.png in Resources */, + D3196D3A15A321E3007FEEBA /* options_transfer_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2389,18 +2415,18 @@ D3ED3E7915861B1B006C0DE4 /* backspace_default.png in Resources */, D3ED3E7B15861B1B006C0DE4 /* backspace_over.png in Resources */, D3ED3E8A1586291E006C0DE4 /* UIMainBar.xib in Resources */, - D3ED3E9915872EF1006C0DE4 /* history_all_default.png in Resources */, - D3ED3E9B15872EF1006C0DE4 /* history_all_selected.png in Resources */, + D3ED3E9915872EF1006C0DE4 /* history_all_selected.png in Resources */, + D3ED3E9B15872EF1006C0DE4 /* history_all_default.png in Resources */, D3ED3E9D15872EF1006C0DE4 /* history_edit_default.png in Resources */, D3ED3E9F15872EF1006C0DE4 /* history_edit_over.png in Resources */, - D3ED3EA115872EF1006C0DE4 /* history_missed_default.png in Resources */, - D3ED3EA315872EF1006C0DE4 /* history_missed_selected.png in Resources */, + D3ED3EA115872EF1006C0DE4 /* history_missed_selected.png in Resources */, + D3ED3EA315872EF1006C0DE4 /* history_missed_default.png in Resources */, D3ED3EB4158738FB006C0DE4 /* HistoryViewController.xib in Resources */, D354980115875372000081D8 /* ContactsViewController.xib in Resources */, - D354980715875534000081D8 /* contacts_all_default.png in Resources */, - D354980915875534000081D8 /* contacts_all_selected.png in Resources */, - D354980B15875534000081D8 /* contacts_linphone_default.png in Resources */, - D354980D15875534000081D8 /* contacts_linphone_selected.png in Resources */, + D354980715875534000081D8 /* contacts_all_selected.png in Resources */, + D354980915875534000081D8 /* contacts_all_default.png in Resources */, + D354980B15875534000081D8 /* contacts_linphone_selected.png in Resources */, + D354980D15875534000081D8 /* contacts_linphone_default.png in Resources */, D354981115875608000081D8 /* contacts_add_default.png in Resources */, D354981315875608000081D8 /* contacts_add_over.png in Resources */, D354981B15876FE7000081D8 /* list_details_default.png in Resources */, @@ -2491,6 +2517,10 @@ D38D14B015A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */, D38D14B215A30B3D008497E8 /* cell_call_hightlight.png in Resources */, D3196D2E15A3199D007FEEBA /* list_hightlight.png in Resources */, + D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */, + D3196D3715A321E3007FEEBA /* options_add_over.png in Resources */, + D3196D3915A321E3007FEEBA /* options_transfer_default.png in Resources */, + D3196D3B15A321E3007FEEBA /* options_transfer_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2566,6 +2596,7 @@ D32460ED159DA47700BA7F3A /* CPAnimationSequence.m in Sources */, D32460EF159DA47700BA7F3A /* CPAnimationStep.m in Sources */, D32B9DFC15A2F131000B6DEC /* FastAddressBook.m in Sources */, + D3196D3E15A32BD8007FEEBA /* UITransferButton.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2638,6 +2669,7 @@ D32460EE159DA47700BA7F3A /* CPAnimationSequence.m in Sources */, D32460F0159DA47700BA7F3A /* CPAnimationStep.m in Sources */, D32B9DFD15A2F131000B6DEC /* FastAddressBook.m in Sources */, + D3196D3F15A32BD8007FEEBA /* UITransferButton.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 6478bde6f5b09bc9650e056bde3cc8e6a9807683 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 3 Jul 2012 17:44:43 +0200 Subject: [PATCH 028/397] Fix over History/Contacts filter buttons --- Classes/ContactsViewController.m | 17 +++++++ Classes/ContactsViewController.xib | 73 +++--------------------------- Classes/HistoryViewController.m | 12 +++++ Classes/HistoryViewController.xib | 9 ++-- 4 files changed, 41 insertions(+), 70 deletions(-) diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index e3f3df8a6..c5fa9e9b7 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -41,6 +41,15 @@ typedef enum _HistoryView { return [super initWithNibName:@"ContactsViewController" bundle:[NSBundle mainBundle]]; } +- (void)dealloc { + [tableController release]; + [tableView release]; + + [allButton release]; + [linphoneButton release]; + + [super dealloc]; +} #pragma mark - ViewController Functions @@ -53,6 +62,14 @@ typedef enum _HistoryView { - (void)viewDidLoad { [super viewDidLoad]; [self changeView: History_All]; + + // Set selected+over background: IB lack ! + [linphoneButton setImage:[UIImage imageNamed:@"contacts_linphone_selected.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+over background: IB lack ! + [allButton setImage:[UIImage imageNamed:@"contacts_all_selected.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; } diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index 6b6098c90..abc6f1e2e 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -46,7 +46,6 @@ 292 {106, 58} - _NS:9 NO @@ -61,10 +60,11 @@ 3 MC41AA - + NSImage contacts_all_selected.png + NSImage contacts_all_default.png @@ -84,7 +84,6 @@ 292 {{106, 0}, {106, 58}} - _NS:9 NO @@ -96,10 +95,11 @@ 0 NO - + NSImage contacts_linphone_selected.png + NSImage contacts_linphone_default.png @@ -112,7 +112,6 @@ 292 {{212, 0}, {108, 58}} - _NS:9 NO @@ -138,7 +137,6 @@ {320, 58} - _NS:9 @@ -155,7 +153,6 @@ 274 {{0, 58}, {320, 402}} - _NS:10 1 @@ -182,7 +179,6 @@ {320, 460} - _NS:9 @@ -370,7 +366,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -383,64 +379,7 @@ 84 - - - - ContactsTableViewController - UITableViewController - - IBProjectSource - ./Classes/ContactsTableViewController.h - - - - ContactsViewController - UIViewController - - id - id - - - - onAllClick: - id - - - onLinphoneClick: - id - - - - UIButton - UIButton - ContactsTableViewController - UITableView - - - - allButton - UIButton - - - linphoneButton - UIButton - - - tableController - ContactsTableViewController - - - tableView - UITableView - - - - IBProjectSource - ./Classes/ContactsViewController.h - - - - + 0 IBCocoaTouchFramework diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 3d49390fa..766282145 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -42,9 +42,13 @@ typedef enum _HistoryView { } - (void)dealloc { + [tableController release]; + [tableView release]; + [allButton release]; [missedButton release]; [editButton release]; + [super dealloc]; } @@ -69,6 +73,14 @@ typedef enum _HistoryView { // Set selected+over background: IB lack ! [editButton setImage:[UIImage imageNamed:@"history_ok_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+over background: IB lack ! + [allButton setImage:[UIImage imageNamed:@"history_all_selected.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+over background: IB lack ! + [missedButton setImage:[UIImage imageNamed:@"history_missed_selected.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; } diff --git a/Classes/HistoryViewController.xib b/Classes/HistoryViewController.xib index 446e0a4ac..76bab3437 100644 --- a/Classes/HistoryViewController.xib +++ b/Classes/HistoryViewController.xib @@ -61,10 +61,11 @@ 3 MC41AA - + NSImage history_all_selected.png + NSImage history_all_default.png @@ -96,10 +97,11 @@ 0 NO - + NSImage history_missed_selected.png + NSImage history_missed_default.png @@ -160,6 +162,7 @@ {{0, 58}, {320, 402}} + _NS:9 1 @@ -390,7 +393,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin From d0775cfaff1b4c9a7edbd794f4903fc783133d2c Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 4 Jul 2012 18:05:39 +0200 Subject: [PATCH 029/397] Start Wizard view --- Classes/DialerViewController.h | 2 +- Classes/FirstLoginViewController.xib | 238 ++-- Classes/LinphoneAppDelegate.m | 9 +- Classes/LinphoneManager.h | 3 +- Classes/PhoneMainView.m | 30 +- Classes/PhoneMainView.xib | 225 +--- Classes/WizardViewController.h | 56 + Classes/WizardViewController.m | 186 +++ Classes/WizardViewController.xib | 1367 +++++++++++++++++++++++ Resources/button_background_default.png | Bin 0 -> 3673 bytes Resources/button_background_over.png | Bin 0 -> 3584 bytes Resources/setup_back_default.png | Bin 0 -> 5052 bytes Resources/setup_back_over.png | Bin 0 -> 5122 bytes Resources/setup_cancel_default.png | Bin 0 -> 5933 bytes Resources/setup_cancel_over.png | Bin 0 -> 5840 bytes Resources/setup_label.png | Bin 0 -> 4318 bytes Resources/setup_start_default.png | Bin 0 -> 9482 bytes Resources/setup_start_over.png | Bin 0 -> 7832 bytes Resources/setup_title_assistant.png | Bin 0 -> 7973 bytes Resources/setup_welcome_logo.png | Bin 0 -> 17379 bytes linphone.xcodeproj/project.pbxproj | 88 +- 21 files changed, 1856 insertions(+), 348 deletions(-) create mode 100644 Classes/WizardViewController.h create mode 100644 Classes/WizardViewController.m create mode 100644 Classes/WizardViewController.xib create mode 100644 Resources/button_background_default.png create mode 100644 Resources/button_background_over.png create mode 100644 Resources/setup_back_default.png create mode 100644 Resources/setup_back_over.png create mode 100644 Resources/setup_cancel_default.png create mode 100644 Resources/setup_cancel_over.png create mode 100644 Resources/setup_label.png create mode 100644 Resources/setup_start_default.png create mode 100644 Resources/setup_start_over.png create mode 100644 Resources/setup_title_assistant.png create mode 100644 Resources/setup_welcome_logo.png diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index 10fa19e33..f08360063 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -24,7 +24,7 @@ #import "UITransferButton.h" #import "UIDigitButton.h" -@interface DialerViewController : UIViewController { +@interface DialerViewController : UIViewController { @private //Buttons UITextField* addressField; diff --git a/Classes/FirstLoginViewController.xib b/Classes/FirstLoginViewController.xib index 6f148cbb2..e989d7a04 100644 --- a/Classes/FirstLoginViewController.xib +++ b/Classes/FirstLoginViewController.xib @@ -48,7 +48,7 @@ {360, 480} - + NO NO 9 @@ -56,7 +56,47 @@ IBCocoaTouchFramework NSImage - wallpaper_iphone_320x480.png + numpad_background.png + + + + + 292 + {{33, 312}, {255, 50}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + Login + + 3 + MC4zMzMzMzMzMzMzAA + + + 3 + MC41AA + + + NSImage + button_background_over.png + + + NSImage + button_background_default.png + + + 2 + 20 + + + Helvetica-Bold + 20 + 16 @@ -65,12 +105,13 @@ {{60, 420}, {200, 37}} + NO NO IBCocoaTouchFramework 0 0 - + 3 MQA @@ -78,10 +119,7 @@ 1 MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - 3 - MC41AA - + Helvetica-Bold Helvetica @@ -94,46 +132,6 @@ 16 - - - 292 - {{60, 220}, {200, 31}} - - - - NO - NO - IBCocoaTouchFramework - 0 - 0 - - 3 - Password - - 3 - MAA - - 2 - - - YES - YES - 17 - - 1 - YES - IBCocoaTouchFramework - - - 1 - 12 - - - Helvetica - 12 - 16 - - 292 @@ -146,12 +144,13 @@ IBCocoaTouchFramework 0 - 3 Username 3 MAA - + + 2 + YES 17 @@ -159,42 +158,50 @@ 1 IBCocoaTouchFramework - - + + NSImage + setup_label.png + + + 1 + 14 + + + Helvetica + 14 + 16 + - + 292 - {{60, 320}, {200, 37}} + {{60, 220}, {200, 31}} - + NO NO IBCocoaTouchFramework 0 0 - 1 - Login - - - 5 - MSAwLjY2MDAwMDAyNjIgMCAwAA - - 3 - - 1 0.66 0 0 1 + + Password + + 3 + MAA + - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 + YES + YES + 17 + + 1 + YES + IBCocoaTouchFramework + + + @@ -207,7 +214,7 @@ {{142, 211}, {37, 37}} - + NO NO NO @@ -254,14 +261,6 @@ 56 - - - waitView - - - - 57 - siteButton @@ -290,9 +289,17 @@ loginButton - + - 61 + 65 + + + + waitView + + + + 57 @@ -310,15 +317,6 @@ 17 - - - onLoginClick: - - - 7 - - 62 - onSiteClick: @@ -328,6 +326,15 @@ 63 + + + onLoginClick: + + + 7 + + 66 + @@ -356,12 +363,12 @@ YES - - - + + + @@ -390,8 +397,8 @@ usernameField - 12 - + 64 + loginButton @@ -421,14 +428,14 @@ -1.IBPluginDependency -2.CustomClassName -2.IBPluginDependency - 12.IBPluginDependency - 12.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 31.IBPluginDependency 32.IBPluginDependency 35.IBPluginDependency 5.IBPluginDependency 55.IBPluginDependency 6.IBPluginDependency + 64.IBPluginDependency + 64.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 8.IBPluginDependency @@ -438,14 +445,14 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -460,7 +467,7 @@ - 63 + 66 @@ -577,8 +584,21 @@ YES 3 - wallpaper_iphone_320x480.png - {320, 480} + YES + + YES + button_background_default.png + button_background_over.png + numpad_background.png + setup_label.png + + + YES + {550, 101} + {550, 101} + {640, 523} + {542, 88} + 1181 diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 2fa9e57c8..d3428ce89 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -143,10 +143,15 @@ int __aeabi_idiv(int a, int b) { - (void)setupUI { if ([[LinphoneManager instance].settingsStore boolForKey:@"enable_first_login_view_preference"] == true) { // Change to fist login view - [[LinphoneManager instance] changeView: PhoneView_FirstLoginView]; + [[LinphoneManager instance] changeView: PhoneView_FirstLogin]; } else { // Change to default view - [[LinphoneManager instance] changeView: PhoneView_Dialer]; + const MSList *list = linphone_core_get_proxy_config_list([LinphoneManager getLc]); + if(list != NULL) { + [[LinphoneManager instance] changeView: PhoneView_Dialer]; + } else { + [[LinphoneManager instance] changeView: PhoneView_Wizard]; + } } [UIDevice currentDevice].batteryMonitoringEnabled = YES; diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 7818511b1..0079dd8e3 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -29,7 +29,8 @@ #include "linphonecore.h" typedef enum _PhoneView { - PhoneView_FirstLoginView, + PhoneView_Wizard, + PhoneView_FirstLogin, PhoneView_Dialer, PhoneView_History, PhoneView_Settings, diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 43be2d8cd..1a6cecd47 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -167,16 +167,28 @@ [viewDescriptions setObject:chatDescription forKey:[NSNumber numberWithInt: PhoneView_Chat]]; // - // IncomingCall View + // FirstLogin View // - UICompositeViewDescription *incomingCallDescription = [UICompositeViewDescription alloc]; - incomingCallDescription->content = @"FirstLoginViewController"; - incomingCallDescription->tabBar = nil; - incomingCallDescription->tabBarEnabled = false; - incomingCallDescription->stateBar = nil; - incomingCallDescription->stateBarEnabled = false; - incomingCallDescription->fullscreen = false; - [viewDescriptions setObject:incomingCallDescription forKey:[NSNumber numberWithInt: PhoneView_FirstLoginView]]; + UICompositeViewDescription *firstLoginDescription = [UICompositeViewDescription alloc]; + firstLoginDescription->content = @"FirstLoginViewController"; + firstLoginDescription->tabBar = nil; + firstLoginDescription->tabBarEnabled = false; + firstLoginDescription->stateBar = nil; + firstLoginDescription->stateBarEnabled = false; + firstLoginDescription->fullscreen = false; + [viewDescriptions setObject:firstLoginDescription forKey:[NSNumber numberWithInt: PhoneView_FirstLogin]]; + + // + // Wizard View + // + UICompositeViewDescription *wizardDescription = [UICompositeViewDescription alloc]; + wizardDescription->content = @"WizardViewController"; + wizardDescription->tabBar = nil; + wizardDescription->tabBarEnabled = false; + wizardDescription->stateBar = nil; + wizardDescription->stateBarEnabled = false; + wizardDescription->fullscreen = false; + [viewDescriptions setObject:wizardDescription forKey:[NSNumber numberWithInt: PhoneView_Wizard]]; // Set observers [[NSNotificationCenter defaultCenter] addObserver:self diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index c88d806f2..65c8bffa1 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -12,10 +12,9 @@ YES - IBUIButton - IBUIViewController - IBUIView IBProxyObject + IBUIView + IBUIViewController YES @@ -45,156 +44,12 @@ 3 MQA - + 2 IBCocoaTouchFramework - - - 292 - - YES - - - -2147483356 - {{0, 7}, {320, 65}} - - - - _NS:9 - - 3 - MQA - - - -1 - NO - IBCocoaTouchFramework - - - - 292 - {128, 72} - - - - _NS:9 - NO - - Contacts - - IBCocoaTouchFramework - 0 - 0 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - contact-over-add-call.png - - - NSImage - contact-actif-add-call.png - - - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{192, 0}, {128, 72}} - - - _NS:9 - NO - - Cancel - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - cancel-over.png - - - NSImage - cancel-actif.png - - - - - - - 292 - {{128, 0}, {64, 72}} - - - - _NS:9 - NO - - Dialer - - IBCocoaTouchFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - dialer-over.png - - - NSImage - dialer-actif.png - - - - - - - {320, 72} - - - - _NS:9 - - 1 - MCAxIDAuMTkxOTQ1NDc1NSAwAA - - NO - IBCocoaTouchFramework - NO UICompositeViewController @@ -249,37 +104,6 @@ - - 129 - - - YES - - - - - - - addCallTabBar - - - 130 - - - cancel - - - 131 - - - contacts - - - 133 - - - dialer - 152 @@ -289,12 +113,6 @@ root - - 169 - - - mask - 208 @@ -311,15 +129,7 @@ -1.IBPluginDependency -2.CustomClassName -2.IBPluginDependency - 129.IBPluginDependency - 130.IBPluginDependency - 130.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 131.IBPluginDependency - 131.IBUIButtonInspectorSelectedStateConfigurationMetadataKey - 133.IBPluginDependency - 133.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 152.IBPluginDependency - 169.IBPluginDependency 208.CustomClassName 208.IBPluginDependency @@ -330,14 +140,6 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICompositeViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -443,27 +245,6 @@ YES 3 - - YES - - YES - cancel-actif.png - cancel-over.png - contact-actif-add-call.png - contact-over-add-call.png - dialer-actif.png - dialer-over.png - - - YES - {254, 144} - {254, 144} - {254, 144} - {254, 144} - {128, 154} - {128, 154} - - 1181 diff --git a/Classes/WizardViewController.h b/Classes/WizardViewController.h new file mode 100644 index 000000000..d1115d1f4 --- /dev/null +++ b/Classes/WizardViewController.h @@ -0,0 +1,56 @@ +/* WizardViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface WizardViewController : UIViewController { + UIView *contentView; + + UIView *welcomeView; + UIView *choiceView; + UIView *createAccountView; + UIView *connectAccountView; + UIView *externalAccountView; + + UIButton *backButton; + UIButton *startButton; + + NSMutableArray *historyViews; +} + +@property (nonatomic, retain) IBOutlet UIView *contentView; + +@property (nonatomic, retain) IBOutlet UIView *welcomeView; +@property (nonatomic, retain) IBOutlet UIView *choiceView; +@property (nonatomic, retain) IBOutlet UIView *createAccountView; +@property (nonatomic, retain) IBOutlet UIView *connectAccountView; +@property (nonatomic, retain) IBOutlet UIView *externalAccountView; + +@property (nonatomic, retain) IBOutlet UIButton *backButton; +@property (nonatomic, retain) IBOutlet UIButton *startButton; + +- (IBAction)onStartClick:(id)sender; +- (IBAction)onBackClick:(id)sender; +- (IBAction)onCancelClick:(id)sender; + +- (IBAction)onCreateAccountClick:(id)sender; +- (IBAction)onConnectAccountClick:(id)sender; +- (IBAction)onExternalAccountClick:(id)sender; + +@end diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m new file mode 100644 index 000000000..e3b1c4cb2 --- /dev/null +++ b/Classes/WizardViewController.m @@ -0,0 +1,186 @@ +/* WizardViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "WizardViewController.h" + +#import + +#import "LinphoneManager.h" + +typedef enum _ViewElement { + ViewElement_Username = 100, + ViewElement_Password = 101, + ViewElement_Password2 = 102, + ViewElement_Email = 103, + ViewElement_Domain = 104, + ViewElement_Label = 200, + ViewElement_Error = 201 +} ViewElement; + +@implementation WizardViewController + +@synthesize contentView; + +@synthesize welcomeView; +@synthesize choiceView; +@synthesize createAccountView; +@synthesize connectAccountView; +@synthesize externalAccountView; + +@synthesize backButton; +@synthesize startButton; + +#pragma mark - Lifecycle Functions + +- (id)init { + self = [super initWithNibName:@"WizardViewController" bundle:[NSBundle mainBundle]]; + if (self != nil) { + self->historyViews = [[NSMutableArray alloc] init]; + } + return self; +} + +- (void)dealloc { + [contentView release]; + + [welcomeView release]; + [choiceView release]; + [createAccountView release]; + [connectAccountView release]; + [externalAccountView release]; + + [backButton release]; + [startButton release]; + + [historyViews release]; + + [super dealloc]; +} + + +#pragma mark - ViewController Functions + +- (void)viewDidLoad { + [self changeView:welcomeView back:FALSE animation:FALSE]; +} + + +#pragma mark - + ++ (UIView*)findTextField:(ViewElement)tag view:(UIView*)view { + for(UIView *child in [view subviews]) { + if([child tag] == tag){ + return (UITextField*)child; + } else { + UIView *o = [WizardViewController findTextField:tag view:child]; + if(o) + return o; + } + } + return nil; +} + +- (UITextField*)findTextField:(ViewElement)tag { + UIView *view = [WizardViewController findTextField:tag view:contentView]; + if([view isKindOfClass:[UITextField class]]) + return (UITextField*)view; + return nil; +} + +- (UILabel*)findLabel:(ViewElement)tag { + UIView *view = [WizardViewController findTextField:tag view:contentView]; + if([view isKindOfClass:[UILabel class]]) + return (UILabel*)view; + return nil; +} + +- (void)changeView:(UIView *)view back:(BOOL)back animation:(BOOL)animation { + if (view == welcomeView) { + [startButton setHidden:false]; + [backButton setHidden:true]; + } else { + [startButton setHidden:true]; + [backButton setHidden:false]; + } + + if(animation) { + CATransition* trans = [CATransition animation]; + [trans setType:kCATransitionPush]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + if(back) { + [trans setSubtype:kCATransitionFromLeft]; + }else { + [trans setSubtype:kCATransitionFromRight]; + } + [contentView.layer addAnimation:trans forKey:@"Transition"]; + } + + NSArray *childs = [contentView subviews]; + if([childs count]> 0) { + UIView *childView = [childs objectAtIndex:0]; + if(!back) + [historyViews addObject:childView]; + [childView removeFromSuperview]; + } + + [contentView addSubview:view]; + +} + + +#pragma mark - UITextFieldDelegate Functions + +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + [textField resignFirstResponder]; + return YES; +} + + +#pragma mark - Action Functions + +- (IBAction)onStartClick:(id)sender { + [self changeView:choiceView back:FALSE animation:TRUE]; +} + +- (IBAction)onBackClick:(id)sender { + if ([historyViews count] > 0) { + UIView * view = [historyViews lastObject]; + [historyViews removeLastObject]; + [self changeView:view back:TRUE animation:TRUE]; + } +} + +- (IBAction)onCancelClick:(id)sender { + [[LinphoneManager instance] changeView:PhoneView_Dialer]; +} + +- (IBAction)onCreateAccountClick:(id)sender { + [self changeView:createAccountView back:FALSE animation:TRUE]; +} + +- (IBAction)onConnectAccountClick:(id)sender { + [self changeView:connectAccountView back:FALSE animation:TRUE]; +} + +- (IBAction)onExternalAccountClick:(id)sender { + [self changeView:externalAccountView back:FALSE animation:TRUE]; +} + +@end diff --git a/Classes/WizardViewController.xib b/Classes/WizardViewController.xib new file mode 100644 index 000000000..6a6efb1c4 --- /dev/null +++ b/Classes/WizardViewController.xib @@ -0,0 +1,1367 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUITextField + IBUIButton + IBUIImageView + IBUIView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 292 + {320, 394} + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + numpad_background.png + + + + + 292 + {320, 394} + + + _NS:9 + + 3 + MCAwAA + + NO + IBCocoaTouchFramework + + + + 274 + + + + 292 + {160, 77} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + + 3 + MC41AA + + + NSImage + setup_cancel_over.png + + + NSImage + setup_cancel_default.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{160, 0}, {160, 77}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + setup_start_over.png + + + NSImage + setup_start_default.png + + + + + + + -2147483356 + {{160, 0}, {160, 77}} + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + setup_back_over.png + + + NSImage + setup_back_default.png + + + + + + {{0, 383}, {320, 77}} + + + _NS:9 + + IBCocoaTouchFramework + + + {320, 460} + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 292 + + + + 274 + {{60, 80}, {201, 129}} + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + setup_welcome_logo.png + + + + + 292 + {{40, 313}, {240, 44}} + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + This assistant will help you to use a SIP account for your calls. + + 3 + MC4zMzMzMzMzMzMzAA + + + 0 + 10 + 2 + 1 + + 1 + 12 + + + Helvetica + 12 + 16 + + + + {320, 460} + + + _NS:9 + + IBCocoaTouchFramework + + + + 292 + + + + 274 + {{31, 50}, {258, 24}} + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + setup_title_assistant.png + + + + + 292 + {{33, 141}, {255, 50}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + Create an account on linphone.org + + + + NSImage + button_background_over.png + + + NSImage + button_background_default.png + + + 2 + 13 + + + Helvetica-Bold + 13 + 16 + + + + + 292 + {{33, 205}, {255, 50}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + I have already a linphone.org account + + + + + + + + + + 292 + {{33, 269}, {255, 50}} + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + I have already a SIP account + + + + + + + + + {320, 460} + + + _NS:9 + + IBCocoaTouchFramework + + + + 292 + + + + 274 + {{31, 50}, {258, 24}} + + + _NS:9 + NO + IBCocoaTouchFramework + + + + + 292 + {{39, 80}, {240, 44}} + + + _NS:9 + NO + YES + 7 + 200 + NO + IBCocoaTouchFramework + Enter you username and password with your SIP domain + + + 0 + 10 + 2 + 1 + + + + + + 292 + {{32, 140}, {255, 31}} + + + _NS:9 + NO + YES + 100 + IBCocoaTouchFramework + 0 + + Username + + 3 + MAA + + + YES + 17 + + IBCocoaTouchFramework + + + NSImage + setup_label.png + + + 1 + 14 + + + Helvetica + 14 + 16 + + + + + 292 + {{32, 185}, {255, 31}} + + + _NS:9 + NO + YES + 101 + IBCocoaTouchFramework + 0 + + Password + + 3 + MAA + + + YES + 17 + + YES + IBCocoaTouchFramework + + + + + + + + 292 + {{32, 230}, {255, 31}} + + + _NS:9 + NO + YES + 102 + IBCocoaTouchFramework + 0 + + Password + + 3 + MAA + + + YES + 17 + + YES + IBCocoaTouchFramework + + + + + + + + 292 + {{32, 275}, {255, 31}} + + + _NS:9 + NO + YES + 104 + IBCocoaTouchFramework + 0 + + Email + + 3 + MAA + + + YES + 17 + + IBCocoaTouchFramework + + + + + + + + 292 + {{33, 330}, {255, 50}} + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + Register + + + + + + 2 + 20 + + + Helvetica-Bold + 20 + 16 + + + + {320, 460} + + + _NS:9 + + IBCocoaTouchFramework + + + + 292 + + + + 274 + {{31, 50}, {258, 24}} + + + _NS:9 + NO + IBCocoaTouchFramework + + + + + 292 + {{40, 80}, {240, 44}} + + + _NS:9 + NO + YES + 7 + 200 + NO + IBCocoaTouchFramework + Enter you username and password of your linphone.org account + + + 0 + 10 + 2 + 1 + + + + + + 292 + {{32, 330}, {255, 50}} + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + Sign in + + + + + + + + + + 292 + {{32, 185}, {255, 31}} + + + _NS:9 + NO + YES + 101 + IBCocoaTouchFramework + 0 + + Password + + 3 + MAA + + + YES + 17 + + YES + IBCocoaTouchFramework + + + + + + + + 292 + {{32, 140}, {255, 31}} + + + _NS:9 + NO + YES + 100 + IBCocoaTouchFramework + 0 + + Username + + 3 + MAA + + + YES + 17 + + IBCocoaTouchFramework + + + + + + + {320, 460} + + + _NS:9 + + IBCocoaTouchFramework + + + + 292 + + + + 274 + {{31, 50}, {258, 24}} + + + _NS:9 + NO + IBCocoaTouchFramework + + + + + 292 + {{40, 80}, {240, 44}} + + + _NS:9 + NO + YES + 7 + 200 + NO + IBCocoaTouchFramework + Enter you username and password with your SIP domain + + + 0 + 10 + 2 + 1 + + + + + + 292 + {{33, 140}, {255, 31}} + + + _NS:9 + NO + YES + 100 + IBCocoaTouchFramework + 0 + + Username + + 3 + MAA + + + YES + 17 + + IBCocoaTouchFramework + + + + + + + + 292 + {{33, 185}, {255, 31}} + + + _NS:9 + NO + YES + 101 + IBCocoaTouchFramework + 0 + + Password + + 3 + MAA + + + YES + 17 + + YES + IBCocoaTouchFramework + + + + + + + + 292 + {{33, 230}, {255, 31}} + + + _NS:9 + NO + YES + 103 + IBCocoaTouchFramework + 0 + + Domain + + 3 + MAA + + + YES + 17 + + IBCocoaTouchFramework + + + + + + + + 292 + {{34, 330}, {255, 50}} + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + Sign in + + + + + + + + + {320, 460} + + + _NS:9 + + IBCocoaTouchFramework + + + + + + + view + + + + 20 + + + + startButton + + + + 26 + + + + backButton + + + + 27 + + + + welcomeView + + + + 28 + + + + contentView + + + + 29 + + + + choiceView + + + + 40 + + + + createAccountView + + + + 70 + + + + connectAccountView + + + + 71 + + + + externalAccountView + + + + 72 + + + + onStartClick: + + + 7 + + 25 + + + + onBackClick: + + + 7 + + 23 + + + + onCancelClick: + + + 7 + + 24 + + + + onCreateAccountClick: + + + 7 + + 42 + + + + onConnectAccountClick: + + + 7 + + 41 + + + + onExternalAccountClick: + + + 7 + + 43 + + + + delegate + + + + 86 + + + + delegate + + + + 87 + + + + delegate + + + + 88 + + + + delegate + + + + 85 + + + + delegate + + + + 81 + + + + delegate + + + + 80 + + + + delegate + + + + 82 + + + + delegate + + + + 83 + + + + delegate + + + + 84 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 12 + + + + + + + + + + 13 + + + + contentView + + + 14 + + + + + + + + tabBar + + + 15 + + + background + + + 16 + + + startButton + + + 17 + + + backButton + + + 18 + + + cancelButton + + + 21 + + + + + + + welcomeView + + + 19 + + + iconImage + + + 22 + + + label + + + 33 + + + + + + + + + choiceView + + + 36 + + + createAccountButton + + + 37 + + + titleImage + + + 38 + + + connectAccountButton + + + 39 + + + externalAccountButton + + + 44 + + + + + + + + + + + + createAccountView + + + 48 + + + titleImage + + + 52 + + + + + + + + + + connectAccountView + + + 53 + + + titleImage + + + 56 + + + + + + + + + + + externalAccountView + + + 57 + + + titleImage + + + 58 + + + label + + + 59 + + + usernameField + + + 60 + + + passwordField + + + 61 + + + domainField + + + 62 + + + signInButton + + + 64 + + + signInButton + + + 66 + + + passwordField + + + 67 + + + label + + + 68 + + + usernameField + + + 73 + + + label + + + 74 + + + usernameField + + + 75 + + + passwordField + + + 76 + + + password2Field + + + 77 + + + registerButton + + + 79 + + + emailField + + + + + WizardViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 88 + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {550, 101} + {550, 101} + {640, 523} + {320, 154} + {320, 154} + {320, 154} + {320, 154} + {542, 88} + {320, 154} + {320, 154} + {516, 48} + {402, 258} + + 1181 + + diff --git a/Resources/button_background_default.png b/Resources/button_background_default.png new file mode 100644 index 0000000000000000000000000000000000000000..31efad8aaec582024a47f09a70e10c2b14d02ae7 GIT binary patch literal 3673 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 literal 0 HcmV?d00001 diff --git a/Resources/setup_back_default.png b/Resources/setup_back_default.png new file mode 100644 index 0000000000000000000000000000000000000000..d71825b83ba2b4d072c44e867f7c6c1d7e011b40 GIT binary patch literal 5052 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 literal 0 HcmV?d00001 diff --git a/Resources/setup_back_over.png b/Resources/setup_back_over.png new file mode 100644 index 0000000000000000000000000000000000000000..ed550a18dfaa76484621f4c682860da866cec92c GIT binary patch literal 5122 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 literal 0 HcmV?d00001 diff --git a/Resources/setup_cancel_default.png b/Resources/setup_cancel_default.png new file mode 100644 index 0000000000000000000000000000000000000000..43635712ef9953e18a641d8b896053efcb92e5e3 GIT binary patch literal 5933 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 literal 0 HcmV?d00001 diff --git a/Resources/setup_label.png b/Resources/setup_label.png new file mode 100644 index 0000000000000000000000000000000000000000..7b8cb1ed528dbbaed9e9f3091c1796f410233cac GIT binary patch literal 4318 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 literal 0 HcmV?d00001 diff --git a/Resources/setup_start_default.png b/Resources/setup_start_default.png new file mode 100644 index 0000000000000000000000000000000000000000..8719b6507daee05e2ec54594133dc6e8f02f6027 GIT binary patch literal 9482 zcmbVyWmH_-@@M1j4#66CXx!a{yVF1i2o8-C+)3~d+%-UOf_s8H!3i$GEl9BGd*8cn zX4bs*|1js%u6;^>Rkdrcbxw??x*`@jIXVCUz*1I{(*^+Gq+shzRAktyM!ujIMvy_} z4WT+NZ=l{_cL+e*#>EOkqwEB>g=j;-Hok7d5HSD%;f=knA=FUqwTQKg6DRmD9!?)8 zSC}*aASUVK3buBDKxwQXw)W2Az_a#lAdS6^IM9G!ja$uC7Gh_w%X?SfHZ%zKpn(^|8mMuO_N5}#T`P! z&&kbU%`L!9Bf!JS!^94r{=JtSU zL;klL|CQTA*Vh%or48|L@pQL_<>L+AKf*BV{%1pfF~YnN(QvniB?as#=VI;Y1aXEc z%ZUSFZ#Zr2ZA7?vgt&Ql1o^lHLEHjDJUr40va-T5vVsZ%vVz>g(mem@_;0ejJRn&a zd08PDULKeZc^)BoL3tS&IRyoN1#Vt`KJI^Hm7P7HU}tN{KX&b5cK^u$ht$o zP#1Sy7Z=BWDnQfD1?u8q=i*8utHV#D2DY|${)_%AJ^zYU4&rX_1+h_ZcX6Wm8($Io z|6*TIT0sHCD=5gr{ja!%`4!})x#bn)WI)_B2(uWcMX(tYh3^tx>_t2kTc_5oI}PU7uwu8`wiS77U@`5Ui{BM$~>t{1zDS zGI4%2=q;3&l#GjLyn$Z)Hh2*`PXwx}4EMft9{WYID@f3;C_M(8h>$7dT3^K2zb+Ys zT!SF|@&aBg@9p9KrtIM=!tMLQf&8%TLMBIT{$}yOmYXy-;{}sJW}S2~gOp4tos3K< zBwbcNc=IYR2(z0j?~UOuxCgg+`%p?GF{$9!MNs6+%X6Rn^W*(Ew?S6cW>L79>~k6h zCOdl-f{CVw+f~m}uIW12wXhK>70844I?q?VdD~7urS|c0MDyu@3n77<34wrM)>0{~ z-15o-57|6vI@FI;*tKNFg*&p&ZTN!#u>z$KAtfrV)cdej4S2^o3aoO35Nt!#;;qDQ zQ@rd;*x_D2Qj1g;d5Cj%cWB2ckF*VNqvfR~w?TXzx%YAwJn6uFV@Tcw=uj z%r;qj(*?6zBFIvy>oy8FI9)u9GeYm(^=M^yA470@AiXQ4$+&bL_aP+5x-p-zbIF41 zH%iT8@Qt!m{skFEtZbtY9@6h7>K!6pJ|}kO+9z9|^EkKjQfU=R!DXfbWB_WYXYWZdzB1Cn2o24tc?-*GH4%rG;NnCm(AfBnps`+C6S11T@qI~XM1C|gPzGOo zGTpx|OZ2@8E;TOK1#uds*O}$%%2LMto<91Ypk%;#p}fS{590=3;2a?!@FUf`VwE>b z!Qj*&+mK=1ucAU?+6y?uBmMFb`%7uRCXKLKeRYFLc4qVsinBVV6*On~upARc@>k6W zN|2TukeK9qCyS@xyBkMS!Iz6Yk4^6fXLyN4`5m#B7L^lvJ+r6a*GrKyB#;$QNr`g) ztfdf1ezhd7e5fjS8LEPl5!Q@wzeer2Z z^oeZ|G0+A8vr3MtIPq3JQ^Hr_nyX5LrkXd=$>oLwO{N#8E5CzKHYjl_m)K&7sH@&p ze_p;u@<*A1voLA7=+Jn5^LG46r3obFIdQme9vY}os-LAv>0H4%k3o+Kl(cWZ?R8rN ze;VgmO~_#L_F@q!D}NP0h>@4GK0G z+sfmj!%DC@Lt~?r28Hh>G3b2weFGGa7rNk;EGGvO3RB-j{m^iEtKh$~YwWtfa(-R3P>URC zi8iKv!|~>Or1vrQVJ^y$jUq5iw#KW^?jcw z9;(V~v7zvGf)^lM%D_qtbcpXko69krxxBd~C%yM5ZrW{Pandt4xEB_RejFR|noLVfzu>ru%! z%`ck7*3K54C7)i{wQEVZQ14q6z8(GT&&C_G!7DQRi3x%WqT(H0wi(+OA?ekpBt<`i z((1CxJCzU|;$RDTg4X1S3R5zBBLY7-a|3406FDl9k@{jZ+Kl%=-0KO?v)Dp>+k=** z>z&qL0r|+~aBqWGVya&!5@fJ)o-IA|^54C)Py<3sSgm(Ezu_wAV1L;^EK@*XRZAV= zQxfW6DsY6njQmQfu*U{bEr)tZ(SxzG+qvytBT@yz48p)X+yxsq{Q+7NptaCj= z5c#ANvDeFbDrV$XQRf5i zYDsnTxk!q$hH1}(qv{hv0P!fGp3XiOUWR~ z5E)s4J{sL5g-)u%&Gsz#^bD^b)tSQx>q`8s)nBPJG$dNXh(Bb~un{B4g05l<6$m4S z>w+aqD2QlhCr@I{v$M|rC`gMg2BbRe<$YXexEY50W`>_Qk?h&at8yZ^wXP$T(vQ*M zmJH2Jqn{g7TkgZ-%Oote-i=@8D;^eR7Ly3Dc@90zH6!wzi-u68HD> z6=vz2Gk+5&yC^RUDtOcHX2y@QQ0Ch*ic|aNiorBH;rzru>O$Eg?=X!_peFQWj`x?b z@Oxlwz@(mpscpQ#)T&uj;8mtEPiyEQn-rIVf`3`Z<7=K*&>Q3t!bW7nU5x0zRF!@ZJD-zo%hvN!wi z^fBvxN6LLYjJVzEZK3$|%yFQFi=c#ztgJgnlG*Z<5S9>hCqE8g*U_~B#G%J>OZ7W$ ze^90*NcxJbnyK>Rp=sej?8}YA+lrX@E04hjd*QV*wX^R{c9={gE+f~Dsar-KM5eg+ z2M+S!p`jnd+(a~5$Wk1E>u@yg!QZpApr*Z~M5ifOO2?!W21zN}?qon(gmewG%RKez z{maiiC5rLv>|#xthI2?$(5D!>D?7VNTxn61l1R(_D?>bDiN`(kty%5}Q;-e;Eoc5ynHmonuf=IXZkQ1(crbSRveUk^y#Cl6q-j~(H?#kF0W3yh1 zQUMx-7HRrbR#f{&2YuOBU&zv9Y#L3B^rvUl@*OY;zKBQadU>EU>CaL!Apwh1$<@4An7i-(ea<)vYxHBS2B zZym)8Xx=VJS2V71`<9)}-pWN?KtJQq2P5K?m|hx|4t@MhI-aL7wI_ee>`u(ozd$za zn=pBbzIxHvN0=>g9G~nXbr@`Efn~ih^dRDCWb3AQEtMLB1!l!%PJqD=%j!vpJ5vT!J z1lFwzW*#|>CSxEBkz;?Uu;N!^$IvVu8Y{6e5*AA1SfCq!83%mFVE-JQ7->;qIcAyk zNJj4{%wbk1!}kdv!RH+UKSkg#4ERd2z>2sCgFjt?Yk2#yn^u4tjYM2Srd0USxGhdN z9idyb)?O za>27wEO?r0Keo%}Xr|k%Y{<5*DY`7R?GJKIS6$2*;?d`5#s0s`bjXS)m>oIs8!Sy1 zc(+KOGy{#ex(7(qzKs&-gMvSXO?pmirwl~ltW&05YS%iiyE#hCu+Zp|4d4x6O*7O7 z%oSa)&G@?FoFsjmv6r|U$hmSomXS;gdQo&#adE@+(E~uIGu3+!C2$mdELe|sQJEW1 zf_e%0qiS+9MdS%O?vfw$wO^-OKuECazNdY zGrjwsZSUj%lMj!itu6rr#=NEkM#2IkjoaYs>9L5lUD#%OVJ)i7UgEaFh0o`;^VH1u zlrl8z%-Xs|Cc?3Yv8kh?roi_Ze0`4OC*H@TCF=EuS&PEk$vTHp!hX%5)IH{fF_zpD4uoKw2^HRUHS-F6_vz;J&ubf2`n*&N!}<^I4f z_PlF;06)}no#|?E?g|hQa8!&ay2E0aYoMh?4}Ie~)x{X6!-g6~tF%BVvxjH-t>!j# zYd%*=>7ao>2i@2K)ABW5D%Q8OA;MQ`jwty%w8LRu7hSCRqbBVDQ1#Hg?9I2PRJ>W+ zK^AH-AWDJ3{d%OC_sOUBXDScXH=CL25l`CFE9*{~_oQq3bPsJ(Rev7IsI}o|!x|H{ za2rx=Egz<_gHTCGd+xTFC_eIMlTOur>C|W&s1r;=Z862M*Xdtw)}ONxxpEeP_Q#g? zceNs&IZ6gwixZF8=v9Hh$gV;F{%!+VB8Mf2Kw2s3-K^)BN|sNc9|Hcq2w3$XKv3;; zNubj5hk(_$w9fjMbP1h>--cK#R)DCaSM5w7Ew!uJxM{DY8U8u!JEfwKB~LvivxCs1 z*&Oforyuq{!-Q!rPiDsAyx@`JPpkgf0|4T>@K}LAuTxj~83@>zvdZy#%{^U^o3)i* zGqX{pCo1HXZB?H{K@ybv2+z?RD84G#A=kcA6OyK|`shHrYX~n9UEDv)M46#W?l0P2 zcfaFHAF->7I$HK^>;x3N8>}(l|Jh;tn;!~Gl23XpifHuhqhe|>Mhx2B)=-ep;-TcVP%t{GR!ehJ;?VS zM!T}a*SS6+Ci?xYU{VR>TA4I%&h0yuoBmysp8w1o*dUIBv*8Ke*5g_`7=ko@j$f_# zpi>?DJkEiJQ^~Z9x#6Q3_iGr^_@|`=U}h0fcB^VHV!^{pzq9{NCQeL|@qSb=i*i^mHm1$T1-)jO3C#e|4HL@9_Mi?zn~a)<8hWuF~!4 zDoYHygl;Y=e4Q4_nZ<64%GHU|I)6K0JF`D^g!sgEg6xN4v?%+8jzEfn7eH&O<%%k@ zTT> zMm1iW<`kS)oFs9gtz>Vq*&5x!9vIcbBqn{SC(^v zSM@c#!gsGOGp-^zsTxOkEK30I8?m%sDXoaM-8VNNRdI(OEgjY&!Sc#ZjPTb5Mdy)SR=z|LwGXs>bgP~yVNvY19p!( z+tlReI0SUGnaozN0}$qRQ2%_o_{{~M1OVa#ne$g8s9rUrn4a1BpP043Tgu58+`kA$@dn;bLja3rO*VRIY*Eofd%E%F;0mb-inEy+c` zZe;4@Y!5}F%~G=j>0TftF_#GzT8~z|{o*$z0 z-)Yv$-Or#f9C~uzEnEU=1&1d#Hi}&LKWNXysw&EjF3)@9iPhMhHd@m&YG1`pKQ?tr z;Ug(2Jw?BDNi7XmEtHFp>s!V(();)+Db3}yp#1fpONY|h58?3iHcq2mHnB3S%GJIU z^TzpwARZPD`u+Rq4h~c#rRLA!Ge8w42Fsk~;`vw_744G!!1PjGt7rW*A|xdNW6*GO z;jUbYx&%-C#B;Te<5qnQyL`mO=hWi9-(t@|tzZ*#RC_P|BJ*0?1m$pz> z+gL>x4rkSi*wWS@q0Q!eO$^^gUYB)z4qvTlr{Ov<4<(r!&KW|hYc^@}j3b$&KEqv& z>kfyQ?lffO{>W$gX(5Io+>z_p`(!EZ7cYSret6;ulN1%a49sOzS{R1mn!(|?GI01Z zL;B&{0Aj$UPg6i83 zlby(;&ES=^B$_i1S!OBiD99I38N#09#`*X|(+DAPltrkXsa*D1<4@eNT-l591@M06 z`E=aP*4`xcCNvOl-R}?cPa#nk8#^OH+5&*`TCt=YJm%EF@_7JtnnAd+Dc`PB6)35Y zXjt=?%|Z7~tWnp|mg>c*tO5D2wTD%1DvFG$7)?3Sn=7rzV)FTrg0RE8bG+lj)9q;* z3ghS4$DJ*F^SbD`EKtkKlpZ)aD+l?z0$ox8y%gI8xt2(yXxqj$R*(CujsQRM_2&of zJ+Y5=Y{jT(uq+nui~;9?`YGd9;ANHC56s z8=@B9n@J^D!Nnr0s~qL!B6&PPb=4(FMbRI|^&t{yQwDPZE_pl?8G`zL^;TxYN{8IP z0JY}CVbE-$bMPA1G>}Ik=o_H;bJNv6lr@0uBcOW3 zOD1F4yZ7)&aP$QPinn-rK->$cowdp80dwzk5M+ooFZbyEQS_b{V8qi}tWC>RWMMsZ zMMX*t_%Ps5`N;paCd|j^&&!UVpW88}pE3E=%1r3{6tvMTLmw3ezc_+lu5aPz8*}Ti zS}ME&)XxJyNb}e>L?1G3R8L?)RK~Hp?-Ld_C;42|9Utk$`2VKh0lV<%;QfRc*TK~2x#gGfY z8gAGXuUBX0OI18#s;371wPWBx`E<2|I=9F?w-Fd{`$sz9QiH3Ld)-lFpYV zgUs-^$=T7W-87DO&K+YHadsl2b#2$_i4_ae7(Y7t9rw##gd)q< zGefh6X^P73F!5nMaAMnAPSC>-$v+WFpZj$%nbO7i0pm@NyU;6z>J`oi>aTo!Z@fK- zE!y32GC`cF)IB;C&`+4Tv z)Dggrsuf zJcOxEBP-k|t&A5JpJ!l)IfeS=E6Y}~c@z^OP6u>R72_~?cWK<4`M1jVi+TLpii)d)hVB(mr(ZCo}qfnQpk&7k`3uQmgeN-*p+sq`qUA~5=5*Dr;wPHG)LlqT#wZhVLmT{{SKuCiFxAY29qaOGt zsz%k^;LFqgks=+dD85D09Lm@oF}jxjj&<3@=8q2Q(hkQW7LO7pgMmSHELf$q(NG)u zKvg#Pyr^9q3Yu(8#qE>iXV?ylh3H6B^oSYJ;c~ML2XrkJJ6nyeNE6n!A=R+4cL>i$ z?#hAYJfm|r?t>?)Iq>|38sUT2uj6DRi%+draOT-)ed<_DQKn&|b^fs6ezQsTX1i?~ z?`=@tPy#vzSo9V?+MToG=ps_j}jNw=}0iMqJsaP!2i!k{>#~zc5nZ? zlb?mY9aF2z#2W=6z|+NFE{hV5gr5XiuP7lZK|wGioO(z^-|^|)SGVmKV+dzCbqq-TEdtC5r{r}jQMuSvsu31}<2#jhJTU-jxcO4zh%MpG_` z8OWUhk>1L?smV@3(MTNTX@pjZJ8A!lG<&1qU z`_#36HA=z?tjjw=Q$3mvEssp3X#gRU&85I zg!mcd+45-d19z%)lAW|&>mIxO`Z$Kg6(oX+aRU{THgp;)AL8pN?>R5cVK9o=(6sAf z#{xJBEy#ySmjVM6EyJM>Sz~4@4#|6`qPx076*7xSLkj3k5EG-Hl_2}-)PpwpDZ>u{ zh9ngerl17ab>CD3r_BOR2>uFnES9ev1K2#f@o$Er^6|0)-tSmC=!qL$s;e% z!>xB{oUFWm-<4Kt%w#lH#vtC<8$~;A%`uc%T_%Wg!r}0-rR>GC>vB=bXMVj!Vvrv8 zvN2PBQ-AV&Jac1^8lTqKcxzVlmCh*<2(h0$8Y%yrLlMgU@}z5cs5oEm*b2S#L}uZ;#HH z2U&iiBt75L3;ViclRL!Z!S1D1EN%%-{JqMc4uenAKqh4mwvV&n4BWJy5vjvK!6eIS z^(Y}Yr+BSet~&v+kLk29G8`8@5m$y;N(Qw6fcD=v68$!V5(IZ-B}66`|N1*g NSzcZ4i;QLH{{l}cXe|H$ literal 0 HcmV?d00001 diff --git a/Resources/setup_start_over.png b/Resources/setup_start_over.png new file mode 100644 index 0000000000000000000000000000000000000000..160a9e1c2c6bbff99469b53220988a8f7f262b48 GIT binary patch literal 7832 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 Date: Thu, 5 Jul 2012 18:06:24 +0200 Subject: [PATCH 030/397] Change observers strategy Start chat views --- Classes/ChatRoomTableViewController.h | 29 + Classes/ChatRoomTableViewController.m | 60 ++ Classes/ChatRoomViewController.h | 44 ++ Classes/ChatRoomViewController.m | 160 +++++ Classes/ChatRoomViewController.xib | 580 ++++++++++++++++++ Classes/ChatTableViewController.h | 4 +- Classes/ChatTableViewController.m | 34 +- Classes/ChatViewController.h | 7 +- Classes/ChatViewController.m | 43 +- Classes/ChatViewController.xib | 40 +- Classes/ContactsTableViewController.h | 2 +- Classes/ContactsTableViewController.m | 3 +- Classes/ContactsViewController.h | 4 +- Classes/ContactsViewController.m | 15 + Classes/Data/ChatData.h | 13 + Classes/Data/ChatData.m | 13 + Classes/DialerViewController.h | 4 +- Classes/DialerViewController.m | 59 +- Classes/DialerViewController.xib | 12 +- Classes/FirstLoginViewController.h | 4 +- Classes/FirstLoginViewController.m | 69 ++- Classes/HistoryTableViewController.h | 2 +- Classes/HistoryTableViewController.m | 9 +- Classes/HistoryViewController.h | 3 +- Classes/HistoryViewController.m | 13 + Classes/InCallTableViewController.h | 2 +- Classes/InCallViewController.h | 3 +- Classes/InCallViewController.m | 215 ++++--- Classes/IncomingCallViewController.h | 5 +- Classes/IncomingCallViewController.m | 46 +- Classes/LinphoneAppDelegate.m | 6 +- Classes/LinphoneManager.h | 24 +- Classes/LinphoneManager.m | 76 ++- Classes/LinphoneUI/UICallBar.m | 40 +- Classes/LinphoneUI/UIChatCell.h | 11 +- Classes/LinphoneUI/UIChatCell.m | 23 +- Classes/LinphoneUI/UIChatCell.xib | 89 ++- .../LinphoneUI/UICompositeViewController.h | 6 + .../LinphoneUI/UICompositeViewController.m | 21 +- Classes/LinphoneUI/UIHistoryCell.h | 4 +- Classes/LinphoneUI/UIHistoryCell.m | 13 +- Classes/LinphoneUI/UIMainBar.m | 49 +- Classes/LinphoneUI/UIStateBar.m | 34 +- Classes/LinphoneUI/UIStateBar.xib | 4 +- Classes/Model/ChatModel.h | 47 ++ Classes/Model/ChatModel.m | 229 +++++++ Classes/MoreViewController.h | 2 +- Classes/PhoneMainView.h | 32 +- Classes/PhoneMainView.m | 276 ++++----- Classes/SettingsViewController.h | 3 +- Classes/SettingsViewController.m | 14 + Classes/WizardViewController.h | 4 +- Classes/WizardViewController.m | 18 +- Resources/chat_back_default.png | Bin 0 -> 4647 bytes Resources/chat_back_over.png | Bin 0 -> 4368 bytes Resources/chat_field.png | Bin 0 -> 4375 bytes Resources/chat_ok_default.png | Bin 0 -> 4336 bytes Resources/chat_ok_over.png | Bin 0 -> 4006 bytes Resources/chat_send_default.png | Bin 0 -> 5101 bytes Resources/chat_send_disabled.png | Bin 0 -> 2879 bytes Resources/chat_send_over.png | Bin 0 -> 4533 bytes Resources/database.sqlite | Bin 0 -> 3072 bytes linphone.xcodeproj/project.pbxproj | 96 +++ 63 files changed, 2148 insertions(+), 470 deletions(-) create mode 100644 Classes/ChatRoomTableViewController.h create mode 100644 Classes/ChatRoomTableViewController.m create mode 100644 Classes/ChatRoomViewController.h create mode 100644 Classes/ChatRoomViewController.m create mode 100644 Classes/ChatRoomViewController.xib create mode 100644 Classes/Data/ChatData.h create mode 100644 Classes/Data/ChatData.m create mode 100644 Classes/Model/ChatModel.h create mode 100644 Classes/Model/ChatModel.m create mode 100644 Resources/chat_back_default.png create mode 100644 Resources/chat_back_over.png create mode 100644 Resources/chat_field.png create mode 100644 Resources/chat_ok_default.png create mode 100644 Resources/chat_ok_over.png create mode 100644 Resources/chat_send_default.png create mode 100644 Resources/chat_send_disabled.png create mode 100644 Resources/chat_send_over.png create mode 100644 Resources/database.sqlite diff --git a/Classes/ChatRoomTableViewController.h b/Classes/ChatRoomTableViewController.h new file mode 100644 index 000000000..16aba4943 --- /dev/null +++ b/Classes/ChatRoomTableViewController.h @@ -0,0 +1,29 @@ +/* ChatRoomTableViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +#import + +@interface ChatRoomTableViewController : UITableViewController { + NSArray *data; +} + +@property (nonatomic, retain) NSArray *data; + +@end diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m new file mode 100644 index 000000000..1600d97c5 --- /dev/null +++ b/Classes/ChatRoomTableViewController.m @@ -0,0 +1,60 @@ +/* ChatRoomTableViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "ChatRoomTableViewController.h" +#import "UIChatCell.h" + +@implementation ChatRoomTableViewController + +@synthesize data; + + +#pragma mark - + +- (void)setData:(NSArray *)adata { + if(self->data != nil) + [self->data release]; + self->data = [adata retain]; + [[self tableView] reloadData]; +} + + +#pragma mark - UITableViewDataSource Functions + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [data count]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UIChatCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIChatCell"]; + if (cell == nil) { + cell = [[UIChatCell alloc] init]; + } + + [cell setChat:[data objectAtIndex:[indexPath row]]]; + [cell update]; + + return cell; +} + +@end diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h new file mode 100644 index 000000000..7890a147c --- /dev/null +++ b/Classes/ChatRoomViewController.h @@ -0,0 +1,44 @@ +/* ChatRoomViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +#import "UICompositeViewController.h" +#import "ChatRoomTableViewController.h" +#import "ChatModel.h" + +@interface ChatRoomViewController : UIViewController { + ChatRoomTableViewController *tableController; + UITextField *messageField; + UIButton *sendButton; +} + +- (void) setRemoteContact:(NSString*)remoteContact; + +@property (nonatomic, retain) IBOutlet ChatRoomTableViewController* tableController; + +@property (nonatomic, retain) IBOutlet UITextField* messageField; +@property (nonatomic, retain) IBOutlet UIButton* sendButton; + +- (IBAction)onBackClick:(id)event; +- (IBAction)onEditClick:(id)event; +- (IBAction)onMessageChange:(id)sender; +- (IBAction)onSendClick:(id)event; + +@end diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m new file mode 100644 index 000000000..5f517b280 --- /dev/null +++ b/Classes/ChatRoomViewController.m @@ -0,0 +1,160 @@ +/* ChatRoomViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "ChatRoomViewController.h" +#import "PhoneMainView.h" + +@implementation ChatRoomViewController + + +@synthesize tableController; +@synthesize sendButton; +@synthesize messageField; + + +#pragma mark - Lifecycle Functions + +- (id)init { + return [super initWithNibName:@"ChatRoomViewController" bundle:[NSBundle mainBundle]]; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [super dealloc]; +} + +#pragma mark - UICompositeViewDelegate Functions + ++ (UICompositeViewDescription*) compositeViewDescription { + UICompositeViewDescription *description = [UICompositeViewDescription alloc]; + description->content = @"ChatRoomViewController"; + description->tabBar = nil; + description->tabBarEnabled = false; + description->stateBar = nil; + description->stateBarEnabled = false; + description->fullscreen = false; + return description; +} + + +#pragma mark - ViewController Functions + +- (void)viewWillAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(keyboardWillShow:) + name:UIKeyboardWillShowNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(keyboardWillHide:) + name:UIKeyboardWillHideNotification + object:nil]; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [[tableController tableView] reloadData]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardWillShowNotification + object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardWillHideNotification + object:nil]; +} + + +#pragma mark - + +- (void)setRemoteContact:(NSString*)remoteContact { + [tableController setData:[ChatModel listMessages:remoteContact]]; +} + + +#pragma mark - Keyboard Event Functions + +- (void)keyboardWillHide:(NSNotification *)notif { + //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; + NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [UIView beginAnimations:@"resize" context:nil]; + [UIView setAnimationDuration:duration]; + [UIView setAnimationCurve:curve]; + [UIView setAnimationBeginsFromCurrentState:TRUE]; + CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + CGRect frame = [[self view] frame]; + CGPoint pos = {0, 0}; + CGPoint gPos = [[self view] convertPoint:pos toView:nil]; + frame.size.height = endFrame.origin.y - gPos.y; + [[self view] setFrame:frame]; + [UIView commitAnimations]; +} + +- (void)keyboardWillShow:(NSNotification *)notif { + //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; + NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [UIView beginAnimations:@"resize" context:nil]; + [UIView setAnimationDuration:duration]; + [UIView setAnimationCurve:curve]; + [UIView setAnimationBeginsFromCurrentState:TRUE]; + CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + CGRect frame = [[self view] frame]; + CGPoint pos = {0, 0}; + CGPoint gPos = [[self view] convertPoint:pos toView:nil]; + frame.size.height = endFrame.origin.y - gPos.y; + [[self view] setFrame:frame]; + [UIView commitAnimations]; +} + +#pragma mark - UITextFieldDelegate Functions + +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + [textField resignFirstResponder]; + return YES; +} + + +#pragma mark - Action Functions + +- (IBAction)onBackClick:(id)event { + [[PhoneMainView instance] popView]; +} + +- (IBAction)onEditClick:(id)event { + +} + +- (IBAction)onSendClick:(id)event { + [messageField endEditing:TRUE]; +} + +- (IBAction)onMessageChange:(id)sender { + if([[messageField text] length] > 0) { + [sendButton setEnabled:TRUE]; + } else { + [sendButton setEnabled:FALSE]; + } +} + +@end diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib new file mode 100644 index 000000000..a363aec5e --- /dev/null +++ b/Classes/ChatRoomViewController.xib @@ -0,0 +1,580 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIView + IBUIImageView + IBProxyObject + IBUITextField + IBUITableViewController + IBUITableView + IBUIButton + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 290 + + + + 292 + {160, 58} + + + + _NS:9 + NO + + All + + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + chat_back_over.png + + + NSImage + chat_back_default.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{160, 0}, {160, 58}} + + + + _NS:9 + NO + + Missed + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + chat_edit_over.png + + + NSImage + chat_edit_default.png + + + + + + {320, 58} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 274 + {{0, 58}, {320, 344}} + + + + _NS:9 + + 1 + MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA + + YES + IBCocoaTouchFramework + YES + 1 + 0 + YES + 44 + 22 + 22 + + + + 266 + + + + 292 + {{250, 0}, {70, 59}} + + + + _NS:9 + NO + + Missed + + IBCocoaTouchFramework + NO + 0 + 0 + NO + NO + + + NSImage + chat_send_over.png + + + NSImage + chat_send_disabled.png + + + NSImage + chat_send_default.png + + + + + + + 292 + {250, 59} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + chat_field.png + + + + + 292 + {{10, 10}, {230, 39}} + + + + _NS:9 + NO + YES + IBCocoaTouchFramework + 0 + + Type your message here + + 3 + MAA + + + YES + 17 + + IBCocoaTouchFramework + + + 1 + 18 + + + Helvetica + 18 + 16 + + + + {{0, 401}, {320, 59}} + + + + _NS:9 + + 3 + MQA + + + IBCocoaTouchFramework + + + {320, 460} + + + + _NS:9 + + 3 + MQA + + + IBCocoaTouchFramework + + + NO + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + + + + view + + + + 11 + + + + messageField + + + + 26 + + + + sendButton + + + + 27 + + + + tableController + + + + 32 + + + + dataSource + + + + 30 + + + + delegate + + + + 31 + + + + onBackClick: + + + 7 + + 12 + + + + onEditClick: + + + 7 + + 13 + + + + onSendClick: + + + 7 + + 25 + + + + delegate + + + + 20 + + + + onMessageChange: + + + 18 + + 28 + + + + view + + + + 33 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 6 + + + + + + + + + + 7 + + + + + + + header + + + 8 + + + + tableView + + + 9 + + + backButton + + + 10 + + + editButton + + + 14 + + + + + + + + footer + + + 15 + + + sendButton + + + 19 + + + messageField + + + 21 + + + fieldBackground + + + 29 + + + tableController + + + + + ChatRoomViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + ChatRoomTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 33 + + + + + ChatRoomTableViewController + UITableViewController + + IBProjectSource + ./Classes/ChatRoomTableViewController.h + + + + ChatRoomViewController + UIViewController + + id + id + id + id + + + + onBackClick: + id + + + onEditClick: + id + + + onMessageChange: + id + + + onSendClick: + id + + + + UITextField + UIButton + ChatRoomTableViewController + + + + messageField + UITextField + + + sendButton + UIButton + + + tableController + ChatRoomTableViewController + + + + IBProjectSource + ./Classes/ChatRoomViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {320, 117} + {320, 117} + {320, 117} + {320, 117} + {500, 117} + {140, 117} + {140, 117} + {140, 117} + + 1181 + + diff --git a/Classes/ChatTableViewController.h b/Classes/ChatTableViewController.h index 2b9367245..32cd1f67e 100644 --- a/Classes/ChatTableViewController.h +++ b/Classes/ChatTableViewController.h @@ -20,7 +20,9 @@ #import @interface ChatTableViewController : UITableViewController { - + NSArray *data; } +@property (nonatomic, retain) NSArray *data; + @end diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index 969125b08..b72bd9a6f 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -20,8 +20,24 @@ #import "ChatTableViewController.h" #import "UIChatCell.h" +#import "linphonecore.h" +#import "PhoneMainView.h" + @implementation ChatTableViewController +@synthesize data; + + +#pragma mark - + +- (void)setData:(NSArray *)adata { + if(self->data != nil) + [self->data release]; + self->data = [adata retain]; + [[self tableView] reloadData]; +} + +#pragma mark - UITableViewDataSource Functions - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { @@ -30,7 +46,7 @@ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return 1; + return [data count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath @@ -40,9 +56,25 @@ cell = [[UIChatCell alloc] init]; } + [cell setChat:[data objectAtIndex:[indexPath row]]]; [cell update]; return cell; } + +#pragma mark - UITableViewDelegate Functions + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:NO]; + ChatModel *chat = [data objectAtIndex:[indexPath row]]; + + // Go to dialer view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: [chat remoteContact], nil] autorelease] + , @"setRemoteContact:", + nil] autorelease]; + [[PhoneMainView instance] changeView:PhoneView_ChatRoom dict:dict push:TRUE]; +} + @end diff --git a/Classes/ChatViewController.h b/Classes/ChatViewController.h index a6df7bda6..ac61c32c0 100644 --- a/Classes/ChatViewController.h +++ b/Classes/ChatViewController.h @@ -20,14 +20,15 @@ #import #import "ChatTableViewController.h" +#import "UICompositeViewController.h" -@interface ChatViewController : UIViewController { +@interface ChatViewController : UIViewController { ChatTableViewController *tableController; } @property (nonatomic, retain) IBOutlet ChatTableViewController* tableController; -- (IBAction)onAdd:(id) event; -- (IBAction)onEdit:(id) event; +- (IBAction)onAddClick:(id) event; +- (IBAction)onEditClick:(id) event; @end diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 5f52c3bd7..2e769e36c 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -18,21 +18,58 @@ */ #import "ChatViewController.h" +#import "PhoneMainView.h" +#import "ChatModel.h" @implementation ChatViewController @synthesize tableController; + +#pragma mark - Lifecycle Functions + - (id)init { return [super initWithNibName:@"ChatViewController" bundle:[NSBundle mainBundle]]; } -- (IBAction)onAdd: (id) event { - + +#pragma mark - ViewController Functions + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [tableController setData:[ChatModel listConversations]]; } -- (IBAction)onEdit: (id) event { +#pragma mark - UICompositeViewDelegate Functions + ++ (UICompositeViewDescription*) compositeViewDescription { + UICompositeViewDescription *description = [UICompositeViewDescription alloc]; + description->content = @"ChatViewController"; + description->tabBar = @"UIMainBar"; + description->tabBarEnabled = true; + description->stateBar = nil; + description->stateBarEnabled = false; + description->fullscreen = false; + return description; +} + + +#pragma mark - Action Functions + +- (IBAction)onAddClick:(id)event { + [[PhoneMainView instance] changeView:PhoneView_ChatRoom push:TRUE]; +} + +- (IBAction)onEditClick:(id)event { + ChatModel* line= [[ChatModel alloc] init]; + line.localContact = @""; + line.remoteContact = @"truc"; + line.message = @"blabla"; + line.direction = [NSNumber numberWithInt:1]; + line.time = [NSDate date]; + [line create]; + [tableController setData:[ChatModel listConversations]]; } @end diff --git a/Classes/ChatViewController.xib b/Classes/ChatViewController.xib index 3145cd267..bd88f20eb 100644 --- a/Classes/ChatViewController.xib +++ b/Classes/ChatViewController.xib @@ -69,10 +69,6 @@ NSImage chat_add_default.png - - NSImage - all-call-selectionne.png - 2 15 @@ -108,10 +104,6 @@ NSImage chat_edit_default.png - - NSImage - missed-selectionne.png - @@ -139,8 +131,8 @@ _NS:9 - 3 - MQA + 1 + MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA YES IBCocoaTouchFramework @@ -224,21 +216,21 @@ - onEdit: + onEditClick: 7 - 17 + 21 - onAdd: + onAddClick: 7 - 19 + 20 @@ -311,20 +303,20 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + ChatTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + - 19 + 21 @@ -340,16 +332,16 @@ ChatViewController UIViewController - id - id + id + id - - onAdd: + + onAddClick: id - - onEdit: + + onEditClick: id @@ -380,12 +372,10 @@ YES 3 - {213, 117} {320, 117} {320, 117} {320, 117} {320, 117} - {213, 117} 1181 diff --git a/Classes/ContactsTableViewController.h b/Classes/ContactsTableViewController.h index 5ef07e6ea..696b0ef7e 100644 --- a/Classes/ContactsTableViewController.h +++ b/Classes/ContactsTableViewController.h @@ -22,7 +22,7 @@ #import "OrderedDictionary.h" -@interface ContactsTableViewController : UITableViewController { +@interface ContactsTableViewController : UITableViewController { OrderedDictionary* addressBookMap; ABAddressBookRef addressBook; diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 55c1b33d2..f67ce8f71 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -20,6 +20,7 @@ #import "ContactsTableViewController.h" #import "UIContactCell.h" #import "LinphoneManager.h" +#import "PhoneMainView.h" @implementation ContactsTableViewController @@ -127,7 +128,7 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, [[[NSArray alloc] initWithObjects: number, nil] autorelease] , @"setAddress:", nil] autorelease]; - [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; + [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; CFRelease(lNumber); break; diff --git a/Classes/ContactsViewController.h b/Classes/ContactsViewController.h index 50326d42f..f713dd8b7 100644 --- a/Classes/ContactsViewController.h +++ b/Classes/ContactsViewController.h @@ -19,9 +19,11 @@ #import +#import "UICompositeViewController.h" + #import "ContactsTableViewController.h" -@interface ContactsViewController : UIViewController { +@interface ContactsViewController : UIViewController { ContactsTableViewController *tableController; UITableView *tableView; diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index c5fa9e9b7..436f5739b 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -51,6 +51,21 @@ typedef enum _HistoryView { [super dealloc]; } + +#pragma mark - UICompositeViewDelegate Functions + ++ (UICompositeViewDescription*) compositeViewDescription { + UICompositeViewDescription *description = [UICompositeViewDescription alloc]; + description->content = @"ContactsViewController"; + description->tabBar = @"UIMainBar"; + description->tabBarEnabled = true; + description->stateBar = nil; + description->stateBarEnabled = false; + description->fullscreen = false; + return description; +} + + #pragma mark - ViewController Functions - (void)viewDidAppear:(BOOL)animated { diff --git a/Classes/Data/ChatData.h b/Classes/Data/ChatData.h new file mode 100644 index 000000000..dddef8c50 --- /dev/null +++ b/Classes/Data/ChatData.h @@ -0,0 +1,13 @@ +// +// ChatData.h +// linphone +// +// Created by Diorcet Yann on 05/07/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import + +@interface ChatData : NSObject + +@end diff --git a/Classes/Data/ChatData.m b/Classes/Data/ChatData.m new file mode 100644 index 000000000..f8aa72dc1 --- /dev/null +++ b/Classes/Data/ChatData.m @@ -0,0 +1,13 @@ +// +// ChatData.m +// linphone +// +// Created by Diorcet Yann on 05/07/12. +// Copyright (c) 2012 __MyCompanyName__. All rights reserved. +// + +#import "ChatData.h" + +@implementation ChatData + +@end diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index f08360063..8a90e2b63 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -19,12 +19,14 @@ #import +#import "UICompositeViewController.h" + #import "UIEraseButton.h" #import "UICallButton.h" #import "UITransferButton.h" #import "UIDigitButton.h" -@interface DialerViewController : UIViewController { +@interface DialerViewController : UIViewController { @private //Buttons UITextField* addressField; diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index a8774c35f..90bc9123c 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -83,17 +83,52 @@ [zeroButton release]; [sharpButton release]; + + // Remove all observers [[NSNotificationCenter defaultCenter] removeObserver:self]; [super dealloc]; } +#pragma mark - UICompositeViewDelegate Functions + ++ (UICompositeViewDescription *)compositeViewDescription { + UICompositeViewDescription *description = [UICompositeViewDescription alloc]; + description->content = @"DialerViewController"; + description->tabBar = @"UIMainBar"; + description->tabBarEnabled = true; + description->stateBar = @"UIStateBar"; + description->stateBarEnabled = true; + description->fullscreen = false; + return description; +} + + #pragma mark - ViewController Functions - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [self update]; + + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(callUpdateEvent:) + name:@"LinphoneCallUpdate" + object:nil]; + + // Update on show + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; + [self callUpdate:call state:state]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + // Remove observer + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneCallUpdate" + object:nil]; } - (void)viewDidLoad { @@ -111,26 +146,20 @@ [nineButton setDigit:'9']; [starButton setDigit:'*']; [sharpButton setDigit:'#']; - - // Set observer - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; } -- (void)viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - - #pragma mark - Event Functions -- (void)callUpdate:(NSNotification*)notif { - [self update]; +- (void)callUpdateEvent:(NSNotification*)notif { + LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; + LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; + [self callUpdate:call state:state]; } #pragma mark - -- (void)update { +- (void)callUpdate:(LinphoneCall*)call state:(LinphoneCallState)state { if([LinphoneManager isLcReady]) { LinphoneCore *lc = [LinphoneManager getLc]; if(linphone_core_get_calls_nb(lc) > 0) { @@ -160,7 +189,9 @@ - (void)setTransferMode:(NSNumber*) n { transferMode = [n boolValue]; - [self update]; + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; + [self callUpdate:call state:state]; } @@ -181,7 +212,7 @@ } - (IBAction)onBackClick: (id) event { - [[LinphoneManager instance] changeView:PhoneView_InCall]; + [[PhoneMainView instance] changeView:PhoneView_InCall]; } - (IBAction)onAddressChange: (id)sender { diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index dfe28c0d4..952fbc8bd 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -521,7 +521,7 @@ NSImage - cancel_white_bg_disabled.png + back_disabled.png @@ -1286,7 +1286,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1677,6 +1677,7 @@ add_contact_disabled.png add_contact_over.png back_default.png + back_disabled.png back_over.png backspace_default.png backspace_disabled.png @@ -1684,7 +1685,6 @@ call_default.png call_disabled.png call_over.png - cancel_white_bg_disabled.png dialer_address_background.png numpad_background.png numpad_eight_default.png @@ -1725,10 +1725,10 @@ {213, 138} {213, 138} {213, 138} - {214, 138} - {214, 138} - {214, 138} {213, 138} + {214, 138} + {214, 138} + {214, 138} {640, 135} {640, 523} {220, 113} diff --git a/Classes/FirstLoginViewController.h b/Classes/FirstLoginViewController.h index 12e3f0ace..5f9961cbf 100644 --- a/Classes/FirstLoginViewController.h +++ b/Classes/FirstLoginViewController.h @@ -19,7 +19,9 @@ #import -@interface FirstLoginViewController : UIViewController{ +#import "UICompositeViewController.h" + +@interface FirstLoginViewController : UIViewController { UIButton* loginButton; UIButton* siteButton; UITextField* usernameField; diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index d3f202da5..cf47635c9 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -20,6 +20,7 @@ #import "FirstLoginViewController.h" #import "LinphoneManager.h" +#import "PhoneMainView.h" @implementation FirstLoginViewController @@ -36,21 +37,63 @@ } - (void)dealloc { - [super dealloc]; [loginButton dealloc]; [siteButton dealloc]; [usernameField dealloc]; [passwordField dealloc]; [waitView dealloc]; + + // Remove all observer [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [super dealloc]; } + +#pragma mark - UICompositeViewDelegate Functions + ++ (UICompositeViewDescription *)compositeViewDescription { + UICompositeViewDescription *description = [UICompositeViewDescription alloc]; + description->content = @"FirstLoginViewController"; + description->tabBar = nil; + description->tabBarEnabled = false; + description->stateBar = nil; + description->stateBarEnabled = false; + description->fullscreen = false; + return description; +} + + #pragma mark - ViewController Functions -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; [usernameField setText:[[LinphoneManager instance].settingsStore objectForKey:@"username_preference"]]; [passwordField setText:[[LinphoneManager instance].settingsStore objectForKey:@"password_preference"]]; + + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(registrationUpdateEvent:) + name:@"LinphoneRegistrationUpdate" + object:nil]; + + // Update on show + const MSList* list = linphone_core_get_proxy_config_list([LinphoneManager getLc]); + if(list != NULL) { + LinphoneProxyConfig *config = (LinphoneProxyConfig*) list->data; + if(config) { + [self registrationUpdate:linphone_proxy_config_get_state(config)]; + } + } +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + // Remove observer + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneRegistrationUpdate" + object:nil]; } - (void)viewDidLoad { @@ -59,26 +102,24 @@ siteUrl=@"http://www.linphone.org"; } [siteButton setTitle:siteUrl forState:UIControlStateNormal]; - - // Set observer - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) name:@"LinphoneRegistrationUpdate" object:nil]; } -- (void)viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - - #pragma mark - Event Functions -- (void)registrationUpdate: (NSNotification*) notif { - LinphoneRegistrationState state = [[notif.userInfo objectForKey: @"state"] intValue]; +- (void)registrationUpdateEvent:(NSNotification*)notif { + [self registrationUpdate:[[notif.userInfo objectForKey: @"state"] intValue]]; +} + + +#pragma mark - + +- (void)registrationUpdate:(LinphoneRegistrationState)state { switch (state) { case LinphoneRegistrationOk: { [[LinphoneManager instance].settingsStore setBool:false forKey:@"enable_first_login_view_preference"]; [self.waitView setHidden:true]; - [[LinphoneManager instance] changeView:PhoneView_Dialer]; + [[PhoneMainView instance] changeView:PhoneView_Dialer]; break; } case LinphoneRegistrationNone: diff --git a/Classes/HistoryTableViewController.h b/Classes/HistoryTableViewController.h index b668e5fc4..09f55b9e7 100644 --- a/Classes/HistoryTableViewController.h +++ b/Classes/HistoryTableViewController.h @@ -19,7 +19,7 @@ #import -@interface HistoryTableViewController : UITableViewController { +@interface HistoryTableViewController : UITableViewController { @private BOOL editMode; } diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index 83635f53a..33747e013 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -20,6 +20,7 @@ #import "HistoryTableViewController.h" #import "UIHistoryCell.h" #import "LinphoneManager.h" +#import "PhoneMainView.h" @implementation HistoryTableViewController @@ -58,11 +59,15 @@ else [cell exitEditMode]; - [cell update:callLogs]; + [cell setCallLog:callLogs]; + [cell update]; return cell; } + +#pragma mark - UITableViewDelegate Functions + - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:NO]; @@ -96,7 +101,7 @@ [[[NSArray alloc] initWithObjects: phoneNumber, nil] autorelease] , @"setAddress:", nil] autorelease]; - [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; + [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; [phoneNumber release]; [dispName release]; diff --git a/Classes/HistoryViewController.h b/Classes/HistoryViewController.h index 10b329ab0..93025f1b7 100644 --- a/Classes/HistoryViewController.h +++ b/Classes/HistoryViewController.h @@ -19,10 +19,11 @@ #import +#import "UICompositeViewController.h" #import "HistoryTableViewController.h" #import "UIToggleButton.h" -@interface HistoryViewController : UIViewController { +@interface HistoryViewController : UIViewController { @private HistoryTableViewController *tableController; UITableView *tableView; diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 766282145..8b2aa9e46 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -53,6 +53,19 @@ typedef enum _HistoryView { } +#pragma mark - UICompositeViewDelegate Functions + ++ (UICompositeViewDescription*) compositeViewDescription { + UICompositeViewDescription *description = [UICompositeViewDescription alloc]; + description->content = @"HistoryViewController"; + description->tabBar = @"UIMainBar"; + description->tabBarEnabled = true; + description->stateBar = nil; + description->stateBarEnabled = false; + description->fullscreen = false; + return description; +} + #pragma mark - ViewController Functions - (void)viewDidAppear:(BOOL)animated { diff --git a/Classes/InCallTableViewController.h b/Classes/InCallTableViewController.h index 1ccd38a08..99abc4d60 100644 --- a/Classes/InCallTableViewController.h +++ b/Classes/InCallTableViewController.h @@ -23,7 +23,7 @@ #include "linphonecore.h" -@interface InCallTableViewController : UITableViewController { +@interface InCallTableViewController : UITableViewController { @private NSMutableDictionary* callCellData; NSTimer *updateTime; diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index 651baac8e..b11f30ae3 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -23,11 +23,12 @@ #import "UICamSwitch.h" #import "CallDelegate.h" +#import "UICompositeViewController.h" #import "InCallTableViewController.h" @class VideoViewController; -@interface InCallViewController : UIViewController { +@interface InCallViewController : UIViewController { InCallTableViewController* callTableController; UITableView* callTableView; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 01b0699fc..e3690a931 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -27,6 +27,7 @@ #import "IncallViewController.h" #import "UICallCell.h" #import "LinphoneManager.h" +#import "PhoneMainView.h" #include "linphonecore.h" #include "private.h" @@ -71,10 +72,27 @@ const NSInteger SECURE_BUTTON_TAG=5; [videoZoomHandler release]; + // Remove all observer + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [super dealloc]; } +#pragma mark - UICompositeViewDelegate Functions + ++ (UICompositeViewDescription*) compositeViewDescription { + UICompositeViewDescription *description = [UICompositeViewDescription alloc]; + description->content = @"InCallViewController"; + description->tabBar = @"UICallBar"; + description->tabBarEnabled = true; + description->stateBar = @"UIStateBar"; + description->stateBarEnabled = true; + description->fullscreen = false; + return description; +} + + #pragma mark - ViewController Functions - (void)viewDidAppear:(BOOL)animated { @@ -101,6 +119,12 @@ const NSInteger SECURE_BUTTON_TAG=5; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [callTableController viewWillDisappear:NO]; } + + + // Remove observer + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneCallUpdate" + object:nil]; } - (void)viewWillAppear:(BOOL)animated { @@ -108,6 +132,17 @@ const NSInteger SECURE_BUTTON_TAG=5; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [callTableController viewWillAppear:NO]; } + + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(callUpdateEvent:) + name:@"LinphoneCallUpdate" + object:nil]; + + // Update on show + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; + [self callUpdate:call state:state]; } - (void)viewDidDisappear:(BOOL)animated { @@ -122,10 +157,6 @@ const NSInteger SECURE_BUTTON_TAG=5; } } -- (void)viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - - (void)viewDidLoad { [super viewDidLoad]; @@ -133,10 +164,6 @@ const NSInteger SECURE_BUTTON_TAG=5; linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)videoView); linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)videoPreview); - // Set observer - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; - - UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)]; [singleFingerTap setNumberOfTapsRequired:1]; [singleFingerTap setCancelsTouchesInView: FALSE]; @@ -153,6 +180,80 @@ const NSInteger SECURE_BUTTON_TAG=5; #pragma mark - + +- (void)callUpdate:(LinphoneCall *)call state:(LinphoneCallState) state { + // Update table + [callTableView reloadData]; + + // Fake call update + if(call == NULL) { + return; + } + + // Handle data associated with the call + if(state == LinphoneCallReleased) { + [callTableController removeCallData: call]; + } else { + [callTableController addCallData: call]; + } + + switch (state) { + case LinphoneCallIncomingReceived: + case LinphoneCallOutgoingInit: + { + if(linphone_core_get_calls_nb([LinphoneManager getLc]) > 1) { + [callTableController minimizeAll]; + } + } + case LinphoneCallConnected: + case LinphoneCallStreamsRunning: + case LinphoneCallUpdated: + { + //check video + if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { + [self displayVideoCall]; + } else { + [self displayTableCall]; + } + break; + } + case LinphoneCallUpdatedByRemote: + { + const LinphoneCallParams* current = linphone_call_get_current_params(call); + const LinphoneCallParams* remote = linphone_call_get_remote_params(call); + + /* remote wants to add video */ + if (!linphone_call_params_video_enabled(current) && + linphone_call_params_video_enabled(remote) && + !linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) { + linphone_core_defer_call_update([LinphoneManager getLc], call); + [self displayAskToEnableVideoCall:call]; + } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { + [self displayTableCall]; + } + break; + } + case LinphoneCallPausing: + case LinphoneCallPaused: + case LinphoneCallPausedByRemote: + { + [self displayTableCall]; + break; + } + case LinphoneCallEnd: + case LinphoneCallError: + { + if(linphone_core_get_calls_nb([LinphoneManager getLc]) <= 1) { + [callTableController maximizeAll]; + } + break; + } + default: + break; + } + +} + - (void)showControls:(id)sender { if (hideControlsTimer) { [hideControlsTimer invalidate]; @@ -162,7 +263,7 @@ const NSInteger SECURE_BUTTON_TAG=5; // show controls [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; - [[LinphoneManager instance] showTabBar: true]; + [[PhoneMainView instance] showTabBar: true]; if ([LinphoneManager instance].frontCamId !=nil ) { // only show camera switch button if we have more than 1 camera [videoCameraSwitch setAlpha:1.0]; @@ -183,8 +284,8 @@ const NSInteger SECURE_BUTTON_TAG=5; [videoCameraSwitch setAlpha:0.0]; [UIView commitAnimations]; - if([[LinphoneManager instance] currentView] == PhoneView_InCall && videoShown) - [[LinphoneManager instance] showTabBar: false]; + if([[PhoneMainView instance] currentView] == PhoneView_InCall && videoShown) + [[PhoneMainView instance] showTabBar: false]; if (hideControlsTimer) { [hideControlsTimer invalidate]; @@ -228,8 +329,8 @@ const NSInteger SECURE_BUTTON_TAG=5; videoView.alpha = 1.0; videoView.hidden = FALSE; - [[LinphoneManager instance] fullScreen: true]; - [[LinphoneManager instance] showTabBar: false]; + [[PhoneMainView instance] fullScreen: true]; + [[PhoneMainView instance] showTabBar: false]; #ifdef TEST_VIDEO_VIEW_CHANGE [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(_debugChangeVideoView) userInfo:nil repeats:YES]; @@ -256,7 +357,7 @@ const NSInteger SECURE_BUTTON_TAG=5; } [videoGroup setAlpha:0.0]; - [[LinphoneManager instance] showTabBar: true]; + [[PhoneMainView instance] showTabBar: true]; [callTableView setAlpha:1.0]; [videoCameraSwitch setAlpha:0.0]; @@ -269,7 +370,7 @@ const NSInteger SECURE_BUTTON_TAG=5; hideControlsTimer = nil; } - [[LinphoneManager instance] fullScreen:false]; + [[PhoneMainView instance] fullScreen:false]; } - (void)transferPressed { @@ -314,7 +415,7 @@ const NSInteger SECURE_BUTTON_TAG=5; //TODO /*[UICallButton enableTransforMode:YES];*/ - [[LinphoneManager instance] changeView:PhoneView_Dialer]; + [[PhoneMainView instance] changeView:PhoneView_Dialer]; } else { // add 'Other' option [visibleActionSheet addButtonWithTitle:NSLocalizedString(@"Other...",nil)]; @@ -332,11 +433,11 @@ const NSInteger SECURE_BUTTON_TAG=5; } } -- (void)displayVideoCall:(LinphoneCall*) call { +- (void)displayVideoCall { [self enableVideoDisplay: TRUE]; } -- (void)displayTableCall:(LinphoneCall*) call { +- (void)displayTableCall { [self disableVideoDisplay: TRUE]; } @@ -352,84 +453,16 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { [thiz hideSpinnerIndicator:call]; } + #pragma mark - Event Functions -- (void)callUpdate: (NSNotification*) notif { +- (void)callUpdateEvent: (NSNotification*) notif { LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - - // Update table - [callTableView reloadData]; - - // Fake call update - if(call == NULL) { - return; - } - - // Handle data associated with the call - if(state == LinphoneCallReleased) { - [callTableController removeCallData: call]; - } else { - [callTableController addCallData: call]; - } - - switch (state) { - case LinphoneCallIncomingReceived: - case LinphoneCallOutgoingInit: - { - if(linphone_core_get_calls_nb([LinphoneManager getLc]) > 1) { - [callTableController minimizeAll]; - } - } - case LinphoneCallConnected: - case LinphoneCallStreamsRunning: - case LinphoneCallUpdated: - { - //check video - if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { - [self displayVideoCall:call]; - } else { - [self displayTableCall:call]; - } - break; - } - case LinphoneCallUpdatedByRemote: - { - const LinphoneCallParams* current = linphone_call_get_current_params(call); - const LinphoneCallParams* remote = linphone_call_get_remote_params(call); - - /* remote wants to add video */ - if (!linphone_call_params_video_enabled(current) && - linphone_call_params_video_enabled(remote) && - !linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept) { - linphone_core_defer_call_update([LinphoneManager getLc], call); - [self displayAskToEnableVideoCall:call]; - } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { - [self displayTableCall:call]; - } - break; - } - case LinphoneCallPausing: - case LinphoneCallPaused: - case LinphoneCallPausedByRemote: - { - [self displayTableCall: call]; - break; - } - case LinphoneCallEnd: - case LinphoneCallError: - { - if(linphone_core_get_calls_nb([LinphoneManager getLc]) <= 1) { - [callTableController maximizeAll]; - } - break; - } - default: - break; - } - + [self callUpdate:call state:state]; } + #pragma mark - ActionSheet Functions - (void)dismissActionSheet: (id)o { @@ -523,7 +556,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { // with the correct indice //TODO //[UICallButton enableTransforMode:YES]; - [[LinphoneManager instance] changeView:PhoneView_Dialer]; + [[PhoneMainView instance] changeView:PhoneView_Dialer]; break; } default: diff --git a/Classes/IncomingCallViewController.h b/Classes/IncomingCallViewController.h index ba2a9563a..dbdbc41e0 100644 --- a/Classes/IncomingCallViewController.h +++ b/Classes/IncomingCallViewController.h @@ -38,12 +38,9 @@ typedef enum _IncomingCallStates { @property (nonatomic, retain) IBOutlet UILabel* addressLabel; @property (nonatomic, retain) IBOutlet UIImageView* avatarImage; +@property (nonatomic, assign) LinphoneCall* call; - (IBAction)onAcceptClick:(id) event; - (IBAction)onDeclineClick:(id) event; -- (void)update:(LinphoneCall*)call; - -- (LinphoneCall*) getCall; - @end diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 47965e2c3..744422fea 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -24,19 +24,13 @@ @synthesize addressLabel; @synthesize avatarImage; +@synthesize call; #pragma mark - Lifecycle Functions - (id)init { - self = [super initWithNibName:@"IncomingCallViewController" bundle:[NSBundle mainBundle]]; - if(self) { - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(callUpdate:) - name:@"LinphoneCallUpdate" - object:nil]; - } - return self; + return [super initWithNibName:@"IncomingCallViewController" bundle:[NSBundle mainBundle]]; } - (void)dealloc { @@ -46,20 +40,50 @@ } +#pragma mark - ViewController Functions + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(callUpdateEvent:) + name:@"LinphoneCallUpdate" + object:nil]; + + [self callUpdate:call state:linphone_call_get_state(call)]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneCallUpdate" + object:nil]; +} + + + #pragma mark - Event Functions -- (void)callUpdate:(NSNotification*)notif { +- (void)callUpdateEvent:(NSNotification*)notif { LinphoneCall *acall = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState astate = [[notif.userInfo objectForKey: @"state"] intValue]; + [self callUpdate:acall state:astate]; +} + + +#pragma mark - + +- (void)callUpdate:(LinphoneCall *)acall state:(LinphoneCallState)astate { if(call == acall && (astate == LinphoneCallEnd || astate == LinphoneCallError)) { [self dismiss: IncomingCall_Aborted]; } } -#pragma mark - +#pragma mark - Property Functions -- (void)update:(LinphoneCall*)acall { +- (void)setCall:(LinphoneCall*)acall { [self view]; //Force view load call = acall; diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index d3428ce89..6f9234573 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -143,14 +143,14 @@ int __aeabi_idiv(int a, int b) { - (void)setupUI { if ([[LinphoneManager instance].settingsStore boolForKey:@"enable_first_login_view_preference"] == true) { // Change to fist login view - [[LinphoneManager instance] changeView: PhoneView_FirstLogin]; + [[PhoneMainView instance] changeView: PhoneView_FirstLogin]; } else { // Change to default view const MSList *list = linphone_core_get_proxy_config_list([LinphoneManager getLc]); if(list != NULL) { - [[LinphoneManager instance] changeView: PhoneView_Dialer]; + [[PhoneMainView instance] changeView: PhoneView_Dialer]; } else { - [[LinphoneManager instance] changeView: PhoneView_Wizard]; + [[PhoneMainView instance] changeView: PhoneView_Wizard]; } } diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 0079dd8e3..7328d6df2 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -20,6 +20,7 @@ #import #import #import +#import #import "LogView.h" #import "IASKSettingsReader.h" @@ -28,19 +29,6 @@ #include "linphonecore.h" -typedef enum _PhoneView { - PhoneView_Wizard, - PhoneView_FirstLogin, - PhoneView_Dialer, - PhoneView_History, - PhoneView_Settings, - PhoneView_Chat, - PhoneView_Contacts, - PhoneView_InCall, - PhoneView_IncomingCall, - PhoneView_END -} PhoneView; - typedef enum _Connectivity { wifi, wwan @@ -79,9 +67,8 @@ typedef struct _LinphoneCallAppData { const char* frontCamId; const char* backCamId; - PhoneView currentView; - id settingsStore; + sqlite3 *database; @public CallContext currentCallContextBeforeGoingBackground; @@ -108,12 +95,6 @@ typedef struct _LinphoneCallAppData { - (void)setupNetworkReachabilityCallback; - (void)refreshRegisters; -- (void)changeView:(PhoneView) view; -- (void)changeView:(PhoneView) view dict:(NSDictionary *)dict; -- (void)showTabBar:(BOOL) show; -- (void)fullScreen:(BOOL) enabled; -- (PhoneView) currentView; - - (void)enableSpeaker:(BOOL)enable; - (BOOL)isSpeakerEnabled; @@ -123,6 +104,7 @@ typedef struct _LinphoneCallAppData { @property (nonatomic) int defaultExpires; @property (readonly) const char* frontCamId; @property (readonly) const char* backCamId; +@property (readonly) sqlite3* database; @end diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index cbff80a55..fd56aacc4 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -58,13 +58,12 @@ extern void libmsbcg729_init(); @implementation LinphoneManager -PhoneView currentView = -1; - @synthesize connectivity; @synthesize frontCamId; @synthesize backCamId; @synthesize defaultExpires; @synthesize settingsStore; +@synthesize database; struct codec_name_pref_table{ const char *name; @@ -110,46 +109,59 @@ struct codec_name_pref_table codec_pref_table[]={ - (id)init { assert (!theLinphoneManager); - if ((self= [super init])) { + if ((self = [super init])) { mFastAddressBook = [[FastAddressBook alloc] init]; + database = NULL; theLinphoneManager = self; - self.defaultExpires=600; + self.defaultExpires = 600; + [self openDatabase]; } return self; } +- (void)dealloc { + [mFastAddressBook release]; + [self closeDatabase]; + + [super dealloc]; +} + +- (void)openDatabase { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsPath = [paths objectAtIndex:0]; + NSString *databaseDocumentPath = [documentsPath stringByAppendingPathComponent:@"database.txt"]; + + // Copy default database + NSFileManager *fileManager = [NSFileManager defaultManager]; + NSError *error = nil; + //[fileManager removeItemAtPath:databaseDocumentPath error:&error]; //TODO REMOVE + if ([fileManager fileExistsAtPath:databaseDocumentPath] == NO) { + NSLog(@"Create sqlite 3 database"); + NSString *resourceDocumentPath = [[NSBundle mainBundle] pathForResource:@"database" ofType:@"sqlite"]; + [fileManager copyItemAtPath:resourceDocumentPath toPath:databaseDocumentPath error:&error]; + if(error != nil) { + NSLog(@"Can't copy database: %@", [error localizedDescription]); + return; + } + } + + if(sqlite3_open([databaseDocumentPath UTF8String], &database) != SQLITE_OK) { + NSLog(@"Can't open \"%@\" sqlite3 database.", databaseDocumentPath); + } +} + +- (void)closeDatabase { + if(database != NULL) { + if(sqlite3_close(database) != SQLITE_OK) { + NSLog(@"Can't close sqlite3 database."); + } + } +} + + (LinphoneManager*)instance { return theLinphoneManager; } -- (void) showTabBar:(BOOL) show { - NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithBool:show] forKey:@"tabBar"]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; -} - -- (void)fullScreen:(BOOL) enabled { - NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithBool:enabled] forKey:@"fullscreen"]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; -} - -- (void)changeView:(PhoneView) view { - [self changeView:view dict:nil]; -} - -- (void)changeView:(PhoneView) view dict:(NSDictionary *)dict { - currentView = view; - - NSMutableDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithInt:currentView] forKey:@"view"]; - if(dict != nil) - [mdict setObject:dict forKey:@"args"]; - - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; -} - -- (PhoneView)currentView { - return currentView; -} - -(NSString*) getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log { //1 normalize NSString* lNormalizedNumber = [FastAddressBook normalizePhoneNumber:number]; diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 4e0b4d8b7..dad26c74b 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -19,6 +19,7 @@ #import "UICallBar.h" #import "LinphoneManager.h" +#import "PhoneMainView.h" #import "CPAnimationSequence.h" #import "CPAnimationStep.h" @@ -125,8 +126,6 @@ [sharpButton setDigit:'#']; [sharpButton setDtmf:true]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; - // Set selected+disabled background: IB lack ! [videoButton setImage:[UIImage imageNamed:@"video_on_disabled.png"] forState:(UIControlStateDisabled | UIControlStateSelected)]; @@ -153,17 +152,40 @@ forState:(UIControlStateHighlighted | UIControlStateSelected)]; } -- (void)viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(callUpdateEvent:) + name:@"LinphoneCallUpdate" + object:nil]; + + // Update on show + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; + [self callUpdate:call state:state]; } +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneCallUpdate" + object:nil]; +} #pragma mark - Event Functions -- (void)callUpdate: (NSNotification*) notif { - //LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; +- (void)callUpdateEvent:(NSNotification*)notif { + LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - + [self callUpdate:call state:state]; +} + + +#pragma mark - + +- (void)callUpdate:(LinphoneCall*)call state:(LinphoneCallState)state { LinphoneCore* lc = [LinphoneManager getLc]; [speakerButton update]; @@ -335,7 +357,7 @@ [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: TRUE], nil] autorelease] , @"setTransferMode:", nil] autorelease]; - [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; + [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; } - (IBAction)onOptionsAddClick:(id)sender { @@ -347,7 +369,7 @@ [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: FALSE], nil] autorelease] , @"setTransferMode:", nil] autorelease]; - [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; + [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; } - (IBAction)onOptionsClick:(id)sender { diff --git a/Classes/LinphoneUI/UIChatCell.h b/Classes/LinphoneUI/UIChatCell.h index 6d10e6374..2cfdede30 100644 --- a/Classes/LinphoneUI/UIChatCell.h +++ b/Classes/LinphoneUI/UIChatCell.h @@ -19,17 +19,24 @@ #import +#import "ChatModel.h" + @interface UIChatCell : UITableViewCell { UIImageView *avatarView; UILabel *displayNameLabel; UILabel *chatContentLabel; + + ChatModel *chat; } +- (void)update; + +@property (weak) ChatModel *chat; + @property (nonatomic, retain) IBOutlet UIImageView *avatarView; @property (nonatomic, retain) IBOutlet UILabel* displayNameLabel; @property (nonatomic, retain) IBOutlet UILabel* chatContentLabel; -- (IBAction)onDetails: (id) event; +- (IBAction)onDetails:(id)event; -- (void)update; @end diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index 6d0a7737d..5f3973769 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -25,6 +25,7 @@ @synthesize displayNameLabel; @synthesize chatContentLabel; +@synthesize chat; #pragma mark - Lifecycle Functions @@ -50,31 +51,33 @@ #pragma mark - -- (void)update{ +- (void)update { + [avatarView setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; - [avatarView setImage:[UIImage imageNamed:@"avatar-small.png"]]; + [displayNameLabel setText:[chat remoteContact]]; + [chatContentLabel setText:[chat message]]; // // Adapt size // - CGRect firstNameFrame = [displayNameLabel frame]; - CGRect lastNameFrame = [chatContentLabel frame]; + CGRect displayNameFrame = [displayNameLabel frame]; + CGRect chatContentFrame = [chatContentLabel frame]; - lastNameFrame.origin.x -= firstNameFrame.size.width; + chatContentFrame.origin.x -= displayNameFrame.size.width; // Compute firstName size CGSize contraints; contraints.height = [displayNameLabel frame].size.height; contraints.width = ([chatContentLabel frame].size.width + [chatContentLabel frame].origin.x) - [displayNameLabel frame].origin.x; CGSize firstNameSize = [[displayNameLabel text] sizeWithFont:[displayNameLabel font] constrainedToSize: contraints]; - firstNameFrame.size.width = firstNameSize.width; + displayNameFrame.size.width = firstNameSize.width; // Compute lastName size & position - lastNameFrame.origin.x += firstNameFrame.size.width; - lastNameFrame.size.width = (contraints.width + [displayNameLabel frame].origin.x) - lastNameFrame.origin.x; + chatContentFrame.origin.x += displayNameFrame.size.width; + chatContentFrame.size.width = (contraints.width + [displayNameLabel frame].origin.x) - chatContentFrame.origin.x; - [displayNameLabel setFrame: firstNameFrame]; - [chatContentLabel setFrame: lastNameFrame]; + [displayNameLabel setFrame: displayNameFrame]; + [chatContentLabel setFrame: chatContentFrame]; } diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib index dcdc7cd9d..dbf9b0730 100644 --- a/Classes/LinphoneUI/UIChatCell.xib +++ b/Classes/LinphoneUI/UIChatCell.xib @@ -47,6 +47,10 @@ _NS:9 NO IBCocoaTouchFramework + + NSImage + avatar_unknown_small.png + @@ -123,6 +127,7 @@ {{276, 0}, {44, 44}} + _NS:9 NO IBCocoaTouchFramework @@ -133,25 +138,17 @@ 11 11 11 - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - 3 MC41AA NSImage - bouton-detail-contact-over.png + list_details_over.png NSImage - bouton-detail-contact-actif.png + list_details_default.png 2 @@ -169,15 +166,39 @@ _NS:9 - + 3 - MQA - - 2 - + MCAwAA IBCocoaTouchFramework + + + 292 + {320, 44} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + list_hightlight.png + + + + + 292 + {320, 44} + + + + _NS:9 + + NO + IBCocoaTouchFramework + @@ -205,6 +226,22 @@ 25 + + + backgroundView + + + + 28 + + + + selectedBackgroundView + + + + 29 + onDetails: @@ -269,6 +306,18 @@ chatContentLabel + + 26 + + + selectedBackground + + + 27 + + + background + @@ -283,12 +332,14 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 25 + 29 @@ -341,8 +392,10 @@ YES 3 - {45, 45} - {45, 45} + {131, 131} + {45, 45} + {45, 45} + {640, 88} 1181 diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index 0a551c8a7..32c7a3439 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -40,6 +40,12 @@ @end +@protocol UICompositeViewDelegate + ++ (UICompositeViewDescription*) compositeViewDescription; + +@end + @interface UICompositeViewController : UIViewController { @private UIView *stateBarView; diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 76efd4cde..934d17e7c 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -24,9 +24,10 @@ - (id)copy { UICompositeViewDescription *copy = [UICompositeViewDescription alloc]; copy->content = self->content; + copy->stateBar = self->stateBar; + copy->stateBarEnabled = self->stateBarEnabled; copy->tabBar = self->tabBar; copy->tabBarEnabled = self->tabBarEnabled; - copy->stateBarEnabled = self->stateBarEnabled; copy->fullscreen = self->fullscreen; return copy; } @@ -156,13 +157,13 @@ } } - if(contentViewController != nil) { + if(oldViewDescription != nil && contentViewController != nil && oldViewDescription->content != currentViewDescription->content) { [UICompositeViewController removeSubView: contentViewController]; } - if(tabBarViewController != nil) { + if(oldViewDescription != nil && tabBarViewController != nil && oldViewDescription->tabBar != currentViewDescription->tabBar) { [UICompositeViewController removeSubView: tabBarViewController]; } - if(stateBarViewController != nil) { + if(oldViewDescription != nil && stateBarViewController != nil && oldViewDescription->stateBar != currentViewDescription->stateBar) { [UICompositeViewController removeSubView: stateBarViewController]; } @@ -253,9 +254,15 @@ // Change view if(description != nil) { - [UICompositeViewController addSubView: contentViewController view:contentView]; - [UICompositeViewController addSubView: tabBarViewController view:tabBarView]; - [UICompositeViewController addSubView: stateBarViewController view:stateBarView]; + if(oldViewDescription == nil || oldViewDescription->content != currentViewDescription->content) { + [UICompositeViewController addSubView: contentViewController view:contentView]; + } + if(oldViewDescription == nil || oldViewDescription->tabBar != currentViewDescription->tabBar) { + [UICompositeViewController addSubView: tabBarViewController view:tabBarView]; + } + if(oldViewDescription == nil || oldViewDescription->stateBar != currentViewDescription->stateBar) { + [UICompositeViewController addSubView: stateBarViewController view:stateBarView]; + } } // Dealloc old view description diff --git a/Classes/LinphoneUI/UIHistoryCell.h b/Classes/LinphoneUI/UIHistoryCell.h index 7500e1c8a..59e4b8ea9 100644 --- a/Classes/LinphoneUI/UIHistoryCell.h +++ b/Classes/LinphoneUI/UIHistoryCell.h @@ -30,6 +30,8 @@ LinphoneCallLog *callLog; } +@property (assign) LinphoneCallLog *callLog; + @property (nonatomic, retain) IBOutlet UIImageView* imageView; @property (nonatomic, retain) IBOutlet UILabel* displayNameLabel; @property (nonatomic, retain) IBOutlet UIButton* detailsButton; @@ -40,7 +42,7 @@ - (IBAction)onDetails:(id) event; - (IBAction)onDelete:(id) event; -- (void)update:(LinphoneCallLog*) callLogs; +- (void)update; - (void)enterEditMode; - (void)exitEditMode; diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 248431b35..3ca3d5592 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -22,6 +22,7 @@ @implementation UIHistoryCell +@synthesize callLog; @synthesize displayNameLabel; @synthesize imageView; @synthesize deleteButton; @@ -75,21 +76,21 @@ #pragma mark - -- (void)update:(LinphoneCallLog*) aCallLog { - self->callLog = aCallLog; +- (void)update { + // Set up the cell... LinphoneAddress* partyToDisplay; UIImage *image; - if (aCallLog->dir == LinphoneCallIncoming) { - if (aCallLog->status == LinphoneCallSuccess) { + if (callLog->dir == LinphoneCallIncoming) { + if (callLog->status == LinphoneCallSuccess) { image = [UIImage imageNamed:@"call_status_incoming.png"]; } else { image = [UIImage imageNamed:@"call_status_missed.png"]; } - partyToDisplay = aCallLog->from; + partyToDisplay = callLog->from; } else { image = [UIImage imageNamed:@"call_status_outgoing.png"]; - partyToDisplay = aCallLog->to; + partyToDisplay = callLog->to; } const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):""; diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 36150e13c..f49ba5535 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -37,34 +37,49 @@ - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [historyButton release]; + [contactsButton release]; + [dialerButton release]; + [settingsButton release]; + [chatButton release]; + [super dealloc]; } #pragma mark - ViewController Functions -- (void)viewDidLoad { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeView:) name:@"LinphoneMainViewChange" object:nil]; - [self update:[[LinphoneManager instance] currentView]]; +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(changeViewEvent:) + name:@"LinphoneMainViewChange" + object:nil]; + [self update:[[PhoneMainView instance] currentView]]; } -- (void)viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - [historyButton release]; - [contactsButton release]; - [dialerButton release]; - [settingsButton release]; - [chatButton release]; +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneMainViewChange" + object:nil]; } -#pragma mark - -- (void)changeView: (NSNotification*) notif { +#pragma mark - Event Functions + +- (void)changeViewEvent: (NSNotification*) notif { NSNumber *viewNumber = [notif.userInfo objectForKey: @"view"]; if(viewNumber != nil) [self update:[viewNumber intValue]]; } + +#pragma mark - + - (void)update:(PhoneView) view { if(view == PhoneView_History) { historyButton.selected = TRUE; @@ -97,23 +112,23 @@ #pragma mark - Action Functions - (IBAction)onHistoryClick: (id) sender { - [[LinphoneManager instance] changeView:PhoneView_History]; + [[PhoneMainView instance] changeView:PhoneView_History]; } - (IBAction)onContactsClick: (id) event { - [[LinphoneManager instance] changeView:PhoneView_Contacts]; + [[PhoneMainView instance] changeView:PhoneView_Contacts]; } - (IBAction)onDialerClick: (id) event { - [[LinphoneManager instance] changeView:PhoneView_Dialer]; + [[PhoneMainView instance] changeView:PhoneView_Dialer]; } - (IBAction)onSettingsClick: (id) event { - [[LinphoneManager instance] changeView:PhoneView_Settings]; + [[PhoneMainView instance] changeView:PhoneView_Settings]; } - (IBAction)onChatClick: (id) event { - [[LinphoneManager instance] changeView:PhoneView_Chat]; + [[PhoneMainView instance] changeView:PhoneView_Chat]; } diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index 8df168b19..97ea70e3d 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -47,19 +47,22 @@ NSTimer *callQualityTimer; #pragma mark - ViewController Functions -- (void)viewDidLoad { - [super viewDidLoad]; - - // Set observer - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) name:@"LinphoneRegistrationUpdate" object:nil]; +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; // Set callQualityTimer [callQualityImage setHidden: true]; callQualityTimer = [NSTimer scheduledTimerWithTimeInterval:1 - target:self - selector:@selector(callQualityUpdate) - userInfo:nil - repeats:YES]; + target:self + selector:@selector(callQualityUpdate) + userInfo:nil + repeats:YES]; + + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(registrationUpdate:) + name:@"LinphoneRegistrationUpdate" + object:nil]; // Update to default state LinphoneProxyConfig* config = NULL; @@ -68,8 +71,14 @@ NSTimer *callQualityTimer; [self proxyConfigUpdate: config]; } -- (void) viewDidUnload { - [[NSNotificationCenter defaultCenter] removeObserver:self]; +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + // Remove observer + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneRegistrationUpdate" + object:nil]; + [callQualityTimer invalidate]; } @@ -82,6 +91,9 @@ NSTimer *callQualityTimer; [self proxyConfigUpdate:config]; } + +#pragma mark - + - (void)proxyConfigUpdate: (LinphoneProxyConfig*) config { LinphoneRegistrationState state; NSString* message = nil; diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib index 7ef29c7d7..ff171f256 100644 --- a/Classes/LinphoneUI/UIStateBar.xib +++ b/Classes/LinphoneUI/UIStateBar.xib @@ -63,7 +63,7 @@ IBCocoaTouchFramework NSImage - status_disconnected.png + led_disconnected.png @@ -269,8 +269,8 @@ YES 3 + {18, 17} {640, 46} - {18, 17} 1181 diff --git a/Classes/Model/ChatModel.h b/Classes/Model/ChatModel.h new file mode 100644 index 000000000..4c2f11963 --- /dev/null +++ b/Classes/Model/ChatModel.h @@ -0,0 +1,47 @@ +/* ChatModel.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface ChatModel : NSObject { + @private + NSNumber *chatId; + NSString *localContact; + NSString *remoteContact; + NSNumber *direction; + NSString *message; + NSDate *time; +} + +@property (nonatomic, readonly) NSNumber *chatId; +@property (nonatomic, copy) NSString *localContact; +@property (nonatomic, copy) NSString *remoteContact; +@property (nonatomic, copy) NSNumber *direction; +@property (nonatomic, copy) NSString *message; +@property (nonatomic, copy) NSDate *time; + +- (void) create; ++ (ChatModel*) read:(NSNumber*)id; +- (void) update; +- (void) delete; + ++ (NSArray *) listConversations; ++ (NSArray *) listMessages:(NSString *)contact; + +@end diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m new file mode 100644 index 000000000..5c5ef40ed --- /dev/null +++ b/Classes/Model/ChatModel.m @@ -0,0 +1,229 @@ +/* ChatModel.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "ChatModel.h" +#import "LinphoneManager.h" + +@implementation ChatModel + +@synthesize chatId; +@synthesize localContact; +@synthesize remoteContact; +@synthesize message; +@synthesize direction; +@synthesize time; + + +#pragma mark - Lifecycle Functions + +- (id)initWithData:(sqlite3_stmt *)sqlStatement { + self = [super init]; + if (self != nil) { + self->chatId = [[NSNumber alloc] initWithInt: sqlite3_column_int(sqlStatement, 0)]; + self.localContact = [NSString stringWithUTF8String: (const char*) sqlite3_column_text(sqlStatement, 1)]; + self.remoteContact = [NSString stringWithUTF8String: (const char*) sqlite3_column_text(sqlStatement, 2)]; + self.direction = [NSNumber numberWithInt:sqlite3_column_int(sqlStatement, 3)]; + self.message = [NSString stringWithUTF8String: (const char*) sqlite3_column_text(sqlStatement, 4)]; + self.time = [NSDate dateWithTimeIntervalSince1970:sqlite3_column_int(sqlStatement, 5)]; + } + return self; +} + +- (void)dealloc { + [chatId release]; + [localContact release]; + [remoteContact release]; + [message release]; + [direction release]; + [time release]; + + [super dealloc]; +} + + +#pragma mark - CRUD Functions + +- (void)create { + sqlite3* database = [[LinphoneManager instance] database]; + if(database == NULL) { + NSLog(@"Database not ready"); + return; + } + const char *sql = [[NSString stringWithFormat:@"INSERT INTO chat (localContact, remoteContact, direction, message, time) VALUES (\"%@\", \"%@\", %i, \"%@\", %i)", + localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970]] UTF8String]; + sqlite3_stmt *sqlStatement; + if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + return; + } + + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { + NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + sqlite3_finalize(sqlStatement); + } +} + ++ (ChatModel*)read:(NSNumber*)chatId { + sqlite3* database = [[LinphoneManager instance] database]; + if(database == NULL) { + NSLog(@"Database not ready"); + return nil; + } + + const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time FROM chat WHERE id=%@", + chatId] UTF8String]; + sqlite3_stmt *sqlStatement; + if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + return nil; + } + + ChatModel* line = nil; + int err = sqlite3_step(sqlStatement); + if (err == SQLITE_ROW) { + line = [[ChatModel alloc] initWithData:sqlStatement]; + } else if (err != SQLITE_DONE) { + NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + sqlite3_finalize(sqlStatement); + return nil; + } + + sqlite3_finalize(sqlStatement); + return line; +} + +- (void)update { + sqlite3* database = [[LinphoneManager instance] database]; + if(database == NULL) { + NSLog(@"Database not ready"); + return; + } + + const char *sql = [[NSString stringWithFormat:@"UPDATE chat SET localContact=\"%@\", remoteContact=\"%@\", direction=%i, message=\"%@\", time=%i WHERE id=%@", + localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], chatId] UTF8String]; + sqlite3_stmt *sqlStatement; + if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + return; + } + + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { + NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + sqlite3_finalize(sqlStatement); + return; + } + + sqlite3_finalize(sqlStatement); +} + +- (void)delete { + sqlite3* database = [[LinphoneManager instance] database]; + if(database == NULL) { + NSLog(@"Database not ready"); + return; + } + + const char *sql = [[NSString stringWithFormat:@"DELETE chat WHERE id=%@", + chatId] UTF8String]; + sqlite3_stmt *sqlStatement; + if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + return; + } + + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { + NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + sqlite3_finalize(sqlStatement); + return; + } + + sqlite3_finalize(sqlStatement); +} + + +#pragma mark - + ++ (NSArray *)listConversations { + sqlite3* database = [[LinphoneManager instance] database]; + if(database == NULL) { + NSLog(@"Database not ready"); + return [[[NSArray alloc] init] autorelease]; + } + + const char *sql = "SELECT id, localContact, remoteContact, direction, message, time FROM chat GROUP BY remoteContact ORDER BY time DESC"; + sqlite3_stmt *sqlStatement; + if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + NSLog(@"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)); + return [[[NSArray alloc] init] autorelease]; + } + + NSMutableArray *array = [[NSMutableArray alloc] init]; + int err; + while ((err = sqlite3_step(sqlStatement)) == SQLITE_ROW) { + ChatModel *line = [[ChatModel alloc] initWithData:sqlStatement]; + [array addObject:line]; + } + + if (err != SQLITE_DONE) { + NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + return [[[NSArray alloc] init] autorelease]; + } + + sqlite3_finalize(sqlStatement); + + NSArray *fArray = [NSArray arrayWithArray: array]; + [array release]; + return fArray; +} + ++ (NSArray *)listMessages:(NSString *)contact { + sqlite3* database = [[LinphoneManager instance] database]; + if(database == NULL) { + NSLog(@"Database not ready"); + return [[[NSArray alloc] init] autorelease]; + } + + const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time FROM chat WHERE remoteContact=\"%@\" ORDER BY time ASC", + contact] UTF8String]; + sqlite3_stmt *sqlStatement; + if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + NSLog(@"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)); + return [[[NSArray alloc] init] autorelease]; + } + + NSMutableArray *array = [[NSMutableArray alloc] init]; + int err; + while ((err = sqlite3_step(sqlStatement)) == SQLITE_ROW) { + ChatModel *line = [[ChatModel alloc] initWithData:sqlStatement]; + [array addObject:line]; + } + + if (err != SQLITE_DONE) { + NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + return [[[NSArray alloc] init] autorelease]; + } + + sqlite3_finalize(sqlStatement); + + NSArray *fArray = [NSArray arrayWithArray: array]; + [array release]; + return fArray; +} + +@end diff --git a/Classes/MoreViewController.h b/Classes/MoreViewController.h index 4cc2a28d4..896a3a003 100644 --- a/Classes/MoreViewController.h +++ b/Classes/MoreViewController.h @@ -20,7 +20,7 @@ #import @class ConsoleViewController; -@interface MoreViewController : UITableViewController { +@interface MoreViewController : UITableViewController { bool isLogViewEnabled; diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index b8dc86c26..3bb0af14d 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -24,6 +24,20 @@ #import "UICompositeViewController.h" #import "UIModalViewController.h" +typedef enum _PhoneView { + PhoneView_Wizard, + PhoneView_FirstLogin, + PhoneView_Dialer, + PhoneView_History, + PhoneView_Settings, + PhoneView_Chat, + PhoneView_ChatRoom, + PhoneView_Contacts, + PhoneView_InCall, + PhoneView_IncomingCall, + PhoneView_END +} PhoneView; + @interface PhoneMainView : UIViewController { @private UICompositeViewController *mainViewController; @@ -31,14 +45,28 @@ NSMutableArray *modalControllers; NSMutableDictionary *viewDescriptions; - PhoneView currentPhoneView; - + UIActionSheet *incomingCallActionSheet; UIActionSheet *batteryActionSheet; int loadCount; + + PhoneView currentView; + NSMutableArray* viewStack; } @property (nonatomic, retain) IBOutlet UICompositeViewController *mainViewController; +- (void)changeView:(PhoneView)view; +- (void)changeView:(PhoneView)view push:(BOOL)push; +- (void)changeView:(PhoneView)view dict:(NSDictionary *)dict; +- (void)changeView:(PhoneView)view dict:(NSDictionary *)dict push:(BOOL)push; +- (void)popView; +- (void)popView:(NSDictionary *)dict; +- (void)showTabBar:(BOOL)show; +- (void)fullScreen:(BOOL)enabled; +- (PhoneView)currentView; + ++ (PhoneMainView*) instance; + @end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 1a6cecd47..7b2cc2ef4 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -24,8 +24,20 @@ #import "FirstLoginViewController.h" #import "IncomingCallViewController.h" +#import "ChatRoomViewController.h" +#import "ChatViewController.h" +#import "DialerViewController.h" +#import "ContactsViewController.h" +#import "HistoryViewController.h" +#import "InCallViewController.h" +#import "SettingsViewController.h" +#import "FirstLoginViewController.h" +#import "WizardViewController.h" + #import "AbstractCall.h" +static PhoneMainView* phoneMainViewInstance=nil; + @implementation PhoneMainView @synthesize mainViewController; @@ -34,7 +46,10 @@ #pragma mark - Lifecycle Functions - (void)initPhoneMainView { - currentPhoneView = -1; + assert (!phoneMainViewInstance); + phoneMainViewInstance = self; + currentView = -1; + viewStack = [[NSMutableArray alloc] init]; loadCount = 0; // For avoiding IOS 4 bug // Init view descriptions @@ -77,6 +92,8 @@ [modalControllers removeAllObjects]; [modalControllers release]; + [viewStack release]; + [super dealloc]; } @@ -91,110 +108,22 @@ [super viewDidLoad]; [[self view] addSubview: mainViewController.view]; - // - // Main View - // - UICompositeViewDescription *dialerDescription = [UICompositeViewDescription alloc]; - dialerDescription->content = @"DialerViewController"; - dialerDescription->tabBar = @"UIMainBar"; - dialerDescription->tabBarEnabled = true; - dialerDescription->stateBar = @"UIStateBar"; - dialerDescription->stateBarEnabled = true; - dialerDescription->fullscreen = false; - [viewDescriptions setObject:dialerDescription forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; - - - // - // Contacts View - // - UICompositeViewDescription *contactsDescription = [UICompositeViewDescription alloc]; - contactsDescription->content = @"ContactsViewController"; - contactsDescription->tabBar = @"UIMainBar"; - contactsDescription->tabBarEnabled = true; - contactsDescription->stateBar = nil; - contactsDescription->stateBarEnabled = false; - contactsDescription->fullscreen = false; - [viewDescriptions setObject:contactsDescription forKey:[NSNumber numberWithInt: PhoneView_Contacts]]; - - - // - // Call History View - // - UICompositeViewDescription *historyDescription = [UICompositeViewDescription alloc]; - historyDescription->content = @"HistoryViewController"; - historyDescription->tabBar = @"UIMainBar"; - historyDescription->tabBarEnabled = true; - historyDescription->stateBar = nil; - historyDescription->stateBarEnabled = false; - historyDescription->fullscreen = false; - [viewDescriptions setObject:historyDescription forKey:[NSNumber numberWithInt: PhoneView_History]]; - - // - // InCall View - // - UICompositeViewDescription *inCallDescription = [UICompositeViewDescription alloc]; - inCallDescription->content = @"InCallViewController"; - inCallDescription->tabBar = @"UICallBar"; - inCallDescription->tabBarEnabled = true; - inCallDescription->stateBar = @"UIStateBar"; - inCallDescription->stateBarEnabled = true; - inCallDescription->fullscreen = false; - [viewDescriptions setObject:inCallDescription forKey:[NSNumber numberWithInt: PhoneView_InCall]]; - - - // - // Settings View - // - UICompositeViewDescription *settingsDescription = [UICompositeViewDescription alloc]; - settingsDescription->content = @"SettingsViewController"; - settingsDescription->tabBar = @"UIMainBar"; - settingsDescription->tabBarEnabled = true; - settingsDescription->stateBar = nil; - settingsDescription->stateBarEnabled = false; - settingsDescription->fullscreen = false; - [viewDescriptions setObject:settingsDescription forKey:[NSNumber numberWithInt: PhoneView_Settings]]; - - // - // Chat View - // - UICompositeViewDescription *chatDescription = [UICompositeViewDescription alloc]; - chatDescription->content = @"ChatViewController"; - chatDescription->tabBar = @"UIMainBar"; - chatDescription->tabBarEnabled = true; - chatDescription->stateBar = nil; - chatDescription->stateBarEnabled = false; - chatDescription->fullscreen = false; - [viewDescriptions setObject:chatDescription forKey:[NSNumber numberWithInt: PhoneView_Chat]]; - - // - // FirstLogin View - // - UICompositeViewDescription *firstLoginDescription = [UICompositeViewDescription alloc]; - firstLoginDescription->content = @"FirstLoginViewController"; - firstLoginDescription->tabBar = nil; - firstLoginDescription->tabBarEnabled = false; - firstLoginDescription->stateBar = nil; - firstLoginDescription->stateBarEnabled = false; - firstLoginDescription->fullscreen = false; - [viewDescriptions setObject:firstLoginDescription forKey:[NSNumber numberWithInt: PhoneView_FirstLogin]]; - - // - // Wizard View - // - UICompositeViewDescription *wizardDescription = [UICompositeViewDescription alloc]; - wizardDescription->content = @"WizardViewController"; - wizardDescription->tabBar = nil; - wizardDescription->tabBarEnabled = false; - wizardDescription->stateBar = nil; - wizardDescription->stateBarEnabled = false; - wizardDescription->fullscreen = false; - [viewDescriptions setObject:wizardDescription forKey:[NSNumber numberWithInt: PhoneView_Wizard]]; + // Init descriptions + [viewDescriptions setObject:[ChatRoomViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_ChatRoom]]; + [viewDescriptions setObject:[ChatViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Chat]]; + [viewDescriptions setObject:[DialerViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; + [viewDescriptions setObject:[ContactsViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Contacts]]; + [viewDescriptions setObject:[HistoryViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_History]]; + [viewDescriptions setObject:[InCallViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_InCall]]; + [viewDescriptions setObject:[SettingsViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Settings]]; + [viewDescriptions setObject:[FirstLoginViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_FirstLogin]]; + [viewDescriptions setObject:[WizardViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Wizard]]; +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; // Set observers - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(changeView:) - name:@"LinphoneMainViewChange" - object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" @@ -203,17 +132,31 @@ selector:@selector(registrationUpdate:) name:@"LinphoneRegistrationUpdate" object:nil]; - + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) name:UIDeviceBatteryLevelDidChangeNotification object:nil]; } +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + // Remove observers + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneCallUpdate" + object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneRegistrationUpdate" + object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIDeviceBatteryLevelDidChangeNotification + object:nil]; +} + - (void)viewDidUnload { [super viewDidUnload]; - [[NSNotificationCenter defaultCenter] removeObserver:self]; - + // Avoid IOS 4 bug self->loadCount--; } @@ -271,7 +214,7 @@ case LinphoneCallConnected: case LinphoneCallUpdated: { - [[LinphoneManager instance] changeView:PhoneView_InCall]; + [self changeView:PhoneView_InCall]; break; } case LinphoneCallUpdatedByRemote: @@ -280,7 +223,7 @@ const LinphoneCallParams* remote = linphone_call_get_remote_params(call); if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { - [[LinphoneManager instance] changeView:PhoneView_InCall]; + [self changeView:PhoneView_InCall]; } break; } @@ -299,15 +242,15 @@ [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: FALSE], nil] autorelease] , @"setTransferMode:", nil] autorelease]; - [[LinphoneManager instance] changeView:PhoneView_Dialer dict:dict]; + [self changeView:PhoneView_Dialer dict:dict]; } else { - [[LinphoneManager instance] changeView:PhoneView_InCall]; + [self changeView:PhoneView_InCall]; } break; } case LinphoneCallStreamsRunning: { - [[LinphoneManager instance] changeView:PhoneView_InCall]; + [self changeView:PhoneView_InCall]; break; } default: @@ -318,12 +261,27 @@ #pragma mark - -- (CATransition*)getTransition:(PhoneView)old new:(PhoneView)new { ++ (CATransition*)getBackwardTransition { CATransition* trans = [CATransition animation]; [trans setType:kCATransitionPush]; [trans setDuration:0.35]; [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + [trans setSubtype:kCATransitionFromLeft]; + return trans; +} + ++ (CATransition*)getForwardTransition { + CATransition* trans = [CATransition animation]; + [trans setType:kCATransitionPush]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + [trans setSubtype:kCATransitionFromRight]; + + return trans; +} + ++ (CATransition*)getTransition:(PhoneView)old new:(PhoneView)new { bool left = false; if(old == PhoneView_Chat) { @@ -351,44 +309,80 @@ } if(left) { - [trans setSubtype:kCATransitionFromLeft]; + return [PhoneMainView getBackwardTransition]; } else { - [trans setSubtype:kCATransitionFromRight]; + return [PhoneMainView getForwardTransition]; } - - return trans; } -- (void)changeView: (NSNotification*) notif { - NSNumber *viewId = [notif.userInfo objectForKey: @"view"]; - NSNumber *tabBar = [notif.userInfo objectForKey: @"tabBar"]; - NSNumber *fullscreen = [notif.userInfo objectForKey: @"fullscreen"]; - - // Check view change - if(viewId != nil) { - PhoneView view = [viewId intValue]; - UICompositeViewDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; - if(description == nil) - return; - if(view != currentPhoneView) { - [mainViewController setViewTransition:[self getTransition:currentPhoneView new:view]]; - [mainViewController changeView:description]; - currentPhoneView = view; - } ++ (PhoneMainView *) instance { + return phoneMainViewInstance; +} + +- (void) showTabBar:(BOOL) show { + [mainViewController setToolBarHidden:!show]; +} + +- (void)fullScreen:(BOOL) enabled { + [mainViewController setFullScreen:enabled]; +} + +- (void)changeView:(PhoneView)view { + [self changeView:view dict:nil push:FALSE]; +} + +- (void)changeView:(PhoneView)view dict:(NSDictionary *)dict { + [self changeView:view dict:dict push:FALSE]; +} + +- (void)changeView:(PhoneView)view push:(BOOL)push { + [self changeView:view dict:nil push:push]; +} + +- (void)changeView:(PhoneView)view dict:(NSDictionary *)dict push:(BOOL)push { + if(push && currentView != -1) { + [viewStack addObject:[NSNumber numberWithInt: currentView]]; + } else { + [viewStack removeAllObjects]; } + [self _changeView:view dict:dict transition:nil]; +} + +- (void)_changeView:(PhoneView)view dict:(NSDictionary *)dict transition:(CATransition*)transition { + UICompositeViewDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; + if(description == nil) + return; - if(tabBar != nil) { - [mainViewController setToolBarHidden:![tabBar boolValue]]; - } - - if(fullscreen != nil) { - [mainViewController setFullScreen:[fullscreen boolValue]]; - } + if(view != currentView) { + if(transition == nil) + transition = [PhoneMainView getTransition:currentView new:view]; + [mainViewController setViewTransition:transition]; + [mainViewController changeView:description]; + currentView = view; + } // Call abstractCall - NSDictionary *dict = [notif.userInfo objectForKey: @"args"]; if(dict != nil) [AbstractCall call:[mainViewController getCurrentViewController] dict:dict]; + + NSDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithInt:currentView] forKey:@"view"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; +} + +- (void)popView { + [self popView:nil]; +} + +- (void)popView:(NSDictionary *)dict { + if([viewStack count] > 0) { + PhoneView view = [[viewStack lastObject] intValue]; + [viewStack removeLastObject]; + [self _changeView:view dict:dict transition:[PhoneMainView getBackwardTransition]]; + } +} + +- (PhoneView)currentView { + return currentView; } - (void)displayCallError:(LinphoneCall*) call message:(NSString*) message { @@ -461,7 +455,7 @@ } } else { IncomingCallViewController *controller = [[IncomingCallViewController alloc] init]; - [controller update:call]; + [controller setCall:call]; [self addModalViewController:controller]; } } diff --git a/Classes/SettingsViewController.h b/Classes/SettingsViewController.h index c6b0b4754..7bc3df627 100644 --- a/Classes/SettingsViewController.h +++ b/Classes/SettingsViewController.h @@ -19,9 +19,10 @@ #import +#import "UICompositeViewController.h" #import "IASKAppSettingsViewController.h" -@interface SettingsViewController: UIViewController { +@interface SettingsViewController: UIViewController { IASKAppSettingsViewController *settingsController; UINavigationController *navigationController; } diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index bd5f34100..41e117729 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -32,6 +32,20 @@ } +#pragma mark - UICompositeViewDelegate Functions + ++ (UICompositeViewDescription*) compositeViewDescription { + UICompositeViewDescription *description = [UICompositeViewDescription alloc]; + description->content = @"SettingsViewController"; + description->tabBar = @"UIMainBar"; + description->tabBarEnabled = true; + description->stateBar = nil; + description->stateBarEnabled = false; + description->fullscreen = false; + return description; +} + + #pragma mark - ViewController Functions - (void)viewDidLoad { diff --git a/Classes/WizardViewController.h b/Classes/WizardViewController.h index d1115d1f4..0326f5b07 100644 --- a/Classes/WizardViewController.h +++ b/Classes/WizardViewController.h @@ -19,7 +19,9 @@ #import -@interface WizardViewController : UIViewController { +#import "UICompositeViewController.h" + +@interface WizardViewController : UIViewController { UIView *contentView; UIView *welcomeView; diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index e3b1c4cb2..226f61ece 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -23,6 +23,8 @@ #import "LinphoneManager.h" +#import "PhoneMainView.h" + typedef enum _ViewElement { ViewElement_Username = 100, ViewElement_Password = 101, @@ -74,6 +76,20 @@ typedef enum _ViewElement { } +#pragma mark - UICompositeViewDelegate Functions + ++ (UICompositeViewDescription*) compositeViewDescription { +UICompositeViewDescription *description = [UICompositeViewDescription alloc]; + description->content = @"WizardViewController"; + description->tabBar = nil; + description->tabBarEnabled = false; + description->stateBar = nil; + description->stateBarEnabled = false; + description->fullscreen = false; + return description; +} + + #pragma mark - ViewController Functions - (void)viewDidLoad { @@ -168,7 +184,7 @@ typedef enum _ViewElement { } - (IBAction)onCancelClick:(id)sender { - [[LinphoneManager instance] changeView:PhoneView_Dialer]; + [[PhoneMainView instance] changeView:PhoneView_Dialer]; } - (IBAction)onCreateAccountClick:(id)sender { diff --git a/Resources/chat_back_default.png b/Resources/chat_back_default.png new file mode 100644 index 0000000000000000000000000000000000000000..3c90a7bb6868b1f7bca3bd8ab9118f83e2d33e52 GIT binary patch literal 4647 zcmbU_c{G&!`(t;<9kDQ=t=U`1g|uS#Lo96YA>Mct0j#YB(g;#xDDWZDaG)Tc%f3{#AWiUJdes>C(J>SZ`iq6;tqK0y zDSLBEkS^Ju2vSyn$>U*27zhbhfGaAgsHn(+5HL6l3PV8Q2zj`Qnj%6C1_S+gzzl2t z1P?Wgp1}`W3`!I1MWa#FpwPg;K!rd>1+u><6plinj&vXp@(d1nYOpU27bNdXh5Xc@ zN2KEYNfa81>5h;t`jp=p8{p8g$z55?U4AH}}ZABke53>t)^K;a57sE^N4Tz_#> zX&B=Fy78~vRGVN55sD#F$yfaGjCy!LehM>k_uma2F*3YSyWme^6a{x#kBquG`+Ula%=f*K623WLK{lwc|d7*Z7uM;qwsqR#887$9|3U??>Fr;dM<)l<<^L@2^k zRgrqiaJW7k#h~;J^z_hhBuXERHux!P>`SHLeDTDec1aAoKV((@tE`%?KM_YG``eJo zmw$GEr5Bk-rh1VnAYE%^kU0)d@;#!D%JX-$dPILx0FhwePxb-*m0vZ|zu1SN{%_nU zI1Ht)4@amV6qOMMifHf;S;GG(XHbSS(4*$~k7oIK#OS~y^q!EFe#@xRj9%?_=0Z2zPG3yS!SKt0}Asdx(d0B3bL|x|wB=6OdLGRo< zBMuLe9(TPx$8Szpsogq_{k}K~MT{?g5doeK^mR0ENo)<@H_5Tcot6RB6PFncey}?8 zoc{1qdaiav^5e5$EuW5O4s~@e9L-!L%AKB^8XDvpIP;vp$n_yhUTtf{VQ1mTt2;Xa zM$Gl4&ifC=p9Rf!-j0l&oobEXi|=UDIl&*t#2n*S?I`j6xUQ_sdV53_z2N5Ia^v=a zHK5p1KH2Il#zr24Ig4?WPj)`byLKtbEUqUGA5-?=mKx8MKd7Ie{dZrRYsdZ8m(|tN zp2RQ7t49z;ILZ(609c3UwsDX$JBh7T*cRpD)M>Xywiua(SJpN`L;cc0d-2Ke>!%zX z-F@zTnXF2;DBMgusXf1d9i&q@@q5u}EY|X22j7GBgdGXBHPIC}d%P@Ccpju6G6pik z_d82R$x~wvSZ4hG=uVu;LOf}wRnu~i;AVrdE$Cq8vU$Ib;Ig9R)>Q}#M(@y#oVG+ zbUG6z_B5Qb5BB#tgj&OA(~F|THG!pFi6=+Kc)M>|g6x$-O|aW99uHs5i%E)fK?jUo zfAnPBSt6s%X#{f-^}Bn}L42%ERYY&!iKo80mo)-sj@?O;5ZRjV8R`67l~L{z$I0~y z61_6nZ0fC!sfq)|qpbH}ZwuKRK0lV#L0Vpyl9KYXmXFHcfI0Fdb}~}dv%PARiFKbj zo+fT3#m<>0pc1M&3>fj^k2hGA5xqTa1ru*Ca8tTQ;ySM2;5RdzmUO)Rd8=?Ue!Hct z#kd>HqAqe_C42_<73&x8xzxpNXN@O^F8FxmINORnTcuoad`dd^!W-V>;FOi6lO)-=&4dr@ z87J|hQ4V5O0{KrqLAL^thkG2DUu<0e82b9L|DA(%h#@2h#$4y>l)V%w!0q5R`EF7* z^uQe?QYNh>uhKTEI3(g{v{`bo{8VLGei0(feUt)BnGtJ;x<-MQHZq`|1J3p>A^S}W zg7oovt_(>{KVY#mLWy5y{?i9uA-PiDZbuOQ$lr; zGSC1LB*ZH^nU;=H&(VuV$U=xC=K7PcurRgKk`nyY8#qUOn&QZ@<-tEIArL*EXK_d104%l6P>ByZ0QMv=vlFx@^CIlXCo;!^$~y1*ePXE&I3E;n8>VN#a!jpW^~D>n^WUDuk-#C0JB z&nk*%k}7w1J9g&c>v!4Q`vy{yk@XLYtDS@(MJIXvZAz3M*u!%NU2iZe@$mu^i=4x> z4!dzwfA7*|$@AJLMLyM3dEP3YQqv9$4XqQ{Es-^i?RYt1n|0qfmu^y+5O3N$U?zN5 zlD^p?_*zu1Tqb{lvBk&vJCc2!s*5pp=40cetX7OEuIzekY{Q%kOr7&G>Qpa6yyNMG9=(a~x;bGTx@1&=AVyV%r|Gi~ zp)RpnBqQCxpzBeR-a-xfVnI(zx+Pa^U-IU|4<9~!P0XcmPv+w(_BI;J>${;jnn}r6 zY5*GAazn^Hn%zN$Vi#m(2y2-Sav(ZjpawhM6T6;G|{p5G^;yWga zu!}P%J>@h&ht33GV*eWgSVaN+Za<(s+u|!W_Sr`mF=5GqeUpg^i-cF6;L)*j58eok zbNO(-NFMleXHKNqYJ0R7L--Ta-y$g9+(xQr8;x)Y+CjMid7QH4wKEzsy=gY58@QO* zYx9OMG*>08$I$hA7GVplq7yd&ELhG6S&{UXIbv5pEpj14kkT0kV2Sg1S-IBZZhY3` zWral9d1`2F)92#oMpe`|iEqrrto_f6i@`yvO6t2DVY}ORoDw4^hy(?N?U8*diN1#|O!5&Ok}t%)Y@ z4yYy%FBi`k!TX8YD`jQ4qN4sF^}MyUAlcvlm}I+uqSUra{e4~SD=O+z$L7P@1Se_& z7<^gy~z=CG}4uT7PT2y-}9!X%RguzV0|QJp3&4?p+;2%FFEgp$iVd4evNv zuf6=GvKC1$Xymr{_C9x^)UE(hH@}uL8TTtmcO5s;ZxJE<@nZwu1o6(;*jSKk8c?#` z*`)As#g4(1{xC@&%=^|SQ5{OMGSJW7jwAAjeC zJDhy=s)QsCHuwBFQP}oE$Q~;*#9A=rP8+0}?hCg$7JFRmNt+t=9nq9Uxnr_h?D4!kTYiO8F8S%<@vX6<>VT-<) zzpK^k(6m_=ujO!9&lMZ2udTI^!nPynvZZ_B!l0bobS|qbtjUo++An8Z6L60TA0RC1;u!fWYHX2M#q`H`dA0IodQxTk zI_DnN9uu(m2(z&K0qrgG^hU>->WZ%5(aPz9jh>Zs=|Yd3L{oyD#o%{rf8{<*e=rxY?uWPh0R$AKG9hUtd!Gu!sNw)AWb=`&rO8v!XY$!*{6@i|JphZ=G?G%DuF*YSF)6g|)3-)paTQ2)6SLS#PL68|pOBUGK1FT4Lmn zlx5b90&*V~0tWfI3OASZYXaRYOLHOudb{?vhfj*D&hn69-c=iMyg_wXtfQr(RjA?9 zO@SxjdiidhD({0RPVTaQ%uQEVr_PjSF3Wtsa=X7ztKdTRU7y+=@Nx5sCnL%8)~VkG zt)^aNAKrhg#vbDnq^YSn&-OKM$;vIKG4^qBS|Q3jDkI`yOC^y&OGR3-TrzlTEn~2F z-_ffiZkD6dvArN2Y%=VNz2uy@Lo1_N_c)^Xo&xUY}x||pw37k z0}teB`#^PbdcizRp<6{VG1lAPyUzX`Q>VThz{U+Q#L_fobNelw$_J5gye((01z=Z z!`lG>*CCJ&6W|7^Zq1@LklDdBbz$1meV7r%Pzqo~rh8N1=0QYXiXDYWjtc3e-~fQf zhw9+Mbg{C;lITHd#4Q=M$e>_Q8vt;Ik-wvh<T_C=3#fQAKNG)iGEU3jS*$ zKyRUBAFLgo@XHs-=_CA@%wQ}M84(eo7NM?25A{W&b#-;OY+x{|poA(TipC^Hs?r#H zep|p(7^F~YFq2BB!M7|Dz3E|0eFPZk-zfwITUq^Mn8x@86bKnIk{FCctD%rVL0ftK zlx8sPDE|}2ze+P4qJk+%I|_py7D@u^;j`zrGKk%OceEu4MuW8prGiBv2IA?YupkPJ zX^z)NfOpi$R5BKY)27;a*(3AZAWsI)D9t2}>ai>HKA!zpA!C_M=N6JIR#U;LwV|8L&9 zXq2w0DH@}VQP;!})Qu3objkl8%#dI($gSr1U(ND+3+%ux@}JfRnSX|dLIWoz6daB2 zv*NzsxE?ac8#zS2e42|EJt+<)#3AJPZ8uVaWn?C#tS7N&YKw=Ip;x^dMtt%#-Fsp? z7430!Z@xa=I?1--lJ$}o(RF9Ir?w?4oOIfFYajr0$+oU{RJ~0| z{|*AC%ZYbNxt#f?+I&BSJ#nF1*06CrofwVj@~iPweJx&mdo_0a7QrEA z;iS4At%f6BXQPLR6@YgQ_=haI3)d;k_@kdVdF`!G4#_!ssqKpC_4oMnYEz3j{AUQ% zD@fo*;XF1Z)j5OgW_jGfi0PWxmbFW-)}x6KYCGN>&34d#`0(K&kJ;H-n<9g;>l8>q z2+mD)5CUv_67QI?r`Ab+c@ec7?Cp)%BWpW&sq*q-u_u))phzUJ3JsJiJwH2JWEeL? z{+_+taAwwBR8&+Tsec85TVMO~PTbM2-u4A-Hw(7+lCG83>D*k_%KS(@sT*b(D-VN- zO3i-wpsJ>poa))ka&&i(zTLT4s7;6ABB2rz+&3cHPYUw#^2(?ki$BS0dqFgdcrWbz z^B#*qo@ddrD6yd$Zg~~hv_y{lQ5c^<@xa2w<&?wvxVed=V%aR&W<$#fa-Z$zMSv9s z;Bc~psF^oJFB`wpe^Al6+FWL#w=v=ZuHSTco}R5Jw2EvUY4Dw$7AD*k0nVL2fBasg zcu#6ZMxnZIf4mZvl?8)gnLT}dB0W$jH1gAAXKUoS+_a$2z^RNslaIrag@wf&M$leg zZt(CDE~d<)DwNdJL>2XMIBB(Gsr#enU!V^jyfPu(@%W-X2|yN*<3;ZC>}c?PY;9$= z0pVkQ(c<7#l$3ZCcZ0CV$=ziw`@>~i4Es2G+6oE^N=lubos@U|oTU)KJ=gM&1n5ag zNx^RdQ;gMxu|rz6+Xh=Vmu80=1BO*pR4(G85PSBh$9T(5b~HtNJaF(}#|X6RI^|J3 z?OJ`k0!eVYE*dvk;l^k3j(7tG%LKv7`#6!Kb?ZU9>H*DCoG>(=)8KqmR$x*my0KJ2 zfXfgD&vc;@NfVH-Kw@c4Xqyw1^Z~Lh4Otvy=BwmQ-&d!94AZyS{@Jcn=WfLTzh>0^`oj$LU&yRea~-r1fFh0gY}iN*yLzbrTtP zEPcnLu+vmf6R2~|SWJ9JVc8T(LpxV#6 zsH|Mg%zE5g8ihLGm|v@!h`MNZWz$%6r|~uuFxbTneD6~xHb2d=Y0LnY z-C|QQ{Uxg0j#v;=pZ+?=0J$@hK+=(aSaOuLJ(Ez_S23kiIYez4KXQqBewO)ib)(Z; z;nrkM+?`{8eF%U2ZI=Qt{v=FgnZ*IM4ZwcA@W z96&~xU55k7oBO<;^@jo=%1Xn1Dv&`P96LH_4W0mn*VB#YV4jeuN>mx;R&xv3S(o0`I7eS+jmNOY}oz5 z#6-#GItb&=tM&EumoLxPA3Ju;OP8F(e`NpRF*2qgCr8};u^pjT;#!4r&WWBhi_;gs za_RUEys?K^idFDSvQQ9XYUiwz=W}h!1CLM*<(<|54(@V0U2L<(dvf1nbQ4x`~7=!v_9vJAs2#$51MNCGI;jR&NlD4f%uJv8 zjg1rb_V%Wxrz)aLA0`C^1iZa=@1DHGoja~W59}R9lanm?6J!QtQ+mk~>F0X_V}+)xCteMv-1T#Jb33C% za)breQlg`qN=mp={3iOMqodEcfp(`fbh|IyX=y@N;xMf0`v`dgv6F=jfdS}cALF{=ylIx{j9^2`<@*gdUw;X=}oz%+24hs*R1RliY z5P`eULAfyBQgOC$M&kOjXac(yLM7XWM%2IAwnzzcw) z0Dzm1d*S29p}|2NE=<9^r$M=7s{AX+F5y5L?c2cI*qDca!L+JWYx9%b%Ere03tC8| zn01DPoLQY4OkRFTvcgvRa(m(iAKEa7n@VgLF<5rDn}6^C9~GrL$ji^?ZB#d$_cr&_ zx1)4_|2dA#Wf@W72X?BD$k+S&tbPz3RP){=JWBX#jgK_BZHD)BfRppoU(>07vO7?V z@ioLRL}K^uxR4O>);KQ`X^*zHjHCjHJ|vcHSGLWm+3;SG>bo~@ybyR%HSaX38mFDD z10)hD47S_ep=!T`WwZF!B8+O}?6DMwjZ=4k;d3&2R_uNyw=2r7+babbL zLg>os>P|VinU9qi8kK5v*Epr7Ms;C%d3)MvA&c@*fB%PZmQ?EOix;xB3Mt&9qoc1L zJ%UIms8&=~?%cU^qx*Ecv$M0ko!#kLxR0-IN_1>20a2DZMq@vE3y#!g2Z2DCo0~gb zTTG6KU`Ml9#)z_v(GLqVGjN*~NfM^udP76bmDeOXJv%xk29HRL2WMe=dOG`qtE;P` z*PDIH^&^3=Iy!hH#5Hu}vubN=lai8BQ&VSVW)>D`FAupTM(*g0!od`|f&Iq5b49mh z` zcvEnFZE1SC%Xb)T?AX}*7UftRPD56B+(6@pb*nolao?&JmzI`x^ypFR%ApV8kkwp9 z^)r8e8NQU1lmHF6i3k`DmhE)K!^LG$P+cz5+}ylfd`$#fR$4mw^{b04-|N=bjIrF% zn0fY?`tbNTlKp7SHNel$#lu4c0wG~YnS1lhs~qN-*j$#o`_9JGv=KsB*m7$t0BLYh zS-M_a9IyG=#QvS)SatP*xja_IW&!h)Q$l=Ok&uqM`cU@)b9xzZP{CEL_grIkR+dnJ zm&9K=G7>OedwO8($j7Ot!^7{FS+QM1Lqp(uK2Bx)xQmO~AcZ5deY??J<&riwuchOs z?&h*9larI>P&n!BxS(HnJn-Mu2 z&W(`R*#2z4Tcfjd@C_9dRMX~Fd};dKJG5r7*CKC>!9m2ww=LQ$Y?<@7dwR^C4?ca0 zf2cTBerVkrCIwuB_z=biN4G!ltv1 zSX&==byaZgzLzSpFh4Ks3Kergwv3skTbP->u5%C+L(65BIleTNvtBhug6$d?iA)we zbvQ@SV`aOBkdw01`teO@k!RN>liIpE!*E{itVeGrt!->_1c0(0@K|o)2bA68>oQdV z6ji)*P`{ojz@b*)WO{svI0OLq;J|CH@t=*D5UBKL7v# literal 0 HcmV?d00001 diff --git a/Resources/chat_field.png b/Resources/chat_field.png new file mode 100644 index 0000000000000000000000000000000000000000..17a1bee8df88d15de25356a53c840672dddd8162 GIT binary patch literal 4375 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 NmAM_R)YS9b{{YNr&+`BP literal 0 HcmV?d00001 diff --git a/Resources/chat_ok_default.png b/Resources/chat_ok_default.png new file mode 100644 index 0000000000000000000000000000000000000000..0c49ac3d5414176c98d001554a4c31ece99bb328 GIT binary patch literal 4336 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 literal 0 HcmV?d00001 diff --git a/Resources/chat_ok_over.png b/Resources/chat_ok_over.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe6248f82917e3f2aad61b5c687d3170e82ad29 GIT binary patch literal 4006 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 literal 0 HcmV?d00001 diff --git a/Resources/chat_send_default.png b/Resources/chat_send_default.png new file mode 100644 index 0000000000000000000000000000000000000000..1bee48a2f35c00afa3662d87d143bce80cf9948a GIT binary patch literal 5101 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 literal 0 HcmV?d00001 diff --git a/Resources/database.sqlite b/Resources/database.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..d52fcbd6e20bf26c09b10bf3134d4bb6680362f8 GIT binary patch literal 3072 zcmeHGPfNov6i=H@53=Lf^<9LG)suIzmLS!(n>7P_kP)+|7W#*^@dM~r@tgTcOohTM z?6$*{JoqK=zIc5Hir98lAPV(*=6Aw)|c0fSi4u z4(TJY?HfW*^kD3NDnQ>a=<#?ovOZQyJmn}~g=%5@3G+Au?p=ip+7*~&YY1Y_u2}+$ zB#68ugu;oHA)$`zuDxvFIEk1-msL|3+b;%^^%iP6zJ-cQ~lGQ jhyB~mu;sVi)rZa3urmr61@@?b>Hj^7X-XLd{+I&a=qF%l literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 930be9325..bd35fda31 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -223,6 +223,15 @@ D32648451588F6FC00930C67 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32648431588F6FB00930C67 /* UIToggleButton.m */; }; D32942A41594C94300556A1C /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D32942A31594C94200556A1C /* SettingsViewController.xib */; }; D32942A51594C94300556A1C /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D32942A31594C94200556A1C /* SettingsViewController.xib */; }; + D32B6E2415A5B2020033019F /* chat_send_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D32B6E2315A5B2020033019F /* chat_send_disabled.png */; }; + D32B6E2515A5B2020033019F /* chat_send_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D32B6E2315A5B2020033019F /* chat_send_disabled.png */; }; + D32B6E2915A5BC440033019F /* ChatRoomTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B6E2815A5BC430033019F /* ChatRoomTableViewController.m */; }; + D32B6E2A15A5BC440033019F /* ChatRoomTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B6E2815A5BC430033019F /* ChatRoomTableViewController.m */; }; + D32B6E2C15A5C0800033019F /* database.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = D32B6E2B15A5C0800033019F /* database.sqlite */; }; + D32B6E2D15A5C0800033019F /* database.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = D32B6E2B15A5C0800033019F /* database.sqlite */; }; + D32B6E2F15A5C0AC0033019F /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D32B6E2E15A5C0AC0033019F /* libsqlite3.dylib */; }; + D32B6E3815A5C2430033019F /* ChatModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B6E3715A5C2430033019F /* ChatModel.m */; }; + D32B6E3915A5C2430033019F /* ChatModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B6E3715A5C2430033019F /* ChatModel.m */; }; D32B9DFC15A2F131000B6DEC /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */; }; D32B9DFD15A2F131000B6DEC /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */; }; D3432A62158A4446001C6B0B /* led_connected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5C158A4446001C6B0B /* led_connected.png */; }; @@ -423,6 +432,16 @@ D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; D3A55FC015877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; + D3B9A3DF15A58C450096EA4E /* chat_field.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DA15A58C440096EA4E /* chat_field.png */; }; + D3B9A3E015A58C450096EA4E /* chat_field.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DA15A58C440096EA4E /* chat_field.png */; }; + D3B9A3E115A58C450096EA4E /* chat_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */; }; + D3B9A3E215A58C450096EA4E /* chat_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */; }; + D3B9A3E315A58C450096EA4E /* chat_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */; }; + D3B9A3E415A58C450096EA4E /* chat_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */; }; + D3B9A3E515A58C450096EA4E /* chat_send_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DD15A58C440096EA4E /* chat_send_default.png */; }; + D3B9A3E615A58C450096EA4E /* chat_send_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DD15A58C440096EA4E /* chat_send_default.png */; }; + D3B9A3E715A58C450096EA4E /* chat_send_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DE15A58C450096EA4E /* chat_send_over.png */; }; + D3B9A3E815A58C450096EA4E /* chat_send_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DE15A58C450096EA4E /* chat_send_over.png */; }; D3C2814B15A2D38D0098AA42 /* dialer_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2814A15A2D38D0098AA42 /* dialer_selected.png */; }; D3C2814C15A2D38D0098AA42 /* dialer_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2814A15A2D38D0098AA42 /* dialer_selected.png */; }; D3C2815215A2D64A0098AA42 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; @@ -525,6 +544,14 @@ D3F34F311599B008005BE94F /* avatar_shadow.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* avatar_shadow.png */; }; D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; + D3F795D615A582810077328B /* ChatRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F795D415A582800077328B /* ChatRoomViewController.m */; }; + D3F795D715A582810077328B /* ChatRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F795D415A582800077328B /* ChatRoomViewController.m */; }; + D3F795D815A582810077328B /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F795D515A582800077328B /* ChatRoomViewController.xib */; }; + D3F795D915A582810077328B /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F795D515A582800077328B /* ChatRoomViewController.xib */; }; + D3F795DD15A5831C0077328B /* chat_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DB15A5831C0077328B /* chat_back_default.png */; }; + D3F795DE15A5831C0077328B /* chat_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DB15A5831C0077328B /* chat_back_default.png */; }; + D3F795DF15A5831C0077328B /* chat_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DC15A5831C0077328B /* chat_back_over.png */; }; + D3F795E015A5831C0077328B /* chat_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DC15A5831C0077328B /* chat_back_over.png */; }; D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; @@ -979,6 +1006,13 @@ D32648421588F6FA00930C67 /* UIToggleButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIToggleButton.h; sourceTree = ""; }; D32648431588F6FB00930C67 /* UIToggleButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIToggleButton.m; sourceTree = ""; }; D32942A31594C94200556A1C /* SettingsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SettingsViewController.xib; sourceTree = ""; }; + D32B6E2315A5B2020033019F /* chat_send_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_send_disabled.png; path = Resources/chat_send_disabled.png; sourceTree = ""; }; + D32B6E2715A5BC430033019F /* ChatRoomTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatRoomTableViewController.h; sourceTree = ""; }; + D32B6E2815A5BC430033019F /* ChatRoomTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatRoomTableViewController.m; sourceTree = ""; }; + D32B6E2B15A5C0800033019F /* database.sqlite */ = {isa = PBXFileReference; lastKnownFileType = file; name = database.sqlite; path = Resources/database.sqlite; sourceTree = ""; }; + D32B6E2E15A5C0AC0033019F /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; + D32B6E3615A5C2430033019F /* ChatModel.h */ = {isa = PBXFileReference; fileEncoding = 4; name = ChatModel.h; path = Model/ChatModel.h; sourceTree = ""; }; + D32B6E3715A5C2430033019F /* ChatModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ChatModel.m; path = Model/ChatModel.m; sourceTree = ""; }; D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FastAddressBook.h; path = Utils/FastAddressBook.h; sourceTree = ""; }; D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FastAddressBook.m; path = Utils/FastAddressBook.m; sourceTree = ""; }; D3432A5C158A4446001C6B0B /* led_connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_connected.png; path = Resources/led_connected.png; sourceTree = ""; }; @@ -1115,6 +1149,11 @@ D3A55FBA15877E5E003FD403 /* UIContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactCell.h; sourceTree = ""; }; D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = ""; }; D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = ""; }; + D3B9A3DA15A58C440096EA4E /* chat_field.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_field.png; path = Resources/chat_field.png; sourceTree = ""; }; + D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_ok_default.png; path = Resources/chat_ok_default.png; sourceTree = ""; }; + D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_ok_over.png; path = Resources/chat_ok_over.png; sourceTree = ""; }; + D3B9A3DD15A58C440096EA4E /* chat_send_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_send_default.png; path = Resources/chat_send_default.png; sourceTree = ""; }; + D3B9A3DE15A58C450096EA4E /* chat_send_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_send_over.png; path = Resources/chat_send_over.png; sourceTree = ""; }; D3C2814A15A2D38D0098AA42 /* dialer_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_selected.png; path = Resources/dialer_selected.png; sourceTree = ""; }; D3C2815115A2D64A0098AA42 /* numpad_star_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_star_over.png; path = Resources/numpad_star_over.png; sourceTree = ""; }; D3C714B2159DB84400705B8E /* toy-mono.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "toy-mono.wav"; path = "Resources/toy-mono.wav"; sourceTree = ""; }; @@ -1175,6 +1214,11 @@ D3F34F2F1599B008005BE94F /* avatar_shadow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = avatar_shadow.png; path = Resources/avatar_shadow.png; sourceTree = ""; }; D3F34F331599C354005BE94F /* UIModalViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIModalViewController.h; sourceTree = ""; }; D3F34F341599C354005BE94F /* UIModalViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIModalViewController.m; sourceTree = ""; }; + D3F795D315A582800077328B /* ChatRoomViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatRoomViewController.h; sourceTree = ""; }; + D3F795D415A582800077328B /* ChatRoomViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatRoomViewController.m; sourceTree = ""; }; + D3F795D515A582800077328B /* ChatRoomViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ChatRoomViewController.xib; sourceTree = ""; }; + D3F795DB15A5831C0077328B /* chat_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_back_default.png; path = Resources/chat_back_default.png; sourceTree = ""; }; + D3F795DC15A5831C0077328B /* chat_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_back_over.png; path = Resources/chat_back_over.png; sourceTree = ""; }; D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; }; D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; }; D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; }; @@ -1233,6 +1277,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + D32B6E2F15A5C0AC0033019F /* libsqlite3.dylib in Frameworks */, D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */, 340751971506459A00B89C47 /* CoreTelephony.framework in Frameworks */, 226CDADF14E2D0B800513B67 /* libbcg729.a in Frameworks */, @@ -1331,8 +1376,14 @@ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( + D32B6E3515A5C2200033019F /* Model */, 340751E4150E4D0200B89C47 /* CallDelegate.h */, 2211DBBB14769C8200DEE054 /* CallDelegate.m */, + D32B6E2715A5BC430033019F /* ChatRoomTableViewController.h */, + D32B6E2815A5BC430033019F /* ChatRoomTableViewController.m */, + D3F795D315A582800077328B /* ChatRoomViewController.h */, + D3F795D415A582800077328B /* ChatRoomViewController.m */, + D3F795D515A582800077328B /* ChatRoomViewController.xib */, D3EA540B1598528B0037DC6B /* ChatTableViewController.h */, D3EA540C1598528B0037DC6B /* ChatTableViewController.m */, D35E7594159460560066B1C1 /* ChatViewController.h */, @@ -1747,6 +1798,7 @@ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( + D32B6E2E15A5C0AC0033019F /* libsqlite3.dylib */, 2258633C11410BAC00C5A737 /* README */, 22276E8013C73D3100210156 /* libavcodec.a */, 22276E8113C73D3100210156 /* libavutil.a */, @@ -1867,11 +1919,19 @@ D36C43CD158F2F370048BA40 /* cell_conference.png */, D3EA5401159852080037DC6B /* chat_add_default.png */, D3EA5402159852080037DC6B /* chat_add_over.png */, + D3F795DB15A5831C0077328B /* chat_back_default.png */, + D3F795DC15A5831C0077328B /* chat_back_over.png */, D38327F11580FE3A00FA0D23 /* chat_default.png */, D3EA53FF159852080037DC6B /* chat_edit_default.png */, D3EA5400159852080037DC6B /* chat_edit_over.png */, + D3B9A3DA15A58C440096EA4E /* chat_field.png */, + D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */, + D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */, D38327FF158100E400FA0D23 /* chat_over.png */, D38327F21580FE3A00FA0D23 /* chat_selected.png */, + D3B9A3DD15A58C440096EA4E /* chat_send_default.png */, + D32B6E2315A5B2020033019F /* chat_send_disabled.png */, + D3B9A3DE15A58C450096EA4E /* chat_send_over.png */, D31AAF61159B5B6E002C6B02 /* conference_default.png */, D31AAF62159B5B6E002C6B02 /* conference_over.png */, D354980E15875608000081D8 /* contacts_add_default.png */, @@ -1883,6 +1943,7 @@ D354980415875534000081D8 /* contacts_linphone_selected.png */, D38327FC158100E400FA0D23 /* contacts_over.png */, D38327EC1580FE3A00FA0D23 /* contacts_selected.png */, + D32B6E2B15A5C0800033019F /* database.sqlite */, D3F83F761582253100336684 /* decline_default.png */, D3F83F771582253100336684 /* decline_over.png */, D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */, @@ -2029,6 +2090,15 @@ name = Utils; sourceTree = ""; }; + D32B6E3515A5C2200033019F /* Model */ = { + isa = PBXGroup; + children = ( + D32B6E3615A5C2430033019F /* ChatModel.h */, + D32B6E3715A5C2430033019F /* ChatModel.m */, + ); + name = Model; + sourceTree = ""; + }; D37DC6C31594AE5600B2A5EB /* InAppSettingsKit */ = { isa = PBXGroup; children = ( @@ -2399,6 +2469,16 @@ D350F22C15A43D3400149E54 /* setup_welcome_logo.png in Resources */, D35406F715A47E9E007E7E81 /* button_background_default.png in Resources */, D35406F915A47E9E007E7E81 /* button_background_over.png in Resources */, + D3F795D815A582810077328B /* ChatRoomViewController.xib in Resources */, + D3F795DD15A5831C0077328B /* chat_back_default.png in Resources */, + D3F795DF15A5831C0077328B /* chat_back_over.png in Resources */, + D3B9A3DF15A58C450096EA4E /* chat_field.png in Resources */, + D3B9A3E115A58C450096EA4E /* chat_ok_default.png in Resources */, + D3B9A3E315A58C450096EA4E /* chat_ok_over.png in Resources */, + D3B9A3E515A58C450096EA4E /* chat_send_default.png in Resources */, + D3B9A3E715A58C450096EA4E /* chat_send_over.png in Resources */, + D32B6E2415A5B2020033019F /* chat_send_disabled.png in Resources */, + D32B6E2C15A5C0800033019F /* database.sqlite in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2599,6 +2679,16 @@ D350F22D15A43D3400149E54 /* setup_welcome_logo.png in Resources */, D35406F815A47E9E007E7E81 /* button_background_default.png in Resources */, D35406FA15A47E9E007E7E81 /* button_background_over.png in Resources */, + D3F795D915A582810077328B /* ChatRoomViewController.xib in Resources */, + D3F795DE15A5831C0077328B /* chat_back_default.png in Resources */, + D3F795E015A5831C0077328B /* chat_back_over.png in Resources */, + D3B9A3E015A58C450096EA4E /* chat_field.png in Resources */, + D3B9A3E215A58C450096EA4E /* chat_ok_default.png in Resources */, + D3B9A3E415A58C450096EA4E /* chat_ok_over.png in Resources */, + D3B9A3E615A58C450096EA4E /* chat_send_default.png in Resources */, + D3B9A3E815A58C450096EA4E /* chat_send_over.png in Resources */, + D32B6E2515A5B2020033019F /* chat_send_disabled.png in Resources */, + D32B6E2D15A5C0800033019F /* database.sqlite in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2676,6 +2766,9 @@ D32B9DFC15A2F131000B6DEC /* FastAddressBook.m in Sources */, D3196D3E15A32BD8007FEEBA /* UITransferButton.m in Sources */, D350F20E15A43BB100149E54 /* WizardViewController.m in Sources */, + D3F795D615A582810077328B /* ChatRoomViewController.m in Sources */, + D32B6E2915A5BC440033019F /* ChatRoomTableViewController.m in Sources */, + D32B6E3815A5C2430033019F /* ChatModel.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2750,6 +2843,9 @@ D32B9DFD15A2F131000B6DEC /* FastAddressBook.m in Sources */, D3196D3F15A32BD8007FEEBA /* UITransferButton.m in Sources */, D350F20F15A43BB100149E54 /* WizardViewController.m in Sources */, + D3F795D715A582810077328B /* ChatRoomViewController.m in Sources */, + D32B6E2A15A5BC440033019F /* ChatRoomTableViewController.m in Sources */, + D32B6E3915A5C2430033019F /* ChatModel.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From b634a50283eb4cdc16827e41b434c4393c9d815e Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 6 Jul 2012 17:28:38 +0200 Subject: [PATCH 031/397] Add NinePath lib Continue chat stuff Fix viewWillAppear without viewDidLoad called with UICompositeController --- Classes/ChatRoomTableViewController.h | 9 +- Classes/ChatRoomTableViewController.m | 61 +- Classes/ChatRoomViewController.h | 5 +- Classes/ChatRoomViewController.m | 57 +- Classes/ChatRoomViewController.xib | 66 ++- Classes/ChatTableViewController.h | 6 +- Classes/ChatTableViewController.m | 49 +- Classes/ChatViewController.h | 4 + Classes/ChatViewController.m | 50 +- Classes/ChatViewController.xib | 44 +- Classes/ContactsViewController.m | 5 +- Classes/DialerViewController.m | 3 +- Classes/FirstLoginViewController.m | 6 +- Classes/HistoryTableViewController.m | 1 + Classes/HistoryViewController.m | 6 +- Classes/InCallTableViewController.m | 53 +- Classes/InCallViewController.m | 8 +- Classes/IncomingCallViewController.m | 1 - Classes/LinphoneManager.m | 25 +- Classes/LinphoneUI/UICallBar.m | 1 - Classes/LinphoneUI/UICallBar.xib | 13 +- Classes/LinphoneUI/UICallCell.h | 2 +- Classes/LinphoneUI/UIChatCell.h | 21 +- Classes/LinphoneUI/UIChatCell.m | 49 +- Classes/LinphoneUI/UIChatCell.xib | 117 +++- Classes/LinphoneUI/UIChatRoomCell.h | 49 ++ Classes/LinphoneUI/UIChatRoomCell.m | 125 ++++ Classes/LinphoneUI/UIChatRoomCell.xib | 389 +++++++++++++ Classes/LinphoneUI/UIChatRoomHeader.h | 39 ++ Classes/LinphoneUI/UIChatRoomHeader.m | 56 ++ Classes/LinphoneUI/UIChatRoomHeader.xib | 244 ++++++++ .../LinphoneUI/UICompositeViewController.m | 1 + Classes/LinphoneUI/UIConferenceHeader.m | 2 +- Classes/LinphoneUI/UIStateBar.m | 4 +- Classes/Model/ChatModel.h | 3 +- Classes/Model/ChatModel.m | 26 +- .../{ => CPAnimation}/CPAnimationSequence.h | 0 .../{ => CPAnimation}/CPAnimationSequence.m | 0 .../Utils/{ => CPAnimation}/CPAnimationStep.h | 0 .../Utils/{ => CPAnimation}/CPAnimationStep.m | 0 Classes/WizardViewController.xib | 154 ++++- NinePatch/NinePatch.h | 15 + NinePatch/NinePatch.xcodeproj/project.pbxproj | 461 +++++++++++++++ NinePatch/NinePatch_Prefix.pch | 157 +++++ NinePatch/TUCachingNinePatch.h | 51 ++ NinePatch/TUCachingNinePatch.m | 125 ++++ NinePatch/TUDebugLoggingAssistant.h | 56 ++ NinePatch/TUDebugLoggingAssistant.m | 362 ++++++++++++ NinePatch/TUFullNinePatch.h | 56 ++ NinePatch/TUFullNinePatch.m | 318 +++++++++++ NinePatch/TUHorizontalNinePatch.h | 37 ++ NinePatch/TUHorizontalNinePatch.m | 124 ++++ NinePatch/TUNinePatch.h | 125 ++++ NinePatch/TUNinePatch.m | 514 +++++++++++++++++ NinePatch/TUNinePatchCache.h | 99 ++++ NinePatch/TUNinePatchCache.m | 133 +++++ NinePatch/TUNinePatchCachingCategories.h | 28 + NinePatch/TUNinePatchCachingCategories.m | 52 ++ NinePatch/TUNinePatchProtocols.h | 121 ++++ NinePatch/TUVerticalNinePatch.h | 36 ++ NinePatch/TUVerticalNinePatch.m | 132 +++++ NinePatch/UIImage-TUNinePatch.h | 77 +++ NinePatch/UIImage-TUNinePatch.m | 539 ++++++++++++++++++ Resources/20-gear2.png | Bin 375 -> 0 bytes Resources/avatar_shadow_small.png | Bin 0 -> 2522 bytes Resources/chat_bubble_incoming.9.png | Bin 0 -> 955 bytes Resources/chat_bubble_incoming.png | Bin 0 -> 2538 bytes Resources/chat_bubble_outgoing.9.png | Bin 0 -> 913 bytes Resources/chat_bubble_outgoing.png | Bin 0 -> 2485 bytes Resources/setup_back_disabled.png | Bin 0 -> 5050 bytes Resources/setup_cancel_disabled.png | Bin 0 -> 5924 bytes Resources/setup_start_disabled.png | Bin 0 -> 5620 bytes linphone.xcodeproj/project.pbxproj | 212 ++++++- 73 files changed, 5405 insertions(+), 179 deletions(-) create mode 100644 Classes/LinphoneUI/UIChatRoomCell.h create mode 100644 Classes/LinphoneUI/UIChatRoomCell.m create mode 100644 Classes/LinphoneUI/UIChatRoomCell.xib create mode 100644 Classes/LinphoneUI/UIChatRoomHeader.h create mode 100644 Classes/LinphoneUI/UIChatRoomHeader.m create mode 100644 Classes/LinphoneUI/UIChatRoomHeader.xib rename Classes/Utils/{ => CPAnimation}/CPAnimationSequence.h (100%) rename Classes/Utils/{ => CPAnimation}/CPAnimationSequence.m (100%) rename Classes/Utils/{ => CPAnimation}/CPAnimationStep.h (100%) rename Classes/Utils/{ => CPAnimation}/CPAnimationStep.m (100%) create mode 100755 NinePatch/NinePatch.h create mode 100755 NinePatch/NinePatch.xcodeproj/project.pbxproj create mode 100755 NinePatch/NinePatch_Prefix.pch create mode 100755 NinePatch/TUCachingNinePatch.h create mode 100755 NinePatch/TUCachingNinePatch.m create mode 100755 NinePatch/TUDebugLoggingAssistant.h create mode 100755 NinePatch/TUDebugLoggingAssistant.m create mode 100755 NinePatch/TUFullNinePatch.h create mode 100755 NinePatch/TUFullNinePatch.m create mode 100755 NinePatch/TUHorizontalNinePatch.h create mode 100755 NinePatch/TUHorizontalNinePatch.m create mode 100755 NinePatch/TUNinePatch.h create mode 100755 NinePatch/TUNinePatch.m create mode 100755 NinePatch/TUNinePatchCache.h create mode 100755 NinePatch/TUNinePatchCache.m create mode 100755 NinePatch/TUNinePatchCachingCategories.h create mode 100755 NinePatch/TUNinePatchCachingCategories.m create mode 100755 NinePatch/TUNinePatchProtocols.h create mode 100755 NinePatch/TUVerticalNinePatch.h create mode 100755 NinePatch/TUVerticalNinePatch.m create mode 100755 NinePatch/UIImage-TUNinePatch.h create mode 100755 NinePatch/UIImage-TUNinePatch.m delete mode 100644 Resources/20-gear2.png create mode 100644 Resources/avatar_shadow_small.png create mode 100644 Resources/chat_bubble_incoming.9.png create mode 100644 Resources/chat_bubble_incoming.png create mode 100644 Resources/chat_bubble_outgoing.9.png create mode 100644 Resources/chat_bubble_outgoing.png create mode 100644 Resources/setup_back_disabled.png create mode 100644 Resources/setup_cancel_disabled.png create mode 100644 Resources/setup_start_disabled.png diff --git a/Classes/ChatRoomTableViewController.h b/Classes/ChatRoomTableViewController.h index 16aba4943..5256ce087 100644 --- a/Classes/ChatRoomTableViewController.h +++ b/Classes/ChatRoomTableViewController.h @@ -21,9 +21,16 @@ #import @interface ChatRoomTableViewController : UITableViewController { +@private + BOOL editMode; NSArray *data; + NSString *remoteContact; } -@property (nonatomic, retain) NSArray *data; +@property (nonatomic, retain) NSString *remoteContact; + +- (void) toggleEditMode; +- (void) enterEditMode; +- (void) exitEditMode; @end diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index 1600d97c5..fa2250948 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -18,22 +18,37 @@ */ #import "ChatRoomTableViewController.h" -#import "UIChatCell.h" +#import "UIChatRoomCell.h" +#import "UIChatRoomHeader.h" @implementation ChatRoomTableViewController -@synthesize data; - +@synthesize remoteContact; #pragma mark - -- (void)setData:(NSArray *)adata { - if(self->data != nil) - [self->data release]; - self->data = [adata retain]; - [[self tableView] reloadData]; +- (void)reloadData { + if(data != nil) + [data release]; + data = [[ChatModel listMessages:remoteContact] retain]; } +- (void) toggleEditMode { + editMode = !editMode; + [(UITableView*)[self view] reloadData]; +} + +- (void) enterEditMode { + if(!editMode) { + [self toggleEditMode]; + } +} + +- (void) exitEditMode { + if(editMode) { + [self toggleEditMode]; + } +} #pragma mark - UITableViewDataSource Functions @@ -42,19 +57,45 @@ } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + [self reloadData]; return [data count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UIChatCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIChatCell"]; + UIChatRoomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIChatRoomCell"]; if (cell == nil) { - cell = [[UIChatCell alloc] init]; + cell = [[UIChatRoomCell alloc] initWithIdentifier:@"UIChatRoomCell"]; } [cell setChat:[data objectAtIndex:[indexPath row]]]; + if(editMode) + [cell enterEditMode]; + else + [cell exitEditMode]; [cell update]; return cell; } + +#pragma mark - UITableViewelegate Functions + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + UIChatRoomHeader *headerController = [[UIChatRoomHeader alloc] init]; + UIView *headerView = [headerController view]; + [headerController setContact:remoteContact]; + [headerController update]; + [headerController release]; + return headerView; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + return [UIChatRoomHeader height]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + ChatModel *chat = [data objectAtIndex:[indexPath row]]; + return [UIChatRoomCell height:chat]; +} + @end diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h index 7890a147c..21c874e9d 100644 --- a/Classes/ChatRoomViewController.h +++ b/Classes/ChatRoomViewController.h @@ -19,6 +19,7 @@ #import +#import "UIToggleButton.h" #import "UICompositeViewController.h" #import "ChatRoomTableViewController.h" #import "ChatModel.h" @@ -27,12 +28,14 @@ ChatRoomTableViewController *tableController; UITextField *messageField; UIButton *sendButton; + NSString *remoteContact; + UIToggleButton *editButton; } - (void) setRemoteContact:(NSString*)remoteContact; @property (nonatomic, retain) IBOutlet ChatRoomTableViewController* tableController; - +@property (nonatomic, retain) IBOutlet UIToggleButton *editButton; @property (nonatomic, retain) IBOutlet UITextField* messageField; @property (nonatomic, retain) IBOutlet UIButton* sendButton; diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 5f517b280..d51977911 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -20,13 +20,15 @@ #import "ChatRoomViewController.h" #import "PhoneMainView.h" +#import + @implementation ChatRoomViewController @synthesize tableController; @synthesize sendButton; @synthesize messageField; - +@synthesize editButton; #pragma mark - Lifecycle Functions @@ -36,7 +38,9 @@ - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; - + [tableController release]; + [messageField release]; + [sendButton release]; [super dealloc]; } @@ -56,8 +60,16 @@ #pragma mark - ViewController Functions + +- (void)viewDidLoad { + // Set selected+over background: IB lack ! + [editButton setImage:[UIImage imageNamed:@"chat_ok_over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; +} + + - (void)viewWillAppear:(BOOL)animated { - [super viewDidAppear:animated]; + [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification @@ -66,10 +78,13 @@ selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; -} - -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(textReceivedEvent:) + name:@"LinphoneTextReceived" + object:nil]; + + [tableController exitEditMode]; + [editButton setOff]; [[tableController tableView] reloadData]; } @@ -81,13 +96,35 @@ [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneTextReceived" + object:nil]; +} + +-(void)didReceiveMemoryWarning { + [TUNinePatchCache flushCache]; // will remove any images cache (freeing any cached but unused images) } #pragma mark - -- (void)setRemoteContact:(NSString*)remoteContact { - [tableController setData:[ChatModel listMessages:remoteContact]]; +- (void)setRemoteContact:(NSString*)aRemoteContact { + remoteContact = aRemoteContact; + [tableController setRemoteContact: remoteContact]; +} + + +#pragma mark - Event Functions + +- (void)textReceivedEvent:(NSNotification *)notif { + //LinphoneChatRoom *room = [[[notif userInfo] objectForKey:@"room"] pointerValue]; + LinphoneAddress *from = [[[notif userInfo] objectForKey:@"from"] pointerValue]; + //NSString *message = [[notif userInfo] objectForKey:@"message"]; + if([[NSString stringWithUTF8String:linphone_address_get_username(from)] + caseInsensitiveCompare:remoteContact] == NSOrderedSame) { + [[tableController tableView] reloadData]; + } } @@ -142,7 +179,7 @@ } - (IBAction)onEditClick:(id)event { - + [tableController toggleEditMode]; } - (IBAction)onSendClick:(id)event { diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib index a363aec5e..6e92c38e9 100644 --- a/Classes/ChatRoomViewController.xib +++ b/Classes/ChatRoomViewController.xib @@ -39,6 +39,21 @@ 292 + + + 292 + {320, 460} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + numpad_background.png + + 290 @@ -102,6 +117,10 @@ NSImage chat_edit_over.png + + NSImage + chat_ok_default.png + NSImage chat_edit_default.png @@ -133,18 +152,19 @@ _NS:9 - 1 - MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA + 3 + MCAwAA YES IBCocoaTouchFramework YES - 1 + 1 + 2 0 YES 44 - 22 - 22 + 10 + 10 @@ -250,7 +270,7 @@ {320, 460} - + _NS:9 3 @@ -304,6 +324,14 @@ 32 + + + editButton + + + + 35 + dataSource @@ -399,6 +427,7 @@ + @@ -466,6 +495,12 @@ tableController + + 34 + + + background + @@ -473,6 +508,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -482,6 +518,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin ChatRoomTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -492,7 +529,7 @@ - 33 + 35 @@ -532,11 +569,16 @@ + UIToggleButton UITextField UIButton ChatRoomTableViewController + + editButton + UIToggleButton + messageField UITextField @@ -555,6 +597,14 @@ ./Classes/ChatRoomViewController.h + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + 0 @@ -571,9 +621,11 @@ {320, 117} {320, 117} {500, 117} + {320, 117} {140, 117} {140, 117} {140, 117} + {640, 523} 1181 diff --git a/Classes/ChatTableViewController.h b/Classes/ChatTableViewController.h index 32cd1f67e..9b5ca4c03 100644 --- a/Classes/ChatTableViewController.h +++ b/Classes/ChatTableViewController.h @@ -20,9 +20,13 @@ #import @interface ChatTableViewController : UITableViewController { +@private + BOOL editMode; NSArray *data; } -@property (nonatomic, retain) NSArray *data; +- (void) toggleEditMode; +- (void) enterEditMode; +- (void) exitEditMode; @end diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index b72bd9a6f..287d881a1 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -25,16 +25,46 @@ @implementation ChatTableViewController -@synthesize data; + +#pragma mark - Lifecycle Functions + +- (id)init { + if((self = [super init]) != nil) { + self->editMode = false; + } + return self; +} + +- (void)dealloc { + if(data != nil) + [data release]; + [super dealloc]; +} #pragma mark - -- (void)setData:(NSArray *)adata { - if(self->data != nil) - [self->data release]; - self->data = [adata retain]; - [[self tableView] reloadData]; +- (void)reloadData { + if(data != nil) + [data release]; + data = [[ChatModel listConversations] retain]; +} + +- (void) toggleEditMode { + editMode = !editMode; + [(UITableView*)[self view] reloadData]; +} + +- (void) enterEditMode { + if(!editMode) { + [self toggleEditMode]; + } +} + +- (void) exitEditMode { + if(editMode) { + [self toggleEditMode]; + } } #pragma mark - UITableViewDataSource Functions @@ -46,6 +76,7 @@ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + [self reloadData]; return [data count]; } @@ -53,10 +84,14 @@ { UIChatCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIChatCell"]; if (cell == nil) { - cell = [[UIChatCell alloc] init]; + cell = [[UIChatCell alloc] initWithIdentifier:@"UIChatCell"]; } [cell setChat:[data objectAtIndex:[indexPath row]]]; + if(editMode) + [cell enterEditMode]; + else + [cell exitEditMode]; [cell update]; return cell; diff --git a/Classes/ChatViewController.h b/Classes/ChatViewController.h index ac61c32c0..999fcfb6f 100644 --- a/Classes/ChatViewController.h +++ b/Classes/ChatViewController.h @@ -19,14 +19,18 @@ #import +#import "UIToggleButton.h" + #import "ChatTableViewController.h" #import "UICompositeViewController.h" @interface ChatViewController : UIViewController { ChatTableViewController *tableController; + UIToggleButton *editButton; } @property (nonatomic, retain) IBOutlet ChatTableViewController* tableController; +@property (nonatomic, retain) IBOutlet UIToggleButton *editButton; - (IBAction)onAddClick:(id) event; - (IBAction)onEditClick:(id) event; diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 2e769e36c..3e5279bca 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -24,7 +24,7 @@ @implementation ChatViewController @synthesize tableController; - +@synthesize editButton; #pragma mark - Lifecycle Functions @@ -33,11 +33,48 @@ } +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [tableController release]; + [editButton release]; + + [super dealloc]; +} + #pragma mark - ViewController Functions +- (void)viewDidLoad { + // Set selected+over background: IB lack ! + [editButton setImage:[UIImage imageNamed:@"chat_ok_over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; +} + - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [tableController setData:[ChatModel listConversations]]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(textReceivedEvent:) + name:@"LinphoneTextReceived" + object:nil]; + + [tableController exitEditMode]; + [editButton setOff]; + [[tableController tableView] reloadData]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneTextReceived" + object:nil]; +} + + +#pragma mark - Event Functions + +- (void)textReceivedEvent:(NSNotification *)notif { + [[tableController tableView] reloadData]; } @@ -62,14 +99,7 @@ } - (IBAction)onEditClick:(id)event { - ChatModel* line= [[ChatModel alloc] init]; - line.localContact = @""; - line.remoteContact = @"truc"; - line.message = @"blabla"; - line.direction = [NSNumber numberWithInt:1]; - line.time = [NSDate date]; - [line create]; - [tableController setData:[ChatModel listConversations]]; + [tableController toggleEditMode]; } @end diff --git a/Classes/ChatViewController.xib b/Classes/ChatViewController.xib index bd88f20eb..24b92a3ae 100644 --- a/Classes/ChatViewController.xib +++ b/Classes/ChatViewController.xib @@ -100,6 +100,10 @@ NSImage chat_edit_over.png + + NSImage + chat_ok_default.png + NSImage chat_edit_default.png @@ -128,7 +132,6 @@ {{0, 58}, {320, 402}} - _NS:9 1 @@ -190,6 +193,14 @@ 18 + + + editButton + + + + 22 + view @@ -309,6 +320,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -316,7 +328,7 @@ - 21 + 22 @@ -345,22 +357,33 @@ id - - tableController - ChatTableViewController - - - tableController - + + UIToggleButton + ChatTableViewController + + + + editButton + UIToggleButton + + tableController ChatTableViewController - + IBProjectSource ./Classes/ChatViewController.h + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + 0 @@ -376,6 +399,7 @@ {320, 117} {320, 117} {320, 117} + {320, 117} 1181 diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 436f5739b..1bfd43ea6 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -68,12 +68,11 @@ typedef enum _HistoryView { #pragma mark - ViewController Functions -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; [self.tableView reloadData]; } - - (void)viewDidLoad { [super viewDidLoad]; [self changeView: History_All]; diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 90bc9123c..df5cf434e 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -115,12 +115,11 @@ selector:@selector(callUpdateEvent:) name:@"LinphoneCallUpdate" object:nil]; - // Update on show LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; [self callUpdate:call state:state]; -} +} - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index cf47635c9..c8e2f61bf 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -68,15 +68,15 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [usernameField setText:[[LinphoneManager instance].settingsStore objectForKey:@"username_preference"]]; - [passwordField setText:[[LinphoneManager instance].settingsStore objectForKey:@"password_preference"]]; - // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdateEvent:) name:@"LinphoneRegistrationUpdate" object:nil]; + [usernameField setText:[[LinphoneManager instance].settingsStore objectForKey:@"username_preference"]]; + [passwordField setText:[[LinphoneManager instance].settingsStore objectForKey:@"password_preference"]]; + // Update on show const MSList* list = linphone_core_get_proxy_config_list([LinphoneManager getLc]); if(list != NULL) { diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index 33747e013..99c18004e 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -24,6 +24,7 @@ @implementation HistoryTableViewController + #pragma mark - Lifecycle Functions - (id)init { diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 8b2aa9e46..6faf08aa8 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -68,15 +68,11 @@ typedef enum _HistoryView { #pragma mark - ViewController Functions -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - [self.tableView reloadData]; -} - - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [tableController exitEditMode]; [editButton setOff]; + [self.tableView reloadData]; } - (void)viewDidLoad { diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index a2908bfec..b4bd3d8c0 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -195,28 +195,6 @@ enum TableSection { #pragma mark - UITableViewDataSource Functions -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - if(section == CallSection) { - return [[UIView alloc] initWithFrame:CGRectZero]; - } else if(section == ConferenceSection) { - LinphoneCore* lc = [LinphoneManager getLc]; - if(linphone_core_get_conference_size(lc) > 0){ - UIConferenceHeader *headerController = [[UIConferenceHeader alloc] init]; - [headerController update]; - UIView *headerView = [headerController view]; - [headerController release]; - return headerView; - } else { - return [[UIView alloc] initWithFrame:CGRectZero]; - } - } - return [[UIView alloc] initWithFrame:CGRectZero]; -} - -- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - return [[UIView alloc] initWithFrame:CGRectZero]; -} - - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"]; if (cell == nil) { @@ -268,19 +246,39 @@ enum TableSection { return 2; } -- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section -{ +- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { return @""; } -- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section -{ +- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { return @""; } #pragma mark - UITableViewDelegate Functions +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if(section == CallSection) { + return [[UIView alloc] initWithFrame:CGRectZero]; + } else if(section == ConferenceSection) { + LinphoneCore* lc = [LinphoneManager getLc]; + if(linphone_core_get_conference_size(lc) > 0){ + UIConferenceHeader *headerController = [[UIConferenceHeader alloc] init]; + [headerController update]; + UIView *headerView = [headerController view]; + [headerController release]; + return headerView; + } else { + return [[UIView alloc] initWithFrame:CGRectZero]; + } + } + return [[UIView alloc] initWithFrame:CGRectZero]; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + return [[UIView alloc] initWithFrame:CGRectZero]; +} + - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { LinphoneCore* lc = [LinphoneManager getLc]; if(section == CallSection) { @@ -305,8 +303,7 @@ enum TableSection { return 0.000001f; // Hack UITableView = 0 } -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath -{ +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { bool inConference = indexPath.section == ConferenceSection; LinphoneCall* call = [InCallTableViewController retrieveCallAtIndex:indexPath.row inConference:inConference]; UICallCellData* data = [callCellData objectForKey:[NSValue valueWithPointer:call]]; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index e3690a931..f55b992aa 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -101,10 +101,6 @@ const NSInteger SECURE_BUTTON_TAG=5; [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; UIDevice *device = [UIDevice currentDevice]; device.proximityMonitoringEnabled = YES; - - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [callTableController viewDidAppear:NO]; - } } - (void)viewWillDisappear:(BOOL)animated { @@ -143,6 +139,10 @@ const NSInteger SECURE_BUTTON_TAG=5; LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; [self callUpdate:call state:state]; + + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [callTableController viewDidAppear:NO]; + } } - (void)viewDidDisappear:(BOOL)animated { diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 744422fea..833ddb811 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -49,7 +49,6 @@ selector:@selector(callUpdateEvent:) name:@"LinphoneCallUpdate" object:nil]; - [self callUpdate:call state:linphone_call_get_state(call)]; } diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index fd56aacc4..3bac80534 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -29,6 +29,7 @@ #import "LinphoneManager.h" #import "FastAddressBook.h" #import "LinphoneCoreSettingsStore.h" +#import "ChatModel.h" #include "linphonecore_utils.h" #include "lpconfig.h" @@ -355,6 +356,28 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo [(LinphoneManager*)linphone_core_get_user_data(lc) onRegister:lc cfg:cfg state:state message:message]; } +- (void)onTextReceived:(LinphoneCore *)lc room:(LinphoneChatRoom *)room from:(const LinphoneAddress *)from message:(const char *)message { + + // Save message in database + ChatModel *chat = [[ChatModel alloc] init]; + [chat setRemoteContact:[NSString stringWithUTF8String:linphone_address_get_username(from)]]; + [chat setMessage:[NSString stringWithUTF8String:message]]; + [chat setDirection:[NSNumber numberWithInt:1]]; + [chat create]; + + // Post event + NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [NSValue valueWithPointer:room], @"room", + [NSValue valueWithPointer:from], @"from", + [NSString stringWithUTF8String:message], @"message", + nil] autorelease]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self userInfo:dict]; +} + +static void linphone_iphone_text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from, const char *message) { + [(LinphoneManager*)linphone_core_get_user_data(lc) onTextReceived:lc room:room from:from message:message]; +} + static LinphoneCoreVTable linphonec_vtable = { .show =NULL, .call_state_changed =(LinphoneCallStateCb)linphone_iphone_call_state, @@ -366,7 +389,7 @@ static LinphoneCoreVTable linphonec_vtable = { .display_message=linphone_iphone_log, .display_warning=linphone_iphone_log, .display_url=NULL, - .text_received=NULL, + .text_received=linphone_iphone_text_received, .dtmf_received=NULL, .transfer_state_changed=linphone_iphone_transfer_state_changed }; diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index dad26c74b..e34be52e5 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -159,7 +159,6 @@ selector:@selector(callUpdateEvent:) name:@"LinphoneCallUpdate" object:nil]; - // Update on show LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 0936438fe..637385568 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -42,7 +42,6 @@ {{0, 335}, {320, 125}} - _NS:9 1 @@ -522,6 +521,7 @@ 0 0 NO + NO NSImage @@ -558,6 +558,7 @@ 0 0 NO + NO NSImage @@ -594,6 +595,7 @@ 0 0 NO + NO NSImage @@ -626,6 +628,7 @@ 0 0 NO + NO NSImage @@ -687,6 +690,7 @@ 0 0 NO + NO NSImage @@ -715,6 +719,7 @@ 0 0 NO + NO NSImage @@ -1140,7 +1145,7 @@ 59 - waitView + videoWaitView 73 @@ -1620,8 +1625,8 @@ {160, 134} {160, 134} {160, 134} - {16, 16} - {16, 16} + {160, 134} + {160, 134} {209, 136} {209, 136} {209, 136} diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h index ff82a28dd..00e624083 100644 --- a/Classes/LinphoneUI/UICallCell.h +++ b/Classes/LinphoneUI/UICallCell.h @@ -54,7 +54,7 @@ UICallCellData *data; } -@property (weak) UICallCellData *data; +@property (retain) UICallCellData *data; @property (nonatomic, retain) IBOutlet UIImageView* headerBackgroundImage; @property (nonatomic, retain) IBOutlet UIImageView* headerBackgroundHightlightImage; diff --git a/Classes/LinphoneUI/UIChatCell.h b/Classes/LinphoneUI/UIChatCell.h index 2cfdede30..9fdb9f7af 100644 --- a/Classes/LinphoneUI/UIChatCell.h +++ b/Classes/LinphoneUI/UIChatCell.h @@ -22,21 +22,28 @@ #import "ChatModel.h" @interface UIChatCell : UITableViewCell { - UIImageView *avatarView; + UIImageView *avatarImage; UILabel *displayNameLabel; UILabel *chatContentLabel; + UIButton *detailsButton; + UIButton *deleteButton; ChatModel *chat; } -- (void)update; - -@property (weak) ChatModel *chat; - -@property (nonatomic, retain) IBOutlet UIImageView *avatarView; +@property (retain) ChatModel *chat; +@property (nonatomic, retain) IBOutlet UIImageView *avatarImage; @property (nonatomic, retain) IBOutlet UILabel* displayNameLabel; @property (nonatomic, retain) IBOutlet UILabel* chatContentLabel; +@property (nonatomic, retain) IBOutlet UIButton *detailsButton; +@property (nonatomic, retain) IBOutlet UIButton * deleteButton; -- (IBAction)onDetails:(id)event; +- (id)initWithIdentifier:(NSString*)identifier; +- (void)update; +- (void)enterEditMode; +- (void)exitEditMode; + +- (IBAction)onDetailsClick:(id)event; +- (IBAction)onDeleteClick:(id)event; @end diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index 5f3973769..aa1969582 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -18,19 +18,23 @@ */ #import "UIChatCell.h" +#import "PhoneMainView.h" + @implementation UIChatCell -@synthesize avatarView; +@synthesize avatarImage; @synthesize displayNameLabel; @synthesize chatContentLabel; +@synthesize detailsButton; +@synthesize deleteButton; @synthesize chat; #pragma mark - Lifecycle Functions -- (id)init { - if ((self = [super init]) != nil) { +- (id)initWithIdentifier:(NSString*)identifier { + if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) { NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"UIChatCell" owner:self options:nil]; @@ -45,6 +49,11 @@ - (void)dealloc { [displayNameLabel release]; [chatContentLabel release]; + [avatarImage release]; + [detailsButton release]; + [deleteButton release]; + + [chat release]; [super dealloc]; } @@ -52,10 +61,12 @@ #pragma mark - - (void)update { - [avatarView setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; - [displayNameLabel setText:[chat remoteContact]]; - [chatContentLabel setText:[chat message]]; + if (chat != nil) { + [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; + [displayNameLabel setText:[chat remoteContact]]; + [chatContentLabel setText:[chat message]]; + } // // Adapt size @@ -80,11 +91,33 @@ [chatContentLabel setFrame: chatContentFrame]; } +- (void)enterEditMode { + [deleteButton setHidden:false]; + [detailsButton setHidden:true]; +} + +- (void)exitEditMode { + [detailsButton setHidden:false]; + [deleteButton setHidden:true]; +} #pragma mark - Action Functions -- (IBAction)onDetails: (id) event { - +- (IBAction)onDetailsClick: (id) event { + // Go to dialer view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: [chat remoteContact], nil] autorelease] + , @"setRemoteContact:", + nil] autorelease]; + [[PhoneMainView instance] changeView:PhoneView_ChatRoom dict:dict push:TRUE]; +} + +- (IBAction)onDeleteClick: (id) event { + if(chat != NULL) { + [ChatModel removeConversation:[chat remoteContact]]; + UITableView *parentTable = (UITableView *)self.superview; + [parentTable reloadData]; + } } @end diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib index dbf9b0730..f8738e424 100644 --- a/Classes/LinphoneUI/UIChatCell.xib +++ b/Classes/LinphoneUI/UIChatCell.xib @@ -138,7 +138,7 @@ 11 11 11 - + 3 MC41AA @@ -150,16 +150,44 @@ NSImage list_details_default.png - + 2 15 - + Helvetica-Bold 15 16 + + + -2147483356 + {{276, 0}, {44, 44}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + 11 + 11 + 11 + 11 + + + NSImage + list_delete_over.png + + + NSImage + list_delete_default.png + + + + {320, 44} @@ -218,14 +246,6 @@ 24 - - - avatarView - - - - 25 - backgroundView @@ -242,14 +262,47 @@ 29 + + + avatarImage + + + + 30 + + + + deleteButton + + + + 34 + + + + detailsButton + + + + 35 + - onDetails: + onDetailsClick: 7 - 22 + 36 + + + + onDeleteClick: + + + 7 + + 37 @@ -279,6 +332,7 @@ + @@ -292,7 +346,7 @@ 19 - imageView + avatarImage 20 @@ -318,6 +372,12 @@ background + + 32 + + + deleteButton + @@ -334,12 +394,15 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + - 29 + 37 @@ -347,30 +410,40 @@ UIChatCell UITableViewCell - onDetails: + onDetailsClick: id - onDetails: + onDetailsClick: - onDetails: + onDetailsClick: id - UIImageView + UIImageView UILabel + UIButton + UIButton UILabel - - avatarView + + avatarImage UIImageView chatContentLabel UILabel + + deleteButton + UIButton + + + detailsButton + UIButton + displayNameLabel UILabel @@ -393,6 +466,8 @@ 3 {131, 131} + {45, 45} + {45, 45} {45, 45} {45, 45} {640, 88} diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h new file mode 100644 index 000000000..abc320f0f --- /dev/null +++ b/Classes/LinphoneUI/UIChatRoomCell.h @@ -0,0 +1,49 @@ +/* UIChatRoomCell.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +#import "ChatModel.h" + +@interface UIChatRoomCell : UITableViewCell { + UIImageView *backgroundImage; + UIView *contentView; + UILabel *messageLabel; + UIButton *deleteButton; + + ChatModel *chat; +} + +@property (retain) ChatModel *chat; +@property (nonatomic, retain) IBOutlet UIView *contentView; +@property (nonatomic, retain) IBOutlet UIImageView* backgroundImage; +@property (nonatomic, retain) IBOutlet UILabel *messageLabel; +@property (nonatomic, retain) IBOutlet UIButton *deleteButton; + +- (id)initWithIdentifier:(NSString*)identifier; ++ (CGFloat)height:(ChatModel*)chat; + +- (void)update; + +- (void)enterEditMode; +- (void)exitEditMode; + +- (IBAction)onDeleteClick:(id)event; + +@end diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m new file mode 100644 index 000000000..5f77fc7a8 --- /dev/null +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -0,0 +1,125 @@ +/* UIChatRoomCell.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIChatRoomCell.h" + +#import + +@implementation UIChatRoomCell + +@synthesize contentView; +@synthesize backgroundImage; +@synthesize messageLabel; +@synthesize deleteButton; +@synthesize chat; + +static const CGFloat CELL_MIN_HEIGHT = 65.0f; +static const CGFloat CELL_MESSAGE_MAX_WIDTH = 280.0f; +static const CGFloat CELL_FONT_SIZE = 17.0f; +static UIFont *CELL_FONT = nil; + +#pragma mark - Lifecycle Functions + +- (id)initWithIdentifier:(NSString*)identifier { + if ((self = [super initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]) != nil) { + [[NSBundle mainBundle] loadNibNamed:@"UIChatRoomCell" + owner:self + options:nil]; + [self addSubview:contentView]; + } + return self; +} + +- (void)dealloc { + [backgroundImage release]; + [contentView release]; + [messageLabel release]; + [deleteButton release]; + + [chat release]; + + [super dealloc]; +} + + +#pragma mark - + +- (void)update { + if(chat != nil) { + if([chat direction]) { + [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size + forNinePatchNamed:@"chat_bubble_incoming"]]; + } else { + [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size + forNinePatchNamed:@"chat_bubble_outgoing"]]; + } + [messageLabel setText:[chat message]]; + } + CGRect frame = [messageLabel frame]; + frame.size.height = [UIChatRoomCell messageHeight:[chat message]]; + [messageLabel setFrame:frame]; +} + ++ (CGFloat)messageHeight:(NSString*)message { + if(CELL_FONT == nil) { + CELL_FONT = [UIFont systemFontOfSize:CELL_FONT_SIZE]; + } + CGSize messageSize = [message sizeWithFont: CELL_FONT + constrainedToSize: CGSizeMake(CELL_MESSAGE_MAX_WIDTH, 10000.0f) + lineBreakMode: UILineBreakModeTailTruncation]; + return messageSize.height; +} + ++ (CGFloat)height:(ChatModel*)chat { + CGFloat height = [UIChatRoomCell messageHeight:[chat message]]; + height += 20; + if(height < CELL_MIN_HEIGHT) + height = CELL_MIN_HEIGHT; + return height; +} + +- (void)enterEditMode { + [deleteButton setHidden:false]; +} + +- (void)exitEditMode { + [deleteButton setHidden:true]; +} + +#pragma mark - View Functions + +- (void)layoutSubviews { + // Resize content + CGRect frame = [contentView frame]; + frame.size = [self frame].size; + [contentView setFrame:frame]; +} + + +#pragma mark - Action Functions + +- (IBAction)onDeleteClick: (id) event { + if(chat != NULL) { + [chat delete]; + UITableView *parentTable = (UITableView *)self.superview; + [parentTable reloadData]; + } +} + +@end diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib new file mode 100644 index 000000000..57cdb4968 --- /dev/null +++ b/Classes/LinphoneUI/UIChatRoomCell.xib @@ -0,0 +1,389 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUIImageView + IBUIView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 274 + {{10, 10}, {300, 120}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + chat_bubble_incoming.png + + + + + 274 + + + + 274 + {280, 100} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety. + + 3 + MC4zMzMzMzMzMzMzAA + + + 0 + 10 + 100000 + + 1 + 17 + + + Helvetica + 17 + 16 + + NO + + + + -2147483351 + {{236, 28}, {44, 44}} + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + 11 + 11 + 11 + 11 + + 3 + MC41AA + + + NSImage + list_delete_over.png + + + NSImage + list_delete_default.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + {{20, 25}, {280, 100}} + + + + _NS:9 + + 3 + MCAwAA + + YES + IBCocoaTouchFramework + + + {320, 140} + + + + _NS:9 + + YES + 10 + IBCocoaTouchFramework + + + + 292 + {100, 100} + + + _NS:9 + + IBCocoaTouchFramework + + + + 292 + {100, 100} + + + _NS:9 + + IBCocoaTouchFramework + + + + + + + backgroundView + + + + 10 + + + + backgroundImage + + + + 11 + + + + selectedBackgroundView + + + + 13 + + + + contentView + + + + 14 + + + + messageLabel + + + + 17 + + + + deleteButton + + + + 19 + + + + onDeleteClick: + + + 7 + + 20 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + contentView + + + 7 + + + backgroundView + + + 9 + + + selectedBackgroundView + + + 3 + + + backgroundImage + + + 16 + + + + + + + messageView + + + 15 + + + messageLabel + + + 18 + + + deleteButton + + + + + UIChatRoomCell + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 20 + + + + + UIChatRoomCell + UITableViewCell + + onDeleteClick: + id + + + onDeleteClick: + + onDeleteClick: + id + + + + UIImageView + UIView + UIButton + UILabel + + + + backgroundImage + UIImageView + + + contentView + UIView + + + deleteButton + UIButton + + + messageLabel + UILabel + + + + IBProjectSource + ./Classes/UIChatRoomCell.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {71, 46} + {45, 45} + {45, 45} + + 1181 + + diff --git a/Classes/LinphoneUI/UIChatRoomHeader.h b/Classes/LinphoneUI/UIChatRoomHeader.h new file mode 100644 index 000000000..8e67a8fd5 --- /dev/null +++ b/Classes/LinphoneUI/UIChatRoomHeader.h @@ -0,0 +1,39 @@ +/* UIChatRoomHeader.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import +#import "ChatModel.h" + +@interface UIChatRoomHeader : UIViewController { + UILabel *contactLabel; + UIImageView *avatarImage; + + NSString *contact; +} + +@property (copy) NSString *contact; + +@property (nonatomic, retain) IBOutlet UILabel *contactLabel; +@property (nonatomic, retain) IBOutlet UIImageView *avatarImage; + ++ (CGFloat)height; + +- (void)update; + +@end diff --git a/Classes/LinphoneUI/UIChatRoomHeader.m b/Classes/LinphoneUI/UIChatRoomHeader.m new file mode 100644 index 000000000..b37ce23f3 --- /dev/null +++ b/Classes/LinphoneUI/UIChatRoomHeader.m @@ -0,0 +1,56 @@ +/* UIChatRoomHeader.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIChatRoomHeader.h" + +@implementation UIChatRoomHeader + +@synthesize avatarImage; +@synthesize contactLabel; +@synthesize contact; + + +#pragma mark - Lifecycle Functions + +- (id)init { + return [super initWithNibName:@"UIChatRoomHeader" bundle:[NSBundle mainBundle]]; +} + +- (void)dealloc { + [avatarImage release]; + [contactLabel release]; + [contact release]; + [super dealloc]; +} + + +#pragma mark - + +- (void)update { + if(contact != nil) { + [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; + [contactLabel setText:contact]; + } +} + ++ (CGFloat)height { + return 80.0f; +} + +@end diff --git a/Classes/LinphoneUI/UIChatRoomHeader.xib b/Classes/LinphoneUI/UIChatRoomHeader.xib new file mode 100644 index 000000000..937c1726d --- /dev/null +++ b/Classes/LinphoneUI/UIChatRoomHeader.xib @@ -0,0 +1,244 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIImageView + IBUIView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 292 + {{-13, -1}, {131, 107}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + avatar_shadow_small.png + + + + + 274 + {{20, 10}, {65, 65}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + avatar_unknown_small.png + + + + + 292 + {{101, 31}, {199, 43}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Contact1 + + 3 + MC4zMzMzMzMzMzMzAA + + + 0 + 10 + + 1 + 22 + + + Helvetica + 22 + 16 + + + + {320, 80} + + + + _NS:9 + + 3 + MCAwAA + + IBCocoaTouchFramework + + + + + + + view + + + + 5 + + + + avatarImage + + + + 9 + + + + contactLabel + + + + 11 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + + + 6 + + + avatarImage + + + 7 + + + avatarShadowBackground + + + 8 + + + contactLabel + + + + + UIChatRoomHeader + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 11 + + + + + UIChatRoomHeader + UIViewController + + UIImageView + UILabel + + + + avatarImage + UIImageView + + + contactLabel + UILabel + + + + IBProjectSource + ./Classes/UIChatRoomHeader.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {262, 214} + {131, 131} + + 1181 + + diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 934d17e7c..280bc5834 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -101,6 +101,7 @@ + (void)addSubView:(UIViewController*)controller view:(UIView*)view { if(controller != nil) { + [controller view]; // Load the view if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [controller viewWillAppear:NO]; } diff --git a/Classes/LinphoneUI/UIConferenceHeader.m b/Classes/LinphoneUI/UIConferenceHeader.m index 06354bf87..33e4cae34 100644 --- a/Classes/LinphoneUI/UIConferenceHeader.m +++ b/Classes/LinphoneUI/UIConferenceHeader.m @@ -61,7 +61,7 @@ #pragma mark - - (void)update { - [self view]; + [self view]; // Force view load [stateImage setHidden:true]; [pauseButton update]; } diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index 97ea70e3d..507d9b1fe 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -51,7 +51,6 @@ NSTimer *callQualityTimer; [super viewWillAppear:animated]; // Set callQualityTimer - [callQualityImage setHidden: true]; callQualityTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(callQualityUpdate) @@ -64,6 +63,9 @@ NSTimer *callQualityTimer; name:@"LinphoneRegistrationUpdate" object:nil]; + + [callQualityImage setHidden: true]; + // Update to default state LinphoneProxyConfig* config = NULL; if([LinphoneManager isLcReady]) diff --git a/Classes/Model/ChatModel.h b/Classes/Model/ChatModel.h index 4c2f11963..1d5139b18 100644 --- a/Classes/Model/ChatModel.h +++ b/Classes/Model/ChatModel.h @@ -24,7 +24,7 @@ NSNumber *chatId; NSString *localContact; NSString *remoteContact; - NSNumber *direction; + NSNumber *direction; //0 outgoing 1 incoming NSString *message; NSDate *time; } @@ -43,5 +43,6 @@ + (NSArray *) listConversations; + (NSArray *) listMessages:(NSString *)contact; ++ (void) removeConversation:(NSString *)contact; @end diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m index 5c5ef40ed..bf81c131b 100644 --- a/Classes/Model/ChatModel.m +++ b/Classes/Model/ChatModel.m @@ -139,7 +139,7 @@ return; } - const char *sql = [[NSString stringWithFormat:@"DELETE chat WHERE id=%@", + const char *sql = [[NSString stringWithFormat:@"DELETE FROM chat WHERE id=%@", chatId] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { @@ -226,4 +226,28 @@ return fArray; } ++ (void) removeConversation:(NSString *)contact { + sqlite3* database = [[LinphoneManager instance] database]; + if(database == NULL) { + NSLog(@"Database not ready"); + return; + } + + const char *sql = [[NSString stringWithFormat:@"DELETE FROM chat WHERE remoteContact=\"%@\"", + contact] UTF8String]; + sqlite3_stmt *sqlStatement; + if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + return; + } + + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { + NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + sqlite3_finalize(sqlStatement); + return; + } + + sqlite3_finalize(sqlStatement); +} + @end diff --git a/Classes/Utils/CPAnimationSequence.h b/Classes/Utils/CPAnimation/CPAnimationSequence.h similarity index 100% rename from Classes/Utils/CPAnimationSequence.h rename to Classes/Utils/CPAnimation/CPAnimationSequence.h diff --git a/Classes/Utils/CPAnimationSequence.m b/Classes/Utils/CPAnimation/CPAnimationSequence.m similarity index 100% rename from Classes/Utils/CPAnimationSequence.m rename to Classes/Utils/CPAnimation/CPAnimationSequence.m diff --git a/Classes/Utils/CPAnimationStep.h b/Classes/Utils/CPAnimation/CPAnimationStep.h similarity index 100% rename from Classes/Utils/CPAnimationStep.h rename to Classes/Utils/CPAnimation/CPAnimationStep.h diff --git a/Classes/Utils/CPAnimationStep.m b/Classes/Utils/CPAnimation/CPAnimationStep.m similarity index 100% rename from Classes/Utils/CPAnimationStep.m rename to Classes/Utils/CPAnimation/CPAnimationStep.m diff --git a/Classes/WizardViewController.xib b/Classes/WizardViewController.xib index 6a6efb1c4..0d4ec330a 100644 --- a/Classes/WizardViewController.xib +++ b/Classes/WizardViewController.xib @@ -43,6 +43,7 @@ 292 {320, 394} + _NS:9 NO @@ -57,6 +58,7 @@ 292 {320, 394} + _NS:9 @@ -75,6 +77,7 @@ 292 {160, 77} + _NS:9 NO @@ -91,6 +94,10 @@ NSImage setup_cancel_over.png + + NSImage + setup_cancel_disabled.png + NSImage setup_cancel_default.png @@ -110,6 +117,7 @@ 292 {{160, 0}, {160, 77}} + _NS:9 NO @@ -123,6 +131,10 @@ NSImage setup_start_over.png + + NSImage + setup_start_disabled.png + NSImage setup_start_default.png @@ -135,6 +147,8 @@ -2147483356 {{160, 0}, {160, 77}} + + _NS:9 NO IBCocoaTouchFramework @@ -147,6 +161,10 @@ NSImage setup_back_over.png + + NSImage + setup_back_disabled.png + NSImage setup_back_default.png @@ -157,6 +175,7 @@ {{0, 383}, {320, 77}} + _NS:9 @@ -165,6 +184,7 @@ {320, 460} + _NS:9 @@ -185,6 +205,7 @@ 274 {{60, 80}, {201, 129}} + _NS:9 NO @@ -199,6 +220,8 @@ 292 {{40, 313}, {240, 44}} + + _NS:9 NO YES @@ -228,6 +251,7 @@ {320, 460} + _NS:9 @@ -242,6 +266,7 @@ 274 {{31, 50}, {258, 24}} + _NS:9 NO @@ -256,6 +281,7 @@ 292 {{33, 141}, {255, 50}} + _NS:9 NO @@ -289,6 +315,7 @@ 292 {{33, 205}, {255, 50}} + _NS:9 NO @@ -309,6 +336,8 @@ 292 {{33, 269}, {255, 50}} + + _NS:9 NO IBCocoaTouchFramework @@ -326,6 +355,7 @@ {320, 460} + _NS:9 @@ -340,6 +370,7 @@ 274 {{31, 50}, {258, 24}} + _NS:9 NO @@ -351,6 +382,7 @@ 292 {{39, 80}, {240, 44}} + _NS:9 NO @@ -374,6 +406,7 @@ 292 {{32, 140}, {255, 31}} + _NS:9 NO @@ -412,6 +445,7 @@ 292 {{32, 185}, {255, 31}} + _NS:9 NO @@ -441,6 +475,7 @@ 292 {{32, 230}, {255, 31}} + _NS:9 NO @@ -470,6 +505,7 @@ 292 {{32, 275}, {255, 31}} + _NS:9 NO @@ -498,6 +534,8 @@ 292 {{33, 330}, {255, 50}} + + _NS:9 NO IBCocoaTouchFramework @@ -522,6 +560,7 @@ {320, 460} + _NS:9 @@ -536,6 +575,7 @@ 274 {{31, 50}, {258, 24}} + _NS:9 NO @@ -547,6 +587,7 @@ 292 {{40, 80}, {240, 44}} + _NS:9 NO @@ -570,6 +611,8 @@ 292 {{32, 330}, {255, 50}} + + _NS:9 NO IBCocoaTouchFramework @@ -589,6 +632,7 @@ 292 {{32, 185}, {255, 31}} + _NS:9 NO @@ -618,6 +662,7 @@ 292 {{32, 140}, {255, 31}} + _NS:9 NO @@ -644,6 +689,7 @@ {320, 460} + _NS:9 @@ -658,6 +704,7 @@ 274 {{31, 50}, {258, 24}} + _NS:9 NO @@ -669,6 +716,7 @@ 292 {{40, 80}, {240, 44}} + _NS:9 NO @@ -692,6 +740,7 @@ 292 {{33, 140}, {255, 31}} + _NS:9 NO @@ -720,6 +769,7 @@ 292 {{33, 185}, {255, 31}} + _NS:9 NO @@ -749,6 +799,7 @@ 292 {{33, 230}, {255, 31}} + _NS:9 NO @@ -777,6 +828,8 @@ 292 {{34, 330}, {255, 50}} + + _NS:9 NO IBCocoaTouchFramework @@ -794,6 +847,7 @@ {320, 460} + _NS:9 @@ -1292,11 +1346,11 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1339,7 +1393,96 @@ 88 - + + + + WizardViewController + UIViewController + + id + id + id + id + id + id + + + + onBackClick: + id + + + onCancelClick: + id + + + onConnectAccountClick: + id + + + onCreateAccountClick: + id + + + onExternalAccountClick: + id + + + onStartClick: + id + + + + UIButton + UIView + UIView + UIView + UIView + UIView + UIButton + UIView + + + + backButton + UIButton + + + choiceView + UIView + + + connectAccountView + UIView + + + contentView + UIView + + + createAccountView + UIView + + + externalAccountView + UIView + + + startButton + UIButton + + + welcomeView + UIView + + + + IBProjectSource + ./Classes/WizardViewController.h + + + + 0 IBCocoaTouchFramework @@ -1353,11 +1496,14 @@ {550, 101} {640, 523} {320, 154} + {320, 154} {320, 154} {320, 154} + {320, 154} {320, 154} {542, 88} {320, 154} + {320, 154} {320, 154} {516, 48} {402, 258} diff --git a/NinePatch/NinePatch.h b/NinePatch/NinePatch.h new file mode 100755 index 000000000..29f638fc1 --- /dev/null +++ b/NinePatch/NinePatch.h @@ -0,0 +1,15 @@ +/* + * NinePatch.h + * NinePatch + * + * Copyright 2010 Tortuga 22, Inc. All rights reserved. + * + */ + +#import +#import + +#import "TUNinePatchProtocols.h" +#import "TUNinePatch.h" +#import "TUNinePatchCache.h" +#import "TUDebugLoggingAssistant.h" \ No newline at end of file diff --git a/NinePatch/NinePatch.xcodeproj/project.pbxproj b/NinePatch/NinePatch.xcodeproj/project.pbxproj new file mode 100755 index 000000000..b135d02b2 --- /dev/null +++ b/NinePatch/NinePatch.xcodeproj/project.pbxproj @@ -0,0 +1,461 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 324A2926111CC27800CC0BF0 /* TUNinePatchCachingCategories.h in Headers */ = {isa = PBXBuildFile; fileRef = 324A2924111CC27800CC0BF0 /* TUNinePatchCachingCategories.h */; }; + 324A2927111CC27800CC0BF0 /* TUNinePatchCachingCategories.m in Sources */ = {isa = PBXBuildFile; fileRef = 324A2925111CC27800CC0BF0 /* TUNinePatchCachingCategories.m */; }; + 324A2930111CC2CB00CC0BF0 /* TUCachingNinePatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 324A292E111CC2CB00CC0BF0 /* TUCachingNinePatch.h */; }; + 324A2931111CC2CB00CC0BF0 /* TUCachingNinePatch.m in Sources */ = {isa = PBXBuildFile; fileRef = 324A292F111CC2CB00CC0BF0 /* TUCachingNinePatch.m */; }; + 324A2940111CE12C00CC0BF0 /* TUNinePatchCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 324A293E111CE12C00CC0BF0 /* TUNinePatchCache.h */; }; + 324A2941111CE12C00CC0BF0 /* TUNinePatchCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 324A293F111CE12C00CC0BF0 /* TUNinePatchCache.m */; }; + 325B80EF11B001C300B86EA1 /* TUDebugLoggingAssistant.h in Headers */ = {isa = PBXBuildFile; fileRef = 325B80ED11B001C300B86EA1 /* TUDebugLoggingAssistant.h */; }; + 325B80F011B001C300B86EA1 /* TUDebugLoggingAssistant.m in Sources */ = {isa = PBXBuildFile; fileRef = 325B80EE11B001C300B86EA1 /* TUDebugLoggingAssistant.m */; }; + 325B80F811B00C9800B86EA1 /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 325B80F711B00C9800B86EA1 /* CoreFoundation.framework */; }; + 325B821F11B317E400B86EA1 /* NinePatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 325B821E11B317E400B86EA1 /* NinePatch.h */; }; + 32BBFEFF10E95B5700F57FBC /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 32BBFEFE10E95B5700F57FBC /* CoreGraphics.framework */; }; + 32BBFF0610E95B6E00F57FBC /* TUNinePatchProtocols.h in Headers */ = {isa = PBXBuildFile; fileRef = 32BBFF0510E95B6E00F57FBC /* TUNinePatchProtocols.h */; }; + 32BBFF2710E95BCF00F57FBC /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 32BBFF2610E95BCF00F57FBC /* UIKit.framework */; }; + 32BBFF2C10E95BF900F57FBC /* TUNinePatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 32BBFF2A10E95BF900F57FBC /* TUNinePatch.h */; }; + 32BBFF2D10E95BF900F57FBC /* TUNinePatch.m in Sources */ = {isa = PBXBuildFile; fileRef = 32BBFF2B10E95BF900F57FBC /* TUNinePatch.m */; }; + 32BBFF3510E95CA700F57FBC /* TUHorizontalNinePatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 32BBFF3310E95CA700F57FBC /* TUHorizontalNinePatch.h */; }; + 32BBFF3610E95CA700F57FBC /* TUHorizontalNinePatch.m in Sources */ = {isa = PBXBuildFile; fileRef = 32BBFF3410E95CA700F57FBC /* TUHorizontalNinePatch.m */; }; + 32BBFF3910E95CD600F57FBC /* TUVerticalNinePatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 32BBFF3710E95CD600F57FBC /* TUVerticalNinePatch.h */; }; + 32BBFF3A10E95CD600F57FBC /* TUVerticalNinePatch.m in Sources */ = {isa = PBXBuildFile; fileRef = 32BBFF3810E95CD600F57FBC /* TUVerticalNinePatch.m */; }; + 32BBFF3D10E95D3800F57FBC /* TUFullNinePatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 32BBFF3B10E95D3800F57FBC /* TUFullNinePatch.h */; }; + 32BBFF3E10E95D3800F57FBC /* TUFullNinePatch.m in Sources */ = {isa = PBXBuildFile; fileRef = 32BBFF3C10E95D3800F57FBC /* TUFullNinePatch.m */; }; + 32BBFF4310E9605300F57FBC /* UIImage-TUNinePatch.h in Headers */ = {isa = PBXBuildFile; fileRef = 32BBFF4110E9605300F57FBC /* UIImage-TUNinePatch.h */; }; + 32BBFF4410E9605300F57FBC /* UIImage-TUNinePatch.m in Sources */ = {isa = PBXBuildFile; fileRef = 32BBFF4210E9605300F57FBC /* UIImage-TUNinePatch.m */; }; + AA747D9F0F9514B9006C5449 /* NinePatch_Prefix.pch in Headers */ = {isa = PBXBuildFile; fileRef = AA747D9E0F9514B9006C5449 /* NinePatch_Prefix.pch */; }; + AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AACBBE490F95108600F1A2B1 /* Foundation.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 324A2924111CC27800CC0BF0 /* TUNinePatchCachingCategories.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUNinePatchCachingCategories.h; sourceTree = ""; }; + 324A2925111CC27800CC0BF0 /* TUNinePatchCachingCategories.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUNinePatchCachingCategories.m; sourceTree = ""; }; + 324A292E111CC2CB00CC0BF0 /* TUCachingNinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUCachingNinePatch.h; sourceTree = ""; }; + 324A292F111CC2CB00CC0BF0 /* TUCachingNinePatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUCachingNinePatch.m; sourceTree = ""; }; + 324A293E111CE12C00CC0BF0 /* TUNinePatchCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUNinePatchCache.h; sourceTree = ""; }; + 324A293F111CE12C00CC0BF0 /* TUNinePatchCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUNinePatchCache.m; sourceTree = ""; }; + 325B80ED11B001C300B86EA1 /* TUDebugLoggingAssistant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUDebugLoggingAssistant.h; sourceTree = ""; }; + 325B80EE11B001C300B86EA1 /* TUDebugLoggingAssistant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUDebugLoggingAssistant.m; sourceTree = ""; }; + 325B80F711B00C9800B86EA1 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; + 325B821E11B317E400B86EA1 /* NinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NinePatch.h; sourceTree = ""; }; + 32BBFEFE10E95B5700F57FBC /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 32BBFF0510E95B6E00F57FBC /* TUNinePatchProtocols.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUNinePatchProtocols.h; sourceTree = ""; }; + 32BBFF2610E95BCF00F57FBC /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 32BBFF2A10E95BF900F57FBC /* TUNinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUNinePatch.h; sourceTree = ""; }; + 32BBFF2B10E95BF900F57FBC /* TUNinePatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUNinePatch.m; sourceTree = ""; }; + 32BBFF3310E95CA700F57FBC /* TUHorizontalNinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUHorizontalNinePatch.h; sourceTree = ""; }; + 32BBFF3410E95CA700F57FBC /* TUHorizontalNinePatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUHorizontalNinePatch.m; sourceTree = ""; }; + 32BBFF3710E95CD600F57FBC /* TUVerticalNinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUVerticalNinePatch.h; sourceTree = ""; }; + 32BBFF3810E95CD600F57FBC /* TUVerticalNinePatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUVerticalNinePatch.m; sourceTree = ""; }; + 32BBFF3B10E95D3800F57FBC /* TUFullNinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TUFullNinePatch.h; sourceTree = ""; }; + 32BBFF3C10E95D3800F57FBC /* TUFullNinePatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TUFullNinePatch.m; sourceTree = ""; }; + 32BBFF4110E9605300F57FBC /* UIImage-TUNinePatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage-TUNinePatch.h"; sourceTree = ""; }; + 32BBFF4210E9605300F57FBC /* UIImage-TUNinePatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage-TUNinePatch.m"; sourceTree = ""; }; + AA747D9E0F9514B9006C5449 /* NinePatch_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NinePatch_Prefix.pch; sourceTree = SOURCE_ROOT; }; + AACBBE490F95108600F1A2B1 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + D2AAC07E0554694100DB518D /* libNinePatch.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libNinePatch.a; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + D2AAC07C0554694100DB518D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + AACBBE4A0F95108600F1A2B1 /* Foundation.framework in Frameworks */, + 32BBFEFF10E95B5700F57FBC /* CoreGraphics.framework in Frameworks */, + 32BBFF2710E95BCF00F57FBC /* UIKit.framework in Frameworks */, + 325B80F811B00C9800B86EA1 /* CoreFoundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DFFF38A50411DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + D2AAC07E0554694100DB518D /* libNinePatch.a */, + ); + name = Products; + sourceTree = ""; + }; + 0867D691FE84028FC02AAC07 /* NinePatch */ = { + isa = PBXGroup; + children = ( + 08FB77AEFE84172EC02AAC07 /* Classes */, + 32C88DFF0371C24200C91783 /* Other Sources */, + 0867D69AFE84028FC02AAC07 /* Frameworks */, + 034768DFFF38A50411DB9C8B /* Products */, + 32BBFF2610E95BCF00F57FBC /* UIKit.framework */, + 325B80F711B00C9800B86EA1 /* CoreFoundation.framework */, + 325B821E11B317E400B86EA1 /* NinePatch.h */, + ); + name = NinePatch; + sourceTree = ""; + }; + 0867D69AFE84028FC02AAC07 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 32BBFEFE10E95B5700F57FBC /* CoreGraphics.framework */, + AACBBE490F95108600F1A2B1 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 08FB77AEFE84172EC02AAC07 /* Classes */ = { + isa = PBXGroup; + children = ( + 325B80EC11B0019B00B86EA1 /* Debugging Utilities */, + 324A292C111CC2C100CC0BF0 /* Caching */, + 32BBFF4010E9604300F57FBC /* Categories */, + 32BBFF3F10E9603E00F57FBC /* NinePatch */, + ); + name = Classes; + sourceTree = ""; + }; + 324A292C111CC2C100CC0BF0 /* Caching */ = { + isa = PBXGroup; + children = ( + 324A292E111CC2CB00CC0BF0 /* TUCachingNinePatch.h */, + 324A292F111CC2CB00CC0BF0 /* TUCachingNinePatch.m */, + 324A293E111CE12C00CC0BF0 /* TUNinePatchCache.h */, + 324A293F111CE12C00CC0BF0 /* TUNinePatchCache.m */, + ); + name = Caching; + sourceTree = ""; + }; + 325B80EC11B0019B00B86EA1 /* Debugging Utilities */ = { + isa = PBXGroup; + children = ( + 325B80ED11B001C300B86EA1 /* TUDebugLoggingAssistant.h */, + 325B80EE11B001C300B86EA1 /* TUDebugLoggingAssistant.m */, + ); + name = "Debugging Utilities"; + sourceTree = ""; + }; + 32BBFF3F10E9603E00F57FBC /* NinePatch */ = { + isa = PBXGroup; + children = ( + 32BBFF0510E95B6E00F57FBC /* TUNinePatchProtocols.h */, + 32BBFF2A10E95BF900F57FBC /* TUNinePatch.h */, + 32BBFF2B10E95BF900F57FBC /* TUNinePatch.m */, + 32BBFF3310E95CA700F57FBC /* TUHorizontalNinePatch.h */, + 32BBFF3410E95CA700F57FBC /* TUHorizontalNinePatch.m */, + 32BBFF3710E95CD600F57FBC /* TUVerticalNinePatch.h */, + 32BBFF3810E95CD600F57FBC /* TUVerticalNinePatch.m */, + 32BBFF3B10E95D3800F57FBC /* TUFullNinePatch.h */, + 32BBFF3C10E95D3800F57FBC /* TUFullNinePatch.m */, + ); + name = NinePatch; + sourceTree = ""; + }; + 32BBFF4010E9604300F57FBC /* Categories */ = { + isa = PBXGroup; + children = ( + 32BBFF4110E9605300F57FBC /* UIImage-TUNinePatch.h */, + 32BBFF4210E9605300F57FBC /* UIImage-TUNinePatch.m */, + 324A2924111CC27800CC0BF0 /* TUNinePatchCachingCategories.h */, + 324A2925111CC27800CC0BF0 /* TUNinePatchCachingCategories.m */, + ); + name = Categories; + sourceTree = ""; + }; + 32C88DFF0371C24200C91783 /* Other Sources */ = { + isa = PBXGroup; + children = ( + AA747D9E0F9514B9006C5449 /* NinePatch_Prefix.pch */, + ); + name = "Other Sources"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + D2AAC07A0554694100DB518D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + AA747D9F0F9514B9006C5449 /* NinePatch_Prefix.pch in Headers */, + 32BBFF0610E95B6E00F57FBC /* TUNinePatchProtocols.h in Headers */, + 32BBFF2C10E95BF900F57FBC /* TUNinePatch.h in Headers */, + 32BBFF3510E95CA700F57FBC /* TUHorizontalNinePatch.h in Headers */, + 32BBFF3910E95CD600F57FBC /* TUVerticalNinePatch.h in Headers */, + 32BBFF3D10E95D3800F57FBC /* TUFullNinePatch.h in Headers */, + 32BBFF4310E9605300F57FBC /* UIImage-TUNinePatch.h in Headers */, + 324A2926111CC27800CC0BF0 /* TUNinePatchCachingCategories.h in Headers */, + 324A2930111CC2CB00CC0BF0 /* TUCachingNinePatch.h in Headers */, + 324A2940111CE12C00CC0BF0 /* TUNinePatchCache.h in Headers */, + 325B80EF11B001C300B86EA1 /* TUDebugLoggingAssistant.h in Headers */, + 325B821F11B317E400B86EA1 /* NinePatch.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + D2AAC07D0554694100DB518D /* NinePatch */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "NinePatch" */; + buildPhases = ( + D2AAC07A0554694100DB518D /* Headers */, + D2AAC07B0554694100DB518D /* Sources */, + D2AAC07C0554694100DB518D /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NinePatch; + productName = NinePatch; + productReference = D2AAC07E0554694100DB518D /* libNinePatch.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0430; + }; + buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "NinePatch" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* NinePatch */; + productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + D2AAC07D0554694100DB518D /* NinePatch */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + D2AAC07B0554694100DB518D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 32BBFF2D10E95BF900F57FBC /* TUNinePatch.m in Sources */, + 32BBFF3610E95CA700F57FBC /* TUHorizontalNinePatch.m in Sources */, + 32BBFF3A10E95CD600F57FBC /* TUVerticalNinePatch.m in Sources */, + 32BBFF3E10E95D3800F57FBC /* TUFullNinePatch.m in Sources */, + 32BBFF4410E9605300F57FBC /* UIImage-TUNinePatch.m in Sources */, + 324A2927111CC27800CC0BF0 /* TUNinePatchCachingCategories.m in Sources */, + 324A2931111CC2CB00CC0BF0 /* TUCachingNinePatch.m in Sources */, + 324A2941111CE12C00CC0BF0 /* TUNinePatchCache.m in Sources */, + 325B80F011B001C300B86EA1 /* TUDebugLoggingAssistant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 1DEB921F08733DC00010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + armv6, + "$(ARCHS_STANDARD_32_BIT)", + ); + COPY_PHASE_STRIP = NO; + DSTROOT = /tmp/NinePatch.dst; + GCC_DYNAMIC_NO_PIC = NO; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = NinePatch_Prefix.pch; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + INSTALL_PATH = /usr/local/lib; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_NAME = NinePatch; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 1DEB922008733DC00010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + armv6, + "$(ARCHS_STANDARD_32_BIT)", + ); + COPY_PHASE_STRIP = NO; + DSTROOT = /tmp/NinePatch.dst; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = NinePatch_Prefix.pch; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + INSTALL_PATH = /usr/local/lib; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_NAME = NinePatch; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + 1DEB922308733DC00010E9CD /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CODE_SIGN_IDENTITY = "Don't Code Sign"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OTHER_LDFLAGS = "-ObjC"; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 1DEB922408733DC00010E9CD /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CODE_SIGN_IDENTITY = "Don't Code Sign"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-ObjC"; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + }; + name = Release; + }; + D3D14E7E15A72BD10074A527 /* Distribution */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CODE_SIGN_IDENTITY = "Don't Code Sign"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-ObjC"; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + }; + name = Distribution; + }; + D3D14E7F15A72BD10074A527 /* Distribution */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + armv6, + "$(ARCHS_STANDARD_32_BIT)", + ); + COPY_PHASE_STRIP = NO; + DSTROOT = /tmp/NinePatch.dst; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = NinePatch_Prefix.pch; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + INSTALL_PATH = /usr/local/lib; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_NAME = NinePatch; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Distribution; + }; + D3D14E8015A72BD70074A527 /* DistributionAdhoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + CODE_SIGN_IDENTITY = "Don't Code Sign"; + GCC_C_LANGUAGE_STANDARD = c99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = YES; + OTHER_LDFLAGS = "-ObjC"; + PROVISIONING_PROFILE = ""; + SDKROOT = iphoneos; + }; + name = DistributionAdhoc; + }; + D3D14E8115A72BD70074A527 /* DistributionAdhoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + armv6, + "$(ARCHS_STANDARD_32_BIT)", + ); + COPY_PHASE_STRIP = NO; + DSTROOT = /tmp/NinePatch.dst; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = s; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = NinePatch_Prefix.pch; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + INSTALL_PATH = /usr/local/lib; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; + ONLY_ACTIVE_ARCH = NO; + PRODUCT_NAME = NinePatch; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = DistributionAdhoc; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 1DEB921E08733DC00010E9CD /* Build configuration list for PBXNativeTarget "NinePatch" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB921F08733DC00010E9CD /* Debug */, + 1DEB922008733DC00010E9CD /* Release */, + D3D14E7F15A72BD10074A527 /* Distribution */, + D3D14E8115A72BD70074A527 /* DistributionAdhoc */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "NinePatch" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB922308733DC00010E9CD /* Debug */, + 1DEB922408733DC00010E9CD /* Release */, + D3D14E7E15A72BD10074A527 /* Distribution */, + D3D14E8015A72BD70074A527 /* DistributionAdhoc */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/NinePatch/NinePatch_Prefix.pch b/NinePatch/NinePatch_Prefix.pch new file mode 100755 index 000000000..2b1046d32 --- /dev/null +++ b/NinePatch/NinePatch_Prefix.pch @@ -0,0 +1,157 @@ +// +// Prefix header for all source files of the 'CocoaTouchStaticLibrary' target in the 'CocoaTouchStaticLibrary' project. +// + +#ifdef __OBJC__ + #import +#endif +/** + This struct is used for doing pixel-tasting. We get CoreGraphics to create a bitmap context wherein the memory representation looks like this struct, then we cast the pointer to that memory to be of this struct's type. Pretty self-explanatory. + */ +typedef struct _TURGBAPixel { + UInt8 red; + UInt8 green; + UInt8 blue; + UInt8 alpha; +} TURGBAPixel; + +/** + Defined here, used as part of the pixel-tasting code. Helps make sure the memory representation of the bitmap context is made up of stuff that looks just like TURGBAPixel. + */ +#define TURGBABytesPerPixel (4) + +/** + This tests if a pixel is black. Here "black" means alpha isn't at zero (AKA: it's at least partially opaque) and r == g == b == 0. + */ +#define TURGBAPixelIsBlack(PIXEL) (((PIXEL.red == 0) && (PIXEL.green == 0) && (PIXEL.blue == 0) && (PIXEL.alpha != 0))?(YES):(NO)) + +#define TUNotFoundRange (NSMakeRange(NSNotFound,0)) +#define TUIsNotFoundRange(RANGE) (NSEqualRanges(RANGE, TUNotFoundRange)) + +#define TUTruncateBelow(VALUE, FLOOR) ((( VALUE ) < ( FLOOR ))?(( FLOOR )):(( VALUE ))) +#define TUTruncateAbove(VALUE, CEILING) ((( VALUE ) > ( CEILING ))?(( CEILING )):(( VALUE ))) +#define TUTruncateWithin(VALUE, FLOOR, CEILING) ((( VALUE ) < ( FLOOR ))?(( FLOOR )):((( VALUE ) > ( CEILING ))?(( CEILING )):(( VALUE )))) +#define TUTruncateAtZero(VALUE) TUTruncateBelow(VALUE, 0.0f) + +#define TUForceYesOrNo(ABOOL) ((ABOOL)?(YES):(NO)) +#define TUYesOrNoString(ABOOL) ((( ABOOL ))?(@"YES"):(@"NO")) + +#define TUWithinEpsilon(EPSILON, X, Y) TUForceYesOrNo((((X-Y) > (-1.0f * EPSILON)) || ((X-Y) < EPSILON))) + +//#define DEBUG +//#define NP_ASSERTION_CHECKING +//#define IMAGEDEBUG + +// DLog is almost a drop-in replacement for NSLog +// DLog(); +// DLog(@"here"); +// DLog(@"value: %d", x); +// Unfortunately this doesn't work DLog(aStringVariable); you have to do this instead DLog(@"%@", aStringVariable); +#ifdef DEBUG +#define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); +#else +#define DLog(...) +#endif + +// ALog always displays output regardless of the DEBUG setting +#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); + +#define LLog(STR) DLog(@"%@",STR) + +#define NPLogException(E) DLog(@"Caught '%@' < '%@', '%@' >.",[E name],[E reason],[E userInfo]) +#define NPLogError(E) DLog(@"Error: '%@', '%@', '%@'.",[E localizedDescription],[E localizedFailureReason],[E localizedRecoveryOptions]); + +#ifdef NP_ASSERTION_CHECKING +#define NPLogExceptionRethrowIfAssertionFailure(E) { \ +NPLogException(E); \ +if (E && [[E name] isEqualToString:NSInternalInconsistencyException]) { \ + @throw E; \ +}} +#else +#define NPLogExceptionRethrowIfAssertionFailure(E) NPLogException(E) +#endif + +#ifdef NP_OUTPUT_LOGGING +#define NPFOutputLog(AFLOAT) DLog(@"returning %s: '%f'.",#AFLOAT,AFLOAT) +#define NPDOutputLog(ANINT) DLog(@"returning %s: '%d'.",#ANINT,ANINT) +#define NPOOutputLog(ANOBJ) DLog(@"returning %s: '%@'.",#ANOBJ,ANOBJ) +#define NPBOutputLog(ABOOL) DLog(@"returning %s: '%@'.",#ABOOL,TUYesOrNoString(ABOOL)) +#define NPCGROutputLog(ARECT) DLog(@"returning %s: '%@'.",#ARECT,NSStringFromCGRect(ARECT)) +#define NPCGSOutputLog(ASIZE) DLog(@"returning %s: '%@'.",#ASIZE,NSStringFromCGSize(ASIZE)) +#define NPCGPOutputLog(APOINT) DLog(@"returning %s: '%@'.",#APOINT,NSStringFromCGPoint(APOINT)) +#define NPNSROutputLog(ARANGE) DLog(@"returning %s: '%@'.",#ARANGE,NSStringFromRange(ARANGE)) +#else +#define NPFOutputLog(...) +#define NPDOutputLog(...) +#define NPOOutputLog(...) +#define NPBOutputLog(...) +#define NPCGROutputLog(...) +#define NPCGSOutputLog(...) +#define NPCGPOutputLog(...) +#define NPNSROutputLog(...) +#endif + +#ifdef NP_INPUT_LOGGING +#define NPAInputLog(...) DLog(##__VA_ARGS__) +// convenience input loggers for single-argument messages +#define NPAFInputLog(AFLOAT) DLog(@"%s: '%f'",#AFLOAT,AFLOAT) +#define NPADInputLog(ANINT) DLog(@"%s: '%d'",#ANINT,ANINT) +#define NPAOInputLog(ANOBJ) DLog(@"%s: '%@'",#ANOBJ,ANOBJ) +#define NPABInputLog(ABOOL) DLog(@"%s: '%@'",#ABOOL,TUYesOrNoString(ABOOL)) +#else +#define NPAInputLog(...) +#define NPAFInputLog(AFLOAT) +#define NPADInputLog(ANINT) +#define NPAOInputLog(ANOBJ) +#define NPABInputLog(ABOOL) +#endif + + +#ifdef NP_ASSERTION_CHECKING +#define NPParameterAssert(COND) NSParameterAssert(COND) +#define NPCParameterAssert(COND) NSCParameterAssert(COND) +#define NPAssert(COND,DESC) NSAssert(COND,DESC) +#define NPCAssert(COND,DESC) NSCAssert(COND,DESC) +#else +#define NPParameterAssert(...) +#define NPCParameterAssert(...) +#define NPAssert(...) +#define NPCAssert(...) +#endif + +#define STRINGIFY2( x) #x +#define STRINGIFY(x) STRINGIFY2(x) +#define PASTE2( a, b) a##b +#define PASTE( a, b) PASTE2( a, b) +#define PASSTHROUGH(X) X + +#define NPOBJCStringOfToken(TOKEN) PASSTHROUGH(PASTE( PASSTHROUGH(@), PASSTHROUGH(STRINGIFY(TOKEN)))) + +#define NPSelfProperty(PROP) +//#define NPSelfProperty(PROP) (self.PROP) +//#define NPSelfProperty(PROP) ([self PROP]) + +#define NPAssertPropertyNonNil(PROP) NPAssert((NPSelfProperty(PROP) != nil), ([NSString stringWithFormat:@"self.%s should never be nil.",( (#PROP) )])) + +#define NPParameterAssertNotNilConformsToProtocol(OBJ,PROT) NPParameterAssert((OBJ != nil) && ([OBJ conformsToProtocol:@protocol(PROT)])) +#define NPParameterAssertNotNilIsKindOfClass(OBJ,CLASS) NPParameterAssert((OBJ != nil) && ([OBJ isKindOfClass:[CLASS class]])) + +#define NPAssertNilOrConformsToProtocol(OBJ,PROT) NPAssert(((OBJ == nil) || ((OBJ != nil) && [OBJ conformsToProtocol:@protocol(PROT)])),([NSString stringWithFormat:@"Variable %s must either be nil or conform to %s protocol.", ( (#OBJ) ), ( (#PROT) )])) +#define NPAssertNilOrIsKindOfClass(OBJ,CLASS) NPAssert(((OBJ == nil) || ((OBJ != nil) && [OBJ isKindOfClass:[CLASS class]])), ([NSString stringWithFormat:@"Variable %s must either be nil or be kind of %s class.", (#OBJ), (#CLASS)])) + +#define NPAssertWithinEpsilon(EPSILON,X,Y) NPAssert( (((X-Y) > (-1.0f * EPSILON)) || ((X-Y) < EPSILON)),([NSString stringWithFormat:@"Should have (%s,%s) within %f but instead (%f,%f).",#X,#Y,EPSILON,X,Y])) +#define NPAssertWithinOne(X,Y) NPAssertWithinEpsilon(1.0f,X,Y) + +#define NPAssertThreeSubSizesSumCorrectlyOnOneAxis(AXIS,MASTERSIZE,SIZE_ONE,SIZE_TWO,SIZE_THREE) NPAssertWithinOne(MASTERSIZE.AXIS,( SIZE_ONE.AXIS + SIZE_TWO.AXIS + SIZE_THREE.AXIS )) +#define NPAssertCorrectSubsizeWidthDecomposition(MASTER,SIZE_ONE,SIZE_TWO,SIZE_THREE) NPAssertThreeSubSizesSumCorrectlyOnOneAxis(width, MASTER, SIZE_ONE, SIZE_TWO, SIZE_THREE) +#define NPAssertCorrectSubsizeHeightDecomposition(MASTER,SIZE_ONE,SIZE_TWO,SIZE_THREE) NPAssertThreeSubSizesSumCorrectlyOnOneAxis(height, MASTER, SIZE_ONE, SIZE_TWO, SIZE_THREE) + +#define NPAssertCorrectSubimageWidthDecomposition(MASTER,IMAGE_ONE,IMAGE_TWO,IMAGE_THREE) NPAssertCorrectSubsizeWidthDecomposition([MASTER size],[IMAGE_ONE size],[IMAGE_TWO size],[IMAGE_THREE size]) +#define NPAssertCorrectSubimageHeightDecomposition(MASTER,IMAGE_ONE,IMAGE_TWO,IMAGE_THREE) NPAssertCorrectSubsizeWidthDecomposition([MASTER size],[IMAGE_ONE size],[IMAGE_TWO size],[IMAGE_THREE size]) + +#ifdef IMAGEDEBUG +#define IMLog(IMAGE, IMAGENAME) TUImageLog(IMAGE,[[NSString stringWithFormat:@"debugImage.%.0f.%u.",[NSDate timeIntervalSinceReferenceDate],((NSUInteger) rand())] stringByAppendingString:( IMAGENAME )]) +#else +#define IMLog(IMAGE, IMAGENAME) +#endif + diff --git a/NinePatch/TUCachingNinePatch.h b/NinePatch/TUCachingNinePatch.h new file mode 100755 index 000000000..6d1a1a99d --- /dev/null +++ b/NinePatch/TUCachingNinePatch.h @@ -0,0 +1,51 @@ +// +// TUCachingNinePatch.h +// NinePatch +// +// Copyright 2010 Tortuga 22, Inc. All rights reserved. +// + +#import +#import +#import "TUNinePatchProtocols.h" + +@interface TUCachingNinePatch : NSObject < NSCoding, NSCopying > { + id < TUNinePatch > _ninePatch; + NSMutableDictionary *_ninePatchImageCache; +} + +// Synthesized Properties +@property(nonatomic, retain, readonly) id < TUNinePatch > ninePatch; +@property(nonatomic, retain, readonly) NSMutableDictionary *ninePatchImageCache; + +// Init + Dealloc +-(id)initWithNinePatchNamed:(NSString *)ninePatchName; +-(id)initWithNinePatch:(id < TUNinePatch >)ninePatch; ++(id)ninePatchCacheWithNinePatchNamed:(NSString *)ninePatchName; ++(id)ninePatchCacheWithNinePatch:(id < TUNinePatch >)ninePatch; +-(void)dealloc; + +// NSCoding +-(id)initWithCoder:(NSCoder *)aDecoder; +-(void)encodeWithCoder:(NSCoder *)anEncoder; + +// NSCopying +-(id)copyWithZone:(NSZone *)zone; + +// Nib +-(void)awakeFromNib; + +// Cache Management +-(void)flushCachedImages; + +// Image Access - Utility Accessors +-(UIImage *)imageOfSize:(CGSize)size; + +// Cache Access +-(void)cacheImage:(UIImage *)image ofSize:(CGSize)size; +-(UIImage *)cachedImageOfSize:(CGSize)size; + +// Image Construction +-(UIImage *)constructImageOfSize:(CGSize)size; + +@end diff --git a/NinePatch/TUCachingNinePatch.m b/NinePatch/TUCachingNinePatch.m new file mode 100755 index 000000000..34c3bef3d --- /dev/null +++ b/NinePatch/TUCachingNinePatch.m @@ -0,0 +1,125 @@ +// +// TUCachingNinePatch.m +// NinePatch +// +// Copyright 2010 Tortuga 22, Inc. All rights reserved. +// + +#import "TUCachingNinePatch.h" +#import "TUNinePatch.h" +#import "TUNinePatchCachingCategories.h" + +@interface TUCachingNinePatch () + +// Synthesized Properties +@property(nonatomic, retain, readwrite) id < TUNinePatch > ninePatch; +@property(nonatomic, retain, readwrite) NSMutableDictionary *ninePatchImageCache; + +@end + + +@implementation TUCachingNinePatch + +#pragma mark Synthesized Properties +@synthesize ninePatch = _ninePatch; +@synthesize ninePatchImageCache = _ninePatchImageCache; + +#pragma mark Init + Dealloc +-(id)initWithNinePatchNamed:(NSString *)ninePatchName { + return [self initWithNinePatch:[TUNinePatch ninePatchNamed:ninePatchName]]; +} + +-(id)initWithNinePatch:(id < TUNinePatch >)ninePatch { + if (self = [super init]) { + self.ninePatch = ninePatch; + self.ninePatchImageCache = [NSMutableDictionary dictionaryWithCapacity:5]; + } + return self; +} + +#pragma mark - ++(id)ninePatchCacheWithNinePatchNamed:(NSString *)ninePatchName { + return [[[self alloc] initWithNinePatchNamed:ninePatchName] autorelease]; +} + ++(id)ninePatchCacheWithNinePatch:(id < TUNinePatch >)ninePatch { + return [[[self alloc] initWithNinePatch:ninePatch] autorelease]; +} + +#pragma mark - +-(void)dealloc { + self.ninePatch = nil; + self.ninePatchImageCache = nil; + [super dealloc]; +} + +#pragma mark NSCoding +-(id)initWithCoder:(NSCoder *)aDecoder { + NSParameterAssert(aDecoder != nil); + if (self = [super init]) { + self.ninePatch = [aDecoder decodeObjectForKey:@"ninePatch"]; + self.ninePatchImageCache = [aDecoder decodeObjectForKey:@"ninePatchImageCache"]; + } + return self; +} + +-(void)encodeWithCoder:(NSCoder *)anEncoder { + NSParameterAssert(anEncoder != nil); + [anEncoder encodeObject:self.ninePatch + forKey:@"ninePatch"]; + [anEncoder encodeObject:self.ninePatchImageCache + forKey:@"ninePatchImageCache"]; +} + +#pragma mark NSCopying +-(id)copyWithZone:(NSZone *)zone { + return [[[self class] alloc] initWithNinePatch:self.ninePatch]; +} + +#pragma mark Nib +-(void)awakeFromNib { + [super awakeFromNib]; + if (!self.ninePatchImageCache) { + self.ninePatchImageCache = [NSMutableDictionary dictionaryWithCapacity:5]; + }; +} + +#pragma mark Cache Management +-(void)flushCachedImages { + NPAssertPropertyNonNil(ninePatchImageCache); + [self.ninePatchImageCache removeAllObjects]; +} + +#pragma mark Image Access - Utility Accessors +-(UIImage *)imageOfSize:(CGSize)size { + UIImage *imageOfSize = [self cachedImageOfSize:size]; + if (!imageOfSize) { + imageOfSize = [self constructImageOfSize:size]; + if (imageOfSize) { + [self cacheImage:imageOfSize + ofSize:size]; + } + } + return imageOfSize; +} + +#pragma mark Cache Access +-(void)cacheImage:(UIImage *)image ofSize:(CGSize)size { + NPParameterAssertNotNilIsKindOfClass(image,UIImage); + NPAssertPropertyNonNil(self.ninePatchImageCache); + return [self.ninePatchImageCache setObject:image + forSize:size]; +} + +-(UIImage *)cachedImageOfSize:(CGSize)size { + NPAssertPropertyNonNil(ninePatchImageCache); + return [self.ninePatchImageCache objectForSize:size]; +} + +#pragma mark Image Construction +-(UIImage *)constructImageOfSize:(CGSize)size { + NPAssertPropertyNonNil(ninePatch); + return (!self.ninePatch)?(nil):([self.ninePatch imageOfSize:size]); +} + +@end diff --git a/NinePatch/TUDebugLoggingAssistant.h b/NinePatch/TUDebugLoggingAssistant.h new file mode 100755 index 000000000..7c6f04f68 --- /dev/null +++ b/NinePatch/TUDebugLoggingAssistant.h @@ -0,0 +1,56 @@ +// +// TUDebugLoggingAssistant.h +// NinePatch +// +// Copyright 2010 Tortuga 22, Inc. All rights reserved. +// + +#import +#import + + +@interface TUDebugLoggingAssistant : NSObject { + NSString *_sessionIdentifier; + NSMutableSet *_activatedLoggingTags; +} + +// Synthesized Properties +@property(nonatomic, retain, readonly) NSString *sessionIdentifier; +@property(nonatomic, retain, readonly) NSMutableSet *activatedLoggingTags; + +// Init + Dealloc +-(id)init; +-(void)dealloc; + +// Managing Logging +-(void)startLoggingTag:(NSString *)loggingTag; +-(void)stopLoggingTag:(NSString *)loggingTag; +-(void)startLoggingTags:(NSString *)loggingTag,...; +-(void)stopLoggingTags:(NSString *)loggingTag,...; +-(void)startLoggingTagsFromArray:(NSArray *)loggingTags; +-(void)stopLoggingTagsFromArray:(NSArray *)loggingTags; + +// Formatting +-(NSString *)formattedImageLogFilenameForTimestamp:(NSTimeInterval)timestamp specifiedFileName:(NSString *)specifiedFileName; + +// Log-Checking +-(BOOL)shouldLogLineWithTag:(NSString *)tag; + +// Singleton Access ++(id)shared; + +// Managing Logging ++(void)startLoggingTag:(NSString *)loggingTag; ++(void)stopLoggingTag:(NSString *)loggingTag; ++(void)startLoggingTags:(NSString *)loggingTag,...; ++(void)stopLoggingTags:(NSString *)loggingTag,...; ++(void)startLoggingTagsFromArray:(NSArray *)loggingTags; ++(void)stopLoggingTagsFromArray:(NSArray *)loggingTags; + +// Formatting ++(NSString *)formattedImageLogFilenameForTimestamp:(NSTimeInterval)timestamp specifiedFileName:(NSString *)specifiedFileName; + +// Log-Checking ++(BOOL)shouldLogLineWithTag:(NSString *)tag; + +@end diff --git a/NinePatch/TUDebugLoggingAssistant.m b/NinePatch/TUDebugLoggingAssistant.m new file mode 100755 index 000000000..94e12afcc --- /dev/null +++ b/NinePatch/TUDebugLoggingAssistant.m @@ -0,0 +1,362 @@ +// +// TUDebugLoggingAssistant.m +// NinePatch +// +// Copyright 2010 Tortuga 22, Inc. All rights reserved. +// + +#import "TUDebugLoggingAssistant.h" + +@interface TUDebugLoggingAssistant () + +@property(nonatomic, retain, readwrite) NSString *sessionIdentifier; +@property(nonatomic, retain, readwrite) NSMutableSet *activatedLoggingTags; + +@end + + +@implementation TUDebugLoggingAssistant + +#pragma mark Synthesized Properties +@synthesize sessionIdentifier = _sessionIdentifier; +@synthesize activatedLoggingTags = _activatedLoggingTags; + +#pragma mark Init + Dealloc +-(id)init { + if (self = [super init]) { + self.activatedLoggingTags = [NSMutableSet set]; + NSString *uuidString = @"UUID_ERROR_ENCOUNTERED"; + @try { + CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault); + if (uuid) { + @try { + uuidString = ((NSString *) CFUUIDCreateString(kCFAllocatorDefault, uuid)); + } + @catch (NSException * e) { + NPLogException(e); + if (uuidString) { + @try { + CFRelease(uuidString); + } + @catch (NSException * ee) { + NPLogException(ee); + } + @finally { + uuidString = @"UUID_ERROR_ENCOUNTERED"; + } + } + } + @finally { + @try { + CFRelease(uuid); + } + @catch (NSException * e) { + NPLogException(e); + } + } + } + } + @catch (NSException * e) { + NPLogException(e); + } + @finally { + if (uuidString) { + self.sessionIdentifier = uuidString; + [self.sessionIdentifier release]; // drops retain count back to 1 + } + } + } + return self; +} + +#pragma mark - +-(void)dealloc { + self.sessionIdentifier = nil; + self.activatedLoggingTags = nil; + [super dealloc]; +} + +#pragma mark Managing Logging +-(void)startLoggingTag:(NSString *)loggingTag { + NPAOInputLog(loggingTag); + NPParameterAssertNotNilIsKindOfClass(loggingTag,NSString); + NPAssertPropertyNonNil(activatedLoggingTags); + if (loggingTag) { + @try { + [self.activatedLoggingTags addObject:loggingTag]; + } + @catch (NSException * e) { + NPLogException(e); + } + } +} + +-(void)stopLoggingTag:(NSString *)loggingTag { + NPAOInputLog(loggingTag); + NPParameterAssertNotNilIsKindOfClass(loggingTag,NSString); + NPAssertPropertyNonNil(activatedLoggingTags); + if (loggingTag) { + @try { + [self.activatedLoggingTags removeObject:loggingTag]; + } + @catch (NSException * e) { + NPLogException(e); + } + } +} + +-(void)startLoggingTags:(NSString *)loggingTag,... { + id eachObject; + va_list argumentList; + if (loggingTag) { + NSMutableArray *workingArray = [NSMutableArray arrayWithObject:loggingTag]; + va_start(argumentList, loggingTag); + @try { + while ((eachObject = va_arg(argumentList, id))) { + @try { + [workingArray addObject:eachObject]; + } + @catch (NSException * e) { + NPLogException(e); + } + } + } + @catch (NSException * e) { + NPLogException(e); + } + @finally { + @try { + va_end(argumentList); + } + @catch (NSException * e) { + NPLogException(e); + } + @finally { + if (workingArray) { + [self startLoggingTagsFromArray:workingArray]; + } + } + } + } +} + +-(void)stopLoggingTags:(NSString *)loggingTag,... { + id eachObject; + va_list argumentList; + if (loggingTag) { + NSMutableArray *workingArray = [NSMutableArray arrayWithObject:loggingTag]; + va_start(argumentList, loggingTag); + @try { + while ((eachObject = va_arg(argumentList, id))) { + @try { + [workingArray addObject:eachObject]; + } + @catch (NSException * e) { + NPLogException(e); + } + } + } + @catch (NSException * e) { + NPLogException(e); + } + @finally { + @try { + va_end(argumentList); + } + @catch (NSException * e) { + NPLogException(e); + } + @finally { + if (workingArray) { + [self stopLoggingTagsFromArray:workingArray]; + } + } + } + } +} + +-(void)startLoggingTagsFromArray:(NSArray *)loggingTags { + NPAOInputLog(loggingTags); + NPParameterAssertNotNilIsKindOfClass(loggingTags,NSArray); + NPAssertPropertyNonNil(activatedLoggingTags); + if (loggingTags) { + // N.B.: we're not shooting for speed here + // b/c if you're even instantiating an instance of this + // class it means you're in a debug frenzy and have other + // issues. + // + // So here we break out the for loop and insert objects + // individually so that the asserts in the [self startLoggingTag:tag] + // will get noticed if you're smuggling non-string logging tags in + // by passing them in as part of an array. + // + // No point having type-induced errors in your debugging assistant. + for (NSString *loggingTag in loggingTags) { + [self startLoggingTag:loggingTag]; + } + } +} + +-(void)stopLoggingTagsFromArray:(NSArray *)loggingTags { + NPAOInputLog(loggingTags); + NPParameterAssertNotNilIsKindOfClass(loggingTags,NSArray); + NPAssertPropertyNonNil(activatedLoggingTags); + if (loggingTags) { + // CF comment in startLoggingTagsFromArray + // for some context here + for (NSString *loggingTag in loggingTags) { + [self stopLoggingTag:loggingTag]; + } + } +} + +#pragma mark Formatting +-(NSString *)formattedImageLogFilenameForTimestamp:(NSTimeInterval)timestamp specifiedFileName:(NSString *)specifiedFileName { + NPAInputLog(@"formattedImageLogFilenameForTimestamp:'%f' specifiedFileName:'%@'",timestamp,specifiedFileName); + NPParameterAssertNotNilIsKindOfClass(specifiedFileName,NSString); + NPAssertPropertyNonNil(sessionIdentifier); + NSString *outString = nil; + @try { + if (specifiedFileName) { + outString = [NSString stringWithFormat:@"%@_%@_%.0f.png",self.sessionIdentifier,specifiedFileName,timestamp]; + } else { + outString = [NSString stringWithFormat:@"%@_%.0f.png",self.sessionIdentifier,timestamp]; + } + } + @catch (NSException * e) { + NPLogException(e); + } + NPOOutputLog(outString); + return outString; +} + +#pragma mark Log-Checking +-(BOOL)shouldLogLineWithTag:(NSString *)tag { + NPAInputLog(@"shouldLogLineWithTag:'%@'",tag); + NPParameterAssertNotNilIsKindOfClass(tag,NSString); + NPAssertPropertyNonNil(activatedLoggingTags); + BOOL shouldLogLineWithTag = NO; + if (tag) { + @try { + shouldLogLineWithTag = [self.activatedLoggingTags containsObject:tag]; + } + @catch (NSException * e) { + NPLogException(e); + shouldLogLineWithTag = NO; + } + } + NPBOutputLog(shouldLogLineWithTag); + return shouldLogLineWithTag; +} + +#pragma mark Singleton Access ++(id)shared { + static id shared; + if (!shared) { + shared = [[[self class] alloc] init]; + } + NPAssertNilOrIsKindOfClass(shared,TUDebugLoggingAssistant); + return shared; +} + +#pragma mark Managing Logging ++(void)startLoggingTag:(NSString *)loggingTag { + [[self shared] startLoggingTag:loggingTag]; +} + ++(void)stopLoggingTag:(NSString *)loggingTag { + [[self shared] stopLoggingTag:loggingTag]; +} + +#pragma mark - ++(void)startLoggingTags:(NSString *)loggingTag,... { + id eachObject; + va_list argumentList; + if (loggingTag) { + NSMutableArray *workingArray = [NSMutableArray arrayWithObject:loggingTag]; + va_start(argumentList, loggingTag); + @try { + while ((eachObject = va_arg(argumentList, id))) { + @try { + [workingArray addObject:eachObject]; + } + @catch (NSException * e) { + NPLogException(e); + } + } + } + @catch (NSException * e) { + NPLogException(e); + } + @finally { + @try { + va_end(argumentList); + } + @catch (NSException * e) { + NPLogException(e); + } + @finally { + if (workingArray) { + [self startLoggingTagsFromArray:workingArray]; + } + } + } + } +} + ++(void)stopLoggingTags:(NSString *)loggingTag,... { + id eachObject; + va_list argumentList; + if (loggingTag) { + NSMutableArray *workingArray = [NSMutableArray arrayWithObject:loggingTag]; + va_start(argumentList, loggingTag); + @try { + while ((eachObject = va_arg(argumentList, id))) { + @try { + [workingArray addObject:eachObject]; + } + @catch (NSException * e) { + NPLogException(e); + } + } + } + @catch (NSException * e) { + NPLogException(e); + } + @finally { + @try { + va_end(argumentList); + } + @catch (NSException * e) { + NPLogException(e); + } + @finally { + if (workingArray) { + [self stopLoggingTagsFromArray:workingArray]; + } + } + } + } +} + +#pragma mark - ++(void)startLoggingTagsFromArray:(NSArray *)loggingTags { + [[self shared] startLoggingTagsFromArray:loggingTags]; +} + ++(void)stopLoggingTagsFromArray:(NSArray *)loggingTags { + [[self shared] stopLoggingTagsFromArray:loggingTags]; +} + +#pragma mark Formatting ++(NSString *)formattedImageLogFilenameForTimestamp:(NSTimeInterval)timestamp specifiedFileName:(NSString *)specifiedFileName { + return [[self shared] formattedImageLogFilenameForTimestamp:timestamp + specifiedFileName:specifiedFileName]; +} + +#pragma mark Log-Checking ++(BOOL)shouldLogLineWithTag:(NSString *)tag { + return [[self shared] shouldLogLineWithTag:tag]; +} + +@end diff --git a/NinePatch/TUFullNinePatch.h b/NinePatch/TUFullNinePatch.h new file mode 100755 index 000000000..261b51ec2 --- /dev/null +++ b/NinePatch/TUFullNinePatch.h @@ -0,0 +1,56 @@ +// +// TUFullNinePatch.h +// NinePatch +// +// Copyright 2009 Tortuga 22, Inc. All rights reserved. +// + +#import +#import + +#import "TUNinePatch.h" +#import "TUNinePatchProtocols.h" + +/** + Concrete TUNinePatch instance. Handles NinePatches that stretch horizontally and vertically. Only instantiate directly if you know what you're doing. + */ +@interface TUFullNinePatch : TUNinePatch < TUNinePatch > { + UIImage *_upperEdge; + UIImage *_lowerEdge; + UIImage *_leftEdge; + UIImage *_rightEdge; + UIImage *_upperLeftCorner; + UIImage *_lowerLeftCorner; + UIImage *_upperRightCorner; + UIImage *_lowerRightCorner; +} + +// Synthesized Properties +@property(nonatomic, retain, readonly) UIImage *upperEdge; +@property(nonatomic, retain, readonly) UIImage *lowerEdge; +@property(nonatomic, retain, readonly) UIImage *leftEdge; +@property(nonatomic, retain, readonly) UIImage *rightEdge; + +@property(nonatomic, retain, readonly) UIImage *upperLeftCorner; +@property(nonatomic, retain, readonly) UIImage *lowerLeftCorner; +@property(nonatomic, retain, readonly) UIImage *upperRightCorner; +@property(nonatomic, retain, readonly) UIImage *lowerRightCorner; + +// Init + Dealloc +-(id)initWithCenter:(UIImage *)center contentRegion:(CGRect)contentRegion tileCenterVertically:(BOOL)tileCenterVertically tileCenterHorizontally:(BOOL)tileCenterHorizontally upperLeftCorner:(UIImage *)upperLeftCorner upperRightCorner:(UIImage *)upperRightCorner lowerLeftCorner:(UIImage *)lowerLeftCorner lowerRightCorner:(UIImage *)lowerRightCorner leftEdge:(UIImage *)leftEdge rightEdge:(UIImage *)rightEdge upperEdge:(UIImage *)upperEdge lowerEdge:(UIImage *)lowerEdge; +-(void)dealloc; + +// Sanity-Checking Tools +-(BOOL)checkSizeSanityAgainstOriginalImage:(UIImage *)originalImage; + +// TUNinePatch Overrides +-(void)drawInRect:(CGRect)rect; +-(CGFloat)leftEdgeWidth; +-(CGFloat)rightEdgeWidth; +-(CGFloat)upperEdgeHeight; +-(CGFloat)lowerEdgeHeight; + +// Image Logging +-(void)logExplodedImage; + +@end \ No newline at end of file diff --git a/NinePatch/TUFullNinePatch.m b/NinePatch/TUFullNinePatch.m new file mode 100755 index 000000000..92abc32a6 --- /dev/null +++ b/NinePatch/TUFullNinePatch.m @@ -0,0 +1,318 @@ +// +// TUFullNinePatch.m +// NinePatch +// +// Copyright 2009 Tortuga 22, Inc. All rights reserved. +// + +#import "TUFullNinePatch.h" +#import "TUNinePatchProtocols.h" +#import "UIImage-TUNinePatch.h" + +@interface TUFullNinePatch () + +// Synthesized Properties +@property(nonatomic, retain, readwrite) UIImage *upperEdge; +@property(nonatomic, retain, readwrite) UIImage *lowerEdge; +@property(nonatomic, retain, readwrite) UIImage *leftEdge; +@property(nonatomic, retain, readwrite) UIImage *rightEdge; + +@property(nonatomic, retain, readwrite) UIImage *upperLeftCorner; +@property(nonatomic, retain, readwrite) UIImage *lowerLeftCorner; +@property(nonatomic, retain, readwrite) UIImage *upperRightCorner; +@property(nonatomic, retain, readwrite) UIImage *lowerRightCorner; + +@end + + +@implementation TUFullNinePatch + +#pragma mark Synthesized Properties +@synthesize upperEdge = _upperEdge; +@synthesize lowerEdge = _lowerEdge; +@synthesize leftEdge = _leftEdge; +@synthesize rightEdge = _rightEdge; + +@synthesize upperLeftCorner = _upperLeftCorner; +@synthesize lowerLeftCorner = _lowerLeftCorner; +@synthesize upperRightCorner = _upperRightCorner; +@synthesize lowerRightCorner = _lowerRightCorner; + +#pragma mark NSCoding +-(id)initWithCoder:(NSCoder *)coder { + if (self = [super initWithCoder:coder]) { + self.upperEdge = (UIImage *) [coder decodeObjectForKey:@"upperEdge"]; + self.lowerEdge = (UIImage *) [coder decodeObjectForKey:@"lowerEdge"]; + self.leftEdge = (UIImage *) [coder decodeObjectForKey:@"leftEdge"]; + self.rightEdge = (UIImage *) [coder decodeObjectForKey:@"rightEdge"]; + self.upperLeftCorner = (UIImage *) [coder decodeObjectForKey:@"upperLeftCorner"]; + self.lowerLeftCorner = (UIImage *) [coder decodeObjectForKey:@"lowerLeftCorner"]; + self.upperRightCorner = (UIImage *) [coder decodeObjectForKey:@"upperRightCorner"]; + self.lowerRightCorner = (UIImage *) [coder decodeObjectForKey:@"lowerRightCorner"]; + } + return self; +} + +-(void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:self.upperEdge + forKey:@"upperEdge"]; + + [coder encodeObject:self.lowerEdge + forKey:@"lowerEdge"]; + + [coder encodeObject:self.leftEdge + forKey:@"leftEdge"]; + + [coder encodeObject:self.rightEdge + forKey:@"rightEdge"]; + + [coder encodeObject:self.upperLeftCorner + forKey:@"upperLeftCorner"]; + + [coder encodeObject:self.lowerLeftCorner + forKey:@"lowerLeftCorner"]; + + [coder encodeObject:self.upperRightCorner + forKey:@"upperRightCorner"]; + + [coder encodeObject:self.lowerRightCorner + forKey:@"lowerRightCorner"]; +} + +#pragma mark NSCopying +-(id)copyWithZone:(NSZone *)zone { + return [[[self class] allocWithZone:zone] initWithCenter:self.center + contentRegion:self.contentRegion + tileCenterVertically:self.tileCenterVertically + tileCenterHorizontally:self.tileCenterHorizontally + upperLeftCorner:self.upperLeftCorner + upperRightCorner:self.upperRightCorner + lowerLeftCorner:self.lowerLeftCorner + lowerRightCorner:self.lowerRightCorner + leftEdge:self.leftEdge + rightEdge:self.rightEdge + upperEdge:self.upperEdge + lowerEdge:self.lowerEdge]; +} + +#pragma mark Init + Dealloc +-(id)initWithCenter:(UIImage *)center contentRegion:(CGRect)contentRegion tileCenterVertically:(BOOL)tileCenterVertically tileCenterHorizontally:(BOOL)tileCenterHorizontally upperLeftCorner:(UIImage *)upperLeftCorner upperRightCorner:(UIImage *)upperRightCorner lowerLeftCorner:(UIImage *)lowerLeftCorner lowerRightCorner:(UIImage *)lowerRightCorner leftEdge:(UIImage *)leftEdge rightEdge:(UIImage *)rightEdge upperEdge:(UIImage *)upperEdge lowerEdge:(UIImage *)lowerEdge { + NPParameterAssertNotNilIsKindOfClass(upperLeftCorner,UIImage); + NPParameterAssertNotNilIsKindOfClass(lowerLeftCorner,UIImage); + NPParameterAssertNotNilIsKindOfClass(upperRightCorner,UIImage); + NPParameterAssertNotNilIsKindOfClass(lowerRightCorner,UIImage); + NPParameterAssertNotNilIsKindOfClass(leftEdge,UIImage); + NPParameterAssertNotNilIsKindOfClass(rightEdge,UIImage); + NPParameterAssertNotNilIsKindOfClass(upperEdge,UIImage); + NPParameterAssertNotNilIsKindOfClass(lowerEdge,UIImage); + if (self = [super initWithCenter:center + contentRegion:contentRegion + tileCenterVertically:tileCenterVertically + tileCenterHorizontally:tileCenterHorizontally]) { + self.upperEdge = upperEdge; + self.lowerEdge = lowerEdge; + self.leftEdge = leftEdge; + self.rightEdge = rightEdge; + self.upperLeftCorner = upperLeftCorner; + self.lowerLeftCorner = lowerLeftCorner; + self.upperRightCorner = upperRightCorner; + self.lowerRightCorner = lowerRightCorner; + } + return self; +} + +#pragma mark +-(void)dealloc { + self.upperEdge = nil; + self.lowerEdge = nil; + self.leftEdge = nil; + self.rightEdge = nil; + self.upperLeftCorner = nil; + self.lowerLeftCorner = nil; + self.upperRightCorner = nil; + self.lowerRightCorner = nil; + [super dealloc]; +} + +#pragma mark Sanity-Checking Tools +-(BOOL)checkSizeSanityAgainstOriginalImage:(UIImage *)originalImage { + CGSize os = [originalImage size]; + CGFloat ow = os.width; + CGFloat oh = os.height; + + CGFloat tr = ([[self upperEdge] size].width + [[self upperLeftCorner] size].width + [[self upperRightCorner] size].width); + CGFloat mr = ([[self center] size].width + [[self leftEdge] size].width + [[self rightEdge] size].width); + CGFloat lr = ([[self lowerEdge] size].width + [[self lowerLeftCorner] size].width + [[self lowerRightCorner] size].width); + + + BOOL topRow = TUWithinEpsilon(1.0f,ow,tr); + BOOL midRow = TUWithinEpsilon(1.0f,ow,mr); + BOOL lowRow = TUWithinEpsilon(1.0f,ow,lr); + + CGFloat lc = ([[self upperLeftCorner] size].height + [[self lowerLeftCorner] size].height + [[self leftEdge] size].height); + CGFloat mc = ([[self center] size].height + [[self upperEdge] size].height + [[self lowerEdge] size].height); + CGFloat rc = ([[self upperRightCorner] size].height + [[self lowerRightCorner] size].height + [[self rightEdge] size].height); + + BOOL lCol = TUWithinEpsilon(1.0f,oh,lc); + BOOL mCol = TUWithinEpsilon(1.0f,oh,mc); + BOOL rCol = TUWithinEpsilon(1.0f,oh,rc); + + BOOL sizesMatch = TUForceYesOrNo(midRow && topRow && lowRow && mCol && lCol && rCol); + DLog(@"SANITY sizesMatch: '%@.'",TUYesOrNoString(sizesMatch)); + DLog(@"SANITY topRow: '%@', midRow:'%@, lowRow:'%@'.", TUYesOrNoString(topRow),TUYesOrNoString(midRow),TUYesOrNoString(lowRow)); + DLog(@"SANITY lCol: '%@', mCol:'%@, rCol:'%@'.", TUYesOrNoString(lCol),TUYesOrNoString(mCol),TUYesOrNoString(rCol)); + DLog(@"SANITY ",ow,tr,mr,lr); + DLog(@"SANITY ",oh,lc,mc,rc); + return sizesMatch; +} + +#pragma mark TUNinePatch Overrides +-(void)drawInRect:(CGRect)rect { + NPSelfProperty(center); + NPSelfProperty(leftEdge); + NPSelfProperty(rightEdge); + NPSelfProperty(lowerEdge); + NPSelfProperty(upperEdge); + NPSelfProperty(upperLeftCorner); + NPSelfProperty(upperRightCorner); + NPSelfProperty(lowerLeftCorner); + NPSelfProperty(lowerRightCorner); + + CGFloat leftEdgeWidth = [self leftEdgeWidth]; + CGFloat rightEdgeWidth = [self rightEdgeWidth]; + BOOL hasLeftEdge = (leftEdgeWidth > 0.0f)?(YES):(NO); + BOOL hasRightEdge = (rightEdgeWidth > 0.0f)?(YES):(NO); + + CGFloat upperEdgeHeight = [self upperEdgeHeight]; + CGFloat lowerEdgeHeight = [self lowerEdgeHeight]; + BOOL hasUpperEdge = (upperEdgeHeight > 0.0f)?(YES):(NO); + BOOL hasLowerEdge = (lowerEdgeHeight > 0.0f)?(YES):(NO); + + BOOL hasUpperLeftCorner = (hasLeftEdge && hasUpperEdge)?(YES):(NO); + BOOL hasUpperRightCorner = (hasRightEdge && hasUpperEdge)?(YES):(NO); + BOOL hasLowerLeftCorner = (hasLeftEdge && hasLowerEdge)?(YES):(NO); + BOOL hasLowerRightCorner = (hasRightEdge && hasLowerEdge)?(YES):(NO); + + + + CGFloat contentWidth = TUTruncateAtZero(rect.size.width - (leftEdgeWidth + rightEdgeWidth)); + CGFloat contentHeight = TUTruncateAtZero(rect.size.height - (upperEdgeHeight + lowerEdgeHeight)); + BOOL hasContentWidth = (contentWidth > 0.0f)?(YES):(NO); + BOOL hasContentHeight = (contentWidth > 0.0f)?(YES):(NO); + if (hasContentWidth && hasContentHeight) { + [self.center drawInRect:CGRectMake(CGRectGetMinX(rect) + leftEdgeWidth, CGRectGetMinY(rect) + upperEdgeHeight, contentWidth, contentHeight)]; + } + if (hasContentWidth) { + if (hasUpperEdge) { + [self.upperEdge drawInRect:CGRectMake( + CGRectGetMinX(rect) + leftEdgeWidth, + CGRectGetMinY(rect), + contentWidth, + upperEdgeHeight)]; + } + if (hasLowerEdge) { + [self.lowerEdge drawInRect:CGRectMake( + CGRectGetMinX(rect) + leftEdgeWidth, + CGRectGetMaxY(rect) - lowerEdgeHeight, + contentWidth, + lowerEdgeHeight)]; + } + } + if (hasContentHeight) { + if (hasLeftEdge) { + [self.leftEdge drawInRect:CGRectMake( + CGRectGetMinX(rect), + CGRectGetMinY(rect) + upperEdgeHeight, + leftEdgeWidth, + contentHeight)]; + } + if (hasRightEdge) { + [self.rightEdge drawInRect:CGRectMake( + CGRectGetMaxX(rect) - rightEdgeWidth, + CGRectGetMinY(rect) + upperEdgeHeight, + rightEdgeWidth, + contentHeight)]; + } + } + if (hasUpperLeftCorner && self.upperLeftCorner) { + [self.upperLeftCorner drawAtPoint:CGPointMake(CGRectGetMinX(rect), CGRectGetMinY(rect))]; + } + if (hasUpperRightCorner && self.upperRightCorner) { + [self.upperRightCorner drawAtPoint:CGPointMake(CGRectGetMaxX(rect) - rightEdgeWidth, CGRectGetMinY(rect))]; + } + if (hasLowerLeftCorner && self.lowerLeftCorner) { + [self.lowerLeftCorner drawAtPoint:CGPointMake(CGRectGetMinX(rect), CGRectGetMaxY(rect) - lowerEdgeHeight)]; + } + if (hasLowerRightCorner && self.lowerRightCorner) { + [self.lowerRightCorner drawAtPoint:CGPointMake(CGRectGetMaxX(rect) - rightEdgeWidth, CGRectGetMaxY(rect) - lowerEdgeHeight)]; + } +} + +#pragma mark - +-(CGFloat)leftEdgeWidth { + return ((self.upperLeftCorner)? + ([self.upperLeftCorner size].width): + (((self.lowerLeftCorner)? + ([self.lowerLeftCorner size].width):(0.0f)))); +} + +-(CGFloat)rightEdgeWidth { + return ((self.upperRightCorner)? + ([self.upperRightCorner size].width) + :(((self.lowerRightCorner)? + ([self.lowerRightCorner size].width):(0.0f)))); +} + +-(CGFloat)upperEdgeHeight { + return ((self.upperLeftCorner)? + ([self.upperLeftCorner size].height) + :(((self.upperRightCorner)? + ([self.upperRightCorner size].height):(0.0f)))); +} + +-(CGFloat)lowerEdgeHeight { + return ((self.lowerLeftCorner)? + ([self.lowerLeftCorner size].height) + :(((self.lowerRightCorner)? + ([self.lowerRightCorner size].height):(0.0f)))); +} + +#pragma mark Customized Description Overrides +-(NSString *)descriptionPostfix { + return [NSString stringWithFormat:@"%@, self.upperEdge:<'%@'>, self.lowerEdge:<'%@'>, self.leftEdge:<'%@'>, self.rightEdge:<'%@'>, self.upperLeftCorner:<'%@'>, self.lowerLeftCorner:<'%@'>, self.upperRightCorner:<'%@'>, self.lowerRightCorner:<'%@'>", + [super descriptionPostfix], + self.upperEdge, + self.lowerEdge, + self.leftEdge, + self.rightEdge, + self.upperLeftCorner, + self.lowerLeftCorner, + self.upperRightCorner, + self.lowerRightCorner]; +} + +#pragma mark Image Logging +-(void)logExplodedImage { + CGFloat centerWidth = ((self.center)?(self.center.size.width):(0.0f)); + CGFloat centerHeight = ((self.center)?(self.center.size.height):(0.0f)); + CGSize mySize = CGSizeMake( + 4.0f + (centerWidth + ([self leftEdgeWidth]) + ([self rightEdgeWidth])), + 4.0f + (centerHeight + ([self upperEdgeHeight]) + ([self lowerEdgeHeight])) + ); + UIGraphicsBeginImageContext(mySize); + [self.center drawAtPoint:CGPointMake(2.0f + [self leftEdgeWidth], 2.0f + [self upperEdgeHeight])]; + [self.upperLeftCorner drawAtPoint:CGPointMake(0.0f, 0.0f)]; + [self.leftEdge drawAtPoint:CGPointMake(0.0f, [self upperEdgeHeight] + 2.0f)]; + [self.lowerLeftCorner drawAtPoint:CGPointMake(0.0f, [self upperEdgeHeight] + 4.0f + centerHeight)]; + [self.upperEdge drawAtPoint:CGPointMake(2.0f + [self leftEdgeWidth], 0.0f)]; + [self.upperRightCorner drawAtPoint:CGPointMake(4.0f + [self leftEdgeWidth] + centerWidth, 0.0f)]; + [self.rightEdge drawAtPoint:CGPointMake(4.0f + [self leftEdgeWidth] + centerWidth, 2.0f + [self upperEdgeHeight])]; + [self.lowerRightCorner drawAtPoint:CGPointMake(4.0f + [self leftEdgeWidth] + centerWidth, 4.0f + [self upperEdgeHeight] + centerHeight)]; + [self.lowerEdge drawAtPoint:CGPointMake(2.0f + [self leftEdgeWidth], 4.0f + [self upperEdgeHeight] + centerHeight)]; + IMLog(UIGraphicsGetImageFromCurrentImageContext(), @"explodedNinePatchImage"); + UIGraphicsEndImageContext(); +} + +@end \ No newline at end of file diff --git a/NinePatch/TUHorizontalNinePatch.h b/NinePatch/TUHorizontalNinePatch.h new file mode 100755 index 000000000..10ce83479 --- /dev/null +++ b/NinePatch/TUHorizontalNinePatch.h @@ -0,0 +1,37 @@ +// +// TUHorizontalNinePatch.h +// NinePatch +// +// Copyright 2009 Tortuga 22, Inc. All rights reserved. +// + +#import +#import + +#import "TUNinePatch.h" +#import "TUNinePatchProtocols.h" + +/** + Concrete TUNinePatch instance. Handles NinePatches that stretch horizontally but not vertically. Only instantiate directly if you know what you're doing. + */ +@interface TUHorizontalNinePatch : TUNinePatch < TUNinePatch > { + UIImage *_leftEdge; + UIImage *_rightEdge; +} + +// Synthesized Properties +@property(nonatomic, retain, readonly) UIImage *leftEdge; +@property(nonatomic, retain, readonly) UIImage *rightEdge; + +// Init + Dealloc +-(id)initWithCenter:(UIImage *)center contentRegion:(CGRect)contentRegion tileCenterVertically:(BOOL)tileCenterVertically tileCenterHorizontally:(BOOL)tileCenterHorizontally leftEdge:(UIImage *)leftEdge rightEdge:(UIImage *)rightEdge; +-(void)dealloc; + +// TUNinePatch Overrides +-(void)drawInRect:(CGRect)rect; +-(BOOL)stretchesVertically; +-(CGSize)sizeForContentOfSize:(CGSize)contentSize; +-(CGFloat)leftEdgeWidth; +-(CGFloat)rightEdgeWidth; + +@end diff --git a/NinePatch/TUHorizontalNinePatch.m b/NinePatch/TUHorizontalNinePatch.m new file mode 100755 index 000000000..b570cb2dc --- /dev/null +++ b/NinePatch/TUHorizontalNinePatch.m @@ -0,0 +1,124 @@ +// +// TUHorizontalNinePatch.m +// NinePatch +// +// Copyright 2009 Tortuga 22, Inc. All rights reserved. +// + +#import "TUHorizontalNinePatch.h" + +@interface TUHorizontalNinePatch () + +// Synthesized Properties +@property(nonatomic, retain, readwrite) UIImage *leftEdge; +@property(nonatomic, retain, readwrite) UIImage *rightEdge; + +@end + + +@implementation TUHorizontalNinePatch + +#pragma mark Synthesized Properties +@synthesize leftEdge = _leftEdge; +@synthesize rightEdge = _rightEdge; + +#pragma mark NSCoding +-(id)initWithCoder:(NSCoder *)coder { + if (self = [super initWithCoder:coder]) { + self.leftEdge = (UIImage *)[coder decodeObjectForKey:@"leftEdge"]; + self.rightEdge = (UIImage *)[coder decodeObjectForKey:@"rightEdge"]; + } + return self; +} + +-(void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:self.leftEdge + forKey:@"leftEdge"]; + + [coder encodeObject:self.rightEdge + forKey:@"rightEdge"]; +} + +#pragma mark NSCopying +-(id)copyWithZone:(NSZone *)zone { + return [[[self class] allocWithZone:zone] initWithCenter:self.center + contentRegion:self.contentRegion + tileCenterVertically:self.tileCenterVertically + tileCenterHorizontally:self.tileCenterHorizontally + leftEdge:self.leftEdge + rightEdge:self.rightEdge]; +} + +#pragma mark Init + Dealloc +-(id)initWithCenter:(UIImage *)center contentRegion:(CGRect)contentRegion tileCenterVertically:(BOOL)tileCenterVertically tileCenterHorizontally:(BOOL)tileCenterHorizontally leftEdge:(UIImage *)leftEdge rightEdge:(UIImage *)rightEdge { + NPParameterAssertNotNilIsKindOfClass(leftEdge,UIImage); + NPParameterAssertNotNilIsKindOfClass(rightEdge,UIImage); + if (self = [super initWithCenter:center + contentRegion:contentRegion + tileCenterVertically:tileCenterVertically + tileCenterHorizontally:tileCenterHorizontally]) { + self.leftEdge = leftEdge; + self.rightEdge = rightEdge; + } + return self; +} + +#pragma mark - +-(void)dealloc { + self.leftEdge = nil; + self.rightEdge = nil; + [super dealloc]; +} + +#pragma mark TUNinePatch Overrides +-(void)drawInRect:(CGRect)rect { + CGFloat height = [self minimumHeight]; + [self.center drawInRect:CGRectMake(CGRectGetMinX(rect) + [self leftEdgeWidth], CGRectGetMinY(rect), CGRectGetWidth(rect) - ([self leftEdgeWidth] + [self rightEdgeWidth]), height)]; + if (self.leftEdge) { + [self.leftEdge drawAtPoint:CGPointMake(CGRectGetMinX(rect),CGRectGetMinY(rect))]; + } + if (self.rightEdge) { + [self.rightEdge drawAtPoint:CGPointMake(CGRectGetMaxX(rect) - [self rightEdgeWidth], CGRectGetMinY(rect))]; + } +} + +#pragma mark - +-(BOOL)stretchesVertically { + return NO; +} + +#pragma mark - +-(CGSize)sizeForContentOfSize:(CGSize)contentSize { + CGSize outSize = [super sizeForContentOfSize:contentSize]; + outSize.height = [self minimumHeight]; + return outSize; +} + +#pragma mark - +-(CGFloat)leftEdgeWidth { + CGFloat leftEdgeWidth = 0.0f; + if (self.leftEdge) { + leftEdgeWidth = [self.leftEdge size].width; + } + return leftEdgeWidth; +} + +-(CGFloat)rightEdgeWidth { + CGFloat rightEdgeWidth = 0.0f; + if (self.leftEdge) { + rightEdgeWidth = [self.rightEdge size].width; + } + return rightEdgeWidth; +} + +#pragma mark Customized Description Overrides +-(NSString *)descriptionPostfix { + return [NSString stringWithFormat:@"%@, self.leftEdge:<'%@'>, self.rightEdge:<'%@'>", + [super descriptionPostfix], + self.leftEdge, + self.rightEdge]; +} + +@end \ No newline at end of file diff --git a/NinePatch/TUNinePatch.h b/NinePatch/TUNinePatch.h new file mode 100755 index 000000000..175854c37 --- /dev/null +++ b/NinePatch/TUNinePatch.h @@ -0,0 +1,125 @@ +// +// TUNinePatch.h +// NinePatch +// +// Copyright 2009 Tortuga 22, Inc. All rights reserved. +// + +#import +#import +#import +#import "TUNinePatchProtocols.h" + +/** + Abstract base class for concrete NinePatches; this is the public interface into the TUNinePatch class cluster. Note particularly that TUNinePatch itself doesn't actually implement the TUNinePatch protocol, but its convenience methods promise to supply objects that do implement TUNinePatch. You should really only be using the classlevel convenience methods on this class unless you know what you're doing. If a method isn't documented it's probably not really for public use yet. + */ +@interface TUNinePatch : NSObject < NSCoding, NSCopying > { + UIImage *_center; + CGRect _contentRegion; + BOOL _tileCenterVertically; + BOOL _tileCenterHorizontally; +} + +// Synthesized Properties +@property(nonatomic, retain, readonly) UIImage *center; +@property(nonatomic, assign, readonly) CGRect contentRegion; +@property(nonatomic, assign, readonly) BOOL tileCenterVertically; +@property(nonatomic, assign, readonly) BOOL tileCenterHorizontally; + +// NSCoding +-(id)initWithCoder:(NSCoder *)coder; +-(void)encodeWithCoder:(NSCoder *)coder; + +// NSCopying +-(id)copyWithZone:(NSZone *)zone; + +// Init + Dealloc +-(id)initWithCenter:(UIImage *)center contentRegion:(CGRect)contentRegion; +-(id)initWithCenter:(UIImage *)center contentRegion:(CGRect)contentRegion tileCenterVertically:(BOOL)tileCenterVertically tileCenterHorizontally:(BOOL)tileCenterHorizontally; +-(void)dealloc; + +// Convenience Constructors +/** + This parses ninePatchImage and instantiates an instance of the appropriate TUNinePatch subclass. + + @param ninePatchImage A non-nil UIImage object containing the contents of a .9.png file (eg: it still contains the 1px border containing the scaling information). + @returns An autoreleased object implementing the TUNinePatch protocol, loaded with the contents of ninePatchImage. Can be nil if errors encountered. + */ ++(id < TUNinePatch >)ninePatchWithNinePatchImage:(UIImage *)ninePatchImage; + +/** + Calls through to ninePatchWithImage:stretchableRegion:contentRegion:tileCenterVertically:tileCenterHorizontally with contentRegion=CGRectZero and NO on the tiling params. Will probably get made private or protected soon. + */ ++(id < TUNinePatch >)ninePatchWithImage:(UIImage *)image stretchableRegion:(CGRect)stretchableRegion; + +/** + Creates a NinePatch using the passed-in image and the passed-in scaling information. This method may go protected soon, leaving only the ninePatchWithNinePatchImage: as a public convenience (possibly with the addition of ninePatchNamed: method as well). The argument for goign protected or private is that if this library winds up expanding discontinuous stretchable regions (as is done on Android) then there would be a separate interface for passing in 4 stretchable regions, making the public interface cmoplicated and "multiple ways in". + + @param image A non-nil UIImage object that contains the displayable content. This is contents of .9.png file AFTER removing the 1px border. + @param stretchableRegion Rect specifying the bounds of the central stretchable region. In the .9.png this is specified on the left and top margins. + @param contentRegion Rect specifying the bounds of the content region, EG the box into which associated content might fit. In the .9.png this is specified on the bottom and right margins. + @param tileCenterVertically (Currently unsupported) is intended to specify whether or not the center scales by resizing or scales by tiling. Not fully supported at this time, only use if you know what you're doing. + @param tileCenterHorizontally (Currently unsupported) is intended to specify whether or not the center scales by resizing or scales by tiling. Not fully supported at this time, only use if you know what you're doing. + + @returns An object implementing the TUNinePatch protocol. Can be nil if problems were encountered. + */ ++(id < TUNinePatch >)ninePatchWithImage:(UIImage *)image stretchableRegion:(CGRect)stretchableRegion contentRegion:(CGRect)contentRegion tileCenterVertically:(BOOL)tileCenterVertically tileCenterHorizontally:(BOOL)tileCenterHorizontally; + +// Bundle Loading +/** + Creates a ninepatch in two steps: it takes filename, and tries to load @"filename.9.png" from the main bundle. If that loads it then attempts to construct a NinePatch from that image file's contents. Differs from UIImage's analogous method in that no caching is done. + + @param filename A non-nil NSString containing the filename of the source image but NOT including ".9.png". + @returns An object implementing the TUNinePatch protocol. Can be nil if problems encountered. + */ ++(id < TUNinePatch >)ninePatchNamed:(NSString *)filename; + +// Nine Patch Image Manipulation - High Level ++(CGRect)rectFromHorizontalRange:(NSRange)horizontalRange verticalRange:(NSRange)verticalRange; ++(CGRect)stretchableRegionOfNinePatchImage:(UIImage *)ninePatchImage; ++(CGRect)contentRegionOfNinePatchImage:(UIImage *)ninePatchImage; ++(BOOL)shouldTileCenterHorizontallyForNinePatchImage:(UIImage *)ninePatchImage; ++(BOOL)shouldTileCenterVerticallyForNinePatchImage:(UIImage *)ninePatchImage; + +// Drawing Utility +-(void)drawInRect:(CGRect)rect; + +// Diagnostic Utilities +-(UIImage *)upperEdge; +-(UIImage *)lowerEdge; +-(UIImage *)leftEdge; +-(UIImage *)rightEdge; + +-(UIImage *)upperLeftCorner; +-(UIImage *)lowerLeftCorner; +-(UIImage *)upperRightCorner; +-(UIImage *)lowerRightCorner; + +// TUNinePatch Protocol Methods - Drawing +-(void)inContext:(CGContextRef)context drawAtPoint:(CGPoint)point forContentOfSize:(CGSize)contentSize; +-(void)inContext:(CGContextRef)context drawCenteredInRect:(CGRect)rect forContentOfSize:(CGSize)contentSize; +-(void)inContext:(CGContextRef)context drawInRect:(CGRect)rect; + +// TUNinePatch Protocol Methods - Image Construction +-(UIImage *)imageOfSize:(CGSize)size; + +// TUNinePatch Protocol Methods - Sizing +-(BOOL)stretchesHorizontally; +-(BOOL)stretchesVertically; +-(CGFloat)minimumWidth; +-(CGFloat)minimumHeight; +-(CGSize)minimumSize; +-(CGSize)sizeForContentOfSize:(CGSize)contentSize; +-(CGPoint)upperLeftCornerForContentWhenDrawnAtPoint:(CGPoint)point; + +// TUNinePatch Protocol Methods - Geometry +-(CGFloat)leftEdgeWidth; +-(CGFloat)rightEdgeWidth; +-(CGFloat)upperEdgeHeight; +-(CGFloat)lowerEdgeHeight; + +// Customized Description +-(NSString *)description; +-(NSString *)descriptionPostfix; + +@end \ No newline at end of file diff --git a/NinePatch/TUNinePatch.m b/NinePatch/TUNinePatch.m new file mode 100755 index 000000000..8c3303fb0 --- /dev/null +++ b/NinePatch/TUNinePatch.m @@ -0,0 +1,514 @@ +// +// TUNinePatch.m +// NinePatch +// +// Copyright 2009 Tortuga 22, Inc. All rights reserved. +// + +#import "TUNinePatch.h" +#import "TUVerticalNinePatch.h" +#import "TUHorizontalNinePatch.h" +#import "TUFullNinePatch.h" +#import "UIImage-TUNinePatch.h" + +@interface TUNinePatch () + +@property(nonatomic, retain, readwrite) UIImage *center; +@property(nonatomic, assign, readwrite) CGRect contentRegion; +@property(nonatomic, assign, readwrite) BOOL tileCenterVertically; +@property(nonatomic, assign, readwrite) BOOL tileCenterHorizontally; + +@end + + +@implementation TUNinePatch + +#pragma mark Synthesized Properties +@synthesize center = _center; +@synthesize contentRegion = _contentRegion; +@synthesize tileCenterVertically = _tileCenterVertically; +@synthesize tileCenterHorizontally = _tileCenterHorizontally; + +#pragma mark NSCoding +-(id)initWithCoder:(NSCoder *)coder { + NPAOInputLog(coder); + if (self = [super init]) { + self.center = (UIImage *)[coder decodeObjectForKey:@"center"]; + self.contentRegion = [coder decodeCGRectForKey:@"contentRegion"]; + self.tileCenterVertically = [coder decodeBoolForKey:@"tileCenterVertically"]; + self.tileCenterHorizontally = [coder decodeBoolForKey:@"tileCenterHorizontally"]; + } + return self; +} + +-(void)encodeWithCoder:(NSCoder *)coder { + NPAOInputLog(coder); + [coder encodeObject:self.center + forKey:@"center"]; + + [coder encodeCGRect:self.contentRegion + forKey:@"contentRegion"]; + + [coder encodeBool:self.tileCenterVertically + forKey:@"tileCenterVertically"]; + + [coder encodeBool:self.tileCenterHorizontally + forKey:@"tileCenterHorizontally"]; +} + +#pragma mark NSCopying +-(id)copyWithZone:(NSZone *)zone { + return [[[self class] allocWithZone:zone] initWithCenter:self.center + contentRegion:self.contentRegion + tileCenterVertically:self.tileCenterVertically + tileCenterHorizontally:self.tileCenterHorizontally]; +} + +#pragma mark Init + Dealloc +-(id)initWithCenter:(UIImage *)center contentRegion:(CGRect)contentRegion { + return [self initWithCenter:center + contentRegion:contentRegion + tileCenterVertically:NO + tileCenterHorizontally:NO]; +} + +-(id)initWithCenter:(UIImage *)center contentRegion:(CGRect)contentRegion tileCenterVertically:(BOOL)tileCenterVertically tileCenterHorizontally:(BOOL)tileCenterHorizontally { + NPAInputLog(@"[%@:<0x%x> initWithCenter:%@ contentRegion:%@ tileCenterVertically:%d tileCenterHorizontally:%d]", [self class], ((NSUInteger) self), center, NSStringFromCGRect(contentRegion), tileCenterVertically, tileCenterHorizontally); + NPParameterAssertNotNilIsKindOfClass(center, UIImage); + if (self = [super init]) { + self.center = center; + self.contentRegion = contentRegion; + self.tileCenterVertically = tileCenterVertically; + self.tileCenterHorizontally = tileCenterHorizontally; + } + return self; +} + +#pragma mark - +-(void)dealloc { + self.center = nil; + [super dealloc]; +} + +#pragma mark Convenience Constructors ++(id < TUNinePatch >)ninePatchWithNinePatchImage:(UIImage *)ninePatchImage { + NPAInputLog(@"ninePatchWithNinePatchImage:'%@'",ninePatchImage); + id < TUNinePatch > outPatch = nil; + if (ninePatchImage) { + @try { + outPatch = [self ninePatchWithImage:[ninePatchImage imageAsNinePatchImage] + stretchableRegion:[self stretchableRegionOfNinePatchImage:ninePatchImage] + contentRegion:[self contentRegionOfNinePatchImage:ninePatchImage] + tileCenterVertically:[self shouldTileCenterVerticallyForNinePatchImage:ninePatchImage] + tileCenterHorizontally:[self shouldTileCenterHorizontallyForNinePatchImage:ninePatchImage]]; + } + @catch (NSException * e) { + NPLogException(e); + outPatch = nil; + } + } + NPAssertNilOrConformsToProtocol(outPatch,TUNinePatch); + NPOOutputLog(outPatch); + return outPatch; +} + ++(id < TUNinePatch >)ninePatchWithImage:(UIImage *)image stretchableRegion:(CGRect)stretchableRegion { + NPAInputLog(@"ninePatchWithImage:'%@' stretchableRegion:'%@'",image,NSStringFromCGRect(stretchableRegion)); + NPParameterAssertNotNilIsKindOfClass(image,UIImage); + return [self ninePatchWithImage:image + stretchableRegion:stretchableRegion + contentRegion:CGRectZero + tileCenterVertically:NO + tileCenterHorizontally:NO]; +} + ++(id < TUNinePatch >)ninePatchWithImage:(UIImage *)image stretchableRegion:(CGRect)stretchableRegion contentRegion:(CGRect)contentRegion tileCenterVertically:(BOOL)tileCenterVertically tileCenterHorizontally:(BOOL)tileCenterHorizontally { + NPAInputLog(@"ninePatchWithImage:'%@' stretchableRegion:'%@' contentRegion:'%@' tileCenterVertically:'%@' tileCenterHorizontally:'%@'",image,NSStringFromCGRect(stretchableRegion),NSStringFromCGRect(contentRegion),TUYesOrNoString(tileCenterVertically),TUYesOrNoString(tileCenterHorizontally)); + NPParameterAssertNotNilIsKindOfClass(image,UIImage); + NPParameterAssert(stretchableRegion.origin.x >= 0.0f); + NPParameterAssert(stretchableRegion.origin.y >= 0.0f); + NPParameterAssert([image size].width >= stretchableRegion.origin.x + stretchableRegion.size.width); + NPParameterAssert([image size].height >= stretchableRegion.origin.y + stretchableRegion.size.height); + id < TUNinePatch > ninePatch = nil; + if (image) { + CGFloat imageWidth = [image size].width; + CGFloat imageHeight = [image size].height; + CGRect fixedStretchableRegion = stretchableRegion; + CGFloat stretchableRegionMinX = CGRectGetMinX(fixedStretchableRegion); + CGFloat stretchableRegionMinY = CGRectGetMinY(fixedStretchableRegion); + CGFloat stretchableRegionMaxX = CGRectGetMaxX(fixedStretchableRegion); + CGFloat stretchableRegionMaxY = CGRectGetMaxY(fixedStretchableRegion); + BOOL stretchesOnLeft = (stretchableRegionMinX > 0.0f)?(YES):(NO); + BOOL stretchesOnRight = (stretchableRegionMaxX < imageWidth)?(YES):(NO); + BOOL stretchesOnTop = (stretchableRegionMinY > 0.0f)?(YES):(NO); + BOOL stretchesOnBottom = (stretchableRegionMaxY < imageHeight)?(YES):(NO); + BOOL stretchesHorizontally = (stretchesOnLeft || stretchesOnRight)?(YES):(NO); + BOOL stretchesVertically = (stretchesOnTop || stretchesOnBottom)?(YES):(NO); + if (stretchesVertically && stretchesHorizontally) { + LLog(@"...the specified stretchable region stretches horizontally and vertically."); + UIImage *center = [image extractCenterForStretchableRegion:fixedStretchableRegion]; + UIImage *upperLeftCorner = [image extractUpperLeftCornerForStretchableRegion:fixedStretchableRegion]; + UIImage *upperRightCorner = [image extractUpperRightCornerForStretchableRegion:fixedStretchableRegion]; + UIImage *lowerLeftCorner = [image extractLowerLeftCornerForStretchableRegion:fixedStretchableRegion]; + UIImage *lowerRightCorner = [image extractLowerRightCornerForStretchableRegion:fixedStretchableRegion]; + UIImage *leftEdge = [image extractLeftEdgeForStretchableRegion:fixedStretchableRegion]; + UIImage *rightEdge = [image extractRightEdgeForStretchableRegion:fixedStretchableRegion]; + UIImage *lowerEdge = [image extractLowerEdgeForStretchableRegion:fixedStretchableRegion]; + UIImage *upperEdge = [image extractUpperEdgeForStretchableRegion:fixedStretchableRegion]; + + // Mega-Block of size sanity checking + + // Given that the only major bug encountered while developing this library + // proved to be a difficult-to-track-down source of off-by-one errors in + // the sizes of the slices, you can understand the paranoia here. + // + // Just remember to build with the assertion-checking off. + + NPAssertCorrectSubimageWidthDecomposition(image, upperLeftCorner, upperEdge, upperRightCorner); + NPAssertCorrectSubimageWidthDecomposition(image, leftEdge, upperEdge, rightEdge); + NPAssertCorrectSubimageWidthDecomposition(image, lowerLeftCorner, lowerEdge, lowerRightCorner); + + NPAssertCorrectSubimageHeightDecomposition(image, upperLeftCorner, leftEdge, lowerLeftCorner); + NPAssertCorrectSubimageHeightDecomposition(image, upperEdge, center, lowerEdge); + NPAssertCorrectSubimageHeightDecomposition(image, upperRightCorner, rightEdge, lowerRightCorner); + + NPAssertWithinOne(([upperLeftCorner size].height), ([upperRightCorner size].height)); + NPAssertWithinOne(([upperLeftCorner size].height), ([upperEdge size].height)); + NPAssertWithinOne(([upperEdge size].height), ([upperRightCorner size].height)); + + NPAssertWithinOne(([leftEdge size].height), ([center size].height)); + NPAssertWithinOne(([center size].height), ([rightEdge size].height)); + NPAssertWithinOne(([rightEdge size].height), ([leftEdge size].height)); + + NPAssertWithinOne(([lowerLeftCorner size].height), ([lowerRightCorner size].height)); + NPAssertWithinOne(([lowerRightCorner size].height), ([lowerEdge size].height)); + NPAssertWithinOne(([lowerEdge size].height), ([lowerLeftCorner size].height)); + + NPAssertWithinOne(([upperLeftCorner size].width), ([leftEdge size].width)); + NPAssertWithinOne(([leftEdge size].width), ([lowerLeftCorner size].width)); + NPAssertWithinOne(([upperLeftCorner size].width), ([lowerLeftCorner size].width)); + + NPAssertWithinOne(([upperEdge size].width), ([center size].width)); + NPAssertWithinOne(([center size].width), ([lowerEdge size].width)); + NPAssertWithinOne(([upperEdge size].width), ([lowerEdge size].width)); + + NPAssertWithinOne(([upperRightCorner size].width), ([rightEdge size].width)); + NPAssertWithinOne(([rightEdge size].width), ([lowerRightCorner size].width)); + NPAssertWithinOne(([lowerRightCorner size].width), ([upperRightCorner size].width)); + + ninePatch = [[[TUFullNinePatch alloc] initWithCenter:center + contentRegion:contentRegion + tileCenterVertically:tileCenterVertically + tileCenterHorizontally:tileCenterHorizontally + upperLeftCorner:upperLeftCorner + upperRightCorner:upperRightCorner + lowerLeftCorner:lowerLeftCorner + lowerRightCorner:lowerRightCorner + leftEdge:leftEdge + rightEdge:rightEdge + upperEdge:upperEdge + lowerEdge:lowerEdge] autorelease]; + } else if (stretchesVertically) { + UIImage *center = [image extractCenterForStretchableRegion:fixedStretchableRegion]; + UIImage *upperEdge = [image extractUpperEdgeForStretchableRegion:fixedStretchableRegion]; + UIImage *lowerEdge = [image extractLowerEdgeForStretchableRegion:fixedStretchableRegion]; + + NPAssertCorrectSubimageHeightDecomposition(image,center,upperEdge,lowerEdge); + NPAssertWithinOne(([center size].width),([upperEdge size].width)); + NPAssertWithinOne(([lowerEdge size].width),([upperEdge size].width)); + NPAssertWithinOne(([center size].width),([lowerEdge size].width)); + + ninePatch = [[[TUVerticalNinePatch alloc] initWithCenter:center + contentRegion:contentRegion + tileCenterVertically:tileCenterVertically + tileCenterHorizontally:tileCenterHorizontally + upperEdge:upperEdge + lowerEdge:lowerEdge] autorelease]; + } else if (stretchesHorizontally) { + UIImage *center = [image extractCenterForStretchableRegion:fixedStretchableRegion]; + UIImage *leftEdge = [image extractLeftEdgeForStretchableRegion:fixedStretchableRegion]; + UIImage *rightEdge = [image extractRightEdgeForStretchableRegion:fixedStretchableRegion]; + + NPAssertCorrectSubimageWidthDecomposition(image, leftEdge, center, rightEdge); + NPAssertWithinOne(([center size].height),([leftEdge size].height)); + NPAssertWithinOne(([center size].height),([rightEdge size].height)); + NPAssertWithinOne(([leftEdge size].height),([rightEdge size].height)); + + ninePatch = [[[TUHorizontalNinePatch alloc] initWithCenter:center + contentRegion:contentRegion + tileCenterVertically:tileCenterVertically + tileCenterHorizontally:tileCenterHorizontally + leftEdge:leftEdge + rightEdge:rightEdge] autorelease]; + } else { + ninePatch = [[[self alloc] initWithCenter:image + contentRegion:contentRegion + tileCenterVertically:tileCenterVertically + tileCenterHorizontally:tileCenterHorizontally] autorelease]; + } + } + NPAssertNilOrConformsToProtocol(ninePatch,TUNinePatch); + NPOOutputLog(ninePatch); + return ninePatch; +} + +#pragma mark Bundle Loading ++(id < TUNinePatch >)ninePatchNamed:(NSString *)filename { + NPParameterAssertNotNilIsKindOfClass(filename,NSString); + id < TUNinePatch > outPatch = nil; + if (filename) { + NSBundle *mainBundle = [NSBundle mainBundle]; + if (mainBundle) { + NSString *filePath = [mainBundle pathForResource:[NSString stringWithFormat:@"%@.9",filename] + ofType:@"png"]; + if (filePath) { + UIImage *ninepatch = [[UIImage alloc] initWithContentsOfFile:filePath]; + if (ninepatch) { + @try { + outPatch = [self ninePatchWithNinePatchImage:ninepatch]; + } + @catch (NSException * e) { + NPLogException(e); + outPatch = nil; + } + @finally { + [ninepatch release]; + } + } + } + } + } + NPAssertNilOrConformsToProtocol(outPatch,TUNinePatch); + NPOOutputLog(outPatch); + return outPatch; +} + +#pragma mark Nine Patch Image Manipulation - High Level ++(CGRect)rectFromHorizontalRange:(NSRange)horizontalRange verticalRange:(NSRange)verticalRange { + NPAInputLog(@"rectFromHorizontalRange:'%@' verticalRange:'%@'",NSStringFromRange(horizontalRange),NSStringFromRange(verticalRange)); + CGFloat minX = (TUIsNotFoundRange(horizontalRange))?(0.0f):((CGFloat) horizontalRange.location); + CGFloat width = (TUIsNotFoundRange(horizontalRange))?(0.0f):((CGFloat) horizontalRange.length); + CGFloat minY = (TUIsNotFoundRange(verticalRange)?(0.0f):((CGFloat) verticalRange.location)); + CGFloat height = (TUIsNotFoundRange(verticalRange)?(0.0f):((CGFloat) verticalRange.length)); + CGRect outRect = CGRectMake(minX,minY,width,height); + NPCGROutputLog(outRect); + return outRect; +} + ++(CGRect)stretchableRegionOfNinePatchImage:(UIImage *)ninePatchImage { + NPAInputLog(@"stretchableRegionOfNinePatchImage:'%@'",ninePatchImage); + NPParameterAssertNotNilIsKindOfClass(ninePatchImage,UIImage); + CGRect outRect = CGRectZero; + if (ninePatchImage) { + outRect = [self rectFromHorizontalRange:[ninePatchImage blackPixelRangeInUpperStrip] + verticalRange:[ninePatchImage blackPixelRangeInLeftStrip]]; + } + NPCGROutputLog(outRect); + return outRect; +} + ++(CGRect)contentRegionOfNinePatchImage:(UIImage *)ninePatchImage { + NPAInputLog(@"contentRegionOfNinePatchImage:'%@'",ninePatchImage); + NPParameterAssertNotNilIsKindOfClass(ninePatchImage,UIImage); + CGRect outRect = CGRectZero; + if (ninePatchImage) { + outRect = [self rectFromHorizontalRange:[ninePatchImage blackPixelRangeInLowerStrip] + verticalRange:[ninePatchImage blackPixelRangeInRightStrip]]; + } + NPCGROutputLog(outRect); + return outRect; +} + ++(BOOL)shouldTileCenterHorizontallyForNinePatchImage:(UIImage *)ninePatchImage { + NPAInputLog(@"shouldTileCenterHorizontallyForNinePatchImage:'%@'",ninePatchImage); + NPParameterAssertNotNilIsKindOfClass(ninePatchImage,UIImage); + BOOL shouldTileCenterHorizontallyForNinePatchImage = NO; + if (ninePatchImage) { + shouldTileCenterHorizontallyForNinePatchImage = [ninePatchImage upperLeftCornerIsBlackPixel]; + } + NPBOutputLog(shouldTileCenterHorizontallyForNinePatchImage); + return shouldTileCenterHorizontallyForNinePatchImage; +} + ++(BOOL)shouldTileCenterVerticallyForNinePatchImage:(UIImage *)ninePatchImage { + NPAInputLog(@"shouldTileCenterHorizontallyForNinePatchImage:'%@'",ninePatchImage); + NPParameterAssertNotNilIsKindOfClass(ninePatchImage,UIImage); + BOOL shouldTileCenterVerticallyForNinePatchImage = NO; + if (ninePatchImage) { + shouldTileCenterVerticallyForNinePatchImage = [ninePatchImage lowerLeftCornerIsBlackPixel]; + } + NPBOutputLog(shouldTileCenterVerticallyForNinePatchImage); + return shouldTileCenterVerticallyForNinePatchImage; +} + +#pragma mark Drawing Utility +-(void)drawInRect:(CGRect)rect { + if (self.center) { + if (self.tileCenterHorizontally && self.tileCenterVertically) { + [self.center drawAsPatternInRect:rect]; + } else { + // NB: this behavior is not 100% accurate + // in that it only works right for tiling on and off + // half-tiling has to wait + [self.center drawInRect:rect]; + } + } +} + +#pragma mark Diagnostic Utilities +-(UIImage *)upperEdge { + return nil; +} + +-(UIImage *)lowerEdge { + return nil; +} + +-(UIImage *)leftEdge { + return nil; +} + +-(UIImage *)rightEdge { + return nil; +} + +-(UIImage *)upperLeftCorner { + return nil; +} + +-(UIImage *)lowerLeftCorner { + return nil; +} + +-(UIImage *)upperRightCorner { + return nil; +} + +-(UIImage *)lowerRightCorner { + return nil; +} + +#pragma mark TUNinePatch Protocol Methods - Drawing +-(void)inContext:(CGContextRef)context drawAtPoint:(CGPoint)point forContentOfSize:(CGSize)contentSize { + NPParameterAssert(context != nil); + NPAInputLog(@"inContext:'%@' drawAtPoint:'%@' forContentOfSize:'%@'",context,NSStringFromCGPoint(point),NSStringFromCGSize(contentSize)); + CGSize size = [self sizeForContentOfSize:contentSize]; + [self inContext:context + drawInRect:CGRectMake(point.x, point.y, size.width, size.height)]; +} + +-(void)inContext:(CGContextRef)context drawCenteredInRect:(CGRect)rect forContentOfSize:(CGSize)contentSize { + NPParameterAssert(context != nil); + NPAInputLog(@"inContext:'%@' drawCenteredInRect:'%@' forContentOfSize:'%@'",context,NSStringFromCGRect(rect),NSStringFromCGSize(contentSize)); + CGSize size = [self sizeForContentOfSize:contentSize]; + CGFloat xStart = floorf((CGRectGetWidth(rect) - size.width) * 0.5f); + CGFloat yStart = floorf((CGRectGetHeight(rect) - size.height) * 0.5f); + [self inContext:context + drawInRect:CGRectMake(xStart, yStart, size.width, size.height)]; +} + +-(void)inContext:(CGContextRef)context drawInRect:(CGRect)rect { + if (context) { + CGContextSaveGState(context); + CGContextBeginTransparencyLayer(context, nil); + @try { + [self drawInRect:rect]; + } + @catch (NSException * e) { + NPLogException(e); + } + @finally { + CGContextEndTransparencyLayer(context); + CGContextRestoreGState(context); + } + } +} + +#pragma mark TUNinePatch Protocol Methods - Image Construction +-(UIImage *)imageOfSize:(CGSize)size { + UIImage *image = nil; + UIGraphicsBeginImageContext(size); + [self drawInRect:CGRectMake(0.0f,0.0f,size.width,size.height)]; + image = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return image; +} + +#pragma mark TUNinePatch Protocol Methods - Sizing +-(BOOL)stretchesHorizontally { + return YES; +} + +-(BOOL)stretchesVertically { + return YES; +} + +#pragma mark - +-(CGFloat)minimumWidth { + CGFloat minimumWidth = 0.0f; + if (self.center) { + minimumWidth = [self.center size].width + self.rightEdgeWidth + self.leftEdgeWidth; + } + return minimumWidth; +} + +-(CGFloat)minimumHeight { + CGFloat minimumHeight = 0.0f; + if (self.center) { + minimumHeight = [self.center size].height + self.upperEdgeHeight + self.lowerEdgeHeight; + } + return minimumHeight; +} + +-(CGSize)minimumSize { + return CGSizeMake([self minimumWidth], [self minimumHeight]); +} + +-(CGSize)sizeForContentOfSize:(CGSize)contentSize { + CGSize outSize = [self minimumSize]; + CGFloat contentRegionWidth = CGRectGetWidth(self.contentRegion); + CGFloat contentRegionHeight = CGRectGetHeight(self.contentRegion); + if ((contentRegionWidth > 0.0f) || (contentRegionHeight > 0.0f)) { + // WE HAVE CONTENT REGION + outSize.width += (contentSize.width > contentRegionWidth)?(contentSize.width - contentRegionWidth):(0.0f); + outSize.height += (contentSize.height > contentRegionHeight)?(contentSize.height - contentRegionHeight):(0.0f); + } else { + // WE ONLY NEED A SIMPLE "WHICH IS BIGGER?" CHECK + outSize.width = (contentSize.width > outSize.width)?(contentSize.width):(outSize.width); + outSize.height = (contentSize.height > outSize.height)?(contentSize.height):(outSize.height); + } + return outSize; +} + +-(CGPoint)upperLeftCornerForContentWhenDrawnAtPoint:(CGPoint)point { + return CGPointMake(point.x + CGRectGetMinX(self.contentRegion), point.y + CGRectGetMinY(self.contentRegion)); +} + +#pragma mark TUNinePatch Protocol Methods - Geometry +-(CGFloat)leftEdgeWidth { + return 0.0f; +} + +-(CGFloat)rightEdgeWidth { + return 0.0f; +} + +-(CGFloat)upperEdgeHeight { + return 0.0f; +} + +-(CGFloat)lowerEdgeHeight { + return 0.0f; +} + +#pragma mark Customized Description +-(NSString *)description { + return [NSString stringWithFormat:@"<%@>:( %@ )",[super description],[self descriptionPostfix]]; +} + +-(NSString *)descriptionPostfix { + return [NSString stringWithFormat:@"center:<'%@'>, contentRegion:<'%@'>", self.center, NSStringFromCGRect(self.contentRegion)]; +} + + +@end \ No newline at end of file diff --git a/NinePatch/TUNinePatchCache.h b/NinePatch/TUNinePatchCache.h new file mode 100755 index 000000000..e42d519d3 --- /dev/null +++ b/NinePatch/TUNinePatchCache.h @@ -0,0 +1,99 @@ +// +// TUNinePatchCache.h +// NinePatch +// +// Copyright 2010 Tortuga 22, Inc. All rights reserved. +// + +#import +#import +#import "TUNinePatchProtocols.h" + +@class TUCachingNinePatch; +/** + + This class is included to make it easy to work with NinePatches if (1) all you want are static images (you don't care much about drawing into CGContextRefs) and (2) . Its semantics are probably non-optimal but are very straightforward: it caches every single request you make to it (both NinePatches and the rendered images). If you're only generating a handful of images and/or you're not super memory-constrained you should probably use this class. It has functionality for flushing the cache with various levels of granularity if you need such functionality. + + One thing that's maybe not so obvious is that the methods on this class span two levels of abstraction and caching. Briefly: + - an instance of TUCachingNinePatch has a ninePatch property (that is a TUNinePatch-implementing object) + - TUCachingNinePatch caches all images it generates + - TUNinePatchCache generates and caches instance of TUCachingNinePatch (which in turn cache images) + + Where the danger zone emerges is ninePatchNamed: this constructs a TUCachingNinePatch (which as part of its construction constructs an object implementing TUNinePatch), caches the TUCachingNinePatch instance, and returns that instance's ninePatch property (which is what actually implements the TUNinePatch protocol). This is in fact the behavior we wanted when we made this library, but it is a little subtle. + + */ +@interface TUNinePatchCache : NSObject { + NSMutableDictionary *_ninePatchCache; +} + +// Synthesized Properties +/** + This is where the NinePatches get cached. You should pretty much never look at or manipulate this directly. If I believed in private instance variables this's be private. Maybe I'll make it private soon. + */ +@property(nonatomic, retain, readonly) NSMutableDictionary *ninePatchCache; + +-(id)init; +/** + Gets at the application's shared instance, creating it if it doesn't exist. + */ ++(id)shared; + +// Getting Ninepatches Directly +/** + Use this method to get at the actual NinePatch you want to interact with (if eg you're using this cache but need finer-grained control than just generating images). Will load the NinePatch (from the app's main bundle) if it doesn't exist yet. + + @param ninePatchName The name of the NinePatch you're trying to get at. + @returns The NinePatch object you wanted. Can return nil if problems were encountered. + */ +-(id < TUNinePatch >)ninePatchNamed:(NSString *)ninePachName; + +// These methods should be private, if I believed in private methods +-(TUCachingNinePatch *)cachingNinePatchNamed:(NSString *)ninePatchName; +-(void)cacheCachingNinePatch:(TUCachingNinePatch *)cachingNinePatch named:(NSString *)ninePatchName; +-(TUCachingNinePatch *)cachedCachingNinePatchNamed:(NSString *)ninePatchName; +-(TUCachingNinePatch *)constructCachingNinePatchNamed:(NSString *)ninePatchName; + +// Getting Images Directly +/** + This method renders the image at the requested size using the NinePatch with the passed-in name. Tries to use a cached image and/or NinePatch as possible, otherwise loading from scratch. Any NinePatch or image it loads is subsequently cached. + + @param size The size the output image should be rendered at. + @param ninePatchName the name of the NinePatch you want to use to render the image. Don't include @".9.png" in the name. + @returns An image rendered from the specified ninePatchName at the requested size. Can return nil if difficulties were encountered. Image should be retained if it is important it be held onto by the recipient, but should not be released by the recipient. + */ +-(UIImage *)imageOfSize:(CGSize)size forNinePatchNamed:(NSString *)ninePatchName; + +// Getting Ninepatches - Convenience +/** + Semantics same as instance-level method of same name, but calls through to the singleton instance. + */ ++(id < TUNinePatch >)ninePatchNamed:(NSString *)ninePatchName; + +// Getting Images - Convenience +/** + This is a convenience method; calls instance method of the same name on the singleton. Easiest way to use this in your code. + */ ++(UIImage *)imageOfSize:(CGSize)size forNinePatchNamed:(NSString *)ninePatchName; + +// Cache Management - Direct +/** + Flushes all cached content (NinePatches AND their cached rendered images, if any). + */ +-(void)flushCache; +/** + Flushes only the content for the NinePatch with the passed-in name. Won't complain if there's no cached NinePatch with the passed-in name. + */ +-(void)flushCacheForNinePatchNamed:(NSString *)name; + +// Cache Management - Convenience +/** + Flushes all cached content from the singleton. + */ ++(void)flushCache; + +/** + Flushes the NinePatch with the passed-in name from the singleton (which also flushes any cached images). + */ ++(void)flushCacheForNinePatchNamed:(NSString *)name; + +@end diff --git a/NinePatch/TUNinePatchCache.m b/NinePatch/TUNinePatchCache.m new file mode 100755 index 000000000..bd6cb9c8b --- /dev/null +++ b/NinePatch/TUNinePatchCache.m @@ -0,0 +1,133 @@ +// +// TUNinePatchCache.m +// NinePatch +// +// Copyright 2010 Tortuga 22, Inc. All rights reserved. +// + +#import "TUNinePatchCache.h" +#import "TUCachingNinePatch.h" +#import "TUNinePatch.h" + +@interface TUNinePatchCache () + +@property(nonatomic, retain, readwrite) NSMutableDictionary *ninePatchCache; + +@end + + +@implementation TUNinePatchCache + +#pragma mark Synthesized Properties +@synthesize ninePatchCache = _ninePatchCache; + +#pragma mark Init + Dealloc +-(id)init { + if (self = [super init]) { + self.ninePatchCache = [NSMutableDictionary dictionary]; + } + return self; +} + +#pragma mark - ++(id)shared { + static TUNinePatchCache *shared; + if (!shared) { + shared = [[self alloc] init]; + } + return shared; +} + +#pragma mark - +-(void)dealloc { + self.ninePatchCache = nil; + [super dealloc]; +} + +#pragma mark Getting Ninepatches Directly +// Getting Ninepatches Directly +-(id < TUNinePatch >)ninePatchNamed:(NSString *)ninePatchName { + TUCachingNinePatch *cachingNinePatch = [self cachingNinePatchNamed:ninePatchName]; + NPAssertNilOrIsKindOfClass(cachingNinePatch,TUCachingNinePatch); + return (!cachingNinePatch)?(nil):([cachingNinePatch ninePatch]); +} + + +-(TUCachingNinePatch *)cachingNinePatchNamed:(NSString *)ninePatchName { + TUCachingNinePatch *cachingNinePatch = [self cachedCachingNinePatchNamed:ninePatchName]; + NPAssertNilOrIsKindOfClass(cachingNinePatch,TUCachingNinePatch); + if (!cachingNinePatch) { + cachingNinePatch = [self constructCachingNinePatchNamed:ninePatchName]; + NPAssertNilOrIsKindOfClass(cachingNinePatch,TUCachingNinePatch); + if (cachingNinePatch) { + [self cacheCachingNinePatch:cachingNinePatch + named:ninePatchName]; + } + } + return cachingNinePatch; +} + +-(void)cacheCachingNinePatch:(TUCachingNinePatch *)cachingNinePatch named:(NSString *)ninePatchName { + NPAssertPropertyNonNil(ninePatchCache); + if (cachingNinePatch && ninePatchName) { + [self.ninePatchCache setObject:cachingNinePatch + forKey:ninePatchName]; + } +} + +-(TUCachingNinePatch *)cachedCachingNinePatchNamed:(NSString *)ninePatchName { + return (!ninePatchName)?(nil):([self.ninePatchCache objectForKey:ninePatchName]); +} + +-(TUCachingNinePatch *)constructCachingNinePatchNamed:(NSString *)ninePatchName { + return (!ninePatchName)?(nil):([TUCachingNinePatch ninePatchCacheWithNinePatchNamed:ninePatchName]); +} + +#pragma mark Getting Images Directly +-(UIImage *)imageOfSize:(CGSize)size forNinePatchNamed:(NSString *)ninePatchName { + NPParameterAssertNotNilIsKindOfClass(ninePatchName,NSString); + UIImage *image = nil; + TUCachingNinePatch *cachingNinePatch = [self cachingNinePatchNamed:ninePatchName]; + if (cachingNinePatch) { + image = [cachingNinePatch imageOfSize:size]; + } + return image; +} + +#pragma mark Getting Ninepatches - Convenience ++(TUCachingNinePatch *)cachingNinePatchNamed:(NSString *)ninePatchName { + return [[self shared] ninePatchNamed:ninePatchName]; +} + ++(id < TUNinePatch >)ninePatchNamed:(NSString *)ninePatchName { + TUCachingNinePatch *cachingNinePatch = [[self shared] cachingNinePatchNamed:ninePatchName]; + NPAssertNilOrIsKindOfClass(cachingNinePatch,TUCachingNinePatch); + return (!cachingNinePatch)?(nil):([cachingNinePatch ninePatch]); +} + +#pragma mark Getting Images - Convenience ++(UIImage *)imageOfSize:(CGSize)size forNinePatchNamed:(NSString *)ninePatchName { + return [[self shared] imageOfSize:size + forNinePatchNamed:ninePatchName]; +} + +#pragma mark Cache Management - Direct +-(void)flushCache { + [self.ninePatchCache removeAllObjects]; +} +-(void)flushCacheForNinePatchNamed:(NSString *)name { + if (name) { + [self.ninePatchCache removeObjectForKey:name]; + } +} + +#pragma mark Cache Management - Convenience ++(void)flushCache { + [[self shared] flushCache]; +} + ++(void)flushCacheForNinePatchNamed:(NSString *)name { + [[self shared] flushCacheForNinePatchNamed:name]; +} + +@end \ No newline at end of file diff --git a/NinePatch/TUNinePatchCachingCategories.h b/NinePatch/TUNinePatchCachingCategories.h new file mode 100755 index 000000000..7f897495b --- /dev/null +++ b/NinePatch/TUNinePatchCachingCategories.h @@ -0,0 +1,28 @@ +// +// TUNinePatchCachingCategories.h +// NinePatch +// +// Copyright 2010 Tortuga 22, Inc. All rights reserved. +// + +#import +#import +#import + +@interface NSString (NinePatchCaching) + ++(NSString *)ninePatchKeyStringForSize:(CGSize)size; + +@end + +@interface NSDictionary (NinePatchCaching) + +-(id)objectForSize:(CGSize)size; + +@end + +@interface NSMutableDictionary (NinePatchCaching) + +-(void)setObject:(id)object forSize:(CGSize)size; + +@end diff --git a/NinePatch/TUNinePatchCachingCategories.m b/NinePatch/TUNinePatchCachingCategories.m new file mode 100755 index 000000000..7ec6d81af --- /dev/null +++ b/NinePatch/TUNinePatchCachingCategories.m @@ -0,0 +1,52 @@ +// +// TUNinePatchCachingCategories.m +// NinePatch +// +// Copyright 2010 Tortuga 22, Inc. All rights reserved. +// + +#import "TUNinePatchCachingCategories.h" + +@implementation NSString (NinePatchCaching) + +/** + It's not clear we can't just use NSStringFromCGSize. This might get cut in a future revision. + */ ++(NSString *)ninePatchKeyStringForSize:(CGSize)size { + return [NSString stringWithFormat:@"ninePatchKeyString.%#.0f.%#.0f",size.width,size.height]; +} + +@end + +@implementation NSDictionary (NinePatchCaching) + +/** + Convenience method to make it a little less annoying to pull objects out of the caches keyed by their size. + */ +-(id)objectForSize:(CGSize)size { + id object = nil; + NSString *key = [NSString ninePatchKeyStringForSize:size]; + if (key) { + object = [self objectForKey:key]; + } + return object; +} + +@end + +@implementation NSMutableDictionary (NinePatchCaching) + +/** + Convenience method to make it a little less annoying to put objects in the caches keyed by their size. + */ +-(void)setObject:(id)object forSize:(CGSize)size { + if (object) { + NSString *key = [NSString ninePatchKeyStringForSize:size]; + if (key) { + [self setObject:object + forKey:key]; + } + } +} + +@end diff --git a/NinePatch/TUNinePatchProtocols.h b/NinePatch/TUNinePatchProtocols.h new file mode 100755 index 000000000..f3889b1ad --- /dev/null +++ b/NinePatch/TUNinePatchProtocols.h @@ -0,0 +1,121 @@ +// +// TUNinePatch.h +// NinePatch +// +// Copyright 2009 Tortuga 22, Inc. All rights reserved. +// + +#import +#import + +/** + + Defines the methods shared by all concrete NinePatch classes. Expect many of these methods to be removed from the + protocol as the library is improved. + + */ +@protocol TUNinePatch < NSObject, NSCoding, NSCopying > + +// TUNinePatch Protocol Methods - Drawing +/** + This draws the NinePatch with its upper-left corner at a specified location in a specified context, scaled to fit content of the size. This is a good method to use when drawing NinePatches that use the content bounds. This method will probably be improved in the future to return the upper-left corner for the content to be drawn. + + @param context A non-nil CGContextRef into which NinePatch will be drawn. + @param point The upper left corner the NinePatch will be drawn at. + @param size The size of the content the NinePatch will be sized to contain. + */ +-(void)inContext:(CGContextRef)context drawAtPoint:(CGPoint)point forContentOfSize:(CGSize)size; + +/** + This draws the NinePatch centered (horizontally and vertically) inside the containmentRect in the specified context, sized to fit content of the passed-in size. This is essentially a convenience method wrapping inContext:drawAtPoint:forContentOfSize:. Like its cousin it'll probably be modified to return information about where the content should be drawn. Will let the NinePatch overflow the containmentRect if the necessary size is sufficiently large; it'll be centered, just too big. + + @param context A non-nil CGContextRef into which NinePatch will be drawn. + @param containmentRect the rect in which the NinePatch will be centered. + @param size The size of the content the NinePatch will be sized to contain. + */ +-(void)inContext:(CGContextRef)context drawCenteredInRect:(CGRect)containmentRect forContentOfSize:(CGSize)size; + +/** + This method draws the NinePatch into the passed-in context filling the passed-in rect. In all current implementations of TUNinePatch the other drawing utilities eventually call through this method to do their actual drawing. + + @param context A non-nil CGContextRef into which NinePatch will be drawn. + @param rect The rect into which the NinePatch will be drawn. NinePatch is scaled to fill the rect. + */ +-(void)inContext:(CGContextRef)context drawInRect:(CGRect)rect; + +// TUNinePatch Protocol Methods - Image Construction +/** + Renders the NinePatch into an image of the requested size. Implementations vary in their memory management here -- to guarantee the returned image hangs around you should retain it. + + @param size The size the output UIImage should be. + @returns A UIImage rendering of the NinePatch scaled like the passed-in size. + */ +-(UIImage *)imageOfSize:(CGSize)size; + +// TUNinePatch Protocol Methods - Sizing +/** + Returns YES if the NinePatch scales horizontally, NO otherwise. May be removed from protocol in future. + */ +-(BOOL)stretchesHorizontally; +/** + Returns YES if the NinePatch scales vertically, NO otherwise. May be removed from protocol in future. + */ +-(BOOL)stretchesVertically; + +/** + Returns smallest horizontal size you scan scale NinePatch down to. This is usually equal to the leftEdge + the rightEdge (sending central column width -> 0). May be removed from protocol in future. + + @returns minimumWidth the smallest width NinePatch will render at. + */ +-(CGFloat)minimumWidth; + +/** + Returns smallest vertical size you scan scale NinePatch down to. This is usually equal to the topEdge + bottomEdge (sending central row height -> 0). May be removed from protocol in future. + + @returns minimumHeight the smallest height NinePatch will render at. + */ +-(CGFloat)minimumHeight; + +/** + Returns CGSize created from minimumWidth and minimumHeight in the obvious way. + */ +-(CGSize)minimumSize; + +/** + This is used for layout. Recall that NinePatch allows you to specify a "content region" (into which the content must fit) as a way of standardizing the amount of padding you do when using a particular NinePatch. This method returns the size the NinePatch needs to be drawn at to correctly accommodate content of the passed-in size. Note that for NinePatches that don't specify anything wrt content size this is the identity function. + + @param contentSize The size of the content you're using the NinePatch to display. + @returns The size you need to draw the NinePatch at to accommodate the content. + */ +-(CGSize)sizeForContentOfSize:(CGSize)contentSize; + +/** + This is used for layout. This is basically a convenience function to calculate the offset for where "content" starts. It's the identity function when the NinePatch doesn't specify anything for the content region. + + @param point The point at which you're planning to place the upper left corner of the NinePatch when you draw it. + @returns The point at which you need to place the upper left corner of the content you're going to draw. + */ +-(CGPoint)upperLeftCornerForContentWhenDrawnAtPoint:(CGPoint)point; + +// TUNinePatch Protocol Methods - Geometry +/** + The width of the left column. This geometric property lookup is probably going to get removed from the protocol. + */ +-(CGFloat)leftEdgeWidth; + +/** + The width of the right column. This geometric property lookup is probably going to get removed from the protocol. + */ +-(CGFloat)rightEdgeWidth; + +/** + The width of the upper row. This geometric property lookup is probably going to get removed from the protocol. + */ +-(CGFloat)upperEdgeHeight; + +/** + The width of the lower column. This geometric property lookup is probably going to get removed from the protocol. + */ +-(CGFloat)lowerEdgeHeight; + +@end \ No newline at end of file diff --git a/NinePatch/TUVerticalNinePatch.h b/NinePatch/TUVerticalNinePatch.h new file mode 100755 index 000000000..c9c266f28 --- /dev/null +++ b/NinePatch/TUVerticalNinePatch.h @@ -0,0 +1,36 @@ +// +// TUVerticalNinePatch.h +// NinePatch +// +// Copyright 2009 Tortuga 22, Inc. All rights reserved. +// + +#import +#import +#import "TUNinePatch.h" +#import "TUNinePatchProtocols.h" + +/** + Concrete TUNinePatch instance. Handles NinePatches that only stretch vertically. Only instantiate directly if you know what you're doing. + */ +@interface TUVerticalNinePatch : TUNinePatch < TUNinePatch > { + UIImage *_upperEdge; + UIImage *_lowerEdge; +} + +// Synthesized Properties +@property(nonatomic, retain, readonly) UIImage *upperEdge; +@property(nonatomic, retain, readonly) UIImage *lowerEdge; + +// Init + Dealloc +-(id)initWithCenter:(UIImage *)center contentRegion:(CGRect)contentRegion tileCenterVertically:(BOOL)tileCenterVertically tileCenterHorizontally:(BOOL)tileCenterHorizontally upperEdge:(UIImage *)upperEdge lowerEdge:(UIImage *)lowerEdge; +-(void)dealloc; + +// TUNinePatch Overrides +-(void)drawInRect:(CGRect)rect; +-(BOOL)stretchesHorizontally; +-(CGSize)sizeForContentOfSize:(CGSize)contentSize; +-(CGFloat)upperEdgeHeight; +-(CGFloat)lowerEdgeHeight; + +@end \ No newline at end of file diff --git a/NinePatch/TUVerticalNinePatch.m b/NinePatch/TUVerticalNinePatch.m new file mode 100755 index 000000000..f2363050c --- /dev/null +++ b/NinePatch/TUVerticalNinePatch.m @@ -0,0 +1,132 @@ +// +// TUVerticalNinePatch.m +// NinePatch +// +// Copyright 2009 Tortuga 22, Inc. All rights reserved. +// + +#import "TUVerticalNinePatch.h" + +@interface TUVerticalNinePatch () + +// Synthesized Properties +@property(nonatomic, retain, readwrite) UIImage *upperEdge; +@property(nonatomic, retain, readwrite) UIImage *lowerEdge; + +@end + + +@implementation TUVerticalNinePatch + +#pragma mark Synthesized Properties +@synthesize upperEdge = _upperEdge; +@synthesize lowerEdge = _lowerEdge; + +#pragma mark NSCoding +-(id)initWithCoder:(NSCoder *)coder { + if (self = [super initWithCoder:coder]) { + self.upperEdge = (UIImage *)[coder decodeObjectForKey:@"upperEdge"]; + self.lowerEdge = (UIImage *)[coder decodeObjectForKey:@"lowerEdge"]; + } + return self; +} + +-(void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:self.upperEdge + forKey:@"upperEdge"]; + + [coder encodeObject:self.lowerEdge + forKey:@"lowerEdge"]; +} + +#pragma mark NSCopying +-(id)copyWithZone:(NSZone *)zone { + return [[[self class] allocWithZone:zone] initWithCenter:self.center + contentRegion:self.contentRegion + tileCenterVertically:self.tileCenterVertically + tileCenterHorizontally:self.tileCenterHorizontally + upperEdge:self.upperEdge + lowerEdge:self.lowerEdge]; +} + +#pragma mark Init + Dealloc +-(id)initWithCenter:(UIImage *)center contentRegion:(CGRect)contentRegion tileCenterVertically:(BOOL)tileCenterVertically tileCenterHorizontally:(BOOL)tileCenterHorizontally upperEdge:(UIImage *)upperEdge lowerEdge:(UIImage *)lowerEdge { + NPParameterAssertNotNilIsKindOfClass(upperEdge,UIImage); + NPParameterAssertNotNilIsKindOfClass(lowerEdge,UIImage); + if (self = [super initWithCenter:center + contentRegion:contentRegion + tileCenterVertically:tileCenterVertically + tileCenterHorizontally:tileCenterHorizontally]) { + self.upperEdge = upperEdge; + self.lowerEdge = lowerEdge; + } + return self; +} + +#pragma mark - +-(void)dealloc { + self.upperEdge = nil; + self.lowerEdge = nil; + [super dealloc]; +} + +#pragma mark TUNinePatch Overrides +-(void)drawInRect:(CGRect)rect { + NPSelfProperty(center); + NPSelfProperty(upperEdge); + NPSelfProperty(lowerEdge); + CGFloat width = [self minimumWidth]; + [self.center drawInRect:CGRectMake(CGRectGetMinX(rect), CGRectGetMinY(rect) + [self upperEdgeHeight], width, CGRectGetHeight(rect) - ([self upperEdgeHeight] + [self lowerEdgeHeight]))]; + if (self.upperEdge) { + [self.upperEdge drawAtPoint:CGPointMake(CGRectGetMinX(rect), CGRectGetMinY(rect))]; + } + if (self.lowerEdge) { + [self.lowerEdge drawAtPoint:CGPointMake(CGRectGetMinX(rect), CGRectGetMaxY(rect) - [self lowerEdgeHeight])]; + } +} + +#pragma mark - +-(BOOL)stretchesHorizontally { + return NO; +} + +-(CGSize)sizeForContentOfSize:(CGSize)contentSize { + NPAInputLog(@"sizeForContentOfSize:'%@'",NSStringFromCGSize(contentSize)); + CGSize outSize = [super sizeForContentOfSize:contentSize]; + outSize.width = [self minimumWidth]; + NPCGSOutputLog(outSize); + return outSize; +} + +#pragma mark - +-(CGFloat)upperEdgeHeight { + NPSelfProperty(upperEdge); + CGFloat upperEdgeHeight = 0.0f; + if (self.upperEdge) { + upperEdgeHeight = [self.upperEdge size].height; + } + NPFOutputLog(upperEdgeHeight); + return upperEdgeHeight; +} + +-(CGFloat)lowerEdgeHeight { + NPSelfProperty(lowerEdge); + CGFloat lowerEdgeHeight = 0.0f; + if (self.lowerEdge) { + lowerEdgeHeight = [self.lowerEdge size].height; + } + NPFOutputLog(lowerEdgeHeight); + return lowerEdgeHeight; +} + +#pragma mark Customized Description Overrides +-(NSString *)descriptionPostfix { + return [NSString stringWithFormat:@"%@, self.upperEdge:<'%@'>, self.lowerEdge:<'%@'>", + [super descriptionPostfix], + self.upperEdge, + self.lowerEdge]; +} + +@end \ No newline at end of file diff --git a/NinePatch/UIImage-TUNinePatch.h b/NinePatch/UIImage-TUNinePatch.h new file mode 100755 index 000000000..78ba6fe67 --- /dev/null +++ b/NinePatch/UIImage-TUNinePatch.h @@ -0,0 +1,77 @@ +// +// UIImage-TUNinePatch.h +// NinePatch +// +// Copyright 2009 Tortuga 22, Inc. All rights reserved. +// + +#import +#import +#import "TUNinePatchProtocols.h" + +void TUImageLog(UIImage *image, NSString *imageName); +/** + This category implements all the image-slicing, pixel-tasting, and similar image-manipulation and image-analysis functions. These are only used in methods that'll probably become private real soon now, so maybe a "not much to see here" sign is called for. + */ +@interface UIImage (TUNinePatch) + +// Black Pixel Searching - Corners +-(BOOL)upperLeftCornerIsBlackPixel; +-(BOOL)upperRightCornerIsBlackPixel; +-(BOOL)lowerLeftCornerIsBlackPixel; +-(BOOL)lowerRightCornerIsBlackPixel; + +// Pixel Tasting - Single Pixel +-(BOOL)isBlackPixel; + +// Black Pixel Searching - Strips +-(NSRange)blackPixelRangeInUpperStrip; +-(NSRange)blackPixelRangeInLowerStrip; +-(NSRange)blackPixelRangeInLeftStrip; +-(NSRange)blackPixelRangeInRightStrip; + +// Pixel Tasting - Strips +-(NSRange)blackPixelRangeAsVerticalStrip; +-(NSRange)blackPixelRangeAsHorizontalStrip; + +// Corners - Rects +-(CGRect)upperLeftCornerRect; +-(CGRect)lowerLeftCornerRect; +-(CGRect)upperRightCornerRect; +-(CGRect)lowerRightCornerRect; + +// Corners - Slicing +-(UIImage *)upperLeftCorner; +-(UIImage *)lowerLeftCorner; +-(UIImage *)upperRightCorner; +-(UIImage *)lowerRightCorner; + +// Strips - Sizing +-(CGRect)upperStripRect; +-(CGRect)lowerStripRect; +-(CGRect)leftStripRect; +-(CGRect)rightStripRect; + +// Strips - Slicing +-(UIImage *)upperStrip; +-(UIImage *)lowerStrip; +-(UIImage *)leftStrip; +-(UIImage *)rightStrip; + +// Subimage Slicing +-(UIImage *)subImageInRect:(CGRect)rect; + +// Nine-Patch Content Extraction +-(UIImage *)imageAsNinePatchImage; + +-(UIImage *)extractUpperLeftCornerForStretchableRegion:(CGRect)stretchableRegion; +-(UIImage *)extractUpperRightCornerForStretchableRegion:(CGRect)stretchableRegion; +-(UIImage *)extractLowerLeftCornerForStretchableRegion:(CGRect)stretchableRegion; +-(UIImage *)extractLowerRightCornerForStretchableRegion:(CGRect)stretchableRegion; +-(UIImage *)extractLeftEdgeForStretchableRegion:(CGRect)stretchableRegion; +-(UIImage *)extractRightEdgeForStretchableRegion:(CGRect)stretchableRegion; +-(UIImage *)extractUpperEdgeForStretchableRegion:(CGRect)stretchableRegion; +-(UIImage *)extractLowerEdgeForStretchableRegion:(CGRect)stretchableRegion; +-(UIImage *)extractCenterForStretchableRegion:(CGRect)stretchableRegion; + +@end diff --git a/NinePatch/UIImage-TUNinePatch.m b/NinePatch/UIImage-TUNinePatch.m new file mode 100755 index 000000000..4f9d16095 --- /dev/null +++ b/NinePatch/UIImage-TUNinePatch.m @@ -0,0 +1,539 @@ +// +// UIImage-TUNinePatch.m +// NinePatch +// +// Copyright 2009 Tortuga 22, Inc. All rights reserved. +// + +#import "UIImage-TUNinePatch.h" +#import "TUNinePatchProtocols.h" + +void TUImageLog(UIImage *image, NSString *imageName) { + if (image && imageName) { + NSString *fullFileName = [imageName stringByAppendingString:@".png"]; + if (fullFileName) { + NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; + if (documentsDirectory) { + NSString *fullFilePath = [documentsDirectory stringByAppendingPathComponent:fullFileName]; + if (fullFilePath) { + NSData *pngData = UIImagePNGRepresentation(image); + if (pngData) { + NSFileManager *fileManager = [NSFileManager defaultManager]; + if (fileManager) { + BOOL succeeded = [fileManager createFileAtPath:fullFilePath contents:pngData attributes:nil]; + if (succeeded) { + DLog(@"Seemingly successfully wrote image to file at: '%@'.",fullFilePath); + } else { + DLog(@"Seemingly failed to write image to file at: '%@'.",fullFilePath); + } + } else { + LLog(@"Couldn't get default fileManager, aborting imagelog."); + } + } else { + LLog(@"Couldn't get PNGRepresentation, aborting imagelog."); + } + } else { + LLog(@"Couldn't get fullFilePath, aborting imagelog."); + } + } else { + LLog(@"Couldn't get fullFilePath, aborting imagelog."); + } + } else { + DLog(@"Could't get fullFileName, aborting imageLog."); + } + } else { + DLog(@"Can't log image: '%@', imageName: '%@', as one or both are nil.",image, imageName); + } +} + +@implementation UIImage (TUNinePatch) + +#pragma mark Black Pixel Searching - Corners +-(BOOL)upperLeftCornerIsBlackPixel { + BOOL upperLeftCornerIsBlackPixel = NO; + UIImage *upperLeftCorner = [self upperLeftCorner]; + if (upperLeftCorner) { + upperLeftCornerIsBlackPixel = [upperLeftCorner isBlackPixel]; + } + NPBOutputLog(upperLeftCornerIsBlackPixel); + return upperLeftCornerIsBlackPixel; +} + +-(BOOL)upperRightCornerIsBlackPixel { + BOOL upperRightCornerIsBlackPixel = NO; + UIImage *upperRightCorner = [self upperRightCorner]; + if (upperRightCorner) { + upperRightCornerIsBlackPixel = [upperRightCorner isBlackPixel]; + } + NPBOutputLog(upperRightCornerIsBlackPixel); + return upperRightCornerIsBlackPixel; +} + +-(BOOL)lowerLeftCornerIsBlackPixel { + BOOL lowerLeftCornerIsBlackPixel = NO; + UIImage *lowerLeftCorner = [self lowerLeftCorner]; + if (lowerLeftCorner) { + lowerLeftCornerIsBlackPixel = [lowerLeftCorner isBlackPixel]; + } + NPBOutputLog(lowerLeftCornerIsBlackPixel); + return lowerLeftCornerIsBlackPixel; +} + +-(BOOL)lowerRightCornerIsBlackPixel { + BOOL lowerRightCornerIsBlackPixel = NO; + UIImage *lowerRightCorner = [self lowerRightCorner]; + if (lowerRightCorner) { + lowerRightCornerIsBlackPixel = [lowerRightCorner isBlackPixel]; + } + NPBOutputLog(lowerRightCornerIsBlackPixel); + return lowerRightCornerIsBlackPixel; +} + +#pragma mark Pixel Tasting - Single Pixel +-(BOOL)isBlackPixel { + NPAssert(([self size].width > 0.0f), @"Should have width > 0.0f"); + NPAssert(([self size].height > 0.0f), @"Should have height > 0.0f"); + BOOL isBlackPixel = NO; + if (([self size].width > 0.0f) && ([self size].height > 0.0f)) { + CGImageRef cgImage = [self CGImage]; + NSUInteger width = CGImageGetWidth(cgImage); + NSUInteger height = CGImageGetHeight(cgImage); + NSUInteger bytesPerRow = width * TURGBABytesPerPixel; + NSUInteger bitsPerComponent = 8; + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + UInt8 *pixelByteData = malloc(width * height * TURGBABytesPerPixel); + + + CGContextRef context = CGBitmapContextCreate( + (void *)pixelByteData, + width, + height, + bitsPerComponent, + bytesPerRow, + colorSpace, + kCGImageAlphaPremultipliedLast); + + CGContextDrawImage(context, CGRectMake(0.0f,0.0f,1.0f,1.0f), cgImage); + TURGBAPixel *pixelData = (TURGBAPixel *) CGBitmapContextGetData(context); + if (pixelData) { + isBlackPixel = TURGBAPixelIsBlack(pixelData[0]); + } + CGContextRelease(context); + CGColorSpaceRelease(colorSpace); + free(pixelByteData); + } + NPBOutputLog(isBlackPixel); + return isBlackPixel; +} + +#pragma mark Black Pixel Searching - Strips +-(NSRange)blackPixelRangeInUpperStrip { + NSRange blackPixelRangeInUpperStrip = TUNotFoundRange; + UIImage *upperStrip = [self upperStrip]; + if (upperStrip) { + blackPixelRangeInUpperStrip = [upperStrip blackPixelRangeAsHorizontalStrip]; + } + NPNSROutputLog(blackPixelRangeInUpperStrip); + return blackPixelRangeInUpperStrip; +} + +-(NSRange)blackPixelRangeInLowerStrip { + NSRange blackPixelRangeInLowerStrip = TUNotFoundRange; + UIImage *lowerStrip = [self lowerStrip]; + if (lowerStrip) { + blackPixelRangeInLowerStrip = [lowerStrip blackPixelRangeAsHorizontalStrip]; + } + NPNSROutputLog(blackPixelRangeInLowerStrip); + return blackPixelRangeInLowerStrip; +} + +-(NSRange)blackPixelRangeInLeftStrip { + NSRange blackPixelRangeInLeftStrip = TUNotFoundRange; + UIImage *leftStrip = [self leftStrip]; + if (leftStrip) { + blackPixelRangeInLeftStrip = [leftStrip blackPixelRangeAsVerticalStrip]; + } + NPNSROutputLog(blackPixelRangeInLeftStrip); + return blackPixelRangeInLeftStrip; +} + +-(NSRange)blackPixelRangeInRightStrip { + NSRange blackPixelRangeInRightStrip = TUNotFoundRange; + UIImage *rightStrip = [self rightStrip]; + if (rightStrip) { + blackPixelRangeInRightStrip = [rightStrip blackPixelRangeAsVerticalStrip]; + } + NPNSROutputLog(blackPixelRangeInRightStrip); + return blackPixelRangeInRightStrip; +} + +#pragma mark Pixel Tasting - Strips +-(NSRange)blackPixelRangeAsVerticalStrip { + NPAssert([self size].width == 1.0f, @"This method assumes the image has width == 1.0f"); + NSRange blackPixelRangeAsVerticalStrip = TUNotFoundRange; + NSUInteger firstBlackPixel = NSNotFound; + NSUInteger lastBlackPixel = NSNotFound; + if ([self size].height > 0.0f) { + CGImageRef cgImage = [self CGImage]; + + NSUInteger width = CGImageGetWidth(cgImage); + NSUInteger height = CGImageGetHeight(cgImage); + NSUInteger bytesPerRow = width * TURGBABytesPerPixel; + NSUInteger bitsPerComponent = 8; + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + UInt8 *pixelByteData = malloc(width * height * TURGBABytesPerPixel); + + CGContextRef context = CGBitmapContextCreate( + (void *)pixelByteData, + width, + height, + bitsPerComponent, + bytesPerRow, + colorSpace, + kCGImageAlphaPremultipliedLast); + + // NEW: seeing nondetermnistic errors where sometimes the image is parsed right + // and sometimes not parsed right. The followthing three lines paint the context + // to solid white, then paste the image over it, so this ought to normalize the + // outcome a bit more. + CGRect contextBounds = CGRectMake(0.0f, 0.0f, width, height); + CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]); + CGContextFillRect(context, contextBounds); + + // Having normalized the context we now paint the image + CGContextDrawImage(context, contextBounds, cgImage); + TURGBAPixel *pixelData = (TURGBAPixel *) CGBitmapContextGetData(context); + if (pixelData) { + // CF note in the AsHorizontal method below + for (NSUInteger i = 0; i < height; i++) { + if (TURGBAPixelIsBlack(pixelData[((height - 1) - i)])) { + firstBlackPixel = ((height - 1) - i); + } + if (TURGBAPixelIsBlack(pixelData[i])) { + lastBlackPixel = i; + } + } + + if ((firstBlackPixel != NSNotFound) && (lastBlackPixel != NSNotFound)) { + NPAssert(lastBlackPixel >= firstBlackPixel, ([NSString stringWithFormat:@"Got firstBlackPixel:'%d' and lastBlackPixel:'%d'.",firstBlackPixel,lastBlackPixel])); + blackPixelRangeAsVerticalStrip.location = TUTruncateWithin(firstBlackPixel, 0, height - 1) / self.scale; + // We can't just use TUTruncateAtZero on lastBlackPixel - firstBlackPixel here. + // The semantics of pixel coordinates are such that a zero difference between lastBlackPixel and firstBlackPixel is ok + // but < 0 is obv. very bad. + // Thus 1 + TUTruncateAtZero(lastBlackPixel - firstBlackPixel) won't work. + // and fixing the expression s.t. it does work is more complicated than + // just breaking it down like so. + NSInteger length = lastBlackPixel - firstBlackPixel; + if (length >= 0) { + length += 1; + } else { + length = 0; + } + blackPixelRangeAsVerticalStrip.length = length/self.scale; + } + } + CGContextRelease(context); + CGColorSpaceRelease(colorSpace); + free(pixelByteData); + } + NPNSROutputLog(blackPixelRangeAsVerticalStrip); + return blackPixelRangeAsVerticalStrip; +} + +-(NSRange)blackPixelRangeAsHorizontalStrip { + NPAssert([self size].height == 1.0f, @"This method assumes the image has height == 1.0f"); + NSRange blackPixelRangeAsHorizontalStrip = TUNotFoundRange; + NSUInteger firstBlackPixel = NSNotFound; + NSUInteger lastBlackPixel = NSNotFound; + if ([self size].width > 0.0f) { + CGImageRef cgImage = [self CGImage]; + + NSUInteger width = CGImageGetWidth(cgImage); + NSUInteger height = CGImageGetHeight(cgImage); + NSUInteger bytesPerRow = width * TURGBABytesPerPixel; + NSUInteger bitsPerComponent = 8; + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + UInt8 *pixelByteData = malloc(width * height * TURGBABytesPerPixel); + + CGContextRef context = CGBitmapContextCreate( + (void *)pixelByteData, + width, + height, + bitsPerComponent, + bytesPerRow, + colorSpace, + kCGImageAlphaPremultipliedLast); + + // NEW: seeing nondetermnistic errors where sometimes the image is parsed right + // and sometimes not parsed right. The followthing three lines paint the context + // to solid white, then paste the image over it, so this ought to normalize the + // outcome a bit more. + CGRect contextBounds = CGRectMake(0.0f, 0.0f, width, height); + CGContextSetFillColorWithColor(context, [[UIColor whiteColor] CGColor]); + CGContextFillRect(context, contextBounds); + + // Having normalized the context we now paint the image + CGContextDrawImage(context, contextBounds, cgImage); + TURGBAPixel *pixelData = (TURGBAPixel *) CGBitmapContextGetData(context); + if (pixelData) { + // The for loop below is walking the strip from both ends. + // Basically you could do this check a bunch of ways, with a + // bunch of trade-offs in terms of how fast it is and how robust it + // is and how any "format errors" in your nine patch manifest. + // + // What I have found is that ninepatch is a fussy format, with a + // common failure mode being that you painted a pixel "black" but + // either got the alpha wrong, or it wasn't quite black, or it + // didn't composite to black, etc., and thus get invalid ninepatches. + // + // What I do here is just look for the highest and lowest black pixels, + // and treat anything in between as also black. EG: + // + // - if X == black and O == not-black + // - then these square brackes - [ and ] - enclose the "black" region + // + // - then: OOOOXXXXXOOOOO -> OOOO[XXXXX]OOOOO + // - but also: OOOXXOOXXOOO -> OOO[XXOOXX]OOO + // - and even: OXOOOOOOOXO -> O[XOOOOOOOX]O + // + // This is a judgement call on my part, in that the approach I can take to + // accomplish this is straightforward without any complicated state tracking, + // and the behavior it has in the face of "invalid" nine-patches is generally + // what I meant, anyways. + // + // The actual implementation is straightforward but suboptimal. + // I look through the array once, iterating i from 0->(width -1). + // On each iteration I taste the pixel @ i and at (width - 1) -1, + // and if the pixel @ i is black I set the "lastBlackPixel" == i + // and if the pixel @ (width - 1) - i is black I set the "firstBlackPixel" + // to (width - 1) - i. + // + // Once the loop is done the values in the lastBlackPixel and firstBlackPixel + // contain what they ought to have. + // + // Given the continual risk of hard-to-spot off-by-one errors throughout this + // library I've opted to keep it dumb and suboptimal in places like this one, + // so that I can be more comfortable that what problems there are are elsewhere. + // + // If you subseqently do add an improved loop please wrap it in ifdefs like + // #ifdef CLEVERNESS YOUR-CODE #else DUMB-CODE #endif + // + for (NSUInteger i = 0; i < width; i++) { + if (TURGBAPixelIsBlack(pixelData[((width - 1) - i)])) { + firstBlackPixel = ((width - 1) - i); + } + if (TURGBAPixelIsBlack(pixelData[i])) { + lastBlackPixel = i; + } + } + + if ((firstBlackPixel != NSNotFound) && (lastBlackPixel != NSNotFound)) { + NPAssert(lastBlackPixel >= firstBlackPixel, ([NSString stringWithFormat:@"Got firstBlackPixel:'%d' and lastBlackPixel:'%d'.",firstBlackPixel,lastBlackPixel])); + blackPixelRangeAsHorizontalStrip.location = TUTruncateWithin(firstBlackPixel, 0, width - 1) / self.scale; + // We can't just use TUTruncateAtZero on lastBlackPixel - firstBlackPixel here. + // The semantics of pixel coordinates are such that a zero difference between lastBlackPixel and firstBlackPixel is ok + // but < 0 is obv. very bad. + // Thus 1 + TUTruncateAtZero(lastBlackPixel - firstBlackPixel) won't work. + // and fixing the expression s.t. it does work is more complicated than + // just breaking it down like so. + NSInteger length = lastBlackPixel - firstBlackPixel; + if (length >= 0) { + length += 1; + } else { + length = 0; + } + blackPixelRangeAsHorizontalStrip.length = length / self.scale; + } + } + CGContextRelease(context); + CGColorSpaceRelease(colorSpace); + free(pixelByteData); + } + NPNSROutputLog(blackPixelRangeAsHorizontalStrip); + return blackPixelRangeAsHorizontalStrip; +} + +#pragma mark Corners - Rects +-(CGRect)upperLeftCornerRect { + return CGRectMake(0.0f, 0.0f, 1.0f/self.scale, 1.0f/self.scale); +} + +-(CGRect)lowerLeftCornerRect { + return CGRectMake(0.0f, [self size].height - (1.0f/self.scale), 1.0f/self.scale, 1.0f/self.scale); +} + +-(CGRect)upperRightCornerRect { + return CGRectMake([self size].width - (1.0f/self.scale), 0.0f, 1.0f/self.scale, 1.0f/self.scale); +} + +-(CGRect)lowerRightCornerRect { + return CGRectMake([self size].width - 1.0f, [self size].height - (1.0f/self.scale), 1.0f/self.scale, 1.0f/self.scale); +} + +#pragma mark Corners - Slicing +-(UIImage *)upperLeftCorner { + return [self subImageInRect:[self upperLeftCornerRect]]; +} + +-(UIImage *)lowerLeftCorner { + return [self subImageInRect:[self lowerLeftCornerRect]]; +} + +-(UIImage *)upperRightCorner { + return [self subImageInRect:[self upperRightCornerRect]]; +} + +-(UIImage *)lowerRightCorner { + return [self subImageInRect:[self lowerRightCornerRect]]; +} + +#pragma mark Strips - Sizing +-(CGRect)upperStripRect { + CGSize selfSize = [self size]; + CGFloat stripWidth = TUTruncateAtZero(selfSize.width - (2.0f/self.scale)); + return CGRectMake((1.0f/self.scale), 0.0f, stripWidth, 1.0f/self.scale); +} + +-(CGRect)lowerStripRect { + CGSize selfSize = [self size]; + CGFloat stripWidth = TUTruncateAtZero(selfSize.width - (2.0f/self.scale)); + return CGRectMake(1.0f/self.scale, selfSize.height - (1.0f/self.scale), stripWidth, 1.0f/self.scale); +} + +-(CGRect)leftStripRect { + CGSize selfSize = [self size]; + CGFloat stripHeight = TUTruncateAtZero(selfSize.height - (2.0f/self.scale)); + return CGRectMake(0.0f, 1.0f/self.scale, 1.0f/self.scale, stripHeight); +} + +-(CGRect)rightStripRect { + CGSize selfSize = [self size]; + CGFloat stripHeight = TUTruncateAtZero(selfSize.height - (2.0f/self.scale)); + return CGRectMake(selfSize.width - (1.0f/self.scale), 1.0f/self.scale, 1.0f/self.scale, stripHeight); +} + +#pragma mark Strips - Slicing +-(UIImage *)upperStrip { + return [self subImageInRect:[self upperStripRect]]; +} + +-(UIImage *)lowerStrip { + return [self subImageInRect:[self lowerStripRect]]; +} + +-(UIImage *)leftStrip { + return [self subImageInRect:[self leftStripRect]]; +} + +-(UIImage *)rightStrip { + return [self subImageInRect:[self rightStripRect]]; +} + +-(UIImage *)subImageInRect:(CGRect)rect { + NPAInputLog(@"subImageInRect:'%@'",NSStringFromCGRect(rect)); + UIImage *subImage = nil; + CGImageRef cir = [self CGImage]; + if (cir) { + rect.origin.x *= self.scale; + rect.origin.y *= self.scale; + rect.size.width *= self.scale; + rect.size.height *= self.scale; + CGImageRef subCGImage = CGImageCreateWithImageInRect(cir, rect); + if (subCGImage) { + subImage = [UIImage imageWithCGImage:subCGImage scale:self.scale orientation:self.imageOrientation]; + CGImageRelease(subCGImage); + NPAssertNilOrIsKindOfClass(subImage,UIImage); + NPAssert((CGSizeEqualToSize([subImage size], rect.size)), @"Shouldn't get unequal subimage and requested sizes."); + } else { + DLog(@"Couldn't create subImage in rect: '%@'.", NSStringFromCGRect(rect)); + } + } else { + LLog(@"self.CGImage is somehow nil."); + } + //DLog(@"[%@:<0x%x> subImageInRect:%@] yielded subImage: '%@' of size: '%@'", [self class], ((NSUInteger) self), NSStringFromCGRect(rect), subImage, NSStringFromCGSize([subImage size])); + //IMLog(self, @"subImageInRectSourceImage"); + //IMLog(subImage, @"subImageInRect"); + NPOOutputLog(subImage); + return subImage; +} + +#pragma mark Nine-Patch Content Extraction +-(UIImage *)imageAsNinePatchImage { + UIImage *imageOfNinePatchImage = nil; + CGFloat width = [self size].width - (2.0f/self.scale); + CGFloat height = [self size].height - (2.0f/self.scale); + if (width > 0.0f && height > 0.0f) { + imageOfNinePatchImage = [self subImageInRect:CGRectMake((1.0f/self.scale), (1.0f/self.scale), width, height)]; + } + NPOOutputLog(imageOfNinePatchImage); + return imageOfNinePatchImage; +} + +#pragma mark - +-(UIImage *)extractUpperLeftCornerForStretchableRegion:(CGRect)stretchableRegion { + NPAInputLog(@"extractUpperLeftCornerForStretchableRegion:'%@'",NSStringFromCGRect(stretchableRegion)); + UIImage *upperLeftCorner = [self subImageInRect:CGRectMake(0.0f, 0.0f, CGRectGetMinX(stretchableRegion), CGRectGetMinY(stretchableRegion))]; + NPOOutputLog(upperLeftCorner); + return upperLeftCorner; +} + +-(UIImage *)extractUpperRightCornerForStretchableRegion:(CGRect)stretchableRegion { + NPAInputLog(@"extractUpperRightCornerForStretchableRegion:'%@'",NSStringFromCGRect(stretchableRegion)); + UIImage *upperRightCorner = [self subImageInRect:CGRectMake(CGRectGetMaxX(stretchableRegion), 0.0f, [self size].width - CGRectGetMaxX(stretchableRegion), CGRectGetMinY(stretchableRegion))]; + NPOOutputLog(upperRightCorner); + return upperRightCorner; +} + +-(UIImage *)extractLowerLeftCornerForStretchableRegion:(CGRect)stretchableRegion { + NPAInputLog(@"extractUpperRightCornerForStretchableRegion:'%@'",NSStringFromCGRect(stretchableRegion)); + UIImage *lowerLeftCorner = [self subImageInRect:CGRectMake(0.0f, CGRectGetMaxY(stretchableRegion), CGRectGetMinX(stretchableRegion), [self size].height - CGRectGetMaxY(stretchableRegion))]; + NPOOutputLog(lowerLeftCorner); + return lowerLeftCorner; +} + +-(UIImage *)extractLowerRightCornerForStretchableRegion:(CGRect)stretchableRegion { + NPAInputLog(@"extractLowerRightCornerForStretchableRegion:'%@'",NSStringFromCGRect(stretchableRegion)); + UIImage *lowerRightCorner = [self subImageInRect:CGRectMake(CGRectGetMaxX(stretchableRegion), CGRectGetMaxY(stretchableRegion), [self size].width - CGRectGetMaxX(stretchableRegion), [self size].height - CGRectGetMaxY(stretchableRegion))]; + NPOOutputLog(lowerRightCorner); + return lowerRightCorner; +} + +#pragma mark - +-(UIImage *)extractLeftEdgeForStretchableRegion:(CGRect)stretchableRegion { + NPAInputLog(@"extractLeftEdgeForStretchableRegion:'%@'",NSStringFromCGRect(stretchableRegion)); + UIImage *leftEdge = [self subImageInRect:CGRectMake(0.0f, CGRectGetMinY(stretchableRegion), CGRectGetMinX(stretchableRegion), CGRectGetHeight(stretchableRegion))]; + NPOOutputLog(leftEdge); + return leftEdge; +} + +-(UIImage *)extractRightEdgeForStretchableRegion:(CGRect)stretchableRegion { + NPAInputLog(@"extractRightEdgeForStretchableRegion:'%@'",NSStringFromCGRect(stretchableRegion)); + UIImage *rightEdge = [self subImageInRect:CGRectMake(CGRectGetMaxX(stretchableRegion), CGRectGetMinY(stretchableRegion), [self size].width - CGRectGetMaxX(stretchableRegion), CGRectGetHeight(stretchableRegion))]; + NPOOutputLog(rightEdge); + return rightEdge; +} + +-(UIImage *)extractUpperEdgeForStretchableRegion:(CGRect)stretchableRegion { + NPAInputLog(@"extractUpperEdgeForStretchableRegion:'%@'",NSStringFromCGRect(stretchableRegion)); + UIImage *upperEdge = [self subImageInRect:CGRectMake(CGRectGetMinX(stretchableRegion), 0.0f, CGRectGetWidth(stretchableRegion), CGRectGetMinY(stretchableRegion))]; + NPOOutputLog(upperEdge); + return upperEdge; +} + +-(UIImage *)extractLowerEdgeForStretchableRegion:(CGRect)stretchableRegion { + NPAInputLog(@"extractLowerEdgeForStretchableRegion:'%@'",NSStringFromCGRect(stretchableRegion)); + UIImage *lowerEdge = [self subImageInRect:CGRectMake(CGRectGetMinX(stretchableRegion), CGRectGetMaxY(stretchableRegion), CGRectGetWidth(stretchableRegion), [self size].height - CGRectGetMaxY(stretchableRegion))]; + NPOOutputLog(center); + return lowerEdge; +} + +#pragma mark - +-(UIImage *)extractCenterForStretchableRegion:(CGRect)stretchableRegion { + NPAInputLog(@"extractCenterForStretchableRegion:'%@'",NSStringFromCGRect(stretchableRegion)); + UIImage *center = [self subImageInRect:stretchableRegion]; + NPOOutputLog(center); + return center; +} + + +@end diff --git a/Resources/20-gear2.png b/Resources/20-gear2.png deleted file mode 100644 index b8180ded27c10b0e80bbcf5bb5e598da968b65d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 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 literal 0 HcmV?d00001 diff --git a/Resources/chat_bubble_incoming.png b/Resources/chat_bubble_incoming.png new file mode 100644 index 0000000000000000000000000000000000000000..a731fbd1d42c1cbb4b16b0b319c43ebba4b0e4ed GIT binary patch literal 2538 zcmbVOYgAI{8s12P7Zge@Z;e~*Vw%7P6eUd%#56S`E0?7~fC|b*K!wI?BaNDxVr5!Q z#dNV&GqtLdlcgn<)7X?{j$O^uW%M+zY_!a@GC5e;oFA?EarRn!ec$`;_j%s?T6;4$ zF~-Tk(*Xbgr`Sbop7o5ez63iI03e*=sa{sWLld2>S*A$WA!ubvD;fa8BehC_FiWff*NQVF@(BDuV>2F< zh$8SSgA+&zN|rcNvS^)3ylh=!l5ky?FieDxTnL71=~e=nSR(+nvTV7Uu8qKdlM=usRJheCy@!DKQiBou-|nIUXWG>JlDg+Nd+Ie3!eYgiVCOd^v) zsZlIi6a+;>OzX)ZQA4Oy7C98+giT^&2qp3fd7?d^vSo`^l0319qf*GgkM*TXzT!WO#R&-xC9x@# zPkDzyq_C)HCM$%@ra;jl9QMr1(HabKVmSV1SSD5037oio8GWnpWqHJM>&B?8 zt0AAd0tNt-XDpkUqg$w|CdNrp^AG*V+KaqTSm(f);+k*51i(Cf;l+4ECb>u$CPN=1? z8b?RZg?dq#{)JkHy%n{5&vqwY6g+M4{__#@4(LLGfW0@ZNx*&65 z|9TAlhW7Q?u*K|}P&Lo=s-*A6hq>jhsMm2?x{ZoabpF)8NVwi-fB60en2?N})iY|N zFTkS!qGi#MJQlInt@q$~U#36waQ)!+Cl8LjcdhY0(NtQ+DghLF4~E?p-Oyi1WDr0= zpG3SAfzBddgNEMv@ZP4$bz2YzT;x-@aCe(&S)1J5uk zm+bK@}I*%3P(No!!Q0oYI5hCw7&l@s_AhQrdcY_=n59ZW? zpm2F>g#nzH3|ii?ZCmf3wQN?J61o>OH!e=)8f=TEB3 z>zw-BUAPR{CdoW@^=G{jQ+cj*%)=fMG?<5K6pT*ibzxV$N^ZhZxts0Io6@*b{#(6` z-Xr_s3sBO97t=XqMWqGx0lRwLWpNwQxO3r$0C1>2=*&PwdPB}LL7*|!P*tzfHH+NG`WemSc{vOn!I_ zBfn{F2XCdf>vCG_%yQzt*T2KcV66Y>@N*i{$*mKK51UR8g8t+_}JaJz?|!niL3nnB~7Zoc6We$Z)c|A+g%v!H<2~EH&5H( z&?zEf`vzT4>8rl`i)lSf!omC!xZgJ9H=iHQWPF22ZMAFJa;b1EH%01zu`%a4)?X~H z+~;w;d!2dk&4(Cn%CVTgW&%^(!&2RNz!CNf;Au81H8_uh;uNWC6onmzFx(?Aj0bxC zcBeJhw(T-G)-GLqixMznMsaJ^wiz{uozpP}?{>U$wO+gDe6=su2TLpJ`Ib*c6}n(p z0GFaz7ye9{lBGz^Hw8Z0h-(f!W6URGtkwDUPswh4H1W+pbY_{i+dWk_WEY zi=g*&YIz$UUw&x+r9#Zp{ZSa3f^dupLFBDEQAC%5O}N(8i*DvwMtmYY76M%=^9sky z&(91nw_KN-I@w&eElY^UAH+G9s9{@aT~TQ`vO2vBJ+*+Iihgh8=&nWA%ffjxDBC=lAZQW3KbGAEyEyKKQ%?cRr{m P{=QOom#QRV zu9KNuCgNq|14zV`8(o$4H`8P1W_My7rn~CEfn*VK{*P0qPE{R6`8Q*S9aETM*s7Xcf^T! z5jWz84(Nfd1!WGor`eQcO53d3{TK=;ehwYb16^F--TC3@y?v1{0I4ZM+iW!LoalzdhwhuB&41w88qq}TP15*&;nlF$V|m7=whq0o$U;fLsR$@EBh zqK^U(aQTx(2DzEaRV5&gg9o?_?P%HRu7u-p@EF?Z_*te=YV{=?kAnxecp(jBJsPh| z;Bs&$#J~Ki?|qVRJPsb<;@)RDcP{F zNwS#?)J)1_iT|-AZWL~%@-+#^d%)#9z{PV_(pYw`N_w&`IrXULUX?VKM=ssSgY|Mt zLgEe%;4yYH`BL9JlT6F&Tj)>PMfP0Jot6&)^E?E2ce>4rm^&SG`#vebv~=m>+IpGM zW=|+U&xU?Qrm0d%Xz`W?rOgCl%3* zXF{sb==zS&@MbW(uzAQZ8IB1&lfG8F(~nI#UUT@;`l1=Rvx;7sQ?25Su*A(mNkO>A00000NkvXXu0mjfJp;02 literal 0 HcmV?d00001 diff --git a/Resources/chat_bubble_outgoing.png b/Resources/chat_bubble_outgoing.png new file mode 100644 index 0000000000000000000000000000000000000000..8a597fc3860f267cae03deb4f7c0a4f2002c7569 GIT binary patch literal 2485 zcmbVOX;c&E8XgD<0RjfF?8_JsQ6ZTLAtW(TAd7;4fK*VlO-Kfak_3`q0{4m_h!iQJ zUcsdYsfxIx(gH3Q0t6L{f>%VST6e{bqN1Qg(m}<0e|Y-i&N*}Dd%t;}=Uu;Zz8|8a z=3863SONfG9kzfMi+<;$FBy*m02Av7nk#BJtN97)#foILMx;c55Q!oQ0mEdX6eJcA zNwP9J5HV(J$mRKPpizYB+tt=g70|0xTHeDoMg{Z+KBtftdBa~P~rN~r@(S9U*O_I^t{k@|JAQ}y8ky45_MU=)!wT+{J-lq)054PuLUf`IIdWQA$@M5`j`713%W6CH;zjCRacYWI()tfKPcdVTc*Z z58=|Oya1R_7mz-4CI3&&C}=R0iQ)L4VVT@QCval6{qbJfo?B4Xtkpw&XZD?GRd~n+S=9lqAp;y45r$nLZa= zp6yZsnCOdU4+eX@8^1rJZEH=fvqif<`>BrL@W@#FYKw0%gV~pHj)^ynnU^OOIO{Fq z3_s=(bb3ABrmEREo_D{%k6UIEU~k_C3c{_kU%&P8F3CM%N-des+it9@0w^&%*Nz+7 zhXy(hU)SjzFfUEeKo^xJ67(ku2nFpfy#@NN^RGRfOki&;+u_8Eq&=qI8|>NcGiQez z&G|Fnhd9E`wWDs8rQ3xr-PY4^xpqTu+fu-TuZG?oHikUOwF62r$v)xMdFwXB!B{-+ zAkv-T6a8xcRKULao2z3}c011`3~U=xn_XH}`#_@S_4oG|QGo#af!_SHy_nL!y zZl8R-*C@FYA6?gv|F%Czcc5>ti$PF0Xsq4m+YXi8`6EAt za3v?Iq$+(ky}Q)JWIA?cA^+J(1cvEbAR5XgmgSF{Z_XbLv9WaF*;tw~Q)eG9IO?2Q zk$V&9lqOzT_*AM}#I#BvpHs#B~QLx`!hxyW^q@VdbFcHFP*UIIPtc# zhdioLS5bRAq{k+kdCs+{D|cm*(EL$d8R)rktYF8Eo6A1T>shWi%fa}jniPfxo_;ux zo1bspV*v&M!BW|8XGV5A{n0emV=1{Vl*s7xUgN8i_tcbOkGVM=#JjStBDct^xYlVP zaMCeuV_T>IpYW=wI=*9L4b4GpTJDN@N*pM{W4hgIxAXY8`5R3i*!XzJkA>WIDx0(2 z31=%zO7?IYG&z<3#Ar0;x5A(X`e1nXk7x!C1xBA>I{_EmBff9`km^DxH93V@9+ZcB zdBJ(@UI*=)_n7?VI&5Q2$I#2Gjyt-(Z?Z1p2ER3ZQ8E9R@9rk;yC{zbq1hYo7rqnj zHP~j~e`?#kzC>5J`s&t{TIU>tfp2e~+lk#V<)pd9vlESk$M-mjs{AoJ1^)v z_1;GY91?wR?C*{unz{ZutiY3>)5CR9q{3S(Lw;EuGCSrupXlnEc;(`X_J)}xpEJA} zqid4)#B_3h931F0Hy?yFxWP?hjK`I){}ufZ-XhHC6Z%$NJX?kRVKKYmb!;oa>hZXL z;>@nPo$m+V^iIJVG>(TJsNZWwN>i>pC;D7psC!a)sexwx45=8tLo4jnyG94zg{tda z(uUW>PVLHfSFd<{^uF!Ry-V`i4E=;X-QP7Y`MrT|H?@s@{I=CkK7H{#2kszisg|9& zXGu9x#%LFF`h>yNk$agRmSK9{__hAB(C@L;=I{^yz8t0NFyzJ0%i>kMukVw-aej-f zT*SLNHKsak*FpW+)uar;hGff4_KaWY7h9y6VV5I)_T3y@CileaWpBznzq9^(|}hieMaD*Hhsy*E2oHt<0YtrO%GV zN0JKyG?n2uc$Si(?Os1AX4Hg|dL8*o#5ciVM_Pmg!V;=7mb%rKLz ztLog6_s_w~P_Uy;)jLuby6Q;6ZDqxZ3g0Ohm* literal 0 HcmV?d00001 diff --git a/Resources/setup_back_disabled.png b/Resources/setup_back_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..805084589d7b2972ab31a6f62f28f933f97a8068 GIT binary patch literal 5050 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 T+-C6S?=&NQQ@v^(=eYj^NClVC literal 0 HcmV?d00001 diff --git a/Resources/setup_cancel_disabled.png b/Resources/setup_cancel_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..30b9978fa9ab797a42c625ddae0aafea307d3c83 GIT binary patch literal 5924 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 Cbx;2Q literal 0 HcmV?d00001 diff --git a/Resources/setup_start_disabled.png b/Resources/setup_start_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..1c66451b3017e5ad8142fe7adc908ff95c086a45 GIT binary patch literal 5620 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 Date: Mon, 9 Jul 2012 16:22:29 +0200 Subject: [PATCH 032/397] Start Contact views Fix chat bug view bug (resize issue) --- Classes/ChatRoomTableViewController.h | 5 - Classes/ChatRoomTableViewController.m | 26 +- Classes/ChatRoomViewController.m | 5 +- Classes/ChatTableViewController.h | 5 - Classes/ChatTableViewController.m | 28 -- Classes/ChatViewController.m | 4 +- ....h => ContactDetailsTableViewController.h} | 18 +- Classes/ContactDetailsTableViewController.m | 208 ++++++++++ Classes/ContactDetailsViewController.h | 36 ++ Classes/ContactDetailsViewController.m | 70 ++++ Classes/ContactDetailsViewController.xib | 392 ++++++++++++++++++ Classes/ContactsTableViewController.h | 3 + Classes/ContactsTableViewController.m | 190 +++++---- Classes/ContactsViewController.m | 7 +- Classes/DialerViewController.h | 6 +- Classes/DialerViewController.m | 7 + Classes/HistoryTableViewController.h | 7 +- Classes/HistoryTableViewController.m | 96 +++-- Classes/HistoryViewController.m | 7 +- Classes/LinphoneManager.h | 4 + Classes/LinphoneManager.m | 72 ++++ Classes/LinphoneUI/UICallButton.m | 66 +-- Classes/LinphoneUI/UIChatCell.h | 2 - Classes/LinphoneUI/UIChatCell.m | 23 +- Classes/LinphoneUI/UIChatCell.xib | 24 +- Classes/LinphoneUI/UIChatRoomCell.h | 3 - Classes/LinphoneUI/UIChatRoomCell.m | 58 ++- Classes/LinphoneUI/UIChatRoomCell.xib | 2 +- Classes/LinphoneUI/UIChatRoomHeader.xib | 8 +- Classes/LinphoneUI/UIConferenceHeader.xib | 5 +- Classes/LinphoneUI/UIContactCell.h | 2 + Classes/LinphoneUI/UIContactCell.m | 17 +- Classes/LinphoneUI/UIContactCell.xib | 41 +- Classes/LinphoneUI/UIContactDetailsHeader.h | 39 ++ Classes/LinphoneUI/UIContactDetailsHeader.m | 81 ++++ Classes/LinphoneUI/UIContactDetailsHeader.xib | 244 +++++++++++ Classes/LinphoneUI/UIHistoryCell.h | 2 - Classes/LinphoneUI/UIHistoryCell.m | 30 +- Classes/LinphoneUI/UIHistoryCell.xib | 2 +- Classes/LinphoneUI/UIMainBar.m | 4 +- Classes/LinphoneUI/UIPauseResumeButton.m | 69 --- Classes/LinphoneUI/UITransferButton.m | 66 +-- Classes/Model/ChatModel.m | 2 +- Classes/PhoneMainView.h | 1 + Classes/PhoneMainView.m | 2 + Classes/Utils/FastAddressBook.m | 23 +- Resources/cancel_default.png | Bin 4152 -> 0 bytes Resources/cancel_over.png | Bin 4384 -> 0 bytes Resources/contact_back_default.png | Bin 0 -> 4647 bytes Resources/contact_back_over.png | Bin 0 -> 4368 bytes Resources/contact_edit_default.png | Bin 0 -> 4596 bytes Resources/contact_edit_over.png | Bin 0 -> 4284 bytes Resources/contact_number.png | Bin 0 -> 3673 bytes Resources/contact_number_over.png | Bin 0 -> 3584 bytes linphone.xcodeproj/project.pbxproj | 86 +++- 55 files changed, 1625 insertions(+), 473 deletions(-) rename Classes/{LinphoneUI/UIPauseResumeButton.h => ContactDetailsTableViewController.h} (73%) create mode 100644 Classes/ContactDetailsTableViewController.m create mode 100644 Classes/ContactDetailsViewController.h create mode 100644 Classes/ContactDetailsViewController.m create mode 100644 Classes/ContactDetailsViewController.xib create mode 100644 Classes/LinphoneUI/UIContactDetailsHeader.h create mode 100644 Classes/LinphoneUI/UIContactDetailsHeader.m create mode 100644 Classes/LinphoneUI/UIContactDetailsHeader.xib delete mode 100644 Classes/LinphoneUI/UIPauseResumeButton.m delete mode 100644 Resources/cancel_default.png delete mode 100644 Resources/cancel_over.png create mode 100644 Resources/contact_back_default.png create mode 100644 Resources/contact_back_over.png create mode 100644 Resources/contact_edit_default.png create mode 100644 Resources/contact_edit_over.png create mode 100644 Resources/contact_number.png create mode 100644 Resources/contact_number_over.png diff --git a/Classes/ChatRoomTableViewController.h b/Classes/ChatRoomTableViewController.h index 5256ce087..d118a363a 100644 --- a/Classes/ChatRoomTableViewController.h +++ b/Classes/ChatRoomTableViewController.h @@ -22,15 +22,10 @@ @interface ChatRoomTableViewController : UITableViewController { @private - BOOL editMode; NSArray *data; NSString *remoteContact; } @property (nonatomic, retain) NSString *remoteContact; -- (void) toggleEditMode; -- (void) enterEditMode; -- (void) exitEditMode; - @end diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index fa2250948..80f9a4ede 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -33,22 +33,14 @@ data = [[ChatModel listMessages:remoteContact] retain]; } -- (void) toggleEditMode { - editMode = !editMode; - [(UITableView*)[self view] reloadData]; + +#pragma mark - Property Functions + +- (void)setRemoteContact:(NSString *)aremoteContact { + self->remoteContact = aremoteContact; + [[self tableView] reloadData]; } -- (void) enterEditMode { - if(!editMode) { - [self toggleEditMode]; - } -} - -- (void) exitEditMode { - if(editMode) { - [self toggleEditMode]; - } -} #pragma mark - UITableViewDataSource Functions @@ -68,17 +60,13 @@ } [cell setChat:[data objectAtIndex:[indexPath row]]]; - if(editMode) - [cell enterEditMode]; - else - [cell exitEditMode]; [cell update]; return cell; } -#pragma mark - UITableViewelegate Functions +#pragma mark - UITableViewDelegate Functions - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { UIChatRoomHeader *headerController = [[UIChatRoomHeader alloc] init]; diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index d51977911..6be06c8e7 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -41,6 +41,7 @@ [tableController release]; [messageField release]; [sendButton release]; + [editButton release]; [super dealloc]; } @@ -83,7 +84,7 @@ name:@"LinphoneTextReceived" object:nil]; - [tableController exitEditMode]; + [[tableController tableView] setEditing:FALSE]; [editButton setOff]; [[tableController tableView] reloadData]; } @@ -179,7 +180,7 @@ } - (IBAction)onEditClick:(id)event { - [tableController toggleEditMode]; + [[tableController tableView] setEditing:![[tableController tableView] isEditing] animated:TRUE]; } - (IBAction)onSendClick:(id)event { diff --git a/Classes/ChatTableViewController.h b/Classes/ChatTableViewController.h index 9b5ca4c03..91965b7f6 100644 --- a/Classes/ChatTableViewController.h +++ b/Classes/ChatTableViewController.h @@ -21,12 +21,7 @@ @interface ChatTableViewController : UITableViewController { @private - BOOL editMode; NSArray *data; } -- (void) toggleEditMode; -- (void) enterEditMode; -- (void) exitEditMode; - @end diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index 287d881a1..769179480 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -28,13 +28,6 @@ #pragma mark - Lifecycle Functions -- (id)init { - if((self = [super init]) != nil) { - self->editMode = false; - } - return self; -} - - (void)dealloc { if(data != nil) [data release]; @@ -50,23 +43,6 @@ data = [[ChatModel listConversations] retain]; } -- (void) toggleEditMode { - editMode = !editMode; - [(UITableView*)[self view] reloadData]; -} - -- (void) enterEditMode { - if(!editMode) { - [self toggleEditMode]; - } -} - -- (void) exitEditMode { - if(editMode) { - [self toggleEditMode]; - } -} - #pragma mark - UITableViewDataSource Functions - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView @@ -88,10 +64,6 @@ } [cell setChat:[data objectAtIndex:[indexPath row]]]; - if(editMode) - [cell enterEditMode]; - else - [cell exitEditMode]; [cell update]; return cell; diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 3e5279bca..8a92ae4b6 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -57,7 +57,7 @@ name:@"LinphoneTextReceived" object:nil]; - [tableController exitEditMode]; + [[tableController tableView] setEditing:FALSE]; [editButton setOff]; [[tableController tableView] reloadData]; } @@ -99,7 +99,7 @@ } - (IBAction)onEditClick:(id)event { - [tableController toggleEditMode]; + [[tableController tableView] setEditing:![[tableController tableView] isEditing] animated:TRUE]; } @end diff --git a/Classes/LinphoneUI/UIPauseResumeButton.h b/Classes/ContactDetailsTableViewController.h similarity index 73% rename from Classes/LinphoneUI/UIPauseResumeButton.h rename to Classes/ContactDetailsTableViewController.h index fe5a80e30..955868e99 100644 --- a/Classes/LinphoneUI/UIPauseResumeButton.h +++ b/Classes/ContactDetailsTableViewController.h @@ -1,6 +1,6 @@ -/* UIMuteButton.h +/* ContactDetailsTableViewController.h * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,14 +15,18 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ + */ #import -#import "UIToggleButton.h" - - -@interface UIPauseResumeButton : UIToggleButton { +#import +@interface ContactDetailsTableViewController : UITableViewController { +@private + ABRecordRef contact; + NSMutableArray *dataCache; + ABAddressBookRef addressBook; } +@property (nonatomic, assign) ABRecordRef contact; + @end diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m new file mode 100644 index 000000000..d8f355650 --- /dev/null +++ b/Classes/ContactDetailsTableViewController.m @@ -0,0 +1,208 @@ +/* ContactDetailsTableViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "ContactDetailsTableViewController.h" +#import "UIContactDetailsHeader.h" +#import "PhoneMainView.h" + +@implementation ContactDetailsTableViewController + +@synthesize contact; + + +#pragma mark - Lifecycle Functions + +- (void)initContactDetailsTableViewController { + addressBook = ABAddressBookCreate(); + dataCache = [[NSMutableArray alloc] init]; +} + +- (id)init { + self = [super init]; + if (self) { + [self initContactDetailsTableViewController]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initContactDetailsTableViewController]; + } + return self; +} + +- (void)dealloc { + [dataCache dealloc]; + [super dealloc]; +} + + +#pragma mark - ViewController Functions + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + ABAddressBookRegisterExternalChangeCallback (addressBook, sync_toc_address_book, self); +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_toc_address_book, self); +} + + +#pragma mark - + +static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { + ContactDetailsTableViewController* controller = (ContactDetailsTableViewController*)context; + ABRecordID recordID = ABRecordGetRecordID([controller contact]); + ABRecordRef newRecord = ABAddressBookGetPersonWithRecordID(addressBook, recordID); + if(newRecord) { + [controller setContact:newRecord]; + } +} + +- (void)loadData { + [dataCache removeAllObjects]; + + if(contact == NULL) + return; + + // Phone numbers + { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); + NSMutableArray *subArray = [[NSMutableArray alloc] init]; + for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { + CFStringRef lValue = ABMultiValueCopyValueAtIndex(lMap, i); + CFStringRef lLabel = ABMultiValueCopyLabelAtIndex(lMap, i); + CFStringRef lLocalizedLabel = ABAddressBookCopyLocalizedLabel(lLabel); + [subArray addObject:[NSArray arrayWithObjects:[NSString stringWithString:(NSString*)lValue], [NSString stringWithString:(NSString*)lLocalizedLabel], nil]]; + if(lLocalizedLabel) + CFRelease(lLocalizedLabel); + CFRelease(lLabel); + CFRelease(lValue); + } + [dataCache addObject:subArray]; + CFRelease(lMap); + } + + // SIP (IM) + { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + NSMutableArray *subArray = [[NSMutableArray alloc] init]; + for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { + CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); + if(CFDictionaryContainsKey(lDict, @"service")) { + if(CFStringCompare((CFStringRef)@"SIP", CFDictionaryGetValue(lDict, @"service"), kCFCompareCaseInsensitive) == 0) { + CFStringRef lValue = CFDictionaryGetValue(lDict, @"username"); + CFStringRef lLabel = ABMultiValueCopyLabelAtIndex(lMap, i); + CFStringRef lLocalizedLabel = ABAddressBookCopyLocalizedLabel(lLabel); + [subArray addObject:[NSArray arrayWithObjects:[NSString stringWithString:(NSString*)lValue], [NSString stringWithString:(NSString*)lLocalizedLabel], nil]]; + if(lLocalizedLabel) + CFRelease(lLocalizedLabel); + CFRelease(lLabel); + + } + } + CFRelease(lDict); + } + [dataCache addObject:subArray]; + CFRelease(lMap); + } +} + + +#pragma mark - Property Functions + +- (void)setContact:(ABRecordRef)acontact { + self->contact = acontact; + [[self tableView] reloadData]; +} + + +#pragma mark - UITableViewDataSource Functions + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + [self loadData]; + return [dataCache count]; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + NSMutableDictionary *dict = [dataCache objectAtIndex:section]; + return [dict count]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ContactDetailsCell"]; + if (cell == nil) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"ContactDetailsCell"]; + //[cell setSelectedBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"list_hightlight.png"]]]; + } + NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; + NSArray *tuple = [sectionDict objectAtIndex:[indexPath row]]; + [cell.textLabel setText:[tuple objectAtIndex:1]]; + [cell.detailTextLabel setText:[tuple objectAtIndex:0]]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; + NSArray *tuple = [sectionDict objectAtIndex:[indexPath row]]; + + NSString *dest = [tuple objectAtIndex:0]; + if(![dest hasPrefix:@"sip:"]) + dest = [NSString stringWithFormat:@"sip:%@", [tuple objectAtIndex:0]]; + CFStringRef lDisplayName = ABRecordCopyCompositeName(contact); + NSString *displayName = [NSString stringWithString:(NSString*) lDisplayName]; + CFRelease(lDisplayName); + + // Go to dialer view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: dest, displayName, nil] autorelease] + , @"call:displayName:", + nil] autorelease]; + [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; +} + + +#pragma mark - UITableViewDelegate Functions + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + if(section == 0) { + UIContactDetailsHeader *headerController = [[UIContactDetailsHeader alloc] init]; + UIView *headerView = [headerController view]; + [headerController setContact:contact]; + [headerController update]; + [headerController release]; + return headerView; + } else { + return [[UIView alloc] initWithFrame:CGRectZero]; + } +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + if(section == 0) + return [UIContactDetailsHeader height]; + else { + return 0.000001f; // Hack UITableView = 0 + } +} + +@end diff --git a/Classes/ContactDetailsViewController.h b/Classes/ContactDetailsViewController.h new file mode 100644 index 000000000..bf50a77b3 --- /dev/null +++ b/Classes/ContactDetailsViewController.h @@ -0,0 +1,36 @@ +/* ContactDetailsViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import +#import + +#import "UICompositeViewController.h" +#import "ContactDetailsTableViewController.h" + +@interface ContactDetailsViewController : UIViewController { + ContactDetailsTableViewController *tableController; + ABRecordRef contact; +} + +@property (nonatomic, assign) ABRecordRef contact; +@property (nonatomic, retain) IBOutlet ContactDetailsTableViewController *tableController; + +- (IBAction)onBackClick:(id)event; + +@end diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m new file mode 100644 index 000000000..c025949a1 --- /dev/null +++ b/Classes/ContactDetailsViewController.m @@ -0,0 +1,70 @@ +/* ContactDetailsViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "ContactDetailsViewController.h" +#import "PhoneMainView.h" + +@implementation ContactDetailsViewController + +@synthesize tableController; +@synthesize contact; + +#pragma mark - Lifecycle Functions + +- (id)init { + return [super initWithNibName:@"ContactDetailsViewController" bundle:[NSBundle mainBundle]]; +} + +- (void)dealloc { + [tableController release]; + + [super dealloc]; +} + + +#pragma mark - Property Functions + + +- (void)setContact:(ABRecordRef)acontact { + self->contact = acontact; + [tableController setContact:contact]; +} + + +#pragma mark - UICompositeViewDelegate Functions + ++ (UICompositeViewDescription*) compositeViewDescription { + UICompositeViewDescription *description = [UICompositeViewDescription alloc]; + description->content = @"ContactDetailsViewController"; + description->tabBar = @"UIMainBar"; + description->tabBarEnabled = true; + description->stateBar = nil; + description->stateBarEnabled = false; + description->fullscreen = false; + return description; +} + + +#pragma mark - Action Functions + +- (IBAction)onBackClick:(id)event { + [[PhoneMainView instance] popView]; +} + +@end diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib new file mode 100644 index 000000000..91f6d8dd2 --- /dev/null +++ b/Classes/ContactDetailsViewController.xib @@ -0,0 +1,392 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUITableViewController + IBUIButton + IBUIImageView + IBUIView + IBUITableView + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 292 + {320, 460} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + numpad_background.png + + + + + 290 + + + + 292 + {160, 58} + + + + _NS:9 + NO + + Add contact + + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + contact_back_over.png + + + NSImage + contact_back_default.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{160, 0}, {160, 58}} + + + + _NS:9 + NO + + Add contact + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + contact_edit_over.png + + + NSImage + contact_edit_default.png + + + + + + {320, 58} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 306 + {{0, 59}, {320, 401}} + + + + _NS:9 + + 3 + MCAwAA + + YES + IBCocoaTouchFramework + YES + 1 + 2 + 0 + YES + 44 + 10 + 10 + + + {{0, 20}, {320, 460}} + + + + + 3 + MQA + + + + IBCocoaTouchFramework + + + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + + + + + view + + + + 3 + + + + tableController + + + + 27 + + + + onBackClick: + + + 7 + + 10 + + + + dataSource + + + + 28 + + + + delegate + + + + 29 + + + + view + + + + 26 + + + + + + 0 + + + + + + 1 + + + + + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + header + + + 8 + + + editButton + + + 9 + + + backButton + + + 11 + + + background + + + 19 + + + tableView + + + 20 + + + + tableController + + + + + ContactDetailsViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + ContactDetailsTableViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 29 + + + + + ContactDetailsTableViewController + UITableViewController + + IBProjectSource + ./Classes/ContactDetailsTableViewController.h + + + + ContactDetailsViewController + UIViewController + + onBackClick: + id + + + onBackClick: + + onBackClick: + id + + + + tableController + ContactDetailsTableViewController + + + tableController + + tableController + ContactDetailsTableViewController + + + + IBProjectSource + ./Classes/ContactDetailsViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {320, 117} + {320, 117} + {320, 117} + {320, 117} + {640, 523} + + 1181 + + diff --git a/Classes/ContactsTableViewController.h b/Classes/ContactsTableViewController.h index 696b0ef7e..7ae506cb8 100644 --- a/Classes/ContactsTableViewController.h +++ b/Classes/ContactsTableViewController.h @@ -26,6 +26,9 @@ OrderedDictionary* addressBookMap; ABAddressBookRef addressBook; + BOOL sipFilter; } +@property (nonatomic, assign) BOOL sipFilter; + @end diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index f67ce8f71..643fbb361 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -24,67 +24,129 @@ @implementation ContactsTableViewController -void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { - ContactsTableViewController* controller = (ContactsTableViewController*)context; - OrderedDictionary* lAddressBookMap = controller->addressBookMap; - @synchronized (lAddressBookMap) { - - // Reset Address book - - [lAddressBookMap removeAllObjects]; - - NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); - for (id lPerson in lContacts) { - CFStringRef lFirstName = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonFirstNameProperty); - CFStringRef lLocalizedFirstName = (lFirstName != nil)? ABAddressBookCopyLocalizedLabel(lFirstName): nil; - CFStringRef lLastName = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonLastNameProperty); - CFStringRef lLocalizedLastName = (lLastName != nil)? ABAddressBookCopyLocalizedLabel(lLastName): nil; - NSString *name = nil; - if(lLocalizedFirstName != nil && lLocalizedLastName != nil) { - name=[NSString stringWithFormat:@"%@%@", [(NSString *)lLocalizedFirstName retain], [(NSString *)lLocalizedLastName retain]]; - } else if(lLocalizedLastName != nil) { - name=[NSString stringWithFormat:@"%@",[(NSString *)lLocalizedLastName retain]]; - } else if(lLocalizedFirstName != nil) { - name=[NSString stringWithFormat:@"%@",[(NSString *)lLocalizedFirstName retain]]; - } - if(name != nil) { - // Put in correct subDic - NSString *firstChar = [[name substringToIndex:1] uppercaseString]; - OrderedDictionary *subDic =[lAddressBookMap objectForKey: firstChar]; - if(subDic == nil) { - subDic = [[OrderedDictionary alloc] init]; - [lAddressBookMap insertObject:subDic forKey:firstChar selector:@selector(caseInsensitiveCompare:)]; - } - [subDic insertObject:lPerson forKey:name selector:@selector(caseInsensitiveCompare:)]; - } - if(lLocalizedLastName != nil) - CFRelease(lLocalizedLastName); - if(lLastName != nil) - CFRelease(lLastName); - if(lLocalizedFirstName != nil) - CFRelease(lLocalizedFirstName); - if(lFirstName != nil) - CFRelease(lFirstName); - } - CFRelease(lContacts); +@synthesize sipFilter; + +#pragma mark - Lifecycle Functions + +- (void)initContactsTableViewController { + addressBookMap = [[OrderedDictionary alloc] init]; + addressBook = ABAddressBookCreate(); +} + +- (id)init { + self = [super init]; + if (self) { + [self initContactsTableViewController]; } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initContactsTableViewController]; + } + return self; +} + +- (void)dealloc { + [super dealloc]; + [addressBookMap removeAllObjects]; +} + + +#pragma mark - Property Functions + +- (void)setSipFilter:(BOOL)asipFilter { + self->sipFilter = asipFilter; + [[self tableView] reloadData]; +} + + +#pragma mark - + +static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { + ContactsTableViewController* controller = (ContactsTableViewController*)context; [(UITableView *)controller.view reloadData]; } #pragma mark - ViewController Functions -- (void) viewDidLoad { - addressBookMap = [[OrderedDictionary alloc] init]; - addressBook = ABAddressBookCreate(); +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; ABAddressBookRegisterExternalChangeCallback (addressBook, sync_toc_address_book, self); - sync_toc_address_book(addressBook, nil, self); +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_toc_address_book, self); } #pragma mark - UITableViewDataSource Functions +- (void)reloadData { + @synchronized (addressBookMap) { + + // Reset Address book + [addressBookMap removeAllObjects]; + + NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); + for (id lPerson in lContacts) { + BOOL add = true; + if(sipFilter) { + add = false; + ABMultiValueRef lMap = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonInstantMessageProperty); + for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { + CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); + if(CFDictionaryContainsKey(lDict, @"service")) { + if(CFStringCompare((CFStringRef)@"SIP", CFDictionaryGetValue(lDict, @"service"), kCFCompareCaseInsensitive) == 0) { + add = true; + } + } + CFRelease(lDict); + } + } + if(add) { + CFStringRef lFirstName = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonFirstNameProperty); + CFStringRef lLocalizedFirstName = (lFirstName != nil)? ABAddressBookCopyLocalizedLabel(lFirstName): nil; + CFStringRef lLastName = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonLastNameProperty); + CFStringRef lLocalizedLastName = (lLastName != nil)? ABAddressBookCopyLocalizedLabel(lLastName): nil; + NSString *name = nil; + if(lLocalizedFirstName != nil && lLocalizedLastName != nil) { + name=[NSString stringWithFormat:@"%@%@", [(NSString *)lLocalizedFirstName retain], [(NSString *)lLocalizedLastName retain]]; + } else if(lLocalizedLastName != nil) { + name=[NSString stringWithFormat:@"%@",[(NSString *)lLocalizedLastName retain]]; + } else if(lLocalizedFirstName != nil) { + name=[NSString stringWithFormat:@"%@",[(NSString *)lLocalizedFirstName retain]]; + } + if(name != nil) { + // Put in correct subDic + NSString *firstChar = [[name substringToIndex:1] uppercaseString]; + OrderedDictionary *subDic =[addressBookMap objectForKey: firstChar]; + if(subDic == nil) { + subDic = [[OrderedDictionary alloc] init]; + [addressBookMap insertObject:subDic forKey:firstChar selector:@selector(caseInsensitiveCompare:)]; + } + [subDic insertObject:lPerson forKey:name selector:@selector(caseInsensitiveCompare:)]; + } + if(lLocalizedLastName != nil) + CFRelease(lLocalizedLastName); + if(lLastName != nil) + CFRelease(lLastName); + if(lLocalizedFirstName != nil) + CFRelease(lLocalizedFirstName); + if(lFirstName != nil) + CFRelease(lFirstName); + } + } + CFRelease(lContacts); + } +} + - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + [self reloadData]; return [addressBookMap count]; } @@ -115,35 +177,13 @@ void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]]; - // TODO - ABMultiValueRef lPhoneNumbers = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonPhoneProperty); - for(CFIndex i = 0; i < ABMultiValueGetCount(lPhoneNumbers); i++) { - CFStringRef lLabel = ABMultiValueCopyLabelAtIndex(lPhoneNumbers, i); - if ([(NSString*)lLabel isEqualToString:(NSString*)kABPersonPhoneMainLabel]) { - CFStringRef lNumber = ABMultiValueCopyValueAtIndex(lPhoneNumbers,i); - NSString *number = [(NSString *)lNumber retain]; - - // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: number, nil] autorelease] - , @"setAddress:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; - - CFRelease(lNumber); - break; - } - CFRelease(lLabel); - } - CFRelease(lPhoneNumbers); -} - -#pragma mark - Lifecycle Functions - -- (void)dealloc { - [super dealloc]; - [addressBookMap removeAllObjects]; + // Go to Contact details view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: lPerson, nil] autorelease] + , @"setContact:", + nil] autorelease]; + [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; } @end diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 1bfd43ea6..add579a53 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -35,6 +35,7 @@ typedef enum _HistoryView { History_MAX } HistoryView; + #pragma mark - Lifecycle Functions - (id)init { @@ -70,7 +71,7 @@ typedef enum _HistoryView { - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [self.tableView reloadData]; + [self changeView:History_All]; } - (void)viewDidLoad { @@ -91,18 +92,22 @@ typedef enum _HistoryView { - (void)changeView: (HistoryView) view { if(view == History_All) { + + [tableController setSipFilter:FALSE]; allButton.selected = TRUE; } else { allButton.selected = FALSE; } if(view == History_Linphone) { + [tableController setSipFilter:TRUE]; linphoneButton.selected = TRUE; } else { linphoneButton.selected = FALSE; } } + #pragma mark - Action Functions - (IBAction)onAllClick: (id) event { diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index 8a90e2b63..2eedfca28 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -54,8 +54,10 @@ BOOL transferMode; } -- (void)setAddress:(NSString*) address; -- (void)setTransferMode:(NSNumber*) enable; +- (void)setAddress:(NSString*)address; +- (void)setTransferMode:(NSNumber*)enable; +- (void)call:(NSString*)address displayName:(NSString *)displayName; +- (void)call:(NSString*)address; @property (nonatomic, retain) IBOutlet UITextField* addressField; @property (nonatomic, retain) IBOutlet UIButton* addContactButton; diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index df5cf434e..2d3c3f250 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -193,6 +193,13 @@ [self callUpdate:call state:state]; } +- (void)call:(NSString*)address { + [self call:address displayName:nil]; +} + +- (void)call:(NSString*)address displayName:(NSString *)displayName { + [[LinphoneManager instance] call:address displayName:displayName transfer:transferMode]; +} #pragma mark - UITextFieldDelegate Functions diff --git a/Classes/HistoryTableViewController.h b/Classes/HistoryTableViewController.h index 09f55b9e7..9b2dc7aef 100644 --- a/Classes/HistoryTableViewController.h +++ b/Classes/HistoryTableViewController.h @@ -21,11 +21,10 @@ @interface HistoryTableViewController : UITableViewController { @private - BOOL editMode; + BOOL missedFilter; + NSMutableArray *callLogs; } -- (void) toggleEditMode; -- (void) enterEditMode; -- (void) exitEditMode; +@property (nonatomic, assign) BOOL missedFilter; @end diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index 99c18004e..15f4bba32 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -24,26 +24,70 @@ @implementation HistoryTableViewController +@synthesize missedFilter; #pragma mark - Lifecycle Functions +- (void)initHistoryTableViewController { + callLogs = [[NSMutableArray alloc] init]; + missedFilter = false; +} + - (id)init { - if((self = [super init]) != nil) { - self->editMode = false; + self = [super init]; + if (self) { + [self initHistoryTableViewController]; } return self; } +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initHistoryTableViewController]; + } + return self; +} + +- (void)dealloc { + [callLogs release]; + [super dealloc]; +} + + +#pragma mark - Property Functions + +- (void)setMissedFilter:(BOOL)amissedFilter { + self->missedFilter = amissedFilter; + [[self tableView] reloadData]; +} + #pragma mark - UITableViewDataSource Functions +- (void)loadData { + [callLogs removeAllObjects]; + const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); + while(logs != NULL) { + LinphoneCallLog* log = (LinphoneCallLog *) logs->data; + if(missedFilter) { + if (log->status == LinphoneCallMissed) { + [callLogs addObject:[NSValue valueWithPointer: log]]; + } + } else { + [callLogs addObject:[NSValue valueWithPointer: log]]; + } + logs = ms_list_next(logs); + } +} + - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); - return ms_list_size(logs); + [self loadData]; + return [callLogs count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { @@ -52,15 +96,8 @@ cell = [[UIHistoryCell alloc] initWithIdentifier:@"UIHistoryCell"]; } - const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); - LinphoneCallLog* callLogs = ms_list_nth_data(logs, indexPath.row); - - if(editMode) - [cell enterEditMode]; - else - [cell exitEditMode]; - - [cell setCallLog:callLogs]; + LinphoneCallLog *log = [[callLogs objectAtIndex:[indexPath row]] pointerValue]; + [cell setCallLog:log]; [cell update]; return cell; @@ -72,13 +109,12 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:NO]; - const MSList * logs = linphone_core_get_call_logs([LinphoneManager getLc]); - LinphoneCallLog* callLogs = ms_list_nth_data(logs, indexPath.row) ; + LinphoneCallLog *log = [[callLogs objectAtIndex:[indexPath row]] pointerValue]; LinphoneAddress* partyToCall; - if (callLogs->dir == LinphoneCallIncoming) { - partyToCall=callLogs->from; + if (log->dir == LinphoneCallIncoming) { + partyToCall=log->from; } else { - partyToCall=callLogs->to; + partyToCall=log->to; } const char* username = linphone_address_get_username(partyToCall)!=0?linphone_address_get_username(partyToCall):""; const char* displayName = linphone_address_get_display_name(partyToCall)!=0?linphone_address_get_display_name(partyToCall):""; @@ -99,8 +135,8 @@ // Go to dialer view NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: phoneNumber, nil] autorelease] - , @"setAddress:", + [[[NSArray alloc] initWithObjects: phoneNumber, dispName, nil] autorelease] + , @"call:displayName:", nil] autorelease]; [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; @@ -108,25 +144,5 @@ [dispName release]; } - -#pragma mark - - -- (void) toggleEditMode { - editMode = !editMode; - [(UITableView*)[self view] reloadData]; -} - -- (void) enterEditMode { - if(!editMode) { - [self toggleEditMode]; - } -} - -- (void) exitEditMode { - if(editMode) { - [self toggleEditMode]; - } -} - @end diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 6faf08aa8..f60c676ac 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -70,7 +70,8 @@ typedef enum _HistoryView { - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [tableController exitEditMode]; + [[tableController tableView] setEditing:FALSE]; + [self changeView: History_All]; [editButton setOff]; [self.tableView reloadData]; } @@ -98,12 +99,14 @@ typedef enum _HistoryView { - (void)changeView: (HistoryView) view { if(view == History_All) { allButton.selected = TRUE; + [tableController setMissedFilter:FALSE]; } else { allButton.selected = FALSE; } if(view == History_Missed) { missedButton.selected = TRUE; + [tableController setMissedFilter:TRUE]; } else { missedButton.selected = FALSE; } @@ -121,7 +124,7 @@ typedef enum _HistoryView { } - (IBAction)onEditClick:(id) event { - [tableController toggleEditMode]; + [[tableController tableView] setEditing:![[tableController tableView] isEditing] animated:TRUE]; } diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 7328d6df2..1b7a54a21 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -57,6 +57,7 @@ typedef struct _LinphoneCallAppData { @interface LinphoneManager : NSObject { @protected SCNetworkReachabilityRef proxyReachability; + @private NSTimer* mIterateTimer; id mLogView; @@ -82,6 +83,9 @@ typedef struct _LinphoneCallAppData { + (NSString *)getPreferenceForCodec: (const char*) name withRate: (int) rate; + (BOOL)codecIsSupported:(NSString *) prefName; + +- (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer; + - (void)startLibLinphone; - (BOOL)isNotIphone3G; - (void)destroyLibLinphone; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 3bac80534..b7396a70c 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -25,6 +25,7 @@ #import #import #import +#import #import "LinphoneManager.h" #import "FastAddressBook.h" @@ -363,6 +364,7 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo [chat setRemoteContact:[NSString stringWithUTF8String:linphone_address_get_username(from)]]; [chat setMessage:[NSString stringWithUTF8String:message]]; [chat setDirection:[NSNumber numberWithInt:1]]; + [chat setTime:[NSDate date]]; [chat create]; // Post event @@ -820,4 +822,74 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach return NO; } + +- (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer { + if (!linphone_core_is_network_reachabled(theLinphoneCore)) { + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Network Error",nil) + message:NSLocalizedString(@"There is no network connection available, enable WIFI or WWAN prior to place a call",nil) + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; + return; + } + + CTCallCenter* ct = [[CTCallCenter alloc] init]; + if ([ct.currentCalls count] > 0) { + ms_error("GSM call in progress, cancelling outgoing SIP call request"); + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Cannot make call",nil) + message:NSLocalizedString(@"Please terminate GSM call",nil) + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; + [ct release]; + return; + } + [ct release]; + + LinphoneProxyConfig* proxyCfg; + //get default proxy + linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); + LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters([LinphoneManager getLc]); + + if ([address length] == 0) return; //just return + if ([address hasPrefix:@"sip:"]) { + LinphoneAddress* linphoneAddress = linphone_address_new([address cStringUsingEncoding:[NSString defaultCStringEncoding]]); + if(displayName!=nil) { + linphone_address_set_display_name(linphoneAddress,[displayName cStringUsingEncoding:[NSString defaultCStringEncoding]]); + } + if(transfer) { + linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), [address cStringUsingEncoding:[NSString defaultCStringEncoding]]); + } else { + linphone_core_invite_address_with_params([LinphoneManager getLc], linphoneAddress, lcallParams); + } + linphone_address_destroy(linphoneAddress); + } else if ( proxyCfg==nil){ + UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid sip address",nil) + message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to place a call or use a valid sip address (I.E sip:john@example.net)",nil) + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil]; + [error show]; + [error release]; + } else { + char normalizedUserName[256]; + LinphoneAddress* linphoneAddress = linphone_address_new(linphone_core_get_identity([LinphoneManager getLc])); + linphone_proxy_config_normalize_number(proxyCfg,[address cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); + linphone_address_set_username(linphoneAddress, normalizedUserName); + if(displayName!=nil) { + linphone_address_set_display_name(linphoneAddress,[displayName cStringUsingEncoding:[NSString defaultCStringEncoding]]); + } + if(transfer) { + linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), normalizedUserName); + } else { + linphone_core_invite_address_with_params([LinphoneManager getLc], linphoneAddress,lcallParams); + } + } + linphone_call_params_destroy(lcallParams); +} + @end diff --git a/Classes/LinphoneUI/UICallButton.m b/Classes/LinphoneUI/UICallButton.m index 12d647da7..b34ff5e1b 100644 --- a/Classes/LinphoneUI/UICallButton.m +++ b/Classes/LinphoneUI/UICallButton.m @@ -62,71 +62,11 @@ [super dealloc]; } + #pragma mark - --(void) touchUp:(id) sender { - if (!linphone_core_is_network_reachabled([LinphoneManager getLc])) { - UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Network Error",nil) - message:NSLocalizedString(@"There is no network connection available, enable WIFI or WWAN prior to place a call",nil) - delegate:nil - cancelButtonTitle:NSLocalizedString(@"Continue",nil) - otherButtonTitles:nil]; - [error show]; - [error release]; - return; - } - - CTCallCenter* ct = [[CTCallCenter alloc] init]; - if ([ct.currentCalls count] > 0) { - ms_error("GSM call in progress, cancelling outgoing SIP call request"); - UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Cannot make call",nil) - message:NSLocalizedString(@"Please terminate GSM call",nil) - delegate:nil - cancelButtonTitle:NSLocalizedString(@"Continue",nil) - otherButtonTitles:nil]; - [error show]; - [error release]; - [ct release]; - return; - } - [ct release]; - - if (TRUE /*!linphone_core_in_call([LinphoneManager getLc])*/) { - LinphoneProxyConfig* proxyCfg; - //get default proxy - linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); - LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters([LinphoneManager getLc]); - - if ([addressField.text length] == 0) return; //just return - if ([addressField.text hasPrefix:@"sip:"]) { - linphone_core_invite_with_params([LinphoneManager getLc],[addressField.text cStringUsingEncoding:[NSString defaultCStringEncoding]],lcallParams); - } else if ( proxyCfg==nil){ - UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid sip address",nil) - message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to place a call or use a valid sip address (I.E sip:john@example.net)",nil) - delegate:nil - cancelButtonTitle:NSLocalizedString(@"Continue",nil) - otherButtonTitles:nil]; - [error show]; - [error release]; - } else { - char normalizedUserName[256]; - NSString* toUserName = [NSString stringWithString:[addressField text]]; - NSString* lDisplayName = [[LinphoneManager instance] getDisplayNameFromAddressBook:toUserName andUpdateCallLog:nil]; - - linphone_proxy_config_normalize_number(proxyCfg,[toUserName cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); - LinphoneAddress* tmpAddress = linphone_address_new(linphone_core_get_identity([LinphoneManager getLc])); - linphone_address_set_username(tmpAddress,normalizedUserName); - linphone_address_set_display_name(tmpAddress,(lDisplayName)?[lDisplayName cStringUsingEncoding:[NSString defaultCStringEncoding]]:nil); - - - linphone_core_invite_address_with_params([LinphoneManager getLc],tmpAddress,lcallParams) ; - - linphone_address_destroy(tmpAddress); - } - linphone_call_params_destroy(lcallParams); - } else if (linphone_core_inc_invite_pending([LinphoneManager getLc])) { - linphone_core_accept_call([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); - } +- (void)touchUp:(id) sender { + [[LinphoneManager instance] call:[addressField text] displayName:nil transfer:FALSE]; } @end diff --git a/Classes/LinphoneUI/UIChatCell.h b/Classes/LinphoneUI/UIChatCell.h index 9fdb9f7af..d66e7bfad 100644 --- a/Classes/LinphoneUI/UIChatCell.h +++ b/Classes/LinphoneUI/UIChatCell.h @@ -40,8 +40,6 @@ - (id)initWithIdentifier:(NSString*)identifier; - (void)update; -- (void)enterEditMode; -- (void)exitEditMode; - (IBAction)onDetailsClick:(id)event; - (IBAction)onDeleteClick:(id)event; diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index aa1969582..5b97b2738 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -91,14 +91,25 @@ [chatContentLabel setFrame: chatContentFrame]; } -- (void)enterEditMode { - [deleteButton setHidden:false]; - [detailsButton setHidden:true]; +- (void)setEditing:(BOOL)editing { + [self setEditing:editing animated:FALSE]; } -- (void)exitEditMode { - [detailsButton setHidden:false]; - [deleteButton setHidden:true]; +- (void)setEditing:(BOOL)editing animated:(BOOL)animated { + if(animated) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:0.3]; + } + if(editing) { + [deleteButton setAlpha:1.0f]; + [detailsButton setAlpha:0.0f]; + } else { + [detailsButton setAlpha:1.0f]; + [deleteButton setAlpha:0.0f]; + } + if(animated) { + [UIView commitAnimations]; + } } #pragma mark - Action Functions diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib index f8738e424..9d6d04987 100644 --- a/Classes/LinphoneUI/UIChatCell.xib +++ b/Classes/LinphoneUI/UIChatCell.xib @@ -127,7 +127,6 @@ {{276, 0}, {44, 44}} - _NS:9 NO IBCocoaTouchFramework @@ -162,7 +161,7 @@ - -2147483356 + 292 {{276, 0}, {44, 44}} @@ -206,7 +205,6 @@ {320, 44} - _NS:9 NO IBCocoaTouchFramework @@ -221,7 +219,6 @@ {320, 44} - _NS:9 NO @@ -409,17 +406,20 @@ UIChatCell UITableViewCell - - onDetailsClick: - id - - - onDetailsClick: - + + id + id + + + + onDeleteClick: + id + + onDetailsClick: id - + UIImageView UILabel diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h index abc320f0f..113bf0bd1 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.h +++ b/Classes/LinphoneUI/UIChatRoomCell.h @@ -41,9 +41,6 @@ - (void)update; -- (void)enterEditMode; -- (void)exitEditMode; - - (IBAction)onDeleteClick:(id)event; @end diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index 5f77fc7a8..0ee530fbd 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -61,6 +61,40 @@ static UIFont *CELL_FONT = nil; #pragma mark - - (void)update { + if(chat != nil) { + [messageLabel setText:[chat message]]; + } +} + +- (void)setEditing:(BOOL)editing { + [self setEditing:editing animated:FALSE]; +} + +- (void)setEditing:(BOOL)editing animated:(BOOL)animated { + if(animated) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:0.3]; + } + if(editing) { + [deleteButton setAlpha:1.0f]; + } else { + [deleteButton setAlpha:0.0f]; + } + if(animated) { + [UIView commitAnimations]; + } +} + +- (void)resizeContent { + // Resize content + { + CGRect frame = [contentView frame]; + frame.origin.x = 0.0f; + frame.origin.y = 0.0f; + frame.size = [self frame].size; + [ contentView setFrame:frame]; + } + if(chat != nil) { if([chat direction]) { [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size @@ -69,11 +103,14 @@ static UIFont *CELL_FONT = nil; [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size forNinePatchNamed:@"chat_bubble_outgoing"]]; } - [messageLabel setText:[chat message]]; } - CGRect frame = [messageLabel frame]; - frame.size.height = [UIChatRoomCell messageHeight:[chat message]]; - [messageLabel setFrame:frame]; + + // Resize message + { + CGRect frame = [messageLabel frame]; + frame.size.height = [UIChatRoomCell messageHeight:[chat message]]; + [messageLabel setFrame:frame]; + } } + (CGFloat)messageHeight:(NSString*)message { @@ -94,21 +131,12 @@ static UIFont *CELL_FONT = nil; return height; } -- (void)enterEditMode { - [deleteButton setHidden:false]; -} - -- (void)exitEditMode { - [deleteButton setHidden:true]; -} #pragma mark - View Functions - (void)layoutSubviews { - // Resize content - CGRect frame = [contentView frame]; - frame.size = [self frame].size; - [contentView setFrame:frame]; + [super layoutSubviews]; + [self resizeContent]; } diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib index 57cdb4968..5cc6c4476 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.xib +++ b/Classes/LinphoneUI/UIChatRoomCell.xib @@ -91,7 +91,7 @@ - -2147483351 + 297 {{236, 28}, {44, 44}} diff --git a/Classes/LinphoneUI/UIChatRoomHeader.xib b/Classes/LinphoneUI/UIChatRoomHeader.xib index 937c1726d..c8bdedf3d 100644 --- a/Classes/LinphoneUI/UIChatRoomHeader.xib +++ b/Classes/LinphoneUI/UIChatRoomHeader.xib @@ -39,7 +39,7 @@ 292 - {{-13, -1}, {131, 107}} + {{-13, -5}, {131, 107}} @@ -54,7 +54,7 @@ 274 - {{20, 10}, {65, 65}} + {{20, 6}, {65, 65}} @@ -69,7 +69,7 @@ 292 - {{101, 31}, {199, 43}} + {{101, 27}, {199, 43}} _NS:9 @@ -159,8 +159,8 @@ 4 - + diff --git a/Classes/LinphoneUI/UIConferenceHeader.xib b/Classes/LinphoneUI/UIConferenceHeader.xib index 6839db24a..f88d15e85 100644 --- a/Classes/LinphoneUI/UIConferenceHeader.xib +++ b/Classes/LinphoneUI/UIConferenceHeader.xib @@ -48,7 +48,7 @@ IBCocoaTouchFramework NSImage - champ-titre-conference.png + header_conference.png @@ -57,6 +57,7 @@ {{224, 14}, {25, 25}} + _NS:9 NO IBCocoaTouchFramework @@ -267,7 +268,7 @@ YES 3 - {640, 135} + {640, 135} {43, 50} {43, 46} {43, 46} diff --git a/Classes/LinphoneUI/UIContactCell.h b/Classes/LinphoneUI/UIContactCell.h index d7376d0ad..3032d6f1b 100644 --- a/Classes/LinphoneUI/UIContactCell.h +++ b/Classes/LinphoneUI/UIContactCell.h @@ -23,10 +23,12 @@ @interface UIContactCell : UITableViewCell { UILabel *firstNameLabel; UILabel *lastNameLabel; + UIImageView *avatarImage; } @property (nonatomic, retain) IBOutlet UILabel* firstNameLabel; @property (nonatomic, retain) IBOutlet UILabel* lastNameLabel; +@property (nonatomic, retain) IBOutlet UIImageView *avatarImage; - (void)update:(ABRecordRef) record; diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index c5ebbf8dd..5f25f29fd 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -23,6 +23,7 @@ @synthesize firstNameLabel; @synthesize lastNameLabel; +@synthesize avatarImage; #pragma mark - Lifecycle Functions @@ -43,6 +44,7 @@ - (void) dealloc { [firstNameLabel release]; [lastNameLabel release]; + [avatarImage release]; [super dealloc]; } @@ -65,12 +67,12 @@ CFStringRef lLocalizedLastName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lLastName):nil; if(lLocalizedFirstName != nil) - [firstNameLabel setText: [(NSString *)lLocalizedFirstName retain]]; + [firstNameLabel setText: (NSString *)lLocalizedFirstName]; else [firstNameLabel setText: @""]; if(lLocalizedLastName != nil) - [lastNameLabel setText: [(NSString *)lLocalizedLastName retain]]; + [lastNameLabel setText: (NSString *)lLocalizedLastName]; else [lastNameLabel setText: @""]; @@ -83,6 +85,17 @@ if(lFirstName != nil) CFRelease(lFirstName); + NSData *imgData = (NSData *)ABPersonCopyImageDataWithFormat(record, kABPersonImageFormatThumbnail); + if(imgData != NULL) { + UIImage *img = [[UIImage alloc] initWithData:imgData]; + [avatarImage setImage:img]; + [img release]; + } else { + [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; + } + + + // // Adapt size // diff --git a/Classes/LinphoneUI/UIContactCell.xib b/Classes/LinphoneUI/UIContactCell.xib index 0b24a4a60..bfa83f78e 100644 --- a/Classes/LinphoneUI/UIContactCell.xib +++ b/Classes/LinphoneUI/UIContactCell.xib @@ -36,10 +36,21 @@ 292 + + + 292 + {{6, 6}, {32, 32}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 274 - {{10, 0}, {55, 44}} + {{46, 0}, {55, 44}} @@ -75,7 +86,7 @@ 274 - {{75, 0}, {200, 44}} + {{111, 0}, {200, 44}} _NS:328 @@ -108,6 +119,7 @@ {320, 44} + _NS:9 3 @@ -175,6 +187,14 @@ 22 + + + avatarImage + + + + 24 + @@ -199,8 +219,9 @@ 16 - + + @@ -228,6 +249,12 @@ background + + 23 + + + avatarImage + @@ -239,13 +266,14 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 22 + 24 @@ -253,10 +281,15 @@ UIContactCell UITableViewCell + UIImageView UILabel UILabel + + avatarImage + UIImageView + firstNameLabel UILabel diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.h b/Classes/LinphoneUI/UIContactDetailsHeader.h new file mode 100644 index 000000000..5cc437676 --- /dev/null +++ b/Classes/LinphoneUI/UIContactDetailsHeader.h @@ -0,0 +1,39 @@ +/* UIContactDetailsHeader.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import +#import + +@interface UIContactDetailsHeader : UIViewController { + UILabel *contactLabel; + UIImageView *avatarImage; + + ABRecordRef contact; +} + +@property (assign) ABRecordRef contact; + +@property (nonatomic, retain) IBOutlet UILabel *contactLabel; +@property (nonatomic, retain) IBOutlet UIImageView *avatarImage; + ++ (CGFloat)height; + +- (void)update; + +@end diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m new file mode 100644 index 000000000..75f61c6d4 --- /dev/null +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -0,0 +1,81 @@ +/* UIContactDetailsHeader.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIContactDetailsHeader.h" + +@implementation UIContactDetailsHeader + +@synthesize avatarImage; +@synthesize contactLabel; +@synthesize contact; + + +#pragma mark - Lifecycle Functions + +- (id)init { + return [super initWithNibName:@"UIContactDetailsHeader" bundle:[NSBundle mainBundle]]; +} + +- (void)dealloc { + [avatarImage release]; + [contactLabel release]; + [super dealloc]; +} + + +#pragma mark - + +- (void)update { + if(contact) { + // Avatar image + { + NSData *imgData = (NSData *)ABPersonCopyImageDataWithFormat(contact, kABPersonImageFormatThumbnail); + if(imgData != NULL) { + UIImage *img = [[UIImage alloc] initWithData:imgData]; + [avatarImage setImage:img]; + [img release]; + } else { + [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; + } + } + + // Contact label + { + CFStringRef lFirstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty); + CFStringRef lLocalizedFirstName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lFirstName):nil; + CFStringRef lLastName = ABRecordCopyValue(contact, kABPersonLastNameProperty); + CFStringRef lLocalizedLastName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lLastName):nil; + [contactLabel setText:[NSString stringWithFormat:@"%@ %@", (NSString*)lLocalizedFirstName, (NSString*)lLocalizedLastName]]; + if(lLocalizedLastName != nil) + CFRelease(lLocalizedLastName); + if(lLastName != nil) + CFRelease(lLastName); + if(lLocalizedFirstName != nil) + CFRelease(lLocalizedFirstName); + if(lFirstName != nil) + CFRelease(lFirstName); + } + } +} + ++ (CGFloat)height { + return 80.0f; +} + +@end diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.xib b/Classes/LinphoneUI/UIContactDetailsHeader.xib new file mode 100644 index 000000000..978e7d5ed --- /dev/null +++ b/Classes/LinphoneUI/UIContactDetailsHeader.xib @@ -0,0 +1,244 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIImageView + IBUIView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 292 + + + + 292 + {{-13, -5}, {131, 107}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + avatar_shadow_small.png + + + + + 274 + {{20, 6}, {65, 65}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + avatar_unknown_small.png + + + + + 292 + {{101, 27}, {199, 43}} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Contact1 + + 3 + MC4zMzMzMzMzMzMzAA + + + 0 + 10 + + 1 + 22 + + + Helvetica + 22 + 16 + + + + {320, 80} + + + + _NS:9 + + 3 + MCAwAA + + IBCocoaTouchFramework + + + + + + + view + + + + 5 + + + + avatarImage + + + + 9 + + + + contactLabel + + + + 11 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + + + 6 + + + avatarImage + + + 7 + + + avatarShadowBackground + + + 8 + + + contactLabel + + + + + UIContactDetailsHeader + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 11 + + + + + UIContactDetailsHeader + UIViewController + + UIImageView + UILabel + + + + avatarImage + UIImageView + + + contactLabel + UILabel + + + + IBProjectSource + ./Classes/UIContactDetailsHeader.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {262, 214} + {131, 131} + + 1181 + + diff --git a/Classes/LinphoneUI/UIHistoryCell.h b/Classes/LinphoneUI/UIHistoryCell.h index 59e4b8ea9..d42efde08 100644 --- a/Classes/LinphoneUI/UIHistoryCell.h +++ b/Classes/LinphoneUI/UIHistoryCell.h @@ -43,7 +43,5 @@ - (IBAction)onDelete:(id) event; - (void)update; -- (void)enterEditMode; -- (void)exitEditMode; @end diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 3ca3d5592..378f145fa 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -93,25 +93,35 @@ partyToDisplay = callLog->to; } - const char* username = linphone_address_get_username(partyToDisplay)!=0?linphone_address_get_username(partyToDisplay):""; - //const char* displayName = linphone_address_get_display_name(partyToDisplay); - + const char* username = (linphone_address_get_display_name(partyToDisplay) != 0)? linphone_address_get_display_name(partyToDisplay):linphone_address_get_username(partyToDisplay); + [displayNameLabel setText:[NSString stringWithUTF8String: username]]; [imageView setImage: image]; } -- (void)enterEditMode { - [deleteButton setHidden:false]; - [detailsButton setHidden:true]; +- (void)setEditing:(BOOL)editing { + [self setEditing:editing animated:FALSE]; } -- (void)exitEditMode { +- (void)setEditing:(BOOL)editing animated:(BOOL)animated { + if(animated) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:0.3]; + } + if(editing) { + [deleteButton setAlpha:1.0f]; + [detailsButton setAlpha:0.0f]; + } else { #ifdef DETAILS_DISABLED - [detailsButton setHidden:true]; + [detailsButton setAlpha:0.0f]; #else - [detailsButton setHidden:false]; + [detailsButtonsetAlpha:1.0f]; #endif - [deleteButton setHidden:true]; + [deleteButton setAlpha:0.0f]; + } + if(animated) { + [UIView commitAnimations]; + } } @end diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index bba065224..d921b21d4 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -125,7 +125,7 @@ - -2147483356 + 292 {{276, 0}, {44, 44}} diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index f49ba5535..8c498efd1 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -86,7 +86,7 @@ } else { historyButton.selected = FALSE; } - if(view == PhoneView_Contacts) { + if(view == PhoneView_Contacts || view == PhoneView_ContactDetails) { contactsButton.selected = TRUE; } else { contactsButton.selected = FALSE; @@ -101,7 +101,7 @@ } else { settingsButton.selected = FALSE; } - if(view == PhoneView_Chat) { + if(view == PhoneView_Chat || view == PhoneView_ChatRoom) { chatButton.selected = TRUE; } else { chatButton.selected = FALSE; diff --git a/Classes/LinphoneUI/UIPauseResumeButton.m b/Classes/LinphoneUI/UIPauseResumeButton.m deleted file mode 100644 index 22f7db8b3..000000000 --- a/Classes/LinphoneUI/UIPauseResumeButton.m +++ /dev/null @@ -1,69 +0,0 @@ -/* UIMuteButton.m - * - * Copyright (C) 2011 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ -#import "UIPauseResumeButton.h" -#include "LinphoneManager.h" - - -@implementation UIPauseResumeButton - - - --(void) onOn { - LinphoneCall* c = linphone_core_get_current_call([LinphoneManager getLc]); - if (c) { - linphone_core_pause_call([LinphoneManager getLc], c); - } -} --(void) onOff { - const MSList* c = linphone_core_get_calls([LinphoneManager getLc]); - if (c) { - linphone_core_resume_call([LinphoneManager getLc], (LinphoneCall*) c->data); - } -} --(bool) isInitialStateOn { - @try { - LinphoneCall* c = linphone_core_get_current_call([LinphoneManager getLc]); - - if (c) { - return linphone_call_get_state(c) == LinphoneCallPaused; - } else { - /* if current call is paused -> c == null */ - return true; - } - } @catch(NSException* e) { - //not ready yet - return false; - } - -} - -/* -// Only override drawRect: if you perform custom drawing. -// An empty implementation adversely affects performance during animation. -- (void)drawRect:(CGRect)rect { - // Drawing code. -} -*/ - -- (void)dealloc { - [super dealloc]; -} - - -@end diff --git a/Classes/LinphoneUI/UITransferButton.m b/Classes/LinphoneUI/UITransferButton.m index 6a105db9b..564e14a4f 100644 --- a/Classes/LinphoneUI/UITransferButton.m +++ b/Classes/LinphoneUI/UITransferButton.m @@ -61,71 +61,11 @@ [super dealloc]; } + #pragma mark - --(void) touchUp:(id) sender { - if (!linphone_core_is_network_reachabled([LinphoneManager getLc])) { - UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Network Error",nil) - message:NSLocalizedString(@"There is no network connection available, enable WIFI or WWAN prior to place a call",nil) - delegate:nil - cancelButtonTitle:NSLocalizedString(@"Continue",nil) - otherButtonTitles:nil]; - [error show]; - [error release]; - return; - } - - CTCallCenter* ct = [[CTCallCenter alloc] init]; - if ([ct.currentCalls count] > 0) { - ms_error("GSM call in progress, cancelling outgoing SIP call request"); - UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Cannot make call",nil) - message:NSLocalizedString(@"Please terminate GSM call",nil) - delegate:nil - cancelButtonTitle:NSLocalizedString(@"Continue",nil) - otherButtonTitles:nil]; - [error show]; - [error release]; - [ct release]; - return; - } - [ct release]; - - if (TRUE /*!linphone_core_in_call([LinphoneManager getLc])*/) { - LinphoneProxyConfig* proxyCfg; - //get default proxy - linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); - LinphoneCallParams* lcallParams = linphone_core_create_default_call_parameters([LinphoneManager getLc]); - - if ([addressField.text length] == 0) return; //just return - if ([addressField.text hasPrefix:@"sip:"]) { - linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), [addressField.text cStringUsingEncoding:[NSString defaultCStringEncoding]]); - } else if ( proxyCfg==nil){ - UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid sip address",nil) - message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to place a call or use a valid sip address (I.E sip:john@example.net)",nil) - delegate:nil - cancelButtonTitle:NSLocalizedString(@"Continue",nil) - otherButtonTitles:nil]; - [error show]; - [error release]; - } else { - char normalizedUserName[256]; - NSString* toUserName = [NSString stringWithString:[addressField text]]; - NSString* lDisplayName = [[LinphoneManager instance] getDisplayNameFromAddressBook:toUserName andUpdateCallLog:nil]; - - linphone_proxy_config_normalize_number(proxyCfg,[toUserName cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); - LinphoneAddress* tmpAddress = linphone_address_new(linphone_core_get_identity([LinphoneManager getLc])); - linphone_address_set_username(tmpAddress,normalizedUserName); - linphone_address_set_display_name(tmpAddress,(lDisplayName)?[lDisplayName cStringUsingEncoding:[NSString defaultCStringEncoding]]:nil); - - - linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), normalizedUserName); - - linphone_address_destroy(tmpAddress); - } - linphone_call_params_destroy(lcallParams); - } else if (linphone_core_inc_invite_pending([LinphoneManager getLc])) { - linphone_core_accept_call([LinphoneManager getLc],linphone_core_get_current_call([LinphoneManager getLc])); - } +- (void)touchUp:(id) sender { + [[LinphoneManager instance] call:[addressField text] displayName:nil transfer:TRUE]; } @end diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m index bf81c131b..45e553b30 100644 --- a/Classes/Model/ChatModel.m +++ b/Classes/Model/ChatModel.m @@ -199,7 +199,7 @@ return [[[NSArray alloc] init] autorelease]; } - const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time FROM chat WHERE remoteContact=\"%@\" ORDER BY time ASC", + const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time FROM chat WHERE remoteContact=\"%@\" ORDER BY time DESC", contact] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 3bb0af14d..fab26455c 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -33,6 +33,7 @@ typedef enum _PhoneView { PhoneView_Chat, PhoneView_ChatRoom, PhoneView_Contacts, + PhoneView_ContactDetails, PhoneView_InCall, PhoneView_IncomingCall, PhoneView_END diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 7b2cc2ef4..a74aea4df 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -33,6 +33,7 @@ #import "SettingsViewController.h" #import "FirstLoginViewController.h" #import "WizardViewController.h" +#import "ContactDetailsViewController.h" #import "AbstractCall.h" @@ -118,6 +119,7 @@ static PhoneMainView* phoneMainViewInstance=nil; [viewDescriptions setObject:[SettingsViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Settings]]; [viewDescriptions setObject:[FirstLoginViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_FirstLogin]]; [viewDescriptions setObject:[WizardViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Wizard]]; + [viewDescriptions setObject:[ContactDetailsViewController compositeViewDescription] forKey:[NSNumber numberWithInt:PhoneView_ContactDetails]]; } - (void)viewWillAppear:(BOOL)animated { diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index 5cf73de15..cef482195 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -24,13 +24,13 @@ @synthesize addressBook; - -(Contact*) getMatchingRecord:(NSString*) number { +- (Contact*)getMatchingRecord:(NSString*) number { @synchronized (mAddressBookMap){ return (Contact*) [mAddressBookMap objectForKey:number]; } } -+(NSString*) appendCountryCodeIfPossible:(NSString*) number { ++ (NSString*)appendCountryCodeIfPossible:(NSString*) number { if (![number hasPrefix:@"+"] && ![number hasPrefix:@"00"]) { NSString* lCountryCode = [[LinphoneManager instance].settingsStore objectForKey:@"countrycode_preference"]; if (lCountryCode && [lCountryCode length]>0) { @@ -40,7 +40,8 @@ } return number; } -+(NSString*) normalizePhoneNumber:(NSString*) number { + ++ (NSString*)normalizePhoneNumber:(NSString*) number { NSString* lNormalizedNumber = [(NSString*)number stringByReplacingOccurrencesOfString:@" " withString:@""]; lNormalizedNumber = [lNormalizedNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; lNormalizedNumber = [lNormalizedNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; @@ -48,6 +49,7 @@ lNormalizedNumber = [FastAddressBook appendCountryCodeIfPossible:lNormalizedNumber]; return lNormalizedNumber; } + void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { NSMutableDictionary* lAddressBookMap = (NSMutableDictionary*)context; @synchronized (lAddressBookMap) { @@ -73,31 +75,40 @@ void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void CFRelease(lContacts); } } --(FastAddressBook*) init { + +- (FastAddressBook*)init { if ((self = [super init])) { mAddressBookMap = [[NSMutableDictionary alloc] init]; addressBook = ABAddressBookCreate(); - ABAddressBookRegisterExternalChangeCallback (addressBook,sync_address_book,mAddressBookMap); + ABAddressBookRegisterExternalChangeCallback (addressBook, sync_address_book, mAddressBookMap); sync_address_book(addressBook,nil,mAddressBookMap); } return self; } +- (void)dealloc { + ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, mAddressBookMap); + + [super dealloc]; +} + @end @implementation Contact @synthesize record; @synthesize numberType; --(id) initWithRecord:(ABRecordRef) aRecord ofType:(NSString*) type { +- (id)initWithRecord:(ABRecordRef) aRecord ofType:(NSString*) type { if ((self = [super init])) { record=CFRetain(aRecord); numberType= [type?type:@"unknown" retain]; } return self; } + - (void)dealloc { CFRelease(record); [numberType release]; [super dealloc]; } + @end diff --git a/Resources/cancel_default.png b/Resources/cancel_default.png deleted file mode 100644 index 069a5185d23cfc2f913e510438e6aea455c5c0bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4152 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 diff --git a/Resources/contact_back_default.png b/Resources/contact_back_default.png new file mode 100644 index 0000000000000000000000000000000000000000..3c90a7bb6868b1f7bca3bd8ab9118f83e2d33e52 GIT binary patch literal 4647 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 literal 0 HcmV?d00001 diff --git a/Resources/contact_edit_default.png b/Resources/contact_edit_default.png new file mode 100644 index 0000000000000000000000000000000000000000..428ce5df8eeb1c40d98fd1dbfeab9fa265e49e96 GIT binary patch literal 4596 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 b+8ZZ>XXl#=UO&z|e23B3G0`s4atQl3jMW$I literal 0 HcmV?d00001 diff --git a/Resources/contact_edit_over.png b/Resources/contact_edit_over.png new file mode 100644 index 0000000000000000000000000000000000000000..62c0a4c34508a136cd65a41651ef8f20ddcd9f70 GIT binary patch literal 4284 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 xC%L9;4qx#DNN9jd+v1!r^ouIvg5% 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index f30b4deb9..bd29d5d5e 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -153,6 +153,18 @@ 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; + D3128FE115AABC7E00A2147A /* ContactDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */; }; + D3128FE215AABC7E00A2147A /* ContactDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */; }; + D3128FE315AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */; }; + D3128FE415AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */; }; + D3128FEF15AABE4E00A2147A /* contact_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE715AABE4E00A2147A /* contact_back_default.png */; }; + D3128FF015AABE4E00A2147A /* contact_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE715AABE4E00A2147A /* contact_back_default.png */; }; + D3128FF115AABE4E00A2147A /* contact_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE815AABE4E00A2147A /* contact_back_over.png */; }; + D3128FF215AABE4E00A2147A /* contact_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE815AABE4E00A2147A /* contact_back_over.png */; }; + D3128FF315AABE4E00A2147A /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; }; + D3128FF415AABE4E00A2147A /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; }; + D3128FF515AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; + D3128FF615AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; D3196D2D15A3199D007FEEBA /* list_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_hightlight.png */; }; D3196D2E15A3199D007FEEBA /* list_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_hightlight.png */; }; D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; @@ -362,6 +374,16 @@ D37B96B815A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; D37B96B915A1A6F20005CCD2 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; }; D37B96BA15A1A6F20005CCD2 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; }; + D37C638E15AAD251009D0BAC /* contact_number_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638C15AAD251009D0BAC /* contact_number_over.png */; }; + D37C638F15AAD251009D0BAC /* contact_number_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638C15AAD251009D0BAC /* contact_number_over.png */; }; + D37C639015AAD251009D0BAC /* contact_number.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638D15AAD251009D0BAC /* contact_number.png */; }; + D37C639115AAD251009D0BAC /* contact_number.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638D15AAD251009D0BAC /* contact_number.png */; }; + D37C639515AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639315AADDAE009D0BAC /* UIContactDetailsHeader.m */; }; + D37C639615AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639315AADDAE009D0BAC /* UIContactDetailsHeader.m */; }; + D37C639715AADDAF009D0BAC /* UIContactDetailsHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */; }; + D37C639815AADDAF009D0BAC /* UIContactDetailsHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */; }; + D37C639B15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */; }; + D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */; }; D37DC6C11594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; D37DC6C21594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; D37DC6ED1594AE6F00B2A5EB /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */; }; @@ -667,10 +689,6 @@ D3F83F7D1582253100336684 /* decline_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F761582253100336684 /* decline_default.png */; }; D3F83F7E1582253100336684 /* decline_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F771582253100336684 /* decline_over.png */; }; D3F83F7F1582253100336684 /* decline_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F771582253100336684 /* decline_over.png */; }; - D3F83F841582278D00336684 /* cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F801582278D00336684 /* cancel_default.png */; }; - D3F83F851582278D00336684 /* cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F801582278D00336684 /* cancel_default.png */; }; - D3F83F861582278D00336684 /* cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F811582278D00336684 /* cancel_over.png */; }; - D3F83F871582278D00336684 /* cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F811582278D00336684 /* cancel_over.png */; }; D3F83F8E15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; D3F83F8F15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; D3F83F9215824D3600336684 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; @@ -1001,6 +1019,13 @@ 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + D3128FDE15AABC7E00A2147A /* ContactDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsViewController.h; sourceTree = ""; }; + D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsViewController.m; sourceTree = ""; }; + D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactDetailsViewController.xib; sourceTree = ""; }; + D3128FE715AABE4E00A2147A /* contact_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_back_default.png; path = Resources/contact_back_default.png; sourceTree = ""; }; + D3128FE815AABE4E00A2147A /* contact_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_back_over.png; path = Resources/contact_back_over.png; sourceTree = ""; }; + D3128FE915AABE4E00A2147A /* contact_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_default.png; path = Resources/contact_edit_default.png; sourceTree = ""; }; + D3128FEA15AABE4E00A2147A /* contact_edit_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_over.png; path = Resources/contact_edit_over.png; sourceTree = ""; }; D3196D2C15A3199D007FEEBA /* list_hightlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_hightlight.png; path = Resources/list_hightlight.png; sourceTree = ""; }; D3196D3015A321E2007FEEBA /* options_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_default.png; path = Resources/options_add_default.png; sourceTree = ""; }; D3196D3115A321E2007FEEBA /* options_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_over.png; path = Resources/options_add_over.png; sourceTree = ""; }; @@ -1130,6 +1155,13 @@ D377BBF915A19DA6002B696B /* video_on_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_disabled.png; path = Resources/video_on_disabled.png; sourceTree = ""; }; D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_default.png; path = Resources/call_state_delete_default.png; sourceTree = ""; }; D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_over.png; path = Resources/call_state_delete_over.png; sourceTree = ""; }; + D37C638C15AAD251009D0BAC /* contact_number_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_number_over.png; path = Resources/contact_number_over.png; sourceTree = ""; }; + D37C638D15AAD251009D0BAC /* contact_number.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_number.png; path = Resources/contact_number.png; sourceTree = ""; }; + D37C639215AADDAE009D0BAC /* UIContactDetailsHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactDetailsHeader.h; sourceTree = ""; }; + D37C639315AADDAE009D0BAC /* UIContactDetailsHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactDetailsHeader.m; sourceTree = ""; }; + D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactDetailsHeader.xib; sourceTree = ""; }; + D37C639915AADEF4009D0BAC /* ContactDetailsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsTableViewController.h; sourceTree = ""; }; + D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsTableViewController.m; sourceTree = ""; }; D37DC6BF1594AE1800B2A5EB /* LinphoneCoreSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCoreSettingsStore.h; sourceTree = ""; }; D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCoreSettingsStore.m; sourceTree = ""; }; D37DC6C51594AE6F00B2A5EB /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = ""; }; @@ -1322,8 +1354,6 @@ D3F83F751582253100336684 /* accept_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = accept_over.png; path = Resources/accept_over.png; sourceTree = ""; }; D3F83F761582253100336684 /* decline_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = decline_default.png; path = Resources/decline_default.png; sourceTree = ""; }; D3F83F771582253100336684 /* decline_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = decline_over.png; path = Resources/decline_over.png; sourceTree = ""; }; - D3F83F801582278D00336684 /* cancel_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_default.png; path = Resources/cancel_default.png; sourceTree = ""; }; - D3F83F811582278D00336684 /* cancel_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_over.png; path = Resources/cancel_over.png; sourceTree = ""; }; D3F83F8C158229C500336684 /* PhoneMainView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhoneMainView.h; sourceTree = ""; }; D3F83F8D15822ABD00336684 /* PhoneMainView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhoneMainView.m; sourceTree = ""; }; D3F83F9115824D3500336684 /* LinphoneApp.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneApp.xib; sourceTree = ""; }; @@ -1449,6 +1479,11 @@ 22E0A820111C44E100B04932 /* ConsoleViewController.h */, 22E0A81F111C44E100B04932 /* ConsoleViewController.m */, 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */, + D37C639915AADEF4009D0BAC /* ContactDetailsTableViewController.h */, + D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */, + D3128FDE15AABC7E00A2147A /* ContactDetailsViewController.h */, + D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */, + D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */, D3549814158761CF000081D8 /* ContactsTableViewController.h */, D3549815158761D0000081D8 /* ContactsTableViewController.m */, D35497FB15875372000081D8 /* ContactsViewController.h */, @@ -1744,6 +1779,9 @@ D3A55FBA15877E5E003FD403 /* UIContactCell.h */, D3A55FBB15877E5E003FD403 /* UIContactCell.m */, D3A55FBE15877E69003FD403 /* UIContactCell.xib */, + D37C639215AADDAE009D0BAC /* UIContactDetailsHeader.h */, + D37C639315AADDAE009D0BAC /* UIContactDetailsHeader.m */, + D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */, 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */, 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */, 22BB1A67132FF16A005CD7AA /* UIEraseButton.h */, @@ -1938,7 +1976,6 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - D3D14E7B15A711700074A527 /* avatar_shadow_small.png */, D3F83F741582253100336684 /* accept_default.png */, D3F83F751582253100336684 /* accept_over.png */, D3D6A39B159B0EEF005F692C /* add_call_default.png */, @@ -1948,6 +1985,7 @@ D3ED3E6815861A53006C0DE4 /* add_contact_disabled.png */, D3ED3E6915861A53006C0DE4 /* add_contact_over.png */, D3F34F2F1599B008005BE94F /* avatar_shadow.png */, + D3D14E7B15A711700074A527 /* avatar_shadow_small.png */, D31B4B261598A390002E6C72 /* avatar_unknown.png */, D31B4B271598A390002E6C72 /* avatar_unknown_small.png */, D3211BBB159CBFD60098460B /* back_default.png */, @@ -1976,8 +2014,6 @@ D31C9C8D158A1C1000756B45 /* call_status_incoming.png */, D31C9C8E158A1C1000756B45 /* call_status_missed.png */, D31C9C8F158A1C1000756B45 /* call_status_outgoing.png */, - D3F83F801582278D00336684 /* cancel_default.png */, - D3F83F811582278D00336684 /* cancel_over.png */, D36C43CC158F2F370048BA40 /* cell_call.png */, D3211BB8159C8A820098460B /* cell_call_first.png */, D38D14AD15A30B3D008497E8 /* cell_call_first_hightlight.png */, @@ -2004,6 +2040,12 @@ D3B9A3DE15A58C450096EA4E /* chat_send_over.png */, D31AAF61159B5B6E002C6B02 /* conference_default.png */, D31AAF62159B5B6E002C6B02 /* conference_over.png */, + D3128FE715AABE4E00A2147A /* contact_back_default.png */, + D3128FE815AABE4E00A2147A /* contact_back_over.png */, + D3128FE915AABE4E00A2147A /* contact_edit_default.png */, + D3128FEA15AABE4E00A2147A /* contact_edit_over.png */, + D37C638D15AAD251009D0BAC /* contact_number.png */, + D37C638C15AAD251009D0BAC /* contact_number_over.png */, D354980E15875608000081D8 /* contacts_add_default.png */, D354980F15875608000081D8 /* contacts_add_over.png */, D354980315875534000081D8 /* contacts_all_default.png */, @@ -2442,8 +2484,6 @@ D3F83F7A1582253100336684 /* accept_over.png in Resources */, D3F83F7C1582253100336684 /* decline_default.png in Resources */, D3F83F7E1582253100336684 /* decline_over.png in Resources */, - D3F83F841582278D00336684 /* cancel_default.png in Resources */, - D3F83F861582278D00336684 /* cancel_over.png in Resources */, D3F83F9215824D3600336684 /* LinphoneApp.xib in Resources */, D3ED3E411585FB4A006C0DE4 /* numpad_background.png in Resources */, D3ED3E451585FB8C006C0DE4 /* dialer_address_background.png in Resources */, @@ -2595,6 +2635,14 @@ D389363B15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */, D3D14E7915A70EE30074A527 /* UIChatRoomHeader.xib in Resources */, D3D14E7C15A711700074A527 /* avatar_shadow_small.png in Resources */, + D3128FE315AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */, + D3128FEF15AABE4E00A2147A /* contact_back_default.png in Resources */, + D3128FF115AABE4E00A2147A /* contact_back_over.png in Resources */, + D3128FF315AABE4E00A2147A /* contact_edit_default.png in Resources */, + D3128FF515AABE4E00A2147A /* contact_edit_over.png in Resources */, + D37C638E15AAD251009D0BAC /* contact_number_over.png in Resources */, + D37C639015AAD251009D0BAC /* contact_number.png in Resources */, + D37C639715AADDAF009D0BAC /* UIContactDetailsHeader.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2663,8 +2711,6 @@ D3F83F7B1582253100336684 /* accept_over.png in Resources */, D3F83F7D1582253100336684 /* decline_default.png in Resources */, D3F83F7F1582253100336684 /* decline_over.png in Resources */, - D3F83F851582278D00336684 /* cancel_default.png in Resources */, - D3F83F871582278D00336684 /* cancel_over.png in Resources */, D3F83F9315824D3600336684 /* LinphoneApp.xib in Resources */, D3ED3E421585FB4A006C0DE4 /* numpad_background.png in Resources */, D3ED3E461585FB8C006C0DE4 /* dialer_address_background.png in Resources */, @@ -2815,6 +2861,14 @@ D389363C15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */, D3D14E7A15A70EE30074A527 /* UIChatRoomHeader.xib in Resources */, D3D14E7D15A711700074A527 /* avatar_shadow_small.png in Resources */, + D3128FE415AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */, + D3128FF015AABE4E00A2147A /* contact_back_default.png in Resources */, + D3128FF215AABE4E00A2147A /* contact_back_over.png in Resources */, + D3128FF415AABE4E00A2147A /* contact_edit_default.png in Resources */, + D3128FF615AABE4E00A2147A /* contact_edit_over.png in Resources */, + D37C638F15AAD251009D0BAC /* contact_number_over.png in Resources */, + D37C639115AAD251009D0BAC /* contact_number.png in Resources */, + D37C639815AADDAF009D0BAC /* UIContactDetailsHeader.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2897,6 +2951,9 @@ D389362615A6D19800A3A3AA /* CPAnimationSequence.m in Sources */, D389362815A6D19800A3A3AA /* CPAnimationStep.m in Sources */, D3D14E7715A70EE30074A527 /* UIChatRoomHeader.m in Sources */, + D3128FE115AABC7E00A2147A /* ContactDetailsViewController.m in Sources */, + D37C639515AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */, + D37C639B15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2976,6 +3033,9 @@ D389362715A6D19800A3A3AA /* CPAnimationSequence.m in Sources */, D389362915A6D19800A3A3AA /* CPAnimationStep.m in Sources */, D3D14E7815A70EE30074A527 /* UIChatRoomHeader.m in Sources */, + D3128FE215AABC7E00A2147A /* ContactDetailsViewController.m in Sources */, + D37C639615AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */, + D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 1b952fcd1fbdba2d5c6c5f07e9136c03ecee096c Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 10 Jul 2012 15:57:55 +0200 Subject: [PATCH 033/397] Continue working on Contact views --- Classes/ChatRoomTableViewController.m | 5 +- Classes/ChatRoomViewController.m | 8 +- Classes/ChatTableViewController.m | 14 +- Classes/ChatViewController.m | 8 +- Classes/ContactDetailsLabelViewController.h | 36 ++ Classes/ContactDetailsLabelViewController.m | 86 +++++ Classes/ContactDetailsLabelViewController.xib | 354 ++++++++++++++++++ Classes/ContactDetailsTableViewController.h | 7 +- Classes/ContactDetailsTableViewController.m | 273 +++++++++++--- Classes/ContactDetailsViewController.h | 4 + Classes/ContactDetailsViewController.m | 23 +- Classes/ContactDetailsViewController.xib | 79 +++- Classes/ContactsTableViewController.m | 5 +- Classes/FirstLoginViewController.m | 12 +- Classes/HistoryTableViewController.m | 5 +- Classes/HistoryViewController.m | 7 +- Classes/InCallTableViewController.m | 7 +- Classes/IncomingCallViewController.m | 6 +- Classes/LinphoneUI/UICallBar.m | 2 + .../LinphoneUI/UICompositeViewController.m | 4 +- Classes/LinphoneUI/UIEditableTableViewCell.h | 28 ++ Classes/LinphoneUI/UIEditableTableViewCell.m | 100 +++++ Classes/LinphoneUI/UIModalViewController.h | 5 +- Classes/LinphoneUI/UIModalViewController.m | 42 ++- Classes/LinphoneUI/UIView+ModalStack.h | 29 ++ Classes/LinphoneUI/UIView+ModalStack.m | 49 +++ Classes/PhoneMainView.h | 2 - Classes/PhoneMainView.m | 40 +- Classes/SettingsViewController.m | 17 + Classes/SettingsViewController.xib | 97 ++--- Classes/WizardViewController.m | 1 + Resources/contact_bar_background.png | Bin 0 -> 161 bytes Resources/contact_ok_default.png | Bin 0 -> 4336 bytes Resources/contact_ok_over.png | Bin 0 -> 4006 bytes linphone.xcodeproj/project.pbxproj | 80 +++- 35 files changed, 1215 insertions(+), 220 deletions(-) create mode 100644 Classes/ContactDetailsLabelViewController.h create mode 100644 Classes/ContactDetailsLabelViewController.m create mode 100644 Classes/ContactDetailsLabelViewController.xib create mode 100644 Classes/LinphoneUI/UIEditableTableViewCell.h create mode 100644 Classes/LinphoneUI/UIEditableTableViewCell.m create mode 100644 Classes/LinphoneUI/UIView+ModalStack.h create mode 100644 Classes/LinphoneUI/UIView+ModalStack.m create mode 100644 Resources/contact_bar_background.png create mode 100644 Resources/contact_ok_default.png create mode 100644 Resources/contact_ok_over.png diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index 80f9a4ede..32dcbc629 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -54,9 +54,10 @@ } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UIChatRoomCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIChatRoomCell"]; + static NSString *kCellId = @"UIChatRoomCell"; + UIChatRoomCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { - cell = [[UIChatRoomCell alloc] initWithIdentifier:@"UIChatRoomCell"]; + cell = [[[UIChatRoomCell alloc] initWithIdentifier:kCellId] autorelease]; } [cell setChat:[data objectAtIndex:[indexPath row]]]; diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 6be06c8e7..515db7f71 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -63,6 +63,8 @@ - (void)viewDidLoad { + [super viewDidLoad]; + // Set selected+over background: IB lack ! [editButton setImage:[UIImage imageNamed:@"chat_ok_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; @@ -83,8 +85,8 @@ selector:@selector(textReceivedEvent:) name:@"LinphoneTextReceived" object:nil]; - - [[tableController tableView] setEditing:FALSE]; + if([tableController isEditing]) + [tableController setEditing:FALSE]; [editButton setOff]; [[tableController tableView] reloadData]; } @@ -180,7 +182,7 @@ } - (IBAction)onEditClick:(id)event { - [[tableController tableView] setEditing:![[tableController tableView] isEditing] animated:TRUE]; + [tableController setEditing:![tableController isEditing] animated:TRUE]; } - (IBAction)onSendClick:(id)event { diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index 769179480..c919595ed 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -45,22 +45,20 @@ #pragma mark - UITableViewDataSource Functions -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView -{ +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section -{ +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { [self reloadData]; return [data count]; } -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath -{ - UIChatCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIChatCell"]; +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *kCellId = @"UIChatCell"; + UIChatCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { - cell = [[UIChatCell alloc] initWithIdentifier:@"UIChatCell"]; + cell = [[[UIChatCell alloc] initWithIdentifier:kCellId] autorelease]; } [cell setChat:[data objectAtIndex:[indexPath row]]]; diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 8a92ae4b6..25a7fb3f6 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -45,6 +45,8 @@ #pragma mark - ViewController Functions - (void)viewDidLoad { + [super viewDidLoad]; + // Set selected+over background: IB lack ! [editButton setImage:[UIImage imageNamed:@"chat_ok_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; @@ -56,8 +58,8 @@ selector:@selector(textReceivedEvent:) name:@"LinphoneTextReceived" object:nil]; - - [[tableController tableView] setEditing:FALSE]; + if([tableController isEditing]) + [tableController setEditing:FALSE]; [editButton setOff]; [[tableController tableView] reloadData]; } @@ -99,7 +101,7 @@ } - (IBAction)onEditClick:(id)event { - [[tableController tableView] setEditing:![[tableController tableView] isEditing] animated:TRUE]; + [tableController setEditing:![tableController isEditing] animated:TRUE]; } @end diff --git a/Classes/ContactDetailsLabelViewController.h b/Classes/ContactDetailsLabelViewController.h new file mode 100644 index 000000000..cefe72273 --- /dev/null +++ b/Classes/ContactDetailsLabelViewController.h @@ -0,0 +1,36 @@ +/* ContactDetailsLabelViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +#import "UIModalViewController.h" + +@interface ContactDetailsLabelViewController : UIModalViewController { + NSDictionary *dataList; + UITableView *tableView; + NSString *selectedData; +} + +@property (nonatomic, copy) NSString *selectedData; +@property (nonatomic, retain) NSDictionary *dataList; +@property (nonatomic, retain) IBOutlet UITableView *tableView; + +- (IBAction)onBackClick:(id)event; + +@end diff --git a/Classes/ContactDetailsLabelViewController.m b/Classes/ContactDetailsLabelViewController.m new file mode 100644 index 000000000..7ec07dd90 --- /dev/null +++ b/Classes/ContactDetailsLabelViewController.m @@ -0,0 +1,86 @@ +/* ContactDetailsLabelViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "ContactDetailsLabelViewController.h" + +@implementation ContactDetailsLabelViewController + +@synthesize dataList; +@synthesize tableView; +@synthesize selectedData; + + +#pragma mark - Property Functions + +- (void)setDataList:(NSDictionary *)adatalist { + if (self->dataList != nil) { + [self->dataList release]; + } + self->dataList = [adatalist retain]; + [tableView reloadData]; +} + + +- (void)setSelectedData:(NSString *)aselectedData { + if (selectedData != nil) { + [selectedData release]; + } + selectedData = [[NSString alloc] initWithString:aselectedData]; + [tableView reloadData]; +} + +#pragma mark - UITableViewDataSource Functions + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [dataList count]; +} + +- (UITableViewCell *)tableView:(UITableView *)atableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *kCellId = @"ContactDetailsLabelCell"; + UITableViewCell *cell = [atableView dequeueReusableCellWithIdentifier:kCellId]; + if (cell == nil) { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kCellId] autorelease]; + } + NSString* key = [[dataList allKeys] objectAtIndex:[indexPath row]]; + [cell.textLabel setText:[dataList objectForKey:key]]; + if ([key compare:selectedData]==0) { + [cell setAccessoryType:UITableViewCellAccessoryCheckmark]; + } else { + [cell setAccessoryType:UITableViewCellAccessoryNone]; + } + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + NSString* key = [[dataList allKeys] objectAtIndex:[indexPath row]]; + [self setSelectedData:key]; + [self dismiss:key]; +} + +#pragma mark - Action Functions + +- (IBAction)onBackClick:(id)event { + [self dismiss]; +} + +@end diff --git a/Classes/ContactDetailsLabelViewController.xib b/Classes/ContactDetailsLabelViewController.xib new file mode 100644 index 000000000..dbc7d7a22 --- /dev/null +++ b/Classes/ContactDetailsLabelViewController.xib @@ -0,0 +1,354 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUITableView + IBUIImageView + IBUIView + IBUIButton + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 292 + {320, 460} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + numpad_background.png + + + + + 290 + + + + 292 + {160, 58} + + + + _NS:9 + NO + + Add contact + + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + contact_back_over.png + + + NSImage + contact_back_default.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{160, 0}, {160, 58}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + contact_bar_background.png + + + + {320, 58} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 306 + {{0, 59}, {320, 401}} + + + + _NS:9 + + 3 + MCAwAA + + YES + IBCocoaTouchFramework + 0.0 + 10 + 0.0 + 0.0 + YES + 1 + 2 + 0 + YES + 44 + 10 + 10 + + + {{0, 20}, {320, 460}} + + + + + 3 + MQA + + + + IBCocoaTouchFramework + + + + + + + view + + + + 12 + + + + tableView + + + + 15 + + + + dataSource + + + + 13 + + + + delegate + + + + 14 + + + + onBackClick: + + + 7 + + 11 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + + + 5 + + + tableView + + + 6 + + + + + + + header + + + 7 + + + background + + + 8 + + + backButton + + + 10 + + + barBackground + + + + + ContactDetailsLabelViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 15 + + + + + ContactDetailsLabelViewController + UIModalViewController + + onBackClick: + id + + + onBackClick: + + onBackClick: + id + + + + tableView + UITableView + + + tableView + + tableView + UITableView + + + + IBProjectSource + ./Classes/ContactDetailsLabelViewController.h + + + + UIModalViewController + UIViewController + + IBProjectSource + ./Classes/UIModalViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {320, 117} + {320, 117} + {5, 117} + {640, 523} + + 1181 + + diff --git a/Classes/ContactDetailsTableViewController.h b/Classes/ContactDetailsTableViewController.h index 955868e99..7eb886d69 100644 --- a/Classes/ContactDetailsTableViewController.h +++ b/Classes/ContactDetailsTableViewController.h @@ -20,11 +20,16 @@ #import #import -@interface ContactDetailsTableViewController : UITableViewController { +#import "ContactDetailsLabelViewController.h" + +@interface ContactDetailsTableViewController : UITableViewController { @private ABRecordRef contact; NSMutableArray *dataCache; ABAddressBookRef addressBook; + ContactDetailsLabelViewController *contactDetailsLabelViewController; + NSMutableArray *labelArray; + NSIndexPath *editingIndexPath; } @property (nonatomic, assign) ABRecordRef contact; diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index d8f355650..e4cee9949 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -20,6 +20,41 @@ #import "ContactDetailsTableViewController.h" #import "UIContactDetailsHeader.h" #import "PhoneMainView.h" +#import "UIEditableTableViewCell.h" +#import "UIView+ModalStack.h" + +@interface Entry : NSObject + +@property (retain) NSString *key; +@property (retain) NSString *value; + +@end + +@implementation Entry + +@synthesize key; +@synthesize value; + + +#pragma mark - Lifecycle Functions + +- (id)initWithData:(NSString*)akey value:(NSString*)avalue { + self = [super init]; + if (self != NULL) { + [self setKey:akey]; + [self setValue:avalue]; + } + return self; +} + +- (void)dealloc { + [key release]; + [value release]; + [super dealloc]; +} + +@end + @implementation ContactDetailsTableViewController @@ -31,6 +66,12 @@ - (void)initContactDetailsTableViewController { addressBook = ABAddressBookCreate(); dataCache = [[NSMutableArray alloc] init]; + labelArray = [[NSMutableArray alloc] initWithObjects: + [NSString stringWithString:(NSString*)kABPersonPhoneMobileLabel], + [NSString stringWithString:(NSString*)kABPersonPhoneIPhoneLabel], + [NSString stringWithString:(NSString*)kABPersonPhoneMainLabel], + [NSString stringWithString:(NSString*)kABPersonPhoneHomeFAXLabel], + [NSString stringWithString:(NSString*)kABPersonPhoneWorkFAXLabel], nil]; } - (id)init { @@ -50,7 +91,8 @@ } - (void)dealloc { - [dataCache dealloc]; + [labelArray release]; + [dataCache release]; [super dealloc]; } @@ -64,12 +106,47 @@ - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; + contact = nil; // Clear previous selection ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_toc_address_book, self); + if(contactDetailsLabelViewController != nil) { + [[[self view] superview] removeModalView:[contactDetailsLabelViewController view]]; + [editingIndexPath release]; + editingIndexPath = nil; + [contactDetailsLabelViewController release]; + contactDetailsLabelViewController = nil; + } } #pragma mark - ++ (BOOL)findAndResignFirstResponder:(UIView*)view { + if (view.isFirstResponder) { + [view resignFirstResponder]; + return YES; + } + for (UIView *subView in view.subviews) { + if ([ContactDetailsTableViewController findAndResignFirstResponder:subView]) + return YES; + } + return NO; +} + ++ (NSString*)localizeLabel:(NSString*)str { + CFStringRef lLocalizedLabel = ABAddressBookCopyLocalizedLabel((CFStringRef) str); + NSString * retStr = [NSString stringWithString:(NSString*) lLocalizedLabel]; + CFRelease(lLocalizedLabel); + return retStr; +} + +- (NSDictionary*)getLocalizedLabels { + NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:[labelArray count]]; + for(NSString *str in labelArray) { + [dict setObject:[ContactDetailsTableViewController localizeLabel:str] forKey:str]; + } + return [dict autorelease]; +} + static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { ContactDetailsTableViewController* controller = (ContactDetailsTableViewController*)context; ABRecordID recordID = ABRecordGetRecordID([controller contact]); @@ -92,10 +169,9 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { CFStringRef lValue = ABMultiValueCopyValueAtIndex(lMap, i); CFStringRef lLabel = ABMultiValueCopyLabelAtIndex(lMap, i); - CFStringRef lLocalizedLabel = ABAddressBookCopyLocalizedLabel(lLabel); - [subArray addObject:[NSArray arrayWithObjects:[NSString stringWithString:(NSString*)lValue], [NSString stringWithString:(NSString*)lLocalizedLabel], nil]]; - if(lLocalizedLabel) - CFRelease(lLocalizedLabel); + Entry *entry = [[Entry alloc] initWithData:[NSString stringWithString:(NSString*)lLabel] value:[NSString stringWithString:(NSString*)lValue]]; + [subArray addObject: entry]; + [entry release]; CFRelease(lLabel); CFRelease(lValue); } @@ -109,16 +185,15 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef NSMutableArray *subArray = [[NSMutableArray alloc] init]; for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); - if(CFDictionaryContainsKey(lDict, @"service")) { - if(CFStringCompare((CFStringRef)@"SIP", CFDictionaryGetValue(lDict, @"service"), kCFCompareCaseInsensitive) == 0) { - CFStringRef lValue = CFDictionaryGetValue(lDict, @"username"); + if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { + if(CFStringCompare((CFStringRef)@"SIP", CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { + CFStringRef lValue = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); CFStringRef lLabel = ABMultiValueCopyLabelAtIndex(lMap, i); - CFStringRef lLocalizedLabel = ABAddressBookCopyLocalizedLabel(lLabel); - [subArray addObject:[NSArray arrayWithObjects:[NSString stringWithString:(NSString*)lValue], [NSString stringWithString:(NSString*)lLocalizedLabel], nil]]; - if(lLocalizedLabel) - CFRelease(lLocalizedLabel); + Entry *entry = [[Entry alloc] initWithData:[NSString stringWithString:(NSString*)lLabel] value:[NSString stringWithString:(NSString*)lValue]]; + [subArray addObject: entry]; + [entry release]; CFRelease(lLabel); - + CFRelease(lValue); } } CFRelease(lDict); @@ -128,62 +203,150 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef } } +- (void)addEntry:(UITableView*)tableview section:(NSInteger)section editing:(BOOL)editing animated:(BOOL)animated { + NSMutableArray *sectionArray = [dataCache objectAtIndex:section]; + NSUInteger count = [sectionArray count]; + Entry *entry = [[Entry alloc] initWithData:[labelArray objectAtIndex:0] value:@""]; + [sectionArray addObject:entry]; + + NSArray *tagInsertIndexPath = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:count inSection:section]]; + + // Add or remove the Add row as appropriate. + UITableViewRowAnimation animationStyle = UITableViewRowAnimationNone; + if (animated) { + animationStyle = UITableViewRowAnimationFade; + } + [self.tableView insertRowsAtIndexPaths:tagInsertIndexPath withRowAnimation:animationStyle]; +} + +- (void)removeEntry:(UITableView*)tableview section:(NSInteger)section editing:(BOOL)editing animated:(BOOL)animated { + NSMutableArray *sectionArray = [dataCache objectAtIndex:section]; + for (int i = 0; i < [sectionArray count]; ++i) { + Entry *entry = [sectionArray objectAtIndex:i]; + if(![[entry value] length]) { + [sectionArray removeObjectAtIndex:i]; + NSArray *tagInsertIndexPath = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:i inSection:section]]; + UITableViewRowAnimation animationStyle = UITableViewRowAnimationNone; + if (animated) { + animationStyle = UITableViewRowAnimationFade; + } + [self.tableView deleteRowsAtIndexPaths:tagInsertIndexPath withRowAnimation:animationStyle]; + } + } +} + #pragma mark - Property Functions - (void)setContact:(ABRecordRef)acontact { self->contact = acontact; - [[self tableView] reloadData]; + [self loadData]; + [self.tableView reloadData]; } #pragma mark - UITableViewDataSource Functions - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - [self loadData]; return [dataCache count]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - NSMutableDictionary *dict = [dataCache objectAtIndex:section]; - return [dict count]; + return [[dataCache objectAtIndex:section] count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ContactDetailsCell"]; - if (cell == nil) { - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:@"ContactDetailsCell"]; - //[cell setSelectedBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"list_hightlight.png"]]]; + static NSString *kCellId = @"ContactDetailsCell"; + UIEditableTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; + if (cell == nil) { + cell = [[[UIEditableTableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:kCellId] autorelease]; + // [cell setEditingAccessoryType:UITableViewCellAccessoryNone]; + // [cell setSelectionStyle: UITableViewCellSelectionStyleNone]; + } + if ([indexPath row] < [[dataCache objectAtIndex:[indexPath section]] count]) { + NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; + Entry *entry = [sectionDict objectAtIndex:[indexPath row]]; + [cell.textLabel setText:[ContactDetailsTableViewController localizeLabel:[entry key]]]; + NSString *value = [entry value]; + [cell.detailTextLabel setText:value]; + [cell.detailTextField setText:value]; + } + if ([indexPath section] == 0) { + [cell.detailTextField setKeyboardType:UIKeyboardTypeNumbersAndPunctuation]; + [cell.detailTextField setPlaceholder:@"Phone number"]; + } else { + [cell.detailTextField setKeyboardType:UIKeyboardTypeEmailAddress]; + [cell.detailTextField setPlaceholder:@"SIP address"]; } - NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; - NSArray *tuple = [sectionDict objectAtIndex:[indexPath row]]; - [cell.textLabel setText:[tuple objectAtIndex:1]]; - [cell.detailTextLabel setText:[tuple objectAtIndex:0]]; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:NO]; NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; - NSArray *tuple = [sectionDict objectAtIndex:[indexPath row]]; - - NSString *dest = [tuple objectAtIndex:0]; - if(![dest hasPrefix:@"sip:"]) - dest = [NSString stringWithFormat:@"sip:%@", [tuple objectAtIndex:0]]; - CFStringRef lDisplayName = ABRecordCopyCompositeName(contact); - NSString *displayName = [NSString stringWithString:(NSString*) lDisplayName]; - CFRelease(lDisplayName); - - // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: dest, displayName, nil] autorelease] - , @"call:displayName:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; + Entry *entry = [sectionDict objectAtIndex:[indexPath row]]; + if (![self isEditing]) { + NSString *dest = [entry value]; + if(![dest hasPrefix:@"sip:"]) + dest = [NSString stringWithFormat:@"sip:%@", [entry key]]; + CFStringRef lDisplayName = ABRecordCopyCompositeName(contact); + NSString *displayName = [NSString stringWithString:(NSString*) lDisplayName]; + CFRelease(lDisplayName); + + // Go to dialer view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: dest, displayName, nil] autorelease] + , @"call:displayName:", + nil] autorelease]; + [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; + } else { + contactDetailsLabelViewController = [[ContactDetailsLabelViewController alloc] initWithNibName:@"ContactDetailsLabelViewController" + bundle:[NSBundle mainBundle]]; + [contactDetailsLabelViewController setSelectedData:[entry key]]; + [contactDetailsLabelViewController setDataList:[self getLocalizedLabels]]; + [contactDetailsLabelViewController setModalDelegate:self]; + editingIndexPath = [indexPath copy]; + [[[self view] superview] addModalView:[contactDetailsLabelViewController view]]; + } } #pragma mark - UITableViewDelegate Functions +- (void)setEditing:(BOOL)editing animated:(BOOL)animated { + // Add entries + + if(editing) { + [self.tableView beginUpdates]; + for (int section = 0; section <[self numberOfSectionsInTableView:[self tableView]]; ++section) { + [self addEntry:self.tableView section:section editing:editing animated:animated]; + } + [self.tableView endUpdates]; + } else { + [self.tableView beginUpdates]; + for (int section = 0; section <[self numberOfSectionsInTableView:[self tableView]]; ++section) { + [self removeEntry:self.tableView section:section editing:editing animated:animated]; + } + [self.tableView endUpdates]; + } + + // Set animated + [super setEditing:editing animated:animated]; + + // Resign keyboard + if(!editing) { + [ContactDetailsTableViewController findAndResignFirstResponder:[self tableView]]; + } +} + +- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { + int last_index = [[dataCache objectAtIndex:[indexPath section]] count] - 1; + if (indexPath.row == last_index) { + return UITableViewCellEditingStyleInsert; + } + return UITableViewCellEditingStyleDelete; +} + - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { if(section == 0) { UIContactDetailsHeader *headerController = [[UIContactDetailsHeader alloc] init]; @@ -193,16 +356,38 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef [headerController release]; return headerView; } else { - return [[UIView alloc] initWithFrame:CGRectZero]; + return [super tableView:tableView viewForHeaderInSection:section]; + } +} + +- (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { + if(section == 0) { + return [super tableView:tableView titleForHeaderInSection:section]; + } else { + return @"SIP"; } } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - if(section == 0) + if(section == 0) { return [UIContactDetailsHeader height]; - else { - return 0.000001f; // Hack UITableView = 0 + } else { + return 22; } } + +#pragma mark - UIModalViewDeletage Functions + +- (void)modalViewDismiss:(UIModalViewController*)controller value:(id)value { + [[[self view]superview] removeModalView:[contactDetailsLabelViewController view]]; + contactDetailsLabelViewController = nil; + NSMutableArray *sectionDict = [dataCache objectAtIndex:[editingIndexPath section]]; + Entry *entry = [sectionDict objectAtIndex:[editingIndexPath row]]; + [entry setKey:value]; + [[self tableView] reloadRowsAtIndexPaths:[NSArray arrayWithObject: editingIndexPath] withRowAnimation:FALSE]; + [editingIndexPath release]; + editingIndexPath = nil; +} + @end diff --git a/Classes/ContactDetailsViewController.h b/Classes/ContactDetailsViewController.h index bf50a77b3..2cc90bcbc 100644 --- a/Classes/ContactDetailsViewController.h +++ b/Classes/ContactDetailsViewController.h @@ -22,15 +22,19 @@ #import "UICompositeViewController.h" #import "ContactDetailsTableViewController.h" +#import "UIToggleButton.h" @interface ContactDetailsViewController : UIViewController { ContactDetailsTableViewController *tableController; ABRecordRef contact; + UIToggleButton *editButton; } @property (nonatomic, assign) ABRecordRef contact; @property (nonatomic, retain) IBOutlet ContactDetailsTableViewController *tableController; +@property (nonatomic, retain) IBOutlet UIToggleButton *editButton; - (IBAction)onBackClick:(id)event; +- (IBAction)onEditClick:(id)event; @end diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index c025949a1..4142ce1be 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -24,6 +24,7 @@ @synthesize tableController; @synthesize contact; +@synthesize editButton; #pragma mark - Lifecycle Functions @@ -40,13 +41,29 @@ #pragma mark - Property Functions - - (void)setContact:(ABRecordRef)acontact { self->contact = acontact; [tableController setContact:contact]; } +#pragma mark - ViewController Functions + +- (void)viewDidLoad{ + [super viewDidLoad]; + // Set selected+over background: IB lack ! + [editButton setImage:[UIImage imageNamed:@"contact_ok_over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + if([tableController isEditing]) + [tableController setEditing:FALSE]; + [editButton setOff]; +} + + #pragma mark - UICompositeViewDelegate Functions + (UICompositeViewDescription*) compositeViewDescription { @@ -67,4 +84,8 @@ [[PhoneMainView instance] popView]; } +- (IBAction)onEditClick:(id)event { + [tableController setEditing:![tableController isEditing] animated:TRUE]; +} + @end diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib index 91f6d8dd2..fa5d16d7b 100644 --- a/Classes/ContactDetailsViewController.xib +++ b/Classes/ContactDetailsViewController.xib @@ -116,6 +116,10 @@ NSImage contact_edit_over.png + + NSImage + contact_ok_default.png + NSImage contact_edit_default.png @@ -144,7 +148,6 @@ {{0, 59}, {320, 401}} - _NS:9 3 @@ -152,10 +155,15 @@ YES IBCocoaTouchFramework + 0.0 + 10 + 0.0 + 0.0 YES 1 2 0 + YES YES 44 10 @@ -202,6 +210,23 @@ 27 + + + editButton + + + + 31 + + + + onEditClick: + + + 7 + + 30 + onBackClick: @@ -319,8 +344,9 @@ ContactDetailsTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -328,7 +354,7 @@ - 29 + 46 @@ -343,33 +369,47 @@ ContactDetailsViewController UIViewController - - onBackClick: - id - - - onBackClick: - + + id + id + + + onBackClick: id - - - tableController - ContactDetailsTableViewController - - - tableController - + + onEditClick: + id + + + + UIToggleButton + ContactDetailsTableViewController + + + + editButton + UIToggleButton + + tableController ContactDetailsTableViewController - + IBProjectSource ./Classes/ContactDetailsViewController.h + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + 0 @@ -385,6 +425,7 @@ {320, 117} {320, 117} {320, 117} + {320, 117} {640, 523} 1181 diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 643fbb361..054367e77 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -155,9 +155,10 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UIContactCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIContactCell"]; + static NSString *kCellId = @"UIContactCell"; + UIContactCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { - cell = [[UIContactCell alloc] initWithIdentifier:@"UIContactCell"]; + cell = [[[UIContactCell alloc] initWithIdentifier:kCellId] autorelease]; } OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index c8e2f61bf..554c5fdd8 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -37,11 +37,11 @@ } - (void)dealloc { - [loginButton dealloc]; - [siteButton dealloc]; - [usernameField dealloc]; - [passwordField dealloc]; - [waitView dealloc]; + [loginButton release]; + [siteButton release]; + [usernameField release]; + [passwordField release]; + [waitView release]; // Remove all observer [[NSNotificationCenter defaultCenter] removeObserver:self]; @@ -97,6 +97,8 @@ } - (void)viewDidLoad { + [super viewDidLoad]; + NSString* siteUrl = [[LinphoneManager instance].settingsStore objectForKey:@"first_login_view_url"]; if (siteUrl==nil) { siteUrl=@"http://www.linphone.org"; diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index 15f4bba32..72f54f72f 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -91,9 +91,10 @@ } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UIHistoryCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UIHistoryCell"]; + static NSString *kCellId = @"UIHistoryCell"; + UIHistoryCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { - cell = [[UIHistoryCell alloc] initWithIdentifier:@"UIHistoryCell"]; + cell = [[[UIHistoryCell alloc] initWithIdentifier:kCellId] autorelease]; } LinphoneCallLog *log = [[callLogs objectAtIndex:[indexPath row]] pointerValue]; diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index f60c676ac..4ea5cc67b 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -70,9 +70,10 @@ typedef enum _HistoryView { - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [[tableController tableView] setEditing:FALSE]; - [self changeView: History_All]; + if([tableController isEditing]) + [tableController setEditing:FALSE]; [editButton setOff]; + [self changeView: History_All]; [self.tableView reloadData]; } @@ -124,7 +125,7 @@ typedef enum _HistoryView { } - (IBAction)onEditClick:(id) event { - [[tableController tableView] setEditing:![[tableController tableView] isEditing] animated:TRUE]; + [tableController setEditing:![tableController isEditing] animated:TRUE]; } diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index b4bd3d8c0..533dec6fe 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -63,7 +63,7 @@ enum TableSection { - (void)dealloc { [callCellData removeAllObjects]; - [callCellData dealloc]; + [callCellData release]; [super dealloc]; } @@ -196,9 +196,10 @@ enum TableSection { #pragma mark - UITableViewDataSource Functions - (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:@"UICallCell"]; + static NSString *kCellId = @"UICallCell"; + UICallCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { - cell = [[UICallCell alloc] initWithIdentifier:@"UICallCell"]; + cell = [[[UICallCell alloc] initWithIdentifier:kCellId] autorelease]; } bool inConference = indexPath.section == ConferenceSection; diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 833ddb811..d41bc09d2 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -75,7 +75,7 @@ - (void)callUpdate:(LinphoneCall *)acall state:(LinphoneCallState)astate { if(call == acall && (astate == LinphoneCallEnd || astate == LinphoneCallError)) { - [self dismiss: IncomingCall_Aborted]; + [self dismiss: [NSNumber numberWithInt: IncomingCall_Aborted]]; } } @@ -103,12 +103,12 @@ - (IBAction)onAcceptClick:(id)event { linphone_core_accept_call([LinphoneManager getLc], call); - [self dismiss: IncomingCall_Accepted]; + [self dismiss: [NSNumber numberWithInt:IncomingCall_Accepted]]; } - (IBAction)onDeclineClick:(id)event { linphone_core_terminate_call([LinphoneManager getLc], call); - [self dismiss: IncomingCall_Decline]; + [self dismiss: [NSNumber numberWithInt:IncomingCall_Decline]]; } @end diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index e34be52e5..58cf6000c 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -99,6 +99,8 @@ #pragma mark - ViewController Functions - (void)viewDidLoad { + [super viewDidLoad]; + [pauseButton setType:UIPauseButtonType_CurrentCall call:nil]; [zeroButton setDigit:'0']; diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 280bc5834..7279cef15 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -93,7 +93,7 @@ [stateBarView release]; [tabBarView release]; [viewControllerCache removeAllObjects]; - [currentViewDescription dealloc]; + [currentViewDescription release]; [super dealloc]; } @@ -268,7 +268,7 @@ // Dealloc old view description if(oldViewDescription != nil) { - [oldViewDescription dealloc]; + [oldViewDescription release]; } } diff --git a/Classes/LinphoneUI/UIEditableTableViewCell.h b/Classes/LinphoneUI/UIEditableTableViewCell.h new file mode 100644 index 000000000..d36708e9e --- /dev/null +++ b/Classes/LinphoneUI/UIEditableTableViewCell.h @@ -0,0 +1,28 @@ +/* UIEditableTableViewCell.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface UIEditableTableViewCell : UITableViewCell { + UITextField *detailTextField; +} + +@property (nonatomic, retain) IBOutlet UITextField *detailTextField; + +@end diff --git a/Classes/LinphoneUI/UIEditableTableViewCell.m b/Classes/LinphoneUI/UIEditableTableViewCell.m new file mode 100644 index 000000000..6ae24eaaa --- /dev/null +++ b/Classes/LinphoneUI/UIEditableTableViewCell.m @@ -0,0 +1,100 @@ +/* UIEditableTableViewCell.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIEditableTableViewCell.h" + +@implementation UIEditableTableViewCell + +@synthesize detailTextField; + + +#pragma mark - Lifecycle Functions + +- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier +{ + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + UIView *parent = [self.detailTextLabel superview]; + self.detailTextField = [[UITextField alloc] init]; + [self.detailTextField setHidden:TRUE]; + [self.detailTextField setDelegate:self]; + [self.detailTextField setClearButtonMode: UITextFieldViewModeWhileEditing]; + [self.detailTextField setContentVerticalAlignment: UIControlContentVerticalAlignmentCenter]; + + UIFont *font = [UIFont fontWithName:@"Helvetica-Bold" size:[UIFont systemFontSize]]; + [self.detailTextLabel setFont:font]; + [self.detailTextField setFont:font]; + [parent addSubview:detailTextField]; + } + return self; +} + +- (void)dealloc { + [self.detailTextField release]; + [super dealloc]; +} + + +#pragma mark - View Functions + +- (void)layoutSubviews { + [super layoutSubviews]; + + CGRect frame; + frame.origin.x = 83; + frame.origin.y = 0; + frame.size.height = 44; + + CGRect superframe = [self frame]; + frame.size.width = superframe.size.width - frame.origin.x - 10; + [self.detailTextField setFrame:frame]; +} + + +#pragma mark - UITableViewCell Functions + +- (void)setEditing:(BOOL)editing animated:(BOOL)animated { + [super setEditing:editing animated:animated]; + if(editing) { + [self.detailTextField setHidden:FALSE]; + [self.detailTextLabel setHidden:TRUE]; + } else { + [self.detailTextField setHidden:TRUE]; + [self.detailTextLabel setHidden:FALSE]; + } +} + +- (void)setEditing:(BOOL)editing { + [self setEditing:editing animated:FALSE]; +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated +{ + [super setSelected:selected animated:animated]; +} + + +#pragma mark - UITextFieldDelegate Functions + +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + [textField resignFirstResponder]; + return YES; +} + +@end diff --git a/Classes/LinphoneUI/UIModalViewController.h b/Classes/LinphoneUI/UIModalViewController.h index f422b632a..929414823 100644 --- a/Classes/LinphoneUI/UIModalViewController.h +++ b/Classes/LinphoneUI/UIModalViewController.h @@ -23,16 +23,17 @@ @protocol UIModalViewDelegate -- (void)modalViewDismiss:(UIModalViewController*)controller value:(int)value; +- (void)modalViewDismiss:(UIModalViewController*)controller value:(id)value; @end @interface UIModalViewController : UIViewController { + BOOL dismissed; id modalDelegate; } - (void)setModalDelegate:(id)delegate; -- (void)dismiss:(int)value; +- (void)dismiss:(id)value; - (void)dismiss; @end diff --git a/Classes/LinphoneUI/UIModalViewController.m b/Classes/LinphoneUI/UIModalViewController.m index 6207ccbb8..e2c888f13 100644 --- a/Classes/LinphoneUI/UIModalViewController.m +++ b/Classes/LinphoneUI/UIModalViewController.m @@ -21,14 +21,52 @@ @implementation UIModalViewController -- (void)dismiss:(int)value { +- (void)initUIModalViewController { + dismissed = FALSE; +} + +- (id)init { + self = [super init]; + if (self) { + [self initUIModalViewController]; + } + return self; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if (self) { + [self initUIModalViewController]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (self) { + [self initUIModalViewController]; + } + return self; +} + +- (void)dismiss:(id)value { if(modalDelegate != nil) [modalDelegate modalViewDismiss:self value:value]; + + if(!dismissed) { + dismissed = true; + [self autorelease]; + } } - (void)dismiss{ if(modalDelegate != nil) - [modalDelegate modalViewDismiss:self value:0]; + [modalDelegate modalViewDismiss:self value:nil]; + + if(!dismissed) { + dismissed = true; + [self autorelease]; + } } - (void)setModalDelegate:(id)delegate { diff --git a/Classes/LinphoneUI/UIView+ModalStack.h b/Classes/LinphoneUI/UIView+ModalStack.h new file mode 100644 index 000000000..c036ad7ff --- /dev/null +++ b/Classes/LinphoneUI/UIView+ModalStack.h @@ -0,0 +1,29 @@ +/* UIView+ModalStack.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +#import "UIModalViewController.h" + +@interface UIView (ModalStack) + +- (void)addModalView:(UIView*)view; +- (void)removeModalView:(UIView*)view; + +@end diff --git a/Classes/LinphoneUI/UIView+ModalStack.m b/Classes/LinphoneUI/UIView+ModalStack.m new file mode 100644 index 000000000..24170c292 --- /dev/null +++ b/Classes/LinphoneUI/UIView+ModalStack.m @@ -0,0 +1,49 @@ +/* UIView+ModalStack.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +#import "UIView+ModalStack.h" + +@implementation UIView (ModalStack) + +- (void)addModalView:(UIView*)view { + CATransition* trans = [CATransition animation]; + [trans setType:kCATransitionFade]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + [trans setSubtype:kCATransitionFromRight]; + [self.layer addAnimation:trans forKey:@"Appear"]; + + [self addSubview:view]; + [self bringSubviewToFront:view]; +} + +- (void)removeModalView:(UIView*)view { + CATransition* trans = [CATransition animation]; + [trans setType:kCATransitionFade]; + [trans setDuration:0.35]; + [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; + [trans setSubtype:kCATransitionFromRight]; + [self.layer addAnimation:trans forKey:@"Disappear"]; + + [view removeFromSuperview]; +} + +@end diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index fab26455c..212884dea 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -43,8 +43,6 @@ typedef enum _PhoneView { @private UICompositeViewController *mainViewController; - NSMutableArray *modalControllers; - NSMutableDictionary *viewDescriptions; UIActionSheet *incomingCallActionSheet; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index a74aea4df..0eab53ed0 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -36,6 +36,7 @@ #import "ContactDetailsViewController.h" #import "AbstractCall.h" +#import "UIView+ModalStack.h" static PhoneMainView* phoneMainViewInstance=nil; @@ -55,7 +56,6 @@ static PhoneMainView* phoneMainViewInstance=nil; // Init view descriptions viewDescriptions = [[NSMutableDictionary alloc] init]; - modalControllers = [[NSMutableArray alloc] init]; } - (id)init { @@ -90,9 +90,6 @@ static PhoneMainView* phoneMainViewInstance=nil; [viewDescriptions removeAllObjects]; [viewDescriptions release]; - [modalControllers removeAllObjects]; - [modalControllers release]; - [viewStack release]; [super dealloc]; @@ -458,7 +455,8 @@ static PhoneMainView* phoneMainViewInstance=nil; } else { IncomingCallViewController *controller = [[IncomingCallViewController alloc] init]; [controller setCall:call]; - [self addModalViewController:controller]; + [controller setModalDelegate:self]; + [[self view] addModalView:[controller view]]; } } @@ -519,37 +517,9 @@ static PhoneMainView* phoneMainViewInstance=nil; #pragma mark - Modal Functions -- (void)modalViewDismiss:(UIModalViewController*)controller value:(int)value { - [self removeModalViewController:controller]; -} - -- (void)addModalViewController:(UIModalViewController*)controller { - [controller setModalDelegate:self]; - [modalControllers insertObject:controller atIndex:0]; - - CATransition* trans = [CATransition animation]; - [trans setType:kCATransitionFade]; - [trans setDuration:0.35]; - [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; - [trans setSubtype:kCATransitionFromRight]; - [[self view].layer addAnimation:trans forKey:@"Appear"]; - - [[self view] addSubview:[controller view]]; - [[self view] bringSubviewToFront:[controller view]]; -} - -- (void)removeModalViewController:(UIModalViewController*)controller { +- (void)modalViewDismiss:(UIModalViewController*)controller value:(id)value { [controller setModalDelegate:nil]; - [modalControllers removeObject:controller]; - - CATransition* trans = [CATransition animation]; - [trans setType:kCATransitionFade]; - [trans setDuration:0.35]; - [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; - [trans setSubtype:kCATransitionFromRight]; - [[self view].layer addAnimation:trans forKey:@"Disappear"]; - - [[controller view] removeFromSuperview]; + [[self view] removeModalView:[controller view]]; } @end \ No newline at end of file diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 41e117729..8062de0a5 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -46,18 +46,35 @@ } +#pragma mark - + ++ (void)removeBackground:(UIView*)view { + if([view isKindOfClass:[UITableView class]]) { + [view setBackgroundColor:[UIColor clearColor]]; + } + for(UIView *subview in [view subviews]) { + [SettingsViewController removeBackground:subview]; + } +} + #pragma mark - ViewController Functions - (void)viewDidLoad { + [super viewDidLoad]; + settingsController.delegate = self; settingsController.settingsReaderDelegate = self; settingsController.settingsStore=[[LinphoneManager instance] settingsStore]; settingsController.showCreditsFooter = FALSE; navigationController.view.frame = self.view.frame; + [SettingsViewController removeBackground:navigationController.view]; + [SettingsViewController removeBackground:settingsController.view]; [self.view addSubview: navigationController.view]; } + + - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { diff --git a/Classes/SettingsViewController.xib b/Classes/SettingsViewController.xib index 38b76b8c3..09bf98376 100644 --- a/Classes/SettingsViewController.xib +++ b/Classes/SettingsViewController.xib @@ -11,12 +11,13 @@ 1181 + IBProxyObject + IBUINavigationController + IBUIViewController + IBUIImageView IBUINavigationBar IBUINavigationItem - IBUIViewController IBUIView - IBUINavigationController - IBProxyObject com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -37,9 +38,23 @@ 274 + + + + 292 + {320, 460} + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + numpad_background.png + + + {320, 460} - _NS:9 IBCocoaTouchFramework @@ -66,7 +81,6 @@ NO - Settings IBCocoaTouchFramework @@ -132,6 +146,9 @@ 4 + + + @@ -165,6 +182,12 @@ settingsItem + + 16 + + + background + @@ -175,6 +198,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin IASKAppSettingsViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -183,64 +207,9 @@ - 15 - - - - - IASKAppSettingsViewController - UITableViewController - - dismiss: - id - - - dismiss: - - dismiss: - id - - - - delegate - id - - - delegate - - delegate - id - - - - IBProjectSource - ./Classes/IASKAppSettingsViewController.h - - - - SettingsViewController - UIViewController - - UINavigationController - IASKAppSettingsViewController - - - - navigationController - UINavigationController - - - settingsController - IASKAppSettingsViewController - - - - IBProjectSource - ./Classes/SettingsViewController.h - - - + 17 + 0 IBCocoaTouchFramework @@ -249,6 +218,10 @@ YES 3 + + numpad_background.png + {640, 523} + 1181 diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 226f61ece..c32db0ad4 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -93,6 +93,7 @@ UICompositeViewDescription *description = [UICompositeViewDescription alloc]; #pragma mark - ViewController Functions - (void)viewDidLoad { + [super viewDidLoad]; [self changeView:welcomeView back:FALSE animation:FALSE]; } diff --git a/Resources/contact_bar_background.png b/Resources/contact_bar_background.png new file mode 100644 index 0000000000000000000000000000000000000000..e3638e1976b397c669e71c428631487b600fe13e GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^tUz4K!2~2Z_4gEmr~;2jAk8fd!i)^F=12eq*-Jcq zUD@xjb8+$VX`9TE0SY;Ix;TbdoKF7p|Gz!6P(qRe>*7CwcBVgdST0F(cfOn$^x0#o ze8y*uQ2QHS`gf%#TxQ;T*?R5U#SymKSBR)Sm1em7dBT_DR>iJBvlu*G{an^LB{Ts5 D?eH-_ literal 0 HcmV?d00001 diff --git a/Resources/contact_ok_default.png b/Resources/contact_ok_default.png new file mode 100644 index 0000000000000000000000000000000000000000..0c49ac3d5414176c98d001554a4c31ece99bb328 GIT binary patch literal 4336 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 literal 0 HcmV?d00001 diff --git a/Resources/contact_ok_over.png b/Resources/contact_ok_over.png new file mode 100644 index 0000000000000000000000000000000000000000..4fe6248f82917e3f2aad61b5c687d3170e82ad29 GIT binary patch literal 4006 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index bd29d5d5e..63551e32d 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -370,6 +370,14 @@ D37295DB158B3C9600D2C0C7 /* video_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */; }; D37295DC158B3C9600D2C0C7 /* video_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */; }; D377BBFA15A19DA6002B696B /* video_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D377BBF915A19DA6002B696B /* video_on_disabled.png */; }; + D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; + D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; + D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */; }; + D378906815AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */; }; + D378906A15AC37C800BD776C /* contact_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D378906915AC37C800BD776C /* contact_bar_background.png */; }; + D378906B15AC37C800BD776C /* contact_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D378906915AC37C800BD776C /* contact_bar_background.png */; }; + D378907515AC448A00BD776C /* UIView+ModalStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D378907415AC448A00BD776C /* UIView+ModalStack.m */; }; + D378907615AC448A00BD776C /* UIView+ModalStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D378907415AC448A00BD776C /* UIView+ModalStack.m */; }; D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; D37B96B815A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; D37B96B915A1A6F20005CCD2 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; }; @@ -487,6 +495,12 @@ D3C2814C15A2D38D0098AA42 /* dialer_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2814A15A2D38D0098AA42 /* dialer_selected.png */; }; D3C2815215A2D64A0098AA42 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; D3C2815315A2D64A0098AA42 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; + D3C6526715AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */; }; + D3C6526815AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */; }; + D3C6526B15AC228A0092A874 /* contact_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526915AC228A0092A874 /* contact_ok_default.png */; }; + D3C6526C15AC228A0092A874 /* contact_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526915AC228A0092A874 /* contact_ok_default.png */; }; + D3C6526D15AC228A0092A874 /* contact_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526A15AC228A0092A874 /* contact_ok_over.png */; }; + D3C6526E15AC228A0092A874 /* contact_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526A15AC228A0092A874 /* contact_ok_over.png */; }; D3C714B3159DB84400705B8E /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; D3C714B4159DB84400705B8E /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; D3D14E7715A70EE30074A527 /* UIChatRoomHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3D14E7515A70EE20074A527 /* UIChatRoomHeader.m */; }; @@ -869,7 +883,7 @@ 2214EBF212F86360002A5394 /* UIMicroButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMicroButton.m; sourceTree = ""; }; 2218A5CE12F973450088A667 /* LogView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogView.h; sourceTree = ""; }; 2218A92212FBE1340088A667 /* FirstLoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstLoginViewController.h; sourceTree = ""; }; - 2218A92312FBE1340088A667 /* FirstLoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FirstLoginViewController.m; sourceTree = ""; }; + 2218A92312FBE1340088A667 /* FirstLoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = FirstLoginViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FirstLoginViewController.xib; sourceTree = ""; }; 22276E8013C73D3100210156 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "liblinphone-sdk/apple-darwin/lib/libavcodec.a"; sourceTree = ""; }; 22276E8113C73D3100210156 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = "liblinphone-sdk/apple-darwin/lib/libavutil.a"; sourceTree = ""; }; @@ -914,11 +928,11 @@ 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIBluetoothButton.m; sourceTree = ""; }; 22C7560513265C6A007BC101 /* aes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = ""; }; 22C7560613265C6A007BC101 /* asn1.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1.h; sourceTree = ""; }; - 22C7560713265C6A007BC101 /* asn1_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1_mac.h; sourceTree = ""; }; + 22C7560713265C6A007BC101 /* asn1_mac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = asn1_mac.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 22C7560813265C6A007BC101 /* asn1t.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = asn1t.h; sourceTree = ""; }; 22C7560913265C6A007BC101 /* bio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bio.h; sourceTree = ""; }; 22C7560A13265C6A007BC101 /* blowfish.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = blowfish.h; sourceTree = ""; }; - 22C7560B13265C6A007BC101 /* bn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bn.h; sourceTree = ""; }; + 22C7560B13265C6A007BC101 /* bn.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = bn.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 22C7560C13265C6A007BC101 /* buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = buffer.h; sourceTree = ""; }; 22C7560D13265C6A007BC101 /* cast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cast.h; sourceTree = ""; }; 22C7560E13265C6A007BC101 /* comp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = comp.h; sourceTree = ""; }; @@ -936,7 +950,7 @@ 22C7561A13265C6A007BC101 /* ec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ec.h; sourceTree = ""; }; 22C7561B13265C6A007BC101 /* ecdh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecdh.h; sourceTree = ""; }; 22C7561C13265C6A007BC101 /* ecdsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ecdsa.h; sourceTree = ""; }; - 22C7561D13265C6A007BC101 /* engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = engine.h; sourceTree = ""; }; + 22C7561D13265C6A007BC101 /* engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = engine.h; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; 22C7561E13265C6A007BC101 /* err.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = err.h; sourceTree = ""; }; 22C7561F13265C6A007BC101 /* evp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = evp.h; sourceTree = ""; }; 22C7562013265C6A007BC101 /* fips.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fips.h; sourceTree = ""; }; @@ -994,7 +1008,7 @@ 22E5B0AD133B5EA20044EA25 /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "liblinphone-sdk/apple-darwin/lib/libssl.a"; sourceTree = ""; }; 22E5B0AE133B5EA20044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = ""; }; 22F2508B107141E100AC9B3F /* DialerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DialerViewController.h; sourceTree = ""; }; - 22F2508C107141E100AC9B3F /* DialerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DialerViewController.m; sourceTree = ""; }; + 22F2508C107141E100AC9B3F /* DialerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = DialerViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 22F2508D107141E100AC9B3F /* DialerViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DialerViewController.xib; sourceTree = ""; }; 22F254801073D99800AC9B3F /* ringback.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringback.wav; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/ringback.wav"; sourceTree = ""; }; 22F51EF5107FA66500F98953 /* untitled.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = untitled.plist; sourceTree = ""; }; @@ -1075,7 +1089,7 @@ D32B6E2B15A5C0800033019F /* database.sqlite */ = {isa = PBXFileReference; lastKnownFileType = file; name = database.sqlite; path = Resources/database.sqlite; sourceTree = ""; }; D32B6E2E15A5C0AC0033019F /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; D32B6E3615A5C2430033019F /* ChatModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ChatModel.h; path = Model/ChatModel.h; sourceTree = ""; }; - D32B6E3715A5C2430033019F /* ChatModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ChatModel.m; path = Model/ChatModel.m; sourceTree = ""; }; + D32B6E3715A5C2430033019F /* ChatModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = ChatModel.m; path = Model/ChatModel.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FastAddressBook.h; path = Utils/FastAddressBook.h; sourceTree = ""; }; D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FastAddressBook.m; path = Utils/FastAddressBook.m; sourceTree = ""; }; D3432A5C158A4446001C6B0B /* led_connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_connected.png; path = Resources/led_connected.png; sourceTree = ""; }; @@ -1105,7 +1119,7 @@ D35406F515A47E9E007E7E81 /* button_background_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = button_background_default.png; path = Resources/button_background_default.png; sourceTree = ""; }; D35406F615A47E9E007E7E81 /* button_background_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = button_background_over.png; path = Resources/button_background_over.png; sourceTree = ""; }; D35497FB15875372000081D8 /* ContactsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsViewController.h; sourceTree = ""; }; - D35497FC15875372000081D8 /* ContactsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactsViewController.m; sourceTree = ""; }; + D35497FC15875372000081D8 /* ContactsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ContactsViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D35497FD15875372000081D8 /* ContactsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactsViewController.xib; sourceTree = ""; }; D354980215875534000081D8 /* contacts_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_selected.png; path = Resources/contacts_all_selected.png; sourceTree = ""; }; D354980315875534000081D8 /* contacts_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_default.png; path = Resources/contacts_all_default.png; sourceTree = ""; }; @@ -1114,7 +1128,7 @@ D354980E15875608000081D8 /* contacts_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_add_default.png; path = Resources/contacts_add_default.png; sourceTree = ""; }; D354980F15875608000081D8 /* contacts_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_add_over.png; path = Resources/contacts_add_over.png; sourceTree = ""; }; D3549814158761CF000081D8 /* ContactsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsTableViewController.h; sourceTree = ""; }; - D3549815158761D0000081D8 /* ContactsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactsTableViewController.m; sourceTree = ""; }; + D3549815158761D0000081D8 /* ContactsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ContactsTableViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D354981815876FE7000081D8 /* list_details_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_details_default.png; path = Resources/list_details_default.png; sourceTree = ""; }; D354981915876FE7000081D8 /* list_details_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_details_over.png; path = Resources/list_details_over.png; sourceTree = ""; }; D354981E1587716B000081D8 /* UIStateBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIStateBar.h; sourceTree = ""; }; @@ -1153,6 +1167,12 @@ D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPauseButton.m; sourceTree = ""; }; D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_off_disabled.png; path = Resources/video_off_disabled.png; sourceTree = ""; }; D377BBF915A19DA6002B696B /* video_on_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_disabled.png; path = Resources/video_on_disabled.png; sourceTree = ""; }; + D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsLabelViewController.h; sourceTree = ""; }; + D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsLabelViewController.m; sourceTree = ""; }; + D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactDetailsLabelViewController.xib; sourceTree = ""; }; + D378906915AC37C800BD776C /* contact_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_bar_background.png; path = Resources/contact_bar_background.png; sourceTree = ""; }; + D378907415AC448A00BD776C /* UIView+ModalStack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+ModalStack.m"; sourceTree = ""; }; + D378907715AC44A300BD776C /* UIView+ModalStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+ModalStack.h"; sourceTree = ""; }; D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_default.png; path = Resources/call_state_delete_default.png; sourceTree = ""; }; D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_over.png; path = Resources/call_state_delete_over.png; sourceTree = ""; }; D37C638C15AAD251009D0BAC /* contact_number_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_number_over.png; path = Resources/contact_number_over.png; sourceTree = ""; }; @@ -1165,18 +1185,18 @@ D37DC6BF1594AE1800B2A5EB /* LinphoneCoreSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCoreSettingsStore.h; sourceTree = ""; }; D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCoreSettingsStore.m; sourceTree = ""; }; D37DC6C51594AE6F00B2A5EB /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = ""; }; - D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsViewController.m; sourceTree = ""; }; + D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKAppSettingsViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D37DC6C71594AE6F00B2A5EB /* IASKAppSettingsWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsWebViewController.h; sourceTree = ""; }; - D37DC6C81594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsWebViewController.m; sourceTree = ""; }; + D37DC6C81594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKAppSettingsWebViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D37DC6C91594AE6F00B2A5EB /* IASKSpecifierValuesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifierValuesViewController.h; sourceTree = ""; }; D37DC6CA1594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifierValuesViewController.m; sourceTree = ""; }; D37DC6CB1594AE6F00B2A5EB /* IASKViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKViewController.h; sourceTree = ""; }; D37DC6CD1594AE6F00B2A5EB /* IASKSettingsReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsReader.h; sourceTree = ""; }; - D37DC6CE1594AE6F00B2A5EB /* IASKSettingsReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsReader.m; sourceTree = ""; }; + D37DC6CE1594AE6F00B2A5EB /* IASKSettingsReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKSettingsReader.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D37DC6CF1594AE6F00B2A5EB /* IASKSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStore.h; sourceTree = ""; }; D37DC6D01594AE6F00B2A5EB /* IASKSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStore.m; sourceTree = ""; }; D37DC6D11594AE6F00B2A5EB /* IASKSettingsStoreFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreFile.h; sourceTree = ""; }; - D37DC6D21594AE6F00B2A5EB /* IASKSettingsStoreFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreFile.m; sourceTree = ""; }; + D37DC6D21594AE6F00B2A5EB /* IASKSettingsStoreFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKSettingsStoreFile.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D37DC6D31594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreUserDefaults.h; sourceTree = ""; }; D37DC6D41594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreUserDefaults.m; sourceTree = ""; }; D37DC6D51594AE6F00B2A5EB /* IASKSpecifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifier.h; sourceTree = ""; }; @@ -1188,7 +1208,7 @@ D37DC6DC1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTitleValueSpecifierViewCell.h; sourceTree = ""; }; D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTitleValueSpecifierViewCell.m; sourceTree = ""; }; D37DC6DE1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSToggleSwitchSpecifierViewCell.h; sourceTree = ""; }; - D37DC6DF1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSToggleSwitchSpecifierViewCell.m; sourceTree = ""; }; + D37DC6DF1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKPSToggleSwitchSpecifierViewCell.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D37DC6E01594AE6F00B2A5EB /* IASKSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSlider.h; sourceTree = ""; }; D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSlider.m; sourceTree = ""; }; D37DC6E21594AE6F00B2A5EB /* IASKSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSwitch.h; sourceTree = ""; }; @@ -1241,6 +1261,10 @@ D3B9A3DE15A58C450096EA4E /* chat_send_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_send_over.png; path = Resources/chat_send_over.png; sourceTree = ""; }; D3C2814A15A2D38D0098AA42 /* dialer_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_selected.png; path = Resources/dialer_selected.png; sourceTree = ""; }; D3C2815115A2D64A0098AA42 /* numpad_star_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_star_over.png; path = Resources/numpad_star_over.png; sourceTree = ""; }; + D3C6526515AC1A8F0092A874 /* UIEditableTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIEditableTableViewCell.h; sourceTree = ""; }; + D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIEditableTableViewCell.m; sourceTree = ""; }; + D3C6526915AC228A0092A874 /* contact_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_ok_default.png; path = Resources/contact_ok_default.png; sourceTree = ""; }; + D3C6526A15AC228A0092A874 /* contact_ok_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_ok_over.png; path = Resources/contact_ok_over.png; sourceTree = ""; }; D3C714B2159DB84400705B8E /* toy-mono.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "toy-mono.wav"; path = "Resources/toy-mono.wav"; sourceTree = ""; }; D3D14E7415A70EE20074A527 /* UIChatRoomHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIChatRoomHeader.h; sourceTree = ""; }; D3D14E7515A70EE20074A527 /* UIChatRoomHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIChatRoomHeader.m; sourceTree = ""; }; @@ -1288,12 +1312,12 @@ D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_selected.png; path = Resources/history_missed_selected.png; sourceTree = ""; }; D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_default.png; path = Resources/history_missed_default.png; sourceTree = ""; }; D3ED3EA41587334B006C0DE4 /* HistoryTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryTableViewController.h; sourceTree = ""; }; - D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryTableViewController.m; sourceTree = ""; }; + D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = HistoryTableViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = ""; }; D3ED3EB515873928006C0DE4 /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = ""; }; - D3ED3EB615873929006C0DE4 /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryViewController.m; sourceTree = ""; }; + D3ED3EB615873929006C0DE4 /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = HistoryViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D3F26BEA159869A6005F9CAB /* AbstractCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AbstractCall.h; path = Utils/AbstractCall.h; sourceTree = ""; }; - D3F26BEB159869A6005F9CAB /* AbstractCall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AbstractCall.m; path = Utils/AbstractCall.m; sourceTree = ""; }; + D3F26BEB159869A6005F9CAB /* AbstractCall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AbstractCall.m; path = Utils/AbstractCall.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D3F26BEE15986B71005F9CAB /* IncomingCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IncomingCallViewController.h; sourceTree = ""; }; D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IncomingCallViewController.m; sourceTree = ""; }; D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IncomingCallViewController.xib; sourceTree = ""; }; @@ -1479,6 +1503,9 @@ 22E0A820111C44E100B04932 /* ConsoleViewController.h */, 22E0A81F111C44E100B04932 /* ConsoleViewController.m */, 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */, + D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */, + D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */, + D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */, D37C639915AADEF4009D0BAC /* ContactDetailsTableViewController.h */, D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */, D3128FDE15AABC7E00A2147A /* ContactDetailsViewController.h */, @@ -1784,6 +1811,8 @@ D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */, 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */, 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */, + D3C6526515AC1A8F0092A874 /* UIEditableTableViewCell.h */, + D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */, 22BB1A67132FF16A005CD7AA /* UIEraseButton.h */, 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */, 2214EB8712F84EBB002A5394 /* UIHangUpButton.h */, @@ -1815,6 +1844,8 @@ D3196D3D15A32BD8007FEEBA /* UITransferButton.m */, 340751E5150F38FC00B89C47 /* UIVideoButton.h */, 340751E6150F38FD00B89C47 /* UIVideoButton.m */, + D378907715AC44A300BD776C /* UIView+ModalStack.h */, + D378907415AC448A00BD776C /* UIView+ModalStack.m */, ); path = LinphoneUI; sourceTree = ""; @@ -2042,10 +2073,13 @@ D31AAF62159B5B6E002C6B02 /* conference_over.png */, D3128FE715AABE4E00A2147A /* contact_back_default.png */, D3128FE815AABE4E00A2147A /* contact_back_over.png */, + D378906915AC37C800BD776C /* contact_bar_background.png */, D3128FE915AABE4E00A2147A /* contact_edit_default.png */, D3128FEA15AABE4E00A2147A /* contact_edit_over.png */, D37C638D15AAD251009D0BAC /* contact_number.png */, D37C638C15AAD251009D0BAC /* contact_number_over.png */, + D3C6526915AC228A0092A874 /* contact_ok_default.png */, + D3C6526A15AC228A0092A874 /* contact_ok_over.png */, D354980E15875608000081D8 /* contacts_add_default.png */, D354980F15875608000081D8 /* contacts_add_over.png */, D354980315875534000081D8 /* contacts_all_default.png */, @@ -2643,6 +2677,10 @@ D37C638E15AAD251009D0BAC /* contact_number_over.png in Resources */, D37C639015AAD251009D0BAC /* contact_number.png in Resources */, D37C639715AADDAF009D0BAC /* UIContactDetailsHeader.xib in Resources */, + D3C6526B15AC228A0092A874 /* contact_ok_default.png in Resources */, + D3C6526D15AC228A0092A874 /* contact_ok_over.png in Resources */, + D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */, + D378906A15AC37C800BD776C /* contact_bar_background.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2869,6 +2907,10 @@ D37C638F15AAD251009D0BAC /* contact_number_over.png in Resources */, D37C639115AAD251009D0BAC /* contact_number.png in Resources */, D37C639815AADDAF009D0BAC /* UIContactDetailsHeader.xib in Resources */, + D3C6526C15AC228A0092A874 /* contact_ok_default.png in Resources */, + D3C6526E15AC228A0092A874 /* contact_ok_over.png in Resources */, + D378906815AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */, + D378906B15AC37C800BD776C /* contact_bar_background.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2954,6 +2996,9 @@ D3128FE115AABC7E00A2147A /* ContactDetailsViewController.m in Sources */, D37C639515AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */, D37C639B15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, + D3C6526715AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */, + D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, + D378907515AC448A00BD776C /* UIView+ModalStack.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3036,6 +3081,9 @@ D3128FE215AABC7E00A2147A /* ContactDetailsViewController.m in Sources */, D37C639615AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */, D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, + D3C6526815AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */, + D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, + D378907615AC448A00BD776C /* UIView+ModalStack.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 1a6ce74e8572733575559fee5c391c8934172865 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 11 Jul 2012 12:33:41 +0200 Subject: [PATCH 034/397] Add common background Fix Conference Header images Continue contact views --- Classes/ChatRoomTableViewController.m | 3 - Classes/ChatRoomViewController.m | 2 +- Classes/ChatRoomViewController.xib | 35 +- Classes/ChatTableViewController.m | 1 - Classes/ChatViewController.m | 2 +- Classes/ContactDetailsLabelViewController.xib | 46 +- Classes/ContactDetailsTableViewController.h | 19 +- Classes/ContactDetailsTableViewController.m | 524 ++++++++++++++---- Classes/ContactDetailsViewController.h | 3 + Classes/ContactDetailsViewController.m | 70 ++- Classes/ContactDetailsViewController.xib | 41 +- Classes/ContactsTableViewController.m | 97 ++-- Classes/DialerViewController.m | 7 +- Classes/DialerViewController.xib | 48 +- Classes/FirstLoginViewController.xib | 38 +- Classes/HistoryTableViewController.m | 1 - Classes/HistoryViewController.m | 2 +- Classes/InCallViewController.xib | 43 +- Classes/IncomingCallViewController.xib | 4 +- Classes/LinphoneUI/UIChatCell.h | 3 +- Classes/LinphoneUI/UIChatCell.m | 9 + Classes/LinphoneUI/UIChatRoomCell.h | 3 +- Classes/LinphoneUI/UIChatRoomCell.m | 11 + Classes/LinphoneUI/UIChatRoomHeader.h | 4 +- Classes/LinphoneUI/UIChatRoomHeader.m | 11 + .../LinphoneUI/UICompositeViewController.h | 2 +- .../LinphoneUI/UICompositeViewController.xib | 18 +- Classes/LinphoneUI/UIConferenceHeader.m | 2 +- Classes/LinphoneUI/UIConferenceHeader.xib | 12 +- Classes/LinphoneUI/UIContactCell.h | 4 +- Classes/LinphoneUI/UIContactCell.m | 22 +- Classes/LinphoneUI/UIContactDetailsFooter.h | 31 ++ Classes/LinphoneUI/UIContactDetailsFooter.m | 50 ++ Classes/LinphoneUI/UIContactDetailsFooter.xib | 194 +++++++ Classes/LinphoneUI/UIContactDetailsHeader.h | 21 +- Classes/LinphoneUI/UIContactDetailsHeader.m | 168 +++++- Classes/LinphoneUI/UIContactDetailsHeader.xib | 194 +++++-- Classes/LinphoneUI/UIEditableTableViewCell.h | 2 +- Classes/LinphoneUI/UIEditableTableViewCell.m | 15 +- Classes/LinphoneUI/UIHistoryCell.h | 4 +- Classes/LinphoneUI/UIHistoryCell.m | 8 + Classes/PhoneMainView.xib | 39 +- Classes/SettingsViewController.xib | 100 ++-- Classes/Utils/FastAddressBook.m | 2 +- Classes/WizardViewController.xib | 44 +- .../{numpad_background.png => background.png} | Bin Resources/button_alert_background_default.png | Bin 0 -> 1570 bytes Resources/button_alert_background_over.png | Bin 0 -> 1723 bytes linphone.xcodeproj/project.pbxproj | 38 +- 49 files changed, 1456 insertions(+), 541 deletions(-) create mode 100644 Classes/LinphoneUI/UIContactDetailsFooter.h create mode 100644 Classes/LinphoneUI/UIContactDetailsFooter.m create mode 100644 Classes/LinphoneUI/UIContactDetailsFooter.xib rename Resources/{numpad_background.png => background.png} (100%) create mode 100644 Resources/button_alert_background_default.png create mode 100644 Resources/button_alert_background_over.png diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index 32dcbc629..735dec194 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -41,7 +41,6 @@ [[self tableView] reloadData]; } - #pragma mark - UITableViewDataSource Functions - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { @@ -61,7 +60,6 @@ } [cell setChat:[data objectAtIndex:[indexPath row]]]; - [cell update]; return cell; } @@ -73,7 +71,6 @@ UIChatRoomHeader *headerController = [[UIChatRoomHeader alloc] init]; UIView *headerView = [headerController view]; [headerController setContact:remoteContact]; - [headerController update]; [headerController release]; return headerView; } diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 515db7f71..fbfa3bedb 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -86,7 +86,7 @@ name:@"LinphoneTextReceived" object:nil]; if([tableController isEditing]) - [tableController setEditing:FALSE]; + [tableController setEditing:FALSE animated:FALSE]; [editButton setOff]; [[tableController tableView] reloadData]; } diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib index 6e92c38e9..f4708c7a5 100644 --- a/Classes/ChatRoomViewController.xib +++ b/Classes/ChatRoomViewController.xib @@ -39,21 +39,6 @@ 292 - - - 292 - {320, 460} - - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - numpad_background.png - - 290 @@ -151,7 +136,7 @@ _NS:9 - + 3 MCAwAA @@ -176,7 +161,6 @@ {{250, 0}, {70, 59}} - _NS:9 NO @@ -270,13 +254,9 @@ {320, 460} - + _NS:9 - - 3 - MQA - - + IBCocoaTouchFramework @@ -427,7 +407,6 @@ - @@ -495,12 +474,6 @@ tableController - - 34 - - - background - @@ -518,7 +491,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin ChatRoomTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -625,7 +597,6 @@ {140, 117} {140, 117} {140, 117} - {640, 523} 1181 diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index c919595ed..ba4d6c934 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -62,7 +62,6 @@ } [cell setChat:[data objectAtIndex:[indexPath row]]]; - [cell update]; return cell; } diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 25a7fb3f6..8afbf7dc6 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -59,7 +59,7 @@ name:@"LinphoneTextReceived" object:nil]; if([tableController isEditing]) - [tableController setEditing:FALSE]; + [tableController setEditing:FALSE animated:FALSE]; [editButton setOff]; [[tableController tableView] reloadData]; } diff --git a/Classes/ContactDetailsLabelViewController.xib b/Classes/ContactDetailsLabelViewController.xib index dbc7d7a22..68a1ac505 100644 --- a/Classes/ContactDetailsLabelViewController.xib +++ b/Classes/ContactDetailsLabelViewController.xib @@ -12,9 +12,9 @@ IBUITableView - IBUIImageView - IBUIView IBUIButton + IBUIView + IBUIImageView IBProxyObject @@ -37,19 +37,21 @@ 274 - + - 292 + 274 {320, 460} - _NS:9 NO + + + IBCocoaTouchFramework NSImage - numpad_background.png + background.png @@ -118,7 +120,7 @@ 3 MQA - + 2 @@ -130,9 +132,8 @@ {{0, 59}, {320, 401}} - _NS:9 - + 3 MCAwAA @@ -155,12 +156,7 @@ {{0, 20}, {320, 460}} - - - 3 - MQA - - + IBCocoaTouchFramework @@ -234,7 +230,7 @@ - + @@ -254,12 +250,6 @@ header - - 7 - - - background - 8 @@ -272,6 +262,12 @@ barBackground + + 16 + + + background + @@ -280,10 +276,10 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -291,7 +287,7 @@ - 15 + 16 @@ -344,10 +340,10 @@ YES 3 + {640, 523} {320, 117} {320, 117} {5, 117} - {640, 523} 1181 diff --git a/Classes/ContactDetailsTableViewController.h b/Classes/ContactDetailsTableViewController.h index 7eb886d69..0a4ca9519 100644 --- a/Classes/ContactDetailsTableViewController.h +++ b/Classes/ContactDetailsTableViewController.h @@ -21,17 +21,32 @@ #import #import "ContactDetailsLabelViewController.h" +#import "UIContactDetailsHeader.h" +#import "UIContactDetailsFooter.h" -@interface ContactDetailsTableViewController : UITableViewController { +@interface ContactDetailsTableViewController : UITableViewController { @private ABRecordRef contact; + ABRecordID contactID; NSMutableArray *dataCache; ABAddressBookRef addressBook; ContactDetailsLabelViewController *contactDetailsLabelViewController; NSMutableArray *labelArray; NSIndexPath *editingIndexPath; + BOOL inhibUpdate; +@public + UIContactDetailsHeader *headerController; + UIContactDetailsFooter *footerController; } -@property (nonatomic, assign) ABRecordRef contact; +@property (nonatomic, assign) ABRecordID contactID; + +- (void)newContact; +- (void)newContact:(NSString*)address; +- (void)removeContact; + +- (void)loadData; +- (void)saveData; +- (void)resetData; @end diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index e4cee9949..269d7b7fa 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -18,38 +18,31 @@ */ #import "ContactDetailsTableViewController.h" -#import "UIContactDetailsHeader.h" #import "PhoneMainView.h" #import "UIEditableTableViewCell.h" #import "UIView+ModalStack.h" @interface Entry : NSObject -@property (retain) NSString *key; -@property (retain) NSString *value; +@property (assign) ABMultiValueIdentifier identifier; @end @implementation Entry -@synthesize key; -@synthesize value; - +@synthesize identifier; #pragma mark - Lifecycle Functions -- (id)initWithData:(NSString*)akey value:(NSString*)avalue { +- (id)initWithData:(ABMultiValueIdentifier)aidentifier { self = [super init]; if (self != NULL) { - [self setKey:akey]; - [self setValue:avalue]; + [self setIdentifier:aidentifier]; } return self; } - (void)dealloc { - [key release]; - [value release]; [super dealloc]; } @@ -58,20 +51,28 @@ @implementation ContactDetailsTableViewController -@synthesize contact; +@synthesize contactID; +static const NSString *CONTACT_SIP_FIELD = @"SIP"; #pragma mark - Lifecycle Functions - (void)initContactDetailsTableViewController { - addressBook = ABAddressBookCreate(); + dataCache = [[NSMutableArray alloc] init]; labelArray = [[NSMutableArray alloc] initWithObjects: + @"Linphone", [NSString stringWithString:(NSString*)kABPersonPhoneMobileLabel], [NSString stringWithString:(NSString*)kABPersonPhoneIPhoneLabel], [NSString stringWithString:(NSString*)kABPersonPhoneMainLabel], [NSString stringWithString:(NSString*)kABPersonPhoneHomeFAXLabel], [NSString stringWithString:(NSString*)kABPersonPhoneWorkFAXLabel], nil]; + inhibUpdate = FALSE; + headerController = [[UIContactDetailsHeader alloc] init]; + footerController = [[UIContactDetailsFooter alloc] init]; + + addressBook = ABAddressBookCreate(); + ABAddressBookRegisterExternalChangeCallback(addressBook, sync_toc_address_book, self); } - (id)init { @@ -91,8 +92,14 @@ } - (void)dealloc { + ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_toc_address_book, self); + CFRelease(addressBook); + [labelArray release]; [dataCache release]; + [headerController release]; + [UIContactDetailsFooter release]; + [super dealloc]; } @@ -101,13 +108,11 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - ABAddressBookRegisterExternalChangeCallback (addressBook, sync_toc_address_book, self); + [self loadData]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - contact = nil; // Clear previous selection - ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_toc_address_book, self); if(contactDetailsLabelViewController != nil) { [[[self view] superview] removeModalView:[contactDetailsLabelViewController view]]; [editingIndexPath release]; @@ -117,6 +122,13 @@ } } +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + if(contactID == kABRecordInvalidID && contact != nil) { + CFRelease(contact); + } + contact = nil; +} #pragma mark - @@ -149,10 +161,71 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { ContactDetailsTableViewController* controller = (ContactDetailsTableViewController*)context; - ABRecordID recordID = ABRecordGetRecordID([controller contact]); - ABRecordRef newRecord = ABAddressBookGetPersonWithRecordID(addressBook, recordID); - if(newRecord) { - [controller setContact:newRecord]; + if(!controller->inhibUpdate) { + [controller resetData]; + } +} + +- (void)resetData { + if(contact == NULL) + return; + + NSLog(@"Reset data to contact %p", contact); + + ABAddressBookRevert(addressBook); + [self loadData]; +} + +- (void)removeContact { + if(contactID != kABRecordInvalidID) { + NSError* error = NULL; + ABAddressBookRemoveRecord(addressBook, contact, (CFErrorRef*)&error); + if (error != NULL) { + NSLog(@"Remove contact %p: Fail(%@)", contact, [error localizedDescription]); + } else { + NSLog(@"Remove contact %p: Success!", contact); + } + contactID = kABRecordInvalidID; + + // Save address book + error = NULL; + inhibUpdate = TRUE; + ABAddressBookSave(addressBook, (CFErrorRef*)&error); + inhibUpdate = FALSE; + if (error != NULL) { + NSLog(@"Save AddressBook: Fail(%@)", [error localizedDescription]); + } else { + NSLog(@"Save AddressBook: Success!"); + contactID = ABRecordGetRecordID(contact); + } + } +} + +- (void)saveData { + if(contact == NULL) + return; + + // Add contact to book + NSError* error = NULL; + if(contactID == kABRecordInvalidID) { + ABAddressBookAddRecord(addressBook, contact, (CFErrorRef*)&error); + if (error != NULL) { + NSLog(@"Add contact %p: Fail(%@)", contact, [error localizedDescription]); + } else { + NSLog(@"Add contact %p: Success!", contact); + } + } + + // Save address book + error = NULL; + inhibUpdate = TRUE; + ABAddressBookSave(addressBook, (CFErrorRef*)&error); + inhibUpdate = FALSE; + if (error != NULL) { + NSLog(@"Save AddressBook: Fail(%@)", [error localizedDescription]); + } else { + NSLog(@"Save AddressBook: Success!"); + contactID = ABRecordGetRecordID(contact); } } @@ -162,86 +235,182 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef if(contact == NULL) return; + NSLog(@"Load data from contact %p", contact); + // Phone numbers { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); - NSMutableArray *subArray = [[NSMutableArray alloc] init]; - for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { - CFStringRef lValue = ABMultiValueCopyValueAtIndex(lMap, i); - CFStringRef lLabel = ABMultiValueCopyLabelAtIndex(lMap, i); - Entry *entry = [[Entry alloc] initWithData:[NSString stringWithString:(NSString*)lLabel] value:[NSString stringWithString:(NSString*)lValue]]; - [subArray addObject: entry]; - [entry release]; - CFRelease(lLabel); - CFRelease(lValue); + NSMutableArray *subArray = [NSMutableArray array]; + if(lMap) { + for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { + ABMultiValueIdentifier identifier = ABMultiValueGetIdentifierAtIndex(lMap, i); + Entry *entry = [[Entry alloc] initWithData:identifier]; + [subArray addObject: entry]; + [entry release]; + } + CFRelease(lMap); } [dataCache addObject:subArray]; - CFRelease(lMap); } // SIP (IM) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); - NSMutableArray *subArray = [[NSMutableArray alloc] init]; - for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { - CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); - if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { - if(CFStringCompare((CFStringRef)@"SIP", CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { - CFStringRef lValue = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); - CFStringRef lLabel = ABMultiValueCopyLabelAtIndex(lMap, i); - Entry *entry = [[Entry alloc] initWithData:[NSString stringWithString:(NSString*)lLabel] value:[NSString stringWithString:(NSString*)lValue]]; - [subArray addObject: entry]; - [entry release]; - CFRelease(lLabel); - CFRelease(lValue); + NSMutableArray *subArray = [NSMutableArray array]; + if(lMap) { + for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { + CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); + if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { + if(CFStringCompare((CFStringRef)CONTACT_SIP_FIELD, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { + ABMultiValueIdentifier identifier = ABMultiValueGetIdentifierAtIndex(lMap, i); + Entry *entry = [[Entry alloc] initWithData:identifier]; + [subArray addObject: entry]; + [entry release]; + } } + CFRelease(lDict); } - CFRelease(lDict); + CFRelease(lMap); } [dataCache addObject:subArray]; - CFRelease(lMap); } + + [self.tableView reloadData]; } -- (void)addEntry:(UITableView*)tableview section:(NSInteger)section editing:(BOOL)editing animated:(BOOL)animated { +- (void)addEntry:(UITableView*)tableview section:(NSInteger)section animated:(BOOL)animated { NSMutableArray *sectionArray = [dataCache objectAtIndex:section]; NSUInteger count = [sectionArray count]; - Entry *entry = [[Entry alloc] initWithData:[labelArray objectAtIndex:0] value:@""]; - [sectionArray addObject:entry]; + if(section == 0) { + ABMultiValueIdentifier identifier; + ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); + ABMutableMultiValueRef lMap; + if(lcMap != NULL) { + lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + } else { + lMap = ABMultiValueCreateMutable(kABStringPropertyType); + } + ABMultiValueAddValueAndLabel(lMap, (CFStringRef)@"", (CFStringRef)[labelArray objectAtIndex:0], &identifier); + Entry *entry = [[Entry alloc] initWithData:identifier]; + [sectionArray addObject:entry]; + [entry release]; + + ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); + CFRelease(lMap); + } else if(section == 1) { + ABMultiValueIdentifier identifier; + ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + ABMutableMultiValueRef lMap; + if(lcMap != NULL) { + lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + } else { + lMap = ABMultiValueCreateMutable(kABDictionaryPropertyType); + } + CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; + CFTypeRef values[] = { @"", CONTACT_SIP_FIELD }; + CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); + ABMultiValueAddValueAndLabel(lMap, lDict, (CFStringRef)[labelArray objectAtIndex:0], &identifier); + CFRelease(lDict); + Entry *entry = [[Entry alloc] initWithData:identifier]; + [sectionArray addObject:entry]; + [entry release]; + + ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); + CFRelease(lMap); + } NSArray *tagInsertIndexPath = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:count inSection:section]]; - // Add or remove the Add row as appropriate. - UITableViewRowAnimation animationStyle = UITableViewRowAnimationNone; if (animated) { - animationStyle = UITableViewRowAnimationFade; + [tableview insertRowsAtIndexPaths:tagInsertIndexPath withRowAnimation:UITableViewRowAnimationFade]; } - [self.tableView insertRowsAtIndexPaths:tagInsertIndexPath withRowAnimation:animationStyle]; } -- (void)removeEntry:(UITableView*)tableview section:(NSInteger)section editing:(BOOL)editing animated:(BOOL)animated { - NSMutableArray *sectionArray = [dataCache objectAtIndex:section]; - for (int i = 0; i < [sectionArray count]; ++i) { - Entry *entry = [sectionArray objectAtIndex:i]; - if(![[entry value] length]) { - [sectionArray removeObjectAtIndex:i]; - NSArray *tagInsertIndexPath = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:i inSection:section]]; - UITableViewRowAnimation animationStyle = UITableViewRowAnimationNone; - if (animated) { - animationStyle = UITableViewRowAnimationFade; - } - [self.tableView deleteRowsAtIndexPaths:tagInsertIndexPath withRowAnimation:animationStyle]; +- (void)removeEmptyEntry:(UITableView*)tableview section:(NSInteger)section animated:(BOOL)animated { + NSMutableArray *sectionDict = [dataCache objectAtIndex: section]; + int row = [sectionDict count] - 1; + Entry *entry = [sectionDict objectAtIndex:row]; + if(section == 0) { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + CFStringRef valueRef = ABMultiValueCopyValueAtIndex(lMap, index); + if(![(NSString*) valueRef length]) { + [self removeEntry:tableview path:[NSIndexPath indexPathForRow:row inSection:section] animated:animated]; } + CFRelease(valueRef); + CFRelease(lMap); + } else if(section == 1) { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, index); + CFStringRef valueRef = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); + if(![(NSString*) valueRef length]) { + [self removeEntry:tableview path:[NSIndexPath indexPathForRow:row inSection:section] animated:animated]; + } + CFRelease(lDict); + CFRelease(lMap); + } +} + +- (void)removeEntry:(UITableView*)tableview path:(NSIndexPath*)indexPath animated:(BOOL)animated { + NSMutableArray *sectionArray = [dataCache objectAtIndex:[indexPath section]]; + Entry *entry = [sectionArray objectAtIndex:[indexPath row]]; + if([indexPath section] == 0) { + ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); + ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + ABMultiValueRemoveValueAndLabelAtIndex(lMap, index); + ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); + CFRelease(lMap); + } else if([indexPath section] == 1) { + ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + ABMultiValueRemoveValueAndLabelAtIndex(lMap, index); + ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); + CFRelease(lMap); + } + [sectionArray removeObjectAtIndex:[indexPath row]]; + + NSArray *tagInsertIndexPath = [NSArray arrayWithObject:indexPath]; + if (animated) { + [tableview deleteRowsAtIndexPaths:tagInsertIndexPath withRowAnimation:UITableViewRowAnimationFade]; } } #pragma mark - Property Functions -- (void)setContact:(ABRecordRef)acontact { - self->contact = acontact; +- (void)setContactID:(ABRecordID)acontactID { + self->contactID = acontactID; + contact = ABAddressBookGetPersonWithRecordID(addressBook, contactID); + [self loadData]; +} + +- (void)newContact { + contact = ABPersonCreate(); + self->contactID = kABRecordInvalidID; + [self loadData]; +} + +- (void)newContact:(NSString*)address { + contact = ABPersonCreate(); + ABMultiValueRef lMap = ABMultiValueCreateMutable(kABDictionaryPropertyType); + CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; + CFTypeRef values[] = { [address copy], CONTACT_SIP_FIELD }; + CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); + ABMultiValueAddValueAndLabel(lMap, lDict, (CFStringRef)[labelArray objectAtIndex:0], NULL); + CFRelease(lDict); + + ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); + CFRelease(lMap); + + self->contactID = kABRecordInvalidID; [self loadData]; - [self.tableView reloadData]; } @@ -260,24 +429,49 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef UIEditableTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { cell = [[[UIEditableTableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:kCellId] autorelease]; - // [cell setEditingAccessoryType:UITableViewCellAccessoryNone]; - // [cell setSelectionStyle: UITableViewCellSelectionStyleNone]; } - if ([indexPath row] < [[dataCache objectAtIndex:[indexPath section]] count]) { - NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; - Entry *entry = [sectionDict objectAtIndex:[indexPath row]]; - [cell.textLabel setText:[ContactDetailsTableViewController localizeLabel:[entry key]]]; - NSString *value = [entry value]; - [cell.detailTextLabel setText:value]; - [cell.detailTextField setText:value]; + + NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; + Entry *entry = [sectionDict objectAtIndex:[indexPath row]]; + + NSString *value = nil; + NSString *label = nil; + + if([indexPath section] == 0) { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); + label = [ContactDetailsTableViewController localizeLabel:(NSString*) labelRef]; + CFRelease(labelRef); + CFStringRef valueRef = ABMultiValueCopyValueAtIndex(lMap, index); + value = [ContactDetailsTableViewController localizeLabel:(NSString*) valueRef]; + CFRelease(valueRef); + CFRelease(lMap); + } else if([indexPath section] == 1) { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); + label = [ContactDetailsTableViewController localizeLabel:(NSString*) labelRef]; + CFRelease(labelRef); + CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, index); + CFStringRef valueRef = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); + value = [NSString stringWithString:(NSString*) valueRef]; + CFRelease(lDict); + CFRelease(lMap); } + + [cell.textLabel setText:label]; + [cell.detailTextLabel setText:value]; + [cell.detailTextField setText:value]; + [cell.detailTextField setDelegate:self]; if ([indexPath section] == 0) { - [cell.detailTextField setKeyboardType:UIKeyboardTypeNumbersAndPunctuation]; + [cell.detailTextField setKeyboardType:UIKeyboardTypePhonePad]; [cell.detailTextField setPlaceholder:@"Phone number"]; } else { [cell.detailTextField setKeyboardType:UIKeyboardTypeEmailAddress]; [cell.detailTextField setPlaceholder:@"SIP address"]; } + return cell; } @@ -286,9 +480,25 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; Entry *entry = [sectionDict objectAtIndex:[indexPath row]]; if (![self isEditing]) { - NSString *dest = [entry value]; + NSString *dest; + if([indexPath section] == 0) { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + CFStringRef valueRef = ABMultiValueCopyValueAtIndex(lMap, index); + dest = [ContactDetailsTableViewController localizeLabel:(NSString*) valueRef]; + CFRelease(valueRef); + CFRelease(lMap); + } else if([indexPath section] == 1) { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, index); + CFStringRef valueRef = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); + dest = [NSString stringWithString:(NSString*) valueRef]; + CFRelease(lDict); + CFRelease(lMap); + } if(![dest hasPrefix:@"sip:"]) - dest = [NSString stringWithFormat:@"sip:%@", [entry key]]; + dest = [NSString stringWithFormat:@"sip:%@", dest]; CFStringRef lDisplayName = ABRecordCopyCompositeName(contact); NSString *displayName = [NSString stringWithString:(NSString*) lDisplayName]; CFRelease(lDisplayName); @@ -300,9 +510,25 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef nil] autorelease]; [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; } else { + NSString *key; + if([indexPath section] == 0) { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); + key = [NSString stringWithString:(NSString*) labelRef]; + CFRelease(labelRef); + CFRelease(lMap); + } else if([indexPath section] == 1) { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); + key = [NSString stringWithString:(NSString*) labelRef]; + CFRelease(labelRef); + CFRelease(lMap); + } contactDetailsLabelViewController = [[ContactDetailsLabelViewController alloc] initWithNibName:@"ContactDetailsLabelViewController" bundle:[NSBundle mainBundle]]; - [contactDetailsLabelViewController setSelectedData:[entry key]]; + [contactDetailsLabelViewController setSelectedData:key]; [contactDetailsLabelViewController setDataList:[self getLocalizedLabels]]; [contactDetailsLabelViewController setModalDelegate:self]; editingIndexPath = [indexPath copy]; @@ -310,33 +536,39 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef } } +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + if (editingStyle == UITableViewCellEditingStyleInsert) { + [self addEntry:self.tableView section:[indexPath section] animated:TRUE]; + [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:FALSE]; + // Don't save yet as the user must set a name. + } else if (editingStyle == UITableViewCellEditingStyleDelete) { + [self removeEntry:self.tableView path:indexPath animated:TRUE]; + } +} #pragma mark - UITableViewDelegate Functions + - (void)setEditing:(BOOL)editing animated:(BOOL)animated { - // Add entries - - if(editing) { - [self.tableView beginUpdates]; - for (int section = 0; section <[self numberOfSectionsInTableView:[self tableView]]; ++section) { - [self addEntry:self.tableView section:section editing:editing animated:animated]; - } - [self.tableView endUpdates]; - } else { - [self.tableView beginUpdates]; - for (int section = 0; section <[self numberOfSectionsInTableView:[self tableView]]; ++section) { - [self removeEntry:self.tableView section:section editing:editing animated:animated]; - } - [self.tableView endUpdates]; - } - - // Set animated [super setEditing:editing animated:animated]; - + // Resign keyboard if(!editing) { [ContactDetailsTableViewController findAndResignFirstResponder:[self tableView]]; } + + if(editing) { + for (int section = 0; section <[self numberOfSectionsInTableView:[self tableView]]; ++section) { + [self addEntry:self.tableView section:section animated:animated]; + } + } else { + for (int section = 0; section <[self numberOfSectionsInTableView:[self tableView]]; ++section) { + [self removeEmptyEntry:self.tableView section:section animated:animated]; + } + } + + + [headerController setEditing:editing animated:animated]; } - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { @@ -349,17 +581,24 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { if(section == 0) { - UIContactDetailsHeader *headerController = [[UIContactDetailsHeader alloc] init]; UIView *headerView = [headerController view]; [headerController setContact:contact]; - [headerController update]; - [headerController release]; + [headerController setEditing:[self isEditing] animated:FALSE]; return headerView; } else { return [super tableView:tableView viewForHeaderInSection:section]; } } +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + if(section != 0) { + UIView *footerView = [footerController view]; + return footerView; + } else { + return [super tableView:tableView viewForHeaderInSection:section]; + } +} + - (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { if(section == 0) { return [super tableView:tableView titleForHeaderInSection:section]; @@ -368,14 +607,29 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef } } +- (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { + return @""; +} + - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if(section == 0) { - return [UIContactDetailsHeader height]; + return [UIContactDetailsHeader height:[self isEditing]]; } else { - return 22; + // Hide section if nothing in it + if([[dataCache objectAtIndex:section] count] > 0) + return 22; + else + return 0.000001f; // Hack UITableView = 0 } } +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + if(section != 0) { + return [UIContactDetailsFooter height:[self isEditing]]; + } + return 0.000001f; // Hack UITableView = 0 +} + #pragma mark - UIModalViewDeletage Functions @@ -384,10 +638,72 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef contactDetailsLabelViewController = nil; NSMutableArray *sectionDict = [dataCache objectAtIndex:[editingIndexPath section]]; Entry *entry = [sectionDict objectAtIndex:[editingIndexPath row]]; - [entry setKey:value]; - [[self tableView] reloadRowsAtIndexPaths:[NSArray arrayWithObject: editingIndexPath] withRowAnimation:FALSE]; + if([editingIndexPath section] == 0) { + ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); + ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)((NSString*)value), index); + ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); + CFRelease(lMap); + } else if([editingIndexPath section] == 1) { + ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)((NSString*)value), index); + ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); + CFRelease(lMap); + } + [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject: editingIndexPath] withRowAnimation:FALSE]; [editingIndexPath release]; editingIndexPath = nil; } + +#pragma mark - UITextFieldDelegate Functions + +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + [textField resignFirstResponder]; + return YES; +} + +- (BOOL)textFieldShouldEndEditing:(UITextField *)textField { + UIView *view = [textField superview]; + // Find TableViewCell + if(view != nil && ![view isKindOfClass:[UIEditableTableViewCell class]]) view = [view superview]; + if(view != nil) { + UIEditableTableViewCell *cell = (UIEditableTableViewCell*)view; + NSIndexPath *path = [self.tableView indexPathForCell:cell]; + NSMutableArray *sectionDict = [dataCache objectAtIndex:[path section]]; + Entry *entry = [sectionDict objectAtIndex:[path row]]; + NSString *value = [textField text]; + if([path section] == 0) { + ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); + ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + ABMultiValueReplaceValueAtIndex(lMap, (CFStringRef)value, index); + ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); + CFRelease(lMap); + } else if([path section] == 1) { + ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; + CFTypeRef values[] = { [value copy], CONTACT_SIP_FIELD }; + CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); + ABMultiValueReplaceValueAtIndex(lMap, lDict, index); + CFRelease(lDict); + ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); + CFRelease(lMap); + } + [cell.detailTextLabel setText:value]; + } else { + NSLog(@"Not valid UIEditableTableViewCell"); + } + return TRUE; +} + @end diff --git a/Classes/ContactDetailsViewController.h b/Classes/ContactDetailsViewController.h index 2cc90bcbc..0628ffe9e 100644 --- a/Classes/ContactDetailsViewController.h +++ b/Classes/ContactDetailsViewController.h @@ -37,4 +37,7 @@ - (IBAction)onBackClick:(id)event; - (IBAction)onEditClick:(id)event; +- (void)newContact; +- (void)newContact:(NSString*)address; + @end diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 4142ce1be..d905a6526 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -26,10 +26,12 @@ @synthesize contact; @synthesize editButton; + #pragma mark - Lifecycle Functions - (id)init { - return [super initWithNibName:@"ContactDetailsViewController" bundle:[NSBundle mainBundle]]; + self = [super initWithNibName:@"ContactDetailsViewController" bundle:[NSBundle mainBundle]]; + return self; } - (void)dealloc { @@ -39,11 +41,28 @@ } +#pragma mark - + +- (void)newContact { + [tableController newContact]; + [tableController setEditing:TRUE animated:FALSE]; + [[tableController tableView] reloadData]; + [editButton setOn]; +} + +- (void)newContact:(NSString*)address { + [tableController newContact:address]; + [tableController setEditing:TRUE animated:FALSE]; + [[tableController tableView] reloadData]; + [editButton setOn]; +} + + #pragma mark - Property Functions - (void)setContact:(ABRecordRef)acontact { self->contact = acontact; - [tableController setContact:contact]; + [tableController setContactID:ABRecordGetRecordID(acontact)]; } @@ -54,16 +73,30 @@ // Set selected+over background: IB lack ! [editButton setImage:[UIImage imageNamed:@"contact_ok_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Force view load + [tableController->footerController view]; + [tableController->footerController->removeButton addTarget:self + action:@selector(onRemove:) + forControlEvents:UIControlEventTouchUpInside]; } -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - if([tableController isEditing]) - [tableController setEditing:FALSE]; +- (void)viewDidUnload { + [super viewDidUnload]; + [tableController->footerController->removeButton removeTarget:self + action:@selector(onRemove:) + forControlEvents:UIControlEventTouchUpInside]; +} + +- (void)viewWillAppear:(BOOL)animated { + if([tableController isEditing]) { + [tableController resetData]; + [tableController setEditing:FALSE animated:FALSE]; + } + [super viewWillAppear:animated]; [editButton setOff]; } - #pragma mark - UICompositeViewDelegate Functions + (UICompositeViewDescription*) compositeViewDescription { @@ -81,11 +114,32 @@ #pragma mark - Action Functions - (IBAction)onBackClick:(id)event { - [[PhoneMainView instance] popView]; + if([tableController isEditing]) { + [tableController setEditing:FALSE animated:FALSE]; + [tableController resetData]; + [editButton setOff]; + if([tableController contactID] == kABRecordInvalidID) { + [[PhoneMainView instance] popView]; + } + } else { + [[PhoneMainView instance] popView]; + } } - (IBAction)onEditClick:(id)event { + [[tableController tableView] beginUpdates]; [tableController setEditing:![tableController isEditing] animated:TRUE]; + [[tableController tableView] endUpdates]; + if(![tableController isEditing]) { + [tableController saveData]; + } +} + +- (IBAction)onRemove:(id)event { + [tableController setEditing:FALSE animated:FALSE]; + [tableController removeContact]; + [editButton setOff]; + [[PhoneMainView instance] popView]; } @end diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib index fa5d16d7b..1646a1f85 100644 --- a/Classes/ContactDetailsViewController.xib +++ b/Classes/ContactDetailsViewController.xib @@ -11,11 +11,10 @@ 1181 - IBUITableViewController IBUIButton - IBUIImageView - IBUIView IBUITableView + IBUIView + IBUITableViewController IBProxyObject @@ -38,21 +37,6 @@ 274 - - - 292 - {320, 460} - - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - numpad_background.png - - 290 @@ -136,7 +120,7 @@ 3 MQA - + 2 @@ -149,7 +133,7 @@ _NS:9 - + 3 MCAwAA @@ -173,12 +157,8 @@ {{0, 20}, {320, 460}} - - - 3 - MQA - - + + IBCocoaTouchFramework @@ -273,7 +253,6 @@ 1 - @@ -312,12 +291,6 @@ backButton - - 11 - - - background - 19 @@ -339,7 +312,6 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin ContactDetailsTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -426,7 +398,6 @@ {320, 117} {320, 117} {320, 117} - {640, 523} 1181 diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 054367e77..a60d1364b 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -26,11 +26,14 @@ @synthesize sipFilter; + #pragma mark - Lifecycle Functions - (void)initContactsTableViewController { addressBookMap = [[OrderedDictionary alloc] init]; + addressBook = ABAddressBookCreate(); + ABAddressBookRegisterExternalChangeCallback(addressBook, sync_toc_address_book, self); } - (id)init { @@ -50,8 +53,10 @@ } - (void)dealloc { - [super dealloc]; + ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_toc_address_book, self); + CFRelease(addressBook); [addressBookMap removeAllObjects]; + [super dealloc]; } @@ -59,7 +64,7 @@ - (void)setSipFilter:(BOOL)asipFilter { self->sipFilter = asipFilter; - [[self tableView] reloadData]; + [self reloadData]; } @@ -67,26 +72,26 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { ContactsTableViewController* controller = (ContactsTableViewController*)context; + ABAddressBookRevert(addressBook); [(UITableView *)controller.view reloadData]; } - #pragma mark - ViewController Functions - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - ABAddressBookRegisterExternalChangeCallback (addressBook, sync_toc_address_book, self); + [self reloadData]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_toc_address_book, self); } #pragma mark - UITableViewDataSource Functions - (void)reloadData { + NSLog(@"Load contact list"); @synchronized (addressBookMap) { // Reset Address book @@ -120,13 +125,18 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef name=[NSString stringWithFormat:@"%@",[(NSString *)lLocalizedLastName retain]]; } else if(lLocalizedFirstName != nil) { name=[NSString stringWithFormat:@"%@",[(NSString *)lLocalizedFirstName retain]]; + } else { + } if(name != nil) { // Put in correct subDic NSString *firstChar = [[name substringToIndex:1] uppercaseString]; + if([firstChar characterAtIndex:0] < 'A' || [firstChar characterAtIndex:0] > 'Z') { + firstChar = @"#"; + } OrderedDictionary *subDic =[addressBookMap objectForKey: firstChar]; if(subDic == nil) { - subDic = [[OrderedDictionary alloc] init]; + subDic = [[[OrderedDictionary alloc] init] autorelease]; [addressBookMap insertObject:subDic forKey:firstChar selector:@selector(caseInsensitiveCompare:)]; } [subDic insertObject:lPerson forKey:name selector:@selector(caseInsensitiveCompare:)]; @@ -143,48 +153,73 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef } CFRelease(lContacts); } + [self.tableView reloadData]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - [self reloadData]; - return [addressBookMap count]; + return [addressBookMap count] + 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return [(OrderedDictionary *)[addressBookMap objectForKey: [addressBookMap keyAtIndex: section]] count]; + if(section == 0) { + return 1; + } else { + return [(OrderedDictionary *)[addressBookMap objectForKey: [addressBookMap keyAtIndex: section - 1]] count]; + } } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *kCellId = @"UIContactCell"; - UIContactCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; - if (cell == nil) { - cell = [[[UIContactCell alloc] initWithIdentifier:kCellId] autorelease]; + static NSString *kNewContactCellId = @"NewContactCell"; + + if([indexPath section] != 0) { + UIContactCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; + if (cell == nil) { + cell = [[[UIContactCell alloc] initWithIdentifier:kCellId] autorelease]; + } + OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section] - 1]]; + + NSString *key = [[subDic allKeys] objectAtIndex:[indexPath row]]; + ABRecordRef contact = [subDic objectForKey:key]; + [cell setContact: contact]; + return cell; + } else { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kNewContactCellId]; + if (cell == nil) { + cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kNewContactCellId] autorelease]; + } + [cell.textLabel setText:@"Add new contact"]; + return cell; } - - OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; - - NSString *key = [[subDic allKeys] objectAtIndex:[indexPath row]]; - ABRecordRef record = [subDic objectForKey:key]; - - [cell update: record]; - - return cell; } - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - return [addressBookMap keyAtIndex: section]; + if (section == 0) { + return @""; + } else { + return [addressBookMap keyAtIndex: section - 1]; + } } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; - ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]]; - - // Go to Contact details view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: lPerson, nil] autorelease] - , @"setContact:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; + if([indexPath section] == 0) { + // Go to Contact details view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: nil] autorelease] + , @"newContact", + nil] autorelease]; + [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; + } else { + OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section] - 1]]; + ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]]; + + // Go to Contact details view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: lPerson, nil] autorelease] + , @"setContact:", + nil] autorelease]; + [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; + } } @end diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 2d3c3f250..1fc186f4e 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -214,7 +214,12 @@ #pragma mark - Action Functions - (IBAction)onAddContactClick: (id) event { - + // Go to Contact details view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects:[addressField text], nil] autorelease] + , @"newContact:", + nil] autorelease]; + [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; } - (IBAction)onBackClick: (id) event { diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index 952fbc8bd..48117f852 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -46,24 +46,6 @@ 288 YES - - - 292 - {320, 259} - - - - _NS:9 - NO - - - - IBCocoaTouchFramework - - NSImage - numpad_background.png - - 292 @@ -372,14 +354,11 @@ {{0, 58}, {320, 260}} - + _NS:9 - + 3 - MQA - - 2 - + MCAwAA IBCocoaTouchFramework @@ -452,7 +431,9 @@ 3 MSAwAA - + + 2 + YES IBCocoaTouchFramework @@ -616,7 +597,6 @@ {{214, 0}, {106, 69}} - _NS:9 NO IBCocoaTouchFramework @@ -660,10 +640,7 @@ _NS:9 - - 2 - MC4wMjc0NTA5ODI0OCAwLjYwNzg0MzE2MDYgMSAwAA - + IBCocoaTouchFramework @@ -1056,7 +1033,6 @@ YES - @@ -1145,12 +1121,6 @@ 1 - - 177 - - - background - 182 @@ -1213,7 +1183,6 @@ -2.CustomClassName -2.IBPluginDependency 171.IBPluginDependency - 177.IBPluginDependency 178.IBPluginDependency 179.IBPluginDependency 180.IBPluginDependency @@ -1285,7 +1254,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICallButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1686,7 +1654,6 @@ call_disabled.png call_over.png dialer_address_background.png - numpad_background.png numpad_eight_default.png numpad_eight_over.png numpad_five_default.png @@ -1730,7 +1697,6 @@ {214, 138} {214, 138} {640, 135} - {640, 523} {220, 113} {220, 113} {220, 113} diff --git a/Classes/FirstLoginViewController.xib b/Classes/FirstLoginViewController.xib index e989d7a04..ac29c839c 100644 --- a/Classes/FirstLoginViewController.xib +++ b/Classes/FirstLoginViewController.xib @@ -12,9 +12,8 @@ YES - IBUIActivityIndicatorView IBUIButton - IBUIImageView + IBUIActivityIndicatorView IBUIView IBUITextField IBProxyObject @@ -42,23 +41,6 @@ 292 YES - - - 292 - {360, 480} - - - - NO - NO - 9 - NO - IBCocoaTouchFramework - - NSImage - numpad_background.png - - 292 @@ -105,7 +87,6 @@ {{60, 420}, {200, 37}} - NO NO IBCocoaTouchFramework @@ -214,7 +195,6 @@ {{142, 211}, {37, 37}} - NO NO NO @@ -240,12 +220,11 @@ {320, 460} - + _NS:9 3 - MQA - + MCAwAA IBCocoaTouchFramework @@ -366,18 +345,11 @@ - - - 5 - - - background - 35 @@ -431,7 +403,6 @@ 31.IBPluginDependency 32.IBPluginDependency 35.IBPluginDependency - 5.IBPluginDependency 55.IBPluginDependency 6.IBPluginDependency 64.IBPluginDependency @@ -450,7 +421,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -589,14 +559,12 @@ YES button_background_default.png button_background_over.png - numpad_background.png setup_label.png YES {550, 101} {550, 101} - {640, 523} {542, 88} diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index 72f54f72f..d4e280a3f 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -99,7 +99,6 @@ LinphoneCallLog *log = [[callLogs objectAtIndex:[indexPath row]] pointerValue]; [cell setCallLog:log]; - [cell update]; return cell; } diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 4ea5cc67b..f5df61576 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -71,7 +71,7 @@ typedef enum _HistoryView { - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if([tableController isEditing]) - [tableController setEditing:FALSE]; + [tableController setEditing:FALSE animated:FALSE]; [editButton setOff]; [self changeView: History_All]; [self.tableView reloadData]; diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index b72909f8b..4d3193769 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -12,13 +12,12 @@ YES - IBUIButton - IBProxyObject - IBUIImageView - IBUIActivityIndicatorView IBUITableViewController IBUITableView + IBUIActivityIndicatorView IBUIView + IBUIButton + IBProxyObject YES @@ -43,24 +42,6 @@ 274 YES - - - 274 - {320, 460} - - - - _NS:9 - NO - - - - IBCocoaTouchFramework - - NSImage - numpad_background.png - - 292 @@ -122,7 +103,6 @@ {{0, -10}, {320, 480}} - _NS:418 YES @@ -153,7 +133,6 @@ {85, 33} - _NS:9 NO IBCocoaTouchFramework @@ -188,10 +167,7 @@ - - 3 - MC42NjY2NjY2NjY3AA - + NO IBCocoaTouchFramework @@ -327,7 +303,6 @@ - @@ -385,12 +360,6 @@ callTableController - - 171 - - - background - @@ -411,7 +380,6 @@ 160.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 162.CustomClassName 162.IBPluginDependency - 171.IBPluginDependency 9.IBPluginDependency @@ -431,7 +399,6 @@ InCallTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -582,13 +549,11 @@ YES YES - numpad_background.png switch_camera_default.png switch_camera_over.png YES - {640, 523} {170, 65} {170, 65} diff --git a/Classes/IncomingCallViewController.xib b/Classes/IncomingCallViewController.xib index 30cd717ea..1c3f4556d 100644 --- a/Classes/IncomingCallViewController.xib +++ b/Classes/IncomingCallViewController.xib @@ -52,7 +52,7 @@ IBCocoaTouchFramework NSImage - numpad_background.png + background.png @@ -4903,11 +4903,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 154} {640, 523} {320, 339} + {16, 16} {640, 125} {320, 154} {320, 154} {640, 135} - {640, 523} 1181 diff --git a/Classes/LinphoneUI/UIChatCell.h b/Classes/LinphoneUI/UIChatCell.h index d66e7bfad..5f7bad19b 100644 --- a/Classes/LinphoneUI/UIChatCell.h +++ b/Classes/LinphoneUI/UIChatCell.h @@ -31,7 +31,7 @@ ChatModel *chat; } -@property (retain) ChatModel *chat; +@property (nonatomic, retain) ChatModel *chat; @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; @property (nonatomic, retain) IBOutlet UILabel* displayNameLabel; @property (nonatomic, retain) IBOutlet UILabel* chatContentLabel; @@ -39,7 +39,6 @@ @property (nonatomic, retain) IBOutlet UIButton * deleteButton; - (id)initWithIdentifier:(NSString*)identifier; -- (void)update; - (IBAction)onDetailsClick:(id)event; - (IBAction)onDeleteClick:(id)event; diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index 5b97b2738..851aa24f8 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -58,6 +58,15 @@ [super dealloc]; } + +#pragma mark - Property Funcitons + +- (void)setChat:(ChatModel *)achat { + chat = achat; + [self update]; +} + + #pragma mark - - (void)update { diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h index 113bf0bd1..2c24c3915 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.h +++ b/Classes/LinphoneUI/UIChatRoomCell.h @@ -30,7 +30,7 @@ ChatModel *chat; } -@property (retain) ChatModel *chat; +@property (nonatomic, retain) ChatModel *chat; @property (nonatomic, retain) IBOutlet UIView *contentView; @property (nonatomic, retain) IBOutlet UIImageView* backgroundImage; @property (nonatomic, retain) IBOutlet UILabel *messageLabel; @@ -39,7 +39,6 @@ - (id)initWithIdentifier:(NSString*)identifier; + (CGFloat)height:(ChatModel*)chat; -- (void)update; - (IBAction)onDeleteClick:(id)event; diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index 0ee530fbd..4327acb6d 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -58,6 +58,17 @@ static UIFont *CELL_FONT = nil; } +#pragma mark - + +- (void)setChat:(ChatModel *)achat { + if(chat != nil) { + [chat release]; + } + chat = achat; + [self update]; +} + + #pragma mark - - (void)update { diff --git a/Classes/LinphoneUI/UIChatRoomHeader.h b/Classes/LinphoneUI/UIChatRoomHeader.h index 8e67a8fd5..63bb715ba 100644 --- a/Classes/LinphoneUI/UIChatRoomHeader.h +++ b/Classes/LinphoneUI/UIChatRoomHeader.h @@ -27,13 +27,11 @@ NSString *contact; } -@property (copy) NSString *contact; +@property (nonatomic, copy) NSString *contact; @property (nonatomic, retain) IBOutlet UILabel *contactLabel; @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; + (CGFloat)height; -- (void)update; - @end diff --git a/Classes/LinphoneUI/UIChatRoomHeader.m b/Classes/LinphoneUI/UIChatRoomHeader.m index b37ce23f3..26059a166 100644 --- a/Classes/LinphoneUI/UIChatRoomHeader.m +++ b/Classes/LinphoneUI/UIChatRoomHeader.m @@ -40,6 +40,17 @@ } +#pragma mark - Property Functions + +- (void)setContact:(NSString *)acontact { + if(contact != nil) { + [contact release]; + } + contact = [acontact copy]; + [self update]; +} + + #pragma mark - - (void)update { diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index 32c7a3439..0a7c4b46a 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -61,7 +61,7 @@ CATransition *viewTransition; } -@property (strong) CATransition *viewTransition; +@property (retain) CATransition *viewTransition; @property (nonatomic, retain) IBOutlet UIView* stateBarView; @property (nonatomic, retain) IBOutlet UIView* contentView; diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib index 1b47e9536..841ed0dfd 100644 --- a/Classes/LinphoneUI/UICompositeViewController.xib +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -42,6 +42,10 @@ _NS:9 + + 3 + MCAwAA + YES IBCocoaTouchFramework @@ -66,12 +70,8 @@ {{0, 400}, {320, 60}} - _NS:9 - - 3 - MCAwAA - + YES IBCocoaTouchFramework @@ -80,13 +80,7 @@ - - 3 - MQA - - 2 - - + IBCocoaTouchFramework diff --git a/Classes/LinphoneUI/UIConferenceHeader.m b/Classes/LinphoneUI/UIConferenceHeader.m index 33e4cae34..78947b5fc 100644 --- a/Classes/LinphoneUI/UIConferenceHeader.m +++ b/Classes/LinphoneUI/UIConferenceHeader.m @@ -45,7 +45,7 @@ - (void)viewDidLoad { [super viewDidLoad]; // Set selected+over background: IB lack ! - [pauseButton setImage:[UIImage imageNamed:@"pause-champ-numero-over.png"] + [pauseButton setImage:[UIImage imageNamed:@"call_state_pause_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; [pauseButton setType:UIPauseButtonType_Conference call:nil]; } diff --git a/Classes/LinphoneUI/UIConferenceHeader.xib b/Classes/LinphoneUI/UIConferenceHeader.xib index f88d15e85..00f23d3c3 100644 --- a/Classes/LinphoneUI/UIConferenceHeader.xib +++ b/Classes/LinphoneUI/UIConferenceHeader.xib @@ -86,15 +86,15 @@ NSImage - play-champ-numero-over.png + call_state_play_over.png NSImage - pause-champ-numero-actif.png + call_state_pause_default.png NSImage - play-champ-numero-actif.png + call_state_play_default.png 2 @@ -268,10 +268,10 @@ YES 3 + {43, 50} + {43, 46} + {43, 46} {640, 135} - {43, 50} - {43, 46} - {43, 46} 1181 diff --git a/Classes/LinphoneUI/UIContactCell.h b/Classes/LinphoneUI/UIContactCell.h index 3032d6f1b..e9f5a7b01 100644 --- a/Classes/LinphoneUI/UIContactCell.h +++ b/Classes/LinphoneUI/UIContactCell.h @@ -24,13 +24,13 @@ UILabel *firstNameLabel; UILabel *lastNameLabel; UIImageView *avatarImage; + ABRecordRef contact; } @property (nonatomic, retain) IBOutlet UILabel* firstNameLabel; @property (nonatomic, retain) IBOutlet UILabel* lastNameLabel; @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; - -- (void)update:(ABRecordRef) record; +@property (nonatomic, assign) ABRecordRef contact; - (id)initWithIdentifier:(NSString*)identifier; diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index 5f25f29fd..355d2f58b 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -24,7 +24,7 @@ @synthesize firstNameLabel; @synthesize lastNameLabel; @synthesize avatarImage; - +@synthesize contact; #pragma mark - Lifecycle Functions @@ -50,6 +50,13 @@ } +#pragma mark - Property Functions + +- (void)setContact:(ABRecordRef)acontact { + contact = acontact; + [self update]; +} + #pragma mark - - (void)touchUp:(id) sender { @@ -60,10 +67,10 @@ [self setHighlighted:false animated:true]; } -- (void)update:(ABRecordRef) record { - CFStringRef lFirstName = ABRecordCopyValue(record, kABPersonFirstNameProperty); +- (void)update { + CFStringRef lFirstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty); CFStringRef lLocalizedFirstName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lFirstName):nil; - CFStringRef lLastName = ABRecordCopyValue(record, kABPersonLastNameProperty); + CFStringRef lLastName = ABRecordCopyValue(contact, kABPersonLastNameProperty); CFStringRef lLocalizedLastName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lLastName):nil; if(lLocalizedFirstName != nil) @@ -85,11 +92,12 @@ if(lFirstName != nil) CFRelease(lFirstName); - NSData *imgData = (NSData *)ABPersonCopyImageDataWithFormat(record, kABPersonImageFormatThumbnail); - if(imgData != NULL) { - UIImage *img = [[UIImage alloc] initWithData:imgData]; + if(ABPersonHasImageData(contact)) { + CFDataRef imgData = ABPersonCopyImageDataWithFormat(contact, kABPersonImageFormatThumbnail); + UIImage *img = [[UIImage alloc] initWithData:(NSData*)imgData]; [avatarImage setImage:img]; [img release]; + CFRelease(imgData); } else { [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; } diff --git a/Classes/LinphoneUI/UIContactDetailsFooter.h b/Classes/LinphoneUI/UIContactDetailsFooter.h new file mode 100644 index 000000000..ab808a680 --- /dev/null +++ b/Classes/LinphoneUI/UIContactDetailsFooter.h @@ -0,0 +1,31 @@ +/* UIContactDetailsFooter.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import + +@interface UIContactDetailsFooter : UIViewController { + @public + UIButton *removeButton; +} + +@property (nonatomic, retain) IBOutlet UIButton *removeButton; + ++ (CGFloat)height:(BOOL)editing; + +@end diff --git a/Classes/LinphoneUI/UIContactDetailsFooter.m b/Classes/LinphoneUI/UIContactDetailsFooter.m new file mode 100644 index 000000000..5320de827 --- /dev/null +++ b/Classes/LinphoneUI/UIContactDetailsFooter.m @@ -0,0 +1,50 @@ +/* UIContactDetailsFooter.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UIContactDetailsFooter.h" + +@implementation UIContactDetailsFooter + +@synthesize removeButton; + + +#pragma mark - Lifecycle Functions + +- (id)init { + return self = [super initWithNibName:@"UIContactDetailsFooter" bundle:[NSBundle mainBundle]]; +} + +- (void)dealloc { + [removeButton release]; + + [super dealloc]; +} + + +#pragma mark - + ++ (CGFloat)height:(BOOL)editing { + if(editing) { + return 80.0f; + } else { + return 0.000001f; // Hack UITableView = 0 + } +} + +@end diff --git a/Classes/LinphoneUI/UIContactDetailsFooter.xib b/Classes/LinphoneUI/UIContactDetailsFooter.xib new file mode 100644 index 000000000..b02d3ec41 --- /dev/null +++ b/Classes/LinphoneUI/UIContactDetailsFooter.xib @@ -0,0 +1,194 @@ + + + + 1296 + 11E53 + 2182 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBProxyObject + IBUIView + IBUIButton + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 301 + {{23, 25}, {275, 50}} + + + + _NS:9 + + 3 + MCAwAA + + NO + IBCocoaTouchFramework + 0 + 0 + Remove Contact + + 3 + MQA + + + NSImage + button_alert_background_over.png + + + NSImage + button_alert_background_default.png + + + 2 + 26 + + + Helvetica-Bold + 26 + 16 + + + + {320, 80} + + + + _NS:9 + + YES + IBCocoaTouchFramework + + + + + + + removeButton + + + + 6 + + + + view + + + + 7 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + 5 + + + removeButton + + + + + UIContactDetailsFooter + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 9 + + + + + UIContactDetailsFooter + UIViewController + + removeButton + UIButton + + + removeButton + + removeButton + UIButton + + + + IBProjectSource + ./Classes/UIContactDetailsFooter.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {550, 101} + {550, 101} + + 1181 + + diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.h b/Classes/LinphoneUI/UIContactDetailsHeader.h index 5cc437676..db7f45af8 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.h +++ b/Classes/LinphoneUI/UIContactDetailsHeader.h @@ -20,20 +20,33 @@ #import #import -@interface UIContactDetailsHeader : UIViewController { +@interface UIContactDetailsHeader : UIViewController { UILabel *contactLabel; UIImageView *avatarImage; + UIView *normalView; + UIView *editView; + UITableView *tableView; + NSArray *propertyList; ABRecordRef contact; + BOOL editing; } -@property (assign) ABRecordRef contact; +@property (nonatomic, assign) ABRecordRef contact; @property (nonatomic, retain) IBOutlet UILabel *contactLabel; @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; -+ (CGFloat)height; +@property (nonatomic, retain) IBOutlet UIView *normalView; +@property (nonatomic, retain) IBOutlet UIView *editView; +@property (nonatomic, retain) IBOutlet UITableView *tableView; -- (void)update; +@property(nonatomic,getter=isEditing) BOOL editing; + ++ (CGFloat)height:(BOOL)editing; + +- (void)setEditing:(BOOL)editing animated:(BOOL)animated; +- (void)setEditing:(BOOL)editing; +- (BOOL)isEditing; @end diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 75f61c6d4..159f80f5c 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -19,37 +19,63 @@ #import "UIContactDetailsHeader.h" +#import "UIEditableTableViewCell.h" + @implementation UIContactDetailsHeader @synthesize avatarImage; @synthesize contactLabel; @synthesize contact; - +@synthesize normalView; +@synthesize editView; +@synthesize tableView; #pragma mark - Lifecycle Functions - (id)init { - return [super initWithNibName:@"UIContactDetailsHeader" bundle:[NSBundle mainBundle]]; + self = [super initWithNibName:@"UIContactDetailsHeader" bundle:[NSBundle mainBundle]]; + if(self != nil) { + self->propertyList = [[NSArray alloc] initWithObjects: + [NSNumber numberWithInt:kABPersonFirstNameProperty], + [NSNumber numberWithInt:kABPersonLastNameProperty], nil]; + } + return self; } - (void)dealloc { [avatarImage release]; [contactLabel release]; + [normalView release]; + [editView release]; + [tableView release]; + + [propertyList release]; + [super dealloc]; } +#pragma mark - Propery Functions + +- (void)setContact:(ABRecordRef)acontact { + contact = acontact; + [self update]; + [tableView reloadData]; +} + + #pragma mark - - (void)update { if(contact) { // Avatar image { - NSData *imgData = (NSData *)ABPersonCopyImageDataWithFormat(contact, kABPersonImageFormatThumbnail); - if(imgData != NULL) { - UIImage *img = [[UIImage alloc] initWithData:imgData]; + if(ABPersonHasImageData(contact)) { + CFDataRef imgData = ABPersonCopyImageDataWithFormat(contact, kABPersonImageFormatThumbnail); + UIImage *img = [[UIImage alloc] initWithData:(NSData *)imgData]; [avatarImage setImage:img]; [img release]; + CFRelease(imgData); } else { [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; } @@ -74,8 +100,136 @@ } } -+ (CGFloat)height { - return 80.0f; ++ (CGFloat)height:(BOOL)editing { + if(editing) { + return 130.0f; + } else { + return 80.0f; + } +} + ++ (BOOL)findAndResignFirstResponder:(UIView*)view { + if (view.isFirstResponder) { + [view resignFirstResponder]; + return YES; + } + for (UIView *subView in view.subviews) { + if ([UIContactDetailsHeader findAndResignFirstResponder:subView]) + return YES; + } + return NO; +} + +- (void)setEditing:(BOOL)aediting animated:(BOOL)animated { + editing = aediting; + // Resign keyboard + if(!editing) { + [UIContactDetailsHeader findAndResignFirstResponder:[self tableView]]; + [self update]; + } + if(animated) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:0.3]; + } + [tableView setEditing:editing animated:animated]; + if(editing) { + CGRect frame = [editView frame]; + frame.size.height = [UIContactDetailsHeader height:editing]; + [editView setFrame:frame]; + [normalView setAlpha:0.0f]; + } else { + CGRect frame = [editView frame]; + frame.size.height = 0; + [editView setFrame:frame]; + [normalView setAlpha:1.0f]; + } + if(animated) { + [UIView commitAnimations]; + } +} + +- (void)setEditing:(BOOL)aediting { + [self setEditing:aediting animated:FALSE]; +} + +- (BOOL)isEditing { + return editing; +} + + +#pragma mark - UITableViewDataSource Functions + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [propertyList count]; +} + +- (UITableViewCell *)tableView:(UITableView *)atableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *kCellId = @"ContactDetailsHeaderCell"; + UIEditableTableViewCell *cell = [atableView dequeueReusableCellWithIdentifier:kCellId]; + if (cell == nil) { + cell = [[[UIEditableTableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:kCellId] autorelease]; + } + + ABPropertyID property = [[propertyList objectAtIndex:[indexPath row]] intValue]; + if(property == kABPersonFirstNameProperty) { + [cell.detailTextField setPlaceholder:@"First name"]; + } else if (property == kABPersonLastNameProperty) { + [cell.detailTextField setPlaceholder:@"Last name"]; + } + [cell.detailTextField setKeyboardType:UIKeyboardTypeDefault]; + if(contact) { + CFStringRef lValue = ABRecordCopyValue(contact, property); + if(lValue != NULL) { + [cell.detailTextLabel setText:(NSString*)lValue]; + [cell.detailTextField setText:(NSString*)lValue]; + CFRelease(lValue); + } else { + [cell.detailTextLabel setText:@""]; + [cell.detailTextField setText:@""]; + } + } + [cell.detailTextField setDelegate:self]; + + return cell; +} + + +#pragma mark - UITableViewDelegate Functions + +- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { + return UITableViewCellEditingStyleNone; +} + + +#pragma mark - UITextFieldDelegate Functions + +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + [textField resignFirstResponder]; + return YES; +} + +- (BOOL)textFieldShouldEndEditing:(UITextField *)textField { + UIView *view = [textField superview]; + // Find TableViewCell + if(view != nil && ![view isKindOfClass:[UIEditableTableViewCell class]]) view = [view superview]; + if(view != nil) { + UIEditableTableViewCell *cell = (UIEditableTableViewCell*)view; + NSIndexPath *indexPath = [self.tableView indexPathForCell:cell]; + ABPropertyID property = [[propertyList objectAtIndex:[indexPath row]] intValue]; + [cell.detailTextLabel setText:[textField text]]; + NSError* error = NULL; + ABRecordSetValue(contact, property, [textField text], (CFErrorRef*)&error); + if (error != NULL) { + NSLog(@"Error when saving property %i in contact %p: Fail(%@)", property, contact, [error localizedDescription]); + } + } else { + NSLog(@"Not valid UIEditableTableViewCell"); + } + return TRUE; } @end diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.xib b/Classes/LinphoneUI/UIContactDetailsHeader.xib index 978e7d5ed..a4c3d7251 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.xib +++ b/Classes/LinphoneUI/UIContactDetailsHeader.xib @@ -11,6 +11,7 @@ 1181 + IBUITableView IBUIImageView IBUIView IBUILabel @@ -53,11 +54,11 @@ - 274 + 292 {{20, 6}, {65, 65}} - + _NS:9 NO IBCocoaTouchFramework @@ -66,46 +67,93 @@ avatar_unknown_small.png - + 292 - {{101, 27}, {199, 43}} + + + + 292 + {{14, 37}, {199, 43}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Contact1 + + 3 + MC4zMzMzMzMzMzMzAA + + + 0 + 10 + + 1 + 22 + + + Helvetica + 22 + 16 + + + + {{93, 0}, {227, 80}} + _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Contact1 - + 3 - MC4zMzMzMzMzMzMzAA - - - 0 - 10 - - 1 - 22 - - - Helvetica - 22 - 16 + MCAwAA + IBCocoaTouchFramework + + + + 292 + + + + 274 + {227, 130} + + + + _NS:9 + + YES + IBCocoaTouchFramework + YES + 1 + 2 + 0 + YES + 44 + 10 + 10 + + + {{93, 0}, {227, 130}} + + + + _NS:9 + + IBCocoaTouchFramework - {320, 80} + {320, 130} _NS:9 - - 3 - MCAwAA - + IBCocoaTouchFramework @@ -135,6 +183,46 @@ 11 + + + editView + + + + 16 + + + + normalView + + + + 17 + + + + tableView + + + + 20 + + + + dataSource + + + + 18 + + + + delegate + + + + 19 + @@ -161,7 +249,8 @@ - + + @@ -177,12 +266,35 @@ avatarShadowBackground + + 13 + + + + + + editView + + + 12 + + + + + + normalView + 8 - + contactLabel + + 15 + + + @@ -190,6 +302,9 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -199,7 +314,7 @@ - 11 + 20 @@ -209,6 +324,9 @@ UIImageView UILabel + UIView + UIView + UITableView @@ -219,6 +337,18 @@ contactLabel UILabel + + editView + UIView + + + normalView + UIView + + + tableView + UITableView + IBProjectSource diff --git a/Classes/LinphoneUI/UIEditableTableViewCell.h b/Classes/LinphoneUI/UIEditableTableViewCell.h index d36708e9e..5549da4b0 100644 --- a/Classes/LinphoneUI/UIEditableTableViewCell.h +++ b/Classes/LinphoneUI/UIEditableTableViewCell.h @@ -19,7 +19,7 @@ #import -@interface UIEditableTableViewCell : UITableViewCell { +@interface UIEditableTableViewCell : UITableViewCell { UITextField *detailTextField; } diff --git a/Classes/LinphoneUI/UIEditableTableViewCell.m b/Classes/LinphoneUI/UIEditableTableViewCell.m index 6ae24eaaa..bf263a1c3 100644 --- a/Classes/LinphoneUI/UIEditableTableViewCell.m +++ b/Classes/LinphoneUI/UIEditableTableViewCell.m @@ -33,7 +33,6 @@ UIView *parent = [self.detailTextLabel superview]; self.detailTextField = [[UITextField alloc] init]; [self.detailTextField setHidden:TRUE]; - [self.detailTextField setDelegate:self]; [self.detailTextField setClearButtonMode: UITextFieldViewModeWhileEditing]; [self.detailTextField setContentVerticalAlignment: UIControlContentVerticalAlignmentCenter]; @@ -57,12 +56,12 @@ [super layoutSubviews]; CGRect frame; - frame.origin.x = 83; + frame.origin.x = [self.textLabel frame].size.width + 15; frame.origin.y = 0; frame.size.height = 44; - CGRect superframe = [self frame]; - frame.size.width = superframe.size.width - frame.origin.x - 10; + CGRect superframe = [[self.detailTextField superview]frame]; + frame.size.width = superframe.size.width - frame.origin.x; [self.detailTextField setFrame:frame]; } @@ -89,12 +88,4 @@ [super setSelected:selected animated:animated]; } - -#pragma mark - UITextFieldDelegate Functions - -- (BOOL)textFieldShouldReturn:(UITextField *)textField { - [textField resignFirstResponder]; - return YES; -} - @end diff --git a/Classes/LinphoneUI/UIHistoryCell.h b/Classes/LinphoneUI/UIHistoryCell.h index d42efde08..e4d15b1fd 100644 --- a/Classes/LinphoneUI/UIHistoryCell.h +++ b/Classes/LinphoneUI/UIHistoryCell.h @@ -30,7 +30,7 @@ LinphoneCallLog *callLog; } -@property (assign) LinphoneCallLog *callLog; +@property (nonatomic, assign) LinphoneCallLog *callLog; @property (nonatomic, retain) IBOutlet UIImageView* imageView; @property (nonatomic, retain) IBOutlet UILabel* displayNameLabel; @@ -42,6 +42,4 @@ - (IBAction)onDetails:(id) event; - (IBAction)onDelete:(id) event; -- (void)update; - @end diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 378f145fa..acac6f940 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -57,6 +57,14 @@ } +#pragma mark - Action Functions + +- (void)setCallLog:(LinphoneCallLog *)acallLog { + callLog = acallLog; + [self update]; +} + + #pragma mark - Action Functions - (IBAction)onDetails:(id) event { diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 65c8bffa1..db8ede993 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -12,9 +12,10 @@ YES - IBProxyObject - IBUIView IBUIViewController + IBUIImageView + IBUIView + IBProxyObject YES @@ -37,9 +38,28 @@ 292 + + YES + + + 292 + {320, 460} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + background.png + + + {320, 460} + _NS:9 3 @@ -109,6 +129,7 @@ YES + root @@ -119,6 +140,12 @@ mainViewController + + 212 + + + background + @@ -132,6 +159,7 @@ 152.IBPluginDependency 208.CustomClassName 208.IBPluginDependency + 212.IBPluginDependency YES @@ -142,6 +170,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UICompositeViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -156,7 +185,7 @@ - 211 + 212 @@ -245,6 +274,10 @@ YES 3 + + background.png + {16, 16} + 1181 diff --git a/Classes/SettingsViewController.xib b/Classes/SettingsViewController.xib index 09bf98376..bdc898967 100644 --- a/Classes/SettingsViewController.xib +++ b/Classes/SettingsViewController.xib @@ -11,13 +11,12 @@ 1181 - IBProxyObject - IBUINavigationController - IBUIViewController - IBUIImageView IBUINavigationBar IBUINavigationItem + IBUIViewController IBUIView + IBUINavigationController + IBProxyObject com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -38,24 +37,14 @@ 274 - - - - 292 - {320, 460} - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - numpad_background.png - - - {320, 460} + _NS:9 + + 3 + MCAwAA + IBCocoaTouchFramework @@ -81,6 +70,7 @@ NO + Settings IBCocoaTouchFramework @@ -146,9 +136,7 @@ 4 - - - + @@ -182,12 +170,6 @@ settingsItem - - 16 - - - background - @@ -198,7 +180,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin IASKAppSettingsViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -209,7 +190,62 @@ 17 - + + + + IASKAppSettingsViewController + UITableViewController + + dismiss: + id + + + dismiss: + + dismiss: + id + + + + delegate + id + + + delegate + + delegate + id + + + + IBProjectSource + ./Classes/IASKAppSettingsViewController.h + + + + SettingsViewController + UIViewController + + UINavigationController + IASKAppSettingsViewController + + + + navigationController + UINavigationController + + + settingsController + IASKAppSettingsViewController + + + + IBProjectSource + ./Classes/SettingsViewController.h + + + + 0 IBCocoaTouchFramework @@ -218,10 +254,6 @@ YES 3 - - numpad_background.png - {640, 523} - 1181 diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index cef482195..46f67d74d 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -88,7 +88,7 @@ void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void - (void)dealloc { ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, mAddressBookMap); - + CFRelease(addressBook); [super dealloc]; } diff --git a/Classes/WizardViewController.xib b/Classes/WizardViewController.xib index 0d4ec330a..f595e1f35 100644 --- a/Classes/WizardViewController.xib +++ b/Classes/WizardViewController.xib @@ -38,21 +38,6 @@ 292 - - - 292 - {320, 394} - - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - numpad_background.png - - 292 @@ -148,7 +133,6 @@ {{160, 0}, {160, 77}} - _NS:9 NO IBCocoaTouchFramework @@ -185,15 +169,9 @@ {320, 460} - + _NS:9 - - 3 - MQA - - 2 - - + IBCocoaTouchFramework @@ -221,7 +199,6 @@ {{40, 313}, {240, 44}} - _NS:9 NO YES @@ -337,7 +314,6 @@ {{33, 269}, {255, 50}} - _NS:9 NO IBCocoaTouchFramework @@ -419,7 +395,9 @@ 3 MAA - + + 2 + YES 17 @@ -535,7 +513,6 @@ {{33, 330}, {255, 50}} - _NS:9 NO IBCocoaTouchFramework @@ -612,7 +589,6 @@ {{32, 330}, {255, 50}} - _NS:9 NO IBCocoaTouchFramework @@ -829,7 +805,6 @@ {{34, 330}, {255, 50}} - _NS:9 NO IBCocoaTouchFramework @@ -1080,7 +1055,6 @@ - @@ -1102,12 +1076,6 @@ tabBar - - 15 - - - background - 16 @@ -1344,7 +1312,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1494,7 +1461,6 @@ {550, 101} {550, 101} - {640, 523} {320, 154} {320, 154} {320, 154} diff --git a/Resources/numpad_background.png b/Resources/background.png similarity index 100% rename from Resources/numpad_background.png rename to Resources/background.png diff --git a/Resources/button_alert_background_default.png b/Resources/button_alert_background_default.png new file mode 100644 index 0000000000000000000000000000000000000000..6c3578ed2e383fd98f724da2071a0888dbc9beac GIT binary patch literal 1570 zcmbW1`9BnB9LFDI$q?l#=eCZKV;!+lOeLvNV{*k{oFTSI!VG4Hki1-LENWaYLd+t{ zl{Pe1nR3;b#yO5AV{%Ncm1D+^{)6p@=llLX&-eRzy*{t!O1)x#K}teN0stTdzi8tK zfUve84-o%J5V1u%wF2zFbrBT-07Q0g2mw;zVZox<9XR5=*ti%(=J+87kF*GY=qtF* zS!c}X;)M70q9E1IWj1ag_^}p(R7thfS^Qw5`nmA82$K|TFG;e|Ss6KY_upUrFxNw7 zU;o%!69TPf zwQd%NT%N#W858`L>vR&cD#XP*a4fS$A*NuC>|Y-1>SAI!j8d`WHO)*_$G#K+ow@&H zD0^iobK@+?VdDiOTSF`q5LA~Rq zPJKq&&wNNsz@htSJX~zL1gL7{@Y}8Se6S^RD9c?|(_N`CkA#8lQdjEM-u&4;I6f#S zC2SIav}(*&hQVf0k!pT2wL!52DQ~a(?uay~AC`cws=o1x!*3G0$}vkt7jmYf&6T7C z1!DFF%*k@Yp1n(9El|UbKtR27pu48h@MP1{j5>b3IU9gW!6UBiFJboD(9v{Z;1)t< z*?1JDXEiH}f_j#(32ami>VK}*RtV^0AEZk)z3y(9R(J$Jo_qL>R;>f-2>Ri@Mi_~l zdaks-R};i*x$5YrAq2;W5|;&M9suwo0KUR|x*x*Nm%r=&ACmTiJ%IqXA}-|{Y6c1e zed0xdd&)lGqb3Ng!NWTeVBFNwSZJ>+-sn3zcYKL>uOIs6t>k@u9e+I34t^f?eLqt)H}{&gX&DH$jM$m-K4J#f`WXW z?y1ZW^60v#qk9b2*PSF#^m3I2?{Tt;eRo*-e$>W=j&l${s)GIY z7vb1};)8_hPf%Jhb1r&a)zq$KKnY5=Q#9rax2;m!U*J#Qm-c zMBRH8Hf;mu7- zpd6wP6~SAY*(OL{O_| zU&hJ+jHp-0f73(M;@7yjG?>=SfP#wvPD&7fF4WObh?cz_&# z%86e7a<6@XwoQnmAB-?CG#%u5B1|ms1QX-YJW1(hXt$p(c6V_g1_Gu&%1t!zxeh9d sWm~VARc&>KWHQ$5**bMOnaQ5~6dq#3ijsID_}>BiyuD4Gwa?xE0A!c4KL7v# literal 0 HcmV?d00001 diff --git a/Resources/button_alert_background_over.png b/Resources/button_alert_background_over.png new file mode 100644 index 0000000000000000000000000000000000000000..4c5247427bc9e24dd330f1d7d13b6b7d5c72280f GIT binary patch literal 1723 zcmb7FeLT~79RE%ou{w1sajmYaCN$>hhg>$d zuC|DNN=b&HjKsD)O&Qz$y8Gkq^}7DKKfa&$=ktDjp8oiJKHu}-<6Kwi80r83 zR$<(ny#UZaLVDN=O-Lr@@3;$rcC6c>H~`>!A0G_d$lCysTBk4``?dPD;H#|+zBAt! z27u;ajPqWf(<12rIr@15qGhTl;6Tx=4x<67ht7l@&%T*MaPj+1yV_ar*7@f82fH%N zE^V_?Hm<;`V>9j*xol-V#YT(-`lVf}rlGgWzfnco2e(-TRV?bh5DE@|xX6;rCy_)QM zmY>1ll>Px4s)W3`>YaBVY4U#pOBK z0QmaiD=gk_e92>%k&d-}Kw~-^wN6exp-{5)spY-)AXuZEG5mFpnBUeF_fDmz2#S`1 zqV5>XZ-)V-lf|tXQ*XjmC&?6L{V0e0zVltu7Qy6uKQus}(4=kj;P1i77W=g>*bUU* zjwf8$0mb+gi8hjO^BfaqeF8~(!*dvbo~B<$-^c?3gy##^Rp8qd+Mr6)#kvKu9?j16 z|Hyk0S_snc!On3XEn)5%?w6$>tUm{_sLaUAR?Dm|+9kwaxC;YpUR*@UhARNj&Y@x8 zXKj%7zkul1ehHqTSPrUiSS(1x@E$KLu%1)6yo$IppXk ze9}rym@jA91ZZ~1bnDu_ylYV{RQZ7pypr7hof}@^Ywk@fh=@y}lk%^swFrasb zb)pC&Mul(s>3pU9&K^OsJ!r7er5WV&E*O(0e-FTydO`&HH#>KP{f%dbMZKrJwg~K$ zp8@QZSCJuIhee0nsI9g5K;iJRN?lH&dsj>+NYnOmx2%m1fp)dk(=nmtNhN%+e5i-i z_(hQYN`TEgT4D3n=g7#S5y@o!r=)}=vFgpc*9p{Fkv$kPnQ*hLh%cH+QSWe^S)49b zbZ{znst!RuQ}6gJjOY~#0fyd2;WMejnt~aOp^V@)zR(m?rly;Bv*(Zo_p(64E|0b+ z<;5N8VfCm4wW^J;J5g^Mp`x;9HwEU_73}99KwuV*p40&T)m~J^nu`dfB^l!@^%}5Y zOFa56hYDJ_hJ`%^p+CA*uh9Vw`>n$wA3t>vH8M!JrpVG)vTJS^RJJkt)*kfrvzh{5^ngC`$ K&YA5Loc"; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FastAddressBook.h; path = Utils/FastAddressBook.h; sourceTree = ""; }; D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FastAddressBook.m; path = Utils/FastAddressBook.m; sourceTree = ""; }; + D32D5AA515ADE5D9008593F3 /* button_alert_background_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = button_alert_background_default.png; path = Resources/button_alert_background_default.png; sourceTree = ""; }; + D32D5AA615ADE5D9008593F3 /* button_alert_background_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = button_alert_background_over.png; path = Resources/button_alert_background_over.png; sourceTree = ""; }; D3432A5C158A4446001C6B0B /* led_connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_connected.png; path = Resources/led_connected.png; sourceTree = ""; }; D3432A5D158A4446001C6B0B /* led_error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_error.png; path = Resources/led_error.png; sourceTree = ""; }; D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_quality_indicator_0.png; path = Resources/call_quality_indicator_0.png; sourceTree = ""; }; @@ -1279,6 +1289,9 @@ D3D6A3A8159B0EFE005F692C /* options_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_default.png; path = Resources/options_default.png; sourceTree = ""; }; D3D6A3A9159B0EFE005F692C /* options_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_disabled.png; path = Resources/options_disabled.png; sourceTree = ""; }; D3D6A3AA159B0EFE005F692C /* options_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_over.png; path = Resources/options_over.png; sourceTree = ""; }; + D3E8F68315ADE0570065A226 /* UIContactDetailsFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactDetailsFooter.h; sourceTree = ""; }; + D3E8F68415ADE0580065A226 /* UIContactDetailsFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactDetailsFooter.m; sourceTree = ""; }; + D3E8F68515ADE05A0065A226 /* UIContactDetailsFooter.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactDetailsFooter.xib; sourceTree = ""; }; D3EA53FB159850E80037DC6B /* LinphoneManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneManager.h; sourceTree = ""; }; D3EA53FC159850E80037DC6B /* LinphoneManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneManager.m; sourceTree = ""; }; D3EA53FF159852080037DC6B /* chat_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_edit_default.png; path = Resources/chat_edit_default.png; sourceTree = ""; }; @@ -1292,7 +1305,7 @@ D3EA5413159853C90037DC6B /* UIChatCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIChatCell.xib; sourceTree = ""; }; D3EA5416159858A80037DC6B /* list_delete_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_delete_default.png; path = Resources/list_delete_default.png; sourceTree = ""; }; D3EA5417159858A80037DC6B /* list_delete_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_delete_over.png; path = Resources/list_delete_over.png; sourceTree = ""; }; - D3ED3E401585FB4A006C0DE4 /* numpad_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_background.png; path = Resources/numpad_background.png; sourceTree = ""; }; + D3ED3E401585FB4A006C0DE4 /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = background.png; path = Resources/background.png; sourceTree = ""; }; D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_address_background.png; path = Resources/dialer_address_background.png; sourceTree = ""; }; D3ED3E511585FFFD006C0DE4 /* statebar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = statebar_background.png; path = Resources/statebar_background.png; sourceTree = ""; }; D3ED3E6715861A53006C0DE4 /* add_contact_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_contact_default.png; path = Resources/add_contact_default.png; sourceTree = ""; }; @@ -1806,6 +1819,9 @@ D3A55FBA15877E5E003FD403 /* UIContactCell.h */, D3A55FBB15877E5E003FD403 /* UIContactCell.m */, D3A55FBE15877E69003FD403 /* UIContactCell.xib */, + D3E8F68315ADE0570065A226 /* UIContactDetailsFooter.h */, + D3E8F68415ADE0580065A226 /* UIContactDetailsFooter.m */, + D3E8F68515ADE05A0065A226 /* UIContactDetailsFooter.xib */, D37C639215AADDAE009D0BAC /* UIContactDetailsHeader.h */, D37C639315AADDAE009D0BAC /* UIContactDetailsHeader.m */, D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */, @@ -2007,6 +2023,8 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + D32D5AA515ADE5D9008593F3 /* button_alert_background_default.png */, + D32D5AA615ADE5D9008593F3 /* button_alert_background_over.png */, D3F83F741582253100336684 /* accept_default.png */, D3F83F751582253100336684 /* accept_over.png */, D3D6A39B159B0EEF005F692C /* add_call_default.png */, @@ -2134,7 +2152,7 @@ D3F83EF6158205A100336684 /* micro_on_default.png */, D35EA76215A2DF8D003E025D /* micro_on_disabled.png */, D3F83EF7158205A100336684 /* micro_on_over.png */, - D3ED3E401585FB4A006C0DE4 /* numpad_background.png */, + D3ED3E401585FB4A006C0DE4 /* background.png */, D3F83F3C1582223B00336684 /* numpad_eight_default.png */, D3F83F3D1582223B00336684 /* numpad_eight_over.png */, D3F83F361582223B00336684 /* numpad_five_default.png */, @@ -2519,7 +2537,7 @@ D3F83F7C1582253100336684 /* decline_default.png in Resources */, D3F83F7E1582253100336684 /* decline_over.png in Resources */, D3F83F9215824D3600336684 /* LinphoneApp.xib in Resources */, - D3ED3E411585FB4A006C0DE4 /* numpad_background.png in Resources */, + D3ED3E411585FB4A006C0DE4 /* background.png in Resources */, D3ED3E451585FB8C006C0DE4 /* dialer_address_background.png in Resources */, D3ED3E521585FFFD006C0DE4 /* statebar_background.png in Resources */, D3ED3E6A15861A53006C0DE4 /* add_contact_default.png in Resources */, @@ -2681,6 +2699,9 @@ D3C6526D15AC228A0092A874 /* contact_ok_over.png in Resources */, D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */, D378906A15AC37C800BD776C /* contact_bar_background.png in Resources */, + D3E8F68815ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */, + D32D5AA715ADE5D9008593F3 /* button_alert_background_default.png in Resources */, + D32D5AA915ADE5D9008593F3 /* button_alert_background_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2750,7 +2771,7 @@ D3F83F7D1582253100336684 /* decline_default.png in Resources */, D3F83F7F1582253100336684 /* decline_over.png in Resources */, D3F83F9315824D3600336684 /* LinphoneApp.xib in Resources */, - D3ED3E421585FB4A006C0DE4 /* numpad_background.png in Resources */, + D3ED3E421585FB4A006C0DE4 /* background.png in Resources */, D3ED3E461585FB8C006C0DE4 /* dialer_address_background.png in Resources */, D3ED3E531585FFFD006C0DE4 /* statebar_background.png in Resources */, D3ED3E6B15861A53006C0DE4 /* add_contact_default.png in Resources */, @@ -2911,6 +2932,9 @@ D3C6526E15AC228A0092A874 /* contact_ok_over.png in Resources */, D378906815AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */, D378906B15AC37C800BD776C /* contact_bar_background.png in Resources */, + D3E8F68915ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */, + D32D5AA815ADE5D9008593F3 /* button_alert_background_default.png in Resources */, + D32D5AAA15ADE5D9008593F3 /* button_alert_background_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2999,6 +3023,7 @@ D3C6526715AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */, D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, D378907515AC448A00BD776C /* UIView+ModalStack.m in Sources */, + D3E8F68615ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3084,6 +3109,7 @@ D3C6526815AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */, D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, D378907615AC448A00BD776C /* UIView+ModalStack.m in Sources */, + D3E8F68715ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From d7ba4edbea473f2f7522d7b27974d12e97f28bcf Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 12 Jul 2012 00:56:47 +0200 Subject: [PATCH 035/397] Fix Contact for IOS4 Replace/Add images --- Classes/ContactDetailsLabelViewController.m | 8 ++ Classes/ContactDetailsLabelViewController.xib | 69 ++++++++++++++++-- Classes/ContactDetailsTableViewController.m | 6 +- Classes/ContactDetailsViewController.m | 1 + Classes/ContactDetailsViewController.xib | 68 +++++++++++++++-- Classes/ContactsTableViewController.m | 3 + Classes/DialerViewController.xib | 38 +++++++--- Classes/LinphoneUI/UICallBar.m | 6 ++ Classes/LinphoneUI/UICallBar.xib | 36 ++++++--- Classes/LinphoneUI/UIContactDetailsHeader.m | 8 ++ Classes/LinphoneUI/UIContactDetailsHeader.xib | 64 ++++++++++++++-- Resources/micro_on_defauly.png | Bin 0 -> 5999 bytes Resources/options_add_default.png | Bin 5136 -> 5935 bytes Resources/options_add_disabled.png | Bin 0 -> 5764 bytes Resources/options_add_over.png | Bin 5089 -> 6013 bytes Resources/options_selected.png | Bin 0 -> 8224 bytes Resources/options_transfer_default.png | Bin 5314 -> 6010 bytes Resources/options_transfer_disabled.png | Bin 0 -> 5899 bytes Resources/options_transfer_over.png | Bin 5339 -> 6138 bytes Resources/transfer_call_default.png | Bin 0 -> 7522 bytes Resources/transfer_call_disabled.png | Bin 0 -> 6262 bytes Resources/transfer_call_over.png | Bin 0 -> 4558 bytes Resources/video_off_disabled.png | Bin 3595 -> 7340 bytes Resources/video_on_disabled.png | Bin 3044 -> 5973 bytes linphone.xcodeproj/project.pbxproj | 42 ++++++++++- 25 files changed, 304 insertions(+), 45 deletions(-) create mode 100644 Resources/micro_on_defauly.png create mode 100644 Resources/options_add_disabled.png create mode 100644 Resources/options_selected.png create mode 100644 Resources/options_transfer_disabled.png create mode 100644 Resources/transfer_call_default.png create mode 100644 Resources/transfer_call_disabled.png create mode 100644 Resources/transfer_call_over.png diff --git a/Classes/ContactDetailsLabelViewController.m b/Classes/ContactDetailsLabelViewController.m index 7ec07dd90..ad5e22e21 100644 --- a/Classes/ContactDetailsLabelViewController.m +++ b/Classes/ContactDetailsLabelViewController.m @@ -26,6 +26,14 @@ @synthesize selectedData; +#pragma mark - ViewController Functions + +- (void)viewDidLoad { + [super viewDidLoad]; + [tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 +} + + #pragma mark - Property Functions - (void)setDataList:(NSDictionary *)adatalist { diff --git a/Classes/ContactDetailsLabelViewController.xib b/Classes/ContactDetailsLabelViewController.xib index 68a1ac505..443013919 100644 --- a/Classes/ContactDetailsLabelViewController.xib +++ b/Classes/ContactDetailsLabelViewController.xib @@ -2,10 +2,10 @@ 1296 - 11E53 + 11D50 2182 - 1138.47 - 569.00 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -43,6 +43,7 @@ {320, 460} + _NS:9 NO @@ -133,9 +134,64 @@ _NS:9 - - 3 - MCAwAA + + 10 + + 549453824 + {512, 1} + + + + + + TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI +AAgACAAIAAEAAQABAAE + + + + + + 3 + MCAwAA + + + groupTableViewBackgroundColor YES IBCocoaTouchFramework @@ -156,6 +212,7 @@ {{0, 20}, {320, 460}} + IBCocoaTouchFramework diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 269d7b7fa..8d0fe7d3c 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -586,7 +586,7 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef [headerController setEditing:[self isEditing] animated:FALSE]; return headerView; } else { - return [super tableView:tableView viewForHeaderInSection:section]; + return nil; } } @@ -595,13 +595,13 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef UIView *footerView = [footerController view]; return footerView; } else { - return [super tableView:tableView viewForHeaderInSection:section]; + return nil; } } - (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { if(section == 0) { - return [super tableView:tableView titleForHeaderInSection:section]; + return nil; } else { return @"SIP"; } diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index d905a6526..289d3ea67 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -79,6 +79,7 @@ [tableController->footerController->removeButton addTarget:self action:@selector(onRemove:) forControlEvents:UIControlEventTouchUpInside]; + [[tableController tableView] setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 } - (void)viewDidUnload { diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib index 1646a1f85..192b39e41 100644 --- a/Classes/ContactDetailsViewController.xib +++ b/Classes/ContactDetailsViewController.xib @@ -2,10 +2,10 @@ 1296 - 11E53 + 11D50 2182 - 1138.47 - 569.00 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -133,9 +133,64 @@ _NS:9 - - 3 - MCAwAA + + 10 + + 549453824 + {512, 1} + + + + + + TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI +AAgACAAIAAEAAQABAAE + + + + + + 3 + MCAwAA + + + groupTableViewBackgroundColor YES IBCocoaTouchFramework @@ -157,7 +212,6 @@ {{0, 20}, {320, 460}} - IBCocoaTouchFramework diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index a60d1364b..f3d930e47 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -187,6 +187,9 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kNewContactCellId]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kNewContactCellId] autorelease]; + //TODO + /* + [cell setSelectedBackgroundView:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"list_hightlight.png"]]autorelease]];*/ } [cell.textLabel setText:@"Add new contact"]; return cell; diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index 48117f852..cdb6ae58d 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -2,10 +2,10 @@ 784 - 11E53 + 11D50 2182 - 1138.47 - 569.00 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -354,7 +354,7 @@ {{0, 58}, {320, 260}} - + _NS:9 3 @@ -554,15 +554,15 @@ NO NO - + NSImage add_call_over.png - + NSImage add_call_disabled.png - + NSImage add_call_default.png @@ -585,9 +585,18 @@ NO NO - - - + + NSImage + transfer_call_over.png + + + NSImage + transfer_call_disabled.png + + + NSImage + transfer_call_default.png + @@ -597,6 +606,7 @@ {{214, 0}, {106, 69}} + _NS:9 NO IBCocoaTouchFramework @@ -1268,7 +1278,7 @@ UITransferButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1678,6 +1688,9 @@ numpad_two_over.png numpad_zero_default.png numpad_zero_over.png + transfer_call_default.png + transfer_call_disabled.png + transfer_call_over.png YES @@ -1721,6 +1734,9 @@ {220, 113} {220, 113} {220, 113} + {222, 135} + {16, 16} + {222, 135} 1181 diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 58cf6000c..99c970dca 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -152,6 +152,10 @@ // Set selected+over background: IB lack ! [pauseButton setImage:[UIImage imageNamed:@"pause_on_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+over background: IB lack ! + [optionsButton setImage:[UIImage imageNamed:@"options_over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; } - (void)viewWillAppear:(BOOL)animated { @@ -290,6 +294,7 @@ } - (void)showOptions{ + [optionsButton setEnabled:TRUE]; if([optionsView isHidden]) { CGRect frame = [optionsView frame]; int original_y = frame.origin.y; @@ -312,6 +317,7 @@ } - (void)hideOptions{ + [optionsButton setEnabled:FALSE]; if(![optionsView isHidden]) { CGRect frame = [optionsView frame]; int original_y = frame.origin.y; diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 637385568..ed272ddb2 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -2,10 +2,10 @@ 1296 - 11E53 + 11D50 2182 - 1138.47 - 569.00 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -42,6 +42,7 @@ {{0, 335}, {320, 125}} + _NS:9 1 @@ -402,6 +403,10 @@ NSImage options_transfer_over.png + + NSImage + options_transfer_disabled.png + NSImage options_transfer_default.png @@ -433,6 +438,10 @@ NSImage options_add_over.png + + NSImage + options_add_disabled.png + NSImage options_add_default.png @@ -605,6 +614,10 @@ NSImage options_disabled.png + + NSImage + options_selected.png + NSImage options_default.png @@ -1249,7 +1262,7 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIMicroButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1310,12 +1323,12 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UISpeakerButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + @@ -1620,13 +1633,16 @@ {220, 113} {220, 113} {220, 113} - {160, 134} - {160, 134} + {155, 137} + {155, 137} + {155, 137} {160, 134} {160, 134} {160, 134} - {160, 134} - {160, 134} + {160, 134} + {155, 137} + {155, 137} + {155, 137} {209, 136} {209, 136} {209, 136} diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 159f80f5c..2cff57470 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -55,6 +55,14 @@ } +#pragma mark - ViewController Functions + +- (void)viewDidLoad { + [super viewDidLoad]; + [tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 +} + + #pragma mark - Propery Functions - (void)setContact:(ABRecordRef)acontact { diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.xib b/Classes/LinphoneUI/UIContactDetailsHeader.xib index a4c3d7251..58ee2556c 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.xib +++ b/Classes/LinphoneUI/UIContactDetailsHeader.xib @@ -2,10 +2,10 @@ 1296 - 11E53 + 11D50 2182 - 1138.47 - 569.00 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -77,7 +77,6 @@ {{14, 37}, {199, 43}} - _NS:9 NO YES @@ -126,7 +125,62 @@ _NS:9 - + + 10 + + 549453824 + {512, 1} + + + + + + TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI +AAgACAAIAAEAAQABAAE + + + + + + + groupTableViewBackgroundColor + YES IBCocoaTouchFramework YES diff --git a/Resources/micro_on_defauly.png b/Resources/micro_on_defauly.png new file mode 100644 index 0000000000000000000000000000000000000000..ca63b44ff5fbcfaa19e4ccb8bd62b98170497382 GIT binary patch literal 5999 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 literal 0 HcmV?d00001 diff --git a/Resources/options_add_default.png b/Resources/options_add_default.png index 9466db7a05c8d13f6ab317e175fd06b65fed692d..e8ca669f5d9129a73c7311adc5a09a207a06309f 100644 GIT binary patch literal 5935 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 RGDQFY002ovPDHLkV1j2TDr^7% literal 5136 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 diff --git a/Resources/options_add_disabled.png b/Resources/options_add_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7b03b4f14102a65f4030e22ebc0954172cc824 GIT binary patch literal 5764 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 literal 5089 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 D#|n-k diff --git a/Resources/options_selected.png b/Resources/options_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..dda79635356561ba7d021b1470e5709485b6194e GIT binary patch literal 8224 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 MQ`Ux7LEs_(0|~SZA^-pY diff --git a/Resources/options_transfer_disabled.png b/Resources/options_transfer_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..9da015b6a7d9ce0a672d3a0934d6f2b66abeb72f GIT binary patch literal 5899 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 literal 0 HcmV?d00001 diff --git a/Resources/options_transfer_over.png b/Resources/options_transfer_over.png index 0199183297d75bc8a3cdc6acda6a0a155d3369c8..a9741608914c0cfdd0f4566d70817a410ae6f504 100644 GIT binary patch literal 6138 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 M07*qoM6N<$f;%O$`Tzg` literal 5339 zcmV<16eR13P)004#v1^@s6S~`IS00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-pm0}L=6%ixyM000zvNkl)VgbGZ<4Tv0Y10YT@^2#9#DFe4(Mqb$aA zj}j1%LV|;n1Y#s1kQGQe)qD4M|LE>Yb$4~A(`4!8d(P?8>FTelzN-4w^SoDech+>QcB6_V=PIye_xNiMkjLKa9A zKq^U{aRCNEW_P}`?#~W~V_a{ohXNR@4%XV9ObE&AYrv$WlyhKN1}cSu0vP4)1&70t zM}Q`{p94aiuQfs*6EaV+FA8Fj!2cdikHkl`Zd0&zHU36KOrk{pEO_E%q2 zN;z1D6=3rR84baa6%qy40wIYG*EHgsme`+tQYq!mcZI_BF87#DbHE4+g~aJjd9J^Q zxm~QU^DTd3Sq4fu*XMvy0Q)Wkf)Fy?(e?K*Vfp~Ll|T1VavWHe1t)Wc#-4^q3Sb|r z&N*P36cDI>O5B5y8zQlDDdjS-4C~=)k)o&pP#o?&@+c=kLM}CsVK3N_=yol4VlS>L zqfKGAMPf%1S9%g4g_SdP7Yg0gA^;&A_IJJ&^#FRikdG62g|)h zR=4Ui0L4Q9VlW&cP+ZA%t{A5N9(U>siDB^vRJbMXQ3c@1hGr5i8zT;9?mSA!uQ*P! z9o4`p>`Er@@a3-bq(Gw1L;(!wLf%f~9oi^FRGjw^fJd_J1%`XPNoweTiYlZWkPt%X zZlD?{v2+(uQ2?nZfK*fzKq?9#6%_@LiULSQMFFIu08;f_c3zK`-CI%n`g|CFsiZq3 zfMWVOn(6Fm@IN1gx#t=%CX=QlS5vfrMUqudp^YZuRevH*9+6K*X{IaSGC|? z0Km}4OE9SDo|rubF?lJjb^i{umF@!n^HI;UF*y~<1rwor^3OeXyvA+spk?<~$?r24 zy)Hmz=k++X^idCI)LwG~Mm)bBGEF=MFq(CtY(JX!Z1n-pTbi6)j99V;iq!O=mfQHz zJ80bYPPgq;BXeNy)Wg!;;4z&5VB`uU-c*Ey-;6`b?e|asqbese@~GSJ5-xo6MbPtT za&nRV# z&j!^t@uu5D?jMl^dKXSEoe5iK2L&+Fov(J)Q{XErLJQg7e1VSgL*2HMY2u+8nbWI% zH`Z3-#GDB*{PG_PV5F*U!%HE<=hnGx?*^3v_Qi0Eo!8^!(wVq;_$!(NMw&Xx58>1c zb9!Z2BTCjHxp1P#Fp8zAL4c(8_4%QPU;>aJe!-bBrvyW$J`#1uDQd?7&zJ7*wPm%H ze(C{WPX?G}ns{ihxdDo_q3HbSd!P9j#`)V=M>oqkvvDO1wUrpYXgLKi5~M%zL$58X z^Tdy^wOc!Xm3~S4|UfW3yLnrkA{vL!7n48W7HIHg!4s;7&1FP10^euV(-AJ49 zN9lYB0Q|rwE>2D^oe93?=cqVVQCWoaMM2Pc;zwux*K{_h_Gu6N(eHPIr#u41kfDAd z>@FoV)>h)w^RuA;>3bT2!%^-6VIZJ(S9Ip4hJb*u8Z81cpOORZ2H?&t@Kj83* z^FkVeqgdK2#|nR^PWglI_pd7!qT{<#*DWmr*FS$n4Ryc)kZRcI-UslS>m{eBPJY-~ zGz=hosu9^pym35r!00}D3p5`vuf85KO+4(pUKmUcB^Z|aFY(6l&@Ff^Vh5(9vIt53-Ca1l`HkLTSrLa3&u;)&ndE+I{p>@Js~W+K z<4GxF?u$qsKh>kU?GC=w$q!@b>?MfgV;GeV$R!SP#>7iJD6EXb=r^|^E_0OMHqG1r z+N*uHb#~y_l?%cDJMg7M-TY-3RCIUbAFF6B8aQntZ2F5mo{s^*skKmFITn}CUJS)$ znf=n=jw4?~bJcaIUAYjZ0M5s1;xVFRo!^`^(!>x#h|Ok;Isj{yJ_`On$9g>9@Fi=Y zxpFLI2}wbA}`pjoTp7-3QRj{@- zQBwLc1e?v~sNc}juRMv)pN@nyuWHP-&^@yn@|3i0+nRo@f}^tosw;j2hW-yc3ZPpK zlL6KLH4%0LAJY8VvA1B@b8q_(*W2F(fBXmx)yI8q$718uP+v9HdE5N0lflU7eZU?7 znoOpc*x1&co6sD@bNu`%p|BVki&pqdKf7)zIu7m)>Rv#3>Sa)0k&nwBUkX;GrU1qg zfB;atzZa~s~W{jX@~xsxYr>{KNyYag{jtT=0b`~pd2T(pq?EAfPy5%q zVQH+7nf)J?Kg;ZiWP=7{*z&FTb;*OU>)QvsKg4PVf8s~T(=w<7#>`nbXb6U{`UtZ4 z#PG-mE04v@zNY|&A%wm8bXOXJBPkpw4@TDC58&6Qroqx!H(>ox4jUaa$Amhdgodx# z0d0QafURGZlTSl%tn2c{Ymho)9vHc@U)QV2ABXrD_$`QA3?YQ*^?FL2zkIB%2@S72 z0c&gD=Vh{_6zG<{A5&LDr~`H*c}g0Fzr71dlcs}Fs`_+Y>2qI>xl3^jA%t{vbWqZQ zki%p^)4MN&KXwpsIC^#2L*^_+!fjJxZl6*BLy)Dh9v8pd4*rM#gZ*L~g^vO_Fd}vv z^xu4ej&DAPsrq=2=Z_nci_||XLfptJVs;-ggb>o+-cD({)MBNv9{ka7Vf^_hOjYG@ z82JF;U5ohN-id@;r^NhzqX71i%%`hiZ9WT2-N`QSvU8yvkpr0~f$ktNfEO=bq~1grRIN97Z1JH!cSuq*oxcoUVrP=s`&BCuMdX0Dw_xXdxHP4tQbX zasj@i8S|l?_Wllc0)bu{<*Wi-3DM8WhfTpA0 z!d&GHb=nEjpqVhuZ+|)6C=8mv9IdMt0suO8ZAS9!=lm|)-r5LTYa;+ao;gY~cNDLx zr~65~{6OoF&N<6PCstWSe$V2?k0Mr4cijK0q!r$>zXLZ|NnUe=)b{@=C~{cwAun%2+xn%jdp-L(amGAoCv>^1yS?}4)Wz$d%*pflEC%AjrWL}8 zBbK^wl1HBapkw#@(C^;jN-ZX#{iF3hchh+H&6yXULi@J$lIw||Iui*&>@Vto-Q{4e zA89MHbA!&cRE3j-gJP*WDdcKywXRwq9N@V8LYR(~0RY;!Z2+UvLR~mXSSK-b!s>c< zj3PT%GUp>8!e@JHBU)abEi7NI%L1d;!rs~lds`C>WqV<*JBgIV>$)H$U4_<#O%b^2||4UAzwFs&cfgUL-hOxB2Sk z6bVa5#)SSd|6|Gv*^Me;in~7S_5`Xj{Dy4kHi# zz{kS!ELG(Ke1l)w=n-~XS1*L6ssg5C-@;*-*C)eLy(QM|fZ_Nuiyl$oc9~#aiZQv8 z^SKq5SBS*NmVix310e)#N*WSpl|Yt~28WSH=YfyA<`Fxc*LuW>A|V8}mUDswX{S62 zRY9>wd-d)2K~+!;05BZd3p=lOekXdqYQh8apeiU9T$a;iK|Nub(;@3?gk`z!Gh|d6 zVLRNfq**0U6%<1~VHzCnb%g0FDzAieH!i0Vxsq@usnn4h-?K#+BbBA5Bk8dc#7~*&5e>pO2Mp8B$#kC8T(JH0 z9;_x3)iMbXx~=s!!uKSI^}C;rZ)@wSc-ho+$@X$lI$)_gmXapD%|v4S#VgcG6X*)n1l_k4H!*YuH=mzAB+gm_MRqRuuRejz zRVWc7596VIFdo_mRY5W0r~fJZbHH$x`z*FpSHLcEm_RZf+AHKoitM~@9nxEjO4DcC zBi;sgRedQ^6-+|vi|=8`x;;powOGg>o%>-Q%;g8e`uK)*5kd%oy69e^v+bK#b=#gl zutRWzxV%EiqQP2sN^)M)v4cX$>za;kix8&)639ixkLlP!KZRAf2k72Ki1c>(_Q6oL z7y3P0z#rHFLWnc;-dv1?nTwI~;@>?+0ca6&DLH~}lmMZnx&j^VuX2ViN$1-K{XgFo z4sQH(>3_A#fA)dTGR);=u$^&&tIP}S$yjn-mf${yuRf6sx%_7z2x$PP3;l|P>Cis# zpKV2_#I~?1tZ1F=f4&u#>I$5H^C_r{?t?O~5a#kS@Skmky{!q1N`u6?uXgpV zo6CLP4haBpH&2A6x&p+=M__Mjgz4~pSgVht-Rp@7?vo=>|ANYm3yNW>t`OE^m3T6P z_Wrq-yq-QkwuBJU(9jSuV|@0uCKyXUf$dBUZ1puDMjl+oNN~DQP~;W_44*AePHT6)GD1)Q53G(b*C~^y+a5<{CZ1puT9o{E6tZMwdQ05g10LR^2?5wQCg-&$^ zjHNqaZ)=3@%r8P8)ptE2+165BA-KKNHk%Ibllp3J&bx;gSr>p*RDB7VgJA)N0RclDkgB&JlYuZ!*Z@ZK&h$J4Q&C9)1^^D0 z_4w=rt(S8^s+g-i1(5n0FmEa499WitN}&MDGBgB7rF*erm|S6zVL;%_#rj&_kSRG1 z9LGW~lTinZ?6AlHjD%w`p03s(QYqzN8CHNT5MzqB1usLphq}k zWnC`BbS3Ov--X+G&;^g%wcLrlxT=gsg;xj`g9CtggbT(Ko-lHz?n0rvS_B}3!-2@R zqTc~o&Nsw~$DPDsE+lWUJbOeQSDSx+Q} z#UD`Nn7Bt(U3apfIVwtEaX545Q9^#jagyz*Xc6Mqk;Ijr6iC#WD1ZT7$lHm$LmP#N t3II5%@gs3Q)a6dj@g}LE11hRe_5T8}Zh#r#2Ce`A002ovPDHLkV1nBtB8>n5 diff --git a/Resources/transfer_call_default.png b/Resources/transfer_call_default.png new file mode 100644 index 0000000000000000000000000000000000000000..8d66dc15e3694a42cb680a8ed319458847712f38 GIT binary patch literal 7522 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 M%34a*3YMY&1>1F5ga7~l literal 0 HcmV?d00001 diff --git a/Resources/transfer_call_over.png b/Resources/transfer_call_over.png new file mode 100644 index 0000000000000000000000000000000000000000..dee25606243df09eb08660dc82f04cb166333d54 GIT binary patch literal 4558 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 literal 3044 zcmai0c{tQ-8~z!FVHiV}8A~XfK_xsC*+Sq9KiCvX8NiqD7=a$u1njAuSk7 z6e0T((_|g{zK`{rbIx^r|9_;|#4007`K#~9nOFq36u z2q$ZI(u({WIB#AwGiD)cF^#GtSip_PT=NG2=&`?z4M=;9U?sT%%q>m0esO`gc@=C1 zpO9EJUvuLN_CdpoZ#)8rJ&%7?et>heT|j*NiS+1rojUa0?KW+j)~T^aOg{HVwSpCB z39aTDkLsyVHZaUa(u8D|!d)*P&)S+eOyH?C%-dCNghxO!%aVWY^P_N)YxI6~*N6tV z>A=}Um6%mdk_Eaj7KAoGIU077q)O7iFPJXrV}+vtzYCuD?2D6pAQSw6X{Rm$WbqhW zHiU!H&q@Ob@~ioFQ()H=aF=OH53p144g6DvWcVOb!o~mrs)Cc?SA|}0!IfiLAP@e8 zqr?qsW~r8<&RoDB?5aQkxbW&v&^&q75%L^td=0WHLRU6Z?n`L5GGw;W=WK!HSflfo zFr0@8v6SaK1rn%Nlzq?K7>{^xs3iwvZaJb=y zUnk?!jO>-lM#Y#G1Ss`4Djz839eu7TEe)`_3Y+HVh=K5JbFaYtZZ~YNZ*v~CvZ3?- zvpKd98yuH@MrG1E8TQkEaA_A^#g<_K)!`n!wPts2ftE!unu);R&O#^^Mx$2E&Y^(R zMA7}LZ=TYVK{{%dh)crX(97-gmq5qo%ruULY_Wa+j_)Hpt_0p2%bmjw9~jgruX{b_ zdB%YAD;RG++txloxCf*)nwHNQJvyw-;X}ZJTGSetzsQZ5>m7~Z+|rwU5?$Rr<=Y<3 zk@P?u2y@z&;fEypaN@4b1!!?3I#D3fCV&D6W6P0vf+X~R-A!3=kU6B%9-vm;bgFoW zT@rDxEbn5Po^Wk)L(Xo%KuH_9okatEKe070`F@IH8Ls45bJ&};;aHSxpv~O(+Y7({+ROLwdDB@7ISBH{x>+JCLB~S-wk-!-R%b@L% z?XI*Rl_Mg@IlAc1dF?}*<+l{EAj}W-$=ZYUH}mni?g`CNqPc-bq1HR5n$l0fo%$!= zIeMMbm7U28H|4_G?BxAJXgpxYfv3v0i9;|8K?3!13UEl!ltgXnJ@L+xXL#CpfGCQ( z&YL7VHc`;&6*|r)iT^(Q+hXi(#E~So$=Ek(QX90nu67rCowywpEE6Q_rs5jZr15)% zW`ea{S>0HV=I>s`K-4SdcD4sg@%#IUGC!4)Kxd#{mtXaFuN&=eZWf!lTrdNib3c{O z7BRTZ@}n(YxbGkC3d6RxAft*()b)1t?+1>Go6=XH93V7v388f%U^8);#e?s~<}3+#3Q z1}wT*F^f4?39#!kY|`L0;rd_vZ|StL(g^vEr`VZNKY(Pf8fmXeTvn@c9reoJ^S`#b zBY$&^yonrnD`Bm>+^c*IsBa*Obz@@GbUEuCTp~SXqsaLe2Kn9(FBSr)UbMa&m=n>d z^10e6b;4iF`8=jaD{j)119?g@wjn{JNK|pGXN2705R(X4$}1g4z3>BykKFSLiJFQo-=+b9$RP?bWX= zh}_*XH)_voJslv>$6B&(K(cJ`bHR__O0fmFBA(d1wXa#*;}*QE)IiPR?hEDdsV$m~ z6_N++TlVrkoyva=Ov^>3C+127&`D08qsx)vV^Hg6m1=SL~XBU-Zb%cOKquxfAE`%Z_7*GCsQ97 zo#&lgHwjY`GIOl^OsfHpRFuem_;?utjuyF;S^-siFHfQP52!kN5umlNY9d9O<3wJU z+!s&v4oqvCmv9Si+|?10In%r4*n>+DYMZmUsuozT>66sg`Ud=SJ-T)sL)7olru~#k z_DEZQtfaEAoF`e*u& zY*$j_jlVp_z362Vb>^eJHY*8mE~RDqz^MAr=J0qZn@t`?KrBz>U$9O3AQUOaGX-yNH)4N|TLZv8Siyd#BU( zOG_b|FI1;ISUGWdG433@Le{v<$(euh1ptN@KimqD;V^6<@pXtzKAvgmx_+uSQC8pX zAv&r-I{VpKF{fjEmg0Nouul92b(7Q9gwM{cw|TQ{M9Jwi9jB6x=*H4;?w5lTf)yALs#NQCL33Lby^OaI;g?VnFMWA`y}ab$86l^8*9Y zZMGcELP9ybatPjWW&;IWzi0i{RC3lh@?sS=RmN*VlS&XF( z7^4sdXN8Pa1*G=ey9km@L+<_%$x0{oq)9Vb!3^{d#bU?eU~z-i17Ix;9)A~s3;%b_ z0SY)xfag(lc4W4QZOl%U$2ADe<*mc3jSPQn+jUSE^L;|visrM5#yiIY*Z6b_-XQ_B zxh^UcA0PRW8?}i7?Q#B(- zzERi7h0%MY#SDd5L3^$>jBy00=5B!=CQ?jbXl|>_2(8b-g13*3PBp9y9a`e;R36}u z)TJ5^ibQ0R-7{=7m%gOQ7)V;h4;jvhXZM86yy`cozT?ef@L8(90E8n483mM<&P-*j z<88HzYyZmB`b&aQB>!j5SRR&h^s-S6BLf77JG#1Q6{+AOULcdTx*g(7Zd`%Y7h?N} z?!ySX*s_Kp=sN8Do8XqW;IinmFddQKu><~tF*{*;n527xIYz;S$gRb$4)qP|OI)Uj zS}DD0qgJH;*p-m2>|8EJ-u9!4>LN+U>0779LYzl{*S%5Nd^JXLG%Rr43z!}&+KR#n zmQ{GID6{`o(OkTWX@0uOosqoEqv_-4c9DI7Isc_MD%b+@o@NR9G`wen#`eJ|RHIQ? zv*bi02VU3R`WR<#v~7pB^0pkQZ=#oc-Q@#+3BqsaLfM`bJ$yf6OEd7x>c*ZP>pu>d Mn^+lB3~xmJ7gI-@NdN!< diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index cc34c1e76..fe16b075c 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -153,6 +153,18 @@ 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; + C9C8254315AE204D00D493FA /* options_add_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8253F15AE204D00D493FA /* options_add_disabled.png */; }; + C9C8254415AE204D00D493FA /* options_add_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8253F15AE204D00D493FA /* options_add_disabled.png */; }; + C9C8254515AE204D00D493FA /* options_transfer_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254015AE204D00D493FA /* options_transfer_disabled.png */; }; + C9C8254615AE204D00D493FA /* options_transfer_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254015AE204D00D493FA /* options_transfer_disabled.png */; }; + C9C8254715AE204D00D493FA /* transfer_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254115AE204D00D493FA /* transfer_call_default.png */; }; + C9C8254815AE204D00D493FA /* transfer_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254115AE204D00D493FA /* transfer_call_default.png */; }; + C9C8254915AE204D00D493FA /* transfer_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254215AE204D00D493FA /* transfer_call_over.png */; }; + C9C8254A15AE204D00D493FA /* transfer_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254215AE204D00D493FA /* transfer_call_over.png */; }; + C9C8254C15AE207B00D493FA /* options_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254B15AE207B00D493FA /* options_selected.png */; }; + C9C8254D15AE207B00D493FA /* options_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254B15AE207B00D493FA /* options_selected.png */; }; + C9C8254F15AE256100D493FA /* transfer_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254E15AE256100D493FA /* transfer_call_disabled.png */; }; + C9C8255015AE256100D493FA /* transfer_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254E15AE256100D493FA /* transfer_call_disabled.png */; }; D3128FE115AABC7E00A2147A /* ContactDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */; }; D3128FE215AABC7E00A2147A /* ContactDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */; }; D3128FE315AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */; }; @@ -1041,6 +1053,12 @@ 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + C9C8253F15AE204D00D493FA /* options_add_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_disabled.png; path = Resources/options_add_disabled.png; sourceTree = ""; }; + C9C8254015AE204D00D493FA /* options_transfer_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_disabled.png; path = Resources/options_transfer_disabled.png; sourceTree = ""; }; + C9C8254115AE204D00D493FA /* transfer_call_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_call_default.png; path = Resources/transfer_call_default.png; sourceTree = ""; }; + C9C8254215AE204D00D493FA /* transfer_call_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_call_over.png; path = Resources/transfer_call_over.png; sourceTree = ""; }; + C9C8254B15AE207B00D493FA /* options_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_selected.png; path = Resources/options_selected.png; sourceTree = ""; }; + C9C8254E15AE256100D493FA /* transfer_call_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_call_disabled.png; path = Resources/transfer_call_disabled.png; sourceTree = ""; }; D3128FDE15AABC7E00A2147A /* ContactDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsViewController.h; sourceTree = ""; }; D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsViewController.m; sourceTree = ""; }; D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactDetailsViewController.xib; sourceTree = ""; }; @@ -2023,8 +2041,6 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - D32D5AA515ADE5D9008593F3 /* button_alert_background_default.png */, - D32D5AA615ADE5D9008593F3 /* button_alert_background_over.png */, D3F83F741582253100336684 /* accept_default.png */, D3F83F751582253100336684 /* accept_over.png */, D3D6A39B159B0EEF005F692C /* add_call_default.png */, @@ -2040,9 +2056,12 @@ D3211BBB159CBFD60098460B /* back_default.png */, D3211BBC159CBFD60098460B /* back_disabled.png */, D3211BBD159CBFD60098460B /* back_over.png */, + D3ED3E401585FB4A006C0DE4 /* background.png */, D3ED3E7615861B1B006C0DE4 /* backspace_default.png */, D35E758815932DE60066B1C1 /* backspace_disabled.png */, D3ED3E7715861B1B006C0DE4 /* backspace_over.png */, + D32D5AA515ADE5D9008593F3 /* button_alert_background_default.png */, + D32D5AA615ADE5D9008593F3 /* button_alert_background_over.png */, D35406F515A47E9E007E7E81 /* button_background_default.png */, D35406F615A47E9E007E7E81 /* button_background_over.png */, D3ED3E7015861ABD006C0DE4 /* call_default.png */, @@ -2152,7 +2171,6 @@ D3F83EF6158205A100336684 /* micro_on_default.png */, D35EA76215A2DF8D003E025D /* micro_on_disabled.png */, D3F83EF7158205A100336684 /* micro_on_over.png */, - D3ED3E401585FB4A006C0DE4 /* background.png */, D3F83F3C1582223B00336684 /* numpad_eight_default.png */, D3F83F3D1582223B00336684 /* numpad_eight_over.png */, D3F83F361582223B00336684 /* numpad_five_default.png */, @@ -2180,11 +2198,14 @@ 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, D3196D3015A321E2007FEEBA /* options_add_default.png */, + C9C8253F15AE204D00D493FA /* options_add_disabled.png */, D3196D3115A321E2007FEEBA /* options_add_over.png */, D3D6A3A8159B0EFE005F692C /* options_default.png */, D3D6A3A9159B0EFE005F692C /* options_disabled.png */, D3D6A3AA159B0EFE005F692C /* options_over.png */, + C9C8254B15AE207B00D493FA /* options_selected.png */, D3196D3215A321E3007FEEBA /* options_transfer_default.png */, + C9C8254015AE204D00D493FA /* options_transfer_disabled.png */, D3196D3315A321E3007FEEBA /* options_transfer_over.png */, D3F83EF8158205A100336684 /* pause_off_default.png */, D3F83EF9158205A100336684 /* pause_off_over.png */, @@ -2220,6 +2241,9 @@ D35E757515931E5D0066B1C1 /* switch_camera_default.png */, D35E757615931E5D0066B1C1 /* switch_camera_over.png */, D3C714B2159DB84400705B8E /* toy-mono.wav */, + C9C8254115AE204D00D493FA /* transfer_call_default.png */, + C9C8254E15AE256100D493FA /* transfer_call_disabled.png */, + C9C8254215AE204D00D493FA /* transfer_call_over.png */, D3F83F00158205A100336684 /* video_off_default.png */, D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */, D3F83F01158205A100336684 /* video_off_over.png */, @@ -2702,6 +2726,12 @@ D3E8F68815ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */, D32D5AA715ADE5D9008593F3 /* button_alert_background_default.png in Resources */, D32D5AA915ADE5D9008593F3 /* button_alert_background_over.png in Resources */, + C9C8254315AE204D00D493FA /* options_add_disabled.png in Resources */, + C9C8254515AE204D00D493FA /* options_transfer_disabled.png in Resources */, + C9C8254715AE204D00D493FA /* transfer_call_default.png in Resources */, + C9C8254915AE204D00D493FA /* transfer_call_over.png in Resources */, + C9C8254C15AE207B00D493FA /* options_selected.png in Resources */, + C9C8254F15AE256100D493FA /* transfer_call_disabled.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2935,6 +2965,12 @@ D3E8F68915ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */, D32D5AA815ADE5D9008593F3 /* button_alert_background_default.png in Resources */, D32D5AAA15ADE5D9008593F3 /* button_alert_background_over.png in Resources */, + C9C8254415AE204D00D493FA /* options_add_disabled.png in Resources */, + C9C8254615AE204D00D493FA /* options_transfer_disabled.png in Resources */, + C9C8254815AE204D00D493FA /* transfer_call_default.png in Resources */, + C9C8254A15AE204D00D493FA /* transfer_call_over.png in Resources */, + C9C8254D15AE207B00D493FA /* options_selected.png in Resources */, + C9C8255015AE256100D493FA /* transfer_call_disabled.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From c4d8a9ee635d0fa22f5d4fe595b7c9d4ad46e006 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 12 Jul 2012 09:48:32 +0200 Subject: [PATCH 036/397] Rename hightlight to higlight --- Classes/ContactDetailsLabelViewController.m | 2 + Classes/ContactsTableViewController.m | 2 +- Classes/LinphoneUI/UICallCell.h | 4 +- Classes/LinphoneUI/UICallCell.m | 12 +-- Classes/LinphoneUI/UICallCell.xib | 26 +++---- Classes/LinphoneUI/UIChatCell.xib | 72 ++---------------- Classes/LinphoneUI/UIContactCell.xib | 45 ++--------- Classes/LinphoneUI/UIHistoryCell.xib | 7 +- ...ight.png => cell_call_first_highlight.png} | Bin ...hightlight.png => cell_call_highlight.png} | Bin ...list_hightlight.png => list_highlight.png} | Bin linphone.xcodeproj/project.pbxproj | 36 ++++----- 12 files changed, 60 insertions(+), 146 deletions(-) rename Resources/{cell_call_first_hightlight.png => cell_call_first_highlight.png} (100%) rename Resources/{cell_call_hightlight.png => cell_call_highlight.png} (100%) rename Resources/{list_hightlight.png => list_highlight.png} (100%) diff --git a/Classes/ContactDetailsLabelViewController.m b/Classes/ContactDetailsLabelViewController.m index ad5e22e21..62508669a 100644 --- a/Classes/ContactDetailsLabelViewController.m +++ b/Classes/ContactDetailsLabelViewController.m @@ -68,6 +68,8 @@ UITableViewCell *cell = [atableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kCellId] autorelease]; + //TODO + /*[cell setSelectedBackgroundView:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"list_highlight.png"]]autorelease]];*/ } NSString* key = [[dataList allKeys] objectAtIndex:[indexPath row]]; [cell.textLabel setText:[dataList objectForKey:key]]; diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index f3d930e47..258d265b1 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -189,7 +189,7 @@ static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kNewContactCellId] autorelease]; //TODO /* - [cell setSelectedBackgroundView:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"list_hightlight.png"]]autorelease]];*/ + [cell setSelectedBackgroundView:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"list_highlight.png"]]autorelease]];*/ } [cell.textLabel setText:@"Add new contact"]; return cell; diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h index 00e624083..e48b2de57 100644 --- a/Classes/LinphoneUI/UICallCell.h +++ b/Classes/LinphoneUI/UICallCell.h @@ -39,7 +39,7 @@ BOOL currentCall; UIImageView* headerBackgroundImage; - UIImageView* headerBackgroundHightlightImage; + UIImageView* headerBackgroundHighlightImage; UILabel *addressLabel; UILabel *stateLabel; @@ -57,7 +57,7 @@ @property (retain) UICallCellData *data; @property (nonatomic, retain) IBOutlet UIImageView* headerBackgroundImage; -@property (nonatomic, retain) IBOutlet UIImageView* headerBackgroundHightlightImage; +@property (nonatomic, retain) IBOutlet UIImageView* headerBackgroundHighlightImage; @property (nonatomic, retain) IBOutlet UILabel* addressLabel; @property (nonatomic, retain) IBOutlet UILabel* stateLabel; diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 083b7ba3a..6bb07e7b4 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -40,7 +40,7 @@ @synthesize data; @synthesize headerBackgroundImage; -@synthesize headerBackgroundHightlightImage; +@synthesize headerBackgroundHighlightImage; @synthesize addressLabel; @synthesize stateLabel; @@ -90,7 +90,7 @@ - (void)prepareForReuse { [super prepareForReuse]; self->currentCall = FALSE; - [headerBackgroundHightlightImage setAlpha:0.0f]; + [headerBackgroundHighlightImage setAlpha:0.0f]; } #pragma mark - Properties Functions @@ -100,9 +100,9 @@ currentCall = val; if(oldVal != val) { if (currentCall) { - [self startBlinkAnimation:@"Blink" target:headerBackgroundHightlightImage]; + [self startBlinkAnimation:@"Blink" target:headerBackgroundHighlightImage]; } else { - [self stopBlinkAnimation:@"Blink" target:headerBackgroundHightlightImage]; + [self stopBlinkAnimation:@"Blink" target:headerBackgroundHighlightImage]; } } } @@ -193,10 +193,10 @@ [removeButton setHidden:true]; if(firstCell) { [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_call_first.png"]]; - [headerBackgroundHightlightImage setImage:[UIImage imageNamed:@"cell_call_first_hightlight.png"]]; + [headerBackgroundHighlightImage setImage:[UIImage imageNamed:@"cell_call_first_highlight.png"]]; } else { [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_call.png"]]; - [headerBackgroundHightlightImage setImage:[UIImage imageNamed:@"cell_call_hightlight.png"]]; + [headerBackgroundHighlightImage setImage:[UIImage imageNamed:@"cell_call_highlight.png"]]; } } else { [stateImage setHidden:true]; diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib index b6da4700f..c3a0437e7 100644 --- a/Classes/LinphoneUI/UICallCell.xib +++ b/Classes/LinphoneUI/UICallCell.xib @@ -4806,14 +4806,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 54 - - - headerBackgroundHightlightImage - - - - 57 - selectedBackgroundView @@ -4822,6 +4814,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 58 + + + headerBackgroundHighlightImage + + + + 59 + doHeaderClick: @@ -4965,7 +4965,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 56 - headerBackgroundHightlightImage + headerBackgroundHighlightImage @@ -4999,7 +4999,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 58 + 59 @@ -5024,7 +5024,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE UILabel UIImageView UIView - UIImageView + UIImageView UIImageView UIView UIPauseButton @@ -5045,8 +5045,8 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE avatarView UIView - - headerBackgroundHightlightImage + + headerBackgroundHighlightImage UIImageView diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib index 9d6d04987..dda98e6a6 100644 --- a/Classes/LinphoneUI/UIChatCell.xib +++ b/Classes/LinphoneUI/UIChatCell.xib @@ -42,7 +42,6 @@ 292 {{10, 8}, {27, 27}} - _NS:9 NO @@ -57,7 +56,6 @@ 274 {{45, 0}, {60, 44}} - _NS:328 NO @@ -93,7 +91,6 @@ 274 {{110, 0}, {170, 44}} - _NS:328 NO @@ -126,7 +123,7 @@ 292 {{276, 0}, {44, 44}} - + _NS:9 NO IBCocoaTouchFramework @@ -164,7 +161,7 @@ 292 {{276, 0}, {44, 44}} - + _NS:9 NO IBCocoaTouchFramework @@ -190,7 +187,6 @@ {320, 44} - _NS:9 @@ -204,13 +200,13 @@ 292 {320, 44} - + _NS:9 NO IBCocoaTouchFramework NSImage - list_hightlight.png + list_highlight.png @@ -218,7 +214,7 @@ 292 {320, 44} - + _NS:9 NO @@ -401,61 +397,7 @@ 37 - - - - UIChatCell - UITableViewCell - - id - id - - - - onDeleteClick: - id - - - onDetailsClick: - id - - - - UIImageView - UILabel - UIButton - UIButton - UILabel - - - - avatarImage - UIImageView - - - chatContentLabel - UILabel - - - deleteButton - UIButton - - - detailsButton - UIButton - - - displayNameLabel - UILabel - - - - IBProjectSource - ./Classes/UIChatCell.h - - - - + 0 IBCocoaTouchFramework @@ -470,7 +412,7 @@ {45, 45} {45, 45} {45, 45} - {640, 88} + {640, 88} 1181 diff --git a/Classes/LinphoneUI/UIContactCell.xib b/Classes/LinphoneUI/UIContactCell.xib index bfa83f78e..0b696c528 100644 --- a/Classes/LinphoneUI/UIContactCell.xib +++ b/Classes/LinphoneUI/UIContactCell.xib @@ -41,7 +41,6 @@ 292 {{6, 6}, {32, 32}} - _NS:9 NO @@ -52,7 +51,6 @@ 274 {{46, 0}, {55, 44}} - _NS:328 NO @@ -88,7 +86,7 @@ 274 {{111, 0}, {200, 44}} - + _NS:328 NO YES @@ -118,7 +116,6 @@ {320, 44} - _NS:9 @@ -132,13 +129,13 @@ 292 {320, 44} - + _NS:9 NO IBCocoaTouchFramework NSImage - list_hightlight.png + list_highlight.png @@ -146,7 +143,7 @@ 292 {320, 44} - + _NS:9 NO @@ -275,37 +272,7 @@ 24 - - - - UIContactCell - UITableViewCell - - UIImageView - UILabel - UILabel - - - - avatarImage - UIImageView - - - firstNameLabel - UILabel - - - lastNameLabel - UILabel - - - - IBProjectSource - ./Classes/UIContactCell.h - - - - + 0 IBCocoaTouchFramework @@ -315,7 +282,7 @@ YES 3 - list_hightlight.png + list_highlight.png {640, 88} 1181 diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index d921b21d4..4a1efe211 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -129,6 +129,7 @@ {{276, 0}, {44, 44}} + _NS:9 NO IBCocoaTouchFramework @@ -169,12 +170,13 @@ {320, 44} + _NS:9 NO IBCocoaTouchFramework NSImage - list_hightlight.png + list_highlight.png @@ -183,6 +185,7 @@ {320, 44} + _NS:9 NO @@ -412,7 +415,7 @@ {45, 45} {45, 45} {45, 45} - {640, 88} + {640, 88} 1181 diff --git a/Resources/cell_call_first_hightlight.png b/Resources/cell_call_first_highlight.png similarity index 100% rename from Resources/cell_call_first_hightlight.png rename to Resources/cell_call_first_highlight.png diff --git a/Resources/cell_call_hightlight.png b/Resources/cell_call_highlight.png similarity index 100% rename from Resources/cell_call_hightlight.png rename to Resources/cell_call_highlight.png diff --git a/Resources/list_hightlight.png b/Resources/list_highlight.png similarity index 100% rename from Resources/list_hightlight.png rename to Resources/list_highlight.png diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index fe16b075c..24123f5f1 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -177,8 +177,8 @@ D3128FF415AABE4E00A2147A /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; }; D3128FF515AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; D3128FF615AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; - D3196D2D15A3199D007FEEBA /* list_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_hightlight.png */; }; - D3196D2E15A3199D007FEEBA /* list_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_hightlight.png */; }; + D3196D2D15A3199D007FEEBA /* list_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_highlight.png */; }; + D3196D2E15A3199D007FEEBA /* list_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_highlight.png */; }; D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3115A321E2007FEEBA /* options_add_over.png */; }; @@ -475,10 +475,10 @@ D389363A15A6D53200A3A3AA /* chat_bubble_incoming.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */; }; D389363B15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */; }; D389363C15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */; }; - D38D14AF15A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_hightlight.png */; }; - D38D14B015A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_hightlight.png */; }; - D38D14B115A30B3D008497E8 /* cell_call_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AE15A30B3D008497E8 /* cell_call_hightlight.png */; }; - D38D14B215A30B3D008497E8 /* cell_call_hightlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AE15A30B3D008497E8 /* cell_call_hightlight.png */; }; + D38D14AF15A30B3D008497E8 /* cell_call_first_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */; }; + D38D14B015A30B3D008497E8 /* cell_call_first_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */; }; + D38D14B115A30B3D008497E8 /* cell_call_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AE15A30B3D008497E8 /* cell_call_highlight.png */; }; + D38D14B215A30B3D008497E8 /* cell_call_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AE15A30B3D008497E8 /* cell_call_highlight.png */; }; D3A55FBC15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; @@ -1066,7 +1066,7 @@ D3128FE815AABE4E00A2147A /* contact_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_back_over.png; path = Resources/contact_back_over.png; sourceTree = ""; }; D3128FE915AABE4E00A2147A /* contact_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_default.png; path = Resources/contact_edit_default.png; sourceTree = ""; }; D3128FEA15AABE4E00A2147A /* contact_edit_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_over.png; path = Resources/contact_edit_over.png; sourceTree = ""; }; - D3196D2C15A3199D007FEEBA /* list_hightlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_hightlight.png; path = Resources/list_hightlight.png; sourceTree = ""; }; + D3196D2C15A3199D007FEEBA /* list_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_highlight.png; path = Resources/list_highlight.png; sourceTree = ""; }; D3196D3015A321E2007FEEBA /* options_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_default.png; path = Resources/options_add_default.png; sourceTree = ""; }; D3196D3115A321E2007FEEBA /* options_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_over.png; path = Resources/options_add_over.png; sourceTree = ""; }; D3196D3215A321E3007FEEBA /* options_transfer_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_default.png; path = Resources/options_transfer_default.png; sourceTree = ""; }; @@ -1269,8 +1269,8 @@ D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = NinePatch.xcodeproj; path = NinePatch/NinePatch.xcodeproj; sourceTree = ""; }; D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_bubble_incoming.9.png; path = Resources/chat_bubble_incoming.9.png; sourceTree = ""; }; D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_bubble_outgoing.9.png; path = Resources/chat_bubble_outgoing.9.png; sourceTree = ""; }; - D38D14AD15A30B3D008497E8 /* cell_call_first_hightlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_first_hightlight.png; path = Resources/cell_call_first_hightlight.png; sourceTree = ""; }; - D38D14AE15A30B3D008497E8 /* cell_call_hightlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_hightlight.png; path = Resources/cell_call_hightlight.png; sourceTree = ""; }; + D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_first_highlight.png; path = Resources/cell_call_first_highlight.png; sourceTree = ""; }; + D38D14AE15A30B3D008497E8 /* cell_call_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_highlight.png; path = Resources/cell_call_highlight.png; sourceTree = ""; }; D3A55FBA15877E5E003FD403 /* UIContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactCell.h; sourceTree = ""; }; D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = ""; }; D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = ""; }; @@ -2084,8 +2084,8 @@ D31C9C8F158A1C1000756B45 /* call_status_outgoing.png */, D36C43CC158F2F370048BA40 /* cell_call.png */, D3211BB8159C8A820098460B /* cell_call_first.png */, - D38D14AD15A30B3D008497E8 /* cell_call_first_hightlight.png */, - D38D14AE15A30B3D008497E8 /* cell_call_hightlight.png */, + D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */, + D38D14AE15A30B3D008497E8 /* cell_call_highlight.png */, D36C43CD158F2F370048BA40 /* cell_conference.png */, D3EA5401159852080037DC6B /* chat_add_default.png */, D3EA5402159852080037DC6B /* chat_add_over.png */, @@ -2164,7 +2164,7 @@ D3EA5417159858A80037DC6B /* list_delete_over.png */, D354981815876FE7000081D8 /* list_details_default.png */, D354981915876FE7000081D8 /* list_details_over.png */, - D3196D2C15A3199D007FEEBA /* list_hightlight.png */, + D3196D2C15A3199D007FEEBA /* list_highlight.png */, D3F83EF4158205A100336684 /* micro_off_default.png */, D35EA76115A2DF8D003E025D /* micro_off_disabled.png */, D3F83EF5158205A100336684 /* micro_off_over.png */, @@ -2672,9 +2672,9 @@ D365AA7D15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */, D35EA76315A2DF8D003E025D /* micro_off_disabled.png in Resources */, D35EA76515A2DF8D003E025D /* micro_on_disabled.png in Resources */, - D38D14AF15A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */, - D38D14B115A30B3D008497E8 /* cell_call_hightlight.png in Resources */, - D3196D2D15A3199D007FEEBA /* list_hightlight.png in Resources */, + D38D14AF15A30B3D008497E8 /* cell_call_first_highlight.png in Resources */, + D38D14B115A30B3D008497E8 /* cell_call_highlight.png in Resources */, + D3196D2D15A3199D007FEEBA /* list_highlight.png in Resources */, D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */, D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */, D3196D3815A321E3007FEEBA /* options_transfer_default.png in Resources */, @@ -2911,9 +2911,9 @@ D365AA7E15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */, D35EA76415A2DF8D003E025D /* micro_off_disabled.png in Resources */, D35EA76615A2DF8D003E025D /* micro_on_disabled.png in Resources */, - D38D14B015A30B3D008497E8 /* cell_call_first_hightlight.png in Resources */, - D38D14B215A30B3D008497E8 /* cell_call_hightlight.png in Resources */, - D3196D2E15A3199D007FEEBA /* list_hightlight.png in Resources */, + D38D14B015A30B3D008497E8 /* cell_call_first_highlight.png in Resources */, + D38D14B215A30B3D008497E8 /* cell_call_highlight.png in Resources */, + D3196D2E15A3199D007FEEBA /* list_highlight.png in Resources */, D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */, D3196D3715A321E3007FEEBA /* options_add_over.png in Resources */, D3196D3915A321E3007FEEBA /* options_transfer_default.png in Resources */, From 5f70424bf6550e697e1ce08336c175895fe3d208 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 12 Jul 2012 11:49:53 +0200 Subject: [PATCH 037/397] Modify & Use FastAddressBook Show avatar on call & incoming --- Classes/ContactDetailsTableViewController.m | 8 +- Classes/ContactsTableViewController.m | 7 +- Classes/IncomingCallViewController.m | 43 +++++- Classes/LinphoneManager.h | 9 +- Classes/LinphoneManager.m | 53 +------ Classes/LinphoneUI/UICallCell.m | 45 +++--- Classes/LinphoneUI/UIContactCell.m | 18 ++- Classes/LinphoneUI/UIContactDetailsHeader.m | 27 +--- Classes/Utils/FastAddressBook.h | 21 +-- Classes/Utils/FastAddressBook.m | 134 ++++++++++++------ Classes/WizardViewController.xib | 24 ++-- .../{setup_label.png => field_background.png} | Bin linphone.xcodeproj/project.pbxproj | 12 +- 13 files changed, 207 insertions(+), 194 deletions(-) rename Resources/{setup_label.png => field_background.png} (100%) diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 8d0fe7d3c..8f65d82f9 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -53,8 +53,6 @@ @synthesize contactID; -static const NSString *CONTACT_SIP_FIELD = @"SIP"; - #pragma mark - Lifecycle Functions - (void)initContactDetailsTableViewController { @@ -72,7 +70,7 @@ static const NSString *CONTACT_SIP_FIELD = @"SIP"; footerController = [[UIContactDetailsFooter alloc] init]; addressBook = ABAddressBookCreate(); - ABAddressBookRegisterExternalChangeCallback(addressBook, sync_toc_address_book, self); + ABAddressBookRegisterExternalChangeCallback(addressBook, sync_address_book, self); } - (id)init { @@ -92,7 +90,7 @@ static const NSString *CONTACT_SIP_FIELD = @"SIP"; } - (void)dealloc { - ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_toc_address_book, self); + ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, self); CFRelease(addressBook); [labelArray release]; @@ -159,7 +157,7 @@ static const NSString *CONTACT_SIP_FIELD = @"SIP"; return [dict autorelease]; } -static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { +static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { ContactDetailsTableViewController* controller = (ContactDetailsTableViewController*)context; if(!controller->inhibUpdate) { [controller resetData]; diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 258d265b1..a1b564d9f 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -33,7 +33,7 @@ addressBookMap = [[OrderedDictionary alloc] init]; addressBook = ABAddressBookCreate(); - ABAddressBookRegisterExternalChangeCallback(addressBook, sync_toc_address_book, self); + ABAddressBookRegisterExternalChangeCallback(addressBook, sync_address_book, self); } - (id)init { @@ -53,7 +53,7 @@ } - (void)dealloc { - ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_toc_address_book, self); + ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, self); CFRelease(addressBook); [addressBookMap removeAllObjects]; [super dealloc]; @@ -70,12 +70,13 @@ #pragma mark - -static void sync_toc_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { +static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { ContactsTableViewController* controller = (ContactsTableViewController*)context; ABAddressBookRevert(addressBook); [(UITableView *)controller.view reloadData]; } + #pragma mark - ViewController Functions - (void)viewWillAppear:(BOOL)animated { diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index d41bc09d2..db6c97d75 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -19,6 +19,7 @@ #import "IncomingCallViewController.h" #import "LinphoneManager.h" +#import "FastAddressBook.h" @implementation IncomingCallViewController @@ -83,15 +84,45 @@ #pragma mark - Property Functions - (void)setCall:(LinphoneCall*)acall { + call = acall; + [self update]; +} + +- (void)update { [self view]; //Force view load - call = acall; - const char* userNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); - NSString* userName = userNameChars?[[[NSString alloc] initWithUTF8String:userNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); - const char* displayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); - NSString* displayName = [displayNameChars?[[NSString alloc] initWithUTF8String:displayNameChars]:@"" autorelease]; + UIImage *image; + NSString* address; + const LinphoneAddress* addr = linphone_call_get_remote_address(call); + if (addr != NULL) { + // contact name + const char* lAddress = linphone_address_as_string_uri_only(addr); + const char* lDisplayName = linphone_address_get_display_name(addr); + const char* lUserName = linphone_address_get_username(addr); + if (lDisplayName) + address = [NSString stringWithUTF8String:lDisplayName]; + else if(lUserName) + address = [NSString stringWithUTF8String:lUserName]; + if(lAddress) { + NSString *address = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; + ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:address]; + image = [FastAddressBook getContactImage:contact thumbnail:false]; + } + } else { + [addressLabel setText:@"Unknown"]; + } - [addressLabel setText:([displayName length]>0)?displayName:userName]; + // Set Image + if(image == nil) { + image = [UIImage imageNamed:@"avatar_unknown.png"]; + } + [avatarImage setImage:image]; + + // Set Address + if(address == nil) { + address = @"Unknown"; + } + [addressLabel setText:address]; } - (LinphoneCall*) getCall { diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 1b7a54a21..240091550 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -29,6 +29,8 @@ #include "linphonecore.h" +extern const NSString *CONTACT_SIP_FIELD; + typedef enum _Connectivity { wifi, wwan @@ -64,10 +66,11 @@ typedef struct _LinphoneCallAppData { bool isbackgroundModeEnabled; Connectivity connectivity; - FastAddressBook* mFastAddressBook; const char* frontCamId; const char* backCamId; + FastAddressBook* fastAddressBook; + id settingsStore; sqlite3 *database; @@ -93,8 +96,6 @@ typedef struct _LinphoneCallAppData { - (BOOL)enterBackgroundMode; - (void)becomeActive; - (void)kickOffNetworkConnection; -- (NSString*)getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log; -- (UIImage*)getImageFromAddressBook:(NSString*) number; - (void)setupNetworkReachabilityCallback; - (void)refreshRegisters; @@ -103,7 +104,7 @@ typedef struct _LinphoneCallAppData { - (BOOL)isSpeakerEnabled; @property (nonatomic, retain) id settingsStore; - +@property (readonly) FastAddressBook* fastAddressBook; @property Connectivity connectivity; @property (nonatomic) int defaultExpires; @property (readonly) const char* frontCamId; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index b7396a70c..219cb1bfa 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -38,6 +38,7 @@ static LinphoneCore* theLinphoneCore=nil; static LinphoneManager* theLinphoneManager=nil; +const NSString *CONTACT_SIP_FIELD = @"SIP"; extern void libmsilbc_init(); #ifdef HAVE_AMR @@ -66,6 +67,7 @@ extern void libmsbcg729_init(); @synthesize defaultExpires; @synthesize settingsStore; @synthesize database; +@synthesize fastAddressBook; struct codec_name_pref_table{ const char *name; @@ -112,7 +114,7 @@ struct codec_name_pref_table codec_pref_table[]={ - (id)init { assert (!theLinphoneManager); if ((self = [super init])) { - mFastAddressBook = [[FastAddressBook alloc] init]; + fastAddressBook = [[FastAddressBook alloc] init]; database = NULL; theLinphoneManager = self; self.defaultExpires = 600; @@ -122,7 +124,7 @@ struct codec_name_pref_table codec_pref_table[]={ } - (void)dealloc { - [mFastAddressBook release]; + [fastAddressBook release]; [self closeDatabase]; [super dealloc]; @@ -164,50 +166,7 @@ struct codec_name_pref_table codec_pref_table[]={ return theLinphoneManager; } --(NSString*) getDisplayNameFromAddressBook:(NSString*) number andUpdateCallLog:(LinphoneCallLog*)log { - //1 normalize - NSString* lNormalizedNumber = [FastAddressBook normalizePhoneNumber:number]; - Contact* lContact = [mFastAddressBook getMatchingRecord:lNormalizedNumber]; - if (lContact) { - CFStringRef lDisplayName = ABRecordCopyCompositeName(lContact.record); - - if (log) { - //add phone type - char ltmpString[256]; - CFStringRef lFormatedString = CFStringCreateWithFormat(NULL,NULL,CFSTR("phone_type:%@;"),lContact.numberType); - CFStringGetCString(lFormatedString, ltmpString,sizeof(ltmpString), kCFStringEncodingUTF8); - linphone_call_log_set_ref_key(log, ltmpString); - CFRelease(lFormatedString); - } - return [(NSString*)lDisplayName autorelease]; - } - //[number release]; - - return nil; -} - --(UIImage*) getImageFromAddressBook:(NSString *)number { - NSString* lNormalizedNumber = [FastAddressBook normalizePhoneNumber:number]; - Contact* lContact = [mFastAddressBook getMatchingRecord:lNormalizedNumber]; - if (lContact) { - ABRecordRef person = ABAddressBookGetPersonWithRecordID(mFastAddressBook.addressBook, ABRecordGetRecordID(lContact.record)); - if (ABPersonHasImageData(person)) { - NSData* d; - // ios 4.1+ - if ( &ABPersonCopyImageDataWithFormat != nil) { - d = (NSData*)ABPersonCopyImageDataWithFormat(person, kABPersonImageFormatThumbnail); - } else { - d = (NSData*)ABPersonCopyImageData(person); - } - return [UIImage imageWithData:[d autorelease]]; - } - } - /* return default image */ - return [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"contact_vide" ofType:@"png"]]; - //return nil; -} - --(void) updateCallWithAddressBookData:(LinphoneCall*) call { +-(void) updateCallWithAddressBookData:(LinphoneCall*) call {/* //1 copy adress book LinphoneCallLog* lLog = linphone_call_get_call_log(call); LinphoneAddress* lAddress; @@ -232,7 +191,7 @@ struct codec_name_pref_table codec_pref_table[]={ } [lE164Number release]; - return; + return;*/ } - (void)onCall:(LinphoneCall*)call StateChanged:(LinphoneCallState)state withMessage:(const char *)message { diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 6bb07e7b4..9ce420dca 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -22,6 +22,7 @@ #import "UICallCell.h" #import "LinphoneManager.h" +#import "FastAddressBook.h" @implementation UICallCellData @@ -150,29 +151,37 @@ if(data != nil && data->call != NULL) { call = data->call; const LinphoneAddress* addr = linphone_call_get_remote_address(call); - + UIImage *image; + NSString* address; if (addr != NULL) { - const char* lUserNameChars = linphone_address_get_username(addr); - NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); - NSMutableString* mss = [[NSMutableString alloc] init]; // contact name - const char* n = linphone_address_get_display_name(addr); - if (n) - [mss appendFormat:@"%s", n, nil]; - else - [mss appendFormat:@"%@",lUserName , nil]; - - [addressLabel setText:mss]; - - // TODO - //imageView.image = [[LinphoneManager instance] getImageFromAddressBook:lUserName]; - [mss release]; + const char* lAddress = linphone_address_as_string_uri_only(addr); + const char* lDisplayName = linphone_address_get_display_name(addr); + const char* lUserName = linphone_address_get_username(addr); + if (lDisplayName) + address = [NSString stringWithUTF8String:lDisplayName]; + else if(lUserName) + address = [NSString stringWithUTF8String:lUserName]; + if(lAddress) { + NSString *address = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; + ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:address]; + image = [FastAddressBook getContactImage:contact thumbnail:false]; + } } else { [addressLabel setText:@"Unknown"]; - //TODO - //imageView.image = nil; } - + + // Set Image + if(image == nil) { + image = [UIImage imageNamed:@"avatar_unknown.png"]; + } + [avatarImage setImage:image]; + + // Set Address + if(address == nil) { + address = @"Unknown"; + } + [addressLabel setText:address]; LinphoneCallState state = linphone_call_get_state(call); diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index 355d2f58b..24a9af109 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -19,6 +19,8 @@ #import "UIContactCell.h" +#import "FastAddressBook.h" + @implementation UIContactCell @synthesize firstNameLabel; @@ -26,6 +28,7 @@ @synthesize avatarImage; @synthesize contact; + #pragma mark - Lifecycle Functions - (id)initWithIdentifier:(NSString*)identifier { @@ -92,17 +95,12 @@ if(lFirstName != nil) CFRelease(lFirstName); - if(ABPersonHasImageData(contact)) { - CFDataRef imgData = ABPersonCopyImageDataWithFormat(contact, kABPersonImageFormatThumbnail); - UIImage *img = [[UIImage alloc] initWithData:(NSData*)imgData]; - [avatarImage setImage:img]; - [img release]; - CFRelease(imgData); - } else { - [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; + // Avatar + UIImage *image = [FastAddressBook getContactImage:contact thumbnail:true]; + if(image == nil) { + image = [UIImage imageNamed:@"avatar_unknown_small.png"]; } - - + [avatarImage setImage:image]; // // Adapt size diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 2cff57470..17354bbb4 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -20,6 +20,7 @@ #import "UIContactDetailsHeader.h" #import "UIEditableTableViewCell.h" +#import "FastAddressBook.h" @implementation UIContactDetailsHeader @@ -78,32 +79,16 @@ if(contact) { // Avatar image { - if(ABPersonHasImageData(contact)) { - CFDataRef imgData = ABPersonCopyImageDataWithFormat(contact, kABPersonImageFormatThumbnail); - UIImage *img = [[UIImage alloc] initWithData:(NSData *)imgData]; - [avatarImage setImage:img]; - [img release]; - CFRelease(imgData); - } else { - [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; + UIImage *image = [FastAddressBook getContactImage:contact thumbnail:true]; + if(image == nil) { + image = [UIImage imageNamed:@"avatar_unknown_small.png"]; } + [avatarImage setImage:image]; } // Contact label { - CFStringRef lFirstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty); - CFStringRef lLocalizedFirstName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lFirstName):nil; - CFStringRef lLastName = ABRecordCopyValue(contact, kABPersonLastNameProperty); - CFStringRef lLocalizedLastName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lLastName):nil; - [contactLabel setText:[NSString stringWithFormat:@"%@ %@", (NSString*)lLocalizedFirstName, (NSString*)lLocalizedLastName]]; - if(lLocalizedLastName != nil) - CFRelease(lLocalizedLastName); - if(lLastName != nil) - CFRelease(lLastName); - if(lLocalizedFirstName != nil) - CFRelease(lLocalizedFirstName); - if(lFirstName != nil) - CFRelease(lFirstName); + [contactLabel setText:[FastAddressBook getContactDisplayName:contact]]; } } } diff --git a/Classes/Utils/FastAddressBook.h b/Classes/Utils/FastAddressBook.h index 65713ad35..3e0f89a6c 100644 --- a/Classes/Utils/FastAddressBook.h +++ b/Classes/Utils/FastAddressBook.h @@ -20,26 +20,17 @@ #import #import -@interface Contact : NSObject { - ABRecordRef record; - NSString* numberType; -} --(id) initWithRecord:(ABRecordRef) record ofType:(NSString*) type; -@property (nonatomic, readonly) ABRecordRef record; -@property (nonatomic, readonly) NSString* numberType; -@end - @interface FastAddressBook : NSObject { NSMutableDictionary* mAddressBookMap; ABAddressBookRef addressBook; } --(Contact*) getMatchingRecord:(NSString*) number ; -+(NSString*) appendCountryCodeIfPossible:(NSString*) number ; -+(NSString*) normalizePhoneNumber:(NSString*) number ; --(id) init ; - -@property (nonatomic, readonly) ABAddressBookRef addressBook; ++ (NSString*)getContactDisplayName:(ABRecordRef)contact; ++ (UIImage*)getContactImage:(ABRecordRef)contact thumbnail:(BOOL)thumbnail; +- (ABRecordRef)getContact:(NSString*)address; ++ (NSString*)appendCountryCodeIfPossible:(NSString*)number; ++ (NSString*)normalizePhoneNumber:(NSString*)number; ++ (NSString*)normalizeSipURI:(NSString*)address; @end diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index 46f67d74d..b2441ca7b 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -22,15 +22,36 @@ @implementation FastAddressBook -@synthesize addressBook; - -- (Contact*)getMatchingRecord:(NSString*) number { - @synchronized (mAddressBookMap){ - return (Contact*) [mAddressBookMap objectForKey:number]; - } ++ (NSString*)getContactDisplayName:(ABRecordRef)contact { + NSString *retString = nil; + if (contact) { + CFStringRef lDisplayName = ABRecordCopyCompositeName(contact); + if(lDisplayName != NULL) { + retString = [NSString stringWithString:(NSString*)lDisplayName]; + CFRelease(lDisplayName); + } + } + return retString; } -+ (NSString*)appendCountryCodeIfPossible:(NSString*) number { ++ (UIImage*)getContactImage:(ABRecordRef)contact thumbnail:(BOOL)thumbnail { + UIImage* retImage = nil; + if (contact && ABPersonHasImageData(contact)) { + CFDataRef imgData = ABPersonCopyImageDataWithFormat(contact, thumbnail? + kABPersonImageFormatThumbnail: kABPersonImageFormatOriginalSize); + retImage = [[[UIImage alloc] initWithData:(NSData *)imgData] autorelease]; + CFRelease(imgData); + } + return retImage; +} + +- (ABRecordRef)getContact:(NSString*)address { + @synchronized (mAddressBookMap){ + return (ABRecordRef)[mAddressBookMap objectForKey:address]; + } +} + ++ (NSString*)appendCountryCodeIfPossible:(NSString*)number { if (![number hasPrefix:@"+"] && ![number hasPrefix:@"00"]) { NSString* lCountryCode = [[LinphoneManager instance].settingsStore objectForKey:@"countrycode_preference"]; if (lCountryCode && [lCountryCode length]>0) { @@ -41,13 +62,29 @@ return number; } -+ (NSString*)normalizePhoneNumber:(NSString*) number { - NSString* lNormalizedNumber = [(NSString*)number stringByReplacingOccurrencesOfString:@" " withString:@""]; - lNormalizedNumber = [lNormalizedNumber stringByReplacingOccurrencesOfString:@"(" withString:@""]; - lNormalizedNumber = [lNormalizedNumber stringByReplacingOccurrencesOfString:@")" withString:@""]; - lNormalizedNumber = [lNormalizedNumber stringByReplacingOccurrencesOfString:@"-" withString:@""]; - lNormalizedNumber = [FastAddressBook appendCountryCodeIfPossible:lNormalizedNumber]; - return lNormalizedNumber; ++ (NSString*)normalizeSipURI:(NSString*)address { + return address; +} + ++ (NSString*)normalizePhoneNumber:(NSString*)address { + NSMutableString* lNormalizedAddress = [NSMutableString stringWithString:address]; + [lNormalizedAddress replaceOccurrencesOfString:@" " + withString:@"" + options:0 + range:NSMakeRange(0, [lNormalizedAddress length])]; + [lNormalizedAddress replaceOccurrencesOfString:@"(" + withString:@"" + options:0 + range:NSMakeRange(0, [lNormalizedAddress length])]; + [lNormalizedAddress replaceOccurrencesOfString:@")" + withString:@"" + options:0 + range:NSMakeRange(0, [lNormalizedAddress length])]; + [lNormalizedAddress replaceOccurrencesOfString:@"-" + withString:@"" + options:0 + range:NSMakeRange(0, [lNormalizedAddress length])]; + return [FastAddressBook appendCountryCodeIfPossible:lNormalizedAddress]; } void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { @@ -57,27 +94,49 @@ void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); for (id lPerson in lContacts) { - ABMutableMultiValueRef lPhoneNumbers = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonPhoneProperty); - for ( int i=0; i{320, 460} - + _NS:9 IBCocoaTouchFramework @@ -404,9 +404,9 @@ IBCocoaTouchFramework - + NSImage - setup_label.png + field_background.png 1 @@ -444,7 +444,7 @@ YES IBCocoaTouchFramework - + @@ -474,7 +474,7 @@ YES IBCocoaTouchFramework - + @@ -503,7 +503,7 @@ IBCocoaTouchFramework - + @@ -629,7 +629,7 @@ YES IBCocoaTouchFramework - + @@ -658,7 +658,7 @@ IBCocoaTouchFramework - + @@ -736,7 +736,7 @@ IBCocoaTouchFramework - + @@ -766,7 +766,7 @@ YES IBCocoaTouchFramework - + @@ -795,7 +795,7 @@ IBCocoaTouchFramework - + @@ -1461,13 +1461,13 @@ {550, 101} {550, 101} + {16, 16} {320, 154} {320, 154} {320, 154} {320, 154} {320, 154} {320, 154} - {542, 88} {320, 154} {320, 154} {320, 154} diff --git a/Resources/setup_label.png b/Resources/field_background.png similarity index 100% rename from Resources/setup_label.png rename to Resources/field_background.png diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 24123f5f1..dc970feb8 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -291,8 +291,8 @@ D350F22115A43D3400149E54 /* setup_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21515A43D3400149E54 /* setup_cancel_default.png */; }; D350F22215A43D3400149E54 /* setup_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21615A43D3400149E54 /* setup_cancel_over.png */; }; D350F22315A43D3400149E54 /* setup_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21615A43D3400149E54 /* setup_cancel_over.png */; }; - D350F22415A43D3400149E54 /* setup_label.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21715A43D3400149E54 /* setup_label.png */; }; - D350F22515A43D3400149E54 /* setup_label.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21715A43D3400149E54 /* setup_label.png */; }; + D350F22415A43D3400149E54 /* field_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21715A43D3400149E54 /* field_background.png */; }; + D350F22515A43D3400149E54 /* field_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21715A43D3400149E54 /* field_background.png */; }; D350F22615A43D3400149E54 /* setup_start_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21815A43D3400149E54 /* setup_start_default.png */; }; D350F22715A43D3400149E54 /* setup_start_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21815A43D3400149E54 /* setup_start_default.png */; }; D350F22815A43D3400149E54 /* setup_start_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21915A43D3400149E54 /* setup_start_over.png */; }; @@ -1139,7 +1139,7 @@ D350F21415A43D3400149E54 /* setup_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_back_over.png; path = Resources/setup_back_over.png; sourceTree = ""; }; D350F21515A43D3400149E54 /* setup_cancel_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_cancel_default.png; path = Resources/setup_cancel_default.png; sourceTree = ""; }; D350F21615A43D3400149E54 /* setup_cancel_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_cancel_over.png; path = Resources/setup_cancel_over.png; sourceTree = ""; }; - D350F21715A43D3400149E54 /* setup_label.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_label.png; path = Resources/setup_label.png; sourceTree = ""; }; + D350F21715A43D3400149E54 /* field_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = field_background.png; path = Resources/field_background.png; sourceTree = ""; }; D350F21815A43D3400149E54 /* setup_start_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_start_default.png; path = Resources/setup_start_default.png; sourceTree = ""; }; D350F21915A43D3400149E54 /* setup_start_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_start_over.png; path = Resources/setup_start_over.png; sourceTree = ""; }; D350F21A15A43D3400149E54 /* setup_title_assistant.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_title_assistant.png; path = Resources/setup_title_assistant.png; sourceTree = ""; }; @@ -2135,6 +2135,7 @@ D38327ED1580FE3A00FA0D23 /* dialer_default.png */, D38327EE1580FE3A00FA0D23 /* dialer_over.png */, D3C2814A15A2D38D0098AA42 /* dialer_selected.png */, + D350F21715A43D3400149E54 /* field_background.png */, D3F83EFA158205A100336684 /* hangup_default.png */, D3F83EFB158205A100336684 /* hangup_over.png */, D36C43CE158F2F370048BA40 /* header_conference.png */, @@ -2225,7 +2226,6 @@ D350F21515A43D3400149E54 /* setup_cancel_default.png */, D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */, D350F21615A43D3400149E54 /* setup_cancel_over.png */, - D350F21715A43D3400149E54 /* setup_label.png */, D350F21815A43D3400149E54 /* setup_start_default.png */, D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */, D350F21915A43D3400149E54 /* setup_start_over.png */, @@ -2684,7 +2684,7 @@ D350F21E15A43D3400149E54 /* setup_back_over.png in Resources */, D350F22015A43D3400149E54 /* setup_cancel_default.png in Resources */, D350F22215A43D3400149E54 /* setup_cancel_over.png in Resources */, - D350F22415A43D3400149E54 /* setup_label.png in Resources */, + D350F22415A43D3400149E54 /* field_background.png in Resources */, D350F22615A43D3400149E54 /* setup_start_default.png in Resources */, D350F22815A43D3400149E54 /* setup_start_over.png in Resources */, D350F22A15A43D3400149E54 /* setup_title_assistant.png in Resources */, @@ -2923,7 +2923,7 @@ D350F21F15A43D3400149E54 /* setup_back_over.png in Resources */, D350F22115A43D3400149E54 /* setup_cancel_default.png in Resources */, D350F22315A43D3400149E54 /* setup_cancel_over.png in Resources */, - D350F22515A43D3400149E54 /* setup_label.png in Resources */, + D350F22515A43D3400149E54 /* field_background.png in Resources */, D350F22715A43D3400149E54 /* setup_start_default.png in Resources */, D350F22915A43D3400149E54 /* setup_start_over.png in Resources */, D350F22B15A43D3400149E54 /* setup_title_assistant.png in Resources */, From 17001d157d8b931f90ad936292f067f2c07fb5b7 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 12 Jul 2012 12:24:39 +0200 Subject: [PATCH 038/397] Fix options button --- Classes/LinphoneUI/UICallBar.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 99c970dca..d60e846a9 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -294,7 +294,7 @@ } - (void)showOptions{ - [optionsButton setEnabled:TRUE]; + [optionsButton setSelected:TRUE]; if([optionsView isHidden]) { CGRect frame = [optionsView frame]; int original_y = frame.origin.y; @@ -317,7 +317,7 @@ } - (void)hideOptions{ - [optionsButton setEnabled:FALSE]; + [optionsButton setSelected:FALSE]; if(![optionsView isHidden]) { CGRect frame = [optionsView frame]; int original_y = frame.origin.y; From c1367078a58fd72f56dc6d7195493d579007b206 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 12 Jul 2012 21:50:13 +0200 Subject: [PATCH 039/397] Add History details view --- Classes/ContactDetailsLabelViewController.m | 1 + Classes/HistoryDetailsViewController.h | 53 ++ Classes/HistoryDetailsViewController.m | 90 ++ Classes/HistoryDetailsViewController.xib | 836 ++++++++++++++++++ Classes/LinphoneUI/UIChatRoomHeader.h | 4 +- Classes/LinphoneUI/UIChatRoomHeader.m | 6 +- Classes/LinphoneUI/UIChatRoomHeader.xib | 27 +- Classes/LinphoneUI/UIContactDetailsHeader.h | 4 +- Classes/LinphoneUI/UIContactDetailsHeader.m | 6 +- Classes/LinphoneUI/UIContactDetailsHeader.xib | 37 +- linphone.xcodeproj/project.pbxproj | 14 + 11 files changed, 1039 insertions(+), 39 deletions(-) create mode 100644 Classes/HistoryDetailsViewController.h create mode 100644 Classes/HistoryDetailsViewController.m create mode 100644 Classes/HistoryDetailsViewController.xib diff --git a/Classes/ContactDetailsLabelViewController.m b/Classes/ContactDetailsLabelViewController.m index 62508669a..a2e9a3e40 100644 --- a/Classes/ContactDetailsLabelViewController.m +++ b/Classes/ContactDetailsLabelViewController.m @@ -87,6 +87,7 @@ [self dismiss:key]; } + #pragma mark - Action Functions - (IBAction)onBackClick:(id)event { diff --git a/Classes/HistoryDetailsViewController.h b/Classes/HistoryDetailsViewController.h new file mode 100644 index 000000000..e31835684 --- /dev/null +++ b/Classes/HistoryDetailsViewController.h @@ -0,0 +1,53 @@ +/* HistoryDetailsViewController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import +#import "linphonecore.h" + +#import + +@interface HistoryDetailsViewController : UIViewController { + LinphoneCallLog *callLog; + UIImageView *avatarImage; + UILabel *addressLabel; + UILabel *dateLabel; + UILabel *dateHeaderLabel; + UILabel *durationLabel; + UILabel *durationHeaderLabel; + UILabel *typeLabel; + UILabel *typeHeaderLabel; + UIButton *addressButton; +} +@property (nonatomic, retain) IBOutlet UIImageView *avatarImage; +@property (nonatomic, retain) IBOutlet UILabel *addressLabel; +@property (nonatomic, retain) IBOutlet UILabel *dateLabel; +@property (nonatomic, retain) IBOutlet UILabel *dateHeaderLabel; +@property (nonatomic, retain) IBOutlet UILabel *durationLabel; +@property (nonatomic, retain) IBOutlet UILabel *durationHeaderLabel; +@property (nonatomic, retain) IBOutlet UILabel *typeLabel; +@property (nonatomic, retain) IBOutlet UILabel *typeHeaderLabel; +@property (nonatomic, retain) IBOutlet UIButton *addressButton; + +@property (nonatomic, assign) LinphoneCallLog *callLog; + +- (IBAction)onBackClick:(id)event; +- (IBAction)onContactClick:(id)event; +- (IBAction)onAddressClick:(id)event; + +@end diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m new file mode 100644 index 000000000..ccbabf51a --- /dev/null +++ b/Classes/HistoryDetailsViewController.m @@ -0,0 +1,90 @@ +/* HistoryDetailsViewController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "HistoryDetailsViewController.h" +#import "PhoneMainView.h" +#import "FastAddressBook.h" + +@implementation HistoryDetailsViewController + +@synthesize callLog; +@synthesize avatarImage; +@synthesize addressLabel; +@synthesize dateLabel; +@synthesize dateHeaderLabel; +@synthesize durationLabel; +@synthesize durationHeaderLabel; +@synthesize typeLabel; +@synthesize typeHeaderLabel; +@synthesize addressButton; + + +#pragma mark - LifeCycle Functions + +- (void)dealloc { + [avatarImage release]; + [addressLabel release]; + [dateLabel release]; + [dateHeaderLabel release]; + [durationLabel release]; + [durationHeaderLabel release]; + [typeLabel release]; + [typeHeaderLabel release]; + [addressButton release]; + + [super dealloc]; +} + + +#pragma mark - Property Functions + +- (void)setCallLog:(LinphoneCallLog *)acallLog { + self->callLog = acallLog; + [self update]; +} + + +#pragma mark - + +- (void)update { + // Set up the cell... + LinphoneAddress* partyToDisplay; + if (callLog->dir == LinphoneCallIncoming) { + partyToDisplay = callLog->from; + } else { + partyToDisplay = callLog->to; + } +} + + +#pragma mark - Action Functions + +- (IBAction)onBackClick:(id)event { + [[PhoneMainView instance] popView]; +} + +- (IBAction)onContactClick:(id)event { + +} + +- (IBAction)onAddressClick:(id)event { + +} + +@end diff --git a/Classes/HistoryDetailsViewController.xib b/Classes/HistoryDetailsViewController.xib new file mode 100644 index 000000000..206d6c9c4 --- /dev/null +++ b/Classes/HistoryDetailsViewController.xib @@ -0,0 +1,836 @@ + + + + 1296 + 11D50 + 2182 + 1138.32 + 568.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1181 + + + IBUIButton + IBUIImageView + IBUIView + IBUILabel + IBProxyObject + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBCocoaTouchFramework + + + IBFirstResponder + IBCocoaTouchFramework + + + + 274 + + + + 290 + + + + 292 + {160, 58} + + + + _NS:9 + NO + + Add contact + + IBCocoaTouchFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + contact_back_over.png + + + NSImage + contact_back_default.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{160, 0}, {160, 58}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + contact_bar_background.png + + + + {320, 58} + + + + _NS:9 + + 3 + MQA + + 2 + + + IBCocoaTouchFramework + + + + 292 + + + + 292 + {320, 100} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + + + + + + 292 + {{-13, -5}, {131, 107}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + avatar_shadow_small.png + + + + + 292 + {{20, 6}, {65, 65}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + avatar_unknown_small.png + + + + + 292 + {{101, 37}, {199, 43}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Contact1 + + 3 + MC4zMzMzMzMzMzMzAA + + + 0 + 10 + + 1 + 22 + + + Helvetica + 22 + 16 + + + + {{0, 58}, {320, 100}} + + + + _NS:9 + + 3 + MCAwAA + + IBCocoaTouchFramework + + + + 292 + + + + 292 + {49, 21} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Date: + + 0 + 10 + + 2 + 17 + + + Helvetica-Bold + 17 + 16 + + + + + 292 + {{57, 0}, {223, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + 11/11/2011 at 10:01 + + 0 + 10 + + 1 + 17 + + + Helvetica + 17 + 16 + + + + {{20, 166}, {280, 21}} + + + + _NS:9 + + IBCocoaTouchFramework + + + + 292 + + + + 292 + {80, 21} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Duration: + + 0 + 10 + + + + + + 292 + {{88, 0}, {192, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + 9:05 + + 0 + 10 + + + + + {{20, 195}, {280, 21}} + + + + _NS:9 + + IBCocoaTouchFramework + + + + 292 + + + + 292 + {57, 21} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Type: + + 0 + 10 + + + + + + 292 + {{65, 0}, {215, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + outgoing call + + 0 + 10 + + + + + {{20, 224}, {280, 21}} + + + + _NS:9 + + IBCocoaTouchFramework + + + + 292 + {{33, 273}, {255, 50}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + 0102030405 + + + + NSImage + button_background_over.png + + + NSImage + button_background_default.png + + + 2 + 20 + + + Helvetica-Bold + 20 + 16 + + + + {{0, 20}, {320, 460}} + + + + + + IBCocoaTouchFramework + + + + + + + view + + + + 10 + + + + addressButton + + + + 41 + + + + addressLabel + + + + 42 + + + + avatarImage + + + + 43 + + + + dateHeaderLabel + + + + 44 + + + + dateLabel + + + + 45 + + + + durationHeaderLabel + + + + 46 + + + + durationLabel + + + + 47 + + + + typeHeaderLabel + + + + 48 + + + + typeLabel + + + + 49 + + + + onBackClick: + + + 7 + + 11 + + + + onAddressClick: + + + 7 + + 39 + + + + onContactClick: + + + 7 + + 40 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 4 + + + + + + + + + + + + + 6 + + + + + + + navigationBar + + + 8 + + + barBackground + + + 9 + + + backButton + + + 29 + + + + + + + dateView + + + 27 + + + dateHeaderLabel + + + 28 + + + dateLabel + + + 30 + + + + + + + durationView + + + 31 + + + durationHeaderLabel + + + 32 + + + durationLabel + + + 33 + + + + + + + + + headerView + + + 25 + + + addressLabel + + + 23 + + + avatarImage + + + 24 + + + avatarShadowBackground + + + 34 + + + + + + + typeView + + + 35 + + + typeLabel + + + 36 + + + typeHeaderLabel + + + 37 + + + addressButton + + + 38 + + + headerButton + + + + + HistoryDetailsViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 49 + + + + + HistoryDetailsViewController + UIViewController + + id + id + id + + + + onAddressClick: + id + + + onBackClick: + id + + + onContactClick: + id + + + + UIButton + UILabel + UIImageView + UILabel + UILabel + UILabel + UILabel + UILabel + UILabel + + + + addressButton + UIButton + + + addressLabel + UILabel + + + avatarImage + UIImageView + + + dateHeaderLabel + UILabel + + + dateLabel + UILabel + + + durationHeaderLabel + UILabel + + + durationLabel + UILabel + + + typeHeaderLabel + UILabel + + + typeLabel + UILabel + + + + IBProjectSource + ./Classes/HistoryDetailsViewController.h + + + + + 0 + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {262, 214} + {131, 131} + {550, 101} + {550, 101} + {320, 117} + {320, 117} + {5, 117} + + 1181 + + diff --git a/Classes/LinphoneUI/UIChatRoomHeader.h b/Classes/LinphoneUI/UIChatRoomHeader.h index 63bb715ba..2af647bc9 100644 --- a/Classes/LinphoneUI/UIChatRoomHeader.h +++ b/Classes/LinphoneUI/UIChatRoomHeader.h @@ -21,7 +21,7 @@ #import "ChatModel.h" @interface UIChatRoomHeader : UIViewController { - UILabel *contactLabel; + UILabel *addressLabel; UIImageView *avatarImage; NSString *contact; @@ -29,7 +29,7 @@ @property (nonatomic, copy) NSString *contact; -@property (nonatomic, retain) IBOutlet UILabel *contactLabel; +@property (nonatomic, retain) IBOutlet UILabel *addressLabel; @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; + (CGFloat)height; diff --git a/Classes/LinphoneUI/UIChatRoomHeader.m b/Classes/LinphoneUI/UIChatRoomHeader.m index 26059a166..25c4de26e 100644 --- a/Classes/LinphoneUI/UIChatRoomHeader.m +++ b/Classes/LinphoneUI/UIChatRoomHeader.m @@ -22,7 +22,7 @@ @implementation UIChatRoomHeader @synthesize avatarImage; -@synthesize contactLabel; +@synthesize addressLabel; @synthesize contact; @@ -34,7 +34,7 @@ - (void)dealloc { [avatarImage release]; - [contactLabel release]; + [addressLabel release]; [contact release]; [super dealloc]; } @@ -56,7 +56,7 @@ - (void)update { if(contact != nil) { [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; - [contactLabel setText:contact]; + [addressLabel setText:contact]; } } diff --git a/Classes/LinphoneUI/UIChatRoomHeader.xib b/Classes/LinphoneUI/UIChatRoomHeader.xib index c8bdedf3d..7f6464409 100644 --- a/Classes/LinphoneUI/UIChatRoomHeader.xib +++ b/Classes/LinphoneUI/UIChatRoomHeader.xib @@ -2,10 +2,10 @@ 1296 - 11E53 + 11D50 2182 - 1138.47 - 569.00 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -69,9 +69,10 @@ 292 - {{101, 27}, {199, 43}} + {{101, 37}, {199, 43}} + _NS:9 NO YES @@ -129,11 +130,11 @@ - contactLabel + addressLabel - 11 + 12 @@ -181,7 +182,7 @@ 8 - contactLabel + addressLabel @@ -199,7 +200,7 @@ - 11 + 12 @@ -207,18 +208,18 @@ UIChatRoomHeader UIViewController + UILabel UIImageView - UILabel + + addressLabel + UILabel + avatarImage UIImageView - - contactLabel - UILabel - IBProjectSource diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.h b/Classes/LinphoneUI/UIContactDetailsHeader.h index db7f45af8..86e5d69a5 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.h +++ b/Classes/LinphoneUI/UIContactDetailsHeader.h @@ -21,7 +21,7 @@ #import @interface UIContactDetailsHeader : UIViewController { - UILabel *contactLabel; + UILabel *addressLabel; UIImageView *avatarImage; UIView *normalView; UIView *editView; @@ -34,7 +34,7 @@ @property (nonatomic, assign) ABRecordRef contact; -@property (nonatomic, retain) IBOutlet UILabel *contactLabel; +@property (nonatomic, retain) IBOutlet UILabel *addressLabel; @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; @property (nonatomic, retain) IBOutlet UIView *normalView; diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 17354bbb4..99009ef95 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -25,7 +25,7 @@ @implementation UIContactDetailsHeader @synthesize avatarImage; -@synthesize contactLabel; +@synthesize addressLabel; @synthesize contact; @synthesize normalView; @synthesize editView; @@ -45,7 +45,7 @@ - (void)dealloc { [avatarImage release]; - [contactLabel release]; + [addressLabel release]; [normalView release]; [editView release]; [tableView release]; @@ -88,7 +88,7 @@ // Contact label { - [contactLabel setText:[FastAddressBook getContactDisplayName:contact]]; + [addressLabel setText:[FastAddressBook getContactDisplayName:contact]]; } } } diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.xib b/Classes/LinphoneUI/UIContactDetailsHeader.xib index 58ee2556c..bbe9f59c5 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.xib +++ b/Classes/LinphoneUI/UIContactDetailsHeader.xib @@ -58,7 +58,7 @@ {{20, 6}, {65, 65}} - + _NS:9 NO IBCocoaTouchFramework @@ -74,9 +74,10 @@ 292 - {{14, 37}, {199, 43}} + {{0, 37}, {199, 43}} + _NS:9 NO YES @@ -102,7 +103,7 @@ - {{93, 0}, {227, 80}} + {{101, 0}, {219, 80}} @@ -120,10 +121,9 @@ 274 - {227, 130} + {219, 130} - _NS:9 10 @@ -193,7 +193,7 @@ AAgACAAIAAEAAQABAAE 10 - {{93, 0}, {227, 130}} + {{101, 0}, {219, 130}} @@ -229,14 +229,6 @@ AAgACAAIAAEAAQABAAE 9 - - - contactLabel - - - - 11 - editView @@ -261,6 +253,14 @@ AAgACAAIAAEAAQABAAE 20 + + + addressLabel + + + + 21 + dataSource @@ -342,7 +342,7 @@ AAgACAAIAAEAAQABAAE 8 - contactLabel + addressLabel 15 @@ -368,7 +368,7 @@ AAgACAAIAAEAAQABAAE - 20 + 21 @@ -376,6 +376,7 @@ AAgACAAIAAEAAQABAAE UIContactDetailsHeader UIViewController + UILabel UIImageView UILabel UIView @@ -383,6 +384,10 @@ AAgACAAIAAEAAQABAAE UITableView + + addressLabel + UILabel + avatarImage UIImageView diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index dc970feb8..60dd6691d 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -153,6 +153,10 @@ 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; }; 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; }; 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; }; + C90FAA7915AF54E6002091CB /* HistoryDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C90FAA7715AF54E6002091CB /* HistoryDetailsViewController.m */; }; + C90FAA7A15AF54E6002091CB /* HistoryDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C90FAA7715AF54E6002091CB /* HistoryDetailsViewController.m */; }; + C90FAA7B15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */; }; + C90FAA7C15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */; }; C9C8254315AE204D00D493FA /* options_add_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8253F15AE204D00D493FA /* options_add_disabled.png */; }; C9C8254415AE204D00D493FA /* options_add_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8253F15AE204D00D493FA /* options_add_disabled.png */; }; C9C8254515AE204D00D493FA /* options_transfer_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254015AE204D00D493FA /* options_transfer_disabled.png */; }; @@ -1053,6 +1057,9 @@ 70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; 70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; 8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + C90FAA7615AF54E6002091CB /* HistoryDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryDetailsViewController.h; sourceTree = ""; }; + C90FAA7715AF54E6002091CB /* HistoryDetailsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryDetailsViewController.m; sourceTree = ""; }; + C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryDetailsViewController.xib; sourceTree = ""; }; C9C8253F15AE204D00D493FA /* options_add_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_disabled.png; path = Resources/options_add_disabled.png; sourceTree = ""; }; C9C8254015AE204D00D493FA /* options_transfer_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_disabled.png; path = Resources/options_transfer_disabled.png; sourceTree = ""; }; C9C8254115AE204D00D493FA /* transfer_call_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_call_default.png; path = Resources/transfer_call_default.png; sourceTree = ""; }; @@ -1553,6 +1560,9 @@ 2218A92212FBE1340088A667 /* FirstLoginViewController.h */, 2218A92312FBE1340088A667 /* FirstLoginViewController.m */, 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */, + C90FAA7615AF54E6002091CB /* HistoryDetailsViewController.h */, + C90FAA7715AF54E6002091CB /* HistoryDetailsViewController.m */, + C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */, D3ED3EA41587334B006C0DE4 /* HistoryTableViewController.h */, D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */, D3ED3EB515873928006C0DE4 /* HistoryViewController.h */, @@ -2732,6 +2742,7 @@ C9C8254915AE204D00D493FA /* transfer_call_over.png in Resources */, C9C8254C15AE207B00D493FA /* options_selected.png in Resources */, C9C8254F15AE256100D493FA /* transfer_call_disabled.png in Resources */, + C90FAA7B15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2971,6 +2982,7 @@ C9C8254A15AE204D00D493FA /* transfer_call_over.png in Resources */, C9C8254D15AE207B00D493FA /* options_selected.png in Resources */, C9C8255015AE256100D493FA /* transfer_call_disabled.png in Resources */, + C90FAA7C15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3060,6 +3072,7 @@ D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, D378907515AC448A00BD776C /* UIView+ModalStack.m in Sources */, D3E8F68615ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, + C90FAA7915AF54E6002091CB /* HistoryDetailsViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3146,6 +3159,7 @@ D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, D378907615AC448A00BD776C /* UIView+ModalStack.m in Sources */, D3E8F68715ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, + C90FAA7A15AF54E6002091CB /* HistoryDetailsViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From fa7362af5576c32ffa0cd979ad6baa9467524213 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 12 Jul 2012 22:49:14 +0200 Subject: [PATCH 040/397] Fix add contact and add address to (new) contact --- Classes/ContactDetailsTableViewController.h | 2 +- Classes/ContactDetailsTableViewController.m | 22 ++-- Classes/ContactDetailsViewController.h | 2 + Classes/ContactDetailsViewController.m | 51 ++++++++- Classes/ContactsTableViewController.h | 2 + Classes/ContactsTableViewController.m | 121 ++++++++------------ Classes/ContactsViewController.h | 7 +- Classes/ContactsViewController.m | 54 ++++++++- Classes/ContactsViewController.xib | 90 ++++++++++++++- Classes/DialerViewController.m | 4 +- Classes/SettingsViewController.m | 2 - 11 files changed, 248 insertions(+), 109 deletions(-) diff --git a/Classes/ContactDetailsTableViewController.h b/Classes/ContactDetailsTableViewController.h index 0a4ca9519..7ec5903b4 100644 --- a/Classes/ContactDetailsTableViewController.h +++ b/Classes/ContactDetailsTableViewController.h @@ -42,8 +42,8 @@ @property (nonatomic, assign) ABRecordID contactID; - (void)newContact; -- (void)newContact:(NSString*)address; - (void)removeContact; +- (void)addSipField:(NSString*)address; - (void)loadData; - (void)saveData; diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 8f65d82f9..40f5c3f09 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -277,6 +277,10 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } - (void)addEntry:(UITableView*)tableview section:(NSInteger)section animated:(BOOL)animated { + [self addEntry:tableview section:section animated:animated value:@""]; +} + +- (void)addEntry:(UITableView*)tableview section:(NSInteger)section animated:(BOOL)animated value:(NSString *)value{ NSMutableArray *sectionArray = [dataCache objectAtIndex:section]; NSUInteger count = [sectionArray count]; if(section == 0) { @@ -307,7 +311,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf lMap = ABMultiValueCreateMutable(kABDictionaryPropertyType); } CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; - CFTypeRef values[] = { @"", CONTACT_SIP_FIELD }; + CFTypeRef values[] = { [value copy], CONTACT_SIP_FIELD }; CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); ABMultiValueAddValueAndLabel(lMap, lDict, (CFStringRef)[labelArray objectAtIndex:0], &identifier); CFRelease(lDict); @@ -395,20 +399,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf [self loadData]; } -- (void)newContact:(NSString*)address { - contact = ABPersonCreate(); - ABMultiValueRef lMap = ABMultiValueCreateMutable(kABDictionaryPropertyType); - CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; - CFTypeRef values[] = { [address copy], CONTACT_SIP_FIELD }; - CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); - ABMultiValueAddValueAndLabel(lMap, lDict, (CFStringRef)[labelArray objectAtIndex:0], NULL); - CFRelease(lDict); - - ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); - CFRelease(lMap); - - self->contactID = kABRecordInvalidID; - [self loadData]; +- (void)addSipField:(NSString*)address { + [self addEntry:[self tableView] section:1 animated:FALSE value:address]; } diff --git a/Classes/ContactDetailsViewController.h b/Classes/ContactDetailsViewController.h index 0628ffe9e..853bf28a3 100644 --- a/Classes/ContactDetailsViewController.h +++ b/Classes/ContactDetailsViewController.h @@ -39,5 +39,7 @@ - (void)newContact; - (void)newContact:(NSString*)address; +- (void)editContact:(ABRecordRef)contact; +- (void)editContact:(ABRecordRef)contact address:(NSString*)address; @end diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 289d3ea67..280fdd6d1 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -51,12 +51,27 @@ } - (void)newContact:(NSString*)address { - [tableController newContact:address]; + [tableController newContact]; + [tableController addSipField:address]; [tableController setEditing:TRUE animated:FALSE]; [[tableController tableView] reloadData]; [editButton setOn]; } +- (void)editContact:(ABRecordRef)acontact { + [self setContact:acontact]; + [tableController setEditing:TRUE animated:FALSE]; + [[tableController tableView] reloadData]; + [editButton setOn]; +} + +- (void)editContact:(ABRecordRef)acontact address:(NSString*)address { + [self setContact:acontact]; + [tableController addSipField:address]; + [tableController setEditing:TRUE animated:FALSE]; + [[tableController tableView] reloadData]; + [editButton setOn]; +} #pragma mark - Property Functions @@ -89,13 +104,37 @@ forControlEvents:UIControlEventTouchUpInside]; } -- (void)viewWillAppear:(BOOL)animated { - if([tableController isEditing]) { - [tableController resetData]; - [tableController setEditing:FALSE animated:FALSE]; +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewWillDisappear:NO]; } + if([tableController isEditing]) { + [tableController setEditing:FALSE animated:FALSE]; + [tableController resetData]; + [editButton setOff]; + } +} + +- (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [editButton setOff]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewWillAppear:NO]; + } +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewDidAppear:NO]; + } +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewDidDisappear:NO]; + } } #pragma mark - UICompositeViewDelegate Functions diff --git a/Classes/ContactsTableViewController.h b/Classes/ContactsTableViewController.h index 7ae506cb8..5ab544424 100644 --- a/Classes/ContactsTableViewController.h +++ b/Classes/ContactsTableViewController.h @@ -27,8 +27,10 @@ ABAddressBookRef addressBook; BOOL sipFilter; + NSString *tempAddress; } +@property (nonatomic, retain) NSString* tempAddress; @property (nonatomic, assign) BOOL sipFilter; @end diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index a1b564d9f..b422153f6 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -25,6 +25,7 @@ @implementation ContactsTableViewController @synthesize sipFilter; +@synthesize tempAddress; #pragma mark - Lifecycle Functions @@ -56,6 +57,7 @@ ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, self); CFRelease(addressBook); [addressBookMap removeAllObjects]; + [tempAddress release]; [super dealloc]; } @@ -70,27 +72,6 @@ #pragma mark - -static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { - ContactsTableViewController* controller = (ContactsTableViewController*)context; - ABAddressBookRevert(addressBook); - [(UITableView *)controller.view reloadData]; -} - - -#pragma mark - ViewController Functions - -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [self reloadData]; -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; -} - - -#pragma mark - UITableViewDataSource Functions - - (void)reloadData { NSLog(@"Load contact list"); @synchronized (addressBookMap) { @@ -157,73 +138,69 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf [self.tableView reloadData]; } +static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { + ContactsTableViewController* controller = (ContactsTableViewController*)context; + ABAddressBookRevert(addressBook); + [controller reloadData]; +} + + +#pragma mark - ViewController Functions + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + [self setTempAddress:nil]; +} + + +#pragma mark - UITableViewDataSource Functions + - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return [addressBookMap count] + 1; + return [addressBookMap count]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if(section == 0) { - return 1; - } else { - return [(OrderedDictionary *)[addressBookMap objectForKey: [addressBookMap keyAtIndex: section - 1]] count]; - } + return [(OrderedDictionary *)[addressBookMap objectForKey: [addressBookMap keyAtIndex: section]] count]; + } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - static NSString *kCellId = @"UIContactCell"; - static NSString *kNewContactCellId = @"NewContactCell"; - - if([indexPath section] != 0) { - UIContactCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; - if (cell == nil) { - cell = [[[UIContactCell alloc] initWithIdentifier:kCellId] autorelease]; - } - OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section] - 1]]; - - NSString *key = [[subDic allKeys] objectAtIndex:[indexPath row]]; - ABRecordRef contact = [subDic objectForKey:key]; - [cell setContact: contact]; - return cell; - } else { - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kNewContactCellId]; - if (cell == nil) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kNewContactCellId] autorelease]; - //TODO - /* - [cell setSelectedBackgroundView:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"list_highlight.png"]]autorelease]];*/ - } - [cell.textLabel setText:@"Add new contact"]; - return cell; + static NSString *kCellId = @"UIContactCell"; + UIContactCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; + if (cell == nil) { + cell = [[[UIContactCell alloc] initWithIdentifier:kCellId] autorelease]; } + OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; + + NSString *key = [[subDic allKeys] objectAtIndex:[indexPath row]]; + ABRecordRef contact = [subDic objectForKey:key]; + [cell setContact: contact]; + return cell; } - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - if (section == 0) { - return @""; - } else { - return [addressBookMap keyAtIndex: section - 1]; - } + return [addressBookMap keyAtIndex: section]; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - if([indexPath section] == 0) { - // Go to Contact details view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: nil] autorelease] - , @"newContact", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; + OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; + ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]]; + + // Go to Contact details view + NSDictionary * dict; + if(tempAddress == nil) { + dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: lPerson, nil] autorelease] + , @"setContact:", + nil] autorelease]; } else { - OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section] - 1]]; - ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]]; - - // Go to Contact details view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: lPerson, nil] autorelease] - , @"setContact:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; + dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: lPerson, tempAddress, nil] autorelease] + , @"editContact:address:", + nil] autorelease]; + [self setTempAddress:nil]; } + [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; } @end diff --git a/Classes/ContactsViewController.h b/Classes/ContactsViewController.h index f713dd8b7..3c7a81d01 100644 --- a/Classes/ContactsViewController.h +++ b/Classes/ContactsViewController.h @@ -36,7 +36,10 @@ @property (nonatomic, retain) IBOutlet UIButton* allButton; @property (nonatomic, retain) IBOutlet UIButton* linphoneButton; -- (IBAction)onAllClick:(id) event; -- (IBAction)onLinphoneClick:(id) event; +- (IBAction)onAllClick:(id)event; +- (IBAction)onLinphoneClick:(id)event; +- (IBAction)onAddContactClick:(id)event; + +- (void)setAddress:(NSString*)address; @end diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index add579a53..17f8b6efb 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -18,6 +18,7 @@ */ #import "ContactsViewController.h" +#import "PhoneMainView.h" #import "AddressBook/ABPerson.h" @@ -69,9 +70,34 @@ typedef enum _HistoryView { #pragma mark - ViewController Functions +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewWillDisappear:NO]; + } +} + - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [self changeView:History_All]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewWillAppear:NO]; + } + + [self changeView:History_All]; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewDidAppear:NO]; + } +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewDidDisappear:NO]; + } } - (void)viewDidLoad { @@ -90,6 +116,10 @@ typedef enum _HistoryView { #pragma mark - +- (void)setAddress:(NSString*)address { + [tableController setTempAddress:address]; +} + - (void)changeView: (HistoryView) view { if(view == History_All) { @@ -110,12 +140,30 @@ typedef enum _HistoryView { #pragma mark - Action Functions -- (IBAction)onAllClick: (id) event { +- (IBAction)onAllClick:(id)event { [self changeView: History_All]; } -- (IBAction)onLinphoneClick: (id) event { +- (IBAction)onLinphoneClick:(id)event { [self changeView: History_Linphone]; } +- (IBAction)onAddContactClick:(id)event { + // Go to Contact details view + NSDictionary * dict; + if([tableController tempAddress] == nil) { + dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: nil] autorelease] + , @"newContact", + nil] autorelease]; + } else { + dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: [tableController tempAddress], nil] autorelease] + , @"newContact:", + nil] autorelease]; + [tableController setTempAddress:nil]; + } + [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; +} + @end diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index abc6f1e2e..cd8f7e34e 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -2,10 +2,10 @@ 1296 - 11E53 + 11D50 2182 - 1138.47 - 569.00 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -46,6 +46,7 @@ 292 {106, 58} + _NS:9 NO @@ -84,6 +85,7 @@ 292 {{106, 0}, {106, 58}} + _NS:9 NO @@ -112,6 +114,7 @@ 292 {{212, 0}, {108, 58}} + _NS:9 NO @@ -137,6 +140,7 @@ {320, 58} + _NS:9 @@ -153,6 +157,8 @@ 274 {{0, 58}, {320, 402}} + + _NS:10 1 @@ -179,6 +185,7 @@ {320, 460} + _NS:9 @@ -259,6 +266,15 @@ 47 + + + onAddContactClick: + + + 7 + + 86 + dataSource @@ -321,7 +337,7 @@ - header + toolBar 4 @@ -377,9 +393,71 @@ - 84 + 86 + + + + + ContactsTableViewController + UITableViewController + + IBProjectSource + ./Classes/ContactsTableViewController.h + + + + ContactsViewController + UIViewController + + id + id + id + + + + onAddContactClick: + id + + + onAllClick: + id + + + onLinphoneClick: + id + + + + UIButton + UIButton + ContactsTableViewController + UITableView + + + + allButton + UIButton + + + linphoneButton + UIButton + + + tableController + ContactsTableViewController + + + tableView + UITableView + + + + IBProjectSource + ./Classes/ContactsViewController.h + + + - 0 IBCocoaTouchFramework diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 1fc186f4e..dd5370a0a 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -217,9 +217,9 @@ // Go to Contact details view NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: [[[NSArray alloc] initWithObjects:[addressField text], nil] autorelease] - , @"newContact:", + , @"setAddress:", nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; + [[PhoneMainView instance] changeView:PhoneView_Contacts dict:dict push:TRUE]; } - (IBAction)onBackClick: (id) event { diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 8062de0a5..7480c0708 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -73,8 +73,6 @@ [self.view addSubview: navigationController.view]; } - - - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { From ae4df954ca0b8f6c21d1884eded317b61e9bf47d Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 13 Jul 2012 10:53:46 +0200 Subject: [PATCH 041/397] Update images Add miss call notifications Add gradient background for UITableCell --- Classes/CallDelegate.h | 3 +- Classes/ChatRoomTableViewController.m | 9 + Classes/ChatRoomViewController.m | 51 ---- Classes/ChatRoomViewController.xib | 73 ++++- Classes/ChatTableViewController.m | 8 + Classes/ContactDetailsLabelViewController.m | 10 +- Classes/ContactDetailsLabelViewController.xib | 7 +- Classes/ContactDetailsTableViewController.m | 23 +- Classes/ContactDetailsViewController.h | 5 + Classes/ContactDetailsViewController.m | 81 ++++-- Classes/ContactDetailsViewController.xib | 102 ++++++- Classes/ContactsTableViewController.m | 6 + Classes/HistoryTableViewController.m | 6 + Classes/InCallViewController.m | 86 ------ Classes/LinphoneUI/UICallBar.h | 6 +- Classes/LinphoneUI/UICallBar.m | 12 +- Classes/LinphoneUI/UICallBar.xib | 20 +- Classes/LinphoneUI/UIChatCell.xib | 121 ++++---- Classes/LinphoneUI/UIContactCell.m | 15 + Classes/LinphoneUI/UIContactCell.xib | 103 +++---- Classes/LinphoneUI/UIHistoryCell.xib | 61 +--- Classes/LinphoneUI/UILinphone.h | 25 ++ Classes/LinphoneUI/UIMainBar.h | 6 + Classes/LinphoneUI/UIMainBar.m | 82 +++++- Classes/LinphoneUI/UIMainBar.xib | 129 ++++++++- .../TPKeyboardAvoidingScrollView.h | 17 ++ .../TPKeyboardAvoidingScrollView.m | 186 ++++++++++++ .../TPKeyboardAvoidingTableView.h | 16 + .../TPKeyboardAvoidingTableView.m | 173 +++++++++++ .../UACellBackgroundView.h | 30 ++ .../UACellBackgroundView.m | 274 ++++++++++++++++++ Resources/add_call_default.png | Bin 3587 -> 3572 bytes Resources/add_call_disabled.png | Bin 3465 -> 3509 bytes Resources/add_call_over.png | Bin 3554 -> 3575 bytes Resources/button_alert_background_default.png | Bin 1570 -> 3853 bytes Resources/button_alert_background_over.png | Bin 1723 -> 3479 bytes Resources/cancel_default.png | Bin 0 -> 4152 bytes Resources/cancel_over.png | Bin 0 -> 4384 bytes Resources/contact_cancel_default.png | Bin 0 -> 6587 bytes Resources/contact_cancel_over.png | Bin 0 -> 4527 bytes Resources/contacts_add_default.png | Bin 5978 -> 5917 bytes Resources/contacts_add_over.png | Bin 5238 -> 5387 bytes Resources/dialer_alt_back_default.png | Bin 0 -> 5674 bytes Resources/dialer_alt_back_over.png | Bin 0 -> 4158 bytes Resources/dialer_alt_background.png | Bin 0 -> 3373 bytes Resources/history_notification.png | Bin 0 -> 3856 bytes Resources/list_highlight.png | Bin 36632 -> 0 bytes Resources/micro_on_defauly.png | Bin 5999 -> 0 bytes Resources/transfer_call_default.png | Bin 7522 -> 5399 bytes Resources/transfer_call_disabled.png | Bin 6262 -> 5245 bytes Resources/transfer_call_over.png | Bin 4558 -> 5390 bytes linphone.xcodeproj/project.pbxproj | 98 ++++++- 52 files changed, 1446 insertions(+), 398 deletions(-) create mode 100644 Classes/LinphoneUI/UILinphone.h create mode 100755 Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h create mode 100755 Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m create mode 100755 Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h create mode 100755 Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m create mode 100644 Classes/Utils/UACellBackgroundView/UACellBackgroundView.h create mode 100644 Classes/Utils/UACellBackgroundView/UACellBackgroundView.m create mode 100644 Resources/cancel_default.png create mode 100644 Resources/cancel_over.png create mode 100644 Resources/contact_cancel_default.png create mode 100644 Resources/contact_cancel_over.png create mode 100644 Resources/dialer_alt_back_default.png create mode 100644 Resources/dialer_alt_back_over.png create mode 100644 Resources/dialer_alt_background.png create mode 100644 Resources/history_notification.png delete mode 100644 Resources/list_highlight.png delete mode 100644 Resources/micro_on_defauly.png diff --git a/Classes/CallDelegate.h b/Classes/CallDelegate.h index 216149417..df2bf75e0 100644 --- a/Classes/CallDelegate.h +++ b/Classes/CallDelegate.h @@ -24,8 +24,7 @@ enum CallDelegateType { CD_UNDEFINED = 0, CD_ZRTP, CD_VIDEO_UPDATE, - CD_STOP_VIDEO_ON_LOW_BATTERY, - CD_TRANSFER_CALL + CD_STOP_VIDEO_ON_LOW_BATTERY }; @protocol CallActionSheetDelegate diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index 735dec194..3dd075073 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -25,6 +25,15 @@ @synthesize remoteContact; + +#pragma mark - ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 +} + + #pragma mark - - (void)reloadData { diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index fbfa3bedb..4d34bbc4e 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -73,14 +73,6 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(keyboardWillShow:) - name:UIKeyboardWillShowNotification - object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(keyboardWillHide:) - name:UIKeyboardWillHideNotification - object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textReceivedEvent:) name:@"LinphoneTextReceived" @@ -93,13 +85,6 @@ - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - [[NSNotificationCenter defaultCenter] removeObserver:self - name:UIKeyboardWillShowNotification - object:nil]; - [[NSNotificationCenter defaultCenter] removeObserver:self - name:UIKeyboardWillHideNotification - object:nil]; - [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LinphoneTextReceived" object:nil]; @@ -131,42 +116,6 @@ } -#pragma mark - Keyboard Event Functions - -- (void)keyboardWillHide:(NSNotification *)notif { - //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; - UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; - NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - [UIView beginAnimations:@"resize" context:nil]; - [UIView setAnimationDuration:duration]; - [UIView setAnimationCurve:curve]; - [UIView setAnimationBeginsFromCurrentState:TRUE]; - CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; - CGRect frame = [[self view] frame]; - CGPoint pos = {0, 0}; - CGPoint gPos = [[self view] convertPoint:pos toView:nil]; - frame.size.height = endFrame.origin.y - gPos.y; - [[self view] setFrame:frame]; - [UIView commitAnimations]; -} - -- (void)keyboardWillShow:(NSNotification *)notif { - //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; - UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; - NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; - [UIView beginAnimations:@"resize" context:nil]; - [UIView setAnimationDuration:duration]; - [UIView setAnimationCurve:curve]; - [UIView setAnimationBeginsFromCurrentState:TRUE]; - CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; - CGRect frame = [[self view] frame]; - CGPoint pos = {0, 0}; - CGPoint gPos = [[self view] convertPoint:pos toView:nil]; - frame.size.height = endFrame.origin.y - gPos.y; - [[self view] setFrame:frame]; - [UIView commitAnimations]; -} - #pragma mark - UITextFieldDelegate Functions - (BOOL)textFieldShouldReturn:(UITextField *)textField { diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib index f4708c7a5..0d2dede5d 100644 --- a/Classes/ChatRoomViewController.xib +++ b/Classes/ChatRoomViewController.xib @@ -136,9 +136,64 @@ _NS:9 - - 3 - MCAwAA + + 10 + + 549453824 + {512, 1} + + + + + + TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI +AAgACAAIAAEAAQABAAE + + + + + + 3 + MCAwAA + + + groupTableViewBackgroundColor YES IBCocoaTouchFramework @@ -161,6 +216,7 @@ {{250, 0}, {70, 59}} + _NS:9 NO @@ -254,7 +310,7 @@ {320, 460} - + _NS:9 IBCocoaTouchFramework @@ -493,6 +549,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + TPKeyboardAvoidingTableView com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -569,6 +626,14 @@ ./Classes/ChatRoomViewController.h + + TPKeyboardAvoidingTableView + UITableView + + IBProjectSource + ./Classes/TPKeyboardAvoidingTableView.h + + UIToggleButton UIButton diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index ba4d6c934..1bdd7e8a3 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -22,6 +22,8 @@ #import "linphonecore.h" #import "PhoneMainView.h" +#import "UACellBackgroundView.h" +#import "UILinphone.h" @implementation ChatTableViewController @@ -59,6 +61,12 @@ UIChatCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { cell = [[[UIChatCell alloc] initWithIdentifier:kCellId] autorelease]; + + + // Background View + UACellBackgroundView *selectedBackgroundView = [[[UACellBackgroundView alloc] initWithFrame:CGRectZero] autorelease]; + cell.selectedBackgroundView = selectedBackgroundView; + [selectedBackgroundView setBackgroundColor:LINPHONE_TABLE_CELL_BACKGROUND_COLOR]; } [cell setChat:[data objectAtIndex:[indexPath row]]]; diff --git a/Classes/ContactDetailsLabelViewController.m b/Classes/ContactDetailsLabelViewController.m index a2e9a3e40..81cb0ec1c 100644 --- a/Classes/ContactDetailsLabelViewController.m +++ b/Classes/ContactDetailsLabelViewController.m @@ -19,6 +19,9 @@ #import "ContactDetailsLabelViewController.h" +#import "UACellBackgroundView.h" +#import "UILinphone.h" + @implementation ContactDetailsLabelViewController @synthesize dataList; @@ -68,8 +71,11 @@ UITableViewCell *cell = [atableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:kCellId] autorelease]; - //TODO - /*[cell setSelectedBackgroundView:[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"list_highlight.png"]]autorelease]];*/ + + // Background View + UACellBackgroundView *selectedBackgroundView = [[[UACellBackgroundView alloc] initWithFrame:CGRectZero] autorelease]; + cell.selectedBackgroundView = selectedBackgroundView; + [selectedBackgroundView setBackgroundColor:LINPHONE_TABLE_CELL_BACKGROUND_COLOR]; } NSString* key = [[dataList allKeys] objectAtIndex:[indexPath row]]; [cell.textLabel setText:[dataList objectForKey:key]]; diff --git a/Classes/ContactDetailsLabelViewController.xib b/Classes/ContactDetailsLabelViewController.xib index 443013919..c3e832ab4 100644 --- a/Classes/ContactDetailsLabelViewController.xib +++ b/Classes/ContactDetailsLabelViewController.xib @@ -2,10 +2,10 @@ 1296 - 11D50 + 11E53 2182 - 1138.32 - 568.00 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -200,6 +200,7 @@ AAgACAAIAAEAAQABAAE 0.0 0.0 YES + NO 1 2 0 diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 40f5c3f09..8efb57129 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -21,6 +21,8 @@ #import "PhoneMainView.h" #import "UIEditableTableViewCell.h" #import "UIView+ModalStack.h" +#import "UACellBackgroundView.h" +#import "UILinphone.h" @interface Entry : NSObject @@ -104,6 +106,11 @@ #pragma mark - ViewController Functions +- (void)viewDidLoad { + [super viewDidLoad]; + [self.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 +} + - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self loadData]; @@ -128,7 +135,8 @@ contact = nil; } -#pragma mark - + +#pragma mark - + (BOOL)findAndResignFirstResponder:(UIView*)view { if (view.isFirstResponder) { @@ -419,6 +427,14 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf UIEditableTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { cell = [[[UIEditableTableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:kCellId] autorelease]; + [cell.detailTextField setDelegate:self]; + [cell.detailTextField setAutocapitalizationType:UITextAutocapitalizationTypeNone]; + [cell.detailTextField setAutocorrectionType:UITextAutocorrectionTypeNo]; + + // Background View + UACellBackgroundView *selectedBackgroundView = [[[UACellBackgroundView alloc] initWithFrame:CGRectZero] autorelease]; + cell.selectedBackgroundView = selectedBackgroundView; + [selectedBackgroundView setBackgroundColor:LINPHONE_TABLE_CELL_BACKGROUND_COLOR]; } NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; @@ -449,16 +465,15 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf CFRelease(lDict); CFRelease(lMap); } - + [cell.textLabel setText:label]; [cell.detailTextLabel setText:value]; [cell.detailTextField setText:value]; - [cell.detailTextField setDelegate:self]; if ([indexPath section] == 0) { [cell.detailTextField setKeyboardType:UIKeyboardTypePhonePad]; [cell.detailTextField setPlaceholder:@"Phone number"]; } else { - [cell.detailTextField setKeyboardType:UIKeyboardTypeEmailAddress]; + [cell.detailTextField setKeyboardType:UIKeyboardTypeASCIICapable]; [cell.detailTextField setPlaceholder:@"SIP address"]; } diff --git a/Classes/ContactDetailsViewController.h b/Classes/ContactDetailsViewController.h index 853bf28a3..5f4a8e454 100644 --- a/Classes/ContactDetailsViewController.h +++ b/Classes/ContactDetailsViewController.h @@ -28,13 +28,18 @@ ContactDetailsTableViewController *tableController; ABRecordRef contact; UIToggleButton *editButton; + UIButton *backButton; + UIButton *cancelButton; } @property (nonatomic, assign) ABRecordRef contact; @property (nonatomic, retain) IBOutlet ContactDetailsTableViewController *tableController; @property (nonatomic, retain) IBOutlet UIToggleButton *editButton; +@property (nonatomic, retain) IBOutlet UIButton *backButton; +@property (nonatomic, retain) IBOutlet UIButton *cancelButton; - (IBAction)onBackClick:(id)event; +- (IBAction)onCancelClick:(id)event; - (IBAction)onEditClick:(id)event; - (void)newContact; diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 280fdd6d1..f00b1c3dc 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -25,6 +25,8 @@ @synthesize tableController; @synthesize contact; @synthesize editButton; +@synthesize backButton; +@synthesize cancelButton; #pragma mark - Lifecycle Functions @@ -35,8 +37,13 @@ } - (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; [tableController release]; + [editButton release]; + [backButton release]; + [cancelButton release]; + [super dealloc]; } @@ -45,32 +52,28 @@ - (void)newContact { [tableController newContact]; - [tableController setEditing:TRUE animated:FALSE]; + [self enableEdit:FALSE]; [[tableController tableView] reloadData]; - [editButton setOn]; } - (void)newContact:(NSString*)address { [tableController newContact]; [tableController addSipField:address]; - [tableController setEditing:TRUE animated:FALSE]; + [self enableEdit:FALSE]; [[tableController tableView] reloadData]; - [editButton setOn]; } - (void)editContact:(ABRecordRef)acontact { [self setContact:acontact]; - [tableController setEditing:TRUE animated:FALSE]; + [self enableEdit:FALSE]; [[tableController tableView] reloadData]; - [editButton setOn]; } - (void)editContact:(ABRecordRef)acontact address:(NSString*)address { [self setContact:acontact]; [tableController addSipField:address]; - [tableController setEditing:TRUE animated:FALSE]; + [self enableEdit:FALSE]; [[tableController tableView] reloadData]; - [editButton setOn]; } #pragma mark - Property Functions @@ -78,6 +81,7 @@ - (void)setContact:(ABRecordRef)acontact { self->contact = acontact; [tableController setContactID:ABRecordGetRecordID(acontact)]; + [self disableEdit:FALSE]; } @@ -94,7 +98,6 @@ [tableController->footerController->removeButton addTarget:self action:@selector(onRemove:) forControlEvents:UIControlEventTouchUpInside]; - [[tableController tableView] setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 } - (void)viewDidUnload { @@ -109,11 +112,8 @@ if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [tableController viewWillDisappear:NO]; } - if([tableController isEditing]) { - [tableController setEditing:FALSE animated:FALSE]; - [tableController resetData]; - [editButton setOff]; - } + [self disableEdit:FALSE]; + [tableController resetData]; } - (void)viewWillAppear:(BOOL)animated { @@ -137,6 +137,7 @@ } } + #pragma mark - UICompositeViewDelegate Functions + (UICompositeViewDescription*) compositeViewDescription { @@ -151,34 +152,54 @@ } +- (void)enableEdit:(BOOL)animated { + if(![tableController isEditing]) { + if(animated) + [[tableController tableView] beginUpdates]; + [tableController setEditing:TRUE animated:animated]; + if(animated) + [[tableController tableView] endUpdates]; + } + [editButton setOn]; + [cancelButton setHidden:FALSE]; + [backButton setHidden:TRUE]; +} + +- (void)disableEdit:(BOOL)animated { + if([tableController isEditing]) { + [tableController setEditing:FALSE animated:animated]; + } + [editButton setOff]; + [cancelButton setHidden:TRUE]; + [backButton setHidden:FALSE]; +} + #pragma mark - Action Functions -- (IBAction)onBackClick:(id)event { - if([tableController isEditing]) { - [tableController setEditing:FALSE animated:FALSE]; - [tableController resetData]; - [editButton setOff]; - if([tableController contactID] == kABRecordInvalidID) { - [[PhoneMainView instance] popView]; - } - } else { +- (IBAction)onCancelClick:(id)event { + [self disableEdit:FALSE]; + [tableController resetData]; + if([tableController contactID] == kABRecordInvalidID) { [[PhoneMainView instance] popView]; } } +- (IBAction)onBackClick:(id)event { + [[PhoneMainView instance] popView]; +} + - (IBAction)onEditClick:(id)event { - [[tableController tableView] beginUpdates]; - [tableController setEditing:![tableController isEditing] animated:TRUE]; - [[tableController tableView] endUpdates]; - if(![tableController isEditing]) { + if([tableController isEditing]) { + [self disableEdit:TRUE]; [tableController saveData]; + } else { + [self enableEdit:TRUE]; } } -- (IBAction)onRemove:(id)event { - [tableController setEditing:FALSE animated:FALSE]; +- (void)onRemove:(id)event { + [self disableEdit:FALSE]; [tableController removeContact]; - [editButton setOff]; [[PhoneMainView instance] popView]; } diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib index 192b39e41..aa51f1437 100644 --- a/Classes/ContactDetailsViewController.xib +++ b/Classes/ContactDetailsViewController.xib @@ -2,10 +2,10 @@ 1296 - 11D50 + 11E53 2182 - 1138.32 - 568.00 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -47,7 +47,7 @@ {160, 58} - + _NS:9 NO @@ -79,6 +79,34 @@ 16 + + + -2147483356 + {160, 58} + + + + _NS:9 + NO + + Add contact + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + contact_cancel_over.png + + + NSImage + contact_cancel_default.png + + + + 292 @@ -132,6 +160,7 @@ {{0, 59}, {320, 401}} + _NS:9 10 @@ -212,6 +241,7 @@ AAgACAAIAAEAAQABAAE {{0, 20}, {320, 460}} + IBCocoaTouchFramework @@ -252,6 +282,22 @@ AAgACAAIAAEAAQABAAE 31 + + + backButton + + + + 50 + + + + cancelButton + + + + 51 + onEditClick: @@ -294,6 +340,15 @@ AAgACAAIAAEAAQABAAE 26 + + + onCancelClick: + + + 7 + + 49 + @@ -329,9 +384,10 @@ AAgACAAIAAEAAQABAAE + - header + toolBar 8 @@ -358,6 +414,12 @@ AAgACAAIAAEAAQABAAE tableController + + 47 + + + cancelButton + @@ -366,10 +428,13 @@ AAgACAAIAAEAAQABAAE UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + TPKeyboardAvoidingTableView com.apple.InterfaceBuilder.IBCocoaTouchPlugin ContactDetailsTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -380,7 +445,7 @@ AAgACAAIAAEAAQABAAE - 46 + 51 @@ -397,6 +462,7 @@ AAgACAAIAAEAAQABAAE UIViewController id + id id @@ -404,16 +470,30 @@ AAgACAAIAAEAAQABAAE onBackClick: id + + onCancelClick: + id + onEditClick: id + UIButton + UIButton UIToggleButton ContactDetailsTableViewController + + backButton + UIButton + + + cancelButton + UIButton + editButton UIToggleButton @@ -428,6 +508,14 @@ AAgACAAIAAEAAQABAAE ./Classes/ContactDetailsViewController.h + + TPKeyboardAvoidingTableView + UITableView + + IBProjectSource + ./Classes/TPKeyboardAvoidingTableView.h + + UIToggleButton UIButton @@ -449,6 +537,8 @@ AAgACAAIAAEAAQABAAE {320, 117} {320, 117} + {320, 117} + {320, 117} {320, 117} {320, 117} {320, 117} diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index b422153f6..a40e80853 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -21,6 +21,8 @@ #import "UIContactCell.h" #import "LinphoneManager.h" #import "PhoneMainView.h" +#import "UACellBackgroundView.h" +#import "UILinphone.h" @implementation ContactsTableViewController @@ -169,6 +171,10 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf UIContactCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { cell = [[[UIContactCell alloc] initWithIdentifier:kCellId] autorelease]; + // Background View + UACellBackgroundView *selectedBackgroundView = [[[UACellBackgroundView alloc] initWithFrame:CGRectZero] autorelease]; + cell.selectedBackgroundView = selectedBackgroundView; + [selectedBackgroundView setBackgroundColor:LINPHONE_TABLE_CELL_BACKGROUND_COLOR]; } OrderedDictionary *subDic = [addressBookMap objectForKey: [addressBookMap keyAtIndex: [indexPath section]]]; diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index d4e280a3f..4dff3398e 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -21,6 +21,8 @@ #import "UIHistoryCell.h" #import "LinphoneManager.h" #import "PhoneMainView.h" +#import "UACellBackgroundView.h" +#import "UILinphone.h" @implementation HistoryTableViewController @@ -95,6 +97,10 @@ UIHistoryCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { cell = [[[UIHistoryCell alloc] initWithIdentifier:kCellId] autorelease]; + // Background View + UACellBackgroundView *selectedBackgroundView = [[[UACellBackgroundView alloc] initWithFrame:CGRectZero] autorelease]; + cell.selectedBackgroundView = selectedBackgroundView; + [selectedBackgroundView setBackgroundColor:LINPHONE_TABLE_CELL_BACKGROUND_COLOR]; } LinphoneCallLog *log = [[callLogs objectAtIndex:[indexPath row]] pointerValue]; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index f55b992aa..34cecf468 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -180,7 +180,6 @@ const NSInteger SECURE_BUTTON_TAG=5; #pragma mark - - - (void)callUpdate:(LinphoneCall *)call state:(LinphoneCallState) state { // Update table [callTableView reloadData]; @@ -373,66 +372,6 @@ const NSInteger SECURE_BUTTON_TAG=5; [[PhoneMainView instance] fullScreen:false]; } -- (void)transferPressed { - /* allow only if call is active */ - if (!linphone_core_get_current_call([LinphoneManager getLc])) - return; - - /* build UIActionSheet */ - if (visibleActionSheet != nil) { - [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE]; - } - - CallDelegate* cd = [[CallDelegate alloc] init]; - cd.eventType = CD_TRANSFER_CALL; - cd.delegate = self; - cd.call = linphone_core_get_current_call([LinphoneManager getLc]); - NSString* title = NSLocalizedString(@"Transfer to ...",nil); - visibleActionSheet = [[UIActionSheet alloc] initWithTitle:title - delegate:cd - cancelButtonTitle:nil - destructiveButtonTitle:nil // NSLocalizedString(@"Other...",nil) - otherButtonTitles:nil]; - - // add button for each trasnfer-to valid call - const MSList* calls = linphone_core_get_calls([LinphoneManager getLc]); - while (calls) { - LinphoneCall* call = (LinphoneCall*) calls->data; - LinphoneCallAppData* data = ((LinphoneCallAppData*)linphone_call_get_user_pointer(call)); - if (call != cd.call && !linphone_call_get_current_params(call)->in_conference) { - const LinphoneAddress* addr = linphone_call_get_remote_address(call); - NSString* btnTitle = [NSString stringWithFormat : NSLocalizedString(@"%s",nil), (linphone_address_get_display_name(addr) ?linphone_address_get_display_name(addr):linphone_address_get_username(addr))]; - data->transferButtonIndex = [visibleActionSheet addButtonWithTitle:btnTitle]; - } else { - data->transferButtonIndex = -1; - } - calls = calls->next; - } - - if (visibleActionSheet.numberOfButtons == 0) { - [visibleActionSheet release]; - visibleActionSheet = nil; - - //TODO - /*[UICallButton enableTransforMode:YES];*/ - [[PhoneMainView instance] changeView:PhoneView_Dialer]; - } else { - // add 'Other' option - [visibleActionSheet addButtonWithTitle:NSLocalizedString(@"Other...",nil)]; - - // add cancel button on iphone - if (![LinphoneManager runningOnIpad]) { - [visibleActionSheet addButtonWithTitle:NSLocalizedString(@"Cancel",nil)]; - } - - visibleActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - if ([LinphoneManager runningOnIpad]) { - //[visibleActionSheet showFromRect:transfer.bounds inView:transfer animated:NO]; - } else - [visibleActionSheet showInView:[[UIApplication sharedApplication].delegate window]]; - } -} - - (void)displayVideoCall { [self enableVideoDisplay: TRUE]; } @@ -534,31 +473,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { visibleActionSheet = nil; break; } - case CD_TRANSFER_CALL: { - LinphoneCall* call = (LinphoneCall*)datas; - // browse existing call and trasnfer to the one matching the btn id - const MSList* calls = linphone_core_get_calls([LinphoneManager getLc]); - while (calls) { - LinphoneCall* call2 = (LinphoneCall*) calls->data; - LinphoneCallAppData* data = ((LinphoneCallAppData*)linphone_call_get_user_pointer(call2)); - if (data->transferButtonIndex == buttonIndex) { - linphone_core_transfer_call_to_another([LinphoneManager getLc], call, call2); - return; - } - data->transferButtonIndex = -1; - calls = calls->next; - } - if (![LinphoneManager runningOnIpad] && buttonIndex == (actionSheet.numberOfButtons - 1)) { - // cancel button - return; - } - // user must jhave pressed 'other...' button as we did not find a call - // with the correct indice - //TODO - //[UICallButton enableTransforMode:YES]; - [[PhoneMainView instance] changeView:PhoneView_Dialer]; - break; - } default: ms_error("Unhandled CallDelegate event of type: %d received - ignoring", type); } diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index ac8019936..e00398c5f 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -32,12 +32,13 @@ UIVideoButton* videoButton; UIMicroButton* microButton; UISpeakerButton* speakerButton; - UIButton* optionsButton; + UIToggleButton* optionsButton; UIHangUpButton* hangupButton; UIView* padView; UIView* optionsView; UIButton* optionsAddButton; UIButton* optionsTransferButton; + UIToggleButton* dialerButton; //Key pad UIDigitButton* oneButton; @@ -59,13 +60,14 @@ @property (nonatomic, retain) IBOutlet UIVideoButton* videoButton; @property (nonatomic, retain) IBOutlet UIMicroButton* microButton; @property (nonatomic, retain) IBOutlet UISpeakerButton* speakerButton; -@property (nonatomic, retain) IBOutlet UIButton* optionsButton; +@property (nonatomic, retain) IBOutlet UIToggleButton* optionsButton; @property (nonatomic, retain) IBOutlet UIHangUpButton* hangupButton; @property (nonatomic, retain) IBOutlet UIView* padView; @property (nonatomic, retain) IBOutlet UIView* optionsView; @property (nonatomic, retain) IBOutlet UIButton* optionsAddButton; @property (nonatomic, retain) IBOutlet UIButton* optionsTransferButton; +@property (nonatomic, retain) IBOutlet UIToggleButton* dialerButton; @property (nonatomic, retain) IBOutlet UIButton* oneButton; @property (nonatomic, retain) IBOutlet UIButton* twoButton; diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index d60e846a9..42a9319c5 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -39,6 +39,7 @@ @synthesize optionsAddButton; @synthesize optionsTransferButton; +@synthesize dialerButton; @synthesize padView; @synthesize optionsView; @@ -73,6 +74,7 @@ [optionsAddButton release]; [optionsTransferButton release]; + [dialerButton release]; [oneButton release]; [twoButton release]; @@ -156,6 +158,10 @@ // Set selected+over background: IB lack ! [optionsButton setImage:[UIImage imageNamed:@"options_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+over background: IB lack ! + [dialerButton setImage:[UIImage imageNamed:@"dialer_alt_back_over.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; } - (void)viewWillAppear:(BOOL)animated { @@ -245,6 +251,7 @@ #pragma mark - - (void)showPad{ + [dialerButton setOn]; if([padView isHidden]) { CGRect frame = [padView frame]; int original_y = frame.origin.y; @@ -267,6 +274,7 @@ } - (void)hidePad{ + [dialerButton setOff]; if(![padView isHidden]) { CGRect frame = [padView frame]; int original_y = frame.origin.y; @@ -294,7 +302,7 @@ } - (void)showOptions{ - [optionsButton setSelected:TRUE]; + [optionsButton setOn]; if([optionsView isHidden]) { CGRect frame = [optionsView frame]; int original_y = frame.origin.y; @@ -317,7 +325,7 @@ } - (void)hideOptions{ - [optionsButton setSelected:FALSE]; + [optionsButton setOff]; if(![optionsView isHidden]) { CGRect frame = [optionsView frame]; int original_y = frame.origin.y; diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index ed272ddb2..71d94f926 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -2,10 +2,10 @@ 1296 - 11D50 + 11E53 2182 - 1138.32 - 568.00 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -738,6 +738,10 @@ NSImage dialer_alt_over.png + + NSImage + dialer_alt_back_default.png + NSImage dialer_alt_default.png @@ -1261,6 +1265,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIMicroButton @@ -1277,8 +1282,9 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + UIDigitButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1372,6 +1378,7 @@ UIButton + UIButton UIButton UIButton UIButton @@ -1400,6 +1407,10 @@ conferenceButton UIButton + + dialerButton + UIButton + eightButton UIButton @@ -1601,6 +1612,7 @@ {209, 136} {209, 136} + {209, 136} {209, 136} {209, 136} {222, 136} diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib index dda98e6a6..d64d8a989 100644 --- a/Classes/LinphoneUI/UIChatCell.xib +++ b/Classes/LinphoneUI/UIChatCell.xib @@ -42,6 +42,7 @@ 292 {{10, 8}, {27, 27}} + _NS:9 NO @@ -56,6 +57,7 @@ 274 {{45, 0}, {60, 44}} + _NS:328 NO @@ -91,6 +93,7 @@ 274 {{110, 0}, {170, 44}} + _NS:328 NO @@ -123,6 +126,7 @@ 292 {{276, 0}, {44, 44}} + _NS:9 NO @@ -161,7 +165,7 @@ 292 {{276, 0}, {44, 44}} - + _NS:9 NO IBCocoaTouchFramework @@ -187,39 +191,15 @@ {320, 44} + _NS:9 - + 3 MCAwAA IBCocoaTouchFramework - - - 292 - {320, 44} - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - list_highlight.png - - - - - 292 - {320, 44} - - - _NS:9 - - NO - IBCocoaTouchFramework - @@ -239,22 +219,6 @@ 24 - - - backgroundView - - - - 28 - - - - selectedBackgroundView - - - - 29 - avatarImage @@ -353,18 +317,6 @@ chatContentLabel - - 26 - - - selectedBackground - - - 27 - - - background - 32 @@ -385,8 +337,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -397,7 +347,61 @@ 37 - + + + + UIChatCell + UITableViewCell + + id + id + + + + onDeleteClick: + id + + + onDetailsClick: + id + + + + UIImageView + UILabel + UIButton + UIButton + UILabel + + + + avatarImage + UIImageView + + + chatContentLabel + UILabel + + + deleteButton + UIButton + + + detailsButton + UIButton + + + displayNameLabel + UILabel + + + + IBProjectSource + ./Classes/UIChatCell.h + + + + 0 IBCocoaTouchFramework @@ -412,7 +416,6 @@ {45, 45} {45, 45} {45, 45} - {640, 88} 1181 diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index 24a9af109..624db9c53 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -125,4 +125,19 @@ [lastNameLabel setFrame: lastNameFrame]; } +- (void)setHighlighted:(BOOL)highlighted { + [self setHighlighted:highlighted animated:FALSE]; +} + +- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated { + [super setHighlighted:highlighted animated:animated]; + if(highlighted) { + [lastNameLabel setTextColor:[UIColor whiteColor]]; + [firstNameLabel setTextColor:[UIColor whiteColor]]; + } else { + [lastNameLabel setTextColor:[UIColor blackColor]]; + [firstNameLabel setTextColor:[UIColor blackColor]]; + } +} + @end diff --git a/Classes/LinphoneUI/UIContactCell.xib b/Classes/LinphoneUI/UIContactCell.xib index 0b696c528..3a2893e5d 100644 --- a/Classes/LinphoneUI/UIContactCell.xib +++ b/Classes/LinphoneUI/UIContactCell.xib @@ -41,6 +41,7 @@ 292 {{6, 6}, {32, 32}} + _NS:9 NO @@ -51,6 +52,7 @@ 274 {{46, 0}, {55, 44}} + _NS:328 NO @@ -63,10 +65,6 @@ IBCocoaTouchFramework John - - 1 - MCAwIDAAA - 1 10 @@ -86,7 +84,7 @@ 274 {{111, 0}, {200, 44}} - + _NS:328 NO YES @@ -98,7 +96,6 @@ IBCocoaTouchFramework Doe - 1 10 @@ -116,39 +113,15 @@ {320, 44} + _NS:9 - + 3 MCAwAA IBCocoaTouchFramework - - - 292 - {320, 44} - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - list_highlight.png - - - - - 292 - {320, 44} - - - _NS:9 - - NO - IBCocoaTouchFramework - @@ -168,22 +141,6 @@ 18 - - - selectedBackgroundView - - - - 20 - - - - backgroundView - - - - 22 - avatarImage @@ -234,18 +191,6 @@ lastName - - 19 - - - selectedBackground - - - 21 - - - background - 23 @@ -261,8 +206,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -272,7 +215,37 @@ 24 - + + + + UIContactCell + UITableViewCell + + UIImageView + UILabel + UILabel + + + + avatarImage + UIImageView + + + firstNameLabel + UILabel + + + lastNameLabel + UILabel + + + + IBProjectSource + ./Classes/UIContactCell.h + + + + 0 IBCocoaTouchFramework @@ -281,10 +254,6 @@ YES 3 - - list_highlight.png - {640, 88} - 1181 diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index 4a1efe211..cfca19597 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -129,7 +129,6 @@ {{276, 0}, {44, 44}} - _NS:9 NO IBCocoaTouchFramework @@ -158,39 +157,12 @@ _NS:9 - + 3 MCAwAA IBCocoaTouchFramework - - - 292 - {320, 44} - - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - list_highlight.png - - - - - 292 - {320, 44} - - - - _NS:9 - - NO - IBCocoaTouchFramework - @@ -226,22 +198,6 @@ 17 - - - selectedBackgroundView - - - - 22 - - - - backgroundView - - - - 24 - onDetails: @@ -315,18 +271,6 @@ deleteButton - - 21 - - - selectedBackground - - - 23 - - - background - @@ -338,8 +282,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -415,7 +357,6 @@ {45, 45} {45, 45} {45, 45} - {640, 88} 1181 diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h new file mode 100644 index 000000000..42fc6c2ba --- /dev/null +++ b/Classes/LinphoneUI/UILinphone.h @@ -0,0 +1,25 @@ +/* UILinphone.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef UILINPHONE_H +#define UILINPHONE_H + +#define LINPHONE_TABLE_CELL_BACKGROUND_COLOR [UIColor colorWithRed:207.0f/255.0f green:76.0f/255.0f blue:41.0f/255.0f alpha:1.0f] + +#endif diff --git a/Classes/LinphoneUI/UIMainBar.h b/Classes/LinphoneUI/UIMainBar.h index efb58843e..783a29074 100644 --- a/Classes/LinphoneUI/UIMainBar.h +++ b/Classes/LinphoneUI/UIMainBar.h @@ -25,6 +25,8 @@ UIButton *dialerButton; UIButton *settingsButton; UIButton *chatButton; + UIView *historyNotificationView; + UILabel *historyNotificationLabel; } @property (nonatomic, retain) IBOutlet UIButton* historyButton; @@ -32,9 +34,13 @@ @property (nonatomic, retain) IBOutlet UIButton* dialerButton; @property (nonatomic, retain) IBOutlet UIButton* settingsButton; @property (nonatomic, retain) IBOutlet UIButton* chatButton; +@property (nonatomic, retain) IBOutlet UIView *historyNotificationView; +@property (nonatomic, retain) IBOutlet UILabel *historyNotificationLabel; + -(IBAction) onHistoryClick: (id) event; -(IBAction) onContactsClick: (id) event; -(IBAction) onDialerClick: (id) event; -(IBAction) onSettingsClick: (id) event; -(IBAction) onChatClick: (id) event; + @end diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 8c498efd1..f7cd3c63e 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -27,7 +27,8 @@ @synthesize dialerButton; @synthesize settingsButton; @synthesize chatButton; - +@synthesize historyNotificationView; +@synthesize historyNotificationLabel; #pragma mark - Lifecycle Functions @@ -43,6 +44,8 @@ [dialerButton release]; [settingsButton release]; [chatButton release]; + [historyNotificationView release]; + [historyNotificationLabel release]; [super dealloc]; } @@ -57,7 +60,16 @@ selector:@selector(changeViewEvent:) name:@"LinphoneMainViewChange" object:nil]; - [self update:[[PhoneMainView instance] currentView]]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(callUpdate:) + name:@"LinphoneCallUpdate" + object:nil]; + [self updateView:[[PhoneMainView instance] currentView]]; + if([LinphoneManager isLcReady]) { + [self updateMissed:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; + } else { + [self updateMissed:0]; + } } - (void)viewWillDisappear:(BOOL)animated { @@ -66,21 +78,83 @@ [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LinphoneMainViewChange" object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneCallUpdate" + object:nil]; } #pragma mark - Event Functions +- (void)callUpdate: (NSNotification*) notif { + //LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; + //LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; + [self updateMissed:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; +} + - (void)changeViewEvent: (NSNotification*) notif { NSNumber *viewNumber = [notif.userInfo objectForKey: @"view"]; if(viewNumber != nil) - [self update:[viewNumber intValue]]; + [self updateView:[viewNumber intValue]]; } #pragma mark - -- (void)update:(PhoneView) view { +- (void)updateMissed:(int)missedCall { + if (missedCall > 0) { + if([historyNotificationView isHidden]) { + historyNotificationView.transform = CGAffineTransformIdentity; + [self startShakeAnimation:@"Shake" target:historyNotificationView]; + [historyNotificationView setHidden:FALSE]; + } + [historyNotificationLabel setText:[NSString stringWithFormat:@"%i", missedCall]]; + } else { + if(![historyNotificationView isHidden]) { + [self stopShakeAnimation:@"Shake" target:historyNotificationView]; + CGAffineTransform startCGA = [historyNotificationView transform]; + [UIView animateWithDuration:0.4 + delay:0 + options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction + animations:^{ + historyNotificationView.transform = CGAffineTransformConcat(startCGA, CGAffineTransformMakeScale(0.01f, 0.01f)); + } + completion:^(BOOL finished){ + [historyNotificationView setHidden:TRUE]; + } + ]; + } + } +} + +- (void)startShakeAnimation:(NSString *)animationID target:(UIView *)target { + [target setTransform:CGAffineTransformMakeTranslation(0, -4)]; + [UIView animateWithDuration: 0.3 + delay: 0 + options: UIViewAnimationOptionRepeat | + UIViewAnimationOptionAutoreverse | + UIViewAnimationOptionAllowUserInteraction | + UIViewAnimationOptionCurveEaseIn + animations:^{ + [target setTransform:CGAffineTransformMakeTranslation(0, 4)]; + } + completion:^(BOOL finished){ + }]; + +} + +- (void)stopShakeAnimation:(NSString *)animationID target:(UIView *)target { + [target.layer removeAnimationForKey:animationID]; +} + +- (void)updateView:(PhoneView) view { + // Reset missed call + if(view == PhoneView_History) { + linphone_core_reset_missed_calls_count([LinphoneManager getLc]); + [self updateMissed:0]; + } + + // Update buttons if(view == PhoneView_History) { historyButton.selected = TRUE; } else { diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib index fa4fa09b3..a861b8642 100644 --- a/Classes/LinphoneUI/UIMainBar.xib +++ b/Classes/LinphoneUI/UIMainBar.xib @@ -11,9 +11,11 @@ 1181 - IBProxyObject - IBUIView IBUIButton + IBUIImageView + IBUIView + IBUILabel + IBProxyObject com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -41,7 +43,7 @@ {{0, 11}, {320, 66}} - + _NS:9 1 @@ -96,6 +98,71 @@ 16 + + + -2147483356 + + + + 274 + {21, 21} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + history_notification.png + + + + + 292 + {21, 21} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + 99 + + 3 + MQA + + + 0 + 10 + 1 + + 1 + 14 + + + Helvetica + 14 + 16 + + + + {{38, 5}, {21, 21}} + + + + _NS:9 + + 3 + MCAwAA + + NO + NO + IBCocoaTouchFramework + 292 @@ -198,7 +265,6 @@ {{256, 0}, {64, 77}} - _NS:9 NO @@ -288,6 +354,22 @@ 12 + + + historyNotificationLabel + + + + 35 + + + + historyNotificationView + + + + 36 + onChatClick: @@ -363,6 +445,7 @@ + mainTabBar @@ -404,6 +487,28 @@ dialer + + 32 + + + + + + + historyNotificationView + + + 33 + + + historyNotificationImage + + + 34 + + + historyNotificationLabel + @@ -413,6 +518,9 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -429,7 +537,7 @@ - 29 + 36 @@ -470,6 +578,8 @@ UIButton UIButton UIButton + UILabel + UIView UIButton @@ -489,6 +599,14 @@ historyButton UIButton + + historyNotificationLabel + UILabel + + + historyNotificationView + UIView + settingsButton UIButton @@ -520,6 +638,7 @@ {128, 154} {128, 154} {128, 154} + {43, 43} {128, 154} {128, 154} {128, 154} diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h new file mode 100755 index 000000000..262c841c6 --- /dev/null +++ b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h @@ -0,0 +1,17 @@ +// +// TPKeyboardAvoidingScrollView.h +// +// Created by Michael Tyson on 11/04/2011. +// Copyright 2011 A Tasty Pixel. All rights reserved. +// + +@interface TPKeyboardAvoidingScrollView : UIScrollView { + UIEdgeInsets _priorInset; + BOOL _priorInsetSaved; + BOOL _keyboardVisible; + CGRect _keyboardRect; + CGSize _originalContentSize; +} + +- (void)adjustOffsetToIdealIfNeeded; +@end diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m new file mode 100755 index 000000000..ee0372065 --- /dev/null +++ b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m @@ -0,0 +1,186 @@ +// +// TPKeyboardAvoidingScrollView.m +// +// Created by Michael Tyson on 11/04/2011. +// Copyright 2011 A Tasty Pixel. All rights reserved. +// + +#import "TPKeyboardAvoidingScrollView.h" + +#define _UIKeyboardFrameEndUserInfoKey (&UIKeyboardFrameEndUserInfoKey != NULL ? UIKeyboardFrameEndUserInfoKey : @"UIKeyboardBoundsUserInfoKey") + +@interface TPKeyboardAvoidingScrollView () +- (UIView*)findFirstResponderBeneathView:(UIView*)view; +- (UIEdgeInsets)contentInsetForKeyboard; +- (CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space; +- (CGRect)keyboardRect; +@end + +@implementation TPKeyboardAvoidingScrollView + +- (void)setup { + _priorInsetSaved = NO; + if ( CGSizeEqualToSize(self.contentSize, CGSizeZero) ) { + self.contentSize = self.bounds.size; + } + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; +} + +-(id)initWithFrame:(CGRect)frame { + if ( !(self = [super initWithFrame:frame]) ) return nil; + [self setup]; + return self; +} + +-(void)awakeFromNib { + [self setup]; +} + +-(void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +#if !__has_feature(objc_arc) + [super dealloc]; +#endif +} + +-(void)setFrame:(CGRect)frame { + [super setFrame:frame]; + + CGSize contentSize = _originalContentSize; + contentSize.width = MAX(contentSize.width, self.frame.size.width); + contentSize.height = MAX(contentSize.height, self.frame.size.height); + [super setContentSize:contentSize]; + + if ( _keyboardVisible ) { + self.contentInset = [self contentInsetForKeyboard]; + } +} + +-(void)setContentSize:(CGSize)contentSize { + _originalContentSize = contentSize; + + contentSize.width = MAX(contentSize.width, self.frame.size.width); + contentSize.height = MAX(contentSize.height, self.frame.size.height); + [super setContentSize:contentSize]; + + if ( _keyboardVisible ) { + self.contentInset = [self contentInsetForKeyboard]; + } +} + +- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { + [[self findFirstResponderBeneathView:self] resignFirstResponder]; + [super touchesEnded:touches withEvent:event]; +} + +- (void)keyboardWillShow:(NSNotification*)notification { + _keyboardRect = [[[notification userInfo] objectForKey:_UIKeyboardFrameEndUserInfoKey] CGRectValue]; + _keyboardVisible = YES; + + UIView *firstResponder = [self findFirstResponderBeneathView:self]; + if ( !firstResponder ) { + // No child view is the first responder - nothing to do here + return; + } + + if (!_priorInsetSaved) { + _priorInset = self.contentInset; + _priorInsetSaved = YES; + } + + // Shrink view's inset by the keyboard's height, and scroll to show the text field/view being edited + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; + [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; + + self.contentInset = [self contentInsetForKeyboard]; + [self setContentOffset:CGPointMake(self.contentOffset.x, + [self idealOffsetForView:firstResponder withSpace:[self keyboardRect].origin.y - self.bounds.origin.y]) + animated:YES]; + [self setScrollIndicatorInsets:self.contentInset]; + + [UIView commitAnimations]; +} + +- (void)keyboardWillHide:(NSNotification*)notification { + _keyboardRect = CGRectZero; + _keyboardVisible = NO; + + // Restore dimensions to prior size + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; + [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; + self.contentInset = _priorInset; + [self setScrollIndicatorInsets:self.contentInset]; + _priorInsetSaved = NO; + [UIView commitAnimations]; +} + +- (UIView*)findFirstResponderBeneathView:(UIView*)view { + // Search recursively for first responder + for ( UIView *childView in view.subviews ) { + if ( [childView respondsToSelector:@selector(isFirstResponder)] && [childView isFirstResponder] ) return childView; + UIView *result = [self findFirstResponderBeneathView:childView]; + if ( result ) return result; + } + return nil; +} + +- (UIEdgeInsets)contentInsetForKeyboard { + UIEdgeInsets newInset = self.contentInset; + CGRect keyboardRect = [self keyboardRect]; + newInset.bottom = keyboardRect.size.height - ((keyboardRect.origin.y+keyboardRect.size.height) - (self.bounds.origin.y+self.bounds.size.height)); + return newInset; +} + +-(CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space { + + // Convert the rect to get the view's distance from the top of the scrollView. + CGRect rect = [view convertRect:view.bounds toView:self]; + + // Set starting offset to that point + CGFloat offset = rect.origin.y; + + + if ( self.contentSize.height - offset < space ) { + // Scroll to the bottom + offset = self.contentSize.height - space; + } else { + if ( view.bounds.size.height < space ) { + // Center vertically if there's room + offset -= floor((space-view.bounds.size.height)/2.0); + } + if ( offset + space > self.contentSize.height ) { + // Clamp to content size + offset = self.contentSize.height - space; + } + } + + if (offset < 0) offset = 0; + + return offset; +} + +-(void)adjustOffsetToIdealIfNeeded { + + // Only do this if the keyboard is already visible + if ( !_keyboardVisible ) return; + + CGFloat visibleSpace = self.bounds.size.height - self.contentInset.top - self.contentInset.bottom; + + CGPoint idealOffset = CGPointMake(0, [self idealOffsetForView:[self findFirstResponderBeneathView:self] withSpace:visibleSpace]); + + [self setContentOffset:idealOffset animated:YES]; +} + +- (CGRect)keyboardRect { + CGRect keyboardRect = [self convertRect:_keyboardRect fromView:nil]; + if ( keyboardRect.origin.y == 0 ) { + CGRect screenBounds = [self convertRect:[UIScreen mainScreen].bounds fromView:nil]; + keyboardRect.origin = CGPointMake(0, screenBounds.size.height - keyboardRect.size.height); + } + return keyboardRect; +} + +@end diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h new file mode 100755 index 000000000..7485c6005 --- /dev/null +++ b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h @@ -0,0 +1,16 @@ +// +// TPKeyboardAvoidingTableView.h +// +// Created by Michael Tyson on 11/04/2011. +// Copyright 2011 A Tasty Pixel. All rights reserved. +// + +@interface TPKeyboardAvoidingTableView : UITableView { + UIEdgeInsets _priorInset; + BOOL _priorInsetSaved; + BOOL _keyboardVisible; + CGRect _keyboardRect; +} + +- (void)adjustOffsetToIdealIfNeeded; +@end diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m new file mode 100755 index 000000000..9eea88c74 --- /dev/null +++ b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m @@ -0,0 +1,173 @@ +// +// TPKeyboardAvoidingTableView.m +// +// Created by Michael Tyson on 11/04/2011. +// Copyright 2011 A Tasty Pixel. All rights reserved. +// + +#import "TPKeyboardAvoidingTableView.h" + +#define _UIKeyboardFrameEndUserInfoKey (&UIKeyboardFrameEndUserInfoKey != NULL ? UIKeyboardFrameEndUserInfoKey : @"UIKeyboardBoundsUserInfoKey") + +@interface TPKeyboardAvoidingTableView () +- (UIView*)findFirstResponderBeneathView:(UIView*)view; +- (UIEdgeInsets)contentInsetForKeyboard; +- (CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space; +- (CGRect)keyboardRect; +@end + +@implementation TPKeyboardAvoidingTableView + +- (void)setup { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; +} + +-(id)initWithFrame:(CGRect)frame { + if ( !(self = [super initWithFrame:frame]) ) return nil; + [self setup]; + return self; +} + +-(id)initWithCoder:(NSCoder *)aDecoder { + if ( !(self = [super initWithCoder:aDecoder]) ) return nil; + [self setup]; + return self; +} + +-(void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +#if !__has_feature(objc_arc) + [super dealloc]; +#endif +} + +-(void)setFrame:(CGRect)frame { + [super setFrame:frame]; + if ( _keyboardVisible ) { + self.contentInset = [self contentInsetForKeyboard]; + } +} + +-(void)setContentSize:(CGSize)contentSize { + [super setContentSize:contentSize]; + if ( _keyboardVisible ) { + self.contentInset = [self contentInsetForKeyboard]; + } +} + +- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { + [[self findFirstResponderBeneathView:self] resignFirstResponder]; + [super touchesEnded:touches withEvent:event]; +} + +- (void)keyboardWillShow:(NSNotification*)notification { + _keyboardRect = [[[notification userInfo] objectForKey:_UIKeyboardFrameEndUserInfoKey] CGRectValue]; + _keyboardVisible = YES; + + UIView *firstResponder = [self findFirstResponderBeneathView:self]; + if ( !firstResponder ) { + // No child view is the first responder - nothing to do here + return; + } + + if (!_priorInsetSaved) { + _priorInset = self.contentInset; + _priorInsetSaved = YES; + } + + // Shrink view's inset by the keyboard's height, and scroll to show the text field/view being edited + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; + [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; + + self.contentInset = [self contentInsetForKeyboard]; + [self setContentOffset:CGPointMake(self.contentOffset.x, + [self idealOffsetForView:firstResponder withSpace:[self keyboardRect].origin.y - self.bounds.origin.y]) + animated:YES]; + [self setScrollIndicatorInsets:self.contentInset]; + + [UIView commitAnimations]; +} + +- (void)keyboardWillHide:(NSNotification*)notification { + _keyboardRect = CGRectZero; + _keyboardVisible = NO; + + // Restore dimensions to prior size + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; + [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; + self.contentInset = _priorInset; + [self setScrollIndicatorInsets:self.contentInset]; + _priorInsetSaved = NO; + [UIView commitAnimations]; +} + +- (UIView*)findFirstResponderBeneathView:(UIView*)view { + // Search recursively for first responder + for ( UIView *childView in view.subviews ) { + if ( [childView respondsToSelector:@selector(isFirstResponder)] && [childView isFirstResponder] ) return childView; + UIView *result = [self findFirstResponderBeneathView:childView]; + if ( result ) return result; + } + return nil; +} + +- (UIEdgeInsets)contentInsetForKeyboard { + UIEdgeInsets newInset = self.contentInset; + CGRect keyboardRect = [self keyboardRect]; + newInset.bottom = keyboardRect.size.height - ((keyboardRect.origin.y+keyboardRect.size.height) - (self.bounds.origin.y+self.bounds.size.height)); + return newInset; +} + +-(CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space { + + // Convert the rect to get the view's distance from the top of the scrollView. + CGRect rect = [view convertRect:view.bounds toView:self]; + + // Set starting offset to that point + CGFloat offset = rect.origin.y; + + + if ( self.contentSize.height - offset < space ) { + // Scroll to the bottom + offset = self.contentSize.height - space; + } else { + if ( view.bounds.size.height < space ) { + // Center vertically if there's room + offset -= floor((space-view.bounds.size.height)/2.0); + } + if ( offset + space > self.contentSize.height ) { + // Clamp to content size + offset = self.contentSize.height - space; + } + } + + if (offset < 0) offset = 0; + + return offset; +} + +-(void)adjustOffsetToIdealIfNeeded { + + // Only do this if the keyboard is already visible + if ( !_keyboardVisible ) return; + + CGFloat visibleSpace = self.bounds.size.height - self.contentInset.top - self.contentInset.bottom; + + CGPoint idealOffset = CGPointMake(0, [self idealOffsetForView:[self findFirstResponderBeneathView:self] withSpace:visibleSpace]); + + [self setContentOffset:idealOffset animated:YES]; +} + +- (CGRect)keyboardRect { + CGRect keyboardRect = [self convertRect:_keyboardRect fromView:nil]; + if ( keyboardRect.origin.y == 0 ) { + CGRect screenBounds = [self convertRect:[UIScreen mainScreen].bounds fromView:nil]; + keyboardRect.origin = CGPointMake(0, screenBounds.size.height - keyboardRect.size.height); + } + return keyboardRect; +} + +@end diff --git a/Classes/Utils/UACellBackgroundView/UACellBackgroundView.h b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.h new file mode 100644 index 000000000..a2a397792 --- /dev/null +++ b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.h @@ -0,0 +1,30 @@ +// +// UACellBackgroundView.h +// Ambiance +// +// Created by Matt Coneybeare on 1/31/10. +// Copyright 2010 Urban Apps LLC. All rights reserved. +// +// Modified by Diorcet Yann on 07/12/12 + +#import + +#import + +typedef enum { + UACellBackgroundViewPositionSingle = 0, + UACellBackgroundViewPositionTop, + UACellBackgroundViewPositionBottom, + UACellBackgroundViewPositionMiddle +} UACellBackgroundViewPosition; + +@interface UACellBackgroundView : UIView { + UACellBackgroundViewPosition position; + BOOL automaticPositioning; +} + +@property(nonatomic) UACellBackgroundViewPosition position; +@property(nonatomic, copy) UIColor *backgroundColor; +@property(assign) BOOL automaticPositioning; + +@end diff --git a/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m new file mode 100644 index 000000000..78cb23633 --- /dev/null +++ b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m @@ -0,0 +1,274 @@ +// +// UACellBackgroundView.m +// Ambiance +// +// Created by Matt Coneybeare on 1/31/10. +// Copyright 2010 Urban Apps LLC. All rights reserved. +// +// Modified by Diorcet Yann on 07/12/12 + +#define kDefaultMargin 10 + +#import "UACellBackgroundView.h" + +static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth,float ovalHeight); + +@implementation UACellBackgroundView + +@synthesize position; +@synthesize backgroundColor; +@synthesize automaticPositioning; + +- (void)initUACellBackgroundView { + [super setBackgroundColor:[UIColor clearColor]]; + self->automaticPositioning = TRUE; +} + +- (id)init { + self = [super init]; + if(self != nil) { + [self initUACellBackgroundView]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + if(self != nil) { + [self initUACellBackgroundView]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if(self != nil) { + [self initUACellBackgroundView]; + } + return self; +} + +- (BOOL)isOpaque { + return NO; +} + +- (void)setBackgroundColor:(UIColor *)abackgroundColor { + if(self->backgroundColor != nil) { + [self->backgroundColor release]; + } + self->backgroundColor = [[UIColor alloc]initWithCGColor:abackgroundColor.CGColor]; + [self setNeedsDisplay]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + if(!automaticPositioning) + return; + + // + // Auto found position + // + + UIView *view = [self superview]; + // Find TableViewCell + if(view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview]; + + UIView *cellView = [self superview]; + // Find TableViewCell + if(cellView != nil && ![cellView isKindOfClass:[UITableViewCell class]]) cellView = [cellView superview]; + + if(view != nil && cellView != nil) { + UITableViewCell *cell = (UITableViewCell*)cellView; + UITableView *tableView = (UITableView*)view; + + if([tableView style] == UITableViewStyleGrouped) { + NSIndexPath *path = [tableView indexPathForCell:cell]; + if(path) { + int count = [tableView numberOfRowsInSection:[path section]]; + // Set Position for background view + if([path row] == 0) { + if([path row] == (count - 1)) { + [self setPosition:UACellBackgroundViewPositionSingle]; + } else { + [self setPosition:UACellBackgroundViewPositionTop]; + } + } else if([path row] == (count - 1)) { + [self setPosition:UACellBackgroundViewPositionBottom]; + } else { + [self setPosition:UACellBackgroundViewPositionMiddle]; + } + } + } else { + [self setPosition:UACellBackgroundViewPositionMiddle]; + } + } + [self setNeedsDisplay]; +} + +- (void)drawRect:(CGRect)aRect { + // Drawing code + + CGContextRef c = UIGraphicsGetCurrentContext(); + + int lineWidth = 1; + + CGRect rect = [self bounds]; + CGFloat minx = CGRectGetMinX(rect), midx = CGRectGetMidX(rect), maxx = CGRectGetMaxX(rect); + CGFloat miny = CGRectGetMinY(rect), midy = CGRectGetMidY(rect), maxy = CGRectGetMaxY(rect); + miny -= 1; + + CGFloat locations[2] = { 0.0, 1.0 }; + CGColorSpaceRef myColorspace = CGColorSpaceCreateDeviceRGB(); + CGGradientRef myGradient = nil; + CGFloat redColor, greenColor, blueColor, alphaColor; + [[self backgroundColor] getRed:&redColor green:&greenColor blue:&blueColor alpha:&alphaColor]; + CGFloat components[8] = {redColor, greenColor, blueColor, alphaColor, redColor * 0.766f, greenColor * 0.766f, blueColor * 0.766f, alphaColor}; + CGContextSetStrokeColorWithColor(c, [[UIColor grayColor] CGColor]); + CGContextSetLineWidth(c, lineWidth); + CGContextSetAllowsAntialiasing(c, YES); + CGContextSetShouldAntialias(c, YES); + + if (position == UACellBackgroundViewPositionTop) { + + miny += 1; + + CGMutablePathRef path = CGPathCreateMutable(); + CGPathMoveToPoint(path, NULL, minx, maxy); + CGPathAddArcToPoint(path, NULL, minx, miny, midx, miny, kDefaultMargin); + CGPathAddArcToPoint(path, NULL, maxx, miny, maxx, maxy, kDefaultMargin); + CGPathAddLineToPoint(path, NULL, maxx, maxy); + CGPathAddLineToPoint(path, NULL, minx, maxy); + CGPathCloseSubpath(path); + + // Fill and stroke the path + CGContextSaveGState(c); + CGContextAddPath(c, path); + CGContextClip(c); + + myGradient = CGGradientCreateWithColorComponents(myColorspace, components, locations, 2); + CGContextDrawLinearGradient(c, myGradient, CGPointMake(minx,miny), CGPointMake(minx,maxy), 0); + + CGContextAddPath(c, path); + CGPathRelease(path); + CGContextStrokePath(c); + CGContextRestoreGState(c); + + } else if (position == UACellBackgroundViewPositionBottom) { + + CGMutablePathRef path = CGPathCreateMutable(); + CGPathMoveToPoint(path, NULL, minx, miny); + CGPathAddArcToPoint(path, NULL, minx, maxy, midx, maxy, kDefaultMargin); + CGPathAddArcToPoint(path, NULL, maxx, maxy, maxx, miny, kDefaultMargin); + CGPathAddLineToPoint(path, NULL, maxx, miny); + CGPathAddLineToPoint(path, NULL, minx, miny); + CGPathCloseSubpath(path); + + // Fill and stroke the path + CGContextSaveGState(c); + CGContextAddPath(c, path); + CGContextClip(c); + + myGradient = CGGradientCreateWithColorComponents(myColorspace, components, locations, 2); + CGContextDrawLinearGradient(c, myGradient, CGPointMake(minx,miny), CGPointMake(minx,maxy), 0); + + CGContextAddPath(c, path); + CGPathRelease(path); + CGContextStrokePath(c); + CGContextRestoreGState(c); + + + } else if (position == UACellBackgroundViewPositionMiddle) { + + CGMutablePathRef path = CGPathCreateMutable(); + CGPathMoveToPoint(path, NULL, minx, miny); + CGPathAddLineToPoint(path, NULL, maxx, miny); + CGPathAddLineToPoint(path, NULL, maxx, maxy); + CGPathAddLineToPoint(path, NULL, minx, maxy); + CGPathAddLineToPoint(path, NULL, minx, miny); + CGPathCloseSubpath(path); + + // Fill and stroke the path + CGContextSaveGState(c); + CGContextAddPath(c, path); + CGContextClip(c); + + myGradient = CGGradientCreateWithColorComponents(myColorspace, components, locations, 2); + CGContextDrawLinearGradient(c, myGradient, CGPointMake(minx,miny), CGPointMake(minx,maxy), 0); + + CGContextAddPath(c, path); + CGPathRelease(path); + CGContextStrokePath(c); + CGContextRestoreGState(c); + + } else if (position == UACellBackgroundViewPositionSingle) { + miny += 1; + + CGMutablePathRef path = CGPathCreateMutable(); + CGPathMoveToPoint(path, NULL, minx, midy); + CGPathAddArcToPoint(path, NULL, minx, miny, midx, miny, kDefaultMargin); + CGPathAddArcToPoint(path, NULL, maxx, miny, maxx, midy, kDefaultMargin); + CGPathAddArcToPoint(path, NULL, maxx, maxy, midx, maxy, kDefaultMargin); + CGPathAddArcToPoint(path, NULL, minx, maxy, minx, midy, kDefaultMargin); + CGPathCloseSubpath(path); + + + // Fill and stroke the path + CGContextSaveGState(c); + CGContextAddPath(c, path); + CGContextClip(c); + + + myGradient = CGGradientCreateWithColorComponents(myColorspace, components, locations, 2); + CGContextDrawLinearGradient(c, myGradient, CGPointMake(minx,miny), CGPointMake(minx,maxy), 0); + + CGContextAddPath(c, path); + CGPathRelease(path); + CGContextStrokePath(c); + CGContextRestoreGState(c); + } + + CGColorSpaceRelease(myColorspace); + CGGradientRelease(myGradient); + return; +} + +- (void)dealloc { + [backgroundColor release]; + [super dealloc]; +} + +- (void)setPosition:(UACellBackgroundViewPosition)newPosition { + if (position != newPosition) { + position = newPosition; + [self setNeedsDisplay]; + } +} + +@end + +static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWidth,float ovalHeight) { + float fw, fh; + + if (ovalWidth == 0 || ovalHeight == 0) {// 1 + CGContextAddRect(context, rect); + return; + } + + CGContextSaveGState(context);// 2 + + CGContextTranslateCTM (context, CGRectGetMinX(rect),// 3 + CGRectGetMinY(rect)); + CGContextScaleCTM (context, ovalWidth, ovalHeight);// 4 + fw = CGRectGetWidth (rect) / ovalWidth;// 5 + fh = CGRectGetHeight (rect) / ovalHeight;// 6 + + CGContextMoveToPoint(context, fw, fh/2); // 7 + CGContextAddArcToPoint(context, fw, fh, fw/2, fh, 1);// 8 + CGContextAddArcToPoint(context, 0, fh, 0, fh/2, 1);// 9 + CGContextAddArcToPoint(context, 0, 0, fw/2, 0, 1);// 10 + CGContextAddArcToPoint(context, fw, 0, fw, fh/2, 1); // 11 + CGContextClosePath(context);// 12 + + CGContextRestoreGState(context);// 13 +} diff --git a/Resources/add_call_default.png b/Resources/add_call_default.png index 0932c749d964806d504320892ec3ae231700510e..81d6c7ed4c20ca2db511af57bdbf029e39a2e9c3 100644 GIT binary patch delta 1048 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 Hl+XkK%MHJ# diff --git a/Resources/add_call_over.png b/Resources/add_call_over.png index 09e5b91978ecd75e57f89e100ab2d39428d8c09b..7561d358b77f8a6ce0e94af0e1a2a1a7ca7c9a59 100644 GIT binary patch delta 1071 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 literal 1570 zcmbW1`9BnB9LFDI$q?l#=eCZKV;!+lOeLvNV{*k{oFTSI!VG4Hki1-LENWaYLd+t{ zl{Pe1nR3;b#yO5AV{%Ncm1D+^{)6p@=llLX&-eRzy*{t!O1)x#K}teN0stTdzi8tK zfUve84-o%J5V1u%wF2zFbrBT-07Q0g2mw;zVZox<9XR5=*ti%(=J+87kF*GY=qtF* zS!c}X;)M70q9E1IWj1ag_^}p(R7thfS^Qw5`nmA82$K|TFG;e|Ss6KY_upUrFxNw7 zU;o%!69TPf zwQd%NT%N#W858`L>vR&cD#XP*a4fS$A*NuC>|Y-1>SAI!j8d`WHO)*_$G#K+ow@&H zD0^iobK@+?VdDiOTSF`q5LA~Rq zPJKq&&wNNsz@htSJX~zL1gL7{@Y}8Se6S^RD9c?|(_N`CkA#8lQdjEM-u&4;I6f#S zC2SIav}(*&hQVf0k!pT2wL!52DQ~a(?uay~AC`cws=o1x!*3G0$}vkt7jmYf&6T7C z1!DFF%*k@Yp1n(9El|UbKtR27pu48h@MP1{j5>b3IU9gW!6UBiFJboD(9v{Z;1)t< z*?1JDXEiH}f_j#(32ami>VK}*RtV^0AEZk)z3y(9R(J$Jo_qL>R;>f-2>Ri@Mi_~l zdaks-R};i*x$5YrAq2;W5|;&M9suwo0KUR|x*x*Nm%r=&ACmTiJ%IqXA}-|{Y6c1e zed0xdd&)lGqb3Ng!NWTeVBFNwSZJ>+-sn3zcYKL>uOIs6t>k@u9e+I34t^f?eLqt)H}{&gX&DH$jM$m-K4J#f`WXW z?y1ZW^60v#qk9b2*PSF#^m3I2?{Tt;eRo*-e$>W=j&l${s)GIY z7vb1};)8_hPf%Jhb1r&a)zq$KKnY5=Q#9rax2;m!U*J#Qm-c zMBRH8Hf;mu7- zpd6wP6~SAY*(OL{O_| zU&hJ+jHp-0f73(M;@7yjG?>=SfP#wvPD&7fF4WObh?cz_&# z%86e7a<6@XwoQnmAB-?CG#%u5B1|ms1QX-YJW1(hXt$p(c6V_g1_Gu&%1t!zxeh9d sWm~VARc&>KWHQ$5**bMOnaQ5~6dq#3ijsID_}>BiyuD4Gwa?xE0A!c4KL7v# diff --git a/Resources/button_alert_background_over.png b/Resources/button_alert_background_over.png index 4c5247427bc9e24dd330f1d7d13b6b7d5c72280f..1781eee3caba2c7321e98f7441050899f94ca1f9 100644 GIT binary patch literal 3479 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 literal 1723 zcmb7FeLT~79RE%ou{w1sajmYaCN$>hhg>$d zuC|DNN=b&HjKsD)O&Qz$y8Gkq^}7DKKfa&$=ktDjp8oiJKHu}-<6Kwi80r83 zR$<(ny#UZaLVDN=O-Lr@@3;$rcC6c>H~`>!A0G_d$lCysTBk4``?dPD;H#|+zBAt! z27u;ajPqWf(<12rIr@15qGhTl;6Tx=4x<67ht7l@&%T*MaPj+1yV_ar*7@f82fH%N zE^V_?Hm<;`V>9j*xol-V#YT(-`lVf}rlGgWzfnco2e(-TRV?bh5DE@|xX6;rCy_)QM zmY>1ll>Px4s)W3`>YaBVY4U#pOBK z0QmaiD=gk_e92>%k&d-}Kw~-^wN6exp-{5)spY-)AXuZEG5mFpnBUeF_fDmz2#S`1 zqV5>XZ-)V-lf|tXQ*XjmC&?6L{V0e0zVltu7Qy6uKQus}(4=kj;P1i77W=g>*bUU* zjwf8$0mb+gi8hjO^BfaqeF8~(!*dvbo~B<$-^c?3gy##^Rp8qd+Mr6)#kvKu9?j16 z|Hyk0S_snc!On3XEn)5%?w6$>tUm{_sLaUAR?Dm|+9kwaxC;YpUR*@UhARNj&Y@x8 zXKj%7zkul1ehHqTSPrUiSS(1x@E$KLu%1)6yo$IppXk ze9}rym@jA91ZZ~1bnDu_ylYV{RQZ7pypr7hof}@^Ywk@fh=@y}lk%^swFrasb zb)pC&Mul(s>3pU9&K^OsJ!r7er5WV&E*O(0e-FTydO`&HH#>KP{f%dbMZKrJwg~K$ zp8@QZSCJuIhee0nsI9g5K;iJRN?lH&dsj>+NYnOmx2%m1fp)dk(=nmtNhN%+e5i-i z_(hQYN`TEgT4D3n=g7#S5y@o!r=)}=vFgpc*9p{Fkv$kPnQ*hLh%cH+QSWe^S)49b zbZ{znst!RuQ}6gJjOY~#0fyd2;WMejnt~aOp^V@)zR(m?rly;Bv*(Zo_p(64E|0b+ z<;5N8VfCm4wW^J;J5g^Mp`x;9HwEU_73}99KwuV*p40&T)m~J^nu`dfB^l!@^%}5Y zOFa56hYDJ_hJ`%^p+CA*uh9Vw`>n$wA3t>vH8M!JrpVG)vTJS^RJJkt)*kfrvzh{5^ngC`$ K&YA5Lock*MvwU1~IZn4Ozw>%Jwz3 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 literal 0 HcmV?d00001 diff --git a/Resources/contact_cancel_default.png b/Resources/contact_cancel_default.png new file mode 100644 index 0000000000000000000000000000000000000000..80809dc957ff533879723294406b37514f156f00 GIT binary patch literal 6587 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 literal 0 HcmV?d00001 diff --git a/Resources/contacts_add_default.png b/Resources/contacts_add_default.png index 7863899300be2a5743a2da209ad9574756ae99d1..e5ccfb54f5f0f846224510b49dfa15b4eba9326a 100644 GIT binary patch delta 5204 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 YRwa?~TSiDZ7tF33W?sM2Q|X2Ea5+c!C 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 diff --git a/Resources/contacts_add_over.png b/Resources/contacts_add_over.png index 24777743051d07c1d45a90e635668493766ce8b0..a858a14062107e7c63de2179ea4a266f7914943f 100644 GIT binary patch delta 4669 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 SSIPfEAWc;rl}{LK$bSGMW&O|q delta 4519 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 literal 0 HcmV?d00001 diff --git a/Resources/dialer_alt_background.png b/Resources/dialer_alt_background.png new file mode 100644 index 0000000000000000000000000000000000000000..5a2a267160f4ce69ffdc6035cfe550cb103f23e5 GIT binary patch literal 3373 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 diff --git a/Resources/micro_on_defauly.png b/Resources/micro_on_defauly.png deleted file mode 100644 index ca63b44ff5fbcfaa19e4ccb8bd62b98170497382..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5999 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 diff --git a/Resources/transfer_call_default.png b/Resources/transfer_call_default.png index 8d66dc15e3694a42cb680a8ed319458847712f38..b67e4509ea16cb4a3161b07b7811e11148aa44fd 100644 GIT binary patch delta 4838 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 delta 6955 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 I#WwnX0NI4;4*&oF diff --git a/Resources/transfer_call_disabled.png b/Resources/transfer_call_disabled.png index 3cb5c1db71235c33ed9af524b236dfc3e281f048..0307f6bf8f3b2c7032532d890c0de61b86bf07f5 100644 GIT binary patch delta 4682 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 delta 5685 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 diff --git a/Resources/transfer_call_over.png b/Resources/transfer_call_over.png index dee25606243df09eb08660dc82f04cb166333d54..9f3e9ac36165bda7da5ecb5a17b069716fd378c3 100644 GIT binary patch delta 4828 zcmbW1X*|@Azr_t@Ukf2+&yr!r3^R7a%*c|hWGrPjW8Wq_UktKK)+E`N?7KqQE4#8y zLS#)++4tM;{(n#I>vivw`+0oMd7aOL^BxvTlz7a05tLUN0Z$eX134sXCyGG8wh%c8 zzZ_Hw3WFmM2uXe!2oxd>k&%YVfT0Kln2Z7hl6*=`$pYD>IDy0gkK4Bu^t~MMj&9a2 zXm{I(uJ&$3Ewr+rpR0$Ioui!s1d4<}p$IqxAp?;^LZK+EhK9Vl1_CRmfq=-Ppo08= zm47q-H!oHLfs{of;2Ln*zZn>)IvgRZ4nxSoWndT>1cUzTO#xGK^Z%=Z{a?D2BajG# zEdOn5TSqsdyEh>vpAupLk^i5?FP6iEwV&t%b{N6+(dj|!(|Ho4)QdH`| zF4>flf`Uy&3yr$#_u1y;{9Ki)o#HapHPFCwd^PHUB5f~CsGn-urbom_=J@k{RG8r5se8Iy0a>!K7nnGn_SQYu_EhYRf$ELKTQ^ z(zQR5qbBb1$2Ckou;TCI?US~A!ZiTmjCs7EZbQfuNveyaSSix`o%@XLGP4~)%rw9gN!zx- zeW}^lo9Xj!0T`qHz}eZU4q||UGTIY2HBOV;xO0*JOsyd6Gbnmf)7dHN{O&EF5j{12 zg^E}kYnccU6<`0BP_LNwo6)k0|0M@$XsTv%kl!;r9R!o@yx{f0lBUQ9o6&tk&+~Rd z)t*@mXsi)FCM#Q!zGCpn{;_M8=5f{$s)8emtGVbViEvNocY1r!;gdDpQ%N#NL)Ymi zXb~KEasd4xLR(QxJ@Hxi;x__tTY1UJDU>4L`L?plaX8U6EYzuYOI2X~_pvnX>GnQf z6mTxk4$k~ybus%#1+CoGtEmq5xz5gbxVVwHxDiusa~N$Sp!OYe`i-mbjs(F-!YG?v z)e<@E(JaSZ&I`>EDiXLg#dRF8D~Xcb+N;9*!Sk|mMa!1uu~tmC)4G6f+PT;1E%B!! zPj*-fa)gtD&(EGqT&LPCbW^`N2+6HI`Vz`1PP{(g#Vw$_U{GD%$4t`kEf~s98kNskRqQt`X#!? zbFvrY@aW|nd95#XTv;ENS#xSr?%wjPUI?<$%r2GxjGoARJ@q&dSQN0+{3aQj29GvE zSmhiM(|4*~AN4$BlyGJEdi^+LtM98$NCZV5*Q=*|Jskzk)cb2S;-_ycR4~so1?`is zi>sA6%Jp|CTMSTH4bW%4^5<^IxQ5S-3M4FwPe)6t)Sri(4tgl}@eFeAC0IY!m9WiC zH|GM*PPEdR_y|lF0U3(Q5`Jv^QGWMVT)vYsrhG~By~UD%vr}u>+Hzh`=nTPjGgVUL z8XVdy$=~&Bzxyh?zJxRh{%rK!y!B!O1-g1#fYZvHOk#LkCzTie{~ay9{H^EY)Nz2 z3~JQ5dib1CRX;Bvbo`-%u)h;hZ*%lvjIZeNma792I;{lO-t&-e7%=skl8hA zGhJC8)4PdcP8co%l{i62Tp_oYr`P(5sXo3L);8CWDXctBiyJkPaG_ZV-E$=EIVWK` zn{pIB=cz4WIjeXzq_}kDT}KCxqa#aF*i9*YfCr4zU!d#-oGV1-RnnaY!oq1NxL_P0 zsQ5Dj4LR}ixI8#%;T^KJQ~xITSZ)nF%Qqn`6ZAInJoD17F`gUCV|8+JxSg9V=-=!_ z-QBu-FoIZW^un`_xc0H0HvpHr%T2+h7#FKcBm-REXkrBmp965lpO1bqn>YqhDuxk%K_8A5ARnA%hq85xzKodi0-_1HZ1f^g^!HtP>6Ag#r zgPDa&#;sLf!wKDWf0{>ncFMq6(EHmP=jVsd7wi)ey(_dP`gkj213rc1-K7sHdF|BS z<}IUqZ#yyqmP&$V4CPNaNowStJQKWf(18a|D)X?`{aSam&O7e2FK-4r@?Qc29d0XK z9d64i4d$f%pR-r*&%)6iHDA&oE<(;ow>|D5(*i3vJ|TQ8TUJTPnOJr_3Zei_EABro z&POJm%fa5sxTe!hj+QozzpoLNfThp};tbh$lajgY$Q#lm#`qrE*l5Z3lsf&f*YDoV zB}56>8&(Jh8G1WsJxN+w@dEs1x15&e+!V{bSGE|g^pRh!&IPLMX9o^1=WMZM=&Ua7#eR6yyUc*U z;np{y__MIciKqe;dzU&+EFw}JN6QddV?fJbZ78PF$IY~GNMLQmn)4;uhaVXiX_*}? zz#!IR+A@faW1jE4cDymKr*6+q6!DKVxA#LAcfhP8@t&`OylHr{+OtZdCJcROQt{rr zE8ZpHl~4VLUj2UJ2Q(n70f&SOskL!LVJ=`f1H7xu%^?x-fl*9T12 z{uFBNww31ZzJ)#Y4G!8kdi;jcI(c$Rb81$Kv~?)~nv<|NJFdjGMJ}i2s=E8Q@n<~C zCtZm%xGNP)bsz~PV{lN?Ci#O}OH9n4^e${izSEulYPibQXkbb@W-O#MA8ypg9RQl z)UWyB&+e$P=lsgKH5t!uWnH&`i1A)Y+CBWi7PnLCJQ0Pun7|ioNOjZCJL*2}NRFeH z{%$ss;(G=MC$J9PpJQv~R{F^FeK){qcreR%(*rY~_9~e1aEv%Q`KHOQ99n)Lze|!3 z0IrPH#o$Nk1M7Im49!W_%uYc;m(UL?DYL$JPGZyYe)GRW%}yTrY_~Y84IVcm3c<1` z%(E#BVOnK_x+WJCo+rxeuiwr!A^W`8OVSA~BmW?e0Bm8Hf@9)oIX6A|CYj|!>(avxTE!-L0P%VE(~n7BlU~UkFI?3RQtDnaf6ImpG;{&Am@du zIc5t$A0g&bf*f?;3B@ztGcma`5w~vU?TfO!1ODyR9al~!^@h{E6?COLWZ>JN`Pk)E zYz4Kp76regTu!`DciAJDuck>oqb!>4B&jd9<0aDY^MO5qLwM;* zYi8MGZ}z6stYmo*C8lCM~5M0l3q1yBM&yREA6czl@9YA8hj@> zrXm(T_iiftGv4OxA**&cnN)OFqP?r3aLbj0;Lh36(X7{cc;mj9{XSC^f;w^C1g6AFFVwxqg4KPHA`GDTG$rzQV3|M@QGgmR&A|&uMnul?)0_Wi&nopmjs4$o z(_8-?_on(=l#8jD{#pse=5v1+c4OXmZ!2beW?b`Vme;h!(+a*|ZYAFcR~x4V^@`Ol zkJ3h=nHhR0M8r5sKbC^f1`UE=`DjsH*1|R*Lv&}sX!@nZ^zE!_@xPsH*#7PGw_+YHLX1uJS%>0a27@)Sfnf;qw)5Vd z-Tf_6YcERCPnhVPp)o5T%k=O?m#8$_rn<6k7i>yU2<$4@zI4w;&F=eU5V-YM`1Z$# z4Av3{z$&Jmg&>q0XfK~Hs%N`uBzb&Dw%Rt{DF6 zBKXRjWxoS;MK3Q0*!9LiIC9cKp&qd^P4rp2yj+1m6m8xXyVm~Tmq5u&Yb#o?A5GxxkS_n5EMA}_aHz5N0NIrGw; zbS6H}X0F|w+h}a8N#$&vQqWdE@VNE<%Z0=ja+5f{k`(avR&T&M#$wn{FTG9Zou2y1 zM_$Z?3C<+VUi#9t;Kdb5jj6JFq(MvHAK+I?i~bWux^RD;_?v=}ELS&&MO#|+YCj=S zV$iFcT{}q6Ss&kE+LCaU=;Wx_A@_jbH@~7E`w(J}@kNc*DhQg!M?NtMa!y^J*4ASU zfJ#OAdrFz~pErG)?%lL7mATg37H`H@(3iL0&%!P{d-J}mCNY@EFx65ds1j{oPX@&9 zIXhRDW5oQGXE(NmunCx;Vwok00G|WpBsMwM#SB+9gJz`98+IGh%6qXB)CvB_hK(Wv z8{6H~iE3S+H$l~!6Dx>OzZ0u+AdXj+!;@jo2CoB7@3qOpZCXvYUwnA1vKzv7b%KM= zeJfm{IIv^GYkSZWSA9RcztJJ~7U0i_s*TsHi?Nq`CO)ZLdg@iK??u-$Y!<&J4kKso z$Ki&ChS+s3^x4uFoc`u{@rQPDx07^Jm58Z!a~VBv#ob7Wv58r_rvUgT~HU^Y-b+J7e<;&9&%DpDboYfQdL%1kJ@c$ zGO?KGo>Fr&vuXN>TVT#DTehxf46V?AbGoaHUmza$54Zop_g_@j(*A?*|IpkoD)zQo b^v(&L<*FL&n|1;l#oyDy=%K6Bt-}8caM9+| delta 3967 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 Be9iy> diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 60dd6691d..088237180 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -181,8 +181,6 @@ D3128FF415AABE4E00A2147A /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; }; D3128FF515AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; D3128FF615AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; - D3196D2D15A3199D007FEEBA /* list_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_highlight.png */; }; - D3196D2E15A3199D007FEEBA /* list_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D2C15A3199D007FEEBA /* list_highlight.png */; }; D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3115A321E2007FEEBA /* options_add_over.png */; }; @@ -547,6 +545,20 @@ D3D6A3B4159B0EFE005F692C /* options_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A9159B0EFE005F692C /* options_disabled.png */; }; D3D6A3B5159B0EFE005F692C /* options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3AA159B0EFE005F692C /* options_over.png */; }; D3D6A3B6159B0EFE005F692C /* options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3AA159B0EFE005F692C /* options_over.png */; }; + D3E84F1E15B00F4100420DAC /* cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1715B00F4100420DAC /* cancel_default.png */; }; + D3E84F1F15B00F4100420DAC /* cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1715B00F4100420DAC /* cancel_default.png */; }; + D3E84F2015B00F4100420DAC /* cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1815B00F4100420DAC /* cancel_over.png */; }; + D3E84F2115B00F4100420DAC /* cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1815B00F4100420DAC /* cancel_over.png */; }; + D3E84F2615B00F4100420DAC /* dialer_alt_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1B15B00F4100420DAC /* dialer_alt_back_default.png */; }; + D3E84F2715B00F4100420DAC /* dialer_alt_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1B15B00F4100420DAC /* dialer_alt_back_default.png */; }; + D3E84F2815B00F4100420DAC /* dialer_alt_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1C15B00F4100420DAC /* dialer_alt_back_over.png */; }; + D3E84F2915B00F4100420DAC /* dialer_alt_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1C15B00F4100420DAC /* dialer_alt_back_over.png */; }; + D3E84F2A15B00F4100420DAC /* dialer_alt_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1D15B00F4100420DAC /* dialer_alt_background.png */; }; + D3E84F2B15B00F4100420DAC /* dialer_alt_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1D15B00F4100420DAC /* dialer_alt_background.png */; }; + D3E84F3815B011AF00420DAC /* contact_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3615B011AF00420DAC /* contact_cancel_default.png */; }; + D3E84F3915B011AF00420DAC /* contact_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3615B011AF00420DAC /* contact_cancel_default.png */; }; + D3E84F3A15B011AF00420DAC /* contact_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3715B011AF00420DAC /* contact_cancel_over.png */; }; + D3E84F3B15B011AF00420DAC /* contact_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3715B011AF00420DAC /* contact_cancel_over.png */; }; D3E8F68615ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = D3E8F68415ADE0580065A226 /* UIContactDetailsFooter.m */; }; D3E8F68715ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = D3E8F68415ADE0580065A226 /* UIContactDetailsFooter.m */; }; D3E8F68815ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3E8F68515ADE05A0065A226 /* UIContactDetailsFooter.xib */; }; @@ -731,6 +743,14 @@ D3F83F8F15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; D3F83F9215824D3600336684 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; D3F83F9315824D3600336684 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; + D3F9A9DB15AEEB940045320F /* history_notification.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9DA15AEEB940045320F /* history_notification.png */; }; + D3F9A9DC15AEEB940045320F /* history_notification.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9DA15AEEB940045320F /* history_notification.png */; }; + D3F9A9E215AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */; }; + D3F9A9E315AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */; }; + D3F9A9E415AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */; }; + D3F9A9E515AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */; }; + D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; }; + D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; }; F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; }; F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; }; /* End PBXBuildFile section */ @@ -1073,7 +1093,6 @@ D3128FE815AABE4E00A2147A /* contact_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_back_over.png; path = Resources/contact_back_over.png; sourceTree = ""; }; D3128FE915AABE4E00A2147A /* contact_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_default.png; path = Resources/contact_edit_default.png; sourceTree = ""; }; D3128FEA15AABE4E00A2147A /* contact_edit_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_over.png; path = Resources/contact_edit_over.png; sourceTree = ""; }; - D3196D2C15A3199D007FEEBA /* list_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = list_highlight.png; path = Resources/list_highlight.png; sourceTree = ""; }; D3196D3015A321E2007FEEBA /* options_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_default.png; path = Resources/options_add_default.png; sourceTree = ""; }; D3196D3115A321E2007FEEBA /* options_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_over.png; path = Resources/options_add_over.png; sourceTree = ""; }; D3196D3215A321E3007FEEBA /* options_transfer_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_default.png; path = Resources/options_transfer_default.png; sourceTree = ""; }; @@ -1314,6 +1333,14 @@ D3D6A3A8159B0EFE005F692C /* options_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_default.png; path = Resources/options_default.png; sourceTree = ""; }; D3D6A3A9159B0EFE005F692C /* options_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_disabled.png; path = Resources/options_disabled.png; sourceTree = ""; }; D3D6A3AA159B0EFE005F692C /* options_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_over.png; path = Resources/options_over.png; sourceTree = ""; }; + D3E84F1715B00F4100420DAC /* cancel_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_default.png; path = Resources/cancel_default.png; sourceTree = ""; }; + D3E84F1815B00F4100420DAC /* cancel_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cancel_over.png; path = Resources/cancel_over.png; sourceTree = ""; }; + D3E84F1B15B00F4100420DAC /* dialer_alt_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_back_default.png; path = Resources/dialer_alt_back_default.png; sourceTree = ""; }; + D3E84F1C15B00F4100420DAC /* dialer_alt_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_back_over.png; path = Resources/dialer_alt_back_over.png; sourceTree = ""; }; + D3E84F1D15B00F4100420DAC /* dialer_alt_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_background.png; path = Resources/dialer_alt_background.png; sourceTree = ""; }; + D3E84F3615B011AF00420DAC /* contact_cancel_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_cancel_default.png; path = Resources/contact_cancel_default.png; sourceTree = ""; }; + D3E84F3715B011AF00420DAC /* contact_cancel_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_cancel_over.png; path = Resources/contact_cancel_over.png; sourceTree = ""; }; + D3E84F3C15B018A600420DAC /* UILinphone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILinphone.h; sourceTree = ""; }; D3E8F68315ADE0570065A226 /* UIContactDetailsFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactDetailsFooter.h; sourceTree = ""; }; D3E8F68415ADE0580065A226 /* UIContactDetailsFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactDetailsFooter.m; sourceTree = ""; }; D3E8F68515ADE05A0065A226 /* UIContactDetailsFooter.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactDetailsFooter.xib; sourceTree = ""; }; @@ -1419,6 +1446,13 @@ D3F83F8C158229C500336684 /* PhoneMainView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PhoneMainView.h; sourceTree = ""; }; D3F83F8D15822ABD00336684 /* PhoneMainView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhoneMainView.m; sourceTree = ""; }; D3F83F9115824D3500336684 /* LinphoneApp.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneApp.xib; sourceTree = ""; }; + D3F9A9DA15AEEB940045320F /* history_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_notification.png; path = Resources/history_notification.png; sourceTree = ""; }; + D3F9A9DE15AF100D0045320F /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TPKeyboardAvoidingScrollView.h; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h; sourceTree = ""; }; + D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TPKeyboardAvoidingScrollView.m; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m; sourceTree = ""; }; + D3F9A9E015AF100D0045320F /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TPKeyboardAvoidingTableView.h; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h; sourceTree = ""; }; + D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TPKeyboardAvoidingTableView.m; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m; sourceTree = ""; }; + D3F9A9EC15AF277D0045320F /* UACellBackgroundView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UACellBackgroundView.h; path = Utils/UACellBackgroundView/UACellBackgroundView.h; sourceTree = ""; }; + D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UACellBackgroundView.m; path = Utils/UACellBackgroundView/UACellBackgroundView.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1864,6 +1898,7 @@ D31C9C96158A1CDE00756B45 /* UIHistoryCell.h */, D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */, D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */, + D3E84F3C15B018A600420DAC /* UILinphone.h */, D32409C1158B49A600C8C119 /* UILongTouchButton.h */, D32409C2158B49A600C8C119 /* UILongTouchButton.m */, D3ED3E841586291B006C0DE4 /* UIMainBar.h */, @@ -2092,6 +2127,8 @@ D31C9C8D158A1C1000756B45 /* call_status_incoming.png */, D31C9C8E158A1C1000756B45 /* call_status_missed.png */, D31C9C8F158A1C1000756B45 /* call_status_outgoing.png */, + D3E84F1715B00F4100420DAC /* cancel_default.png */, + D3E84F1815B00F4100420DAC /* cancel_over.png */, D36C43CC158F2F370048BA40 /* cell_call.png */, D3211BB8159C8A820098460B /* cell_call_first.png */, D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */, @@ -2121,6 +2158,8 @@ D3128FE715AABE4E00A2147A /* contact_back_default.png */, D3128FE815AABE4E00A2147A /* contact_back_over.png */, D378906915AC37C800BD776C /* contact_bar_background.png */, + D3E84F3615B011AF00420DAC /* contact_cancel_default.png */, + D3E84F3715B011AF00420DAC /* contact_cancel_over.png */, D3128FE915AABE4E00A2147A /* contact_edit_default.png */, D3128FEA15AABE4E00A2147A /* contact_edit_over.png */, D37C638D15AAD251009D0BAC /* contact_number.png */, @@ -2140,6 +2179,9 @@ D3F83F761582253100336684 /* decline_default.png */, D3F83F771582253100336684 /* decline_over.png */, D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */, + D3E84F1B15B00F4100420DAC /* dialer_alt_back_default.png */, + D3E84F1C15B00F4100420DAC /* dialer_alt_back_over.png */, + D3E84F1D15B00F4100420DAC /* dialer_alt_background.png */, D36C43CF158F2F370048BA40 /* dialer_alt_default.png */, D36C43D0158F2F370048BA40 /* dialer_alt_over.png */, D38327ED1580FE3A00FA0D23 /* dialer_default.png */, @@ -2157,6 +2199,7 @@ D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */, D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */, D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */, + D3F9A9DA15AEEB940045320F /* history_notification.png */, D3F26BF515986DAD005F9CAB /* history_ok_default.png */, D3F26BF615986DAD005F9CAB /* history_ok_over.png */, D38327FD158100E400FA0D23 /* history_over.png */, @@ -2175,7 +2218,6 @@ D3EA5417159858A80037DC6B /* list_delete_over.png */, D354981815876FE7000081D8 /* list_details_default.png */, D354981915876FE7000081D8 /* list_details_over.png */, - D3196D2C15A3199D007FEEBA /* list_highlight.png */, D3F83EF4158205A100336684 /* micro_off_default.png */, D35EA76115A2DF8D003E025D /* micro_off_disabled.png */, D3F83EF5158205A100336684 /* micro_off_over.png */, @@ -2277,13 +2319,15 @@ D326483415887D4400930C67 /* Utils */ = { isa = PBXGroup; children = ( - D38935F715A6D06800A3A3AA /* CPAnimation */, D3F26BEA159869A6005F9CAB /* AbstractCall.h */, D3F26BEB159869A6005F9CAB /* AbstractCall.m */, + D38935F715A6D06800A3A3AA /* CPAnimation */, D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */, D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */, D326483615887D5200930C67 /* OrderedDictionary.h */, D326483715887D5200930C67 /* OrderedDictionary.m */, + D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */, + D3F9A9EB15AF27620045320F /* UACellBackgroundView */, ); name = Utils; sourceTree = ""; @@ -2404,6 +2448,26 @@ path = Settings; sourceTree = ""; }; + D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */ = { + isa = PBXGroup; + children = ( + D3F9A9DE15AF100D0045320F /* TPKeyboardAvoidingScrollView.h */, + D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */, + D3F9A9E015AF100D0045320F /* TPKeyboardAvoidingTableView.h */, + D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */, + ); + name = TPKeyboardAvoiding; + sourceTree = ""; + }; + D3F9A9EB15AF27620045320F /* UACellBackgroundView */ = { + isa = PBXGroup; + children = ( + D3F9A9EC15AF277D0045320F /* UACellBackgroundView.h */, + D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */, + ); + name = UACellBackgroundView; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -2684,7 +2748,6 @@ D35EA76515A2DF8D003E025D /* micro_on_disabled.png in Resources */, D38D14AF15A30B3D008497E8 /* cell_call_first_highlight.png in Resources */, D38D14B115A30B3D008497E8 /* cell_call_highlight.png in Resources */, - D3196D2D15A3199D007FEEBA /* list_highlight.png in Resources */, D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */, D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */, D3196D3815A321E3007FEEBA /* options_transfer_default.png in Resources */, @@ -2743,6 +2806,14 @@ C9C8254C15AE207B00D493FA /* options_selected.png in Resources */, C9C8254F15AE256100D493FA /* transfer_call_disabled.png in Resources */, C90FAA7B15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */, + D3F9A9DB15AEEB940045320F /* history_notification.png in Resources */, + D3E84F1E15B00F4100420DAC /* cancel_default.png in Resources */, + D3E84F2015B00F4100420DAC /* cancel_over.png in Resources */, + D3E84F2615B00F4100420DAC /* dialer_alt_back_default.png in Resources */, + D3E84F2815B00F4100420DAC /* dialer_alt_back_over.png in Resources */, + D3E84F2A15B00F4100420DAC /* dialer_alt_background.png in Resources */, + D3E84F3815B011AF00420DAC /* contact_cancel_default.png in Resources */, + D3E84F3A15B011AF00420DAC /* contact_cancel_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2924,7 +2995,6 @@ D35EA76615A2DF8D003E025D /* micro_on_disabled.png in Resources */, D38D14B015A30B3D008497E8 /* cell_call_first_highlight.png in Resources */, D38D14B215A30B3D008497E8 /* cell_call_highlight.png in Resources */, - D3196D2E15A3199D007FEEBA /* list_highlight.png in Resources */, D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */, D3196D3715A321E3007FEEBA /* options_add_over.png in Resources */, D3196D3915A321E3007FEEBA /* options_transfer_default.png in Resources */, @@ -2983,6 +3053,14 @@ C9C8254D15AE207B00D493FA /* options_selected.png in Resources */, C9C8255015AE256100D493FA /* transfer_call_disabled.png in Resources */, C90FAA7C15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */, + D3F9A9DC15AEEB940045320F /* history_notification.png in Resources */, + D3E84F1F15B00F4100420DAC /* cancel_default.png in Resources */, + D3E84F2115B00F4100420DAC /* cancel_over.png in Resources */, + D3E84F2715B00F4100420DAC /* dialer_alt_back_default.png in Resources */, + D3E84F2915B00F4100420DAC /* dialer_alt_back_over.png in Resources */, + D3E84F2B15B00F4100420DAC /* dialer_alt_background.png in Resources */, + D3E84F3915B011AF00420DAC /* contact_cancel_default.png in Resources */, + D3E84F3B15B011AF00420DAC /* contact_cancel_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3073,6 +3151,9 @@ D378907515AC448A00BD776C /* UIView+ModalStack.m in Sources */, D3E8F68615ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, C90FAA7915AF54E6002091CB /* HistoryDetailsViewController.m in Sources */, + D3F9A9E215AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */, + D3F9A9E415AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, + D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3160,6 +3241,9 @@ D378907615AC448A00BD776C /* UIView+ModalStack.m in Sources */, D3E8F68715ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, C90FAA7A15AF54E6002091CB /* HistoryDetailsViewController.m in Sources */, + D3F9A9E315AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */, + D3F9A9E515AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, + D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 686dcd4059f2348ab6971ecebb41460cdb508883 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 13 Jul 2012 17:28:31 +0200 Subject: [PATCH 042/397] Fix switch camera Fix Contact views --- Classes/ContactDetailsTableViewController.m | 75 ++++++++++++++------- Classes/ContactDetailsViewController.m | 10 ++- Classes/ContactsViewController.xib | 12 ++-- Classes/InCallViewController.m | 17 +++-- 4 files changed, 70 insertions(+), 44 deletions(-) diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 8efb57129..085714ea5 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -55,6 +55,7 @@ @synthesize contactID; + #pragma mark - Lifecycle Functions - (void)initContactDetailsTableViewController { @@ -129,7 +130,7 @@ - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; - if(contactID == kABRecordInvalidID && contact != nil) { + if(contact != nil && ABRecordGetRecordID(contact) == kABRecordInvalidID) { CFRelease(contact); } contact = nil; @@ -167,7 +168,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { ContactDetailsTableViewController* controller = (ContactDetailsTableViewController*)context; - if(!controller->inhibUpdate) { + //ABAddressBookRevert(addressBook); + if(!controller->inhibUpdate && ![controller isEditing]) { [controller resetData]; } } @@ -177,13 +179,21 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf return; NSLog(@"Reset data to contact %p", contact); - ABAddressBookRevert(addressBook); + contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(contact)); + if(contact == NULL) { + [[footerController removeButton] sendActionsForControlEvents: UIControlEventTouchUpInside]; + return; + } [self loadData]; } - (void)removeContact { - if(contactID != kABRecordInvalidID) { + if(contact == NULL) + return; + + // Remove contact from book + if(ABRecordGetRecordID(contact) != kABRecordInvalidID) { NSError* error = NULL; ABAddressBookRemoveRecord(addressBook, contact, (CFErrorRef*)&error); if (error != NULL) { @@ -191,7 +201,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } else { NSLog(@"Remove contact %p: Success!", contact); } - contactID = kABRecordInvalidID; + contact = NULL; // Save address book error = NULL; @@ -202,7 +212,6 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf NSLog(@"Save AddressBook: Fail(%@)", [error localizedDescription]); } else { NSLog(@"Save AddressBook: Success!"); - contactID = ABRecordGetRecordID(contact); } } } @@ -213,7 +222,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf // Add contact to book NSError* error = NULL; - if(contactID == kABRecordInvalidID) { + if(ABRecordGetRecordID(contact) == kABRecordInvalidID) { ABAddressBookAddRecord(addressBook, contact, (CFErrorRef*)&error); if (error != NULL) { NSLog(@"Add contact %p: Fail(%@)", contact, [error localizedDescription]); @@ -231,7 +240,6 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf NSLog(@"Save AddressBook: Fail(%@)", [error localizedDescription]); } else { NSLog(@"Save AddressBook: Success!"); - contactID = ABRecordGetRecordID(contact); } } @@ -265,16 +273,16 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf NSMutableArray *subArray = [NSMutableArray array]; if(lMap) { for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { + ABMultiValueIdentifier identifier = ABMultiValueGetIdentifierAtIndex(lMap, i); CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { if(CFStringCompare((CFStringRef)CONTACT_SIP_FIELD, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { - ABMultiValueIdentifier identifier = ABMultiValueGetIdentifierAtIndex(lMap, i); Entry *entry = [[Entry alloc] initWithData:identifier]; [subArray addObject: entry]; [entry release]; } + CFRelease(lDict); } - CFRelease(lDict); } CFRelease(lMap); } @@ -301,7 +309,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } else { lMap = ABMultiValueCreateMutable(kABStringPropertyType); } - ABMultiValueAddValueAndLabel(lMap, (CFStringRef)@"", (CFStringRef)[labelArray objectAtIndex:0], &identifier); + CFStringRef label = (CFStringRef)[labelArray objectAtIndex:0]; + ABMultiValueAddValueAndLabel(lMap, [value copy], label, &identifier); Entry *entry = [[Entry alloc] initWithData:identifier]; [sectionArray addObject:entry]; [entry release]; @@ -318,10 +327,11 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } else { lMap = ABMultiValueCreateMutable(kABDictionaryPropertyType); } - CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; - CFTypeRef values[] = { [value copy], CONTACT_SIP_FIELD }; + CFStringRef keys[] = {kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; + CFTypeRef values[] = {[value copy], CONTACT_SIP_FIELD}; CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); - ABMultiValueAddValueAndLabel(lMap, lDict, (CFStringRef)[labelArray objectAtIndex:0], &identifier); + CFStringRef label = (CFStringRef)[labelArray objectAtIndex:0]; + ABMultiValueAddValueAndLabel(lMap, lDict, label, &identifier); CFRelease(lDict); Entry *entry = [[Entry alloc] initWithData:identifier]; [sectionArray addObject:entry]; @@ -403,7 +413,6 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)newContact { contact = ABPersonCreate(); - self->contactID = kABRecordInvalidID; [self loadData]; } @@ -447,25 +456,32 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); - label = [ContactDetailsTableViewController localizeLabel:(NSString*) labelRef]; - CFRelease(labelRef); + if(labelRef != NULL) { + label = [ContactDetailsTableViewController localizeLabel:(NSString*) labelRef]; + CFRelease(labelRef); + } CFStringRef valueRef = ABMultiValueCopyValueAtIndex(lMap, index); - value = [ContactDetailsTableViewController localizeLabel:(NSString*) valueRef]; - CFRelease(valueRef); + if(valueRef != NULL) { + value = [ContactDetailsTableViewController localizeLabel:(NSString*) valueRef]; + CFRelease(valueRef); + } CFRelease(lMap); } else if([indexPath section] == 1) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); - label = [ContactDetailsTableViewController localizeLabel:(NSString*) labelRef]; - CFRelease(labelRef); + if(labelRef != NULL) { + label = [ContactDetailsTableViewController localizeLabel:(NSString*) labelRef]; + CFRelease(labelRef); + } CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, index); CFStringRef valueRef = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); - value = [NSString stringWithString:(NSString*) valueRef]; + if(valueRef != NULL) { + value = [NSString stringWithString:(NSString*) valueRef]; + } CFRelease(lDict); CFRelease(lMap); } - [cell.textLabel setText:label]; [cell.detailTextLabel setText:value]; [cell.detailTextField setText:value]; @@ -543,11 +559,14 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleInsert) { + [self.tableView beginUpdates]; [self addEntry:self.tableView section:[indexPath section] animated:TRUE]; [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:FALSE]; - // Don't save yet as the user must set a name. + [self.tableView endUpdates]; } else if (editingStyle == UITableViewCellEditingStyleDelete) { + [self.tableView beginUpdates]; [self removeEntry:self.tableView path:indexPath animated:TRUE]; + [self.tableView endUpdates]; } } @@ -562,6 +581,9 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf [ContactDetailsTableViewController findAndResignFirstResponder:[self tableView]]; } + if(animated) { + [self.tableView beginUpdates]; + } if(editing) { for (int section = 0; section <[self numberOfSectionsInTableView:[self tableView]]; ++section) { [self addEntry:self.tableView section:section animated:animated]; @@ -571,6 +593,9 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf [self removeEmptyEntry:self.tableView section:section animated:animated]; } } + if(animated) { + [self.tableView endUpdates]; + } [headerController setEditing:editing animated:animated]; @@ -660,7 +685,9 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); CFRelease(lMap); } + [self.tableView beginUpdates]; [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject: editingIndexPath] withRowAnimation:FALSE]; + [self.tableView endUpdates]; [editingIndexPath release]; editingIndexPath = nil; } diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index f00b1c3dc..1b9228faf 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -64,13 +64,15 @@ } - (void)editContact:(ABRecordRef)acontact { - [self setContact:acontact]; + self->contact = acontact; + [tableController setContactID:ABRecordGetRecordID(acontact)]; [self enableEdit:FALSE]; [[tableController tableView] reloadData]; } - (void)editContact:(ABRecordRef)acontact address:(NSString*)address { - [self setContact:acontact]; + self->contact = acontact; + [tableController setContactID:ABRecordGetRecordID(acontact)]; [tableController addSipField:address]; [self enableEdit:FALSE]; [[tableController tableView] reloadData]; @@ -154,11 +156,7 @@ - (void)enableEdit:(BOOL)animated { if(![tableController isEditing]) { - if(animated) - [[tableController tableView] beginUpdates]; [tableController setEditing:TRUE animated:animated]; - if(animated) - [[tableController tableView] endUpdates]; } [editButton setOn]; [cancelButton setHidden:FALSE]; diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index cd8f7e34e..0a3edf504 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -2,10 +2,10 @@ 1296 - 11D50 + 11E53 2182 - 1138.32 - 568.00 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -158,7 +158,6 @@ {{0, 58}, {320, 402}} - _NS:10 1 @@ -173,7 +172,6 @@ 0.0 0.0 YES - YES NO 1 0 @@ -467,8 +465,8 @@ YES 3 - {214, 117} - {214, 117} + {213, 117} + {213, 117} {213, 117} {213, 117} {213, 117} diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 34cecf468..d880c617a 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -263,10 +263,7 @@ const NSInteger SECURE_BUTTON_TAG=5; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; [[PhoneMainView instance] showTabBar: true]; - if ([LinphoneManager instance].frontCamId !=nil ) { - // only show camera switch button if we have more than 1 camera - [videoCameraSwitch setAlpha:1.0]; - } + [videoCameraSwitch setAlpha:1.0]; [UIView commitAnimations]; // hide controls in 5 sec @@ -325,8 +322,14 @@ const NSInteger SECURE_BUTTON_TAG=5; [UIView commitAnimations]; } - videoView.alpha = 1.0; - videoView.hidden = FALSE; + [videoView setAlpha: 1.0]; + [videoView setHidden: FALSE]; + + if ([LinphoneManager instance].frontCamId !=nil ) { + // only show camera switch button if we have more than 1 camera + [videoCameraSwitch setHidden:FALSE]; + } + [videoCameraSwitch setAlpha:0.0]; [[PhoneMainView instance] fullScreen: true]; [[PhoneMainView instance] showTabBar: false]; @@ -358,7 +361,7 @@ const NSInteger SECURE_BUTTON_TAG=5; [videoGroup setAlpha:0.0]; [[PhoneMainView instance] showTabBar: true]; [callTableView setAlpha:1.0]; - [videoCameraSwitch setAlpha:0.0]; + [videoCameraSwitch setHidden:TRUE]; if(animation) { [UIView commitAnimations]; From 4e2302fa087e2d52bea6bce73e1d1590e4d9b5da Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Sun, 15 Jul 2012 17:07:52 +0200 Subject: [PATCH 043/397] Fix gradients on IOS4 --- Classes/Utils/UACellBackgroundView/UACellBackgroundView.m | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m index 78cb23633..1f8aa8e14 100644 --- a/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m +++ b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m @@ -119,11 +119,10 @@ static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWi miny -= 1; CGFloat locations[2] = { 0.0, 1.0 }; - CGColorSpaceRef myColorspace = CGColorSpaceCreateDeviceRGB(); + CGColorSpaceRef myColorspace = CGColorGetColorSpace([[self backgroundColor] CGColor]); CGGradientRef myGradient = nil; - CGFloat redColor, greenColor, blueColor, alphaColor; - [[self backgroundColor] getRed:&redColor green:&greenColor blue:&blueColor alpha:&alphaColor]; - CGFloat components[8] = {redColor, greenColor, blueColor, alphaColor, redColor * 0.766f, greenColor * 0.766f, blueColor * 0.766f, alphaColor}; + const CGFloat *default_components = CGColorGetComponents([[self backgroundColor] CGColor]); + CGFloat components[8] = {default_components[0], default_components[1], default_components[2], default_components[3], default_components[0] * 0.766f, default_components[1] * 0.766f, default_components[2] * 0.766f, default_components[3]}; CGContextSetStrokeColorWithColor(c, [[UIColor grayColor] CGColor]); CGContextSetLineWidth(c, lineWidth); CGContextSetAllowsAntialiasing(c, YES); From 2b268d8603fc080d5f00d9bf5976b6cf217250e0 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Sun, 15 Jul 2012 19:55:15 +0200 Subject: [PATCH 044/397] Better contact views --- Classes/ContactDetailsTableViewController.h | 11 +- Classes/ContactDetailsTableViewController.m | 159 +++++--------------- Classes/ContactDetailsViewController.h | 3 + Classes/ContactDetailsViewController.m | 118 ++++++++++++--- 4 files changed, 140 insertions(+), 151 deletions(-) diff --git a/Classes/ContactDetailsTableViewController.h b/Classes/ContactDetailsTableViewController.h index 7ec5903b4..e05883262 100644 --- a/Classes/ContactDetailsTableViewController.h +++ b/Classes/ContactDetailsTableViewController.h @@ -27,26 +27,17 @@ @interface ContactDetailsTableViewController : UITableViewController { @private ABRecordRef contact; - ABRecordID contactID; NSMutableArray *dataCache; - ABAddressBookRef addressBook; ContactDetailsLabelViewController *contactDetailsLabelViewController; NSMutableArray *labelArray; NSIndexPath *editingIndexPath; - BOOL inhibUpdate; @public UIContactDetailsHeader *headerController; UIContactDetailsFooter *footerController; } -@property (nonatomic, assign) ABRecordID contactID; +@property (nonatomic, assign) ABRecordRef contact; -- (void)newContact; -- (void)removeContact; - (void)addSipField:(NSString*)address; -- (void)loadData; -- (void)saveData; -- (void)resetData; - @end diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 085714ea5..fc3b18528 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -23,6 +23,7 @@ #import "UIView+ModalStack.h" #import "UACellBackgroundView.h" #import "UILinphone.h" +#import "OrderedDictionary.h" @interface Entry : NSObject @@ -53,8 +54,7 @@ @implementation ContactDetailsTableViewController -@synthesize contactID; - +@synthesize contact; #pragma mark - Lifecycle Functions @@ -65,15 +65,9 @@ @"Linphone", [NSString stringWithString:(NSString*)kABPersonPhoneMobileLabel], [NSString stringWithString:(NSString*)kABPersonPhoneIPhoneLabel], - [NSString stringWithString:(NSString*)kABPersonPhoneMainLabel], - [NSString stringWithString:(NSString*)kABPersonPhoneHomeFAXLabel], - [NSString stringWithString:(NSString*)kABPersonPhoneWorkFAXLabel], nil]; - inhibUpdate = FALSE; + [NSString stringWithString:(NSString*)kABPersonPhoneMainLabel], nil]; headerController = [[UIContactDetailsHeader alloc] init]; footerController = [[UIContactDetailsFooter alloc] init]; - - addressBook = ABAddressBookCreate(); - ABAddressBookRegisterExternalChangeCallback(addressBook, sync_address_book, self); } - (id)init { @@ -92,10 +86,7 @@ return self; } -- (void)dealloc { - ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, self); - CFRelease(addressBook); - +- (void)dealloc { [labelArray release]; [dataCache release]; [headerController release]; @@ -159,90 +150,13 @@ } - (NSDictionary*)getLocalizedLabels { - NSMutableDictionary *dict = [[NSMutableDictionary alloc] initWithCapacity:[labelArray count]]; + OrderedDictionary *dict = [[OrderedDictionary alloc] initWithCapacity:[labelArray count]]; for(NSString *str in labelArray) { [dict setObject:[ContactDetailsTableViewController localizeLabel:str] forKey:str]; } return [dict autorelease]; } -static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { - ContactDetailsTableViewController* controller = (ContactDetailsTableViewController*)context; - //ABAddressBookRevert(addressBook); - if(!controller->inhibUpdate && ![controller isEditing]) { - [controller resetData]; - } -} - -- (void)resetData { - if(contact == NULL) - return; - - NSLog(@"Reset data to contact %p", contact); - ABAddressBookRevert(addressBook); - contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(contact)); - if(contact == NULL) { - [[footerController removeButton] sendActionsForControlEvents: UIControlEventTouchUpInside]; - return; - } - [self loadData]; -} - -- (void)removeContact { - if(contact == NULL) - return; - - // Remove contact from book - if(ABRecordGetRecordID(contact) != kABRecordInvalidID) { - NSError* error = NULL; - ABAddressBookRemoveRecord(addressBook, contact, (CFErrorRef*)&error); - if (error != NULL) { - NSLog(@"Remove contact %p: Fail(%@)", contact, [error localizedDescription]); - } else { - NSLog(@"Remove contact %p: Success!", contact); - } - contact = NULL; - - // Save address book - error = NULL; - inhibUpdate = TRUE; - ABAddressBookSave(addressBook, (CFErrorRef*)&error); - inhibUpdate = FALSE; - if (error != NULL) { - NSLog(@"Save AddressBook: Fail(%@)", [error localizedDescription]); - } else { - NSLog(@"Save AddressBook: Success!"); - } - } -} - -- (void)saveData { - if(contact == NULL) - return; - - // Add contact to book - NSError* error = NULL; - if(ABRecordGetRecordID(contact) == kABRecordInvalidID) { - ABAddressBookAddRecord(addressBook, contact, (CFErrorRef*)&error); - if (error != NULL) { - NSLog(@"Add contact %p: Fail(%@)", contact, [error localizedDescription]); - } else { - NSLog(@"Add contact %p: Success!", contact); - } - } - - // Save address book - error = NULL; - inhibUpdate = TRUE; - ABAddressBookSave(addressBook, (CFErrorRef*)&error); - inhibUpdate = FALSE; - if (error != NULL) { - NSLog(@"Save AddressBook: Fail(%@)", [error localizedDescription]); - } else { - NSLog(@"Save AddressBook: Success!"); - } -} - - (void)loadData { [dataCache removeAllObjects]; @@ -341,10 +255,12 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf CFRelease(lMap); } - NSArray *tagInsertIndexPath = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:count inSection:section]]; - if (animated) { - [tableview insertRowsAtIndexPaths:tagInsertIndexPath withRowAnimation:UITableViewRowAnimationFade]; + // Update accessory + if (count > 0) { + [tableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:count -1 inSection:section]] withRowAnimation:FALSE]; + } + [tableview insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:count inSection:section]] withRowAnimation:UITableViewRowAnimationFade]; } } @@ -405,14 +321,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf #pragma mark - Property Functions -- (void)setContactID:(ABRecordID)acontactID { - self->contactID = acontactID; - contact = ABAddressBookGetPersonWithRecordID(addressBook, contactID); - [self loadData]; -} - -- (void)newContact { - contact = ABPersonCreate(); +- (void)setContact:(ABRecordRef)acontact { + self->contact = acontact; [self loadData]; } @@ -561,7 +471,6 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf if (editingStyle == UITableViewCellEditingStyleInsert) { [self.tableView beginUpdates]; [self addEntry:self.tableView section:[indexPath section] animated:TRUE]; - [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:FALSE]; [self.tableView endUpdates]; } else if (editingStyle == UITableViewCellEditingStyleDelete) { [self.tableView beginUpdates]; @@ -666,28 +575,30 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)modalViewDismiss:(UIModalViewController*)controller value:(id)value { [[[self view]superview] removeModalView:[contactDetailsLabelViewController view]]; contactDetailsLabelViewController = nil; - NSMutableArray *sectionDict = [dataCache objectAtIndex:[editingIndexPath section]]; - Entry *entry = [sectionDict objectAtIndex:[editingIndexPath row]]; - if([editingIndexPath section] == 0) { - ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); - ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); - CFRelease(lcMap); - int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); - ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)((NSString*)value), index); - ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); - CFRelease(lMap); - } else if([editingIndexPath section] == 1) { - ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); - ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); - CFRelease(lcMap); - int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); - ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)((NSString*)value), index); - ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); - CFRelease(lMap); + if(value != nil) { + NSMutableArray *sectionDict = [dataCache objectAtIndex:[editingIndexPath section]]; + Entry *entry = [sectionDict objectAtIndex:[editingIndexPath row]]; + if([editingIndexPath section] == 0) { + ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); + ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)((NSString*)value), index); + ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); + CFRelease(lMap); + } else if([editingIndexPath section] == 1) { + ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); + CFRelease(lcMap); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)((NSString*)value), index); + ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); + CFRelease(lMap); + } + [self.tableView beginUpdates]; + [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject: editingIndexPath] withRowAnimation:FALSE]; + [self.tableView endUpdates]; } - [self.tableView beginUpdates]; - [self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject: editingIndexPath] withRowAnimation:FALSE]; - [self.tableView endUpdates]; [editingIndexPath release]; editingIndexPath = nil; } diff --git a/Classes/ContactDetailsViewController.h b/Classes/ContactDetailsViewController.h index 5f4a8e454..16e96f59e 100644 --- a/Classes/ContactDetailsViewController.h +++ b/Classes/ContactDetailsViewController.h @@ -30,6 +30,9 @@ UIToggleButton *editButton; UIButton *backButton; UIButton *cancelButton; + + ABAddressBookRef addressBook; + BOOL inhibUpdate; } @property (nonatomic, assign) ABRecordRef contact; diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 1b9228faf..21afc824c 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -33,11 +33,17 @@ - (id)init { self = [super initWithNibName:@"ContactDetailsViewController" bundle:[NSBundle mainBundle]]; + if(self != nil) { + inhibUpdate = FALSE; + addressBook = ABAddressBookCreate(); + ABAddressBookRegisterExternalChangeCallback(addressBook, sync_address_book, self); + } return self; } - (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; + ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, self); + CFRelease(addressBook); [tableController release]; [editButton release]; @@ -50,39 +56,120 @@ #pragma mark - +- (void)resetData { + NSLog(@"Reset data to contact %p", contact); + ABRecordID recordID = ABRecordGetRecordID(contact); + ABAddressBookRevert(addressBook); + contact = ABAddressBookGetPersonWithRecordID(addressBook, recordID); + if(contact == NULL) { + [[PhoneMainView instance] popView]; + return; + } + [tableController setContact:contact]; +} + +static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { + ContactDetailsViewController* controller = (ContactDetailsViewController*)context; + if(!controller->inhibUpdate && ![[controller tableController] isEditing]) { + [controller resetData]; + } +} + +- (void)removeContact { + if(contact == NULL) { + [[PhoneMainView instance] popView]; + return; + } + + // Remove contact from book + if(ABRecordGetRecordID(contact) != kABRecordInvalidID) { + NSError* error = NULL; + ABAddressBookRemoveRecord(addressBook, contact, (CFErrorRef*)&error); + if (error != NULL) { + NSLog(@"Remove contact %p: Fail(%@)", contact, [error localizedDescription]); + } else { + NSLog(@"Remove contact %p: Success!", contact); + } + contact = NULL; + + // Save address book + error = NULL; + inhibUpdate = TRUE; + ABAddressBookSave(addressBook, (CFErrorRef*)&error); + inhibUpdate = FALSE; + if (error != NULL) { + NSLog(@"Save AddressBook: Fail(%@)", [error localizedDescription]); + } else { + NSLog(@"Save AddressBook: Success!"); + } + } +} + +- (void)saveData { + if(contact == NULL) { + [[PhoneMainView instance] popView]; + return; + } + + // Add contact to book + NSError* error = NULL; + if(ABRecordGetRecordID(contact) == kABRecordInvalidID) { + ABAddressBookAddRecord(addressBook, contact, (CFErrorRef*)&error); + if (error != NULL) { + NSLog(@"Add contact %p: Fail(%@)", contact, [error localizedDescription]); + } else { + NSLog(@"Add contact %p: Success!", contact); + } + } + + // Save address book + error = NULL; + inhibUpdate = TRUE; + ABAddressBookSave(addressBook, (CFErrorRef*)&error); + inhibUpdate = FALSE; + if (error != NULL) { + NSLog(@"Save AddressBook: Fail(%@)", [error localizedDescription]); + } else { + NSLog(@"Save AddressBook: Success!"); + } +} + - (void)newContact { - [tableController newContact]; + self->contact = ABPersonCreate(); + [tableController setContact:self->contact]; [self enableEdit:FALSE]; [[tableController tableView] reloadData]; } - (void)newContact:(NSString*)address { - [tableController newContact]; + self->contact = ABPersonCreate(); + [tableController setContact:self->contact]; [tableController addSipField:address]; [self enableEdit:FALSE]; [[tableController tableView] reloadData]; } - (void)editContact:(ABRecordRef)acontact { - self->contact = acontact; - [tableController setContactID:ABRecordGetRecordID(acontact)]; + self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); + [tableController setContact:self->contact]; [self enableEdit:FALSE]; [[tableController tableView] reloadData]; } - (void)editContact:(ABRecordRef)acontact address:(NSString*)address { - self->contact = acontact; - [tableController setContactID:ABRecordGetRecordID(acontact)]; + self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); + [tableController setContact:self->contact]; [tableController addSipField:address]; [self enableEdit:FALSE]; [[tableController tableView] reloadData]; } + #pragma mark - Property Functions - (void)setContact:(ABRecordRef)acontact { - self->contact = acontact; - [tableController setContactID:ABRecordGetRecordID(acontact)]; + self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); + [tableController setContact:self->contact]; [self disableEdit:FALSE]; } @@ -115,7 +202,7 @@ [tableController viewWillDisappear:NO]; } [self disableEdit:FALSE]; - [tableController resetData]; + [self resetData]; } - (void)viewWillAppear:(BOOL)animated { @@ -175,11 +262,8 @@ #pragma mark - Action Functions - (IBAction)onCancelClick:(id)event { - [self disableEdit:FALSE]; - [tableController resetData]; - if([tableController contactID] == kABRecordInvalidID) { - [[PhoneMainView instance] popView]; - } + [self disableEdit:TRUE]; + [self resetData]; } - (IBAction)onBackClick:(id)event { @@ -189,7 +273,7 @@ - (IBAction)onEditClick:(id)event { if([tableController isEditing]) { [self disableEdit:TRUE]; - [tableController saveData]; + [self saveData]; } else { [self enableEdit:TRUE]; } @@ -197,7 +281,7 @@ - (void)onRemove:(id)event { [self disableEdit:FALSE]; - [tableController removeContact]; + [self removeContact]; [[PhoneMainView instance] popView]; } From d513dac5e196ad893399b3fc672c72bbd31da679 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 16 Jul 2012 11:05:38 +0200 Subject: [PATCH 045/397] Improve Contact stuff --- Classes/ContactDetailsTableViewController.m | 173 +++++++++++-------- Classes/ContactDetailsViewController.m | 4 + Classes/LinphoneUI/UIEditableTableViewCell.m | 19 +- 3 files changed, 116 insertions(+), 80 deletions(-) diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index fc3b18528..2f58bab51 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -105,7 +105,6 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [self loadData]; } - (void)viewWillDisappear:(BOOL)animated { @@ -164,7 +163,6 @@ return; NSLog(@"Load data from contact %p", contact); - // Phone numbers { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); @@ -189,14 +187,20 @@ for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { ABMultiValueIdentifier identifier = ABMultiValueGetIdentifierAtIndex(lMap, i); CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); + BOOL add = false; if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { if(CFStringCompare((CFStringRef)CONTACT_SIP_FIELD, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { - Entry *entry = [[Entry alloc] initWithData:identifier]; - [subArray addObject: entry]; - [entry release]; + add = true; } - CFRelease(lDict); + } else { + add = true; } + if(add) { + Entry *entry = [[Entry alloc] initWithData:identifier]; + [subArray addObject: entry]; + [entry release]; + } + CFRelease(lDict); } CFRelease(lMap); } @@ -213,6 +217,8 @@ - (void)addEntry:(UITableView*)tableview section:(NSInteger)section animated:(BOOL)animated value:(NSString *)value{ NSMutableArray *sectionArray = [dataCache objectAtIndex:section]; NSUInteger count = [sectionArray count]; + NSError* error = NULL; + bool added = TRUE; if(section == 0) { ABMultiValueIdentifier identifier; ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); @@ -224,12 +230,18 @@ lMap = ABMultiValueCreateMutable(kABStringPropertyType); } CFStringRef label = (CFStringRef)[labelArray objectAtIndex:0]; - ABMultiValueAddValueAndLabel(lMap, [value copy], label, &identifier); - Entry *entry = [[Entry alloc] initWithData:identifier]; - [sectionArray addObject:entry]; - [entry release]; + if(!ABMultiValueAddValueAndLabel(lMap, [value copy], label, &identifier)) { + added = false; + } - ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); + if(added && ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, (CFErrorRef*)&error)) { + Entry *entry = [[Entry alloc] initWithData:identifier]; + [sectionArray addObject:entry]; + [entry release]; + } else { + added = false; + NSLog(@"Can't add entry: %@", [error localizedDescription]); + } CFRelease(lMap); } else if(section == 1) { ABMultiValueIdentifier identifier; @@ -241,21 +253,27 @@ } else { lMap = ABMultiValueCreateMutable(kABDictionaryPropertyType); } - CFStringRef keys[] = {kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; - CFTypeRef values[] = {[value copy], CONTACT_SIP_FIELD}; - CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); + CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey }; + CFTypeRef values[] = { [value copy], CONTACT_SIP_FIELD }; + CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 1, NULL, NULL); CFStringRef label = (CFStringRef)[labelArray objectAtIndex:0]; - ABMultiValueAddValueAndLabel(lMap, lDict, label, &identifier); + if(!ABMultiValueAddValueAndLabel(lMap, lDict, label, &identifier)) { + added = false; + } CFRelease(lDict); - Entry *entry = [[Entry alloc] initWithData:identifier]; - [sectionArray addObject:entry]; - [entry release]; - ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); + if(added && ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, (CFErrorRef*)&error)) { + Entry *entry = [[Entry alloc] initWithData:identifier]; + [sectionArray addObject:entry]; + [entry release]; + } else { + added = false; + NSLog(@"Can't add entry: %@", [error localizedDescription]); + } CFRelease(lMap); } - if (animated) { + if (added && animated) { // Update accessory if (count > 0) { [tableview reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:count -1 inSection:section]] withRowAnimation:FALSE]; @@ -267,26 +285,28 @@ - (void)removeEmptyEntry:(UITableView*)tableview section:(NSInteger)section animated:(BOOL)animated { NSMutableArray *sectionDict = [dataCache objectAtIndex: section]; int row = [sectionDict count] - 1; - Entry *entry = [sectionDict objectAtIndex:row]; - if(section == 0) { - ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); - int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); - CFStringRef valueRef = ABMultiValueCopyValueAtIndex(lMap, index); - if(![(NSString*) valueRef length]) { - [self removeEntry:tableview path:[NSIndexPath indexPathForRow:row inSection:section] animated:animated]; + if(row >= 0) { + Entry *entry = [sectionDict objectAtIndex:row]; + if(section == 0) { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + CFStringRef valueRef = ABMultiValueCopyValueAtIndex(lMap, index); + if(![(NSString*) valueRef length]) { + [self removeEntry:tableview path:[NSIndexPath indexPathForRow:row inSection:section] animated:animated]; + } + CFRelease(valueRef); + CFRelease(lMap); + } else if(section == 1) { + ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); + int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); + CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, index); + CFStringRef valueRef = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); + if(![(NSString*) valueRef length]) { + [self removeEntry:tableview path:[NSIndexPath indexPathForRow:row inSection:section] animated:animated]; + } + CFRelease(lDict); + CFRelease(lMap); } - CFRelease(valueRef); - CFRelease(lMap); - } else if(section == 1) { - ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); - int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); - CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, index); - CFStringRef valueRef = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); - if(![(NSString*) valueRef length]) { - [self removeEntry:tableview path:[NSIndexPath indexPathForRow:row inSection:section] animated:animated]; - } - CFRelease(lDict); - CFRelease(lMap); } } @@ -359,8 +379,8 @@ NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; Entry *entry = [sectionDict objectAtIndex:[indexPath row]]; - NSString *value = nil; - NSString *label = nil; + NSString *value = @""; + NSString *label = @""; if([indexPath section] == 0) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); @@ -402,7 +422,6 @@ [cell.detailTextField setKeyboardType:UIKeyboardTypeASCIICapable]; [cell.detailTextField setPlaceholder:@"SIP address"]; } - return cell; } @@ -416,8 +435,10 @@ ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef valueRef = ABMultiValueCopyValueAtIndex(lMap, index); - dest = [ContactDetailsTableViewController localizeLabel:(NSString*) valueRef]; - CFRelease(valueRef); + if(valueRef != NULL) { + dest = [ContactDetailsTableViewController localizeLabel:(NSString*) valueRef]; + CFRelease(valueRef); + } CFRelease(lMap); } else if([indexPath section] == 1) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); @@ -428,46 +449,53 @@ CFRelease(lDict); CFRelease(lMap); } - if(![dest hasPrefix:@"sip:"]) - dest = [NSString stringWithFormat:@"sip:%@", dest]; - CFStringRef lDisplayName = ABRecordCopyCompositeName(contact); - NSString *displayName = [NSString stringWithString:(NSString*) lDisplayName]; - CFRelease(lDisplayName); - - // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: dest, displayName, nil] autorelease] - , @"call:displayName:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; + if(dest != nil) { + CFStringRef lDisplayName = ABRecordCopyCompositeName(contact); + NSString *displayName = [NSString stringWithString:(NSString*) lDisplayName]; + CFRelease(lDisplayName); + + // Go to dialer view + NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + [[[NSArray alloc] initWithObjects: dest, displayName, nil] autorelease] + , @"call:displayName:", + nil] autorelease]; + [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; + } } else { - NSString *key; + NSString *key = nil; if([indexPath section] == 0) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); - key = [NSString stringWithString:(NSString*) labelRef]; - CFRelease(labelRef); + if(labelRef != NULL) { + key = [NSString stringWithString:(NSString*) labelRef]; + CFRelease(labelRef); + } CFRelease(lMap); } else if([indexPath section] == 1) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); - key = [NSString stringWithString:(NSString*) labelRef]; - CFRelease(labelRef); + if(labelRef != NULL) { + key = [NSString stringWithString:(NSString*) labelRef]; + CFRelease(labelRef); + } CFRelease(lMap); } - contactDetailsLabelViewController = [[ContactDetailsLabelViewController alloc] initWithNibName:@"ContactDetailsLabelViewController" - bundle:[NSBundle mainBundle]]; - [contactDetailsLabelViewController setSelectedData:key]; - [contactDetailsLabelViewController setDataList:[self getLocalizedLabels]]; - [contactDetailsLabelViewController setModalDelegate:self]; - editingIndexPath = [indexPath copy]; - [[[self view] superview] addModalView:[contactDetailsLabelViewController view]]; + if(key != nil) { + contactDetailsLabelViewController = [[ContactDetailsLabelViewController alloc] initWithNibName:@"ContactDetailsLabelViewController" + bundle:[NSBundle mainBundle]]; + [contactDetailsLabelViewController setSelectedData:key]; + [contactDetailsLabelViewController setDataList:[self getLocalizedLabels]]; + [contactDetailsLabelViewController setModalDelegate:self]; + editingIndexPath = [indexPath copy]; + [[[self view] superview] addModalView:[contactDetailsLabelViewController view]]; + } } } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + [ContactDetailsTableViewController findAndResignFirstResponder:[self tableView]]; if (editingStyle == UITableViewCellEditingStyleInsert) { [self.tableView beginUpdates]; [self addEntry:self.tableView section:[indexPath section] animated:TRUE]; @@ -482,14 +510,14 @@ #pragma mark - UITableViewDelegate Functions -- (void)setEditing:(BOOL)editing animated:(BOOL)animated { - [super setEditing:editing animated:animated]; - +- (void)setEditing:(BOOL)editing animated:(BOOL)animated { // Resign keyboard if(!editing) { [ContactDetailsTableViewController findAndResignFirstResponder:[self tableView]]; } + [super setEditing:editing animated:animated]; + if(animated) { [self.tableView beginUpdates]; } @@ -505,8 +533,7 @@ if(animated) { [self.tableView endUpdates]; } - - + [headerController setEditing:editing animated:animated]; } diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 21afc824c..3d664932e 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -57,6 +57,10 @@ #pragma mark - - (void)resetData { + if(contact == NULL) { + return; + } + NSLog(@"Reset data to contact %p", contact); ABRecordID recordID = ABRecordGetRecordID(contact); ABAddressBookRevert(addressBook); diff --git a/Classes/LinphoneUI/UIEditableTableViewCell.m b/Classes/LinphoneUI/UIEditableTableViewCell.m index bf263a1c3..eabd28611 100644 --- a/Classes/LinphoneUI/UIEditableTableViewCell.m +++ b/Classes/LinphoneUI/UIEditableTableViewCell.m @@ -55,14 +55,19 @@ - (void)layoutSubviews { [super layoutSubviews]; - CGRect frame; - frame.origin.x = [self.textLabel frame].size.width + 15; - frame.origin.y = 0; - frame.size.height = 44; - + CGRect fieldframe; + fieldframe.origin.x = 15; + fieldframe.origin.y = 0; + fieldframe.size.height = 44; + if([[self.textLabel text] length] != 0) + fieldframe.origin.x += [self.textLabel frame].size.width; CGRect superframe = [[self.detailTextField superview]frame]; - frame.size.width = superframe.size.width - frame.origin.x; - [self.detailTextField setFrame:frame]; + fieldframe.size.width = superframe.size.width - fieldframe.origin.x; + [self.detailTextField setFrame:fieldframe]; + + CGRect labelFrame = [self.detailTextLabel frame]; + labelFrame.origin.x = fieldframe.origin.x; + [self.detailTextLabel setFrame:labelFrame]; } From 57ce8496763c15889b18636b88c8d9ceae95fa61 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 16 Jul 2012 12:05:43 +0200 Subject: [PATCH 046/397] Improve AbstractCall --- Classes/ChatTableViewController.m | 12 ++-- Classes/ContactDetailsTableViewController.m | 9 ++- Classes/ContactsTableViewController.m | 14 ++-- Classes/ContactsViewController.m | 14 ++-- Classes/DialerViewController.m | 9 +-- Classes/HistoryDetailsViewController.h | 5 +- Classes/HistoryDetailsViewController.m | 18 +++++ Classes/HistoryTableViewController.m | 9 ++- Classes/HistoryViewController.m | 1 + Classes/LinphoneUI/UICallBar.m | 26 +++---- Classes/LinphoneUI/UIChatCell.m | 12 ++-- Classes/LinphoneUI/UIHistoryCell.m | 16 ++--- Classes/LinphoneUI/UIMainBar.m | 2 +- Classes/PhoneMainView.h | 8 ++- Classes/PhoneMainView.m | 48 +++++++------ Classes/Utils/AbstractCall.h | 10 ++- Classes/Utils/AbstractCall.m | 79 ++++++++++++++++----- 17 files changed, 174 insertions(+), 118 deletions(-) diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index 1bdd7e8a3..47ea4ebc5 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -81,12 +81,12 @@ [tableView deselectRowAtIndexPath:indexPath animated:NO]; ChatModel *chat = [data objectAtIndex:[indexPath row]]; - // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: [chat remoteContact], nil] autorelease] - , @"setRemoteContact:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_ChatRoom dict:dict push:TRUE]; + // Go to ChatRoom view + [[PhoneMainView instance] changeView:PhoneView_ChatRoom + calls:[NSArray arrayWithObjects: + [AbstractCall abstractCall:@"setRemoteContact:", [chat remoteContact]], + nil] + push:TRUE]; } @end diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 2f58bab51..d8cdd335e 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -455,11 +455,10 @@ CFRelease(lDisplayName); // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: dest, displayName, nil] autorelease] - , @"call:displayName:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; + [[PhoneMainView instance] changeView:PhoneView_Dialer + calls:[NSArray arrayWithObjects: + [AbstractCall abstractCall:@"call:displayName:", dest, displayName], + nil]]; } } else { NSString *key = nil; diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index a40e80853..5690a34b7 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -193,20 +193,14 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]]; // Go to Contact details view - NSDictionary * dict; + NSArray * calls; if(tempAddress == nil) { - dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: lPerson, nil] autorelease] - , @"setContact:", - nil] autorelease]; + calls = [NSArray arrayWithObject: [AbstractCall abstractCall:@"setContact:", lPerson]]; } else { - dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: lPerson, tempAddress, nil] autorelease] - , @"editContact:address:", - nil] autorelease]; + calls = [NSArray arrayWithObject: [AbstractCall abstractCall:@"editContact:address:", lPerson, tempAddress]]; [self setTempAddress:nil]; } - [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; + [[PhoneMainView instance] changeView:PhoneView_ContactDetails calls:calls push:TRUE]; } @end diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 17f8b6efb..3ce634fe0 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -150,20 +150,14 @@ typedef enum _HistoryView { - (IBAction)onAddContactClick:(id)event { // Go to Contact details view - NSDictionary * dict; + NSArray * calls; if([tableController tempAddress] == nil) { - dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: nil] autorelease] - , @"newContact", - nil] autorelease]; + calls = [NSArray arrayWithObject: [AbstractCall abstractCall:@"newContact"]]; } else { - dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: [tableController tempAddress], nil] autorelease] - , @"newContact:", - nil] autorelease]; + calls = [NSArray arrayWithObject: [AbstractCall abstractCall:@"newContact:", [tableController tempAddress]]]; [tableController setTempAddress:nil]; } - [[PhoneMainView instance] changeView:PhoneView_ContactDetails dict:dict push:TRUE]; + [[PhoneMainView instance] changeView:PhoneView_ContactDetails calls:calls push:TRUE]; } @end diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index dd5370a0a..35c986982 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -214,12 +214,9 @@ #pragma mark - Action Functions - (IBAction)onAddContactClick: (id) event { - // Go to Contact details view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects:[addressField text], nil] autorelease] - , @"setAddress:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_Contacts dict:dict push:TRUE]; + [[PhoneMainView instance] changeView:PhoneView_Contacts + calls:[NSArray arrayWithObject:[AbstractCall abstractCall:@"setAddress:", [addressField text]]] + push:TRUE]; } - (IBAction)onBackClick: (id) event { diff --git a/Classes/HistoryDetailsViewController.h b/Classes/HistoryDetailsViewController.h index e31835684..61902b6f6 100644 --- a/Classes/HistoryDetailsViewController.h +++ b/Classes/HistoryDetailsViewController.h @@ -21,8 +21,9 @@ #import "linphonecore.h" #import +#import "UICompositeViewController.h" -@interface HistoryDetailsViewController : UIViewController { +@interface HistoryDetailsViewController : UIViewController { LinphoneCallLog *callLog; UIImageView *avatarImage; UILabel *addressLabel; @@ -46,6 +47,8 @@ @property (nonatomic, assign) LinphoneCallLog *callLog; +- (void)setCallLogValue:(NSValue*)vcallLog; + - (IBAction)onBackClick:(id)event; - (IBAction)onContactClick:(id)event; - (IBAction)onAddressClick:(id)event; diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index ccbabf51a..cdf42aada 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -52,8 +52,26 @@ } +#pragma mark - UICompositeViewDelegate Functions + ++ (UICompositeViewDescription*) compositeViewDescription { + UICompositeViewDescription *description = [UICompositeViewDescription alloc]; + description->content = @"HistoryDetailsViewController"; + description->tabBar = @"UIMainBar"; + description->tabBarEnabled = true; + description->stateBar = nil; + description->stateBarEnabled = false; + description->fullscreen = false; + return description; +} + + #pragma mark - Property Functions +- (void)setCallLogValue:(NSValue*)vcallLog { + [self setCallLog:[vcallLog pointerValue]]; +} + - (void)setCallLog:(LinphoneCallLog *)acallLog { self->callLog = acallLog; [self update]; diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index 4dff3398e..45a588252 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -140,11 +140,10 @@ NSString* dispName = [[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]]; // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: phoneNumber, dispName, nil] autorelease] - , @"call:displayName:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; + [[PhoneMainView instance] changeView:PhoneView_Dialer + calls:[NSArray arrayWithObjects: + [AbstractCall abstractCall:@"call:displayName:", phoneNumber, dispName], + nil]]; [phoneNumber release]; [dispName release]; diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index f5df61576..f1491fc4b 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -66,6 +66,7 @@ typedef enum _HistoryView { return description; } + #pragma mark - ViewController Functions - (void)viewWillAppear:(BOOL)animated { diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 42a9319c5..3bb67f760 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -365,26 +365,22 @@ - (IBAction)onOptionsTransferClick:(id)sender { [self hideOptions]; - // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: @"", nil] autorelease] - , @"setAddress:", - [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: TRUE], nil] autorelease] - , @"setTransferMode:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; + // Go to dialer view + [[PhoneMainView instance] changeView:PhoneView_Dialer + calls:[NSArray arrayWithObjects: + [AbstractCall abstractCall:@"setAddress:", @""], + [AbstractCall abstractCall:@"setTransferMode:", [NSNumber numberWithInt: TRUE]], + nil]]; } - (IBAction)onOptionsAddClick:(id)sender { [self hideOptions]; // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: @"", nil] autorelease] - , @"setAddress:", - [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: FALSE], nil] autorelease] - , @"setTransferMode:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_Dialer dict:dict]; + [[PhoneMainView instance] changeView:PhoneView_Dialer + calls:[NSArray arrayWithObjects: + [AbstractCall abstractCall:@"setAddress:", @""], + [AbstractCall abstractCall:@"setTransferMode:", [NSNumber numberWithInt: FALSE]], + nil]]; } - (IBAction)onOptionsClick:(id)sender { diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index 851aa24f8..c00994736 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -124,12 +124,12 @@ #pragma mark - Action Functions - (IBAction)onDetailsClick: (id) event { - // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: [chat remoteContact], nil] autorelease] - , @"setRemoteContact:", - nil] autorelease]; - [[PhoneMainView instance] changeView:PhoneView_ChatRoom dict:dict push:TRUE]; + // Go to Chat room view + [[PhoneMainView instance] changeView:PhoneView_ChatRoom + calls:[NSArray arrayWithObjects: + [AbstractCall abstractCall:@"setRemoteContact:", [chat remoteContact]], + nil] + push:TRUE]; } - (IBAction)onDeleteClick: (id) event { diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index acac6f940..a1944bf45 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -19,6 +19,7 @@ #import "UIHistoryCell.h" #import "LinphoneManager.h" +#import "PhoneMainView.h" @implementation UIHistoryCell @@ -28,8 +29,6 @@ @synthesize deleteButton; @synthesize detailsButton; -#define DETAILS_DISABLED - #pragma mark - Lifecycle Functions - (id)initWithIdentifier:(NSString*)identifier { @@ -69,7 +68,12 @@ - (IBAction)onDetails:(id) event { if(callLog != NULL) { - + // Go to History details view + [[PhoneMainView instance] changeView:PhoneView_HistoryDetails + calls:[NSArray arrayWithObjects: + [AbstractCall abstractCall:@"setCallLogValue:", [NSValue valueWithPointer: callLog]], + nil] + push:TRUE]; } } @@ -120,11 +124,7 @@ [deleteButton setAlpha:1.0f]; [detailsButton setAlpha:0.0f]; } else { -#ifdef DETAILS_DISABLED - [detailsButton setAlpha:0.0f]; -#else - [detailsButtonsetAlpha:1.0f]; -#endif + [detailsButton setAlpha:1.0f]; [deleteButton setAlpha:0.0f]; } if(animated) { diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index f7cd3c63e..1cfb7d105 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -155,7 +155,7 @@ } // Update buttons - if(view == PhoneView_History) { + if(view == PhoneView_History || view == PhoneView_HistoryDetails) { historyButton.selected = TRUE; } else { historyButton.selected = FALSE; diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 212884dea..6b887e1b1 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -23,12 +23,14 @@ #import "CallDelegate.h" #import "UICompositeViewController.h" #import "UIModalViewController.h" +#import "AbstractCall.h" typedef enum _PhoneView { PhoneView_Wizard, PhoneView_FirstLogin, PhoneView_Dialer, PhoneView_History, + PhoneView_HistoryDetails, PhoneView_Settings, PhoneView_Chat, PhoneView_ChatRoom, @@ -58,10 +60,10 @@ typedef enum _PhoneView { - (void)changeView:(PhoneView)view; - (void)changeView:(PhoneView)view push:(BOOL)push; -- (void)changeView:(PhoneView)view dict:(NSDictionary *)dict; -- (void)changeView:(PhoneView)view dict:(NSDictionary *)dict push:(BOOL)push; +- (void)changeView:(PhoneView)view calls:(NSArray *)calls; +- (void)changeView:(PhoneView)view calls:(NSArray *)calls push:(BOOL)push; - (void)popView; -- (void)popView:(NSDictionary *)dict; +- (void)popView:(NSArray *)calls; - (void)showTabBar:(BOOL)show; - (void)fullScreen:(BOOL)enabled; - (PhoneView)currentView; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 0eab53ed0..d8b83fbac 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -28,14 +28,14 @@ #import "ChatViewController.h" #import "DialerViewController.h" #import "ContactsViewController.h" +#import "ContactDetailsViewController.h" #import "HistoryViewController.h" +#import "HistoryDetailsViewController.h" #import "InCallViewController.h" #import "SettingsViewController.h" #import "FirstLoginViewController.h" #import "WizardViewController.h" -#import "ContactDetailsViewController.h" -#import "AbstractCall.h" #import "UIView+ModalStack.h" static PhoneMainView* phoneMainViewInstance=nil; @@ -111,12 +111,13 @@ static PhoneMainView* phoneMainViewInstance=nil; [viewDescriptions setObject:[ChatViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Chat]]; [viewDescriptions setObject:[DialerViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; [viewDescriptions setObject:[ContactsViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Contacts]]; + [viewDescriptions setObject:[ContactDetailsViewController compositeViewDescription] forKey:[NSNumber numberWithInt:PhoneView_ContactDetails]]; [viewDescriptions setObject:[HistoryViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_History]]; + [viewDescriptions setObject:[HistoryDetailsViewController compositeViewDescription] forKey:[NSNumber numberWithInt:PhoneView_HistoryDetails]]; [viewDescriptions setObject:[InCallViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_InCall]]; [viewDescriptions setObject:[SettingsViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Settings]]; [viewDescriptions setObject:[FirstLoginViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_FirstLogin]]; [viewDescriptions setObject:[WizardViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Wizard]]; - [viewDescriptions setObject:[ContactDetailsViewController compositeViewDescription] forKey:[NSNumber numberWithInt:PhoneView_ContactDetails]]; } - (void)viewWillAppear:(BOOL)animated { @@ -235,13 +236,11 @@ static PhoneMainView* phoneMainViewInstance=nil; [self dismissIncomingCall:call]; if (canHideInCallView) { // Go to dialer view - NSDictionary *dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [[[NSArray alloc] initWithObjects: @"", nil] autorelease] - , @"setAddress:", - [[[NSArray alloc] initWithObjects: [NSNumber numberWithInt: FALSE], nil] autorelease] - , @"setTransferMode:", - nil] autorelease]; - [self changeView:PhoneView_Dialer dict:dict]; + [self changeView:PhoneView_Dialer + calls:[NSArray arrayWithObjects: + [AbstractCall abstractCall:@"setAddress:", @""], + [AbstractCall abstractCall:@"setTransferMode:", [NSNumber numberWithInt: FALSE]], + nil]]; } else { [self changeView:PhoneView_InCall]; } @@ -283,7 +282,7 @@ static PhoneMainView* phoneMainViewInstance=nil; + (CATransition*)getTransition:(PhoneView)old new:(PhoneView)new { bool left = false; - if(old == PhoneView_Chat) { + if(old == PhoneView_Chat || old == PhoneView_ChatRoom) { if(new == PhoneView_Contacts || new == PhoneView_Dialer || new == PhoneView_Settings || @@ -301,7 +300,7 @@ static PhoneMainView* phoneMainViewInstance=nil; new == PhoneView_History) { left = true; } - } else if(old == PhoneView_Contacts) { + } else if(old == PhoneView_Contacts || old == PhoneView_ContactDetails) { if(new == PhoneView_History) { left = true; } @@ -327,27 +326,27 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (void)changeView:(PhoneView)view { - [self changeView:view dict:nil push:FALSE]; + [self changeView:view calls:nil push:FALSE]; } -- (void)changeView:(PhoneView)view dict:(NSDictionary *)dict { - [self changeView:view dict:dict push:FALSE]; +- (void)changeView:(PhoneView)view calls:(NSArray *)dict { + [self changeView:view calls:dict push:FALSE]; } - (void)changeView:(PhoneView)view push:(BOOL)push { - [self changeView:view dict:nil push:push]; + [self changeView:view calls:nil push:push]; } -- (void)changeView:(PhoneView)view dict:(NSDictionary *)dict push:(BOOL)push { +- (void)changeView:(PhoneView)view calls:(NSArray *)calls push:(BOOL)push { if(push && currentView != -1) { [viewStack addObject:[NSNumber numberWithInt: currentView]]; } else { [viewStack removeAllObjects]; } - [self _changeView:view dict:dict transition:nil]; + [self _changeView:view calls:calls transition:nil]; } -- (void)_changeView:(PhoneView)view dict:(NSDictionary *)dict transition:(CATransition*)transition { +- (void)_changeView:(PhoneView)view calls:(NSArray *)calls transition:(CATransition*)transition { UICompositeViewDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; if(description == nil) return; @@ -361,8 +360,11 @@ static PhoneMainView* phoneMainViewInstance=nil; } // Call abstractCall - if(dict != nil) - [AbstractCall call:[mainViewController getCurrentViewController] dict:dict]; + if(calls != nil) { + for(AbstractCall *call in calls) { + [call call:[mainViewController getCurrentViewController]]; + } + } NSDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithInt:currentView] forKey:@"view"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; @@ -372,11 +374,11 @@ static PhoneMainView* phoneMainViewInstance=nil; [self popView:nil]; } -- (void)popView:(NSDictionary *)dict { +- (void)popView:(NSArray *)calls { if([viewStack count] > 0) { PhoneView view = [[viewStack lastObject] intValue]; [viewStack removeLastObject]; - [self _changeView:view dict:dict transition:[PhoneMainView getBackwardTransition]]; + [self _changeView:view calls:calls transition:[PhoneMainView getBackwardTransition]]; } } diff --git a/Classes/Utils/AbstractCall.h b/Classes/Utils/AbstractCall.h index 170c022ab..0be1a57e0 100644 --- a/Classes/Utils/AbstractCall.h +++ b/Classes/Utils/AbstractCall.h @@ -19,9 +19,17 @@ #import + @interface AbstractCall : NSObject { + NSString *functionName; + NSArray *functionArgs; } -+ (void)call:(id) object dict:(NSDictionary *) dict; +@property (retain) NSString *functionName; +@property (retain) NSArray *functionArgs; + ++ (id)abstractCall:(NSString *)name, ...; +- (id)init:(NSString *)name, ...; +- (void)call:(id) object; @end diff --git a/Classes/Utils/AbstractCall.m b/Classes/Utils/AbstractCall.m index 8a76bd041..7c9f35780 100644 --- a/Classes/Utils/AbstractCall.m +++ b/Classes/Utils/AbstractCall.m @@ -21,26 +21,69 @@ @implementation AbstractCall -+ (void)call:(id) object dict:(NSDictionary *) dict { - for (NSString* identifier in dict) { - if([identifier characterAtIndex:([identifier length] -1)] == ':') { - NSArray *arguments = [dict objectForKey:identifier]; - SEL selector = NSSelectorFromString(identifier); - NSMethodSignature *signature = [object methodSignatureForSelector:selector]; - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; - [invocation setTarget:object]; - [invocation setSelector:selector]; - for(int i=0; i<[arguments count]; i++) - { - id arg = [arguments objectAtIndex:i]; - [invocation setArgument:&arg atIndex:i+2]; // The first two arguments are the hidden arguments self and _cmd +@synthesize functionName; +@synthesize functionArgs; + ++ (id)abstractCall:(NSString *)name, ... { + AbstractCall *object; + va_list args; + va_start(args, name); + object = [[AbstractCall alloc] init:name args:args]; + va_end(args); + return [object autorelease]; +} + +- (id)init:(NSString *)name, ... { + AbstractCall *object; + va_list args; + va_start(args, name); + object = [self init:name args:args]; + va_end(args); + return object; +} + +- (id)init:(NSString *)name args:(va_list)args { + self = [super init]; + if(self != nil) { + self->functionName = name; + NSMutableArray *array = [[NSMutableArray alloc] init]; + int count = 0; + for(int i = 0; i < [self->functionName length]; ++i) { + if([self->functionName characterAtIndex:i] == ':') { + ++count; } - [invocation invoke]; // Invoke the selector - } else { - NSDictionary *arguments = [dict objectForKey:identifier]; - id new_object = [object performSelector:NSSelectorFromString(identifier)]; - [AbstractCall call:new_object dict:arguments]; } + for (int i = 0; i < count; ++i) { + id arg = va_arg(args, id); + [array addObject:arg]; + } + self->functionArgs = array; + } + return self; +} + +- (void)dealloc { + [functionName release]; + [functionArgs release]; + + [super dealloc]; +} + +- (void)call:(id)object { + @try { + SEL selector = NSSelectorFromString(functionName); + NSMethodSignature *signature = [object methodSignatureForSelector:selector]; + NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; + [invocation setTarget:object]; + [invocation setSelector:selector]; + for(int i=0; i<[functionArgs count]; i++) + { + id arg = [functionArgs objectAtIndex:i]; + [invocation setArgument:&arg atIndex:i+2]; // The first two arguments are the hidden arguments self and _cmd + } + [invocation invoke]; // Invoke the selector + } @catch (NSException *exception) { + NSLog(@"Abstract Call: Can't call %@ with arguments %@ on %@", functionName, functionArgs, object); } } From 4e5f50edee1e2b850c6e25a136bf9db5fe398ac5 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 16 Jul 2012 17:52:03 +0200 Subject: [PATCH 047/397] Modify history & chat --- Classes/ChatRoomTableViewController.m | 14 +- Classes/ChatRoomViewController.m | 10 +- Classes/ChatTableViewController.h | 2 +- Classes/ChatTableViewController.m | 23 ++- Classes/ContactDetailsTableViewController.m | 19 +- Classes/ContactDetailsViewController.m | 7 + Classes/ContactsViewController.m | 1 - Classes/DialerViewController.m | 8 +- Classes/HistoryDetailsViewController.h | 5 +- Classes/HistoryDetailsViewController.m | 214 +++++++++++++++++++- Classes/HistoryDetailsViewController.xib | 108 ++++++++-- Classes/HistoryTableViewController.m | 21 +- Classes/IncomingCallViewController.m | 31 +-- Classes/LinphoneManager.h | 1 + Classes/LinphoneManager.m | 38 +--- Classes/LinphoneUI/UICallButton.m | 9 +- Classes/LinphoneUI/UICallCell.m | 40 ++-- Classes/LinphoneUI/UIChatCell.m | 11 +- Classes/LinphoneUI/UIHistoryCell.h | 4 +- Classes/LinphoneUI/UIHistoryCell.m | 46 ++++- Classes/LinphoneUI/UIHistoryCell.xib | 28 +-- Classes/LinphoneUI/UIMainBar.h | 4 + Classes/LinphoneUI/UIMainBar.m | 63 +++++- Classes/LinphoneUI/UIMainBar.xib | 113 ++++++++++- Classes/Model/ChatModel.h | 30 +-- Classes/Model/ChatModel.m | 98 ++++++--- Classes/PhoneMainView.m | 2 + Classes/Utils/FastAddressBook.h | 2 +- Classes/Utils/FastAddressBook.m | 50 +++-- Resources/database.sqlite | Bin 3072 -> 3072 bytes Resources/history_add_default.png | Bin 0 -> 4147 bytes Resources/history_add_over.png | Bin 0 -> 3780 bytes Resources/history_back_default.png | Bin 0 -> 4647 bytes Resources/history_back_over.png | Bin 0 -> 4368 bytes linphone.xcodeproj/project.pbxproj | 24 +++ 35 files changed, 806 insertions(+), 220 deletions(-) create mode 100644 Resources/history_add_default.png create mode 100644 Resources/history_add_over.png create mode 100644 Resources/history_back_default.png create mode 100644 Resources/history_back_over.png diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index 3dd075073..818776705 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -21,6 +21,8 @@ #import "UIChatRoomCell.h" #import "UIChatRoomHeader.h" +#import + @implementation ChatRoomTableViewController @synthesize remoteContact; @@ -33,13 +35,18 @@ [self.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 } +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + [TUNinePatchCache flushCache]; // Clear cache +} #pragma mark - -- (void)reloadData { +- (void)loadData { if(data != nil) [data release]; data = [[ChatModel listMessages:remoteContact] retain]; + [[self tableView] reloadData]; } @@ -47,7 +54,9 @@ - (void)setRemoteContact:(NSString *)aremoteContact { self->remoteContact = aremoteContact; - [[self tableView] reloadData]; + [ChatModel readConversation:aremoteContact]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; + [self loadData]; } #pragma mark - UITableViewDataSource Functions @@ -57,7 +66,6 @@ } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - [self reloadData]; return [data count]; } diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 4d34bbc4e..28c6b6632 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -108,10 +108,12 @@ - (void)textReceivedEvent:(NSNotification *)notif { //LinphoneChatRoom *room = [[[notif userInfo] objectForKey:@"room"] pointerValue]; LinphoneAddress *from = [[[notif userInfo] objectForKey:@"from"] pointerValue]; - //NSString *message = [[notif userInfo] objectForKey:@"message"]; - if([[NSString stringWithUTF8String:linphone_address_get_username(from)] - caseInsensitiveCompare:remoteContact] == NSOrderedSame) { - [[tableController tableView] reloadData]; + if(from != NULL) { + //NSString *message = [[notif userInfo] objectForKey:@"message"]; + if([[NSString stringWithUTF8String:linphone_address_get_username(from)] + caseInsensitiveCompare:remoteContact] == NSOrderedSame) { + [[tableController tableView] reloadData]; + } } } diff --git a/Classes/ChatTableViewController.h b/Classes/ChatTableViewController.h index 91965b7f6..9dfa4e7ef 100644 --- a/Classes/ChatTableViewController.h +++ b/Classes/ChatTableViewController.h @@ -21,7 +21,7 @@ @interface ChatTableViewController : UITableViewController { @private - NSArray *data; + NSMutableArray *data; } @end diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index 47ea4ebc5..da927f422 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -37,12 +37,21 @@ } +#pragma mark - ViewController Functions + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [self loadData]; +} + + #pragma mark - -- (void)reloadData { +- (void)loadData { if(data != nil) [data release]; data = [[ChatModel listConversations] retain]; + [[self tableView] reloadData]; } #pragma mark - UITableViewDataSource Functions @@ -52,7 +61,6 @@ } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - [self reloadData]; return [data count]; } @@ -89,4 +97,15 @@ push:TRUE]; } +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + if(editingStyle == UITableViewCellEditingStyleDelete) { + [tableView beginUpdates]; + ChatModel *chat = [data objectAtIndex:[indexPath row]]; + [data removeObjectAtIndex:[indexPath row]]; + [ChatModel removeConversation:[chat remoteContact]]; + [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; + [tableView endUpdates]; + } +} + @end diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index d8cdd335e..3264ba4a7 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -24,6 +24,7 @@ #import "UACellBackgroundView.h" #import "UILinphone.h" #import "OrderedDictionary.h" +#import "FastAddressBook.h" @interface Entry : NSObject @@ -450,15 +451,13 @@ CFRelease(lMap); } if(dest != nil) { - CFStringRef lDisplayName = ABRecordCopyCompositeName(contact); - NSString *displayName = [NSString stringWithString:(NSString*) lDisplayName]; - CFRelease(lDisplayName); + NSString *displayName = [FastAddressBook getContactDisplayName:contact]; // Go to dialer view [[PhoneMainView instance] changeView:PhoneView_Dialer calls:[NSArray arrayWithObjects: [AbstractCall abstractCall:@"call:displayName:", dest, displayName], - nil]]; + nil]]; } } else { NSString *key = nil; @@ -496,13 +495,13 @@ - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { [ContactDetailsTableViewController findAndResignFirstResponder:[self tableView]]; if (editingStyle == UITableViewCellEditingStyleInsert) { - [self.tableView beginUpdates]; - [self addEntry:self.tableView section:[indexPath section] animated:TRUE]; - [self.tableView endUpdates]; + [tableView beginUpdates]; + [self addEntry:tableView section:[indexPath section] animated:TRUE]; + [tableView endUpdates]; } else if (editingStyle == UITableViewCellEditingStyleDelete) { - [self.tableView beginUpdates]; - [self removeEntry:self.tableView path:indexPath animated:TRUE]; - [self.tableView endUpdates]; + [tableView beginUpdates]; + [self removeEntry:tableView path:indexPath animated:TRUE]; + [tableView endUpdates]; } } diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 3d664932e..3e376fdfd 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -58,6 +58,7 @@ - (void)resetData { if(contact == NULL) { + ABAddressBookRevert(addressBook); return; } @@ -139,6 +140,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } - (void)newContact { + NSLog(@"New contact"); self->contact = ABPersonCreate(); [tableController setContact:self->contact]; [self enableEdit:FALSE]; @@ -146,6 +148,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } - (void)newContact:(NSString*)address { + NSLog(@"New contact"); self->contact = ABPersonCreate(); [tableController setContact:self->contact]; [tableController addSipField:address]; @@ -154,6 +157,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } - (void)editContact:(ABRecordRef)acontact { + NSLog(@"Edit contact %p", acontact); self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; [self enableEdit:FALSE]; @@ -161,6 +165,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } - (void)editContact:(ABRecordRef)acontact address:(NSString*)address { + NSLog(@"Edit contact %p", acontact); self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; [tableController addSipField:address]; @@ -172,6 +177,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf #pragma mark - Property Functions - (void)setContact:(ABRecordRef)acontact { + NSLog(@"set contact %p", acontact); self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; [self disableEdit:FALSE]; @@ -206,6 +212,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf [tableController viewWillDisappear:NO]; } [self disableEdit:FALSE]; + self->contact = NULL; [self resetData]; } diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 3ce634fe0..28bb9e252 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -122,7 +122,6 @@ typedef enum _HistoryView { - (void)changeView: (HistoryView) view { if(view == History_All) { - [tableController setSipFilter:FALSE]; allButton.selected = TRUE; } else { diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 35c986982..0630ca319 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -194,13 +194,19 @@ } - (void)call:(NSString*)address { - [self call:address displayName:nil]; + NSString *displayName = nil; + ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:address]; + if(contact) { + displayName = [FastAddressBook getContactDisplayName:contact]; + } + [self call:address displayName:displayName]; } - (void)call:(NSString*)address displayName:(NSString *)displayName { [[LinphoneManager instance] call:address displayName:displayName transfer:transferMode]; } + #pragma mark - UITextFieldDelegate Functions - (BOOL)textFieldShouldReturn:(UITextField *)textField { diff --git a/Classes/HistoryDetailsViewController.h b/Classes/HistoryDetailsViewController.h index 61902b6f6..c3e3b3e93 100644 --- a/Classes/HistoryDetailsViewController.h +++ b/Classes/HistoryDetailsViewController.h @@ -34,6 +34,8 @@ UILabel *typeLabel; UILabel *typeHeaderLabel; UIButton *addressButton; + UIButton *addContactButton; + ABRecordRef contact; } @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; @property (nonatomic, retain) IBOutlet UILabel *addressLabel; @@ -44,13 +46,14 @@ @property (nonatomic, retain) IBOutlet UILabel *typeLabel; @property (nonatomic, retain) IBOutlet UILabel *typeHeaderLabel; @property (nonatomic, retain) IBOutlet UIButton *addressButton; - +@property (nonatomic, retain) IBOutlet UIButton *addContactButton; @property (nonatomic, assign) LinphoneCallLog *callLog; - (void)setCallLogValue:(NSValue*)vcallLog; - (IBAction)onBackClick:(id)event; - (IBAction)onContactClick:(id)event; +- (IBAction)onAddContactClick:(id)event; - (IBAction)onAddressClick:(id)event; @end diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index cdf42aada..30b58ebd9 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -33,11 +33,13 @@ @synthesize typeLabel; @synthesize typeHeaderLabel; @synthesize addressButton; - +@synthesize addContactButton; #pragma mark - LifeCycle Functions - (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [avatarImage release]; [addressLabel release]; [dateLabel release]; @@ -47,8 +49,9 @@ [typeLabel release]; [typeHeaderLabel release]; [addressButton release]; + [addContactButton release]; - [super dealloc]; + [super dealloc]; } @@ -78,16 +81,168 @@ } +#pragma mark - ViewController Functions + +- (void)viewDidLoad { + [super viewDidLoad]; + [HistoryDetailsViewController adaptSize:dateHeaderLabel field:dateLabel]; + [HistoryDetailsViewController adaptSize:durationHeaderLabel field:durationLabel]; + [HistoryDetailsViewController adaptSize:typeHeaderLabel field:typeLabel]; + [addressButton.titleLabel setAdjustsFontSizeToFitWidth:TRUE]; // Auto shrink: IB lack! +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(update:) + name:@"LinphoneAddressBookUpdate" + object:nil]; + [self update]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneAddressBookUpdate" + object:nil]; +} + + #pragma mark - ++ (void)adaptSize:(UILabel*)label field:(UIView*)field { + // + // Adapt size + // + CGRect labelFrame = [label frame]; + CGRect fieldFrame = [field frame]; + + fieldFrame.origin.x -= labelFrame.size.width; + + // Compute firstName size + CGSize contraints; + contraints.height = [label frame].size.height; + contraints.width = ([field frame].size.width + [field frame].origin.x) - [label frame].origin.x; + CGSize firstNameSize = [[label text] sizeWithFont:[label font] constrainedToSize: contraints]; + labelFrame.size.width = firstNameSize.width; + + // Compute lastName size & position + fieldFrame.origin.x += labelFrame.size.width; + fieldFrame.size.width = (contraints.width + [label frame].origin.x) - fieldFrame.origin.x; + + [label setFrame: labelFrame]; + [field setFrame: fieldFrame]; +} + - (void)update { - // Set up the cell... - LinphoneAddress* partyToDisplay; + // Don't update if callLog is null + if(callLog==NULL) { + return; + } + + LinphoneAddress* addr; if (callLog->dir == LinphoneCallIncoming) { - partyToDisplay = callLog->from; + addr = callLog->from; } else { - partyToDisplay = callLog->to; + addr = callLog->to; } + + UIImage *image = nil; + NSString* address = nil; + if(addr != NULL) { + BOOL useLinphoneAddress = true; + // contact name + const char* lAddress = linphone_address_as_string_uri_only(addr); + if(lAddress) { + NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; + contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; + if(contact) { + image = [FastAddressBook getContactImage:contact thumbnail:false]; + address = [FastAddressBook getContactDisplayName:contact]; + useLinphoneAddress = false; + } + } + if(useLinphoneAddress) { + const char* lDisplayName = linphone_address_get_display_name(addr); + const char* lUserName = linphone_address_get_username(addr); + if (lDisplayName) + address = [NSString stringWithUTF8String:lDisplayName]; + else if(lUserName) + address = [NSString stringWithUTF8String:lUserName]; + } + } + + // Set Image + if(image == nil) { + image = [UIImage imageNamed:@"avatar_unknown.png"]; + } + [avatarImage setImage:image]; + + // Set Address + if(address == nil) { + address = @"Unknown"; + } + [addressLabel setText:address]; + + // Hide/Show add button + if(contact) { + [addContactButton setHidden:TRUE]; + } else { + [addContactButton setHidden:FALSE]; + } + + // State + NSMutableString *state = [NSMutableString string]; + if (callLog->dir == LinphoneCallIncoming) { + [state setString:@"Incoming call"]; + } else { + [state setString:@"Outgoing call"]; + } + switch (callLog->status) { + case LinphoneCallSuccess: + break; + case LinphoneCallAborted: + [state appendString:@" (Aborted)"]; + break; + case LinphoneCallMissed: + [state appendString:@" (Missed)"]; + break; + case LinphoneCallDeclined : + [state appendString:@" (Declined)"]; + break; + } + [typeLabel setText:state]; + + // Date + NSDate *startData = [NSDate dateWithTimeIntervalSince1970:callLog->start_date_time]; + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; + [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; + NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; + [dateFormatter setLocale:locale]; + [dateLabel setText:[dateFormatter stringFromDate:startData]]; + [locale release]; + [dateFormatter release]; + + // Duration + int duration = callLog->duration; + [durationLabel setText:[NSString stringWithFormat:@"%02i:%02i", (duration/60), duration - 60 * (duration / 60), nil]]; + + if (addr != NULL) { + // contact name + const char* lAddress = linphone_address_as_string_uri_only(addr); + if(lAddress != NULL) { + [addressButton setTitle:[NSString stringWithUTF8String:lAddress] forState:UIControlStateNormal]; + [addressButton setHidden:FALSE]; + } else { + [addressButton setHidden:TRUE]; + } + } else { + [addressButton setHidden:TRUE]; + } + } @@ -98,11 +253,54 @@ } - (IBAction)onContactClick:(id)event { - + if(contact) { + [[PhoneMainView instance] changeView:PhoneView_ContactDetails + calls:[NSArray arrayWithObject:[AbstractCall abstractCall:@"setContact:", contact]] + push:TRUE]; + } +} + +- (IBAction)onAddContactClick:(id)event { + [[PhoneMainView instance] changeView:PhoneView_Contacts + calls:[NSArray arrayWithObject:[AbstractCall abstractCall:@"setAddress:", [[addressButton titleLabel] text]]] + push:TRUE]; } - (IBAction)onAddressClick:(id)event { - + LinphoneAddress* addr; + if (callLog->dir == LinphoneCallIncoming) { + addr = callLog->from; + } else { + addr = callLog->to; + } + + const char* lAddress = linphone_address_as_string_uri_only(addr); + + NSString *displayName = nil; + if(contact != nil) { + displayName = [FastAddressBook getContactDisplayName:contact]; + } else { + const char* lDisplayName = linphone_address_get_display_name(addr); + const char* lUserName = linphone_address_get_username(addr); + if (lDisplayName) + displayName = [NSString stringWithUTF8String:lDisplayName]; + else if(lUserName) + displayName = [NSString stringWithUTF8String:lUserName]; + } + + if(displayName != nil) { + // Go to dialer view + [[PhoneMainView instance] changeView:PhoneView_Dialer + calls:[NSArray arrayWithObjects: + [AbstractCall abstractCall:@"call:displayName:", [NSString stringWithUTF8String:lAddress], displayName], + nil]]; + } else { + // Go to dialer view + [[PhoneMainView instance] changeView:PhoneView_Dialer + calls:[NSArray arrayWithObjects: + [AbstractCall abstractCall:@"call:", [NSString stringWithUTF8String:lAddress]], + nil]]; + } } @end diff --git a/Classes/HistoryDetailsViewController.xib b/Classes/HistoryDetailsViewController.xib index 206d6c9c4..ef9273c73 100644 --- a/Classes/HistoryDetailsViewController.xib +++ b/Classes/HistoryDetailsViewController.xib @@ -2,10 +2,10 @@ 1296 - 11D50 + 11E53 2182 - 1138.32 - 568.00 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -41,13 +41,28 @@ 290 + + + 292 + {320, 58} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + contact_bar_background.png + + 292 {160, 58} - + _NS:9 NO @@ -63,11 +78,11 @@ NSImage - contact_back_over.png + history_back_over.png NSImage - contact_back_default.png + history_back_default.png 2 @@ -79,7 +94,7 @@ 16 - + 292 {{160, 0}, {160, 58}} @@ -87,18 +102,31 @@ _NS:9 - NO - IBCocoaTouchFramework - - NSImage - contact_bar_background.png + NO + + Add contact + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + history_add_over.png + + + NSImage + history_add_default.png + + + {320, 58} - + _NS:9 3 @@ -389,13 +417,17 @@ {{33, 273}, {255, 50}} - _NS:9 NO IBCocoaTouchFramework 0 0 NO + NO + 10 + 10 + 10 + 10 0102030405 @@ -509,6 +541,14 @@ 49 + + + addContactButton + + + + 52 + onBackClick: @@ -536,6 +576,15 @@ 40 + + + onAddContactClick: + + + 7 + + 53 + @@ -573,8 +622,9 @@ 6 - + + navigationBar @@ -699,6 +749,12 @@ headerButton + + 50 + + + backButton + @@ -723,16 +779,18 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + - 49 + 53 @@ -740,11 +798,16 @@ HistoryDetailsViewController UIViewController + id id id id + + onAddContactClick: + id + onAddressClick: id @@ -759,6 +822,7 @@ + UIButton UIButton UILabel UIImageView @@ -770,6 +834,10 @@ UILabel + + addContactButton + UIButton + addressButton UIButton @@ -827,9 +895,11 @@ {131, 131} {550, 101} {550, 101} - {320, 117} - {320, 117} {5, 117} + {320, 117} + {320, 117} + {320, 117} + {320, 117} 1181 diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index 45a588252..c0b6d33cb 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -57,10 +57,19 @@ } +#pragma mark - ViewController Functions + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [self loadData]; +} + + #pragma mark - Property Functions - (void)setMissedFilter:(BOOL)amissedFilter { self->missedFilter = amissedFilter; + [self loadData]; [[self tableView] reloadData]; } @@ -88,7 +97,6 @@ } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - [self loadData]; return [callLogs count]; } @@ -149,5 +157,16 @@ [dispName release]; } +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + if(editingStyle == UITableViewCellEditingStyleDelete) { + [tableView beginUpdates]; + LinphoneCallLog *callLog = [[callLogs objectAtIndex:[indexPath row]] pointerValue]; + [callLogs removeObjectAtIndex:[indexPath row]]; + linphone_core_remove_call_log([LinphoneManager getLc], callLog); + [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; + [tableView endUpdates]; + } +} + @end diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index db6c97d75..251a94f84 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -91,25 +91,30 @@ - (void)update { [self view]; //Force view load - UIImage *image; - NSString* address; + UIImage *image = nil; + NSString* address = nil; const LinphoneAddress* addr = linphone_call_get_remote_address(call); if (addr != NULL) { + BOOL useLinphoneAddress = true; // contact name const char* lAddress = linphone_address_as_string_uri_only(addr); - const char* lDisplayName = linphone_address_get_display_name(addr); - const char* lUserName = linphone_address_get_username(addr); - if (lDisplayName) - address = [NSString stringWithUTF8String:lDisplayName]; - else if(lUserName) - address = [NSString stringWithUTF8String:lUserName]; if(lAddress) { - NSString *address = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; - ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:address]; - image = [FastAddressBook getContactImage:contact thumbnail:false]; + NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; + ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; + if(contact) { + image = [FastAddressBook getContactImage:contact thumbnail:false]; + address = [FastAddressBook getContactDisplayName:contact]; + useLinphoneAddress = false; + } + } + if(useLinphoneAddress) { + const char* lDisplayName = linphone_address_get_display_name(addr); + const char* lUserName = linphone_address_get_username(addr); + if (lDisplayName) + address = [NSString stringWithUTF8String:lDisplayName]; + else if(lUserName) + address = [NSString stringWithUTF8String:lUserName]; } - } else { - [addressLabel setText:@"Unknown"]; } // Set Image diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 240091550..f26854c1d 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -26,6 +26,7 @@ #import "IASKSettingsReader.h" #import "IASKSettingsStore.h" #import "IASKAppSettingsViewController.h" +#import "FastAddressBook.h" #include "linphonecore.h" diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 219cb1bfa..fed5147d7 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -28,7 +28,6 @@ #import #import "LinphoneManager.h" -#import "FastAddressBook.h" #import "LinphoneCoreSettingsStore.h" #import "ChatModel.h" @@ -166,34 +165,6 @@ struct codec_name_pref_table codec_pref_table[]={ return theLinphoneManager; } --(void) updateCallWithAddressBookData:(LinphoneCall*) call {/* - //1 copy adress book - LinphoneCallLog* lLog = linphone_call_get_call_log(call); - LinphoneAddress* lAddress; - if (lLog->dir == LinphoneCallIncoming) { - lAddress=lLog->from; - } else { - lAddress=lLog->to; - } - const char* lUserName = linphone_address_get_username(lAddress); - if (!lUserName) { - //just return - return; - } - - NSString* lE164Number = [[NSString alloc] initWithCString:lUserName encoding:[NSString defaultCStringEncoding]]; - NSString* lDisplayName = [self getDisplayNameFromAddressBook:lE164Number andUpdateCallLog:lLog]; - - if(lDisplayName) { - linphone_address_set_display_name(lAddress, [lDisplayName cStringUsingEncoding:[NSString defaultCStringEncoding]]); - } else { - ms_message("No contact entry found for [%s] in address book",lUserName); - } - - [lE164Number release]; - return;*/ -} - - (void)onCall:(LinphoneCall*)call StateChanged:(LinphoneCallState)state withMessage:(const char *)message { // Handling wrapper if(state == LinphoneCallReleased) { @@ -209,10 +180,6 @@ struct codec_name_pref_table codec_pref_table[]={ linphone_call_set_user_pointer(call, data); } - if (state == LinphoneCallIncomingReceived) { - [self updateCallWithAddressBookData:call]; // display name is updated - } - if ((state == LinphoneCallEnd || state == LinphoneCallError)) { if(linphone_core_get_calls_nb([LinphoneManager getLc]) == 0) [self enableSpeaker:FALSE]; @@ -324,6 +291,7 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo [chat setMessage:[NSString stringWithUTF8String:message]]; [chat setDirection:[NSNumber numberWithInt:1]]; [chat setTime:[NSDate date]]; + [chat setRead:[NSNumber numberWithInt:0]]; [chat create]; // Post event @@ -826,7 +794,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach linphone_core_invite_address_with_params([LinphoneManager getLc], linphoneAddress, lcallParams); } linphone_address_destroy(linphoneAddress); - } else if ( proxyCfg==nil){ + } else if (proxyCfg==nil){ UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid sip address",nil) message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to place a call or use a valid sip address (I.E sip:john@example.net)",nil) delegate:nil @@ -840,7 +808,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach linphone_proxy_config_normalize_number(proxyCfg,[address cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName)); linphone_address_set_username(linphoneAddress, normalizedUserName); if(displayName!=nil) { - linphone_address_set_display_name(linphoneAddress,[displayName cStringUsingEncoding:[NSString defaultCStringEncoding]]); + linphone_address_set_display_name(linphoneAddress, [displayName cStringUsingEncoding:[NSString defaultCStringEncoding]]); } if(transfer) { linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), normalizedUserName); diff --git a/Classes/LinphoneUI/UICallButton.m b/Classes/LinphoneUI/UICallButton.m index b34ff5e1b..48bd02962 100644 --- a/Classes/LinphoneUI/UICallButton.m +++ b/Classes/LinphoneUI/UICallButton.m @@ -26,6 +26,7 @@ @synthesize addressField; + #pragma mark - Lifecycle Functions - (void)initUICallButton { @@ -66,7 +67,13 @@ #pragma mark - - (void)touchUp:(id) sender { - [[LinphoneManager instance] call:[addressField text] displayName:nil transfer:FALSE]; + NSString *address = [addressField text]; + NSString *displayName = nil; + ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:address]; + if(contact) { + displayName = [FastAddressBook getContactDisplayName:contact]; + } + [[LinphoneManager instance] call:address displayName:displayName transfer:FALSE]; } @end diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 9ce420dca..ef3ea1747 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -151,24 +151,30 @@ if(data != nil && data->call != NULL) { call = data->call; const LinphoneAddress* addr = linphone_call_get_remote_address(call); - UIImage *image; - NSString* address; - if (addr != NULL) { + + UIImage *image = nil; + NSString* address = nil; + if(addr != NULL) { + BOOL useLinphoneAddress = true; // contact name const char* lAddress = linphone_address_as_string_uri_only(addr); - const char* lDisplayName = linphone_address_get_display_name(addr); - const char* lUserName = linphone_address_get_username(addr); - if (lDisplayName) - address = [NSString stringWithUTF8String:lDisplayName]; - else if(lUserName) - address = [NSString stringWithUTF8String:lUserName]; if(lAddress) { - NSString *address = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; - ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:address]; - image = [FastAddressBook getContactImage:contact thumbnail:false]; + NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; + ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; + if(contact) { + image = [FastAddressBook getContactImage:contact thumbnail:false]; + address = [FastAddressBook getContactDisplayName:contact]; + useLinphoneAddress = false; + } + } + if(useLinphoneAddress) { + const char* lDisplayName = linphone_address_get_display_name(addr); + const char* lUserName = linphone_address_get_username(addr); + if (lDisplayName) + address = [NSString stringWithUTF8String:lDisplayName]; + else if(lUserName) + address = [NSString stringWithUTF8String:lUserName]; } - } else { - [addressLabel setText:@"Unknown"]; } // Set Image @@ -184,7 +190,6 @@ [addressLabel setText:address]; LinphoneCallState state = linphone_call_get_state(call); - if(!conferenceCell) { if(state == LinphoneCallOutgoingRinging) { [stateImage setImage:[UIImage imageNamed:@"call_state_ringing_default.png"]]; @@ -214,11 +219,8 @@ [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_conference.png"]]; } - NSMutableString* msDuration = [[NSMutableString alloc] init]; int duration = linphone_call_get_duration(call); - [msDuration appendFormat:@"%02i:%02i", (duration/60), duration - 60 * (duration / 60), nil]; - [stateLabel setText:msDuration]; - [msDuration release]; + [stateLabel setText:[NSString stringWithFormat:@"%02i:%02i", (duration/60), duration - 60 * (duration / 60), nil]]; if(!data->minimize) { CGRect frame = [self frame]; diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index c00994736..4ce25c3d7 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -134,9 +134,14 @@ - (IBAction)onDeleteClick: (id) event { if(chat != NULL) { - [ChatModel removeConversation:[chat remoteContact]]; - UITableView *parentTable = (UITableView *)self.superview; - [parentTable reloadData]; + UIView *view = [self superview]; + // Find TableViewCell + if(view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview]; + if(view != nil) { + UITableView *tableView = (UITableView*) view; + NSIndexPath *indexPath = [tableView indexPathForCell:self]; + [[tableView dataSource] tableView:tableView commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:indexPath]; + } } } diff --git a/Classes/LinphoneUI/UIHistoryCell.h b/Classes/LinphoneUI/UIHistoryCell.h index e4d15b1fd..2ce131462 100644 --- a/Classes/LinphoneUI/UIHistoryCell.h +++ b/Classes/LinphoneUI/UIHistoryCell.h @@ -23,7 +23,7 @@ @interface UIHistoryCell : UITableViewCell { UIImageView* imageView; - UILabel* displayNameLabel; + UILabel* addressLabel; UIButton* detailsButton; UIButton* deleteButton; @private @@ -33,7 +33,7 @@ @property (nonatomic, assign) LinphoneCallLog *callLog; @property (nonatomic, retain) IBOutlet UIImageView* imageView; -@property (nonatomic, retain) IBOutlet UILabel* displayNameLabel; +@property (nonatomic, retain) IBOutlet UILabel* addressLabel; @property (nonatomic, retain) IBOutlet UIButton* detailsButton; @property (nonatomic, retain) IBOutlet UIButton* deleteButton; diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index a1944bf45..9e4aae335 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -24,7 +24,7 @@ @implementation UIHistoryCell @synthesize callLog; -@synthesize displayNameLabel; +@synthesize addressLabel; @synthesize imageView; @synthesize deleteButton; @synthesize detailsButton; @@ -49,7 +49,7 @@ - (void) dealloc { [detailsButton release]; [deleteButton release]; - [displayNameLabel release]; + [addressLabel release]; [imageView release]; [super dealloc]; @@ -79,9 +79,14 @@ - (IBAction)onDelete:(id)event { if(callLog != NULL) { - linphone_core_remove_call_log([LinphoneManager getLc], callLog); - UITableView *parentTable = (UITableView *)self.superview; - [parentTable reloadData]; + UIView *view = [self superview]; + // Find TableViewCell + if(view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview]; + if(view != nil) { + UITableView *tableView = (UITableView*) view; + NSIndexPath *indexPath = [tableView indexPathForCell:self]; + [[tableView dataSource] tableView:tableView commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:indexPath]; + } } } @@ -91,7 +96,7 @@ - (void)update { // Set up the cell... - LinphoneAddress* partyToDisplay; + LinphoneAddress* addr; UIImage *image; if (callLog->dir == LinphoneCallIncoming) { if (callLog->status == LinphoneCallSuccess) { @@ -99,15 +104,36 @@ } else { image = [UIImage imageNamed:@"call_status_missed.png"]; } - partyToDisplay = callLog->from; + addr = callLog->from; } else { image = [UIImage imageNamed:@"call_status_outgoing.png"]; - partyToDisplay = callLog->to; + addr = callLog->to; } - const char* username = (linphone_address_get_display_name(partyToDisplay) != 0)? linphone_address_get_display_name(partyToDisplay):linphone_address_get_username(partyToDisplay); + NSString* address = nil; + if(addr != NULL) { + BOOL useLinphoneAddress = true; + // contact name + const char* lAddress = linphone_address_as_string_uri_only(addr); + if(lAddress) { + NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; + ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; + if(contact) { + address = [FastAddressBook getContactDisplayName:contact]; + useLinphoneAddress = false; + } + } + if(useLinphoneAddress) { + const char* lDisplayName = linphone_address_get_display_name(addr); + const char* lUserName = linphone_address_get_username(addr); + if (lDisplayName) + address = [NSString stringWithUTF8String:lDisplayName]; + else if(lUserName) + address = [NSString stringWithUTF8String:lUserName]; + } + } - [displayNameLabel setText:[NSString stringWithUTF8String: username]]; + [addressLabel setText:address]; [imageView setImage: image]; } diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index cfca19597..20b98f889 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -174,14 +174,6 @@ 11 - - - displayNameLabel - - - - 14 - deleteButton @@ -198,6 +190,14 @@ 17 + + + addressLabel + + + + 25 + onDetails: @@ -292,7 +292,7 @@ - 24 + 25 @@ -314,12 +314,16 @@ + UILabel UIButton UIButton - UILabel UIImageView + + addressLabel + UILabel + deleteButton UIButton @@ -328,10 +332,6 @@ detailsButton UIButton - - displayNameLabel - UILabel - imageView UIImageView diff --git a/Classes/LinphoneUI/UIMainBar.h b/Classes/LinphoneUI/UIMainBar.h index 783a29074..a53638cab 100644 --- a/Classes/LinphoneUI/UIMainBar.h +++ b/Classes/LinphoneUI/UIMainBar.h @@ -27,6 +27,8 @@ UIButton *chatButton; UIView *historyNotificationView; UILabel *historyNotificationLabel; + UIView *chatNotificationView; + UILabel *chatNotificationLabel; } @property (nonatomic, retain) IBOutlet UIButton* historyButton; @@ -36,6 +38,8 @@ @property (nonatomic, retain) IBOutlet UIButton* chatButton; @property (nonatomic, retain) IBOutlet UIView *historyNotificationView; @property (nonatomic, retain) IBOutlet UILabel *historyNotificationLabel; +@property (nonatomic, retain) IBOutlet UIView *chatNotificationView; +@property (nonatomic, retain) IBOutlet UILabel *chatNotificationLabel; -(IBAction) onHistoryClick: (id) event; -(IBAction) onContactsClick: (id) event; diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 1cfb7d105..b6c3237a3 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -19,6 +19,7 @@ #import "UIMainBar.h" #import "PhoneMainView.h" +#import "ChatModel.h" @implementation UIMainBar @@ -29,6 +30,8 @@ @synthesize chatButton; @synthesize historyNotificationView; @synthesize historyNotificationLabel; +@synthesize chatNotificationView; +@synthesize chatNotificationLabel; #pragma mark - Lifecycle Functions @@ -46,6 +49,8 @@ [chatButton release]; [historyNotificationView release]; [historyNotificationLabel release]; + [chatNotificationView release]; + [chatNotificationLabel release]; [super dealloc]; } @@ -64,12 +69,19 @@ selector:@selector(callUpdate:) name:@"LinphoneCallUpdate" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(textReceived:) + name:@"LinphoneTextReceived" + object:nil]; + + // Update current view [self updateView:[[PhoneMainView instance] currentView]]; if([LinphoneManager isLcReady]) { - [self updateMissed:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; + [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; } else { - [self updateMissed:0]; + [self updateMissedCall:0]; } + [self updateUnreadMessage:[ChatModel unreadMessages]]; } - (void)viewWillDisappear:(BOOL)animated { @@ -81,6 +93,9 @@ [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LinphoneCallUpdate" object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneTextReceived" + object:nil]; } @@ -89,7 +104,7 @@ - (void)callUpdate: (NSNotification*) notif { //LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; //LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - [self updateMissed:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; + [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; } - (void)changeViewEvent: (NSNotification*) notif { @@ -98,20 +113,50 @@ [self updateView:[viewNumber intValue]]; } +- (void)textReceived: (NSNotification*) notif { + [self updateUnreadMessage:[ChatModel unreadMessages]]; +} + #pragma mark - -- (void)updateMissed:(int)missedCall { +- (void)updateUnreadMessage:(int)unreadMessage { + if (unreadMessage > 0) { + if([chatNotificationView isHidden]) { + chatNotificationView.transform = CGAffineTransformIdentity; + [self startBounceAnimation:@"Bounce" target:chatNotificationView]; + [chatNotificationView setHidden:FALSE]; + } + [chatNotificationLabel setText:[NSString stringWithFormat:@"%i", unreadMessage]]; + } else { + if(![chatNotificationView isHidden]) { + [self stopBounceAnimation:@"Bounce" target:chatNotificationView]; + CGAffineTransform startCGA = [chatNotificationView transform]; + [UIView animateWithDuration:0.4 + delay:0 + options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction + animations:^{ + chatNotificationView.transform = CGAffineTransformConcat(startCGA, CGAffineTransformMakeScale(0.01f, 0.01f)); + } + completion:^(BOOL finished){ + [chatNotificationView setHidden:TRUE]; + } + ]; + } + } +} + +- (void)updateMissedCall:(int)missedCall { if (missedCall > 0) { if([historyNotificationView isHidden]) { historyNotificationView.transform = CGAffineTransformIdentity; - [self startShakeAnimation:@"Shake" target:historyNotificationView]; + [self startBounceAnimation:@"Bounce" target:historyNotificationView]; [historyNotificationView setHidden:FALSE]; } [historyNotificationLabel setText:[NSString stringWithFormat:@"%i", missedCall]]; } else { if(![historyNotificationView isHidden]) { - [self stopShakeAnimation:@"Shake" target:historyNotificationView]; + [self stopBounceAnimation:@"Bounce" target:historyNotificationView]; CGAffineTransform startCGA = [historyNotificationView transform]; [UIView animateWithDuration:0.4 delay:0 @@ -127,7 +172,7 @@ } } -- (void)startShakeAnimation:(NSString *)animationID target:(UIView *)target { +- (void)startBounceAnimation:(NSString *)animationID target:(UIView *)target { [target setTransform:CGAffineTransformMakeTranslation(0, -4)]; [UIView animateWithDuration: 0.3 delay: 0 @@ -143,7 +188,7 @@ } -- (void)stopShakeAnimation:(NSString *)animationID target:(UIView *)target { +- (void)stopBounceAnimation:(NSString *)animationID target:(UIView *)target { [target.layer removeAnimationForKey:animationID]; } @@ -151,7 +196,7 @@ // Reset missed call if(view == PhoneView_History) { linphone_core_reset_missed_calls_count([LinphoneManager getLc]); - [self updateMissed:0]; + [self updateMissedCall:0]; } // Update buttons diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib index a861b8642..6330d597c 100644 --- a/Classes/LinphoneUI/UIMainBar.xib +++ b/Classes/LinphoneUI/UIMainBar.xib @@ -112,7 +112,7 @@ _NS:9 NO IBCocoaTouchFramework - + NSImage history_notification.png @@ -131,7 +131,7 @@ NO IBCocoaTouchFramework 99 - + 3 MQA @@ -139,11 +139,11 @@ 0 10 1 - + 1 14 - + Helvetica 14 16 @@ -155,7 +155,7 @@ _NS:9 - + 3 MCAwAA @@ -265,6 +265,7 @@ {{256, 0}, {64, 77}} + _NS:9 NO @@ -290,6 +291,54 @@ + + + -2147483356 + + + + 274 + {21, 21} + + + + _NS:9 + NO + IBCocoaTouchFramework + + + + + 292 + {21, 21} + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + 99 + + + 0 + 10 + 1 + + + + + {{261, 5}, {21, 21}} + + + + _NS:9 + + NO + NO + IBCocoaTouchFramework + {320, 77} @@ -370,6 +419,22 @@ 36 + + + chatNotificationLabel + + + + 40 + + + + chatNotificationView + + + + 41 + onChatClick: @@ -446,6 +511,7 @@ + mainTabBar @@ -509,6 +575,28 @@ historyNotificationLabel + + 37 + + + + + + + chatNotificationView + + + 38 + + + chatNotificationLabel + + + 39 + + + chatNotificationImage + @@ -521,6 +609,9 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -537,7 +628,7 @@ - 36 + 41 @@ -575,6 +666,8 @@ UIButton + UILabel + UIView UIButton UIButton UIButton @@ -587,6 +680,14 @@ chatButton UIButton + + chatNotificationLabel + UILabel + + + chatNotificationView + UIView + contactsButton UIButton diff --git a/Classes/Model/ChatModel.h b/Classes/Model/ChatModel.h index 1d5139b18..f1258ba80 100644 --- a/Classes/Model/ChatModel.h +++ b/Classes/Model/ChatModel.h @@ -27,22 +27,26 @@ NSNumber *direction; //0 outgoing 1 incoming NSString *message; NSDate *time; + NSNumber *read; } -@property (nonatomic, readonly) NSNumber *chatId; -@property (nonatomic, copy) NSString *localContact; -@property (nonatomic, copy) NSString *remoteContact; -@property (nonatomic, copy) NSNumber *direction; -@property (nonatomic, copy) NSString *message; -@property (nonatomic, copy) NSDate *time; +@property (readonly) NSNumber *chatId; +@property (copy) NSString *localContact; +@property (copy) NSString *remoteContact; +@property (copy) NSNumber *direction; +@property (copy) NSString *message; +@property (copy) NSDate *time; +@property (copy) NSNumber *read; -- (void) create; -+ (ChatModel*) read:(NSNumber*)id; -- (void) update; -- (void) delete; +- (void)create; ++ (ChatModel*)read:(NSNumber*)id; +- (void)update; +- (void)delete; -+ (NSArray *) listConversations; -+ (NSArray *) listMessages:(NSString *)contact; -+ (void) removeConversation:(NSString *)contact; ++ (NSMutableArray *)listConversations; ++ (NSMutableArray *)listMessages:(NSString *)contact; ++ (void)removeConversation:(NSString *)contact; ++ (int)unreadMessages; ++ (void)readConversation:(NSString *)contact; @end diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m index 45e553b30..fbd949149 100644 --- a/Classes/Model/ChatModel.m +++ b/Classes/Model/ChatModel.m @@ -28,6 +28,7 @@ @synthesize message; @synthesize direction; @synthesize time; +@synthesize read; #pragma mark - Lifecycle Functions @@ -41,6 +42,7 @@ self.direction = [NSNumber numberWithInt:sqlite3_column_int(sqlStatement, 3)]; self.message = [NSString stringWithUTF8String: (const char*) sqlite3_column_text(sqlStatement, 4)]; self.time = [NSDate dateWithTimeIntervalSince1970:sqlite3_column_int(sqlStatement, 5)]; + self.read = [NSDate dateWithTimeIntervalSince1970:sqlite3_column_int(sqlStatement, 6)]; } return self; } @@ -52,6 +54,7 @@ [message release]; [direction release]; [time release]; + [read release]; [super dealloc]; } @@ -65,8 +68,8 @@ NSLog(@"Database not ready"); return; } - const char *sql = [[NSString stringWithFormat:@"INSERT INTO chat (localContact, remoteContact, direction, message, time) VALUES (\"%@\", \"%@\", %i, \"%@\", %i)", - localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970]] UTF8String]; + const char *sql = [[NSString stringWithFormat:@"INSERT INTO chat (localContact, remoteContact, direction, message, time, read) VALUES (\"%@\", \"%@\", %i, \"%@\", %f, %i)", + localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], [read intValue]] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); @@ -86,7 +89,7 @@ return nil; } - const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time FROM chat WHERE id=%@", + const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE id=%@", chatId] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { @@ -115,8 +118,8 @@ return; } - const char *sql = [[NSString stringWithFormat:@"UPDATE chat SET localContact=\"%@\", remoteContact=\"%@\", direction=%i, message=\"%@\", time=%i WHERE id=%@", - localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], chatId] UTF8String]; + const char *sql = [[NSString stringWithFormat:@"UPDATE chat SET localContact=\"%@\", remoteContact=\"%@\", direction=%i, message=\"%@\", time=%f, read=%i WHERE id=%@", + localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], read, [chatId intValue]] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); @@ -159,21 +162,21 @@ #pragma mark - -+ (NSArray *)listConversations { ++ (NSMutableArray *)listConversations { + NSMutableArray *array = [NSMutableArray array]; sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { NSLog(@"Database not ready"); - return [[[NSArray alloc] init] autorelease]; + return array; } - const char *sql = "SELECT id, localContact, remoteContact, direction, message, time FROM chat GROUP BY remoteContact ORDER BY time DESC"; + const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read FROM chat GROUP BY remoteContact ORDER BY time DESC"; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { NSLog(@"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)); - return [[[NSArray alloc] init] autorelease]; + return array; } - NSMutableArray *array = [[NSMutableArray alloc] init]; int err; while ((err = sqlite3_step(sqlStatement)) == SQLITE_ROW) { ChatModel *line = [[ChatModel alloc] initWithData:sqlStatement]; @@ -182,32 +185,30 @@ if (err != SQLITE_DONE) { NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); - return [[[NSArray alloc] init] autorelease]; + return array; } sqlite3_finalize(sqlStatement); - NSArray *fArray = [NSArray arrayWithArray: array]; - [array release]; - return fArray; + return array; } -+ (NSArray *)listMessages:(NSString *)contact { ++ (NSMutableArray *)listMessages:(NSString *)contact { + NSMutableArray *array = [NSMutableArray array]; sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { NSLog(@"Database not ready"); - return [[[NSArray alloc] init] autorelease]; + return array; } - const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time FROM chat WHERE remoteContact=\"%@\" ORDER BY time DESC", + const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE remoteContact=\"%@\" ORDER BY time DESC", contact] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { NSLog(@"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)); - return [[[NSArray alloc] init] autorelease]; + return array; } - NSMutableArray *array = [[NSMutableArray alloc] init]; int err; while ((err = sqlite3_step(sqlStatement)) == SQLITE_ROW) { ChatModel *line = [[ChatModel alloc] initWithData:sqlStatement]; @@ -216,17 +217,15 @@ if (err != SQLITE_DONE) { NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); - return [[[NSArray alloc] init] autorelease]; + return array; } sqlite3_finalize(sqlStatement); - NSArray *fArray = [NSArray arrayWithArray: array]; - [array release]; - return fArray; + return array; } -+ (void) removeConversation:(NSString *)contact { ++ (void)removeConversation:(NSString *)contact { sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { NSLog(@"Database not ready"); @@ -250,4 +249,55 @@ sqlite3_finalize(sqlStatement); } ++ (int)unreadMessages { + int count = -1; + sqlite3* database = [[LinphoneManager instance] database]; + if(database == NULL) { + NSLog(@"Database not ready"); + return count; + } + + const char *sql = [[NSString stringWithFormat:@"SELECT count(*) FROM chat WHERE read=0"] UTF8String]; + sqlite3_stmt *sqlStatement; + if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + return count; + } + + if (sqlite3_step(sqlStatement) != SQLITE_ROW) { + NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + sqlite3_finalize(sqlStatement); + return count; + } + + count = sqlite3_column_int(sqlStatement, 0); + + sqlite3_finalize(sqlStatement); + return count; +} + ++ (void)readConversation:(NSString *)contact { + sqlite3* database = [[LinphoneManager instance] database]; + if(database == NULL) { + NSLog(@"Database not ready"); + return; + } + + const char *sql = [[NSString stringWithFormat:@"UPDATE chat SET read=1 WHERE remoteContact=\"%@\"", + contact] UTF8String]; + sqlite3_stmt *sqlStatement; + if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + return; + } + + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { + NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + sqlite3_finalize(sqlStatement); + return; + } + + sqlite3_finalize(sqlStatement); +} + @end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index d8b83fbac..d7dcb9114 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -347,6 +347,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (void)_changeView:(PhoneView)view calls:(NSArray *)calls transition:(CATransition*)transition { + NSLog(@"PhoneMainView: change view %d", view); UICompositeViewDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; if(description == nil) return; @@ -375,6 +376,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (void)popView:(NSArray *)calls { + NSLog(@"PhoneMainView: Pop!"); if([viewStack count] > 0) { PhoneView view = [[viewStack lastObject] intValue]; [viewStack removeLastObject]; diff --git a/Classes/Utils/FastAddressBook.h b/Classes/Utils/FastAddressBook.h index 3e0f89a6c..fa737ae52 100644 --- a/Classes/Utils/FastAddressBook.h +++ b/Classes/Utils/FastAddressBook.h @@ -21,7 +21,7 @@ #import @interface FastAddressBook : NSObject { - NSMutableDictionary* mAddressBookMap; + NSMutableDictionary* addressBookMap; ABAddressBookRef addressBook; } diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index b2441ca7b..3ec6488a7 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -46,8 +46,8 @@ } - (ABRecordRef)getContact:(NSString*)address { - @synchronized (mAddressBookMap){ - return (ABRecordRef)[mAddressBookMap objectForKey:address]; + @synchronized (addressBookMap){ + return (ABRecordRef)[addressBookMap objectForKey:address]; } } @@ -87,10 +87,20 @@ return [FastAddressBook appendCountryCodeIfPossible:lNormalizedAddress]; } -void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { - NSMutableDictionary* lAddressBookMap = (NSMutableDictionary*)context; - @synchronized (lAddressBookMap) { - [lAddressBookMap removeAllObjects]; +- (FastAddressBook*)init { + if ((self = [super init]) != nil) { + addressBookMap = [[NSMutableDictionary alloc] init]; + addressBook = ABAddressBookCreate(); + ABAddressBookRegisterExternalChangeCallback (addressBook, sync_address_book, self); + [self loadData]; + } + return self; +} + +- (void)loadData { + ABAddressBookRevert(addressBook); + @synchronized (addressBookMap) { + [addressBookMap removeAllObjects]; NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); for (id lPerson in lContacts) { @@ -103,7 +113,7 @@ void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void CFStringRef lLabel = ABMultiValueCopyLabelAtIndex(lMap, i); CFStringRef lLocalizedLabel = ABAddressBookCopyLocalizedLabel(lLabel); NSString* lNormalizedKey = [FastAddressBook normalizePhoneNumber:(NSString*)lValue]; - [lAddressBookMap setObject:lPerson forKey:lNormalizedKey]; + [addressBookMap setObject:lPerson forKey:lNormalizedKey]; CFRelease(lValue); if (lLabel) CFRelease(lLabel); if (lLocalizedLabel) CFRelease(lLocalizedLabel); @@ -118,12 +128,18 @@ void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void if(lMap) { for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); + BOOL add = false; if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { if(CFStringCompare((CFStringRef)CONTACT_SIP_FIELD, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { - CFStringRef lValue = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); - NSString* lNormalizedKey = [FastAddressBook normalizeSipURI:(NSString*)lValue]; - [lAddressBookMap setObject:lPerson forKey:lNormalizedKey]; + add = true; } + } else { + add = true; + } + if(add) { + CFStringRef lValue = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); + NSString* lNormalizedKey = [FastAddressBook normalizeSipURI:(NSString*)lValue]; + [addressBookMap setObject:lPerson forKey:lNormalizedKey]; } CFRelease(lDict); } @@ -133,20 +149,16 @@ void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void } CFRelease(lContacts); } + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneAddressBookUpdate" object:self]; } -- (FastAddressBook*)init { - if ((self = [super init]) != nil) { - mAddressBookMap = [[NSMutableDictionary alloc] init]; - addressBook = ABAddressBookCreate(); - ABAddressBookRegisterExternalChangeCallback (addressBook, sync_address_book, mAddressBookMap); - sync_address_book(addressBook,nil,mAddressBookMap); - } - return self; +void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { + FastAddressBook* fastAddressBook = (FastAddressBook*)context; + [fastAddressBook loadData]; } - (void)dealloc { - ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, mAddressBookMap); + ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, self); CFRelease(addressBook); [super dealloc]; } diff --git a/Resources/database.sqlite b/Resources/database.sqlite index d52fcbd6e20bf26c09b10bf3134d4bb6680362f8..1469b4df151ed14246ec8fa70f44a3b256555fd6 100644 GIT binary patch delta 84 zcmZpWXpop7Ey&Kmz`zW|Fu*=h#~3K6`$(0SIhKKm$%cWMo5^Nl;TcA*MjvK&aZypm frs~NdOxyT$6pB(4QxrV?LR{TlgEn(9f8ziEFm4dT delta 71 zcmZpWXpop7Ey&8iz`zW|Fu*!d#~3K6`$(0SIhKKm$%}!Ro5^dlAj?fgZstZiW_EE= SQO2hD$!<*BHghq5;{X6(8Voc5 diff --git a/Resources/history_add_default.png b/Resources/history_add_default.png new file mode 100644 index 0000000000000000000000000000000000000000..125c8f0f1e91f087217d3a2fb594218fb485f9d0 GIT binary patch literal 4147 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 literal 0 HcmV?d00001 diff --git a/Resources/history_add_over.png b/Resources/history_add_over.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb40bbf5bd710bd47485aab153d40c09c01c225 GIT binary patch literal 3780 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 088237180..cf09ecf6a 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -181,6 +181,14 @@ D3128FF415AABE4E00A2147A /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; }; D3128FF515AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; D3128FF615AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; + D3157A8A15B4466F00DD8C4C /* history_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8815B4466F00DD8C4C /* history_add_default.png */; }; + D3157A8B15B4466F00DD8C4C /* history_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8815B4466F00DD8C4C /* history_add_default.png */; }; + D3157A8C15B4466F00DD8C4C /* history_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8915B4466F00DD8C4C /* history_add_over.png */; }; + D3157A8D15B4466F00DD8C4C /* history_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8915B4466F00DD8C4C /* history_add_over.png */; }; + D3157A9015B446CB00DD8C4C /* history_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8E15B446CB00DD8C4C /* history_back_default.png */; }; + D3157A9115B446CB00DD8C4C /* history_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8E15B446CB00DD8C4C /* history_back_default.png */; }; + D3157A9215B446CB00DD8C4C /* history_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8F15B446CB00DD8C4C /* history_back_over.png */; }; + D3157A9315B446CB00DD8C4C /* history_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8F15B446CB00DD8C4C /* history_back_over.png */; }; D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3115A321E2007FEEBA /* options_add_over.png */; }; @@ -1093,6 +1101,10 @@ D3128FE815AABE4E00A2147A /* contact_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_back_over.png; path = Resources/contact_back_over.png; sourceTree = ""; }; D3128FE915AABE4E00A2147A /* contact_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_default.png; path = Resources/contact_edit_default.png; sourceTree = ""; }; D3128FEA15AABE4E00A2147A /* contact_edit_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_over.png; path = Resources/contact_edit_over.png; sourceTree = ""; }; + D3157A8815B4466F00DD8C4C /* history_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_add_default.png; path = Resources/history_add_default.png; sourceTree = ""; }; + D3157A8915B4466F00DD8C4C /* history_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_add_over.png; path = Resources/history_add_over.png; sourceTree = ""; }; + D3157A8E15B446CB00DD8C4C /* history_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_back_default.png; path = Resources/history_back_default.png; sourceTree = ""; }; + D3157A8F15B446CB00DD8C4C /* history_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_back_over.png; path = Resources/history_back_over.png; sourceTree = ""; }; D3196D3015A321E2007FEEBA /* options_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_default.png; path = Resources/options_add_default.png; sourceTree = ""; }; D3196D3115A321E2007FEEBA /* options_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_over.png; path = Resources/options_add_over.png; sourceTree = ""; }; D3196D3215A321E3007FEEBA /* options_transfer_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_default.png; path = Resources/options_transfer_default.png; sourceTree = ""; }; @@ -2192,8 +2204,12 @@ D3F83EFB158205A100336684 /* hangup_over.png */, D36C43CE158F2F370048BA40 /* header_conference.png */, D3F26BFB15987083005F9CAB /* header_incoming.png */, + D3157A8815B4466F00DD8C4C /* history_add_default.png */, + D3157A8915B4466F00DD8C4C /* history_add_over.png */, D3ED3E9315872EF1006C0DE4 /* history_all_default.png */, D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */, + D3157A8E15B446CB00DD8C4C /* history_back_default.png */, + D3157A8F15B446CB00DD8C4C /* history_back_over.png */, D347347C1580E5F8003C7B8C /* history_default.png */, D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */, D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */, @@ -2814,6 +2830,10 @@ D3E84F2A15B00F4100420DAC /* dialer_alt_background.png in Resources */, D3E84F3815B011AF00420DAC /* contact_cancel_default.png in Resources */, D3E84F3A15B011AF00420DAC /* contact_cancel_over.png in Resources */, + D3157A8A15B4466F00DD8C4C /* history_add_default.png in Resources */, + D3157A8C15B4466F00DD8C4C /* history_add_over.png in Resources */, + D3157A9015B446CB00DD8C4C /* history_back_default.png in Resources */, + D3157A9215B446CB00DD8C4C /* history_back_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3061,6 +3081,10 @@ D3E84F2B15B00F4100420DAC /* dialer_alt_background.png in Resources */, D3E84F3915B011AF00420DAC /* contact_cancel_default.png in Resources */, D3E84F3B15B011AF00420DAC /* contact_cancel_over.png in Resources */, + D3157A8B15B4466F00DD8C4C /* history_add_default.png in Resources */, + D3157A8D15B4466F00DD8C4C /* history_add_over.png in Resources */, + D3157A9115B446CB00DD8C4C /* history_back_default.png in Resources */, + D3157A9315B446CB00DD8C4C /* history_back_over.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 05413c9bb4594df69b8dd095a8775500980b3498 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 16 Jul 2012 20:36:33 +0200 Subject: [PATCH 048/397] Remove AbstractCall --- Classes/ChatTableViewController.m | 10 +-- Classes/ContactDetailsTableViewController.m | 9 ++- Classes/ContactsTableViewController.m | 16 ++-- Classes/ContactsViewController.m | 18 +++-- Classes/DialerViewController.h | 3 +- Classes/DialerViewController.m | 14 ++-- Classes/HistoryDetailsViewController.h | 2 - Classes/HistoryDetailsViewController.m | 39 ++++----- Classes/HistoryTableViewController.m | 65 ++++++++------- Classes/LinphoneUI/UICallBar.m | 23 +++--- Classes/LinphoneUI/UIChatCell.m | 11 ++- Classes/LinphoneUI/UIHistoryCell.m | 10 +-- Classes/PhoneMainView.h | 25 ++++-- Classes/PhoneMainView.m | 67 +++++---------- Classes/Utils/AbstractCall.m | 90 --------------------- Classes/Utils/{AbstractCall.h => Utils.h} | 24 +++--- linphone.xcodeproj/project.pbxproj | 10 +-- 17 files changed, 165 insertions(+), 271 deletions(-) delete mode 100644 Classes/Utils/AbstractCall.m rename Classes/Utils/{AbstractCall.h => Utils.h} (75%) diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index da927f422..30e900622 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -24,6 +24,7 @@ #import "PhoneMainView.h" #import "UACellBackgroundView.h" #import "UILinphone.h" +#import "Utils.h" @implementation ChatTableViewController @@ -90,11 +91,10 @@ ChatModel *chat = [data objectAtIndex:[indexPath row]]; // Go to ChatRoom view - [[PhoneMainView instance] changeView:PhoneView_ChatRoom - calls:[NSArray arrayWithObjects: - [AbstractCall abstractCall:@"setRemoteContact:", [chat remoteContact]], - nil] - push:TRUE]; + ChatRoomTableViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ChatRoom push:TRUE], ChatRoomTableViewController); + if(controller != nil) { + [controller setRemoteContact:[chat remoteContact]]; + } } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 3264ba4a7..4d9701168 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -25,6 +25,7 @@ #import "UILinphone.h" #import "OrderedDictionary.h" #import "FastAddressBook.h" +#import "Utils.h" @interface Entry : NSObject @@ -454,10 +455,10 @@ NSString *displayName = [FastAddressBook getContactDisplayName:contact]; // Go to dialer view - [[PhoneMainView instance] changeView:PhoneView_Dialer - calls:[NSArray arrayWithObjects: - [AbstractCall abstractCall:@"call:displayName:", dest, displayName], - nil]]; + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Dialer], DialerViewController); + if(controller != nil) { + [controller call:dest displayName:displayName]; + } } } else { NSString *key = nil; diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 5690a34b7..fd8bea406 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -23,6 +23,7 @@ #import "PhoneMainView.h" #import "UACellBackgroundView.h" #import "UILinphone.h" +#import "Utils.h" @implementation ContactsTableViewController @@ -193,14 +194,15 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]]; // Go to Contact details view - NSArray * calls; - if(tempAddress == nil) { - calls = [NSArray arrayWithObject: [AbstractCall abstractCall:@"setContact:", lPerson]]; - } else { - calls = [NSArray arrayWithObject: [AbstractCall abstractCall:@"editContact:address:", lPerson, tempAddress]]; - [self setTempAddress:nil]; + ContactDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ContactDetails push:TRUE], ContactDetailsViewController); + if(controller != nil) { + if(tempAddress == nil) { + [controller setContact:lPerson]; + } else { + [controller editContact:lPerson address:tempAddress]; + [self setTempAddress:nil]; + } } - [[PhoneMainView instance] changeView:PhoneView_ContactDetails calls:calls push:TRUE]; } @end diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 28bb9e252..7aa950af7 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -19,8 +19,9 @@ #import "ContactsViewController.h" #import "PhoneMainView.h" +#import "Utils.h" -#import "AddressBook/ABPerson.h" +#import @implementation ContactsViewController @@ -149,14 +150,15 @@ typedef enum _HistoryView { - (IBAction)onAddContactClick:(id)event { // Go to Contact details view - NSArray * calls; - if([tableController tempAddress] == nil) { - calls = [NSArray arrayWithObject: [AbstractCall abstractCall:@"newContact"]]; - } else { - calls = [NSArray arrayWithObject: [AbstractCall abstractCall:@"newContact:", [tableController tempAddress]]]; - [tableController setTempAddress:nil]; + ContactDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ContactDetails push:TRUE], ContactDetailsViewController); + if(controller != nil) { + if([tableController tempAddress] == nil) { + [controller newContact]; + } else { + [controller newContact:[tableController tempAddress]]; + [tableController setTempAddress:nil]; + } } - [[PhoneMainView instance] changeView:PhoneView_ContactDetails calls:calls push:TRUE]; } @end diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index 2eedfca28..b5a94af44 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -55,10 +55,11 @@ } - (void)setAddress:(NSString*)address; -- (void)setTransferMode:(NSNumber*)enable; - (void)call:(NSString*)address displayName:(NSString *)displayName; - (void)call:(NSString*)address; +@property (nonatomic, assign) BOOL transferMode; + @property (nonatomic, retain) IBOutlet UITextField* addressField; @property (nonatomic, retain) IBOutlet UIButton* addContactButton; @property (nonatomic, retain) IBOutlet UICallButton* callButton; diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 0630ca319..64fc25db7 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -24,12 +24,15 @@ #import "IncallViewController.h" #import "LinphoneManager.h" #import "PhoneMainView.h" +#import "Utils.h" #include "linphonecore.h" #include "private.h" @implementation DialerViewController +@synthesize transferMode; + @synthesize addressField; @synthesize addContactButton; @synthesize cancelButton; @@ -186,8 +189,8 @@ [addressField setText:address]; } -- (void)setTransferMode:(NSNumber*) n { - transferMode = [n boolValue]; +- (void)setTransferMode:(BOOL)atransferMode { + transferMode = atransferMode; LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; [self callUpdate:call state:state]; @@ -220,9 +223,10 @@ #pragma mark - Action Functions - (IBAction)onAddContactClick: (id) event { - [[PhoneMainView instance] changeView:PhoneView_Contacts - calls:[NSArray arrayWithObject:[AbstractCall abstractCall:@"setAddress:", [addressField text]]] - push:TRUE]; + ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Contacts push:TRUE], ContactsViewController); + if(controller != nil) { + [controller setAddress:[addressField text]]; + } } - (IBAction)onBackClick: (id) event { diff --git a/Classes/HistoryDetailsViewController.h b/Classes/HistoryDetailsViewController.h index c3e3b3e93..14da3917b 100644 --- a/Classes/HistoryDetailsViewController.h +++ b/Classes/HistoryDetailsViewController.h @@ -49,8 +49,6 @@ @property (nonatomic, retain) IBOutlet UIButton *addContactButton; @property (nonatomic, assign) LinphoneCallLog *callLog; -- (void)setCallLogValue:(NSValue*)vcallLog; - - (IBAction)onBackClick:(id)event; - (IBAction)onContactClick:(id)event; - (IBAction)onAddContactClick:(id)event; diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index 30b58ebd9..fb7101e0b 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -20,6 +20,7 @@ #import "HistoryDetailsViewController.h" #import "PhoneMainView.h" #import "FastAddressBook.h" +#import "Utils.h" @implementation HistoryDetailsViewController @@ -71,10 +72,6 @@ #pragma mark - Property Functions -- (void)setCallLogValue:(NSValue*)vcallLog { - [self setCallLog:[vcallLog pointerValue]]; -} - - (void)setCallLog:(LinphoneCallLog *)acallLog { self->callLog = acallLog; [self update]; @@ -254,16 +251,18 @@ - (IBAction)onContactClick:(id)event { if(contact) { - [[PhoneMainView instance] changeView:PhoneView_ContactDetails - calls:[NSArray arrayWithObject:[AbstractCall abstractCall:@"setContact:", contact]] - push:TRUE]; + ContactDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ContactDetails push:TRUE], ContactDetailsViewController); + if(controller != nil) { + [controller setContact:contact]; + } } } - (IBAction)onAddContactClick:(id)event { - [[PhoneMainView instance] changeView:PhoneView_Contacts - calls:[NSArray arrayWithObject:[AbstractCall abstractCall:@"setAddress:", [[addressButton titleLabel] text]]] - push:TRUE]; + ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Contacts push:TRUE], ContactsViewController); + if(controller != nil) { + [controller setAddress:[[addressButton titleLabel] text]]; + } } - (IBAction)onAddressClick:(id)event { @@ -288,18 +287,14 @@ displayName = [NSString stringWithUTF8String:lUserName]; } - if(displayName != nil) { - // Go to dialer view - [[PhoneMainView instance] changeView:PhoneView_Dialer - calls:[NSArray arrayWithObjects: - [AbstractCall abstractCall:@"call:displayName:", [NSString stringWithUTF8String:lAddress], displayName], - nil]]; - } else { - // Go to dialer view - [[PhoneMainView instance] changeView:PhoneView_Dialer - calls:[NSArray arrayWithObjects: - [AbstractCall abstractCall:@"call:", [NSString stringWithUTF8String:lAddress]], - nil]]; + + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Dialer], DialerViewController); + if(controller != nil) { + if(displayName != nil) { + [controller call:[NSString stringWithUTF8String:lAddress] displayName:displayName]; + } else { + [controller call:[NSString stringWithUTF8String:lAddress]]; + } } } diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index c0b6d33cb..eb4dea67b 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -23,6 +23,7 @@ #import "PhoneMainView.h" #import "UACellBackgroundView.h" #import "UILinphone.h" +#import "Utils.h" @implementation HistoryTableViewController @@ -123,38 +124,46 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:NO]; - LinphoneCallLog *log = [[callLogs objectAtIndex:[indexPath row]] pointerValue]; - LinphoneAddress* partyToCall; - if (log->dir == LinphoneCallIncoming) { - partyToCall=log->from; + LinphoneCallLog *callLog = [[callLogs objectAtIndex:[indexPath row]] pointerValue]; + LinphoneAddress* addr; + if (callLog->dir == LinphoneCallIncoming) { + addr = callLog->from; } else { - partyToCall=log->to; - } - const char* username = linphone_address_get_username(partyToCall)!=0?linphone_address_get_username(partyToCall):""; - const char* displayName = linphone_address_get_display_name(partyToCall)!=0?linphone_address_get_display_name(partyToCall):""; - const char* domain = linphone_address_get_domain(partyToCall); - - LinphoneProxyConfig* proxyCfg; - linphone_core_get_default_proxy([LinphoneManager getLc],&proxyCfg); - - NSString* phoneNumber; - - if (proxyCfg && (strcmp(domain, linphone_proxy_config_get_domain(proxyCfg)) == 0)) { - phoneNumber = [[NSString alloc] initWithCString:username encoding:[NSString defaultCStringEncoding]]; - } else { - phoneNumber = [[NSString alloc] initWithCString:linphone_address_as_string_uri_only(partyToCall) encoding:[NSString defaultCStringEncoding]]; + addr = callLog->to; } - NSString* dispName = [[NSString alloc] initWithCString:displayName encoding:[NSString defaultCStringEncoding]]; + NSString* displayName = nil; + NSString* address = nil; + if(addr != NULL) { + BOOL useLinphoneAddress = true; + // contact name + const char* lAddress = linphone_address_as_string_uri_only(addr); + if(lAddress) { + address = [NSString stringWithUTF8String:lAddress]; + NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:address]; + ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; + if(contact) { + displayName = [FastAddressBook getContactDisplayName:contact]; + useLinphoneAddress = false; + } + } + if(useLinphoneAddress) { + const char* lDisplayName = linphone_address_get_display_name(addr); + const char* lUserName = linphone_address_get_username(addr); + if (lDisplayName) + displayName = [NSString stringWithUTF8String:lDisplayName]; + else if(lUserName) + displayName = [NSString stringWithUTF8String:lUserName]; + } + } - // Go to dialer view - [[PhoneMainView instance] changeView:PhoneView_Dialer - calls:[NSArray arrayWithObjects: - [AbstractCall abstractCall:@"call:displayName:", phoneNumber, dispName], - nil]]; - - [phoneNumber release]; - [dispName release]; + if(address != nil) { + // Go to dialer view + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Dialer], DialerViewController); + if(controller != nil) { + [controller call:address displayName:displayName]; + } + } } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 3bb67f760..abfa85b21 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -23,6 +23,7 @@ #import "CPAnimationSequence.h" #import "CPAnimationStep.h" +#import "Utils.h" #include "linphonecore.h" #include "private.h" @@ -366,21 +367,21 @@ - (IBAction)onOptionsTransferClick:(id)sender { [self hideOptions]; // Go to dialer view - [[PhoneMainView instance] changeView:PhoneView_Dialer - calls:[NSArray arrayWithObjects: - [AbstractCall abstractCall:@"setAddress:", @""], - [AbstractCall abstractCall:@"setTransferMode:", [NSNumber numberWithInt: TRUE]], - nil]]; + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Dialer], DialerViewController); + if(controller != nil) { + [controller setAddress:@""]; + [controller setTransferMode:TRUE]; + } } - (IBAction)onOptionsAddClick:(id)sender { [self hideOptions]; - // Go to dialer view - [[PhoneMainView instance] changeView:PhoneView_Dialer - calls:[NSArray arrayWithObjects: - [AbstractCall abstractCall:@"setAddress:", @""], - [AbstractCall abstractCall:@"setTransferMode:", [NSNumber numberWithInt: FALSE]], - nil]]; + // Go to dialer view + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Dialer], DialerViewController); + if(controller != nil) { + [controller setAddress:@""]; + [controller setTransferMode:FALSE]; + } } - (IBAction)onOptionsClick:(id)sender { diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index 4ce25c3d7..2b913ee9c 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -19,7 +19,7 @@ #import "UIChatCell.h" #import "PhoneMainView.h" - +#import "Utils.h" @implementation UIChatCell @@ -125,11 +125,10 @@ - (IBAction)onDetailsClick: (id) event { // Go to Chat room view - [[PhoneMainView instance] changeView:PhoneView_ChatRoom - calls:[NSArray arrayWithObjects: - [AbstractCall abstractCall:@"setRemoteContact:", [chat remoteContact]], - nil] - push:TRUE]; + ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ChatRoom push:TRUE], ChatRoomViewController); + if(controller !=nil) { + [controller setRemoteContact:[chat remoteContact]]; + } } - (IBAction)onDeleteClick: (id) event { diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 9e4aae335..efdfd0277 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -20,6 +20,7 @@ #import "UIHistoryCell.h" #import "LinphoneManager.h" #import "PhoneMainView.h" +#import "Utils.h" @implementation UIHistoryCell @@ -69,11 +70,10 @@ - (IBAction)onDetails:(id) event { if(callLog != NULL) { // Go to History details view - [[PhoneMainView instance] changeView:PhoneView_HistoryDetails - calls:[NSArray arrayWithObjects: - [AbstractCall abstractCall:@"setCallLogValue:", [NSValue valueWithPointer: callLog]], - nil] - push:TRUE]; + HistoryDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_HistoryDetails push:TRUE], HistoryDetailsViewController); + if(controller != nil) { + [controller setCallLog:callLog]; + } } } diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 6b887e1b1..61234cdbe 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -20,10 +20,22 @@ #import #import "LinphoneManager.h" -#import "CallDelegate.h" #import "UICompositeViewController.h" #import "UIModalViewController.h" -#import "AbstractCall.h" + +#import "FirstLoginViewController.h" +#import "IncomingCallViewController.h" +#import "ChatRoomViewController.h" +#import "ChatViewController.h" +#import "DialerViewController.h" +#import "ContactsViewController.h" +#import "ContactDetailsViewController.h" +#import "HistoryViewController.h" +#import "HistoryDetailsViewController.h" +#import "InCallViewController.h" +#import "SettingsViewController.h" +#import "FirstLoginViewController.h" +#import "WizardViewController.h" typedef enum _PhoneView { PhoneView_Wizard, @@ -58,12 +70,9 @@ typedef enum _PhoneView { @property (nonatomic, retain) IBOutlet UICompositeViewController *mainViewController; -- (void)changeView:(PhoneView)view; -- (void)changeView:(PhoneView)view push:(BOOL)push; -- (void)changeView:(PhoneView)view calls:(NSArray *)calls; -- (void)changeView:(PhoneView)view calls:(NSArray *)calls push:(BOOL)push; -- (void)popView; -- (void)popView:(NSArray *)calls; +- (UIViewController*)changeView:(PhoneView)view; +- (UIViewController*)changeView:(PhoneView)view push:(BOOL)push; +- (UIViewController*)popView; - (void)showTabBar:(BOOL)show; - (void)fullScreen:(BOOL)enabled; - (PhoneView)currentView; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index d7dcb9114..e5eb6acd8 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -20,22 +20,7 @@ #import #import "PhoneMainView.h" - -#import "FirstLoginViewController.h" -#import "IncomingCallViewController.h" - -#import "ChatRoomViewController.h" -#import "ChatViewController.h" -#import "DialerViewController.h" -#import "ContactsViewController.h" -#import "ContactDetailsViewController.h" -#import "HistoryViewController.h" -#import "HistoryDetailsViewController.h" -#import "InCallViewController.h" -#import "SettingsViewController.h" -#import "FirstLoginViewController.h" -#import "WizardViewController.h" - +#import "Utils.h" #import "UIView+ModalStack.h" static PhoneMainView* phoneMainViewInstance=nil; @@ -236,11 +221,11 @@ static PhoneMainView* phoneMainViewInstance=nil; [self dismissIncomingCall:call]; if (canHideInCallView) { // Go to dialer view - [self changeView:PhoneView_Dialer - calls:[NSArray arrayWithObjects: - [AbstractCall abstractCall:@"setAddress:", @""], - [AbstractCall abstractCall:@"setTransferMode:", [NSNumber numberWithInt: FALSE]], - nil]]; + DialerViewController *controller = DYNAMIC_CAST([self changeView:PhoneView_Dialer], DialerViewController); + if(controller != nil) { + [controller setAddress:@""]; + [controller setTransferMode:FALSE]; + } } else { [self changeView:PhoneView_InCall]; } @@ -325,32 +310,24 @@ static PhoneMainView* phoneMainViewInstance=nil; [mainViewController setFullScreen:enabled]; } -- (void)changeView:(PhoneView)view { - [self changeView:view calls:nil push:FALSE]; +- (UIViewController*)changeView:(PhoneView)view { + return [self changeView:view push:FALSE]; } -- (void)changeView:(PhoneView)view calls:(NSArray *)dict { - [self changeView:view calls:dict push:FALSE]; -} - -- (void)changeView:(PhoneView)view push:(BOOL)push { - [self changeView:view calls:nil push:push]; -} - -- (void)changeView:(PhoneView)view calls:(NSArray *)calls push:(BOOL)push { +- (UIViewController*)changeView:(PhoneView)view push:(BOOL)push { if(push && currentView != -1) { [viewStack addObject:[NSNumber numberWithInt: currentView]]; } else { [viewStack removeAllObjects]; } - [self _changeView:view calls:calls transition:nil]; + return [self _changeView:view transition:nil]; } -- (void)_changeView:(PhoneView)view calls:(NSArray *)calls transition:(CATransition*)transition { +- (UIViewController*)_changeView:(PhoneView)view transition:(CATransition*)transition { NSLog(@"PhoneMainView: change view %d", view); UICompositeViewDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; if(description == nil) - return; + return nil; if(view != currentView) { if(transition == nil) @@ -360,28 +337,26 @@ static PhoneMainView* phoneMainViewInstance=nil; currentView = view; } - // Call abstractCall - if(calls != nil) { - for(AbstractCall *call in calls) { - [call call:[mainViewController getCurrentViewController]]; - } - } - NSDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithInt:currentView] forKey:@"view"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; + + return [mainViewController getCurrentViewController]; } -- (void)popView { - [self popView:nil]; +- (UIViewController*)popView { + return [self popView:nil]; } -- (void)popView:(NSArray *)calls { +- (UIViewController*)popView:(NSArray *)calls { NSLog(@"PhoneMainView: Pop!"); if([viewStack count] > 0) { PhoneView view = [[viewStack lastObject] intValue]; [viewStack removeLastObject]; - [self _changeView:view calls:calls transition:[PhoneMainView getBackwardTransition]]; + [self _changeView:view transition:[PhoneMainView getBackwardTransition]]; + + return [mainViewController getCurrentViewController]; } + return nil; } - (PhoneView)currentView { diff --git a/Classes/Utils/AbstractCall.m b/Classes/Utils/AbstractCall.m deleted file mode 100644 index 7c9f35780..000000000 --- a/Classes/Utils/AbstractCall.m +++ /dev/null @@ -1,90 +0,0 @@ -/* AbstractCall.m - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "AbstractCall.h" - -@implementation AbstractCall - -@synthesize functionName; -@synthesize functionArgs; - -+ (id)abstractCall:(NSString *)name, ... { - AbstractCall *object; - va_list args; - va_start(args, name); - object = [[AbstractCall alloc] init:name args:args]; - va_end(args); - return [object autorelease]; -} - -- (id)init:(NSString *)name, ... { - AbstractCall *object; - va_list args; - va_start(args, name); - object = [self init:name args:args]; - va_end(args); - return object; -} - -- (id)init:(NSString *)name args:(va_list)args { - self = [super init]; - if(self != nil) { - self->functionName = name; - NSMutableArray *array = [[NSMutableArray alloc] init]; - int count = 0; - for(int i = 0; i < [self->functionName length]; ++i) { - if([self->functionName characterAtIndex:i] == ':') { - ++count; - } - } - for (int i = 0; i < count; ++i) { - id arg = va_arg(args, id); - [array addObject:arg]; - } - self->functionArgs = array; - } - return self; -} - -- (void)dealloc { - [functionName release]; - [functionArgs release]; - - [super dealloc]; -} - -- (void)call:(id)object { - @try { - SEL selector = NSSelectorFromString(functionName); - NSMethodSignature *signature = [object methodSignatureForSelector:selector]; - NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; - [invocation setTarget:object]; - [invocation setSelector:selector]; - for(int i=0; i<[functionArgs count]; i++) - { - id arg = [functionArgs objectAtIndex:i]; - [invocation setArgument:&arg atIndex:i+2]; // The first two arguments are the hidden arguments self and _cmd - } - [invocation invoke]; // Invoke the selector - } @catch (NSException *exception) { - NSLog(@"Abstract Call: Can't call %@ with arguments %@ on %@", functionName, functionArgs, object); - } -} - -@end diff --git a/Classes/Utils/AbstractCall.h b/Classes/Utils/Utils.h similarity index 75% rename from Classes/Utils/AbstractCall.h rename to Classes/Utils/Utils.h index 0be1a57e0..26764f459 100644 --- a/Classes/Utils/AbstractCall.h +++ b/Classes/Utils/Utils.h @@ -1,4 +1,4 @@ -/* AbstractCall.h +/* Utils.h * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -17,19 +17,13 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import +#ifndef LINPHONE_UTILS_H +#define LINPHONE_UTILS_H +#define DYNAMIC_CAST(x, cls) \ + ({ \ + cls *inst_ = (cls *)(x); \ + [inst_ isKindOfClass:[cls class]]? inst_ : nil; \ + }) -@interface AbstractCall : NSObject { - NSString *functionName; - NSArray *functionArgs; -} - -@property (retain) NSString *functionName; -@property (retain) NSArray *functionArgs; - -+ (id)abstractCall:(NSString *)name, ...; -- (id)init:(NSString *)name, ...; -- (void)call:(id) object; - -@end +#endif diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index cf09ecf6a..da2906f04 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -633,8 +633,6 @@ D3ED3EB4158738FB006C0DE4 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; }; D3ED3EB81587392C006C0DE4 /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryViewController.m */; }; D3ED3EB91587392C006C0DE4 /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryViewController.m */; }; - D3F26BEC159869A6005F9CAB /* AbstractCall.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEB159869A6005F9CAB /* AbstractCall.m */; }; - D3F26BED159869A6005F9CAB /* AbstractCall.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEB159869A6005F9CAB /* AbstractCall.m */; }; D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */; }; D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */; }; D3F26BF315986B73005F9CAB /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; }; @@ -1088,6 +1086,7 @@ C90FAA7615AF54E6002091CB /* HistoryDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryDetailsViewController.h; sourceTree = ""; }; C90FAA7715AF54E6002091CB /* HistoryDetailsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryDetailsViewController.m; sourceTree = ""; }; C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryDetailsViewController.xib; sourceTree = ""; }; + C9B3A6FD15B485DB006F52EE /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = Utils/Utils.h; sourceTree = ""; }; C9C8253F15AE204D00D493FA /* options_add_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_disabled.png; path = Resources/options_add_disabled.png; sourceTree = ""; }; C9C8254015AE204D00D493FA /* options_transfer_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_disabled.png; path = Resources/options_transfer_disabled.png; sourceTree = ""; }; C9C8254115AE204D00D493FA /* transfer_call_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_call_default.png; path = Resources/transfer_call_default.png; sourceTree = ""; }; @@ -1393,8 +1392,6 @@ D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = ""; }; D3ED3EB515873928006C0DE4 /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = ""; }; D3ED3EB615873929006C0DE4 /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = HistoryViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - D3F26BEA159869A6005F9CAB /* AbstractCall.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AbstractCall.h; path = Utils/AbstractCall.h; sourceTree = ""; }; - D3F26BEB159869A6005F9CAB /* AbstractCall.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; name = AbstractCall.m; path = Utils/AbstractCall.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D3F26BEE15986B71005F9CAB /* IncomingCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IncomingCallViewController.h; sourceTree = ""; }; D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IncomingCallViewController.m; sourceTree = ""; }; D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IncomingCallViewController.xib; sourceTree = ""; }; @@ -2335,8 +2332,6 @@ D326483415887D4400930C67 /* Utils */ = { isa = PBXGroup; children = ( - D3F26BEA159869A6005F9CAB /* AbstractCall.h */, - D3F26BEB159869A6005F9CAB /* AbstractCall.m */, D38935F715A6D06800A3A3AA /* CPAnimation */, D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */, D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */, @@ -2344,6 +2339,7 @@ D326483715887D5200930C67 /* OrderedDictionary.m */, D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */, D3F9A9EB15AF27620045320F /* UACellBackgroundView */, + C9B3A6FD15B485DB006F52EE /* Utils.h */, ); name = Utils; sourceTree = ""; @@ -3150,7 +3146,6 @@ D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */, D3EA540D1598528B0037DC6B /* ChatTableViewController.m in Sources */, D3EA5411159853750037DC6B /* UIChatCell.m in Sources */, - D3F26BEC159869A6005F9CAB /* AbstractCall.m in Sources */, D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */, D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */, D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */, @@ -3240,7 +3235,6 @@ D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */, D3EA540E1598528B0037DC6B /* ChatTableViewController.m in Sources */, D3EA5412159853750037DC6B /* UIChatCell.m in Sources */, - D3F26BED159869A6005F9CAB /* AbstractCall.m in Sources */, D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */, D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */, D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */, From 0b2236f00775e746e7f84ef439a5422e2828ca19 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 17 Jul 2012 10:48:14 +0200 Subject: [PATCH 049/397] Clean Linphone Manager Improve logs --- Classes/CallDelegate.m | 7 +- Classes/ContactDetailsTableViewController.m | 8 +- Classes/ContactDetailsViewController.m | 28 +- Classes/ContactsTableViewController.m | 2 +- Classes/ContactsViewController.m | 1 - Classes/InCallTableViewController.m | 2 +- Classes/InCallViewController.m | 4 +- Classes/InCallViewController.xib | 10 +- Classes/LinphoneAppDelegate.m | 10 +- Classes/LinphoneCoreSettingsStore.m | 14 +- Classes/LinphoneManager.h | 17 +- Classes/LinphoneManager.m | 490 +++++++++--------- Classes/LinphoneUI/UIBluetoothButton.m | 22 +- Classes/LinphoneUI/UICallBar.m | 4 + Classes/LinphoneUI/UICallBar.xib | 18 +- Classes/LinphoneUI/UICallCell.m | 162 +++--- Classes/LinphoneUI/UICamSwitch.m | 52 +- Classes/LinphoneUI/UIChatCell.m | 12 +- Classes/LinphoneUI/UIChatRoomCell.m | 7 +- Classes/LinphoneUI/UIChatRoomHeader.m | 10 +- .../LinphoneUI/UICompositeViewController.xib | 13 +- Classes/LinphoneUI/UIContactCell.m | 7 +- Classes/LinphoneUI/UIContactDetailsHeader.m | 40 +- Classes/LinphoneUI/UIDigitButton.m | 8 + Classes/LinphoneUI/UIEraseButton.m | 1 + Classes/LinphoneUI/UIHangUpButton.m | 7 +- Classes/LinphoneUI/UIHistoryCell.m | 4 + Classes/LinphoneUI/UILongTouchButton.m | 4 - Classes/LinphoneUI/UIMicroButton.m | 10 +- Classes/LinphoneUI/UIPauseButton.m | 20 +- Classes/LinphoneUI/UISpeakerButton.m | 6 +- Classes/LinphoneUI/UIStateBar.m | 8 +- .../{UIPassView.h => UITransparentView.h} | 4 +- .../{UIPassView.m => UITransparentView.m} | 6 +- Classes/LinphoneUI/UIVideoButton.m | 16 +- Classes/Model/ChatModel.m | 54 +- Classes/MoreViewController.m | 2 +- Classes/PhoneMainView.m | 6 +- Classes/SettingsViewController.m | 2 +- Classes/Utils/Utils.h | 17 + Classes/Utils/Utils.m | 62 +++ linphone.xcodeproj/project.pbxproj | 22 +- 42 files changed, 675 insertions(+), 524 deletions(-) rename Classes/LinphoneUI/{UIPassView.h => UITransparentView.h} (94%) rename Classes/LinphoneUI/{UIPassView.m => UITransparentView.m} (94%) create mode 100644 Classes/Utils/Utils.m diff --git a/Classes/CallDelegate.m b/Classes/CallDelegate.m index b7b6ed366..982a99ff1 100644 --- a/Classes/CallDelegate.m +++ b/Classes/CallDelegate.m @@ -18,6 +18,7 @@ */ #import "CallDelegate.h" +#import "Utils.h" @implementation CallDelegate @@ -32,7 +33,7 @@ timeout = nil; } if (eventType == CD_UNDEFINED) { - ms_error("Incorrect usage of CallDelegate/ActionSheet: eventType must be set"); + [LinphoneLogger logc:LinphoneLoggerError format:"Incorrect usage of CallDelegate/ActionSheet: eventType must be set"]; } [delegate actionSheet:actionSheet ofType:eventType clickedButtonAtIndex:buttonIndex withUserDatas:call]; } @@ -47,7 +48,7 @@ if (buttonIndex != actionSheet.cancelButtonIndex) return; if (eventType == CD_UNDEFINED) { - ms_error("Incorrect usage of CallDelegate/ActionSheet: eventType must be set"); + [LinphoneLogger logc:LinphoneLoggerError format:"Incorrect usage of CallDelegate/ActionSheet: eventType must be set"]; } [delegate actionSheet:actionSheet ofType:eventType clickedButtonAtIndex:buttonIndex withUserDatas:call]; @@ -59,7 +60,7 @@ timeout = nil; } if (eventType == CD_UNDEFINED) { - ms_error("Incorrect usage of CallDelegate/ActionSheet: eventType must be set"); + [LinphoneLogger logc:LinphoneLoggerError format:"Incorrect usage of CallDelegate/ActionSheet: eventType must be set"]; } [delegate actionSheet:actionSheet ofType:eventType clickedButtonAtIndex:actionSheet.cancelButtonIndex withUserDatas:call]; } diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 4d9701168..65282e6e9 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -164,7 +164,7 @@ if(contact == NULL) return; - NSLog(@"Load data from contact %p", contact); + [LinphoneLogger logc:LinphoneLoggerLog format:"Load data from contact %p", contact]; // Phone numbers { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); @@ -242,7 +242,7 @@ [entry release]; } else { added = false; - NSLog(@"Can't add entry: %@", [error localizedDescription]); + [LinphoneLogger log:LinphoneLoggerLog format:@"Can't add entry: %@", [error localizedDescription]]; } CFRelease(lMap); } else if(section == 1) { @@ -270,7 +270,7 @@ [entry release]; } else { added = false; - NSLog(@"Can't add entry: %@", [error localizedDescription]); + [LinphoneLogger log:LinphoneLoggerError format:@"Can't add entry: %@", [error localizedDescription]]; } CFRelease(lMap); } @@ -670,7 +670,7 @@ } [cell.detailTextLabel setText:value]; } else { - NSLog(@"Not valid UIEditableTableViewCell"); + [LinphoneLogger logc:LinphoneLoggerError format:"Not valid UIEditableTableViewCell"]; } return TRUE; } diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 3e376fdfd..43b5aa030 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -62,7 +62,7 @@ return; } - NSLog(@"Reset data to contact %p", contact); + [LinphoneLogger logc:LinphoneLoggerLog format:"Reset data to contact %p", contact]; ABRecordID recordID = ABRecordGetRecordID(contact); ABAddressBookRevert(addressBook); contact = ABAddressBookGetPersonWithRecordID(addressBook, recordID); @@ -91,9 +91,9 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf NSError* error = NULL; ABAddressBookRemoveRecord(addressBook, contact, (CFErrorRef*)&error); if (error != NULL) { - NSLog(@"Remove contact %p: Fail(%@)", contact, [error localizedDescription]); + [LinphoneLogger log:LinphoneLoggerError format:@"Remove contact %p: Fail(%@)", contact, [error localizedDescription]]; } else { - NSLog(@"Remove contact %p: Success!", contact); + [LinphoneLogger logc:LinphoneLoggerLog format:"Remove contact %p: Success!", contact]; } contact = NULL; @@ -103,9 +103,9 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf ABAddressBookSave(addressBook, (CFErrorRef*)&error); inhibUpdate = FALSE; if (error != NULL) { - NSLog(@"Save AddressBook: Fail(%@)", [error localizedDescription]); + [LinphoneLogger log:LinphoneLoggerError format:@"Save AddressBook: Fail(%@)", [error localizedDescription]]; } else { - NSLog(@"Save AddressBook: Success!"); + [LinphoneLogger logc:LinphoneLoggerLog format:"Save AddressBook: Success!"]; } } } @@ -121,9 +121,9 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf if(ABRecordGetRecordID(contact) == kABRecordInvalidID) { ABAddressBookAddRecord(addressBook, contact, (CFErrorRef*)&error); if (error != NULL) { - NSLog(@"Add contact %p: Fail(%@)", contact, [error localizedDescription]); + [LinphoneLogger log:LinphoneLoggerError format:@"Add contact %p: Fail(%@)", contact, [error localizedDescription]]; } else { - NSLog(@"Add contact %p: Success!", contact); + [LinphoneLogger logc:LinphoneLoggerLog format:"Add contact %p: Success!", contact]; } } @@ -133,14 +133,14 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf ABAddressBookSave(addressBook, (CFErrorRef*)&error); inhibUpdate = FALSE; if (error != NULL) { - NSLog(@"Save AddressBook: Fail(%@)", [error localizedDescription]); + [LinphoneLogger log:LinphoneLoggerError format:@"Save AddressBook: Fail(%@)", [error localizedDescription]]; } else { - NSLog(@"Save AddressBook: Success!"); + [LinphoneLogger logc:LinphoneLoggerLog format:"Save AddressBook: Success!"]; } } - (void)newContact { - NSLog(@"New contact"); + [LinphoneLogger logc:LinphoneLoggerLog format:"New contact"]; self->contact = ABPersonCreate(); [tableController setContact:self->contact]; [self enableEdit:FALSE]; @@ -148,7 +148,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } - (void)newContact:(NSString*)address { - NSLog(@"New contact"); + [LinphoneLogger logc:LinphoneLoggerLog format:"New contact"]; self->contact = ABPersonCreate(); [tableController setContact:self->contact]; [tableController addSipField:address]; @@ -157,7 +157,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } - (void)editContact:(ABRecordRef)acontact { - NSLog(@"Edit contact %p", acontact); + [LinphoneLogger logc:LinphoneLoggerLog format:"Edit contact %p", acontact]; self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; [self enableEdit:FALSE]; @@ -165,7 +165,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } - (void)editContact:(ABRecordRef)acontact address:(NSString*)address { - NSLog(@"Edit contact %p", acontact); + [LinphoneLogger logc:LinphoneLoggerLog format:"Edit contact %p", acontact]; self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; [tableController addSipField:address]; @@ -177,7 +177,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf #pragma mark - Property Functions - (void)setContact:(ABRecordRef)acontact { - NSLog(@"set contact %p", acontact); + [LinphoneLogger logc:LinphoneLoggerLog format:"Set contact %p", acontact]; self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; [self disableEdit:FALSE]; diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index fd8bea406..76b9b9c4c 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -76,7 +76,7 @@ #pragma mark - - (void)reloadData { - NSLog(@"Load contact list"); + [LinphoneLogger logc:LinphoneLoggerLog format:"Load contact list"]; @synchronized (addressBookMap) { // Reset Address book diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 7aa950af7..cefb5d147 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -103,7 +103,6 @@ typedef enum _HistoryView { - (void)viewDidLoad { [super viewDidLoad]; - [self changeView: History_All]; // Set selected+over background: IB lack ! [linphoneButton setImage:[UIImage imageNamed:@"contacts_linphone_selected.png"] diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index 533dec6fe..155fbc632 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -121,7 +121,7 @@ enum TableSection { } if (calls == 0) { - ms_error("Cannot find call with index %d (in conf: %d)", index, conf); + [LinphoneLogger logc:LinphoneLoggerError format:"Cannot find call with index %d (in conf: %d)", index, conf]; return nil; } else { return (LinphoneCall*)calls->data; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index d880c617a..bf72436ca 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -469,7 +469,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { linphone_core_accept_call_update([LinphoneManager getLc], call, paramsCopy); } else { // decline video - ms_message("User declined video proposal"); + [LinphoneLogger logc:LinphoneLoggerLog format:"User declined video proposal"]; linphone_core_accept_call_update([LinphoneManager getLc], call, NULL); } linphone_call_params_destroy(paramsCopy); @@ -477,7 +477,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { break; } default: - ms_error("Unhandled CallDelegate event of type: %d received - ignoring", type); + [LinphoneLogger logc:LinphoneLoggerError format:"Unhandled CallDelegate event of type: %d received - ignoring", type]; } } diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 4d3193769..8f79f3993 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -264,6 +264,14 @@ 169 + + + preview + + + + 172 + view @@ -413,7 +421,7 @@ - 171 + 172 diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 6f9234573..3233247dd 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -47,14 +47,14 @@ int __aeabi_idiv(int a, int b) { int callCount = [ct.currentCalls count]; if (!callCount) { - NSLog(@"No GSM call -> enabling SIP calls"); + [LinphoneLogger logc:LinphoneLoggerLog format:"No GSM call -> enabling SIP calls"]; linphone_core_set_max_calls([LinphoneManager getLc], 3); } else { - NSLog(@"%d GSM call(s) -> disabling SIP calls", callCount); + [LinphoneLogger logc:LinphoneLoggerLog format:"%d GSM call(s) -> disabling SIP calls", callCount]; /* pause current call, if any */ LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); if (call) { - NSLog(@"Pausing SIP call"); + [LinphoneLogger logc:LinphoneLoggerLog format:"Pausing SIP call"]; linphone_core_pause_call([LinphoneManager getLc], call); } linphone_core_set_max_calls([LinphoneManager getLc], 0); @@ -134,7 +134,7 @@ int __aeabi_idiv(int a, int b) { - (void)loadDefaultSettings:(NSDictionary *) appDefaults { for(NSString* key in appDefaults){ - NSLog(@"Overload %@ to in app settings.", key); + [LinphoneLogger log:LinphoneLoggerLog format:@"Overload %@ to in app settings.", key]; [[[LinphoneManager instance] settingsStore] setObject:[appDefaults objectForKey:key] forKey:key]; } [[[LinphoneManager instance] settingsStore] synchronize]; @@ -212,7 +212,7 @@ int __aeabi_idiv(int a, int b) { LinphoneCall* call; [(NSData*)([notification.userInfo objectForKey:@"call"]) getBytes:&call]; if (!call) { - ms_warning("Local notification received with nil call"); + [LinphoneLogger logc:LinphoneLoggerWarning format:"Local notification received with nil call"]; return; } linphone_core_accept_call([LinphoneManager getLc], call); diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index ec00af1cf..7a57b6f42 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -29,11 +29,11 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); NSUserDefaults *oldconfig=[NSUserDefaults standardUserDefaults]; NSArray *allkeys=[[oldconfig dictionaryRepresentation] allKeys]; for(NSString* key in allkeys){ - NSLog(@"Migrating old config item %@ to in app settings.",key); + [LinphoneLogger log:LinphoneLoggerLog format:@"Migrating old config item %@ to in app settings.",key]; [self setObject:[oldconfig objectForKey:key] forKey:key]; } [self synchronize]; - NSLog(@"Migration done"); + [LinphoneLogger logc:LinphoneLoggerLog format:"Migration done"]; } - (id)init { @@ -82,8 +82,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); bool_t value = linphone_core_payload_type_enabled(lc,pt); [self setBool:value forKey: pref]; }else{ - ms_warning("Codec %s/%i supported by core is not shown in iOS app config view.", - pt->mime_type,pt->clock_rate); + [LinphoneLogger logc:LinphoneLoggerWarning format:"Codec %s/%i supported by core is not shown in iOS app config view.", + pt->mime_type,pt->clock_rate]; } } } @@ -230,7 +230,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); LCSipTransports transportValue={0}; if (transport!=nil) { if (linphone_core_get_sip_transports(lc, &transportValue)) { - ms_error("cannot get current transport"); + [LinphoneLogger logc:LinphoneLoggerError format:"cannot get current transport"]; } // Only one port can be set at one time, the others's value is 0 if ([transport isEqualToString:@"tcp"]) { @@ -246,10 +246,10 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); transportValue.tcp_port=0; transportValue.udp_port=0; } else { - ms_error("unexpected transport [%s]",[transport cStringUsingEncoding:[NSString defaultCStringEncoding]]); + [LinphoneLogger logc:LinphoneLoggerError format:"unexpected transport [%s]",[transport cStringUsingEncoding:[NSString defaultCStringEncoding]]]; } if (linphone_core_set_sip_transports(lc, &transportValue)) { - ms_error("cannot set transport"); + [LinphoneLogger logc:LinphoneLoggerError format:"cannot set transport"]; } } diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index f26854c1d..3fec4a53f 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -27,6 +27,7 @@ #import "IASKSettingsStore.h" #import "IASKAppSettingsViewController.h" #import "FastAddressBook.h" +#import "Utils.h" #include "linphonecore.h" @@ -38,8 +39,6 @@ typedef enum _Connectivity { ,none } Connectivity; -@class FastAddressBook; - /* Application specific call context */ typedef struct _CallContext { LinphoneCall* call; @@ -63,7 +62,6 @@ typedef struct _LinphoneCallAppData { @private NSTimer* mIterateTimer; - id mLogView; bool isbackgroundModeEnabled; Connectivity connectivity; @@ -82,28 +80,25 @@ typedef struct _LinphoneCallAppData { + (LinphoneCore*) getLc; + (BOOL)isLcReady; + (BOOL)runningOnIpad; -- (void)registerLogView:(id) view; - ++ (BOOL)isNotIphone3G; + (NSString *)getPreferenceForCodec: (const char*) name withRate: (int) rate; + (BOOL)codecIsSupported:(NSString *) prefName; - - -- (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer; - (void)startLibLinphone; -- (BOOL)isNotIphone3G; - (void)destroyLibLinphone; - - (BOOL)enterBackgroundMode; - (void)becomeActive; -- (void)kickOffNetworkConnection; +- (void)kickOffNetworkConnection; - (void)setupNetworkReachabilityCallback; + - (void)refreshRegisters; - (void)enableSpeaker:(BOOL)enable; - (BOOL)isSpeakerEnabled; +- (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer; + @property (nonatomic, retain) id settingsStore; @property (readonly) FastAddressBook* fastAddressBook; @property Connectivity connectivity; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index fed5147d7..021416385 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -110,6 +110,41 @@ struct codec_name_pref_table codec_pref_table[]={ return TRUE; } ++ (BOOL)runningOnIpad { +#ifdef UI_USER_INTERFACE_IDIOM + return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); +#else + return NO; +#endif +} + ++ (BOOL)isNotIphone3G +{ + static BOOL done=FALSE; + static BOOL result; + if (!done){ + size_t size; + sysctlbyname("hw.machine", NULL, &size, NULL, 0); + char *machine = malloc(size); + sysctlbyname("hw.machine", machine, &size, NULL, 0); + NSString *platform = [[NSString alloc ] initWithUTF8String:machine]; + free(machine); + + result = ![platform isEqualToString:@"iPhone1,2"]; + + [platform release]; + done=TRUE; + } + return result; +} + ++ (LinphoneManager*)instance { + return theLinphoneManager; +} + + +#pragma mark - Lifecycle Functions + - (id)init { assert (!theLinphoneManager); if ((self = [super init])) { @@ -129,6 +164,9 @@ struct codec_name_pref_table codec_pref_table[]={ [super dealloc]; } + +#pragma mark - Database Functions + - (void)openDatabase { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsPath = [paths objectAtIndex:0]; @@ -139,32 +177,82 @@ struct codec_name_pref_table codec_pref_table[]={ NSError *error = nil; //[fileManager removeItemAtPath:databaseDocumentPath error:&error]; //TODO REMOVE if ([fileManager fileExistsAtPath:databaseDocumentPath] == NO) { - NSLog(@"Create sqlite 3 database"); + [LinphoneLogger logc:LinphoneLoggerLog format:"Create sqlite3 database"]; NSString *resourceDocumentPath = [[NSBundle mainBundle] pathForResource:@"database" ofType:@"sqlite"]; [fileManager copyItemAtPath:resourceDocumentPath toPath:databaseDocumentPath error:&error]; if(error != nil) { - NSLog(@"Can't copy database: %@", [error localizedDescription]); + [LinphoneLogger log:LinphoneLoggerError format:@"Can't copy database: %@", [error localizedDescription]]; return; } } if(sqlite3_open([databaseDocumentPath UTF8String], &database) != SQLITE_OK) { - NSLog(@"Can't open \"%@\" sqlite3 database.", databaseDocumentPath); + [LinphoneLogger log:LinphoneLoggerError format:@"Can't open \"%@\" sqlite3 database.", databaseDocumentPath]; } } - (void)closeDatabase { if(database != NULL) { if(sqlite3_close(database) != SQLITE_OK) { - NSLog(@"Can't close sqlite3 database."); + [LinphoneLogger logc:LinphoneLoggerError format:"Can't close sqlite3 database."]; } } } -+ (LinphoneManager*)instance { - return theLinphoneManager; + +#pragma mark - Linphone Core Functions + ++ (LinphoneCore*)getLc { + if (theLinphoneCore==nil) { + @throw([NSException exceptionWithName:@"LinphoneCoreException" reason:@"Linphone core not initialized yet" userInfo:nil]); + } + return theLinphoneCore; } ++ (BOOL)isLcReady { + return theLinphoneCore != nil; +} + + +#pragma mark - Logs Functions + +//generic log handler for debug version +void linphone_iphone_log_handler(int lev, const char *fmt, va_list args){ + NSString* format = [NSString stringWithUTF8String:fmt]; + NSLogv(format, args); + NSString* formatedString = [[NSString alloc] initWithFormat:format arguments:args]; + //[[LinphoneManager instance] addLog:formatedString]; + [formatedString release]; +} + +//Error/warning log handler +static void linphone_iphone_log(struct _LinphoneCore * lc, const char * message) { + NSString* log = [NSString stringWithCString:message encoding:[NSString defaultCStringEncoding]]; + NSLog(log, NULL); + //[[LinphoneManager instance] addLog:log]; +} + + +#pragma mark - Display Status Functions + +- (void)displayStatus:(NSString*) message { + // Post event + NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: + message, @"message", + nil] autorelease]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneDisplayStatus" object:self userInfo:dict]; +} + + +static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char * message) { + NSString* status = [[NSString alloc] initWithCString:message encoding:[NSString defaultCStringEncoding]]; + [(LinphoneManager*)linphone_core_get_user_data(lc) displayStatus:status]; + [status release]; +} + + +#pragma mark - Call State Functions + - (void)onCall:(LinphoneCall*)call StateChanged:(LinphoneCallState)state withMessage:(const char *)message { // Handling wrapper if(state == LinphoneCallReleased) { @@ -187,88 +275,27 @@ struct codec_name_pref_table codec_pref_table[]={ // Post event NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - [NSValue valueWithPointer:call], @"call", - [NSNumber numberWithInt:state], @"state", - [NSString stringWithUTF8String:message], @"message", nil] autorelease]; + [NSValue valueWithPointer:call], @"call", + [NSNumber numberWithInt:state], @"state", + [NSString stringWithUTF8String:message], @"message", nil] autorelease]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self userInfo:dict]; } -+ (LinphoneCore*)getLc { - if (theLinphoneCore==nil) { - @throw([NSException exceptionWithName:@"LinphoneCoreException" reason:@"Linphone core not initialized yet" userInfo:nil]); - } - return theLinphoneCore; -} - -+ (BOOL)isLcReady { - return theLinphoneCore != nil; -} - -- (void)addLog:(NSString*) log { - [mLogView addLog:log]; -} - -- (void)displayStatus:(NSString*) message { - // Post event - NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: - message, @"message", - nil] autorelease]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneDisplayStatus" object:self userInfo:dict]; -} - -//generic log handler for debug version -void linphone_iphone_log_handler(int lev, const char *fmt, va_list args){ - NSString* format = [[NSString alloc] initWithCString:fmt encoding:[NSString defaultCStringEncoding]]; - NSLogv(format,args); - NSString* formatedString = [[NSString alloc] initWithFormat:format arguments:args]; - [[LinphoneManager instance] addLog:formatedString]; - [format release]; - [formatedString release]; -} - -//Error/warning log handler -static void linphone_iphone_log(struct _LinphoneCore * lc, const char * message) { - NSString* log = [NSString stringWithCString:message encoding:[NSString defaultCStringEncoding]]; - NSLog(log,NULL); - [[LinphoneManager instance]addLog:log]; -} -//status -static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char * message) { - NSString* status = [[NSString alloc] initWithCString:message encoding:[NSString defaultCStringEncoding]]; - [(LinphoneManager*)linphone_core_get_user_data(lc) displayStatus:status]; - [status release]; -} - static void linphone_iphone_call_state(LinphoneCore *lc, LinphoneCall* call, LinphoneCallState state,const char* message) { - /*LinphoneCallIdle, - LinphoneCallIncomingReceived, - LinphoneCallOutgoingInit, - LinphoneCallOutgoingProgress, - LinphoneCallOutgoingRinging, - LinphoneCallOutgoingEarlyMedia, - LinphoneCallConnected, - LinphoneCallStreamsRunning, - LinphoneCallPausing, - LinphoneCallPaused, - LinphoneCallResuming, - LinphoneCallRefered, - LinphoneCallError, - LinphoneCallEnd, - LinphoneCallPausedByRemote - */ [(LinphoneManager*)linphone_core_get_user_data(lc) onCall:call StateChanged: state withMessage: message]; } + +#pragma mark - Transfert State Functions + static void linphone_iphone_transfer_state_changed(LinphoneCore* lc, LinphoneCall* call, LinphoneCallState state) { - /* - LinhoneCallOutgoingProgress -> SalReferTrying - LinphoneCallConnected -> SalReferSuccess - LinphoneCallError -> SalReferFailed | * - */ } + +#pragma mark - Registration State Functions + -(void) onRegister:(LinphoneCore *)lc cfg:(LinphoneProxyConfig*) cfg state:(LinphoneRegistrationState) state message:(const char*) message { - ms_warning("NEW REGISTRATION STATE: '%s' (message: '%s')", linphone_registration_state_to_string(state), message); + [LinphoneLogger logc:LinphoneLoggerLog format:"NEW REGISTRATION STATE: '%s' (message: '%s')", linphone_registration_state_to_string(state), message]; // Post event NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: @@ -283,6 +310,9 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo [(LinphoneManager*)linphone_core_get_user_data(lc) onRegister:lc cfg:cfg state:state message:message]; } + +#pragma mark - Text Received Functions + - (void)onTextReceived:(LinphoneCore *)lc room:(LinphoneChatRoom *)room from:(const LinphoneAddress *)from message:(const char *)message { // Save message in database @@ -307,21 +337,8 @@ static void linphone_iphone_text_received(LinphoneCore *lc, LinphoneChatRoom *ro [(LinphoneManager*)linphone_core_get_user_data(lc) onTextReceived:lc room:room from:from message:message]; } -static LinphoneCoreVTable linphonec_vtable = { - .show =NULL, - .call_state_changed =(LinphoneCallStateCb)linphone_iphone_call_state, - .registration_state_changed = linphone_iphone_registration_state, - .notify_recv = NULL, - .new_subscription_request = NULL, - .auth_info_requested = NULL, - .display_status = linphone_iphone_display_status, - .display_message=linphone_iphone_log, - .display_warning=linphone_iphone_log, - .display_url=NULL, - .text_received=linphone_iphone_text_received, - .dtmf_received=NULL, - .transfer_state_changed=linphone_iphone_transfer_state_changed -}; + +#pragma mark - Network Functions - (void)kickOffNetworkConnection { /*start a new thread to avoid blocking the main ui in case of peer host failure*/ @@ -338,24 +355,24 @@ static LinphoneCoreVTable linphonec_vtable = { } static void showNetworkFlags(SCNetworkReachabilityFlags flags){ - ms_message("Network connection flags:"); - if (flags==0) ms_message("no flags."); + [LinphoneLogger logc:LinphoneLoggerLog format:"Network connection flags:"]; + if (flags==0) [LinphoneLogger logc:LinphoneLoggerLog format:"no flags."]; if (flags & kSCNetworkReachabilityFlagsTransientConnection) - ms_message("kSCNetworkReachabilityFlagsTransientConnection"); + [LinphoneLogger logc:LinphoneLoggerLog format:"kSCNetworkReachabilityFlagsTransientConnection"]; if (flags & kSCNetworkReachabilityFlagsReachable) - ms_message("kSCNetworkReachabilityFlagsReachable"); + [LinphoneLogger logc:LinphoneLoggerLog format:"kSCNetworkReachabilityFlagsReachable"]; if (flags & kSCNetworkReachabilityFlagsConnectionRequired) - ms_message("kSCNetworkReachabilityFlagsConnectionRequired"); + [LinphoneLogger logc:LinphoneLoggerLog format:"kSCNetworkReachabilityFlagsConnectionRequired"]; if (flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) - ms_message("kSCNetworkReachabilityFlagsConnectionOnTraffic"); + [LinphoneLogger logc:LinphoneLoggerLog format:"kSCNetworkReachabilityFlagsConnectionOnTraffic"]; if (flags & kSCNetworkReachabilityFlagsConnectionOnDemand) - ms_message("kSCNetworkReachabilityFlagsConnectionOnDemand"); + [LinphoneLogger logc:LinphoneLoggerLog format:"kSCNetworkReachabilityFlagsConnectionOnDemand"]; if (flags & kSCNetworkReachabilityFlagsIsLocalAddress) - ms_message("kSCNetworkReachabilityFlagsIsLocalAddress"); + [LinphoneLogger logc:LinphoneLoggerLog format:"kSCNetworkReachabilityFlagsIsLocalAddress"]; if (flags & kSCNetworkReachabilityFlagsIsDirect) - ms_message("kSCNetworkReachabilityFlagsIsDirect"); + [LinphoneLogger logc:LinphoneLoggerLog format:"kSCNetworkReachabilityFlagsIsDirect"]; if (flags & kSCNetworkReachabilityFlagsIsWWAN) - ms_message("kSCNetworkReachabilityFlagsIsWWAN"); + [LinphoneLogger logc:LinphoneLoggerLog format:"kSCNetworkReachabilityFlagsIsWWAN"]; } void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void* nilCtx){ @@ -399,7 +416,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach linphone_proxy_config_expires(proxy, 0); } linphone_core_set_network_reachable([LinphoneManager getLc],true); - ms_message("Network connectivity changed to type [%s]",(newConnectivity==wifi?"wifi":"wwan")); + [LinphoneLogger logc:LinphoneLoggerLog format:"Network connectivity changed to type [%s]",(newConnectivity==wifi?"wifi":"wwan")]; } lLinphoneMgr.connectivity=newConnectivity; } @@ -409,111 +426,12 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } -- (BOOL)isNotIphone3G -{ - static BOOL done=FALSE; - static BOOL result; - if (!done){ - size_t size; - sysctlbyname("hw.machine", NULL, &size, NULL, 0); - char *machine = malloc(size); - sysctlbyname("hw.machine", machine, &size, NULL, 0); - NSString *platform = [[NSString alloc ] initWithUTF8String:machine]; - free(machine); - - result = ![platform isEqualToString:@"iPhone1,2"]; - - [platform release]; - done=TRUE; - } - return result; -} - -// no proxy configured alert -- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { - if (buttonIndex == 1) { - [[[LinphoneManager instance] settingsStore] setBool:true forKey:@"check_config_disable_preference"]; - } -} - -- (void)destroyLibLinphone { - [mIterateTimer invalidate]; - AVAudioSession *audioSession = [AVAudioSession sharedInstance]; - [audioSession setDelegate:nil]; - if (theLinphoneCore != nil) { //just in case application terminate before linphone core initialization - NSLog(@"Destroy linphonecore"); - linphone_core_destroy(theLinphoneCore); - theLinphoneCore = nil; - SCNetworkReachabilityUnscheduleFromRunLoop(proxyReachability, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); - if (proxyReachability) - CFRelease(proxyReachability); - proxyReachability=nil; - - } - -} - -//**********************BG mode management*************************/////////// -- (BOOL)enterBackgroundMode { - LinphoneProxyConfig* proxyCfg; - linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg); - linphone_core_stop_dtmf_stream(theLinphoneCore); - - if (proxyCfg && [settingsStore boolForKey:@"backgroundmode_preference"]) { - //For registration register - linphone_core_refresh_registers(theLinphoneCore); - - - //wait for registration answer - int i=0; - while (!linphone_proxy_config_is_registered(proxyCfg) && i++<40 ) { - linphone_core_iterate(theLinphoneCore); - usleep(100000); - } - //register keepalive - if ([[UIApplication sharedApplication] setKeepAliveTimeout:600/*(NSTimeInterval)linphone_proxy_config_get_expires(proxyCfg)*/ - handler:^{ - ms_warning("keepalive handler"); - if (theLinphoneCore == nil) { - ms_warning("It seems that Linphone BG mode was deactivated, just skipping"); - return; - } - //kick up network cnx, just in case - [self kickOffNetworkConnection]; - [self refreshRegisters]; - linphone_core_iterate(theLinphoneCore); - } - ]) { - - - ms_message("keepalive handler succesfully registered"); - } else { - ms_warning("keepalive handler cannot be registered"); - } - LCSipTransports transportValue; - if (linphone_core_get_sip_transports(theLinphoneCore, &transportValue)) { - ms_error("cannot get current transport"); - } - return YES; - } - else { - ms_message("Entering lite bg mode"); - [self destroyLibLinphone]; - return NO; - } -} - -//scheduling loop -- (void)iterate { - linphone_core_iterate(theLinphoneCore); -} - - (void)setupNetworkReachabilityCallback { SCNetworkReachabilityContext *ctx=NULL; const char *nodeName="linphone.org"; if (proxyReachability) { - ms_message("Cancelling old network reachability"); + [LinphoneLogger logc:LinphoneLoggerLog format:"Cancelling old network reachability"]; SCNetworkReachabilityUnscheduleFromRunLoop(proxyReachability, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); CFRelease(proxyReachability); proxyReachability = nil; @@ -524,25 +442,45 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach //initial state is network off should be done as soon as possible SCNetworkReachabilityFlags flags; if (!SCNetworkReachabilityGetFlags(proxyReachability, &flags)) { - ms_error("Cannot get reachability flags: %s", SCErrorString(SCError())); + [LinphoneLogger logc:LinphoneLoggerError format:"Cannot get reachability flags: %s", SCErrorString(SCError())]; return; } networkReachabilityCallBack(proxyReachability, flags, ctx ? ctx->info : 0); if (!SCNetworkReachabilitySetCallback(proxyReachability, (SCNetworkReachabilityCallBack)networkReachabilityCallBack, ctx)){ - ms_error("Cannot register reachability cb: %s", SCErrorString(SCError())); + [LinphoneLogger logc:LinphoneLoggerError format:"Cannot register reachability cb: %s", SCErrorString(SCError())]; return; } if(!SCNetworkReachabilityScheduleWithRunLoop(proxyReachability, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode)){ - ms_error("Cannot register schedule reachability cb: %s", SCErrorString(SCError())); + [LinphoneLogger logc:LinphoneLoggerError format:"Cannot register schedule reachability cb: %s", SCErrorString(SCError())]; return; } } -/************* - *lib linphone init method - */ +#pragma mark - + +static LinphoneCoreVTable linphonec_vtable = { + .show =NULL, + .call_state_changed =(LinphoneCallStateCb)linphone_iphone_call_state, + .registration_state_changed = linphone_iphone_registration_state, + .notify_recv = NULL, + .new_subscription_request = NULL, + .auth_info_requested = NULL, + .display_status = linphone_iphone_display_status, + .display_message=linphone_iphone_log, + .display_warning=linphone_iphone_log, + .display_url=NULL, + .text_received=linphone_iphone_text_received, + .dtmf_received=NULL, + .transfer_state_changed=linphone_iphone_transfer_state_changed +}; + +//scheduling loop +- (void)iterate { + linphone_core_iterate(theLinphoneCore); +} + - (void)startLibLinphone { //get default config from bundle @@ -572,7 +510,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach #endif /* Initialize linphone core*/ - NSLog(@"Create linphonecore"); + [LinphoneLogger logc:LinphoneLoggerLog format:"Create linphonecore"]; theLinphoneCore = linphone_core_new (&linphonec_vtable , [confiFileName cStringUsingEncoding:[NSString defaultCStringEncoding]] , [factoryConfig cStringUsingEncoding:[NSString defaultCStringEncoding]] @@ -617,7 +555,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach NSString* path = [myBundle pathForResource:@"nowebcamCIF" ofType:@"jpg"]; if (path) { const char* imagePath = [path cStringUsingEncoding:[NSString defaultCStringEncoding]]; - ms_message("Using '%s' as source image for no webcam", imagePath); + [LinphoneLogger logc:LinphoneLoggerLog format:"Using '%s' as source image for no webcam", imagePath]; linphone_core_set_static_picture(theLinphoneCore, imagePath); } @@ -639,11 +577,11 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach NSUInteger cpucount = [[NSProcessInfo processInfo] processorCount]; ms_set_cpu_count(cpucount); - if (![self isNotIphone3G]){ + if (![LinphoneManager isNotIphone3G]){ PayloadType *pt=linphone_core_find_payload_type(theLinphoneCore,"SILK",24000); if (pt) { linphone_core_enable_payload_type(theLinphoneCore,pt,FALSE); - ms_warning("SILK/24000 and video disabled on old iPhone 3G"); + [LinphoneLogger logc:LinphoneLoggerWarning format:"SILK/24000 and video disabled on old iPhone 3G"]; } linphone_core_enable_video(theLinphoneCore, FALSE, FALSE); } @@ -655,9 +593,9 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach settingsStore = [[LinphoneCoreSettingsStore alloc] init]; - ms_warning("Linphone [%s] started on [%s]" + [LinphoneLogger logc:LinphoneLoggerWarning format:"Linphone [%s] started on [%s]" ,linphone_core_get_version() - ,[[UIDevice currentDevice].model cStringUsingEncoding:[NSString defaultCStringEncoding]] ); + ,[[UIDevice currentDevice].model cStringUsingEncoding:[NSString defaultCStringEncoding]]]; if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground) { @@ -666,23 +604,71 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } } -- (void)refreshRegisters{ - /*first check if network is available*/ - if (proxyReachability){ - SCNetworkReachabilityFlags flags=0; - if (!SCNetworkReachabilityGetFlags(proxyReachability, &flags)) { - ms_error("Cannot get reachability flags, re-creating reachability context."); - [self setupNetworkReachabilityCallback]; - }else{ - networkReachabilityCallBack(proxyReachability, flags, 0); - if (flags==0){ - /*workaround iOS bug: reachability API cease to work after some time.*/ - /*when flags==0, either we have no network, or the reachability object lies. To workaround, create a new one*/ - [self setupNetworkReachabilityCallback]; - } + +- (void)destroyLibLinphone { + [mIterateTimer invalidate]; + AVAudioSession *audioSession = [AVAudioSession sharedInstance]; + [audioSession setDelegate:nil]; + if (theLinphoneCore != nil) { //just in case application terminate before linphone core initialization + [LinphoneLogger logc:LinphoneLoggerLog format:"Destroy linphonecore"]; + linphone_core_destroy(theLinphoneCore); + theLinphoneCore = nil; + SCNetworkReachabilityUnscheduleFromRunLoop(proxyReachability, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode); + if (proxyReachability) + CFRelease(proxyReachability); + proxyReachability=nil; + + } + +} + +- (BOOL)enterBackgroundMode { + LinphoneProxyConfig* proxyCfg; + linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg); + linphone_core_stop_dtmf_stream(theLinphoneCore); + + if (proxyCfg && [settingsStore boolForKey:@"backgroundmode_preference"]) { + //For registration register + linphone_core_refresh_registers(theLinphoneCore); + + + //wait for registration answer + int i=0; + while (!linphone_proxy_config_is_registered(proxyCfg) && i++<40 ) { + linphone_core_iterate(theLinphoneCore); + usleep(100000); } - }else ms_error("No proxy reachability context created !"); - linphone_core_refresh_registers(theLinphoneCore);//just to make sure REGISTRATION is up to date + //register keepalive + if ([[UIApplication sharedApplication] setKeepAliveTimeout:600/*(NSTimeInterval)linphone_proxy_config_get_expires(proxyCfg)*/ + handler:^{ + [LinphoneLogger logc:LinphoneLoggerWarning format:"keepalive handler"]; + if (theLinphoneCore == nil) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"It seems that Linphone BG mode was deactivated, just skipping"]; + return; + } + //kick up network cnx, just in case + [self kickOffNetworkConnection]; + [self refreshRegisters]; + linphone_core_iterate(theLinphoneCore); + } + ]) { + + + [LinphoneLogger logc:LinphoneLoggerLog format:"keepalive handler succesfully registered"]; + } else { + [LinphoneLogger logc:LinphoneLoggerLog format:"keepalive handler cannot be registered"]; + } + LCSipTransports transportValue; + if (linphone_core_get_sip_transports(theLinphoneCore, &transportValue)) { + [LinphoneLogger logc:LinphoneLoggerError format:"cannot get current transport"]; + } + return YES; + } + else { + [LinphoneLogger logc:LinphoneLoggerLog format:"Entering lite bg mode"]; + [self destroyLibLinphone]; + return NO; + } } - (void)becomeActive { @@ -697,23 +683,40 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach } -- (void)registerLogView:(id) view { - mLogView = view; -} - - (void)beginInterruption { LinphoneCall* c = linphone_core_get_current_call(theLinphoneCore); - ms_message("Sound interruption detected!"); + [LinphoneLogger logc:LinphoneLoggerLog format:"Sound interruption detected!"]; if (c) { linphone_core_pause_call(theLinphoneCore, c); } } - (void)endInterruption { - ms_message("Sound interruption ended!"); - //let the user resume the call manually. + [LinphoneLogger logc:LinphoneLoggerLog format:"Sound interruption ended!"]; } +- (void)refreshRegisters{ + /*first check if network is available*/ + if (proxyReachability){ + SCNetworkReachabilityFlags flags=0; + if (!SCNetworkReachabilityGetFlags(proxyReachability, &flags)) { + [LinphoneLogger logc:LinphoneLoggerError format:"Cannot get reachability flags, re-creating reachability context."]; + [self setupNetworkReachabilityCallback]; + }else{ + networkReachabilityCallBack(proxyReachability, flags, 0); + if (flags==0){ + /*workaround iOS bug: reachability API cease to work after some time.*/ + /*when flags==0, either we have no network, or the reachability object lies. To workaround, create a new one*/ + [self setupNetworkReachabilityCallback]; + } + } + }else [LinphoneLogger logc:LinphoneLoggerError format:"No proxy reachability context created !"]; + linphone_core_refresh_registers(theLinphoneCore);//just to make sure REGISTRATION is up to date +} + + +#pragma mark - Speaker Functions + - (void)enableSpeaker:(BOOL)enable { //redirect audio to speaker if(enable) { @@ -735,20 +738,15 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach OSStatus lStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &lNewRouteSize, &lNewRoute); if (!lStatus && lNewRouteSize > 0) { NSString *route = (NSString *) lNewRoute; - ms_message("Current audio route is [%s]", [route cStringUsingEncoding:[NSString defaultCStringEncoding]]); + [LinphoneLogger logc:LinphoneLoggerLog format:"Current audio route is [%s]", [route cStringUsingEncoding:[NSString defaultCStringEncoding]]]; return [route isEqualToString: @"Speaker"] || [route isEqualToString: @"SpeakerAndMicrophone"]; } else { return false; } } -+ (BOOL)runningOnIpad { -#ifdef UI_USER_INTERFACE_IDIOM - return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad); -#endif - return NO; -} +#pragma mark - Call Functions - (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer { if (!linphone_core_is_network_reachabled(theLinphoneCore)) { @@ -764,7 +762,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach CTCallCenter* ct = [[CTCallCenter alloc] init]; if ([ct.currentCalls count] > 0) { - ms_error("GSM call in progress, cancelling outgoing SIP call request"); + [LinphoneLogger logc:LinphoneLoggerError format:"GSM call in progress, cancelling outgoing SIP call request"]; UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Cannot make call",nil) message:NSLocalizedString(@"Please terminate GSM call",nil) delegate:nil diff --git a/Classes/LinphoneUI/UIBluetoothButton.m b/Classes/LinphoneUI/UIBluetoothButton.m index c565779be..634fb4206 100644 --- a/Classes/LinphoneUI/UIBluetoothButton.m +++ b/Classes/LinphoneUI/UIBluetoothButton.m @@ -19,13 +19,15 @@ #import "UIBluetoothButton.h" #import +#import "Utils.h" + #include "linphonecore.h" @implementation UIBluetoothButton #define check_auresult(au,method) \ -if (au!=0) ms_error("UIBluetoothButton error for %s: ret=%ld",method,au) +if (au!=0) [LinphoneLogger logc:LinphoneLoggerError format:"UIBluetoothButton error for %s: ret=%ld",method,au] --(void) onOn { +- (void)onOn { //redirect audio to bluetooth UInt32 size = sizeof(CFStringRef); @@ -42,7 +44,8 @@ if (au!=0) ms_error("UIBluetoothButton error for %s: ret=%ld",method,au) check_auresult(result,"set kAudioSessionProperty_OverrideCategoryEnableBluetoothInput 1"); } --(void) onOff { + +- (void)onOff { //redirect audio to bluetooth int allowBluetoothInput = 0; OSStatus result = AudioSessionSetProperty ( @@ -58,22 +61,13 @@ if (au!=0) ms_error("UIBluetoothButton error for %s: ret=%ld",method,au) } --(bool) isInitialStateOn { + +- (bool)onUpdate { return false; } - -/* - // Only override drawRect: if you perform custom drawing. - // An empty implementation adversely affects performance during animation. - - (void)drawRect:(CGRect)rect { - // Drawing code. - } - */ - - (void)dealloc { [super dealloc]; } - @end diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index abfa85b21..5ced60b3d 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -198,6 +198,10 @@ #pragma mark - - (void)callUpdate:(LinphoneCall*)call state:(LinphoneCallState)state { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update call bar: Linphone core not ready"]; + return; + } LinphoneCore* lc = [LinphoneManager getLc]; [speakerButton update]; diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 71d94f926..b49a45a22 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -1278,7 +1278,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIPassView + UITransparentView com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1378,7 +1378,7 @@ UIButton - UIButton + UIToggleButton UIButton UIButton UIButton @@ -1387,7 +1387,7 @@ UIButton UIButton UIButton - UIButton + UIToggleButton UIButton UIView UIView @@ -1409,7 +1409,7 @@ dialerButton - UIButton + UIToggleButton eightButton @@ -1445,7 +1445,7 @@ optionsButton - UIButton + UIToggleButton optionsTransferButton @@ -1548,14 +1548,6 @@ ./Classes/UIMicroButton.h - - UIPassView - UIView - - IBProjectSource - ./Classes/UIPassView.h - - UIPauseButton UIToggleButton diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index ef3ea1747..cd4fbe250 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -147,101 +147,99 @@ } - (void)update { - LinphoneCall *call = NULL; - if(data != nil && data->call != NULL) { - call = data->call; - const LinphoneAddress* addr = linphone_call_get_remote_address(call); - - UIImage *image = nil; - NSString* address = nil; - if(addr != NULL) { - BOOL useLinphoneAddress = true; - // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); - if(lAddress) { - NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; - ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; - if(contact) { - image = [FastAddressBook getContactImage:contact thumbnail:false]; - address = [FastAddressBook getContactDisplayName:contact]; - useLinphoneAddress = false; - } - } - if(useLinphoneAddress) { - const char* lDisplayName = linphone_address_get_display_name(addr); - const char* lUserName = linphone_address_get_username(addr); - if (lDisplayName) - address = [NSString stringWithUTF8String:lDisplayName]; - else if(lUserName) - address = [NSString stringWithUTF8String:lUserName]; - } - } - - // Set Image - if(image == nil) { - image = [UIImage imageNamed:@"avatar_unknown.png"]; - } - [avatarImage setImage:image]; - - // Set Address - if(address == nil) { - address = @"Unknown"; - } - [addressLabel setText:address]; + if(data == nil || data->call) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update call cell: null call or data"]; + return; + } + LinphoneCall *call = data->call; + const LinphoneAddress* addr = linphone_call_get_remote_address(call); - LinphoneCallState state = linphone_call_get_state(call); - if(!conferenceCell) { - if(state == LinphoneCallOutgoingRinging) { - [stateImage setImage:[UIImage imageNamed:@"call_state_ringing_default.png"]]; - [stateImage setHidden:false]; - [pauseButton setHidden:true]; - } else if(state == LinphoneCallOutgoingInit || state == LinphoneCallOutgoingProgress){ - [stateImage setImage:[UIImage imageNamed:@"call_state_outgoing_default.png"]]; - [stateImage setHidden:false]; - [pauseButton setHidden:true]; - } else { - [stateImage setHidden:true]; - [pauseButton setHidden:false]; - [pauseButton update]; - } - [removeButton setHidden:true]; - if(firstCell) { - [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_call_first.png"]]; - [headerBackgroundHighlightImage setImage:[UIImage imageNamed:@"cell_call_first_highlight.png"]]; - } else { - [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_call.png"]]; - [headerBackgroundHighlightImage setImage:[UIImage imageNamed:@"cell_call_highlight.png"]]; + UIImage *image = nil; + NSString* address = nil; + if(addr != NULL) { + BOOL useLinphoneAddress = true; + // contact name + const char* lAddress = linphone_address_as_string_uri_only(addr); + if(lAddress) { + NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; + ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; + if(contact) { + image = [FastAddressBook getContactImage:contact thumbnail:false]; + address = [FastAddressBook getContactDisplayName:contact]; + useLinphoneAddress = false; } + } + if(useLinphoneAddress) { + const char* lDisplayName = linphone_address_get_display_name(addr); + const char* lUserName = linphone_address_get_username(addr); + if (lDisplayName) + address = [NSString stringWithUTF8String:lDisplayName]; + else if(lUserName) + address = [NSString stringWithUTF8String:lUserName]; + } + } + + // Set Image + if(image == nil) { + image = [UIImage imageNamed:@"avatar_unknown.png"]; + } + [avatarImage setImage:image]; + + // Set Address + if(address == nil) { + address = @"Unknown"; + } + [addressLabel setText:address]; + + LinphoneCallState state = linphone_call_get_state(call); + if(!conferenceCell) { + if(state == LinphoneCallOutgoingRinging) { + [stateImage setImage:[UIImage imageNamed:@"call_state_ringing_default.png"]]; + [stateImage setHidden:false]; + [pauseButton setHidden:true]; + } else if(state == LinphoneCallOutgoingInit || state == LinphoneCallOutgoingProgress){ + [stateImage setImage:[UIImage imageNamed:@"call_state_outgoing_default.png"]]; + [stateImage setHidden:false]; + [pauseButton setHidden:true]; } else { [stateImage setHidden:true]; - [pauseButton setHidden:true]; - [removeButton setHidden:false]; - [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_conference.png"]]; + [pauseButton setHidden:false]; + [pauseButton update]; } - - int duration = linphone_call_get_duration(call); - [stateLabel setText:[NSString stringWithFormat:@"%02i:%02i", (duration/60), duration - 60 * (duration / 60), nil]]; - - if(!data->minimize) { - CGRect frame = [self frame]; - frame.size.height = [avatarView frame].size.height; - [self setFrame:frame]; - [avatarView setHidden:false]; + [removeButton setHidden:true]; + if(firstCell) { + [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_call_first.png"]]; + [headerBackgroundHighlightImage setImage:[UIImage imageNamed:@"cell_call_first_highlight.png"]]; } else { - CGRect frame = [self frame]; - frame.size.height = [headerView frame].size.height; - [self setFrame:frame]; - [avatarView setHidden:true]; + [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_call.png"]]; + [headerBackgroundHighlightImage setImage:[UIImage imageNamed:@"cell_call_highlight.png"]]; } + } else { + [stateImage setHidden:true]; + [pauseButton setHidden:true]; + [removeButton setHidden:false]; + [headerBackgroundImage setImage:[UIImage imageNamed:@"cell_conference.png"]]; + } + + int duration = linphone_call_get_duration(call); + [stateLabel setText:[NSString stringWithFormat:@"%02i:%02i", (duration/60), duration - 60 * (duration / 60), nil]]; + + if(!data->minimize) { + CGRect frame = [self frame]; + frame.size.height = [avatarView frame].size.height; + [self setFrame:frame]; + [avatarView setHidden:false]; + } else { + CGRect frame = [self frame]; + frame.size.height = [headerView frame].size.height; + [self setFrame:frame]; + [avatarView setHidden:true]; } [pauseButton setType:UIPauseButtonType_Call call:call]; } - (void)selfUpdate { UITableView *parentTable = (UITableView *)self.superview; - /*[parentTable beginUpdates]; - [parentTable reloadData]; - [parentTable endUpdates];*/ if(parentTable) { NSIndexPath *index= [parentTable indexPathForCell:self]; if(index != nil) { diff --git a/Classes/LinphoneUI/UICamSwitch.m b/Classes/LinphoneUI/UICamSwitch.m index aa0f5e51d..bc4a621c3 100644 --- a/Classes/LinphoneUI/UICamSwitch.m +++ b/Classes/LinphoneUI/UICamSwitch.m @@ -20,24 +20,13 @@ #import "UICamSwitch.h" #include "LinphoneManager.h" - @implementation UICamSwitch @synthesize preview; --(void) touchUp:(id) sender { - if (nextCamId!=currentCamId) { - ms_message("Switching from [%s] to [%s]",currentCamId,nextCamId); - linphone_core_set_video_device([LinphoneManager getLc], nextCamId); - nextCamId=currentCamId; - currentCamId = linphone_core_get_video_device([LinphoneManager getLc]); - linphone_core_update_call([LinphoneManager getLc] - , linphone_core_get_current_call([LinphoneManager getLc]) - ,NULL); - linphone_core_set_native_preview_window_id([LinphoneManager getLc], - (unsigned long)preview); - } -} -- (id) init { + +#pragma mark - Lifecycle Functions + +- (id)initUICamSwitch { [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside]; currentCamId = (char*)linphone_core_get_video_device([LinphoneManager getLc]); if ([LinphoneManager instance].frontCamId !=nil ) { @@ -52,18 +41,28 @@ } return self; } + +- (id)init { + self = [super init]; + if (self) { + [self initUICamSwitch]; + } + return self; +} + - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { - [self init]; + [self initUICamSwitch]; } return self; } + - (id)initWithCoder:(NSCoder *)decoder { self = [super initWithCoder:decoder]; if (self) { - [self init]; + [self initUICamSwitch]; } return self; } @@ -75,7 +74,24 @@ } +#pragma mark - - +-(void) touchUp:(id) sender { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot tigger camswitch button: Linphone core not ready"]; + return; + } + if (nextCamId != currentCamId) { + [LinphoneLogger logc:LinphoneLoggerLog format:"Switching from [%s] to [%s]",currentCamId,nextCamId]; + linphone_core_set_video_device([LinphoneManager getLc], nextCamId); + nextCamId=currentCamId; + currentCamId = linphone_core_get_video_device([LinphoneManager getLc]); + linphone_core_update_call([LinphoneManager getLc] + , linphone_core_get_current_call([LinphoneManager getLc]) + , NULL); + /*linphone_core_set_native_preview_window_id([LinphoneManager getLc], + (unsigned long)preview);*/ + } +} @end diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index 2b913ee9c..dc98f86b6 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -70,13 +70,15 @@ #pragma mark - - (void)update { - - if (chat != nil) { - [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; - [displayNameLabel setText:[chat remoteContact]]; - [chatContentLabel setText:[chat message]]; + if(chat == nil) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat cell: null chat"]; + return; } + [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; + [displayNameLabel setText:[chat remoteContact]]; + [chatContentLabel setText:[chat message]]; + // // Adapt size // diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index 4327acb6d..a18150915 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -18,6 +18,7 @@ */ #import "UIChatRoomCell.h" +#import "Utils.h" #import @@ -72,9 +73,11 @@ static UIFont *CELL_FONT = nil; #pragma mark - - (void)update { - if(chat != nil) { - [messageLabel setText:[chat message]]; + if(chat == nil) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat room cell: null chat"]; + return; } + [messageLabel setText:[chat message]]; } - (void)setEditing:(BOOL)editing { diff --git a/Classes/LinphoneUI/UIChatRoomHeader.m b/Classes/LinphoneUI/UIChatRoomHeader.m index 25c4de26e..6b862c155 100644 --- a/Classes/LinphoneUI/UIChatRoomHeader.m +++ b/Classes/LinphoneUI/UIChatRoomHeader.m @@ -18,6 +18,7 @@ */ #import "UIChatRoomHeader.h" +#import "Utils.h" @implementation UIChatRoomHeader @@ -54,10 +55,13 @@ #pragma mark - - (void)update { - if(contact != nil) { - [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; - [addressLabel setText:contact]; + if(contact == NULL) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat room header: null contact"]; + return; } + + [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; + [addressLabel setText:contact]; } + (CGFloat)height { diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib index 841ed0dfd..4fa0262ba 100644 --- a/Classes/LinphoneUI/UICompositeViewController.xib +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -70,6 +70,7 @@ {{0, 400}, {320, 60}} + _NS:9 YES @@ -175,10 +176,10 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIPassView + UITransparentView com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIPassView + UITransparentView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -216,14 +217,6 @@ ./Classes/UICompositeViewController.h - - UIPassView - UIView - - IBProjectSource - ./Classes/UIPassView.h - - 0 diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index 624db9c53..aa203fc6e 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -18,7 +18,7 @@ */ #import "UIContactCell.h" - +#import "Utils.h" #import "FastAddressBook.h" @implementation UIContactCell @@ -71,6 +71,11 @@ } - (void)update { + if(contact == NULL) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update contact cell: null contact"]; + return; + } + CFStringRef lFirstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty); CFStringRef lLocalizedFirstName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lFirstName):nil; CFStringRef lLastName = ABRecordCopyValue(contact, kABPersonLastNameProperty); diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 99009ef95..03bb83259 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -18,7 +18,7 @@ */ #import "UIContactDetailsHeader.h" - +#import "Utils.h" #import "UIEditableTableViewCell.h" #import "FastAddressBook.h" @@ -69,28 +69,32 @@ - (void)setContact:(ABRecordRef)acontact { contact = acontact; [self update]; - [tableView reloadData]; } #pragma mark - - (void)update { - if(contact) { - // Avatar image - { - UIImage *image = [FastAddressBook getContactImage:contact thumbnail:true]; - if(image == nil) { - image = [UIImage imageNamed:@"avatar_unknown_small.png"]; - } - [avatarImage setImage:image]; - } - - // Contact label - { - [addressLabel setText:[FastAddressBook getContactDisplayName:contact]]; - } + if(contact == NULL) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update contact details header: null contact"]; + return; } + + // Avatar image + { + UIImage *image = [FastAddressBook getContactImage:contact thumbnail:true]; + if(image == nil) { + image = [UIImage imageNamed:@"avatar_unknown_small.png"]; + } + [avatarImage setImage:image]; + } + + // Contact label + { + [addressLabel setText:[FastAddressBook getContactDisplayName:contact]]; + } + + [tableView reloadData]; } + (CGFloat)height:(BOOL)editing { @@ -217,10 +221,10 @@ NSError* error = NULL; ABRecordSetValue(contact, property, [textField text], (CFErrorRef*)&error); if (error != NULL) { - NSLog(@"Error when saving property %i in contact %p: Fail(%@)", property, contact, [error localizedDescription]); + [LinphoneLogger log:LinphoneLoggerError format:@"Error when saving property %i in contact %p: Fail(%@)", property, contact, [error localizedDescription]]; } } else { - NSLog(@"Not valid UIEditableTableViewCell"); + [LinphoneLogger logc:LinphoneLoggerWarning format:"Not valid UIEditableTableViewCell"]; } return TRUE; } diff --git a/Classes/LinphoneUI/UIDigitButton.m b/Classes/LinphoneUI/UIDigitButton.m index a93fc5080..7dcd33429 100644 --- a/Classes/LinphoneUI/UIDigitButton.m +++ b/Classes/LinphoneUI/UIDigitButton.m @@ -69,6 +69,10 @@ #pragma mark - Actions Functions - (void)touchDown:(id) sender { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot trigger digit button: Linphone core not ready"]; + return; + } if (addressField && (!dtmf || !linphone_core_in_call([LinphoneManager getLc]))) { NSString* newAddress = [NSString stringWithFormat:@"%@%c",addressField.text, digit]; [addressField setText:newAddress]; @@ -80,6 +84,10 @@ } - (void)touchUp:(id) sender { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot trigger digit button: Linphone core not ready"]; + return; + } linphone_core_stop_dtmf([LinphoneManager getLc]); } diff --git a/Classes/LinphoneUI/UIEraseButton.m b/Classes/LinphoneUI/UIEraseButton.m index 9b4e96eb4..d271a2727 100644 --- a/Classes/LinphoneUI/UIEraseButton.m +++ b/Classes/LinphoneUI/UIEraseButton.m @@ -60,6 +60,7 @@ [addressField release]; } + #pragma mark - Action Functions -(void) touchDown:(id) sender { diff --git a/Classes/LinphoneUI/UIHangUpButton.m b/Classes/LinphoneUI/UIHangUpButton.m index ec71460d1..61e4f38a1 100644 --- a/Classes/LinphoneUI/UIHangUpButton.m +++ b/Classes/LinphoneUI/UIHangUpButton.m @@ -95,10 +95,13 @@ [self setEnabled:true]; return; } - } + } else { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update hangup button: Linphone core not ready"]; + } [self setEnabled:false]; } + #pragma mark - Action Functions -(void) touchUp:(id) sender { @@ -117,6 +120,8 @@ linphone_core_terminate_call(lc,(LinphoneCall*)(calls->data)); } } + } else { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot trigger hangup button: Linphone core not ready"]; } } diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index efdfd0277..5b6cefe12 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -94,6 +94,10 @@ #pragma mark - - (void)update { + if(callLog == NULL) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update history cell: null callLog"]; + return; + } // Set up the cell... LinphoneAddress* addr; diff --git a/Classes/LinphoneUI/UILongTouchButton.m b/Classes/LinphoneUI/UILongTouchButton.m index 03088ce79..012b2ef0e 100644 --- a/Classes/LinphoneUI/UILongTouchButton.m +++ b/Classes/LinphoneUI/UILongTouchButton.m @@ -75,13 +75,9 @@ } - (void)onRepeatTouch { - [NSException raise:NSInternalInconsistencyException - format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; } - (void)onLongTouch { - [NSException raise:NSInternalInconsistencyException - format:@"You must override %@ in a subclass", NSStringFromSelector(_cmd)]; } @end diff --git a/Classes/LinphoneUI/UIMicroButton.m b/Classes/LinphoneUI/UIMicroButton.m index d3b506951..5c321134d 100644 --- a/Classes/LinphoneUI/UIMicroButton.m +++ b/Classes/LinphoneUI/UIMicroButton.m @@ -24,10 +24,18 @@ @implementation UIMicroButton - (void)onOn { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle mic button: Linphone core not ready"]; + return; + } linphone_core_mute_mic([LinphoneManager getLc], false); } - (void)onOff { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle mic button: Linphone core not ready"]; + return; + } linphone_core_mute_mic([LinphoneManager getLc], true); } @@ -35,7 +43,7 @@ if([LinphoneManager isLcReady]) { return linphone_core_is_mic_muted([LinphoneManager getLc]) == false; } else { - //not ready yet + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update mic button: Linphone core not ready"]; return true; } } diff --git a/Classes/LinphoneUI/UIPauseButton.m b/Classes/LinphoneUI/UIPauseButton.m index fc53aa47e..235ff282d 100644 --- a/Classes/LinphoneUI/UIPauseButton.m +++ b/Classes/LinphoneUI/UIPauseButton.m @@ -99,11 +99,17 @@ #pragma mark - UIToggleButtonDelegate Functions - (void)onOn { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle pause button: Linphone core not ready"]; + return; + } switch (type) { case UIPauseButtonType_Call: { if (call != nil) { linphone_core_pause_call([LinphoneManager getLc], call); + } else { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle pause buttton, because no current call"]; } break; } @@ -120,6 +126,8 @@ LinphoneCall* currentCall = [UIPauseButton getCall]; if (currentCall != nil) { linphone_core_pause_call([LinphoneManager getLc], currentCall); + } else { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle pause buttton, because no current call"]; } break; } @@ -127,11 +135,17 @@ } - (void)onOff { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle pause button: Linphone core not ready"]; + return; + } switch (type) { case UIPauseButtonType_Call: { if (call != nil) { linphone_core_resume_call([LinphoneManager getLc], call); + } else { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle pause buttton, because no current call"]; } break; } @@ -147,6 +161,8 @@ LinphoneCall* currentCall = [UIPauseButton getCall]; if (currentCall != nil) { linphone_core_resume_call([LinphoneManager getLc], currentCall); + } else { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle pause buttton, because no current call"]; } break; } @@ -199,7 +215,9 @@ break; } } - } + } else { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update pause button: Linphone core not ready"]; + } return ret; } diff --git a/Classes/LinphoneUI/UISpeakerButton.m b/Classes/LinphoneUI/UISpeakerButton.m index cae8f76b0..9151ddbd7 100644 --- a/Classes/LinphoneUI/UISpeakerButton.m +++ b/Classes/LinphoneUI/UISpeakerButton.m @@ -19,7 +19,7 @@ #import #import "UISpeakerButton.h" - +#import "Utils.h" #import "LinphoneManager.h" #include "linphonecore.h" @@ -46,7 +46,7 @@ static void audioRouteChangeListenerCallback ( AudioSessionInitialize(NULL, NULL, NULL, NULL); OSStatus lStatus = AudioSessionAddPropertyListener(routeChangeID, audioRouteChangeListenerCallback, self); if (lStatus) { - ms_error ("cannot register route change handler [%ld]",lStatus); + [LinphoneLogger logc:LinphoneLoggerError format:"cannot register route change handler [%ld]",lStatus]; } } @@ -77,7 +77,7 @@ static void audioRouteChangeListenerCallback ( - (void)dealloc { OSStatus lStatus = AudioSessionRemovePropertyListenerWithUserData(routeChangeID, audioRouteChangeListenerCallback, self); if (lStatus) { - ms_error ("cannot un register route change handler [%ld]",lStatus); + [LinphoneLogger logc:LinphoneLoggerError format:"cannot un register route change handler [%ld]",lStatus]; } [super dealloc]; } diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index 507d9b1fe..1b14f74e5 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -112,14 +112,14 @@ NSTimer *callQualityTimer; switch (state) { case LinphoneRegistrationOk: - message = @"Registered"; break; + message = NSLocalizedString(@"Registered", nil); break; case LinphoneRegistrationNone: case LinphoneRegistrationCleared: - message = @"Not registered"; break; + message = NSLocalizedString(@"Not registered", nil); break; case LinphoneRegistrationFailed: - message = @"Registration failed"; break; + message = NSLocalizedString(@"Registration failed", nil); break; case LinphoneRegistrationProgress: - message = @"Registration in progress"; break; + message = NSLocalizedString(@"Registration in progress", nil); break; //case LinphoneRegistrationCleared: m= @"No SIP account"; break; default: break; } diff --git a/Classes/LinphoneUI/UIPassView.h b/Classes/LinphoneUI/UITransparentView.h similarity index 94% rename from Classes/LinphoneUI/UIPassView.h rename to Classes/LinphoneUI/UITransparentView.h index 839832347..8d12e22b6 100644 --- a/Classes/LinphoneUI/UIPassView.h +++ b/Classes/LinphoneUI/UITransparentView.h @@ -1,4 +1,4 @@ -/* UIPassView.h +/* UITransparentView.h * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -19,6 +19,6 @@ #import -@interface UIPassView : UIView +@interface UITransparentView : UIView @end diff --git a/Classes/LinphoneUI/UIPassView.m b/Classes/LinphoneUI/UITransparentView.m similarity index 94% rename from Classes/LinphoneUI/UIPassView.m rename to Classes/LinphoneUI/UITransparentView.m index 201f0fa2d..40326e77b 100644 --- a/Classes/LinphoneUI/UIPassView.m +++ b/Classes/LinphoneUI/UITransparentView.m @@ -1,4 +1,4 @@ -/* UIPassView.m +/* UITransparentView.m * * Copyright (C) 2012 Belledonne Comunications, Grenoble, France * @@ -17,9 +17,9 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#import "UIPassView.h" +#import "UITransparentView.h" -@implementation UIPassView +@implementation UITransparentView - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { BOOL pointInside = NO; diff --git a/Classes/LinphoneUI/UIVideoButton.m b/Classes/LinphoneUI/UIVideoButton.m index f5b0b9055..6de7c2842 100644 --- a/Classes/LinphoneUI/UIVideoButton.m +++ b/Classes/LinphoneUI/UIVideoButton.m @@ -56,6 +56,11 @@ } - (void)onOn { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle video button: Linphone core not ready"]; + return; + } + LinphoneCore* lc = [LinphoneManager getLc]; if (!linphone_core_video_enabled(lc)) @@ -73,11 +78,16 @@ linphone_core_update_call(lc, call, call_params); linphone_call_params_destroy(call_params); } else { - ms_warning("Cannot toggle video, because no current call"); + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle video button, because no current call"]; } } - (void)onOff { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle video button: Linphone core not ready"]; + return; + } + LinphoneCore* lc = [LinphoneManager getLc]; if (!linphone_core_video_enabled(lc)) @@ -95,7 +105,7 @@ linphone_core_update_call(lc, call, call_params); linphone_call_params_destroy(call_params); } else { - ms_warning("Cannot toggle video, because no current call"); + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot toggle video button, because no current call"]; } } @@ -139,7 +149,7 @@ } return val; } else { - //not ready yet + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update video button: Linphone core not ready"]; return false; } } diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m index fbd949149..575442316 100644 --- a/Classes/Model/ChatModel.m +++ b/Classes/Model/ChatModel.m @@ -65,19 +65,19 @@ - (void)create { sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { - NSLog(@"Database not ready"); + [LinphoneLogger logc:LinphoneLoggerError format:"Database not ready"]; return; } const char *sql = [[NSString stringWithFormat:@"INSERT INTO chat (localContact, remoteContact, direction, message, time, read) VALUES (\"%@\", \"%@\", %i, \"%@\", %f, %i)", localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], [read intValue]] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { - NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } if (sqlite3_step(sqlStatement) != SQLITE_DONE) { - NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); } } @@ -85,7 +85,7 @@ + (ChatModel*)read:(NSNumber*)chatId { sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { - NSLog(@"Database not ready"); + [LinphoneLogger logc:LinphoneLoggerError format:"Database not ready"]; return nil; } @@ -93,7 +93,7 @@ chatId] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { - NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return nil; } @@ -102,7 +102,7 @@ if (err == SQLITE_ROW) { line = [[ChatModel alloc] initWithData:sqlStatement]; } else if (err != SQLITE_DONE) { - NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); return nil; } @@ -114,7 +114,7 @@ - (void)update { sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { - NSLog(@"Database not ready"); + [LinphoneLogger logc:LinphoneLoggerError format:"Database not ready"]; return; } @@ -122,12 +122,12 @@ localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], read, [chatId intValue]] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { - NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } if (sqlite3_step(sqlStatement) != SQLITE_DONE) { - NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); return; } @@ -138,7 +138,7 @@ - (void)delete { sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { - NSLog(@"Database not ready"); + [LinphoneLogger logc:LinphoneLoggerError format:"Database not ready"]; return; } @@ -146,12 +146,12 @@ chatId] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { - NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } if (sqlite3_step(sqlStatement) != SQLITE_DONE) { - NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); return; } @@ -166,14 +166,14 @@ NSMutableArray *array = [NSMutableArray array]; sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { - NSLog(@"Database not ready"); + [LinphoneLogger logc:LinphoneLoggerError format:"Database not ready"]; return array; } const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read FROM chat GROUP BY remoteContact ORDER BY time DESC"; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { - NSLog(@"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)]; return array; } @@ -184,7 +184,7 @@ } if (err != SQLITE_DONE) { - NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; return array; } @@ -197,7 +197,7 @@ NSMutableArray *array = [NSMutableArray array]; sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { - NSLog(@"Database not ready"); + [LinphoneLogger logc:LinphoneLoggerError format:"Database not ready"]; return array; } @@ -205,7 +205,7 @@ contact] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { - NSLog(@"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)]; return array; } @@ -216,7 +216,7 @@ } if (err != SQLITE_DONE) { - NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; return array; } @@ -228,7 +228,7 @@ + (void)removeConversation:(NSString *)contact { sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { - NSLog(@"Database not ready"); + [LinphoneLogger logc:LinphoneLoggerError format:"Database not ready"]; return; } @@ -236,12 +236,12 @@ contact] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { - NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } if (sqlite3_step(sqlStatement) != SQLITE_DONE) { - NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); return; } @@ -253,19 +253,19 @@ int count = -1; sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { - NSLog(@"Database not ready"); + [LinphoneLogger logc:LinphoneLoggerError format:"Database not ready"]; return count; } const char *sql = [[NSString stringWithFormat:@"SELECT count(*) FROM chat WHERE read=0"] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { - NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return count; } if (sqlite3_step(sqlStatement) != SQLITE_ROW) { - NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); return count; } @@ -279,7 +279,7 @@ + (void)readConversation:(NSString *)contact { sqlite3* database = [[LinphoneManager instance] database]; if(database == NULL) { - NSLog(@"Database not ready"); + [LinphoneLogger logc:LinphoneLoggerError format:"Database not ready"]; return; } @@ -287,12 +287,12 @@ contact] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { - NSLog(@"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } if (sqlite3_step(sqlStatement) != SQLITE_DONE) { - NSLog(@"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)); + [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); return; } diff --git a/Classes/MoreViewController.m b/Classes/MoreViewController.m index 6963f31ab..4e5d97e2f 100644 --- a/Classes/MoreViewController.m +++ b/Classes/MoreViewController.m @@ -37,7 +37,7 @@ [super viewDidLoad]; [creditText setText: [NSString stringWithFormat:creditText.text,[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"]]]; consoleViewController = [[ConsoleViewController alloc] initWithNibName:@"ConsoleViewController" bundle:[NSBundle mainBundle]]; - [[LinphoneManager instance] registerLogView:consoleViewController]; + //[[LinphoneManager instance] registerLogView:consoleViewController]; isDebug = lp_config_get_int(linphone_core_get_config([LinphoneManager getLc]),"app","debugenable_preference",0); } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index e5eb6acd8..e2077c354 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -324,7 +324,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (UIViewController*)_changeView:(PhoneView)view transition:(CATransition*)transition { - NSLog(@"PhoneMainView: change view %d", view); + [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: change view %d", view]; UICompositeViewDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; if(description == nil) return nil; @@ -348,7 +348,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (UIViewController*)popView:(NSArray *)calls { - NSLog(@"PhoneMainView: Pop!"); + [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: Pop view"]; if([viewStack count] > 0) { PhoneView view = [[viewStack lastObject] intValue]; [viewStack removeLastObject]; @@ -446,7 +446,7 @@ static PhoneMainView* phoneMainViewInstance=nil; LinphoneCallAppData* appData = (LinphoneCallAppData*) linphone_call_get_user_pointer(call); if ([UIDevice currentDevice].batteryState == UIDeviceBatteryStateUnplugged) { float level = [UIDevice currentDevice].batteryLevel; - ms_message("Video call is running. Battery level: %.2f", level); + [LinphoneLogger logc:LinphoneLoggerLog format:"Video call is running. Battery level: %.2f", level]; if (level < 0.1 && !appData->batteryWarningShown) { // notify user CallDelegate* cd = [[CallDelegate alloc] init]; diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 7480c0708..f79eb785e 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -124,7 +124,7 @@ } // NSLog(@"Specifier received: %@", identifier); if ([identifier isEqualToString:@"silk_24k_preference"]) { - if (![[LinphoneManager instance] isNotIphone3G]) + if (![LinphoneManager isNotIphone3G]) return nil; } if ([identifier isEqualToString:@"backgroundmode_preference"]) { diff --git a/Classes/Utils/Utils.h b/Classes/Utils/Utils.h index 26764f459..8568aca78 100644 --- a/Classes/Utils/Utils.h +++ b/Classes/Utils/Utils.h @@ -26,4 +26,21 @@ [inst_ isKindOfClass:[cls class]]? inst_ : nil; \ }) +typedef enum _LinphoneLoggerSeverity { + LinphoneLoggerLog = 0, + LinphoneLoggerDebug, + LinphoneLoggerWarning, + LinphoneLoggerError, + LinphoneLoggerFatal +} LinphoneLoggerSeverity; + + +@interface LinphoneLogger : NSObject { + +} ++ (void)log:(LinphoneLoggerSeverity) severity format:(NSString *)format,...; ++ (void)logc:(LinphoneLoggerSeverity) severity format:(const char *)format,...; + +@end + #endif diff --git a/Classes/Utils/Utils.m b/Classes/Utils/Utils.m new file mode 100644 index 000000000..1ae8a0230 --- /dev/null +++ b/Classes/Utils/Utils.m @@ -0,0 +1,62 @@ +/* Utils.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +#import "Utils.h" +#include "linphonecore.h" + +@implementation LinphoneLogger + ++ (void)log:(LinphoneLoggerSeverity) severity format:(NSString *)format,... { + va_list args; + va_start (args, format); + NSString *str = [[NSString alloc] initWithFormat: format arguments:args]; + if(severity <= LinphoneLoggerLog) { + ms_message("%s", [str UTF8String]); + } else if(severity <= LinphoneLoggerDebug) { + ms_debug("%s", [str UTF8String]); + } else if(severity <= LinphoneLoggerWarning) { + ms_warning("%s", [str UTF8String]); + } else if(severity <= LinphoneLoggerError) { + ms_error("%s", [str UTF8String]); + } else if(severity <= LinphoneLoggerFatal) { + ms_fatal("%s", [str UTF8String]); + } + [str release]; + va_end (args); +} + ++ (void)logc:(LinphoneLoggerSeverity) severity format:(const char *)format,... { + va_list args; + va_start (args, format); + if(severity <= LinphoneLoggerLog) { + ortp_logv(ORTP_MESSAGE, format, args); + } else if(severity <= LinphoneLoggerDebug) { + ortp_logv(ORTP_DEBUG, format, args); + } else if(severity <= LinphoneLoggerWarning) { + ortp_logv(ORTP_WARNING, format, args); + } else if(severity <= LinphoneLoggerError) { + ortp_logv(ORTP_ERROR, format, args); + } else if(severity <= LinphoneLoggerFatal) { + ortp_logv(ORTP_FATAL, format, args); + } + va_end (args); +} + +@end diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index da2906f04..cac80fa0c 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -241,8 +241,8 @@ D3211BC3159CBFD70098460B /* back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* back_over.png */; }; D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D32409C4158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; - D32460E6159D9AAD00BA7F3A /* UIPassView.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460E5159D9AAD00BA7F3A /* UIPassView.m */; }; - D32460E7159D9AAD00BA7F3A /* UIPassView.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460E5159D9AAD00BA7F3A /* UIPassView.m */; }; + D32460E6159D9AAD00BA7F3A /* UITransparentView.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460E5159D9AAD00BA7F3A /* UITransparentView.m */; }; + D32460E7159D9AAD00BA7F3A /* UITransparentView.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460E5159D9AAD00BA7F3A /* UITransparentView.m */; }; D326483815887D5200930C67 /* OrderedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483715887D5200930C67 /* OrderedDictionary.m */; }; D326483915887D5200930C67 /* OrderedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483715887D5200930C67 /* OrderedDictionary.m */; }; D326483E1588950F00930C67 /* UICallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* UICallBar.m */; }; @@ -341,6 +341,8 @@ D35498221587716B000081D8 /* UIStateBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* UIStateBar.m */; }; D35498231587716B000081D8 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; D35498241587716B000081D8 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; + D35860D615B549B500513429 /* Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = D35860D515B549B500513429 /* Utils.m */; }; + D35860D715B549B500513429 /* Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = D35860D515B549B500513429 /* Utils.m */; }; D35E757815931E5D0066B1C1 /* switch_camera_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757515931E5D0066B1C1 /* switch_camera_default.png */; }; D35E757915931E5D0066B1C1 /* switch_camera_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757515931E5D0066B1C1 /* switch_camera_default.png */; }; D35E757A15931E5D0066B1C1 /* switch_camera_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757615931E5D0066B1C1 /* switch_camera_over.png */; }; @@ -1136,8 +1138,8 @@ D3211BBD159CBFD60098460B /* back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_over.png; path = Resources/back_over.png; sourceTree = ""; }; D32409C1158B49A600C8C119 /* UILongTouchButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILongTouchButton.h; sourceTree = ""; }; D32409C2158B49A600C8C119 /* UILongTouchButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UILongTouchButton.m; sourceTree = ""; }; - D32460E4159D9AAD00BA7F3A /* UIPassView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPassView.h; sourceTree = ""; }; - D32460E5159D9AAD00BA7F3A /* UIPassView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPassView.m; sourceTree = ""; }; + D32460E4159D9AAD00BA7F3A /* UITransparentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UITransparentView.h; sourceTree = ""; }; + D32460E5159D9AAD00BA7F3A /* UITransparentView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UITransparentView.m; sourceTree = ""; }; D326483615887D5200930C67 /* OrderedDictionary.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OrderedDictionary.h; path = Utils/OrderedDictionary.h; sourceTree = ""; }; D326483715887D5200930C67 /* OrderedDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OrderedDictionary.m; path = Utils/OrderedDictionary.m; sourceTree = ""; }; D326483B1588950F00930C67 /* UICallBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallBar.h; sourceTree = ""; }; @@ -1199,6 +1201,7 @@ D354981E1587716B000081D8 /* UIStateBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIStateBar.h; sourceTree = ""; }; D354981F1587716B000081D8 /* UIStateBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIStateBar.m; sourceTree = ""; }; D35498201587716B000081D8 /* UIStateBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIStateBar.xib; sourceTree = ""; }; + D35860D515B549B500513429 /* Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Utils.m; path = Utils/Utils.m; sourceTree = ""; }; D35E757515931E5D0066B1C1 /* switch_camera_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = switch_camera_default.png; path = Resources/switch_camera_default.png; sourceTree = ""; }; D35E757615931E5D0066B1C1 /* switch_camera_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = switch_camera_over.png; path = Resources/switch_camera_over.png; sourceTree = ""; }; D35E757F159328EA0066B1C1 /* UIAddressTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIAddressTextField.h; sourceTree = ""; }; @@ -1917,8 +1920,6 @@ 2214EBF212F86360002A5394 /* UIMicroButton.m */, D3F34F331599C354005BE94F /* UIModalViewController.h */, D3F34F341599C354005BE94F /* UIModalViewController.m */, - D32460E4159D9AAD00BA7F3A /* UIPassView.h */, - D32460E5159D9AAD00BA7F3A /* UIPassView.m */, D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */, D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */, 22968A5D12F875C600588287 /* UISpeakerButton.h */, @@ -1930,6 +1931,8 @@ D32648431588F6FB00930C67 /* UIToggleButton.m */, D3196D3C15A32BD7007FEEBA /* UITransferButton.h */, D3196D3D15A32BD8007FEEBA /* UITransferButton.m */, + D32460E4159D9AAD00BA7F3A /* UITransparentView.h */, + D32460E5159D9AAD00BA7F3A /* UITransparentView.m */, 340751E5150F38FC00B89C47 /* UIVideoButton.h */, 340751E6150F38FD00B89C47 /* UIVideoButton.m */, D378907715AC44A300BD776C /* UIView+ModalStack.h */, @@ -2340,6 +2343,7 @@ D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */, D3F9A9EB15AF27620045320F /* UACellBackgroundView */, C9B3A6FD15B485DB006F52EE /* Utils.h */, + D35860D515B549B500513429 /* Utils.m */, ); name = Utils; sourceTree = ""; @@ -3151,7 +3155,7 @@ D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */, D3211BB0159C4EF10098460B /* UIConferenceHeader.m in Sources */, - D32460E6159D9AAD00BA7F3A /* UIPassView.m in Sources */, + D32460E6159D9AAD00BA7F3A /* UITransparentView.m in Sources */, D32B9DFC15A2F131000B6DEC /* FastAddressBook.m in Sources */, D3196D3E15A32BD8007FEEBA /* UITransferButton.m in Sources */, D350F20E15A43BB100149E54 /* WizardViewController.m in Sources */, @@ -3173,6 +3177,7 @@ D3F9A9E215AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */, D3F9A9E415AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */, + D35860D615B549B500513429 /* Utils.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3240,7 +3245,7 @@ D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */, D3211BB1159C4EF10098460B /* UIConferenceHeader.m in Sources */, - D32460E7159D9AAD00BA7F3A /* UIPassView.m in Sources */, + D32460E7159D9AAD00BA7F3A /* UITransparentView.m in Sources */, D32B9DFD15A2F131000B6DEC /* FastAddressBook.m in Sources */, D3196D3F15A32BD8007FEEBA /* UITransferButton.m in Sources */, D350F20F15A43BB100149E54 /* WizardViewController.m in Sources */, @@ -3262,6 +3267,7 @@ D3F9A9E315AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */, D3F9A9E515AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */, + D35860D715B549B500513429 /* Utils.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From c396151632d1d2b9851a383902a123a3e66dfc11 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 17 Jul 2012 11:01:25 +0200 Subject: [PATCH 050/397] Fix Options bounds in call bar --- Classes/LinphoneUI/UICallBar.xib | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index b49a45a22..325eef4d5 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -385,7 +385,7 @@ 292 - {80, 67} + {{3, 0}, {77, 68}} @@ -420,7 +420,7 @@ 292 - {{0, 58}, {80, 75}} + {{3, 61}, {77, 68}} @@ -450,7 +450,7 @@ - {{240, 201}, {80, 134}} + {{240, 205}, {80, 129}} @@ -1240,8 +1240,8 @@ 87 - + optionsView @@ -1572,6 +1572,14 @@ ./Classes/UIToggleButton.h + + UITransparentView + UIView + + IBProjectSource + ./Classes/UITransparentView.h + + UIVideoButton UIToggleButton From e3525432737daa245a0a881005984accedbff752 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 17 Jul 2012 17:30:58 +0200 Subject: [PATCH 051/397] Improve history and chat --- Classes/ChatRoomTableViewController.h | 9 +- Classes/ChatRoomTableViewController.m | 88 +++++-- Classes/ChatRoomViewController.h | 11 +- Classes/ChatRoomViewController.m | 155 ++++++++++- Classes/ChatRoomViewController.xib | 215 ++++++++++----- Classes/ChatTableViewController.h | 2 + Classes/ChatTableViewController.m | 4 +- Classes/ChatViewController.m | 4 +- Classes/HistoryDetailsViewController.m | 5 +- Classes/LinphoneApp.xib | 3 +- Classes/LinphoneAppDelegate.m | 21 +- Classes/LinphoneManager.h | 3 +- Classes/LinphoneManager.m | 5 +- Classes/LinphoneUI/UIChatCell.h | 4 +- Classes/LinphoneUI/UIChatCell.m | 43 ++- Classes/LinphoneUI/UIChatCell.xib | 31 +-- Classes/LinphoneUI/UIChatRoomCell.h | 4 + Classes/LinphoneUI/UIChatRoomCell.m | 46 +++- Classes/LinphoneUI/UIChatRoomCell.xib | 92 +++++-- Classes/LinphoneUI/UIChatRoomHeader.h | 37 --- Classes/LinphoneUI/UIChatRoomHeader.m | 71 ----- Classes/LinphoneUI/UIChatRoomHeader.xib | 245 ------------------ .../LinphoneUI/UICompositeViewController.m | 32 +++ Classes/LinphoneUI/UIHistoryCell.m | 3 + Classes/LinphoneUI/UIMainBar.m | 105 +++++--- Classes/LinphoneUI/UIMainBar.xib | 13 +- Classes/Model/ChatModel.m | 22 +- Classes/PhoneMainView.m | 137 ++++++++-- Classes/PhoneMainView.xib | 11 +- linphone.xcodeproj/project.pbxproj | 14 - 30 files changed, 805 insertions(+), 630 deletions(-) delete mode 100644 Classes/LinphoneUI/UIChatRoomHeader.h delete mode 100644 Classes/LinphoneUI/UIChatRoomHeader.m delete mode 100644 Classes/LinphoneUI/UIChatRoomHeader.xib diff --git a/Classes/ChatRoomTableViewController.h b/Classes/ChatRoomTableViewController.h index d118a363a..1a0e3256c 100644 --- a/Classes/ChatRoomTableViewController.h +++ b/Classes/ChatRoomTableViewController.h @@ -19,13 +19,16 @@ #import +#import "ChatModel.h" @interface ChatRoomTableViewController : UITableViewController { @private - NSArray *data; - NSString *remoteContact; + NSMutableArray *data; + NSString *remoteAddress; } -@property (nonatomic, retain) NSString *remoteContact; +@property (nonatomic, retain) NSString *remoteAddress; + +- (void)addChatEntry:(ChatModel*)chat; @end diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index 818776705..32d7b9676 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -19,13 +19,13 @@ #import "ChatRoomTableViewController.h" #import "UIChatRoomCell.h" -#import "UIChatRoomHeader.h" +#import "Utils.h" #import @implementation ChatRoomTableViewController -@synthesize remoteContact; +@synthesize remoteAddress; #pragma mark - ViewController @@ -38,27 +38,75 @@ - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [TUNinePatchCache flushCache]; // Clear cache + if(data != nil) { + [data removeAllObjects]; + [data release]; + data = nil; + } } #pragma mark - - (void)loadData { - if(data != nil) + if(data != nil) { + [data removeAllObjects]; [data release]; - data = [[ChatModel listMessages:remoteContact] retain]; + } + data = [[ChatModel listMessages:remoteAddress] retain]; [[self tableView] reloadData]; + [self scrollToLastUnread:false]; } +- (void)addChatEntry:(ChatModel*)chat { + if(data == nil) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot add entry: null data"]; + return; + } + [self.tableView beginUpdates]; + int pos = [data count]; + [data insertObject:chat atIndex:pos]; + [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:pos inSection:0]] withRowAnimation:UITableViewRowAnimationFade]; + [self.tableView endUpdates]; + [self scrollToLastUnread:true]; +} + +- (void)scrollToLastUnread:(BOOL)animated { + if(data == nil) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot add entry: null data"]; + return; + } + + int index = -1; + // Find first unread & set all entry read + for(int i = 0; i <[data count]; ++i) { + ChatModel *chat = [data objectAtIndex:i]; + if([[chat read] intValue] == 0) { + [chat setRead:[NSNumber numberWithInt:1]]; + if(index == -1) + index = i; + } + } + if(index == -1) { + index = [data count] - 1; + } + + // Scroll to unread + [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] atScrollPosition:UITableViewScrollPositionMiddle animated:animated]; +} #pragma mark - Property Functions -- (void)setRemoteContact:(NSString *)aremoteContact { - self->remoteContact = aremoteContact; - [ChatModel readConversation:aremoteContact]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; +- (void)setRemoteAddress:(NSString *)aremoteAddress { + if(remoteAddress != nil) { + [remoteAddress release]; + } + self->remoteAddress = [aremoteAddress copy]; [self loadData]; + [ChatModel readConversation:remoteAddress]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; } + #pragma mark - UITableViewDataSource Functions - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { @@ -82,20 +130,20 @@ } +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + if(editingStyle == UITableViewCellEditingStyleDelete) { + [tableView beginUpdates]; + ChatModel *chat = [data objectAtIndex:[indexPath row]]; + [data removeObjectAtIndex:[indexPath row]]; + [chat delete]; + [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; + [tableView endUpdates]; + } +} + + #pragma mark - UITableViewDelegate Functions -- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - UIChatRoomHeader *headerController = [[UIChatRoomHeader alloc] init]; - UIView *headerView = [headerController view]; - [headerController setContact:remoteContact]; - [headerController release]; - return headerView; -} - -- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - return [UIChatRoomHeader height]; -} - - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { ChatModel *chat = [data objectAtIndex:[indexPath row]]; return [UIChatRoomCell height:chat]; diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h index 21c874e9d..d716f582e 100644 --- a/Classes/ChatRoomViewController.h +++ b/Classes/ChatRoomViewController.h @@ -24,20 +24,27 @@ #import "ChatRoomTableViewController.h" #import "ChatModel.h" +#include "linphonecore.h" + @interface ChatRoomViewController : UIViewController { ChatRoomTableViewController *tableController; UITextField *messageField; UIButton *sendButton; - NSString *remoteContact; + NSString *remoteAddress; UIToggleButton *editButton; + LinphoneChatRoom *chatRoom; + UILabel *addressLabel; + UIImageView *avatarImage; } -- (void) setRemoteContact:(NSString*)remoteContact; @property (nonatomic, retain) IBOutlet ChatRoomTableViewController* tableController; @property (nonatomic, retain) IBOutlet UIToggleButton *editButton; @property (nonatomic, retain) IBOutlet UITextField* messageField; @property (nonatomic, retain) IBOutlet UIButton* sendButton; +@property (nonatomic, retain) IBOutlet UILabel *addressLabel; +@property (nonatomic, retain) IBOutlet UIImageView *avatarImage; +@property (nonatomic, copy) NSString *remoteAddress; - (IBAction)onBackClick:(id)event; - (IBAction)onEditClick:(id)event; diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 28c6b6632..ade4c61e6 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -24,16 +24,22 @@ @implementation ChatRoomViewController - @synthesize tableController; @synthesize sendButton; @synthesize messageField; @synthesize editButton; +@synthesize remoteAddress; +@synthesize addressLabel; +@synthesize avatarImage; #pragma mark - Lifecycle Functions - (id)init { - return [super initWithNibName:@"ChatRoomViewController" bundle:[NSBundle mainBundle]]; + self = [super initWithNibName:@"ChatRoomViewController" bundle:[NSBundle mainBundle]]; + if (self != nil) { + self->chatRoom = NULL; + } + return self; } - (void)dealloc { @@ -42,9 +48,13 @@ [messageField release]; [sendButton release]; [editButton release]; + [remoteAddress release]; + [addressLabel release]; + [avatarImage release]; [super dealloc]; } + #pragma mark - UICompositeViewDelegate Functions + (UICompositeViewDescription*) compositeViewDescription { @@ -73,6 +83,14 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(keyboardWillShow:) + name:UIKeyboardWillShowNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(keyboardWillHide:) + name:UIKeyboardWillHideNotification + object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textReceivedEvent:) name:@"LinphoneTextReceived" @@ -85,6 +103,16 @@ - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; + if(chatRoom != NULL) { + linphone_chat_room_destroy(chatRoom); + chatRoom = NULL; + } + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardWillShowNotification + object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardWillHideNotification + object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LinphoneTextReceived" object:nil]; @@ -97,9 +125,66 @@ #pragma mark - -- (void)setRemoteContact:(NSString*)aRemoteContact { - remoteContact = aRemoteContact; - [tableController setRemoteContact: remoteContact]; +- (void)setRemoteAddress:(NSString*)aRemoteAddress { + if(remoteAddress != nil) { + [remoteAddress release]; + } + remoteAddress = [aRemoteAddress copy]; + [tableController setRemoteAddress: remoteAddress]; + + if(remoteAddress == NULL) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat room header: null contact"]; + return; + } + + NSString *displayName = nil; + UIImage *image = nil; + NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:remoteAddress]; + ABRecordRef acontact =[[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; + if(acontact != nil) { + displayName = [FastAddressBook getContactDisplayName:acontact]; + image = [FastAddressBook getContactImage:acontact thumbnail:true]; + } + + // Display name + if(displayName == nil) { + displayName = remoteAddress; + } + [addressLabel setText:displayName]; + + // Avatar + if(image == nil) { + image = [UIImage imageNamed:@"avatar_unknown_small.png"]; + } + [avatarImage setImage:image]; +} + +- (BOOL)sendMessage:(NSString *)message { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot send message: Linphone core not ready"]; + return FALSE; + } + if(remoteAddress == nil) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot send message: Null remoteAddress"]; + return FALSE; + } + if(chatRoom == NULL) { + chatRoom = linphone_core_create_chat_room([LinphoneManager getLc], [remoteAddress UTF8String]); + } + + // Save message in database + ChatModel *chat = [[ChatModel alloc] init]; + [chat setRemoteContact:remoteAddress]; + [chat setMessage:message]; + [chat setDirection:[NSNumber numberWithInt:0]]; + [chat setTime:[NSDate date]]; + [chat setRead:[NSNumber numberWithInt:1]]; + [chat create]; + [tableController addChatEntry:chat]; + [chat release]; + + linphone_chat_room_send_message(chatRoom, [message UTF8String]); + return TRUE; } @@ -107,13 +192,19 @@ - (void)textReceivedEvent:(NSNotification *)notif { //LinphoneChatRoom *room = [[[notif userInfo] objectForKey:@"room"] pointerValue]; + //NSString *message = [[notif userInfo] objectForKey:@"message"]; LinphoneAddress *from = [[[notif userInfo] objectForKey:@"from"] pointerValue]; - if(from != NULL) { - //NSString *message = [[notif userInfo] objectForKey:@"message"]; - if([[NSString stringWithUTF8String:linphone_address_get_username(from)] - caseInsensitiveCompare:remoteContact] == NSOrderedSame) { - [[tableController tableView] reloadData]; + ChatModel *chat = [[notif userInfo] objectForKey:@"chat"]; + if(from != NULL && chat != NULL) { + if([[NSString stringWithUTF8String:linphone_address_as_string_uri_only(from)] + caseInsensitiveCompare:remoteAddress] == NSOrderedSame) { + [chat setRead:[NSNumber numberWithInt:1]]; + [chat update]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; + [tableController addChatEntry:chat]; } + } else { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Invalid textReceivedEvent"]; } } @@ -137,7 +228,9 @@ } - (IBAction)onSendClick:(id)event { - [messageField endEditing:TRUE]; + if([self sendMessage:[messageField text]]) { + [messageField setText:@""]; + } } - (IBAction)onMessageChange:(id)sender { @@ -148,4 +241,44 @@ } } +#pragma mark - Keyboard Event Functions + +- (void)keyboardWillHide:(NSNotification *)notif { + CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; + NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [UIView beginAnimations:@"resize" context:nil]; + [UIView setAnimationDuration:duration]; + [UIView setAnimationCurve:curve]; + [UIView setAnimationBeginsFromCurrentState:TRUE]; + CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + CGRect frame = [[self view] frame]; + /* + CGPoint pos = {0, 0}; + CGPoint gPos = [[self view] convertPoint:pos toView:nil]; + frame.size.height = endFrame.origin.y - gPos.y; + */ + frame.origin.y += endFrame.origin.y - beginFrame.origin.y; + [[self view] setFrame:frame]; + [UIView commitAnimations]; +} + +- (void)keyboardWillShow:(NSNotification *)notif { + CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; + NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [UIView beginAnimations:@"resize" context:nil]; + [UIView setAnimationDuration:duration]; + [UIView setAnimationCurve:curve]; + [UIView setAnimationBeginsFromCurrentState:TRUE]; + CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + CGRect frame = [[self view] frame]; + /*CGPoint pos = {0, 0}; + CGPoint gPos = [[self view] convertPoint:pos toView:nil]; + frame.size.height = endFrame.origin.y - gPos.y;*/ + frame.origin.y += endFrame.origin.y - beginFrame.origin.y; + [[self view] setFrame:frame]; + [UIView commitAnimations]; +} + @end diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib index 0d2dede5d..2d19178d5 100644 --- a/Classes/ChatRoomViewController.xib +++ b/Classes/ChatRoomViewController.xib @@ -14,6 +14,7 @@ IBUIView IBUIImageView IBProxyObject + IBUILabel IBUITextField IBUITableViewController IBUITableView @@ -87,7 +88,7 @@ {{160, 0}, {160, 58}} - + _NS:9 NO @@ -128,83 +129,104 @@ IBCocoaTouchFramework + + + 292 + + + + 292 + {{-13, -5}, {131, 107}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + avatar_shadow_small.png + + + + + 274 + {{20, 6}, {65, 65}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + avatar_unknown_small.png + + + + + 292 + {{101, 37}, {199, 43}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Contact1 + + 3 + MC4zMzMzMzMzMzMzAA + + + 0 + 10 + + 1 + 22 + + + Helvetica + 22 + 16 + + + + {{0, 58}, {320, 80}} + + + + _NS:9 + + 3 + MCAwAA + + YES + IBCocoaTouchFramework + 274 - {{0, 58}, {320, 344}} + {{0, 138}, {320, 263}} _NS:9 - 10 - - 549453824 - {512, 1} - - - - - - TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ -xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA -AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA -AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI -AAgACAAIAAEAAQABAAE - - - - - - 3 - MCAwAA - - - groupTableViewBackgroundColor + 3 + MQA YES IBCocoaTouchFramework YES - 1 - 2 0 YES 44 - 10 - 10 + 22 + 22 @@ -216,7 +238,6 @@ AAgACAAIAAEAAQABAAE {{250, 0}, {70, 59}} - _NS:9 NO @@ -368,6 +389,22 @@ AAgACAAIAAEAAQABAAE 35 + + + addressLabel + + + + 43 + + + + avatarImage + + + + 44 + dataSource @@ -463,6 +500,7 @@ AAgACAAIAAEAAQABAAE + @@ -474,7 +512,7 @@ AAgACAAIAAEAAQABAAE - header + toolsView 8 @@ -530,6 +568,35 @@ AAgACAAIAAEAAQABAAE tableController + + 39 + + + + + + + + headerView + + + 42 + + + avatarShadowBackground + + + 41 + + + avatarImage + + + 40 + + + addressLabel + @@ -547,6 +614,10 @@ AAgACAAIAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin ChatRoomTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin TPKeyboardAvoidingTableView @@ -558,7 +629,7 @@ AAgACAAIAAEAAQABAAE - 35 + 44 @@ -598,12 +669,22 @@ AAgACAAIAAEAAQABAAE + UILabel + UIImageView UIToggleButton UITextField UIButton ChatRoomTableViewController + + addressLabel + UILabel + + + avatarImage + UIImageView + editButton UIToggleButton @@ -653,6 +734,8 @@ AAgACAAIAAEAAQABAAE YES 3 + {262, 214} + {131, 131} {320, 117} {320, 117} {320, 117} diff --git a/Classes/ChatTableViewController.h b/Classes/ChatTableViewController.h index 9dfa4e7ef..3c61220fc 100644 --- a/Classes/ChatTableViewController.h +++ b/Classes/ChatTableViewController.h @@ -24,4 +24,6 @@ NSMutableArray *data; } +- (void)loadData; + @end diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index 30e900622..3e5431f17 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -91,9 +91,9 @@ ChatModel *chat = [data objectAtIndex:[indexPath row]]; // Go to ChatRoom view - ChatRoomTableViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ChatRoom push:TRUE], ChatRoomTableViewController); + ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ChatRoom push:TRUE], ChatRoomViewController); if(controller != nil) { - [controller setRemoteContact:[chat remoteContact]]; + [controller setRemoteAddress:[chat remoteContact]]; } } diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 8afbf7dc6..d35917c48 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -61,7 +61,7 @@ if([tableController isEditing]) [tableController setEditing:FALSE animated:FALSE]; [editButton setOff]; - [[tableController tableView] reloadData]; + [tableController loadData]; } - (void)viewWillDisappear:(BOOL)animated { @@ -76,7 +76,7 @@ #pragma mark - Event Functions - (void)textReceivedEvent:(NSNotification *)notif { - [[tableController tableView] reloadData]; + [tableController loadData]; } diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index fb7101e0b..5822e5cc7 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -215,12 +215,11 @@ // Date NSDate *startData = [NSDate dateWithTimeIntervalSince1970:callLog->start_date_time]; NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; - [dateFormatter setTimeStyle:NSDateFormatterNoStyle]; + [dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; - NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; + NSLocale *locale = [NSLocale currentLocale]; [dateFormatter setLocale:locale]; [dateLabel setText:[dateFormatter stringFromDate:startData]]; - [locale release]; [dateFormatter release]; // Duration diff --git a/Classes/LinphoneApp.xib b/Classes/LinphoneApp.xib index ed352e92e..32ea92f39 100644 --- a/Classes/LinphoneApp.xib +++ b/Classes/LinphoneApp.xib @@ -42,10 +42,9 @@ {320, 480} - 1 - MSAxIDEAA + MCAxIDAuMTkxOTQ1NDc1NQA NO NO diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 3233247dd..e0146a9de 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -209,13 +209,22 @@ int __aeabi_idiv(int a, int b) { } - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { - LinphoneCall* call; - [(NSData*)([notification.userInfo objectForKey:@"call"]) getBytes:&call]; - if (!call) { - [LinphoneLogger logc:LinphoneLoggerWarning format:"Local notification received with nil call"]; - return; + if([notification.userInfo objectForKey:@"call"] != nil) { + LinphoneCall* call; + [(NSData*)[notification.userInfo objectForKey:@"call"] getBytes:&call]; + if (!call) { + [LinphoneLogger logc:LinphoneLoggerWarning format:"Local notification received with nil call"]; + return; + } + linphone_core_accept_call([LinphoneManager getLc], call); + } else if([notification.userInfo objectForKey:@"chat"] != nil) { + NSString *remoteContact = (NSString*)[notification.userInfo objectForKey:@"chat"]; + // Go to ChatRoom view + ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ChatRoom push:TRUE], ChatRoomViewController); + if(controller != nil) { + [controller setRemoteAddress:remoteContact]; + } } - linphone_core_accept_call([LinphoneManager getLc], call); } @end diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 3fec4a53f..1f3c456ae 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -52,8 +52,7 @@ struct NetworkReachabilityContext { typedef struct _LinphoneCallAppData { bool_t batteryWarningShown; - // transfer data - int transferButtonIndex; + UILocalNotification *notification; } LinphoneCallAppData; @interface LinphoneManager : NSObject { diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 021416385..9292eb920 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -265,6 +265,7 @@ static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char if (!linphone_call_get_user_pointer(call)) { LinphoneCallAppData* data = (LinphoneCallAppData*) malloc(sizeof(LinphoneCallAppData)); data->batteryWarningShown = FALSE; + data->notification = nil; linphone_call_set_user_pointer(call, data); } @@ -317,7 +318,7 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo // Save message in database ChatModel *chat = [[ChatModel alloc] init]; - [chat setRemoteContact:[NSString stringWithUTF8String:linphone_address_get_username(from)]]; + [chat setRemoteContact:[NSString stringWithUTF8String:linphone_address_as_string_uri_only(from)]]; [chat setMessage:[NSString stringWithUTF8String:message]]; [chat setDirection:[NSNumber numberWithInt:1]]; [chat setTime:[NSDate date]]; @@ -329,8 +330,10 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo [NSValue valueWithPointer:room], @"room", [NSValue valueWithPointer:from], @"from", [NSString stringWithUTF8String:message], @"message", + chat, @"chat", nil] autorelease]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self userInfo:dict]; + [chat release]; } static void linphone_iphone_text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from, const char *message) { diff --git a/Classes/LinphoneUI/UIChatCell.h b/Classes/LinphoneUI/UIChatCell.h index 5f7bad19b..126310b04 100644 --- a/Classes/LinphoneUI/UIChatCell.h +++ b/Classes/LinphoneUI/UIChatCell.h @@ -23,7 +23,7 @@ @interface UIChatCell : UITableViewCell { UIImageView *avatarImage; - UILabel *displayNameLabel; + UILabel *addressLabel; UILabel *chatContentLabel; UIButton *detailsButton; UIButton *deleteButton; @@ -33,7 +33,7 @@ @property (nonatomic, retain) ChatModel *chat; @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; -@property (nonatomic, retain) IBOutlet UILabel* displayNameLabel; +@property (nonatomic, retain) IBOutlet UILabel* addressLabel; @property (nonatomic, retain) IBOutlet UILabel* chatContentLabel; @property (nonatomic, retain) IBOutlet UIButton *detailsButton; @property (nonatomic, retain) IBOutlet UIButton * deleteButton; diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index dc98f86b6..522aabd62 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -19,12 +19,13 @@ #import "UIChatCell.h" #import "PhoneMainView.h" +#import "LinphoneManager.h" #import "Utils.h" @implementation UIChatCell @synthesize avatarImage; -@synthesize displayNameLabel; +@synthesize addressLabel; @synthesize chatContentLabel; @synthesize detailsButton; @synthesize deleteButton; @@ -47,7 +48,7 @@ } - (void)dealloc { - [displayNameLabel release]; + [addressLabel release]; [chatContentLabel release]; [avatarImage release]; [detailsButton release]; @@ -75,30 +76,50 @@ return; } - [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; - [displayNameLabel setText:[chat remoteContact]]; + NSString *displayName = nil; + UIImage *image = nil; + NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[chat remoteContact]]; + ABRecordRef contact =[[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; + if(contact != nil) { + displayName = [FastAddressBook getContactDisplayName:contact]; + image = [FastAddressBook getContactImage:contact thumbnail:true]; + } + + // Display name + if(displayName == nil) { + displayName = [chat remoteContact]; + } + [addressLabel setText:displayName]; + + // Avatar + if(image == nil) { + image = [UIImage imageNamed:@"avatar_unknown_small.png"]; + } + [avatarImage setImage:image]; + + // Message [chatContentLabel setText:[chat message]]; // // Adapt size // - CGRect displayNameFrame = [displayNameLabel frame]; + CGRect displayNameFrame = [addressLabel frame]; CGRect chatContentFrame = [chatContentLabel frame]; chatContentFrame.origin.x -= displayNameFrame.size.width; // Compute firstName size CGSize contraints; - contraints.height = [displayNameLabel frame].size.height; - contraints.width = ([chatContentLabel frame].size.width + [chatContentLabel frame].origin.x) - [displayNameLabel frame].origin.x; - CGSize firstNameSize = [[displayNameLabel text] sizeWithFont:[displayNameLabel font] constrainedToSize: contraints]; + contraints.height = [addressLabel frame].size.height; + contraints.width = ([chatContentLabel frame].size.width + [chatContentLabel frame].origin.x) - [addressLabel frame].origin.x; + CGSize firstNameSize = [[addressLabel text] sizeWithFont:[addressLabel font] constrainedToSize: contraints]; displayNameFrame.size.width = firstNameSize.width; // Compute lastName size & position chatContentFrame.origin.x += displayNameFrame.size.width; - chatContentFrame.size.width = (contraints.width + [displayNameLabel frame].origin.x) - chatContentFrame.origin.x; + chatContentFrame.size.width = (contraints.width + [addressLabel frame].origin.x) - chatContentFrame.origin.x; - [displayNameLabel setFrame: displayNameFrame]; + [addressLabel setFrame: displayNameFrame]; [chatContentLabel setFrame: chatContentFrame]; } @@ -129,7 +150,7 @@ // Go to Chat room view ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ChatRoom push:TRUE], ChatRoomViewController); if(controller !=nil) { - [controller setRemoteContact:[chat remoteContact]]; + [controller setRemoteAddress:[chat remoteContact]]; } } diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib index d64d8a989..92cdf036a 100644 --- a/Classes/LinphoneUI/UIChatCell.xib +++ b/Classes/LinphoneUI/UIChatCell.xib @@ -166,6 +166,7 @@ {{276, 0}, {44, 44}} + _NS:9 NO IBCocoaTouchFramework @@ -203,14 +204,6 @@ - - - displayNameLabel - - - - 23 - chatContentLabel @@ -243,6 +236,14 @@ 35 + + + addressLabel + + + + 38 + onDetailsClick: @@ -309,7 +310,7 @@ 20 - displayNameLabel + addressLabel 21 @@ -345,7 +346,7 @@ - 37 + 38 @@ -367,13 +368,17 @@ + UILabel UIImageView UILabel UIButton UIButton - UILabel + + addressLabel + UILabel + avatarImage UIImageView @@ -390,10 +395,6 @@ detailsButton UIButton - - displayNameLabel - UILabel - IBProjectSource diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h index 2c24c3915..22891bdbb 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.h +++ b/Classes/LinphoneUI/UIChatRoomCell.h @@ -24,17 +24,21 @@ @interface UIChatRoomCell : UITableViewCell { UIImageView *backgroundImage; UIView *contentView; + UIView *messageView; UILabel *messageLabel; UIButton *deleteButton; + UILabel *dateLabel; ChatModel *chat; } @property (nonatomic, retain) ChatModel *chat; @property (nonatomic, retain) IBOutlet UIView *contentView; +@property (nonatomic, retain) IBOutlet UIView *messageView; @property (nonatomic, retain) IBOutlet UIImageView* backgroundImage; @property (nonatomic, retain) IBOutlet UILabel *messageLabel; @property (nonatomic, retain) IBOutlet UIButton *deleteButton; +@property (nonatomic, retain) IBOutlet UILabel *dateLabel; - (id)initWithIdentifier:(NSString*)identifier; + (CGFloat)height:(ChatModel*)chat; diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index a18150915..4ce7739f2 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -25,9 +25,11 @@ @implementation UIChatRoomCell @synthesize contentView; +@synthesize messageView; @synthesize backgroundImage; @synthesize messageLabel; @synthesize deleteButton; +@synthesize dateLabel; @synthesize chat; static const CGFloat CELL_MIN_HEIGHT = 65.0f; @@ -50,8 +52,10 @@ static UIFont *CELL_FONT = nil; - (void)dealloc { [backgroundImage release]; [contentView release]; + [messageView release]; [messageLabel release]; [deleteButton release]; + [dateLabel release]; [chat release]; @@ -69,8 +73,10 @@ static UIFont *CELL_FONT = nil; [self update]; } - -#pragma mark - +- (void)prepareForReuse { + [super prepareForReuse]; + self->chat = nil; +} - (void)update { if(chat == nil) { @@ -78,6 +84,15 @@ static UIFont *CELL_FONT = nil; return; } [messageLabel setText:[chat message]]; + + // Date + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; + [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; + NSLocale *locale = [NSLocale currentLocale]; + [dateFormatter setLocale:locale]; + [dateLabel setText:[dateFormatter stringFromDate:[chat time]]]; + [dateFormatter release]; } - (void)setEditing:(BOOL)editing { @@ -110,20 +125,24 @@ static UIFont *CELL_FONT = nil; } if(chat != nil) { - if([chat direction]) { + CGPoint center = [contentView center]; + if(![[chat direction] intValue]) { // Inverted [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size forNinePatchNamed:@"chat_bubble_incoming"]]; + center.y += 6; } else { [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size forNinePatchNamed:@"chat_bubble_outgoing"]]; + center.y -= 6; } + [messageView setCenter:center]; } - // Resize message + // Resize messageView { - CGRect frame = [messageLabel frame]; - frame.size.height = [UIChatRoomCell messageHeight:[chat message]]; - [messageLabel setFrame:frame]; + CGRect frame = [messageView frame]; + frame.size.height = [UIChatRoomCell messageHeight:[chat message]] + 10; + [messageView setFrame:frame]; } } @@ -139,7 +158,7 @@ static UIFont *CELL_FONT = nil; + (CGFloat)height:(ChatModel*)chat { CGFloat height = [UIChatRoomCell messageHeight:[chat message]]; - height += 20; + height += 40; if(height < CELL_MIN_HEIGHT) height = CELL_MIN_HEIGHT; return height; @@ -158,9 +177,14 @@ static UIFont *CELL_FONT = nil; - (IBAction)onDeleteClick: (id) event { if(chat != NULL) { - [chat delete]; - UITableView *parentTable = (UITableView *)self.superview; - [parentTable reloadData]; + UIView *view = [self superview]; + // Find TableViewCell + if(view != nil && ![view isKindOfClass:[UITableView class]]) view = [view superview]; + if(view != nil) { + UITableView *tableView = (UITableView*) view; + NSIndexPath *indexPath = [tableView indexPathForCell:self]; + [[tableView dataSource] tableView:tableView commitEditingStyle:UITableViewCellEditingStyleDelete forRowAtIndexPath:indexPath]; + } } } diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib index 5cc6c4476..3939cee62 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.xib +++ b/Classes/LinphoneUI/UIChatRoomCell.xib @@ -59,7 +59,7 @@ 274 - {280, 100} + {280, 90} @@ -91,21 +91,22 @@ - 297 - {{236, 28}, {44, 44}} + 289 + {{236, 0}, {44, 44}} + _NS:9 NO IBCocoaTouchFramework 0 0 NO - 11 - 11 - 11 - 11 - + 2 + 20 + 20 + 2 + 3 MC41AA @@ -127,8 +128,37 @@ 16 + + + 265 + {{0, 90}, {280, 10}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + 09/09/2009 at 09:09 + + + 0 + 10 + 2 + + 1 + 12 + + + Helvetica + 12 + 16 + + - {{20, 25}, {280, 100}} + {{20, 20}, {280, 100}} @@ -152,21 +182,17 @@ IBCocoaTouchFramework - + 292 {100, 100} - - _NS:9 IBCocoaTouchFramework - + 292 {100, 100} - - _NS:9 IBCocoaTouchFramework @@ -222,6 +248,22 @@ 19 + + + messageView + + + + 21 + + + + dateLabel + + + + 24 + onDeleteClick: @@ -285,6 +327,7 @@ + messageView @@ -301,6 +344,12 @@ deleteButton + + 22 + + + timestampLabel + @@ -314,6 +363,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -322,7 +372,7 @@ - 20 + 24 @@ -343,8 +393,10 @@ UIImageView UIView + UILabel UIButton UILabel + UIView @@ -355,6 +407,10 @@ contentView UIView + + dateLabel + UILabel + deleteButton UIButton @@ -363,6 +419,10 @@ messageLabel UILabel + + messageView + UIView + IBProjectSource diff --git a/Classes/LinphoneUI/UIChatRoomHeader.h b/Classes/LinphoneUI/UIChatRoomHeader.h deleted file mode 100644 index 2af647bc9..000000000 --- a/Classes/LinphoneUI/UIChatRoomHeader.h +++ /dev/null @@ -1,37 +0,0 @@ -/* UIChatRoomHeader.h - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import -#import "ChatModel.h" - -@interface UIChatRoomHeader : UIViewController { - UILabel *addressLabel; - UIImageView *avatarImage; - - NSString *contact; -} - -@property (nonatomic, copy) NSString *contact; - -@property (nonatomic, retain) IBOutlet UILabel *addressLabel; -@property (nonatomic, retain) IBOutlet UIImageView *avatarImage; - -+ (CGFloat)height; - -@end diff --git a/Classes/LinphoneUI/UIChatRoomHeader.m b/Classes/LinphoneUI/UIChatRoomHeader.m deleted file mode 100644 index 6b862c155..000000000 --- a/Classes/LinphoneUI/UIChatRoomHeader.m +++ /dev/null @@ -1,71 +0,0 @@ -/* UIChatRoomHeader.m - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "UIChatRoomHeader.h" -#import "Utils.h" - -@implementation UIChatRoomHeader - -@synthesize avatarImage; -@synthesize addressLabel; -@synthesize contact; - - -#pragma mark - Lifecycle Functions - -- (id)init { - return [super initWithNibName:@"UIChatRoomHeader" bundle:[NSBundle mainBundle]]; -} - -- (void)dealloc { - [avatarImage release]; - [addressLabel release]; - [contact release]; - [super dealloc]; -} - - -#pragma mark - Property Functions - -- (void)setContact:(NSString *)acontact { - if(contact != nil) { - [contact release]; - } - contact = [acontact copy]; - [self update]; -} - - -#pragma mark - - -- (void)update { - if(contact == NULL) { - [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat room header: null contact"]; - return; - } - - [avatarImage setImage:[UIImage imageNamed:@"avatar_unknown_small.png"]]; - [addressLabel setText:contact]; -} - -+ (CGFloat)height { - return 80.0f; -} - -@end diff --git a/Classes/LinphoneUI/UIChatRoomHeader.xib b/Classes/LinphoneUI/UIChatRoomHeader.xib deleted file mode 100644 index 7f6464409..000000000 --- a/Classes/LinphoneUI/UIChatRoomHeader.xib +++ /dev/null @@ -1,245 +0,0 @@ - - - - 1296 - 11D50 - 2182 - 1138.32 - 568.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUIImageView - IBUIView - IBUILabel - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - - - 292 - {{-13, -5}, {131, 107}} - - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - avatar_shadow_small.png - - - - - 274 - {{20, 6}, {65, 65}} - - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - avatar_unknown_small.png - - - - - 292 - {{101, 37}, {199, 43}} - - - - _NS:9 - NO - YES - 7 - NO - IBCocoaTouchFramework - Contact1 - - 3 - MC4zMzMzMzMzMzMzAA - - - 0 - 10 - - 1 - 22 - - - Helvetica - 22 - 16 - - - - {320, 80} - - - - _NS:9 - - 3 - MCAwAA - - IBCocoaTouchFramework - - - - - - - view - - - - 5 - - - - avatarImage - - - - 9 - - - - addressLabel - - - - 12 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - - - - 6 - - - avatarImage - - - 7 - - - avatarShadowBackground - - - 8 - - - addressLabel - - - - - UIChatRoomHeader - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 12 - - - - - UIChatRoomHeader - UIViewController - - UILabel - UIImageView - - - - addressLabel - UILabel - - - avatarImage - UIImageView - - - - IBProjectSource - ./Classes/UIChatRoomHeader.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - - {262, 214} - {131, 131} - - 1181 - - diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 7279cef15..96687ab65 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -97,6 +97,38 @@ [super dealloc]; } + +#pragma mark - ViewController Functions + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [contentViewController viewWillAppear:animated]; + [tabBarViewController viewWillAppear:animated]; + [stateBarViewController viewWillAppear:animated]; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + [contentViewController viewDidAppear:animated]; + [tabBarViewController viewDidAppear:animated]; + [stateBarViewController viewDidAppear:animated]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + [contentViewController viewWillDisappear:animated]; + [tabBarViewController viewWillDisappear:animated]; + [stateBarViewController viewWillDisappear:animated]; +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + [contentViewController viewDidDisappear:animated]; + [tabBarViewController viewDidDisappear:animated]; + [stateBarViewController viewDidDisappear:animated]; +} + + #pragma mark - + (void)addSubView:(UIViewController*)controller view:(UIView*)view { diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 5b6cefe12..631013361 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -136,6 +136,9 @@ address = [NSString stringWithUTF8String:lUserName]; } } + if(address == nil) { + address = @"Unknown"; + } [addressLabel setText:address]; [imageView setImage: image]; diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index b6c3237a3..a5c9eff9f 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -73,15 +73,11 @@ selector:@selector(textReceived:) name:@"LinphoneTextReceived" object:nil]; - - // Update current view - [self updateView:[[PhoneMainView instance] currentView]]; - if([LinphoneManager isLcReady]) { - [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; - } else { - [self updateMissedCall:0]; - } - [self updateUnreadMessage:[ChatModel unreadMessages]]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(applicationWillResignActive:) + name:UIApplicationWillResignActiveNotification + object:nil]; + [self update]; } - (void)viewWillDisappear:(BOOL)animated { @@ -96,75 +92,82 @@ [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LinphoneTextReceived" object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIApplicationWillResignActiveNotification + object:nil]; } #pragma mark - Event Functions -- (void)callUpdate: (NSNotification*) notif { +- (void)applicationWillResignActive:(NSNotification*)notif { + // Refresh notifications + [historyNotificationView setHidden:TRUE]; + [chatNotificationView setHidden:TRUE]; + [self update]; +} + +- (void)callUpdate:(NSNotification*)notif { //LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; //LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; } -- (void)changeViewEvent: (NSNotification*) notif { +- (void)changeViewEvent:(NSNotification*)notif { NSNumber *viewNumber = [notif.userInfo objectForKey: @"view"]; if(viewNumber != nil) [self updateView:[viewNumber intValue]]; } -- (void)textReceived: (NSNotification*) notif { +- (void)textReceived:(NSNotification*)notif { [self updateUnreadMessage:[ChatModel unreadMessages]]; } #pragma mark - -- (void)updateUnreadMessage:(int)unreadMessage { +- (void)update { + [self updateView:[[PhoneMainView instance] currentView]]; + if([LinphoneManager isLcReady]) { + [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; + } else { + [self updateMissedCall:0]; + } + [self updateUnreadMessage:[ChatModel unreadMessages]]; +} + +- (void)updateUnreadMessage:(int)unreadMessage{ if (unreadMessage > 0) { if([chatNotificationView isHidden]) { - chatNotificationView.transform = CGAffineTransformIdentity; - [self startBounceAnimation:@"Bounce" target:chatNotificationView]; [chatNotificationView setHidden:FALSE]; + [self appearAnimation:@"Appear" target:chatNotificationView completion:^(BOOL finished){ + [self startBounceAnimation:@"Bounce" target:chatNotificationView]; + }]; } [chatNotificationLabel setText:[NSString stringWithFormat:@"%i", unreadMessage]]; } else { if(![chatNotificationView isHidden]) { [self stopBounceAnimation:@"Bounce" target:chatNotificationView]; - CGAffineTransform startCGA = [chatNotificationView transform]; - [UIView animateWithDuration:0.4 - delay:0 - options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction - animations:^{ - chatNotificationView.transform = CGAffineTransformConcat(startCGA, CGAffineTransformMakeScale(0.01f, 0.01f)); - } - completion:^(BOOL finished){ - [chatNotificationView setHidden:TRUE]; - } - ]; + [self disappearAnimation:@"Disappear" target:chatNotificationView completion:^(BOOL finished){ + [chatNotificationView setHidden:TRUE]; + }]; } } } -- (void)updateMissedCall:(int)missedCall { +- (void)updateMissedCall:(int)missedCall{ if (missedCall > 0) { if([historyNotificationView isHidden]) { - historyNotificationView.transform = CGAffineTransformIdentity; - [self startBounceAnimation:@"Bounce" target:historyNotificationView]; [historyNotificationView setHidden:FALSE]; + [self appearAnimation:@"Appear" target:historyNotificationView completion:^(BOOL finished){ + [self startBounceAnimation:@"Bounce" target:historyNotificationView]; + }]; } [historyNotificationLabel setText:[NSString stringWithFormat:@"%i", missedCall]]; } else { if(![historyNotificationView isHidden]) { [self stopBounceAnimation:@"Bounce" target:historyNotificationView]; - CGAffineTransform startCGA = [historyNotificationView transform]; - [UIView animateWithDuration:0.4 - delay:0 - options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction - animations:^{ - historyNotificationView.transform = CGAffineTransformConcat(startCGA, CGAffineTransformMakeScale(0.01f, 0.01f)); - } - completion:^(BOOL finished){ + [self disappearAnimation:@"Disappear" target:historyNotificationView completion:^(BOOL finished){ [historyNotificationView setHidden:TRUE]; } ]; @@ -172,8 +175,30 @@ } } -- (void)startBounceAnimation:(NSString *)animationID target:(UIView *)target { - [target setTransform:CGAffineTransformMakeTranslation(0, -4)]; +- (void)appearAnimation:(NSString*)animationID target:(UIView*)target completion:(void (^)(BOOL finished))completion { + target.transform = CGAffineTransformMakeScale(0.01f, 0.01f); + [UIView animateWithDuration:0.4 + delay:0 + options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction + animations:^{ + target.transform = CGAffineTransformIdentity; + } + completion:completion]; +} + +- (void)disappearAnimation:(NSString*)animationID target:(UIView*)target completion:(void (^)(BOOL finished))completion { + CGAffineTransform startCGA = [target transform]; + [UIView animateWithDuration:0.4 + delay:0 + options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction + animations:^{ + target.transform = CGAffineTransformConcat(startCGA, CGAffineTransformMakeScale(0.01f, 0.01f)); + } + completion:completion]; +} + +- (void)startBounceAnimation:(NSString *)animationID target:(UIView *)target { + CGAffineTransform startCGA = [target transform]; [UIView animateWithDuration: 0.3 delay: 0 options: UIViewAnimationOptionRepeat | @@ -181,7 +206,7 @@ UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionCurveEaseIn animations:^{ - [target setTransform:CGAffineTransformMakeTranslation(0, 4)]; + [target setTransform: CGAffineTransformConcat(startCGA, CGAffineTransformMakeTranslation(0, 8))]; } completion:^(BOOL finished){ }]; diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib index 6330d597c..1b5260d8b 100644 --- a/Classes/LinphoneUI/UIMainBar.xib +++ b/Classes/LinphoneUI/UIMainBar.xib @@ -119,8 +119,8 @@ - 292 - {21, 21} + 256 + {{2, 2}, {17, 17}} @@ -150,7 +150,7 @@ - {{38, 5}, {21, 21}} + {{38, 1}, {21, 21}} @@ -309,10 +309,11 @@ - 292 - {21, 21} + 256 + {{2, 2}, {17, 17}} + _NS:9 NO YES @@ -329,7 +330,7 @@ - {{261, 5}, {21, 21}} + {{261, 1}, {21, 21}} diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m index 575442316..e09d131e9 100644 --- a/Classes/Model/ChatModel.m +++ b/Classes/Model/ChatModel.m @@ -42,7 +42,7 @@ self.direction = [NSNumber numberWithInt:sqlite3_column_int(sqlStatement, 3)]; self.message = [NSString stringWithUTF8String: (const char*) sqlite3_column_text(sqlStatement, 4)]; self.time = [NSDate dateWithTimeIntervalSince1970:sqlite3_column_int(sqlStatement, 5)]; - self.read = [NSDate dateWithTimeIntervalSince1970:sqlite3_column_int(sqlStatement, 6)]; + self.read = [NSNumber numberWithInt:sqlite3_column_int(sqlStatement, 6)]; } return self; } @@ -80,6 +80,12 @@ [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); } + + if([self chatId] != nil) { + [self->chatId release]; + } + self->chatId = [[NSNumber alloc] initWithInt:sqlite3_last_insert_rowid(database)]; + sqlite3_finalize(sqlStatement); } + (ChatModel*)read:(NSNumber*)chatId { @@ -89,8 +95,8 @@ return nil; } - const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE id=%@", - chatId] UTF8String]; + const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE id=%i", + [chatId intValue]] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; @@ -118,8 +124,8 @@ return; } - const char *sql = [[NSString stringWithFormat:@"UPDATE chat SET localContact=\"%@\", remoteContact=\"%@\", direction=%i, message=\"%@\", time=%f, read=%i WHERE id=%@", - localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], read, [chatId intValue]] UTF8String]; + const char *sql = [[NSString stringWithFormat:@"UPDATE chat SET localContact=\"%@\", remoteContact=\"%@\", direction=%i, message=\"%@\", time=%f, read=%i WHERE id=%i", + localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], [read intValue], [chatId intValue]] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; @@ -142,8 +148,8 @@ return; } - const char *sql = [[NSString stringWithFormat:@"DELETE FROM chat WHERE id=%@", - chatId] UTF8String]; + const char *sql = [[NSString stringWithFormat:@"DELETE FROM chat WHERE id=%i", + [chatId intValue]] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; @@ -201,7 +207,7 @@ return array; } - const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE remoteContact=\"%@\" ORDER BY time DESC", + const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE remoteContact=\"%@\" ORDER BY time ASC", contact] UTF8String]; sqlite3_stmt *sqlStatement; if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index e2077c354..94e6431e6 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -18,6 +18,7 @@ */ #import +#import #import "PhoneMainView.h" #import "Utils.h" @@ -108,6 +109,10 @@ static PhoneMainView* phoneMainViewInstance=nil; - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [mainViewController viewWillAppear:NO]; + } + // Set observers [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) @@ -117,7 +122,10 @@ static PhoneMainView* phoneMainViewInstance=nil; selector:@selector(registrationUpdate:) name:@"LinphoneRegistrationUpdate" object:nil]; - + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(textReceived:) + name:@"LinphoneTextReceived" + object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) name:UIDeviceBatteryLevelDidChangeNotification @@ -127,6 +135,10 @@ static PhoneMainView* phoneMainViewInstance=nil; - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [mainViewController viewWillDisappear:NO]; + } + // Remove observers [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LinphoneCallUpdate" @@ -134,11 +146,28 @@ static PhoneMainView* phoneMainViewInstance=nil; [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LinphoneRegistrationUpdate" object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneTextReceived" + object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceBatteryLevelDidChangeNotification object:nil]; } +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [mainViewController viewDidAppear:NO]; + } +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [mainViewController viewDidDisappear:NO]; + } +} + - (void)viewDidUnload { [super viewDidUnload]; @@ -149,6 +178,13 @@ static PhoneMainView* phoneMainViewInstance=nil; #pragma mark - Event Functions +- (void)textReceived:(NSNotification*)notif { + ChatModel *chat = [[notif userInfo] objectForKey:@"chat"]; + if(chat != nil) { + [self displayMessage:chat]; + } +} + - (void)registrationUpdate:(NSNotification*)notif { LinphoneRegistrationState state = [[notif.userInfo objectForKey: @"state"] intValue]; LinphoneProxyConfig *cfg = [[notif.userInfo objectForKey: @"cfg"] pointerValue]; @@ -396,40 +432,89 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (void)dismissIncomingCall:(LinphoneCall*)call { - //cancel local notification, just in case - if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] - && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground) { - // cancel local notif if needed - [[UIApplication sharedApplication] cancelAllLocalNotifications]; - } -} + LinphoneCallAppData* appData = (LinphoneCallAppData*) linphone_call_get_user_pointer(call); + if(appData != nil && appData->notification != nil) { + // cancel local notif if needed + [[UIApplication sharedApplication] cancelLocalNotification:appData->notification]; + [appData->notification release]; + } +} #pragma mark - ActionSheet Functions -- (void)displayIncomingCall:(LinphoneCall*) call{ - - const char* userNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); - NSString* userName = userNameChars?[[[NSString alloc] initWithUTF8String:userNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); - const char* displayNameChars = linphone_address_get_display_name(linphone_call_get_remote_address(call)); - NSString* displayName = [displayNameChars?[[NSString alloc] initWithUTF8String:displayNameChars]:@"" autorelease]; - - //TODO - //[mMainScreenWithVideoPreview showPreview:NO]; - if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] +- (void)displayMessage:(ChatModel*)chat { + if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [UIApplication sharedApplication].applicationState != UIApplicationStateActive) { + + NSString* address = [chat remoteContact]; + NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:address]; + ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; + if(contact) { + address = [FastAddressBook getContactDisplayName:contact]; + } + if(address == nil) { + address = @"Unknown"; + } + // Create a new notification UILocalNotification* notif = [[[UILocalNotification alloc] init] autorelease]; - if (notif) - { + if (notif) { notif.repeatInterval = 0; - notif.alertBody =[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil),[displayName length]>0?displayName:userName]; - notif.alertAction = @"Answer"; - notif.soundName = @"oldphone-mono-30s.caf"; - NSData *callData = [NSData dataWithBytes:&call length:sizeof(call)]; - notif.userInfo = [NSDictionary dictionaryWithObject:callData forKey:@"call"]; + notif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"%@ sent you a message",nil), address]; + notif.alertAction = NSLocalizedString(@"Show", nil); + notif.soundName = UILocalNotificationDefaultSoundName; + notif.userInfo = [NSDictionary dictionaryWithObject:[chat remoteContact] forKey:@"chat"]; - [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; + [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; + } + } else { + AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); + } +} + +- (void)displayIncomingCall:(LinphoneCall*) call{ + LinphoneCallAppData* appData = (LinphoneCallAppData*) linphone_call_get_user_pointer(call); + if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] + && [UIApplication sharedApplication].applicationState != UIApplicationStateActive) { + + const LinphoneAddress *addr = linphone_call_get_remote_address(call); + NSString* address = nil; + if(addr != NULL) { + BOOL useLinphoneAddress = true; + // contact name + const char* lAddress = linphone_address_as_string_uri_only(addr); + if(lAddress) { + NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; + ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; + if(contact) { + address = [FastAddressBook getContactDisplayName:contact]; + useLinphoneAddress = false; + } + } + if(useLinphoneAddress) { + const char* lDisplayName = linphone_address_get_display_name(addr); + const char* lUserName = linphone_address_get_username(addr); + if (lDisplayName) + address = [NSString stringWithUTF8String:lDisplayName]; + else if(lUserName) + address = [NSString stringWithUTF8String:lUserName]; + } + } + if(address == nil) { + address = @"Unknown"; + } + + // Create a new notification + appData->notification = [[UILocalNotification alloc] init]; + if (appData->notification) { + appData->notification.repeatInterval = 0; + appData->notification.alertBody =[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil), address]; + appData->notification.alertAction = NSLocalizedString(@"Answer", nil); + appData->notification.soundName = @"oldphone-mono-30s.caf"; + appData->notification.userInfo = [NSDictionary dictionaryWithObject:[NSData dataWithBytes:&call length:sizeof(call)] forKey:@"call"]; + + [[UIApplication sharedApplication] presentLocalNotificationNow:appData->notification]; } } else { IncomingCallViewController *controller = [[IncomingCallViewController alloc] init]; diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index db8ede993..db9eb2b82 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -46,7 +46,6 @@ {320, 460} - _NS:9 NO IBCocoaTouchFramework @@ -62,11 +61,8 @@ _NS:9 - 3 - MQA - - 2 - + 1 + MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA IBCocoaTouchFramework @@ -132,7 +128,6 @@ - root 208 @@ -276,7 +271,7 @@ 3 background.png - {16, 16} + {640, 523} 1181 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index cac80fa0c..6e90abf59 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -531,10 +531,6 @@ D3C6526E15AC228A0092A874 /* contact_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526A15AC228A0092A874 /* contact_ok_over.png */; }; D3C714B3159DB84400705B8E /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; D3C714B4159DB84400705B8E /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; - D3D14E7715A70EE30074A527 /* UIChatRoomHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3D14E7515A70EE20074A527 /* UIChatRoomHeader.m */; }; - D3D14E7815A70EE30074A527 /* UIChatRoomHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3D14E7515A70EE20074A527 /* UIChatRoomHeader.m */; }; - D3D14E7915A70EE30074A527 /* UIChatRoomHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3D14E7615A70EE30074A527 /* UIChatRoomHeader.xib */; }; - D3D14E7A15A70EE30074A527 /* UIChatRoomHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3D14E7615A70EE30074A527 /* UIChatRoomHeader.xib */; }; D3D14E7C15A711700074A527 /* avatar_shadow_small.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D14E7B15A711700074A527 /* avatar_shadow_small.png */; }; D3D14E7D15A711700074A527 /* avatar_shadow_small.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D14E7B15A711700074A527 /* avatar_shadow_small.png */; }; D3D6A39E159B0EEF005F692C /* add_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_default.png */; }; @@ -1334,9 +1330,6 @@ D3C6526915AC228A0092A874 /* contact_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_ok_default.png; path = Resources/contact_ok_default.png; sourceTree = ""; }; D3C6526A15AC228A0092A874 /* contact_ok_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_ok_over.png; path = Resources/contact_ok_over.png; sourceTree = ""; }; D3C714B2159DB84400705B8E /* toy-mono.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "toy-mono.wav"; path = "Resources/toy-mono.wav"; sourceTree = ""; }; - D3D14E7415A70EE20074A527 /* UIChatRoomHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIChatRoomHeader.h; sourceTree = ""; }; - D3D14E7515A70EE20074A527 /* UIChatRoomHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIChatRoomHeader.m; sourceTree = ""; }; - D3D14E7615A70EE30074A527 /* UIChatRoomHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIChatRoomHeader.xib; sourceTree = ""; }; D3D14E7B15A711700074A527 /* avatar_shadow_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = avatar_shadow_small.png; path = Resources/avatar_shadow_small.png; sourceTree = ""; }; D3D6A39B159B0EEF005F692C /* add_call_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_default.png; path = Resources/add_call_default.png; sourceTree = ""; }; D3D6A39C159B0EEF005F692C /* add_call_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_disabled.png; path = Resources/add_call_disabled.png; sourceTree = ""; }; @@ -1881,9 +1874,6 @@ D3A8BB6E15A6C7D500F96BE5 /* UIChatRoomCell.h */, D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */, D3A8BB7315A6C81A00F96BE5 /* UIChatRoomCell.xib */, - D3D14E7415A70EE20074A527 /* UIChatRoomHeader.h */, - D3D14E7515A70EE20074A527 /* UIChatRoomHeader.m */, - D3D14E7615A70EE30074A527 /* UIChatRoomHeader.xib */, D31B4B1E159876C0002E6C72 /* UICompositeViewController.h */, D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */, D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */, @@ -2798,7 +2788,6 @@ D3A8BB8315A6CC3200F96BE5 /* setup_start_disabled.png in Resources */, D389363915A6D53200A3A3AA /* chat_bubble_incoming.9.png in Resources */, D389363B15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */, - D3D14E7915A70EE30074A527 /* UIChatRoomHeader.xib in Resources */, D3D14E7C15A711700074A527 /* avatar_shadow_small.png in Resources */, D3128FE315AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */, D3128FEF15AABE4E00A2147A /* contact_back_default.png in Resources */, @@ -3049,7 +3038,6 @@ D3A8BB8415A6CC3200F96BE5 /* setup_start_disabled.png in Resources */, D389363A15A6D53200A3A3AA /* chat_bubble_incoming.9.png in Resources */, D389363C15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */, - D3D14E7A15A70EE30074A527 /* UIChatRoomHeader.xib in Resources */, D3D14E7D15A711700074A527 /* avatar_shadow_small.png in Resources */, D3128FE415AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */, D3128FF015AABE4E00A2147A /* contact_back_default.png in Resources */, @@ -3165,7 +3153,6 @@ D3A8BB7015A6C7D500F96BE5 /* UIChatRoomCell.m in Sources */, D389362615A6D19800A3A3AA /* CPAnimationSequence.m in Sources */, D389362815A6D19800A3A3AA /* CPAnimationStep.m in Sources */, - D3D14E7715A70EE30074A527 /* UIChatRoomHeader.m in Sources */, D3128FE115AABC7E00A2147A /* ContactDetailsViewController.m in Sources */, D37C639515AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */, D37C639B15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, @@ -3255,7 +3242,6 @@ D3A8BB7115A6C7D500F96BE5 /* UIChatRoomCell.m in Sources */, D389362715A6D19800A3A3AA /* CPAnimationSequence.m in Sources */, D389362915A6D19800A3A3AA /* CPAnimationStep.m in Sources */, - D3D14E7815A70EE30074A527 /* UIChatRoomHeader.m in Sources */, D3128FE215AABC7E00A2147A /* ContactDetailsViewController.m in Sources */, D37C639615AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */, D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, From 6056c0504c3eacd8092fa9ae15b24ae5fde7aa06 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 17 Jul 2012 20:21:29 +0200 Subject: [PATCH 052/397] Fullscreen application --- Classes/LinphoneApp.xib | 13 +++++----- .../LinphoneUI/UICompositeViewController.m | 13 +++++----- .../LinphoneUI/UICompositeViewController.xib | 21 ++++++++++------ Classes/PhoneMainView.m | 4 +++- Classes/PhoneMainView.xib | 24 ++++++++----------- 5 files changed, 41 insertions(+), 34 deletions(-) diff --git a/Classes/LinphoneApp.xib b/Classes/LinphoneApp.xib index ed352e92e..7ebc94d9d 100644 --- a/Classes/LinphoneApp.xib +++ b/Classes/LinphoneApp.xib @@ -2,10 +2,10 @@ 1296 - 11E53 + 11D50 2182 - 1138.47 - 569.00 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -37,15 +37,14 @@ - 1316 + 1325 {320, 480} - 1 - MSAxIDEAA + MCAxIDAuMDA1OTY4NTkwOTc5AA NO NO @@ -54,12 +53,14 @@ YES + NO PhoneMainView 1 1 + YES IBCocoaTouchFramework NO diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 7279cef15..5c9f2b4f2 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -198,12 +198,13 @@ UIView *innerView = contentViewController.view; CGRect contentFrame = contentView.frame; + CGRect viewFrame = [self.view frame]; // Resize StateBar CGRect stateBarFrame = stateBarView.frame; - int origin = 0; + int origin = IPHONE_STATUSBAR_HEIGHT; if(currentViewDescription->fullscreen) - origin = -IPHONE_STATUSBAR_HEIGHT; + origin = 0; if(stateBarViewController != nil && currentViewDescription->stateBarEnabled) { contentFrame.origin.y = origin + stateBarFrame.size.height; @@ -216,8 +217,8 @@ // Resize TabBar CGRect tabFrame = tabBarView.frame; if(tabBarViewController != nil && currentViewDescription->tabBarEnabled) { - tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - IPHONE_STATUSBAR_HEIGHT; - tabFrame.origin.x = [[UIScreen mainScreen] bounds].size.width; + tabFrame.origin.y = viewFrame.size.height; + tabFrame.origin.x = viewFrame.size.width; tabFrame.size.height = tabBarViewController.view.frame.size.height; tabFrame.size.width = tabBarViewController.view.frame.size.width; tabFrame.origin.y -= tabFrame.size.height; @@ -231,11 +232,11 @@ } } else { contentFrame.size.height = tabFrame.origin.y + tabFrame.size.height; - tabFrame.origin.y = [[UIScreen mainScreen] bounds].size.height - IPHONE_STATUSBAR_HEIGHT; + tabFrame.origin.y = viewFrame.size.height; } if(currentViewDescription->fullscreen) - contentFrame.size.height = [[UIScreen mainScreen] bounds].size.height + IPHONE_STATUSBAR_HEIGHT; + contentFrame.size.height = viewFrame.size.height - contentFrame.origin.y; // Resize innerView CGRect innerContentFrame = innerView.frame; diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib index 4fa0262ba..181faee01 100644 --- a/Classes/LinphoneUI/UICompositeViewController.xib +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -2,10 +2,10 @@ 1296 - 11E53 + 11D50 2182 - 1138.47 - 569.00 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -36,7 +36,7 @@ - 314 + 303 {{0, 23}, {320, 380}} @@ -51,7 +51,7 @@ - 274 + 303 {320, 23} @@ -66,11 +66,10 @@ - 280 + 303 {{0, 400}, {320, 60}} - _NS:9 YES @@ -217,6 +216,14 @@ ./Classes/UICompositeViewController.h + + UITransparentView + UIView + + IBProjectSource + ./Classes/UITransparentView.h + + 0 diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index e2077c354..0877032b5 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -89,7 +89,9 @@ static PhoneMainView* phoneMainViewInstance=nil; return; [super viewDidLoad]; - [[self view] addSubview: mainViewController.view]; + + [self.view addSubview: mainViewController.view]; + [mainViewController.view setFrame:[self.view frame]]; // Init descriptions [viewDescriptions setObject:[ChatRoomViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_ChatRoom]]; diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index db8ede993..70b289625 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -2,10 +2,10 @@ 784 - 11E53 + 11D50 2182 - 1138.47 - 569.00 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -37,16 +37,15 @@ - 292 + 274 YES - 292 - {320, 460} + 274 + {320, 480} - _NS:9 NO IBCocoaTouchFramework @@ -56,17 +55,14 @@ - {320, 460} + {320, 480} _NS:9 - 3 - MQA - - 2 - + 1 + MCAxIDAuMDA1OTY4NTkwOTc5AA IBCocoaTouchFramework @@ -276,7 +272,7 @@ 3 background.png - {16, 16} + {640, 523} 1181 From cd3a646f0be558afafb4756b484ae907d234dd02 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 18 Jul 2012 09:16:47 +0200 Subject: [PATCH 053/397] Fix fullscreen modification on incomingcall view --- Classes/IncomingCallViewController.xib | 117 ++++++++++++------------- Classes/PhoneMainView.m | 1 + 2 files changed, 59 insertions(+), 59 deletions(-) diff --git a/Classes/IncomingCallViewController.xib b/Classes/IncomingCallViewController.xib index 1c3f4556d..da9fe2a4f 100644 --- a/Classes/IncomingCallViewController.xib +++ b/Classes/IncomingCallViewController.xib @@ -40,7 +40,7 @@ 274 - {320, 460} + {{0, 20}, {320, 460}} @@ -57,7 +57,7 @@ - 288 + 290 @@ -4541,7 +4541,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - {320, 395} + {{0, 20}, {320, 395}} @@ -4551,11 +4551,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 264 + 266 - -2147483356 + -2147483374 {{0, 10}, {320, 67}} @@ -4574,7 +4574,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 278 {160, 77} @@ -4611,7 +4611,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 275 {{160, 0}, {160, 77}} @@ -4637,7 +4637,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - {{0, 383}, {320, 77}} + {{0, 403}, {320, 77}} @@ -4650,16 +4650,15 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework - {{0, 20}, {320, 460}} + {320, 480} - 1 - MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA + 3 + MAA NO - IBCocoaTouchFramework @@ -4673,14 +4672,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 3 - - - addressLabel - - - - 14 - avatarImage @@ -4689,6 +4680,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 20 + + + addressLabel + + + + 14 + onDeclineClick: @@ -4716,16 +4715,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - - 1 - - - - - - - - -1 @@ -4737,6 +4726,16 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + + 1 + + + + + + + + 4 @@ -4749,10 +4748,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE tabBar - 7 - + 5 + - acceptButton + mask 6 @@ -4760,6 +4759,12 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE declineButton + + 7 + + + acceptButton + 8 @@ -4772,6 +4777,24 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE + + 21 + + + addressBackgroundImage + + + 19 + + + avatarImage + + + 18 + + + avatarShadowImage + 9 @@ -4784,30 +4807,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE headerBackground - - 18 - - - avatarShadowImage - - - 19 - - - avatarImage - - - 5 - - - mask - - - 21 - - - addressBackgroundImage - 22 @@ -4840,7 +4839,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 22 + 24 @@ -4903,7 +4902,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 154} {640, 523} {320, 339} - {16, 16} + {640, 523} {640, 125} {320, 154} {320, 154} diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 693c2e8b2..21ece3a90 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -520,6 +520,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } } else { IncomingCallViewController *controller = [[IncomingCallViewController alloc] init]; + [controller setWantsFullScreenLayout:TRUE]; [controller setCall:call]; [controller setModalDelegate:self]; [[self view] addModalView:[controller view]]; From dbd4f01401e61fbb77a000df018bbca11e204147 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 18 Jul 2012 09:40:38 +0200 Subject: [PATCH 054/397] Fix animation stuff --- Classes/ContactDetailsViewController.m | 8 +++---- Classes/ContactsViewController.m | 8 +++---- Classes/InCallViewController.m | 8 +++---- Classes/LinphoneUI/UIMainBar.m | 27 +++++++++++++++------- Classes/LinphoneUI/UIModalViewController.m | 14 +++++++++++ Classes/PhoneMainView.m | 14 +++++++---- Classes/SettingsViewController.m | 8 +++---- 7 files changed, 59 insertions(+), 28 deletions(-) diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 43b5aa030..3ce5cf20d 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -209,7 +209,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [tableController viewWillDisappear:NO]; + [tableController viewWillDisappear:animated]; } [self disableEdit:FALSE]; self->contact = NULL; @@ -219,21 +219,21 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [tableController viewWillAppear:NO]; + [tableController viewWillAppear:animated]; } } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [tableController viewDidAppear:NO]; + [tableController viewDidAppear:animated]; } } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [tableController viewDidDisappear:NO]; + [tableController viewDidDisappear:animated]; } } diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index cefb5d147..fc00098f1 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -74,14 +74,14 @@ typedef enum _HistoryView { - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [tableController viewWillDisappear:NO]; + [tableController viewWillDisappear:animated]; } } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [tableController viewWillAppear:NO]; + [tableController viewWillAppear:animated]; } [self changeView:History_All]; @@ -90,14 +90,14 @@ typedef enum _HistoryView { - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [tableController viewDidAppear:NO]; + [tableController viewDidAppear:animated]; } } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [tableController viewDidDisappear:NO]; + [tableController viewDidDisappear:animated]; } } diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index bf72436ca..e6c0f4080 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -113,7 +113,7 @@ const NSInteger SECURE_BUTTON_TAG=5; hideControlsTimer = nil; } if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [callTableController viewWillDisappear:NO]; + [callTableController viewWillDisappear:animated]; } @@ -126,7 +126,7 @@ const NSInteger SECURE_BUTTON_TAG=5; - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [callTableController viewWillAppear:NO]; + [callTableController viewWillAppear:animated]; } // Set observer @@ -141,7 +141,7 @@ const NSInteger SECURE_BUTTON_TAG=5; [self callUpdate:call state:state]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [callTableController viewDidAppear:NO]; + [callTableController viewDidAppear:animated]; } } @@ -153,7 +153,7 @@ const NSInteger SECURE_BUTTON_TAG=5; device.proximityMonitoringEnabled = NO; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [callTableController viewDidDisappear:NO]; + [callTableController viewDidDisappear:animated]; } } diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index a5c9eff9f..49b24542b 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -73,10 +73,6 @@ selector:@selector(textReceived:) name:@"LinphoneTextReceived" object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(applicationWillResignActive:) - name:UIApplicationWillResignActiveNotification - object:nil]; [self update]; } @@ -92,18 +88,33 @@ [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LinphoneTextReceived" object:nil]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(applicationWillEnterForeground:) + name:UIApplicationWillEnterForegroundNotification + object:nil]; +} + +- (void)viewDidUnload { + [super viewDidUnload]; + [[NSNotificationCenter defaultCenter] removeObserver:self - name:UIApplicationWillResignActiveNotification + name:UIApplicationWillEnterForegroundNotification object:nil]; } #pragma mark - Event Functions -- (void)applicationWillResignActive:(NSNotification*)notif { - // Refresh notifications - [historyNotificationView setHidden:TRUE]; +- (void)applicationWillEnterForeground:(NSNotification*)notif { + // Force the animations + [[self.view layer] removeAllAnimations]; [chatNotificationView setHidden:TRUE]; + [historyNotificationView setHidden:TRUE]; [self update]; } diff --git a/Classes/LinphoneUI/UIModalViewController.m b/Classes/LinphoneUI/UIModalViewController.m index e2c888f13..dfda1b240 100644 --- a/Classes/LinphoneUI/UIModalViewController.m +++ b/Classes/LinphoneUI/UIModalViewController.m @@ -49,11 +49,24 @@ return self; } +- (void)hideView { + if([self.view superview] !=nil) { + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [self viewWillDisappear:NO]; + } + [self.view removeFromSuperview]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [self viewDidDisappear:NO]; + } + } +} + - (void)dismiss:(id)value { if(modalDelegate != nil) [modalDelegate modalViewDismiss:self value:value]; if(!dismissed) { + [self hideView]; dismissed = true; [self autorelease]; } @@ -64,6 +77,7 @@ [modalDelegate modalViewDismiss:self value:nil]; if(!dismissed) { + [self hideView]; dismissed = true; [self autorelease]; } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 21ece3a90..863da3dd8 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -112,7 +112,7 @@ static PhoneMainView* phoneMainViewInstance=nil; [super viewWillAppear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [mainViewController viewWillAppear:NO]; + [mainViewController viewWillAppear:animated]; } // Set observers @@ -138,7 +138,7 @@ static PhoneMainView* phoneMainViewInstance=nil; [super viewWillDisappear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [mainViewController viewWillDisappear:NO]; + [mainViewController viewWillDisappear:animated]; } // Remove observers @@ -159,14 +159,14 @@ static PhoneMainView* phoneMainViewInstance=nil; - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [mainViewController viewDidAppear:NO]; + [mainViewController viewDidAppear:animated]; } } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [mainViewController viewDidDisappear:NO]; + [mainViewController viewDidDisappear:animated]; } } @@ -523,7 +523,13 @@ static PhoneMainView* phoneMainViewInstance=nil; [controller setWantsFullScreenLayout:TRUE]; [controller setCall:call]; [controller setModalDelegate:self]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [controller viewWillAppear:NO]; + } [[self view] addModalView:[controller view]]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [controller viewDidAppear:NO]; + } } } diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index f79eb785e..352ee8aee 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -76,28 +76,28 @@ - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewWillDisappear:NO]; + [settingsController viewWillDisappear:animated]; } } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewWillAppear:NO]; + [settingsController viewWillAppear:animated]; } } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewDidAppear:NO]; + [settingsController viewDidAppear:animated]; } } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewDidDisappear:NO]; + [settingsController viewDidDisappear:animated]; } } From c9558e8f82485a9494f3de39759ba9fa81e9925f Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 18 Jul 2012 11:35:37 +0200 Subject: [PATCH 055/397] Simplification of view changes Fix new discution in chat --- Classes/ChatRoomViewController.h | 4 + Classes/ChatRoomViewController.m | 69 ++++++++--- Classes/ChatRoomViewController.xib | 39 +++++- Classes/ChatTableViewController.m | 5 +- Classes/ChatViewController.m | 25 ++-- Classes/ContactDetailsLabelViewController.xib | 30 ++--- Classes/ContactDetailsTableViewController.m | 20 ++- Classes/ContactDetailsViewController.m | 40 +++--- Classes/ContactDetailsViewController.xib | 27 +++- Classes/ContactsTableViewController.h | 2 - Classes/ContactsTableViewController.m | 11 +- Classes/ContactsViewController.h | 25 +++- Classes/ContactsViewController.m | 86 ++++++++++--- Classes/ContactsViewController.xib | 91 +++++++++++++- Classes/DialerViewController.m | 28 +++-- Classes/FirstLoginViewController.m | 25 ++-- Classes/HistoryDetailsViewController.m | 33 ++--- Classes/HistoryTableViewController.m | 4 +- Classes/HistoryViewController.m | 22 ++-- Classes/InCallViewController.m | 24 ++-- Classes/LinphoneAppDelegate.m | 8 +- Classes/LinphoneUI/UICallBar.m | 4 +- Classes/LinphoneUI/UIChatCell.m | 2 +- Classes/LinphoneUI/UIChatRoomCell.m | 2 +- .../LinphoneUI/UICompositeViewController.h | 14 ++- .../LinphoneUI/UICompositeViewController.m | 95 ++++++++------ .../LinphoneUI/UICompositeViewController.xib | 11 +- Classes/LinphoneUI/UIHistoryCell.m | 2 +- Classes/LinphoneUI/UIMainBar.m | 35 +++--- Classes/Model/ChatModel.m | 4 +- Classes/PhoneMainView.h | 33 ++--- Classes/PhoneMainView.m | 116 ++++++++---------- Classes/PhoneMainView.xib | 6 +- Classes/SettingsViewController.m | 22 ++-- Classes/Utils/FastAddressBook.h | 1 + Classes/Utils/FastAddressBook.m | 12 +- Classes/WizardViewController.m | 24 ++-- Resources/contacts_back_default.png | Bin 0 -> 2800 bytes Resources/contacts_back_over.png | Bin 0 -> 2521 bytes linphone.xcodeproj/project.pbxproj | 12 ++ 40 files changed, 656 insertions(+), 357 deletions(-) create mode 100644 Resources/contacts_back_default.png create mode 100644 Resources/contacts_back_over.png diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h index d716f582e..9d63ea797 100644 --- a/Classes/ChatRoomViewController.h +++ b/Classes/ChatRoomViewController.h @@ -35,6 +35,8 @@ LinphoneChatRoom *chatRoom; UILabel *addressLabel; UIImageView *avatarImage; + UIView *headerView; + UIView *footerView; } @@ -44,6 +46,8 @@ @property (nonatomic, retain) IBOutlet UIButton* sendButton; @property (nonatomic, retain) IBOutlet UILabel *addressLabel; @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; +@property (nonatomic, retain) IBOutlet UIView *headerView; +@property (nonatomic, retain) IBOutlet UIView *footerView; @property (nonatomic, copy) NSString *remoteAddress; - (IBAction)onBackClick:(id)event; diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index ade4c61e6..86d8c915c 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -31,6 +31,8 @@ @synthesize remoteAddress; @synthesize addressLabel; @synthesize avatarImage; +@synthesize headerView; +@synthesize footerView; #pragma mark - Lifecycle Functions @@ -51,21 +53,27 @@ [remoteAddress release]; [addressLabel release]; [avatarImage release]; + [headerView release]; + [footerView release]; [super dealloc]; } #pragma mark - UICompositeViewDelegate Functions -+ (UICompositeViewDescription*) compositeViewDescription { - UICompositeViewDescription *description = [UICompositeViewDescription alloc]; - description->content = @"ChatRoomViewController"; - description->tabBar = nil; - description->tabBarEnabled = false; - description->stateBar = nil; - description->stateBarEnabled = false; - description->fullscreen = false; - return description; +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"ChatRoom" + content:@"ChatRoomViewController" + stateBar:nil + stateBarEnabled:false + tabBar:nil + tabBarEnabled:false + fullscreen:false]; + } + return compositeDescription; } @@ -131,7 +139,10 @@ } remoteAddress = [aRemoteAddress copy]; [tableController setRemoteAddress: remoteAddress]; - + [self update]; +} + +- (void)update { if(remoteAddress == NULL) { [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat room header: null contact"]; return; @@ -140,7 +151,7 @@ NSString *displayName = nil; UIImage *image = nil; NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:remoteAddress]; - ABRecordRef acontact =[[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; + ABRecordRef acontact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; if(acontact != nil) { displayName = [FastAddressBook getContactDisplayName:acontact]; image = [FastAddressBook getContactImage:acontact thumbnail:true]; @@ -220,7 +231,7 @@ #pragma mark - Action Functions - (IBAction)onBackClick:(id)event { - [[PhoneMainView instance] popView]; + [[PhoneMainView instance] popCurrentView]; } - (IBAction)onEditClick:(id)event { @@ -251,15 +262,19 @@ [UIView setAnimationDuration:duration]; [UIView setAnimationCurve:curve]; [UIView setAnimationBeginsFromCurrentState:TRUE]; + + // Move view CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGRect frame = [[self view] frame]; - /* - CGPoint pos = {0, 0}; - CGPoint gPos = [[self view] convertPoint:pos toView:nil]; - frame.size.height = endFrame.origin.y - gPos.y; - */ frame.origin.y += endFrame.origin.y - beginFrame.origin.y; [[self view] setFrame:frame]; + + // Resize table view + CGRect tableFrame = [tableController.view frame]; + tableFrame.origin.y = [headerView frame].origin.y + [headerView frame].size.height; + tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y; + [tableController.view setFrame:tableFrame]; + [UIView commitAnimations]; } @@ -271,13 +286,27 @@ [UIView setAnimationDuration:duration]; [UIView setAnimationCurve:curve]; [UIView setAnimationBeginsFromCurrentState:TRUE]; + + // Move view CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGRect frame = [[self view] frame]; - /*CGPoint pos = {0, 0}; - CGPoint gPos = [[self view] convertPoint:pos toView:nil]; - frame.size.height = endFrame.origin.y - gPos.y;*/ frame.origin.y += endFrame.origin.y - beginFrame.origin.y; [[self view] setFrame:frame]; + + // Resize table view + CGPoint pos = {0, 0}; + CGPoint gPos = [[self.view superview] convertPoint:pos toView:self.view]; + CGRect tableFrame = [tableController.view frame]; + tableFrame.origin.y = gPos.y; + tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y; + [tableController.view setFrame:tableFrame]; + + // Scroll + int lastSection = [tableController.tableView numberOfSections] -1; + int lastRow = [tableController.tableView numberOfRowsInSection:lastSection] - 1; + [tableController.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:lastRow inSection:lastSection] + atScrollPosition:UITableViewScrollPositionBottom + animated:TRUE]; [UIView commitAnimations]; } diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib index 2d19178d5..cbb6a5959 100644 --- a/Classes/ChatRoomViewController.xib +++ b/Classes/ChatRoomViewController.xib @@ -131,7 +131,7 @@ - 292 + 290 @@ -234,10 +234,11 @@ - 292 + 257 {{250, 0}, {70, 59}} + _NS:9 NO @@ -267,7 +268,7 @@ - 292 + 260 {250, 59} @@ -282,7 +283,7 @@ - 292 + 260 {{10, 10}, {230, 39}} @@ -405,6 +406,22 @@ 44 + + + headerView + + + + 45 + + + + footerView + + + + 46 + dataSource @@ -542,7 +559,7 @@ - footer + footerView 15 @@ -629,7 +646,7 @@ - 44 + 46 @@ -672,6 +689,8 @@ UILabel UIImageView UIToggleButton + UIView + UIView UITextField UIButton ChatRoomTableViewController @@ -689,6 +708,14 @@ editButton UIToggleButton + + footerView + UIView + + + headerView + UIView + messageField UITextField diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index 3e5431f17..91b6287bc 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -91,7 +91,7 @@ ChatModel *chat = [data objectAtIndex:[indexPath row]]; // Go to ChatRoom view - ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ChatRoom push:TRUE], ChatRoomViewController); + ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription] push:TRUE], ChatRoomViewController); if(controller != nil) { [controller setRemoteAddress:[chat remoteContact]]; } @@ -101,10 +101,11 @@ if(editingStyle == UITableViewCellEditingStyleDelete) { [tableView beginUpdates]; ChatModel *chat = [data objectAtIndex:[indexPath row]]; - [data removeObjectAtIndex:[indexPath row]]; [ChatModel removeConversation:[chat remoteContact]]; + [data removeObjectAtIndex:[indexPath row]]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; [tableView endUpdates]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; } } diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index d35917c48..ff63f4884 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -82,22 +82,27 @@ #pragma mark - UICompositeViewDelegate Functions -+ (UICompositeViewDescription*) compositeViewDescription { - UICompositeViewDescription *description = [UICompositeViewDescription alloc]; - description->content = @"ChatViewController"; - description->tabBar = @"UIMainBar"; - description->tabBarEnabled = true; - description->stateBar = nil; - description->stateBarEnabled = false; - description->fullscreen = false; - return description; +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"Chat" + content:@"ChatViewController" + stateBar:nil + stateBarEnabled:false + tabBar: @"UIMainBar" + tabBarEnabled:true + fullscreen:false]; + } + return compositeDescription; } #pragma mark - Action Functions - (IBAction)onAddClick:(id)event { - [[PhoneMainView instance] changeView:PhoneView_ChatRoom push:TRUE]; + [ContactSelection setSelectionMode:ContactSelectionModeMessage]; + [[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE]; } - (IBAction)onEditClick:(id)event { diff --git a/Classes/ContactDetailsLabelViewController.xib b/Classes/ContactDetailsLabelViewController.xib index c3e832ab4..324f0e974 100644 --- a/Classes/ContactDetailsLabelViewController.xib +++ b/Classes/ContactDetailsLabelViewController.xib @@ -59,6 +59,21 @@ 290 + + + 292 + {320, 58} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + contact_bar_background.png + + 292 @@ -97,21 +112,6 @@ 16 - - - 292 - {{160, 0}, {160, 58}} - - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - contact_bar_background.png - - {320, 58} diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 65282e6e9..7b3e36aa1 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -447,17 +447,25 @@ int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, index); CFStringRef valueRef = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); - dest = [NSString stringWithString:(NSString*) valueRef]; + dest = [FastAddressBook normalizeSipURI:[NSString stringWithString:(NSString*) valueRef]]; CFRelease(lDict); CFRelease(lMap); } if(dest != nil) { NSString *displayName = [FastAddressBook getContactDisplayName:contact]; - - // Go to dialer view - DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Dialer], DialerViewController); - if(controller != nil) { - [controller call:dest displayName:displayName]; + if([ContactSelection getSelectionMode] != ContactSelectionModeMessage) { + // Go to dialer view + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]], DialerViewController); + if(controller != nil) { + [controller call:dest displayName:displayName]; + } + } else { + // Go to Chat room view + [[PhoneMainView instance] popToView:[ChatViewController compositeViewDescription]]; + ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription] push:TRUE], ChatRoomViewController); + if(controller != nil) { + [controller setRemoteAddress:dest]; + } } } } else { diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 3ce5cf20d..ca7d9f787 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -67,7 +67,7 @@ ABAddressBookRevert(addressBook); contact = ABAddressBookGetPersonWithRecordID(addressBook, recordID); if(contact == NULL) { - [[PhoneMainView instance] popView]; + [[PhoneMainView instance] popCurrentView]; return; } [tableController setContact:contact]; @@ -82,7 +82,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)removeContact { if(contact == NULL) { - [[PhoneMainView instance] popView]; + [[PhoneMainView instance] popCurrentView]; return; } @@ -112,7 +112,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)saveData { if(contact == NULL) { - [[PhoneMainView instance] popView]; + [[PhoneMainView instance] popCurrentView]; return; } @@ -218,6 +218,12 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; + if([ContactSelection getSelectionMode] == ContactSelectionModeEdit || + [ContactSelection getSelectionMode] == ContactSelectionModeNone) { + [editButton setHidden:FALSE]; + } else { + [editButton setHidden:TRUE]; + } if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [tableController viewWillAppear:animated]; } @@ -240,18 +246,24 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf #pragma mark - UICompositeViewDelegate Functions -+ (UICompositeViewDescription*) compositeViewDescription { - UICompositeViewDescription *description = [UICompositeViewDescription alloc]; - description->content = @"ContactDetailsViewController"; - description->tabBar = @"UIMainBar"; - description->tabBarEnabled = true; - description->stateBar = nil; - description->stateBarEnabled = false; - description->fullscreen = false; - return description; +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"ContactDetails" + content:@"ContactDetailsViewController" + stateBar:nil + stateBarEnabled:false + tabBar:@"UIMainBar" + tabBarEnabled:true + fullscreen:false]; + } + return compositeDescription; } +#pragma mark - + - (void)enableEdit:(BOOL)animated { if(![tableController isEditing]) { [tableController setEditing:TRUE animated:animated]; @@ -278,7 +290,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf } - (IBAction)onBackClick:(id)event { - [[PhoneMainView instance] popView]; + [[PhoneMainView instance] popCurrentView]; } - (IBAction)onEditClick:(id)event { @@ -293,7 +305,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)onRemove:(id)event { [self disableEdit:FALSE]; [self removeContact]; - [[PhoneMainView instance] popView]; + [[PhoneMainView instance] popCurrentView]; } @end diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib index aa51f1437..42e2901cc 100644 --- a/Classes/ContactDetailsViewController.xib +++ b/Classes/ContactDetailsViewController.xib @@ -11,6 +11,7 @@ 1181 + IBUIImageView IBUIButton IBUITableView IBUIView @@ -41,6 +42,20 @@ 290 + + + 292 + {320, 58} + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + contact_bar_background.png + + 292 @@ -160,7 +175,6 @@ {{0, 59}, {320, 401}} - _NS:9 10 @@ -385,6 +399,7 @@ AAgACAAIAAEAAQABAAE + toolBar @@ -420,6 +435,12 @@ AAgACAAIAAEAAQABAAE cancelButton + + 52 + + + barBackground + @@ -435,6 +456,7 @@ AAgACAAIAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -445,7 +467,7 @@ AAgACAAIAAEAAQABAAE - 51 + 52 @@ -537,6 +559,7 @@ AAgACAAIAAEAAQABAAE {320, 117} {320, 117} + {5, 117} {320, 117} {320, 117} {320, 117} diff --git a/Classes/ContactsTableViewController.h b/Classes/ContactsTableViewController.h index 5ab544424..7ae506cb8 100644 --- a/Classes/ContactsTableViewController.h +++ b/Classes/ContactsTableViewController.h @@ -27,10 +27,8 @@ ABAddressBookRef addressBook; BOOL sipFilter; - NSString *tempAddress; } -@property (nonatomic, retain) NSString* tempAddress; @property (nonatomic, assign) BOOL sipFilter; @end diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 76b9b9c4c..bb32853fd 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -28,8 +28,6 @@ @implementation ContactsTableViewController @synthesize sipFilter; -@synthesize tempAddress; - #pragma mark - Lifecycle Functions @@ -60,7 +58,6 @@ ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, self); CFRelease(addressBook); [addressBookMap removeAllObjects]; - [tempAddress release]; [super dealloc]; } @@ -152,7 +149,6 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - [self setTempAddress:nil]; } @@ -194,13 +190,12 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf ABRecordRef lPerson = [subDic objectForKey: [subDic keyAtIndex:[indexPath row]]]; // Go to Contact details view - ContactDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ContactDetails push:TRUE], ContactDetailsViewController); + ContactDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactDetailsViewController compositeViewDescription] push:TRUE], ContactDetailsViewController); if(controller != nil) { - if(tempAddress == nil) { + if([ContactSelection getAddAddress] == nil) { [controller setContact:lPerson]; } else { - [controller editContact:lPerson address:tempAddress]; - [self setTempAddress:nil]; + [controller editContact:lPerson address:[ContactSelection getAddAddress]]; } } } diff --git a/Classes/ContactsViewController.h b/Classes/ContactsViewController.h index 3c7a81d01..e818ccc3f 100644 --- a/Classes/ContactsViewController.h +++ b/Classes/ContactsViewController.h @@ -20,26 +20,45 @@ #import #import "UICompositeViewController.h" - #import "ContactsTableViewController.h" +typedef enum _ContactSelectionMode { + ContactSelectionModeNone, + ContactSelectionModeEdit, + ContactSelectionModePhone, + ContactSelectionModeMessage +} ContactSelectionMode; + +@interface ContactSelection : NSObject { +} + ++ (void)setSelectionMode:(ContactSelectionMode)selectionMode; ++ (ContactSelectionMode)getSelectionMode; ++ (void)setAddAddress:(NSString*)address; ++ (NSString*)getAddAddress; + +@end + @interface ContactsViewController : UIViewController { ContactsTableViewController *tableController; UITableView *tableView; UIButton *allButton; UIButton *linphoneButton; + UIButton *backButton; + UIButton *addButton; } @property (nonatomic, retain) IBOutlet ContactsTableViewController* tableController; @property (nonatomic, retain) IBOutlet UITableView *tableView; @property (nonatomic, retain) IBOutlet UIButton* allButton; @property (nonatomic, retain) IBOutlet UIButton* linphoneButton; +@property (nonatomic, retain) IBOutlet UIButton *backButton; +@property (nonatomic, retain) IBOutlet UIButton *addButton; - (IBAction)onAllClick:(id)event; - (IBAction)onLinphoneClick:(id)event; - (IBAction)onAddContactClick:(id)event; - -- (void)setAddress:(NSString*)address; +- (IBAction)onBackClick:(id)event; @end diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index fc00098f1..4d7778927 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -23,6 +23,35 @@ #import +@implementation ContactSelection + +static ContactSelectionMode sSelectionMode = ContactSelectionModeNone; +static NSString* sAddAddress = nil; + ++ (void)setSelectionMode:(ContactSelectionMode)selectionMode { + sSelectionMode = selectionMode; +} + ++ (ContactSelectionMode)getSelectionMode { + return sSelectionMode; +} + ++ (void)setAddAddress:(NSString*)address { + if(sAddAddress != nil) { + [sAddAddress release]; + sAddAddress= nil; + } + if(address != nil) { + sAddAddress = [address retain]; + } +} + ++ (NSString*)getAddAddress { + return sAddAddress; +} + +@end + @implementation ContactsViewController @synthesize tableController; @@ -30,6 +59,8 @@ @synthesize allButton; @synthesize linphoneButton; +@synthesize backButton; +@synthesize addButton; typedef enum _HistoryView { History_All, @@ -50,22 +81,27 @@ typedef enum _HistoryView { [allButton release]; [linphoneButton release]; + [backButton release]; + [addButton release]; [super dealloc]; } - #pragma mark - UICompositeViewDelegate Functions -+ (UICompositeViewDescription*) compositeViewDescription { - UICompositeViewDescription *description = [UICompositeViewDescription alloc]; - description->content = @"ContactsViewController"; - description->tabBar = @"UIMainBar"; - description->tabBarEnabled = true; - description->stateBar = nil; - description->stateBarEnabled = false; - description->fullscreen = false; - return description; +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"Contacts" + content:@"ContactsViewController" + stateBar:nil + stateBarEnabled:false + tabBar:@"UIMainBar" + tabBarEnabled:true + fullscreen:false]; + } + return compositeDescription; } @@ -85,6 +121,7 @@ typedef enum _HistoryView { } [self changeView:History_All]; + [self update]; } - (void)viewDidAppear:(BOOL)animated { @@ -116,10 +153,6 @@ typedef enum _HistoryView { #pragma mark - -- (void)setAddress:(NSString*)address { - [tableController setTempAddress:address]; -} - - (void)changeView: (HistoryView) view { if(view == History_All) { [tableController setSipFilter:FALSE]; @@ -136,6 +169,20 @@ typedef enum _HistoryView { } } +- (void)update { + switch ([ContactSelection getSelectionMode]) { + case ContactSelectionModePhone: + case ContactSelectionModeMessage: + [addButton setHidden:TRUE]; + [backButton setHidden:FALSE]; + break; + default: + [addButton setHidden:FALSE]; + [backButton setHidden:TRUE]; + break; + } +} + #pragma mark - Action Functions @@ -149,15 +196,18 @@ typedef enum _HistoryView { - (IBAction)onAddContactClick:(id)event { // Go to Contact details view - ContactDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ContactDetails push:TRUE], ContactDetailsViewController); + ContactDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactDetailsViewController compositeViewDescription] push:TRUE], ContactDetailsViewController); if(controller != nil) { - if([tableController tempAddress] == nil) { + if([ContactSelection getAddAddress] == nil) { [controller newContact]; } else { - [controller newContact:[tableController tempAddress]]; - [tableController setTempAddress:nil]; + [controller newContact:[ContactSelection getAddAddress]]; } } } +- (IBAction)onBackClick:(id)event { + [[PhoneMainView instance] popCurrentView]; +} + @end diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index 0a3edf504..91add1d9e 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -44,7 +44,7 @@ 292 - {106, 58} + {{108, 0}, {106, 58}} @@ -83,7 +83,7 @@ 292 - {{106, 0}, {106, 58}} + {{214, 0}, {106, 58}} @@ -112,10 +112,10 @@ 292 - {{212, 0}, {108, 58}} + {108, 58} - + _NS:9 NO @@ -137,6 +137,34 @@ + + + -2147483356 + {108, 58} + + + + _NS:9 + NO + + Add contact + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + contacts_back_over.png + + + NSImage + contacts_back_default.png + + + + {320, 58} @@ -246,6 +274,22 @@ 84 + + + backButton + + + + 90 + + + + addButton + + + + 91 + onAllClick: @@ -297,6 +341,15 @@ 80 + + + onBackClick: + + + 7 + + 89 + @@ -330,9 +383,10 @@ 3 + + - toolBar @@ -368,6 +422,12 @@ tableController + + 87 + + + backButton + @@ -386,12 +446,14 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin ContactsTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + - 86 + 91 @@ -409,6 +471,7 @@ id id + id id @@ -420,22 +483,36 @@ onAllClick: id + + onBackClick: + id + onLinphoneClick: id + UIButton UIButton + UIButton UIButton ContactsTableViewController UITableView + + addButton + UIButton + allButton UIButton + + backButton + UIButton + linphoneButton UIButton @@ -469,6 +546,8 @@ {213, 117} {213, 117} {213, 117} + {213, 117} + {213, 117} {213, 117} {213, 117} diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 64fc25db7..96b3e64c8 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -96,15 +96,19 @@ #pragma mark - UICompositeViewDelegate Functions +static UICompositeViewDescription *compositeDescription = nil; + + (UICompositeViewDescription *)compositeViewDescription { - UICompositeViewDescription *description = [UICompositeViewDescription alloc]; - description->content = @"DialerViewController"; - description->tabBar = @"UIMainBar"; - description->tabBarEnabled = true; - description->stateBar = @"UIStateBar"; - description->stateBarEnabled = true; - description->fullscreen = false; - return description; + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"Dialer" + content:@"DialerViewController" + stateBar:@"UIStateBar" + stateBarEnabled:true + tabBar:@"UIMainBar" + tabBarEnabled:true + fullscreen:false]; + } + return compositeDescription; } @@ -223,14 +227,16 @@ #pragma mark - Action Functions - (IBAction)onAddContactClick: (id) event { - ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Contacts push:TRUE], ContactsViewController); + [ContactSelection setSelectionMode:ContactSelectionModeEdit]; + [ContactSelection setAddAddress:[addressField text]]; + ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE], ContactsViewController); if(controller != nil) { - [controller setAddress:[addressField text]]; + } } - (IBAction)onBackClick: (id) event { - [[PhoneMainView instance] changeView:PhoneView_InCall]; + [[PhoneMainView instance] changeCurrentView:[InCallViewController compositeViewDescription]]; } - (IBAction)onAddressChange: (id)sender { diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index 554c5fdd8..2e88af89f 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -52,17 +52,20 @@ #pragma mark - UICompositeViewDelegate Functions -+ (UICompositeViewDescription *)compositeViewDescription { - UICompositeViewDescription *description = [UICompositeViewDescription alloc]; - description->content = @"FirstLoginViewController"; - description->tabBar = nil; - description->tabBarEnabled = false; - description->stateBar = nil; - description->stateBarEnabled = false; - description->fullscreen = false; - return description; -} +static UICompositeViewDescription *compositeDescription = nil; ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"FirstLogin" + content:@"FirstLoginViewController" + stateBar:nil + stateBarEnabled:false + tabBar:nil + tabBarEnabled:false + fullscreen:false]; + } + return compositeDescription; +} #pragma mark - ViewController Functions @@ -121,7 +124,7 @@ { [[LinphoneManager instance].settingsStore setBool:false forKey:@"enable_first_login_view_preference"]; [self.waitView setHidden:true]; - [[PhoneMainView instance] changeView:PhoneView_Dialer]; + [[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]]; break; } case LinphoneRegistrationNone: diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index 5822e5cc7..9ceee4f95 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -58,15 +58,19 @@ #pragma mark - UICompositeViewDelegate Functions -+ (UICompositeViewDescription*) compositeViewDescription { - UICompositeViewDescription *description = [UICompositeViewDescription alloc]; - description->content = @"HistoryDetailsViewController"; - description->tabBar = @"UIMainBar"; - description->tabBarEnabled = true; - description->stateBar = nil; - description->stateBarEnabled = false; - description->fullscreen = false; - return description; +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"HistoryDetails" + content:@"HistoryDetailsViewController" + stateBar:nil + stateBarEnabled:false + tabBar:@"UIMainBar" + tabBarEnabled:true + fullscreen:false]; + } + return compositeDescription; } @@ -245,12 +249,12 @@ #pragma mark - Action Functions - (IBAction)onBackClick:(id)event { - [[PhoneMainView instance] popView]; + [[PhoneMainView instance] popCurrentView]; } - (IBAction)onContactClick:(id)event { if(contact) { - ContactDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ContactDetails push:TRUE], ContactDetailsViewController); + ContactDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactDetailsViewController compositeViewDescription] push:TRUE], ContactDetailsViewController); if(controller != nil) { [controller setContact:contact]; } @@ -258,9 +262,10 @@ } - (IBAction)onAddContactClick:(id)event { - ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Contacts push:TRUE], ContactsViewController); + [ContactSelection setSelectionMode:ContactSelectionModeEdit]; + [ContactSelection setAddAddress:[[addressButton titleLabel] text]]; + ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE], ContactsViewController); if(controller != nil) { - [controller setAddress:[[addressButton titleLabel] text]]; } } @@ -287,7 +292,7 @@ } - DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Dialer], DialerViewController); + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]], DialerViewController); if(controller != nil) { if(displayName != nil) { [controller call:[NSString stringWithUTF8String:lAddress] displayName:displayName]; diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index eb4dea67b..28d85ccc2 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -159,7 +159,7 @@ if(address != nil) { // Go to dialer view - DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Dialer], DialerViewController); + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]], DialerViewController); if(controller != nil) { [controller call:address displayName:displayName]; } @@ -170,8 +170,8 @@ if(editingStyle == UITableViewCellEditingStyleDelete) { [tableView beginUpdates]; LinphoneCallLog *callLog = [[callLogs objectAtIndex:[indexPath row]] pointerValue]; - [callLogs removeObjectAtIndex:[indexPath row]]; linphone_core_remove_call_log([LinphoneManager getLc], callLog); + [callLogs removeObjectAtIndex:[indexPath row]]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; [tableView endUpdates]; } diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index f1491fc4b..0cdae5baf 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -55,15 +55,19 @@ typedef enum _HistoryView { #pragma mark - UICompositeViewDelegate Functions -+ (UICompositeViewDescription*) compositeViewDescription { - UICompositeViewDescription *description = [UICompositeViewDescription alloc]; - description->content = @"HistoryViewController"; - description->tabBar = @"UIMainBar"; - description->tabBarEnabled = true; - description->stateBar = nil; - description->stateBarEnabled = false; - description->fullscreen = false; - return description; +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"History" + content:@"HistoryViewController" + stateBar:nil + stateBarEnabled:false + tabBar:@"UIMainBar" + tabBarEnabled:true + fullscreen:false]; + } + return compositeDescription; } diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index e6c0f4080..13cb6895a 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -81,15 +81,19 @@ const NSInteger SECURE_BUTTON_TAG=5; #pragma mark - UICompositeViewDelegate Functions -+ (UICompositeViewDescription*) compositeViewDescription { - UICompositeViewDescription *description = [UICompositeViewDescription alloc]; - description->content = @"InCallViewController"; - description->tabBar = @"UICallBar"; - description->tabBarEnabled = true; - description->stateBar = @"UIStateBar"; - description->stateBarEnabled = true; - description->fullscreen = false; - return description; +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"InCall" + content:@"InCallViewController" + stateBar:@"UIStateBar" + stateBarEnabled:true + tabBar:@"UICallBar" + tabBarEnabled:true + fullscreen:false]; + } + return compositeDescription; } @@ -280,7 +284,7 @@ const NSInteger SECURE_BUTTON_TAG=5; [videoCameraSwitch setAlpha:0.0]; [UIView commitAnimations]; - if([[PhoneMainView instance] currentView] == PhoneView_InCall && videoShown) + if([[[PhoneMainView instance] currentView] equal:[InCallViewController compositeViewDescription]] && videoShown) [[PhoneMainView instance] showTabBar: false]; if (hideControlsTimer) { diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index e0146a9de..a14d4c1da 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -143,14 +143,14 @@ int __aeabi_idiv(int a, int b) { - (void)setupUI { if ([[LinphoneManager instance].settingsStore boolForKey:@"enable_first_login_view_preference"] == true) { // Change to fist login view - [[PhoneMainView instance] changeView: PhoneView_FirstLogin]; + [[PhoneMainView instance] changeCurrentView: [FirstLoginViewController compositeViewDescription]]; } else { // Change to default view const MSList *list = linphone_core_get_proxy_config_list([LinphoneManager getLc]); if(list != NULL) { - [[PhoneMainView instance] changeView: PhoneView_Dialer]; + [[PhoneMainView instance] changeCurrentView: [DialerViewController compositeViewDescription]]; } else { - [[PhoneMainView instance] changeView: PhoneView_Wizard]; + [[PhoneMainView instance] changeCurrentView: [WizardViewController compositeViewDescription]]; } } @@ -220,7 +220,7 @@ int __aeabi_idiv(int a, int b) { } else if([notification.userInfo objectForKey:@"chat"] != nil) { NSString *remoteContact = (NSString*)[notification.userInfo objectForKey:@"chat"]; // Go to ChatRoom view - ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ChatRoom push:TRUE], ChatRoomViewController); + ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription] push:TRUE], ChatRoomViewController); if(controller != nil) { [controller setRemoteAddress:remoteContact]; } diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 5ced60b3d..06d1e4148 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -371,7 +371,7 @@ - (IBAction)onOptionsTransferClick:(id)sender { [self hideOptions]; // Go to dialer view - DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Dialer], DialerViewController); + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]], DialerViewController); if(controller != nil) { [controller setAddress:@""]; [controller setTransferMode:TRUE]; @@ -381,7 +381,7 @@ - (IBAction)onOptionsAddClick:(id)sender { [self hideOptions]; // Go to dialer view - DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_Dialer], DialerViewController); + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]], DialerViewController); if(controller != nil) { [controller setAddress:@""]; [controller setTransferMode:FALSE]; diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index 522aabd62..aadba1a95 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -148,7 +148,7 @@ - (IBAction)onDetailsClick: (id) event { // Go to Chat room view - ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_ChatRoom push:TRUE], ChatRoomViewController); + ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription] push:TRUE], ChatRoomViewController); if(controller !=nil) { [controller setRemoteAddress:[chat remoteContact]]; } diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index 4ce7739f2..ceb4ec040 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -69,7 +69,7 @@ static UIFont *CELL_FONT = nil; if(chat != nil) { [chat release]; } - chat = achat; + chat = [achat retain]; [self update]; } diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index 0a7c4b46a..ee472f99b 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -23,7 +23,7 @@ #import "LinphoneManager.h" @interface UICompositeViewDescription: NSObject{ -@public + NSString *name; NSString *content; NSString *stateBar; BOOL stateBarEnabled; @@ -31,8 +31,18 @@ BOOL tabBarEnabled; BOOL fullscreen; } + +@property (retain) NSString *name; +@property (retain) NSString *content; +@property (retain) NSString *stateBar; +@property (assign) BOOL stateBarEnabled; +@property (retain) NSString *tabBar; +@property (assign) BOOL tabBarEnabled; +@property (assign) BOOL fullscreen; + - (id)copy; -- (id)init:(NSString *)content stateBar:(NSString*)stateBar +- (BOOL)equal:(UICompositeViewDescription*) description; +- (id)init:(NSString *)name content:(NSString *)content stateBar:(NSString*)stateBar stateBarEnabled:(BOOL) stateBarEnabled tabBar:(NSString*)tabBar tabBarEnabled:(BOOL) tabBarEnabled diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 5875cc115..b12ad3052 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -21,32 +21,53 @@ @implementation UICompositeViewDescription +@synthesize name; +@synthesize content; +@synthesize stateBar; +@synthesize stateBarEnabled; +@synthesize tabBar; +@synthesize tabBarEnabled; +@synthesize fullscreen; + - (id)copy { UICompositeViewDescription *copy = [UICompositeViewDescription alloc]; - copy->content = self->content; - copy->stateBar = self->stateBar; - copy->stateBarEnabled = self->stateBarEnabled; - copy->tabBar = self->tabBar; - copy->tabBarEnabled = self->tabBarEnabled; - copy->fullscreen = self->fullscreen; + copy.content = self.content; + copy.stateBar = self.stateBar; + copy.stateBarEnabled = self.stateBarEnabled; + copy.tabBar = self.tabBar; + copy.tabBarEnabled = self.tabBarEnabled; + copy.fullscreen = self.fullscreen; return copy; } -- (id)init:(NSString *)acontent stateBar:(NSString*)astateBar +- (BOOL)equal:(UICompositeViewDescription*) description { + return [self.name compare:description.name] == NSOrderedSame; +} + +- (id)init:(NSString *)aname content:(NSString *)acontent stateBar:(NSString*)astateBar stateBarEnabled:(BOOL) astateBarEnabled tabBar:(NSString*)atabBar tabBarEnabled:(BOOL) atabBarEnabled fullscreen:(BOOL) afullscreen { - self->content = acontent; - self->stateBar = astateBar; - self->stateBarEnabled = astateBarEnabled; - self->tabBar = atabBar; - self->tabBarEnabled = atabBarEnabled; - self->fullscreen = afullscreen; + self.name = aname; + self.content = acontent; + self.stateBar = astateBar; + self.stateBarEnabled = astateBarEnabled; + self.tabBar = atabBar; + self.tabBarEnabled = atabBarEnabled; + self.fullscreen = afullscreen; return self; } +- (void)dealloc { + [name release]; + [content release]; + [stateBar release]; + [tabBar release]; + [super dealloc]; +} + @end @implementation UICompositeViewController @@ -181,28 +202,28 @@ // Animate only with a previous screen if(oldViewDescription != nil && viewTransition != nil) { [contentView.layer addAnimation:viewTransition forKey:@"Transition"]; - if((oldViewDescription->stateBarEnabled == true && currentViewDescription->stateBarEnabled == false) || - (oldViewDescription->stateBarEnabled == false && currentViewDescription->stateBarEnabled == true)) { + if((oldViewDescription.stateBarEnabled == true && currentViewDescription.stateBarEnabled == false) || + (oldViewDescription.stateBarEnabled == false && currentViewDescription.stateBarEnabled == true)) { [stateBarView.layer addAnimation:viewTransition forKey:@"Transition"]; } - if(oldViewDescription->tabBar != currentViewDescription->tabBar) { + if(oldViewDescription.tabBar != currentViewDescription.tabBar) { [tabBarView.layer addAnimation:viewTransition forKey:@"Transition"]; } } - if(oldViewDescription != nil && contentViewController != nil && oldViewDescription->content != currentViewDescription->content) { + if(oldViewDescription != nil && contentViewController != nil && oldViewDescription.content != currentViewDescription.content) { [UICompositeViewController removeSubView: contentViewController]; } - if(oldViewDescription != nil && tabBarViewController != nil && oldViewDescription->tabBar != currentViewDescription->tabBar) { + if(oldViewDescription != nil && tabBarViewController != nil && oldViewDescription.tabBar != currentViewDescription.tabBar) { [UICompositeViewController removeSubView: tabBarViewController]; } - if(oldViewDescription != nil && stateBarViewController != nil && oldViewDescription->stateBar != currentViewDescription->stateBar) { + if(oldViewDescription != nil && stateBarViewController != nil && oldViewDescription.stateBar != currentViewDescription.stateBar) { [UICompositeViewController removeSubView: stateBarViewController]; } - stateBarViewController = [self getCachedController:description->stateBar]; - contentViewController = [self getCachedController:description->content]; - tabBarViewController = [self getCachedController:description->tabBar]; + stateBarViewController = [self getCachedController:description.stateBar]; + contentViewController = [self getCachedController:description.content]; + tabBarViewController = [self getCachedController:description.tabBar]; } if(currentViewDescription == nil) { @@ -210,14 +231,14 @@ } if(tabBar != nil) { - currentViewDescription->tabBarEnabled = [tabBar boolValue]; + currentViewDescription.tabBarEnabled = [tabBar boolValue]; } if(fullscreen != nil) { - currentViewDescription->fullscreen = [fullscreen boolValue]; - [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription->fullscreen withAnimation:UIStatusBarAnimationSlide ]; + currentViewDescription.fullscreen = [fullscreen boolValue]; + [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription.fullscreen withAnimation:UIStatusBarAnimationSlide ]; } else { - [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription->fullscreen withAnimation:UIStatusBarAnimationNone]; + [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription.fullscreen withAnimation:UIStatusBarAnimationNone]; } // Start animation @@ -235,10 +256,10 @@ // Resize StateBar CGRect stateBarFrame = stateBarView.frame; int origin = IPHONE_STATUSBAR_HEIGHT; - if(currentViewDescription->fullscreen) + if(currentViewDescription.fullscreen) origin = 0; - if(stateBarViewController != nil && currentViewDescription->stateBarEnabled) { + if(stateBarViewController != nil && currentViewDescription.stateBarEnabled) { contentFrame.origin.y = origin + stateBarFrame.size.height; stateBarFrame.origin.y = origin; } else { @@ -248,7 +269,7 @@ // Resize TabBar CGRect tabFrame = tabBarView.frame; - if(tabBarViewController != nil && currentViewDescription->tabBarEnabled) { + if(tabBarViewController != nil && currentViewDescription.tabBarEnabled) { tabFrame.origin.y = viewFrame.size.height; tabFrame.origin.x = viewFrame.size.width; tabFrame.size.height = tabBarViewController.view.frame.size.height; @@ -263,17 +284,19 @@ } } } else { - contentFrame.size.height = tabFrame.origin.y + tabFrame.size.height; + contentFrame.size.height = viewFrame.size.height - contentFrame.origin.y; tabFrame.origin.y = viewFrame.size.height; } - if(currentViewDescription->fullscreen) + if(currentViewDescription.fullscreen) contentFrame.size.height = viewFrame.size.height - contentFrame.origin.y; // Resize innerView CGRect innerContentFrame = innerView.frame; - innerContentFrame.size = contentFrame.size; - + innerContentFrame.origin.x = 0; + innerContentFrame.origin.y = 0; + innerContentFrame.size.width = contentFrame.size.width; + innerContentFrame.size.height = contentFrame.size.height; // Set frames [contentView setFrame: contentFrame]; @@ -288,13 +311,13 @@ // Change view if(description != nil) { - if(oldViewDescription == nil || oldViewDescription->content != currentViewDescription->content) { + if(oldViewDescription == nil || oldViewDescription.content != currentViewDescription.content) { [UICompositeViewController addSubView: contentViewController view:contentView]; } - if(oldViewDescription == nil || oldViewDescription->tabBar != currentViewDescription->tabBar) { + if(oldViewDescription == nil || oldViewDescription.tabBar != currentViewDescription.tabBar) { [UICompositeViewController addSubView: tabBarViewController view:tabBarView]; } - if(oldViewDescription == nil || oldViewDescription->stateBar != currentViewDescription->stateBar) { + if(oldViewDescription == nil || oldViewDescription.stateBar != currentViewDescription.stateBar) { [UICompositeViewController addSubView: stateBarViewController view:stateBarView]; } } diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib index 181faee01..9ee7c0b65 100644 --- a/Classes/LinphoneUI/UICompositeViewController.xib +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -2,10 +2,10 @@ 1296 - 11D50 + 11E53 2182 - 1138.32 - 568.00 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -57,10 +57,7 @@ _NS:9 - - 3 - MQA - + YES IBCocoaTouchFramework diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 631013361..0c95d3f48 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -70,7 +70,7 @@ - (IBAction)onDetails:(id) event { if(callLog != NULL) { // Go to History details view - HistoryDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeView:PhoneView_HistoryDetails push:TRUE], HistoryDetailsViewController); + HistoryDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[HistoryDetailsViewController compositeViewDescription] push:TRUE], HistoryDetailsViewController); if(controller != nil) { [controller setCallLog:callLog]; } diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 49b24542b..db5742e92 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -125,9 +125,9 @@ } - (void)changeViewEvent:(NSNotification*)notif { - NSNumber *viewNumber = [notif.userInfo objectForKey: @"view"]; - if(viewNumber != nil) - [self updateView:[viewNumber intValue]]; + //UICompositeViewDescription *view = [notif.userInfo objectForKey: @"view"]; + //if(view != nil) + [self updateView:[[PhoneMainView instance] firstView]]; } - (void)textReceived:(NSNotification*)notif { @@ -138,7 +138,7 @@ #pragma mark - - (void)update { - [self updateView:[[PhoneMainView instance] currentView]]; + [self updateView:[[PhoneMainView instance] firstView]]; if([LinphoneManager isLcReady]) { [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; } else { @@ -228,35 +228,35 @@ [target.layer removeAnimationForKey:animationID]; } -- (void)updateView:(PhoneView) view { +- (void)updateView:(UICompositeViewDescription*) view { // Reset missed call - if(view == PhoneView_History) { + if([view equal:[HistoryViewController compositeViewDescription]]) { linphone_core_reset_missed_calls_count([LinphoneManager getLc]); [self updateMissedCall:0]; } // Update buttons - if(view == PhoneView_History || view == PhoneView_HistoryDetails) { + if([view equal:[HistoryViewController compositeViewDescription]]) { historyButton.selected = TRUE; } else { historyButton.selected = FALSE; } - if(view == PhoneView_Contacts || view == PhoneView_ContactDetails) { + if([view equal:[ContactsViewController compositeViewDescription]]) { contactsButton.selected = TRUE; } else { contactsButton.selected = FALSE; } - if(view == PhoneView_Dialer) { + if([view equal:[DialerViewController compositeViewDescription]]) { dialerButton.selected = TRUE; } else { dialerButton.selected = FALSE; } - if(view == PhoneView_Settings) { + if([view equal:[SettingsViewController compositeViewDescription]]) { settingsButton.selected = TRUE; } else { settingsButton.selected = FALSE; } - if(view == PhoneView_Chat || view == PhoneView_ChatRoom) { + if([view equal:[ChatViewController compositeViewDescription]]) { chatButton.selected = TRUE; } else { chatButton.selected = FALSE; @@ -267,24 +267,25 @@ #pragma mark - Action Functions - (IBAction)onHistoryClick: (id) sender { - [[PhoneMainView instance] changeView:PhoneView_History]; + [[PhoneMainView instance] changeCurrentView:[HistoryViewController compositeViewDescription]]; } - (IBAction)onContactsClick: (id) event { - [[PhoneMainView instance] changeView:PhoneView_Contacts]; + [ContactSelection setSelectionMode:ContactSelectionModeNone]; + [ContactSelection setAddAddress:nil]; + [[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription]]; } - (IBAction)onDialerClick: (id) event { - [[PhoneMainView instance] changeView:PhoneView_Dialer]; + [[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]]; } - (IBAction)onSettingsClick: (id) event { - [[PhoneMainView instance] changeView:PhoneView_Settings]; + [[PhoneMainView instance] changeCurrentView:[SettingsViewController compositeViewDescription]]; } - (IBAction)onChatClick: (id) event { - [[PhoneMainView instance] changeView:PhoneView_Chat]; + [[PhoneMainView instance] changeCurrentView:[ChatViewController compositeViewDescription]]; } - @end diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m index e09d131e9..c538d8028 100644 --- a/Classes/Model/ChatModel.m +++ b/Classes/Model/ChatModel.m @@ -106,7 +106,7 @@ ChatModel* line = nil; int err = sqlite3_step(sqlStatement); if (err == SQLITE_ROW) { - line = [[ChatModel alloc] initWithData:sqlStatement]; + line = [[[ChatModel alloc] initWithData:sqlStatement] autorelease]; } else if (err != SQLITE_DONE) { [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); @@ -187,6 +187,7 @@ while ((err = sqlite3_step(sqlStatement)) == SQLITE_ROW) { ChatModel *line = [[ChatModel alloc] initWithData:sqlStatement]; [array addObject:line]; + [line release]; } if (err != SQLITE_DONE) { @@ -219,6 +220,7 @@ while ((err = sqlite3_step(sqlStatement)) == SQLITE_ROW) { ChatModel *line = [[ChatModel alloc] initWithData:sqlStatement]; [array addObject:line]; + [line release]; } if (err != SQLITE_DONE) { diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 61234cdbe..7cc50ca26 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -37,45 +37,28 @@ #import "FirstLoginViewController.h" #import "WizardViewController.h" -typedef enum _PhoneView { - PhoneView_Wizard, - PhoneView_FirstLogin, - PhoneView_Dialer, - PhoneView_History, - PhoneView_HistoryDetails, - PhoneView_Settings, - PhoneView_Chat, - PhoneView_ChatRoom, - PhoneView_Contacts, - PhoneView_ContactDetails, - PhoneView_InCall, - PhoneView_IncomingCall, - PhoneView_END -} PhoneView; - @interface PhoneMainView : UIViewController { @private UICompositeViewController *mainViewController; - - NSMutableDictionary *viewDescriptions; UIActionSheet *incomingCallActionSheet; UIActionSheet *batteryActionSheet; int loadCount; - PhoneView currentView; - NSMutableArray* viewStack; + UICompositeViewDescription *currentView; + NSMutableArray *viewStack; } @property (nonatomic, retain) IBOutlet UICompositeViewController *mainViewController; - -- (UIViewController*)changeView:(PhoneView)view; -- (UIViewController*)changeView:(PhoneView)view push:(BOOL)push; -- (UIViewController*)popView; +@property (readonly) UICompositeViewDescription *currentView; +- (UIViewController*)changeCurrentView:(UICompositeViewDescription *)currentView; +- (UIViewController*)changeCurrentView:(UICompositeViewDescription *)currentView push:(BOOL)push; +- (UIViewController*)popCurrentView; +- (void)popToView:(UICompositeViewDescription *)currentView; +- (UICompositeViewDescription *)firstView; - (void)showTabBar:(BOOL)show; - (void)fullScreen:(BOOL)enabled; -- (PhoneView)currentView; + (PhoneMainView*) instance; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 863da3dd8..5c14d68b2 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -29,19 +29,16 @@ static PhoneMainView* phoneMainViewInstance=nil; @implementation PhoneMainView @synthesize mainViewController; - +@synthesize currentView; #pragma mark - Lifecycle Functions - (void)initPhoneMainView { assert (!phoneMainViewInstance); phoneMainViewInstance = self; - currentView = -1; + currentView = nil; viewStack = [[NSMutableArray alloc] init]; loadCount = 0; // For avoiding IOS 4 bug - - // Init view descriptions - viewDescriptions = [[NSMutableDictionary alloc] init]; } - (id)init { @@ -73,11 +70,8 @@ static PhoneMainView* phoneMainViewInstance=nil; [mainViewController release]; - [viewDescriptions removeAllObjects]; - [viewDescriptions release]; - [viewStack release]; - + [super dealloc]; } @@ -93,19 +87,6 @@ static PhoneMainView* phoneMainViewInstance=nil; [self.view addSubview: mainViewController.view]; [mainViewController.view setFrame:[self.view frame]]; - - // Init descriptions - [viewDescriptions setObject:[ChatRoomViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_ChatRoom]]; - [viewDescriptions setObject:[ChatViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Chat]]; - [viewDescriptions setObject:[DialerViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Dialer]]; - [viewDescriptions setObject:[ContactsViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Contacts]]; - [viewDescriptions setObject:[ContactDetailsViewController compositeViewDescription] forKey:[NSNumber numberWithInt:PhoneView_ContactDetails]]; - [viewDescriptions setObject:[HistoryViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_History]]; - [viewDescriptions setObject:[HistoryDetailsViewController compositeViewDescription] forKey:[NSNumber numberWithInt:PhoneView_HistoryDetails]]; - [viewDescriptions setObject:[InCallViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_InCall]]; - [viewDescriptions setObject:[SettingsViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Settings]]; - [viewDescriptions setObject:[FirstLoginViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_FirstLogin]]; - [viewDescriptions setObject:[WizardViewController compositeViewDescription] forKey:[NSNumber numberWithInt: PhoneView_Wizard]]; } - (void)viewWillAppear:(BOOL)animated { @@ -237,7 +218,7 @@ static PhoneMainView* phoneMainViewInstance=nil; case LinphoneCallConnected: case LinphoneCallUpdated: { - [self changeView:PhoneView_InCall]; + [self changeCurrentView:[InCallViewController compositeViewDescription]]; break; } case LinphoneCallUpdatedByRemote: @@ -246,7 +227,7 @@ static PhoneMainView* phoneMainViewInstance=nil; const LinphoneCallParams* remote = linphone_call_get_remote_params(call); if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { - [self changeView:PhoneView_InCall]; + [self changeCurrentView:[InCallViewController compositeViewDescription]]; } break; } @@ -259,19 +240,19 @@ static PhoneMainView* phoneMainViewInstance=nil; [self dismissIncomingCall:call]; if (canHideInCallView) { // Go to dialer view - DialerViewController *controller = DYNAMIC_CAST([self changeView:PhoneView_Dialer], DialerViewController); + DialerViewController *controller = DYNAMIC_CAST([self changeCurrentView:[DialerViewController compositeViewDescription]], DialerViewController); if(controller != nil) { [controller setAddress:@""]; [controller setTransferMode:FALSE]; } } else { - [self changeView:PhoneView_InCall]; + [self changeCurrentView:[InCallViewController compositeViewDescription]]; } break; } case LinphoneCallStreamsRunning: { - [self changeView:PhoneView_InCall]; + [self changeCurrentView:[InCallViewController compositeViewDescription]]; break; } default: @@ -302,29 +283,29 @@ static PhoneMainView* phoneMainViewInstance=nil; return trans; } -+ (CATransition*)getTransition:(PhoneView)old new:(PhoneView)new { ++ (CATransition*)getTransition:(UICompositeViewDescription *)old new:(UICompositeViewDescription *)new { bool left = false; - if(old == PhoneView_Chat || old == PhoneView_ChatRoom) { - if(new == PhoneView_Contacts || - new == PhoneView_Dialer || - new == PhoneView_Settings || - new == PhoneView_History) { + if([old equal:[ChatViewController compositeViewDescription]]) { + if([new equal:[ContactsViewController compositeViewDescription]] || + [new equal:[DialerViewController compositeViewDescription]] || + [new equal:[SettingsViewController compositeViewDescription]] || + [new equal:[HistoryViewController compositeViewDescription]]) { left = true; } - } else if(old == PhoneView_Settings) { - if(new == PhoneView_Dialer || - new == PhoneView_Contacts || - new == PhoneView_History) { + } else if([old equal:[SettingsViewController compositeViewDescription]]) { + if([new equal:[DialerViewController compositeViewDescription]] || + [new equal:[ContactsViewController compositeViewDescription]] || + [new equal:[HistoryViewController compositeViewDescription]]) { left = true; } - } else if(old == PhoneView_Dialer) { - if(new == PhoneView_Contacts || - new == PhoneView_History) { + } else if([old equal:[DialerViewController compositeViewDescription]]) { + if([new equal:[ContactsViewController compositeViewDescription]] || + [new equal:[HistoryViewController compositeViewDescription]]) { left = true; } - } else if(old == PhoneView_Contacts || old == PhoneView_ContactDetails) { - if(new == PhoneView_History) { + } else if([old equal:[ContactsViewController compositeViewDescription]]) { + if([new equal:[HistoryViewController compositeViewDescription]]) { left = true; } } @@ -348,59 +329,60 @@ static PhoneMainView* phoneMainViewInstance=nil; [mainViewController setFullScreen:enabled]; } -- (UIViewController*)changeView:(PhoneView)view { - return [self changeView:view push:FALSE]; +- (UIViewController*)changeCurrentView:(UICompositeViewDescription *)view { + return [self changeCurrentView:view push:FALSE]; } -- (UIViewController*)changeView:(PhoneView)view push:(BOOL)push { - if(push && currentView != -1) { - [viewStack addObject:[NSNumber numberWithInt: currentView]]; - } else { +- (UIViewController*)changeCurrentView:(UICompositeViewDescription*)view push:(BOOL)push { + if(!push) { [viewStack removeAllObjects]; } - return [self _changeView:view transition:nil]; + [viewStack addObject:view]; + return [self _changeCurrentView:view transition:nil]; } -- (UIViewController*)_changeView:(PhoneView)view transition:(CATransition*)transition { - [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: change view %d", view]; - UICompositeViewDescription* description = [viewDescriptions objectForKey:[NSNumber numberWithInt: view]]; - if(description == nil) - return nil; +- (UIViewController*)_changeCurrentView:(UICompositeViewDescription*)view transition:(CATransition*)transition { + [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: change view %d", [view name]]; - if(view != currentView) { + if(![view equal: currentView]) { if(transition == nil) transition = [PhoneMainView getTransition:currentView new:view]; [mainViewController setViewTransition:transition]; - [mainViewController changeView:description]; + [mainViewController changeView:view]; currentView = view; } - NSDictionary* mdict = [NSMutableDictionary dictionaryWithObject: [NSNumber numberWithInt:currentView] forKey:@"view"]; + NSDictionary* mdict = [NSMutableDictionary dictionaryWithObject:currentView forKey:@"view"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; return [mainViewController getCurrentViewController]; } -- (UIViewController*)popView { - return [self popView:nil]; +- (void)popToView:(UICompositeViewDescription*)view { + while([viewStack count] > 1 && ![[viewStack lastObject] equal:view]) { + [viewStack removeLastObject]; + } + [self _changeCurrentView:[viewStack lastObject] transition:[PhoneMainView getBackwardTransition]]; } -- (UIViewController*)popView:(NSArray *)calls { +- (UICompositeViewDescription *)firstView { + UICompositeViewDescription *view = nil; + if([viewStack count]) { + view = [viewStack objectAtIndex:0]; + } + return view; +} + +- (UIViewController*)popCurrentView { [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: Pop view"]; if([viewStack count] > 0) { - PhoneView view = [[viewStack lastObject] intValue]; [viewStack removeLastObject]; - [self _changeView:view transition:[PhoneMainView getBackwardTransition]]; - + [self _changeCurrentView:[viewStack lastObject] transition:[PhoneMainView getBackwardTransition]]; return [mainViewController getCurrentViewController]; } return nil; } -- (PhoneView)currentView { - return currentView; -} - - (void)displayCallError:(LinphoneCall*) call message:(NSString*) message { const char* lUserNameChars=linphone_address_get_username(linphone_call_get_remote_address(call)); NSString* lUserName = lUserNameChars?[[[NSString alloc] initWithUTF8String:lUserNameChars] autorelease]:NSLocalizedString(@"Unknown",nil); diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 968ca8a57..801b7f18d 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -2,10 +2,10 @@ 784 - 11D50 + 11E53 2182 - 1138.32 - 568.00 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 352ee8aee..29690c4e4 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -34,15 +34,19 @@ #pragma mark - UICompositeViewDelegate Functions -+ (UICompositeViewDescription*) compositeViewDescription { - UICompositeViewDescription *description = [UICompositeViewDescription alloc]; - description->content = @"SettingsViewController"; - description->tabBar = @"UIMainBar"; - description->tabBarEnabled = true; - description->stateBar = nil; - description->stateBarEnabled = false; - description->fullscreen = false; - return description; +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"Settings" + content:@"SettingsViewController" + stateBar:nil + stateBarEnabled:false + tabBar: @"UIMainBar" + tabBarEnabled:true + fullscreen:false]; + } + return compositeDescription; } diff --git a/Classes/Utils/FastAddressBook.h b/Classes/Utils/FastAddressBook.h index fa737ae52..5550b373b 100644 --- a/Classes/Utils/FastAddressBook.h +++ b/Classes/Utils/FastAddressBook.h @@ -26,6 +26,7 @@ ABAddressBookRef addressBook; } ++ (BOOL)isSipURI:(NSString*)address; + (NSString*)getContactDisplayName:(ABRecordRef)contact; + (UIImage*)getContactImage:(ABRecordRef)contact thumbnail:(BOOL)thumbnail; - (ABRecordRef)getContact:(NSString*)address; diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index 3ec6488a7..c25c0e9d7 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -39,7 +39,7 @@ if (contact && ABPersonHasImageData(contact)) { CFDataRef imgData = ABPersonCopyImageDataWithFormat(contact, thumbnail? kABPersonImageFormatThumbnail: kABPersonImageFormatOriginalSize); - retImage = [[[UIImage alloc] initWithData:(NSData *)imgData] autorelease]; + retImage = [UIImage imageWithData:(NSData *)imgData]; CFRelease(imgData); } return retImage; @@ -51,6 +51,10 @@ } } ++ (BOOL)isSipURI:(NSString*)address { + return [address hasPrefix:@"sip:"]; +} + + (NSString*)appendCountryCodeIfPossible:(NSString*)number { if (![number hasPrefix:@"+"] && ![number hasPrefix:@"00"]) { NSString* lCountryCode = [[LinphoneManager instance].settingsStore objectForKey:@"countrycode_preference"]; @@ -63,7 +67,11 @@ } + (NSString*)normalizeSipURI:(NSString*)address { - return address; + NSString* ret = address; + if(![address hasPrefix:@"sip:"]) { + ret = [@"sip:" stringByAppendingString:ret]; + } + return ret; } + (NSString*)normalizePhoneNumber:(NSString*)address { diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index c32db0ad4..348e2022f 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -78,15 +78,19 @@ typedef enum _ViewElement { #pragma mark - UICompositeViewDelegate Functions -+ (UICompositeViewDescription*) compositeViewDescription { -UICompositeViewDescription *description = [UICompositeViewDescription alloc]; - description->content = @"WizardViewController"; - description->tabBar = nil; - description->tabBarEnabled = false; - description->stateBar = nil; - description->stateBarEnabled = false; - description->fullscreen = false; - return description; +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"Wizard" + content:@"WizardViewController" + stateBar:nil + stateBarEnabled:false + tabBar:nil + tabBarEnabled:false + fullscreen:false]; + } + return compositeDescription; } @@ -185,7 +189,7 @@ UICompositeViewDescription *description = [UICompositeViewDescription alloc]; } - (IBAction)onCancelClick:(id)sender { - [[PhoneMainView instance] changeView:PhoneView_Dialer]; + [[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]]; } - (IBAction)onCreateAccountClick:(id)sender { diff --git a/Resources/contacts_back_default.png b/Resources/contacts_back_default.png new file mode 100644 index 0000000000000000000000000000000000000000..416ecfa4b40e61edce0de49799dccfee05c9b81d GIT binary patch literal 2800 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 U`!gsEcnJfJ Date: Wed, 18 Jul 2012 15:29:42 +0200 Subject: [PATCH 056/397] Fix invalid scroll in chat room view --- Classes/ChatRoomTableViewController.m | 6 +++++- Classes/ChatRoomViewController.m | 12 ++++++++---- Classes/ChatRoomViewController.xib | 9 --------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index 32d7b9676..4bcf7b651 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -91,7 +91,11 @@ } // Scroll to unread - [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] atScrollPosition:UITableViewScrollPositionMiddle animated:animated]; + if(index >= 0) { + [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:index inSection:0] + atScrollPosition:UITableViewScrollPositionMiddle + animated:animated]; + } } #pragma mark - Property Functions diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 86d8c915c..b231298b1 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -303,10 +303,14 @@ static UICompositeViewDescription *compositeDescription = nil; // Scroll int lastSection = [tableController.tableView numberOfSections] -1; - int lastRow = [tableController.tableView numberOfRowsInSection:lastSection] - 1; - [tableController.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:lastRow inSection:lastSection] - atScrollPosition:UITableViewScrollPositionBottom - animated:TRUE]; + if(lastSection >= 0) { + int lastRow = [tableController.tableView numberOfRowsInSection:lastSection] - 1; + if(lastRow >=0) { + [tableController.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:lastRow inSection:lastSection] + atScrollPosition:UITableViewScrollPositionBottom + animated:TRUE]; + } + } [UIView commitAnimations]; } diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib index cbb6a5959..6ed84a132 100644 --- a/Classes/ChatRoomViewController.xib +++ b/Classes/ChatRoomViewController.xib @@ -637,7 +637,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - TPKeyboardAvoidingTableView com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -734,14 +733,6 @@ ./Classes/ChatRoomViewController.h - - TPKeyboardAvoidingTableView - UITableView - - IBProjectSource - ./Classes/TPKeyboardAvoidingTableView.h - - UIToggleButton UIButton From da2dbcb36b4ca5eee2615a3ea987613987591bff Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 18 Jul 2012 15:46:26 +0200 Subject: [PATCH 057/397] Fix Callcell --- Classes/LinphoneUI/UICallCell.h | 2 +- Classes/LinphoneUI/UICallCell.m | 22 ++++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h index e48b2de57..f183a81b6 100644 --- a/Classes/LinphoneUI/UICallCell.h +++ b/Classes/LinphoneUI/UICallCell.h @@ -54,7 +54,7 @@ UICallCellData *data; } -@property (retain) UICallCellData *data; +@property (nonatomic, retain) UICallCellData *data; @property (nonatomic, retain) IBOutlet UIImageView* headerBackgroundImage; @property (nonatomic, retain) IBOutlet UIImageView* headerBackgroundHighlightImage; diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index cd4fbe250..fe0d5445d 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -84,6 +84,7 @@ [stateImage release]; [avatarImage release]; [headerView release]; + [data release]; [super dealloc]; } @@ -92,10 +93,23 @@ [super prepareForReuse]; self->currentCall = FALSE; [headerBackgroundHighlightImage setAlpha:0.0f]; + [data release]; + data = nil; } #pragma mark - Properties Functions +- (void)setData:(UICallCellData *)adata { + if(data !=nil) { + [data release]; + data = nil; + } + if(adata !=nil) { + data = [adata retain]; + } + [self update]; +} + - (void)setCurrentCall:(BOOL) val { BOOL oldVal = currentCall; currentCall = val; @@ -108,6 +122,7 @@ } } + #pragma mark - Static Functions + (int)getMaximizedHeight { @@ -141,13 +156,8 @@ #pragma mark - -- (void)update:(UICallCellData*) adata { - self->data = adata; - [self update]; -} - - (void)update { - if(data == nil || data->call) { + if(data == nil || data->call == NULL) { [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update call cell: null call or data"]; return; } From d8438aa74234bd9f8a0b8f05ffef6efdc94b9477 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 18 Jul 2012 16:49:55 +0200 Subject: [PATCH 058/397] Show Mainbar in ChatRoom view --- Classes/ChatRoomViewController.m | 16 ++++++++-------- Classes/LinphoneUI/UICallCell.m | 2 ++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index b231298b1..d4ee8b7fe 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -69,8 +69,8 @@ static UICompositeViewDescription *compositeDescription = nil; content:@"ChatRoomViewController" stateBar:nil stateBarEnabled:false - tabBar:nil - tabBarEnabled:false + tabBar:@"UIMainBar" + tabBarEnabled:true fullscreen:false]; } return compositeDescription; @@ -255,7 +255,8 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - Keyboard Event Functions - (void)keyboardWillHide:(NSNotification *)notif { - CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + //CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; [UIView beginAnimations:@"resize" context:nil]; @@ -264,9 +265,8 @@ static UICompositeViewDescription *compositeDescription = nil; [UIView setAnimationBeginsFromCurrentState:TRUE]; // Move view - CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGRect frame = [[self view] frame]; - frame.origin.y += endFrame.origin.y - beginFrame.origin.y; + frame.origin.y = 0; [[self view] setFrame:frame]; // Resize table view @@ -279,7 +279,8 @@ static UICompositeViewDescription *compositeDescription = nil; } - (void)keyboardWillShow:(NSNotification *)notif { - CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; [UIView beginAnimations:@"resize" context:nil]; @@ -288,9 +289,8 @@ static UICompositeViewDescription *compositeDescription = nil; [UIView setAnimationBeginsFromCurrentState:TRUE]; // Move view - CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGRect frame = [[self view] frame]; - frame.origin.y += endFrame.origin.y - beginFrame.origin.y; + frame.origin.y = [self.view convertPoint:endFrame.origin fromView:nil].y - frame.size.height; [[self view] setFrame:frame]; // Resize table view diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index fe0d5445d..ea2b481a3 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -57,6 +57,7 @@ @synthesize conferenceCell; @synthesize currentCall; + #pragma mark - Lifecycle Functions - (id)initWithIdentifier:(NSString*)identifier { @@ -97,6 +98,7 @@ data = nil; } + #pragma mark - Properties Functions - (void)setData:(UICallCellData *)adata { From 4d42d182c10cc81ce670858d2e73628f88d8378d Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 18 Jul 2012 17:20:29 +0200 Subject: [PATCH 059/397] Improve filter & fix view change (same description) --- Classes/ChatViewController.m | 2 ++ Classes/ContactsTableViewController.h | 3 +-- Classes/ContactsTableViewController.m | 18 ++++--------- Classes/ContactsViewController.h | 2 ++ Classes/ContactsViewController.m | 26 ++++++++++++++++--- Classes/DialerViewController.m | 1 + Classes/HistoryDetailsViewController.m | 1 + .../LinphoneUI/UICompositeViewController.m | 8 ++---- Classes/LinphoneUI/UIMainBar.m | 1 + Classes/PhoneMainView.m | 12 +++++---- 10 files changed, 45 insertions(+), 29 deletions(-) diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index ff63f4884..16dca20f8 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -102,6 +102,8 @@ static UICompositeViewDescription *compositeDescription = nil; - (IBAction)onAddClick:(id)event { [ContactSelection setSelectionMode:ContactSelectionModeMessage]; + [ContactSelection setAddAddress:nil]; + [ContactSelection setSipFilter:TRUE]; [[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE]; } diff --git a/Classes/ContactsTableViewController.h b/Classes/ContactsTableViewController.h index 7ae506cb8..529a97d07 100644 --- a/Classes/ContactsTableViewController.h +++ b/Classes/ContactsTableViewController.h @@ -26,9 +26,8 @@ OrderedDictionary* addressBookMap; ABAddressBookRef addressBook; - BOOL sipFilter; } -@property (nonatomic, assign) BOOL sipFilter; +- (void)loadData; @end diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index bb32853fd..d0c4d935c 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -27,8 +27,6 @@ @implementation ContactsTableViewController -@synthesize sipFilter; - #pragma mark - Lifecycle Functions - (void)initContactsTableViewController { @@ -62,17 +60,9 @@ } -#pragma mark - Property Functions - -- (void)setSipFilter:(BOOL)asipFilter { - self->sipFilter = asipFilter; - [self reloadData]; -} - - #pragma mark - -- (void)reloadData { +- (void)loadData { [LinphoneLogger logc:LinphoneLoggerLog format:"Load contact list"]; @synchronized (addressBookMap) { @@ -82,7 +72,7 @@ NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); for (id lPerson in lContacts) { BOOL add = true; - if(sipFilter) { + if([ContactSelection getSipFilter]) { add = false; ABMultiValueRef lMap = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonInstantMessageProperty); for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { @@ -91,6 +81,8 @@ if(CFStringCompare((CFStringRef)@"SIP", CFDictionaryGetValue(lDict, @"service"), kCFCompareCaseInsensitive) == 0) { add = true; } + } else { + add = true; } CFRelease(lDict); } @@ -141,7 +133,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { ContactsTableViewController* controller = (ContactsTableViewController*)context; ABAddressBookRevert(addressBook); - [controller reloadData]; + [controller loadData]; } diff --git a/Classes/ContactsViewController.h b/Classes/ContactsViewController.h index e818ccc3f..2b14e492c 100644 --- a/Classes/ContactsViewController.h +++ b/Classes/ContactsViewController.h @@ -36,6 +36,8 @@ typedef enum _ContactSelectionMode { + (ContactSelectionMode)getSelectionMode; + (void)setAddAddress:(NSString*)address; + (NSString*)getAddAddress; ++ (void)setSipFilter:(BOOL)enable; ++ (BOOL)getSipFilter; @end diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 4d7778927..2c4ebc9b4 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -27,6 +27,7 @@ static ContactSelectionMode sSelectionMode = ContactSelectionModeNone; static NSString* sAddAddress = nil; +static BOOL sSipFilter = FALSE; + (void)setSelectionMode:(ContactSelectionMode)selectionMode { sSelectionMode = selectionMode; @@ -50,6 +51,14 @@ static NSString* sAddAddress = nil; return sAddAddress; } ++ (void)setSipFilter:(BOOL)enable { + sSipFilter = enable; +} + ++ (BOOL)getSipFilter { + return sSipFilter; +} + @end @implementation ContactsViewController @@ -120,7 +129,6 @@ static UICompositeViewDescription *compositeDescription = nil; [tableController viewWillAppear:animated]; } - [self changeView:History_All]; [self update]; } @@ -141,6 +149,8 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)viewDidLoad { [super viewDidLoad]; + [self changeView:History_All]; + // Set selected+over background: IB lack ! [linphoneButton setImage:[UIImage imageNamed:@"contacts_linphone_selected.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; @@ -155,14 +165,16 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)changeView: (HistoryView) view { if(view == History_All) { - [tableController setSipFilter:FALSE]; + [ContactSelection setSipFilter:FALSE]; + [tableController loadData]; allButton.selected = TRUE; } else { allButton.selected = FALSE; } if(view == History_Linphone) { - [tableController setSipFilter:TRUE]; + [ContactSelection setSipFilter:TRUE]; + [tableController loadData]; linphoneButton.selected = TRUE; } else { linphoneButton.selected = FALSE; @@ -181,6 +193,14 @@ static UICompositeViewDescription *compositeDescription = nil; [backButton setHidden:TRUE]; break; } + if([ContactSelection getSipFilter]) { + allButton.selected = FALSE; + linphoneButton.selected = TRUE; + } else { + allButton.selected = TRUE; + linphoneButton.selected = FALSE; + } + [tableController loadData]; } diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 96b3e64c8..41fba484b 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -229,6 +229,7 @@ static UICompositeViewDescription *compositeDescription = nil; - (IBAction)onAddContactClick: (id) event { [ContactSelection setSelectionMode:ContactSelectionModeEdit]; [ContactSelection setAddAddress:[addressField text]]; + [ContactSelection setSipFilter:FALSE]; ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE], ContactsViewController); if(controller != nil) { diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index 9ceee4f95..f8f0aef89 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -264,6 +264,7 @@ static UICompositeViewDescription *compositeDescription = nil; - (IBAction)onAddContactClick:(id)event { [ContactSelection setSelectionMode:ContactSelectionModeEdit]; [ContactSelection setAddAddress:[[addressButton titleLabel] text]]; + [ContactSelection setSipFilter:FALSE]; ContactsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE], ContactsViewController); if(controller != nil) { } diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index b12ad3052..c7e3b4030 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -211,9 +211,7 @@ } } - if(oldViewDescription != nil && contentViewController != nil && oldViewDescription.content != currentViewDescription.content) { - [UICompositeViewController removeSubView: contentViewController]; - } + [UICompositeViewController removeSubView: contentViewController]; if(oldViewDescription != nil && tabBarViewController != nil && oldViewDescription.tabBar != currentViewDescription.tabBar) { [UICompositeViewController removeSubView: tabBarViewController]; } @@ -311,9 +309,7 @@ // Change view if(description != nil) { - if(oldViewDescription == nil || oldViewDescription.content != currentViewDescription.content) { - [UICompositeViewController addSubView: contentViewController view:contentView]; - } + [UICompositeViewController addSubView: contentViewController view:contentView]; if(oldViewDescription == nil || oldViewDescription.tabBar != currentViewDescription.tabBar) { [UICompositeViewController addSubView: tabBarViewController view:tabBarView]; } diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index db5742e92..6ffeae521 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -273,6 +273,7 @@ - (IBAction)onContactsClick: (id) event { [ContactSelection setSelectionMode:ContactSelectionModeNone]; [ContactSelection setAddAddress:nil]; + [ContactSelection setSipFilter:FALSE]; [[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription]]; } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 5c14d68b2..2d0fc94df 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -334,17 +334,19 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (UIViewController*)changeCurrentView:(UICompositeViewDescription*)view push:(BOOL)push { + BOOL force = push; if(!push) { + force = [viewStack count] > 1; [viewStack removeAllObjects]; } [viewStack addObject:view]; - return [self _changeCurrentView:view transition:nil]; + return [self _changeCurrentView:view transition:nil force:force]; } -- (UIViewController*)_changeCurrentView:(UICompositeViewDescription*)view transition:(CATransition*)transition { +- (UIViewController*)_changeCurrentView:(UICompositeViewDescription*)view transition:(CATransition*)transition force:(BOOL)force { [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: change view %d", [view name]]; - if(![view equal: currentView]) { + if(force || ![view equal: currentView]) { if(transition == nil) transition = [PhoneMainView getTransition:currentView new:view]; [mainViewController setViewTransition:transition]; @@ -362,7 +364,7 @@ static PhoneMainView* phoneMainViewInstance=nil; while([viewStack count] > 1 && ![[viewStack lastObject] equal:view]) { [viewStack removeLastObject]; } - [self _changeCurrentView:[viewStack lastObject] transition:[PhoneMainView getBackwardTransition]]; + [self _changeCurrentView:[viewStack lastObject] transition:[PhoneMainView getBackwardTransition] force:TRUE]; } - (UICompositeViewDescription *)firstView { @@ -377,7 +379,7 @@ static PhoneMainView* phoneMainViewInstance=nil; [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: Pop view"]; if([viewStack count] > 0) { [viewStack removeLastObject]; - [self _changeCurrentView:[viewStack lastObject] transition:[PhoneMainView getBackwardTransition]]; + [self _changeCurrentView:[viewStack lastObject] transition:[PhoneMainView getBackwardTransition] force:TRUE]; return [mainViewController getCurrentViewController]; } return nil; From 2163aac96db8ac1a2d4faa2996a31f61fcd6b593 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 18 Jul 2012 18:03:08 +0200 Subject: [PATCH 060/397] Adjust ChatRoom cells --- Classes/ChatRoomViewController.xib | 2 +- Classes/LinphoneUI/UIChatRoomCell.m | 64 ++++++++++++++------------- Classes/LinphoneUI/UIChatRoomCell.xib | 15 +++---- 3 files changed, 41 insertions(+), 40 deletions(-) diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib index 6ed84a132..c8b9c4f6b 100644 --- a/Classes/ChatRoomViewController.xib +++ b/Classes/ChatRoomViewController.xib @@ -238,7 +238,6 @@ {{250, 0}, {70, 59}} - _NS:9 NO @@ -303,6 +302,7 @@ YES 17 + 2 IBCocoaTouchFramework diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index ceb4ec040..98f355cc5 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -32,8 +32,11 @@ @synthesize dateLabel; @synthesize chat; -static const CGFloat CELL_MIN_HEIGHT = 65.0f; -static const CGFloat CELL_MESSAGE_MAX_WIDTH = 280.0f; +static const CGFloat CELL_MIN_HEIGHT = 40.0f; +static const CGFloat CELL_MIN_WIDTH = 150.0f; +static const CGFloat CELL_MAX_WIDTH = 320.0f; +static const CGFloat CELL_MESSAGE_X_MARGIN = 26.0f; +static const CGFloat CELL_MESSAGE_Y_MARGIN = 33.0f; static const CGFloat CELL_FONT_SIZE = 17.0f; static UIFont *CELL_FONT = nil; @@ -115,53 +118,52 @@ static UIFont *CELL_FONT = nil; } - (void)resizeContent { - // Resize content - { - CGRect frame = [contentView frame]; - frame.origin.x = 0.0f; - frame.origin.y = 0.0f; - frame.size = [self frame].size; - [ contentView setFrame:frame]; - } - if(chat != nil) { - CGPoint center = [contentView center]; - if(![[chat direction] intValue]) { // Inverted + // Resize Content + CGRect contentFrame = [contentView frame]; + contentFrame.size = [UIChatRoomCell viewSize:[chat message]]; + if([[chat direction] intValue]) { // Inverted + contentFrame.origin.x = 0.0f; + contentFrame.origin.y = 0.0f; + } else { + contentFrame.origin.x = CELL_MAX_WIDTH - contentFrame.size.width; + contentFrame.origin.y = 0.0f; + } + [contentView setFrame:contentFrame]; + + CGRect messageFrame = [messageView frame]; + messageFrame.origin.y = ([contentView frame].size.height - messageFrame.size.height)/2; + if([[chat direction] intValue]) { // Inverted [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size forNinePatchNamed:@"chat_bubble_incoming"]]; - center.y += 6; + messageFrame.origin.y += 5; } else { [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size forNinePatchNamed:@"chat_bubble_outgoing"]]; - center.y -= 6; + messageFrame.origin.y -= 5; } - [messageView setCenter:center]; - } - - // Resize messageView - { - CGRect frame = [messageView frame]; - frame.size.height = [UIChatRoomCell messageHeight:[chat message]] + 10; - [messageView setFrame:frame]; + [messageView setFrame:messageFrame]; } } -+ (CGFloat)messageHeight:(NSString*)message { ++ (CGSize)viewSize:(NSString*)message { if(CELL_FONT == nil) { CELL_FONT = [UIFont systemFontOfSize:CELL_FONT_SIZE]; } CGSize messageSize = [message sizeWithFont: CELL_FONT - constrainedToSize: CGSizeMake(CELL_MESSAGE_MAX_WIDTH, 10000.0f) + constrainedToSize: CGSizeMake(CELL_MAX_WIDTH - CELL_MESSAGE_X_MARGIN, 10000.0f) lineBreakMode: UILineBreakModeTailTruncation]; - return messageSize.height; + messageSize.height += CELL_MESSAGE_Y_MARGIN; + if(messageSize.height < CELL_MIN_HEIGHT) + messageSize.height = CELL_MIN_HEIGHT; + messageSize.width += CELL_MESSAGE_X_MARGIN; + if(messageSize.width < CELL_MIN_WIDTH) + messageSize.width = CELL_MIN_WIDTH; + return messageSize; } + (CGFloat)height:(ChatModel*)chat { - CGFloat height = [UIChatRoomCell messageHeight:[chat message]]; - height += 40; - if(height < CELL_MIN_HEIGHT) - height = CELL_MIN_HEIGHT; - return height; + return [UIChatRoomCell viewSize:[chat message]].height; } diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib index 3939cee62..822ed6cc6 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.xib +++ b/Classes/LinphoneUI/UIChatRoomCell.xib @@ -40,7 +40,7 @@ 274 - {{10, 10}, {300, 120}} + {{5, 5}, {310, 130}} @@ -59,7 +59,7 @@ 274 - {280, 90} + {294, 107} @@ -92,7 +92,7 @@ 289 - {{236, 0}, {44, 44}} + {{250, 0}, {44, 44}} @@ -131,10 +131,9 @@ 265 - {{0, 90}, {280, 10}} + {{14, 107}, {280, 7}} - _NS:9 NO YES @@ -149,16 +148,16 @@ 2 1 - 12 + 10 Helvetica - 12 + 10 16 - {{20, 20}, {280, 100}} + {{13, 13}, {294, 114}} From 7d36ea76c90842800d21669c8cbf8e75d38d202b Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 19 Jul 2012 09:55:49 +0200 Subject: [PATCH 061/397] Add incall dial background/ update call states images --- Classes/LinphoneUI/UICallBar.xib | 41 ++++++++++++++++------ Resources/call_state_outgoing_default.png | Bin 1502 -> 1752 bytes Resources/call_state_ringing_default.png | Bin 2431 -> 2260 bytes Resources/dialer_alt_background.png | Bin 3373 -> 4450 bytes 4 files changed, 30 insertions(+), 11 deletions(-) diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 325eef4d5..1bda79f29 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -14,6 +14,7 @@ IBUIButton IBUIActivityIndicatorView IBUIView + IBUIImageView IBProxyObject @@ -59,13 +60,28 @@ -2147483360 + + + 274 + {281, 260} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + dialer_alt_background.png + + 292 {{-20, 10}, {107, 54}} - + 1 MC40MDAwMDAwMSAxIDEgMAA @@ -369,12 +385,9 @@ _NS:9 - + 3 - MSAwLjQAA - - 2 - + MCAwAA IBCocoaTouchFramework @@ -455,10 +468,7 @@ _NS:9 - - 3 - MCAwAA - + IBCocoaTouchFramework @@ -1154,6 +1164,7 @@ + pad @@ -1258,6 +1269,12 @@ optionsTansferButton + + 99 + + + background + @@ -1335,12 +1352,13 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 98 + 99 @@ -1613,6 +1631,7 @@ {209, 136} {209, 136} {209, 136} + {530, 526} {209, 136} {209, 136} {222, 136} diff --git a/Resources/call_state_outgoing_default.png b/Resources/call_state_outgoing_default.png index ca1f8f99b8248338a1c65030b4ecd62f6ebd45fd..df3aa5e7ee553af524ca55dc6acbde935ddf6471 100644 GIT binary patch literal 1752 zcmaJ?Yfuwc6y9VLo}xS|g-CRX6_7%n5RyP7NWf&8U<^1?AC){7lR~mfvPg8C5&bjB# z?ogzy@bRK}0RZ45m57!2m+pE!+yH<8wJ)&YK`@q*iKQdiSb@p}14&v$4MS3cY7?x4 zRoX3i4mbe-K$<=y6U&s#1RBIZSGh2Bivh*i0FaPqK~<76C3`fH4(hG2|M}0*jC~sVl(Ou5AVl znuK6ELfU&%nQ{e`jF@03md=dUFu6>K%c8S5F>!HmQ4pKSVltR)28$idiW6|y0wxoh zdT4kylQvtR6sJz*!XqI~hheCI!6+ywpcioHh-njp#pm-~8fJo%~Nf{8^*AxPzH<6bd@v>l*|7gYB0>8 z&6pDY;P*d;%^6!zn4yHtNWMvfA6)igS1MGHY=Tu7V#+{}-03bVbO?r+bqES2r^iBa zl}2xL#gllsTp%@?F_lpROT|JOu0Yr8wRks^_}thOelnlWW3f_LN!(a*GM|^qjAL@S zsa)nXSBz-#4X_cL=4wB1lV;_*M!|sMnZ>Y4zZur1nh*mtS+YPsyO+3G^`^Mm*}d>) z!7E%@ab_aXT}x}W(FTN;?r)z#~NXZHTZ3jNySMSmiy|r6BCIb_Xy4)?AHiJSdSPSCp@cU1672j+Tv!B|7D_+<2(}rS%Y@u-6@317C3^wJ-Dmo z_eK44vvXV2#F1ZsbD)DE6HzDf*3R`6@s^;3z+78VnBB8&%>BXXZjkhOMZQ6x${d{_5WZv|*lFyQ;*Il0>@L69z|Pbd_&bZtft*@PhlYeD`~u+;%U*C(t{@+1XENuimSA z;PLn1JZQLM&Ct6NZev7iZY1-q`E+pF$$FBhk=9?kqD@i>jV~lpFV-|QO2R6@wdl^h z2Xxfv_3wOxhP~Q6#?k#9q@C-t&i4`Sl#7GBMovAsdF0_37+m#5x1WZ$?9HwI&K&P+ zS;{~A-9nt#MY*Yx#L%vdL{>!9DZ*&DBAGgJzoemzXXD<`Q7h*Iq#$_-+*8)u)aB6o z`RQ(3&ph4;{X}%qATCi&*U2YBDsB)*bD{RqC7*Vct$zF*g?!zeT@sD3M+8<-i_VjJ zej9=JNOyZHur*fYx%Po`Lp6)0_P%+gn} z!3~b4x%>Yr@ZV5uXM%E#-7;Y4p(2 zFOLI0^<)EKS@+SW-k`QxRzqO#Q@FnbS_9S`-EeMI`7TL02n>nW37gMiEZ4tAnvy1N IS)Nt=4=BEZ4gdfE delta 1492 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 bzUwO#WZgW>{9*6n0>Bx&Z)~4f`z8DnsQFSc delta 730 zcmaE)v{q_@IF}Fy8v_I5J1a5Gjf$#FF@^@_7EX?i&dw&L&W47rhE68trcTD@rY1(l zuEqwgE=md&xdpzyRxbI;rManjC7v#}Ns9qObdM7VpGJsj&h)a=@LUBn@ zYMNCFZVQ}n>7A^{>{Q>X9qz%vz`4-V#WAGf)|(5AybJ~$%o~dTTWvHHN|_Mmr0r>c zEnLC5jYrZb<-`Oii3yEZb)1uAys)Lx2^=L9kGST^L~s>^Kkj$xdKkIAFl@_+RZkxAl)Fcu1rMua*2DH2EW|10xHN zw4XeQO?$F1oA~5FHc{Dw=IRX9r2#Aq42KNfe0VP`eUyE=$Bo6av(7S9@J`}To$SY9 zJvo6x6NZ^x4zWx=z~wD_z*(JPcWD4KP@{v+kMEtmhuJe#-xS^q$!0q+d2#`}>SRlf z0GKWyEym=-FnJAE^5nf-K|m}#S%%AcvL2Tv6syYpDPY`E9 B<#hl6 From 36d144156fa054dba9bb107b6847de3e16dfbdb8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 19 Jul 2012 11:28:38 +0200 Subject: [PATCH 062/397] Rename history details images --- Classes/HistoryDetailsViewController.xib | 25 ++++----- ...lt.png => history_details_add_default.png} | Bin ..._over.png => history_details_add_over.png} | Bin ...t.png => history_details_back_default.png} | Bin ...over.png => history_details_back_over.png} | Bin linphone.xcodeproj/project.pbxproj | 48 +++++++++--------- 6 files changed, 37 insertions(+), 36 deletions(-) rename Resources/{history_add_default.png => history_details_add_default.png} (100%) rename Resources/{history_add_over.png => history_details_add_over.png} (100%) rename Resources/{history_back_default.png => history_details_back_default.png} (100%) rename Resources/{history_back_over.png => history_details_back_over.png} (100%) diff --git a/Classes/HistoryDetailsViewController.xib b/Classes/HistoryDetailsViewController.xib index ef9273c73..7deedb7e5 100644 --- a/Classes/HistoryDetailsViewController.xib +++ b/Classes/HistoryDetailsViewController.xib @@ -78,11 +78,11 @@ NSImage - history_back_over.png + history_details_back_over.png NSImage - history_back_default.png + history_details_back_default.png 2 @@ -113,11 +113,11 @@ NSImage - history_add_over.png + history_details_add_over.png NSImage - history_add_default.png + history_details_add_default.png @@ -417,6 +417,7 @@ {{33, 273}, {255, 50}} + _NS:9 NO IBCocoaTouchFramework @@ -633,7 +634,7 @@ 8 - barBackground + background 9 @@ -753,7 +754,7 @@ 50 - backButton + addButton @@ -780,11 +781,11 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + @@ -896,10 +897,10 @@ {550, 101} {550, 101} {5, 117} - {320, 117} - {320, 117} - {320, 117} - {320, 117} + {320, 117} + {320, 117} + {320, 117} + {320, 117} 1181 diff --git a/Resources/history_add_default.png b/Resources/history_details_add_default.png similarity index 100% rename from Resources/history_add_default.png rename to Resources/history_details_add_default.png diff --git a/Resources/history_add_over.png b/Resources/history_details_add_over.png similarity index 100% rename from Resources/history_add_over.png rename to Resources/history_details_add_over.png diff --git a/Resources/history_back_default.png b/Resources/history_details_back_default.png similarity index 100% rename from Resources/history_back_default.png rename to Resources/history_details_back_default.png diff --git a/Resources/history_back_over.png b/Resources/history_details_back_over.png similarity index 100% rename from Resources/history_back_over.png rename to Resources/history_details_back_over.png diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 603f1d2a0..d4a3740c7 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -185,14 +185,14 @@ D3128FF415AABE4E00A2147A /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; }; D3128FF515AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; D3128FF615AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; - D3157A8A15B4466F00DD8C4C /* history_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8815B4466F00DD8C4C /* history_add_default.png */; }; - D3157A8B15B4466F00DD8C4C /* history_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8815B4466F00DD8C4C /* history_add_default.png */; }; - D3157A8C15B4466F00DD8C4C /* history_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8915B4466F00DD8C4C /* history_add_over.png */; }; - D3157A8D15B4466F00DD8C4C /* history_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8915B4466F00DD8C4C /* history_add_over.png */; }; - D3157A9015B446CB00DD8C4C /* history_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8E15B446CB00DD8C4C /* history_back_default.png */; }; - D3157A9115B446CB00DD8C4C /* history_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8E15B446CB00DD8C4C /* history_back_default.png */; }; - D3157A9215B446CB00DD8C4C /* history_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8F15B446CB00DD8C4C /* history_back_over.png */; }; - D3157A9315B446CB00DD8C4C /* history_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8F15B446CB00DD8C4C /* history_back_over.png */; }; + D3157A8A15B4466F00DD8C4C /* history_details_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8815B4466F00DD8C4C /* history_details_add_default.png */; }; + D3157A8B15B4466F00DD8C4C /* history_details_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8815B4466F00DD8C4C /* history_details_add_default.png */; }; + D3157A8C15B4466F00DD8C4C /* history_details_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8915B4466F00DD8C4C /* history_details_add_over.png */; }; + D3157A8D15B4466F00DD8C4C /* history_details_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8915B4466F00DD8C4C /* history_details_add_over.png */; }; + D3157A9015B446CB00DD8C4C /* history_details_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */; }; + D3157A9115B446CB00DD8C4C /* history_details_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */; }; + D3157A9215B446CB00DD8C4C /* history_details_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */; }; + D3157A9315B446CB00DD8C4C /* history_details_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */; }; D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3115A321E2007FEEBA /* options_add_over.png */; }; @@ -1104,10 +1104,10 @@ D3128FE815AABE4E00A2147A /* contact_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_back_over.png; path = Resources/contact_back_over.png; sourceTree = ""; }; D3128FE915AABE4E00A2147A /* contact_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_default.png; path = Resources/contact_edit_default.png; sourceTree = ""; }; D3128FEA15AABE4E00A2147A /* contact_edit_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_over.png; path = Resources/contact_edit_over.png; sourceTree = ""; }; - D3157A8815B4466F00DD8C4C /* history_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_add_default.png; path = Resources/history_add_default.png; sourceTree = ""; }; - D3157A8915B4466F00DD8C4C /* history_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_add_over.png; path = Resources/history_add_over.png; sourceTree = ""; }; - D3157A8E15B446CB00DD8C4C /* history_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_back_default.png; path = Resources/history_back_default.png; sourceTree = ""; }; - D3157A8F15B446CB00DD8C4C /* history_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_back_over.png; path = Resources/history_back_over.png; sourceTree = ""; }; + D3157A8815B4466F00DD8C4C /* history_details_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_details_add_default.png; path = Resources/history_details_add_default.png; sourceTree = ""; }; + D3157A8915B4466F00DD8C4C /* history_details_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_details_add_over.png; path = Resources/history_details_add_over.png; sourceTree = ""; }; + D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_details_back_default.png; path = Resources/history_details_back_default.png; sourceTree = ""; }; + D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_details_back_over.png; path = Resources/history_details_back_over.png; sourceTree = ""; }; D3196D3015A321E2007FEEBA /* options_add_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_default.png; path = Resources/options_add_default.png; sourceTree = ""; }; D3196D3115A321E2007FEEBA /* options_add_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_over.png; path = Resources/options_add_over.png; sourceTree = ""; }; D3196D3215A321E3007FEEBA /* options_transfer_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_default.png; path = Resources/options_transfer_default.png; sourceTree = ""; }; @@ -2202,12 +2202,12 @@ D3F83EFB158205A100336684 /* hangup_over.png */, D36C43CE158F2F370048BA40 /* header_conference.png */, D3F26BFB15987083005F9CAB /* header_incoming.png */, - D3157A8815B4466F00DD8C4C /* history_add_default.png */, - D3157A8915B4466F00DD8C4C /* history_add_over.png */, + D3157A8815B4466F00DD8C4C /* history_details_add_default.png */, + D3157A8915B4466F00DD8C4C /* history_details_add_over.png */, D3ED3E9315872EF1006C0DE4 /* history_all_default.png */, D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */, - D3157A8E15B446CB00DD8C4C /* history_back_default.png */, - D3157A8F15B446CB00DD8C4C /* history_back_over.png */, + D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */, + D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */, D347347C1580E5F8003C7B8C /* history_default.png */, D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */, D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */, @@ -2827,10 +2827,10 @@ D3E84F2A15B00F4100420DAC /* dialer_alt_background.png in Resources */, D3E84F3815B011AF00420DAC /* contact_cancel_default.png in Resources */, D3E84F3A15B011AF00420DAC /* contact_cancel_over.png in Resources */, - D3157A8A15B4466F00DD8C4C /* history_add_default.png in Resources */, - D3157A8C15B4466F00DD8C4C /* history_add_over.png in Resources */, - D3157A9015B446CB00DD8C4C /* history_back_default.png in Resources */, - D3157A9215B446CB00DD8C4C /* history_back_over.png in Resources */, + D3157A8A15B4466F00DD8C4C /* history_details_add_default.png in Resources */, + D3157A8C15B4466F00DD8C4C /* history_details_add_over.png in Resources */, + D3157A9015B446CB00DD8C4C /* history_details_back_default.png in Resources */, + D3157A9215B446CB00DD8C4C /* history_details_back_over.png in Resources */, D3119E7215B6A4710005D4A4 /* contacts_back_default.png in Resources */, D3119E7415B6A4710005D4A4 /* contacts_back_over.png in Resources */, ); @@ -3079,10 +3079,10 @@ D3E84F2B15B00F4100420DAC /* dialer_alt_background.png in Resources */, D3E84F3915B011AF00420DAC /* contact_cancel_default.png in Resources */, D3E84F3B15B011AF00420DAC /* contact_cancel_over.png in Resources */, - D3157A8B15B4466F00DD8C4C /* history_add_default.png in Resources */, - D3157A8D15B4466F00DD8C4C /* history_add_over.png in Resources */, - D3157A9115B446CB00DD8C4C /* history_back_default.png in Resources */, - D3157A9315B446CB00DD8C4C /* history_back_over.png in Resources */, + D3157A8B15B4466F00DD8C4C /* history_details_add_default.png in Resources */, + D3157A8D15B4466F00DD8C4C /* history_details_add_over.png in Resources */, + D3157A9115B446CB00DD8C4C /* history_details_back_default.png in Resources */, + D3157A9315B446CB00DD8C4C /* history_details_back_over.png in Resources */, D3119E7315B6A4710005D4A4 /* contacts_back_default.png in Resources */, D3119E7515B6A4710005D4A4 /* contacts_back_over.png in Resources */, ); From c11f21a63f0ed79a26398841a9cd75517980a3cd Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 19 Jul 2012 11:30:08 +0200 Subject: [PATCH 063/397] Fix media encryption choose issue Add security state image --- Classes/LinphoneCoreSettingsStore.m | 4 +- Classes/LinphoneUI/UIStateBar.h | 2 + Classes/LinphoneUI/UIStateBar.m | 64 ++++++++++++++++++++++++++++- Classes/LinphoneUI/UIStateBar.xib | 38 +++++++++++++++-- 4 files changed, 101 insertions(+), 7 deletions(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 7a57b6f42..a26823e82 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -361,9 +361,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); linphone_core_enable_video(lc, enableVideo, enableVideo); NSString *menc = [self stringForKey:@"media_encryption_preference"]; - if (menc && [menc compare:@"SRTP"]) + if (menc && [menc compare:@"SRTP"] == NSOrderedSame) linphone_core_set_media_encryption(lc, LinphoneMediaEncryptionSRTP); - else if (menc && [menc compare:@"ZRTP"]) + else if (menc && [menc compare:@"ZRTP"] == NSOrderedSame) linphone_core_set_media_encryption(lc, LinphoneMediaEncryptionZRTP); else linphone_core_set_media_encryption(lc, LinphoneMediaEncryptionNone); diff --git a/Classes/LinphoneUI/UIStateBar.h b/Classes/LinphoneUI/UIStateBar.h index e9033cb53..76be85a2c 100644 --- a/Classes/LinphoneUI/UIStateBar.h +++ b/Classes/LinphoneUI/UIStateBar.h @@ -23,10 +23,12 @@ UIImageView* registrationStateImage; UILabel* registrationStateLabel; UIImageView* callQualityImage; + UIImageView* callSecurityImage; } @property (nonatomic, retain) IBOutlet UIImageView* registrationStateImage; @property (nonatomic, retain) IBOutlet UILabel* registrationStateLabel; @property (nonatomic, retain) IBOutlet UIImageView* callQualityImage; +@property (nonatomic, retain) IBOutlet UIImageView* callSecurityImage; @end diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index 1b14f74e5..da0d611c3 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -27,14 +27,21 @@ @synthesize registrationStateImage; @synthesize registrationStateLabel; @synthesize callQualityImage; +@synthesize callSecurityImage; NSTimer *callQualityTimer; +NSTimer *callSecurityTimer; #pragma mark - Lifecycle Functions - (id)init { - return [super initWithNibName:@"UIStateBar" bundle:[NSBundle mainBundle]]; + self = [super initWithNibName:@"UIStateBar" bundle:[NSBundle mainBundle]]; + if(self != nil) { + self->callSecurityImage = nil; + self->callQualityImage = nil; + } + return self; } - (void) dealloc { @@ -57,6 +64,13 @@ NSTimer *callQualityTimer; userInfo:nil repeats:YES]; + // Set callQualityTimer + callSecurityTimer = [NSTimer scheduledTimerWithTimeInterval:1 + target:self + selector:@selector(callSecurityUpdate) + userInfo:nil + repeats:YES]; + // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) @@ -65,6 +79,7 @@ NSTimer *callQualityTimer; [callQualityImage setHidden: true]; + [callSecurityImage setHidden: true]; // Update to default state LinphoneProxyConfig* config = NULL; @@ -81,7 +96,14 @@ NSTimer *callQualityTimer; name:@"LinphoneRegistrationUpdate" object:nil]; - [callQualityTimer invalidate]; + if(callQualityTimer != nil) { + [callQualityTimer invalidate]; + callQualityTimer = nil; + } + if(callQualityTimer != nil) { + [callSecurityTimer invalidate]; + callSecurityTimer = nil; + } } @@ -157,6 +179,44 @@ NSTimer *callQualityTimer; #pragma mark - +- (void)callSecurityUpdate { + BOOL pending = false; + BOOL security = true; + + if(![LinphoneManager isLcReady]) { + [callSecurityImage setHidden: true]; + return; + } + const MSList *list = linphone_core_get_calls([LinphoneManager getLc]); + if(list == NULL) { + [callSecurityImage setHidden: true]; + return; + } + while(list != NULL) { + LinphoneCall *call = (LinphoneCall*) list->data; + LinphoneMediaEncryption enc = linphone_call_params_get_media_encryption(linphone_call_get_current_params(call)); + if(enc == LinphoneMediaEncryptionNone) + security = false; + else if(enc == LinphoneMediaEncryptionZRTP) { + if(!linphone_call_get_authentication_token_verified(call)) { + pending = true; + } + } + list = list->next; + } + + if(security) { + if(pending) { + [callSecurityImage setImage:[UIImage imageNamed:@"security_pending.png"]]; + } else { + [callSecurityImage setImage:[UIImage imageNamed:@"security_ok.png"]]; + } + } else { + [callSecurityImage setImage:[UIImage imageNamed:@"security_ko.png"]]; + } + [callSecurityImage setHidden: false]; +} + - (void)callQualityUpdate { UIImage *image = nil; if([LinphoneManager isLcReady]) { diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib index ff171f256..23f0c3c49 100644 --- a/Classes/LinphoneUI/UIStateBar.xib +++ b/Classes/LinphoneUI/UIStateBar.xib @@ -103,11 +103,22 @@ {{219, 3}, {27, 17}} - + _NS:567 NO IBCocoaTouchFramework + + + 292 + {{254, 3}, {27, 17}} + + + _NS:567 + 1 + NO + IBCocoaTouchFramework + {320, 23} @@ -155,6 +166,14 @@ 16 + + + callSecurityImage + + + + 18 + @@ -183,6 +202,7 @@ + @@ -208,7 +228,13 @@ 13 - callQualityIndicatorImage + callQualityImage + + + 17 + + + callSecurityImage @@ -219,6 +245,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -227,7 +254,7 @@ - 16 + 18 @@ -236,6 +263,7 @@ UIViewController UIImageView + UIImageView UIImageView UILabel @@ -244,6 +272,10 @@ callQualityImage UIImageView + + callSecurityImage + UIImageView + registrationStateImage UIImageView From e9189df8863d1ca049dc677c10eec316ee3cd54d Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 20 Jul 2012 09:21:36 +0200 Subject: [PATCH 064/397] Fix strange animation Enable speaker on video call --- Classes/InCallViewController.m | 26 +++++++++---------- Classes/LinphoneManager.m | 12 +++++++++ .../LinphoneUI/UICompositeViewController.m | 16 +++++++++--- 3 files changed, 37 insertions(+), 17 deletions(-) diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 13cb6895a..e83afaf97 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -142,7 +142,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Update on show LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; - [self callUpdate:call state:state]; + [self callUpdate:call state:state animated:FALSE]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [callTableController viewDidAppear:animated]; @@ -184,7 +184,7 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - -- (void)callUpdate:(LinphoneCall *)call state:(LinphoneCallState) state { +- (void)callUpdate:(LinphoneCall *)call state:(LinphoneCallState)state animated:(BOOL)animated { // Update table [callTableView reloadData]; @@ -214,9 +214,9 @@ static UICompositeViewDescription *compositeDescription = nil; { //check video if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { - [self displayVideoCall]; + [self displayVideoCall:animated]; } else { - [self displayTableCall]; + [self displayTableCall:animated]; } break; } @@ -232,7 +232,7 @@ static UICompositeViewDescription *compositeDescription = nil; linphone_core_defer_call_update([LinphoneManager getLc], call); [self displayAskToEnableVideoCall:call]; } else if (linphone_call_params_video_enabled(current) && !linphone_call_params_video_enabled(remote)) { - [self displayTableCall]; + [self displayTableCall:animated]; } break; } @@ -240,13 +240,13 @@ static UICompositeViewDescription *compositeDescription = nil; case LinphoneCallPaused: case LinphoneCallPausedByRemote: { - [self displayTableCall]; + [self displayTableCall:animated]; break; } case LinphoneCallEnd: case LinphoneCallError: { - if(linphone_core_get_calls_nb([LinphoneManager getLc]) <= 1) { + if(linphone_core_get_calls_nb([LinphoneManager getLc]) <= 2) { [callTableController maximizeAll]; } break; @@ -329,7 +329,7 @@ static UICompositeViewDescription *compositeDescription = nil; [videoView setAlpha: 1.0]; [videoView setHidden: FALSE]; - if ([LinphoneManager instance].frontCamId !=nil ) { + if ([LinphoneManager instance].frontCamId !=nil) { // only show camera switch button if we have more than 1 camera [videoCameraSwitch setHidden:FALSE]; } @@ -379,12 +379,12 @@ static UICompositeViewDescription *compositeDescription = nil; [[PhoneMainView instance] fullScreen:false]; } -- (void)displayVideoCall { - [self enableVideoDisplay: TRUE]; +- (void)displayVideoCall:(BOOL)animated { + [self enableVideoDisplay:animated]; } -- (void)displayTableCall { - [self disableVideoDisplay: TRUE]; +- (void)displayTableCall:(BOOL)animated { + [self disableVideoDisplay:animated]; } @@ -405,7 +405,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { - (void)callUpdateEvent: (NSNotification*) notif { LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - [self callUpdate:call state:state]; + [self callUpdate:call state:state animated:TRUE]; } diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 9292eb920..e190be907 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -269,11 +269,23 @@ static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char linphone_call_set_user_pointer(call, data); } + // Disable speaker when no more call if ((state == LinphoneCallEnd || state == LinphoneCallError)) { if(linphone_core_get_calls_nb([LinphoneManager getLc]) == 0) [self enableSpeaker:FALSE]; } + // Enable speaker when video + if(state == LinphoneCallIncomingReceived || + state == LinphoneCallOutgoingInit || + state == LinphoneCallConnected || + state == LinphoneCallStreamsRunning || + state == LinphoneCallUpdated) { + if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { + [self enableSpeaker:TRUE]; + } + } + // Post event NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: [NSValue valueWithPointer:call], @"call", diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index c7e3b4030..990d30c22 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -197,7 +197,7 @@ UICompositeViewDescription *oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; if(description != nil) { - currentViewDescription = description; + currentViewDescription = [description copy]; // Animate only with a previous screen if(oldViewDescription != nil && viewTransition != nil) { @@ -229,12 +229,20 @@ } if(tabBar != nil) { - currentViewDescription.tabBarEnabled = [tabBar boolValue]; + if(currentViewDescription.tabBarEnabled != [tabBar boolValue]) { + currentViewDescription.tabBarEnabled = [tabBar boolValue]; + } else { + tabBar = nil; // No change = No Update + } } if(fullscreen != nil) { - currentViewDescription.fullscreen = [fullscreen boolValue]; - [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription.fullscreen withAnimation:UIStatusBarAnimationSlide ]; + if(currentViewDescription.fullscreen != [fullscreen boolValue]) { + currentViewDescription.fullscreen = [fullscreen boolValue]; + [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription.fullscreen withAnimation:UIStatusBarAnimationSlide]; + } else { + fullscreen = nil; // No change = No Update + } } else { [[UIApplication sharedApplication] setStatusBarHidden:currentViewDescription.fullscreen withAnimation:UIStatusBarAnimationNone]; } From 4143623d4fdf19c2669c53f404c2785eb9cded16 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 20 Jul 2012 15:56:16 +0200 Subject: [PATCH 065/397] Improve settings --- Classes/InCallViewController.m | 9 +- Classes/LinphoneCoreSettingsStore.m | 89 ++++- Classes/LinphoneManager.h | 2 +- Classes/LinphoneManager.m | 19 +- Classes/SettingsViewController.h | 2 +- Classes/SettingsViewController.m | 110 +++-- Classes/SettingsViewController.xib | 13 +- .../IASKAppSettingsViewController.h | 15 +- .../IASKAppSettingsViewController.m | 251 ++++++++---- .../IASKAppSettingsWebViewController.h | 2 +- .../IASKAppSettingsWebViewController.m | 34 +- .../IASKSpecifierValuesViewController.h | 4 +- .../IASKSpecifierValuesViewController.m | 16 + .../Controllers/IASKViewController.h | 0 InAppSettingsKit/Models/IASKSettingsReader.h | 19 +- InAppSettingsKit/Models/IASKSettingsReader.m | 38 +- InAppSettingsKit/Models/IASKSettingsStore.h | 0 InAppSettingsKit/Models/IASKSettingsStore.m | 2 +- .../Models/IASKSettingsStoreFile.h | 0 .../Models/IASKSettingsStoreFile.m | 0 .../Models/IASKSettingsStoreUserDefaults.h | 0 .../Models/IASKSettingsStoreUserDefaults.m | 0 InAppSettingsKit/Models/IASKSpecifier.h | 5 +- InAppSettingsKit/Models/IASKSpecifier.m | 31 ++ .../Views/IASKPSSliderSpecifierViewCell.h | 6 +- .../Views/IASKPSSliderSpecifierViewCell.m | 50 ++- .../Views/IASKPSTextFieldSpecifierViewCell.h | 4 +- .../Views/IASKPSTextFieldSpecifierViewCell.m | 55 ++- .../Views/IASKPSTitleValueSpecifierViewCell.h | 0 .../Views/IASKPSTitleValueSpecifierViewCell.m | 28 +- .../IASKPSToggleSwitchSpecifierViewCell.h | 29 -- .../IASKPSToggleSwitchSpecifierViewCell.m | 62 --- InAppSettingsKit/Views/IASKSlider.h | 0 InAppSettingsKit/Views/IASKSlider.m | 0 InAppSettingsKit/Views/IASKSwitch.h | 0 InAppSettingsKit/Views/IASKSwitch.m | 0 InAppSettingsKit/Views/IASKTextField.h | 0 InAppSettingsKit/Views/IASKTextField.m | 0 InAppSettingsKit/Xibs/IASKAppSettingsView.xib | 222 ---------- .../Xibs/IASKAppSettingsWebView.xib | 378 ------------------ .../Xibs/IASKPSSliderSpecifierViewCell.xib | 251 ------------ .../Xibs/IASKPSTextFieldSpecifierViewCell.xib | 254 ------------ .../IASKPSToggleSwitchSpecifierViewCell.xib | 237 ----------- .../Xibs/IASKSpecifierValuesView.xib | 255 ------------ Settings/InAppSettings.bundle/Advanced.plist | 174 ++++---- Settings/InAppSettings.bundle/Call.plist | 57 +++ Settings/InAppSettings.bundle/Network.plist | 103 +++++ Settings/InAppSettings.bundle/Root.plist | 76 +++- Settings/InAppSettings.bundle/Video.plist | 18 + linphone.xcodeproj/project.pbxproj | 53 --- linphonerc | 2 +- 51 files changed, 864 insertions(+), 2111 deletions(-) mode change 100644 => 100755 InAppSettingsKit/Controllers/IASKAppSettingsViewController.h mode change 100644 => 100755 InAppSettingsKit/Controllers/IASKAppSettingsViewController.m mode change 100644 => 100755 InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h mode change 100644 => 100755 InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m mode change 100644 => 100755 InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h mode change 100644 => 100755 InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m mode change 100644 => 100755 InAppSettingsKit/Controllers/IASKViewController.h mode change 100644 => 100755 InAppSettingsKit/Models/IASKSettingsReader.h mode change 100644 => 100755 InAppSettingsKit/Models/IASKSettingsReader.m mode change 100644 => 100755 InAppSettingsKit/Models/IASKSettingsStore.h mode change 100644 => 100755 InAppSettingsKit/Models/IASKSettingsStore.m mode change 100644 => 100755 InAppSettingsKit/Models/IASKSettingsStoreFile.h mode change 100644 => 100755 InAppSettingsKit/Models/IASKSettingsStoreFile.m mode change 100644 => 100755 InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h mode change 100644 => 100755 InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m mode change 100644 => 100755 InAppSettingsKit/Models/IASKSpecifier.h mode change 100644 => 100755 InAppSettingsKit/Models/IASKSpecifier.m mode change 100644 => 100755 InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h mode change 100644 => 100755 InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m mode change 100644 => 100755 InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h mode change 100644 => 100755 InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m mode change 100644 => 100755 InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h mode change 100644 => 100755 InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m delete mode 100644 InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.h delete mode 100644 InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.m mode change 100644 => 100755 InAppSettingsKit/Views/IASKSlider.h mode change 100644 => 100755 InAppSettingsKit/Views/IASKSlider.m mode change 100644 => 100755 InAppSettingsKit/Views/IASKSwitch.h mode change 100644 => 100755 InAppSettingsKit/Views/IASKSwitch.m mode change 100644 => 100755 InAppSettingsKit/Views/IASKTextField.h mode change 100644 => 100755 InAppSettingsKit/Views/IASKTextField.m delete mode 100644 InAppSettingsKit/Xibs/IASKAppSettingsView.xib delete mode 100644 InAppSettingsKit/Xibs/IASKAppSettingsWebView.xib delete mode 100644 InAppSettingsKit/Xibs/IASKPSSliderSpecifierViewCell.xib delete mode 100644 InAppSettingsKit/Xibs/IASKPSTextFieldSpecifierViewCell.xib delete mode 100644 InAppSettingsKit/Xibs/IASKPSToggleSwitchSpecifierViewCell.xib delete mode 100644 InAppSettingsKit/Xibs/IASKSpecifierValuesView.xib create mode 100644 Settings/InAppSettings.bundle/Call.plist create mode 100644 Settings/InAppSettings.bundle/Network.plist diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index e83afaf97..3a17abc5e 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -326,8 +326,11 @@ static UICompositeViewDescription *compositeDescription = nil; [UIView commitAnimations]; } - [videoView setAlpha: 1.0]; - [videoView setHidden: FALSE]; + if([[[LinphoneManager instance] settingsStore] boolForKey:@"self_video_preference"]) { + [videoPreview setHidden:FALSE]; + } else { + [videoPreview setHidden:TRUE]; + } if ([LinphoneManager instance].frontCamId !=nil) { // only show camera switch button if we have more than 1 camera @@ -343,7 +346,7 @@ static UICompositeViewDescription *compositeDescription = nil; #endif // [self batteryLevelChanged:nil]; - videoWaitingForFirstImage.hidden = NO; + [videoWaitingForFirstImage setHidden: NO]; [videoWaitingForFirstImage startAnimating]; LinphoneCall *call = linphone_core_get_current_call([LinphoneManager getLc]); diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index a26823e82..68b3a7e35 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -102,6 +102,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [self setString: linphone_address_get_username(addr) forKey:@"username_preference"]; [self setString: linphone_address_get_domain(addr) forKey:@"domain_preference"]; + [self setInteger: linphone_proxy_config_get_expires(cfg) forKey:@"expire_preference"]; if (strcmp(linphone_address_get_domain(addr),linphone_address_get_domain(proxy_addr))!=0 || port!=NULL){ char tmp[256]={0}; @@ -117,14 +118,32 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } } + { + LinphoneAddress *parsed=linphone_core_get_primary_contact_parsed(lc); + if(parsed != NULL) { + [self setString: linphone_address_get_display_name(parsed) forKey:@"primary_displayname_preference"]; + [self setString: linphone_address_get_username(parsed) forKey:@"primary_username_preference"]; + } + } { LCSipTransports tp; - const char *tname="udp"; + const char *tname = "udp"; + int port = 5060; linphone_core_get_sip_transports(lc, &tp); - if (tp.udp_port>0) tname="udp"; - else if (tp.tcp_port>0) tname="tcp"; - else if (tp.tls_port>0) tname="tls"; - [self setString: tname forKey:@"transport_preference"]; + if (tp.udp_port>0) { + tname = "udp"; + port = tp.udp_port; + } else if (tp.tcp_port>0) { + tname = "tcp"; + port = tp.tcp_port; + } else if (tp.tls_port>0) { + tname = "tls"; + port = tp.tls_port; + } + [self setString:tname forKey:@"transport_preference"]; + [self setInteger:port forKey:@"port_preference"]; + + [self setInteger:lp_config_get_int(linphone_core_get_config(lc),"app","random_port_preference", 1) forKey:@"random_port_preference"]; } { LinphoneAuthInfo *ai; @@ -163,10 +182,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","wifi_only_preference", 0) forKey:@"wifi_only_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","backgroundmode_preference", TRUE) forKey:@"backgroundmode_preference"]; /*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/ - BOOL start_at_boot; - if ([[NSUserDefaults standardUserDefaults] objectForKey:@"start_at_boot_preference"]==Nil) - start_at_boot=TRUE; - else start_at_boot=[[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]; + BOOL start_at_boot = TRUE; + if ([[NSUserDefaults standardUserDefaults] objectForKey:@"start_at_boot_preference"]!=Nil) + start_at_boot=[[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]; [self setBool: start_at_boot forKey:@"start_at_boot_preference"]; if (linphone_core_tunnel_available()){ @@ -180,8 +198,15 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); const LinphoneVideoPolicy *pol; [self setBool: linphone_core_video_enabled(lc) forKey:@"enable_video_preference"]; pol=linphone_core_get_video_policy(lc); - [self setBool:(pol->automatically_accept && pol->automatically_initiate) forKey:@"start_video_preference"]; + [self setBool:(pol->automatically_initiate) forKey:@"start_video_preference"]; + [self setBool:(pol->automatically_accept) forKey:@"accept_video_preference"]; + [self setBool:lp_config_get_int(linphone_core_get_config(lc),"app","self_video_preference", 1) forKey:@"self_video_preference"]; } + { + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","sipinfo_dtmf_preference", 0) forKey:@"sipinfo_dtmf_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","rfc_dtmf_preference", 1) forKey:@"rfc_dtmf_preference"]; + } + if (lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference",0)) linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler); @@ -226,7 +251,11 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } NSString* transport = [self stringForKey:@"transport_preference"]; - + int port_preference = [self integerForKey:@"port_preference"]; + BOOL random_port_preference = [self boolForKey:@"random_port_preference"]; + if(random_port_preference) { + port_preference = (0xDFFF&random())+1024; + } LCSipTransports transportValue={0}; if (transport!=nil) { if (linphone_core_get_sip_transports(lc, &transportValue)) { @@ -234,15 +263,15 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } // Only one port can be set at one time, the others's value is 0 if ([transport isEqualToString:@"tcp"]) { - if (transportValue.tcp_port == 0) transportValue.tcp_port=transportValue.udp_port + transportValue.tls_port; + transportValue.tcp_port=port_preference; transportValue.udp_port=0; transportValue.tls_port=0; } else if ([transport isEqualToString:@"udp"]){ - if (transportValue.udp_port == 0) transportValue.udp_port=transportValue.tcp_port + transportValue.tls_port; + transportValue.udp_port=port_preference; transportValue.tcp_port=0; transportValue.tls_port=0; } else if ([transport isEqualToString:@"tls"]){ - if (transportValue.tls_port == 0) transportValue.tls_port=transportValue.udp_port + transportValue.tcp_port; + transportValue.tls_port=port_preference; transportValue.tcp_port=0; transportValue.udp_port=0; } else { @@ -252,12 +281,12 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [LinphoneLogger logc:LinphoneLoggerError format:"cannot set transport"]; } } + lp_config_set_int(linphone_core_get_config(lc),"app","random_port_preference",random_port_preference); //configure sip account //mandatory parameters - NSString* username = [self stringForKey:@"username_preference"]; NSString* domain = [self stringForKey:@"domain_preference"]; NSString* accountPassword = [self stringForKey:@"password_preference"]; @@ -305,7 +334,10 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); if (isWifiOnly && lLinphoneMgr.connectivity == wwan) { linphone_proxy_config_expires(proxyCfg, 0); } else { - linphone_proxy_config_expires(proxyCfg, lLinphoneMgr.defaultExpires); + int expire = [self integerForKey:@"expire_preference"]; + if(expire < lLinphoneMgr.defaultExpires) + expire = lLinphoneMgr.defaultExpires; + linphone_proxy_config_expires(proxyCfg, expire); } if (isOutboundProxy) @@ -332,9 +364,12 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); account_changed=[self valueChangedForKey:@"username_preference"] || [self valueChangedForKey:@"password_preference"] || [self valueChangedForKey:@"domain_preference"] + || [self valueChangedForKey:@"expire_preference"] || [self valueChangedForKey:@"proxy_preference"] || [self valueChangedForKey:@"outbound_proxy_preference"] || [self valueChangedForKey:@"transport_preference"] + || [self valueChangedForKey:@"port_preference"] + || [self valueChangedForKey:@"random_port_preference"] || [self valueChangedForKey:@"prefix_preference"] || [self valueChangedForKey:@"substitute_+_by_00_preference"]; @@ -357,6 +392,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); linphone_core_enable_payload_type(lc,pt,[self boolForKey: pref]); } + linphone_core_set_use_info_for_dtmf(lc, [self boolForKey:@"sipinfo_dtmf_preference"]); + linphone_core_set_use_rfc2833_for_dtmf(lc, [self boolForKey:@"rfc_dtmf_preference"]); + bool enableVideo = [self boolForKey:@"enable_video_preference"]; linphone_core_enable_video(lc, enableVideo, enableVideo); @@ -377,9 +415,23 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } LinphoneVideoPolicy policy; - policy.automatically_accept = [self boolForKey:@"start_video_preference"]; + policy.automatically_accept = [self boolForKey:@"accept_video_preference"]; policy.automatically_initiate = [self boolForKey:@"start_video_preference"]; linphone_core_set_video_policy(lc, &policy); + lp_config_set_int(linphone_core_get_config(lc),"app","self_video_preference", [self boolForKey:@"self_video_preference"]); + + + // Primary contact + NSString* displayname = [self stringForKey:@"primary_displayname_preference"]; + NSString* username = [self stringForKey:@"primary_username_preference"]; + LinphoneAddress *parsed=linphone_core_get_primary_contact_parsed(lc); + if(parsed != NULL) { + linphone_address_set_display_name(parsed,[displayname cStringUsingEncoding:[NSString defaultCStringEncoding]]); + linphone_address_set_username(parsed,[username cStringUsingEncoding:[NSString defaultCStringEncoding]]); + char *contact = linphone_address_as_string(parsed); + linphone_core_set_primary_contact(lc, contact); + } + UIDevice* device = [UIDevice currentDevice]; bool backgroundSupported = false; @@ -405,6 +457,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); BOOL start_at_boot = [self boolForKey:@"start_at_boot_preference"]; [[NSUserDefaults standardUserDefaults] setBool: start_at_boot forKey:@"start_at_boot_preference"]; + // Force synchronize + [[NSUserDefaults standardUserDefaults] synchronize]; + [changedDict release]; changedDict = [[NSMutableDictionary alloc] init]; return YES; diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 1f3c456ae..6dcb8fe49 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -81,7 +81,7 @@ typedef struct _LinphoneCallAppData { + (BOOL)runningOnIpad; + (BOOL)isNotIphone3G; + (NSString *)getPreferenceForCodec: (const char*) name withRate: (int) rate; -+ (BOOL)codecIsSupported:(NSString *) prefName; ++ (NSSet *)unsupportedCodecs; - (void)startLibLinphone; - (void)destroyLibLinphone; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index e190be907..0ff853b5b 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -100,14 +100,14 @@ struct codec_name_pref_table codec_pref_table[]={ return Nil; } -+ (BOOL)codecIsSupported:(NSString *) prefName{ - int i; - for(i=0;codec_pref_table[i].name!=NULL;++i){ - if ([prefName compare:codec_pref_table[i].prefname]==0){ - return linphone_core_find_payload_type([LinphoneManager getLc],codec_pref_table[i].name, codec_pref_table[i].rate)!=NULL; ++ (NSSet *)unsupportedCodecs { + NSMutableSet *set = [NSMutableSet set]; + for(int i=0;codec_pref_table[i].name!=NULL;++i) { + if(linphone_core_find_payload_type([LinphoneManager getLc],codec_pref_table[i].name, codec_pref_table[i].rate) == NULL) { + [set addObject:codec_pref_table[i].prefname]; } } - return TRUE; + return set; } + (BOOL)runningOnIpad { @@ -151,6 +151,7 @@ struct codec_name_pref_table codec_pref_table[]={ fastAddressBook = [[FastAddressBook alloc] init]; database = NULL; theLinphoneManager = self; + settingsStore = nil; self.defaultExpires = 600; [self openDatabase]; } @@ -530,7 +531,7 @@ static LinphoneCoreVTable linphonec_vtable = { , [confiFileName cStringUsingEncoding:[NSString defaultCStringEncoding]] , [factoryConfig cStringUsingEncoding:[NSString defaultCStringEncoding]] ,self); - + linphone_core_set_root_ca(theLinphoneCore, lRootCa); // Set audio assets const char* lRing = [[myBundle pathForResource:@"oldphone-mono"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; @@ -635,6 +636,10 @@ static LinphoneCoreVTable linphonec_vtable = { } + if(settingsStore != nil) { + [settingsStore release]; + } + } - (BOOL)enterBackgroundMode { diff --git a/Classes/SettingsViewController.h b/Classes/SettingsViewController.h index 7bc3df627..b85da7838 100644 --- a/Classes/SettingsViewController.h +++ b/Classes/SettingsViewController.h @@ -22,7 +22,7 @@ #import "UICompositeViewController.h" #import "IASKAppSettingsViewController.h" -@interface SettingsViewController: UIViewController { +@interface SettingsViewController: UIViewController { IASKAppSettingsViewController *settingsController; UINavigationController *navigationController; } diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 29690c4e4..c2d268efb 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -32,6 +32,13 @@ } +- (void)dealloc { + // Remove all observer + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [super dealloc]; +} + #pragma mark - UICompositeViewDelegate Functions static UICompositeViewDescription *compositeDescription = nil; @@ -67,9 +74,9 @@ static UICompositeViewDescription *compositeDescription = nil; [super viewDidLoad]; settingsController.delegate = self; - settingsController.settingsReaderDelegate = self; - settingsController.settingsStore=[[LinphoneManager instance] settingsStore]; settingsController.showCreditsFooter = FALSE; + settingsController.hiddenKeys = [self findHiddenKeys]; + settingsController.settingsStore = [[LinphoneManager instance] settingsStore]; navigationController.view.frame = self.view.frame; [SettingsViewController removeBackground:navigationController.view]; @@ -82,6 +89,11 @@ static UICompositeViewDescription *compositeDescription = nil; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [settingsController viewWillDisappear:animated]; } + [settingsController dismiss:self]; + // Set observer + [[NSNotificationCenter defaultCenter] removeObserver:self + name:kIASKAppSettingChanged + object:nil]; } - (void)viewWillAppear:(BOOL)animated { @@ -89,6 +101,11 @@ static UICompositeViewDescription *compositeDescription = nil; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [settingsController viewWillAppear:animated]; } + // Set observer + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(appSettingChanged:) + name:kIASKAppSettingChanged + object:nil]; } - (void)viewDidAppear:(BOOL)animated { @@ -106,48 +123,63 @@ static UICompositeViewDescription *compositeDescription = nil; } -#pragma mark - IASKSettingsReaderFilterDelegate Functions +#pragma mark - Event Functions -- (NSDictionary*)filterPreferenceSpecifier:(NSDictionary *)specifier { - if (![LinphoneManager isLcReady]) { - // LinphoneCore not ready: do not filter - return specifier; - } - NSString* identifier = [specifier objectForKey:@"Identifier"]; - if (identifier == nil) { - identifier = [specifier objectForKey:@"Key"]; - } - if (!identifier) { - // child pane maybe - NSString* title = [specifier objectForKey:@"Title"]; - if ([title isEqualToString:@"Video"]) { - if (!linphone_core_video_supported([LinphoneManager getLc])) - return nil; +- (void)appSettingChanged:(NSNotification*) notif { + if([@"enable_video_preference" compare: notif.object] == NSOrderedSame) { + BOOL enable = [[notif.userInfo objectForKey:@"enable_video_preference"] boolValue]; + NSMutableSet *hiddenKeys = [NSMutableSet setWithSet:[settingsController hiddenKeys]]; + if(!enable) { + [hiddenKeys addObject:@"video_menu"]; + } else { + [hiddenKeys removeObject:@"video_menu"]; } - return specifier; - } - // NSLog(@"Specifier received: %@", identifier); - if ([identifier isEqualToString:@"silk_24k_preference"]) { - if (![LinphoneManager isNotIphone3G]) - return nil; - } - if ([identifier isEqualToString:@"backgroundmode_preference"]) { - UIDevice* device = [UIDevice currentDevice]; - if ([device respondsToSelector:@selector(isMultitaskingSupported)]) { - if ([device isMultitaskingSupported]) { - return specifier; - } + [settingsController setHiddenKeys:hiddenKeys animated:TRUE]; + }else if([@"random_port_preference" compare: notif.object] == NSOrderedSame) { + BOOL enable = [[notif.userInfo objectForKey:@"random_port_preference"] boolValue]; + NSMutableSet *hiddenKeys = [NSMutableSet setWithSet:[settingsController hiddenKeys]]; + if(enable) { + [hiddenKeys addObject:@"port_preference"]; + } else { + [hiddenKeys removeObject:@"port_preference"]; } - // hide setting if bg mode not supported - return nil; + [settingsController setHiddenKeys:hiddenKeys animated:TRUE]; } - if ([identifier isEqualToString:@"enable_first_login_view_preference"]) { - // hide first login view preference - return nil; +} + + +#pragma mark - + +- (NSSet*)findHiddenKeys { + if(![LinphoneManager isLcReady]) { + [LinphoneLogger log:LinphoneLoggerWarning format:@"Can't filter settings: Linphone core not read"]; } - if (![LinphoneManager codecIsSupported:identifier]) - return Nil; - return specifier; + NSMutableSet *hiddenKeys = [NSMutableSet set]; + + if (!linphone_core_video_supported([LinphoneManager getLc])) + [hiddenKeys addObject:@"video_menu"]; + + if (![LinphoneManager isNotIphone3G]) + [hiddenKeys addObject:@"silk_24k_preference"]; + + UIDevice* device = [UIDevice currentDevice]; + if (![device respondsToSelector:@selector(isMultitaskingSupported)] || ![device isMultitaskingSupported]) { + [hiddenKeys addObject:@"backgroundmode_preference"]; + } + + [hiddenKeys addObject:@"enable_first_login_view_preference"]; + + if (!linphone_core_video_enabled([LinphoneManager getLc])) { + [hiddenKeys addObject:@"video_menu"]; + } + + [hiddenKeys addObjectsFromArray:[[LinphoneManager unsupportedCodecs] allObjects]]; + + if([[[[LinphoneManager instance] settingsStore] objectForKey:@"random_port_preference"] boolValue]) { + [hiddenKeys addObject:@"port_preference"]; + } + + return hiddenKeys; } diff --git a/Classes/SettingsViewController.xib b/Classes/SettingsViewController.xib index bdc898967..4d1cbfb30 100644 --- a/Classes/SettingsViewController.xib +++ b/Classes/SettingsViewController.xib @@ -40,6 +40,7 @@ {320, 460} + _NS:9 3 @@ -75,7 +76,6 @@ IBCocoaTouchFramework - IASKAppSettingsView 1 @@ -195,17 +195,6 @@ IASKAppSettingsViewController UITableViewController - - dismiss: - id - - - dismiss: - - dismiss: - id - - delegate id diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h old mode 100644 new mode 100755 index f98f3b494..780a084f1 --- a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h +++ b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h @@ -17,7 +17,6 @@ #import #import -#import "IASKSettingsReader.h" #import "IASKSettingsStore.h" #import "IASKViewController.h" @@ -54,18 +53,18 @@ error:(NSError*)error; #pragma mark - respond to button taps -- (void)settingsViewController:(IASKAppSettingsViewController*)sender buttonTappedForKey:(NSString*)key; +- (void)settingsViewController:(IASKAppSettingsViewController*)sender buttonTappedForKey:(NSString*)key __attribute__((deprecated)); // use the method below with specifier instead +- (void)settingsViewController:(IASKAppSettingsViewController*)sender buttonTappedForSpecifier:(IASKSpecifier*)specifier; - (void)settingsViewController:(IASKAppSettingsViewController*)sender tableView:(UITableView *)tableView didSelectCustomViewSpecifier:(IASKSpecifier*)specifier; @end -@interface IASKAppSettingsViewController : UITableViewController { +@interface IASKAppSettingsViewController : UITableViewController { id _delegate; NSMutableArray *_viewList; IASKSettingsReader *_settingsReader; - id _settingsReaderDelegate; id _settingsStore; NSString *_file; @@ -73,15 +72,17 @@ BOOL _showCreditsFooter; BOOL _showDoneButton; + + NSSet *_hiddenKeys; } @property (nonatomic, assign) IBOutlet id delegate; @property (nonatomic, copy) NSString *file; -@property (nonatomic, assign) id settingsReaderDelegate; @property (nonatomic, assign) BOOL showCreditsFooter; @property (nonatomic, assign) BOOL showDoneButton; +@property (nonatomic, retain) NSSet *hiddenKeys; - (void)synchronizeSettings; -- (IBAction)dismiss:(id)sender; - +- (void)dismiss:(id)sender; +- (void)setHiddenKeys:(NSSet*)hiddenKeys animated:(BOOL)animated; @end diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m old mode 100644 new mode 100755 index 557c33730..a6c143136 --- a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m +++ b/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m @@ -18,7 +18,6 @@ #import "IASKAppSettingsViewController.h" #import "IASKSettingsReader.h" #import "IASKSettingsStoreUserDefaults.h" -#import "IASKPSToggleSwitchSpecifierViewCell.h" #import "IASKPSSliderSpecifierViewCell.h" #import "IASKPSTextFieldSpecifierViewCell.h" #import "IASKPSTitleValueSpecifierViewCell.h" @@ -45,8 +44,6 @@ CGRect IASKCGRectSwap(CGRect rect); @property (nonatomic, retain) NSMutableArray *viewList; @property (nonatomic, retain) id currentFirstResponder; -- (void) setup; - - (void)_textChanged:(id)sender; - (void)synchronizeSettings; - (void)userDefaultsDidChange; @@ -63,12 +60,12 @@ CGRect IASKCGRectSwap(CGRect rect); @synthesize showCreditsFooter = _showCreditsFooter; @synthesize showDoneButton = _showDoneButton; @synthesize settingsStore = _settingsStore; -@synthesize settingsReaderDelegate = _settingsReaderDelegate; +@synthesize hiddenKeys = _hiddenKeys; #pragma mark accessors - (IASKSettingsReader*)settingsReader { if (!_settingsReader) { - _settingsReader = [[IASKSettingsReader alloc] initWithFile:self.file andDelegate:self.settingsReaderDelegate]; + _settingsReader = [[IASKSettingsReader alloc] initWithFile:self.file]; } return _settingsReader; } @@ -96,6 +93,7 @@ CGRect IASKCGRectSwap(CGRect rect); self.tableView.contentOffset = CGPointMake(0, 0); self.settingsReader = nil; // automatically initializes itself + [_hiddenKeys release], _hiddenKeys = nil; [self.tableView reloadData]; } @@ -109,32 +107,40 @@ CGRect IASKCGRectSwap(CGRect rect); #pragma mark standard view controller methods - (id)init { - return [self initWithNibName:@"IASKAppSettingsView" bundle:nil]; + return [self initWithStyle:UITableViewStyleGrouped]; } -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { - // If set to YES, will add a DONE button at the right of the navigation bar - _showDoneButton = YES; - - [self setup]; +- (id)initWithStyle:(UITableViewStyle)style +{ + if (style != UITableViewStyleGrouped) { + NSLog(@"only UITableViewStyleGrouped style is supported, forcing it."); + } + self = [super initWithStyle:UITableViewStyleGrouped]; + if (self) { + self.tableView.delegate = self; + self.tableView.dataSource = self; + _showDoneButton = YES; + // If set to YES, will display credits for InAppSettingsKit creators + _showCreditsFooter = YES; } return self; } -- (void)awakeFromNib { - // If set to YES, will add a DONE button at the right of the navigation bar - // if loaded via NIB, it's likely we sit in a TabBar- or NavigationController - // and thus don't need the Done button - _showDoneButton = NO; - - [self setup]; +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil +{ + if (!nibNameOrNil) { + return [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + } + NSLog (@"%@ is now deprecated, we are moving away from nibs.", NSStringFromSelector(_cmd)); + return [self initWithStyle:UITableViewStyleGrouped]; } -//common (NIB & code based) initialization -- (void) setup { - // If set to YES, will display credits for InAppSettingsKit creators - _showCreditsFooter = YES; +- (id)initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + if (self) { + [self initWithStyle:UITableViewStyleGrouped]; + } + return self; } - (NSMutableArray *)viewList { @@ -151,6 +157,10 @@ CGRect IASKCGRectSwap(CGRect rect); if ([self isPad]) { self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched; } + UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapToEndEdit:)]; + tapGesture.cancelsTouchesInView = NO; + [self.tableView addGestureRecognizer:tapGesture]; + [tapGesture release]; } - (void)viewDidUnload { @@ -174,7 +184,6 @@ CGRect IASKCGRectSwap(CGRect rect); } self.navigationItem.rightBarButtonItem = nil; - self.navigationController.delegate = self; if (_showDoneButton) { UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self @@ -217,11 +226,9 @@ CGRect IASKCGRectSwap(CGRect rect); - (void)viewDidDisappear:(BOOL)animated { [[NSNotificationCenter defaultCenter] removeObserver:self]; - if (!self.navigationController.delegate) { - // hide the keyboard when we're popping from the navigation controller - [self.currentFirstResponder resignFirstResponder]; - } - [self dismiss:nil]; + // hide the keyboard + [self.currentFirstResponder resignFirstResponder]; + [super viewDidDisappear:animated]; } @@ -236,12 +243,95 @@ CGRect IASKCGRectSwap(CGRect rect); // Release any cached data, images, etc that aren't in use. } -- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { - if (![viewController isKindOfClass:[IASKAppSettingsViewController class]] && ![viewController isKindOfClass:[IASKSpecifierValuesViewController class]]) { - [self dismiss:nil]; - } +- (void)setHiddenKeys:(NSSet *)theHiddenKeys { + [self setHiddenKeys:theHiddenKeys animated:NO]; } + +- (void)setHiddenKeys:(NSSet*)theHiddenKeys animated:(BOOL)animated { + if (_hiddenKeys != theHiddenKeys) { + NSSet *oldHiddenKeys = _hiddenKeys; + _hiddenKeys = [theHiddenKeys retain]; + + if (animated) { + [self.tableView beginUpdates]; + + NSMutableSet *showKeys = [NSMutableSet setWithSet:oldHiddenKeys]; + [showKeys minusSet:theHiddenKeys]; + + NSMutableSet *hideKeys = [NSMutableSet setWithSet:theHiddenKeys]; + [hideKeys minusSet:oldHiddenKeys]; + + // calculate rows to be deleted + NSMutableArray *hideIndexPaths = [NSMutableArray array]; + for (NSString *key in hideKeys) { + NSIndexPath *indexPath = [self.settingsReader indexPathForKey:key]; + if (indexPath) { + [hideIndexPaths addObject:indexPath]; + } + } + + // calculate sections to be deleted + NSMutableIndexSet *hideSections = [NSMutableIndexSet indexSet]; + for (NSInteger section = 0; section < [self numberOfSectionsInTableView:self.tableView ]; section++) { + NSUInteger rowsInSection = 0; + for (NSIndexPath *indexPath in hideIndexPaths) { + if (indexPath.section == section) { + rowsInSection++; + } + } + if (rowsInSection >= [self.settingsReader numberOfRowsForSection:section]) { + [hideSections addIndex:section]; + } + } + + // set the datasource + self.settingsReader.hiddenKeys = theHiddenKeys; + + + // calculate rows to be inserted + NSMutableArray *showIndexPaths = [NSMutableArray array]; + for (NSString *key in showKeys) { + NSIndexPath *indexPath = [self.settingsReader indexPathForKey:key]; + if (indexPath) { + [showIndexPaths addObject:indexPath]; + } + } + + // calculate sections to be inserted + NSMutableIndexSet *showSections = [NSMutableIndexSet indexSet]; + for (NSInteger section = 0; section < [self.settingsReader numberOfSections]; section++) { + NSUInteger rowsInSection = 0; + for (NSIndexPath *indexPath in showIndexPaths) { + if (indexPath.section == section) { + rowsInSection++; + } + } + if (rowsInSection >= [self.settingsReader numberOfRowsForSection:section]) { + [showSections addIndex:section]; + } + } + + UITableViewRowAnimation animation = animated ? UITableViewRowAnimationTop : UITableViewRowAnimationNone; + [self.tableView deleteSections:hideSections withRowAnimation:animation]; + [self.tableView deleteRowsAtIndexPaths:hideIndexPaths withRowAnimation:animation]; + [self.tableView insertSections:showSections withRowAnimation:animation]; + [self.tableView insertRowsAtIndexPaths:showIndexPaths withRowAnimation:animation]; + [self.tableView endUpdates]; + } else { + self.settingsReader.hiddenKeys = theHiddenKeys; + [self.tableView reloadData]; + } + [oldHiddenKeys release]; + + IASKAppSettingsViewController *targetViewController = [[self.viewList objectAtIndex:kIASKSpecifierChildViewControllerIndex] objectForKey:@"viewController"]; + if(targetViewController != nil) { + [targetViewController setHiddenKeys:theHiddenKeys animated:animated]; + } + } +} + + - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; @@ -250,6 +340,7 @@ CGRect IASKCGRectSwap(CGRect rect); [_currentFirstResponder release], _currentFirstResponder = nil; [_settingsReader release], _settingsReader = nil; [_settingsStore release], _settingsStore = nil; + [_hiddenKeys release], _hiddenKeys = nil; _delegate = nil; @@ -260,20 +351,16 @@ CGRect IASKCGRectSwap(CGRect rect); #pragma mark - #pragma mark Actions -- (IBAction)dismiss:(id)sender { +- (void)dismiss:(id)sender { [self.settingsStore synchronize]; - self.navigationController.delegate = nil; if (self.delegate && [self.delegate conformsToProtocol:@protocol(IASKSettingsDelegate)]) { [self.delegate settingsViewControllerDidEnd:self]; } - // reload - [self.settingsReader initWithFile:self.file andDelegate:self.settingsReaderDelegate]; - [self.tableView reloadData]; } - (void)toggledValue:(id)sender { - IASKSwitch *toggle = (IASKSwitch*)sender; + IASKSwitch *toggle = [[(IASKSwitch*)sender retain] autorelease]; IASKSpecifier *spec = [_settingsReader specifierForKey:[toggle key]]; if ([toggle isOn]) { @@ -299,7 +386,7 @@ CGRect IASKCGRectSwap(CGRect rect); } - (void)sliderChangedValue:(id)sender { - IASKSlider *slider = (IASKSlider*)sender; + IASKSlider *slider = [[(IASKSlider*)sender retain] autorelease]; [self.settingsStore setFloat:[slider value] forKey:[slider key]]; [[NSNotificationCenter defaultCenter] postNotificationName:kIASKAppSettingChanged object:[slider key] @@ -385,37 +472,35 @@ CGRect IASKCGRectSwap(CGRect rect); } } -- (UITableViewCell*)dequeueReusableCellWithIdentifier:(NSString*)identifier { +- (UITableViewCell*)newCellForIdentifier:(NSString*)identifier { UITableViewCell *cell = nil; if ([identifier isEqualToString:kIASKPSToggleSwitchSpecifier]) { - cell = [[[NSBundle mainBundle] loadNibNamed:@"IASKPSToggleSwitchSpecifierViewCell" - owner:self - options:nil] objectAtIndex:0]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kIASKPSToggleSwitchSpecifier]; + cell.accessoryView = [[[IASKSwitch alloc] initWithFrame:CGRectMake(0, 0, 79, 27)] autorelease]; + [((IASKSwitch*)cell.accessoryView) addTarget:self action:@selector(toggledValue:) forControlEvents:UIControlEventValueChanged]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; } else if ([identifier isEqualToString:kIASKPSMultiValueSpecifier] || [identifier isEqualToString:kIASKPSTitleValueSpecifier]) { - cell = [[[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease]; + cell = [[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier]; cell.accessoryType = [identifier isEqualToString:kIASKPSMultiValueSpecifier] ? UITableViewCellAccessoryDisclosureIndicator : UITableViewCellAccessoryNone; } else if ([identifier isEqualToString:kIASKPSTextFieldSpecifier]) { - cell = (IASKPSTextFieldSpecifierViewCell*) [[[NSBundle mainBundle] loadNibNamed:@"IASKPSTextFieldSpecifierViewCell" - owner:self - options:nil] objectAtIndex:0]; + cell = [[IASKPSTextFieldSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kIASKPSTextFieldSpecifier]; + [((IASKPSTextFieldSpecifierViewCell*)cell).textField addTarget:self action:@selector(_textChanged:) forControlEvents:UIControlEventEditingChanged]; } else if ([identifier isEqualToString:kIASKPSSliderSpecifier]) { - cell = (IASKPSSliderSpecifierViewCell*) [[[NSBundle mainBundle] loadNibNamed:@"IASKPSSliderSpecifierViewCell" - owner:self - options:nil] objectAtIndex:0]; + cell = [[IASKPSSliderSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kIASKPSSliderSpecifier]; } else if ([identifier isEqualToString:kIASKPSChildPaneSpecifier]) { - cell = [[[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease]; + cell = [[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - } else if ([identifier isEqualToString:kIASKButtonSpecifier]) { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease]; } else if ([identifier isEqualToString:kIASKMailComposeSpecifier]) { - cell = [[[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier] autorelease]; + cell = [[IASKPSTitleValueSpecifierViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:identifier]; [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator]; } else { - cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease]; + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier]; } + cell.textLabel.minimumFontSize = kIASKMinimumFontSize; + cell.detailTextLabel.minimumFontSize = kIASKMinimumFontSize; return cell; } @@ -427,10 +512,13 @@ CGRect IASKCGRectSwap(CGRect rect); return cell; } - UITableViewCell *cell = [self dequeueReusableCellWithIdentifier:specifier.type]; + UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:specifier.type]; + if(nil == cell) { + cell = [[self newCellForIdentifier:specifier.type] autorelease]; + } if ([specifier.type isEqualToString:kIASKPSToggleSwitchSpecifier]) { - ((IASKPSToggleSwitchSpecifierViewCell*)cell).label.text = specifier.title; + cell.textLabel.text = specifier.title; id currentValue = [self.settingsStore objectForKey:specifier.key]; BOOL toggleState; @@ -445,10 +533,9 @@ CGRect IASKCGRectSwap(CGRect rect); } else { toggleState = specifier.defaultBoolValue; } - ((IASKPSToggleSwitchSpecifierViewCell*)cell).toggle.on = toggleState; - - [((IASKPSToggleSwitchSpecifierViewCell*)cell).toggle addTarget:self action:@selector(toggledValue:) forControlEvents:UIControlEventValueChanged]; - ((IASKPSToggleSwitchSpecifierViewCell*)cell).toggle.key = specifier.key; + IASKSwitch *toggle = (IASKSwitch*)cell.accessoryView; + toggle.on = toggleState; + toggle.key = specifier.key; } else if ([specifier.type isEqualToString:kIASKPSMultiValueSpecifier]) { cell.textLabel.text = specifier.title; @@ -470,7 +557,7 @@ CGRect IASKCGRectSwap(CGRect rect); cell.userInteractionEnabled = NO; } else if ([specifier.type isEqualToString:kIASKPSTextFieldSpecifier]) { - ((IASKPSTextFieldSpecifierViewCell*)cell).label.text = specifier.title; + cell.textLabel.text = specifier.title; NSString *textValue = [self.settingsStore objectForKey:specifier.key] != nil ? [self.settingsStore objectForKey:specifier.key] : specifier.defaultStringValue; if (textValue && ![textValue isMemberOfClass:[NSString class]]) { @@ -483,13 +570,13 @@ CGRect IASKCGRectSwap(CGRect rect); textField.secureTextEntry = [specifier isSecure]; textField.keyboardType = specifier.keyboardType; textField.autocapitalizationType = specifier.autocapitalizationType; - [textField addTarget:self action:@selector(_textChanged:) forControlEvents:UIControlEventEditingChanged]; if([specifier isSecure]){ textField.autocorrectionType = UITextAutocorrectionTypeNo; } else { textField.autocorrectionType = specifier.autoCorrectionType; } - [cell setNeedsLayout]; + textField.textAlignment = specifier.textAlignment; + textField.adjustsFontSizeToFitWidth = specifier.adjustsFontSizeToFitWidth; } else if ([specifier.type isEqualToString:kIASKPSSliderSpecifier]) { if (specifier.minimumValueImage.length > 0) { @@ -516,11 +603,20 @@ CGRect IASKCGRectSwap(CGRect rect); } else if ([specifier.type isEqualToString:kIASKButtonSpecifier]) { NSString *value = [self.settingsStore objectForKey:specifier.key]; cell.textLabel.text = [value isKindOfClass:[NSString class]] ? [self.settingsReader titleForStringId:value] : specifier.title; - cell.textLabel.textAlignment = UITextAlignmentCenter; } else { cell.textLabel.text = specifier.title; } - return cell; + + cell.imageView.image = specifier.cellImage; + cell.imageView.highlightedImage = specifier.highlightedCellImage; + + if (![specifier.type isEqualToString:kIASKPSMultiValueSpecifier] && ![specifier.type isEqualToString:kIASKPSTitleValueSpecifier] && ![specifier.type isEqualToString:kIASKPSTextFieldSpecifier]) { + cell.textLabel.textAlignment = specifier.textAlignment; + } + cell.detailTextLabel.textAlignment = specifier.textAlignment; + cell.textLabel.adjustsFontSizeToFitWidth = specifier.adjustsFontSizeToFitWidth; + cell.detailTextLabel.adjustsFontSizeToFitWidth = specifier.adjustsFontSizeToFitWidth; + return cell; } - (NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath { @@ -554,7 +650,7 @@ CGRect IASKCGRectSwap(CGRect rect); NSMutableDictionary *newItemDict = [NSMutableDictionary dictionaryWithCapacity:3]; [newItemDict addEntriesFromDictionary: [self.viewList objectAtIndex:kIASKSpecifierValuesViewControllerIndex]]; // copy the title and explain strings - targetViewController = [[IASKSpecifierValuesViewController alloc] initWithNibName:@"IASKSpecifierValuesView" bundle:nil]; + targetViewController = [[IASKSpecifierValuesViewController alloc] init]; // add the new view controller to the dictionary and then to the 'viewList' array [newItemDict setObject:targetViewController forKey:@"viewController"]; [self.viewList replaceObjectAtIndex:kIASKSpecifierValuesViewControllerIndex withObject:newItemDict]; @@ -589,7 +685,6 @@ CGRect IASKCGRectSwap(CGRect rect); if ([vc respondsToSelector:@selector(setSettingsStore:)]) { [vc performSelector:@selector(setSettingsStore:) withObject:self.settingsStore]; } - self.navigationController.delegate = nil; [self.navigationController pushViewController:vc animated:YES]; [vc performSelector:@selector(release)]; return; @@ -608,7 +703,7 @@ CGRect IASKCGRectSwap(CGRect rect); NSMutableDictionary *newItemDict = [NSMutableDictionary dictionaryWithCapacity:3]; [newItemDict addEntriesFromDictionary: [self.viewList objectAtIndex:kIASKSpecifierChildViewControllerIndex]]; // copy the title and explain strings - targetViewController = [[[self class] alloc] initWithNibName:@"IASKAppSettingsView" bundle:nil]; + targetViewController = [[[self class] alloc] init]; targetViewController.showDoneButton = NO; targetViewController.settingsStore = self.settingsStore; targetViewController.delegate = self.delegate; @@ -621,9 +716,8 @@ CGRect IASKCGRectSwap(CGRect rect); // load the view controll back in to push it targetViewController = [[self.viewList objectAtIndex:kIASKSpecifierChildViewControllerIndex] objectForKey:@"viewController"]; } - targetViewController.settingsReaderDelegate = self.settingsReaderDelegate; - targetViewController.file = specifier.file; // changes settingsReader - + targetViewController.file = specifier.file; + targetViewController.hiddenKeys = self.hiddenKeys; targetViewController.title = specifier.title; targetViewController.showCreditsFooter = NO; [[self navigationController] pushViewController:targetViewController animated:YES]; @@ -632,7 +726,11 @@ CGRect IASKCGRectSwap(CGRect rect); [[UIApplication sharedApplication] openURL:[NSURL URLWithString:specifier.file]]; } else if ([[specifier type] isEqualToString:kIASKButtonSpecifier]) { [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if ([self.delegate respondsToSelector:@selector(settingsViewController:buttonTappedForKey:)]) { + if ([self.delegate respondsToSelector:@selector(settingsViewController:buttonTappedForSpecifier:)]) { + [self.delegate settingsViewController:self buttonTappedForSpecifier:specifier]; + } else if ([self.delegate respondsToSelector:@selector(settingsViewController:buttonTappedForKey:)]) { + // deprecated, provided for backward compatibility + NSLog(@"InAppSettingsKit Warning: -settingsViewController:buttonTappedForKey: is deprecated. Please use -settingsViewController:buttonTappedForSpecifier:"); [self.delegate settingsViewController:self buttonTappedForKey:[specifier key]]; } else { // legacy code, provided for backward compatibility @@ -736,7 +834,7 @@ CGRect IASKCGRectSwap(CGRect rect); } - (void)_textChanged:(id)sender { - IASKTextField *text = (IASKTextField*)sender; + IASKTextField *text = [[(IASKTextField*)sender retain] autorelease]; [_settingsStore setObject:[text text] forKey:[text key]]; [[NSNotificationCenter defaultCenter] postNotificationName:kIASKAppSettingChanged object:[text key] @@ -750,6 +848,9 @@ CGRect IASKCGRectSwap(CGRect rect); return YES; } +- (void)singleTapToEndEdit:(UIGestureRecognizer *)sender { + [self.tableView endEditing:NO]; +} #pragma mark Notifications diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h b/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h old mode 100644 new mode 100755 index 08b6ceb27..4805ddf3c --- a/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h +++ b/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h @@ -24,7 +24,7 @@ - (id)initWithFile:(NSString*)htmlFileName key:(NSString*)key; -@property (nonatomic, retain) IBOutlet UIWebView *webView; +@property (nonatomic, retain) UIWebView *webView; @property (nonatomic, retain) NSURL *url; @end diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m b/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m old mode 100644 new mode 100755 index 46429b3ce..feb95ddc9 --- a/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m +++ b/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m @@ -22,21 +22,29 @@ @synthesize webView; - (id)initWithFile:(NSString*)urlString key:(NSString*)key { - if (!(self = [super initWithNibName:nil bundle:nil])) { - return nil; - } - - self.url = [NSURL URLWithString:urlString]; - if (!self.url || ![self.url scheme]) { - NSString *path = [[NSBundle mainBundle] pathForResource:[urlString stringByDeletingPathExtension] ofType:[urlString pathExtension]]; - if(path) - self.url = [NSURL fileURLWithPath:path]; - else - self.url = nil; - } - return self; + self = [super init]; + if (self) { + self.url = [NSURL URLWithString:urlString]; + if (!self.url || ![self.url scheme]) { + NSString *path = [[NSBundle mainBundle] pathForResource:[urlString stringByDeletingPathExtension] ofType:[urlString pathExtension]]; + if(path) + self.url = [NSURL fileURLWithPath:path]; + else + self.url = nil; + } + } + return self; } +- (void)loadView +{ + webView = [[UIWebView alloc] init]; + webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | + UIViewAutoresizingFlexibleHeight; + webView.delegate = self; + + self.view = webView; +} - (void)dealloc { [webView release], webView = nil; diff --git a/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h b/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h old mode 100644 new mode 100755 index d2810d368..85f6d9fc2 --- a/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h +++ b/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h @@ -20,7 +20,7 @@ @class IASKSpecifier; @class IASKSettingsReader; -@interface IASKSpecifierValuesViewController : UIViewController { +@interface IASKSpecifierValuesViewController : UIViewController { UITableView *_tableView; IASKSpecifier *_currentSpecifier; @@ -29,7 +29,7 @@ id _settingsStore; } -@property (nonatomic, retain) IBOutlet UITableView *tableView; +@property (nonatomic, retain) UITableView *tableView; @property (nonatomic, retain) NSIndexPath *checkedItem; @property (nonatomic, retain) IASKSpecifier *currentSpecifier; diff --git a/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m b/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m old mode 100644 new mode 100755 index 84236a755..bd0b82ac6 --- a/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m +++ b/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m @@ -52,6 +52,17 @@ return _settingsStore; } +- (void)loadView +{ + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped]; + _tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | + UIViewAutoresizingFlexibleHeight; + _tableView.delegate = self; + _tableView.dataSource = self; + + self.view = _tableView; +} + - (void)viewWillAppear:(BOOL)animated { if (_currentSpecifier) { [self setTitle:[_currentSpecifier title]]; @@ -178,6 +189,11 @@ forKey:[_currentSpecifier key]]]; } +- (CGSize)contentSizeForViewInPopover { + return [[self view] sizeThatFits:CGSizeMake(320, 2000)]; +} + + #pragma mark Notifications - (void)userDefaultsDidChange { diff --git a/InAppSettingsKit/Controllers/IASKViewController.h b/InAppSettingsKit/Controllers/IASKViewController.h old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Models/IASKSettingsReader.h b/InAppSettingsKit/Models/IASKSettingsReader.h old mode 100644 new mode 100755 index c66156d8b..761de7546 --- a/InAppSettingsKit/Models/IASKSettingsReader.h +++ b/InAppSettingsKit/Models/IASKSettingsReader.h @@ -17,6 +17,8 @@ #import #define kIASKPreferenceSpecifiers @"PreferenceSpecifiers" +#define kIASKCellImage @"IASKCellImage" + #define kIASKType @"Type" #define kIASKTitle @"Title" #define kIASKFooterText @"FooterText" @@ -59,6 +61,11 @@ #define kIASKAutoCorrYes @"Yes" #define kIASKMinimumValueImage @"MinimumValueImage" #define kIASKMaximumValueImage @"MaximumValueImage" +#define kIASKAdjustsFontSizeToFitWidth @"IASKAdjustsFontSizeToFitWidth" +#define kIASKTextLabelAlignment @"IASKTextAlignment" +#define kIASKTextLabelAlignmentLeft @"IASKUITextAlignmentLeft" +#define kIASKTextLabelAlignmentCenter @"IASKUITextAlignmentCenter" +#define kIASKTextLabelAlignmentRight @"IASKUITextAlignmentRight" #define kIASKPSGroupSpecifier @"PSGroupSpecifier" #define kIASKPSToggleSwitchSpecifier @"PSToggleSwitchSpecifier" @@ -88,6 +95,7 @@ #define kIASKTableWidth 320 #define kIASKSpacing 5 #define kIASKMinLabelWidth 97 +#define kIASKMaxLabelWidth 240 #define kIASKMinValueWidth 35 #define kIASKPaddingLeft 9 #define kIASKPaddingRight 10 @@ -97,6 +105,8 @@ #define kIASKLabelFontSize 17 #define kIASKgrayBlueColor [UIColor colorWithRed:0.318 green:0.4 blue:0.569 alpha:1.0] +#define kIASKMinimumFontSize 12.0f + #ifndef kCFCoreFoundationVersionNumber_iPhoneOS_4_0 #define kCFCoreFoundationVersionNumber_iPhoneOS_4_0 550.32 #endif @@ -114,10 +124,6 @@ __VA_ARGS__ \ @class IASKSpecifier; -@protocol IASKSettingsReaderFilterDelegate -- (NSDictionary*) filterPreferenceSpecifier:(NSDictionary*)specifier; -@end - @interface IASKSettingsReader : NSObject { NSString *_path; NSString *_localizationTable; @@ -125,10 +131,10 @@ __VA_ARGS__ \ NSDictionary *_settingsBundle; NSArray *_dataSource; NSBundle *_bundle; - id _delegate; + NSSet *_hiddenKeys; } -- (id)initWithFile:(NSString*)file andDelegate:(id)delegate; +- (id)initWithFile:(NSString*)file; - (NSInteger)numberOfSections; - (NSInteger)numberOfRowsForSection:(NSInteger)section; - (IASKSpecifier*)specifierForIndexPath:(NSIndexPath*)indexPath; @@ -145,5 +151,6 @@ __VA_ARGS__ \ @property (nonatomic, retain) NSString *bundlePath; @property (nonatomic, retain) NSDictionary *settingsBundle; @property (nonatomic, retain) NSArray *dataSource; +@property (nonatomic, retain) NSSet *hiddenKeys; @end diff --git a/InAppSettingsKit/Models/IASKSettingsReader.m b/InAppSettingsKit/Models/IASKSettingsReader.m old mode 100644 new mode 100755 index 7e53458ec..7e15fce1e --- a/InAppSettingsKit/Models/IASKSettingsReader.m +++ b/InAppSettingsKit/Models/IASKSettingsReader.m @@ -31,14 +31,14 @@ localizationTable=_localizationTable, bundlePath=_bundlePath, settingsBundle=_settingsBundle, -dataSource=_dataSource; - +dataSource=_dataSource, +hiddenKeys = _hiddenKeys; - (id)init { - return [self initWithFile:@"Root" andDelegate:nil]; + return [self initWithFile:@"Root"]; } -- (id)initWithFile:(NSString*)file andDelegate:(id)delegate{ +- (id)initWithFile:(NSString*)file { if ((self=[super init])) { @@ -61,7 +61,7 @@ dataSource=_dataSource; self.localizationTable = @"Root"; } } - _delegate=delegate; + if (_settingsBundle) { [self _reinterpretBundle:_settingsBundle]; } @@ -76,23 +76,34 @@ dataSource=_dataSource; [_settingsBundle release], _settingsBundle = nil; [_dataSource release], _dataSource = nil; [_bundle release], _bundle = nil; + [_hiddenKeys release], _hiddenKeys = nil; [super dealloc]; } + +- (void)setHiddenKeys:(NSSet *)anHiddenKeys { + if (_hiddenKeys != anHiddenKeys) { + id old = _hiddenKeys; + _hiddenKeys = [anHiddenKeys retain]; + [old release]; + + if (_settingsBundle) { + [self _reinterpretBundle:_settingsBundle]; + } + } +} + + - (void)_reinterpretBundle:(NSDictionary*)settingsBundle { NSArray *preferenceSpecifiers = [settingsBundle objectForKey:kIASKPreferenceSpecifiers]; NSInteger sectionCount = -1; NSMutableArray *dataSource = [[[NSMutableArray alloc] init] autorelease]; for (NSDictionary *specifier in preferenceSpecifiers) { - if (_delegate != nil) { - specifier = [_delegate filterPreferenceSpecifier:specifier]; - if (specifier == nil) { - // skip - continue; - } - } + if ([self.hiddenKeys containsObject:[specifier objectForKey:kIASKKey]]) { + continue; + } if ([(NSString*)[specifier objectForKey:kIASKType] isEqualToString:kIASKPSGroupSpecifier]) { NSMutableArray *newArray = [[NSMutableArray alloc] init]; @@ -127,8 +138,7 @@ dataSource=_dataSource; - (NSInteger)numberOfRowsForSection:(NSInteger)section { int headingCorrection = [self _sectionHasHeading:section] ? 1 : 0; - NSInteger ret= [(NSArray*)[[self dataSource] objectAtIndex:section] count] - headingCorrection; - return ret; + return [(NSArray*)[[self dataSource] objectAtIndex:section] count] - headingCorrection; } - (IASKSpecifier*)specifierForIndexPath:(NSIndexPath*)indexPath { diff --git a/InAppSettingsKit/Models/IASKSettingsStore.h b/InAppSettingsKit/Models/IASKSettingsStore.h old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Models/IASKSettingsStore.m b/InAppSettingsKit/Models/IASKSettingsStore.m old mode 100644 new mode 100755 index 8efbe7da2..db858fa7c --- a/InAppSettingsKit/Models/IASKSettingsStore.m +++ b/InAppSettingsKit/Models/IASKSettingsStore.m @@ -65,4 +65,4 @@ return NO; } -@end \ No newline at end of file +@end diff --git a/InAppSettingsKit/Models/IASKSettingsStoreFile.h b/InAppSettingsKit/Models/IASKSettingsStoreFile.h old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Models/IASKSettingsStoreFile.m b/InAppSettingsKit/Models/IASKSettingsStoreFile.m old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h b/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m b/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Models/IASKSpecifier.h b/InAppSettingsKit/Models/IASKSpecifier.h old mode 100644 new mode 100755 index 1e47d1ec8..5eeec3596 --- a/InAppSettingsKit/Models/IASKSpecifier.h +++ b/InAppSettingsKit/Models/IASKSpecifier.h @@ -55,5 +55,8 @@ - (SEL)viewControllerSelector; -(Class)buttonClass; -(SEL)buttonAction; - +- (UIImage *)cellImage; +- (UIImage *)highlightedCellImage; +- (BOOL)adjustsFontSizeToFitWidth; +- (UITextAlignment)textAlignment; @end diff --git a/InAppSettingsKit/Models/IASKSpecifier.m b/InAppSettingsKit/Models/IASKSpecifier.m old mode 100644 new mode 100755 index ebb38ac01..d76beb4ab --- a/InAppSettingsKit/Models/IASKSpecifier.m +++ b/InAppSettingsKit/Models/IASKSpecifier.m @@ -237,4 +237,35 @@ return UITextAutocorrectionTypeDefault; } +- (UIImage *)cellImage +{ + return [UIImage imageNamed:[_specifierDict objectForKey:kIASKCellImage]]; +} + +- (UIImage *)highlightedCellImage +{ + return [UIImage imageNamed:[[_specifierDict objectForKey:kIASKCellImage ] stringByAppendingString:@"Highlighted"]]; +} + +- (BOOL)adjustsFontSizeToFitWidth { + NSNumber *boxedResult = [_specifierDict objectForKey:kIASKAdjustsFontSizeToFitWidth]; + return !boxedResult || [boxedResult boolValue]; +} + +- (UITextAlignment)textAlignment +{ + if ([[_specifierDict objectForKey:kIASKTextLabelAlignment] isEqualToString:kIASKTextLabelAlignmentLeft]) { + return UITextAlignmentLeft; + } else if ([[_specifierDict objectForKey:kIASKTextLabelAlignment] isEqualToString:kIASKTextLabelAlignmentCenter]) { + return UITextAlignmentCenter; + } else if ([[_specifierDict objectForKey:kIASKTextLabelAlignment] isEqualToString:kIASKTextLabelAlignmentRight]) { + return UITextAlignmentRight; + } + if ([self.type isEqualToString:kIASKButtonSpecifier] && !self.cellImage) { + return UITextAlignmentCenter; + } else if ([self.type isEqualToString:kIASKPSMultiValueSpecifier] || [self.type isEqualToString:kIASKPSTitleValueSpecifier]) { + return UITextAlignmentRight; + } + return UITextAlignmentLeft; +} @end diff --git a/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h b/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h old mode 100644 new mode 100755 index 7cc943b0a..1aca0cfe1 --- a/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h +++ b/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h @@ -24,8 +24,8 @@ UIImageView *_maxImage; } -@property (nonatomic, assign) IBOutlet IASKSlider *slider; -@property (nonatomic, assign) IBOutlet UIImageView *minImage; -@property (nonatomic, assign) IBOutlet UIImageView *maxImage; +@property (nonatomic, assign) IASKSlider *slider; +@property (nonatomic, assign) UIImageView *minImage; +@property (nonatomic, assign) UIImageView *maxImage; @end diff --git a/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m b/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m old mode 100644 new mode 100755 index cbdca0279..dc2130d85 --- a/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m +++ b/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m @@ -24,6 +24,35 @@ minImage=_minImage, maxImage=_maxImage; +- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier +{ + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + // Setting only frame data that will not be overwritten by layoutSubviews + // Slider + _slider = [[[IASKSlider alloc] initWithFrame:CGRectMake(0, 0, 0, 23)] autorelease]; + _slider.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | + UIViewAutoresizingFlexibleWidth; + _slider.continuous = NO; + [self.contentView addSubview:_slider]; + + // MinImage + _minImage = [[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 21, 21)] autorelease]; + _minImage.autoresizingMask = UIViewAutoresizingFlexibleRightMargin | + UIViewAutoresizingFlexibleBottomMargin; + [self.contentView addSubview:_minImage]; + + // MaxImage + _maxImage = [[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 21, 21)] autorelease]; + _maxImage.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | + UIViewAutoresizingFlexibleBottomMargin; + [self.contentView addSubview:_maxImage]; + + self.selectionStyle = UITableViewCellSelectionStyleNone; + } + return self; +} + - (void)layoutSubviews { [super layoutSubviews]; CGRect sliderBounds = _slider.bounds; @@ -31,28 +60,27 @@ const double superViewWidth = _slider.superview.frame.size.width; sliderCenter.x = superViewWidth / 2; + sliderCenter.y = self.contentView.center.y; sliderBounds.size.width = superViewWidth - kIASKSliderNoImagesPadding * 2; _minImage.hidden = YES; _maxImage.hidden = YES; // Check if there are min and max images. If so, change the layout accordingly. - if (_minImage.image && _maxImage.image) { - // Both images - _minImage.hidden = NO; - _maxImage.hidden = NO; - sliderBounds.size.width = superViewWidth - kIASKSliderImagesPadding * 2; - } - else if (_minImage.image) { + if (_minImage.image) { // Min image _minImage.hidden = NO; sliderCenter.x += (kIASKSliderImagesPadding - kIASKSliderNoImagesPadding) / 2; - sliderBounds.size.width = superViewWidth - kIASKSliderNoImagesPadding - kIASKSliderImagesPadding; - } - else if (_maxImage.image) { + sliderBounds.size.width -= (kIASKSliderImagesPadding - kIASKSliderNoImagesPadding); + _minImage.center = CGPointMake(_minImage.frame.size.width / 2 + kIASKPaddingLeft, + self.contentView.center.y); + } + if (_maxImage.image) { // Max image _maxImage.hidden = NO; sliderCenter.x -= (kIASKSliderImagesPadding - kIASKSliderNoImagesPadding) / 2; - sliderBounds.size.width = superViewWidth - kIASKSliderNoImagesPadding - kIASKSliderImagesPadding; + sliderBounds.size.width -= (kIASKSliderImagesPadding - kIASKSliderNoImagesPadding); + _maxImage.center = CGPointMake(self.contentView.bounds.size.width - _maxImage.frame.size.width / 2 - kIASKPaddingRight, + self.contentView.center.y); } _slider.bounds = sliderBounds; diff --git a/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h b/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h old mode 100644 new mode 100755 index b4d70c8ad..16b90ed94 --- a/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h +++ b/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h @@ -19,11 +19,9 @@ @class IASKTextField; @interface IASKPSTextFieldSpecifierViewCell : UITableViewCell { - UILabel *_label; IASKTextField *_textField; } -@property (nonatomic, assign) IBOutlet UILabel *label; -@property (nonatomic, assign) IBOutlet IASKTextField *textField; +@property (nonatomic, assign) IASKTextField *textField; @end diff --git a/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m b/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m old mode 100644 new mode 100755 index cf7486eea..e2db77660 --- a/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m +++ b/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m @@ -20,29 +20,54 @@ @implementation IASKPSTextFieldSpecifierViewCell -@synthesize label=_label, - textField=_textField; +@synthesize textField=_textField; + +- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier +{ + self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; + if (self) { + self.textLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin; + + // TextField + _textField = [[[IASKTextField alloc] initWithFrame:CGRectMake(0, 0, 200, 21)] autorelease]; + _textField.autoresizingMask = UIViewAutoresizingFlexibleWidth | + UIViewAutoresizingFlexibleBottomMargin | + UIViewAutoresizingFlexibleLeftMargin; + _textField.font = [UIFont systemFontOfSize:17.0f]; + _textField.minimumFontSize = kIASKMinimumFontSize; + _textField.textColor = [UIColor colorWithRed:0.275 green:0.376 blue:0.522 alpha:1.000]; + [self.contentView addSubview:_textField]; + + self.selectionStyle = UITableViewCellSelectionStyleNone; + } + return self; +} - (void)layoutSubviews { [super layoutSubviews]; - CGSize labelSize = [_label sizeThatFits:CGSizeZero]; - labelSize.width = MIN(labelSize.width, _label.bounds.size.width); + + // Label + CGFloat imageOffset = self.imageView.image ? self.imageView.bounds.size.width + kIASKPaddingLeft : 0; + CGSize labelSize = [self.textLabel sizeThatFits:CGSizeZero]; + labelSize.width = MAX(labelSize.width, kIASKMinLabelWidth - imageOffset); + self.textLabel.frame = (CGRect){self.textLabel.frame.origin, {MIN(kIASKMaxLabelWidth, labelSize.width), self.textLabel.frame.size.height}} ; + // TextField + _textField.center = CGPointMake(_textField.center.x, self.contentView.center.y); CGRect textFieldFrame = _textField.frame; - textFieldFrame.origin.x = _label.frame.origin.x + MAX(kIASKMinLabelWidth, labelSize.width) + kIASKSpacing; - if (!_label.text.length) - textFieldFrame.origin.x = _label.frame.origin.x; - textFieldFrame.size.width = _textField.superview.frame.size.width - textFieldFrame.origin.x - _label.frame.origin.x; + textFieldFrame.origin.x = self.textLabel.frame.origin.x + MAX(kIASKMinLabelWidth - imageOffset, self.textLabel.frame.size.width) + kIASKSpacing; + textFieldFrame.size.width = _textField.superview.frame.size.width - textFieldFrame.origin.x - kIASKPaddingRight; + + if (!self.textLabel.text.length) { + textFieldFrame.origin.x = kIASKPaddingLeft + imageOffset; + textFieldFrame.size.width = self.contentView.bounds.size.width - 2* kIASKPaddingLeft - imageOffset; + } else if (_textField.textAlignment == UITextAlignmentRight) { + textFieldFrame.origin.x = self.textLabel.frame.origin.x + labelSize.width + kIASKSpacing; + textFieldFrame.size.width = _textField.superview.frame.size.width - textFieldFrame.origin.x - kIASKPaddingRight; + } _textField.frame = textFieldFrame; } -- (void)setSelected:(BOOL)selected animated:(BOOL)animated { - - [super setSelected:selected animated:animated]; - - // Configure the view for the selected state -} - - (void)dealloc { [super dealloc]; diff --git a/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h b/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m b/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m old mode 100644 new mode 100755 index c1d5aaa55..1b7cd98a3 --- a/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m +++ b/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m @@ -21,35 +21,31 @@ @implementation IASKPSTitleValueSpecifierViewCell - (void)layoutSubviews { - // left align the value if the title is empty - if (!self.textLabel.text.length) { - self.textLabel.text = self.detailTextLabel.text; - self.detailTextLabel.text = nil; - if ([self.reuseIdentifier isEqualToString:kIASKPSMultiValueSpecifier]) { - self.textLabel.font = [UIFont systemFontOfSize:[UIFont labelFontSize]]; - self.textLabel.textColor = self.detailTextLabel.textColor; - } - } [super layoutSubviews]; CGSize viewSize = [self.textLabel superview].frame.size; - //if there's an image, make room for it - CGFloat imageOffset = self.imageView.image ? self.imageView.bounds.size.width + self.imageView.frame.origin.x : 0; + // if there's an image, make room for it + CGFloat imageOffset = floor(self.imageView.image ? self.imageView.bounds.size.width + self.imageView.frame.origin.x : 0); // set the left title label frame CGFloat labelWidth = [self.textLabel sizeThatFits:CGSizeZero].width; CGFloat minValueWidth = (self.detailTextLabel.text.length) ? kIASKMinValueWidth + kIASKSpacing : 0; labelWidth = MIN(labelWidth, viewSize.width - minValueWidth - kIASKPaddingLeft -kIASKPaddingRight - imageOffset); CGRect labelFrame = CGRectMake(kIASKPaddingLeft + imageOffset, 0, labelWidth, viewSize.height -2); + if (!self.detailTextLabel.text.length) { + labelFrame = CGRectMake(kIASKPaddingLeft + imageOffset, 0, viewSize.width - kIASKPaddingLeft - kIASKPaddingRight - imageOffset, viewSize.height -2); + } self.textLabel.frame = labelFrame; // set the right value label frame - if (self.detailTextLabel.text.length) { - CGRect valueFrame = CGRectMake(kIASKPaddingLeft + labelWidth + kIASKSpacing + imageOffset, - 0, - viewSize.width - (kIASKPaddingLeft + labelWidth + kIASKSpacing + imageOffset) - kIASKPaddingRight, - viewSize.height -2); + if (!self.textLabel.text.length) { + viewSize = [self.detailTextLabel superview].frame.size; + self.detailTextLabel.frame = CGRectMake(kIASKPaddingLeft + imageOffset, 0, viewSize.width - kIASKPaddingLeft - kIASKPaddingRight - imageOffset, viewSize.height -2); + } else if (self.detailTextLabel.textAlignment == UITextAlignmentLeft) { + CGRect valueFrame = self.detailTextLabel.frame; + valueFrame.origin.x = labelFrame.origin.x + MAX(kIASKMinLabelWidth - imageOffset, labelWidth) + kIASKSpacing; + valueFrame.size.width = self.detailTextLabel.superview.frame.size.width - valueFrame.origin.x - kIASKPaddingRight; self.detailTextLabel.frame = valueFrame; } } diff --git a/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.h b/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.h deleted file mode 100644 index a6d2864bc..000000000 --- a/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// IASKPSToggleSwitchSpecifierViewCell.h -// http://www.inappsettingskit.com -// -// Copyright (c) 2009: -// Luc Vandal, Edovia Inc., http://www.edovia.com -// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com -// All rights reserved. -// -// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, -// as the original authors of this code. You can give credit in a blog post, a tweet or on -// a info page of your app. Also, the original authors appreciate letting them know if you use this code. -// -// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php -// - -#import - -@class IASKSwitch; - -@interface IASKPSToggleSwitchSpecifierViewCell : UITableViewCell { - UILabel *_label; - IASKSwitch *_toggle; -} - -@property (nonatomic, assign) IBOutlet UILabel *label; -@property (nonatomic, assign) IBOutlet IASKSwitch *toggle; - -@end diff --git a/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.m b/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.m deleted file mode 100644 index 13c66e285..000000000 --- a/InAppSettingsKit/Views/IASKPSToggleSwitchSpecifierViewCell.m +++ /dev/null @@ -1,62 +0,0 @@ -// -// IASKPSToggleSwitchSpecifierViewCell.m -// http://www.inappsettingskit.com -// -// Copyright (c) 2009: -// Luc Vandal, Edovia Inc., http://www.edovia.com -// Ortwin Gentz, FutureTap GmbH, http://www.futuretap.com -// All rights reserved. -// -// It is appreciated but not required that you give credit to Luc Vandal and Ortwin Gentz, -// as the original authors of this code. You can give credit in a blog post, a tweet or on -// a info page of your app. Also, the original authors appreciate letting them know if you use this code. -// -// This code is licensed under the BSD license that is available at: http://www.opensource.org/licenses/bsd-license.php -// - -#import "IASKPSToggleSwitchSpecifierViewCell.h" -#import "IASKSwitch.h" -#import "IASKSettingsReader.h" - -@implementation IASKPSToggleSwitchSpecifierViewCell - -@synthesize label=_label, - toggle=_toggle; - -- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { - if ((self = [super initWithStyle:style reuseIdentifier:reuseIdentifier])) { - // Initialization code - } - return self; -} - - -- (void)setSelected:(BOOL)selected animated:(BOOL)animated { - - [super setSelected:selected animated:animated]; - - // Configure the view for the selected state -} - - -- (void)dealloc { - [super dealloc]; -} - -- (void)layoutSubviews { - [super layoutSubviews]; - if(self.imageView.image) { - //resize the label to make room for the image - self.label.frame = CGRectMake(CGRectGetWidth(self.imageView.bounds) + self.imageView.frame.origin.x + kIASKSpacing, - self.label.frame.origin.y, - self.toggle.frame.origin.x - CGRectGetWidth(self.imageView.bounds) - 2.f * kIASKSpacing, - self.label.frame.size.height); - } else { - self.label.frame = CGRectMake(kIASKPaddingLeft, - self.label.frame.origin.y, - self.toggle.frame.origin.x - kIASKSpacing - kIASKPaddingLeft, - self.label.frame.size.height); - } -} - -@end diff --git a/InAppSettingsKit/Views/IASKSlider.h b/InAppSettingsKit/Views/IASKSlider.h old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Views/IASKSlider.m b/InAppSettingsKit/Views/IASKSlider.m old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Views/IASKSwitch.h b/InAppSettingsKit/Views/IASKSwitch.h old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Views/IASKSwitch.m b/InAppSettingsKit/Views/IASKSwitch.m old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Views/IASKTextField.h b/InAppSettingsKit/Views/IASKTextField.h old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Views/IASKTextField.m b/InAppSettingsKit/Views/IASKTextField.m old mode 100644 new mode 100755 diff --git a/InAppSettingsKit/Xibs/IASKAppSettingsView.xib b/InAppSettingsKit/Xibs/IASKAppSettingsView.xib deleted file mode 100644 index 74720fae3..000000000 --- a/InAppSettingsKit/Xibs/IASKAppSettingsView.xib +++ /dev/null @@ -1,222 +0,0 @@ - - - - 1280 - 11B26 - 1934 - 1138 - 566.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 931 - - - YES - IBProxyObject - IBUITableView - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - {320, 460} - - - - 10 - - 549453824 - {512, 1} - - YES - - YES - - - - TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ -xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA -AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA -AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI -AAgACAAIAAEAAQABAAE - - - - - - 3 - MCAwAA - - - groupTableViewBackgroundColor - - NO - YES - NO - IBCocoaTouchFramework - NO - 1 - 1 - 0 - YES - 44 - 10 - 10 - - - - - YES - - - view - - - - 10 - - - - dataSource - - - - 6 - - - - delegate - - - - 7 - - - - - YES - - 0 - - YES - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - YES - - YES - -1.CustomClassName - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 4.IBPluginDependency - - - YES - IASKAppSettingsViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 10 - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - 931 - - diff --git a/InAppSettingsKit/Xibs/IASKAppSettingsWebView.xib b/InAppSettingsKit/Xibs/IASKAppSettingsWebView.xib deleted file mode 100644 index b814f05fc..000000000 --- a/InAppSettingsKit/Xibs/IASKAppSettingsWebView.xib +++ /dev/null @@ -1,378 +0,0 @@ - - - - 1024 - 10F569 - 804 - 1038.29 - 461.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 123 - - - YES - - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - YES - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 274 - - YES - - - 274 - {320, 460} - - - 3 - MQA - - IBCocoaTouchFramework - - - {320, 460} - - - - IBCocoaTouchFramework - - - - - YES - - - view - - - - 3 - - - - webView - - - - 5 - - - - delegate - - - - 6 - - - - - YES - - 0 - - - - - - 1 - - - YES - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 1.IBEditorWindowLastContentRect - 1.IBPluginDependency - 4.IBPluginDependency - - - YES - IASKAppSettingsWebViewController - UIResponder - {{354, 412}, {320, 480}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - YES - - - - - YES - - - YES - - - - 6 - - - - YES - - IASKAppSettingsWebViewController - UIViewController - - webView - UIWebView - - - webView - - webView - UIWebView - - - - IBProjectSource - ../InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIResponder - NSObject - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UIPopoverController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UISplitViewController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h - - - - UIWebView - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIWebView.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - ../InAppSettingsKitSampleApp.xcodeproj - 3 - 123 - - diff --git a/InAppSettingsKit/Xibs/IASKPSSliderSpecifierViewCell.xib b/InAppSettingsKit/Xibs/IASKPSSliderSpecifierViewCell.xib deleted file mode 100644 index 67750384e..000000000 --- a/InAppSettingsKit/Xibs/IASKPSSliderSpecifierViewCell.xib +++ /dev/null @@ -1,251 +0,0 @@ - - - - 1296 - 11D50 - 2182 - 1138.32 - 568.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1179 - - - YES - IBUISlider - IBUITableViewCell - IBUIImageView - IBProxyObject - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 290 - - YES - - - 256 - - YES - - - 290 - {{52, 12}, {216, 23}} - - - NO - YES - YES - IBCocoaTouchFramework - 0 - 0 - 0.5 - NO - - - - 289 - {{289, 13}, {21, 21}} - - - NO - NO - 8 - NO - IBCocoaTouchFramework - - - - 292 - {{10, 13}, {21, 21}} - - - NO - NO - 7 - NO - IBCocoaTouchFramework - - - {320, 43} - - - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {320, 44} - - - - 1 - MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA - - YES - NO - IBCocoaTouchFramework - 0 - - PSSliderSpecifier - - - - - YES - - - slider - - - - 12 - - - - maxImage - - - - 13 - - - - minImage - - - - 14 - - - - - YES - - 0 - - YES - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - YES - - - - - - - - 3 - - - - - 6 - - - - - 9 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 2.CustomClassName - 2.IBPluginDependency - 3.CustomClassName - 3.IBPluginDependency - 6.IBPluginDependency - 9.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - IASKPSSliderSpecifierViewCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - IASKSlider - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 14 - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - 1179 - - diff --git a/InAppSettingsKit/Xibs/IASKPSTextFieldSpecifierViewCell.xib b/InAppSettingsKit/Xibs/IASKPSTextFieldSpecifierViewCell.xib deleted file mode 100644 index 43a553b9c..000000000 --- a/InAppSettingsKit/Xibs/IASKPSTextFieldSpecifierViewCell.xib +++ /dev/null @@ -1,254 +0,0 @@ - - - - 1296 - 11D50 - 2182 - 1138.32 - 568.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1179 - - - YES - IBUITableViewCell - IBUILabel - IBUITextField - IBProxyObject - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 290 - - YES - - - 256 - - YES - - - 294 - {{9, 11}, {240, 21}} - - NO - YES - NO - IBCocoaTouchFramework - Label - - 1 - MCAwIDAAA - - - 1 - 10 - - Helvetica-Bold - Helvetica - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - - - - 291 - {{100, 11}, {201, 21}} - - NO - NO - IBCocoaTouchFramework - hello - - 1 - MC4yNzQ1MDk4MiAwLjM3NjQ3MDYgMC41MjE1Njg2NgA - - YES - 10 - - 9 - IBCocoaTouchFramework - - - Helvetica - Helvetica - 0 - 17 - - - Helvetica - 17 - 16 - - - - {320, 43} - - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {320, 44} - - - 1 - MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA - - YES - NO - IBCocoaTouchFramework - 0 - - PSTextFieldSpecifier - - - - - YES - - - label - - - - 8 - - - - textField - - - - 9 - - - - - YES - - 0 - - YES - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - YES - - - - - - - 3 - - - - - 4 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 2.CustomClassName - 2.IBPluginDependency - 3.IBPluginDependency - 4.CustomClassName - 4.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - IASKPSTextFieldSpecifierViewCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - IASKTextField - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 9 - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - 1179 - - diff --git a/InAppSettingsKit/Xibs/IASKPSToggleSwitchSpecifierViewCell.xib b/InAppSettingsKit/Xibs/IASKPSToggleSwitchSpecifierViewCell.xib deleted file mode 100644 index 2e5803f2e..000000000 --- a/InAppSettingsKit/Xibs/IASKPSToggleSwitchSpecifierViewCell.xib +++ /dev/null @@ -1,237 +0,0 @@ - - - - 1296 - 11D50 - 2182 - 1138.32 - 568.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1179 - - - YES - IBUITableViewCell - IBUISwitch - IBUILabel - IBProxyObject - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 290 - - YES - - - 256 - - YES - - - 294 - {{9, 10}, {200, 21}} - - NO - YES - NO - IBCocoaTouchFramework - Label - - 1 - MCAwIDAAA - - - 1 - 10 - - Helvetica-Bold - Helvetica - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - - - - 289 - {{218, 8}, {94, 27}} - - NO - YES - YES - IBCocoaTouchFramework - 0 - 0 - YES - - - {320, 43} - - - 3 - MCAwAA - - NO - YES - 4 - YES - IBCocoaTouchFramework - - - {320, 44} - - - 1 - MC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEgMC45Njg2Mjc0NTEAA - - YES - NO - IBCocoaTouchFramework - 0 - - PSToggleSwitchSpecifier - - - - - YES - - - toggle - - - - 8 - - - - label - - - - 9 - - - - - YES - - 0 - - YES - - - - - - -1 - - - File's Owner - - - -2 - - - - - 2 - - - YES - - - - - Toggle Switch Specifier View Cell - PSToggleSwitchSpecifier - - - 3 - - - - - 4 - - - - - - - YES - - YES - -1.IBPluginDependency - -2.CustomClassName - -2.IBPluginDependency - 2.CustomClassName - 2.IBPluginDependency - 3.IBPluginDependency - 4.CustomClassName - 4.IBPluginDependency - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - IASKPSToggleSwitchSpecifierViewCell - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - IASKSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 9 - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - 1179 - - diff --git a/InAppSettingsKit/Xibs/IASKSpecifierValuesView.xib b/InAppSettingsKit/Xibs/IASKSpecifierValuesView.xib deleted file mode 100644 index 9c7ff86e6..000000000 --- a/InAppSettingsKit/Xibs/IASKSpecifierValuesView.xib +++ /dev/null @@ -1,255 +0,0 @@ - - - - 768 - 10J567 - 1294 - 1038.35 - 462.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 294 - - - YES - IBProxyObject - IBUIView - IBUITableView - - - YES - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - YES - - YES - - - - - YES - - IBFilesOwner - IBCocoaTouchFramework - - - IBFirstResponder - IBCocoaTouchFramework - - - - 292 - - YES - - - 274 - {320, 460} - - - - - 10 - - 549453824 - {84, 1} - - YES - - YES - - - - TU0AKgAAAVjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P8ADQEAAAMAAAABAFQAAAEB -AAMAAAABAAEAAAECAAMAAAAEAAAB+gEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABAAEAAAEXAAQAAAABAAABUAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA - - - - - - 3 - MCAwAA - - - groupTableViewBackgroundColor - - NO - YES - NO - IBCocoaTouchFramework - NO - 1 - 1 - 0 - YES - 44 - 10 - 10 - - - {320, 460} - - - - - 3 - MQA - - 2 - - - IBCocoaTouchFramework - - - - - YES - - - view - - - - 3 - - - - dataSource - - - - 5 - - - - delegate - - - - 6 - - - - _tableView - - - - 7 - - - - - YES - - 0 - - - - - - 1 - - - YES - - - - - - -1 - - - File's Owner - - - -2 - - - - - 4 - - - - - - - YES - - YES - -1.CustomClassName - -2.CustomClassName - 1.IBEditorWindowLastContentRect - 1.IBPluginDependency - 4.IBPluginDependency - - - YES - IASKSpecifierValuesViewController - UIResponder - {{556, 432}, {320, 460}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - YES - - - - - - YES - - - - - 7 - - - - YES - - IASKSpecifierValuesViewController - UIViewController - - _tableView - UITableView - - - _tableView - - _tableView - UITableView - - - - IBProjectSource - ./Classes/IASKSpecifierValuesViewController.h - - - - - 0 - IBCocoaTouchFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - - com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 - - - YES - 3 - 294 - - diff --git a/Settings/InAppSettings.bundle/Advanced.plist b/Settings/InAppSettings.bundle/Advanced.plist index fa4638291..787a4bbc0 100644 --- a/Settings/InAppSettings.bundle/Advanced.plist +++ b/Settings/InAppSettings.bundle/Advanced.plist @@ -4,20 +4,6 @@ PreferenceSpecifiers - - Key - stun_preference - Title - Stun server - Type - PSTextFieldSpecifier - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - - DefaultValue @@ -28,88 +14,6 @@ Type PSToggleSwitchSpecifier - - AutocapitalizationType - None - AutocorrectionType - No - DefaultValue - - IsSecure - - Key - prefix_preference - KeyboardType - NumberPad - Title - Prefix - Type - PSTextFieldSpecifier - - - DefaultValue - - Key - substitute_+_by_00_preference - Title - Substitue + by 00 - Type - PSToggleSwitchSpecifier - - - DefaultValue - - Key - wifi_only_preference - Title - Wifi only - Type - PSToggleSwitchSpecifier - - - DefaultValue - udp - Key - transport_preference - Title - Transport - Titles - - udp - tcp - tls - - Type - PSMultiValueSpecifier - Values - - udp - tcp - tls - - - - DefaultValue - None - Key - media_encryption_preference - Title - Media Encryption - Titles - - None - SRTP - ZRTP - - Type - PSMultiValueSpecifier - Values - - None - SRTP - ZRTP - - DefaultValue @@ -131,15 +35,75 @@ PSToggleSwitchSpecifier - DefaultValue - - Key - enable_first_login_view_preference - Title - First login view - Type - PSToggleSwitchSpecifier - + DefaultValue + + Key + enable_first_login_view_preference + Title + First login view + Type + PSToggleSwitchSpecifier + + + Key + expire_preference + Title + Expire + Type + PSTextFieldSpecifier + AutocapitalizationType + None + AutocorrectionType + No + KeyboardType + NumberPad + DefaultValue + 600 + + + Title + Primary account + Type + PSGroupSpecifier + + + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + IsSecure + + Key + primary_displayname_preference + New item + + KeyboardType + Alphabet + Title + Display name + Type + PSTextFieldSpecifier + + + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + IsSecure + + Key + primary_username_preference + KeyboardType + Alphabet + Title + Username + Type + PSTextFieldSpecifier + diff --git a/Settings/InAppSettings.bundle/Call.plist b/Settings/InAppSettings.bundle/Call.plist new file mode 100644 index 000000000..8e0cb92ca --- /dev/null +++ b/Settings/InAppSettings.bundle/Call.plist @@ -0,0 +1,57 @@ + + + + + PreferenceSpecifiers + + + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + IsSecure + + Key + prefix_preference + KeyboardType + NumberPad + Title + Prefix + Type + PSTextFieldSpecifier + + + DefaultValue + + Key + substitute_+_by_00_preference + Title + Substitue + by 00 + Type + PSToggleSwitchSpecifier + + + Type + PSToggleSwitchSpecifier + Title + Enable RFC DTMF + Key + rfc_dtmf_preference + DefaultValue + + + + Type + PSToggleSwitchSpecifier + Title + Enable SIPINFO DTMF + Key + sipinfo_dtmf_preference + DefaultValue + + + + + diff --git a/Settings/InAppSettings.bundle/Network.plist b/Settings/InAppSettings.bundle/Network.plist new file mode 100644 index 000000000..0f067d74f --- /dev/null +++ b/Settings/InAppSettings.bundle/Network.plist @@ -0,0 +1,103 @@ + + + + + PreferenceSpecifiers + + + DefaultValue + + Key + wifi_only_preference + Title + Wifi only + Type + PSToggleSwitchSpecifier + + + Key + stun_preference + Title + Stun server + Type + PSTextFieldSpecifier + AutocapitalizationType + None + AutocorrectionType + No + DefaultValue + + + + Type + PSToggleSwitchSpecifier + Title + Random Port + Key + random_port_preference + DefaultValue + + + + Key + port_preference + Title + Port + Type + PSTextFieldSpecifier + AutocapitalizationType + None + AutocorrectionType + No + KeyboardType + NumberPad + DefaultValue + 5060 + + + DefaultValue + udp + Key + transport_preference + Title + Transport + Titles + + udp + tcp + tls + + Type + PSMultiValueSpecifier + Values + + udp + tcp + tls + + + + DefaultValue + None + Key + media_encryption_preference + Title + Media Encryption + Titles + + None + SRTP + ZRTP + + Type + PSMultiValueSpecifier + Values + + None + SRTP + ZRTP + + + + + diff --git a/Settings/InAppSettings.bundle/Root.plist b/Settings/InAppSettings.bundle/Root.plist index ae95540e2..894289cae 100644 --- a/Settings/InAppSettings.bundle/Root.plist +++ b/Settings/InAppSettings.bundle/Root.plist @@ -92,6 +92,12 @@ Type PSToggleSwitchSpecifier + + Title + Settings + Type + PSGroupSpecifier + Type PSToggleSwitchSpecifier @@ -102,6 +108,52 @@ DefaultValue + + Key + audio_menu + File + Audio + Title + Audio + Type + PSChildPaneSpecifier + + + Key + video_menu + File + Video + Title + Video + Type + PSChildPaneSpecifier + + + File + Call + Title + Call + Type + PSChildPaneSpecifier + + + File + Network + Title + Network + Type + PSChildPaneSpecifier + + + Key + advanced_menu + File + Advanced + Title + Advanced + Type + PSChildPaneSpecifier + Title @@ -109,28 +161,20 @@ PSGroupSpecifier - File - Audio + Key + about_button Title - Audio Codecs + About Type - PSChildPaneSpecifier + IASKButtonSpecifier - File - Video + Key + quit_button Title - Video + Quit Type - PSChildPaneSpecifier - - - File - Advanced - Title - Advanced - Type - PSChildPaneSpecifier + IASKButtonSpecifier StringsTable diff --git a/Settings/InAppSettings.bundle/Video.plist b/Settings/InAppSettings.bundle/Video.plist index 56af43866..3cc5566b7 100644 --- a/Settings/InAppSettings.bundle/Video.plist +++ b/Settings/InAppSettings.bundle/Video.plist @@ -14,6 +14,24 @@ DefaultValue + + Type + PSToggleSwitchSpecifier + Title + Automatically accept video + Key + accept_video_preference + DefaultValue + + + + Type + PSToggleSwitchSpecifier + Title + Show self view + Key + self_video_preference + Title Codecs diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index d4a3740c7..a82fa9517 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -448,26 +448,12 @@ D37DC7001594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DB1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m */; }; D37DC7011594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */; }; D37DC7021594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */; }; - D37DC7031594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DF1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.m */; }; - D37DC7041594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DF1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.m */; }; D37DC7051594AE6F00B2A5EB /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */; }; D37DC7061594AE6F00B2A5EB /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */; }; D37DC7071594AE6F00B2A5EB /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E31594AE6F00B2A5EB /* IASKSwitch.m */; }; D37DC7081594AE6F00B2A5EB /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E31594AE6F00B2A5EB /* IASKSwitch.m */; }; D37DC7091594AE6F00B2A5EB /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E51594AE6F00B2A5EB /* IASKTextField.m */; }; D37DC70A1594AE6F00B2A5EB /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E51594AE6F00B2A5EB /* IASKTextField.m */; }; - D37DC70B1594AE6F00B2A5EB /* IASKAppSettingsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6E71594AE6F00B2A5EB /* IASKAppSettingsView.xib */; }; - D37DC70C1594AE6F00B2A5EB /* IASKAppSettingsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6E71594AE6F00B2A5EB /* IASKAppSettingsView.xib */; }; - D37DC70D1594AE6F00B2A5EB /* IASKAppSettingsWebView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6E81594AE6F00B2A5EB /* IASKAppSettingsWebView.xib */; }; - D37DC70E1594AE6F00B2A5EB /* IASKAppSettingsWebView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6E81594AE6F00B2A5EB /* IASKAppSettingsWebView.xib */; }; - D37DC70F1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6E91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.xib */; }; - D37DC7101594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6E91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.xib */; }; - D37DC7111594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6EA1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.xib */; }; - D37DC7121594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6EA1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.xib */; }; - D37DC7131594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6EB1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.xib */; }; - D37DC7141594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6EB1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.xib */; }; - D37DC7151594AE6F00B2A5EB /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6EC1594AE6F00B2A5EB /* IASKSpecifierValuesView.xib */; }; - D37DC7161594AE6F00B2A5EB /* IASKSpecifierValuesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37DC6EC1594AE6F00B2A5EB /* IASKSpecifierValuesView.xib */; }; D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; }; D37DC7191594AF3F00B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; }; D38327F31580FE3A00FA0D23 /* contacts_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EB1580FE3A00FA0D23 /* contacts_default.png */; }; @@ -1277,20 +1263,12 @@ D37DC6DB1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTextFieldSpecifierViewCell.m; sourceTree = ""; }; D37DC6DC1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTitleValueSpecifierViewCell.h; sourceTree = ""; }; D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTitleValueSpecifierViewCell.m; sourceTree = ""; }; - D37DC6DE1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSToggleSwitchSpecifierViewCell.h; sourceTree = ""; }; - D37DC6DF1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKPSToggleSwitchSpecifierViewCell.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; D37DC6E01594AE6F00B2A5EB /* IASKSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSlider.h; sourceTree = ""; }; D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSlider.m; sourceTree = ""; }; D37DC6E21594AE6F00B2A5EB /* IASKSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSwitch.h; sourceTree = ""; }; D37DC6E31594AE6F00B2A5EB /* IASKSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSwitch.m; sourceTree = ""; }; D37DC6E41594AE6F00B2A5EB /* IASKTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKTextField.h; sourceTree = ""; }; D37DC6E51594AE6F00B2A5EB /* IASKTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKTextField.m; sourceTree = ""; }; - D37DC6E71594AE6F00B2A5EB /* IASKAppSettingsView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKAppSettingsView.xib; sourceTree = ""; }; - D37DC6E81594AE6F00B2A5EB /* IASKAppSettingsWebView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKAppSettingsWebView.xib; sourceTree = ""; }; - D37DC6E91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSSliderSpecifierViewCell.xib; sourceTree = ""; }; - D37DC6EA1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSTextFieldSpecifierViewCell.xib; sourceTree = ""; }; - D37DC6EB1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKPSToggleSwitchSpecifierViewCell.xib; sourceTree = ""; }; - D37DC6EC1594AE6F00B2A5EB /* IASKSpecifierValuesView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IASKSpecifierValuesView.xib; sourceTree = ""; }; D37DC7171594AF3400B2A5EB /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; D38327EB1580FE3A00FA0D23 /* contacts_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_default.png; path = Resources/contacts_default.png; sourceTree = ""; }; D38327EC1580FE3A00FA0D23 /* contacts_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_selected.png; path = Resources/contacts_selected.png; sourceTree = ""; }; @@ -2361,7 +2339,6 @@ D37DC6C41594AE6F00B2A5EB /* Controllers */, D37DC6CC1594AE6F00B2A5EB /* Models */, D37DC6D71594AE6F00B2A5EB /* Views */, - D37DC6E61594AE6F00B2A5EB /* Xibs */, ); name = InAppSettingsKit; sourceTree = ""; @@ -2408,8 +2385,6 @@ D37DC6DB1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m */, D37DC6DC1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.h */, D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */, - D37DC6DE1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.h */, - D37DC6DF1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.m */, D37DC6E01594AE6F00B2A5EB /* IASKSlider.h */, D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */, D37DC6E21594AE6F00B2A5EB /* IASKSwitch.h */, @@ -2421,20 +2396,6 @@ path = InAppSettingsKit/Views; sourceTree = ""; }; - D37DC6E61594AE6F00B2A5EB /* Xibs */ = { - isa = PBXGroup; - children = ( - D37DC6E71594AE6F00B2A5EB /* IASKAppSettingsView.xib */, - D37DC6E81594AE6F00B2A5EB /* IASKAppSettingsWebView.xib */, - D37DC6E91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.xib */, - D37DC6EA1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.xib */, - D37DC6EB1594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.xib */, - D37DC6EC1594AE6F00B2A5EB /* IASKSpecifierValuesView.xib */, - ); - name = Xibs; - path = InAppSettingsKit/Xibs; - sourceTree = ""; - }; D38935F715A6D06800A3A3AA /* CPAnimation */ = { isa = PBXGroup; children = ( @@ -2709,12 +2670,6 @@ D35E758915932DE60066B1C1 /* backspace_disabled.png in Resources */, D35E758D15934F360066B1C1 /* call_disabled.png in Resources */, D35E7599159460580066B1C1 /* ChatViewController.xib in Resources */, - D37DC70B1594AE6F00B2A5EB /* IASKAppSettingsView.xib in Resources */, - D37DC70D1594AE6F00B2A5EB /* IASKAppSettingsWebView.xib in Resources */, - D37DC70F1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.xib in Resources */, - D37DC7111594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.xib in Resources */, - D37DC7131594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */, - D37DC7151594AE6F00B2A5EB /* IASKSpecifierValuesView.xib in Resources */, D32942A41594C94300556A1C /* SettingsViewController.xib in Resources */, D34F6F9E1594D3FB0095705B /* InAppSettings.bundle in Resources */, D3EA5403159852080037DC6B /* chat_edit_default.png in Resources */, @@ -2962,12 +2917,6 @@ D35E758A15932DE60066B1C1 /* backspace_disabled.png in Resources */, D35E758E15934F360066B1C1 /* call_disabled.png in Resources */, D35E759A159460580066B1C1 /* ChatViewController.xib in Resources */, - D37DC70C1594AE6F00B2A5EB /* IASKAppSettingsView.xib in Resources */, - D37DC70E1594AE6F00B2A5EB /* IASKAppSettingsWebView.xib in Resources */, - D37DC7101594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.xib in Resources */, - D37DC7121594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.xib in Resources */, - D37DC7141594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.xib in Resources */, - D37DC7161594AE6F00B2A5EB /* IASKSpecifierValuesView.xib in Resources */, D32942A51594C94300556A1C /* SettingsViewController.xib in Resources */, D34F6F9F1594D3FB0095705B /* InAppSettings.bundle in Resources */, D3EA5404159852080037DC6B /* chat_edit_default.png in Resources */, @@ -3143,7 +3092,6 @@ D37DC6FD1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m in Sources */, D37DC6FF1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m in Sources */, D37DC7011594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */, - D37DC7031594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */, D37DC7051594AE6F00B2A5EB /* IASKSlider.m in Sources */, D37DC7071594AE6F00B2A5EB /* IASKSwitch.m in Sources */, D37DC7091594AE6F00B2A5EB /* IASKTextField.m in Sources */, @@ -3232,7 +3180,6 @@ D37DC6FE1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m in Sources */, D37DC7001594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m in Sources */, D37DC7021594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */, - D37DC7041594AE6F00B2A5EB /* IASKPSToggleSwitchSpecifierViewCell.m in Sources */, D37DC7061594AE6F00B2A5EB /* IASKSlider.m in Sources */, D37DC7081594AE6F00B2A5EB /* IASKSwitch.m in Sources */, D37DC70A1594AE6F00B2A5EB /* IASKTextField.m in Sources */, diff --git a/linphonerc b/linphonerc index 8eede1cd0..0a774e77a 100644 --- a/linphonerc +++ b/linphonerc @@ -17,7 +17,6 @@ register_only_when_network_is_up=1 auto_net_state_mon=0 keepalive_period=30000 - [rtp] audio_rtp_port=7076 video_rtp_port=9078 @@ -42,3 +41,4 @@ show_local=0 enabled=1 size=qvga display_filter_auto_rotate=1 + From b5e11e250ea9e0960f85b7ed76540f1bde34594d Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Sat, 21 Jul 2012 15:11:09 +0200 Subject: [PATCH 066/397] update exosip to increase timeouts --- submodules/externals/exosip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/externals/exosip b/submodules/externals/exosip index 8c42924ae..dfe434328 160000 --- a/submodules/externals/exosip +++ b/submodules/externals/exosip @@ -1 +1 @@ -Subproject commit 8c42924ae9009f6003e98d29638e078ca1bd7c71 +Subproject commit dfe434328c0b0cbbaee669d40b27e09fea5f49ab From 88aba8b5e27c4f0a9c12d16be11a2279871ac249 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 23 Jul 2012 19:04:55 +0200 Subject: [PATCH 067/397] Screen rotation --- Classes/ChatRoomViewController.m | 4 +- Classes/ChatViewController.m | 4 +- Classes/ContactDetailsViewController.m | 4 +- Classes/ContactsViewController.m | 4 +- Classes/DialerViewController.m | 12 +- Classes/FirstLoginViewController.m | 4 +- Classes/HistoryDetailsViewController.m | 4 +- Classes/HistoryViewController.m | 4 +- Classes/InCallTableViewController.m | 4 +- Classes/InCallViewController.m | 42 +- Classes/InCallViewController.xib | 54 +- Classes/LinphoneUI/UICallBar.h | 3 +- Classes/LinphoneUI/UICallBar.m | 90 +- Classes/LinphoneUI/UICallBar.xib | 1194 ++++++++++++++++- Classes/LinphoneUI/UICallCell.xib | 35 +- .../LinphoneUI/UICompositeViewController.h | 21 +- .../LinphoneUI/UICompositeViewController.m | 111 +- .../LinphoneUI/UICompositeViewController.xib | 159 ++- Classes/LinphoneUI/UIStateBar.h | 3 +- Classes/LinphoneUI/UIStateBar.xib | 194 ++- Classes/PhoneMainView.m | 16 +- Classes/PhoneMainView.xib | 45 +- Classes/PhoneViewController-ipad.xib | 1140 ---------------- Classes/SettingsViewController.m | 4 +- .../TPMultiLayoutViewController.h | 27 + .../TPMultiLayoutViewController.m | 241 ++++ Classes/WizardViewController.m | 4 +- Resources/conference_default_landscape.png | Bin 0 -> 9530 bytes Resources/conference_over_landscape.png | Bin 0 -> 6277 bytes .../dialer_alt_back_default_landscape.png | Bin 0 -> 6970 bytes Resources/dialer_alt_back_over_landscape.png | Bin 0 -> 5124 bytes Resources/dialer_alt_default_landscape.png | Bin 0 -> 8021 bytes Resources/dialer_alt_over_landscape.png | Bin 0 -> 5348 bytes Resources/hangup_default_landscape.png | Bin 0 -> 5991 bytes Resources/hangup_over_landscape.png | Bin 0 -> 6012 bytes Resources/micro_off_default_landscape.png | Bin 0 -> 7848 bytes Resources/micro_off_disabled_landscape.png | Bin 0 -> 7529 bytes Resources/micro_off_over_landscape.png | Bin 0 -> 7924 bytes Resources/micro_on_default_landscape.png | Bin 0 -> 6788 bytes Resources/micro_on_disabled_landscape.png | Bin 0 -> 6572 bytes Resources/micro_on_over_landscape.png | Bin 0 -> 6808 bytes Resources/options_add_default_landscape.png | Bin 0 -> 7294 bytes Resources/options_add_disabled_landscape.png | Bin 0 -> 7120 bytes Resources/options_add_over_landscape.png | Bin 0 -> 7393 bytes Resources/options_default_landscape.png | Bin 0 -> 8466 bytes Resources/options_disabled_landscape.png | Bin 0 -> 8225 bytes Resources/options_over_landscape.png | Bin 0 -> 8495 bytes Resources/options_selected_landscape.png | Bin 0 -> 8649 bytes .../options_transfer_default_landscape.png | Bin 0 -> 7392 bytes .../options_transfer_disabled_landscape.png | Bin 0 -> 7194 bytes Resources/options_transfer_over_landscape.png | Bin 0 -> 7499 bytes Resources/pause_off_default_landscape.png | Bin 0 -> 7126 bytes Resources/pause_off_over_landscape.png | Bin 0 -> 4793 bytes Resources/pause_on_default_landscape.png | Bin 0 -> 6647 bytes Resources/pause_on_over_landscape.png | Bin 0 -> 4895 bytes Resources/speaker_off_default_landscape.png | Bin 0 -> 7927 bytes Resources/speaker_off_disabled_landscape.png | Bin 0 -> 7531 bytes Resources/speaker_off_over_landscape.png | Bin 0 -> 7878 bytes Resources/speaker_on_default_landscape.png | Bin 0 -> 6524 bytes Resources/speaker_on_disabled_landscape.png | Bin 0 -> 6204 bytes Resources/speaker_on_over_landscape.png | Bin 0 -> 6464 bytes Resources/statebar_background_landscape.png | Bin 0 -> 1273 bytes Resources/transfer_default_landscape.png | Bin 0 -> 6320 bytes Resources/transfer_over_landscape.png | Bin 0 -> 6378 bytes Resources/video_off_default_landscape.png | Bin 0 -> 7924 bytes Resources/video_off_disabled_landscape.png | Bin 0 -> 7520 bytes Resources/video_off_over_landscape.png | Bin 0 -> 7915 bytes Resources/video_on_default_landscape.png | Bin 0 -> 6535 bytes Resources/video_on_disabled_landscape.png | Bin 0 -> 6229 bytes Resources/video_on_over_landscape.png | Bin 0 -> 6458 bytes linphone.xcodeproj/project.pbxproj | 286 +++- 71 files changed, 2434 insertions(+), 1279 deletions(-) delete mode 100644 Classes/PhoneViewController-ipad.xib create mode 100755 Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.h create mode 100755 Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m create mode 100644 Resources/conference_default_landscape.png create mode 100644 Resources/conference_over_landscape.png create mode 100644 Resources/dialer_alt_back_default_landscape.png create mode 100644 Resources/dialer_alt_back_over_landscape.png create mode 100644 Resources/dialer_alt_default_landscape.png create mode 100644 Resources/dialer_alt_over_landscape.png create mode 100644 Resources/hangup_default_landscape.png create mode 100644 Resources/hangup_over_landscape.png create mode 100644 Resources/micro_off_default_landscape.png create mode 100644 Resources/micro_off_disabled_landscape.png create mode 100644 Resources/micro_off_over_landscape.png create mode 100644 Resources/micro_on_default_landscape.png create mode 100644 Resources/micro_on_disabled_landscape.png create mode 100644 Resources/micro_on_over_landscape.png create mode 100644 Resources/options_add_default_landscape.png create mode 100644 Resources/options_add_disabled_landscape.png create mode 100644 Resources/options_add_over_landscape.png create mode 100644 Resources/options_default_landscape.png create mode 100644 Resources/options_disabled_landscape.png create mode 100644 Resources/options_over_landscape.png create mode 100644 Resources/options_selected_landscape.png create mode 100644 Resources/options_transfer_default_landscape.png create mode 100644 Resources/options_transfer_disabled_landscape.png create mode 100644 Resources/options_transfer_over_landscape.png create mode 100644 Resources/pause_off_default_landscape.png create mode 100644 Resources/pause_off_over_landscape.png create mode 100644 Resources/pause_on_default_landscape.png create mode 100644 Resources/pause_on_over_landscape.png create mode 100644 Resources/speaker_off_default_landscape.png create mode 100644 Resources/speaker_off_disabled_landscape.png create mode 100644 Resources/speaker_off_over_landscape.png create mode 100644 Resources/speaker_on_default_landscape.png create mode 100644 Resources/speaker_on_disabled_landscape.png create mode 100644 Resources/speaker_on_over_landscape.png create mode 100644 Resources/statebar_background_landscape.png create mode 100644 Resources/transfer_default_landscape.png create mode 100644 Resources/transfer_over_landscape.png create mode 100644 Resources/video_off_default_landscape.png create mode 100644 Resources/video_off_disabled_landscape.png create mode 100644 Resources/video_off_over_landscape.png create mode 100644 Resources/video_on_default_landscape.png create mode 100644 Resources/video_on_disabled_landscape.png create mode 100644 Resources/video_on_over_landscape.png diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index d4ee8b7fe..d4d2ab6bc 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -71,7 +71,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 16dca20f8..390b91d5d 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -92,7 +92,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar: @"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index ca7d9f787..0c120384f 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -256,7 +256,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 2c4ebc9b4..c23b5967c 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -108,7 +108,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 41fba484b..251f90687 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -106,7 +106,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:true tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } @@ -123,9 +125,11 @@ static UICompositeViewDescription *compositeDescription = nil; name:@"LinphoneCallUpdate" object:nil]; // Update on show - LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); - LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; - [self callUpdate:call state:state]; + if([LinphoneManager isLcReady]) { + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; + [self callUpdate:call state:state]; + } } - (void)viewWillDisappear:(BOOL)animated { diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index 2e88af89f..47a4c9ebe 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -62,7 +62,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:nil tabBarEnabled:false - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index f8f0aef89..be5d45d32 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -68,7 +68,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 0cdae5baf..ad45dd5f3 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -65,7 +65,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:@"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index 155fbc632..9b0e9f7d2 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -219,11 +219,11 @@ enum TableSection { [cell setConferenceCell:inConference]; [cell update]; - if (linphone_core_get_calls_nb(lc) > 1 || linphone_core_get_conference_size(lc) > 0) { + /*if (linphone_core_get_calls_nb(lc) > 1 || linphone_core_get_conference_size(lc) > 0) { tableView.scrollEnabled = true; } else { tableView.scrollEnabled = false; - } + }*/ return cell; } diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 3a17abc5e..5c06b7af4 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -91,7 +91,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:true tabBar:@"UICallBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:true + portraitMode:true]; } return compositeDescription; } @@ -125,6 +127,10 @@ static UICompositeViewDescription *compositeDescription = nil; [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LinphoneCallUpdate" object:nil]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIDeviceOrientationDidChangeNotification + object:nil]; } - (void)viewWillAppear:(BOOL)animated { @@ -139,10 +145,16 @@ static UICompositeViewDescription *compositeDescription = nil; name:@"LinphoneCallUpdate" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(orientationChanged:) + name:UIDeviceOrientationDidChangeNotification + object:nil]; + // Update on show LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; [self callUpdate:call state:state animated:FALSE]; + [self orientationUpdate]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [callTableController viewDidAppear:animated]; @@ -184,6 +196,30 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - +- (void)orientationUpdate { + int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); + UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; + int newRotation = 0; + switch (orientation) { + case UIInterfaceOrientationLandscapeRight: + newRotation = 270; + break; + case UIInterfaceOrientationLandscapeLeft: + newRotation = 90; + break; + default: + newRotation = 0; + } + if (oldLinphoneOrientation != newRotation) { + linphone_core_set_device_rotation([LinphoneManager getLc], newRotation); + LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); + if (call && linphone_call_params_video_enabled(linphone_call_get_current_params(call))) { + //Orientation has changed, must call update call + linphone_core_update_call([LinphoneManager getLc], call, NULL); + } + } +} + - (void)callUpdate:(LinphoneCall *)call state:(LinphoneCallState)state animated:(BOOL)animated { // Update table [callTableView reloadData]; @@ -405,6 +441,10 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { #pragma mark - Event Functions +- (void)orientationChanged:(NSNotification*) notif { + [self orientationUpdate]; +} + - (void)callUpdateEvent: (NSNotification*) notif { LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 8f79f3993..2e36e4b97 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -12,11 +12,11 @@ YES - IBUITableViewController IBUITableView + IBUIButton IBUIActivityIndicatorView IBUIView - IBUIButton + IBUITableViewController IBProxyObject @@ -44,13 +44,13 @@ YES - 292 + 274 YES - 292 - {320, 460} + 274 + {{1000, 1000}, {320, 460}} @@ -63,18 +63,18 @@ - 292 - {{240, 354}, {80, 106}} + 265 + {{1214, 1354}, {106, 106}} - + IBCocoaTouchFramework - 292 - {{141, 212}, {37, 37}} + 301 + {{1137, 1214}, {37, 37}} @@ -86,7 +86,7 @@ 0 - {320, 460} + {{-1000, -1000}, {2320, 2460}} @@ -103,6 +103,7 @@ {{0, -10}, {320, 480}} + _NS:418 YES @@ -133,6 +134,7 @@ {85, 33} + _NS:9 NO IBCocoaTouchFramework @@ -166,7 +168,7 @@ {320, 460} - + NO IBCocoaTouchFramework @@ -224,14 +226,6 @@ 130 - - - callTableView - - - - 109 - videoCameraSwitch @@ -248,6 +242,14 @@ 167 + + + callTableView + + + + 109 + dataSource @@ -347,12 +349,6 @@ preview - - 106 - - - callTableView - 160 @@ -368,6 +364,12 @@ callTableController + + 106 + + + callTableView + diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index e00398c5f..580fa2751 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -25,8 +25,9 @@ #import "UIVideoButton.h" #import "UIHangUpButton.h" #import "UIDigitButton.h" +#import "TPMultiLayoutViewController.h" -@interface UICallBar: UIViewController { +@interface UICallBar: TPMultiLayoutViewController { UIPauseButton* pauseButton; UIButton* conferenceButton; UIVideoButton* videoButton; diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 06d1e4148..d8567a044 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -134,35 +134,74 @@ // Set selected+disabled background: IB lack ! [videoButton setImage:[UIImage imageNamed:@"video_on_disabled.png"] forState:(UIControlStateDisabled | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[videoButton tag]] + setImage:[UIImage imageNamed:@"video_on_disabled_landscape.png"] + forState:(UIControlStateDisabled | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [videoButton setImage:[UIImage imageNamed:@"video_on_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[videoButton tag]] + setImage:[UIImage imageNamed:@"video_on_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + // Set selected+disabled background: IB lack ! [speakerButton setImage:[UIImage imageNamed:@"speaker_on_disabled.png"] - forState:(UIControlStateDisabled | UIControlStateSelected)]; + forState:(UIControlStateDisabled | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[speakerButton tag]] + setImage:[UIImage imageNamed:@"speaker_on_disabled_landscape.png"] + forState:(UIControlStateDisabled | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [speakerButton setImage:[UIImage imageNamed:@"speaker_on_over.png"] - forState:(UIControlStateHighlighted | UIControlStateSelected)]; + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[speakerButton tag]] + setImage:[UIImage imageNamed:@"sspeaker_on_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + // Set selected+disabled background: IB lack ! [microButton setImage:[UIImage imageNamed:@"micro_on_disabled.png"] - forState:(UIControlStateDisabled | UIControlStateSelected)]; + forState:(UIControlStateDisabled | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[microButton tag]] + setImage:[UIImage imageNamed:@"micro_on_disabled_landscape.png"] + forState:(UIControlStateDisabled | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [microButton setImage:[UIImage imageNamed:@"micro_on_over.png"] - forState:(UIControlStateHighlighted | UIControlStateSelected)]; + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[microButton tag]] + setImage:[UIImage imageNamed:@"micro_on_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [pauseButton setImage:[UIImage imageNamed:@"pause_on_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[pauseButton tag]] + setImage:[UIImage imageNamed:@"pause_on_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [optionsButton setImage:[UIImage imageNamed:@"options_over.png"] - forState:(UIControlStateHighlighted | UIControlStateSelected)]; + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[optionsButton tag]] + setImage:[UIImage imageNamed:@"options_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + // Set selected+over background: IB lack ! [dialerButton setImage:[UIImage imageNamed:@"dialer_alt_back_over.png"] - forState:(UIControlStateHighlighted | UIControlStateSelected)]; + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [(UIButton*) [landscapeView viewWithTag:[dialerButton tag]] + setImage:[UIImage imageNamed:@"dialer_alt_back_over_landscape.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + + [optionsView setHidden:TRUE]; + [padView setHidden:TRUE]; } - (void)viewWillAppear:(BOOL)animated { @@ -400,4 +439,43 @@ linphone_core_add_all_to_conference([LinphoneManager getLc]); } + +#pragma mark - TPMultiLayoutViewController Functions + +- (NSDictionary*)attributesForView:(UIView*)view { + NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; + + [attributes setObject:[NSValue valueWithCGRect:view.frame] forKey:@"frame"]; + [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"]; + if([view isKindOfClass:[UIButton class]]) { + UIButton *button = (UIButton *)view; + [attributes setObject:[button imageForState:UIControlStateNormal]forKey:@"image-normal"]; + [attributes setObject:[button imageForState:UIControlStateHighlighted]forKey:@"image-highlighted"]; + [attributes setObject:[button imageForState:UIControlStateDisabled]forKey:@"image-disabled"]; + [attributes setObject:[button imageForState:UIControlStateSelected]forKey:@"image-selected"]; + [attributes setObject:[button imageForState:UIControlStateDisabled | UIControlStateHighlighted]forKey:@"image-disabled-highlighted"]; + [attributes setObject:[button imageForState:UIControlStateSelected | UIControlStateHighlighted]forKey:@"image-selected-highlighted"]; + [attributes setObject:[button imageForState:UIControlStateSelected | UIControlStateDisabled]forKey:@"image-selected-disabled"]; + } + [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"]; + + return attributes; +} + +- (void)applyAttributes:(NSDictionary*)attributes toView:(UIView*)view { + view.frame = [[attributes objectForKey:@"frame"] CGRectValue]; + view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue]; + if([view isKindOfClass:[UIButton class]]) { + UIButton *button = (UIButton *)view; + [button setImage:[attributes objectForKey:@"image-normal"] forState:UIControlStateNormal]; + [button setImage:[attributes objectForKey:@"image-highlighted"] forState:UIControlStateHighlighted]; + [button setImage:[attributes objectForKey:@"image-disabled"] forState:UIControlStateDisabled]; + [button setImage:[attributes objectForKey:@"image-selected"] forState:UIControlStateSelected]; + [button setImage:[attributes objectForKey:@"image-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted]; + [button setImage:[attributes objectForKey:@"image-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted]; + [button setImage:[attributes objectForKey:@"image-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled]; + } + view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue]; +} + @end diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 1bda79f29..d5b86f993 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -35,7 +35,7 @@ - 292 + 301 @@ -43,7 +43,6 @@ {{0, 335}, {320, 125}} - _NS:9 1 @@ -58,7 +57,7 @@ - -2147483360 + 288 @@ -68,9 +67,10 @@ _NS:9 + 2 NO IBCocoaTouchFramework - + NSImage dialer_alt_background.png @@ -88,6 +88,7 @@ NO NO + 3 IBCocoaTouchFramework 0 0 @@ -95,11 +96,11 @@ 3 MC41AA - + NSImage numpad_one_over.png - + NSImage numpad_one_default.png @@ -124,15 +125,16 @@ NO NO + 4 IBCocoaTouchFramework 0 0 - + NSImage numpad_two_over.png - + NSImage numpad_two_default.png @@ -148,15 +150,16 @@ NO NO + 5 IBCocoaTouchFramework 0 0 - + NSImage numpad_three_over.png - + NSImage numpad_three_default.png @@ -172,15 +175,16 @@ NO NO + 6 IBCocoaTouchFramework 0 0 - + NSImage numpad_four_over.png - + NSImage numpad_four_default.png @@ -196,15 +200,16 @@ NO NO + 7 IBCocoaTouchFramework 0 0 - + NSImage numpad_five_over.png - + NSImage numpad_five_default.png @@ -220,15 +225,16 @@ NO NO + 8 IBCocoaTouchFramework 0 0 - + NSImage numpad_six_over.png - + NSImage numpad_six_default.png @@ -244,15 +250,16 @@ NO NO + 9 IBCocoaTouchFramework 0 0 - + NSImage numpad_seven_over.png - + NSImage numpad_seven_default.png @@ -268,15 +275,16 @@ NO NO + 10 IBCocoaTouchFramework 0 0 - + NSImage numpad_eight_over.png - + NSImage numpad_eight_default.png @@ -292,15 +300,16 @@ NO NO + 11 IBCocoaTouchFramework 0 0 - + NSImage numpad_nine_over.png - + NSImage numpad_nine_default.png @@ -316,15 +325,16 @@ NO NO + 12 IBCocoaTouchFramework 0 0 - + NSImage numpad_star_over.png - + NSImage numpad_star_default.png @@ -340,15 +350,16 @@ NO NO + 13 IBCocoaTouchFramework 0 0 - + NSImage numpad_zero_over.png - + NSImage numpad_zero_default.png @@ -364,15 +375,16 @@ NO NO + 14 IBCocoaTouchFramework 0 0 - + NSImage numpad_sharp_over.png - + NSImage numpad_sharp_default.png @@ -389,11 +401,12 @@ 3 MCAwAA + 1 IBCocoaTouchFramework - -2147483356 + 292 @@ -404,6 +417,7 @@ _NS:9 NO + 16 Add call @@ -439,6 +453,7 @@ _NS:9 NO + 17 Add call @@ -469,6 +484,7 @@ _NS:9 + 15 IBCocoaTouchFramework @@ -484,6 +500,7 @@ _NS:9 NO + 19 Video @@ -521,6 +538,7 @@ _NS:9 NO + 20 IBCocoaTouchFramework 0 @@ -533,6 +551,7 @@ _NS:9 NO + 21 Micro @@ -570,6 +589,7 @@ _NS:9 NO + 22 Speaker @@ -607,6 +627,7 @@ _NS:9 NO + 23 Add call @@ -644,6 +665,7 @@ _NS:9 NO + 24 Pause @@ -677,6 +699,7 @@ _NS:9 NO + 25 Start Conference @@ -706,6 +729,7 @@ _NS:9 NO + 26 Hangup @@ -735,6 +759,7 @@ _NS:9 NO + 27 Back @@ -766,6 +791,7 @@ _NS:9 + 18 IBCocoaTouchFramework @@ -778,6 +804,688 @@ NO IBCocoaTouchFramework + + + 301 + + + + -2147483356 + {{0, 248}, {480, 72}} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NQA + + NO + NO + NO + -1 + NO + IBCocoaTouchFramework + + + + 288 + + + + 274 + {281, 260} + + + + _NS:9 + 2 + NO + IBCocoaTouchFramework + + + + + 292 + {{-20, 10}, {107, 54}} + + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + 3 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{87, 10}, {106, 54}} + + + + NO + NO + 4 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{193, 10}, {107, 54}} + + + + NO + NO + 5 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 72}, {107, 54}} + + + + NO + NO + 6 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{87, 72}, {106, 54}} + + + + NO + NO + 7 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{193, 72}, {107, 54}} + + + + NO + NO + 8 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 134}, {107, 54}} + + + + NO + NO + 9 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{87, 134}, {106, 54}} + + + + NO + NO + 10 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{193, 134}, {107, 54}} + + + + NO + NO + 11 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 196}, {107, 54}} + + + + NO + NO + 12 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{87, 196}, {106, 54}} + + + + NO + NO + 13 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + + 292 + {{193, 196}, {107, 54}} + + + + NO + NO + 14 + IBCocoaTouchFramework + 0 + 0 + + + + + + + + {{91, 0}, {281, 260}} + + + + _NS:9 + + 1 + IBCocoaTouchFramework + + + + 292 + + + + 292 + {65, 55} + + + + _NS:9 + NO + 16 + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + options_transfer_over_landscape.png + + + NSImage + options_transfer_disabled_landscape.png + + + NSImage + options_transfer_default_landscape.png + + + + + + + 292 + {{0, 51}, {65, 55}} + + + _NS:9 + NO + 17 + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + + + NSImage + options_add_over_landscape.png + + + NSImage + options_add_disabled_landscape.png + + + NSImage + options_add_default_landscape.png + + + + + + {{415, 140}, {65, 105}} + + + + _NS:9 + + 15 + IBCocoaTouchFramework + + + + 292 + + + + 292 + {{65, 0}, {65, 82}} + + + + _NS:9 + NO + 19 + + Video + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + video_off_over_landscape.png + + + NSImage + video_off_disabled_landscape.png + + + NSImage + video_on_default_landscape.png + + + NSImage + video_off_default_landscape.png + + + + + + + -2147483356 + {{79, 20}, {37, 37}} + + + + _NS:9 + NO + 20 + IBCocoaTouchFramework + 0 + + + + 292 + {{130, 0}, {65, 82}} + + + + _NS:9 + NO + 21 + + Micro + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + micro_off_over_landscape.png + + + NSImage + micro_off_disabled_landscape.png + + + NSImage + micro_on_default_landscape.png + + + NSImage + micro_off_default_landscape.png + + + + + + + 292 + {{285, 0}, {65, 82}} + + + + _NS:9 + NO + 22 + + Speaker + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + speaker_off_over_landscape.png + + + NSImage + speaker_off_disabled_landscape.png + + + NSImage + speaker_on_default_landscape.png + + + NSImage + speaker_off_default_landscape.png + + + + + + + 292 + {{350, 0}, {65, 82}} + + + + _NS:9 + NO + 23 + + Add call + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + options_over_landscape.png + + + NSImage + options_disabled_landscape.png + + + NSImage + options_selected_landscape.png + + + NSImage + options_default_landscape.png + + + + + + + 264 + {65, 82} + + + + _NS:9 + NO + 24 + + Pause + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + pause_off_over_landscape.png + + + NSImage + pause_on_default_landscape.png + + + NSImage + pause_off_default_landscape.png + + + + + + + -2147483384 + {65, 82} + + + + _NS:9 + NO + 25 + + Start Conference + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + conference_over_landscape.png + + + NSImage + conference_default_landscape.png + + + + + + + 264 + {{195, 0}, {90, 82}} + + + + _NS:9 + NO + 26 + + Hangup + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + hangup_over_landscape.png + + + NSImage + hangup_default_landscape.png + + + + + + + 264 + {{415, 0}, {65, 82}} + + + + _NS:9 + NO + 27 + + Back + + IBCocoaTouchFramework + 0 + 0 + NO + NO + + + NSImage + dialer_alt_over_landscape.png + + + NSImage + dialer_alt_back_default_landscape.png + + + NSImage + dialer_alt_default_landscape.png + + + + + + {{0, 238}, {480, 82}} + + + + _NS:9 + + 18 + IBCocoaTouchFramework + + + {480, 320} + + + + _NS:9 + + NO + + 3 + 3 + + IBCocoaTouchFramework + @@ -973,6 +1681,22 @@ 97 + + + landscapeView + + + + 137 + + + + portraitView + + + + 138 + onPadClick: @@ -1044,6 +1768,77 @@ 98 + + + onPadClick: + + + 7 + + 132 + + + + onConferenceClick: + + + 7 + + 135 + + + + onOptionsClick: + + + 7 + + 134 + + + + waitView + + + + 129 + + + + onOptionsAddClick: + + + 7 + + 130 + + + + onOptionsClick: + + + 7 + + 136 + + + + onOptionsClick: + + + 7 + + 131 + + + + onOptionsTransferClick: + + + 7 + + 133 + @@ -1074,7 +1869,7 @@ - callTabBar + Portrait View 5 @@ -1275,6 +2070,216 @@ background + + 100 + + + + + + + + + Landscape View + + + 101 + + + + + + + optionsView + + + 102 + + + + + + + + + + + + + + + + + + pad + + + 114 + + + background + + + 115 + + + 1 + + + 116 + + + 2 + + + 117 + + + 3 + + + 118 + + + 4 + + + 119 + + + 5 + + + 120 + + + 6 + + + 121 + + + 7 + + + 122 + + + 8 + + + 123 + + + 9 + + + 124 + + + * + + + 125 + + + 0 + + + 126 + + + # + + + 127 + + + optionsAddButton + + + 128 + + + optionsTansferButton + + + 103 + + + + + + + + + + + + + + buttons + + + 106 + + + dialerButton + + + 110 + + + optionsButton + + + 113 + + + videoButton + + + 112 + + + microButton + + + 111 + + + speakerButton + + + 109 + + + pauseButton + + + 108 + + + conferenceButton + + + 107 + + + hangupButton + + + 105 + + + videoWaitView + + + 104 + + + mask + @@ -1285,12 +2290,83 @@ UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UITransparentView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIPauseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIMicroButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UISpeakerButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIMicroButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIVideoButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIVideoButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1358,13 +2434,35 @@ - 99 + 138 - UICallBar + TPMultiLayoutViewController UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICallBar + TPMultiLayoutViewController id id @@ -1629,17 +2727,28 @@ 3 {209, 136} + {130, 163} {209, 136} + {130, 163} {209, 136} + {130, 163} {530, 526} {209, 136} + {130, 163} {209, 136} + {130, 163} {222, 136} + {180, 163} {222, 136} + {180, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {220, 113} {220, 113} {220, 113} @@ -1665,26 +2774,47 @@ {220, 113} {220, 113} {155, 137} + {129, 109} {155, 137} + {129, 109} {155, 137} + {129, 109} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {155, 137} + {129, 109} {155, 137} + {129, 109} {155, 137} + {129, 109} {209, 136} + {130, 163} {209, 136} + {130, 163} {209, 136} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} {160, 134} + {130, 163} 1181 diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib index c3a0437e7..5a1b8a9c6 100644 --- a/Classes/LinphoneUI/UICallCell.xib +++ b/Classes/LinphoneUI/UICallCell.xib @@ -35,15 +35,15 @@ - 288 + 290 - 292 + 290 - 292 + 290 {{0, 63}, {320, 250}} @@ -81,7 +81,7 @@ - 292 + 293 {{0, 48}, {320, 262}} @@ -97,7 +97,7 @@ - 292 + 293 {{80, 65}, {160, 170}} @@ -119,16 +119,15 @@ _NS:9 NO - NO IBCocoaTouchFramework - 292 + 290 - 292 + 290 {320, 63} @@ -143,7 +142,7 @@ - 292 + 290 {320, 63} @@ -155,7 +154,7 @@ - 292 + 294 {{10, 0}, {206, 51}} @@ -4573,7 +4572,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 289 {{224, 14}, {25, 25}} @@ -4584,7 +4583,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - -2147483356 + -2147483359 {{216, 6}, {41, 41}} @@ -4614,7 +4613,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - -2147483356 + -2147483359 {{216, 6}, {41, 41}} @@ -4648,10 +4647,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 289 {{262, 12}, {50, 29}} + _NS:9 NO YES @@ -4676,7 +4676,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 294 {{0, 5}, {200, 40}} @@ -4699,7 +4699,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE _NS:9 - NO IBCocoaTouchFramework @@ -4709,7 +4708,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE _NS:9 - NO IBCocoaTouchFramework @@ -4718,6 +4716,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 460} + _NS:9 NO @@ -4999,7 +4998,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 59 + 75 diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index ee472f99b..d19634296 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -21,6 +21,7 @@ #import #import "LinphoneManager.h" +#import "TPMultiLayoutViewController.h" @interface UICompositeViewDescription: NSObject{ NSString *name; @@ -30,6 +31,8 @@ NSString *tabBar; BOOL tabBarEnabled; BOOL fullscreen; + BOOL landscapeMode; + BOOL portraitMode; } @property (retain) NSString *name; @@ -39,6 +42,8 @@ @property (retain) NSString *tabBar; @property (assign) BOOL tabBarEnabled; @property (assign) BOOL fullscreen; +@property (assign) BOOL landscapeMode; +@property (assign) BOOL portraitMode; - (id)copy; - (BOOL)equal:(UICompositeViewDescription*) description; @@ -46,7 +51,9 @@ stateBarEnabled:(BOOL) stateBarEnabled tabBar:(NSString*)tabBar tabBarEnabled:(BOOL) tabBarEnabled - fullscreen:(BOOL) fullscreen; + fullscreen:(BOOL) fullscreen + landscapeMode:(BOOL) landscapeMode + portraitMode:(BOOL) portraitMode; @end @@ -56,7 +63,7 @@ @end -@interface UICompositeViewController : UIViewController { +@interface UICompositeViewController : TPMultiLayoutViewController { @private UIView *stateBarView; UIViewController *stateBarViewController; @@ -69,6 +76,7 @@ UICompositeViewDescription *currentViewDescription; CATransition *viewTransition; + UIDeviceOrientation currentOrientation; } @property (retain) CATransition *viewTransition; @@ -77,10 +85,9 @@ @property (nonatomic, retain) IBOutlet UIView* contentView; @property (nonatomic, retain) IBOutlet UIView* tabBarView; -- (void) changeView:(UICompositeViewDescription *)description; -- (void) setFullScreen:(BOOL) enabled; -- (void) setToolBarHidden:(BOOL) hidden; - -- (UIViewController *) getCurrentViewController; +- (void)changeView:(UICompositeViewDescription *)description; +- (void)setFullScreen:(BOOL) enabled; +- (void)setToolBarHidden:(BOOL) hidden; +- (UIViewController *)getCurrentViewController; @end diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 990d30c22..f10acbc78 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -28,6 +28,8 @@ @synthesize tabBar; @synthesize tabBarEnabled; @synthesize fullscreen; +@synthesize landscapeMode; +@synthesize portraitMode; - (id)copy { UICompositeViewDescription *copy = [UICompositeViewDescription alloc]; @@ -37,6 +39,8 @@ copy.tabBar = self.tabBar; copy.tabBarEnabled = self.tabBarEnabled; copy.fullscreen = self.fullscreen; + copy.landscapeMode = self.landscapeMode; + copy.portraitMode = self.portraitMode; return copy; } @@ -48,7 +52,9 @@ stateBarEnabled:(BOOL) astateBarEnabled tabBar:(NSString*)atabBar tabBarEnabled:(BOOL) atabBarEnabled - fullscreen:(BOOL) afullscreen { + fullscreen:(BOOL) afullscreen + landscapeMode:(BOOL) alandscapeMode + portraitMode:(BOOL) aportraitMode { self.name = aname; self.content = acontent; self.stateBar = astateBar; @@ -56,6 +62,8 @@ self.tabBar = atabBar; self.tabBarEnabled = atabBarEnabled; self.fullscreen = afullscreen; + self.landscapeMode = alandscapeMode; + self.portraitMode = aportraitMode; return self; } @@ -83,6 +91,7 @@ - (void)initUICompositeViewController { self->viewControllerCache = [[NSMutableDictionary alloc] init]; + self->currentOrientation = UIDeviceOrientationUnknown; } - (id)init{ @@ -110,11 +119,14 @@ } - (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [contentView release]; [stateBarView release]; [tabBarView release]; [viewControllerCache removeAllObjects]; [currentViewDescription release]; + [super dealloc]; } @@ -126,6 +138,12 @@ [contentViewController viewWillAppear:animated]; [tabBarViewController viewWillAppear:animated]; [stateBarViewController viewWillAppear:animated]; + [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(orientationChanged:) + name:UIDeviceOrientationDidChangeNotification + object:nil]; } - (void)viewDidAppear:(BOOL)animated { @@ -140,6 +158,11 @@ [contentViewController viewWillDisappear:animated]; [tabBarViewController viewWillDisappear:animated]; [stateBarViewController viewWillDisappear:animated]; + [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIDeviceOrientationDidChangeNotification + object:nil]; } - (void)viewDidDisappear:(BOOL)animated { @@ -149,6 +172,39 @@ [stateBarViewController viewDidDisappear:animated]; } +- (void)orientationChanged:(NSNotification *)notification { + currentOrientation = [[UIDevice currentDevice] orientation]; + +} + +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:currentOrientation]; + [UIView beginAnimations:@"Rotation" context:nil]; + [UIView setAnimationDuration:duration]; + [self applySubLayoutsForInterfaceOrientation:correctOrientation]; + [self update:nil tabBar:nil fullscreen:nil]; + [UIView commitAnimations]; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + if(currentViewDescription != nil) { + if (interfaceOrientation == UIInterfaceOrientationPortrait || + interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { + if ([currentViewDescription portraitMode]) { + return YES; + } + } + if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || + interfaceOrientation == UIInterfaceOrientationLandscapeRight) { + if ([currentViewDescription landscapeMode]) { + return YES; + } + } + return NO; + } + return YES; +} + #pragma mark - @@ -189,6 +245,50 @@ return controller; } +- (UIInterfaceOrientation)getCorrectInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + if(currentViewDescription != nil) { + if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) { + if ([currentViewDescription portraitMode]) { + return interfaceOrientation; + } else { + return UIInterfaceOrientationLandscapeLeft; + } + } + if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) { + if ([currentViewDescription landscapeMode]) { + return interfaceOrientation; + } else { + return UIInterfaceOrientationPortrait; + } + } + } + return UIInterfaceOrientationPortrait; +} + +- (void)applySubLayoutsForInterfaceOrientation:(UIInterfaceOrientation)newOrientation { + [self applyLayoutForInterfaceOrientation:newOrientation]; + [contentViewController willRotateToInterfaceOrientation:newOrientation duration:0]; + [contentViewController willAnimateRotationToInterfaceOrientation:newOrientation duration:0]; + if ([contentViewController isKindOfClass:[TPMultiLayoutViewController class]]) { + [(TPMultiLayoutViewController*)contentViewController applyLayoutForInterfaceOrientation:newOrientation]; + } + [contentViewController didRotateFromInterfaceOrientation: newOrientation]; + + [tabBarViewController willRotateToInterfaceOrientation:newOrientation duration:0]; + [tabBarViewController willAnimateRotationToInterfaceOrientation:newOrientation duration:0]; + if ([tabBarViewController isKindOfClass:[TPMultiLayoutViewController class]]) { + [(TPMultiLayoutViewController*)tabBarViewController applyLayoutForInterfaceOrientation:newOrientation]; + } + [tabBarViewController didRotateFromInterfaceOrientation: newOrientation]; + + [stateBarViewController willRotateToInterfaceOrientation:newOrientation duration:0]; + [stateBarViewController willAnimateRotationToInterfaceOrientation:newOrientation duration:0]; + if ([stateBarViewController isKindOfClass:[TPMultiLayoutViewController class]]) { + [(TPMultiLayoutViewController*)stateBarViewController applyLayoutForInterfaceOrientation:newOrientation]; + } + [stateBarViewController didRotateFromInterfaceOrientation: newOrientation]; +} + #define IPHONE_STATUSBAR_HEIGHT 20 - (void)update: (UICompositeViewDescription*) description tabBar:(NSNumber*)tabBar fullscreen:(NSNumber*)fullscreen { @@ -222,6 +322,15 @@ stateBarViewController = [self getCachedController:description.stateBar]; contentViewController = [self getCachedController:description.content]; tabBarViewController = [self getCachedController:description.tabBar]; + + // Update rotation + UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:currentOrientation]; + UIDeviceOrientation screenOrientation = [[UIApplication sharedApplication] statusBarOrientation]; + if(screenOrientation != correctOrientation) { + // Force the screen in correct rotation + [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"setOrientation:") withObject:(id)correctOrientation]; + } + [self applySubLayoutsForInterfaceOrientation:correctOrientation]; } if(currentViewDescription == nil) { diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib index 9ee7c0b65..a2e27d760 100644 --- a/Classes/LinphoneUI/UICompositeViewController.xib +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -32,12 +32,12 @@ - 274 + 301 - 303 - {{0, 23}, {320, 380}} + 314 + {{0, 23}, {320, 389}} @@ -46,39 +46,101 @@ 3 MCAwAA - YES + NO + 1 IBCocoaTouchFramework - 303 + 290 {320, 23} _NS:9 + NO YES + 2 IBCocoaTouchFramework - 303 - {{0, 400}, {320, 60}} + 266 + {{0, 420}, {320, 60}} _NS:9 + NO YES + 3 IBCocoaTouchFramework - {{0, 20}, {320, 460}} + {320, 480} - + NO + IBCocoaTouchFramework + + + + 301 + + + + 314 + {{0, 24}, {480, 231}} + + + + _NS:9 + + NO + 1 + IBCocoaTouchFramework + + + + 290 + {480, 23} + + + + _NS:9 + + NO + YES + 2 + IBCocoaTouchFramework + + + + 266 + {{0, 260}, {480, 60}} + + + _NS:9 + + NO + YES + 3 + IBCocoaTouchFramework + + + {480, 320} + + + + + NO + + 3 + 3 + IBCocoaTouchFramework @@ -116,6 +178,22 @@ 19 + + + portraitView + + + + 24 + + + + landscapeView + + + + 25 + @@ -134,6 +212,7 @@ + Portrait View -1 @@ -164,6 +243,36 @@ tabBar + + 20 + + + + + + + + Landscape View + + + 22 + + + stateBar + + + 23 + + + + content + + + 21 + + + tabBar + @@ -177,18 +286,46 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UITransparentView com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UITransparentView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UITransparentView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 19 + 25 - UICompositeViewController + TPMultiLayoutViewController UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICompositeViewController + TPMultiLayoutViewController UIView UIView diff --git a/Classes/LinphoneUI/UIStateBar.h b/Classes/LinphoneUI/UIStateBar.h index 76be85a2c..5d0806b0d 100644 --- a/Classes/LinphoneUI/UIStateBar.h +++ b/Classes/LinphoneUI/UIStateBar.h @@ -18,8 +18,9 @@ */ #import +#import "TPMultiLayoutViewController.h" -@interface UIStateBar : UIViewController { +@interface UIStateBar : TPMultiLayoutViewController { UIImageView* registrationStateImage; UILabel* registrationStateLabel; UIImageView* callQualityImage; diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib index 23f0c3c49..0b3c3d9af 100644 --- a/Classes/LinphoneUI/UIStateBar.xib +++ b/Classes/LinphoneUI/UIStateBar.xib @@ -44,9 +44,10 @@ _NS:9 + 1 NO IBCocoaTouchFramework - + NSImage statebar_background.png @@ -59,9 +60,10 @@ _NS:567 + 2 NO IBCocoaTouchFramework - + NSImage led_disconnected.png @@ -77,21 +79,22 @@ NO YES 7 + 3 NO IBCocoaTouchFramework CARAMBA - + 3 MC42NjY2NjY2NjY3AA 1 10 - + 1 17 - + Helvetica 17 16 @@ -105,6 +108,7 @@ _NS:567 + 4 NO IBCocoaTouchFramework @@ -114,8 +118,10 @@ {{254, 3}, {27, 17}} + _NS:567 1 + 5 NO IBCocoaTouchFramework @@ -125,12 +131,98 @@ _NS:196 - + 3 MCAwAA IBCocoaTouchFramework + + + 292 + + + + 292 + {480, 23} + + + + _NS:9 + 1 + NO + IBCocoaTouchFramework + + + + + 292 + {{6, 6}, {10, 10}} + + + + _NS:567 + 2 + NO + IBCocoaTouchFramework + + + + + 292 + {{22, 0}, {189, 20}} + + + + _NS:328 + NO + YES + 7 + 3 + NO + IBCocoaTouchFramework + CARAMBA + + + 1 + 10 + + + + + + 292 + {{378, 3}, {27, 17}} + + + + _NS:567 + 4 + NO + IBCocoaTouchFramework + + + + 292 + {{413, 3}, {27, 17}} + + + + _NS:567 + 1 + 5 + NO + IBCocoaTouchFramework + + + {480, 23} + + + + _NS:196 + + IBCocoaTouchFramework + @@ -174,6 +266,22 @@ 18 + + + portraitView + + + + 25 + + + + landscapeView + + + + 26 + @@ -236,6 +344,48 @@ callSecurityImage + + 19 + + + + + + + + + + + + 20 + + + callSecurityImage + + + 21 + + + callQualityImage + + + 22 + + + background + + + 23 + + + registrationStateLabel + + + 24 + + + registrationStateImage + @@ -246,6 +396,12 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -254,13 +410,35 @@ - 18 + 26 - UIStateBar + TPMultiLayoutViewController UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UIStateBar + TPMultiLayoutViewController UIImageView UIImageView diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 2d0fc94df..cf89a8ac8 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -86,7 +86,11 @@ static PhoneMainView* phoneMainViewInstance=nil; [super viewDidLoad]; [self.view addSubview: mainViewController.view]; - [mainViewController.view setFrame:[self.view frame]]; + + if ([[UIDevice currentDevice].systemVersion doubleValue] >= 5.0) { + UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation]; + [self willRotateToInterfaceOrientation:interfaceOrientation duration:0.2f]; + } } - (void)viewWillAppear:(BOOL)animated { @@ -158,6 +162,15 @@ static PhoneMainView* phoneMainViewInstance=nil; self->loadCount--; } +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return [mainViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; +} + +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [mainViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; +} + #pragma mark - Event Functions @@ -427,6 +440,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } } + #pragma mark - ActionSheet Functions - (void)displayMessage:(ChatModel*)chat { diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 801b7f18d..6ff46115c 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -47,6 +47,7 @@ _NS:9 + 1 NO IBCocoaTouchFramework @@ -180,7 +181,7 @@ - 212 + 216 @@ -205,8 +206,48 @@ - UICompositeViewController + TPMultiLayoutViewController UIViewController + + YES + + YES + landscapeView + portraitView + + + YES + UIView + UIView + + + + YES + + YES + landscapeView + portraitView + + + YES + + landscapeView + UIView + + + portraitView + UIView + + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICompositeViewController + TPMultiLayoutViewController YES diff --git a/Classes/PhoneViewController-ipad.xib b/Classes/PhoneViewController-ipad.xib deleted file mode 100644 index 0b5db5b31..000000000 --- a/Classes/PhoneViewController-ipad.xib +++ /dev/null @@ -1,1140 +0,0 @@ - - - - 1296 - 11E53 - 2182 - 1138.47 - 569.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 - - - IBUIViewController - IBUIButton - IBUIView - IBUITextField - IBProxyObject - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - - 274 - - - - 292 - - - - 292 - {{34, 20}, {699, 78}} - - - - - 3 - MQA - - NO - NO - IBIPadFramework - 0 - - sip: - - 3 - MAA - - 2 - - - YES - 15 - - 1 - 3 - IBCocoaTouchFramework - - 1 - - Helvetica - Helvetica - 0 - 36 - - - Helvetica - 36 - 16 - - - - - 292 - {{660, 25}, {66, 68}} - - - - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - effacer.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 292 - {{413, 277}, {322, 66}} - - - - _NS:241 - NO - IBIPadFramework - 0 - 0 - Switch camera - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - - NSImage - clavier-01-108px.png - - - 2 - 15 - - - - - - -2147483356 - {{573, 112.5}, {160, 231}} - - - - NO - NO - IBIPadFramework - 0 - 0 - Back - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - clavier-01-160px.png - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 - - - - - -2147483356 - {{415, 112}, {160, 231}} - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - startcall-green.png - - - - - - - - 292 - {{413, 111}, {320, 167}} - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - startcall-gray.png - - - - - - - - - 292 - {{32, 112}, {107, 66}} - - - - - 1 - MC40MDAwMDAwMSAxIDEgMAA - - NO - NO - IBIPadFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - clavier-01-106px.png - - - - - - - 292 - {{139, 112}, {106, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 2 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{245, 112}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 3 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{245, 178}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 6 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{139, 178}, {106, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 5 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{32, 178}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 4 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{32, 244}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 7 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{139, 244}, {106, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 8 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{245, 244}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 9 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{139, 309}, {106, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - 0+ - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{32, 309}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - * - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{245, 309}, {107, 66}} - - - - NO - NO - IBIPadFramework - 0 - 0 - # - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - - 292 - {{415, 351}, {320, 20}} - - - _NS:212 - - 3 - MCAwAA - - IBIPadFramework - - - {{0, 569}, {768, 386}} - - - - _NS:212 - - 3 - MC4zMzMzMzMzMzMzIDAuNQA - - IBIPadFramework - - - {{0, 20}, {768, 1004}} - - - - _NS:212 - - IBIPadFramework - - - 2 - - - 1 - 1 - - IBIPadFramework - NO - - - - - - - eight - - - - 45 - - - - five - - - - 47 - - - - hash - - - - 49 - - - - nine - - - - 50 - - - - one - - - - 51 - - - - seven - - - - 52 - - - - star - - - - 54 - - - - three - - - - 57 - - - - two - - - - 58 - - - - view - - - - 59 - - - - zero - - - - 60 - - - - address - - - - 39 - - - - erase - - - - 46 - - - - backToCallView - - - - 40 - - - - switchCamera - - - - 56 - - - - callShort - - - - 42 - - - - callLarge - - - - 41 - - - - statusViewHolder - - - - 62 - - - - four - - - - 63 - - - - six - - - - 64 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 3 - - - - - - - - 4 - - - - - - - - 24 - - - - - - - - - - - - - - - - - - - - - - - - - - 33 - - - - - 28 - - - - - 34 - - - - - 27 - - - - - 26 - - - - - 35 - - - - - 29 - - - - - 36 - - - - - 32 - - - - - 31 - - - - - 25 - - - - - 30 - - - - - 23 - - - Address - - - 22 - - - Erase - - - 18 - - - back - - - 38 - - - - - 19 - - - Call-short - - - 20 - - - Call-large - - - 61 - - - status_holder - - - - - PhoneViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICallButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICallButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIEraseButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 64 - - - - - MainScreenWithVideoPreview - UIViewController - - PhoneViewController - UIWindow - - - - phoneMainView - PhoneViewController - - - window - UIWindow - - - - IBProjectSource - ./Classes/MainScreenWithVideoPreview.h - - - - PhoneViewController - UIViewController - - UITextField - UIButton - UIButton - UIButton - UIView - UIButton - UIEraseButton - UIButton - UIButton - UIButton - MainScreenWithVideoPreview - UITabBarController - UIButton - UIButton - UIButton - UIButton - UIButton - UILabel - UIView - UIButton - UIButton - UIButton - UIButton - - - - address - UITextField - - - backToCallView - UIButton - - - callLarge - UIButton - - - callShort - UIButton - - - dialerView - UIView - - - eight - UIButton - - - erase - UIEraseButton - - - five - UIButton - - - four - UIButton - - - hash - UIButton - - - mMainScreenWithVideoPreview - MainScreenWithVideoPreview - - - myTabBarController - UITabBarController - - - nine - UIButton - - - one - UIButton - - - seven - UIButton - - - six - UIButton - - - star - UIButton - - - status - UILabel - - - statusViewHolder - UIView - - - switchCamera - UIButton - - - three - UIButton - - - two - UIButton - - - zero - UIButton - - - - IBProjectSource - ./Classes/PhoneViewController.h - - - - UICallButton - UIButton - - IBProjectSource - ./Classes/UICallButton.h - - - - UIDigitButton - UIButton - - IBProjectSource - ./Classes/UIDigitButton.h - - - - UIEraseButton - UIButton - - IBProjectSource - ./Classes/UIEraseButton.h - - - - - 0 - IBIPadFramework - - com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - - - YES - 3 - - {106, 60} - {108, 60} - {160, 60} - {66, 65} - {60, 52} - {60, 52} - - 1181 - - diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index c2d268efb..c097ce526 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -51,7 +51,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar: @"UIMainBar" tabBarEnabled:true - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.h b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.h new file mode 100755 index 000000000..460480c33 --- /dev/null +++ b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.h @@ -0,0 +1,27 @@ +// +// TPMultiLayoutViewController.h +// +// Created by Michael Tyson on 14/08/2011. +// Copyright 2011 A Tasty Pixel. All rights reserved. +// + +#import + +@interface TPMultiLayoutViewController : UIViewController { + UIView *portraitView; + UIView *landscapeView; + + @private + NSDictionary *portraitAttributes; + NSDictionary *landscapeAttributes; + BOOL viewIsCurrentlyPortrait; +} + +// Call directly to use with custom animation (override willRotateToInterfaceOrientation to disable the switch there) +- (void)applyLayoutForInterfaceOrientation:(UIInterfaceOrientation)newOrientation; + +@property (nonatomic, retain) IBOutlet UIView *landscapeView; +@property (nonatomic, retain) IBOutlet UIView *portraitView; +@property (assign) BOOL viewIsCurrentlyPortrait; + +@end diff --git a/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m new file mode 100755 index 000000000..76fccb14c --- /dev/null +++ b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m @@ -0,0 +1,241 @@ +// +// TPMultiLayoutViewController.m +// +// Created by Michael Tyson on 14/08/2011. +// Copyright 2011 A Tasty Pixel. All rights reserved. +// + +#import "TPMultiLayoutViewController.h" + +#define VERBOSE_MATCH_FAIL 1 // Comment this out to be less verbose when associated views can't be found + +@interface TPMultiLayoutViewController () +- (NSDictionary*)attributeTableForViewHierarchy:(UIView*)rootView associateWithViewHierarchy:(UIView*)associatedRootView; +- (void)addAttributesForSubviewHierarchy:(UIView*)view associatedWithSubviewHierarchy:(UIView*)associatedView toTable:(NSMutableDictionary*)table; +- (UIView*)findAssociatedViewForView:(UIView*)view amongViews:(NSArray*)views; +- (void)applyAttributeTable:(NSDictionary*)table toViewHierarchy:(UIView*)view; +- (NSDictionary*)attributesForView:(UIView*)view; +- (void)applyAttributes:(NSDictionary*)attributes toView:(UIView*)view; +- (BOOL)shouldDescendIntoSubviewsOfView:(UIView*)view; +@end + +@implementation TPMultiLayoutViewController +@synthesize portraitView, landscapeView, viewIsCurrentlyPortrait; + +#pragma mark - View lifecycle + +- (void)viewDidLoad { + [super viewDidLoad]; + + // Construct attribute tables + portraitAttributes = [[self attributeTableForViewHierarchy:portraitView associateWithViewHierarchy:self.view] retain]; + landscapeAttributes = [[self attributeTableForViewHierarchy:landscapeView associateWithViewHierarchy:self.view] retain]; + viewIsCurrentlyPortrait = (self.view == portraitView); + + // Don't need to retain the original template view hierarchies any more + self.portraitView = nil; + self.landscapeView = nil; +} + +- (void)viewDidUnload { + [super viewDidUnload]; + + [portraitAttributes release]; + portraitAttributes = nil; + [landscapeAttributes release]; + landscapeAttributes = nil; +} + +- (void)dealloc { + [portraitAttributes release]; + portraitAttributes = nil; + [landscapeAttributes release]; + landscapeAttributes = nil; + + [super dealloc]; +} + +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { + return TRUE; +} + +-(void)viewWillAppear:(BOOL)animated { + // Display correct layout for orientation + if ( (UIInterfaceOrientationIsPortrait(self.interfaceOrientation) && !viewIsCurrentlyPortrait) || + (UIInterfaceOrientationIsLandscape(self.interfaceOrientation) && viewIsCurrentlyPortrait) ) { + [self applyLayoutForInterfaceOrientation:self.interfaceOrientation]; + } + [super viewWillAppear:animated]; +} + +#pragma mark - Rotation + +- (void)applyLayoutForInterfaceOrientation:(UIInterfaceOrientation)newOrientation { + NSDictionary *table = UIInterfaceOrientationIsPortrait(newOrientation) ? portraitAttributes : landscapeAttributes; + [self applyAttributeTable:table toViewHierarchy:self.view]; + viewIsCurrentlyPortrait = UIInterfaceOrientationIsPortrait(newOrientation); +} + +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + if ( (UIInterfaceOrientationIsPortrait(toInterfaceOrientation) && !viewIsCurrentlyPortrait) || + (UIInterfaceOrientationIsLandscape(toInterfaceOrientation) && viewIsCurrentlyPortrait) ) { + [self applyLayoutForInterfaceOrientation:toInterfaceOrientation]; + } +} + +#pragma mark - Helpers + +- (NSDictionary*)attributeTableForViewHierarchy:(UIView*)rootView associateWithViewHierarchy:(UIView*)associatedRootView { + NSMutableDictionary *table = [NSMutableDictionary dictionary]; + [self addAttributesForSubviewHierarchy:rootView associatedWithSubviewHierarchy:associatedRootView toTable:table]; + return table; +} + +- (void)addAttributesForSubviewHierarchy:(UIView*)view associatedWithSubviewHierarchy:(UIView*)associatedView toTable:(NSMutableDictionary*)table { + [table setObject:[self attributesForView:view] forKey:[NSValue valueWithPointer:associatedView]]; + + if ( ![self shouldDescendIntoSubviewsOfView:view] ) return; + + for ( UIView *subview in view.subviews ) { + UIView *associatedSubView = (view == associatedView ? subview : [self findAssociatedViewForView:subview amongViews:associatedView.subviews]); + if ( associatedSubView ) { + [self addAttributesForSubviewHierarchy:subview associatedWithSubviewHierarchy:associatedSubView toTable:table]; + } + } +} + +- (UIView*)findAssociatedViewForView:(UIView*)view amongViews:(NSArray*)views { + // First try to match tag + if ( view.tag != 0 ) { + UIView *associatedView = [[views filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"tag = %d", view.tag]] lastObject]; + if ( associatedView ) return associatedView; + } + + // Next, try to match class, targets and actions, if it's a control + if ( [view isKindOfClass:[UIControl class]] && [[(UIControl*)view allTargets] count] > 0 ) { + for ( UIView *otherView in views ) { + if ( [otherView isKindOfClass:[view class]] + && [[(UIControl*)otherView allTargets] isEqualToSet:[(UIControl*)view allTargets]] + && [(UIControl*)otherView allControlEvents] == [(UIControl*)view allControlEvents] ) { + // Try to match all actions and targets for each associated control event + BOOL allActionsMatch = YES; + UIControlEvents controlEvents = [(UIControl*)otherView allControlEvents]; + for ( id target in [(UIControl*)otherView allTargets] ) { + // Iterate over each bit in the UIControlEvents bitfield + for ( NSInteger i=0; i ", NSStringFromClass([v class])] atIndex:0]; + } + NSLog(@"Couldn't find match for %@%@", path, NSStringFromClass([view class])); + +#endif + + return nil; +} + +- (void)applyAttributeTable:(NSDictionary*)table toViewHierarchy:(UIView*)view { + NSDictionary *attributes = [table objectForKey:[NSValue valueWithPointer:view]]; + if ( attributes ) { + [self applyAttributes:attributes toView:view]; + } + + //if ( view.hidden ) return; + + if ( ![self shouldDescendIntoSubviewsOfView:view] ) return; + + for ( UIView *subview in view.subviews ) { + [self applyAttributeTable:table toViewHierarchy:subview]; + } +} + +- (NSDictionary*)attributesForView:(UIView*)view { + NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; + + [attributes setObject:[NSValue valueWithCGRect:view.frame] forKey:@"frame"]; + [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"]; + [attributes setObject:[NSNumber numberWithBool:view.hidden] forKey:@"hidden"]; + [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"]; + + return attributes; +} + +- (void)applyAttributes:(NSDictionary*)attributes toView:(UIView*)view { + view.frame = [[attributes objectForKey:@"frame"] CGRectValue]; + view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue]; + view.hidden = [[attributes objectForKey:@"hidden"] boolValue]; + view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue]; +} + +- (BOOL)shouldDescendIntoSubviewsOfView:(UIView*)view { + if ( [view isKindOfClass:[UISlider class]] || + [view isKindOfClass:[UISwitch class]] || + [view isKindOfClass:[UITextField class]] || + [view isKindOfClass:[UIWebView class]] || + [view isKindOfClass:[UITableView class]] || + [view isKindOfClass:[UIPickerView class]] || + [view isKindOfClass:[UIDatePicker class]] || + [view isKindOfClass:[UITextView class]] || + [view isKindOfClass:[UIProgressView class]] || + [view isKindOfClass:[UISegmentedControl class]] ) return NO; + return YES; +} + +@end \ No newline at end of file diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 348e2022f..3f452c51d 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -88,7 +88,9 @@ static UICompositeViewDescription *compositeDescription = nil; stateBarEnabled:false tabBar:nil tabBarEnabled:false - fullscreen:false]; + fullscreen:false + landscapeMode:false + portraitMode:true]; } return compositeDescription; } diff --git a/Resources/conference_default_landscape.png b/Resources/conference_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f3c62b6c45be0106375b63e40a2581f9309e75 GIT binary patch literal 9530 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�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 literal 0 HcmV?d00001 diff --git a/Resources/dialer_alt_back_over_landscape.png b/Resources/dialer_alt_back_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..50d9d1753486360c2702868739225a638a5f0f12 GIT binary patch literal 5124 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 literal 0 HcmV?d00001 diff --git a/Resources/dialer_alt_default_landscape.png b/Resources/dialer_alt_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..f1b2d39cfde53b09ad265e17a5835a123fb846fa GIT binary patch literal 8021 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 literal 0 HcmV?d00001 diff --git a/Resources/dialer_alt_over_landscape.png b/Resources/dialer_alt_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..d07a14243b73ea29a2d49eabdb5e6e78354eb5c7 GIT binary patch literal 5348 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 literal 0 HcmV?d00001 diff --git a/Resources/hangup_default_landscape.png b/Resources/hangup_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..e7f49a1c6f248c1bb63441b16f648b5f312ab5c4 GIT binary patch literal 5991 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 X+;-AF8b$s2cdVm%O`}ZBA?E)9+$a`n literal 0 HcmV?d00001 diff --git a/Resources/micro_off_disabled_landscape.png b/Resources/micro_off_disabled_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..fadfcbafa2c2e9e18b69ef37a8a8350c90909cd1 GIT binary patch literal 7529 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 Sh(-SS`KctQjwpU?7VtkVF`J11 literal 0 HcmV?d00001 diff --git a/Resources/micro_off_over_landscape.png b/Resources/micro_off_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..d19bfcad53b87c25fc28becda84c5380bcf04227 GIT binary patch literal 7924 zcmbVxcQjmI+xCnZqmABMj7|tMdN+FS1R*hFj210ObVes?BuWs32%<+MA<7^`?=^^? zgorMP_R6n3-}kNctoM)ataZ-Wd!PHd?y~QD@4eQEH#XEFCuJc80087V+UllP?})3r zh!_F@01*ejj;}h*z8Y4(W}c3|erRtjK*hn+9t+cPM>}Cnv1o^Ydp%eM0089ZVs7PY zWuPyI@pKnK|B(^#clWwN0{{xj{$6OzU92z69_!@dp~$uUp_L2f;-JW7DQN&V@KVD% zyJ!b`W6c5$%`t&@F|rO^%1ST=f4M6HcdRcO=I`$2;Unj-$n_Vm+*SL}uqYSoFA?9n zid=siWo2LtQ}gu3!X!oDH!yH1I7|v5f)JOGmX;QViNO(YQMi~WLhJ@YT25R{4i1O? zb8%g1^LB8QGga68N7q$Pk;~cF*Go=R)X&dP#7|tr)7wcDAuB8UheJ&4#+Aekp8yYE zwEqncAMSq{)UiGoZx=6L7f%n^A4asj=Y3yAt}9FbcER1tz~Dc`9zOpB>MCTS{%9{z zga};J-TjYWe@XlJnqvQt8UIz<$2`CbD{6}M@x1Sixtb40?tj5ovHRZ@{SmyfM$X9F z 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 literal 0 HcmV?d00001 diff --git a/Resources/micro_on_default_landscape.png b/Resources/micro_on_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..2a551232d1c8c269b9afcbf638979ef5e2ac503f GIT binary patch literal 6788 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 HiH`g)8m;|y literal 0 HcmV?d00001 diff --git a/Resources/micro_on_disabled_landscape.png b/Resources/micro_on_disabled_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..d3632a23879332611b2c7e7c62ecf811e6a69269 GIT binary patch literal 6572 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 literal 0 HcmV?d00001 diff --git a/Resources/micro_on_over_landscape.png b/Resources/micro_on_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..bafe54db742c2c09a228fa73088050cc5add6fc6 GIT binary patch literal 6808 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 X-tb5h{+$!>`(KfsmJzZ_0~P&0ov13y literal 0 HcmV?d00001 diff --git a/Resources/options_add_default_landscape.png b/Resources/options_add_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..9da363493088bee5cc832204207f74fc49b67c91 GIT binary patch literal 7294 zcmaKRbyQSe+x9SYch^t~A}~RNbW044i1g4gbVv*!14^n$cQ;BaF+-!$rJ#TkA|c)R z;qyMf=l%Zpo^P*n*4g)7*LB_ZzW25EKj%4ISDl=Mg#-WqkZWqF7~Fm%ZeMpI0ssJK zj|(b)8!-E-n)w=fI`{_Icq0Ic_MWx~kfythBf40^R$_OWCjbLwt zVX&@|U9hX2ls&h+97r}$`c}Xl;cEj5ba(Uckq&&o{V!eV+xg#R5pK}GAik~-xc{dp zGaWcc+0z>V5)%ds*@4BuAaRH=1STpWA#ooB1w+6hV5kTLDg=>`hC!vlV9>t@_iZ+B zdk1L)6}5lox{V%iJNfz|rA0&n0s@2sV8Wi>jv^2#DXG62P^i!?LdYk`!`CKI$is){ z9|aYJkDa$O(%0G31N2wX#@5r%_W}29rT?=9cjSL$J$(M%rrU;z1lk})Aj06kTlxp6 zqx1iVy1V}e?c-~J_}_Z}pTa&yK}dv%0m8@A&)e?y;2e1Vrb0?9dn0UoJ-v-QJ>CB4 zBHYQ-*VD(z6A4l_6a(ql*g1RrjsJz$(UI2l@bR_rutR97Jm9`n5O#L9mxd}!Nr}Nk zC6yH=6d@2*h$IXwC3!m}#9>m(%2I0oa8*3*{M->9zW;FT|CcNEU%7v+;Eue_tb*`% z_D9&Od3(Bp{xgxj4i2Oa+|LdUtS-N%4-|2sBdmH@6 z_y~_%w|n2(8k?;~4gfIiYpN(31=g zTavoBJdh-bD-M#Sh{o8ga&O_pefFiYZ1ClX$_L1saj~+pdZe`n?nUnN_alP6++}*s zh1#&9@tDw2MRcx!4`d2@b$ykE!|G9S&sx%Z|NhrIOyQ$lc4VUw<4LutdowkU>7K@{ z?kr-y_AUbU+(8RCy-BE30G0go*w|@;4nzR}DRgA#_5s7F;(+h?mIvw-2PgfWKC+D(J{@VH4 zN-{(^{@aBa6L$4Nj4ULw2zzEblOl(9ZukYAGETLnRI!jcT3W3lI}*x4c9xeD^|
Zex!BDPS{lL!qn}543usf4 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 Vxyx_9wZDG^HC1(0YL%=b{|{zpKAr#o literal 0 HcmV?d00001 diff --git a/Resources/options_add_disabled_landscape.png b/Resources/options_add_disabled_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..bc55521e0d7b4492506df41aef95cd8297854077 GIT binary patch literal 7120 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 MP}NZ>SF#EFKfWLU&j0`b literal 0 HcmV?d00001 diff --git a/Resources/options_add_over_landscape.png b/Resources/options_add_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e991647945f4e4c4cd30d57ab3fcc7729729ec GIT binary patch literal 7393 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 VkY4kvA1nZXp4LsxSLzNi{|};zP^ka_ literal 0 HcmV?d00001 diff --git a/Resources/options_default_landscape.png b/Resources/options_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..7667b014a760f223612fef899944315f422be375 GIT binary patch literal 8466 zcmbVycQl;c-smV9!su=EF+_r3w9%u>ND#dRF~;cK=%NjS=utxSk|08eE_!+>lcdz}F-+q3*?ESPTEzO5yBupd#0Dw#lp{#Rr487S3h=BkA zp3u*evm1aBqhf^7b+N{HBi+#e1uGXzG(^n_X@k~5BdvVhKBHv-00L_}JtK^fhPo8W z#Yq792S>oi$@PXB0FaUMaYdpW&=`m%+Q!aV7P|MT6$-Jll7$+IX}~mGmC&|!2tRkU zuAinJ%Fh8MX$6&g0Fm*Lx?$ji#vma+PL9qVQa-ZKfAN*NIsY>(2!;F$1>+zK{kKv^ z8d?w~7k4y7OaR7@g27=BxR8L5h^V-@_I?-+grd}M8L(}Mo>snQt}TEVPXCo41Nz^XAIJZ-`Run z9}dcB50tx|E5^>n8S;lC($d8fBMZIJ^xq~pxoT+qhq1HA-;TO*nV=8SRZvI(Cg|k! z$F6^2dth|X|D(o##rDwibwvy6pgmkX-BCC3u;%=S_{MktyP!XaH`+)&aksk(3er*8 z1?B04cE+eF%R+Ci2w2%!NvVp9s|pE;i^9Z(VQ>i{AqiEuup&%JTt!@2K@6^-`VWu) zMk^|;pdzLyDypO)E-WOZA|xRKla#n=;&2g3B_+xK(5g9mV35uz^gnX#Zsh(=EAqe6 zN-4Rckr)?uJr@_pe=oehsH8?7?R&!3+k-35C6+$UNdvl$ApO9R7e7N*aS)+scL?CpxNb`;kz9KXXW zq<-`iC8Hfr#Vjr*8oXbE3RTNTp_HEE?mo#0`HHvb1`=5p=z2#U)~=xiFi=7e4MKq3A@11uZ<{7%ow!8kiK+_5( z!y4R{fiFH64Vqa_doF;}%yg66heyS+?Nf7!3eTRh)_IqkH^1N*dEf?DLI?7?HGr*p z-#mV`&)ev>1@BxdlLkA_w_uxPw5KL*z%mU!T3~!i`IuyS$NPFbxyJJ0BBZ1h2{;Qc zFM1$7H#g9lTWfIuG1HO06l~R@PsxyMfTHc29*e4ui1I(FuR&$Z`=F?lKc1OF2>f6DT20UXKUB>q5j% z3Tl`PNsu_$K~jk<$swt?Ebl;ocVq8`SscMYU&F+?;>A3O8u`TN6;7UE1wMUS18U z3cq^XM(u1oyIiEsHXS&Gqt@w?q+TNO`Q8-)E;FA*B4;C^&CqTMKf^#U#4sOH`^*-U zM&->LD>e)TP->CN2#Z&T;`iN)M$#)!4zQTA416ttBI+wo6OdD z$(cHc6II^$-%_mI8Jj2nqo+!9=Da)C1YtAq~>r##j1$5^%(f2K&YbT-;HywT|p0P~R&kdo3&LlRhQ5x2(mh{#GP zMRqmxVkPrw7K;heAatawKF7Z_tTs`EaC*d}usY}O=z7v^5uZlM&TiA^p+e(3^B+^| z-Gh_W7uJ|VH;_BuI$?RAVi%WION}O|9Rx?M7v?uwNq8L~ zrm47+2UDJr{!~#k5y*^pC2CFR2UttWILrRy*6oHCt-oy+ItooNUn} zNq~vA+tDPeMf5p&XTjYkj4eUengMFI_B--!l)=Cf3j%|iQbR)S=ovp~2@?M%&f?it zOaP<>5Dw?2f!JAv*$9KfO@JfrS`4@M6*8R=@^o8Hs_mJ`fcOZ5giFvc&iGP z_pPec!DL}0@?g`NPJ|#mP#>b6BNmU`QSEw%m3=xD!r)36rhwyvzc(3Z>-?gTM86#5 zK50!wFlbiarKLR+#u4Xm>#23%?an!Wiv8CO&fSXdhzKPp5oS~>#KFMmin3xQU@jeI zU|_(a_S3U_xQlPAq;1)AHKzcjJ>{;A;*@YkrQ8n;*z9t+C#kCa02u_OhzG!jh(T%? z1X1M|cp5L=JlsN76^;xlJ_}O<%3|-AIp@CfFKKj7)&qPreE66qlUKm30XQU;8zp55 zk&+1u$;gO)=WHEv=b1fz!e8a4oy~0nv?QqLF0XH!`tZF?h>T!@tPG?{UJDu|_Y!4&a(2BrcK01K=ymu9m-YvY zlSaCOxlg)7V|hdNuP*&xgUL-)n6i>XbOU!jp5MDzEu9j2Z`{f_04ys(s72;IgEZZg z-rLl$9pqQFSqWG;Z=2?>8WR`Sa3o!oB%sn_k}gMZF-?-_|8M(!&KW zXek#WT^=Vbe9FfHPgUB;@|X_u>baCA0|Lz+LT_Uq#3q`L*py&>jA zFeYLw+A3=HR=SuI4LB}aCIUJ+Dou7@6R|f(6d$SckV1VtopBmwn@D7vb<4H}@1u_| z+sZip@E}84W6e{qkgt!Y9Ib74a`3D>b=W`pLi~0|#a!Wyft1XJ*IPHW^CYJ=tn`!L zG91U2z?5&;osdC2{q-xDO~&tqhu9rkHDJun`Yy3`#JPX)E4Se3>+4G!`C8^4ApdnS z|6o`&cADYCY;Y-0znZlL3Vln^D`Zn!*8t$+>Aamy(o^^=YFjvui;t>lzOcbt3Y(rM zfPMV}zjK%1FYwLMPHNr>72pMl*E#f=?uURK;5&pLH1M8Yu|vHVHhA`bF{DY$N88F< z=_`E8 z6#x@;x0EYrtB@CQcn|yCp{&1Mv=>}8zaxEG%uJlCOF7>ZeqYej5 zf2?X-746_ifp{pm`2;;n+e^NF_f30K3}bl_?L4cpw9PP07||USSKg=-G281|C{N6y z1n3sxMXt`}n}A}_OS^^Y>Ua!+*&By6lkV>Z+e`qsO&Rq%jz+|KB~I1fhCPXKz&go? zcpW?lYEsY%GwUTdH+G=sBR~7C`kFGyq8K( zm&RrzaqnvtQqlV}vnrM_4iC?&@uS+gLdOt+6e58O?7W}RlEH33@CwA0Qi7O;kQ|># z;TRbu$8B3kao98B^BeyDiROWQdX_c4UGo>B)s0Ga$kO@k3M(`;@kvA+n7o81Bi7e( zvTuDYZhIz&h>T1evRJly=*;kjmX$Arb(3APIki;A?X|qEvojnN7B;b!tJmI@`m!mT zIBBBmb(N-utF%^#CT856k#!&UNWXX^nYr`Fk1e~W!6E>yx2-bWX=}sdKJR()@8(JixVwTfdk?A6j z4OuZZjilrx7@oOpwa#nMdgoFpGku=Bnpdg^eHsgUPScOzBOD#D-(D9a zKjdRmrPnnb*25=xAF0B5RQK*%ttk|XA}4(~74KF$sp$6kz)L|n z+K_D`InrpYoDCBhJ6 zI7R5SP$9{^ZC6LjDlRnuYgQK%6EhF`9qJH2BR5^b^TeO_oJ|gHXlUp?%~!04>EG%g z8M_)122FILzT^4zKDiqhGJAo4X4qaGD+*OBr2z?k*VEVc{N5U~B4{P~C#OTnh_lt- zhL;ZAZ$PCS2wT+;}l#~?b8Y0Z{q4S01{?T#G?V&;bU_Skcl_cQU z{pc(LcAMzH_s=pV*i_^FOug{1)XcI3ACE{jq>TW3IT>{jrzbO8-Uh0lhl(N_3Tj*M zb}y!s-Hd=Cf?<`y?>otIq;nx<5yBS@l}oe1ZxmLS=!c4y5eK)6OUfe1O1s1d&se8h zKctx-CgK21!oJXM6?HJt%$SJEFRHvfMORMlm?DWnk#>^^H=~}Hx2kw#Y}+_1_%CUk zsu14v90JeiK9`Iyfy0TmT%W~ef@B-L3pg>;7H21}m07Q#UV%MOYGX^O3)YiD+ky7J zsyP3X60KsI*PQ*=tKt!hjl(Pq194#!d<^#fd^_aC1M%@Dvy6|!$%wJ+q^ZjZPu`R- z;&_ScRTlO#>bA?HL%+zU|7AkNm7^e#GLRYIZm)Otyz&473wLkfttJ)xb-)$FB4woM z@wQqqPWqW|dYUWC1fiJg?cR`fcMYwcMR7lz$xjp7_m7Q8Tm)i5s?h7r1d2)Wc^xxGJUwnW?wo6?LgmYl{Qg)w6?-PeMBzx)7tGk{9!RCEuUiPtel03 zdevz(0j7DLLe7eaWkw0R{#Vdt)}cj?wx0ValHaqw$H?4#cVvuulqB!rVYZ?^yPO}b zeh~M@Vu1O$s1Eh=-SGG~_R*oi7G=Jwwx`pzm1QDRMjMJ-9dGy)W0{o4mG2QtxWj~` zpg-TnT}%9q^@V8^Ymweijlh*tQ&JdDdLw@-3RS)Bo4B}o?&!R8u`SCT-Q962kN3*o zf!?>~2NVCuqPSEyibZQsB1ejhIEE*hXV4kH+jfbU{Ru7iEkV7$<-_j2$4hegBeHqs zid}{sEMZg@HN$%bMO}uC^$*9D((;9|uX1HL%fw$d_y0u`zS-0eYacTbXLn5Vb&-{` zh;>U9lOk zS0>Ulg`gl)2Z%QM4jWgNDX-`{F2Cp6x}NbjlGvsnE8Kdc#`H*R+gDiK z-DA1;_;iToyB>kjLh#HN#~!l}7p#o8c8yd_o%ZKKANf0WTgx*(|CY&qG?=5`fzpY8 zq$jvOn~vdA57aY_xRRObtxz-k{+V!B`~_E+Qtj=g zfTQ<1c*QFM`frZs%hr?QkUW07;ndFylog8NX_JZnpANKet6b%=jh9#OCmhQytOkw7 zU$bgnFW+ZZU;LVz?OO%Yh2p97<%|3h-d3?kGftx%i_=ub$569k$J=-N;z-Zpy;B-`n>H^5Ykrp zRkh%+V}uX7y}u8l`1o;jeoWAhEs=_2n&m9_Z$?i$2g{ga$wk~Gc<9LQ7I`&hmFB1N zg%Zk8z0Sy>8<{>bW`KAtr`{E~Hraq0(X+ixYWcO}nGkf^qAgs}&%U`%z_#n0kmXS@ z=bm=D&{8izHZZ;w<@(bI=Qy4bhu=xUPm(^w{wnp7kV?BW7EIyOzPpow9(t1_ar@vm zIXIb00?E?!yU24*`nhP`bb@8Xy1y%})FD2OeQKy$?EJDLj3x z#F>xitr=W8?tO;Ma0t@s>z5LCfYmx|sRg`t1#4!?Oymh8ADeT`RSprmxVmFR-wn+D zrdYtn*D4qrugg_`K7(otHFI$&K7Zc)RlK^koILf4yHN?P$PkX}es-npb_KlWY<_Vbi*H-(61>w~Ilj2Dh@G_opZ2O|#|Y=PMq(AMBMOi+HKy zUrh#XJoFYCdBH`|vyqsVS)Ww#4eikAVh(SJEE8Xm2Xx-K?>awl>vIgN4^B zrq9Fh3j6r79hqcNCX~ueC-3r)hqt025e79(hlkE0E4>j!j%T7AP3d+^8`@W}uKqF0 z@^s3)ii!l2)>qiT--v(D>_}(j`j=Uxa;8J!zi%z!m3qiMB;IGn3qcXIO-{b;-)c78 zr^NY?)4qA0dUosU;By{gpijLvG>vIOtfs<0h+4+)Le71A^_ z00*UsTy}dMp`Iiryce6j_k9t>VQ&A*VnXcO@v9-9`p~jijZcU0_wk#s5XtkMiM%~2 z3CKZg*A5O5T1P@2g&50}JHt&5M%!a3H*YXLv z7#k5kBVyvZTA(s-iI8Uc{ zNayS*je$L$g59d`&zXxQUTh#`mo_1yITt5R1Eu$pw!;pa+xl17MZ%D^ zp5S+p90y`azB>BUzj86aLxb*D+e&(ilCCuG%1d6BIViMf70WKpqG|* zv7`UpM9)MJg4-&YZ`i9>)8*G(TyeIwOPPm4juqp*Ltn~{Wmr|*+g1&eSFsxxcKIt3 zZ(P`nTE83`rKPK{RwJ)~lG4_KYW?pWLvl^@T_VP{z6~Y$=Pv~{6;0)GMT^k?1KdJh Ay8r+H literal 0 HcmV?d00001 diff --git a/Resources/options_disabled_landscape.png b/Resources/options_disabled_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..ba6b19454aabb55b757c7d2cf3883c52560c5bb8 GIT binary patch literal 8225 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%0Dj*(s zbsToG{5&TjfxMl+mN6)B-sJ@Y{wFfRs}FvT@w!tSjK#ML5TZ&!&}0QGD&c&fU;T`S z$oVvdZZS=m`pr%W>s}vPj@HF~xf;@b{FX}G@3O&>S|^3rf9h#gREA((mq&8&o3Qt3 z7n0H1%@g2|tO1;%xF>wypmlV9CW|IBIK@Dy7>YUh=g%UA-_Zlk2v2tDdhFV`kyj}p zFIhc$0E(g5rqaJ;d~PzeM3#fjwS|XeHoCPM^HG zhTNZFX5?wNBU;i2csQ@*b$BGBL$S%*Vj4BQ1kBhVpHudxx1Kuv;iN0YylfHv2%0N= z+4ml3i#Jz&QM3Z_+O@WKn;Q2!SCY|EA4fxw2(((R>G9{XrMfLg#Dt5n9WtpEVrQl5$t)D{pGIO0f|vPZH$9sBhu zdzVsuG_~_>nyeQb1Ky+@Oalj7sS?a~#nBTsAi+>}2$(;$?{W2NAw6aMXw_#$L*thDO zO)R0>>GJccWOywU=~mdP4glxD0QsEOO?^Xmunp{R;?v>$-shYW~-3z-ZtDIZs9> z50ejQg+i5Y0in8uNR~!(RAoiw@aiK@Q2rxI(4s!QW7c+fv)9$GM=|HYO zM<3|>`14v8wyy=kw@gr}5}DQ-RoOXynA3t^YYZ_( zbm@}V05sMxCV58rggK`zbw=vY4+CL(gTPvgee)fEgZ^Y77x`IKRYtAmX(u<*p$Cg6 zU)OADe%El7;Y0FXyIg@krH&-W&Rcf8v5Jv|abKWiDQeF|NtrK`g2S`|gX4G5cRW|d zK>Epi4{<$WHn|BNb#!0F@IVyCSiIiV-8Lcx7!!#%HG^8*ag%}t+-NT|9FOAUo&M+t zfL2!qBTg6jQVV?g$7SUWgAK=8NGbTXe7&*o#=Qgov%;!#kjEz(Of#&aPa?uv)rgz< zR@IbLz{#>PgF#x@@8}{t3&w_t`#quZ=2pyyV<33GSbNncJ*xF=f@}B9uO5N@JE6iP z!W=I{JY)vlNA`JZz^F#R#DU}^tdE8~=}AiKgTy%TWi5<#7W4iHd6pkD)&9D!Ex=c? zXgDGIiHz+N2Iet9&OT*^1}Hh%v2ZDlLln|F1m_FtE1Aa14$69(*~qAPf%*QvlR6rf zt^R2gyVu1_GSN%Q9X1{rjOXKF#;;6{;(1(FT_L1$>Z>Ju0=E_}iKl&3!Ys;0V-(=; zGSJA(YDGA%2wynpI>ui%lNJw#Z0U%B!vc5;Iao9>(~shBFlO+<+o_fcU)7uar-{#6 zfilGn^)2XCNfXtg^xr(BymQXBdmL816(;1uQsR-FTa}7Q{Bqly37b8(IKFhJ84M@M z2p;7fElIJcyfu&%3GrkPzB>A%Gn6dtv5lbHy#H#nn{`HNlozLhhy2QIL-{g1V(|If z!^t-B+_2YC+gcw!@Au!{59&(WRvt;?oo!p96Ov*WDdw2@9n@zg|6*|D4(;;zi1s;Y zyjHWB1R5UDep#2(5wN(lB(%PGPW@>1xX`>v3FT2Gml@V$;-R(TEJ-s+?=8^awOqdnIY zwXz{OX+{++HFVe6@S<&1{Sp9&vu@}tJ||vBrRSiBmfk_CJ_lMz?6u+a-0|U#lycZp z=XsjCobeZU7bw_Bi-XpN-RhG e-)Rf?9&4bj;kxvhVBw#i_R8|=a+Oev(EkA^G$|4Q literal 0 HcmV?d00001 diff --git a/Resources/options_over_landscape.png b/Resources/options_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..56f739db57e163c4fca8f2f3c67e405f75a53d00 GIT binary patch literal 8495 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 literal 0 HcmV?d00001 diff --git a/Resources/options_transfer_default_landscape.png b/Resources/options_transfer_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba3017f4405388a7601523aa72a12f14ac25f9b GIT binary patch literal 7392 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 agd_G{mqH-e1cm?pbJS4LQU0K48TmhMOg|d{ literal 0 HcmV?d00001 diff --git a/Resources/options_transfer_disabled_landscape.png b/Resources/options_transfer_disabled_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..179f166147d25232ab55000fb2e74d87cc63c198 GIT binary patch literal 7194 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 literal 0 HcmV?d00001 diff --git a/Resources/options_transfer_over_landscape.png b/Resources/options_transfer_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..1f5950fca6c16e6bfd1f584fe1a09541bc18d9d6 GIT binary patch literal 7499 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 literal 0 HcmV?d00001 diff --git a/Resources/pause_off_default_landscape.png b/Resources/pause_off_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..4c73470f83d4be9c2a039da57bd2ffdd665d9f2e GIT binary patch literal 7126 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 UfBv*-s_Lp#DceT=7w*uiv;Y7A literal 0 HcmV?d00001 diff --git a/Resources/pause_off_over_landscape.png b/Resources/pause_off_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..66545c2d4ddc90990034fdcb98c85df7e76689db GIT binary patch literal 4793 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 N>1i2jR;W8f{0|S2PU!#u literal 0 HcmV?d00001 diff --git a/Resources/pause_on_default_landscape.png b/Resources/pause_on_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..58c98a583d4d669a77d255ed90d7876c4891017e GIT binary patch literal 6647 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

-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 HS>gT%EW`B~ literal 0 HcmV?d00001 diff --git a/Resources/pause_on_over_landscape.png b/Resources/pause_on_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..37b2875db7664b5e1fba6006363e1ac62062480f GIT binary patch literal 4895 zcmbVLc{tSV*Pmf9_OWFx)94WiGmLF)GX|0DW2qE_!B}P(Lt~w>)ljywMv>GbrpQv1 zL?UfOb`@D3+K?qfmUrr@=l5RM`&_?2-g8~w>%PzZJ?C@I`J8i79qbMX3&;ro003cY zD|08#naKIBf_VV|AY$bko1@55E!?TjWIyUDJcR(j_>#Q|Q0ox9Kf#HB_l*jBN-zQd zxc!JYcdEPX5tI)(L<9fBMuQd-%JBvOj7({vc%L8w73xj!Cz6a|3-=$wphRC|n469* z+%^y$KcMz%tN5D1VTABzgb%Y*DTMGq; zLw^a36OH2QhjKEv{1uC%8N&jo)KHYB=BZPsG)`%2kSYF}2m=Fy9~fF%>KqI8@F)@$ zPg5s_EB!_=CxrV@h@n&>nFRfTi1#K(P>o@nO#dz+B-GaSA7E1WFQPbQ#(-eHL zIoT&7gg~NNn;XM8e>8lFz9>sQJxc^a4++=Pg6rxd5c-z7T4r#po`s${Mn@N8`5WWk zeD&eFItB)o=2(oL76M^`(AS0==yOC*SK9!KHTcKZniNjOlY9uj;}SV>fB9nnt1k*m zA>gTG3XV(;{yhN>0c0vUJb)Yu#X9RiZSg)t(hvPdd;YH0oIoK)5_~Nwc;4rn{x)qz+A^n2Z2Pwe);l_RB%}FbIR4kL{C?t0;E(G+ zqt8+PSsnt3voRFTYAD}QdkX-F+FP4raI{hH=BZEk|y*~}MySL)qvSX&qKOUNz0}edue%pdynVCHWz?Wc^2=0 z$Z`Trse=dE@gAUAF!H!uc3R+=ERFhd?zoC}??H7393-4(A#tKi;sn@Pfwve#oR)53 zrObqIzob6?m$(i(G(!3pvyWY#D!*~PR zl8!A=!$G>O^D=oyH});m38F@~kG zr6;1H!RzPe$4Yx((4y7IHKy$`k-@VH==icXc(>y&U02@7NRhJsr05P@&+gKUgWw(Z zw{(@&KlyAf%0z&K03b-klt`e}9==HnbgVeD8atM@GdBsCzW%m){GqG~eWzoQ+iHhb zHaE=C6PHg_N|g859Ov&sryzR68cyAFA=eLGGymYGS~3#e0g za~JeY&H9Ua?>+%^#)RF?-NVS%N`LFf00$khM1{8FCIqi=VBIS4eRoc4#bNaca|Syjyjt zg8$Bk{nNd|uU@4qf6^Rn;EUg8i*ydRM(uJv9aL;IftQU1Oj`+;Dh(Wschr++obfi< zQLZ4V!zGWp^BYQnk_)$;=r6$HX^(Ggy?BhQX_`>1F*H3Uat`Iy59FQ)FaV#6ULI~o zL!SIeJgCA>NJ})sI3Aq4Pg?@6d>*Na?$2LTX8MboV5*Oquk@WwV^(anW)}EPZQf1o z47}|qKjgaue;abqVPouzU8LXnrsf;8ys50DBaMm@$%(qlU*&Snx(;^_YmA5tYYb=H z5YscydcAb~;H5;#p-iQS#^Hz*kKy1#k5h#6yW_?%FQXbpfQu0-tg$5jK zKK-N(nX?$SNAbdY-%PWltaVR__3SS}IuOhb4$D04<)U0Dxx`7n65@RU;KE90YC zQY|NxeEN+YCw$_TWK3*$K-YG-jKFnc9RV@37ZiR2c~c*jzSl{nlwR1t+iIk^9O+DvI`Jir{gE~g~jBWfbpw0$q&ALl7CK7x89vx z^N4@i&iCH-rL*Qyv;+QT3TLm^LQp!Zxu+S~oy`5uEGD~a)-f`<@if+PVxytYqI$2$ zPUd$&Zq6tz@tuV(b~tM8n)Ckr`I{^6cK62LdT<~O?R?#qXSvW1mP1z&ZmYfA6?iwN zeP}PYq1MYgHV!5dX>r$O{VogtabTUbd#Rn?P~;h>LK-n%AWoV#0|c7M(4 z1D}thvfAX~Q)$7vA9Gt~F`tL{u^*2(*1{IMq`97N1x)NO3vv2pM=txCngf14z+HBj zuC9eYpV7M-Cl`%D8d1*dSx*qR*+{5O_CBt1Npi0Z%$Z#*#$*5;CCeWwTCK}N+eMI8 z1#X-D)nT1cmgp{dU^{;UYsg zyFJskTk>N4q>`gxr=`X~ckkZHj3x0T!(iPeEeQ?w4$E&krs+2k1s{TJc<_#48{dpk z5mR|@tJ=G-^7TK6xnQ5`s+qm@E(W#9w)@6E?r9& zTDLl;$IEpuq{s_arx3F2gjx!;6h;jp~!(Z8*S&l76PJf2}pwr5tq0SwbCJmLMw*%0p&BQR)Hr{EqjGCjtJ@I-58Qrx+DMH(XUx1c(F?WkVt=; z0)BNs7@zhmMJ_sUjaXl;%K!+;(fyldnqSPpjv8C3D?ubFibhg*iz+13MLFnEnfqNuaF_67J`_`Q=!msgKB;b$6zF0OaF zvxTNEtG$jZfWI9+P86s(>XpuIc+{mvfXwUW8;X^i4>WmO6R0qV94|-KG$#}pM$ikk zN_8|@VP3g`DdUQS)XvuUrWr)hVeaP-OkZWOzAUu%7$M;XXns(_PYQlc6!SO{Mz$QRvw%+oM0;OV%4-K5uwa{4922 z);vD7-Vr19;HgN~oB6KZ?lC^n^L5ju?2T;~3!TtoDs`2i8!My|50(P977AhEOH5RG zH0|hxGfQ8s^H7=AUyG*?{N>$6Y*s6au#C)0-#J426qaN+TdMCzmy5l8XSw+*QMvVV z#iM+RjTeml?&<8#`JlNVtQ$@(Zu?~F#kvvyWwbuOk{QJiC!*Xwe`dZk9K`}WCRMw# zl+x=m_dPndHYEg@_ zp>vpgo-LvtM&D7YmzhvEX@5YZQL>@2WG^ySz3DG;Dk%B3#!{5bS*D+n|5X#?U9BR2 z+TB!+alc=+%(`DKAnzTxU>)Pu=MUR@SC~)QxLYi7WXF1X`IYcYwA$K+3}Cj+wQ}WJ z!XN|gDW;DsR(K1NeD~pea^N|JYD=~6(-$S#DqZn4oek^p-V3aD+>Nsmwp< z4Nn(n2q$eo8HCXbg5N-9m+OGZujST2u%0w2v=P%4{dC{W!z|x9R&sOyz3`r_Z0Zq4 z<9A6K5Cn#z0YEM=1kC_&fgn%@00^qs19sWAeJ4!L#K$0z(40(@cBq}p6Z=mp#r(%oW!M+A5OZ^HedX`MD-iX?0 zS!}ltTz}#T;G#k@f-*}o%jD5>jd??K*P%Ve+~6!HwY5EyE+po&&1PP3mIRv7zdcw2 z06HB2g0tMN#wAxQ3J#zOaUx8i(x*J8V{cjm>>ZR875N#&!%#7y_I!JQg*>{n)*iPS z;94lUFtFI+9Em$4S0ERAd!SG;e~CJIRiJdPamY(n66fK~o_u;kRRajwm8;gHkuDG( z$uGcg;1-D9aK}k0GeXl!ODW^jdNBb8TuHJ#%Iy<3_)nbw{JYt!PaV8c*FmMFT0`}7 zJdjd_WHQifs9|TUs`DD(3$YAqThB`%uy%!Qkvrf@dy*(5Fzu1?KqPtjn-01F&dym@ zT{|_Y%7=aTwv7**5a6F3DMQ>TeIBR)UWqkvf2jS{*g_~iPUoBFJKj$Zm(EtXSQw_% zi!$2CvfwLot2)v7h?C*Z?;(dr6y-PbGo@V&L0riDHA9?^ahjM=)-c9l%wt$7z9yU< z6{~L79~IJ{tKw1>^}YDcN55v#z|rTJ^~AmfVu@*sbxTEToo0-zVwHiBe|RXsp-ysP zK34yY>{=5vKr;;|dFajc7VA-6F-7ug%olQETdIP-WJ>o;Z-9<+>A8DyS3IVSyv>N_ zR<9rHoR_QXKB;L+38l~~qH!(^s~FczK&3>=GuZhvsgHZD)H0kv(nx$psK?r*I1Tqq z!#0qv4wSI?sv_{=vR`Tayg|)@u0!QXaCO_&I(CJm*^KiE`K$fe;mJ*Or9nHXzk!@R z#adHoP;_5W{rGrwi#mH0o_vTj@e literal 0 HcmV?d00001 diff --git a/Resources/speaker_off_default_landscape.png b/Resources/speaker_off_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..b77b4ef2512c0a7d75b4699f00bd4e5cf76461bd GIT binary patch literal 7927 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 literal 0 HcmV?d00001 diff --git a/Resources/speaker_off_over_landscape.png b/Resources/speaker_off_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..4049e7b7545205b84c37268604a5a99cd7fc1ee8 GIT binary patch literal 7878 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 BCHMdU literal 0 HcmV?d00001 diff --git a/Resources/speaker_on_default_landscape.png b/Resources/speaker_on_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..90f75c1247259fb7b9cc7b703c6320b7ae0ace59 GIT binary patch literal 6524 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 HmLdNGx@#fx literal 0 HcmV?d00001 diff --git a/Resources/speaker_on_over_landscape.png b/Resources/speaker_on_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ff2f8fd4ed0689e589af623000baaf6c07ddc1 GIT binary patch literal 6464 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 literal 0 HcmV?d00001 diff --git a/Resources/statebar_background_landscape.png b/Resources/statebar_background_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..26f042d9990eb0518fb92fcdd1604e09e4138a02 GIT binary patch literal 1273 zcmbVLPlyv&7=Lk%t|<#e6s#zHj0Y{4nfE4{nar?Ro6ICNrCHZ(#D(^-vokNd!|wcX z=B=5{#YIr6w9rFOMT)gI3(|s6p#@#B{=tKKvMiML;z>b|B8a}pCR-0d#CMqazVCg% z-}mQz-+KSN;6 zHD^hKnD)}KJ7kohT26C{PSwBAEZ^nL#D|aFfS~~xJrD<`HBTs;pR1b7A=N#;WWU@2fv^w*aYI6t1;ApHd0+&z|#_oa_X>pP3@@h;@%mN3yE_A-g zttB;8pMbg_5-9N~Yatmy8S^-oR}^JG6cI)O5(O+~v7+Tf4I$V&9E%p(Ev;cxd$E{S z_xpsv6cz383>q1g6k%Ab-g3nApfT^&^u}_1w?3&$X^UC_8zT0eK70Y z+XE$zEF0}m=&(mI7YyH8bcsi6Mv-GTyzSUpRZ*%KD|w`dNG@PpsLEm)=}JX0N|Icv z_BjS&%Zi~$Xs4R9#osu{AHEre~3UT!+QQid3x>bp5SZO%I7l z{jll#3;hY0nDeP0&G`Y;CnZ=nEyqjroZk$2pwq z)m@SegAI~uNM#A<^IQ*WzfaEumW+@L#~Z`aH?av!#P!i<%KGvUk8MoIR^#d23xBcg z{G?`-n(^w)^p5n;)7!o|c^GA?EBnrG2E*qM=M!zgmD>Ae6f-@3S$4{m0zUD|!0Eh-#-{O{_nD<^Jz%9P~XSW>TuslR_8+RBto=F2ay zo<27+zps1O|HQ3t(_jApp8S(U0M~!r`04^)S$WXPpyj^H!2jt#J45HrZUJLQKx*|T zYbO97E}N-CUyVLLdMZ8kqdbXH199(Se8ykAl?I^j`3C^}=cOKhKh*i|_Premv{o56 JE|sTGz6QrLZYBT# literal 0 HcmV?d00001 diff --git a/Resources/transfer_default_landscape.png b/Resources/transfer_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..dc18399b470da1e85398eaa74cdcb40bcef872d6 GIT binary patch literal 6320 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 literal 0 HcmV?d00001 diff --git a/Resources/video_off_default_landscape.png b/Resources/video_off_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..037a4139741c5391b0b6e8cd5507daadc115bc46 GIT binary patch literal 7924 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 J)$-Pn{{us`ruqN? literal 0 HcmV?d00001 diff --git a/Resources/video_off_over_landscape.png b/Resources/video_off_over_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..afdbe9e4e2342921b3b1b01fcab1363b53cc5c81 GIT binary patch literal 7915 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 literal 0 HcmV?d00001 diff --git a/Resources/video_on_default_landscape.png b/Resources/video_on_default_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..46a88e074a40cfeae12390a660f27427af1259bd GIT binary patch literal 6535 zcmbVRc{o(<-yg=#Sd+13EFocL>|~iSLuAcTL@^jUGsal6jgeiHB};b6l9Z6hzONyB zWl5<}RLDABJhoh>Kh?XWqJy7jLfESjCfdqPadi$ycYKZ(LSM6l}dl@PM`HO|< zp&|0OQC3E#5EPDpg(%9xWE^2iFo+Ud7A~)#tgI{zk%PfuP?#JPE++$5R+E=ggTWyG z93m&$2u{vwW@z1ibe&KdBCbRtUJVKj2ndi3ke9^~T%d4ORn^}zo0C!q8au-X8c!fUyC3-7HWp|#rY8&Px9d``UiXxyZ>9!Z^jdA)JzC&CrQD0 zqH&IXURZCUK3YTMRkP5oG3c4tyvK$<)16PrUsj8eD%1ZL8D3t2ISbc9_BF5Vh`$wEG%3+gmi2;O38Y(k0-$Ab-VI z&F#PFS5(y2K`FrH;qw3ZjZ{LTPYOvDt*EUCS5Of72kZ3zi5c|780hcf_+Q2HXX&H@ ze^37{{S)Hf=D~WObPVC7HP~(DvH<|@=lW=*Mc|yn;qkE+@Il1Kk!RC$hX1(LH^XwrJaU`aQkI>N|1$bAd7RxQD ztoXna{EkKR*}<#wUFc{By7lR5J9tNzgbLHcDw`?UPGWz)R=6HPO=;T@f+Qw_9$Bj; zlX4OgsB(gP?m_L$1iGbLNpaB*C_NC@qc~8G5OQ~n*lUwD>I{viyp{u-Y zdXU_{(96{-?0zknEXu=n1_hvwy)zyOvd~Kad{I`ADL_h5C7&vG@(Giyf7KlS0Z73dK!AKKmh&V>rJWtt+SNdj-5(TaNp5wBpcfA*Ay zrvnBoy9O|~-8Hk_bO3KIe=?zC_4kk7AL+Lba}1L0+}a!D6^rm&yLEoLJtPf*hN@>} zWiDoW#LKlgoP!J74?_^!9T{VzZ}+vBna^L*_p{`tv%|5`ffOz0xN8i7H)PE`0SExx zta#hNr*Lcg)5dZ5@geQKJFRV5ELQ#$vV!+z=Bp{G?F=J;B0I#0IV6mw3rE`JV%MU1 ze-m*?6}tfZE(oEpbf?v|xG`pe>8R}Yer+t2iRwu?H&cr;RLs_g(MDg(1P}Ai?h0H= z+_U&H)ZVtw&D>73N2}W=f`9VbwT5XdTBk_~K17avFEY@Z@H2F9t>_~^>d$%aE ze1)MWM;XVNE}k7+3Xe^Qhn4ikkY<0>n6Z3cqLTa}$qMavn0c|mKyFF}VJ_M>`Fpi- zi9c&dGX$0~ah>LL0!(6oq;u}(BtG9EX=xVeN75_}eE#Sxls=5I_me*{oC2n^+$+G- zAON61e&03}mBJ4QZHZl^R3lYfq={YY@iDEZsTl=ohCmkF+UPpV9-Gd06e`Mp;;2kIvT@`Tm>Gz5om0=LkWPxY!pWQXKJwnR0ZHjJnUn z3Q?lz^8s+dWvm^v0VOOGS(X+lD6U?d5?9%C1BQF2SJ;UWrHxWnUI8A!klJf3GyTF& zI}yK1=vyR9S0Z{wSx6ikfTEhE*Dg@}0Ll459303aUIEEg3RlgfOUi5OLaf(QcsD!f zx?=i8pOu@jzqoLX?B>U<(*SneDv{=qL(=DLlR(QPU1LPxd`(>xDk5`rX2SFyrnA18 zr7-Lp{%K5de*0jM&t=SJ8doe`+`I5y8pAcWaxR6NZ86?->O3%mfj(ut4?%A8=XcQ1 zF2J>$<~%_l*T zK5?(bsjNm^rZ;5*P`jEMMknuDfmtFxPQAW*%!^#kALXXkTa*Ag-J)_011N~^CsE1C zGOZfFB*&Alh(`1nAuHJtTz(schjyll5c37?;e#O&)9j zVdi~F3;hL{b{MS(_bF}4sh080SZ&yq$s_iUsm;iIwpY#+%pTJ+sDDPwXN1$JE^W^;nISf|4k!g71$!1WUNHVH7-SL@X69zUF= zR+xaazD$Ku7n9<6nM220U{VGO^lu=3l(HP!JKSS_shFLaH@Nv@(&N5+`BGTLh_vZ> zOOm?okccJzbvEC@4xM8bB0i_A=6qWAEa}=3W46M(Cj^ep>FNb=QK}q6X*M!lu%SVv zJXMfF0ZRC?vie8Y4X%*8ziEYZnVMOfq^`H^t_<^6ti)6=w7@;zJmfkruycs_28{JeXDHXL&JQ+QPnfp_{Qwys*u-^Ymvl+EaiSPk-UH z;%gAonrs?gvVVQZ?rzr7dUvJ0W?3`-aELZ~f84W=FX^_vJ)anx!=S!_Tx>i8Y43@y z$wuuSi@~%f-5_am9@V?Fk5K3{%+zET5;Flkm%l8J_DGQDRq|e7b`CJk2Cj5|us3?k z|9k`9H>lU%yeX-wJ$vxnez1~FYOlBS2-TTR7%UZ(9d&=dk93C+FGUO-& zGjdlE?_;{S*LcC~VRzv6>g3qzWmj%SL&nl6R)j-%#A+?}`&-B%_6i+TWEI)<_eN%A||+medh4Sd=O4P^v{ zk%%4x}}r2?C&~F$DPUfyNNP z9?@J0N_x-Gxp6(p?6Ucxp6Cqv((9jG9(4~+?IRg!ZOZnGyCXT#hr&f#=!&DU$j?w4 z1DhxHIt=yN(zirw!|c7Dre!;9+Ms32;)GoF3`~Z*FT5D6Iv5&WAGyBM_ikRyI`!8r z>^EoU0GIsG0B8T5(ENKzs@7a!8aiRzT*$|r*3AiY?l$%|Z>%>c>s2`f-K7){ITI?wnj2b>+QVo||Yhb@*=R)wJ-9M0FECA&=PUPMk7+?IEx^3C~D4l%u1NPw7n9^-V zAP(DAC4W~%Fnj01DXF=Mo1CzT&#Bi0GJ=k;Zb`}T!4`+op%o3!y9isxBpJX+xrCvL7>x3MU$ z%3sJh5kY|JG!%~L#ery0NUnmpbnnoPZwOS8CGC5RoZ*X{D6XxslWd1v`wsE*C?RM2d~M7KJb1M%JHR z@VeqPNBMGPb-fXpQy(T*8yczqkS!HeGPkn&`Iv>fOo*J*xH#ENul!HoE~w5 zIz{ty!JEp#nE6L951S8sYoj`9d3<)&M`%wc(f5lbeJC03s}0g$Ud!8ir*Rwysjo9J z;b$K@&9iZ~d;)dZ|JQt|Nn89^o>)yPG}{=t*LANc>Ae8#{_vr=QAyLU2ivU*oC~ktibRl|%Zcw+*>t$0QrcDBJxVYC9F~;1`S8x^5#?ux z&g<_A-MR_;-U}wR#D1Ii;RahNv8>Wp@Y45;X#fgUR=V=}{Xvbm1JCD@7kOm`1f(yS zMqi{|@&c@6Bzfp)HrTZ6Q|Pb3lsTo10G+I2S(j!5q+Pr~VW*mbX6IBaCvdg`VdoWl zZ>-n$=KAz=h->~ST=cID0n6r`_yZL;;MZ1VL?_`z3|&lMsSY^BQH ze`;WCS>i|A#Jy>1d2|H`4TVIwY59__gl^796zV;=n0%}OY4z?QUQD%^-MM~K(mNo< zes*sy-`tqe|N2wzQ6kG7l%jP-o=SVO9sznr)P;zhJ(K*iHfuo;OaqFVvSTyP)hI~{C#Vm{DW+YJ7;u~xiMD8|@UiS5PvY#G2xy6z;1(oRmcc{gEKi(yG&t7o}4_g0f3p(O`>~rgc)W#o{`TFMG~tI5mT7 z1~9!+rCDla@obMR?1gU5!E@b*aBmGMkiq{H;7L>d>CGZ_&VpuNwu++o^xP0rk| zz%um@Oncfi+;IqGO5od(jrHYk%>htbDopiZ%Mdo;mB!7Tb&BS}1(#pnD6BdwVq>!i z5q3QqYJCH6xiVK5doEard*iyJ zzv250VEY66ZV}15lj~=SI)m~`)iZ7-dtAHcGcH~2$WbM%Ip-#W3bDS*eUGOr@TE!~ z%$bX&fJUdjDpM^RD*5K#psB>%MhU}0MU*bM}3Bv3zF=)hisVQ4hxXVZCIODVMWbrlXmdleM*rhj*?;3N46}{LJ6{FOg zlgwp8Dxb0ukddv|@NcVieKN9CKl3=Q{r+Toe~_5BfxHQiMH-}5eZ0QgpMQP1pAuBD z);k_DnNn#|;GE=A4u_iX2sC@1zw;v3N(cY`j^H3+&8}F`#JxS3uCj#J1~F<98j`|5 z!%0H8qqg4j#HmyN=R`m_7{sn3MsLy%R$pzSpkjnKYF`*UPiTJ|&B_>gE>)x;IoTv; zKrOrwY}oXxL$Mxe^)0QBfgw}`eYMxx)z$UMXKsKC(B7|3`(jL61^3{$21@00=paBA zpZ)NeuIyS_&9i6QZxlRtF$vzQkv&7hPk<@a zr6rBVF$w)Vbzg~RwNw*$cr>SAJM@V6(6{n2YrVwT&b)~uZ(yXUwRO48y$JGGS(}!4 zp_y-HeSP-3yPY~;&(QL&QHFblQ?f$M^gBrrJi`foZivOlrWg$7Q*wqOL2D^?Y~ms$ zE|iAvd=~mD=&X)HRGV+bz7nLo*#S}@C)HPn34u_s-z%3d&|Uz0;jsXNUQvcDTGA^ zv{Bw?g^ju&Otg_@`dmv(^hbM#_Y6+|bi27TI4e(2qs=q;i_!w~opXXc5QtiyRb@W~ z2DEp^xUU>3y0PVJss@WC3i0=VtZdEbw7lQ+zi!?AppkQU%LUr@xS2k4de=n1=~X2U z+9bb7r2RBx3l?)c6wzAaD_Ebr9iOL}mA>?GQ*cTnsp{eU=?bAYT2XIiHOD>{U&08B zE;{I+`;aFal{CJyoM^iIIDDaUrC3 zuA$dsZ4Dr-;Fou_7IRMxRqo2RH0}&#!oaUIXPgS-q4$s-k55^>*tx*qh#gMME-5)q zgJ>2i1dbNNB!aW4nSx)?m@|34dBO7%9P#th$mN08WMUACkxiNploUg6TO~lppdA_P zVoc1zJ`fxh$$%b-q$pue_V3jOc~|_vROR zG3yKmK_T4Nm7=Cvg11+@lYGDY;C_&78vaHt@@CPwy5UBLRE59-SNo@opO`x5IE;aTCz-)En~-amy5lhoId2;dT_myK_x#i&V2i6uv-EA$#iYfcv4#dgY3AoL)nuV9(-}_zJ%gB<%8%+=J07OO?VXG0ysXZY z_SH3v!VeyYCt8u)$3X|U5Fz}9>Swo0Z&=vbu|>{$P91HVt@MY4!6xaZ#zFr6#bftB zo_BzyJ$c6cu;_VU)Th*GB)OuQWGmhg+0)GymTY7OmUk|riD=$*rvfFjr>EWc2q=8+ z>XrM=!qSqPftHq*=}YXx_;Tub@_sg>$aF& zy}YW{&J@1jz4+9tUYt1gxsTygD6dV^q2tH!sCM3ydLbCK{fY>J5~^4Oq*|f>~&^O`@l= sK1XxL{k0$bXT$jGE8x%K1ji9u=I7EvPuHWY-@iumb&S!Ewe2JS2jNtV=l}o! literal 0 HcmV?d00001 diff --git a/Resources/video_on_disabled_landscape.png b/Resources/video_on_disabled_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..3074faae395cb06030696c923e3f1c76a75128d2 GIT binary patch literal 6229 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 VHP!Lih2MWO40KI&-e@@x{|E8DmfQdU literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index a82fa9517..2e82bea69 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -143,8 +143,6 @@ 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; }; 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; - 3422AA5314978352000D4E8A /* PhoneViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */; }; - 3422AA5414978352000D4E8A /* PhoneViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */; }; 344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDE71484E723007420B6 /* libzrtpcpp.a */; }; 344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; 344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -513,6 +511,92 @@ D3C2814C15A2D38D0098AA42 /* dialer_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2814A15A2D38D0098AA42 /* dialer_selected.png */; }; D3C2815215A2D64A0098AA42 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; D3C2815315A2D64A0098AA42 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; + D3C31A3215BD8DED008ED271 /* conference_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */; }; + D3C31A3315BD8DED008ED271 /* conference_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */; }; + D3C31A3415BD8DED008ED271 /* conference_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */; }; + D3C31A3515BD8DED008ED271 /* conference_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */; }; + D3C31A3615BD8DED008ED271 /* dialer_alt_back_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */; }; + D3C31A3715BD8DED008ED271 /* dialer_alt_back_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */; }; + D3C31A3815BD8DED008ED271 /* dialer_alt_back_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */; }; + D3C31A3915BD8DED008ED271 /* dialer_alt_back_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */; }; + D3C31A3A15BD8DED008ED271 /* dialer_alt_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */; }; + D3C31A3B15BD8DED008ED271 /* dialer_alt_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */; }; + D3C31A3C15BD8DED008ED271 /* dialer_alt_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */; }; + D3C31A3D15BD8DED008ED271 /* dialer_alt_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */; }; + D3C31A3E15BD8DED008ED271 /* hangup_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */; }; + D3C31A3F15BD8DED008ED271 /* hangup_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */; }; + D3C31A4015BD8DED008ED271 /* hangup_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */; }; + D3C31A4115BD8DED008ED271 /* hangup_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */; }; + D3C31A4215BD8DED008ED271 /* micro_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */; }; + D3C31A4315BD8DED008ED271 /* micro_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */; }; + D3C31A4415BD8DED008ED271 /* micro_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */; }; + D3C31A4515BD8DED008ED271 /* micro_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */; }; + D3C31A4615BD8DED008ED271 /* micro_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */; }; + D3C31A4715BD8DED008ED271 /* micro_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */; }; + D3C31A4815BD8DED008ED271 /* micro_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */; }; + D3C31A4915BD8DED008ED271 /* micro_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */; }; + D3C31A4A15BD8DED008ED271 /* micro_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */; }; + D3C31A4B15BD8DED008ED271 /* micro_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */; }; + D3C31A4C15BD8DED008ED271 /* micro_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */; }; + D3C31A4D15BD8DED008ED271 /* micro_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */; }; + D3C31A4E15BD8DED008ED271 /* options_add_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */; }; + D3C31A4F15BD8DED008ED271 /* options_add_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */; }; + D3C31A5015BD8DED008ED271 /* options_add_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */; }; + D3C31A5115BD8DED008ED271 /* options_add_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */; }; + D3C31A5215BD8DED008ED271 /* options_add_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */; }; + D3C31A5315BD8DED008ED271 /* options_add_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */; }; + D3C31A5415BD8DED008ED271 /* options_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1815BD8DED008ED271 /* options_default_landscape.png */; }; + D3C31A5515BD8DED008ED271 /* options_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1815BD8DED008ED271 /* options_default_landscape.png */; }; + D3C31A5615BD8DED008ED271 /* options_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */; }; + D3C31A5715BD8DED008ED271 /* options_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */; }; + D3C31A5815BD8DED008ED271 /* options_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */; }; + D3C31A5915BD8DED008ED271 /* options_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */; }; + D3C31A5A15BD8DED008ED271 /* options_selected_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */; }; + D3C31A5B15BD8DED008ED271 /* options_selected_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */; }; + D3C31A5C15BD8DED008ED271 /* options_transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */; }; + D3C31A5D15BD8DED008ED271 /* options_transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */; }; + D3C31A5E15BD8DED008ED271 /* options_transfer_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */; }; + D3C31A5F15BD8DED008ED271 /* options_transfer_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */; }; + D3C31A6015BD8DED008ED271 /* options_transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */; }; + D3C31A6115BD8DED008ED271 /* options_transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */; }; + D3C31A6215BD8DED008ED271 /* pause_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */; }; + D3C31A6315BD8DED008ED271 /* pause_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */; }; + D3C31A6415BD8DED008ED271 /* pause_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */; }; + D3C31A6515BD8DED008ED271 /* pause_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */; }; + D3C31A6615BD8DED008ED271 /* pause_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */; }; + D3C31A6715BD8DED008ED271 /* pause_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */; }; + D3C31A6815BD8DED008ED271 /* pause_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */; }; + D3C31A6915BD8DED008ED271 /* pause_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */; }; + D3C31A6A15BD8DED008ED271 /* speaker_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */; }; + D3C31A6B15BD8DED008ED271 /* speaker_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */; }; + D3C31A6C15BD8DED008ED271 /* speaker_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */; }; + D3C31A6D15BD8DED008ED271 /* speaker_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */; }; + D3C31A6E15BD8DED008ED271 /* speaker_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */; }; + D3C31A6F15BD8DED008ED271 /* speaker_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */; }; + D3C31A7015BD8DED008ED271 /* speaker_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */; }; + D3C31A7115BD8DED008ED271 /* speaker_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */; }; + D3C31A7215BD8DED008ED271 /* speaker_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */; }; + D3C31A7315BD8DED008ED271 /* speaker_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */; }; + D3C31A7415BD8DED008ED271 /* speaker_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */; }; + D3C31A7515BD8DED008ED271 /* speaker_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */; }; + D3C31A7615BD8DED008ED271 /* statebar_background_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */; }; + D3C31A7715BD8DED008ED271 /* statebar_background_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */; }; + D3C31A7815BD8DED008ED271 /* transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */; }; + D3C31A7915BD8DED008ED271 /* transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */; }; + D3C31A7A15BD8DED008ED271 /* transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */; }; + D3C31A7B15BD8DED008ED271 /* transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */; }; + D3C31A7C15BD8DED008ED271 /* video_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */; }; + D3C31A7D15BD8DED008ED271 /* video_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */; }; + D3C31A7E15BD8DED008ED271 /* video_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */; }; + D3C31A7F15BD8DED008ED271 /* video_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */; }; + D3C31A8015BD8DED008ED271 /* video_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */; }; + D3C31A8115BD8DED008ED271 /* video_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */; }; + D3C31A8215BD8DED008ED271 /* video_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */; }; + D3C31A8315BD8DED008ED271 /* video_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */; }; + D3C31A8415BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */; }; + D3C31A8515BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */; }; + D3C31A8615BD8DED008ED271 /* video_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */; }; + D3C31A8715BD8DED008ED271 /* video_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */; }; D3C6526715AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */; }; D3C6526815AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */; }; D3C6526B15AC228A0092A874 /* contact_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526915AC228A0092A874 /* contact_ok_default.png */; }; @@ -643,6 +727,8 @@ D3F795DE15A5831C0077328B /* chat_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DB15A5831C0077328B /* chat_back_default.png */; }; D3F795DF15A5831C0077328B /* chat_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DC15A5831C0077328B /* chat_back_over.png */; }; D3F795E015A5831C0077328B /* chat_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DC15A5831C0077328B /* chat_back_over.png */; }; + D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */; }; + D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */; }; D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; @@ -1061,7 +1147,6 @@ 34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoZoomHandler.h; path = LinphoneUI/VideoZoomHandler.h; sourceTree = ""; }; 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VideoZoomHandler.m; path = LinphoneUI/VideoZoomHandler.m; sourceTree = ""; }; 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "InCallViewController-ipad.xib"; sourceTree = ""; }; - 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "PhoneViewController-ipad.xib"; sourceTree = ""; }; 344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = ""; }; 344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; }; 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; }; @@ -1309,6 +1394,49 @@ D3B9A3DE15A58C450096EA4E /* chat_send_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_send_over.png; path = Resources/chat_send_over.png; sourceTree = ""; }; D3C2814A15A2D38D0098AA42 /* dialer_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_selected.png; path = Resources/dialer_selected.png; sourceTree = ""; }; D3C2815115A2D64A0098AA42 /* numpad_star_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = numpad_star_over.png; path = Resources/numpad_star_over.png; sourceTree = ""; }; + D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = conference_default_landscape.png; path = Resources/conference_default_landscape.png; sourceTree = ""; }; + D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = conference_over_landscape.png; path = Resources/conference_over_landscape.png; sourceTree = ""; }; + D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_back_default_landscape.png; path = Resources/dialer_alt_back_default_landscape.png; sourceTree = ""; }; + D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_back_over_landscape.png; path = Resources/dialer_alt_back_over_landscape.png; sourceTree = ""; }; + D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_default_landscape.png; path = Resources/dialer_alt_default_landscape.png; sourceTree = ""; }; + D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_alt_over_landscape.png; path = Resources/dialer_alt_over_landscape.png; sourceTree = ""; }; + D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = hangup_default_landscape.png; path = Resources/hangup_default_landscape.png; sourceTree = ""; }; + D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = hangup_over_landscape.png; path = Resources/hangup_over_landscape.png; sourceTree = ""; }; + D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_default_landscape.png; path = Resources/micro_off_default_landscape.png; sourceTree = ""; }; + D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_disabled_landscape.png; path = Resources/micro_off_disabled_landscape.png; sourceTree = ""; }; + D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_over_landscape.png; path = Resources/micro_off_over_landscape.png; sourceTree = ""; }; + D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_on_default_landscape.png; path = Resources/micro_on_default_landscape.png; sourceTree = ""; }; + D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_on_disabled_landscape.png; path = Resources/micro_on_disabled_landscape.png; sourceTree = ""; }; + D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_on_over_landscape.png; path = Resources/micro_on_over_landscape.png; sourceTree = ""; }; + D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_default_landscape.png; path = Resources/options_add_default_landscape.png; sourceTree = ""; }; + D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_disabled_landscape.png; path = Resources/options_add_disabled_landscape.png; sourceTree = ""; }; + D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_over_landscape.png; path = Resources/options_add_over_landscape.png; sourceTree = ""; }; + D3C31A1815BD8DED008ED271 /* options_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_default_landscape.png; path = Resources/options_default_landscape.png; sourceTree = ""; }; + D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_disabled_landscape.png; path = Resources/options_disabled_landscape.png; sourceTree = ""; }; + D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_over_landscape.png; path = Resources/options_over_landscape.png; sourceTree = ""; }; + D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_selected_landscape.png; path = Resources/options_selected_landscape.png; sourceTree = ""; }; + D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_default_landscape.png; path = Resources/options_transfer_default_landscape.png; sourceTree = ""; }; + D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_disabled_landscape.png; path = Resources/options_transfer_disabled_landscape.png; sourceTree = ""; }; + D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_over_landscape.png; path = Resources/options_transfer_over_landscape.png; sourceTree = ""; }; + D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_off_default_landscape.png; path = Resources/pause_off_default_landscape.png; sourceTree = ""; }; + D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_off_over_landscape.png; path = Resources/pause_off_over_landscape.png; sourceTree = ""; }; + D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_on_default_landscape.png; path = Resources/pause_on_default_landscape.png; sourceTree = ""; }; + D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = pause_on_over_landscape.png; path = Resources/pause_on_over_landscape.png; sourceTree = ""; }; + D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_off_default_landscape.png; path = Resources/speaker_off_default_landscape.png; sourceTree = ""; }; + D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_off_disabled_landscape.png; path = Resources/speaker_off_disabled_landscape.png; sourceTree = ""; }; + D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_off_over_landscape.png; path = Resources/speaker_off_over_landscape.png; sourceTree = ""; }; + D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_on_default_landscape.png; path = Resources/speaker_on_default_landscape.png; sourceTree = ""; }; + D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_on_disabled_landscape.png; path = Resources/speaker_on_disabled_landscape.png; sourceTree = ""; }; + D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_on_over_landscape.png; path = Resources/speaker_on_over_landscape.png; sourceTree = ""; }; + D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = statebar_background_landscape.png; path = Resources/statebar_background_landscape.png; sourceTree = ""; }; + D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_default_landscape.png; path = Resources/transfer_default_landscape.png; sourceTree = ""; }; + D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_over_landscape.png; path = Resources/transfer_over_landscape.png; sourceTree = ""; }; + D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_off_default_landscape.png; path = Resources/video_off_default_landscape.png; sourceTree = ""; }; + D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_off_disabled_landscape.png; path = Resources/video_off_disabled_landscape.png; sourceTree = ""; }; + D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_off_over_landscape.png; path = Resources/video_off_over_landscape.png; sourceTree = ""; }; + D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_default_landscape.png; path = Resources/video_on_default_landscape.png; sourceTree = ""; }; + D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_disabled_landscape.png; path = Resources/video_on_disabled_landscape.png; sourceTree = ""; }; + D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_over_landscape.png; path = Resources/video_on_over_landscape.png; sourceTree = ""; }; D3C6526515AC1A8F0092A874 /* UIEditableTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIEditableTableViewCell.h; sourceTree = ""; }; D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIEditableTableViewCell.m; sourceTree = ""; }; D3C6526915AC228A0092A874 /* contact_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_ok_default.png; path = Resources/contact_ok_default.png; sourceTree = ""; }; @@ -1386,6 +1514,8 @@ D3F795D515A582800077328B /* ChatRoomViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ChatRoomViewController.xib; sourceTree = ""; }; D3F795DB15A5831C0077328B /* chat_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_back_default.png; path = Resources/chat_back_default.png; sourceTree = ""; }; D3F795DC15A5831C0077328B /* chat_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_back_over.png; path = Resources/chat_back_over.png; sourceTree = ""; }; + D3F7997F15BD32370018C273 /* TPMultiLayoutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TPMultiLayoutViewController.h; path = Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.h; sourceTree = ""; }; + D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TPMultiLayoutViewController.m; path = Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m; sourceTree = ""; }; D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; }; D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; }; D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; }; @@ -1615,7 +1745,6 @@ D3F83F8C158229C500336684 /* PhoneMainView.h */, D3F83F8D15822ABD00336684 /* PhoneMainView.m */, D34734791580DDF1003C7B8C /* PhoneMainView.xib */, - 3422AA5214978352000D4E8A /* PhoneViewController-ipad.xib */, D35E759C159460B50066B1C1 /* SettingsViewController.h */, D35E759D159460B50066B1C1 /* SettingsViewController.m */, D32942A31594C94200556A1C /* SettingsViewController.xib */, @@ -2140,7 +2269,9 @@ D32B6E2315A5B2020033019F /* chat_send_disabled.png */, D3B9A3DE15A58C450096EA4E /* chat_send_over.png */, D31AAF61159B5B6E002C6B02 /* conference_default.png */, + D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */, D31AAF62159B5B6E002C6B02 /* conference_over.png */, + D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */, D3128FE715AABE4E00A2147A /* contact_back_default.png */, D3128FE815AABE4E00A2147A /* contact_back_over.png */, D378906915AC37C800BD776C /* contact_bar_background.png */, @@ -2168,25 +2299,31 @@ D3F83F771582253100336684 /* decline_over.png */, D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */, D3E84F1B15B00F4100420DAC /* dialer_alt_back_default.png */, + D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */, D3E84F1C15B00F4100420DAC /* dialer_alt_back_over.png */, + D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */, D3E84F1D15B00F4100420DAC /* dialer_alt_background.png */, D36C43CF158F2F370048BA40 /* dialer_alt_default.png */, + D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */, D36C43D0158F2F370048BA40 /* dialer_alt_over.png */, + D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */, D38327ED1580FE3A00FA0D23 /* dialer_default.png */, D38327EE1580FE3A00FA0D23 /* dialer_over.png */, D3C2814A15A2D38D0098AA42 /* dialer_selected.png */, D350F21715A43D3400149E54 /* field_background.png */, D3F83EFA158205A100336684 /* hangup_default.png */, + D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */, D3F83EFB158205A100336684 /* hangup_over.png */, + D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */, D36C43CE158F2F370048BA40 /* header_conference.png */, D3F26BFB15987083005F9CAB /* header_incoming.png */, - D3157A8815B4466F00DD8C4C /* history_details_add_default.png */, - D3157A8915B4466F00DD8C4C /* history_details_add_over.png */, D3ED3E9315872EF1006C0DE4 /* history_all_default.png */, D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */, + D347347C1580E5F8003C7B8C /* history_default.png */, + D3157A8815B4466F00DD8C4C /* history_details_add_default.png */, + D3157A8915B4466F00DD8C4C /* history_details_add_over.png */, D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */, D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */, - D347347C1580E5F8003C7B8C /* history_default.png */, D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */, D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */, D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */, @@ -2211,11 +2348,17 @@ D354981815876FE7000081D8 /* list_details_default.png */, D354981915876FE7000081D8 /* list_details_over.png */, D3F83EF4158205A100336684 /* micro_off_default.png */, + D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */, D35EA76115A2DF8D003E025D /* micro_off_disabled.png */, + D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */, D3F83EF5158205A100336684 /* micro_off_over.png */, + D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */, D3F83EF6158205A100336684 /* micro_on_default.png */, + D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */, D35EA76215A2DF8D003E025D /* micro_on_disabled.png */, + D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */, D3F83EF7158205A100336684 /* micro_on_over.png */, + D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */, D3F83F3C1582223B00336684 /* numpad_eight_default.png */, D3F83F3D1582223B00336684 /* numpad_eight_over.png */, D3F83F361582223B00336684 /* numpad_five_default.png */, @@ -2243,19 +2386,33 @@ 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, 2237D4081084D7A9001383EE /* oldphone-mono.wav */, D3196D3015A321E2007FEEBA /* options_add_default.png */, + D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */, C9C8253F15AE204D00D493FA /* options_add_disabled.png */, + D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */, D3196D3115A321E2007FEEBA /* options_add_over.png */, + D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */, D3D6A3A8159B0EFE005F692C /* options_default.png */, + D3C31A1815BD8DED008ED271 /* options_default_landscape.png */, D3D6A3A9159B0EFE005F692C /* options_disabled.png */, + D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */, D3D6A3AA159B0EFE005F692C /* options_over.png */, + D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */, C9C8254B15AE207B00D493FA /* options_selected.png */, + D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */, D3196D3215A321E3007FEEBA /* options_transfer_default.png */, + D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */, C9C8254015AE204D00D493FA /* options_transfer_disabled.png */, + D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */, D3196D3315A321E3007FEEBA /* options_transfer_over.png */, + D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */, D3F83EF8158205A100336684 /* pause_off_default.png */, + D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */, D3F83EF9158205A100336684 /* pause_off_over.png */, + D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */, D36C43E7158F3F7E0048BA40 /* pause_on_default.png */, + D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */, D36C43E8158F3F7E0048BA40 /* pause_on_over.png */, + D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */, 22F254801073D99800AC9B3F /* ringback.wav */, 70571E1913FABCB000CDD3C2 /* rootca.pem */, D3D6A3A5159B0EFE005F692C /* security_ko.png */, @@ -2276,24 +2433,39 @@ D350F21A15A43D3400149E54 /* setup_title_assistant.png */, D350F21B15A43D3400149E54 /* setup_welcome_logo.png */, D3F83EFC158205A100336684 /* speaker_off_default.png */, + D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */, D365AA7915A2DE7500CAFE3F /* speaker_off_disabled.png */, + D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */, D3F83EFD158205A100336684 /* speaker_off_over.png */, + D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */, D3F83EFE158205A100336684 /* speaker_on_default.png */, + D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */, D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */, + D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */, D3F83EFF158205A100336684 /* speaker_on_over.png */, + D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */, D3ED3E511585FFFD006C0DE4 /* statebar_background.png */, + D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */, D35E757515931E5D0066B1C1 /* switch_camera_default.png */, D35E757615931E5D0066B1C1 /* switch_camera_over.png */, D3C714B2159DB84400705B8E /* toy-mono.wav */, C9C8254115AE204D00D493FA /* transfer_call_default.png */, C9C8254E15AE256100D493FA /* transfer_call_disabled.png */, C9C8254215AE204D00D493FA /* transfer_call_over.png */, + D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */, + D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */, D3F83F00158205A100336684 /* video_off_default.png */, + D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */, D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */, + D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */, D3F83F01158205A100336684 /* video_off_over.png */, + D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */, D3F83F02158205A100336684 /* video_on_default.png */, + D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */, D377BBF915A19DA6002B696B /* video_on_disabled.png */, + D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */, D3F83F03158205A100336684 /* video_on_over.png */, + D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */, ); name = Resources; sourceTree = ""; @@ -2311,6 +2483,7 @@ D326483415887D4400930C67 /* Utils */ = { isa = PBXGroup; children = ( + D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */, D38935F715A6D06800A3A3AA /* CPAnimation */, D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */, D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */, @@ -2423,6 +2596,15 @@ path = Settings; sourceTree = ""; }; + D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */ = { + isa = PBXGroup; + children = ( + D3F7997F15BD32370018C273 /* TPMultiLayoutViewController.h */, + D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */, + ); + name = TPMultiLayoutViewController; + sourceTree = ""; + }; D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */ = { isa = PBXGroup; children = ( @@ -2547,7 +2729,6 @@ 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */, 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, - 3422AA5314978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */, 34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */, D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */, @@ -2788,6 +2969,49 @@ D3157A9215B446CB00DD8C4C /* history_details_back_over.png in Resources */, D3119E7215B6A4710005D4A4 /* contacts_back_default.png in Resources */, D3119E7415B6A4710005D4A4 /* contacts_back_over.png in Resources */, + D3C31A3215BD8DED008ED271 /* conference_default_landscape.png in Resources */, + D3C31A3415BD8DED008ED271 /* conference_over_landscape.png in Resources */, + D3C31A3615BD8DED008ED271 /* dialer_alt_back_default_landscape.png in Resources */, + D3C31A3815BD8DED008ED271 /* dialer_alt_back_over_landscape.png in Resources */, + D3C31A3A15BD8DED008ED271 /* dialer_alt_default_landscape.png in Resources */, + D3C31A3C15BD8DED008ED271 /* dialer_alt_over_landscape.png in Resources */, + D3C31A3E15BD8DED008ED271 /* hangup_default_landscape.png in Resources */, + D3C31A4015BD8DED008ED271 /* hangup_over_landscape.png in Resources */, + D3C31A4215BD8DED008ED271 /* micro_off_default_landscape.png in Resources */, + D3C31A4415BD8DED008ED271 /* micro_off_disabled_landscape.png in Resources */, + D3C31A4615BD8DED008ED271 /* micro_off_over_landscape.png in Resources */, + D3C31A4815BD8DED008ED271 /* micro_on_default_landscape.png in Resources */, + D3C31A4A15BD8DED008ED271 /* micro_on_disabled_landscape.png in Resources */, + D3C31A4C15BD8DED008ED271 /* micro_on_over_landscape.png in Resources */, + D3C31A4E15BD8DED008ED271 /* options_add_default_landscape.png in Resources */, + D3C31A5015BD8DED008ED271 /* options_add_disabled_landscape.png in Resources */, + D3C31A5215BD8DED008ED271 /* options_add_over_landscape.png in Resources */, + D3C31A5415BD8DED008ED271 /* options_default_landscape.png in Resources */, + D3C31A5615BD8DED008ED271 /* options_disabled_landscape.png in Resources */, + D3C31A5815BD8DED008ED271 /* options_over_landscape.png in Resources */, + D3C31A5A15BD8DED008ED271 /* options_selected_landscape.png in Resources */, + D3C31A5C15BD8DED008ED271 /* options_transfer_default_landscape.png in Resources */, + D3C31A5E15BD8DED008ED271 /* options_transfer_disabled_landscape.png in Resources */, + D3C31A6015BD8DED008ED271 /* options_transfer_over_landscape.png in Resources */, + D3C31A6215BD8DED008ED271 /* pause_off_default_landscape.png in Resources */, + D3C31A6415BD8DED008ED271 /* pause_off_over_landscape.png in Resources */, + D3C31A6615BD8DED008ED271 /* pause_on_default_landscape.png in Resources */, + D3C31A6815BD8DED008ED271 /* pause_on_over_landscape.png in Resources */, + D3C31A6A15BD8DED008ED271 /* speaker_off_default_landscape.png in Resources */, + D3C31A6C15BD8DED008ED271 /* speaker_off_disabled_landscape.png in Resources */, + D3C31A6E15BD8DED008ED271 /* speaker_off_over_landscape.png in Resources */, + D3C31A7015BD8DED008ED271 /* speaker_on_default_landscape.png in Resources */, + D3C31A7215BD8DED008ED271 /* speaker_on_disabled_landscape.png in Resources */, + D3C31A7415BD8DED008ED271 /* speaker_on_over_landscape.png in Resources */, + D3C31A7615BD8DED008ED271 /* statebar_background_landscape.png in Resources */, + D3C31A7815BD8DED008ED271 /* transfer_default_landscape.png in Resources */, + D3C31A7A15BD8DED008ED271 /* transfer_over_landscape.png in Resources */, + D3C31A7C15BD8DED008ED271 /* video_off_default_landscape.png in Resources */, + D3C31A7E15BD8DED008ED271 /* video_off_disabled_landscape.png in Resources */, + D3C31A8015BD8DED008ED271 /* video_off_over_landscape.png in Resources */, + D3C31A8215BD8DED008ED271 /* video_on_default_landscape.png in Resources */, + D3C31A8415BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */, + D3C31A8615BD8DED008ED271 /* video_on_over_landscape.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2810,7 +3034,6 @@ 22D8F142147548E2008C97DB /* rootca.pem in Resources */, 2211DB95147564B400DEE054 /* Settings.bundle in Resources */, 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, - 3422AA5414978352000D4E8A /* PhoneViewController-ipad.xib in Resources */, 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */, D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */, D3F83F0D158205A100336684 /* micro_off_default.png in Resources */, @@ -3034,6 +3257,49 @@ D3157A9315B446CB00DD8C4C /* history_details_back_over.png in Resources */, D3119E7315B6A4710005D4A4 /* contacts_back_default.png in Resources */, D3119E7515B6A4710005D4A4 /* contacts_back_over.png in Resources */, + D3C31A3315BD8DED008ED271 /* conference_default_landscape.png in Resources */, + D3C31A3515BD8DED008ED271 /* conference_over_landscape.png in Resources */, + D3C31A3715BD8DED008ED271 /* dialer_alt_back_default_landscape.png in Resources */, + D3C31A3915BD8DED008ED271 /* dialer_alt_back_over_landscape.png in Resources */, + D3C31A3B15BD8DED008ED271 /* dialer_alt_default_landscape.png in Resources */, + D3C31A3D15BD8DED008ED271 /* dialer_alt_over_landscape.png in Resources */, + D3C31A3F15BD8DED008ED271 /* hangup_default_landscape.png in Resources */, + D3C31A4115BD8DED008ED271 /* hangup_over_landscape.png in Resources */, + D3C31A4315BD8DED008ED271 /* micro_off_default_landscape.png in Resources */, + D3C31A4515BD8DED008ED271 /* micro_off_disabled_landscape.png in Resources */, + D3C31A4715BD8DED008ED271 /* micro_off_over_landscape.png in Resources */, + D3C31A4915BD8DED008ED271 /* micro_on_default_landscape.png in Resources */, + D3C31A4B15BD8DED008ED271 /* micro_on_disabled_landscape.png in Resources */, + D3C31A4D15BD8DED008ED271 /* micro_on_over_landscape.png in Resources */, + D3C31A4F15BD8DED008ED271 /* options_add_default_landscape.png in Resources */, + D3C31A5115BD8DED008ED271 /* options_add_disabled_landscape.png in Resources */, + D3C31A5315BD8DED008ED271 /* options_add_over_landscape.png in Resources */, + D3C31A5515BD8DED008ED271 /* options_default_landscape.png in Resources */, + D3C31A5715BD8DED008ED271 /* options_disabled_landscape.png in Resources */, + D3C31A5915BD8DED008ED271 /* options_over_landscape.png in Resources */, + D3C31A5B15BD8DED008ED271 /* options_selected_landscape.png in Resources */, + D3C31A5D15BD8DED008ED271 /* options_transfer_default_landscape.png in Resources */, + D3C31A5F15BD8DED008ED271 /* options_transfer_disabled_landscape.png in Resources */, + D3C31A6115BD8DED008ED271 /* options_transfer_over_landscape.png in Resources */, + D3C31A6315BD8DED008ED271 /* pause_off_default_landscape.png in Resources */, + D3C31A6515BD8DED008ED271 /* pause_off_over_landscape.png in Resources */, + D3C31A6715BD8DED008ED271 /* pause_on_default_landscape.png in Resources */, + D3C31A6915BD8DED008ED271 /* pause_on_over_landscape.png in Resources */, + D3C31A6B15BD8DED008ED271 /* speaker_off_default_landscape.png in Resources */, + D3C31A6D15BD8DED008ED271 /* speaker_off_disabled_landscape.png in Resources */, + D3C31A6F15BD8DED008ED271 /* speaker_off_over_landscape.png in Resources */, + D3C31A7115BD8DED008ED271 /* speaker_on_default_landscape.png in Resources */, + D3C31A7315BD8DED008ED271 /* speaker_on_disabled_landscape.png in Resources */, + D3C31A7515BD8DED008ED271 /* speaker_on_over_landscape.png in Resources */, + D3C31A7715BD8DED008ED271 /* statebar_background_landscape.png in Resources */, + D3C31A7915BD8DED008ED271 /* transfer_default_landscape.png in Resources */, + D3C31A7B15BD8DED008ED271 /* transfer_over_landscape.png in Resources */, + D3C31A7D15BD8DED008ED271 /* video_off_default_landscape.png in Resources */, + D3C31A7F15BD8DED008ED271 /* video_off_disabled_landscape.png in Resources */, + D3C31A8115BD8DED008ED271 /* video_off_over_landscape.png in Resources */, + D3C31A8315BD8DED008ED271 /* video_on_default_landscape.png in Resources */, + D3C31A8515BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */, + D3C31A8715BD8DED008ED271 /* video_on_over_landscape.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3125,6 +3391,7 @@ D3F9A9E415AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D615B549B500513429 /* Utils.m in Sources */, + D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3213,6 +3480,7 @@ D3F9A9E515AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D715B549B500513429 /* Utils.m in Sources */, + D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 6950283052aa646845fb3b5dd85bda36a8c88d4d Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 23 Jul 2012 21:53:59 +0200 Subject: [PATCH 068/397] Fix fullscreen mode when return in InCall View Fix memory leaks --- Classes/InCallViewController.m | 6 +++--- Classes/LinphoneCoreSettingsStore.m | 2 +- Classes/LinphoneManager.m | 3 ++- Classes/LinphoneUI/UICompositeViewController.m | 5 ++++- linphone.xcodeproj/project.pbxproj | 2 +- submodules/externals/exosip | 2 +- 6 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 5c06b7af4..b82a25eb5 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -342,8 +342,8 @@ static UICompositeViewDescription *compositeDescription = nil; } #endif -- (void)enableVideoDisplay:(BOOL)animation { - if(videoShown) +- (void)enableVideoDisplay:(BOOL)animation { + if(videoShown && animation) return; videoShown = true; @@ -392,7 +392,7 @@ static UICompositeViewDescription *compositeDescription = nil; } - (void)disableVideoDisplay:(BOOL)animation { - if(!videoShown) + if(!videoShown && animation) return; videoShown = false; diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 68b3a7e35..104bd95d7 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -224,7 +224,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } - (BOOL)valueChangedForKey:(NSString*)key { - return [ [changedDict valueForKey:key] boolValue]; + return [[changedDict valueForKey:key] boolValue]; } - (void)synchronizeAccount { diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 0ff853b5b..202183dcb 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -219,11 +219,12 @@ struct codec_name_pref_table codec_pref_table[]={ //generic log handler for debug version void linphone_iphone_log_handler(int lev, const char *fmt, va_list args){ - NSString* format = [NSString stringWithUTF8String:fmt]; + NSString* format = [[NSString alloc] initWithUTF8String:fmt]; NSLogv(format, args); NSString* formatedString = [[NSString alloc] initWithFormat:format arguments:args]; //[[LinphoneManager instance] addLog:formatedString]; [formatedString release]; + [format release]; } //Error/warning log handler diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index f10acbc78..dbb85c155 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -294,9 +294,10 @@ - (void)update: (UICompositeViewDescription*) description tabBar:(NSNumber*)tabBar fullscreen:(NSNumber*)fullscreen { // Copy view description - UICompositeViewDescription *oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; + UICompositeViewDescription *oldViewDescription = nil; if(description != nil) { + oldViewDescription = currentViewDescription; currentViewDescription = [description copy]; // Animate only with a previous screen @@ -331,6 +332,8 @@ [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"setOrientation:") withObject:(id)correctOrientation]; } [self applySubLayoutsForInterfaceOrientation:correctOrientation]; + } else { + oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; } if(currentViewDescription == nil) { diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 2e82bea69..a4a447438 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -2483,13 +2483,13 @@ D326483415887D4400930C67 /* Utils */ = { isa = PBXGroup; children = ( - D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */, D38935F715A6D06800A3A3AA /* CPAnimation */, D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */, D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */, D326483615887D5200930C67 /* OrderedDictionary.h */, D326483715887D5200930C67 /* OrderedDictionary.m */, D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */, + D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */, D3F9A9EB15AF27620045320F /* UACellBackgroundView */, C9B3A6FD15B485DB006F52EE /* Utils.h */, D35860D515B549B500513429 /* Utils.m */, diff --git a/submodules/externals/exosip b/submodules/externals/exosip index dfe434328..8c42924ae 160000 --- a/submodules/externals/exosip +++ b/submodules/externals/exosip @@ -1 +1 @@ -Subproject commit dfe434328c0b0cbbaee669d40b27e09fea5f49ab +Subproject commit 8c42924ae9009f6003e98d29638e078ca1bd7c71 From 88144bc4b126e41138e1a9c07a194c76eb737e3e Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 23 Jul 2012 22:14:46 +0200 Subject: [PATCH 069/397] Fix another memory leak with linphone_address_as_string_uri_only --- Classes/ChatRoomViewController.m | 16 ++++++++++------ Classes/HistoryDetailsViewController.m | 11 ++++++++--- Classes/HistoryTableViewController.m | 3 ++- Classes/IncomingCallViewController.m | 3 ++- Classes/LinphoneManager.m | 8 +++++++- Classes/LinphoneUI/UICallCell.m | 3 ++- Classes/LinphoneUI/UIHistoryCell.m | 3 ++- Classes/PhoneMainView.m | 3 ++- 8 files changed, 35 insertions(+), 15 deletions(-) diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index d4d2ab6bc..b1479529e 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -209,12 +209,16 @@ static UICompositeViewDescription *compositeDescription = nil; LinphoneAddress *from = [[[notif userInfo] objectForKey:@"from"] pointerValue]; ChatModel *chat = [[notif userInfo] objectForKey:@"chat"]; if(from != NULL && chat != NULL) { - if([[NSString stringWithUTF8String:linphone_address_as_string_uri_only(from)] - caseInsensitiveCompare:remoteAddress] == NSOrderedSame) { - [chat setRead:[NSNumber numberWithInt:1]]; - [chat update]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; - [tableController addChatEntry:chat]; + char *fromStr = linphone_address_as_string_uri_only(from); + if(fromStr != NULL) { + if([[NSString stringWithUTF8String:fromStr] + caseInsensitiveCompare:remoteAddress] == NSOrderedSame) { + [chat setRead:[NSNumber numberWithInt:1]]; + [chat update]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; + [tableController addChatEntry:chat]; + } + ms_free(fromStr); } } else { [LinphoneLogger logc:LinphoneLoggerWarning format:"Invalid textReceivedEvent"]; diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index be5d45d32..8dc60041e 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -157,7 +157,7 @@ static UICompositeViewDescription *compositeDescription = nil; if(addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; @@ -166,6 +166,7 @@ static UICompositeViewDescription *compositeDescription = nil; address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); @@ -234,10 +235,11 @@ static UICompositeViewDescription *compositeDescription = nil; if (addr != NULL) { // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress != NULL) { [addressButton setTitle:[NSString stringWithUTF8String:lAddress] forState:UIControlStateNormal]; [addressButton setHidden:FALSE]; + ms_free(lAddress); } else { [addressButton setHidden:TRUE]; } @@ -280,7 +282,9 @@ static UICompositeViewDescription *compositeDescription = nil; addr = callLog->to; } - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); + if(lAddress == NULL) + return; NSString *displayName = nil; if(contact != nil) { @@ -303,6 +307,7 @@ static UICompositeViewDescription *compositeDescription = nil; [controller call:[NSString stringWithUTF8String:lAddress]]; } } + ms_free(lAddress); } @end diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index 28d85ccc2..ad0c33234 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -137,7 +137,7 @@ if(addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { address = [NSString stringWithUTF8String:lAddress]; NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:address]; @@ -146,6 +146,7 @@ displayName = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 251a94f84..7553a0fbe 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -97,7 +97,7 @@ if (addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; @@ -106,6 +106,7 @@ address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 202183dcb..1cce9fbc8 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -330,15 +330,21 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo - (void)onTextReceived:(LinphoneCore *)lc room:(LinphoneChatRoom *)room from:(const LinphoneAddress *)from message:(const char *)message { + char *fromStr = linphone_address_as_string_uri_only(from); + if(fromStr == NULL) + return; + // Save message in database ChatModel *chat = [[ChatModel alloc] init]; - [chat setRemoteContact:[NSString stringWithUTF8String:linphone_address_as_string_uri_only(from)]]; + [chat setRemoteContact:[NSString stringWithUTF8String:fromStr]]; [chat setMessage:[NSString stringWithUTF8String:message]]; [chat setDirection:[NSNumber numberWithInt:1]]; [chat setTime:[NSDate date]]; [chat setRead:[NSNumber numberWithInt:0]]; [chat create]; + ms_free(fromStr); + // Post event NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: [NSValue valueWithPointer:room], @"room", diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index ea2b481a3..0c863581b 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -171,7 +171,7 @@ if(addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; @@ -180,6 +180,7 @@ address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 0c95d3f48..8b2730618 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -118,7 +118,7 @@ if(addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; @@ -126,6 +126,7 @@ address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index cf89a8ac8..bb467a11a 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -483,7 +483,7 @@ static PhoneMainView* phoneMainViewInstance=nil; if(addr != NULL) { BOOL useLinphoneAddress = true; // contact name - const char* lAddress = linphone_address_as_string_uri_only(addr); + char* lAddress = linphone_address_as_string_uri_only(addr); if(lAddress) { NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[NSString stringWithUTF8String:lAddress]]; ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress]; @@ -491,6 +491,7 @@ static PhoneMainView* phoneMainViewInstance=nil; address = [FastAddressBook getContactDisplayName:contact]; useLinphoneAddress = false; } + ms_free(lAddress); } if(useLinphoneAddress) { const char* lDisplayName = linphone_address_get_display_name(addr); From 6d9f40a9a1628ff995a7a6ebeb1b7f2c433d9be3 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 24 Jul 2012 11:52:09 +0200 Subject: [PATCH 070/397] Use LinphoneManager singleton Fix Rotation issues --- Classes/LinphoneAppDelegate.m | 4 - Classes/LinphoneManager.m | 12 ++- .../LinphoneUI/UICompositeViewController.m | 89 ++++++++++--------- Classes/LinphoneUI/UIStateBar.m | 19 ++++ Classes/PhoneMainView.m | 10 +++ .../TPMultiLayoutViewController.m | 11 +-- 6 files changed, 87 insertions(+), 58 deletions(-) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index a14d4c1da..3f23e2296 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -186,10 +186,6 @@ int __aeabi_idiv(int a, int b) { } - (void)startApplication { - /* explicitely instanciate LinphoneManager */ - LinphoneManager* lm = [[LinphoneManager alloc] init]; - assert(lm == [LinphoneManager instance]); - [[LinphoneManager instance] startLibLinphone]; [self setupUI]; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 1cce9fbc8..e3c33e0d1 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -139,6 +139,10 @@ struct codec_name_pref_table codec_pref_table[]={ } + (LinphoneManager*)instance { + if(theLinphoneManager == nil) { + theLinphoneManager = [LinphoneManager alloc]; + [theLinphoneManager init]; + } return theLinphoneManager; } @@ -146,11 +150,9 @@ struct codec_name_pref_table codec_pref_table[]={ #pragma mark - Lifecycle Functions - (id)init { - assert (!theLinphoneManager); if ((self = [super init])) { fastAddressBook = [[FastAddressBook alloc] init]; database = NULL; - theLinphoneManager = self; settingsStore = nil; self.defaultExpires = 600; [self openDatabase]; @@ -161,6 +163,7 @@ struct codec_name_pref_table codec_pref_table[]={ - (void)dealloc { [fastAddressBook release]; [self closeDatabase]; + [settingsStore release]; [super dealloc]; } @@ -642,11 +645,6 @@ static LinphoneCoreVTable linphonec_vtable = { proxyReachability=nil; } - - if(settingsStore != nil) { - [settingsStore release]; - } - } - (BOOL)enterBackgroundMode { diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index dbb85c155..ea275ea23 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -174,31 +174,39 @@ - (void)orientationChanged:(NSNotification *)notification { currentOrientation = [[UIDevice currentDevice] orientation]; - } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:currentOrientation]; - [UIView beginAnimations:@"Rotation" context:nil]; - [UIView setAnimationDuration:duration]; - [self applySubLayoutsForInterfaceOrientation:correctOrientation]; + UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; + [super willRotateToInterfaceOrientation:correctOrientation duration:duration]; + [contentViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; + [tabBarViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; + [stateBarViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; [self update:nil tabBar:nil fullscreen:nil]; - [UIView commitAnimations]; +} + +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; + [super willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; + [contentViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; + [tabBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; + [stateBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; +} + +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { + [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [contentViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [tabBarViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [stateBarViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { if(currentViewDescription != nil) { - if (interfaceOrientation == UIInterfaceOrientationPortrait || - interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) { - if ([currentViewDescription portraitMode]) { - return YES; - } + if (UIInterfaceOrientationIsPortrait(interfaceOrientation) && [currentViewDescription portraitMode]) { + return YES; } - if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || - interfaceOrientation == UIInterfaceOrientationLandscapeRight) { - if ([currentViewDescription landscapeMode]) { - return YES; - } + if (UIInterfaceOrientationIsLandscape(interfaceOrientation) && [currentViewDescription landscapeMode]) { + return YES; } return NO; } @@ -265,28 +273,24 @@ return UIInterfaceOrientationPortrait; } -- (void)applySubLayoutsForInterfaceOrientation:(UIInterfaceOrientation)newOrientation { - [self applyLayoutForInterfaceOrientation:newOrientation]; - [contentViewController willRotateToInterfaceOrientation:newOrientation duration:0]; - [contentViewController willAnimateRotationToInterfaceOrientation:newOrientation duration:0]; - if ([contentViewController isKindOfClass:[TPMultiLayoutViewController class]]) { - [(TPMultiLayoutViewController*)contentViewController applyLayoutForInterfaceOrientation:newOrientation]; - } - [contentViewController didRotateFromInterfaceOrientation: newOrientation]; +- (void)updateInterfaceOrientation:(UIInterfaceOrientation)correctOrientation { + UIInterfaceOrientation orientation; - [tabBarViewController willRotateToInterfaceOrientation:newOrientation duration:0]; - [tabBarViewController willAnimateRotationToInterfaceOrientation:newOrientation duration:0]; - if ([tabBarViewController isKindOfClass:[TPMultiLayoutViewController class]]) { - [(TPMultiLayoutViewController*)tabBarViewController applyLayoutForInterfaceOrientation:newOrientation]; - } - [tabBarViewController didRotateFromInterfaceOrientation: newOrientation]; + orientation = self.interfaceOrientation; + [super willRotateToInterfaceOrientation:correctOrientation duration:0]; + [super didRotateFromInterfaceOrientation:orientation]; - [stateBarViewController willRotateToInterfaceOrientation:newOrientation duration:0]; - [stateBarViewController willAnimateRotationToInterfaceOrientation:newOrientation duration:0]; - if ([stateBarViewController isKindOfClass:[TPMultiLayoutViewController class]]) { - [(TPMultiLayoutViewController*)stateBarViewController applyLayoutForInterfaceOrientation:newOrientation]; - } - [stateBarViewController didRotateFromInterfaceOrientation: newOrientation]; + orientation = contentViewController.interfaceOrientation; + [contentViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; + [contentViewController didRotateFromInterfaceOrientation:orientation]; + + orientation = tabBarViewController.interfaceOrientation; + [tabBarViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; + [contentViewController didRotateFromInterfaceOrientation:orientation]; + + orientation = stateBarViewController.interfaceOrientation; + [stateBarViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; + [stateBarViewController didRotateFromInterfaceOrientation:orientation]; } #define IPHONE_STATUSBAR_HEIGHT 20 @@ -326,12 +330,17 @@ // Update rotation UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:currentOrientation]; - UIDeviceOrientation screenOrientation = [[UIApplication sharedApplication] statusBarOrientation]; - if(screenOrientation != correctOrientation) { - // Force the screen in correct rotation + if([UIApplication sharedApplication].statusBarOrientation != correctOrientation) { + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIDeviceOrientationDidChangeNotification + object:nil]; [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"setOrientation:") withObject:(id)correctOrientation]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(orientationChanged:) + name:UIDeviceOrientationDidChangeNotification + object:nil]; } - [self applySubLayoutsForInterfaceOrientation:correctOrientation]; + [self updateInterfaceOrientation:correctOrientation]; } else { oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; } diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index da0d611c3..45914a3b9 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -242,4 +242,23 @@ NSTimer *callSecurityTimer; } } + +#pragma mark - TPMultiLayoutViewController Functions + +- (NSDictionary*)attributesForView:(UIView*)view { + NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; + + [attributes setObject:[NSValue valueWithCGRect:view.frame] forKey:@"frame"]; + [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"]; + [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"]; + + return attributes; +} + +- (void)applyAttributes:(NSDictionary*)attributes toView:(UIView*)view { + view.frame = [[attributes objectForKey:@"frame"] CGRectValue]; + view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue]; + view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue]; +} + @end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index bb467a11a..143a32343 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -171,6 +171,16 @@ static PhoneMainView* phoneMainViewInstance=nil; [mainViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; } +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [mainViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; +} + +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { + [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [mainViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; +} + #pragma mark - Event Functions diff --git a/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m index 76fccb14c..f57fdf46d 100755 --- a/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m +++ b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m @@ -55,16 +55,12 @@ [super dealloc]; } -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { - return TRUE; -} - --(void)viewWillAppear:(BOOL)animated { +- (void)viewWillAppear:(BOOL)animated { // Display correct layout for orientation - if ( (UIInterfaceOrientationIsPortrait(self.interfaceOrientation) && !viewIsCurrentlyPortrait) || + /*if ( (UIInterfaceOrientationIsPortrait(self.interfaceOrientation) && !viewIsCurrentlyPortrait) || (UIInterfaceOrientationIsLandscape(self.interfaceOrientation) && viewIsCurrentlyPortrait) ) { [self applyLayoutForInterfaceOrientation:self.interfaceOrientation]; - } + }*/ [super viewWillAppear:animated]; } @@ -77,6 +73,7 @@ } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; if ( (UIInterfaceOrientationIsPortrait(toInterfaceOrientation) && !viewIsCurrentlyPortrait) || (UIInterfaceOrientationIsLandscape(toInterfaceOrientation) && viewIsCurrentlyPortrait) ) { [self applyLayoutForInterfaceOrientation:toInterfaceOrientation]; From cddf918910dc031af57f5901404d0207d0cb16e6 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 24 Jul 2012 14:19:41 +0200 Subject: [PATCH 071/397] Fix application startup Improve sqlite3 usage --- Classes/ChatRoomViewController.m | 1 + Classes/LinphoneAppDelegate.h | 2 + Classes/LinphoneAppDelegate.m | 34 +++++++++++--- Classes/LinphoneManager.m | 1 + Classes/LinphoneUI/UICallBar.xib | 16 ++++++- Classes/LinphoneUI/UIStateBar.xib | 8 ++-- Classes/Model/ChatModel.m | 74 +++++++++++++++++++++---------- Classes/SettingsViewController.m | 1 + 8 files changed, 100 insertions(+), 37 deletions(-) diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index b1479529e..4e6f12c64 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -188,6 +188,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Save message in database ChatModel *chat = [[ChatModel alloc] init]; [chat setRemoteContact:remoteAddress]; + [chat setLocalContact:@""]; [chat setMessage:message]; [chat setDirection:[NSNumber numberWithInt:0]]; [chat setTime:[NSDate date]]; diff --git a/Classes/LinphoneAppDelegate.h b/Classes/LinphoneAppDelegate.h index 0f348a891..767eb32ab 100644 --- a/Classes/LinphoneAppDelegate.h +++ b/Classes/LinphoneAppDelegate.h @@ -26,6 +26,7 @@ @interface LinphoneAppDelegate : NSObject { UIWindow *window; CTCallCenter* callCenter; + BOOL started; } - (void)loadDefaultSettings:(NSDictionary *) appDefaults; @@ -35,6 +36,7 @@ - (void)startApplication; @property (nonatomic, retain) IBOutlet UIWindow *window; +@property (assign) BOOL started; @end diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 3f23e2296..ce49f55ce 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -41,6 +41,26 @@ int __aeabi_idiv(int a, int b) { @implementation LinphoneAppDelegate @synthesize window; +@synthesize started; + + +#pragma mark - Lifecycle Functions + +- (id)init { + self = [super init]; + if(self != nil) { + self->started = FALSE; + } + return self; +} + +- (void)dealloc { + [window release]; + [super dealloc]; +} + + +#pragma mark - - (void)handleGSMCallInteration: (id) cCenter { CTCallCenter* ct = (CTCallCenter*) cCenter; @@ -97,10 +117,10 @@ int __aeabi_idiv(int a, int b) { && ![[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]) { // autoboot disabled, doing nothing return; - } else if ([LinphoneManager instance] == nil) { - [self startApplication]; } + [self startApplication]; + [[LinphoneManager instance] becomeActive]; if (callCenter == nil) { @@ -186,6 +206,11 @@ int __aeabi_idiv(int a, int b) { } - (void)startApplication { + if(started) + return; + + started = TRUE; + [[LinphoneManager instance] startLibLinphone]; [self setupUI]; @@ -199,11 +224,6 @@ int __aeabi_idiv(int a, int b) { - (void)applicationWillTerminate:(UIApplication *)application { } -- (void)dealloc { - [window release]; - [super dealloc]; -} - - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { if([notification.userInfo objectForKey:@"call"] != nil) { LinphoneCall* call; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index e3c33e0d1..4eb34c7fc 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -339,6 +339,7 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo // Save message in database ChatModel *chat = [[ChatModel alloc] init]; + [chat setLocalContact:@""]; [chat setRemoteContact:[NSString stringWithUTF8String:fromStr]]; [chat setMessage:[NSString stringWithUTF8String:message]]; [chat setDirection:[NSNumber numberWithInt:1]]; diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index d5b86f993..4a967672c 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -425,6 +425,7 @@ 0 0 NO + NO NSImage @@ -461,6 +462,7 @@ 0 0 NO + NO NSImage @@ -1107,6 +1109,7 @@ 0 0 NO + NO NSImage @@ -1139,6 +1142,7 @@ 0 0 NO + NO NSImage @@ -1697,6 +1701,14 @@ 138 + + + dialerButton + + + + 139 + onPadClick: @@ -2366,7 +2378,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2434,7 +2446,7 @@ - 138 + 139 diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib index 0b3c3d9af..08f79fb0a 100644 --- a/Classes/LinphoneUI/UIStateBar.xib +++ b/Classes/LinphoneUI/UIStateBar.xib @@ -103,7 +103,7 @@ 292 - {{219, 3}, {27, 17}} + {{252, 3}, {27, 17}} @@ -115,7 +115,7 @@ 292 - {{254, 3}, {27, 17}} + {{287, 3}, {27, 17}} @@ -192,7 +192,7 @@ 292 - {{378, 3}, {27, 17}} + {{412, 3}, {27, 17}} @@ -204,7 +204,7 @@ 292 - {{413, 3}, {27, 17}} + {{447, 3}, {27, 17}} diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m index c538d8028..88eec26d8 100644 --- a/Classes/Model/ChatModel.m +++ b/Classes/Model/ChatModel.m @@ -68,14 +68,22 @@ [LinphoneLogger logc:LinphoneLoggerError format:"Database not ready"]; return; } - const char *sql = [[NSString stringWithFormat:@"INSERT INTO chat (localContact, remoteContact, direction, message, time, read) VALUES (\"%@\", \"%@\", %i, \"%@\", %f, %i)", - localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], [read intValue]] UTF8String]; + + const char *sql = "INSERT INTO chat (localContact, remoteContact, direction, message, time, read) VALUES (@LOCALCONTACT, @REMOTECONTACT, @DIRECTION, @MESSAGE, @TIME, @READ)"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } + // Prepare statement + sqlite3_bind_text(sqlStatement, 1, [localContact UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_text(sqlStatement, 2, [remoteContact UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_int(sqlStatement, 3, [direction intValue]); + sqlite3_bind_text(sqlStatement, 4, [message UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_double(sqlStatement, 5, [time timeIntervalSince1970]); + sqlite3_bind_int(sqlStatement, 6, [read intValue]); + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); @@ -95,14 +103,16 @@ return nil; } - const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE id=%i", - [chatId intValue]] UTF8String]; + const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE id=@ID"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return nil; } + // Prepare statement + sqlite3_bind_int(sqlStatement, 1, [chatId intValue]); + ChatModel* line = nil; int err = sqlite3_step(sqlStatement); if (err == SQLITE_ROW) { @@ -124,14 +134,22 @@ return; } - const char *sql = [[NSString stringWithFormat:@"UPDATE chat SET localContact=\"%@\", remoteContact=\"%@\", direction=%i, message=\"%@\", time=%f, read=%i WHERE id=%i", - localContact, remoteContact, [direction intValue], message, [time timeIntervalSince1970], [read intValue], [chatId intValue]] UTF8String]; + const char *sql = "UPDATE chat SET localContact=@LOCALCONTACT, remoteContact=@REMOTECONTACT, direction=@DIRECTION, message=@MESSAGE, time=@TIME, read=@READ WHERE id=@ID"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } + // Prepare statement + sqlite3_bind_text(sqlStatement, 1, [localContact UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_text(sqlStatement, 2, [remoteContact UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_int(sqlStatement, 3, [direction intValue]); + sqlite3_bind_text(sqlStatement, 4, [message UTF8String], -1, SQLITE_STATIC); + sqlite3_bind_double(sqlStatement, 5, [time timeIntervalSince1970]); + sqlite3_bind_int(sqlStatement, 6, [read intValue]); + sqlite3_bind_int(sqlStatement, 7, [chatId intValue]); + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); @@ -148,14 +166,16 @@ return; } - const char *sql = [[NSString stringWithFormat:@"DELETE FROM chat WHERE id=%i", - [chatId intValue]] UTF8String]; + const char *sql = "DELETE FROM chat WHERE id=@ID"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } + // Prepare statement + sqlite3_bind_int(sqlStatement, 1, [chatId intValue]); + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); @@ -178,7 +198,7 @@ const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read FROM chat GROUP BY remoteContact ORDER BY time DESC"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)]; return array; } @@ -208,14 +228,16 @@ return array; } - const char *sql = [[NSString stringWithFormat:@"SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE remoteContact=\"%@\" ORDER BY time ASC", - contact] UTF8String]; + const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE remoteContact=@REMOTECONTACT ORDER BY time ASC"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)]; return array; } + // Prepare statement + sqlite3_bind_text(sqlStatement, 1, [contact UTF8String], -1, SQLITE_STATIC); + int err; while ((err = sqlite3_step(sqlStatement)) == SQLITE_ROW) { ChatModel *line = [[ChatModel alloc] initWithData:sqlStatement]; @@ -240,14 +262,16 @@ return; } - const char *sql = [[NSString stringWithFormat:@"DELETE FROM chat WHERE remoteContact=\"%@\"", - contact] UTF8String]; + const char *sql = "DELETE FROM chat WHERE remoteContact=@REMOTECONTACT"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } + // Prepare statement + sqlite3_bind_text(sqlStatement, 1, [contact UTF8String], -1, SQLITE_STATIC); + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); @@ -265,9 +289,9 @@ return count; } - const char *sql = [[NSString stringWithFormat:@"SELECT count(*) FROM chat WHERE read=0"] UTF8String]; + const char *sql = "SELECT count(*) FROM chat WHERE read=0"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return count; } @@ -291,14 +315,16 @@ return; } - const char *sql = [[NSString stringWithFormat:@"UPDATE chat SET read=1 WHERE remoteContact=\"%@\"", - contact] UTF8String]; + const char *sql = "UPDATE chat SET read=1 WHERE remoteContact=@REMOTECONTACT"; sqlite3_stmt *sqlStatement; - if (sqlite3_prepare(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { + if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) { [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)]; return; } + // Prepare statement + sqlite3_bind_text(sqlStatement, 1, [contact UTF8String], -1, SQLITE_STATIC); + if (sqlite3_step(sqlStatement) != SQLITE_DONE) { [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)]; sqlite3_finalize(sqlStatement); diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index c097ce526..69f5085d6 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -75,6 +75,7 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)viewDidLoad { [super viewDidLoad]; + settingsController.showDoneButton = FALSE; settingsController.delegate = self; settingsController.showCreditsFooter = FALSE; settingsController.hiddenKeys = [self findHiddenKeys]; From 94bea3e5d408859fc99885293346ddba478ba2e8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 25 Jul 2012 10:06:07 +0200 Subject: [PATCH 072/397] Update exosip (as previous overllaped commit) --- submodules/externals/exosip | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/externals/exosip b/submodules/externals/exosip index 8c42924ae..dfe434328 160000 --- a/submodules/externals/exosip +++ b/submodules/externals/exosip @@ -1 +1 @@ -Subproject commit 8c42924ae9009f6003e98d29638e078ca1bd7c71 +Subproject commit dfe434328c0b0cbbaee669d40b27e09fea5f49ab From 894024075bba85428abaa83cb8bacaea94e91a2b Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 25 Jul 2012 10:09:58 +0200 Subject: [PATCH 073/397] Fix attributes save in CallBar --- Classes/LinphoneUI/UICallBar.m | 59 +++++++++++++++++++++++++--------- 1 file changed, 44 insertions(+), 15 deletions(-) diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index d8567a044..5662cebf0 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -448,14 +448,22 @@ [attributes setObject:[NSValue valueWithCGRect:view.frame] forKey:@"frame"]; [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"]; if([view isKindOfClass:[UIButton class]]) { - UIButton *button = (UIButton *)view; - [attributes setObject:[button imageForState:UIControlStateNormal]forKey:@"image-normal"]; - [attributes setObject:[button imageForState:UIControlStateHighlighted]forKey:@"image-highlighted"]; - [attributes setObject:[button imageForState:UIControlStateDisabled]forKey:@"image-disabled"]; - [attributes setObject:[button imageForState:UIControlStateSelected]forKey:@"image-selected"]; - [attributes setObject:[button imageForState:UIControlStateDisabled | UIControlStateHighlighted]forKey:@"image-disabled-highlighted"]; - [attributes setObject:[button imageForState:UIControlStateSelected | UIControlStateHighlighted]forKey:@"image-selected-highlighted"]; - [attributes setObject:[button imageForState:UIControlStateSelected | UIControlStateDisabled]forKey:@"image-selected-disabled"]; + UIButton *button = (UIButton *)view; + [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateNormal] key:@"image-normal"]; + [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateHighlighted] key:@"image-highlighted"]; + [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateDisabled] key:@"image-disabled"]; + [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected] key:@"image-selected"]; + [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"image-disabled-highlighted"]; + [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"image-selected-highlighted"]; + [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateDisabled] key:@"image-selected-disabled"]; + + [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateNormal] key:@"background-normal"]; + [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateHighlighted] key:@"background-highlighted"]; + [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled] key:@"background-disabled"]; + [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected] key:@"background-selected"]; + [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"background-disabled-highlighted"]; + [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"background-selected-highlighted"]; + [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateDisabled] key:@"background-selected-disabled"]; } [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"]; @@ -467,15 +475,36 @@ view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue]; if([view isKindOfClass:[UIButton class]]) { UIButton *button = (UIButton *)view; - [button setImage:[attributes objectForKey:@"image-normal"] forState:UIControlStateNormal]; - [button setImage:[attributes objectForKey:@"image-highlighted"] forState:UIControlStateHighlighted]; - [button setImage:[attributes objectForKey:@"image-disabled"] forState:UIControlStateDisabled]; - [button setImage:[attributes objectForKey:@"image-selected"] forState:UIControlStateSelected]; - [button setImage:[attributes objectForKey:@"image-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted]; - [button setImage:[attributes objectForKey:@"image-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted]; - [button setImage:[attributes objectForKey:@"image-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled]; + [button setImage:[UICallBar getDictEntry:attributes key:@"image-normal"] forState:UIControlStateNormal]; + [button setImage:[UICallBar getDictEntry:attributes key:@"image-highlighted"] forState:UIControlStateHighlighted]; + [button setImage:[UICallBar getDictEntry:attributes key:@"image-disabled"] forState:UIControlStateDisabled]; + [button setImage:[UICallBar getDictEntry:attributes key:@"image-selected"] forState:UIControlStateSelected]; + [button setImage:[UICallBar getDictEntry:attributes key:@"image-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted]; + [button setImage:[UICallBar getDictEntry:attributes key:@"image-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted]; + [button setImage:[UICallBar getDictEntry:attributes key:@"image-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled]; + + [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-normal"] forState:UIControlStateNormal]; + [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-highlighted"] forState:UIControlStateHighlighted]; + [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-disabled"] forState:UIControlStateDisabled]; + [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-selected"] forState:UIControlStateSelected]; + [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted]; + [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted]; + [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled]; } view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue]; } ++ (void)addDictEntry:(NSMutableDictionary*)dict item:(id)item key:(id)key { + if(item != nil && key != nil) { + [dict setObject:item forKey:key]; + } +} + ++ (id)getDictEntry:(NSDictionary*)dict key:(id)key { + if(key != nil) { + return [dict objectForKey:key]; + } + return nil; +} + @end From afd591afa9940d2e15ba1dbfa86d90680dd40440 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 25 Jul 2012 18:25:13 +0200 Subject: [PATCH 074/397] Fix Dialer button in dialer bar Fix rotation animations --- Classes/InCallViewController.xib | 67 ++++++++++++------- Classes/LinphoneUI/UICallBar.xib | 6 +- .../LinphoneUI/UICompositeViewController.m | 8 ++- .../TPMultiLayoutViewController.m | 10 +-- 4 files changed, 57 insertions(+), 34 deletions(-) diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 2e36e4b97..cb842bcb8 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -47,13 +47,27 @@ 274 YES + + + 301 + {{-1000, -1000}, {2000, 2000}} + + + + _NS:9 + + 3 + MAA + + IBCocoaTouchFramework + 274 - {{1000, 1000}, {320, 460}} + {320, 460} - + _NS:196 3 @@ -64,20 +78,20 @@ 265 - {{1214, 1354}, {106, 106}} + {{214, 354}, {106, 106}} - + IBCocoaTouchFramework 301 - {{1137, 1214}, {37, 37}} + {{141, 212}, {37, 37}} - + _NS:1030 NO IBCocoaTouchFramework @@ -86,15 +100,12 @@ 0 - {{-1000, -1000}, {2320, 2460}} + {320, 460} - + _NS:196 - - 3 - MAA - + IBCocoaTouchFramework @@ -103,7 +114,7 @@ {{0, -10}, {320, 480}} - + _NS:418 YES @@ -134,7 +145,6 @@ {85, 33} - _NS:9 NO IBCocoaTouchFramework @@ -168,7 +178,7 @@ {320, 460} - + NO IBCocoaTouchFramework @@ -250,14 +260,6 @@ 109 - - - dataSource - - - - 168 - delegate @@ -266,6 +268,14 @@ 169 + + + dataSource + + + + 168 + preview @@ -324,6 +334,7 @@ + video @@ -364,6 +375,12 @@ callTableController + + 173 + + + background + 106 @@ -390,6 +407,7 @@ 160.IBUIButtonInspectorSelectedStateConfigurationMetadataKey 162.CustomClassName 162.IBPluginDependency + 173.IBPluginDependency 9.IBPluginDependency @@ -409,6 +427,7 @@ InCallTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -423,7 +442,7 @@ - 172 + 173 diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 4a967672c..322742dd5 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -1705,9 +1705,9 @@ dialerButton - + - 139 + 140 @@ -2446,7 +2446,7 @@ - 139 + 140 diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index ea275ea23..578224e03 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -182,7 +182,6 @@ [contentViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; [tabBarViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; [stateBarViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; - [self update:nil tabBar:nil fullscreen:nil]; } - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { @@ -191,6 +190,7 @@ [contentViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; [tabBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; [stateBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; + [self update:nil tabBar:nil fullscreen:nil]; } - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { @@ -278,18 +278,22 @@ orientation = self.interfaceOrientation; [super willRotateToInterfaceOrientation:correctOrientation duration:0]; + [super willAnimateRotationToInterfaceOrientation:correctOrientation duration:0]; [super didRotateFromInterfaceOrientation:orientation]; orientation = contentViewController.interfaceOrientation; [contentViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; + [contentViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:0]; [contentViewController didRotateFromInterfaceOrientation:orientation]; orientation = tabBarViewController.interfaceOrientation; [tabBarViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; - [contentViewController didRotateFromInterfaceOrientation:orientation]; + [tabBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:0]; + [tabBarViewController didRotateFromInterfaceOrientation:orientation]; orientation = stateBarViewController.interfaceOrientation; [stateBarViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; + [stateBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:0]; [stateBarViewController didRotateFromInterfaceOrientation:orientation]; } diff --git a/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m index f57fdf46d..668e0d747 100755 --- a/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m +++ b/Classes/Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m @@ -72,12 +72,12 @@ viewIsCurrentlyPortrait = UIInterfaceOrientationIsPortrait(newOrientation); } -- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; - if ( (UIInterfaceOrientationIsPortrait(toInterfaceOrientation) && !viewIsCurrentlyPortrait) || - (UIInterfaceOrientationIsLandscape(toInterfaceOrientation) && viewIsCurrentlyPortrait) ) { +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; + //if ( (UIInterfaceOrientationIsPortrait(toInterfaceOrientation) && !viewIsCurrentlyPortrait) || + // (UIInterfaceOrientationIsLandscape(toInterfaceOrientation) && viewIsCurrentlyPortrait) ) { [self applyLayoutForInterfaceOrientation:toInterfaceOrientation]; - } + //} } #pragma mark - Helpers From d8a7773ce715486f31012e2a3b4eb585f094ea8f Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 26 Jul 2012 11:03:08 +0200 Subject: [PATCH 075/397] Update No-GPL project --- Classes/DialerViewController.xib | 13 +- linphone.xcodeproj/project.pbxproj | 1367 ++++++++++++++-------------- 2 files changed, 712 insertions(+), 668 deletions(-) diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index cdb6ae58d..ccfa0f9c5 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -2,10 +2,10 @@ 784 - 11D50 + 11E53 2182 - 1138.32 - 568.00 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 1181 @@ -606,7 +606,6 @@ {{214, 0}, {106, 69}} - _NS:9 NO IBCocoaTouchFramework @@ -1734,9 +1733,9 @@ {220, 113} {220, 113} {220, 113} - {222, 135} - {16, 16} - {222, 135} + {214, 138} + {214, 138} + {214, 138} 1181 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index a4a447438..d1eef5517 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -18,7 +18,6 @@ 220FAD3710765B400068D98F /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2E10765B400068D98F /* libosipparser2.a */; }; 220FAD3810765B400068D98F /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2F10765B400068D98F /* libspeex.a */; }; 220FAD3910765B400068D98F /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD3010765B400068D98F /* libspeexdsp.a */; }; - 2211DB95147564B400DEE054 /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 2211DB94147564B400DEE054 /* Settings.bundle */; }; 2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; }; 2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; }; 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; }; @@ -63,19 +62,6 @@ 22BB1A69132FF16A005CD7AA /* UIEraseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22BB1A68132FF16A005CD7AA /* UIEraseButton.m */; }; 22C755601317E59C007BC101 /* UIBluetoothButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */; }; 22D1B68112A3E0BE001AE361 /* libresolv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 22D1B68012A3E0BE001AE361 /* libresolv.dylib */; }; - 22D8F11F147548E2008C97DB /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc */; }; - 22D8F120147548E2008C97DB /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22F2508D107141E100AC9B3F /* DialerViewController.xib */; }; - 22D8F121147548E2008C97DB /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; }; - 22D8F124147548E2008C97DB /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; - 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; - 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; }; - 22D8F12E147548E2008C97DB /* linphone_icon_57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* linphone_icon_57.png */; }; - 22D8F137147548E2008C97DB /* linphone-banner.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2F911ABB76400628906 /* linphone-banner.png */; }; - 22D8F138147548E2008C97DB /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; }; - 22D8F139147548E2008C97DB /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; - 22D8F13B147548E2008C97DB /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; }; - 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; }; - 22D8F142147548E2008C97DB /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; 22D8F144147548E2008C97DB /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 22D8F145147548E2008C97DB /* LinphoneAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */; }; 22D8F146147548E2008C97DB /* DialerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* DialerViewController.m */; }; @@ -122,7 +108,6 @@ 22D8F17B147548E2008C97DB /* libmsamr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED51344B0EF00F6EF27 /* libmsamr.a */; }; 22D8F17E147548E2008C97DB /* libSKP_SILK_SDK.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AA1472527D0037138E /* libSKP_SILK_SDK.a */; }; 22D8F17F147548E2008C97DB /* libsrtp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AB1472527D0037138E /* libsrtp.a */; }; - 22D8F180147548E2008C97DB /* libmssilk.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226183AF147259670037138E /* libmssilk.a */; }; 22E0A822111C44E100B04932 /* MoreViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81C111C44E100B04932 /* MoreViewController.m */; }; 22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; }; 22E0A824111C44E100B04932 /* ConsoleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22E0A81F111C44E100B04932 /* ConsoleViewController.m */; }; @@ -138,11 +123,9 @@ 340751E7150F38FD00B89C47 /* UIVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIVideoButton.m */; }; 340751E8150F38FD00B89C47 /* UIVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIVideoButton.m */; }; 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; - 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; }; 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; }; 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; - 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; 344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDE71484E723007420B6 /* libzrtpcpp.a */; }; 344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; 344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -154,93 +137,55 @@ C90FAA7915AF54E6002091CB /* HistoryDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C90FAA7715AF54E6002091CB /* HistoryDetailsViewController.m */; }; C90FAA7A15AF54E6002091CB /* HistoryDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C90FAA7715AF54E6002091CB /* HistoryDetailsViewController.m */; }; C90FAA7B15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */; }; - C90FAA7C15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */; }; C9C8254315AE204D00D493FA /* options_add_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8253F15AE204D00D493FA /* options_add_disabled.png */; }; - C9C8254415AE204D00D493FA /* options_add_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8253F15AE204D00D493FA /* options_add_disabled.png */; }; C9C8254515AE204D00D493FA /* options_transfer_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254015AE204D00D493FA /* options_transfer_disabled.png */; }; - C9C8254615AE204D00D493FA /* options_transfer_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254015AE204D00D493FA /* options_transfer_disabled.png */; }; C9C8254715AE204D00D493FA /* transfer_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254115AE204D00D493FA /* transfer_call_default.png */; }; - C9C8254815AE204D00D493FA /* transfer_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254115AE204D00D493FA /* transfer_call_default.png */; }; C9C8254915AE204D00D493FA /* transfer_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254215AE204D00D493FA /* transfer_call_over.png */; }; - C9C8254A15AE204D00D493FA /* transfer_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254215AE204D00D493FA /* transfer_call_over.png */; }; C9C8254C15AE207B00D493FA /* options_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254B15AE207B00D493FA /* options_selected.png */; }; - C9C8254D15AE207B00D493FA /* options_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254B15AE207B00D493FA /* options_selected.png */; }; C9C8254F15AE256100D493FA /* transfer_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254E15AE256100D493FA /* transfer_call_disabled.png */; }; - C9C8255015AE256100D493FA /* transfer_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254E15AE256100D493FA /* transfer_call_disabled.png */; }; D3119E7215B6A4710005D4A4 /* contacts_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3119E7015B6A4710005D4A4 /* contacts_back_default.png */; }; - D3119E7315B6A4710005D4A4 /* contacts_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3119E7015B6A4710005D4A4 /* contacts_back_default.png */; }; D3119E7415B6A4710005D4A4 /* contacts_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3119E7115B6A4710005D4A4 /* contacts_back_over.png */; }; - D3119E7515B6A4710005D4A4 /* contacts_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3119E7115B6A4710005D4A4 /* contacts_back_over.png */; }; D3128FE115AABC7E00A2147A /* ContactDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */; }; D3128FE215AABC7E00A2147A /* ContactDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */; }; D3128FE315AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */; }; - D3128FE415AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */; }; D3128FEF15AABE4E00A2147A /* contact_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE715AABE4E00A2147A /* contact_back_default.png */; }; - D3128FF015AABE4E00A2147A /* contact_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE715AABE4E00A2147A /* contact_back_default.png */; }; D3128FF115AABE4E00A2147A /* contact_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE815AABE4E00A2147A /* contact_back_over.png */; }; - D3128FF215AABE4E00A2147A /* contact_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE815AABE4E00A2147A /* contact_back_over.png */; }; D3128FF315AABE4E00A2147A /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; }; - D3128FF415AABE4E00A2147A /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; }; D3128FF515AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; - D3128FF615AABE4E00A2147A /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; D3157A8A15B4466F00DD8C4C /* history_details_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8815B4466F00DD8C4C /* history_details_add_default.png */; }; - D3157A8B15B4466F00DD8C4C /* history_details_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8815B4466F00DD8C4C /* history_details_add_default.png */; }; D3157A8C15B4466F00DD8C4C /* history_details_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8915B4466F00DD8C4C /* history_details_add_over.png */; }; - D3157A8D15B4466F00DD8C4C /* history_details_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8915B4466F00DD8C4C /* history_details_add_over.png */; }; D3157A9015B446CB00DD8C4C /* history_details_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */; }; - D3157A9115B446CB00DD8C4C /* history_details_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */; }; D3157A9215B446CB00DD8C4C /* history_details_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */; }; - D3157A9315B446CB00DD8C4C /* history_details_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */; }; D3196D3415A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; - D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3115A321E2007FEEBA /* options_add_over.png */; }; - D3196D3715A321E3007FEEBA /* options_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3115A321E2007FEEBA /* options_add_over.png */; }; D3196D3815A321E3007FEEBA /* options_transfer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3215A321E3007FEEBA /* options_transfer_default.png */; }; - D3196D3915A321E3007FEEBA /* options_transfer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3215A321E3007FEEBA /* options_transfer_default.png */; }; D3196D3A15A321E3007FEEBA /* options_transfer_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3315A321E3007FEEBA /* options_transfer_over.png */; }; - D3196D3B15A321E3007FEEBA /* options_transfer_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3315A321E3007FEEBA /* options_transfer_over.png */; }; D3196D3E15A32BD8007FEEBA /* UITransferButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D3196D3D15A32BD8007FEEBA /* UITransferButton.m */; }; D3196D3F15A32BD8007FEEBA /* UITransferButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D3196D3D15A32BD8007FEEBA /* UITransferButton.m */; }; D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */; }; D31AAF63159B5B6F002C6B02 /* conference_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* conference_default.png */; }; - D31AAF64159B5B6F002C6B02 /* conference_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* conference_default.png */; }; D31AAF65159B5B6F002C6B02 /* conference_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF62159B5B6E002C6B02 /* conference_over.png */; }; - D31AAF66159B5B6F002C6B02 /* conference_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF62159B5B6E002C6B02 /* conference_over.png */; }; D31AAF6E159B65E1002C6B02 /* call_state_ringing_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF6D159B65E1002C6B02 /* call_state_ringing_default.png */; }; - D31AAF6F159B65E1002C6B02 /* call_state_ringing_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF6D159B65E1002C6B02 /* call_state_ringing_default.png */; }; D31AC4B0158A29C600C2638B /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; }; - D31AC4B1158A29C600C2638B /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; }; D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */; }; D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D31B4B1F159876C0002E6C72 /* UICompositeViewController.m */; }; D31B4B23159876C0002E6C72 /* UICompositeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */; }; - D31B4B24159876C0002E6C72 /* UICompositeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */; }; D31B4B281598A390002E6C72 /* avatar_unknown.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B261598A390002E6C72 /* avatar_unknown.png */; }; - D31B4B291598A390002E6C72 /* avatar_unknown.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B261598A390002E6C72 /* avatar_unknown.png */; }; D31B4B2A1598A390002E6C72 /* avatar_unknown_small.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B271598A390002E6C72 /* avatar_unknown_small.png */; }; - D31B4B2B1598A390002E6C72 /* avatar_unknown_small.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B271598A390002E6C72 /* avatar_unknown_small.png */; }; D31C9C90158A1C1000756B45 /* call_status_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8D158A1C1000756B45 /* call_status_incoming.png */; }; - D31C9C91158A1C1000756B45 /* call_status_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8D158A1C1000756B45 /* call_status_incoming.png */; }; D31C9C92158A1C1000756B45 /* call_status_missed.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8E158A1C1000756B45 /* call_status_missed.png */; }; - D31C9C93158A1C1000756B45 /* call_status_missed.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8E158A1C1000756B45 /* call_status_missed.png */; }; D31C9C94158A1C1000756B45 /* call_status_outgoing.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8F158A1C1000756B45 /* call_status_outgoing.png */; }; - D31C9C95158A1C1000756B45 /* call_status_outgoing.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8F158A1C1000756B45 /* call_status_outgoing.png */; }; D31C9C98158A1CDF00756B45 /* UIHistoryCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */; }; D31C9C99158A1CDF00756B45 /* UIHistoryCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */; }; D3211BA6159C3D410098460B /* call_state_outgoing_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* call_state_outgoing_default.png */; }; - D3211BA7159C3D410098460B /* call_state_outgoing_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* call_state_outgoing_default.png */; }; D3211BB0159C4EF10098460B /* UIConferenceHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3211BAE159C4EF00098460B /* UIConferenceHeader.m */; }; D3211BB1159C4EF10098460B /* UIConferenceHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3211BAE159C4EF00098460B /* UIConferenceHeader.m */; }; D3211BB2159C4EF10098460B /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */; }; - D3211BB3159C4EF10098460B /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */; }; D3211BB9159C8A820098460B /* cell_call_first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* cell_call_first.png */; }; - D3211BBA159C8A820098460B /* cell_call_first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* cell_call_first.png */; }; D3211BBE159CBFD60098460B /* back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* back_default.png */; }; - D3211BBF159CBFD70098460B /* back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* back_default.png */; }; D3211BC0159CBFD70098460B /* back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* back_disabled.png */; }; - D3211BC1159CBFD70098460B /* back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* back_disabled.png */; }; D3211BC2159CBFD70098460B /* back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* back_over.png */; }; - D3211BC3159CBFD70098460B /* back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* back_over.png */; }; D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D32409C4158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D32460E6159D9AAD00BA7F3A /* UITransparentView.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460E5159D9AAD00BA7F3A /* UITransparentView.m */; }; @@ -250,176 +195,411 @@ D326483E1588950F00930C67 /* UICallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* UICallBar.m */; }; D326483F1588950F00930C67 /* UICallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* UICallBar.m */; }; D32648401588950F00930C67 /* UICallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D326483D1588950F00930C67 /* UICallBar.xib */; }; - D32648411588950F00930C67 /* UICallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D326483D1588950F00930C67 /* UICallBar.xib */; }; D32648441588F6FC00930C67 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32648431588F6FB00930C67 /* UIToggleButton.m */; }; D32648451588F6FC00930C67 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32648431588F6FB00930C67 /* UIToggleButton.m */; }; D32942A41594C94300556A1C /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D32942A31594C94200556A1C /* SettingsViewController.xib */; }; - D32942A51594C94300556A1C /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D32942A31594C94200556A1C /* SettingsViewController.xib */; }; D32B6E2415A5B2020033019F /* chat_send_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D32B6E2315A5B2020033019F /* chat_send_disabled.png */; }; - D32B6E2515A5B2020033019F /* chat_send_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D32B6E2315A5B2020033019F /* chat_send_disabled.png */; }; D32B6E2915A5BC440033019F /* ChatRoomTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B6E2815A5BC430033019F /* ChatRoomTableViewController.m */; }; D32B6E2A15A5BC440033019F /* ChatRoomTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B6E2815A5BC430033019F /* ChatRoomTableViewController.m */; }; D32B6E2C15A5C0800033019F /* database.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = D32B6E2B15A5C0800033019F /* database.sqlite */; }; - D32B6E2D15A5C0800033019F /* database.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = D32B6E2B15A5C0800033019F /* database.sqlite */; }; D32B6E2F15A5C0AC0033019F /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D32B6E2E15A5C0AC0033019F /* libsqlite3.dylib */; }; D32B6E3815A5C2430033019F /* ChatModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B6E3715A5C2430033019F /* ChatModel.m */; }; D32B6E3915A5C2430033019F /* ChatModel.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B6E3715A5C2430033019F /* ChatModel.m */; }; D32B9DFC15A2F131000B6DEC /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */; }; D32B9DFD15A2F131000B6DEC /* FastAddressBook.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */; }; D32D5AA715ADE5D9008593F3 /* button_alert_background_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D32D5AA515ADE5D9008593F3 /* button_alert_background_default.png */; }; - D32D5AA815ADE5D9008593F3 /* button_alert_background_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D32D5AA515ADE5D9008593F3 /* button_alert_background_default.png */; }; D32D5AA915ADE5D9008593F3 /* button_alert_background_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D32D5AA615ADE5D9008593F3 /* button_alert_background_over.png */; }; - D32D5AAA15ADE5D9008593F3 /* button_alert_background_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D32D5AA615ADE5D9008593F3 /* button_alert_background_over.png */; }; D3432A62158A4446001C6B0B /* led_connected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5C158A4446001C6B0B /* led_connected.png */; }; - D3432A63158A4446001C6B0B /* led_connected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5C158A4446001C6B0B /* led_connected.png */; }; D3432A64158A4446001C6B0B /* led_error.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5D158A4446001C6B0B /* led_error.png */; }; - D3432A65158A4446001C6B0B /* led_error.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5D158A4446001C6B0B /* led_error.png */; }; D3432A66158A4446001C6B0B /* call_quality_indicator_0.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */; }; - D3432A67158A4446001C6B0B /* call_quality_indicator_0.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */; }; D3432A68158A4446001C6B0B /* call_quality_indicator_1.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5F158A4446001C6B0B /* call_quality_indicator_1.png */; }; - D3432A69158A4446001C6B0B /* call_quality_indicator_1.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5F158A4446001C6B0B /* call_quality_indicator_1.png */; }; D3432A6A158A4446001C6B0B /* call_quality_indicator_2.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A60158A4446001C6B0B /* call_quality_indicator_2.png */; }; - D3432A6B158A4446001C6B0B /* call_quality_indicator_2.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A60158A4446001C6B0B /* call_quality_indicator_2.png */; }; D3432A6C158A4446001C6B0B /* call_quality_indicator_3.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A61158A4446001C6B0B /* call_quality_indicator_3.png */; }; - D3432A6D158A4446001C6B0B /* call_quality_indicator_3.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A61158A4446001C6B0B /* call_quality_indicator_3.png */; }; D3432A71158A45AF001C6B0B /* led_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A6F158A45AF001C6B0B /* led_inprogress.png */; }; - D3432A72158A45AF001C6B0B /* led_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A6F158A45AF001C6B0B /* led_inprogress.png */; }; D3432A73158A45AF001C6B0B /* led_disconnected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A70158A45AF001C6B0B /* led_disconnected.png */; }; - D3432A74158A45AF001C6B0B /* led_disconnected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A70158A45AF001C6B0B /* led_disconnected.png */; }; D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; }; D347347E1580E5F8003C7B8C /* history_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history_default.png */; }; D347347F1580E5F8003C7B8C /* history_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history_selected.png */; }; + D34BD61415C13A540070C209 /* libNinePatch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D389363215A6D3C500A3A3AA /* libNinePatch.a */; }; + D34BD61515C13B7B0070C209 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D32B6E2E15A5C0AC0033019F /* libsqlite3.dylib */; }; + D34BD61815C13D0B0070C209 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; }; + D34BD61915C13D0B0070C209 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; }; + D34BD61A15C13DB60070C209 /* accept_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* accept_default.png */; }; + D34BD61B15C13DB60070C209 /* accept_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F751582253100336684 /* accept_over.png */; }; + D34BD61C15C13DB60070C209 /* add_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_default.png */; }; + D34BD61D15C13DB60070C209 /* add_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_disabled.png */; }; + D34BD61E15C13DB60070C209 /* add_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39D159B0EEF005F692C /* add_call_over.png */; }; + D34BD61F15C13DB60070C209 /* add_contact_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add_contact_default.png */; }; + D34BD62015C13DB60070C209 /* add_contact_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6815861A53006C0DE4 /* add_contact_disabled.png */; }; + D34BD62115C13DB60070C209 /* add_contact_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6915861A53006C0DE4 /* add_contact_over.png */; }; + D34BD62215C13DB60070C209 /* avatar_shadow.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* avatar_shadow.png */; }; + D34BD62315C13DB60070C209 /* avatar_shadow_small.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D14E7B15A711700074A527 /* avatar_shadow_small.png */; }; + D34BD62415C13DB60070C209 /* avatar_unknown.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B261598A390002E6C72 /* avatar_unknown.png */; }; + D34BD62515C13DB60070C209 /* avatar_unknown_small.png in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B271598A390002E6C72 /* avatar_unknown_small.png */; }; + D34BD62615C13DB60070C209 /* back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* back_default.png */; }; + D34BD62715C13DB60070C209 /* back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* back_disabled.png */; }; + D34BD62815C13DB60070C209 /* back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* back_over.png */; }; + D34BD62915C13DB60070C209 /* background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* background.png */; }; + D34BD62A15C13DB60070C209 /* backspace_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7615861B1B006C0DE4 /* backspace_default.png */; }; + D34BD62B15C13DB60070C209 /* backspace_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758815932DE60066B1C1 /* backspace_disabled.png */; }; + D34BD62C15C13DB60070C209 /* backspace_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7715861B1B006C0DE4 /* backspace_over.png */; }; + D34BD62D15C13DB60070C209 /* button_alert_background_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D32D5AA515ADE5D9008593F3 /* button_alert_background_default.png */; }; + D34BD62E15C13DB60070C209 /* button_alert_background_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D32D5AA615ADE5D9008593F3 /* button_alert_background_over.png */; }; + D34BD62F15C13DB60070C209 /* button_background_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D35406F515A47E9E007E7E81 /* button_background_default.png */; }; + D34BD63015C13DB60070C209 /* button_background_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35406F615A47E9E007E7E81 /* button_background_over.png */; }; + D34BD63115C13DB60070C209 /* call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7015861ABD006C0DE4 /* call_default.png */; }; + D34BD63215C13DB60070C209 /* call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* call_disabled.png */; }; + D34BD63315C13DB60070C209 /* call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7115861ABD006C0DE4 /* call_over.png */; }; + D34BD63415C13DB60070C209 /* call_quality_indicator_0.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */; }; + D34BD63515C13DB60070C209 /* call_quality_indicator_1.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5F158A4446001C6B0B /* call_quality_indicator_1.png */; }; + D34BD63615C13DB60070C209 /* call_quality_indicator_2.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A60158A4446001C6B0B /* call_quality_indicator_2.png */; }; + D34BD63715C13DB60070C209 /* call_quality_indicator_3.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A61158A4446001C6B0B /* call_quality_indicator_3.png */; }; + D34BD63815C13DB60070C209 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; + D34BD63915C13DB60070C209 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; }; + D34BD63A15C13DB60070C209 /* call_state_outgoing_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* call_state_outgoing_default.png */; }; + D34BD63B15C13DB60070C209 /* call_state_pause_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43ED158F61EA0048BA40 /* call_state_pause_default.png */; }; + D34BD63C15C13DB60070C209 /* call_state_pause_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EE158F61EA0048BA40 /* call_state_pause_over.png */; }; + D34BD63D15C13DB60070C209 /* call_state_play_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EF158F61EA0048BA40 /* call_state_play_default.png */; }; + D34BD63E15C13DB60070C209 /* call_state_play_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43F0158F61EA0048BA40 /* call_state_play_over.png */; }; + D34BD63F15C13DB60070C209 /* call_state_ringing_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF6D159B65E1002C6B02 /* call_state_ringing_default.png */; }; + D34BD64015C13DB60070C209 /* call_status_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8D158A1C1000756B45 /* call_status_incoming.png */; }; + D34BD64115C13DB60070C209 /* call_status_missed.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8E158A1C1000756B45 /* call_status_missed.png */; }; + D34BD64215C13DB60070C209 /* call_status_outgoing.png in Resources */ = {isa = PBXBuildFile; fileRef = D31C9C8F158A1C1000756B45 /* call_status_outgoing.png */; }; + D34BD64315C13DB60070C209 /* cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1715B00F4100420DAC /* cancel_default.png */; }; + D34BD64415C13DB60070C209 /* cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1815B00F4100420DAC /* cancel_over.png */; }; + D34BD64515C13DB60070C209 /* cell_call.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* cell_call.png */; }; + D34BD64615C13DB60070C209 /* cell_call_first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* cell_call_first.png */; }; + D34BD64715C13DB60070C209 /* cell_call_first_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */; }; + D34BD64815C13DB60070C209 /* cell_call_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AE15A30B3D008497E8 /* cell_call_highlight.png */; }; + D34BD64915C13DB60070C209 /* cell_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* cell_conference.png */; }; + D34BD64A15C13DB60070C209 /* chat_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5401159852080037DC6B /* chat_add_default.png */; }; + D34BD64B15C13DB60070C209 /* chat_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5402159852080037DC6B /* chat_add_over.png */; }; + D34BD64C15C13DB60070C209 /* chat_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DB15A5831C0077328B /* chat_back_default.png */; }; + D34BD64D15C13DB60070C209 /* chat_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DC15A5831C0077328B /* chat_back_over.png */; }; + D34BD64E15C13DB60070C209 /* chat_bubble_incoming.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */; }; + D34BD64F15C13DB60070C209 /* chat_bubble_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7715A6CC3200F96BE5 /* chat_bubble_incoming.png */; }; + D34BD65015C13DB60070C209 /* chat_bubble_outgoing.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */; }; + D34BD65115C13DB60070C209 /* chat_bubble_outgoing.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7615A6CC3200F96BE5 /* chat_bubble_outgoing.png */; }; + D34BD65215C13DB60070C209 /* chat_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F11580FE3A00FA0D23 /* chat_default.png */; }; + D34BD65315C13DB60070C209 /* chat_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* chat_edit_default.png */; }; + D34BD65415C13DB60070C209 /* chat_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5400159852080037DC6B /* chat_edit_over.png */; }; + D34BD65515C13DB60070C209 /* chat_field.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DA15A58C440096EA4E /* chat_field.png */; }; + D34BD65615C13DB60070C209 /* chat_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */; }; + D34BD65715C13DB60070C209 /* chat_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */; }; + D34BD65815C13DB60070C209 /* chat_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* chat_over.png */; }; + D34BD65915C13DB60070C209 /* chat_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F21580FE3A00FA0D23 /* chat_selected.png */; }; + D34BD65A15C13DB60070C209 /* chat_send_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DD15A58C440096EA4E /* chat_send_default.png */; }; + D34BD65B15C13DB60070C209 /* chat_send_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D32B6E2315A5B2020033019F /* chat_send_disabled.png */; }; + D34BD65C15C13DB60070C209 /* chat_send_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DE15A58C450096EA4E /* chat_send_over.png */; }; + D34BD65D15C13DB60070C209 /* conference_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF61159B5B6E002C6B02 /* conference_default.png */; }; + D34BD65E15C13DB60070C209 /* conference_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */; }; + D34BD65F15C13DB60070C209 /* conference_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D31AAF62159B5B6E002C6B02 /* conference_over.png */; }; + D34BD66015C13DB60070C209 /* conference_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */; }; + D34BD66115C13DB60070C209 /* contact_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE715AABE4E00A2147A /* contact_back_default.png */; }; + D34BD66215C13DB60070C209 /* contact_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE815AABE4E00A2147A /* contact_back_over.png */; }; + D34BD66315C13DB60070C209 /* contact_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D378906915AC37C800BD776C /* contact_bar_background.png */; }; + D34BD66415C13DB60070C209 /* contact_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3615B011AF00420DAC /* contact_cancel_default.png */; }; + D34BD66515C13DB60070C209 /* contact_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3715B011AF00420DAC /* contact_cancel_over.png */; }; + D34BD66615C13DB60070C209 /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; }; + D34BD66715C13DB60070C209 /* contact_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FEA15AABE4E00A2147A /* contact_edit_over.png */; }; + D34BD66815C13DB60070C209 /* contact_number.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638D15AAD251009D0BAC /* contact_number.png */; }; + D34BD66915C13DB60070C209 /* contact_number_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638C15AAD251009D0BAC /* contact_number_over.png */; }; + D34BD66A15C13DB60070C209 /* contact_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526915AC228A0092A874 /* contact_ok_default.png */; }; + D34BD66B15C13DB60070C209 /* contact_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526A15AC228A0092A874 /* contact_ok_over.png */; }; + D34BD66C15C13DB60070C209 /* contacts_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* contacts_add_default.png */; }; + D34BD66D15C13DB60070C209 /* contacts_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* contacts_add_over.png */; }; + D34BD66E15C13DB60070C209 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_default.png */; }; + D34BD66F15C13DB60070C209 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_selected.png */; }; + D34BD67015C13DB60070C209 /* contacts_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3119E7015B6A4710005D4A4 /* contacts_back_default.png */; }; + D34BD67115C13DB60070C209 /* contacts_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3119E7115B6A4710005D4A4 /* contacts_back_over.png */; }; + D34BD67215C13DB60070C209 /* contacts_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EB1580FE3A00FA0D23 /* contacts_default.png */; }; + D34BD67315C13DB60070C209 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_default.png */; }; + D34BD67415C13DB70070C209 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_selected.png */; }; + D34BD67515C13DB70070C209 /* contacts_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FC158100E400FA0D23 /* contacts_over.png */; }; + D34BD67615C13DB70070C209 /* contacts_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EC1580FE3A00FA0D23 /* contacts_selected.png */; }; + D34BD67715C13DB70070C209 /* database.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = D32B6E2B15A5C0800033019F /* database.sqlite */; }; + D34BD67815C13DB70070C209 /* decline_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F761582253100336684 /* decline_default.png */; }; + D34BD67915C13DB70070C209 /* decline_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F771582253100336684 /* decline_over.png */; }; + D34BD67A15C13DB70070C209 /* dialer_address_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */; }; + D34BD67B15C13DB70070C209 /* dialer_alt_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1B15B00F4100420DAC /* dialer_alt_back_default.png */; }; + D34BD67C15C13DB70070C209 /* dialer_alt_back_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */; }; + D34BD67D15C13DB70070C209 /* dialer_alt_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1C15B00F4100420DAC /* dialer_alt_back_over.png */; }; + D34BD67E15C13DB70070C209 /* dialer_alt_back_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */; }; + D34BD67F15C13DB70070C209 /* dialer_alt_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1D15B00F4100420DAC /* dialer_alt_background.png */; }; + D34BD68015C13DB70070C209 /* dialer_alt_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CF158F2F370048BA40 /* dialer_alt_default.png */; }; + D34BD68115C13DB70070C209 /* dialer_alt_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */; }; + D34BD68215C13DB70070C209 /* dialer_alt_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43D0158F2F370048BA40 /* dialer_alt_over.png */; }; + D34BD68315C13DB70070C209 /* dialer_alt_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */; }; + D34BD68415C13DB70070C209 /* dialer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327ED1580FE3A00FA0D23 /* dialer_default.png */; }; + D34BD68515C13DB70070C209 /* dialer_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EE1580FE3A00FA0D23 /* dialer_over.png */; }; + D34BD68615C13DB70070C209 /* dialer_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2814A15A2D38D0098AA42 /* dialer_selected.png */; }; + D34BD68715C13DB70070C209 /* field_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21715A43D3400149E54 /* field_background.png */; }; + D34BD68815C13DB70070C209 /* hangup_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFA158205A100336684 /* hangup_default.png */; }; + D34BD68915C13DB70070C209 /* hangup_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */; }; + D34BD68A15C13DB70070C209 /* hangup_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFB158205A100336684 /* hangup_over.png */; }; + D34BD68B15C13DB70070C209 /* hangup_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */; }; + D34BD68C15C13DB70070C209 /* header_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* header_conference.png */; }; + D34BD68D15C13DB70070C209 /* header_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* header_incoming.png */; }; + D34BD68E15C13DB70070C209 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_default.png */; }; + D34BD68F15C13DB70070C209 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */; }; + D34BD69015C13DB70070C209 /* history_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history_default.png */; }; + D34BD69115C13DB70070C209 /* history_details_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8815B4466F00DD8C4C /* history_details_add_default.png */; }; + D34BD69215C13DB70070C209 /* history_details_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8915B4466F00DD8C4C /* history_details_add_over.png */; }; + D34BD69315C13DB70070C209 /* history_details_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */; }; + D34BD69415C13DB70070C209 /* history_details_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */; }; + D34BD69515C13DB70070C209 /* history_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */; }; + D34BD69615C13DB70070C209 /* history_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */; }; + D34BD69715C13DB70070C209 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */; }; + D34BD69815C13DB70070C209 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */; }; + D34BD69915C13DB70070C209 /* history_notification.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9DA15AEEB940045320F /* history_notification.png */; }; + D34BD69A15C13DB70070C209 /* history_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF515986DAD005F9CAB /* history_ok_default.png */; }; + D34BD69B15C13DB70070C209 /* history_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* history_ok_over.png */; }; + D34BD69C15C13DB70070C209 /* history_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history_over.png */; }; + D34BD69D15C13DB70070C209 /* history_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history_selected.png */; }; + D34BD69E15C13DB70070C209 /* led_connected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5C158A4446001C6B0B /* led_connected.png */; }; + D34BD69F15C13DB70070C209 /* led_disconnected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A70158A45AF001C6B0B /* led_disconnected.png */; }; + D34BD6A015C13DB70070C209 /* led_error.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5D158A4446001C6B0B /* led_error.png */; }; + D34BD6A115C13DB70070C209 /* led_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A6F158A45AF001C6B0B /* led_inprogress.png */; }; + D34BD6A215C13DB70070C209 /* linphone-banner.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2F911ABB76400628906 /* linphone-banner.png */; }; + D34BD6A415C13DB70070C209 /* linphone_icon_57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* linphone_icon_57.png */; }; + D34BD6A515C13DB70070C209 /* linphone_icon_72.png in Resources */ = {isa = PBXBuildFile; fileRef = 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */; }; + D34BD6A615C13DB70070C209 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc */; }; + D34BD6A715C13DB70070C209 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; + D34BD6A815C13DB70070C209 /* list_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* list_delete_default.png */; }; + D34BD6A915C13DB70070C209 /* list_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5417159858A80037DC6B /* list_delete_over.png */; }; + D34BD6AA15C13DB70070C209 /* list_details_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* list_details_default.png */; }; + D34BD6AB15C13DB70070C209 /* list_details_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* list_details_over.png */; }; + D34BD6AC15C13DB70070C209 /* micro_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF4158205A100336684 /* micro_off_default.png */; }; + D34BD6AD15C13DB70070C209 /* micro_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */; }; + D34BD6AE15C13DB70070C209 /* micro_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35EA76115A2DF8D003E025D /* micro_off_disabled.png */; }; + D34BD6AF15C13DB70070C209 /* micro_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */; }; + D34BD6B015C13DB70070C209 /* micro_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF5158205A100336684 /* micro_off_over.png */; }; + D34BD6B115C13DB70070C209 /* micro_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */; }; + D34BD6B215C13DB70070C209 /* micro_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF6158205A100336684 /* micro_on_default.png */; }; + D34BD6B315C13DB70070C209 /* micro_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */; }; + D34BD6B415C13DB70070C209 /* micro_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35EA76215A2DF8D003E025D /* micro_on_disabled.png */; }; + D34BD6B515C13DB70070C209 /* micro_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */; }; + D34BD6B615C13DB70070C209 /* micro_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF7158205A100336684 /* micro_on_over.png */; }; + D34BD6B715C13DB70070C209 /* micro_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */; }; + D34BD6B815C13DB70070C209 /* numpad_eight_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3C1582223B00336684 /* numpad_eight_default.png */; }; + D34BD6B915C13DB70070C209 /* numpad_eight_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3D1582223B00336684 /* numpad_eight_over.png */; }; + D34BD6BA15C13DB70070C209 /* numpad_five_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F361582223B00336684 /* numpad_five_default.png */; }; + D34BD6BB15C13DB70070C209 /* numpad_five_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F371582223B00336684 /* numpad_five_over.png */; }; + D34BD6BC15C13DB70070C209 /* numpad_four_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F341582223B00336684 /* numpad_four_default.png */; }; + D34BD6BD15C13DB70070C209 /* numpad_four_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F351582223B00336684 /* numpad_four_over.png */; }; + D34BD6BE15C13DB70070C209 /* numpad_nine_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3E1582223B00336684 /* numpad_nine_default.png */; }; + D34BD6BF15C13DB70070C209 /* numpad_nine_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3F1582223B00336684 /* numpad_nine_over.png */; }; + D34BD6C015C13DB70070C209 /* numpad_one_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2E1582223B00336684 /* numpad_one_default.png */; }; + D34BD6C115C13DB70070C209 /* numpad_one_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2F1582223B00336684 /* numpad_one_over.png */; }; + D34BD6C215C13DB70070C209 /* numpad_seven_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3A1582223B00336684 /* numpad_seven_default.png */; }; + D34BD6C315C13DB70070C209 /* numpad_seven_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3B1582223B00336684 /* numpad_seven_over.png */; }; + D34BD6C415C13DB70070C209 /* numpad_sharp_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F401582223B00336684 /* numpad_sharp_default.png */; }; + D34BD6C515C13DB70070C209 /* numpad_sharp_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F411582223B00336684 /* numpad_sharp_over.png */; }; + D34BD6C615C13DB70070C209 /* numpad_six_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F381582223B00336684 /* numpad_six_default.png */; }; + D34BD6C715C13DB70070C209 /* numpad_six_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F391582223B00336684 /* numpad_six_over.png */; }; + D34BD6C815C13DB70070C209 /* numpad_star_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F431582223B00336684 /* numpad_star_default.png */; }; + D34BD6C915C13DB70070C209 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; + D34BD6CA15C13DB70070C209 /* numpad_three_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F321582223B00336684 /* numpad_three_default.png */; }; + D34BD6CB15C13DB70070C209 /* numpad_three_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F331582223B00336684 /* numpad_three_over.png */; }; + D34BD6CC15C13DB70070C209 /* numpad_two_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F301582223B00336684 /* numpad_two_default.png */; }; + D34BD6CD15C13DB70070C209 /* numpad_two_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F311582223B00336684 /* numpad_two_over.png */; }; + D34BD6CE15C13DB70070C209 /* numpad_zero_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2C1582223B00336684 /* numpad_zero_default.png */; }; + D34BD6CF15C13DB70070C209 /* numpad_zero_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2D1582223B00336684 /* numpad_zero_over.png */; }; + D34BD6D015C13DB70070C209 /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; + D34BD6D115C13DB70070C209 /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; + D34BD6D215C13DB70070C209 /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; + D34BD6D315C13DB70070C209 /* options_add_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */; }; + D34BD6D415C13DB70070C209 /* options_add_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8253F15AE204D00D493FA /* options_add_disabled.png */; }; + D34BD6D515C13DB70070C209 /* options_add_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */; }; + D34BD6D615C13DB70070C209 /* options_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3115A321E2007FEEBA /* options_add_over.png */; }; + D34BD6D715C13DB70070C209 /* options_add_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */; }; + D34BD6D815C13DB70070C209 /* options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A8159B0EFE005F692C /* options_default.png */; }; + D34BD6D915C13DB70070C209 /* options_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1815BD8DED008ED271 /* options_default_landscape.png */; }; + D34BD6DA15C13DB70070C209 /* options_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A9159B0EFE005F692C /* options_disabled.png */; }; + D34BD6DB15C13DB70070C209 /* options_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */; }; + D34BD6DC15C13DB70070C209 /* options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3AA159B0EFE005F692C /* options_over.png */; }; + D34BD6DD15C13DB70070C209 /* options_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */; }; + D34BD6DE15C13DB70070C209 /* options_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254B15AE207B00D493FA /* options_selected.png */; }; + D34BD6DF15C13DB70070C209 /* options_selected_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */; }; + D34BD6E015C13DB70070C209 /* options_transfer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3215A321E3007FEEBA /* options_transfer_default.png */; }; + D34BD6E115C13DB70070C209 /* options_transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */; }; + D34BD6E215C13DB70070C209 /* options_transfer_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254015AE204D00D493FA /* options_transfer_disabled.png */; }; + D34BD6E315C13DB70070C209 /* options_transfer_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */; }; + D34BD6E415C13DB70070C209 /* options_transfer_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3315A321E3007FEEBA /* options_transfer_over.png */; }; + D34BD6E515C13DB70070C209 /* options_transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */; }; + D34BD6E615C13DB70070C209 /* pause_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF8158205A100336684 /* pause_off_default.png */; }; + D34BD6E715C13DB70070C209 /* pause_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */; }; + D34BD6E815C13DB70070C209 /* pause_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF9158205A100336684 /* pause_off_over.png */; }; + D34BD6E915C13DB70070C209 /* pause_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */; }; + D34BD6EA15C13DB70070C209 /* pause_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E7158F3F7E0048BA40 /* pause_on_default.png */; }; + D34BD6EB15C13DB70070C209 /* pause_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */; }; + D34BD6EC15C13DB70070C209 /* pause_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E8158F3F7E0048BA40 /* pause_on_over.png */; }; + D34BD6ED15C13DB70070C209 /* pause_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */; }; + D34BD6EE15C13DB70070C209 /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; }; + D34BD6EF15C13DB70070C209 /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; }; + D34BD6F015C13DB70070C209 /* security_ko.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A5159B0EFE005F692C /* security_ko.png */; }; + D34BD6F115C13DB70070C209 /* security_ok.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A7159B0EFE005F692C /* security_ok.png */; }; + D34BD6F215C13DB70070C209 /* security_pending.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A6159B0EFE005F692C /* security_pending.png */; }; + D34BD6F315C13DB70070C209 /* settings_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EF1580FE3A00FA0D23 /* settings_default.png */; }; + D34BD6F415C13DB70070C209 /* settings_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings_over.png */; }; + D34BD6F515C13DB70070C209 /* settings_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F01580FE3A00FA0D23 /* settings_selected.png */; }; + D34BD6F615C13DB70070C209 /* setup_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21315A43D3400149E54 /* setup_back_default.png */; }; + D34BD6F715C13DB70070C209 /* setup_back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */; }; + D34BD6F815C13DB70070C209 /* setup_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21415A43D3400149E54 /* setup_back_over.png */; }; + D34BD6F915C13DB70070C209 /* setup_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21515A43D3400149E54 /* setup_cancel_default.png */; }; + D34BD6FA15C13DB70070C209 /* setup_cancel_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */; }; + D34BD6FB15C13DB70070C209 /* setup_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21615A43D3400149E54 /* setup_cancel_over.png */; }; + D34BD6FC15C13DB70070C209 /* setup_start_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21815A43D3400149E54 /* setup_start_default.png */; }; + D34BD6FD15C13DB70070C209 /* setup_start_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */; }; + D34BD6FE15C13DB70070C209 /* setup_start_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21915A43D3400149E54 /* setup_start_over.png */; }; + D34BD6FF15C13DB70070C209 /* setup_title_assistant.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21A15A43D3400149E54 /* setup_title_assistant.png */; }; + D34BD70015C13DB70070C209 /* setup_welcome_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21B15A43D3400149E54 /* setup_welcome_logo.png */; }; + D34BD70115C13DB70070C209 /* speaker_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFC158205A100336684 /* speaker_off_default.png */; }; + D34BD70215C13DB70070C209 /* speaker_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */; }; + D34BD70315C13DB70070C209 /* speaker_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D365AA7915A2DE7500CAFE3F /* speaker_off_disabled.png */; }; + D34BD70415C13DB70070C209 /* speaker_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */; }; + D34BD70515C13DB70070C209 /* speaker_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFD158205A100336684 /* speaker_off_over.png */; }; + D34BD70615C13DB70070C209 /* speaker_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */; }; + D34BD70715C13DB70070C209 /* speaker_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFE158205A100336684 /* speaker_on_default.png */; }; + D34BD70815C13DB70070C209 /* speaker_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */; }; + D34BD70915C13DB70070C209 /* speaker_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */; }; + D34BD70A15C13DB70070C209 /* speaker_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */; }; + D34BD70B15C13DB70070C209 /* speaker_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFF158205A100336684 /* speaker_on_over.png */; }; + D34BD70C15C13DB70070C209 /* speaker_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */; }; + D34BD70D15C13DB70070C209 /* statebar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* statebar_background.png */; }; + D34BD70E15C13DB70070C209 /* statebar_background_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */; }; + D34BD70F15C13DB70070C209 /* switch_camera_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757515931E5D0066B1C1 /* switch_camera_default.png */; }; + D34BD71015C13DB70070C209 /* switch_camera_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757615931E5D0066B1C1 /* switch_camera_over.png */; }; + D34BD71115C13DB70070C209 /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; + D34BD71215C13DB70070C209 /* transfer_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254115AE204D00D493FA /* transfer_call_default.png */; }; + D34BD71315C13DB70070C209 /* transfer_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254E15AE256100D493FA /* transfer_call_disabled.png */; }; + D34BD71415C13DB70070C209 /* transfer_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254215AE204D00D493FA /* transfer_call_over.png */; }; + D34BD71515C13DB70070C209 /* transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */; }; + D34BD71615C13DB70070C209 /* transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */; }; + D34BD71715C13DB70070C209 /* video_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F00158205A100336684 /* video_off_default.png */; }; + D34BD71815C13DB70070C209 /* video_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */; }; + D34BD71915C13DB70070C209 /* video_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */; }; + D34BD71A15C13DB70070C209 /* video_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */; }; + D34BD71B15C13DB70070C209 /* video_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F01158205A100336684 /* video_off_over.png */; }; + D34BD71C15C13DB70070C209 /* video_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */; }; + D34BD71D15C13DB70070C209 /* video_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F02158205A100336684 /* video_on_default.png */; }; + D34BD71E15C13DB70070C209 /* video_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */; }; + D34BD71F15C13DB70070C209 /* video_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D377BBF915A19DA6002B696B /* video_on_disabled.png */; }; + D34BD72015C13DB70070C209 /* video_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */; }; + D34BD72115C13DB70070C209 /* video_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F03158205A100336684 /* video_on_over.png */; }; + D34BD72215C13DB70070C209 /* video_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */; }; + D34BD72315C13DD40070C209 /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F795D515A582800077328B /* ChatRoomViewController.xib */; }; + D34BD72415C13DD40070C209 /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35E7596159460570066B1C1 /* ChatViewController.xib */; }; + D34BD72515C13DD40070C209 /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; }; + D34BD72615C13DD40070C209 /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */; }; + D34BD72715C13DD40070C209 /* ContactDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */; }; + D34BD72815C13DD40070C209 /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsViewController.xib */; }; + D34BD72915C13DD40070C209 /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; }; + D34BD72A15C13DD40070C209 /* HistoryDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */; }; + D34BD72B15C13DD40070C209 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; }; + D34BD72C15C13DD40070C209 /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; + D34BD72D15C13DD40070C209 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; + D34BD72E15C13DD40070C209 /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; }; + D34BD72F15C13DD40070C209 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; + D34BD73015C13DD40070C209 /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; }; + D34BD73115C13DD40070C209 /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; }; + D34BD73215C13DD40070C209 /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D32942A31594C94200556A1C /* SettingsViewController.xib */; }; + D34BD73315C13DD40070C209 /* WizardViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D350F20D15A43BB100149E54 /* WizardViewController.xib */; }; + D34BD73415C13DF40070C209 /* UICallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D326483D1588950F00930C67 /* UICallBar.xib */; }; + D34BD73515C13DF40070C209 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; }; + D34BD73615C13DF40070C209 /* UIChatCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5413159853C90037DC6B /* UIChatCell.xib */; }; + D34BD73715C13DF40070C209 /* UIChatRoomCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7315A6C81A00F96BE5 /* UIChatRoomCell.xib */; }; + D34BD73815C13DF40070C209 /* UICompositeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */; }; + D34BD73915C13DF40070C209 /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */; }; + D34BD73A15C13DF40070C209 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; + D34BD73B15C13DF40070C209 /* UIContactDetailsFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3E8F68515ADE05A0065A226 /* UIContactDetailsFooter.xib */; }; + D34BD73C15C13DF40070C209 /* UIContactDetailsHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */; }; + D34BD73D15C13DF40070C209 /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; }; + D34BD73E15C13DF40070C209 /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* UIMainBar.xib */; }; + D34BD73F15C13DF40070C209 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; + D34BD74015C13E110070C209 /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; }; + D34BD74115C13E250070C209 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; }; + D34BD74215C13E350070C209 /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; + D34BD74315C13ED70070C209 /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22F2508D107141E100AC9B3F /* DialerViewController.xib */; }; D34F6F9E1594D3FB0095705B /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; }; - D34F6F9F1594D3FB0095705B /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; }; D350F20E15A43BB100149E54 /* WizardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D350F20C15A43BB100149E54 /* WizardViewController.m */; }; D350F20F15A43BB100149E54 /* WizardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D350F20C15A43BB100149E54 /* WizardViewController.m */; }; D350F21015A43BB100149E54 /* WizardViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D350F20D15A43BB100149E54 /* WizardViewController.xib */; }; - D350F21115A43BB100149E54 /* WizardViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D350F20D15A43BB100149E54 /* WizardViewController.xib */; }; D350F21C15A43D3400149E54 /* setup_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21315A43D3400149E54 /* setup_back_default.png */; }; - D350F21D15A43D3400149E54 /* setup_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21315A43D3400149E54 /* setup_back_default.png */; }; D350F21E15A43D3400149E54 /* setup_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21415A43D3400149E54 /* setup_back_over.png */; }; - D350F21F15A43D3400149E54 /* setup_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21415A43D3400149E54 /* setup_back_over.png */; }; D350F22015A43D3400149E54 /* setup_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21515A43D3400149E54 /* setup_cancel_default.png */; }; - D350F22115A43D3400149E54 /* setup_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21515A43D3400149E54 /* setup_cancel_default.png */; }; D350F22215A43D3400149E54 /* setup_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21615A43D3400149E54 /* setup_cancel_over.png */; }; - D350F22315A43D3400149E54 /* setup_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21615A43D3400149E54 /* setup_cancel_over.png */; }; D350F22415A43D3400149E54 /* field_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21715A43D3400149E54 /* field_background.png */; }; - D350F22515A43D3400149E54 /* field_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21715A43D3400149E54 /* field_background.png */; }; D350F22615A43D3400149E54 /* setup_start_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21815A43D3400149E54 /* setup_start_default.png */; }; - D350F22715A43D3400149E54 /* setup_start_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21815A43D3400149E54 /* setup_start_default.png */; }; D350F22815A43D3400149E54 /* setup_start_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21915A43D3400149E54 /* setup_start_over.png */; }; - D350F22915A43D3400149E54 /* setup_start_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21915A43D3400149E54 /* setup_start_over.png */; }; D350F22A15A43D3400149E54 /* setup_title_assistant.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21A15A43D3400149E54 /* setup_title_assistant.png */; }; - D350F22B15A43D3400149E54 /* setup_title_assistant.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21A15A43D3400149E54 /* setup_title_assistant.png */; }; D350F22C15A43D3400149E54 /* setup_welcome_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21B15A43D3400149E54 /* setup_welcome_logo.png */; }; - D350F22D15A43D3400149E54 /* setup_welcome_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21B15A43D3400149E54 /* setup_welcome_logo.png */; }; D35406F715A47E9E007E7E81 /* button_background_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D35406F515A47E9E007E7E81 /* button_background_default.png */; }; - D35406F815A47E9E007E7E81 /* button_background_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D35406F515A47E9E007E7E81 /* button_background_default.png */; }; D35406F915A47E9E007E7E81 /* button_background_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35406F615A47E9E007E7E81 /* button_background_over.png */; }; - D35406FA15A47E9E007E7E81 /* button_background_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35406F615A47E9E007E7E81 /* button_background_over.png */; }; D35497FE15875372000081D8 /* ContactsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsViewController.m */; }; D35497FF15875372000081D8 /* ContactsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsViewController.m */; }; D354980015875372000081D8 /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsViewController.xib */; }; - D354980115875372000081D8 /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsViewController.xib */; }; D354980615875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_selected.png */; }; - D354980715875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_selected.png */; }; D354980815875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_default.png */; }; - D354980915875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_default.png */; }; D354980A15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_selected.png */; }; - D354980B15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_selected.png */; }; D354980C15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_default.png */; }; - D354980D15875534000081D8 /* contacts_linphone_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980515875534000081D8 /* contacts_linphone_default.png */; }; D354981015875608000081D8 /* contacts_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* contacts_add_default.png */; }; - D354981115875608000081D8 /* contacts_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980E15875608000081D8 /* contacts_add_default.png */; }; D354981215875608000081D8 /* contacts_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* contacts_add_over.png */; }; - D354981315875608000081D8 /* contacts_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980F15875608000081D8 /* contacts_add_over.png */; }; D3549816158761D0000081D8 /* ContactsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactsTableViewController.m */; }; D3549817158761D0000081D8 /* ContactsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3549815158761D0000081D8 /* ContactsTableViewController.m */; }; D354981A15876FE7000081D8 /* list_details_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* list_details_default.png */; }; - D354981B15876FE7000081D8 /* list_details_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* list_details_default.png */; }; D354981C15876FE7000081D8 /* list_details_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* list_details_over.png */; }; - D354981D15876FE7000081D8 /* list_details_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981915876FE7000081D8 /* list_details_over.png */; }; D35498211587716B000081D8 /* UIStateBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* UIStateBar.m */; }; D35498221587716B000081D8 /* UIStateBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D354981F1587716B000081D8 /* UIStateBar.m */; }; D35498231587716B000081D8 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; - D35498241587716B000081D8 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; D35860D615B549B500513429 /* Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = D35860D515B549B500513429 /* Utils.m */; }; D35860D715B549B500513429 /* Utils.m in Sources */ = {isa = PBXBuildFile; fileRef = D35860D515B549B500513429 /* Utils.m */; }; D35E757815931E5D0066B1C1 /* switch_camera_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757515931E5D0066B1C1 /* switch_camera_default.png */; }; - D35E757915931E5D0066B1C1 /* switch_camera_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757515931E5D0066B1C1 /* switch_camera_default.png */; }; D35E757A15931E5D0066B1C1 /* switch_camera_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757615931E5D0066B1C1 /* switch_camera_over.png */; }; - D35E757B15931E5D0066B1C1 /* switch_camera_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757615931E5D0066B1C1 /* switch_camera_over.png */; }; D35E7581159328EB0066B1C1 /* UIAddressTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7580159328EB0066B1C1 /* UIAddressTextField.m */; }; D35E7582159328EB0066B1C1 /* UIAddressTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7580159328EB0066B1C1 /* UIAddressTextField.m */; }; D35E758915932DE60066B1C1 /* backspace_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758815932DE60066B1C1 /* backspace_disabled.png */; }; - D35E758A15932DE60066B1C1 /* backspace_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758815932DE60066B1C1 /* backspace_disabled.png */; }; D35E758D15934F360066B1C1 /* call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* call_disabled.png */; }; - D35E758E15934F360066B1C1 /* call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* call_disabled.png */; }; D35E7597159460580066B1C1 /* ChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7595159460560066B1C1 /* ChatViewController.m */; }; D35E7598159460580066B1C1 /* ChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7595159460560066B1C1 /* ChatViewController.m */; }; D35E7599159460580066B1C1 /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35E7596159460570066B1C1 /* ChatViewController.xib */; }; - D35E759A159460580066B1C1 /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35E7596159460570066B1C1 /* ChatViewController.xib */; }; D35E759F159460B70066B1C1 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E759D159460B50066B1C1 /* SettingsViewController.m */; }; D35E75A0159460B70066B1C1 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E759D159460B50066B1C1 /* SettingsViewController.m */; }; D35EA76315A2DF8D003E025D /* micro_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35EA76115A2DF8D003E025D /* micro_off_disabled.png */; }; - D35EA76415A2DF8D003E025D /* micro_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35EA76115A2DF8D003E025D /* micro_off_disabled.png */; }; D35EA76515A2DF8D003E025D /* micro_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35EA76215A2DF8D003E025D /* micro_on_disabled.png */; }; - D35EA76615A2DF8D003E025D /* micro_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35EA76215A2DF8D003E025D /* micro_on_disabled.png */; }; D365AA7B15A2DE7500CAFE3F /* speaker_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D365AA7915A2DE7500CAFE3F /* speaker_off_disabled.png */; }; - D365AA7C15A2DE7500CAFE3F /* speaker_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D365AA7915A2DE7500CAFE3F /* speaker_off_disabled.png */; }; D365AA7D15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */; }; - D365AA7E15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */; }; D36C43C6158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; }; D36C43C7158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; }; D36C43CA158F2EE50048BA40 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; }; - D36C43CB158F2EE50048BA40 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; }; D36C43D1158F2F370048BA40 /* cell_call.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* cell_call.png */; }; - D36C43D2158F2F370048BA40 /* cell_call.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* cell_call.png */; }; D36C43D3158F2F370048BA40 /* cell_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* cell_conference.png */; }; - D36C43D4158F2F370048BA40 /* cell_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* cell_conference.png */; }; D36C43D5158F2F370048BA40 /* header_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* header_conference.png */; }; - D36C43D6158F2F370048BA40 /* header_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* header_conference.png */; }; D36C43D7158F2F370048BA40 /* dialer_alt_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CF158F2F370048BA40 /* dialer_alt_default.png */; }; - D36C43D8158F2F370048BA40 /* dialer_alt_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CF158F2F370048BA40 /* dialer_alt_default.png */; }; D36C43D9158F2F370048BA40 /* dialer_alt_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43D0158F2F370048BA40 /* dialer_alt_over.png */; }; - D36C43DA158F2F370048BA40 /* dialer_alt_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43D0158F2F370048BA40 /* dialer_alt_over.png */; }; D36C43E9158F3F7E0048BA40 /* pause_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E7158F3F7E0048BA40 /* pause_on_default.png */; }; - D36C43EA158F3F7E0048BA40 /* pause_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E7158F3F7E0048BA40 /* pause_on_default.png */; }; D36C43EB158F3F7E0048BA40 /* pause_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E8158F3F7E0048BA40 /* pause_on_over.png */; }; - D36C43EC158F3F7E0048BA40 /* pause_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43E8158F3F7E0048BA40 /* pause_on_over.png */; }; D36C43F1158F61EA0048BA40 /* call_state_pause_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43ED158F61EA0048BA40 /* call_state_pause_default.png */; }; - D36C43F2158F61EA0048BA40 /* call_state_pause_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43ED158F61EA0048BA40 /* call_state_pause_default.png */; }; D36C43F3158F61EA0048BA40 /* call_state_pause_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EE158F61EA0048BA40 /* call_state_pause_over.png */; }; - D36C43F4158F61EA0048BA40 /* call_state_pause_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EE158F61EA0048BA40 /* call_state_pause_over.png */; }; D36C43F5158F61EA0048BA40 /* call_state_play_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EF158F61EA0048BA40 /* call_state_play_default.png */; }; - D36C43F6158F61EA0048BA40 /* call_state_play_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43EF158F61EA0048BA40 /* call_state_play_default.png */; }; D36C43F7158F61EA0048BA40 /* call_state_play_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43F0158F61EA0048BA40 /* call_state_play_over.png */; }; - D36C43F8158F61EA0048BA40 /* call_state_play_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43F0158F61EA0048BA40 /* call_state_play_over.png */; }; D36FB2D51589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; }; D36FB2D61589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; }; D37295DB158B3C9600D2C0C7 /* video_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */; }; - D37295DC158B3C9600D2C0C7 /* video_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */; }; D377BBFA15A19DA6002B696B /* video_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D377BBF915A19DA6002B696B /* video_on_disabled.png */; }; D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */; }; - D378906815AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */; }; D378906A15AC37C800BD776C /* contact_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D378906915AC37C800BD776C /* contact_bar_background.png */; }; - D378906B15AC37C800BD776C /* contact_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D378906915AC37C800BD776C /* contact_bar_background.png */; }; D378907515AC448A00BD776C /* UIView+ModalStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D378907415AC448A00BD776C /* UIView+ModalStack.m */; }; D378907615AC448A00BD776C /* UIView+ModalStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D378907415AC448A00BD776C /* UIView+ModalStack.m */; }; D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; - D37B96B815A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; D37B96B915A1A6F20005CCD2 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; }; - D37B96BA15A1A6F20005CCD2 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; }; D37C638E15AAD251009D0BAC /* contact_number_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638C15AAD251009D0BAC /* contact_number_over.png */; }; - D37C638F15AAD251009D0BAC /* contact_number_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638C15AAD251009D0BAC /* contact_number_over.png */; }; D37C639015AAD251009D0BAC /* contact_number.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638D15AAD251009D0BAC /* contact_number.png */; }; - D37C639115AAD251009D0BAC /* contact_number.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638D15AAD251009D0BAC /* contact_number.png */; }; D37C639515AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639315AADDAE009D0BAC /* UIContactDetailsHeader.m */; }; D37C639615AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639315AADDAE009D0BAC /* UIContactDetailsHeader.m */; }; D37C639715AADDAF009D0BAC /* UIContactDetailsHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */; }; - D37C639815AADDAF009D0BAC /* UIContactDetailsHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */; }; D37C639B15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */; }; D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */; }; D37DC6C11594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; @@ -472,359 +652,198 @@ D389362915A6D19800A3A3AA /* CPAnimationStep.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362515A6D19800A3A3AA /* CPAnimationStep.m */; }; D389363515A6D40000A3A3AA /* libNinePatch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D389363215A6D3C500A3A3AA /* libNinePatch.a */; }; D389363915A6D53200A3A3AA /* chat_bubble_incoming.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */; }; - D389363A15A6D53200A3A3AA /* chat_bubble_incoming.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */; }; D389363B15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */; }; - D389363C15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */; }; D38D14AF15A30B3D008497E8 /* cell_call_first_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */; }; - D38D14B015A30B3D008497E8 /* cell_call_first_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */; }; D38D14B115A30B3D008497E8 /* cell_call_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AE15A30B3D008497E8 /* cell_call_highlight.png */; }; - D38D14B215A30B3D008497E8 /* cell_call_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AE15A30B3D008497E8 /* cell_call_highlight.png */; }; D3A55FBC15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; - D3A55FC015877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; D3A8BB7015A6C7D500F96BE5 /* UIChatRoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */; }; D3A8BB7115A6C7D500F96BE5 /* UIChatRoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */; }; D3A8BB7415A6C81A00F96BE5 /* UIChatRoomCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7315A6C81A00F96BE5 /* UIChatRoomCell.xib */; }; - D3A8BB7515A6C81A00F96BE5 /* UIChatRoomCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7315A6C81A00F96BE5 /* UIChatRoomCell.xib */; }; D3A8BB7B15A6CC3200F96BE5 /* chat_bubble_outgoing.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7615A6CC3200F96BE5 /* chat_bubble_outgoing.png */; }; - D3A8BB7C15A6CC3200F96BE5 /* chat_bubble_outgoing.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7615A6CC3200F96BE5 /* chat_bubble_outgoing.png */; }; D3A8BB7D15A6CC3200F96BE5 /* chat_bubble_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7715A6CC3200F96BE5 /* chat_bubble_incoming.png */; }; - D3A8BB7E15A6CC3200F96BE5 /* chat_bubble_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7715A6CC3200F96BE5 /* chat_bubble_incoming.png */; }; D3A8BB7F15A6CC3200F96BE5 /* setup_back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */; }; - D3A8BB8015A6CC3200F96BE5 /* setup_back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */; }; D3A8BB8115A6CC3200F96BE5 /* setup_cancel_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */; }; - D3A8BB8215A6CC3200F96BE5 /* setup_cancel_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */; }; D3A8BB8315A6CC3200F96BE5 /* setup_start_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */; }; - D3A8BB8415A6CC3200F96BE5 /* setup_start_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */; }; D3B9A3DF15A58C450096EA4E /* chat_field.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DA15A58C440096EA4E /* chat_field.png */; }; - D3B9A3E015A58C450096EA4E /* chat_field.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DA15A58C440096EA4E /* chat_field.png */; }; D3B9A3E115A58C450096EA4E /* chat_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */; }; - D3B9A3E215A58C450096EA4E /* chat_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */; }; D3B9A3E315A58C450096EA4E /* chat_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */; }; - D3B9A3E415A58C450096EA4E /* chat_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */; }; D3B9A3E515A58C450096EA4E /* chat_send_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DD15A58C440096EA4E /* chat_send_default.png */; }; - D3B9A3E615A58C450096EA4E /* chat_send_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DD15A58C440096EA4E /* chat_send_default.png */; }; D3B9A3E715A58C450096EA4E /* chat_send_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DE15A58C450096EA4E /* chat_send_over.png */; }; - D3B9A3E815A58C450096EA4E /* chat_send_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DE15A58C450096EA4E /* chat_send_over.png */; }; D3C2814B15A2D38D0098AA42 /* dialer_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2814A15A2D38D0098AA42 /* dialer_selected.png */; }; - D3C2814C15A2D38D0098AA42 /* dialer_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2814A15A2D38D0098AA42 /* dialer_selected.png */; }; D3C2815215A2D64A0098AA42 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; - D3C2815315A2D64A0098AA42 /* numpad_star_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C2815115A2D64A0098AA42 /* numpad_star_over.png */; }; D3C31A3215BD8DED008ED271 /* conference_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */; }; - D3C31A3315BD8DED008ED271 /* conference_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0715BD8DED008ED271 /* conference_default_landscape.png */; }; D3C31A3415BD8DED008ED271 /* conference_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */; }; - D3C31A3515BD8DED008ED271 /* conference_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */; }; D3C31A3615BD8DED008ED271 /* dialer_alt_back_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */; }; - D3C31A3715BD8DED008ED271 /* dialer_alt_back_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0915BD8DED008ED271 /* dialer_alt_back_default_landscape.png */; }; D3C31A3815BD8DED008ED271 /* dialer_alt_back_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */; }; - D3C31A3915BD8DED008ED271 /* dialer_alt_back_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0A15BD8DED008ED271 /* dialer_alt_back_over_landscape.png */; }; D3C31A3A15BD8DED008ED271 /* dialer_alt_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */; }; - D3C31A3B15BD8DED008ED271 /* dialer_alt_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0B15BD8DED008ED271 /* dialer_alt_default_landscape.png */; }; D3C31A3C15BD8DED008ED271 /* dialer_alt_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */; }; - D3C31A3D15BD8DED008ED271 /* dialer_alt_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0C15BD8DED008ED271 /* dialer_alt_over_landscape.png */; }; D3C31A3E15BD8DED008ED271 /* hangup_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */; }; - D3C31A3F15BD8DED008ED271 /* hangup_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0D15BD8DED008ED271 /* hangup_default_landscape.png */; }; D3C31A4015BD8DED008ED271 /* hangup_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */; }; - D3C31A4115BD8DED008ED271 /* hangup_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0E15BD8DED008ED271 /* hangup_over_landscape.png */; }; D3C31A4215BD8DED008ED271 /* micro_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */; }; - D3C31A4315BD8DED008ED271 /* micro_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */; }; D3C31A4415BD8DED008ED271 /* micro_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */; }; - D3C31A4515BD8DED008ED271 /* micro_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1015BD8DED008ED271 /* micro_off_disabled_landscape.png */; }; D3C31A4615BD8DED008ED271 /* micro_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */; }; - D3C31A4715BD8DED008ED271 /* micro_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1115BD8DED008ED271 /* micro_off_over_landscape.png */; }; D3C31A4815BD8DED008ED271 /* micro_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */; }; - D3C31A4915BD8DED008ED271 /* micro_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1215BD8DED008ED271 /* micro_on_default_landscape.png */; }; D3C31A4A15BD8DED008ED271 /* micro_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */; }; - D3C31A4B15BD8DED008ED271 /* micro_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1315BD8DED008ED271 /* micro_on_disabled_landscape.png */; }; D3C31A4C15BD8DED008ED271 /* micro_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */; }; - D3C31A4D15BD8DED008ED271 /* micro_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */; }; D3C31A4E15BD8DED008ED271 /* options_add_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */; }; - D3C31A4F15BD8DED008ED271 /* options_add_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */; }; D3C31A5015BD8DED008ED271 /* options_add_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */; }; - D3C31A5115BD8DED008ED271 /* options_add_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1615BD8DED008ED271 /* options_add_disabled_landscape.png */; }; D3C31A5215BD8DED008ED271 /* options_add_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */; }; - D3C31A5315BD8DED008ED271 /* options_add_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1715BD8DED008ED271 /* options_add_over_landscape.png */; }; D3C31A5415BD8DED008ED271 /* options_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1815BD8DED008ED271 /* options_default_landscape.png */; }; - D3C31A5515BD8DED008ED271 /* options_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1815BD8DED008ED271 /* options_default_landscape.png */; }; D3C31A5615BD8DED008ED271 /* options_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */; }; - D3C31A5715BD8DED008ED271 /* options_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1915BD8DED008ED271 /* options_disabled_landscape.png */; }; D3C31A5815BD8DED008ED271 /* options_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */; }; - D3C31A5915BD8DED008ED271 /* options_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1A15BD8DED008ED271 /* options_over_landscape.png */; }; D3C31A5A15BD8DED008ED271 /* options_selected_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */; }; - D3C31A5B15BD8DED008ED271 /* options_selected_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1B15BD8DED008ED271 /* options_selected_landscape.png */; }; D3C31A5C15BD8DED008ED271 /* options_transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */; }; - D3C31A5D15BD8DED008ED271 /* options_transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1C15BD8DED008ED271 /* options_transfer_default_landscape.png */; }; D3C31A5E15BD8DED008ED271 /* options_transfer_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */; }; - D3C31A5F15BD8DED008ED271 /* options_transfer_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1D15BD8DED008ED271 /* options_transfer_disabled_landscape.png */; }; D3C31A6015BD8DED008ED271 /* options_transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */; }; - D3C31A6115BD8DED008ED271 /* options_transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1E15BD8DED008ED271 /* options_transfer_over_landscape.png */; }; D3C31A6215BD8DED008ED271 /* pause_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */; }; - D3C31A6315BD8DED008ED271 /* pause_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1F15BD8DED008ED271 /* pause_off_default_landscape.png */; }; D3C31A6415BD8DED008ED271 /* pause_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */; }; - D3C31A6515BD8DED008ED271 /* pause_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2015BD8DED008ED271 /* pause_off_over_landscape.png */; }; D3C31A6615BD8DED008ED271 /* pause_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */; }; - D3C31A6715BD8DED008ED271 /* pause_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2115BD8DED008ED271 /* pause_on_default_landscape.png */; }; D3C31A6815BD8DED008ED271 /* pause_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */; }; - D3C31A6915BD8DED008ED271 /* pause_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */; }; D3C31A6A15BD8DED008ED271 /* speaker_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */; }; - D3C31A6B15BD8DED008ED271 /* speaker_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2315BD8DED008ED271 /* speaker_off_default_landscape.png */; }; D3C31A6C15BD8DED008ED271 /* speaker_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */; }; - D3C31A6D15BD8DED008ED271 /* speaker_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2415BD8DED008ED271 /* speaker_off_disabled_landscape.png */; }; D3C31A6E15BD8DED008ED271 /* speaker_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */; }; - D3C31A6F15BD8DED008ED271 /* speaker_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2515BD8DED008ED271 /* speaker_off_over_landscape.png */; }; D3C31A7015BD8DED008ED271 /* speaker_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */; }; - D3C31A7115BD8DED008ED271 /* speaker_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2615BD8DED008ED271 /* speaker_on_default_landscape.png */; }; D3C31A7215BD8DED008ED271 /* speaker_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */; }; - D3C31A7315BD8DED008ED271 /* speaker_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2715BD8DED008ED271 /* speaker_on_disabled_landscape.png */; }; D3C31A7415BD8DED008ED271 /* speaker_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */; }; - D3C31A7515BD8DED008ED271 /* speaker_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2815BD8DED008ED271 /* speaker_on_over_landscape.png */; }; D3C31A7615BD8DED008ED271 /* statebar_background_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */; }; - D3C31A7715BD8DED008ED271 /* statebar_background_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */; }; D3C31A7815BD8DED008ED271 /* transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */; }; - D3C31A7915BD8DED008ED271 /* transfer_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2A15BD8DED008ED271 /* transfer_default_landscape.png */; }; D3C31A7A15BD8DED008ED271 /* transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */; }; - D3C31A7B15BD8DED008ED271 /* transfer_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2B15BD8DED008ED271 /* transfer_over_landscape.png */; }; D3C31A7C15BD8DED008ED271 /* video_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */; }; - D3C31A7D15BD8DED008ED271 /* video_off_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2C15BD8DED008ED271 /* video_off_default_landscape.png */; }; D3C31A7E15BD8DED008ED271 /* video_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */; }; - D3C31A7F15BD8DED008ED271 /* video_off_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2D15BD8DED008ED271 /* video_off_disabled_landscape.png */; }; D3C31A8015BD8DED008ED271 /* video_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */; }; - D3C31A8115BD8DED008ED271 /* video_off_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2E15BD8DED008ED271 /* video_off_over_landscape.png */; }; D3C31A8215BD8DED008ED271 /* video_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */; }; - D3C31A8315BD8DED008ED271 /* video_on_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2F15BD8DED008ED271 /* video_on_default_landscape.png */; }; D3C31A8415BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */; }; - D3C31A8515BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */; }; D3C31A8615BD8DED008ED271 /* video_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */; }; - D3C31A8715BD8DED008ED271 /* video_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */; }; D3C6526715AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */; }; D3C6526815AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */; }; D3C6526B15AC228A0092A874 /* contact_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526915AC228A0092A874 /* contact_ok_default.png */; }; - D3C6526C15AC228A0092A874 /* contact_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526915AC228A0092A874 /* contact_ok_default.png */; }; D3C6526D15AC228A0092A874 /* contact_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526A15AC228A0092A874 /* contact_ok_over.png */; }; - D3C6526E15AC228A0092A874 /* contact_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526A15AC228A0092A874 /* contact_ok_over.png */; }; D3C714B3159DB84400705B8E /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; - D3C714B4159DB84400705B8E /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; D3D14E7C15A711700074A527 /* avatar_shadow_small.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D14E7B15A711700074A527 /* avatar_shadow_small.png */; }; - D3D14E7D15A711700074A527 /* avatar_shadow_small.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D14E7B15A711700074A527 /* avatar_shadow_small.png */; }; D3D6A39E159B0EEF005F692C /* add_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_default.png */; }; - D3D6A39F159B0EEF005F692C /* add_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_default.png */; }; D3D6A3A0159B0EEF005F692C /* add_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_disabled.png */; }; - D3D6A3A1159B0EEF005F692C /* add_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_disabled.png */; }; D3D6A3A2159B0EEF005F692C /* add_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39D159B0EEF005F692C /* add_call_over.png */; }; - D3D6A3A3159B0EEF005F692C /* add_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39D159B0EEF005F692C /* add_call_over.png */; }; D3D6A3AB159B0EFE005F692C /* security_ko.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A5159B0EFE005F692C /* security_ko.png */; }; - D3D6A3AC159B0EFE005F692C /* security_ko.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A5159B0EFE005F692C /* security_ko.png */; }; D3D6A3AD159B0EFE005F692C /* security_pending.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A6159B0EFE005F692C /* security_pending.png */; }; - D3D6A3AE159B0EFE005F692C /* security_pending.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A6159B0EFE005F692C /* security_pending.png */; }; D3D6A3AF159B0EFE005F692C /* security_ok.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A7159B0EFE005F692C /* security_ok.png */; }; - D3D6A3B0159B0EFE005F692C /* security_ok.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A7159B0EFE005F692C /* security_ok.png */; }; D3D6A3B1159B0EFE005F692C /* options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A8159B0EFE005F692C /* options_default.png */; }; - D3D6A3B2159B0EFE005F692C /* options_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A8159B0EFE005F692C /* options_default.png */; }; D3D6A3B3159B0EFE005F692C /* options_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A9159B0EFE005F692C /* options_disabled.png */; }; - D3D6A3B4159B0EFE005F692C /* options_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3A9159B0EFE005F692C /* options_disabled.png */; }; D3D6A3B5159B0EFE005F692C /* options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3AA159B0EFE005F692C /* options_over.png */; }; - D3D6A3B6159B0EFE005F692C /* options_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A3AA159B0EFE005F692C /* options_over.png */; }; D3E84F1E15B00F4100420DAC /* cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1715B00F4100420DAC /* cancel_default.png */; }; - D3E84F1F15B00F4100420DAC /* cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1715B00F4100420DAC /* cancel_default.png */; }; D3E84F2015B00F4100420DAC /* cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1815B00F4100420DAC /* cancel_over.png */; }; - D3E84F2115B00F4100420DAC /* cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1815B00F4100420DAC /* cancel_over.png */; }; D3E84F2615B00F4100420DAC /* dialer_alt_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1B15B00F4100420DAC /* dialer_alt_back_default.png */; }; - D3E84F2715B00F4100420DAC /* dialer_alt_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1B15B00F4100420DAC /* dialer_alt_back_default.png */; }; D3E84F2815B00F4100420DAC /* dialer_alt_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1C15B00F4100420DAC /* dialer_alt_back_over.png */; }; - D3E84F2915B00F4100420DAC /* dialer_alt_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1C15B00F4100420DAC /* dialer_alt_back_over.png */; }; D3E84F2A15B00F4100420DAC /* dialer_alt_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1D15B00F4100420DAC /* dialer_alt_background.png */; }; - D3E84F2B15B00F4100420DAC /* dialer_alt_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F1D15B00F4100420DAC /* dialer_alt_background.png */; }; D3E84F3815B011AF00420DAC /* contact_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3615B011AF00420DAC /* contact_cancel_default.png */; }; - D3E84F3915B011AF00420DAC /* contact_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3615B011AF00420DAC /* contact_cancel_default.png */; }; D3E84F3A15B011AF00420DAC /* contact_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3715B011AF00420DAC /* contact_cancel_over.png */; }; - D3E84F3B15B011AF00420DAC /* contact_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3715B011AF00420DAC /* contact_cancel_over.png */; }; D3E8F68615ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = D3E8F68415ADE0580065A226 /* UIContactDetailsFooter.m */; }; D3E8F68715ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = D3E8F68415ADE0580065A226 /* UIContactDetailsFooter.m */; }; D3E8F68815ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3E8F68515ADE05A0065A226 /* UIContactDetailsFooter.xib */; }; - D3E8F68915ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3E8F68515ADE05A0065A226 /* UIContactDetailsFooter.xib */; }; D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; }; D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; }; D3EA5403159852080037DC6B /* chat_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* chat_edit_default.png */; }; - D3EA5404159852080037DC6B /* chat_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* chat_edit_default.png */; }; D3EA5405159852080037DC6B /* chat_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5400159852080037DC6B /* chat_edit_over.png */; }; - D3EA5406159852080037DC6B /* chat_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5400159852080037DC6B /* chat_edit_over.png */; }; D3EA5407159852080037DC6B /* chat_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5401159852080037DC6B /* chat_add_default.png */; }; - D3EA5408159852080037DC6B /* chat_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5401159852080037DC6B /* chat_add_default.png */; }; D3EA5409159852080037DC6B /* chat_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5402159852080037DC6B /* chat_add_over.png */; }; - D3EA540A159852080037DC6B /* chat_add_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5402159852080037DC6B /* chat_add_over.png */; }; D3EA540D1598528B0037DC6B /* ChatTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA540C1598528B0037DC6B /* ChatTableViewController.m */; }; D3EA540E1598528B0037DC6B /* ChatTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA540C1598528B0037DC6B /* ChatTableViewController.m */; }; D3EA5411159853750037DC6B /* UIChatCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA5410159853750037DC6B /* UIChatCell.m */; }; D3EA5412159853750037DC6B /* UIChatCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA5410159853750037DC6B /* UIChatCell.m */; }; D3EA5414159853C90037DC6B /* UIChatCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5413159853C90037DC6B /* UIChatCell.xib */; }; - D3EA5415159853C90037DC6B /* UIChatCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5413159853C90037DC6B /* UIChatCell.xib */; }; D3EA5418159858A80037DC6B /* list_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* list_delete_default.png */; }; - D3EA5419159858A80037DC6B /* list_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* list_delete_default.png */; }; D3EA541A159858A80037DC6B /* list_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5417159858A80037DC6B /* list_delete_over.png */; }; - D3EA541B159858A80037DC6B /* list_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5417159858A80037DC6B /* list_delete_over.png */; }; D3ED3E411585FB4A006C0DE4 /* background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* background.png */; }; - D3ED3E421585FB4A006C0DE4 /* background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E401585FB4A006C0DE4 /* background.png */; }; D3ED3E451585FB8C006C0DE4 /* dialer_address_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */; }; - D3ED3E461585FB8C006C0DE4 /* dialer_address_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E441585FB8C006C0DE4 /* dialer_address_background.png */; }; D3ED3E521585FFFD006C0DE4 /* statebar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* statebar_background.png */; }; - D3ED3E531585FFFD006C0DE4 /* statebar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E511585FFFD006C0DE4 /* statebar_background.png */; }; D3ED3E6A15861A53006C0DE4 /* add_contact_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add_contact_default.png */; }; - D3ED3E6B15861A53006C0DE4 /* add_contact_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6715861A53006C0DE4 /* add_contact_default.png */; }; D3ED3E6C15861A53006C0DE4 /* add_contact_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6815861A53006C0DE4 /* add_contact_disabled.png */; }; - D3ED3E6D15861A53006C0DE4 /* add_contact_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6815861A53006C0DE4 /* add_contact_disabled.png */; }; D3ED3E6E15861A53006C0DE4 /* add_contact_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6915861A53006C0DE4 /* add_contact_over.png */; }; - D3ED3E6F15861A53006C0DE4 /* add_contact_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E6915861A53006C0DE4 /* add_contact_over.png */; }; D3ED3E7215861ABD006C0DE4 /* call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7015861ABD006C0DE4 /* call_default.png */; }; - D3ED3E7315861ABD006C0DE4 /* call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7015861ABD006C0DE4 /* call_default.png */; }; D3ED3E7415861ABD006C0DE4 /* call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7115861ABD006C0DE4 /* call_over.png */; }; - D3ED3E7515861ABD006C0DE4 /* call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7115861ABD006C0DE4 /* call_over.png */; }; D3ED3E7815861B1B006C0DE4 /* backspace_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7615861B1B006C0DE4 /* backspace_default.png */; }; - D3ED3E7915861B1B006C0DE4 /* backspace_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7615861B1B006C0DE4 /* backspace_default.png */; }; D3ED3E7A15861B1B006C0DE4 /* backspace_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7715861B1B006C0DE4 /* backspace_over.png */; }; - D3ED3E7B15861B1B006C0DE4 /* backspace_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7715861B1B006C0DE4 /* backspace_over.png */; }; D3ED3E871586291E006C0DE4 /* UIMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* UIMainBar.m */; }; D3ED3E881586291E006C0DE4 /* UIMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* UIMainBar.m */; }; D3ED3E891586291E006C0DE4 /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* UIMainBar.xib */; }; - D3ED3E8A1586291E006C0DE4 /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* UIMainBar.xib */; }; D3ED3E9815872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */; }; - D3ED3E9915872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */; }; D3ED3E9A15872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_default.png */; }; - D3ED3E9B15872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_default.png */; }; D3ED3E9C15872EF1006C0DE4 /* history_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */; }; - D3ED3E9D15872EF1006C0DE4 /* history_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */; }; D3ED3E9E15872EF1006C0DE4 /* history_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */; }; - D3ED3E9F15872EF1006C0DE4 /* history_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */; }; D3ED3EA015872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */; }; - D3ED3EA115872EF1006C0DE4 /* history_missed_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9615872EF1006C0DE4 /* history_missed_selected.png */; }; D3ED3EA215872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */; }; - D3ED3EA315872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */; }; D3ED3EA71587334E006C0DE4 /* HistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */; }; D3ED3EA81587334E006C0DE4 /* HistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */; }; D3ED3EB3158738FB006C0DE4 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; }; - D3ED3EB4158738FB006C0DE4 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; }; D3ED3EB81587392C006C0DE4 /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryViewController.m */; }; D3ED3EB91587392C006C0DE4 /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryViewController.m */; }; D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */; }; D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */; }; D3F26BF315986B73005F9CAB /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; }; - D3F26BF415986B73005F9CAB /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; }; D3F26BF715986DAD005F9CAB /* history_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF515986DAD005F9CAB /* history_ok_default.png */; }; - D3F26BF815986DAD005F9CAB /* history_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF515986DAD005F9CAB /* history_ok_default.png */; }; D3F26BF915986DAD005F9CAB /* history_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* history_ok_over.png */; }; - D3F26BFA15986DAD005F9CAB /* history_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* history_ok_over.png */; }; D3F26BFC15987083005F9CAB /* header_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* header_incoming.png */; }; - D3F26BFD15987083005F9CAB /* header_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* header_incoming.png */; }; D3F34F301599B008005BE94F /* avatar_shadow.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* avatar_shadow.png */; }; - D3F34F311599B008005BE94F /* avatar_shadow.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* avatar_shadow.png */; }; D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; D3F795D615A582810077328B /* ChatRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F795D415A582800077328B /* ChatRoomViewController.m */; }; D3F795D715A582810077328B /* ChatRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F795D415A582800077328B /* ChatRoomViewController.m */; }; D3F795D815A582810077328B /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F795D515A582800077328B /* ChatRoomViewController.xib */; }; - D3F795D915A582810077328B /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F795D515A582800077328B /* ChatRoomViewController.xib */; }; D3F795DD15A5831C0077328B /* chat_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DB15A5831C0077328B /* chat_back_default.png */; }; - D3F795DE15A5831C0077328B /* chat_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DB15A5831C0077328B /* chat_back_default.png */; }; D3F795DF15A5831C0077328B /* chat_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DC15A5831C0077328B /* chat_back_over.png */; }; - D3F795E015A5831C0077328B /* chat_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DC15A5831C0077328B /* chat_back_over.png */; }; D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */; }; D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */; }; D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; }; D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; - D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; D3F83F0C158205A100336684 /* micro_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF4158205A100336684 /* micro_off_default.png */; }; - D3F83F0D158205A100336684 /* micro_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF4158205A100336684 /* micro_off_default.png */; }; D3F83F0E158205A100336684 /* micro_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF5158205A100336684 /* micro_off_over.png */; }; - D3F83F0F158205A100336684 /* micro_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF5158205A100336684 /* micro_off_over.png */; }; D3F83F10158205A100336684 /* micro_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF6158205A100336684 /* micro_on_default.png */; }; - D3F83F11158205A100336684 /* micro_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF6158205A100336684 /* micro_on_default.png */; }; D3F83F12158205A100336684 /* micro_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF7158205A100336684 /* micro_on_over.png */; }; - D3F83F13158205A100336684 /* micro_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF7158205A100336684 /* micro_on_over.png */; }; D3F83F14158205A100336684 /* pause_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF8158205A100336684 /* pause_off_default.png */; }; - D3F83F15158205A100336684 /* pause_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF8158205A100336684 /* pause_off_default.png */; }; D3F83F16158205A100336684 /* pause_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF9158205A100336684 /* pause_off_over.png */; }; - D3F83F17158205A100336684 /* pause_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF9158205A100336684 /* pause_off_over.png */; }; D3F83F18158205A100336684 /* hangup_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFA158205A100336684 /* hangup_default.png */; }; - D3F83F19158205A100336684 /* hangup_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFA158205A100336684 /* hangup_default.png */; }; D3F83F1A158205A100336684 /* hangup_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFB158205A100336684 /* hangup_over.png */; }; - D3F83F1B158205A100336684 /* hangup_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFB158205A100336684 /* hangup_over.png */; }; D3F83F1C158205A100336684 /* speaker_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFC158205A100336684 /* speaker_off_default.png */; }; - D3F83F1D158205A100336684 /* speaker_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFC158205A100336684 /* speaker_off_default.png */; }; D3F83F1E158205A100336684 /* speaker_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFD158205A100336684 /* speaker_off_over.png */; }; - D3F83F1F158205A100336684 /* speaker_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFD158205A100336684 /* speaker_off_over.png */; }; D3F83F20158205A100336684 /* speaker_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFE158205A100336684 /* speaker_on_default.png */; }; - D3F83F21158205A100336684 /* speaker_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFE158205A100336684 /* speaker_on_default.png */; }; D3F83F22158205A100336684 /* speaker_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFF158205A100336684 /* speaker_on_over.png */; }; - D3F83F23158205A100336684 /* speaker_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EFF158205A100336684 /* speaker_on_over.png */; }; D3F83F24158205A100336684 /* video_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F00158205A100336684 /* video_off_default.png */; }; - D3F83F25158205A100336684 /* video_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F00158205A100336684 /* video_off_default.png */; }; D3F83F26158205A100336684 /* video_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F01158205A100336684 /* video_off_over.png */; }; - D3F83F27158205A100336684 /* video_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F01158205A100336684 /* video_off_over.png */; }; D3F83F28158205A100336684 /* video_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F02158205A100336684 /* video_on_default.png */; }; - D3F83F29158205A100336684 /* video_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F02158205A100336684 /* video_on_default.png */; }; D3F83F2A158205A100336684 /* video_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F03158205A100336684 /* video_on_over.png */; }; - D3F83F2B158205A100336684 /* video_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F03158205A100336684 /* video_on_over.png */; }; D3F83F441582223B00336684 /* numpad_zero_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2C1582223B00336684 /* numpad_zero_default.png */; }; - D3F83F451582223B00336684 /* numpad_zero_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2C1582223B00336684 /* numpad_zero_default.png */; }; D3F83F461582223B00336684 /* numpad_zero_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2D1582223B00336684 /* numpad_zero_over.png */; }; - D3F83F471582223B00336684 /* numpad_zero_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2D1582223B00336684 /* numpad_zero_over.png */; }; D3F83F481582223B00336684 /* numpad_one_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2E1582223B00336684 /* numpad_one_default.png */; }; - D3F83F491582223B00336684 /* numpad_one_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2E1582223B00336684 /* numpad_one_default.png */; }; D3F83F4A1582223B00336684 /* numpad_one_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2F1582223B00336684 /* numpad_one_over.png */; }; - D3F83F4B1582223B00336684 /* numpad_one_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2F1582223B00336684 /* numpad_one_over.png */; }; D3F83F4C1582223B00336684 /* numpad_two_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F301582223B00336684 /* numpad_two_default.png */; }; - D3F83F4D1582223B00336684 /* numpad_two_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F301582223B00336684 /* numpad_two_default.png */; }; D3F83F4E1582223B00336684 /* numpad_two_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F311582223B00336684 /* numpad_two_over.png */; }; - D3F83F4F1582223B00336684 /* numpad_two_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F311582223B00336684 /* numpad_two_over.png */; }; D3F83F501582223B00336684 /* numpad_three_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F321582223B00336684 /* numpad_three_default.png */; }; - D3F83F511582223B00336684 /* numpad_three_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F321582223B00336684 /* numpad_three_default.png */; }; D3F83F521582223B00336684 /* numpad_three_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F331582223B00336684 /* numpad_three_over.png */; }; - D3F83F531582223B00336684 /* numpad_three_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F331582223B00336684 /* numpad_three_over.png */; }; D3F83F541582223B00336684 /* numpad_four_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F341582223B00336684 /* numpad_four_default.png */; }; - D3F83F551582223B00336684 /* numpad_four_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F341582223B00336684 /* numpad_four_default.png */; }; D3F83F561582223B00336684 /* numpad_four_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F351582223B00336684 /* numpad_four_over.png */; }; - D3F83F571582223B00336684 /* numpad_four_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F351582223B00336684 /* numpad_four_over.png */; }; D3F83F581582223B00336684 /* numpad_five_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F361582223B00336684 /* numpad_five_default.png */; }; - D3F83F591582223B00336684 /* numpad_five_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F361582223B00336684 /* numpad_five_default.png */; }; D3F83F5A1582223B00336684 /* numpad_five_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F371582223B00336684 /* numpad_five_over.png */; }; - D3F83F5B1582223B00336684 /* numpad_five_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F371582223B00336684 /* numpad_five_over.png */; }; D3F83F5C1582223B00336684 /* numpad_six_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F381582223B00336684 /* numpad_six_default.png */; }; - D3F83F5D1582223B00336684 /* numpad_six_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F381582223B00336684 /* numpad_six_default.png */; }; D3F83F5E1582223B00336684 /* numpad_six_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F391582223B00336684 /* numpad_six_over.png */; }; - D3F83F5F1582223B00336684 /* numpad_six_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F391582223B00336684 /* numpad_six_over.png */; }; D3F83F601582223B00336684 /* numpad_seven_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3A1582223B00336684 /* numpad_seven_default.png */; }; - D3F83F611582223B00336684 /* numpad_seven_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3A1582223B00336684 /* numpad_seven_default.png */; }; D3F83F621582223B00336684 /* numpad_seven_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3B1582223B00336684 /* numpad_seven_over.png */; }; - D3F83F631582223B00336684 /* numpad_seven_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3B1582223B00336684 /* numpad_seven_over.png */; }; D3F83F641582223B00336684 /* numpad_eight_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3C1582223B00336684 /* numpad_eight_default.png */; }; - D3F83F651582223B00336684 /* numpad_eight_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3C1582223B00336684 /* numpad_eight_default.png */; }; D3F83F661582223B00336684 /* numpad_eight_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3D1582223B00336684 /* numpad_eight_over.png */; }; - D3F83F671582223B00336684 /* numpad_eight_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3D1582223B00336684 /* numpad_eight_over.png */; }; D3F83F681582223B00336684 /* numpad_nine_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3E1582223B00336684 /* numpad_nine_default.png */; }; - D3F83F691582223B00336684 /* numpad_nine_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3E1582223B00336684 /* numpad_nine_default.png */; }; D3F83F6A1582223B00336684 /* numpad_nine_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3F1582223B00336684 /* numpad_nine_over.png */; }; - D3F83F6B1582223B00336684 /* numpad_nine_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F3F1582223B00336684 /* numpad_nine_over.png */; }; D3F83F6C1582223B00336684 /* numpad_sharp_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F401582223B00336684 /* numpad_sharp_default.png */; }; - D3F83F6D1582223B00336684 /* numpad_sharp_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F401582223B00336684 /* numpad_sharp_default.png */; }; D3F83F6E1582223B00336684 /* numpad_sharp_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F411582223B00336684 /* numpad_sharp_over.png */; }; - D3F83F6F1582223B00336684 /* numpad_sharp_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F411582223B00336684 /* numpad_sharp_over.png */; }; D3F83F721582223B00336684 /* numpad_star_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F431582223B00336684 /* numpad_star_default.png */; }; - D3F83F731582223B00336684 /* numpad_star_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F431582223B00336684 /* numpad_star_default.png */; }; D3F83F781582253100336684 /* accept_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* accept_default.png */; }; - D3F83F791582253100336684 /* accept_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* accept_default.png */; }; D3F83F7A1582253100336684 /* accept_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F751582253100336684 /* accept_over.png */; }; - D3F83F7B1582253100336684 /* accept_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F751582253100336684 /* accept_over.png */; }; D3F83F7C1582253100336684 /* decline_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F761582253100336684 /* decline_default.png */; }; - D3F83F7D1582253100336684 /* decline_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F761582253100336684 /* decline_default.png */; }; D3F83F7E1582253100336684 /* decline_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F771582253100336684 /* decline_over.png */; }; - D3F83F7F1582253100336684 /* decline_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F771582253100336684 /* decline_over.png */; }; D3F83F8E15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; D3F83F8F15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; D3F83F9215824D3600336684 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; - D3F83F9315824D3600336684 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; D3F9A9DB15AEEB940045320F /* history_notification.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9DA15AEEB940045320F /* history_notification.png */; }; - D3F9A9DC15AEEB940045320F /* history_notification.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9DA15AEEB940045320F /* history_notification.png */; }; D3F9A9E215AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */; }; D3F9A9E315AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */; }; D3F9A9E415AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */; }; @@ -836,6 +855,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + D34BD61215C139D90070C209 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D2AAC07D0554694100DB518D; + remoteInfo = NinePatch; + }; D389363115A6D3C500A3A3AA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */; @@ -996,7 +1022,6 @@ 220FAD3010765B400068D98F /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = ""; }; 2211DB8F147555C800DEE054 /* libmediastreamer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer.a"; sourceTree = ""; }; 2211DB911475562600DEE054 /* liblinphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphone.a; path = "liblinphone-sdk/apple-darwin/lib/liblinphone.a"; sourceTree = ""; }; - 2211DB94147564B400DEE054 /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = Settings.bundle; path = "nogpl-thirdparties/Settings.bundle"; sourceTree = ""; }; 2211DBBB14769C8200DEE054 /* CallDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CallDelegate.m; sourceTree = ""; }; 2214783C1386A2030020F8B8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Resources/en.lproj/Localizable.strings; sourceTree = ""; }; 2214EB7812F846B1002A5394 /* UICallButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallButton.h; sourceTree = ""; }; @@ -1579,55 +1604,55 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D389363515A6D40000A3A3AA /* libNinePatch.a in Frameworks */, - D32B6E2F15A5C0AC0033019F /* libsqlite3.dylib in Frameworks */, - D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */, - 340751971506459A00B89C47 /* CoreTelephony.framework in Frameworks */, - 226CDADF14E2D0B800513B67 /* libbcg729.a in Frameworks */, - 226CDAE014E2D0B800513B67 /* libmsbcg729.a in Frameworks */, - 344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */, - 344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */, - 344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */, - F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */, - F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */, - 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */, - 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */, - 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */, + 22B5F03510CE6B2F00777D97 /* AddressBook.framework in Frameworks */, + 22B5EFA310CE50BD00777D97 /* AddressBookUI.framework in Frameworks */, + 2274402F106F335E006EC466 /* AudioToolbox.framework in Frameworks */, + 224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */, + 228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */, + 2274401A106F31BD006EC466 /* CoreAudio.framework in Frameworks */, + 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */, 22276E8913C73DC000210156 /* CoreMedia.framework in Frameworks */, + 340751971506459A00B89C47 /* CoreTelephony.framework in Frameworks */, 22276E8713C73D8A00210156 /* CoreVideo.framework in Frameworks */, + 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, + D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */, + 70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */, + 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */, + 2264B6D211200342002C2C53 /* SystemConfiguration.framework in Frameworks */, + 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, + D389363515A6D40000A3A3AA /* libNinePatch.a in Frameworks */, + 344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */, + D32B6E2F15A5C0AC0033019F /* libsqlite3.dylib in Frameworks */, + 344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */, + 22D1B68112A3E0BE001AE361 /* libresolv.dylib in Frameworks */, 22276E8313C73D3100210156 /* libavcodec.a in Frameworks */, 22276E8413C73D3100210156 /* libavutil.a in Frameworks */, - 22276E8513C73D3100210156 /* libswscale.a in Frameworks */, - 22E5B0AF133B5EA20044EA25 /* libssl.a in Frameworks */, 22E5B0B0133B5EA20044EA25 /* libcrypto.a in Frameworks */, - 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, - 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, - 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */, - 2274401A106F31BD006EC466 /* CoreAudio.framework in Frameworks */, - 2274402F106F335E006EC466 /* AudioToolbox.framework in Frameworks */, + 226CDADF14E2D0B800513B67 /* libbcg729.a in Frameworks */, 220FAD3110765B400068D98F /* libeXosip2.a in Frameworks */, 220FAD3210765B400068D98F /* libgsm.a in Frameworks */, + 223148E41178A08200637D6A /* libilbc.a in Frameworks */, + F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */, + F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */, + 226F2ED81344B0EF00F6EF27 /* libmsamr.a in Frameworks */, + 223148E61178A09900637D6A /* libmsilbc.a in Frameworks */, + 226183B0147259670037138E /* libmssilk.a in Frameworks */, + 22AA8AFE13D7125600B30535 /* libmsx264.a in Frameworks */, + 22A10F3B11F8960300373793 /* libortp.a in Frameworks */, 220FAD3610765B400068D98F /* libosip2.a in Frameworks */, 220FAD3710765B400068D98F /* libosipparser2.a in Frameworks */, + 226F2ED71344B0EF00F6EF27 /* libopencore-amrnb.a in Frameworks */, + 226F2ED61344B0EF00F6EF27 /* libopencore-amrwb.a in Frameworks */, + 226CDAE014E2D0B800513B67 /* libmsbcg729.a in Frameworks */, 220FAD3810765B400068D98F /* libspeex.a in Frameworks */, 220FAD3910765B400068D98F /* libspeexdsp.a in Frameworks */, - 224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */, - 22B5EFA310CE50BD00777D97 /* AddressBookUI.framework in Frameworks */, - 22B5F03510CE6B2F00777D97 /* AddressBook.framework in Frameworks */, - 2264B6D211200342002C2C53 /* SystemConfiguration.framework in Frameworks */, - 223148E41178A08200637D6A /* libilbc.a in Frameworks */, - 223148E61178A09900637D6A /* libmsilbc.a in Frameworks */, - 228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */, - 22A10F3B11F8960300373793 /* libortp.a in Frameworks */, - 22D1B68112A3E0BE001AE361 /* libresolv.dylib in Frameworks */, - 226F2ED61344B0EF00F6EF27 /* libopencore-amrwb.a in Frameworks */, - 226F2ED71344B0EF00F6EF27 /* libopencore-amrnb.a in Frameworks */, - 226F2ED81344B0EF00F6EF27 /* libmsamr.a in Frameworks */, - 22AA8AFD13D7125600B30535 /* libx264.a in Frameworks */, - 22AA8AFE13D7125600B30535 /* libmsx264.a in Frameworks */, - 226183AD1472527D0037138E /* libSKP_SILK_SDK.a in Frameworks */, 226183AE1472527D0037138E /* libsrtp.a in Frameworks */, - 226183B0147259670037138E /* libmssilk.a in Frameworks */, + 22E5B0AF133B5EA20044EA25 /* libssl.a in Frameworks */, + 226183AD1472527D0037138E /* libSKP_SILK_SDK.a in Frameworks */, + 22276E8513C73D3100210156 /* libswscale.a in Frameworks */, + 7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */, + 22AA8AFD13D7125600B30535 /* libx264.a in Frameworks */, + 344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1635,41 +1660,44 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D37DC7191594AF3F00B2A5EB /* MessageUI.framework in Frameworks */, - 34075199150645A300B89C47 /* CoreTelephony.framework in Frameworks */, - 22D8F15B147548E2008C97DB /* libvpx.a in Frameworks */, - 22D8F15C147548E2008C97DB /* QuartzCore.framework in Frameworks */, - 22D8F15D147548E2008C97DB /* OpenGLES.framework in Frameworks */, - 22D8F15E147548E2008C97DB /* CoreMedia.framework in Frameworks */, - 22D8F15F147548E2008C97DB /* CoreVideo.framework in Frameworks */, - 22D8F163147548E2008C97DB /* libssl.a in Frameworks */, - 22D8F164147548E2008C97DB /* libcrypto.a in Frameworks */, - 22D8F165147548E2008C97DB /* Foundation.framework in Frameworks */, - 22D8F166147548E2008C97DB /* UIKit.framework in Frameworks */, - 22D8F167147548E2008C97DB /* CoreGraphics.framework in Frameworks */, - 22D8F168147548E2008C97DB /* CoreAudio.framework in Frameworks */, - 22D8F169147548E2008C97DB /* AudioToolbox.framework in Frameworks */, - 22D8F16A147548E2008C97DB /* libeXosip2.a in Frameworks */, - 22D8F16B147548E2008C97DB /* libgsm.a in Frameworks */, - 22D8F16C147548E2008C97DB /* libosip2.a in Frameworks */, - 22D8F16D147548E2008C97DB /* libosipparser2.a in Frameworks */, - 22D8F16E147548E2008C97DB /* libspeex.a in Frameworks */, - 22D8F16F147548E2008C97DB /* libspeexdsp.a in Frameworks */, 22D8F170147548E2008C97DB /* AVFoundation.framework in Frameworks */, - 22D8F171147548E2008C97DB /* AddressBookUI.framework in Frameworks */, 22D8F172147548E2008C97DB /* AddressBook.framework in Frameworks */, - 22D8F173147548E2008C97DB /* SystemConfiguration.framework in Frameworks */, - 22D8F174147548E2008C97DB /* libilbc.a in Frameworks */, - 22D8F175147548E2008C97DB /* libmsilbc.a in Frameworks */, + 22D8F171147548E2008C97DB /* AddressBookUI.framework in Frameworks */, 22D8F176147548E2008C97DB /* CFNetwork.framework in Frameworks */, - 22D8F177147548E2008C97DB /* libortp.a in Frameworks */, + 22D8F169147548E2008C97DB /* AudioToolbox.framework in Frameworks */, + 22D8F168147548E2008C97DB /* CoreAudio.framework in Frameworks */, + 22D8F167147548E2008C97DB /* CoreGraphics.framework in Frameworks */, + 22D8F15E147548E2008C97DB /* CoreMedia.framework in Frameworks */, + 34075199150645A300B89C47 /* CoreTelephony.framework in Frameworks */, + 22D8F15F147548E2008C97DB /* CoreVideo.framework in Frameworks */, + 22D8F165147548E2008C97DB /* Foundation.framework in Frameworks */, + D37DC7191594AF3F00B2A5EB /* MessageUI.framework in Frameworks */, + 22D8F15D147548E2008C97DB /* OpenGLES.framework in Frameworks */, + 22D8F15C147548E2008C97DB /* QuartzCore.framework in Frameworks */, + 22D8F173147548E2008C97DB /* SystemConfiguration.framework in Frameworks */, + 22D8F166147548E2008C97DB /* UIKit.framework in Frameworks */, + D34BD61415C13A540070C209 /* libNinePatch.a in Frameworks */, 22D8F178147548E2008C97DB /* libresolv.dylib in Frameworks */, + D34BD61515C13B7B0070C209 /* libsqlite3.dylib in Frameworks */, + 22D8F164147548E2008C97DB /* libcrypto.a in Frameworks */, + 22D8F16A147548E2008C97DB /* libeXosip2.a in Frameworks */, + 22D8F174147548E2008C97DB /* libilbc.a in Frameworks */, + 22D8F16B147548E2008C97DB /* libgsm.a in Frameworks */, + D34BD61815C13D0B0070C209 /* liblinphone.a in Frameworks */, + D34BD61915C13D0B0070C209 /* libmediastreamer.a in Frameworks */, + 22D8F17B147548E2008C97DB /* libmsamr.a in Frameworks */, + 22D8F175147548E2008C97DB /* libmsilbc.a in Frameworks */, 22D8F179147548E2008C97DB /* libopencore-amrwb.a in Frameworks */, 22D8F17A147548E2008C97DB /* libopencore-amrnb.a in Frameworks */, - 22D8F17B147548E2008C97DB /* libmsamr.a in Frameworks */, + 22D8F177147548E2008C97DB /* libortp.a in Frameworks */, + 22D8F16C147548E2008C97DB /* libosip2.a in Frameworks */, + 22D8F16D147548E2008C97DB /* libosipparser2.a in Frameworks */, 22D8F17E147548E2008C97DB /* libSKP_SILK_SDK.a in Frameworks */, 22D8F17F147548E2008C97DB /* libsrtp.a in Frameworks */, - 22D8F180147548E2008C97DB /* libmssilk.a in Frameworks */, + 22D8F16E147548E2008C97DB /* libspeex.a in Frameworks */, + 22D8F16F147548E2008C97DB /* libspeexdsp.a in Frameworks */, + 22D8F163147548E2008C97DB /* libssl.a in Frameworks */, + 22D8F15B147548E2008C97DB /* libvpx.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1955,14 +1983,6 @@ path = speex; sourceTree = ""; }; - 2211DB9614764F6B00DEE054 /* nogpl-thirdparties */ = { - isa = PBXGroup; - children = ( - 2211DB94147564B400DEE054 /* Settings.bundle */, - ); - name = "nogpl-thirdparties"; - sourceTree = ""; - }; 2214EB7012F84668002A5394 /* LinphoneUI */ = { isa = PBXGroup; children = ( @@ -2180,7 +2200,6 @@ D37DC6C31594AE5600B2A5EB /* InAppSettingsKit */, 220FAC77107654FC0068D98F /* include */, 2214783B1386A2030020F8B8 /* Localizable.strings */, - 2211DB9614764F6B00DEE054 /* nogpl-thirdparties */, 29B97315FDCFA39411CA2CEA /* Other Sources */, 19C28FACFE9D520D11CA2CBB /* Products */, 29B97317FDCFA39411CA2CEA /* Resources */, @@ -2659,6 +2678,7 @@ buildRules = ( ); dependencies = ( + D34BD61315C139D90070C209 /* PBXTargetDependency */, ); name = "linphone-no-gpl-thirdparties"; productName = linphone; @@ -3019,287 +3039,303 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 22D8F11F147548E2008C97DB /* linphonerc in Resources */, - 22D8F120147548E2008C97DB /* DialerViewController.xib in Resources */, - 22D8F121147548E2008C97DB /* ringback.wav in Resources */, - 22D8F124147548E2008C97DB /* untitled.plist in Resources */, - 22D8F125147548E2008C97DB /* oldphone-mono.wav in Resources */, - 22D8F12D147548E2008C97DB /* ConsoleViewController.xib in Resources */, - 22D8F12E147548E2008C97DB /* linphone_icon_57.png in Resources */, - 22D8F137147548E2008C97DB /* linphone-banner.png in Resources */, - 22D8F138147548E2008C97DB /* MoreViewController.xib in Resources */, - 22D8F139147548E2008C97DB /* oldphone-mono-30s.caf in Resources */, - 22D8F13B147548E2008C97DB /* FirstLoginViewController.xib in Resources */, - 22D8F13D147548E2008C97DB /* Localizable.strings in Resources */, - 22D8F142147548E2008C97DB /* rootca.pem in Resources */, - 2211DB95147564B400DEE054 /* Settings.bundle in Resources */, - 3422AA5114975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, - 341FCA8F149798210084BC26 /* linphonerc-ipad in Resources */, - D3F83EEF1582021700336684 /* InCallViewController.xib in Resources */, - D3F83F0D158205A100336684 /* micro_off_default.png in Resources */, - D3F83F0F158205A100336684 /* micro_off_over.png in Resources */, - D3F83F11158205A100336684 /* micro_on_default.png in Resources */, - D3F83F13158205A100336684 /* micro_on_over.png in Resources */, - D3F83F15158205A100336684 /* pause_off_default.png in Resources */, - D3F83F17158205A100336684 /* pause_off_over.png in Resources */, - D3F83F19158205A100336684 /* hangup_default.png in Resources */, - D3F83F1B158205A100336684 /* hangup_over.png in Resources */, - D3F83F1D158205A100336684 /* speaker_off_default.png in Resources */, - D3F83F1F158205A100336684 /* speaker_off_over.png in Resources */, - D3F83F21158205A100336684 /* speaker_on_default.png in Resources */, - D3F83F23158205A100336684 /* speaker_on_over.png in Resources */, - D3F83F25158205A100336684 /* video_off_default.png in Resources */, - D3F83F27158205A100336684 /* video_off_over.png in Resources */, - D3F83F29158205A100336684 /* video_on_default.png in Resources */, - D3F83F2B158205A100336684 /* video_on_over.png in Resources */, - D3F83F451582223B00336684 /* numpad_zero_default.png in Resources */, - D3F83F471582223B00336684 /* numpad_zero_over.png in Resources */, - D3F83F491582223B00336684 /* numpad_one_default.png in Resources */, - D3F83F4B1582223B00336684 /* numpad_one_over.png in Resources */, - D3F83F4D1582223B00336684 /* numpad_two_default.png in Resources */, - D3F83F4F1582223B00336684 /* numpad_two_over.png in Resources */, - D3F83F511582223B00336684 /* numpad_three_default.png in Resources */, - D3F83F531582223B00336684 /* numpad_three_over.png in Resources */, - D3F83F551582223B00336684 /* numpad_four_default.png in Resources */, - D3F83F571582223B00336684 /* numpad_four_over.png in Resources */, - D3F83F591582223B00336684 /* numpad_five_default.png in Resources */, - D3F83F5B1582223B00336684 /* numpad_five_over.png in Resources */, - D3F83F5D1582223B00336684 /* numpad_six_default.png in Resources */, - D3F83F5F1582223B00336684 /* numpad_six_over.png in Resources */, - D3F83F611582223B00336684 /* numpad_seven_default.png in Resources */, - D3F83F631582223B00336684 /* numpad_seven_over.png in Resources */, - D3F83F651582223B00336684 /* numpad_eight_default.png in Resources */, - D3F83F671582223B00336684 /* numpad_eight_over.png in Resources */, - D3F83F691582223B00336684 /* numpad_nine_default.png in Resources */, - D3F83F6B1582223B00336684 /* numpad_nine_over.png in Resources */, - D3F83F6D1582223B00336684 /* numpad_sharp_default.png in Resources */, - D3F83F6F1582223B00336684 /* numpad_sharp_over.png in Resources */, - D3F83F731582223B00336684 /* numpad_star_default.png in Resources */, - D3F83F791582253100336684 /* accept_default.png in Resources */, - D3F83F7B1582253100336684 /* accept_over.png in Resources */, - D3F83F7D1582253100336684 /* decline_default.png in Resources */, - D3F83F7F1582253100336684 /* decline_over.png in Resources */, - D3F83F9315824D3600336684 /* LinphoneApp.xib in Resources */, - D3ED3E421585FB4A006C0DE4 /* background.png in Resources */, - D3ED3E461585FB8C006C0DE4 /* dialer_address_background.png in Resources */, - D3ED3E531585FFFD006C0DE4 /* statebar_background.png in Resources */, - D3ED3E6B15861A53006C0DE4 /* add_contact_default.png in Resources */, - D3ED3E6D15861A53006C0DE4 /* add_contact_disabled.png in Resources */, - D3ED3E6F15861A53006C0DE4 /* add_contact_over.png in Resources */, - D3ED3E7315861ABD006C0DE4 /* call_default.png in Resources */, - D3ED3E7515861ABD006C0DE4 /* call_over.png in Resources */, - D3ED3E7915861B1B006C0DE4 /* backspace_default.png in Resources */, - D3ED3E7B15861B1B006C0DE4 /* backspace_over.png in Resources */, - D3ED3E8A1586291E006C0DE4 /* UIMainBar.xib in Resources */, - D3ED3E9915872EF1006C0DE4 /* history_all_selected.png in Resources */, - D3ED3E9B15872EF1006C0DE4 /* history_all_default.png in Resources */, - D3ED3E9D15872EF1006C0DE4 /* history_edit_default.png in Resources */, - D3ED3E9F15872EF1006C0DE4 /* history_edit_over.png in Resources */, - D3ED3EA115872EF1006C0DE4 /* history_missed_selected.png in Resources */, - D3ED3EA315872EF1006C0DE4 /* history_missed_default.png in Resources */, - D3ED3EB4158738FB006C0DE4 /* HistoryViewController.xib in Resources */, - D354980115875372000081D8 /* ContactsViewController.xib in Resources */, - D354980715875534000081D8 /* contacts_all_selected.png in Resources */, - D354980915875534000081D8 /* contacts_all_default.png in Resources */, - D354980B15875534000081D8 /* contacts_linphone_selected.png in Resources */, - D354980D15875534000081D8 /* contacts_linphone_default.png in Resources */, - D354981115875608000081D8 /* contacts_add_default.png in Resources */, - D354981315875608000081D8 /* contacts_add_over.png in Resources */, - D354981B15876FE7000081D8 /* list_details_default.png in Resources */, - D354981D15876FE7000081D8 /* list_details_over.png in Resources */, - D35498241587716B000081D8 /* UIStateBar.xib in Resources */, - D3A55FC015877E69003FD403 /* UIContactCell.xib in Resources */, - D32648411588950F00930C67 /* UICallBar.xib in Resources */, - D31C9C91158A1C1000756B45 /* call_status_incoming.png in Resources */, - D31C9C93158A1C1000756B45 /* call_status_missed.png in Resources */, - D31C9C95158A1C1000756B45 /* call_status_outgoing.png in Resources */, - D31AC4B1158A29C600C2638B /* UIHistoryCell.xib in Resources */, - D3432A63158A4446001C6B0B /* led_connected.png in Resources */, - D3432A65158A4446001C6B0B /* led_error.png in Resources */, - D3432A67158A4446001C6B0B /* call_quality_indicator_0.png in Resources */, - D3432A69158A4446001C6B0B /* call_quality_indicator_1.png in Resources */, - D3432A6B158A4446001C6B0B /* call_quality_indicator_2.png in Resources */, - D3432A6D158A4446001C6B0B /* call_quality_indicator_3.png in Resources */, - D3432A72158A45AF001C6B0B /* led_inprogress.png in Resources */, - D3432A74158A45AF001C6B0B /* led_disconnected.png in Resources */, - D37295DC158B3C9600D2C0C7 /* video_off_disabled.png in Resources */, - D36C43CB158F2EE50048BA40 /* UICallCell.xib in Resources */, - D36C43D2158F2F370048BA40 /* cell_call.png in Resources */, - D36C43D4158F2F370048BA40 /* cell_conference.png in Resources */, - D36C43D6158F2F370048BA40 /* header_conference.png in Resources */, - D36C43D8158F2F370048BA40 /* dialer_alt_default.png in Resources */, - D36C43DA158F2F370048BA40 /* dialer_alt_over.png in Resources */, - D36C43EA158F3F7E0048BA40 /* pause_on_default.png in Resources */, - D36C43EC158F3F7E0048BA40 /* pause_on_over.png in Resources */, - D36C43F2158F61EA0048BA40 /* call_state_pause_default.png in Resources */, - D36C43F4158F61EA0048BA40 /* call_state_pause_over.png in Resources */, - D36C43F6158F61EA0048BA40 /* call_state_play_default.png in Resources */, - D36C43F8158F61EA0048BA40 /* call_state_play_over.png in Resources */, - D35E757915931E5D0066B1C1 /* switch_camera_default.png in Resources */, - D35E757B15931E5D0066B1C1 /* switch_camera_over.png in Resources */, - D35E758A15932DE60066B1C1 /* backspace_disabled.png in Resources */, - D35E758E15934F360066B1C1 /* call_disabled.png in Resources */, - D35E759A159460580066B1C1 /* ChatViewController.xib in Resources */, - D32942A51594C94300556A1C /* SettingsViewController.xib in Resources */, - D34F6F9F1594D3FB0095705B /* InAppSettings.bundle in Resources */, - D3EA5404159852080037DC6B /* chat_edit_default.png in Resources */, - D3EA5406159852080037DC6B /* chat_edit_over.png in Resources */, - D3EA5408159852080037DC6B /* chat_add_default.png in Resources */, - D3EA540A159852080037DC6B /* chat_add_over.png in Resources */, - D3EA5415159853C90037DC6B /* UIChatCell.xib in Resources */, - D3EA5419159858A80037DC6B /* list_delete_default.png in Resources */, - D3EA541B159858A80037DC6B /* list_delete_over.png in Resources */, - D3F26BF415986B73005F9CAB /* IncomingCallViewController.xib in Resources */, - D3F26BF815986DAD005F9CAB /* history_ok_default.png in Resources */, - D3F26BFA15986DAD005F9CAB /* history_ok_over.png in Resources */, - D3F26BFD15987083005F9CAB /* header_incoming.png in Resources */, - D31B4B24159876C0002E6C72 /* UICompositeViewController.xib in Resources */, - D31B4B291598A390002E6C72 /* avatar_unknown.png in Resources */, - D31B4B2B1598A390002E6C72 /* avatar_unknown_small.png in Resources */, - D3F34F311599B008005BE94F /* avatar_shadow.png in Resources */, - D3D6A39F159B0EEF005F692C /* add_call_default.png in Resources */, - D3D6A3A1159B0EEF005F692C /* add_call_disabled.png in Resources */, - D3D6A3A3159B0EEF005F692C /* add_call_over.png in Resources */, - D3D6A3AC159B0EFE005F692C /* security_ko.png in Resources */, - D3D6A3AE159B0EFE005F692C /* security_pending.png in Resources */, - D3D6A3B0159B0EFE005F692C /* security_ok.png in Resources */, - D3D6A3B2159B0EFE005F692C /* options_default.png in Resources */, - D3D6A3B4159B0EFE005F692C /* options_disabled.png in Resources */, - D3D6A3B6159B0EFE005F692C /* options_over.png in Resources */, - D31AAF64159B5B6F002C6B02 /* conference_default.png in Resources */, - D31AAF66159B5B6F002C6B02 /* conference_over.png in Resources */, - D31AAF6F159B65E1002C6B02 /* call_state_ringing_default.png in Resources */, - D3211BA7159C3D410098460B /* call_state_outgoing_default.png in Resources */, - D3211BB3159C4EF10098460B /* UIConferenceHeader.xib in Resources */, - D3211BBA159C8A820098460B /* cell_call_first.png in Resources */, - D3211BBF159CBFD70098460B /* back_default.png in Resources */, - D3211BC1159CBFD70098460B /* back_disabled.png in Resources */, - D3211BC3159CBFD70098460B /* back_over.png in Resources */, - D3C714B4159DB84400705B8E /* toy-mono.wav in Resources */, - D37B96B815A1A6F20005CCD2 /* call_state_delete_default.png in Resources */, - D37B96BA15A1A6F20005CCD2 /* call_state_delete_over.png in Resources */, - D3C2814C15A2D38D0098AA42 /* dialer_selected.png in Resources */, - D3C2815315A2D64A0098AA42 /* numpad_star_over.png in Resources */, - D365AA7C15A2DE7500CAFE3F /* speaker_off_disabled.png in Resources */, - D365AA7E15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */, - D35EA76415A2DF8D003E025D /* micro_off_disabled.png in Resources */, - D35EA76615A2DF8D003E025D /* micro_on_disabled.png in Resources */, - D38D14B015A30B3D008497E8 /* cell_call_first_highlight.png in Resources */, - D38D14B215A30B3D008497E8 /* cell_call_highlight.png in Resources */, - D3196D3515A321E3007FEEBA /* options_add_default.png in Resources */, - D3196D3715A321E3007FEEBA /* options_add_over.png in Resources */, - D3196D3915A321E3007FEEBA /* options_transfer_default.png in Resources */, - D3196D3B15A321E3007FEEBA /* options_transfer_over.png in Resources */, - D350F21115A43BB100149E54 /* WizardViewController.xib in Resources */, - D350F21D15A43D3400149E54 /* setup_back_default.png in Resources */, - D350F21F15A43D3400149E54 /* setup_back_over.png in Resources */, - D350F22115A43D3400149E54 /* setup_cancel_default.png in Resources */, - D350F22315A43D3400149E54 /* setup_cancel_over.png in Resources */, - D350F22515A43D3400149E54 /* field_background.png in Resources */, - D350F22715A43D3400149E54 /* setup_start_default.png in Resources */, - D350F22915A43D3400149E54 /* setup_start_over.png in Resources */, - D350F22B15A43D3400149E54 /* setup_title_assistant.png in Resources */, - D350F22D15A43D3400149E54 /* setup_welcome_logo.png in Resources */, - D35406F815A47E9E007E7E81 /* button_background_default.png in Resources */, - D35406FA15A47E9E007E7E81 /* button_background_over.png in Resources */, - D3F795D915A582810077328B /* ChatRoomViewController.xib in Resources */, - D3F795DE15A5831C0077328B /* chat_back_default.png in Resources */, - D3F795E015A5831C0077328B /* chat_back_over.png in Resources */, - D3B9A3E015A58C450096EA4E /* chat_field.png in Resources */, - D3B9A3E215A58C450096EA4E /* chat_ok_default.png in Resources */, - D3B9A3E415A58C450096EA4E /* chat_ok_over.png in Resources */, - D3B9A3E615A58C450096EA4E /* chat_send_default.png in Resources */, - D3B9A3E815A58C450096EA4E /* chat_send_over.png in Resources */, - D32B6E2515A5B2020033019F /* chat_send_disabled.png in Resources */, - D32B6E2D15A5C0800033019F /* database.sqlite in Resources */, - D3A8BB7515A6C81A00F96BE5 /* UIChatRoomCell.xib in Resources */, - D3A8BB7C15A6CC3200F96BE5 /* chat_bubble_outgoing.png in Resources */, - D3A8BB7E15A6CC3200F96BE5 /* chat_bubble_incoming.png in Resources */, - D3A8BB8015A6CC3200F96BE5 /* setup_back_disabled.png in Resources */, - D3A8BB8215A6CC3200F96BE5 /* setup_cancel_disabled.png in Resources */, - D3A8BB8415A6CC3200F96BE5 /* setup_start_disabled.png in Resources */, - D389363A15A6D53200A3A3AA /* chat_bubble_incoming.9.png in Resources */, - D389363C15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */, - D3D14E7D15A711700074A527 /* avatar_shadow_small.png in Resources */, - D3128FE415AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */, - D3128FF015AABE4E00A2147A /* contact_back_default.png in Resources */, - D3128FF215AABE4E00A2147A /* contact_back_over.png in Resources */, - D3128FF415AABE4E00A2147A /* contact_edit_default.png in Resources */, - D3128FF615AABE4E00A2147A /* contact_edit_over.png in Resources */, - D37C638F15AAD251009D0BAC /* contact_number_over.png in Resources */, - D37C639115AAD251009D0BAC /* contact_number.png in Resources */, - D37C639815AADDAF009D0BAC /* UIContactDetailsHeader.xib in Resources */, - D3C6526C15AC228A0092A874 /* contact_ok_default.png in Resources */, - D3C6526E15AC228A0092A874 /* contact_ok_over.png in Resources */, - D378906815AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */, - D378906B15AC37C800BD776C /* contact_bar_background.png in Resources */, - D3E8F68915ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */, - D32D5AA815ADE5D9008593F3 /* button_alert_background_default.png in Resources */, - D32D5AAA15ADE5D9008593F3 /* button_alert_background_over.png in Resources */, - C9C8254415AE204D00D493FA /* options_add_disabled.png in Resources */, - C9C8254615AE204D00D493FA /* options_transfer_disabled.png in Resources */, - C9C8254815AE204D00D493FA /* transfer_call_default.png in Resources */, - C9C8254A15AE204D00D493FA /* transfer_call_over.png in Resources */, - C9C8254D15AE207B00D493FA /* options_selected.png in Resources */, - C9C8255015AE256100D493FA /* transfer_call_disabled.png in Resources */, - C90FAA7C15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */, - D3F9A9DC15AEEB940045320F /* history_notification.png in Resources */, - D3E84F1F15B00F4100420DAC /* cancel_default.png in Resources */, - D3E84F2115B00F4100420DAC /* cancel_over.png in Resources */, - D3E84F2715B00F4100420DAC /* dialer_alt_back_default.png in Resources */, - D3E84F2915B00F4100420DAC /* dialer_alt_back_over.png in Resources */, - D3E84F2B15B00F4100420DAC /* dialer_alt_background.png in Resources */, - D3E84F3915B011AF00420DAC /* contact_cancel_default.png in Resources */, - D3E84F3B15B011AF00420DAC /* contact_cancel_over.png in Resources */, - D3157A8B15B4466F00DD8C4C /* history_details_add_default.png in Resources */, - D3157A8D15B4466F00DD8C4C /* history_details_add_over.png in Resources */, - D3157A9115B446CB00DD8C4C /* history_details_back_default.png in Resources */, - D3157A9315B446CB00DD8C4C /* history_details_back_over.png in Resources */, - D3119E7315B6A4710005D4A4 /* contacts_back_default.png in Resources */, - D3119E7515B6A4710005D4A4 /* contacts_back_over.png in Resources */, - D3C31A3315BD8DED008ED271 /* conference_default_landscape.png in Resources */, - D3C31A3515BD8DED008ED271 /* conference_over_landscape.png in Resources */, - D3C31A3715BD8DED008ED271 /* dialer_alt_back_default_landscape.png in Resources */, - D3C31A3915BD8DED008ED271 /* dialer_alt_back_over_landscape.png in Resources */, - D3C31A3B15BD8DED008ED271 /* dialer_alt_default_landscape.png in Resources */, - D3C31A3D15BD8DED008ED271 /* dialer_alt_over_landscape.png in Resources */, - D3C31A3F15BD8DED008ED271 /* hangup_default_landscape.png in Resources */, - D3C31A4115BD8DED008ED271 /* hangup_over_landscape.png in Resources */, - D3C31A4315BD8DED008ED271 /* micro_off_default_landscape.png in Resources */, - D3C31A4515BD8DED008ED271 /* micro_off_disabled_landscape.png in Resources */, - D3C31A4715BD8DED008ED271 /* micro_off_over_landscape.png in Resources */, - D3C31A4915BD8DED008ED271 /* micro_on_default_landscape.png in Resources */, - D3C31A4B15BD8DED008ED271 /* micro_on_disabled_landscape.png in Resources */, - D3C31A4D15BD8DED008ED271 /* micro_on_over_landscape.png in Resources */, - D3C31A4F15BD8DED008ED271 /* options_add_default_landscape.png in Resources */, - D3C31A5115BD8DED008ED271 /* options_add_disabled_landscape.png in Resources */, - D3C31A5315BD8DED008ED271 /* options_add_over_landscape.png in Resources */, - D3C31A5515BD8DED008ED271 /* options_default_landscape.png in Resources */, - D3C31A5715BD8DED008ED271 /* options_disabled_landscape.png in Resources */, - D3C31A5915BD8DED008ED271 /* options_over_landscape.png in Resources */, - D3C31A5B15BD8DED008ED271 /* options_selected_landscape.png in Resources */, - D3C31A5D15BD8DED008ED271 /* options_transfer_default_landscape.png in Resources */, - D3C31A5F15BD8DED008ED271 /* options_transfer_disabled_landscape.png in Resources */, - D3C31A6115BD8DED008ED271 /* options_transfer_over_landscape.png in Resources */, - D3C31A6315BD8DED008ED271 /* pause_off_default_landscape.png in Resources */, - D3C31A6515BD8DED008ED271 /* pause_off_over_landscape.png in Resources */, - D3C31A6715BD8DED008ED271 /* pause_on_default_landscape.png in Resources */, - D3C31A6915BD8DED008ED271 /* pause_on_over_landscape.png in Resources */, - D3C31A6B15BD8DED008ED271 /* speaker_off_default_landscape.png in Resources */, - D3C31A6D15BD8DED008ED271 /* speaker_off_disabled_landscape.png in Resources */, - D3C31A6F15BD8DED008ED271 /* speaker_off_over_landscape.png in Resources */, - D3C31A7115BD8DED008ED271 /* speaker_on_default_landscape.png in Resources */, - D3C31A7315BD8DED008ED271 /* speaker_on_disabled_landscape.png in Resources */, - D3C31A7515BD8DED008ED271 /* speaker_on_over_landscape.png in Resources */, - D3C31A7715BD8DED008ED271 /* statebar_background_landscape.png in Resources */, - D3C31A7915BD8DED008ED271 /* transfer_default_landscape.png in Resources */, - D3C31A7B15BD8DED008ED271 /* transfer_over_landscape.png in Resources */, - D3C31A7D15BD8DED008ED271 /* video_off_default_landscape.png in Resources */, - D3C31A7F15BD8DED008ED271 /* video_off_disabled_landscape.png in Resources */, - D3C31A8115BD8DED008ED271 /* video_off_over_landscape.png in Resources */, - D3C31A8315BD8DED008ED271 /* video_on_default_landscape.png in Resources */, - D3C31A8515BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */, - D3C31A8715BD8DED008ED271 /* video_on_over_landscape.png in Resources */, + D34BD73415C13DF40070C209 /* UICallBar.xib in Resources */, + D34BD73515C13DF40070C209 /* UICallCell.xib in Resources */, + D34BD73615C13DF40070C209 /* UIChatCell.xib in Resources */, + D34BD73715C13DF40070C209 /* UIChatRoomCell.xib in Resources */, + D34BD73815C13DF40070C209 /* UICompositeViewController.xib in Resources */, + D34BD73915C13DF40070C209 /* UIConferenceHeader.xib in Resources */, + D34BD73A15C13DF40070C209 /* UIContactCell.xib in Resources */, + D34BD73B15C13DF40070C209 /* UIContactDetailsFooter.xib in Resources */, + D34BD73C15C13DF40070C209 /* UIContactDetailsHeader.xib in Resources */, + D34BD73D15C13DF40070C209 /* UIHistoryCell.xib in Resources */, + D34BD73E15C13DF40070C209 /* UIMainBar.xib in Resources */, + D34BD73F15C13DF40070C209 /* UIStateBar.xib in Resources */, + D34BD61A15C13DB60070C209 /* accept_default.png in Resources */, + D34BD61B15C13DB60070C209 /* accept_over.png in Resources */, + D34BD61C15C13DB60070C209 /* add_call_default.png in Resources */, + D34BD61D15C13DB60070C209 /* add_call_disabled.png in Resources */, + D34BD61E15C13DB60070C209 /* add_call_over.png in Resources */, + D34BD61F15C13DB60070C209 /* add_contact_default.png in Resources */, + D34BD62015C13DB60070C209 /* add_contact_disabled.png in Resources */, + D34BD62115C13DB60070C209 /* add_contact_over.png in Resources */, + D34BD62215C13DB60070C209 /* avatar_shadow.png in Resources */, + D34BD62315C13DB60070C209 /* avatar_shadow_small.png in Resources */, + D34BD62415C13DB60070C209 /* avatar_unknown.png in Resources */, + D34BD62515C13DB60070C209 /* avatar_unknown_small.png in Resources */, + D34BD62615C13DB60070C209 /* back_default.png in Resources */, + D34BD62715C13DB60070C209 /* back_disabled.png in Resources */, + D34BD72315C13DD40070C209 /* ChatRoomViewController.xib in Resources */, + D34BD72415C13DD40070C209 /* ChatViewController.xib in Resources */, + D34BD72515C13DD40070C209 /* ConsoleViewController.xib in Resources */, + D34BD72615C13DD40070C209 /* ContactDetailsLabelViewController.xib in Resources */, + D34BD72715C13DD40070C209 /* ContactDetailsViewController.xib in Resources */, + D34BD72815C13DD40070C209 /* ContactsViewController.xib in Resources */, + D34BD72915C13DD40070C209 /* FirstLoginViewController.xib in Resources */, + D34BD72A15C13DD40070C209 /* HistoryDetailsViewController.xib in Resources */, + D34BD72B15C13DD40070C209 /* HistoryViewController.xib in Resources */, + D34BD72C15C13DD40070C209 /* InCallViewController-ipad.xib in Resources */, + D34BD72D15C13DD40070C209 /* InCallViewController.xib in Resources */, + D34BD72E15C13DD40070C209 /* IncomingCallViewController.xib in Resources */, + D34BD72F15C13DD40070C209 /* LinphoneApp.xib in Resources */, + D34BD73015C13DD40070C209 /* MoreViewController.xib in Resources */, + D34BD73115C13DD40070C209 /* PhoneMainView.xib in Resources */, + D34BD73215C13DD40070C209 /* SettingsViewController.xib in Resources */, + D34BD73315C13DD40070C209 /* WizardViewController.xib in Resources */, + D34BD62815C13DB60070C209 /* back_over.png in Resources */, + D34BD62915C13DB60070C209 /* background.png in Resources */, + D34BD62A15C13DB60070C209 /* backspace_default.png in Resources */, + D34BD62B15C13DB60070C209 /* backspace_disabled.png in Resources */, + D34BD62C15C13DB60070C209 /* backspace_over.png in Resources */, + D34BD62D15C13DB60070C209 /* button_alert_background_default.png in Resources */, + D34BD62E15C13DB60070C209 /* button_alert_background_over.png in Resources */, + D34BD62F15C13DB60070C209 /* button_background_default.png in Resources */, + D34BD63015C13DB60070C209 /* button_background_over.png in Resources */, + D34BD63115C13DB60070C209 /* call_default.png in Resources */, + D34BD63215C13DB60070C209 /* call_disabled.png in Resources */, + D34BD63315C13DB60070C209 /* call_over.png in Resources */, + D34BD63415C13DB60070C209 /* call_quality_indicator_0.png in Resources */, + D34BD63515C13DB60070C209 /* call_quality_indicator_1.png in Resources */, + D34BD63615C13DB60070C209 /* call_quality_indicator_2.png in Resources */, + D34BD63715C13DB60070C209 /* call_quality_indicator_3.png in Resources */, + D34BD63815C13DB60070C209 /* call_state_delete_default.png in Resources */, + D34BD63915C13DB60070C209 /* call_state_delete_over.png in Resources */, + D34BD63A15C13DB60070C209 /* call_state_outgoing_default.png in Resources */, + D34BD63B15C13DB60070C209 /* call_state_pause_default.png in Resources */, + D34BD63C15C13DB60070C209 /* call_state_pause_over.png in Resources */, + D34BD63D15C13DB60070C209 /* call_state_play_default.png in Resources */, + D34BD63E15C13DB60070C209 /* call_state_play_over.png in Resources */, + D34BD63F15C13DB60070C209 /* call_state_ringing_default.png in Resources */, + D34BD64015C13DB60070C209 /* call_status_incoming.png in Resources */, + D34BD64115C13DB60070C209 /* call_status_missed.png in Resources */, + D34BD64215C13DB60070C209 /* call_status_outgoing.png in Resources */, + D34BD64315C13DB60070C209 /* cancel_default.png in Resources */, + D34BD64415C13DB60070C209 /* cancel_over.png in Resources */, + D34BD64515C13DB60070C209 /* cell_call.png in Resources */, + D34BD64615C13DB60070C209 /* cell_call_first.png in Resources */, + D34BD64715C13DB60070C209 /* cell_call_first_highlight.png in Resources */, + D34BD64815C13DB60070C209 /* cell_call_highlight.png in Resources */, + D34BD64915C13DB60070C209 /* cell_conference.png in Resources */, + D34BD64A15C13DB60070C209 /* chat_add_default.png in Resources */, + D34BD64B15C13DB60070C209 /* chat_add_over.png in Resources */, + D34BD64C15C13DB60070C209 /* chat_back_default.png in Resources */, + D34BD64D15C13DB60070C209 /* chat_back_over.png in Resources */, + D34BD64E15C13DB60070C209 /* chat_bubble_incoming.9.png in Resources */, + D34BD64F15C13DB60070C209 /* chat_bubble_incoming.png in Resources */, + D34BD65015C13DB60070C209 /* chat_bubble_outgoing.9.png in Resources */, + D34BD65115C13DB60070C209 /* chat_bubble_outgoing.png in Resources */, + D34BD65215C13DB60070C209 /* chat_default.png in Resources */, + D34BD65315C13DB60070C209 /* chat_edit_default.png in Resources */, + D34BD65415C13DB60070C209 /* chat_edit_over.png in Resources */, + D34BD65515C13DB60070C209 /* chat_field.png in Resources */, + D34BD65615C13DB60070C209 /* chat_ok_default.png in Resources */, + D34BD65715C13DB60070C209 /* chat_ok_over.png in Resources */, + D34BD65815C13DB60070C209 /* chat_over.png in Resources */, + D34BD65915C13DB60070C209 /* chat_selected.png in Resources */, + D34BD65A15C13DB60070C209 /* chat_send_default.png in Resources */, + D34BD65B15C13DB60070C209 /* chat_send_disabled.png in Resources */, + D34BD65C15C13DB60070C209 /* chat_send_over.png in Resources */, + D34BD65D15C13DB60070C209 /* conference_default.png in Resources */, + D34BD65E15C13DB60070C209 /* conference_default_landscape.png in Resources */, + D34BD65F15C13DB60070C209 /* conference_over.png in Resources */, + D34BD66015C13DB60070C209 /* conference_over_landscape.png in Resources */, + D34BD66115C13DB60070C209 /* contact_back_default.png in Resources */, + D34BD66215C13DB60070C209 /* contact_back_over.png in Resources */, + D34BD66315C13DB60070C209 /* contact_bar_background.png in Resources */, + D34BD66415C13DB60070C209 /* contact_cancel_default.png in Resources */, + D34BD66515C13DB60070C209 /* contact_cancel_over.png in Resources */, + D34BD66615C13DB60070C209 /* contact_edit_default.png in Resources */, + D34BD66715C13DB60070C209 /* contact_edit_over.png in Resources */, + D34BD66815C13DB60070C209 /* contact_number.png in Resources */, + D34BD66915C13DB60070C209 /* contact_number_over.png in Resources */, + D34BD66A15C13DB60070C209 /* contact_ok_default.png in Resources */, + D34BD66B15C13DB60070C209 /* contact_ok_over.png in Resources */, + D34BD66C15C13DB60070C209 /* contacts_add_default.png in Resources */, + D34BD66D15C13DB60070C209 /* contacts_add_over.png in Resources */, + D34BD66E15C13DB60070C209 /* contacts_all_default.png in Resources */, + D34BD66F15C13DB60070C209 /* contacts_all_selected.png in Resources */, + D34BD67015C13DB60070C209 /* contacts_back_default.png in Resources */, + D34BD67115C13DB60070C209 /* contacts_back_over.png in Resources */, + D34BD67215C13DB60070C209 /* contacts_default.png in Resources */, + D34BD67315C13DB60070C209 /* contacts_linphone_default.png in Resources */, + D34BD67415C13DB70070C209 /* contacts_linphone_selected.png in Resources */, + D34BD67515C13DB70070C209 /* contacts_over.png in Resources */, + D34BD67615C13DB70070C209 /* contacts_selected.png in Resources */, + D34BD67715C13DB70070C209 /* database.sqlite in Resources */, + D34BD67815C13DB70070C209 /* decline_default.png in Resources */, + D34BD67915C13DB70070C209 /* decline_over.png in Resources */, + D34BD67A15C13DB70070C209 /* dialer_address_background.png in Resources */, + D34BD67B15C13DB70070C209 /* dialer_alt_back_default.png in Resources */, + D34BD67C15C13DB70070C209 /* dialer_alt_back_default_landscape.png in Resources */, + D34BD67D15C13DB70070C209 /* dialer_alt_back_over.png in Resources */, + D34BD67E15C13DB70070C209 /* dialer_alt_back_over_landscape.png in Resources */, + D34BD67F15C13DB70070C209 /* dialer_alt_background.png in Resources */, + D34BD68015C13DB70070C209 /* dialer_alt_default.png in Resources */, + D34BD68115C13DB70070C209 /* dialer_alt_default_landscape.png in Resources */, + D34BD68215C13DB70070C209 /* dialer_alt_over.png in Resources */, + D34BD68315C13DB70070C209 /* dialer_alt_over_landscape.png in Resources */, + D34BD68415C13DB70070C209 /* dialer_default.png in Resources */, + D34BD68515C13DB70070C209 /* dialer_over.png in Resources */, + D34BD68615C13DB70070C209 /* dialer_selected.png in Resources */, + D34BD68715C13DB70070C209 /* field_background.png in Resources */, + D34BD68815C13DB70070C209 /* hangup_default.png in Resources */, + D34BD68915C13DB70070C209 /* hangup_default_landscape.png in Resources */, + D34BD68A15C13DB70070C209 /* hangup_over.png in Resources */, + D34BD68B15C13DB70070C209 /* hangup_over_landscape.png in Resources */, + D34BD68C15C13DB70070C209 /* header_conference.png in Resources */, + D34BD68D15C13DB70070C209 /* header_incoming.png in Resources */, + D34BD68E15C13DB70070C209 /* history_all_default.png in Resources */, + D34BD68F15C13DB70070C209 /* history_all_selected.png in Resources */, + D34BD69015C13DB70070C209 /* history_default.png in Resources */, + D34BD69115C13DB70070C209 /* history_details_add_default.png in Resources */, + D34BD69215C13DB70070C209 /* history_details_add_over.png in Resources */, + D34BD69315C13DB70070C209 /* history_details_back_default.png in Resources */, + D34BD69415C13DB70070C209 /* history_details_back_over.png in Resources */, + D34BD69515C13DB70070C209 /* history_edit_default.png in Resources */, + D34BD69615C13DB70070C209 /* history_edit_over.png in Resources */, + D34BD69715C13DB70070C209 /* history_missed_default.png in Resources */, + D34BD69815C13DB70070C209 /* history_missed_selected.png in Resources */, + D34BD69915C13DB70070C209 /* history_notification.png in Resources */, + D34BD69A15C13DB70070C209 /* history_ok_default.png in Resources */, + D34BD69B15C13DB70070C209 /* history_ok_over.png in Resources */, + D34BD69C15C13DB70070C209 /* history_over.png in Resources */, + D34BD69D15C13DB70070C209 /* history_selected.png in Resources */, + D34BD69E15C13DB70070C209 /* led_connected.png in Resources */, + D34BD69F15C13DB70070C209 /* led_disconnected.png in Resources */, + D34BD6A015C13DB70070C209 /* led_error.png in Resources */, + D34BD6A115C13DB70070C209 /* led_inprogress.png in Resources */, + D34BD6A215C13DB70070C209 /* linphone-banner.png in Resources */, + D34BD6A415C13DB70070C209 /* linphone_icon_57.png in Resources */, + D34BD6A515C13DB70070C209 /* linphone_icon_72.png in Resources */, + D34BD6A615C13DB70070C209 /* linphonerc in Resources */, + D34BD6A715C13DB70070C209 /* linphonerc-ipad in Resources */, + D34BD6A815C13DB70070C209 /* list_delete_default.png in Resources */, + D34BD6A915C13DB70070C209 /* list_delete_over.png in Resources */, + D34BD6AA15C13DB70070C209 /* list_details_default.png in Resources */, + D34BD6AB15C13DB70070C209 /* list_details_over.png in Resources */, + D34BD6AC15C13DB70070C209 /* micro_off_default.png in Resources */, + D34BD6AD15C13DB70070C209 /* micro_off_default_landscape.png in Resources */, + D34BD6AE15C13DB70070C209 /* micro_off_disabled.png in Resources */, + D34BD6AF15C13DB70070C209 /* micro_off_disabled_landscape.png in Resources */, + D34BD6B015C13DB70070C209 /* micro_off_over.png in Resources */, + D34BD6B115C13DB70070C209 /* micro_off_over_landscape.png in Resources */, + D34BD6B215C13DB70070C209 /* micro_on_default.png in Resources */, + D34BD6B315C13DB70070C209 /* micro_on_default_landscape.png in Resources */, + D34BD6B415C13DB70070C209 /* micro_on_disabled.png in Resources */, + D34BD6B515C13DB70070C209 /* micro_on_disabled_landscape.png in Resources */, + D34BD6B615C13DB70070C209 /* micro_on_over.png in Resources */, + D34BD6B715C13DB70070C209 /* micro_on_over_landscape.png in Resources */, + D34BD6B815C13DB70070C209 /* numpad_eight_default.png in Resources */, + D34BD6B915C13DB70070C209 /* numpad_eight_over.png in Resources */, + D34BD6BA15C13DB70070C209 /* numpad_five_default.png in Resources */, + D34BD6BB15C13DB70070C209 /* numpad_five_over.png in Resources */, + D34BD6BC15C13DB70070C209 /* numpad_four_default.png in Resources */, + D34BD6BD15C13DB70070C209 /* numpad_four_over.png in Resources */, + D34BD6BE15C13DB70070C209 /* numpad_nine_default.png in Resources */, + D34BD6BF15C13DB70070C209 /* numpad_nine_over.png in Resources */, + D34BD6C015C13DB70070C209 /* numpad_one_default.png in Resources */, + D34BD6C115C13DB70070C209 /* numpad_one_over.png in Resources */, + D34BD6C215C13DB70070C209 /* numpad_seven_default.png in Resources */, + D34BD6C315C13DB70070C209 /* numpad_seven_over.png in Resources */, + D34BD6C415C13DB70070C209 /* numpad_sharp_default.png in Resources */, + D34BD6C515C13DB70070C209 /* numpad_sharp_over.png in Resources */, + D34BD6C615C13DB70070C209 /* numpad_six_default.png in Resources */, + D34BD6C715C13DB70070C209 /* numpad_six_over.png in Resources */, + D34BD6C815C13DB70070C209 /* numpad_star_default.png in Resources */, + D34BD6C915C13DB70070C209 /* numpad_star_over.png in Resources */, + D34BD6CA15C13DB70070C209 /* numpad_three_default.png in Resources */, + D34BD6CB15C13DB70070C209 /* numpad_three_over.png in Resources */, + D34BD6CC15C13DB70070C209 /* numpad_two_default.png in Resources */, + D34BD6CD15C13DB70070C209 /* numpad_two_over.png in Resources */, + D34BD6CE15C13DB70070C209 /* numpad_zero_default.png in Resources */, + D34BD6CF15C13DB70070C209 /* numpad_zero_over.png in Resources */, + D34BD6D015C13DB70070C209 /* oldphone-mono-30s.caf in Resources */, + D34BD6D115C13DB70070C209 /* oldphone-mono.wav in Resources */, + D34BD6D215C13DB70070C209 /* options_add_default.png in Resources */, + D34BD6D315C13DB70070C209 /* options_add_default_landscape.png in Resources */, + D34BD6D415C13DB70070C209 /* options_add_disabled.png in Resources */, + D34BD6D515C13DB70070C209 /* options_add_disabled_landscape.png in Resources */, + D34BD6D615C13DB70070C209 /* options_add_over.png in Resources */, + D34BD6D715C13DB70070C209 /* options_add_over_landscape.png in Resources */, + D34BD6D815C13DB70070C209 /* options_default.png in Resources */, + D34BD6D915C13DB70070C209 /* options_default_landscape.png in Resources */, + D34BD6DA15C13DB70070C209 /* options_disabled.png in Resources */, + D34BD6DB15C13DB70070C209 /* options_disabled_landscape.png in Resources */, + D34BD6DC15C13DB70070C209 /* options_over.png in Resources */, + D34BD6DD15C13DB70070C209 /* options_over_landscape.png in Resources */, + D34BD6DE15C13DB70070C209 /* options_selected.png in Resources */, + D34BD6DF15C13DB70070C209 /* options_selected_landscape.png in Resources */, + D34BD6E015C13DB70070C209 /* options_transfer_default.png in Resources */, + D34BD6E115C13DB70070C209 /* options_transfer_default_landscape.png in Resources */, + D34BD6E215C13DB70070C209 /* options_transfer_disabled.png in Resources */, + D34BD6E315C13DB70070C209 /* options_transfer_disabled_landscape.png in Resources */, + D34BD6E415C13DB70070C209 /* options_transfer_over.png in Resources */, + D34BD6E515C13DB70070C209 /* options_transfer_over_landscape.png in Resources */, + D34BD6E615C13DB70070C209 /* pause_off_default.png in Resources */, + D34BD6E715C13DB70070C209 /* pause_off_default_landscape.png in Resources */, + D34BD6E815C13DB70070C209 /* pause_off_over.png in Resources */, + D34BD6E915C13DB70070C209 /* pause_off_over_landscape.png in Resources */, + D34BD6EA15C13DB70070C209 /* pause_on_default.png in Resources */, + D34BD6EB15C13DB70070C209 /* pause_on_default_landscape.png in Resources */, + D34BD6EC15C13DB70070C209 /* pause_on_over.png in Resources */, + D34BD6ED15C13DB70070C209 /* pause_on_over_landscape.png in Resources */, + D34BD6EE15C13DB70070C209 /* ringback.wav in Resources */, + D34BD6EF15C13DB70070C209 /* rootca.pem in Resources */, + D34BD6F015C13DB70070C209 /* security_ko.png in Resources */, + D34BD6F115C13DB70070C209 /* security_ok.png in Resources */, + D34BD6F215C13DB70070C209 /* security_pending.png in Resources */, + D34BD6F315C13DB70070C209 /* settings_default.png in Resources */, + D34BD6F415C13DB70070C209 /* settings_over.png in Resources */, + D34BD6F515C13DB70070C209 /* settings_selected.png in Resources */, + D34BD6F615C13DB70070C209 /* setup_back_default.png in Resources */, + D34BD6F715C13DB70070C209 /* setup_back_disabled.png in Resources */, + D34BD6F815C13DB70070C209 /* setup_back_over.png in Resources */, + D34BD6F915C13DB70070C209 /* setup_cancel_default.png in Resources */, + D34BD6FA15C13DB70070C209 /* setup_cancel_disabled.png in Resources */, + D34BD6FB15C13DB70070C209 /* setup_cancel_over.png in Resources */, + D34BD6FC15C13DB70070C209 /* setup_start_default.png in Resources */, + D34BD6FD15C13DB70070C209 /* setup_start_disabled.png in Resources */, + D34BD6FE15C13DB70070C209 /* setup_start_over.png in Resources */, + D34BD6FF15C13DB70070C209 /* setup_title_assistant.png in Resources */, + D34BD70015C13DB70070C209 /* setup_welcome_logo.png in Resources */, + D34BD70115C13DB70070C209 /* speaker_off_default.png in Resources */, + D34BD70215C13DB70070C209 /* speaker_off_default_landscape.png in Resources */, + D34BD70315C13DB70070C209 /* speaker_off_disabled.png in Resources */, + D34BD70415C13DB70070C209 /* speaker_off_disabled_landscape.png in Resources */, + D34BD70515C13DB70070C209 /* speaker_off_over.png in Resources */, + D34BD70615C13DB70070C209 /* speaker_off_over_landscape.png in Resources */, + D34BD70715C13DB70070C209 /* speaker_on_default.png in Resources */, + D34BD70815C13DB70070C209 /* speaker_on_default_landscape.png in Resources */, + D34BD70915C13DB70070C209 /* speaker_on_disabled.png in Resources */, + D34BD70A15C13DB70070C209 /* speaker_on_disabled_landscape.png in Resources */, + D34BD70B15C13DB70070C209 /* speaker_on_over.png in Resources */, + D34BD70C15C13DB70070C209 /* speaker_on_over_landscape.png in Resources */, + D34BD70D15C13DB70070C209 /* statebar_background.png in Resources */, + D34BD70E15C13DB70070C209 /* statebar_background_landscape.png in Resources */, + D34BD70F15C13DB70070C209 /* switch_camera_default.png in Resources */, + D34BD71015C13DB70070C209 /* switch_camera_over.png in Resources */, + D34BD71115C13DB70070C209 /* toy-mono.wav in Resources */, + D34BD71215C13DB70070C209 /* transfer_call_default.png in Resources */, + D34BD71315C13DB70070C209 /* transfer_call_disabled.png in Resources */, + D34BD71415C13DB70070C209 /* transfer_call_over.png in Resources */, + D34BD71515C13DB70070C209 /* transfer_default_landscape.png in Resources */, + D34BD71615C13DB70070C209 /* transfer_over_landscape.png in Resources */, + D34BD71715C13DB70070C209 /* video_off_default.png in Resources */, + D34BD71815C13DB70070C209 /* video_off_default_landscape.png in Resources */, + D34BD71915C13DB70070C209 /* video_off_disabled.png in Resources */, + D34BD71A15C13DB70070C209 /* video_off_disabled_landscape.png in Resources */, + D34BD71B15C13DB70070C209 /* video_off_over.png in Resources */, + D34BD71C15C13DB70070C209 /* video_off_over_landscape.png in Resources */, + D34BD71D15C13DB70070C209 /* video_on_default.png in Resources */, + D34BD71E15C13DB70070C209 /* video_on_default_landscape.png in Resources */, + D34BD71F15C13DB70070C209 /* video_on_disabled.png in Resources */, + D34BD72015C13DB70070C209 /* video_on_disabled_landscape.png in Resources */, + D34BD72115C13DB70070C209 /* video_on_over.png in Resources */, + D34BD72215C13DB70070C209 /* video_on_over_landscape.png in Resources */, + D34BD74015C13E110070C209 /* InAppSettings.bundle in Resources */, + D34BD74115C13E250070C209 /* Localizable.strings in Resources */, + D34BD74215C13E350070C209 /* untitled.plist in Resources */, + D34BD74315C13ED70070C209 /* DialerViewController.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3487,6 +3523,11 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + D34BD61315C139D90070C209 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = NinePatch; + targetProxy = D34BD61215C139D90070C209 /* PBXContainerItemProxy */; + }; D389363415A6D3EB00A3A3AA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = NinePatch; @@ -3537,7 +3578,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - "NinePatch//**", + NinePatch, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3609,7 +3650,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - "NinePatch//**", + NinePatch, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3638,7 +3679,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = ( "$(ARCHS_STANDARD_32_BIT)", - arm6, + armv6, ); CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; @@ -3651,6 +3692,7 @@ IN_LINPHONE, VIDEO_ENABLED, ); + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, @@ -3661,6 +3703,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, + NinePatch, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3671,10 +3714,9 @@ ); ORDER_FILE = ""; OTHER_LDFLAGS = ( - "-l", - linphone, - "-l", - mediastreamer, + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; PROVISIONING_PROFILE = ""; @@ -3690,7 +3732,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = ( "$(ARCHS_STANDARD_32_BIT)", - arm6, + armv6, ); CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; @@ -3703,6 +3745,7 @@ IN_LINPHONE, VIDEO_ENABLED, ); + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, @@ -3713,6 +3756,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, + NinePatch, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3723,10 +3767,9 @@ ); ORDER_FILE = ""; OTHER_LDFLAGS = ( - "-l", - linphone, - "-l", - mediastreamer, + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; PROVISIONING_PROFILE = ""; @@ -3742,7 +3785,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = ( "$(ARCHS_STANDARD_32_BIT)", - arm6, + armv6, ); CODE_SIGN_ENTITLEMENTS = untitled.plist; CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; @@ -3756,6 +3799,7 @@ IN_LINPHONE, VIDEO_ENABLED, ); + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, @@ -3766,6 +3810,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, + NinePatch, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3776,10 +3821,9 @@ ); ORDER_FILE = ""; OTHER_LDFLAGS = ( - "-l", - linphone, - "-l", - mediastreamer, + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; PROVISIONING_PROFILE = "075921BC-C7D8-42E1-B864-F05FD9BF841C"; @@ -3795,7 +3839,7 @@ ALWAYS_SEARCH_USER_PATHS = NO; ARCHS = ( "$(ARCHS_STANDARD_32_BIT)", - arm6, + armv6, ); CODE_SIGN_ENTITLEMENTS = untitled.plist; CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; @@ -3809,6 +3853,7 @@ IN_LINPHONE, VIDEO_ENABLED, ); + GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, @@ -3819,6 +3864,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, + NinePatch, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3829,10 +3875,9 @@ ); ORDER_FILE = ""; OTHER_LDFLAGS = ( - "-l", - linphone, - "-l", - mediastreamer, + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; PROVISIONING_PROFILE = "7EBE410C-11B9-4346-9977-2C3BEE43ED16"; @@ -3891,7 +3936,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - "NinePatch//**", + NinePatch, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3964,7 +4009,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - "NinePatch//**", + NinePatch, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; From 314f102fb62b80e8e05d2aea75ab01e36ff80193 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 26 Jul 2012 12:49:35 +0200 Subject: [PATCH 076/397] Hide optionView & padView on InCall View appear --- Classes/LinphoneUI/UICallBar.m | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 5662cebf0..87dc2ac1d 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -198,10 +198,6 @@ [(UIButton*) [landscapeView viewWithTag:[dialerButton tag]] setImage:[UIImage imageNamed:@"dialer_alt_back_over_landscape.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; - - - [optionsView setHidden:TRUE]; - [padView setHidden:TRUE]; } - (void)viewWillAppear:(BOOL)animated { @@ -215,6 +211,8 @@ LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; [self callUpdate:call state:state]; + [optionsView setHidden:TRUE]; + [padView setHidden:TRUE]; } - (void)viewWillDisappear:(BOOL)animated { From 9beac1aa79b2fc794aba4cf427137876b0903bfc Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 26 Jul 2012 15:39:36 +0200 Subject: [PATCH 077/397] Update linphone --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 179727a5f..771cff425 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 179727a5f65c4f9043b8534e59be8ecf508073ad +Subproject commit 771cff42526e5758e1a16f1faf1bcc87549a7f96 From 597a2fd7b44e4a2074a04156336d316814e3baa8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 26 Jul 2012 16:18:43 +0200 Subject: [PATCH 078/397] Update linphone & fix missed status --- Classes/LinphoneUI/UIHistoryCell.m | 2 +- submodules/linphone | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/LinphoneUI/UIHistoryCell.m b/Classes/LinphoneUI/UIHistoryCell.m index 8b2730618..4f7387b44 100644 --- a/Classes/LinphoneUI/UIHistoryCell.m +++ b/Classes/LinphoneUI/UIHistoryCell.m @@ -103,7 +103,7 @@ LinphoneAddress* addr; UIImage *image; if (callLog->dir == LinphoneCallIncoming) { - if (callLog->status == LinphoneCallSuccess) { + if (callLog->status != LinphoneCallMissed) { image = [UIImage imageNamed:@"call_status_incoming.png"]; } else { image = [UIImage imageNamed:@"call_status_missed.png"]; diff --git a/submodules/linphone b/submodules/linphone index 771cff425..14fc5446d 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 771cff42526e5758e1a16f1faf1bcc87549a7f96 +Subproject commit 14fc5446d03d5cf7a62e8884fa99fd7bbe175ecb From 173adff74f8ce5b10686e7d0a1e377ac0835834e Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 26 Jul 2012 19:10:20 +0200 Subject: [PATCH 079/397] Customize Settings view colors --- Classes/HistoryDetailsViewController.xib | 14 +-- Classes/LinphoneUI/UILinphone.h | 3 + Classes/SettingsViewController.m | 114 ++++++++++++++++--- Classes/SettingsViewController.xib | 88 ++++++++------ Resources/history_details_bar_background.png | Bin 0 -> 161 bytes Resources/settings_bar_background.png | Bin 0 -> 161 bytes linphone.xcodeproj/project.pbxproj | 12 ++ 7 files changed, 174 insertions(+), 57 deletions(-) create mode 100644 Resources/history_details_bar_background.png create mode 100644 Resources/settings_bar_background.png diff --git a/Classes/HistoryDetailsViewController.xib b/Classes/HistoryDetailsViewController.xib index 7deedb7e5..6e340bd86 100644 --- a/Classes/HistoryDetailsViewController.xib +++ b/Classes/HistoryDetailsViewController.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -53,7 +53,7 @@ IBCocoaTouchFramework NSImage - contact_bar_background.png + history_details_bar_background.png @@ -896,12 +896,12 @@ {131, 131} {550, 101} {550, 101} - {5, 117} {320, 117} {320, 117} {320, 117} {320, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h index 42fc6c2ba..8b84d01f5 100644 --- a/Classes/LinphoneUI/UILinphone.h +++ b/Classes/LinphoneUI/UILinphone.h @@ -20,6 +20,9 @@ #ifndef UILINPHONE_H #define UILINPHONE_H + +#define LINPHONE_MAIN_COLOR [UIColor colorWithRed:207.0f/255.0f green:76.0f/255.0f blue:41.0f/255.0f alpha:1.0f] #define LINPHONE_TABLE_CELL_BACKGROUND_COLOR [UIColor colorWithRed:207.0f/255.0f green:76.0f/255.0f blue:41.0f/255.0f alpha:1.0f] + #endif diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 69f5085d6..6aa413b11 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -19,6 +19,105 @@ #import "SettingsViewController.h" #import "LinphoneManager.h" +#import "UILinphone.h" + +static void removeTableBackground(UIView* view) { + if([view isKindOfClass:[UITableView class]]) { + [view setBackgroundColor:[UIColor clearColor]]; + } + for(UIView *subview in [view subviews]) { + removeTableBackground(subview); + } +} + +@interface UINavigationBarEx: UINavigationBar { + +} +@end + +@implementation UINavigationBarEx + + +#pragma mark - Lifecycle Functions + +- (void)initUINavigationBarEx { + [self setTintColor:LINPHONE_MAIN_COLOR]; +} + +- (id)init { + self = [super init]; + if (self) { + [self initUINavigationBarEx]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + if (self) { + [self initUINavigationBarEx]; + } + return self; +} + +- (id)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initUINavigationBarEx]; + } + return self; +} + +- (void)drawRect:(CGRect)rect { + UIImage *img = [UIImage imageNamed:@"settings_bar_background.png"]; + [img drawInRect:rect]; +} + +@end + +@interface UINavigationControllerEx : UINavigationController + +@end + +@implementation UINavigationControllerEx + +- (id)initWithRootViewController:(UIViewController *)rootViewController { + removeTableBackground(rootViewController.view); + return [super initWithRootViewController:rootViewController]; +} + +- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { + removeTableBackground(viewController.view); + + UILabel *labelTitleView = [[UILabel alloc] init]; + labelTitleView.backgroundColor = [UIColor clearColor]; + labelTitleView.textColor = [UIColor colorWithRed:0x41/255.0f green:0x48/255.0f blue:0x4f/255.0f alpha:1.0]; + labelTitleView.shadowColor = [UIColor colorWithWhite:1.0 alpha:0.5]; + labelTitleView.font = [UIFont boldSystemFontOfSize:20]; + labelTitleView.shadowOffset = CGSizeMake(0,1); + labelTitleView.textAlignment = UITextAlignmentCenter; + labelTitleView.text = viewController.navigationItem.title; + [labelTitleView sizeToFit]; + viewController.navigationItem.titleView = labelTitleView; + + [super pushViewController:viewController animated:animated]; +} + +- (void)setViewControllers:(NSArray *)viewControllers { + for(UIViewController *controller in viewControllers) { + removeTableBackground(controller.view); + } + [super setViewControllers:viewControllers]; +} + +- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated { + for(UIViewController *controller in viewControllers) { + removeTableBackground(controller.view); + } + [super setViewControllers:viewControllers animated:animated]; +} + +@end @implementation SettingsViewController @@ -59,17 +158,6 @@ static UICompositeViewDescription *compositeDescription = nil; } -#pragma mark - - -+ (void)removeBackground:(UIView*)view { - if([view isKindOfClass:[UITableView class]]) { - [view setBackgroundColor:[UIColor clearColor]]; - } - for(UIView *subview in [view subviews]) { - [SettingsViewController removeBackground:subview]; - } -} - #pragma mark - ViewController Functions - (void)viewDidLoad { @@ -82,8 +170,8 @@ static UICompositeViewDescription *compositeDescription = nil; settingsController.settingsStore = [[LinphoneManager instance] settingsStore]; navigationController.view.frame = self.view.frame; - [SettingsViewController removeBackground:navigationController.view]; - [SettingsViewController removeBackground:settingsController.view]; + removeTableBackground(navigationController.view); + [navigationController pushViewController:settingsController animated:FALSE]; [self.view addSubview: navigationController.view]; } diff --git a/Classes/SettingsViewController.xib b/Classes/SettingsViewController.xib index 4d1cbfb30..9c69905bb 100644 --- a/Classes/SettingsViewController.xib +++ b/Classes/SettingsViewController.xib @@ -3,20 +3,20 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUINavigationBar - IBUINavigationItem - IBUIViewController - IBUIView - IBUINavigationController IBProxyObject + IBUINavigationBar + IBUINavigationController + IBUINavigationItem + IBUIView + IBUIViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -48,6 +48,20 @@ IBCocoaTouchFramework + + NO + + Settings + IBCocoaTouchFramework + + + + 1 + 1 + + IBCocoaTouchFramework + NO + @@ -67,24 +81,7 @@ YES IBCocoaTouchFramework - - - NO - - - Settings - IBCocoaTouchFramework - - - - - 1 - 1 - - IBCocoaTouchFramework - NO - - + @@ -97,14 +94,6 @@ 9 - - - settingsController - - - - 8 - navigationController @@ -113,12 +102,20 @@ 15 + + + settingsController + + + + 8 + 0 - + @@ -144,7 +141,6 @@ - navigationController @@ -161,7 +157,7 @@ - + settingsController @@ -177,7 +173,9 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UINavigationControllerEx com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UINavigationBarEx com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -233,6 +231,22 @@ ./Classes/SettingsViewController.h + + UINavigationBarEx + UINavigationBar + + IBProjectSource + ./Classes/UINavigationBarEx.h + + + + UINavigationControllerEx + UINavigationController + + IBProjectSource + ./Classes/UINavigationControllerEx.h + + 0 @@ -243,6 +257,6 @@ YES 3 - 1181 + 1498 diff --git a/Resources/history_details_bar_background.png b/Resources/history_details_bar_background.png new file mode 100644 index 0000000000000000000000000000000000000000..e3638e1976b397c669e71c428631487b600fe13e GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^tUz4K!2~2Z_4gEmr~;2jAk8fd!i)^F=12eq*-Jcq zUD@xjb8+$VX`9TE0SY;Ix;TbdoKF7p|Gz!6P(qRe>*7CwcBVgdST0F(cfOn$^x0#o ze8y*uQ2QHS`gf%#TxQ;T*?R5U#SymKSBR)Sm1em7dBT_DR>iJBvlu*G{an^LB{Ts5 D?eH-_ literal 0 HcmV?d00001 diff --git a/Resources/settings_bar_background.png b/Resources/settings_bar_background.png new file mode 100644 index 0000000000000000000000000000000000000000..e3638e1976b397c669e71c428631487b600fe13e GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^tUz4K!2~2Z_4gEmr~;2jAk8fd!i)^F=12eq*-Jcq zUD@xjb8+$VX`9TE0SY;Ix;TbdoKF7p|Gz!6P(qRe>*7CwcBVgdST0F(cfOn$^x0#o ze8y*uQ2QHS`gf%#TxQ;T*?R5U#SymKSBR)Sm1em7dBT_DR>iJBvlu*G{an^LB{Ts5 D?eH-_ literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index d1eef5517..b018832b9 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -666,6 +666,10 @@ D3A8BB7F15A6CC3200F96BE5 /* setup_back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */; }; D3A8BB8115A6CC3200F96BE5 /* setup_cancel_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */; }; D3A8BB8315A6CC3200F96BE5 /* setup_start_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */; }; + D3B82A0215C18A710036C93E /* history_details_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0015C18A710036C93E /* history_details_bar_background.png */; }; + D3B82A0315C18A710036C93E /* history_details_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0015C18A710036C93E /* history_details_bar_background.png */; }; + D3B82A0415C18A710036C93E /* settings_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0115C18A710036C93E /* settings_bar_background.png */; }; + D3B82A0515C18A710036C93E /* settings_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0115C18A710036C93E /* settings_bar_background.png */; }; D3B9A3DF15A58C450096EA4E /* chat_field.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DA15A58C440096EA4E /* chat_field.png */; }; D3B9A3E115A58C450096EA4E /* chat_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */; }; D3B9A3E315A58C450096EA4E /* chat_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */; }; @@ -1412,6 +1416,8 @@ D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_back_disabled.png; path = Resources/setup_back_disabled.png; sourceTree = ""; }; D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_cancel_disabled.png; path = Resources/setup_cancel_disabled.png; sourceTree = ""; }; D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_start_disabled.png; path = Resources/setup_start_disabled.png; sourceTree = ""; }; + D3B82A0015C18A710036C93E /* history_details_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_details_bar_background.png; path = Resources/history_details_bar_background.png; sourceTree = ""; }; + D3B82A0115C18A710036C93E /* settings_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_bar_background.png; path = Resources/settings_bar_background.png; sourceTree = ""; }; D3B9A3DA15A58C440096EA4E /* chat_field.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_field.png; path = Resources/chat_field.png; sourceTree = ""; }; D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_ok_default.png; path = Resources/chat_ok_default.png; sourceTree = ""; }; D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_ok_over.png; path = Resources/chat_ok_over.png; sourceTree = ""; }; @@ -2343,6 +2349,7 @@ D3157A8915B4466F00DD8C4C /* history_details_add_over.png */, D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */, D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */, + D3B82A0015C18A710036C93E /* history_details_bar_background.png */, D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */, D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */, D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */, @@ -2437,6 +2444,7 @@ D3D6A3A5159B0EFE005F692C /* security_ko.png */, D3D6A3A7159B0EFE005F692C /* security_ok.png */, D3D6A3A6159B0EFE005F692C /* security_pending.png */, + D3B82A0115C18A710036C93E /* settings_bar_background.png */, D38327EF1580FE3A00FA0D23 /* settings_default.png */, D38327FE158100E400FA0D23 /* settings_over.png */, D38327F01580FE3A00FA0D23 /* settings_selected.png */, @@ -3032,6 +3040,8 @@ D3C31A8215BD8DED008ED271 /* video_on_default_landscape.png in Resources */, D3C31A8415BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */, D3C31A8615BD8DED008ED271 /* video_on_over_landscape.png in Resources */, + D3B82A0215C18A710036C93E /* history_details_bar_background.png in Resources */, + D3B82A0415C18A710036C93E /* settings_bar_background.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3336,6 +3346,8 @@ D34BD74115C13E250070C209 /* Localizable.strings in Resources */, D34BD74215C13E350070C209 /* untitled.plist in Resources */, D34BD74315C13ED70070C209 /* DialerViewController.xib in Resources */, + D3B82A0315C18A710036C93E /* history_details_bar_background.png in Resources */, + D3B82A0515C18A710036C93E /* settings_bar_background.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From de9ebfb8b0a543a71f5e908902f878852923788a Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 27 Jul 2012 09:16:51 +0200 Subject: [PATCH 080/397] Fix landscape dial alt back --- .../dialer_alt_back_default_landscape.png | Bin 6970 -> 6765 bytes Resources/dialer_alt_back_over_landscape.png | Bin 5124 -> 4949 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Resources/dialer_alt_back_default_landscape.png b/Resources/dialer_alt_back_default_landscape.png index b662db31f2d01fd30b19642139f999b9e85f72e1..9adc1d2a5ff11c0e8762cd5a473c7e9b1a0bcf23 100644 GIT binary patch delta 5947 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 RlM?(_IvV=Ok7{<&{|C8K79#)v delta 6167 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 KehtAP;y(cFhHY#B delta 4327 zcmaJ=XE@u9+l^RJMeI-`_Gl>*Ta8H6td*u#%?GufqOHx(R;w|KqGqctwQJR;F{-MH z3R-H-gzE6Ss^Fxpy*3bL{oStW#w zveI8DDj<}#wUu?!gTOrhV?zI*rUtM*TwV!<(MHN5WD#;Q3QDrFN?HnNv@8OtjFv~q z%Oa8K3Y1}hH-^y;1cD;<&|27lDaY2!Rb|TN@c2~IMGeXxeGYgOWj_;zZ)zx>iUFxcJsX@Jn#GaUO}hJ#spV!LSz_28TV2`v*i7LKR>hih+RUN+Vk!3~W) zKi-Y{ZBWFIk#;y$X-;$8mbvKgXRiWB3{1naoq>#L6< z0=9Zhm8s`B|BSe!od)1?yicoK-s);E(e$^0K7aMt0*z|t(h1J z2;3#rShe&=#YDmbL9NAdpR_E2f5Q8!RrhId=nLC~a`txq=$qY76(&;7vw?Mw6@@z+ z+4ggCH28Io@}+LErabLq9vyGm?%&=@lx1+8H=pVW@$e91n;#rc-I7j?bS1vk$BXOV z6JLM$_adKOiI{D3h;VpW@Q-t zJUYPHaKK1#!^O|BZoY8T5DV;b=?gjVyZ4a-8bd=9`98LFC)PqDgjosLMl$7+gP*6< zdp@#C?cNGB_Ib2kB&FFskEPeP-m~XO;mou2q_l;{bq`@KKjOb$7Ixc=DgE27m*GqX zKb=<)C@UWGXZAvW3JHbfh4%#6JW>d_E-EJj>&cmx{rz%UjrRLClbNR+LZeF z)4*`&C&D0zJ8&+_ohDfY29|$E;bvt2oSkO00!BSL+c6g_AtY2?K#5FZA9JK}sa@M$8Mu$7o#VcBc0>~C>1eEyQBlBdkA;wioR5$G{0hfV zeAl#67ndxh@CRWsne7%rXha2kYI8T);y^>bzCo5)A5i~~{+_psN|E!(othgNzt37M z#h<~EfG+MKcPN&-2Y!c-Eir!U7i%Vj$V=({%zXjuxm<|`l*8YMA2$O%ovzv_;#Fme zNET6XuMrXENCM+XoZr(AdGnDFwy!p_G2WLe!#ruh-`JEvL|&AY;{oSpMnf zj5f~b_@$EZ-NA>g8BC79DJLhc7NTbxA1*3~k7Pq0w7X$_s!M_uM_^%$lZGEx$+9;W=Gs3 zYpRn2NTyX^;ZACPEPS1YJ2`50;?4Nn(6`k9V}HU?lF<~0pso!XdK=&h)%9VBr<9bV ze;kVjs|n4#g)i!TeaG$Tvo<8g4qbC(bkR`3sEL*Q`*C=Wvq=}=aT4B7_?>v zf*vODmB#(Nu=gw53gg_+mmzIikWX(EOgkJ;*++d3s`QFfX>A^AbHHvbr>pUf;_MGr zXO^^~^!U%mC%*(s^fRvt**=CTaY3n?0Zt`>{FpvzNo)!={(2#ng{?ZVGpH}ak z7t2oW>u+Qc_cEELU%T;;?)Pai5GFfFr!kgXqQmwAd+l6v=La6_7;7NVcFN84?rN`MaLU zv-~CUJf%f9qxkj7>Ie6b?=uK|q-F#oj_;YB4}tUnSsRs@_K4IPO7e02lowOtSvRBI zXn|IKy_Yn|Y(%h|xAJF$g&n=Dl{oj$9Oo7cy!=oDFEA&TVfylWVL;nELT+yY<^!$i zluvkdA7dcNoKvd*F%x7=BA?&9*_d8J+_|Ln{5TqikG)&X=GQP-TWr>^PdhAP|Avx% zEg~V3=7=>fxvRal_C9(^fZYPd!+kB27RyJ$cKd7g{nH~}a9yo2Dg$;sx^U1PXr_vF zZlmO_rADDaB_pdWb#i$rh1Y@n|3i>r#?`X(?E=kc4BU-3U{T_ zME@x{QA-5Z4^hlAp_&?FLMjEl{`Ih|ylp>AS1mAfM`{HO(6}_da7cCk7`@MVfsWgH z*&&zpdwfs(4ajQ@bQWcc2NVyuokMI?r^N~pL!UiR1rhDVN7}+Ht$T*%4u}^YxVN^{ zC{(oq-NN251P(a1y|}Toq+SF}jzOo6&A2&+qd2S9fiH6t!dXH2JT21uZEq>HAEcv^ zQ#?~}`@Yojt1b!$Hof#L4Q`SP)O7ndy*+co-!r8Kp3%T4{#GcL zrwG*qa)rXPgtNUyKj300l?zyO3p*hq#?1}B0b&9_ITuM7PzPeJa6oRvFHmRsb!9kq|;KW zHb9?o<4P}8ri)KO^y%S}0m*(k;WBaR9wSPU*0(4|gkQ^h$LMv^uf5~(l*{a$Azif- zv!%FxpH&GZ>Y#a^BRGEds6t=(>B4iv+?fAv`M&}FmjGJ2;=nm;VcYfP)LcjjqTwjb z;4rdDH-aWU(oPejr-g|@=Zs|(mPYUi7Zzz^!_iUV%p$xZNMtmP)(abMmQ;4Lrq64h zOkuMj3r}zZFTZZI9R&SKKioVxX>FVho>g=TJ_;@IU!HM~35x5*xPBYSyk()$z0BNz z->GO_2FCi#_$T|$Y*ZRIT92H)pM-$9dfMbHy>(-1#7U6?Bb@Rh!Gvqcq;)?Fn|82c zUSnhHJAk(Cn;T~A*?u2Hn7EhZrzma1g8Qz$OB$HR(7SfU|TbZLKD4r+gq< z1O3Q3RuLg+%DV5noDWr{;h^l&cC3^^XqY8%6lz;XH(iCL=#?F%E~fJ8_jO;h+*YyM zjh3I06uEG)p|3KV3=>t4sCk*-@ftWm=4%-LNliE?lfQqiQTLLL_+$JQLx7AggLDI~ zZch2i;>|<{n?|pJ0FJ>aJGVO-JYy}VBAyorrKJ~u zN?mXIUAfP!55~#&D(*xXmtVH?;or;VPr944kG(z~LcL)-D4)Q`yHNK_WPp;SasZ0J zm(szst^#P1r@WldIT_d3EXwt-?R?((cZds1uNY$oF4Q^nxJ|24G@YevS|pfd09h_F zy5=)Xe<{VdVV+JL*xfC!%&~2G{B8yiLv(TRx+CeAyR_#J9vd0E5%+3Y?50rTX``;8 zGSQtX=9}xUJMX&;xty!FmJ#d~a=+oz3Pr?XuefBJrznPV@6BZ!0mKr$GLbTpEFJ!AxGgp zjj-FyP*I8P^I>u5@eO#CCKlygca{XE5KyycgM@WahqG4v%pYvAxk#+G^yEOCeD~M5 z@6LL;x_?wa^m6rlI{F+I28?`u;f$mZ;0Zg+v2k<8z@~dw-GlAgT;ehp3c_S=&jJGp zGNO4Cn$BDVB~SFW1>RwPG}$`eDisBRqGyxK#G{R9idn#-`1{ti#nVL5U=tIF2dJgS z&&%lJ`yQH@YAR?CX?hzi>uCb<8kRe>OF_g{_RtI?y$MgVl*hkQQS_sE@YP16PACDivkz&F)f7-;D7U%G6LeArwHjJya1O5wR(leAU?ma8=@wN1`I0tyBk{}T9@TQJ5sKzUG~mj_ pMICvMgYHU1A@pzj|DRTQ$&{={ai@D#cg;Y5p@+GHu0+{K{s#j;`F#KY From ee358816b79fd8f96fa99971e203f15acc49e06d Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 27 Jul 2012 11:20:09 +0200 Subject: [PATCH 081/397] Change InAppSettings place All settings with Linphone Colors --- Classes/LinphoneUI/UILinphone.h | 15 +- Classes/LinphoneUI/UILinphone.m | 52 ++ Classes/SettingsViewController.m | 159 +++++- Classes/SettingsViewController.xib | 16 +- Classes/Utils/DCRoundSwitch/DCRoundSwitch.h | 33 ++ Classes/Utils/DCRoundSwitch/DCRoundSwitch.m | 468 ++++++++++++++++++ .../DCRoundSwitch/DCRoundSwitchKnobLayer.h | 18 + .../DCRoundSwitch/DCRoundSwitchKnobLayer.m | 69 +++ .../DCRoundSwitch/DCRoundSwitchOutlineLayer.h | 16 + .../DCRoundSwitch/DCRoundSwitchOutlineLayer.m | 66 +++ .../DCRoundSwitch/DCRoundSwitchToggleLayer.h | 26 + .../DCRoundSwitch/DCRoundSwitchToggleLayer.m | 102 ++++ .../IASKAppSettingsViewController.h | 0 .../IASKAppSettingsViewController.m | 0 .../IASKAppSettingsWebViewController.h | 0 .../IASKAppSettingsWebViewController.m | 0 .../IASKSpecifierValuesViewController.h | 0 .../IASKSpecifierValuesViewController.m | 0 .../Controllers/IASKViewController.h | 0 .../Models/IASKSettingsReader.h | 0 .../Models/IASKSettingsReader.m | 0 .../Models/IASKSettingsStore.h | 0 .../Models/IASKSettingsStore.m | 0 .../Models/IASKSettingsStoreFile.h | 0 .../Models/IASKSettingsStoreFile.m | 0 .../Models/IASKSettingsStoreUserDefaults.h | 0 .../Models/IASKSettingsStoreUserDefaults.m | 0 .../InAppSettingsKit}/Models/IASKSpecifier.h | 0 .../InAppSettingsKit}/Models/IASKSpecifier.m | 0 .../Views/IASKPSSliderSpecifierViewCell.h | 0 .../Views/IASKPSSliderSpecifierViewCell.m | 0 .../Views/IASKPSTextFieldSpecifierViewCell.h | 0 .../Views/IASKPSTextFieldSpecifierViewCell.m | 0 .../Views/IASKPSTitleValueSpecifierViewCell.h | 0 .../Views/IASKPSTitleValueSpecifierViewCell.m | 0 .../InAppSettingsKit}/Views/IASKSlider.h | 0 .../InAppSettingsKit}/Views/IASKSlider.m | 0 .../InAppSettingsKit}/Views/IASKSwitch.h | 0 .../InAppSettingsKit}/Views/IASKSwitch.m | 0 .../InAppSettingsKit}/Views/IASKTextField.h | 0 .../InAppSettingsKit}/Views/IASKTextField.m | 0 linphone.xcodeproj/project.pbxproj | 301 ++++++----- 42 files changed, 1191 insertions(+), 150 deletions(-) create mode 100644 Classes/LinphoneUI/UILinphone.m create mode 100755 Classes/Utils/DCRoundSwitch/DCRoundSwitch.h create mode 100755 Classes/Utils/DCRoundSwitch/DCRoundSwitch.m create mode 100755 Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.h create mode 100755 Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.m create mode 100755 Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.h create mode 100755 Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.m create mode 100755 Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.h create mode 100755 Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.m rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Controllers/IASKAppSettingsViewController.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Controllers/IASKAppSettingsViewController.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Controllers/IASKAppSettingsWebViewController.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Controllers/IASKAppSettingsWebViewController.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Controllers/IASKSpecifierValuesViewController.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Controllers/IASKSpecifierValuesViewController.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Controllers/IASKViewController.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Models/IASKSettingsReader.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Models/IASKSettingsReader.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Models/IASKSettingsStore.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Models/IASKSettingsStore.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Models/IASKSettingsStoreFile.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Models/IASKSettingsStoreFile.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Models/IASKSettingsStoreUserDefaults.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Models/IASKSettingsStoreUserDefaults.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Models/IASKSpecifier.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Models/IASKSpecifier.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKPSSliderSpecifierViewCell.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKPSSliderSpecifierViewCell.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKPSTextFieldSpecifierViewCell.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKPSTextFieldSpecifierViewCell.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKPSTitleValueSpecifierViewCell.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKPSTitleValueSpecifierViewCell.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKSlider.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKSlider.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKSwitch.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKSwitch.m (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKTextField.h (100%) rename {InAppSettingsKit => Classes/Utils/InAppSettingsKit}/Views/IASKTextField.m (100%) diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h index 8b84d01f5..7eec97b7a 100644 --- a/Classes/LinphoneUI/UILinphone.h +++ b/Classes/LinphoneUI/UILinphone.h @@ -17,12 +17,19 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#ifndef UILINPHONE_H -#define UILINPHONE_H - +#import #define LINPHONE_MAIN_COLOR [UIColor colorWithRed:207.0f/255.0f green:76.0f/255.0f blue:41.0f/255.0f alpha:1.0f] #define LINPHONE_TABLE_CELL_BACKGROUND_COLOR [UIColor colorWithRed:207.0f/255.0f green:76.0f/255.0f blue:41.0f/255.0f alpha:1.0f] +@interface UIColor (LightAndDark) -#endif +- (UIColor *)adjustHue:(float)hm saturation:(float)sm brightness:(float)bm alpha:(float)am; + +- (UIColor *)multColor:(float)mult; + +- (UIColor *)lighterColor; + +- (UIColor *)darkerColor; + +@end \ No newline at end of file diff --git a/Classes/LinphoneUI/UILinphone.m b/Classes/LinphoneUI/UILinphone.m new file mode 100644 index 000000000..0c151bf99 --- /dev/null +++ b/Classes/LinphoneUI/UILinphone.m @@ -0,0 +1,52 @@ +/* UILinphone.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UILinphone.h" + +@implementation UIColor (LightAndDark) + +- (UIColor *)multColor:(float)mult { + float h, s, b, a; + if ([self getHue:&h saturation:&s brightness:&b alpha:&a]) + return [UIColor colorWithHue:h + saturation:s + brightness:MIN(MAX(b * mult, 0.0), 1.0) + alpha:a]; + return nil; +} + +- (UIColor *)adjustHue:(float)hm saturation:(float)sm brightness:(float)bm alpha:(float)am { + float h, s, b, a; + if ([self getHue:&h saturation:&s brightness:&b alpha:&a]) + return [UIColor colorWithHue:MIN(MAX(h + hm, 0.0), 1.0) + saturation:MIN(MAX(s + sm, 0.0), 1.0) + brightness:MIN(MAX(b + bm, 0.0), 1.0) + alpha:MIN(MAX(a + am, 0.0), 1.0)]; + return nil; +} + +- (UIColor *)lighterColor { + return [self multColor:1.3]; +} + +- (UIColor *)darkerColor { + return [self multColor:0.75]; +} + +@end \ No newline at end of file diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 6aa413b11..8580eec38 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -20,16 +20,134 @@ #import "SettingsViewController.h" #import "LinphoneManager.h" #import "UILinphone.h" +#import "UACellBackgroundView.h" -static void removeTableBackground(UIView* view) { - if([view isKindOfClass:[UITableView class]]) { - [view setBackgroundColor:[UIColor clearColor]]; - } - for(UIView *subview in [view subviews]) { - removeTableBackground(subview); - } +#import "DCRoundSwitch.h" + +#import "IASKSpecifierValuesViewController.h" +#import "IASKPSTextFieldSpecifierViewCell.h" +#import "IASKSpecifier.h" +#import "IASKTextField.h" + + +#pragma mark - IASKSwitchEx Class + +@interface IASKSwitchEx : DCRoundSwitch { + NSString *_key; } +@property (nonatomic, retain) NSString *key; + +@end + +@implementation IASKSwitchEx + +@synthesize key=_key; + +- (void)dealloc { + [_key release], _key = nil; + + [super dealloc]; +} + +@end + + +#pragma mark - IASKSpecifierValuesViewControllerEx Class + +// Patch IASKSpecifierValuesViewController +@interface IASKSpecifierValuesViewControllerEx: IASKSpecifierValuesViewController + +@end + +@implementation IASKSpecifierValuesViewControllerEx + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell * cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; + + // Background View + UACellBackgroundView *selectedBackgroundView = [[[UACellBackgroundView alloc] initWithFrame:CGRectZero] autorelease]; + cell.selectedBackgroundView = selectedBackgroundView; + [selectedBackgroundView setBackgroundColor:LINPHONE_TABLE_CELL_BACKGROUND_COLOR]; + return cell; +} + +@end + + +#pragma mark - IASKAppSettingsViewControllerEx Class + +@interface IASKAppSettingsViewController(PrivateInterface) +- (UITableViewCell*)newCellForIdentifier:(NSString*)identifier; +@end; + +@interface IASKAppSettingsViewControllerEx : IASKAppSettingsViewController + +@end + +@implementation IASKAppSettingsViewControllerEx + +- (UITableViewCell*)newCellForIdentifier:(NSString*)identifier { + UITableViewCell *cell = nil; + if ([identifier isEqualToString:kIASKPSToggleSwitchSpecifier]) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kIASKPSToggleSwitchSpecifier]; + cell.accessoryView = [[[IASKSwitchEx alloc] initWithFrame:CGRectMake(0, 0, 79, 27)] autorelease]; + [((IASKSwitchEx*)cell.accessoryView) addTarget:self action:@selector(toggledValue:) forControlEvents:UIControlEventValueChanged]; + [((IASKSwitchEx*)cell.accessoryView) setOnTintColor:LINPHONE_MAIN_COLOR]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + } else { + cell = [super newCellForIdentifier:identifier]; + } + return cell; +} + +- (void)initIASKAppSettingsViewControllerEx { + // Force kIASKSpecifierValuesViewControllerIndex + static int kIASKSpecifierValuesViewControllerIndex = 0; + _viewList = [[NSMutableArray alloc] init]; + [_viewList addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"IASKSpecifierValuesView", @"ViewName",nil]]; + [_viewList addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"IASKAppSettingsView", @"ViewName",nil]]; + + NSMutableDictionary *newItemDict = [NSMutableDictionary dictionaryWithCapacity:3]; + [newItemDict addEntriesFromDictionary: [_viewList objectAtIndex:kIASKSpecifierValuesViewControllerIndex]]; // copy the title and explain strings + + IASKSpecifierValuesViewController *targetViewController = [[IASKSpecifierValuesViewControllerEx alloc] init]; + // add the new view controller to the dictionary and then to the 'viewList' array + [newItemDict setObject:targetViewController forKey:@"viewController"]; + [_viewList replaceObjectAtIndex:kIASKSpecifierValuesViewControllerIndex withObject:newItemDict]; + [targetViewController release]; +} + +- (id)initWithStyle:(UITableViewStyle)style { + self = [super initWithStyle:style]; + if(self != nil) { + [self initIASKAppSettingsViewControllerEx]; + } + return self; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell * cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; + + if([cell isKindOfClass:[IASKPSTextFieldSpecifierViewCell class]]) { + UITextField *field = ((IASKPSTextFieldSpecifierViewCell*)cell).textField; + [field setTextColor:LINPHONE_MAIN_COLOR]; + } + + cell.detailTextLabel.textColor = LINPHONE_MAIN_COLOR; + + // Background View + UACellBackgroundView *selectedBackgroundView = [[[UACellBackgroundView alloc] initWithFrame:CGRectZero] autorelease]; + cell.selectedBackgroundView = selectedBackgroundView; + [selectedBackgroundView setBackgroundColor:LINPHONE_TABLE_CELL_BACKGROUND_COLOR]; + return cell; +} + +@end + + +#pragma mark - UINavigationBarEx Class + @interface UINavigationBarEx: UINavigationBar { } @@ -41,7 +159,7 @@ static void removeTableBackground(UIView* view) { #pragma mark - Lifecycle Functions - (void)initUINavigationBarEx { - [self setTintColor:LINPHONE_MAIN_COLOR]; + [self setTintColor:[LINPHONE_MAIN_COLOR adjustHue:5.0f/180.0f saturation:0.0f brightness:0.0f alpha:0.0f]]; } - (id)init { @@ -75,20 +193,33 @@ static void removeTableBackground(UIView* view) { @end + +#pragma mark - UINavigationControllerEx Class + @interface UINavigationControllerEx : UINavigationController @end @implementation UINavigationControllerEx ++ (void)removeTableBackground:(UIView*)view { + if([view isKindOfClass:[UITableView class]]) { + [view setBackgroundColor:[UIColor clearColor]]; + } + for(UIView *subview in [view subviews]) { + [UINavigationControllerEx removeTableBackground:subview]; + } +} + - (id)initWithRootViewController:(UIViewController *)rootViewController { - removeTableBackground(rootViewController.view); + [UINavigationControllerEx removeTableBackground:rootViewController.view]; return [super initWithRootViewController:rootViewController]; } - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { - removeTableBackground(viewController.view); + [UINavigationControllerEx removeTableBackground:viewController.view]; + [viewController viewWillAppear:FALSE]; // Force load: Load Title UILabel *labelTitleView = [[UILabel alloc] init]; labelTitleView.backgroundColor = [UIColor clearColor]; labelTitleView.textColor = [UIColor colorWithRed:0x41/255.0f green:0x48/255.0f blue:0x4f/255.0f alpha:1.0]; @@ -96,7 +227,7 @@ static void removeTableBackground(UIView* view) { labelTitleView.font = [UIFont boldSystemFontOfSize:20]; labelTitleView.shadowOffset = CGSizeMake(0,1); labelTitleView.textAlignment = UITextAlignmentCenter; - labelTitleView.text = viewController.navigationItem.title; + labelTitleView.text = viewController.title; [labelTitleView sizeToFit]; viewController.navigationItem.titleView = labelTitleView; @@ -105,20 +236,21 @@ static void removeTableBackground(UIView* view) { - (void)setViewControllers:(NSArray *)viewControllers { for(UIViewController *controller in viewControllers) { - removeTableBackground(controller.view); + [UINavigationControllerEx removeTableBackground:controller.view]; } [super setViewControllers:viewControllers]; } - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated { for(UIViewController *controller in viewControllers) { - removeTableBackground(controller.view); + [UINavigationControllerEx removeTableBackground:controller.view]; } [super setViewControllers:viewControllers animated:animated]; } @end + @implementation SettingsViewController @synthesize settingsController; @@ -170,7 +302,6 @@ static UICompositeViewDescription *compositeDescription = nil; settingsController.settingsStore = [[LinphoneManager instance] settingsStore]; navigationController.view.frame = self.view.frame; - removeTableBackground(navigationController.view); [navigationController pushViewController:settingsController animated:FALSE]; [self.view addSubview: navigationController.view]; } diff --git a/Classes/SettingsViewController.xib b/Classes/SettingsViewController.xib index 9c69905bb..f4b4552a1 100644 --- a/Classes/SettingsViewController.xib +++ b/Classes/SettingsViewController.xib @@ -51,7 +51,7 @@ NO - Settings + IBCocoaTouchFramework @@ -81,7 +81,7 @@ YES IBCocoaTouchFramework - + @@ -115,7 +115,7 @@ 0 - + @@ -179,7 +179,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - IASKAppSettingsViewController + IASKAppSettingsViewControllerEx com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -209,6 +209,14 @@ ./Classes/IASKAppSettingsViewController.h + + IASKAppSettingsViewControllerEx + IASKAppSettingsViewController + + IBProjectSource + ./Classes/IASKAppSettingsViewControllerEx.h + + SettingsViewController UIViewController diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitch.h b/Classes/Utils/DCRoundSwitch/DCRoundSwitch.h new file mode 100755 index 000000000..dd693de9e --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitch.h @@ -0,0 +1,33 @@ +// +// DCRoundSwitch.h +// +// Created by Patrick Richards on 28/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import +#import + +@class DCRoundSwitchToggleLayer; +@class DCRoundSwitchOutlineLayer; +@class DCRoundSwitchKnobLayer; + +@interface DCRoundSwitch : UIControl + +@property (nonatomic, retain) UIColor *onTintColor; // default: blue (matches normal UISwitch) +@property (nonatomic, getter=isOn) BOOL on; // default: NO +@property (nonatomic, copy) NSString *onText; // default: 'ON' - automatically localized +@property (nonatomic, copy) NSString *offText; // default: 'OFF' - automatically localized + ++ (Class)knobLayerClass; ++ (Class)outlineLayerClass; ++ (Class)toggleLayerClass; + +- (void)setOn:(BOOL)newOn animated:(BOOL)animated; +- (void)setOn:(BOOL)newOn animated:(BOOL)animated ignoreControlEvents:(BOOL)ignoreControlEvents; + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitch.m b/Classes/Utils/DCRoundSwitch/DCRoundSwitch.m new file mode 100755 index 000000000..8e0549b27 --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitch.m @@ -0,0 +1,468 @@ +// +// DCRoundSwitch.m +// +// Created by Patrick Richards on 28/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import "DCRoundSwitch.h" +#import "DCRoundSwitchToggleLayer.h" +#import "DCRoundSwitchOutlineLayer.h" +#import "DCRoundSwitchKnobLayer.h" + +@interface DCRoundSwitch () + +@property (nonatomic, retain) DCRoundSwitchOutlineLayer *outlineLayer; +@property (nonatomic, retain) DCRoundSwitchToggleLayer *toggleLayer; +@property (nonatomic, retain) DCRoundSwitchKnobLayer *knobLayer; +@property (nonatomic, retain) CAShapeLayer *clipLayer; +@property (nonatomic, assign) BOOL ignoreTap; + +- (void)setup; +- (void)useLayerMasking; +- (void)removeLayerMask; +- (void)positionLayersAndMask; + +@end + +@implementation DCRoundSwitch +@synthesize outlineLayer, toggleLayer, knobLayer, clipLayer, ignoreTap; +@synthesize on, onText, offText; +@synthesize onTintColor; + +#pragma mark - +#pragma mark Init & Memory Managment + +- (void)dealloc +{ + [outlineLayer release]; + [toggleLayer release]; + [knobLayer release]; + [clipLayer release]; + + [onTintColor release]; + [onText release]; + [offText release]; + + [super dealloc]; +} + +- (id)init +{ + if ((self = [super init])) + { + self.frame = CGRectMake(0, 0, 77, 27); + [self setup]; + } + + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder +{ + if ((self = [super initWithCoder:aDecoder])) + { + [self setup]; + } + + return self; +} + +- (id)initWithFrame:(CGRect)frame +{ + if ((self = [super initWithFrame:frame])) + { + [self setup]; + } + + return self; +} + ++ (Class)knobLayerClass { + return [DCRoundSwitchKnobLayer class]; +} + ++ (Class)outlineLayerClass { + return [DCRoundSwitchOutlineLayer class]; +} + ++ (Class)toggleLayerClass { + return [DCRoundSwitchToggleLayer class]; +} + +- (void)setup +{ + // this way you can set the background color to black or something similar so it can be seen in IB + self.backgroundColor = [UIColor clearColor]; + + // remove the flexible width/height autoresizing masks if they have been set + UIViewAutoresizing mask = (int)self.autoresizingMask; + if (mask & UIViewAutoresizingFlexibleHeight) + self.autoresizingMask ^= UIViewAutoresizingFlexibleHeight; + + if (mask & UIViewAutoresizingFlexibleWidth) + self.autoresizingMask ^= UIViewAutoresizingFlexibleWidth; + + // setup default texts + NSBundle *uiKitBundle = [NSBundle bundleWithIdentifier:@"com.apple.UIKit"]; + self.onText = uiKitBundle ? [uiKitBundle localizedStringForKey:@"ON" value:nil table:nil] : @"ON"; + self.offText = uiKitBundle ? [uiKitBundle localizedStringForKey:@"OFF" value:nil table:nil] : @"OFF"; + + // the switch has three layers, (ordered from bottom to top): + // + // * toggleLayer * (bottom of the layer stack) + // this layer contains the onTintColor (blue by default), the text, and the shadown for the knob. the knob shadow is + // on this layer because it needs to go under the outlineLayer so it doesn't bleed out over the edge of the control. + // this layer moves when the switch moves + + // * outlineLayer * (middle of the layer stack) + // this is the outline of the control, it's inner shadow, and the inner gloss. the inner shadow is on this layer + // because it must stay still while the switch animates. the inner gloss is also here because it doesn't move, and also + // because it needs to go uner the knobLayer. + // this layer appears to always stay in the same spot. + + // * knobLayer * (top of the layer stack) + // this is the knob, and sits on top of the layer stack. note that the knob shadow is NOT drawn here, it is drawn on the + // toggleLayer so it doesn't bleed out over the outlineLayer. + + self.toggleLayer = [[[[[self class] toggleLayerClass] alloc] initWithOnString:self.onText offString:self.offText onTintColor:[UIColor colorWithRed:0.000 green:0.478 blue:0.882 alpha:1.0]] autorelease]; + self.toggleLayer.drawOnTint = NO; + self.toggleLayer.clip = YES; + [self.layer addSublayer:self.toggleLayer]; + [self.toggleLayer setNeedsDisplay]; + + self.outlineLayer = [[[self class] outlineLayerClass] layer]; + [self.toggleLayer addSublayer:self.outlineLayer]; + [self.outlineLayer setNeedsDisplay]; + + self.knobLayer = [[[self class] knobLayerClass] layer]; + [self.layer addSublayer:self.knobLayer]; + [self.knobLayer setNeedsDisplay]; + + self.toggleLayer.contentsScale = self.outlineLayer.contentsScale = self.knobLayer.contentsScale = [[UIScreen mainScreen] scale]; + + // tap gesture for toggling the switch + UITapGestureRecognizer *tapGestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self + action:@selector(tapped:)] autorelease]; + [tapGestureRecognizer setDelegate:self]; + [self addGestureRecognizer:tapGestureRecognizer]; + + // pan gesture for moving the switch knob manually + UIPanGestureRecognizer *panGestureRecognizer = [[[UIPanGestureRecognizer alloc] initWithTarget:self + action:@selector(toggleDragged:)] autorelease]; + [panGestureRecognizer setDelegate:self]; + [self addGestureRecognizer:panGestureRecognizer]; + + [self setNeedsLayout]; + + // setup the layer positions + [self positionLayersAndMask]; +} + +#pragma mark - +#pragma mark Setup Frame/Layout + +- (void)sizeToFit +{ + [super sizeToFit]; + + NSString *onString = self.toggleLayer.onString; + NSString *offString = self.toggleLayer.offString; + + CGFloat width = [onString sizeWithFont:self.toggleLayer.labelFont].width; + CGFloat offWidth = [offString sizeWithFont:self.toggleLayer.labelFont].width; + + if(offWidth > width) + width = offWidth; + + width += self.toggleLayer.bounds.size.width * 2.;//add 2x the knob for padding + + CGRect newFrame = self.frame; + CGFloat currentWidth = newFrame.size.width; + newFrame.size.width = width; + newFrame.origin.x += currentWidth - width; + self.frame = newFrame; + + //old values for sizeToFit; keep these around for reference +// newFrame.size.width = 77.0; +// newFrame.size.height = 27.0; +} + +- (void)useLayerMasking +{ + // turn of the manual clipping (done in toggleLayer's drawInContext:) + self.toggleLayer.clip = NO; + self.toggleLayer.drawOnTint = YES; + [self.toggleLayer setNeedsDisplay]; + + // create the layer mask and add that to the toggleLayer + self.clipLayer = [CAShapeLayer layer]; + UIBezierPath *clipPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds + cornerRadius:self.bounds.size.height / 2.0]; + self.clipLayer.path = clipPath.CGPath; + self.toggleLayer.mask = self.clipLayer; +} + +- (void)removeLayerMask +{ + // turn off the animations so the user doesn't see the changing of mask/clipping + [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; + + // remove the layer mask (put on in useLayerMasking) + self.toggleLayer.mask = nil; + + // renable manual clipping (done in toggleLayer's drawInContext:) + self.toggleLayer.clip = YES; + self.toggleLayer.drawOnTint = self.on; + [self.toggleLayer setNeedsDisplay]; +} + +- (void)positionLayersAndMask +{ + // repositions the underlying toggle and the layer mask, plus the knob + self.toggleLayer.mask.position = CGPointMake(-self.toggleLayer.frame.origin.x, 0.0); + self.outlineLayer.frame = CGRectMake(-self.toggleLayer.frame.origin.x, 0, self.bounds.size.width, self.bounds.size.height); + self.knobLayer.frame = CGRectMake(self.toggleLayer.frame.origin.x + self.toggleLayer.frame.size.width / 2.0 - self.knobLayer.frame.size.width / 2.0, + -1, + self.knobLayer.frame.size.width, + self.knobLayer.frame.size.height); +} + +#pragma mark - +#pragma mark Interaction + +- (void)tapped:(UITapGestureRecognizer *)gesture +{ + if (self.ignoreTap) return; + + if (gesture.state == UIGestureRecognizerStateEnded) + [self setOn:!self.on animated:YES]; +} + +- (void)toggleDragged:(UIPanGestureRecognizer *)gesture +{ + CGFloat minToggleX = -self.toggleLayer.frame.size.width / 2.0 + self.toggleLayer.frame.size.height / 2.0; + CGFloat maxToggleX = -1; + + if (gesture.state == UIGestureRecognizerStateBegan) + { + // setup by turning off the manual clipping of the toggleLayer and setting up a layer mask. + [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; + [self useLayerMasking]; + [self positionLayersAndMask]; + self.knobLayer.gripped = YES; + } + else if (gesture.state == UIGestureRecognizerStateChanged) + { + CGPoint translation = [gesture translationInView:self]; + + // disable the animations before moving the layers + [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; + + // darken the knob + if (!self.knobLayer.gripped) + self.knobLayer.gripped = YES; + + // move the toggleLayer using the translation of the gesture, keeping it inside the outline. + CGFloat newX = self.toggleLayer.frame.origin.x + translation.x; + if (newX < minToggleX) newX = minToggleX; + if (newX > maxToggleX) newX = maxToggleX; + self.toggleLayer.frame = CGRectMake(newX, + self.toggleLayer.frame.origin.y, + self.toggleLayer.frame.size.width, + self.toggleLayer.frame.size.height); + + // this will re-position the layer mask and knob + [self positionLayersAndMask]; + + [gesture setTranslation:CGPointZero inView:self]; + } + else if (gesture.state == UIGestureRecognizerStateEnded) + { + // flip the switch to on or off depending on which half it ends at + CGFloat toggleCenter = CGRectGetMidX(self.toggleLayer.frame); + [self setOn:(toggleCenter > CGRectGetMidX(self.bounds)) animated:YES]; + } + + // send off the appropriate actions (not fully tested yet) + CGPoint locationOfTouch = [gesture locationInView:self]; + if (CGRectContainsPoint(self.bounds, locationOfTouch)) + [self sendActionsForControlEvents:UIControlEventTouchDragInside]; + else + [self sendActionsForControlEvents:UIControlEventTouchDragOutside]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + if (self.ignoreTap) return; + + [super touchesBegan:touches withEvent:event]; + + self.knobLayer.gripped = YES; + [self sendActionsForControlEvents:UIControlEventTouchDown]; +} + +- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesEnded:touches withEvent:event]; + + [self sendActionsForControlEvents:UIControlEventTouchUpInside]; +} + +- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event +{ + [super touchesCancelled:touches withEvent:event]; + + [self sendActionsForControlEvents:UIControlEventTouchUpOutside]; +} + +#pragma mark UIGestureRecognizerDelegate + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer; +{ + return !self.ignoreTap; +} + +#pragma mark Setters/Getters + +- (void)setOn:(BOOL)newOn +{ + [self setOn:newOn animated:NO]; +} + +- (void)setOn:(BOOL)newOn animated:(BOOL)animated +{ + [self setOn:newOn animated:animated ignoreControlEvents:NO]; +} + +- (void)setOn:(BOOL)newOn animated:(BOOL)animated ignoreControlEvents:(BOOL)ignoreControlEvents +{ + BOOL previousOn = self.on; + on = newOn; + self.ignoreTap = YES; + + [CATransaction setAnimationDuration:0.014]; + self.knobLayer.gripped = YES; + + // setup by turning off the manual clipping of the toggleLayer and setting up a layer mask. + [self useLayerMasking]; + [self positionLayersAndMask]; + + // retain all our targets so they don't disappear before the actions get sent at the end of the animation + [[self allTargets] makeObjectsPerformSelector:@selector(retain)]; + + [CATransaction setCompletionBlock:^{ + [CATransaction begin]; + if (!animated) + [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions]; + else + [CATransaction setValue:(id)kCFBooleanFalse forKey:kCATransactionDisableActions]; + + CGFloat minToggleX = -self.toggleLayer.frame.size.width / 2.0 + self.toggleLayer.frame.size.height / 2.0; + CGFloat maxToggleX = -1; + + + if (self.on) + { + self.toggleLayer.frame = CGRectMake(maxToggleX, + self.toggleLayer.frame.origin.y, + self.toggleLayer.frame.size.width, + self.toggleLayer.frame.size.height); + } + else + { + self.toggleLayer.frame = CGRectMake(minToggleX, + self.toggleLayer.frame.origin.y, + self.toggleLayer.frame.size.width, + self.toggleLayer.frame.size.height); + } + + if (!self.toggleLayer.mask) + { + [self useLayerMasking]; + [self.toggleLayer setNeedsDisplay]; + } + + [self positionLayersAndMask]; + + self.knobLayer.gripped = NO; + + [CATransaction setCompletionBlock:^{ + [self removeLayerMask]; + self.ignoreTap = NO; + + // send the action here so it get's sent at the end of the animations + if (previousOn != on && !ignoreControlEvents) + [self sendActionsForControlEvents:UIControlEventValueChanged]; + + [[self allTargets] makeObjectsPerformSelector:@selector(release)]; + }]; + + [CATransaction commit]; + }]; +} + +- (void)setOnTintColor:(UIColor *)anOnTintColor +{ + if (anOnTintColor != onTintColor) + { + [onTintColor release]; + onTintColor = [anOnTintColor retain]; + self.toggleLayer.onTintColor = anOnTintColor; + [self.toggleLayer setNeedsDisplay]; + } +} + +- (void)layoutSubviews; +{ + CGFloat knobRadius = self.bounds.size.height + 2.0; + self.knobLayer.frame = CGRectMake(0, 0, knobRadius, knobRadius); + CGSize toggleSize = CGSizeMake(self.bounds.size.width * 2 - (knobRadius - 4), self.bounds.size.height); + CGFloat minToggleX = -toggleSize.width / 2.0 + knobRadius / 2.0 - 1; + CGFloat maxToggleX = -1; + + if (self.on) + { + self.toggleLayer.frame = CGRectMake(maxToggleX, + self.toggleLayer.frame.origin.y, + toggleSize.width, + toggleSize.height); + } + else + { + self.toggleLayer.frame = CGRectMake(minToggleX, + self.toggleLayer.frame.origin.y, + toggleSize.width, + toggleSize.height); + } + + [self positionLayersAndMask]; +} + +- (void)setOnText:(NSString *)newOnText +{ + if (newOnText != onText) + { + [onText release]; + onText = [newOnText copy]; + self.toggleLayer.onString = onText; + [self.toggleLayer setNeedsDisplay]; + } +} + +- (void)setOffText:(NSString *)newOffText +{ + if (newOffText != offText) + { + [offText release]; + offText = [newOffText copy]; + self.toggleLayer.offString = offText; + [self.toggleLayer setNeedsDisplay]; + } +} + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.h b/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.h new file mode 100755 index 000000000..55141f72e --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.h @@ -0,0 +1,18 @@ +// +// DCRoundSwitchKnobLayer.h +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import + +@interface DCRoundSwitchKnobLayer : CALayer + +@property (nonatomic) BOOL gripped; + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.m b/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.m new file mode 100755 index 000000000..d64f2f468 --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchKnobLayer.m @@ -0,0 +1,69 @@ +// +// DCRoundSwitchKnobLayer.m +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import "DCRoundSwitchKnobLayer.h" + +CGGradientRef CreateGradientRefWithColors(CGColorSpaceRef colorSpace, CGColorRef startColor, CGColorRef endColor); + +@implementation DCRoundSwitchKnobLayer +@synthesize gripped; + +- (void)drawInContext:(CGContextRef)context +{ + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceGray(); + CGRect knobRect = CGRectInset(self.bounds, 2, 2); + CGFloat knobRadius = self.bounds.size.height - 2; + + // knob outline (shadow is drawn in the toggle layer) + CGContextSetStrokeColorWithColor(context, [UIColor colorWithWhite:0.62 alpha:1.0].CGColor); + CGContextSetLineWidth(context, 1.5); + CGContextStrokeEllipseInRect(context, knobRect); + CGContextSetShadowWithColor(context, CGSizeMake(0, 0), 0, NULL); + + // knob inner gradient + CGContextAddEllipseInRect(context, knobRect); + CGContextClip(context); + CGColorRef knobStartColor = [UIColor colorWithWhite:0.82 alpha:1.0].CGColor; + CGColorRef knobEndColor = (self.gripped) ? [UIColor colorWithWhite:0.894 alpha:1.0].CGColor : [UIColor colorWithWhite:0.996 alpha:1.0].CGColor; + CGPoint topPoint = CGPointMake(0, 0); + CGPoint bottomPoint = CGPointMake(0, knobRadius + 2); + CGGradientRef knobGradient = CreateGradientRefWithColors(colorSpace, knobStartColor, knobEndColor); + CGContextDrawLinearGradient(context, knobGradient, topPoint, bottomPoint, 0); + CGGradientRelease(knobGradient); + + // knob inner highlight + CGContextAddEllipseInRect(context, CGRectInset(knobRect, 0.5, 0.5)); + CGContextAddEllipseInRect(context, CGRectInset(knobRect, 1.5, 1.5)); + CGContextEOClip(context); + CGGradientRef knobHighlightGradient = CreateGradientRefWithColors(colorSpace, [UIColor whiteColor].CGColor, [UIColor colorWithWhite:1.0 alpha:0.5].CGColor); + CGContextDrawLinearGradient(context, knobHighlightGradient, topPoint, bottomPoint, 0); + CGGradientRelease(knobHighlightGradient); + + CGColorSpaceRelease(colorSpace); +} + +CGGradientRef CreateGradientRefWithColors(CGColorSpaceRef colorSpace, CGColorRef startColor, CGColorRef endColor) +{ + CGFloat colorStops[2] = {0.0, 1.0}; + CGColorRef colors[] = {startColor, endColor}; + CFArrayRef colorsArray = CFArrayCreate(NULL, (const void**)colors, sizeof(colors) / sizeof(CGColorRef), &kCFTypeArrayCallBacks); + CGGradientRef gradient = CGGradientCreateWithColors(colorSpace, colorsArray, colorStops); + CFRelease(colorsArray); + return gradient; +} + +- (void)setGripped:(BOOL)newGripped +{ + gripped = newGripped; + [self setNeedsDisplay]; +} + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.h b/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.h new file mode 100755 index 000000000..e9e82bf3f --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.h @@ -0,0 +1,16 @@ +// +// DCRoundSwitchOutlineLayer.h +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import + +@interface DCRoundSwitchOutlineLayer : CALayer + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.m b/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.m new file mode 100755 index 000000000..4cbb658e6 --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchOutlineLayer.m @@ -0,0 +1,66 @@ +// +// DCRoundSwitchOutlineLayer.m +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import "DCRoundSwitchOutlineLayer.h" + +@implementation DCRoundSwitchOutlineLayer + +- (void)drawInContext:(CGContextRef)context +{ + // calculate the outline clip + CGContextSaveGState(context); + UIBezierPath *switchOutline = [UIBezierPath bezierPathWithRoundedRect:self.bounds cornerRadius:self.bounds.size.height / 2.0]; + CGContextAddPath(context, switchOutline.CGPath); + CGContextClip(context); + + // inner gloss + CGContextSaveGState(context); + CGRect innerGlossPathRect = CGRectMake(self.frame.size.width * 0.05, + self.frame.size.height / 2.0, + self.bounds.size.width - (self.frame.size.width * 0.1), + self.bounds.size.height / 2.0); + UIBezierPath *innerGlossPath = [UIBezierPath bezierPathWithRoundedRect:innerGlossPathRect + byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight + cornerRadii:CGSizeMake(self.bounds.size.height * 0.3, self.bounds.size.height * 0.3)]; + CGContextAddPath(context, innerGlossPath.CGPath); + CGContextClip(context); + + CGFloat colorStops[2] = {0.0, 1.0}; + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGFloat innerGlossStartColorComponents[] = {1.0, 1.0, 1.0, 0.14}; + CGFloat innerGlossEndColorComponents[] = {1.0, 1.0, 1.0, 0.50}; + CGColorRef topColor = CGColorCreate(colorSpace, innerGlossStartColorComponents); + CGColorRef bottomColor = CGColorCreate(colorSpace, innerGlossEndColorComponents); + CGColorRef colors[] = { topColor, bottomColor }; + CFArrayRef colorsArray = CFArrayCreate(NULL, (const void**)colors, sizeof(colors) / sizeof(CGColorRef), &kCFTypeArrayCallBacks); + CGGradientRef innerGlossGradient = CGGradientCreateWithColors(colorSpace, colorsArray, colorStops); + CFRelease(colorsArray); + + CGContextDrawLinearGradient(context, innerGlossGradient, CGPointMake(0, CGRectGetMinY(innerGlossPathRect)), CGPointMake(0, CGRectGetMaxY(innerGlossPathRect)), 0); + CGContextRestoreGState(context); + CGColorSpaceRelease(colorSpace); + CGColorRelease(topColor); + CGColorRelease(bottomColor); + CGGradientRelease(innerGlossGradient); + + // outline and inner shadow + CGContextSetShadowWithColor(context, CGSizeMake(0.0, 1), 2.0, [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1.0].CGColor); + CGContextSetLineWidth(context, 0.5); + UIBezierPath *outlinePath = [UIBezierPath bezierPathWithRoundedRect:CGRectOffset(self.bounds, -0.5, 0.0) cornerRadius:self.bounds.size.height / 2.0]; + CGContextAddPath(context, outlinePath.CGPath); + CGContextSetStrokeColorWithColor(context, [UIColor colorWithWhite:0.60 alpha:1.0].CGColor); + CGContextStrokePath(context); + + CGContextAddPath(context, outlinePath.CGPath); + CGContextStrokePath(context); +} + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.h b/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.h new file mode 100755 index 000000000..e56c631b9 --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.h @@ -0,0 +1,26 @@ +// +// DCRoundSwitchToggleLayer.h +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import +#import + +@interface DCRoundSwitchToggleLayer : CALayer + +@property (nonatomic, retain) UIColor *onTintColor; +@property (nonatomic, retain) NSString *onString; +@property (nonatomic, retain) NSString *offString; +@property (nonatomic, readonly) UIFont *labelFont; +@property (nonatomic) BOOL drawOnTint; +@property (nonatomic) BOOL clip; + +- (id)initWithOnString:(NSString *)anOnString offString:(NSString *)anOffString onTintColor:(UIColor *)anOnTintColor; + +@end diff --git a/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.m b/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.m new file mode 100755 index 000000000..99e0550bf --- /dev/null +++ b/Classes/Utils/DCRoundSwitch/DCRoundSwitchToggleLayer.m @@ -0,0 +1,102 @@ +// +// DCRoundSwitchToggleLayer.m +// +// Created by Patrick Richards on 29/06/11. +// MIT License. +// +// http://twitter.com/patr +// http://domesticcat.com.au/projects +// http://github.com/domesticcatsoftware/DCRoundSwitch +// + +#import "DCRoundSwitchToggleLayer.h" + +@implementation DCRoundSwitchToggleLayer +@synthesize onString, offString, onTintColor; +@synthesize drawOnTint; +@synthesize clip; +@synthesize labelFont; + +- (void)dealloc +{ + [onString release]; + [offString release]; + [onTintColor release]; + + [super dealloc]; +} + +- (id)initWithOnString:(NSString *)anOnString offString:(NSString *)anOffString onTintColor:(UIColor *)anOnTintColor +{ + if ((self = [super init])) + { + self.onString = anOnString; + self.offString = anOffString; + self.onTintColor = anOnTintColor; + } + + return self; +} + +- (UIFont *)labelFont +{ + return [UIFont boldSystemFontOfSize:ceilf(self.bounds.size.height * .6)]; +} + +- (void)drawInContext:(CGContextRef)context +{ + CGFloat knobRadius = self.bounds.size.height - 2.0; + CGFloat knobCenter = self.bounds.size.width / 2.0; + CGRect knobRect = CGRectMake(knobCenter - knobRadius / 2.0, 1.0, knobRadius, knobRadius); + + if (self.clip) + { + UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(-self.frame.origin.x + 0.5, 0, self.bounds.size.width / 2.0 + self.bounds.size.height / 2.0 - 1.5, self.bounds.size.height) cornerRadius:self.bounds.size.height / 2.0]; + CGContextAddPath(context, bezierPath.CGPath); + CGContextClip(context); + } + + // on tint color + if (self.drawOnTint) + { + CGContextSetFillColorWithColor(context, self.onTintColor.CGColor); + CGContextFillRect(context, CGRectMake(0, 0, knobCenter, self.bounds.size.height)); + } + + // off tint color (white) + CGContextSetFillColorWithColor(context, [UIColor colorWithWhite:0.963 alpha:1.0].CGColor); + CGContextFillRect(context, CGRectMake(knobCenter, 0, self.bounds.size.width - knobCenter, self.bounds.size.height)); + + // knob shadow + CGContextSetShadowWithColor(context, CGSizeMake(0, 0), 1.5, [UIColor colorWithWhite:0.2 alpha:1.0].CGColor); + CGContextSetStrokeColorWithColor(context, [UIColor colorWithWhite:0.42 alpha:1.0].CGColor); + CGContextSetLineWidth(context, 1.0); + CGContextStrokeEllipseInRect(context, knobRect); + CGContextSetShadowWithColor(context, CGSizeMake(0, 0), 0, NULL); + + + // strings + CGFloat textSpaceWidth = (self.bounds.size.width / 2) - (knobRadius / 2); + + UIGraphicsPushContext(context); + + // 'ON' state label (self.onString) + CGSize onTextSize = [self.onString sizeWithFont:self.labelFont]; + CGPoint onTextPoint = CGPointMake((textSpaceWidth - onTextSize.width) / 2.0 + knobRadius * .15, floorf((self.bounds.size.height - onTextSize.height) / 2.0) + 1.0); + [[UIColor colorWithWhite:0.45 alpha:1.0] set]; // .2 & .4 + [self.onString drawAtPoint:CGPointMake(onTextPoint.x, onTextPoint.y - 1.0) withFont:self.labelFont]; + [[UIColor whiteColor] set]; + [self.onString drawAtPoint:onTextPoint withFont:self.labelFont]; + + // 'OFF' state label (self.offString) + CGSize offTextSize = [self.offString sizeWithFont:self.labelFont]; + CGPoint offTextPoint = CGPointMake(textSpaceWidth + (textSpaceWidth - offTextSize.width) / 2.0 + knobRadius * .86, floorf((self.bounds.size.height - offTextSize.height) / 2.0) + 1.0); + [[UIColor whiteColor] set]; + [self.offString drawAtPoint:CGPointMake(offTextPoint.x, offTextPoint.y + 1.0) withFont:self.labelFont]; + [[UIColor colorWithWhite:0.52 alpha:1.0] set]; + [self.offString drawAtPoint:offTextPoint withFont:self.labelFont]; + + UIGraphicsPopContext(); +} + +@end diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h b/Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h similarity index 100% rename from InAppSettingsKit/Controllers/IASKAppSettingsViewController.h rename to Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsViewController.h diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m b/Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m similarity index 100% rename from InAppSettingsKit/Controllers/IASKAppSettingsViewController.m rename to Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsViewController.m diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h b/Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h similarity index 100% rename from InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h rename to Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.h diff --git a/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m b/Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m similarity index 100% rename from InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m rename to Classes/Utils/InAppSettingsKit/Controllers/IASKAppSettingsWebViewController.m diff --git a/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h b/Classes/Utils/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h similarity index 100% rename from InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h rename to Classes/Utils/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.h diff --git a/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m b/Classes/Utils/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m similarity index 100% rename from InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m rename to Classes/Utils/InAppSettingsKit/Controllers/IASKSpecifierValuesViewController.m diff --git a/InAppSettingsKit/Controllers/IASKViewController.h b/Classes/Utils/InAppSettingsKit/Controllers/IASKViewController.h similarity index 100% rename from InAppSettingsKit/Controllers/IASKViewController.h rename to Classes/Utils/InAppSettingsKit/Controllers/IASKViewController.h diff --git a/InAppSettingsKit/Models/IASKSettingsReader.h b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.h similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsReader.h rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.h diff --git a/InAppSettingsKit/Models/IASKSettingsReader.m b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.m similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsReader.m rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.m diff --git a/InAppSettingsKit/Models/IASKSettingsStore.h b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStore.h similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStore.h rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStore.h diff --git a/InAppSettingsKit/Models/IASKSettingsStore.m b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStore.m similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStore.m rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStore.m diff --git a/InAppSettingsKit/Models/IASKSettingsStoreFile.h b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreFile.h similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStoreFile.h rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreFile.h diff --git a/InAppSettingsKit/Models/IASKSettingsStoreFile.m b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreFile.m similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStoreFile.m rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreFile.m diff --git a/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.h diff --git a/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m similarity index 100% rename from InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m rename to Classes/Utils/InAppSettingsKit/Models/IASKSettingsStoreUserDefaults.m diff --git a/InAppSettingsKit/Models/IASKSpecifier.h b/Classes/Utils/InAppSettingsKit/Models/IASKSpecifier.h similarity index 100% rename from InAppSettingsKit/Models/IASKSpecifier.h rename to Classes/Utils/InAppSettingsKit/Models/IASKSpecifier.h diff --git a/InAppSettingsKit/Models/IASKSpecifier.m b/Classes/Utils/InAppSettingsKit/Models/IASKSpecifier.m similarity index 100% rename from InAppSettingsKit/Models/IASKSpecifier.m rename to Classes/Utils/InAppSettingsKit/Models/IASKSpecifier.m diff --git a/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h b/Classes/Utils/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h similarity index 100% rename from InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h rename to Classes/Utils/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.h diff --git a/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m b/Classes/Utils/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m similarity index 100% rename from InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m rename to Classes/Utils/InAppSettingsKit/Views/IASKPSSliderSpecifierViewCell.m diff --git a/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h b/Classes/Utils/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h similarity index 100% rename from InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h rename to Classes/Utils/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.h diff --git a/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m b/Classes/Utils/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m similarity index 100% rename from InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m rename to Classes/Utils/InAppSettingsKit/Views/IASKPSTextFieldSpecifierViewCell.m diff --git a/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h b/Classes/Utils/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h similarity index 100% rename from InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h rename to Classes/Utils/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.h diff --git a/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m b/Classes/Utils/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m similarity index 100% rename from InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m rename to Classes/Utils/InAppSettingsKit/Views/IASKPSTitleValueSpecifierViewCell.m diff --git a/InAppSettingsKit/Views/IASKSlider.h b/Classes/Utils/InAppSettingsKit/Views/IASKSlider.h similarity index 100% rename from InAppSettingsKit/Views/IASKSlider.h rename to Classes/Utils/InAppSettingsKit/Views/IASKSlider.h diff --git a/InAppSettingsKit/Views/IASKSlider.m b/Classes/Utils/InAppSettingsKit/Views/IASKSlider.m similarity index 100% rename from InAppSettingsKit/Views/IASKSlider.m rename to Classes/Utils/InAppSettingsKit/Views/IASKSlider.m diff --git a/InAppSettingsKit/Views/IASKSwitch.h b/Classes/Utils/InAppSettingsKit/Views/IASKSwitch.h similarity index 100% rename from InAppSettingsKit/Views/IASKSwitch.h rename to Classes/Utils/InAppSettingsKit/Views/IASKSwitch.h diff --git a/InAppSettingsKit/Views/IASKSwitch.m b/Classes/Utils/InAppSettingsKit/Views/IASKSwitch.m similarity index 100% rename from InAppSettingsKit/Views/IASKSwitch.m rename to Classes/Utils/InAppSettingsKit/Views/IASKSwitch.m diff --git a/InAppSettingsKit/Views/IASKTextField.h b/Classes/Utils/InAppSettingsKit/Views/IASKTextField.h similarity index 100% rename from InAppSettingsKit/Views/IASKTextField.h rename to Classes/Utils/InAppSettingsKit/Views/IASKTextField.h diff --git a/InAppSettingsKit/Views/IASKTextField.m b/Classes/Utils/InAppSettingsKit/Views/IASKTextField.m similarity index 100% rename from InAppSettingsKit/Views/IASKTextField.m rename to Classes/Utils/InAppSettingsKit/Views/IASKTextField.m diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index b018832b9..b0ec8549a 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -604,36 +604,46 @@ D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */; }; D37DC6C11594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; D37DC6C21594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; - D37DC6ED1594AE6F00B2A5EB /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */; }; - D37DC6EE1594AE6F00B2A5EB /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */; }; - D37DC6EF1594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C81594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m */; }; - D37DC6F01594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C81594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m */; }; - D37DC6F11594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6CA1594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m */; }; - D37DC6F21594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6CA1594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m */; }; - D37DC6F31594AE6F00B2A5EB /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6CE1594AE6F00B2A5EB /* IASKSettingsReader.m */; }; - D37DC6F41594AE6F00B2A5EB /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6CE1594AE6F00B2A5EB /* IASKSettingsReader.m */; }; - D37DC6F51594AE6F00B2A5EB /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D01594AE6F00B2A5EB /* IASKSettingsStore.m */; }; - D37DC6F61594AE6F00B2A5EB /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D01594AE6F00B2A5EB /* IASKSettingsStore.m */; }; - D37DC6F71594AE6F00B2A5EB /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D21594AE6F00B2A5EB /* IASKSettingsStoreFile.m */; }; - D37DC6F81594AE6F00B2A5EB /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D21594AE6F00B2A5EB /* IASKSettingsStoreFile.m */; }; - D37DC6F91594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D41594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m */; }; - D37DC6FA1594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D41594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m */; }; - D37DC6FB1594AE6F00B2A5EB /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D61594AE6F00B2A5EB /* IASKSpecifier.m */; }; - D37DC6FC1594AE6F00B2A5EB /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D61594AE6F00B2A5EB /* IASKSpecifier.m */; }; - D37DC6FD1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m */; }; - D37DC6FE1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6D91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m */; }; - D37DC6FF1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DB1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m */; }; - D37DC7001594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DB1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m */; }; - D37DC7011594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */; }; - D37DC7021594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */; }; - D37DC7051594AE6F00B2A5EB /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */; }; - D37DC7061594AE6F00B2A5EB /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */; }; - D37DC7071594AE6F00B2A5EB /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E31594AE6F00B2A5EB /* IASKSwitch.m */; }; - D37DC7081594AE6F00B2A5EB /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E31594AE6F00B2A5EB /* IASKSwitch.m */; }; - D37DC7091594AE6F00B2A5EB /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E51594AE6F00B2A5EB /* IASKTextField.m */; }; - D37DC70A1594AE6F00B2A5EB /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6E51594AE6F00B2A5EB /* IASKTextField.m */; }; D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; }; D37DC7191594AF3F00B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; }; + D3807FBF15C28940005BE9BC /* DCRoundSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FB815C28940005BE9BC /* DCRoundSwitch.m */; }; + D3807FC015C28940005BE9BC /* DCRoundSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FB815C28940005BE9BC /* DCRoundSwitch.m */; }; + D3807FC115C28940005BE9BC /* DCRoundSwitchKnobLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBA15C28940005BE9BC /* DCRoundSwitchKnobLayer.m */; }; + D3807FC215C28940005BE9BC /* DCRoundSwitchKnobLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBA15C28940005BE9BC /* DCRoundSwitchKnobLayer.m */; }; + D3807FC315C28940005BE9BC /* DCRoundSwitchOutlineLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBC15C28940005BE9BC /* DCRoundSwitchOutlineLayer.m */; }; + D3807FC415C28940005BE9BC /* DCRoundSwitchOutlineLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBC15C28940005BE9BC /* DCRoundSwitchOutlineLayer.m */; }; + D3807FC515C28940005BE9BC /* DCRoundSwitchToggleLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBE15C28940005BE9BC /* DCRoundSwitchToggleLayer.m */; }; + D3807FC615C28940005BE9BC /* DCRoundSwitchToggleLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBE15C28940005BE9BC /* DCRoundSwitchToggleLayer.m */; }; + D3807FE815C2894A005BE9BC /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCA15C2894A005BE9BC /* IASKAppSettingsViewController.m */; }; + D3807FE915C2894A005BE9BC /* IASKAppSettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCA15C2894A005BE9BC /* IASKAppSettingsViewController.m */; }; + D3807FEA15C2894A005BE9BC /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCC15C2894A005BE9BC /* IASKAppSettingsWebViewController.m */; }; + D3807FEB15C2894A005BE9BC /* IASKAppSettingsWebViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCC15C2894A005BE9BC /* IASKAppSettingsWebViewController.m */; }; + D3807FEC15C2894A005BE9BC /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCE15C2894A005BE9BC /* IASKSpecifierValuesViewController.m */; }; + D3807FED15C2894A005BE9BC /* IASKSpecifierValuesViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FCE15C2894A005BE9BC /* IASKSpecifierValuesViewController.m */; }; + D3807FEE15C2894A005BE9BC /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD215C2894A005BE9BC /* IASKSettingsReader.m */; }; + D3807FEF15C2894A005BE9BC /* IASKSettingsReader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD215C2894A005BE9BC /* IASKSettingsReader.m */; }; + D3807FF015C2894A005BE9BC /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD415C2894A005BE9BC /* IASKSettingsStore.m */; }; + D3807FF115C2894A005BE9BC /* IASKSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD415C2894A005BE9BC /* IASKSettingsStore.m */; }; + D3807FF215C2894A005BE9BC /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD615C2894A005BE9BC /* IASKSettingsStoreFile.m */; }; + D3807FF315C2894A005BE9BC /* IASKSettingsStoreFile.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD615C2894A005BE9BC /* IASKSettingsStoreFile.m */; }; + D3807FF415C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD815C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m */; }; + D3807FF515C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FD815C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m */; }; + D3807FF615C2894A005BE9BC /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDA15C2894A005BE9BC /* IASKSpecifier.m */; }; + D3807FF715C2894A005BE9BC /* IASKSpecifier.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDA15C2894A005BE9BC /* IASKSpecifier.m */; }; + D3807FF815C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDD15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m */; }; + D3807FF915C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDD15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m */; }; + D3807FFA15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDF15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m */; }; + D3807FFB15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FDF15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m */; }; + D3807FFC15C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE115C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m */; }; + D3807FFD15C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE115C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m */; }; + D3807FFE15C2894A005BE9BC /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE315C2894A005BE9BC /* IASKSlider.m */; }; + D3807FFF15C2894A005BE9BC /* IASKSlider.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE315C2894A005BE9BC /* IASKSlider.m */; }; + D380800015C2894A005BE9BC /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE515C2894A005BE9BC /* IASKSwitch.m */; }; + D380800115C2894A005BE9BC /* IASKSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE515C2894A005BE9BC /* IASKSwitch.m */; }; + D380800215C2894A005BE9BC /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE715C2894A005BE9BC /* IASKTextField.m */; }; + D380800315C2894A005BE9BC /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE715C2894A005BE9BC /* IASKTextField.m */; }; + D380800515C28A7A005BE9BC /* UILinphone.m in Sources */ = {isa = PBXBuildFile; fileRef = D380800415C28A7A005BE9BC /* UILinphone.m */; }; + D380800615C28A7A005BE9BC /* UILinphone.m in Sources */ = {isa = PBXBuildFile; fileRef = D380800415C28A7A005BE9BC /* UILinphone.m */; }; D38327F31580FE3A00FA0D23 /* contacts_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EB1580FE3A00FA0D23 /* contacts_default.png */; }; D38327F41580FE3A00FA0D23 /* contacts_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EC1580FE3A00FA0D23 /* contacts_selected.png */; }; D38327F51580FE3A00FA0D23 /* dialer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327ED1580FE3A00FA0D23 /* dialer_default.png */; }; @@ -1354,36 +1364,45 @@ D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsTableViewController.m; sourceTree = ""; }; D37DC6BF1594AE1800B2A5EB /* LinphoneCoreSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCoreSettingsStore.h; sourceTree = ""; }; D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCoreSettingsStore.m; sourceTree = ""; }; - D37DC6C51594AE6F00B2A5EB /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = ""; }; - D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKAppSettingsViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - D37DC6C71594AE6F00B2A5EB /* IASKAppSettingsWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsWebViewController.h; sourceTree = ""; }; - D37DC6C81594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKAppSettingsWebViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - D37DC6C91594AE6F00B2A5EB /* IASKSpecifierValuesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifierValuesViewController.h; sourceTree = ""; }; - D37DC6CA1594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifierValuesViewController.m; sourceTree = ""; }; - D37DC6CB1594AE6F00B2A5EB /* IASKViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKViewController.h; sourceTree = ""; }; - D37DC6CD1594AE6F00B2A5EB /* IASKSettingsReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsReader.h; sourceTree = ""; }; - D37DC6CE1594AE6F00B2A5EB /* IASKSettingsReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKSettingsReader.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - D37DC6CF1594AE6F00B2A5EB /* IASKSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStore.h; sourceTree = ""; }; - D37DC6D01594AE6F00B2A5EB /* IASKSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStore.m; sourceTree = ""; }; - D37DC6D11594AE6F00B2A5EB /* IASKSettingsStoreFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreFile.h; sourceTree = ""; }; - D37DC6D21594AE6F00B2A5EB /* IASKSettingsStoreFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = IASKSettingsStoreFile.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; - D37DC6D31594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreUserDefaults.h; sourceTree = ""; }; - D37DC6D41594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreUserDefaults.m; sourceTree = ""; }; - D37DC6D51594AE6F00B2A5EB /* IASKSpecifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifier.h; sourceTree = ""; }; - D37DC6D61594AE6F00B2A5EB /* IASKSpecifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifier.m; sourceTree = ""; }; - D37DC6D81594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSSliderSpecifierViewCell.h; sourceTree = ""; }; - D37DC6D91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSSliderSpecifierViewCell.m; sourceTree = ""; }; - D37DC6DA1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTextFieldSpecifierViewCell.h; sourceTree = ""; }; - D37DC6DB1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTextFieldSpecifierViewCell.m; sourceTree = ""; }; - D37DC6DC1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTitleValueSpecifierViewCell.h; sourceTree = ""; }; - D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTitleValueSpecifierViewCell.m; sourceTree = ""; }; - D37DC6E01594AE6F00B2A5EB /* IASKSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSlider.h; sourceTree = ""; }; - D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSlider.m; sourceTree = ""; }; - D37DC6E21594AE6F00B2A5EB /* IASKSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSwitch.h; sourceTree = ""; }; - D37DC6E31594AE6F00B2A5EB /* IASKSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSwitch.m; sourceTree = ""; }; - D37DC6E41594AE6F00B2A5EB /* IASKTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKTextField.h; sourceTree = ""; }; - D37DC6E51594AE6F00B2A5EB /* IASKTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKTextField.m; sourceTree = ""; }; D37DC7171594AF3400B2A5EB /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; + D3807FB715C28940005BE9BC /* DCRoundSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCRoundSwitch.h; sourceTree = ""; }; + D3807FB815C28940005BE9BC /* DCRoundSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCRoundSwitch.m; sourceTree = ""; }; + D3807FB915C28940005BE9BC /* DCRoundSwitchKnobLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCRoundSwitchKnobLayer.h; sourceTree = ""; }; + D3807FBA15C28940005BE9BC /* DCRoundSwitchKnobLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCRoundSwitchKnobLayer.m; sourceTree = ""; }; + D3807FBB15C28940005BE9BC /* DCRoundSwitchOutlineLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCRoundSwitchOutlineLayer.h; sourceTree = ""; }; + D3807FBC15C28940005BE9BC /* DCRoundSwitchOutlineLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCRoundSwitchOutlineLayer.m; sourceTree = ""; }; + D3807FBD15C28940005BE9BC /* DCRoundSwitchToggleLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCRoundSwitchToggleLayer.h; sourceTree = ""; }; + D3807FBE15C28940005BE9BC /* DCRoundSwitchToggleLayer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCRoundSwitchToggleLayer.m; sourceTree = ""; }; + D3807FC915C2894A005BE9BC /* IASKAppSettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsViewController.h; sourceTree = ""; }; + D3807FCA15C2894A005BE9BC /* IASKAppSettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsViewController.m; sourceTree = ""; }; + D3807FCB15C2894A005BE9BC /* IASKAppSettingsWebViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKAppSettingsWebViewController.h; sourceTree = ""; }; + D3807FCC15C2894A005BE9BC /* IASKAppSettingsWebViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKAppSettingsWebViewController.m; sourceTree = ""; }; + D3807FCD15C2894A005BE9BC /* IASKSpecifierValuesViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifierValuesViewController.h; sourceTree = ""; }; + D3807FCE15C2894A005BE9BC /* IASKSpecifierValuesViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifierValuesViewController.m; sourceTree = ""; }; + D3807FCF15C2894A005BE9BC /* IASKViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKViewController.h; sourceTree = ""; }; + D3807FD115C2894A005BE9BC /* IASKSettingsReader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsReader.h; sourceTree = ""; }; + D3807FD215C2894A005BE9BC /* IASKSettingsReader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsReader.m; sourceTree = ""; }; + D3807FD315C2894A005BE9BC /* IASKSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStore.h; sourceTree = ""; }; + D3807FD415C2894A005BE9BC /* IASKSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStore.m; sourceTree = ""; }; + D3807FD515C2894A005BE9BC /* IASKSettingsStoreFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreFile.h; sourceTree = ""; }; + D3807FD615C2894A005BE9BC /* IASKSettingsStoreFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreFile.m; sourceTree = ""; }; + D3807FD715C2894A005BE9BC /* IASKSettingsStoreUserDefaults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSettingsStoreUserDefaults.h; sourceTree = ""; }; + D3807FD815C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSettingsStoreUserDefaults.m; sourceTree = ""; }; + D3807FD915C2894A005BE9BC /* IASKSpecifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSpecifier.h; sourceTree = ""; }; + D3807FDA15C2894A005BE9BC /* IASKSpecifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSpecifier.m; sourceTree = ""; }; + D3807FDC15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSSliderSpecifierViewCell.h; sourceTree = ""; }; + D3807FDD15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSSliderSpecifierViewCell.m; sourceTree = ""; }; + D3807FDE15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTextFieldSpecifierViewCell.h; sourceTree = ""; }; + D3807FDF15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTextFieldSpecifierViewCell.m; sourceTree = ""; }; + D3807FE015C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKPSTitleValueSpecifierViewCell.h; sourceTree = ""; }; + D3807FE115C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKPSTitleValueSpecifierViewCell.m; sourceTree = ""; }; + D3807FE215C2894A005BE9BC /* IASKSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSlider.h; sourceTree = ""; }; + D3807FE315C2894A005BE9BC /* IASKSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSlider.m; sourceTree = ""; }; + D3807FE415C2894A005BE9BC /* IASKSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKSwitch.h; sourceTree = ""; }; + D3807FE515C2894A005BE9BC /* IASKSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKSwitch.m; sourceTree = ""; }; + D3807FE615C2894A005BE9BC /* IASKTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKTextField.h; sourceTree = ""; }; + D3807FE715C2894A005BE9BC /* IASKTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKTextField.m; sourceTree = ""; }; + D380800415C28A7A005BE9BC /* UILinphone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UILinphone.m; sourceTree = ""; }; D38327EB1580FE3A00FA0D23 /* contacts_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_default.png; path = Resources/contacts_default.png; sourceTree = ""; }; D38327EC1580FE3A00FA0D23 /* contacts_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_selected.png; path = Resources/contacts_selected.png; sourceTree = ""; }; D38327ED1580FE3A00FA0D23 /* dialer_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_default.png; path = Resources/dialer_default.png; sourceTree = ""; }; @@ -2040,6 +2059,7 @@ D31C9C97158A1CDE00756B45 /* UIHistoryCell.m */, D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */, D3E84F3C15B018A600420DAC /* UILinphone.h */, + D380800415C28A7A005BE9BC /* UILinphone.m */, D32409C1158B49A600C8C119 /* UILongTouchButton.h */, D32409C2158B49A600C8C119 /* UILongTouchButton.m */, D3ED3E841586291B006C0DE4 /* UIMainBar.h */, @@ -2203,7 +2223,6 @@ D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97323FDCFA39411CA2CEA /* Frameworks */, - D37DC6C31594AE5600B2A5EB /* InAppSettingsKit */, 220FAC77107654FC0068D98F /* include */, 2214783B1386A2030020F8B8 /* Localizable.strings */, 29B97315FDCFA39411CA2CEA /* Other Sources */, @@ -2511,8 +2530,10 @@ isa = PBXGroup; children = ( D38935F715A6D06800A3A3AA /* CPAnimation */, + D3807FB615C28940005BE9BC /* DCRoundSwitch */, D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */, D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */, + D3807FC715C2894A005BE9BC /* InAppSettingsKit */, D326483615887D5200930C67 /* OrderedDictionary.h */, D326483715887D5200930C67 /* OrderedDictionary.m */, D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */, @@ -2533,67 +2554,81 @@ name = Model; sourceTree = ""; }; - D37DC6C31594AE5600B2A5EB /* InAppSettingsKit */ = { + D3807FB615C28940005BE9BC /* DCRoundSwitch */ = { isa = PBXGroup; children = ( - D37DC6C41594AE6F00B2A5EB /* Controllers */, - D37DC6CC1594AE6F00B2A5EB /* Models */, - D37DC6D71594AE6F00B2A5EB /* Views */, + D3807FB715C28940005BE9BC /* DCRoundSwitch.h */, + D3807FB815C28940005BE9BC /* DCRoundSwitch.m */, + D3807FB915C28940005BE9BC /* DCRoundSwitchKnobLayer.h */, + D3807FBA15C28940005BE9BC /* DCRoundSwitchKnobLayer.m */, + D3807FBB15C28940005BE9BC /* DCRoundSwitchOutlineLayer.h */, + D3807FBC15C28940005BE9BC /* DCRoundSwitchOutlineLayer.m */, + D3807FBD15C28940005BE9BC /* DCRoundSwitchToggleLayer.h */, + D3807FBE15C28940005BE9BC /* DCRoundSwitchToggleLayer.m */, + ); + name = DCRoundSwitch; + path = Utils/DCRoundSwitch; + sourceTree = ""; + }; + D3807FC715C2894A005BE9BC /* InAppSettingsKit */ = { + isa = PBXGroup; + children = ( + D3807FC815C2894A005BE9BC /* Controllers */, + D3807FD015C2894A005BE9BC /* Models */, + D3807FDB15C2894A005BE9BC /* Views */, ); name = InAppSettingsKit; + path = Utils/InAppSettingsKit; sourceTree = ""; }; - D37DC6C41594AE6F00B2A5EB /* Controllers */ = { + D3807FC815C2894A005BE9BC /* Controllers */ = { isa = PBXGroup; children = ( - D37DC6C51594AE6F00B2A5EB /* IASKAppSettingsViewController.h */, - D37DC6C61594AE6F00B2A5EB /* IASKAppSettingsViewController.m */, - D37DC6C71594AE6F00B2A5EB /* IASKAppSettingsWebViewController.h */, - D37DC6C81594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m */, - D37DC6C91594AE6F00B2A5EB /* IASKSpecifierValuesViewController.h */, - D37DC6CA1594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m */, - D37DC6CB1594AE6F00B2A5EB /* IASKViewController.h */, + D3807FC915C2894A005BE9BC /* IASKAppSettingsViewController.h */, + D3807FCA15C2894A005BE9BC /* IASKAppSettingsViewController.m */, + D3807FCB15C2894A005BE9BC /* IASKAppSettingsWebViewController.h */, + D3807FCC15C2894A005BE9BC /* IASKAppSettingsWebViewController.m */, + D3807FCD15C2894A005BE9BC /* IASKSpecifierValuesViewController.h */, + D3807FCE15C2894A005BE9BC /* IASKSpecifierValuesViewController.m */, + D3807FCF15C2894A005BE9BC /* IASKViewController.h */, ); - name = Controllers; - path = InAppSettingsKit/Controllers; + path = Controllers; sourceTree = ""; }; - D37DC6CC1594AE6F00B2A5EB /* Models */ = { + D3807FD015C2894A005BE9BC /* Models */ = { isa = PBXGroup; children = ( - D37DC6CD1594AE6F00B2A5EB /* IASKSettingsReader.h */, - D37DC6CE1594AE6F00B2A5EB /* IASKSettingsReader.m */, - D37DC6CF1594AE6F00B2A5EB /* IASKSettingsStore.h */, - D37DC6D01594AE6F00B2A5EB /* IASKSettingsStore.m */, - D37DC6D11594AE6F00B2A5EB /* IASKSettingsStoreFile.h */, - D37DC6D21594AE6F00B2A5EB /* IASKSettingsStoreFile.m */, - D37DC6D31594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.h */, - D37DC6D41594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m */, - D37DC6D51594AE6F00B2A5EB /* IASKSpecifier.h */, - D37DC6D61594AE6F00B2A5EB /* IASKSpecifier.m */, + D3807FD115C2894A005BE9BC /* IASKSettingsReader.h */, + D3807FD215C2894A005BE9BC /* IASKSettingsReader.m */, + D3807FD315C2894A005BE9BC /* IASKSettingsStore.h */, + D3807FD415C2894A005BE9BC /* IASKSettingsStore.m */, + D3807FD515C2894A005BE9BC /* IASKSettingsStoreFile.h */, + D3807FD615C2894A005BE9BC /* IASKSettingsStoreFile.m */, + D3807FD715C2894A005BE9BC /* IASKSettingsStoreUserDefaults.h */, + D3807FD815C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m */, + D3807FD915C2894A005BE9BC /* IASKSpecifier.h */, + D3807FDA15C2894A005BE9BC /* IASKSpecifier.m */, ); - name = Models; - path = InAppSettingsKit/Models; + path = Models; sourceTree = ""; }; - D37DC6D71594AE6F00B2A5EB /* Views */ = { + D3807FDB15C2894A005BE9BC /* Views */ = { isa = PBXGroup; children = ( - D37DC6D81594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.h */, - D37DC6D91594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m */, - D37DC6DA1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.h */, - D37DC6DB1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m */, - D37DC6DC1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.h */, - D37DC6DD1594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m */, - D37DC6E01594AE6F00B2A5EB /* IASKSlider.h */, - D37DC6E11594AE6F00B2A5EB /* IASKSlider.m */, - D37DC6E21594AE6F00B2A5EB /* IASKSwitch.h */, - D37DC6E31594AE6F00B2A5EB /* IASKSwitch.m */, - D37DC6E41594AE6F00B2A5EB /* IASKTextField.h */, - D37DC6E51594AE6F00B2A5EB /* IASKTextField.m */, + D3807FDC15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.h */, + D3807FDD15C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m */, + D3807FDE15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.h */, + D3807FDF15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m */, + D3807FE015C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.h */, + D3807FE115C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m */, + D3807FE215C2894A005BE9BC /* IASKSlider.h */, + D3807FE315C2894A005BE9BC /* IASKSlider.m */, + D3807FE415C2894A005BE9BC /* IASKSwitch.h */, + D3807FE515C2894A005BE9BC /* IASKSwitch.m */, + D3807FE615C2894A005BE9BC /* IASKTextField.h */, + D3807FE715C2894A005BE9BC /* IASKTextField.m */, ); - name = Views; - path = InAppSettingsKit/Views; + path = Views; sourceTree = ""; }; D38935F715A6D06800A3A3AA /* CPAnimation */ = { @@ -3395,20 +3430,6 @@ D35E7597159460580066B1C1 /* ChatViewController.m in Sources */, D35E759F159460B70066B1C1 /* SettingsViewController.m in Sources */, D37DC6C11594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */, - D37DC6ED1594AE6F00B2A5EB /* IASKAppSettingsViewController.m in Sources */, - D37DC6EF1594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m in Sources */, - D37DC6F11594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m in Sources */, - D37DC6F31594AE6F00B2A5EB /* IASKSettingsReader.m in Sources */, - D37DC6F51594AE6F00B2A5EB /* IASKSettingsStore.m in Sources */, - D37DC6F71594AE6F00B2A5EB /* IASKSettingsStoreFile.m in Sources */, - D37DC6F91594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m in Sources */, - D37DC6FB1594AE6F00B2A5EB /* IASKSpecifier.m in Sources */, - D37DC6FD1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m in Sources */, - D37DC6FF1594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m in Sources */, - D37DC7011594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */, - D37DC7051594AE6F00B2A5EB /* IASKSlider.m in Sources */, - D37DC7071594AE6F00B2A5EB /* IASKSwitch.m in Sources */, - D37DC7091594AE6F00B2A5EB /* IASKTextField.m in Sources */, D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */, D3EA540D1598528B0037DC6B /* ChatTableViewController.m in Sources */, D3EA5411159853750037DC6B /* UIChatCell.m in Sources */, @@ -3440,6 +3461,25 @@ D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D615B549B500513429 /* Utils.m in Sources */, D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, + D3807FBF15C28940005BE9BC /* DCRoundSwitch.m in Sources */, + D3807FC115C28940005BE9BC /* DCRoundSwitchKnobLayer.m in Sources */, + D3807FC315C28940005BE9BC /* DCRoundSwitchOutlineLayer.m in Sources */, + D3807FC515C28940005BE9BC /* DCRoundSwitchToggleLayer.m in Sources */, + D3807FE815C2894A005BE9BC /* IASKAppSettingsViewController.m in Sources */, + D3807FEA15C2894A005BE9BC /* IASKAppSettingsWebViewController.m in Sources */, + D3807FEC15C2894A005BE9BC /* IASKSpecifierValuesViewController.m in Sources */, + D3807FEE15C2894A005BE9BC /* IASKSettingsReader.m in Sources */, + D3807FF015C2894A005BE9BC /* IASKSettingsStore.m in Sources */, + D3807FF215C2894A005BE9BC /* IASKSettingsStoreFile.m in Sources */, + D3807FF415C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m in Sources */, + D3807FF615C2894A005BE9BC /* IASKSpecifier.m in Sources */, + D3807FF815C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m in Sources */, + D3807FFA15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m in Sources */, + D3807FFC15C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m in Sources */, + D3807FFE15C2894A005BE9BC /* IASKSlider.m in Sources */, + D380800015C2894A005BE9BC /* IASKSwitch.m in Sources */, + D380800215C2894A005BE9BC /* IASKTextField.m in Sources */, + D380800515C28A7A005BE9BC /* UILinphone.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3484,20 +3524,6 @@ D35E7598159460580066B1C1 /* ChatViewController.m in Sources */, D35E75A0159460B70066B1C1 /* SettingsViewController.m in Sources */, D37DC6C21594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */, - D37DC6EE1594AE6F00B2A5EB /* IASKAppSettingsViewController.m in Sources */, - D37DC6F01594AE6F00B2A5EB /* IASKAppSettingsWebViewController.m in Sources */, - D37DC6F21594AE6F00B2A5EB /* IASKSpecifierValuesViewController.m in Sources */, - D37DC6F41594AE6F00B2A5EB /* IASKSettingsReader.m in Sources */, - D37DC6F61594AE6F00B2A5EB /* IASKSettingsStore.m in Sources */, - D37DC6F81594AE6F00B2A5EB /* IASKSettingsStoreFile.m in Sources */, - D37DC6FA1594AE6F00B2A5EB /* IASKSettingsStoreUserDefaults.m in Sources */, - D37DC6FC1594AE6F00B2A5EB /* IASKSpecifier.m in Sources */, - D37DC6FE1594AE6F00B2A5EB /* IASKPSSliderSpecifierViewCell.m in Sources */, - D37DC7001594AE6F00B2A5EB /* IASKPSTextFieldSpecifierViewCell.m in Sources */, - D37DC7021594AE6F00B2A5EB /* IASKPSTitleValueSpecifierViewCell.m in Sources */, - D37DC7061594AE6F00B2A5EB /* IASKSlider.m in Sources */, - D37DC7081594AE6F00B2A5EB /* IASKSwitch.m in Sources */, - D37DC70A1594AE6F00B2A5EB /* IASKTextField.m in Sources */, D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */, D3EA540E1598528B0037DC6B /* ChatTableViewController.m in Sources */, D3EA5412159853750037DC6B /* UIChatCell.m in Sources */, @@ -3529,6 +3555,25 @@ D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D715B549B500513429 /* Utils.m in Sources */, D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, + D3807FC015C28940005BE9BC /* DCRoundSwitch.m in Sources */, + D3807FC215C28940005BE9BC /* DCRoundSwitchKnobLayer.m in Sources */, + D3807FC415C28940005BE9BC /* DCRoundSwitchOutlineLayer.m in Sources */, + D3807FC615C28940005BE9BC /* DCRoundSwitchToggleLayer.m in Sources */, + D3807FE915C2894A005BE9BC /* IASKAppSettingsViewController.m in Sources */, + D3807FEB15C2894A005BE9BC /* IASKAppSettingsWebViewController.m in Sources */, + D3807FED15C2894A005BE9BC /* IASKSpecifierValuesViewController.m in Sources */, + D3807FEF15C2894A005BE9BC /* IASKSettingsReader.m in Sources */, + D3807FF115C2894A005BE9BC /* IASKSettingsStore.m in Sources */, + D3807FF315C2894A005BE9BC /* IASKSettingsStoreFile.m in Sources */, + D3807FF515C2894A005BE9BC /* IASKSettingsStoreUserDefaults.m in Sources */, + D3807FF715C2894A005BE9BC /* IASKSpecifier.m in Sources */, + D3807FF915C2894A005BE9BC /* IASKPSSliderSpecifierViewCell.m in Sources */, + D3807FFB15C2894A005BE9BC /* IASKPSTextFieldSpecifierViewCell.m in Sources */, + D3807FFD15C2894A005BE9BC /* IASKPSTitleValueSpecifierViewCell.m in Sources */, + D3807FFF15C2894A005BE9BC /* IASKSlider.m in Sources */, + D380800115C2894A005BE9BC /* IASKSwitch.m in Sources */, + D380800315C2894A005BE9BC /* IASKTextField.m in Sources */, + D380800615C28A7A005BE9BC /* UILinphone.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From d452426fee13dc0b3a6faec8b06b576f7d0f4ebf Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 27 Jul 2012 12:07:05 +0200 Subject: [PATCH 082/397] Fix Color stuff for IOS4 --- Classes/LinphoneUI/UILinphone.h | 2 +- Classes/LinphoneUI/UILinphone.m | 74 +++++++++++---- Classes/SettingsViewController.m | 5 + Classes/Utils/ColorSpaceUtilites.m | 142 ++++++++++++++++++++++++++++ Classes/Utils/ColorSpaceUtilities.h | 14 +++ linphone.xcodeproj/project.pbxproj | 8 ++ 6 files changed, 227 insertions(+), 18 deletions(-) create mode 100644 Classes/Utils/ColorSpaceUtilites.m create mode 100644 Classes/Utils/ColorSpaceUtilities.h diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h index 7eec97b7a..ae4232c73 100644 --- a/Classes/LinphoneUI/UILinphone.h +++ b/Classes/LinphoneUI/UILinphone.h @@ -26,7 +26,7 @@ - (UIColor *)adjustHue:(float)hm saturation:(float)sm brightness:(float)bm alpha:(float)am; -- (UIColor *)multColor:(float)mult; +- (UIColor *)lumColor:(float)mult; - (UIColor *)lighterColor; diff --git a/Classes/LinphoneUI/UILinphone.m b/Classes/LinphoneUI/UILinphone.m index 0c151bf99..595b27cd9 100644 --- a/Classes/LinphoneUI/UILinphone.m +++ b/Classes/LinphoneUI/UILinphone.m @@ -18,35 +18,75 @@ */ #import "UILinphone.h" +#import "ColorSpaceUtilities.h" +#import "Utils.h" @implementation UIColor (LightAndDark) -- (UIColor *)multColor:(float)mult { - float h, s, b, a; - if ([self getHue:&h saturation:&s brightness:&b alpha:&a]) - return [UIColor colorWithHue:h - saturation:s - brightness:MIN(MAX(b * mult, 0.0), 1.0) - alpha:a]; - return nil; +- (UIColor *)lumColor:(float)mult { + float hsbH, hsbS, hsbB; + float rgbaR, rgbaG, rgbaB, rgbaA; + + // Get RGB + CGColorRef cgColor = [self CGColor]; + CGColorSpaceRef cgColorSpace = CGColorGetColorSpace(cgColor); + if(CGColorSpaceGetModel(cgColorSpace) != kCGColorSpaceModelRGB) { + [LinphoneLogger log:LinphoneLoggerWarning format:@"Can't convert not RGB color"]; + return self; + } else { + const float *colors = CGColorGetComponents(cgColor); + rgbaR = colors[0]; + rgbaG = colors[1]; + rgbaB = colors[2]; + rgbaA = CGColorGetAlpha(cgColor); + } + + RGB2HSL(rgbaR, rgbaG, rgbaB, &hsbH, &hsbS, &hsbB); + + hsbB = MIN(MAX(hsbB * mult, 0.0), 1.0); + + HSL2RGB(hsbH, hsbS, hsbB, &rgbaR, &rgbaG, &rgbaB); + + return [UIColor colorWithRed:rgbaR green:rgbaG blue:rgbaB alpha:rgbaA]; } - (UIColor *)adjustHue:(float)hm saturation:(float)sm brightness:(float)bm alpha:(float)am { - float h, s, b, a; - if ([self getHue:&h saturation:&s brightness:&b alpha:&a]) - return [UIColor colorWithHue:MIN(MAX(h + hm, 0.0), 1.0) - saturation:MIN(MAX(s + sm, 0.0), 1.0) - brightness:MIN(MAX(b + bm, 0.0), 1.0) - alpha:MIN(MAX(a + am, 0.0), 1.0)]; - return nil; + float hsbH, hsbS, hsbB; + float rgbaR, rgbaG, rgbaB, rgbaA; + + + // Get RGB + CGColorRef cgColor = [self CGColor]; + CGColorSpaceRef cgColorSpace = CGColorGetColorSpace(cgColor); + if(CGColorSpaceGetModel(cgColorSpace) != kCGColorSpaceModelRGB) { + [LinphoneLogger log:LinphoneLoggerWarning format:@"Can't convert not RGB color"]; + return self; + } else { + const float *colors = CGColorGetComponents(cgColor); + rgbaR = colors[0]; + rgbaG = colors[1]; + rgbaB = colors[2]; + rgbaA = CGColorGetAlpha(cgColor); + } + + RGB2HSL(rgbaR, rgbaG, rgbaB, &hsbH, &hsbS, &hsbB); + + hsbH = MIN(MAX(hsbH + hm, 0.0), 1.0); + hsbS = MIN(MAX(hsbS + sm, 0.0), 1.0); + hsbB = MIN(MAX(hsbB + bm, 0.0), 1.0); + rgbaA = MIN(MAX(rgbaA + am, 0.0), 1.0); + + HSL2RGB(hsbH, hsbS, hsbB, &rgbaR, &rgbaG, &rgbaB); + + return [UIColor colorWithRed:rgbaR green:rgbaG blue:rgbaB alpha:rgbaA]; } - (UIColor *)lighterColor { - return [self multColor:1.3]; + return [self lumColor:1.3]; } - (UIColor *)darkerColor { - return [self multColor:0.75]; + return [self lumColor:0.75]; } @end \ No newline at end of file diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 8580eec38..be5ae481e 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -126,6 +126,11 @@ return self; } +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [super tableView:tableView didSelectRowAtIndexPath:indexPath]; + [tableView deselectRowAtIndexPath:indexPath animated:YES]; // Fix IOS4 issue +} + - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell * cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; diff --git a/Classes/Utils/ColorSpaceUtilites.m b/Classes/Utils/ColorSpaceUtilites.m new file mode 100644 index 000000000..5f845a428 --- /dev/null +++ b/Classes/Utils/ColorSpaceUtilites.m @@ -0,0 +1,142 @@ +/* + ColorConverter + + you can use it to convert color from RGB space to HSL space and back. + + HSL2RGB copied from GLPaint Apple sample: http://developer.apple.com/library/ios/#samplecode/GLPaint/Introduction/Intro.html + + RGB2HSL translated from http://www.geekymonkey.com/Programming/CSharp/RGB2HSL_HSL2RGB.htm + + From: https://github.com/alessani/ColorConverter + */ + +void HSL2RGB(float h, float s, float l, float* outR, float* outG, float* outB) +{ + float temp1, + temp2; + float temp[3]; + int i; + + // Check for saturation. If there isn't any just return the luminance value for each, which results in gray. + if(s == 0.0) { + if(outR) + *outR = l; + if(outG) + *outG = l; + if(outB) + *outB = l; + return; + } + + // Test for luminance and compute temporary values based on luminance and saturation + if(l < 0.5) + temp2 = l * (1.0 + s); + else + temp2 = l + s - l * s; + temp1 = 2.0 * l - temp2; + + // Compute intermediate values based on hue + temp[0] = h + 1.0 / 3.0; + temp[1] = h; + temp[2] = h - 1.0 / 3.0; + + for(i = 0; i < 3; ++i) { + + // Adjust the range + if(temp[i] < 0.0) + temp[i] += 1.0; + if(temp[i] > 1.0) + temp[i] -= 1.0; + + + if(6.0 * temp[i] < 1.0) + temp[i] = temp1 + (temp2 - temp1) * 6.0 * temp[i]; + else { + if(2.0 * temp[i] < 1.0) + temp[i] = temp2; + else { + if(3.0 * temp[i] < 2.0) + temp[i] = temp1 + (temp2 - temp1) * ((2.0 / 3.0) - temp[i]) * 6.0; + else + temp[i] = temp1; + } + } + } + + // Assign temporary values to R, G, B + if(outR) + *outR = temp[0]; + if(outG) + *outG = temp[1]; + if(outB) + *outB = temp[2]; +} + + +void RGB2HSL(float r, float g, float b, float* outH, float* outS, float* outL) +{ + /*r = r/255.0f; + g = g/255.0f; + b = b/255.0f;*/ + + + float h,s, l, v, m, vm, r2, g2, b2; + + h = 0; + s = 0; + l = 0; + + v = MAX(r, g); + v = MAX(v, b); + m = MIN(r, g); + m = MIN(m, b); + + l = (m+v)/2.0f; + + if (l <= 0.0){ + if(outH) + *outH = h; + if(outS) + *outS = s; + if(outL) + *outL = l; + return; + } + + vm = v - m; + s = vm; + + if (s > 0.0f){ + s/= (l <= 0.5f) ? (v + m) : (2.0 - v - m); + }else{ + if(outH) + *outH = h; + if(outS) + *outS = s; + if(outL) + *outL = l; + return; + } + + r2 = (v - r)/vm; + g2 = (v - g)/vm; + b2 = (v - b)/vm; + + if (r == v){ + h = (g == m ? 5.0f + b2 : 1.0f - g2); + }else if (g == v){ + h = (b == m ? 1.0f + r2 : 3.0 - b2); + }else{ + h = (r == m ? 3.0f + g2 : 5.0f - r2); + } + + h/=6.0f; + + if(outH) + *outH = h; + if(outS) + *outS = s; + if(outL) + *outL = l; + +} \ No newline at end of file diff --git a/Classes/Utils/ColorSpaceUtilities.h b/Classes/Utils/ColorSpaceUtilities.h new file mode 100644 index 000000000..7f2ff1b70 --- /dev/null +++ b/Classes/Utils/ColorSpaceUtilities.h @@ -0,0 +1,14 @@ +/* + ColorConverter + + you can use it to convert color from RGB space to HSL space and back. + + HSL2RGB copied from GLPaint Apple sample: http://developer.apple.com/library/ios/#samplecode/GLPaint/Introduction/Intro.html + + RGB2HSL translated from http://www.geekymonkey.com/Programming/CSharp/RGB2HSL_HSL2RGB.htm + + From: https://github.com/alessani/ColorConverter +*/ + +void HSL2RGB(float h, float s, float l, float* outR, float* outG, float* outB); +void RGB2HSL(float r, float g, float b, float* outH, float* outS, float* outL); \ No newline at end of file diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index b0ec8549a..34c686e93 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -644,6 +644,8 @@ D380800315C2894A005BE9BC /* IASKTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FE715C2894A005BE9BC /* IASKTextField.m */; }; D380800515C28A7A005BE9BC /* UILinphone.m in Sources */ = {isa = PBXBuildFile; fileRef = D380800415C28A7A005BE9BC /* UILinphone.m */; }; D380800615C28A7A005BE9BC /* UILinphone.m in Sources */ = {isa = PBXBuildFile; fileRef = D380800415C28A7A005BE9BC /* UILinphone.m */; }; + D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */ = {isa = PBXBuildFile; fileRef = D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */; }; + D380801415C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */ = {isa = PBXBuildFile; fileRef = D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */; }; D38327F31580FE3A00FA0D23 /* contacts_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EB1580FE3A00FA0D23 /* contacts_default.png */; }; D38327F41580FE3A00FA0D23 /* contacts_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EC1580FE3A00FA0D23 /* contacts_selected.png */; }; D38327F51580FE3A00FA0D23 /* dialer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327ED1580FE3A00FA0D23 /* dialer_default.png */; }; @@ -1403,6 +1405,8 @@ D3807FE615C2894A005BE9BC /* IASKTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IASKTextField.h; sourceTree = ""; }; D3807FE715C2894A005BE9BC /* IASKTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IASKTextField.m; sourceTree = ""; }; D380800415C28A7A005BE9BC /* UILinphone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UILinphone.m; sourceTree = ""; }; + D380801115C29984005BE9BC /* ColorSpaceUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ColorSpaceUtilities.h; path = Utils/ColorSpaceUtilities.h; sourceTree = ""; }; + D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ColorSpaceUtilites.m; path = Utils/ColorSpaceUtilites.m; sourceTree = ""; }; D38327EB1580FE3A00FA0D23 /* contacts_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_default.png; path = Resources/contacts_default.png; sourceTree = ""; }; D38327EC1580FE3A00FA0D23 /* contacts_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_selected.png; path = Resources/contacts_selected.png; sourceTree = ""; }; D38327ED1580FE3A00FA0D23 /* dialer_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_default.png; path = Resources/dialer_default.png; sourceTree = ""; }; @@ -2529,6 +2533,8 @@ D326483415887D4400930C67 /* Utils */ = { isa = PBXGroup; children = ( + D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */, + D380801115C29984005BE9BC /* ColorSpaceUtilities.h */, D38935F715A6D06800A3A3AA /* CPAnimation */, D3807FB615C28940005BE9BC /* DCRoundSwitch */, D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */, @@ -3480,6 +3486,7 @@ D380800015C2894A005BE9BC /* IASKSwitch.m in Sources */, D380800215C2894A005BE9BC /* IASKTextField.m in Sources */, D380800515C28A7A005BE9BC /* UILinphone.m in Sources */, + D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3574,6 +3581,7 @@ D380800115C2894A005BE9BC /* IASKSwitch.m in Sources */, D380800315C2894A005BE9BC /* IASKTextField.m in Sources */, D380800615C28A7A005BE9BC /* UILinphone.m in Sources */, + D380801415C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 332ab5e4ee164ff48f9c13e8dd0c9b7d9530e0d1 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 27 Jul 2012 12:15:44 +0200 Subject: [PATCH 083/397] Hide about/quit button in setting view --- Classes/SettingsViewController.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index be5ae481e..14c9fbefe 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -383,6 +383,9 @@ static UICompositeViewDescription *compositeDescription = nil; } NSMutableSet *hiddenKeys = [NSMutableSet set]; + [hiddenKeys addObject:@"quit_button"]; // Hide for the moment + [hiddenKeys addObject:@"about_button"]; // Hide for the moment + if (!linphone_core_video_supported([LinphoneManager getLc])) [hiddenKeys addObject:@"video_menu"]; From 3e75e3fd629be33fa8d3891bae76fc9ea2b4cd7f Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 27 Jul 2012 14:04:03 +0200 Subject: [PATCH 084/397] Add landscape option --- Classes/LinphoneCoreSettingsStore.m | 4 +++ .../LinphoneUI/UICompositeViewController.m | 7 ++--- Classes/SettingsViewController.m | 31 +++++++++++++++++++ Settings/InAppSettings.bundle/Advanced.plist | 10 ++++++ 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 104bd95d7..d75a6aefe 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -176,6 +176,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } [self setString:val forKey:@"media_encryption_preference"]; } + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","landscape_preference", 1) forKey:@"landscape_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","enable_first_login_view_preference", 0) forKey:@"enable_first_login_view_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference", 0) forKey:@"debugenable_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference", 0) forKey:@"check_config_disable_preference"]; @@ -448,6 +449,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); BOOL firstloginview = [self boolForKey:@"enable_first_login_view_preference"]; lp_config_set_int(linphone_core_get_config(lc),"app","enable_first_login_view_preference", firstloginview); + BOOL landscape = [self boolForKey:@"landscape_preference"]; + lp_config_set_int(linphone_core_get_config(lc),"app","landscape_preference", landscape); + BOOL debugmode = [self boolForKey:@"debugenable_preference"]; lp_config_set_int(linphone_core_get_config(lc),"app","debugenable_preference", debugmode); if (debugmode) linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler); diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 578224e03..547de4cb0 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -201,16 +201,15 @@ } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - if(currentViewDescription != nil) { + if(currentViewDescription != nil && [[LinphoneManager instance].settingsStore boolForKey:@"landscape_preference"]) { if (UIInterfaceOrientationIsPortrait(interfaceOrientation) && [currentViewDescription portraitMode]) { return YES; } if (UIInterfaceOrientationIsLandscape(interfaceOrientation) && [currentViewDescription landscapeMode]) { return YES; } - return NO; } - return YES; + return NO; } @@ -254,7 +253,7 @@ } - (UIInterfaceOrientation)getCorrectInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - if(currentViewDescription != nil) { + if(currentViewDescription != nil && [[LinphoneManager instance].settingsStore boolForKey:@"landscape_preference"]) { if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) { if ([currentViewDescription portraitMode]) { return interfaceOrientation; diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 14c9fbefe..72c09b0a3 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -95,12 +95,43 @@ [((IASKSwitchEx*)cell.accessoryView) addTarget:self action:@selector(toggledValue:) forControlEvents:UIControlEventValueChanged]; [((IASKSwitchEx*)cell.accessoryView) setOnTintColor:LINPHONE_MAIN_COLOR]; cell.selectionStyle = UITableViewCellSelectionStyleNone; + cell.textLabel.minimumFontSize = kIASKMinimumFontSize; + cell.detailTextLabel.minimumFontSize = kIASKMinimumFontSize; } else { cell = [super newCellForIdentifier:identifier]; } return cell; } +- (void)toggledValue:(id)sender { + IASKSwitchEx *toggle = [[(IASKSwitchEx*)sender retain] autorelease]; + IASKSpecifier *spec = [_settingsReader specifierForKey:[toggle key]]; + + if ([toggle isOn]) { + if ([spec trueValue] != nil) { + [self.settingsStore setObject:[spec trueValue] forKey:[toggle key]]; + } + else { + [self.settingsStore setBool:YES forKey:[toggle key]]; + } + } + else { + if ([spec falseValue] != nil) { + [self.settingsStore setObject:[spec falseValue] forKey:[toggle key]]; + } + else { + [self.settingsStore setBool:NO forKey:[toggle key]]; + } + } + // Start notification after animation of DCRoundSwitch + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:kIASKAppSettingChanged + object:[toggle key] + userInfo:[NSDictionary dictionaryWithObject:[self.settingsStore objectForKey:[toggle key]] + forKey:[toggle key]]]; + }); +} + - (void)initIASKAppSettingsViewControllerEx { // Force kIASKSpecifierValuesViewControllerIndex static int kIASKSpecifierValuesViewControllerIndex = 0; diff --git a/Settings/InAppSettings.bundle/Advanced.plist b/Settings/InAppSettings.bundle/Advanced.plist index 787a4bbc0..6bec34682 100644 --- a/Settings/InAppSettings.bundle/Advanced.plist +++ b/Settings/InAppSettings.bundle/Advanced.plist @@ -14,6 +14,16 @@ Type PSToggleSwitchSpecifier + + DefaultValue + + Key + landscape_preference + Title + Landscape + Type + PSToggleSwitchSpecifier + DefaultValue From 11a2fba54005fc05959f859be4da97113372d445 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 27 Jul 2012 15:09:12 +0200 Subject: [PATCH 085/397] Cached avatar in contacts list --- Classes/ContactsTableViewController.h | 1 + Classes/ContactsTableViewController.m | 25 ++++++++++++++++++++++--- Classes/LinphoneUI/UIContactCell.m | 4 ++-- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/Classes/ContactsTableViewController.h b/Classes/ContactsTableViewController.h index 529a97d07..fa63b5fbd 100644 --- a/Classes/ContactsTableViewController.h +++ b/Classes/ContactsTableViewController.h @@ -24,6 +24,7 @@ @interface ContactsTableViewController : UITableViewController { OrderedDictionary* addressBookMap; + NSMutableDictionary* avatarMap; ABAddressBookRef addressBook; } diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index d0c4d935c..506e0003d 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -31,6 +31,7 @@ - (void)initContactsTableViewController { addressBookMap = [[OrderedDictionary alloc] init]; + avatarMap = [[NSMutableDictionary alloc] init]; addressBook = ABAddressBookCreate(); ABAddressBookRegisterExternalChangeCallback(addressBook, sync_address_book, self); @@ -56,6 +57,9 @@ ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, self); CFRelease(addressBook); [addressBookMap removeAllObjects]; + [addressBookMap release]; + [avatarMap removeAllObjects]; + [avatarMap release]; [super dealloc]; } @@ -68,6 +72,7 @@ // Reset Address book [addressBookMap removeAllObjects]; + [avatarMap removeAllObjects]; NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); for (id lPerson in lContacts) { @@ -78,7 +83,7 @@ for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); if(CFDictionaryContainsKey(lDict, @"service")) { - if(CFStringCompare((CFStringRef)@"SIP", CFDictionaryGetValue(lDict, @"service"), kCFCompareCaseInsensitive) == 0) { + if(CFStringCompare((CFStringRef)@"SIP", CFDictionaryGetValue(lDict, @"service"), kCFCompareCaseInsensitive) == 0) { add = true; } } else { @@ -126,7 +131,7 @@ } } CFRelease(lContacts); - } + } [self.tableView reloadData]; } @@ -136,7 +141,6 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf [controller loadData]; } - #pragma mark - ViewController Functions - (void)viewWillDisappear:(BOOL)animated { @@ -169,6 +173,21 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf NSString *key = [[subDic allKeys] objectAtIndex:[indexPath row]]; ABRecordRef contact = [subDic objectForKey:key]; + + // Cached avatar + UIImage *image = nil; + id data = [avatarMap objectForKey:[NSNumber numberWithInt: ABRecordGetRecordID(contact)]]; + if(data == nil) { + image = [FastAddressBook getContactImage:contact thumbnail:true]; + [avatarMap setObject:image forKey:[NSNumber numberWithInt: ABRecordGetRecordID(contact)]]; + } else if(data != [NSNull null]) { + image = data; + } + if(image == nil) { + image = [UIImage imageNamed:@"avatar_unknown_small.png"]; + } + [[cell avatarImage] setImage:image]; + [cell setContact: contact]; return cell; } diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index aa203fc6e..2f1374df1 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -101,11 +101,11 @@ CFRelease(lFirstName); // Avatar - UIImage *image = [FastAddressBook getContactImage:contact thumbnail:true]; + /*UIImage *image = [FastAddressBook getContactImage:contact thumbnail:true]; if(image == nil) { image = [UIImage imageNamed:@"avatar_unknown_small.png"]; } - [avatarImage setImage:image]; + [avatarImage setImage:image];*/ // // Adapt size From 4cd3a09dd57ea5c72947fa4ea363d0ea4a0e8bdf Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 27 Jul 2012 15:17:01 +0200 Subject: [PATCH 086/397] Move NinePatch to Utils path --- .../Utils/NinePatch}/NinePatch.h | 0 .../NinePatch.xcodeproj/project.pbxproj | 0 .../Utils/NinePatch}/NinePatch_Prefix.pch | 0 .../Utils/NinePatch}/TUCachingNinePatch.h | 0 .../Utils/NinePatch}/TUCachingNinePatch.m | 0 .../NinePatch}/TUDebugLoggingAssistant.h | 0 .../NinePatch}/TUDebugLoggingAssistant.m | 0 .../Utils/NinePatch}/TUFullNinePatch.h | 0 .../Utils/NinePatch}/TUFullNinePatch.m | 0 .../Utils/NinePatch}/TUHorizontalNinePatch.h | 0 .../Utils/NinePatch}/TUHorizontalNinePatch.m | 0 .../Utils/NinePatch}/TUNinePatch.h | 0 .../Utils/NinePatch}/TUNinePatch.m | 0 .../Utils/NinePatch}/TUNinePatchCache.h | 0 .../Utils/NinePatch}/TUNinePatchCache.m | 0 .../NinePatch}/TUNinePatchCachingCategories.h | 0 .../NinePatch}/TUNinePatchCachingCategories.m | 0 .../Utils/NinePatch}/TUNinePatchProtocols.h | 0 .../Utils/NinePatch}/TUVerticalNinePatch.h | 0 .../Utils/NinePatch}/TUVerticalNinePatch.m | 0 .../Utils/NinePatch}/UIImage-TUNinePatch.h | 0 .../Utils/NinePatch}/UIImage-TUNinePatch.m | 0 linphone.xcodeproj/project.pbxproj | 82 +++++++++---------- 23 files changed, 39 insertions(+), 43 deletions(-) rename {NinePatch => Classes/Utils/NinePatch}/NinePatch.h (100%) rename {NinePatch => Classes/Utils/NinePatch}/NinePatch.xcodeproj/project.pbxproj (100%) rename {NinePatch => Classes/Utils/NinePatch}/NinePatch_Prefix.pch (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUCachingNinePatch.h (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUCachingNinePatch.m (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUDebugLoggingAssistant.h (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUDebugLoggingAssistant.m (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUFullNinePatch.h (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUFullNinePatch.m (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUHorizontalNinePatch.h (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUHorizontalNinePatch.m (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUNinePatch.h (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUNinePatch.m (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUNinePatchCache.h (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUNinePatchCache.m (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUNinePatchCachingCategories.h (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUNinePatchCachingCategories.m (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUNinePatchProtocols.h (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUVerticalNinePatch.h (100%) rename {NinePatch => Classes/Utils/NinePatch}/TUVerticalNinePatch.m (100%) rename {NinePatch => Classes/Utils/NinePatch}/UIImage-TUNinePatch.h (100%) rename {NinePatch => Classes/Utils/NinePatch}/UIImage-TUNinePatch.m (100%) diff --git a/NinePatch/NinePatch.h b/Classes/Utils/NinePatch/NinePatch.h similarity index 100% rename from NinePatch/NinePatch.h rename to Classes/Utils/NinePatch/NinePatch.h diff --git a/NinePatch/NinePatch.xcodeproj/project.pbxproj b/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj similarity index 100% rename from NinePatch/NinePatch.xcodeproj/project.pbxproj rename to Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj diff --git a/NinePatch/NinePatch_Prefix.pch b/Classes/Utils/NinePatch/NinePatch_Prefix.pch similarity index 100% rename from NinePatch/NinePatch_Prefix.pch rename to Classes/Utils/NinePatch/NinePatch_Prefix.pch diff --git a/NinePatch/TUCachingNinePatch.h b/Classes/Utils/NinePatch/TUCachingNinePatch.h similarity index 100% rename from NinePatch/TUCachingNinePatch.h rename to Classes/Utils/NinePatch/TUCachingNinePatch.h diff --git a/NinePatch/TUCachingNinePatch.m b/Classes/Utils/NinePatch/TUCachingNinePatch.m similarity index 100% rename from NinePatch/TUCachingNinePatch.m rename to Classes/Utils/NinePatch/TUCachingNinePatch.m diff --git a/NinePatch/TUDebugLoggingAssistant.h b/Classes/Utils/NinePatch/TUDebugLoggingAssistant.h similarity index 100% rename from NinePatch/TUDebugLoggingAssistant.h rename to Classes/Utils/NinePatch/TUDebugLoggingAssistant.h diff --git a/NinePatch/TUDebugLoggingAssistant.m b/Classes/Utils/NinePatch/TUDebugLoggingAssistant.m similarity index 100% rename from NinePatch/TUDebugLoggingAssistant.m rename to Classes/Utils/NinePatch/TUDebugLoggingAssistant.m diff --git a/NinePatch/TUFullNinePatch.h b/Classes/Utils/NinePatch/TUFullNinePatch.h similarity index 100% rename from NinePatch/TUFullNinePatch.h rename to Classes/Utils/NinePatch/TUFullNinePatch.h diff --git a/NinePatch/TUFullNinePatch.m b/Classes/Utils/NinePatch/TUFullNinePatch.m similarity index 100% rename from NinePatch/TUFullNinePatch.m rename to Classes/Utils/NinePatch/TUFullNinePatch.m diff --git a/NinePatch/TUHorizontalNinePatch.h b/Classes/Utils/NinePatch/TUHorizontalNinePatch.h similarity index 100% rename from NinePatch/TUHorizontalNinePatch.h rename to Classes/Utils/NinePatch/TUHorizontalNinePatch.h diff --git a/NinePatch/TUHorizontalNinePatch.m b/Classes/Utils/NinePatch/TUHorizontalNinePatch.m similarity index 100% rename from NinePatch/TUHorizontalNinePatch.m rename to Classes/Utils/NinePatch/TUHorizontalNinePatch.m diff --git a/NinePatch/TUNinePatch.h b/Classes/Utils/NinePatch/TUNinePatch.h similarity index 100% rename from NinePatch/TUNinePatch.h rename to Classes/Utils/NinePatch/TUNinePatch.h diff --git a/NinePatch/TUNinePatch.m b/Classes/Utils/NinePatch/TUNinePatch.m similarity index 100% rename from NinePatch/TUNinePatch.m rename to Classes/Utils/NinePatch/TUNinePatch.m diff --git a/NinePatch/TUNinePatchCache.h b/Classes/Utils/NinePatch/TUNinePatchCache.h similarity index 100% rename from NinePatch/TUNinePatchCache.h rename to Classes/Utils/NinePatch/TUNinePatchCache.h diff --git a/NinePatch/TUNinePatchCache.m b/Classes/Utils/NinePatch/TUNinePatchCache.m similarity index 100% rename from NinePatch/TUNinePatchCache.m rename to Classes/Utils/NinePatch/TUNinePatchCache.m diff --git a/NinePatch/TUNinePatchCachingCategories.h b/Classes/Utils/NinePatch/TUNinePatchCachingCategories.h similarity index 100% rename from NinePatch/TUNinePatchCachingCategories.h rename to Classes/Utils/NinePatch/TUNinePatchCachingCategories.h diff --git a/NinePatch/TUNinePatchCachingCategories.m b/Classes/Utils/NinePatch/TUNinePatchCachingCategories.m similarity index 100% rename from NinePatch/TUNinePatchCachingCategories.m rename to Classes/Utils/NinePatch/TUNinePatchCachingCategories.m diff --git a/NinePatch/TUNinePatchProtocols.h b/Classes/Utils/NinePatch/TUNinePatchProtocols.h similarity index 100% rename from NinePatch/TUNinePatchProtocols.h rename to Classes/Utils/NinePatch/TUNinePatchProtocols.h diff --git a/NinePatch/TUVerticalNinePatch.h b/Classes/Utils/NinePatch/TUVerticalNinePatch.h similarity index 100% rename from NinePatch/TUVerticalNinePatch.h rename to Classes/Utils/NinePatch/TUVerticalNinePatch.h diff --git a/NinePatch/TUVerticalNinePatch.m b/Classes/Utils/NinePatch/TUVerticalNinePatch.m similarity index 100% rename from NinePatch/TUVerticalNinePatch.m rename to Classes/Utils/NinePatch/TUVerticalNinePatch.m diff --git a/NinePatch/UIImage-TUNinePatch.h b/Classes/Utils/NinePatch/UIImage-TUNinePatch.h similarity index 100% rename from NinePatch/UIImage-TUNinePatch.h rename to Classes/Utils/NinePatch/UIImage-TUNinePatch.h diff --git a/NinePatch/UIImage-TUNinePatch.m b/Classes/Utils/NinePatch/UIImage-TUNinePatch.m similarity index 100% rename from NinePatch/UIImage-TUNinePatch.m rename to Classes/Utils/NinePatch/UIImage-TUNinePatch.m diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 34c686e93..b62cd89b5 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -220,7 +220,6 @@ D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; }; D347347E1580E5F8003C7B8C /* history_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347C1580E5F8003C7B8C /* history_default.png */; }; D347347F1580E5F8003C7B8C /* history_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history_selected.png */; }; - D34BD61415C13A540070C209 /* libNinePatch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D389363215A6D3C500A3A3AA /* libNinePatch.a */; }; D34BD61515C13B7B0070C209 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D32B6E2E15A5C0AC0033019F /* libsqlite3.dylib */; }; D34BD61815C13D0B0070C209 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; }; D34BD61915C13D0B0070C209 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; }; @@ -662,7 +661,6 @@ D389362715A6D19800A3A3AA /* CPAnimationSequence.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362315A6D19800A3A3AA /* CPAnimationSequence.m */; }; D389362815A6D19800A3A3AA /* CPAnimationStep.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362515A6D19800A3A3AA /* CPAnimationStep.m */; }; D389362915A6D19800A3A3AA /* CPAnimationStep.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362515A6D19800A3A3AA /* CPAnimationStep.m */; }; - D389363515A6D40000A3A3AA /* libNinePatch.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D389363215A6D3C500A3A3AA /* libNinePatch.a */; }; D389363915A6D53200A3A3AA /* chat_bubble_incoming.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */; }; D389363B15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */; }; D38D14AF15A30B3D008497E8 /* cell_call_first_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */; }; @@ -871,23 +869,23 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - D34BD61215C139D90070C209 /* PBXContainerItemProxy */ = { + D3B90E1815C2CB5800F64F8C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */; - proxyType = 1; - remoteGlobalIDString = D2AAC07D0554694100DB518D; - remoteInfo = NinePatch; - }; - D389363115A6D3C500A3A3AA /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */; + containerPortal = D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */; proxyType = 2; remoteGlobalIDString = D2AAC07E0554694100DB518D; remoteInfo = NinePatch; }; - D389363315A6D3EB00A3A3AA /* PBXContainerItemProxy */ = { + D3B90E1A15C2CBC800F64F8C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */; + containerPortal = D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = D2AAC07D0554694100DB518D; + remoteInfo = NinePatch; + }; + D3B90E1C15C2CBCD00F64F8C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */; proxyType = 1; remoteGlobalIDString = D2AAC07D0554694100DB518D; remoteInfo = NinePatch; @@ -1423,7 +1421,6 @@ D389362315A6D19800A3A3AA /* CPAnimationSequence.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CPAnimationSequence.m; path = Utils/CPAnimation/CPAnimationSequence.m; sourceTree = ""; }; D389362415A6D19800A3A3AA /* CPAnimationStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPAnimationStep.h; path = Utils/CPAnimation/CPAnimationStep.h; sourceTree = ""; }; D389362515A6D19800A3A3AA /* CPAnimationStep.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CPAnimationStep.m; path = Utils/CPAnimation/CPAnimationStep.m; sourceTree = ""; }; - D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = NinePatch.xcodeproj; path = NinePatch/NinePatch.xcodeproj; sourceTree = ""; }; D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_bubble_incoming.9.png; path = Resources/chat_bubble_incoming.9.png; sourceTree = ""; }; D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_bubble_outgoing.9.png; path = Resources/chat_bubble_outgoing.9.png; sourceTree = ""; }; D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_first_highlight.png; path = Resources/cell_call_first_highlight.png; sourceTree = ""; }; @@ -1441,6 +1438,7 @@ D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_start_disabled.png; path = Resources/setup_start_disabled.png; sourceTree = ""; }; D3B82A0015C18A710036C93E /* history_details_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_details_bar_background.png; path = Resources/history_details_bar_background.png; sourceTree = ""; }; D3B82A0115C18A710036C93E /* settings_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_bar_background.png; path = Resources/settings_bar_background.png; sourceTree = ""; }; + D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = NinePatch.xcodeproj; path = Utils/NinePatch/NinePatch.xcodeproj; sourceTree = ""; }; D3B9A3DA15A58C440096EA4E /* chat_field.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_field.png; path = Resources/chat_field.png; sourceTree = ""; }; D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_ok_default.png; path = Resources/chat_ok_default.png; sourceTree = ""; }; D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_ok_over.png; path = Resources/chat_ok_over.png; sourceTree = ""; }; @@ -1649,7 +1647,6 @@ 70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */, 2264B6D211200342002C2C53 /* SystemConfiguration.framework in Frameworks */, 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, - D389363515A6D40000A3A3AA /* libNinePatch.a in Frameworks */, 344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */, D32B6E2F15A5C0AC0033019F /* libsqlite3.dylib in Frameworks */, 344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */, @@ -1705,7 +1702,6 @@ 22D8F15C147548E2008C97DB /* QuartzCore.framework in Frameworks */, 22D8F173147548E2008C97DB /* SystemConfiguration.framework in Frameworks */, 22D8F166147548E2008C97DB /* UIKit.framework in Frameworks */, - D34BD61415C13A540070C209 /* libNinePatch.a in Frameworks */, 22D8F178147548E2008C97DB /* libresolv.dylib in Frameworks */, D34BD61515C13B7B0070C209 /* libsqlite3.dylib in Frameworks */, 22D8F164147548E2008C97DB /* libcrypto.a in Frameworks */, @@ -2224,7 +2220,6 @@ 22744043106F33FC006EC466 /* Security.framework */, 2264B6D111200342002C2C53 /* SystemConfiguration.framework */, 22F51EF5107FA66500F98953 /* untitled.plist */, - D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 220FAC77107654FC0068D98F /* include */, @@ -2540,6 +2535,7 @@ D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */, D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */, D3807FC715C2894A005BE9BC /* InAppSettingsKit */, + D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */, D326483615887D5200930C67 /* OrderedDictionary.h */, D326483715887D5200930C67 /* OrderedDictionary.m */, D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */, @@ -2648,14 +2644,6 @@ name = CPAnimation; sourceTree = ""; }; - D389362B15A6D3C500A3A3AA /* Products */ = { - isa = PBXGroup; - children = ( - D389363215A6D3C500A3A3AA /* libNinePatch.a */, - ); - name = Products; - sourceTree = ""; - }; D398D3031594B0FB00FD553C /* Settings */ = { isa = PBXGroup; children = ( @@ -2664,6 +2652,14 @@ path = Settings; sourceTree = ""; }; + D3B90E1215C2CB5700F64F8C /* Products */ = { + isa = PBXGroup; + children = ( + D3B90E1915C2CB5800F64F8C /* libNinePatch.a */, + ); + name = Products; + sourceTree = ""; + }; D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */ = { isa = PBXGroup; children = ( @@ -2708,7 +2704,7 @@ buildRules = ( ); dependencies = ( - D389363415A6D3EB00A3A3AA /* PBXTargetDependency */, + D3B90E1B15C2CBC800F64F8C /* PBXTargetDependency */, ); name = linphone; productName = linphone; @@ -2727,7 +2723,7 @@ buildRules = ( ); dependencies = ( - D34BD61315C139D90070C209 /* PBXTargetDependency */, + D3B90E1D15C2CBCD00F64F8C /* PBXTargetDependency */, ); name = "linphone-no-gpl-thirdparties"; productName = linphone; @@ -2757,8 +2753,8 @@ projectDirPath = ""; projectReferences = ( { - ProductGroup = D389362B15A6D3C500A3A3AA /* Products */; - ProjectRef = D389362A15A6D3C500A3A3AA /* NinePatch.xcodeproj */; + ProductGroup = D3B90E1215C2CB5700F64F8C /* Products */; + ProjectRef = D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */; }, ); projectRoot = ""; @@ -2770,11 +2766,11 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - D389363215A6D3C500A3A3AA /* libNinePatch.a */ = { + D3B90E1915C2CB5800F64F8C /* libNinePatch.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; path = libNinePatch.a; - remoteRef = D389363115A6D3C500A3A3AA /* PBXContainerItemProxy */; + remoteRef = D3B90E1815C2CB5800F64F8C /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXReferenceProxy section */ @@ -3588,15 +3584,15 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - D34BD61315C139D90070C209 /* PBXTargetDependency */ = { + D3B90E1B15C2CBC800F64F8C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = NinePatch; - targetProxy = D34BD61215C139D90070C209 /* PBXContainerItemProxy */; + targetProxy = D3B90E1A15C2CBC800F64F8C /* PBXContainerItemProxy */; }; - D389363415A6D3EB00A3A3AA /* PBXTargetDependency */ = { + D3B90E1D15C2CBCD00F64F8C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = NinePatch; - targetProxy = D389363315A6D3EB00A3A3AA /* PBXContainerItemProxy */; + targetProxy = D3B90E1C15C2CBCD00F64F8C /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -3643,7 +3639,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - NinePatch, + classes/Utils/NinePatch/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3715,7 +3711,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - NinePatch, + classes/Utils/NinePatch/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3768,7 +3764,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - NinePatch, + classes/Utils/NinePatch/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3821,7 +3817,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - NinePatch, + classes/Utils/NinePatch/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3875,7 +3871,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - NinePatch, + classes/Utils/NinePatch/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -3929,7 +3925,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - NinePatch, + classes/Utils/NinePatch/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -4001,7 +3997,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - NinePatch, + classes/Utils/NinePatch/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -4074,7 +4070,7 @@ submodules/externals/osip/include, submodules/externals/exosip/include, submodules/externals/speex/include, - NinePatch, + classes/Utils/NinePatch/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; From bea19ea23fc95b5edb91353fd311a8757d00aa7d Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 27 Jul 2012 15:59:28 +0200 Subject: [PATCH 087/397] Fix Null image in Contacts View --- Classes/ContactsTableViewController.m | 6 +++++- Classes/HistoryViewController.m | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 506e0003d..918170d81 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -179,7 +179,11 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf id data = [avatarMap objectForKey:[NSNumber numberWithInt: ABRecordGetRecordID(contact)]]; if(data == nil) { image = [FastAddressBook getContactImage:contact thumbnail:true]; - [avatarMap setObject:image forKey:[NSNumber numberWithInt: ABRecordGetRecordID(contact)]]; + if(image != nil) { + [avatarMap setObject:image forKey:[NSNumber numberWithInt: ABRecordGetRecordID(contact)]]; + } else { + [avatarMap setObject:[NSNull null] forKey:[NSNumber numberWithInt: ABRecordGetRecordID(contact)]]; + } } else if(data != [NSNull null]) { image = data; } diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index ad45dd5f3..6db361946 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -48,7 +48,6 @@ typedef enum _HistoryView { [allButton release]; [missedButton release]; [editButton release]; - [super dealloc]; } From aabf53ac5437d83f0d516133956d2411e151a576 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 30 Jul 2012 11:56:32 +0200 Subject: [PATCH 088/397] Start iPad version --- Classes/ChatRoomTableViewController.m | 2 +- Classes/ChatRoomViewController.xib | 53 +- Classes/ChatViewController.xib | 49 +- Classes/ConsoleViewController.xib | 123 +- Classes/ContactDetailsLabelViewController.xib | 30 +- Classes/ContactDetailsViewController.xib | 27 +- Classes/ContactsViewController.xib | 48 +- Classes/FirstLoginViewController.xib | 26 +- Classes/HistoryDetailsViewController.xib | 30 +- Classes/HistoryViewController.xib | 47 +- Classes/InCallViewController-ipad.xib | 1953 ----------------- Classes/IncomingCallViewController.xib | 11 +- Classes/LinphoneApp.xib | 42 +- Classes/LinphoneUI/UIChatCell.xib | 17 +- Classes/LinphoneUI/UIChatRoomCell.h | 2 +- Classes/LinphoneUI/UIChatRoomCell.m | 12 +- .../LinphoneUI/UICompositeViewController.m | 23 +- .../LinphoneUI/UICompositeViewController.xib | 12 +- Classes/LinphoneUI/UIHistoryCell.xib | 16 +- Classes/LinphoneUI/UIStateBar.xib | 40 +- Classes/MoreViewController.xib | 375 +--- Classes/PhoneMainView.xib | 13 +- Classes/SettingsViewController.m | 54 +- Classes/SettingsViewController.xib | 1 - Resources/history_details_bar_background.png | Bin 161 -> 0 bytes Resources/settings_bar_background.png | Bin 161 -> 0 bytes ...background.png => toolsbar_background.png} | Bin linphone.xcodeproj/project.pbxproj | 32 +- 28 files changed, 533 insertions(+), 2505 deletions(-) delete mode 100644 Classes/InCallViewController-ipad.xib delete mode 100644 Resources/history_details_bar_background.png delete mode 100644 Resources/settings_bar_background.png rename Resources/{contact_bar_background.png => toolsbar_background.png} (100%) diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index 4bcf7b651..f208fc48e 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -150,7 +150,7 @@ - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { ChatModel *chat = [data objectAtIndex:[indexPath row]]; - return [UIChatRoomCell height:chat]; + return [UIChatRoomCell height:chat width:[self.view frame].size.width]; } @end diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib index c8b9c4f6b..738e35a47 100644 --- a/Classes/ChatRoomViewController.xib +++ b/Classes/ChatRoomViewController.xib @@ -3,22 +3,22 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIView - IBUIImageView IBProxyObject - IBUILabel - IBUITextField - IBUITableViewController - IBUITableView IBUIButton + IBUIImageView + IBUILabel + IBUITableView + IBUITableViewController + IBUITextField + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -44,6 +44,20 @@ 290 + + + 290 + {320, 58} + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + toolsbar_background.png + + 292 @@ -84,7 +98,7 @@ - 292 + 289 {{160, 0}, {160, 58}} @@ -150,7 +164,7 @@ - 274 + 292 {{20, 6}, {65, 65}} @@ -165,7 +179,7 @@ - 292 + 290 {{101, 37}, {199, 43}} @@ -267,7 +281,7 @@ - 260 + 258 {250, 59} @@ -282,7 +296,7 @@ - 260 + 258 {{10, 10}, {230, 39}} @@ -527,6 +541,7 @@ + toolsView @@ -614,6 +629,12 @@ addressLabel + + 47 + + + background + @@ -635,6 +656,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -645,7 +667,7 @@ - 46 + 47 @@ -763,7 +785,8 @@ {140, 117} {140, 117} {140, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/ChatViewController.xib b/Classes/ChatViewController.xib index 24b92a3ae..395f02293 100644 --- a/Classes/ChatViewController.xib +++ b/Classes/ChatViewController.xib @@ -3,19 +3,20 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUITableViewController - IBUITableView - IBUIView - IBUIButton IBProxyObject + IBUIButton + IBUIImageView + IBUITableView + IBUITableViewController + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -39,8 +40,23 @@ - 288 + 290 + + + 290 + {320, 58} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + toolsbar_background.png + + 292 @@ -81,7 +97,7 @@ - 292 + 289 {{160, 0}, {160, 58}} @@ -115,7 +131,7 @@ {320, 58} - + _NS:9 3 @@ -290,9 +306,10 @@ + - header + toolsBar 9 @@ -306,6 +323,12 @@ addButton + + 23 + + + background + @@ -315,6 +338,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin ChatTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -328,7 +352,7 @@ - 22 + 23 @@ -400,7 +424,8 @@ {320, 117} {320, 117} {320, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/ConsoleViewController.xib b/Classes/ConsoleViewController.xib index 16846dae6..9b81061ea 100644 --- a/Classes/ConsoleViewController.xib +++ b/Classes/ConsoleViewController.xib @@ -1,35 +1,39 @@ - + 784 - 9L31a - 680 - 949.54 - 353.00 - + 11E53 + 2549 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1498 + + YES - + IBProxyObject + IBUITextView + IBUIView + IBUIViewController YES com.apple.InterfaceBuilder.IBCocoaTouchPlugin - YES - - YES - - - YES - + PluginDependencyRecalculationVersion + YES IBFilesOwner + IBCocoaTouchFramework IBFirstResponder + IBCocoaTouchFramework @@ -42,12 +46,14 @@ 274 {320, 450} + 1 MSAxIDEAA YES YES + IBCocoaTouchFramework NO NO NO @@ -56,11 +62,22 @@ 2 + IBCocoaTouchFramework + + + 1 + 17 + + + Helvetica + 17 + 16 {320, 460} + 3 MQA @@ -69,8 +86,14 @@ NO + IBCocoaTouchFramework - + + 1 + 1 + + IBCocoaTouchFramework + NO @@ -116,7 +139,7 @@ -1 - RmlsZSdzIE93bmVyA + File's Owner -2 @@ -151,22 +174,24 @@ YES - + YES -1.CustomClassName + -1.IBPluginDependency -2.CustomClassName + -2.IBPluginDependency 10.CustomClassName - 10.IBEditorWindowLastContentRect 10.IBPluginDependency 4.IBPluginDependency 7.IBPluginDependency - + YES ConsoleViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin ConsoleViewController - {{807, 300}, {320, 480}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -174,22 +199,14 @@ YES - - YES - - - YES - + + YES - - YES - - - YES - + + 14 @@ -202,27 +219,59 @@ UIViewController YES - + YES logs logsView - + YES UITextView UIView + + YES + + YES + logs + logsView + + + YES + + logs + UITextView + + + logsView + UIView + + + IBProjectSource - Classes/ConsoleViewController.h + ./Classes/ConsoleViewController.h 0 - ../linphone.xcodeproj + IBCocoaTouchFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 + + + YES 3 - 3.1 + 1498 diff --git a/Classes/ContactDetailsLabelViewController.xib b/Classes/ContactDetailsLabelViewController.xib index 324f0e974..8c0a5eb90 100644 --- a/Classes/ContactDetailsLabelViewController.xib +++ b/Classes/ContactDetailsLabelViewController.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUITableView - IBUIButton - IBUIView - IBUIImageView IBProxyObject + IBUIButton + IBUIImageView + IBUITableView + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -65,13 +65,13 @@ {320, 58} - + _NS:9 NO IBCocoaTouchFramework NSImage - contact_bar_background.png + toolsbar_background.png @@ -80,7 +80,7 @@ {160, 58} - + _NS:9 NO @@ -116,7 +116,7 @@ {320, 58} - + _NS:9 3 @@ -133,6 +133,7 @@ {{0, 59}, {320, 401}} + _NS:9 10 @@ -210,12 +211,11 @@ AAgACAAIAAEAAQABAAE 10 - {{0, 20}, {320, 460}} + {320, 460} - IBCocoaTouchFramework @@ -306,7 +306,7 @@ AAgACAAIAAEAAQABAAE - header + toolsBar 8 @@ -401,8 +401,8 @@ AAgACAAIAAEAAQABAAE {640, 523} {320, 117} {320, 117} - {5, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib index 42e2901cc..86c780b1f 100644 --- a/Classes/ContactDetailsViewController.xib +++ b/Classes/ContactDetailsViewController.xib @@ -3,20 +3,20 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIImageView - IBUIButton - IBUITableView - IBUIView - IBUITableViewController IBProxyObject + IBUIButton + IBUIImageView + IBUITableView + IBUITableViewController + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -48,12 +48,13 @@ {320, 58} + _NS:9 NO IBCocoaTouchFramework NSImage - contact_bar_background.png + toolsbar_background.png @@ -158,7 +159,7 @@ {320, 58} - + _NS:9 3 @@ -175,6 +176,7 @@ {{0, 59}, {320, 401}} + _NS:9 10 @@ -252,12 +254,11 @@ AAgACAAIAAEAAQABAAE 10 - {{0, 20}, {320, 460}} + {320, 460} - IBCocoaTouchFramework @@ -559,13 +560,13 @@ AAgACAAIAAEAAQABAAE {320, 117} {320, 117} - {5, 117} {320, 117} {320, 117} {320, 117} {320, 117} {320, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib index 91add1d9e..1a98f54c2 100644 --- a/Classes/ContactsViewController.xib +++ b/Classes/ContactsViewController.xib @@ -3,19 +3,20 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIButton - IBUITableView - IBUIView - IBUITableViewController IBProxyObject + IBUIButton + IBUIImageView + IBUITableView + IBUITableViewController + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -39,11 +40,25 @@ - 288 + 290 + + + 290 + {320, 58} + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + toolsbar_background.png + + - 292 + 289 {{108, 0}, {106, 58}} @@ -82,7 +97,7 @@ - 292 + 289 {{214, 0}, {106, 58}} @@ -191,9 +206,7 @@ 1 MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA - NO YES - NO IBCocoaTouchFramework 0.0 10 @@ -387,6 +400,7 @@ + toolBar @@ -428,6 +442,12 @@ backButton + + 92 + + + background + @@ -448,12 +468,13 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 91 + 92 @@ -550,7 +571,8 @@ {213, 117} {213, 117} {213, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/FirstLoginViewController.xib b/Classes/FirstLoginViewController.xib index ac29c839c..73b5dab9f 100644 --- a/Classes/FirstLoginViewController.xib +++ b/Classes/FirstLoginViewController.xib @@ -3,20 +3,20 @@ 784 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 YES - IBUIButton - IBUIActivityIndicatorView - IBUIView - IBUITextField IBProxyObject + IBUIActivityIndicatorView + IBUIButton + IBUITextField + IBUIView YES @@ -87,6 +87,7 @@ {{60, 420}, {200, 37}} + NO NO IBCocoaTouchFramework @@ -139,9 +140,9 @@ 1 IBCocoaTouchFramework - + NSImage - setup_label.png + field_background.png 1 @@ -180,7 +181,7 @@ YES IBCocoaTouchFramework - + @@ -195,6 +196,7 @@ {{142, 211}, {37, 37}} + NO NO NO @@ -220,7 +222,7 @@ {320, 460} - + _NS:9 3 @@ -559,7 +561,7 @@ YES button_background_default.png button_background_over.png - setup_label.png + field_background.png YES @@ -568,6 +570,6 @@ {542, 88} - 1181 + 1498 diff --git a/Classes/HistoryDetailsViewController.xib b/Classes/HistoryDetailsViewController.xib index 6e340bd86..d22be8630 100644 --- a/Classes/HistoryDetailsViewController.xib +++ b/Classes/HistoryDetailsViewController.xib @@ -43,7 +43,7 @@ - 292 + 290 {320, 58} @@ -53,7 +53,7 @@ IBCocoaTouchFramework NSImage - history_details_bar_background.png + toolsbar_background.png @@ -96,7 +96,7 @@ - 292 + 289 {{160, 0}, {160, 58}} @@ -139,7 +139,7 @@ - 292 + 295 @@ -197,7 +197,7 @@ - 292 + 290 {{101, 37}, {199, 43}} @@ -240,7 +240,7 @@ - 292 + 295 @@ -271,7 +271,7 @@ - 292 + 290 {{57, 0}, {223, 21}} @@ -307,7 +307,7 @@ - 292 + 295 @@ -331,7 +331,7 @@ - 292 + 290 {{88, 0}, {192, 21}} @@ -360,7 +360,7 @@ - 292 + 295 @@ -384,7 +384,7 @@ - 292 + 290 {{65, 0}, {215, 21}} @@ -413,11 +413,10 @@ - 292 + 269 {{33, 273}, {255, 50}} - _NS:9 NO IBCocoaTouchFramework @@ -451,12 +450,11 @@ - {{0, 20}, {320, 460}} + {320, 460} - IBCocoaTouchFramework @@ -900,7 +898,7 @@ {320, 117} {320, 117} {320, 117} - {5, 117} + {5, 117} 1498 diff --git a/Classes/HistoryViewController.xib b/Classes/HistoryViewController.xib index 76bab3437..832f4cb67 100644 --- a/Classes/HistoryViewController.xib +++ b/Classes/HistoryViewController.xib @@ -3,19 +3,20 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIButton - IBUITableView - IBUIView - IBUITableViewController IBProxyObject + IBUIButton + IBUIImageView + IBUITableView + IBUITableViewController + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -39,8 +40,22 @@ - 288 + 290 + + + 290 + {320, 58} + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + toolsbar_background.png + + 292 @@ -111,7 +126,7 @@ - 292 + 289 {{212, 0}, {108, 58}} @@ -162,7 +177,6 @@ {{0, 58}, {320, 402}} - _NS:9 1 @@ -343,9 +357,10 @@ + - header + toolsBar 4 @@ -378,6 +393,12 @@ tableController + + 34 + + + background + @@ -390,6 +411,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -402,7 +424,7 @@ - 33 + 34 @@ -496,7 +518,8 @@ {213, 117} {213, 117} {214, 117} + {5, 117} - 1181 + 1498 diff --git a/Classes/InCallViewController-ipad.xib b/Classes/InCallViewController-ipad.xib deleted file mode 100644 index 51b1dfa66..000000000 --- a/Classes/InCallViewController-ipad.xib +++ /dev/null @@ -1,1953 +0,0 @@ - - - - 1280 - 11C74 - 1938 - 1138.23 - 567.00 - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 933 - - - IBUIButton - IBUIImageView - IBUIViewController - IBProxyObject - IBUIActivityIndicatorView - IBUITableView - IBUIView - - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - PluginDependencyRecalculationVersion - - - - - IBFilesOwner - IBIPadFramework - - - IBFirstResponder - IBIPadFramework - - - - - 274 - - - - 274 - - - - 292 - {768, 1024} - - - - _NS:569 - NO - IBIPadFramework - - - - 292 - {{20, 956}, {28, 28}} - - - - _NS:567 - NO - IBIPadFramework - - - - 292 - {{366, 493}, {37, 37}} - - - - _NS:1062 - NO - IBIPadFramework - NO - 0 - - - - 292 - {{598, 799}, {170, 225}} - - - - - 3 - MQA - - 2 - - - IBIPadFramework - - - {768, 1024} - - - - _NS:212 - - 3 - MC42NjY2NjY2NjY3AA - - IBIPadFramework - - - - 292 - {{224, 740}, {320, 66}} - - - - NO - IBIPadFramework - 0 - 0 - 1 - Change camera - - 3 - MQA - - - 1 - MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA - - - 3 - MC41AA - - - NSImage - clavier-01-108px.png - - - Helvetica-Bold - Helvetica - 2 - 15 - - - Helvetica-Bold - 15 - 16 - - - - - 274 - {768, 805} - - - - _NS:408 - - 3 - MSAwAA - - - YES - IBIPadFramework - YES - 0 - YES - 80 - 22 - 22 - - - - 292 - - - - 292 - {{0, 1}, {320, 66}} - - - - - 1 - MSAwIDAuMDgyMzIwMjU5MDQgMC4xOAA - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - NSImage - stopcall-red.png - - - NSImage - clavier-01-106px.png - - - - - - {{224, 937}, {320, 77}} - - - - _NS:196 - - 3 - MCAwAA - - IBIPadFramework - - - - 292 - - - - 292 - {{80, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - grouper.png - - - 2 - 17 - - - Helvetica-Bold - 17 - 16 - - - - - 292 - {{0, 4}, {107, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - mic_active.png - - - NSImage - micro_inverse.png - - - NSImage - micro.png - - - 2 - 2 - - - Helvetica-Bold - 18 - 16 - - - - - 292 - {{0, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - ajouter.png - - - - - - - 292 - {{240, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - 1 - MCAwIDAAA - - - NSImage - contact.png - - - - - - - -2147483356 - {{240, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 1 - video - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - clavier-01-160px.png - - - - - - - 292 - {{160, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - transfer - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - - - - - 292 - {{262, 84}, {37, 37}} - - - - _NS:1062 - NO - IBIPadFramework - NO - 0 - - - - 292 - {{107, 4}, {106, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - clavier.png - - - - - - - 292 - {{213, 4}, {107, 66}} - - - - - NO - NO - IBIPadFramework - NO - 0 - 0 - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - NSImage - HP_inverse.png - - - NSImage - HP.png - - - - - - - 292 - {{80, 70}, {80, 66}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - - - - 1 - MC4xOTYwNzg0MzE0IDAuMzA5ODAzOTIxNiAwLjUyMTU2ODYyNzUAA - - - - - NSImage - pause_inactif.png - - - NSImage - pause.png - - - - - - {{224, 801.5}, {320, 135}} - - - - - NO - NO - IBIPadFramework - - - - -2147483356 - - - - 292 - {{119, 251}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - close - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 193}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 0 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 19}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 1 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 19}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 2 - - - - - - - - - 292 - {{207, 19}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 3 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 77}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 4 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 77}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 5 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 77}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 6 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 135}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 7 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{119, 135}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 8 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 135}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - 9 - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{31, 193}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - * - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - - 292 - {{207, 193}, {82, 52}} - - - - - NO - NO - IBIPadFramework - 0 - 0 - # - - - 1 - MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA - - - - - - - {{178, 146}, {320, 310}} - - - - - 3 - MC4yNAA - - NO - NO - IBIPadFramework - - - {{0, 20}, {768, 1004}} - - - - _NS:212 - - IBIPadFramework - - - 2 - - - 1 - 1 - - IBIPadFramework - NO - - - - - - - callTableView - - - - 114 - - - - endCtrl - - - - 119 - - - - hangUpView - - - - 122 - - - - speaker - - - - 132 - - - - mute - - - - 125 - - - - addVideo - - - - 113 - - - - mergeCalls - - - - 124 - - - - addCall - - - - 112 - - - - contacts - - - - 116 - - - - dialer - - - - 141 - - - - pause - - - - 129 - - - - controlSubView - - - - 117 - - - - five - - - - 120 - - - - nine - - - - 126 - - - - seven - - - - 130 - - - - six - - - - 131 - - - - four - - - - 121 - - - - three - - - - 134 - - - - zero - - - - 137 - - - - two - - - - 135 - - - - close - - - - 115 - - - - hash - - - - 123 - - - - eight - - - - 118 - - - - one - - - - 127 - - - - star - - - - 133 - - - - padSubView - - - - 128 - - - - view - - - - 136 - - - - videoGroup - - - - 159 - - - - videoView - - - - 161 - - - - videoPreview - - - - 162 - - - - videoCallQuality - - - - 163 - - - - videoCameraSwitch - - - - 164 - - - - videoUpdateIndicator - - - - 167 - - - - videoWaitingForFirstImage - - - - 168 - - - - transfer - - - - 170 - - - - dataSource - - - - 139 - - - - delegate - - - - 140 - - - - doAction: - - - 7 - - 144 - - - - doAction: - - - 7 - - 142 - - - - doAction: - - - 7 - - 143 - - - - - - 0 - - - - - - -1 - - - File's Owner - - - -2 - - - - - 59 - - - - - - - - 60 - - - - - - - - - - - - - 61 - - - - - 88 - - - - - - - - 98 - - - end - - - 89 - - - - - - - - - - - - - - - controls - - - 96 - - - speaker - - - 92 - - - mute - - - 90 - - - video - - - 91 - - - merge - - - 93 - - - addcall - - - 94 - - - contacts - - - 95 - - - dialer - - - 97 - - - pauseresume - - - 87 - - - - - - - - - - - - - - - - - - pad - - - 99 - - - 5 - - - 100 - - - 9 - - - 101 - - - 7 - - - 102 - - - 6 - - - 103 - - - 4 - - - 104 - - - 3 - - - 105 - - - 0 - - - 106 - - - 2 - - - 107 - - - close - - - 108 - - - hash - - - 109 - - - 8 - - - 110 - - - 1 - - - 111 - - - star - - - 152 - - - - - - - - - video - - - 158 - - - - video_preview - - - 157 - - - video_view - - - 153 - - - call_quality_video - - - 154 - - - - - 165 - - - toggleVideoIndicator - - - 166 - - - - - 169 - - - transfer - - - - - IncallViewController - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIResponder - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UICamSwitch - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIToggleVideoButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIMuteButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UISpeakerButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - UIHangUpButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIDigitButton - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - - 170 - - - - - IncallViewController - UIViewController - - doAction: - id - - - doAction: - - doAction: - id - - - - UIButton - UIToggleVideoButton - UITableView - UIButton - UIViewController - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIView - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIButton - UIImageView - UICamSwitch - UIView - UIView - UIActivityIndicatorView - UIView - VideoViewController - UIActivityIndicatorView - UIButton - - - - addCall - UIButton - - - addVideo - UIToggleVideoButton - - - callTableView - UITableView - - - close - UIButton - - - conferenceDetail - UIViewController - - - contacts - UIButton - - - controlSubView - UIView - - - dialer - UIButton - - - eight - UIButton - - - endCtrl - UIButton - - - five - UIButton - - - four - UIButton - - - hangUpView - UIView - - - hash - UIButton - - - mergeCalls - UIButton - - - mute - UIButton - - - nine - UIButton - - - one - UIButton - - - padSubView - UIView - - - pause - UIButton - - - seven - UIButton - - - six - UIButton - - - speaker - UIButton - - - star - UIButton - - - three - UIButton - - - transfer - UIButton - - - two - UIButton - - - videoCallQuality - UIImageView - - - videoCameraSwitch - UICamSwitch - - - videoGroup - UIView - - - videoPreview - UIView - - - videoUpdateIndicator - UIActivityIndicatorView - - - videoView - UIView - - - videoViewController - VideoViewController - - - videoWaitingForFirstImage - UIActivityIndicatorView - - - zero - UIButton - - - - IBProjectSource - ./Classes/IncallViewController.h - - - - UICamSwitch - UIButton - - preview - UIView - - - preview - - preview - UIView - - - - IBProjectSource - ./Classes/UICamSwitch.h - - - - UIDigitButton - UIButton - - IBProjectSource - ./Classes/UIDigitButton.h - - - - UIHangUpButton - UIButton - - IBProjectSource - ./Classes/UIHangUpButton.h - - - - UIMuteButton - UIToggleButton - - IBProjectSource - ./Classes/UIMuteButton.h - - - - UISpeakerButton - UIToggleButton - - IBProjectSource - ./Classes/UISpeakerButton.h - - - - UIToggleButton - UIButton - - IBProjectSource - ./Classes/UIToggleButton.h - - - - UIToggleVideoButton - UIButton - - videoUpdateIndicator - UIActivityIndicatorView - - - videoUpdateIndicator - - videoUpdateIndicator - UIActivityIndicatorView - - - - IBProjectSource - ./Classes/UIToggleVideoButton.h - - - - VideoViewController - UIViewController - - UIImageView - UIImageView - UIImageView - UICamSwitch - UICamSwitch - UICamSwitch - UIView - UIView - UIView - UIHangUpButton - UIHangUpButton - UIHangUpButton - UIView - UIView - UIMuteButton - UIMuteButton - UIMuteButton - UIView - UIView - UIView - UIView - - - - mCallQuality - UIImageView - - - mCallQualityLandLeft - UIImageView - - - mCallQualityLandRight - UIImageView - - - mCamSwitch - UICamSwitch - - - mCamSwitchLandLeft - UICamSwitch - - - mCamSwitchLandRight - UICamSwitch - - - mDisplay - UIView - - - mDisplayLandLeft - UIView - - - mDisplayLandRight - UIView - - - mHangUp - UIHangUpButton - - - mHangUpLandLeft - UIHangUpButton - - - mHangUpLandRight - UIHangUpButton - - - mLandscapeLeft - UIView - - - mLandscapeRight - UIView - - - mMute - UIMuteButton - - - mMuteLandLeft - UIMuteButton - - - mMuteLandRight - UIMuteButton - - - mPortrait - UIView - - - mPreview - UIView - - - mPreviewLandLeft - UIView - - - mPreviewLandRight - UIView - - - - IBProjectSource - ./Classes/VideoViewController.h - - - - - 0 - IBIPadFramework - YES - 3 - - {107, 67} - {107, 67} - {107, 67} - {106, 60} - {108, 60} - {160, 60} - {106, 67} - {107, 67} - {106, 67} - {20, 20} - {107, 67} - {107, 67} - {106, 67} - {106, 67} - {62, 54} - - 933 - - diff --git a/Classes/IncomingCallViewController.xib b/Classes/IncomingCallViewController.xib index da9fe2a4f..b2de27e48 100644 --- a/Classes/IncomingCallViewController.xib +++ b/Classes/IncomingCallViewController.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -4615,7 +4615,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {{160, 0}, {160, 77}} - _NS:9 NO @@ -4908,6 +4907,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 154} {640, 135} - 1181 + 1498 diff --git a/Classes/LinphoneApp.xib b/Classes/LinphoneApp.xib index cc511507a..9839f1048 100644 --- a/Classes/LinphoneApp.xib +++ b/Classes/LinphoneApp.xib @@ -2,19 +2,19 @@ 1296 - 11D50 - 2182 - 1138.32 - 568.00 + 11E53 + 2549 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIWindow + IBProxyObject IBUICustomObject IBUIViewController - IBProxyObject + IBUIWindow com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -48,12 +48,10 @@ NO NO - IBCocoaTouchFramework YES - NO PhoneMainView @@ -189,8 +187,30 @@ - UICompositeViewController + TPMultiLayoutViewController UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICompositeViewController + TPMultiLayoutViewController UIView UIView @@ -225,6 +245,6 @@ YES 3 - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib index 92cdf036a..7bf9dcf3c 100644 --- a/Classes/LinphoneUI/UIChatCell.xib +++ b/Classes/LinphoneUI/UIChatCell.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -35,7 +35,7 @@ - 292 + 274 @@ -123,7 +123,7 @@ - 292 + 257 {{276, 0}, {44, 44}} @@ -162,11 +162,10 @@ - 292 + 257 {{276, 0}, {44, 44}} - _NS:9 NO IBCocoaTouchFramework @@ -418,6 +417,6 @@ {45, 45} {45, 45} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h index 22891bdbb..cfc479c23 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.h +++ b/Classes/LinphoneUI/UIChatRoomCell.h @@ -41,7 +41,7 @@ @property (nonatomic, retain) IBOutlet UILabel *dateLabel; - (id)initWithIdentifier:(NSString*)identifier; -+ (CGFloat)height:(ChatModel*)chat; ++ (CGFloat)height:(ChatModel*)chat width:(int)width; - (IBAction)onDeleteClick:(id)event; diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index 98f355cc5..edb6671ce 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -121,12 +121,12 @@ static UIFont *CELL_FONT = nil; if(chat != nil) { // Resize Content CGRect contentFrame = [contentView frame]; - contentFrame.size = [UIChatRoomCell viewSize:[chat message]]; + contentFrame.size = [UIChatRoomCell viewSize:[chat message] width:[self frame].size.width]; if([[chat direction] intValue]) { // Inverted contentFrame.origin.x = 0.0f; contentFrame.origin.y = 0.0f; } else { - contentFrame.origin.x = CELL_MAX_WIDTH - contentFrame.size.width; + contentFrame.origin.x = [self frame].size.width - contentFrame.size.width; contentFrame.origin.y = 0.0f; } [contentView setFrame:contentFrame]; @@ -146,12 +146,12 @@ static UIFont *CELL_FONT = nil; } } -+ (CGSize)viewSize:(NSString*)message { ++ (CGSize)viewSize:(NSString*)message width:(int)width { if(CELL_FONT == nil) { CELL_FONT = [UIFont systemFontOfSize:CELL_FONT_SIZE]; } CGSize messageSize = [message sizeWithFont: CELL_FONT - constrainedToSize: CGSizeMake(CELL_MAX_WIDTH - CELL_MESSAGE_X_MARGIN, 10000.0f) + constrainedToSize: CGSizeMake(width - CELL_MESSAGE_X_MARGIN, 10000.0f) lineBreakMode: UILineBreakModeTailTruncation]; messageSize.height += CELL_MESSAGE_Y_MARGIN; if(messageSize.height < CELL_MIN_HEIGHT) @@ -162,8 +162,8 @@ static UIFont *CELL_FONT = nil; return messageSize; } -+ (CGFloat)height:(ChatModel*)chat { - return [UIChatRoomCell viewSize:[chat message]].height; ++ (CGFloat)height:(ChatModel*)chat width:(int)width { + return [UIChatRoomCell viewSize:[chat message] width:width].height; } diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 547de4cb0..049ed47d2 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -133,6 +133,16 @@ #pragma mark - ViewController Functions +- (void)viewDidLoad { + /* Force landscape view to match portrait view */ + CGRect frame = [portraitView frame]; + int height = frame.size.width; + frame.size.width = frame.size.height; + frame.size.height = height; + [landscapeView setFrame:frame]; + [super viewDidLoad]; +} + - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [contentViewController viewWillAppear:animated]; @@ -378,8 +388,6 @@ [UIView setAnimationBeginsFromCurrentState:TRUE]; } - UIView *innerView = contentViewController.view; - CGRect contentFrame = contentView.frame; CGRect viewFrame = [self.view frame]; @@ -421,18 +429,13 @@ if(currentViewDescription.fullscreen) contentFrame.size.height = viewFrame.size.height - contentFrame.origin.y; - // Resize innerView - CGRect innerContentFrame = innerView.frame; - innerContentFrame.origin.x = 0; - innerContentFrame.origin.y = 0; - innerContentFrame.size.width = contentFrame.size.width; - innerContentFrame.size.height = contentFrame.size.height; - // Set frames [contentView setFrame: contentFrame]; - [innerView setFrame: innerContentFrame]; + [contentViewController.view setFrame: [contentView bounds]]; [tabBarView setFrame: tabFrame]; + [tabBarViewController.view setFrame:[tabBarView bounds]]; [stateBarView setFrame: stateBarFrame]; + [stateBarViewController.view setFrame:[stateBarView bounds]]; // Commit animation if(tabBar != nil || fullscreen != nil) { diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib index a2e27d760..2c4175b31 100644 --- a/Classes/LinphoneUI/UICompositeViewController.xib +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -3,12 +3,12 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 IBProxyObject @@ -37,7 +37,7 @@ 314 - {{0, 23}, {320, 389}} + {{0, 23}, {320, 397}} @@ -83,7 +83,6 @@ - NO IBCocoaTouchFramework @@ -93,7 +92,7 @@ 314 - {{0, 24}, {480, 231}} + {{0, 23}, {480, 237}} @@ -136,7 +135,6 @@ - NO 3 3 @@ -368,6 +366,6 @@ YES 3 - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib index 20b98f889..e2fe52aa4 100644 --- a/Classes/LinphoneUI/UIHistoryCell.xib +++ b/Classes/LinphoneUI/UIHistoryCell.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -35,7 +35,7 @@ - 292 + 274 @@ -86,7 +86,7 @@ - 292 + 257 {{276, 0}, {44, 44}} @@ -125,7 +125,7 @@ - 292 + 257 {{276, 0}, {44, 44}} @@ -358,6 +358,6 @@ {45, 45} {45, 45} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib index 08f79fb0a..b25d2e859 100644 --- a/Classes/LinphoneUI/UIStateBar.xib +++ b/Classes/LinphoneUI/UIStateBar.xib @@ -3,18 +3,18 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIImageView - IBUIView - IBUILabel IBProxyObject + IBUIImageView + IBUILabel + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -34,11 +34,11 @@ - 292 + 290 - 292 + 274 {320, 23} @@ -70,8 +70,8 @@ - 292 - {{22, 0}, {189, 20}} + 290 + {{22, 0}, {222, 20}} @@ -102,7 +102,7 @@ - 292 + 289 {{252, 3}, {27, 17}} @@ -114,11 +114,10 @@ - 292 + 289 {{287, 3}, {27, 17}} - _NS:567 1 5 @@ -139,11 +138,11 @@ - 292 + 290 - 292 + 274 {480, 23} @@ -169,8 +168,8 @@ - 292 - {{22, 0}, {189, 20}} + 290 + {{22, 0}, {382, 20}} @@ -191,7 +190,7 @@ - 292 + 289 {{412, 3}, {27, 17}} @@ -203,11 +202,10 @@ - 292 + 289 {{447, 3}, {27, 17}} - _NS:567 1 5 @@ -313,6 +311,7 @@ + Portrait View 6 @@ -355,6 +354,7 @@ + Landscape View 20 @@ -482,6 +482,6 @@ {18, 17} {640, 46} - 1181 + 1498 diff --git a/Classes/MoreViewController.xib b/Classes/MoreViewController.xib index da9802a57..f035483ed 100644 --- a/Classes/MoreViewController.xib +++ b/Classes/MoreViewController.xib @@ -2,33 +2,31 @@ 784 - 10J567 - 823 - 1038.35 - 462.00 + 11E53 + 2549 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 132 + 1498 - + YES - - - - + IBProxyObject + IBUIImageView + IBUILabel + IBUITableView + IBUITableViewCell + IBUITextView + IBUIViewController YES com.apple.InterfaceBuilder.IBCocoaTouchPlugin - YES - - YES - - - YES - + PluginDependencyRecalculationVersion + YES @@ -44,13 +42,14 @@ 274 - {{0, 106}, {320, 247}} + {320, 247} + 10 549453824 - {84, 1} + {512, 1} YES @@ -58,15 +57,44 @@ - TU0AKgAAAVjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ + TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P8ADQEAAAMAAAABAFQAAAEB -AAMAAAABAAEAAAECAAMAAAAEAAAB+gEDAAMAAAABAAEAAAEGAAMAAAABAAIAAAERAAQAAAABAAAACAES -AAMAAAABAAEAAAEVAAMAAAABAAQAAAEWAAMAAAABAAEAAAEXAAQAAAABAAABUAEcAAMAAAABAAEAAAFS -AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/ +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/ +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/ +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/ +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/ +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/ +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/ +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI +AAgACAAIAAEAAQABAAE @@ -91,15 +119,15 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA 10 10 - + 1 1 IBCocoaTouchFramework NO - + 292 YES @@ -125,6 +153,15 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA 1 10 + + 1 + 17 + + + Helvetica + 17 + 16 + {300, 44} @@ -138,19 +175,17 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA {320, 44} - 1 MSAxIDEAA NO IBCocoaTouchFramework - 1 1 - + 292 YES @@ -176,6 +211,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA 1 10 + + {300, 44} @@ -189,16 +226,14 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA {320, 44} - NO IBCocoaTouchFramework - 1 1 - + 292 YES @@ -241,6 +276,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA 2 IBCocoaTouchFramework + + @@ -258,6 +295,8 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA 1 10 1 + + {322, 230} @@ -271,12 +310,10 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA {322, 230} - NO NO IBCocoaTouchFramework - 1 @@ -337,7 +374,9 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA YES 0 - + + YES + @@ -430,38 +469,32 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA YES -1.CustomClassName + -1.IBPluginDependency -2.CustomClassName - 18.IBEditorWindowLastContentRect + -2.IBPluginDependency 18.IBPluginDependency - 25.IBEditorWindowLastContentRect 25.IBPluginDependency 34.IBPluginDependency - 38.IBEditorWindowLastContentRect 38.IBPluginDependency 39.IBPluginDependency - 4.IBEditorWindowLastContentRect 4.IBPluginDependency - 42.IBEditorWindowLastContentRect 42.IBPluginDependency 43.IBPluginDependency 45.IBPluginDependency 49.IBPluginDependency - + YES MoreViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder - {{138, 864}, {320, 247}} - com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{251, 502}, {320, 44}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{252, 1012}, {320, 44}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{79, 106}, {320, 480}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin - {{100, 713}, {322, 230}} + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -471,17 +504,13 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA YES - - YES - + YES - - YES - + 50 @@ -502,7 +531,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA web weburi - + YES UITableViewCell UITableViewCell @@ -521,7 +550,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA web weburi - + YES console @@ -547,236 +576,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA IBProjectSource - Classes/MoreViewController.h - - - - - YES - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIAccessibility.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UINibLoading.h - - - - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UIResponder.h - - - - UIImageView - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIImageView.h - - - - UILabel - UIView - - IBFrameworkSource - UIKit.framework/Headers/UILabel.h - - - - UIResponder - NSObject - - - - UIScrollView - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIScrollView.h - - - - UISearchBar - UIView - - IBFrameworkSource - UIKit.framework/Headers/UISearchBar.h - - - - UISearchDisplayController - NSObject - - IBFrameworkSource - UIKit.framework/Headers/UISearchDisplayController.h - - - - UITableView - UIScrollView - - IBFrameworkSource - UIKit.framework/Headers/UITableView.h - - - - UITableViewCell - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITableViewCell.h - - - - UITableViewController - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITableViewController.h - - - - UITextView - UIScrollView - - IBFrameworkSource - UIKit.framework/Headers/UITextView.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UIPrintFormatter.h - - - - UIView - - IBFrameworkSource - UIKit.framework/Headers/UITextField.h - - - - UIView - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIView.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UINavigationController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UIPopoverController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UISplitViewController.h - - - - UIViewController - - IBFrameworkSource - UIKit.framework/Headers/UITabBarController.h - - - - UIViewController - UIResponder - - IBFrameworkSource - UIKit.framework/Headers/UIViewController.h + ./Classes/MoreViewController.h @@ -789,19 +589,18 @@ AAMAAAABAAEAAAFTAAMAAAAEAAACAgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS - + com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 YES - ../linphone.xcodeproj 3 linphone-banner.png {300, 100} - 132 + 1498 diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 6ff46115c..119c7ab72 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -3,19 +3,19 @@ 784 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 YES - IBUIViewController + IBProxyObject IBUIImageView IBUIView - IBProxyObject + IBUIViewController YES @@ -68,13 +68,12 @@ IBCocoaTouchFramework - NO UICompositeViewController - 1 1 + YES IBCocoaTouchFramework NO @@ -314,6 +313,6 @@ background.png {640, 523} - 1181 + 1498 diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 72c09b0a3..c32ccc2bf 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -62,6 +62,34 @@ @implementation IASKSpecifierValuesViewControllerEx +- (void)initIASKSpecifierValuesViewControllerEx { + [self.view setBackgroundColor:[UIColor clearColor]]; +} + +- (id)init { + self = [super init]; + if(self != nil) { + [self initIASKSpecifierValuesViewControllerEx]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + if(self != nil) { + [self initIASKSpecifierValuesViewControllerEx]; + } + return self; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if(self != nil) { + [self initIASKSpecifierValuesViewControllerEx]; + } + return self; +} + - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell * cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; @@ -133,6 +161,8 @@ } - (void)initIASKAppSettingsViewControllerEx { + [self.view setBackgroundColor:[UIColor clearColor]]; + // Force kIASKSpecifierValuesViewControllerIndex static int kIASKSpecifierValuesViewControllerIndex = 0; _viewList = [[NSMutableArray alloc] init]; @@ -223,7 +253,7 @@ } - (void)drawRect:(CGRect)rect { - UIImage *img = [UIImage imageNamed:@"settings_bar_background.png"]; + UIImage *img = [UIImage imageNamed:@"toolsbar_background.png"]; [img drawInRect:rect]; } @@ -238,22 +268,30 @@ @implementation UINavigationControllerEx +- (id)initWithRootViewController:(UIViewController *)rootViewController { + [UINavigationControllerEx removeBackground:rootViewController.view]; + return [self initWithRootViewController:rootViewController]; +} + + (void)removeTableBackground:(UIView*)view { if([view isKindOfClass:[UITableView class]]) { [view setBackgroundColor:[UIColor clearColor]]; } + if([view isKindOfClass:[UIImageView class]] && [[view superview] isKindOfClass:[UITableView class]]) { + [(UIImageView*)view setImage:nil]; + } for(UIView *subview in [view subviews]) { [UINavigationControllerEx removeTableBackground:subview]; } } -- (id)initWithRootViewController:(UIViewController *)rootViewController { - [UINavigationControllerEx removeTableBackground:rootViewController.view]; - return [super initWithRootViewController:rootViewController]; ++ (void)removeBackground:(UIView*)view { + [view setBackgroundColor:[UIColor clearColor]]; + [UINavigationControllerEx removeTableBackground:view]; } - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { - [UINavigationControllerEx removeTableBackground:viewController.view]; + [UINavigationControllerEx removeBackground:viewController.view]; [viewController viewWillAppear:FALSE]; // Force load: Load Title UILabel *labelTitleView = [[UILabel alloc] init]; @@ -272,14 +310,14 @@ - (void)setViewControllers:(NSArray *)viewControllers { for(UIViewController *controller in viewControllers) { - [UINavigationControllerEx removeTableBackground:controller.view]; + [UINavigationControllerEx removeBackground:controller.view]; } [super setViewControllers:viewControllers]; } - (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated { for(UIViewController *controller in viewControllers) { - [UINavigationControllerEx removeTableBackground:controller.view]; + [UINavigationControllerEx removeBackground:controller.view]; } [super setViewControllers:viewControllers animated:animated]; } @@ -337,6 +375,8 @@ static UICompositeViewDescription *compositeDescription = nil; settingsController.hiddenKeys = [self findHiddenKeys]; settingsController.settingsStore = [[LinphoneManager instance] settingsStore]; + [navigationController.view setBackgroundColor:[UIColor clearColor]]; + navigationController.view.frame = self.view.frame; [navigationController pushViewController:settingsController animated:FALSE]; [self.view addSubview: navigationController.view]; diff --git a/Classes/SettingsViewController.xib b/Classes/SettingsViewController.xib index f4b4552a1..09f4282f4 100644 --- a/Classes/SettingsViewController.xib +++ b/Classes/SettingsViewController.xib @@ -40,7 +40,6 @@ {320, 460} - _NS:9 3 diff --git a/Resources/history_details_bar_background.png b/Resources/history_details_bar_background.png deleted file mode 100644 index e3638e1976b397c669e71c428631487b600fe13e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^tUz4K!2~2Z_4gEmr~;2jAk8fd!i)^F=12eq*-Jcq zUD@xjb8+$VX`9TE0SY;Ix;TbdoKF7p|Gz!6P(qRe>*7CwcBVgdST0F(cfOn$^x0#o ze8y*uQ2QHS`gf%#TxQ;T*?R5U#SymKSBR)Sm1em7dBT_DR>iJBvlu*G{an^LB{Ts5 D?eH-_ diff --git a/Resources/settings_bar_background.png b/Resources/settings_bar_background.png deleted file mode 100644 index e3638e1976b397c669e71c428631487b600fe13e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^tUz4K!2~2Z_4gEmr~;2jAk8fd!i)^F=12eq*-Jcq zUD@xjb8+$VX`9TE0SY;Ix;TbdoKF7p|Gz!6P(qRe>*7CwcBVgdST0F(cfOn$^x0#o ze8y*uQ2QHS`gf%#TxQ;T*?R5U#SymKSBR)Sm1em7dBT_DR>iJBvlu*G{an^LB{Ts5 D?eH-_ diff --git a/Resources/contact_bar_background.png b/Resources/toolsbar_background.png similarity index 100% rename from Resources/contact_bar_background.png rename to Resources/toolsbar_background.png diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index b62cd89b5..2d43fdff6 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -125,7 +125,6 @@ 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; }; 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; }; - 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; 344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDE71484E723007420B6 /* libzrtpcpp.a */; }; 344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; 344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -296,7 +295,6 @@ D34BD66015C13DB60070C209 /* conference_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */; }; D34BD66115C13DB60070C209 /* contact_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE715AABE4E00A2147A /* contact_back_default.png */; }; D34BD66215C13DB60070C209 /* contact_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE815AABE4E00A2147A /* contact_back_over.png */; }; - D34BD66315C13DB60070C209 /* contact_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D378906915AC37C800BD776C /* contact_bar_background.png */; }; D34BD66415C13DB60070C209 /* contact_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3615B011AF00420DAC /* contact_cancel_default.png */; }; D34BD66515C13DB60070C209 /* contact_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3715B011AF00420DAC /* contact_cancel_over.png */; }; D34BD66615C13DB60070C209 /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; }; @@ -496,7 +494,6 @@ D34BD72915C13DD40070C209 /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; }; D34BD72A15C13DD40070C209 /* HistoryDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */; }; D34BD72B15C13DD40070C209 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; }; - D34BD72C15C13DD40070C209 /* InCallViewController-ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */; }; D34BD72D15C13DD40070C209 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; }; D34BD72E15C13DD40070C209 /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; }; D34BD72F15C13DD40070C209 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; @@ -589,7 +586,6 @@ D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */; }; - D378906A15AC37C800BD776C /* contact_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D378906915AC37C800BD776C /* contact_bar_background.png */; }; D378907515AC448A00BD776C /* UIView+ModalStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D378907415AC448A00BD776C /* UIView+ModalStack.m */; }; D378907615AC448A00BD776C /* UIView+ModalStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D378907415AC448A00BD776C /* UIView+ModalStack.m */; }; D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; @@ -668,6 +664,8 @@ D3A55FBC15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; }; D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; }; + D3A74E5915C68162001500B9 /* toolsbar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E5815C68162001500B9 /* toolsbar_background.png */; }; + D3A74E5A15C68162001500B9 /* toolsbar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E5815C68162001500B9 /* toolsbar_background.png */; }; D3A8BB7015A6C7D500F96BE5 /* UIChatRoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */; }; D3A8BB7115A6C7D500F96BE5 /* UIChatRoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */; }; D3A8BB7415A6C81A00F96BE5 /* UIChatRoomCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7315A6C81A00F96BE5 /* UIChatRoomCell.xib */; }; @@ -676,10 +674,6 @@ D3A8BB7F15A6CC3200F96BE5 /* setup_back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */; }; D3A8BB8115A6CC3200F96BE5 /* setup_cancel_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */; }; D3A8BB8315A6CC3200F96BE5 /* setup_start_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */; }; - D3B82A0215C18A710036C93E /* history_details_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0015C18A710036C93E /* history_details_bar_background.png */; }; - D3B82A0315C18A710036C93E /* history_details_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0015C18A710036C93E /* history_details_bar_background.png */; }; - D3B82A0415C18A710036C93E /* settings_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0115C18A710036C93E /* settings_bar_background.png */; }; - D3B82A0515C18A710036C93E /* settings_bar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B82A0115C18A710036C93E /* settings_bar_background.png */; }; D3B9A3DF15A58C450096EA4E /* chat_field.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DA15A58C440096EA4E /* chat_field.png */; }; D3B9A3E115A58C450096EA4E /* chat_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */; }; D3B9A3E315A58C450096EA4E /* chat_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */; }; @@ -1185,7 +1179,6 @@ 341FCA8D149798210084BC26 /* linphonerc-ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "linphonerc-ipad"; sourceTree = ""; }; 34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoZoomHandler.h; path = LinphoneUI/VideoZoomHandler.h; sourceTree = ""; }; 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VideoZoomHandler.m; path = LinphoneUI/VideoZoomHandler.m; sourceTree = ""; }; - 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "InCallViewController-ipad.xib"; sourceTree = ""; }; 344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = ""; }; 344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; }; 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; }; @@ -1350,7 +1343,6 @@ D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsLabelViewController.h; sourceTree = ""; }; D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsLabelViewController.m; sourceTree = ""; }; D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactDetailsLabelViewController.xib; sourceTree = ""; }; - D378906915AC37C800BD776C /* contact_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_bar_background.png; path = Resources/contact_bar_background.png; sourceTree = ""; }; D378907415AC448A00BD776C /* UIView+ModalStack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+ModalStack.m"; sourceTree = ""; }; D378907715AC44A300BD776C /* UIView+ModalStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+ModalStack.h"; sourceTree = ""; }; D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_default.png; path = Resources/call_state_delete_default.png; sourceTree = ""; }; @@ -1428,6 +1420,7 @@ D3A55FBA15877E5E003FD403 /* UIContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactCell.h; sourceTree = ""; }; D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = ""; }; D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = ""; }; + D3A74E5815C68162001500B9 /* toolsbar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = toolsbar_background.png; path = Resources/toolsbar_background.png; sourceTree = ""; }; D3A8BB6E15A6C7D500F96BE5 /* UIChatRoomCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIChatRoomCell.h; sourceTree = ""; }; D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIChatRoomCell.m; sourceTree = ""; }; D3A8BB7315A6C81A00F96BE5 /* UIChatRoomCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIChatRoomCell.xib; sourceTree = ""; }; @@ -1436,8 +1429,6 @@ D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_back_disabled.png; path = Resources/setup_back_disabled.png; sourceTree = ""; }; D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_cancel_disabled.png; path = Resources/setup_cancel_disabled.png; sourceTree = ""; }; D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_start_disabled.png; path = Resources/setup_start_disabled.png; sourceTree = ""; }; - D3B82A0015C18A710036C93E /* history_details_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_details_bar_background.png; path = Resources/history_details_bar_background.png; sourceTree = ""; }; - D3B82A0115C18A710036C93E /* settings_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_bar_background.png; path = Resources/settings_bar_background.png; sourceTree = ""; }; D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = NinePatch.xcodeproj; path = Utils/NinePatch/NinePatch.xcodeproj; sourceTree = ""; }; D3B9A3DA15A58C440096EA4E /* chat_field.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_field.png; path = Resources/chat_field.png; sourceTree = ""; }; D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_ok_default.png; path = Resources/chat_ok_default.png; sourceTree = ""; }; @@ -1776,10 +1767,9 @@ D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */, D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */, D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */, - 3422AA4F14975EC9000D4E8A /* InCallViewController-ipad.xib */, D3F83EE91582021700336684 /* InCallViewController.h */, - D3F83EEA1582021700336684 /* InCallViewController.m */, D3F83EEB1582021700336684 /* InCallViewController.xib */, + D3F83EEA1582021700336684 /* InCallViewController.m */, D3F26BEE15986B71005F9CAB /* IncomingCallViewController.h */, D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */, D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */, @@ -2317,7 +2307,6 @@ D3C31A0815BD8DED008ED271 /* conference_over_landscape.png */, D3128FE715AABE4E00A2147A /* contact_back_default.png */, D3128FE815AABE4E00A2147A /* contact_back_over.png */, - D378906915AC37C800BD776C /* contact_bar_background.png */, D3E84F3615B011AF00420DAC /* contact_cancel_default.png */, D3E84F3715B011AF00420DAC /* contact_cancel_over.png */, D3128FE915AABE4E00A2147A /* contact_edit_default.png */, @@ -2367,7 +2356,6 @@ D3157A8915B4466F00DD8C4C /* history_details_add_over.png */, D3157A8E15B446CB00DD8C4C /* history_details_back_default.png */, D3157A8F15B446CB00DD8C4C /* history_details_back_over.png */, - D3B82A0015C18A710036C93E /* history_details_bar_background.png */, D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */, D3ED3E9515872EF1006C0DE4 /* history_edit_over.png */, D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */, @@ -2462,7 +2450,6 @@ D3D6A3A5159B0EFE005F692C /* security_ko.png */, D3D6A3A7159B0EFE005F692C /* security_ok.png */, D3D6A3A6159B0EFE005F692C /* security_pending.png */, - D3B82A0115C18A710036C93E /* settings_bar_background.png */, D38327EF1580FE3A00FA0D23 /* settings_default.png */, D38327FE158100E400FA0D23 /* settings_over.png */, D38327F01580FE3A00FA0D23 /* settings_selected.png */, @@ -2493,6 +2480,7 @@ D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */, D35E757515931E5D0066B1C1 /* switch_camera_default.png */, D35E757615931E5D0066B1C1 /* switch_camera_over.png */, + D3A74E5815C68162001500B9 /* toolsbar_background.png */, D3C714B2159DB84400705B8E /* toy-mono.wav */, C9C8254115AE204D00D493FA /* transfer_call_default.png */, C9C8254E15AE256100D493FA /* transfer_call_disabled.png */, @@ -2793,7 +2781,6 @@ 2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */, 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */, - 3422AA5014975EC9000D4E8A /* InCallViewController-ipad.xib in Resources */, 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */, 34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */, D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */, @@ -3009,7 +2996,6 @@ D3C6526B15AC228A0092A874 /* contact_ok_default.png in Resources */, D3C6526D15AC228A0092A874 /* contact_ok_over.png in Resources */, D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */, - D378906A15AC37C800BD776C /* contact_bar_background.png in Resources */, D3E8F68815ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */, D32D5AA715ADE5D9008593F3 /* button_alert_background_default.png in Resources */, D32D5AA915ADE5D9008593F3 /* button_alert_background_over.png in Resources */, @@ -3077,8 +3063,7 @@ D3C31A8215BD8DED008ED271 /* video_on_default_landscape.png in Resources */, D3C31A8415BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */, D3C31A8615BD8DED008ED271 /* video_on_over_landscape.png in Resources */, - D3B82A0215C18A710036C93E /* history_details_bar_background.png in Resources */, - D3B82A0415C18A710036C93E /* settings_bar_background.png in Resources */, + D3A74E5915C68162001500B9 /* toolsbar_background.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3121,7 +3106,6 @@ D34BD72915C13DD40070C209 /* FirstLoginViewController.xib in Resources */, D34BD72A15C13DD40070C209 /* HistoryDetailsViewController.xib in Resources */, D34BD72B15C13DD40070C209 /* HistoryViewController.xib in Resources */, - D34BD72C15C13DD40070C209 /* InCallViewController-ipad.xib in Resources */, D34BD72D15C13DD40070C209 /* InCallViewController.xib in Resources */, D34BD72E15C13DD40070C209 /* IncomingCallViewController.xib in Resources */, D34BD72F15C13DD40070C209 /* LinphoneApp.xib in Resources */, @@ -3188,7 +3172,6 @@ D34BD66015C13DB60070C209 /* conference_over_landscape.png in Resources */, D34BD66115C13DB60070C209 /* contact_back_default.png in Resources */, D34BD66215C13DB60070C209 /* contact_back_over.png in Resources */, - D34BD66315C13DB60070C209 /* contact_bar_background.png in Resources */, D34BD66415C13DB60070C209 /* contact_cancel_default.png in Resources */, D34BD66515C13DB60070C209 /* contact_cancel_over.png in Resources */, D34BD66615C13DB60070C209 /* contact_edit_default.png in Resources */, @@ -3383,8 +3366,7 @@ D34BD74115C13E250070C209 /* Localizable.strings in Resources */, D34BD74215C13E350070C209 /* untitled.plist in Resources */, D34BD74315C13ED70070C209 /* DialerViewController.xib in Resources */, - D3B82A0315C18A710036C93E /* history_details_bar_background.png in Resources */, - D3B82A0515C18A710036C93E /* settings_bar_background.png in Resources */, + D3A74E5A15C68162001500B9 /* toolsbar_background.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From f7e5dd96db98b68dd8db7ca3bab6b0dfd3ed5c63 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 30 Jul 2012 17:57:15 +0200 Subject: [PATCH 089/397] Continue iPad version --- Classes/ChatRoomViewController.h | 2 + Classes/ChatRoomViewController.m | 5 + Classes/ChatRoomViewController.xib | 26 +- Classes/ContactDetailsViewController.xib | 5 +- Classes/DialerViewController.h | 4 +- Classes/DialerViewController.m | 10 +- Classes/DialerViewController.xib | 198 +- Classes/DialerViewController~ipad.xib | 1515 +++++++++ Classes/InCallViewController.m | 5 +- Classes/InCallViewController.xib | 18 +- Classes/LinphoneApp.xib | 98 +- Classes/LinphoneUI/UICallBar.m | 4 +- Classes/LinphoneUI/UICallBar.xib | 78 +- Classes/LinphoneUI/UICallBar~ipad.xib | 2799 +++++++++++++++++ Classes/LinphoneUI/UICallCell.xib | 16 +- .../LinphoneUI/UICompositeViewController.m | 10 +- Classes/LinphoneUI/UIContactDetailsHeader.m | 3 +- Classes/LinphoneUI/UIContactDetailsHeader.xib | 33 +- Classes/LinphoneUI/UILinphone.h | 4 +- Classes/LinphoneUI/UILinphone.m | 14 +- Classes/LinphoneUI/UIMainBar.h | 3 +- Classes/LinphoneUI/UIMainBar.m | 67 + Classes/LinphoneUI/UIMainBar.xib | 46 +- Classes/LinphoneUI/UIMainBar~ipad.xib | 1217 +++++++ Classes/PhoneMainView.m | 2 + Classes/SettingsViewController.m | 14 +- Resources/add_call_default~ipad.png | Bin 0 -> 4938 bytes Resources/add_call_disabled~ipad.png | Bin 0 -> 4757 bytes Resources/add_call_over~ipad.png | Bin 0 -> 4907 bytes Resources/add_contact_default~ipad.png | Bin 0 -> 5331 bytes Resources/add_contact_disabled~ipad.png | Bin 0 -> 4408 bytes Resources/add_contact_over~ipad.png | Bin 0 -> 4563 bytes Resources/back_default~ipad.png | Bin 0 -> 4731 bytes Resources/back_disabled~ipad.png | Bin 0 -> 4591 bytes Resources/back_over~ipad.png | Bin 0 -> 4758 bytes Resources/background_top~ipad.png | Bin 0 -> 2836 bytes Resources/backspace_default~ipad.png | Bin 0 -> 2417 bytes Resources/backspace_disabled~ipad.png | Bin 0 -> 2265 bytes Resources/backspace_over~ipad.png | Bin 0 -> 2312 bytes Resources/call_default~ipad.png | Bin 0 -> 11281 bytes Resources/call_disabled~ipad.png | Bin 0 -> 6697 bytes Resources/call_over~ipad.png | Bin 0 -> 7161 bytes Resources/chat_default_landscape~ipad.png | Bin 0 -> 6366 bytes Resources/chat_default~ipad.png | Bin 0 -> 5035 bytes Resources/chat_field.9.png | Bin 0 -> 1801 bytes Resources/chat_field.9@x2.png | Bin 0 -> 3047 bytes Resources/chat_over_landscape~ipad.png | Bin 0 -> 6384 bytes Resources/chat_over~ipad.png | Bin 0 -> 5161 bytes Resources/chat_selected_landscape~ipad.png | Bin 0 -> 6351 bytes Resources/chat_selected~ipad.png | Bin 0 -> 5071 bytes .../conference_default_landscape~ipad.png | Bin 0 -> 6132 bytes Resources/conference_default~ipad.png | Bin 0 -> 6132 bytes Resources/conference_over_landscape~ipad.png | Bin 0 -> 4138 bytes Resources/conference_over~ipad.png | Bin 0 -> 4138 bytes Resources/contacts_default_landscape~ipad.png | Bin 0 -> 6776 bytes Resources/contacts_default~ipad.png | Bin 0 -> 6207 bytes Resources/contacts_over_landscape~ipad.png | Bin 0 -> 6821 bytes Resources/contacts_over~ipad.png | Bin 0 -> 6407 bytes .../contacts_selected_landscape~ipad.png | Bin 0 -> 6827 bytes Resources/contacts_selected~ipad.png | Bin 0 -> 6207 bytes ...aler_address_background_landscape~ipad.png | Bin 0 -> 9184 bytes Resources/dialer_address_background~ipad.png | Bin 0 -> 9825 bytes ...dialer_alt_back_default_landscape~ipad.png | Bin 0 -> 3480 bytes Resources/dialer_alt_back_default~ipad.png | Bin 0 -> 3480 bytes .../dialer_alt_back_over_landscape~ipad.png | Bin 0 -> 2638 bytes Resources/dialer_alt_back_over~ipad.png | Bin 0 -> 2638 bytes .../dialer_alt_default_landscape~ipad.png | Bin 0 -> 5056 bytes Resources/dialer_alt_default~ipad.png | Bin 0 -> 5056 bytes Resources/dialer_alt_over_landscape~ipad.png | Bin 0 -> 3273 bytes Resources/dialer_alt_over~ipad.png | Bin 0 -> 3273 bytes Resources/hangup_default_landscape~ipad.png | Bin 0 -> 8498 bytes Resources/hangup_default~ipad.png | Bin 0 -> 8498 bytes Resources/hangup_over_landscape~ipad.png | Bin 0 -> 5117 bytes Resources/hangup_over~ipad.png | Bin 0 -> 5117 bytes Resources/history_default_landscape~ipad.png | Bin 0 -> 7466 bytes Resources/history_default~ipad.png | Bin 0 -> 6095 bytes Resources/history_over_landscape~ipad.png | Bin 0 -> 7390 bytes Resources/history_over~ipad.png | Bin 0 -> 6238 bytes Resources/history_selected_landscape~ipad.png | Bin 0 -> 7496 bytes Resources/history_selected~ipad.png | Bin 0 -> 6146 bytes .../micro_off_default_landscape~ipad.png | Bin 0 -> 5107 bytes Resources/micro_off_default~ipad.png | Bin 0 -> 5107 bytes .../micro_off_disabled_landscape~ipad.png | Bin 0 -> 4820 bytes Resources/micro_off_disabled~ipad.png | Bin 0 -> 4820 bytes Resources/micro_off_over_landscape~ipad.png | Bin 0 -> 5057 bytes Resources/micro_off_over~ipad.png | Bin 0 -> 5057 bytes Resources/micro_on_default_landscape~ipad.png | Bin 0 -> 4299 bytes Resources/micro_on_default~ipad.png | Bin 0 -> 4299 bytes .../micro_on_disabled_landscape~ipad.png | Bin 0 -> 4099 bytes Resources/micro_on_disabled~ipad.png | Bin 0 -> 4099 bytes Resources/micro_on_over_landscape~ipad.png | Bin 0 -> 4287 bytes Resources/micro_on_over~ipad.png | Bin 0 -> 4287 bytes .../options_add_default_landscape~ipad.png | Bin 0 -> 4899 bytes Resources/options_add_default~ipad.png | Bin 0 -> 4899 bytes .../options_add_disabled_landscape~ipad.png | Bin 0 -> 4568 bytes Resources/options_add_disabled~ipad.png | Bin 0 -> 4568 bytes Resources/options_add_over_landscape~ipad.png | Bin 0 -> 4847 bytes Resources/options_add_over~ipad.png | Bin 0 -> 4847 bytes Resources/options_default_landscape~ipad.png | Bin 0 -> 5466 bytes Resources/options_default~ipad.png | Bin 0 -> 5466 bytes Resources/options_disabled_landscape~ipad.png | Bin 0 -> 5177 bytes Resources/options_disabled~ipad.png | Bin 0 -> 5177 bytes Resources/options_over_landscape~ipad.png | Bin 0 -> 5416 bytes Resources/options_over~ipad.png | Bin 0 -> 5416 bytes Resources/options_selected_landscape~ipad.png | Bin 0 -> 5554 bytes Resources/options_selected~ipad.png | Bin 0 -> 5554 bytes ...ptions_transfer_default_landscape~ipad.png | Bin 0 -> 4950 bytes Resources/options_transfer_default~ipad.png | Bin 0 -> 4950 bytes ...tions_transfer_disabled_landscape~ipad.png | Bin 0 -> 4649 bytes Resources/options_transfer_disabled~ipad.png | Bin 0 -> 4649 bytes .../options_transfer_over_landscape~ipad.png | Bin 0 -> 4901 bytes Resources/options_transfer_over~ipad.png | Bin 0 -> 4901 bytes .../pause_off_default_landscape~ipad.png | Bin 0 -> 3311 bytes Resources/pause_off_default~ipad.png | Bin 0 -> 3311 bytes Resources/pause_off_over_landscape~ipad.png | Bin 0 -> 2542 bytes Resources/pause_off_over~ipad.png | Bin 0 -> 2542 bytes Resources/pause_on_default_landscape~ipad.png | Bin 0 -> 3731 bytes Resources/pause_on_default~ipad.png | Bin 0 -> 3731 bytes Resources/pause_on_over_landscape~ipad.png | Bin 0 -> 2645 bytes Resources/pause_on_over~ipad.png | Bin 0 -> 2645 bytes Resources/settings_default_landscape~ipad.png | Bin 0 -> 7759 bytes Resources/settings_default~ipad.png | Bin 0 -> 7145 bytes Resources/settings_over_landscape~ipad.png | Bin 0 -> 7739 bytes Resources/settings_over~ipad.png | Bin 0 -> 7310 bytes .../settings_selected_landscape~ipad.png | Bin 0 -> 7735 bytes Resources/settings_selected~ipad.png | Bin 0 -> 7147 bytes .../speaker_off_default_landscape~ipad.png | Bin 0 -> 5522 bytes Resources/speaker_off_default~ipad.png | Bin 0 -> 5522 bytes .../speaker_off_disabled_landscape~ipad.png | Bin 0 -> 5126 bytes Resources/speaker_off_disabled~ipad.png | Bin 0 -> 5126 bytes Resources/speaker_off_over_landscape~ipad.png | Bin 0 -> 5452 bytes Resources/speaker_off_over~ipad.png | Bin 0 -> 5452 bytes .../speaker_on_default_landscape~ipad.png | Bin 0 -> 4610 bytes Resources/speaker_on_default~ipad.png | Bin 0 -> 4610 bytes .../speaker_on_disabled_landscape~ipad.png | Bin 0 -> 4312 bytes Resources/speaker_on_disabled~ipad.png | Bin 0 -> 4312 bytes Resources/speaker_on_over_landscape~ipad.png | Bin 0 -> 4532 bytes Resources/speaker_on_over~ipad.png | Bin 0 -> 4532 bytes .../statebar_background_landscape~ipad.png | Bin 0 -> 1296 bytes Resources/statebar_background~ipad.png | Bin 0 -> 1358 bytes Resources/transfer_call_default~ipad.png | Bin 0 -> 7533 bytes Resources/transfer_call_disabled~ipad.png | Bin 0 -> 2974 bytes Resources/transfer_call_over~ipad.png | Bin 0 -> 5436 bytes Resources/transfer_default~ipad.png | Bin 0 -> 8160 bytes Resources/transfer_over~ipad.png | Bin 0 -> 5160 bytes .../video_off_default_landscape~ipad.png | Bin 0 -> 5129 bytes Resources/video_off_default~ipad.png | Bin 0 -> 5129 bytes .../video_off_disabled_landscape~ipad.png | Bin 0 -> 4815 bytes Resources/video_off_disabled~ipad.png | Bin 0 -> 4815 bytes Resources/video_off_over_landscape~ipad.png | Bin 0 -> 5108 bytes Resources/video_off_over~ipad.png | Bin 0 -> 5108 bytes Resources/video_on_default_landscape~ipad.png | Bin 0 -> 4151 bytes Resources/video_on_default~ipad.png | Bin 0 -> 4151 bytes .../video_on_disabled_landscape~ipad.png | Bin 0 -> 3987 bytes Resources/video_on_disabled~ipad.png | Bin 0 -> 3987 bytes Resources/video_on_over_landscape~ipad.png | Bin 0 -> 4127 bytes Resources/video_on_over~ipad.png | Bin 0 -> 4127 bytes linphone.xcodeproj/project.pbxproj | 806 ++++- 158 files changed, 6710 insertions(+), 292 deletions(-) create mode 100644 Classes/DialerViewController~ipad.xib create mode 100644 Classes/LinphoneUI/UICallBar~ipad.xib create mode 100644 Classes/LinphoneUI/UIMainBar~ipad.xib create mode 100644 Resources/add_call_default~ipad.png create mode 100644 Resources/add_call_disabled~ipad.png create mode 100644 Resources/add_call_over~ipad.png create mode 100644 Resources/add_contact_default~ipad.png create mode 100644 Resources/add_contact_disabled~ipad.png create mode 100644 Resources/add_contact_over~ipad.png create mode 100644 Resources/back_default~ipad.png create mode 100644 Resources/back_disabled~ipad.png create mode 100644 Resources/back_over~ipad.png create mode 100644 Resources/background_top~ipad.png create mode 100644 Resources/backspace_default~ipad.png create mode 100644 Resources/backspace_disabled~ipad.png create mode 100644 Resources/backspace_over~ipad.png create mode 100644 Resources/call_default~ipad.png create mode 100644 Resources/call_disabled~ipad.png create mode 100644 Resources/call_over~ipad.png create mode 100644 Resources/chat_default_landscape~ipad.png create mode 100644 Resources/chat_default~ipad.png create mode 100644 Resources/chat_field.9.png create mode 100644 Resources/chat_field.9@x2.png create mode 100644 Resources/chat_over_landscape~ipad.png create mode 100644 Resources/chat_over~ipad.png create mode 100644 Resources/chat_selected_landscape~ipad.png create mode 100644 Resources/chat_selected~ipad.png create mode 100644 Resources/conference_default_landscape~ipad.png create mode 100644 Resources/conference_default~ipad.png create mode 100644 Resources/conference_over_landscape~ipad.png create mode 100644 Resources/conference_over~ipad.png create mode 100644 Resources/contacts_default_landscape~ipad.png create mode 100644 Resources/contacts_default~ipad.png create mode 100644 Resources/contacts_over_landscape~ipad.png create mode 100644 Resources/contacts_over~ipad.png create mode 100644 Resources/contacts_selected_landscape~ipad.png create mode 100644 Resources/contacts_selected~ipad.png create mode 100644 Resources/dialer_address_background_landscape~ipad.png create mode 100644 Resources/dialer_address_background~ipad.png create mode 100644 Resources/dialer_alt_back_default_landscape~ipad.png create mode 100644 Resources/dialer_alt_back_default~ipad.png create mode 100644 Resources/dialer_alt_back_over_landscape~ipad.png create mode 100644 Resources/dialer_alt_back_over~ipad.png create mode 100644 Resources/dialer_alt_default_landscape~ipad.png create mode 100644 Resources/dialer_alt_default~ipad.png create mode 100644 Resources/dialer_alt_over_landscape~ipad.png create mode 100644 Resources/dialer_alt_over~ipad.png create mode 100644 Resources/hangup_default_landscape~ipad.png create mode 100644 Resources/hangup_default~ipad.png create mode 100644 Resources/hangup_over_landscape~ipad.png create mode 100644 Resources/hangup_over~ipad.png create mode 100644 Resources/history_default_landscape~ipad.png create mode 100644 Resources/history_default~ipad.png create mode 100644 Resources/history_over_landscape~ipad.png create mode 100644 Resources/history_over~ipad.png create mode 100644 Resources/history_selected_landscape~ipad.png create mode 100644 Resources/history_selected~ipad.png create mode 100644 Resources/micro_off_default_landscape~ipad.png create mode 100644 Resources/micro_off_default~ipad.png create mode 100644 Resources/micro_off_disabled_landscape~ipad.png create mode 100644 Resources/micro_off_disabled~ipad.png create mode 100644 Resources/micro_off_over_landscape~ipad.png create mode 100644 Resources/micro_off_over~ipad.png create mode 100644 Resources/micro_on_default_landscape~ipad.png create mode 100644 Resources/micro_on_default~ipad.png create mode 100644 Resources/micro_on_disabled_landscape~ipad.png create mode 100644 Resources/micro_on_disabled~ipad.png create mode 100644 Resources/micro_on_over_landscape~ipad.png create mode 100644 Resources/micro_on_over~ipad.png create mode 100644 Resources/options_add_default_landscape~ipad.png create mode 100644 Resources/options_add_default~ipad.png create mode 100644 Resources/options_add_disabled_landscape~ipad.png create mode 100644 Resources/options_add_disabled~ipad.png create mode 100644 Resources/options_add_over_landscape~ipad.png create mode 100644 Resources/options_add_over~ipad.png create mode 100644 Resources/options_default_landscape~ipad.png create mode 100644 Resources/options_default~ipad.png create mode 100644 Resources/options_disabled_landscape~ipad.png create mode 100644 Resources/options_disabled~ipad.png create mode 100644 Resources/options_over_landscape~ipad.png create mode 100644 Resources/options_over~ipad.png create mode 100644 Resources/options_selected_landscape~ipad.png create mode 100644 Resources/options_selected~ipad.png create mode 100644 Resources/options_transfer_default_landscape~ipad.png create mode 100644 Resources/options_transfer_default~ipad.png create mode 100644 Resources/options_transfer_disabled_landscape~ipad.png create mode 100644 Resources/options_transfer_disabled~ipad.png create mode 100644 Resources/options_transfer_over_landscape~ipad.png create mode 100644 Resources/options_transfer_over~ipad.png create mode 100644 Resources/pause_off_default_landscape~ipad.png create mode 100644 Resources/pause_off_default~ipad.png create mode 100644 Resources/pause_off_over_landscape~ipad.png create mode 100644 Resources/pause_off_over~ipad.png create mode 100644 Resources/pause_on_default_landscape~ipad.png create mode 100644 Resources/pause_on_default~ipad.png create mode 100644 Resources/pause_on_over_landscape~ipad.png create mode 100644 Resources/pause_on_over~ipad.png create mode 100644 Resources/settings_default_landscape~ipad.png create mode 100644 Resources/settings_default~ipad.png create mode 100644 Resources/settings_over_landscape~ipad.png create mode 100644 Resources/settings_over~ipad.png create mode 100644 Resources/settings_selected_landscape~ipad.png create mode 100644 Resources/settings_selected~ipad.png create mode 100644 Resources/speaker_off_default_landscape~ipad.png create mode 100644 Resources/speaker_off_default~ipad.png create mode 100644 Resources/speaker_off_disabled_landscape~ipad.png create mode 100644 Resources/speaker_off_disabled~ipad.png create mode 100644 Resources/speaker_off_over_landscape~ipad.png create mode 100644 Resources/speaker_off_over~ipad.png create mode 100644 Resources/speaker_on_default_landscape~ipad.png create mode 100644 Resources/speaker_on_default~ipad.png create mode 100644 Resources/speaker_on_disabled_landscape~ipad.png create mode 100644 Resources/speaker_on_disabled~ipad.png create mode 100644 Resources/speaker_on_over_landscape~ipad.png create mode 100644 Resources/speaker_on_over~ipad.png create mode 100644 Resources/statebar_background_landscape~ipad.png create mode 100644 Resources/statebar_background~ipad.png create mode 100644 Resources/transfer_call_default~ipad.png create mode 100644 Resources/transfer_call_disabled~ipad.png create mode 100644 Resources/transfer_call_over~ipad.png create mode 100644 Resources/transfer_default~ipad.png create mode 100644 Resources/transfer_over~ipad.png create mode 100644 Resources/video_off_default_landscape~ipad.png create mode 100644 Resources/video_off_default~ipad.png create mode 100644 Resources/video_off_disabled_landscape~ipad.png create mode 100644 Resources/video_off_disabled~ipad.png create mode 100644 Resources/video_off_over_landscape~ipad.png create mode 100644 Resources/video_off_over~ipad.png create mode 100644 Resources/video_on_default_landscape~ipad.png create mode 100644 Resources/video_on_default~ipad.png create mode 100644 Resources/video_on_disabled_landscape~ipad.png create mode 100644 Resources/video_on_disabled~ipad.png create mode 100644 Resources/video_on_over_landscape~ipad.png create mode 100644 Resources/video_on_over~ipad.png diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h index 9d63ea797..03ac04c83 100644 --- a/Classes/ChatRoomViewController.h +++ b/Classes/ChatRoomViewController.h @@ -37,6 +37,7 @@ UIImageView *avatarImage; UIView *headerView; UIView *footerView; + UIImageView *fieldBackgroundImage; } @@ -48,6 +49,7 @@ @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; @property (nonatomic, retain) IBOutlet UIView *headerView; @property (nonatomic, retain) IBOutlet UIView *footerView; +@property (nonatomic, retain) IBOutlet UIImageView *fieldBackgroundImage; @property (nonatomic, copy) NSString *remoteAddress; - (IBAction)onBackClick:(id)event; diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 4e6f12c64..21ca2433b 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -33,6 +33,7 @@ @synthesize avatarImage; @synthesize headerView; @synthesize footerView; +@synthesize fieldBackgroundImage; #pragma mark - Lifecycle Functions @@ -55,6 +56,7 @@ [avatarImage release]; [headerView release]; [footerView release]; + [fieldBackgroundImage release]; [super dealloc]; } @@ -109,6 +111,9 @@ static UICompositeViewDescription *compositeDescription = nil; [tableController setEditing:FALSE animated:FALSE]; [editButton setOff]; [[tableController tableView] reloadData]; + + [fieldBackgroundImage setImage:[TUNinePatchCache imageOfSize:[fieldBackgroundImage bounds].size + forNinePatchNamed:@"chat_field"]]; } - (void)viewWillDisappear:(BOOL)animated { diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib index 738e35a47..a0595e88f 100644 --- a/Classes/ChatRoomViewController.xib +++ b/Classes/ChatRoomViewController.xib @@ -44,12 +44,13 @@ 290 - + 290 {320, 58} + _NS:9 NO IBCocoaTouchFramework @@ -132,7 +133,7 @@ {320, 58} - + _NS:9 3 @@ -436,6 +437,14 @@ 46 + + + fieldBackgroundImage + + + + 48 + dataSource @@ -541,7 +550,7 @@ - + toolsView @@ -592,7 +601,7 @@ 21 - fieldBackground + fieldBackgroundImage 29 @@ -631,7 +640,7 @@ 47 - + background @@ -667,7 +676,7 @@ - 47 + 48 @@ -710,6 +719,7 @@ UILabel UIImageView UIToggleButton + UIImageView UIView UIView UITextField @@ -729,6 +739,10 @@ editButton UIToggleButton + + fieldBackgroundImage + UIImageView + footerView UIView diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib index 86c780b1f..bd95658e7 100644 --- a/Classes/ContactDetailsViewController.xib +++ b/Classes/ContactDetailsViewController.xib @@ -44,7 +44,7 @@ - 292 + 290 {320, 58} @@ -125,7 +125,7 @@ - 292 + 289 {{160, 0}, {160, 58}} @@ -176,7 +176,6 @@ {{0, 59}, {320, 401}} - _NS:9 10 diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index b5a94af44..876541100 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -31,7 +31,7 @@ //Buttons UITextField* addressField; UIButton* addContactButton; - UIButton* cancelButton; + UIButton* backButton; UIEraseButton* eraseButton; UICallButton* callButton; UICallButton* addCallButton; @@ -65,7 +65,7 @@ @property (nonatomic, retain) IBOutlet UICallButton* callButton; @property (nonatomic, retain) IBOutlet UICallButton* addCallButton; @property (nonatomic, retain) IBOutlet UITransferButton* transferButton; -@property (nonatomic, retain) IBOutlet UIButton* cancelButton; +@property (nonatomic, retain) IBOutlet UIButton* backButton; @property (nonatomic, retain) IBOutlet UIEraseButton* eraseButton; @property (nonatomic, retain) IBOutlet UIButton* oneButton; diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 251f90687..61c77c9ca 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -35,7 +35,7 @@ @synthesize addressField; @synthesize addContactButton; -@synthesize cancelButton; +@synthesize backButton; @synthesize addCallButton; @synthesize transferButton; @synthesize callButton; @@ -67,7 +67,7 @@ - (void)dealloc { [addressField release]; [addContactButton release]; - [cancelButton release]; + [backButton release]; [eraseButton release]; [callButton release]; [addCallButton release]; @@ -107,7 +107,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; @@ -181,12 +181,12 @@ static UICompositeViewDescription *compositeDescription = nil; [transferButton setHidden:true]; } [callButton setHidden:true]; - [cancelButton setHidden:false]; + [backButton setHidden:false]; [addContactButton setHidden:true]; } else { [addCallButton setHidden:true]; [callButton setHidden:false]; - [cancelButton setHidden:true]; + [backButton setHidden:true]; [addContactButton setHidden:false]; [transferButton setHidden:true]; } diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index ccfa0f9c5..acb4e8b52 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -3,20 +3,20 @@ 784 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 YES + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUITextField - IBProxyObject + IBUIView YES @@ -41,6 +41,82 @@ 292 YES + + + 288 + + YES + + + 292 + {320, 80} + + + + _NS:9 + NO + IBCocoaTouchFramework + + NSImage + dialer_address_background.png + + + + + 292 + {320, 60} + + + + + 3 + MSAwAA + + NO + NO + IBCocoaTouchFramework + 0 + + sip: + + 3 + MQA + + YES + 15 + + 1 + 3 + IBCocoaTouchFramework + + + Helvetica + Helvetica + 0 + 36 + + + Helvetica + 36 + 16 + + + + {320, 80} + + + + _NS:9 + + 3 + MSAwAA + + 2 + + + YES + IBCocoaTouchFramework + 288 @@ -362,82 +438,6 @@ IBCocoaTouchFramework - - - 288 - - YES - - - 292 - {320, 80} - - - - _NS:9 - NO - IBCocoaTouchFramework - - NSImage - dialer_address_background.png - - - - - 292 - {320, 60} - - - - - 3 - MSAwAA - - NO - NO - IBCocoaTouchFramework - 0 - - sip: - - 3 - MQA - - YES - 15 - - 1 - 3 - IBCocoaTouchFramework - - - Helvetica - Helvetica - 0 - 36 - - - Helvetica - 36 - 16 - - - - {320, 80} - - - - _NS:9 - - 3 - MSAwAA - - 2 - - - YES - IBCocoaTouchFramework - 288 @@ -496,14 +496,14 @@ NSImage back_over.png + + NSImage + back_disabled.png + NSImage back_default.png - - NSImage - back_disabled.png - @@ -776,14 +776,6 @@ 225 - - - cancelButton - - - - 226 - addCallButton @@ -816,6 +808,14 @@ 253 + + + backButton + + + + 254 + delegate @@ -1012,7 +1012,6 @@ - view 178 @@ -1029,7 +1028,7 @@ 4 - address + addressField 179 @@ -1330,7 +1329,7 @@ - 253 + 254 @@ -1384,6 +1383,7 @@ addCallButton addContactButton addressField + backButton callButton cancelButton eightButton @@ -1406,6 +1406,7 @@ UICallButton UIButton UITextField + UIButton UICallButton UIButton UIButton @@ -1431,6 +1432,7 @@ addCallButton addContactButton addressField + backButton callButton cancelButton eightButton @@ -1462,6 +1464,10 @@ addressField UITextField + + backButton + UIButton + callButton UICallButton @@ -1738,6 +1744,6 @@ {214, 138} - 1181 + 1498 diff --git a/Classes/DialerViewController~ipad.xib b/Classes/DialerViewController~ipad.xib new file mode 100644 index 000000000..09692def9 --- /dev/null +++ b/Classes/DialerViewController~ipad.xib @@ -0,0 +1,1515 @@ + + + + 1296 + 11E53 + 2549 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1498 + + + IBProxyObject + IBUIButton + IBUIImageView + IBUITextField + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 292 + + + + 290 + + + + 290 + {768, 80} + + + + _NS:9 + NO + IBIPadFramework + + NSImage + dialer_address_background.png + + + + + 290 + {700, 60} + + + + + 3 + MSAwAA + + NO + NO + IBIPadFramework + 0 + + sip: + + 3 + MQA + + YES + 15 + + 1 + 3 + IBCocoaTouchFramework + + + Helvetica + Helvetica + 0 + 36 + + + Helvetica + 36 + 16 + + + + + 289 + {{698, 4}, {70, 51}} + + + + _NS:9 + NO + IBIPadFramework + NO + 0 + 0 + NO + NO + 15 + 15 + 15 + 15 + + 3 + MC41AA + + + NSImage + backspace_over~ipad.png + + + NSImage + backspace_disabled~ipad.png + + + NSImage + backspace_default~ipad.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + {768, 80} + + + + _NS:9 + + 3 + MSAwAA + + 2 + + + YES + IBIPadFramework + + + + 268 + + + + 292 + {{0, 11}, {107, 54}} + + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_one_over.png + + + NSImage + numpad_one_default.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + + + + 292 + {{107, 11}, {106, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_two_over.png + + + NSImage + numpad_two_default.png + + + + + + + 292 + {{213, 11}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_three_over.png + + + NSImage + numpad_three_default.png + + + + + + + 292 + {{0, 73}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_four_over.png + + + NSImage + numpad_four_default.png + + + + + + + 292 + {{107, 73}, {106, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_five_over.png + + + NSImage + numpad_five_default.png + + + + + + + 292 + {{213, 73}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_six_over.png + + + NSImage + numpad_six_default.png + + + + + + + 292 + {{0, 135}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_seven_over.png + + + NSImage + numpad_seven_default.png + + + + + + + 292 + {{107, 135}, {106, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_eight_over.png + + + NSImage + numpad_eight_default.png + + + + + + + 292 + {{213, 135}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_nine_over.png + + + NSImage + numpad_nine_default.png + + + + + + + 292 + {{0, 197}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_star_over.png + + + NSImage + numpad_star_default.png + + + + + + + 292 + {{107, 197}, {106, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_zero_over.png + + + NSImage + numpad_zero_default.png + + + + + + + 292 + {{213, 197}, {107, 54}} + + + + NO + NO + IBIPadFramework + 0 + 0 + + + NSImage + numpad_sharp_over.png + + + NSImage + numpad_sharp_default.png + + + + + + {{0, 640}, {320, 260}} + + + + _NS:9 + + 3 + MCAwAA + + IBIPadFramework + + + + 265 + + + + 292 + {126, 85} + + + + _NS:9 + NO + IBIPadFramework + NO + 0 + 0 + NO + NO + + + NSImage + add_contact_over~ipad.png + + + NSImage + add_contact_disabled~ipad.png + + + NSImage + add_contact_default~ipad.png + + + + + + + -2147483356 + {126, 85} + + + + _NS:9 + NO + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + back_over~ipad.png + + + NSImage + back_disabled~ipad.png + + + NSImage + back_default~ipad.png + + + + + + + 292 + {{126, 0}, {186, 85}} + + + + _NS:9 + NO + IBIPadFramework + NO + 0 + 0 + NO + NO + + + NSImage + call_over~ipad.png + + + NSImage + call_disabled~ipad.png + + + NSImage + call_default~ipad.png + + + + + + + -2147483356 + {{126, 0}, {186, 85}} + + + + _NS:9 + NO + IBIPadFramework + NO + 0 + 0 + NO + NO + + + NSImage + add_call_over~ipad.png + + + NSImage + add_call_disabled~ipad.png + + + NSImage + add_call_default~ipad.png + + + + + + + -2147483356 + {{126, 0}, {186, 85}} + + + _NS:9 + NO + IBIPadFramework + NO + 0 + 0 + NO + NO + + + NSImage + transfer_call_over~ipad.png + + + NSImage + transfer_call_disabled~ipad.png + + + NSImage + transfer_call_default~ipad.png + + + + + + {{456, 815}, {312, 85}} + + + + _NS:9 + + 3 + MSAwAA + + + IBIPadFramework + + + {768, 900} + + + + _NS:9 + + IBIPadFramework + + + + + + + addCallButton + + + + 42 + + + + addContactButton + + + + 43 + + + + addressField + + + + 44 + + + + callButton + + + + 45 + + + + eightButton + + + + 47 + + + + eraseButton + + + + 48 + + + + fiveButton + + + + 49 + + + + fourButton + + + + 50 + + + + nineButton + + + + 51 + + + + oneButton + + + + 52 + + + + sevenButton + + + + 53 + + + + sharpButton + + + + 54 + + + + sixButton + + + + 55 + + + + starButton + + + + 56 + + + + threeButton + + + + 57 + + + + transferButton + + + + 58 + + + + twoButton + + + + 59 + + + + view + + + + 60 + + + + zeroButton + + + + 61 + + + + backButton + + + + 69 + + + + onAddressChange: + + + 18 + + 65 + + + + addressField + + + + 35 + + + + addressField + + + + 29 + + + + addressField + + + + 36 + + + + addressField + + + + 37 + + + + addressField + + + + 32 + + + + addressField + + + + 31 + + + + addressField + + + + 30 + + + + addressField + + + + 27 + + + + addressField + + + + 28 + + + + addressField + + + + 26 + + + + addressField + + + + 33 + + + + addressField + + + + 34 + + + + addressField + + + + 41 + + + + addressField + + + + 40 + + + + onBackClick: + + + 7 + + 68 + + + + addressField + + + + 38 + + + + onAddContactClick: + + + 7 + + 63 + + + + addressField + + + + 39 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + + 3 + + + + + + + + + + toolBar + + + 4 + + + + + + + + + + + + + + + + + pad + + + 5 + + + + + + + + dialer + + + 6 + + + addressField + + + 7 + + + background + + + 8 + + + * + + + 9 + + + 6 + + + 10 + + + 0 + + + 11 + + + # + + + 12 + + + 9 + + + 13 + + + 8 + + + 14 + + + 7 + + + 15 + + + 4 + + + 16 + + + 5 + + + 17 + + + 3 + + + 18 + + + 2 + + + 19 + + + 1 + + + 20 + + + transferButton + + + 21 + + + callButton + + + 22 + + + backButton + + + 23 + + + addCallButton + + + 24 + + + addContactButton + + + 25 + + + backspaceButton + + + + + DialerViewController + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UITransferButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UICallButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UICallButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIEraseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIAddressTextField + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 69 + + + + + DialerViewController + UIViewController + + id + id + id + + + + onAddContactClick: + id + + + onAddressChange: + id + + + onBackClick: + id + + + + UICallButton + UIButton + UITextField + UIButton + UICallButton + UIButton + UIEraseButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + UIButton + UITransferButton + UIButton + UIButton + + + + addCallButton + UICallButton + + + addContactButton + UIButton + + + addressField + UITextField + + + backButton + UIButton + + + callButton + UICallButton + + + eightButton + UIButton + + + eraseButton + UIEraseButton + + + fiveButton + UIButton + + + fourButton + UIButton + + + nineButton + UIButton + + + oneButton + UIButton + + + sevenButton + UIButton + + + sharpButton + UIButton + + + sixButton + UIButton + + + starButton + UIButton + + + threeButton + UIButton + + + transferButton + UITransferButton + + + twoButton + UIButton + + + zeroButton + UIButton + + + + IBProjectSource + ./Classes/DialerViewController.h + + + + UIAddressTextField + UITextField + + IBProjectSource + ./Classes/UIAddressTextField.h + + + + UICallButton + UIButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UICallButton.h + + + + UIDigitButton + UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UIDigitButton.h + + + + UIEraseButton + UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UIEraseButton.h + + + + UILongTouchButton + UIButton + + IBProjectSource + ./Classes/UILongTouchButton.h + + + + UITransferButton + UIButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UITransferButton.h + + + + + 0 + IBIPadFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {371, 170} + {371, 170} + {371, 170} + {251, 170} + {251, 170} + {251, 170} + {251, 170} + {251, 170} + {251, 170} + {81, 43} + {81, 43} + {81, 43} + {371, 170} + {371, 170} + {371, 170} + {640, 135} + {220, 113} + {220, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {220, 113} + {220, 113} + {371, 170} + {371, 170} + {371, 170} + + 1498 + + diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index b82a25eb5..51a9a74ac 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -28,6 +28,7 @@ #import "UICallCell.h" #import "LinphoneManager.h" #import "PhoneMainView.h" +#import "UILinphone.h" #include "linphonecore.h" #include "private.h" @@ -191,10 +192,12 @@ static UICompositeViewDescription *compositeDescription = nil; videoGroup.alpha = 0; [videoCameraSwitch setPreview:videoPreview]; + + removeTableBackground([callTableController view]); } -#pragma mark - +#pragma mark - - (void)orientationUpdate { int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index cb842bcb8..e25d6a35b 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -3,21 +3,21 @@ 784 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 YES - IBUITableView - IBUIButton - IBUIActivityIndicatorView - IBUIView - IBUITableViewController IBProxyObject + IBUIActivityIndicatorView + IBUIButton + IBUITableView + IBUITableViewController + IBUIView YES @@ -77,7 +77,7 @@ - 265 + 283 {{214, 354}, {106, 106}} @@ -587,6 +587,6 @@ {170, 65} - 1181 + 1498 diff --git a/Classes/LinphoneApp.xib b/Classes/LinphoneApp.xib index 9839f1048..ea771f481 100644 --- a/Classes/LinphoneApp.xib +++ b/Classes/LinphoneApp.xib @@ -41,10 +41,9 @@ {320, 480} - - 1 - MCAxIDAuMTkxOTQ1NDc1NQA + 3 + MAA NO NO @@ -53,7 +52,6 @@ PhoneMainView - 1 1 @@ -146,97 +144,7 @@ 16 - - - - LinphoneAppDelegate - NSObject - - window - UIWindow - - - window - - window - UIWindow - - - - IBProjectSource - ./Classes/LinphoneAppDelegate.h - - - - PhoneMainView - UIViewController - - mainViewController - UICompositeViewController - - - mainViewController - - mainViewController - UICompositeViewController - - - - IBProjectSource - ./Classes/PhoneMainView.h - - - - TPMultiLayoutViewController - UIViewController - - UIView - UIView - - - - landscapeView - UIView - - - portraitView - UIView - - - - IBProjectSource - ./Classes/TPMultiLayoutViewController.h - - - - UICompositeViewController - TPMultiLayoutViewController - - UIView - UIView - UIView - - - - contentView - UIView - - - stateBarView - UIView - - - tabBarView - UIView - - - - IBProjectSource - ./Classes/UICompositeViewController.h - - - - + 0 IBCocoaTouchFramework diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 87dc2ac1d..c8063a1e6 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -102,8 +102,6 @@ #pragma mark - ViewController Functions - (void)viewDidLoad { - [super viewDidLoad]; - [pauseButton setType:UIPauseButtonType_CurrentCall call:nil]; [zeroButton setDigit:'0']; @@ -198,6 +196,8 @@ [(UIButton*) [landscapeView viewWithTag:[dialerButton tag]] setImage:[UIImage imageNamed:@"dialer_alt_back_over_landscape.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + [super viewDidLoad]; } - (void)viewWillAppear:(BOOL)animated { diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 322742dd5..9b3817fa3 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIButton - IBUIActivityIndicatorView - IBUIView - IBUIImageView IBProxyObject + IBUIActivityIndicatorView + IBUIButton + IBUIImageView + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -43,6 +43,7 @@ {{0, 335}, {320, 125}} + _NS:9 1 @@ -493,6 +494,21 @@ 292 + + + 290 + {{0, 100}, {320, 2000}} + + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBCocoaTouchFramework + 292 @@ -698,7 +714,7 @@ {{0, 67}, {105, 68}} - + _NS:9 NO 25 @@ -816,7 +832,7 @@ {{0, 248}, {480, 72}} - + _NS:9 1 @@ -1065,7 +1081,7 @@ {{193, 196}, {107, 54}} - + NO NO 14 @@ -1132,6 +1148,7 @@ {{0, 51}, {65, 55}} + _NS:9 NO 17 @@ -1173,6 +1190,21 @@ 292 + + + 290 + {{0, 50}, {480, 2000}} + + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBCocoaTouchFramework + 292 @@ -1378,7 +1410,7 @@ {65, 82} - + _NS:9 NO 25 @@ -1438,7 +1470,7 @@ {{415, 0}, {65, 82}} - + _NS:9 NO 27 @@ -1903,6 +1935,7 @@ + buttons @@ -1974,7 +2007,7 @@ - pad + padView 59 @@ -2123,7 +2156,7 @@ - pad + padView 114 @@ -2228,6 +2261,7 @@ + buttons @@ -2292,6 +2326,18 @@ mask + + 141 + + + background + + + 142 + + + background + @@ -2379,6 +2425,8 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -2446,7 +2494,7 @@ - 140 + 142 @@ -2828,6 +2876,6 @@ {160, 134} {130, 163} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UICallBar~ipad.xib b/Classes/LinphoneUI/UICallBar~ipad.xib new file mode 100644 index 000000000..64fa7ca94 --- /dev/null +++ b/Classes/LinphoneUI/UICallBar~ipad.xib @@ -0,0 +1,2799 @@ + + + + 1296 + 11E53 + 2549 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1498 + + + IBProxyObject + IBUIActivityIndicatorView + IBUIButton + IBUIImageView + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 301 + + + + -2147483356 + {{0, 680}, {1024, 68}} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NQA + + NO + NO + NO + -1 + NO + IBIPadFramework + + + + 288 + + + + 274 + {281, 260} + + + + _NS:9 + 2 + NO + IBIPadFramework + + NSImage + dialer_alt_background.png + + + + + 292 + {{-20, 10}, {107, 54}} + + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + 3 + IBIPadFramework + 0 + 0 + + 3 + MC41AA + + + NSImage + numpad_one_over.png + + + NSImage + numpad_one_default.png + + + Helvetica-Bold + Helvetica + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + 292 + {{87, 10}, {106, 54}} + + + + NO + NO + 4 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_two_over.png + + + NSImage + numpad_two_default.png + + + + + + + 292 + {{193, 10}, {107, 54}} + + + + NO + NO + 5 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_three_over.png + + + NSImage + numpad_three_default.png + + + + + + + 292 + {{-20, 72}, {107, 54}} + + + + NO + NO + 6 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_four_over.png + + + NSImage + numpad_four_default.png + + + + + + + 292 + {{87, 72}, {106, 54}} + + + + NO + NO + 7 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_five_over.png + + + NSImage + numpad_five_default.png + + + + + + + 292 + {{193, 72}, {107, 54}} + + + + NO + NO + 8 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_six_over.png + + + NSImage + numpad_six_default.png + + + + + + + 292 + {{-20, 134}, {107, 54}} + + + + NO + NO + 9 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_seven_over.png + + + NSImage + numpad_seven_default.png + + + + + + + 292 + {{87, 134}, {106, 54}} + + + + NO + NO + 10 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_eight_over.png + + + NSImage + numpad_eight_default.png + + + + + + + 292 + {{193, 134}, {107, 54}} + + + + NO + NO + 11 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_nine_over.png + + + NSImage + numpad_nine_default.png + + + + + + + 292 + {{-20, 196}, {107, 54}} + + + + NO + NO + 12 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_star_over.png + + + NSImage + numpad_star_default.png + + + + + + + 292 + {{87, 196}, {106, 54}} + + + + NO + NO + 13 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_zero_over.png + + + NSImage + numpad_zero_default.png + + + + + + + 292 + {{193, 196}, {107, 54}} + + + + NO + NO + 14 + IBIPadFramework + 0 + 0 + + + NSImage + numpad_sharp_over.png + + + NSImage + numpad_sharp_default.png + + + + + + {{372, 244}, {281, 260}} + + + + _NS:9 + + 3 + MCAwAA + + 1 + IBIPadFramework + + + + 292 + + + + 292 + {81, 69} + + + + _NS:9 + NO + 16 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_transfer_over_landscape~ipad.png + + + NSImage + options_transfer_disabled_landscape~ipad.png + + + NSImage + options_transfer_default_landscape~ipad.png + + + 2 + 15 + + + + + + 292 + {{0, 65}, {81, 69}} + + + + _NS:9 + NO + 17 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_add_over_landscape~ipad.png + + + NSImage + options_add_disabled_landscape~ipad.png + + + NSImage + options_add_default_landscape~ipad.png + + + + + + {{239, 552}, {81, 133}} + + + + _NS:9 + + 15 + IBIPadFramework + + + + 292 + + + + 290 + {{0, 85}, {1024, 2000}} + + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBIPadFramework + + + + 292 + {80, 85} + + + + _NS:9 + NO + 19 + + Video + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + video_off_over_landscape~ipad.png + + + NSImage + video_off_disabled_landscape~ipad.png + + + NSImage + video_on_default_landscape~ipad.png + + + NSImage + video_off_default_landscape~ipad.png + + + + + + + -2147483356 + {{20, 20}, {37, 37}} + + + + _NS:9 + NO + 20 + IBIPadFramework + 0 + + + + 292 + {{80, 0}, {80, 85}} + + + + _NS:9 + NO + 21 + + Micro + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + micro_off_over_landscape~ipad.png + + + NSImage + micro_off_disabled_landscape~ipad.png + + + NSImage + micro_on_default_landscape~ipad.png + + + NSImage + micro_off_default_landscape~ipad.png + + + + + + + 292 + {{160, 0}, {80, 85}} + + + + _NS:9 + NO + 22 + + Speaker + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + speaker_off_over_landscape~ipad.png + + + NSImage + speaker_off_disabled_landscape~ipad.png + + + NSImage + speaker_on_default_landscape~ipad.png + + + NSImage + speaker_off_default_landscape~ipad.png + + + + + + + 292 + {{240, 0}, {80, 85}} + + + + _NS:9 + NO + 23 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_over_landscape~ipad.png + + + NSImage + options_disabled_landscape~ipad.png + + + NSImage + options_selected_landscape~ipad.png + + + NSImage + options_default_landscape~ipad.png + + + + + + + 264 + {{701, 0}, {87, 85}} + + + + _NS:9 + NO + 24 + + Pause + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + pause_off_over_landscape~ipad.png + + + NSImage + pause_on_default_landscape~ipad.png + + + NSImage + pause_off_default_landscape~ipad.png + + + + + + + -2147483384 + {{701, 0}, {87, 85}} + + + + _NS:9 + NO + 25 + + Start Conference + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + conference_over_landscape~ipad.png + + + NSImage + conference_default_landscape~ipad.png + + + + + + + 264 + {{875, 0}, {149, 85}} + + + + _NS:9 + NO + 26 + + Hangup + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + hangup_over_landscape~ipad.png + + + NSImage + hangup_default_landscape~ipad.png + + + + + + + 264 + {{788, 0}, {87, 85}} + + + + _NS:9 + NO + 27 + + Back + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + dialer_alt_over_landscape~ipad.png + + + NSImage + dialer_alt_back_default_landscape~ipad.png + + + NSImage + dialer_alt_default_landscape~ipad.png + + + + + + {{0, 663}, {1024, 85}} + + + + _NS:9 + + 18 + IBIPadFramework + + + {1024, 748} + + + + _NS:9 + + NO + + 3 + 3 + + IBIPadFramework + + + + 301 + + + + -2147483356 + {{0, 936}, {768, 68}} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NQA + + NO + NO + NO + -1 + NO + IBIPadFramework + + + + 288 + + + + 274 + {281, 260} + + + + _NS:9 + 2 + NO + IBIPadFramework + + + + + 292 + {{-20, 10}, {107, 54}} + + + + + 1 + MC40MDAwMDAwMSAxIDEgMAA + + NO + NO + 3 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{87, 10}, {106, 54}} + + + + NO + NO + 4 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{193, 10}, {107, 54}} + + + + NO + NO + 5 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 72}, {107, 54}} + + + + NO + NO + 6 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{87, 72}, {106, 54}} + + + + NO + NO + 7 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{193, 72}, {107, 54}} + + + + NO + NO + 8 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 134}, {107, 54}} + + + + NO + NO + 9 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{87, 134}, {106, 54}} + + + + NO + NO + 10 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{193, 134}, {107, 54}} + + + + NO + NO + 11 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{-20, 196}, {107, 54}} + + + + NO + NO + 12 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{87, 196}, {106, 54}} + + + + NO + NO + 13 + IBIPadFramework + 0 + 0 + + + + + + + + + 292 + {{193, 196}, {107, 54}} + + + + NO + NO + 14 + IBIPadFramework + 0 + 0 + + + + + + + + {{244, 372}, {281, 260}} + + + + _NS:9 + + 1 + IBIPadFramework + + + + 292 + + + + 292 + {81, 69} + + + + _NS:9 + NO + 16 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_transfer_over~ipad.png + + + NSImage + options_transfer_disabled~ipad.png + + + NSImage + options_transfer_default~ipad.png + + + + + + + 292 + {{0, 64}, {81, 69}} + + + + _NS:9 + NO + 17 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_add_over~ipad.png + + + NSImage + options_add_disabled~ipad.png + + + NSImage + options_add_default~ipad.png + + + + + + {{239, 809}, {81, 133}} + + + + _NS:9 + + 15 + IBIPadFramework + + + + 292 + + + + 290 + {{0, 85}, {768, 2000}} + + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBIPadFramework + + + + 292 + {80, 85} + + + + _NS:9 + NO + 19 + + Video + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + video_off_over~ipad.png + + + NSImage + video_off_disabled~ipad.png + + + NSImage + video_on_default~ipad.png + + + NSImage + video_off_default~ipad.png + + + + + + + -2147483356 + {{20, 20}, {37, 37}} + + + + _NS:9 + NO + 20 + IBIPadFramework + 0 + + + + 292 + {{80, 0}, {80, 85}} + + + + _NS:9 + NO + 21 + + Micro + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + micro_off_over~ipad.png + + + NSImage + micro_off_disabled~ipad.png + + + NSImage + micro_on_default~ipad.png + + + NSImage + micro_off_default~ipad.png + + + + + + + 292 + {{160, 0}, {80, 85}} + + + + _NS:9 + NO + 22 + + Speaker + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + speaker_off_over~ipad.png + + + NSImage + speaker_off_disabled~ipad.png + + + NSImage + speaker_on_default~ipad.png + + + NSImage + speaker_off_default~ipad.png + + + + + + + 292 + {{240, 0}, {80, 85}} + + + + _NS:9 + NO + 23 + + Add call + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + options_over~ipad.png + + + NSImage + options_disabled~ipad.png + + + NSImage + options_selected~ipad.png + + + NSImage + options_default~ipad.png + + + + + + + 264 + {{445, 0}, {87, 85}} + + + + _NS:9 + NO + 24 + + Pause + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + pause_off_over~ipad.png + + + NSImage + pause_on_default~ipad.png + + + NSImage + pause_off_default~ipad.png + + + + + + + -2147483384 + {{445, 0}, {87, 85}} + + + + _NS:9 + NO + 25 + + Start Conference + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + conference_over~ipad.png + + + NSImage + conference_default~ipad.png + + + + + + + 264 + {{619, 0}, {149, 85}} + + + + _NS:9 + NO + 26 + + Hangup + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + hangup_over~ipad.png + + + NSImage + hangup_default~ipad.png + + + + + + + 264 + {{532, 0}, {87, 85}} + + + + _NS:9 + NO + 27 + + Back + + IBIPadFramework + 0 + 0 + NO + NO + + + NSImage + dialer_alt_over~ipad.png + + + NSImage + dialer_alt_back_default~ipad.png + + + NSImage + dialer_alt_default~ipad.png + + + + + + {{0, 919}, {768, 85}} + + + + _NS:9 + + 18 + IBIPadFramework + + + {768, 1004} + + + + _NS:9 + + NO + IBIPadFramework + + + + + + + conferenceButton + + + + 64 + + + + dialerButton + + + + 65 + + + + eightButton + + + + 66 + + + + fiveButton + + + + 67 + + + + fourButton + + + + 68 + + + + hangupButton + + + + 69 + + + + landscapeView + + + + 70 + + + + microButton + + + + 71 + + + + nineButton + + + + 72 + + + + oneButton + + + + 73 + + + + optionsAddButton + + + + 74 + + + + optionsButton + + + + 75 + + + + optionsTransferButton + + + + 76 + + + + optionsView + + + + 77 + + + + padView + + + + 78 + + + + pauseButton + + + + 79 + + + + portraitView + + + + 80 + + + + sevenButton + + + + 81 + + + + sharpButton + + + + 82 + + + + sixButton + + + + 83 + + + + speakerButton + + + + 84 + + + + starButton + + + + 85 + + + + threeButton + + + + 86 + + + + twoButton + + + + 87 + + + + videoButton + + + + 88 + + + + view + + + + 89 + + + + zeroButton + + + + 90 + + + + onPadClick: + + + 7 + + 92 + + + + onConferenceClick: + + + 7 + + 93 + + + + onOptionsClick: + + + 7 + + 91 + + + + waitView + + + + 62 + + + + onOptionsAddClick: + + + 7 + + 94 + + + + onOptionsTransferClick: + + + 7 + + 95 + + + + waitView + + + + 63 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + Landscape View + + + 3 + + + + + + + + + Portrait View + + + 4 + + + + + + + optionsView + + + 5 + + + + + + + + + + + + + + + + + + padView + + + 6 + + + + + + + + + + + + + + + buttons + + + 7 + + + mask + + + 8 + + + background + + + 9 + + + videoWaitView + + + 10 + + + dialerButton + + + 11 + + + hangupButton + + + 12 + + + conferenceButton + + + 13 + + + pauseButton + + + 14 + + + optionsButton + + + 15 + + + speakerButton + + + 16 + + + microButton + + + 17 + + + videoButton + + + 18 + + + background + + + 19 + + + 1 + + + 20 + + + 2 + + + 21 + + + 3 + + + 22 + + + 4 + + + 23 + + + 5 + + + 24 + + + 6 + + + 25 + + + 7 + + + 26 + + + 8 + + + 27 + + + 9 + + + 28 + + + * + + + 29 + + + 0 + + + 30 + + + # + + + 31 + + + optionsAddButton + + + 32 + + + optionsTansferButton + + + 33 + + + mask + + + 34 + + + + + + + optionsView + + + 35 + + + + + + + + + + + + + + + + + + padView + + + 36 + + + + + + + + + + + + + + + buttons + + + 37 + + + background + + + 38 + + + dialerButton + + + 39 + + + optionsButton + + + 40 + + + videoButton + + + 41 + + + microButton + + + 42 + + + speakerButton + + + 43 + + + pauseButton + + + 44 + + + conferenceButton + + + 45 + + + hangupButton + + + 46 + + + videoWaitView + + + 47 + + + # + + + 48 + + + 0 + + + 49 + + + * + + + 50 + + + 9 + + + 51 + + + 8 + + + 52 + + + 7 + + + 53 + + + 6 + + + 54 + + + 5 + + + 55 + + + 4 + + + 56 + + + 3 + + + 57 + + + 2 + + + 58 + + + 1 + + + 59 + + + background + + + 60 + + + optionsAddButton + + + 61 + + + optionsTansferButton + + + + + UICallBar + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIPauseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UISpeakerButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIMicroButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIVideoButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UITransparentView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UITransparentView + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIToggleButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIVideoButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIMicroButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UISpeakerButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIPauseButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIHangUpButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + UIDigitButton + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + 95 + + + + + TPMultiLayoutViewController + UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICallBar + TPMultiLayoutViewController + + id + id + id + id + id + + + + onConferenceClick: + id + + + onOptionsAddClick: + id + + + onOptionsClick: + id + + + onOptionsTransferClick: + id + + + onPadClick: + id + + + + UIButton + UIToggleButton + UIButton + UIButton + UIButton + UIHangUpButton + UIMicroButton + UIButton + UIButton + UIButton + UIToggleButton + UIButton + UIView + UIView + UIPauseButton + UIButton + UIButton + UIButton + UISpeakerButton + UIButton + UIButton + UIButton + UIVideoButton + UIButton + + + + conferenceButton + UIButton + + + dialerButton + UIToggleButton + + + eightButton + UIButton + + + fiveButton + UIButton + + + fourButton + UIButton + + + hangupButton + UIHangUpButton + + + microButton + UIMicroButton + + + nineButton + UIButton + + + oneButton + UIButton + + + optionsAddButton + UIButton + + + optionsButton + UIToggleButton + + + optionsTransferButton + UIButton + + + optionsView + UIView + + + padView + UIView + + + pauseButton + UIPauseButton + + + sevenButton + UIButton + + + sharpButton + UIButton + + + sixButton + UIButton + + + speakerButton + UISpeakerButton + + + starButton + UIButton + + + threeButton + UIButton + + + twoButton + UIButton + + + videoButton + UIVideoButton + + + zeroButton + UIButton + + + + IBProjectSource + ./Classes/UICallBar.h + + + + UIDigitButton + UILongTouchButton + + addressField + UITextField + + + addressField + + addressField + UITextField + + + + IBProjectSource + ./Classes/UIDigitButton.h + + + + UIHangUpButton + UIButton + + IBProjectSource + ./Classes/UIHangUpButton.h + + + + UILongTouchButton + UIButton + + IBProjectSource + ./Classes/UILongTouchButton.h + + + + UIMicroButton + UIToggleButton + + IBProjectSource + ./Classes/UIMicroButton.h + + + + UIPauseButton + UIToggleButton + + IBProjectSource + ./Classes/UIPauseButton.h + + + + UISpeakerButton + UIToggleButton + + IBProjectSource + ./Classes/UISpeakerButton.h + + + + UIToggleButton + UIButton + + IBProjectSource + ./Classes/UIToggleButton.h + + + + UITransparentView + UIView + + IBProjectSource + ./Classes/UITransparentView.h + + + + UIVideoButton + UIToggleButton + + waitView + UIActivityIndicatorView + + + waitView + + waitView + UIActivityIndicatorView + + + + IBProjectSource + ./Classes/UIVideoButton.h + + + + + 0 + IBIPadFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {530, 526} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {297, 170} + {297, 170} + {297, 170} + {297, 170} + {159, 170} + {159, 170} + {159, 170} + {159, 170} + {159, 170} + {159, 170} + {159, 170} + {159, 170} + {220, 113} + {220, 113} + {220, 113} + {220, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {210, 113} + {220, 113} + {220, 113} + {220, 113} + {220, 113} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {162, 137} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {173, 170} + {160, 170} + {160, 170} + {160, 170} + {160, 170} + {160, 170} + {160, 170} + {160, 170} + {160, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + {162, 170} + + 1498 + + diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/UICallCell.xib index 5a1b8a9c6..e8526ff6d 100644 --- a/Classes/LinphoneUI/UICallCell.xib +++ b/Classes/LinphoneUI/UICallCell.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -154,7 +154,7 @@ - 294 + 290 {{10, 0}, {206, 51}} @@ -4651,7 +4651,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {{262, 12}, {50, 29}} - _NS:9 NO YES @@ -4676,7 +4675,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 294 + 290 {{0, 5}, {200, 40}} @@ -4716,7 +4715,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {320, 460} - _NS:9 NO @@ -5114,6 +5112,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {43, 46} {640, 125} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 049ed47d2..8891fad2b 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -227,7 +227,6 @@ + (void)addSubView:(UIViewController*)controller view:(UIView*)view { if(controller != nil) { - [controller view]; // Load the view if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [controller viewWillAppear:NO]; } @@ -257,6 +256,7 @@ if(controller == nil) { controller = [[NSClassFromString(name) alloc] init]; [viewControllerCache setValue:controller forKey:name]; + [controller view]; // Load the view } } return controller; @@ -433,9 +433,13 @@ [contentView setFrame: contentFrame]; [contentViewController.view setFrame: [contentView bounds]]; [tabBarView setFrame: tabFrame]; - [tabBarViewController.view setFrame:[tabBarView bounds]]; + CGRect frame = [tabBarViewController.view frame]; + frame.size.width = [tabBarView bounds].size.width; + [tabBarViewController.view setFrame:frame]; [stateBarView setFrame: stateBarFrame]; - [stateBarViewController.view setFrame:[stateBarView bounds]]; + frame = [stateBarViewController.view frame]; + frame.size.width = [stateBarView bounds].size.width; + [stateBarViewController.view setFrame:frame]; // Commit animation if(tabBar != nil || fullscreen != nil) { diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 03bb83259..2ca7037a9 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -21,6 +21,7 @@ #import "Utils.h" #import "UIEditableTableViewCell.h" #import "FastAddressBook.h" +#import "UILinphone.h" @implementation UIContactDetailsHeader @@ -60,7 +61,7 @@ - (void)viewDidLoad { [super viewDidLoad]; - [tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 + removeTableBackground(tableView); // Can't do it in Xib: issue with ios4 } diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.xib b/Classes/LinphoneUI/UIContactDetailsHeader.xib index bbe9f59c5..e6fe80dcc 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.xib +++ b/Classes/LinphoneUI/UIContactDetailsHeader.xib @@ -2,20 +2,20 @@ 1296 - 11D50 - 2182 - 1138.32 - 568.00 + 11E53 + 2549 + 1138.47 + 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUITableView - IBUIImageView - IBUIView - IBUILabel IBProxyObject + IBUIImageView + IBUILabel + IBUITableView + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -35,7 +35,7 @@ - 292 + 290 @@ -69,11 +69,11 @@ - 292 + 290 - 292 + 290 {{0, 37}, {199, 43}} @@ -116,7 +116,7 @@ - 292 + 290 @@ -378,7 +378,6 @@ AAgACAAIAAEAAQABAAE UILabel UIImageView - UILabel UIView UIView UITableView @@ -392,10 +391,6 @@ AAgACAAIAAEAAQABAAE avatarImage UIImageView - - contactLabel - UILabel - editView UIView @@ -428,6 +423,6 @@ AAgACAAIAAEAAQABAAE {262, 214} {131, 131} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h index ae4232c73..7ec0b4bcd 100644 --- a/Classes/LinphoneUI/UILinphone.h +++ b/Classes/LinphoneUI/UILinphone.h @@ -32,4 +32,6 @@ - (UIColor *)darkerColor; -@end \ No newline at end of file +@end + +void removeTableBackground(UIView* view); \ No newline at end of file diff --git a/Classes/LinphoneUI/UILinphone.m b/Classes/LinphoneUI/UILinphone.m index 595b27cd9..96347a6ab 100644 --- a/Classes/LinphoneUI/UILinphone.m +++ b/Classes/LinphoneUI/UILinphone.m @@ -89,4 +89,16 @@ return [self lumColor:0.75]; } -@end \ No newline at end of file +@end + +void removeTableBackground(UIView*view) { + if([view isKindOfClass:[UITableView class]]) { + [view setBackgroundColor:[UIColor clearColor]]; + } + if([view isKindOfClass:[UIImageView class]] && [[view superview] isKindOfClass:[UITableView class]]) { + [(UIImageView*)view setImage:nil]; + } + for(UIView *subview in [view subviews]) { + removeTableBackground(subview); + } +} diff --git a/Classes/LinphoneUI/UIMainBar.h b/Classes/LinphoneUI/UIMainBar.h index a53638cab..210247659 100644 --- a/Classes/LinphoneUI/UIMainBar.h +++ b/Classes/LinphoneUI/UIMainBar.h @@ -18,8 +18,9 @@ */ #import +#import "TPMultiLayoutViewController.h" -@interface UIMainBar : UIViewController { +@interface UIMainBar : TPMultiLayoutViewController { UIButton *historyButton; UIButton *contactsButton; UIButton *dialerButton; diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 6ffeae521..f875e05cd 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -289,4 +289,71 @@ [[PhoneMainView instance] changeCurrentView:[ChatViewController compositeViewDescription]]; } +#pragma mark - TPMultiLayoutViewController Functions + +- (NSDictionary*)attributesForView:(UIView*)view { + NSMutableDictionary *attributes = [NSMutableDictionary dictionary]; + + [attributes setObject:[NSValue valueWithCGRect:view.frame] forKey:@"frame"]; + [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"]; + if([view isKindOfClass:[UIButton class]]) { + UIButton *button = (UIButton *)view; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateNormal] key:@"image-normal"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateHighlighted] key:@"image-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateDisabled] key:@"image-disabled"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected] key:@"image-selected"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"image-disabled-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"image-selected-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateDisabled] key:@"image-selected-disabled"]; + + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateNormal] key:@"background-normal"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateHighlighted] key:@"background-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled] key:@"background-disabled"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected] key:@"background-selected"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"background-disabled-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"background-selected-highlighted"]; + [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateDisabled] key:@"background-selected-disabled"]; + } + [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"]; + + return attributes; +} + +- (void)applyAttributes:(NSDictionary*)attributes toView:(UIView*)view { + view.frame = [[attributes objectForKey:@"frame"] CGRectValue]; + view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue]; + if([view isKindOfClass:[UIButton class]]) { + UIButton *button = (UIButton *)view; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-normal"] forState:UIControlStateNormal]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-highlighted"] forState:UIControlStateHighlighted]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-disabled"] forState:UIControlStateDisabled]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-selected"] forState:UIControlStateSelected]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted]; + [button setImage:[UIMainBar getDictEntry:attributes key:@"image-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled]; + + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-normal"] forState:UIControlStateNormal]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-highlighted"] forState:UIControlStateHighlighted]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-disabled"] forState:UIControlStateDisabled]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-selected"] forState:UIControlStateSelected]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted]; + [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled]; + } + view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue]; +} + ++ (void)addDictEntry:(NSMutableDictionary*)dict item:(id)item key:(id)key { + if(item != nil && key != nil) { + [dict setObject:item forKey:key]; + } +} + ++ (id)getDictEntry:(NSDictionary*)dict key:(id)key { + if(key != nil) { + return [dict objectForKey:key]; + } + return nil; +} + @end diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib index 1b5260d8b..bd0bacade 100644 --- a/Classes/LinphoneUI/UIMainBar.xib +++ b/Classes/LinphoneUI/UIMainBar.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -313,7 +313,6 @@ {{2, 2}, {17, 17}} - _NS:9 NO YES @@ -436,6 +435,14 @@ 41 + + + portraitView + + + + 43 + onChatClick: @@ -515,7 +522,6 @@ - mainTabBar 4 @@ -629,13 +635,35 @@ - 41 + 44 - UIMainBar + TPMultiLayoutViewController UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UIMainBar + TPMultiLayoutViewController id id @@ -747,6 +775,6 @@ {128, 154} {128, 154} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIMainBar~ipad.xib b/Classes/LinphoneUI/UIMainBar~ipad.xib new file mode 100644 index 000000000..9f2a932d2 --- /dev/null +++ b/Classes/LinphoneUI/UIMainBar~ipad.xib @@ -0,0 +1,1217 @@ + + + + 1296 + 11E53 + 2549 + 1138.47 + 569.00 + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + 1498 + + + IBProxyObject + IBUIButton + IBUIImageView + IBUILabel + IBUIView + + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + PluginDependencyRecalculationVersion + + + + + IBFilesOwner + IBIPadFramework + + + IBFirstResponder + IBIPadFramework + + + + 292 + + + + -2147483356 + {{0, 11}, {768, 66}} + + + + _NS:9 + + 1 + MCAxIDAuMDkwOTI0NTczOTEAA + + NO + NO + NO + -1 + NO + IBIPadFramework + + + + 292 + {175, 77} + + + + _NS:9 + NO + 1 + + History + + IBIPadFramework + 0 + 0 + NO + + 3 + MC41AA + + + NSImage + history_over~ipad.png + + + NSImage + history_selected~ipad.png + + + NSImage + history_default~ipad.png + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + + + + -2147483356 + + + + 274 + {21, 21} + + + + _NS:9 + NO + IBIPadFramework + + NSImage + history_notification.png + + + + + 256 + {{2, 2}, {17, 17}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + 99 + + 3 + MQA + + + 0 + 10 + 1 + + 1 + 14 + + + Helvetica + 14 + 16 + + + + {{140, 1}, {21, 21}} + + + + _NS:9 + + 3 + MCAwAA + + NO + 2 + NO + IBIPadFramework + + + + 292 + {{175, 0}, {175, 77}} + + + + _NS:9 + NO + 3 + + Contacts + + IBIPadFramework + 0 + 0 + NO + + + NSImage + contacts_over~ipad.png + + + NSImage + contacts_selected~ipad.png + + + NSImage + contacts_default~ipad.png + + + + + + + 288 + {{350, -1}, {68, 80}} + + + + _NS:9 + NO + 4 + + Dialer + + IBIPadFramework + 0 + 0 + NO + + + NSImage + dialer_over.png + + + NSImage + dialer_selected + + + NSImage + dialer_default.png + + + + + + + 292 + {{418, 0}, {175, 77}} + + + + _NS:9 + NO + 5 + + Settings + + IBIPadFramework + 0 + 0 + NO + + + NSImage + settings_over~ipad.png + + + NSImage + settings_selected~ipad.png + + + NSImage + settings_default~ipad.png + + + + + + + 292 + {{593, 0}, {175, 77}} + + + + _NS:9 + NO + 6 + + Chat + + IBIPadFramework + 0 + 0 + NO + + + NSImage + chat_over~ipad.png + + + NSImage + chat_selected~ipad.png + + + NSImage + chat_default~ipad.png + + + + + + + -2147483356 + + + + 274 + {21, 21} + + + + _NS:9 + NO + IBIPadFramework + + + + + 256 + {{2, 2}, {17, 17}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + 99 + + + 0 + 10 + 1 + + + + + {{605, 1}, {21, 21}} + + + + _NS:9 + + NO + 7 + NO + IBIPadFramework + + + {768, 77} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NSAwAA + + NO + IBIPadFramework + + + + 292 + + + + -2147483356 + {{0, 19}, {1024, 67}} + + + + _NS:9 + + 1 + MCAxIDAuMDkwOTI0NTczOTEAA + + NO + NO + NO + -1 + NO + IBIPadFramework + + + + 292 + {240, 86} + + + + _NS:9 + NO + 1 + + History + + IBIPadFramework + 0 + 0 + NO + + + NSImage + history_over_landscape~ipad.png + + + NSImage + history_selected_landscape~ipad.png + + + NSImage + history_default_landscape~ipad.png + + + + + + + -2147483356 + + + + 274 + {21, 21} + + + + _NS:9 + NO + IBIPadFramework + + + + + 256 + {{2, 2}, {17, 17}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + 99 + + + 0 + 10 + 1 + + + + + {{208, 1}, {21, 21}} + + + + _NS:9 + + NO + 2 + NO + IBIPadFramework + + + + 292 + {{240, 0}, {240, 86}} + + + + _NS:9 + NO + 3 + + Contacts + + IBIPadFramework + 0 + 0 + NO + + + NSImage + contacts_over_landscape~ipad.png + + + NSImage + contacts_selected_landscape~ipad.png + + + NSImage + contacts_default_landscape~ipad.png + + + + + + + 288 + {{480, 8}, {68, 80}} + + + + _NS:9 + NO + 4 + + Dialer + + IBIPadFramework + 0 + 0 + NO + + + + + + + + + + 292 + {{544, 0}, {240, 86}} + + + + _NS:9 + NO + 5 + + Settings + + IBIPadFramework + 0 + 0 + NO + + + NSImage + settings_over_landscape~ipad.png + + + NSImage + settings_selected_landscape~ipad.png + + + NSImage + settings_default_landscape~ipad.png + + + + + + + 292 + {{784, 0}, {240, 86}} + + + + _NS:9 + NO + 6 + + Chat + + IBIPadFramework + 0 + 0 + NO + + + NSImage + chat_over_landscape~ipad.png + + + NSImage + chat_selected_landscape~ipad.png + + + NSImage + chat_default_landscape~ipad.png + + + + + + + -2147483356 + + + + 274 + {21, 21} + + + + _NS:9 + NO + IBIPadFramework + + + + + 256 + {{2, 2}, {17, 17}} + + + + _NS:9 + NO + YES + 7 + NO + IBIPadFramework + 99 + + + 0 + 10 + 1 + + + + + {{792, 1}, {21, 21}} + + + + _NS:9 + + NO + 7 + NO + IBIPadFramework + + + {1024, 86} + + + + _NS:9 + + 1 + MCAxIDAuMTkxOTQ1NDc1NSAwAA + + NO + IBIPadFramework + + + + + + + view + + + + 41 + + + + portraitView + + + + 42 + + + + landscapeView + + + + 43 + + + + chatButton + + + + 44 + + + + chatNotificationView + + + + 45 + + + + chatNotificationLabel + + + + 46 + + + + contactsButton + + + + 47 + + + + dialerButton + + + + 48 + + + + historyButton + + + + 49 + + + + historyNotificationLabel + + + + 50 + + + + historyNotificationView + + + + 51 + + + + settingsButton + + + + 52 + + + + onDialerClick: + + + 7 + + 60 + + + + onChatClick: + + + 7 + + 56 + + + + onHistoryClick: + + + 7 + + 58 + + + + onContactsClick: + + + 7 + + 57 + + + + onSettingsClick: + + + 7 + + 59 + + + + + + 0 + + + + + + -1 + + + File's Owner + + + -2 + + + + + 2 + + + + + + + + + + + + + Portrait View + + + 3 + + + + + + + chatNotificationView + + + 4 + + + + + + + historyNotificationView + + + 5 + + + dialer + + + 6 + + + + mask + + + 7 + + + chat + + + 8 + + + history + + + 9 + + + contacts + + + 11 + + + historyNotificationLabel + + + 12 + + + historyNotificationImage + + + 13 + + + chatNotificationImage + + + 14 + + + chatNotificationLabel + + + 10 + + + settings + + + 28 + + + + + + + + + + + + + Landscape View + + + 29 + + + + + + + chatNotificationView + + + 30 + + + settings + + + 31 + + + contacts + + + 32 + + + history + + + 33 + + + chat + + + 34 + + + + mask + + + 36 + + + + + + + historyNotificationView + + + 37 + + + historyNotificationImage + + + 38 + + + historyNotificationLabel + + + 39 + + + chatNotificationLabel + + + 40 + + + chatNotificationImage + + + 35 + + + dialer + + + + + UIMainBar + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIResponder + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + + + + + + 60 + + + + + TPMultiLayoutViewController + UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UIMainBar + UIViewController + + id + id + id + id + id + + + + onChatClick: + id + + + onContactsClick: + id + + + onDialerClick: + id + + + onHistoryClick: + id + + + onSettingsClick: + id + + + + UIButton + UILabel + UIView + UIButton + UIButton + UIButton + UILabel + UIView + UIButton + + + + chatButton + UIButton + + + chatNotificationLabel + UILabel + + + chatNotificationView + UIView + + + contactsButton + UIButton + + + dialerButton + UIButton + + + historyButton + UIButton + + + historyNotificationLabel + UILabel + + + historyNotificationView + UIView + + + settingsButton + UIButton + + + + IBProjectSource + ./Classes/UIMainBar.h + + + + + 0 + IBIPadFramework + + com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS + + + YES + 3 + + {480, 170} + {353, 153} + {480, 170} + {353, 153} + {480, 170} + {353, 153} + {480, 171} + {352, 153} + {480, 171} + {352, 153} + {480, 171} + {352, 153} + {128, 154} + {128, 154} + {16, 16} + {480, 171} + {353, 153} + {43, 43} + {480, 171} + {353, 153} + {480, 171} + {353, 153} + {480, 171} + {350, 153} + {480, 171} + {350, 153} + {480, 171} + {350, 153} + + 1498 + + diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 143a32343..f53928728 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -167,11 +167,13 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; [mainViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; } - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [self.view setFrame:[[UIScreen mainScreen] bounds]]; // Force resize to screen size [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; [mainViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; } diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index c32ccc2bf..dc2f054c3 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -273,21 +273,9 @@ return [self initWithRootViewController:rootViewController]; } -+ (void)removeTableBackground:(UIView*)view { - if([view isKindOfClass:[UITableView class]]) { - [view setBackgroundColor:[UIColor clearColor]]; - } - if([view isKindOfClass:[UIImageView class]] && [[view superview] isKindOfClass:[UITableView class]]) { - [(UIImageView*)view setImage:nil]; - } - for(UIView *subview in [view subviews]) { - [UINavigationControllerEx removeTableBackground:subview]; - } -} - + (void)removeBackground:(UIView*)view { [view setBackgroundColor:[UIColor clearColor]]; - [UINavigationControllerEx removeTableBackground:view]; + removeTableBackground(view); } - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { diff --git a/Resources/add_call_default~ipad.png b/Resources/add_call_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..a3ddce2f2d94e7e542107b139af990979b4554c8 GIT binary patch literal 4938 zcmbVQX*iT^`yWfzLZTweWEZnqXY6K-rN-Ejh!``*Zp@4|q^yN(S;{&T?F!M5)I&*y z$SX0D>_t=dCFUJH_59xt@9}>4-^YDi_jz8|`8(I&_2s@`XKT4fNLmO00PL~0LOTEe zTvU#HOMs6fscn{>;3!fw3m2MWhz~8oi$VmL5kl}ppmmTJiReJ|B1DCD5)AeIO9&!kvHv&@rv7der)7{xFERuMhC+gZcIx_N zO{F;y|1XXIYE5;DA`>AFL~2MF#hWt^AH_dlPVfGApdCX_Hb@-Bk24gnKy-+ASP(Io zW{oyd;GBR7egq^`7o!71K+!NQI8;|32GhrAqcBjIg&E4iTw5Qi|HsFF#bV%SGc+8H z!f08*U=}blGYf4LOkW>kuB)x5Wv257YaL9bc?EkD|HSp%iTgJe^*^yl6ou$T3!ylL zgarO!fSqp$ErjYDLI$E7b%0neZ@=IjeP=v>SBoZ6{KAO@3?(E8_^ZE2zyA{745e*u zj)LmKV881&(?z4uzaX~9t8v;I(^yd8K|`jy)YU^@{qV-GM@`Q96-}|X zNacC5nrFAS={LvOTpDE856>1-UK~E{ezMzC!{DI2Q5>8wtgCsJy-hqA_VdQLb@Yjl9EBq(ByPg>% z@lZ{SaB?8&O#j#*hTj)qZn|ib>O3WSGQ}~>>1pS`a>u%c8);IK<^D(amQ|X?Uk&dK z)COpa1GuYkGE!F+xlrK}o-Z>1n(p=S^gFfw^{Xa<8)cOu^7HeetEI-K0GLRx4mXeV z2h(EV_U*)tk(XN`wz|4}9^i03XCEKF7xcleXx9qBmpf{vemMY5p#BFJsTm^=fXys_ zdEgmW7r>&}n}nBmMakW>lLsqNl9is?Z!LLZCCYWrCgZd3(Y*mAe!ewWeWP|pICMrZ zj=j+Z?f?07AtIF@>8svlx5zWz$QtD*uH!ueZ68P-=q{DHroPqlNd`7lAGasrw5Py2 zh*w1=`Pmn}7pwBdyBSyenXg2;!y~9(zWz53;fWh%^k!)xUSCE-uFpB!uOAd#c}z^? zlj&3ZFH~`58JAk#wnVOPMrcdScs%~Ot|cv0sUC~w-DvH#D~~7_U4BqN7XWbIr}C-q z;qj8#POB3fjOG4YeIpDr`@{?V5xmKXW>2yyqB;7I5c1D7pu;7N_A+3yz9%GkLDB*Pis zk)_e6$5Y#OCm8E0(9Bhr2y{2{OzQmVldT(&u7y(~nYOO(&BLSFMPF~z=r#VvvA5sn zrffE&1ESCGP48J}zBYP=9#?)bw3PmFWDXpgS>5sA+FD>(lpy0lr~m_$Q*0iTCowqt zNw@_t9AYE<5!a|(Vq2{zEkmzSd`OG-C7x8Vus1bm(JGlFTZFPb?aD0M++H^33b(j; z4Dcd(JZPNkH6b*lMRg^jL#;I`H)u>ZWd zlZ&KT_8jmMnS|Z?`i>5EL5~0PL z-@8kWb;}O*)1B?_-uM64JD;fFgn0>h?11E~xzV!}jf8vTFTIWmV+EDSzBMI8qr%l>DGFN5o4o!`@2=Uw|E8`^=<)MaiYL~a3q~! zt)e_jMBkyvbP9D=@g8kIK4ekcuVEv=mFgjO{W-Qs0i`_ryv@V2FVecEU_M9E@ME;R zIWXGH3Pe4i8uZyYN%P`oFHygz5_guk_i&|g11flc$UngA)0*c<{8^GsWma9 zvL3}I%i!P;WgT6QeVY{8{f_uGq!f{Opr^i}exN;WX=O!Vd`hdAMMWH0;p)=}phOlf zFP#j_Z1h*kwVw42SzI#GYK?m}(Jp$Cy|;b_LJ&+7s244bgQOnux`rJ z_y?T4;Fi;ROjDi4wkRAAnt!xPi%$jJs7}e!R=%1DgOcIVp;6Cy?X^}J#m8*1Cm!De zZ_N2LsAUQE_H;wUWD6@f{W5hyPnS_mD|q@dXOxiI?fpq;esS4&G`~Rhj{aBwuHJKK z{u`p(!cRZ0CuvJ2hpv?{=5-0H(I?D2v#&@I-�f-tX;`ZxS^(7gL8>+h5oQj#$w0 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%0A30GK517!_@AO% zZ<;vF)V_ZA4Os2f4R}As{x)ZPtM@Bdl_1e`C6j$Py(%ViAx5XrrQnVCZDJoV~f;G?;HXkpa;i=-}ZVx$oHfQcZH*&#lFTeNuc$e zsVtl>{M)XjD0O?iBgk!N@$WBtk2`=B8RtLpwT|yc`VfceIaw=m#;es-F{1i1vz0Xx zOz~xQ8Qw$Wph76MQm%)IEa)y%SKsjUO7ZNlRIfH6*uQW%-$Fiicd{a?Ea)w})-4FG z?p3yx-$d&ALia{>9wSoqU+meh_TvpY6r;Y6qJ+G#x;Ng?< z(>dJv(-RMOt1$pbtkFj3OtIOd_W^$@+s;P{$idc5dq z{r86FnQavH0B*bUyMI@Yvy*+Ri}0`>qv3W>jBMIPi4&+*NdgB%rck$HWS{R9!W4q> zJ_#_I1;oKTfcoMzQY_1EP^b2R2i{s$TM=;IheU7G#Zk~^t ST33&L6dCB4penT;Z~O<-3X=r@ literal 0 HcmV?d00001 diff --git a/Resources/add_call_over~ipad.png b/Resources/add_call_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..24fdabed5aa8b337b9bcf95f718b5cc98c39bc02 GIT binary patch literal 4907 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 literal 0 HcmV?d00001 diff --git a/Resources/add_contact_over~ipad.png b/Resources/add_contact_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..4eb38ddddc2a542fe14ee9bbecbb44c9a04e78bd GIT binary patch literal 4563 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 literal 0 HcmV?d00001 diff --git a/Resources/back_default~ipad.png b/Resources/back_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..3dad47eb43b971d61b84973149c8836551631011 GIT binary patch literal 4731 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 literal 0 HcmV?d00001 diff --git a/Resources/back_disabled~ipad.png b/Resources/back_disabled~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..da4d42006b3dbfd02a4fc2c4614133809d2bbcba GIT binary patch literal 4591 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 LX^UW)dPV&Q#BfB; literal 0 HcmV?d00001 diff --git a/Resources/back_over~ipad.png b/Resources/back_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..4dea8f4c86c7928f7141cf5be34d4890d4a9e24b GIT binary patch literal 4758 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 A9RL6T literal 0 HcmV?d00001 diff --git a/Resources/backspace_disabled~ipad.png b/Resources/backspace_disabled~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..825232600a28f8c14c470258feb6b6b6a99a649e GIT binary patch literal 2265 zcmbVOYg7|w8lEIvLnx836clg>7eOVNNk|AI5kf8kl7JX0tEhxzfC#yej3#Q&%1wmg zDqc`QtzZ|tpopy&tfdk_1*=6x7qnQ>rGi!kbl1y*WhW}`{_yn2&N*}Dd%t;}=e>OI zd(KyyC|lr6o=ye;z&SQXl!Sj5;qM#=I{+Y3v(z!`4Cvx@GP!bHwlZ8rkDL!im=Rn+gJKHMtjW#od<(&{`Sf=|rAQM&q0WGU90nAkgt!pMg&8nAG%PG^F35slhzYTnFe?NOL)a_? zg249=9rtEXWgtl+$$MY8#iwUsm>yv=O(qk=#AfIWnM^o5Jlv|mVuj#{5aU`crZ9(S zjeb)KBGjlfsP&jyrvBTnPsbheR-&1#x*W%#(x)B@iqY2*uH%Jcu`?@lmdXB@&3(uu#Gl!>||@ z2*ja6n8%Yub3?<}0?rgSR%^r*S|vK=S8etCjtl)E7ZDmz1*S8|b-J9X4oJ+>VLD@$ zP7ewfb3my=sn%L;>+!tHR)iYVYfzQMpwobF>x-yA;$OmpIiVsk7v{dtTfh~GSgdfo zk%TOsfJ=YRRsBCTW8%RutFHpj1W#!wxO;xKU({_ z$;rmqGSQN`etze{S#t`L$A~%8ueRFf0qG*Lvu)4?a!QG#ZR5Y9dK!ycdr#a=j3#6| zbjB=%zuz#KFNleu)=)iYn}^8<`0EKT-u!GDf#Ovn7do}PVq0+;!G_w`+nD9|ccl$~ z%dXExr#q0#b$5R#yfyjz8zzR@;moaI@E<;aW-r zo%4;?yDK|EN+_HVHf2&(~BFmvgI$&-7|@q z{@mR5)WDDsN0%j^Kct@M6|AkQtgOu6zu(!XZY1(^6;(33yS!|1O76yun0;{GwIE=C(7Ryz(@PYjk7KZlvkMRgY2XK!>d$PW zfQ-w5_5zQRHhJTWTh*5G=4Zt#EHtxCL&iaeVe)QU(bD{=*J>y6(l%mMITQQk^4@zP zWs6fE4U3zOwFIb-^c`#Jx?~yasBt~I;s~YJept5g`I{)Gw#&~n{T-Oq87e(5qLZ$FYx4iI(4l^t+i`7A|HObx4#)Ib0Id$a&l|VAIgV~yA6G@F zqGt!W5N{GH@&=FiR}YWwN*Ou`B3kTIC9QUq-K3fFQ?wc{#4c0OQp!nUmm^Oea=pIxN67Y=Rxo^gvA}TvRx@7sDW$q7Nt)z^-BJjMjK+x@q QtM#%GE0&2GqSFfg13D~ih5!Hn literal 0 HcmV?d00001 diff --git a/Resources/backspace_over~ipad.png b/Resources/backspace_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..95e2137e76aedd7053e49f500bb3b9acf7f68c10 GIT binary patch literal 2312 zcmbVOc~ld39v>1y027Uh5)NeunuisVnOr0h$Tf*jfkwoNijQ0a2@n!Ol)&000i=K^ z;8p4cSk$V!E+Q)Xtla=X@mPzs)m?V$txHvqdUREg>_oxcKYaaT=e>FJ`_6p6pU?Mv zZ>p6ki^=}M{r~`w6BCeB?70-X7y9}DfL9TmM#PLDt32Jh%#>v|!qBChwFwv;a zMpIF>uDIYl8VdmUEJIqlH9a{=s5KcGY7d5CGnz4P0EiXY%xY~eY6UfDwjn=`_T=Vh+;wuv*KuatJN%IGK-3e7)5M`$&$^41prqSrh z>n*y_nu`86j1Qs<(~8X~GZif~t+i;eeq=>VI%Bo_Z6Oa3i$?f~#eg+MorjpTYmI2W zH4%xUVP6mlwfWCqcb2*5d2lFQK zmhcdS#S&nHBxCU?*FM76AOmv8IJ!MmdRJx1bU9|M;|lZFAtiJZHxt5jfCZ8 zT>wDfCnAzG+kj@w?H2VAGNXMW%_^rCiI=&^S>|$oXD8Z8y6*k`?t!pM=Oee$)oA|G zz`ibM`(K?zS>sl+&j&^ zRO*%M8}(_ny7BdxNOp)5Aq|J<)GM>j-h55`^^GgL^tPsNZ`Y#~JAhkQArCn=H)61$ zqoeG)SZNO(^9}0f6>4dBBaNB|xmIi}tc<)v=VVx{8z#G@RUf+8zf&aM{KX!>k+Gr07Zc^JWO7pU_^zXTna9&lzVwXoPidcDn-ty2T z(e@+0tAIZ)m_a-qab?aC--n$f`)Is<)hxgZ$vcsdxNv)({RY~*ay~h202!uF6P}yC zbt+MQG%NVh=AQe`SKEY)N0&1z_x-N4;6iyNx!W{`zb*;A4#K#~NAUBkV+mc{BA`%z*WV*|*7T}_gO7KJ|5no*7#?2|K z3Q{IqXlJ+Zrv|Wcxqd}KlE1d$a)eX8>0Tk;HKA4YW9P(s@2YY}4Gp98NJ(h*jjH** z1@nq7o*z_crjIVRz|ZWnQ)J&!R0rRGp*lh2|1eWyiKWli8cl4H2<--tKu9Z1eltm=TryPkx-x;yuT@5Xg%?;}u2}8dSKXyJ{(YR-Y zl1bz&-o%6o2y;mp-ipgFOtqw)83F4~9ea-VNxszu=&!ZkiGK)E6ggu5B&ma#yZ+Pj zEEe^da_@|WgG0nMw_5Q1tyx3(F-LX0q9S^vCUN)bdDJRw0SWf!pMkTf9}xtRkOaN= zCd^IbjMQIrm9+%eL11T>54k<|Rj*TN#oBDbl~aB%ttD08>3H;Q8EvpznVV|A5Zg~x z4X+vV^8M(rxO_**jd4O9v3o~IYKSunhqFI^AqyYzT~2Ltj@D^wYquSkzVZay`e0va z8)5F(>yDO)J5O%dUfg^?fU8I8C!K%ThGs!6SwpqgE(N8X+3K$XZj7arY>*_WPA-Jl z`T{srL?NzLl?C^b>&CUMt_0~@ BcsT$7 literal 0 HcmV?d00001 diff --git a/Resources/call_default~ipad.png b/Resources/call_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..bbfa08f38d41c4258555ddcab580f107d83dd8e9 GIT binary patch literal 11281 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 I9$3Ek9~7@bxBvhE literal 0 HcmV?d00001 diff --git a/Resources/chat_default_landscape~ipad.png b/Resources/chat_default_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c14df72e22113c8fde054bde34d17e15634c07 GIT binary patch literal 6366 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 W?8`XU?du1BpP3k17*y+Di1{ClcAGo^ literal 0 HcmV?d00001 diff --git a/Resources/chat_field.9.png b/Resources/chat_field.9.png new file mode 100644 index 0000000000000000000000000000000000000000..3303c1d284fa33feea759391fddbed2b1d8938e7 GIT binary patch literal 1801 zcmV+k2ln`hP)4E89T6%qi5b`EWCtkfHgpkF?3SaLHgb=dW{OHLUhFSPfc!r_y48u@(hG8f? z!!Q({VHgU}FwFl__`AD1{tq(DJLIMAy-0YR%bf7)`bMgauH=InA!LSl<%ZN+y;n*9 zY~jsGTHU^USlyH5^&N>HCMBK8NalfTHcJSZ62_~eR9f~A67t9LhOF%#$@R_cv&DZ= zg-s@19-A0JD-Ue`36O=&b5`X?de<-j8Y+^W@T+BMt&AU_=R{i6K#*V=T2 zH`V>aYD`LjuTKWijo|HeTe{t@=JV&z((Cm!_?-~)GK@z6Zgn~x?HXAmuc18%9BJc{pF}Mcj;2sL@eYFqd z<63OG!e_mzxUOeq$K3`e$At`sL%F!Pkju+ULdXn&U+3rN+O>YauR8!EeN{=n5j&9K z<<<0r-%msKiar5OWMs!hTwPts_4T!U`SL|>Zf*!6Qv_ZCI0pIQ9I8E}Z?#&wy^kj| z((Vl=7XHbB`zcq+Uej}Sv=pPVL-lNK+_~Ln5Dw}_(@X^P! z!bja%@a6g4BPD#hrQ3PjS#XCzbw{gVsybh&VVK#yC}X6Db11ebx+uPIGVK(k-tMU} z(OrTSK57ne_aJqwWa@KN96#lY=@ zEQM#7ITHTy9KL+qlxyW>l*?9l{BanNdyB#|%v=j!sy6J4Hep!d@vWUOF4e%zc!t6= z%pAA$L8Y#wK96+S3J;0HxKIN(<7o=dFmo)tU#=;shmkH@;mraT;~1)gZtSO|+okXf zGq1vXrKlJZEwwmJBK!m)_R#SL0E}QpdJ$4{L5XdAB zTj7hvqD(@d{%Cn)SG=IA-;=-JNb<_AnZ?cj2${`>k|?g)H>_%NaV|TDSy|nVOG(K- zslQfu&+}vwT-Vjo@9Zb!4O%2sH%Fi-PNLhSdB?K$ zhLe-}YlSZq3i4b6zbHrPtZeMWj)uav00i@gb?y3ygL5^$5LD9_WK|500000NkvXXu0mjf=53d; literal 0 HcmV?d00001 diff --git a/Resources/chat_field.9@x2.png b/Resources/chat_field.9@x2.png new file mode 100644 index 0000000000000000000000000000000000000000..614626e89f8d76a8a0f03afcb230095b4ae785fb GIT binary patch literal 3047 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 literal 0 HcmV?d00001 diff --git a/Resources/chat_over_landscape~ipad.png b/Resources/chat_over_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..e5893382306e984f2e605b9ac2d74ac55dd746ba GIT binary patch literal 6384 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 literal 0 HcmV?d00001 diff --git a/Resources/chat_selected_landscape~ipad.png b/Resources/chat_selected_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..68df461393f8861535d29b4aa0d98216c03f2a0a GIT binary patch literal 6351 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 literal 0 HcmV?d00001 diff --git a/Resources/chat_selected~ipad.png b/Resources/chat_selected~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..ac50aa1f7df531c41ea4e70c8c2b05406e9bcf0b GIT binary patch literal 5071 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 literal 0 HcmV?d00001 diff --git a/Resources/conference_default_landscape~ipad.png b/Resources/conference_default_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..12f4072e66a2c9be97e68eda54e531c3f06934aa GIT binary patch literal 6132 zcmbVQc{G%N+aG(VNFqyOkjOS>3?@sAea*g;WiT;|L3S!+Pqru_J0tr}C~H~E5<_;8 zJ$v?d{C>Zl_x-)X0&$VCYKKB)VUt8r84J!=*0Jx;4s;Ea?i-VJz2Kbj;7?D0d76Eep#p3QP1N_@4 z6RrE4a10K?DK0E3WG4z0<%EKSL12i4goGfcm?%h8L{v-!BqjusfPuweqN1GtTtK2W zoV^1~Pf__FUBsOX(8=8$3lkCX^z;<=1Pfzujv^o_DXDWAVq!u>4k0&hw7ZR$5ZaCV zj|4@8n;i~`bw^^*oaYj4Y%w10GC-oGf4hLfYH9sTFxu^(KoLVG;$?#s0SSwWpit+2 z{l)F(u7~(vGyW~Nn}IhLA)<$H!+7BAi1~2f{sSh)?msI!XCzt!)4?H$NwINJ#MpVD z5NLNbMHwLRjj%n^9wrJ^76(a*DuTdbqEJZ?NKzRBR~7{+$-|WtAd;eze`NeStRh@l zSyEA+xQK&6ASIBzyb=Tsl9W_dfI=j|^5TE6YG^li8?+tbk6t8E?>|`hf5gJzIE0Nm z24{f5xcsSr`%V~ljGGe%%L&&P=hU*XL!!_3=jr*|TSWv8`3PaJjKiQf|B5dR`ET^Y z6-9|=ib2KT|M)ErRa6uclOh%pTuf3P3j7Ca|Nn`Z2+XRxQ2V4G=GzOYnN8cQRE>NdrrHA5VkNMi0K8!O8}%>Z@z3cC$8+vWfmte#gOv^w8bS+uu~hY>s-)$8Mk!PI->P2a zQ9LH+z7r3zt}^F-Mg@3rFBp{v4Z&Bzfs{P7Tdh}^vMCr~GZ8y5Razckz~De+81jh; z*565wk!(z$f5`E*V{TfwMWhMw0MOMf&s1)m0aFdesz3$$(k%-dA_i_cr9- zrs>olycp<>))vv`_Bo!qnYEanLb_!|NM@RmhnUpJrcWlH-7*ZYR)e0R%NY3xWK9(L zU)ORE>os;35#39XLe^gglr{!q&`m5isC0Z$*y(Bc!?m8I_KMu>Ts>t6DDw5K=pLan z2(-Q+ciFcddnzq+yrSaN-?#Rw76nLnKl@?lRmlbZ)B29qmpU7{#a*80a-vp&7Lr;N$X=MF=s0CfNHX~yo9gUAuC4C zROKw^z3?HZiHR^s=|x+)Aapi(2_FwB&y&0uci8x@#FLELWwn)DN2B}27n{fk%-0xK zXfW00%usJ#Bn9qu3iTK#KM_YksY|x}r6)l6a=E3-FIx{y5zB z_6eEhtWS@o1|9X)+b+q|XeWAx{iQ*+)UaRE%d_iOxPOkrLtm>dZR2J0#^=$!^a}C& zbrZX@NR?>za9OmQPNZN}JM^>(G>=2D85qVKzaw%QpIE z+|-q+t;g0`KrnqSfr5p;G9*fbX@+Fu*!t?+2-d`;A104x{4NSVz|OE%UEzK<_Kz4C~qF5}vKI@bm> zT0?mupNzN^t*kgE-1f1{6NSvM84y1Sk@lKW`0Crl#IQg95^^AJ5gEg$qV zG0AbDm+2i9Gb7`dRL@Dmo66MqHfLgt~*(n+S`~(@f-}9Pz!O%}2Pw zKYu^EkdecaOdK+#pEV}N^j<3cRzBOH`t2yyv6c9wNh`SLPRaw*0voDGag^Kv@5YN097*E8g{I6&}hn_oM1Qjbx7UQ=I=9*UAv0c<9IaR zACMu9;w7x{C%lX;sD55rZD@RQ(-L1Cr?Yw5u%Z6x0m}drYxX7mJgv#hPZj!kT_JM> za-r~wwaX1*6@y~sZQT9SrWZhO9LJ(wRr)UqA5@f;>3Y{v{`gq8nj@W-)bB_i&Kv$N z3!&g&>Q(SCa<1I@qdBI4El2(R!+PMmTmo?HW#Ythi;=4M?f&~Vq>=qaMmyyp8tidp zKQO^(jj6RDi-cMv_=fOp#`2+WR=}EZAuH%kbd$As zN~%kQi^6wa4MPS)rg%#W?IZVAWrAG$t7VbADtq&KpO);LoJb%l)hEKlE z^ywN|Y5%}436M``cZP9C2Q9tk@O$~zED0Se6e4q`Tz6#Uz%jnL6txnLJ!Q|h*eCZszO4hyx)o3-WNT*^$?0GBpY z>YAELrNRs~8@IMHtGi2X($-$dWJsfZBHpdG-{LhkUr7YAhoA8@*_SZpNRI#3-K#;Tvyn{jQul_wL-OD@v{Lj6W9JM?9HLN02{`zwl_?u1u#PDxa^&u!>g z87Tx&)|_4E@I1YgQ;~V|d}20gHTi48 zAiql3%C1i)gX4%npom_}6Edp%C6kS2(x=6ZzCT8HH7RNOMqB&4a_IG9<*E^#pFJj> zR+ongu1-iiief48N$EenWM>Ya;H_gZWsnN^?k^YYK^Irk8-RLgVQyz6?>_5d{0OR* zzBhn~Y4q*4;=1fxnww#^#k{-wQrhKy@&m8&r%zk**L-Z2-NbN?tPYhIsyA<2r#|$1 zUgu`TXZ*7JaOO!`o7~CKlyZf2>agaUUUT@HHKXhXd-`vTjw0su$v(SX&YQIjd&wD3 z)ITKu(yC``^v-8ty>oBAQc6oeWJY+F? z9-W_eIQEdRb#*41P=RajMA?u>+_N@+Ax~@T{_fBtlMn^6qA#FUzcbi?O z*T|fDt&Lf7^19i#cV1N}FmV*4jM(10B-6tx?bh+hhI$qZRhHf|ZphX{56Gh(Cpd;P zbS`C}$OXJ=D^?M(-`XA-^`a$HpIK0Ui$)QR);XMRlvA@wOElpX*tCh3*Vb0)GGtDV zXG`;-k8CtcJ_B+2uW+h<)TAv|UE<;uJ)?cCn>k>&irK3z>GgS)=64JV50AXI)ZNuJ zbXIX&hal}TD(Z1{!E6C$7J%hqAHC~J8+mqBK%PnJJYnWLB~nHlH>xdi$7sW}?;YAxHF${wrTojG-_ z6b>YlGOc8A|M0jLiVZN)pJszNM%9=`l=f=}JQGV?jH+p-rJ+6H*}d_EO3ak%}@nKpvotI!D#W|`wJib~U`pc@T8f0j+B+!g3s3g9P|>vHqm z3yaTJaVjcz4lR!%r4%HsVZSAP{3QtDu+#XGdu6lvOy>QCxm->8n zZ`Zw&A&P}Kz0A3ojV3;c%>E$XMy)HZ@hC0w^}z9>oo_7^FSp)z#;|2q8F-0q50A95 z9kdamIbsUdYYq%gpV<`){3yfowQ|AeZt zJXkp)W8?7PRu31-r)T~QZ7_g9QIncF(x=y@QJGa+TQo4Yg(&McMN~Zn)Hn30g^rIn zN+>8)W@XQo#htU)y9)icd#sDopL5)OuAM4~u0l0s(K~#lM4B-cW9MXdu{}5Dr=5)7ZmT%^QZg8 zQn9FM+Suq0EzaY{ep6rl!N!K5Eah%brptXEpSA?d18apH?QKkD;Jfg(s{#VBF?XF1gywYVst?YBT!v~RlJKY_d5 z-&IyNMTYNa(^7No8p5PCGsU2+(I@rD++aC@uwH0WxFpw|A9W~uQ=~1f_l_{^p-&cN z&8I7KR~^}yYu;tHu**mKH8r20z`cQP83#YB4!|CA$ey|3;cuVf(vM|@e|J7K4vA3e zPm{Uh%>PL<+$&^pLEk>fw4r)Fv+MJt{j~{9Fy*E7!`zhOYqP7VLSE)+(MO&8lXS_U zIj?Z=m?8h@IbQ^x*4g7Ax!Ko)2~lSO8uyqV1qBXs`Y4&&kNfF|yjw!X_ayiq?RB@K z?oZ|mwGn(3@3Ng*bQ>3EvnH0hCbmcbe_TaW7#V+~an6sQ4Se)cgXX9M`;h(7n%sk6 z%3O9atMT7%<(7iBCD0^|78>wK>6&hEQE{F9kf;*hxQ{E;*|EDz;B{&t9{;-O_tqV6 zI@)g3F@@JcoC-YjGH5wZ+Wcwf*)|T@uF|bU$r5A9p0{CGy}7uhvw;jj$%YV$Cwzs< zTB5jLRiPaF(;_+hpv>K(H|NaAQIX0Sv@Xe2y%A!|qh zKih<8`8{~bmIlYTGwl{3;c*eBhv7 z*#V7(LB9O;gs@p0-e?KPSEE;3%U2k zi}Yhfvs&3VpzUjL*W7>z!&_(LOCp0^*SZa#GFhz@ra1FB*<>%e5^`hfIKv&nl`7)L z1}8yY^hIWk&&0qLpO)MyeRHn26YOd3i-E!Ujxp=Khad9?+3a8NMhtD#*-SED4pDjj z=?DxiiBC@AQ`sW@sAqT~$o%kBRdF^d1?HZq9CPcWYLEDj&YZSqmStXp-Z@VA zTshxQv_cWZ+1K|r$;wOq!qqW4h084aBgdb$q9gJ|MyxHkcT3uHka|e^mc@nY+Ks2) zZcgjRAqK9SnOn>GD0^Df_j zDSi)Hbo{&=swu5~IP^TvaMjdGH)AjQ{S?|Qmd;B2Ym#``TztWV(A$Q3t|TE#p6tea zvoCqiKSEEx%hY?;Bs}O4v;I8P=sfc6W;Vt6(e6oE+q277>Xk-GG^CMs0sDvSKE5*w zTq?J<)1|n}6H}Q?f1j8w4}9T9V#{U?vi4X1f3)H~Y8S zOvbxF#Lw>H&-SIkrB7e8NZ{SWJD(5zULVdv?3A#3vu;PSI&n_yZSKDGU2<|DG zz3_Wpe!II8J9~EnIcpkpn?^p+ciJD0JYW03rF^tU`Q${SE2Zg)BV#i4@N2_BU5R@t z?oLsXp6f2ZH!MEfxKZc2`aMg?PX)y6F(V|lVB+T75S@xCm= zUq4mBc44(y_V9w1?~>BaOkx;vu;5A!E@2dJYr*k-nn01^p*!VQc6a@{ptxRPVrntP z>E=Y;uN98$CG?JV)HEw-g;Su%M^uuu58LcQl(SvSp)oJDC`5azNNn5d4;lb1Y0pdGI>Hq)$ literal 0 HcmV?d00001 diff --git a/Resources/conference_default~ipad.png b/Resources/conference_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..12f4072e66a2c9be97e68eda54e531c3f06934aa GIT binary patch literal 6132 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 literal 0 HcmV?d00001 diff --git a/Resources/conference_over_landscape~ipad.png b/Resources/conference_over_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..edc71a961fb5b2e159e28b36f9ef2c9b409234fe GIT binary patch literal 4138 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 literal 0 HcmV?d00001 diff --git a/Resources/conference_over~ipad.png b/Resources/conference_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..edc71a961fb5b2e159e28b36f9ef2c9b409234fe GIT binary patch literal 4138 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 literal 0 HcmV?d00001 diff --git a/Resources/contacts_default_landscape~ipad.png b/Resources/contacts_default_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..c2a18a84fcece0b6f14a81beb7c92dfb114fe188 GIT binary patch literal 6776 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 E2S6+sG5`Po literal 0 HcmV?d00001 diff --git a/Resources/contacts_over_landscape~ipad.png b/Resources/contacts_over_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..d9fa24f106d4975c9d3a902f71c2b9f333bc886d GIT binary patch literal 6821 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 goR)L0 zyMFQp1^}o4h<^isi15zo9O&Br0t|qR@Ym@a_z6FSxc&wJkQ$)UOR^zqSRuy@Z(^OA z#R?{bSH49_^{+LL`$ndM0E4AKJ&L%i#tSPZ_|51E`lHA5=NjU-BQA9vxsm}y=-XKj z>qn(9_|Mj2dNAg>m5I$I8D<&N)+f{nBROf`em3>UU1AW+J?%6bVNbaZmhv=`hnB*z6U1zTIK7a_60z z)ny+De(@`&|VIt7OO&+IN4DMMOI*-Bi$aEX+tjeIzV*xCDD-zTL5y zw;|Cjvp5A+C1OR{t**J&)Lq-U12}vLTfQWkA^Eg6^xYn0tlK2Q2ijfJCFeT)# zvxjyH-E}5^(}$2tyIps^d*@XB%M(W`(64g!qp`f~VXUYiNkP#QSUzZRw$vbsGhDS)|8?&${Qk|2-!@>NjUwVMcY z$oGo!d&!xx>pC%%xZI{yc&M8g6IA5&h}%W-{j|fZlb0bfF;!!2Ew(TE!9?;JS6qBz zhJ^FLf%?*CmF+zw5;I}39&y%L;inUbnyvhby~d+U-A#@wo+2i(N%EB~^iy&(n*; zpsMX4 z@}%9-k&b;go zrKj>1EYw8%@!?=bH%dQN=!BNmXD?9~q_$8R)09Vs>t!sBmkb6+#|ExL;D`B6_mPn6 zeP&Uql$)>m6R}T*H^+cpc4glK-7;W>oQeYyA9BZ~{XR~yPx@E+)NNy%+?$qG7eObj zcNFwlzpRMLcmqepF;^m>_KP%4R?NJlO5aUi)@Fu(t9EzO4qi+ukPx(?Xu|L>@3mE5vDJU0ah*a7y%17j%hL3=~Uov>F32>ns7K? zwJr48JLgfM?&8)*v+$uY%lGCt+!x;tG-O+wjnxU7Xy2z1Z9*2f4MnHDzb=gF_4V9g zD~x{YT<~bZxVCh5v3BPyTbT({SdM0%%Q|h`8I8EJud8)wRQm80Ga-dxqye7j4|RA; zHH*;#rmcF|w}BsN9~UTKk_Lr2(Spq#@TI$+za}%*S_yC7b&4V3I#oL$F~mH2v^gz z`JLd4Ny^RS)EpV|DY>+mPjjcf$&#+2|D~h-*JV^8`uC|Y~g5U9Q`D(k$T*zYHRAJrPhi5DCDOjLfVf#8;YCVzZ zJYcVgMw-kyZIBApD2?mXqo4}K>)Iq5%^`WvGh*pv~6?Y32wtnD8$#g z#_(};h%cK$Us>LwZYf^iTdAo}eWgMcw?C<+g|n7RRC&K~NuEnqb&H2c&2WAREaRX) zF!0QyW8#F`v%Z5~QJKA{>g^lrDjiGGN{6Phg2?So6{L7QBvAdSGH;)tOJ~o8+Hvc` z`jgQNHElD`lG}G|N?B^#i*3e=q^YQ;VdN@QSrO`Q*C}VdQ!eS&`B+@M?FYAfhV7|2 zwDg&)>!6n&Wi7427un(;s2FyQ8E_0 z?ls3@0Qeli?a~S51Pt|clM@E3eo=iV`Q6b&xnE=V32nYz410{I*eIg_(zRoFD;uol zF+fQwLO&F)u^ykov-o9vvRRU5thhfvF$i>FE{`AsknGKA+D2 g%#r{5Eb-mtJdT-}3i{af0zi0l2=9$6)nF0-1<>&|NB{r; literal 0 HcmV?d00001 diff --git a/Resources/contacts_over~ipad.png b/Resources/contacts_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..af988650041cd84f42272566ffb3872305490ea9 GIT binary patch literal 6407 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 Bi;e&Q literal 0 HcmV?d00001 diff --git a/Resources/contacts_selected_landscape~ipad.png b/Resources/contacts_selected_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..a392db3504d76cffddc93a98701d1ceb702d21d5 GIT binary patch literal 6827 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 literal 0 HcmV?d00001 diff --git a/Resources/contacts_selected~ipad.png b/Resources/contacts_selected~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..397f71f8c47fb50a48b7e3c1489cf4d2736ca12e GIT binary patch literal 6207 zcmbVQ2QZvpyMJ|2LX;47i4Y~M&gwmS?`@S;!!CC9vP4TrL<^#ZAR&l|=t3fDB%()I zCD93jh_-uIzT|)J-1+9aGxwc2?^E8Vo#*_{IWzAaBLgjJ3Kj|g0I0QZs+#}+0Tj>Y zkdxv$x8$KWc;O0C!wP8%cS8m_`NIGeSGY3_r0wJ64l{u{xrX@l!Q=se$j#Ht3TdUU z2XTS>2s@qI2nYKh@ZJC*uM~`Ma`A>CLC!FDPhSP@?Upy(AWv5XZc9mhus%W!=HYoW z)E{OVYGCFP>g^)y%B`dbk`IR91Ngv@PM~0)TfPC1Uf)u zxcWDOIxN7&-xGoKg!_WdBRV<5QAh=De5L=If)7Gp|DV9V0e>2WZ<$E26GB8(7%bxB zb3U)%)&WQp*ngMtZ>K{XOxE;&e+L z?t=1x`69K|6}a(Vgk3#dAz&#@Nl{s_x~RAqSV~4zR7O)mO%p7tp`xatDj@@w`5WWk z`HHJa$jXYU%BX3I%ZiF>h^nY)NT`X*$Y`ocNl1&UNdEQJ_6Q6r+=7?E>u{134F zRpAkM&i(^^yztNFf%)Qhj6Z&BkQ1KoR|dGYx{6uwl=CSLr}WN

)KD>V-V@=l3jK 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≷6qniL2`-$QyS=pA1T8Jn_e*{;v@Y~TK& z+EzKVa-Y|*G!&XT8f_rToKkf5K}JtjpEJ-ul9mPcRzA}D#3qu)=EDU26?N&Ug=aE#%(M3!oOR-)s*sQYfaL0 zX6p>B@q^F^WLaeXBdmDI!HsB;yf?u+a++N0;ie*kQ)ZC+=cj5m7E5Di219<`i_gA= zo8&#Z;g)?fRi~+JZD+N#uwF!;C0REn*M#ggOZ%}=P1I$E1(K{VW^neV0C}a zVP?AKpx+qh;>DqpoP}~uPM%9!rNQ}GG@5c7qxwl4hl<}NB-FC+vgg3&x`#PZB5;D( zyK`sx8RajL!`S1RjXd0J&W106>n;iQL^GO`X;Xh-7S!Xg7+=o~xV==b8$cj=uj8v)CY0iJ&>}#~{Jf_> zM~2n?9-5pA-GS}^{zcdb@dwwR^Xr`8`9I|Mk@n9QW)d9b5N5VZ#<<&$Ey`^wvve@V z^$R0;bllZ;J6A)F`DDJUv8>E+UwMxhf6=r9Uc`>_e%a#SO=tOD^F+)J`txirfytl% zeDQ80<>qVlm5IQq^16{>;gLYMqsU%$rxUT0S7!>iqfaB_yYlUQbih*(fCfkb+73V& zAOaRM&c4p?Y0Fa{ro6G=X@EO4)gA?K@B-e0HA;?BA7?5*mBOxcX+<)>8GJ_y)hFH& z$ub>_3EtSa5jA)+O-#d%eid-4^yLtXVLp0i|E0LEX_l!cq({6Z{%++Imwiys$%f(< ze9rSQ_!sa*F8T~8u)d3}?y$fW02Szv!``n)opX!W#ejpYsPzR!CNEp1@NKw80q?30 z_E>VKfXN}5s!osBRC~1=K8mWCuphhFRM{>JJkgg@5_7J0$Pvx$X^=WAva)kSj<4S? zxQAQStZSNn*EcfQ*o~SUy-!1XWamO&Ag_>Xms1!0oq{qR0LY;L2u%PGgU_1)5Hg=D z00OFW#d&A&iu2Ck6^1YS`N+kn05E!8I{g}&pa{2+`gcTv5Giw3I!17{S)TA3*w6w)HNeG)8ZJfz;kUD%Z@nIUo1FYgKVC9@Z(2^0yHaQ5 zHiJf5bZ`*l5z`xnET8$j*8zfbxY&sgcAK8_3&~RPJh;1q+S)Xi)uVJay67X2L(>q% z)b7-bWp%kmN`F)TVEQzOFc{$7g9RW=TEaglBG%L6VpLs<9$0YNPQ$TX z``_)v3e(oVkojD_cer_`SNzkE{`gMS`>yYts$(@SyR~rd<4}JK z)z#R=9QFZT%Ul}a8jL0{g0?!YXjrKOwdbIE+2#k7Up+45l(uX0!v%CTZI;KoHABqvK2^oOV9 zkMTn0ubOi#_T!C0$TIVI58XLyOh}hw3 zl1l}4n|CAxdf%Nq8;BK*h^yu$YpH({F$x=f`Gv`5*Ezwvk>nEQ4gK`pgT8_G*&=r2 zE!}5|-COtVXdQtX+rn~^RG!dIhsJW8?p!+V%Yr8O=>#hii54wY;mpV9*=UA`<)lD&`dk zZ_6{0(Tb@eoiVG+4=v(H8gQ@M@4ZdiB??BJ*gTV2VP!1+sjy9olRTI!VGQGUYDup+ zR%lUZ9zr3_itg~QJYrnoka#_&-K#yb=jF3hjP>Rp7>8II8NQig1tj*uccLX|Pqkyo6>ICRV(* z`qEHCC~Zur&_&09jr4SZ#lBX{s-Fqp6j8QzbV9tBfA~t%k&C(Fa_(&n=AVB^VPUV+oJb*hT50fY zzY3^6X;Qti5wo{-j>8AzD#o~&NZ-QNk%O&%>&L!ihNH)8ccy;S&x0ME#`O;KT+=nx|^HqjJT#^=x;-wTaL}$4;`&gzI}nO!scSl&BWr%ok;bKK8H10 zj8fcT?Tz;j2YzkpWFy46m3J=R?H;MXAIcTCL&y4HB=GacuA%VTvbna zI{Q5M=6VGFBsb;zo>IhSmPw5U4DxLw)(1agR=7xpV^AFt#dV*Lg~+PVi5vOOQdMDN zI*E;0jszg|L@YF42q0gg`+E)k-&X=T^grAj&-Rp(4MI{`j0yA3f9Y#$7^qjPLSz05 DYx*k6 literal 0 HcmV?d00001 diff --git a/Resources/dialer_address_background_landscape~ipad.png b/Resources/dialer_address_background_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..21bc36a511f8ba210c0b919b1ac56f0279913f0c GIT binary patch literal 9184 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 AS^xk5 literal 0 HcmV?d00001 diff --git a/Resources/dialer_address_background~ipad.png b/Resources/dialer_address_background~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..302d82d5d0fcc3b73acff882e33f2538f8747bb8 GIT binary patch literal 9825 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 PuTK}u8Ud}g@{Ruwq&V&> literal 0 HcmV?d00001 diff --git a/Resources/dialer_alt_back_over~ipad.png b/Resources/dialer_alt_back_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..a2105442fd10eaae7b70f6b8ec8c8c0863bce25e GIT binary patch literal 2638 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 PuTK}u8Ud}g@{Ruwq&V&> literal 0 HcmV?d00001 diff --git a/Resources/dialer_alt_default_landscape~ipad.png b/Resources/dialer_alt_default_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..335163e0f8e510feda1ab0ea598b7dbaa57f7560 GIT binary patch literal 5056 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 literal 0 HcmV?d00001 diff --git a/Resources/hangup_default~ipad.png b/Resources/hangup_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..0c88f12d73c47349ce50a5167b26d84e12698193 GIT binary patch literal 8498 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 literal 0 HcmV?d00001 diff --git a/Resources/hangup_over_landscape~ipad.png b/Resources/hangup_over_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..00fd688b6bf44fecc4e3ff6a96babe14d3f597b5 GIT binary patch literal 5117 zcmbVQc{r4N`+szDMCFt-Qr5v(MlojWld&%|7|S49BxWYYHX6fN)1eZ{G7TbI3|YdF zEwWTdM#x%ZDQhIMJJ#RmJ)QUWyRP?o|M<;yJ@b6;=lkqdG2c>EzOOO@(A(( z0B{t8HoyS@2b8@oIP@#~dy!SG!@ixO8roB>$ycc~CkheJC6JwoV2r1e3lT?jA_QD( zC29h|FIP!6_EdYU84^$SRB+nIDENDNv#kL@Q`_I$3GYs%f}M#jBrlZ2!t(|RFo}SY zuv5V*V!ic=t|W9Ig=igUZi5eW$7>KIw6(yR{zx`~Cz0v|_V@Jg@$yc!S+TWTt(sxjQ;k;mQWI|RH`=;2BXnv3N$4JGQ|Z3*U-?|=RhFj*$8=` z057VOzr2@^dSkKw5PSLjT_|?RVE#_t zFt~yu%+qr}uODb1DvtQ?F#aRj$0op=2*VM5$i5Ujdq1v9{xoLS?!Py!tAme>KiC$EU0ZM|cQ6P{ANJUj66}X0?0bB{8sHzT!s~ain8!5sKb@dJPl+_j0 ze{%dsTMZ38eMLP*eIpfBINT7ft81vN4_8+=(o2_-7}{4ilk@(EmGcT~z}E1VV$|NcsqMT~&#{Z3+LMn!(t?!1kNte>Ka` zN9+#VU;fkjY~i27L-b;w7z+Dnys``z1b}1m7z14!|G~L5ZYpS1q$PB~WBz{J!GoMO z5}EeLt!4_jc>2fB7q#>}uCS4pOGkfOHs}icqjL2{p-q10*6ebnZG1t6?ZM_K**ps! z%n^+nI=tvNxyu>ta5Gf`&ChRL`*}uZ(6XOj*}%BAQpV2i?%rNUt}m5(2>4<;nZG4H z{xJpQT=&NQwQsQit!Qh26L`V-+Bd4XzTQ!+D&i>pzzxgjFPG-NHf}vbT?In{y7@KD zoNy*U&zRp$F_%8y|J%a2U+36fWkDjAH%^D5aF&7-i10pA@>S5Qi|j-K^JL!NPY+{V9i;_%G>c ze1d2Gpuc?SJ6;)+8jP2mHqBgKfI!hqk0%F8@49T5o1A$U_oA5pwNd-mOJb)O*c6Kc zL4FnH{nDG-fH{%}9Kj-ZFYC8nyx!<>i3zM(apX4+FV4K66r4QsT*BZ6}h z7x!&y&wZ~aA?nVjxZk@#NNbv?4!)9&~dL#whp~U<5 zV$xolvkDEQ)9mk0ttD%mwis5kapv~DnAeNYJ82kpEZ->d@vua?2us#lv!IE!+`CoA z(=r(Efz`-0E<@k~wb2)8tPhsXhwS8nt@vJ9D6cKGA|xhr_~ZyyT%voU*;%1WP^{AQR*4%5owd%3gN)$KBJUA7AU=^kZhb$W%M9b zS}^D@f=GPU%>xkr9DAI2^@_}?pcL-QogZd)IB*s?ab|a+zMa!T@6rB4n4W1q-u}qo zNAw@t5l5jvr46k?K{F`fv^k8?s_r1M zTdAg3UfAdXphsWB60ybwYI^F<;?)4esagP*|Db9BNe!9pV&|$x< z*-{(`*q8nWvZenEWJ~`B-gy08XzG}NU{a{Z^LogWJ=4z9aj7UHnq#N1vJIjwqB|4K z14eLEsCmXGE}Sz7^7)QnJQ$J=9SslT`xsI#ULu}b+v^#3>ATX`V<&XELx?y4=QR)YaYD%wGJSVT;hXR&~<915i$xKy4OjdugGC?!Mg zWU{ffU?y{=v964u?xGWhHZv9lqmwv;P{Z)tM! zVUmf7TdQCG5NXpn5-RUIle31)d7eTo9OTME<33iATX5XRdTC`H2}Ol%~ z#bKz+V}^rOpGB+AfU$;>`Kl29h7Gc?Wx{$#_XW!Wv(uUzXsF@|-zzgCi-oKPH~n+S zs(iOjrxmQBczz`t{Wv_IGO{`tmA~=kcPVlP_Y}uuGqq-ObJR_~0B*4z5w8Wgl_^2I zA)Xr+9`l{~pjNuT$!;_a^ey$!_DQ))8`!hPxrx48(M#fp?;B-rCwf;~(~oTF^v`GK z%&i=5U+a(0~9XD!-K(M|UG3my`heuXQ?8--A>ix3o%8{#uD}24jWtxiK=GA@`ByD^W zJ3G{0D;#W4lR70cOR;}njo{r z?^`b)qb7riQoR#ZGd=y)+OL22L0A-DXX=`C8@fiAY)%Iiowx-mD92bu-KIIlziNz4 zx->jJ#+=n^DV;j=$69b@sX>iL@Hq6Fs_W`6Y9^T^pVW`9TDwx-Ok0>mjXk(l`Re)Jwh{ z8Ct0HkM{^zP$8YKHapOMkB$mVoe<11Z6)={kIdY8VI^{QC^UQ%8E=*DfCK9K zVyO%I`c0S8Gm0bGfxR^?yJtAsb0LJ2P&priTi#DJ%pR3LR5~D<{IIM`c8ljXAL;zp zu>zP?2fJ_H59yH?1`FP|W}1>`FvjuH(1ew#cDnptNZI>wJE68u$v#qhnQshoMqK*8 z*D?#r*1FE_H)r7d z>)6rA4PTd|C2_-3n&LUuE>SSG#T^?t{;4@s`uMFFA5cY)LHR`8ozc^kh`ar2@ zMV&BLe|zab`$aP=&mBr~Kz{La!;zbf?bEVf=6;#@K*8Y3vy~7LwoQ}P15(C@+mXc( z;mEvK*P%rpC2B(Z|E#-&m6UVf7Y?kgW;l4)l^5>}&JoBCTlcDqU9DP`qRSapHFpWI zr(nsA>xiwinynY=xoF%4CvD0 zr^e1*=A<*uVOXa@A|ZiI8S_#u4hr(86Ae;>hnO2o5|a;%FSS9{pA<>E6Co(=kZ6XT7QT3cvXm{C%oB^Ut}MC?#fsI7B)v~t@5yF1 zp}pslbgHKhXxwH}iSH`bg`{TCcC4K4yIu$wUcTT-JidL}IpZLmago%FhSuaj6EYc@ zZ(~9Ps=mGODNg)0ds=n$`f(-Q1P97tZXPtQ_;LPXgqtL^tm*lhR_jUC?j2=%ntV>u z&>0olTSjGpO0gF8!qr4ZYEZ(42@7rYE@&^WWc0=5<5FK0G?AaPgXJ_5I-WUf=ai;3 z^i|HE&95h=6k7kzDyhBrbX_A(gj>(FptxQXV~A#> z@-rcJvs3Mq$x@S!x(iEL>ZAP3Fy?HWO?e*3HlPd64P7wFb#O^cUCf=?c~58z)38Dr zedcb6&${1<=L$=E6&qgT6sUh9AVOFMD^`2FVTGXSXyp=U(xmzpHRn&-*%cyP+Mv1Y zX|$S8sPEp|A$Ki^=IzNuc>^ccA8C|~4cj(sDnaW1N} zo_>(?vz?quMa3LU;n8O9>{LgbYW5MzFSaaVtah)Nxk*?}cYWzORZZ`3@dEy{qXURC z=Ju3vv!fOxjq_Df@1`JRvNEr-c3X`UxE0Xi%u?>gt?fpj=R0Fo-)@auuD;+#)@ta? z=QgnuYbV4}EvflOMpu@HOu<^gW7^$_+v zP6q)xYG%3s(0(5@DGJ1~Cv`Lq&|#0`VD^l@FS2iz^Bg~I_BAkRs2~TRoXGed{vOb& z<^n!F8bM_3v<2msVXkTx&R4^>PXDhvd; zI?Tf@cmUaTVE?*7`R$*J9S6`Q1Knf-Ixf4g7l3eOkR@STq;&reIgFvXL9yPIu>S#( CydZu6 literal 0 HcmV?d00001 diff --git a/Resources/hangup_over~ipad.png b/Resources/hangup_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..00fd688b6bf44fecc4e3ff6a96babe14d3f597b5 GIT binary patch literal 5117 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 CydZu6 literal 0 HcmV?d00001 diff --git a/Resources/history_default_landscape~ipad.png b/Resources/history_default_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..62eaaab9fcaa37e74886bec2f446b5a4c7ed8829 GIT binary patch literal 7466 zcmb_gcQl+`x1Sjky(dBlCVCR4sH2Qdl;{!?g3*UCn2Fwrk`PHmCqxaRm#ERAw;);& zqKjT5>K$*p-@WTw-ye6~XPv#)KIhr{xA)oQJSALP^9~g`GdTbNpi)&))CB;5GXy@L zl$gMEO8PMoCfD#vhIl=!HQo*FVg-=1#F|?{R2|SZR=QSbOAqHxD=7eg$Qq+>h&R-@ zD`A0kfTAyCpzaP%1Z@C7O2*v@ZDDVPhnQR0U>s2#o3#xb5R4^?!$3p>uHmF$Ws6bq zbg|O&)YP}|w6_qqq!1rdS51uWpAaEK@ZiVzYO6BFZy2*MF?7+esB5EMX&NeBr_z~PX;E)Ie< z7fWjiT}9=;Y!PNC4qH6lNdg9Qb8~~b2|=+gHZX*^xcCKzpr8OjLICICh)25%IN~_} zMo_fES-4=F@EEKk0foaH94_|t zhcphaYxUo5{99?9zK4?)OxFsBed1z4$cHuO-^zs8{bxfLf&_0Qv|KQRq@W)wVlAFH zSUKWV6;T|7J5WoErG&DWm@)z(CJYx7go`2(2&A&Gf-)STB&VPxFN}mE|Hk-ty2A1Z zWf5Uzc?D%*Ap}ARAt$FKtbjlwmE}c+#f0QU{?=7>#NpA77FK`T#SrZNr7QOzbtM#B ztk8I@i#`_n`0onPw#DMHI9sd}L_tpkqJg%+I9|*z((~tT6|Gz_u2z=HE?5W1AMusI z{2Tkq3J4KlMI}*$=wJJm6IE0c6ci^El7b*oPL$&>UCaMV%wPm(U>C*lFU9ir5}^Vw z*ndi&F!`r>tQ-j)<3ebS418KCp(`J%D$41*e=|QhKbL7y0r7`xik=$`dwes_SpuBEuOxe@Z!^GU|{t2N7LWBdZ7)EN2CQ#GrcEI?+*)pH} z?!1x6bC0KQ>}%?5Z0c0iX62i~kNFBMgAkX@h-hKp>>4VfMRei<$}G>q8jUtXTLH^d zFC{kmTY(aU^mo3e$}}_`F464lrTP!vrR1cH@O1y$lEKC{DJ04_=1p96WL(Sn9SwPMAnqh~?`~_(f#=h$y_384jljw53CkA(P@v{jJ~T zc(4(RC#R$kDO`^wH84l7R)UhTvWt3h;1dPx@T~-fi@H>Mi zOM19(xzXHN{h>n>b>T}80{~1r7sgUCxoERznp)+Y)z-+!L8TxaQgTndig>m>0C>4? zH}Y%1M;ckFffb3%Isqb?$^vph_G`)4!6f6dz@?V`l%~KrM(z<-z-$nNIev$lvNnW- zZ}^p@IT?i|Et_CQtc;&Guh(aK@C&(ZTa?t#KaJZ~l)ra?9KGx@V_r|I2}RH821}8# zjDx90e9jKh%RHDb9h@~b&Q#5GLP%aHcQ+*Gy+qY6+?G0yN%pSp((EGI9e;i>vk&jM zth`uBd5gJb%MeU8|6_;$-8>~rezpfT{Nbfhv)jcX`b+3?Hn#n(_n~)Clpp|b>|^XO z*qkrXHcL`njxX%e%_;p%7RHTZl2-Ozy*-+fAV>16#>g=eUGjp$hc}m#k&Mj{)^=w* zj-^If;*jo_IG58mkF4P?&*NOo}JD;-&(yRQDj z)fA#h)%3@~QPl0dDsRsD`n)q(3l+Mec7wskG*2qalN(1YatpLj zhTE68mh?9Fr`4l+6p5YmvGA0zRus*mWW){rx{1KcM$WZdNbWNZgRst;*K#{b71oc@ z{NF(bt&ZMCfRg8_*c?>Y5Y%(Xt|Wjg?o)+=hG6A0ji=YSkS)@Wi3IWoTUFiF;7wj| zxj%q$!U(RE`TO|0Lic$ z>KdPrnXr=Sl`T!G^U_RrI7;~3bgKIPk3zb7W2&n+y$dLl^uiT54;Rgm;?vBzL0h%C zqlzBu0#rZ38iVGBR9|P`BF&4NLm%Zrz1S;Ht-GHR__ zQzg{jbK!fNr6bcn)Ob*8MsF8 zdj5djyWN`o>^K3#W;4vAQ+FyxaVcL?t1Btu>E_kDT>X_1mX?BDgO1VL{51>OX5@GI z;O`oPL6`qzuEduU7rnSO5E|^ug$JaoMmS_V-~J>P&fz7clz}UH5A=Sp9X-S!&?v}ye51c^4rQ| zPF40wa#w=y?^$}(e0(q{+G{g0y=kp65|!C4zPZcOjeETlL{ndOr4M$bswd>XK<}he zHBi@N(F248`KL2 zDTfucM#HsuB{~$>quC?XXWSw$_+*;%T0|}<)wnBte5l-L&oh&!!D;CDk!K_>JRvME zDzf-S!L?@+?9=u%2EVm_BzERk?LVL*0V>?IPVdT~6TL2~fDulVQ{R(7>#@DV-ALIo z4%6_9V92$8CU`sl4KYp%YnS8>rlh#0som6J+>E;+dK&Kay|jcKk-EG?)c(1rF3)aB zi_=M^6-j?%$34cK5y8HiD05Y#R;a|-)tCrG96yvf8=D_CqY~&>L1bu73kQIR0boi1 zDH8xl^gnqMEyrI+;b>z3=7(eEb!Se>B{`tuXH5X8koM^j-y|;uz4Kd4M6tA!m@e^a z^R^fhjB}>rN?nD|$FC0RYGgP+n+XxDezFVr{OgMAbugtzxLYDA*Yf-KtFnpfx|xNG zoAdG2wH4`-RELaSp3Q@Raoq}y2ohB?;;h8X7t#uxXV*;Xn}Bjr}BJtGC8 zlod8xCPptS=Zu;*jPGm8uwU9-@indWBKcmy@+blbj8hPvM5)IYuiqc%44l92sHVJRG`1eG6>N#vGH5GmClq zFf}CQn52nxUU#AC3A`=MKs-RT1)E%kxu?eq%Y%cM7F4|`tp&nAtjVk zAgq@W7F$qOw0>|Td4A{ZI>l=AVq$(6w0?#DdX^BVur(l_f!Z=HxDdeNaF1NZ`-Fek z{vK3M8pH{2Ol!Y*4kVp!w0Q$}K+?cADnC(cQY1xquiivH zL>_scPgPv0{8;^(9#V9L-P;Rlw`Kk$fh-m?b$;}tgCmqYjY4Sa6x&xB9cU9|)%(gv z;H6J&3;9c$fFvuzb5&xT6#@)ss6A>uFf<)cUO(?orig`F)Obo-s2|H7V$L1|?givP z{i?CVZz(^Y@fj+g3gDWH@EObdp6&`58kE4+{BQM%x0^}krUO@=`#8v?S&j0ry|isuv+zlr9|#D*L7apP$0`Z!{ISq+3WKZ}So4vun-{ORNy^XKrkUU}fjdNv zt{{c-hsBH};T36i@k#^{5z<2?nfCy4)&kH^#Qg%|$uzSia4Z`QrH-pL**$A!Fn#pL zRZ3c`JK$>^yg z6{XHvF#>A%Ci&JJ?foki!w}f-@9DZa=O;Cx&^R~Ku_Rcu1N$H~Ew0FpeeNK?56tQY zMcdG~r|jESym|tVGqWWZbrn5>hGRt+nE6Hql?*zUHL0TF#JsiGf!D;hsYyWe0Z}m;0h|ih_<`u0 zW+Q>5Bv|kBNGc&XlBux41CN|Mcr&hMS98FhmYEgn(bx#11+A_b# zCcg9TqqDr59<8lfMNV6QfU>?CUaiQAlT&(jf3_+Lb?cAq_ogZQ8y^L->MH4I9k*jg zf9+N73py|d@oUsDz#UHxTRxc%^;dXf2c!%iBEMLydR_Z;!)ZhO(UDVsWsDzt;?v*N zW2fu_(-c{w(lzI^zm+$9ZEj0~IGy@CYmY3m3hT@XXL1#u#rXj{(^S}kx~oP!qY4iU``?j$5_H9QbHov$)NGd}xZ;lVtk5wPuWuJnXteRVb}vi% zo%S`|ndzf-Bj@h?a5DS5tjAZ(%8x2;amn%NxY0sMnB;W*(Y$jv!!yuR&!wTPZKssg zCOV{ExMdItxcKPR+_ru_LymSvO0KL~8}}%3~XkY6Q!>9O`ehOqt4$tR_7& zxzw)qz#W5r%c#$?<=TApMV*lmnLD{c%Ey>Labzm5qV6( zDpd&e^Ez^W2~EnPj>d#RTlxIKApvfY$pQUQf%-?(-ATvm2tAsD*Q~Tip*I@Q?s~rZ zt^l=V>a>X5o^k3f`3?%w{wdIK*glEa$14MWsxETK|5SYK${&g8dBx`bL>VL5DRP5O;%DKaFb&Nwb zgL;6usyg4hF!%7!Ocv?BL~|tjEPS7tBGUY0-ei8hFPo;jaZwcoZ1u#I?283M4-mhLyxplUp z3IDp_2^+h8-IMT#FPX|Uth;}jC_t-<2q4I*KAkT(m&)Pe_R)x7zh~uEK{)+&yB~<@ygL z0rMz-N%VJ$^>p_6_ESiz!01;)=TL2}xJPe4w$BHld_nAh8rH@on8^#u8Tof_<7u}&FSuPShkr#@4|^$hOAGC zA=e>pt>dtya-*T-EO{=p$4;EMuBuEOA`?)UgX^wB$k8zx&pb^6eiVl401)Zynx zmM4a&F9U3Kp;G1Kch7z+b`6gng}bbv2}G`#(5|RAPU)sS_jfP~^8AS_8`>Q4DB^Hr`nn+$PV=Bz)c0R*_UQ5HF(g(7{o-m<2-DDEsg{;RCmq z232tBYUv`Hh?(qoi8;3THdWIPvRXkpQH3CJ%H_1Smt;W7`FQ*HjV5wm@YNRY140xw zZ!x%DGUrJLA+8O`A|l@eDVeA7o}VMZvc69X*ZpErrkh0g2i^-KLwK3}PC~lEnR)8V zs~Ao_B`TKWWD=ZvlAJ_%lr1K+hv)G2G$bG<*=z?ac2zH(I3%YgVO_0tl{~oCe84u% zP?E8R<>msa<;JOP)`&#mhNG4J4lj@r;8VB&4K5-+X962o1Wzef*xs#LG+o1#<1rU- zfG@v(KDkLYI${5QFM$Jl8vp>q|0IY%5O6^N0>&RiY6bvYkSu`c9|8~%{vg^$0N{fB z0mOgMKQI??7cfk4D{3I|@QP5Got5XKP!Hbn1wOTjHCQ-m$8?92EA!T-B*4y_4-0hW+-S1$~qJx(42y?0t)z z-&KV0tqFO<{0^NzOmxM6i0I|v{$(L0*0lZ5C!K`@V*s?2lBptmQ~@K{UcJR8v;9m- zEwsrtNF*6dijieymCWq&T}ZF_ow}jgJ?1gy5J_ax(!JN%a*Ns}RpCw>OO)xZ{rv3T_CiZvNgg#=1ZQ(Hq{P&azse9Ge^Va@>t2KxIFO6g* z!^1#V2g_LwIsPn%%jUW}j-D?%qmQ`O=-nr`k7^h*e_cH&oDl6EuB_{i^sZFPav553 z*x%;#sVDpKetbiaU2c&({#KW79*p4oC$1z+xr<+ko4v~djq8?3HtH-n+pHr?1JoIe zHG~lU5QV9Abb3@rUN2*r_REI}6%B|GKaNs2cw3aq-R^~jX+{539b0|LRvBC_{M{I} z<0f-r7+O}>R%}vBW=e)@W(32Dm6J6@=4mWouG!C+<6=ioo9?6@EJ&a|P)5V<7M1j` z>2+1>ih1lhPief`XLCn0%DbCgj1Ml~cQNj@kr#83XEqt!s`fe#q1N^|-I1`oT4%qL zAf-I)EH#gqml$F~ik-jk?I~`H*eeHun3e+vf(pdWnb= z4|2&>p2%*%WPVNdt$IiwI^5JDTG)EEJxW!?Sl~x8Ub6Q2tC0YUlg_9rp(6LJb1F!> z)qNK%3Ud`76_j45B5Xw^Ic<4 zRKG*$h(#9|%Bk4`iDVtj1VgFlekZHO7s>c#vs~jDOF%`L%&d|Qh}~HGiGDIzY&!CI ze8Sl0b?qq*A?W|J?=iKqPbE5TLWrbiAB-qbk?u?f`g*afN@qJKqy&$<>JLnR)F zx|?uA3gMyV$C?=tmy{(<|5;E+y=w>^z0~7q=;>47*D%aW^W^2kyh!{+g4vt)H+o;^ zCK?Q0D<_?b&p$^JP609FZl83|)Ipr4{Wa~^KI!AMmhc2_4a|NXA;$^kSWnu~4a>AU z;oVL2HF_pdHpnLa8O>jf1E>Q}OQW%G7XE;?M)f&K|DXv9Hl}N;SIP_9qi5DzJuUGs zy!%4x``b1SVhK&(Vs(oJ;vXO!SoLV9-B4{R;u2_?$678Ur^oS*d|QZ?R{!U-yk^%< z%d~~#=X)W9)sP#+?-K5vvIR(0F)T z+Y{{3ChBf@KQQJu1{~_=Pq797G<8D#F>XFs0>~BX>5bEpSgU_40rGa&lCV=kL(u;E zSTFAjVS!kyFjH%{FdsKHcL^PBkY=blg}@I>z<@&id~reQp;{7u<5j1~znA4DK!1Y} ze6%F~9+W-W9HfsA#DbK-5IHx9G6bXy1w&zqDk>`HK?)EkL>{6b4^@zZs;I*h)FBYi zpHG6~EzsRV-4bE&#}`G@lJFuB{MF^T^*uqpafNeAfPY>h_Wgas%oI9ZvcTJ;rd8DMOBFEUmX9= zRt1TKAXHSK`UWsHC=>~W!;y;mP*qg}J!M4|7+mQuTSHtB0fTeH{^i%3;`fg&jz>n1bm=19`E~C2bg=|3HTr{ygx|aN(qF%WiZ@7W@-f!@JbcY{E@ALwuO zRrmfk{^2l1Jw1JhG8FnJZ@4l7p`f5fX(W9GRk*UmA6xhTPtD{h!N~t^j(=&Ezm_N+ z_*?u(>r<3}Tplcra$^E1R|B><@d5zgIx$4RtwTp#k4{c>+RSOrdnl*Mma$DAyw7dh z&4%+OJO{7=HsG?Kf%|$h03{Zzb${OzBlF7gas^0bIi$S2B69dXz|Si(%1cC6NDX+g zhzEQ9_=s-$v5u_D62BlTm5IH*K0~s4*w@~+&%N$xqR$3XWsmw%d+az=jIc?W`Wxn|pAC2{p1bF76?@3V&M@8k00BtI)Du%@T&O^>+@lG1e+=l zu)|svnUR_GOYh1qBj#5Nre8*wxLy?Ve9j(^=U?SjCK`sDJZVvJu)0OJ zDa+3~lh<39D-B5D+}LDxNr;&%IXOOnW!*hPl?xRB(w&0H>cVN@9Wn5Qt*uxIrfFuB)LzZJ+~pl-czK6F$z!Whw7PdrwGAz|8UzJwMaD}F534nEVBImyeEPN; zPjBAbTN|HDi!bnSjnmM%eiUhQG(1i3a@dzS&CjvEvcwnng3mODhU@9cSYq3HN4k}D z!NCvStXuvPg`D9ubK6euX{dAWe}3N*1)GX90l6`oyF-9c#(0Pn8JkiKHfZqzQPQFO zr~|2V0l{T11sD+1s`PGtuI;EOZJy3#?>#=9R`y-7hEU*rSG-YL{$z`n%*RTf4rSJl z%EMSXy$3)e7`}p3uYs?+h4pm$e5nf$&VqzzKfWX%!)(x!ZbvSlwM+X-WPz2Rl?>V-VL;Nb_-&8A~LPLz)zH`w`I-V1x zjZ#k)g7NpY4^dms9WGOwdiFoH58F7*7hPR@NMNp>P}dYxuQA@4lk~hhYV9}G#7%zo znRL;*k@SB2(p*Ga|DEeh;|~-`=Cv~Ol^;5PBGa&RczZiEGJD`BK8}WaXIAyy+>cHD zC6gASb5GAL>~tA*wT)Hgr@eOPpZo6Chg7?D?7Yo-hc?iiTi5DR6oH+z-Q9(YLa&sQ zbkb>+ws@{))3=4nMVuC;Wq1F?RM!#jxU5^T74=@3gzJc5oxe!iQR!zNjg#EIBa9vv zpJ|cG0R0)XTv8dd_gwOkM@-G*Z?>ga5Eiw03{vm;xm?F8{NZ0}1Ezb{#g+zBq_e!H z;tGt3FPPOPOZ77!pjv`Q){L{h&=<&gu8s+0z+TicXd_^4gjbLS_tyQxQk^*qy)@)y zdfY>@a!l0A+X`Rh5geYZs1oY7Zt`VE%|JS1){%+cYfEc=`ZbcQilCW*`nI5+o3))< zYl~D~Wob5JIVnzE>eZ&nmZ!do@GjwmmgSBM^B8Z`_r-8J8aqscS=Aczn1?I`RFn=R zP1RN^0zs}t2uzON?tR@oc91Io!4jE3#Xe`314Z2>N(bKUv{u|0wiU zU8B>KhSdCn{Ay-%?J5DCG6A{S(N~PKI{;iTJ zpLg_H0EvfK*EkbO7U?>Im-1SEcIQf~e;*l~3iNq8qPU!-8BWUWY!Bdj-d?x*Rykzv zQ~xi5V@@RJqw2-Fu?r=4z!lZ~mnX~cxe?F4q3R57?-Y)Ej(!EO*)+E#)h;0(`Asqn z^`-hDmm3HYOQDHdgi!7Ip+$|Jk88xj6!|o;Va7$-Z++L0;c9V4Uz57>INfz#^^{uQ z!S*|`I*(X*WD%6TOPaKGOm8fGT0`dsKjM5+Z)R*;?^0H7V#ynkGiDc&)3$B8%>TmZ z=2M=g;wHls>7`-DMo;N|aCO5&tKJT!J2pIJ#jtZChVu`I?K#8OLmefjqAf@^;Z75g z3C2iPrEFq5%E?*bi-rZ`wtgJ17v0fKRv;80L8tqUa$^6KqUTV6-R`Qw6iKEw9~MRl z@6&>UeV5H0ITCMwF$NpupA|b4JG?%6wz#kOjbggd1$Z>wU1ghMz0K3eF9hfH*o{yR zvQJl;CrR{UYrRIC($5^&T31Pg;M%x_C;t?7`=ExI#B|*BE9i8@(dzP(KA?4W)VcG& zu<2ucTde2IZAW^@{eXkCPqb~alNIGOdPl$o%z}k0w|{RPF<4G*AT`^IoEl_oYJma^ zOGW82RXyPod>Z-bUD<&0V{N?s2k^xY+?tP5`~s9dRYj0ily`@%cBLotRo;&7^kfxh z4uZpn_`R2LS4Z08F3o)TmJ@O|E64XZ-9)A4P6$sW5b5kfMr$lkCy2BtjF5_-xLqAh zd4B=5zMMXx{6V4S(>uA7C1%+gR0U1x#ULv3<}@mXU)5VCl#EF4|5!k1lC zy*Y!j(y&=+&raEy`Mk6ocY`DIk*qf5Gs z_6eJeiF@roj5d#k1If!VT9K7%3}PitEg_<-&>*KqHrZREB0Veyw8D&=W!idrx9y+l zsAc>5;ZMsumlWI@@S=a-mGf1%d9$oBiR^zeKdQf{&28Uwo>hsrJae>)RNcTmd&*xf z)`yrpP+rJ@h4Vhv9NO4j{hGJCnBiylfLAQ!AY5f=z?7<~k;ks|jx2qEXLnWI?h2Xn z0z;OqkQB=DZSlmCb_HDl=Sy0dDDN<{(I0-km>(I{#3s&{IX;h5m-d{S0$%vsKK$`g z=ibU!?Sp45DIzz~4ON}ZKSlfn=-$+de?KTOO<*5gTiSV#69*-ByW5EIy=|!8>SwsL zBKocIUih`0XIx`G-t0SyJZm{FX^SbuUbSLY-h2r?zS_qw{O-KnSvS@$xgN0M*9Jev(@1M4grC23eGa#W zCw<1;o{6^4jn=%09-O#qmOgLLe0p>9meLxa=q*dQCQP*x(HKSD$=dO`x%Gwuu~Kd1 z6*q1fHSQW;63^)5=D6N`T6}G;tT-ZI*5fey1XC(1tv^^a$J8;KA*@Jw?7@KYz^!ns7CAEtTAJ zh*-=&BjsFg&!>Ob(r}W|E>wC0auP~>b2xJ&`(oO~nI+qPT;FaqtaP|+cXdtUe5M`C zbl+j#D`2p+z`HRyl@1s2v+x%l9__^wCaIwxo70{=mkHUL4aF^U)2gd}Yr) zlM8c!!Mk0{KOMV6*oHq$u<7I>Sch(Gqs@cpkFkhN9#K~QJHO+20@XYzNQx`I1!WTOSRu;QI zYb92Vf2~#?SbIQKV(TaqGE4*oc`T?~;QhiO7j5tDai63 z>u$mw5G#;JKuF!~eu`EXak9)d^^~|(lO)c$Hy*tHX?FvDL$=6)#x_NK3w0$~;PmC# z(I`E*&eH_3evi$cpiW?WVz|+~J8aM&*?TtbIcE>EcYQk*jqS+-D@UBWKt9tQGYtuS zi5O0DhmC^E0Dncu9fzN(0yatGKulz8WmOfnM%AVHhghR{E9Gq`dEEYp7LXeSq9_Rv z06>D}zn`(|x3sysJBAEl+R!&X6Rl(Vm9O^`x~aUVEyW&by+x}is%SN$N-}muL?Dii z-;}&7Z}()=UmsV%JDnKQ(@Zkzzgb8%Gr8ESbzWh(T2r*9<|m3>bE`daJ^FZ<0q-Ui2~J)9c}yhYy0M>UA(YVwGm&3RVmMvAU`Ef zTj$cD7PZ8y=W>f$3VeCRK4)L&ons6C7C+79u{`sR(M zJT+@Se-?Faqm{;MIR+W~5s$Qc%qGty6TZ14H# zu3@s;9&}HB#(0`_^`TK*8`7(kTU@*q$b6$Q?ML`d-^9@@O8rGDONuZ%8byl^X4H!& zuI;AWy?y4_t0h<*YDL zf>-$8wSThBCBDUs*K@frYEvgO$go|{;G0F?u+bEjwjf<${5bD?ZQwrf9nK&6pk|2? z>zP)`Y8TO?N8Y;{k*96H(Hbs8_>ul=W@X@|X=G_0Gl!Od4&w{y!3B}Nh$40A1ue#G zDsNBJcq4Wc=;;B@(7+ZXSRtvZSH`fLY!VN3r>yl9J4ct7%g&oRep^#=d~6gsZ7aOJ z!)`6t8Ya5w<=Cl9rYB8o3iBOjm3Cg(5fd5P(K;(`HcYCoQ@#-Ugr)Y~MW48iO7fn$ zpc@8PeLpZ@k?B#JbudEp&btkNA*D;W^&ud;Y;^7wE|mmj_2AZ|EJWDR_Wd^pK@H)@ z*<_!qmW*l19UANrSmz1-o60+UTI(EZO=MfUuJ?ywXJ#exJTZlbZI%zv((eN3qOLqj zlI@|P&jU7mGY9YXrM+C4qZ>HNDWEmR{2Fz=W}`-iz<1a)R<`E@7wbeUSgz9vej(C1 zkcFkN1+U{ZL&V#@)1CTAGtF3Yis|IC6PV=}Kl2SeN2Z_OB(wuGTY_0Elt85JC9$`K zOMGUGtC8|aUnaBPK0aDJP0AUGeUW-QvffZip=soZgd@E@UMRBVVFv3gs|e0S3DNtY zz6zWymn``2IDYKM0P7WtKN`&uCcrwS<(g%7{KQAG-LqaXBllkk3Tor}m94G45VW z!+P#(t{#34I(EC0H_n}f`Nd<)xhD~lMU!FcpHAfgIB?!sSTu$= zn7&BI8l^~uv%PODQgmB;RUw@oNrMPtU%R(=N;ek1FGE+$v9&2U5R(hECSf(5BIhCr zh@0OZ7+M>q8D+L^zAaW7u)Nv1a(CiXGgq9Tg)Cc%qHCTQph(N)5*If zNR{4E0qGqCgfEgh6As86K{%j!u!~JA_2G~_6`!P<7V%SG(p-s`gwFBl>mUu31xN@ zf73u;!2#FI2Q(57zJqi|VPL%L4b8k@lp~DSQrZAw;I58z zL0ub}B*dW-qEJ}{NeKlA1pLp3 zm*~yY(MiEXL+c-3#2t*+1&?=E5Eu9H@e%Wp6vKKti$mq*<5W>xGB$5+nUP1vhsCgMWcBxPJ;oESb2ky}LM63?lC4 zc9z#)+Bm!k^8bYKAGL92e(p$d6C@7n<>^2?4=27q#>CqFcSmQ6#Ap<5c%q1hVt-cy z>)_>v#Nc%_V7$a9VvZ>W^;v;Eoe{GF`^(i7#4bky?1x`F?y zuL9~n_}5a0N=s>I%0OlQ$r~=Cp&=n5Pi!Q02|2h7??1MV|35VoCk7*a)*Sy=v-}Ye zJMfJCxAlpee=iRbL%cDb#H%4!__U6AD;ae(;AXyKcaBd_RobqTibNU8oZ5sdGw1FB zAU4V-P#xq6tgEOXKl0pr5s{bl+_tv#U0q%5obP;_pci}*6NO^mROXiM*3OpJP939*f;0G$Ajw5iC+@CJUnxvqSox`X^DWdUA<@Q z>|&H@o9umfW`?pe348F#aYVMWK`ea*<<|uLem#pal7XDipqpfr^KejUP64U2o{nyB z*S1to8#r=%YYXw9&4h$rZfvw=^kj-hD%z`9R@9!6+>bI1R^+eugw!bJLwF?Q_;@$k ze(E_gtl3}AnkoLDI9>wa5O(c}q8~CUxu=KivBJ{CGNIVFpfRP^@1#M64D_k)nb+z%$=7rv>x*=x9B`o;gwb=Q@P5}B`6%F0 zu{OHRrY@@!rp40-i$;UuQd{L=7ey)2bd{|ck)xv{4@|W6P1w#|czy_0Hiyw~X_(lu zhDDaJC|!V)`PC}v3Cfq06!#X^Xq4VVSDe48Uc3$YH(^SW5Madyh9-rxHtw?eS5;P; zUWp~~KMnmJ|I73Zb)Fumf$mNUNJNBHgse`8x*j(XwhIzp@T=!?LfA8XzpPk^^_h;e zR`D8mHuRL|@oY78i+Z1WO=)K@II5xQn^0@e?l9WiTl1KWng&|8Ig{&X@Y_{FF8zZ3 z7uTMjXzi(`>rs-obI7IXz-8+q$DAQzV4)94AR3r$();~ON z%#n+Z^&VlorXt47ywW^8+0E+q9p=aIE0|YifnSVfI)a==;5ww$2G4mV|9(6DR%}SD zJi}AOZ$-H@J&L+r!m6OOPU6MMR<*Td{Cr@LX!)HUR_bB<&~RIfFdyu55v> zHK{H4^rpw&Uf|Gv|3ZzC`Pnyanb2hOpL18Z`BP^UQ^BoQh!l>Nqi&fRUAY2MH?Hk2 zr^R>`rh@QoAJ}b|Kg2?zeN>*S0|(TYSmpbQUT7oM1%MwZA=wLw@SYE#;kZs6Dqpyo zU$2pOsXx68eC648Nxo>~v`Ino*ESpMc90ZTxQ65UPH1+m#x(CnO zLB?_tkz%C?u=j73K3b}h?&xHvb5^gYD8y)_D)t(`KeA0h^I;RL+9VaJ ztHGFsfE!8AA&K$ZRXVJrv)4G2{H-Wvq95K6VPpSYJ^1Khq{t^NW8Xu$cE68@w+Gp+ zD2=B(q(?xJR7Z6K6;UXwRfn=6?!u#|xkK(Rvs**HD_E1+rGFpo3F+DMym(;;^2V(pEZkPmZR4eMtD)nO1(@DCLL!#fs&of{g7y)_m z##esMc_EgZ!IPsOvVtz`yKawUl-=0nFIw#t+=J4lqDczt*k6j>UYbAOu2Yj<*5^Vg z`c0rUe^2M$CSioxP|Fy}Logh07wgY*AG2OCOgD~|-Im!CA^g6e)}ndmH!qTLR|^J- z<|SM|Y~Ov%D(T8?928+5i4~CX^3bfY)@q>>m?<{kyNQveS`%lHJZFAM*k0XQlGRJO zsaGL$K_vn!py;u`Ak9rqpPw2f6mLD^K0=>wQ9>o!S4i`8i#mhOinb?WWTzwbv1@@~ zP6L6Y0H&+bi3{@96d_?_d ze7haf9`F(!WG7XcANu3f=9KeOTcW~}L$|z*~sn7bTM@UGCT8=X9erK45Qm2&GP3{936UM|lAChjP zJo18m2E5%jov-K55C0WEO306WXd0KzEJs4pli?c~g%H>JI-r`oYm!$szy4i~cP33> z?TXn{nDyMEcLR%P{(z&)5#PoO?{Qf0UY?4=__N#Rz9cVlU3Gz3mcK%}bwoq#hhx^3 zYt}Kl$MXBXK4UgAPfqH6YFL!+L%}m95AHWC&{S511tmHmKGMH_Ili8`5fGNR$m->` z-@%cla;w)FHOX)7mJ;ZV_jhDZepHsoy~#Uc(nnI-C#2JBwdg2^z9q$+sL@ch{j>Rn zT4IaXo))T^yymy3TwbE@?xEX8(^FY&t#HclL}a`Tw;6Sa0?mp7N+DyTf zeCx#);>2TPzzZ|YIU>`{U470xzJxWosEVO4@R5^L)uY3WMZp7Gb|x{t*r+dT-#!f) z4|}_Pk4lspex}U>t6lFF5jR!fn{n-vo{_p5-5+xupswXLqg4q!h76$1#7vb*Nhxm{ z9Y~M?q?G?08_ECXLmH1+Lf+#1V{;#VI~W~xBb9-#eEA$EFqbbA^)QdOnw5c?BFCiE zJnw;-UAxLhHc?(7>*)UHMxZ;q=ks)FTy4ZDY&K0QVqbg-i>i~G{`qWY#nHR6W;AW| zcK~7}qtjb9?fZ5^#;BXUUz+eWk}chz`+&y5%sUD75o5-xWH>BUyX9#K3`ORwHR4$<{<*~4Or3y?d{r<7D*0HFAet6B}>Nool zSu?|wAlk;j4hOW;%w@Y3w-axiN9WyZVot_8y0FHaH<57{d>2FekmWa}^1b*?g-X$f zH2e+KyAepqMd!Vk&ubDa$@`cn?1yfGUtoUFDNnh^UgfJG77E_R$ldQpdDJeO~9mUVYm3 zqKS*XTCT%W3b-o((I}zt_ee@C)}W6MLiAV}aRQ;MM48yagAE3PgUt-aSl>ndG?%$UQ6~L;i}f@p086#klUw z1HZ1>C)O8olHy35^T|RlZ-???nlIvL8tgVcsnmWbl}W_t%n8Lm#=)rRK^^`5CKcwn zgM(VIqz6JwJyt(e5h2{>yd>S1mA^8AJHQZtl-TrVi^%@F{+sL{Rri$5ua6tP4Ee9k zX{hSWI3QUN10NWi99?YOOIDW#t#By9*v|eg#Zk>9A^KN`%3enno4i#o>+yn<==agL z{-kj9kKXb1w7Oq@hTLHH^t-`}aLFZX?8YG%)`K*ZNAAnZ@uJ4LLCf27S4d&*7xbKJ zI?Si(LRvUxPiEa-Z50;=?*Ha1A&l#$$wa}E1tw|PJ%0G@pbwjxVSjI zS4m51KkCO%g>lP4_+MR30FJb@33@#olLUYN;!k%qA3j9y^EVtx zcM7AtRdFv4#kj1M^~&52)ez~`sQ9rwLbUHaYBjy<#*nwv`bxIY#6+r-4*>cvrgNJ~`T zl0JuMhnMm7QkGe*LmS12xVBIHG)dCuQ>F0H4rsxgq~SZCzw5@_$fUll&JvI`7Qa5m z;fTo&zc28}cIieEgZYqdS)Q1b$LGb|EbfKxeD3}aY}8Ol3qzcr&Zu1*|8DN5DWQ1H z34%|4VofqG2lZALr}$-o;7)Fsv}jb2c~WBm9Sbe^oGxTTxn3J+Zp6VYs8T@V`6jEh z`kBC8tFpbEQ4%l=@-_BQ*{6SOIpyhC{9f4ZUNb5e^}66AW_0CK(G2g4T`#0d(l}LM z=wyf9N8Lc&sQj}GhS%;FhCghRuWPviorIaXz>>IONqF3{=yF{ibbTe55IdaRo8Q3Dd2PeOfBEXO5GWwwO-4^+knv?soctWVDmY$CHX#SA$SXm`0 z*j=l)-)Q2nEPu@ZJ_(3DgopUO;Li#r0sdP53W&@f8Ik!{{Ff}-?O0sZfB%HnoTJ0z zIPEiLrcATJq5#ogKUI&gKPPxAyv2z1vzUg4M)MBat{z+?B7&7B(a4wPG2~jbgh8u$ zf4HaV7Mo?wYCw0UGhzPVSsKo}$F}E)qAgC*xx2gj<+fkb^n$!|akI*4%gN$l>*BHo z9y%^ArqE(a4yc~!!hwZA3#&lY;U9}z4oY9W{6Q-zeoG_(xjWWf-PW$>18J5!6|fWI z$^;vFwb;0=Pi}sJ;#awD=fsu-U~GLL-6DJgL?sugf{vlXX@R6x>Y|P zL*?6>EC)dE8i3jBo60xoG!v@KSkm>{L)V$e{McGK2O3;b9X^)ukxTkzWK)&d7~E7jxL^IoUI!8f*!bDX6!$THK?pt2ZSrtAh=(_ z+O&FiGiuf+!ne1h5C|A&E#p(A(5KJ`91PC~G(Kd)auq4mn7fu9W{RO4NG_EhPF_$6 z3n^QmI|xHnqu+cI0*srkO0qkRfh2C96 z=wF%e7GXECJ#&(ct|wxu$^q;}c6KAtxYN}Ng`sN|WTDU=RfM2@NNY=Is216#WN~d{sn3d<9PbH&G)1;Ec|!{t!S)d^vtbpq9TW1fT@Y=wFyKxHFhVN%Kt7of7R! zR_GxLw&9a3O z8hrR;{^wO0N2Zw)OFv^`TG>lgtZ&i_%@5|`M|F6V#Kiiqndi%Xs||zIZc}DYxlRLm zrrP1xlaK0z-^T|9cLlK7Ze`yQ;=p!eLoC(Y2x*Z?<=7dwO6UZsTo( zQtZ9cL)qK=`Qt%{ziO@O9ba)=Ok zHaYcfp9>(WgD@QeH(g|8Tf)%H7t2S@hg)%wXXp2H%o`Z&BIIZ3NZAAVzUWA&S8>_o z_cgxZ+2<;M+n>}yBOEgaPjo~Yp@i~YyR*5DCYWpfY%-)Rt_x4vL!Jt(fIGCwvTi6( zUZgDIY37N%O*K7NDSj{TAd_iTy=Jtvr4rujn&lN1DtgM~beEqA)S??>Lt%*XUfC@@zSxgkr3%I>X9 z?yKll-SDZZQUDoH>Bv93Y#{1x<0stJrfJIRNyJ6EKd@&ugXMVFZPc~ST z+|}AGQ)r5-(z+V^_7}l7Dhr}1>OwI_rRX#G&J6bw_3o?1`d*N$uxv4=3iPu29>G(> zYj8c+V&67y?J9DF- zUdDqiS?_mN;a+|FZY@g#P7rRmNwgyfu;Uq7iCW9$%pMoUjoyQGAf<-O+V#>F)@mAVNFQ#$>n967z zE%)j-p7@oy%4|50Td{ROk2q?jO&)t>b#JJqc`{Q{ET`sL$gWS0-^w1ZO`1ycvhczAeZY6QCWmx2`ZwQzM^3#7!!4gk{69y0$uJOAta{4<9C i>nJ`O!69+KnBMwOaSAb(4iW!w1aveFHOkZw_x=YZXY8o} literal 0 HcmV?d00001 diff --git a/Resources/history_over~ipad.png b/Resources/history_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..54944e12231df64ba40a323545c6fd04459169e7 GIT binary patch literal 6238 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 literal 0 HcmV?d00001 diff --git a/Resources/micro_off_default~ipad.png b/Resources/micro_off_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..6512dee9d9427dcb7428e7dfdec1288f801101a5 GIT binary patch literal 5107 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 literal 0 HcmV?d00001 diff --git a/Resources/micro_off_disabled_landscape~ipad.png b/Resources/micro_off_disabled_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..4e69a21359cb5d4d4e9dc7a4101a2c9a964599a6 GIT binary patch literal 4820 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 literal 0 HcmV?d00001 diff --git a/Resources/micro_off_disabled~ipad.png b/Resources/micro_off_disabled~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..4e69a21359cb5d4d4e9dc7a4101a2c9a964599a6 GIT binary patch literal 4820 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 literal 0 HcmV?d00001 diff --git a/Resources/micro_off_over_landscape~ipad.png b/Resources/micro_off_over_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..b9230d6e42143be652325bc19819ec7a5c3e5635 GIT binary patch literal 5057 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 Kb;`7VkNg*NaydEx literal 0 HcmV?d00001 diff --git a/Resources/micro_off_over~ipad.png b/Resources/micro_off_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..b9230d6e42143be652325bc19819ec7a5c3e5635 GIT binary patch literal 5057 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 Kb;`7VkNg*NaydEx literal 0 HcmV?d00001 diff --git a/Resources/micro_on_default_landscape~ipad.png b/Resources/micro_on_default_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..e1677a4fd74aa8c4903ce5028975271563ca7566 GIT binary patch literal 4299 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 literal 0 HcmV?d00001 diff --git a/Resources/micro_on_disabled~ipad.png b/Resources/micro_on_disabled~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..f8e3c49c3e1c8fc021c710b5d68e8d8a44c81414 GIT binary patch literal 4099 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 literal 0 HcmV?d00001 diff --git a/Resources/micro_on_over_landscape~ipad.png b/Resources/micro_on_over_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..585fb8aa3142935acc1da028c5b127c343197e26 GIT binary patch literal 4287 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 cZI2VmV((w7UJv}1vH!0{AA12)s%;3H6ahgI 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 BoGbtU literal 0 HcmV?d00001 diff --git a/Resources/options_add_over~ipad.png b/Resources/options_add_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..59caf094525bcfaceaad629d1287fd9ea4759d23 GIT binary patch literal 4847 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 BoGbtU literal 0 HcmV?d00001 diff --git a/Resources/options_default_landscape~ipad.png b/Resources/options_default_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..8918478366cd845d78066cccb23e17d979b4e096 GIT binary patch literal 5466 zcmcIoXHb*fwnk7o5{e)qEz%Uy=p7-UNv{G1A%TP%YUoX=p-5MhDiH)kks?y029PdQ zx(FgtlrBmWZv4K_bMKEc=f|13@65aFdRBSX+OubNoRNVR6a6K63JMA)9c_dOxhInU zXSCGh7F>|wNA9@r8kTrd4=mmv<&B|GbMQc8_;qk7M~n#ui4A z^%U$qaA4GL8E^p3lZ>XIP*M%>MA^Gy@cd|uqqDm*aPv(Ikl)!s8F*7#AFA&O$2d7_ z2YF*mgAB~pJkb947m2v7$8rB{JG{=EzV^8Y1*cU1=d z?Ubdy5kK6+8^bRRhJx&&GEjaQ7#JogB`Yf{&MyIlK_O5H2uuP5lU0zEP=G@D|M`Gq zYu*l61rvnkKeos-WuOxt@2LQR`1|{V{UyO3-i{EMyuAEx9TE~CvINK{&>fEo0J-~I z`J(}W@v--I_QX4Txby$kh(de#;+279PyY@9=c%v%FU9UY{}4r{3=)9yguuX12oCo< zuD_&x@Ftl5b>rVk`-2G=mzXi$OC>VM>laqpSLwMNx z;xO)b9fUHFyaRS{c2I!IXiCH6p$M3y1XM;229wj2f@?xy8ftJ2btyTh+#enP4vTVLzdp*|+5PwYcY6Mg7J>10_QN=6dVApb|KeA{ z`QO-wBcNnAC1fPv|HQ2(gFr|~$dd~RE+MBT1N;Z;@ZWF-Av**4T^#?XSpF=LEAaR5 zU!_l;{Oj;w+{q`#n|w4>3~v@uP_V@7Ak@qProZLV1hBv7=rZI_PBZG1a-lzKLTlat z;2)y^j<7^;DxYHqq$Dw`g&wkhze*g_qNAiI!PN?B5v;TYv4T-)noM+O)#*cO8HCk}$RS`JC z&@cLtx0$QpOVsE0p$|w_^q8w7S<%{-kQ%E?W;rRj;yftld#@wcM zAs}oS4WRqVfpJ$m^`WuA~YLCPmQ%w0Aexw z9fJFx$}T`1_T?@rF5v0{u4!L9UZi~!fD_?%X9C6tIc&)t7%z4n3g%^0`og9RbL1< zstMe+Zjp-%ES|gLxZJM(uuYqbLy+zgZIqxXm=Rs8Q<*+u{}ws zW_yL>u}hIgc1B$A8G@9Eh%RI~u@Ki2wsN_A^m^Yo_xa_jA8(}(3MeYZh8yVXE`E*p zV)rvIbc?z=UJ${}aO33HlC1EumTYrsoY$v)SlYVrFw7GO9C<8(w8=poPo|1LG(N{C zVvrjHx)nZh70F19Vd5z)k?#B?Ph4-fn}SnaWxBz*K-`p6ru&$eM{;Y2Wp-{iA{_BLoPn z=W(Mb5chy7I{N7Q-H62aq$LhBy2J{JQi&^@@c10abVkFl{86DO$Z-7TZC?EVdOI~b zdc91Bw^1KQK7Uq%xh!yJdLVOh*cY-^nSM~y@HKd_aH|HL?TxC#czFhv^#dxIZE()5)042eK+2B;65kl z&@S#pUJl%sM$U7eU>ta9%wO{0by*D4rR$z8{N3FF{hc)dCvH05lk)R9*h^?==zU51 zFsSRH;&F9acmF`ob>xI&Rf&w$_%7r&;$J$K8*QZ|SRDk`kr))@0rKOnNQ#WcarwvH6u13f>L3e1(yMf<{=_3Fq*pgUy-f67j%&d+MiqwEhy9hyOz_Z6e zZD%};DBj!aZv{?0va%BT(q-?}cDb*0v(0tf)2sq;n%00FzZ>89!G4Zd<2+?4Uiq7INl>9TZrisqGs~S30_v7_MN#{Vf_{Y_9PRZ|Aq^S7&6y9E zKN2UN52Eo~PI!O%q47fb?PSPk!`sA*)a77s{A+^WDl=ai`(8?BCbO%o+n1O6Vhjzw ztF)3&4J?o?D*g9ECvx%()TN?yVVS7SlSog2wX~_;@9yInr$6egYo7J8q4V?z%p;>Z z1WivVDMo{QW#(lt;{LN7nHSci!f?GiL69+X2UV3`u?)KHGjzl3tZ8Ye)4S~e|Gi7I z;VJHBb0?ue?H@m0E?zka&VaCe3S~u?#wqzEg-b@%-e0(7RI~6Mt?V>B%S~y!(R;ZaK}1(xNzk_B#oLRc1j?uA^?@q6Vgjqev-g|Qr}}toM<(l#GhVVn z`sTGXAj`~m(zmR3nRyr@D+rRuKg9J(2i3S3Mq0{nK9A~gZZ>}=wACePx0Ik69%0gZ z?%JKfJ{9Zh(z383Y-ggQFJ7O`}l%GfSyt#X55f5-mB|0Y!R1nWw9Iejg zqE>5`S-s26O`9&9^nTJ{vP1)6EF@gE;o>|o&8Nx4H0~1Jm?ag#l`cY>D3gW4u%v|{ zPb}9j>9ej%8iS|tYtL`jTzi==PE;31PnK36L*{yv>cUfQe~s))bWpdcc7Eex(9

#I^*vDM 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
#I^*vDM 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 G5&r{PQoN}E literal 0 HcmV?d00001 diff --git a/Resources/options_transfer_over~ipad.png b/Resources/options_transfer_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..31bb2a738f583e09578a79607e8b61fd16e1281d GIT binary patch literal 4901 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 G5&r{PQoN}E literal 0 HcmV?d00001 diff --git a/Resources/pause_off_default_landscape~ipad.png b/Resources/pause_off_default_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..c7d17c13090e8ee3756d9c9c397c4d3f5e75cf82 GIT binary patch literal 3311 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 literal 0 HcmV?d00001 diff --git a/Resources/settings_default~ipad.png b/Resources/settings_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..0000e246510a4cfa68ef42cb4081ddc577dfa4a6 GIT binary patch literal 7145 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 literal 0 HcmV?d00001 diff --git a/Resources/settings_over_landscape~ipad.png b/Resources/settings_over_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..62cf3141d8def40f3059f1219755fb37c69b32bc GIT binary patch literal 7739 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 S#R~&akF2DkM7fx8;Qs@7e&Kfj literal 0 HcmV?d00001 diff --git a/Resources/settings_over~ipad.png b/Resources/settings_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..0e93432ee5a28c7fba066c6748c41b5bf7cc6193 GIT binary patch literal 7310 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 literal 0 HcmV?d00001 diff --git a/Resources/settings_selected_landscape~ipad.png b/Resources/settings_selected_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..de988d97a94985916169952e27341c5814476ab4 GIT binary patch literal 7735 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 Wt@2~On|1@Zp`ogyQl?}b`u_mAi~3an literal 0 HcmV?d00001 diff --git a/Resources/settings_selected~ipad.png b/Resources/settings_selected~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..b1f1a10923d823e4d2c1f6fd5af329baee99f165 GIT binary patch literal 7147 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 OlA0P?8dT`H#{2`alL4~; literal 0 HcmV?d00001 diff --git a/Resources/speaker_off_default~ipad.png b/Resources/speaker_off_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6cbd7520deed1a11b0c04d5d05f84a9b6c5a8c GIT binary patch literal 5522 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 OlA0P?8dT`H#{2`alL4~; literal 0 HcmV?d00001 diff --git a/Resources/speaker_off_disabled_landscape~ipad.png b/Resources/speaker_off_disabled_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb0f62bb3d68189c10f4c7dc17aedb13358347d GIT binary patch literal 5126 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 literal 0 HcmV?d00001 diff --git a/Resources/speaker_off_disabled~ipad.png b/Resources/speaker_off_disabled~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb0f62bb3d68189c10f4c7dc17aedb13358347d GIT binary patch literal 5126 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 literal 0 HcmV?d00001 diff --git a/Resources/speaker_off_over_landscape~ipad.png b/Resources/speaker_off_over_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..b2f3a9316a373d96f422160748228036de114930 GIT binary patch literal 5452 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 N>g!z7uGG2{`Ck^~Qn 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 literal 0 HcmV?d00001 diff --git a/Resources/speaker_on_default~ipad.png b/Resources/speaker_on_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..120aa0058db857295419dcb3c57e432f6db5f4f6 GIT binary patch literal 4610 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 literal 0 HcmV?d00001 diff --git a/Resources/speaker_on_disabled_landscape~ipad.png b/Resources/speaker_on_disabled_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..6fa3140872c861affcace29292fa36340b2f33cd GIT binary patch literal 4312 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 F{{fD8cE11s literal 0 HcmV?d00001 diff --git a/Resources/speaker_on_disabled~ipad.png b/Resources/speaker_on_disabled~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..6fa3140872c861affcace29292fa36340b2f33cd GIT binary patch literal 4312 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 F{{fD8cE11s literal 0 HcmV?d00001 diff --git a/Resources/speaker_on_over_landscape~ipad.png b/Resources/speaker_on_over_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..bb82775843b9c4d6c984b9d10b7447f0980ace39 GIT binary patch literal 4532 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 VS^Ge?Fo*w9%+Xe;aw9kL{{Tu$*+&2X literal 0 HcmV?d00001 diff --git a/Resources/speaker_on_over~ipad.png b/Resources/speaker_on_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..bb82775843b9c4d6c984b9d10b7447f0980ace39 GIT binary patch literal 4532 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 VS^Ge?Fo*w9%+Xe;aw9kL{{Tu$*+&2X literal 0 HcmV?d00001 diff --git a/Resources/statebar_background_landscape~ipad.png b/Resources/statebar_background_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..3cef78053ad4a64d0ef51953d08033ed9be14cd2 GIT binary patch literal 1296 zcmd^8y>HV%6u*Ly+NvGc_>@lWO6)twu@kGIIR2oKNL$h%BC+7wm&9uAGxmkJT`IaE zAt5FfMrOo_1Of?l;ScBl6AK#>3lkG(Cn*e72Ua}Xz4!dy?|t0wJ>FQmxj27m9ssb| zT(#N&%yJQkvuF5OeiAwSy2$J<+oU}h% z)qG*)I$X|l4iFON!Ytg0Qa!5+1+LEJ+$;&OaADhZVO&(VwE<0<5LgjW$wMlFDi(2B z(KPKElo3V}k|ivcu%?$~9U(aR1fDJNdwSb)Cb_s)7Y2;Qx+IN8BXLv~Y0{T)tyar1 zWVysWO6hLI+^iI(OH%}kq+SxlET9q05#231WOad8I&LA1TdiZ@D4h(7k4(zkSi&Nb z!Z7cv@J?Bq{3+u^@3gZU6RAy7I!rwN9=)Y$FrVG&iE>9?jlP}){88K;i+aP5M67Am z1^!3$17CME&B0hxkR~IwigDFZOb21xFztp?Mb#pwq-+BO-CtXY-7W)6%$vh zPD53+vQe4FHlviekw>O^1D6~(eutWNqiRLhd(8Yhw|R}EE|#QOg-Gl>@?<>dH_ zEK?I_U@jh0pDV}9Ln6L0311EIYV$GxGdG%+(aFAi|BTNAv~c+P&W07vh@o9Bnder{^oYu2mA{e$0f C&pQbK literal 0 HcmV?d00001 diff --git a/Resources/statebar_background~ipad.png b/Resources/statebar_background~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ba49f1080c58d9367b28c7a24e9ae758d9b47b GIT binary patch literal 1358 zcmb_cPiP!f7=KAfZ8r_%qSPK_m_n-H&b&7}J3BjMEweMbcEL@;W@-0ON+vUJlOdUT z)0r1{vx+RG9_*nKhT3Yd9h6vCH10 zd1?S=y?b^b?#Qw+=3<{cinC@DcRj!%t=I*T-AJDA8Bi-{Q6AbTqd-kZNH42a8KRPD zm5Qnk^#R8)EV6YiqpD@AoG}q9A=50W7Si={QB!jnGdsXm!h|}ZiwALi7PpTrJriqK zF?J}4>x8TgCSZPrP?D^WNU#>NLe+8okn8+;4yv_r?7xY!P5BRoohZ*Ph9z{RhW4Dt)0cO-Zgh&$GZr3o1nOEIrdWwIiEFt83V29F4+5-r*ibWt?p^*rAMD{A2}9WUmT7ZLen#K z|M;YH0f38@3D70yz{t+W?nwZqy3WYlg_(!v-yIKsZKkIG4gJ5^^{e+T@m}oS{EGAK Yelxy*XRLE`|L!tZE2UZcMse}-6Oi9^nE(I) literal 0 HcmV?d00001 diff --git a/Resources/transfer_call_default~ipad.png b/Resources/transfer_call_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..cd2b3579c5d2bb1e312fd2c9299f471a48041cd8 GIT binary patch literal 7533 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 MsA{RyK&;>XA6Wl-cK`qY literal 0 HcmV?d00001 diff --git a/Resources/transfer_call_disabled~ipad.png b/Resources/transfer_call_disabled~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..948d87cd208f23cc629dc4707394588cfd2015a9 GIT binary patch literal 2974 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 literal 0 HcmV?d00001 diff --git a/Resources/transfer_call_over~ipad.png b/Resources/transfer_call_over~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..94a1faa9fec7d50ea81c371d50012c228aa64914 GIT binary patch literal 5436 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 M4FmNWRi~K$0g^s#Z2$lO literal 0 HcmV?d00001 diff --git a/Resources/transfer_default~ipad.png b/Resources/transfer_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..2f5813ee1305f579165a41f58202244325054e7b GIT binary patch literal 8160 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%0AHinh*>J+QPUr@Ox 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 C(n_WP literal 0 HcmV?d00001 diff --git a/Resources/video_off_default_landscape~ipad.png b/Resources/video_off_default_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..eacab0085ab704435db3273a60ca307f5b8473c6 GIT binary patch literal 5129 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 literal 0 HcmV?d00001 diff --git a/Resources/video_off_default~ipad.png b/Resources/video_off_default~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..eacab0085ab704435db3273a60ca307f5b8473c6 GIT binary patch literal 5129 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 literal 0 HcmV?d00001 diff --git a/Resources/video_off_disabled_landscape~ipad.png b/Resources/video_off_disabled_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..327a67cd4ec2fc343943a93bc5ddd88fccb8e29b GIT binary patch literal 4815 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 D`(IsA literal 0 HcmV?d00001 diff --git a/Resources/video_off_disabled~ipad.png b/Resources/video_off_disabled~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..327a67cd4ec2fc343943a93bc5ddd88fccb8e29b GIT binary patch literal 4815 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 D`(IsA literal 0 HcmV?d00001 diff --git a/Resources/video_off_over_landscape~ipad.png b/Resources/video_off_over_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..5b9598b10674ee30cd8d94d3b80d48a589a1a9fe GIT binary patch literal 5108 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 TpS;H#zw(x*)}&&h*MIJmO9q)vv!{{0LpV(| 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 literal 0 HcmV?d00001 diff --git a/Resources/video_on_disabled~ipad.png b/Resources/video_on_disabled~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..35c27a72a944fa05a0e5c8d323fa80143bb0ca16 GIT binary patch literal 3987 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 literal 0 HcmV?d00001 diff --git a/Resources/video_on_over_landscape~ipad.png b/Resources/video_on_over_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..3d04d54237f5fbf7f4dbf88ca34d73aadfd986ad GIT binary patch literal 4127 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 Date: Mon, 30 Jul 2012 18:38:33 +0200 Subject: [PATCH 090/397] Fix bounce animation on screen rotation --- Classes/ChatRoomViewController.m | 1 + Classes/LinphoneUI/UIMainBar.m | 90 +++++++++++++++++++++----------- 2 files changed, 61 insertions(+), 30 deletions(-) diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 21ca2433b..e68a0e096 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -145,6 +145,7 @@ static UICompositeViewDescription *compositeDescription = nil; [remoteAddress release]; } remoteAddress = [aRemoteAddress copy]; + [messageField setText:@""]; [tableController setRemoteAddress: remoteAddress]; [self update]; } diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index f875e05cd..31c482d80 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -73,7 +73,7 @@ selector:@selector(textReceived:) name:@"LinphoneTextReceived" object:nil]; - [self update]; + [self update:FALSE]; } - (void)viewWillDisappear:(BOOL)animated { @@ -107,21 +107,36 @@ object:nil]; } +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + // Force the animations + [[self.view layer] removeAllAnimations]; + [historyNotificationView.layer setTransform:CATransform3DIdentity]; + [chatNotificationView.layer setTransform:CATransform3DIdentity]; +} + +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { + [chatNotificationView setHidden:TRUE]; + [historyNotificationView setHidden:TRUE]; + [self update:FALSE]; +} + #pragma mark - Event Functions - (void)applicationWillEnterForeground:(NSNotification*)notif { // Force the animations [[self.view layer] removeAllAnimations]; + [historyNotificationView.layer setTransform:CATransform3DIdentity]; + [chatNotificationView.layer setTransform:CATransform3DIdentity]; [chatNotificationView setHidden:TRUE]; [historyNotificationView setHidden:TRUE]; - [self update]; + [self update:FALSE]; } -- (void)callUpdate:(NSNotification*)notif { +- (void)callUpdate:(NSNotification*)notif { //LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; //LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; - [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; + [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc]) appear:TRUE]; } - (void)changeViewEvent:(NSNotification*)notif { @@ -131,93 +146,108 @@ } - (void)textReceived:(NSNotification*)notif { - [self updateUnreadMessage:[ChatModel unreadMessages]]; + [self updateUnreadMessage:[ChatModel unreadMessages] appear:TRUE]; } #pragma mark - -- (void)update { +- (void)update:(BOOL)appear{ [self updateView:[[PhoneMainView instance] firstView]]; if([LinphoneManager isLcReady]) { - [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc])]; + [self updateMissedCall:linphone_core_get_missed_calls_count([LinphoneManager getLc]) appear:appear]; } else { - [self updateMissedCall:0]; + [self updateMissedCall:0 appear:TRUE]; } - [self updateUnreadMessage:[ChatModel unreadMessages]]; + [self updateUnreadMessage:[ChatModel unreadMessages] appear:appear]; } -- (void)updateUnreadMessage:(int)unreadMessage{ +- (void)updateUnreadMessage:(int)unreadMessage appear:(BOOL)appear{ if (unreadMessage > 0) { if([chatNotificationView isHidden]) { [chatNotificationView setHidden:FALSE]; - [self appearAnimation:@"Appear" target:chatNotificationView completion:^(BOOL finished){ + if(appear) { + [self appearAnimation:@"Appear" target:chatNotificationView completion:^(BOOL finished){ + [self startBounceAnimation:@"Bounce" target:chatNotificationView]; + }]; + } else { [self startBounceAnimation:@"Bounce" target:chatNotificationView]; - }]; + } } [chatNotificationLabel setText:[NSString stringWithFormat:@"%i", unreadMessage]]; } else { if(![chatNotificationView isHidden]) { [self stopBounceAnimation:@"Bounce" target:chatNotificationView]; - [self disappearAnimation:@"Disappear" target:chatNotificationView completion:^(BOOL finished){ + if(appear) { + [self disappearAnimation:@"Disappear" target:chatNotificationView completion:^(BOOL finished){ + [chatNotificationView setHidden:TRUE]; + }]; + } else { [chatNotificationView setHidden:TRUE]; - }]; + } } } } -- (void)updateMissedCall:(int)missedCall{ +- (void)updateMissedCall:(int)missedCall appear:(BOOL)appear{ if (missedCall > 0) { if([historyNotificationView isHidden]) { [historyNotificationView setHidden:FALSE]; - [self appearAnimation:@"Appear" target:historyNotificationView completion:^(BOOL finished){ - [self startBounceAnimation:@"Bounce" target:historyNotificationView]; - }]; + if(appear) { + [self appearAnimation:@"Appear" target:historyNotificationView completion:^(BOOL finished){ + [self startBounceAnimation:@"Bounce" target:historyNotificationView]; + }]; + } else { + [self startBounceAnimation:@"Bounce" target:chatNotificationView]; + } } [historyNotificationLabel setText:[NSString stringWithFormat:@"%i", missedCall]]; } else { if(![historyNotificationView isHidden]) { [self stopBounceAnimation:@"Bounce" target:historyNotificationView]; - [self disappearAnimation:@"Disappear" target:historyNotificationView completion:^(BOOL finished){ - [historyNotificationView setHidden:TRUE]; - } - ]; + if(appear) { + [self disappearAnimation:@"Disappear" target:historyNotificationView completion:^(BOOL finished){ + + }]; + } else { + [historyNotificationView setHidden:TRUE]; + } } } } - (void)appearAnimation:(NSString*)animationID target:(UIView*)target completion:(void (^)(BOOL finished))completion { - target.transform = CGAffineTransformMakeScale(0.01f, 0.01f); + target.layer.transform = CATransform3DMakeScale(0.01f, 0.01f, 1.0f); [UIView animateWithDuration:0.4 delay:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction animations:^{ - target.transform = CGAffineTransformIdentity; + target.layer.transform = CATransform3DIdentity; } completion:completion]; } - (void)disappearAnimation:(NSString*)animationID target:(UIView*)target completion:(void (^)(BOOL finished))completion { - CGAffineTransform startCGA = [target transform]; + CATransform3D startCGA = target.layer.transform; [UIView animateWithDuration:0.4 delay:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionAllowUserInteraction animations:^{ - target.transform = CGAffineTransformConcat(startCGA, CGAffineTransformMakeScale(0.01f, 0.01f)); + target.layer.transform = CATransform3DConcat(startCGA, CATransform3DMakeScale(0.01f, 0.01f, 1.0f)); } completion:completion]; } - (void)startBounceAnimation:(NSString *)animationID target:(UIView *)target { - CGAffineTransform startCGA = [target transform]; + CATransform3D startCGA = target.layer.transform; [UIView animateWithDuration: 0.3 delay: 0 options: UIViewAnimationOptionRepeat | - UIViewAnimationOptionAutoreverse | + UIViewAnimationOptionAutoreverse | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionCurveEaseIn animations:^{ - [target setTransform: CGAffineTransformConcat(startCGA, CGAffineTransformMakeTranslation(0, 8))]; + target.layer.transform = CATransform3DConcat(startCGA, CATransform3DMakeTranslation(0, 8, 0)); } completion:^(BOOL finished){ }]; @@ -232,7 +262,7 @@ // Reset missed call if([view equal:[HistoryViewController compositeViewDescription]]) { linphone_core_reset_missed_calls_count([LinphoneManager getLc]); - [self updateMissedCall:0]; + [self updateMissedCall:0 appear:FALSE]; } // Update buttons From 57879a4b21321a17bf70141fb49dc4587c0d439b Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 31 Jul 2012 10:26:31 +0200 Subject: [PATCH 091/397] add godaddy root ca --- Resources/rootca.pem | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Resources/rootca.pem b/Resources/rootca.pem index cb25772cd..16f4fe95b 100644 --- a/Resources/rootca.pem +++ b/Resources/rootca.pem @@ -3963,3 +3963,27 @@ IR9NmXmd4c8nnxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSy i6mx5O+aGtA9aZnuqCij4Tyz8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQ O+7ETPTsJ3xCwnR8gooJybQDJbw= -----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh +MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE +YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 +MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo +ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg +MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN +ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA +PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w +wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi +EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY +avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ +YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE +sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h +/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 +IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy +OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P +TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER +dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf +ReYNnyicsbkqWletNw+vHX/bvZ8= +-----END CERTIFICATE----- From af863e6e8eb374a165e4bf386a3b01a20df203bf Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 31 Jul 2012 11:24:04 +0200 Subject: [PATCH 092/397] Continue iPad work Clean & fix memory leaks --- Classes/ChatRoomViewController.m | 2 +- Classes/ChatViewController.m | 2 +- Classes/ContactDetailsLabelViewController.h | 11 +- Classes/ContactDetailsLabelViewController.m | 46 ++++- Classes/ContactDetailsLabelViewController.xib | 3 +- Classes/ContactDetailsTableViewController.h | 3 +- Classes/ContactDetailsTableViewController.m | 58 +++--- Classes/ContactDetailsViewController.m | 15 +- Classes/ContactsViewController.m | 2 +- Classes/HistoryDetailsViewController.m | 2 +- Classes/HistoryViewController.m | 2 +- Classes/IncomingCallViewController.h | 19 +- Classes/IncomingCallViewController.m | 55 ++++-- Classes/IncomingCallViewController.xib | 166 ++++++++---------- Classes/LinphoneCoreSettingsStore.m | 11 +- Classes/LinphoneManager.m | 3 +- Classes/LinphoneUI/UIMainBar.m | 2 +- Classes/LinphoneUI/UIModalViewController.h | 39 ---- Classes/LinphoneUI/UIModalViewController.m | 90 ---------- Classes/LinphoneUI/UIView+ModalStack.h | 29 --- Classes/LinphoneUI/UIView+ModalStack.m | 49 ------ Classes/PhoneMainView.h | 4 +- Classes/PhoneMainView.m | 38 ++-- Classes/SettingsViewController.m | 2 +- linphone.xcodeproj/project.pbxproj | 16 -- 25 files changed, 258 insertions(+), 411 deletions(-) delete mode 100644 Classes/LinphoneUI/UIModalViewController.h delete mode 100644 Classes/LinphoneUI/UIModalViewController.m delete mode 100644 Classes/LinphoneUI/UIView+ModalStack.h delete mode 100644 Classes/LinphoneUI/UIView+ModalStack.m diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index e68a0e096..8dd06a482 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -74,7 +74,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index 390b91d5d..ac91c6d5b 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -93,7 +93,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar: @"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/Classes/ContactDetailsLabelViewController.h b/Classes/ContactDetailsLabelViewController.h index cefe72273..f67e4a253 100644 --- a/Classes/ContactDetailsLabelViewController.h +++ b/Classes/ContactDetailsLabelViewController.h @@ -18,18 +18,25 @@ */ #import +#import "UICompositeViewController.h" -#import "UIModalViewController.h" +@protocol ContactDetailsLabelViewDelegate -@interface ContactDetailsLabelViewController : UIModalViewController { +- (void)changeContactDetailsLabel:(NSString*)label; + +@end + +@interface ContactDetailsLabelViewController : UIViewController { NSDictionary *dataList; UITableView *tableView; NSString *selectedData; + id delegate; } @property (nonatomic, copy) NSString *selectedData; @property (nonatomic, retain) NSDictionary *dataList; @property (nonatomic, retain) IBOutlet UITableView *tableView; +@property (nonatomic, retain) id delegate; - (IBAction)onBackClick:(id)event; diff --git a/Classes/ContactDetailsLabelViewController.m b/Classes/ContactDetailsLabelViewController.m index 81cb0ec1c..be5a95f12 100644 --- a/Classes/ContactDetailsLabelViewController.m +++ b/Classes/ContactDetailsLabelViewController.m @@ -21,12 +21,26 @@ #import "UACellBackgroundView.h" #import "UILinphone.h" +#import "PhoneMainView.h" @implementation ContactDetailsLabelViewController @synthesize dataList; @synthesize tableView; @synthesize selectedData; +@synthesize delegate; + + +#pragma mark - Lifecycle Functions + +- (void)dealloc { + [selectedData release]; + [dataList release]; + [tableView release]; + [delegate release]; + + [super dealloc]; +} #pragma mark - ViewController Functions @@ -37,6 +51,34 @@ } +#pragma mark - UICompositeViewDelegate Functions + +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"ContactDetailsLabel" + content:@"ContactDetailsLabelViewController" + stateBar:nil + stateBarEnabled:false + tabBar:@"UIMainBar" + tabBarEnabled:true + fullscreen:false + landscapeMode:true + portraitMode:true]; + } + return compositeDescription; +} + + +#pragma mark - + +- (void)dismiss { + if([[[PhoneMainView instance] currentView] equal:[ContactDetailsLabelViewController compositeViewDescription]]) { + [[PhoneMainView instance] popCurrentView]; + } +} + #pragma mark - Property Functions - (void)setDataList:(NSDictionary *)adatalist { @@ -56,6 +98,7 @@ [tableView reloadData]; } + #pragma mark - UITableViewDataSource Functions - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { @@ -90,7 +133,8 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { NSString* key = [[dataList allKeys] objectAtIndex:[indexPath row]]; [self setSelectedData:key]; - [self dismiss:key]; + [delegate changeContactDetailsLabel:key]; + [self dismiss]; } diff --git a/Classes/ContactDetailsLabelViewController.xib b/Classes/ContactDetailsLabelViewController.xib index 8c0a5eb90..838b54351 100644 --- a/Classes/ContactDetailsLabelViewController.xib +++ b/Classes/ContactDetailsLabelViewController.xib @@ -61,7 +61,7 @@ - 292 + 290 {320, 58} @@ -133,7 +133,6 @@ {{0, 59}, {320, 401}} - _NS:9 10 diff --git a/Classes/ContactDetailsTableViewController.h b/Classes/ContactDetailsTableViewController.h index e05883262..24407db95 100644 --- a/Classes/ContactDetailsTableViewController.h +++ b/Classes/ContactDetailsTableViewController.h @@ -24,11 +24,10 @@ #import "UIContactDetailsHeader.h" #import "UIContactDetailsFooter.h" -@interface ContactDetailsTableViewController : UITableViewController { +@interface ContactDetailsTableViewController : UITableViewController { @private ABRecordRef contact; NSMutableArray *dataCache; - ContactDetailsLabelViewController *contactDetailsLabelViewController; NSMutableArray *labelArray; NSIndexPath *editingIndexPath; @public diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 7b3e36aa1..44b404088 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -20,7 +20,6 @@ #import "ContactDetailsTableViewController.h" #import "PhoneMainView.h" #import "UIEditableTableViewCell.h" -#import "UIView+ModalStack.h" #import "UACellBackgroundView.h" #import "UILinphone.h" #import "OrderedDictionary.h" @@ -61,7 +60,6 @@ #pragma mark - Lifecycle Functions - (void)initContactDetailsTableViewController { - dataCache = [[NSMutableArray alloc] init]; labelArray = [[NSMutableArray alloc] initWithObjects: @"Linphone", @@ -70,6 +68,7 @@ [NSString stringWithString:(NSString*)kABPersonPhoneMainLabel], nil]; headerController = [[UIContactDetailsHeader alloc] init]; footerController = [[UIContactDetailsFooter alloc] init]; + editingIndexPath = nil; } - (id)init { @@ -88,7 +87,13 @@ return self; } -- (void)dealloc { +- (void)dealloc { + if(contact != nil && ABRecordGetRecordID(contact) == kABRecordInvalidID) { + CFRelease(contact); + } + if(editingIndexPath != nil) { + [editingIndexPath release]; + } [labelArray release]; [dataCache release]; [headerController release]; @@ -105,27 +110,8 @@ [self.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 } -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - if(contactDetailsLabelViewController != nil) { - [[[self view] superview] removeModalView:[contactDetailsLabelViewController view]]; - [editingIndexPath release]; - editingIndexPath = nil; - [contactDetailsLabelViewController release]; - contactDetailsLabelViewController = nil; - } -} - - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; - if(contact != nil && ABRecordGetRecordID(contact) == kABRecordInvalidID) { - CFRelease(contact); - } - contact = nil; } @@ -344,6 +330,9 @@ #pragma mark - Property Functions - (void)setContact:(ABRecordRef)acontact { + if(contact != nil && ABRecordGetRecordID(contact) == kABRecordInvalidID) { + CFRelease(contact); + } self->contact = acontact; [self loadData]; } @@ -490,13 +479,16 @@ CFRelease(lMap); } if(key != nil) { - contactDetailsLabelViewController = [[ContactDetailsLabelViewController alloc] initWithNibName:@"ContactDetailsLabelViewController" - bundle:[NSBundle mainBundle]]; - [contactDetailsLabelViewController setSelectedData:key]; - [contactDetailsLabelViewController setDataList:[self getLocalizedLabels]]; - [contactDetailsLabelViewController setModalDelegate:self]; + if(editingIndexPath != nil) { + [editingIndexPath release]; + } editingIndexPath = [indexPath copy]; - [[[self view] superview] addModalView:[contactDetailsLabelViewController view]]; + ContactDetailsLabelViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactDetailsLabelViewController compositeViewDescription] push:TRUE], ContactDetailsLabelViewController); + if(controller != nil) { + [controller setDataList:[self getLocalizedLabels]]; + [controller setSelectedData:key]; + [controller setDelegate:self]; + } } } } @@ -604,11 +596,9 @@ } -#pragma mark - UIModalViewDeletage Functions +#pragma mark - ContactDetailsLabelDelegate Functions -- (void)modalViewDismiss:(UIModalViewController*)controller value:(id)value { - [[[self view]superview] removeModalView:[contactDetailsLabelViewController view]]; - contactDetailsLabelViewController = nil; +- (void)changeContactDetailsLabel:(NSString *)value { if(value != nil) { NSMutableArray *sectionDict = [dataCache objectAtIndex:[editingIndexPath section]]; Entry *entry = [sectionDict objectAtIndex:[editingIndexPath row]]; @@ -617,7 +607,7 @@ ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); CFRelease(lcMap); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); - ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)((NSString*)value), index); + ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)(value), index); ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); CFRelease(lMap); } else if([editingIndexPath section] == 1) { @@ -625,7 +615,7 @@ ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); CFRelease(lcMap); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); - ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)((NSString*)value), index); + ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)(value), index); ABRecordSetValue(contact, kABPersonInstantMessageProperty, lMap, nil); CFRelease(lMap); } diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 0c120384f..6a74878a9 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -141,6 +141,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)newContact { [LinphoneLogger logc:LinphoneLoggerLog format:"New contact"]; + self->contact = NULL; + [self resetData]; self->contact = ABPersonCreate(); [tableController setContact:self->contact]; [self enableEdit:FALSE]; @@ -149,6 +151,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)newContact:(NSString*)address { [LinphoneLogger logc:LinphoneLoggerLog format:"New contact"]; + self->contact = NULL; + [self resetData]; self->contact = ABPersonCreate(); [tableController setContact:self->contact]; [tableController addSipField:address]; @@ -158,6 +162,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)editContact:(ABRecordRef)acontact { [LinphoneLogger logc:LinphoneLoggerLog format:"Edit contact %p", acontact]; + self->contact = NULL; + [self resetData]; self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; [self enableEdit:FALSE]; @@ -166,6 +172,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)editContact:(ABRecordRef)acontact address:(NSString*)address { [LinphoneLogger logc:LinphoneLoggerLog format:"Edit contact %p", acontact]; + self->contact = NULL; + [self resetData]; self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; [tableController addSipField:address]; @@ -178,6 +186,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)setContact:(ABRecordRef)acontact { [LinphoneLogger logc:LinphoneLoggerLog format:"Set contact %p", acontact]; + self->contact = NULL; + [self resetData]; self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; [self disableEdit:FALSE]; @@ -211,9 +221,6 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [tableController viewWillDisappear:animated]; } - [self disableEdit:FALSE]; - self->contact = NULL; - [self resetData]; } - (void)viewWillAppear:(BOOL)animated { @@ -257,7 +264,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index c23b5967c..13b1eecdf 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -109,7 +109,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index 8dc60041e..bc171e708 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -69,7 +69,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 6db361946..92cb769b3 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -65,7 +65,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/Classes/IncomingCallViewController.h b/Classes/IncomingCallViewController.h index dbdbc41e0..cea938b97 100644 --- a/Classes/IncomingCallViewController.h +++ b/Classes/IncomingCallViewController.h @@ -19,26 +19,29 @@ #import -#import "UIModalViewController.h" - +#import "UICompositeViewController.h" #include "linphonecore.h" -typedef enum _IncomingCallStates { - IncomingCall_Accepted, - IncomingCall_Decline, - IncomingCall_Aborted -} IncomingCallStats; +@protocol IncomingCallViewDelegate -@interface IncomingCallViewController : UIModalViewController { +- (void)incomingCallAccepted:(LinphoneCall*)call; +- (void)incomingCallDeclined:(LinphoneCall*)call; +- (void)incomingCallAborted:(LinphoneCall*)call; + +@end + +@interface IncomingCallViewController : UIViewController { @private UILabel* addressLabel; UIImageView* avatarImage; LinphoneCall *call; + id delegate; } @property (nonatomic, retain) IBOutlet UILabel* addressLabel; @property (nonatomic, retain) IBOutlet UIImageView* avatarImage; @property (nonatomic, assign) LinphoneCall* call; +@property (nonatomic, retain) id delegate; - (IBAction)onAcceptClick:(id) event; - (IBAction)onDeclineClick:(id) event; diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 7553a0fbe..7ec92fa6b 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -20,13 +20,14 @@ #import "IncomingCallViewController.h" #import "LinphoneManager.h" #import "FastAddressBook.h" +#import "PhoneMainView.h" @implementation IncomingCallViewController @synthesize addressLabel; @synthesize avatarImage; @synthesize call; - +@synthesize delegate; #pragma mark - Lifecycle Functions @@ -37,6 +38,9 @@ - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [avatarImage release]; + [addressLabel release]; + [delegate release]; [super dealloc]; } @@ -50,7 +54,6 @@ selector:@selector(callUpdateEvent:) name:@"LinphoneCallUpdate" object:nil]; - [self callUpdate:call state:linphone_call_get_state(call)]; } - (void)viewWillDisappear:(BOOL)animated { @@ -62,6 +65,25 @@ } +#pragma mark - UICompositeViewDelegate Functions + +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"IncomingCall" + content:@"IncomingCallViewController" + stateBar:nil + stateBarEnabled:false + tabBar:nil + tabBarEnabled:false + fullscreen:false + landscapeMode:true + portraitMode:true]; + } + return compositeDescription; +} + #pragma mark - Event Functions @@ -76,16 +98,16 @@ - (void)callUpdate:(LinphoneCall *)acall state:(LinphoneCallState)astate { if(call == acall && (astate == LinphoneCallEnd || astate == LinphoneCallError)) { - [self dismiss: [NSNumber numberWithInt: IncomingCall_Aborted]]; + [delegate incomingCallAborted:call]; + [self dismiss]; } } -#pragma mark - Property Functions - -- (void)setCall:(LinphoneCall*)acall { - call = acall; - [self update]; +- (void)dismiss { + if([[[PhoneMainView instance] currentView] equal:[IncomingCallViewController compositeViewDescription]]) { + [[PhoneMainView instance] popCurrentView]; + } } - (void)update { @@ -131,21 +153,26 @@ [addressLabel setText:address]; } -- (LinphoneCall*) getCall { - return call; + +#pragma mark - Property Functions + +- (void)setCall:(LinphoneCall*)acall { + call = acall; + [self update]; + [self callUpdate:call state:linphone_call_get_state(call)]; } #pragma mark - Action Functions - (IBAction)onAcceptClick:(id)event { - linphone_core_accept_call([LinphoneManager getLc], call); - [self dismiss: [NSNumber numberWithInt:IncomingCall_Accepted]]; + [self dismiss]; + [delegate incomingCallAccepted:call]; } - (IBAction)onDeclineClick:(id)event { - linphone_core_terminate_call([LinphoneManager getLc], call); - [self dismiss: [NSNumber numberWithInt:IncomingCall_Decline]]; + [self dismiss]; + [delegate incomingCallDeclined:call]; } @end diff --git a/Classes/IncomingCallViewController.xib b/Classes/IncomingCallViewController.xib index b2de27e48..435a55df5 100644 --- a/Classes/IncomingCallViewController.xib +++ b/Classes/IncomingCallViewController.xib @@ -33,15 +33,15 @@ IBFirstResponder IBCocoaTouchFramework - + 274 - + 274 - {{0, 20}, {320, 460}} - + {320, 460} + _NS:9 @@ -56,12 +56,12 @@ - + 290 - 292 + 290 {{0, 49}, {320, 63}} @@ -76,7 +76,7 @@ - 292 + 290 {320, 68} @@ -4512,7 +4512,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 293 {{0, 96}, {320, 262}} @@ -4527,7 +4527,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 292 + 293 {{80, 113}, {160, 170}} @@ -4541,8 +4541,8 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - {{0, 20}, {320, 395}} - + {320, 395} + _NS:9 @@ -4550,7 +4550,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE IBCocoaTouchFramework - + 266 @@ -4591,11 +4591,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 3 MC41AA - + NSImage accept_over.png - + NSImage accept_default.png @@ -4615,6 +4615,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE {{160, 0}, {160, 77}} + _NS:9 NO @@ -4624,11 +4625,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 0 0 - + NSImage decline_over.png - + NSImage decline_default.png @@ -4636,41 +4637,26 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - {{0, 403}, {320, 77}} - + {{0, 383}, {320, 77}} + _NS:9 - - 1 - MCAxIDAuMTkxOTQ1NDc1NSAwAA - - NO + IBCocoaTouchFramework - {320, 480} + {320, 460} - - 3 - MAA - - NO + _NS:9 + IBCocoaTouchFramework - - - view - - - - 3 - avatarImage @@ -4687,6 +4673,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE 14 + + + view + + + + 26 + onDeclineClick: @@ -4726,55 +4720,32 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 1 - + 25 + - - + + - 4 - - - - - - - - tabBar - - - 5 - - - mask - - - 6 - - - declineButton - - - 7 - - - acceptButton + 22 + + + background 8 - - - - + + + + - + 21 @@ -4807,10 +4778,33 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE headerBackground - 22 - - - background + 4 + + + + + + + + tabBar + + + 5 + + + mask + + + 6 + + + declineButton + + + 7 + + + acceptButton @@ -4819,18 +4813,18 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -4838,13 +4832,13 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE - 24 + 30 IncomingCallViewController - UIModalViewController + UIViewController id id @@ -4878,14 +4872,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE ./Classes/IncomingCallViewController.h - - UIModalViewController - UIViewController - - IBProjectSource - ./Classes/UIModalViewController.h - - 0 diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index d75a6aefe..4790470b0 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -119,11 +119,12 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } } { - LinphoneAddress *parsed=linphone_core_get_primary_contact_parsed(lc); + LinphoneAddress *parsed = linphone_core_get_primary_contact_parsed(lc); if(parsed != NULL) { [self setString: linphone_address_get_display_name(parsed) forKey:@"primary_displayname_preference"]; [self setString: linphone_address_get_username(parsed) forKey:@"primary_username_preference"]; } + linphone_address_destroy(parsed); } { LCSipTransports tp; @@ -320,11 +321,11 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); // add username password LinphoneAddress *from = linphone_address_new(identity); LinphoneAuthInfo *info; - if (from !=0){ + if (from != 0){ info=linphone_auth_info_new(linphone_address_get_username(from),NULL,password,NULL,NULL); linphone_core_add_auth_info(lc,info); + linphone_address_destroy(from); } - linphone_address_destroy(from); // configure proxy entries linphone_proxy_config_set_identity(proxyCfg,identity); @@ -425,12 +426,14 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); // Primary contact NSString* displayname = [self stringForKey:@"primary_displayname_preference"]; NSString* username = [self stringForKey:@"primary_username_preference"]; - LinphoneAddress *parsed=linphone_core_get_primary_contact_parsed(lc); + LinphoneAddress *parsed = linphone_core_get_primary_contact_parsed(lc); if(parsed != NULL) { linphone_address_set_display_name(parsed,[displayname cStringUsingEncoding:[NSString defaultCStringEncoding]]); linphone_address_set_username(parsed,[username cStringUsingEncoding:[NSString defaultCStringEncoding]]); char *contact = linphone_address_as_string(parsed); linphone_core_set_primary_contact(lc, contact); + ms_free(contact); + linphone_address_destroy(parsed); } diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 4eb34c7fc..408fee075 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -837,8 +837,9 @@ static LinphoneCoreVTable linphonec_vtable = { if(transfer) { linphone_core_transfer_call([LinphoneManager getLc], linphone_core_get_current_call([LinphoneManager getLc]), normalizedUserName); } else { - linphone_core_invite_address_with_params([LinphoneManager getLc], linphoneAddress,lcallParams); + linphone_core_invite_address_with_params([LinphoneManager getLc], linphoneAddress, lcallParams); } + linphone_address_destroy(linphoneAddress); } linphone_call_params_destroy(lcallParams); } diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 31c482d80..ec2b88989 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -198,7 +198,7 @@ [self startBounceAnimation:@"Bounce" target:historyNotificationView]; }]; } else { - [self startBounceAnimation:@"Bounce" target:chatNotificationView]; + [self startBounceAnimation:@"Bounce" target:historyNotificationView]; } } [historyNotificationLabel setText:[NSString stringWithFormat:@"%i", missedCall]]; diff --git a/Classes/LinphoneUI/UIModalViewController.h b/Classes/LinphoneUI/UIModalViewController.h deleted file mode 100644 index 929414823..000000000 --- a/Classes/LinphoneUI/UIModalViewController.h +++ /dev/null @@ -1,39 +0,0 @@ -/* UIModalViewController.h - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import - -@class UIModalViewController; - -@protocol UIModalViewDelegate - -- (void)modalViewDismiss:(UIModalViewController*)controller value:(id)value; - -@end - -@interface UIModalViewController : UIViewController { - BOOL dismissed; - id modalDelegate; -} - -- (void)setModalDelegate:(id)delegate; -- (void)dismiss:(id)value; -- (void)dismiss; - -@end diff --git a/Classes/LinphoneUI/UIModalViewController.m b/Classes/LinphoneUI/UIModalViewController.m deleted file mode 100644 index dfda1b240..000000000 --- a/Classes/LinphoneUI/UIModalViewController.m +++ /dev/null @@ -1,90 +0,0 @@ -/* UIModalViewController.h - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import "UIModalViewController.h" - -@implementation UIModalViewController - -- (void)initUIModalViewController { - dismissed = FALSE; -} - -- (id)init { - self = [super init]; - if (self) { - [self initUIModalViewController]; - } - return self; -} - -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { - self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; - if (self) { - [self initUIModalViewController]; - } - return self; -} - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (self) { - [self initUIModalViewController]; - } - return self; -} - -- (void)hideView { - if([self.view superview] !=nil) { - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [self viewWillDisappear:NO]; - } - [self.view removeFromSuperview]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [self viewDidDisappear:NO]; - } - } -} - -- (void)dismiss:(id)value { - if(modalDelegate != nil) - [modalDelegate modalViewDismiss:self value:value]; - - if(!dismissed) { - [self hideView]; - dismissed = true; - [self autorelease]; - } -} - -- (void)dismiss{ - if(modalDelegate != nil) - [modalDelegate modalViewDismiss:self value:nil]; - - if(!dismissed) { - [self hideView]; - dismissed = true; - [self autorelease]; - } -} - -- (void)setModalDelegate:(id)delegate { - modalDelegate = delegate; -} - -@end diff --git a/Classes/LinphoneUI/UIView+ModalStack.h b/Classes/LinphoneUI/UIView+ModalStack.h deleted file mode 100644 index c036ad7ff..000000000 --- a/Classes/LinphoneUI/UIView+ModalStack.h +++ /dev/null @@ -1,29 +0,0 @@ -/* UIView+ModalStack.h - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import - -#import "UIModalViewController.h" - -@interface UIView (ModalStack) - -- (void)addModalView:(UIView*)view; -- (void)removeModalView:(UIView*)view; - -@end diff --git a/Classes/LinphoneUI/UIView+ModalStack.m b/Classes/LinphoneUI/UIView+ModalStack.m deleted file mode 100644 index 24170c292..000000000 --- a/Classes/LinphoneUI/UIView+ModalStack.m +++ /dev/null @@ -1,49 +0,0 @@ -/* UIView+ModalStack.m - * - * Copyright (C) 2012 Belledonne Comunications, Grenoble, France - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Library General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#import - -#import "UIView+ModalStack.h" - -@implementation UIView (ModalStack) - -- (void)addModalView:(UIView*)view { - CATransition* trans = [CATransition animation]; - [trans setType:kCATransitionFade]; - [trans setDuration:0.35]; - [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; - [trans setSubtype:kCATransitionFromRight]; - [self.layer addAnimation:trans forKey:@"Appear"]; - - [self addSubview:view]; - [self bringSubviewToFront:view]; -} - -- (void)removeModalView:(UIView*)view { - CATransition* trans = [CATransition animation]; - [trans setType:kCATransitionFade]; - [trans setDuration:0.35]; - [trans setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; - [trans setSubtype:kCATransitionFromRight]; - [self.layer addAnimation:trans forKey:@"Disappear"]; - - [view removeFromSuperview]; -} - -@end diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 7cc50ca26..36ffef4d5 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -21,7 +21,6 @@ #import "LinphoneManager.h" #import "UICompositeViewController.h" -#import "UIModalViewController.h" #import "FirstLoginViewController.h" #import "IncomingCallViewController.h" @@ -36,8 +35,9 @@ #import "SettingsViewController.h" #import "FirstLoginViewController.h" #import "WizardViewController.h" +#import "IncomingCallViewController.h" -@interface PhoneMainView : UIViewController { +@interface PhoneMainView : UIViewController { @private UICompositeViewController *mainViewController; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index f53928728..61f3a0dcf 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -22,7 +22,6 @@ #import "PhoneMainView.h" #import "Utils.h" -#import "UIView+ModalStack.h" static PhoneMainView* phoneMainViewInstance=nil; @@ -232,6 +231,11 @@ static PhoneMainView* phoneMainViewInstance=nil; bool canHideInCallView = (linphone_core_get_calls([LinphoneManager getLc]) == NULL); + // Don't handle call state during incoming call view + if([[self currentView] equal:[IncomingCallViewController compositeViewDescription]] && state != LinphoneCallError && state != LinphoneCallEnd) { + return; + } + switch (state) { case LinphoneCallIncomingReceived: { @@ -529,18 +533,12 @@ static PhoneMainView* phoneMainViewInstance=nil; [[UIApplication sharedApplication] presentLocalNotificationNow:appData->notification]; } - } else { - IncomingCallViewController *controller = [[IncomingCallViewController alloc] init]; - [controller setWantsFullScreenLayout:TRUE]; - [controller setCall:call]; - [controller setModalDelegate:self]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [controller viewWillAppear:NO]; - } - [[self view] addModalView:[controller view]]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [controller viewDidAppear:NO]; - } + } else { + IncomingCallViewController *controller = DYNAMIC_CAST([self changeCurrentView:[IncomingCallViewController compositeViewDescription] push:TRUE],IncomingCallViewController); + if(controller != nil) { + [controller setCall:call]; + [controller setDelegate:self]; + } } } @@ -599,11 +597,17 @@ static PhoneMainView* phoneMainViewInstance=nil; } -#pragma mark - Modal Functions +#pragma mark - IncomingCallDelegate Functions -- (void)modalViewDismiss:(UIModalViewController*)controller value:(id)value { - [controller setModalDelegate:nil]; - [[self view] removeModalView:[controller view]]; +- (void)incomingCallAborted:(LinphoneCall*)call { +} + +- (void)incomingCallAccepted:(LinphoneCall*)call { + linphone_core_accept_call([LinphoneManager getLc], call); +} + +- (void)incomingCallDeclined:(LinphoneCall*)call { + linphone_core_terminate_call([LinphoneManager getLc], call); } @end \ No newline at end of file diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index dc2f054c3..91ea51d15 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -345,7 +345,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar: @"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index a8ebc6802..7d3f16feb 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -670,8 +670,6 @@ D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */; }; - D378907515AC448A00BD776C /* UIView+ModalStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D378907415AC448A00BD776C /* UIView+ModalStack.m */; }; - D378907615AC448A00BD776C /* UIView+ModalStack.m in Sources */ = {isa = PBXBuildFile; fileRef = D378907415AC448A00BD776C /* UIView+ModalStack.m */; }; D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; D37B96B915A1A6F20005CCD2 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; }; D37C638E15AAD251009D0BAC /* contact_number_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638C15AAD251009D0BAC /* contact_number_over.png */; }; @@ -1061,8 +1059,6 @@ D3F26BF915986DAD005F9CAB /* history_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* history_ok_over.png */; }; D3F26BFC15987083005F9CAB /* header_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* header_incoming.png */; }; D3F34F301599B008005BE94F /* avatar_shadow.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* avatar_shadow.png */; }; - D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; - D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F34F341599C354005BE94F /* UIModalViewController.m */; }; D3F795D615A582810077328B /* ChatRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F795D415A582800077328B /* ChatRoomViewController.m */; }; D3F795D715A582810077328B /* ChatRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F795D415A582800077328B /* ChatRoomViewController.m */; }; D3F795D815A582810077328B /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F795D515A582800077328B /* ChatRoomViewController.xib */; }; @@ -1653,8 +1649,6 @@ D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsLabelViewController.h; sourceTree = ""; }; D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsLabelViewController.m; sourceTree = ""; }; D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactDetailsLabelViewController.xib; sourceTree = ""; }; - D378907415AC448A00BD776C /* UIView+ModalStack.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIView+ModalStack.m"; sourceTree = ""; }; - D378907715AC44A300BD776C /* UIView+ModalStack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIView+ModalStack.h"; sourceTree = ""; }; D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_default.png; path = Resources/call_state_delete_default.png; sourceTree = ""; }; D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_over.png; path = Resources/call_state_delete_over.png; sourceTree = ""; }; D37C638C15AAD251009D0BAC /* contact_number_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_number_over.png; path = Resources/contact_number_over.png; sourceTree = ""; }; @@ -1952,8 +1946,6 @@ D3F26BF615986DAD005F9CAB /* history_ok_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_ok_over.png; path = Resources/history_ok_over.png; sourceTree = ""; }; D3F26BFB15987083005F9CAB /* header_incoming.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = header_incoming.png; path = Resources/header_incoming.png; sourceTree = ""; }; D3F34F2F1599B008005BE94F /* avatar_shadow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = avatar_shadow.png; path = Resources/avatar_shadow.png; sourceTree = ""; }; - D3F34F331599C354005BE94F /* UIModalViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIModalViewController.h; sourceTree = ""; }; - D3F34F341599C354005BE94F /* UIModalViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIModalViewController.m; sourceTree = ""; }; D3F795D315A582800077328B /* ChatRoomViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatRoomViewController.h; sourceTree = ""; }; D3F795D415A582800077328B /* ChatRoomViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatRoomViewController.m; sourceTree = ""; }; D3F795D515A582800077328B /* ChatRoomViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ChatRoomViewController.xib; sourceTree = ""; }; @@ -2462,8 +2454,6 @@ D3A74E5B15C6922A001500B9 /* UIMainBar~ipad.xib */, 2214EBF112F86360002A5394 /* UIMicroButton.h */, 2214EBF212F86360002A5394 /* UIMicroButton.m */, - D3F34F331599C354005BE94F /* UIModalViewController.h */, - D3F34F341599C354005BE94F /* UIModalViewController.m */, D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */, D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */, 22968A5D12F875C600588287 /* UISpeakerButton.h */, @@ -2479,8 +2469,6 @@ D32460E5159D9AAD00BA7F3A /* UITransparentView.m */, 340751E5150F38FC00B89C47 /* UIVideoButton.h */, 340751E6150F38FD00B89C47 /* UIVideoButton.m */, - D378907715AC44A300BD776C /* UIView+ModalStack.h */, - D378907415AC448A00BD776C /* UIView+ModalStack.m */, ); path = LinphoneUI; sourceTree = ""; @@ -4223,7 +4211,6 @@ D3EA5411159853750037DC6B /* UIChatCell.m in Sources */, D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */, D31B4B21159876C0002E6C72 /* UICompositeViewController.m in Sources */, - D3F34F351599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5E159B3919002C6B02 /* InCallTableViewController.m in Sources */, D3211BB0159C4EF10098460B /* UIConferenceHeader.m in Sources */, D32460E6159D9AAD00BA7F3A /* UITransparentView.m in Sources */, @@ -4241,7 +4228,6 @@ D37C639B15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, D3C6526715AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */, D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, - D378907515AC448A00BD776C /* UIView+ModalStack.m in Sources */, D3E8F68615ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, C90FAA7915AF54E6002091CB /* HistoryDetailsViewController.m in Sources */, D3F9A9E215AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */, @@ -4318,7 +4304,6 @@ D3EA5412159853750037DC6B /* UIChatCell.m in Sources */, D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */, D31B4B22159876C0002E6C72 /* UICompositeViewController.m in Sources */, - D3F34F361599C354005BE94F /* UIModalViewController.m in Sources */, D31AAF5F159B3919002C6B02 /* InCallTableViewController.m in Sources */, D3211BB1159C4EF10098460B /* UIConferenceHeader.m in Sources */, D32460E7159D9AAD00BA7F3A /* UITransparentView.m in Sources */, @@ -4336,7 +4321,6 @@ D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, D3C6526815AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */, D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, - D378907615AC448A00BD776C /* UIView+ModalStack.m in Sources */, D3E8F68715ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, C90FAA7A15AF54E6002091CB /* HistoryDetailsViewController.m in Sources */, D3F9A9E315AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */, From 33edcdf2659d0eda529d90a90a9e317481e9a0a8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 31 Jul 2012 14:24:07 +0200 Subject: [PATCH 093/397] Improve rotation --- Classes/LinphoneApp.xib | 93 ++++++++++++++++++- Classes/LinphoneAppDelegate.m | 2 +- Classes/LinphoneCoreSettingsStore.m | 6 +- .../LinphoneUI/UICompositeViewController.m | 79 +++++++++++++--- Classes/PhoneMainView.m | 13 ++- Classes/PhoneMainView.xib | 2 +- Settings/InAppSettings.bundle/Advanced.plist | 20 +++- linphone-Info.plist | 14 +++ 8 files changed, 198 insertions(+), 31 deletions(-) diff --git a/Classes/LinphoneApp.xib b/Classes/LinphoneApp.xib index ea771f481..b446fd98d 100644 --- a/Classes/LinphoneApp.xib +++ b/Classes/LinphoneApp.xib @@ -41,6 +41,7 @@ {320, 480} + 3 MAA @@ -144,7 +145,97 @@ 16 - + + + + LinphoneAppDelegate + NSObject + + window + UIWindow + + + window + + window + UIWindow + + + + IBProjectSource + ./Classes/LinphoneAppDelegate.h + + + + PhoneMainView + UIViewController + + mainViewController + UICompositeViewController + + + mainViewController + + mainViewController + UICompositeViewController + + + + IBProjectSource + ./Classes/PhoneMainView.h + + + + TPMultiLayoutViewController + UIViewController + + UIView + UIView + + + + landscapeView + UIView + + + portraitView + UIView + + + + IBProjectSource + ./Classes/TPMultiLayoutViewController.h + + + + UICompositeViewController + TPMultiLayoutViewController + + UIView + UIView + UIView + + + + contentView + UIView + + + stateBarView + UIView + + + tabBarView + UIView + + + + IBProjectSource + ./Classes/UICompositeViewController.h + + + + 0 IBCocoaTouchFramework diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index ce49f55ce..6b9c27131 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -161,6 +161,7 @@ int __aeabi_idiv(int a, int b) { } - (void)setupUI { + if ([[LinphoneManager instance].settingsStore boolForKey:@"enable_first_login_view_preference"] == true) { // Change to fist login view [[PhoneMainView instance] changeCurrentView: [FirstLoginViewController compositeViewDescription]]; @@ -173,7 +174,6 @@ int __aeabi_idiv(int a, int b) { [[PhoneMainView instance] changeCurrentView: [WizardViewController compositeViewDescription]]; } } - [UIDevice currentDevice].batteryMonitoringEnabled = YES; } diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 4790470b0..23e303f35 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -177,7 +177,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } [self setString:val forKey:@"media_encryption_preference"]; } - [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","landscape_preference", 1) forKey:@"landscape_preference"]; + [self setString: lp_config_get_string(linphone_core_get_config(lc),"app","rotation_preference", "auto") forKey:@"rotation_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","enable_first_login_view_preference", 0) forKey:@"enable_first_login_view_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference", 0) forKey:@"debugenable_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference", 0) forKey:@"check_config_disable_preference"]; @@ -452,8 +452,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); BOOL firstloginview = [self boolForKey:@"enable_first_login_view_preference"]; lp_config_set_int(linphone_core_get_config(lc),"app","enable_first_login_view_preference", firstloginview); - BOOL landscape = [self boolForKey:@"landscape_preference"]; - lp_config_set_int(linphone_core_get_config(lc),"app","landscape_preference", landscape); + NSString *landscape = [self stringForKey:@"rotation_preference"]; + lp_config_set_string(linphone_core_get_config(lc),"app","rotation_preference", [landscape UTF8String]); BOOL debugmode = [self boolForKey:@"debugenable_preference"]; lp_config_set_int(linphone_core_get_config(lc),"app","debugenable_preference", debugmode); diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 8891fad2b..5deef5c71 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -148,12 +148,13 @@ [contentViewController viewWillAppear:animated]; [tabBarViewController viewWillAppear:animated]; [stateBarViewController viewWillAppear:animated]; - [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) - name:UIDeviceOrientationDidChangeNotification + name:UIDeviceOrientationDidChangeNotification object:nil]; + [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; + //currentOrientation = [UIDevice currentDevice].orientation; } - (void)viewDidAppear:(BOOL)animated { @@ -168,8 +169,8 @@ [contentViewController viewWillDisappear:animated]; [tabBarViewController viewWillDisappear:animated]; [stateBarViewController viewWillDisappear:animated]; - [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; + [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil]; @@ -211,15 +212,19 @@ } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - if(currentViewDescription != nil && [[LinphoneManager instance].settingsStore boolForKey:@"landscape_preference"]) { - if (UIInterfaceOrientationIsPortrait(interfaceOrientation) && [currentViewDescription portraitMode]) { + if(currentViewDescription != nil) { + NSString* rotationPreference = [[LinphoneManager instance].settingsStore objectForKey:@"rotation_preference"]; + if (UIInterfaceOrientationIsPortrait(interfaceOrientation) && [currentViewDescription portraitMode] && + ([rotationPreference isEqualToString:@"auto"] || [rotationPreference isEqualToString:@"portrait"])) { return YES; } - if (UIInterfaceOrientationIsLandscape(interfaceOrientation) && [currentViewDescription landscapeMode]) { + if (UIInterfaceOrientationIsLandscape(interfaceOrientation) && [currentViewDescription landscapeMode] && + ([rotationPreference isEqualToString:@"auto"] || [rotationPreference isEqualToString:@"landscape"])) { return YES; } + return NO; } - return NO; + return YES; } @@ -263,17 +268,63 @@ } - (UIInterfaceOrientation)getCorrectInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - if(currentViewDescription != nil && [[LinphoneManager instance].settingsStore boolForKey:@"landscape_preference"]) { - if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) { - if ([currentViewDescription portraitMode]) { - return interfaceOrientation; + if(currentViewDescription != nil) { + NSString* rotationPreference = [[LinphoneManager instance].settingsStore objectForKey:@"rotation_preference"]; + if([rotationPreference isEqualToString:@"auto"]) { + if(currentOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) { + if ([currentViewDescription portraitMode]) { + return interfaceOrientation; + } else { + return UIInterfaceOrientationLandscapeLeft; + } + } + if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) { + if ([currentViewDescription landscapeMode]) { + return interfaceOrientation; + } else { + return UIInterfaceOrientationPortrait; + } + } + } else if([rotationPreference isEqualToString:@"portrait"]) { + if ([currentViewDescription landscapeMode]) { + if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) { + if(currentOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + return interfaceOrientation; + } else { + if(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) { + if(currentOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + return [UIApplication sharedApplication].statusBarOrientation; + } else { + return UIInterfaceOrientationPortrait; + } + } } else { return UIInterfaceOrientationLandscapeLeft; } - } - if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) { + } else if([rotationPreference isEqualToString:@"landscape"]) { if ([currentViewDescription landscapeMode]) { - return interfaceOrientation; + if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) { + if(currentOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + return interfaceOrientation; + } else { + if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { + if(currentOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + return [UIApplication sharedApplication].statusBarOrientation; + } else { + return UIInterfaceOrientationLandscapeLeft; + } + } } else { return UIInterfaceOrientationPortrait; } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 61f3a0dcf..e81ec6860 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -85,11 +85,6 @@ static PhoneMainView* phoneMainViewInstance=nil; [super viewDidLoad]; [self.view addSubview: mainViewController.view]; - - if ([[UIDevice currentDevice].systemVersion doubleValue] >= 5.0) { - UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation]; - [self willRotateToInterfaceOrientation:interfaceOrientation duration:0.2f]; - } } - (void)viewWillAppear:(BOOL)animated { @@ -162,11 +157,14 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return [mainViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; + if(mainViewController != nil) { + return [mainViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; + } else { + return YES; + } } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; [mainViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; } @@ -178,6 +176,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { + NSLog(@"%d", fromInterfaceOrientation); [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; [mainViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; } diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index 119c7ab72..e569e57d7 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -180,7 +180,7 @@ - 216 + 217 diff --git a/Settings/InAppSettings.bundle/Advanced.plist b/Settings/InAppSettings.bundle/Advanced.plist index 6bec34682..13eecede9 100644 --- a/Settings/InAppSettings.bundle/Advanced.plist +++ b/Settings/InAppSettings.bundle/Advanced.plist @@ -16,13 +16,25 @@ DefaultValue - + auto Key - landscape_preference + rotation_preference Title - Landscape + Rotation + Titles + + Automatic + Portrait + Landscape + Type - PSToggleSwitchSpecifier + PSMultiValueSpecifier + Values + + auto + portrait + landscape + DefaultValue diff --git a/linphone-Info.plist b/linphone-Info.plist index 6fcc7adf1..9015e66a1 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -47,5 +47,19 @@ UIRequiresPersistentWiFi + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationPortrait + From 6eb424a5dfa67e810e0be7aa1c377e2f4e8d370a Mon Sep 17 00:00:00 2001 From: Jehan Monnier Date: Tue, 31 Jul 2012 16:26:51 +0200 Subject: [PATCH 094/397] fix IOS camera localized name issue Conflicts: Classes/LinphoneUI/LinphoneManager.m --- Classes/LinphoneManager.m | 4 ++-- submodules/linphone | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 408fee075..2086a32a3 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -47,8 +47,8 @@ extern void libmsamr_init(); #ifdef HAVE_X264 extern void libmsx264_init(); #endif -#define FRONT_CAM_NAME "AV Capture: Front Camera" -#define BACK_CAM_NAME "AV Capture: Back Camera" +#define FRONT_CAM_NAME "AV Capture: com.apple.avfoundation.avcapturedevice.built-in_video:1" /*"AV Capture: Front Camera"*/ +#define BACK_CAM_NAME "AV Capture: com.apple.avfoundation.avcapturedevice.built-in_video:0" /*"AV Capture: Back Camera"*/ #if defined (HAVE_SILK) extern void libmssilk_init(); diff --git a/submodules/linphone b/submodules/linphone index 14fc5446d..9a0097a97 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 14fc5446d03d5cf7a62e8884fa99fd7bbe175ecb +Subproject commit 9a0097a9748862b91448bb71c10c619e122e739a From 511cab00c65b9f9ffd7b328867a9578258279ea8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 1 Aug 2012 12:37:38 +0200 Subject: [PATCH 095/397] Fix chat scroll bug Fix background glitches when rotating the device Fix Contacts remove button bug --- Classes/ChatRoomTableViewController.m | 3 +- Classes/ChatRoomViewController.m | 33 +++- Classes/ChatRoomViewController.xib | 1 + Classes/ContactDetailsTableViewController.m | 1 + Classes/ContactDetailsViewController.m | 2 +- Classes/ContactDetailsViewController.xib | 10 +- Classes/ContactsTableViewController.m | 10 +- Classes/HistoryDetailsViewController.xib | 6 +- Classes/InCallViewController.m | 46 +++-- Classes/LinphoneApp.xib | 12 ++ Classes/LinphoneAppDelegate.h | 4 + Classes/LinphoneAppDelegate.m | 5 +- Classes/LinphoneUI/UICallBar.xib | 10 +- Classes/LinphoneUI/UIChatRoomCell.m | 56 +++--- Classes/LinphoneUI/UIChatRoomCell.xib | 24 ++- .../LinphoneUI/UICompositeViewController.m | 81 +++----- .../LinphoneUI/UICompositeViewController.xib | 4 - Classes/LinphoneUI/UILinphone.h | 2 +- Classes/LinphoneUI/UILinphone.m | 2 + Classes/LinphoneUI/UIMainBar.xib | 28 ++- Classes/LinphoneUI/UIMainBar~ipad.xib | 54 ++++- Classes/PhoneMainView.h | 1 + Classes/PhoneMainView.m | 49 ++++- Classes/PhoneMainView.xib | 2 +- .../TPKeyboardAvoidingScrollView.h | 17 -- .../TPKeyboardAvoidingScrollView.m | 186 ------------------ .../TPKeyboardAvoidingTableView.h | 16 -- .../TPKeyboardAvoidingTableView.m | 173 ---------------- linphone.xcodeproj/project.pbxproj | 24 --- 29 files changed, 287 insertions(+), 575 deletions(-) delete mode 100755 Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h delete mode 100755 Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m delete mode 100755 Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h delete mode 100755 Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index f208fc48e..75fd29cce 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -45,7 +45,8 @@ } } -#pragma mark - + +#pragma mark - - (void)loadData { if(data != nil) { diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 8dd06a482..acd316020 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -35,6 +35,7 @@ @synthesize footerView; @synthesize fieldBackgroundImage; + #pragma mark - Lifecycle Functions - (id)init { @@ -300,19 +301,33 @@ static UICompositeViewDescription *compositeDescription = nil; [UIView setAnimationDuration:duration]; [UIView setAnimationCurve:curve]; [UIView setAnimationBeginsFromCurrentState:TRUE]; + + if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { + int width = endFrame.size.height; + endFrame.size.height = endFrame.size.width; + endFrame.size.width = width; + } // Move view - CGRect frame = [[self view] frame]; - frame.origin.y = [self.view convertPoint:endFrame.origin fromView:nil].y - frame.size.height; - [[self view] setFrame:frame]; + { + CGRect frame = [[self view] frame]; + CGRect rect = [PhoneMainView instance].view.bounds; + CGPoint pos = {frame.size.width, frame.size.height}; + CGPoint gPos = [self.view convertPoint:pos toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; // Bypass IOS bug on landscape mode + frame.origin.y = (rect.size.height - gPos.y - endFrame.size.height); + if(frame.origin.y > 0) frame.origin.y = 0; + [[self view] setFrame:frame]; + } // Resize table view - CGPoint pos = {0, 0}; - CGPoint gPos = [[self.view superview] convertPoint:pos toView:self.view]; - CGRect tableFrame = [tableController.view frame]; - tableFrame.origin.y = gPos.y; - tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y; - [tableController.view setFrame:tableFrame]; + { + CGPoint pos = {0, 0}; + CGPoint gPos = [[self.view superview] convertPoint:pos toView:self.view]; + CGRect tableFrame = [tableController.view frame]; + tableFrame.origin.y = gPos.y; + tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y; + [tableController.view setFrame:tableFrame]; + } // Scroll int lastSection = [tableController.tableView numberOfSections] -1; diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib index a0595e88f..140f53cfe 100644 --- a/Classes/ChatRoomViewController.xib +++ b/Classes/ChatRoomViewController.xib @@ -253,6 +253,7 @@ {{250, 0}, {70, 59}} + _NS:9 NO diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 44b404088..cc6f57bc8 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -534,6 +534,7 @@ } [headerController setEditing:editing animated:animated]; + [footerController setEditing:editing animated:animated]; } - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 6a74878a9..dbf758904 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -57,6 +57,7 @@ #pragma mark - - (void)resetData { + [self disableEdit:FALSE]; if(contact == NULL) { ABAddressBookRevert(addressBook); return; @@ -190,7 +191,6 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf [self resetData]; self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); [tableController setContact:self->contact]; - [self disableEdit:FALSE]; } diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib index bd95658e7..939b1c99b 100644 --- a/Classes/ContactDetailsViewController.xib +++ b/Classes/ContactDetailsViewController.xib @@ -176,6 +176,7 @@ {{0, 59}, {320, 401}} + _NS:9 10 @@ -449,7 +450,6 @@ AAgACAAIAAEAAQABAAE UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - TPKeyboardAvoidingTableView com.apple.InterfaceBuilder.IBCocoaTouchPlugin ContactDetailsTableViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -530,14 +530,6 @@ AAgACAAIAAEAAQABAAE ./Classes/ContactDetailsViewController.h - - TPKeyboardAvoidingTableView - UITableView - - IBProjectSource - ./Classes/TPKeyboardAvoidingTableView.h - - UIToggleButton UIButton diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 918170d81..1ea4084ef 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -82,12 +82,16 @@ ABMultiValueRef lMap = ABRecordCopyValue((ABRecordRef)lPerson, kABPersonInstantMessageProperty); for(int i = 0; i < ABMultiValueGetCount(lMap); ++i) { CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); - if(CFDictionaryContainsKey(lDict, @"service")) { - if(CFStringCompare((CFStringRef)@"SIP", CFDictionaryGetValue(lDict, @"service"), kCFCompareCaseInsensitive) == 0) { + if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { + CFStringRef serviceKey = CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey); + if(CFStringCompare((CFStringRef)@"SIP", serviceKey, kCFCompareCaseInsensitive) == 0) { add = true; } } else { - add = true; + NSString* usernameKey = CFDictionaryGetValue(lDict, kABPersonInstantMessageUsernameKey); + if([usernameKey hasPrefix:@"sip:"]) { + add = true; + } } CFRelease(lDict); } diff --git a/Classes/HistoryDetailsViewController.xib b/Classes/HistoryDetailsViewController.xib index d22be8630..9b7dc34e8 100644 --- a/Classes/HistoryDetailsViewController.xib +++ b/Classes/HistoryDetailsViewController.xib @@ -413,8 +413,8 @@ - 269 - {{33, 273}, {255, 50}} + 293 + {{33, 323}, {255, 50}} _NS:9 @@ -610,10 +610,10 @@ - + diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 51a9a74ac..509d38038 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -302,34 +302,38 @@ static UICompositeViewDescription *compositeDescription = nil; hideControlsTimer = nil; } - // show controls - [UIView beginAnimations:nil context:nil]; - [UIView setAnimationDuration:0.3]; - [[PhoneMainView instance] showTabBar: true]; - [videoCameraSwitch setAlpha:1.0]; - [UIView commitAnimations]; - - // hide controls in 5 sec - hideControlsTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 - target:self - selector:@selector(hideControls:) - userInfo:nil - repeats:NO]; + if([[[PhoneMainView instance] currentView] equal:[InCallViewController compositeViewDescription]] && videoShown) { + // show controls + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:0.3]; + [[PhoneMainView instance] showTabBar: true]; + [videoCameraSwitch setAlpha:1.0]; + [UIView commitAnimations]; + + // hide controls in 5 sec + hideControlsTimer = [NSTimer scheduledTimerWithTimeInterval:5.0 + target:self + selector:@selector(hideControls:) + userInfo:nil + repeats:NO]; + } } - (void)hideControls:(id)sender { - [UIView beginAnimations:nil context:nil]; - [UIView setAnimationDuration:0.3]; - [videoCameraSwitch setAlpha:0.0]; - [UIView commitAnimations]; - - if([[[PhoneMainView instance] currentView] equal:[InCallViewController compositeViewDescription]] && videoShown) - [[PhoneMainView instance] showTabBar: false]; - if (hideControlsTimer) { [hideControlsTimer invalidate]; hideControlsTimer = nil; } + + if([[[PhoneMainView instance] currentView] equal:[InCallViewController compositeViewDescription]] && videoShown) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:0.3]; + [videoCameraSwitch setAlpha:0.0]; + [UIView commitAnimations]; + + + [[PhoneMainView instance] showTabBar: false]; + } } #ifdef TEST_VIDEO_VIEW_CHANGE diff --git a/Classes/LinphoneApp.xib b/Classes/LinphoneApp.xib index b446fd98d..d2f9903f2 100644 --- a/Classes/LinphoneApp.xib +++ b/Classes/LinphoneApp.xib @@ -42,6 +42,7 @@ {320, 480} + 3 MAA @@ -49,9 +50,11 @@ NO NO IBCocoaTouchFramework + YES YES + NO PhoneMainView 1 @@ -132,6 +135,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UILinphoneWindow com.apple.InterfaceBuilder.IBCocoaTouchPlugin LinphoneAppDelegate @@ -234,6 +238,14 @@ ./Classes/UICompositeViewController.h + + UILinphoneWindow + UIWindow + + IBProjectSource + ./Classes/UILinphoneWindow.h + + 0 diff --git a/Classes/LinphoneAppDelegate.h b/Classes/LinphoneAppDelegate.h index 767eb32ab..a17a464fd 100644 --- a/Classes/LinphoneAppDelegate.h +++ b/Classes/LinphoneAppDelegate.h @@ -23,6 +23,10 @@ #import "LinphoneCoreSettingsStore.h" +@interface UILinphoneWindow : UIWindow + +@end + @interface LinphoneAppDelegate : NSObject { UIWindow *window; CTCallCenter* callCenter; diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 6b9c27131..58a6a2356 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -38,6 +38,10 @@ int __aeabi_idiv(int a, int b) { } #endif +@implementation UILinphoneWindow + +@end + @implementation LinphoneAppDelegate @synthesize window; @@ -161,7 +165,6 @@ int __aeabi_idiv(int a, int b) { } - (void)setupUI { - if ([[LinphoneManager instance].settingsStore boolForKey:@"enable_first_login_view_preference"] == true) { // Change to fist login view [[PhoneMainView instance] changeCurrentView: [FirstLoginViewController compositeViewDescription]]; diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/UICallBar.xib index 9b3817fa3..98b9cd14d 100644 --- a/Classes/LinphoneUI/UICallBar.xib +++ b/Classes/LinphoneUI/UICallBar.xib @@ -497,10 +497,10 @@ 290 - {{0, 100}, {320, 2000}} + {{0, 135}, {320, 2000}} - + _NS:9 1 @@ -714,7 +714,7 @@ {{0, 67}, {105, 68}} - + _NS:9 NO 25 @@ -774,7 +774,7 @@ {{215, 67}, {105, 68}} - + _NS:9 NO 27 @@ -1193,7 +1193,7 @@ 290 - {{0, 50}, {480, 2000}} + {{0, 82}, {480, 2000}} diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index edb6671ce..44b261a31 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -117,35 +117,6 @@ static UIFont *CELL_FONT = nil; } } -- (void)resizeContent { - if(chat != nil) { - // Resize Content - CGRect contentFrame = [contentView frame]; - contentFrame.size = [UIChatRoomCell viewSize:[chat message] width:[self frame].size.width]; - if([[chat direction] intValue]) { // Inverted - contentFrame.origin.x = 0.0f; - contentFrame.origin.y = 0.0f; - } else { - contentFrame.origin.x = [self frame].size.width - contentFrame.size.width; - contentFrame.origin.y = 0.0f; - } - [contentView setFrame:contentFrame]; - - CGRect messageFrame = [messageView frame]; - messageFrame.origin.y = ([contentView frame].size.height - messageFrame.size.height)/2; - if([[chat direction] intValue]) { // Inverted - [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size - forNinePatchNamed:@"chat_bubble_incoming"]]; - messageFrame.origin.y += 5; - } else { - [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size - forNinePatchNamed:@"chat_bubble_outgoing"]]; - messageFrame.origin.y -= 5; - } - [messageView setFrame:messageFrame]; - } -} - + (CGSize)viewSize:(NSString*)message width:(int)width { if(CELL_FONT == nil) { CELL_FONT = [UIFont systemFontOfSize:CELL_FONT_SIZE]; @@ -171,7 +142,32 @@ static UIFont *CELL_FONT = nil; - (void)layoutSubviews { [super layoutSubviews]; - [self resizeContent]; + if(chat != nil) { + // Resize Content + CGRect contentFrame = [contentView frame]; + contentFrame.size = [UIChatRoomCell viewSize:[chat message] width:[self frame].size.width]; + if([[chat direction] intValue]) { // Inverted + contentFrame.origin.x = 0.0f; + contentFrame.origin.y = 0.0f; + } else { + contentFrame.origin.x = [self frame].size.width - contentFrame.size.width; + contentFrame.origin.y = 0.0f; + } + [contentView setFrame:contentFrame]; + + CGRect messageFrame = [messageView frame]; + messageFrame.origin.y = ([contentView frame].size.height - messageFrame.size.height)/2; + if([[chat direction] intValue]) { // Inverted + [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size + forNinePatchNamed:@"chat_bubble_incoming"]]; + messageFrame.origin.y += 5; + } else { + [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size + forNinePatchNamed:@"chat_bubble_outgoing"]]; + messageFrame.origin.y -= 5; + } + [messageView setFrame:messageFrame]; + } } diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib index 822ed6cc6..b5bdba778 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.xib +++ b/Classes/LinphoneUI/UIChatRoomCell.xib @@ -3,19 +3,19 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 + IBProxyObject IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -35,7 +35,7 @@ - 274 + 301 @@ -181,17 +181,21 @@ IBCocoaTouchFramework - - 292 + + 274 {100, 100} + + _NS:9 IBCocoaTouchFramework - - 292 + + 274 {100, 100} + + _NS:9 IBCocoaTouchFramework @@ -443,6 +447,6 @@ {45, 45} {45, 45} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 5deef5c71..4d99f1a6b 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -19,6 +19,8 @@ #import "UICompositeViewController.h" +#import "PhoneMainView.h" + @implementation UICompositeViewDescription @synthesize name; @@ -90,7 +92,7 @@ #pragma mark - Lifecycle Functions - (void)initUICompositeViewController { - self->viewControllerCache = [[NSMutableDictionary alloc] init]; + self->viewControllerCache = [[NSMutableDictionary alloc] init]; self->currentOrientation = UIDeviceOrientationUnknown; } @@ -148,13 +150,8 @@ [contentViewController viewWillAppear:animated]; [tabBarViewController viewWillAppear:animated]; [stateBarViewController viewWillAppear:animated]; - - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(orientationChanged:) - name:UIDeviceOrientationDidChangeNotification - object:nil]; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; - //currentOrientation = [UIDevice currentDevice].orientation; + currentOrientation = [[UIDevice currentDevice] orientation]; } - (void)viewDidAppear:(BOOL)animated { @@ -171,9 +168,6 @@ [stateBarViewController viewWillDisappear:animated]; [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; - [[NSNotificationCenter defaultCenter] removeObserver:self - name:UIDeviceOrientationDidChangeNotification - object:nil]; } - (void)viewDidDisappear:(BOOL)animated { @@ -183,24 +177,19 @@ [stateBarViewController viewDidDisappear:animated]; } -- (void)orientationChanged:(NSNotification *)notification { - currentOrientation = [[UIDevice currentDevice] orientation]; -} - - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; - [super willRotateToInterfaceOrientation:correctOrientation duration:duration]; - [contentViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; - [tabBarViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; - [stateBarViewController willRotateToInterfaceOrientation:correctOrientation duration:duration]; + currentOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; + [super willRotateToInterfaceOrientation:currentOrientation duration:duration]; + [contentViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; + [tabBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; + [stateBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; } - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; - [super willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; - [contentViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; - [tabBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; - [stateBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:duration]; + [super willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [contentViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [tabBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [stateBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; [self update:nil tabBar:nil fullscreen:nil]; } @@ -267,39 +256,36 @@ return controller; } -- (UIInterfaceOrientation)getCorrectInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { +- (UIInterfaceOrientation)getCorrectInterfaceOrientation:(UIDeviceOrientation)deviceOrientation { if(currentViewDescription != nil) { NSString* rotationPreference = [[LinphoneManager instance].settingsStore objectForKey:@"rotation_preference"]; if([rotationPreference isEqualToString:@"auto"]) { - if(currentOrientation == UIDeviceOrientationUnknown) { + if(deviceOrientation == UIDeviceOrientationUnknown) { return [UIApplication sharedApplication].statusBarOrientation; } - if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) { + if (UIDeviceOrientationIsPortrait(deviceOrientation)) { if ([currentViewDescription portraitMode]) { - return interfaceOrientation; + return deviceOrientation; } else { return UIInterfaceOrientationLandscapeLeft; } } - if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) { + if (UIDeviceOrientationIsLandscape(deviceOrientation)) { if ([currentViewDescription landscapeMode]) { - return interfaceOrientation; + return deviceOrientation; } else { return UIInterfaceOrientationPortrait; } } } else if([rotationPreference isEqualToString:@"portrait"]) { if ([currentViewDescription landscapeMode]) { - if (UIInterfaceOrientationIsPortrait(interfaceOrientation)) { - if(currentOrientation == UIDeviceOrientationUnknown) { + if (UIDeviceOrientationIsPortrait(deviceOrientation)) { + if(deviceOrientation == UIDeviceOrientationUnknown) { return [UIApplication sharedApplication].statusBarOrientation; } - return interfaceOrientation; + return deviceOrientation; } else { if(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) { - if(currentOrientation == UIDeviceOrientationUnknown) { - return [UIApplication sharedApplication].statusBarOrientation; - } return [UIApplication sharedApplication].statusBarOrientation; } else { return UIInterfaceOrientationPortrait; @@ -310,16 +296,13 @@ } } else if([rotationPreference isEqualToString:@"landscape"]) { if ([currentViewDescription landscapeMode]) { - if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) { - if(currentOrientation == UIDeviceOrientationUnknown) { + if (UIDeviceOrientationIsLandscape(deviceOrientation)) { + if(deviceOrientation == UIDeviceOrientationUnknown) { return [UIApplication sharedApplication].statusBarOrientation; } - return interfaceOrientation; + return deviceOrientation; } else { if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { - if(currentOrientation == UIDeviceOrientationUnknown) { - return [UIApplication sharedApplication].statusBarOrientation; - } return [UIApplication sharedApplication].statusBarOrientation; } else { return UIInterfaceOrientationLandscapeLeft; @@ -393,17 +376,11 @@ tabBarViewController = [self getCachedController:description.tabBar]; // Update rotation - UIDeviceOrientation correctOrientation = [self getCorrectInterfaceOrientation:currentOrientation]; - if([UIApplication sharedApplication].statusBarOrientation != correctOrientation) { - [[NSNotificationCenter defaultCenter] removeObserver:self - name:UIDeviceOrientationDidChangeNotification - object:nil]; - [[UIDevice currentDevice] performSelector:NSSelectorFromString(@"setOrientation:") withObject:(id)correctOrientation]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(orientationChanged:) - name:UIDeviceOrientationDidChangeNotification - object:nil]; + UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]]; + if(currentOrientation != correctOrientation) { + [PhoneMainView forceOrientation:correctOrientation]; } + currentOrientation = correctOrientation; [self updateInterfaceOrientation:correctOrientation]; } else { oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; diff --git a/Classes/LinphoneUI/UICompositeViewController.xib b/Classes/LinphoneUI/UICompositeViewController.xib index 2c4175b31..c400fdb98 100644 --- a/Classes/LinphoneUI/UICompositeViewController.xib +++ b/Classes/LinphoneUI/UICompositeViewController.xib @@ -60,7 +60,6 @@ _NS:9 NO - YES 2 IBCocoaTouchFramework @@ -73,7 +72,6 @@ _NS:9 NO - YES 3 IBCocoaTouchFramework @@ -112,7 +110,6 @@ _NS:9 NO - YES 2 IBCocoaTouchFramework @@ -125,7 +122,6 @@ _NS:9 NO - YES 3 IBCocoaTouchFramework diff --git a/Classes/LinphoneUI/UILinphone.h b/Classes/LinphoneUI/UILinphone.h index 7ec0b4bcd..01a93958b 100644 --- a/Classes/LinphoneUI/UILinphone.h +++ b/Classes/LinphoneUI/UILinphone.h @@ -34,4 +34,4 @@ @end -void removeTableBackground(UIView* view); \ No newline at end of file +void removeTableBackground(UIView* view); diff --git a/Classes/LinphoneUI/UILinphone.m b/Classes/LinphoneUI/UILinphone.m index 96347a6ab..b1788b19e 100644 --- a/Classes/LinphoneUI/UILinphone.m +++ b/Classes/LinphoneUI/UILinphone.m @@ -21,6 +21,8 @@ #import "ColorSpaceUtilities.h" #import "Utils.h" +#import + @implementation UIColor (LightAndDark) - (UIColor *)lumColor:(float)mult { diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib index bd0bacade..d1f14bc5f 100644 --- a/Classes/LinphoneUI/UIMainBar.xib +++ b/Classes/LinphoneUI/UIMainBar.xib @@ -37,6 +37,21 @@ 292 + + + 290 + {{0, 77}, {320, 2000}} + + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBCocoaTouchFramework + -2147483356 @@ -313,6 +328,7 @@ {{2, 2}, {17, 17}} + _NS:9 NO YES @@ -343,7 +359,7 @@ {320, 77} - + _NS:9 1 @@ -520,6 +536,7 @@ + @@ -604,6 +621,12 @@ chatNotificationImage + + 45 + + + background + @@ -620,6 +643,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -635,7 +659,7 @@ - 44 + 45 diff --git a/Classes/LinphoneUI/UIMainBar~ipad.xib b/Classes/LinphoneUI/UIMainBar~ipad.xib index 9f2a932d2..559a0e4b0 100644 --- a/Classes/LinphoneUI/UIMainBar~ipad.xib +++ b/Classes/LinphoneUI/UIMainBar~ipad.xib @@ -37,6 +37,21 @@ 292 + + + 290 + {{0, 77}, {768, 2000}} + + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBIPadFramework + -2147483356 @@ -171,7 +186,7 @@ {{175, 0}, {175, 77}} - + _NS:9 NO 3 @@ -364,6 +379,21 @@ 292 + + + 290 + {{0, 86}, {1024, 2000}} + + + + _NS:9 + + 1 + MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA + + 28 + IBIPadFramework + -2147483356 @@ -472,7 +502,7 @@ {{240, 0}, {240, 86}} - + _NS:9 NO 3 @@ -828,6 +858,7 @@ + Portrait View @@ -925,6 +956,7 @@ + Landscape View @@ -1010,6 +1042,18 @@ dialer + + 61 + + + background + + + 62 + + + background + @@ -1049,6 +1093,8 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1060,7 +1106,7 @@ - 60 + 62 @@ -1088,7 +1134,7 @@ UIMainBar - UIViewController + TPMultiLayoutViewController id id diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 36ffef4d5..ef034965a 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -59,6 +59,7 @@ - (UICompositeViewDescription *)firstView; - (void)showTabBar:(BOOL)show; - (void)fullScreen:(BOOL)enabled; ++ (void)forceOrientation:(UIInterfaceOrientation)orientation; + (PhoneMainView*) instance; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index e81ec6860..d5ae047c5 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -20,6 +20,7 @@ #import #import +#import "LinphoneAppDelegate.h" #import "PhoneMainView.h" #import "Utils.h" @@ -30,6 +31,10 @@ static PhoneMainView* phoneMainViewInstance=nil; @synthesize mainViewController; @synthesize currentView; +// TO READ +// If a Controller set wantFullScreenLayout then DON'T set the autoresize! +// So DON'T set autoresize for PhoneMainView + #pragma mark - Lifecycle Functions - (void)initPhoneMainView { @@ -164,19 +169,59 @@ static PhoneMainView* phoneMainViewInstance=nil; } } +/* + Will simulate a device rotation + */ ++ (void)forceOrientation:(UIInterfaceOrientation)orientation { + for(UIWindow *window in [[UIApplication sharedApplication] windows]) { + UIView *view = window; + UIViewController *controller = nil; + CGRect frame = [view frame]; + if([window isKindOfClass:[UILinphoneWindow class]]) { + controller = window.rootViewController; + view = controller.view; + } + UIInterfaceOrientation oldOrientation = controller.interfaceOrientation; + [controller willRotateToInterfaceOrientation:orientation duration:0.3]; + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:0.3]; + switch (orientation) { + case UIInterfaceOrientationPortrait: + [view setTransform: CGAffineTransformMakeRotation(0)]; + break; + case UIInterfaceOrientationPortraitUpsideDown: + [view setTransform: CGAffineTransformMakeRotation(M_PI)]; + break; + case UIInterfaceOrientationLandscapeLeft: + [view setTransform: CGAffineTransformMakeRotation(-M_PI / 2)]; + break; + case UIInterfaceOrientationLandscapeRight: + [view setTransform: CGAffineTransformMakeRotation(M_PI / 2)]; + break; + default: + break; + } + if([window isKindOfClass:[UILinphoneWindow class]]) { + [view setFrame:frame]; + } + [controller willAnimateRotationToInterfaceOrientation:orientation duration:0.3]; + [UIView commitAnimations]; + [controller didRotateFromInterfaceOrientation:oldOrientation]; + } + [[UIApplication sharedApplication] setStatusBarOrientation:orientation animated:TRUE]; +} + - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; [mainViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; } - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - [self.view setFrame:[[UIScreen mainScreen] bounds]]; // Force resize to screen size [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; [mainViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; } - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { - NSLog(@"%d", fromInterfaceOrientation); [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; [mainViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; } diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib index e569e57d7..fb81bca47 100644 --- a/Classes/PhoneMainView.xib +++ b/Classes/PhoneMainView.xib @@ -37,7 +37,7 @@ - 274 + 301 YES diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h deleted file mode 100755 index 262c841c6..000000000 --- a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// TPKeyboardAvoidingScrollView.h -// -// Created by Michael Tyson on 11/04/2011. -// Copyright 2011 A Tasty Pixel. All rights reserved. -// - -@interface TPKeyboardAvoidingScrollView : UIScrollView { - UIEdgeInsets _priorInset; - BOOL _priorInsetSaved; - BOOL _keyboardVisible; - CGRect _keyboardRect; - CGSize _originalContentSize; -} - -- (void)adjustOffsetToIdealIfNeeded; -@end diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m deleted file mode 100755 index ee0372065..000000000 --- a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m +++ /dev/null @@ -1,186 +0,0 @@ -// -// TPKeyboardAvoidingScrollView.m -// -// Created by Michael Tyson on 11/04/2011. -// Copyright 2011 A Tasty Pixel. All rights reserved. -// - -#import "TPKeyboardAvoidingScrollView.h" - -#define _UIKeyboardFrameEndUserInfoKey (&UIKeyboardFrameEndUserInfoKey != NULL ? UIKeyboardFrameEndUserInfoKey : @"UIKeyboardBoundsUserInfoKey") - -@interface TPKeyboardAvoidingScrollView () -- (UIView*)findFirstResponderBeneathView:(UIView*)view; -- (UIEdgeInsets)contentInsetForKeyboard; -- (CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space; -- (CGRect)keyboardRect; -@end - -@implementation TPKeyboardAvoidingScrollView - -- (void)setup { - _priorInsetSaved = NO; - if ( CGSizeEqualToSize(self.contentSize, CGSizeZero) ) { - self.contentSize = self.bounds.size; - } - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; -} - --(id)initWithFrame:(CGRect)frame { - if ( !(self = [super initWithFrame:frame]) ) return nil; - [self setup]; - return self; -} - --(void)awakeFromNib { - [self setup]; -} - --(void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -#if !__has_feature(objc_arc) - [super dealloc]; -#endif -} - --(void)setFrame:(CGRect)frame { - [super setFrame:frame]; - - CGSize contentSize = _originalContentSize; - contentSize.width = MAX(contentSize.width, self.frame.size.width); - contentSize.height = MAX(contentSize.height, self.frame.size.height); - [super setContentSize:contentSize]; - - if ( _keyboardVisible ) { - self.contentInset = [self contentInsetForKeyboard]; - } -} - --(void)setContentSize:(CGSize)contentSize { - _originalContentSize = contentSize; - - contentSize.width = MAX(contentSize.width, self.frame.size.width); - contentSize.height = MAX(contentSize.height, self.frame.size.height); - [super setContentSize:contentSize]; - - if ( _keyboardVisible ) { - self.contentInset = [self contentInsetForKeyboard]; - } -} - -- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { - [[self findFirstResponderBeneathView:self] resignFirstResponder]; - [super touchesEnded:touches withEvent:event]; -} - -- (void)keyboardWillShow:(NSNotification*)notification { - _keyboardRect = [[[notification userInfo] objectForKey:_UIKeyboardFrameEndUserInfoKey] CGRectValue]; - _keyboardVisible = YES; - - UIView *firstResponder = [self findFirstResponderBeneathView:self]; - if ( !firstResponder ) { - // No child view is the first responder - nothing to do here - return; - } - - if (!_priorInsetSaved) { - _priorInset = self.contentInset; - _priorInsetSaved = YES; - } - - // Shrink view's inset by the keyboard's height, and scroll to show the text field/view being edited - [UIView beginAnimations:nil context:NULL]; - [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; - [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; - - self.contentInset = [self contentInsetForKeyboard]; - [self setContentOffset:CGPointMake(self.contentOffset.x, - [self idealOffsetForView:firstResponder withSpace:[self keyboardRect].origin.y - self.bounds.origin.y]) - animated:YES]; - [self setScrollIndicatorInsets:self.contentInset]; - - [UIView commitAnimations]; -} - -- (void)keyboardWillHide:(NSNotification*)notification { - _keyboardRect = CGRectZero; - _keyboardVisible = NO; - - // Restore dimensions to prior size - [UIView beginAnimations:nil context:NULL]; - [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; - [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; - self.contentInset = _priorInset; - [self setScrollIndicatorInsets:self.contentInset]; - _priorInsetSaved = NO; - [UIView commitAnimations]; -} - -- (UIView*)findFirstResponderBeneathView:(UIView*)view { - // Search recursively for first responder - for ( UIView *childView in view.subviews ) { - if ( [childView respondsToSelector:@selector(isFirstResponder)] && [childView isFirstResponder] ) return childView; - UIView *result = [self findFirstResponderBeneathView:childView]; - if ( result ) return result; - } - return nil; -} - -- (UIEdgeInsets)contentInsetForKeyboard { - UIEdgeInsets newInset = self.contentInset; - CGRect keyboardRect = [self keyboardRect]; - newInset.bottom = keyboardRect.size.height - ((keyboardRect.origin.y+keyboardRect.size.height) - (self.bounds.origin.y+self.bounds.size.height)); - return newInset; -} - --(CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space { - - // Convert the rect to get the view's distance from the top of the scrollView. - CGRect rect = [view convertRect:view.bounds toView:self]; - - // Set starting offset to that point - CGFloat offset = rect.origin.y; - - - if ( self.contentSize.height - offset < space ) { - // Scroll to the bottom - offset = self.contentSize.height - space; - } else { - if ( view.bounds.size.height < space ) { - // Center vertically if there's room - offset -= floor((space-view.bounds.size.height)/2.0); - } - if ( offset + space > self.contentSize.height ) { - // Clamp to content size - offset = self.contentSize.height - space; - } - } - - if (offset < 0) offset = 0; - - return offset; -} - --(void)adjustOffsetToIdealIfNeeded { - - // Only do this if the keyboard is already visible - if ( !_keyboardVisible ) return; - - CGFloat visibleSpace = self.bounds.size.height - self.contentInset.top - self.contentInset.bottom; - - CGPoint idealOffset = CGPointMake(0, [self idealOffsetForView:[self findFirstResponderBeneathView:self] withSpace:visibleSpace]); - - [self setContentOffset:idealOffset animated:YES]; -} - -- (CGRect)keyboardRect { - CGRect keyboardRect = [self convertRect:_keyboardRect fromView:nil]; - if ( keyboardRect.origin.y == 0 ) { - CGRect screenBounds = [self convertRect:[UIScreen mainScreen].bounds fromView:nil]; - keyboardRect.origin = CGPointMake(0, screenBounds.size.height - keyboardRect.size.height); - } - return keyboardRect; -} - -@end diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h deleted file mode 100755 index 7485c6005..000000000 --- a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h +++ /dev/null @@ -1,16 +0,0 @@ -// -// TPKeyboardAvoidingTableView.h -// -// Created by Michael Tyson on 11/04/2011. -// Copyright 2011 A Tasty Pixel. All rights reserved. -// - -@interface TPKeyboardAvoidingTableView : UITableView { - UIEdgeInsets _priorInset; - BOOL _priorInsetSaved; - BOOL _keyboardVisible; - CGRect _keyboardRect; -} - -- (void)adjustOffsetToIdealIfNeeded; -@end diff --git a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m b/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m deleted file mode 100755 index 9eea88c74..000000000 --- a/Classes/Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m +++ /dev/null @@ -1,173 +0,0 @@ -// -// TPKeyboardAvoidingTableView.m -// -// Created by Michael Tyson on 11/04/2011. -// Copyright 2011 A Tasty Pixel. All rights reserved. -// - -#import "TPKeyboardAvoidingTableView.h" - -#define _UIKeyboardFrameEndUserInfoKey (&UIKeyboardFrameEndUserInfoKey != NULL ? UIKeyboardFrameEndUserInfoKey : @"UIKeyboardBoundsUserInfoKey") - -@interface TPKeyboardAvoidingTableView () -- (UIView*)findFirstResponderBeneathView:(UIView*)view; -- (UIEdgeInsets)contentInsetForKeyboard; -- (CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space; -- (CGRect)keyboardRect; -@end - -@implementation TPKeyboardAvoidingTableView - -- (void)setup { - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; -} - --(id)initWithFrame:(CGRect)frame { - if ( !(self = [super initWithFrame:frame]) ) return nil; - [self setup]; - return self; -} - --(id)initWithCoder:(NSCoder *)aDecoder { - if ( !(self = [super initWithCoder:aDecoder]) ) return nil; - [self setup]; - return self; -} - --(void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -#if !__has_feature(objc_arc) - [super dealloc]; -#endif -} - --(void)setFrame:(CGRect)frame { - [super setFrame:frame]; - if ( _keyboardVisible ) { - self.contentInset = [self contentInsetForKeyboard]; - } -} - --(void)setContentSize:(CGSize)contentSize { - [super setContentSize:contentSize]; - if ( _keyboardVisible ) { - self.contentInset = [self contentInsetForKeyboard]; - } -} - -- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { - [[self findFirstResponderBeneathView:self] resignFirstResponder]; - [super touchesEnded:touches withEvent:event]; -} - -- (void)keyboardWillShow:(NSNotification*)notification { - _keyboardRect = [[[notification userInfo] objectForKey:_UIKeyboardFrameEndUserInfoKey] CGRectValue]; - _keyboardVisible = YES; - - UIView *firstResponder = [self findFirstResponderBeneathView:self]; - if ( !firstResponder ) { - // No child view is the first responder - nothing to do here - return; - } - - if (!_priorInsetSaved) { - _priorInset = self.contentInset; - _priorInsetSaved = YES; - } - - // Shrink view's inset by the keyboard's height, and scroll to show the text field/view being edited - [UIView beginAnimations:nil context:NULL]; - [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; - [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; - - self.contentInset = [self contentInsetForKeyboard]; - [self setContentOffset:CGPointMake(self.contentOffset.x, - [self idealOffsetForView:firstResponder withSpace:[self keyboardRect].origin.y - self.bounds.origin.y]) - animated:YES]; - [self setScrollIndicatorInsets:self.contentInset]; - - [UIView commitAnimations]; -} - -- (void)keyboardWillHide:(NSNotification*)notification { - _keyboardRect = CGRectZero; - _keyboardVisible = NO; - - // Restore dimensions to prior size - [UIView beginAnimations:nil context:NULL]; - [UIView setAnimationCurve:[[[notification userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]]; - [UIView setAnimationDuration:[[[notification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue]]; - self.contentInset = _priorInset; - [self setScrollIndicatorInsets:self.contentInset]; - _priorInsetSaved = NO; - [UIView commitAnimations]; -} - -- (UIView*)findFirstResponderBeneathView:(UIView*)view { - // Search recursively for first responder - for ( UIView *childView in view.subviews ) { - if ( [childView respondsToSelector:@selector(isFirstResponder)] && [childView isFirstResponder] ) return childView; - UIView *result = [self findFirstResponderBeneathView:childView]; - if ( result ) return result; - } - return nil; -} - -- (UIEdgeInsets)contentInsetForKeyboard { - UIEdgeInsets newInset = self.contentInset; - CGRect keyboardRect = [self keyboardRect]; - newInset.bottom = keyboardRect.size.height - ((keyboardRect.origin.y+keyboardRect.size.height) - (self.bounds.origin.y+self.bounds.size.height)); - return newInset; -} - --(CGFloat)idealOffsetForView:(UIView *)view withSpace:(CGFloat)space { - - // Convert the rect to get the view's distance from the top of the scrollView. - CGRect rect = [view convertRect:view.bounds toView:self]; - - // Set starting offset to that point - CGFloat offset = rect.origin.y; - - - if ( self.contentSize.height - offset < space ) { - // Scroll to the bottom - offset = self.contentSize.height - space; - } else { - if ( view.bounds.size.height < space ) { - // Center vertically if there's room - offset -= floor((space-view.bounds.size.height)/2.0); - } - if ( offset + space > self.contentSize.height ) { - // Clamp to content size - offset = self.contentSize.height - space; - } - } - - if (offset < 0) offset = 0; - - return offset; -} - --(void)adjustOffsetToIdealIfNeeded { - - // Only do this if the keyboard is already visible - if ( !_keyboardVisible ) return; - - CGFloat visibleSpace = self.bounds.size.height - self.contentInset.top - self.contentInset.bottom; - - CGPoint idealOffset = CGPointMake(0, [self idealOffsetForView:[self findFirstResponderBeneathView:self] withSpace:visibleSpace]); - - [self setContentOffset:idealOffset animated:YES]; -} - -- (CGRect)keyboardRect { - CGRect keyboardRect = [self convertRect:_keyboardRect fromView:nil]; - if ( keyboardRect.origin.y == 0 ) { - CGRect screenBounds = [self convertRect:[UIScreen mainScreen].bounds fromView:nil]; - keyboardRect.origin = CGPointMake(0, screenBounds.size.height - keyboardRect.size.height); - } - return keyboardRect; -} - -@end diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 7d3f16feb..ba7ad0ed8 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -1116,10 +1116,6 @@ D3F83F8F15822ABE00336684 /* PhoneMainView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83F8D15822ABD00336684 /* PhoneMainView.m */; }; D3F83F9215824D3600336684 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; }; D3F9A9DB15AEEB940045320F /* history_notification.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F9A9DA15AEEB940045320F /* history_notification.png */; }; - D3F9A9E215AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */; }; - D3F9A9E315AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */; }; - D3F9A9E415AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */; }; - D3F9A9E515AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */; }; D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; }; D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; }; F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; }; @@ -2003,10 +1999,6 @@ D3F83F8D15822ABD00336684 /* PhoneMainView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PhoneMainView.m; sourceTree = ""; }; D3F83F9115824D3500336684 /* LinphoneApp.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LinphoneApp.xib; sourceTree = ""; }; D3F9A9DA15AEEB940045320F /* history_notification.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_notification.png; path = Resources/history_notification.png; sourceTree = ""; }; - D3F9A9DE15AF100D0045320F /* TPKeyboardAvoidingScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TPKeyboardAvoidingScrollView.h; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.h; sourceTree = ""; }; - D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TPKeyboardAvoidingScrollView.m; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingScrollView.m; sourceTree = ""; }; - D3F9A9E015AF100D0045320F /* TPKeyboardAvoidingTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TPKeyboardAvoidingTableView.h; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.h; sourceTree = ""; }; - D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TPKeyboardAvoidingTableView.m; path = Utils/TPKeyboardAvoiding/TPKeyboardAvoidingTableView.m; sourceTree = ""; }; D3F9A9EC15AF277D0045320F /* UACellBackgroundView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UACellBackgroundView.h; path = Utils/UACellBackgroundView/UACellBackgroundView.h; sourceTree = ""; }; D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UACellBackgroundView.m; path = Utils/UACellBackgroundView/UACellBackgroundView.m; sourceTree = ""; }; /* End PBXFileReference section */ @@ -3050,7 +3042,6 @@ D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */, D326483615887D5200930C67 /* OrderedDictionary.h */, D326483715887D5200930C67 /* OrderedDictionary.m */, - D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */, D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */, D3F9A9EB15AF27620045320F /* UACellBackgroundView */, C9B3A6FD15B485DB006F52EE /* Utils.h */, @@ -3181,17 +3172,6 @@ name = TPMultiLayoutViewController; sourceTree = ""; }; - D3F9A9DD15AF0FFE0045320F /* TPKeyboardAvoiding */ = { - isa = PBXGroup; - children = ( - D3F9A9DE15AF100D0045320F /* TPKeyboardAvoidingScrollView.h */, - D3F9A9DF15AF100D0045320F /* TPKeyboardAvoidingScrollView.m */, - D3F9A9E015AF100D0045320F /* TPKeyboardAvoidingTableView.h */, - D3F9A9E115AF100D0045320F /* TPKeyboardAvoidingTableView.m */, - ); - name = TPKeyboardAvoiding; - sourceTree = ""; - }; D3F9A9EB15AF27620045320F /* UACellBackgroundView */ = { isa = PBXGroup; children = ( @@ -4230,8 +4210,6 @@ D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, D3E8F68615ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, C90FAA7915AF54E6002091CB /* HistoryDetailsViewController.m in Sources */, - D3F9A9E215AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */, - D3F9A9E415AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D615B549B500513429 /* Utils.m in Sources */, D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, @@ -4323,8 +4301,6 @@ D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */, D3E8F68715ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */, C90FAA7A15AF54E6002091CB /* HistoryDetailsViewController.m in Sources */, - D3F9A9E315AF100D0045320F /* TPKeyboardAvoidingScrollView.m in Sources */, - D3F9A9E515AF100D0045320F /* TPKeyboardAvoidingTableView.m in Sources */, D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */, D35860D715B549B500513429 /* Utils.m in Sources */, D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */, From 471e02c342339755be71600e4c5a9e45c9921bc3 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Wed, 1 Aug 2012 17:48:49 +0200 Subject: [PATCH 096/397] update README for mountain lion --- README | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README b/README index 096cfdadb..7bb193edd 100644 --- a/README +++ b/README @@ -8,9 +8,11 @@ BUILD PREQUISITES Linphone for iPhone depends on liblinphone sdk. This SDK is generated from makefiles and shell scripts. You must first install both xcode with iPhone OS SDK and MacPorts (www.macports.org) for these scripts to work. +Make sure that /opt/local/bin (macport tools) arrives first in your PATH env variable, so that the macport tools are taken in place of the versions brought by Apple in /usr/bin. Otherwise the build will fail with obscure errors. + Once xccode and macports are installed, open a terminal and install the required build-time tools with: - $ sudo port install nawk coreutils automake autoconf libtool intltool wget pkgconfig cmake yasm doxygen + $ sudo port install coreutils automake autoconf libtool intltool wget pkgconfig cmake gmake yasm grep doxygen Install gas-preprosessor.pl (http://github.com/yuvi/gas-preprocessor/ ) to be copied into /opt/local/bin : From 1d48b9002d5e6690deea0b4185053ff214a32bd1 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 2 Aug 2012 09:24:09 +0200 Subject: [PATCH 097/397] Fix preview bugs Improve InCallView --- Classes/InCallViewController.h | 4 ++ Classes/InCallViewController.m | 44 +++++++++++++++++-- Classes/InCallViewController.xib | 21 ++++++--- .../LinphoneUI/UICompositeViewController.h | 1 + .../LinphoneUI/UICompositeViewController.m | 30 +++++++++---- Classes/PhoneMainView.h | 1 + Classes/PhoneMainView.m | 4 ++ submodules/linphone | 2 +- 8 files changed, 89 insertions(+), 18 deletions(-) diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index b11f30ae3..0808ebeac 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -28,6 +28,10 @@ @class VideoViewController; +@interface UIPreviewView : UIView + +@end + @interface InCallViewController : UIViewController { InCallTableViewController* callTableController; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 509d38038..15926c9ff 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -35,6 +35,17 @@ const NSInteger SECURE_BUTTON_TAG=5; +@implementation UIPreviewView + +- (void)layoutSubviews { + [super layoutSubviews]; + [self.layer setFrame:self.frame]; + for(CALayer *layer in self.layer.sublayers) { + [layer setFrame:self.bounds]; + } +} + +@end @implementation InCallViewController @@ -102,6 +113,22 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - ViewController Functions +// Resize preview view keep same ratio +- (void)viewWillLayoutSubviews { + [super viewWillLayoutSubviews]; + CGRect frame = [videoPreview frame]; + frame.origin.x += frame.size.width; + frame.origin.y += frame.size.height; + + CGRect selfFrame = [self.view frame]; + int size = 100.0f/460.0f * MAX(selfFrame.size.width, selfFrame.size.height); + frame.origin.x -= size; + frame.origin.y -= size; + frame.size.height = size; + frame.size.width = size; + [videoPreview setFrame:frame]; +} + - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; @@ -204,14 +231,20 @@ static UICompositeViewDescription *compositeDescription = nil; UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; int newRotation = 0; switch (orientation) { - case UIInterfaceOrientationLandscapeRight: - newRotation = 270; + case UIDeviceOrientationPortrait: + newRotation = 0; break; - case UIInterfaceOrientationLandscapeLeft: + case UIDeviceOrientationPortraitUpsideDown: + newRotation = 180; + break; + case UIDeviceOrientationLandscapeRight: newRotation = 90; break; + case UIDeviceOrientationLandscapeLeft: + newRotation = 270; + break; default: - newRotation = 0; + newRotation = oldLinphoneOrientation; } if (oldLinphoneOrientation != newRotation) { linphone_core_set_device_rotation([LinphoneManager getLc], newRotation); @@ -307,6 +340,7 @@ static UICompositeViewDescription *compositeDescription = nil; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; [[PhoneMainView instance] showTabBar: true]; + [[PhoneMainView instance] showStateBar: true]; [videoCameraSwitch setAlpha:1.0]; [UIView commitAnimations]; @@ -333,6 +367,7 @@ static UICompositeViewDescription *compositeDescription = nil; [[PhoneMainView instance] showTabBar: false]; + [[PhoneMainView instance] showStateBar: false]; } } @@ -383,6 +418,7 @@ static UICompositeViewDescription *compositeDescription = nil; [[PhoneMainView instance] fullScreen: true]; [[PhoneMainView instance] showTabBar: false]; + [[PhoneMainView instance] showStateBar: false]; #ifdef TEST_VIDEO_VIEW_CHANGE [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(_debugChangeVideoView) userInfo:nil repeats:YES]; diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index e25d6a35b..8d6106c7d 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -67,7 +67,7 @@ {320, 460} - + _NS:196 3 @@ -77,12 +77,13 @@ - 283 - {{214, 354}, {106, 106}} + 265 + {{220, 360}, {100, 100}} - + + 1 IBCocoaTouchFramework @@ -91,7 +92,7 @@ {{141, 212}, {37, 37}} - + _NS:1030 NO IBCocoaTouchFramework @@ -399,6 +400,7 @@ -2.IBPluginDependency 106.IBPluginDependency 126.IBPluginDependency + 127.CustomClassName 127.IBPluginDependency 132.IBPluginDependency 144.IBPluginDependency @@ -418,6 +420,7 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIPreviewView com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -556,6 +559,14 @@ ./Classes/UICamSwitch.h + + UIPreviewView + UIView + + IBProjectSource + ./Classes/UIPreviewView.h + + 0 diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index d19634296..f4ad7f907 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -87,6 +87,7 @@ - (void)changeView:(UICompositeViewDescription *)description; - (void)setFullScreen:(BOOL) enabled; +- (void)setStateBarHidden:(BOOL) hidden; - (void)setToolBarHidden:(BOOL) hidden; - (UIViewController *)getCurrentViewController; diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 4d99f1a6b..598a50483 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -190,7 +190,7 @@ [contentViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; [tabBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; [stateBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; - [self update:nil tabBar:nil fullscreen:nil]; + [self update:nil tabBar:nil stateBar:nil fullscreen:nil]; } - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { @@ -342,7 +342,7 @@ #define IPHONE_STATUSBAR_HEIGHT 20 -- (void)update: (UICompositeViewDescription*) description tabBar:(NSNumber*)tabBar fullscreen:(NSNumber*)fullscreen { +- (void)update: (UICompositeViewDescription*) description tabBar:(NSNumber*)tabBar stateBar:(NSNumber*)stateBar fullscreen:(NSNumber*)fullscreen { // Copy view description UICompositeViewDescription *oldViewDescription = nil; @@ -398,6 +398,14 @@ } } + if(stateBar != nil) { + if(currentViewDescription.stateBarEnabled != [stateBar boolValue]) { + currentViewDescription.stateBarEnabled = [stateBar boolValue]; + } else { + stateBar = nil; // No change = No Update + } + } + if(fullscreen != nil) { if(currentViewDescription.fullscreen != [fullscreen boolValue]) { currentViewDescription.fullscreen = [fullscreen boolValue]; @@ -410,7 +418,7 @@ } // Start animation - if(tabBar != nil || fullscreen != nil) { + if(tabBar != nil || stateBar != nil || fullscreen != nil) { [UIView beginAnimations:@"resize" context:nil]; [UIView setAnimationDuration:0.35]; [UIView setAnimationBeginsFromCurrentState:TRUE]; @@ -454,8 +462,10 @@ tabFrame.origin.y = viewFrame.size.height; } - if(currentViewDescription.fullscreen) + if(currentViewDescription.fullscreen) { + contentFrame.origin.y = origin; contentFrame.size.height = viewFrame.size.height - contentFrame.origin.y; + } // Set frames [contentView setFrame: contentFrame]; @@ -470,7 +480,7 @@ [stateBarViewController.view setFrame:frame]; // Commit animation - if(tabBar != nil || fullscreen != nil) { + if(tabBar != nil || stateBar != nil || fullscreen != nil) { [UIView commitAnimations]; } @@ -493,15 +503,19 @@ - (void) changeView:(UICompositeViewDescription *)description { [self view]; // Force view load - [self update:description tabBar:nil fullscreen:nil]; + [self update:description tabBar:nil stateBar:nil fullscreen:nil]; } - (void) setFullScreen:(BOOL) enabled { - [self update:nil tabBar:nil fullscreen:[NSNumber numberWithBool:enabled]]; + [self update:nil tabBar:nil stateBar:nil fullscreen:[NSNumber numberWithBool:enabled]]; } - (void) setToolBarHidden:(BOOL) hidden { - [self update:nil tabBar:[NSNumber numberWithBool:!hidden] fullscreen:nil]; + [self update:nil tabBar:[NSNumber numberWithBool:!hidden] stateBar:nil fullscreen:nil]; +} + +- (void) setStateBarHidden:(BOOL) hidden { + [self update:nil tabBar: nil stateBar:[NSNumber numberWithBool:!hidden] fullscreen:nil]; } - (UIViewController *) getCurrentViewController { diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index ef034965a..9d5150131 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -57,6 +57,7 @@ - (UIViewController*)popCurrentView; - (void)popToView:(UICompositeViewDescription *)currentView; - (UICompositeViewDescription *)firstView; +- (void)showStateBar:(BOOL)show; - (void)showTabBar:(BOOL)show; - (void)fullScreen:(BOOL)enabled; + (void)forceOrientation:(UIInterfaceOrientation)orientation; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index d5ae047c5..b8695218f 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -398,6 +398,10 @@ static PhoneMainView* phoneMainViewInstance=nil; [mainViewController setToolBarHidden:!show]; } +- (void) showStateBar:(BOOL) show { + [mainViewController setStateBarHidden:!show]; +} + - (void)fullScreen:(BOOL) enabled { [mainViewController setFullScreen:enabled]; } diff --git a/submodules/linphone b/submodules/linphone index 9a0097a97..78fae7aca 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 9a0097a9748862b91448bb71c10c619e122e739a +Subproject commit 78fae7acaf65bf083a8d35ae0c0bdddc87b649cc From c34f09e2d1a5a4d5efe2cee8c4a7889b35d99119 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 2 Aug 2012 11:24:13 +0200 Subject: [PATCH 098/397] Working Wizard --- Classes/ChatRoomViewController.m | 1 + Classes/FirstLoginViewController.m | 17 +- Classes/LinphoneManager.h | 1 + Classes/LinphoneManager.m | 8 + .../LinphoneUI/UICompositeViewController.m | 2 +- Classes/PhoneMainView.h | 2 +- Classes/PhoneMainView.m | 21 +- .../XMLRPC/Configurations/Common.xcconfig | 16 + .../Configurations/CommonDevelopment.xcconfig | 6 + .../Configurations/CommonRelease.xcconfig | 3 + .../XMLRPC/Configurations/XMLRPC.xcconfig | 12 + .../Configurations/XMLRPCDevelopment.xcconfig | 2 + .../Configurations/XMLRPCRelease.xcconfig | 2 + .../Configurations/XMLRPCUnitTests.xcconfig | 7 + .../XMLRPCUnitTestsDevelopment.xcconfig | 2 + .../XMLRPCUnitTestsRelease.xcconfig | 2 + Classes/Utils/XMLRPC/LICENSE.md | 23 + .../Languages/English.lproj/InfoPlist.strings | Bin 0 -> 274 bytes Classes/Utils/XMLRPC/NSData+Base64.h | 42 + Classes/Utils/XMLRPC/NSData+Base64.m | 313 ++ Classes/Utils/XMLRPC/NSStringAdditions.h | 13 + Classes/Utils/XMLRPC/NSStringAdditions.m | 46 + Classes/Utils/XMLRPC/README.md | 87 + .../Resources/Property Lists/TestCases.plist | 41 + .../Property Lists/XMLRPC-Info.plist | 24 + .../Property Lists/XMLRPCUnitTests-Info.plist | 22 + .../AlternativeDateFormatsTestCase.xml | 15 + .../Test Cases/DefaultTypeTestCase.xml | 8 + .../Test Cases/EmptyBooleanTestCase.xml | 8 + .../Test Cases/EmptyDataTestCase.xml | 8 + .../Test Cases/EmptyDoubleTestCase.xml | 8 + .../Test Cases/EmptyIntegerTestCase.xml | 8 + .../Test Cases/EmptyStringTestCase.xml | 8 + .../Test Cases/SimpleArrayTestCase.xml | 19 + .../Test Cases/SimpleStructTestCase.xml | 23 + .../Configurations/Common.xcconfig | 14 + .../Configurations/CommonDevelopment.xcconfig | 7 + .../Configurations/CommonRelease.xcconfig | 5 + .../Configurations/TestClient.xcconfig | 7 + .../TestClientDevelopment.xcconfig | 2 + .../Configurations/TestClientRelease.xcconfig | 2 + .../Languages/English.lproj/InfoPlist.strings | Bin 0 -> 264 bytes .../Languages/English.lproj/TestClient.xib | 3617 +++++++++++++++++ .../English.lproj/TestClientMainWindow.xib | 1992 +++++++++ .../TestClientXMLParserWindow.xib | 1228 ++++++ .../Test Client.xcodeproj/project.pbxproj | 401 ++ .../Tools/Test Client/TestClient-Info.plist | 30 + .../XMLRPC/Tools/Test Client/TestClient.pch | 4 + .../TestClientApplicationController.h | 11 + .../TestClientApplicationController.m | 21 + .../TestClientMainWindowController.h | 48 + .../TestClientMainWindowController.m | 241 ++ .../TestClientXMLParserWindowController.h | 25 + .../TestClientXMLParserWindowController.m | 215 + Classes/Utils/XMLRPC/Tools/Test Client/main.m | 5 + .../Utils/XMLRPC/Tools/Test Server/README.md | 51 + .../XMLRPC/Tools/Test Server/build.properties | 17 + .../Utils/XMLRPC/Tools/Test Server/build.xml | 48 + .../Test Server/lib/commons-logging-1.1.1.jar | Bin 0 -> 60841 bytes .../Tools/Test Server/lib/log4j-1.2.15.jar | Bin 0 -> 391834 bytes .../Test Server/lib/ws-commons-util-1.0.2.jar | Bin 0 -> 34407 bytes .../Test Server/lib/xmlrpc-common-3.1.jar | Bin 0 -> 104038 bytes .../Test Server/lib/xmlrpc-server-3.1.jar | Bin 0 -> 75310 bytes .../Test Server/resources/handlers.properties | 5 + .../Tools/Test Server/resources/log4j.xml | 14 + .../Utils/XMLRPC/Tools/Test Server/server.sh | 3 + .../divisiblebyzero/xmlrpc/Application.java | 25 + .../XmlRpcServerControlPanelController.java | 67 + .../divisiblebyzero/xmlrpc/model/Server.java | 60 + .../xmlrpc/model/handlers/Echo.java | 7 + .../xmlrpc/view/XmlRpcServerControlPanel.java | 155 + .../XMLRPC/Unit Tests/XMLRPCParserTest.h | 9 + .../XMLRPC/Unit Tests/XMLRPCParserTest.m | 150 + Classes/Utils/XMLRPC/XMLRPC.h | 5 + Classes/Utils/XMLRPC/XMLRPC.pch | 3 + .../XMLRPC/XMLRPC.xcodeproj/project.pbxproj | 931 +++++ .../xcschemes/xcschememanagement.plist | 26 + Classes/Utils/XMLRPC/XMLRPCConnection.h | 33 + Classes/Utils/XMLRPC/XMLRPCConnection.m | 214 + .../Utils/XMLRPC/XMLRPCConnectionDelegate.h | 27 + .../Utils/XMLRPC/XMLRPCConnectionManager.h | 32 + .../Utils/XMLRPC/XMLRPCConnectionManager.m | 115 + Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.h | 8 + Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.m | 253 ++ Classes/Utils/XMLRPC/XMLRPCEncoder.h | 15 + Classes/Utils/XMLRPC/XMLRPCEventBasedParser.h | 27 + Classes/Utils/XMLRPC/XMLRPCEventBasedParser.m | 81 + .../XMLRPC/XMLRPCEventBasedParserDelegate.h | 52 + .../XMLRPC/XMLRPCEventBasedParserDelegate.m | 352 ++ Classes/Utils/XMLRPC/XMLRPCRequest.h | 51 + Classes/Utils/XMLRPC/XMLRPCRequest.m | 165 + Classes/Utils/XMLRPC/XMLRPCResponse.h | 33 + Classes/Utils/XMLRPC/XMLRPCResponse.m | 97 + Classes/WizardViewController.h | 19 +- Classes/WizardViewController.m | 390 +- Classes/WizardViewController.xib | 564 ++- linphone.xcodeproj/project.pbxproj | 108 + 97 files changed, 12758 insertions(+), 149 deletions(-) create mode 100755 Classes/Utils/XMLRPC/Configurations/Common.xcconfig create mode 100755 Classes/Utils/XMLRPC/Configurations/CommonDevelopment.xcconfig create mode 100755 Classes/Utils/XMLRPC/Configurations/CommonRelease.xcconfig create mode 100755 Classes/Utils/XMLRPC/Configurations/XMLRPC.xcconfig create mode 100755 Classes/Utils/XMLRPC/Configurations/XMLRPCDevelopment.xcconfig create mode 100755 Classes/Utils/XMLRPC/Configurations/XMLRPCRelease.xcconfig create mode 100755 Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTests.xcconfig create mode 100755 Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsDevelopment.xcconfig create mode 100755 Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsRelease.xcconfig create mode 100755 Classes/Utils/XMLRPC/LICENSE.md create mode 100755 Classes/Utils/XMLRPC/Languages/English.lproj/InfoPlist.strings create mode 100755 Classes/Utils/XMLRPC/NSData+Base64.h create mode 100755 Classes/Utils/XMLRPC/NSData+Base64.m create mode 100755 Classes/Utils/XMLRPC/NSStringAdditions.h create mode 100755 Classes/Utils/XMLRPC/NSStringAdditions.m create mode 100755 Classes/Utils/XMLRPC/README.md create mode 100755 Classes/Utils/XMLRPC/Resources/Property Lists/TestCases.plist create mode 100755 Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPC-Info.plist create mode 100755 Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPCUnitTests-Info.plist create mode 100755 Classes/Utils/XMLRPC/Resources/Test Cases/AlternativeDateFormatsTestCase.xml create mode 100755 Classes/Utils/XMLRPC/Resources/Test Cases/DefaultTypeTestCase.xml create mode 100755 Classes/Utils/XMLRPC/Resources/Test Cases/EmptyBooleanTestCase.xml create mode 100755 Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDataTestCase.xml create mode 100755 Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDoubleTestCase.xml create mode 100755 Classes/Utils/XMLRPC/Resources/Test Cases/EmptyIntegerTestCase.xml create mode 100755 Classes/Utils/XMLRPC/Resources/Test Cases/EmptyStringTestCase.xml create mode 100755 Classes/Utils/XMLRPC/Resources/Test Cases/SimpleArrayTestCase.xml create mode 100755 Classes/Utils/XMLRPC/Resources/Test Cases/SimpleStructTestCase.xml create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/Configurations/Common.xcconfig create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonDevelopment.xcconfig create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonRelease.xcconfig create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClient.xcconfig create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientDevelopment.xcconfig create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientRelease.xcconfig create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/InfoPlist.strings create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClient.xib create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientMainWindow.xib create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientXMLParserWindow.xib create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/Test Client.xcodeproj/project.pbxproj create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/TestClient-Info.plist create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/TestClient.pch create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.h create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.m create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.h create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.m create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.h create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.m create mode 100755 Classes/Utils/XMLRPC/Tools/Test Client/main.m create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/README.md create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/build.properties create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/build.xml create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/lib/commons-logging-1.1.1.jar create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/lib/log4j-1.2.15.jar create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/lib/ws-commons-util-1.0.2.jar create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/lib/xmlrpc-common-3.1.jar create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/lib/xmlrpc-server-3.1.jar create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/resources/handlers.properties create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/resources/log4j.xml create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/server.sh create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/Application.java create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/controller/XmlRpcServerControlPanelController.java create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/Server.java create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/handlers/Echo.java create mode 100755 Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/view/XmlRpcServerControlPanel.java create mode 100755 Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.h create mode 100755 Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.m create mode 100755 Classes/Utils/XMLRPC/XMLRPC.h create mode 100755 Classes/Utils/XMLRPC/XMLRPC.pch create mode 100755 Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj create mode 100644 Classes/Utils/XMLRPC/XMLRPC.xcodeproj/xcuserdata/ydiorcet.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100755 Classes/Utils/XMLRPC/XMLRPCConnection.h create mode 100755 Classes/Utils/XMLRPC/XMLRPCConnection.m create mode 100755 Classes/Utils/XMLRPC/XMLRPCConnectionDelegate.h create mode 100755 Classes/Utils/XMLRPC/XMLRPCConnectionManager.h create mode 100755 Classes/Utils/XMLRPC/XMLRPCConnectionManager.m create mode 100755 Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.h create mode 100755 Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.m create mode 100755 Classes/Utils/XMLRPC/XMLRPCEncoder.h create mode 100755 Classes/Utils/XMLRPC/XMLRPCEventBasedParser.h create mode 100755 Classes/Utils/XMLRPC/XMLRPCEventBasedParser.m create mode 100755 Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.h create mode 100755 Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.m create mode 100755 Classes/Utils/XMLRPC/XMLRPCRequest.h create mode 100755 Classes/Utils/XMLRPC/XMLRPCRequest.m create mode 100755 Classes/Utils/XMLRPC/XMLRPCResponse.h create mode 100755 Classes/Utils/XMLRPC/XMLRPCResponse.m diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index acd316020..7e3744458 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -266,6 +266,7 @@ static UICompositeViewDescription *compositeDescription = nil; } } + #pragma mark - Keyboard Event Functions - (void)keyboardWillHide:(NSNotification *)notif { diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index 47a4c9ebe..c5c02ef0f 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -122,22 +122,19 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)registrationUpdate:(LinphoneRegistrationState)state { switch (state) { - case LinphoneRegistrationOk: - { + case LinphoneRegistrationOk: { [[LinphoneManager instance].settingsStore setBool:false forKey:@"enable_first_login_view_preference"]; - [self.waitView setHidden:true]; + [waitView setHidden:true]; [[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]]; break; } case LinphoneRegistrationNone: - case LinphoneRegistrationCleared: - { - [self.waitView setHidden:true]; + case LinphoneRegistrationCleared: { + [waitView setHidden:true]; break; } - case LinphoneRegistrationFailed: - { - [self.waitView setHidden:true]; + case LinphoneRegistrationFailed: { + [waitView setHidden:true]; //default behavior if no registration delegates /*UIAlertView* error = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Registration failure for user %@", usernameField.text] @@ -153,7 +150,7 @@ static UICompositeViewDescription *compositeDescription = nil; break; } case LinphoneRegistrationProgress: { - [self.waitView setHidden:false]; + [waitView setHidden:false]; break; } default: break; diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 6dcb8fe49..34a82c210 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -82,6 +82,7 @@ typedef struct _LinphoneCallAppData { + (BOOL)isNotIphone3G; + (NSString *)getPreferenceForCodec: (const char*) name withRate: (int) rate; + (NSSet *)unsupportedCodecs; ++ (NSString *)getUserAgent; - (void)startLibLinphone; - (void)destroyLibLinphone; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 2086a32a3..d1b400faa 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -138,6 +138,14 @@ struct codec_name_pref_table codec_pref_table[]={ return result; } ++ (NSString *)getUserAgent { + return [NSString stringWithFormat:@"LinphoneIphone/%@ (Linphone/%s; Apple %@/%@)", + [[NSBundle mainBundle] objectForInfoDictionaryKey:(NSString*)kCFBundleVersionKey], + linphone_core_get_version(), + [UIDevice currentDevice].systemName, + [UIDevice currentDevice].systemVersion]; +} + + (LinphoneManager*)instance { if(theLinphoneManager == nil) { theLinphoneManager = [LinphoneManager alloc]; diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 598a50483..2068160e1 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -378,7 +378,7 @@ // Update rotation UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]]; if(currentOrientation != correctOrientation) { - [PhoneMainView forceOrientation:correctOrientation]; + [PhoneMainView forceOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown]; } currentOrientation = correctOrientation; [self updateInterfaceOrientation:correctOrientation]; diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 9d5150131..038db2155 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -60,7 +60,7 @@ - (void)showStateBar:(BOOL)show; - (void)showTabBar:(BOOL)show; - (void)fullScreen:(BOOL)enabled; -+ (void)forceOrientation:(UIInterfaceOrientation)orientation; ++ (void)forceOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated; + (PhoneMainView*) instance; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index b8695218f..9fc5479af 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -172,7 +172,7 @@ static PhoneMainView* phoneMainViewInstance=nil; /* Will simulate a device rotation */ -+ (void)forceOrientation:(UIInterfaceOrientation)orientation { ++ (void)forceOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated { for(UIWindow *window in [[UIApplication sharedApplication] windows]) { UIView *view = window; UIViewController *controller = nil; @@ -182,9 +182,16 @@ static PhoneMainView* phoneMainViewInstance=nil; view = controller.view; } UIInterfaceOrientation oldOrientation = controller.interfaceOrientation; - [controller willRotateToInterfaceOrientation:orientation duration:0.3]; - [UIView beginAnimations:nil context:nil]; - [UIView setAnimationDuration:0.3]; + + NSTimeInterval animationDuration = 0.0; + if(animated) { + animationDuration = 0.3f; + } + [controller willRotateToInterfaceOrientation:orientation duration:animationDuration]; + if(animated) { + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationDuration:animationDuration]; + } switch (orientation) { case UIInterfaceOrientationPortrait: [view setTransform: CGAffineTransformMakeRotation(0)]; @@ -204,8 +211,10 @@ static PhoneMainView* phoneMainViewInstance=nil; if([window isKindOfClass:[UILinphoneWindow class]]) { [view setFrame:frame]; } - [controller willAnimateRotationToInterfaceOrientation:orientation duration:0.3]; - [UIView commitAnimations]; + [controller willAnimateRotationToInterfaceOrientation:orientation duration:animationDuration]; + if(animated) { + [UIView commitAnimations]; + } [controller didRotateFromInterfaceOrientation:oldOrientation]; } [[UIApplication sharedApplication] setStatusBarOrientation:orientation animated:TRUE]; diff --git a/Classes/Utils/XMLRPC/Configurations/Common.xcconfig b/Classes/Utils/XMLRPC/Configurations/Common.xcconfig new file mode 100755 index 000000000..c1aba3d78 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/Common.xcconfig @@ -0,0 +1,16 @@ +ARCHS = $(ARCHS_STANDARD_32_64_BIT) +VALID_ARCHS = i386 ppc x86_64 +SDKROOT = macosx10.6 + +RUN_CLANG_STATIC_ANALYZER = YES + +GCC_C_LANGUAGE_STANDARD = gnu99 +GCC_PRECOMPILE_PREFIX_HEADER = YES +GCC_MODEL_TUNING = G5 + +GCC_WARN_ABOUT_MISSING_NEWLINE = YES +GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES +GCC_WARN_ABOUT_RETURN_TYPE = YES +GCC_WARN_UNUSED_VARIABLE = YES +GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = NO +GCC_TREAT_WARNINGS_AS_ERRORS = YES diff --git a/Classes/Utils/XMLRPC/Configurations/CommonDevelopment.xcconfig b/Classes/Utils/XMLRPC/Configurations/CommonDevelopment.xcconfig new file mode 100755 index 000000000..fd2066210 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/CommonDevelopment.xcconfig @@ -0,0 +1,6 @@ +#include "Common.xcconfig" + +DEBUG_INFORMATION_FORMAT = dwarf + +GCC_DYNAMIC_NO_PIC = NO +GCC_OPTIMIZATION_LEVEL = 0 diff --git a/Classes/Utils/XMLRPC/Configurations/CommonRelease.xcconfig b/Classes/Utils/XMLRPC/Configurations/CommonRelease.xcconfig new file mode 100755 index 000000000..54ace760e --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/CommonRelease.xcconfig @@ -0,0 +1,3 @@ +#include "Common.xcconfig" + +DEBUG_INFORMATION_FORMAT = dwarf-with-dsym diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPC.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPC.xcconfig new file mode 100755 index 000000000..a4cc02a92 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPC.xcconfig @@ -0,0 +1,12 @@ +PRODUCT_NAME = XMLRPC +INFOPLIST_FILE = Resources/Property Lists/XMLRPC-Info.plist + +FRAMEWORK_VERSION = A +DYLIB_CURRENT_VERSION = 1 +DYLIB_COMPATIBILITY_VERSION = 1 + +GCC_PRECOMPILE_PREFIX_HEADER = YES +GCC_PREFIX_HEADER = XMLRPC.pch +GCC_ENABLE_OBJC_GC = supported + +INSTALL_PATH = @loader_path/../Frameworks diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPCDevelopment.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPCDevelopment.xcconfig new file mode 100755 index 000000000..399d47fff --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPCDevelopment.xcconfig @@ -0,0 +1,2 @@ +#include "XMLRPC.xcconfig" +#include "CommonDevelopment.xcconfig" diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPCRelease.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPCRelease.xcconfig new file mode 100755 index 000000000..5a87b922d --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPCRelease.xcconfig @@ -0,0 +1,2 @@ +#include "XMLRPC.xcconfig" +#include "CommonRelease.xcconfig" diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTests.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTests.xcconfig new file mode 100755 index 000000000..b4c830f44 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTests.xcconfig @@ -0,0 +1,7 @@ +PRODUCT_NAME = XMLRPCUnitTests +INFOPLIST_FILE = Resources/Property Lists/XMLRPCUnitTests-Info.plist + +WRAPPER_EXTENSION=octest + +GCC_PRECOMPILE_PREFIX_HEADER = YES +GCC_PREFIX_HEADER = XMLRPC.pch diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsDevelopment.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsDevelopment.xcconfig new file mode 100755 index 000000000..b7ffa9c43 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsDevelopment.xcconfig @@ -0,0 +1,2 @@ +#include "XMLRPCUnitTests.xcconfig" +#include "CommonDevelopment.xcconfig" diff --git a/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsRelease.xcconfig b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsRelease.xcconfig new file mode 100755 index 000000000..1c1b03264 --- /dev/null +++ b/Classes/Utils/XMLRPC/Configurations/XMLRPCUnitTestsRelease.xcconfig @@ -0,0 +1,2 @@ +#include "XMLRPCUnitTests.xcconfig" +#include "CommonRelease.xcconfig" diff --git a/Classes/Utils/XMLRPC/LICENSE.md b/Classes/Utils/XMLRPC/LICENSE.md new file mode 100755 index 000000000..63faaeb29 --- /dev/null +++ b/Classes/Utils/XMLRPC/LICENSE.md @@ -0,0 +1,23 @@ +# License + +## The Cocoa XML-RPC Framework is distributed under the MIT License: + +Copyright (c) 2012 Eric Czarny + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Classes/Utils/XMLRPC/Languages/English.lproj/InfoPlist.strings b/Classes/Utils/XMLRPC/Languages/English.lproj/InfoPlist.strings new file mode 100755 index 0000000000000000000000000000000000000000..0bddbc34488616b54cbd8312e6610418a50348e1 GIT binary patch literal 274 zcmX|+$qoTQ6h+V4S5zz|#;sTpAwh(V*frV^Lra^|{>V?_Ad$+eTd&?7s$S1B1p+-1 z=0xn+a3^Nr-BnCEd6RGugSd1*vvv}g&{sENNYkz>XDOq^@#}Ju7ud?o)RsIKD3fyy z7}Mdx-n@hQSX@{$b+KNF4w=atRwjL18dm;0nLCZ_e%Zx;dRu;^W6VuPYHr|R)u>Q) Y1zP%Dt + +void *NewBase64Decode( + const char *inputBuffer, + size_t length, + size_t *outputLength); + +char *NewBase64Encode( + const void *inputBuffer, + size_t length, + bool separateLines, + size_t *outputLength); + +@interface NSData (Base64) + ++ (NSData *)dataFromBase64String:(NSString *)aString; +- (NSString *)base64EncodedString; + +@end diff --git a/Classes/Utils/XMLRPC/NSData+Base64.m b/Classes/Utils/XMLRPC/NSData+Base64.m new file mode 100755 index 000000000..2d719f2f1 --- /dev/null +++ b/Classes/Utils/XMLRPC/NSData+Base64.m @@ -0,0 +1,313 @@ +// +// NSData+Base64.m +// base64 +// +// Created by Matt Gallagher on 2009/06/03. +// Copyright 2009 Matt Gallagher. All rights reserved. +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. Permission is granted to anyone to +// use this software for any purpose, including commercial applications, and to +// alter it and redistribute it freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// 3. This notice may not be removed or altered from any source +// distribution. +// + +#import "NSData+Base64.h" + +// +// Mapping from 6 bit pattern to ASCII character. +// +static unsigned char base64EncodeLookup[65] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + +// +// Definition for "masked-out" areas of the base64DecodeLookup mapping +// +#define xx 65 + +// +// Mapping from ASCII character to 6 bit pattern. +// +static unsigned char base64DecodeLookup[256] = +{ + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 62, xx, xx, xx, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, xx, xx, xx, xx, xx, xx, + xx, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, xx, xx, xx, xx, xx, + xx, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, + xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, +}; + +// +// Fundamental sizes of the binary and base64 encode/decode units in bytes +// +#define BINARY_UNIT_SIZE 3 +#define BASE64_UNIT_SIZE 4 + +// +// NewBase64Decode +// +// Decodes the base64 ASCII string in the inputBuffer to a newly malloced +// output buffer. +// +// inputBuffer - the source ASCII string for the decode +// length - the length of the string or -1 (to specify strlen should be used) +// outputLength - if not-NULL, on output will contain the decoded length +// +// returns the decoded buffer. Must be free'd by caller. Length is given by +// outputLength. +// +void *NewBase64Decode( + const char *inputBuffer, + size_t length, + size_t *outputLength) +{ + if (length == -1) + { + length = strlen(inputBuffer); + } + + size_t outputBufferSize = + ((length+BASE64_UNIT_SIZE-1) / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE; + unsigned char *outputBuffer = (unsigned char *)malloc(outputBufferSize); + + size_t i = 0; + size_t j = 0; + while (i < length) + { + // + // Accumulate 4 valid characters (ignore everything else) + // + unsigned char accumulated[BASE64_UNIT_SIZE]; + size_t accumulateIndex = 0; + while (i < length) + { + unsigned char decode = base64DecodeLookup[inputBuffer[i++]]; + if (decode != xx) + { + accumulated[accumulateIndex] = decode; + accumulateIndex++; + + if (accumulateIndex == BASE64_UNIT_SIZE) + { + break; + } + } + } + + // + // Store the 6 bits from each of the 4 characters as 3 bytes + // + // (Uses improved bounds checking suggested by Alexandre Colucci) + // + if(accumulateIndex >= 2) + outputBuffer[j] = (accumulated[0] << 2) | (accumulated[1] >> 4); + if(accumulateIndex >= 3) + outputBuffer[j + 1] = (accumulated[1] << 4) | (accumulated[2] >> 2); + if(accumulateIndex >= 4) + outputBuffer[j + 2] = (accumulated[2] << 6) | accumulated[3]; + j += accumulateIndex - 1; + } + + if (outputLength) + { + *outputLength = j; + } + return outputBuffer; +} + +// +// NewBase64Encode +// +// Encodes the arbitrary data in the inputBuffer as base64 into a newly malloced +// output buffer. +// +// inputBuffer - the source data for the encode +// length - the length of the input in bytes +// separateLines - if zero, no CR/LF characters will be added. Otherwise +// a CR/LF pair will be added every 64 encoded chars. +// outputLength - if not-NULL, on output will contain the encoded length +// (not including terminating 0 char) +// +// returns the encoded buffer. Must be free'd by caller. Length is given by +// outputLength. +// +char *NewBase64Encode( + const void *buffer, + size_t length, + bool separateLines, + size_t *outputLength) +{ + const unsigned char *inputBuffer = (const unsigned char *)buffer; + + #define MAX_NUM_PADDING_CHARS 2 + #define OUTPUT_LINE_LENGTH 64 + #define INPUT_LINE_LENGTH ((OUTPUT_LINE_LENGTH / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE) + #define CR_LF_SIZE 2 + + // + // Byte accurate calculation of final buffer size + // + size_t outputBufferSize = + ((length / BINARY_UNIT_SIZE) + + ((length % BINARY_UNIT_SIZE) ? 1 : 0)) + * BASE64_UNIT_SIZE; + if (separateLines) + { + outputBufferSize += + (outputBufferSize / OUTPUT_LINE_LENGTH) * CR_LF_SIZE; + } + + // + // Include space for a terminating zero + // + outputBufferSize += 1; + + // + // Allocate the output buffer + // + char *outputBuffer = (char *)malloc(outputBufferSize); + if (!outputBuffer) + { + return NULL; + } + + size_t i = 0; + size_t j = 0; + const size_t lineLength = separateLines ? INPUT_LINE_LENGTH : length; + size_t lineEnd = lineLength; + + while (true) + { + if (lineEnd > length) + { + lineEnd = length; + } + + for (; i + BINARY_UNIT_SIZE - 1 < lineEnd; i += BINARY_UNIT_SIZE) + { + // + // Inner loop: turn 48 bytes into 64 base64 characters + // + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; + outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4) + | ((inputBuffer[i + 1] & 0xF0) >> 4)]; + outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i + 1] & 0x0F) << 2) + | ((inputBuffer[i + 2] & 0xC0) >> 6)]; + outputBuffer[j++] = base64EncodeLookup[inputBuffer[i + 2] & 0x3F]; + } + + if (lineEnd == length) + { + break; + } + + // + // Add the newline + // + outputBuffer[j++] = '\r'; + outputBuffer[j++] = '\n'; + lineEnd += lineLength; + } + + if (i + 1 < length) + { + // + // Handle the single '=' case + // + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; + outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4) + | ((inputBuffer[i + 1] & 0xF0) >> 4)]; + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i + 1] & 0x0F) << 2]; + outputBuffer[j++] = '='; + } + else if (i < length) + { + // + // Handle the double '=' case + // + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2]; + outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0x03) << 4]; + outputBuffer[j++] = '='; + outputBuffer[j++] = '='; + } + outputBuffer[j] = 0; + + // + // Set the output length and return the buffer + // + if (outputLength) + { + *outputLength = j; + } + return outputBuffer; +} + +@implementation NSData (Base64) + +// +// dataFromBase64String: +// +// Creates an NSData object containing the base64 decoded representation of +// the base64 string 'aString' +// +// Parameters: +// aString - the base64 string to decode +// +// returns the autoreleased NSData representation of the base64 string +// ++ (NSData *)dataFromBase64String:(NSString *)aString +{ + NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding]; + size_t outputLength; + void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength); + NSData *result = [NSData dataWithBytes:outputBuffer length:outputLength]; + free(outputBuffer); + return result; +} + +// +// base64EncodedString +// +// Creates an NSString object that contains the base 64 encoding of the +// receiver's data. Lines are broken at 64 characters long. +// +// returns an autoreleased NSString being the base 64 representation of the +// receiver. +// +- (NSString *)base64EncodedString +{ + size_t outputLength; + char *outputBuffer = + NewBase64Encode([self bytes], [self length], true, &outputLength); + + NSString *result =[[NSString alloc] initWithBytes:outputBuffer + length:outputLength + encoding:NSASCIIStringEncoding]; +#if ! __has_feature(objc_arc) + [result autorelease]; +#endif + free(outputBuffer); + return result; +} + +@end diff --git a/Classes/Utils/XMLRPC/NSStringAdditions.h b/Classes/Utils/XMLRPC/NSStringAdditions.h new file mode 100755 index 000000000..26f0937bd --- /dev/null +++ b/Classes/Utils/XMLRPC/NSStringAdditions.h @@ -0,0 +1,13 @@ +#import + +@interface NSString (NSStringAdditions) + ++ (NSString *)stringByGeneratingUUID; + +#pragma mark - + +- (NSString *)unescapedString; + +- (NSString *)escapedString; + +@end diff --git a/Classes/Utils/XMLRPC/NSStringAdditions.m b/Classes/Utils/XMLRPC/NSStringAdditions.m new file mode 100755 index 000000000..9c728b79f --- /dev/null +++ b/Classes/Utils/XMLRPC/NSStringAdditions.m @@ -0,0 +1,46 @@ +#import "NSStringAdditions.h" + +@implementation NSString (NSStringAdditions) + ++ (NSString *)stringByGeneratingUUID { + CFUUIDRef UUIDReference = CFUUIDCreate(nil); + CFStringRef temporaryUUIDString = CFUUIDCreateString(nil, UUIDReference); + + CFRelease(UUIDReference); +#if ! __has_feature(objc_arc) + return [NSMakeCollectable(temporaryUUIDString) autorelease]; +#else + return (__bridge_transfer NSString*)temporaryUUIDString; +#endif +} + +#pragma mark - + +- (NSString *)unescapedString { + NSMutableString *string = [NSMutableString stringWithString: self]; + + [string replaceOccurrencesOfString: @"&" withString: @"&" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @""" withString: @"\"" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"'" withString: @"'" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"9" withString: @"'" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"’" withString: @"'" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"–" withString: @"'" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @">" withString: @">" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"<" withString: @"<" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + + return [NSString stringWithString: string]; +} + +- (NSString *)escapedString { + NSMutableString *string = [NSMutableString stringWithString: self]; + + // NOTE: we use unicode entities instead of & > < etc. since some hosts (powweb, fatcow, and similar) + // have a weird PHP/libxml2 combination that ignores regular entities + [string replaceOccurrencesOfString: @"&" withString: @"&" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @">" withString: @">" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + [string replaceOccurrencesOfString: @"<" withString: @"<" options: NSLiteralSearch range: NSMakeRange(0, [string length])]; + + return [NSString stringWithString: string]; +} + +@end diff --git a/Classes/Utils/XMLRPC/README.md b/Classes/Utils/XMLRPC/README.md new file mode 100755 index 000000000..3bcc0736e --- /dev/null +++ b/Classes/Utils/XMLRPC/README.md @@ -0,0 +1,87 @@ +# The Cocoa XML-RPC Framework + +The Cocoa XML-RPC Framework is a simple, and lightweight, XML-RPC client framework written in Objective-C. + +# Requirements + +The Cocoa XML-RPC Framework has been built, and designed, for Mac OS X 10.5 or later. This release should provide basic iPhone and iPod touch support. + +This version of the Cocoa XML-RPC Framework includes a new event-based XML parser. The previous tree-based XML parser still exists, but is no longer the default XML-RPC response parser nor included in the Xcode build. This should hopefully provide better compatibility with the iPhone SDK. + +# Usage + +The following example of the Cocoa XML-RPC Framework assumes that the included XML-RPC test server is available. More information on the test server can be found in the README under: + + XMLRPC\Tools\Test Server + +Please review this document before moving forward. + +## Invoking XML-RPC requests through the XML-RPC connection manager + +Invoking an XML-RPC request through the XML-RPC connection manager is easy: + + NSURL *URL = [NSURL URLWithString: @"http://127.0.0.1:8080/"]; + XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL]; + XMLRPCConnectionManager *manager = [XMLRPCConnectionManager sharedManager]; + + [request setMethod: @"Echo.echo" withParameter: @"Hello World!"]; + + NSLog(@"Request body: %@", [request body]); + + [manager spawnConnectionWithXMLRPCRequest: request delegate: self]; + + [request release]; + +This spawns a new XML-RPC connection, assigning that connection with a unique identifer and returning it to the sender. This unique identifier, a UUID expressed as an NSString, can then be used to obtain the XML-RPC connection from the XML-RPC connection manager, as long as it is still active. + +The XML-RPC connection manager has been designed to ease the management of active XML-RPC connections. For example, the following method obtains an NSArray of active XML-RPC connection identifiers: + + - (NSArray *)activeConnectionIdentifiers; + +The NSArray returned by this method contains a list of each active connection identifier. Provided with a connection identifier, the following method will return an instance of the requested XML-RPC connection: + + - (XMLRPCConnection *)connectionForIdentifier: (NSString *)connectionIdentifier; + +Finally, for a delegate to receive XML-RPC responses, authentication challenges, or errors, the XMLRPCConnectionDelegate protocol must be implemented. For example, the following will handle successful XML-RPC responses: + + - (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response { + if ([response isFault]) { + NSLog(@"Fault code: %@", [response faultCode]); + + NSLog(@"Fault string: %@", [response faultString]); + } else { + NSLog(@"Parsed response: %@", [response object]); + } + + NSLog(@"Response body: %@", [response body]); + } + +Refer to XMLRPCConnectionDelegate.h for a full list of methods a delegate must implement. Each of these delegate methods plays a role in the life of an active XML-RPC connection. + +## Sending synchronous XML-RPC requests + +There are situations where it may be desirable to invoke XML-RPC requests synchronously in another thread or background process. The following method declared in XMLRPCConnection.h will invoke an XML-RPC request synchronously: + + + (XMLRPCResponse *)sendSynchronousXMLRPCRequest: (XMLRPCRequest *)request error: (NSError **)error; + +If there is a problem sending the XML-RPC request expect nil to be returned. + +# What if I find a bug, or what if I want to help? + +Please, contact me with any questions, comments, suggestions, or problems. I try to make the time to answer every request. + +Those wishing to contribute to the project should begin by obtaining the latest source with Git. The project is hosted on GitHub, making it easy for anyone to make contributions. Simply create a fork and make your changes. + +# Acknowledgments + +The Base64 encoder/decoder found in NSData+Base64 is created by [Matt Gallagher](http://cocoawithlove.com/2009/06/base64-encoding-options-on-mac-and.html). + +The idea for this framework came from examples provided by Brent Simmons, the creator of NetNewsWire. + +# License + +Copyright (c) 2012 Eric Czarny. + +The Cocoa XML-RPC Framework should be accompanied by a LICENSE file, this file contains the license relevant to this distribution. + +If no LICENSE exists please contact Eric Czarny . diff --git a/Classes/Utils/XMLRPC/Resources/Property Lists/TestCases.plist b/Classes/Utils/XMLRPC/Resources/Property Lists/TestCases.plist new file mode 100755 index 000000000..65f7caf03 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Property Lists/TestCases.plist @@ -0,0 +1,41 @@ + + + + + AlternativeDateFormatsTestCase + + 2009-12-02T01:49:00Z + 2009-12-02T01:50:00Z + + DefaultTypeTestCase + Hello World! + EmptyBooleanTestCase + 0 + EmptyDataTestCase + + EmptyDoubleTestCase + 0 + EmptyIntegerTestCase + 0 + EmptyStringTestCase + + SimpleArrayTestCase + + Hello World! + 42 + 3.14 + 1 + 2009-07-18T21:34:00Z + eW91IGNhbid0IHJlYWQgdGhpcyE= + + SimpleStructTestCase + + Name + Eric Czarny + Birthday + 1984-04-15T05:00:00Z + Age + 25 + + + diff --git a/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPC-Info.plist b/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPC-Info.plist new file mode 100755 index 000000000..f9624ae91 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPC-Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + XMLRPC + CFBundleIdentifier + com.divisiblebyzero.XMLRPC + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + XMLRPC + CFBundlePackageType + FMWK + CFBundleSignature + ZERO + CFBundleVersion + 2.2.1 + CFBundleShortVersionString + 2.2.1 + + diff --git a/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPCUnitTests-Info.plist b/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPCUnitTests-Info.plist new file mode 100755 index 000000000..492f334bb --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Property Lists/XMLRPCUnitTests-Info.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.divisiblebyzero.XMLRPCUnitTests + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + XMLRPCUnitTests + CFBundlePackageType + BNDL + CFBundleSignature + ZERO + CFBundleVersion + 1.0 + CFBundleShortVersionString + 1.0 + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/AlternativeDateFormatsTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/AlternativeDateFormatsTestCase.xml new file mode 100755 index 000000000..2e197f1eb --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/AlternativeDateFormatsTestCase.xml @@ -0,0 +1,15 @@ + + + + + + + + 20091201T20:49:00 + 2009-12-01T20:50:00 + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/DefaultTypeTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/DefaultTypeTestCase.xml new file mode 100755 index 000000000..8375ba6d3 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/DefaultTypeTestCase.xml @@ -0,0 +1,8 @@ + + + + + Hello World! + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyBooleanTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyBooleanTestCase.xml new file mode 100755 index 000000000..dd0a4f980 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyBooleanTestCase.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDataTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDataTestCase.xml new file mode 100755 index 000000000..a055d2d57 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDataTestCase.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDoubleTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDoubleTestCase.xml new file mode 100755 index 000000000..1d82be425 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyDoubleTestCase.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyIntegerTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyIntegerTestCase.xml new file mode 100755 index 000000000..99c93d799 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyIntegerTestCase.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyStringTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyStringTestCase.xml new file mode 100755 index 000000000..3813759fd --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/EmptyStringTestCase.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleArrayTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleArrayTestCase.xml new file mode 100755 index 000000000..41388ccc8 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleArrayTestCase.xml @@ -0,0 +1,19 @@ + + + + + + + + Hello World! + 42 + 3.14 + 1 + 20090718T17:34:00 + eW91IGNhbid0IHJlYWQgdGhpcyE= + + + + + + diff --git a/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleStructTestCase.xml b/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleStructTestCase.xml new file mode 100755 index 000000000..d2552c311 --- /dev/null +++ b/Classes/Utils/XMLRPC/Resources/Test Cases/SimpleStructTestCase.xml @@ -0,0 +1,23 @@ + + + + + + + + Name + Eric Czarny + + + Birthday + 1984-04-15T00:00:00 + + + Age + 25 + + + + + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/Common.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/Common.xcconfig new file mode 100755 index 000000000..587996846 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/Common.xcconfig @@ -0,0 +1,14 @@ +ARCHS = $(ARCHS_STANDARD_32_64_BIT) +VALID_ARCHS = i386 ppc x86_64 +SDKROOT = macosx10.6 +PREBINDING = NO + +GCC_C_LANGUAGE_STANDARD = gnu99 +GCC_PRECOMPILE_PREFIX_HEADER = YES +GCC_MODEL_TUNING = G5 + +GCC_WARN_ABOUT_MISSING_NEWLINE = YES +GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = YES +GCC_WARN_ABOUT_RETURN_TYPE = YES +GCC_WARN_UNUSED_VARIABLE = YES +GCC_TREAT_WARNINGS_AS_ERRORS = YES diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonDevelopment.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonDevelopment.xcconfig new file mode 100755 index 000000000..a4de0d06d --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonDevelopment.xcconfig @@ -0,0 +1,7 @@ +#include "Common.xcconfig" + +ONLY_ACTIVE_ARCH = YES + +DEBUG_INFORMATION_FORMAT = dwarf + +GCC_OPTIMIZATION_LEVEL = 0 diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonRelease.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonRelease.xcconfig new file mode 100755 index 000000000..d49f88eed --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/CommonRelease.xcconfig @@ -0,0 +1,5 @@ +#include "Common.xcconfig" + +DEBUG_INFORMATION_FORMAT = dwarf-with-dsym + +GCC_OPTIMIZATION_LEVEL = s diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClient.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClient.xcconfig new file mode 100755 index 000000000..fb2896703 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClient.xcconfig @@ -0,0 +1,7 @@ +PRODUCT_NAME = Test Client +INFOPLIST_FILE = TestClient-Info.plist + +GCC_PRECOMPILE_PREFIX_HEADER = YES +GCC_PREFIX_HEADER = TestClient.pch + +INSTALL_PATH = /Applications diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientDevelopment.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientDevelopment.xcconfig new file mode 100755 index 000000000..35a8b9a27 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientDevelopment.xcconfig @@ -0,0 +1,2 @@ +#include "TestClient.xcconfig" +#include "CommonDevelopment.xcconfig" diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientRelease.xcconfig b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientRelease.xcconfig new file mode 100755 index 000000000..3835f9903 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Configurations/TestClientRelease.xcconfig @@ -0,0 +1,2 @@ +#include "TestClient.xcconfig" +#include "CommonRelease.xcconfig" diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/InfoPlist.strings b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/InfoPlist.strings new file mode 100755 index 0000000000000000000000000000000000000000..58481ab2694d2bf7dafccfcbd5dc3b1fe2b83ee2 GIT binary patch literal 264 zcmZvX%MJlS5Jk`0S9B~To?EeEL4pVtA~u5=#53cO@JD_U$Jk1xtGcUhovMDn$`lB6 zIkF&P$A$+nOLI44%Gu13gE1HreaBbgy~HWgpShUbs=jBc0%dYqpAl`Y?ByO9T94#L z% + + + 1050 + 10C540 + 740 + 1038.25 + 458.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 740 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + Test Client + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + Test Client + + YES + + + About Test Client + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Preferences… + , + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide Test Client + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit Test Client + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + New + n + 1048576 + 2147483647 + + + + + + Open… + o + 1048576 + 2147483647 + + + + + + Open Recent + + 1048576 + 2147483647 + + + submenuAction: + + Open Recent + + YES + + + Clear Menu + + 1048576 + 2147483647 + + + + + _NSRecentDocumentsMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Close + w + 1048576 + 2147483647 + + + + + + Save + s + 1048576 + 2147483647 + + + + + + Save As… + S + 1179648 + 2147483647 + + + + + + Revert to Saved + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Page Setup... + P + 1179648 + 2147483647 + + + + + + + Print… + p + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Format + + 2147483647 + + + submenuAction: + + Format + + YES + + + Font + + 2147483647 + + + submenuAction: + + Font + + YES + + + Show Fonts + t + 1048576 + 2147483647 + + + + + + Bold + b + 1048576 + 2147483647 + + + 2 + + + + Italic + i + 1048576 + 2147483647 + + + 1 + + + + Underline + u + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Bigger + + + 1048576 + 2147483647 + + + 3 + + + + Smaller + - + 1048576 + 2147483647 + + + 4 + + + + YES + YES + + + 2147483647 + + + + + + Kern + + 2147483647 + + + submenuAction: + + Kern + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Tighten + + 2147483647 + + + + + + Loosen + + 2147483647 + + + + + + + + + Ligature + + 2147483647 + + + submenuAction: + + Ligature + + YES + + + Use Default + + 2147483647 + + + + + + Use None + + 2147483647 + + + + + + Use All + + 2147483647 + + + + + + + + + Baseline + + 2147483647 + + + submenuAction: + + Baseline + + YES + + + Use Default + + 2147483647 + + + + + + Superscript + + 2147483647 + + + + + + Subscript + + 2147483647 + + + + + + Raise + + 2147483647 + + + + + + Lower + + 2147483647 + + + + + + + + + YES + YES + + + 2147483647 + + + + + + Show Colors + C + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Copy Style + c + 1572864 + 2147483647 + + + + + + Paste Style + v + 1572864 + 2147483647 + + + + + _NSFontMenu + + + + + Text + + 2147483647 + + + submenuAction: + + Text + + YES + + + Align Left + { + 1048576 + 2147483647 + + + + + + Center + | + 1048576 + 2147483647 + + + + + + Justify + + 2147483647 + + + + + + Align Right + } + 1048576 + 2147483647 + + + + + + YES + YES + + + 2147483647 + + + + + + Show Ruler + + 2147483647 + + + + + + Copy Ruler + c + 1310720 + 2147483647 + + + + + + Paste Ruler + v + 1310720 + 2147483647 + + + + + + + + + + + + View + + 1048576 + 2147483647 + + + submenuAction: + + View + + YES + + + Show Toolbar + t + 1572864 + 2147483647 + + + + + + Customize Toolbar… + + 1048576 + 2147483647 + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Main Window + 0 + 1048576 + 2147483647 + + + + + + XML Parser + 1 + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + Test Client Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + NSFontManager + + + TestClientApplicationController + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + print: + + + + 86 + + + + runPageLayout: + + + + 87 + + + + clearRecentDocuments: + + + + 127 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + saveDocument: + + + + 362 + + + + saveDocumentAs: + + + + 363 + + + + revertDocumentToSaved: + + + + 364 + + + + runToolbarCustomizationPalette: + + + + 365 + + + + toggleToolbarShown: + + + + 366 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + unhideAllApplications: + + + + 370 + + + + newDocument: + + + + 373 + + + + openDocument: + + + + 374 + + + + addFontTrait: + + + + 421 + + + + addFontTrait: + + + + 422 + + + + modifyFont: + + + + 423 + + + + orderFrontFontPanel: + + + + 424 + + + + modifyFont: + + + + 425 + + + + raiseBaseline: + + + + 426 + + + + lowerBaseline: + + + + 427 + + + + copyFont: + + + + 428 + + + + subscript: + + + + 429 + + + + superscript: + + + + 430 + + + + tightenKerning: + + + + 431 + + + + underline: + + + + 432 + + + + orderFrontColorPanel: + + + + 433 + + + + useAllLigatures: + + + + 434 + + + + loosenKerning: + + + + 435 + + + + pasteFont: + + + + 436 + + + + unscript: + + + + 437 + + + + useStandardKerning: + + + + 438 + + + + useStandardLigatures: + + + + 439 + + + + turnOffLigatures: + + + + 440 + + + + turnOffKerning: + + + + 441 + + + + alignLeft: + + + + 442 + + + + alignJustified: + + + + 443 + + + + copyRuler: + + + + 444 + + + + alignCenter: + + + + 445 + + + + toggleRuler: + + + + 446 + + + + alignRight: + + + + 447 + + + + pasteRuler: + + + + 448 + + + + terminate: + + + + 449 + + + + delegate + + + + 457 + + + + toggleTestClientWindow: + + + + 461 + + + + toggleXMLParserWindow: + + + + 462 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + + + Main Menu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + + + + + + + + + + + 75 + + + 3 + + + 80 + + + 8 + + + 78 + + + 6 + + + 72 + + + + + 82 + + + 9 + + + 124 + + + YES + + + + + + 77 + + + 5 + + + 73 + + + 1 + + + 79 + + + 7 + + + 112 + + + 10 + + + 74 + + + 2 + + + 125 + + + YES + + + + + + 126 + + + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 129 + + + 121 + + + 143 + + + + + 236 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 295 + + + YES + + + + + + 296 + + + YES + + + + + + + 297 + + + + + 298 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 375 + + + YES + + + + + + 376 + + + YES + + + + + + + 377 + + + YES + + + + + + 378 + + + YES + + + + + + 379 + + + YES + + + + + + + + + + + + + 380 + + + + + 381 + + + + + 382 + + + + + 383 + + + + + 384 + + + + + 385 + + + + + 386 + + + + + 387 + + + + + 388 + + + YES + + + + + + + + + + + + + + + + + + + + + 389 + + + + + 390 + + + + + 391 + + + + + 392 + + + + + 393 + + + + + 394 + + + + + 395 + + + + + 396 + + + + + 397 + + + YES + + + + + + 398 + + + YES + + + + + + 399 + + + YES + + + + + + 400 + + + + + 401 + + + + + 402 + + + + + 403 + + + + + 404 + + + + + 405 + + + YES + + + + + + + + + + 406 + + + + + 407 + + + + + 408 + + + + + 409 + + + + + 410 + + + + + 411 + + + YES + + + + + + + + 412 + + + + + 413 + + + + + 414 + + + + + 415 + + + YES + + + + + + + + + 416 + + + + + 417 + + + + + 418 + + + + + 419 + + + + + 420 + + + + + 450 + + + + + 451 + + + + + 455 + + + Application Controller + + + 458 + + + + + + + YES + + YES + -3.IBPluginDependency + 103.IBPluginDependency + 103.ImportedFromIB2 + 106.IBEditorWindowLastContentRect + 106.IBPluginDependency + 106.ImportedFromIB2 + 106.editorWindowContentRectSynchronizationRect + 111.IBPluginDependency + 111.ImportedFromIB2 + 112.IBPluginDependency + 112.ImportedFromIB2 + 124.IBPluginDependency + 124.ImportedFromIB2 + 125.IBPluginDependency + 125.ImportedFromIB2 + 125.editorWindowContentRectSynchronizationRect + 126.IBPluginDependency + 126.ImportedFromIB2 + 129.IBPluginDependency + 129.ImportedFromIB2 + 130.IBPluginDependency + 130.ImportedFromIB2 + 130.editorWindowContentRectSynchronizationRect + 131.IBPluginDependency + 131.ImportedFromIB2 + 134.IBPluginDependency + 134.ImportedFromIB2 + 136.IBPluginDependency + 136.ImportedFromIB2 + 143.IBPluginDependency + 143.ImportedFromIB2 + 144.IBPluginDependency + 144.ImportedFromIB2 + 145.IBPluginDependency + 145.ImportedFromIB2 + 149.IBPluginDependency + 149.ImportedFromIB2 + 150.IBPluginDependency + 150.ImportedFromIB2 + 19.IBPluginDependency + 19.ImportedFromIB2 + 195.IBPluginDependency + 195.ImportedFromIB2 + 196.IBPluginDependency + 196.ImportedFromIB2 + 197.IBPluginDependency + 197.ImportedFromIB2 + 198.IBPluginDependency + 198.ImportedFromIB2 + 199.IBPluginDependency + 199.ImportedFromIB2 + 200.IBPluginDependency + 200.ImportedFromIB2 + 200.editorWindowContentRectSynchronizationRect + 201.IBPluginDependency + 201.ImportedFromIB2 + 202.IBPluginDependency + 202.ImportedFromIB2 + 203.IBPluginDependency + 203.ImportedFromIB2 + 204.IBPluginDependency + 204.ImportedFromIB2 + 205.IBEditorWindowLastContentRect + 205.IBPluginDependency + 205.ImportedFromIB2 + 205.editorWindowContentRectSynchronizationRect + 206.IBPluginDependency + 206.ImportedFromIB2 + 207.IBPluginDependency + 207.ImportedFromIB2 + 208.IBPluginDependency + 208.ImportedFromIB2 + 209.IBPluginDependency + 209.ImportedFromIB2 + 210.IBPluginDependency + 210.ImportedFromIB2 + 211.IBPluginDependency + 211.ImportedFromIB2 + 212.IBPluginDependency + 212.ImportedFromIB2 + 212.editorWindowContentRectSynchronizationRect + 213.IBPluginDependency + 213.ImportedFromIB2 + 214.IBPluginDependency + 214.ImportedFromIB2 + 215.IBPluginDependency + 215.ImportedFromIB2 + 216.IBPluginDependency + 216.ImportedFromIB2 + 217.IBPluginDependency + 217.ImportedFromIB2 + 218.IBPluginDependency + 218.ImportedFromIB2 + 219.IBPluginDependency + 219.ImportedFromIB2 + 220.IBPluginDependency + 220.ImportedFromIB2 + 220.editorWindowContentRectSynchronizationRect + 221.IBPluginDependency + 221.ImportedFromIB2 + 23.IBPluginDependency + 23.ImportedFromIB2 + 236.IBPluginDependency + 236.ImportedFromIB2 + 239.IBPluginDependency + 239.ImportedFromIB2 + 24.IBEditorWindowLastContentRect + 24.IBPluginDependency + 24.ImportedFromIB2 + 24.editorWindowContentRectSynchronizationRect + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 29.ImportedFromIB2 + 29.WindowOrigin + 29.editorWindowContentRectSynchronizationRect + 295.IBPluginDependency + 296.IBEditorWindowLastContentRect + 296.IBPluginDependency + 296.editorWindowContentRectSynchronizationRect + 297.IBPluginDependency + 298.IBPluginDependency + 346.IBPluginDependency + 346.ImportedFromIB2 + 348.IBPluginDependency + 348.ImportedFromIB2 + 349.IBPluginDependency + 349.ImportedFromIB2 + 349.editorWindowContentRectSynchronizationRect + 350.IBPluginDependency + 350.ImportedFromIB2 + 351.IBPluginDependency + 351.ImportedFromIB2 + 354.IBPluginDependency + 354.ImportedFromIB2 + 375.IBPluginDependency + 376.IBEditorWindowLastContentRect + 376.IBPluginDependency + 377.IBPluginDependency + 378.IBPluginDependency + 379.IBPluginDependency + 380.IBPluginDependency + 381.IBPluginDependency + 382.IBPluginDependency + 383.IBPluginDependency + 384.IBPluginDependency + 385.IBPluginDependency + 386.IBPluginDependency + 387.IBPluginDependency + 388.IBEditorWindowLastContentRect + 388.IBPluginDependency + 389.IBPluginDependency + 390.IBPluginDependency + 391.IBPluginDependency + 392.IBPluginDependency + 393.IBPluginDependency + 394.IBPluginDependency + 395.IBPluginDependency + 396.IBPluginDependency + 397.IBPluginDependency + 398.IBPluginDependency + 399.IBPluginDependency + 400.IBPluginDependency + 401.IBPluginDependency + 402.IBPluginDependency + 403.IBPluginDependency + 404.IBPluginDependency + 405.IBPluginDependency + 406.IBPluginDependency + 407.IBPluginDependency + 408.IBPluginDependency + 409.IBPluginDependency + 410.IBPluginDependency + 411.IBPluginDependency + 412.IBPluginDependency + 413.IBPluginDependency + 414.IBPluginDependency + 415.IBPluginDependency + 416.IBPluginDependency + 417.IBPluginDependency + 418.IBPluginDependency + 419.IBPluginDependency + 450.IBPluginDependency + 450.ImportedFromIB2 + 451.IBPluginDependency + 458.IBPluginDependency + 5.IBPluginDependency + 5.ImportedFromIB2 + 56.IBPluginDependency + 56.ImportedFromIB2 + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 57.ImportedFromIB2 + 57.editorWindowContentRectSynchronizationRect + 58.IBPluginDependency + 58.ImportedFromIB2 + 72.IBPluginDependency + 72.ImportedFromIB2 + 73.IBPluginDependency + 73.ImportedFromIB2 + 74.IBPluginDependency + 74.ImportedFromIB2 + 75.IBPluginDependency + 75.ImportedFromIB2 + 77.IBPluginDependency + 77.ImportedFromIB2 + 78.IBPluginDependency + 78.ImportedFromIB2 + 79.IBPluginDependency + 79.ImportedFromIB2 + 80.IBPluginDependency + 80.ImportedFromIB2 + 81.IBEditorWindowLastContentRect + 81.IBPluginDependency + 81.ImportedFromIB2 + 81.editorWindowContentRectSynchronizationRect + 82.IBPluginDependency + 82.ImportedFromIB2 + 83.IBPluginDependency + 83.ImportedFromIB2 + 92.IBPluginDependency + 92.ImportedFromIB2 + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + {{698, 824}, {183, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{596, 852}, {216, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{522, 812}, {146, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{436, 809}, {64, 6}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {275, 83}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{494, 604}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{187, 434}, {243, 243}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {167, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {241, 103}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{627, 724}, {197, 123}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{525, 802}, {197, 73}} + {{316, 847}, {443, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + + {74, 862} + {{6, 978}, {478, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + {{604, 804}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + {{475, 832}, {234, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{608, 612}, {215, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + {{538, 804}, {86, 43}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{523, 2}, {178, 283}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{328, 664}, {212, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{23, 794}, {245, 183}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + {{452, 644}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + {{145, 474}, {199, 203}} + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + com.apple.InterfaceBuilder.CocoaPlugin + + + + + YES + + + YES + + + + + YES + + + YES + + + + 462 + + + + YES + + TestClientApplicationController + NSObject + + YES + + YES + toggleTestClientWindow: + toggleXMLParserWindow: + + + YES + id + id + + + + IBProjectSource + TestClientApplicationController.h + + + + + YES + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSBrowser + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSBrowser.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSDocument + NSObject + + YES + + YES + printDocument: + revertDocumentToSaved: + runPageLayout: + saveDocument: + saveDocumentAs: + saveDocumentTo: + + + YES + id + id + id + id + id + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSDocument.h + + + + NSDocument + + IBFrameworkSource + AppKit.framework/Headers/NSDocumentScripting.h + + + + NSDocumentController + NSObject + + YES + + YES + clearRecentDocuments: + newDocument: + openDocument: + saveAllDocuments: + + + YES + id + id + id + id + + + + IBFrameworkSource + AppKit.framework/Headers/NSDocumentController.h + + + + NSFontManager + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSMatrix + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSMatrix.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSMovieView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMovieView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSTableView + NSControl + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + + 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../Test Client.xcodeproj + 3 + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientMainWindow.xib b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientMainWindow.xib new file mode 100755 index 000000000..bc486b4d2 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientMainWindow.xib @@ -0,0 +1,1992 @@ + + + + 1050 + 10C540 + 740 + 1038.25 + 458.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 740 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + TestClientMainWindowController + + + FirstResponder + + + NSApplication + + + 3 + 2 + {{600, 416}, {500, 442}} + 880280576 + Test Client + NSWindow + + {3.40282e+38, 3.40282e+38} + + + 268 + + YES + + + 1284 + + {{20, 8}, {16, 16}} + + 28938 + 16 + 100 + + + + 260 + {{361, 296}, {125, 32}} + + YES + + 67239424 + 134217728 + Send Request + + LucidaGrande + 13 + 1044 + + + -2034876161 + 129 + + + + 200 + 25 + + + + + 268 + {{134, 400}, {346, 22}} + + YES + + -1804468671 + 268436480 + http://127.0.0.1:8080/ + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 268 + {{17, 343}, {112, 16}} + + YES + + 68288064 + 71304192 + Parameter: + + LucidaGrande + 12 + 16 + + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2ODY1AA + + + + 6 + System + controlTextColor + + + + + + + 268 + {{335, 344}, {148, 13}} + + YES + + 68288064 + 4195328 + Type: String + + LucidaGrande + 10 + 16 + + + + + + + + + 268 + {{17, 373}, {112, 16}} + + YES + + 68288064 + 71304192 + Method: + + + + + + + + + 268 + {{134, 340}, {196, 22}} + + YES + + -1804468671 + 268436480 + Hello World! + + + YES + + + + + + + 268 + {{134, 370}, {196, 22}} + + YES + + -1804468671 + 268436480 + Echo.echo + + + YES + + + + + + + 268 + {{17, 403}, {112, 16}} + + YES + + 68288064 + 71304192 + Request URL: + + + + + + + + + 12 + {{-8, 22}, {516, 268}} + + + YES + + 1 + + + 256 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 2322 + {460, 14} + + + + + + + + + + + YES + + + 6 + + + + 460 + 1 + + + 12129 + 0 + + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + System + selectedTextBackgroundColor + + + + 6 + System + selectedTextColor + + + + + + + YES + + YES + NSColor + NSUnderline + + + YES + + 1 + MCAwIDEAA + + + + + + + 6 + {922, 1e+07} + {223, 0} + + + + {{1, 1}, {460, 200}} + + + + + + {4, -5} + 1 + + 4 + + + + -2147483392 + {{434, 1}, {15, 217}} + + + _doScroller: + 0.98750001192092896 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + 1 + + _doScroller: + 1 + 0.94565218687057495 + + + {{17, 17}, {462, 202}} + + + 530 + + + + + + {{10, 33}, {496, 222}} + + + Request Body + + + + + 2 + + + 256 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 2322 + {460, 14} + + + + + + + + + + + YES + + + 6 + + + + 460 + 1 + + + 12129 + 0 + + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + + + + + + YES + + YES + NSColor + NSUnderline + + + YES + + + + + + + 6 + {922, 1e+07} + {223, 0} + + + + {{1, 1}, {460, 200}} + + + + + + 4 + + + + -2147483392 + {{434, 1}, {15, 217}} + + + _doScroller: + 0.98750001192092896 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + 1 + + _doScroller: + 1 + 0.94565218687057495 + + + {{17, 17}, {462, 202}} + + + 530 + + + + + + {{10, 33}, {496, 222}} + + Response Body + + + + + 3 + + + 256 + + YES + + + 4364 + + YES + + + 2304 + + YES + + + 4352 + {460, 200} + + YES + + + -2147483392 + {{444, 0}, {16, 17}} + + + YES + + type + 125 + 16 + 1000 + + 75628096 + 2048 + + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 67239488 + 2048 + Text Cell + + + + 6 + System + controlBackgroundColor + + + + + + + + value + 331 + 40 + 1000 + + 75628096 + 2048 + + + + + + + 67239488 + 2048 + Text Cell + + + + + + + + + 2 + 3 + + + 1 + MC45MDE5NjA3OTAyIDAuOTAxOTYwNzkwMiAwLjkwMTk2MDc5MDIAA + + 17 + 314572800 + + + 1 + 4 + 15 + 0 + NO + 0 + 12 + + + {{1, 1}, {460, 200}} + + + + + 4 + + + + -2147483392 + {{450, 1}, {15, 172}} + + + _doScroller: + 0.91978609561920166 + + + + -2147483392 + {{1, 173}, {449, 15}} + + 1 + + _doScroller: + 0.96506547927856445 + + + {{17, 17}, {462, 202}} + + + 562 + + + + QSAAAEEgAABBoAAAQaAAAA + + + {{10, 33}, {496, 222}} + + Parsed Response + + + + + + + 0 + YES + YES + + YES + + + + + + -2147483388 + {{41, 9}, {442, 13}} + + YES + + 68288064 + 4195328 + + + Active Connection: 00000000-0000-0000-000000000000 + + + + + + + + 12 + {{20, 311}, {339, 5}} + + {0, 0} + + 67239424 + 0 + Box + + + + 3 + MCAwLjgwMDAwMDAxMTkAA + + + 3 + 2 + 0 + NO + + + {500, 442} + + {{0, 0}, {1280, 1002}} + {3.40282e+38, 3.40282e+38} + + + + + YES + + + myProgressIndicator + + + + 42 + + + + myRequestURL + + + + 44 + + + + window + + + + 47 + + + + sendRequest: + + + + 53 + + + + initialFirstResponder + + + + 54 + + + + sendRequest: + + + + 55 + + + + myMethod + + + + 65 + + + + sendRequest: + + + + 66 + + + + nextKeyView + + + + 67 + + + + myParameter + + + + 76 + + + + nextKeyView + + + + 77 + + + + nextKeyView + + + + 78 + + + + sendRequest: + + + + 79 + + + + mySendRequest + + + + 103 + + + + myActiveConnection + + + + 136 + + + + myRequestBody + + + + 137 + + + + myResponseBody + + + + 151 + + + + myParsedResponse + + + + 152 + + + + dataSource + + + + 153 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + YES + + + + Test Client + + + 2 + + + YES + + + + + + + + + + + + + + + + + 4 + + + + + 6 + + + YES + + + + + + 27 + + + + + 70 + + + YES + + + + + + 73 + + + + + 74 + + + YES + + + + + + 75 + + + + + 8 + + + YES + + + + + + 21 + + + + + 63 + + + YES + + + + + + 64 + + + + + 9 + + + YES + + + + + + 20 + + + + + 50 + + + YES + + + + + + 51 + + + + + 109 + + + YES + + + + + + + + 110 + + + YES + + + + + + 111 + + + YES + + + + + + 112 + + + YES + + + + + + 113 + + + YES + + + + + + 122 + + + YES + + + + + + + + 123 + + + + + 124 + + + + + 125 + + + + + 126 + + + YES + + + + + + 127 + + + YES + + + + + + 71 + + + YES + + + + + + 72 + + + + + 134 + + + YES + + + + + + 135 + + + + + 139 + + + YES + + + + + + + + 140 + + + + + 141 + + + + + 142 + + + YES + + + + + + + 143 + + + YES + + + + + + 144 + + + YES + + + + + + 145 + + + + + 146 + + + + + 147 + + + YES + + + + + + + + 148 + + + + + 149 + + + + + 150 + + + + + 154 + + + + + + + YES + + YES + -3.IBPluginDependency + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 1.IBViewEditorWindowController.showingBoundsRectangles + 1.IBViewEditorWindowController.showingLayoutRectangles + 1.IBWindowTemplateEditedContentRect + 1.NSWindowTemplate.visibleAtLaunch + 1.editorWindowContentRectSynchronizationRect + 1.windowTemplate.maxSize + 109.IBAttributePlaceholdersKey + 109.IBPluginDependency + 110.IBPluginDependency + 111.IBPluginDependency + 112.IBPluginDependency + 113.IBPluginDependency + 122.IBPluginDependency + 123.IBPluginDependency + 124.IBPluginDependency + 125.IBPluginDependency + 126.IBPluginDependency + 127.IBPluginDependency + 134.IBPluginDependency + 135.IBPluginDependency + 139.IBPluginDependency + 140.IBPluginDependency + 141.IBPluginDependency + 142.IBPluginDependency + 143.IBPluginDependency + 144.IBPluginDependency + 145.IBPluginDependency + 146.IBPluginDependency + 147.IBPluginDependency + 148.IBPluginDependency + 149.IBPluginDependency + 150.IBPluginDependency + 154.IBPluginDependency + 2.IBPluginDependency + 20.IBPluginDependency + 21.IBPluginDependency + 27.IBPluginDependency + 4.IBPluginDependency + 50.IBPluginDependency + 51.IBPluginDependency + 6.IBPluginDependency + 63.IBPluginDependency + 64.IBPluginDependency + 70.IBPluginDependency + 71.IBPluginDependency + 72.IBPluginDependency + 73.IBPluginDependency + 74.IBPluginDependency + 75.IBPluginDependency + 8.IBPluginDependency + 9.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + {{521, 272}, {500, 442}} + com.apple.InterfaceBuilder.CocoaPlugin + + + {{521, 272}, {500, 442}} + + {{642, 270}, {480, 514}} + {3.40282e+38, 3.40282e+38} + + YES + + + YES + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 154 + + + + YES + + TestClientMainWindowController + NSWindowController + + YES + + YES + hideTestClientWindow: + sendRequest: + showTestClientWindow: + toggleTestClientWindow: + + + YES + id + id + id + id + + + + YES + + YES + myActiveConnection + myMethod + myParameter + myParsedResponse + myProgressIndicator + myRequestBody + myRequestURL + myResponseBody + mySendRequest + + + YES + NSTextField + NSTextField + NSTextField + NSOutlineView + NSProgressIndicator + NSTextView + NSTextField + NSTextView + NSButton + + + + IBProjectSource + TestClientMainWindowController.h + + + + + YES + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSBox + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSBox.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSOutlineView + NSTableView + + + + NSProgressIndicator + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSProgressIndicator.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSScrollView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSScrollView.h + + + + NSScroller + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSScroller.h + + + + NSTabView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSTabView.h + + + + NSTabViewItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTabViewItem.h + + + + NSTableColumn + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableColumn.h + + + + NSTableView + NSControl + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextField + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTextField.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + NSWindowController + NSResponder + + showWindow: + id + + + IBFrameworkSource + AppKit.framework/Headers/NSWindowController.h + + + + + 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../Test Client.xcodeproj + 3 + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientXMLParserWindow.xib b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientXMLParserWindow.xib new file mode 100755 index 000000000..7eef35218 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Languages/English.lproj/TestClientXMLParserWindow.xib @@ -0,0 +1,1228 @@ + + + + 1050 + 10C540 + 740 + 1038.25 + 458.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 740 + + + YES + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + YES + + YES + + + YES + + + + YES + + TestClientXMLParserWindowController + + + FirstResponder + + + NSApplication + + + 3 + 2 + {{196, 13}, {490, 497}} + 872416256 + XML Parser + NSWindow + + {3.40282e+38, 3.40282e+38} + + + 288 + + YES + + + 268 + {{380, 12}, {96, 32}} + + YES + + 67239424 + 134217728 + Parse + + LucidaGrande + 13 + 1044 + + + -2038284033 + 129 + + + 200 + 25 + + + + + 256 + + YES + + + 268 + + YES + + + 2304 + + YES + + + 2322 + + YES + + YES + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + Apple URL pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + CorePasteboardFlavorType 0x75726C20 + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + NeXT font pasteboard type + NeXT ruler pasteboard type + WebURLsWithTitlesPboardType + public.url + + + {448, 14} + + + + + + + + + + + YES + + + 6 + + + + 448 + 1 + + + 12131 + 0 + + + 3 + MQA + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + System + selectedTextBackgroundColor + + 3 + MC42NjY2NjY2ODY1AA + + + + 6 + System + selectedTextColor + + 3 + MAA + + + + + + + YES + + YES + NSColor + NSUnderline + + + YES + + 1 + MCAwIDEAA + + + + + + + 6 + {922, 1e+07} + {223, 0} + + + + {{1, 1}, {448, 205}} + + + + + + {4, -5} + 1 + + 4 + + + + -2147483392 + {{434, 1}, {15, 217}} + + + _doScroller: + 0.98750001192092896 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + 1 + + _doScroller: + 1 + 0.94565218687057495 + + + {450, 207} + + + 530 + + + + + + + 4364 + + YES + + + 2304 + + YES + + + 4352 + {448, 200} + + YES + + + -2147483392 + {{434, 0}, {16, 17}} + + + YES + + type + 125 + 16 + 1000 + + 75628096 + 2048 + + + LucidaGrande + 11 + 3100 + + + 3 + MC4zMzMzMzI5ODU2AA + + + 6 + System + headerTextColor + + + + + 67239488 + 2048 + Text Cell + + + + 6 + System + controlBackgroundColor + + + + 6 + System + controlTextColor + + + + 3 + YES + + + + value + 319 + 40 + 1000 + + 75628096 + 2048 + + + + + + + 67239488 + 2048 + Text Cell + + + + + + 3 + YES + + + + 2 + 3 + + + 1 + MC45MDE5NjA3OTAyIDAuOTAxOTYwNzkwMiAwLjkwMTk2MDc5MDIAA + + 17 + 1119879168 + + + 1 + 4 + 15 + 0 + NO + 0 + 12 + + + {{1, 1}, {448, 200}} + + + + + 4 + + + + -2147483392 + {{434, 1}, {15, 185}} + + + _doScroller: + 0.9950249195098877 + + + + -2147483392 + {{1, 186}, {433, 15}} + + 1 + + _doScroller: + 0.99777281284332275 + + + {{0, 216}, {450, 202}} + + + 562 + + + + QSAAAEEgAABBoAAAQaAAAA + + + {{20, 59}, {450, 418}} + + + + {490, 497} + + {{0, 0}, {1280, 1002}} + {3.40282e+38, 3.40282e+38} + + + + + YES + + + window + + + + 3 + + + + myXML + + + + 28 + + + + parse: + + + + 29 + + + + dataSource + + + + 40 + + + + myParserResult + + + + 41 + + + + + YES + + 0 + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 1 + + + YES + + + + XML Parser + + + 2 + + + YES + + + + + + + 16 + + + YES + + + + + + 17 + + + + + 38 + + + YES + + + + + + + 24 + + + YES + + + + + + + + 27 + + + + + 26 + + + + + 25 + + + + + 30 + + + YES + + + + + + + + 33 + + + + + 32 + + + + + 31 + + + YES + + + + + + + 35 + + + YES + + + + + + 34 + + + YES + + + + + + 37 + + + + + 36 + + + + + + + YES + + YES + -3.IBPluginDependency + 1.IBEditorWindowLastContentRect + 1.IBPluginDependency + 1.IBWindowTemplateEditedContentRect + 1.NSWindowTemplate.visibleAtLaunch + 16.IBPluginDependency + 17.IBPluginDependency + 2.IBPluginDependency + 24.IBPluginDependency + 25.IBPluginDependency + 26.IBPluginDependency + 27.IBPluginDependency + 30.IBPluginDependency + 31.IBPluginDependency + 32.IBPluginDependency + 33.IBPluginDependency + 34.IBPluginDependency + 35.IBPluginDependency + 36.IBPluginDependency + 37.IBPluginDependency + 38.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + {{431, 342}, {490, 497}} + com.apple.InterfaceBuilder.CocoaPlugin + {{431, 342}, {490, 497}} + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 43 + + + + YES + + TestClientXMLParserWindowController + NSWindowController + + YES + + YES + hideXMLParserWindow: + parse: + showXMLParserWindow: + toggleXMLParserWindow: + + + YES + id + id + id + id + + + + YES + + YES + myParsedObject + myParserResult + myXML + + + YES + id + NSOutlineView + NSTextView + + + + IBProjectSource + TestClientXMLParserWindowController.h + + + + + YES + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSOutlineView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLConnection.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURLDownload.h + + + + NSOutlineView + NSTableView + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSScrollView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSScrollView.h + + + + NSScroller + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSScroller.h + + + + NSSplitView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSSplitView.h + + + + NSTableColumn + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableColumn.h + + + + NSTableView + NSControl + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + NSWindowController + NSResponder + + showWindow: + id + + + IBFrameworkSource + AppKit.framework/Headers/NSWindowController.h + + + + + 0 + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../../Test Client.xcodeproj + 3 + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/Test Client.xcodeproj/project.pbxproj b/Classes/Utils/XMLRPC/Tools/Test Client/Test Client.xcodeproj/project.pbxproj new file mode 100755 index 000000000..39e38edce --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/Test Client.xcodeproj/project.pbxproj @@ -0,0 +1,401 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 45; + objects = { + +/* Begin PBXBuildFile section */ + 070043021144653D000D05B6 /* TestClient.xib in Resources */ = {isa = PBXBuildFile; fileRef = 070043001144653D000D05B6 /* TestClient.xib */; }; + 070043051144656D000D05B6 /* TestClientXMLParserWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 070043031144656D000D05B6 /* TestClientXMLParserWindow.xib */; }; + 0700430C11446593000D05B6 /* TestClientMainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0700430A11446593000D05B6 /* TestClientMainWindow.xib */; }; + 070043131144667B000D05B6 /* TestClientApplicationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0700430E1144667B000D05B6 /* TestClientApplicationController.m */; }; + 070043141144667B000D05B6 /* TestClientMainWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 070043101144667B000D05B6 /* TestClientMainWindowController.m */; }; + 070043151144667B000D05B6 /* TestClientXMLParserWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 070043121144667B000D05B6 /* TestClientXMLParserWindowController.m */; }; + 07E6DAB013679C6E00454D31 /* XMLRPC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 07E6DAA513679B7600454D31 /* XMLRPC.framework */; }; + 07E6DAB213679F3000454D31 /* XMLRPC.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 07E6DAA513679B7600454D31 /* XMLRPC.framework */; }; + 2DC70E311004D90100BBEEA6 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E2F1004D90100BBEEA6 /* InfoPlist.strings */; }; + 2DC70E381004D90F00BBEEA6 /* Common.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E321004D90F00BBEEA6 /* Common.xcconfig */; }; + 2DC70E391004D90F00BBEEA6 /* CommonDevelopment.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E331004D90F00BBEEA6 /* CommonDevelopment.xcconfig */; }; + 2DC70E3A1004D90F00BBEEA6 /* CommonRelease.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E341004D90F00BBEEA6 /* CommonRelease.xcconfig */; }; + 2DC70E3B1004D90F00BBEEA6 /* TestClientDevelopment.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E351004D90F00BBEEA6 /* TestClientDevelopment.xcconfig */; }; + 2DC70E3C1004D90F00BBEEA6 /* TestClientRelease.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E361004D90F00BBEEA6 /* TestClientRelease.xcconfig */; }; + 2DC70E3D1004D90F00BBEEA6 /* TestClient.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 2DC70E371004D90F00BBEEA6 /* TestClient.xcconfig */; }; + 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 07E6DAB113679F1400454D31 /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 07E6DAB213679F3000454D31 /* XMLRPC.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 070043011144653D000D05B6 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Languages/English.lproj/TestClient.xib; sourceTree = ""; }; + 070043041144656D000D05B6 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Languages/English.lproj/TestClientXMLParserWindow.xib; sourceTree = ""; }; + 0700430B11446593000D05B6 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = Languages/English.lproj/TestClientMainWindow.xib; sourceTree = ""; }; + 0700430D1144667B000D05B6 /* TestClientApplicationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestClientApplicationController.h; sourceTree = ""; }; + 0700430E1144667B000D05B6 /* TestClientApplicationController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestClientApplicationController.m; sourceTree = ""; }; + 0700430F1144667B000D05B6 /* TestClientMainWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestClientMainWindowController.h; sourceTree = ""; }; + 070043101144667B000D05B6 /* TestClientMainWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestClientMainWindowController.m; sourceTree = ""; }; + 070043111144667B000D05B6 /* TestClientXMLParserWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestClientXMLParserWindowController.h; sourceTree = ""; }; + 070043121144667B000D05B6 /* TestClientXMLParserWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TestClientXMLParserWindowController.m; sourceTree = ""; }; + 0759A73511434C0D000DFE98 /* XMLRPCEventBasedParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMLRPCEventBasedParser.h; path = ../../XMLRPCEventBasedParser.h; sourceTree = SOURCE_ROOT; }; + 0759A73C11434C3C000DFE98 /* XMLRPCEventBasedParserDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMLRPCEventBasedParserDelegate.h; path = ../../XMLRPCEventBasedParserDelegate.h; sourceTree = SOURCE_ROOT; }; + 07E6DAA513679B7600454D31 /* XMLRPC.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XMLRPC.framework; path = "../../../../../../Library/Developer/Xcode/DerivedData/XMLRPC-gcawxlhfrkyvgjeolligeasrfeux/Build/Products/Development/XMLRPC.framework"; sourceTree = ""; }; + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; + 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 2DC70E301004D90100BBEEA6 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = Languages/English.lproj/InfoPlist.strings; sourceTree = ""; }; + 2DC70E321004D90F00BBEEA6 /* Common.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Common.xcconfig; path = Configurations/Common.xcconfig; sourceTree = ""; }; + 2DC70E331004D90F00BBEEA6 /* CommonDevelopment.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CommonDevelopment.xcconfig; path = Configurations/CommonDevelopment.xcconfig; sourceTree = ""; }; + 2DC70E341004D90F00BBEEA6 /* CommonRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CommonRelease.xcconfig; path = Configurations/CommonRelease.xcconfig; sourceTree = ""; }; + 2DC70E351004D90F00BBEEA6 /* TestClientDevelopment.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = TestClientDevelopment.xcconfig; path = Configurations/TestClientDevelopment.xcconfig; sourceTree = ""; }; + 2DC70E361004D90F00BBEEA6 /* TestClientRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = TestClientRelease.xcconfig; path = Configurations/TestClientRelease.xcconfig; sourceTree = ""; }; + 2DC70E371004D90F00BBEEA6 /* TestClient.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = TestClient.xcconfig; path = Configurations/TestClient.xcconfig; sourceTree = ""; }; + 32CA4F630368D1EE00C91783 /* TestClient.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestClient.pch; sourceTree = ""; }; + 8D1107310486CEB800E47090 /* TestClient-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "TestClient-Info.plist"; sourceTree = ""; }; + 8D1107320486CEB800E47090 /* Test Client.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Test Client.app"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D11072E0486CEB800E47090 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, + 07E6DAB013679C6E00454D31 /* XMLRPC.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0759A75B11434CC8000DFE98 /* Private Headers */ = { + isa = PBXGroup; + children = ( + 0759A73511434C0D000DFE98 /* XMLRPCEventBasedParser.h */, + 0759A73C11434C3C000DFE98 /* XMLRPCEventBasedParserDelegate.h */, + ); + name = "Private Headers"; + sourceTree = ""; + }; + 080E96DDFE201D6D7F000001 /* Classes */ = { + isa = PBXGroup; + children = ( + 0700430D1144667B000D05B6 /* TestClientApplicationController.h */, + 0700430E1144667B000D05B6 /* TestClientApplicationController.m */, + 0700430F1144667B000D05B6 /* TestClientMainWindowController.h */, + 070043101144667B000D05B6 /* TestClientMainWindowController.m */, + 070043111144667B000D05B6 /* TestClientXMLParserWindowController.h */, + 070043121144667B000D05B6 /* TestClientXMLParserWindowController.m */, + ); + name = Classes; + sourceTree = ""; + }; + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + 07E6DAA513679B7600454D31 /* XMLRPC.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 29B97324FDCFA39411CA2CEA /* AppKit.framework */, + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, + 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D1107320486CEB800E47090 /* Test Client.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* Test Client */ = { + isa = PBXGroup; + children = ( + 080E96DDFE201D6D7F000001 /* Classes */, + 0759A75B11434CC8000DFE98 /* Private Headers */, + 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = "Test Client"; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 29B97316FDCFA39411CA2CEA /* main.m */, + 32CA4F630368D1EE00C91783 /* TestClient.pch */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 2DC70E201004D85400BBEEA6 /* Configurations */, + 2DC70E211004D85C00BBEEA6 /* Interface Builder */, + 2DC70E221004D86F00BBEEA6 /* Localized Strings */, + 2DC70E231004D87A00BBEEA6 /* Property Lists */, + ); + name = Resources; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + 2DC70E201004D85400BBEEA6 /* Configurations */ = { + isa = PBXGroup; + children = ( + 2DC70E321004D90F00BBEEA6 /* Common.xcconfig */, + 2DC70E331004D90F00BBEEA6 /* CommonDevelopment.xcconfig */, + 2DC70E341004D90F00BBEEA6 /* CommonRelease.xcconfig */, + 2DC70E351004D90F00BBEEA6 /* TestClientDevelopment.xcconfig */, + 2DC70E361004D90F00BBEEA6 /* TestClientRelease.xcconfig */, + 2DC70E371004D90F00BBEEA6 /* TestClient.xcconfig */, + ); + name = Configurations; + sourceTree = ""; + }; + 2DC70E211004D85C00BBEEA6 /* Interface Builder */ = { + isa = PBXGroup; + children = ( + 070043001144653D000D05B6 /* TestClient.xib */, + 0700430A11446593000D05B6 /* TestClientMainWindow.xib */, + 070043031144656D000D05B6 /* TestClientXMLParserWindow.xib */, + ); + name = "Interface Builder"; + sourceTree = ""; + }; + 2DC70E221004D86F00BBEEA6 /* Localized Strings */ = { + isa = PBXGroup; + children = ( + 2DC70E2F1004D90100BBEEA6 /* InfoPlist.strings */, + ); + name = "Localized Strings"; + sourceTree = ""; + }; + 2DC70E231004D87A00BBEEA6 /* Property Lists */ = { + isa = PBXGroup; + children = ( + 8D1107310486CEB800E47090 /* TestClient-Info.plist */, + ); + name = "Property Lists"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D1107260486CEB800E47090 /* Test Client */ = { + isa = PBXNativeTarget; + buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Test Client" */; + buildPhases = ( + 8D1107290486CEB800E47090 /* Resources */, + 07E6DAB113679F1400454D31 /* Copy Frameworks */, + 8D11072C0486CEB800E47090 /* Sources */, + 8D11072E0486CEB800E47090 /* Frameworks */, + 0759A72C11434B8D000DFE98 /* Run Script: Include Git commit hash */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Test Client"; + productInstallPath = "$(HOME)/Applications"; + productName = "XMLRPC Client"; + productReference = 8D1107320486CEB800E47090 /* Test Client.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Test Client" */; + compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + en, + ); + mainGroup = 29B97314FDCFA39411CA2CEA /* Test Client */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D1107260486CEB800E47090 /* Test Client */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D1107290486CEB800E47090 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2DC70E381004D90F00BBEEA6 /* Common.xcconfig in Resources */, + 2DC70E391004D90F00BBEEA6 /* CommonDevelopment.xcconfig in Resources */, + 2DC70E3A1004D90F00BBEEA6 /* CommonRelease.xcconfig in Resources */, + 2DC70E311004D90100BBEEA6 /* InfoPlist.strings in Resources */, + 2DC70E3D1004D90F00BBEEA6 /* TestClient.xcconfig in Resources */, + 070043021144653D000D05B6 /* TestClient.xib in Resources */, + 2DC70E3B1004D90F00BBEEA6 /* TestClientDevelopment.xcconfig in Resources */, + 0700430C11446593000D05B6 /* TestClientMainWindow.xib in Resources */, + 2DC70E3C1004D90F00BBEEA6 /* TestClientRelease.xcconfig in Resources */, + 070043051144656D000D05B6 /* TestClientXMLParserWindow.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 0759A72C11434B8D000DFE98 /* Run Script: Include Git commit hash */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script: Include Git commit hash"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /usr/bin/ruby; + shellScript = "raise \"Must be executed from within Xcode.\" unless ENV['XCODE_VERSION_ACTUAL']\n\ninfo_plist = \"#{ENV['BUILT_PRODUCTS_DIR']}/#{ENV['WRAPPER_NAME']}/Contents/Info.plist\"\n\nif !File.exist?('/usr/local/bin/git')\n exit\nend\n\ncommit = `/usr/local/bin/git rev-parse --short HEAD`.chomp!\n\nif commit.nil? or commit.empty?\n exit\nend\n\nlines = IO.readlines(info_plist).join\n\nlines.gsub! /(CFBundleShortVersionString<\\/key>\\n\\t)(\\d+\\.\\d+(?:\\.\\d)*[a-z])<\\/string>/, \"\\\\1\\\\2 rev. #{commit}\"\n\nFile.open(info_plist, 'w') { |f| f.puts lines }"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D11072C0486CEB800E47090 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072D0486CEB800E47090 /* main.m in Sources */, + 070043131144667B000D05B6 /* TestClientApplicationController.m in Sources */, + 070043141144667B000D05B6 /* TestClientMainWindowController.m in Sources */, + 070043151144667B000D05B6 /* TestClientXMLParserWindowController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 070043001144653D000D05B6 /* TestClient.xib */ = { + isa = PBXVariantGroup; + children = ( + 070043011144653D000D05B6 /* English */, + ); + name = TestClient.xib; + sourceTree = ""; + }; + 070043031144656D000D05B6 /* TestClientXMLParserWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + 070043041144656D000D05B6 /* English */, + ); + name = TestClientXMLParserWindow.xib; + sourceTree = ""; + }; + 0700430A11446593000D05B6 /* TestClientMainWindow.xib */ = { + isa = PBXVariantGroup; + children = ( + 0700430B11446593000D05B6 /* English */, + ); + name = TestClientMainWindow.xib; + sourceTree = ""; + }; + 2DC70E2F1004D90100BBEEA6 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 2DC70E301004D90100BBEEA6 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C01FCF4B08A954540054247B /* Development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2DC70E351004D90F00BBEEA6 /* TestClientDevelopment.xcconfig */; + buildSettings = { + INFOPLIST_FILE = "TestClient-Info.plist"; + }; + name = Development; + }; + C01FCF4C08A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2DC70E361004D90F00BBEEA6 /* TestClientRelease.xcconfig */; + buildSettings = { + INFOPLIST_FILE = "TestClient-Info.plist"; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2DC70E331004D90F00BBEEA6 /* CommonDevelopment.xcconfig */; + buildSettings = { + }; + name = Development; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2DC70E341004D90F00BBEEA6 /* CommonRelease.xcconfig */; + buildSettings = { + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Test Client" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4B08A954540054247B /* Development */, + C01FCF4C08A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Test Client" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Development */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClient-Info.plist b/Classes/Utils/XMLRPC/Tools/Test Client/TestClient-Info.plist new file mode 100755 index 000000000..99b1457be --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClient-Info.plist @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + Test Client + CFBundleIconFile + + CFBundleIdentifier + com.divisiblebyzero.Test Client + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Test Client + CFBundlePackageType + APPL + CFBundleSignature + ZERO + CFBundleVersion + 100.0 + CFBundleShortVersionString + 1.0.0d + NSMainNibFile + TestClient + NSPrincipalClass + NSApplication + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClient.pch b/Classes/Utils/XMLRPC/Tools/Test Client/TestClient.pch new file mode 100755 index 000000000..564186ff6 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClient.pch @@ -0,0 +1,4 @@ +#ifdef __OBJC__ + #import + #import +#endif diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.h b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.h new file mode 100755 index 000000000..000d43cd6 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.h @@ -0,0 +1,11 @@ +#import + +@interface TestClientApplicationController : NSObject { + +} + +- (void)toggleTestClientWindow: (id)sender; + +- (void)toggleXMLParserWindow: (id)sender; + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.m b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.m new file mode 100755 index 000000000..cadfe8ba8 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientApplicationController.m @@ -0,0 +1,21 @@ +#import "TestClientApplicationController.h" +#import "TestClientMainWindowController.h" +#import "TestClientXMLParserWindowController.h" + +@implementation TestClientApplicationController + +- (void)applicationDidFinishLaunching: (NSNotification *)notification { + [self toggleTestClientWindow: self]; +} + +#pragma mark - + +- (void)toggleTestClientWindow: (id)sender { + [[TestClientMainWindowController sharedController] toggleTestClientWindow: self]; +} + +- (void)toggleXMLParserWindow: (id)sender { + [[TestClientXMLParserWindowController sharedController] toggleXMLParserWindow: self]; +} + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.h b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.h new file mode 100755 index 000000000..0f2374bda --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.h @@ -0,0 +1,48 @@ +#import + +@interface TestClientMainWindowController : NSWindowController { + XMLRPCResponse *myResponse; + IBOutlet NSTextField *myRequestURL; + IBOutlet NSTextField *myMethod; + IBOutlet NSTextField *myParameter; + IBOutlet NSProgressIndicator *myProgressIndicator; + IBOutlet NSTextField *myActiveConnection; + IBOutlet NSButton *mySendRequest; + IBOutlet NSTextView *myRequestBody; + IBOutlet NSTextView *myResponseBody; + IBOutlet NSOutlineView *myParsedResponse; +} + ++ (TestClientMainWindowController *)sharedController; + +#pragma mark - + +- (void)showTestClientWindow: (id)sender; + +- (void)hideTestClientWindow: (id)sender; + +#pragma mark - + +- (void)toggleTestClientWindow: (id)sender; + +#pragma mark - + +- (void)sendRequest: (id)sender; + +@end + +#pragma mark - + +@interface TestClientMainWindowController (XMLRPCConnectionDelegate) + +- (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response; + +- (void)request: (XMLRPCRequest *)request didFailWithError: (NSError *)error; + +- (void)request: (XMLRPCRequest *)request didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +- (void)request: (XMLRPCRequest *)request didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +- (BOOL)request: (XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace; + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.m b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.m new file mode 100755 index 000000000..c4cefa125 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientMainWindowController.m @@ -0,0 +1,241 @@ +#import "TestClientMainWindowController.h" + +@implementation TestClientMainWindowController + +static TestClientMainWindowController *sharedInstance = nil; + +- (id)init { + if ((self = [super initWithWindowNibName: @"TestClientMainWindow"])) { + myResponse = nil; + } + + return self; +} + +#pragma mark - + ++ (id)allocWithZone: (NSZone *)zone { + @synchronized(self) { + if (!sharedInstance) { + sharedInstance = [super allocWithZone: zone]; + + return sharedInstance; + } + } + + return nil; +} + +#pragma mark - + ++ (TestClientMainWindowController *)sharedController { + @synchronized(self) { + if (!sharedInstance) { + [[self alloc] init]; + } + } + + return sharedInstance; +} + +#pragma mark - + +- (void)awakeFromNib { + [[self window] center]; +} + +#pragma mark - + +- (void)showTestClientWindow: (id)sender { + [self showWindow: sender]; +} + +- (void)hideTestClientWindow: (id)sender { + [self close]; +} + +#pragma mark - + +- (void)toggleTestClientWindow: (id)sender { + if ([[self window] isKeyWindow]) { + [self hideTestClientWindow: sender]; + } else { + [self showTestClientWindow: sender]; + } +} + +#pragma mark - + +- (void)sendRequest: (id)sender { + NSURL *URL = [NSURL URLWithString: [myRequestURL stringValue]]; + XMLRPCRequest *request = [[[XMLRPCRequest alloc] initWithURL: URL] autorelease]; + NSString *connectionIdentifier; + + [request setMethod: [myMethod stringValue] withParameter: [myParameter stringValue]]; + + [myProgressIndicator startAnimation: self]; + + [myRequestBody setString: [request body]]; + + connectionIdentifier = [[XMLRPCConnectionManager sharedManager] spawnConnectionWithXMLRPCRequest: request delegate: self]; + + [myActiveConnection setHidden: NO]; + + [myActiveConnection setStringValue: [NSString stringWithFormat: @"Active Connection: %@", connectionIdentifier]]; + + [mySendRequest setEnabled: NO]; +} + +#pragma mark - + +- (void)dealloc { + [myResponse release]; + + [super dealloc]; +} + +#pragma mark - + +#pragma mark Outline View Data Source Methods + +#pragma mark - + +- (id)outlineView: (NSOutlineView *)outlineView child: (NSInteger)index ofItem: (id)item { + if (item == nil) { + item = [myResponse object]; + } + + if ([item isKindOfClass: [NSDictionary class]]) { + return [item objectForKey: [[item allKeys] objectAtIndex: index]]; + } else if ([item isKindOfClass: [NSArray class]]) { + return [item objectAtIndex: index]; + } + + return item; +} + +- (BOOL)outlineView: (NSOutlineView *)outlineView isItemExpandable: (id)item { + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + if ([item count] > 0) { + return YES; + } + } + + return NO; +} + +- (NSInteger)outlineView: (NSOutlineView *)outlineView numberOfChildrenOfItem: (id)item { + if (item == nil) { + item = [myResponse object]; + } + + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + return [item count]; + } else if (item != nil) { + return 1; + } + + return 0; +} + +- (id)outlineView: (NSOutlineView *)outlineView objectValueForTableColumn: (NSTableColumn *)tableColumn byItem: (id)item { + NSString *columnIdentifier = (NSString *)[tableColumn identifier]; + + if ([columnIdentifier isEqualToString: @"type"]) { + id parentObject = [outlineView parentForItem: item] ? [outlineView parentForItem: item] : [myResponse object]; + + if ([parentObject isKindOfClass: [NSDictionary class]]) { + return [[parentObject allKeysForObject: item] objectAtIndex: 0]; + } else if ([parentObject isKindOfClass: [NSArray class]]) { + return [NSString stringWithFormat: @"Item %d", [parentObject indexOfObject: item]]; + } else if ([item isKindOfClass: [NSString class]]) { + return @"String"; + } else { + return @"Object"; + } + } else { + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + return [NSString stringWithFormat: @"%d items", [item count]]; + } else { + return item; + } + } + + return nil; +} + +#pragma mark - + +#pragma mark XMLRPC Connection Delegate Methods + +#pragma mark - + +- (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response { + [myProgressIndicator stopAnimation: self]; + + [myActiveConnection setHidden: YES]; + + [mySendRequest setEnabled: YES]; + + if ([response isFault]) { + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + + [alert addButtonWithTitle: @"OK"]; + [alert setMessageText: @"The XML-RPC response returned a fault."]; + [alert setInformativeText: [NSString stringWithFormat: @"Fault String: %@", [response faultString]]]; + [alert setAlertStyle: NSCriticalAlertStyle]; + + [alert runModal]; + } else { + [response retain]; + + [myResponse release]; + + myResponse = response; + } + + [myParsedResponse reloadData]; + + [myResponseBody setString: [response body]]; +} + +- (void)request: (XMLRPCRequest *)request didFailWithError: (NSError *)error { + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + + [[NSApplication sharedApplication] requestUserAttention: NSCriticalRequest]; + + [alert addButtonWithTitle: @"OK"]; + [alert setMessageText: @"The request failed!"]; + [alert setInformativeText: @"The request failed to return a valid response."]; + [alert setAlertStyle: NSCriticalAlertStyle]; + + [alert runModal]; + + [myParsedResponse reloadData]; + + [myProgressIndicator stopAnimation: self]; + + [myActiveConnection setHidden: YES]; + + [mySendRequest setEnabled: YES]; +} + +- (void)request: (XMLRPCRequest *)request didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + if ([challenge previousFailureCount] == 0) { + NSURLCredential *credential = [NSURLCredential credentialWithUser: @"user" password: @"password" persistence: NSURLCredentialPersistenceNone]; + + [[challenge sender] useCredential: credential forAuthenticationChallenge: challenge]; + } else { + [[challenge sender] cancelAuthenticationChallenge: challenge]; + } +} + +- (void)request: (XMLRPCRequest *)request didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + +} + +- (BOOL)request: (XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace { + return NO; +} + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.h b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.h new file mode 100755 index 000000000..516d23365 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.h @@ -0,0 +1,25 @@ +#import + +@interface TestClientXMLParserWindowController : NSWindowController { + id myParsedObject; + IBOutlet NSTextView *myXML; + IBOutlet NSOutlineView *myParserResult; +} + ++ (TestClientXMLParserWindowController *)sharedController; + +#pragma mark - + +- (void)showXMLParserWindow: (id)sender; + +- (void)hideXMLParserWindow: (id)sender; + +#pragma mark - + +- (void)toggleXMLParserWindow: (id)sender; + +#pragma mark - + +- (void)parse: (id)sender; + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.m b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.m new file mode 100755 index 000000000..82a59aca1 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/TestClientXMLParserWindowController.m @@ -0,0 +1,215 @@ +#import "TestClientXMLParserWindowController.h" +#import "XMLRPCEventBasedParser.h" + +@interface TestClientXMLParserWindowController (TestClientXMLParserWindowControllerPrivate) + +- (NSString *)typeForItem: (id)item; + +@end + +#pragma mark - + +@implementation TestClientXMLParserWindowController + +static TestClientXMLParserWindowController *sharedInstance = nil; + +- (id)init { + if (self = [super initWithWindowNibName: @"TestClientXMLParserWindow"]) { + myParsedObject = nil; + } + + return self; +} + +#pragma mark - + ++ (id)allocWithZone: (NSZone *)zone { + @synchronized(self) { + if (!sharedInstance) { + sharedInstance = [super allocWithZone: zone]; + + return sharedInstance; + } + } + + return nil; +} + +#pragma mark - + ++ (TestClientXMLParserWindowController *)sharedController { + @synchronized(self) { + if (!sharedInstance) { + [[self alloc] init]; + } + } + + return sharedInstance; +} + +#pragma mark - + +- (void)awakeFromNib { + [[self window] center]; +} + +#pragma mark - + +- (void)showXMLParserWindow: (id)sender { + [self showWindow: sender]; +} + +- (void)hideXMLParserWindow: (id)sender { + [self close]; +} + +#pragma mark - + +- (void)toggleXMLParserWindow: (id)sender { + if ([[self window] isKeyWindow]) { + [self hideXMLParserWindow: sender]; + } else { + [self showXMLParserWindow: sender]; + } +} + +#pragma mark - + +- (void)parse: (id)sender { + NSData *data = [[myXML string] dataUsingEncoding: NSUTF8StringEncoding]; + XMLRPCEventBasedParser *parser = (XMLRPCEventBasedParser *)[[XMLRPCEventBasedParser alloc] initWithData: data]; + + if (!parser) { + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + + [alert addButtonWithTitle: @"OK"]; + [alert setMessageText: @"The parser encountered an error."]; + [alert setInformativeText: @"There was a problem creating the XML parser."]; + [alert setAlertStyle: NSCriticalAlertStyle]; + + [alert runModal]; + + return; + } + + [myParsedObject release]; + + myParsedObject = [[parser parse] retain]; + + NSError *parserError = [[[parser parserError] retain] autorelease]; + + [parser release]; + + if (!myParsedObject) { + NSAlert *alert = [[[NSAlert alloc] init] autorelease]; + + [alert addButtonWithTitle: @"OK"]; + [alert setMessageText: @"The parser encountered an error."]; + [alert setInformativeText: [parserError localizedDescription]]; + [alert setAlertStyle: NSCriticalAlertStyle]; + + [alert runModal]; + + return; + } + + [myParserResult reloadData]; +} + +#pragma mark - + +#pragma mark Outline View Data Source Methods + +#pragma mark - + +- (id)outlineView: (NSOutlineView *)outlineView child: (NSInteger)index ofItem: (id)item { + if (item == nil) { + item = myParsedObject; + } + + if ([item isKindOfClass: [NSDictionary class]]) { + return [item objectForKey: [[item allKeys] objectAtIndex: index]]; + } else if ([item isKindOfClass: [NSArray class]]) { + return [item objectAtIndex: index]; + } + + return item; +} + +- (BOOL)outlineView: (NSOutlineView *)outlineView isItemExpandable: (id)item { + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + if ([item count] > 0) { + return YES; + } + } + + return NO; +} + +- (NSInteger)outlineView: (NSOutlineView *)outlineView numberOfChildrenOfItem: (id)item { + if (item == nil) { + item = myParsedObject; + } + + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + return [item count]; + } else if (item != nil) { + return 1; + } + + return 0; +} + +- (id)outlineView: (NSOutlineView *)outlineView objectValueForTableColumn: (NSTableColumn *)tableColumn byItem: (id)item { + NSString *columnIdentifier = (NSString *)[tableColumn identifier]; + + if ([columnIdentifier isEqualToString: @"type"]) { + id parentObject = [outlineView parentForItem: item] ? [outlineView parentForItem: item] : myParsedObject; + + if ([parentObject isKindOfClass: [NSDictionary class]]) { + return [NSString stringWithFormat: @"\"%@\", %@", [[parentObject allKeysForObject: item] objectAtIndex: 0], [self typeForItem: item]]; + } else if ([parentObject isKindOfClass: [NSArray class]]) { + return [NSString stringWithFormat: @"Item %d, %@", [parentObject indexOfObject: item], [self typeForItem: item]]; + } else { + return [self typeForItem: item]; + } + } else { + if ([item isKindOfClass: [NSDictionary class]] || [item isKindOfClass: [NSArray class]]) { + return [NSString stringWithFormat: @"%d items", [item count]]; + } else { + return [NSString stringWithFormat: @"\"%@\"", item]; + } + } + + return nil; +} + +@end + +#pragma mark - + +@implementation TestClientXMLParserWindowController (TestClientXMLParserWindowControllerPrivate) + +- (NSString *)typeForItem: (id)item { + NSString *type; + + if ([item isKindOfClass: [NSArray class]]) { + type = @"Array"; + } else if ([item isKindOfClass: [NSDictionary class]]) { + type = @"Dictionary"; + } else if ([item isKindOfClass: [NSString class]]) { + type = @"String"; + } else if ([item isKindOfClass: [NSNumber class]]) { + type = @"Number"; + } else if ([item isKindOfClass: [NSDate class]]) { + type = @"Date"; + } else if ([item isKindOfClass: [NSData class]]) { + type = @"Data"; + } else { + type = @"Object"; + } + + return type; +} + +@end diff --git a/Classes/Utils/XMLRPC/Tools/Test Client/main.m b/Classes/Utils/XMLRPC/Tools/Test Client/main.m new file mode 100755 index 000000000..632c47ed0 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Client/main.m @@ -0,0 +1,5 @@ +#import + +int main(int argc, char *argv[]) { + return NSApplicationMain(argc, (const char **)argv); +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/README.md b/Classes/Utils/XMLRPC/Tools/Test Server/README.md new file mode 100755 index 000000000..b8c84b0ed --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/README.md @@ -0,0 +1,51 @@ +# The XML-RPC Test Server + +The XML-RPC test server is written in Java and utilizes the Apache XML-RPC server library. This test server can be useful when debugging problems with the XML-RPC framework. + +# Usage + +To start the server simply call Ant from the XML-RPC test server directory: + + $ ant + +This will invoke Ant with the default target. The default target will issue the following targets in the following order, the last target is the default invoked by Ant: + + - init + - compile + - pre-jar + - jar + - run + +These targets each play a role in building and running the Java project. The details of each target can be found in the Ant build script. + +Finally, the XML-RPC test server should now be running. To start the server simply click on the "Start" button. This will start the test server on port 8080, available for any incoming XML-RPC requests. + +## Creating XML-RPC server handlers + +The XML-RPC test server exposes XML-RPC methods through server handlers. Each server handler is simply a Java class that is registered with the Apache XML-RPC library. Here is an example of the Echo handler provided in the distribution: + + public class Echo { + public String echo(String message) { + return message; + } + } + +This handler simply takes a message provided in the XML-RPC request and returns it in the XML-RPC response. To register this handler with the XML-RPC server simply add it to the propertyHandlerMapping in Server.java: + + try { + propertyHandlerMapping.addHandler("Echo", Echo.class); + + this.embeddedXmlRpcServer.setHandlerMapping(propertyHandlerMapping); + } catch (Exception e) { + this.controlPanel.addLogMessage(e.getMessage()); + } + +The handler is now available to any incoming XML-RPC requests. + +# License + +Copyright (c) 2012 Eric Czarny. + +The Cocoa XML-RPC Framework should be accompanied by a LICENSE file, this file contains the license relevant to this distribution. + +If no LICENSE exists please contact Eric Czarny . diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/build.properties b/Classes/Utils/XMLRPC/Tools/Test Server/build.properties new file mode 100755 index 000000000..d87bc741d --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/build.properties @@ -0,0 +1,17 @@ +project.name = test-server +project.main = com.divisiblebyzero.xmlrpc.Application +project.base.directory = . +project.source.directory = ${project.base.directory}/src +project.libraries = commons-logging-1.1.1.jar log4j-1.2.15.jar ws-commons-util-1.0.2.jar xmlrpc-common-3.1.jar xmlrpc-server-3.1.jar + +build.directory = ${project.base.directory} +build.classes.directory = ${build.directory}/classes + +distribution.directory = ${project.base.directory}/lib +distribution.jar = ${distribution.directory}/${project.name}.jar + +resources.directory = ${project.base.directory}/resources + +jar.compress = true + +compiler.debug = true diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/build.xml b/Classes/Utils/XMLRPC/Tools/Test Server/build.xml new file mode 100755 index 000000000..494c7a583 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/build.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stub for project installation. + + + + + + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/lib/commons-logging-1.1.1.jar b/Classes/Utils/XMLRPC/Tools/Test Server/lib/commons-logging-1.1.1.jar new file mode 100755 index 0000000000000000000000000000000000000000..8758a96b70cfba9466bacca19c0d99b87cf53734 GIT binary patch literal 60841 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
    {@^= z#dJv%@%X>ez!qkL<$^8Ta>+I5`CqwyDB}W41Y3UNlE}{IKN9_OaG)@<*OvqjLjIND zr^^mj{rM6xJM>qGz-s%c7BuY8z>4)=^5{qWiU&rz7Zw^;TlNwf^~LW(|72IlhfyiL zgeHmlUFe@|2CyQQm(ZFqzYG0M(h_z+UG%U%y{<>G0nlTrO{4FP;WW`u}qK`u!mK@;)5) z-1_1u`j2*D9PxMKzn>-l9PDz>xd0pZHQ3L=|M{r;yRVs^!~=ipCM+22`)>!=mqUsC mzf*kJ$Jk2_fNyjEB|~A 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 z≫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

    sl*CtvD7j$_;?KD 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

    {0o23%x0zG^lL-+)0hE&z$21eha>paa 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 LL+IIXJH`J1EdB>a literal 0 HcmV?d00001 diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/lib/ws-commons-util-1.0.2.jar b/Classes/Utils/XMLRPC/Tools/Test Server/lib/ws-commons-util-1.0.2.jar new file mode 100755 index 0000000000000000000000000000000000000000..3fc364e7f605b580850530c281998a1f861cc0c5 GIT binary patch literal 34407 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 G0R4YsfpO>n literal 0 HcmV?d00001 diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/resources/handlers.properties b/Classes/Utils/XMLRPC/Tools/Test Server/resources/handlers.properties new file mode 100755 index 000000000..0f32a8e80 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/resources/handlers.properties @@ -0,0 +1,5 @@ +# +# XML-RPC Server Handlers +# + +Echo=com.divisiblebyzero.xmlrpc.model.handlers.Echo diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/resources/log4j.xml b/Classes/Utils/XMLRPC/Tools/Test Server/resources/log4j.xml new file mode 100755 index 000000000..f1e19c3d7 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/resources/log4j.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/server.sh b/Classes/Utils/XMLRPC/Tools/Test Server/server.sh new file mode 100755 index 000000000..d23346a72 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/server.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +java -jar lib/test-server.jar $* diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/Application.java b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/Application.java new file mode 100755 index 000000000..c8ff3dfff --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/Application.java @@ -0,0 +1,25 @@ +package com.divisiblebyzero.xmlrpc; + +import javax.swing.UIManager; + +import org.apache.log4j.Logger; + +import com.divisiblebyzero.xmlrpc.view.XmlRpcServerControlPanel; + +class Application { + private static Logger logger = Logger.getLogger(Application.class); + + private Application() { + new XmlRpcServerControlPanel(); + } + + public static void main(String args[]) { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception e) { + logger.error("Unable to modify application look and feel."); + } + + new Application(); + } +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/controller/XmlRpcServerControlPanelController.java b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/controller/XmlRpcServerControlPanelController.java new file mode 100755 index 000000000..043f718f9 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/controller/XmlRpcServerControlPanelController.java @@ -0,0 +1,67 @@ +package com.divisiblebyzero.xmlrpc.controller; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import com.divisiblebyzero.xmlrpc.model.Server; +import com.divisiblebyzero.xmlrpc.view.XmlRpcServerControlPanel; + +public class XmlRpcServerControlPanelController implements ActionListener { + private XmlRpcServerControlPanel controlPanel; + private Server xmlRpcServer; + + public XmlRpcServerControlPanelController(XmlRpcServerControlPanel controlPanel) { + this.controlPanel = controlPanel; + this.xmlRpcServer = new Server(this.controlPanel); + } + + public void actionPerformed(ActionEvent actionEvent) { + String actionCommand = actionEvent.getActionCommand(); + + if (actionCommand.equals("Start")) { + this.startXmlRpcServer(); + } else if (actionCommand.equals("Stop")) { + this.stopXmlRpcServer(); + } else if (actionCommand.equals("Restart")) { + this.restartXmlRpcServer(); + } + + this.controlPanel.refreshControls(); + } + + public boolean isXmlRpcServerRunning() { + return this.xmlRpcServer.isRunning(); + } + + private void startXmlRpcServer() { + this.controlPanel.addLogMessage("Starting the XML-RPC server."); + + this.xmlRpcServer.startEmbeddedWebServer(); + } + + private void stopXmlRpcServer() { + if (this.xmlRpcServer == null) { + this.controlPanel.addLogMessage("Unable to stop the XML-RPC server, none could be found."); + + return; + } + + this.controlPanel.addLogMessage("Stopping the XML-RPC server."); + + this.xmlRpcServer.stopEmbeddedWebServer(); + } + + private void restartXmlRpcServer() { + if (this.xmlRpcServer == null) { + this.controlPanel.addLogMessage("Unable to restart the XML-RPC server, none could be found."); + + return; + } + + this.controlPanel.addLogMessage("Restarting the XML-RPC server."); + + this.xmlRpcServer.stopEmbeddedWebServer(); + + this.xmlRpcServer.startEmbeddedWebServer(); + } +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/Server.java b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/Server.java new file mode 100755 index 000000000..8704bf214 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/Server.java @@ -0,0 +1,60 @@ +package com.divisiblebyzero.xmlrpc.model; + +import com.divisiblebyzero.xmlrpc.view.XmlRpcServerControlPanel; + +import org.apache.xmlrpc.server.PropertyHandlerMapping; +import org.apache.xmlrpc.server.XmlRpcServer; +import org.apache.xmlrpc.webserver.WebServer; + +public class Server { + private static final int port = 8080; + private WebServer embeddedWebServer; + private XmlRpcServer embeddedXmlRpcServer; + private boolean running; + private XmlRpcServerControlPanel controlPanel; + + public Server(XmlRpcServerControlPanel controlPanel) { + this.embeddedWebServer = new WebServer(Server.port); + this.embeddedXmlRpcServer = this.embeddedWebServer.getXmlRpcServer(); + this.running = false; + this.controlPanel = controlPanel; + + PropertyHandlerMapping propertyHandlerMapping = new PropertyHandlerMapping(); + + try { + propertyHandlerMapping.load(Thread.currentThread().getContextClassLoader(), "handlers.properties"); + } catch (Exception e) { + this.controlPanel.addLogMessage(e.getMessage()); + } + + this.embeddedXmlRpcServer.setHandlerMapping(propertyHandlerMapping); + } + + public void startEmbeddedWebServer() { + try { + this.embeddedWebServer.start(); + + this.controlPanel.addLogMessage("The XML-RPC server has been started on port " + Server.port + "."); + } catch (Exception e) { + this.controlPanel.addLogMessage(e.getMessage()); + } + + this.running = true; + } + + public void stopEmbeddedWebServer() { + try { + this.embeddedWebServer.shutdown(); + + this.controlPanel.addLogMessage("The XML-RPC server has been stopped."); + } catch (Exception e) { + this.controlPanel.addLogMessage(e.getMessage()); + } + + this.running = false; + } + + public boolean isRunning() { + return this.running; + } +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/handlers/Echo.java b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/handlers/Echo.java new file mode 100755 index 000000000..852f6102b --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/model/handlers/Echo.java @@ -0,0 +1,7 @@ +package com.divisiblebyzero.xmlrpc.model.handlers; + +public class Echo { + public String echo(String message) { + return message; + } +} diff --git a/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/view/XmlRpcServerControlPanel.java b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/view/XmlRpcServerControlPanel.java new file mode 100755 index 000000000..c40779024 --- /dev/null +++ b/Classes/Utils/XMLRPC/Tools/Test Server/src/com/divisiblebyzero/xmlrpc/view/XmlRpcServerControlPanel.java @@ -0,0 +1,155 @@ +package com.divisiblebyzero.xmlrpc.view; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Container; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Toolkit; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTextPane; + +import com.divisiblebyzero.xmlrpc.controller.XmlRpcServerControlPanelController; + +public class XmlRpcServerControlPanel extends JFrame { + private static final long serialVersionUID = -7835812670356078909L; + private XmlRpcServerControlPanelController xmlRpcServerControlPanelController; + private JTextPane logMessageTextPane; + private JButton startButton; + private JButton stopButton; + private JButton restartButton; + + public XmlRpcServerControlPanel() { + super("Control Panel"); + + this.xmlRpcServerControlPanelController = new XmlRpcServerControlPanelController(this); + + int x = Toolkit.getDefaultToolkit().getScreenSize().width; + int y = Toolkit.getDefaultToolkit().getScreenSize().height; + + int width, height; + + width = 500; + height = 500; + + this.setBounds(((x - (width)) / 2), ((y - (height)) / 2) - (height / 4), width, height); + + this.setResizable(false); + + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + this.initialize(); + + this.setVisible(true); + } + + private void initialize() { + Container container = this.getContentPane(); + + container.setLayout(new BorderLayout()); + + /* North Panel */ + container.add(new JPanel(), BorderLayout.NORTH); + + /* East Panel */ + container.add(new JPanel(), BorderLayout.EAST); + + /* Center Panel */ + JPanel center = new JPanel(); + center.setBorder(BorderFactory.createTitledBorder(" " + "Server Log" + " ")); + + this.logMessageTextPane = new JTextPane(); + + this.logMessageTextPane.setEditable(false); + this.logMessageTextPane.setBackground(Color.WHITE); + this.logMessageTextPane.setFont(new Font("Monospaced", Font.PLAIN, 12)); + + this.logMessageTextPane.setText("Server awaiting action..."); + + JScrollPane scrollableTextPane = new JScrollPane(this.logMessageTextPane); + scrollableTextPane.setBorder(BorderFactory.createLineBorder(Color.GRAY)); + scrollableTextPane.setPreferredSize(new Dimension(435, 374)); + + center.add(scrollableTextPane); + + container.add(center, BorderLayout.CENTER); + + /* South Panel */ + container.add(this.createSouthernPanel(), BorderLayout.SOUTH); + + /* West Panel */ + container.add(new JPanel(), BorderLayout.WEST); + } + + private JPanel createSouthernPanel() { + JPanel south = new JPanel(); + + south.setPreferredSize(new Dimension(425, 47)); + + /* Start & Stop Panel */ + JPanel startAndStopPanel = new JPanel(); + + startButton = new JButton("Start"); + + startButton.setPreferredSize(new Dimension(85, 25)); + startButton.addActionListener(this.xmlRpcServerControlPanelController); + + startAndStopPanel.add(startButton); + + startAndStopPanel.add(new JLabel(" / ")); + + stopButton = new JButton("Stop"); + + stopButton.setPreferredSize(new Dimension(85, 25)); + stopButton.addActionListener(this.xmlRpcServerControlPanelController); + + startAndStopPanel.add(stopButton); + + south.add(startAndStopPanel); + + JPanel padding = new JPanel(); + padding.setPreferredSize(new Dimension(150, 25)); + + south.add(padding); + + /* Restart Panel */ + JPanel restartPanel = new JPanel(); + + restartButton = new JButton("Restart"); + + restartButton.setPreferredSize(new Dimension(95, 25)); + restartButton.addActionListener(this.xmlRpcServerControlPanelController); + + restartPanel.add(restartButton); + + south.add(restartPanel); + + this.refreshControls(); + + return south; + } + + public void addLogMessage(String message) { + String existingLogMessages = this.logMessageTextPane.getText() + "\n"; + + this.logMessageTextPane.setText(existingLogMessages + message); + } + + public void refreshControls() { + if (this.xmlRpcServerControlPanelController.isXmlRpcServerRunning()) { + this.startButton.setEnabled(false); + this.stopButton.setEnabled(true); + this.restartButton.setEnabled(true); + } else { + this.startButton.setEnabled(true); + this.stopButton.setEnabled(false); + this.restartButton.setEnabled(false); + } + } +} diff --git a/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.h b/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.h new file mode 100755 index 000000000..36d87abde --- /dev/null +++ b/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.h @@ -0,0 +1,9 @@ +#import + +@interface XMLRPCParserTest : SenTestCase { + NSDictionary *myTestCases; +} + +- (void)testEventBasedParser; + +@end diff --git a/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.m b/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.m new file mode 100755 index 000000000..45cbb48c8 --- /dev/null +++ b/Classes/Utils/XMLRPC/Unit Tests/XMLRPCParserTest.m @@ -0,0 +1,150 @@ +#import "XMLRPCParserTest.h" +#import "XMLRPCEventBasedParser.h" + +@interface XMLRPCParserTest (XMLRPCParserTestPrivate) + +- (NSBundle *)unitTestBundle; + +#pragma mark - + +- (NSDictionary *)testCases; + +#pragma mark - + +- (BOOL)parsedResult: (id)parsedResult isEqualToTestCaseResult: (id)testCaseResult; + +#pragma mark - + +- (BOOL)parsedResult: (id)parsedResult isEqualToArray: (NSArray *)array; + +- (BOOL)parsedResult: (id)parsedResult isEqualToDictionary: (NSDictionary *)dictionary; + +@end + +#pragma mark - + +@implementation XMLRPCParserTest + +- (void)setUp { + myTestCases = [[self testCases] retain]; +} + +#pragma mark - + +- (void)testEventBasedParser { + NSEnumerator *testCaseEnumerator = [myTestCases keyEnumerator]; + id testCaseName; + + while (testCaseName = [testCaseEnumerator nextObject]) { + NSString *testCase = [[self unitTestBundle] pathForResource: testCaseName ofType: @"xml"]; + NSData *testCaseData =[[[NSData alloc] initWithContentsOfFile: testCase] autorelease]; + XMLRPCEventBasedParser *parser = [[[XMLRPCEventBasedParser alloc] initWithData: testCaseData] autorelease]; + id testCaseResult = [myTestCases objectForKey: testCaseName]; + id parsedResult = [parser parse]; + + STAssertTrue([self parsedResult: parsedResult isEqualToTestCaseResult: testCaseResult], @"The test case failed: %@", testCaseName); + } +} + +#pragma mark - + +- (void)tearDown { + [myTestCases release]; +} + +@end + +#pragma mark - + +@implementation XMLRPCParserTest (XMLRPCParserTestPrivate) + +- (NSBundle *)unitTestBundle { + return [NSBundle bundleForClass: [XMLRPCParserTest class]]; +} + +#pragma mark - + +- (NSDictionary *)testCases { + NSString *file = [[self unitTestBundle] pathForResource: @"TestCases" ofType: @"plist"]; + NSDictionary *testCases = [[[NSDictionary alloc] initWithContentsOfFile: file] autorelease]; + + return testCases; +} + +#pragma mark - + +- (BOOL)parsedResult: (id)parsedResult isEqualToTestCaseResult: (id)testCaseResult { + if ([testCaseResult isKindOfClass: [NSArray class]]) { + return [self parsedResult: parsedResult isEqualToArray: testCaseResult]; + } else if ([testCaseResult isKindOfClass: [NSDictionary class]]) { + return [self parsedResult: parsedResult isEqualToDictionary: testCaseResult]; + } + + if ([testCaseResult isKindOfClass: [NSNumber class]]) { + return [parsedResult isEqualToNumber: testCaseResult]; + } else if ([testCaseResult isKindOfClass: [NSString class]]) { + return [parsedResult isEqualToString: testCaseResult]; + } else if ([testCaseResult isKindOfClass: [NSDate class]]) { + return [parsedResult isEqualToDate: testCaseResult]; + } else if ([testCaseResult isKindOfClass: [NSData class]]) { + return [parsedResult isEqualToData: testCaseResult]; + } + + return YES; +} + +#pragma mark - + +- (BOOL)parsedResult: (id)parsedResult isEqualToArray: (NSArray *)array { + NSEnumerator *arrayEnumerator = [array objectEnumerator]; + id arrayElement; + + if (![parsedResult isKindOfClass: [NSArray class]]) { + return NO; + } + + if ([parsedResult count] != [array count]) { + return NO; + } + + if ([parsedResult isEqualToArray: array]) { + return YES; + } + + while (arrayElement = [arrayEnumerator nextObject]) { + NSInteger index = [array indexOfObject: arrayElement]; + + if (![self parsedResult: [parsedResult objectAtIndex: index] isEqualToTestCaseResult: arrayElement]) { + return NO; + } + } + + return YES; +} + +- (BOOL)parsedResult: (id)parsedResult isEqualToDictionary: (NSDictionary *)dictionary { + NSEnumerator *keyEnumerator = [dictionary keyEnumerator]; + id key; + + if (![parsedResult isKindOfClass: [NSDictionary class]]) { + return NO; + } + + if ([parsedResult count] != [dictionary count]) { + return NO; + } + + if ([parsedResult isEqualToDictionary: dictionary]) { + return YES; + } + + while (key = [keyEnumerator nextObject]) { + if (![self parsedResult: [parsedResult objectForKey: key] isEqualToTestCaseResult: [dictionary objectForKey: key]]) { + return NO; + } + } + + return YES; +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPC.h b/Classes/Utils/XMLRPC/XMLRPC.h new file mode 100755 index 000000000..d5ded9b67 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPC.h @@ -0,0 +1,5 @@ +#import +#import +#import +#import +#import diff --git a/Classes/Utils/XMLRPC/XMLRPC.pch b/Classes/Utils/XMLRPC/XMLRPC.pch new file mode 100755 index 000000000..60070a9c9 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPC.pch @@ -0,0 +1,3 @@ +#ifdef __OBJC__ + #import +#endif diff --git a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj new file mode 100755 index 000000000..7e2cae629 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj @@ -0,0 +1,931 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 033836831527905D00EF8E8A /* NSData+Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 033836811527905D00EF8E8A /* NSData+Base64.h */; }; + 033836841527905D00EF8E8A /* NSData+Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 033836811527905D00EF8E8A /* NSData+Base64.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 033836851527905D00EF8E8A /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 033836821527905D00EF8E8A /* NSData+Base64.m */; }; + 033836861527905D00EF8E8A /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 033836821527905D00EF8E8A /* NSData+Base64.m */; }; + 0707047810114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0707047610114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h */; }; + 0707047910114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0707047710114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m */; }; + 07075BAE10C5FE3800589A27 /* AlternativeDateFormatsTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07075BAD10C5FE3800589A27 /* AlternativeDateFormatsTestCase.xml */; }; + 07452BE30E469C9000A57686 /* XMLRPCConnectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 07452BE20E469C9000A57686 /* XMLRPCConnectionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 075137FB0E429E560019E4F6 /* XMLRPCConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 075137F90E429E560019E4F6 /* XMLRPCConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 075137FC0E429E560019E4F6 /* XMLRPCConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 075137FA0E429E560019E4F6 /* XMLRPCConnectionManager.m */; }; + 0759A6F31143495E000DFE98 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0759A6F11143495E000DFE98 /* InfoPlist.strings */; }; + 0799AF270F6724E300B71B22 /* XMLRPC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* XMLRPC.framework */; }; + 0799AF5E0F67266400B71B22 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0799AF5D0F67266400B71B22 /* SenTestingKit.framework */; }; + 07A0A9071016A51000CEE3C7 /* EmptyBooleanTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07A0A9021016A51000CEE3C7 /* EmptyBooleanTestCase.xml */; }; + 07A0A9081016A51000CEE3C7 /* EmptyDataTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07A0A9031016A51000CEE3C7 /* EmptyDataTestCase.xml */; }; + 07A0A9091016A51000CEE3C7 /* EmptyDoubleTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07A0A9041016A51000CEE3C7 /* EmptyDoubleTestCase.xml */; }; + 07A0A90A1016A51000CEE3C7 /* EmptyIntegerTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07A0A9051016A51000CEE3C7 /* EmptyIntegerTestCase.xml */; }; + 07A0A90B1016A51000CEE3C7 /* EmptyStringTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07A0A9061016A51000CEE3C7 /* EmptyStringTestCase.xml */; }; + 07B0C6070E33A659006453B4 /* NSStringAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5F80E33A659006453B4 /* NSStringAdditions.h */; }; + 07B0C6080E33A659006453B4 /* NSStringAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C5F90E33A659006453B4 /* NSStringAdditions.m */; }; + 07B0C6090E33A659006453B4 /* XMLRPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FA0E33A659006453B4 /* XMLRPC.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07B0C60A0E33A659006453B4 /* XMLRPCConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FB0E33A659006453B4 /* XMLRPCConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07B0C60B0E33A659006453B4 /* XMLRPCConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C5FC0E33A659006453B4 /* XMLRPCConnection.m */; }; + 07B0C60E0E33A659006453B4 /* XMLRPCDefaultEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FF0E33A659006453B4 /* XMLRPCDefaultEncoder.h */; }; + 07B0C60F0E33A659006453B4 /* XMLRPCDefaultEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6000E33A659006453B4 /* XMLRPCDefaultEncoder.m */; }; + 07B0C6100E33A659006453B4 /* XMLRPCRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6010E33A659006453B4 /* XMLRPCRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07B0C6110E33A659006453B4 /* XMLRPCRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6020E33A659006453B4 /* XMLRPCRequest.m */; }; + 07B0C6120E33A659006453B4 /* XMLRPCResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6030E33A659006453B4 /* XMLRPCResponse.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07B0C6130E33A659006453B4 /* XMLRPCResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6040E33A659006453B4 /* XMLRPCResponse.m */; }; + 07B0C6170E33A672006453B4 /* XMLRPC.pch in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6160E33A672006453B4 /* XMLRPC.pch */; }; + 07B52BE7101004670015AD8B /* SimpleArrayTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07B52BE5101004670015AD8B /* SimpleArrayTestCase.xml */; }; + 07B52BE8101004670015AD8B /* SimpleStructTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07B52BE6101004670015AD8B /* SimpleStructTestCase.xml */; }; + 07B52BEA101004810015AD8B /* TestCases.plist in Resources */ = {isa = PBXBuildFile; fileRef = 07B52BE9101004810015AD8B /* TestCases.plist */; }; + 07B52C03101008670015AD8B /* XMLRPCParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B52C02101008670015AD8B /* XMLRPCParserTest.m */; }; + 07BB09891316B65A00E1911C /* DefaultTypeTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07BB09881316B65A00E1911C /* DefaultTypeTestCase.xml */; }; + 07E761001011788B00E9BDEE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; }; + 07EF453B0E721A5D009F2708 /* XMLRPCEventBasedParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 07EF45390E721A5D009F2708 /* XMLRPCEventBasedParser.h */; }; + 07EF453C0E721A5D009F2708 /* XMLRPCEventBasedParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 07EF453A0E721A5D009F2708 /* XMLRPCEventBasedParser.m */; }; + 2DCADEDB1529E24300B47A4F /* XMLRPCEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DCADED91529E06900B47A4F /* XMLRPCEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; }; + 903B0DC212F7581200BD6E09 /* NSStringAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5F80E33A659006453B4 /* NSStringAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC312F7581200BD6E09 /* NSStringAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C5F90E33A659006453B4 /* NSStringAdditions.m */; }; + 903B0DC412F7581200BD6E09 /* XMLRPCConnectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 07452BE20E469C9000A57686 /* XMLRPCConnectionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC512F7581200BD6E09 /* XMLRPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FA0E33A659006453B4 /* XMLRPC.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC612F7581200BD6E09 /* XMLRPCConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FB0E33A659006453B4 /* XMLRPCConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC712F7581200BD6E09 /* XMLRPCConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C5FC0E33A659006453B4 /* XMLRPCConnection.m */; }; + 903B0DC812F7581200BD6E09 /* XMLRPCConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 075137F90E429E560019E4F6 /* XMLRPCConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC912F7581200BD6E09 /* XMLRPCConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 075137FA0E429E560019E4F6 /* XMLRPCConnectionManager.m */; }; + 903B0DCA12F7581200BD6E09 /* XMLRPCDefaultEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FF0E33A659006453B4 /* XMLRPCDefaultEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DCB12F7581200BD6E09 /* XMLRPCDefaultEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6000E33A659006453B4 /* XMLRPCDefaultEncoder.m */; }; + 903B0DCC12F7581200BD6E09 /* XMLRPCEventBasedParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 07EF45390E721A5D009F2708 /* XMLRPCEventBasedParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DCD12F7581200BD6E09 /* XMLRPCEventBasedParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 07EF453A0E721A5D009F2708 /* XMLRPCEventBasedParser.m */; }; + 903B0DCE12F7581200BD6E09 /* XMLRPCEventBasedParserDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0707047610114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DCF12F7581200BD6E09 /* XMLRPCEventBasedParserDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0707047710114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m */; }; + 903B0DD012F7581200BD6E09 /* XMLRPCRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6010E33A659006453B4 /* XMLRPCRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DD112F7581200BD6E09 /* XMLRPCRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6020E33A659006453B4 /* XMLRPCRequest.m */; }; + 903B0DD212F7581200BD6E09 /* XMLRPCResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6030E33A659006453B4 /* XMLRPCResponse.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DD312F7581200BD6E09 /* XMLRPCResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6040E33A659006453B4 /* XMLRPCResponse.m */; }; + 903B0DD412F7581F00BD6E09 /* XMLRPC.pch in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6160E33A672006453B4 /* XMLRPC.pch */; settings = {ATTRIBUTES = (Public, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 0799AF180F67240B00B71B22 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8DC2EF4F0486A6940098B216; + remoteInfo = XMLRPC; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 033836811527905D00EF8E8A /* NSData+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Base64.h"; sourceTree = ""; }; + 033836821527905D00EF8E8A /* NSData+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Base64.m"; sourceTree = ""; }; + 0707047610114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCEventBasedParserDelegate.h; sourceTree = ""; }; + 0707047710114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCEventBasedParserDelegate.m; sourceTree = ""; }; + 07075BAD10C5FE3800589A27 /* AlternativeDateFormatsTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = AlternativeDateFormatsTestCase.xml; path = "Resources/Test Cases/AlternativeDateFormatsTestCase.xml"; sourceTree = ""; }; + 07127C580F4266F4009C7476 /* Common.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Common.xcconfig; path = Configurations/Common.xcconfig; sourceTree = ""; }; + 07127C590F4266F4009C7476 /* CommonDevelopment.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CommonDevelopment.xcconfig; path = Configurations/CommonDevelopment.xcconfig; sourceTree = ""; }; + 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CommonRelease.xcconfig; path = Configurations/CommonRelease.xcconfig; sourceTree = ""; }; + 07452BE20E469C9000A57686 /* XMLRPCConnectionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCConnectionDelegate.h; sourceTree = ""; }; + 075137F90E429E560019E4F6 /* XMLRPCConnectionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCConnectionManager.h; sourceTree = ""; }; + 075137FA0E429E560019E4F6 /* XMLRPCConnectionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCConnectionManager.m; sourceTree = ""; }; + 0759A6F21143495E000DFE98 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = Languages/English.lproj/InfoPlist.strings; sourceTree = ""; }; + 0799AF030F6721FF00B71B22 /* XMLRPCUnitTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = XMLRPCUnitTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; + 0799AF040F6721FF00B71B22 /* XMLRPCUnitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "XMLRPCUnitTests-Info.plist"; path = "Resources/Property Lists/XMLRPCUnitTests-Info.plist"; sourceTree = ""; }; + 0799AF0A0F67227F00B71B22 /* XMLRPCUnitTests.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCUnitTests.xcconfig; path = Configurations/XMLRPCUnitTests.xcconfig; sourceTree = ""; }; + 0799AF0B0F67227F00B71B22 /* XMLRPCUnitTestsDevelopment.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCUnitTestsDevelopment.xcconfig; path = Configurations/XMLRPCUnitTestsDevelopment.xcconfig; sourceTree = ""; }; + 0799AF0C0F67227F00B71B22 /* XMLRPCUnitTestsRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCUnitTestsRelease.xcconfig; path = Configurations/XMLRPCUnitTestsRelease.xcconfig; sourceTree = ""; }; + 0799AF0F0F6722D600B71B22 /* XMLRPC.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPC.xcconfig; path = Configurations/XMLRPC.xcconfig; sourceTree = ""; }; + 0799AF100F6722D600B71B22 /* XMLRPCDevelopment.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCDevelopment.xcconfig; path = Configurations/XMLRPCDevelopment.xcconfig; sourceTree = ""; }; + 0799AF110F6722D600B71B22 /* XMLRPCRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCRelease.xcconfig; path = Configurations/XMLRPCRelease.xcconfig; sourceTree = ""; }; + 0799AF280F67254B00B71B22 /* XMLRPC-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "XMLRPC-Info.plist"; path = "Resources/Property Lists/XMLRPC-Info.plist"; sourceTree = ""; }; + 0799AF5D0F67266400B71B22 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; + 07A0A9021016A51000CEE3C7 /* EmptyBooleanTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = EmptyBooleanTestCase.xml; path = "Resources/Test Cases/EmptyBooleanTestCase.xml"; sourceTree = ""; }; + 07A0A9031016A51000CEE3C7 /* EmptyDataTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = EmptyDataTestCase.xml; path = "Resources/Test Cases/EmptyDataTestCase.xml"; sourceTree = ""; }; + 07A0A9041016A51000CEE3C7 /* EmptyDoubleTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = EmptyDoubleTestCase.xml; path = "Resources/Test Cases/EmptyDoubleTestCase.xml"; sourceTree = ""; }; + 07A0A9051016A51000CEE3C7 /* EmptyIntegerTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = EmptyIntegerTestCase.xml; path = "Resources/Test Cases/EmptyIntegerTestCase.xml"; sourceTree = ""; }; + 07A0A9061016A51000CEE3C7 /* EmptyStringTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = EmptyStringTestCase.xml; path = "Resources/Test Cases/EmptyStringTestCase.xml"; sourceTree = ""; }; + 07B0C5F80E33A659006453B4 /* NSStringAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSStringAdditions.h; sourceTree = ""; }; + 07B0C5F90E33A659006453B4 /* NSStringAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSStringAdditions.m; sourceTree = ""; }; + 07B0C5FA0E33A659006453B4 /* XMLRPC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPC.h; sourceTree = ""; }; + 07B0C5FB0E33A659006453B4 /* XMLRPCConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCConnection.h; sourceTree = ""; }; + 07B0C5FC0E33A659006453B4 /* XMLRPCConnection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCConnection.m; sourceTree = ""; }; + 07B0C5FF0E33A659006453B4 /* XMLRPCDefaultEncoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCDefaultEncoder.h; sourceTree = ""; }; + 07B0C6000E33A659006453B4 /* XMLRPCDefaultEncoder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCDefaultEncoder.m; sourceTree = ""; }; + 07B0C6010E33A659006453B4 /* XMLRPCRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCRequest.h; sourceTree = ""; }; + 07B0C6020E33A659006453B4 /* XMLRPCRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCRequest.m; sourceTree = ""; }; + 07B0C6030E33A659006453B4 /* XMLRPCResponse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCResponse.h; sourceTree = ""; }; + 07B0C6040E33A659006453B4 /* XMLRPCResponse.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCResponse.m; sourceTree = ""; }; + 07B0C6160E33A672006453B4 /* XMLRPC.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPC.pch; sourceTree = ""; }; + 07B52BE5101004670015AD8B /* SimpleArrayTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = SimpleArrayTestCase.xml; path = "Resources/Test Cases/SimpleArrayTestCase.xml"; sourceTree = ""; }; + 07B52BE6101004670015AD8B /* SimpleStructTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = SimpleStructTestCase.xml; path = "Resources/Test Cases/SimpleStructTestCase.xml"; sourceTree = ""; }; + 07B52BE9101004810015AD8B /* TestCases.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = TestCases.plist; path = "Resources/Property Lists/TestCases.plist"; sourceTree = ""; }; + 07B52C01101008670015AD8B /* XMLRPCParserTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = XMLRPCParserTest.h; path = "Unit Tests/XMLRPCParserTest.h"; sourceTree = ""; }; + 07B52C02101008670015AD8B /* XMLRPCParserTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = XMLRPCParserTest.m; path = "Unit Tests/XMLRPCParserTest.m"; sourceTree = ""; }; + 07BB09881316B65A00E1911C /* DefaultTypeTestCase.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = DefaultTypeTestCase.xml; path = "Resources/Test Cases/DefaultTypeTestCase.xml"; sourceTree = ""; }; + 07EF45390E721A5D009F2708 /* XMLRPCEventBasedParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCEventBasedParser.h; sourceTree = ""; }; + 07EF453A0E721A5D009F2708 /* XMLRPCEventBasedParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCEventBasedParser.m; sourceTree = ""; }; + 0867D69BFE84028FC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 2DCADED91529E06900B47A4F /* XMLRPCEncoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XMLRPCEncoder.h; sourceTree = ""; }; + 8DC2EF5B0486A6940098B216 /* XMLRPC.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = XMLRPC.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 903B0DB612F7574800BD6E09 /* libXMLRPC.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libXMLRPC.a; sourceTree = BUILT_PRODUCTS_DIR; }; + D2F7E79907B2D74100F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0799AF000F6721FF00B71B22 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 07E761001011788B00E9BDEE /* Cocoa.framework in Frameworks */, + 0799AF5E0F67266400B71B22 /* SenTestingKit.framework in Frameworks */, + 0799AF270F6724E300B71B22 /* XMLRPC.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8DC2EF560486A6940098B216 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 903B0DB412F7574800BD6E09 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 034768DFFF38A50411DB9C8B /* Products */ = { + isa = PBXGroup; + children = ( + 8DC2EF5B0486A6940098B216 /* XMLRPC.framework */, + 0799AF030F6721FF00B71B22 /* XMLRPCUnitTests.octest */, + 903B0DB612F7574800BD6E09 /* libXMLRPC.a */, + ); + name = Products; + sourceTree = ""; + }; + 07127C570F4266E2009C7476 /* Configurations */ = { + isa = PBXGroup; + children = ( + 07127C580F4266F4009C7476 /* Common.xcconfig */, + 07127C590F4266F4009C7476 /* CommonDevelopment.xcconfig */, + 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */, + 0799AF0F0F6722D600B71B22 /* XMLRPC.xcconfig */, + 0799AF100F6722D600B71B22 /* XMLRPCDevelopment.xcconfig */, + 0799AF110F6722D600B71B22 /* XMLRPCRelease.xcconfig */, + 0799AF0A0F67227F00B71B22 /* XMLRPCUnitTests.xcconfig */, + 0799AF0B0F67227F00B71B22 /* XMLRPCUnitTestsDevelopment.xcconfig */, + 0799AF0C0F67227F00B71B22 /* XMLRPCUnitTestsRelease.xcconfig */, + ); + name = Configurations; + sourceTree = ""; + }; + 07452BDC0E469C6900A57686 /* Delegates */ = { + isa = PBXGroup; + children = ( + 07452BE20E469C9000A57686 /* XMLRPCConnectionDelegate.h */, + ); + name = Delegates; + sourceTree = ""; + }; + 074E8A200F6D8D6E00BE0B22 /* Localized Strings */ = { + isa = PBXGroup; + children = ( + 0759A6F11143495E000DFE98 /* InfoPlist.strings */, + ); + name = "Localized Strings"; + sourceTree = ""; + }; + 074E8A220F6D8D8300BE0B22 /* Property Lists */ = { + isa = PBXGroup; + children = ( + 07B52BE9101004810015AD8B /* TestCases.plist */, + 0799AF280F67254B00B71B22 /* XMLRPC-Info.plist */, + 0799AF040F6721FF00B71B22 /* XMLRPCUnitTests-Info.plist */, + ); + name = "Property Lists"; + sourceTree = ""; + }; + 0799AF2F0F67258600B71B22 /* Unit Tests */ = { + isa = PBXGroup; + children = ( + 07B52C01101008670015AD8B /* XMLRPCParserTest.h */, + 07B52C02101008670015AD8B /* XMLRPCParserTest.m */, + ); + name = "Unit Tests"; + sourceTree = ""; + }; + 07B0C6140E33A65E006453B4 /* Additions */ = { + isa = PBXGroup; + children = ( + 033836811527905D00EF8E8A /* NSData+Base64.h */, + 033836821527905D00EF8E8A /* NSData+Base64.m */, + 07B0C5F80E33A659006453B4 /* NSStringAdditions.h */, + 07B0C5F90E33A659006453B4 /* NSStringAdditions.m */, + ); + name = Additions; + sourceTree = ""; + }; + 07B52BE4101004270015AD8B /* Test Cases */ = { + isa = PBXGroup; + children = ( + 07075BAD10C5FE3800589A27 /* AlternativeDateFormatsTestCase.xml */, + 07BB09881316B65A00E1911C /* DefaultTypeTestCase.xml */, + 07A0A9021016A51000CEE3C7 /* EmptyBooleanTestCase.xml */, + 07A0A9031016A51000CEE3C7 /* EmptyDataTestCase.xml */, + 07A0A9041016A51000CEE3C7 /* EmptyDoubleTestCase.xml */, + 07A0A9051016A51000CEE3C7 /* EmptyIntegerTestCase.xml */, + 07A0A9061016A51000CEE3C7 /* EmptyStringTestCase.xml */, + 07B52BE5101004670015AD8B /* SimpleArrayTestCase.xml */, + 07B52BE6101004670015AD8B /* SimpleStructTestCase.xml */, + ); + name = "Test Cases"; + sourceTree = ""; + }; + 0867D691FE84028FC02AAC07 /* XMLRPC */ = { + isa = PBXGroup; + children = ( + 08FB77AEFE84172EC02AAC07 /* Classes */, + 32C88DFF0371C24200C91783 /* Other Sources */, + 089C1665FE841158C02AAC07 /* Resources */, + 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */, + 034768DFFF38A50411DB9C8B /* Products */, + ); + name = XMLRPC; + sourceTree = ""; + }; + 0867D69AFE84028FC02AAC07 /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */, + 1058C7B2FEA5585E11CA2CBB /* Other Frameworks */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 089C1665FE841158C02AAC07 /* Resources */ = { + isa = PBXGroup; + children = ( + 07127C570F4266E2009C7476 /* Configurations */, + 074E8A200F6D8D6E00BE0B22 /* Localized Strings */, + 074E8A220F6D8D8300BE0B22 /* Property Lists */, + 07B52BE4101004270015AD8B /* Test Cases */, + ); + name = Resources; + sourceTree = ""; + }; + 08FB77AEFE84172EC02AAC07 /* Classes */ = { + isa = PBXGroup; + children = ( + 07B0C6140E33A65E006453B4 /* Additions */, + 07452BDC0E469C6900A57686 /* Delegates */, + 07B0C5FA0E33A659006453B4 /* XMLRPC.h */, + 07B0C5FB0E33A659006453B4 /* XMLRPCConnection.h */, + 07B0C5FC0E33A659006453B4 /* XMLRPCConnection.m */, + 075137F90E429E560019E4F6 /* XMLRPCConnectionManager.h */, + 075137FA0E429E560019E4F6 /* XMLRPCConnectionManager.m */, + 2DCADED91529E06900B47A4F /* XMLRPCEncoder.h */, + 07B0C5FF0E33A659006453B4 /* XMLRPCDefaultEncoder.h */, + 07B0C6000E33A659006453B4 /* XMLRPCDefaultEncoder.m */, + 07EF45390E721A5D009F2708 /* XMLRPCEventBasedParser.h */, + 07EF453A0E721A5D009F2708 /* XMLRPCEventBasedParser.m */, + 0707047610114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h */, + 0707047710114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m */, + 07B0C6010E33A659006453B4 /* XMLRPCRequest.h */, + 07B0C6020E33A659006453B4 /* XMLRPCRequest.m */, + 07B0C6030E33A659006453B4 /* XMLRPCResponse.h */, + 07B0C6040E33A659006453B4 /* XMLRPCResponse.m */, + ); + name = Classes; + sourceTree = ""; + }; + 1058C7B0FEA5585E11CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */, + 0799AF5D0F67266400B71B22 /* SenTestingKit.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7B2FEA5585E11CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 0867D6A5FE840307C02AAC07 /* AppKit.framework */, + D2F7E79907B2D74100F64583 /* CoreData.framework */, + 0867D69BFE84028FC02AAC07 /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 32C88DFF0371C24200C91783 /* Other Sources */ = { + isa = PBXGroup; + children = ( + 0799AF2F0F67258600B71B22 /* Unit Tests */, + 07B0C6160E33A672006453B4 /* XMLRPC.pch */, + ); + name = "Other Sources"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8DC2EF500486A6940098B216 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 07B0C6070E33A659006453B4 /* NSStringAdditions.h in Headers */, + 07B0C6090E33A659006453B4 /* XMLRPC.h in Headers */, + 07B0C6170E33A672006453B4 /* XMLRPC.pch in Headers */, + 07B0C60A0E33A659006453B4 /* XMLRPCConnection.h in Headers */, + 07452BE30E469C9000A57686 /* XMLRPCConnectionDelegate.h in Headers */, + 075137FB0E429E560019E4F6 /* XMLRPCConnectionManager.h in Headers */, + 07B0C60E0E33A659006453B4 /* XMLRPCDefaultEncoder.h in Headers */, + 07EF453B0E721A5D009F2708 /* XMLRPCEventBasedParser.h in Headers */, + 0707047810114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h in Headers */, + 07B0C6100E33A659006453B4 /* XMLRPCRequest.h in Headers */, + 07B0C6120E33A659006453B4 /* XMLRPCResponse.h in Headers */, + 033836831527905D00EF8E8A /* NSData+Base64.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 903B0DB212F7574800BD6E09 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 903B0DC212F7581200BD6E09 /* NSStringAdditions.h in Headers */, + 903B0DC412F7581200BD6E09 /* XMLRPCConnectionDelegate.h in Headers */, + 903B0DC512F7581200BD6E09 /* XMLRPC.h in Headers */, + 903B0DC612F7581200BD6E09 /* XMLRPCConnection.h in Headers */, + 903B0DC812F7581200BD6E09 /* XMLRPCConnectionManager.h in Headers */, + 2DCADEDB1529E24300B47A4F /* XMLRPCEncoder.h in Headers */, + 903B0DCA12F7581200BD6E09 /* XMLRPCDefaultEncoder.h in Headers */, + 903B0DCC12F7581200BD6E09 /* XMLRPCEventBasedParser.h in Headers */, + 903B0DCE12F7581200BD6E09 /* XMLRPCEventBasedParserDelegate.h in Headers */, + 903B0DD012F7581200BD6E09 /* XMLRPCRequest.h in Headers */, + 903B0DD212F7581200BD6E09 /* XMLRPCResponse.h in Headers */, + 903B0DD412F7581F00BD6E09 /* XMLRPC.pch in Headers */, + 033836841527905D00EF8E8A /* NSData+Base64.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 0799AF020F6721FF00B71B22 /* XMLRPCUnitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0799AF070F67220000B71B22 /* Build configuration list for PBXNativeTarget "XMLRPCUnitTests" */; + buildPhases = ( + 0799AEFE0F6721FF00B71B22 /* Resources */, + 0799AEFF0F6721FF00B71B22 /* Sources */, + 0799AF000F6721FF00B71B22 /* Frameworks */, + 0799AF010F6721FF00B71B22 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + 0799AF190F67240B00B71B22 /* PBXTargetDependency */, + ); + name = XMLRPCUnitTests; + productName = XMLRPCUnitTests; + productReference = 0799AF030F6721FF00B71B22 /* XMLRPCUnitTests.octest */; + productType = "com.apple.product-type.bundle"; + }; + 8DC2EF4F0486A6940098B216 /* XMLRPC */ = { + isa = PBXNativeTarget; + buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "XMLRPC" */; + buildPhases = ( + 8DC2EF500486A6940098B216 /* Headers */, + 8DC2EF520486A6940098B216 /* Resources */, + 8DC2EF540486A6940098B216 /* Sources */, + 8DC2EF560486A6940098B216 /* Frameworks */, + 0715852011432A78003D3454 /* Run Script: Include Git commit hash */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = XMLRPC; + productInstallPath = "$(HOME)/Library/Frameworks"; + productName = XMLRPC; + productReference = 8DC2EF5B0486A6940098B216 /* XMLRPC.framework */; + productType = "com.apple.product-type.framework"; + }; + 903B0DB512F7574800BD6E09 /* libXMLRPC */ = { + isa = PBXNativeTarget; + buildConfigurationList = 903B0DB912F7577B00BD6E09 /* Build configuration list for PBXNativeTarget "libXMLRPC" */; + buildPhases = ( + 903B0DB212F7574800BD6E09 /* Headers */, + 903B0DB312F7574800BD6E09 /* Sources */, + 903B0DB412F7574800BD6E09 /* Frameworks */, + 903B0DFB12F75B2300BD6E09 /* ShellScript */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = libXMLRPC; + productName = iOSXMLRPC; + productReference = 903B0DB612F7574800BD6E09 /* libXMLRPC.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0867D690FE84028FC02AAC07 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0440; + }; + buildConfigurationList = 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "XMLRPC" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 0867D691FE84028FC02AAC07 /* XMLRPC */; + productRefGroup = 034768DFFF38A50411DB9C8B /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8DC2EF4F0486A6940098B216 /* XMLRPC */, + 903B0DB512F7574800BD6E09 /* libXMLRPC */, + 0799AF020F6721FF00B71B22 /* XMLRPCUnitTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 0799AEFE0F6721FF00B71B22 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 07075BAE10C5FE3800589A27 /* AlternativeDateFormatsTestCase.xml in Resources */, + 07BB09891316B65A00E1911C /* DefaultTypeTestCase.xml in Resources */, + 07A0A9071016A51000CEE3C7 /* EmptyBooleanTestCase.xml in Resources */, + 07A0A9081016A51000CEE3C7 /* EmptyDataTestCase.xml in Resources */, + 07A0A9091016A51000CEE3C7 /* EmptyDoubleTestCase.xml in Resources */, + 07A0A90A1016A51000CEE3C7 /* EmptyIntegerTestCase.xml in Resources */, + 07A0A90B1016A51000CEE3C7 /* EmptyStringTestCase.xml in Resources */, + 07B52BE7101004670015AD8B /* SimpleArrayTestCase.xml in Resources */, + 07B52BE8101004670015AD8B /* SimpleStructTestCase.xml in Resources */, + 07B52BEA101004810015AD8B /* TestCases.plist in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8DC2EF520486A6940098B216 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0759A6F31143495E000DFE98 /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 0715852011432A78003D3454 /* Run Script: Include Git commit hash */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script: Include Git commit hash"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /usr/bin/ruby; + shellScript = "raise \"Must be executed from within Xcode.\" unless ENV['XCODE_VERSION_ACTUAL']\n\ninfo_plist = \"#{ENV['BUILT_PRODUCTS_DIR']}/#{ENV['WRAPPER_NAME']}/Resources/Info.plist\"\n\nif !File.exist?('/usr/local/bin/git')\n exit\nend\n\ncommit = `/usr/local/bin/git rev-parse --short HEAD`.chomp!\n\nif commit.nil? or commit.empty?\n exit\nend\n\nlines = IO.readlines(info_plist).join\n\nlines.gsub! /(CFBundleShortVersionString<\\/key>\\W*)(\\d+\\.\\d+(?:\\.\\d)*[a-z]?)<\\/string>/, \"\\\\1\\\\2 rev. #{commit}\"\n\nFile.open(info_plist, 'w') { |f| f.puts lines }"; + }; + 0799AF010F6721FF00B71B22 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; + }; + 903B0DFB12F75B2300BD6E09 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "#\n# Version 2.0 (updated for Xcode 4, with some fixes)\n#\n# Author: Adam Martin - http://twitter.com/redglassesapps\n#\n# For more information see this Stack Overflow question:\n# http://stackoverflow.com/questions/3520977/build-fat-static-library-device-simulator-using-xcode-and-sdk-4\n#\nDEBUG_THIS_SCRIPT=\"false\"\n\nif [ $DEBUG_THIS_SCRIPT = \"true\" ]\nthen\necho \"########### TESTS #############\"\necho \"Use the following variables when debugging this script; note that they may change\"\necho \"BUILD_DIR = $BUILD_DIR\"\necho \"BUILD_ROOT = $BUILD_ROOT\"\necho \"CONFIGURATION_BUILD_DIR = $CONFIGURATION_BUILD_DIR\"\necho \"BUILT_PRODUCTS_DIR = $BUILT_PRODUCTS_DIR\"\necho \"CONFIGURATION_TEMP_DIR = $CONFIGURATION_TEMP_DIR\"\necho \"TARGET_BUILD_DIR = $TARGET_BUILD_DIR\"\nfi\n\n########################################################\n\nSDK_VERSION=$(echo ${SDK_NAME} | grep -o '.\\{3\\}$')\n\nif [ ${PLATFORM_NAME} = \"iphonesimulator\" ]\nthen\nOTHER_SDK_TO_BUILD=iphoneos${SDK_VERSION}\nelse\nOTHER_SDK_TO_BUILD=iphonesimulator${SDK_VERSION}\nfi\n\necho \"XCode has selected SDK: ${PLATFORM_NAME} with version: ${SDK_VERSION} (although back-targetting: ${IPHONEOS_DEPLOYMENT_TARGET})\"\necho \"...therefore, OTHER_SDK_TO_BUILD = ${OTHER_SDK_TO_BUILD}\"\n\n########################################################\n\nif [ \"true\" == ${ALREADYINVOKED:-false} ]\nthen\necho \"RECURSION: I am NOT the root invocation, so I'm NOT going to recurse\"\nelse\nexport ALREADYINVOKED=\"true\"\n\necho \"RECURSION: I am the root ... recursing all missing build targets NOW...\"\necho \"RECURSION: ...about to invoke: xcodebuild -configuration \\\"${CONFIGURATION}\\\" -target \\\"${TARGET_NAME}\\\" -sdk \\\"${OTHER_SDK_TO_BUILD}\\\" ${ACTION} RUN_CLANG_STATIC_ANALYZER=NO\"\n\nxcodebuild -configuration \"${CONFIGURATION}\" -target \"${TARGET_NAME}\" -sdk \"${OTHER_SDK_TO_BUILD}\" ${ACTION} RUN_CLANG_STATIC_ANALYZER=NO BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\"\n\nACTION=\"build\"\n\nCURRENTCONFIG_DEVICE_DIR=${SYMROOT}/${CONFIGURATION}-iphoneos\nCURRENTCONFIG_SIMULATOR_DIR=${SYMROOT}/${CONFIGURATION}-iphonesimulator\n\necho \"Taking device build from: ${CURRENTCONFIG_DEVICE_DIR}\"\necho \"Taking simulator build from: ${CURRENTCONFIG_SIMULATOR_DIR}\"\n\nCREATING_UNIVERSAL_DIR=${SYMROOT}/${CONFIGURATION}-universal\n\necho \"...I will output a universal build to: ${CREATING_UNIVERSAL_DIR}\"\n\nrm -rf \"${CREATING_UNIVERSAL_DIR}\"\nmkdir \"${CREATING_UNIVERSAL_DIR}\"\n\necho \"lipo: for current configuration (${CONFIGURATION}) creating output file: ${CREATING_UNIVERSAL_DIR}/${EXECUTABLE_NAME}\"\n\nlipo -create -output \"${CREATING_UNIVERSAL_DIR}/${EXECUTABLE_NAME}\" \"${CURRENTCONFIG_DEVICE_DIR}/${EXECUTABLE_NAME}\" \"${CURRENTCONFIG_SIMULATOR_DIR}/${EXECUTABLE_NAME}\"\n\nif [ -d \"${CURRENTCONFIG_DEVICE_DIR}/usr/local/include\" ]\nthen\nmkdir -p \"${CREATING_UNIVERSAL_DIR}/usr/local/include\"\ncp \"${CURRENTCONFIG_DEVICE_DIR}/usr/local/include/\"* \"${CREATING_UNIVERSAL_DIR}/usr/local/include\"\nfi\nfi"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0799AEFF0F6721FF00B71B22 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 07B52C03101008670015AD8B /* XMLRPCParserTest.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8DC2EF540486A6940098B216 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 07B0C6080E33A659006453B4 /* NSStringAdditions.m in Sources */, + 07B0C60B0E33A659006453B4 /* XMLRPCConnection.m in Sources */, + 075137FC0E429E560019E4F6 /* XMLRPCConnectionManager.m in Sources */, + 07B0C60F0E33A659006453B4 /* XMLRPCDefaultEncoder.m in Sources */, + 07EF453C0E721A5D009F2708 /* XMLRPCEventBasedParser.m in Sources */, + 0707047910114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m in Sources */, + 07B0C6110E33A659006453B4 /* XMLRPCRequest.m in Sources */, + 07B0C6130E33A659006453B4 /* XMLRPCResponse.m in Sources */, + 033836851527905D00EF8E8A /* NSData+Base64.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 903B0DB312F7574800BD6E09 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 903B0DC312F7581200BD6E09 /* NSStringAdditions.m in Sources */, + 903B0DC712F7581200BD6E09 /* XMLRPCConnection.m in Sources */, + 903B0DC912F7581200BD6E09 /* XMLRPCConnectionManager.m in Sources */, + 903B0DCB12F7581200BD6E09 /* XMLRPCDefaultEncoder.m in Sources */, + 903B0DCD12F7581200BD6E09 /* XMLRPCEventBasedParser.m in Sources */, + 903B0DCF12F7581200BD6E09 /* XMLRPCEventBasedParserDelegate.m in Sources */, + 903B0DD112F7581200BD6E09 /* XMLRPCRequest.m in Sources */, + 903B0DD312F7581200BD6E09 /* XMLRPCResponse.m in Sources */, + 033836861527905D00EF8E8A /* NSData+Base64.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 0799AF190F67240B00B71B22 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8DC2EF4F0486A6940098B216 /* XMLRPC */; + targetProxy = 0799AF180F67240B00B71B22 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 0759A6F11143495E000DFE98 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 0759A6F21143495E000DFE98 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 0799AF050F67220000B71B22 /* Development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0799AF0B0F67227F00B71B22 /* XMLRPCUnitTestsDevelopment.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", + ); + VERSION_INFO_FILE = ""; + }; + name = Development; + }; + 0799AF060F67220000B71B22 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0799AF0C0F67227F00B71B22 /* XMLRPCUnitTestsRelease.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", + ); + VERSION_INFO_FILE = ""; + }; + name = Release; + }; + 1DEB91AE08733DA50010E9CD /* Development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0799AF100F6722D600B71B22 /* XMLRPCDevelopment.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + VERSION_INFO_FILE = ""; + }; + name = Development; + }; + 1DEB91AF08733DA50010E9CD /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0799AF110F6722D600B71B22 /* XMLRPCRelease.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + VERSION_INFO_FILE = ""; + }; + name = Release; + }; + 1DEB91B208733DA50010E9CD /* Development */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 07127C590F4266F4009C7476 /* CommonDevelopment.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + OTHER_LDFLAGS = "-ObjC"; + SDKROOT = iphoneos; + }; + name = Development; + }; + 1DEB91B308733DA50010E9CD /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + OTHER_LDFLAGS = "-ObjC"; + SDKROOT = iphoneos; + }; + name = Release; + }; + 903B0DB712F7574900BD6E09 /* Development */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + IPHONEOS_DEPLOYMENT_TARGET = 3.0; + PRODUCT_NAME = XMLRPC; + PUBLIC_HEADERS_FOLDER_PATH = /headers/; + SDKROOT = iphoneos; + VALID_ARCHS = "armv7 armv6"; + }; + name = Development; + }; + 903B0DB812F7574900BD6E09 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + IPHONEOS_DEPLOYMENT_TARGET = 3.0; + PRODUCT_NAME = XMLRPC; + PUBLIC_HEADERS_FOLDER_PATH = /headers/; + SDKROOT = iphoneos; + VALID_ARCHS = "armv7 armv6"; + ZERO_LINK = NO; + }; + name = Release; + }; + D3554ED915CA7E4500478841 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 07127C590F4266F4009C7476 /* CommonDevelopment.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + OTHER_LDFLAGS = "-ObjC"; + SDKROOT = iphoneos; + }; + name = Debug; + }; + D3554EDA15CA7E4500478841 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0799AF100F6722D600B71B22 /* XMLRPCDevelopment.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + VERSION_INFO_FILE = ""; + }; + name = Debug; + }; + D3554EDB15CA7E4500478841 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + IPHONEOS_DEPLOYMENT_TARGET = 3.0; + PRODUCT_NAME = XMLRPC; + PUBLIC_HEADERS_FOLDER_PATH = /headers/; + SDKROOT = iphoneos; + VALID_ARCHS = "armv7 armv6"; + }; + name = Debug; + }; + D3554EDC15CA7E4500478841 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0799AF0B0F67227F00B71B22 /* XMLRPCUnitTestsDevelopment.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", + ); + VERSION_INFO_FILE = ""; + }; + name = Debug; + }; + D3554EDD15CA7E5600478841 /* Distribution */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + OTHER_LDFLAGS = "-ObjC"; + SDKROOT = iphoneos; + }; + name = Distribution; + }; + D3554EDE15CA7E5600478841 /* Distribution */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0799AF110F6722D600B71B22 /* XMLRPCRelease.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + VERSION_INFO_FILE = ""; + }; + name = Distribution; + }; + D3554EDF15CA7E5600478841 /* Distribution */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + IPHONEOS_DEPLOYMENT_TARGET = 3.0; + PRODUCT_NAME = XMLRPC; + PUBLIC_HEADERS_FOLDER_PATH = /headers/; + SDKROOT = iphoneos; + VALID_ARCHS = "armv7 armv6"; + ZERO_LINK = NO; + }; + name = Distribution; + }; + D3554EE015CA7E5600478841 /* Distribution */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0799AF0C0F67227F00B71B22 /* XMLRPCUnitTestsRelease.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", + ); + VERSION_INFO_FILE = ""; + }; + name = Distribution; + }; + D3554EE115CA7E6000478841 /* DistributionAdhoc */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + OTHER_LDFLAGS = "-ObjC"; + SDKROOT = iphoneos; + }; + name = DistributionAdhoc; + }; + D3554EE215CA7E6000478841 /* DistributionAdhoc */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0799AF110F6722D600B71B22 /* XMLRPCRelease.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + VERSION_INFO_FILE = ""; + }; + name = DistributionAdhoc; + }; + D3554EE315CA7E6000478841 /* DistributionAdhoc */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; + IPHONEOS_DEPLOYMENT_TARGET = 3.0; + PRODUCT_NAME = XMLRPC; + PUBLIC_HEADERS_FOLDER_PATH = /headers/; + SDKROOT = iphoneos; + VALID_ARCHS = "armv7 armv6"; + ZERO_LINK = NO; + }; + name = DistributionAdhoc; + }; + D3554EE415CA7E6000478841 /* DistributionAdhoc */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0799AF0C0F67227F00B71B22 /* XMLRPCUnitTestsRelease.xcconfig */; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", + ); + VERSION_INFO_FILE = ""; + }; + name = DistributionAdhoc; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0799AF070F67220000B71B22 /* Build configuration list for PBXNativeTarget "XMLRPCUnitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0799AF050F67220000B71B22 /* Development */, + D3554EDC15CA7E4500478841 /* Debug */, + 0799AF060F67220000B71B22 /* Release */, + D3554EE015CA7E5600478841 /* Distribution */, + D3554EE415CA7E6000478841 /* DistributionAdhoc */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "XMLRPC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB91AE08733DA50010E9CD /* Development */, + D3554EDA15CA7E4500478841 /* Debug */, + 1DEB91AF08733DA50010E9CD /* Release */, + D3554EDE15CA7E5600478841 /* Distribution */, + D3554EE215CA7E6000478841 /* DistributionAdhoc */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "XMLRPC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 1DEB91B208733DA50010E9CD /* Development */, + D3554ED915CA7E4500478841 /* Debug */, + 1DEB91B308733DA50010E9CD /* Release */, + D3554EDD15CA7E5600478841 /* Distribution */, + D3554EE115CA7E6000478841 /* DistributionAdhoc */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 903B0DB912F7577B00BD6E09 /* Build configuration list for PBXNativeTarget "libXMLRPC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 903B0DB712F7574900BD6E09 /* Development */, + D3554EDB15CA7E4500478841 /* Debug */, + 903B0DB812F7574900BD6E09 /* Release */, + D3554EDF15CA7E5600478841 /* Distribution */, + D3554EE315CA7E6000478841 /* DistributionAdhoc */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0867D690FE84028FC02AAC07 /* Project object */; +} diff --git a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/xcuserdata/ydiorcet.xcuserdatad/xcschemes/xcschememanagement.plist b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/xcuserdata/ydiorcet.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 000000000..a941b5698 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/xcuserdata/ydiorcet.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,26 @@ + + + + + SchemeUserState + + SuppressBuildableAutocreation + + 0799AF020F6721FF00B71B22 + + primary + + + 8DC2EF4F0486A6940098B216 + + primary + + + 903B0DB512F7574800BD6E09 + + primary + + + + + diff --git a/Classes/Utils/XMLRPC/XMLRPCConnection.h b/Classes/Utils/XMLRPC/XMLRPCConnection.h new file mode 100755 index 000000000..d84186dd9 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCConnection.h @@ -0,0 +1,33 @@ +#import +#import "XMLRPCConnectionDelegate.h" + +@class XMLRPCConnectionManager, XMLRPCRequest, XMLRPCResponse; + +@interface XMLRPCConnection : NSObject { + XMLRPCConnectionManager *myManager; + XMLRPCRequest *myRequest; + NSString *myIdentifier; + NSMutableData *myData; + NSURLConnection *myConnection; + id myDelegate; +} + +- (id)initWithXMLRPCRequest: (XMLRPCRequest *)request delegate: (id)delegate manager: (XMLRPCConnectionManager *)manager; + +#pragma mark - + ++ (XMLRPCResponse *)sendSynchronousXMLRPCRequest: (XMLRPCRequest *)request error: (NSError **)error; + +#pragma mark - + +- (NSString *)identifier; + +#pragma mark - + +- (id)delegate; + +#pragma mark - + +- (void)cancel; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCConnection.m b/Classes/Utils/XMLRPC/XMLRPCConnection.m new file mode 100755 index 000000000..a7d17a505 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCConnection.m @@ -0,0 +1,214 @@ +#import "XMLRPCConnection.h" +#import "XMLRPCConnectionManager.h" +#import "XMLRPCRequest.h" +#import "XMLRPCResponse.h" +#import "NSStringAdditions.h" + +@interface XMLRPCConnection (XMLRPCConnectionPrivate) + +- (void)connection: (NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response; + +- (void)connection: (NSURLConnection *)connection didReceiveData: (NSData *)data; + +- (void)connection:(NSURLConnection *)connection + didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten +totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite; + +- (void)connection: (NSURLConnection *)connection didFailWithError: (NSError *)error; + +#pragma mark - + +- (BOOL)connection: (NSURLConnection *)connection canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace; + +- (void)connection: (NSURLConnection *)connection didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +- (void)connection: (NSURLConnection *)connection didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +- (void)connectionDidFinishLoading: (NSURLConnection *)connection; + +@end + +#pragma mark - + +@implementation XMLRPCConnection + +- (id)initWithXMLRPCRequest: (XMLRPCRequest *)request delegate: (id)delegate manager: (XMLRPCConnectionManager *)manager { + self = [super init]; + if (self) { +#if ! __has_feature(objc_arc) + myManager = [manager retain]; + myRequest = [request retain]; + myIdentifier = [[NSString stringByGeneratingUUID] retain]; +#else + myManager = manager; + myRequest = request; + myIdentifier = [NSString stringByGeneratingUUID]; +#endif + myData = [[NSMutableData alloc] init]; + + myConnection = [[NSURLConnection alloc] initWithRequest: [request request] delegate: self]; + +#if ! __has_feature(objc_arc) + myDelegate = [delegate retain]; +#else + myDelegate = delegate; +#endif + + if (myConnection) { + NSLog(@"The connection, %@, has been established!", myIdentifier); + } else { + NSLog(@"The connection, %@, could not be established!", myIdentifier); +#if ! __has_feature(objc_arc) + [self release]; +#endif + return nil; + } + } + + return self; +} + +#pragma mark - + ++ (XMLRPCResponse *)sendSynchronousXMLRPCRequest: (XMLRPCRequest *)request error: (NSError **)error { + NSHTTPURLResponse *response = nil; +#if ! __has_feature(objc_arc) + NSData *data = [[[NSURLConnection sendSynchronousRequest: [request request] returningResponse: &response error: error] retain] autorelease]; +#else + NSData *data = [NSURLConnection sendSynchronousRequest: [request request] returningResponse: &response error: error]; +#endif + + if (response) { + NSInteger statusCode = [response statusCode]; + + if ((statusCode < 400) && data) { +#if ! __has_feature(objc_arc) + return [[[XMLRPCResponse alloc] initWithData: data] autorelease]; +#else + return [[XMLRPCResponse alloc] initWithData: data]; +#endif + } + } + + return nil; +} + +#pragma mark - + +- (NSString *)identifier { +#if ! __has_feature(objc_arc) + return [[myIdentifier retain] autorelease]; +#else + return myIdentifier; +#endif +} + +#pragma mark - + +- (id)delegate { + return myDelegate; +} + +#pragma mark - + +- (void)cancel { + [myConnection cancel]; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myManager release]; + [myRequest release]; + [myIdentifier release]; + [myData release]; + [myConnection release]; + [myDelegate release]; + + [super dealloc]; +#endif +} + +@end + +#pragma mark - + +@implementation XMLRPCConnection (XMLRPCConnectionPrivate) + +- (void)connection: (NSURLConnection *)connection didReceiveResponse: (NSURLResponse *)response { + if([response respondsToSelector: @selector(statusCode)]) { + int statusCode = [(NSHTTPURLResponse *)response statusCode]; + + if(statusCode >= 400) { + NSError *error = [NSError errorWithDomain: @"HTTP" code: statusCode userInfo: nil]; + + [myDelegate request: myRequest didFailWithError: error]; + } else if (statusCode == 304) { + [myManager closeConnectionForIdentifier: myIdentifier]; + } + } + + [myData setLength: 0]; +} + +- (void)connection: (NSURLConnection *)connection didReceiveData: (NSData *)data { + [myData appendData: data]; +} + +- (void)connection:(NSURLConnection *)connection + didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite +{ + if ([myDelegate respondsToSelector:@selector(request:didSendBodyData:)]) { + float percent = totalBytesWritten / (float)totalBytesExpectedToWrite; + [myDelegate request:myRequest didSendBodyData:percent]; + } +} + +- (void)connection: (NSURLConnection *)connection didFailWithError: (NSError *)error { +#if ! __has_feature(objc_arc) + XMLRPCRequest *request = [[myRequest retain] autorelease]; +#else + XMLRPCRequest *request = myRequest; +#endif + + NSLog(@"The connection, %@, failed with the following error: %@", myIdentifier, [error localizedDescription]); + + [myDelegate request: request didFailWithError: error]; + + [myManager closeConnectionForIdentifier: myIdentifier]; +} + +#pragma mark - + +- (BOOL)connection: (NSURLConnection *)connection canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace { + return [myDelegate request: myRequest canAuthenticateAgainstProtectionSpace: protectionSpace]; +} + +- (void)connection: (NSURLConnection *)connection didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + [myDelegate request: myRequest didReceiveAuthenticationChallenge: challenge]; +} + +- (void)connection: (NSURLConnection *)connection didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + [myDelegate request: myRequest didCancelAuthenticationChallenge: challenge]; +} + +- (void)connectionDidFinishLoading: (NSURLConnection *)connection { + if (myData && ([myData length] > 0)) { +#if ! __has_feature(objc_arc) + XMLRPCResponse *response = [[[XMLRPCResponse alloc] initWithData: myData] autorelease]; + XMLRPCRequest *request = [[myRequest retain] autorelease]; +#else + XMLRPCResponse *response = [[XMLRPCResponse alloc] initWithData: myData]; + XMLRPCRequest *request = myRequest; +#endif + + [myDelegate request: request didReceiveResponse: response]; + } + + [myManager closeConnectionForIdentifier: myIdentifier]; +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCConnectionDelegate.h b/Classes/Utils/XMLRPC/XMLRPCConnectionDelegate.h new file mode 100755 index 000000000..4c1e7d2c3 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCConnectionDelegate.h @@ -0,0 +1,27 @@ +#import + +@class XMLRPCConnection, XMLRPCRequest, XMLRPCResponse; + +@protocol XMLRPCConnectionDelegate + +@required +- (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response; + +@optional +- (void)request: (XMLRPCRequest *)request didSendBodyData: (float)percent; + +@required +- (void)request: (XMLRPCRequest *)request didFailWithError: (NSError *)error; + +#pragma mark - + +@required +- (BOOL)request: (XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace; + +@required +- (void)request: (XMLRPCRequest *)request didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +@required +- (void)request: (XMLRPCRequest *)request didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCConnectionManager.h b/Classes/Utils/XMLRPC/XMLRPCConnectionManager.h new file mode 100755 index 000000000..ae3a6f23b --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCConnectionManager.h @@ -0,0 +1,32 @@ +#import +#import "XMLRPCConnectionDelegate.h" + +@class XMLRPCConnection, XMLRPCRequest; + +@interface XMLRPCConnectionManager : NSObject { + NSMutableDictionary *myConnections; +} + ++ (XMLRPCConnectionManager *)sharedManager; + +#pragma mark - + +- (NSString *)spawnConnectionWithXMLRPCRequest: (XMLRPCRequest *)request delegate: (id)delegate; + +#pragma mark - + +- (NSArray *)activeConnectionIdentifiers; + +- (int)numberOfActiveConnections; + +#pragma mark - + +- (XMLRPCConnection *)connectionForIdentifier: (NSString *)identifier; + +#pragma mark - + +- (void)closeConnectionForIdentifier: (NSString *)identifier; + +- (void)closeConnections; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCConnectionManager.m b/Classes/Utils/XMLRPC/XMLRPCConnectionManager.m new file mode 100755 index 000000000..ada3678c0 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCConnectionManager.m @@ -0,0 +1,115 @@ +#import "XMLRPCConnectionManager.h" +#import "XMLRPCConnection.h" +#import "XMLRPCRequest.h" + +@implementation XMLRPCConnectionManager + +static XMLRPCConnectionManager *sharedInstance = nil; + +- (id)init { + self = [super init]; + if (self) { + myConnections = [[NSMutableDictionary alloc] init]; + } + + return self; +} + +#pragma mark - + ++ (id)allocWithZone: (NSZone *)zone { + @synchronized(self) { + if (!sharedInstance) { + sharedInstance = [super allocWithZone: zone]; + + return sharedInstance; + } + } + + return nil; +} + +#pragma mark - + ++ (XMLRPCConnectionManager *)sharedManager { + @synchronized(self) { + if (!sharedInstance) { + sharedInstance = [[self alloc] init]; + } + } + + return sharedInstance; +} + +#pragma mark - + +- (NSString *)spawnConnectionWithXMLRPCRequest: (XMLRPCRequest *)request delegate: (id)delegate { + XMLRPCConnection *newConnection = [[XMLRPCConnection alloc] initWithXMLRPCRequest: request delegate: delegate manager: self]; +#if ! __has_feature(objc_arc) + NSString *identifier = [[[newConnection identifier] retain] autorelease]; +#else + NSString *identifier = [newConnection identifier]; +#endif + + [myConnections setObject: newConnection forKey: identifier]; + +#if ! __has_feature(objc_arc) + [newConnection release]; +#endif + + return identifier; +} + +#pragma mark - + +- (NSArray *)activeConnectionIdentifiers { + return [myConnections allKeys]; +} + +- (int)numberOfActiveConnections { + return [myConnections count]; +} + +#pragma mark - + +- (XMLRPCConnection *)connectionForIdentifier: (NSString *)identifier { + return [myConnections objectForKey: identifier]; +} + +#pragma mark - + +- (void)closeConnectionForIdentifier: (NSString *)identifier { + XMLRPCConnection *selectedConnection = [self connectionForIdentifier: identifier]; + + if (selectedConnection) { + [selectedConnection cancel]; + + [myConnections removeObjectForKey: identifier]; + } +} + +- (void)closeConnections { + [[myConnections allValues] makeObjectsPerformSelector: @selector(cancel)]; + + [myConnections removeAllObjects]; +} + +#pragma mark - + +- (void)finalize { + [self closeConnections]; + + [super finalize]; +} + +#pragma mark - + +- (void)dealloc { + [self closeConnections]; +#if ! __has_feature(objc_arc) + [myConnections release]; + [super dealloc]; +#endif +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.h b/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.h new file mode 100755 index 000000000..b620f8c0b --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.h @@ -0,0 +1,8 @@ +#import +#import "XMLRPCEncoder.h" + +@interface XMLRPCDefaultEncoder : NSObject { + NSString *myMethod; + NSArray *myParameters; +} +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.m b/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.m new file mode 100755 index 000000000..16296047e --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCDefaultEncoder.m @@ -0,0 +1,253 @@ +#import "XMLRPCDefaultEncoder.h" +#import "NSStringAdditions.h" +#import "NSData+Base64.h" + +@interface XMLRPCDefaultEncoder (XMLRPCEncoderPrivate) + +- (NSString *)valueTag: (NSString *)tag value: (NSString *)value; + +#pragma mark - + +- (NSString *)replaceTarget: (NSString *)target withValue: (NSString *)value inString: (NSString *)string; + +#pragma mark - + +- (NSString *)encodeObject: (id)object; + +#pragma mark - + +- (NSString *)encodeArray: (NSArray *)array; + +- (NSString *)encodeDictionary: (NSDictionary *)dictionary; + +#pragma mark - + +- (NSString *)encodeBoolean: (CFBooleanRef)boolean; + +- (NSString *)encodeNumber: (NSNumber *)number; + +- (NSString *)encodeString: (NSString *)string omitTag: (BOOL)omitTag; + +- (NSString *)encodeDate: (NSDate *)date; + +- (NSString *)encodeData: (NSData *)data; + +@end + +#pragma mark - + +@implementation XMLRPCDefaultEncoder + +- (id)init { + self = [super init]; + if (self) { + myMethod = [[NSString alloc] init]; + myParameters = [[NSArray alloc] init]; + } + + return self; +} + +#pragma mark - + +- (NSString *)encode { + NSMutableString *buffer = [NSMutableString stringWithString: @""]; + + [buffer appendFormat: @"%@", [self encodeString: myMethod omitTag: YES]]; + + [buffer appendString: @""]; + + if (myParameters) { + NSEnumerator *enumerator = [myParameters objectEnumerator]; + id parameter = nil; + + while ((parameter = [enumerator nextObject])) { + [buffer appendString: @""]; + [buffer appendString: [self encodeObject: parameter]]; + [buffer appendString: @""]; + } + } + + [buffer appendString: @""]; + + [buffer appendString: @""]; + + return buffer; +} + +#pragma mark - + +- (void)setMethod: (NSString *)method withParameters: (NSArray *)parameters { +#if ! __has_feature(objc_arc) + if (myMethod) { + [myMethod release]; + } + + if (!method) { + myMethod = nil; + } else { + myMethod = [method retain]; + } + + if (myParameters) { + [myParameters release]; + } + + if (!parameters) { + myParameters = nil; + } else { + myParameters = [parameters retain]; + } +#else + myMethod = method; + myParameters = parameters; +#endif +} + +#pragma mark - + +- (NSString *)method { + return myMethod; +} + +- (NSArray *)parameters { + return myParameters; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myMethod release]; + [myParameters release]; + + [super dealloc]; +#endif +} + +@end + +#pragma mark - + +@implementation XMLRPCDefaultEncoder (XMLRPCEncoderPrivate) + +- (NSString *)valueTag: (NSString *)tag value: (NSString *)value { + return [NSString stringWithFormat: @"<%@>%@", tag, value, tag]; +} + +#pragma mark - + +- (NSString *)replaceTarget: (NSString *)target withValue: (NSString *)value inString: (NSString *)string { + return [[string componentsSeparatedByString: target] componentsJoinedByString: value]; +} + +#pragma mark - + +- (NSString *)encodeObject: (id)object { + if (!object) { + return nil; + } + + if ([object isKindOfClass: [NSArray class]]) { + return [self encodeArray: object]; + } else if ([object isKindOfClass: [NSDictionary class]]) { + return [self encodeDictionary: object]; + } else if (((/*__bridge_retained*/ CFBooleanRef)object == kCFBooleanTrue) || ((/*__bridge_retained*/ CFBooleanRef)object == kCFBooleanFalse)) { + return [self encodeBoolean: (CFBooleanRef)object]; + } else if ([object isKindOfClass: [NSNumber class]]) { + return [self encodeNumber: object]; + } else if ([object isKindOfClass: [NSString class]]) { + return [self encodeString: object omitTag: NO]; + } else if ([object isKindOfClass: [NSDate class]]) { + return [self encodeDate: object]; + } else if ([object isKindOfClass: [NSData class]]) { + return [self encodeData: object]; + } else { + return [self encodeString: object omitTag: NO]; + } +} + +#pragma mark - + +- (NSString *)encodeArray: (NSArray *)array { + NSMutableString *buffer = [NSMutableString string]; + NSEnumerator *enumerator = [array objectEnumerator]; + + [buffer appendString: @""]; + + id object = nil; + + while (object = [enumerator nextObject]) { + [buffer appendString: [self encodeObject: object]]; + } + + [buffer appendString: @""]; + + return (NSString *)buffer; +} + +- (NSString *)encodeDictionary: (NSDictionary *)dictionary { + NSMutableString * buffer = [NSMutableString string]; + NSEnumerator *enumerator = [dictionary keyEnumerator]; + + [buffer appendString: @""]; + + NSString *key = nil; + NSObject *val; + + while (key = [enumerator nextObject]) { + [buffer appendString: @""]; + [buffer appendFormat: @"%@", [self encodeString: key omitTag: YES]]; + + val = [dictionary objectForKey: key]; + if (val != [NSNull null]) { + [buffer appendString: [self encodeObject: val]]; + } else { + [buffer appendString:@""]; + } + + [buffer appendString: @""]; + } + + [buffer appendString: @""]; + + return (NSString *)buffer; +} + +#pragma mark - + +- (NSString *)encodeBoolean: (CFBooleanRef)boolean { + if (boolean == kCFBooleanTrue) { + return [self valueTag: @"boolean" value: @"1"]; + } else { + return [self valueTag: @"boolean" value: @"0"]; + } +} + +- (NSString *)encodeNumber: (NSNumber *)number { + NSString *numberType = [NSString stringWithCString: [number objCType] encoding: NSUTF8StringEncoding]; + + if ([numberType isEqualToString: @"d"]) { + return [self valueTag: @"double" value: [number stringValue]]; + } else { + return [self valueTag: @"i4" value: [number stringValue]]; + } +} + +- (NSString *)encodeString: (NSString *)string omitTag: (BOOL)omitTag { + return omitTag ? [string escapedString] : [self valueTag: @"string" value: [string escapedString]]; +} + +- (NSString *)encodeDate: (NSDate *)date { + unsigned components = kCFCalendarUnitYear | kCFCalendarUnitMonth | kCFCalendarUnitDay | kCFCalendarUnitHour | kCFCalendarUnitMinute | kCFCalendarUnitSecond; + NSDateComponents *dateComponents = [[NSCalendar currentCalendar] components: components fromDate: date]; + NSString *buffer = [NSString stringWithFormat: @"%.4d%.2d%.2dT%.2d:%.2d:%.2d", [dateComponents year], [dateComponents month], [dateComponents day], [dateComponents hour], [dateComponents minute], [dateComponents second], nil]; + + return [self valueTag: @"dateTime.iso8601" value: buffer]; +} + +- (NSString *)encodeData: (NSData *)data { + return [self valueTag: @"base64" value: [data base64EncodedString]]; +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCEncoder.h b/Classes/Utils/XMLRPC/XMLRPCEncoder.h new file mode 100755 index 000000000..14a596824 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCEncoder.h @@ -0,0 +1,15 @@ +#import + +@protocol XMLRPCEncoder +- (NSString *)encode; + +#pragma mark - + +- (void)setMethod: (NSString *)method withParameters: (NSArray *)parameters; +#pragma mark - + +- (NSString *)method; + +- (NSArray *)parameters; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.h b/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.h new file mode 100755 index 000000000..1d43d70d5 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.h @@ -0,0 +1,27 @@ +#import + +@class XMLRPCEventBasedParserDelegate; + +@interface XMLRPCEventBasedParser : NSObject { + NSXMLParser *myParser; + XMLRPCEventBasedParserDelegate *myParserDelegate; + BOOL isFault; +} + +- (id)initWithData: (NSData *)data; + +#pragma mark - + +- (id)parse; + +- (void)abortParsing; + +#pragma mark - + +- (NSError *)parserError; + +#pragma mark - + +- (BOOL)isFault; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.m b/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.m new file mode 100755 index 000000000..b044c91fa --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCEventBasedParser.m @@ -0,0 +1,81 @@ +#import "XMLRPCEventBasedParser.h" +#import "XMLRPCEventBasedParserDelegate.h" + +@implementation XMLRPCEventBasedParser + +- (id)initWithData: (NSData *)data { + if (!data) { + return nil; + } + + if (self = [self init]) { + myParser = [[NSXMLParser alloc] initWithData: data]; + myParserDelegate = nil; + isFault = NO; + } + + return self; +} + +#pragma mark - + +- (id)parse { + [myParser setDelegate: self]; + + [myParser parse]; + + if ([myParser parserError]) { + return nil; + } + + return [myParserDelegate elementValue]; +} + +- (void)abortParsing { + [myParser abortParsing]; +} + +#pragma mark - + +- (NSError *)parserError { + return [myParser parserError]; +} + +#pragma mark - + +- (BOOL)isFault { + return isFault; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myParser release]; + [myParserDelegate release]; + + [super dealloc]; +#endif +} + +@end + +#pragma mark - + +@implementation XMLRPCEventBasedParser (NSXMLParserDelegate) + +- (void)parser: (NSXMLParser *)parser didStartElement: (NSString *)element namespaceURI: (NSString *)namespaceURI qualifiedName: (NSString *)qualifiedName attributes: (NSDictionary *)attributes { + if ([element isEqualToString: @"fault"]) { + isFault = YES; + } else if ([element isEqualToString: @"value"]) { + myParserDelegate = [[XMLRPCEventBasedParserDelegate alloc] initWithParent: nil]; + + [myParser setDelegate: myParserDelegate]; + } +} + +- (void)parser: (NSXMLParser *)parser parseErrorOccurred: (NSError *)parseError { + [self abortParsing]; +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.h b/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.h new file mode 100755 index 000000000..08d963577 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.h @@ -0,0 +1,52 @@ +#import + +typedef enum { + XMLRPCElementTypeArray, + XMLRPCElementTypeDictionary, + XMLRPCElementTypeMember, + XMLRPCElementTypeName, + XMLRPCElementTypeInteger, + XMLRPCElementTypeDouble, + XMLRPCElementTypeBoolean, + XMLRPCElementTypeString, + XMLRPCElementTypeDate, + XMLRPCElementTypeData +} XMLRPCElementType; + +#pragma mark - + +@interface XMLRPCEventBasedParserDelegate : NSObject { + XMLRPCEventBasedParserDelegate *myParent; + NSMutableArray *myChildren; + XMLRPCElementType myElementType; + NSString *myElementKey; + id myElementValue; +} + +- (id)initWithParent: (XMLRPCEventBasedParserDelegate *)parent; + +#pragma mark - + +- (void)setParent: (XMLRPCEventBasedParserDelegate *)parent; + +- (XMLRPCEventBasedParserDelegate *)parent; + +#pragma mark - + +- (void)setElementType: (XMLRPCElementType)elementType; + +- (XMLRPCElementType)elementType; + +#pragma mark - + +- (void)setElementKey: (NSString *)elementKey; + +- (NSString *)elementKey; + +#pragma mark - + +- (void)setElementValue: (id)elementValue; + +- (id)elementValue; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.m b/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.m new file mode 100755 index 000000000..54f020fe5 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCEventBasedParserDelegate.m @@ -0,0 +1,352 @@ +#import "XMLRPCEventBasedParserDelegate.h" +#import "NSData+Base64.h" + +@interface XMLRPCEventBasedParserDelegate (XMLRPCEventBasedParserDelegatePrivate) + +- (BOOL)isDictionaryElementType: (XMLRPCElementType)elementType; + +#pragma mark - + +- (void)addElementValueToParent; + +#pragma mark - + +- (NSDate *)parseDateString: (NSString *)dateString withFormat: (NSString *)format; + +#pragma mark - + +- (NSNumber *)parseInteger: (NSString *)value; + +- (NSNumber *)parseDouble: (NSString *)value; + +- (NSNumber *)parseBoolean: (NSString *)value; + +- (NSString *)parseString: (NSString *)value; + +- (NSDate *)parseDate: (NSString *)value; + +- (NSData *)parseData: (NSString *)value; + +@end + +#pragma mark - + +@implementation XMLRPCEventBasedParserDelegate + +- (id)initWithParent: (XMLRPCEventBasedParserDelegate *)parent { + self = [super init]; + if (self) { + myParent = parent; + myChildren = [[NSMutableArray alloc] initWithCapacity: 1]; + myElementType = XMLRPCElementTypeString; + myElementKey = nil; + myElementValue = [[NSMutableString alloc] init]; + } + + return self; +} + +#pragma mark - + +- (void)setParent: (XMLRPCEventBasedParserDelegate *)parent { +#if ! __has_feature(objc_arc) + [parent retain]; + [myParent release]; +#endif + + myParent = parent; +} + +- (XMLRPCEventBasedParserDelegate *)parent { + return myParent; +} + +#pragma mark - + +- (void)setElementType: (XMLRPCElementType)elementType { + myElementType = elementType; +} + +- (XMLRPCElementType)elementType { + return myElementType; +} + +#pragma mark - + +- (void)setElementKey: (NSString *)elementKey { +#if ! __has_feature(objc_arc) + [elementKey retain]; + [myElementKey release]; +#endif + + myElementKey = elementKey; +} + +- (NSString *)elementKey { + return myElementKey; +} + +#pragma mark - + +- (void)setElementValue: (id)elementValue { +#if ! __has_feature(objc_arc) + [elementValue retain]; + [myElementValue release]; +#endif + + myElementValue = elementValue; +} + +- (id)elementValue { + return myElementValue; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myChildren release]; + [myElementKey release]; + [myElementValue release]; + + [super dealloc]; +#endif +} + +@end + +#pragma mark - + +@implementation XMLRPCEventBasedParserDelegate (NSXMLParserDelegate) + +- (void)parser: (NSXMLParser *)parser didStartElement: (NSString *)element namespaceURI: (NSString *)namespaceURI qualifiedName: (NSString *)qualifiedName attributes: (NSDictionary *)attributes { + if ([element isEqualToString: @"value"] || [element isEqualToString: @"member"] || [element isEqualToString: @"name"]) { + XMLRPCEventBasedParserDelegate *parserDelegate = [[XMLRPCEventBasedParserDelegate alloc] initWithParent: self]; + + if ([element isEqualToString: @"member"]) { + [parserDelegate setElementType: XMLRPCElementTypeMember]; + } else if ([element isEqualToString: @"name"]) { + [parserDelegate setElementType: XMLRPCElementTypeName]; + } + + [myChildren addObject: parserDelegate]; + + [parser setDelegate: parserDelegate]; +#if ! __has_feature(objc_arc) + [parserDelegate release]; +#endif + return; + } + + if ([element isEqualToString: @"array"]) { + NSMutableArray *array = [[NSMutableArray alloc] init]; + + [self setElementValue: array]; +#if ! __has_feature(objc_arc) + [array release]; +#endif + [self setElementType: XMLRPCElementTypeArray]; + } else if ([element isEqualToString: @"struct"]) { + NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init]; + + [self setElementValue: dictionary]; +#if ! __has_feature(objc_arc) + [dictionary release]; +#endif + [self setElementType: XMLRPCElementTypeDictionary]; + } else if ([element isEqualToString: @"int"] || [element isEqualToString: @"i4"]) { + [self setElementType: XMLRPCElementTypeInteger]; + } else if ([element isEqualToString: @"double"]) { + [self setElementType: XMLRPCElementTypeDouble]; + } else if ([element isEqualToString: @"boolean"]) { + [self setElementType: XMLRPCElementTypeBoolean]; + } else if ([element isEqualToString: @"string"]) { + [self setElementType: XMLRPCElementTypeString]; + } else if ([element isEqualToString: @"dateTime.iso8601"]) { + [self setElementType: XMLRPCElementTypeDate]; + } else if ([element isEqualToString: @"base64"]) { + [self setElementType: XMLRPCElementTypeData]; + } +} + +- (void)parser: (NSXMLParser *)parser didEndElement: (NSString *)element namespaceURI: (NSString *)namespaceURI qualifiedName: (NSString *)qualifiedName { + if ([element isEqualToString: @"value"] || [element isEqualToString: @"member"] || [element isEqualToString: @"name"]) { + NSString *elementValue = nil; + + if ((myElementType != XMLRPCElementTypeArray) && ![self isDictionaryElementType: myElementType]) { + elementValue = [self parseString: myElementValue]; +#if ! __has_feature(objc_arc) + [myElementValue release]; +#endif + myElementValue = nil; + } + + switch (myElementType) { + case XMLRPCElementTypeInteger: + myElementValue = [self parseInteger: elementValue]; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + case XMLRPCElementTypeDouble: + myElementValue = [self parseDouble: elementValue]; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + case XMLRPCElementTypeBoolean: + myElementValue = [self parseBoolean: elementValue]; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + case XMLRPCElementTypeString: + case XMLRPCElementTypeName: + myElementValue = elementValue; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + case XMLRPCElementTypeDate: + myElementValue = [self parseDate: elementValue]; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + case XMLRPCElementTypeData: + myElementValue = [self parseData: elementValue]; +#if ! __has_feature(objc_arc) + [myElementValue retain]; +#endif + break; + default: + break; + } + + if (myParent && myElementValue) { + [self addElementValueToParent]; + } + + [parser setDelegate: myParent]; + } +} + +- (void)parser: (NSXMLParser *)parser foundCharacters: (NSString *)string { + if ((myElementType == XMLRPCElementTypeArray) || [self isDictionaryElementType: myElementType]) { + return; + } + + if (!myElementValue) { + myElementValue = [[NSMutableString alloc] initWithString: string]; + } else { + [myElementValue appendString: string]; + } +} + +- (void)parser: (NSXMLParser *)parser parseErrorOccurred: (NSError *)parseError { + [parser abortParsing]; +} + +@end + +#pragma mark - + +@implementation XMLRPCEventBasedParserDelegate (XMLRPCEventBasedParserDelegatePrivate) + +- (BOOL)isDictionaryElementType: (XMLRPCElementType)elementType { + if ((myElementType == XMLRPCElementTypeDictionary) || (myElementType == XMLRPCElementTypeMember)) { + return YES; + } + + return NO; +} + +#pragma mark - + +- (void)addElementValueToParent { + id parentElementValue = [myParent elementValue]; + + switch ([myParent elementType]) { + case XMLRPCElementTypeArray: + [parentElementValue addObject: myElementValue]; + + break; + case XMLRPCElementTypeDictionary: + if ([myElementValue isEqual:[NSNull null]]) { + [parentElementValue removeObjectForKey:myElementKey]; + } else { + [parentElementValue setObject: myElementValue forKey: myElementKey]; + } + + break; + case XMLRPCElementTypeMember: + if (myElementType == XMLRPCElementTypeName) { + [myParent setElementKey: myElementValue]; + } else { + [myParent setElementValue: myElementValue]; + } + + break; + default: + break; + } +} + +#pragma mark - + +- (NSDate *)parseDateString: (NSString *)dateString withFormat: (NSString *)format { + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + NSDate *result = nil; + + [dateFormatter setDateFormat: format]; + + result = [dateFormatter dateFromString: dateString]; +#if ! __has_feature(objc_arc) + [dateFormatter release]; +#endif + return result; +} + +#pragma mark - + +- (NSNumber *)parseInteger: (NSString *)value { + return [NSNumber numberWithInteger: [value integerValue]]; +} + +- (NSNumber *)parseDouble: (NSString *)value { + return [NSNumber numberWithDouble: [value doubleValue]]; +} + +- (NSNumber *)parseBoolean: (NSString *)value { + if ([value isEqualToString: @"1"]) { + return [NSNumber numberWithBool: YES]; + } + + return [NSNumber numberWithBool: NO]; +} + +- (NSString *)parseString: (NSString *)value { + return [value stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]; +} + +- (NSDate *)parseDate: (NSString *)value { + NSDate *result = nil; + + result = [self parseDateString: value withFormat: @"yyyyMMdd'T'HH:mm:ss"]; + + if (!result) { + result = [self parseDateString: value withFormat: @"yyyy'-'MM'-'dd'T'HH:mm:ss"]; + } + + if (!result) { + result = (NSDate *)[NSNull null]; + } + + return result; +} + +- (NSData *)parseData: (NSString *)value { + return [NSData dataFromBase64String: value]; +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCRequest.h b/Classes/Utils/XMLRPC/XMLRPCRequest.h new file mode 100755 index 000000000..250dfb975 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCRequest.h @@ -0,0 +1,51 @@ +#import + +#import "XMLRPCEncoder.h" + +@interface XMLRPCRequest : NSObject { + NSMutableURLRequest *myRequest; + id myXMLEncoder; +} + +- (id)initWithURL: (NSURL *)URL; + +#pragma mark - + +- (void)setURL: (NSURL *)URL; + +- (NSURL *)URL; + +#pragma mark - + +- (void)setUserAgent: (NSString *)userAgent; + +- (NSString *)userAgent; + +#pragma mark - +- (void)setEncoder: (id) encoder; + +- (void)setMethod: (NSString *)method; + +- (void)setMethod: (NSString *)method withParameter: (id)parameter; + +- (void)setMethod: (NSString *)method withParameters: (NSArray *)parameters; + +#pragma mark - + +- (NSString *)method; + +- (NSArray *)parameters; + +#pragma mark - + +- (NSString *)body; + +#pragma mark - + +- (NSURLRequest *)request; + +#pragma mark - + +- (void)setValue: (NSString *)value forHTTPHeaderField: (NSString *)header; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCRequest.m b/Classes/Utils/XMLRPC/XMLRPCRequest.m new file mode 100755 index 000000000..825823977 --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCRequest.m @@ -0,0 +1,165 @@ +#import "XMLRPCRequest.h" +#import "XMLRPCEncoder.h" +#import "XMLRPCDefaultEncoder.h" + +@implementation XMLRPCRequest + +- (id)initWithURL: (NSURL *)URL withEncoder: (id)encoder { + self = [super init]; + if (self) { + if (URL) { + myRequest = [[NSMutableURLRequest alloc] initWithURL: URL]; + } else { + myRequest = [[NSMutableURLRequest alloc] init]; + } + + myXMLEncoder = encoder; +#if ! __has_feature(objc_arc) + [myXMLEncoder retain]; +#endif + } + + return self; +} + +- (id)initWithURL: (NSURL *)URL { +#if ! __has_feature(objc_arc) + return [self initWithURL:URL withEncoder:[[[XMLRPCDefaultEncoder alloc] init] autorelease]]; +#else + return [self initWithURL:URL withEncoder:[[XMLRPCDefaultEncoder alloc] init]]; +#endif +} + +#pragma mark - + +- (void)setURL: (NSURL *)URL { + [myRequest setURL: URL]; +} + +- (NSURL *)URL { + return [myRequest URL]; +} + +#pragma mark - + +- (void)setUserAgent: (NSString *)userAgent { + if (![self userAgent]) { + [myRequest addValue: userAgent forHTTPHeaderField: @"User-Agent"]; + } else { + [myRequest setValue: userAgent forHTTPHeaderField: @"User-Agent"]; + } +} + +- (NSString *)userAgent { + return [myRequest valueForHTTPHeaderField: @"User-Agent"]; +} + +#pragma mark - + +- (void)setEncoder:(id)encoder { + //Copy the old method and parameters to the new encoder. + NSString *method = [myXMLEncoder method]; + NSArray *parameters = [myXMLEncoder parameters]; +#if ! __has_feature(objc_arc) + [myXMLEncoder release]; + myXMLEncoder = [encoder retain]; +#else + myXMLEncoder = encoder; +#endif + [myXMLEncoder setMethod:method withParameters:parameters]; +} + +- (void)setMethod: (NSString *)method { + [myXMLEncoder setMethod: method withParameters: nil]; +} + +- (void)setMethod: (NSString *)method withParameter: (id)parameter { + NSArray *parameters = nil; + + if (parameter) { + parameters = [NSArray arrayWithObject: parameter]; + } + + [myXMLEncoder setMethod: method withParameters: parameters]; +} + +- (void)setMethod: (NSString *)method withParameters: (NSArray *)parameters { + [myXMLEncoder setMethod: method withParameters: parameters]; +} + +#pragma mark - + +- (NSString *)method { + return [myXMLEncoder method]; +} + +- (NSArray *)parameters { + return [myXMLEncoder parameters]; +} + +#pragma mark - + +- (NSString *)body { + return [myXMLEncoder encode]; +} + +#pragma mark - + +- (NSURLRequest *)request { + NSData *content = [[self body] dataUsingEncoding: NSUTF8StringEncoding]; + NSNumber *contentLength = [NSNumber numberWithInt: [content length]]; + + if (!myRequest) { + return nil; + } + + [myRequest setHTTPMethod: @"POST"]; + + if (![myRequest valueForHTTPHeaderField: @"Content-Type"]) { + [myRequest addValue: @"text/xml" forHTTPHeaderField: @"Content-Type"]; + } else { + [myRequest setValue: @"text/xml" forHTTPHeaderField: @"Content-Type"]; + } + + if (![myRequest valueForHTTPHeaderField: @"Content-Length"]) { + [myRequest addValue: [contentLength stringValue] forHTTPHeaderField: @"Content-Length"]; + } else { + [myRequest setValue: [contentLength stringValue] forHTTPHeaderField: @"Content-Length"]; + } + + if (![myRequest valueForHTTPHeaderField: @"Accept"]) { + [myRequest addValue: @"text/xml" forHTTPHeaderField: @"Accept"]; + } else { + [myRequest setValue: @"text/xml" forHTTPHeaderField: @"Accept"]; + } + + if (![self userAgent]) { + NSString *userAgent = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserAgent"]; + if (userAgent) { + [self setUserAgent:userAgent]; + } + } + + [myRequest setHTTPBody: content]; + + return (NSURLRequest *)myRequest; +} + +#pragma mark - + +- (void)setValue: (NSString *)value forHTTPHeaderField: (NSString *)header { + [myRequest setValue: value forHTTPHeaderField: header]; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myRequest release]; + [myXMLEncoder release]; + + [super dealloc]; +#endif +} + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCResponse.h b/Classes/Utils/XMLRPC/XMLRPCResponse.h new file mode 100755 index 000000000..a5509323b --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCResponse.h @@ -0,0 +1,33 @@ +#import + +@class XMLRPCDecoder; + +@interface XMLRPCResponse : NSObject { + NSString *myBody; + id myObject; + BOOL isFault; +} + +- (id)initWithData: (NSData *)data; + +#pragma mark - + +- (BOOL)isFault; + +- (NSNumber *)faultCode; + +- (NSString *)faultString; + +#pragma mark - + +- (id)object; + +#pragma mark - + +- (NSString *)body; + +#pragma mark - + +- (NSString *)description; + +@end diff --git a/Classes/Utils/XMLRPC/XMLRPCResponse.m b/Classes/Utils/XMLRPC/XMLRPCResponse.m new file mode 100755 index 000000000..38b84678b --- /dev/null +++ b/Classes/Utils/XMLRPC/XMLRPCResponse.m @@ -0,0 +1,97 @@ +#import "XMLRPCResponse.h" +#import "XMLRPCEventBasedParser.h" + +@implementation XMLRPCResponse + +- (id)initWithData: (NSData *)data { + if (!data) { + return nil; + } + + self = [super init]; + if (self) { + XMLRPCEventBasedParser *parser = [[XMLRPCEventBasedParser alloc] initWithData: data]; + + if (!parser) { +#if ! __has_feature(objc_arc) + [self release]; +#endif + return nil; + } + + myBody = [[NSString alloc] initWithData: data encoding: NSUTF8StringEncoding]; + myObject = [parser parse]; +#if ! __has_feature(objc_arc) + [myObject retain]; +#endif + + isFault = [parser isFault]; + +#if ! __has_feature(objc_arc) + [parser release]; +#endif + } + + return self; +} + +#pragma mark - + +- (BOOL)isFault { + return isFault; +} + +- (NSNumber *)faultCode { + if (isFault) { + return [myObject objectForKey: @"faultCode"]; + } + + return nil; +} + +- (NSString *)faultString { + if (isFault) { + return [myObject objectForKey: @"faultString"]; + } + + return nil; +} + +#pragma mark - + +- (id)object { + return myObject; +} + +#pragma mark - + +- (NSString *)body { + return myBody; +} + +#pragma mark - + +- (NSString *)description { + NSMutableString *msg = [NSMutableString stringWithCapacity:128]; + [msg appendFormat:@"[body=%@", myBody]; + if (isFault) { + [msg appendFormat:@", fault[%@]='%@'", [self faultCode], [self faultString]]; + } else { + [msg appendFormat:@", obj=%@", myObject]; + } + [msg appendString:@"]"]; + return msg; +} + +#pragma mark - + +- (void)dealloc { +#if ! __has_feature(objc_arc) + [myBody release]; + [myObject release]; + + [super dealloc]; +#endif +} + +@end diff --git a/Classes/WizardViewController.h b/Classes/WizardViewController.h index 0326f5b07..bbb3fc9a7 100644 --- a/Classes/WizardViewController.h +++ b/Classes/WizardViewController.h @@ -18,17 +18,22 @@ */ #import - +#import #import "UICompositeViewController.h" -@interface WizardViewController : UIViewController { - UIView *contentView; +@interface WizardViewController : UIViewController { + UIScrollView *contentView; UIView *welcomeView; UIView *choiceView; UIView *createAccountView; UIView *connectAccountView; UIView *externalAccountView; + UIView *validateAccountView; + + UIView *waitView; + UIView *currentView; + UITextField *activeTextField; UIButton *backButton; UIButton *startButton; @@ -43,6 +48,9 @@ @property (nonatomic, retain) IBOutlet UIView *createAccountView; @property (nonatomic, retain) IBOutlet UIView *connectAccountView; @property (nonatomic, retain) IBOutlet UIView *externalAccountView; +@property (nonatomic, retain) IBOutlet UIView *validateAccountView; + +@property (nonatomic, retain) IBOutlet UIView *waitView; @property (nonatomic, retain) IBOutlet UIButton *backButton; @property (nonatomic, retain) IBOutlet UIButton *startButton; @@ -54,5 +62,10 @@ - (IBAction)onCreateAccountClick:(id)sender; - (IBAction)onConnectAccountClick:(id)sender; - (IBAction)onExternalAccountClick:(id)sender; +- (IBAction)onCheckValidationClick:(id)sender; + +- (IBAction)onSignInClick:(id)sender; +- (IBAction)onSignInExternalClick:(id)sender; +- (IBAction)onRegisterClick:(id)sender; @end diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 3f452c51d..6eb22f833 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -18,13 +18,14 @@ */ #import "WizardViewController.h" - -#import - #import "LinphoneManager.h" - #import "PhoneMainView.h" +#import +#import +#import +#import + typedef enum _ViewElement { ViewElement_Username = 100, ViewElement_Password = 101, @@ -44,21 +45,33 @@ typedef enum _ViewElement { @synthesize createAccountView; @synthesize connectAccountView; @synthesize externalAccountView; +@synthesize validateAccountView; + +@synthesize waitView; @synthesize backButton; @synthesize startButton; +static int LINPHONE_WIZARD_MIN_PASSWORD_LENGTH = 6; +static int LINPHONE_WIZARD_MIN_USERNAME_LENGTH = 4; +static NSString *LINPHONE_WIZARD_URL = @"https://www.linphone.org/wizard.php"; +static NSString *LINPHONE_WIZARD_DOMAIN = @"sip.linphone.org"; + + #pragma mark - Lifecycle Functions - (id)init { self = [super initWithNibName:@"WizardViewController" bundle:[NSBundle mainBundle]]; if (self != nil) { self->historyViews = [[NSMutableArray alloc] init]; + self->currentView = nil; } return self; } - (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + [contentView release]; [welcomeView release]; @@ -66,6 +79,9 @@ typedef enum _ViewElement { [createAccountView release]; [connectAccountView release]; [externalAccountView release]; + [validateAccountView release]; + + [waitView release]; [backButton release]; [startButton release]; @@ -89,7 +105,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:nil tabBarEnabled:false fullscreen:false - landscapeMode:false + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; @@ -100,11 +116,48 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)viewDidLoad { [super viewDidLoad]; - [self changeView:welcomeView back:FALSE animation:FALSE]; } -#pragma mark - +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + [self clearProxyConfig]; + [self changeView:welcomeView back:FALSE animation:FALSE]; + [waitView setHidden:TRUE]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(registrationUpdateEvent:) + name:@"LinphoneRegistrationUpdate" + object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(keyboardWillShow:) + name:UIKeyboardWillShowNotification + object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(keyboardWillHide:) + name:UIKeyboardWillHideNotification + object:nil]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:@"LinphoneRegistrationUpdate" + object:nil]; + + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardWillShowNotification + object:nil]; + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIKeyboardWillHideNotification + object:nil]; +} + + +#pragma mark - + (UIView*)findTextField:(ViewElement)tag view:(UIView*)view { for(UIView *child in [view subviews]) { @@ -133,7 +186,12 @@ static UICompositeViewDescription *compositeDescription = nil; return nil; } +- (void)clearHistory { + [historyViews removeAllObjects]; +} + - (void)changeView:(UIView *)view back:(BOOL)back animation:(BOOL)animation { + // Change toolbar buttons following view if (view == welcomeView) { [startButton setHidden:false]; [backButton setHidden:true]; @@ -142,6 +200,13 @@ static UICompositeViewDescription *compositeDescription = nil; [backButton setHidden:false]; } + if (view == validateAccountView) { + [backButton setEnabled:FALSE]; + } else { + [backButton setEnabled:TRUE]; + } + + // Animation if(animation) { CATransition* trans = [CATransition animation]; [trans setType:kCATransitionPush]; @@ -155,16 +220,101 @@ static UICompositeViewDescription *compositeDescription = nil; [contentView.layer addAnimation:trans forKey:@"Transition"]; } - NSArray *childs = [contentView subviews]; - if([childs count]> 0) { - UIView *childView = [childs objectAtIndex:0]; + // Stack current view + if(currentView != nil) { if(!back) - [historyViews addObject:childView]; - [childView removeFromSuperview]; + [historyViews addObject:currentView]; + [currentView removeFromSuperview]; } - [contentView addSubview:view]; + // Set current view + currentView = view; + [contentView insertSubview:view atIndex:0]; + [view setFrame:[contentView bounds]]; + [contentView setContentSize:[view bounds].size]; +} + +- (void)clearProxyConfig { + [[LinphoneManager instance].settingsStore setObject:@"" forKey:@"username_preference"]; + [[LinphoneManager instance].settingsStore setObject:@"" forKey:@"password_preference"]; + [[LinphoneManager instance].settingsStore setObject:@"" forKey:@"domain_preference"]; + [[LinphoneManager instance].settingsStore synchronize]; +} + +- (void)addProxyConfig:(NSString*)username password:(NSString*)password domain:(NSString*)domain { + [[LinphoneManager instance].settingsStore setObject:username forKey:@"username_preference"]; + [[LinphoneManager instance].settingsStore setObject:password forKey:@"password_preference"]; + [[LinphoneManager instance].settingsStore setObject:domain forKey:@"domain_preference"]; + [[LinphoneManager instance].settingsStore synchronize]; +} + +- (void)checkUserExist:(NSString*)username { + [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC check_account %@", username]; + NSURL *URL = [NSURL URLWithString: LINPHONE_WIZARD_URL]; + XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL]; + [request setMethod: @"check_account" withParameters:[NSArray arrayWithObjects:username, nil]]; + + XMLRPCConnectionManager *manager = [XMLRPCConnectionManager sharedManager]; + [manager spawnConnectionWithXMLRPCRequest: request delegate: self]; + + [request release]; + [waitView setHidden:false]; +} + +- (void)createAccount:(NSString*)identity password:(NSString*)password email:(NSString*)email { + NSString *useragent = [LinphoneManager getUserAgent]; + [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC create_account_with_useragent %@ %@ %@ %@", identity, password, email, useragent]; + + NSURL *URL = [NSURL URLWithString: LINPHONE_WIZARD_URL]; + XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL]; + [request setMethod: @"create_account_with_useragent" withParameters:[NSArray arrayWithObjects:identity, password, email, useragent, nil]]; + + XMLRPCConnectionManager *manager = [XMLRPCConnectionManager sharedManager]; + [manager spawnConnectionWithXMLRPCRequest: request delegate: self]; + + [request release]; + [waitView setHidden:false]; +} + +- (void)checkAccountValidation:(NSString*)identity { + [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC check_account_validated %@", identity]; + + NSURL *URL = [NSURL URLWithString: LINPHONE_WIZARD_URL]; + XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL]; + [request setMethod: @"check_account_validated" withParameters:[NSArray arrayWithObjects:identity, nil]]; + + XMLRPCConnectionManager *manager = [XMLRPCConnectionManager sharedManager]; + [manager spawnConnectionWithXMLRPCRequest: request delegate: self]; + + [request release]; + [waitView setHidden:false]; +} + +- (void)registrationUpdate:(LinphoneRegistrationState)state { + switch (state) { + case LinphoneRegistrationOk: { + [[LinphoneManager instance].settingsStore setBool:false forKey:@"enable_first_login_view_preference"]; + [waitView setHidden:true]; + [[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]]; + break; + } + case LinphoneRegistrationNone: + case LinphoneRegistrationCleared: { + [waitView setHidden:true]; + break; + } + case LinphoneRegistrationFailed: { + [waitView setHidden:true]; + break; + } + case LinphoneRegistrationProgress: { + [waitView setHidden:false]; + break; + } + default: + break; + } } @@ -175,6 +325,10 @@ static UICompositeViewDescription *compositeDescription = nil; return YES; } +- (void)textFieldDidBeginEditing:(UITextField *)textField { + activeTextField = textField; +} + #pragma mark - Action Functions @@ -206,4 +360,214 @@ static UICompositeViewDescription *compositeDescription = nil; [self changeView:externalAccountView back:FALSE animation:TRUE]; } +- (IBAction)onCheckValidationClick:(id)sender { + NSString *username = [self findTextField:ViewElement_Username].text; + [self checkAccountValidation:[NSString stringWithFormat:@"%@@%@", username, LINPHONE_WIZARD_DOMAIN]]; +} + +- (IBAction)onSignInExternalClick:(id)sender { + [self.waitView setHidden:false]; + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + NSString *domain = [self findTextField:ViewElement_Domain].text; + [self addProxyConfig:username password:password domain:domain]; +} + +- (IBAction)onSignInClick:(id)sender { + [self.waitView setHidden:false]; + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + [self addProxyConfig:username password:password domain:LINPHONE_WIZARD_DOMAIN]; +} + +- (IBAction)onRegisterClick:(id)sender { + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + NSString *password2 = [self findTextField:ViewElement_Password2].text; + NSString *email = [self findTextField:ViewElement_Email].text; + NSMutableString *errors = [NSMutableString string]; + + if ([username length] < LINPHONE_WIZARD_MIN_USERNAME_LENGTH) { + [errors appendString:[NSString stringWithFormat:@"The username is too short (minimum %d characters).\n", LINPHONE_WIZARD_MIN_USERNAME_LENGTH]]; + } + + if ([password length] < LINPHONE_WIZARD_MIN_PASSWORD_LENGTH) { + [errors appendString:[NSString stringWithFormat:@"The password is too short (minimum %d characters).\n", LINPHONE_WIZARD_MIN_PASSWORD_LENGTH]]; + } + + if (![password2 isEqualToString:password]) { + [errors appendString:@"The passwords are different.\n"]; + } + + NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @".+@.+\\.[A-Za-z]{2}[A-Za-z]*"]; + if(![emailTest evaluateWithObject:email]) { + [errors appendString:@"The email is invalid.\n"]; + } + + if([errors length]) { + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Check error",nil) + message:[errors substringWithRange:NSMakeRange(0, [errors length] - 1)] + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + } else { + [self checkUserExist:username]; + } +} + + +#pragma mark - Event Functions + +- (void)registrationUpdateEvent:(NSNotification*)notif { + [self registrationUpdate:[[notif.userInfo objectForKey: @"state"] intValue]]; +} + +#pragma mark - Keyboard Event Functions + +- (void)keyboardWillHide:(NSNotification *)notif { + //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + //CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; + NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [UIView beginAnimations:@"resize" context:nil]; + [UIView setAnimationDuration:duration]; + [UIView setAnimationCurve:curve]; + [UIView setAnimationBeginsFromCurrentState:TRUE]; + + // Move view + UIEdgeInsets inset = {0,0,0,0}; + [contentView setContentInset:inset]; + [contentView setScrollIndicatorInsets:inset]; + [contentView setShowsVerticalScrollIndicator:FALSE]; + + [UIView commitAnimations]; +} + +- (void)keyboardWillShow:(NSNotification *)notif { + //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; + UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue]; + NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + [UIView beginAnimations:@"resize" context:nil]; + [UIView setAnimationDuration:duration]; + [UIView setAnimationCurve:curve]; + [UIView setAnimationBeginsFromCurrentState:TRUE]; + + if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { + int width = endFrame.size.height; + endFrame.size.height = endFrame.size.width; + endFrame.size.width = width; + } + + // Change inset + { + UIEdgeInsets inset = {0,0,0,0}; + CGRect frame = [contentView frame]; + CGRect rect = [PhoneMainView instance].view.bounds; + CGPoint pos = {frame.size.width, frame.size.height}; + CGPoint gPos = [contentView convertPoint:pos toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; // Bypass IOS bug on landscape mode + inset.bottom = -(rect.size.height - gPos.y - endFrame.size.height); + if(inset.bottom < 0) inset.bottom = 0; + + [contentView setContentInset:inset]; + [contentView setScrollIndicatorInsets:inset]; + CGRect fieldFrame = activeTextField.frame; + fieldFrame.origin.y += fieldFrame.size.height; + [contentView scrollRectToVisible:fieldFrame animated:TRUE]; + [contentView setShowsVerticalScrollIndicator:TRUE]; + } + [UIView commitAnimations]; +} + + +#pragma mark - XMLRPCConnectionDelegate Functions + +- (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response { + [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC %@: %@", [request method], [response body]]; + [waitView setHidden:true]; + if ([response isFault]) { + NSString *errorString = [NSString stringWithFormat:@"Can't create account: Communication issue (%@)", [response faultString]]; + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue",nil) + message:errorString + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + } else { + if([[request method] isEqualToString:@"check_account"]) { + if([response object] == [NSNumber numberWithInt:1]) { + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Check issue",nil) + message:@"Username already exists" + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + } else { + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + NSString *email = [self findTextField:ViewElement_Email].text; + [self createAccount:[NSString stringWithFormat:@"%@@%@", username, LINPHONE_WIZARD_DOMAIN] password:password email:email]; + } + } else if([[request method] isEqualToString:@"create_account_with_useragent"]) { + if([response object] == [NSNumber numberWithInt:0]) { + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + [self changeView:validateAccountView back:FALSE animation:TRUE]; + [self findTextField:ViewElement_Username].text = username; + [self findTextField:ViewElement_Password].text = password; + } else { + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account creation issue",nil) + message:@"Can't create the account. Please try again." + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + } + } else if([[request method] isEqualToString:@"check_account_validated"]) { + if([response object] == [NSNumber numberWithInt:1]) { + NSString *username = [self findTextField:ViewElement_Username].text; + NSString *password = [self findTextField:ViewElement_Password].text; + [self addProxyConfig:username password:password domain:LINPHONE_WIZARD_DOMAIN]; + } else { + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account validation issue",nil) + message:@"Your account is not validate yet." + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + } + } + } +} + +- (void)request: (XMLRPCRequest *)request didFailWithError: (NSError *)error { + NSString *errorString = [NSString stringWithFormat:@"Can't create account: Communication issue (%@)", [error localizedDescription]]; + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue",nil) + message:errorString + delegate:nil + cancelButtonTitle:NSLocalizedString(@"Continue",nil) + otherButtonTitles:nil,nil]; + [errorView show]; + [errorView release]; + [waitView setHidden:true]; +} + +- (BOOL)request: (XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace { + return FALSE; +} + +- (void)request: (XMLRPCRequest *)request didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + +} + +- (void)request: (XMLRPCRequest *)request didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { + +} + @end diff --git a/Classes/WizardViewController.xib b/Classes/WizardViewController.xib index 4ea29b5c0..9d175e6d6 100644 --- a/Classes/WizardViewController.xib +++ b/Classes/WizardViewController.xib @@ -3,20 +3,22 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUITextField + IBProxyObject + IBUIActivityIndicatorView IBUIButton IBUIImageView - IBUIView IBUILabel - IBProxyObject + IBUIScrollView + IBUITextField + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -38,28 +40,27 @@ 292 - + - 292 + 268 {320, 394} - + _NS:9 - - 3 - MCAwAA - - NO + YES + YES IBCocoaTouchFramework + NO + NO - 274 + 266 - 292 + 294 {160, 77} @@ -75,15 +76,15 @@ 3 MC41AA - + NSImage setup_cancel_over.png - + NSImage setup_cancel_disabled.png - + NSImage setup_cancel_default.png @@ -99,7 +100,7 @@ - 292 + 291 {{160, 0}, {160, 77}} @@ -112,15 +113,11 @@ NO NO - + NSImage setup_start_over.png - - NSImage - setup_start_disabled.png - - + NSImage setup_start_default.png @@ -129,10 +126,11 @@ - -2147483356 + -2147483357 {{160, 0}, {160, 77}} + _NS:9 NO IBCocoaTouchFramework @@ -141,15 +139,15 @@ NO NO - + NSImage setup_back_over.png - + NSImage setup_back_disabled.png - + NSImage setup_back_default.png @@ -162,25 +160,58 @@ _NS:9 - + + 3 + MCAwAA + + IBCocoaTouchFramework + + + + -2147483374 + + + + 292 + {{141, 212}, {37, 37}} + + + + _NS:9 + NO + IBCocoaTouchFramework + NO + YES + 0 + + + {320, 460} + + + + _NS:9 + + 3 + MSAwLjUAA + IBCocoaTouchFramework {320, 460} - + _NS:9 IBCocoaTouchFramework - 292 + 274 - 274 + 311 {{60, 80}, {201, 129}} @@ -195,10 +226,11 @@ - 292 - {{40, 313}, {240, 44}} + 282 + {{40, 290}, {240, 44}} + _NS:9 NO YES @@ -213,7 +245,7 @@ 0 10 - 2 + 0 1 1 @@ -224,9 +256,10 @@ 12 16 + NO - {320, 460} + {320, 394} @@ -236,11 +269,11 @@ - 292 + 274 - 274 + 311 {{31, 50}, {258, 24}} @@ -255,7 +288,7 @@ - 292 + 319 {{33, 141}, {255, 50}} @@ -289,7 +322,7 @@ - 292 + 319 {{33, 205}, {255, 50}} @@ -310,10 +343,11 @@ - 292 + 319 {{33, 269}, {255, 50}} + _NS:9 NO IBCocoaTouchFramework @@ -329,7 +363,7 @@ - {320, 460} + {320, 394} @@ -339,11 +373,11 @@ - 292 + 274 - 274 + 311 {{31, 50}, {258, 24}} @@ -355,7 +389,7 @@ - 292 + 298 {{39, 80}, {240, 44}} @@ -372,14 +406,15 @@ 0 10 - 2 + 0 1 + NO - 292 + 319 {{32, 140}, {255, 31}} @@ -420,7 +455,7 @@ - 292 + 319 {{32, 185}, {255, 31}} @@ -450,7 +485,7 @@ - 292 + 319 {{32, 230}, {255, 31}} @@ -480,7 +515,7 @@ - 292 + 319 {{32, 275}, {255, 31}} @@ -488,7 +523,7 @@ _NS:9 NO YES - 104 + 103 IBCocoaTouchFramework 0 @@ -509,10 +544,11 @@ - 292 + 287 {{33, 330}, {255, 50}} + _NS:9 NO IBCocoaTouchFramework @@ -535,7 +571,7 @@ - {320, 460} + {320, 394} @@ -545,11 +581,11 @@ - 292 + 274 - 274 + 311 {{31, 50}, {258, 24}} @@ -561,7 +597,7 @@ - 292 + 298 {{40, 80}, {240, 44}} @@ -578,17 +614,19 @@ 0 10 - 2 + 0 1 + NO - 292 + 287 {{32, 330}, {255, 50}} + _NS:9 NO IBCocoaTouchFramework @@ -605,7 +643,7 @@ - 292 + 319 {{32, 185}, {255, 31}} @@ -635,7 +673,7 @@ - 292 + 319 {{32, 140}, {255, 31}} @@ -663,7 +701,7 @@ - {320, 460} + {320, 394} @@ -673,11 +711,11 @@ - 292 + 274 - 274 + 311 {{31, 50}, {258, 24}} @@ -689,7 +727,7 @@ - 292 + 298 {{40, 80}, {240, 44}} @@ -706,14 +744,15 @@ 0 10 - 2 + 0 1 + NO - 292 + 319 {{33, 140}, {255, 31}} @@ -742,7 +781,7 @@ - 292 + 319 {{33, 185}, {255, 31}} @@ -772,7 +811,7 @@ - 292 + 319 {{33, 230}, {255, 31}} @@ -780,7 +819,7 @@ _NS:9 NO YES - 103 + 104 IBCocoaTouchFramework 0 @@ -801,10 +840,11 @@ - 292 + 287 {{34, 330}, {255, 50}} + _NS:9 NO IBCocoaTouchFramework @@ -820,7 +860,7 @@ - {320, 460} + {320, 394} @@ -828,6 +868,136 @@ IBCocoaTouchFramework + + + 274 + + + + 311 + {{31, 50}, {258, 24}} + + + + _NS:9 + NO + IBCocoaTouchFramework + + + + + 298 + {{40, 80}, {240, 44}} + + + + _NS:9 + NO + YES + 7 + 200 + NO + IBCocoaTouchFramework + Your account is created. Please check your mails in order to validate your account. + + + 0 + 10 + 0 + 1 + + + NO + + + + 287 + {{32, 330}, {255, 50}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + NO + Check validation + + + + + + + + + + -2147483329 + {{32, 185}, {255, 31}} + + + + _NS:9 + NO + YES + 101 + IBCocoaTouchFramework + 0 + + Password + + 3 + MAA + + + YES + 17 + + YES + IBCocoaTouchFramework + + + + + + + + -2147483329 + {{32, 140}, {255, 31}} + + + + _NS:9 + NO + YES + 100 + IBCocoaTouchFramework + 0 + + Username + + 3 + MAA + + + YES + 17 + + IBCocoaTouchFramework + + + + + + + {320, 394} + + + + _NS:9 + + IBCocoaTouchFramework + @@ -863,14 +1033,6 @@ 28 - - - contentView - - - - 29 - choiceView @@ -903,6 +1065,30 @@ 72 + + + waitView + + + + 96 + + + + contentView + + + + 99 + + + + validateAccountView + + + + 112 + onStartClick: @@ -981,6 +1167,24 @@ 88 + + + onSignInExternalClick: + + + 7 + + 115 + + + + onSignInClick: + + + 7 + + 116 + delegate @@ -1021,6 +1225,15 @@ 83 + + + onRegisterClick: + + + 7 + + 113 + delegate @@ -1029,6 +1242,31 @@ 84 + + + onCheckValidationClick: + + + 7 + + 114 + + + + delegate + + + + 109 + + + + delegate + + + + 110 + @@ -1053,18 +1291,12 @@ 12 - + + - - 13 - - - - contentView - 14 @@ -1098,8 +1330,8 @@ 21 - + welcomeView @@ -1128,30 +1360,12 @@ choiceView - - 36 - - - createAccountButton - 37 titleImage - - 38 - - - connectAccountButton - - - 39 - - - externalAccountButton - 44 @@ -1302,6 +1516,88 @@ emailField + + 39 + + + externalAccountButton + + + 38 + + + connectAccountButton + + + 36 + + + createAccountButton + + + 91 + + + + + + waitView + + + 90 + + + activityIndicatorView + + + 98 + + + contentView + + + 101 + + + + + + + + + + validateAccountView + + + 103 + + + checkValidationButton + + + 105 + + + label + + + 107 + + + titleImage + + + 104 + + + usernameField + + + 106 + + + passwordField + @@ -1309,15 +1605,21 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -1353,12 +1655,15 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 88 + 116 @@ -1368,9 +1673,13 @@ id id + id id id id + id + id + id id @@ -1382,6 +1691,10 @@ onCancelClick: id + + onCheckValidationClick: + id + onConnectAccountClick: id @@ -1394,6 +1707,18 @@ onExternalAccountClick: id + + onRegisterClick: + id + + + onSignInClick: + id + + + onSignInExternalClick: + id + onStartClick: id @@ -1407,6 +1732,8 @@ UIView UIView UIButton + UIView + UIView UIView @@ -1438,6 +1765,14 @@ startButton UIButton + + validateAccountView + UIView + + + waitView + UIView + welcomeView UIView @@ -1461,7 +1796,7 @@ {550, 101} {550, 101} - {16, 16} + {542, 88} {320, 154} {320, 154} {320, 154} @@ -1469,11 +1804,10 @@ {320, 154} {320, 154} {320, 154} - {320, 154} {320, 154} {516, 48} {402, 258} - 1181 + 1498 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index ba7ad0ed8..5a6cefd18 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -1123,6 +1123,41 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + D3554ECE15CA79AA00478841 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 8DC2EF5B0486A6940098B216; + remoteInfo = XMLRPC; + }; + D3554ED015CA79AA00478841 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 903B0DB612F7574800BD6E09; + remoteInfo = libXMLRPC; + }; + D3554ED215CA79AA00478841 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 0799AF030F6721FF00B71B22; + remoteInfo = XMLRPCUnitTests; + }; + D3554ED415CA79B900478841 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 903B0DB512F7574800BD6E09; + remoteInfo = libXMLRPC; + }; + D3554ED615CA79C000478841 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 903B0DB512F7574800BD6E09; + remoteInfo = libXMLRPC; + }; D3B90E1815C2CB5800F64F8C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */; @@ -1608,6 +1643,7 @@ D354981E1587716B000081D8 /* UIStateBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIStateBar.h; sourceTree = ""; }; D354981F1587716B000081D8 /* UIStateBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIStateBar.m; sourceTree = ""; }; D35498201587716B000081D8 /* UIStateBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIStateBar.xib; sourceTree = ""; }; + D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = XMLRPC.xcodeproj; path = Utils/XMLRPC/XMLRPC.xcodeproj; sourceTree = ""; }; D35860D515B549B500513429 /* Utils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Utils.m; path = Utils/Utils.m; sourceTree = ""; }; D35E757515931E5D0066B1C1 /* switch_camera_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = switch_camera_default.png; path = Resources/switch_camera_default.png; sourceTree = ""; }; D35E757615931E5D0066B1C1 /* switch_camera_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = switch_camera_over.png; path = Resources/switch_camera_over.png; sourceTree = ""; }; @@ -3046,6 +3082,7 @@ D3F9A9EB15AF27620045320F /* UACellBackgroundView */, C9B3A6FD15B485DB006F52EE /* Utils.h */, D35860D515B549B500513429 /* Utils.m */, + D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */, ); name = Utils; sourceTree = ""; @@ -3059,6 +3096,16 @@ name = Model; sourceTree = ""; }; + D3554EC615CA79A900478841 /* Products */ = { + isa = PBXGroup; + children = ( + D3554ECF15CA79AA00478841 /* XMLRPC.framework */, + D3554ED115CA79AA00478841 /* libXMLRPC.a */, + D3554ED315CA79AA00478841 /* XMLRPCUnitTests.octest */, + ); + name = Products; + sourceTree = ""; + }; D3807FB615C28940005BE9BC /* DCRoundSwitch */ = { isa = PBXGroup; children = ( @@ -3196,6 +3243,7 @@ buildRules = ( ); dependencies = ( + D3554ED515CA79B900478841 /* PBXTargetDependency */, D3B90E1B15C2CBC800F64F8C /* PBXTargetDependency */, ); name = linphone; @@ -3215,6 +3263,7 @@ buildRules = ( ); dependencies = ( + D3554ED715CA79C000478841 /* PBXTargetDependency */, D3B90E1D15C2CBCD00F64F8C /* PBXTargetDependency */, ); name = "linphone-no-gpl-thirdparties"; @@ -3248,6 +3297,10 @@ ProductGroup = D3B90E1215C2CB5700F64F8C /* Products */; ProjectRef = D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */; }, + { + ProductGroup = D3554EC615CA79A900478841 /* Products */; + ProjectRef = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; + }, ); projectRoot = ""; targets = ( @@ -3258,6 +3311,27 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ + D3554ECF15CA79AA00478841 /* XMLRPC.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = XMLRPC.framework; + remoteRef = D3554ECE15CA79AA00478841 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + D3554ED115CA79AA00478841 /* libXMLRPC.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = libXMLRPC.a; + remoteRef = D3554ED015CA79AA00478841 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + D3554ED315CA79AA00478841 /* XMLRPCUnitTests.octest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = XMLRPCUnitTests.octest; + remoteRef = D3554ED215CA79AA00478841 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; D3B90E1915C2CB5800F64F8C /* libNinePatch.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -4330,6 +4404,16 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + D3554ED515CA79B900478841 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = libXMLRPC; + targetProxy = D3554ED415CA79B900478841 /* PBXContainerItemProxy */; + }; + D3554ED715CA79C000478841 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = libXMLRPC; + targetProxy = D3554ED615CA79C000478841 /* PBXContainerItemProxy */; + }; D3B90E1B15C2CBC800F64F8C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = NinePatch; @@ -4386,6 +4470,7 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -4398,6 +4483,8 @@ OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", ); PRODUCT_NAME = linphone; @@ -4458,6 +4545,7 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -4470,6 +4558,8 @@ OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", ); PRODUCT_NAME = linphone; @@ -4511,6 +4601,7 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -4523,6 +4614,8 @@ OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; @@ -4564,6 +4657,7 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -4576,6 +4670,8 @@ OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; @@ -4618,6 +4714,7 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -4630,6 +4727,8 @@ OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; @@ -4672,6 +4771,7 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -4684,6 +4784,8 @@ OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; @@ -4744,6 +4846,7 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -4756,6 +4859,8 @@ OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", ); PRODUCT_NAME = linphone; @@ -4817,6 +4922,7 @@ submodules/externals/exosip/include, submodules/externals/speex/include, classes/Utils/NinePatch/, + classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 4.0; @@ -4829,6 +4935,8 @@ OTHER_LDFLAGS = ( "-force_load", "$(BUILT_PRODUCTS_DIR)/libNinePatch.a", + "-force_load", + "$(BUILT_PRODUCTS_DIR)/libXMLRPC.a", "-Objc", ); PRODUCT_NAME = linphone; From 0284edb3afdf90aa1b5990adf1e9c5dcc596041f Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 3 Aug 2012 09:43:20 +0200 Subject: [PATCH 099/397] Improve InCall video stuff --- Classes/InCallViewController.h | 4 - Classes/InCallViewController.m | 49 +++---- Classes/InCallViewController.xib | 138 +----------------- Classes/Utils/XMLRPC/NSData+Base64.m | 2 +- .../XMLRPC/XMLRPC.xcodeproj/project.pbxproj | 15 +- Classes/WizardViewController.m | 11 +- main.m | 1 - submodules/linphone | 2 +- 8 files changed, 44 insertions(+), 178 deletions(-) diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index 0808ebeac..b11f30ae3 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -28,10 +28,6 @@ @class VideoViewController; -@interface UIPreviewView : UIView - -@end - @interface InCallViewController : UIViewController { InCallTableViewController* callTableController; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 15926c9ff..4a8e3442f 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -35,18 +35,6 @@ const NSInteger SECURE_BUTTON_TAG=5; -@implementation UIPreviewView - -- (void)layoutSubviews { - [super layoutSubviews]; - [self.layer setFrame:self.frame]; - for(CALayer *layer in self.layer.sublayers) { - [layer setFrame:self.bounds]; - } -} - -@end - @implementation InCallViewController @synthesize callTableController; @@ -113,22 +101,6 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - ViewController Functions -// Resize preview view keep same ratio -- (void)viewWillLayoutSubviews { - [super viewWillLayoutSubviews]; - CGRect frame = [videoPreview frame]; - frame.origin.x += frame.size.width; - frame.origin.y += frame.size.height; - - CGRect selfFrame = [self.view frame]; - int size = 100.0f/460.0f * MAX(selfFrame.size.width, selfFrame.size.height); - frame.origin.x -= size; - frame.origin.y -= size; - frame.size.height = size; - frame.size.width = size; - [videoPreview setFrame:frame]; -} - - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; @@ -224,6 +196,27 @@ static UICompositeViewDescription *compositeDescription = nil; } +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + CGRect frame = [videoPreview frame]; + switch (toInterfaceOrientation) { + case UIInterfaceOrientationPortrait: + [videoPreview setTransform: CGAffineTransformMakeRotation(0)]; + break; + case UIInterfaceOrientationPortraitUpsideDown: + [videoPreview setTransform: CGAffineTransformMakeRotation(M_PI)]; + break; + case UIInterfaceOrientationLandscapeLeft: + [videoPreview setTransform: CGAffineTransformMakeRotation(M_PI / 2)]; + break; + case UIInterfaceOrientationLandscapeRight: + [videoPreview setTransform: CGAffineTransformMakeRotation(-M_PI / 2)]; + break; + default: + break; + } + [videoPreview setFrame:frame]; +} + #pragma mark - - (void)orientationUpdate { diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib index 8d6106c7d..d02849967 100644 --- a/Classes/InCallViewController.xib +++ b/Classes/InCallViewController.xib @@ -52,7 +52,6 @@ 301 {{-1000, -1000}, {2000, 2000}} - _NS:9 @@ -66,7 +65,6 @@ 274 {320, 460} - _NS:196 @@ -77,10 +75,9 @@ - 265 + 283 {{220, 360}, {100, 100}} - 1 @@ -91,7 +88,6 @@ 301 {{141, 212}, {37, 37}} - _NS:1030 NO @@ -103,7 +99,6 @@ {320, 460} - _NS:196 @@ -114,7 +109,6 @@ 274 {{0, -10}, {320, 480}} - _NS:418 @@ -143,9 +137,9 @@ -2147483356 - {85, 33} + {{0, 23}, {85, 33}} - + _NS:9 NO IBCocoaTouchFramework @@ -178,7 +172,6 @@ {320, 460} - NO @@ -400,7 +393,6 @@ -2.IBPluginDependency 106.IBPluginDependency 126.IBPluginDependency - 127.CustomClassName 127.IBPluginDependency 132.IBPluginDependency 144.IBPluginDependency @@ -420,7 +412,6 @@ com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin - UIPreviewView com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -447,128 +438,7 @@ 173 - - - YES - - InCallTableViewController - UITableViewController - - IBProjectSource - ./Classes/InCallTableViewController.h - - - - InCallViewController - UIViewController - - YES - - YES - callTableController - callTableView - testVideoView - videoCameraSwitch - videoGroup - videoPreview - videoView - videoWaitingForFirstImage - - - YES - InCallTableViewController - UITableView - UIView - UICamSwitch - UIView - UIView - UIView - UIActivityIndicatorView - - - - YES - - YES - callTableController - callTableView - testVideoView - videoCameraSwitch - videoGroup - videoPreview - videoView - videoWaitingForFirstImage - - - YES - - callTableController - InCallTableViewController - - - callTableView - UITableView - - - testVideoView - UIView - - - videoCameraSwitch - UICamSwitch - - - videoGroup - UIView - - - videoPreview - UIView - - - videoView - UIView - - - videoWaitingForFirstImage - UIActivityIndicatorView - - - - - IBProjectSource - ./Classes/InCallViewController.h - - - - UICamSwitch - UIButton - - preview - UIView - - - preview - - preview - UIView - - - - IBProjectSource - ./Classes/UICamSwitch.h - - - - UIPreviewView - UIView - - IBProjectSource - ./Classes/UIPreviewView.h - - - - + 0 IBCocoaTouchFramework diff --git a/Classes/Utils/XMLRPC/NSData+Base64.m b/Classes/Utils/XMLRPC/NSData+Base64.m index 2d719f2f1..4e6bb74c0 100755 --- a/Classes/Utils/XMLRPC/NSData+Base64.m +++ b/Classes/Utils/XMLRPC/NSData+Base64.m @@ -296,7 +296,7 @@ char *NewBase64Encode( // - (NSString *)base64EncodedString { - size_t outputLength; + size_t outputLength = 0; char *outputBuffer = NewBase64Encode([self bytes], [self length], true, &outputLength); diff --git a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj index 7e2cae629..c45de281a 100755 --- a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj +++ b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj @@ -659,6 +659,7 @@ ARCHS = "$(ARCHS_STANDARD_32_BIT)"; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; + VALID_ARCHS = "armv6 armv7"; }; name = Development; }; @@ -669,6 +670,7 @@ ARCHS = "$(ARCHS_STANDARD_32_BIT)"; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; + VALID_ARCHS = "armv6 armv7"; }; name = Release; }; @@ -688,7 +690,7 @@ PRODUCT_NAME = XMLRPC; PUBLIC_HEADERS_FOLDER_PATH = /headers/; SDKROOT = iphoneos; - VALID_ARCHS = "armv7 armv6"; + VALID_ARCHS = "armv6 armv7"; }; name = Development; }; @@ -707,7 +709,7 @@ PRODUCT_NAME = XMLRPC; PUBLIC_HEADERS_FOLDER_PATH = /headers/; SDKROOT = iphoneos; - VALID_ARCHS = "armv7 armv6"; + VALID_ARCHS = "armv6 armv7"; ZERO_LINK = NO; }; name = Release; @@ -719,6 +721,7 @@ ARCHS = "$(ARCHS_STANDARD_32_BIT)"; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; + VALID_ARCHS = "armv6 armv7"; }; name = Debug; }; @@ -748,7 +751,7 @@ PRODUCT_NAME = XMLRPC; PUBLIC_HEADERS_FOLDER_PATH = /headers/; SDKROOT = iphoneos; - VALID_ARCHS = "armv7 armv6"; + VALID_ARCHS = "armv6 armv7"; }; name = Debug; }; @@ -773,6 +776,7 @@ ARCHS = "$(ARCHS_STANDARD_32_BIT)"; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; + VALID_ARCHS = "armv6 armv7"; }; name = Distribution; }; @@ -801,7 +805,7 @@ PRODUCT_NAME = XMLRPC; PUBLIC_HEADERS_FOLDER_PATH = /headers/; SDKROOT = iphoneos; - VALID_ARCHS = "armv7 armv6"; + VALID_ARCHS = "armv6 armv7"; ZERO_LINK = NO; }; name = Distribution; @@ -827,6 +831,7 @@ ARCHS = "$(ARCHS_STANDARD_32_BIT)"; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; + VALID_ARCHS = "armv6 armv7"; }; name = DistributionAdhoc; }; @@ -855,7 +860,7 @@ PRODUCT_NAME = XMLRPC; PUBLIC_HEADERS_FOLDER_PATH = /headers/; SDKROOT = iphoneos; - VALID_ARCHS = "armv7 armv6"; + VALID_ARCHS = "armv6 armv7"; ZERO_LINK = NO; }; name = DistributionAdhoc; diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 6eb22f833..330032984 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -116,16 +116,13 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)viewDidLoad { [super viewDidLoad]; + [self resetWizard]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [self clearProxyConfig]; - [self changeView:welcomeView back:FALSE animation:FALSE]; - [waitView setHidden:TRUE]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdateEvent:) name:@"LinphoneRegistrationUpdate" @@ -159,6 +156,12 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - +- (void)resetWizard { + [self clearProxyConfig]; + [self changeView:welcomeView back:FALSE animation:FALSE]; + [waitView setHidden:TRUE]; +} + + (UIView*)findTextField:(ViewElement)tag view:(UIView*)view { for(UIView *child in [view subviews]) { if([child tag] == tag){ diff --git a/main.m b/main.m index ecec28813..1535f7764 100644 --- a/main.m +++ b/main.m @@ -25,4 +25,3 @@ int main(int argc, char *argv[]) { [pool release]; return retVal; } - diff --git a/submodules/linphone b/submodules/linphone index 78fae7aca..e6ef8b45a 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 78fae7acaf65bf083a8d35ae0c0bdddc87b649cc +Subproject commit e6ef8b45a4d109f06b452276061303c0e2173dda From ee6d6c3a9c96195f40fda2ccbf717eafd84f27a8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 3 Aug 2012 11:09:40 +0200 Subject: [PATCH 100/397] Reset field on Wizard show --- Classes/WizardViewController.m | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 330032984..82defa8c5 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -156,8 +156,24 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - ++ (void)cleanTextField:(UIView*)view { + if([view isKindOfClass:[UITextField class]]) { + [(UITextField*)view setText:@""]; + } else { + for(UIView *subview in view.subviews) { + [WizardViewController cleanTextField:subview]; + } + } +} + - (void)resetWizard { [self clearProxyConfig]; + [WizardViewController cleanTextField:welcomeView]; + [WizardViewController cleanTextField:choiceView]; + [WizardViewController cleanTextField:createAccountView]; + [WizardViewController cleanTextField:connectAccountView]; + [WizardViewController cleanTextField:externalAccountView]; + [WizardViewController cleanTextField:validateAccountView]; [self changeView:welcomeView back:FALSE animation:FALSE]; [waitView setHidden:TRUE]; } From 0f330d8e6c441ec903183fff66d3916f3779a9e4 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 3 Aug 2012 11:11:28 +0200 Subject: [PATCH 101/397] Only disable transfert when no current call or in conference --- Classes/LinphoneUI/UICallBar.m | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index c8063a1e6..33638965c 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -260,18 +260,9 @@ [conferenceButton setHidden:true]; } } - - // Disable menu when no call & no conference - if(linphone_core_get_current_call(lc) == NULL && linphone_core_is_in_conference(lc) == FALSE) { - [self hidePad]; - [self hideOptions]; - [optionsButton setEnabled:FALSE]; - } else { - [optionsButton setEnabled:TRUE]; - } // Disable transfert in conference - if(linphone_core_is_in_conference(lc)) { + if(linphone_core_get_current_call(lc) == NULL) { [optionsTransferButton setEnabled:FALSE]; } else { [optionsTransferButton setEnabled:TRUE]; From 95dc0fd88c28a582d4dfdafe2e5d22a3e03bfdc1 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 3 Aug 2012 12:01:22 +0200 Subject: [PATCH 102/397] Add Application badge based on missed calls/unread messages --- Classes/HistoryViewController.m | 5 +++++ Classes/LinphoneAppDelegate.m | 1 + Classes/LinphoneUI/UIMainBar.m | 8 +------- Classes/PhoneMainView.h | 2 ++ Classes/PhoneMainView.m | 15 ++++++++++++++- 5 files changed, 23 insertions(+), 8 deletions(-) diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 92cb769b3..30ec0ffc6 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -81,6 +81,11 @@ static UICompositeViewDescription *compositeDescription = nil; [editButton setOff]; [self changeView: History_All]; [self.tableView reloadData]; + + // Reset missed call + linphone_core_reset_missed_calls_count([LinphoneManager getLc]); + // Fake event + [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self]; } - (void)viewDidLoad { diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 58a6a2356..ec89ddc2d 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -165,6 +165,7 @@ int __aeabi_idiv(int a, int b) { } - (void)setupUI { + [[PhoneMainView instance] startUp]; if ([[LinphoneManager instance].settingsStore boolForKey:@"enable_first_login_view_preference"] == true) { // Change to fist login view [[PhoneMainView instance] changeCurrentView: [FirstLoginViewController compositeViewDescription]]; diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index ec2b88989..4c5fba903 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -258,13 +258,7 @@ [target.layer removeAnimationForKey:animationID]; } -- (void)updateView:(UICompositeViewDescription*) view { - // Reset missed call - if([view equal:[HistoryViewController compositeViewDescription]]) { - linphone_core_reset_missed_calls_count([LinphoneManager getLc]); - [self updateMissedCall:0 appear:FALSE]; - } - +- (void)updateView:(UICompositeViewDescription*) view { // Update buttons if([view equal:[HistoryViewController compositeViewDescription]]) { historyButton.selected = TRUE; diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 038db2155..6514290d0 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -60,6 +60,8 @@ - (void)showStateBar:(BOOL)show; - (void)showTabBar:(BOOL)show; - (void)fullScreen:(BOOL)enabled; +- (void)startUp; + + (void)forceOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated; + (PhoneMainView*) instance; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 9fc5479af..3b49f4320 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -114,7 +114,7 @@ static PhoneMainView* phoneMainViewInstance=nil; object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) - name:UIDeviceBatteryLevelDidChangeNotification + name:UIDeviceBatteryLevelDidChangeNotification object:nil]; } @@ -242,6 +242,7 @@ static PhoneMainView* phoneMainViewInstance=nil; ChatModel *chat = [[notif userInfo] objectForKey:@"chat"]; if(chat != nil) { [self displayMessage:chat]; + [self updateApplicationBadgeNumber]; } } @@ -340,11 +341,23 @@ static PhoneMainView* phoneMainViewInstance=nil; default: break; } + [self updateApplicationBadgeNumber]; } #pragma mark - +- (void)startUp { + [self updateApplicationBadgeNumber]; // Update Badge at startup +} + +- (void)updateApplicationBadgeNumber { + int count = 0; + count += linphone_core_get_missed_calls_count([LinphoneManager getLc]); + count += [ChatModel unreadMessages]; + [[UIApplication sharedApplication] setApplicationIconBadgeNumber:count]; +} + + (CATransition*)getBackwardTransition { CATransition* trans = [CATransition animation]; [trans setType:kCATransitionPush]; From f0e8707e1b9a71f68120b0d0bc00564ad7cbbce9 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 3 Aug 2012 12:27:41 +0200 Subject: [PATCH 103/397] Clean up projects --- .../NinePatch.xcodeproj/project.pbxproj | 59 +-- .../XMLRPC/Configurations/Common.xcconfig | 4 - .../XMLRPC/XMLRPC.xcodeproj/project.pbxproj | 482 ++---------------- linphone.xcodeproj/project.pbxproj | 206 +++----- 4 files changed, 116 insertions(+), 635 deletions(-) diff --git a/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj b/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj index b135d02b2..8cd815711 100755 --- a/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj +++ b/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj @@ -269,12 +269,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - armv6, - "$(ARCHS_STANDARD_32_BIT)", - ); COPY_PHASE_STRIP = NO; - DSTROOT = /tmp/NinePatch.dst; GCC_DYNAMIC_NO_PIC = NO; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = 0; @@ -282,11 +277,8 @@ GCC_PREFIX_HEADER = NinePatch_Prefix.pch; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - INSTALL_PATH = /usr/local/lib; IPHONEOS_DEPLOYMENT_TARGET = 4.0; - ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = NinePatch; - SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -296,23 +288,15 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - armv6, - "$(ARCHS_STANDARD_32_BIT)", - ); COPY_PHASE_STRIP = NO; - DSTROOT = /tmp/NinePatch.dst; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = NinePatch_Prefix.pch; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - INSTALL_PATH = /usr/local/lib; IPHONEOS_DEPLOYMENT_TARGET = 4.0; - ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = NinePatch; - SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -321,12 +305,16 @@ 1DEB922308733DC00010E9CD /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "Don't Code Sign"; GCC_C_LANGUAGE_STANDARD = c99; GCC_OPTIMIZATION_LEVEL = 0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; @@ -336,12 +324,15 @@ 1DEB922408733DC00010E9CD /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "Don't Code Sign"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - ONLY_ACTIVE_ARCH = YES; + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; @@ -351,12 +342,15 @@ D3D14E7E15A72BD10074A527 /* Distribution */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "Don't Code Sign"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - ONLY_ACTIVE_ARCH = YES; + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; @@ -367,23 +361,15 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - armv6, - "$(ARCHS_STANDARD_32_BIT)", - ); COPY_PHASE_STRIP = NO; - DSTROOT = /tmp/NinePatch.dst; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = NinePatch_Prefix.pch; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - INSTALL_PATH = /usr/local/lib; IPHONEOS_DEPLOYMENT_TARGET = 4.0; - ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = NinePatch; - SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; @@ -392,12 +378,15 @@ D3D14E8015A72BD70074A527 /* DistributionAdhoc */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "Don't Code Sign"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; - ONLY_ACTIVE_ARCH = YES; + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; @@ -408,23 +397,15 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - armv6, - "$(ARCHS_STANDARD_32_BIT)", - ); COPY_PHASE_STRIP = NO; - DSTROOT = /tmp/NinePatch.dst; GCC_MODEL_TUNING = G5; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = NinePatch_Prefix.pch; GCC_THUMB_SUPPORT = NO; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - INSTALL_PATH = /usr/local/lib; IPHONEOS_DEPLOYMENT_TARGET = 4.0; - ONLY_ACTIVE_ARCH = NO; PRODUCT_NAME = NinePatch; - SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; }; diff --git a/Classes/Utils/XMLRPC/Configurations/Common.xcconfig b/Classes/Utils/XMLRPC/Configurations/Common.xcconfig index c1aba3d78..e036134b0 100755 --- a/Classes/Utils/XMLRPC/Configurations/Common.xcconfig +++ b/Classes/Utils/XMLRPC/Configurations/Common.xcconfig @@ -1,7 +1,3 @@ -ARCHS = $(ARCHS_STANDARD_32_64_BIT) -VALID_ARCHS = i386 ppc x86_64 -SDKROOT = macosx10.6 - RUN_CLANG_STATIC_ANALYZER = YES GCC_C_LANGUAGE_STANDARD = gnu99 diff --git a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj index c45de281a..109f3a548 100755 --- a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj +++ b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj @@ -7,46 +7,9 @@ objects = { /* Begin PBXBuildFile section */ - 033836831527905D00EF8E8A /* NSData+Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 033836811527905D00EF8E8A /* NSData+Base64.h */; }; 033836841527905D00EF8E8A /* NSData+Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 033836811527905D00EF8E8A /* NSData+Base64.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 033836851527905D00EF8E8A /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 033836821527905D00EF8E8A /* NSData+Base64.m */; }; 033836861527905D00EF8E8A /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 033836821527905D00EF8E8A /* NSData+Base64.m */; }; - 0707047810114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0707047610114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h */; }; - 0707047910114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0707047710114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m */; }; - 07075BAE10C5FE3800589A27 /* AlternativeDateFormatsTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07075BAD10C5FE3800589A27 /* AlternativeDateFormatsTestCase.xml */; }; - 07452BE30E469C9000A57686 /* XMLRPCConnectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 07452BE20E469C9000A57686 /* XMLRPCConnectionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 075137FB0E429E560019E4F6 /* XMLRPCConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 075137F90E429E560019E4F6 /* XMLRPCConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 075137FC0E429E560019E4F6 /* XMLRPCConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 075137FA0E429E560019E4F6 /* XMLRPCConnectionManager.m */; }; - 0759A6F31143495E000DFE98 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0759A6F11143495E000DFE98 /* InfoPlist.strings */; }; - 0799AF270F6724E300B71B22 /* XMLRPC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DC2EF5B0486A6940098B216 /* XMLRPC.framework */; }; - 0799AF5E0F67266400B71B22 /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0799AF5D0F67266400B71B22 /* SenTestingKit.framework */; }; - 07A0A9071016A51000CEE3C7 /* EmptyBooleanTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07A0A9021016A51000CEE3C7 /* EmptyBooleanTestCase.xml */; }; - 07A0A9081016A51000CEE3C7 /* EmptyDataTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07A0A9031016A51000CEE3C7 /* EmptyDataTestCase.xml */; }; - 07A0A9091016A51000CEE3C7 /* EmptyDoubleTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07A0A9041016A51000CEE3C7 /* EmptyDoubleTestCase.xml */; }; - 07A0A90A1016A51000CEE3C7 /* EmptyIntegerTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07A0A9051016A51000CEE3C7 /* EmptyIntegerTestCase.xml */; }; - 07A0A90B1016A51000CEE3C7 /* EmptyStringTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07A0A9061016A51000CEE3C7 /* EmptyStringTestCase.xml */; }; - 07B0C6070E33A659006453B4 /* NSStringAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5F80E33A659006453B4 /* NSStringAdditions.h */; }; - 07B0C6080E33A659006453B4 /* NSStringAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C5F90E33A659006453B4 /* NSStringAdditions.m */; }; - 07B0C6090E33A659006453B4 /* XMLRPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FA0E33A659006453B4 /* XMLRPC.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 07B0C60A0E33A659006453B4 /* XMLRPCConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FB0E33A659006453B4 /* XMLRPCConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 07B0C60B0E33A659006453B4 /* XMLRPCConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C5FC0E33A659006453B4 /* XMLRPCConnection.m */; }; - 07B0C60E0E33A659006453B4 /* XMLRPCDefaultEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FF0E33A659006453B4 /* XMLRPCDefaultEncoder.h */; }; - 07B0C60F0E33A659006453B4 /* XMLRPCDefaultEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6000E33A659006453B4 /* XMLRPCDefaultEncoder.m */; }; - 07B0C6100E33A659006453B4 /* XMLRPCRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6010E33A659006453B4 /* XMLRPCRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 07B0C6110E33A659006453B4 /* XMLRPCRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6020E33A659006453B4 /* XMLRPCRequest.m */; }; - 07B0C6120E33A659006453B4 /* XMLRPCResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6030E33A659006453B4 /* XMLRPCResponse.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 07B0C6130E33A659006453B4 /* XMLRPCResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6040E33A659006453B4 /* XMLRPCResponse.m */; }; - 07B0C6170E33A672006453B4 /* XMLRPC.pch in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6160E33A672006453B4 /* XMLRPC.pch */; }; - 07B52BE7101004670015AD8B /* SimpleArrayTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07B52BE5101004670015AD8B /* SimpleArrayTestCase.xml */; }; - 07B52BE8101004670015AD8B /* SimpleStructTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07B52BE6101004670015AD8B /* SimpleStructTestCase.xml */; }; - 07B52BEA101004810015AD8B /* TestCases.plist in Resources */ = {isa = PBXBuildFile; fileRef = 07B52BE9101004810015AD8B /* TestCases.plist */; }; - 07B52C03101008670015AD8B /* XMLRPCParserTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B52C02101008670015AD8B /* XMLRPCParserTest.m */; }; - 07BB09891316B65A00E1911C /* DefaultTypeTestCase.xml in Resources */ = {isa = PBXBuildFile; fileRef = 07BB09881316B65A00E1911C /* DefaultTypeTestCase.xml */; }; - 07E761001011788B00E9BDEE /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; }; - 07EF453B0E721A5D009F2708 /* XMLRPCEventBasedParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 07EF45390E721A5D009F2708 /* XMLRPCEventBasedParser.h */; }; - 07EF453C0E721A5D009F2708 /* XMLRPCEventBasedParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 07EF453A0E721A5D009F2708 /* XMLRPCEventBasedParser.m */; }; 2DCADEDB1529E24300B47A4F /* XMLRPCEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DCADED91529E06900B47A4F /* XMLRPCEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */; }; 903B0DC212F7581200BD6E09 /* NSStringAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5F80E33A659006453B4 /* NSStringAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 903B0DC312F7581200BD6E09 /* NSStringAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C5F90E33A659006453B4 /* NSStringAdditions.m */; }; 903B0DC412F7581200BD6E09 /* XMLRPCConnectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 07452BE20E469C9000A57686 /* XMLRPCConnectionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -68,16 +31,6 @@ 903B0DD412F7581F00BD6E09 /* XMLRPC.pch in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6160E33A672006453B4 /* XMLRPC.pch */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 0799AF180F67240B00B71B22 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0867D690FE84028FC02AAC07 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8DC2EF4F0486A6940098B216; - remoteInfo = XMLRPC; - }; -/* End PBXContainerItemProxy section */ - /* Begin PBXFileReference section */ 033836811527905D00EF8E8A /* NSData+Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Base64.h"; sourceTree = ""; }; 033836821527905D00EF8E8A /* NSData+Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Base64.m"; sourceTree = ""; }; @@ -91,7 +44,6 @@ 075137F90E429E560019E4F6 /* XMLRPCConnectionManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = XMLRPCConnectionManager.h; sourceTree = ""; }; 075137FA0E429E560019E4F6 /* XMLRPCConnectionManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = XMLRPCConnectionManager.m; sourceTree = ""; }; 0759A6F21143495E000DFE98 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = Languages/English.lproj/InfoPlist.strings; sourceTree = ""; }; - 0799AF030F6721FF00B71B22 /* XMLRPCUnitTests.octest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = XMLRPCUnitTests.octest; sourceTree = BUILT_PRODUCTS_DIR; }; 0799AF040F6721FF00B71B22 /* XMLRPCUnitTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "XMLRPCUnitTests-Info.plist"; path = "Resources/Property Lists/XMLRPCUnitTests-Info.plist"; sourceTree = ""; }; 0799AF0A0F67227F00B71B22 /* XMLRPCUnitTests.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCUnitTests.xcconfig; path = Configurations/XMLRPCUnitTests.xcconfig; sourceTree = ""; }; 0799AF0B0F67227F00B71B22 /* XMLRPCUnitTestsDevelopment.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = XMLRPCUnitTestsDevelopment.xcconfig; path = Configurations/XMLRPCUnitTestsDevelopment.xcconfig; sourceTree = ""; }; @@ -130,30 +82,11 @@ 0867D6A5FE840307C02AAC07 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; 1058C7B1FEA5585E11CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; 2DCADED91529E06900B47A4F /* XMLRPCEncoder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XMLRPCEncoder.h; sourceTree = ""; }; - 8DC2EF5B0486A6940098B216 /* XMLRPC.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = XMLRPC.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 903B0DB612F7574800BD6E09 /* libXMLRPC.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libXMLRPC.a; sourceTree = BUILT_PRODUCTS_DIR; }; D2F7E79907B2D74100F64583 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 0799AF000F6721FF00B71B22 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 07E761001011788B00E9BDEE /* Cocoa.framework in Frameworks */, - 0799AF5E0F67266400B71B22 /* SenTestingKit.framework in Frameworks */, - 0799AF270F6724E300B71B22 /* XMLRPC.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8DC2EF560486A6940098B216 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8DC2EF570486A6940098B216 /* Cocoa.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 903B0DB412F7574800BD6E09 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -167,8 +100,6 @@ 034768DFFF38A50411DB9C8B /* Products */ = { isa = PBXGroup; children = ( - 8DC2EF5B0486A6940098B216 /* XMLRPC.framework */, - 0799AF030F6721FF00B71B22 /* XMLRPCUnitTests.octest */, 903B0DB612F7574800BD6E09 /* libXMLRPC.a */, ); name = Products; @@ -340,25 +271,6 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 8DC2EF500486A6940098B216 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 07B0C6070E33A659006453B4 /* NSStringAdditions.h in Headers */, - 07B0C6090E33A659006453B4 /* XMLRPC.h in Headers */, - 07B0C6170E33A672006453B4 /* XMLRPC.pch in Headers */, - 07B0C60A0E33A659006453B4 /* XMLRPCConnection.h in Headers */, - 07452BE30E469C9000A57686 /* XMLRPCConnectionDelegate.h in Headers */, - 075137FB0E429E560019E4F6 /* XMLRPCConnectionManager.h in Headers */, - 07B0C60E0E33A659006453B4 /* XMLRPCDefaultEncoder.h in Headers */, - 07EF453B0E721A5D009F2708 /* XMLRPCEventBasedParser.h in Headers */, - 0707047810114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h in Headers */, - 07B0C6100E33A659006453B4 /* XMLRPCRequest.h in Headers */, - 07B0C6120E33A659006453B4 /* XMLRPCResponse.h in Headers */, - 033836831527905D00EF8E8A /* NSData+Base64.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 903B0DB212F7574800BD6E09 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -382,45 +294,6 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 0799AF020F6721FF00B71B22 /* XMLRPCUnitTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0799AF070F67220000B71B22 /* Build configuration list for PBXNativeTarget "XMLRPCUnitTests" */; - buildPhases = ( - 0799AEFE0F6721FF00B71B22 /* Resources */, - 0799AEFF0F6721FF00B71B22 /* Sources */, - 0799AF000F6721FF00B71B22 /* Frameworks */, - 0799AF010F6721FF00B71B22 /* ShellScript */, - ); - buildRules = ( - ); - dependencies = ( - 0799AF190F67240B00B71B22 /* PBXTargetDependency */, - ); - name = XMLRPCUnitTests; - productName = XMLRPCUnitTests; - productReference = 0799AF030F6721FF00B71B22 /* XMLRPCUnitTests.octest */; - productType = "com.apple.product-type.bundle"; - }; - 8DC2EF4F0486A6940098B216 /* XMLRPC */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "XMLRPC" */; - buildPhases = ( - 8DC2EF500486A6940098B216 /* Headers */, - 8DC2EF520486A6940098B216 /* Resources */, - 8DC2EF540486A6940098B216 /* Sources */, - 8DC2EF560486A6940098B216 /* Frameworks */, - 0715852011432A78003D3454 /* Run Script: Include Git commit hash */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = XMLRPC; - productInstallPath = "$(HOME)/Library/Frameworks"; - productName = XMLRPC; - productReference = 8DC2EF5B0486A6940098B216 /* XMLRPC.framework */; - productType = "com.apple.product-type.framework"; - }; 903B0DB512F7574800BD6E09 /* libXMLRPC */ = { isa = PBXNativeTarget; buildConfigurationList = 903B0DB912F7577B00BD6E09 /* Build configuration list for PBXNativeTarget "libXMLRPC" */; @@ -428,7 +301,6 @@ 903B0DB212F7574800BD6E09 /* Headers */, 903B0DB312F7574800BD6E09 /* Sources */, 903B0DB412F7574800BD6E09 /* Frameworks */, - 903B0DFB12F75B2300BD6E09 /* ShellScript */, ); buildRules = ( ); @@ -462,110 +334,12 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 8DC2EF4F0486A6940098B216 /* XMLRPC */, 903B0DB512F7574800BD6E09 /* libXMLRPC */, - 0799AF020F6721FF00B71B22 /* XMLRPCUnitTests */, ); }; /* End PBXProject section */ -/* Begin PBXResourcesBuildPhase section */ - 0799AEFE0F6721FF00B71B22 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 07075BAE10C5FE3800589A27 /* AlternativeDateFormatsTestCase.xml in Resources */, - 07BB09891316B65A00E1911C /* DefaultTypeTestCase.xml in Resources */, - 07A0A9071016A51000CEE3C7 /* EmptyBooleanTestCase.xml in Resources */, - 07A0A9081016A51000CEE3C7 /* EmptyDataTestCase.xml in Resources */, - 07A0A9091016A51000CEE3C7 /* EmptyDoubleTestCase.xml in Resources */, - 07A0A90A1016A51000CEE3C7 /* EmptyIntegerTestCase.xml in Resources */, - 07A0A90B1016A51000CEE3C7 /* EmptyStringTestCase.xml in Resources */, - 07B52BE7101004670015AD8B /* SimpleArrayTestCase.xml in Resources */, - 07B52BE8101004670015AD8B /* SimpleStructTestCase.xml in Resources */, - 07B52BEA101004810015AD8B /* TestCases.plist in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8DC2EF520486A6940098B216 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0759A6F31143495E000DFE98 /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 0715852011432A78003D3454 /* Run Script: Include Git commit hash */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Run Script: Include Git commit hash"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /usr/bin/ruby; - shellScript = "raise \"Must be executed from within Xcode.\" unless ENV['XCODE_VERSION_ACTUAL']\n\ninfo_plist = \"#{ENV['BUILT_PRODUCTS_DIR']}/#{ENV['WRAPPER_NAME']}/Resources/Info.plist\"\n\nif !File.exist?('/usr/local/bin/git')\n exit\nend\n\ncommit = `/usr/local/bin/git rev-parse --short HEAD`.chomp!\n\nif commit.nil? or commit.empty?\n exit\nend\n\nlines = IO.readlines(info_plist).join\n\nlines.gsub! /(CFBundleShortVersionString<\\/key>\\W*)(\\d+\\.\\d+(?:\\.\\d)*[a-z]?)<\\/string>/, \"\\\\1\\\\2 rev. #{commit}\"\n\nFile.open(info_plist, 'w') { |f| f.puts lines }"; - }; - 0799AF010F6721FF00B71B22 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n"; - }; - 903B0DFB12F75B2300BD6E09 /* ShellScript */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "#\n# Version 2.0 (updated for Xcode 4, with some fixes)\n#\n# Author: Adam Martin - http://twitter.com/redglassesapps\n#\n# For more information see this Stack Overflow question:\n# http://stackoverflow.com/questions/3520977/build-fat-static-library-device-simulator-using-xcode-and-sdk-4\n#\nDEBUG_THIS_SCRIPT=\"false\"\n\nif [ $DEBUG_THIS_SCRIPT = \"true\" ]\nthen\necho \"########### TESTS #############\"\necho \"Use the following variables when debugging this script; note that they may change\"\necho \"BUILD_DIR = $BUILD_DIR\"\necho \"BUILD_ROOT = $BUILD_ROOT\"\necho \"CONFIGURATION_BUILD_DIR = $CONFIGURATION_BUILD_DIR\"\necho \"BUILT_PRODUCTS_DIR = $BUILT_PRODUCTS_DIR\"\necho \"CONFIGURATION_TEMP_DIR = $CONFIGURATION_TEMP_DIR\"\necho \"TARGET_BUILD_DIR = $TARGET_BUILD_DIR\"\nfi\n\n########################################################\n\nSDK_VERSION=$(echo ${SDK_NAME} | grep -o '.\\{3\\}$')\n\nif [ ${PLATFORM_NAME} = \"iphonesimulator\" ]\nthen\nOTHER_SDK_TO_BUILD=iphoneos${SDK_VERSION}\nelse\nOTHER_SDK_TO_BUILD=iphonesimulator${SDK_VERSION}\nfi\n\necho \"XCode has selected SDK: ${PLATFORM_NAME} with version: ${SDK_VERSION} (although back-targetting: ${IPHONEOS_DEPLOYMENT_TARGET})\"\necho \"...therefore, OTHER_SDK_TO_BUILD = ${OTHER_SDK_TO_BUILD}\"\n\n########################################################\n\nif [ \"true\" == ${ALREADYINVOKED:-false} ]\nthen\necho \"RECURSION: I am NOT the root invocation, so I'm NOT going to recurse\"\nelse\nexport ALREADYINVOKED=\"true\"\n\necho \"RECURSION: I am the root ... recursing all missing build targets NOW...\"\necho \"RECURSION: ...about to invoke: xcodebuild -configuration \\\"${CONFIGURATION}\\\" -target \\\"${TARGET_NAME}\\\" -sdk \\\"${OTHER_SDK_TO_BUILD}\\\" ${ACTION} RUN_CLANG_STATIC_ANALYZER=NO\"\n\nxcodebuild -configuration \"${CONFIGURATION}\" -target \"${TARGET_NAME}\" -sdk \"${OTHER_SDK_TO_BUILD}\" ${ACTION} RUN_CLANG_STATIC_ANALYZER=NO BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\"\n\nACTION=\"build\"\n\nCURRENTCONFIG_DEVICE_DIR=${SYMROOT}/${CONFIGURATION}-iphoneos\nCURRENTCONFIG_SIMULATOR_DIR=${SYMROOT}/${CONFIGURATION}-iphonesimulator\n\necho \"Taking device build from: ${CURRENTCONFIG_DEVICE_DIR}\"\necho \"Taking simulator build from: ${CURRENTCONFIG_SIMULATOR_DIR}\"\n\nCREATING_UNIVERSAL_DIR=${SYMROOT}/${CONFIGURATION}-universal\n\necho \"...I will output a universal build to: ${CREATING_UNIVERSAL_DIR}\"\n\nrm -rf \"${CREATING_UNIVERSAL_DIR}\"\nmkdir \"${CREATING_UNIVERSAL_DIR}\"\n\necho \"lipo: for current configuration (${CONFIGURATION}) creating output file: ${CREATING_UNIVERSAL_DIR}/${EXECUTABLE_NAME}\"\n\nlipo -create -output \"${CREATING_UNIVERSAL_DIR}/${EXECUTABLE_NAME}\" \"${CURRENTCONFIG_DEVICE_DIR}/${EXECUTABLE_NAME}\" \"${CURRENTCONFIG_SIMULATOR_DIR}/${EXECUTABLE_NAME}\"\n\nif [ -d \"${CURRENTCONFIG_DEVICE_DIR}/usr/local/include\" ]\nthen\nmkdir -p \"${CREATING_UNIVERSAL_DIR}/usr/local/include\"\ncp \"${CURRENTCONFIG_DEVICE_DIR}/usr/local/include/\"* \"${CREATING_UNIVERSAL_DIR}/usr/local/include\"\nfi\nfi"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - /* Begin PBXSourcesBuildPhase section */ - 0799AEFF0F6721FF00B71B22 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 07B52C03101008670015AD8B /* XMLRPCParserTest.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8DC2EF540486A6940098B216 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 07B0C6080E33A659006453B4 /* NSStringAdditions.m in Sources */, - 07B0C60B0E33A659006453B4 /* XMLRPCConnection.m in Sources */, - 075137FC0E429E560019E4F6 /* XMLRPCConnectionManager.m in Sources */, - 07B0C60F0E33A659006453B4 /* XMLRPCDefaultEncoder.m in Sources */, - 07EF453C0E721A5D009F2708 /* XMLRPCEventBasedParser.m in Sources */, - 0707047910114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m in Sources */, - 07B0C6110E33A659006453B4 /* XMLRPCRequest.m in Sources */, - 07B0C6130E33A659006453B4 /* XMLRPCResponse.m in Sources */, - 033836851527905D00EF8E8A /* NSData+Base64.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 903B0DB312F7574800BD6E09 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -584,14 +358,6 @@ }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXTargetDependency section */ - 0799AF190F67240B00B71B22 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 8DC2EF4F0486A6940098B216 /* XMLRPC */; - targetProxy = 0799AF180F67240B00B71B22 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - /* Begin PBXVariantGroup section */ 0759A6F11143495E000DFE98 /* InfoPlist.strings */ = { isa = PBXVariantGroup; @@ -604,112 +370,33 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ - 0799AF050F67220000B71B22 /* Development */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0799AF0B0F67227F00B71B22 /* XMLRPCUnitTestsDevelopment.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", - ); - VERSION_INFO_FILE = ""; - }; - name = Development; - }; - 0799AF060F67220000B71B22 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0799AF0C0F67227F00B71B22 /* XMLRPCUnitTestsRelease.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", - ); - VERSION_INFO_FILE = ""; - }; - name = Release; - }; - 1DEB91AE08733DA50010E9CD /* Development */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0799AF100F6722D600B71B22 /* XMLRPCDevelopment.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - VERSION_INFO_FILE = ""; - }; - name = Development; - }; - 1DEB91AF08733DA50010E9CD /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0799AF110F6722D600B71B22 /* XMLRPCRelease.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - VERSION_INFO_FILE = ""; - }; - name = Release; - }; - 1DEB91B208733DA50010E9CD /* Development */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 07127C590F4266F4009C7476 /* CommonDevelopment.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - OTHER_LDFLAGS = "-ObjC"; - SDKROOT = iphoneos; - VALID_ARCHS = "armv6 armv7"; - }; - name = Development; - }; 1DEB91B308733DA50010E9CD /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; VALID_ARCHS = "armv6 armv7"; }; name = Release; }; - 903B0DB712F7574900BD6E09 /* Development */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - COPY_PHASE_STRIP = NO; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; - PRODUCT_NAME = XMLRPC; - PUBLIC_HEADERS_FOLDER_PATH = /headers/; - SDKROOT = iphoneos; - VALID_ARCHS = "armv6 armv7"; - }; - name = Development; - }; 903B0DB812F7574900BD6E09 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - COPY_PHASE_STRIP = YES; + COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; PRODUCT_NAME = XMLRPC; PUBLIC_HEADERS_FOLDER_PATH = /headers/; - SDKROOT = iphoneos; - VALID_ARCHS = "armv6 armv7"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; ZERO_LINK = NO; }; name = Release; @@ -718,54 +405,31 @@ isa = XCBuildConfiguration; baseConfigurationReference = 07127C590F4266F4009C7476 /* CommonDevelopment.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; VALID_ARCHS = "armv6 armv7"; }; name = Debug; }; - D3554EDA15CA7E4500478841 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0799AF100F6722D600B71B22 /* XMLRPCDevelopment.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - VERSION_INFO_FILE = ""; - }; - name = Debug; - }; D3554EDB15CA7E4500478841 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; PRODUCT_NAME = XMLRPC; PUBLIC_HEADERS_FOLDER_PATH = /headers/; - SDKROOT = iphoneos; - VALID_ARCHS = "armv6 armv7"; - }; - name = Debug; - }; - D3554EDC15CA7E4500478841 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0799AF0B0F67227F00B71B22 /* XMLRPCUnitTestsDevelopment.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", - ); - VERSION_INFO_FILE = ""; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; @@ -773,143 +437,70 @@ isa = XCBuildConfiguration; baseConfigurationReference = 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; VALID_ARCHS = "armv6 armv7"; }; name = Distribution; }; - D3554EDE15CA7E5600478841 /* Distribution */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0799AF110F6722D600B71B22 /* XMLRPCRelease.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - VERSION_INFO_FILE = ""; - }; - name = Distribution; - }; D3554EDF15CA7E5600478841 /* Distribution */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - COPY_PHASE_STRIP = YES; + COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; PRODUCT_NAME = XMLRPC; PUBLIC_HEADERS_FOLDER_PATH = /headers/; - SDKROOT = iphoneos; - VALID_ARCHS = "armv6 armv7"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; ZERO_LINK = NO; }; name = Distribution; }; - D3554EE015CA7E5600478841 /* Distribution */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0799AF0C0F67227F00B71B22 /* XMLRPCUnitTestsRelease.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", - ); - VERSION_INFO_FILE = ""; - }; - name = Distribution; - }; D3554EE115CA7E6000478841 /* DistributionAdhoc */ = { isa = XCBuildConfiguration; baseConfigurationReference = 07127C5A0F4266F4009C7476 /* CommonRelease.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); + ONLY_ACTIVE_ARCH = NO; OTHER_LDFLAGS = "-ObjC"; SDKROOT = iphoneos; VALID_ARCHS = "armv6 armv7"; }; name = DistributionAdhoc; }; - D3554EE215CA7E6000478841 /* DistributionAdhoc */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0799AF110F6722D600B71B22 /* XMLRPCRelease.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - VERSION_INFO_FILE = ""; - }; - name = DistributionAdhoc; - }; D3554EE315CA7E6000478841 /* DistributionAdhoc */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - COPY_PHASE_STRIP = YES; + COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; GCC_VERSION = com.apple.compilers.llvm.clang.1_0; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; PRODUCT_NAME = XMLRPC; PUBLIC_HEADERS_FOLDER_PATH = /headers/; - SDKROOT = iphoneos; - VALID_ARCHS = "armv6 armv7"; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; ZERO_LINK = NO; }; name = DistributionAdhoc; }; - D3554EE415CA7E6000478841 /* DistributionAdhoc */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0799AF0C0F67227F00B71B22 /* XMLRPCUnitTestsRelease.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; - COMBINE_HIDPI_IMAGES = YES; - FRAMEWORK_SEARCH_PATHS = ( - "$(inherited)", - "\"$(DEVELOPER_FRAMEWORKS_DIR)\"", - ); - VERSION_INFO_FILE = ""; - }; - name = DistributionAdhoc; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0799AF070F67220000B71B22 /* Build configuration list for PBXNativeTarget "XMLRPCUnitTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0799AF050F67220000B71B22 /* Development */, - D3554EDC15CA7E4500478841 /* Debug */, - 0799AF060F67220000B71B22 /* Release */, - D3554EE015CA7E5600478841 /* Distribution */, - D3554EE415CA7E6000478841 /* DistributionAdhoc */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1DEB91AD08733DA50010E9CD /* Build configuration list for PBXNativeTarget "XMLRPC" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 1DEB91AE08733DA50010E9CD /* Development */, - D3554EDA15CA7E4500478841 /* Debug */, - 1DEB91AF08733DA50010E9CD /* Release */, - D3554EDE15CA7E5600478841 /* Distribution */, - D3554EE215CA7E6000478841 /* DistributionAdhoc */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 1DEB91B108733DA50010E9CD /* Build configuration list for PBXProject "XMLRPC" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1DEB91B208733DA50010E9CD /* Development */, D3554ED915CA7E4500478841 /* Debug */, 1DEB91B308733DA50010E9CD /* Release */, D3554EDD15CA7E5600478841 /* Distribution */, @@ -921,7 +512,6 @@ 903B0DB912F7577B00BD6E09 /* Build configuration list for PBXNativeTarget "libXMLRPC" */ = { isa = XCConfigurationList; buildConfigurations = ( - 903B0DB712F7574900BD6E09 /* Development */, D3554EDB15CA7E4500478841 /* Debug */, 903B0DB812F7574900BD6E09 /* Release */, D3554EDF15CA7E5600478841 /* Distribution */, diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 5a6cefd18..d49c108bd 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -116,7 +116,6 @@ 22F2508E107141E100AC9B3F /* DialerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* DialerViewController.m */; }; 22F2508F107141E100AC9B3F /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22F2508D107141E100AC9B3F /* DialerViewController.xib */; }; 22F254811073D99800AC9B3F /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; }; - 22F51EF6107FA66500F98953 /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; 288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; }; 340751971506459A00B89C47 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340751961506459A00B89C47 /* CoreTelephony.framework */; }; 34075199150645A300B89C47 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340751961506459A00B89C47 /* CoreTelephony.framework */; }; @@ -599,7 +598,6 @@ D34BD73F15C13DF40070C209 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; }; D34BD74015C13E110070C209 /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; }; D34BD74115C13E250070C209 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; }; - D34BD74215C13E350070C209 /* untitled.plist in Resources */ = {isa = PBXBuildFile; fileRef = 22F51EF5107FA66500F98953 /* untitled.plist */; }; D34BD74315C13ED70070C209 /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22F2508D107141E100AC9B3F /* DialerViewController.xib */; }; D34F6F9E1594D3FB0095705B /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; }; D350F20E15A43BB100149E54 /* WizardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D350F20C15A43BB100149E54 /* WizardViewController.m */; }; @@ -1123,13 +1121,6 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - D3554ECE15CA79AA00478841 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 8DC2EF5B0486A6940098B216; - remoteInfo = XMLRPC; - }; D3554ED015CA79AA00478841 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; @@ -1137,13 +1128,6 @@ remoteGlobalIDString = 903B0DB612F7574800BD6E09; remoteInfo = libXMLRPC; }; - D3554ED215CA79AA00478841 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 0799AF030F6721FF00B71B22; - remoteInfo = XMLRPCUnitTests; - }; D3554ED415CA79B900478841 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D3554EC515CA79A900478841 /* XMLRPC.xcodeproj */; @@ -1463,7 +1447,6 @@ 22F2508C107141E100AC9B3F /* DialerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = DialerViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 22F2508D107141E100AC9B3F /* DialerViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DialerViewController.xib; sourceTree = ""; }; 22F254801073D99800AC9B3F /* ringback.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringback.wav; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/ringback.wav"; sourceTree = ""; }; - 22F51EF5107FA66500F98953 /* untitled.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = untitled.plist; sourceTree = ""; }; 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* linphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphone_Prefix.pch; sourceTree = ""; }; @@ -2630,7 +2613,6 @@ 70E542F413E147EB002BA2C0 /* QuartzCore.framework */, 22744043106F33FC006EC466 /* Security.framework */, 2264B6D111200342002C2C53 /* SystemConfiguration.framework */, - 22F51EF5107FA66500F98953 /* untitled.plist */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 220FAC77107654FC0068D98F /* include */, @@ -3099,9 +3081,7 @@ D3554EC615CA79A900478841 /* Products */ = { isa = PBXGroup; children = ( - D3554ECF15CA79AA00478841 /* XMLRPC.framework */, D3554ED115CA79AA00478841 /* libXMLRPC.a */, - D3554ED315CA79AA00478841 /* XMLRPCUnitTests.octest */, ); name = Products; sourceTree = ""; @@ -3311,13 +3291,6 @@ /* End PBXProject section */ /* Begin PBXReferenceProxy section */ - D3554ECF15CA79AA00478841 /* XMLRPC.framework */ = { - isa = PBXReferenceProxy; - fileType = wrapper.framework; - path = XMLRPC.framework; - remoteRef = D3554ECE15CA79AA00478841 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; D3554ED115CA79AA00478841 /* libXMLRPC.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -3325,13 +3298,6 @@ remoteRef = D3554ED015CA79AA00478841 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - D3554ED315CA79AA00478841 /* XMLRPCUnitTests.octest */ = { - isa = PBXReferenceProxy; - fileType = wrapper.cfbundle; - path = XMLRPCUnitTests.octest; - remoteRef = D3554ED215CA79AA00478841 /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; D3B90E1915C2CB5800F64F8C /* libNinePatch.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -3349,7 +3315,6 @@ 2274550810700509006EC466 /* linphonerc in Resources */, 22F2508F107141E100AC9B3F /* DialerViewController.xib in Resources */, 22F254811073D99800AC9B3F /* ringback.wav in Resources */, - 22F51EF6107FA66500F98953 /* untitled.plist in Resources */, 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */, 22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */, 22058C71116E305000B08DDD /* linphone_icon_57.png in Resources */, @@ -4076,7 +4041,6 @@ D34BD72215C13DB70070C209 /* video_on_over_landscape.png in Resources */, D34BD74015C13E110070C209 /* InAppSettings.bundle in Resources */, D34BD74115C13E250070C209 /* Localizable.strings in Resources */, - D34BD74215C13E350070C209 /* untitled.plist in Resources */, D34BD74315C13ED70070C209 /* DialerViewController.xib in Resources */, D3A74E5A15C68162001500B9 /* toolsbar_background.png in Resources */, D3A74E5D15C6922A001500B9 /* UIMainBar~ipad.xib in Resources */, @@ -4442,12 +4406,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -4458,8 +4419,6 @@ HAVE_X264, HAVE_SILK, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -4473,12 +4432,12 @@ classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", @@ -4488,27 +4447,29 @@ "-Objc", ); PRODUCT_NAME = linphone; - SDKROOT = iphoneos; SKIP_INSTALL = NO; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; 228B19A61302902F00F154D3 /* DistributionAdhoc */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; - GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ""; - LINK_WITH_STANDARD_LIBRARIES = YES; PROVISIONING_PROFILE = "B8ED8915-B69D-40DA-9B89-1700C44B156B"; SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = DistributionAdhoc; }; @@ -4516,13 +4477,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_ENTITLEMENTS = untitled.plist; + CODE_SIGN_ENTITLEMENTS = ""; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -4533,8 +4491,6 @@ HAVE_X264, HAVE_SILK, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -4548,12 +4504,12 @@ classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", @@ -4563,10 +4519,7 @@ "-Objc", ); PRODUCT_NAME = linphone; - SDKROOT = iphoneos; SKIP_INSTALL = NO; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; }; name = DistributionAdhoc; }; @@ -4574,13 +4527,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -4589,8 +4538,6 @@ IN_LINPHONE, VIDEO_ENABLED, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -4604,12 +4551,12 @@ classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", @@ -4619,10 +4566,7 @@ "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; - PROVISIONING_PROFILE = ""; - SDKROOT = iphoneos; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + SKIP_INSTALL = NO; }; name = Debug; }; @@ -4630,13 +4574,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -4645,8 +4585,6 @@ IN_LINPHONE, VIDEO_ENABLED, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -4660,12 +4598,12 @@ classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", @@ -4675,10 +4613,7 @@ "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; - PROVISIONING_PROFILE = ""; - SDKROOT = iphoneos; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + SKIP_INSTALL = NO; }; name = Release; }; @@ -4686,14 +4621,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_ENTITLEMENTS = untitled.plist; - CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; + CODE_SIGN_ENTITLEMENTS = ""; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -4702,8 +4633,6 @@ IN_LINPHONE, VIDEO_ENABLED, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -4717,12 +4646,12 @@ classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", @@ -4732,10 +4661,7 @@ "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; - PROVISIONING_PROFILE = "075921BC-C7D8-42E1-B864-F05FD9BF841C"; - SDKROOT = iphoneos; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + SKIP_INSTALL = NO; }; name = Distribution; }; @@ -4743,14 +4669,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_ENTITLEMENTS = untitled.plist; - CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; + CODE_SIGN_ENTITLEMENTS = ""; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -4759,8 +4681,6 @@ IN_LINPHONE, VIDEO_ENABLED, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -4774,12 +4694,12 @@ classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", @@ -4789,27 +4709,29 @@ "-Objc", ); PRODUCT_NAME = "linphone-no-gpl-thirdparties"; - PROVISIONING_PROFILE = "7EBE410C-11B9-4346-9977-2C3BEE43ED16"; - SDKROOT = iphoneos; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; + SKIP_INSTALL = NO; }; name = DistributionAdhoc; }; 22F3D55513CC3C9100A0DA02 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ""; - LINK_WITH_STANDARD_LIBRARIES = YES; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; @@ -4817,13 +4739,9 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_IDENTITY = "iPhone Developer"; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -4834,8 +4752,6 @@ HAVE_X264, HAVE_SILK, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -4849,12 +4765,12 @@ classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", @@ -4864,28 +4780,29 @@ "-Objc", ); PRODUCT_NAME = linphone; - PROVISIONING_PROFILE = ""; - SDKROOT = iphoneos; SKIP_INSTALL = NO; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; 22F51EE7107FA53D00F98953 /* Distribution */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "iPhone Distribution: jehan monnier"; - GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ""; - LINK_WITH_STANDARD_LIBRARIES = YES; PROVISIONING_PROFILE = "075921BC-C7D8-42E1-B864-F05FD9BF841C"; SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Distribution; }; @@ -4893,13 +4810,10 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = ( - "$(ARCHS_STANDARD_32_BIT)", - armv6, - ); - CODE_SIGN_ENTITLEMENTS = untitled.plist; + CODE_SIGN_ENTITLEMENTS = ""; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; + GCC_C_LANGUAGE_STANDARD = c99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = s; GCC_PRECOMPILE_PREFIX_HEADER = YES; @@ -4910,8 +4824,6 @@ HAVE_X264, HAVE_SILK, ); - GCC_THUMB_SUPPORT = NO; - GCC_VERSION = com.apple.compilers.llvm.clang.1_0; HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, submodules/linphone/mediastreamer2/include, @@ -4925,12 +4837,12 @@ classes/Utils/XMLRPC/, ); INFOPLIST_FILE = "linphone-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ( "$(BUILT_PRODUCTS_DIR)", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins\"", "\"$(SRCROOT)/liblinphone-sdk/apple-darwin/lib\"", ); + LINK_WITH_STANDARD_LIBRARIES = YES; ORDER_FILE = ""; OTHER_LDFLAGS = ( "-force_load", @@ -4940,27 +4852,29 @@ "-Objc", ); PRODUCT_NAME = linphone; - SDKROOT = iphoneos; SKIP_INSTALL = NO; - STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; - TARGETED_DEVICE_FAMILY = "1,2"; }; name = Distribution; }; C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_32_BIT)"; + ARCHS = ( + "$(ARCHS_STANDARD_32_BIT)", + armv6, + ); CODE_SIGN_IDENTITY = "iPhone Developer"; - GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; + GCC_VERSION = com.apple.compilers.llvm.clang.1_0; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = ""; - IPHONEOS_DEPLOYMENT_TARGET = 3.1; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; LIBRARY_SEARCH_PATHS = ""; - LINK_WITH_STANDARD_LIBRARIES = YES; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; + STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; From c3f2b45e3ebf4debc61fd948e38f323ef2c038ab Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 6 Aug 2012 13:05:45 +0200 Subject: [PATCH 104/397] Fix table memory leak --- Classes/InCallTableViewController.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index 9b0e9f7d2..66956f91a 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -273,11 +273,11 @@ enum TableSection { return [[UIView alloc] initWithFrame:CGRectZero]; } } - return [[UIView alloc] initWithFrame:CGRectZero]; + return [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; } - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - return [[UIView alloc] initWithFrame:CGRectZero]; + return [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { From 06ed4eba0534778ab355400786bbb78968f4de0c Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 6 Aug 2012 16:44:37 +0200 Subject: [PATCH 105/397] Fix placeholder of Dialer view Fix callbar wrong button state Fix Incoming call view (only landscape on iPad) --- Classes/DialerViewController.xib | 10 ++-------- Classes/DialerViewController~ipad.xib | 3 ++- Classes/IncomingCallViewController.m | 2 +- Classes/LinphoneUI/UICallBar.m | 4 ++-- 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index acb4e8b52..0b5f30409 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -77,7 +77,7 @@ IBCocoaTouchFramework 0 - sip: + Enter sip address or phone number... 3 MQA @@ -606,6 +606,7 @@ {{214, 0}, {106, 69}} + _NS:9 NO IBCocoaTouchFramework @@ -1385,7 +1386,6 @@ addressField backButton callButton - cancelButton eightButton eraseButton fiveButton @@ -1409,7 +1409,6 @@ UIButton UICallButton UIButton - UIButton UIEraseButton UIButton UIButton @@ -1434,7 +1433,6 @@ addressField backButton callButton - cancelButton eightButton eraseButton fiveButton @@ -1472,10 +1470,6 @@ callButton UICallButton - - cancelButton - UIButton - eightButton UIButton diff --git a/Classes/DialerViewController~ipad.xib b/Classes/DialerViewController~ipad.xib index 09692def9..d8f7b2398 100644 --- a/Classes/DialerViewController~ipad.xib +++ b/Classes/DialerViewController~ipad.xib @@ -72,7 +72,7 @@ IBIPadFramework 0 - sip: + Enter sip address or phone number... 3 MQA @@ -603,6 +603,7 @@ {{126, 0}, {186, 85}} + _NS:9 NO IBIPadFramework diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 7ec92fa6b..19207b5fc 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -78,7 +78,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:nil tabBarEnabled:false fullscreen:false - landscapeMode:true + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 33638965c..3751dcdba 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -211,8 +211,8 @@ LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; [self callUpdate:call state:state]; - [optionsView setHidden:TRUE]; - [padView setHidden:TRUE]; + [self hideOptions]; + [self hidePad]; } - (void)viewWillDisappear:(BOOL)animated { From a630a0e6261fd0807a006ccc3d6ef5c3520a90c2 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 6 Aug 2012 16:44:54 +0200 Subject: [PATCH 106/397] Update linphone submodule --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index e6ef8b45a..54ec1064f 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit e6ef8b45a4d109f06b452276061303c0e2173dda +Subproject commit 54ec1064fdff1c56c796f0e25437c414e328e105 From dfa5e3ca0adbcabb76b818370d841a1210c68efd Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 6 Aug 2012 17:14:55 +0200 Subject: [PATCH 107/397] Fix archiving issue --- .../XMLRPC/XMLRPC.xcodeproj/project.pbxproj | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj index 109f3a548..aacacdabc 100755 --- a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj +++ b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj @@ -7,28 +7,28 @@ objects = { /* Begin PBXBuildFile section */ - 033836841527905D00EF8E8A /* NSData+Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 033836811527905D00EF8E8A /* NSData+Base64.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 033836841527905D00EF8E8A /* NSData+Base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 033836811527905D00EF8E8A /* NSData+Base64.h */; settings = {ATTRIBUTES = (); }; }; 033836861527905D00EF8E8A /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 033836821527905D00EF8E8A /* NSData+Base64.m */; }; - 2DCADEDB1529E24300B47A4F /* XMLRPCEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DCADED91529E06900B47A4F /* XMLRPCEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 903B0DC212F7581200BD6E09 /* NSStringAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5F80E33A659006453B4 /* NSStringAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2DCADEDB1529E24300B47A4F /* XMLRPCEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DCADED91529E06900B47A4F /* XMLRPCEncoder.h */; settings = {ATTRIBUTES = (); }; }; + 903B0DC212F7581200BD6E09 /* NSStringAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5F80E33A659006453B4 /* NSStringAdditions.h */; settings = {ATTRIBUTES = (); }; }; 903B0DC312F7581200BD6E09 /* NSStringAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C5F90E33A659006453B4 /* NSStringAdditions.m */; }; - 903B0DC412F7581200BD6E09 /* XMLRPCConnectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 07452BE20E469C9000A57686 /* XMLRPCConnectionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 903B0DC512F7581200BD6E09 /* XMLRPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FA0E33A659006453B4 /* XMLRPC.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 903B0DC612F7581200BD6E09 /* XMLRPCConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FB0E33A659006453B4 /* XMLRPCConnection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC412F7581200BD6E09 /* XMLRPCConnectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 07452BE20E469C9000A57686 /* XMLRPCConnectionDelegate.h */; settings = {ATTRIBUTES = (); }; }; + 903B0DC512F7581200BD6E09 /* XMLRPC.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FA0E33A659006453B4 /* XMLRPC.h */; settings = {ATTRIBUTES = (); }; }; + 903B0DC612F7581200BD6E09 /* XMLRPCConnection.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FB0E33A659006453B4 /* XMLRPCConnection.h */; settings = {ATTRIBUTES = (); }; }; 903B0DC712F7581200BD6E09 /* XMLRPCConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C5FC0E33A659006453B4 /* XMLRPCConnection.m */; }; - 903B0DC812F7581200BD6E09 /* XMLRPCConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 075137F90E429E560019E4F6 /* XMLRPCConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DC812F7581200BD6E09 /* XMLRPCConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 075137F90E429E560019E4F6 /* XMLRPCConnectionManager.h */; settings = {ATTRIBUTES = (); }; }; 903B0DC912F7581200BD6E09 /* XMLRPCConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 075137FA0E429E560019E4F6 /* XMLRPCConnectionManager.m */; }; - 903B0DCA12F7581200BD6E09 /* XMLRPCDefaultEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FF0E33A659006453B4 /* XMLRPCDefaultEncoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DCA12F7581200BD6E09 /* XMLRPCDefaultEncoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C5FF0E33A659006453B4 /* XMLRPCDefaultEncoder.h */; settings = {ATTRIBUTES = (); }; }; 903B0DCB12F7581200BD6E09 /* XMLRPCDefaultEncoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6000E33A659006453B4 /* XMLRPCDefaultEncoder.m */; }; - 903B0DCC12F7581200BD6E09 /* XMLRPCEventBasedParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 07EF45390E721A5D009F2708 /* XMLRPCEventBasedParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DCC12F7581200BD6E09 /* XMLRPCEventBasedParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 07EF45390E721A5D009F2708 /* XMLRPCEventBasedParser.h */; settings = {ATTRIBUTES = (); }; }; 903B0DCD12F7581200BD6E09 /* XMLRPCEventBasedParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 07EF453A0E721A5D009F2708 /* XMLRPCEventBasedParser.m */; }; - 903B0DCE12F7581200BD6E09 /* XMLRPCEventBasedParserDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0707047610114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DCE12F7581200BD6E09 /* XMLRPCEventBasedParserDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0707047610114B9400CB7702 /* XMLRPCEventBasedParserDelegate.h */; settings = {ATTRIBUTES = (); }; }; 903B0DCF12F7581200BD6E09 /* XMLRPCEventBasedParserDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0707047710114B9400CB7702 /* XMLRPCEventBasedParserDelegate.m */; }; - 903B0DD012F7581200BD6E09 /* XMLRPCRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6010E33A659006453B4 /* XMLRPCRequest.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DD012F7581200BD6E09 /* XMLRPCRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6010E33A659006453B4 /* XMLRPCRequest.h */; settings = {ATTRIBUTES = (); }; }; 903B0DD112F7581200BD6E09 /* XMLRPCRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6020E33A659006453B4 /* XMLRPCRequest.m */; }; - 903B0DD212F7581200BD6E09 /* XMLRPCResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6030E33A659006453B4 /* XMLRPCResponse.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DD212F7581200BD6E09 /* XMLRPCResponse.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6030E33A659006453B4 /* XMLRPCResponse.h */; settings = {ATTRIBUTES = (); }; }; 903B0DD312F7581200BD6E09 /* XMLRPCResponse.m in Sources */ = {isa = PBXBuildFile; fileRef = 07B0C6040E33A659006453B4 /* XMLRPCResponse.m */; }; - 903B0DD412F7581F00BD6E09 /* XMLRPC.pch in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6160E33A672006453B4 /* XMLRPC.pch */; settings = {ATTRIBUTES = (Public, ); }; }; + 903B0DD412F7581F00BD6E09 /* XMLRPC.pch in Headers */ = {isa = PBXBuildFile; fileRef = 07B0C6160E33A672006453B4 /* XMLRPC.pch */; settings = {ATTRIBUTES = (); }; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ From 7ec503605817d4d9cee2c501702d444e7b25c80a Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 7 Aug 2012 17:17:02 +0200 Subject: [PATCH 108/397] Add APN in register Fix application startup Modify background_mode behaviour in settings Change behaviour of sip normalization --- Classes/LinphoneAppDelegate.m | 25 +++++++++++-- Classes/LinphoneCoreSettingsStore.h | 3 +- Classes/LinphoneCoreSettingsStore.m | 26 +++++++++++--- Classes/LinphoneManager.h | 1 + Classes/LinphoneManager.m | 37 ++++++++++++++------ Classes/SettingsViewController.m | 16 ++++++++- Classes/Utils/FastAddressBook.m | 2 +- Settings/InAppSettings.bundle/Advanced.plist | 8 ++--- untitled.plist | 8 ----- 9 files changed, 94 insertions(+), 32 deletions(-) delete mode 100644 untitled.plist diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index ec89ddc2d..4e731bc61 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -25,7 +25,6 @@ #import "CoreTelephony/CTCall.h" #import "ConsoleViewController.h" -#import "MoreViewController.h" #import "LinphoneCoreSettingsStore.h" #include "LinphoneManager.h" @@ -118,7 +117,8 @@ int __aeabi_idiv(int a, int b) { - (void)applicationDidBecomeActive:(UIApplication *)application { if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground - && ![[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]) { + && (![[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"] || + ![[NSUserDefaults standardUserDefaults] boolForKey:@"backgroundmode_preference"])) { // autoboot disabled, doing nothing return; } @@ -199,7 +199,8 @@ int __aeabi_idiv(int a, int b) { if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground - && ![[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]) { + && (![[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"] || + ![[NSUserDefaults standardUserDefaults] boolForKey:@"backgroundmode_preference"])) { // autoboot disabled, doing nothing } else { [self startApplication]; @@ -228,6 +229,10 @@ int __aeabi_idiv(int a, int b) { - (void)applicationWillTerminate:(UIApplication *)application { } +- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { + //NSLog(@"%@", userInfo); +} + - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { if([notification.userInfo objectForKey:@"call"] != nil) { LinphoneCall* call; @@ -247,4 +252,18 @@ int __aeabi_idiv(int a, int b) { } } + +#pragma mark - PushNotification Functions + +- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { + [LinphoneLogger log:LinphoneLoggerDebug format:@"PushNotification: Token %@", deviceToken]; + //NSLog(@"%@", deviceToken); + [[LinphoneManager instance] setPushNotificationToken:deviceToken]; +} + +- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error { + [LinphoneLogger log:LinphoneLoggerDebug format:@"PushNotification: Error %@", error]; + [[LinphoneManager instance] setPushNotificationToken:nil]; +} + @end diff --git a/Classes/LinphoneCoreSettingsStore.h b/Classes/LinphoneCoreSettingsStore.h index fd6c162f7..ab6b214c8 100644 --- a/Classes/LinphoneCoreSettingsStore.h +++ b/Classes/LinphoneCoreSettingsStore.h @@ -27,6 +27,7 @@ NSDictionary *changedDict; } --(void) transformLinphoneCoreToKeys; +- (void)synchronizeAccount; +- (void)transformLinphoneCoreToKeys; @end diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 23e303f35..2bc8bece6 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -182,12 +182,16 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference", 0) forKey:@"debugenable_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference", 0) forKey:@"check_config_disable_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","wifi_only_preference", 0) forKey:@"wifi_only_preference"]; - [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","backgroundmode_preference", TRUE) forKey:@"backgroundmode_preference"]; + /*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/ BOOL start_at_boot = TRUE; if ([[NSUserDefaults standardUserDefaults] objectForKey:@"start_at_boot_preference"]!=Nil) - start_at_boot=[[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]; + start_at_boot = [[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"]; [self setBool: start_at_boot forKey:@"start_at_boot_preference"]; + BOOL background_mode = TRUE; + if ([[NSUserDefaults standardUserDefaults] objectForKey:@"backgroundmode_preference"]!=Nil) + background_mode =[[NSUserDefaults standardUserDefaults] boolForKey:@"backgroundmode_preference"]; + [self setBool: background_mode forKey:@"backgroundmode_preference"]; if (linphone_core_tunnel_available()){ /*FIXME: enhance linphonecore API to handle tunnel more easily in applications */ @@ -349,7 +353,19 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); linphone_proxy_config_set_dial_prefix(proxyCfg, [prefix cStringUsingEncoding:[NSString defaultCStringEncoding]]); } linphone_proxy_config_set_dial_escape_plus(proxyCfg,substitute_plus_by_00); - + + //Add custom parameter + NSData *tokenData = [[LinphoneManager instance] pushNotificationToken]; + if(tokenData != nil) { + const unsigned char *tokenBuffer = [tokenData bytes]; + NSMutableString *tokenString = [NSMutableString stringWithCapacity:[tokenData length]*2]; + for(int i = 0; i < [tokenData length]; ++i) { + [tokenString appendFormat:@"%02X", (unsigned int)tokenBuffer[i]]; + } + linphone_proxy_config_set_contact_parameters(proxyCfg, [[NSString stringWithFormat:@"APN=%@", tokenString] UTF8String]); + } + + linphone_core_add_proxy_config(lc,proxyCfg); //set to default proxy linphone_core_set_default_proxy(lc,proxyCfg); @@ -463,7 +479,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); /*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/ BOOL start_at_boot = [self boolForKey:@"start_at_boot_preference"]; [[NSUserDefaults standardUserDefaults] setBool: start_at_boot forKey:@"start_at_boot_preference"]; - + BOOL background_mode = [self boolForKey:@"backgroundmode_preference"]; + [[NSUserDefaults standardUserDefaults] setBool: background_mode forKey:@"backgroundmode_preference"]; + // Force synchronize [[NSUserDefaults standardUserDefaults] synchronize]; diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 34a82c210..b2b3dcabd 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -106,6 +106,7 @@ typedef struct _LinphoneCallAppData { @property (readonly) const char* frontCamId; @property (readonly) const char* backCamId; @property (readonly) sqlite3* database; +@property (nonatomic, retain) NSData *pushNotificationToken; @end diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index d1b400faa..d2a7408f0 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -67,6 +67,7 @@ extern void libmsbcg729_init(); @synthesize settingsStore; @synthesize database; @synthesize fastAddressBook; +@synthesize pushNotificationToken; struct codec_name_pref_table{ const char *name; @@ -706,15 +707,10 @@ static LinphoneCoreVTable linphonec_vtable = { } - (void)becomeActive { - if (theLinphoneCore == nil) { - //back from standby and background mode is disabled - [self startLibLinphone]; - } else { - [self refreshRegisters]; - } + [self refreshRegisters]; + /*IOS specific*/ linphone_core_start_dtmf_stream(theLinphoneCore); - } - (void)beginInterruption { @@ -767,16 +763,17 @@ static LinphoneCoreVTable linphonec_vtable = { } - (BOOL)isSpeakerEnabled { + bool enabled = false; CFStringRef lNewRoute = CFSTR("Unknown"); UInt32 lNewRouteSize = sizeof(lNewRoute); OSStatus lStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &lNewRouteSize, &lNewRoute); if (!lStatus && lNewRouteSize > 0) { NSString *route = (NSString *) lNewRoute; [LinphoneLogger logc:LinphoneLoggerLog format:"Current audio route is [%s]", [route cStringUsingEncoding:[NSString defaultCStringEncoding]]]; - return [route isEqualToString: @"Speaker"] || [route isEqualToString: @"SpeakerAndMicrophone"]; - } else { - return false; + enabled = [route isEqualToString: @"Speaker"] || [route isEqualToString: @"SpeakerAndMicrophone"]; + CFRelease(lNewRoute); } + return enabled; } @@ -852,4 +849,24 @@ static LinphoneCoreVTable linphonec_vtable = { linphone_call_params_destroy(lcallParams); } + +#pragma mark - Property Functions + +- (void)setPushNotificationToken:(NSData *)apushNotificationToken { + if(apushNotificationToken == pushNotificationToken) { + return; + } + if(pushNotificationToken != nil) { + [pushNotificationToken release]; + pushNotificationToken = nil; + } + + if(apushNotificationToken != nil) { + pushNotificationToken = [apushNotificationToken retain]; + } + if([LinphoneManager isLcReady]) { + [(LinphoneCoreSettingsStore*)settingsStore synchronizeAccount]; + } +} + @end diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 91ea51d15..29b9f2460 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -421,7 +421,7 @@ static UICompositeViewDescription *compositeDescription = nil; [hiddenKeys removeObject:@"video_menu"]; } [settingsController setHiddenKeys:hiddenKeys animated:TRUE]; - }else if([@"random_port_preference" compare: notif.object] == NSOrderedSame) { + } else if ([@"random_port_preference" compare: notif.object] == NSOrderedSame) { BOOL enable = [[notif.userInfo objectForKey:@"random_port_preference"] boolValue]; NSMutableSet *hiddenKeys = [NSMutableSet setWithSet:[settingsController hiddenKeys]]; if(enable) { @@ -430,6 +430,15 @@ static UICompositeViewDescription *compositeDescription = nil; [hiddenKeys removeObject:@"port_preference"]; } [settingsController setHiddenKeys:hiddenKeys animated:TRUE]; + } else if ([@"backgroundmode_preference" compare: notif.object] == NSOrderedSame) { + BOOL enable = [[notif.userInfo objectForKey:@"backgroundmode_preference"] boolValue]; + NSMutableSet *hiddenKeys = [NSMutableSet setWithSet:[settingsController hiddenKeys]]; + if(!enable) { + [hiddenKeys addObject:@"start_at_boot_preference"]; + } else { + [hiddenKeys removeObject:@"start_at_boot_preference"]; + } + [settingsController setHiddenKeys:hiddenKeys animated:TRUE]; } } @@ -454,6 +463,11 @@ static UICompositeViewDescription *compositeDescription = nil; UIDevice* device = [UIDevice currentDevice]; if (![device respondsToSelector:@selector(isMultitaskingSupported)] || ![device isMultitaskingSupported]) { [hiddenKeys addObject:@"backgroundmode_preference"]; + [hiddenKeys addObject:@"start_at_boot_preference"]; + } else { + if(![[[[LinphoneManager instance] settingsStore] objectForKey:@"backgroundmode_preference"] boolValue]) { + [hiddenKeys addObject:@"start_at_boot_preference"]; + } } [hiddenKeys addObject:@"enable_first_login_view_preference"]; diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index c25c0e9d7..771fa1c8e 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -68,7 +68,7 @@ + (NSString*)normalizeSipURI:(NSString*)address { NSString* ret = address; - if(![address hasPrefix:@"sip:"]) { + if([address rangeOfString:@"@"].location != NSNotFound && ![address hasPrefix:@"sip:"]) { ret = [@"sip:" stringByAppendingString:ret]; } return ret; diff --git a/Settings/InAppSettings.bundle/Advanced.plist b/Settings/InAppSettings.bundle/Advanced.plist index 13eecede9..4218c07f4 100644 --- a/Settings/InAppSettings.bundle/Advanced.plist +++ b/Settings/InAppSettings.bundle/Advanced.plist @@ -40,9 +40,9 @@ DefaultValue Key - start_at_boot_preference + backgroundmode_preference Title - Start at boot + Background mode Type PSToggleSwitchSpecifier @@ -50,9 +50,9 @@ DefaultValue Key - backgroundmode_preference + start_at_boot_preference Title - Background mode + Start at boot Type PSToggleSwitchSpecifier diff --git a/untitled.plist b/untitled.plist deleted file mode 100644 index ce373e19b..000000000 --- a/untitled.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - get-task-allow - - - From 6dcfbf08147ab80f17992d8e227c31824defda21 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 7 Aug 2012 18:07:49 +0200 Subject: [PATCH 109/397] Fix Camera orientation when orientation is forced --- Classes/InCallViewController.m | 37 ++++++++----------- .../LinphoneUI/UICompositeViewController.h | 3 +- .../LinphoneUI/UICompositeViewController.m | 11 ++++-- Classes/PhoneMainView.m | 4 ++ submodules/linphone | 2 +- 5 files changed, 30 insertions(+), 27 deletions(-) diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 4a8e3442f..2a3bbe6bd 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -127,10 +127,6 @@ static UICompositeViewDescription *compositeDescription = nil; [[NSNotificationCenter defaultCenter] removeObserver:self name:@"LinphoneCallUpdate" object:nil]; - - [[NSNotificationCenter defaultCenter] removeObserver:self - name:UIDeviceOrientationDidChangeNotification - object:nil]; } - (void)viewWillAppear:(BOOL)animated { @@ -145,16 +141,11 @@ static UICompositeViewDescription *compositeDescription = nil; name:@"LinphoneCallUpdate" object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self - selector:@selector(orientationChanged:) - name:UIDeviceOrientationDidChangeNotification - object:nil]; - // Update on show LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; [self callUpdate:call state:state animated:FALSE]; - [self orientationUpdate]; + [self orientationUpdate:[PhoneMainView instance].interfaceOrientation]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { [callTableController viewDidAppear:animated]; @@ -196,7 +187,13 @@ static UICompositeViewDescription *compositeDescription = nil; } +- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self orientationUpdate:toInterfaceOrientation]; +} + - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; CGRect frame = [videoPreview frame]; switch (toInterfaceOrientation) { case UIInterfaceOrientationPortrait: @@ -217,25 +214,25 @@ static UICompositeViewDescription *compositeDescription = nil; [videoPreview setFrame:frame]; } + #pragma mark - -- (void)orientationUpdate { +- (void)orientationUpdate:(UIInterfaceOrientation)orientation { int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]); - UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; int newRotation = 0; switch (orientation) { - case UIDeviceOrientationPortrait: + case UIInterfaceOrientationPortrait: newRotation = 0; break; - case UIDeviceOrientationPortraitUpsideDown: + case UIInterfaceOrientationPortraitUpsideDown: newRotation = 180; break; - case UIDeviceOrientationLandscapeRight: - newRotation = 90; - break; - case UIDeviceOrientationLandscapeLeft: + case UIInterfaceOrientationLandscapeRight: newRotation = 270; break; + case UIInterfaceOrientationLandscapeLeft: + newRotation = 90; + break; default: newRotation = oldLinphoneOrientation; } @@ -477,10 +474,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { #pragma mark - Event Functions -- (void)orientationChanged:(NSNotification*) notif { - [self orientationUpdate]; -} - - (void)callUpdateEvent: (NSNotification*) notif { LinphoneCall *call = [[notif.userInfo objectForKey: @"call"] pointerValue]; LinphoneCallState state = [[notif.userInfo objectForKey: @"state"] intValue]; diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index f4ad7f907..98e59a478 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -76,7 +76,7 @@ UICompositeViewDescription *currentViewDescription; CATransition *viewTransition; - UIDeviceOrientation currentOrientation; + UIInterfaceOrientation currentOrientation; } @property (retain) CATransition *viewTransition; @@ -90,5 +90,6 @@ - (void)setStateBarHidden:(BOOL) hidden; - (void)setToolBarHidden:(BOOL) hidden; - (UIViewController *)getCurrentViewController; +- (UIInterfaceOrientation)currentOrientation; @end diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 2068160e1..57ef2eef2 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -93,7 +93,7 @@ - (void)initUICompositeViewController { self->viewControllerCache = [[NSMutableDictionary alloc] init]; - self->currentOrientation = UIDeviceOrientationUnknown; + currentOrientation = UIDeviceOrientationUnknown; } - (id)init{ @@ -219,6 +219,10 @@ #pragma mark - +- (UIInterfaceOrientation)currentOrientation { + return currentOrientation; +} + + (void)addSubView:(UIViewController*)controller view:(UIView*)view { if(controller != nil) { if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { @@ -379,9 +383,10 @@ UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]]; if(currentOrientation != correctOrientation) { [PhoneMainView forceOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown]; + currentOrientation = correctOrientation; + } else { + [self updateInterfaceOrientation:correctOrientation]; } - currentOrientation = correctOrientation; - [self updateInterfaceOrientation:correctOrientation]; } else { oldViewDescription = (currentViewDescription != nil)? [currentViewDescription copy]: nil; } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 3b49f4320..cc510e626 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -235,6 +235,10 @@ static PhoneMainView* phoneMainViewInstance=nil; [mainViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; } +- (UIInterfaceOrientation)interfaceOrientation { + return [mainViewController currentOrientation]; +} + #pragma mark - Event Functions diff --git a/submodules/linphone b/submodules/linphone index 54ec1064f..e93d9096f 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 54ec1064fdff1c56c796f0e25437c414e328e105 +Subproject commit e93d9096ff433d3195c177e4c767881406e71d88 From 615f9192d5756e74162212671be459bf232e7dcd Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 7 Aug 2012 18:19:50 +0200 Subject: [PATCH 110/397] Fix sip normalization with non lower case sip prefix --- Classes/Utils/FastAddressBook.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index 771fa1c8e..04ff318d5 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -68,7 +68,11 @@ + (NSString*)normalizeSipURI:(NSString*)address { NSString* ret = address; - if([address rangeOfString:@"@"].location != NSNotFound && ![address hasPrefix:@"sip:"]) { + if([address rangeOfString:@"@"].location != NSNotFound) { + if([address rangeOfString:@"sip:" options:NSCaseInsensitiveSearch].location == 0) { + // have to be sure that start with sip: in lower case + ret = [ret substringFromIndex:4]; + } ret = [@"sip:" stringByAppendingString:ret]; } return ret; From 1253594c966cece8af1666b8425432231a577962 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 7 Aug 2012 18:25:11 +0200 Subject: [PATCH 111/397] Remove animation at startup --- Classes/LinphoneUI/UICompositeViewController.m | 1 - 1 file changed, 1 deletion(-) diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 57ef2eef2..a27966eea 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -151,7 +151,6 @@ [tabBarViewController viewWillAppear:animated]; [stateBarViewController viewWillAppear:animated]; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; - currentOrientation = [[UIDevice currentDevice] orientation]; } - (void)viewDidAppear:(BOOL)animated { From b751138df04a91b5a5bd212b20c573875996af25 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 7 Aug 2012 18:45:29 +0200 Subject: [PATCH 112/397] Add alphabetical scroll bar in contacts view --- Classes/ContactsTableViewController.m | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 1ea4084ef..4f5cd356b 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -154,6 +154,10 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf #pragma mark - UITableViewDataSource Functions +- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView { + return [addressBookMap allKeys]; +} + - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [addressBookMap count]; } From 60a08f2bfd6538813825e108c721931c88d2d980 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 8 Aug 2012 16:22:52 +0200 Subject: [PATCH 113/397] Improve APN --- Classes/LinphoneCoreSettingsStore.m | 3 ++- Resources/en.lproj/Localizable.strings | Bin 5708 -> 5782 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 2bc8bece6..dc3e2be4c 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -362,7 +362,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); for(int i = 0; i < [tokenData length]; ++i) { [tokenString appendFormat:@"%02X", (unsigned int)tokenBuffer[i]]; } - linphone_proxy_config_set_contact_parameters(proxyCfg, [[NSString stringWithFormat:@"APN=%@", tokenString] UTF8String]); + NSString *params = [NSString stringWithFormat:@"APN-TOK=%@;APN-MSG=IC_MSG;APN-SND=oldphone-mono-30s.caf", tokenString]; + linphone_proxy_config_set_contact_parameters(proxyCfg, [params UTF8String]); } diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index 43899b43f750d6e1a166be433473903483f7d48a..a0682f3c400d9daceb885ea83bc2c69efcdc0ab2 100644 GIT binary patch delta 82 zcmX@3Gfj7ckC>MdgC~PCLp*~oLokCogA#)RgDnt)MDrMu8S)u&88U&abf8!=Ln1>C Y5GpXFF%*Gi6c|()9Dr)A8MuHD0E(*(hX4Qo delta 7 OcmbQHdq!u2j~D<9nF7uL From 85b809f2c554f9089ad1276e9a0482b2f475b0d9 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 8 Aug 2012 16:58:55 +0200 Subject: [PATCH 114/397] Fix keyboard auto correction for contact views Fix contact without first name enhance contact first name / last name sizes --- Classes/LinphoneUI/UIContactCell.m | 37 +++++++++++---------- Classes/LinphoneUI/UIContactCell.xib | 29 ++++++++-------- Classes/LinphoneUI/UIContactDetailsHeader.m | 3 ++ 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index 2f1374df1..8e087186a 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -79,7 +79,7 @@ CFStringRef lFirstName = ABRecordCopyValue(contact, kABPersonFirstNameProperty); CFStringRef lLocalizedFirstName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lFirstName):nil; CFStringRef lLastName = ABRecordCopyValue(contact, kABPersonLastNameProperty); - CFStringRef lLocalizedLastName = (lFirstName != nil)?ABAddressBookCopyLocalizedLabel(lLastName):nil; + CFStringRef lLocalizedLastName = (lLastName != nil)?ABAddressBookCopyLocalizedLabel(lLastName):nil; if(lLocalizedFirstName != nil) [firstNameLabel setText: (NSString *)lLocalizedFirstName]; @@ -99,33 +99,34 @@ CFRelease(lLocalizedFirstName); if(lFirstName != nil) CFRelease(lFirstName); - - // Avatar - /*UIImage *image = [FastAddressBook getContactImage:contact thumbnail:true]; - if(image == nil) { - image = [UIImage imageNamed:@"avatar_unknown_small.png"]; - } - [avatarImage setImage:image];*/ - +} + +- (void)layoutSubviews { + [super layoutSubviews]; // // Adapt size // CGRect firstNameFrame = [firstNameLabel frame]; CGRect lastNameFrame = [lastNameLabel frame]; - lastNameFrame.origin.x -= firstNameFrame.size.width; - // Compute firstName size - CGSize contraints; - contraints.height = [firstNameLabel frame].size.height; - contraints.width = ([lastNameLabel frame].size.width + [lastNameLabel frame].origin.x) - [firstNameLabel frame].origin.x; - CGSize firstNameSize = [[firstNameLabel text] sizeWithFont:[firstNameLabel font] constrainedToSize: contraints]; + CGSize firstNameSize = [[firstNameLabel text] sizeWithFont:[firstNameLabel font]]; + CGSize lastNameSize = [[lastNameLabel text] sizeWithFont:[firstNameLabel font]]; + float sum = firstNameSize.width + 5 + lastNameSize.width; + float limit = self.bounds.size.width - 5 - firstNameFrame.origin.x; + if(sum >limit) { + firstNameSize.width *= limit/sum; + lastNameSize.width *= limit/sum; + } + firstNameFrame.size.width = firstNameSize.width; + lastNameFrame.size.width = lastNameSize.width; // Compute lastName size & position - lastNameFrame.origin.x += firstNameFrame.size.width; - lastNameFrame.size.width = (contraints.width + [firstNameLabel frame].origin.x) - lastNameFrame.origin.x; - + lastNameFrame.origin.x = firstNameFrame.origin.x + firstNameFrame.size.width; + if(firstNameFrame.size.width) + lastNameFrame.origin.x += 5; + [firstNameLabel setFrame: firstNameFrame]; [lastNameLabel setFrame: lastNameFrame]; } diff --git a/Classes/LinphoneUI/UIContactCell.xib b/Classes/LinphoneUI/UIContactCell.xib index 3a2893e5d..5fdff6747 100644 --- a/Classes/LinphoneUI/UIContactCell.xib +++ b/Classes/LinphoneUI/UIContactCell.xib @@ -3,18 +3,18 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 - IBUIImageView - IBUIView - IBUILabel IBProxyObject + IBUIImageView + IBUILabel + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -34,11 +34,11 @@ - 292 + 274 - 292 + 300 {{6, 6}, {32, 32}} @@ -55,6 +55,10 @@ _NS:328 + + 3 + MCAwAA + NO YES 7 @@ -77,7 +81,6 @@ 25 16 - NO @@ -85,7 +88,9 @@ {{111, 0}, {200, 44}} + _NS:328 + NO YES 7 @@ -108,7 +113,6 @@ 25 16 - NO {320, 44} @@ -116,10 +120,7 @@ _NS:9 - - 3 - MCAwAA - + IBCocoaTouchFramework @@ -254,6 +255,6 @@ YES 3 - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 2ca7037a9..48ead3574 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -170,6 +170,9 @@ UIEditableTableViewCell *cell = [atableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { cell = [[[UIEditableTableViewCell alloc] initWithStyle:UITableViewCellStyleValue2 reuseIdentifier:kCellId] autorelease]; + [cell.detailTextField setAutocapitalizationType:UITextAutocapitalizationTypeWords]; + [cell.detailTextField setAutocorrectionType:UITextAutocorrectionTypeNo]; + [cell.detailTextField setKeyboardType:UIKeyboardTypeDefault]; } ABPropertyID property = [[propertyList objectAtIndex:[indexPath row]] intValue]; From bd7c9e9cae0f990a623adcae1bab30b07424a87c Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 8 Aug 2012 18:01:21 +0200 Subject: [PATCH 115/397] Update i18n --- Classes/ContactDetailsTableViewController.m | 8 +++---- Classes/FirstLoginViewController.m | 8 ------- Classes/HistoryDetailsViewController.m | 14 ++++++------ Classes/LinphoneCoreSettingsStore.m | 1 + Classes/LinphoneUI/UIContactDetailsHeader.m | 4 ++-- Classes/WizardViewController.m | 24 ++++++++++---------- Resources/en.lproj/Localizable.strings | Bin 5782 -> 13084 bytes 7 files changed, 26 insertions(+), 33 deletions(-) diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index cc6f57bc8..ecc513ff6 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -408,10 +408,10 @@ [cell.detailTextField setText:value]; if ([indexPath section] == 0) { [cell.detailTextField setKeyboardType:UIKeyboardTypePhonePad]; - [cell.detailTextField setPlaceholder:@"Phone number"]; + [cell.detailTextField setPlaceholder:NSLocalizedString(@"Phone number", nil)]; } else { [cell.detailTextField setKeyboardType:UIKeyboardTypeASCIICapable]; - [cell.detailTextField setPlaceholder:@"SIP address"]; + [cell.detailTextField setPlaceholder:NSLocalizedString(@"SIP address", nil)]; } return cell; } @@ -567,9 +567,9 @@ - (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { if(section == 0) { - return nil; + return NSLocalizedString(@"Phone number", nil); } else { - return @"SIP"; + return NSLocalizedString(@"SIP", nil); } } diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index c5c02ef0f..38f93cf6a 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -135,15 +135,7 @@ static UICompositeViewDescription *compositeDescription = nil; } case LinphoneRegistrationFailed: { [waitView setHidden:true]; - //default behavior if no registration delegates - /*UIAlertView* error = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"Registration failure for user %@", usernameField.text] - message:[notif.userInfo objectForKey: @"message"] - delegate:nil - cancelButtonTitle:@"Continue" - otherButtonTitles:nil,nil]; - [error show]; - [error release];*/ //erase uername passwd [[LinphoneManager instance].settingsStore setObject:Nil forKey:@"username_preference"]; [[LinphoneManager instance].settingsStore setObject:Nil forKey:@"password_preference"]; diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index bc171e708..56941f55a 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -186,7 +186,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Set Address if(address == nil) { - address = @"Unknown"; + address = NSLocalizedString(@"Unknown", nil); } [addressLabel setText:address]; @@ -200,21 +200,21 @@ static UICompositeViewDescription *compositeDescription = nil; // State NSMutableString *state = [NSMutableString string]; if (callLog->dir == LinphoneCallIncoming) { - [state setString:@"Incoming call"]; + [state setString:NSLocalizedString(@"Incoming call", nil)]; } else { - [state setString:@"Outgoing call"]; + [state setString:NSLocalizedString(@"Outgoing call", nil)]; } switch (callLog->status) { case LinphoneCallSuccess: break; case LinphoneCallAborted: - [state appendString:@" (Aborted)"]; + [state appendString:NSLocalizedString(@" (Aborted)", nil)]; break; case LinphoneCallMissed: - [state appendString:@" (Missed)"]; + [state appendString:NSLocalizedString(@" (Missed)", nil)]; break; - case LinphoneCallDeclined : - [state appendString:@" (Declined)"]; + case LinphoneCallDeclined: + [state appendString:NSLocalizedString(@" (Declined)", nil)]; break; } [typeLabel setText:state]; diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index dc3e2be4c..2931fba38 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -362,6 +362,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); for(int i = 0; i < [tokenData length]; ++i) { [tokenString appendFormat:@"%02X", (unsigned int)tokenBuffer[i]]; } + // NSLocalizedString(@"IC_MSG", nil); // Fake NSString *params = [NSString stringWithFormat:@"APN-TOK=%@;APN-MSG=IC_MSG;APN-SND=oldphone-mono-30s.caf", tokenString]; linphone_proxy_config_set_contact_parameters(proxyCfg, [params UTF8String]); } diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 48ead3574..10650d957 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -177,9 +177,9 @@ ABPropertyID property = [[propertyList objectAtIndex:[indexPath row]] intValue]; if(property == kABPersonFirstNameProperty) { - [cell.detailTextField setPlaceholder:@"First name"]; + [cell.detailTextField setPlaceholder:NSLocalizedString(@"First name", nil)]; } else if (property == kABPersonLastNameProperty) { - [cell.detailTextField setPlaceholder:@"Last name"]; + [cell.detailTextField setPlaceholder:NSLocalizedString(@"Last name", nil)]; } [cell.detailTextField setKeyboardType:UIKeyboardTypeDefault]; if(contact) { diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 82defa8c5..3049e127f 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -313,7 +313,6 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)registrationUpdate:(LinphoneRegistrationState)state { switch (state) { case LinphoneRegistrationOk: { - [[LinphoneManager instance].settingsStore setBool:false forKey:@"enable_first_login_view_preference"]; [waitView setHidden:true]; [[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]]; break; @@ -407,20 +406,21 @@ static UICompositeViewDescription *compositeDescription = nil; NSMutableString *errors = [NSMutableString string]; if ([username length] < LINPHONE_WIZARD_MIN_USERNAME_LENGTH) { - [errors appendString:[NSString stringWithFormat:@"The username is too short (minimum %d characters).\n", LINPHONE_WIZARD_MIN_USERNAME_LENGTH]]; + + [errors appendString:[NSString stringWithFormat:NSLocalizedString(@"The username is too short (minimum %d characters).\n", nil), LINPHONE_WIZARD_MIN_USERNAME_LENGTH]]; } if ([password length] < LINPHONE_WIZARD_MIN_PASSWORD_LENGTH) { - [errors appendString:[NSString stringWithFormat:@"The password is too short (minimum %d characters).\n", LINPHONE_WIZARD_MIN_PASSWORD_LENGTH]]; + [errors appendString:[NSString stringWithFormat:NSLocalizedString(@"The password is too short (minimum %d characters).\n", nil), LINPHONE_WIZARD_MIN_PASSWORD_LENGTH]]; } if (![password2 isEqualToString:password]) { - [errors appendString:@"The passwords are different.\n"]; + [errors appendString:NSLocalizedString(@"The passwords are different.\n", nil)]; } NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", @".+@.+\\.[A-Za-z]{2}[A-Za-z]*"]; if(![emailTest evaluateWithObject:email]) { - [errors appendString:@"The email is invalid.\n"]; + [errors appendString:NSLocalizedString(@"The email is invalid.\n", nil)]; } if([errors length]) { @@ -507,7 +507,7 @@ static UICompositeViewDescription *compositeDescription = nil; [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC %@: %@", [request method], [response body]]; [waitView setHidden:true]; if ([response isFault]) { - NSString *errorString = [NSString stringWithFormat:@"Can't create account: Communication issue (%@)", [response faultString]]; + NSString *errorString = [NSString stringWithFormat:NSLocalizedString(@"Can't create account: Communication issue (%@)", nil), [response faultString]]; UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue",nil) message:errorString delegate:nil @@ -519,7 +519,7 @@ static UICompositeViewDescription *compositeDescription = nil; if([[request method] isEqualToString:@"check_account"]) { if([response object] == [NSNumber numberWithInt:1]) { UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Check issue",nil) - message:@"Username already exists" + message:NSLocalizedString(@"Username already exists", nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"Continue",nil) otherButtonTitles:nil,nil]; @@ -540,7 +540,7 @@ static UICompositeViewDescription *compositeDescription = nil; [self findTextField:ViewElement_Password].text = password; } else { UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account creation issue",nil) - message:@"Can't create the account. Please try again." + message:NSLocalizedString(@"Can't create the account. Please try again.", nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"Continue",nil) otherButtonTitles:nil,nil]; @@ -554,7 +554,7 @@ static UICompositeViewDescription *compositeDescription = nil; [self addProxyConfig:username password:password domain:LINPHONE_WIZARD_DOMAIN]; } else { UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account validation issue",nil) - message:@"Your account is not validate yet." + message:NSLocalizedString(@"Your account is not validate yet.", nil) delegate:nil cancelButtonTitle:NSLocalizedString(@"Continue",nil) otherButtonTitles:nil,nil]; @@ -566,11 +566,11 @@ static UICompositeViewDescription *compositeDescription = nil; } - (void)request: (XMLRPCRequest *)request didFailWithError: (NSError *)error { - NSString *errorString = [NSString stringWithFormat:@"Can't create account: Communication issue (%@)", [error localizedDescription]]; - UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue",nil) + NSString *errorString = [NSString stringWithFormat:NSLocalizedString(@"Can't create account: Communication issue (%@)", nil), [error localizedDescription]]; + UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue", nil) message:errorString delegate:nil - cancelButtonTitle:NSLocalizedString(@"Continue",nil) + cancelButtonTitle:NSLocalizedString(@"Continue", nil) otherButtonTitles:nil,nil]; [errorView show]; [errorView release]; diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index a0682f3c400d9daceb885ea83bc2c69efcdc0ab2..8c5c5114be1d1bac0b3d5bc25f3e5a50adbed8ae 100644 GIT binary patch literal 13084 zcmd^GZBHCG5ccQ%ic{1G5>-U)$5c^6DTz=DL?KaBsZw>hBXAA(qP@Eu{Q0)eGlTK0 z*Bh3?T%tyZW!LuFkLTSp%RhfV4v#`F9E2&Z16;@WIS!Ms!1F9rX!#UIVTiUNTHc2X zT-kqu)(P&8F=h*GkHX_{FWkr7gYXR3QJCX82>oz|AC5i2^9ANx%BZJ!>N@%-%zO{? z-!;${3v7Y z2Oq>6f@uSoCO}KAuYjG}Jr}Lu6E%N<-d;GuQzaH*fV;Gl+s)#=vlXx}po7=Z62T9ZNplS2QzRc@uA-8xiTrLnmG`O=>x~;Qr;;$bM#vY zQDj};S`YG1;5_AFh`%>OfBlUs;}~Hm_AD;O9zKw(HtfpOt?BXQ;I*V~j#5 zb0gu~JbW)br)V8Or(<+c;jS;*k)(}&WFc=d4w)P3`K{nb5$=Riz*tP`gmOZa2RtHDXLf-t!!kM}WGgwo&UqHU=_{ha$$D;t^eGq!+?u(`n~;3ax6A zQ116fQ;KYMM7q@j*?uoHU2KZwVYl&qXw_p+vUrfTvEH*D1lAAMsbtaANBJPDpXd{o zyxnVc%IX+ama)2Bz25G#`YzU0tIcSQd8Y}y`v`V_2~AgD!PDj*JVeYxolCq!Pr(x? zuZ#$28^*ZHBRqYJClZd+)9VZtm|i;0A1z+*a@100(HujH@HzKLA}Ge9L(F%K7G}3L zfp079%IX~PB>aV$PO+C~7;}!b#%N`9zJ)eMpw`EK%QWzkD(bLGhUSaN`x*E^e)05P zfqzNXcf|r-KYpEPRR${{qx9GlbQx`Pybs#v(18k6WZc`tR_^sdvWK|(&#({c@WSwN z52!SM9nU~XyOWjB{F@i9HUvrH+EIGt_qgKqwych@%Xl9e{wBIwma$TwMZukJL)&MP zrL?F0m*Q>yje54*R#XnebEx%VmSc#SSJ-RfS^J3f zAlijx$Yb;zlO5xQiWFx=!)y_A9;dj{?^;T=kMTqmBbj=RpcMI7xlhVl z8@;UEN&6TdRIjcyofdrw8}J^IXfp=wBfJnX>W_J?lsRElM9()VKBXS8?xg1up1z`8 zpgs*GqD>XJnCqgpX{^gplwD>FIgb8ec~#LGnCwJav#U+1XDnIEjO*v;Et{#UXZ607 z-LFHEl;iYqjKMYU`~vaLzQ~N`7?UQ}`OxiMpIy9$jOI1vgtOf1kE9YB#;Rqxx?r(= zZv2-*tM;T!%QD{h#<~$xW@9erM66&v^VCl1wl{rta3uDWRmQwl*zEB_z{quFeEN}i zIJS7L$V^+3BJ~fxtI=cGd|JMGv)^;?nn6sNMb_*pNCG4FQ(W~6ktRm^!Rz1hLf)+H zT7;!uA0%%i%HWrQ^!9qT)<}k0l=2B%@~uZM(dU`MSY0O_d2XDG7V_&0=6=-+ zkMNffCo6mUr2?gemRBP;=FA=<|I2T@n)~)&alI5{?8@CU!#;!@e83O&L%-YTN`-E- z`0gyvtNP1=|B9XzQ=Y5NvtrDX7|$gsZ>2f5c&3R_S6{3HEk?Al{HllY5}$kF9qKI4 z@f+(j@6fW1ZdJ>&I)kwFi21%Wcx4Di=!UN^*wQtCa6#HBGB!^l3axY6R3n zg)3V1<~JM7nbH|?A3RiFz!_~umfB=blX+xCE5b~!Jyrhyc4j$zcR8B3pzKHd=2_yr z-D`D?h+>V1oIDc`z-UkZd*ECobOFzpwDK*U=qb9s=Y#%tP;CkQpp~-UJ+q3t#0i$W zDd(7DjXC95>iVY@XtnXGA*!V+=llwlnY8#7s+Ie%36m$)S*y+S^MrvM!bbF?2& z6hp;iMbYTVXQZZ0u8~!k9KhtYIYQoxY4QT)O_N#FcWrjjNnr$uPQIdFry34)cM;G` YNRS}RMG>Fu$P~F*z)+2G@+L7a0L{u)=>Px# From 776967a9dae0d45f8e4d101d2acdb380f6f4828d Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 9 Aug 2012 10:41:01 +0200 Subject: [PATCH 116/397] Resize images on Release (retina&non-retina) --- ...hat_field.9@x2.png => chat_field.9@2x.png} | Bin Resources/linphone_icon_57@2x.png | Bin 0 -> 6702 bytes Resources/linphone_icon_72@2x.png | Bin 0 -> 8682 bytes linphone-Info.plist | 19 ++++-- linphone.xcodeproj/project.pbxproj | 59 ++++++++++++++++-- 5 files changed, 68 insertions(+), 10 deletions(-) rename Resources/{chat_field.9@x2.png => chat_field.9@2x.png} (100%) create mode 100644 Resources/linphone_icon_57@2x.png create mode 100644 Resources/linphone_icon_72@2x.png diff --git a/Resources/chat_field.9@x2.png b/Resources/chat_field.9@2x.png similarity index 100% rename from Resources/chat_field.9@x2.png rename to Resources/chat_field.9@2x.png diff --git a/Resources/linphone_icon_57@2x.png b/Resources/linphone_icon_57@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2e9e6bd883d2412161f71be43fc81128106da124 GIT binary patch literal 6702 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
      ryc^XQ>qiCCtk?%v4 zw?g!{`O|9s%B~jLUjG{1AO8s1JN}PU=%ai42Gl@L+;n-H{1p7l`lNDPb+3#`uR{>R zwi>`jv9hXmH_!;-?LGqCX?kP?6<5PQXx;b~diMSSRUY4mo%HN~1@F-h;-)9$QP5g0 zLT4#XC@1J>!+qqO7FRZxz=IB71P`{xz+CyNRBC zzeDlaN5l|=MpdwX`g0sRpHI*)Q*j@ZnRfGoNyRy9e-DJlr2ptV;2NmPOK@`ZV*_wE zP!zNW@f`JGnmITZnC$DqvFAm4_WcgijFp(nuS1uYy!AJd_}h13-}xMY?gaIj3XUBP zimrS#=~-AIR~w$De~wAr=xOp2wD;GK?SyTIp!WI_tJlrH3wRDd&uLbSQ5b+U(w8uH<5*@nCEEqpE8lg4-K>OnG}N%{AFlcYPLVtxN%d~K=E z=@~A9_8`{H-2?lNcUM-`J`a(Glz`2^asZ7{L%}7MVPBx4$tc1&^+NQ;=b*DxAnKxz zju0DywQkFu;%i)$8UL5blo50MM8;ST4#PwwxIY$vhQZUIp5`3bZ+8NTwo0 zV*!Gge7{2_=qBVmMyRI=Z_CH{+p5!UY`GgeIO`M^{^y@DOqrQ5ZoqaB>wEX2Dx-Tk zPtYEu>qFbX22L|@PGwbXXWxYgLjqKm|VaMh_sggAzT{$lo3dh5(Sq)Z88sR6@OL)g)6 z6i0l1&Tt|76l~RYyhpucFS&rS`=3c#Cn|miU0WX{G=fG{Wfj@05ORg^o$%p3?jz)k zD!#V@YX%ml1Bq)$=x+es0XzZ3ZIcU9^rDh+$$+Hl@`_?E;Eh0lkjIJa9-ax?F;!C3 zfyHJl+JPSczwT?;#3G>~`>0+w-wfOj+zQM}OVddPOC#aV{)Wn`T33>|sTp!0)$8Uj z0j>qkAw2w50u%z{Zy(Il1DWucaBFX<0XFu!PE+Rp11fgO&ljf;O#lD@07*qoM6N<$ Ef=03=UH||9 literal 0 HcmV?d00001 diff --git a/Resources/linphone_icon_72@2x.png b/Resources/linphone_icon_72@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..58680e9d18b8b870a424cf565c87bd2164860645 GIT binary patch literal 8682 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 F{{iDt4)*{6 literal 0 HcmV?d00001 diff --git a/linphone-Info.plist b/linphone-Info.plist index 9015e66a1..22181516a 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -8,13 +8,26 @@ Linphone CFBundleExecutable ${EXECUTABLE_NAME} - CFBundleIconFile - CFBundleIconFiles linphone_icon_57.png linphone_icon_72.png + linphone_icon_57@2x.png + linphone_icon_72@2x.png + CFBundleIcons + + CFBundlePrimaryIcon + + CFBundleIconFiles + + linphone_icon_57.png + linphone_icon_72.png + linphone_icon_57@2x.png + linphone_icon_72@2x.png + + + CFBundleIdentifier org.linphone.phone CFBundleInfoDictionaryVersion @@ -25,8 +38,6 @@ APPL CFBundleShortVersionString 3.5.2 - CFBundleSignature - ???? CFBundleVersion 1.3 NSMainNibFile diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index d49c108bd..9bae23f7a 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -291,6 +291,10 @@ D339890715C6E16F00CAF1E4 /* dialer_alt_back_default_landscape~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D339890415C6E16F00CAF1E4 /* dialer_alt_back_default_landscape~ipad.png */; }; D339890815C6E16F00CAF1E4 /* dialer_alt_back_over_landscape~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D339890515C6E16F00CAF1E4 /* dialer_alt_back_over_landscape~ipad.png */; }; D339890915C6E16F00CAF1E4 /* dialer_alt_back_over_landscape~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D339890515C6E16F00CAF1E4 /* dialer_alt_back_over_landscape~ipad.png */; }; + D33CF34A15D3A03400CD4B85 /* linphone_icon_57@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D33CF34815D3A03400CD4B85 /* linphone_icon_57@2x.png */; }; + D33CF34B15D3A03400CD4B85 /* linphone_icon_57@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D33CF34815D3A03400CD4B85 /* linphone_icon_57@2x.png */; }; + D33CF34C15D3A03400CD4B85 /* linphone_icon_72@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D33CF34915D3A03400CD4B85 /* linphone_icon_72@2x.png */; }; + D33CF34D15D3A03400CD4B85 /* linphone_icon_72@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D33CF34915D3A03400CD4B85 /* linphone_icon_72@2x.png */; }; D3432A62158A4446001C6B0B /* led_connected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5C158A4446001C6B0B /* led_connected.png */; }; D3432A64158A4446001C6B0B /* led_error.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5D158A4446001C6B0B /* led_error.png */; }; D3432A66158A4446001C6B0B /* call_quality_indicator_0.png in Resources */ = {isa = PBXBuildFile; fileRef = D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */; }; @@ -918,8 +922,8 @@ D3A74F5915C69392001500B9 /* video_on_over~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74EB115C69392001500B9 /* video_on_over~ipad.png */; }; D3A74F5B15C6AA0B001500B9 /* chat_field.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5A15C6AA0B001500B9 /* chat_field.9.png */; }; D3A74F5C15C6AA0B001500B9 /* chat_field.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5A15C6AA0B001500B9 /* chat_field.9.png */; }; - D3A74F5E15C6ADA9001500B9 /* chat_field.9@x2.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5D15C6ADA9001500B9 /* chat_field.9@x2.png */; }; - D3A74F5F15C6ADA9001500B9 /* chat_field.9@x2.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5D15C6ADA9001500B9 /* chat_field.9@x2.png */; }; + D3A74F5E15C6ADA9001500B9 /* chat_field.9@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5D15C6ADA9001500B9 /* chat_field.9@2x.png */; }; + D3A74F5F15C6ADA9001500B9 /* chat_field.9@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5D15C6ADA9001500B9 /* chat_field.9@2x.png */; }; D3A74F6115C6B03C001500B9 /* DialerViewController~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F6015C6B03B001500B9 /* DialerViewController~ipad.xib */; }; D3A74F6215C6B03C001500B9 /* DialerViewController~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F6015C6B03B001500B9 /* DialerViewController~ipad.xib */; }; D3A8BB7015A6C7D500F96BE5 /* UIChatRoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */; }; @@ -1584,6 +1588,8 @@ D33988B315C6DD1600CAF1E4 /* video_on_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_on_over_landscape~ipad.png"; path = "Resources/video_on_over_landscape~ipad.png"; sourceTree = ""; }; D339890415C6E16F00CAF1E4 /* dialer_alt_back_default_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_back_default_landscape~ipad.png"; path = "Resources/dialer_alt_back_default_landscape~ipad.png"; sourceTree = ""; }; D339890515C6E16F00CAF1E4 /* dialer_alt_back_over_landscape~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_back_over_landscape~ipad.png"; path = "Resources/dialer_alt_back_over_landscape~ipad.png"; sourceTree = ""; }; + D33CF34815D3A03400CD4B85 /* linphone_icon_57@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "linphone_icon_57@2x.png"; path = "Resources/linphone_icon_57@2x.png"; sourceTree = ""; }; + D33CF34915D3A03400CD4B85 /* linphone_icon_72@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "linphone_icon_72@2x.png"; path = "Resources/linphone_icon_72@2x.png"; sourceTree = ""; }; D3432A5C158A4446001C6B0B /* led_connected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_connected.png; path = Resources/led_connected.png; sourceTree = ""; }; D3432A5D158A4446001C6B0B /* led_error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = led_error.png; path = Resources/led_error.png; sourceTree = ""; }; D3432A5E158A4446001C6B0B /* call_quality_indicator_0.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_quality_indicator_0.png; path = Resources/call_quality_indicator_0.png; sourceTree = ""; }; @@ -1826,7 +1832,7 @@ D3A74EB015C69392001500B9 /* video_on_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_on_disabled~ipad.png"; path = "Resources/video_on_disabled~ipad.png"; sourceTree = ""; }; D3A74EB115C69392001500B9 /* video_on_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_on_over~ipad.png"; path = "Resources/video_on_over~ipad.png"; sourceTree = ""; }; D3A74F5A15C6AA0B001500B9 /* chat_field.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_field.9.png; path = Resources/chat_field.9.png; sourceTree = ""; }; - D3A74F5D15C6ADA9001500B9 /* chat_field.9@x2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "chat_field.9@x2.png"; path = "Resources/chat_field.9@x2.png"; sourceTree = ""; }; + D3A74F5D15C6ADA9001500B9 /* chat_field.9@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "chat_field.9@2x.png"; path = "Resources/chat_field.9@2x.png"; sourceTree = ""; }; D3A74F6015C6B03B001500B9 /* DialerViewController~ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "DialerViewController~ipad.xib"; sourceTree = ""; }; D3A8BB6E15A6C7D500F96BE5 /* UIChatRoomCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIChatRoomCell.h; sourceTree = ""; }; D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIChatRoomCell.m; sourceTree = ""; }; @@ -2715,7 +2721,7 @@ D3EA53FF159852080037DC6B /* chat_edit_default.png */, D3EA5400159852080037DC6B /* chat_edit_over.png */, D3A74F5A15C6AA0B001500B9 /* chat_field.9.png */, - D3A74F5D15C6ADA9001500B9 /* chat_field.9@x2.png */, + D3A74F5D15C6ADA9001500B9 /* chat_field.9@2x.png */, D3B9A3DA15A58C440096EA4E /* chat_field.png */, D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */, D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */, @@ -2829,7 +2835,9 @@ 225CB2F911ABB76400628906 /* linphone-banner.png */, 8D1107310486CEB800E47090 /* linphone-Info.plist */, 22058C70116E305000B08DDD /* linphone_icon_57.png */, + D33CF34815D3A03400CD4B85 /* linphone_icon_57@2x.png */, 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */, + D33CF34915D3A03400CD4B85 /* linphone_icon_72@2x.png */, 2274550710700509006EC466 /* linphonerc */, 341FCA8D149798210084BC26 /* linphonerc-ipad */, D3EA5416159858A80037DC6B /* list_delete_default.png */, @@ -3216,6 +3224,7 @@ buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "linphone" */; buildPhases = ( 1D60588D0D05DD3D006BFB54 /* Resources */, + D33CF34715D3985000CD4B85 /* ShellScript */, 1D60588E0D05DD3D006BFB54 /* Sources */, 1D60588F0D05DD3D006BFB54 /* Frameworks */, 2247673A129C3B9C002B94B4 /* CopyFiles */, @@ -3236,6 +3245,7 @@ buildConfigurationList = 22D8F182147548E2008C97DB /* Build configuration list for PBXNativeTarget "linphone-no-gpl-thirdparties" */; buildPhases = ( 22D8F11E147548E2008C97DB /* Resources */, + D33CF35115D3AC9800CD4B85 /* ShellScript */, 22D8F143147548E2008C97DB /* Sources */, 22D8F15A147548E2008C97DB /* Frameworks */, 22D8F181147548E2008C97DB /* CopyFiles */, @@ -3693,7 +3703,7 @@ D3A74F5615C69392001500B9 /* video_on_disabled~ipad.png in Resources */, D3A74F5815C69392001500B9 /* video_on_over~ipad.png in Resources */, D3A74F5B15C6AA0B001500B9 /* chat_field.9.png in Resources */, - D3A74F5E15C6ADA9001500B9 /* chat_field.9@x2.png in Resources */, + D3A74F5E15C6ADA9001500B9 /* chat_field.9@2x.png in Resources */, D3A74F6115C6B03C001500B9 /* DialerViewController~ipad.xib in Resources */, D3BDB9B915C6B5B1007BEAC1 /* transfer_call_disabled~ipad.png in Resources */, D3ACB09715C6D0F700E15894 /* UICallBar~ipad.xib in Resources */, @@ -3741,6 +3751,8 @@ D339890215C6DD1600CAF1E4 /* video_on_over_landscape~ipad.png in Resources */, D339890615C6E16F00CAF1E4 /* dialer_alt_back_default_landscape~ipad.png in Resources */, D339890815C6E16F00CAF1E4 /* dialer_alt_back_over_landscape~ipad.png in Resources */, + D33CF34A15D3A03400CD4B85 /* linphone_icon_57@2x.png in Resources */, + D33CF34C15D3A03400CD4B85 /* linphone_icon_72@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4129,7 +4141,7 @@ D3A74F5715C69392001500B9 /* video_on_disabled~ipad.png in Resources */, D3A74F5915C69392001500B9 /* video_on_over~ipad.png in Resources */, D3A74F5C15C6AA0B001500B9 /* chat_field.9.png in Resources */, - D3A74F5F15C6ADA9001500B9 /* chat_field.9@x2.png in Resources */, + D3A74F5F15C6ADA9001500B9 /* chat_field.9@2x.png in Resources */, D3A74F6215C6B03C001500B9 /* DialerViewController~ipad.xib in Resources */, D3BDB9BA15C6B5B1007BEAC1 /* transfer_call_disabled~ipad.png in Resources */, D3ACB09815C6D0F700E15894 /* UICallBar~ipad.xib in Resources */, @@ -4177,11 +4189,42 @@ D339890315C6DD1600CAF1E4 /* video_on_over_landscape~ipad.png in Resources */, D339890715C6E16F00CAF1E4 /* dialer_alt_back_default_landscape~ipad.png in Resources */, D339890915C6E16F00CAF1E4 /* dialer_alt_back_over_landscape~ipad.png in Resources */, + D33CF34B15D3A03400CD4B85 /* linphone_icon_57@2x.png in Resources */, + D33CF34D15D3A03400CD4B85 /* linphone_icon_72@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + D33CF34715D3985000CD4B85 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"$CONFIGURATION\" == \"Debug\" ]; then\n exit 0\nfi\n\nCONVERT=/opt/local/bin/convert\nCONVERTFILTER=\"-sharpen 1x0.0 -filter Catrom\"\nOPTIPNG=/opt/local/bin/optipng\nCMDS=\"${CONVERT} ${OPTIPNG}\"\nfor i in $CMDS; do\ncommand -v $i > /dev/null && continue || { echo \"$i command not found\"; exit 1; }\ndone\n\nDIR=${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\nPNGS=$(find $DIR -type f -name *.png)\nfor PNG in $PNGS; do\n BASENAME=$(basename $PNG \".png\")\n PROCESS=true\n if [ -f $DIR/$BASENAME\"@2x.png\" ]; then\n echo \"Ignoring $BASENAME\";\n PROCESS=false\n fi\n case $BASENAME in *@2x)\n echo \"Ignoring $BASENAME\";\n continue\n esac\n\n if $PROCESS ; then\n echo \"Processing ${BASENAME} (${CONVERTFILTER})...\"\n mv $DIR/$BASENAME\".png\" $DIR/$BASENAME\"@2x.png\"\n $CONVERT $DIR/$BASENAME\"@2x.png\" $CONVERTFILTER -resize \"50%\" $DIR/$BASENAME\".png\" > /dev/null\n fi\n\n echo \"Optimizing ${BASENAME} and ${BASENAME}@2x ...\"\n $OPTIPNG -quiet $DIR/$BASENAME\"@2x.png\" > /dev/null\n $OPTIPNG -quiet $DIR/$BASENAME\".png\" > /dev/null\n\ndone"; + }; + D33CF35115D3AC9800CD4B85 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "if [ \"$CONFIGURATION\" == \"Debug\" ]; then\n exit 0\nfi\n\nCONVERT=/opt/local/bin/convert\nCONVERTFILTER=\"-sharpen 1x0.0 -filter Catrom\"\nOPTIPNG=/opt/local/bin/optipng\nCMDS=\"${CONVERT} ${OPTIPNG}\"\nfor i in $CMDS; do\n command -v $i > /dev/null && continue || { echo \"$i command not found\"; exit 1; }\ndone\n\nDIR=${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}\nPNGS=$(find $DIR -type f -name *.png)\nfor PNG in $PNGS; do\n BASENAME=$(basename $PNG \".png\")\n PROCESS=true\n if [ -f $DIR/$BASENAME\"@2x.png\" ]; then\n echo \"Ignoring $BASENAME\";\n PROCESS=false\n fi\n case $BASENAME in *@2x)\n echo \"Ignoring $BASENAME\";\n continue\n esac\n\n if $PROCESS ; then\n echo \"Processing ${BASENAME} (${CONVERTFILTER})...\"\n mv $DIR/$BASENAME\".png\" $DIR/$BASENAME\"@2x.png\"\n $CONVERT $DIR/$BASENAME\"@2x.png\" $CONVERTFILTER -resize \"50%\" $DIR/$BASENAME\".png\" > /dev/null\n fi\n\n echo \"Optimizing ${BASENAME} and ${BASENAME}@2x ...\"\n $OPTIPNG -quiet $DIR/$BASENAME\"@2x.png\" > /dev/null\n $OPTIPNG -quiet $DIR/$BASENAME\".png\" > /dev/null\n\ndone"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ 1D60588E0D05DD3D006BFB54 /* Sources */ = { isa = PBXSourcesBuildPhase; @@ -4406,6 +4449,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; GCC_C_LANGUAGE_STANDARD = c99; @@ -4478,6 +4522,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CODE_SIGN_ENTITLEMENTS = ""; + COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; GCC_C_LANGUAGE_STANDARD = c99; @@ -4739,6 +4784,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; GCC_C_LANGUAGE_STANDARD = c99; @@ -4811,6 +4857,7 @@ buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; CODE_SIGN_ENTITLEMENTS = ""; + COMPRESS_PNG_FILES = NO; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ""; GCC_C_LANGUAGE_STANDARD = c99; From 25dcdee588225a596ea658a34b3ef865c3aaace8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 9 Aug 2012 11:36:50 +0200 Subject: [PATCH 117/397] Customizable ContactDetails section order Fix over+selected on main bar --- Classes/ContactDetailsTableViewController.m | 91 ++++++++++++-------- Classes/LinphoneUI/UIMainBar.m | 24 +++++- Resources/en.lproj/Localizable.strings | Bin 13084 -> 13234 bytes 3 files changed, 78 insertions(+), 37 deletions(-) diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index ecc513ff6..dd4c21b6f 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -55,6 +55,14 @@ @implementation ContactDetailsTableViewController +enum _ContactSections { + ContactSections_Number = 0, + ContactSections_Sip, + ContactSections_MAX +}; + +static const int contactSections[ContactSections_MAX] = {ContactSections_Number, ContactSections_Sip}; + @synthesize contact; #pragma mark - Lifecycle Functions @@ -129,6 +137,16 @@ return NO; } + +- (NSMutableArray*)getSectionData:(int)section { + if(contactSections[section] == ContactSections_Number) { + return [dataCache objectAtIndex:0]; + } else if(contactSections[section] == ContactSections_Sip) { + return [dataCache objectAtIndex:1]; + } + return nil; +} + + (NSString*)localizeLabel:(NSString*)str { CFStringRef lLocalizedLabel = ABAddressBookCopyLocalizedLabel((CFStringRef) str); NSString * retStr = [NSString stringWithString:(NSString*) lLocalizedLabel]; @@ -203,11 +221,11 @@ } - (void)addEntry:(UITableView*)tableview section:(NSInteger)section animated:(BOOL)animated value:(NSString *)value{ - NSMutableArray *sectionArray = [dataCache objectAtIndex:section]; + NSMutableArray *sectionArray = [self getSectionData:section]; NSUInteger count = [sectionArray count]; NSError* error = NULL; bool added = TRUE; - if(section == 0) { + if(contactSections[section] == ContactSections_Number) { ABMultiValueIdentifier identifier; ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); ABMutableMultiValueRef lMap; @@ -231,7 +249,7 @@ [LinphoneLogger log:LinphoneLoggerLog format:@"Can't add entry: %@", [error localizedDescription]]; } CFRelease(lMap); - } else if(section == 1) { + } else if(contactSections[section] == ContactSections_Sip) { ABMultiValueIdentifier identifier; ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); ABMutableMultiValueRef lMap; @@ -271,11 +289,11 @@ } - (void)removeEmptyEntry:(UITableView*)tableview section:(NSInteger)section animated:(BOOL)animated { - NSMutableArray *sectionDict = [dataCache objectAtIndex: section]; + NSMutableArray *sectionDict = [self getSectionData:section]; int row = [sectionDict count] - 1; if(row >= 0) { Entry *entry = [sectionDict objectAtIndex:row]; - if(section == 0) { + if(contactSections[section] == ContactSections_Number) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef valueRef = ABMultiValueCopyValueAtIndex(lMap, index); @@ -284,7 +302,7 @@ } CFRelease(valueRef); CFRelease(lMap); - } else if(section == 1) { + } else if(contactSections[section] == ContactSections_Sip) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, index); @@ -299,9 +317,9 @@ } - (void)removeEntry:(UITableView*)tableview path:(NSIndexPath*)indexPath animated:(BOOL)animated { - NSMutableArray *sectionArray = [dataCache objectAtIndex:[indexPath section]]; + NSMutableArray *sectionArray = [self getSectionData:[indexPath section]]; Entry *entry = [sectionArray objectAtIndex:[indexPath row]]; - if([indexPath section] == 0) { + if(contactSections[[indexPath section]] == ContactSections_Number) { ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); CFRelease(lcMap); @@ -309,7 +327,7 @@ ABMultiValueRemoveValueAndLabelAtIndex(lMap, index); ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); CFRelease(lMap); - } else if([indexPath section] == 1) { + } else if(contactSections[[indexPath section]] == ContactSections_Sip) { ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); CFRelease(lcMap); @@ -338,18 +356,20 @@ } - (void)addSipField:(NSString*)address { - [self addEntry:[self tableView] section:1 animated:FALSE value:address]; + int i = 0; + while(i < ContactSections_MAX && contactSections[i] != ContactSections_Sip) ++i; + [self addEntry:[self tableView] section:i animated:FALSE value:address]; } #pragma mark - UITableViewDataSource Functions - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return [dataCache count]; + return ContactSections_MAX; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return [[dataCache objectAtIndex:section] count]; + return [[self getSectionData:section] count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { @@ -367,13 +387,13 @@ [selectedBackgroundView setBackgroundColor:LINPHONE_TABLE_CELL_BACKGROUND_COLOR]; } - NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; + NSMutableArray *sectionDict = [self getSectionData:[indexPath section]]; Entry *entry = [sectionDict objectAtIndex:[indexPath row]]; NSString *value = @""; NSString *label = @""; - if([indexPath section] == 0) { + if(contactSections[[indexPath section]] == ContactSections_Number) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); @@ -387,7 +407,7 @@ CFRelease(valueRef); } CFRelease(lMap); - } else if([indexPath section] == 1) { + } else if(contactSections[[indexPath section]] == ContactSections_Sip) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); @@ -406,10 +426,10 @@ [cell.textLabel setText:label]; [cell.detailTextLabel setText:value]; [cell.detailTextField setText:value]; - if ([indexPath section] == 0) { + if (contactSections[[indexPath section]] == ContactSections_Number) { [cell.detailTextField setKeyboardType:UIKeyboardTypePhonePad]; [cell.detailTextField setPlaceholder:NSLocalizedString(@"Phone number", nil)]; - } else { + } else if(contactSections[[indexPath section]] == ContactSections_Sip){ [cell.detailTextField setKeyboardType:UIKeyboardTypeASCIICapable]; [cell.detailTextField setPlaceholder:NSLocalizedString(@"SIP address", nil)]; } @@ -418,11 +438,11 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:NO]; - NSMutableArray *sectionDict = [dataCache objectAtIndex:[indexPath section]]; + NSMutableArray *sectionDict = [self getSectionData:[indexPath section]]; Entry *entry = [sectionDict objectAtIndex:[indexPath row]]; if (![self isEditing]) { NSString *dest; - if([indexPath section] == 0) { + if(contactSections[[indexPath section]] == ContactSections_Number) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef valueRef = ABMultiValueCopyValueAtIndex(lMap, index); @@ -431,7 +451,7 @@ CFRelease(valueRef); } CFRelease(lMap); - } else if([indexPath section] == 1) { + } else if(contactSections[[indexPath section]] == ContactSections_Sip) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, index); @@ -459,7 +479,7 @@ } } else { NSString *key = nil; - if([indexPath section] == 0) { + if(contactSections[[indexPath section]] == ContactSections_Number) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); @@ -468,7 +488,7 @@ CFRelease(labelRef); } CFRelease(lMap); - } else if([indexPath section] == 1) { + } else if(contactSections[[indexPath section]] == ContactSections_Sip) { ABMultiValueRef lMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef labelRef = ABMultiValueCopyLabelAtIndex(lMap, index); @@ -538,7 +558,7 @@ } - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { - int last_index = [[dataCache objectAtIndex:[indexPath section]] count] - 1; + int last_index = [[self getSectionData:[indexPath section]] count] - 1; if (indexPath.row == last_index) { return UITableViewCellEditingStyleInsert; } @@ -557,7 +577,7 @@ } - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { - if(section != 0) { + if(section == (ContactSections_MAX - 1)) { UIView *footerView = [footerController view]; return footerView; } else { @@ -566,11 +586,12 @@ } - (NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { - if(section == 0) { - return NSLocalizedString(@"Phone number", nil); - } else { + if(contactSections[section] == ContactSections_Number) { + return NSLocalizedString(@"Phone numbers", nil); + } else if(contactSections[section] == ContactSections_Sip) { return NSLocalizedString(@"SIP", nil); } + return nil; } - (NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section { @@ -582,7 +603,7 @@ return [UIContactDetailsHeader height:[self isEditing]]; } else { // Hide section if nothing in it - if([[dataCache objectAtIndex:section] count] > 0) + if([[self getSectionData:section] count] > 0) return 22; else return 0.000001f; // Hack UITableView = 0 @@ -593,7 +614,7 @@ if(section != 0) { return [UIContactDetailsFooter height:[self isEditing]]; } - return 0.000001f; // Hack UITableView = 0 + return 10.0f; } @@ -601,9 +622,9 @@ - (void)changeContactDetailsLabel:(NSString *)value { if(value != nil) { - NSMutableArray *sectionDict = [dataCache objectAtIndex:[editingIndexPath section]]; + NSMutableArray *sectionDict = [self getSectionData:[editingIndexPath section]]; Entry *entry = [sectionDict objectAtIndex:[editingIndexPath row]]; - if([editingIndexPath section] == 0) { + if(contactSections[[editingIndexPath section]] == ContactSections_Number) { ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); CFRelease(lcMap); @@ -611,7 +632,7 @@ ABMultiValueReplaceLabelAtIndex(lMap, (CFStringRef)(value), index); ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); CFRelease(lMap); - } else if([editingIndexPath section] == 1) { + } else if(contactSections[[editingIndexPath section]] == ContactSections_Sip) { ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); CFRelease(lcMap); @@ -643,10 +664,10 @@ if(view != nil) { UIEditableTableViewCell *cell = (UIEditableTableViewCell*)view; NSIndexPath *path = [self.tableView indexPathForCell:cell]; - NSMutableArray *sectionDict = [dataCache objectAtIndex:[path section]]; + NSMutableArray *sectionDict = [self getSectionData:[path section]]; Entry *entry = [sectionDict objectAtIndex:[path row]]; NSString *value = [textField text]; - if([path section] == 0) { + if(contactSections[[path section]] == ContactSections_Number) { ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonPhoneProperty); ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); CFRelease(lcMap); @@ -654,7 +675,7 @@ ABMultiValueReplaceValueAtIndex(lMap, (CFStringRef)value, index); ABRecordSetValue(contact, kABPersonPhoneProperty, lMap, nil); CFRelease(lMap); - } else if([path section] == 1) { + } else if(contactSections[[path section]] == ContactSections_Sip) { ABMultiValueRef lcMap = ABRecordCopyValue(contact, kABPersonInstantMessageProperty); ABMutableMultiValueRef lMap = ABMultiValueCreateMutableCopy(lcMap); CFRelease(lcMap); diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 4c5fba903..631d465cd 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -91,12 +91,32 @@ } - (void)viewDidLoad { - [super viewDidLoad]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillEnterForeground:) name:UIApplicationWillEnterForegroundNotification object:nil]; + + // Set selected+over background: IB lack ! + [historyButton setImage:[UIImage imageNamed:@"history_selected.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+over background: IB lack ! + [contactsButton setImage:[UIImage imageNamed:@"contacts_selected.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+over background: IB lack ! + [dialerButton setImage:[UIImage imageNamed:@"dialer_selected.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+over background: IB lack ! + [settingsButton setImage:[UIImage imageNamed:@"settings_selected.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + // Set selected+over background: IB lack ! + [chatButton setImage:[UIImage imageNamed:@"chat_selected.png"] + forState:(UIControlStateHighlighted | UIControlStateSelected)]; + + [super viewDidLoad]; // Have to be after due to TPMultiLayoutViewController } - (void)viewDidUnload { diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index 8c5c5114be1d1bac0b3d5bc25f3e5a50adbed8ae..5077d42c483f1e9860dbab51c2a4180c35602a88 100644 GIT binary patch delta 28 icmbP}wkdr>l>Foqa$=0dlkdtY14&1w$juS*M}z^Un+lx( delta 12 Tcmdm#J|}HMl>Fuo@`r>0C}IWN From be9509f7c3319ca7ba673b01362e6c2057f16143 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 9 Aug 2012 14:35:28 +0200 Subject: [PATCH 118/397] Improve animation between views Improve Start/Foreground/Background --- Classes/LinphoneAppDelegate.h | 6 -- Classes/LinphoneAppDelegate.m | 97 +++++-------------- Classes/LinphoneManager.h | 2 +- Classes/LinphoneManager.m | 8 +- Classes/LinphoneUI/UICallBar.m | 2 + .../LinphoneUI/UICompositeViewController.m | 16 +-- Classes/LinphoneUI/UIMainBar.m | 20 ++-- Classes/PhoneMainView.m | 23 ++++- 8 files changed, 74 insertions(+), 100 deletions(-) diff --git a/Classes/LinphoneAppDelegate.h b/Classes/LinphoneAppDelegate.h index a17a464fd..bc83e5280 100644 --- a/Classes/LinphoneAppDelegate.h +++ b/Classes/LinphoneAppDelegate.h @@ -33,12 +33,6 @@ BOOL started; } -- (void)loadDefaultSettings:(NSDictionary *) appDefaults; -- (void)setupUI; -- (void)setupGSMInteraction; - -- (void)startApplication; - @property (nonatomic, retain) IBOutlet UIWindow *window; @property (assign) BOOL started; diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 4e731bc61..c6ef17ab8 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -100,11 +100,7 @@ int __aeabi_idiv(int a, int b) { linphone_call_enable_camera(call, false); } -} -- (void)applicationDidEnterBackground:(UIApplication *)application { - if ([[LinphoneManager instance] settingsStore]!=Nil) - [[[LinphoneManager instance] settingsStore] synchronize]; - if (![[LinphoneManager instance] enterBackgroundMode]) { + if (![[LinphoneManager instance] resignActive]) { // destroying eventHandler if app cannot go in background. // Otherwise if a GSM call happen and Linphone is resumed, // the handler will be called before LinphoneCore is built. @@ -113,29 +109,14 @@ int __aeabi_idiv(int a, int b) { [callCenter release]; callCenter = nil; } -} -- (void)applicationDidBecomeActive:(UIApplication *)application { - if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] - && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground - && (![[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"] || - ![[NSUserDefaults standardUserDefaults] boolForKey:@"backgroundmode_preference"])) { - // autoboot disabled, doing nothing - return; - } +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { [self startApplication]; [[LinphoneManager instance] becomeActive]; - if (callCenter == nil) { - callCenter = [[CTCallCenter alloc] init]; - callCenter.callEventHandler = ^(CTCall* call) { - // post on main thread - [self performSelectorOnMainThread:@selector(handleGSMCallInteration:) - withObject:callCenter - waitUntilDone:YES]; - }; - } // check call state at startup [self handleGSMCallInteration:callCenter]; @@ -156,31 +137,6 @@ int __aeabi_idiv(int a, int b) { } } -- (void)loadDefaultSettings:(NSDictionary *) appDefaults { - for(NSString* key in appDefaults){ - [LinphoneLogger log:LinphoneLoggerLog format:@"Overload %@ to in app settings.", key]; - [[[LinphoneManager instance] settingsStore] setObject:[appDefaults objectForKey:key] forKey:key]; - } - [[[LinphoneManager instance] settingsStore] synchronize]; -} - -- (void)setupUI { - [[PhoneMainView instance] startUp]; - if ([[LinphoneManager instance].settingsStore boolForKey:@"enable_first_login_view_preference"] == true) { - // Change to fist login view - [[PhoneMainView instance] changeCurrentView: [FirstLoginViewController compositeViewDescription]]; - } else { - // Change to default view - const MSList *list = linphone_core_get_proxy_config_list([LinphoneManager getLc]); - if(list != NULL) { - [[PhoneMainView instance] changeCurrentView: [DialerViewController compositeViewDescription]]; - } else { - [[PhoneMainView instance] changeCurrentView: [WizardViewController compositeViewDescription]]; - } - } - [UIDevice currentDevice].batteryMonitoringEnabled = YES; -} - - (void)setupGSMInteraction { if (callCenter == nil) { callCenter = [[CTCallCenter alloc] init]; @@ -193,36 +149,34 @@ int __aeabi_idiv(int a, int b) { } } -- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ - NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys: nil]; - // Put your default NSUserDefaults settings in the dictionary above. +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound]; - if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] - && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground + if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] + && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground && (![[NSUserDefaults standardUserDefaults] boolForKey:@"start_at_boot_preference"] || ![[NSUserDefaults standardUserDefaults] boolForKey:@"backgroundmode_preference"])) { - // autoboot disabled, doing nothing - } else { - [self startApplication]; - [self loadDefaultSettings: appDefaults]; - } - + // autoboot disabled, doing nothing + return YES; + } + + [self startApplication]; + return YES; } - (void)startApplication { - if(started) - return; - - started = TRUE; - - [[LinphoneManager instance] startLibLinphone]; - - [self setupUI]; - - [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound]; - + // Restart Linphone Core if needed + if(![LinphoneManager isLcReady]) { + [[LinphoneManager instance] startLibLinphone]; + } [self setupGSMInteraction]; + + // Only execute one time at application start + if(!started) { + started = TRUE; + [[PhoneMainView instance] startUp]; + } } @@ -230,7 +184,7 @@ int __aeabi_idiv(int a, int b) { } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { - //NSLog(@"%@", userInfo); + [LinphoneLogger log:LinphoneLoggerDebug format:@"PushNotification: Receive %@", userInfo]; } - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { @@ -257,7 +211,6 @@ int __aeabi_idiv(int a, int b) { - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { [LinphoneLogger log:LinphoneLoggerDebug format:@"PushNotification: Token %@", deviceToken]; - //NSLog(@"%@", deviceToken); [[LinphoneManager instance] setPushNotificationToken:deviceToken]; } diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index b2b3dcabd..7e3adc7ef 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -86,7 +86,7 @@ typedef struct _LinphoneCallAppData { - (void)startLibLinphone; - (void)destroyLibLinphone; -- (BOOL)enterBackgroundMode; +- (BOOL)resignActive; - (void)becomeActive; - (void)kickOffNetworkConnection; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index d2a7408f0..98cc5bad0 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -636,7 +636,7 @@ static LinphoneCoreVTable linphonec_vtable = { if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)] && [UIApplication sharedApplication].applicationState == UIApplicationStateBackground) { //go directly to bg mode - [self enterBackgroundMode]; + [self resignActive]; } } @@ -657,6 +657,12 @@ static LinphoneCoreVTable linphonec_vtable = { } } +- (BOOL)resignActive { + if ([[LinphoneManager instance] settingsStore] != Nil) + [[[LinphoneManager instance] settingsStore] synchronize]; + return [self enterBackgroundMode]; +} + - (BOOL)enterBackgroundMode { LinphoneProxyConfig* proxyCfg; linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg); diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 3751dcdba..2a7ae4deb 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -197,6 +197,8 @@ setImage:[UIImage imageNamed:@"dialer_alt_back_over_landscape.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; + [optionsView setHidden:TRUE]; + [padView setHidden:TRUE]; [super viewDidLoad]; } diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index a27966eea..5483b3b71 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -356,13 +356,17 @@ // Animate only with a previous screen if(oldViewDescription != nil && viewTransition != nil) { - [contentView.layer addAnimation:viewTransition forKey:@"Transition"]; - if((oldViewDescription.stateBarEnabled == true && currentViewDescription.stateBarEnabled == false) || - (oldViewDescription.stateBarEnabled == false && currentViewDescription.stateBarEnabled == true)) { - [stateBarView.layer addAnimation:viewTransition forKey:@"Transition"]; + [contentView.layer removeAnimationForKey:@"transition"]; + [contentView.layer addAnimation:viewTransition forKey:@"transition"]; + if(oldViewDescription.stateBar != currentViewDescription.stateBar || + [stateBarView.layer animationForKey:@"transition"] != nil) { + [stateBarView.layer removeAnimationForKey:@"transition"]; + [stateBarView.layer addAnimation:viewTransition forKey:@"transition"]; } - if(oldViewDescription.tabBar != currentViewDescription.tabBar) { - [tabBarView.layer addAnimation:viewTransition forKey:@"Transition"]; + if(oldViewDescription.tabBar != currentViewDescription.tabBar || + [tabBarView.layer animationForKey:@"transition"] != nil) { + [tabBarView.layer removeAnimationForKey:@"transition"]; + [tabBarView.layer addAnimation:viewTransition forKey:@"transition"]; } } diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 631d465cd..2f12c029e 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -187,19 +187,19 @@ if([chatNotificationView isHidden]) { [chatNotificationView setHidden:FALSE]; if(appear) { - [self appearAnimation:@"Appear" target:chatNotificationView completion:^(BOOL finished){ - [self startBounceAnimation:@"Bounce" target:chatNotificationView]; + [self appearAnimation:@"appear" target:chatNotificationView completion:^(BOOL finished){ + [self startBounceAnimation:@"bounce" target:chatNotificationView]; }]; } else { - [self startBounceAnimation:@"Bounce" target:chatNotificationView]; + [self startBounceAnimation:@"bounce" target:chatNotificationView]; } } [chatNotificationLabel setText:[NSString stringWithFormat:@"%i", unreadMessage]]; } else { if(![chatNotificationView isHidden]) { - [self stopBounceAnimation:@"Bounce" target:chatNotificationView]; + [self stopBounceAnimation:@"bounce" target:chatNotificationView]; if(appear) { - [self disappearAnimation:@"Disappear" target:chatNotificationView completion:^(BOOL finished){ + [self disappearAnimation:@"disappear" target:chatNotificationView completion:^(BOOL finished){ [chatNotificationView setHidden:TRUE]; }]; } else { @@ -214,19 +214,19 @@ if([historyNotificationView isHidden]) { [historyNotificationView setHidden:FALSE]; if(appear) { - [self appearAnimation:@"Appear" target:historyNotificationView completion:^(BOOL finished){ - [self startBounceAnimation:@"Bounce" target:historyNotificationView]; + [self appearAnimation:@"appear" target:historyNotificationView completion:^(BOOL finished){ + [self startBounceAnimation:@"bounce" target:historyNotificationView]; }]; } else { - [self startBounceAnimation:@"Bounce" target:historyNotificationView]; + [self startBounceAnimation:@"bounce" target:historyNotificationView]; } } [historyNotificationLabel setText:[NSString stringWithFormat:@"%i", missedCall]]; } else { if(![historyNotificationView isHidden]) { - [self stopBounceAnimation:@"Bounce" target:historyNotificationView]; + [self stopBounceAnimation:@"bounce" target:historyNotificationView]; if(appear) { - [self disappearAnimation:@"Disappear" target:historyNotificationView completion:^(BOOL finished){ + [self disappearAnimation:@"disappear" target:historyNotificationView completion:^(BOOL finished){ }]; } else { diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index cc510e626..c40c8aa1a 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -116,6 +116,7 @@ static PhoneMainView* phoneMainViewInstance=nil; selector:@selector(batteryLevelChanged:) name:UIDeviceBatteryLevelDidChangeNotification object:nil]; + [[UIDevice currentDevice] setBatteryMonitoringEnabled:YES]; } - (void)viewWillDisappear:(BOOL)animated { @@ -138,6 +139,7 @@ static PhoneMainView* phoneMainViewInstance=nil; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceBatteryLevelDidChangeNotification object:nil]; + [[UIDevice currentDevice] setBatteryMonitoringEnabled:NO]; } - (void)viewDidAppear:(BOOL)animated { @@ -351,7 +353,20 @@ static PhoneMainView* phoneMainViewInstance=nil; #pragma mark - -- (void)startUp { +- (void)startUp { + if ([[LinphoneManager instance].settingsStore boolForKey:@"enable_first_login_view_preference"] == true) { + // Change to fist login view + [self changeCurrentView: [FirstLoginViewController compositeViewDescription]]; + } else { + // Change to default view + const MSList *list = linphone_core_get_proxy_config_list([LinphoneManager getLc]); + if(list != NULL) { + [self changeCurrentView: [DialerViewController compositeViewDescription]]; + } else { + [self changeCurrentView: [WizardViewController compositeViewDescription]]; + } + } + [self updateApplicationBadgeNumber]; // Update Badge at startup } @@ -420,15 +435,15 @@ static PhoneMainView* phoneMainViewInstance=nil; return phoneMainViewInstance; } -- (void) showTabBar:(BOOL) show { +- (void) showTabBar:(BOOL)show { [mainViewController setToolBarHidden:!show]; } -- (void) showStateBar:(BOOL) show { +- (void) showStateBar:(BOOL)show { [mainViewController setStateBarHidden:!show]; } -- (void)fullScreen:(BOOL) enabled { +- (void)fullScreen:(BOOL)enabled { [mainViewController setFullScreen:enabled]; } From 93a8588ed4eb00327b9762e068fc4662ed0316bf Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 9 Aug 2012 16:40:16 +0200 Subject: [PATCH 119/397] Add DEBUG symbol in debug configuration Disabled validation of contact is first & last name are empty --- Classes/ContactDetailsDelegate.h | 25 +++ Classes/ContactDetailsTableViewController.h | 7 +- Classes/ContactDetailsTableViewController.m | 37 +++- Classes/ContactDetailsViewController.h | 4 +- Classes/ContactDetailsViewController.m | 27 ++- Classes/ContactDetailsViewController.xib | 174 +++++++++++++++++- Classes/ContactsTableViewController.m | 2 +- Classes/LinphoneUI/UIContactDetailsFooter.h | 8 +- Classes/LinphoneUI/UIContactDetailsFooter.m | 35 +++- Classes/LinphoneUI/UIContactDetailsFooter.xib | 31 +++- Classes/LinphoneUI/UIContactDetailsHeader.h | 5 + Classes/LinphoneUI/UIContactDetailsHeader.m | 53 +++++- Classes/SettingsViewController.m | 4 + Resources/contact_ok_disabled.png | Bin 0 -> 2159 bytes Settings/InAppSettings.bundle/Root.plist | 8 + linphone.xcodeproj/project.pbxproj | 10 + main.m | 14 ++ 17 files changed, 410 insertions(+), 34 deletions(-) create mode 100644 Classes/ContactDetailsDelegate.h create mode 100644 Resources/contact_ok_disabled.png diff --git a/Classes/ContactDetailsDelegate.h b/Classes/ContactDetailsDelegate.h new file mode 100644 index 000000000..c251079ee --- /dev/null +++ b/Classes/ContactDetailsDelegate.h @@ -0,0 +1,25 @@ +/* ContactDetailsDelegate.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +@protocol ContactDetailsDelegate + +- (void)onRemove:(id)event; +- (void)onModification:(id)event; + +@end \ No newline at end of file diff --git a/Classes/ContactDetailsTableViewController.h b/Classes/ContactDetailsTableViewController.h index 24407db95..978007841 100644 --- a/Classes/ContactDetailsTableViewController.h +++ b/Classes/ContactDetailsTableViewController.h @@ -20,6 +20,7 @@ #import #import +#import "ContactDetailsDelegate.h" #import "ContactDetailsLabelViewController.h" #import "UIContactDetailsHeader.h" #import "UIContactDetailsFooter.h" @@ -30,13 +31,17 @@ NSMutableArray *dataCache; NSMutableArray *labelArray; NSIndexPath *editingIndexPath; -@public UIContactDetailsHeader *headerController; UIContactDetailsFooter *footerController; + id contactDetailsDelegate; } @property (nonatomic, assign) ABRecordRef contact; +@property (nonatomic, retain) IBOutlet id contactDetailsDelegate; +@property (nonatomic, retain) IBOutlet UIContactDetailsHeader *headerController; +@property (nonatomic, retain) IBOutlet UIContactDetailsFooter *footerController; +- (BOOL)isValid; - (void)addSipField:(NSString*)address; @end diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index dd4c21b6f..b36a4bc77 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -63,6 +63,9 @@ enum _ContactSections { static const int contactSections[ContactSections_MAX] = {ContactSections_Number, ContactSections_Sip}; +@synthesize footerController; +@synthesize headerController; +@synthesize contactDetailsDelegate; @synthesize contact; #pragma mark - Lifecycle Functions @@ -74,8 +77,6 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, [NSString stringWithString:(NSString*)kABPersonPhoneMobileLabel], [NSString stringWithString:(NSString*)kABPersonPhoneIPhoneLabel], [NSString stringWithString:(NSString*)kABPersonPhoneMainLabel], nil]; - headerController = [[UIContactDetailsHeader alloc] init]; - footerController = [[UIContactDetailsFooter alloc] init]; editingIndexPath = nil; } @@ -104,8 +105,6 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, } [labelArray release]; [dataCache release]; - [headerController release]; - [UIContactDetailsFooter release]; [super dealloc]; } @@ -125,6 +124,15 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, #pragma mark - +- (BOOL)isValid { + return [headerController isValid]; +} + +- (void)updateModification { + [contactDetailsDelegate onModification:nil]; +} + + + (BOOL)findAndResignFirstResponder:(UIView*)view { if (view.isFirstResponder) { [view resignFirstResponder]; @@ -212,7 +220,10 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, } [dataCache addObject:subArray]; } - + + if(contactDetailsDelegate != nil) { + [contactDetailsDelegate onModification:nil]; + } [self.tableView reloadData]; } @@ -286,6 +297,9 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, } [tableview insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:count inSection:section]] withRowAnimation:UITableViewRowAnimationFade]; } + if(contactDetailsDelegate != nil) { + [contactDetailsDelegate onModification:nil]; + } } - (void)removeEmptyEntry:(UITableView*)tableview section:(NSInteger)section animated:(BOOL)animated { @@ -314,6 +328,9 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, CFRelease(lMap); } } + if(contactDetailsDelegate != nil) { + [contactDetailsDelegate onModification:nil]; + } } - (void)removeEntry:(UITableView*)tableview path:(NSIndexPath*)indexPath animated:(BOOL)animated { @@ -652,6 +669,13 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, #pragma mark - UITextFieldDelegate Functions +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + if(contactDetailsDelegate != nil) { + [self performSelector:@selector(updateModification) withObject:nil afterDelay:0]; + } + return YES; +} + - (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; return YES; @@ -692,6 +716,9 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, } else { [LinphoneLogger logc:LinphoneLoggerError format:"Not valid UIEditableTableViewCell"]; } + if(contactDetailsDelegate != nil) { + [self performSelector:@selector(updateModification) withObject:nil afterDelay:0]; + } return TRUE; } diff --git a/Classes/ContactDetailsViewController.h b/Classes/ContactDetailsViewController.h index 16e96f59e..5e1f159ed 100644 --- a/Classes/ContactDetailsViewController.h +++ b/Classes/ContactDetailsViewController.h @@ -21,10 +21,10 @@ #import #import "UICompositeViewController.h" -#import "ContactDetailsTableViewController.h" #import "UIToggleButton.h" +#import "ContactDetailsTableViewController.h" -@interface ContactDetailsViewController : UIViewController { +@interface ContactDetailsViewController : UIViewController { ContactDetailsTableViewController *tableController; ABRecordRef contact; UIToggleButton *editButton; diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index dbf758904..aaa216eff 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -198,22 +198,18 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)viewDidLoad{ [super viewDidLoad]; + // Set selected+over background: IB lack ! [editButton setImage:[UIImage imageNamed:@"contact_ok_over.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; - // Force view load - [tableController->footerController view]; - [tableController->footerController->removeButton addTarget:self - action:@selector(onRemove:) - forControlEvents:UIControlEventTouchUpInside]; + // Set selected+disabled background: IB lack ! + [editButton setImage:[UIImage imageNamed:@"contact_ok_disabled.png"] + forState:(UIControlStateDisabled | UIControlStateSelected)]; } - (void)viewDidUnload { [super viewDidUnload]; - [tableController->footerController->removeButton removeTarget:self - action:@selector(onRemove:) - forControlEvents:UIControlEventTouchUpInside]; } - (void)viewWillDisappear:(BOOL)animated { @@ -291,6 +287,7 @@ static UICompositeViewDescription *compositeDescription = nil; [backButton setHidden:FALSE]; } + #pragma mark - Action Functions - (IBAction)onCancelClick:(id)event { @@ -304,8 +301,10 @@ static UICompositeViewDescription *compositeDescription = nil; - (IBAction)onEditClick:(id)event { if([tableController isEditing]) { - [self disableEdit:TRUE]; - [self saveData]; + if([tableController isValid]) { + [self disableEdit:TRUE]; + [self saveData]; + } } else { [self enableEdit:TRUE]; } @@ -317,4 +316,12 @@ static UICompositeViewDescription *compositeDescription = nil; [[PhoneMainView instance] popCurrentView]; } +- (void)onModification:(id)event { + if(![tableController isEditing] || [tableController isValid]) { + [editButton setEnabled:TRUE]; + } else { + [editButton setEnabled:FALSE]; + } +} + @end diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib index 939b1c99b..4f71c2019 100644 --- a/Classes/ContactDetailsViewController.xib +++ b/Classes/ContactDetailsViewController.xib @@ -17,6 +17,7 @@ IBUITableView IBUITableViewController IBUIView + IBUIViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -176,7 +177,6 @@ {{0, 59}, {320, 401}} - _NS:9 10 @@ -270,6 +270,26 @@ AAgACAAIAAEAAQABAAE IBCocoaTouchFramework NO + + UIContactDetailsFooter + + + 1 + 1 + + IBCocoaTouchFramework + NO + + + UIContactDetailsHeader + + + 1 + 1 + + IBCocoaTouchFramework + NO + @@ -355,6 +375,30 @@ AAgACAAIAAEAAQABAAE 26 + + + contactDetailsDelegate + + + + 53 + + + + footerController + + + + 59 + + + + headerController + + + + 60 + onCancelClick: @@ -364,6 +408,22 @@ AAgACAAIAAEAAQABAAE 49 + + + contactDetailsDelegate + + + + 61 + + + + contactDetailsDelegate + + + + 62 + @@ -442,6 +502,18 @@ AAgACAAIAAEAAQABAAE barBackground + + 57 + + + footerController + + + 58 + + + headerController + @@ -457,6 +529,10 @@ AAgACAAIAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIContactDetailsFooter + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + UIContactDetailsHeader + com.apple.InterfaceBuilder.IBCocoaTouchPlugin UIToggleButton com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -467,13 +543,32 @@ AAgACAAIAAEAAQABAAE - 52 + 62
    ContactDetailsTableViewController UITableViewController + + id + UIContactDetailsFooter + UIContactDetailsHeader + + + + contactDetailsDelegate + id + + + footerController + UIContactDetailsFooter + + + headerController + UIContactDetailsHeader + + IBProjectSource ./Classes/ContactDetailsTableViewController.h @@ -530,6 +625,81 @@ AAgACAAIAAEAAQABAAE ./Classes/ContactDetailsViewController.h + + UIContactDetailsFooter + UIViewController + + onRemoveClick: + id + + + onRemoveClick: + + onRemoveClick: + id + + + + id + UIButton + + + + contactDetailsDelegate + id + + + removeButton + UIButton + + + + IBProjectSource + ./Classes/UIContactDetailsFooter.h + + + + UIContactDetailsHeader + UIViewController + + UILabel + UIImageView + id + UIView + UIView + UITableView + + + + addressLabel + UILabel + + + avatarImage + UIImageView + + + contactDetailsDelegate + id + + + editView + UIView + + + normalView + UIView + + + tableView + UITableView + + + + IBProjectSource + ./Classes/UIContactDetailsHeader.h + + UIToggleButton UIButton diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 4f5cd356b..acf33fe4d 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -111,7 +111,7 @@ } else { } - if(name != nil) { + if(name != nil && [name length] > 0) { // Put in correct subDic NSString *firstChar = [[name substringToIndex:1] uppercaseString]; if([firstChar characterAtIndex:0] < 'A' || [firstChar characterAtIndex:0] > 'Z') { diff --git a/Classes/LinphoneUI/UIContactDetailsFooter.h b/Classes/LinphoneUI/UIContactDetailsFooter.h index ab808a680..08b14b850 100644 --- a/Classes/LinphoneUI/UIContactDetailsFooter.h +++ b/Classes/LinphoneUI/UIContactDetailsFooter.h @@ -19,12 +19,18 @@ #import +#import "ContactDetailsDelegate.h" + @interface UIContactDetailsFooter : UIViewController { - @public +@private UIButton *removeButton; + id contactDetailsDelegate; } @property (nonatomic, retain) IBOutlet UIButton *removeButton; +@property (nonatomic, retain) IBOutlet id contactDetailsDelegate; + +- (IBAction)onRemoveClick:(id)event; + (CGFloat)height:(BOOL)editing; diff --git a/Classes/LinphoneUI/UIContactDetailsFooter.m b/Classes/LinphoneUI/UIContactDetailsFooter.m index 5320de827..e681aac04 100644 --- a/Classes/LinphoneUI/UIContactDetailsFooter.m +++ b/Classes/LinphoneUI/UIContactDetailsFooter.m @@ -22,12 +22,36 @@ @implementation UIContactDetailsFooter @synthesize removeButton; +@synthesize contactDetailsDelegate; #pragma mark - Lifecycle Functions +- (void)initUIContactDetailsFooter { +} + - (id)init { - return self = [super initWithNibName:@"UIContactDetailsFooter" bundle:[NSBundle mainBundle]]; + self = [super init]; + if(self != nil) { + [self initUIContactDetailsFooter]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + if(self != nil) { + [self initUIContactDetailsFooter]; + } + return self; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if(self != nil) { + [self initUIContactDetailsFooter]; + } + return self; } - (void)dealloc { @@ -37,6 +61,15 @@ } +#pragma mark - Action Functions + +- (IBAction)onRemoveClick:(id)event { + if(contactDetailsDelegate != nil) { + [contactDetailsDelegate onRemove:event]; + } +} + + #pragma mark - + (CGFloat)height:(BOOL)editing { diff --git a/Classes/LinphoneUI/UIContactDetailsFooter.xib b/Classes/LinphoneUI/UIContactDetailsFooter.xib index b02d3ec41..78b5e58dc 100644 --- a/Classes/LinphoneUI/UIContactDetailsFooter.xib +++ b/Classes/LinphoneUI/UIContactDetailsFooter.xib @@ -3,17 +3,17 @@ 1296 11E53 - 2182 + 2549 1138.47 569.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1181 + 1498 IBProxyObject - IBUIView IBUIButton + IBUIView com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -41,7 +41,6 @@ {{23, 25}, {275, 50}} - _NS:9 3 @@ -103,6 +102,15 @@ 7 + + + onRemoveClick: + + + 7 + + 10 + @@ -152,13 +160,24 @@ - 9 + 10 UIContactDetailsFooter UIViewController + + onRemoveClick: + id + + + onRemoveClick: + + onRemoveClick: + id + + removeButton UIButton @@ -189,6 +208,6 @@ {550, 101} {550, 101} - 1181 + 1498 diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.h b/Classes/LinphoneUI/UIContactDetailsHeader.h index 86e5d69a5..7e45e9514 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.h +++ b/Classes/LinphoneUI/UIContactDetailsHeader.h @@ -20,6 +20,8 @@ #import #import +#import "ContactDetailsDelegate.h" + @interface UIContactDetailsHeader : UIViewController { UILabel *addressLabel; UIImageView *avatarImage; @@ -30,6 +32,7 @@ NSArray *propertyList; ABRecordRef contact; BOOL editing; + id contactDetailsDelegate; } @property (nonatomic, assign) ABRecordRef contact; @@ -40,6 +43,7 @@ @property (nonatomic, retain) IBOutlet UIView *normalView; @property (nonatomic, retain) IBOutlet UIView *editView; @property (nonatomic, retain) IBOutlet UITableView *tableView; +@property (nonatomic, retain) IBOutlet id contactDetailsDelegate; @property(nonatomic,getter=isEditing) BOOL editing; @@ -48,5 +52,6 @@ - (void)setEditing:(BOOL)editing animated:(BOOL)animated; - (void)setEditing:(BOOL)editing; - (BOOL)isEditing; +- (BOOL)isValid; @end diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 10650d957..1d7bfa4ef 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -31,15 +31,36 @@ @synthesize normalView; @synthesize editView; @synthesize tableView; +@synthesize contactDetailsDelegate; #pragma mark - Lifecycle Functions +- (void)initUIContactDetailsHeader { + propertyList = [[NSArray alloc] initWithObjects: + [NSNumber numberWithInt:kABPersonFirstNameProperty], + [NSNumber numberWithInt:kABPersonLastNameProperty], nil]; +} + - (id)init { - self = [super initWithNibName:@"UIContactDetailsHeader" bundle:[NSBundle mainBundle]]; + self = [super init]; if(self != nil) { - self->propertyList = [[NSArray alloc] initWithObjects: - [NSNumber numberWithInt:kABPersonFirstNameProperty], - [NSNumber numberWithInt:kABPersonLastNameProperty], nil]; + [self initUIContactDetailsHeader]; + } + return self; +} + +- (id)initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + if(self != nil) { + [self initUIContactDetailsHeader]; + } + return self; +} + +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { + self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; + if(self != nil) { + [self initUIContactDetailsHeader]; } return self; } @@ -73,7 +94,16 @@ } -#pragma mark - +#pragma mark - + +- (BOOL)isValid { + for (int i = 0; i < [propertyList count]; ++i) { + UIEditableTableViewCell *cell = (UIEditableTableViewCell *)[tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:0]]; + if([cell.detailTextField.text length] > 0) + return true; + } + return false; +} - (void)update { if(contact == NULL) { @@ -154,6 +184,9 @@ return editing; } +- (void)updateModification { + [contactDetailsDelegate onModification:nil]; +} #pragma mark - UITableViewDataSource Functions @@ -213,6 +246,13 @@ return YES; } +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + if(contactDetailsDelegate != nil) { + [self performSelector:@selector(updateModification) withObject:nil afterDelay:0]; + } + return YES; +} + - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { UIView *view = [textField superview]; // Find TableViewCell @@ -230,6 +270,9 @@ } else { [LinphoneLogger logc:LinphoneLoggerWarning format:"Not valid UIEditableTableViewCell"]; } + if(contactDetailsDelegate != nil) { + [self performSelector:@selector(updateModification) withObject:nil afterDelay:0]; + } return TRUE; } diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index 29b9f2460..cb1fd0dfa 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -451,6 +451,10 @@ static UICompositeViewDescription *compositeDescription = nil; } NSMutableSet *hiddenKeys = [NSMutableSet set]; +#ifndef DEBUG + [hiddenKeys addObject:@"release_button"]; +#endif + [hiddenKeys addObject:@"quit_button"]; // Hide for the moment [hiddenKeys addObject:@"about_button"]; // Hide for the moment diff --git a/Resources/contact_ok_disabled.png b/Resources/contact_ok_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..cf466e1db226b5413a7ab03230e107d640f156f3 GIT binary patch literal 2159 zcmb_eiC2=_7XMIGFf|%X8Vr1yrIu!cLpkM8VL6K!w!`%^*R&pRN1WdVj!MXPsg1b@s6K*}uKdbq}}Wn(ABB z0RYg%oN)320Ej(!Cc#v})y~5bTmjXyCyzS;E34xXr!)uTz@twD!~wvX4XYCZJSaed zOtpB7tFziL46e0PGl4!Y2003h(@~#!BheMYb_FCnJ*HB)wr4+iMSu z5z<9uHU~)y7$OfJ1g#{F5;R=3q3Gp*IluxdeErfxuzAClxb*jDn^-PK>J3aOQ-e*4 zhN*YQ!p7vGbmr6pmvvAyQQ(ZP@ST(gKYZsqLc#Q$HS@z_qXHk^vy+aF9yNmw%q=iY z(jGmz06Gr0$1zS&hT%A&b8E`^X_}aGd_ZalG!0*eU8yFF^9?QSz6+}akTh_Ot(-$&l+ZRSk!g;B z)>B9oAz>ALu?0z9=fFS)` z#Of!rg=ZqWUt3wEiIOY0C8WrTr^y~?$!&_jOU10E zMgmGvn#}`|2ACWz{*cZDTzZP;iAJ;?zKfV;JkiZQAcoN9An)`c$QecHp0Erimw1Of>Pc8 z#;UY(Y6M@w$o0YYRi9IpY3#Y$^6HR5=!b(@OlFege!1XfZpMwfMAI@rGTqpE*FZdF z1Lq>K`3&09BCkY^xFMza_-6MTk>){p6EDIxIe1{Pjxx_B(4?qt{oBX=b)NaFMKyRV*#qwv{vczv&D9K^>OQR%6oC~i@V+c0i6@3_cYpn! zs*bQTfwGu)Ux*Cvx?h!yL~sTsZ^?HGgQ29VY9MgiZWVqAU-rp+a68N%Km(9Z88+*Q5Wwgskpe(dP+4a7 zfX`2Wi=$nGwuqG)zKuK;6tXv=ftcRejxL38hTN6SFV@X|+Z8mH?P$y>sT6BB`MG!n zG!nkRwy&V@0z>}6Cfnkbu}nY-5u!umNY!m$Td@Lq3pjNbgBbdKq(gtfJBvrGOUgyPHBv6>_|$g51o4z^G2Li*-SpL*25Qr6UnFLZh@YHg9?K^Z5WH zMhPOdytXTqwfjag)*n}CGA{}ELBV3*FM)6Wy8)dY_FhBTs~Ku!MIgigMRaBcY%WRO%i_Nz%Gzb9i#nvZNqxmtGj%lP=*+ z?!CO?B`c(8f&r)j-r{>=(l31-q!#MeUMw9bPwdyqGR&w^Hcb!lw8lFg;nyO~_-qp1 zLLrn#n96(rUaMHA?`rS+lt5jF1|$^dSlahoFE4B8Xv}@r z3)jn~ppfW=DwShnLyG9dq+gmz9+5vbj;zq#{xo1Ck4Ml{_Lf9!L@~v3zpC~eeQsEd zPSyO#+7|zfyxD=7?srerpVh)i|7KT!hUT5OqQ9T8>qFQ}*C-n>S15j63~0Wcda{#5_cre*%Hg2`<1&r3&S09)1k z4sWO&zbs7#>uTmqmHyHf?n>{{Ts8^{v!~*Bek2L^{b#7I&;d4?%(XLO#WR`Vu(uNA z$Db9g0_?74rAMPkjK?_AqSz0q57-Ovf@t?uWYRo7g`r zUz%iTey%Qz-3yk#s0~Hl!R*gVt8H}0o~sahm7l$}TSfK1Xf)XectDf@ZS?Type IASKButtonSpecifier + + Key + Release_button + Title + Release + Type + IASKButtonSpecifier + StringsTable Root diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 9bae23f7a..ffb6306b1 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -141,6 +141,8 @@ C9C8254915AE204D00D493FA /* transfer_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254215AE204D00D493FA /* transfer_call_over.png */; }; C9C8254C15AE207B00D493FA /* options_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254B15AE207B00D493FA /* options_selected.png */; }; C9C8254F15AE256100D493FA /* transfer_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254E15AE256100D493FA /* transfer_call_disabled.png */; }; + D30BBD1815D402A7000F93DD /* contact_ok_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D30BBD1715D402A7000F93DD /* contact_ok_disabled.png */; }; + D30BBD1915D402A7000F93DD /* contact_ok_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D30BBD1715D402A7000F93DD /* contact_ok_disabled.png */; }; D3119E7215B6A4710005D4A4 /* contacts_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3119E7015B6A4710005D4A4 /* contacts_back_default.png */; }; D3119E7415B6A4710005D4A4 /* contacts_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3119E7115B6A4710005D4A4 /* contacts_back_over.png */; }; D3128FE115AABC7E00A2147A /* ContactDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */; }; @@ -1480,6 +1482,8 @@ C9C8254215AE204D00D493FA /* transfer_call_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_call_over.png; path = Resources/transfer_call_over.png; sourceTree = ""; }; C9C8254B15AE207B00D493FA /* options_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_selected.png; path = Resources/options_selected.png; sourceTree = ""; }; C9C8254E15AE256100D493FA /* transfer_call_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = transfer_call_disabled.png; path = Resources/transfer_call_disabled.png; sourceTree = ""; }; + D30BBD1215D3EFEB000F93DD /* ContactDetailsDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsDelegate.h; sourceTree = ""; }; + D30BBD1715D402A7000F93DD /* contact_ok_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_ok_disabled.png; path = Resources/contact_ok_disabled.png; sourceTree = ""; }; D3119E7015B6A4710005D4A4 /* contacts_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_back_default.png; path = Resources/contacts_back_default.png; sourceTree = ""; }; D3119E7115B6A4710005D4A4 /* contacts_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_back_over.png; path = Resources/contacts_back_over.png; sourceTree = ""; }; D3128FDE15AABC7E00A2147A /* ContactDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsViewController.h; sourceTree = ""; }; @@ -2149,6 +2153,7 @@ 22E0A820111C44E100B04932 /* ConsoleViewController.h */, 22E0A81F111C44E100B04932 /* ConsoleViewController.m */, 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */, + D30BBD1215D3EFEB000F93DD /* ContactDetailsDelegate.h */, D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */, D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */, D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */, @@ -2751,6 +2756,7 @@ D37C638D15AAD251009D0BAC /* contact_number.png */, D37C638C15AAD251009D0BAC /* contact_number_over.png */, D3C6526915AC228A0092A874 /* contact_ok_default.png */, + D30BBD1715D402A7000F93DD /* contact_ok_disabled.png */, D3C6526A15AC228A0092A874 /* contact_ok_over.png */, D354980E15875608000081D8 /* contacts_add_default.png */, D354980F15875608000081D8 /* contacts_add_over.png */, @@ -3753,6 +3759,7 @@ D339890815C6E16F00CAF1E4 /* dialer_alt_back_over_landscape~ipad.png in Resources */, D33CF34A15D3A03400CD4B85 /* linphone_icon_57@2x.png in Resources */, D33CF34C15D3A03400CD4B85 /* linphone_icon_72@2x.png in Resources */, + D30BBD1815D402A7000F93DD /* contact_ok_disabled.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4191,6 +4198,7 @@ D339890915C6E16F00CAF1E4 /* dialer_alt_back_over_landscape~ipad.png in Resources */, D33CF34B15D3A03400CD4B85 /* linphone_icon_57@2x.png in Resources */, D33CF34D15D3A03400CD4B85 /* linphone_icon_72@2x.png in Resources */, + D30BBD1915D402A7000F93DD /* contact_ok_disabled.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4462,6 +4470,7 @@ VIDEO_ENABLED, HAVE_X264, HAVE_SILK, + DEBUG, ); HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, @@ -4582,6 +4591,7 @@ GCC_PREPROCESSOR_DEFINITIONS = ( IN_LINPHONE, VIDEO_ENABLED, + DEBUG, ); HEADER_SEARCH_PATHS = ( submodules/linphone/coreapi, diff --git a/main.m b/main.m index 1535f7764..878eadce7 100644 --- a/main.m +++ b/main.m @@ -19,7 +19,21 @@ #import +#ifdef DEBUG + +// Dump exception +void uncaughtExceptionHandler(NSException *exception) { + NSLog(@"Crash: %@", exception); + NSLog(@"Stack Trace: %@", [exception callStackSymbols]); + // Internal error reporting +} + +#endif + int main(int argc, char *argv[]) { +#ifdef DEBUG + NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler); +#endif NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; From f6d7d8f74f7b1fe1263450503f110fe11cb9a5e6 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 9 Aug 2012 17:06:35 +0200 Subject: [PATCH 120/397] Remove pad view hiding when InCall view appear --- Classes/LinphoneUI/UICallBar.m | 190 ++++++++++++++++++--------------- 1 file changed, 102 insertions(+), 88 deletions(-) diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 2a7ae4deb..f71969973 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -197,8 +197,6 @@ setImage:[UIImage imageNamed:@"dialer_alt_back_over_landscape.png"] forState:(UIControlStateHighlighted | UIControlStateSelected)]; - [optionsView setHidden:TRUE]; - [padView setHidden:TRUE]; [super viewDidLoad]; } @@ -213,8 +211,8 @@ LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0; [self callUpdate:call state:state]; - [self hideOptions]; - [self hidePad]; + [self hideOptions:FALSE]; + [self hidePad:FALSE]; } - (void)viewWillDisappear:(BOOL)animated { @@ -275,8 +273,8 @@ LinphoneCallError: LinphoneCallIncoming: LinphoneCallOutgoing: - [self hidePad]; - [self hideOptions]; + [self hidePad:TRUE]; + [self hideOptions:TRUE]; default: break; } @@ -285,105 +283,121 @@ #pragma mark - -- (void)showPad{ +- (void)showPad:(BOOL)animated { [dialerButton setOn]; if([padView isHidden]) { - CGRect frame = [padView frame]; - int original_y = frame.origin.y; - frame.origin.y = [[self view] frame].size.height; - [padView setFrame:frame]; - [padView setHidden:FALSE]; - CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep after:0.0 - for:0.5 - options:UIViewAnimationOptionCurveEaseOut - animate:^{ + if(animated) { CGRect frame = [padView frame]; - frame.origin.y = original_y; - [padView setFrame:frame]; - }] autorelease], - nil - ] autorelease]; - [move run]; + int original_y = frame.origin.y; + frame.origin.y = [[self view] frame].size.height; + [padView setFrame:frame]; + [padView setHidden:FALSE]; + CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: + [[CPAnimationStep after:0.0 + for:0.5 + options:UIViewAnimationOptionCurveEaseOut + animate:^{ + CGRect frame = [padView frame]; + frame.origin.y = original_y; + [padView setFrame:frame]; + }] autorelease], + nil + ] autorelease]; + [move run]; + } else { + [padView setHidden:FALSE]; + } } } -- (void)hidePad{ +- (void)hidePad:(BOOL)animated { [dialerButton setOff]; if(![padView isHidden]) { - CGRect frame = [padView frame]; - int original_y = frame.origin.y; - - CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep after:0.0 - for:0.5 - options:UIViewAnimationOptionCurveEaseIn - animate:^{ + if(animated) { CGRect frame = [padView frame]; - frame.origin.y = [[self view] frame].size.height; - [padView setFrame:frame]; - }] autorelease], - [[CPAnimationStep after:0.0 - animate:^{ - CGRect frame = [padView frame]; - frame.origin.y = original_y; + int original_y = frame.origin.y; + + CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: + [[CPAnimationStep after:0.0 + for:0.5 + options:UIViewAnimationOptionCurveEaseIn + animate:^{ + CGRect frame = [padView frame]; + frame.origin.y = [[self view] frame].size.height; + [padView setFrame:frame]; + }] autorelease], + [[CPAnimationStep after:0.0 + animate:^{ + CGRect frame = [padView frame]; + frame.origin.y = original_y; + [padView setHidden:TRUE]; + [padView setFrame:frame]; + }] autorelease], + nil + ] autorelease]; + [move run]; + } else { [padView setHidden:TRUE]; - [padView setFrame:frame]; - }] autorelease], - nil - ] autorelease]; - [move run]; + } } } -- (void)showOptions{ +- (void)showOptions:(BOOL)animated { [optionsButton setOn]; if([optionsView isHidden]) { - CGRect frame = [optionsView frame]; - int original_y = frame.origin.y; - frame.origin.y = [[self view] frame].size.height; - [optionsView setFrame:frame]; - [optionsView setHidden:FALSE]; - CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep after:0.0 - for:0.5 - options:UIViewAnimationOptionCurveEaseOut - animate:^{ + if(animated) { CGRect frame = [optionsView frame]; - frame.origin.y = original_y; - [optionsView setFrame:frame]; - }] autorelease], - nil - ] autorelease]; - [move run]; + int original_y = frame.origin.y; + frame.origin.y = [[self view] frame].size.height; + [optionsView setFrame:frame]; + [optionsView setHidden:FALSE]; + CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: + [[CPAnimationStep after:0.0 + for:0.5 + options:UIViewAnimationOptionCurveEaseOut + animate:^{ + CGRect frame = [optionsView frame]; + frame.origin.y = original_y; + [optionsView setFrame:frame]; + }] autorelease], + nil + ] autorelease]; + [move run]; + } else { + [optionsView setHidden:FALSE]; + } } } -- (void)hideOptions{ +- (void)hideOptions:(BOOL)animated { [optionsButton setOff]; if(![optionsView isHidden]) { - CGRect frame = [optionsView frame]; - int original_y = frame.origin.y; - - CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep after:0.0 - for:0.5 - options:UIViewAnimationOptionCurveEaseIn - animate:^{ + if(animated) { CGRect frame = [optionsView frame]; - frame.origin.y = [[self view] frame].size.height; - [optionsView setFrame:frame]; - }] autorelease], - [[CPAnimationStep after:0.0 - animate:^{ - CGRect frame = [optionsView frame]; - frame.origin.y = original_y; + int original_y = frame.origin.y; + + CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: + [[CPAnimationStep after:0.0 + for:0.5 + options:UIViewAnimationOptionCurveEaseIn + animate:^{ + CGRect frame = [optionsView frame]; + frame.origin.y = [[self view] frame].size.height; + [optionsView setFrame:frame]; + }] autorelease], + [[CPAnimationStep after:0.0 + animate:^{ + CGRect frame = [optionsView frame]; + frame.origin.y = original_y; + [optionsView setHidden:TRUE]; + [optionsView setFrame:frame]; + }] autorelease], + nil + ] autorelease]; + [move run]; + } else { [optionsView setHidden:TRUE]; - [optionsView setFrame:frame]; - }] autorelease], - nil - ] autorelease]; - [move run]; + } } } @@ -392,14 +406,14 @@ - (IBAction)onPadClick:(id)sender { if([padView isHidden]) { - [self showPad]; + [self showPad:TRUE]; } else { - [self hidePad]; + [self hidePad:TRUE]; } } - (IBAction)onOptionsTransferClick:(id)sender { - [self hideOptions]; + [self hideOptions:TRUE]; // Go to dialer view DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]], DialerViewController); if(controller != nil) { @@ -409,7 +423,7 @@ } - (IBAction)onOptionsAddClick:(id)sender { - [self hideOptions]; + [self hideOptions:TRUE]; // Go to dialer view DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]], DialerViewController); if(controller != nil) { @@ -420,9 +434,9 @@ - (IBAction)onOptionsClick:(id)sender { if([optionsView isHidden]) { - [self showOptions]; + [self showOptions:TRUE]; } else { - [self hideOptions]; + [self hideOptions:TRUE]; } } From bd0acbcc4b5889f019f461f36b22e4906e6ba01c Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 9 Aug 2012 18:05:27 +0200 Subject: [PATCH 121/397] Fix Settings view: element update when chosen element change --- Classes/LinphoneAppDelegate.m | 14 +++--- Classes/SettingsViewController.m | 61 +++++++++++++----------- Settings/InAppSettings.bundle/Root.plist | 2 +- 3 files changed, 43 insertions(+), 34 deletions(-) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index c6ef17ab8..d12c0cf26 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -170,12 +170,14 @@ int __aeabi_idiv(int a, int b) { if(![LinphoneManager isLcReady]) { [[LinphoneManager instance] startLibLinphone]; } - [self setupGSMInteraction]; - - // Only execute one time at application start - if(!started) { - started = TRUE; - [[PhoneMainView instance] startUp]; + if([LinphoneManager isLcReady]) { + [self setupGSMInteraction]; + + // Only execute one time at application start + if(!started) { + started = TRUE; + [[PhoneMainView instance] startUp]; + } } } diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index cb1fd0dfa..b834b7831 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -187,11 +187,6 @@ return self; } -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [super tableView:tableView didSelectRowAtIndexPath:indexPath]; - [tableView deselectRowAtIndexPath:indexPath animated:YES]; // Fix IOS4 issue -} - - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell * cell = [super tableView:tableView cellForRowAtIndexPath:indexPath]; @@ -280,8 +275,11 @@ - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated { [UINavigationControllerEx removeBackground:viewController.view]; - - [viewController viewWillAppear:FALSE]; // Force load: Load Title + UIViewController *oldTopViewController = self.topViewController; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [oldTopViewController viewWillDisappear:animated]; + } + [viewController viewWillAppear:animated]; // Force view UILabel *labelTitleView = [[UILabel alloc] init]; labelTitleView.backgroundColor = [UIColor clearColor]; labelTitleView.textColor = [UIColor colorWithRed:0x41/255.0f green:0x48/255.0f blue:0x4f/255.0f alpha:1.0]; @@ -294,6 +292,28 @@ viewController.navigationItem.titleView = labelTitleView; [super pushViewController:viewController animated:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [self.topViewController viewDidAppear:animated]; + [oldTopViewController viewDidDisappear:animated]; + } +} + +- (UIViewController *)popViewControllerAnimated:(BOOL)animated { + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [self.topViewController viewWillDisappear:animated]; + UIViewController *nextView = nil; + int count = [self.viewControllers count]; + if(count > 1) { + nextView = [self.viewControllers objectAtIndex:count - 2]; + } + [nextView viewWillAppear:animated]; + } + UIViewController * ret = [super popViewControllerAnimated:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [ret viewDidDisappear:animated]; + [self.topViewController viewDidAppear:animated]; + } + return ret; } - (void)setViewControllers:(NSArray *)viewControllers { @@ -372,9 +392,6 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewWillDisappear:animated]; - } [settingsController dismiss:self]; // Set observer [[NSNotificationCenter defaultCenter] removeObserver:self @@ -384,9 +401,6 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewWillAppear:animated]; - } // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(appSettingChanged:) @@ -394,20 +408,6 @@ static UICompositeViewDescription *compositeDescription = nil; object:nil]; } -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewDidAppear:animated]; - } -} - -- (void)viewDidDisappear:(BOOL)animated { - [super viewDidDisappear:animated]; - if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { - [settingsController viewDidDisappear:animated]; - } -} - #pragma mark - Event Functions @@ -495,4 +495,11 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender { } +- (void)settingsViewController:(IASKAppSettingsViewController*)sender buttonTappedForSpecifier:(IASKSpecifier*)specifier { + NSString *key = [specifier.specifierDict objectForKey:kIASKKey]; +#ifdef DEBUG + if([key isEqual:@"release_button"]) { + } +#endif +} @end diff --git a/Settings/InAppSettings.bundle/Root.plist b/Settings/InAppSettings.bundle/Root.plist index e9dc102f0..ebddc44c5 100644 --- a/Settings/InAppSettings.bundle/Root.plist +++ b/Settings/InAppSettings.bundle/Root.plist @@ -178,7 +178,7 @@ Key - Release_button + release_button Title Release Type From d507574ac22ee767f0bee3c9da29482f1f63004c Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 9 Aug 2012 18:52:53 +0200 Subject: [PATCH 122/397] Fix rotation issue --- Classes/LinphoneUI/UICompositeViewController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 5483b3b71..2a28ad1a8 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -281,7 +281,7 @@ } } } else if([rotationPreference isEqualToString:@"portrait"]) { - if ([currentViewDescription landscapeMode]) { + if ([currentViewDescription portraitMode]) { if (UIDeviceOrientationIsPortrait(deviceOrientation)) { if(deviceOrientation == UIDeviceOrientationUnknown) { return [UIApplication sharedApplication].statusBarOrientation; From 859ad32e44fc500d8b4b1d1c14d3eb000ca39320 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 10 Aug 2012 00:08:40 +0200 Subject: [PATCH 123/397] Advanced memory leak fixes --- Classes/LinphoneApp.xib | 36 +++++------------- Classes/LinphoneAppDelegate.h | 1 - Classes/LinphoneAppDelegate.m | 3 +- Classes/LinphoneManager.h | 7 +++- Classes/LinphoneManager.m | 37 ++++++++++++------- .../LinphoneUI/UICompositeViewController.m | 5 ++- Classes/LinphoneUI/UILongTouchButton.m | 6 +++ Classes/LinphoneUI/UIStateBar.m | 2 +- Classes/SettingsViewController.m | 6 +++ Classes/Utils/FastAddressBook.m | 1 + 10 files changed, 56 insertions(+), 48 deletions(-) diff --git a/Classes/LinphoneApp.xib b/Classes/LinphoneApp.xib index d2f9903f2..a6ba1dc38 100644 --- a/Classes/LinphoneApp.xib +++ b/Classes/LinphoneApp.xib @@ -2,19 +2,19 @@ 1296 - 11E53 - 2549 - 1138.47 - 569.00 + 11D50 + 2182 + 1138.32 + 568.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 1498 + 1181 - IBProxyObject + IBUIWindow IBUICustomObject IBUIViewController - IBUIWindow + IBProxyObject com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -83,14 +83,6 @@ 10 - - - window - - - - 12 - @@ -104,6 +96,7 @@ 2 + LinphoneWindow -1 @@ -154,17 +147,6 @@ LinphoneAppDelegate NSObject - - window - UIWindow - - - window - - window - UIWindow - - IBProjectSource ./Classes/LinphoneAppDelegate.h @@ -256,6 +238,6 @@ YES 3 - 1498 + 1181 diff --git a/Classes/LinphoneAppDelegate.h b/Classes/LinphoneAppDelegate.h index bc83e5280..2983bccb0 100644 --- a/Classes/LinphoneAppDelegate.h +++ b/Classes/LinphoneAppDelegate.h @@ -33,7 +33,6 @@ BOOL started; } -@property (nonatomic, retain) IBOutlet UIWindow *window; @property (assign) BOOL started; @end diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index d12c0cf26..1075712d8 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -43,7 +43,6 @@ int __aeabi_idiv(int a, int b) { @implementation LinphoneAppDelegate -@synthesize window; @synthesize started; @@ -58,7 +57,6 @@ int __aeabi_idiv(int a, int b) { } - (void)dealloc { - [window release]; [super dealloc]; } @@ -85,6 +83,7 @@ int __aeabi_idiv(int a, int b) { } - (void)applicationWillResignActive:(UIApplication *)application { + if(![LinphoneManager isLcReady]) return; LinphoneCore* lc = [LinphoneManager getLc]; LinphoneCall* call = linphone_core_get_current_call(lc); if (call == NULL) diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 7e3adc7ef..c212ea7d8 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -75,7 +75,10 @@ typedef struct _LinphoneCallAppData { @public CallContext currentCallContextBeforeGoingBackground; } -+ (LinphoneManager*) instance; ++ (LinphoneManager*)instance; +#ifdef DEBUG ++ (void)instanceRelease; +#endif + (LinphoneCore*) getLc; + (BOOL)isLcReady; + (BOOL)runningOnIpad; @@ -89,7 +92,7 @@ typedef struct _LinphoneCallAppData { - (BOOL)resignActive; - (void)becomeActive; -- (void)kickOffNetworkConnection; ++ (void)kickOffNetworkConnection; - (void)setupNetworkReachabilityCallback; - (void)refreshRegisters; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 98cc5bad0..b7bfded46 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -155,6 +155,14 @@ struct codec_name_pref_table codec_pref_table[]={ return theLinphoneManager; } +#ifdef DEBUG ++ (void)instanceRelease { + if(theLinphoneManager != nil) { + [theLinphoneManager release]; + theLinphoneManager = nil; + } +} +#endif #pragma mark - Lifecycle Functions @@ -376,18 +384,17 @@ static void linphone_iphone_text_received(LinphoneCore *lc, LinphoneChatRoom *ro #pragma mark - Network Functions -- (void)kickOffNetworkConnection { ++ (void)kickOffNetworkConnection { /*start a new thread to avoid blocking the main ui in case of peer host failure*/ - [NSThread detachNewThreadSelector:@selector(runNetworkConnection) toTarget:self withObject:nil]; -} - -- (void)runNetworkConnection { - CFWriteStreamRef writeStream; - CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"192.168.0.200"/*"linphone.org"*/, 15000, nil, &writeStream); - CFWriteStreamOpen (writeStream); - const char* buff="hello"; - CFWriteStreamWrite (writeStream,(const UInt8*)buff,strlen(buff)); - CFWriteStreamClose (writeStream); + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + CFWriteStreamRef writeStream; + CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)@"192.168.0.200"/*"linphone.org"*/, 15000, nil, &writeStream); + CFWriteStreamOpen (writeStream); + const char* buff="hello"; + CFWriteStreamWrite (writeStream,(const UInt8*)buff,strlen(buff)); + CFWriteStreamClose (writeStream); + CFRelease(writeStream); + }); } static void showNetworkFlags(SCNetworkReachabilityFlags flags){ @@ -424,7 +431,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach if ((flags == 0) || (flags & networkDownFlags)) { linphone_core_set_network_reachable([LinphoneManager getLc],false); lLinphoneMgr.connectivity = none; - [[LinphoneManager instance] kickOffNetworkConnection]; + [LinphoneManager kickOffNetworkConnection]; } else { Connectivity newConnectivity; BOOL isWifiOnly = lp_config_get_int(linphone_core_get_config([LinphoneManager getLc]),"app","wifi_only_preference",FALSE); @@ -645,6 +652,10 @@ static LinphoneCoreVTable linphonec_vtable = { [mIterateTimer invalidate]; AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setDelegate:nil]; + if (settingsStore != nil) { + [settingsStore release]; + settingsStore = nil; + } if (theLinphoneCore != nil) { //just in case application terminate before linphone core initialization [LinphoneLogger logc:LinphoneLoggerLog format:"Destroy linphonecore"]; linphone_core_destroy(theLinphoneCore); @@ -688,7 +699,7 @@ static LinphoneCoreVTable linphonec_vtable = { return; } //kick up network cnx, just in case - [self kickOffNetworkConnection]; + [LinphoneManager kickOffNetworkConnection]; [self refreshRegisters]; linphone_core_iterate(theLinphoneCore); } diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 2a28ad1a8..9ab23d6b3 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -126,7 +126,8 @@ [contentView release]; [stateBarView release]; [tabBarView release]; - [viewControllerCache removeAllObjects]; + [viewControllerCache release]; + [viewTransition release]; [currentViewDescription release]; [super dealloc]; @@ -251,7 +252,7 @@ if(name != nil) { controller = [viewControllerCache objectForKey:name]; if(controller == nil) { - controller = [[NSClassFromString(name) alloc] init]; + controller = [[[NSClassFromString(name) alloc] init] autorelease]; [viewControllerCache setValue:controller forKey:name]; [controller view]; // Load the view } diff --git a/Classes/LinphoneUI/UILongTouchButton.m b/Classes/LinphoneUI/UILongTouchButton.m index 012b2ef0e..c4f1b0a21 100644 --- a/Classes/LinphoneUI/UILongTouchButton.m +++ b/Classes/LinphoneUI/UILongTouchButton.m @@ -54,6 +54,12 @@ return self; } +- (void)dealloc { + [self removeTarget:self action:@selector(___touchDown:) forControlEvents:UIControlEventTouchDown]; + [self removeTarget:self action:@selector(___touchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside]; + [super dealloc]; +} + - (void)___touchDown:(id) sender { [self performSelector:@selector(doLongTouch) withObject:nil afterDelay:0.5]; } diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index 45914a3b9..af07b4f2e 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -161,7 +161,7 @@ NSTimer *callSecurityTimer; break; case LinphoneRegistrationNone: registrationStateImage.hidden = NO; - image =[UIImage imageNamed:@"led_disconnected.png"]; + image = [UIImage imageNamed:@"led_disconnected.png"]; break; case LinphoneRegistrationProgress: registrationStateImage.hidden = NO; diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index b834b7831..e5db3b200 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -348,6 +348,8 @@ - (void)dealloc { // Remove all observer [[NSNotificationCenter defaultCenter] removeObserver:self]; + [settingsController release]; + [navigationController release]; [super dealloc]; } @@ -499,6 +501,10 @@ static UICompositeViewDescription *compositeDescription = nil; NSString *key = [specifier.specifierDict objectForKey:kIASKKey]; #ifdef DEBUG if([key isEqual:@"release_button"]) { + [[UIApplication sharedApplication].keyWindow.rootViewController release]; + [[UIApplication sharedApplication].keyWindow setRootViewController:nil]; + [[LinphoneManager instance] destroyLibLinphone]; + [LinphoneManager instanceRelease]; } #endif } diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index 04ff318d5..7065ebd2d 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -172,6 +172,7 @@ void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void - (void)dealloc { ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, self); CFRelease(addressBook); + [addressBookMap release]; [super dealloc]; } From 9feb13682fc2b7dc95bf4654c6fcd781f27eb942 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 10 Aug 2012 01:21:30 +0200 Subject: [PATCH 124/397] Better UIViewController handling in UICompositeViewController --- .../LinphoneUI/UICompositeViewController.h | 6 +- .../LinphoneUI/UICompositeViewController.m | 160 +++++++++++------- Classes/LinphoneUI/UIMainBar.m | 10 +- Classes/SettingsViewController.m | 4 + Settings/InAppSettings.bundle/Root.plist | 8 + 5 files changed, 120 insertions(+), 68 deletions(-) diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index 98e59a478..8a64479d3 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -66,11 +66,8 @@ @interface UICompositeViewController : TPMultiLayoutViewController { @private UIView *stateBarView; - UIViewController *stateBarViewController; UIView *contentView; - UIViewController *contentViewController; UIView *tabBarView; - UIViewController *tabBarViewController; NSMutableDictionary *viewControllerCache; @@ -91,5 +88,8 @@ - (void)setToolBarHidden:(BOOL) hidden; - (UIViewController *)getCurrentViewController; - (UIInterfaceOrientation)currentOrientation; +#ifdef DEBUG +- (void)clearCache; +#endif @end diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 9ab23d6b3..e81aca9be 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -78,6 +78,13 @@ [super dealloc]; } +@end +@interface UICompositeViewController () + +@property (nonatomic, retain) UIViewController *stateBarViewController; +@property (nonatomic, retain) UIViewController *tabBarViewController; +@property (nonatomic, retain) UIViewController *contentViewController; + @end @implementation UICompositeViewController @@ -85,6 +92,9 @@ @synthesize stateBarView; @synthesize contentView; @synthesize tabBarView; +@synthesize tabBarViewController = _tabBarViewController; +@synthesize stateBarViewController = _stateBarViewController; +@synthesize contentViewController = _contentViewController; @synthesize viewTransition; @@ -123,6 +133,10 @@ - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [self.stateBarViewController release]; + [self.tabBarViewController release]; + [self.contentViewController release]; + [contentView release]; [stateBarView release]; [tabBarView release]; @@ -134,6 +148,21 @@ } +#pragma mark - Property Functions + +- (UIViewController*)stateBarViewController { + return _stateBarViewController; +} + +- (UIViewController*)contentViewController { + return _contentViewController; +} + +- (UIViewController*)tabBarViewController { + return _tabBarViewController; +} + + #pragma mark - ViewController Functions - (void)viewDidLoad { @@ -148,56 +177,56 @@ - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - [contentViewController viewWillAppear:animated]; - [tabBarViewController viewWillAppear:animated]; - [stateBarViewController viewWillAppear:animated]; + [self.contentViewController viewWillAppear:animated]; + [self.tabBarViewController viewWillAppear:animated]; + [self.stateBarViewController viewWillAppear:animated]; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; - [contentViewController viewDidAppear:animated]; - [tabBarViewController viewDidAppear:animated]; - [stateBarViewController viewDidAppear:animated]; + [self.contentViewController viewDidAppear:animated]; + [self.tabBarViewController viewDidAppear:animated]; + [self.stateBarViewController viewDidAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - [contentViewController viewWillDisappear:animated]; - [tabBarViewController viewWillDisappear:animated]; - [stateBarViewController viewWillDisappear:animated]; + [self.contentViewController viewWillDisappear:animated]; + [self.tabBarViewController viewWillDisappear:animated]; + [self.stateBarViewController viewWillDisappear:animated]; [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; - [contentViewController viewDidDisappear:animated]; - [tabBarViewController viewDidDisappear:animated]; - [stateBarViewController viewDidDisappear:animated]; + [self.contentViewController viewDidDisappear:animated]; + [self.tabBarViewController viewDidDisappear:animated]; + [self.stateBarViewController viewDidDisappear:animated]; } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { currentOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; [super willRotateToInterfaceOrientation:currentOrientation duration:duration]; - [contentViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; - [tabBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; - [stateBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; + [self.contentViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; + [self.tabBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; + [self.stateBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; } - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [super willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; - [contentViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; - [tabBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; - [stateBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [self.contentViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [self.tabBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [self.stateBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; [self update:nil tabBar:nil stateBar:nil fullscreen:nil]; } - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; - [contentViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; - [tabBarViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; - [stateBarViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [self.contentViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [self.tabBarViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [self.stateBarViewController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { @@ -219,6 +248,10 @@ #pragma mark - +- (void)clearCache { + [viewControllerCache removeAllObjects]; +} + - (UIInterfaceOrientation)currentOrientation { return currentOrientation; } @@ -328,26 +361,29 @@ [super willAnimateRotationToInterfaceOrientation:correctOrientation duration:0]; [super didRotateFromInterfaceOrientation:orientation]; - orientation = contentViewController.interfaceOrientation; - [contentViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; - [contentViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:0]; - [contentViewController didRotateFromInterfaceOrientation:orientation]; + orientation = self.contentViewController.interfaceOrientation; + [self.contentViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; + [self.contentViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:0]; + [self.contentViewController didRotateFromInterfaceOrientation:orientation]; - orientation = tabBarViewController.interfaceOrientation; - [tabBarViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; - [tabBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:0]; - [tabBarViewController didRotateFromInterfaceOrientation:orientation]; + orientation = self.tabBarViewController.interfaceOrientation; + [self.tabBarViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; + [self.tabBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:0]; + [self.tabBarViewController didRotateFromInterfaceOrientation:orientation]; - orientation = stateBarViewController.interfaceOrientation; - [stateBarViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; - [stateBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:0]; - [stateBarViewController didRotateFromInterfaceOrientation:orientation]; + orientation = self.stateBarViewController.interfaceOrientation; + [self.stateBarViewController willRotateToInterfaceOrientation:correctOrientation duration:0]; + [self.stateBarViewController willAnimateRotationToInterfaceOrientation:correctOrientation duration:0]; + [self.stateBarViewController didRotateFromInterfaceOrientation:orientation]; } #define IPHONE_STATUSBAR_HEIGHT 20 - (void)update: (UICompositeViewDescription*) description tabBar:(NSNumber*)tabBar stateBar:(NSNumber*)stateBar fullscreen:(NSNumber*)fullscreen { + UIViewController *oldContentViewController = self.contentViewController; + UIViewController *oldStateBarViewController = self.stateBarViewController; + UIViewController *oldTabBarViewController = self.tabBarViewController; // Copy view description UICompositeViewDescription *oldViewDescription = nil; @@ -370,18 +406,22 @@ [tabBarView.layer addAnimation:viewTransition forKey:@"transition"]; } } - - [UICompositeViewController removeSubView: contentViewController]; - if(oldViewDescription != nil && tabBarViewController != nil && oldViewDescription.tabBar != currentViewDescription.tabBar) { - [UICompositeViewController removeSubView: tabBarViewController]; - } - if(oldViewDescription != nil && stateBarViewController != nil && oldViewDescription.stateBar != currentViewDescription.stateBar) { - [UICompositeViewController removeSubView: stateBarViewController]; - } - stateBarViewController = [self getCachedController:description.stateBar]; - contentViewController = [self getCachedController:description.content]; - tabBarViewController = [self getCachedController:description.tabBar]; + UIViewController *newContentViewController = [self getCachedController:description.content]; + UIViewController *newStateBarViewController = [self getCachedController:description.stateBar]; + UIViewController *newTabBarViewController = [self getCachedController:description.tabBar]; + + [UICompositeViewController removeSubView: oldContentViewController]; + if(oldTabBarViewController != nil && oldTabBarViewController != newTabBarViewController) { + [UICompositeViewController removeSubView:oldTabBarViewController]; + } + if(oldStateBarViewController != nil && oldStateBarViewController != newStateBarViewController) { + [UICompositeViewController removeSubView:oldStateBarViewController]; + } + + self.stateBarViewController = newStateBarViewController; + self.contentViewController = newContentViewController; + self.tabBarViewController = newTabBarViewController; // Update rotation UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]]; @@ -442,7 +482,7 @@ if(currentViewDescription.fullscreen) origin = 0; - if(stateBarViewController != nil && currentViewDescription.stateBarEnabled) { + if(self.stateBarViewController != nil && currentViewDescription.stateBarEnabled) { contentFrame.origin.y = origin + stateBarFrame.size.height; stateBarFrame.origin.y = origin; } else { @@ -452,15 +492,15 @@ // Resize TabBar CGRect tabFrame = tabBarView.frame; - if(tabBarViewController != nil && currentViewDescription.tabBarEnabled) { + if(self.tabBarViewController != nil && currentViewDescription.tabBarEnabled) { tabFrame.origin.y = viewFrame.size.height; tabFrame.origin.x = viewFrame.size.width; - tabFrame.size.height = tabBarViewController.view.frame.size.height; - tabFrame.size.width = tabBarViewController.view.frame.size.width; + tabFrame.size.height = self.tabBarViewController.view.frame.size.height; + tabFrame.size.width = self.tabBarViewController.view.frame.size.width; tabFrame.origin.y -= tabFrame.size.height; tabFrame.origin.x -= tabFrame.size.width; contentFrame.size.height = tabFrame.origin.y - contentFrame.origin.y; - for (UIView *view in tabBarViewController.view.subviews) { + for (UIView *view in self.tabBarViewController.view.subviews) { if(view.tag == -1) { contentFrame.size.height += view.frame.origin.y; break; @@ -478,15 +518,15 @@ // Set frames [contentView setFrame: contentFrame]; - [contentViewController.view setFrame: [contentView bounds]]; + [self.contentViewController.view setFrame: [contentView bounds]]; [tabBarView setFrame: tabFrame]; - CGRect frame = [tabBarViewController.view frame]; + CGRect frame = [self.tabBarViewController.view frame]; frame.size.width = [tabBarView bounds].size.width; - [tabBarViewController.view setFrame:frame]; + [self.tabBarViewController.view setFrame:frame]; [stateBarView setFrame: stateBarFrame]; - frame = [stateBarViewController.view frame]; + frame = [self.stateBarViewController.view frame]; frame.size.width = [stateBarView bounds].size.width; - [stateBarViewController.view setFrame:frame]; + [self.stateBarViewController.view setFrame:frame]; // Commit animation if(tabBar != nil || stateBar != nil || fullscreen != nil) { @@ -495,12 +535,12 @@ // Change view if(description != nil) { - [UICompositeViewController addSubView: contentViewController view:contentView]; - if(oldViewDescription == nil || oldViewDescription.tabBar != currentViewDescription.tabBar) { - [UICompositeViewController addSubView: tabBarViewController view:tabBarView]; + [UICompositeViewController addSubView: self.contentViewController view:contentView]; + if(oldTabBarViewController == nil || oldTabBarViewController != self.tabBarViewController) { + [UICompositeViewController addSubView: self.tabBarViewController view:tabBarView]; } - if(oldViewDescription == nil || oldViewDescription.stateBar != currentViewDescription.stateBar) { - [UICompositeViewController addSubView: stateBarViewController view:stateBarView]; + if(oldStateBarViewController == nil || oldStateBarViewController != self.stateBarViewController) { + [UICompositeViewController addSubView: self.stateBarViewController view:stateBarView]; } } @@ -528,7 +568,7 @@ } - (UIViewController *) getCurrentViewController { - return contentViewController; + return [[self.contentViewController retain] autorelease]; } @end diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index 2f12c029e..e513babd5 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -310,26 +310,26 @@ #pragma mark - Action Functions -- (IBAction)onHistoryClick: (id) sender { +- (IBAction)onHistoryClick:(id)event { [[PhoneMainView instance] changeCurrentView:[HistoryViewController compositeViewDescription]]; } -- (IBAction)onContactsClick: (id) event { +- (IBAction)onContactsClick:(id)event { [ContactSelection setSelectionMode:ContactSelectionModeNone]; [ContactSelection setAddAddress:nil]; [ContactSelection setSipFilter:FALSE]; [[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription]]; } -- (IBAction)onDialerClick: (id) event { +- (IBAction)onDialerClick:(id)event { [[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]]; } -- (IBAction)onSettingsClick: (id) event { +- (IBAction)onSettingsClick:(id)event { [[PhoneMainView instance] changeCurrentView:[SettingsViewController compositeViewDescription]]; } -- (IBAction)onChatClick: (id) event { +- (IBAction)onChatClick:(id)event { [[PhoneMainView instance] changeCurrentView:[ChatViewController compositeViewDescription]]; } diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index e5db3b200..b0c555e68 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -19,6 +19,7 @@ #import "SettingsViewController.h" #import "LinphoneManager.h" +#import "PhoneMainView.h" #import "UILinphone.h" #import "UACellBackgroundView.h" @@ -455,6 +456,7 @@ static UICompositeViewDescription *compositeDescription = nil; #ifndef DEBUG [hiddenKeys addObject:@"release_button"]; + [hiddenKeys addObject:@"clear_cache_button"]; #endif [hiddenKeys addObject:@"quit_button"]; // Hide for the moment @@ -505,6 +507,8 @@ static UICompositeViewDescription *compositeDescription = nil; [[UIApplication sharedApplication].keyWindow setRootViewController:nil]; [[LinphoneManager instance] destroyLibLinphone]; [LinphoneManager instanceRelease]; + } else if([key isEqual:@"clear_cache_button"]) { + [[PhoneMainView instance].mainViewController clearCache]; } #endif } diff --git a/Settings/InAppSettings.bundle/Root.plist b/Settings/InAppSettings.bundle/Root.plist index ebddc44c5..0d496d742 100644 --- a/Settings/InAppSettings.bundle/Root.plist +++ b/Settings/InAppSettings.bundle/Root.plist @@ -184,6 +184,14 @@ Type IASKButtonSpecifier + + Key + clear_cache_button + Title + Clear cache + Type + IASKButtonSpecifier + StringsTable Root From 1efd76a60c8686a5ebe615a0886d7ed4cbceabd1 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 10 Aug 2012 10:42:18 +0200 Subject: [PATCH 125/397] Optimization + fix previous commit --- Classes/ContactsTableViewController.m | 4 +--- Classes/DialerViewController.m | 5 +++++ Classes/DialerViewController.xib | 1 - Classes/InCallViewController.m | 4 ++-- submodules/linphone | 2 +- 5 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index acf33fe4d..32afdc3c7 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -56,9 +56,7 @@ - (void)dealloc { ABAddressBookUnregisterExternalChangeCallback(addressBook, sync_address_book, self); CFRelease(addressBook); - [addressBookMap removeAllObjects]; [addressBookMap release]; - [avatarMap removeAllObjects]; [avatarMap release]; [super dealloc]; } @@ -72,7 +70,6 @@ // Reset Address book [addressBookMap removeAllObjects]; - [avatarMap removeAllObjects]; NSArray *lContacts = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook); for (id lPerson in lContacts) { @@ -142,6 +139,7 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { ContactsTableViewController* controller = (ContactsTableViewController*)context; ABAddressBookRevert(addressBook); + [controller->avatarMap removeAllObjects]; [controller loadData]; } diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 61c77c9ca..a37075a8e 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -220,6 +220,11 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - UITextFieldDelegate Functions +- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { + //[textField performSelector:@selector() withObject:nil afterDelay:0]; + return YES; +} + - (BOOL)textFieldShouldReturn:(UITextField *)textField { if (textField == addressField) { [addressField resignFirstResponder]; diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index 0b5f30409..d2f01509d 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -606,7 +606,6 @@ {{214, 0}, {106, 69}} - _NS:9 NO IBCocoaTouchFramework diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 2a3bbe6bd..18aaf67ea 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -174,7 +174,7 @@ static UICompositeViewDescription *compositeDescription = nil; UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)]; [singleFingerTap setNumberOfTapsRequired:1]; [singleFingerTap setCancelsTouchesInView: FALSE]; - [[[UIApplication sharedApplication].delegate window] addGestureRecognizer:singleFingerTap]; + [[PhoneMainView instance].view addGestureRecognizer:singleFingerTap]; [singleFingerTap release]; videoZoomHandler = [[VideoZoomHandler alloc] init]; @@ -516,7 +516,7 @@ static void hideSpinner(LinphoneCall* call, void* user_data) { otherButtonTitles:nil]; visibleActionSheet.actionSheetStyle = UIActionSheetStyleDefault; - [visibleActionSheet showInView:[[UIApplication sharedApplication].delegate window]]; + [visibleActionSheet showInView:[PhoneMainView instance].view]; /* start cancel timer */ cd.timeout = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(dismissActionSheet:) userInfo:nil repeats:NO]; diff --git a/submodules/linphone b/submodules/linphone index e93d9096f..c97efee37 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit e93d9096ff433d3195c177e4c767881406e71d88 +Subproject commit c97efee37aea1ccae3c476a108e988e47f38faa4 From ec2a7a68567f0ee237fafbeeca4f529868709bda Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 10 Aug 2012 13:21:14 +0200 Subject: [PATCH 126/397] Don't use anymore shouldAutorotateToInterfaceOrientation: Private interface rotation Fix adjustToFit in dialer view --- Classes/DialerViewController.m | 2 + Classes/DialerViewController.xib | 2 +- Classes/DialerViewController~ipad.xib | 2 - Classes/LinphoneUI/UIAddressTextField.m | 2 +- .../LinphoneUI/UICompositeViewController.m | 76 +++++++++++-------- Classes/LinphoneUI/UIDigitButton.m | 3 +- Classes/PhoneMainView.m | 8 +- 7 files changed, 52 insertions(+), 43 deletions(-) diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index a37075a8e..225be3f20 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -156,6 +156,8 @@ static UICompositeViewDescription *compositeDescription = nil; [nineButton setDigit:'9']; [starButton setDigit:'*']; [sharpButton setDigit:'#']; + + [addressField setAdjustsFontSizeToFitWidth:TRUE]; // Not put it in IB: issue with placeholder size } #pragma mark - Event Functions diff --git a/Classes/DialerViewController.xib b/Classes/DialerViewController.xib index d2f01509d..68299157f 100644 --- a/Classes/DialerViewController.xib +++ b/Classes/DialerViewController.xib @@ -82,7 +82,6 @@ 3 MQA - YES 15 1 @@ -606,6 +605,7 @@ {{214, 0}, {106, 69}} + _NS:9 NO IBCocoaTouchFramework diff --git a/Classes/DialerViewController~ipad.xib b/Classes/DialerViewController~ipad.xib index d8f7b2398..9e9abaae9 100644 --- a/Classes/DialerViewController~ipad.xib +++ b/Classes/DialerViewController~ipad.xib @@ -77,7 +77,6 @@ 3 MQA - YES 15 1 @@ -603,7 +602,6 @@ {{126, 0}, {186, 85}} - _NS:9 NO IBIPadFramework diff --git a/Classes/LinphoneUI/UIAddressTextField.m b/Classes/LinphoneUI/UIAddressTextField.m index 0e6b316e1..aefc0cf8b 100644 --- a/Classes/LinphoneUI/UIAddressTextField.m +++ b/Classes/LinphoneUI/UIAddressTextField.m @@ -21,7 +21,7 @@ @implementation UIAddressTextField -- (void) setText:(NSString *)text { +- (void)setText:(NSString *)text { [super setText:text]; [self sendActionsForControlEvents:UIControlEventEditingChanged]; } diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index e81aca9be..a57ff28b9 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -180,6 +180,11 @@ [self.contentViewController viewWillAppear:animated]; [self.tabBarViewController viewWillAppear:animated]; [self.stateBarViewController viewWillAppear:animated]; + + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(orientationDidChange:) + name:UIDeviceOrientationDidChangeNotification + object:nil]; [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; } @@ -197,6 +202,10 @@ [self.stateBarViewController viewWillDisappear:animated]; [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; + + [[NSNotificationCenter defaultCenter] removeObserver:self + name:UIDeviceOrientationDidChangeNotification + object:nil]; } - (void)viewDidDisappear:(BOOL)animated { @@ -207,18 +216,18 @@ } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - currentOrientation = [self getCorrectInterfaceOrientation:toInterfaceOrientation]; - [super willRotateToInterfaceOrientation:currentOrientation duration:duration]; - [self.contentViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; - [self.tabBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; - [self.stateBarViewController willRotateToInterfaceOrientation:currentOrientation duration:duration]; + currentOrientation = toInterfaceOrientation; + [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.contentViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.tabBarViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.stateBarViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; } - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - [super willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; - [self.contentViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; - [self.tabBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; - [self.stateBarViewController willAnimateRotationToInterfaceOrientation:currentOrientation duration:duration]; + [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.contentViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.tabBarViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.stateBarViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; [self update:nil tabBar:nil stateBar:nil fullscreen:nil]; } @@ -230,23 +239,24 @@ } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - if(currentViewDescription != nil) { - NSString* rotationPreference = [[LinphoneManager instance].settingsStore objectForKey:@"rotation_preference"]; - if (UIInterfaceOrientationIsPortrait(interfaceOrientation) && [currentViewDescription portraitMode] && - ([rotationPreference isEqualToString:@"auto"] || [rotationPreference isEqualToString:@"portrait"])) { - return YES; - } - if (UIInterfaceOrientationIsLandscape(interfaceOrientation) && [currentViewDescription landscapeMode] && - ([rotationPreference isEqualToString:@"auto"] || [rotationPreference isEqualToString:@"landscape"])) { - return YES; - } - return NO; - } - return YES; + if(interfaceOrientation == currentOrientation) + return YES; + return NO; } -#pragma mark - +#pragma mark - Event Functions + +- (void)orientationDidChange:(NSNotification*)notif { + // Update rotation + UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]]; + if(currentOrientation != correctOrientation) { + [PhoneMainView forceOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown]; + } +} + + +#pragma mark - - (void)clearCache { [viewControllerCache removeAllObjects]; @@ -295,10 +305,19 @@ - (UIInterfaceOrientation)getCorrectInterfaceOrientation:(UIDeviceOrientation)deviceOrientation { if(currentViewDescription != nil) { + // If unknown return status bar orientation + if(deviceOrientation == UIDeviceOrientationUnknown && currentOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + NSString* rotationPreference = [[LinphoneManager instance].settingsStore objectForKey:@"rotation_preference"]; if([rotationPreference isEqualToString:@"auto"]) { - if(deviceOrientation == UIDeviceOrientationUnknown) { - return [UIApplication sharedApplication].statusBarOrientation; + // Don't rotate in UIDeviceOrientationFaceUp UIDeviceOrientationFaceDown + if(!UIDeviceOrientationIsPortrait(deviceOrientation) && !UIDeviceOrientationIsLandscape(deviceOrientation)) { + if(currentOrientation == UIDeviceOrientationUnknown) { + return [UIApplication sharedApplication].statusBarOrientation; + } + return currentOrientation; } if (UIDeviceOrientationIsPortrait(deviceOrientation)) { if ([currentViewDescription portraitMode]) { @@ -317,9 +336,6 @@ } else if([rotationPreference isEqualToString:@"portrait"]) { if ([currentViewDescription portraitMode]) { if (UIDeviceOrientationIsPortrait(deviceOrientation)) { - if(deviceOrientation == UIDeviceOrientationUnknown) { - return [UIApplication sharedApplication].statusBarOrientation; - } return deviceOrientation; } else { if(UIInterfaceOrientationIsPortrait([UIApplication sharedApplication].statusBarOrientation)) { @@ -334,9 +350,6 @@ } else if([rotationPreference isEqualToString:@"landscape"]) { if ([currentViewDescription landscapeMode]) { if (UIDeviceOrientationIsLandscape(deviceOrientation)) { - if(deviceOrientation == UIDeviceOrientationUnknown) { - return [UIApplication sharedApplication].statusBarOrientation; - } return deviceOrientation; } else { if(UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { @@ -427,7 +440,6 @@ UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]]; if(currentOrientation != correctOrientation) { [PhoneMainView forceOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown]; - currentOrientation = correctOrientation; } else { [self updateInterfaceOrientation:correctOrientation]; } diff --git a/Classes/LinphoneUI/UIDigitButton.m b/Classes/LinphoneUI/UIDigitButton.m index 7dcd33429..dcafad7b6 100644 --- a/Classes/LinphoneUI/UIDigitButton.m +++ b/Classes/LinphoneUI/UIDigitButton.m @@ -75,7 +75,7 @@ } if (addressField && (!dtmf || !linphone_core_in_call([LinphoneManager getLc]))) { NSString* newAddress = [NSString stringWithFormat:@"%@%c",addressField.text, digit]; - [addressField setText:newAddress]; + [addressField setText:newAddress]; linphone_core_play_dtmf([LinphoneManager getLc], digit, -1); } else { linphone_core_send_dtmf([LinphoneManager getLc], digit); @@ -101,7 +101,6 @@ if (digit == '0') { NSString* newAddress = [[addressField.text substringToIndex: [addressField.text length]-1] stringByAppendingString:@"+"]; [addressField setText:newAddress]; - [addressField sendActionsForControlEvents:UIControlEventEditingChanged]; } } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index c40c8aa1a..2f6667caa 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -164,11 +164,9 @@ static PhoneMainView* phoneMainViewInstance=nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - if(mainViewController != nil) { - return [mainViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; - } else { + if(interfaceOrientation == self.interfaceOrientation) return YES; - } + return NO; } /* @@ -219,7 +217,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } [controller didRotateFromInterfaceOrientation:oldOrientation]; } - [[UIApplication sharedApplication] setStatusBarOrientation:orientation animated:TRUE]; + [[UIApplication sharedApplication] setStatusBarOrientation:orientation animated:animated]; } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { From 2dffddd07ba4f458cac21cd3c9e260b202c516cb Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 10 Aug 2012 16:15:33 +0200 Subject: [PATCH 127/397] Improve Contact details view --- Classes/ContactDetailsTableViewController.m | 47 ++++++++++-------- Classes/LinphoneUI/UIContactDetailsHeader.m | 13 +++-- Classes/LinphoneUI/UIContactDetailsHeader.xib | 7 ++- Resources/en.lproj/Localizable.strings | Bin 13234 -> 13274 bytes 4 files changed, 39 insertions(+), 28 deletions(-) diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index b36a4bc77..66e5b439d 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -56,12 +56,13 @@ @implementation ContactDetailsTableViewController enum _ContactSections { - ContactSections_Number = 0, + ContactSections_None = 0, + ContactSections_Number, ContactSections_Sip, ContactSections_MAX }; -static const int contactSections[ContactSections_MAX] = {ContactSections_Number, ContactSections_Sip}; +static const int contactSections[ContactSections_MAX] = {ContactSections_None, ContactSections_Number, ContactSections_Sip}; @synthesize footerController; @synthesize headerController; @@ -370,6 +371,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, } self->contact = acontact; [self loadData]; + [headerController setContact:contact]; } - (void)addSipField:(NSString*)address { @@ -551,18 +553,23 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, if(!editing) { [ContactDetailsTableViewController findAndResignFirstResponder:[self tableView]]; } - - [super setEditing:editing animated:animated]; + + [headerController setEditing:editing animated:animated]; + [footerController setEditing:editing animated:animated]; if(animated) { [self.tableView beginUpdates]; } if(editing) { - for (int section = 0; section <[self numberOfSectionsInTableView:[self tableView]]; ++section) { + for (int section = 0; section < [self numberOfSectionsInTableView:[self tableView]]; ++section) { + if(contactSections[section] == ContactSections_Number || + contactSections[section] == ContactSections_Sip) [self addEntry:self.tableView section:section animated:animated]; } } else { - for (int section = 0; section <[self numberOfSectionsInTableView:[self tableView]]; ++section) { + for (int section = 0; section < [self numberOfSectionsInTableView:[self tableView]]; ++section) { + if(contactSections[section] == ContactSections_Number || + contactSections[section] == ContactSections_Sip) [self removeEmptyEntry:self.tableView section:section animated:animated]; } } @@ -570,8 +577,10 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, [self.tableView endUpdates]; } - [headerController setEditing:editing animated:animated]; - [footerController setEditing:editing animated:animated]; + [super setEditing:editing animated:animated]; + if(contactDetailsDelegate != nil) { + [contactDetailsDelegate onModification:nil]; + } } - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { @@ -583,11 +592,8 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, } - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { - if(section == 0) { - UIView *headerView = [headerController view]; - [headerController setContact:contact]; - [headerController setEditing:[self isEditing] animated:FALSE]; - return headerView; + if(section == ContactSections_None) { + return [headerController view]; } else { return nil; } @@ -595,8 +601,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { if(section == (ContactSections_MAX - 1)) { - UIView *footerView = [footerController view]; - return footerView; + return [footerController view]; } else { return nil; } @@ -606,7 +611,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, if(contactSections[section] == ContactSections_Number) { return NSLocalizedString(@"Phone numbers", nil); } else if(contactSections[section] == ContactSections_Sip) { - return NSLocalizedString(@"SIP", nil); + return NSLocalizedString(@"SIP addresses", nil); } return nil; } @@ -616,8 +621,8 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, } - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { - if(section == 0) { - return [UIContactDetailsHeader height:[self isEditing]]; + if(section == ContactSections_None) { + return [UIContactDetailsHeader height:[headerController isEditing]]; } else { // Hide section if nothing in it if([[self getSectionData:section] count] > 0) @@ -628,8 +633,10 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_Number, } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { - if(section != 0) { - return [UIContactDetailsFooter height:[self isEditing]]; + if(section == (ContactSections_MAX - 1)) { + return [UIContactDetailsFooter height:[footerController isEditing]]; + } else if(section == ContactSections_None) { + return 0.000001f; // Hack UITableView = 0 } return 10.0f; } diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 1d7bfa4ef..5e0de1c51 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -39,6 +39,7 @@ propertyList = [[NSArray alloc] initWithObjects: [NSNumber numberWithInt:kABPersonFirstNameProperty], [NSNumber numberWithInt:kABPersonLastNameProperty], nil]; + editing = FALSE; } - (id)init { @@ -83,6 +84,9 @@ - (void)viewDidLoad { [super viewDidLoad]; removeTableBackground(tableView); // Can't do it in Xib: issue with ios4 + [normalView setAlpha:1.0f]; + [editView setAlpha:0.0f]; + [tableView setEditing:TRUE animated:false]; } @@ -159,16 +163,11 @@ [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.3]; } - [tableView setEditing:editing animated:animated]; if(editing) { - CGRect frame = [editView frame]; - frame.size.height = [UIContactDetailsHeader height:editing]; - [editView setFrame:frame]; + [editView setAlpha:1.0f]; [normalView setAlpha:0.0f]; } else { - CGRect frame = [editView frame]; - frame.size.height = 0; - [editView setFrame:frame]; + [editView setAlpha:0.0f]; [normalView setAlpha:1.0f]; } if(animated) { diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.xib b/Classes/LinphoneUI/UIContactDetailsHeader.xib index e6fe80dcc..2ad58ddc6 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.xib +++ b/Classes/LinphoneUI/UIContactDetailsHeader.xib @@ -35,7 +35,7 @@ - 290 + 274 @@ -378,6 +378,7 @@ AAgACAAIAAEAAQABAAE UILabel UIImageView + id UIView UIView UITableView @@ -391,6 +392,10 @@ AAgACAAIAAEAAQABAAE avatarImage UIImageView + + contactDetailsDelegate + id + editView UIView diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index 5077d42c483f1e9860dbab51c2a4180c35602a88..02cb7259b09d1aa8151aad640e438a6eb99c691e 100644 GIT binary patch delta 44 xcmdm#ek*;$5;Z{uhD3%GAS_}?Whe&1)XDPd%8aR#FRI2)UZBRZSx9{W4*)!#4UPZ+ delta 36 qcmcbWzA1gf5;cA$1_cINAXZ`sX7FSPm>j4YJ$Zqe$Yw9~2|NJB3JM|s From 23d3e03bac1437c4eaa0bf55893d1ed8407eff12 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 13 Aug 2012 13:26:20 +0200 Subject: [PATCH 128/397] Fix chat view: Keyboard after screen rotation Bubbles rotation strange effect --- Classes/LinphoneCoreSettingsStore.m | 2 +- Classes/LinphoneUI/UIChatCell.m | 28 +++++++++------ Classes/LinphoneUI/UIChatRoomCell.h | 4 +-- Classes/LinphoneUI/UIChatRoomCell.m | 24 ++++++------- Classes/LinphoneUI/UIChatRoomCell.xib | 32 +++++++++--------- .../LinphoneUI/UICompositeViewController.m | 4 +-- Classes/LinphoneUI/UIContactCell.m | 2 +- Classes/PhoneMainView.h | 2 +- Classes/PhoneMainView.m | 27 +++++++++++++-- Resources/en.lproj/Localizable.strings | Bin 13274 -> 13432 bytes 10 files changed, 78 insertions(+), 47 deletions(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 2931fba38..8c7551de6 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -363,7 +363,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [tokenString appendFormat:@"%02X", (unsigned int)tokenBuffer[i]]; } // NSLocalizedString(@"IC_MSG", nil); // Fake - NSString *params = [NSString stringWithFormat:@"APN-TOK=%@;APN-MSG=IC_MSG;APN-SND=oldphone-mono-30s.caf", tokenString]; + NSString *params = [NSString stringWithFormat:@"APN-TOK=%@;APN-MSG=IM_MSG;APN-CAL=IC_MSG;APN-SND=oldphone-mono-30s.caf", tokenString]; linphone_proxy_config_set_contact_parameters(proxyCfg, [params UTF8String]); } diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m index aadba1a95..acfecb71a 100644 --- a/Classes/LinphoneUI/UIChatCell.m +++ b/Classes/LinphoneUI/UIChatCell.m @@ -99,25 +99,33 @@ // Message [chatContentLabel setText:[chat message]]; - +} + +- (void)layoutSubviews { + [super layoutSubviews]; // // Adapt size // CGRect displayNameFrame = [addressLabel frame]; CGRect chatContentFrame = [chatContentLabel frame]; - chatContentFrame.origin.x -= displayNameFrame.size.width; - // Compute firstName size - CGSize contraints; - contraints.height = [addressLabel frame].size.height; - contraints.width = ([chatContentLabel frame].size.width + [chatContentLabel frame].origin.x) - [addressLabel frame].origin.x; - CGSize firstNameSize = [[addressLabel text] sizeWithFont:[addressLabel font] constrainedToSize: contraints]; - displayNameFrame.size.width = firstNameSize.width; + CGSize displayNameSize = [[addressLabel text] sizeWithFont:[addressLabel font]]; + CGSize chatContentSize = [[chatContentLabel text] sizeWithFont:[chatContentLabel font]]; + float sum = displayNameSize.width + 5 + chatContentSize.width; + float limit = self.bounds.size.width - 5 - displayNameFrame.origin.x; + if(sum >limit) { + displayNameSize.width *= limit/sum; + chatContentSize.width *= limit/sum; + } + + displayNameFrame.size.width = displayNameSize.width; + chatContentFrame.size.width = chatContentSize.width; // Compute lastName size & position - chatContentFrame.origin.x += displayNameFrame.size.width; - chatContentFrame.size.width = (contraints.width + [addressLabel frame].origin.x) - chatContentFrame.origin.x; + chatContentFrame.origin.x = displayNameFrame.origin.x + displayNameFrame.size.width; + if(displayNameFrame.size.width) + chatContentFrame.origin.x += 5; [addressLabel setFrame: displayNameFrame]; [chatContentLabel setFrame: chatContentFrame]; diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h index cfc479c23..7bbb46af9 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.h +++ b/Classes/LinphoneUI/UIChatRoomCell.h @@ -23,7 +23,7 @@ @interface UIChatRoomCell : UITableViewCell { UIImageView *backgroundImage; - UIView *contentView; + UIView *innerView; UIView *messageView; UILabel *messageLabel; UIButton *deleteButton; @@ -33,7 +33,7 @@ } @property (nonatomic, retain) ChatModel *chat; -@property (nonatomic, retain) IBOutlet UIView *contentView; +@property (nonatomic, retain) IBOutlet UIView *innerView; @property (nonatomic, retain) IBOutlet UIView *messageView; @property (nonatomic, retain) IBOutlet UIImageView* backgroundImage; @property (nonatomic, retain) IBOutlet UILabel *messageLabel; diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index 44b261a31..e9351809d 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -24,7 +24,7 @@ @implementation UIChatRoomCell -@synthesize contentView; +@synthesize innerView; @synthesize messageView; @synthesize backgroundImage; @synthesize messageLabel; @@ -47,14 +47,14 @@ static UIFont *CELL_FONT = nil; [[NSBundle mainBundle] loadNibNamed:@"UIChatRoomCell" owner:self options:nil]; - [self addSubview:contentView]; + [self addSubview:innerView]; } return self; } - (void)dealloc { [backgroundImage release]; - [contentView release]; + [innerView release]; [messageView release]; [messageLabel release]; [deleteButton release]; @@ -143,20 +143,20 @@ static UIFont *CELL_FONT = nil; - (void)layoutSubviews { [super layoutSubviews]; if(chat != nil) { - // Resize Content - CGRect contentFrame = [contentView frame]; - contentFrame.size = [UIChatRoomCell viewSize:[chat message] width:[self frame].size.width]; + // Resize inner + CGRect innerFrame; + innerFrame.size = [UIChatRoomCell viewSize:[chat message] width:[self frame].size.width]; if([[chat direction] intValue]) { // Inverted - contentFrame.origin.x = 0.0f; - contentFrame.origin.y = 0.0f; + innerFrame.origin.x = 0.0f; + innerFrame.origin.y = 0.0f; } else { - contentFrame.origin.x = [self frame].size.width - contentFrame.size.width; - contentFrame.origin.y = 0.0f; + innerFrame.origin.x = [self frame].size.width - innerFrame.size.width; + innerFrame.origin.y = 0.0f; } - [contentView setFrame:contentFrame]; + [innerView setFrame:innerFrame]; CGRect messageFrame = [messageView frame]; - messageFrame.origin.y = ([contentView frame].size.height - messageFrame.size.height)/2; + messageFrame.origin.y = ([innerView frame].size.height - messageFrame.size.height)/2; if([[chat direction] intValue]) { // Inverted [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size forNinePatchNamed:@"chat_bubble_incoming"]]; diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib index b5bdba778..3b9e82293 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.xib +++ b/Classes/LinphoneUI/UIChatRoomCell.xib @@ -35,7 +35,7 @@ - 301 + 256 @@ -227,14 +227,6 @@ 13 - - - contentView - - - - 14 - messageLabel @@ -267,6 +259,14 @@ 24 + + + innerView + + + + 25 + onDeleteClick: @@ -304,7 +304,7 @@ - contentView + innerView 7 @@ -375,7 +375,7 @@ - 24 + 25 @@ -395,9 +395,9 @@ UIImageView - UIView UILabel UIButton + UIView UILabel UIView @@ -406,10 +406,6 @@ backgroundImage UIImageView - - contentView - UIView - dateLabel UILabel @@ -418,6 +414,10 @@ deleteButton UIButton + + innerView + UIView + messageLabel UILabel diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index a57ff28b9..7de22a1e4 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -251,7 +251,7 @@ // Update rotation UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]]; if(currentOrientation != correctOrientation) { - [PhoneMainView forceOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown]; + [PhoneMainView setOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown]; } } @@ -439,7 +439,7 @@ // Update rotation UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]]; if(currentOrientation != correctOrientation) { - [PhoneMainView forceOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown]; + [PhoneMainView setOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown]; } else { [self updateInterfaceOrientation:correctOrientation]; } diff --git a/Classes/LinphoneUI/UIContactCell.m b/Classes/LinphoneUI/UIContactCell.m index 8e087186a..bee9f1448 100644 --- a/Classes/LinphoneUI/UIContactCell.m +++ b/Classes/LinphoneUI/UIContactCell.m @@ -111,7 +111,7 @@ // Compute firstName size CGSize firstNameSize = [[firstNameLabel text] sizeWithFont:[firstNameLabel font]]; - CGSize lastNameSize = [[lastNameLabel text] sizeWithFont:[firstNameLabel font]]; + CGSize lastNameSize = [[lastNameLabel text] sizeWithFont:[lastNameLabel font]]; float sum = firstNameSize.width + 5 + lastNameSize.width; float limit = self.bounds.size.width - 5 - firstNameFrame.origin.x; if(sum >limit) { diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 6514290d0..6217ae92d 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -62,7 +62,7 @@ - (void)fullScreen:(BOOL)enabled; - (void)startUp; -+ (void)forceOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated; ++ (void)setOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated; + (PhoneMainView*) instance; diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 2f6667caa..346a19909 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -169,11 +169,27 @@ static PhoneMainView* phoneMainViewInstance=nil; return NO; } ++ (UIView*)findFirstResponder:(UIView*)view { + if (view.isFirstResponder) { + return view; + } + for (UIView *subView in view.subviews) { + UIView *ret = [PhoneMainView findFirstResponder:subView]; + if (ret != nil) + return ret; + } + return nil; +} + /* Will simulate a device rotation */ -+ (void)forceOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated { ++ (void)setOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated { + UIView *firstResponder = nil; for(UIWindow *window in [[UIApplication sharedApplication] windows]) { + if([NSStringFromClass(window.class) isEqualToString:@"UITextEffectsWindow"]) { + continue; + } UIView *view = window; UIViewController *controller = nil; CGRect frame = [view frame]; @@ -216,8 +232,15 @@ static PhoneMainView* phoneMainViewInstance=nil; [UIView commitAnimations]; } [controller didRotateFromInterfaceOrientation:oldOrientation]; + if(firstResponder == nil) { + firstResponder = [PhoneMainView findFirstResponder:view]; + } } [[UIApplication sharedApplication] setStatusBarOrientation:orientation animated:animated]; + if(firstResponder) { + [firstResponder resignFirstResponder]; + [firstResponder becomeFirstResponder]; + } } - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { @@ -246,8 +269,8 @@ static PhoneMainView* phoneMainViewInstance=nil; ChatModel *chat = [[notif userInfo] objectForKey:@"chat"]; if(chat != nil) { [self displayMessage:chat]; - [self updateApplicationBadgeNumber]; } + [self updateApplicationBadgeNumber]; } - (void)registrationUpdate:(NSNotification*)notif { diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index 02cb7259b09d1aa8151aad640e438a6eb99c691e..0f3dedb8c13983782fa3e30ad067350153a4a6be 100644 GIT binary patch delta 32 mcmcbW{v%_9pE#rM Date: Mon, 13 Aug 2012 16:09:25 +0200 Subject: [PATCH 129/397] Modify/Add sounds --- Classes/LinphoneCoreSettingsStore.m | 2 +- Classes/LinphoneManager.h | 5 +++ Classes/LinphoneManager.m | 23 +++++++++++-- Classes/PhoneMainView.m | 8 ++--- Resources/{toy-mono.wav => hold.wav} | Bin Resources/msg.caf | Bin 0 -> 13242 bytes Resources/msg.wav | Bin 0 -> 34442 bytes linphone.xcodeproj/project.pbxproj | 48 +++++++++++++++++---------- 8 files changed, 61 insertions(+), 25 deletions(-) rename Resources/{toy-mono.wav => hold.wav} (100%) create mode 100644 Resources/msg.caf create mode 100755 Resources/msg.wav diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 8c7551de6..c20b36a8f 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -363,7 +363,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [tokenString appendFormat:@"%02X", (unsigned int)tokenBuffer[i]]; } // NSLocalizedString(@"IC_MSG", nil); // Fake - NSString *params = [NSString stringWithFormat:@"APN-TOK=%@;APN-MSG=IM_MSG;APN-CAL=IC_MSG;APN-SND=oldphone-mono-30s.caf", tokenString]; + NSString *params = [NSString stringWithFormat:@"APN-TOK=%@;APN-MSG=IM_MSG;APN-CAL=IC_MSG;APN-CAL-SND=ring.caf;APN-MSG-SND=msg.caf", tokenString]; linphone_proxy_config_set_contact_parameters(proxyCfg, [params UTF8String]); } diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index c212ea7d8..104e45f55 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -20,6 +20,7 @@ #import #import #import +#import #import #import "LogView.h" @@ -74,6 +75,10 @@ typedef struct _LinphoneCallAppData { @public CallContext currentCallContextBeforeGoingBackground; + struct _Sounds { + SystemSoundID callSound; + SystemSoundID messageSound; + } sounds; } + (LinphoneManager*)instance; #ifdef DEBUG diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index b7bfded46..0eb13f9fc 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -169,6 +169,22 @@ struct codec_name_pref_table codec_pref_table[]={ - (id)init { if ((self = [super init])) { fastAddressBook = [[FastAddressBook alloc] init]; + + { + NSString *path = [[NSBundle mainBundle] pathForResource:@"ring" ofType:@"wav"]; + OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.callSound); + if(status != 0){ + [LinphoneLogger log:LinphoneLoggerWarning format:@"Can't set \"call\" system sound"]; + } + } + { + NSString *path = [[NSBundle mainBundle] pathForResource:@"msg" ofType:@"wav"]; + OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.messageSound); + if(status != 0){ + [LinphoneLogger log:LinphoneLoggerWarning format:@"Can't set \"message\" system sound"]; + } + } + database = NULL; settingsStore = nil; self.defaultExpires = 600; @@ -178,6 +194,9 @@ struct codec_name_pref_table codec_pref_table[]={ } - (void)dealloc { + AudioServicesDisposeSystemSoundID(sounds.callSound); + AudioServicesDisposeSystemSoundID(sounds.messageSound); + [fastAddressBook release]; [self closeDatabase]; [settingsStore release]; @@ -561,11 +580,11 @@ static LinphoneCoreVTable linphonec_vtable = { linphone_core_set_root_ca(theLinphoneCore, lRootCa); // Set audio assets - const char* lRing = [[myBundle pathForResource:@"oldphone-mono"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; + const char* lRing = [[myBundle pathForResource:@"ring"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; linphone_core_set_ring(theLinphoneCore, lRing ); const char* lRingBack = [[myBundle pathForResource:@"ringback"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; linphone_core_set_ringback(theLinphoneCore, lRingBack); - const char* lPlay = [[myBundle pathForResource:@"toy-mono"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; + const char* lPlay = [[myBundle pathForResource:@"hold"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]]; linphone_core_set_play_file(theLinphoneCore, lPlay); linphone_core_set_zrtp_secrets_file(theLinphoneCore, [zrtpSecretsFileName cStringUsingEncoding:[NSString defaultCStringEncoding]]); diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 346a19909..db5a33ed4 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -589,13 +589,13 @@ static PhoneMainView* phoneMainViewInstance=nil; notif.repeatInterval = 0; notif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"%@ sent you a message",nil), address]; notif.alertAction = NSLocalizedString(@"Show", nil); - notif.soundName = UILocalNotificationDefaultSoundName; + notif.soundName = @"msg.caf"; notif.userInfo = [NSDictionary dictionaryWithObject:[chat remoteContact] forKey:@"chat"]; [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; } } else { - AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); + AudioServicesPlaySystemSound([LinphoneManager instance]->sounds.messageSound); } } @@ -638,10 +638,10 @@ static PhoneMainView* phoneMainViewInstance=nil; appData->notification.repeatInterval = 0; appData->notification.alertBody =[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil), address]; appData->notification.alertAction = NSLocalizedString(@"Answer", nil); - appData->notification.soundName = @"oldphone-mono-30s.caf"; + appData->notification.soundName = @"ring.caf"; appData->notification.userInfo = [NSDictionary dictionaryWithObject:[NSData dataWithBytes:&call length:sizeof(call)] forKey:@"call"]; - [[UIApplication sharedApplication] presentLocalNotificationNow:appData->notification]; + [[UIApplication sharedApplication] presentLocalNotificationNow:appData->notification]; } } else { IncomingCallViewController *controller = DYNAMIC_CAST([self changeCurrentView:[IncomingCallViewController compositeViewDescription] push:TRUE],IncomingCallViewController); diff --git a/Resources/toy-mono.wav b/Resources/hold.wav similarity index 100% rename from Resources/toy-mono.wav rename to Resources/hold.wav diff --git a/Resources/msg.caf b/Resources/msg.caf new file mode 100644 index 0000000000000000000000000000000000000000..7d843230a8481f23da588ac2c0d36cfac81dad1e GIT binary patch literal 13242 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 literal 0 HcmV?d00001 diff --git a/Resources/msg.wav b/Resources/msg.wav new file mode 100755 index 0000000000000000000000000000000000000000..a6ffd42f23cac7bd230dc2616cf4bf5c73de70b1 GIT binary patch literal 34442 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 wx literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index ffb6306b1..d5e3c2bfc 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -33,8 +33,8 @@ 22276E8913C73DC000210156 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8813C73DC000210156 /* CoreMedia.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 223148E41178A08200637D6A /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E31178A08200637D6A /* libilbc.a */; }; 223148E61178A09900637D6A /* libmsilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E51178A09900637D6A /* libmsilbc.a */; }; - 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; - 2242E313125235120061DDCE /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; + 2237D4091084D7A9001383EE /* ring.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* ring.wav */; }; + 2242E313125235120061DDCE /* ring.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* ring.caf */; }; 224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; }; 2248E90E12F7E4CF00220D9C /* UIDigitButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */; }; @@ -491,8 +491,8 @@ D34BD6CD15C13DB70070C209 /* numpad_two_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F311582223B00336684 /* numpad_two_over.png */; }; D34BD6CE15C13DB70070C209 /* numpad_zero_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2C1582223B00336684 /* numpad_zero_default.png */; }; D34BD6CF15C13DB70070C209 /* numpad_zero_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F2D1582223B00336684 /* numpad_zero_over.png */; }; - D34BD6D015C13DB70070C209 /* oldphone-mono-30s.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* oldphone-mono-30s.caf */; }; - D34BD6D115C13DB70070C209 /* oldphone-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* oldphone-mono.wav */; }; + D34BD6D015C13DB70070C209 /* ring.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* ring.caf */; }; + D34BD6D115C13DB70070C209 /* ring.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* ring.wav */; }; D34BD6D215C13DB70070C209 /* options_add_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3196D3015A321E2007FEEBA /* options_add_default.png */; }; D34BD6D315C13DB70070C209 /* options_add_default_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */; }; D34BD6D415C13DB70070C209 /* options_add_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8253F15AE204D00D493FA /* options_add_disabled.png */; }; @@ -556,7 +556,7 @@ D34BD70E15C13DB70070C209 /* statebar_background_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A2915BD8DED008ED271 /* statebar_background_landscape.png */; }; D34BD70F15C13DB70070C209 /* switch_camera_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757515931E5D0066B1C1 /* switch_camera_default.png */; }; D34BD71015C13DB70070C209 /* switch_camera_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E757615931E5D0066B1C1 /* switch_camera_over.png */; }; - D34BD71115C13DB70070C209 /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; + D34BD71115C13DB70070C209 /* hold.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* hold.wav */; }; D34BD71215C13DB70070C209 /* transfer_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254115AE204D00D493FA /* transfer_call_default.png */; }; D34BD71315C13DB70070C209 /* transfer_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254E15AE256100D493FA /* transfer_call_disabled.png */; }; D34BD71415C13DB70070C209 /* transfer_call_over.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254215AE204D00D493FA /* transfer_call_over.png */; }; @@ -687,6 +687,10 @@ D37DC6C21594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; }; D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; }; D37DC7191594AF3F00B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; }; + D3804E6015D92A57008072A5 /* msg.caf in Resources */ = {isa = PBXBuildFile; fileRef = D3804E5E15D92A57008072A5 /* msg.caf */; }; + D3804E6115D92A57008072A5 /* msg.caf in Resources */ = {isa = PBXBuildFile; fileRef = D3804E5E15D92A57008072A5 /* msg.caf */; }; + D3804E6215D92A57008072A5 /* msg.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3804E5F15D92A57008072A5 /* msg.wav */; }; + D3804E6315D92A57008072A5 /* msg.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3804E5F15D92A57008072A5 /* msg.wav */; }; D3807FBF15C28940005BE9BC /* DCRoundSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FB815C28940005BE9BC /* DCRoundSwitch.m */; }; D3807FC015C28940005BE9BC /* DCRoundSwitch.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FB815C28940005BE9BC /* DCRoundSwitch.m */; }; D3807FC115C28940005BE9BC /* DCRoundSwitchKnobLayer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3807FBA15C28940005BE9BC /* DCRoundSwitchKnobLayer.m */; }; @@ -998,7 +1002,7 @@ D3C6526815AC1A8F0092A874 /* UIEditableTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */; }; D3C6526B15AC228A0092A874 /* contact_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526915AC228A0092A874 /* contact_ok_default.png */; }; D3C6526D15AC228A0092A874 /* contact_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C6526A15AC228A0092A874 /* contact_ok_over.png */; }; - D3C714B3159DB84400705B8E /* toy-mono.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* toy-mono.wav */; }; + D3C714B3159DB84400705B8E /* hold.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3C714B2159DB84400705B8E /* hold.wav */; }; D3D14E7C15A711700074A527 /* avatar_shadow_small.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D14E7B15A711700074A527 /* avatar_shadow_small.png */; }; D3D6A39E159B0EEF005F692C /* add_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_default.png */; }; D3D6A3A0159B0EEF005F692C /* add_call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39C159B0EEF005F692C /* add_call_disabled.png */; }; @@ -1334,8 +1338,8 @@ 22276E8813C73DC000210156 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; 223148E31178A08200637D6A /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = ""; }; 223148E51178A09900637D6A /* libmsilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsilbc.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsilbc.a"; sourceTree = ""; }; - 2237D4081084D7A9001383EE /* oldphone-mono.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "oldphone-mono.wav"; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/oldphone-mono.wav"; sourceTree = ""; }; - 2242E312125235120061DDCE /* oldphone-mono-30s.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "oldphone-mono-30s.caf"; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/oldphone-mono-30s.caf"; sourceTree = ""; }; + 2237D4081084D7A9001383EE /* ring.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ring.wav; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/ring.wav"; sourceTree = ""; }; + 2242E312125235120061DDCE /* ring.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = ring.caf; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/ring.caf"; sourceTree = ""; }; 224567C1107B968500F10948 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDigitButton.h; sourceTree = ""; }; 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIDigitButton.m; sourceTree = ""; }; @@ -1686,6 +1690,8 @@ D37DC6BF1594AE1800B2A5EB /* LinphoneCoreSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCoreSettingsStore.h; sourceTree = ""; }; D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCoreSettingsStore.m; sourceTree = ""; }; D37DC7171594AF3400B2A5EB /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; }; + D3804E5E15D92A57008072A5 /* msg.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = msg.caf; path = Resources/msg.caf; sourceTree = ""; }; + D3804E5F15D92A57008072A5 /* msg.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = msg.wav; path = Resources/msg.wav; sourceTree = ""; }; D3807FB715C28940005BE9BC /* DCRoundSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCRoundSwitch.h; sourceTree = ""; }; D3807FB815C28940005BE9BC /* DCRoundSwitch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DCRoundSwitch.m; sourceTree = ""; }; D3807FB915C28940005BE9BC /* DCRoundSwitchKnobLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCRoundSwitchKnobLayer.h; sourceTree = ""; }; @@ -1905,7 +1911,7 @@ D3C6526615AC1A8F0092A874 /* UIEditableTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIEditableTableViewCell.m; sourceTree = ""; }; D3C6526915AC228A0092A874 /* contact_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_ok_default.png; path = Resources/contact_ok_default.png; sourceTree = ""; }; D3C6526A15AC228A0092A874 /* contact_ok_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_ok_over.png; path = Resources/contact_ok_over.png; sourceTree = ""; }; - D3C714B2159DB84400705B8E /* toy-mono.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = "toy-mono.wav"; path = "Resources/toy-mono.wav"; sourceTree = ""; }; + D3C714B2159DB84400705B8E /* hold.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = hold.wav; path = Resources/hold.wav; sourceTree = ""; }; D3D14E7B15A711700074A527 /* avatar_shadow_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = avatar_shadow_small.png; path = Resources/avatar_shadow_small.png; sourceTree = ""; }; D3D6A39B159B0EEF005F692C /* add_call_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_default.png; path = Resources/add_call_default.png; sourceTree = ""; }; D3D6A39C159B0EEF005F692C /* add_call_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = add_call_disabled.png; path = Resources/add_call_disabled.png; sourceTree = ""; }; @@ -2834,6 +2840,7 @@ D347347D1580E5F8003C7B8C /* history_selected.png */, D3A74E8615C69392001500B9 /* history_selected_landscape~ipad.png */, D3A74E8715C69392001500B9 /* history_selected~ipad.png */, + D3C714B2159DB84400705B8E /* hold.wav */, D3432A5C158A4446001C6B0B /* led_connected.png */, D3432A70158A45AF001C6B0B /* led_disconnected.png */, D3432A5D158A4446001C6B0B /* led_error.png */, @@ -2874,6 +2881,8 @@ D3C31A1415BD8DED008ED271 /* micro_on_over_landscape.png */, D339889715C6DD1600CAF1E4 /* micro_on_over_landscape~ipad.png */, D3A74E8D15C69392001500B9 /* micro_on_over~ipad.png */, + D3804E5E15D92A57008072A5 /* msg.caf */, + D3804E5F15D92A57008072A5 /* msg.wav */, D3F83F3C1582223B00336684 /* numpad_eight_default.png */, D3F83F3D1582223B00336684 /* numpad_eight_over.png */, D3F83F361582223B00336684 /* numpad_five_default.png */, @@ -2898,8 +2907,6 @@ D3F83F311582223B00336684 /* numpad_two_over.png */, D3F83F2C1582223B00336684 /* numpad_zero_default.png */, D3F83F2D1582223B00336684 /* numpad_zero_over.png */, - 2242E312125235120061DDCE /* oldphone-mono-30s.caf */, - 2237D4081084D7A9001383EE /* oldphone-mono.wav */, D3196D3015A321E2007FEEBA /* options_add_default.png */, D3C31A1515BD8DED008ED271 /* options_add_default_landscape.png */, D339889815C6DD1600CAF1E4 /* options_add_default_landscape~ipad.png */, @@ -2956,6 +2963,8 @@ D3C31A2215BD8DED008ED271 /* pause_on_over_landscape.png */, D33988A515C6DD1600CAF1E4 /* pause_on_over_landscape~ipad.png */, D3A74E9B15C69392001500B9 /* pause_on_over~ipad.png */, + 2242E312125235120061DDCE /* ring.caf */, + 2237D4081084D7A9001383EE /* ring.wav */, 22F254801073D99800AC9B3F /* ringback.wav */, 70571E1913FABCB000CDD3C2 /* rootca.pem */, D3D6A3A5159B0EFE005F692C /* security_ko.png */, @@ -3012,7 +3021,6 @@ D35E757515931E5D0066B1C1 /* switch_camera_default.png */, D35E757615931E5D0066B1C1 /* switch_camera_over.png */, D3A74E5815C68162001500B9 /* toolsbar_background.png */, - D3C714B2159DB84400705B8E /* toy-mono.wav */, C9C8254115AE204D00D493FA /* transfer_call_default.png */, D3A74EAA15C69392001500B9 /* transfer_call_default~ipad.png */, C9C8254E15AE256100D493FA /* transfer_call_disabled.png */, @@ -3331,12 +3339,12 @@ 2274550810700509006EC466 /* linphonerc in Resources */, 22F2508F107141E100AC9B3F /* DialerViewController.xib in Resources */, 22F254811073D99800AC9B3F /* ringback.wav in Resources */, - 2237D4091084D7A9001383EE /* oldphone-mono.wav in Resources */, + 2237D4091084D7A9001383EE /* ring.wav in Resources */, 22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */, 22058C71116E305000B08DDD /* linphone_icon_57.png in Resources */, 225CB2FA11ABB76400628906 /* linphone-banner.png in Resources */, 2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */, - 2242E313125235120061DDCE /* oldphone-mono-30s.caf in Resources */, + 2242E313125235120061DDCE /* ring.caf in Resources */, 2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */, 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */, @@ -3497,7 +3505,7 @@ D3211BBE159CBFD60098460B /* back_default.png in Resources */, D3211BC0159CBFD70098460B /* back_disabled.png in Resources */, D3211BC2159CBFD70098460B /* back_over.png in Resources */, - D3C714B3159DB84400705B8E /* toy-mono.wav in Resources */, + D3C714B3159DB84400705B8E /* hold.wav in Resources */, D377BBFA15A19DA6002B696B /* video_on_disabled.png in Resources */, D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */, D37B96B915A1A6F20005CCD2 /* call_state_delete_over.png in Resources */, @@ -3760,6 +3768,8 @@ D33CF34A15D3A03400CD4B85 /* linphone_icon_57@2x.png in Resources */, D33CF34C15D3A03400CD4B85 /* linphone_icon_72@2x.png in Resources */, D30BBD1815D402A7000F93DD /* contact_ok_disabled.png in Resources */, + D3804E6015D92A57008072A5 /* msg.caf in Resources */, + D3804E6215D92A57008072A5 /* msg.wav in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3975,8 +3985,8 @@ D34BD6CD15C13DB70070C209 /* numpad_two_over.png in Resources */, D34BD6CE15C13DB70070C209 /* numpad_zero_default.png in Resources */, D34BD6CF15C13DB70070C209 /* numpad_zero_over.png in Resources */, - D34BD6D015C13DB70070C209 /* oldphone-mono-30s.caf in Resources */, - D34BD6D115C13DB70070C209 /* oldphone-mono.wav in Resources */, + D34BD6D015C13DB70070C209 /* ring.caf in Resources */, + D34BD6D115C13DB70070C209 /* ring.wav in Resources */, D34BD6D215C13DB70070C209 /* options_add_default.png in Resources */, D34BD6D315C13DB70070C209 /* options_add_default_landscape.png in Resources */, D34BD6D415C13DB70070C209 /* options_add_disabled.png in Resources */, @@ -4040,7 +4050,7 @@ D34BD70E15C13DB70070C209 /* statebar_background_landscape.png in Resources */, D34BD70F15C13DB70070C209 /* switch_camera_default.png in Resources */, D34BD71015C13DB70070C209 /* switch_camera_over.png in Resources */, - D34BD71115C13DB70070C209 /* toy-mono.wav in Resources */, + D34BD71115C13DB70070C209 /* hold.wav in Resources */, D34BD71215C13DB70070C209 /* transfer_call_default.png in Resources */, D34BD71315C13DB70070C209 /* transfer_call_disabled.png in Resources */, D34BD71415C13DB70070C209 /* transfer_call_over.png in Resources */, @@ -4199,6 +4209,8 @@ D33CF34B15D3A03400CD4B85 /* linphone_icon_57@2x.png in Resources */, D33CF34D15D3A03400CD4B85 /* linphone_icon_72@2x.png in Resources */, D30BBD1915D402A7000F93DD /* contact_ok_disabled.png in Resources */, + D3804E6115D92A57008072A5 /* msg.caf in Resources */, + D3804E6315D92A57008072A5 /* msg.wav in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 6ee203e0c2563ff71870e31ad6a5fcb0d3a7f8f1 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 13 Aug 2012 16:47:49 +0200 Subject: [PATCH 130/397] Use constants for Linphone events --- Classes/ChatRoomTableViewController.m | 3 +- Classes/ChatRoomViewController.m | 6 +-- Classes/ChatTableViewController.m | 2 +- Classes/ChatViewController.m | 4 +- Classes/ContactDetailsTableViewController.m | 6 +-- Classes/DialerViewController.m | 4 +- Classes/FirstLoginViewController.m | 6 +-- Classes/HistoryDetailsViewController.m | 4 +- Classes/HistoryViewController.m | 2 +- Classes/InCallViewController.m | 4 +- Classes/IncomingCallViewController.m | 4 +- Classes/LinphoneAppDelegate.m | 13 ++++++ Classes/LinphoneManager.h | 25 +++++++++--- Classes/LinphoneManager.m | 44 +++++++++++++++++---- Classes/LinphoneUI/UICallBar.m | 4 +- Classes/LinphoneUI/UIMainBar.m | 12 +++--- Classes/LinphoneUI/UIPauseButton.m | 4 +- Classes/LinphoneUI/UIStateBar.m | 4 +- Classes/PhoneMainView.m | 18 +++++---- Classes/Utils/FastAddressBook.m | 4 +- Classes/WizardViewController.m | 4 +- 21 files changed, 118 insertions(+), 59 deletions(-) diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m index 75fd29cce..3e8da2008 100644 --- a/Classes/ChatRoomTableViewController.m +++ b/Classes/ChatRoomTableViewController.m @@ -17,6 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ +#import "LinphoneManager.h" #import "ChatRoomTableViewController.h" #import "UIChatRoomCell.h" #import "Utils.h" @@ -108,7 +109,7 @@ self->remoteAddress = [aremoteAddress copy]; [self loadData]; [ChatModel readConversation:remoteAddress]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneTextReceived object:self]; } diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m index 7e3744458..ba620059b 100644 --- a/Classes/ChatRoomViewController.m +++ b/Classes/ChatRoomViewController.m @@ -106,7 +106,7 @@ static UICompositeViewDescription *compositeDescription = nil; object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textReceivedEvent:) - name:@"LinphoneTextReceived" + name:kLinphoneTextReceived object:nil]; if([tableController isEditing]) [tableController setEditing:FALSE animated:FALSE]; @@ -130,7 +130,7 @@ static UICompositeViewDescription *compositeDescription = nil; name:UIKeyboardWillHideNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneTextReceived" + name:kLinphoneTextReceived object:nil]; } @@ -223,7 +223,7 @@ static UICompositeViewDescription *compositeDescription = nil; caseInsensitiveCompare:remoteAddress] == NSOrderedSame) { [chat setRead:[NSNumber numberWithInt:1]]; [chat update]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneTextReceived object:self]; [tableController addChatEntry:chat]; } ms_free(fromStr); diff --git a/Classes/ChatTableViewController.m b/Classes/ChatTableViewController.m index 91b6287bc..47e240fb6 100644 --- a/Classes/ChatTableViewController.m +++ b/Classes/ChatTableViewController.m @@ -105,7 +105,7 @@ [data removeObjectAtIndex:[indexPath row]]; [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; [tableView endUpdates]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneTextReceived object:self]; } } diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m index ac91c6d5b..51c636024 100644 --- a/Classes/ChatViewController.m +++ b/Classes/ChatViewController.m @@ -56,7 +56,7 @@ [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textReceivedEvent:) - name:@"LinphoneTextReceived" + name:kLinphoneTextReceived object:nil]; if([tableController isEditing]) [tableController setEditing:FALSE animated:FALSE]; @@ -68,7 +68,7 @@ [super viewWillDisappear:animated]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneTextReceived" + name:kLinphoneTextReceived object:nil]; } diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 66e5b439d..580772ff8 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -204,7 +204,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); BOOL add = false; if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { - if(CFStringCompare((CFStringRef)CONTACT_SIP_FIELD, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { + if(CFStringCompare((CFStringRef)kContactSipField, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { add = true; } } else { @@ -272,7 +272,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C lMap = ABMultiValueCreateMutable(kABDictionaryPropertyType); } CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey }; - CFTypeRef values[] = { [value copy], CONTACT_SIP_FIELD }; + CFTypeRef values[] = { [value copy], kContactSipField }; CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 1, NULL, NULL); CFStringRef label = (CFStringRef)[labelArray objectAtIndex:0]; if(!ABMultiValueAddValueAndLabel(lMap, lDict, label, &identifier)) { @@ -712,7 +712,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C CFRelease(lcMap); int index = ABMultiValueGetIndexForIdentifier(lMap, [entry identifier]); CFStringRef keys[] = { kABPersonInstantMessageUsernameKey, kABPersonInstantMessageServiceKey}; - CFTypeRef values[] = { [value copy], CONTACT_SIP_FIELD }; + CFTypeRef values[] = { [value copy], kContactSipField }; CFDictionaryRef lDict = CFDictionaryCreate(NULL, (const void **)&keys, (const void **)&values, 2, NULL, NULL); ABMultiValueReplaceValueAtIndex(lMap, lDict, index); CFRelease(lDict); diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m index 225be3f20..21b20f6bc 100644 --- a/Classes/DialerViewController.m +++ b/Classes/DialerViewController.m @@ -122,7 +122,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdateEvent:) - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; // Update on show if([LinphoneManager isLcReady]) { @@ -137,7 +137,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Remove observer [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; } diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m index 38f93cf6a..9d447b0d5 100644 --- a/Classes/FirstLoginViewController.m +++ b/Classes/FirstLoginViewController.m @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - +#import "LinphoneManager.h" #import "FirstLoginViewController.h" #import "LinphoneManager.h" #import "PhoneMainView.h" @@ -76,7 +76,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdateEvent:) - name:@"LinphoneRegistrationUpdate" + name:kLinphoneRegistrationUpdate object:nil]; [usernameField setText:[[LinphoneManager instance].settingsStore objectForKey:@"username_preference"]]; @@ -97,7 +97,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Remove observer [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneRegistrationUpdate" + name:kLinphoneRegistrationUpdate object:nil]; } diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index 56941f55a..f0af8e22e 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -99,7 +99,7 @@ static UICompositeViewDescription *compositeDescription = nil; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(update:) - name:@"LinphoneAddressBookUpdate" + name:kLinphoneAddressBookUpdate object:nil]; [self update]; } @@ -108,7 +108,7 @@ static UICompositeViewDescription *compositeDescription = nil; [super viewWillDisappear:animated]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneAddressBookUpdate" + name:kLinphoneAddressBookUpdate object:nil]; } diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 30ec0ffc6..11f4f951a 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -85,7 +85,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Reset missed call linphone_core_reset_missed_calls_count([LinphoneManager getLc]); // Fake event - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneCallUpdate object:self]; } - (void)viewDidLoad { diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 18aaf67ea..4004855ae 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -125,7 +125,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Remove observer [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; } @@ -138,7 +138,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdateEvent:) - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; // Update on show diff --git a/Classes/IncomingCallViewController.m b/Classes/IncomingCallViewController.m index 19207b5fc..2a738cb0c 100644 --- a/Classes/IncomingCallViewController.m +++ b/Classes/IncomingCallViewController.m @@ -52,7 +52,7 @@ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdateEvent:) - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; } @@ -60,7 +60,7 @@ [super viewWillDisappear:animated]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; } diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 1075712d8..cd7f89a06 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -186,6 +186,19 @@ int __aeabi_idiv(int a, int b) { - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { [LinphoneLogger log:LinphoneLoggerDebug format:@"PushNotification: Receive %@", userInfo]; + NSDictionary *aps = [userInfo objectForKey:@"aps"]; + if(aps != nil) { + NSDictionary *alert = [aps objectForKey:@"alert"]; + if(alert != nil) { + NSString *loc_key = [alert objectForKey:@"loc-key"]; + if(loc_key != nil) { + if([loc_key isEqualToString:@"IM_MSG"]) { + [[LinphoneManager instance] addInhibitedEvent:kLinphoneTextReceivedSound]; + [[PhoneMainView instance] changeCurrentView:[ChatViewController compositeViewDescription]]; + } + } + } + } } - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 104e45f55..d1e847b60 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -32,7 +32,14 @@ #include "linphonecore.h" -extern const NSString *CONTACT_SIP_FIELD; +extern NSString *const kLinphoneTextReceived; +extern NSString *const kLinphoneTextReceivedSound; +extern NSString *const kLinphoneCallUpdate; +extern NSString *const kLinphoneRegistrationUpdate; +extern NSString *const kLinphoneMainViewChange; +extern NSString *const kLinphoneAddressBookUpdate; + +extern NSString *const kContactSipField; typedef enum _Connectivity { wifi, @@ -56,6 +63,11 @@ typedef struct _LinphoneCallAppData { UILocalNotification *notification; } LinphoneCallAppData; +typedef struct _LinphoneManagerSounds { + SystemSoundID call; + SystemSoundID message; +} LinphoneManagerSounds; + @interface LinphoneManager : NSObject { @protected SCNetworkReachabilityRef proxyReachability; @@ -70,15 +82,14 @@ typedef struct _LinphoneCallAppData { FastAddressBook* fastAddressBook; + LinphoneManagerSounds sounds; + NSMutableArray *inhibitedEvent; id settingsStore; sqlite3 *database; + @public CallContext currentCallContextBeforeGoingBackground; - struct _Sounds { - SystemSoundID callSound; - SystemSoundID messageSound; - } sounds; } + (LinphoneManager*)instance; #ifdef DEBUG @@ -105,6 +116,9 @@ typedef struct _LinphoneCallAppData { - (void)enableSpeaker:(BOOL)enable; - (BOOL)isSpeakerEnabled; +- (void)addInhibitedEvent:(NSString*)event; +- (BOOL)removeInhibitedEvent:(NSString*)event; + - (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer; @property (nonatomic, retain) id settingsStore; @@ -115,6 +129,7 @@ typedef struct _LinphoneCallAppData { @property (readonly) const char* backCamId; @property (readonly) sqlite3* database; @property (nonatomic, retain) NSData *pushNotificationToken; +@property (readonly) LinphoneManagerSounds sounds; @end diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 0eb13f9fc..eb7884f15 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -35,9 +35,16 @@ #include "lpconfig.h" #include "private.h" -static LinphoneCore* theLinphoneCore=nil; -static LinphoneManager* theLinphoneManager=nil; -const NSString *CONTACT_SIP_FIELD = @"SIP"; +static LinphoneCore* theLinphoneCore = nil; +static LinphoneManager* theLinphoneManager = nil; + +NSString *const kLinphoneTextReceived = @"LinphoneTextReceived"; +NSString *const kLinphoneTextReceivedSound = @"LinphoneTextReceivedSound"; +NSString *const kLinphoneCallUpdate = @"LinphoneCallUpdate"; +NSString *const kLinphoneRegistrationUpdate = @"LinphoneRegistrationUpdate"; +NSString *const kLinphoneAddressBookUpdate = @"LinphoneAddressBookUpdate"; +NSString *const kLinphoneMainViewChange = @"LinphoneMainViewChange"; +NSString *const kContactSipField = @"SIP"; extern void libmsilbc_init(); #ifdef HAVE_AMR @@ -68,6 +75,7 @@ extern void libmsbcg729_init(); @synthesize database; @synthesize fastAddressBook; @synthesize pushNotificationToken; +@synthesize sounds; struct codec_name_pref_table{ const char *name; @@ -172,19 +180,21 @@ struct codec_name_pref_table codec_pref_table[]={ { NSString *path = [[NSBundle mainBundle] pathForResource:@"ring" ofType:@"wav"]; - OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.callSound); + sounds.call = 0; + OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.call); if(status != 0){ [LinphoneLogger log:LinphoneLoggerWarning format:@"Can't set \"call\" system sound"]; } } { NSString *path = [[NSBundle mainBundle] pathForResource:@"msg" ofType:@"wav"]; - OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.messageSound); + sounds.message = 0; + OSStatus status = AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:path], &sounds.message); if(status != 0){ [LinphoneLogger log:LinphoneLoggerWarning format:@"Can't set \"message\" system sound"]; } } - + inhibitedEvent = [[NSMutableArray alloc] init]; database = NULL; settingsStore = nil; self.defaultExpires = 600; @@ -194,9 +204,14 @@ struct codec_name_pref_table codec_pref_table[]={ } - (void)dealloc { - AudioServicesDisposeSystemSoundID(sounds.callSound); - AudioServicesDisposeSystemSoundID(sounds.messageSound); + if(sounds.call) { + AudioServicesDisposeSystemSoundID(sounds.call); + } + if(sounds.message) { + AudioServicesDisposeSystemSoundID(sounds.message); + } + [inhibitedEvent release]; [fastAddressBook release]; [self closeDatabase]; [settingsStore release]; @@ -905,4 +920,17 @@ static LinphoneCoreVTable linphonec_vtable = { } } +- (void)addInhibitedEvent:(NSString*)event { + [inhibitedEvent addObject:event]; +} + +- (BOOL)removeInhibitedEvent:(NSString*)event { + NSUInteger index = [inhibitedEvent indexOfObject:kLinphoneTextReceivedSound]; + if(index != NSNotFound) { + [inhibitedEvent removeObjectAtIndex:index]; + return TRUE; + } + return FALSE; +} + @end diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index f71969973..07f346df1 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -205,7 +205,7 @@ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdateEvent:) - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; // Update on show LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); @@ -219,7 +219,7 @@ [super viewWillDisappear:animated]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; } diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m index e513babd5..7e868a9f3 100644 --- a/Classes/LinphoneUI/UIMainBar.m +++ b/Classes/LinphoneUI/UIMainBar.m @@ -63,15 +63,15 @@ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeViewEvent:) - name:@"LinphoneMainViewChange" + name:kLinphoneMainViewChange object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textReceived:) - name:@"LinphoneTextReceived" + name:kLinphoneTextReceived object:nil]; [self update:FALSE]; } @@ -80,13 +80,13 @@ [super viewWillDisappear:animated]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneMainViewChange" + name:kLinphoneMainViewChange object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneTextReceived" + name:kLinphoneTextReceived object:nil]; } diff --git a/Classes/LinphoneUI/UIPauseButton.m b/Classes/LinphoneUI/UIPauseButton.m index 235ff282d..d7d747961 100644 --- a/Classes/LinphoneUI/UIPauseButton.m +++ b/Classes/LinphoneUI/UIPauseButton.m @@ -118,7 +118,7 @@ linphone_core_leave_conference([LinphoneManager getLc]); // Fake event - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneCallUpdate object:self]; break; } case UIPauseButtonType_CurrentCall: @@ -153,7 +153,7 @@ { linphone_core_enter_conference([LinphoneManager getLc]); // Fake event - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneCallUpdate object:self]; break; } case UIPauseButtonType_CurrentCall: diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m index af07b4f2e..aa686e2ea 100644 --- a/Classes/LinphoneUI/UIStateBar.m +++ b/Classes/LinphoneUI/UIStateBar.m @@ -74,7 +74,7 @@ NSTimer *callSecurityTimer; // Set observer [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) - name:@"LinphoneRegistrationUpdate" + name:kLinphoneRegistrationUpdate object:nil]; @@ -93,7 +93,7 @@ NSTimer *callSecurityTimer; // Remove observer [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneRegistrationUpdate" + name:kLinphoneRegistrationUpdate object:nil]; if(callQualityTimer != nil) { diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index db5a33ed4..657ac740a 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -102,15 +102,15 @@ static PhoneMainView* phoneMainViewInstance=nil; // Set observers [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(callUpdate:) - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdate:) - name:@"LinphoneRegistrationUpdate" + name:kLinphoneRegistrationUpdate object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textReceived:) - name:@"LinphoneTextReceived" + name:kLinphoneTextReceived object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(batteryLevelChanged:) @@ -128,13 +128,13 @@ static PhoneMainView* phoneMainViewInstance=nil; // Remove observers [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneCallUpdate" + name:kLinphoneCallUpdate object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneRegistrationUpdate" + name:kLinphoneRegistrationUpdate object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneTextReceived" + name:kLinphoneTextReceived object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceBatteryLevelDidChangeNotification @@ -494,7 +494,7 @@ static PhoneMainView* phoneMainViewInstance=nil; } NSDictionary* mdict = [NSMutableDictionary dictionaryWithObject:currentView forKey:@"view"]; - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneMainViewChange" object:self userInfo:mdict]; + [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneMainViewChange object:self userInfo:mdict]; return [mainViewController getCurrentViewController]; } @@ -595,7 +595,9 @@ static PhoneMainView* phoneMainViewInstance=nil; [[UIApplication sharedApplication] presentLocalNotificationNow:notif]; } } else { - AudioServicesPlaySystemSound([LinphoneManager instance]->sounds.messageSound); + if(![[LinphoneManager instance] removeInhibitedEvent:kLinphoneTextReceivedSound]) { + AudioServicesPlaySystemSound([LinphoneManager instance].sounds.message); + } } } diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m index 7065ebd2d..e09152d7a 100644 --- a/Classes/Utils/FastAddressBook.m +++ b/Classes/Utils/FastAddressBook.m @@ -142,7 +142,7 @@ CFDictionaryRef lDict = ABMultiValueCopyValueAtIndex(lMap, i); BOOL add = false; if(CFDictionaryContainsKey(lDict, kABPersonInstantMessageServiceKey)) { - if(CFStringCompare((CFStringRef)CONTACT_SIP_FIELD, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { + if(CFStringCompare((CFStringRef)kContactSipField, CFDictionaryGetValue(lDict, kABPersonInstantMessageServiceKey), kCFCompareCaseInsensitive) == 0) { add = true; } } else { @@ -161,7 +161,7 @@ } CFRelease(lContacts); } - [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneAddressBookUpdate" object:self]; + [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneAddressBookUpdate object:self]; } void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context) { diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 3049e127f..746bae50a 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -125,7 +125,7 @@ static UICompositeViewDescription *compositeDescription = nil; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(registrationUpdateEvent:) - name:@"LinphoneRegistrationUpdate" + name:kLinphoneRegistrationUpdate object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self @@ -141,7 +141,7 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [[NSNotificationCenter defaultCenter] removeObserver:self - name:@"LinphoneRegistrationUpdate" + name:kLinphoneRegistrationUpdate object:nil]; From 1090d8c5d4381ef8b5aa55fe1af37bb2c126af72 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 14 Aug 2012 09:54:45 +0200 Subject: [PATCH 131/397] Add ring/ringback in Resources --- Resources/ring.caf | Bin 0 -> 344402 bytes Resources/ring.wav | Bin 0 -> 156120 bytes Resources/ringback.wav | Bin 0 -> 24620 bytes linphone.xcodeproj/project.pbxproj | 6 +++--- 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 Resources/ring.caf create mode 100644 Resources/ring.wav create mode 100644 Resources/ringback.wav diff --git a/Resources/ring.caf b/Resources/ring.caf new file mode 100644 index 0000000000000000000000000000000000000000..148592939dfd16494f8e527c621e92571335995e GIT binary patch literal 344402 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%0Dupt8dY;Dg&{SsS2py< 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 ofY7Xa&Mtk0=5^jwX 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

    R^Ub*g#e*kGA=Q(#YJt;y^ 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

    grK-LHFReVZ8UxQQ07lYM zFHmX0@pe%bWPd%q4gSb}#LIY zmeWN(c^97?uZm+9(*s5SfS33`om79;_2GpzX2f3o=efOt4;!xvq0UyotFxgDW&i_! z>MHsfvhthy2f5f4&QBZUY-4tm7w1GT6xS11mR1$Eta%rP_mYRYX?CLk&(tMGD7Q6I2gfiK1yA)W=CG10CNE zJwe<9uY>v%bl-EhYcJIi^gl-G8)_G7=NtV1ouIeC`gvqwM6GbH1Jr^g;m27LvwssZQhFdUWZsCLnMu&$53>?QaOyU`nefxIbAHQ*3V0&dI!w){YS zNv}uXNM7)`$H>wJn8$cr|7md75Y!f8+w@oMVfQG5E&>*~Q1wgxzlCq1YKM z&|5IVCG?8UQYVb5J!(vAW>RLI7PI2TiuFR2j01!Gpvz$uGHQ>0riY=fMBzMLQNvz? zpFUz`SV_455v0^587twCAR>37hV@WgRW7XBT)kZt(30-3iY$(1vtMj1e5E0*ChJdU z^?DtPqwRn)f1-ZCb9xU{7@>BnS1OB6t}m!cdMV9d>)CLu!dD<>7DQZQ`d7aI+F!;x zEJt=`!@S^Y(&ZCq-hx=o7>zhaG*7027|}~aSwk>}!9b|ua4L$!$qGZ4CK4n3qWS^_ zy1~6Wf||%s*MG1RY&)E-zxZt4iOmMHZH8#6M}LE%mUS1J$#p#&;`2Gq06+L^T+JScrss6v=i$ z&-BN6UNiX3tN;ad7a-g!)lyH;*TDo5cPFQ$R=PACfYI~|jH3%n&LjC@>}RUPJ$wkO zfmPUpuD}{F&dE?R8FjpB4OF;-SpI`L0{xC)*FiRPZOXxaHTYt-1sFMnCh5*V*M8VJ zmQnqs9)cNe2Db~x*?+0ax-AU{8uy`xG?r!I^T4CevWzSnRPr~lpYdS!$KitS)>ri= zjCLc|dX~Nh?`faT!``#gK;z=r>sW-B=M%v%KI%c>V~@~9c&Vo%hF-%BDU7FmoRkBR z2M2XGjJgUWpM8{C! zVp%k*;{?h>6R0R#&N`!pe}tBJ1J3#s*p&~OqB(X9bpxmVq<4aU97ZH9LpANoI2f{8zVA9QiyPEBGC`lLHY_6LVDt(bFAjE&<0mNVVBwb`Z6A0ecQ-^(iWK zR*KSD5W(GbS5(dH;1gB#Kz#!)b}dSckw2$rY$4o`>wGD%+J1~^}$ae>57zH%`g5G8ZoT~}0ZxdcM;8Yg`if&cQux3#@hjt?}-vhy#=(d=b z!Kjj%=m;42zsRz3_?(CJpcKH>g}N3xI2&+neqaA%tu&)&`@DVh| zZc4@eq6_F#JVYKp1pB#*+R-tybgp zi>N|#;kc9ovUk8*gwtfi2y~-qBHsH25qh0m zG!prd9r&{v@lz79(+(>z1zEaP{Z?%-$|uID-W~ z_7$_T7(JtUw2jta9eX3M8el$4!`YjyAA&2Vfr9D_l@|e~+lpQxQ`f10dI}7BhU$|G z5m*cRNJ{Im=w=1=DNXoy0{o-mSpB8+L4~SM|0#k#x*dKx09^*c8JUQ+IEx5M4rKmH zN!SnUpeg}f_!HT*kxHT4(jDsTxEA1$XMhh4v`c5k)$Rq?dXH7h19o*ANEFFZveTH^ zKA6kIkxeJuc>`oCLS?BKe)kp88Kz30XBq+bd9%ul`PqmVt*e^@u_qx`GhYN6TL=@Zq!d6s~I&%oTZ#hMMq44(&1)Weu3Bl}k)=Wbzcg${!r+KenO z4Hfby%Zs&`M^iAqsbCQg5uwNNNjFd}J-EUoNu`^ zJec`+%+WIB$Q#`X@A6=^mt$rc02|lf6Th)O!;t5H&@Zs*Q}|3<)ibE>|A4Q( zq2JJqiJY%IaFY}InuzOc&*3>p+$5V?`uzsX$~vIm$O;W4ufbW zFuN&g_jA<=k^2bo(+JV($Da|X?enoRmvti?GY3Xo1WtP?Ca{L_sL=wEa0&>y4J)`F ztSJq4G#rIHSO)kT4#(pHj+h2nR|R>x7Cbv2+lckahDcrn%-!=Jt~}S_i0H!P15ewF zsOSWh)(f*!8#^yDP-d(`JJhoF;5pY&E553R$i_<0$jgB82KB@G?n9OAiL>9tyw*lF zT}`u*p@T3ND=}Yppm54!{f+?;m`u^#wKv~FPLX2CVXle z&Qc9Z%>o-ff!B)R{n_EKrNO^DBkylxRG+}DJ|h#};^!~A3K#Pde2nMl{`CUl??b&j z0WH)S`>~ti$~d^h0-*U8#Akx;PHy%K(a?u-!sq#j4$?^E$3rlgkLoLaPNVWP2V;l> z1HYicpt>djvF<>tEuzQt0CnsGYFIw7?}tz{W$6+$=Ob|T?7A7c??2(!WI;?fM6}OE zMr=Udw?gJ@#mMfHm$_IR;^!bLP(RGXR%qe#z+w-oN+}>>LCozgjO#T<7=cXM1LUfO zHLr$j_W=`4Aj(L*_YM@nP1LV6a06Q6-lH8rv{o2NZ&d&Ls3Q&0VLgPI+(1nb(HC%z z6*$XZhz}3;1H6RV%!RXMLN-){AMpWs-WzE01M_I0^S_&JB6~a2RjkbbT|!^R6FMKL z)Zj%f)ULfimLjNMzfiwZV`o)IWI_?B!d&nguG28ekDNP=_^*MpnW#Pn_*lC{E{p4S zFrO1Nc0-^Z%%?ai3-+7_J*M2?-WiecLFnoKEA z*&5vC0+bCxX&y&z@pj8BxhvKq-~Leumv} zx=Le4W~sVxEGr^Hc7t1O!0xuSsL4echt5h09##y<-W(a&8}qprs%(Z@3`KB95xPmA zRV2n61AIw>BOisQu?0_LKf>0rneciX|{&On`; zf!QB}7;zyQYr*$g0ypmx=D!e7@;A7rX@q)Ikhq(2tddqtXub_zZBoKR8$d6^1?-gBZ?;pQ709LvTbI z0=*t!guS8t4?w?fM0BNsYcm-$H4R8M6m@D4s^T~{4!bKp0S_i40u-ufU1SLd!>|!y zji9rNpp%v!tYbGA*;g9GR>C*w&w8+ya1TlXg)(8yXF;2M#Bt-Xd+U(;j_iJp-M-y{ zN+qEEHUbgyK>f{t_8g8Z_=vH70jqt1S$PD`pU7ytVCUOy9hYOZ6&Zz5~9z|(t=xGD!_o)mq)tjL`rs2J(s3fq{G9IORf#wH^J z-U5eKfe-bh$MCNFz}T12l1tP9;7Lbt?9Mpu4xmsMb^wu|i~R(zY=d+Jy^%M?p*R!3YieLl za--w13Mljt(JFvHYmoRyi{*4i#8{u0##We~r(`-0fal}du%;ieN_YhRZkC>0d(J<7GL#U0T)Ft$C7J-?z zKsG+d+;3s?v1;!zGj6!*OW@7C0Xl`D!tDZL)kc>q7y7%^RTFhkRRc$zfVwss*ztur zvpI0264lRR%;uk9z5P+ovj3Oc&6Qha!TC-o2{g(Ee%S>~xi;b|EpnzXW+Va8RsDEU}gkKZOkRg49bD33~d3ujF1L+%IiZN++A)*Y}u!pML6$;&Y6}huu8M0s z2xP2?%&CfVdk_b+kRKDEEe)Xf#6({dD*ig=^)-0-7Q}C5RQ#H_!bxCG#(&OD4aC}h z@YoVS8vt5=H5Vxb%@ObWcEh%(So?j_88L- zoTm-=(g4i%40z$cp#k^eUxP5BEAV6Q!b3O)_BRYn^fd758IUp);&TM5>sGMX!N`%` zPy!FBG7#$}B61==zXR7k7TA*jKA2hOgi9QU%q|J`<3`kl!oj&s{ZQfCq0(PwKiE~) z2X}h9v1|Q3=A{v8Kn?vTP-g?GoC}{GjCpJY-uM{^drKdp3g}<7!uq8IDnx_H4@8t) zf>J%McY|9r20wd=-2ABap(h*({!tBXNEWD&moyKv(H-ifJg#yPJ~g18HvwUVlXb6o?we5i|Ip7!AVEupzH11*0bIv!)?ZlELT zpbvHk?Cu+owGLdGSk#J+n91Kjf)8pgRC@#*-AAZwzf^5h-ljNbXDBi^xWOU#L8qt@ za&0$ut`7yWj>jiwpoj7Xy5B)A4}~Io43&}YKd&nS>b*6pCU%Jdk56I6GXS;5BdV$+ zbBaN|zkrtc3oG>k>*q#H?*W_2i|i-~cd`e@5sN%Xjundl4($N@twHO-Tt?uUn*;A` z)QZjEOPf&ZnUmK#%7@uN>?q>R}L9^%cnb5&wM$1$6}-f<#}TCDyVp=AMTZ7>_L z&|POSqIO{aCBdFbAp;&_Oc|lJD*;Ky1A{%t&g@_ZA5rN(;&*?6A9M%mbjD9==*8Dy zTd$F$PgG8LtN)_reTAN_3k+C+xtNDqT^YD^5XfXgO>ajuq=p;#4$)zt8eakbxr1m6 zpi=oU|G3W)Yq12^It%}A0JYi~E<`kVLVxr=zrc~PP|5e=Q~7|!`QftNM?a~0;_e*$ zt2rWj4bcBOM${5>mS0~%z5b5cR0grW7o)tR3W5VCx*)r;4h2v_?gAf|fRC5M>Wo8f z#i2`*0xTJK^WkoW(*OC3=M#5{=KSCnccAuLu1f1FOS0jy3A?6RGP*oeSfT*nz_z@Mpx@r2;@uTbYlP&a-6@7|!( z?882$3*fPZaGcUufi0*lB@h?gfpm+2{Y?=q`+>K+;lLaM$8HSQLn6l9ICc=K=P=Yo z4y@}){68yjt2#8|1aQb@i0Gb((e&7jc@BPrfw*W6g}NC`D-E2CoIsRC;K>z{XL}I0 zGx1-BS?&gu$_%yp2UhAa-rWkAe+<|81e%}Qu2TOW94(eVFb@VQug7h*o(O&V0QaO|x}0T+J@D$x+k*#c;;Imp#P z;5@$&8H9J$LR_s!ecysU!A-=;8?4y^jI0aBI1nqJn$7@i#$qPA!F3vfapgjkx5J3q zqZ;l6H#my%R7V|LhwE&Dk;EdW4kE5f=v3&8*1~7{BDY6jWKW@1Gb2}00=XI?%VuH) zS|JanVXVEtpCw*T01DtaoQR5pm_6Lz0IXr)Mzz2PCnF~lD{vUt-3K6LKm2AGM(aaO zyo>SY0MdGqqen3tDZq=~;22LZzr8S;8bE_VI8zVA@Hf1E8D}|&nOTks{1C2OPSk>D zSbu?Dc_z$t3ar~8)c5tkj~N(oWn4*axGZ<^o^MbIiTk?VA?DLzu9M@F(TK4MxT1-0 zi@G2}W+StQ<4Bi)N&-scBY6B8MA&;M!--&)^|2m1|BIEIi1~^b$7ra@NVtWGJJZV} z8Xh7O%HgaAyy=mc{r;H4k@%T{&jp~-$H7~20qu67{&mEx*1)Qb#Ef*s-!sDpEddAP NF{<`d_&;0q{{eLzyN&<= literal 0 HcmV?d00001 diff --git a/Resources/ringback.wav b/Resources/ringback.wav new file mode 100644 index 0000000000000000000000000000000000000000..21f4b5bfb763e5448843e4410ce9d742227aa572 GIT binary patch literal 24620 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 literal 0 HcmV?d00001 diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index d5e3c2bfc..9d563572d 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -1338,8 +1338,8 @@ 22276E8813C73DC000210156 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; 223148E31178A08200637D6A /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = ""; }; 223148E51178A09900637D6A /* libmsilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsilbc.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsilbc.a"; sourceTree = ""; }; - 2237D4081084D7A9001383EE /* ring.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ring.wav; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/ring.wav"; sourceTree = ""; }; - 2242E312125235120061DDCE /* ring.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = ring.caf; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/rings/ring.caf"; sourceTree = ""; }; + 2237D4081084D7A9001383EE /* ring.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ring.wav; path = Resources/ring.wav; sourceTree = ""; }; + 2242E312125235120061DDCE /* ring.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = ring.caf; path = Resources/ring.caf; sourceTree = ""; }; 224567C1107B968500F10948 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; }; 2248E90C12F7E4CF00220D9C /* UIDigitButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDigitButton.h; sourceTree = ""; }; 2248E90D12F7E4CF00220D9C /* UIDigitButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIDigitButton.m; sourceTree = ""; }; @@ -1456,7 +1456,7 @@ 22F2508B107141E100AC9B3F /* DialerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DialerViewController.h; sourceTree = ""; }; 22F2508C107141E100AC9B3F /* DialerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = DialerViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 22F2508D107141E100AC9B3F /* DialerViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DialerViewController.xib; sourceTree = ""; }; - 22F254801073D99800AC9B3F /* ringback.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringback.wav; path = "liblinphone-sdk/apple-darwin/share/sounds/linphone/ringback.wav"; sourceTree = ""; }; + 22F254801073D99800AC9B3F /* ringback.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringback.wav; path = Resources/ringback.wav; sourceTree = ""; }; 288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 32CA4F630368D1EE00C91783 /* linphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphone_Prefix.pch; sourceTree = ""; }; From 69a1bb7feaa0e0cf67a68b81e3e40f2e4f3673ed Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 14 Aug 2012 11:09:16 +0200 Subject: [PATCH 132/397] Remove CPAnimation --- Classes/LinphoneUI/UICallBar.m | 129 +++++++---------- .../Utils/CPAnimation/CPAnimationSequence.h | 26 ---- .../Utils/CPAnimation/CPAnimationSequence.m | 84 ----------- Classes/Utils/CPAnimation/CPAnimationStep.h | 46 ------ Classes/Utils/CPAnimation/CPAnimationStep.m | 132 ------------------ linphone.xcodeproj/project.pbxproj | 24 ---- 6 files changed, 47 insertions(+), 394 deletions(-) delete mode 100755 Classes/Utils/CPAnimation/CPAnimationSequence.h delete mode 100755 Classes/Utils/CPAnimation/CPAnimationSequence.m delete mode 100755 Classes/Utils/CPAnimation/CPAnimationStep.h delete mode 100755 Classes/Utils/CPAnimation/CPAnimationStep.m diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index 07f346df1..ff13ea619 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -20,9 +20,6 @@ #import "UICallBar.h" #import "LinphoneManager.h" #import "PhoneMainView.h" - -#import "CPAnimationSequence.h" -#import "CPAnimationStep.h" #import "Utils.h" #include "linphonecore.h" @@ -281,29 +278,55 @@ } -#pragma mark - +#pragma mark - + +- (void)showAnimation:(NSString*)animationID target:(UIView*)target completion:(void (^)(BOOL finished))completion { + CGRect frame = [target frame]; + int original_y = frame.origin.y; + frame.origin.y = [[self view] frame].size.height; + [target setFrame:frame]; + [target setHidden:FALSE]; + [UIView animateWithDuration:0.5 + delay:0.0 + options:UIViewAnimationOptionCurveEaseOut + animations:^{ + CGRect frame = [target frame]; + frame.origin.y = original_y; + [target setFrame:frame]; + } + completion:^(BOOL finished){ + CGRect frame = [target frame]; + frame.origin.y = original_y; + [target setFrame:frame]; + completion(finished); + }]; +} + +- (void)hideAnimation:(NSString*)animationID target:(UIView*)target completion:(void (^)(BOOL finished))completion { + CGRect frame = [target frame]; + int original_y = frame.origin.y; + [UIView animateWithDuration:0.5 + delay:0.0 + options:UIViewAnimationOptionCurveEaseIn + animations:^{ + CGRect frame = [target frame]; + frame.origin.y = [[self view] frame].size.height; + [target setFrame:frame]; + } + completion:^(BOOL finished){ + CGRect frame = [target frame]; + frame.origin.y = original_y; + [target setHidden:TRUE]; + [target setFrame:frame]; + completion(finished); + }]; +} - (void)showPad:(BOOL)animated { [dialerButton setOn]; if([padView isHidden]) { if(animated) { - CGRect frame = [padView frame]; - int original_y = frame.origin.y; - frame.origin.y = [[self view] frame].size.height; - [padView setFrame:frame]; - [padView setHidden:FALSE]; - CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep after:0.0 - for:0.5 - options:UIViewAnimationOptionCurveEaseOut - animate:^{ - CGRect frame = [padView frame]; - frame.origin.y = original_y; - [padView setFrame:frame]; - }] autorelease], - nil - ] autorelease]; - [move run]; + [self showAnimation:@"show" target:padView completion:^(BOOL finished){}]; } else { [padView setHidden:FALSE]; } @@ -314,28 +337,7 @@ [dialerButton setOff]; if(![padView isHidden]) { if(animated) { - CGRect frame = [padView frame]; - int original_y = frame.origin.y; - - CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep after:0.0 - for:0.5 - options:UIViewAnimationOptionCurveEaseIn - animate:^{ - CGRect frame = [padView frame]; - frame.origin.y = [[self view] frame].size.height; - [padView setFrame:frame]; - }] autorelease], - [[CPAnimationStep after:0.0 - animate:^{ - CGRect frame = [padView frame]; - frame.origin.y = original_y; - [padView setHidden:TRUE]; - [padView setFrame:frame]; - }] autorelease], - nil - ] autorelease]; - [move run]; + [self hideAnimation:@"hide" target:padView completion:^(BOOL finished){}]; } else { [padView setHidden:TRUE]; } @@ -346,23 +348,7 @@ [optionsButton setOn]; if([optionsView isHidden]) { if(animated) { - CGRect frame = [optionsView frame]; - int original_y = frame.origin.y; - frame.origin.y = [[self view] frame].size.height; - [optionsView setFrame:frame]; - [optionsView setHidden:FALSE]; - CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep after:0.0 - for:0.5 - options:UIViewAnimationOptionCurveEaseOut - animate:^{ - CGRect frame = [optionsView frame]; - frame.origin.y = original_y; - [optionsView setFrame:frame]; - }] autorelease], - nil - ] autorelease]; - [move run]; + [self showAnimation:@"show" target:optionsView completion:^(BOOL finished){}]; } else { [optionsView setHidden:FALSE]; } @@ -373,28 +359,7 @@ [optionsButton setOff]; if(![optionsView isHidden]) { if(animated) { - CGRect frame = [optionsView frame]; - int original_y = frame.origin.y; - - CPAnimationSequence* move = [[CPAnimationSequence sequenceWithSteps: - [[CPAnimationStep after:0.0 - for:0.5 - options:UIViewAnimationOptionCurveEaseIn - animate:^{ - CGRect frame = [optionsView frame]; - frame.origin.y = [[self view] frame].size.height; - [optionsView setFrame:frame]; - }] autorelease], - [[CPAnimationStep after:0.0 - animate:^{ - CGRect frame = [optionsView frame]; - frame.origin.y = original_y; - [optionsView setHidden:TRUE]; - [optionsView setFrame:frame]; - }] autorelease], - nil - ] autorelease]; - [move run]; + [self hideAnimation:@"hide" target:optionsView completion:^(BOOL finished){}]; } else { [optionsView setHidden:TRUE]; } diff --git a/Classes/Utils/CPAnimation/CPAnimationSequence.h b/Classes/Utils/CPAnimation/CPAnimationSequence.h deleted file mode 100755 index d018d1dfc..000000000 --- a/Classes/Utils/CPAnimation/CPAnimationSequence.h +++ /dev/null @@ -1,26 +0,0 @@ - -// Created by Yang Meyer on 26.07.11. -// Copyright 2011-2012 compeople AG. All rights reserved. - -#import -#import "CPAnimationStep.h" - -/** - A CPAnimationSequence defines a sequence of CPAnimationStep objects, which can - be `-run` animatedly or non-animatedly. - - CPAnimationSequence implements the Composite design pattern, with CPAnimationStep - as the base class. - */ -@interface CPAnimationSequence : CPAnimationStep - -#pragma mark - constructors - -+ (id) sequenceWithSteps:(CPAnimationStep*)first, ... NS_REQUIRES_NIL_TERMINATION; - -#pragma mark - properties - -/** Animations steps, from first to last. */ -@property (nonatomic, strong, readonly) NSArray* steps; - -@end diff --git a/Classes/Utils/CPAnimation/CPAnimationSequence.m b/Classes/Utils/CPAnimation/CPAnimationSequence.m deleted file mode 100755 index d0b1ebd35..000000000 --- a/Classes/Utils/CPAnimation/CPAnimationSequence.m +++ /dev/null @@ -1,84 +0,0 @@ - -// Created by Yang Meyer on 26.07.11. -// Copyright 2011-2012 compeople AG. All rights reserved. - -#import "CPAnimationSequence.h" - -@interface CPAnimationStep(hidden) -- (NSArray*) animationStepArray; -@end - -@interface CPAnimationSequence() -@property (nonatomic, strong, readwrite) NSArray* steps; -@end - -#pragma mark - -@implementation CPAnimationSequence - -@synthesize steps; - -#pragma mark - Object lifecycle - -+ (id) sequenceWithSteps:(CPAnimationStep*)first, ... { - CPAnimationSequence* instance = [[self alloc] init]; - if (instance) { - NSMutableArray* tempSteps = [[NSMutableArray alloc] initWithCapacity:10]; - va_list args; - va_start(args, first); - [tempSteps insertObject:first atIndex:0]; - CPAnimationStep* aStep; - while ((aStep = va_arg(args, CPAnimationStep*))) { - [tempSteps insertObject:aStep atIndex:0]; - } - instance.steps = [NSArray arrayWithArray:tempSteps]; - va_end(args); - [tempSteps release]; - } - return instance; -} - -- (void) dealloc { - [steps release]; - [super dealloc]; -} - -#pragma mark - property override - -- (void) setDelay:(NSTimeInterval)delay { - NSAssert(NO, @"Setting a delay on a sequence is undefined and therefore disallowed!"); -} - -- (void) setDuration:(NSTimeInterval)duration { - NSAssert(NO, @"Setting a duration on a sequence is undefined and therefore disallowed!"); -} - -- (void) setOptions:(UIViewAnimationOptions)options { - NSAssert(NO, @"Setting options on a sequence is undefined and therefore disallowed!"); -} - -#pragma mark - build the sequence - -- (NSArray*) animationStepArray { - NSMutableArray* array = [NSMutableArray arrayWithCapacity:[self.steps count]]; - for (CPAnimationStep* current in self.steps) { - [array addObjectsFromArray:[current animationStepArray]]; - } - return array; -} - -#pragma mark - pretty-print - -- (NSString*) description { - NSMutableString* sequenceBody = [[NSMutableString alloc] initWithCapacity:100*[self.steps count]]; - for (CPAnimationStep* step in self.steps) { - [sequenceBody appendString:[step description]]; - } - // indent - [sequenceBody replaceOccurrencesOfString:@"\n" - withString:@"\n " - options:NSCaseInsensitiveSearch - range:NSMakeRange(0, [sequenceBody length])]; - return [NSString stringWithFormat:@"\n(sequence:%@\n)", sequenceBody]; -} - -@end diff --git a/Classes/Utils/CPAnimation/CPAnimationStep.h b/Classes/Utils/CPAnimation/CPAnimationStep.h deleted file mode 100755 index 709594a7c..000000000 --- a/Classes/Utils/CPAnimation/CPAnimationStep.h +++ /dev/null @@ -1,46 +0,0 @@ - -// Created by Yang Meyer on 26.07.11. -// Copyright 2011 compeople AG. All rights reserved. - -#import - -/** Helper type definition for the component. */ -typedef void (^AnimationStep)(void); - -/** - A CPAnimationStep defines a single animation object with a delay, duration, execution block and animation options. - */ -@interface CPAnimationStep : NSObject - -#pragma mark - constructors - -+ (id) after:(NSTimeInterval)delay - animate:(AnimationStep)step; - -+ (id) for:(NSTimeInterval)duration - animate:(AnimationStep)step; - -+ (id) after:(NSTimeInterval)delay - for:(NSTimeInterval)duration - animate:(AnimationStep)step; - -+ (id) after:(NSTimeInterval)delay - for:(NSTimeInterval)duration - options:(UIViewAnimationOptions)theOptions - animate:(AnimationStep)step; - -#pragma mark - properties (normally already set by the constructor) - -@property (nonatomic) NSTimeInterval delay; -@property (nonatomic) NSTimeInterval duration; -@property (nonatomic, strong) AnimationStep step; -@property (nonatomic) UIViewAnimationOptions options; - -#pragma mark - execution - -/** Starts the step execution. */ -- (void) runAnimated:(BOOL)animated; -/** Shortcut for [step runAnimated:YES] */ -- (void) run; - -@end diff --git a/Classes/Utils/CPAnimation/CPAnimationStep.m b/Classes/Utils/CPAnimation/CPAnimationStep.m deleted file mode 100755 index 4ad40220f..000000000 --- a/Classes/Utils/CPAnimation/CPAnimationStep.m +++ /dev/null @@ -1,132 +0,0 @@ - -// Created by Yang Meyer on 26.07.11. -// Copyright 2011-2012 compeople AG. All rights reserved. - -#import "CPAnimationStep.h" - -@interface CPAnimationStep() -/** A temporary reverse queue of animation steps, i.e. from last to first. - It is created when the step is run, and is modified during the animation, - and is destroyed when the animation finishes. */ -@property (nonatomic, strong) NSMutableArray* consumableSteps; -@end - -@implementation CPAnimationStep - -@synthesize delay, duration, step, options; -@synthesize consumableSteps; - -#pragma mark overrides - - -#pragma mark construction - -+ (id) after:(NSTimeInterval)delay animate:(AnimationStep)step { - return [self after:delay for:0.0 options:0 animate:step]; -} - -+ (id) for:(NSTimeInterval)duration animate:(AnimationStep)step { - return [self after:0.0 for:duration options:0 animate:step]; -} - -+ (id) after:(NSTimeInterval)delay for:(NSTimeInterval)duration animate:(AnimationStep)step { - return [self after:delay for:duration options:0 animate:step]; -} - -+ (id) after:(NSTimeInterval)theDelay - for:(NSTimeInterval)theDuration - options:(UIViewAnimationOptions)theOptions - animate:(AnimationStep)theStep { - - CPAnimationStep* instance = [[self alloc] init]; - if (instance) { - instance.delay = theDelay; - instance.duration = theDuration; - instance.options = theOptions; - instance.step = theStep; - } - return instance; -} - -- (void)dealloc { - [step release]; - [super dealloc]; -} - -#pragma mark action - -// From http://stackoverflow.com/questions/4007023/blocks-instead-of-performselectorwithobjectafterdelay -+ (void) runBlock:(AnimationStep)block afterDelay:(NSTimeInterval)delay { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC*delay), dispatch_get_current_queue(), block); -} - -- (NSArray*) animationStepArray { - // subclasses must override this! - return [NSArray arrayWithObject:self]; -} - -- (void) runAnimated:(BOOL)animated { - if (!self.consumableSteps) { - self.consumableSteps = [[NSMutableArray alloc] initWithArray:[self animationStepArray]]; - } - if (![self.consumableSteps count]) { // recursion anchor - [self.consumableSteps release]; - self.consumableSteps = nil; - return; // we're done - } - void (^completionStep)(BOOL) = ^(BOOL animated){ - [self.consumableSteps removeLastObject]; - [self runAnimated:animated]; // recurse! - }; - CPAnimationStep* currentStep = [self.consumableSteps lastObject]; - // Note: do not animate to short steps - if (animated && currentStep.duration >= 0.02) { - [UIView animateWithDuration:currentStep.duration - delay:currentStep.delay - options:currentStep.options - animations:currentStep.step - completion:^(BOOL finished) { - if (finished) { - completionStep(TRUE); - } else { - completionStep(FALSE); - } - }]; - } else { - void (^execution)(void) = ^{ - currentStep.step(); - completionStep(FALSE); - }; - - if (animated && currentStep.delay) { - [CPAnimationStep runBlock:execution afterDelay:currentStep.delay]; - } else { - execution(); - } - } -} - -- (void) run { - [self runAnimated:YES]; -} - -#pragma mark - pretty-print - -- (NSString*) description { - NSMutableString* result = [[NSMutableString alloc] initWithCapacity:100]; - [result appendString:@"\n["]; - if (self.delay > 0.0) { - [result appendFormat:@"after:%.1f ", self.delay]; - } - if (self.duration > 0.0) { - [result appendFormat:@"for:%.1f ", self.duration]; - } - if (self.options > 0) { - [result appendFormat:@"options:%d ", self.options]; - } - [result appendFormat:@"animate:%@", self.step]; - [result appendString:@"]"]; - return result; -} - -@end diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 9d563572d..d809609ee 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -743,10 +743,6 @@ D3832801158100E400FA0D23 /* history_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history_over.png */; }; D3832802158100E400FA0D23 /* settings_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings_over.png */; }; D3832803158100E400FA0D23 /* chat_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* chat_over.png */; }; - D389362615A6D19800A3A3AA /* CPAnimationSequence.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362315A6D19800A3A3AA /* CPAnimationSequence.m */; }; - D389362715A6D19800A3A3AA /* CPAnimationSequence.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362315A6D19800A3A3AA /* CPAnimationSequence.m */; }; - D389362815A6D19800A3A3AA /* CPAnimationStep.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362515A6D19800A3A3AA /* CPAnimationStep.m */; }; - D389362915A6D19800A3A3AA /* CPAnimationStep.m in Sources */ = {isa = PBXBuildFile; fileRef = D389362515A6D19800A3A3AA /* CPAnimationStep.m */; }; D389363915A6D53200A3A3AA /* chat_bubble_incoming.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */; }; D389363B15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */; }; D38D14AF15A30B3D008497E8 /* cell_call_first_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */; }; @@ -1744,10 +1740,6 @@ D38327FD158100E400FA0D23 /* history_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_over.png; path = Resources/history_over.png; sourceTree = ""; }; D38327FE158100E400FA0D23 /* settings_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_over.png; path = Resources/settings_over.png; sourceTree = ""; }; D38327FF158100E400FA0D23 /* chat_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_over.png; path = Resources/chat_over.png; sourceTree = ""; }; - D389362215A6D19800A3A3AA /* CPAnimationSequence.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPAnimationSequence.h; path = Utils/CPAnimation/CPAnimationSequence.h; sourceTree = ""; }; - D389362315A6D19800A3A3AA /* CPAnimationSequence.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CPAnimationSequence.m; path = Utils/CPAnimation/CPAnimationSequence.m; sourceTree = ""; }; - D389362415A6D19800A3A3AA /* CPAnimationStep.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CPAnimationStep.h; path = Utils/CPAnimation/CPAnimationStep.h; sourceTree = ""; }; - D389362515A6D19800A3A3AA /* CPAnimationStep.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = CPAnimationStep.m; path = Utils/CPAnimation/CPAnimationStep.m; sourceTree = ""; }; D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_bubble_incoming.9.png; path = Resources/chat_bubble_incoming.9.png; sourceTree = ""; }; D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_bubble_outgoing.9.png; path = Resources/chat_bubble_outgoing.9.png; sourceTree = ""; }; D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_first_highlight.png; path = Resources/cell_call_first_highlight.png; sourceTree = ""; }; @@ -3074,7 +3066,6 @@ children = ( D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */, D380801115C29984005BE9BC /* ColorSpaceUtilities.h */, - D38935F715A6D06800A3A3AA /* CPAnimation */, D3807FB615C28940005BE9BC /* DCRoundSwitch */, D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */, D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */, @@ -3185,17 +3176,6 @@ path = Views; sourceTree = ""; }; - D38935F715A6D06800A3A3AA /* CPAnimation */ = { - isa = PBXGroup; - children = ( - D389362215A6D19800A3A3AA /* CPAnimationSequence.h */, - D389362315A6D19800A3A3AA /* CPAnimationSequence.m */, - D389362415A6D19800A3A3AA /* CPAnimationStep.h */, - D389362515A6D19800A3A3AA /* CPAnimationStep.m */, - ); - name = CPAnimation; - sourceTree = ""; - }; D398D3031594B0FB00FD553C /* Settings */ = { isa = PBXGroup; children = ( @@ -4302,8 +4282,6 @@ D32B6E2915A5BC440033019F /* ChatRoomTableViewController.m in Sources */, D32B6E3815A5C2430033019F /* ChatModel.m in Sources */, D3A8BB7015A6C7D500F96BE5 /* UIChatRoomCell.m in Sources */, - D389362615A6D19800A3A3AA /* CPAnimationSequence.m in Sources */, - D389362815A6D19800A3A3AA /* CPAnimationStep.m in Sources */, D3128FE115AABC7E00A2147A /* ContactDetailsViewController.m in Sources */, D37C639515AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */, D37C639B15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, @@ -4393,8 +4371,6 @@ D32B6E2A15A5BC440033019F /* ChatRoomTableViewController.m in Sources */, D32B6E3915A5C2430033019F /* ChatModel.m in Sources */, D3A8BB7115A6C7D500F96BE5 /* UIChatRoomCell.m in Sources */, - D389362715A6D19800A3A3AA /* CPAnimationSequence.m in Sources */, - D389362915A6D19800A3A3AA /* CPAnimationStep.m in Sources */, D3128FE215AABC7E00A2147A /* ContactDetailsViewController.m in Sources */, D37C639615AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */, D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */, From 46569ae156f589bc41fb938a59e6b906f28a50fa Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 14 Aug 2012 11:24:32 +0200 Subject: [PATCH 133/397] Simplify Wizard inner functions --- Classes/WizardViewController.m | 58 +++++++++++++++++----------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 746bae50a..35d50eae7 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -178,12 +178,12 @@ static UICompositeViewDescription *compositeDescription = nil; [waitView setHidden:TRUE]; } -+ (UIView*)findTextField:(ViewElement)tag view:(UIView*)view { ++ (UIView*)findView:(ViewElement)tag view:(UIView*)view { for(UIView *child in [view subviews]) { if([child tag] == tag){ return (UITextField*)child; } else { - UIView *o = [WizardViewController findTextField:tag view:child]; + UIView *o = [WizardViewController findView:tag view:child]; if(o) return o; } @@ -191,17 +191,17 @@ static UICompositeViewDescription *compositeDescription = nil; return nil; } -- (UITextField*)findTextField:(ViewElement)tag { - UIView *view = [WizardViewController findTextField:tag view:contentView]; - if([view isKindOfClass:[UITextField class]]) - return (UITextField*)view; ++ (UITextField*)findTextField:(ViewElement)tag view:(UIView*)view { + UIView *aview = [WizardViewController findView:tag view:view]; + if([aview isKindOfClass:[UITextField class]]) + return (UITextField*)aview; return nil; } -- (UILabel*)findLabel:(ViewElement)tag { - UIView *view = [WizardViewController findTextField:tag view:contentView]; - if([view isKindOfClass:[UILabel class]]) - return (UILabel*)view; ++ (UILabel*)findLabel:(ViewElement)tag view:(UIView*)view { + UIView *aview = [WizardViewController findView:tag view:view]; + if([aview isKindOfClass:[UILabel class]]) + return (UILabel*)aview; return nil; } @@ -379,30 +379,30 @@ static UICompositeViewDescription *compositeDescription = nil; } - (IBAction)onCheckValidationClick:(id)sender { - NSString *username = [self findTextField:ViewElement_Username].text; + NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text; [self checkAccountValidation:[NSString stringWithFormat:@"%@@%@", username, LINPHONE_WIZARD_DOMAIN]]; } - (IBAction)onSignInExternalClick:(id)sender { [self.waitView setHidden:false]; - NSString *username = [self findTextField:ViewElement_Username].text; - NSString *password = [self findTextField:ViewElement_Password].text; - NSString *domain = [self findTextField:ViewElement_Domain].text; + NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text; + NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text; + NSString *domain = [WizardViewController findTextField:ViewElement_Domain view:contentView].text; [self addProxyConfig:username password:password domain:domain]; } - (IBAction)onSignInClick:(id)sender { [self.waitView setHidden:false]; - NSString *username = [self findTextField:ViewElement_Username].text; - NSString *password = [self findTextField:ViewElement_Password].text; + NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text; + NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text; [self addProxyConfig:username password:password domain:LINPHONE_WIZARD_DOMAIN]; } - (IBAction)onRegisterClick:(id)sender { - NSString *username = [self findTextField:ViewElement_Username].text; - NSString *password = [self findTextField:ViewElement_Password].text; - NSString *password2 = [self findTextField:ViewElement_Password2].text; - NSString *email = [self findTextField:ViewElement_Email].text; + NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text; + NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text; + NSString *password2 = [WizardViewController findTextField:ViewElement_Password2 view:contentView].text; + NSString *email = [WizardViewController findTextField:ViewElement_Email view:contentView].text; NSMutableString *errors = [NSMutableString string]; if ([username length] < LINPHONE_WIZARD_MIN_USERNAME_LENGTH) { @@ -526,18 +526,18 @@ static UICompositeViewDescription *compositeDescription = nil; [errorView show]; [errorView release]; } else { - NSString *username = [self findTextField:ViewElement_Username].text; - NSString *password = [self findTextField:ViewElement_Password].text; - NSString *email = [self findTextField:ViewElement_Email].text; + NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text; + NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text; + NSString *email = [WizardViewController findTextField:ViewElement_Email view:contentView].text; [self createAccount:[NSString stringWithFormat:@"%@@%@", username, LINPHONE_WIZARD_DOMAIN] password:password email:email]; } } else if([[request method] isEqualToString:@"create_account_with_useragent"]) { if([response object] == [NSNumber numberWithInt:0]) { - NSString *username = [self findTextField:ViewElement_Username].text; - NSString *password = [self findTextField:ViewElement_Password].text; + NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text; + NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text; [self changeView:validateAccountView back:FALSE animation:TRUE]; - [self findTextField:ViewElement_Username].text = username; - [self findTextField:ViewElement_Password].text = password; + [WizardViewController findTextField:ViewElement_Username view:contentView].text = username; + [WizardViewController findTextField:ViewElement_Password view:contentView].text = password; } else { UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account creation issue",nil) message:NSLocalizedString(@"Can't create the account. Please try again.", nil) @@ -549,8 +549,8 @@ static UICompositeViewDescription *compositeDescription = nil; } } else if([[request method] isEqualToString:@"check_account_validated"]) { if([response object] == [NSNumber numberWithInt:1]) { - NSString *username = [self findTextField:ViewElement_Username].text; - NSString *password = [self findTextField:ViewElement_Password].text; + NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text; + NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text; [self addProxyConfig:username password:password domain:LINPHONE_WIZARD_DOMAIN]; } else { UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account validation issue",nil) From de1ecec3a5fd094720a20d16a299cb774493a697 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 14 Aug 2012 13:04:40 +0200 Subject: [PATCH 134/397] Fix Wizard messagebox when communication/http error --- Classes/WizardViewController.m | 12 ++++++------ Classes/WizardViewController.xib | 2 +- Resources/en.lproj/Localizable.strings | Bin 13432 -> 13344 bytes 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 35d50eae7..d14f08d26 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -503,7 +503,7 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - XMLRPCConnectionDelegate Functions -- (void)request: (XMLRPCRequest *)request didReceiveResponse: (XMLRPCResponse *)response { +- (void)request:(XMLRPCRequest *)request didReceiveResponse:(XMLRPCResponse *)response { [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC %@: %@", [request method], [response body]]; [waitView setHidden:true]; if ([response isFault]) { @@ -515,7 +515,7 @@ static UICompositeViewDescription *compositeDescription = nil; otherButtonTitles:nil,nil]; [errorView show]; [errorView release]; - } else { + } else if([response object] != nil) { //Don't handle if not object: HTTP/Communication Error if([[request method] isEqualToString:@"check_account"]) { if([response object] == [NSNumber numberWithInt:1]) { UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Check issue",nil) @@ -565,7 +565,7 @@ static UICompositeViewDescription *compositeDescription = nil; } } -- (void)request: (XMLRPCRequest *)request didFailWithError: (NSError *)error { +- (void)request:(XMLRPCRequest *)request didFailWithError:(NSError *)error { NSString *errorString = [NSString stringWithFormat:NSLocalizedString(@"Can't create account: Communication issue (%@)", nil), [error localizedDescription]]; UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue", nil) message:errorString @@ -577,15 +577,15 @@ static UICompositeViewDescription *compositeDescription = nil; [waitView setHidden:true]; } -- (BOOL)request: (XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace: (NSURLProtectionSpace *)protectionSpace { +- (BOOL)request:(XMLRPCRequest *)request canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace { return FALSE; } -- (void)request: (XMLRPCRequest *)request didReceiveAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { +- (void)request:(XMLRPCRequest *)request didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { } -- (void)request: (XMLRPCRequest *)request didCancelAuthenticationChallenge: (NSURLAuthenticationChallenge *)challenge { +- (void)request:(XMLRPCRequest *)request didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge { } diff --git a/Classes/WizardViewController.xib b/Classes/WizardViewController.xib index 9d175e6d6..90049c4fa 100644 --- a/Classes/WizardViewController.xib +++ b/Classes/WizardViewController.xib @@ -401,7 +401,7 @@ 200 NO IBCocoaTouchFramework - Enter you username and password with your SIP domain + Enter you username and password with your email address 0 diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index 0f3dedb8c13983782fa3e30ad067350153a4a6be..58075abdac672175be6d344f3d8dd806ffb5d752 100644 GIT binary patch delta 28 icmey7u^?lE3HRhJ{3?@Qaq~=`z|93>Z+^wyrvU)5+6#67 delta 44 ncmZ3G@grk{3HRi0+!B+;c=(vD7!)QOa@(TujW^HZZqfh%Mga{3 From 919e732dc0f84ccac892589d4ed75e683412ad3a Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 14 Aug 2012 14:44:29 +0200 Subject: [PATCH 135/397] Fix Wizard messagebox --- Classes/WizardViewController.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index d14f08d26..04711c118 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -507,7 +507,7 @@ static UICompositeViewDescription *compositeDescription = nil; [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC %@: %@", [request method], [response body]]; [waitView setHidden:true]; if ([response isFault]) { - NSString *errorString = [NSString stringWithFormat:NSLocalizedString(@"Can't create account: Communication issue (%@)", nil), [response faultString]]; + NSString *errorString = [NSString stringWithFormat:NSLocalizedString(@"Communication issue (%@)", nil), [response faultString]]; UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue",nil) message:errorString delegate:nil @@ -566,7 +566,7 @@ static UICompositeViewDescription *compositeDescription = nil; } - (void)request:(XMLRPCRequest *)request didFailWithError:(NSError *)error { - NSString *errorString = [NSString stringWithFormat:NSLocalizedString(@"Can't create account: Communication issue (%@)", nil), [error localizedDescription]]; + NSString *errorString = [NSString stringWithFormat:NSLocalizedString(@"Communication issue (%@)", nil), [error localizedDescription]]; UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Communication issue", nil) message:errorString delegate:nil From efa6a69780591608e73309d8ce1212085f814f79 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 14 Aug 2012 15:00:02 +0200 Subject: [PATCH 136/397] Add sip URL support --- Classes/LinphoneAppDelegate.m | 12 ++++++++++++ linphone-Info.plist | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index cd7f89a06..8cdbcd2d8 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -184,6 +184,18 @@ int __aeabi_idiv(int a, int b) { - (void)applicationWillTerminate:(UIApplication *)application { } +- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { + [self startApplication]; + if([LinphoneManager isLcReady]) { + // Go to ChatRoom view + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription] push:TRUE], DialerViewController); + if(controller != nil) { + [controller setAddress:[url absoluteString]]; + } + } + return YES; +} + - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { [LinphoneLogger log:LinphoneLoggerDebug format:@"PushNotification: Receive %@", userInfo]; NSDictionary *aps = [userInfo objectForKey:@"aps"]; diff --git a/linphone-Info.plist b/linphone-Info.plist index 22181516a..7b5fcad31 100644 --- a/linphone-Info.plist +++ b/linphone-Info.plist @@ -2,6 +2,17 @@ + CFBundleURLTypes + + + CFBundleURLName + org.linphone.phone + CFBundleURLSchemes + + sip + + + CFBundleDevelopmentRegion English CFBundleDisplayName From 0ff2d2ec84829d5514564c670ecb160d7dacb916 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 14 Aug 2012 15:08:01 +0200 Subject: [PATCH 137/397] Add filter to URL open support --- Classes/LinphoneAppDelegate.m | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 8cdbcd2d8..29fd31a43 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -187,10 +187,12 @@ int __aeabi_idiv(int a, int b) { - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { [self startApplication]; if([LinphoneManager isLcReady]) { - // Go to ChatRoom view - DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription] push:TRUE], DialerViewController); - if(controller != nil) { - [controller setAddress:[url absoluteString]]; + if([[url scheme] isEqualToString:@"sip"]) { + // Go to ChatRoom view + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription] push:TRUE], DialerViewController); + if(controller != nil) { + [controller setAddress:[url absoluteString]]; + } } } return YES; From 8d5379bc0bf7f77b3b8ef02c74945814346c8fce Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 14 Aug 2012 15:13:21 +0200 Subject: [PATCH 138/397] Fix view change on SIP url opening --- Classes/LinphoneAppDelegate.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 29fd31a43..47856aefc 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -189,7 +189,7 @@ int __aeabi_idiv(int a, int b) { if([LinphoneManager isLcReady]) { if([[url scheme] isEqualToString:@"sip"]) { // Go to ChatRoom view - DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription] push:TRUE], DialerViewController); + DialerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]], DialerViewController); if(controller != nil) { [controller setAddress:[url absoluteString]]; } From a07155a930b12c1ed23a21919f77da0327ee5a01 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 14 Aug 2012 16:32:46 +0200 Subject: [PATCH 139/397] Fix localization --- Classes/LinphoneCoreSettingsStore.m | 3 ++- Resources/en.lproj/Localizable.strings | Bin 13344 -> 13344 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index c20b36a8f..acc6e1f55 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -362,7 +362,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); for(int i = 0; i < [tokenData length]; ++i) { [tokenString appendFormat:@"%02X", (unsigned int)tokenBuffer[i]]; } - // NSLocalizedString(@"IC_MSG", nil); // Fake + // NSLocalizedString(@"IC_MSG", nil); // Fake for genstrings + // NSLocalizedString(@"IM_MSG", nil); // Fake for genstrings NSString *params = [NSString stringWithFormat:@"APN-TOK=%@;APN-MSG=IM_MSG;APN-CAL=IC_MSG;APN-CAL-SND=ring.caf;APN-MSG-SND=msg.caf", tokenString]; linphone_proxy_config_set_contact_parameters(proxyCfg, [params UTF8String]); } diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index 58075abdac672175be6d344f3d8dd806ffb5d752..91e033ae9682c01b725ca7d25905f1628393d07a 100644 GIT binary patch delta 50 zcmV-20L}lPXrO2U{{NG)15vS3;tI3&3l;>EUJoLZSPPz$j1Ug97!cwXlaMEXlk6sz Ivk)i`3^9ciHUIzs delta 56 zcmV-80LTBJXrO2U|NfH!15mM3;tG?S4kVLp51z9%3l;>Ej}Q#A84%(YlZhvYlkFys OlSe2fvo|Q|3jqL$!4*LO From a506e6b2a15a7ced63f03a4aed42fe5e6c418140 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 14 Aug 2012 17:58:38 +0200 Subject: [PATCH 140/397] Use same call/message incoming message --- Classes/PhoneMainView.m | 4 ++-- Resources/en.lproj/Localizable.strings | Bin 13344 -> 12992 bytes 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 657ac740a..d86226176 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -587,7 +587,7 @@ static PhoneMainView* phoneMainViewInstance=nil; UILocalNotification* notif = [[[UILocalNotification alloc] init] autorelease]; if (notif) { notif.repeatInterval = 0; - notif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"%@ sent you a message",nil), address]; + notif.alertBody = [NSString stringWithFormat:NSLocalizedString(@"IM_MSG",nil), address]; notif.alertAction = NSLocalizedString(@"Show", nil); notif.soundName = @"msg.caf"; notif.userInfo = [NSDictionary dictionaryWithObject:[chat remoteContact] forKey:@"chat"]; @@ -638,7 +638,7 @@ static PhoneMainView* phoneMainViewInstance=nil; appData->notification = [[UILocalNotification alloc] init]; if (appData->notification) { appData->notification.repeatInterval = 0; - appData->notification.alertBody =[NSString stringWithFormat:NSLocalizedString(@" %@ is calling you",nil), address]; + appData->notification.alertBody =[NSString stringWithFormat:NSLocalizedString(@"IC_MSG",nil), address]; appData->notification.alertAction = NSLocalizedString(@"Answer", nil); appData->notification.soundName = @"ring.caf"; appData->notification.userInfo = [NSDictionary dictionaryWithObject:[NSData dataWithBytes:&call length:sizeof(call)] forKey:@"call"]; diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings index 91e033ae9682c01b725ca7d25905f1628393d07a..78ad42e2428add4689948467a112c894b92dbfc4 100644 GIT binary patch delta 15 XcmZ3GaUgX<=*IsG7&nJ9pEdvhKvoB8 delta 191 zcmX?*x*%ghsJ|+M1A_uXCPOihOlC-A$N|DkhCGIJAit6!pP`gN3COYqVh~MG_2dUU zksE^-F@`GuO-u!vQvx?f0cg4cLoQIX7zh)AHl!k%4KbOZp2-*ZqBnnJJZ}I19YiLy From c786f60d818dd9533530b2a01bc49b0e12f2e1dc Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 14 Aug 2012 23:47:51 +0200 Subject: [PATCH 141/397] repair background mode and fix double instanciation of settingsStore, causing inconsistencies between visible configuration and used one. rename RFC dtmf. --- Classes/LinphoneAppDelegate.m | 53 ++++++++++++++---------- Classes/LinphoneCoreSettingsStore.m | 2 +- Classes/LinphoneManager.h | 1 + Classes/LinphoneManager.m | 13 +++--- Settings/InAppSettings.bundle/Call.plist | 4 +- 5 files changed, 43 insertions(+), 30 deletions(-) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 47856aefc..5465b209f 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -82,22 +82,30 @@ int __aeabi_idiv(int a, int b) { } } +- (void)applicationDidEnterBackground:(UIApplication *)application{ + [LinphoneLogger logc:LinphoneLoggerLog format:"applicationDidEnterBackground"]; + if(![LinphoneManager isLcReady]) return; + [[LinphoneManager instance] enterBackgroundMode]; +} + - (void)applicationWillResignActive:(UIApplication *)application { + [LinphoneLogger logc:LinphoneLoggerLog format:"applicationWillResignActive"]; if(![LinphoneManager isLcReady]) return; LinphoneCore* lc = [LinphoneManager getLc]; LinphoneCall* call = linphone_core_get_current_call(lc); - if (call == NULL) - return; + + + if (call){ + /* save call context */ + LinphoneManager* instance = [LinphoneManager instance]; + instance->currentCallContextBeforeGoingBackground.call = call; + instance->currentCallContextBeforeGoingBackground.cameraIsEnabled = linphone_call_camera_enabled(call); - /* save call context */ - LinphoneManager* instance = [LinphoneManager instance]; - instance->currentCallContextBeforeGoingBackground.call = call; - instance->currentCallContextBeforeGoingBackground.cameraIsEnabled = linphone_call_camera_enabled(call); - - const LinphoneCallParams* params = linphone_call_get_current_params(call); - if (linphone_call_params_video_enabled(params)) { - linphone_call_enable_camera(call, false); - } + const LinphoneCallParams* params = linphone_call_get_current_params(call); + if (linphone_call_params_video_enabled(params)) { + linphone_call_enable_camera(call, false); + } + } if (![[LinphoneManager instance] resignActive]) { // destroying eventHandler if app cannot go in background. @@ -111,7 +119,8 @@ int __aeabi_idiv(int a, int b) { } -- (void)applicationDidBecomeActive:(UIApplication *)application { +- (void)applicationDidBecomeActive:(UIApplication *)application { + [LinphoneLogger logc:LinphoneLoggerLog format:"applicationDidBecomeActive"]; [self startApplication]; [[LinphoneManager instance] becomeActive]; @@ -121,19 +130,19 @@ int __aeabi_idiv(int a, int b) { LinphoneCore* lc = [LinphoneManager getLc]; LinphoneCall* call = linphone_core_get_current_call(lc); - if (call == NULL) - return; - LinphoneManager* instance = [LinphoneManager instance]; - if (call == instance->currentCallContextBeforeGoingBackground.call) { - const LinphoneCallParams* params = linphone_call_get_current_params(call); - if (linphone_call_params_video_enabled(params)) { - linphone_call_enable_camera( + if (call){ + LinphoneManager* instance = [LinphoneManager instance]; + if (call == instance->currentCallContextBeforeGoingBackground.call) { + const LinphoneCallParams* params = linphone_call_get_current_params(call); + if (linphone_call_params_video_enabled(params)) { + linphone_call_enable_camera( call, instance->currentCallContextBeforeGoingBackground.cameraIsEnabled); - } - instance->currentCallContextBeforeGoingBackground.call = 0; - } + } + instance->currentCallContextBeforeGoingBackground.call = 0; + } + } } - (void)setupGSMInteraction { diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index acc6e1f55..86bd9814a 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -377,9 +377,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } - (BOOL)synchronize { + if (![LinphoneManager isLcReady]) return YES; LinphoneCore *lc=[LinphoneManager getLc]; - if (lc==NULL) return YES; BOOL account_changed; account_changed=[self valueChangedForKey:@"username_preference"] diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index d1e847b60..34bcabc3c 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -107,6 +107,7 @@ typedef struct _LinphoneManagerSounds { - (void)destroyLibLinphone; - (BOOL)resignActive; - (void)becomeActive; +- (BOOL)enterBackgroundMode; + (void)kickOffNetworkConnection; - (void)setupNetworkReachabilityCallback; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index eb7884f15..e1fc78eb5 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -668,7 +668,8 @@ static LinphoneCoreVTable linphonec_vtable = { else ms_set_cpu_count(1); - settingsStore = [[LinphoneCoreSettingsStore alloc] init]; + if (!settingsStore) + settingsStore = [[LinphoneCoreSettingsStore alloc] init]; [LinphoneLogger logc:LinphoneLoggerWarning format:"Linphone [%s] started on [%s]" ,linphone_core_get_version() @@ -686,10 +687,12 @@ static LinphoneCoreVTable linphonec_vtable = { [mIterateTimer invalidate]; AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setDelegate:nil]; +#if 0 if (settingsStore != nil) { [settingsStore release]; settingsStore = nil; } +#endif if (theLinphoneCore != nil) { //just in case application terminate before linphone core initialization [LinphoneLogger logc:LinphoneLoggerLog format:"Destroy linphonecore"]; linphone_core_destroy(theLinphoneCore); @@ -705,19 +708,19 @@ static LinphoneCoreVTable linphonec_vtable = { - (BOOL)resignActive { if ([[LinphoneManager instance] settingsStore] != Nil) [[[LinphoneManager instance] settingsStore] synchronize]; - return [self enterBackgroundMode]; + linphone_core_stop_dtmf_stream(theLinphoneCore); + return YES; } - (BOOL)enterBackgroundMode { LinphoneProxyConfig* proxyCfg; linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg); - linphone_core_stop_dtmf_stream(theLinphoneCore); - if (proxyCfg && [settingsStore boolForKey:@"backgroundmode_preference"]) { + + if (proxyCfg && [[NSUserDefaults standardUserDefaults] boolForKey:@"backgroundmode_preference"]) { //For registration register linphone_core_refresh_registers(theLinphoneCore); - //wait for registration answer int i=0; while (!linphone_proxy_config_is_registered(proxyCfg) && i++<40 ) { diff --git a/Settings/InAppSettings.bundle/Call.plist b/Settings/InAppSettings.bundle/Call.plist index 8e0cb92ca..b5e1a7f6d 100644 --- a/Settings/InAppSettings.bundle/Call.plist +++ b/Settings/InAppSettings.bundle/Call.plist @@ -36,7 +36,7 @@ Type PSToggleSwitchSpecifier Title - Enable RFC DTMF + Send inband DTMFs Key rfc_dtmf_preference DefaultValue @@ -46,7 +46,7 @@ Type PSToggleSwitchSpecifier Title - Enable SIPINFO DTMF + Send SIP INFO DTMFs Key sipinfo_dtmf_preference DefaultValue From ce208db0d263bd63019b00f772b03c34c65fd83c Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 16 Aug 2012 10:18:40 +0200 Subject: [PATCH 142/397] Add image picker during contact edition --- Classes/ContactDetailsImagePickerController.h | 35 ++++++++ Classes/ContactDetailsImagePickerController.m | 81 +++++++++++++++++++ Classes/ContactDetailsLabelViewController.m | 3 +- Classes/ContactDetailsTableViewController.m | 2 +- Classes/LinphoneUI/UIContactDetailsHeader.h | 7 +- Classes/LinphoneUI/UIContactDetailsHeader.m | 35 ++++++++ Classes/LinphoneUI/UIContactDetailsHeader.xib | 67 ++++++++++++++- Classes/PhoneMainView.h | 2 + linphone.xcodeproj/project.pbxproj | 8 ++ 9 files changed, 234 insertions(+), 6 deletions(-) create mode 100644 Classes/ContactDetailsImagePickerController.h create mode 100644 Classes/ContactDetailsImagePickerController.m diff --git a/Classes/ContactDetailsImagePickerController.h b/Classes/ContactDetailsImagePickerController.h new file mode 100644 index 000000000..eea057bf5 --- /dev/null +++ b/Classes/ContactDetailsImagePickerController.h @@ -0,0 +1,35 @@ +/* ContactDetailsImagePickerController.h + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "UICompositeViewController.h" + +@protocol ContactDetailsImagePickerDelegate + +- (void)changeContactImage:(UIImage*)image; + +@end + +@interface ContactDetailsImagePickerController : UIImagePickerController { +@private + id imagePickerDelegate; +} + +@property (nonatomic, retain) id imagePickerDelegate; + +@end diff --git a/Classes/ContactDetailsImagePickerController.m b/Classes/ContactDetailsImagePickerController.m new file mode 100644 index 000000000..3f321ce45 --- /dev/null +++ b/Classes/ContactDetailsImagePickerController.m @@ -0,0 +1,81 @@ +/* ContactDetailsImagePickerController.m + * + * Copyright (C) 2012 Belledonne Comunications, Grenoble, France + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#import "ContactDetailsImagePickerController.h" +#import "PhoneMainView.h" + +@implementation ContactDetailsImagePickerController + +@synthesize imagePickerDelegate; + +#pragma mark - UICompositeViewDelegate Functions + +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"ContactDetailsImage" + content:@"ContactDetailsImagePickerController" + stateBar:nil + stateBarEnabled:false + tabBar:@"UIMainBar" + tabBarEnabled:true + fullscreen:false + landscapeMode:[LinphoneManager runningOnIpad] + portraitMode:true]; + } + return compositeDescription; +} + + +#pragma mark - ViewController Functions + +- (void)viewDidLoad { + [super viewDidLoad]; + [self setDelegate:self]; +} + + +#pragma mark - + +- (void)dismiss { + if([[[PhoneMainView instance] currentView] equal:[ContactDetailsImagePickerController compositeViewDescription]]) { + [[PhoneMainView instance] popCurrentView]; + } +} + + +#pragma mark - UIImagePickerControllerDelegate Functions + +- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { + UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; + if(image == nil) { + image = [info objectForKey:UIImagePickerControllerOriginalImage]; + } + if(image != nil) { + [imagePickerDelegate changeContactImage:image]; + } + [self dismiss]; +} + +- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker { + [self dismiss]; +} + +@end diff --git a/Classes/ContactDetailsLabelViewController.m b/Classes/ContactDetailsLabelViewController.m index be5a95f12..c63b70abf 100644 --- a/Classes/ContactDetailsLabelViewController.m +++ b/Classes/ContactDetailsLabelViewController.m @@ -64,7 +64,7 @@ static UICompositeViewDescription *compositeDescription = nil; tabBar:@"UIMainBar" tabBarEnabled:true fullscreen:false - landscapeMode:true + landscapeMode:[LinphoneManager runningOnIpad] portraitMode:true]; } return compositeDescription; @@ -79,6 +79,7 @@ static UICompositeViewDescription *compositeDescription = nil; } } + #pragma mark - Property Functions - (void)setDataList:(NSDictionary *)adatalist { diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 580772ff8..f0cee1c8d 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -490,7 +490,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C } else { // Go to Chat room view [[PhoneMainView instance] popToView:[ChatViewController compositeViewDescription]]; - ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription] push:TRUE], ChatRoomViewController); + ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription]], ChatRoomViewController); if(controller != nil) { [controller setRemoteAddress:dest]; } diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.h b/Classes/LinphoneUI/UIContactDetailsHeader.h index 7e45e9514..79cb1dd1b 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.h +++ b/Classes/LinphoneUI/UIContactDetailsHeader.h @@ -20,9 +20,10 @@ #import #import +#import "ContactDetailsImagePickerController.h" #import "ContactDetailsDelegate.h" -@interface UIContactDetailsHeader : UIViewController { +@interface UIContactDetailsHeader : UIViewController { UILabel *addressLabel; UIImageView *avatarImage; UIView *normalView; @@ -45,7 +46,9 @@ @property (nonatomic, retain) IBOutlet UITableView *tableView; @property (nonatomic, retain) IBOutlet id contactDetailsDelegate; -@property(nonatomic,getter=isEditing) BOOL editing; +@property(nonatomic,getter=isEditing) BOOL editing; + +- (IBAction)onAvatarClick:(id)event; + (CGFloat)height:(BOOL)editing; diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m index 5e0de1c51..c7e0dce04 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.m +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m @@ -22,6 +22,7 @@ #import "UIEditableTableViewCell.h" #import "FastAddressBook.h" #import "UILinphone.h" +#import "PhoneMainView.h" @implementation UIContactDetailsHeader @@ -231,6 +232,40 @@ } +#pragma mark - Action Functions + +- (IBAction)onAvatarClick:(id)event { + if(self.isEditing) { + ContactDetailsImagePickerController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactDetailsImagePickerController compositeViewDescription] push:TRUE], ContactDetailsImagePickerController); + if(controller != nil) { + [controller setAllowsEditing:TRUE]; + [controller setSourceType:UIImagePickerControllerSourceTypePhotoLibrary]; + [controller setImagePickerDelegate:self]; + } + } +} + + +#pragma mark - ContactDetailsImagePickerDelegate Functions + +- (void)changeContactImage:(UIImage*)image { + NSError* error = NULL; + if(!ABPersonRemoveImageData(contact, (CFErrorRef*)error)) { + [LinphoneLogger log:LinphoneLoggerLog format:@"Can't add entry: %@", [error localizedDescription]]; + } + NSData *dataRef = UIImagePNGRepresentation(image); + CFDataRef cfdata = CFDataCreate(NULL,[dataRef bytes], [dataRef length]); + + if(!ABPersonSetImageData(contact, cfdata, (CFErrorRef*)error)) { + [LinphoneLogger log:LinphoneLoggerLog format:@"Can't add entry: %@", [error localizedDescription]]; + } + + CFRelease(cfdata); + + [self update]; +} + + #pragma mark - UITableViewDelegate Functions - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.xib b/Classes/LinphoneUI/UIContactDetailsHeader.xib index 2ad58ddc6..ee6cd04d7 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.xib +++ b/Classes/LinphoneUI/UIContactDetailsHeader.xib @@ -12,6 +12,7 @@

    IBProxyObject + IBUIButton IBUIImageView IBUILabel IBUITableView @@ -58,7 +59,7 @@ {{20, 6}, {65, 65}} - + _NS:9 NO IBCocoaTouchFramework @@ -67,6 +68,40 @@ avatar_unknown_small.png
    + + + 292 + {{20, 6}, {65, 65}} + + + + _NS:9 + NO + IBCocoaTouchFramework + 0 + 0 + + 3 + MQA + + + 1 + MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA + + + 3 + MC41AA + + + 2 + 15 + + + Helvetica-Bold + 15 + 16 + + 290 @@ -277,6 +312,15 @@ AAgACAAIAAEAAQABAAE 19
    + + + onAvatarClick: + + + 7 + + 23 + @@ -305,6 +349,7 @@ AAgACAAIAAEAAQABAAE + @@ -349,6 +394,12 @@ AAgACAAIAAEAAQABAAE
    + + 22 + + + avatarButton +
    @@ -359,6 +410,7 @@ AAgACAAIAAEAAQABAAE com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin @@ -368,13 +420,24 @@ AAgACAAIAAEAAQABAAE - 21 + 23
    UIContactDetailsHeader UIViewController + + onImageClick: + id + + + onImageClick: + + onImageClick: + id + + UILabel UIImageView diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 6217ae92d..68e4bf9f2 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -29,6 +29,8 @@ #import "DialerViewController.h" #import "ContactsViewController.h" #import "ContactDetailsViewController.h" +#import "ContactDetailsLabelViewController.h" +#import "ContactDetailsImagePickerController.h" #import "HistoryViewController.h" #import "HistoryDetailsViewController.h" #import "InCallViewController.h" diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index d809609ee..7c435be7b 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -674,6 +674,8 @@ D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; }; D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */; }; + D378AB2A15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */; }; + D378AB2B15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */; }; D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; }; D37B96B915A1A6F20005CCD2 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; }; D37C638E15AAD251009D0BAC /* contact_number_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638C15AAD251009D0BAC /* contact_number_over.png */; }; @@ -1674,6 +1676,8 @@ D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsLabelViewController.h; sourceTree = ""; }; D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsLabelViewController.m; sourceTree = ""; }; D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactDetailsLabelViewController.xib; sourceTree = ""; }; + D378AB2815DCDB480098505D /* ContactDetailsImagePickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsImagePickerController.h; sourceTree = ""; }; + D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsImagePickerController.m; sourceTree = ""; }; D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_default.png; path = Resources/call_state_delete_default.png; sourceTree = ""; }; D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_over.png; path = Resources/call_state_delete_over.png; sourceTree = ""; }; D37C638C15AAD251009D0BAC /* contact_number_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_number_over.png; path = Resources/contact_number_over.png; sourceTree = ""; }; @@ -2152,6 +2156,8 @@ 22E0A81F111C44E100B04932 /* ConsoleViewController.m */, 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */, D30BBD1215D3EFEB000F93DD /* ContactDetailsDelegate.h */, + D378AB2815DCDB480098505D /* ContactDetailsImagePickerController.h */, + D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */, D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */, D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */, D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */, @@ -4312,6 +4318,7 @@ D380800215C2894A005BE9BC /* IASKTextField.m in Sources */, D380800515C28A7A005BE9BC /* UILinphone.m in Sources */, D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */, + D378AB2A15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4401,6 +4408,7 @@ D380800315C2894A005BE9BC /* IASKTextField.m in Sources */, D380800615C28A7A005BE9BC /* UILinphone.m in Sources */, D380801415C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */, + D378AB2B15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 27ad4bbee80f6657c586c3b9ebb34fc639daa184 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 16 Aug 2012 14:30:04 +0200 Subject: [PATCH 143/397] Fix previous commit: Chat/ChatRoom view stack issue --- Classes/ContactDetailsImagePickerController.m | 1 + Classes/ContactDetailsTableViewController.m | 4 ++-- Classes/PhoneMainView.m | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Classes/ContactDetailsImagePickerController.m b/Classes/ContactDetailsImagePickerController.m index 3f321ce45..0b68fcf1b 100644 --- a/Classes/ContactDetailsImagePickerController.m +++ b/Classes/ContactDetailsImagePickerController.m @@ -24,6 +24,7 @@ @synthesize imagePickerDelegate; + #pragma mark - UICompositeViewDelegate Functions static UICompositeViewDescription *compositeDescription = nil; diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index f0cee1c8d..784efef47 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -489,8 +489,8 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C } } else { // Go to Chat room view - [[PhoneMainView instance] popToView:[ChatViewController compositeViewDescription]]; - ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription]], ChatRoomViewController); + [[PhoneMainView instance] popToView:[ChatViewController compositeViewDescription]]; // Got to Chat and push ChatRoom + ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription] push:TRUE], ChatRoomViewController); if(controller != nil) { [controller setRemoteAddress:dest]; } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index d86226176..390201f3d 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -516,7 +516,7 @@ static PhoneMainView* phoneMainViewInstance=nil; - (UIViewController*)popCurrentView { [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: Pop view"]; - if([viewStack count] > 0) { + if([viewStack count] > 1) { [viewStack removeLastObject]; [self _changeCurrentView:[viewStack lastObject] transition:[PhoneMainView getBackwardTransition] force:TRUE]; return [mainViewController getCurrentViewController]; From 22e828cace07cb51f85e6f0396a01003ca31103d Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 16 Aug 2012 15:47:06 +0200 Subject: [PATCH 144/397] Remove gesture recognizer from PhoneMainView when dealloc InCallViewController --- Classes/ContactDetailsViewController.m | 4 ---- Classes/InCallViewController.h | 1 + Classes/InCallViewController.m | 17 +++++++++++++---- Classes/LinphoneUI/UICompositeViewController.m | 17 ++++++++++++++++- 4 files changed, 30 insertions(+), 9 deletions(-) diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index aaa216eff..14fdb70f4 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -208,10 +208,6 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf forState:(UIControlStateDisabled | UIControlStateSelected)]; } -- (void)viewDidUnload { - [super viewDidUnload]; -} - - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index b11f30ae3..46055e52b 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -40,6 +40,7 @@ UIView* testVideoView; #endif UICamSwitch* videoCameraSwitch; + UITapGestureRecognizer* singleFingerTap; UIActivityIndicatorView* videoWaitingForFirstImage; diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m index 4004855ae..e836a18ef 100644 --- a/Classes/InCallViewController.m +++ b/Classes/InCallViewController.m @@ -53,7 +53,12 @@ const NSInteger SECURE_BUTTON_TAG=5; #pragma mark - Lifecycle Functions - (id)init { - return [super initWithNibName:@"InCallViewController" bundle:[NSBundle mainBundle]]; + self = [super initWithNibName:@"InCallViewController" bundle:[NSBundle mainBundle]]; + if(self != nil) { + self->singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)]; + self->videoZoomHandler = [[VideoZoomHandler alloc] init]; + } + return self; } - (void)dealloc { @@ -72,6 +77,9 @@ const NSInteger SECURE_BUTTON_TAG=5; [videoZoomHandler release]; + [[PhoneMainView instance].view removeGestureRecognizer:singleFingerTap]; + [singleFingerTap release]; + // Remove all observer [[NSNotificationCenter defaultCenter] removeObserver:self]; @@ -171,13 +179,10 @@ static UICompositeViewDescription *compositeDescription = nil; linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)videoView); linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)videoPreview); - UITapGestureRecognizer* singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showControls:)]; [singleFingerTap setNumberOfTapsRequired:1]; [singleFingerTap setCancelsTouchesInView: FALSE]; [[PhoneMainView instance].view addGestureRecognizer:singleFingerTap]; - [singleFingerTap release]; - videoZoomHandler = [[VideoZoomHandler alloc] init]; [videoZoomHandler setup:videoGroup]; videoGroup.alpha = 0; @@ -186,6 +191,10 @@ static UICompositeViewDescription *compositeDescription = nil; removeTableBackground([callTableController view]); } +- (void)viewDidUnload { + [super viewDidUnload]; + [[PhoneMainView instance].view removeGestureRecognizer:singleFingerTap]; +} - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 7de22a1e4..1c5362d37 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -244,6 +244,10 @@ return NO; } +- (void)didReceiveMemoryWarning { + [self clearCache]; +} + #pragma mark - Event Functions @@ -259,7 +263,18 @@ #pragma mark - - (void)clearCache { - [viewControllerCache removeAllObjects]; + for(NSString *key in [viewControllerCache allKeys]) { + UIViewController *vc = [viewControllerCache objectForKey:key]; + if(vc != self.stateBarViewController && + vc != self.tabBarViewController && + vc != self.contentViewController) { + if ([[UIDevice currentDevice].systemVersion doubleValue] >= 5.0) { + [vc viewWillUnload]; + } + [vc viewDidUnload]; + } + [viewControllerCache removeObjectForKey:key]; + } } - (UIInterfaceOrientation)currentOrientation { From eb96fdc9d398defefa07ce48cf1fae213898029f Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 20 Aug 2012 11:13:10 +0200 Subject: [PATCH 145/397] Fix database opening if original file doesn't exist --- Classes/LinphoneManager.m | 4 ++++ Classes/LinphoneUI/UICompositeViewController.m | 1 + Classes/PhoneMainView.h | 1 - 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index e1fc78eb5..0c999466c 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -234,6 +234,10 @@ struct codec_name_pref_table codec_pref_table[]={ if ([fileManager fileExistsAtPath:databaseDocumentPath] == NO) { [LinphoneLogger logc:LinphoneLoggerLog format:"Create sqlite3 database"]; NSString *resourceDocumentPath = [[NSBundle mainBundle] pathForResource:@"database" ofType:@"sqlite"]; + if ([fileManager fileExistsAtPath:resourceDocumentPath] == NO) { + [LinphoneLogger log:LinphoneLoggerError format:@"Can't find original database: %@", [error localizedDescription]]; + return; + } [fileManager copyItemAtPath:resourceDocumentPath toPath:databaseDocumentPath error:&error]; if(error != nil) { [LinphoneLogger log:LinphoneLoggerError format:@"Can't copy database: %@", [error localizedDescription]]; diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 1c5362d37..2b18de7c1 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -245,6 +245,7 @@ } - (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; [self clearCache]; } diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index 68e4bf9f2..b79f53403 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -43,7 +43,6 @@ @private UICompositeViewController *mainViewController; - UIActionSheet *incomingCallActionSheet; UIActionSheet *batteryActionSheet; int loadCount; From 4c0d7a533b3452494990e7adb2d0f5c42463f099 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 20 Aug 2012 11:35:13 +0200 Subject: [PATCH 146/397] Update linphone submodule. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index c97efee37..05601300f 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit c97efee37aea1ccae3c476a108e988e47f38faa4 +Subproject commit 05601300f64c0f095ba0faeb9e2dd1c1e9483238 From b3f5d7f260942e555d2d8dd994ebc6260cca30d8 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 20 Aug 2012 10:14:14 +0200 Subject: [PATCH 147/397] Add ICE configuration parameter. --- Classes/LinphoneCoreSettingsStore.m | 10 +++++++++- Settings/InAppSettings.bundle/Network.plist | 10 ++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 86bd9814a..f776bc624 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -155,6 +155,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); } { [self setString: linphone_core_get_stun_server(lc) forKey:@"stun_preference"]; + [self + setInteger:lp_config_get_int(linphone_core_get_config(lc),"app","ice_preference" + , 0) forKey:@"ice_preference"]; } { @@ -429,7 +432,12 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); NSString* stun_server = [self stringForKey:@"stun_preference"]; if ([stun_server length] > 0){ linphone_core_set_stun_server(lc,[stun_server cStringUsingEncoding:[NSString defaultCStringEncoding]]); - linphone_core_set_firewall_policy(lc, LinphonePolicyUseStun); + BOOL ice_preference = [self boolForKey:@"ice_preference"]; + if(ice_preference) { + linphone_core_set_firewall_policy(lc, LinphonePolicyUseIce); + } else { + linphone_core_set_firewall_policy(lc, LinphonePolicyUseStun); + } } else { linphone_core_set_stun_server(lc, NULL); linphone_core_set_firewall_policy(lc, LinphonePolicyNoFirewall); diff --git a/Settings/InAppSettings.bundle/Network.plist b/Settings/InAppSettings.bundle/Network.plist index 0f067d74f..c8a4ac946 100644 --- a/Settings/InAppSettings.bundle/Network.plist +++ b/Settings/InAppSettings.bundle/Network.plist @@ -28,6 +28,16 @@ DefaultValue + + Title + ICE + Key + ice_preference + Type + PSToggleSwitchSpecifier + DefaultValue + + Type PSToggleSwitchSpecifier From ce6c547e6bb9f481be906e90784ee31d1b270c0f Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 20 Aug 2012 11:36:58 +0200 Subject: [PATCH 148/397] Hide ICE option if STUN server is not filled. --- Classes/SettingsViewController.m | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m index b0c555e68..25936e47f 100644 --- a/Classes/SettingsViewController.m +++ b/Classes/SettingsViewController.m @@ -442,6 +442,15 @@ static UICompositeViewDescription *compositeDescription = nil; [hiddenKeys removeObject:@"start_at_boot_preference"]; } [settingsController setHiddenKeys:hiddenKeys animated:TRUE]; + } else if ([@"stun_preference" compare: notif.object] == NSOrderedSame) { + NSMutableSet *hiddenKeys = [NSMutableSet setWithSet:[settingsController hiddenKeys]]; + NSString *stun_server = [notif.userInfo objectForKey:@"stun_preference"]; + if (stun_server && ([stun_server length] > 0)) { + [hiddenKeys removeObject:@"ice_preference"]; + } else { + [hiddenKeys addObject:@"ice_preference"]; + } + [settingsController setHiddenKeys:hiddenKeys animated:TRUE]; } } @@ -490,6 +499,10 @@ static UICompositeViewDescription *compositeDescription = nil; [hiddenKeys addObject:@"port_preference"]; } + if([[[[[LinphoneManager instance] settingsStore] objectForKey:@"stun_preference"] stringValue] length] == 0) { + [hiddenKeys addObject:@"ice_preference"]; + } + return hiddenKeys; } From 046962fd065bed7bd1ff5f4c4d5d485ccf9d6b59 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 20 Aug 2012 13:22:54 +0200 Subject: [PATCH 149/397] Remove useless variables (with property defined) --- Classes/ChatRoomTableViewController.h | 1 - Classes/ChatRoomViewController.h | 11 +--- Classes/ChatViewController.h | 2 - Classes/ConsoleViewController.h | 2 - Classes/ContactDetailsImagePickerController.h | 2 - Classes/ContactDetailsLabelViewController.h | 4 -- Classes/ContactDetailsLabelViewController.m | 7 +-- Classes/ContactDetailsTableViewController.h | 4 -- Classes/ContactDetailsTableViewController.m | 2 +- Classes/ContactDetailsViewController.h | 6 --- Classes/ContactDetailsViewController.m | 30 +++++------ Classes/ContactsTableViewController.h | 1 + Classes/ContactsViewController.h | 7 --- Classes/DialerViewController.h | 49 +++++------------- Classes/FirstLoginViewController.h | 5 -- Classes/HistoryDetailsViewController.h | 12 +---- Classes/HistoryTableViewController.h | 1 - Classes/HistoryTableViewController.m | 5 +- Classes/HistoryViewController.h | 7 --- Classes/InCallTableViewController.m | 2 +- Classes/InCallViewController.h | 17 +------ Classes/IncomingCallViewController.h | 5 -- Classes/LinphoneManager.h | 9 ---- Classes/LinphoneUI/UICallBar.h | 50 +++++-------------- Classes/LinphoneUI/UICallButton.h | 2 - Classes/LinphoneUI/UICallCell.h | 19 ------- Classes/LinphoneUI/UICallCell.m | 2 +- Classes/LinphoneUI/UICamSwitch.h | 2 - Classes/LinphoneUI/UIChatCell.h | 7 --- Classes/LinphoneUI/UIChatRoomCell.h | 8 --- Classes/LinphoneUI/UIChatRoomCell.m | 2 +- .../LinphoneUI/UICompositeViewController.h | 15 ------ .../LinphoneUI/UICompositeViewController.m | 2 +- Classes/LinphoneUI/UIConferenceHeader.h | 2 - Classes/LinphoneUI/UIContactCell.h | 4 -- Classes/LinphoneUI/UIContactDetailsFooter.h | 3 -- Classes/LinphoneUI/UIContactDetailsHeader.h | 9 +--- Classes/LinphoneUI/UIDigitButton.h | 4 -- Classes/LinphoneUI/UIDigitButton.m | 2 +- Classes/LinphoneUI/UIEditableTableViewCell.h | 1 - Classes/LinphoneUI/UIEraseButton.h | 4 +- Classes/LinphoneUI/UIHistoryCell.h | 6 --- Classes/LinphoneUI/UIMainBar.h | 9 ---- Classes/LinphoneUI/UIPauseButton.m | 6 +-- Classes/LinphoneUI/UIStateBar.h | 4 -- Classes/LinphoneUI/UITransferButton.h | 2 - Classes/LinphoneUI/UIVideoButton.h | 3 -- Classes/LinphoneUI/UIVideoButton.m | 4 +- Classes/Model/ChatModel.m | 4 +- Classes/MoreViewController.h | 10 +--- Classes/PhoneMainView.h | 5 -- Classes/PhoneMainView.m | 4 +- Classes/SettingsViewController.h | 2 - .../UACellBackgroundView.m | 8 +-- Classes/WizardViewController.h | 19 ++----- 55 files changed, 76 insertions(+), 339 deletions(-) diff --git a/Classes/ChatRoomTableViewController.h b/Classes/ChatRoomTableViewController.h index 1a0e3256c..e36041750 100644 --- a/Classes/ChatRoomTableViewController.h +++ b/Classes/ChatRoomTableViewController.h @@ -24,7 +24,6 @@ @interface ChatRoomTableViewController : UITableViewController { @private NSMutableArray *data; - NSString *remoteAddress; } @property (nonatomic, retain) NSString *remoteAddress; diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h index 03ac04c83..350aede1c 100644 --- a/Classes/ChatRoomViewController.h +++ b/Classes/ChatRoomViewController.h @@ -27,17 +27,8 @@ #include "linphonecore.h" @interface ChatRoomViewController : UIViewController { - ChatRoomTableViewController *tableController; - UITextField *messageField; - UIButton *sendButton; - NSString *remoteAddress; - UIToggleButton *editButton; + @private LinphoneChatRoom *chatRoom; - UILabel *addressLabel; - UIImageView *avatarImage; - UIView *headerView; - UIView *footerView; - UIImageView *fieldBackgroundImage; } diff --git a/Classes/ChatViewController.h b/Classes/ChatViewController.h index 999fcfb6f..17f56d4db 100644 --- a/Classes/ChatViewController.h +++ b/Classes/ChatViewController.h @@ -25,8 +25,6 @@ #import "UICompositeViewController.h" @interface ChatViewController : UIViewController { - ChatTableViewController *tableController; - UIToggleButton *editButton; } @property (nonatomic, retain) IBOutlet ChatTableViewController* tableController; diff --git a/Classes/ConsoleViewController.h b/Classes/ConsoleViewController.h index 5ae2f3a28..2512b8251 100644 --- a/Classes/ConsoleViewController.h +++ b/Classes/ConsoleViewController.h @@ -22,8 +22,6 @@ #import "LogView.h" @interface ConsoleViewController : UIViewController { - UITextView* logs; - UIView* logsView; } -(void) doAction; diff --git a/Classes/ContactDetailsImagePickerController.h b/Classes/ContactDetailsImagePickerController.h index eea057bf5..3e0fcff72 100644 --- a/Classes/ContactDetailsImagePickerController.h +++ b/Classes/ContactDetailsImagePickerController.h @@ -26,8 +26,6 @@ @end @interface ContactDetailsImagePickerController : UIImagePickerController { -@private - id imagePickerDelegate; } @property (nonatomic, retain) id imagePickerDelegate; diff --git a/Classes/ContactDetailsLabelViewController.h b/Classes/ContactDetailsLabelViewController.h index f67e4a253..b03ecb175 100644 --- a/Classes/ContactDetailsLabelViewController.h +++ b/Classes/ContactDetailsLabelViewController.h @@ -27,10 +27,6 @@ @end @interface ContactDetailsLabelViewController : UIViewController { - NSDictionary *dataList; - UITableView *tableView; - NSString *selectedData; - id delegate; } @property (nonatomic, copy) NSString *selectedData; diff --git a/Classes/ContactDetailsLabelViewController.m b/Classes/ContactDetailsLabelViewController.m index c63b70abf..88b42e134 100644 --- a/Classes/ContactDetailsLabelViewController.m +++ b/Classes/ContactDetailsLabelViewController.m @@ -83,10 +83,11 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - Property Functions - (void)setDataList:(NSDictionary *)adatalist { - if (self->dataList != nil) { - [self->dataList release]; + if([dataList isEqualToDictionary:adatalist]) { + return; } - self->dataList = [adatalist retain]; + [dataList release]; + dataList = [adatalist retain]; [tableView reloadData]; } diff --git a/Classes/ContactDetailsTableViewController.h b/Classes/ContactDetailsTableViewController.h index 978007841..9d59e805b 100644 --- a/Classes/ContactDetailsTableViewController.h +++ b/Classes/ContactDetailsTableViewController.h @@ -27,13 +27,9 @@ @interface ContactDetailsTableViewController : UITableViewController { @private - ABRecordRef contact; NSMutableArray *dataCache; NSMutableArray *labelArray; NSIndexPath *editingIndexPath; - UIContactDetailsHeader *headerController; - UIContactDetailsFooter *footerController; - id contactDetailsDelegate; } @property (nonatomic, assign) ABRecordRef contact; diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 784efef47..994497c0a 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -369,7 +369,7 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C if(contact != nil && ABRecordGetRecordID(contact) == kABRecordInvalidID) { CFRelease(contact); } - self->contact = acontact; + contact = acontact; [self loadData]; [headerController setContact:contact]; } diff --git a/Classes/ContactDetailsViewController.h b/Classes/ContactDetailsViewController.h index 5e1f159ed..cc445a0c3 100644 --- a/Classes/ContactDetailsViewController.h +++ b/Classes/ContactDetailsViewController.h @@ -25,12 +25,6 @@ #import "ContactDetailsTableViewController.h" @interface ContactDetailsViewController : UIViewController { - ContactDetailsTableViewController *tableController; - ABRecordRef contact; - UIToggleButton *editButton; - UIButton *backButton; - UIButton *cancelButton; - ABAddressBookRef addressBook; BOOL inhibUpdate; } diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m index 14fdb70f4..d8cac2053 100644 --- a/Classes/ContactDetailsViewController.m +++ b/Classes/ContactDetailsViewController.m @@ -142,20 +142,20 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)newContact { [LinphoneLogger logc:LinphoneLoggerLog format:"New contact"]; - self->contact = NULL; + contact = NULL; [self resetData]; - self->contact = ABPersonCreate(); - [tableController setContact:self->contact]; + contact = ABPersonCreate(); + [tableController setContact:contact]; [self enableEdit:FALSE]; [[tableController tableView] reloadData]; } - (void)newContact:(NSString*)address { [LinphoneLogger logc:LinphoneLoggerLog format:"New contact"]; - self->contact = NULL; + contact = NULL; [self resetData]; - self->contact = ABPersonCreate(); - [tableController setContact:self->contact]; + contact = ABPersonCreate(); + [tableController setContact:contact]; [tableController addSipField:address]; [self enableEdit:FALSE]; [[tableController tableView] reloadData]; @@ -163,20 +163,20 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)editContact:(ABRecordRef)acontact { [LinphoneLogger logc:LinphoneLoggerLog format:"Edit contact %p", acontact]; - self->contact = NULL; + contact = NULL; [self resetData]; - self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); - [tableController setContact:self->contact]; + contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); + [tableController setContact:contact]; [self enableEdit:FALSE]; [[tableController tableView] reloadData]; } - (void)editContact:(ABRecordRef)acontact address:(NSString*)address { [LinphoneLogger logc:LinphoneLoggerLog format:"Edit contact %p", acontact]; - self->contact = NULL; + contact = NULL; [self resetData]; - self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); - [tableController setContact:self->contact]; + contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); + [tableController setContact:contact]; [tableController addSipField:address]; [self enableEdit:FALSE]; [[tableController tableView] reloadData]; @@ -187,10 +187,10 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf - (void)setContact:(ABRecordRef)acontact { [LinphoneLogger logc:LinphoneLoggerLog format:"Set contact %p", acontact]; - self->contact = NULL; + contact = NULL; [self resetData]; - self->contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); - [tableController setContact:self->contact]; + contact = ABAddressBookGetPersonWithRecordID(addressBook, ABRecordGetRecordID(acontact)); + [tableController setContact:contact]; } diff --git a/Classes/ContactsTableViewController.h b/Classes/ContactsTableViewController.h index fa63b5fbd..d1cbd99a0 100644 --- a/Classes/ContactsTableViewController.h +++ b/Classes/ContactsTableViewController.h @@ -23,6 +23,7 @@ #import "OrderedDictionary.h" @interface ContactsTableViewController : UITableViewController { + @private OrderedDictionary* addressBookMap; NSMutableDictionary* avatarMap; diff --git a/Classes/ContactsViewController.h b/Classes/ContactsViewController.h index 2b14e492c..0c8fc791c 100644 --- a/Classes/ContactsViewController.h +++ b/Classes/ContactsViewController.h @@ -42,13 +42,6 @@ typedef enum _ContactSelectionMode { @end @interface ContactsViewController : UIViewController { - ContactsTableViewController *tableController; - UITableView *tableView; - - UIButton *allButton; - UIButton *linphoneButton; - UIButton *backButton; - UIButton *addButton; } @property (nonatomic, retain) IBOutlet ContactsTableViewController* tableController; diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h index 876541100..ef088b355 100644 --- a/Classes/DialerViewController.h +++ b/Classes/DialerViewController.h @@ -27,31 +27,6 @@ #import "UIDigitButton.h" @interface DialerViewController : UIViewController { -@private - //Buttons - UITextField* addressField; - UIButton* addContactButton; - UIButton* backButton; - UIEraseButton* eraseButton; - UICallButton* callButton; - UICallButton* addCallButton; - UITransferButton* transferButton; - - //Key pad - UIDigitButton* oneButton; - UIDigitButton* twoButton; - UIDigitButton* threeButton; - UIDigitButton* fourButton; - UIDigitButton* fiveButton; - UIDigitButton* sixButton; - UIDigitButton* sevenButton; - UIDigitButton* eightButton; - UIDigitButton* nineButton; - UIDigitButton* starButton; - UIDigitButton* zeroButton; - UIDigitButton* sharpButton; - - BOOL transferMode; } - (void)setAddress:(NSString*)address; @@ -68,18 +43,18 @@ @property (nonatomic, retain) IBOutlet UIButton* backButton; @property (nonatomic, retain) IBOutlet UIEraseButton* eraseButton; -@property (nonatomic, retain) IBOutlet UIButton* oneButton; -@property (nonatomic, retain) IBOutlet UIButton* twoButton; -@property (nonatomic, retain) IBOutlet UIButton* threeButton; -@property (nonatomic, retain) IBOutlet UIButton* fourButton; -@property (nonatomic, retain) IBOutlet UIButton* fiveButton; -@property (nonatomic, retain) IBOutlet UIButton* sixButton; -@property (nonatomic, retain) IBOutlet UIButton* sevenButton; -@property (nonatomic, retain) IBOutlet UIButton* eightButton; -@property (nonatomic, retain) IBOutlet UIButton* nineButton; -@property (nonatomic, retain) IBOutlet UIButton* starButton; -@property (nonatomic, retain) IBOutlet UIButton* zeroButton; -@property (nonatomic, retain) IBOutlet UIButton* sharpButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* oneButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* twoButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* threeButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* fourButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* fiveButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* sixButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* sevenButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* eightButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* nineButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* starButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* zeroButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* sharpButton; - (IBAction)onAddContactClick: (id) event; - (IBAction)onBackClick: (id) event; diff --git a/Classes/FirstLoginViewController.h b/Classes/FirstLoginViewController.h index 5f9961cbf..44e022547 100644 --- a/Classes/FirstLoginViewController.h +++ b/Classes/FirstLoginViewController.h @@ -22,11 +22,6 @@ #import "UICompositeViewController.h" @interface FirstLoginViewController : UIViewController { - UIButton* loginButton; - UIButton* siteButton; - UITextField* usernameField; - UITextField* passwordField; - UIView* waitView; } - (IBAction)onLoginClick:(id)sender; diff --git a/Classes/HistoryDetailsViewController.h b/Classes/HistoryDetailsViewController.h index 14da3917b..df6ffac34 100644 --- a/Classes/HistoryDetailsViewController.h +++ b/Classes/HistoryDetailsViewController.h @@ -24,17 +24,7 @@ #import "UICompositeViewController.h" @interface HistoryDetailsViewController : UIViewController { - LinphoneCallLog *callLog; - UIImageView *avatarImage; - UILabel *addressLabel; - UILabel *dateLabel; - UILabel *dateHeaderLabel; - UILabel *durationLabel; - UILabel *durationHeaderLabel; - UILabel *typeLabel; - UILabel *typeHeaderLabel; - UIButton *addressButton; - UIButton *addContactButton; + @private ABRecordRef contact; } @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; diff --git a/Classes/HistoryTableViewController.h b/Classes/HistoryTableViewController.h index 9b2dc7aef..6214a3b4f 100644 --- a/Classes/HistoryTableViewController.h +++ b/Classes/HistoryTableViewController.h @@ -21,7 +21,6 @@ @interface HistoryTableViewController : UITableViewController { @private - BOOL missedFilter; NSMutableArray *callLogs; } diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index ad0c33234..b14825271 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -69,7 +69,10 @@ #pragma mark - Property Functions - (void)setMissedFilter:(BOOL)amissedFilter { - self->missedFilter = amissedFilter; + if(missedFilter == amissedFilter) { + return; + } + missedFilter = amissedFilter; [self loadData]; [[self tableView] reloadData]; } diff --git a/Classes/HistoryViewController.h b/Classes/HistoryViewController.h index 93025f1b7..5f21f6a0e 100644 --- a/Classes/HistoryViewController.h +++ b/Classes/HistoryViewController.h @@ -24,13 +24,6 @@ #import "UIToggleButton.h" @interface HistoryViewController : UIViewController { - @private - HistoryTableViewController *tableController; - UITableView *tableView; - - UIButton *allButton; - UIButton *missedButton; - UIToggleButton *editButton; } @property (nonatomic, retain) IBOutlet HistoryTableViewController* tableController; diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index 66956f91a..4b21b862f 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -34,7 +34,7 @@ enum TableSection { #pragma mark - Lifecycle Functions - (void)initInCallTableViewController { - self->callCellData = [[NSMutableDictionary alloc] init]; + callCellData = [[NSMutableDictionary alloc] init]; } - (id)init{ diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h index 46055e52b..d9df2a3b7 100644 --- a/Classes/InCallViewController.h +++ b/Classes/InCallViewController.h @@ -29,26 +29,11 @@ @class VideoViewController; @interface InCallViewController : UIViewController { - - InCallTableViewController* callTableController; - UITableView* callTableView; - - UIView* videoGroup; - UIView* videoView; - UIView* videoPreview; -#ifdef TEST_VIDEO_VIEW_CHANGE - UIView* testVideoView; -#endif - UICamSwitch* videoCameraSwitch; + @private UITapGestureRecognizer* singleFingerTap; - - UIActivityIndicatorView* videoWaitingForFirstImage; - NSTimer* hideControlsTimer; - BOOL videoShown; VideoZoomHandler* videoZoomHandler; - UIActionSheet* visibleActionSheet; } diff --git a/Classes/IncomingCallViewController.h b/Classes/IncomingCallViewController.h index cea938b97..a9829e07a 100644 --- a/Classes/IncomingCallViewController.h +++ b/Classes/IncomingCallViewController.h @@ -31,11 +31,6 @@ @end @interface IncomingCallViewController : UIViewController { -@private - UILabel* addressLabel; - UIImageView* avatarImage; - LinphoneCall *call; - id delegate; } @property (nonatomic, retain) IBOutlet UILabel* addressLabel; diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 34bcabc3c..997ee7c45 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -74,19 +74,10 @@ typedef struct _LinphoneManagerSounds { @private NSTimer* mIterateTimer; - bool isbackgroundModeEnabled; Connectivity connectivity; - const char* frontCamId; - const char* backCamId; - FastAddressBook* fastAddressBook; - - LinphoneManagerSounds sounds; NSMutableArray *inhibitedEvent; - id settingsStore; - sqlite3 *database; - @public CallContext currentCallContextBeforeGoingBackground; diff --git a/Classes/LinphoneUI/UICallBar.h b/Classes/LinphoneUI/UICallBar.h index 580fa2751..d328c2173 100644 --- a/Classes/LinphoneUI/UICallBar.h +++ b/Classes/LinphoneUI/UICallBar.h @@ -28,32 +28,6 @@ #import "TPMultiLayoutViewController.h" @interface UICallBar: TPMultiLayoutViewController { - UIPauseButton* pauseButton; - UIButton* conferenceButton; - UIVideoButton* videoButton; - UIMicroButton* microButton; - UISpeakerButton* speakerButton; - UIToggleButton* optionsButton; - UIHangUpButton* hangupButton; - UIView* padView; - UIView* optionsView; - UIButton* optionsAddButton; - UIButton* optionsTransferButton; - UIToggleButton* dialerButton; - - //Key pad - UIDigitButton* oneButton; - UIDigitButton* twoButton; - UIDigitButton* threeButton; - UIDigitButton* fourButton; - UIDigitButton* fiveButton; - UIDigitButton* sixButton; - UIDigitButton* sevenButton; - UIDigitButton* eightButton; - UIDigitButton* nineButton; - UIDigitButton* starButton; - UIDigitButton* zeroButton; - UIDigitButton* sharpButton; } @property (nonatomic, retain) IBOutlet UIPauseButton* pauseButton; @@ -70,18 +44,18 @@ @property (nonatomic, retain) IBOutlet UIButton* optionsTransferButton; @property (nonatomic, retain) IBOutlet UIToggleButton* dialerButton; -@property (nonatomic, retain) IBOutlet UIButton* oneButton; -@property (nonatomic, retain) IBOutlet UIButton* twoButton; -@property (nonatomic, retain) IBOutlet UIButton* threeButton; -@property (nonatomic, retain) IBOutlet UIButton* fourButton; -@property (nonatomic, retain) IBOutlet UIButton* fiveButton; -@property (nonatomic, retain) IBOutlet UIButton* sixButton; -@property (nonatomic, retain) IBOutlet UIButton* sevenButton; -@property (nonatomic, retain) IBOutlet UIButton* eightButton; -@property (nonatomic, retain) IBOutlet UIButton* nineButton; -@property (nonatomic, retain) IBOutlet UIButton* starButton; -@property (nonatomic, retain) IBOutlet UIButton* zeroButton; -@property (nonatomic, retain) IBOutlet UIButton* sharpButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* oneButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* twoButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* threeButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* fourButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* fiveButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* sixButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* sevenButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* eightButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* nineButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* starButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* zeroButton; +@property (nonatomic, retain) IBOutlet UIDigitButton* sharpButton; - (IBAction)onOptionsClick:(id)sender; - (IBAction)onOptionsTransferClick:(id)sender; diff --git a/Classes/LinphoneUI/UICallButton.h b/Classes/LinphoneUI/UICallButton.h index 955d9a4ee..d8b317a1d 100644 --- a/Classes/LinphoneUI/UICallButton.h +++ b/Classes/LinphoneUI/UICallButton.h @@ -21,8 +21,6 @@ @interface UICallButton : UIButton { -@private - UITextField* addressField; } @property (nonatomic, retain) IBOutlet UITextField* addressField; diff --git a/Classes/LinphoneUI/UICallCell.h b/Classes/LinphoneUI/UICallCell.h index f183a81b6..3cf7e27b6 100644 --- a/Classes/LinphoneUI/UICallCell.h +++ b/Classes/LinphoneUI/UICallCell.h @@ -33,25 +33,6 @@ @end @interface UICallCell : UITableViewCell { - @private - BOOL firstCell; - BOOL conferenceCell; - BOOL currentCall; - - UIImageView* headerBackgroundImage; - UIImageView* headerBackgroundHighlightImage; - - UILabel *addressLabel; - UILabel *stateLabel; - UIImageView *stateImage; - UIPauseButton *pauseButton; - UIButton *removeButton; - UIImageView *avatarImage; - - UIView *headerView; - UIView *avatarView; - - UICallCellData *data; } @property (nonatomic, retain) UICallCellData *data; diff --git a/Classes/LinphoneUI/UICallCell.m b/Classes/LinphoneUI/UICallCell.m index 0c863581b..92b32c186 100644 --- a/Classes/LinphoneUI/UICallCell.m +++ b/Classes/LinphoneUI/UICallCell.m @@ -92,7 +92,7 @@ - (void)prepareForReuse { [super prepareForReuse]; - self->currentCall = FALSE; + currentCall = FALSE; [headerBackgroundHighlightImage setAlpha:0.0f]; [data release]; data = nil; diff --git a/Classes/LinphoneUI/UICamSwitch.h b/Classes/LinphoneUI/UICamSwitch.h index a3927bf17..3110b0e71 100644 --- a/Classes/LinphoneUI/UICamSwitch.h +++ b/Classes/LinphoneUI/UICamSwitch.h @@ -21,11 +21,9 @@ @interface UICamSwitch : UIButton { - @private const char* currentCamId; const char* nextCamId; - UIView* preview; } @property (nonatomic, retain) IBOutlet UIView* preview; @end diff --git a/Classes/LinphoneUI/UIChatCell.h b/Classes/LinphoneUI/UIChatCell.h index 126310b04..7d7a1d7cf 100644 --- a/Classes/LinphoneUI/UIChatCell.h +++ b/Classes/LinphoneUI/UIChatCell.h @@ -22,13 +22,6 @@ #import "ChatModel.h" @interface UIChatCell : UITableViewCell { - UIImageView *avatarImage; - UILabel *addressLabel; - UILabel *chatContentLabel; - UIButton *detailsButton; - UIButton *deleteButton; - - ChatModel *chat; } @property (nonatomic, retain) ChatModel *chat; diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h index 7bbb46af9..503fffe66 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.h +++ b/Classes/LinphoneUI/UIChatRoomCell.h @@ -22,14 +22,6 @@ #import "ChatModel.h" @interface UIChatRoomCell : UITableViewCell { - UIImageView *backgroundImage; - UIView *innerView; - UIView *messageView; - UILabel *messageLabel; - UIButton *deleteButton; - UILabel *dateLabel; - - ChatModel *chat; } @property (nonatomic, retain) ChatModel *chat; diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m index e9351809d..08d5ce136 100644 --- a/Classes/LinphoneUI/UIChatRoomCell.m +++ b/Classes/LinphoneUI/UIChatRoomCell.m @@ -78,7 +78,7 @@ static UIFont *CELL_FONT = nil; - (void)prepareForReuse { [super prepareForReuse]; - self->chat = nil; + chat = nil; } - (void)update { diff --git a/Classes/LinphoneUI/UICompositeViewController.h b/Classes/LinphoneUI/UICompositeViewController.h index 8a64479d3..a401e68ad 100644 --- a/Classes/LinphoneUI/UICompositeViewController.h +++ b/Classes/LinphoneUI/UICompositeViewController.h @@ -24,15 +24,6 @@ #import "TPMultiLayoutViewController.h" @interface UICompositeViewDescription: NSObject{ - NSString *name; - NSString *content; - NSString *stateBar; - BOOL stateBarEnabled; - NSString *tabBar; - BOOL tabBarEnabled; - BOOL fullscreen; - BOOL landscapeMode; - BOOL portraitMode; } @property (retain) NSString *name; @@ -65,14 +56,8 @@ @interface UICompositeViewController : TPMultiLayoutViewController { @private - UIView *stateBarView; - UIView *contentView; - UIView *tabBarView; - NSMutableDictionary *viewControllerCache; - UICompositeViewDescription *currentViewDescription; - CATransition *viewTransition; UIInterfaceOrientation currentOrientation; } diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 2b18de7c1..7de90348a 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -102,7 +102,7 @@ #pragma mark - Lifecycle Functions - (void)initUICompositeViewController { - self->viewControllerCache = [[NSMutableDictionary alloc] init]; + viewControllerCache = [[NSMutableDictionary alloc] init]; currentOrientation = UIDeviceOrientationUnknown; } diff --git a/Classes/LinphoneUI/UIConferenceHeader.h b/Classes/LinphoneUI/UIConferenceHeader.h index 22b87cfaa..5834c78ae 100644 --- a/Classes/LinphoneUI/UIConferenceHeader.h +++ b/Classes/LinphoneUI/UIConferenceHeader.h @@ -22,8 +22,6 @@ #import "UIPauseButton.h" @interface UIConferenceHeader : UIViewController { - UIImageView *stateImage; - UIPauseButton *pauseButton; } @property (nonatomic, retain) IBOutlet UIImageView* stateImage; diff --git a/Classes/LinphoneUI/UIContactCell.h b/Classes/LinphoneUI/UIContactCell.h index e9f5a7b01..c94782949 100644 --- a/Classes/LinphoneUI/UIContactCell.h +++ b/Classes/LinphoneUI/UIContactCell.h @@ -21,10 +21,6 @@ #import @interface UIContactCell : UITableViewCell { - UILabel *firstNameLabel; - UILabel *lastNameLabel; - UIImageView *avatarImage; - ABRecordRef contact; } @property (nonatomic, retain) IBOutlet UILabel* firstNameLabel; diff --git a/Classes/LinphoneUI/UIContactDetailsFooter.h b/Classes/LinphoneUI/UIContactDetailsFooter.h index 08b14b850..79496261f 100644 --- a/Classes/LinphoneUI/UIContactDetailsFooter.h +++ b/Classes/LinphoneUI/UIContactDetailsFooter.h @@ -22,9 +22,6 @@ #import "ContactDetailsDelegate.h" @interface UIContactDetailsFooter : UIViewController { -@private - UIButton *removeButton; - id contactDetailsDelegate; } @property (nonatomic, retain) IBOutlet UIButton *removeButton; diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.h b/Classes/LinphoneUI/UIContactDetailsHeader.h index 79cb1dd1b..a9279f002 100644 --- a/Classes/LinphoneUI/UIContactDetailsHeader.h +++ b/Classes/LinphoneUI/UIContactDetailsHeader.h @@ -24,16 +24,9 @@ #import "ContactDetailsDelegate.h" @interface UIContactDetailsHeader : UIViewController { - UILabel *addressLabel; - UIImageView *avatarImage; - UIView *normalView; - UIView *editView; - UITableView *tableView; - + @private NSArray *propertyList; - ABRecordRef contact; BOOL editing; - id contactDetailsDelegate; } @property (nonatomic, assign) ABRecordRef contact; diff --git a/Classes/LinphoneUI/UIDigitButton.h b/Classes/LinphoneUI/UIDigitButton.h index 65f2d20a5..4b7d9f0e4 100644 --- a/Classes/LinphoneUI/UIDigitButton.h +++ b/Classes/LinphoneUI/UIDigitButton.h @@ -23,10 +23,6 @@ @interface UIDigitButton : UILongTouchButton { -@private - char digit; - bool dtmf; - UITextField* addressField; } @property (nonatomic, retain) IBOutlet UITextField* addressField; diff --git a/Classes/LinphoneUI/UIDigitButton.m b/Classes/LinphoneUI/UIDigitButton.m index dcafad7b6..3f84c0ee6 100644 --- a/Classes/LinphoneUI/UIDigitButton.m +++ b/Classes/LinphoneUI/UIDigitButton.m @@ -31,7 +31,7 @@ #pragma mark - Lifecycle Functions - (void)initUIDigitButton { - self->dtmf = FALSE; + dtmf = FALSE; [self addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown]; [self addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside|UIControlEventTouchUpOutside]; } diff --git a/Classes/LinphoneUI/UIEditableTableViewCell.h b/Classes/LinphoneUI/UIEditableTableViewCell.h index 5549da4b0..d4ac998c5 100644 --- a/Classes/LinphoneUI/UIEditableTableViewCell.h +++ b/Classes/LinphoneUI/UIEditableTableViewCell.h @@ -20,7 +20,6 @@ #import @interface UIEditableTableViewCell : UITableViewCell { - UITextField *detailTextField; } @property (nonatomic, retain) IBOutlet UITextField *detailTextField; diff --git a/Classes/LinphoneUI/UIEraseButton.h b/Classes/LinphoneUI/UIEraseButton.h index 0e9e2af51..7baced2e6 100644 --- a/Classes/LinphoneUI/UIEraseButton.h +++ b/Classes/LinphoneUI/UIEraseButton.h @@ -21,9 +21,7 @@ #import "UILongTouchButton.h" -@interface UIEraseButton : UILongTouchButton { -@private - UITextField* addressField; +@interface UIEraseButton : UILongTouchButton { } @property (nonatomic, retain) IBOutlet UITextField* addressField; diff --git a/Classes/LinphoneUI/UIHistoryCell.h b/Classes/LinphoneUI/UIHistoryCell.h index 2ce131462..574f84484 100644 --- a/Classes/LinphoneUI/UIHistoryCell.h +++ b/Classes/LinphoneUI/UIHistoryCell.h @@ -22,12 +22,6 @@ #include "linphonecore.h" @interface UIHistoryCell : UITableViewCell { - UIImageView* imageView; - UILabel* addressLabel; - UIButton* detailsButton; - UIButton* deleteButton; - @private - LinphoneCallLog *callLog; } @property (nonatomic, assign) LinphoneCallLog *callLog; diff --git a/Classes/LinphoneUI/UIMainBar.h b/Classes/LinphoneUI/UIMainBar.h index 210247659..7038ba394 100644 --- a/Classes/LinphoneUI/UIMainBar.h +++ b/Classes/LinphoneUI/UIMainBar.h @@ -21,15 +21,6 @@ #import "TPMultiLayoutViewController.h" @interface UIMainBar : TPMultiLayoutViewController { - UIButton *historyButton; - UIButton *contactsButton; - UIButton *dialerButton; - UIButton *settingsButton; - UIButton *chatButton; - UIView *historyNotificationView; - UILabel *historyNotificationLabel; - UIView *chatNotificationView; - UILabel *chatNotificationLabel; } @property (nonatomic, retain) IBOutlet UIButton* historyButton; diff --git a/Classes/LinphoneUI/UIPauseButton.m b/Classes/LinphoneUI/UIPauseButton.m index d7d747961..ed6b962b6 100644 --- a/Classes/LinphoneUI/UIPauseButton.m +++ b/Classes/LinphoneUI/UIPauseButton.m @@ -29,7 +29,7 @@ #pragma mark - Lifecycle Functions - (void)initUIPauseButton { - self->type = UIPauseButtonType_CurrentCall; + type = UIPauseButtonType_CurrentCall; } - (id)init{ @@ -91,8 +91,8 @@ #pragma mark - - (void)setType:(UIPauseButtonType) atype call:(LinphoneCall*)acall { - self->type = atype; - self->call = acall; + type = atype; + call = acall; } diff --git a/Classes/LinphoneUI/UIStateBar.h b/Classes/LinphoneUI/UIStateBar.h index 5d0806b0d..a2f075a19 100644 --- a/Classes/LinphoneUI/UIStateBar.h +++ b/Classes/LinphoneUI/UIStateBar.h @@ -21,10 +21,6 @@ #import "TPMultiLayoutViewController.h" @interface UIStateBar : TPMultiLayoutViewController { - UIImageView* registrationStateImage; - UILabel* registrationStateLabel; - UIImageView* callQualityImage; - UIImageView* callSecurityImage; } @property (nonatomic, retain) IBOutlet UIImageView* registrationStateImage; diff --git a/Classes/LinphoneUI/UITransferButton.h b/Classes/LinphoneUI/UITransferButton.h index f6178358e..451ff75d4 100644 --- a/Classes/LinphoneUI/UITransferButton.h +++ b/Classes/LinphoneUI/UITransferButton.h @@ -20,8 +20,6 @@ #import @interface UITransferButton : UIButton { -@private - UITextField* addressField; } @property (nonatomic, retain) IBOutlet UITextField* addressField; diff --git a/Classes/LinphoneUI/UIVideoButton.h b/Classes/LinphoneUI/UIVideoButton.h index fbd07c43f..759911f00 100644 --- a/Classes/LinphoneUI/UIVideoButton.h +++ b/Classes/LinphoneUI/UIVideoButton.h @@ -22,9 +22,6 @@ #import "UIToggleButton.h" @interface UIVideoButton : UIToggleButton { - BOOL locked; - BOOL unlockVideoState; - UIActivityIndicatorView *waitView; } @property (assign) BOOL locked; diff --git a/Classes/LinphoneUI/UIVideoButton.m b/Classes/LinphoneUI/UIVideoButton.m index 6de7c2842..2368b9bfa 100644 --- a/Classes/LinphoneUI/UIVideoButton.m +++ b/Classes/LinphoneUI/UIVideoButton.m @@ -27,8 +27,8 @@ @synthesize waitView; - (void)initUIVideoButton { - self->locked = FALSE; - self->unlockVideoState = FALSE; + locked = FALSE; + unlockVideoState = FALSE; } - (id)init{ diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m index 88eec26d8..a216cdd8d 100644 --- a/Classes/Model/ChatModel.m +++ b/Classes/Model/ChatModel.m @@ -90,9 +90,9 @@ } if([self chatId] != nil) { - [self->chatId release]; + [chatId release]; } - self->chatId = [[NSNumber alloc] initWithInt:sqlite3_last_insert_rowid(database)]; + chatId = [[NSNumber alloc] initWithInt:sqlite3_last_insert_rowid(database)]; sqlite3_finalize(sqlStatement); } diff --git a/Classes/MoreViewController.h b/Classes/MoreViewController.h index 896a3a003..589c2dbaf 100644 --- a/Classes/MoreViewController.h +++ b/Classes/MoreViewController.h @@ -21,16 +21,8 @@ @class ConsoleViewController; @interface MoreViewController : UITableViewController { - + @private bool isLogViewEnabled; - - UITableViewCell *credit; - UITextView *creditText; - - UITableViewCell *web; - UILabel *weburi; - UITableViewCell *console; - ConsoleViewController *consoleViewController; bool isDebug; } diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h index b79f53403..a80b60d92 100644 --- a/Classes/PhoneMainView.h +++ b/Classes/PhoneMainView.h @@ -41,13 +41,8 @@ @interface PhoneMainView : UIViewController { @private - UICompositeViewController *mainViewController; - UIActionSheet *batteryActionSheet; - int loadCount; - - UICompositeViewDescription *currentView; NSMutableArray *viewStack; } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 390201f3d..60514b27a 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -84,7 +84,7 @@ static PhoneMainView* phoneMainViewInstance=nil; - (void)viewDidLoad { // Avoid IOS 4 bug - if(self->loadCount++ > 0) + if(loadCount++ > 0) return; [super viewDidLoad]; @@ -160,7 +160,7 @@ static PhoneMainView* phoneMainViewInstance=nil; [super viewDidUnload]; // Avoid IOS 4 bug - self->loadCount--; + loadCount--; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { diff --git a/Classes/SettingsViewController.h b/Classes/SettingsViewController.h index b85da7838..9cc04a88e 100644 --- a/Classes/SettingsViewController.h +++ b/Classes/SettingsViewController.h @@ -23,8 +23,6 @@ #import "IASKAppSettingsViewController.h" @interface SettingsViewController: UIViewController { - IASKAppSettingsViewController *settingsController; - UINavigationController *navigationController; } @property (nonatomic, retain) IBOutlet UINavigationController *navigationController; diff --git a/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m index 1f8aa8e14..16e7a144f 100644 --- a/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m +++ b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m @@ -21,7 +21,7 @@ static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWi - (void)initUACellBackgroundView { [super setBackgroundColor:[UIColor clearColor]]; - self->automaticPositioning = TRUE; + automaticPositioning = TRUE; } - (id)init { @@ -53,10 +53,10 @@ static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWi } - (void)setBackgroundColor:(UIColor *)abackgroundColor { - if(self->backgroundColor != nil) { - [self->backgroundColor release]; + if(backgroundColor != nil) { + [backgroundColor release]; } - self->backgroundColor = [[UIColor alloc]initWithCGColor:abackgroundColor.CGColor]; + backgroundColor = [[UIColor alloc]initWithCGColor:abackgroundColor.CGColor]; [self setNeedsDisplay]; } diff --git a/Classes/WizardViewController.h b/Classes/WizardViewController.h index bbb3fc9a7..f0e8f2b99 100644 --- a/Classes/WizardViewController.h +++ b/Classes/WizardViewController.h @@ -22,26 +22,13 @@ #import "UICompositeViewController.h" @interface WizardViewController : UIViewController { - UIScrollView *contentView; - - UIView *welcomeView; - UIView *choiceView; - UIView *createAccountView; - UIView *connectAccountView; - UIView *externalAccountView; - UIView *validateAccountView; - - UIView *waitView; - UIView *currentView; + @private UITextField *activeTextField; - - UIButton *backButton; - UIButton *startButton; - + UIView *currentView; NSMutableArray *historyViews; } -@property (nonatomic, retain) IBOutlet UIView *contentView; +@property (nonatomic, retain) IBOutlet UIScrollView *contentView; @property (nonatomic, retain) IBOutlet UIView *welcomeView; @property (nonatomic, retain) IBOutlet UIView *choiceView; From ae496f788f5e4afad284bcee97727f2bc6fb807e Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 20 Aug 2012 13:55:30 +0200 Subject: [PATCH 150/397] Update linphone module --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 05601300f..ff7c61809 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 05601300f64c0f095ba0faeb9e2dd1c1e9483238 +Subproject commit ff7c61809a89cc4deb3a01e93825906f3d313afb From 26e57b978363b156d91c4c63aac9d138cabb2276 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 20 Aug 2012 14:01:55 +0200 Subject: [PATCH 151/397] Update linphone submodule. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 05601300f..ff7c61809 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 05601300f64c0f095ba0faeb9e2dd1c1e9483238 +Subproject commit ff7c61809a89cc4deb3a01e93825906f3d313afb From 51fc6f00611df5a3a88a4de7f350b6ab150657f1 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 20 Aug 2012 14:36:49 +0200 Subject: [PATCH 152/397] Update linphone submodule. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index ff7c61809..0a12fa9ce 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit ff7c61809a89cc4deb3a01e93825906f3d313afb +Subproject commit 0a12fa9ce7af5c795722ce1f7ebad9bc85314d3b From 357849ecc111b2c8a4b6822aa10963679e7e8be6 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Mon, 20 Aug 2012 17:56:10 +0200 Subject: [PATCH 153/397] Improve UACellBackgroundView --- Classes/ContactsTableViewController.m | 3 ++- .../UACellBackgroundView.h | 5 ++--- .../UACellBackgroundView.m | 19 ++++++++++++++++--- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m index 32afdc3c7..2dd00fc26 100644 --- a/Classes/ContactsTableViewController.m +++ b/Classes/ContactsTableViewController.m @@ -170,7 +170,8 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf UIContactCell *cell = [tableView dequeueReusableCellWithIdentifier:kCellId]; if (cell == nil) { cell = [[[UIContactCell alloc] initWithIdentifier:kCellId] autorelease]; - // Background View + + // Background View UACellBackgroundView *selectedBackgroundView = [[[UACellBackgroundView alloc] initWithFrame:CGRectZero] autorelease]; cell.selectedBackgroundView = selectedBackgroundView; [selectedBackgroundView setBackgroundColor:LINPHONE_TABLE_CELL_BACKGROUND_COLOR]; diff --git a/Classes/Utils/UACellBackgroundView/UACellBackgroundView.h b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.h index a2a397792..ad0298870 100644 --- a/Classes/Utils/UACellBackgroundView/UACellBackgroundView.h +++ b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.h @@ -19,12 +19,11 @@ typedef enum { } UACellBackgroundViewPosition; @interface UACellBackgroundView : UIView { - UACellBackgroundViewPosition position; - BOOL automaticPositioning; } @property(nonatomic) UACellBackgroundViewPosition position; -@property(nonatomic, copy) UIColor *backgroundColor; +@property(nonatomic, copy) UIColor *backgroundColor; +@property(nonatomic, copy) UIColor *borderColor; @property(assign) BOOL automaticPositioning; @end diff --git a/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m index 16e7a144f..f5b043489 100644 --- a/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m +++ b/Classes/Utils/UACellBackgroundView/UACellBackgroundView.m @@ -17,10 +17,14 @@ static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWi @synthesize position; @synthesize backgroundColor; +@synthesize borderColor; @synthesize automaticPositioning; - (void)initUACellBackgroundView { - [super setBackgroundColor:[UIColor clearColor]]; + backgroundColor = nil; + [self setBackgroundColor:[UIColor colorWithRed:0.02 green:0.549 blue:0.961 alpha:1.0]]; + borderColor = nil; + [self setBorderColor:[UIColor grayColor]]; automaticPositioning = TRUE; } @@ -56,7 +60,16 @@ static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWi if(backgroundColor != nil) { [backgroundColor release]; } - backgroundColor = [[UIColor alloc]initWithCGColor:abackgroundColor.CGColor]; + backgroundColor = [[UIColor alloc] initWithCGColor:abackgroundColor.CGColor]; + [self setNeedsDisplay]; +} + +- (void)setBorderColor:(UIColor *)aborderColor { + if(borderColor != nil) { + [borderColor release]; + } + + borderColor = [[UIColor alloc] initWithCGColor:aborderColor.CGColor]; [self setNeedsDisplay]; } @@ -123,7 +136,7 @@ static void addRoundedRectToPath(CGContextRef context, CGRect rect, float ovalWi CGGradientRef myGradient = nil; const CGFloat *default_components = CGColorGetComponents([[self backgroundColor] CGColor]); CGFloat components[8] = {default_components[0], default_components[1], default_components[2], default_components[3], default_components[0] * 0.766f, default_components[1] * 0.766f, default_components[2] * 0.766f, default_components[3]}; - CGContextSetStrokeColorWithColor(c, [[UIColor grayColor] CGColor]); + CGContextSetStrokeColorWithColor(c, [borderColor CGColor]); CGContextSetLineWidth(c, lineWidth); CGContextSetAllowsAntialiasing(c, YES); CGContextSetShouldAntialias(c, YES); From 3d2ed9cfc64e9c914bafc75031b4650d0b05d803 Mon Sep 17 00:00:00 2001 From: Simon Morlat Date: Tue, 21 Aug 2012 12:12:50 +0200 Subject: [PATCH 154/397] set reasonable playout level for dtmfs in keypad (was previously destroying your ears) --- linphonerc | 1 + linphonerc-ipad | 1 + submodules/linphone | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/linphonerc b/linphonerc index 0a774e77a..3ee1f3d0b 100644 --- a/linphonerc +++ b/linphonerc @@ -29,6 +29,7 @@ playback_dev_id=AU: Audio Unit Receiver ringer_dev_id=AQ: Audio Queue Device capture_dev_id=AU: Audio Unit Receiver echocancellation=0 +dtmf_player_amp=0.007 [misc] history_max_size=30 diff --git a/linphonerc-ipad b/linphonerc-ipad index 075adf31c..19eb4dddf 100644 --- a/linphonerc-ipad +++ b/linphonerc-ipad @@ -29,6 +29,7 @@ playback_dev_id=AU: Audio Unit Receiver ringer_dev_id=AQ: Audio Queue Device capture_dev_id=AU: Audio Unit Receiver echocancellation=0 +dtmf_player_amp=0.007 [misc] history_max_size=30 diff --git a/submodules/linphone b/submodules/linphone index 0a12fa9ce..75040297c 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 0a12fa9ce7af5c795722ce1f7ebad9bc85314d3b +Subproject commit 75040297c12e118cea0ec87d2bc3980c290f8e86 From f2c47fd45d1bb64e4744f2491ae53c1b6d7b664b Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 21 Aug 2012 14:50:33 +0200 Subject: [PATCH 155/397] Fix video button disabled state --- Classes/LinphoneUI/UIVideoButton.h | 3 -- Classes/LinphoneUI/UIVideoButton.m | 44 +++++++++++++----------------- 2 files changed, 19 insertions(+), 28 deletions(-) diff --git a/Classes/LinphoneUI/UIVideoButton.h b/Classes/LinphoneUI/UIVideoButton.h index 759911f00..a7b4be5db 100644 --- a/Classes/LinphoneUI/UIVideoButton.h +++ b/Classes/LinphoneUI/UIVideoButton.h @@ -24,9 +24,6 @@ @interface UIVideoButton : UIToggleButton { } -@property (assign) BOOL locked; -@property (assign) BOOL unlockVideoState; - @property (nonatomic, retain) IBOutlet UIActivityIndicatorView* waitView; @end diff --git a/Classes/LinphoneUI/UIVideoButton.m b/Classes/LinphoneUI/UIVideoButton.m index 2368b9bfa..6100bc7da 100644 --- a/Classes/LinphoneUI/UIVideoButton.m +++ b/Classes/LinphoneUI/UIVideoButton.m @@ -22,13 +22,9 @@ @implementation UIVideoButton -@synthesize locked; -@synthesize unlockVideoState; @synthesize waitView; - (void)initUIVideoButton { - locked = FALSE; - unlockVideoState = FALSE; } - (id)init{ @@ -68,8 +64,6 @@ [self setEnabled: FALSE]; [waitView startAnimating]; - [self setLocked: TRUE]; - [self setUnlockVideoState: TRUE]; LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); if (call) { @@ -95,8 +89,6 @@ [self setEnabled: FALSE]; [waitView startAnimating]; - [self setLocked: TRUE]; - [self setUnlockVideoState: FALSE]; LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]); if (call) { @@ -116,26 +108,28 @@ LinphoneCall* currentCall = linphone_core_get_current_call([LinphoneManager getLc]); if (currentCall) { LinphoneCallState state = linphone_call_get_state(currentCall); - if (state == LinphoneCallStreamsRunning || state == LinphoneCallUpdated || state == LinphoneCallUpdatedByRemote) { - if (linphone_call_params_video_enabled(linphone_call_get_current_params(currentCall))) { - val = true; - if(locked && unlockVideoState) { - locked = FALSE; - [waitView stopAnimating]; - } - } else { - if(locked && !unlockVideoState) { - locked = FALSE; - [waitView stopAnimating]; - } + switch (state) { + case LinphoneCallUpdated: + { + [waitView stopAnimating]; } - if(!locked) { + case LinphoneCallStreamsRunning: + { [self setEnabled:TRUE]; + if (linphone_call_params_video_enabled(linphone_call_get_current_params(currentCall))) { + val = true; + } + break; } - } else { - // Disable button if the call is not running - [self setEnabled:FALSE]; - [waitView stopAnimating]; + + default: + { + // Disable button if the call is not running + [self setEnabled:FALSE]; + [waitView stopAnimating]; + break; + } + } } else { // Disable button if there is no call From b8f9ac4c234c199cf31ef9b8f243bc5eb280081f Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 21 Aug 2012 14:50:53 +0200 Subject: [PATCH 156/397] Fix history filter issue --- Classes/HistoryTableViewController.m | 6 +++--- Classes/HistoryViewController.m | 27 ++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/Classes/HistoryTableViewController.m b/Classes/HistoryTableViewController.m index b14825271..a39ccaea2 100644 --- a/Classes/HistoryTableViewController.m +++ b/Classes/HistoryTableViewController.m @@ -60,8 +60,8 @@ #pragma mark - ViewController Functions -- (void)viewDidAppear:(BOOL)animated { - [super viewDidAppear:animated]; +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; [self loadData]; } @@ -74,7 +74,6 @@ } missedFilter = amissedFilter; [self loadData]; - [[self tableView] reloadData]; } @@ -94,6 +93,7 @@ } logs = ms_list_next(logs); } + [[self tableView] reloadData]; } - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m index 11f4f951a..bb37c1108 100644 --- a/Classes/HistoryViewController.m +++ b/Classes/HistoryViewController.m @@ -76,11 +76,15 @@ static UICompositeViewDescription *compositeDescription = nil; - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; + + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewWillAppear:animated]; + } + if([tableController isEditing]) [tableController setEditing:FALSE animated:FALSE]; [editButton setOff]; [self changeView: History_All]; - [self.tableView reloadData]; // Reset missed call linphone_core_reset_missed_calls_count([LinphoneManager getLc]); @@ -88,6 +92,27 @@ static UICompositeViewDescription *compositeDescription = nil; [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneCallUpdate object:self]; } +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewDidAppear:animated]; + } +} + +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewDidDisappear:animated]; + } +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) { + [tableController viewWillDisappear:animated]; + } +} + - (void)viewDidLoad { [super viewDidLoad]; [self changeView: History_All]; From 7329929ebf792c6c340cfbc84bb96a676039e197 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Tue, 21 Aug 2012 14:54:10 +0200 Subject: [PATCH 157/397] Update mssilk --- Classes/LinphoneAppDelegate.m | 7 ------- Classes/PhoneMainView.m | 6 +----- submodules/mssilk | 2 +- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m index 5465b209f..83199faa9 100644 --- a/Classes/LinphoneAppDelegate.m +++ b/Classes/LinphoneAppDelegate.m @@ -30,13 +30,6 @@ #include "LinphoneManager.h" #include "linphonecore.h" -#if __clang__ && __arm__ -extern int __divsi3(int a, int b); -int __aeabi_idiv(int a, int b) { - return __divsi3(a,b); -} -#endif - @implementation UILinphoneWindow @end diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index 60514b27a..af4824271 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -326,6 +326,7 @@ static PhoneMainView* phoneMainViewInstance=nil; case LinphoneCallOutgoingInit: case LinphoneCallPausedByRemote: case LinphoneCallConnected: + case LinphoneCallStreamsRunning: case LinphoneCallUpdated: { [self changeCurrentView:[InCallViewController compositeViewDescription]]; @@ -359,11 +360,6 @@ static PhoneMainView* phoneMainViewInstance=nil; [self changeCurrentView:[InCallViewController compositeViewDescription]]; } break; - } - case LinphoneCallStreamsRunning: - { - [self changeCurrentView:[InCallViewController compositeViewDescription]]; - break; } default: break; diff --git a/submodules/mssilk b/submodules/mssilk index 391b6d6b0..d3a6a0a13 160000 --- a/submodules/mssilk +++ b/submodules/mssilk @@ -1 +1 @@ -Subproject commit 391b6d6b0fdf6854e5a25f287c4d8461730a1d40 +Subproject commit d3a6a0a130730c0eaf9a0b6ed2fc466432852684 From c2e7118f6a2abfa6426e2f5fc31a6e7d4ddfed6c Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Tue, 21 Aug 2012 15:12:53 +0200 Subject: [PATCH 158/397] Update linphone submodule. --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index 75040297c..125626d07 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 75040297c12e118cea0ec87d2bc3980c290f8e86 +Subproject commit 125626d071204ca5369eb2f33c727e8e6e6418f7 From 72302707ec83b6816a300f1674c97af1998d1446 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 22 Aug 2012 11:26:49 +0200 Subject: [PATCH 159/397] Update linphone --- Classes/ContactsViewController.m | 2 +- submodules/linphone | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m index 13b1eecdf..287b4148b 100644 --- a/Classes/ContactsViewController.m +++ b/Classes/ContactsViewController.m @@ -165,7 +165,7 @@ static UICompositeViewDescription *compositeDescription = nil; #pragma mark - -- (void)changeView: (HistoryView) view { +- (void)changeView:(HistoryView)view { if(view == History_All) { [ContactSelection setSipFilter:FALSE]; [tableController loadData]; diff --git a/submodules/linphone b/submodules/linphone index 125626d07..da56c0838 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit 125626d071204ca5369eb2f33c727e8e6e6418f7 +Subproject commit da56c0838b6e301fca338faaac53cd026ec02d88 From 2ef68adf4920df8af0070ec2970da90a1d0a6db0 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 22 Aug 2012 12:11:41 +0200 Subject: [PATCH 160/397] Fix small rotation issue --- Classes/LinphoneUI/UICompositeViewController.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m index 7de90348a..b1f6b8c77 100644 --- a/Classes/LinphoneUI/UICompositeViewController.m +++ b/Classes/LinphoneUI/UICompositeViewController.m @@ -333,7 +333,7 @@ if(currentOrientation == UIDeviceOrientationUnknown) { return [UIApplication sharedApplication].statusBarOrientation; } - return currentOrientation; + deviceOrientation = currentOrientation; } if (UIDeviceOrientationIsPortrait(deviceOrientation)) { if ([currentViewDescription portraitMode]) { From 737224f712dac27c0a5296993fa9359a7c683c48 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 22 Aug 2012 16:40:24 +0200 Subject: [PATCH 161/397] Fix add contact --- Classes/ContactDetailsTableViewController.m | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m index 994497c0a..4ee53e10b 100644 --- a/Classes/ContactDetailsTableViewController.m +++ b/Classes/ContactDetailsTableViewController.m @@ -115,6 +115,8 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C - (void)viewDidLoad { [super viewDidLoad]; + [headerController view]; // Force view load + [footerController view]; // Force view load [self.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4 } From e0b789f704751c1b5b2e89f122478bea3bfef184 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Wed, 22 Aug 2012 18:59:18 +0200 Subject: [PATCH 162/397] Update linphone submodule --- submodules/linphone | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodules/linphone b/submodules/linphone index da56c0838..a0be0c1b3 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit da56c0838b6e301fca338faaac53cd026ec02d88 +Subproject commit a0be0c1b3b977f2ebc1e7712c648ae9748788458 From a1b2f96db334d5150047e2aa80f442369f213863 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 23 Aug 2012 10:09:25 +0200 Subject: [PATCH 163/397] Update linphone submodule and remove memory leak in InCall view --- Classes/InCallTableViewController.m | 4 ++-- submodules/linphone | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m index 4b21b862f..158df61ab 100644 --- a/Classes/InCallTableViewController.m +++ b/Classes/InCallTableViewController.m @@ -260,7 +260,7 @@ enum TableSection { - (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { if(section == CallSection) { - return [[UIView alloc] initWithFrame:CGRectZero]; + return [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; } else if(section == ConferenceSection) { LinphoneCore* lc = [LinphoneManager getLc]; if(linphone_core_get_conference_size(lc) > 0){ @@ -270,7 +270,7 @@ enum TableSection { [headerController release]; return headerView; } else { - return [[UIView alloc] initWithFrame:CGRectZero]; + return [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; } } return [[[UIView alloc] initWithFrame:CGRectZero] autorelease]; diff --git a/submodules/linphone b/submodules/linphone index a0be0c1b3..1438d4f59 160000 --- a/submodules/linphone +++ b/submodules/linphone @@ -1 +1 @@ -Subproject commit a0be0c1b3b977f2ebc1e7712c648ae9748788458 +Subproject commit 1438d4f5911aa692b862b04e421eb48de3147b00 From 3e929b8dd7f17d8faf3b45d4e2a103d24e919861 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 23 Aug 2012 10:25:23 +0200 Subject: [PATCH 164/397] Add animations preference --- Classes/LinphoneCoreSettingsStore.m | 4 ++++ Classes/LinphoneUI/UICallBar.m | 8 ++++---- Classes/PhoneMainView.m | 6 +++++- Classes/WizardViewController.m | 2 +- Settings/InAppSettings.bundle/Advanced.plist | 10 ++++++++++ 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index f776bc624..2c27099d0 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -183,6 +183,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [self setString: lp_config_get_string(linphone_core_get_config(lc),"app","rotation_preference", "auto") forKey:@"rotation_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","enable_first_login_view_preference", 0) forKey:@"enable_first_login_view_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference", 0) forKey:@"debugenable_preference"]; + [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","animations_preference", 1) forKey:@"animations_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference", 0) forKey:@"check_config_disable_preference"]; [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","wifi_only_preference", 0) forKey:@"wifi_only_preference"]; @@ -486,6 +487,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); lp_config_set_int(linphone_core_get_config(lc),"app","debugenable_preference", debugmode); if (debugmode) linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler); else linphone_core_disable_logs(); + + BOOL animations = [self boolForKey:@"animations_preference"]; + lp_config_set_int(linphone_core_get_config(lc),"app","animations_preference", animations); /*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/ BOOL start_at_boot = [self boolForKey:@"start_at_boot_preference"]; diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m index ff13ea619..968a0bc3c 100644 --- a/Classes/LinphoneUI/UICallBar.m +++ b/Classes/LinphoneUI/UICallBar.m @@ -371,9 +371,9 @@ - (IBAction)onPadClick:(id)sender { if([padView isHidden]) { - [self showPad:TRUE]; + [self showPad:[[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"]]; } else { - [self hidePad:TRUE]; + [self hidePad:[[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"]]; } } @@ -399,9 +399,9 @@ - (IBAction)onOptionsClick:(id)sender { if([optionsView isHidden]) { - [self showOptions:TRUE]; + [self showOptions:[[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"]]; } else { - [self hideOptions:TRUE]; + [self hideOptions:[[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"]]; } } diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m index af4824271..b8aa97e46 100644 --- a/Classes/PhoneMainView.m +++ b/Classes/PhoneMainView.m @@ -484,7 +484,11 @@ static PhoneMainView* phoneMainViewInstance=nil; if(force || ![view equal: currentView]) { if(transition == nil) transition = [PhoneMainView getTransition:currentView new:view]; - [mainViewController setViewTransition:transition]; + if ([[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"] == true) { + [mainViewController setViewTransition:transition]; + } else { + [mainViewController setViewTransition:nil]; + } [mainViewController changeView:view]; currentView = view; } diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m index 04711c118..e2607d7a6 100644 --- a/Classes/WizardViewController.m +++ b/Classes/WizardViewController.m @@ -226,7 +226,7 @@ static UICompositeViewDescription *compositeDescription = nil; } // Animation - if(animation) { + if(animation && [[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"] == true) { CATransition* trans = [CATransition animation]; [trans setType:kCATransitionPush]; [trans setDuration:0.35]; diff --git a/Settings/InAppSettings.bundle/Advanced.plist b/Settings/InAppSettings.bundle/Advanced.plist index 4218c07f4..675b6f29c 100644 --- a/Settings/InAppSettings.bundle/Advanced.plist +++ b/Settings/InAppSettings.bundle/Advanced.plist @@ -14,6 +14,16 @@ Type PSToggleSwitchSpecifier + + DefaultValue + + Key + animations_preference + Title + Animations + Type + PSToggleSwitchSpecifier + DefaultValue auto From 041a3165fda9a085084d9beab0895638fa206b1a Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 23 Aug 2012 11:21:22 +0200 Subject: [PATCH 165/397] Add default setting files Add audio/video port setting --- Classes/LinphoneCoreSettingsStore.m | 17 ++++- Classes/LinphoneManager.h | 4 ++ Classes/LinphoneManager.m | 77 ++++++++++++++------- Resources/linphonerc~ipad | 10 +++ Resources/linphonrc | 10 +++ Settings/InAppSettings.bundle/Network.plist | 32 +++++++++ linphone.xcodeproj/project.pbxproj | 36 ++++++---- linphonerc => linphonerc-factory | 6 -- linphonerc-ipad => linphonerc-factory~ipad | 6 -- 9 files changed, 147 insertions(+), 51 deletions(-) create mode 100644 Resources/linphonerc~ipad create mode 100644 Resources/linphonrc rename linphonerc => linphonerc-factory (81%) rename linphonerc-ipad => linphonerc-factory~ipad (80%) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 2c27099d0..5acaea706 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -125,6 +125,10 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [self setString: linphone_address_get_username(parsed) forKey:@"primary_username_preference"]; } linphone_address_destroy(parsed); + } + { + [self setInteger: linphone_core_get_audio_port(lc) forKey:@"audio_port_preference"]; + [self setInteger: linphone_core_get_video_port(lc) forKey:@"video_port_preference"]; } { LCSipTransports tp; @@ -144,7 +148,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [self setString:tname forKey:@"transport_preference"]; [self setInteger:port forKey:@"port_preference"]; - [self setInteger:lp_config_get_int(linphone_core_get_config(lc),"app","random_port_preference", 1) forKey:@"random_port_preference"]; + [self setInteger:lp_config_get_int(linphone_core_get_config(lc),"sip","sip_random_port", 1) forKey:@"random_port_preference"]; } { LinphoneAuthInfo *ai; @@ -291,8 +295,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [LinphoneLogger logc:LinphoneLoggerError format:"cannot set transport"]; } } - lp_config_set_int(linphone_core_get_config(lc),"app","random_port_preference",random_port_preference); - + lp_config_set_int(linphone_core_get_config(lc),"sip","sip_random_port", random_port_preference); + lp_config_set_int(linphone_core_get_config(lc),"sip","sip_tcp_random_port", random_port_preference); + lp_config_set_int(linphone_core_get_config(lc),"sip","sip_tls_random_port", random_port_preference); //configure sip account @@ -464,6 +469,12 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); linphone_address_destroy(parsed); } + + // Audio & Video Port + int audio_port_preference = [self integerForKey:@"audio_port_preference"]; + linphone_core_set_audio_port(lc, audio_port_preference); + int video_port_preference = [self integerForKey:@"video_port_preference"]; + linphone_core_set_audio_port(lc, video_port_preference); UIDevice* device = [UIDevice currentDevice]; bool backgroundSupported = false; diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h index 997ee7c45..f242163f9 100644 --- a/Classes/LinphoneManager.h +++ b/Classes/LinphoneManager.h @@ -111,6 +111,10 @@ typedef struct _LinphoneManagerSounds { - (void)addInhibitedEvent:(NSString*)event; - (BOOL)removeInhibitedEvent:(NSString*)event; ++ (BOOL)copyFile:(NSString*)src destination:(NSString*)dst override:(BOOL)override; ++ (NSString*)bundleFile:(NSString*)file; ++ (NSString*)documentFile:(NSString*)file; + - (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer; @property (nonatomic, retain) id settingsStore; diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m index 0c999466c..01d6a5aec 100644 --- a/Classes/LinphoneManager.m +++ b/Classes/LinphoneManager.m @@ -199,6 +199,7 @@ struct codec_name_pref_table codec_pref_table[]={ settingsStore = nil; self.defaultExpires = 600; [self openDatabase]; + [self copyDefaultSettings]; } return self; } @@ -223,30 +224,12 @@ struct codec_name_pref_table codec_pref_table[]={ #pragma mark - Database Functions - (void)openDatabase { - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *documentsPath = [paths objectAtIndex:0]; - NSString *databaseDocumentPath = [documentsPath stringByAppendingPathComponent:@"database.txt"]; + NSString *src = [LinphoneManager bundleFile:@"database.sqlite"]; + NSString *dst = [LinphoneManager documentFile:@"database.sqlite"]; + [LinphoneManager copyFile:src destination:dst override:FALSE]; - // Copy default database - NSFileManager *fileManager = [NSFileManager defaultManager]; - NSError *error = nil; - //[fileManager removeItemAtPath:databaseDocumentPath error:&error]; //TODO REMOVE - if ([fileManager fileExistsAtPath:databaseDocumentPath] == NO) { - [LinphoneLogger logc:LinphoneLoggerLog format:"Create sqlite3 database"]; - NSString *resourceDocumentPath = [[NSBundle mainBundle] pathForResource:@"database" ofType:@"sqlite"]; - if ([fileManager fileExistsAtPath:resourceDocumentPath] == NO) { - [LinphoneLogger log:LinphoneLoggerError format:@"Can't find original database: %@", [error localizedDescription]]; - return; - } - [fileManager copyItemAtPath:resourceDocumentPath toPath:databaseDocumentPath error:&error]; - if(error != nil) { - [LinphoneLogger log:LinphoneLoggerError format:@"Can't copy database: %@", [error localizedDescription]]; - return; - } - } - - if(sqlite3_open([databaseDocumentPath UTF8String], &database) != SQLITE_OK) { - [LinphoneLogger log:LinphoneLoggerError format:@"Can't open \"%@\" sqlite3 database.", databaseDocumentPath]; + if(sqlite3_open([dst UTF8String], &database) != SQLITE_OK) { + [LinphoneLogger log:LinphoneLoggerError format:@"Can't open \"%@\" sqlite3 database.", dst]; } } @@ -566,7 +549,7 @@ static LinphoneCoreVTable linphonec_vtable = { //get default config from bundle NSBundle* myBundle = [NSBundle mainBundle]; - NSString* factoryConfig = [myBundle pathForResource:[LinphoneManager runningOnIpad]?@"linphonerc-ipad":@"linphonerc" ofType:nil] ; + NSString* factoryConfig = [myBundle pathForResource:[LinphoneManager runningOnIpad]?@"linphonerc-factory~ipad":@"linphonerc-factory" ofType:nil] ; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *confiFileName = [[paths objectAtIndex:0] stringByAppendingString:@"/.linphonerc"]; NSString *zrtpSecretsFileName = [[paths objectAtIndex:0] stringByAppendingString:@"/zrtp_secrets"]; @@ -803,6 +786,12 @@ static LinphoneCoreVTable linphonec_vtable = { } +- (void)copyDefaultSettings { + NSString *src = [LinphoneManager bundleFile:[LinphoneManager runningOnIpad]?@"linphonerc~ipad":@"linphonerc"]; + NSString *dst = [LinphoneManager documentFile:@".linphonerc"]; + [LinphoneManager copyFile:src destination:dst override:FALSE]; +} + #pragma mark - Speaker Functions - (void)enableSpeaker:(BOOL)enable { @@ -940,4 +929,44 @@ static LinphoneCoreVTable linphonec_vtable = { return FALSE; } + +#pragma mark - Misc Functions + ++ (NSString*)bundleFile:(NSString*)file { + return [[NSBundle mainBundle] pathForResource:[file stringByDeletingPathExtension] ofType:[file pathExtension]]; +} + ++ (NSString*)documentFile:(NSString*)file { + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsPath = [paths objectAtIndex:0]; + return [documentsPath stringByAppendingPathComponent:file]; +} + ++ (BOOL)copyFile:(NSString*)src destination:(NSString*)dst override:(BOOL)override { + NSFileManager *fileManager = [NSFileManager defaultManager]; + NSError *error = nil; + if ([fileManager fileExistsAtPath:dst] == YES) { + if(override) { + [fileManager removeItemAtPath:dst error:&error]; + if(error != nil) { + [LinphoneLogger log:LinphoneLoggerError format:@"Can't remove \"%@\": %@", dst, [error localizedDescription]]; + return FALSE; + } + } else { + [LinphoneLogger log:LinphoneLoggerWarning format:@"\"%@\" already exists", dst]; + return FALSE; + } + } + if ([fileManager fileExistsAtPath:src] == NO) { + [LinphoneLogger log:LinphoneLoggerError format:@"Can't find \"%@\": %@", src, [error localizedDescription]]; + return FALSE; + } + [fileManager copyItemAtPath:src toPath:dst error:&error]; + if(error != nil) { + [LinphoneLogger log:LinphoneLoggerError format:@"Can't copy \"%@\" to \"%@\": %@", src, dst, [error localizedDescription]]; + return FALSE; + } + return TRUE; +} + @end diff --git a/Resources/linphonerc~ipad b/Resources/linphonerc~ipad new file mode 100644 index 000000000..10c2a12a9 --- /dev/null +++ b/Resources/linphonerc~ipad @@ -0,0 +1,10 @@ +[sip] +sip_random_port=1 +sip_tcp_random_port=1 +sip_tls_random_port=1 +contact=sip:toto@unknown-host +keepalive_period=30000 + +[rtp] +audio_rtp_port=7076 +video_rtp_port=9078 \ No newline at end of file diff --git a/Resources/linphonrc b/Resources/linphonrc new file mode 100644 index 000000000..10c2a12a9 --- /dev/null +++ b/Resources/linphonrc @@ -0,0 +1,10 @@ +[sip] +sip_random_port=1 +sip_tcp_random_port=1 +sip_tls_random_port=1 +contact=sip:toto@unknown-host +keepalive_period=30000 + +[rtp] +audio_rtp_port=7076 +video_rtp_port=9078 \ No newline at end of file diff --git a/Settings/InAppSettings.bundle/Network.plist b/Settings/InAppSettings.bundle/Network.plist index c8a4ac946..d4b181699 100644 --- a/Settings/InAppSettings.bundle/Network.plist +++ b/Settings/InAppSettings.bundle/Network.plist @@ -64,6 +64,38 @@ DefaultValue 5060 + + Key + audio_port_preference + Title + Audio Port + Type + PSTextFieldSpecifier + AutocapitalizationType + None + AutocorrectionType + No + KeyboardType + NumberPad + DefaultValue + 7076 + + + Key + video_port_preference + Title + Video Port + Type + PSTextFieldSpecifier + AutocapitalizationType + None + AutocorrectionType + No + KeyboardType + NumberPad + DefaultValue + 9078 + DefaultValue udp diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj index 7c435be7b..33fbf5011 100755 --- a/linphone.xcodeproj/project.pbxproj +++ b/linphone.xcodeproj/project.pbxproj @@ -50,7 +50,7 @@ 226F2ED81344B0EF00F6EF27 /* libmsamr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED51344B0EF00F6EF27 /* libmsamr.a */; }; 2274401A106F31BD006EC466 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22744019106F31BD006EC466 /* CoreAudio.framework */; }; 2274402F106F335E006EC466 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2274402E106F335E006EC466 /* AudioToolbox.framework */; }; - 2274550810700509006EC466 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc */; }; + 2274550810700509006EC466 /* linphonerc-factory in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc-factory */; }; 228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 228697C311AC29B800E9E0CA /* CFNetwork.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; 22968A5F12F875C600588287 /* UISpeakerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A5E12F875C600588287 /* UISpeakerButton.m */; }; 22A10F3B11F8960300373793 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2C10765B400068D98F /* libortp.a */; }; @@ -121,7 +121,7 @@ 34075199150645A300B89C47 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340751961506459A00B89C47 /* CoreTelephony.framework */; }; 340751E7150F38FD00B89C47 /* UIVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIVideoButton.m */; }; 340751E8150F38FD00B89C47 /* UIVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIVideoButton.m */; }; - 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; + 341FCA8E149798210084BC26 /* linphonerc-factory~ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-factory~ipad */; }; 34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; }; 34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; }; 344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDE71484E723007420B6 /* libzrtpcpp.a */; }; @@ -186,6 +186,10 @@ D3211BBE159CBFD60098460B /* back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* back_default.png */; }; D3211BC0159CBFD70098460B /* back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* back_disabled.png */; }; D3211BC2159CBFD70098460B /* back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* back_over.png */; }; + D321FF9615E628BB0098B5F4 /* linphonrc in Resources */ = {isa = PBXBuildFile; fileRef = D321FF9515E628BB0098B5F4 /* linphonrc */; }; + D321FF9715E628BB0098B5F4 /* linphonrc in Resources */ = {isa = PBXBuildFile; fileRef = D321FF9515E628BB0098B5F4 /* linphonrc */; }; + D321FF9915E628CB0098B5F4 /* linphonerc~ipad in Resources */ = {isa = PBXBuildFile; fileRef = D321FF9815E628CB0098B5F4 /* linphonerc~ipad */; }; + D321FF9A15E628CB0098B5F4 /* linphonerc~ipad in Resources */ = {isa = PBXBuildFile; fileRef = D321FF9815E628CB0098B5F4 /* linphonerc~ipad */; }; D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D32409C4158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; }; D32460E6159D9AAD00BA7F3A /* UITransparentView.m in Sources */ = {isa = PBXBuildFile; fileRef = D32460E5159D9AAD00BA7F3A /* UITransparentView.m */; }; @@ -449,8 +453,8 @@ D34BD6A215C13DB70070C209 /* linphone-banner.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2F911ABB76400628906 /* linphone-banner.png */; }; D34BD6A415C13DB70070C209 /* linphone_icon_57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* linphone_icon_57.png */; }; D34BD6A515C13DB70070C209 /* linphone_icon_72.png in Resources */ = {isa = PBXBuildFile; fileRef = 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */; }; - D34BD6A615C13DB70070C209 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc */; }; - D34BD6A715C13DB70070C209 /* linphonerc-ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-ipad */; }; + D34BD6A615C13DB70070C209 /* linphonerc-factory in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc-factory */; }; + D34BD6A715C13DB70070C209 /* linphonerc-factory~ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-factory~ipad */; }; D34BD6A815C13DB70070C209 /* list_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* list_delete_default.png */; }; D34BD6A915C13DB70070C209 /* list_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5417159858A80037DC6B /* list_delete_over.png */; }; D34BD6AA15C13DB70070C209 /* list_details_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* list_details_default.png */; }; @@ -1356,7 +1360,7 @@ 2274402E106F335E006EC466 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; }; 22744043106F33FC006EC466 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; 22744056106F9BC9006EC466 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; }; - 2274550710700509006EC466 /* linphonerc */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = linphonerc; sourceTree = ""; }; + 2274550710700509006EC466 /* linphonerc-factory */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = "linphonerc-factory"; sourceTree = ""; }; 228697C311AC29B800E9E0CA /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; }; 22968A5D12F875C600588287 /* UISpeakerButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UISpeakerButton.h; sourceTree = ""; }; 22968A5E12F875C600588287 /* UISpeakerButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UISpeakerButton.m; sourceTree = ""; }; @@ -1462,7 +1466,7 @@ 340751E4150E4D0200B89C47 /* CallDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallDelegate.h; sourceTree = ""; }; 340751E5150F38FC00B89C47 /* UIVideoButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIVideoButton.h; sourceTree = ""; }; 340751E6150F38FD00B89C47 /* UIVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIVideoButton.m; sourceTree = ""; }; - 341FCA8D149798210084BC26 /* linphonerc-ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "linphonerc-ipad"; sourceTree = ""; }; + 341FCA8D149798210084BC26 /* linphonerc-factory~ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "linphonerc-factory~ipad"; sourceTree = ""; }; 34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoZoomHandler.h; path = LinphoneUI/VideoZoomHandler.h; sourceTree = ""; }; 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VideoZoomHandler.m; path = LinphoneUI/VideoZoomHandler.m; sourceTree = ""; }; 344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = ""; }; @@ -1529,6 +1533,8 @@ D3211BBB159CBFD60098460B /* back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_default.png; path = Resources/back_default.png; sourceTree = ""; }; D3211BBC159CBFD60098460B /* back_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_disabled.png; path = Resources/back_disabled.png; sourceTree = ""; }; D3211BBD159CBFD60098460B /* back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_over.png; path = Resources/back_over.png; sourceTree = ""; }; + D321FF9515E628BB0098B5F4 /* linphonrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = linphonrc; path = Resources/linphonrc; sourceTree = ""; }; + D321FF9815E628CB0098B5F4 /* linphonerc~ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc~ipad"; path = "Resources/linphonerc~ipad"; sourceTree = ""; }; D32409C1158B49A600C8C119 /* UILongTouchButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILongTouchButton.h; sourceTree = ""; }; D32409C2158B49A600C8C119 /* UILongTouchButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UILongTouchButton.m; sourceTree = ""; }; D32460E4159D9AAD00BA7F3A /* UITransparentView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UITransparentView.h; sourceTree = ""; }; @@ -2849,8 +2855,10 @@ D33CF34815D3A03400CD4B85 /* linphone_icon_57@2x.png */, 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */, D33CF34915D3A03400CD4B85 /* linphone_icon_72@2x.png */, - 2274550710700509006EC466 /* linphonerc */, - 341FCA8D149798210084BC26 /* linphonerc-ipad */, + 2274550710700509006EC466 /* linphonerc-factory */, + 341FCA8D149798210084BC26 /* linphonerc-factory~ipad */, + D321FF9815E628CB0098B5F4 /* linphonerc~ipad */, + D321FF9515E628BB0098B5F4 /* linphonrc */, D3EA5416159858A80037DC6B /* list_delete_default.png */, D3EA5417159858A80037DC6B /* list_delete_over.png */, D354981815876FE7000081D8 /* list_details_default.png */, @@ -3322,7 +3330,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2274550810700509006EC466 /* linphonerc in Resources */, + 2274550810700509006EC466 /* linphonerc-factory in Resources */, 22F2508F107141E100AC9B3F /* DialerViewController.xib in Resources */, 22F254811073D99800AC9B3F /* ringback.wav in Resources */, 2237D4091084D7A9001383EE /* ring.wav in Resources */, @@ -3334,7 +3342,7 @@ 2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */, 2214783D1386A2030020F8B8 /* Localizable.strings in Resources */, 70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */, - 341FCA8E149798210084BC26 /* linphonerc-ipad in Resources */, + 341FCA8E149798210084BC26 /* linphonerc-factory~ipad in Resources */, 34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */, D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */, D347347E1580E5F8003C7B8C /* history_default.png in Resources */, @@ -3756,6 +3764,8 @@ D30BBD1815D402A7000F93DD /* contact_ok_disabled.png in Resources */, D3804E6015D92A57008072A5 /* msg.caf in Resources */, D3804E6215D92A57008072A5 /* msg.wav in Resources */, + D321FF9615E628BB0098B5F4 /* linphonrc in Resources */, + D321FF9915E628CB0098B5F4 /* linphonerc~ipad in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3929,8 +3939,8 @@ D34BD6A215C13DB70070C209 /* linphone-banner.png in Resources */, D34BD6A415C13DB70070C209 /* linphone_icon_57.png in Resources */, D34BD6A515C13DB70070C209 /* linphone_icon_72.png in Resources */, - D34BD6A615C13DB70070C209 /* linphonerc in Resources */, - D34BD6A715C13DB70070C209 /* linphonerc-ipad in Resources */, + D34BD6A615C13DB70070C209 /* linphonerc-factory in Resources */, + D34BD6A715C13DB70070C209 /* linphonerc-factory~ipad in Resources */, D34BD6A815C13DB70070C209 /* list_delete_default.png in Resources */, D34BD6A915C13DB70070C209 /* list_delete_over.png in Resources */, D34BD6AA15C13DB70070C209 /* list_details_default.png in Resources */, @@ -4197,6 +4207,8 @@ D30BBD1915D402A7000F93DD /* contact_ok_disabled.png in Resources */, D3804E6115D92A57008072A5 /* msg.caf in Resources */, D3804E6315D92A57008072A5 /* msg.wav in Resources */, + D321FF9715E628BB0098B5F4 /* linphonrc in Resources */, + D321FF9A15E628CB0098B5F4 /* linphonerc~ipad in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/linphonerc b/linphonerc-factory similarity index 81% rename from linphonerc rename to linphonerc-factory index 3ee1f3d0b..d69466a06 100644 --- a/linphonerc +++ b/linphonerc-factory @@ -5,11 +5,7 @@ firewall_policy=0 mtu=1300 [sip] -sip_random_port=1 -sip_tcp_random_port=1 -sip_tls_random_port=1 guess_hostname=1 -contact=sip:toto@unknown-host inc_timeout=15 use_info=0 use_ipv6=0 @@ -18,8 +14,6 @@ auto_net_state_mon=0 keepalive_period=30000 [rtp] -audio_rtp_port=7076 -video_rtp_port=9078 audio_jitt_comp=60 video_jitt_comp=60 nortp_timeout=30 diff --git a/linphonerc-ipad b/linphonerc-factory~ipad similarity index 80% rename from linphonerc-ipad rename to linphonerc-factory~ipad index 19eb4dddf..ca50942ac 100644 --- a/linphonerc-ipad +++ b/linphonerc-factory~ipad @@ -5,11 +5,7 @@ firewall_policy=0 mtu=1300 [sip] -sip_random_port=1 -sip_tcp_random_port=1 -sip_tls_random_port=1 guess_hostname=1 -contact=sip:toto@unknown-host inc_timeout=15 use_info=0 use_ipv6=0 @@ -18,8 +14,6 @@ auto_net_state_mon=0 keepalive_period=30000 [rtp] -audio_rtp_port=7076 -video_rtp_port=9078 audio_jitt_comp=60 video_jitt_comp=60 nortp_timeout=30 From 22b240ac592432ffe7c288510716a1b8bae0e1e8 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 23 Aug 2012 11:52:42 +0200 Subject: [PATCH 166/397] Fix audio/video settings Change default primary contact value --- Classes/LinphoneCoreSettingsStore.m | 2 +- Resources/linphonerc~ipad | 2 +- Resources/linphonrc | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 5acaea706..5d610cf7c 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -474,7 +474,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); int audio_port_preference = [self integerForKey:@"audio_port_preference"]; linphone_core_set_audio_port(lc, audio_port_preference); int video_port_preference = [self integerForKey:@"video_port_preference"]; - linphone_core_set_audio_port(lc, video_port_preference); + linphone_core_set_video_port(lc, video_port_preference); UIDevice* device = [UIDevice currentDevice]; bool backgroundSupported = false; diff --git a/Resources/linphonerc~ipad b/Resources/linphonerc~ipad index 10c2a12a9..2b37b20f2 100644 --- a/Resources/linphonerc~ipad +++ b/Resources/linphonerc~ipad @@ -2,7 +2,7 @@ sip_random_port=1 sip_tcp_random_port=1 sip_tls_random_port=1 -contact=sip:toto@unknown-host +contact="Linphone iPhone" keepalive_period=30000 [rtp] diff --git a/Resources/linphonrc b/Resources/linphonrc index 10c2a12a9..2b37b20f2 100644 --- a/Resources/linphonrc +++ b/Resources/linphonrc @@ -2,7 +2,7 @@ sip_random_port=1 sip_tcp_random_port=1 sip_tls_random_port=1 -contact=sip:toto@unknown-host +contact="Linphone iPhone" keepalive_period=30000 [rtp] From 60055f2e7eba3365549672c81dfef80cd9f57f0c Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 23 Aug 2012 12:00:48 +0200 Subject: [PATCH 167/397] Update back port when using random port --- Classes/LinphoneCoreSettingsStore.m | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m index 5d610cf7c..4046c724b 100644 --- a/Classes/LinphoneCoreSettingsStore.m +++ b/Classes/LinphoneCoreSettingsStore.m @@ -266,10 +266,16 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); NSString* transport = [self stringForKey:@"transport_preference"]; int port_preference = [self integerForKey:@"port_preference"]; + BOOL random_port_preference = [self boolForKey:@"random_port_preference"]; + lp_config_set_int(linphone_core_get_config(lc),"sip","sip_random_port", random_port_preference); + lp_config_set_int(linphone_core_get_config(lc),"sip","sip_tcp_random_port", random_port_preference); + lp_config_set_int(linphone_core_get_config(lc),"sip","sip_tls_random_port", random_port_preference); if(random_port_preference) { port_preference = (0xDFFF&random())+1024; + [self setInteger:port_preference forKey:@"port_preference"]; // Update back preference } + LCSipTransports transportValue={0}; if (transport!=nil) { if (linphone_core_get_sip_transports(lc, &transportValue)) { @@ -295,9 +301,6 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args); [LinphoneLogger logc:LinphoneLoggerError format:"cannot set transport"]; } } - lp_config_set_int(linphone_core_get_config(lc),"sip","sip_random_port", random_port_preference); - lp_config_set_int(linphone_core_get_config(lc),"sip","sip_tcp_random_port", random_port_preference); - lp_config_set_int(linphone_core_get_config(lc),"sip","sip_tls_random_port", random_port_preference); //configure sip account From 4ae532b61a1fbbd76aa3992be180994943ee1a05 Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Thu, 23 Aug 2012 15:45:18 +0200 Subject: [PATCH 168/397] History details view: Create only one time the date formatter --- Classes/HistoryDetailsViewController.h | 1 + Classes/HistoryDetailsViewController.m | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Classes/HistoryDetailsViewController.h b/Classes/HistoryDetailsViewController.h index df6ffac34..a9140badd 100644 --- a/Classes/HistoryDetailsViewController.h +++ b/Classes/HistoryDetailsViewController.h @@ -26,6 +26,7 @@ @interface HistoryDetailsViewController : UIViewController { @private ABRecordRef contact; + NSDateFormatter *dateFormatter; } @property (nonatomic, retain) IBOutlet UIImageView *avatarImage; @property (nonatomic, retain) IBOutlet UILabel *addressLabel; diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m index f0af8e22e..8b5f2a169 100644 --- a/Classes/HistoryDetailsViewController.m +++ b/Classes/HistoryDetailsViewController.m @@ -38,9 +38,23 @@ #pragma mark - LifeCycle Functions +- (id)init { + self = [super initWithNibName:@"HistoryDetailsViewController" bundle:[NSBundle mainBundle]]; + if(self != nil) { + dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; + [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; + NSLocale *locale = [NSLocale currentLocale]; + [dateFormatter setLocale:locale]; + } + return self; +} + - (void)dealloc { [[NSNotificationCenter defaultCenter] removeObserver:self]; + [dateFormatter release]; + [avatarImage release]; [addressLabel release]; [dateLabel release]; @@ -221,13 +235,7 @@ static UICompositeViewDescription *compositeDescription = nil; // Date NSDate *startData = [NSDate dateWithTimeIntervalSince1970:callLog->start_date_time]; - NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; - [dateFormatter setTimeStyle:NSDateFormatterMediumStyle]; - [dateFormatter setDateStyle:NSDateFormatterMediumStyle]; - NSLocale *locale = [NSLocale currentLocale]; - [dateFormatter setLocale:locale]; [dateLabel setText:[dateFormatter stringFromDate:startData]]; - [dateFormatter release]; // Duration int duration = callLog->duration; From 50e2a6bd07fa8cecaaf5b2a372940a077ed90c0d Mon Sep 17 00:00:00 2001 From: Yann Diorcet Date: Fri, 24 Aug 2012 16:49:15 +0200 Subject: [PATCH 169/397] Add Console view --- Classes/ChatViewController.xib | 5 + Classes/ConsoleViewController.h | 10 +- Classes/ConsoleViewController.m | 129 ++++++++++---- Classes/ConsoleViewController.xib | 165 +++++------------- Classes/ContactDetailsLabelViewController.xib | 15 +- Classes/ContactDetailsViewController.xib | 16 ++ Classes/ContactsViewController.xib | 12 +- Classes/HistoryViewController.xib | 8 +- Classes/InCallViewController.xib | 124 ++++++++++++- Classes/LinphoneCoreSettingsStore.m | 11 +- Classes/LinphoneManager.h | 5 +- Classes/LinphoneManager.m | 49 ++++-- Classes/LinphoneUI/LogView.h | 27 --- Classes/PhoneMainView.h | 1 + Classes/PhoneMainView.m | 2 +- Classes/SettingsViewController.m | 17 ++ Settings/InAppSettings.bundle/Advanced.plist | 20 +++ linphone.xcodeproj/project.pbxproj | 6 +- 18 files changed, 401 insertions(+), 221 deletions(-) delete mode 100644 Classes/LinphoneUI/LogView.h diff --git a/Classes/ChatViewController.xib b/Classes/ChatViewController.xib index 395f02293..456aea221 100644 --- a/Classes/ChatViewController.xib +++ b/Classes/ChatViewController.xib @@ -148,6 +148,7 @@ {{0, 58}, {320, 402}} + _NS:9 1 @@ -160,6 +161,10 @@ 0.0 0.0 YES + 0.0 + 10 + 0.0 + 0.0 1 0 YES diff --git a/Classes/ConsoleViewController.h b/Classes/ConsoleViewController.h index 2512b8251..b1cc77e97 100644 --- a/Classes/ConsoleViewController.h +++ b/Classes/ConsoleViewController.h @@ -18,15 +18,11 @@ */ #import +#import "UICompositeViewController.h" -#import "LogView.h" - -@interface ConsoleViewController : UIViewController { +@interface ConsoleViewController : UIViewController { } --(void) doAction; - -@property (nonatomic, retain) IBOutlet UITextView* logs; -@property (nonatomic, retain) IBOutlet UIView* logsView; +@property (nonatomic, retain) IBOutlet UIWebView* logsView; @end diff --git a/Classes/ConsoleViewController.m b/Classes/ConsoleViewController.m index 46e8c8cb4..6e289805b 100644 --- a/Classes/ConsoleViewController.m +++ b/Classes/ConsoleViewController.m @@ -22,49 +22,110 @@ @implementation ConsoleViewController -NSMutableString* MoreViewController_logs; - -@synthesize logs; @synthesize logsView; -- (void)viewDidLoad { - [super viewDidLoad]; - UIBarButtonItem* clear = [[[UIBarButtonItem alloc] - initWithBarButtonSystemItem:UIBarButtonSystemItemTrash - target:self - action:@selector(doAction)] autorelease]; - [self.navigationItem setRightBarButtonItem:clear]; -} -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - [logs setText:MoreViewController_logs]; -} -- (void)addLog:(NSString*) log { - @synchronized(self) { - if (!MoreViewController_logs) { - MoreViewController_logs = [[NSMutableString alloc] init]; - } - [MoreViewController_logs appendString:log]; - if (MoreViewController_logs.length > 50000) { - NSRange range = {0,log.length}; - [MoreViewController_logs deleteCharactersInRange:range]; - } - } -} +#pragma mark - Lifecycle Functions -- (void)doAction{ - @synchronized(self) { - NSMutableString* oldString = MoreViewController_logs; - MoreViewController_logs = [[NSMutableString alloc] init]; - [oldString release]; - [logs setText:@""]; - } +- (id)init { + return [super initWithNibName:@"ConsoleViewController" bundle:[NSBundle mainBundle]]; } - (void)dealloc { + // Remove observer + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [logsView release]; + [super dealloc]; } +#pragma mark - UICompositeViewDelegate Functions + +static UICompositeViewDescription *compositeDescription = nil; + ++ (UICompositeViewDescription *)compositeViewDescription { + if(compositeDescription == nil) { + compositeDescription = [[UICompositeViewDescription alloc] init:@"ConsoleView" + content:@"ConsoleViewController" + stateBar:@"UIStateBar" + stateBarEnabled:true + tabBar:@"UIMainBar" + tabBarEnabled:true + fullscreen:false + landscapeMode:[LinphoneManager runningOnIpad] + portraitMode:true]; + } + return compositeDescription; +} + + +#pragma mark - ViewController Functions + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + [logsView loadHTMLString:@"
    " baseURL:nil];
    +}
    +
    +- (void)viewWillDisappear:(BOOL)animated {
    +    [super viewWillDisappear:animated];
    +    
    +    // Remove observer
    +    [[NSNotificationCenter defaultCenter] removeObserver:self
    +                                                    name:kLinphoneLogsUpdate
    +                                                  object:nil];
    +}
    +
    +- (void)viewDidLoad {
    +    [super viewDidLoad];
    +    
    +    [logsView setDelegate:self];
    +    
    +    UIEdgeInsets inset = {0, 0, 10, 0};
    +    [logsView.scrollView setContentInset:inset];
    +    [logsView.scrollView setScrollIndicatorInsets:inset];
    +    
    +    [logsView.scrollView setBounces:FALSE];
    +}
    +
    +
    +#pragma mark - UIWebViewDelegate Functions
    +
    +- (void)webViewDidFinishLoad:(UIWebView *)webView {
    +    NSString *logs = [[LinphoneManager instance].logs componentsJoinedByString:@"\\n"];
    +    [self addLog:logs scroll:TRUE];
    +    
    +    // Set observer
    +    [[NSNotificationCenter defaultCenter] addObserver:self
    +                                             selector:@selector(logsUpdateEvent:)
    +                                                 name:kLinphoneLogsUpdate
    +                                               object:nil];
    +}
    +
    +
    +#pragma mark - Event Functions
    +
    +- (void)logsUpdateEvent:(NSNotification*)notif {
    +    NSString *log = [notif.userInfo objectForKey: @"log"];
    +    [self addLog:log scroll:FALSE];
    +}
    +
    +
    +#pragma mark - 
    +
    +- (void)clear {
    +    NSString *js = @"document.getElementById('content').innerHTML += ''";
    +    [logsView stringByEvaluatingJavaScriptFromString:js];
    +}
    +
    +- (void)addLog:(NSString*)log scroll:(BOOL)scroll {
    +    NSMutableString *js = [NSMutableString stringWithFormat:@"document.getElementById('content').innerHTML += \"%@\\n\";", [log stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""]];
    +    if(scroll) {
    +        [js appendString:@"window.scrollTo(0, document.body.scrollHeight);"];
    +    }
    +    [logsView stringByEvaluatingJavaScriptFromString:js];
    +}
    +
     @end
    diff --git a/Classes/ConsoleViewController.xib b/Classes/ConsoleViewController.xib
    index 9b81061ea..2276a8ec7 100644
    --- a/Classes/ConsoleViewController.xib
    +++ b/Classes/ConsoleViewController.xib
    @@ -13,9 +13,8 @@
     		
     			YES
     			IBProxyObject
    -			IBUITextView
     			IBUIView
    -			IBUIViewController
    +			IBUIWebView
     		
     		
     			YES
    @@ -35,86 +34,40 @@
     				IBFirstResponder
     				IBCocoaTouchFramework
     			
    -			
    -				
    -					
    -					292
    -					
    -						YES
    -						
    -							
    -							274
    -							{320, 450}
    -							
    -							
    -							
    -								1
    -								MSAxIDEAA
    -							
    -							YES
    -							YES
    -							IBCocoaTouchFramework
    -							NO
    -							NO
    -							NO
    -							NO
    -							NO
    -							
    -							
    -								2
    -								IBCocoaTouchFramework
    -							
    -							
    -								1
    -								17
    -							
    -							
    -								Helvetica
    -								17
    -								16
    -							
    +			
    +				
    +				292
    +				
    +					YES
    +					
    +						
    +						274
    +						{320, 460}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
     						
    +						IBCocoaTouchFramework
     					
    -					{320, 460}
    -					
    -					
    -					
    -						3
    -						MQA
    -						
    -							2
    -						
    -					
    -					NO
    -					IBCocoaTouchFramework
     				
    -				
    -					1
    -					1
    +				{320, 460}
    +				
    +				
    +				
    +				
    +					3
    +					MCAwAA
     				
    +				NO
     				IBCocoaTouchFramework
    -				NO
     			
     		
     		
     			
     				YES
    -				
    -					
    -						logs
    -						
    -						
    -					
    -					9
    -				
    -				
    -					
    -						logsView
    -						
    -						
    -					
    -					13
    -				
     				
     					
     						view
    @@ -123,6 +76,14 @@
     					
     					14
     				
    +				
    +					
    +						logsView
    +						
    +						
    +					
    +					19
    +				
     			
     			
     				
    @@ -146,29 +107,20 @@
     						
     						
     					
    -					
    -						10
    -						
    -						
    -							YES
    -							
    -						
    -						
    -					
     					
     						4
     						
     						
     							YES
    -							
    +							
     						
    -						
    -						logView
    +						
     					
     					
    -						7
    -						
    +						18
    +						
     						
    +						logsView
     					
     				
     			
    @@ -180,10 +132,8 @@
     					-1.IBPluginDependency
     					-2.CustomClassName
     					-2.IBPluginDependency
    -					10.CustomClassName
    -					10.IBPluginDependency
    +					18.IBPluginDependency
     					4.IBPluginDependency
    -					7.IBPluginDependency
     				
     				
     					YES
    @@ -191,8 +141,6 @@
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     					UIResponder
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -					ConsoleViewController
    -					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -209,7 +157,7 @@
     				
     			
     			
    -			14
    +			19
     		
     		
     			
    @@ -218,35 +166,14 @@
     					ConsoleViewController
     					UIViewController
     					
    -						YES
    -						
    -							YES
    -							logs
    -							logsView
    -						
    -						
    -							YES
    -							UITextView
    -							UIView
    -						
    +						logsView
    +						UIWebView
     					
     					
    -						YES
    -						
    -							YES
    -							logs
    -							logsView
    -						
    -						
    -							YES
    -							
    -								logs
    -								UITextView
    -							
    -							
    -								logsView
    -								UIView
    -							
    +						logsView
    +						
    +							logsView
    +							UIWebView
     						
     					
     					
    diff --git a/Classes/ContactDetailsLabelViewController.xib b/Classes/ContactDetailsLabelViewController.xib
    index 838b54351..337923bac 100644
    --- a/Classes/ContactDetailsLabelViewController.xib
    +++ b/Classes/ContactDetailsLabelViewController.xib
    @@ -133,6 +133,7 @@
     						{{0, 59}, {320, 401}}
     						
     						
    +						
     						_NS:9
     						
     							10
    @@ -201,6 +202,10 @@ AAgACAAIAAEAAQABAAE
     						0.0
     						YES
     						NO
    +						0.0
    +						10
    +						0.0
    +						0.0
     						1
     						2
     						0
    @@ -350,7 +355,7 @@ AAgACAAIAAEAAQABAAE
     			
     				
     					ContactDetailsLabelViewController
    -					UIModalViewController
    +					UIViewController
     					
     						onBackClick:
     						id
    @@ -378,14 +383,6 @@ AAgACAAIAAEAAQABAAE
     						./Classes/ContactDetailsLabelViewController.h
     					
     				
    -				
    -					UIModalViewController
    -					UIViewController
    -					
    -						IBProjectSource
    -						./Classes/UIModalViewController.h
    -					
    -				
     			
     		
     		0
    diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib
    index 4f71c2019..3e234fe1f 100644
    --- a/Classes/ContactDetailsViewController.xib
    +++ b/Classes/ContactDetailsViewController.xib
    @@ -177,6 +177,7 @@
     						{{0, 59}, {320, 401}}
     						
     						
    +						
     						_NS:9
     						
     							10
    @@ -244,6 +245,10 @@ AAgACAAIAAEAAQABAAE
     						0.0
     						0.0
     						YES
    +						0.0
    +						10
    +						0.0
    +						0.0
     						1
     						2
     						0
    @@ -661,6 +666,17 @@ AAgACAAIAAEAAQABAAE
     				
     					UIContactDetailsHeader
     					UIViewController
    +					
    +						onAvatarClick:
    +						id
    +					
    +					
    +						onAvatarClick:
    +						
    +							onAvatarClick:
    +							id
    +						
    +					
     					
     						UILabel
     						UIImageView
    diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib
    index 1a98f54c2..33412ac1a 100644
    --- a/Classes/ContactsViewController.xib
    +++ b/Classes/ContactsViewController.xib
    @@ -48,6 +48,7 @@
     								{320, 58}
     								
     								
    +								
     								_NS:9
     								NO
     								IBCocoaTouchFramework
    @@ -101,7 +102,7 @@
     								{{214, 0}, {106, 58}}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -158,7 +159,7 @@
     								{108, 58}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -184,7 +185,7 @@
     						{320, 58}
     						
     						
    -						
    +						
     						_NS:9
     						
     							3
    @@ -201,6 +202,7 @@
     						{{0, 58}, {320, 402}}
     						
     						
    +						
     						_NS:10
     						
     							1
    @@ -214,6 +216,10 @@
     						0.0
     						YES
     						NO
    +						0.0
    +						10
    +						0.0
    +						0.0
     						1
     						0
     						YES
    diff --git a/Classes/HistoryViewController.xib b/Classes/HistoryViewController.xib
    index 832f4cb67..8761d07bb 100644
    --- a/Classes/HistoryViewController.xib
    +++ b/Classes/HistoryViewController.xib
    @@ -48,6 +48,7 @@
     								{320, 58}
     								
     								
    +								
     								_NS:9
     								NO
     								IBCocoaTouchFramework
    @@ -160,7 +161,7 @@
     						{320, 58}
     						
     						
    -						
    +						
     						_NS:9
     						
     							3
    @@ -177,6 +178,7 @@
     						{{0, 58}, {320, 402}}
     						
     						
    +						
     						_NS:9
     						
     							1
    @@ -189,6 +191,10 @@
     						0.0
     						0.0
     						YES
    +						0.0
    +						10
    +						0.0
    +						0.0
     						1
     						0
     						YES
    diff --git a/Classes/InCallViewController.xib b/Classes/InCallViewController.xib
    index d02849967..61b54f0d5 100644
    --- a/Classes/InCallViewController.xib
    +++ b/Classes/InCallViewController.xib
    @@ -52,6 +52,7 @@
     								301
     								{{-1000, -1000}, {2000, 2000}}
     								
    +								
     								
     								_NS:9
     								
    @@ -65,6 +66,7 @@
     								274
     								{320, 460}
     								
    +								
     								
     								_NS:196
     								
    @@ -78,6 +80,7 @@
     								283
     								{{220, 360}, {100, 100}}
     								
    +								
     								
     								
     								1
    @@ -88,6 +91,7 @@
     								301
     								{{141, 212}, {37, 37}}
     								
    +								
     								
     								_NS:1030
     								NO
    @@ -99,6 +103,7 @@
     						
     						{320, 460}
     						
    +						
     						
     						_NS:196
     						
    @@ -109,6 +114,7 @@
     						274
     						{{0, -10}, {320, 480}}
     						
    +						
     						
     						_NS:418
     						
    @@ -139,7 +145,7 @@
     						-2147483356
     						{{0, 23}, {85, 33}}
     						
    -						
    +						
     						_NS:9
     						NO
     						IBCocoaTouchFramework
    @@ -172,6 +178,7 @@
     				
     				{320, 460}
     				
    +				
     				
     				
     				NO
    @@ -438,7 +445,120 @@
     			
     			173
     		
    -		
    +		
    +			
    +				YES
    +				
    +					InCallTableViewController
    +					UITableViewController
    +					
    +						IBProjectSource
    +						./Classes/InCallTableViewController.h
    +					
    +				
    +				
    +					InCallViewController
    +					UIViewController
    +					
    +						YES
    +						
    +							YES
    +							callTableController
    +							callTableView
    +							testVideoView
    +							videoCameraSwitch
    +							videoGroup
    +							videoPreview
    +							videoView
    +							videoWaitingForFirstImage
    +						
    +						
    +							YES
    +							InCallTableViewController
    +							UITableView
    +							UIView
    +							UICamSwitch
    +							UIView
    +							UIView
    +							UIView
    +							UIActivityIndicatorView
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							callTableController
    +							callTableView
    +							testVideoView
    +							videoCameraSwitch
    +							videoGroup
    +							videoPreview
    +							videoView
    +							videoWaitingForFirstImage
    +						
    +						
    +							YES
    +							
    +								callTableController
    +								InCallTableViewController
    +							
    +							
    +								callTableView
    +								UITableView
    +							
    +							
    +								testVideoView
    +								UIView
    +							
    +							
    +								videoCameraSwitch
    +								UICamSwitch
    +							
    +							
    +								videoGroup
    +								UIView
    +							
    +							
    +								videoPreview
    +								UIView
    +							
    +							
    +								videoView
    +								UIView
    +							
    +							
    +								videoWaitingForFirstImage
    +								UIActivityIndicatorView
    +							
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/InCallViewController.h
    +					
    +				
    +				
    +					UICamSwitch
    +					UIButton
    +					
    +						preview
    +						UIView
    +					
    +					
    +						preview
    +						
    +							preview
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICamSwitch.h
    +					
    +				
    +			
    +		
     		0
     		IBCocoaTouchFramework
     		
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index 4046c724b..328980635 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -225,7 +225,11 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler);
     	
     	[changedDict release];
    -	changedDict=[[NSMutableDictionary alloc] init];
    +	changedDict = [[NSMutableDictionary alloc] init];
    +    
    +    // Post event
    +    NSDictionary *eventDic = [NSDictionary dictionaryWithObject:self forKey:@"settings"];
    +    [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneLogsUpdate object:self userInfo:eventDic];
     }
     
     - (void)setObject:(id)value forKey:(NSString *)key {
    @@ -516,6 +520,11 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
         
     	[changedDict release];
     	changedDict = [[NSMutableDictionary alloc] init];
    +    
    +    // Post event
    +    NSDictionary *eventDic = [NSDictionary dictionaryWithObject:self forKey:@"settings"];
    +    [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneLogsUpdate object:self userInfo:eventDic];
    +    
         return YES;
     }
     
    diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
    index f242163f9..0b435917a 100644
    --- a/Classes/LinphoneManager.h
    +++ b/Classes/LinphoneManager.h
    @@ -23,7 +23,6 @@
     #import 
     #import 
     
    -#import "LogView.h"
     #import "IASKSettingsReader.h"
     #import "IASKSettingsStore.h"
     #import "IASKAppSettingsViewController.h"
    @@ -32,12 +31,15 @@
     
     #include "linphonecore.h"
     
    +extern NSString *const kLinphoneDisplayStatusUpdate;
     extern NSString *const kLinphoneTextReceived;
     extern NSString *const kLinphoneTextReceivedSound;
     extern NSString *const kLinphoneCallUpdate;
     extern NSString *const kLinphoneRegistrationUpdate;
     extern NSString *const kLinphoneMainViewChange;
     extern NSString *const kLinphoneAddressBookUpdate;
    +extern NSString *const kLinphoneLogsUpdate;
    +extern NSString *const kLinphoneSettingsUpdate;
     
     extern NSString *const kContactSipField;
     
    @@ -126,6 +128,7 @@ typedef struct _LinphoneManagerSounds {
     @property (readonly) sqlite3* database;
     @property (nonatomic, retain) NSData *pushNotificationToken;
     @property (readonly) LinphoneManagerSounds sounds;
    +@property (readonly) NSMutableArray *logs;
     
     @end
     
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index 01d6a5aec..86bc26ace 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -38,12 +38,15 @@
     static LinphoneCore* theLinphoneCore = nil;
     static LinphoneManager* theLinphoneManager = nil;
     
    +NSString *const kLinphoneDisplayStatusUpdate = @"LinphoneDisplayStatusUpdate";
     NSString *const kLinphoneTextReceived = @"LinphoneTextReceived";
     NSString *const kLinphoneTextReceivedSound = @"LinphoneTextReceivedSound";
     NSString *const kLinphoneCallUpdate = @"LinphoneCallUpdate";
     NSString *const kLinphoneRegistrationUpdate = @"LinphoneRegistrationUpdate";
     NSString *const kLinphoneAddressBookUpdate = @"LinphoneAddressBookUpdate";
     NSString *const kLinphoneMainViewChange = @"LinphoneMainViewChange";
    +NSString *const kLinphoneLogsUpdate = @"LinphoneLogsUpdate";
    +NSString *const kLinphoneSettingsUpdate = @"LinphoneSettingsUpdate";
     NSString *const kContactSipField = @"SIP";
     
     extern void libmsilbc_init();
    @@ -76,6 +79,7 @@ extern  void libmsbcg729_init();
     @synthesize fastAddressBook;
     @synthesize pushNotificationToken;
     @synthesize sounds;
    +@synthesize logs;
     
     struct codec_name_pref_table{
         const char *name;
    @@ -195,6 +199,7 @@ struct codec_name_pref_table codec_pref_table[]={
                 }
             }
             inhibitedEvent = [[NSMutableArray alloc] init];
    +        logs = [[NSMutableArray alloc] init];
             database = NULL;
             settingsStore = nil;
     		self.defaultExpires = 600;
    @@ -216,6 +221,7 @@ struct codec_name_pref_table codec_pref_table[]={
         [fastAddressBook release];
         [self closeDatabase];
         [settingsStore release];
    +    [logs release];
         
         [super dealloc];
     }
    @@ -263,7 +269,15 @@ void linphone_iphone_log_handler(int lev, const char *fmt, va_list args){
     	NSString* format = [[NSString alloc] initWithUTF8String:fmt];
     	NSLogv(format, args);
     	NSString* formatedString = [[NSString alloc] initWithFormat:format arguments:args];
    -	//[[LinphoneManager instance] addLog:formatedString];
    +    
    +    dispatch_async(dispatch_get_main_queue(), ^{
    +        [[LinphoneManager instance].logs addObject:formatedString];
    +        
    +        // Post event
    +        NSDictionary *dict = [NSDictionary dictionaryWithObject:formatedString forKey:@"log"];
    +        [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneLogsUpdate object:[LinphoneManager instance] userInfo:dict];
    +    });
    +    
     	[formatedString release];
         [format release];
     }
    @@ -272,7 +286,14 @@ void linphone_iphone_log_handler(int lev, const char *fmt, va_list args){
     static void linphone_iphone_log(struct _LinphoneCore * lc, const char * message) {
     	NSString* log = [NSString stringWithCString:message encoding:[NSString defaultCStringEncoding]]; 
     	NSLog(log, NULL);
    -	//[[LinphoneManager instance] addLog:log];
    +    
    +    dispatch_async(dispatch_get_main_queue(), ^{
    +        [[LinphoneManager instance].logs addObject:log];
    +        
    +        // Post event
    +        NSDictionary *dict = [NSDictionary dictionaryWithObject:log forKey:@"log"];
    +        [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneLogsUpdate object:[LinphoneManager instance] userInfo:dict];
    +    });
     }
     
     
    @@ -280,10 +301,10 @@ static void linphone_iphone_log(struct _LinphoneCore * lc, const char * message)
     
     - (void)displayStatus:(NSString*) message {
         // Post event
    -    NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: 
    +    NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
                                message, @"message", 
    -                           nil] autorelease];
    -    [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneDisplayStatus" object:self userInfo:dict];
    +                           nil];
    +    [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneDisplayStatusUpdate object:self userInfo:dict];
     }
     
     
    @@ -330,11 +351,11 @@ static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char
         }
         
         // Post event
    -    NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: 
    +    NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
                                [NSValue valueWithPointer:call], @"call",
                                [NSNumber numberWithInt:state], @"state", 
    -                           [NSString stringWithUTF8String:message], @"message", nil] autorelease];
    -    [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneCallUpdate" object:self userInfo:dict];
    +                           [NSString stringWithUTF8String:message], @"message", nil];
    +    [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneCallUpdate object:self userInfo:dict];
     }
     
     static void linphone_iphone_call_state(LinphoneCore *lc, LinphoneCall* call, LinphoneCallState state,const char* message) {
    @@ -354,12 +375,12 @@ static void linphone_iphone_transfer_state_changed(LinphoneCore* lc, LinphoneCal
         [LinphoneLogger logc:LinphoneLoggerLog format:"NEW REGISTRATION STATE: '%s' (message: '%s')", linphone_registration_state_to_string(state), message];
         
         // Post event
    -    NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: 
    +    NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
                               [NSNumber numberWithInt:state], @"state", 
                               [NSValue valueWithPointer:cfg], @"cfg",
                               [NSString stringWithUTF8String:message], @"message", 
    -                          nil] autorelease];
    -    [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneRegistrationUpdate" object:self userInfo:dict];
    +                          nil];
    +    [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneRegistrationUpdate object:self userInfo:dict];
     }
     
     static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyConfig* cfg, LinphoneRegistrationState state,const char* message) {
    @@ -388,13 +409,13 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo
         ms_free(fromStr);
         
         // Post event
    -    NSDictionary* dict = [[[NSDictionary alloc] initWithObjectsAndKeys: 
    +    NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
                                [NSValue valueWithPointer:room], @"room", 
                                [NSValue valueWithPointer:from], @"from",
                                [NSString stringWithUTF8String:message], @"message", 
                                chat, @"chat", 
    -                           nil] autorelease];
    -    [[NSNotificationCenter defaultCenter] postNotificationName:@"LinphoneTextReceived" object:self userInfo:dict]; 
    +                           nil];
    +    [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneTextReceived object:self userInfo:dict];
         [chat release];
     }
     
    diff --git a/Classes/LinphoneUI/LogView.h b/Classes/LinphoneUI/LogView.h
    deleted file mode 100644
    index ea2eddaaa..000000000
    --- a/Classes/LinphoneUI/LogView.h
    +++ /dev/null
    @@ -1,27 +0,0 @@
    -/* LogView.h
    - *
    - * Copyright (C) 2011  Belledonne Comunications, Grenoble, France
    - *
    - *  This program is free software; you can redistribute it and/or modify
    - *  it under the terms of the GNU General Public License as published by
    - *  the Free Software Foundation; either version 2 of the License, or   
    - *  (at your option) any later version.                                 
    - *                                                                      
    - *  This program is distributed in the hope that it will be useful,     
    - *  but WITHOUT ANY WARRANTY; without even the implied warranty of      
    - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       
    - *  GNU General Public License for more details.                
    - *                                                                      
    - *  You should have received a copy of the GNU General Public License   
    - *  along with this program; if not, write to the Free Software         
    - *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    - */     
    -
    -#import 
    -
    -
    -@protocol LogView
    --(void) addLog:(NSString*) log;
    -
    -@end
    -
    diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h
    index a80b60d92..c3aee2c38 100644
    --- a/Classes/PhoneMainView.h
    +++ b/Classes/PhoneMainView.h
    @@ -38,6 +38,7 @@
     #import "FirstLoginViewController.h"
     #import "WizardViewController.h"
     #import "IncomingCallViewController.h"
    +#import "ConsoleViewController.h"
     
     @interface PhoneMainView : UIViewController {
         @private
    diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m
    index b8aa97e46..7f05ae5e2 100644
    --- a/Classes/PhoneMainView.m
    +++ b/Classes/PhoneMainView.m
    @@ -479,7 +479,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
     }
     
     - (UIViewController*)_changeCurrentView:(UICompositeViewDescription*)view transition:(CATransition*)transition force:(BOOL)force {
    -    [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: change view %d", [view name]];
    +    [LinphoneLogger logc:LinphoneLoggerLog format:"PhoneMainView: Change current view to %@", [view name]];
         
         if(force || ![view equal: currentView]) {
             if(transition == nil)
    diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
    index 25936e47f..8939bcc41 100644
    --- a/Classes/SettingsViewController.m
    +++ b/Classes/SettingsViewController.m
    @@ -451,6 +451,15 @@ static UICompositeViewDescription *compositeDescription = nil;
                 [hiddenKeys addObject:@"ice_preference"];
             }
             [settingsController setHiddenKeys:hiddenKeys animated:TRUE];
    +    } else if ([@"debugenable_preference" compare: notif.object] == NSOrderedSame) {
    +        NSMutableSet *hiddenKeys = [NSMutableSet setWithSet:[settingsController hiddenKeys]];
    +        BOOL debugEnable = [[notif.userInfo objectForKey:@"debugenable_preference"] boolValue];
    +        if (debugEnable) {
    +            [hiddenKeys removeObject:@"console_button"];
    +        } else {
    +            [hiddenKeys addObject:@"console_button"];
    +        }
    +        [settingsController setHiddenKeys:hiddenKeys animated:TRUE];
         }
     }
     
    @@ -493,6 +502,7 @@ static UICompositeViewDescription *compositeDescription = nil;
             [hiddenKeys addObject:@"video_menu"];
         }
         
    +    
         [hiddenKeys addObjectsFromArray:[[LinphoneManager unsupportedCodecs] allObjects]];
         
         if([[[[LinphoneManager instance] settingsStore] objectForKey:@"random_port_preference"] boolValue]) {
    @@ -503,6 +513,10 @@ static UICompositeViewDescription *compositeDescription = nil;
             [hiddenKeys addObject:@"ice_preference"];
         }
     
    +    if(![[[[LinphoneManager instance] settingsStore] objectForKey:@"debugenable_preference"] boolValue]) {
    +        [hiddenKeys addObject:@"console_button"];
    +    }
    +    
         return hiddenKeys;
     }
     
    @@ -524,5 +538,8 @@ static UICompositeViewDescription *compositeDescription = nil;
             [[PhoneMainView instance].mainViewController clearCache];
         }
     #endif
    +    if([key isEqual:@"console_button"]) {
    +        [[PhoneMainView instance] changeCurrentView:[ConsoleViewController compositeViewDescription] push:TRUE];
    +    }
     }
     @end
    diff --git a/Settings/InAppSettings.bundle/Advanced.plist b/Settings/InAppSettings.bundle/Advanced.plist
    index 675b6f29c..5daa482cb 100644
    --- a/Settings/InAppSettings.bundle/Advanced.plist
    +++ b/Settings/InAppSettings.bundle/Advanced.plist
    @@ -4,6 +4,12 @@
     
     	PreferenceSpecifiers
     	
    +		
    +			Title
    +			Debug
    +			Type
    +			PSGroupSpecifier
    +		
     		
     			DefaultValue
     			
    @@ -14,6 +20,20 @@
     			Type
     			PSToggleSwitchSpecifier
     		
    +		
    +			Key
    +			console_button
    +			Title
    +			Console
    +			Type
    +			IASKButtonSpecifier
    +		
    +		
    +			Title
    +			
    +			Type
    +			PSGroupSpecifier
    +		
     		
     			DefaultValue
     			
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index 33fbf5011..b8316ada6 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -1329,7 +1329,6 @@
     		2214EB8812F84EBB002A5394 /* UIHangUpButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIHangUpButton.m; sourceTree = ""; };
     		2214EBF112F86360002A5394 /* UIMicroButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIMicroButton.h; sourceTree = ""; };
     		2214EBF212F86360002A5394 /* UIMicroButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMicroButton.m; sourceTree = ""; };
    -		2218A5CE12F973450088A667 /* LogView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LogView.h; sourceTree = ""; };
     		2218A92212FBE1340088A667 /* FirstLoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstLoginViewController.h; sourceTree = ""; };
     		2218A92312FBE1340088A667 /* FirstLoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = FirstLoginViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
     		2218A92412FBE1340088A667 /* FirstLoginViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FirstLoginViewController.xib; sourceTree = ""; };
    @@ -2428,7 +2427,6 @@
     		2214EB7012F84668002A5394 /* LinphoneUI */ = {
     			isa = PBXGroup;
     			children = (
    -				2218A5CE12F973450088A667 /* LogView.h */,
     				D35E757F159328EA0066B1C1 /* UIAddressTextField.h */,
     				D35E7580159328EB0066B1C1 /* UIAddressTextField.m */,
     				22C7555E1317E59C007BC101 /* UIBluetoothButton.h */,
    @@ -4589,6 +4587,7 @@
     			isa = XCBuildConfiguration;
     			buildSettings = {
     				ALWAYS_SEARCH_USER_PATHS = NO;
    +				COMPRESS_PNG_FILES = NO;
     				COPY_PHASE_STRIP = NO;
     				FRAMEWORK_SEARCH_PATHS = "";
     				GCC_C_LANGUAGE_STANDARD = c99;
    @@ -4637,6 +4636,7 @@
     			isa = XCBuildConfiguration;
     			buildSettings = {
     				ALWAYS_SEARCH_USER_PATHS = NO;
    +				COMPRESS_PNG_FILES = NO;
     				COPY_PHASE_STRIP = NO;
     				FRAMEWORK_SEARCH_PATHS = "";
     				GCC_C_LANGUAGE_STANDARD = c99;
    @@ -4685,6 +4685,7 @@
     			buildSettings = {
     				ALWAYS_SEARCH_USER_PATHS = NO;
     				CODE_SIGN_ENTITLEMENTS = "";
    +				COMPRESS_PNG_FILES = NO;
     				COPY_PHASE_STRIP = NO;
     				FRAMEWORK_SEARCH_PATHS = "";
     				GCC_C_LANGUAGE_STANDARD = c99;
    @@ -4733,6 +4734,7 @@
     			buildSettings = {
     				ALWAYS_SEARCH_USER_PATHS = NO;
     				CODE_SIGN_ENTITLEMENTS = "";
    +				COMPRESS_PNG_FILES = NO;
     				COPY_PHASE_STRIP = NO;
     				FRAMEWORK_SEARCH_PATHS = "";
     				GCC_C_LANGUAGE_STANDARD = c99;
    
    From 8a6cb02ced78f169a075d7f6499dd50f5e553797 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Mon, 27 Aug 2012 13:47:34 +0200
    Subject: [PATCH 170/397] update linphone submodule
    
    ---
     submodules/linphone | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/submodules/linphone b/submodules/linphone
    index 1438d4f59..199108c92 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit 1438d4f5911aa692b862b04e421eb48de3147b00
    +Subproject commit 199108c92435cc0f7daf3dd8f6bdc6d9830b3af0
    
    From 47eb66123098b3575adc2db98fa0f6e6796f6940 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Mon, 27 Aug 2012 14:53:27 +0200
    Subject: [PATCH 171/397] fix network_reachable
    
    ---
     Classes/LinphoneUI/UIStateBar.m | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m
    index aa686e2ea..25877646e 100644
    --- a/Classes/LinphoneUI/UIStateBar.m
    +++ b/Classes/LinphoneUI/UIStateBar.m
    @@ -125,7 +125,7 @@ NSTimer *callSecurityTimer;
     
         if (config == NULL) {
             state = LinphoneRegistrationNone;
    -        if(![LinphoneManager isLcReady] || linphone_core_is_network_reachabled([LinphoneManager getLc]))
    +        if(![LinphoneManager isLcReady] || linphone_core_is_network_reachable([LinphoneManager getLc]))
                 message = NSLocalizedString(@"No SIP account configured", nil);
             else
                 message = NSLocalizedString(@"Network down", nil);
    
    From e1a1c50f8191c599b798c0c50944063552ed11f9 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Mon, 27 Aug 2012 14:55:10 +0200
    Subject: [PATCH 172/397] again
    
    ---
     Classes/LinphoneManager.m | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index 86bc26ace..a58e6a591 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -848,7 +848,7 @@ static LinphoneCoreVTable linphonec_vtable = {
     #pragma mark - Call Functions
     
     - (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer {
    -    if (!linphone_core_is_network_reachabled(theLinphoneCore)) {
    +    if (!linphone_core_is_network_reachable(theLinphoneCore)) {
     		UIAlertView* error = [[UIAlertView alloc]	initWithTitle:NSLocalizedString(@"Network Error",nil)
     														message:NSLocalizedString(@"There is no network connection available, enable WIFI or WWAN prior to place a call",nil) 
     													   delegate:nil 
    
    From 29fc612417d20eef6738439922a38150ca5da7cb Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Mon, 27 Aug 2012 15:33:43 +0200
    Subject: [PATCH 173/397] fix bug with srtp/zrtp switch
    
    ---
     Classes/LinphoneCoreSettingsStore.m | 4 ++--
     1 file changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index 328980635..7d7ea463d 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -173,10 +173,10 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		LinphoneMediaEncryption menc=linphone_core_get_media_encryption(lc);
     		const char *val;
     		switch(menc){
    -			LinphoneMediaEncryptionSRTP:
    +			case LinphoneMediaEncryptionSRTP:
     				val="SRTP";
     				break;
    -			LinphoneMediaEncryptionZRTP:
    +			case LinphoneMediaEncryptionZRTP:
     				val="ZRTP";
     				break;
     			default:
    
    From bab0498d4a7f34487f8034abc4395ca05f279d79 Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Tue, 28 Aug 2012 17:33:06 +0200
    Subject: [PATCH 174/397] -change navigation bar from 56 to 44 -add possibility
     to start a chat session by entering a username -fix speaker button -add erase
     all button to history
    
    ---
     Classes/ChatRoomViewController.h              |   3 +-
     Classes/ChatRoomViewController.m              |  58 +-
     Classes/ChatRoomViewController.xib            | 722 ++++++++++--------
     Classes/ChatViewController.h                  |   3 +-
     Classes/ChatViewController.m                  |  24 +-
     Classes/ChatViewController.xib                | 135 +++-
     Classes/ContactDetailsLabelViewController.xib |  22 +-
     Classes/ContactDetailsViewController.xib      |  40 +-
     Classes/ContactsViewController.xib            |  26 +-
     Classes/HistoryDetailsViewController.xib      |  25 +-
     Classes/HistoryTableViewController.h          |   1 +
     Classes/HistoryViewController.h               |   2 +
     Classes/HistoryViewController.m               |   9 +
     Classes/HistoryViewController.xib             | 121 ++-
     Classes/LinphoneUI/UISpeakerButton.m          |  16 +-
     Classes/SettingsViewController.m              |   2 +-
     Resources/chat_add_default.png                | Bin 7658 -> 4819 bytes
     Resources/chat_add_over.png                   | Bin 6706 -> 4255 bytes
     Resources/chat_back_default.png               | Bin 4647 -> 2613 bytes
     Resources/chat_back_over.png                  | Bin 4368 -> 2345 bytes
     Resources/chat_edit_default.png               | Bin 4596 -> 2452 bytes
     Resources/chat_edit_over.png                  | Bin 4284 -> 2179 bytes
     Resources/chat_ok_default.png                 | Bin 4336 -> 2151 bytes
     Resources/chat_ok_over.png                    | Bin 4006 -> 2003 bytes
     Resources/contact_back_default.png            | Bin 4647 -> 2595 bytes
     Resources/contact_back_over.png               | Bin 4368 -> 2327 bytes
     Resources/contact_cancel_default.png          | Bin 6587 -> 6430 bytes
     Resources/contact_cancel_over.png             | Bin 4527 -> 4386 bytes
     Resources/contact_edit_default.png            | Bin 4596 -> 2434 bytes
     Resources/contact_edit_over.png               | Bin 4284 -> 2161 bytes
     Resources/contact_ok_default.png              | Bin 4336 -> 2133 bytes
     Resources/contact_ok_disabled.png             | Bin 2159 -> 2045 bytes
     Resources/contacts_add_default.png            | Bin 5917 -> 3372 bytes
     Resources/contacts_add_over.png               | Bin 5387 -> 2974 bytes
     Resources/history_details_add_default.png     | Bin 4147 -> 3987 bytes
     Resources/history_details_add_over.png        | Bin 3780 -> 3618 bytes
     Resources/history_details_back_default.png    | Bin 4647 -> 2613 bytes
     Resources/history_details_back_over.png       | Bin 4368 -> 2447 bytes
     Resources/history_edit_default.png            | Bin 4693 -> 2457 bytes
     Resources/history_edit_over.png               | Bin 4306 -> 2264 bytes
     Resources/history_ok_default.png              | Bin 4098 -> 1953 bytes
     Resources/history_ok_over.png                 | Bin 3845 -> 1916 bytes
     linphone.xcodeproj/project.pbxproj            |  13 +-
     .../liblinphone.xcodeproj/project.pbxproj     |  11 +-
     44 files changed, 752 insertions(+), 481 deletions(-)
    
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index 350aede1c..c39d7d93d 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -34,12 +34,13 @@
     
     @property (nonatomic, retain) IBOutlet ChatRoomTableViewController* tableController;
     @property (nonatomic, retain) IBOutlet UIToggleButton *editButton;
    -@property (nonatomic, retain) IBOutlet UITextField* messageField;
    +@property (nonatomic, retain) IBOutlet UITextView* messageField;
     @property (nonatomic, retain) IBOutlet UIButton* sendButton;
     @property (nonatomic, retain) IBOutlet UILabel *addressLabel;
     @property (nonatomic, retain) IBOutlet UIImageView *avatarImage;
     @property (nonatomic, retain) IBOutlet UIView *headerView;
     @property (nonatomic, retain) IBOutlet UIView *footerView;
    +@property (nonatomic, retain) IBOutlet UIView *chatView;
     @property (nonatomic, retain) IBOutlet UIImageView *fieldBackgroundImage;
     @property (nonatomic, copy) NSString *remoteAddress;
     
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index ba620059b..7d945b531 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -33,6 +33,7 @@
     @synthesize avatarImage;
     @synthesize headerView;
     @synthesize footerView;
    +@synthesize chatView;
     @synthesize fieldBackgroundImage;
     
     
    @@ -73,7 +74,7 @@ static UICompositeViewDescription *compositeDescription = nil;
                                                                    stateBar:nil 
                                                             stateBarEnabled:false 
                                                                      tabBar:@"UIMainBar" 
    -                                                          tabBarEnabled:true 
    +                                                          tabBarEnabled:false /*to keep room for chat*/
                                                                  fullscreen:false
                                                               landscapeMode:[LinphoneManager runningOnIpad]
                                                                portraitMode:true];
    @@ -108,7 +109,11 @@ static UICompositeViewDescription *compositeDescription = nil;
                                                  selector:@selector(textReceivedEvent:) 
                                                      name:kLinphoneTextReceived
                                                    object:nil];
    -    if([tableController isEditing])
    +    [[NSNotificationCenter defaultCenter] addObserver:self 
    +											 selector:@selector(onMessageChange:) 
    +												 name:UITextViewTextDidChangeNotification 
    +											   object:nil];
    +	if([tableController isEditing])
             [tableController setEditing:FALSE animated:FALSE];
         [editButton setOff];
         [[tableController tableView] reloadData];
    @@ -132,6 +137,9 @@ static UICompositeViewDescription *compositeDescription = nil;
         [[NSNotificationCenter defaultCenter] removeObserver:self 
                                                         name:kLinphoneTextReceived
                                                         object:nil];
    +	[[NSNotificationCenter defaultCenter] removeObserver:self 
    +                                                    name:UITextViewTextDidChangeNotification
    +												  object:nil];
     }
     
     -(void)didReceiveMemoryWarning {
    @@ -189,7 +197,20 @@ static UICompositeViewDescription *compositeDescription = nil;
             return FALSE;
         }
         if(chatRoom == NULL) {
    -        chatRoom = linphone_core_create_chat_room([LinphoneManager getLc], [remoteAddress UTF8String]);
    +		LinphoneProxyConfig* proxyCfg;
    +		linphone_core_get_default_proxy([LinphoneManager getLc], &proxyCfg);
    +		if (![remoteAddress hasPrefix:@"sip:"] && proxyCfg) {
    +			//hmm probably a username only
    +			char normalizedUserName[256];
    +			LinphoneAddress* linphoneAddress = linphone_address_new(linphone_core_get_identity([LinphoneManager getLc]));  
    +			linphone_proxy_config_normalize_number(proxyCfg,[remoteAddress cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName));
    +			linphone_address_set_username(linphoneAddress, normalizedUserName);
    +			remoteAddress=[NSString stringWithUTF8String:normalizedUserName];
    +			linphone_address_destroy(linphoneAddress);
    +			
    +		}
    +
    +		chatRoom = linphone_core_create_chat_room([LinphoneManager getLc], [remoteAddress UTF8String]);
         }
         
         // Save message in database
    @@ -271,7 +292,7 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     - (void)keyboardWillHide:(NSNotification *)notif {
         //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
    -    //CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    +    CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
         UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue];
         NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
         [UIView beginAnimations:@"resize" context:nil];
    @@ -280,9 +301,9 @@ static UICompositeViewDescription *compositeDescription = nil;
         [UIView setAnimationBeginsFromCurrentState:TRUE];
         
         // Move view
    -    CGRect frame = [[self view] frame];
    -    frame.origin.y = 0;
    -    [[self view] setFrame:frame];
    +    CGRect frame = [[self chatView/*view*/] frame];
    +    frame.origin.y = frame.origin.y + endFrame.size.height /*0*/;
    +    [[self /*view*/chatView] setFrame:frame];
         
         // Resize table view
         CGRect tableFrame = [tableController.view frame];
    @@ -311,25 +332,26 @@ static UICompositeViewDescription *compositeDescription = nil;
         
         // Move view
         {
    -        CGRect frame = [[self view] frame];
    -        CGRect rect = [PhoneMainView instance].view.bounds;
    -        CGPoint pos = {frame.size.width, frame.size.height};
    -        CGPoint gPos = [self.view convertPoint:pos toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; // Bypass IOS bug on landscape mode
    -        frame.origin.y = (rect.size.height - gPos.y - endFrame.size.height);
    +        CGRect frame = [[self chatView/*view*/] frame];
    +       // CGRect rect = [PhoneMainView instance].view.bounds;
    +		
    +       // CGPoint pos = {frame.size.width, frame.size.height};
    +       // CGPoint gPos = [self.view convertPoint:pos toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; // Bypass IOS bug on landscape mode
    +        frame.origin.y = /*(rect.size.height - gPos.y*/ frame.origin.y - endFrame.size.height;
             if(frame.origin.y > 0) frame.origin.y = 0;
    -        [[self view] setFrame:frame];
    +        [[self chatView] setFrame:frame];
         }
         
         // Resize table view
         {
    -        CGPoint pos = {0, 0};
    -        CGPoint gPos = [[self.view superview] convertPoint:pos toView:self.view];
    +        /*CGPoint pos = {0, 0};
    +        CGPoint gPos = [[self.view superview] convertPoint:pos toView:self.view];*/
             CGRect tableFrame = [tableController.view frame];
    -        tableFrame.origin.y = gPos.y;
    -        tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y;
    +        tableFrame.origin.y += endFrame.size.height - headerView.frame.size.height/*gPos.y*/;
    +        tableFrame.size.height = tableFrame.size.height - endFrame.size.height+headerView.frame.size.height;
             [tableController.view setFrame:tableFrame];
         }
    -    
    +
         // Scroll
         int lastSection = [tableController.tableView numberOfSections] -1;
         if(lastSection >= 0) {
    diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib
    index 140f53cfe..fa18a7f31 100644
    --- a/Classes/ChatRoomViewController.xib
    +++ b/Classes/ChatRoomViewController.xib
    @@ -3,22 +3,23 @@
     	
     		1296
     		11E53
    -		2549
    +		2182
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1181
     		
     		
    -			IBProxyObject
    -			IBUIButton
    +			IBUIView
     			IBUIImageView
     			IBUILabel
    -			IBUITableView
    -			IBUITableViewController
    +			IBProxyObject
     			IBUITextField
    -			IBUIView
    +			IBUITableViewController
    +			IBUITableView
    +			IBUITextView
    +			IBUIButton
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -40,6 +41,258 @@
     				
     				292
     				
    +					
    +						
    +						310
    +						
    +							
    +								
    +								290
    +								
    +									
    +										
    +										292
    +										{{-13, -5}, {131, 107}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											avatar_shadow_small.png
    +										
    +									
    +									
    +										
    +										292
    +										{{20, 6}, {65, 65}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											avatar_unknown_small.png
    +										
    +									
    +									
    +										
    +										290
    +										{{101, 37}, {199, 43}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										YES
    +										7
    +										NO
    +										IBCocoaTouchFramework
    +										Contact1
    +										
    +											3
    +											MC4zMzMzMzMzMzMzAA
    +										
    +										
    +										0
    +										10
    +										
    +											1
    +											22
    +										
    +										
    +											Helvetica
    +											22
    +											16
    +										
    +									
    +								
    +								{320, 80}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MCAwAA
    +								
    +								YES
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								274
    +								{{0, 80}, {320, 277}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MQA
    +								
    +								YES
    +								IBCocoaTouchFramework
    +								YES
    +								0
    +								YES
    +								44
    +								22
    +								22
    +							
    +							
    +								
    +								266
    +								
    +									
    +										
    +										257
    +										{{250, 0}, {70, 59}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Missed
    +										
    +										IBCocoaTouchFramework
    +										NO
    +										0
    +										0
    +										NO
    +										NO
    +										
    +											3
    +											MC41AA
    +										
    +										
    +											NSImage
    +											chat_send_over.png
    +										
    +										
    +											NSImage
    +											chat_send_disabled.png
    +										
    +										
    +											NSImage
    +											chat_send_default.png
    +										
    +										
    +											2
    +											15
    +										
    +										
    +											Helvetica-Bold
    +											15
    +											16
    +										
    +									
    +									
    +										
    +										258
    +										{250, 59}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											chat_field.png
    +										
    +									
    +									
    +										
    +										-2147483390
    +										{{10, 10}, {230, 39}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										YES
    +										IBCocoaTouchFramework
    +										0
    +										
    +										Type your message here
    +										
    +											3
    +											MAA
    +											
    +												2
    +											
    +										
    +										17
    +										
    +											2
    +											2
    +											IBCocoaTouchFramework
    +										
    +										
    +											1
    +											18
    +										
    +										
    +											Helvetica
    +											18
    +											16
    +										
    +									
    +									
    +										
    +										292
    +										{{10, 10}, {230, 39}}
    +										
    +										
    +										
    +										_NS:9
    +										YES
    +										YES
    +										
    +											
    +										
    +										IBCocoaTouchFramework
    +										YES
    +										
    +										
    +											2
    +											IBCocoaTouchFramework
    +										
    +										
    +										
    +									
    +								
    +								{{0, 357}, {320, 59}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MQA
    +									
    +								
    +								IBCocoaTouchFramework
    +							
    +						
    +						{{0, 44}, {320, 416}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +						
    +						IBCocoaTouchFramework
    +					
     					
     						
     						290
    @@ -47,7 +300,7 @@
     							
     								
     								290
    -								{320, 58}
    +								{320, 44}
     								
     								
     								
    @@ -62,7 +315,7 @@
     							
     								
     								292
    -								{160, 58}
    +								{160, 44}
     								
     								
     								
    @@ -75,10 +328,7 @@
     								0
     								0
     								NO
    -								
    -									3
    -									MC41AA
    -								
    +								
     								
     									NSImage
     									chat_back_over.png
    @@ -87,23 +337,16 @@
     									NSImage
     									chat_back_default.png
     								
    -								
    -									2
    -									15
    -								
    -								
    -									Helvetica-Bold
    -									15
    -									16
    -								
    +								
    +								
     							
     							
     								
     								289
    -								{{160, 0}, {160, 58}}
    +								{{160, 0}, {160, 44}}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -127,216 +370,14 @@
     									chat_edit_default.png
     								
     								
    -								
    +								
     							
     						
    -						{320, 58}
    +						{320, 44}
     						
     						
     						
     						_NS:9
    -						
    -							3
    -							MQA
    -							
    -								2
    -							
    -						
    -						IBCocoaTouchFramework
    -					
    -					
    -						
    -						290
    -						
    -							
    -								
    -								292
    -								{{-13, -5}, {131, 107}}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								IBCocoaTouchFramework
    -								
    -									NSImage
    -									avatar_shadow_small.png
    -								
    -							
    -							
    -								
    -								292
    -								{{20, 6}, {65, 65}}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								IBCocoaTouchFramework
    -								
    -									NSImage
    -									avatar_unknown_small.png
    -								
    -							
    -							
    -								
    -								290
    -								{{101, 37}, {199, 43}}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								YES
    -								7
    -								NO
    -								IBCocoaTouchFramework
    -								Contact1
    -								
    -									3
    -									MC4zMzMzMzMzMzMzAA
    -								
    -								
    -								0
    -								10
    -								
    -									1
    -									22
    -								
    -								
    -									Helvetica
    -									22
    -									16
    -								
    -							
    -						
    -						{{0, 58}, {320, 80}}
    -						
    -						
    -						
    -						_NS:9
    -						
    -							3
    -							MCAwAA
    -						
    -						YES
    -						IBCocoaTouchFramework
    -					
    -					
    -						
    -						274
    -						{{0, 138}, {320, 263}}
    -						
    -						
    -						
    -						_NS:9
    -						
    -							3
    -							MQA
    -						
    -						YES
    -						IBCocoaTouchFramework
    -						YES
    -						0
    -						YES
    -						44
    -						22
    -						22
    -					
    -					
    -						
    -						266
    -						
    -							
    -								
    -								257
    -								{{250, 0}, {70, 59}}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								
    -									Missed
    -								
    -								IBCocoaTouchFramework
    -								NO
    -								0
    -								0
    -								NO
    -								NO
    -								
    -								
    -									NSImage
    -									chat_send_over.png
    -								
    -								
    -									NSImage
    -									chat_send_disabled.png
    -								
    -								
    -									NSImage
    -									chat_send_default.png
    -								
    -								
    -								
    -							
    -							
    -								
    -								258
    -								{250, 59}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								IBCocoaTouchFramework
    -								
    -									NSImage
    -									chat_field.png
    -								
    -							
    -							
    -								
    -								258
    -								{{10, 10}, {230, 39}}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								YES
    -								IBCocoaTouchFramework
    -								0
    -								
    -								Type your message here
    -								
    -									3
    -									MAA
    -									
    -								
    -								YES
    -								17
    -								
    -									2
    -									IBCocoaTouchFramework
    -								
    -								
    -									1
    -									18
    -								
    -								
    -									Helvetica
    -									18
    -									16
    -								
    -							
    -						
    -						{{0, 401}, {320, 59}}
    -						
    -						
    -						
    -						_NS:9
     						
     							3
     							MQA
    @@ -374,22 +415,6 @@
     					
     					11
     				
    -				
    -					
    -						messageField
    -						
    -						
    -					
    -					26
    -				
    -				
    -					
    -						sendButton
    -						
    -						
    -					
    -					27
    -				
     				
     					
     						tableController
    @@ -414,6 +439,14 @@
     					
     					43
     				
    +				
    +					
    +						headerView
    +						
    +						
    +					
    +					45
    +				
     				
     					
     						avatarImage
    @@ -424,11 +457,11 @@
     				
     				
     					
    -						headerView
    +						fieldBackgroundImage
     						
    -						
    +						
     					
    -					45
    +					48
     				
     				
     					
    @@ -440,11 +473,27 @@
     				
     				
     					
    -						fieldBackgroundImage
    +						sendButton
     						
    -						
    +						
     					
    -					48
    +					27
    +				
    +				
    +					
    +						chatView
    +						
    +						
    +					
    +					54
    +				
    +				
    +					
    +						messageField
    +						
    +						
    +					
    +					57
     				
     				
     					
    @@ -489,23 +538,6 @@
     					
     					25
     				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					20
    -				
    -				
    -					
    -						onMessageChange:
    -						
    -						
    -						18
    -					
    -					28
    -				
     				
     					
     						view
    @@ -539,9 +571,7 @@
     						
     						
     							
    -							
    -							
    -							
    +							
     						
     						
     					
    @@ -556,13 +586,6 @@
     						
     						toolsView
     					
    -					
    -						8
    -						
    -						
    -						
    -						tableView
    -					
     					
     						9
     						
    @@ -575,64 +598,40 @@
     						
     						editButton
     					
    -					
    -						14
    -						
    -						
    -							
    -							
    -							
    -						
    -						
    -						footerView
    -					
    -					
    -						15
    -						
    -						
    -						sendButton
    -					
    -					
    -						19
    -						
    -						
    -						messageField
    -					
    -					
    -						21
    -						
    -						
    -						fieldBackgroundImage
    -					
     					
     						29
     						
     						
     						tableController
     					
    +					
    +						47
    +						
    +						
    +						background
    +					
    +					
    +						49
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						chatView
    +					
     					
     						39
     						
     						
    -							
    -							
     							
    +							
    +							
     						
    -						
    +						
     						headerView
     					
    -					
    -						42
    -						
    -						
    -						avatarShadowBackground
    -					
    -					
    -						41
    -						
    -						
    -						avatarImage
    -					
     					
     						40
     						
    @@ -640,10 +639,58 @@
     						addressLabel
     					
     					
    -						47
    -						
    -						
    -						background
    +						41
    +						
    +						
    +						avatarImage
    +					
    +					
    +						42
    +						
    +						
    +						avatarShadowBackground
    +					
    +					
    +						8
    +						
    +						
    +						tableView
    +					
    +					
    +						14
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						footerView
    +					
    +					
    +						21
    +						
    +						
    +						fieldBackgroundImage
    +					
    +					
    +						15
    +						
    +						
    +						sendButton
    +					
    +					
    +						55
    +						
    +						
    +						messageField
    +					
    +					
    +						19
    +						
    +						
    +						messageFieldOld
     					
     				
     			
    @@ -667,6 +714,8 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -677,7 +726,7 @@
     			
     			
     			
    -			48
    +			57
     		
     		
     			
    @@ -719,11 +768,12 @@
     					
     						UILabel
     						UIImageView
    +						UIView
     						UIToggleButton
     						UIImageView
     						UIView
     						UIView
    -						UITextField
    +						UITextView
     						UIButton
     						ChatRoomTableViewController
     					
    @@ -736,6 +786,10 @@
     							avatarImage
     							UIImageView
     						
    +						
    +							chatView
    +							UIView
    +						
     						
     							editButton
     							UIToggleButton
    @@ -754,7 +808,7 @@
     						
     						
     							messageField
    -							UITextField
    +							UITextView
     						
     						
     							sendButton
    @@ -791,17 +845,17 @@
     		
     			{262, 214}
     			{131, 131}
    -			{320, 117}
    -			{320, 117}
    -			{320, 117}
    -			{320, 117}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
     			{500, 117}
    -			{320, 117}
    +			{320, 88}
     			{140, 117}
     			{140, 117}
     			{140, 117}
     			{5, 117}
     		
    -		1498
    +		1181
     	
     
    diff --git a/Classes/ChatViewController.h b/Classes/ChatViewController.h
    index 17f56d4db..1ac291235 100644
    --- a/Classes/ChatViewController.h
    +++ b/Classes/ChatViewController.h
    @@ -24,11 +24,12 @@
     #import "ChatTableViewController.h"
     #import "UICompositeViewController.h"
     
    -@interface ChatViewController : UIViewController {
    +@interface ChatViewController : UIViewController {
     }
     
     @property (nonatomic, retain) IBOutlet ChatTableViewController* tableController;
     @property (nonatomic, retain) IBOutlet UIToggleButton *editButton;
    +@property (nonatomic, retain) IBOutlet UITextField *addressField;
     
     - (IBAction)onAddClick:(id) event;
     - (IBAction)onEditClick:(id) event;
    diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m
    index 51c636024..190d9e5a8 100644
    --- a/Classes/ChatViewController.m
    +++ b/Classes/ChatViewController.m
    @@ -25,6 +25,7 @@
     
     @synthesize tableController;
     @synthesize editButton;
    +@synthesize addressField;
     
     #pragma mark - Lifecycle Functions
     
    @@ -103,14 +104,29 @@ static UICompositeViewDescription *compositeDescription = nil;
     #pragma mark - Action Functions
     
     - (IBAction)onAddClick:(id)event {
    -    [ContactSelection setSelectionMode:ContactSelectionModeMessage];
    -    [ContactSelection setAddAddress:nil];
    -    [ContactSelection setSipFilter:TRUE];
    -    [[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE];
    +    if ([[addressField text ]length] == 0) { // if no address is manually set, lauch address book
    +		[ContactSelection setSelectionMode:ContactSelectionModeMessage];
    +		[ContactSelection setAddAddress:nil];
    +		[ContactSelection setSipFilter:TRUE];
    +		[[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE];
    +	} else {
    +		//Push ChatRoom
    +		ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription] push:TRUE], ChatRoomViewController);
    +		if(controller != nil) {
    +			[controller setRemoteAddress:[addressField text]];
    +		}
    +		addressField.text = @"";
    +	}
     }
     
     - (IBAction)onEditClick:(id)event {
         [tableController setEditing:![tableController isEditing] animated:TRUE];
     }
     
    +#pragma mark - UITextFieldDelegate Functions
    +
    +- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    +    [addressField resignFirstResponder];
    +    return YES;
    +}
     @end
    diff --git a/Classes/ChatViewController.xib b/Classes/ChatViewController.xib
    index 456aea221..8a0d0d0e9 100644
    --- a/Classes/ChatViewController.xib
    +++ b/Classes/ChatViewController.xib
    @@ -3,19 +3,21 @@
     	
     		1296
     		11E53
    -		2549
    +		2182
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1181
     		
     		
    -			IBProxyObject
     			IBUIButton
     			IBUIImageView
    -			IBUITableView
    +			IBProxyObject
    +			IBUILabel
    +			IBUITextField
     			IBUITableViewController
    +			IBUITableView
     			IBUIView
     		
     		
    @@ -45,10 +47,10 @@
     							
     								
     								290
    -								{320, 58}
    +								{320, 44}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								IBCocoaTouchFramework
    @@ -60,10 +62,10 @@
     							
     								
     								292
    -								{160, 58}
    +								{{160, 0}, {160, 44}}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -98,10 +100,10 @@
     							
     								
     								289
    -								{{160, 0}, {160, 58}}
    +								{160, 44}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -128,7 +130,7 @@
     								
     							
     						
    -						{320, 58}
    +						{320, 44}
     						
     						
     						
    @@ -145,10 +147,9 @@
     					
     						
     						274
    -						{{0, 58}, {320, 402}}
    +						{{0, 74}, {320, 378}}
     						
     						
    -						
     						_NS:9
     						
     							1
    @@ -172,6 +173,64 @@
     						22
     						22
     					
    +					
    +						
    +						292
    +						{{24, 44}, {296, 30}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						IBCocoaTouchFramework
    +						0
    +						
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						1
    +						
    +							1
    +							17
    +						
    +						
    +							Helvetica
    +							17
    +							16
    +						
    +					
    +					
    +						
    +						292
    +						{{0, 44}, {24, 30}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						IBCocoaTouchFramework
    +						To:
    +						
    +							1
    +							MCAwIDAAA
    +						
    +						
    +						0
    +						10
    +						
    +						
    +					
     				
     				{320, 460}
     				
    @@ -222,6 +281,14 @@
     					
     					22
     				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					27
    +				
     				
     					
     						view
    @@ -264,6 +331,14 @@
     					
     					20
     				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					28
    +				
     			
     			
     				
    @@ -296,6 +371,8 @@
     						
     							
     							
    +							
    +							
     						
     						
     					
    @@ -334,6 +411,17 @@
     						
     						background
     					
    +					
    +						25
    +						
    +						
    +						address
    +					
    +					
    +						26
    +						
    +						
    +					
     				
     			
     			
    @@ -344,6 +432,8 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				ChatTableViewController
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -357,7 +447,7 @@
     			
     			
     			
    -			23
    +			28
     		
     		
     			
    @@ -387,10 +477,15 @@
     						
     					
     					
    +						UITextField
     						UIToggleButton
     						ChatTableViewController
     					
     					
    +						
    +							addressField
    +							UITextField
    +						
     						
     							editButton
     							UIToggleButton
    @@ -424,13 +519,13 @@
     		YES
     		3
     		
    -			{320, 117}
    -			{320, 117}
    -			{320, 117}
    -			{320, 117}
    -			{320, 117}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
     			{5, 117}
     		
    -		1498
    +		1181
     	
     
    diff --git a/Classes/ContactDetailsLabelViewController.xib b/Classes/ContactDetailsLabelViewController.xib
    index 337923bac..629bad47d 100644
    --- a/Classes/ContactDetailsLabelViewController.xib
    +++ b/Classes/ContactDetailsLabelViewController.xib
    @@ -3,19 +3,19 @@
     	
     		1296
     		11E53
    -		2549
    +		2182
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1181
     		
     		
    -			IBProxyObject
    -			IBUIButton
    -			IBUIImageView
     			IBUITableView
    +			IBUIButton
     			IBUIView
    +			IBUIImageView
    +			IBProxyObject
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -62,7 +62,7 @@
     							
     								
     								290
    -								{320, 58}
    +								{320, 44}
     								
     								
     								
    @@ -77,7 +77,7 @@
     							
     								
     								292
    -								{160, 58}
    +								{160, 44}
     								
     								
     								
    @@ -113,7 +113,7 @@
     								
     							
     						
    -						{320, 58}
    +						{320, 44}
     						
     						
     						
    @@ -395,10 +395,10 @@ AAgACAAIAAEAAQABAAE
     		3
     		
     			{640, 523}
    -			{320, 117}
    -			{320, 117}
    +			{320, 88}
    +			{320, 88}
     			{5, 117}
     		
    -		1498
    +		1181
     	
     
    diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib
    index 3e234fe1f..6bb560020 100644
    --- a/Classes/ContactDetailsViewController.xib
    +++ b/Classes/ContactDetailsViewController.xib
    @@ -3,21 +3,21 @@
     	
     		1296
     		11E53
    -		2549
    +		2182
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1181
     		
     		
    -			IBProxyObject
    -			IBUIButton
    -			IBUIImageView
    -			IBUITableView
    -			IBUITableViewController
     			IBUIView
    +			IBUIImageView
    +			IBProxyObject
     			IBUIViewController
    +			IBUITableViewController
    +			IBUITableView
    +			IBUIButton
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -46,7 +46,7 @@
     							
     								
     								290
    -								{320, 58}
    +								{320, 44}
     								
     								
     								
    @@ -61,7 +61,7 @@
     							
     								
     								292
    -								{160, 58}
    +								{160, 44}
     								
     								
     								
    @@ -99,7 +99,7 @@
     							
     								
     								-2147483356
    -								{160, 58}
    +								{160, 44}
     								
     								
     								
    @@ -127,7 +127,7 @@
     							
     								
     								289
    -								{{160, 0}, {160, 58}}
    +								{{160, 0}, {160, 44}}
     								
     								
     								
    @@ -157,7 +157,7 @@
     								
     							
     						
    -						{320, 58}
    +						{320, 44}
     						
     						
     						
    @@ -174,7 +174,7 @@
     					
     						
     						306
    -						{{0, 59}, {320, 401}}
    +						{{0, 44}, {320, 416}}
     						
     						
     						
    @@ -735,15 +735,15 @@ AAgACAAIAAEAAQABAAE
     		YES
     		3
     		
    -			{320, 117}
    -			{320, 117}
    -			{320, 117}
    -			{320, 117}
    -			{320, 117}
    -			{320, 117}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
     			{320, 117}
     			{5, 117}
     		
    -		1498
    +		1181
     	
     
    diff --git a/Classes/ContactsViewController.xib b/Classes/ContactsViewController.xib
    index 33412ac1a..bc8e932eb 100644
    --- a/Classes/ContactsViewController.xib
    +++ b/Classes/ContactsViewController.xib
    @@ -3,20 +3,20 @@
     	
     		1296
     		11E53
    -		2549
    +		2182
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1181
     		
     		
    -			IBProxyObject
    -			IBUIButton
     			IBUIImageView
    +			IBUIButton
     			IBUITableView
    -			IBUITableViewController
     			IBUIView
    +			IBUITableViewController
    +			IBProxyObject
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -45,7 +45,7 @@
     							
     								
     								290
    -								{320, 58}
    +								{320, 44}
     								
     								
     								
    @@ -60,7 +60,7 @@
     							
     								
     								289
    -								{{108, 0}, {106, 58}}
    +								{{120, 0}, {80, 44}}
     								
     								
     								
    @@ -99,7 +99,7 @@
     							
     								
     								289
    -								{{214, 0}, {106, 58}}
    +								{{200, 0}, {80, 44}}
     								
     								
     								
    @@ -128,7 +128,7 @@
     							
     								
     								292
    -								{108, 58}
    +								{80, 44}
     								
     								
     								
    @@ -156,7 +156,7 @@
     							
     								
     								-2147483356
    -								{108, 58}
    +								{80, 44}
     								
     								
     								
    @@ -182,7 +182,7 @@
     								
     							
     						
    -						{320, 58}
    +						{320, 44}
     						
     						
     						
    @@ -199,7 +199,7 @@
     					
     						
     						274
    -						{{0, 58}, {320, 402}}
    +						{{0, 44}, {320, 416}}
     						
     						
     						
    @@ -579,6 +579,6 @@
     			{213, 117}
     			{5, 117}
     		
    -		1498
    +		1181
     	
     
    diff --git a/Classes/HistoryDetailsViewController.xib b/Classes/HistoryDetailsViewController.xib
    index 9b7dc34e8..781846385 100644
    --- a/Classes/HistoryDetailsViewController.xib
    +++ b/Classes/HistoryDetailsViewController.xib
    @@ -3,19 +3,19 @@
     	
     		1296
     		11E53
    -		2549
    +		2182
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1181
     		
     		
    -			IBProxyObject
     			IBUIButton
     			IBUIImageView
    -			IBUILabel
     			IBUIView
    +			IBUILabel
    +			IBProxyObject
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -44,7 +44,7 @@
     							
     								
     								290
    -								{320, 58}
    +								{320, 44}
     								
     								
     								
    @@ -59,7 +59,7 @@
     							
     								
     								292
    -								{160, 58}
    +								{160, 44}
     								
     								
     								
    @@ -97,7 +97,7 @@
     							
     								
     								289
    -								{{160, 0}, {160, 58}}
    +								{{160, 0}, {160, 44}}
     								
     								
     								
    @@ -227,7 +227,7 @@
     								
     							
     						
    -						{{0, 58}, {320, 100}}
    +						{{0, 44}, {320, 100}}
     						
     						
     						
    @@ -417,6 +417,7 @@
     						{{33, 323}, {255, 50}}
     						
     						
    +						
     						_NS:9
     						NO
     						IBCocoaTouchFramework
    @@ -894,12 +895,12 @@
     			{131, 131}
     			{550, 101}
     			{550, 101}
    -			{320, 117}
    -			{320, 117}
    -			{320, 117}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
     			{320, 117}
     			{5, 117}
     		
    -		1498
    +		1181
     	
     
    diff --git a/Classes/HistoryTableViewController.h b/Classes/HistoryTableViewController.h
    index 6214a3b4f..ee6fe80c2 100644
    --- a/Classes/HistoryTableViewController.h
    +++ b/Classes/HistoryTableViewController.h
    @@ -23,6 +23,7 @@
         @private
         NSMutableArray *callLogs;
     }
    +- (void)loadData;
     
     @property (nonatomic, assign) BOOL missedFilter;
     
    diff --git a/Classes/HistoryViewController.h b/Classes/HistoryViewController.h
    index 5f21f6a0e..ad4cb89e3 100644
    --- a/Classes/HistoryViewController.h
    +++ b/Classes/HistoryViewController.h
    @@ -32,9 +32,11 @@
     @property (nonatomic, retain) IBOutlet UIButton* allButton;
     @property (nonatomic, retain) IBOutlet UIButton* missedButton;
     @property (nonatomic, retain) IBOutlet UIToggleButton* editButton;
    +@property (nonatomic, retain) IBOutlet UIButton* deleteButton;
     
     - (IBAction)onAllClick:(id) event;
     - (IBAction)onMissedClick:(id) event;
     - (IBAction)onEditClick:(id) event;
    +- (IBAction)onDeleteClick:(id) event;
     
     @end
    diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m
    index bb37c1108..0883b41aa 100644
    --- a/Classes/HistoryViewController.m
    +++ b/Classes/HistoryViewController.m
    @@ -27,6 +27,7 @@
     @synthesize allButton;
     @synthesize missedButton;
     @synthesize editButton;
    +@synthesize deleteButton;
     
     typedef enum _HistoryView {
         History_All,
    @@ -48,6 +49,7 @@ typedef enum _HistoryView {
         [allButton release];
         [missedButton release];
         [editButton release];
    +	[deleteButton release];
         [super dealloc];
     }
     
    @@ -162,7 +164,14 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     - (IBAction)onEditClick:(id) event {
         [tableController setEditing:![tableController isEditing] animated:TRUE];
    +	[deleteButton setHidden:![tableController isEditing]];
     }
     
    +- (IBAction)onDeleteClick:(id) event {
    +	linphone_core_clear_call_logs([LinphoneManager getLc]);
    +	[tableController loadData];
    +	[editButton toggle];
    +	[self onEditClick:nil];
    +}
     
     @end
    diff --git a/Classes/HistoryViewController.xib b/Classes/HistoryViewController.xib
    index 8761d07bb..e782748d0 100644
    --- a/Classes/HistoryViewController.xib
    +++ b/Classes/HistoryViewController.xib
    @@ -3,20 +3,20 @@
     	
     		1296
     		11E53
    -		2549
    +		2182
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1181
     		
     		
    -			IBProxyObject
    -			IBUIButton
     			IBUIImageView
    +			IBUIButton
     			IBUITableView
    -			IBUITableViewController
     			IBUIView
    +			IBUITableViewController
    +			IBProxyObject
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -45,10 +45,10 @@
     							
     								
     								290
    -								{320, 58}
    +								{320, 44}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								IBCocoaTouchFramework
    @@ -57,10 +57,45 @@
     									toolsbar_background.png
     								
     							
    +							
    +								
    +								-2147483356
    +								{80, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								Del
    +								
    +									3
    +									MQA
    +								
    +								
    +									1
    +									MCAwIDAAA
    +								
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
     							
     								
     								292
    -								{106, 58}
    +								{{80, 0}, {80, 44}}
     								
     								
     								
    @@ -73,10 +108,7 @@
     								0
     								0
     								NO
    -								
    -									3
    -									MC41AA
    -								
    +								
     								
     									NSImage
     									history_all_selected.png
    @@ -86,20 +118,13 @@
     									NSImage
     									history_all_default.png
     								
    -								
    -									2
    -									15
    -								
    -								
    -									Helvetica-Bold
    -									15
    -									16
    -								
    +								
    +								
     							
     							
     								
     								292
    -								{{106, 0}, {106, 58}}
    +								{{160, 0}, {80, 44}}
     								
     								
     								
    @@ -123,12 +148,12 @@
     									history_missed_default.png
     								
     								
    -								
    +								
     							
     							
     								
     								289
    -								{{212, 0}, {108, 58}}
    +								{{240, 0}, {80, 44}}
     								
     								
     								
    @@ -155,7 +180,7 @@
     									history_edit_default.png
     								
     								
    -								
    +								
     							
     						
     						{320, 58}
    @@ -175,7 +200,7 @@
     					
     						
     						274
    -						{{0, 58}, {320, 402}}
    +						{{0, 44}, {320, 416}}
     						
     						
     						
    @@ -276,6 +301,14 @@
     					
     					33
     				
    +				
    +					
    +						deleteButton
    +						
    +						
    +					
    +					36
    +				
     				
     					
     						onAllClick:
    @@ -327,6 +360,15 @@
     					
     					25
     				
    +				
    +					
    +						onDeleteClick:
    +						
    +						
    +						7
    +					
    +					37
    +				
     			
     			
     				
    @@ -364,6 +406,7 @@
     							
     							
     							
    +							
     						
     						
     						toolsBar
    @@ -405,6 +448,11 @@
     						
     						background
     					
    +					
    +						35
    +						
    +						
    +					
     				
     			
     			
    @@ -418,6 +466,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -430,7 +479,7 @@
     			
     			
     			
    -			34
    +			37
     		
     		
     			
    @@ -447,6 +496,7 @@
     					UIViewController
     					
     						id
    +						id
     						id
     						id
     					
    @@ -455,6 +505,10 @@
     							onAllClick:
     							id
     						
    +						
    +							onDeleteClick:
    +							id
    +						
     						
     							onEditClick:
     							id
    @@ -466,6 +520,7 @@
     					
     					
     						UIButton
    +						UIButton
     						UIToggleButton
     						UIButton
     						HistoryTableViewController
    @@ -476,6 +531,10 @@
     							allButton
     							UIButton
     						
    +						
    +							deleteButton
    +							UIButton
    +						
     						
     							editButton
     							UIToggleButton
    @@ -519,13 +578,13 @@
     		
     			{213, 117}
     			{213, 117}
    -			{214, 117}
    -			{214, 117}
    +			{160, 88}
    +			{160, 88}
     			{213, 117}
     			{213, 117}
    -			{214, 117}
    +			{160, 88}
     			{5, 117}
     		
    -		1498
    +		1181
     	
     
    diff --git a/Classes/LinphoneUI/UISpeakerButton.m b/Classes/LinphoneUI/UISpeakerButton.m
    index 9151ddbd7..faeba9ad7 100644
    --- a/Classes/LinphoneUI/UISpeakerButton.m
    +++ b/Classes/LinphoneUI/UISpeakerButton.m
    @@ -38,7 +38,21 @@ static void audioRouteChangeListenerCallback (
                                            const void             *inPropertyValue                             // 4
                                            ) {
         if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return; // 5
    -    [(UISpeakerButton*)inUserData update];  
    +    UISpeakerButton* button=(UISpeakerButton*)inUserData;
    +	UInt32 routeSize = sizeof (CFStringRef);
    +	CFStringRef route;
    +	AudioSessionGetProperty (kAudioSessionProperty_AudioRoute,
    +										  &routeSize,
    +										  &route);
    +	
    +	if (route &&
    +		button.selected  && 
    +		!( [(NSString*)route isEqualToString: @"Speaker"] || [(NSString*)route isEqualToString: @"SpeakerAndMicrophone"])) {
    +		[LinphoneLogger logc:LinphoneLoggerLog format:"Audio route change to [%s] rejected by speaker button", [(NSString*)route cStringUsingEncoding:[NSString defaultCStringEncoding]]];
    +		// reject change
    +		[button onOn];
    +	} else
    +		[(UISpeakerButton*)inUserData update];  
        
     }
     
    diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
    index 8939bcc41..dbaba1d44 100644
    --- a/Classes/SettingsViewController.m
    +++ b/Classes/SettingsViewController.m
    @@ -509,7 +509,7 @@ static UICompositeViewDescription *compositeDescription = nil;
             [hiddenKeys addObject:@"port_preference"];
         }
     
    -    if([[[[[LinphoneManager instance] settingsStore] objectForKey:@"stun_preference"] stringValue] length] == 0) {
    +    if([[[[LinphoneManager instance] settingsStore] objectForKey:@"stun_preference"]  length] == 0) {
             [hiddenKeys addObject:@"ice_preference"];
         }
     
    diff --git a/Resources/chat_add_default.png b/Resources/chat_add_default.png
    index 053723d2203f606870b34797387ada8a00e2094a..c179581e358ab04cacee0e39c96a3191d02fd939 100644
    GIT binary patch
    literal 4819
    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
    WyKRyp-J}yIfVR4UT8YYw*Z%`QAT^@^
    
    literal 7658
    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
    
    diff --git a/Resources/chat_back_default.png b/Resources/chat_back_default.png
    index 3c90a7bb6868b1f7bca3bd8ab9118f83e2d33e52..60412bd95fd36b2c7fedbb86d83d9e7680b1cba9 100644
    GIT binary patch
    literal 2613
    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
    P00000NkvXXu0mjfIX+xA
    
    literal 4368
    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
    
    diff --git a/Resources/chat_edit_default.png b/Resources/chat_edit_default.png
    index 428ce5df8eeb1c40d98fd1dbfeab9fa265e49e96..10833f922ae5267ef2addc145ced364d182e1c68 100644
    GIT binary patch
    literal 2452
    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
    b+8ZZ>XXl#=UO&z|e23B3G0`s4atQl3jMW$I
    
    diff --git a/Resources/chat_edit_over.png b/Resources/chat_edit_over.png
    index 62c0a4c34508a136cd65a41651ef8f20ddcd9f70..6ac8c31cbeaf5aecf38d8053b1d84fb9c2c55442 100644
    GIT binary patch
    literal 2179
    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
    
    diff --git a/Resources/chat_ok_over.png b/Resources/chat_ok_over.png
    index 4fe6248f82917e3f2aad61b5c687d3170e82ad29..514c9ca0195ec6d81c5e0498d85606762d88614b 100644
    GIT binary patch
    literal 2003
    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
    
    literal 4006
    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
    
    diff --git a/Resources/contact_back_default.png b/Resources/contact_back_default.png
    index 3c90a7bb6868b1f7bca3bd8ab9118f83e2d33e52..331e5b49476eaa745b82589e6f5f4a2008a8a8ad 100644
    GIT binary patch
    literal 2595
    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
    
    literal 4368
    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
    
    diff --git a/Resources/contact_cancel_default.png b/Resources/contact_cancel_default.png
    index 80809dc957ff533879723294406b37514f156f00..d6714b1557f70bb4b38b5dae06e536b2f46edca6 100644
    GIT binary patch
    literal 6430
    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
    
    literal 6587
    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
    L=qOh!+C~2dD#~>z
    
    literal 4527
    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
    
    diff --git a/Resources/contact_edit_default.png b/Resources/contact_edit_default.png
    index 428ce5df8eeb1c40d98fd1dbfeab9fa265e49e96..aa328931784fd317c3586d68a869632988cf0e2d 100644
    GIT binary patch
    literal 2434
    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
    b+8ZZ>XXl#=UO&z|e23B3G0`s4atQl3jMW$I
    
    diff --git a/Resources/contact_edit_over.png b/Resources/contact_edit_over.png
    index 62c0a4c34508a136cd65a41651ef8f20ddcd9f70..8cc680e160a93bc00a2984f80d2beb5d44e94f03 100644
    GIT binary patch
    literal 2161
    zcmXX|2UJr@8+`<&!~`jk8bQSpQ6NATsiKiyrFTfANRuK>gFr+gO9@p#nkZG54kAs2
    zUqGZU1SFJzNUuxD0udtn@cj3jnQvy^o0)IExpQZt?;2{sp~6rA0N^^>>Lvidatkb5
    zaX`TQ6wuHD8Ww*OEi6#pk6Z>ToW9!D{@^FR;XCk8tjuCNGNdfmq&pf
    z0C2GCsNXhwG`>!A)HY>`v2V^MOqWeG{Dspc@HIGRnPJF7G254Wm@H?oIsUrS9zn=(SrIHc~K`J
    zFkU$Y1uJXo$1B6{y1Tn^=szR0jX6aNCrPpyafZdSQE5fXsi|i&i;R&0IPThFqg<%1
    zl!!ZmorTSKb#;}p9FU=}xo?6NL?V&u(P->5!ArcHIfixh_1dKrOy7XN0`i+11|^_`
    z{`2eHoU?%eJZUN>CdOA`%~xSRR^;FNw}^NVXIY_?E@#<{$f^Q&oBTnmvTq9uu3`D|
    z8TxOtoY9s350p;ZmRUT<4=o31Xq*hEtq0{3l8L}SR#NGDFRjR$cP6hvPe5R8Cm<|&
    zicxL&VQ!Y^4-yTF8KyFWKA|_ol12iQ`p_^xnbJWwY9Kh{D){F;QCHKI9Y(#AlCm=Z+)H-!?&-dwX!bydEybj$}ek$5CO`tw&?
    z!+%(Ak6wf)6O@KrYYYqxc~^6Catw=W5~r8X3Lk^l+rmg+pTiV>Z`bj~t%puE4i#5!
    zo`@=PFQ({B(rBndLbJm@Lxd|zd{Gj`-N5@CA9nPMjMe^3rM~QQ<%{ogsHjWqXRM9Y
    zl$T5W7)mc%&dA94`IGR%GNv;6QbrYnzD)T{-`(8}+uwYXNFVo-Z+0*$*!$5D+tbsd
    zEv@N>+MqsJ=*>84@|Tj5%ItHUsn}M|>7SZ%cwxCMPOormxyvD={AAzvBJWJa@aSkr
    z^AvWsq^PK<+^zu|=~#B`{o4_bVSaH8!tz4WxuJ={!L5~%60G+QI9Sb?enC3ZuON6a
    z?(cf?MORZ(({^2uz{L~>D>7Og#@4p7A|Vr)5Fh`cu5Pv+MmpWJud=Y%bxY3{e3_(s2gtGVg>9Y}J>EK(IcJ=Bz$V2W$1Ys39r_9^tB-p5?R9E=r47z|-a
    zNl81GoTI5Jh1L{2|4`AR-d59%d-1UMNM4w%nLl`_b|JlIJ?LP*C*4@pjNTcFq}U
    zsYMBCwK5iRINu|HfB@nc!0W1tE+>%-25_K(bFDx<8ygVtTZ=$pYW)KZyk=zuATT13
    z&wcO1{ef2o2||L$`0C%fc?`6MajshULQC1eqH@@wLNJw15AgK7<`ECHrH#{1*ZNmL
    zPdiyAcR6cmX=9ZQ{&ec}e
    zceiG>f|%ZtD?M`b%f$7!o{ku^ksux{|vJ+GbwnFpbup{
    ze%Ch-kQXo@aK!Y1h!)=Ro@1!oC}V<4~#>#Yb4A@Y~1Dw&E=
    zPmFNG<&Tw>-~T0?g89m4b;wznK+)O}owL?fR^Xn~=@<=Ti;_S*{yYK-x^h-IsMifc
    zPF()iYhwc?VeJCoY^)QJ
    zH&$BBe?u=^Ib_$%-2BY(p0$inC_4$|iF$f^Ag@HBq=khAkSho%Y0%9K1)7L(!GjN=
    zvA-%Q843#C=qkB$*2Tp|HUoAf(_RsYe>p$zf`HtL@f8z1<~PV`B9Aa|RuBNM*j5fW
    ku+(}?bzCGHF?=;#?%I3S^ETh7!50FcqhY9Cj>Sd%2cQQKYybcN
    
    literal 4284
    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
    
    diff --git a/Resources/contact_ok_disabled.png b/Resources/contact_ok_disabled.png
    index cf466e1db226b5413a7ab03230e107d640f156f3..fa7e9fcb8abe7c9d2bc9ff96743ae119d5193874 100644
    GIT binary patch
    delta 1890
    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
    
    diff --git a/Resources/contacts_add_default.png b/Resources/contacts_add_default.png
    index e5ccfb54f5f0f846224510b49dfa15b4eba9326a..1126d63f0e1773f6d7dac54b30a84a0cb683ca76 100644
    GIT binary patch
    literal 3372
    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
    H9U}h=m}awZ
    
    diff --git a/Resources/contacts_add_over.png b/Resources/contacts_add_over.png
    index a858a14062107e7c63de2179ea4a266f7914943f..a20ead0f51d9c46cd2824edbd6c57014de555ed9 100644
    GIT binary patch
    literal 2974
    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
    UhT5;g&j0`b07*qoM6N<$g4xrlga7~l
    
    literal 5387
    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
    
    diff --git a/Resources/history_details_add_default.png b/Resources/history_details_add_default.png
    index 125c8f0f1e91f087217d3a2fb594218fb485f9d0..92924be3bd2ff89fc42d345a0ddb62dd4a15c988 100644
    GIT binary patch
    literal 3987
    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
    
    diff --git a/Resources/history_details_add_over.png b/Resources/history_details_add_over.png
    index fdb40bbf5bd710bd47485aab153d40c09c01c225..9363e5ba1ca50b17028b67176c8ddfe68ca9d5f9 100644
    GIT binary patch
    literal 3618
    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
    
    literal 3780
    zcma)9c{r3^|G$wX``QpivSy5>8mTbClf678TVpqvXY5SYu`eTAB5R4H8X+>a$(Ci*
    zJhID@WyntSFkyzgxA(e!@AZ5Cd;hr4b?&o#uX8@2?pO_hj>st7I;*LjoXZqst&JCJK?vymyuwo`P
    z7dBBRzs>Hb_Lu~}q2~ghyNds?Hd-v9qLMJxSsQ9jDbGabQ-47Rpf+E&oi&e^3I}gA
    z8b;%Ej4m!W9!+jUvJO0vzVHhQ8!zUP%iu|871UH#;#NS>DpG1{
    z0+GM><;CMgqlC|ty?Ujlsd*CE+g~d3JERA}In@Bg&j!-ryh!0Z@-vXYDhJYpBg3FTcS9V)tIPVoGt%Lte}-IG4fQP^G8u|X4~rm6DpHV+6a0TQI&2cZ+Pgq<
    zt(gXY?H+9RRb4&tzNTi(7o3kx;DW%Ul$CiNK78n88Oh4Z`WC>8NNp5e@O5={?fTgk
    z6T@6vS69=X1U5qPcziCszx7GJ$PtH|?q5(=P~b;8wCpMjn(l7SERiyjNZ$B9xNzxi$+R}?BCNMsM3*bqv)Af77ij7D=}NoPnGl$8D&
    zlc=@VF5=6}%iE)Ub?B%RwzPE1$(5eValo}tH;09Yb9<$i+_9V!#Nf}tNzE(c^7SLCH&U2`m%XH0ud(mt!yd|h&eyyq%
    zr6&k-xAI4owmt*`sSexqhAXInWE*?EdyLQDsEguRqEWRG64!%$r`E>meI$SVn4(mX
    zOM3YbaHa|kprD}O=eT=Oh3Ebh>A^fmb9cQz^>csI*Hm!pf);ndol|$21TC^2M2kh~
    z3s(e7N(odm|F>LR6I6-e7f||-Xh?eo1`4-zv}Q*v=DEXNk$u_>%-BrB9F|1g-iNy~
    z^zB5*K>hRL;&a~@7S5@t@U5(@Y%vbkY>VnDi*R(sbvHtJ`J+2pU#nlym{eRMo`rPZTiRNBTA0Si?T8{MMXsc%_oLFMWRuY2{W7I
    ztu0kRN=}Z=z6w%NQK0~XO=oOz?b1dU?RwSi8qLm!Kp#zOs{!?HG^;yzV&~?ZgPZMB
    z($b`5W!;9DedR5q=!fZ@)%u}~PT(8d*3OOz5EB#Y>FJ5;a*l>lmRDAE{r&%`q0|wH
    z_|*Xn{Jg9zD>+@#0S=J6yZc8+S;8RC-)aKH<8XV3BSX)~okjSUj_726GPt6Cg
    z)b;vNtobV;`znp^+HvnAk|l<~bIXgei<{i&rl_=X&r%yKP$)Sx8r?rV%{xm)guZ(`
    zu(>-A(pMucNlsH!Y<_;eq-i+O*v3XIG%PF!dfrG7q=~D|AO8O8p`oE4Cn8@B;diIQ
    zRKD*VUtb*^o%Q`QyzF2^?&yH;JpusY#*G{O^Vu>dwY0S6KGRwv7%`QMA5$dfr*3X;
    z8E%@(;h8eUm6g08cM_KLh{##(x3v+;De>{FV;k6mo8_E)Ne3?~D$EKIAfUG`M{c*%
    zc6Lr6D;pZD8D(;`wq5Y`@GvZF0|VC93KNOMch=C`!d?6v)OE(#
    zST4s!FUckn$pVSwG0N1>!8tkUVsyq1l$Dj=*;W8izkXpsd10%#?~X!A83{`8vfJ9)
    zX5{3s1Gj})X*8O1-j5&NYQ1P;35g^=H8qt`_t?#*HX4p3IhQMNg6!ia+ge%4PryLb
    zz?cae3du3=-TM-V5!%w*j*#Go0}cm0eSHv>Opp>I=y>vc^w7$Ef2FR!|4!l1Ozd!K
    z@am%a&UWI3a&vR72U)ele!ZoZ4mV*!LP9(|JP>+%9fWQkVkJq&Xm7E=r<0C>iwg=0
    zZgq?MAS{IaxF>!opL*zoQ@)!fp~;+1j-}H>!5h;Kj{4PsdN0;(a#3AzNWCOw6s&z
    zEK^2L3f-pyg(h+KQGF4aG9CW1va;a8loJ3XEQh1NjW&*f3yX*pmzJKmS1#gRZ-;Rx
    zzss^~=MbHmnyP%#IkBVKRdUBAr&#+Z%kCQZx?c%cQvVRURolx?S}WD{I5p2_Q`+
    zc(y+oO8jKJ`N&bkydhc)&1kPHF6u)QVK%VBNwb(#S=?4Td&yykX1DL8>^B-eiz>m>
    zD#YsIQQk%O(Lnz)9n}{Sz!TB8nSfn*hf>$;zr-k5t9&Z8?E$I=-y4Z6xDCZ(BZ(tZHS6}T!})4
    z%t^_Joq^0l4-DphjdsN3et66C4&H@@g(N&ax)*iv?c>OkHMA`Xe;s1alPSBPfVBQ$
    zBGAC1bFUCfNrF;zNq+6!KQZuvE01E$b{U6C*pnehIJcDT4e;gMTk))Q;pQf^@iA!~ww$l9?aQcTWzMjQlV3xjEE+uuDqu|3h$_w-tQDf2*8d26dAxDVm%$-TWR=FhHsUa{%W
    zOmiWp;b|+ox|WuKfq`xFKY`%jwIms%gbnsDI@;Q4pd+#nA(P385tlCy2LfBc*XOR#
    zw#`jVMW0z&ihw&86%$j7D<%+<($gWxJq$;-QsZ)~?SfEW2Q
    zn-F;$EVgcWRr%|PsfkHPPY(y!53KV
    z6F@7;X=-Yk6!Bwu84((KRZdP$_1IX0>%18d5HL3HQ(U%2mf({B^OIv=I-~vwhXxb5C#YZabf5Rs)NS?Ckj3+Dm}y36z0Be6W_D
    zSJ4=28k+8H555o96c70VT*_zX>gVOtA_ew3@b`-{fLan&QxglA-B$t?Py(Sp<*a7&eymG4^Hf;8zD
    zY#eCK+h49ZM~WD@R=k2WuRVZJsTTwhZ3OlMTB1TH88Q4hq
    zc0Tsl(5*q1YkAGkzFs$#6C$Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyo8
    z2r(5V1ZVRA01358L_t(|+U?zIP*Z0b2k@6|-Qnc;VOI!rfS_Q)r9ud(;~fP>U9D8>
    zY-jAqj;N?ztXf>LRTf){x`YZWRavdt;@0A*6_t8d)QSP5+!-N+i{zpr32sMo4kI73
    zACAUAB#5KsB>sP&@SK;Endi-ap7*@uL?@HUL;%1JDHMu7pb7x?3jqc|fB^sj1^@&Y
    z009O71Q-AiU;sdX0UXQQD1n1Hcd@X&{XQWiL>eTM2B9DbFxZDjMq@%^Qd3LolYbu~
    zlP8QzT)$>0O`|wiLIbZgwY08?|MXdU2_b|O6_@7za2UlwfPvSlYU&aalkT09TgeBav92n00WOSwY182WcQoi#Dq1oqasl*1Q__0
    z-h{*?+Z)S6X*zNJn#mK!pKg?!5IP8_uts*w<&$gmDWO;Nu^5K%r0|z&uq|
    zQ6p}V^qif=ER
    zy1Tnk1wLzTxxHc2mVTcfTot!u=JW`Z>y2{r=FPW~lao;hJ{$JuKaB|sZD?$K@Zf)a
    zjd|SNttcs@X+dCsA1e0d(CKtej~_oqA^7i+(U`dTi{_TwwujA}K5hNlc$Di6QC3!l
    zU1<9-l%{uQrO%u`&GxVhm#==gEgfG3{pNTpDJcn6uon}?jU|NC)ZMZ%Mx)i0S5$>h
    znfS*cLr^itcIVC=r>?Fp6vDn-EWDbLonw0pP1Ew!WM7{VD3=2(FE7Uu+WtgEPD@MO
    zLfibPmeFWTOiC#(Ekn5+dg0(Je*3MZwarE!4jvWg=7uK|
    z9MHXc_wZS0`z8=j>*80^0>R0j&-OJ&D0IavJ1Q)p9YI`d%(~U9o_i{I)VuCzzm5wX
    z*g;I6HiZ^YS-bXFZfnuBV0r9fOtAxVdid}ms^Bp0cXZ?($#1>gM$-Z}p>X+<#WXEI
    zSsYbOO$`DJV8;Q*5*h&azyN>%1Hgdb&qx61zyN>%0{{XHfO}v7KnDf@1Q-AiU;qRd
    zUY}$61;;?!`pd3v6Q92fg0#Yem(L
    z?A_O{D^LwU2j(dgc`_aU{A|7XAj2@X8XB)%S1>G_v+sLXSC@BR!+)V-ek0&5fdIqH
    zCzuoHFR?s4Iy5AF()iD}Y$b%0l~?vU`-%c=LVyuqcr_i^dS1LmUV;9SdZnsOt+75^
    z-_UqV*~tAYbae^z_Y=ChSYN+GZz!*TxE
    zC6i&;uhKHq8Z9>r^+yMW7hOVI&&%dRfZ;`#(5doF%j0UbmSI^!$cosQ06&R&*3Moiyleuf`qc+HaUl+H1Od{QA>V+tRbtS{)%|dF)~l(#!Jz
    zqXhi4VBVZwM;M0P{`J4rT3u0b>4NAvt}es4<9b79{;4y1gQ20ZsjsWCEK3M6ud!|8
    z(n|=raOuiunG|z@4h#ccLR-%ZML92DvN$<4jSx~^Sv_<5G(t#`qI6&Gp`I&hvA4*p
    zUa8V(b>=1Xv;N-qbeo$$MNy+=!9~S48ycI=U%JA*5Fo%XfF<;E=SAe@!TnILR7FKj
    zWf+!AFGW!weYhaNPhxJ%|Jd}Ue2JlixnjaHXm
    za5gj~*nC+)fZ-)OFd?L(y4KugO(s))WHcjU*T$Bhi*
    z?d7S~>ME;im8xd)tdW}tArr@sy>R)eq4R+}b7%D2SpgDpMRo0slAGK$qawmBccIO1
    ziRihrDynJ>oexg@d{!n6!a^DWh8JBzTZHf#igJ#Mm>NBI7B_1mPmdW9;g_!b!m?e5
    zkDV|NlSzZTy*y8yIj>YT8yQAGQIxau>Xl0m9L&?`?wmS({uDWH9vmC9$WJoTWHMRb
    zepAlQOaHbgJ!?11b{#nQ<4zYHDgi75GD`YF4VAKO_DUvB=9qKvCAeq9`fT
    zcXkRWO629?FA@7oMj8yAH%iM0A(O_9b+PE2ijuO*nmX=7T_R79sEBa$S@W+%&zWU;
    zeeUAcmx4jp-rkM?1K4qZv4jS|JumkDQ=t=U`1g|uS#Lo96YA>Mct0j#YB(g;#xDDWZDaG)Tc%f3{#AWiUJdes>C(J>SZ`iq6;tqK0y
    zDSLBEkS^Ju2vSyn$>U*27zhbhfGaAgsHn(+5HL6l3PV8Q2zj`Qnj%6C1_S+gzzl2t
    z1P?Wgp1}`W3`!I1MWa#FpwPg;K!rd>1+u><6plinj&vXp@(d1nYOpU27bNdXh5Xc@
    zN2KEYNfa81>5h;t`jp=p8{p8g$z55?U4AH}}ZABke53>t)^K;a57sE^N4Tz_#>
    zX&B=Fy78~vRGVN55sD#F$yfaGjCy!LehM>k_uma2F*3YSyWme^6a{x#kBquG`+Ula%=f*K623WLK{lwc|d7*Z7uM;qwsqR#887$9|3U??>Fr;dM<)l<<^L@2^k
    zRgrqiaJW7k#h~;J^z_hhBuXERHux!P>`SHLeDTDec1aAoKV((@tE`%?KM_YG``eJo
    zmw$GEr5Bk-rh1VnAYE%^kU0)d@;#!D%JX-$dPILx0FhwePxb-*m0vZ|zu1SN{%_nU
    zI1Ht)4@amV6qOMMifHf;S;GG(XHbSS(4*$~k7oIK#OS~y^q!EFe#@xRj9%?_=0Z2zPG3yS!SKt0}Asdx(d0B3bL|x|wB=6OdLGRo<
    zBMuLe9(TPx$8Szpsogq_{k}K~MT{?g5doeK^mR0ENo)<@H_5Tcot6RB6PFncey}?8
    zoc{1qdaiav^5e5$EuW5O4s~@e9L-!L%AKB^8XDvpIP;vp$n_yhUTtf{VQ1mTt2;Xa
    zM$Gl4&ifC=p9Rf!-j0l&oobEXi|=UDIl&*t#2n*S?I`j6xUQ_sdV53_z2N5Ia^v=a
    zHK5p1KH2Il#zr24Ig4?WPj)`byLKtbEUqUGA5-?=mKx8MKd7Ie{dZrRYsdZ8m(|tN
    zp2RQ7t49z;ILZ(609c3UwsDX$JBh7T*cRpD)M>Xywiua(SJpN`L;cc0d-2Ke>!%zX
    z-F@zTnXF2;DBMgusXf1d9i&q@@q5u}EY|X22j7GBgdGXBHPIC}d%P@Ccpju6G6pik
    z_d82R$x~wvSZ4hG=uVu;LOf}wRnu~i;AVrdE$Cq8vU$Ib;Ig9R)>Q}#M(@y#oVG+
    zbUG6z_B5Qb5BB#tgj&OA(~F|THG!pFi6=+Kc)M>|g6x$-O|aW99uHs5i%E)fK?jUo
    zfAnPBSt6s%X#{f-^}Bn}L42%ERYY&!iKo80mo)-sj@?O;5ZRjV8R`67l~L{z$I0~y
    z61_6nZ0fC!sfq)|qpbH}ZwuKRK0lV#L0Vpyl9KYXmXFHcfI0Fdb}~}dv%PARiFKbj
    zo+fT3#m<>0pc1M&3>fj^k2hGA5xqTa1ru*Ca8tTQ;ySM2;5RdzmUO)Rd8=?Ue!Hct
    z#kd>HqAqe_C42_<73&x8xzxpNXN@O^F8FxmINORnTcuoad`dd^!W-V>;FOi6lO)-=&4dr@
    z87J|hQ4V5O0{KrqLAL^thkG2DUu<0e82b9L|DA(%h#@2h#$4y>l)V%w!0q5R`EF7*
    z^uQe?QYNh>uhKTEI3(g{v{`bo{8VLGei0(feUt)BnGtJ;x<-MQHZq`|1J3p>A^S}W
    zg7oovt_(>{KVY#mLWy5y{?i9uA-PiDZbuOQ$lr;
    zGSC1LB*ZH^nU;=H&(VuV$U=xC=K7PcurRgKk`nyY8#qUOn&QZ@<-tEIArL*EXK_d104%l6P>ByZ0QMv=vlFx@^CIlXCo;!^$~y1*ePXE&I3E;n8>VN#a!jpW^~D>n^WUDuk-#C0JB
    z&nk*%k}7w1J9g&c>v!4Q`vy{yk@XLYtDS@(MJIXvZAz3M*u!%NU2iZe@$mu^i=4x>
    z4!dzwfA7*|$@AJLMLyM3dEP3YQqv9$4XqQ{Es-^i?RYt1n|0qfmu^y+5O3N$U?zN5
    zlD^p?_*zu1Tqb{lvBk&vJCc2!s*5pp=40cetX7OEuIzekY{Q%kOr7&G>Qpa6yyNMG9=(a~x;bGTx@1&=AVyV%r|Gi~
    zp)RpnBqQCxpzBeR-a-xfVnI(zx+Pa^U-IU|4<9~!P0XcmPv+w(_BI;J>${;jnn}r6
    zY5*GAazn^Hn%zN$Vi#m(2y2-Sav(ZjpawhM6T6;G|{p5G^;yWga
    zu!}P%J>@h&ht33GV*eWgSVaN+Za<(s+u|!W_Sr`mF=5GqeUpg^i-cF6;L)*j58eok
    zbNO(-NFMleXHKNqYJ0R7L--Ta-y$g9+(xQr8;x)Y+CjMid7QH4wKEzsy=gY58@QO*
    zYx9OMG*>08$I$hA7GVplq7yd&ELhG6S&{UXIbv5pEpj14kkT0kV2Sg1S-IBZZhY3`
    zWral9d1`2F)92#oMpe`|iEqrrto_f6i@`yvO6t2DVY}ORoDw4^hy(?N?U8*diN1#|O!5&Ok}t%)Y@
    z4yYy%FBi`k!TX8YD`jQ4qN4sF^}MyUAlcvlm}I+uqSUra{e4~SD=O+z$L7P@1Se_&
    z7<^gy~z=CG}4uT7PT2y-}9!X%RguzV0|QJp3&4?p+;2%FFEgp$iVd4evNv
    zuf6=GvKC1$Xymr{_C9x^)UE(hH@}uL8TTtmcO5s;ZxJE<@nZwu1o6(;*jSKk8c?#`
    z*`)As#g4(1{xC@&%=^|SQ5{OMGSJW7jwAAjeC
    zJDhy=s)QsCHuwBFQP}oE$Q~;*#9A=rP8+0}?hCg$7JFRmNt+t=9nq9Uxnr_h?D4!kTYiO8F8S%<@vX6<>VT-<)
    zzpK^k(6m_=ujO!9&lMZ2udTI^!nPynvZZ_B!l0bobS|qbtjUo++An8Z6L60TA0RC1;u!fWYHX2M#q`H`dA0IodQxTk
    zI_DnN9uu(m2(z&K0qrgG^hU>->WZ%5(aPz9jh>Zs=|Yd3L{oyD#o%{rf8{<*e=rxY?uWPh0R$AKG9hUtd!Gu!sNw)AWb=`&rO8v!XY$!*{6@i|JphZ=G?G%DuF*YSF)6g|)3-)paTQ2)6SLS#PL68|pOBUGK1FT4Lmn
    zlx5b90&*V~0tWfI3OASZYXaRYOLHOudb{?vhfj*D&hn69-c=iMyg_wXtfQr(RjA?9
    zO@SxjdiidhD({0RPVTaQ%uQEVr_PjSF3Wtsa=X7ztKdTRU7y+=@Nx5sCnL%8)~VkG
    zt)^aNAKrhg#vbDnq^YSn&-OKM$;vIKG4^qBS|Q3jDkI`yOC^y&OGR3-TrzlTEn~2F
    z-_ffiZkD6dvArN2Y%=VNz2uy@Lo1_N_c)^Xo&xUY}x||pw37k
    z0}teB`#^PbdcizRp<6{VG1lAPyUzX`Q>VThz{U+Q#L_fp!%9UZB%}x}vCJixMwt6i$L+YCT2g3Xq}5L@#R(Zj{P_VH}Q~OcrY<+n`VVfrYR?sk
    z@fTI+q+b>P8o6zkc|qD`>yc0=Wc2Z5HPn9cDL1cSo#?VZ8hT&B8qSZr^WNJi@LGW8
    zJj<-!8ii@QHHR+?A8*ObbK5VYxHQ9dTV3}#GiiLJXHgj2jSmn>AJYQJc4c1EhfYH5
    znzn=j(y9Q6c1e(*2tZ^vsGs=%Zjb_l{^fW!G^T$ndm-UyW@hH~EvYX;ja9vJMo8(j
    z0?w{ZY<+VxAwJ$`#5*KJ7|(bba4;h;Z~ke0)9Lv5XAd5r?*^kgR+qo`+_Oj>Cqq+f
    z+}+)eAd$LxopIk2SAJ}DSKY1pi7{PUSGN{SI2Y?!5VKvXCNd}}$cP=b=R|ODHd?z)
    z>rf~5_L;%txCI?BoJD%*Jvz6tqfM?1%r^Nv!$Lt_;6X)r%$@wDN<4^bHgYV
    zbXxqE5sYnN>#v%&iCIEujz#vzN3ta0%%zBRi0A#IFZ^>_TMyqzi<3`D;-#&WLD~JJ
    z5c{FWr{%h(q~NyH^77LW+$%rkf4?W=R`x;f>*8WKQjNi1Tfa7QZB6o8fFHk6mIahc
    z*PnSZ*bq?5zc4n>(M@M9RDZdKFfe%e$^V$>dE#n@LC4_8NT9nrC#}>j##|#RDoUTX
    zX9CQKACw*B?>|`XMC|J7s?Wmg&zqZ@OHEA$-Mr-1tCAFhju4Zgn%dfu;$pT9*heKK
    zs7@@|zj^b93^h#ksV*rh8oYS>s(6x9QBhIb3{ieYhSKWl9w;dE@pzZMj5KXJ%U4!b
    z{((eyU->rcKRVS@`U~t#Q{3mbk59ign|+sTr?uR*EB}i`Jaq?c=ou05Ic<|!k=tFj
    z3OOZBa-fCHjkQIAauwM@EEaP(9N{RFZ4((D{_yG3?Gs&?L%}U}N!yJITz1|1OCpgN
    zokps0L?V;(1=WzX9_oooFW8NtXHmuNrzG`8ENVP8g>jE4_l6J6G9HoI|Wz+nIR
    zuLIS-N7Oh4hQ7~H6^|ZmIcwqjLB|I%EfluK&kZ#*{!WZlx4f8bj-Sp6sI^I4NiZn5
    zjYwKvUXIR)^$WHvaoisB*YbB^PpR$t%z)u7#}j^j@5aVxz2RP@z$3P{L;$L9-gXBK
    z4c!C>V8+18mX=%6Nt^#?YqbG>P$*z&41iV=0M%-nUk+?ZSm>j;M$o6GrV2@eSZGG+TT{UzED_zO-n@$_}
    zksv#D(tbBEG_=V6&Ckz|fl^V3*3d)TsjjL5=XtAXrb%30O}sxPuf1>IzPPx!LFgOt
    z%FCBh+79Kt`T65enk@Tnfamv>?<35)vL*vQBl2BX-9EO_c?
    zgeY`{x3-_cRB|_`vnFCN>%#Y!pHr#wg5yaa^sMF=7Z-<^1_cJ1L|4xuEf|40iZuaK
    z9&NRHxWq#-#SXQ!n%Ha>Z&@;K%nZgM)xhmpXE$0GxcD3GxI4PA5dG&)NZOva0|N!U
    z$rjnJm0U!jp(fF)#G^TAC3bYY1-0#_Gs~0C{T6{#GxeY^^4f!t%!c8;%ortO7xEtf
    z_o5jJBt}sgxw*M22DK2=dyf3nRuwZst3u+vZs(
    zrk_q7r+8avY$g~|#)LQ=PVagakyvUTjka{7@l4^Y=s=?#dEW-I%!+TgP)v&4f@zls
    z1VTc>9h^Xh^=YwCS;x<4ggIP_6P
    z)6@Da<6LLm9hpsm2ypkBJ3dVwf?yqo4w_0!K^}7yQnW^!4kM9Rvtl}K%p;xRO{Gxw
    zp<&GNeXtad%Dva6rINFt*+e28EPX!1cc~v#;S?<}?|(PZ`4?Vea_3xS_Jnz5g(D5R
    zNnZ)pL8}?;P(jC&vpr#vD79PHbNr0<2kD8A+M1Z4Vbt2%pk+LPdH;+*+Sy#Af(4ui
    ze^)~yk+K#uu1Tk#@gLGX7ecw|PVt7bz%mB^d7INsC*OoUxs1hP&z%#rB}2`M-7C2=
    zsmEwMS7K*Bk)5>lOzYSx!USfd?m)vF&~$`H8V%4`zmwX_|UZf`-&
    z;G2i(xR27ET_RD;=w}}77nlT=&gxq`K;a59GBewUYyWH=7fZI?lxFS#DZFKnPA++m
    zb7W*>e!NF%&rZ0kAbpo=+T(!QK6?2y4Ufk=6NO^QbcW?euSXL;K0e?obNelw$_J5gye((01z=Z
    z!`lG>*CCJ&6W|7^Zq1@LklDdBbz$1meV7r%Pzqo~rh8N1=0QYXiXDYWjtc3e-~fQf
    zhw9+Mbg{C;lITHd#4Q=M$e>_Q8vt;Ik-wvh<T_C=3#fQAKNG)iGEU3jS*$
    zKyRUBAFLgo@XHs-=_CA@%wQ}M84(eo7NM?25A{W&b#-;OY+x{|poA(TipC^Hs?r#H
    zep|p(7^F~YFq2BB!M7|Dz3E|0eFPZk-zfwITUq^Mn8x@86bKnIk{FCctD%rVL0ftK
    zlx8sPDE|}2ze+P4qJk+%I|_py7D@u^;j`zrGKk%OceEu4MuW8prGiBv2IA?YupkPJ
    zX^z)NfOpi$R5BKY)27;a*(3AZAWsI)D9t2}>ai>HKA!zpA!C_M=N6JIR#U;LwV|8L&9
    zXq2w0DH@}VQP;!})Qu3objkl8%#dI($gSr1U(ND+3+%ux@}JfRnSX|dLIWoz6daB2
    zv*NzsxE?ac8#zS2e42|EJt+<)#3AJPZ8uVaWn?C#tS7N&YKw=Ip;x^dMtt%#-Fsp?
    z7430!Z@xa=I?1--lJ$}o(RF9Ir?w?4oOIfFYajr0$+oU{RJ~0|
    z{|*AC%ZYbNxt#f?+I&BSJ#nF1*06CrofwVj@~iPweJx&mdo_0a7QrEA
    z;iS4At%f6BXQPLR6@YgQ_=haI3)d;k_@kdVdF`!G4#_!ssqKpC_4oMnYEz3j{AUQ%
    zD@fo*;XF1Z)j5OgW_jGfi0PWxmbFW-)}x6KYCGN>&34d#`0(K&kJ;H-n<9g;>l8>q
    z2+mD)5CUv_67QI?r`Ab+c@ec7?Cp)%BWpW&sq*q-u_u))phzUJ3JsJiJwH2JWEeL?
    z{+_+taAwwBR8&+Tsec85TVMO~PTbM2-u4A-Hw(7+lCG83>D*k_%KS(@sT*b(D-VN-
    zO3i-wpsJ>poa))ka&&i(zTLT4s7;6ABB2rz+&3cHPYUw#^2(?ki$BS0dqFgdcrWbz
    z^B#*qo@ddrD6yd$Zg~~hv_y{lQ5c^<@xa2w<&?wvxVed=V%aR&W<$#fa-Z$zMSv9s
    z;Bc~psF^oJFB`wpe^Al6+FWL#w=v=ZuHSTco}R5Jw2EvUY4Dw$7AD*k0nVL2fBasg
    zcu#6ZMxnZIf4mZvl?8)gnLT}dB0W$jH1gAAXKUoS+_a$2z^RNslaIrag@wf&M$leg
    zZt(CDE~d<)DwNdJL>2XMIBB(Gsr#enU!V^jyfPu(@%W-X2|yN*<3;ZC>}c?PY;9$=
    z0pVkQ(c<7#l$3ZCcZ0CV$=ziw`@>~i4Es2G+6oE^N=lubos@U|oTU)KJ=gM&1n5ag
    zNx^RdQ;gMxu|rz6+Xh=Vmu80=1BO*pR4(G85PSBh$9T(5b~HtNJaF(}#|X6RI^|J3
    z?OJ`k0!eVYE*dvk;l^k3j(7tG%LKv7`#6!Kb?ZU9>H*DCoG>(=)8KqmR$x*my0KJ2
    zfXfgD&vc;@NfVH-Kw@c4Xqyw1^Z~Lh4Otvy=BwmQ-&d!94AZyS{@Jcn=WfLTzh>0^`oj$LU&yRea~-r1fFh0gY}iN*yLzbrTtP
    zEPcnLu+vmf6R2~|SWJ9JVc8T(LpxV#6
    zsH|Mg%zE5g8ihLGm|v@!h`MNZWz$%6r|~uuFxbTneD6~xHb2d=Y0LnY
    z-C|QQ{Uxg0j#v;=pZ+?=0J$@hK+=(aSaOuLJ(Ez_S23kiIYez4KXQqBewO)ib)(Z;
    z;nrkM+?`{8eF%U2ZI=Qt{v=FgnZ*IM4ZwcA@W
    z96&~xU55k7oBO<;^@jo=%1Xn1Dv&`P96LH_4W0mn*VB#YV4jeuN>mx;R&xv3S(o0`I7eS+jmNOY}oz5
    z#6-#GItb&=tM&EumoLxPA3Ju;OP8F(e`NpRF*2qgCr8};u^pjT;#!4r&WWBhi_;gs
    za_RUEys?K^idFDSvQQ9XYUiwz=W}h!1CLM*<(<|54(@V0U2L<(dvf1nbQ4x`~7=!v_9vJAs2#$51MNCGI;jR&NlD4f%uJv8
    zjg1rb_V%Wxrz)aLA0`C^1iZa=@1DHGoja~W59}R9lanm?6J!QtQ+mk~>F0X_V}+)xCteMv-1T#Jb33C%
    za)breQlg`qN=mp={3iOMqodEcfp(`fbh|IyX=y@N;xMf0`v`dgv6F=jfdS}cALF{=ylIx{j9^2`<@*gdUw;X=}oz%+24hs*R1RliY
    z5P`eULAfyBQgOC$M&kOjXac(yLM7XWM%2IAwnzzcw)
    z0Dzm1d*S29p}|2NE=<9^r$M=7s{AX+F5y5L?c2cI*qDca!L+JWYx9%b%Ere03tC8|
    zn01DPoLQY4OkRFTvcgvRa(m(iAKEa7n@VgLF<5rDn}6^C9~GrL$ji^?ZB#d$_cr&_
    zx1)4_|2dA#Wf@W72X?BD$k+S&tbPz3RP){=JWBX#jgK_BZHD)BfRppoU(>07vO7?V
    z@ioLRL}K^uxR4O>);KQ`X^*zHjHCjHJ|vcHSGLWm+3;SG>bo~@ybyR%HSaX38mFDD
    z10)hD47S_ep=!T`WwZF!B8+O}?6DMwjZ=4k;d3&2R_uNyw=2r7+babbL
    zLg>os>P|VinU9qi8kK5v*Epr7Ms;C%d3)MvA&c@*fB%PZmQ?EOix;xB3Mt&9qoc1L
    zJ%UIms8&=~?%cU^qx*Ecv$M0ko!#kLxR0-IN_1>20a2DZMq@vE3y#!g2Z2DCo0~gb
    zTTG6KU`Ml9#)z_v(GLqVGjN*~NfM^udP76bmDeOXJv%xk29HRL2WMe=dOG`qtE;P`
    z*PDIH^&^3=Iy!hH#5Hu}vubN=lai8BQ&VSVW)>D`FAupTM(*g0!od`|f&Iq5b49mh
    z`
    zcvEnFZE1SC%Xb)T?AX}*7UftRPD56B+(6@pb*nolao?&JmzI`x^ypFR%ApV8kkwp9
    z^)r8e8NQU1lmHF6i3k`DmhE)K!^LG$P+cz5+}ylfd`$#fR$4mw^{b04-|N=bjIrF%
    zn0fY?`tbNTlKp7SHNel$#lu4c0wG~YnS1lhs~qN-*j$#o`_9JGv=KsB*m7$t0BLYh
    zS-M_a9IyG=#QvS)SatP*xja_IW&!h)Q$l=Ok&uqM`cU@)b9xzZP{CEL_grIkR+dnJ
    zm&9K=G7>OedwO8($j7Ot!^7{FS+QM1Lqp(uK2Bx)xQmO~AcZ5deY??J<&riwuchOs
    z?&h*9larI>P&n!BxS(HnJn-Mu2
    z&W(`R*#2z4Tcfjd@C_9dRMX~Fd};dKJG5r7*CKC>!9m2ww=LQ$Y?<@7dwR^C4?ca0
    zf2cTBerVkrCIwuB_z=biN4G!ltv1
    zSX&==byaZgzLzSpFh4Ks3Kergwv3skTbP->u5%C+L(65BIleTNvtBhug6$d?iA)we
    zbvQ@SV`aOBkdw01`teO@k!RN>liIpE!*E{itVeGrt!->_1c0(0@K|o)2bA68>oQdV
    z6ji)*P`{ojz@b*)WO{svI0OLq;J|CH@t=*D5UBKL7v#
    
    diff --git a/Resources/history_edit_default.png b/Resources/history_edit_default.png
    index da43affc21b8c450819f24e3a9a0ee03c8394d89..05e18afdba7afe87567d0b56a2ef173d10e743c1 100644
    GIT binary patch
    literal 2457
    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
    
    diff --git a/Resources/history_edit_over.png b/Resources/history_edit_over.png
    index 032bc901d42e25433c27f27a06e86a86a6326d6a..d1c7d156b663c80d50b2dd2b13b63771d7a01c83 100644
    GIT binary patch
    literal 2264
    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
    
    literal 4098
    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
    N+>B&RtTy(D`!}d22HgMv
    
    diff --git a/Resources/history_ok_over.png b/Resources/history_ok_over.png
    index 51411d7db83034022e5a4dcb73e620c4f623ae34..deebf0507391d8b09ecda6aee6042725d83cc74c 100644
    GIT binary patch
    delta 1914
    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
    W^rm^#C%NU#A5$XXAil)Xga04u>6aV;
    
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index b8316ada6..5d3d11f8a 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -33,6 +33,8 @@
     		22276E8913C73DC000210156 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8813C73DC000210156 /* CoreMedia.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
     		223148E41178A08200637D6A /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E31178A08200637D6A /* libilbc.a */; };
     		223148E61178A09900637D6A /* libmsilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E51178A09900637D6A /* libmsilbc.a */; };
    +		2234C8CA15ED049A00E18E83 /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8C715ED049A00E18E83 /* DialerViewController.xib */; };
    +		2234C8CB15ED049A00E18E83 /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8C715ED049A00E18E83 /* DialerViewController.xib */; };
     		2237D4091084D7A9001383EE /* ring.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* ring.wav */; };
     		2242E313125235120061DDCE /* ring.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* ring.caf */; };
     		224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
    @@ -114,7 +116,6 @@
     		22E5B0AF133B5EA20044EA25 /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5B0AD133B5EA20044EA25 /* libssl.a */; };
     		22E5B0B0133B5EA20044EA25 /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22E5B0AE133B5EA20044EA25 /* libcrypto.a */; };
     		22F2508E107141E100AC9B3F /* DialerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22F2508C107141E100AC9B3F /* DialerViewController.m */; };
    -		22F2508F107141E100AC9B3F /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22F2508D107141E100AC9B3F /* DialerViewController.xib */; };
     		22F254811073D99800AC9B3F /* ringback.wav in Resources */ = {isa = PBXBuildFile; fileRef = 22F254801073D99800AC9B3F /* ringback.wav */; };
     		288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
     		340751971506459A00B89C47 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340751961506459A00B89C47 /* CoreTelephony.framework */; };
    @@ -608,7 +609,6 @@
     		D34BD73F15C13DF40070C209 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; };
     		D34BD74015C13E110070C209 /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; };
     		D34BD74115C13E250070C209 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; };
    -		D34BD74315C13ED70070C209 /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22F2508D107141E100AC9B3F /* DialerViewController.xib */; };
     		D34F6F9E1594D3FB0095705B /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; };
     		D350F20E15A43BB100149E54 /* WizardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D350F20C15A43BB100149E54 /* WizardViewController.m */; };
     		D350F20F15A43BB100149E54 /* WizardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D350F20C15A43BB100149E54 /* WizardViewController.m */; };
    @@ -1339,6 +1339,7 @@
     		22276E8813C73DC000210156 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
     		223148E31178A08200637D6A /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = ""; };
     		223148E51178A09900637D6A /* libmsilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsilbc.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsilbc.a"; sourceTree = ""; };
    +		2234C8C715ED049A00E18E83 /* DialerViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DialerViewController.xib; sourceTree = ""; };
     		2237D4081084D7A9001383EE /* ring.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ring.wav; path = Resources/ring.wav; sourceTree = ""; };
     		2242E312125235120061DDCE /* ring.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = ring.caf; path = Resources/ring.caf; sourceTree = ""; };
     		224567C1107B968500F10948 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
    @@ -1456,7 +1457,6 @@
     		22E5B0AE133B5EA20044EA25 /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "liblinphone-sdk/apple-darwin/lib/libcrypto.a"; sourceTree = ""; };
     		22F2508B107141E100AC9B3F /* DialerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DialerViewController.h; sourceTree = ""; };
     		22F2508C107141E100AC9B3F /* DialerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = DialerViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
    -		22F2508D107141E100AC9B3F /* DialerViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DialerViewController.xib; sourceTree = ""; };
     		22F254801073D99800AC9B3F /* ringback.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ringback.wav; path = Resources/ringback.wav; sourceTree = ""; };
     		288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
     		29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
    @@ -2145,6 +2145,7 @@
     		080E96DDFE201D6D7F000001 /* Classes */ = {
     			isa = PBXGroup;
     			children = (
    +				2234C8C715ED049A00E18E83 /* DialerViewController.xib */,
     				340751E4150E4D0200B89C47 /* CallDelegate.h */,
     				2211DBBB14769C8200DEE054 /* CallDelegate.m */,
     				D32B6E2715A5BC430033019F /* ChatRoomTableViewController.h */,
    @@ -2178,7 +2179,6 @@
     				D35497FD15875372000081D8 /* ContactsViewController.xib */,
     				22F2508B107141E100AC9B3F /* DialerViewController.h */,
     				22F2508C107141E100AC9B3F /* DialerViewController.m */,
    -				22F2508D107141E100AC9B3F /* DialerViewController.xib */,
     				D3A74F6015C6B03B001500B9 /* DialerViewController~ipad.xib */,
     				2218A92212FBE1340088A667 /* FirstLoginViewController.h */,
     				2218A92312FBE1340088A667 /* FirstLoginViewController.m */,
    @@ -3285,6 +3285,7 @@
     				French,
     				German,
     				en,
    +				fr,
     			);
     			mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
     			projectDirPath = "";
    @@ -3329,7 +3330,6 @@
     			buildActionMask = 2147483647;
     			files = (
     				2274550810700509006EC466 /* linphonerc-factory in Resources */,
    -				22F2508F107141E100AC9B3F /* DialerViewController.xib in Resources */,
     				22F254811073D99800AC9B3F /* ringback.wav in Resources */,
     				2237D4091084D7A9001383EE /* ring.wav in Resources */,
     				22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */,
    @@ -3764,6 +3764,7 @@
     				D3804E6215D92A57008072A5 /* msg.wav in Resources */,
     				D321FF9615E628BB0098B5F4 /* linphonrc in Resources */,
     				D321FF9915E628CB0098B5F4 /* linphonerc~ipad in Resources */,
    +				2234C8CA15ED049A00E18E83 /* DialerViewController.xib in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4064,7 +4065,6 @@
     				D34BD72215C13DB70070C209 /* video_on_over_landscape.png in Resources */,
     				D34BD74015C13E110070C209 /* InAppSettings.bundle in Resources */,
     				D34BD74115C13E250070C209 /* Localizable.strings in Resources */,
    -				D34BD74315C13ED70070C209 /* DialerViewController.xib in Resources */,
     				D3A74E5A15C68162001500B9 /* toolsbar_background.png in Resources */,
     				D3A74E5D15C6922A001500B9 /* UIMainBar~ipad.xib in Resources */,
     				D3A74EB315C69392001500B9 /* add_call_default~ipad.png in Resources */,
    @@ -4207,6 +4207,7 @@
     				D3804E6315D92A57008072A5 /* msg.wav in Resources */,
     				D321FF9715E628BB0098B5F4 /* linphonrc in Resources */,
     				D321FF9A15E628CB0098B5F4 /* linphonerc~ipad in Resources */,
    +				2234C8CB15ED049A00E18E83 /* DialerViewController.xib in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    diff --git a/submodules/liblinphone.xcodeproj/project.pbxproj b/submodules/liblinphone.xcodeproj/project.pbxproj
    index 60ac546ec..ecdbd5f6a 100644
    --- a/submodules/liblinphone.xcodeproj/project.pbxproj
    +++ b/submodules/liblinphone.xcodeproj/project.pbxproj
    @@ -7,7 +7,6 @@
     	objects = {
     
     /* Begin PBXBuildFile section */
    -		2203127213A247B50049A2ED /* iosdisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = 2203127013A247B40049A2ED /* iosdisplay.h */; };
     		220ED19A13A8F87700AC21E0 /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED19713A8F87700AC21E0 /* libspeexdsp.a */; };
     		220ED19B13A8F87700AC21E0 /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED19813A8F87700AC21E0 /* libspeex.a */; };
     		220ED19C13A8F87700AC21E0 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220ED19913A8F87700AC21E0 /* libortp.a */; };
    @@ -190,7 +189,6 @@
     		225D64741521BFA6008B2E81 /* toast.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5411F84E2D00373793 /* toast.h */; };
     		225D64751521BFA6008B2E81 /* unproto.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5511F84E2D00373793 /* unproto.h */; };
     		225D64761521BFA6008B2E81 /* linphonecore_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */; };
    -		225D64771521BFA6008B2E81 /* iosdisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = 2203127013A247B40049A2ED /* iosdisplay.h */; };
     		225D64781521BFA6008B2E81 /* nowebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 220ED1AA13A9062500AC21E0 /* nowebcam.h */; };
     		225D64791521BFA6008B2E81 /* swscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 2258C44013A9377B0087A596 /* swscale.h */; };
     		225D647A1521BFA6008B2E81 /* alldescs.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58A313AB708C00D603C9 /* alldescs.h */; };
    @@ -339,7 +337,6 @@
     		225D65411521C009008B2E81 /* toast.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5411F84E2D00373793 /* toast.h */; };
     		225D65421521C009008B2E81 /* unproto.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A10B5511F84E2D00373793 /* unproto.h */; };
     		225D65431521C009008B2E81 /* linphonecore_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */; };
    -		225D65441521C009008B2E81 /* iosdisplay.h in Headers */ = {isa = PBXBuildFile; fileRef = 2203127013A247B40049A2ED /* iosdisplay.h */; };
     		225D65451521C009008B2E81 /* nowebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 220ED1AA13A9062500AC21E0 /* nowebcam.h */; };
     		225D65461521C009008B2E81 /* swscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 2258C44013A9377B0087A596 /* swscale.h */; };
     		225D65471521C009008B2E81 /* alldescs.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58A313AB708C00D603C9 /* alldescs.h */; };
    @@ -445,7 +442,6 @@
     /* End PBXContainerItemProxy section */
     
     /* Begin PBXFileReference section */
    -		2203127013A247B40049A2ED /* iosdisplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iosdisplay.h; sourceTree = ""; };
     		2203127113A247B40049A2ED /* iosdisplay.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iosdisplay.m; sourceTree = ""; };
     		2203127413A249F70049A2ED /* filter-template.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "filter-template.c"; sourceTree = ""; };
     		220ED19713A8F87700AC21E0 /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "../liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = ""; };
    @@ -1002,7 +998,6 @@
     				222CA62311F6CF7600621220 /* ulaw.c */,
     				222CA62411F6CF7600621220 /* vfw-missing.h */,
     				222CA62911F6CF7600621220 /* void.c */,
    -				2203127013A247B40049A2ED /* iosdisplay.h */,
     				2203127113A247B40049A2ED /* iosdisplay.m */,
     				2203127413A249F70049A2ED /* filter-template.c */,
     				221F58E313AF44B300D603C9 /* scaler.h */,
    @@ -1284,7 +1279,6 @@
     				225D64741521BFA6008B2E81 /* toast.h in Headers */,
     				225D64751521BFA6008B2E81 /* unproto.h in Headers */,
     				225D64761521BFA6008B2E81 /* linphonecore_utils.h in Headers */,
    -				225D64771521BFA6008B2E81 /* iosdisplay.h in Headers */,
     				225D64781521BFA6008B2E81 /* nowebcam.h in Headers */,
     				225D64791521BFA6008B2E81 /* swscale.h in Headers */,
     				225D647A1521BFA6008B2E81 /* alldescs.h in Headers */,
    @@ -1371,7 +1365,6 @@
     				225D65411521C009008B2E81 /* toast.h in Headers */,
     				225D65421521C009008B2E81 /* unproto.h in Headers */,
     				225D65431521C009008B2E81 /* linphonecore_utils.h in Headers */,
    -				225D65441521C009008B2E81 /* iosdisplay.h in Headers */,
     				225D65451521C009008B2E81 /* nowebcam.h in Headers */,
     				225D65461521C009008B2E81 /* swscale.h in Headers */,
     				225D65471521C009008B2E81 /* alldescs.h in Headers */,
    @@ -1458,7 +1451,6 @@
     				22A10B5A11F84E2D00373793 /* toast.h in Headers */,
     				22A10B5B11F84E2D00373793 /* unproto.h in Headers */,
     				229B9D5913043EAB00EFCD1C /* linphonecore_utils.h in Headers */,
    -				2203127213A247B50049A2ED /* iosdisplay.h in Headers */,
     				220ED1AC13A9062600AC21E0 /* nowebcam.h in Headers */,
     				2258C44113A9377B0087A596 /* swscale.h in Headers */,
     				221F58A413AB708C00D603C9 /* alldescs.h in Headers */,
    @@ -2189,6 +2181,7 @@
     				GCC_PRECOMPILE_PREFIX_HEADER = YES;
     				GCC_PREFIX_HEADER = liblinphone_Prefix.pch;
     				GCC_PREPROCESSOR_DEFINITIONS = (
    +					IPV6_PKTINFO,
     					"_BYTE_ORDER=_LITTLE_ENDIAN",
     					ORTP_INET6,
     					ENABLE_TRACE,
    @@ -2248,6 +2241,7 @@
     				GCC_PRECOMPILE_PREFIX_HEADER = YES;
     				GCC_PREFIX_HEADER = liblinphone_Prefix.pch;
     				GCC_PREPROCESSOR_DEFINITIONS = (
    +					IPV6_PKTINFO,
     					"_BYTE_ORDER=_LITTLE_ENDIAN",
     					ORTP_INET6,
     					ENABLE_TRACE,
    @@ -2307,6 +2301,7 @@
     				GCC_PRECOMPILE_PREFIX_HEADER = YES;
     				GCC_PREFIX_HEADER = liblinphone_Prefix.pch;
     				GCC_PREPROCESSOR_DEFINITIONS = (
    +					IPV6_PKTINFO,
     					"_BYTE_ORDER=_LITTLE_ENDIAN",
     					ORTP_INET6,
     					ENABLE_TRACE,
    
    From a3ebd8f7d2ed636ea318d5ca8d162f465340dc51 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Wed, 29 Aug 2012 12:46:20 +0200
    Subject: [PATCH 175/397] improve push notification support
    
    ---
     Classes/LinphoneAppDelegate.m       | 10 ++++++++-
     Classes/LinphoneCoreSettingsStore.m |  7 +++++-
     Classes/LinphoneManager.h           |  4 +++-
     Classes/LinphoneManager.m           | 13 +++++++++--
     Classes/PhoneMainView.m             | 34 +++++++++++++++++------------
     submodules/externals/exosip         |  2 +-
     submodules/linphone                 |  2 +-
     7 files changed, 51 insertions(+), 21 deletions(-)
    
    diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m
    index 83199faa9..b3fe14791 100644
    --- a/Classes/LinphoneAppDelegate.m
    +++ b/Classes/LinphoneAppDelegate.m
    @@ -207,11 +207,19 @@
             NSDictionary *alert = [aps objectForKey:@"alert"];
             if(alert != nil) {
                 NSString *loc_key = [alert objectForKey:@"loc-key"];
    +			/*if we receive a remote notification, it is because our TCP background socket was no more working.
    +			 As a result, break it and refresh registers in order to make sure to receive incoming INVITE or MESSAGE*/
    +			LinphoneCore *lc=[LinphoneManager getLc];
    +			linphone_core_set_network_reachable(lc,FALSE);
    +			linphone_core_set_network_reachable(lc,TRUE);
                 if(loc_key != nil) {
                     if([loc_key isEqualToString:@"IM_MSG"]) {
                         [[LinphoneManager instance] addInhibitedEvent:kLinphoneTextReceivedSound];
                         [[PhoneMainView instance] changeCurrentView:[ChatViewController compositeViewDescription]];
    -                }
    +                }else{
    +					//it's a call
    +					[[LinphoneManager instance] didReceiveRemoteNotification];
    +				}
                 }
             }
         }
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index 7d7ea463d..7258aad92 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -380,7 +380,12 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
                 }
                 // NSLocalizedString(@"IC_MSG", nil); // Fake for genstrings
                 // NSLocalizedString(@"IM_MSG", nil); // Fake for genstrings
    -            NSString *params = [NSString stringWithFormat:@"APN-TOK=%@;APN-MSG=IM_MSG;APN-CAL=IC_MSG;APN-CAL-SND=ring.caf;APN-MSG-SND=msg.caf", tokenString];
    +#ifdef DEBUG
    +	#define APPMODE_SUFFIX @"dev"
    +#else
    +	#define APPMODE_SUFFIX @"prod"
    +#endif
    +            NSString *params = [NSString stringWithFormat:@"app-id=%@.%@;pn-type=apple;pn-tok=%@;pn-msg-str=IM_MSG;pn-call-str=IC_MSG;pn-call-snd=ring.caf;pn-msg-snd=msg.caf", [[NSBundle mainBundle] bundleIdentifier],APPMODE_SUFFIX,tokenString];
                 linphone_proxy_config_set_contact_parameters(proxyCfg, [params UTF8String]);
             }
             
    diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
    index 0b435917a..44f35bed8 100644
    --- a/Classes/LinphoneManager.h
    +++ b/Classes/LinphoneManager.h
    @@ -76,7 +76,7 @@ typedef struct _LinphoneManagerSounds {
         
     @private
     	NSTimer* mIterateTimer;
    -    
    +    time_t lastRemoteNotificationTime;
     	Connectivity connectivity;
         
         NSMutableArray *inhibitedEvent;
    @@ -101,6 +101,8 @@ typedef struct _LinphoneManagerSounds {
     - (BOOL)resignActive;
     - (void)becomeActive;
     - (BOOL)enterBackgroundMode;
    +- (void)didReceiveRemoteNotification;
    +- (BOOL)shouldAutoAcceptCall;
     
     + (void)kickOffNetworkConnection;
     - (void)setupNetworkReachabilityCallback;
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index a58e6a591..ec6877f05 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -116,7 +116,7 @@ struct codec_name_pref_table codec_pref_table[]={
     + (NSSet *)unsupportedCodecs {
         NSMutableSet *set = [NSMutableSet set];
     	for(int i=0;codec_pref_table[i].name!=NULL;++i) {
    -        if(linphone_core_find_payload_type([LinphoneManager getLc],codec_pref_table[i].name, codec_pref_table[i].rate) == NULL) {
    +        if(linphone_core_find_payload_type([LinphoneManager getLc],codec_pref_table[i].name, codec_pref_table[i].rate,-1) == NULL) {
                 [set addObject:codec_pref_table[i].prefname];
     		}
     	}
    @@ -205,6 +205,7 @@ struct codec_name_pref_table codec_pref_table[]={
     		self.defaultExpires = 600;
             [self openDatabase];
             [self copyDefaultSettings];
    +		lastRemoteNotificationTime=0;
         }
         return self;
     }
    @@ -663,7 +664,7 @@ static LinphoneCoreVTable linphonec_vtable = {
     	ms_set_cpu_count(cpucount);
     
     	if (![LinphoneManager isNotIphone3G]){
    -		PayloadType *pt=linphone_core_find_payload_type(theLinphoneCore,"SILK",24000);
    +		PayloadType *pt=linphone_core_find_payload_type(theLinphoneCore,"SILK",24000,-1);
     		if (pt) {
     			linphone_core_enable_payload_type(theLinphoneCore,pt,FALSE);
     			[LinphoneLogger logc:LinphoneLoggerWarning format:"SILK/24000 and video disabled on old iPhone 3G"];
    @@ -713,6 +714,14 @@ static LinphoneCoreVTable linphonec_vtable = {
         }
     }
     
    +- (void)didReceiveRemoteNotification{
    +	lastRemoteNotificationTime=time(NULL);
    +}
    +
    +- (BOOL)shouldAutoAcceptCall{
    +	return lastRemoteNotificationTime!=0 && lastRemoteNotificationTime-time(NULL)<10;
    +}
    +
     - (BOOL)resignActive {
         if ([[LinphoneManager instance] settingsStore] != Nil)
     		[[[LinphoneManager instance] settingsStore] synchronize];
    diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m
    index 7f05ae5e2..845764367 100644
    --- a/Classes/PhoneMainView.m
    +++ b/Classes/PhoneMainView.m
    @@ -633,24 +633,30 @@ static PhoneMainView* phoneMainViewInstance=nil;
             if(address == nil) {
                 address = @"Unknown";
             }
    -        
    -		// Create a new notification
    -		appData->notification = [[UILocalNotification alloc] init];
    -		if (appData->notification) {
    -			appData->notification.repeatInterval = 0;
    -			appData->notification.alertBody =[NSString  stringWithFormat:NSLocalizedString(@"IC_MSG",nil), address];
    -			appData->notification.alertAction = NSLocalizedString(@"Answer", nil);
    -			appData->notification.soundName = @"ring.caf";
    -			appData->notification.userInfo = [NSDictionary dictionaryWithObject:[NSData dataWithBytes:&call length:sizeof(call)] forKey:@"call"];
    +        if (![[LinphoneManager instance] shouldAutoAcceptCall]){
    +			// case where a remote notification is already received
    +			// Create a new local notification
    +			appData->notification = [[UILocalNotification alloc] init];
    +			if (appData->notification) {
    +				appData->notification.repeatInterval = 0;
    +				appData->notification.alertBody =[NSString  stringWithFormat:NSLocalizedString(@"IC_MSG",nil), address];
    +				appData->notification.alertAction = NSLocalizedString(@"Answer", nil);
    +				appData->notification.soundName = @"ring.caf";
    +				appData->notification.userInfo = [NSDictionary dictionaryWithObject:[NSData dataWithBytes:&call length:sizeof(call)] forKey:@"call"];
     			
     			[[UIApplication sharedApplication] presentLocalNotificationNow:appData->notification];
    +			}
     		}
     	} else {
    -       IncomingCallViewController *controller = DYNAMIC_CAST([self changeCurrentView:[IncomingCallViewController compositeViewDescription] push:TRUE],IncomingCallViewController);
    -        if(controller != nil) {
    -            [controller setCall:call];
    -            [controller setDelegate:self];
    -        }
    +		if ([[LinphoneManager instance] shouldAutoAcceptCall]){
    +			linphone_core_accept_call(linphone_call_get_core(call),call);
    +		}else{
    +			IncomingCallViewController *controller = DYNAMIC_CAST([self changeCurrentView:[IncomingCallViewController compositeViewDescription] push:TRUE],IncomingCallViewController);
    +			if(controller != nil) {
    +				[controller setCall:call];
    +				[controller setDelegate:self];
    +			}
    +		}
     	}
     }
     
    diff --git a/submodules/externals/exosip b/submodules/externals/exosip
    index dfe434328..6ba04c22c 160000
    --- a/submodules/externals/exosip
    +++ b/submodules/externals/exosip
    @@ -1 +1 @@
    -Subproject commit dfe434328c0b0cbbaee669d40b27e09fea5f49ab
    +Subproject commit 6ba04c22ccc8b140a9de84124d0e4ee7a406705b
    diff --git a/submodules/linphone b/submodules/linphone
    index 199108c92..bd6a97374 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit 199108c92435cc0f7daf3dd8f6bdc6d9830b3af0
    +Subproject commit bd6a9737485893b0bc08ffe75dfea6f71115b73c
    
    From 2d0a5d42eacfde5461efa4bd4f795f8fb239df8e Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Wed, 29 Aug 2012 13:00:37 +0200
    Subject: [PATCH 176/397] organize better config files and fix spelling issue.
    
    ---
     Resources/{linphonrc => linphonerc}           |  0
     .../linphonerc-factory                        |  0
     .../linphonerc-factory~ipad                   |  0
     linphone.xcodeproj/project.pbxproj            | 36 +++++++++----------
     4 files changed, 18 insertions(+), 18 deletions(-)
     rename Resources/{linphonrc => linphonerc} (100%)
     rename linphonerc-factory => Resources/linphonerc-factory (100%)
     rename linphonerc-factory~ipad => Resources/linphonerc-factory~ipad (100%)
    
    diff --git a/Resources/linphonrc b/Resources/linphonerc
    similarity index 100%
    rename from Resources/linphonrc
    rename to Resources/linphonerc
    diff --git a/linphonerc-factory b/Resources/linphonerc-factory
    similarity index 100%
    rename from linphonerc-factory
    rename to Resources/linphonerc-factory
    diff --git a/linphonerc-factory~ipad b/Resources/linphonerc-factory~ipad
    similarity index 100%
    rename from linphonerc-factory~ipad
    rename to Resources/linphonerc-factory~ipad
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index 5d3d11f8a..247a0bad6 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -52,7 +52,6 @@
     		226F2ED81344B0EF00F6EF27 /* libmsamr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED51344B0EF00F6EF27 /* libmsamr.a */; };
     		2274401A106F31BD006EC466 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22744019106F31BD006EC466 /* CoreAudio.framework */; };
     		2274402F106F335E006EC466 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2274402E106F335E006EC466 /* AudioToolbox.framework */; };
    -		2274550810700509006EC466 /* linphonerc-factory in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc-factory */; };
     		228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 228697C311AC29B800E9E0CA /* CFNetwork.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
     		22968A5F12F875C600588287 /* UISpeakerButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22968A5E12F875C600588287 /* UISpeakerButton.m */; };
     		22A10F3B11F8960300373793 /* libortp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2C10765B400068D98F /* libortp.a */; };
    @@ -122,13 +121,18 @@
     		34075199150645A300B89C47 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340751961506459A00B89C47 /* CoreTelephony.framework */; };
     		340751E7150F38FD00B89C47 /* UIVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIVideoButton.m */; };
     		340751E8150F38FD00B89C47 /* UIVideoButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 340751E6150F38FD00B89C47 /* UIVideoButton.m */; };
    -		341FCA8E149798210084BC26 /* linphonerc-factory~ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-factory~ipad */; };
     		34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; };
     		34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */; };
     		344ABDE81484E723007420B6 /* libzrtpcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDE71484E723007420B6 /* libzrtpcpp.a */; };
     		344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
     		344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
     		34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */ = {isa = PBXBuildFile; fileRef = 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */; };
    +		57F005C415EE2CCF00914747 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C315EE2CCF00914747 /* linphonerc */; };
    +		57F005C515EE2CCF00914747 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C315EE2CCF00914747 /* linphonerc */; };
    +		57F005C815EE2D9200914747 /* linphonerc-factory in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C615EE2D9200914747 /* linphonerc-factory */; };
    +		57F005C915EE2D9200914747 /* linphonerc-factory in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C615EE2D9200914747 /* linphonerc-factory */; };
    +		57F005CA15EE2D9200914747 /* linphonerc-factory~ipad in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C715EE2D9200914747 /* linphonerc-factory~ipad */; };
    +		57F005CB15EE2D9200914747 /* linphonerc-factory~ipad in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C715EE2D9200914747 /* linphonerc-factory~ipad */; };
     		70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */ = {isa = PBXBuildFile; fileRef = 70571E1913FABCB000CDD3C2 /* rootca.pem */; };
     		7066FC0C13E830E400EFC6DC /* libvpx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7066FC0B13E830E400EFC6DC /* libvpx.a */; };
     		70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; };
    @@ -187,8 +191,6 @@
     		D3211BBE159CBFD60098460B /* back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* back_default.png */; };
     		D3211BC0159CBFD70098460B /* back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* back_disabled.png */; };
     		D3211BC2159CBFD70098460B /* back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBD159CBFD60098460B /* back_over.png */; };
    -		D321FF9615E628BB0098B5F4 /* linphonrc in Resources */ = {isa = PBXBuildFile; fileRef = D321FF9515E628BB0098B5F4 /* linphonrc */; };
    -		D321FF9715E628BB0098B5F4 /* linphonrc in Resources */ = {isa = PBXBuildFile; fileRef = D321FF9515E628BB0098B5F4 /* linphonrc */; };
     		D321FF9915E628CB0098B5F4 /* linphonerc~ipad in Resources */ = {isa = PBXBuildFile; fileRef = D321FF9815E628CB0098B5F4 /* linphonerc~ipad */; };
     		D321FF9A15E628CB0098B5F4 /* linphonerc~ipad in Resources */ = {isa = PBXBuildFile; fileRef = D321FF9815E628CB0098B5F4 /* linphonerc~ipad */; };
     		D32409C3158B49A600C8C119 /* UILongTouchButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32409C2158B49A600C8C119 /* UILongTouchButton.m */; };
    @@ -454,8 +456,6 @@
     		D34BD6A215C13DB70070C209 /* linphone-banner.png in Resources */ = {isa = PBXBuildFile; fileRef = 225CB2F911ABB76400628906 /* linphone-banner.png */; };
     		D34BD6A415C13DB70070C209 /* linphone_icon_57.png in Resources */ = {isa = PBXBuildFile; fileRef = 22058C70116E305000B08DDD /* linphone_icon_57.png */; };
     		D34BD6A515C13DB70070C209 /* linphone_icon_72.png in Resources */ = {isa = PBXBuildFile; fileRef = 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */; };
    -		D34BD6A615C13DB70070C209 /* linphonerc-factory in Resources */ = {isa = PBXBuildFile; fileRef = 2274550710700509006EC466 /* linphonerc-factory */; };
    -		D34BD6A715C13DB70070C209 /* linphonerc-factory~ipad in Resources */ = {isa = PBXBuildFile; fileRef = 341FCA8D149798210084BC26 /* linphonerc-factory~ipad */; };
     		D34BD6A815C13DB70070C209 /* list_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5416159858A80037DC6B /* list_delete_default.png */; };
     		D34BD6A915C13DB70070C209 /* list_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5417159858A80037DC6B /* list_delete_over.png */; };
     		D34BD6AA15C13DB70070C209 /* list_details_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354981815876FE7000081D8 /* list_details_default.png */; };
    @@ -1360,7 +1360,6 @@
     		2274402E106F335E006EC466 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
     		22744043106F33FC006EC466 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
     		22744056106F9BC9006EC466 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
    -		2274550710700509006EC466 /* linphonerc-factory */ = {isa = PBXFileReference; explicitFileType = text; fileEncoding = 4; path = "linphonerc-factory"; sourceTree = ""; };
     		228697C311AC29B800E9E0CA /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
     		22968A5D12F875C600588287 /* UISpeakerButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UISpeakerButton.h; sourceTree = ""; };
     		22968A5E12F875C600588287 /* UISpeakerButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UISpeakerButton.m; sourceTree = ""; };
    @@ -1465,13 +1464,15 @@
     		340751E4150E4D0200B89C47 /* CallDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallDelegate.h; sourceTree = ""; };
     		340751E5150F38FC00B89C47 /* UIVideoButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIVideoButton.h; sourceTree = ""; };
     		340751E6150F38FD00B89C47 /* UIVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIVideoButton.m; sourceTree = ""; };
    -		341FCA8D149798210084BC26 /* linphonerc-factory~ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "linphonerc-factory~ipad"; sourceTree = ""; };
     		34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoZoomHandler.h; path = LinphoneUI/VideoZoomHandler.h; sourceTree = ""; };
     		34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = VideoZoomHandler.m; path = LinphoneUI/VideoZoomHandler.m; sourceTree = ""; };
     		344ABDE71484E723007420B6 /* libzrtpcpp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libzrtpcpp.a; path = "liblinphone-sdk/apple-darwin/lib/libzrtpcpp.a"; sourceTree = ""; };
     		344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; };
     		344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; };
     		34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_72.png; path = Resources/linphone_icon_72.png; sourceTree = ""; };
    +		57F005C315EE2CCF00914747 /* linphonerc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = linphonerc; path = Resources/linphonerc; sourceTree = ""; };
    +		57F005C615EE2D9200914747 /* linphonerc-factory */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc-factory"; path = "Resources/linphonerc-factory"; sourceTree = ""; };
    +		57F005C715EE2D9200914747 /* linphonerc-factory~ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc-factory~ipad"; path = "Resources/linphonerc-factory~ipad"; sourceTree = ""; };
     		70571E1913FABCB000CDD3C2 /* rootca.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = rootca.pem; path = Resources/rootca.pem; sourceTree = ""; };
     		7066FC0B13E830E400EFC6DC /* libvpx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libvpx.a; path = "liblinphone-sdk/apple-darwin/lib/libvpx.a"; sourceTree = ""; };
     		70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
    @@ -1532,7 +1533,6 @@
     		D3211BBB159CBFD60098460B /* back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_default.png; path = Resources/back_default.png; sourceTree = ""; };
     		D3211BBC159CBFD60098460B /* back_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_disabled.png; path = Resources/back_disabled.png; sourceTree = ""; };
     		D3211BBD159CBFD60098460B /* back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_over.png; path = Resources/back_over.png; sourceTree = ""; };
    -		D321FF9515E628BB0098B5F4 /* linphonrc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = linphonrc; path = Resources/linphonrc; sourceTree = ""; };
     		D321FF9815E628CB0098B5F4 /* linphonerc~ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc~ipad"; path = "Resources/linphonerc~ipad"; sourceTree = ""; };
     		D32409C1158B49A600C8C119 /* UILongTouchButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILongTouchButton.h; sourceTree = ""; };
     		D32409C2158B49A600C8C119 /* UILongTouchButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UILongTouchButton.m; sourceTree = ""; };
    @@ -2656,6 +2656,9 @@
     		29B97317FDCFA39411CA2CEA /* Resources */ = {
     			isa = PBXGroup;
     			children = (
    +				57F005C615EE2D9200914747 /* linphonerc-factory */,
    +				57F005C715EE2D9200914747 /* linphonerc-factory~ipad */,
    +				57F005C315EE2CCF00914747 /* linphonerc */,
     				D3F83F741582253100336684 /* accept_default.png */,
     				D3F83F751582253100336684 /* accept_over.png */,
     				D3D6A39B159B0EEF005F692C /* add_call_default.png */,
    @@ -2853,10 +2856,7 @@
     				D33CF34815D3A03400CD4B85 /* linphone_icon_57@2x.png */,
     				34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */,
     				D33CF34915D3A03400CD4B85 /* linphone_icon_72@2x.png */,
    -				2274550710700509006EC466 /* linphonerc-factory */,
    -				341FCA8D149798210084BC26 /* linphonerc-factory~ipad */,
     				D321FF9815E628CB0098B5F4 /* linphonerc~ipad */,
    -				D321FF9515E628BB0098B5F4 /* linphonrc */,
     				D3EA5416159858A80037DC6B /* list_delete_default.png */,
     				D3EA5417159858A80037DC6B /* list_delete_over.png */,
     				D354981815876FE7000081D8 /* list_details_default.png */,
    @@ -3329,7 +3329,6 @@
     			isa = PBXResourcesBuildPhase;
     			buildActionMask = 2147483647;
     			files = (
    -				2274550810700509006EC466 /* linphonerc-factory in Resources */,
     				22F254811073D99800AC9B3F /* ringback.wav in Resources */,
     				2237D4091084D7A9001383EE /* ring.wav in Resources */,
     				22E0A823111C44E100B04932 /* ConsoleViewController.xib in Resources */,
    @@ -3340,7 +3339,6 @@
     				2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */,
     				2214783D1386A2030020F8B8 /* Localizable.strings in Resources */,
     				70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */,
    -				341FCA8E149798210084BC26 /* linphonerc-factory~ipad in Resources */,
     				34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */,
     				D347347A1580DDF1003C7B8C /* PhoneMainView.xib in Resources */,
     				D347347E1580E5F8003C7B8C /* history_default.png in Resources */,
    @@ -3762,9 +3760,11 @@
     				D30BBD1815D402A7000F93DD /* contact_ok_disabled.png in Resources */,
     				D3804E6015D92A57008072A5 /* msg.caf in Resources */,
     				D3804E6215D92A57008072A5 /* msg.wav in Resources */,
    -				D321FF9615E628BB0098B5F4 /* linphonrc in Resources */,
     				D321FF9915E628CB0098B5F4 /* linphonerc~ipad in Resources */,
     				2234C8CA15ED049A00E18E83 /* DialerViewController.xib in Resources */,
    +				57F005C415EE2CCF00914747 /* linphonerc in Resources */,
    +				57F005C815EE2D9200914747 /* linphonerc-factory in Resources */,
    +				57F005CA15EE2D9200914747 /* linphonerc-factory~ipad in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -3938,8 +3938,6 @@
     				D34BD6A215C13DB70070C209 /* linphone-banner.png in Resources */,
     				D34BD6A415C13DB70070C209 /* linphone_icon_57.png in Resources */,
     				D34BD6A515C13DB70070C209 /* linphone_icon_72.png in Resources */,
    -				D34BD6A615C13DB70070C209 /* linphonerc-factory in Resources */,
    -				D34BD6A715C13DB70070C209 /* linphonerc-factory~ipad in Resources */,
     				D34BD6A815C13DB70070C209 /* list_delete_default.png in Resources */,
     				D34BD6A915C13DB70070C209 /* list_delete_over.png in Resources */,
     				D34BD6AA15C13DB70070C209 /* list_details_default.png in Resources */,
    @@ -4205,9 +4203,11 @@
     				D30BBD1915D402A7000F93DD /* contact_ok_disabled.png in Resources */,
     				D3804E6115D92A57008072A5 /* msg.caf in Resources */,
     				D3804E6315D92A57008072A5 /* msg.wav in Resources */,
    -				D321FF9715E628BB0098B5F4 /* linphonrc in Resources */,
     				D321FF9A15E628CB0098B5F4 /* linphonerc~ipad in Resources */,
     				2234C8CB15ED049A00E18E83 /* DialerViewController.xib in Resources */,
    +				57F005C515EE2CCF00914747 /* linphonerc in Resources */,
    +				57F005C915EE2D9200914747 /* linphonerc-factory in Resources */,
    +				57F005CB15EE2D9200914747 /* linphonerc-factory~ipad in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    
    From 2049dccd0edf490a35e8ff2b25812e99d7ccbaa6 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Wed, 29 Aug 2012 22:18:18 +0200
    Subject: [PATCH 177/397] smoother startup when push notification token arrives
     (avoid running synchronizeAccounts just for that)
    
    ---
     Classes/LinphoneAppDelegate.m       |  2 +-
     Classes/LinphoneCoreSettingsStore.m | 20 +-------------------
     Classes/LinphoneManager.h           |  1 +
     Classes/LinphoneManager.m           | 28 +++++++++++++++++++++++++++-
     linphone.xcodeproj/project.pbxproj  |  4 ++--
     submodules/linphone                 |  2 +-
     6 files changed, 33 insertions(+), 24 deletions(-)
    
    diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m
    index b3fe14791..5f75c7652 100644
    --- a/Classes/LinphoneAppDelegate.m
    +++ b/Classes/LinphoneAppDelegate.m
    @@ -151,7 +151,7 @@
     }
     
     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    -    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound];
    +    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeBadge];
         
         if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]
     		&& [UIApplication sharedApplication].applicationState ==  UIApplicationStateBackground
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index 7258aad92..6dbc8ffef 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -370,25 +370,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		}
     		linphone_proxy_config_set_dial_escape_plus(proxyCfg,substitute_plus_by_00);
             
    -        //Add custom parameter
    -        NSData *tokenData = [[LinphoneManager instance] pushNotificationToken];
    -        if(tokenData != nil) {
    -            const unsigned char *tokenBuffer = [tokenData bytes];
    -            NSMutableString *tokenString = [NSMutableString stringWithCapacity:[tokenData length]*2];
    -            for(int i = 0; i < [tokenData length]; ++i) {
    -                [tokenString appendFormat:@"%02X", (unsigned int)tokenBuffer[i]];
    -            }
    -            // NSLocalizedString(@"IC_MSG", nil); // Fake for genstrings
    -            // NSLocalizedString(@"IM_MSG", nil); // Fake for genstrings
    -#ifdef DEBUG
    -	#define APPMODE_SUFFIX @"dev"
    -#else
    -	#define APPMODE_SUFFIX @"prod"
    -#endif
    -            NSString *params = [NSString stringWithFormat:@"app-id=%@.%@;pn-type=apple;pn-tok=%@;pn-msg-str=IM_MSG;pn-call-str=IC_MSG;pn-call-snd=ring.caf;pn-msg-snd=msg.caf", [[NSBundle mainBundle] bundleIdentifier],APPMODE_SUFFIX,tokenString];
    -            linphone_proxy_config_set_contact_parameters(proxyCfg, [params UTF8String]);
    -        }
    -        
    +        [[LinphoneManager instance ]addPushTokenToProxyConfig : proxyCfg ];
             
     		linphone_core_add_proxy_config(lc,proxyCfg);
     		//set to default proxy
    diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
    index 44f35bed8..7016fbd60 100644
    --- a/Classes/LinphoneManager.h
    +++ b/Classes/LinphoneManager.h
    @@ -102,6 +102,7 @@ typedef struct _LinphoneManagerSounds {
     - (void)becomeActive;
     - (BOOL)enterBackgroundMode;
     - (void)didReceiveRemoteNotification;
    +- (void)addPushTokenToProxyConfig: (LinphoneProxyConfig*)cfg;
     - (BOOL)shouldAutoAcceptCall;
     
     + (void)kickOffNetworkConnection;
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index ec6877f05..0862758e3 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -942,10 +942,36 @@ static LinphoneCoreVTable linphonec_vtable = {
             pushNotificationToken = [apushNotificationToken retain];
         }
         if([LinphoneManager isLcReady]) {
    -        [(LinphoneCoreSettingsStore*)settingsStore synchronizeAccount];
    +		LinphoneProxyConfig *cfg=nil;
    +		linphone_core_get_default_proxy(theLinphoneCore, &cfg);
    +        if (cfg) {
    +			linphone_proxy_config_edit(cfg);
    +			[self addPushTokenToProxyConfig: cfg];
    +			linphone_proxy_config_done(cfg);
    +		}
         }
     }
     
    +- (void)addPushTokenToProxyConfig: (LinphoneProxyConfig*)proxyCfg{
    +	NSData *tokenData =  pushNotificationToken;
    +	if(tokenData != nil) {
    +		const unsigned char *tokenBuffer = [tokenData bytes];
    +		NSMutableString *tokenString = [NSMutableString stringWithCapacity:[tokenData length]*2];
    +		for(int i = 0; i < [tokenData length]; ++i) {
    +			[tokenString appendFormat:@"%02X", (unsigned int)tokenBuffer[i]];
    +		}
    +		// NSLocalizedString(@"IC_MSG", nil); // Fake for genstrings
    +		// NSLocalizedString(@"IM_MSG", nil); // Fake for genstrings
    +#ifdef DEBUG
    +#define APPMODE_SUFFIX @"dev"
    +#else
    +#define APPMODE_SUFFIX @"prod"
    +#endif
    +		NSString *params = [NSString stringWithFormat:@"app-id=%@.%@;pn-type=apple;pn-tok=%@;pn-msg-str=IM_MSG;pn-call-str=IC_MSG;pn-call-snd=ring.caf;pn-msg-snd=msg.caf", [[NSBundle mainBundle] bundleIdentifier],APPMODE_SUFFIX,tokenString];
    +		linphone_proxy_config_set_contact_parameters(proxyCfg, [params UTF8String]);
    +	}
    +}
    +
     - (void)addInhibitedEvent:(NSString*)event {
         [inhibitedEvent addObject:event];
     }
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index 247a0bad6..23bcf40a7 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -4931,7 +4931,7 @@
     					"$(ARCHS_STANDARD_32_BIT)",
     					armv6,
     				);
    -				CODE_SIGN_IDENTITY = "iPhone Developer";
    +				CODE_SIGN_IDENTITY = "iPhone Developer: jehan monnier (E8MYPN2NXL)";
     				GCC_THUMB_SUPPORT = NO;
     				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
     				GCC_WARN_ABOUT_RETURN_TYPE = YES;
    @@ -4939,7 +4939,7 @@
     				HEADER_SEARCH_PATHS = "";
     				IPHONEOS_DEPLOYMENT_TARGET = 4.0;
     				LIBRARY_SEARCH_PATHS = "";
    -				PROVISIONING_PROFILE = "";
    +				PROVISIONING_PROFILE = "FFF4AA57-7302-4F48-B969-20CFC1B10BAF";
     				SDKROOT = iphoneos;
     				STANDARD_C_PLUS_PLUS_LIBRARY_TYPE = dynamic;
     				TARGETED_DEVICE_FAMILY = "1,2";
    diff --git a/submodules/linphone b/submodules/linphone
    index bd6a97374..5139b557f 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit bd6a9737485893b0bc08ffe75dfea6f71115b73c
    +Subproject commit 5139b557f8c922f16b4b2808d62cf63bdc293274
    
    From 0caa3e9461bb9e4bb66699476e5de19c3ed8efc7 Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Thu, 30 Aug 2012 08:52:08 +0200
    Subject: [PATCH 178/397] implement message delivery status notification
    
    ---
     Classes/ChatRoomTableViewController.h         |   1 +
     Classes/ChatRoomTableViewController.m         |  14 +++-
     Classes/ChatRoomViewController.m              |  16 ++++-
     Classes/DialerViewController.m                |   2 +-
     Classes/InCallTableViewController.m           |   4 +-
     Classes/InCallViewController.m                |   5 +-
     Classes/LinphoneManager.m                     |  30 ++++++---
     Classes/LinphoneUI/UICallBar.m                |   5 +-
     Classes/LinphoneUI/UIChatRoomCell.h           |   2 +-
     Classes/LinphoneUI/UIChatRoomCell.m           |  16 ++++-
     Classes/LinphoneUI/UIChatRoomCell.xib         |  61 +++++++++++++++---
     Classes/LinphoneUI/UIHangUpButton.m           |   3 +-
     Classes/LinphoneUI/UIPauseButton.m            |   4 +-
     Classes/Model/ChatModel.h                     |   3 +
     Classes/Model/ChatModel.m                     |  17 +++--
     Resources/chat_message_delivered.png          | Bin 0 -> 1701 bytes
     Resources/chat_message_inprogress.png         | Bin 0 -> 684 bytes
     Resources/chat_message_not_delivered.png      | Bin 0 -> 1488 bytes
     Resources/database.sqlite                     | Bin 3072 -> 0 bytes
     linphone.xcodeproj/project.pbxproj            |  24 +++++--
     .../liblinphone.xcodeproj/project.pbxproj     |   6 --
     submodules/linphone                           |   2 +-
     22 files changed, 162 insertions(+), 53 deletions(-)
     create mode 100644 Resources/chat_message_delivered.png
     create mode 100644 Resources/chat_message_inprogress.png
     create mode 100644 Resources/chat_message_not_delivered.png
     delete mode 100644 Resources/database.sqlite
    
    diff --git a/Classes/ChatRoomTableViewController.h b/Classes/ChatRoomTableViewController.h
    index e36041750..5d3b01ca2 100644
    --- a/Classes/ChatRoomTableViewController.h
    +++ b/Classes/ChatRoomTableViewController.h
    @@ -29,5 +29,6 @@
     @property (nonatomic, retain) NSString *remoteAddress;
     
     - (void)addChatEntry:(ChatModel*)chat;
    +- (void)updateChatEntry:(ChatModel*)chat;
     
     @end
    diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m
    index 3e8da2008..d06ade197 100644
    --- a/Classes/ChatRoomTableViewController.m
    +++ b/Classes/ChatRoomTableViewController.m
    @@ -71,7 +71,19 @@
         [self.tableView endUpdates];
         [self scrollToLastUnread:true];
     }
    -
    +- (void)updateChatEntry:(ChatModel*)chat {
    +    if(data == nil) {
    +        [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update entry: null data"];
    +        return;
    +    }
    +	NSInteger index = [data indexOfObject:chat];
    +    if (index<0) {
    +		[LinphoneLogger logc:LinphoneLoggerWarning format:"chat entries diesn not exixt"];
    +		return;
    +	}
    +	[[self tableView] reloadData]; //just reload
    +	return;
    +}
     - (void)scrollToLastUnread:(BOOL)animated {
         if(data == nil) {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot add entry: null data"];
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index 7d945b531..8d3282c71 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -186,6 +186,15 @@ static UICompositeViewDescription *compositeDescription = nil;
         }
         [avatarImage setImage:image];
     }
    +static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState state,void* ud) {
    +	ChatRoomViewController* thiz=(ChatRoomViewController*)ud;
    +	ChatModel *chat = (ChatModel *)linphone_chat_message_get_user_data(msg); 
    +	[LinphoneLogger log:LinphoneLoggerLog 
    +				 format:@"Delivery status for [%@] is [%s]",chat.message,linphone_chat_message_state_to_string(state)];
    +	[chat setState:[NSNumber numberWithInt:state]];
    +	[chat update];
    +	[thiz.tableController updateChatEntry:chat];
    +}
     
     - (BOOL)sendMessage:(NSString *)message {
         if(![LinphoneManager isLcReady]) {
    @@ -211,6 +220,7 @@ static UICompositeViewDescription *compositeDescription = nil;
     		}
     
     		chatRoom = linphone_core_create_chat_room([LinphoneManager getLc], [remoteAddress UTF8String]);
    +		
         }
         
         // Save message in database
    @@ -221,11 +231,13 @@ static UICompositeViewDescription *compositeDescription = nil;
         [chat setDirection:[NSNumber numberWithInt:0]];
         [chat setTime:[NSDate date]];
         [chat setRead:[NSNumber numberWithInt:1]];
    +	[chat setState:[NSNumber numberWithInt:1]]; //INPROGRESS
         [chat create];
         [tableController addChatEntry:chat];
         [chat release];
    -    
    -    linphone_chat_room_send_message(chatRoom, [message UTF8String]);
    +    LinphoneChatMessage* msg = linphone_chat_room_create_message(chatRoom,[message UTF8String]);
    +	linphone_chat_message_set_user_data(msg,chat);
    +    linphone_chat_room_send_message2(chatRoom, msg,message_status,self);
         return TRUE;
     }
     
    diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m
    index 21b20f6bc..707d4a829 100644
    --- a/Classes/DialerViewController.m
    +++ b/Classes/DialerViewController.m
    @@ -27,7 +27,7 @@
     #import "Utils.h"
     
     #include "linphonecore.h"
    -#include "private.h"
    +
     
     @implementation DialerViewController
     
    diff --git a/Classes/InCallTableViewController.m b/Classes/InCallTableViewController.m
    index 158df61ab..f4c939c4a 100644
    --- a/Classes/InCallTableViewController.m
    +++ b/Classes/InCallTableViewController.m
    @@ -22,7 +22,7 @@
     #import "UIConferenceHeader.h"
     #import "LinphoneManager.h"
     
    -#include "private.h"
    +
     
     @implementation InCallTableViewController
     
    @@ -92,7 +92,7 @@ enum TableSection {
     + (bool)isInConference:(LinphoneCall*) call {
         if (!call)
             return false;
    -    return linphone_call_get_current_params(call)->in_conference;
    +    return linphone_call_is_in_conference(call);
     }
     
     + (int)callCount:(LinphoneCore*) lc {
    diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m
    index e836a18ef..1c66439b7 100644
    --- a/Classes/InCallViewController.m
    +++ b/Classes/InCallViewController.m
    @@ -31,7 +31,7 @@
     #import "UILinphone.h"
     
     #include "linphonecore.h"
    -#include "private.h"
    +
     
     const NSInteger SECURE_BUTTON_TAG=5;
     
    @@ -428,7 +428,8 @@ static UICompositeViewDescription *compositeDescription = nil;
         [videoWaitingForFirstImage startAnimating];
         
         LinphoneCall *call = linphone_core_get_current_call([LinphoneManager getLc]);
    -    if (call != NULL && call->videostream) {
    +    //linphone_call_params_get_used_video_codec return 0 if no video stream enabled
    +	if (call != NULL && linphone_call_params_get_used_video_codec(linphone_call_get_current_params(call))) {
             linphone_call_set_next_video_frame_decoded_callback(call, hideSpinner, self);
         }
     }
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index 0862758e3..910d7279a 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -33,7 +33,7 @@
     
     #include "linphonecore_utils.h"
     #include "lpconfig.h"
    -#include "private.h"
    +
     
     static LinphoneCore* theLinphoneCore = nil;
     static LinphoneManager* theLinphoneManager = nil;
    @@ -231,13 +231,27 @@ struct codec_name_pref_table codec_pref_table[]={
     #pragma mark - Database Functions
     
     - (void)openDatabase {
    -    NSString *src = [LinphoneManager bundleFile:@"database.sqlite"];
    -    NSString *dst = [LinphoneManager documentFile:@"database.sqlite"];
    -    [LinphoneManager copyFile:src destination:dst override:FALSE];
    -
    -    if(sqlite3_open([dst UTF8String], &database) != SQLITE_OK) {
    -        [LinphoneLogger log:LinphoneLoggerError format:@"Can't open \"%@\" sqlite3 database.", dst];
    -    }
    +    NSString *databasePath = [LinphoneManager documentFile:@"chat_database.sqlite"];
    +	NSFileManager *filemgr = [NSFileManager defaultManager];
    +	//[filemgr removeItemAtPath:databasePath error:nil];
    +	BOOL firstInstall= ![filemgr fileExistsAtPath: databasePath ];
    +    
    +	if(sqlite3_open([databasePath UTF8String], &database) != SQLITE_OK) {
    +        [LinphoneLogger log:LinphoneLoggerError format:@"Can't open \"%@\" sqlite3 database.", databasePath];
    +		return;
    +    } 
    +	
    +	if (firstInstall) {
    +		char *errMsg;
    +		//better to create the db from the code
    +		const char *sql_stmt = "CREATE TABLE chat (id INTEGER PRIMARY KEY AUTOINCREMENT, localContact TEXT NOT NULL, remoteContact TEXT NOT NULL, direction INTEGER, message TEXT NOT NULL, time NUMERIC, read INTEGER, state INTEGER)";
    +			
    +			if (sqlite3_exec(database, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK) {
    +				[LinphoneLogger logc:LinphoneLoggerError format:"Can't create table error[%s] ", errMsg];
    +			}
    +	}
    +	
    +	[filemgr release];
     }
     
     - (void)closeDatabase {
    diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m
    index 968a0bc3c..db7d1c8a6 100644
    --- a/Classes/LinphoneUI/UICallBar.m
    +++ b/Classes/LinphoneUI/UICallBar.m
    @@ -23,7 +23,6 @@
     #import "Utils.h"
     
     #include "linphonecore.h"
    -#include "private.h"
     
     @implementation UICallBar
     
    @@ -218,6 +217,10 @@
         [[NSNotificationCenter defaultCenter] removeObserver:self 
                                                         name:kLinphoneCallUpdate
                                                       object:nil];
    +	if (linphone_core_get_calls_nb([LinphoneManager getLc]) == 0) {
    +		//reseting speaker button because no more call
    +		speakerButton.selected=FALSE; 
    +	}
     }
     
     #pragma mark - Event Functions
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h
    index 503fffe66..bb76a3c5d 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.h
    +++ b/Classes/LinphoneUI/UIChatRoomCell.h
    @@ -31,7 +31,7 @@
     @property (nonatomic, retain) IBOutlet UILabel *messageLabel;
     @property (nonatomic, retain) IBOutlet UIButton *deleteButton;
     @property (nonatomic, retain) IBOutlet UILabel *dateLabel;
    -
    +@property (nonatomic, retain) IBOutlet UIImageView* statusImage;
     - (id)initWithIdentifier:(NSString*)identifier;
     + (CGFloat)height:(ChatModel*)chat width:(int)width;
     
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m
    index 08d5ce136..badd8088f 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.m
    +++ b/Classes/LinphoneUI/UIChatRoomCell.m
    @@ -21,6 +21,7 @@
     #import "Utils.h"
     
     #import 
    +#include "linphonecore.h"
     
     @implementation UIChatRoomCell
     
    @@ -31,6 +32,7 @@
     @synthesize deleteButton;
     @synthesize dateLabel;
     @synthesize chat;
    +@synthesize statusImage;
     
     static const CGFloat CELL_MIN_HEIGHT = 40.0f;
     static const CGFloat CELL_MIN_WIDTH = 150.0f;
    @@ -59,7 +61,7 @@ static UIFont *CELL_FONT = nil;
         [messageLabel release];
         [deleteButton release];
         [dateLabel release];
    -    
    +    [statusImage release];
         [chat release];
         
         [super dealloc];
    @@ -96,6 +98,18 @@ static UIFont *CELL_FONT = nil;
         [dateFormatter setLocale:locale];
         [dateLabel setText:[dateFormatter stringFromDate:[chat time]]];
         [dateFormatter release];
    +	if ([chat.state intValue] == LinphoneChatMessageStateInProgress) {
    +		[statusImage setImage:[UIImage imageNamed:@"chat_message_inprogress.png"] ];
    +		statusImage.hidden=FALSE;
    +	} else if ([chat.state intValue] == LinphoneChatMessageStateDelivered) {
    +		[statusImage setImage:[UIImage imageNamed:@"chat_message_delivered.png"] ];
    +		statusImage.hidden=FALSE;
    +	} else if ([chat.state intValue] == LinphoneChatMessageStateNotDelivered) {
    +		[statusImage setImage:[UIImage imageNamed:@"chat_message_not_delivered.png"]];
    +		statusImage.hidden=FALSE;
    +	} else {
    +		statusImage.hidden=TRUE;
    +	}
     }
     
     - (void)setEditing:(BOOL)editing {
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib
    index 3b9e82293..e8127e89c 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.xib
    +++ b/Classes/LinphoneUI/UIChatRoomCell.xib
    @@ -3,19 +3,19 @@
     	
     		1296
     		11E53
    -		2549
    +		2182
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1181
     		
     		
    -			IBProxyObject
     			IBUIButton
     			IBUIImageView
    -			IBUILabel
     			IBUIView
    +			IBUILabel
    +			IBProxyObject
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -131,9 +131,10 @@
     							
     								
     								265
    -								{{14, 107}, {280, 7}}
    +								{{14, 107}, {260, 7}}
     								
     								
    +								
     								_NS:9
     								NO
     								YES
    @@ -144,17 +145,33 @@
     								
     								
     								0
    -								10
    +								8
     								2
     								
     									1
    -									10
    +									9
     								
     								
     									Helvetica
    -									10
    +									9
     									16
     								
    +								NO
    +							
    +							
    +								
    +								265
    +								{{284, 104}, {10, 10}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									chat_message_not_delivered.png
    +								
     							
     						
     						{{13, 13}, {294, 114}}
    @@ -186,6 +203,7 @@
     				{100, 100}
     				
     				
    +				
     				_NS:9
     				
     				IBCocoaTouchFramework
    @@ -196,6 +214,7 @@
     				{100, 100}
     				
     				
    +				
     				_NS:9
     				
     				IBCocoaTouchFramework
    @@ -267,6 +286,14 @@
     					
     					25
     				
    +				
    +					
    +						statusImage
    +						
    +						
    +					
    +					27
    +				
     				
     					
     						onDeleteClick:
    @@ -331,6 +358,7 @@
     							
     							
     							
    +							
     						
     						
     						messageView
    @@ -353,6 +381,12 @@
     						
     						timestampLabel
     					
    +					
    +						26
    +						
    +						
    +						status
    +					
     				
     			
     			
    @@ -367,6 +401,7 @@
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -375,7 +410,7 @@
     			
     			
     			
    -			25
    +			27
     		
     		
     			
    @@ -400,6 +435,7 @@
     						UIView
     						UILabel
     						UIView
    +						UIImageView
     					
     					
     						
    @@ -426,6 +462,10 @@
     							messageView
     							UIView
     						
    +						
    +							statusImage
    +							UIImageView
    +						
     					
     					
     						IBProjectSource
    @@ -444,9 +484,10 @@
     		3
     		
     			{71, 46}
    +			{18, 17}
     			{45, 45}
     			{45, 45}
     		
    -		1498
    +		1181
     	
     
    diff --git a/Classes/LinphoneUI/UIHangUpButton.m b/Classes/LinphoneUI/UIHangUpButton.m
    index 61e4f38a1..6cc759087 100644
    --- a/Classes/LinphoneUI/UIHangUpButton.m
    +++ b/Classes/LinphoneUI/UIHangUpButton.m
    @@ -20,7 +20,6 @@
     #import "UIHangUpButton.h"
     #import "LinphoneManager.h"
     
    -#import "private.h"
     
     @implementation UIHangUpButton
     
    @@ -30,7 +29,7 @@
     + (bool)isInConference:(LinphoneCall*) call {
         if (!call)
             return false;
    -    return linphone_call_get_current_params(call)->in_conference;
    +    return linphone_call_is_in_conference(call);
     }
     
     + (int)callCount:(LinphoneCore*) lc {
    diff --git a/Classes/LinphoneUI/UIPauseButton.m b/Classes/LinphoneUI/UIPauseButton.m
    index ed6b962b6..2eea9919d 100644
    --- a/Classes/LinphoneUI/UIPauseButton.m
    +++ b/Classes/LinphoneUI/UIPauseButton.m
    @@ -21,7 +21,7 @@
     #import "LinphoneManager.h"
     
     #include "linphonecore.h"
    -#include "private.h"
    +
     
     @implementation UIPauseButton
     
    @@ -62,7 +62,7 @@
     + (bool)isInConference: (LinphoneCall*) call {
         if (!call)
             return false;
    -    return linphone_call_get_current_params(call)->in_conference;
    +    return linphone_call_is_in_conference(call);
     }
     
     + (int)notInConferenceCallCount: (LinphoneCore*) lc {
    diff --git a/Classes/Model/ChatModel.h b/Classes/Model/ChatModel.h
    index f1258ba80..f8607fe9b 100644
    --- a/Classes/Model/ChatModel.h
    +++ b/Classes/Model/ChatModel.h
    @@ -19,6 +19,7 @@
     
     #import 
     
    +
     @interface ChatModel : NSObject {
         @private
         NSNumber *chatId;
    @@ -28,6 +29,7 @@
         NSString *message;
         NSDate *time;
         NSNumber *read;
    +	NSNumber *state; //0 IDLE, 1 in progress, 2 delivered, 3 not delivered see LinphoneChatMessageState
     }
     
     @property (readonly) NSNumber *chatId;
    @@ -37,6 +39,7 @@
     @property (copy) NSString *message;
     @property (copy) NSDate *time;
     @property (copy) NSNumber *read;
    +@property (copy) NSNumber *state;
     
     - (void)create;
     + (ChatModel*)read:(NSNumber*)id;
    diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m
    index a216cdd8d..291149373 100644
    --- a/Classes/Model/ChatModel.m
    +++ b/Classes/Model/ChatModel.m
    @@ -29,7 +29,7 @@
     @synthesize direction;
     @synthesize time;
     @synthesize read;
    -
    +@synthesize state;
     
     #pragma mark - Lifecycle Functions
     
    @@ -43,6 +43,7 @@
             self.message = [NSString stringWithUTF8String: (const char*) sqlite3_column_text(sqlStatement, 4)];
             self.time = [NSDate dateWithTimeIntervalSince1970:sqlite3_column_int(sqlStatement, 5)];
             self.read = [NSNumber numberWithInt:sqlite3_column_int(sqlStatement, 6)];
    +		self.state = [NSNumber numberWithInt:sqlite3_column_int(sqlStatement, 7)];  
         }
         return self;
     }
    @@ -55,7 +56,7 @@
         [direction release];
         [time release];
         [read release];
    -    
    +    [state release];
         [super dealloc];
     }
     
    @@ -69,7 +70,7 @@
             return;
         }
         
    -    const char *sql = "INSERT INTO chat (localContact, remoteContact, direction, message, time, read) VALUES (@LOCALCONTACT, @REMOTECONTACT, @DIRECTION, @MESSAGE, @TIME, @READ)";
    +    const char *sql = "INSERT INTO chat (localContact, remoteContact, direction, message, time, read, state) VALUES (@LOCALCONTACT, @REMOTECONTACT, @DIRECTION, @MESSAGE, @TIME, @READ, @STATE)";
         sqlite3_stmt *sqlStatement;
         if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) {
             [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)];
    @@ -83,6 +84,7 @@
         sqlite3_bind_text(sqlStatement, 4, [message UTF8String], -1, SQLITE_STATIC);
         sqlite3_bind_double(sqlStatement, 5, [time timeIntervalSince1970]);
         sqlite3_bind_int(sqlStatement, 6, [read intValue]);
    +	sqlite3_bind_int(sqlStatement, 7, [state intValue]);
         
         if (sqlite3_step(sqlStatement) != SQLITE_DONE) {
             [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)];
    @@ -134,7 +136,7 @@
             return;
         }
         
    -    const char *sql = "UPDATE chat SET localContact=@LOCALCONTACT, remoteContact=@REMOTECONTACT, direction=@DIRECTION, message=@MESSAGE, time=@TIME, read=@READ WHERE id=@ID";
    +    const char *sql = "UPDATE chat SET localContact=@LOCALCONTACT, remoteContact=@REMOTECONTACT, direction=@DIRECTION, message=@MESSAGE, time=@TIME, read=@READ, state=@STATE WHERE id=@ID";
         sqlite3_stmt *sqlStatement;
         if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) {
             [LinphoneLogger logc:LinphoneLoggerError format:"Can't prepare the query: %s (%s)", sql, sqlite3_errmsg(database)];
    @@ -148,7 +150,8 @@
         sqlite3_bind_text(sqlStatement, 4, [message UTF8String], -1, SQLITE_STATIC);
         sqlite3_bind_double(sqlStatement, 5, [time timeIntervalSince1970]);
         sqlite3_bind_int(sqlStatement, 6, [read intValue]);
    -    sqlite3_bind_int(sqlStatement, 7, [chatId intValue]);
    +    sqlite3_bind_int(sqlStatement, 7, [state intValue]);
    +	sqlite3_bind_int(sqlStatement, 8, [chatId intValue]);
         
         if (sqlite3_step(sqlStatement) != SQLITE_DONE) {
             [LinphoneLogger logc:LinphoneLoggerError format:"Error during execution of query: %s (%s)", sql, sqlite3_errmsg(database)];
    @@ -196,7 +199,7 @@
             return array;
         }
         
    -    const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read FROM chat GROUP BY remoteContact ORDER BY time DESC";
    +    const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read, state FROM chat GROUP BY remoteContact ORDER BY time DESC";
         sqlite3_stmt *sqlStatement;
         if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) {
             [LinphoneLogger logc:LinphoneLoggerError format:"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)];
    @@ -228,7 +231,7 @@
             return array;
         }
         
    -    const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read FROM chat WHERE remoteContact=@REMOTECONTACT ORDER BY time ASC";
    +    const char *sql = "SELECT id, localContact, remoteContact, direction, message, time, read, state FROM chat WHERE remoteContact=@REMOTECONTACT ORDER BY time ASC";
         sqlite3_stmt *sqlStatement;
         if (sqlite3_prepare_v2(database, sql, -1, &sqlStatement, NULL) != SQLITE_OK) {
             [LinphoneLogger logc:LinphoneLoggerError format:"Can't execute the query: %s (%s)", sql, sqlite3_errmsg(database)];
    diff --git a/Resources/chat_message_delivered.png b/Resources/chat_message_delivered.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..e788e2b0798f07d9699032f417803c27031ff4d4
    GIT binary patch
    literal 1701
    zcmeAS@N?(olHy`uVBq!ia0vp^LO?9Y!N$PAxIFeuK9D0>;u=vBoS#-wo>-L1;Fyx1
    zl&avFo0y&&l$w}QS$HzlhJk@uDKjLZB*NFnDmgz_FA=0huOhbqsGEVo#=fE;F*!T6
    zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%C
    zQ%e#RDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!W+OlMT!a6wD0u
    z42@09&CPWbj0_A7^bL&k4UKdS&8>`$tPBhkpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pF
    zzr4I$uiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMw
    zS&*t9lv*Mup|Ns9tG}vrp^yfdj
    z$e)id^$*AMO<3sTu({#Ki*x?H%eL*YZ`@XRMb%~kJBNbX1jnt$PbRmfL_Rk#a+<@t
    z$T7{x(AeO~jyq{7I&Y_0o>4!Rb@|*xz$yt+|W7Bxe%b&xVN_c*7u7lDuQJ-o1BeH*q*RW{ISW*
    zQYMFFes~8WVY%b&B3mxmJ<3t!d%A+@D0OjrC>SYc8NM
    z>jp!@5v%^1rF=>rSpqjo+{+EZzoaXv@`W5dWcS(g%F3&+R?q$E!7iGmwrSEUpEA2A
    zhO-v5p6@7ciGNc1v&_nFihP59!~KK5uUKfVcMQp3_#~0^_}mXevH5rFb^r5zGkK`6
    TO5Y|JRB?E^`njxgN@xNA@EMY3
    
    literal 0
    HcmV?d00001
    
    diff --git a/Resources/chat_message_inprogress.png b/Resources/chat_message_inprogress.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..d2fe9da56d4495847cb9fa90cf4674c411e0d388
    GIT binary patch
    literal 684
    zcmV;d0#p5oP)|WE1x-V1Nj~7#IP^
    zz*(<9^fpe~4?lmryr1Pa->c?by!D<)3!or!32gNG!;9u#o5S~$?Ol=V7j9j%Ddxr1
    zwkc*)+zQ+)+^a6`fB&4n-knqQ`P0*9YiqZ^X4wri*(iy~~R=D0g%Qp^%uB3RWme1-
    zx|gX(ZVBoYxX~)@SgXnp%F-~Kq{3NUKrb;XX2gj+k-2-lXPF*EbB?OYYsu6Z1*8$}
    zQs)tAh9Z*cAsSK1K;%ewUX07C^7W!H%u3vgl$lLxdsR}|QkE>v`mx^Y4@(8u+8Lh~
    zh3!oy6-7~DR?d+&WXX!p`lS;0`gh-)Ui)W3GEh}iJ7dv&6tr_3!t&Xp$M5F;NB;mlIboM=
    SQyD7&0000;u=vBoS#-wo>-L1;Fyx1
    zl&avFo0y&&l$w}QS$HzlhJk@uDKjLZB*NFnDmgz_FA=0huOhbqsGEVo#=fE;F*!T6
    zL?J0PJu}Z%>HY5gN(z}Nwo2iqz6QPp&Z!xh9#uuD!Bu`C$yM3OmMKd1b_zBXRzL%C
    zQ%e#RDspr3imfVamB8j&0ofp7eI*63l9Fs&C5WRUd;=7m^NUgyO!W+OlMT!a6wD0u
    z42@09&CPWbj0_A7^bL&k4UKdS&8>`$tPBhkpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pF
    zzr4I$uiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`f(~1RD^r68eAMw
    zS&*t9lvT3&BOEG(d2Tf!ehn>g_2qa446+ba3~y$=HcmaxYh8KkNL2@+=N@z4uAR@
    z4{|6pI0WhBOG?x=Ke23>A>0w^FzX$Yp|-$h#*I7z%q#*DjG^HSZ>@REzA|0-As_HG
    zAveF_NWMZE^P~L=jq4pAafgVdh)uQ+kiM|ZYrz9SYXxbA28o4o9{-LWFnBJ{d}ObW
    z!xj<*e-_)y(Kp&-5riVD;CADn_OPS2lAVCPM*}6M}O;w6m|T(NL1Tz;ZNzTfWL+5&t3=
    zD}~(~1liT+KAHSI=lm_D8%-NbW;_Ui_j06dLWm{u7&d_r*5jIxF5kE^50jm{+zKSEyYS+BruvuCKo|YGL(JOi%1E!GMvJ9;A5`&k^RW)5F;D%Zt=!EC{@
    zcODZ1#Z)uD9WU6%`rsmSN_*t0u(V5If8QT<>63bNFn;B`$=UL$EUcdnFP-<%$4v3%
    zw`Dq9OXg@a{Isw=?%W}>IyGJGVYlH{e(tg*jR}gP`xE}YKQ~v-XO4!+mh-PH|0@*V
    zVA9@L^v-5dJ-bP0l+XkK
    Dz#0)Q
    
    literal 0
    HcmV?d00001
    
    diff --git a/Resources/database.sqlite b/Resources/database.sqlite
    deleted file mode 100644
    index 1469b4df151ed14246ec8fa70f44a3b256555fd6..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 3072
    zcmeHGy-ve05O(5-45(w(^%kU74HGK^A+k_JlD5H>$bgVZ4~Uc>H8B$tyh`7UC&8%{
    zR3dfjP>@eL`_5;dzxz&iw+J$c@Lbh}kZ?gPVi@EKfDmFUrAj+#eXDcSZtU3mOq-m4
    zoek&%G0jUtPt~I3-!SkIP
    Date: Thu, 30 Aug 2012 12:07:12 +0200
    Subject: [PATCH 179/397] fix issue with time of remote notifications
    
    ---
     Classes/LinphoneManager.m | 7 ++++++-
     1 file changed, 6 insertions(+), 1 deletion(-)
    
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index 910d7279a..82ebd8ab2 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -733,7 +733,12 @@ static LinphoneCoreVTable linphonec_vtable = {
     }
     
     - (BOOL)shouldAutoAcceptCall{
    -	return lastRemoteNotificationTime!=0 && lastRemoteNotificationTime-time(NULL)<10;
    +	if (lastRemoteNotificationTime!=0){
    +		if ((time(NULL)-lastRemoteNotificationTime)<15)
    +			return TRUE;
    +		lastRemoteNotificationTime=0;
    +	}
    +	return FALSE;
     }
     
     - (BOOL)resignActive {
    
    From b652b2bd53a49aa3fd54fbab6852f18882eb8d1a Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Thu, 30 Aug 2012 12:46:02 +0200
    Subject: [PATCH 180/397] fix codec settings
    
    ---
     Classes/LinphoneManager.m | 3 ++-
     submodules/linphone       | 2 +-
     2 files changed, 3 insertions(+), 2 deletions(-)
    
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index 82ebd8ab2..410d9137c 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -116,7 +116,8 @@ struct codec_name_pref_table codec_pref_table[]={
     + (NSSet *)unsupportedCodecs {
         NSMutableSet *set = [NSMutableSet set];
     	for(int i=0;codec_pref_table[i].name!=NULL;++i) {
    -        if(linphone_core_find_payload_type([LinphoneManager getLc],codec_pref_table[i].name, codec_pref_table[i].rate,-1) == NULL) {
    +        if(linphone_core_find_payload_type([LinphoneManager getLc],codec_pref_table[i].name
    +										   , codec_pref_table[i].rate,LINPHONE_FIND_PAYLOAD_IGNORE_CHANNELS) == NULL) {
                 [set addObject:codec_pref_table[i].prefname];
     		}
     	}
    diff --git a/submodules/linphone b/submodules/linphone
    index d98fa4ed5..e1f018f27 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit d98fa4ed52f40001bef50be65c971a52ab845660
    +Subproject commit e1f018f274274d7574ebadd27659098453d8d1b5
    
    From 8ce4c7d15c60b1fd31183078cfac3d8bbbcd47e2 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Thu, 30 Aug 2012 16:13:57 +0200
    Subject: [PATCH 181/397] update exosip and use long running task for
     registering while in background.
    
    ---
     Classes/LinphoneManager.h   |  3 ++-
     Classes/LinphoneManager.m   | 25 +++++++++++++++++++++----
     submodules/externals/exosip |  2 +-
     3 files changed, 24 insertions(+), 6 deletions(-)
    
    diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
    index 7016fbd60..cea4de9d7 100644
    --- a/Classes/LinphoneManager.h
    +++ b/Classes/LinphoneManager.h
    @@ -78,7 +78,7 @@ typedef struct _LinphoneManagerSounds {
     	NSTimer* mIterateTimer;
         time_t lastRemoteNotificationTime;
     	Connectivity connectivity;
    -    
    +    BOOL stopWaitingRegisters;
         NSMutableArray *inhibitedEvent;
         
     @public
    @@ -104,6 +104,7 @@ typedef struct _LinphoneManagerSounds {
     - (void)didReceiveRemoteNotification;
     - (void)addPushTokenToProxyConfig: (LinphoneProxyConfig*)cfg;
     - (BOOL)shouldAutoAcceptCall;
    +- (void)waitForRegisterToArrive;
     
     + (void)kickOffNetworkConnection;
     - (void)setupNetworkReachabilityCallback;
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index 410d9137c..ee5abc758 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -389,6 +389,8 @@ static void linphone_iphone_transfer_state_changed(LinphoneCore* lc, LinphoneCal
     
     -(void) onRegister:(LinphoneCore *)lc cfg:(LinphoneProxyConfig*) cfg state:(LinphoneRegistrationState) state message:(const char*) message {
         [LinphoneLogger logc:LinphoneLoggerLog format:"NEW REGISTRATION STATE: '%s' (message: '%s')", linphone_registration_state_to_string(state), message];
    +	if (state==LinphoneRegistrationOk)
    +		[LinphoneManager instance]->stopWaitingRegisters=TRUE;
         
         // Post event
         NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
    @@ -507,10 +509,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
     				linphone_proxy_config_expires(proxy, lLinphoneMgr.defaultExpires); //might be better to save the previous value
     			}
     			
    -			if (lLinphoneMgr.connectivity == none) {
    -				linphone_core_set_network_reachable([LinphoneManager getLc],true);
    -				
    -			} else if (lLinphoneMgr.connectivity != newConnectivity) {
    +			if (lLinphoneMgr.connectivity != newConnectivity) {
     				// connectivity has changed
     				linphone_core_set_network_reachable([LinphoneManager getLc],false);
     				if (newConnectivity == wwan && proxy && isWifiOnly) {
    @@ -518,6 +517,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
     				} 
     				linphone_core_set_network_reachable([LinphoneManager getLc],true);
     				[LinphoneLogger logc:LinphoneLoggerLog format:"Network connectivity changed to type [%s]",(newConnectivity==wifi?"wifi":"wwan")];
    +				[lLinphoneMgr waitForRegisterToArrive];
     			}
     			lLinphoneMgr.connectivity=newConnectivity;
     		}
    @@ -749,6 +749,23 @@ static LinphoneCoreVTable linphonec_vtable = {
         return YES;
     }
     
    +- (void)waitForRegisterToArrive{
    +	int i;
    +	UIBackgroundTaskIdentifier bgid;
    +	stopWaitingRegisters=FALSE;
    +	[LinphoneLogger logc:LinphoneLoggerLog format:"Starting long running task for registering"];
    +	bgid=[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler: ^{
    +		[LinphoneManager instance]->stopWaitingRegisters=TRUE;
    +		[LinphoneLogger logc:LinphoneLoggerLog format:"Expiration handler called"];
    +	}];
    +	for(i=0;i<100 && (!stopWaitingRegisters);i++){
    +		linphone_core_iterate(theLinphoneCore);
    +		usleep(20000);
    +	}
    +	[LinphoneLogger logc:LinphoneLoggerLog format:"Ending long running task for registering"];
    +	[[UIApplication sharedApplication] endBackgroundTask:bgid];
    +}
    +
     - (BOOL)enterBackgroundMode {
     	LinphoneProxyConfig* proxyCfg;
     	linphone_core_get_default_proxy(theLinphoneCore, &proxyCfg);	
    diff --git a/submodules/externals/exosip b/submodules/externals/exosip
    index 6ba04c22c..b62c41677 160000
    --- a/submodules/externals/exosip
    +++ b/submodules/externals/exosip
    @@ -1 +1 @@
    -Subproject commit 6ba04c22ccc8b140a9de84124d0e4ee7a406705b
    +Subproject commit b62c4167702f5333686754f55a2da81705e170ba
    
    From 911b526564403dd1e7f9e010487562b188005405 Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Thu, 30 Aug 2012 16:30:58 +0200
    Subject: [PATCH 182/397] fix a bunch of settings
    
    ---
     Classes/LinphoneCoreSettingsStore.m      | 33 +++++++++++++++++-------
     Classes/LinphoneManager.m                |  1 +
     Resources/linphonerc                     | 14 +++++++++-
     Resources/linphonerc-factory             |  9 ++-----
     Settings/InAppSettings.bundle/Call.plist |  2 --
     submodules/linphone                      |  2 +-
     6 files changed, 40 insertions(+), 21 deletions(-)
    
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index 6dbc8ffef..eb1032839 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -103,6 +103,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     			[self setString: linphone_address_get_username(addr) forKey:@"username_preference"];
     			[self setString: linphone_address_get_domain(addr) forKey:@"domain_preference"];
                 [self setInteger: linphone_proxy_config_get_expires(cfg) forKey:@"expire_preference"];
    +			[self setString:linphone_proxy_config_get_dial_prefix(cfg) forKey:@"prefix_preference"];
     			if (strcmp(linphone_address_get_domain(addr),linphone_address_get_domain(proxy_addr))!=0
     				|| port!=NULL){
     				char tmp[256]={0};
    @@ -115,6 +116,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     			linphone_address_destroy(proxy_addr);
     			
     			[self setBool: (linphone_proxy_config_get_route(cfg)!=NULL) forKey:@"outbound_proxy_preference"];
    +			[self setBool:linphone_proxy_config_get_dial_escape_plus(cfg) forKey:@"substitute_+_by_00_preference"];
     			
     		}
     	}
    @@ -332,11 +334,11 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		
     		const char* proxy = [proxyAddress cStringUsingEncoding:[NSString defaultCStringEncoding]];
     		
    -		NSString* prefix = [self stringForKey:@"prefix_preference"];
    -        bool substitute_plus_by_00 = [self boolForKey:@"substitute_+_by_00_preference"];
    +		
    +        
     		//possible valid config detected
     		
    -		proxyCfg = linphone_proxy_config_new();
    +		proxyCfg = linphone_core_create_proxy_config(lc);
             
     		// add username password
     		LinphoneAddress *from = linphone_address_new(identity);
    @@ -356,19 +358,30 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		if (isWifiOnly && lLinphoneMgr.connectivity == wwan) {
     			linphone_proxy_config_expires(proxyCfg, 0);
     		} else {
    -            int expire = [self integerForKey:@"expire_preference"];
    -            if(expire < lLinphoneMgr.defaultExpires)
    -                expire = lLinphoneMgr.defaultExpires;
    -			linphone_proxy_config_expires(proxyCfg, expire);
    +            if ([self objectForKey:@"expire_preference"]) {
    +				int expire = [self integerForKey:@"expire_preference"];
    +				/*if(expire < lLinphoneMgr.defaultExpires)
    +				 expire = lLinphoneMgr.defaultExpires;*/
    +				linphone_proxy_config_expires(proxyCfg, expire);
    +			}
    +			//else not set 
    +		
     		}
     		
     		if (isOutboundProxy)
     			linphone_proxy_config_set_route(proxyCfg,proxy);
     		
    -		if ([prefix length]>0) {
    -			linphone_proxy_config_set_dial_prefix(proxyCfg, [prefix cStringUsingEncoding:[NSString defaultCStringEncoding]]);
    +		if ([self objectForKey:@"prefix_preference"]) {		
    +			NSString* prefix = [self stringForKey:@"prefix_preference"];
    +			if ([prefix length]>0) {
    +				linphone_proxy_config_set_dial_prefix(proxyCfg, [prefix cStringUsingEncoding:[NSString defaultCStringEncoding]]);
    +			}
     		}
    -		linphone_proxy_config_set_dial_escape_plus(proxyCfg,substitute_plus_by_00);
    +		if ([self objectForKey:@"substitute_+_by_00_preference"]) {
    +			bool substitute_plus_by_00 = [self boolForKey:@"substitute_+_by_00_preference"];
    +			linphone_proxy_config_set_dial_escape_plus(proxyCfg,substitute_plus_by_00);
    +		}
    +		
             
             [[LinphoneManager instance ]addPushTokenToProxyConfig : proxyCfg ];
             
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index ee5abc758..99e103af9 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -612,6 +612,7 @@ static LinphoneCoreVTable linphonec_vtable = {
     	/* Initialize linphone core*/
     	
         [LinphoneLogger logc:LinphoneLoggerLog format:"Create linphonecore"];
    +	linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler);
     	theLinphoneCore = linphone_core_new (&linphonec_vtable
     										 , [confiFileName cStringUsingEncoding:[NSString defaultCStringEncoding]]
     										 , [factoryConfig cStringUsingEncoding:[NSString defaultCStringEncoding]]
    diff --git a/Resources/linphonerc b/Resources/linphonerc
    index 2b37b20f2..1aa810d4c 100644
    --- a/Resources/linphonerc
    +++ b/Resources/linphonerc
    @@ -4,7 +4,19 @@ sip_tcp_random_port=1
     sip_tls_random_port=1
     contact="Linphone iPhone" 
     keepalive_period=30000
    +default_proxy=0
     
     [rtp]
     audio_rtp_port=7076
    -video_rtp_port=9078
    \ No newline at end of file
    +video_rtp_port=9078
    +
    +[video]
    +display=1
    +capture=1
    +show_local=0
    +enabled=1
    +size=qvga
    +display_filter_auto_rotate=1
    +
    +
    +
    diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory
    index d69466a06..c2a9d7950 100644
    --- a/Resources/linphonerc-factory
    +++ b/Resources/linphonerc-factory
    @@ -29,11 +29,6 @@ dtmf_player_amp=0.007
     history_max_size=30
     max_calls=3
     
    -[video]
    -display=1
    -capture=1
    -show_local=0
    -enabled=1
    -size=qvga
    -display_filter_auto_rotate=1
     
    +[default_values]
    +reg_expires=600
    diff --git a/Settings/InAppSettings.bundle/Call.plist b/Settings/InAppSettings.bundle/Call.plist
    index b5e1a7f6d..378b6b856 100644
    --- a/Settings/InAppSettings.bundle/Call.plist
    +++ b/Settings/InAppSettings.bundle/Call.plist
    @@ -15,8 +15,6 @@
     			
     			Key
     			prefix_preference
    -			KeyboardType
    -			NumberPad
     			Title
     			Prefix
     			Type
    diff --git a/submodules/linphone b/submodules/linphone
    index e1f018f27..4e847d24c 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit e1f018f274274d7574ebadd27659098453d8d1b5
    +Subproject commit 4e847d24ca5c3a5012cb62beee4248667428b24c
    
    From d70cc9d76dc3d6504ffb6f405429d4df6ea038a2 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Fri, 31 Aug 2012 09:28:51 +0200
    Subject: [PATCH 183/397] fix bugs with chat
    
    ---
     Classes/ChatRoomTableViewController.h |  2 +-
     Classes/ChatRoomViewController.h      |  1 +
     Classes/ChatRoomViewController.m      | 50 +++++++++++++--------------
     Classes/LinphoneUI/UIChatCell.m       | 15 +++++---
     4 files changed, 36 insertions(+), 32 deletions(-)
    
    diff --git a/Classes/ChatRoomTableViewController.h b/Classes/ChatRoomTableViewController.h
    index 5d3b01ca2..c29786f6b 100644
    --- a/Classes/ChatRoomTableViewController.h
    +++ b/Classes/ChatRoomTableViewController.h
    @@ -26,7 +26,7 @@
         NSMutableArray *data;
     }
     
    -@property (nonatomic, retain) NSString *remoteAddress;
    +@property (nonatomic, copy) NSString *remoteAddress;
     
     - (void)addChatEntry:(ChatModel*)chat;
     - (void)updateChatEntry:(ChatModel*)chat;
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index c39d7d93d..82a8a2a75 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -29,6 +29,7 @@
     @interface ChatRoomViewController : UIViewController {
         @private
         LinphoneChatRoom *chatRoom;
    +	NSString *_remoteAddress;
     }
     
     
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index 8d3282c71..a144d846c 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -28,7 +28,7 @@
     @synthesize sendButton;
     @synthesize messageField;
     @synthesize editButton;
    -@synthesize remoteAddress;
    +@synthesize remoteAddress = _remoteAddress;
     @synthesize addressLabel;
     @synthesize avatarImage;
     @synthesize headerView;
    @@ -53,7 +53,7 @@
         [messageField release];
         [sendButton release];
         [editButton release];
    -    [remoteAddress release];
    +    [_remoteAddress release];
         [addressLabel release];
         [avatarImage release];
         [headerView release];
    @@ -150,33 +150,40 @@ static UICompositeViewDescription *compositeDescription = nil;
     #pragma mark - 
     
     - (void)setRemoteAddress:(NSString*)aRemoteAddress {
    -    if(remoteAddress != nil) {
    -        [remoteAddress release];
    +    if(_remoteAddress != nil) {
    +        [_remoteAddress release];
         }
    -    remoteAddress = [aRemoteAddress copy];
    +    _remoteAddress = [aRemoteAddress copy];
         [messageField setText:@""];
    -    [tableController setRemoteAddress: remoteAddress];
         [self update];
    +	[tableController setRemoteAddress: _remoteAddress];
     }
     
     - (void)update {
    -    if(remoteAddress == NULL) {
    +    if(_remoteAddress == NULL) {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat room header: null contact"];
             return;
         }
         
         NSString *displayName = nil;
         UIImage *image = nil;
    -    NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:remoteAddress];
    +	LinphoneAddress* linphoneAddress =linphone_core_interpret_url([LinphoneManager getLc],[_remoteAddress cStringUsingEncoding: NSUTF8StringEncoding]);
    +	if (linphoneAddress==NULL)
    +		return ;
    +	char *tmp=linphone_address_as_string_uri_only(linphoneAddress);
    +	NSString *normalizedSipAddress=[NSString stringWithUTF8String:tmp];
    +	ms_free(tmp);
    +	
         ABRecordRef acontact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress];
         if(acontact != nil) {
             displayName = [FastAddressBook getContactDisplayName:acontact];
             image = [FastAddressBook getContactImage:acontact thumbnail:true];
         }
    -    
    +	[_remoteAddress release];
    +    _remoteAddress =[normalizedSipAddress retain];
         // Display name
         if(displayName == nil) {
    -        displayName = remoteAddress;
    +        displayName = [NSString stringWithUTF8String:linphone_address_get_username(linphoneAddress)];
         }
         [addressLabel setText:displayName];
         
    @@ -185,7 +192,9 @@ static UICompositeViewDescription *compositeDescription = nil;
             image = [UIImage imageNamed:@"avatar_unknown_small.png"];
         }
         [avatarImage setImage:image];
    +	linphone_address_destroy(linphoneAddress);
     }
    +
     static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState state,void* ud) {
     	ChatRoomViewController* thiz=(ChatRoomViewController*)ud;
     	ChatModel *chat = (ChatModel *)linphone_chat_message_get_user_data(msg); 
    @@ -201,31 +210,20 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot send message: Linphone core not ready"];
             return FALSE;
         }
    -    if(remoteAddress == nil) {
    +    if(_remoteAddress == nil) {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot send message: Null remoteAddress"];
             return FALSE;
         }
         if(chatRoom == NULL) {
    -		LinphoneProxyConfig* proxyCfg;
    -		linphone_core_get_default_proxy([LinphoneManager getLc], &proxyCfg);
    -		if (![remoteAddress hasPrefix:@"sip:"] && proxyCfg) {
    -			//hmm probably a username only
    -			char normalizedUserName[256];
    -			LinphoneAddress* linphoneAddress = linphone_address_new(linphone_core_get_identity([LinphoneManager getLc]));  
    -			linphone_proxy_config_normalize_number(proxyCfg,[remoteAddress cStringUsingEncoding:[NSString defaultCStringEncoding]],normalizedUserName,sizeof(normalizedUserName));
    -			linphone_address_set_username(linphoneAddress, normalizedUserName);
    -			remoteAddress=[NSString stringWithUTF8String:normalizedUserName];
    -			linphone_address_destroy(linphoneAddress);
    -			
    -		}
    +		
     
    -		chatRoom = linphone_core_create_chat_room([LinphoneManager getLc], [remoteAddress UTF8String]);
    +		chatRoom = linphone_core_create_chat_room([LinphoneManager getLc], [_remoteAddress UTF8String]);
     		
         }
         
         // Save message in database
         ChatModel *chat = [[ChatModel alloc] init];
    -    [chat setRemoteContact:remoteAddress];
    +    [chat setRemoteContact:_remoteAddress];
         [chat setLocalContact:@""];
         [chat setMessage:message];
         [chat setDirection:[NSNumber numberWithInt:0]];
    @@ -253,7 +251,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
             char *fromStr = linphone_address_as_string_uri_only(from);
             if(fromStr != NULL) {
                 if([[NSString stringWithUTF8String:fromStr] 
    -                caseInsensitiveCompare:remoteAddress] == NSOrderedSame) {
    +                caseInsensitiveCompare:_remoteAddress] == NSOrderedSame) {
                     [chat setRead:[NSNumber numberWithInt:1]];
                     [chat update];
                     [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneTextReceived object:self];
    diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m
    index acfecb71a..b6ad2bd80 100644
    --- a/Classes/LinphoneUI/UIChatCell.m
    +++ b/Classes/LinphoneUI/UIChatCell.m
    @@ -71,14 +71,18 @@
     #pragma mark - 
     
     - (void)update {
    +	NSString *displayName = nil;
    +    UIImage *image = nil;
         if(chat == nil) {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat cell: null chat"];
             return;
         }
    -    
    -    NSString *displayName = nil;
    -    UIImage *image = nil;
    -    NSString *normalizedSipAddress = [FastAddressBook normalizeSipURI:[chat remoteContact]];
    +    LinphoneAddress* linphoneAddress =linphone_core_interpret_url([LinphoneManager getLc],[[chat remoteContact] cStringUsingEncoding: NSUTF8StringEncoding]);
    +	if (linphoneAddress==NULL)
    +		return ;
    +	char *tmp=linphone_address_as_string_uri_only(linphoneAddress);
    +	NSString *normalizedSipAddress=[NSString stringWithUTF8String:tmp];
    +	ms_free(tmp);
         ABRecordRef contact =[[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress];
         if(contact != nil) {
             displayName = [FastAddressBook getContactDisplayName:contact];
    @@ -87,7 +91,7 @@
         
         // Display name
         if(displayName == nil) {
    -        displayName = [chat remoteContact];
    +        displayName = [NSString stringWithCString:linphone_address_get_username(linphoneAddress) encoding:NSUTF8StringEncoding];
         }
         [addressLabel setText:displayName];
         
    @@ -99,6 +103,7 @@
         
         // Message
         [chatContentLabel setText:[chat message]];
    +	linphone_address_destroy(linphoneAddress);
     }
     
     - (void)layoutSubviews {
    
    From 9a52094affbdddf20c3938870816d1099ce5545e Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Fri, 31 Aug 2012 16:49:29 +0200
    Subject: [PATCH 184/397] update linphone submodule with better dial plan
     handling
    
    ---
     submodules/linphone | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/submodules/linphone b/submodules/linphone
    index 4e847d24c..feebeb262 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit 4e847d24ca5c3a5012cb62beee4248667428b24c
    +Subproject commit feebeb262ec6908cf053c2850143ab45e71e77b9
    
    From ca298e8e14c8ae2f9930c45b56c94ec789aaf9cb Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Fri, 31 Aug 2012 18:18:46 +0200
    Subject: [PATCH 185/397] update submodule linphone to share call country code
     table
    
    ---
     submodules/linphone | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/submodules/linphone b/submodules/linphone
    index feebeb262..ba4ff464b 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit feebeb262ec6908cf053c2850143ab45e71e77b9
    +Subproject commit ba4ff464b3e382cfc0ac2f806f383c11752a8d8c
    
    From 667280868ac00e1ab5076d46a939d9c4b3d9d59f Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Mon, 3 Sep 2012 16:36:11 +0200
    Subject: [PATCH 186/397] fix ice settings
    
    ---
     Classes/ChatViewController.m        | 20 +++++++++++++-------
     Classes/LinphoneCoreSettingsStore.m |  3 +--
     2 files changed, 14 insertions(+), 9 deletions(-)
    
    diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m
    index 190d9e5a8..3c1a294a5 100644
    --- a/Classes/ChatViewController.m
    +++ b/Classes/ChatViewController.m
    @@ -103,6 +103,15 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     #pragma mark - Action Functions
     
    +-(void) startChatRoom {
    +	//Push ChatRoom
    +	ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription] push:TRUE], ChatRoomViewController);
    +	if(controller != nil) {
    +		[controller setRemoteAddress:[addressField text]];
    +	}
    +	addressField.text = @"";
    +	
    +}
     - (IBAction)onAddClick:(id)event {
         if ([[addressField text ]length] == 0) { // if no address is manually set, lauch address book
     		[ContactSelection setSelectionMode:ContactSelectionModeMessage];
    @@ -110,12 +119,7 @@ static UICompositeViewDescription *compositeDescription = nil;
     		[ContactSelection setSipFilter:TRUE];
     		[[PhoneMainView instance] changeCurrentView:[ContactsViewController compositeViewDescription] push:TRUE];
     	} else {
    -		//Push ChatRoom
    -		ChatRoomViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ChatRoomViewController compositeViewDescription] push:TRUE], ChatRoomViewController);
    -		if(controller != nil) {
    -			[controller setRemoteAddress:[addressField text]];
    -		}
    -		addressField.text = @"";
    +		[self startChatRoom]; 
     	}
     }
     
    @@ -127,6 +131,8 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     - (BOOL)textFieldShouldReturn:(UITextField *)textField {
         [addressField resignFirstResponder];
    -    return YES;
    +    if ([[addressField text ]length]> 0) 
    +		[self startChatRoom];
    +	return YES;
     }
     @end
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index eb1032839..a963bb6c4 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -162,8 +162,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     	{
     		[self setString: linphone_core_get_stun_server(lc) forKey:@"stun_preference"];
             [self
    -            setInteger:lp_config_get_int(linphone_core_get_config(lc),"app","ice_preference"
    -            , 0) forKey:@"ice_preference"];
    +            setBool:linphone_core_get_firewall_policy(lc)==LinphonePolicyUseIce forKey:@"ice_preference"];
     	}
     	
     	{
    
    From 9215dde5d90c96c49c8d2be73d501d3fd5d32199 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Mon, 3 Sep 2012 22:56:10 +0200
    Subject: [PATCH 187/397] fix bug with expire field that was ALWAYS set to 600
     regardless of user's preferences, preventing push notifications to work.
     update exosip for TCP reset transport fix.
    
    ---
     Classes/LinphoneCoreSettingsStore.m | 16 +++++++---------
     Classes/LinphoneManager.h           |  1 -
     Classes/LinphoneManager.m           |  4 +---
     submodules/externals/exosip         |  2 +-
     4 files changed, 9 insertions(+), 14 deletions(-)
    
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index a963bb6c4..b3eb2ff30 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -102,7 +102,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     			
     			[self setString: linphone_address_get_username(addr) forKey:@"username_preference"];
     			[self setString: linphone_address_get_domain(addr) forKey:@"domain_preference"];
    -            [self setInteger: linphone_proxy_config_get_expires(cfg) forKey:@"expire_preference"];
    +            [self setInteger: lp_config_get_int(linphone_core_get_config(lc),"app","default_expires",3600) forKey:@"expire_preference"];
     			[self setString:linphone_proxy_config_get_dial_prefix(cfg) forKey:@"prefix_preference"];
     			if (strcmp(linphone_address_get_domain(addr),linphone_address_get_domain(proxy_addr))!=0
     				|| port!=NULL){
    @@ -352,19 +352,17 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		linphone_proxy_config_set_identity(proxyCfg,identity);
     		linphone_proxy_config_set_server_addr(proxyCfg,proxy);
     		linphone_proxy_config_enable_register(proxyCfg,true);
    +		
    +
    +		int expire = [self integerForKey:@"expire_preference"];
    +		lp_config_set_int(linphone_core_get_config(lc),"app","default_expires",expire);
    +		
     		BOOL isWifiOnly = [self boolForKey:@"wifi_only_preference"];
     		
     		if (isWifiOnly && lLinphoneMgr.connectivity == wwan) {
     			linphone_proxy_config_expires(proxyCfg, 0);
     		} else {
    -            if ([self objectForKey:@"expire_preference"]) {
    -				int expire = [self integerForKey:@"expire_preference"];
    -				/*if(expire < lLinphoneMgr.defaultExpires)
    -				 expire = lLinphoneMgr.defaultExpires;*/
    -				linphone_proxy_config_expires(proxyCfg, expire);
    -			}
    -			//else not set 
    -		
    +            linphone_proxy_config_expires(proxyCfg,expire);
     		}
     		
     		if (isOutboundProxy)
    diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
    index cea4de9d7..7e9bbea89 100644
    --- a/Classes/LinphoneManager.h
    +++ b/Classes/LinphoneManager.h
    @@ -126,7 +126,6 @@ typedef struct _LinphoneManagerSounds {
     @property (nonatomic, retain) id settingsStore;
     @property (readonly) FastAddressBook* fastAddressBook;
     @property Connectivity connectivity;
    -@property (nonatomic) int defaultExpires;
     @property (readonly) const char*  frontCamId;
     @property (readonly) const char*  backCamId;
     @property (readonly) sqlite3* database;
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index 99e103af9..a2e2a5739 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -73,7 +73,6 @@ extern  void libmsbcg729_init();
     @synthesize connectivity;
     @synthesize frontCamId;
     @synthesize backCamId;
    -@synthesize defaultExpires;
     @synthesize settingsStore;
     @synthesize database;
     @synthesize fastAddressBook;
    @@ -203,7 +202,6 @@ struct codec_name_pref_table codec_pref_table[]={
             logs = [[NSMutableArray alloc] init];
             database = NULL;
             settingsStore = nil;
    -		self.defaultExpires = 600;
             [self openDatabase];
             [self copyDefaultSettings];
     		lastRemoteNotificationTime=0;
    @@ -506,7 +504,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
     				&& (lLinphoneMgr.connectivity == newConnectivity || lLinphoneMgr.connectivity == none)) {
     				linphone_proxy_config_expires(proxy, 0);
     			} else if (proxy){
    -				linphone_proxy_config_expires(proxy, lLinphoneMgr.defaultExpires); //might be better to save the previous value
    +				linphone_proxy_config_expires(proxy, lp_config_get_int(linphone_core_get_config([LinphoneManager getLc]),"app","default_expires",3600));
     			}
     			
     			if (lLinphoneMgr.connectivity != newConnectivity) {
    diff --git a/submodules/externals/exosip b/submodules/externals/exosip
    index b62c41677..cabb39c79 160000
    --- a/submodules/externals/exosip
    +++ b/submodules/externals/exosip
    @@ -1 +1 @@
    -Subproject commit b62c4167702f5333686754f55a2da81705e170ba
    +Subproject commit cabb39c79560ab11c3dc668ce9d5fee8ea19e832
    
    From 3752fab5ad6a6d7b6905dd9e56055add4fe85622 Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Wed, 5 Sep 2012 10:33:56 +0200
    Subject: [PATCH 188/397] rework on settings store
    
    ---
     Classes/FirstLoginViewController.m            | 30 +++++++++-----
     Classes/InCallViewController.m                |  2 +-
     Classes/LinphoneCoreSettingsStore.h           |  1 +
     Classes/LinphoneManager.h                     | 13 +++++-
     Classes/LinphoneManager.m                     | 40 +++++++++++++++----
     Classes/LinphoneUI/UICallBar.m                |  8 ++--
     .../LinphoneUI/UICompositeViewController.m    |  2 +-
     Classes/PhoneMainView.m                       |  4 +-
     Classes/SettingsViewController.h              |  3 ++
     Classes/SettingsViewController.m              | 21 +++++-----
     Classes/Utils/FastAddressBook.m               |  2 +-
     Classes/WizardViewController.m                | 22 +++++-----
     submodules/linphone                           |  2 +-
     13 files changed, 104 insertions(+), 46 deletions(-)
    
    diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m
    index 9d447b0d5..014cf0c35 100644
    --- a/Classes/FirstLoginViewController.m
    +++ b/Classes/FirstLoginViewController.m
    @@ -79,8 +79,9 @@ static UICompositeViewDescription *compositeDescription = nil;
                                                      name:kLinphoneRegistrationUpdate
                                                    object:nil];
         
    -	[usernameField setText:[[LinphoneManager instance].settingsStore objectForKey:@"username_preference"]];
    -	[passwordField setText:[[LinphoneManager instance].settingsStore objectForKey:@"password_preference"]];
    +	
    +	[usernameField setText:[[LinphoneManager instance] lpConfigStringForKey:@"wizard_username"]];
    +	[passwordField setText:[[LinphoneManager instance] lpConfigStringForKey:@"wizard_password"]];
         
         // Update on show
         const MSList* list = linphone_core_get_proxy_config_list([LinphoneManager getLc]);
    @@ -104,7 +105,7 @@ static UICompositeViewDescription *compositeDescription = nil;
     - (void)viewDidLoad {
         [super viewDidLoad];
         
    -	NSString* siteUrl = [[LinphoneManager instance].settingsStore objectForKey:@"first_login_view_url"];
    +	NSString* siteUrl = [[LinphoneManager instance] lpConfigStringForKey:@"first_login_view_url"];
     	if (siteUrl==nil) {
     		siteUrl=@"http://www.linphone.org";
     	}
    @@ -123,7 +124,7 @@ static UICompositeViewDescription *compositeDescription = nil;
     - (void)registrationUpdate:(LinphoneRegistrationState)state {
         switch (state) {
             case LinphoneRegistrationOk: {
    -            [[LinphoneManager instance].settingsStore setBool:false forKey:@"enable_first_login_view_preference"]; 
    +            [[LinphoneManager instance] lpConfigSetBool:FALSE forKey:@"enable_first_login_view_preference"]; 
                 [waitView setHidden:true];
                 [[PhoneMainView instance] changeCurrentView:[DialerViewController compositeViewDescription]];
                 break;
    @@ -137,8 +138,8 @@ static UICompositeViewDescription *compositeDescription = nil;
                 [waitView setHidden:true];
                 
                 //erase uername passwd
    -			[[LinphoneManager instance].settingsStore setObject:Nil forKey:@"username_preference"];
    -			[[LinphoneManager instance].settingsStore setObject:Nil forKey:@"password_preference"];
    +			[[LinphoneManager instance] lpConfigSetString:nil forKey:@"wizard_username"];
    +			[[LinphoneManager instance] lpConfigSetString:nil forKey:@"wizard_password"];
                 break;
             }
             case LinphoneRegistrationProgress: {
    @@ -175,10 +176,21 @@ static UICompositeViewDescription *compositeDescription = nil;
     		[error show];
             [error release];
     	} else {
    -		[[LinphoneManager instance].settingsStore setObject:usernameField.text forKey:@"username_preference"];
    -		[[LinphoneManager instance].settingsStore setObject:passwordField.text forKey:@"password_preference"];
    +		linphone_core_clear_all_auth_info([LinphoneManager getLc]);
    +		linphone_core_clear_proxy_config([LinphoneManager getLc]);
    +		LinphoneProxyConfig* proxyCfg = linphone_core_create_proxy_config([LinphoneManager getLc]);
    +		/*default domain is supposed to be preset from linphonerc*/
    +		NSString* identity = [NSString stringWithFormat:@"sip:%@@%@",usernameField.text,linphone_proxy_config_get_addr(proxyCfg)];
    +		linphone_proxy_config_set_identity(proxyCfg,[identity UTF8String]);
    +		LinphoneAuthInfo* auth_info =linphone_auth_info_new([usernameField.text UTF8String]
    +															,[usernameField.text UTF8String]
    +															,[passwordField.text UTF8String]
    +															,NULL
    +															,NULL);
    +		linphone_core_add_auth_info([LinphoneManager getLc], auth_info);
    +		linphone_core_add_proxy_config([LinphoneManager getLc], proxyCfg);
    +		linphone_core_set_default_proxy([LinphoneManager getLc], proxyCfg);
     		[self.waitView setHidden:false];
    -        [[LinphoneManager instance].settingsStore synchronize];
     	};
     }
     
    diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m
    index 1c66439b7..a3a6c0a11 100644
    --- a/Classes/InCallViewController.m
    +++ b/Classes/InCallViewController.m
    @@ -403,7 +403,7 @@ static UICompositeViewDescription *compositeDescription = nil;
             [UIView commitAnimations];
         }
         
    -    if([[[LinphoneManager instance] settingsStore] boolForKey:@"self_video_preference"]) {
    +    if([[LinphoneManager instance] lpConfigBoolForKey:@"self_video_preference"]) {
             [videoPreview setHidden:FALSE];
         } else {
             [videoPreview setHidden:TRUE];
    diff --git a/Classes/LinphoneCoreSettingsStore.h b/Classes/LinphoneCoreSettingsStore.h
    index ab6b214c8..ee73e33ea 100644
    --- a/Classes/LinphoneCoreSettingsStore.h
    +++ b/Classes/LinphoneCoreSettingsStore.h
    @@ -23,6 +23,7 @@
     #import "LinphoneManager.h"
     
     @interface LinphoneCoreSettingsStore : IASKAbstractSettingsStore {
    +	@private
     	NSDictionary *dict;
     	NSDictionary *changedDict;
     }
    diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
    index 7e9bbea89..ee87cf12a 100644
    --- a/Classes/LinphoneManager.h
    +++ b/Classes/LinphoneManager.h
    @@ -80,6 +80,7 @@ typedef struct _LinphoneManagerSounds {
     	Connectivity connectivity;
         BOOL stopWaitingRegisters;
         NSMutableArray *inhibitedEvent;
    +	
         
     @public
         CallContext currentCallContextBeforeGoingBackground;
    @@ -123,7 +124,17 @@ typedef struct _LinphoneManagerSounds {
     
     - (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer;
     
    -@property (nonatomic, retain) id settingsStore;
    +-(void)lpConfigSetString:(NSString*) value forKey:(NSString*) key; 
    +-(NSString*)lpConfigStringForKey:(NSString*) key;
    +
    +-(void)lpConfigSetInt:(NSInteger) value forKey:(NSString*) key; 
    +-(NSInteger)lpConfigIntForKey:(NSString*) key;
    +
    +-(void)lpConfigSetBool:(BOOL) value forKey:(NSString*) key; 
    +-(BOOL)lpConfigBoolForKey:(NSString*) key;
    +
    +
    +
     @property (readonly) FastAddressBook* fastAddressBook;
     @property Connectivity connectivity;
     @property (readonly) const char*  frontCamId;
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index a2e2a5739..641c285c5 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -73,7 +73,6 @@ extern  void libmsbcg729_init();
     @synthesize connectivity;
     @synthesize frontCamId;
     @synthesize backCamId;
    -@synthesize settingsStore;
     @synthesize database;
     @synthesize fastAddressBook;
     @synthesize pushNotificationToken;
    @@ -180,7 +179,7 @@ struct codec_name_pref_table codec_pref_table[]={
     
     - (id)init {
         if ((self = [super init])) {
    -        fastAddressBook = [[FastAddressBook alloc] init];
    +        
             
             {
                 NSString *path = [[NSBundle mainBundle] pathForResource:@"ring" ofType:@"wav"];
    @@ -201,7 +200,6 @@ struct codec_name_pref_table codec_pref_table[]={
             inhibitedEvent = [[NSMutableArray alloc] init];
             logs = [[NSMutableArray alloc] init];
             database = NULL;
    -        settingsStore = nil;
             [self openDatabase];
             [self copyDefaultSettings];
     		lastRemoteNotificationTime=0;
    @@ -220,7 +218,6 @@ struct codec_name_pref_table codec_pref_table[]={
         [inhibitedEvent release];
         [fastAddressBook release];
         [self closeDatabase];
    -    [settingsStore release];
         [logs release];
         
         [super dealloc];
    @@ -616,6 +613,9 @@ static LinphoneCoreVTable linphonec_vtable = {
     										 , [factoryConfig cStringUsingEncoding:[NSString defaultCStringEncoding]]
     										 ,self);
         
    +	
    +	fastAddressBook = [[FastAddressBook alloc] init];
    +	
         linphone_core_set_root_ca(theLinphoneCore, lRootCa);
     	// Set audio assets
     	const char* lRing = [[myBundle pathForResource:@"ring"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
    @@ -691,8 +691,7 @@ static LinphoneCoreVTable linphonec_vtable = {
         else
             ms_set_cpu_count(1);
         
    -	if (!settingsStore)
    -		settingsStore = [[LinphoneCoreSettingsStore alloc] init];
    +
         
         [LinphoneLogger logc:LinphoneLoggerWarning format:"Linphone [%s]  started on [%s]"
                    ,linphone_core_get_version()
    @@ -742,8 +741,6 @@ static LinphoneCoreVTable linphonec_vtable = {
     }
     
     - (BOOL)resignActive {
    -    if ([[LinphoneManager instance] settingsStore] != Nil)
    -		[[[LinphoneManager instance] settingsStore] synchronize];
     	linphone_core_stop_dtmf_stream(theLinphoneCore);
         return YES;
     }
    @@ -1061,4 +1058,31 @@ static LinphoneCoreVTable linphonec_vtable = {
         return TRUE;
     }
     
    +
    +
    +
    +
    +-(void)lpConfigSetString:(NSString*) value forKey:(NSString*) key {
    +	lp_config_set_string(linphone_core_get_config(theLinphoneCore),"app",value?[key UTF8String]:NULL, [value UTF8String]);
    +}
    +-(NSString*)lpConfigStringForKey:(NSString*) key {
    +	const char* value=lp_config_get_string(linphone_core_get_config(theLinphoneCore),"app",[key UTF8String],NULL);	
    +	if (value) 
    +		return [NSString stringWithCString:value encoding:[NSString defaultCStringEncoding]];
    +	else
    +		return nil;
    +}
    +-(void)lpConfigSetInt:(NSInteger) value forKey:(NSString*) key {
    +	lp_config_set_int(linphone_core_get_config(theLinphoneCore),"app",[key UTF8String], value );
    +}
    +-(NSInteger)lpConfigIntForKey:(NSString*) key {
    +	return lp_config_get_int(linphone_core_get_config(theLinphoneCore),"app",[key UTF8String],-1);
    +}
    +
    +-(void)lpConfigSetBool:(BOOL) value forKey:(NSString*) key {
    +	return [self lpConfigSetInt:(NSInteger)(value==TRUE) forKey:key];
    +}
    +-(BOOL)lpConfigBoolForKey:(NSString*) key {
    +	return [self lpConfigIntForKey:key] == 1;		
    +}
     @end
    diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m
    index db7d1c8a6..b6a02a307 100644
    --- a/Classes/LinphoneUI/UICallBar.m
    +++ b/Classes/LinphoneUI/UICallBar.m
    @@ -374,9 +374,9 @@
     
     - (IBAction)onPadClick:(id)sender {
         if([padView isHidden]) {
    -        [self showPad:[[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"]];
    +        [self showPad:[[LinphoneManager instance] lpConfigBoolForKey:@"animations_preference"]];
         } else {
    -        [self hidePad:[[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"]];
    +        [self hidePad:[[LinphoneManager instance] lpConfigBoolForKey:@"animations_preference"]];
         }
     }
     
    @@ -402,9 +402,9 @@
     
     - (IBAction)onOptionsClick:(id)sender {
         if([optionsView isHidden]) {
    -        [self showOptions:[[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"]];
    +        [self showOptions:[[LinphoneManager instance] lpConfigBoolForKey:@"animations_preference"]];
         } else {
    -        [self hideOptions:[[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"]];
    +        [self hideOptions:[[LinphoneManager instance] lpConfigBoolForKey:@"animations_preference"]];
         }
     }
     
    diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m
    index b1f6b8c77..68e2037f0 100644
    --- a/Classes/LinphoneUI/UICompositeViewController.m
    +++ b/Classes/LinphoneUI/UICompositeViewController.m
    @@ -326,7 +326,7 @@
                 return [UIApplication sharedApplication].statusBarOrientation;
             }
             
    -        NSString* rotationPreference = [[LinphoneManager instance].settingsStore objectForKey:@"rotation_preference"];
    +        NSString* rotationPreference = [[LinphoneManager instance] lpConfigStringForKey:@"rotation_preference"];
             if([rotationPreference isEqualToString:@"auto"]) {
                 // Don't rotate in UIDeviceOrientationFaceUp UIDeviceOrientationFaceDown
                 if(!UIDeviceOrientationIsPortrait(deviceOrientation) && !UIDeviceOrientationIsLandscape(deviceOrientation)) {
    diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m
    index 845764367..4daf01701 100644
    --- a/Classes/PhoneMainView.m
    +++ b/Classes/PhoneMainView.m
    @@ -371,7 +371,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
     #pragma mark - 
     
     - (void)startUp {   
    -    if ([[LinphoneManager instance].settingsStore boolForKey:@"enable_first_login_view_preference"] == true) {
    +    if ([[LinphoneManager instance] lpConfigBoolForKey:@"enable_first_login_view_preference"]  == true) {
             // Change to fist login view
             [self changeCurrentView: [FirstLoginViewController compositeViewDescription]];
         } else {
    @@ -484,7 +484,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
         if(force || ![view equal: currentView]) {
             if(transition == nil)
                 transition = [PhoneMainView getTransition:currentView new:view];
    -        if ([[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"] == true) {
    +        if ([[LinphoneManager instance] lpConfigBoolForKey:@"animations_preference"] == true) {
                 [mainViewController setViewTransition:transition];
             } else {
                 [mainViewController setViewTransition:nil];
    diff --git a/Classes/SettingsViewController.h b/Classes/SettingsViewController.h
    index 9cc04a88e..af0be21d4 100644
    --- a/Classes/SettingsViewController.h
    +++ b/Classes/SettingsViewController.h
    @@ -21,8 +21,11 @@
     
     #import "UICompositeViewController.h"
     #import "IASKAppSettingsViewController.h"
    +#import "LinphoneCoreSettingsStore.h"
     
     @interface SettingsViewController: UIViewController {
    +	@private
    +	LinphoneCoreSettingsStore* settingsStore;
     }
     
     @property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
    diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
    index dbaba1d44..bd10907d0 100644
    --- a/Classes/SettingsViewController.m
    +++ b/Classes/SettingsViewController.m
    @@ -29,7 +29,7 @@
     #import "IASKPSTextFieldSpecifierViewCell.h"
     #import "IASKSpecifier.h"
     #import "IASKTextField.h"
    -
    +#include "lpconfig.h"
     
     #pragma mark - IASKSwitchEx Class
     
    @@ -349,9 +349,9 @@
     - (void)dealloc {
         // Remove all observer
         [[NSNotificationCenter defaultCenter] removeObserver:self];
    -    [settingsController release];
    +    [settingsStore release];
    +	[settingsController release];
         [navigationController release];
    -    
         [super dealloc];
     }
     
    @@ -379,12 +379,15 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     - (void)viewDidLoad {
         [super viewDidLoad];
    -    
    +	
    +	settingsStore = [[LinphoneCoreSettingsStore alloc] init];
    +	[settingsStore transformLinphoneCoreToKeys];
    +	
         settingsController.showDoneButton = FALSE;
         settingsController.delegate = self;
         settingsController.showCreditsFooter = FALSE;
         settingsController.hiddenKeys = [self findHiddenKeys];
    -    settingsController.settingsStore = [[LinphoneManager instance] settingsStore];
    +    settingsController.settingsStore = settingsStore;
         
         [navigationController.view setBackgroundColor:[UIColor clearColor]];
         
    @@ -491,7 +494,7 @@ static UICompositeViewDescription *compositeDescription = nil;
             [hiddenKeys addObject:@"backgroundmode_preference"];
             [hiddenKeys addObject:@"start_at_boot_preference"];
         } else {
    -         if(![[[[LinphoneManager instance] settingsStore] objectForKey:@"backgroundmode_preference"] boolValue]) {
    +         if(![[LinphoneManager instance] lpConfigBoolForKey:@"backgroundmode_preference"]) {
                  [hiddenKeys addObject:@"start_at_boot_preference"];
              }
         }
    @@ -505,15 +508,15 @@ static UICompositeViewDescription *compositeDescription = nil;
         
         [hiddenKeys addObjectsFromArray:[[LinphoneManager unsupportedCodecs] allObjects]];
         
    -    if([[[[LinphoneManager instance] settingsStore] objectForKey:@"random_port_preference"] boolValue]) {
    +    if(lp_config_get_int(linphone_core_get_config([LinphoneManager getLc]),"sip","sip_random_port",0)==1) {
             [hiddenKeys addObject:@"port_preference"];
         }
     
    -    if([[[[LinphoneManager instance] settingsStore] objectForKey:@"stun_preference"]  length] == 0) {
    +    if(linphone_core_get_stun_server([LinphoneManager getLc]) != NULL) {
             [hiddenKeys addObject:@"ice_preference"];
         }
     
    -    if(![[[[LinphoneManager instance] settingsStore] objectForKey:@"debugenable_preference"] boolValue]) {
    +    if(![[LinphoneManager instance] lpConfigBoolForKey:@"debugenable_preference"]) {
             [hiddenKeys addObject:@"console_button"];
         }
         
    diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m
    index e09152d7a..3994fb536 100644
    --- a/Classes/Utils/FastAddressBook.m
    +++ b/Classes/Utils/FastAddressBook.m
    @@ -57,7 +57,7 @@
     
     + (NSString*)appendCountryCodeIfPossible:(NSString*)number {
         if (![number hasPrefix:@"+"] && ![number hasPrefix:@"00"]) {
    -        NSString* lCountryCode = [[LinphoneManager instance].settingsStore objectForKey:@"countrycode_preference"];
    +        NSString* lCountryCode = [[LinphoneManager instance] lpConfigStringForKey:@"countrycode_preference"];
             if (lCountryCode && [lCountryCode length]>0) {
                 //append country code
                 return [lCountryCode stringByAppendingString:number];
    diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m
    index e2607d7a6..e1cdf533f 100644
    --- a/Classes/WizardViewController.m
    +++ b/Classes/WizardViewController.m
    @@ -226,7 +226,7 @@ static UICompositeViewDescription *compositeDescription = nil;
         }
         
         // Animation
    -    if(animation && [[LinphoneManager instance].settingsStore boolForKey:@"animations_preference"] == true) {
    +    if(animation && [[LinphoneManager instance] lpConfigBoolForKey:@"animations_preference"] == true) {
           CATransition* trans = [CATransition animation];
           [trans setType:kCATransitionPush];
           [trans setDuration:0.35];
    @@ -254,17 +254,21 @@ static UICompositeViewDescription *compositeDescription = nil;
     }
     
     - (void)clearProxyConfig {
    -    [[LinphoneManager instance].settingsStore setObject:@"" forKey:@"username_preference"];
    -    [[LinphoneManager instance].settingsStore setObject:@"" forKey:@"password_preference"];
    -    [[LinphoneManager instance].settingsStore setObject:@"" forKey:@"domain_preference"];
    -    [[LinphoneManager instance].settingsStore synchronize];
    +	linphone_core_clear_proxy_config([LinphoneManager getLc]);
    +	linphone_core_clear_all_auth_info([LinphoneManager getLc]);
     }
     
     - (void)addProxyConfig:(NSString*)username password:(NSString*)password domain:(NSString*)domain {
    -    [[LinphoneManager instance].settingsStore setObject:username forKey:@"username_preference"];
    -    [[LinphoneManager instance].settingsStore setObject:password forKey:@"password_preference"];
    -    [[LinphoneManager instance].settingsStore setObject:domain forKey:@"domain_preference"];
    -    [[LinphoneManager instance].settingsStore synchronize];
    +	const char* identity = [[NSString stringWithFormat:@"sip:%@@%@",username,domain] UTF8String];
    +	LinphoneProxyConfig* proxyCfg = linphone_core_create_proxy_config([LinphoneManager getLc]);
    +	LinphoneAuthInfo* info=linphone_auth_info_new([username UTF8String],NULL,[password UTF8String],NULL,NULL);
    +	linphone_proxy_config_set_identity(proxyCfg,identity);
    +	linphone_proxy_config_set_server_addr(proxyCfg,[domain UTF8String]);
    +	linphone_proxy_config_enable_register(proxyCfg,true);
    +	linphone_core_add_proxy_config([LinphoneManager getLc], proxyCfg);
    +	linphone_core_set_default_proxy([LinphoneManager getLc], proxyCfg);
    +	linphone_core_add_auth_info([LinphoneManager getLc],info)
    +	;
     }
     
     - (void)checkUserExist:(NSString*)username {
    diff --git a/submodules/linphone b/submodules/linphone
    index ba4ff464b..acd370ea9 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit ba4ff464b3e382cfc0ac2f806f383c11752a8d8c
    +Subproject commit acd370ea93fff73c76a74f1cbb3f1c8b64bdef72
    
    From 9afa1b4f0c1e7e38331dd728b7a29ea61490d855 Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Wed, 5 Sep 2012 10:49:33 +0200
    Subject: [PATCH 189/397] fix ice settings
    
    ---
     Classes/SettingsViewController.m | 2 +-
     submodules/externals/exosip      | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
    index bd10907d0..f175f609f 100644
    --- a/Classes/SettingsViewController.m
    +++ b/Classes/SettingsViewController.m
    @@ -512,7 +512,7 @@ static UICompositeViewDescription *compositeDescription = nil;
             [hiddenKeys addObject:@"port_preference"];
         }
     
    -    if(linphone_core_get_stun_server([LinphoneManager getLc]) != NULL) {
    +    if(linphone_core_get_stun_server([LinphoneManager getLc]) == NULL) {
             [hiddenKeys addObject:@"ice_preference"];
         }
     
    diff --git a/submodules/externals/exosip b/submodules/externals/exosip
    index cabb39c79..b62c41677 160000
    --- a/submodules/externals/exosip
    +++ b/submodules/externals/exosip
    @@ -1 +1 @@
    -Subproject commit cabb39c79560ab11c3dc668ce9d5fee8ea19e832
    +Subproject commit b62c4167702f5333686754f55a2da81705e170ba
    
    From f6ccdb1f7369cdecf6942c95493c82c2ab25392e Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Wed, 5 Sep 2012 16:18:10 +0200
    Subject: [PATCH 190/397] update exosip
    
    ---
     submodules/externals/exosip | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/submodules/externals/exosip b/submodules/externals/exosip
    index b62c41677..cabb39c79 160000
    --- a/submodules/externals/exosip
    +++ b/submodules/externals/exosip
    @@ -1 +1 @@
    -Subproject commit b62c4167702f5333686754f55a2da81705e170ba
    +Subproject commit cabb39c79560ab11c3dc668ce9d5fee8ea19e832
    
    From d10205ebc3b35469fddedea1dda5cc5e87de7751 Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Wed, 5 Sep 2012 16:35:52 +0200
    Subject: [PATCH 191/397] update linphone for ice & srtp
    
    ---
     submodules/linphone | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/submodules/linphone b/submodules/linphone
    index acd370ea9..88703bcc1 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit acd370ea93fff73c76a74f1cbb3f1c8b64bdef72
    +Subproject commit 88703bcc139e124598732b0babc762fddff0309c
    
    From 3c3ad88b84cc0190378bac4532f21f89f81069da Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Wed, 5 Sep 2012 17:32:34 +0200
    Subject: [PATCH 192/397] takes default expire from linphonerc
    
    ---
     Classes/LinphoneCoreSettingsStore.m | 4 ++--
     Classes/LinphoneManager.m           | 9 ++++++++-
     Resources/linphonerc                | 2 ++
     Resources/linphonerc-factory        | 2 --
     4 files changed, 12 insertions(+), 5 deletions(-)
    
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index b3eb2ff30..655f6859e 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -102,7 +102,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     			
     			[self setString: linphone_address_get_username(addr) forKey:@"username_preference"];
     			[self setString: linphone_address_get_domain(addr) forKey:@"domain_preference"];
    -            [self setInteger: lp_config_get_int(linphone_core_get_config(lc),"app","default_expires",3600) forKey:@"expire_preference"];
    +            [self setInteger: lp_config_get_int(linphone_core_get_config(lc),"default_values","reg_expires",600) forKey:@"expire_preference"];
     			[self setString:linphone_proxy_config_get_dial_prefix(cfg) forKey:@"prefix_preference"];
     			if (strcmp(linphone_address_get_domain(addr),linphone_address_get_domain(proxy_addr))!=0
     				|| port!=NULL){
    @@ -355,7 +355,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		
     
     		int expire = [self integerForKey:@"expire_preference"];
    -		lp_config_set_int(linphone_core_get_config(lc),"app","default_expires",expire);
    +		lp_config_set_int(linphone_core_get_config(lc),"default_values","reg_expires",expire);
     		
     		BOOL isWifiOnly = [self boolForKey:@"wifi_only_preference"];
     		
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index 641c285c5..a2140d4ad 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -501,7 +501,10 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
     				&& (lLinphoneMgr.connectivity == newConnectivity || lLinphoneMgr.connectivity == none)) {
     				linphone_proxy_config_expires(proxy, 0);
     			} else if (proxy){
    -				linphone_proxy_config_expires(proxy, lp_config_get_int(linphone_core_get_config([LinphoneManager getLc]),"app","default_expires",3600));
    +				int defaultExpire = [[LinphoneManager instance] lpConfigIntForKey:@"default_expires"];
    +				if (defaultExpire>=0)
    +				linphone_proxy_config_expires(proxy, defaultExpire);
    +				//else keep default value from linphonecore
     			}
     			
     			if (lLinphoneMgr.connectivity != newConnectivity) {
    @@ -1066,6 +1069,10 @@ static LinphoneCoreVTable linphonec_vtable = {
     	lp_config_set_string(linphone_core_get_config(theLinphoneCore),"app",value?[key UTF8String]:NULL, [value UTF8String]);
     }
     -(NSString*)lpConfigStringForKey:(NSString*) key {
    +	if (!theLinphoneCore) {
    +		[LinphoneLogger log:LinphoneLoggerError format:@"cannot read configuration because linphone core not ready yet"];
    +		return nil;
    +	};
     	const char* value=lp_config_get_string(linphone_core_get_config(theLinphoneCore),"app",[key UTF8String],NULL);	
     	if (value) 
     		return [NSString stringWithCString:value encoding:[NSString defaultCStringEncoding]];
    diff --git a/Resources/linphonerc b/Resources/linphonerc
    index 1aa810d4c..5057f2f02 100644
    --- a/Resources/linphonerc
    +++ b/Resources/linphonerc
    @@ -20,3 +20,5 @@ display_filter_auto_rotate=1
     
     
     
    +[default_values]
    +reg_expires=600
    \ No newline at end of file
    diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory
    index c2a9d7950..488ee816c 100644
    --- a/Resources/linphonerc-factory
    +++ b/Resources/linphonerc-factory
    @@ -30,5 +30,3 @@ history_max_size=30
     max_calls=3
     
     
    -[default_values]
    -reg_expires=600
    
    From dd7012491933568b26c59928de0298d911b1ae5b Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Fri, 7 Sep 2012 16:01:04 +0200
    Subject: [PATCH 193/397] remove GetFlags call from main thread (can block) fix
     crash with battery level changes update exosip
    
    ---
     Classes/LinphoneManager.m   | 38 +++++++------------------------------
     Classes/PhoneMainView.m     |  1 +
     submodules/externals/exosip |  2 +-
     submodules/linphone         |  2 +-
     4 files changed, 10 insertions(+), 33 deletions(-)
    
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index a2140d4ad..c44183b4a 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -503,7 +503,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
     			} else if (proxy){
     				int defaultExpire = [[LinphoneManager instance] lpConfigIntForKey:@"default_expires"];
     				if (defaultExpire>=0)
    -				linphone_proxy_config_expires(proxy, defaultExpire);
    +					linphone_proxy_config_expires(proxy, defaultExpire);
     				//else keep default value from linphonecore
     			}
     			
    @@ -538,13 +538,6 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
         
         proxyReachability = SCNetworkReachabilityCreateWithName(nil, nodeName);
         
    -	//initial state is network off should be done as soon as possible
    -	SCNetworkReachabilityFlags flags;
    -	if (!SCNetworkReachabilityGetFlags(proxyReachability, &flags)) {
    -		[LinphoneLogger logc:LinphoneLoggerError format:"Cannot get reachability flags: %s", SCErrorString(SCError())];
    -		return;
    -	}
    -	networkReachabilityCallBack(proxyReachability, flags, ctx ? ctx->info : 0);
     
     	if (!SCNetworkReachabilitySetCallback(proxyReachability, (SCNetworkReachabilityCallBack)networkReachabilityCallBack, ctx)){
     		[LinphoneLogger logc:LinphoneLoggerError format:"Cannot register reachability cb: %s", SCErrorString(SCError())];
    @@ -712,12 +705,7 @@ static LinphoneCoreVTable linphonec_vtable = {
     	[mIterateTimer invalidate]; 
     	AVAudioSession *audioSession = [AVAudioSession sharedInstance];
     	[audioSession setDelegate:nil];
    -#if 0
    -    if (settingsStore != nil) {
    -        [settingsStore release];
    -        settingsStore = nil;
    -    }
    -#endif
    +
     	if (theLinphoneCore != nil) { //just in case application terminate before linphone core initialization
             [LinphoneLogger logc:LinphoneLoggerLog format:"Destroy linphonecore"];
     		linphone_core_destroy(theLinphoneCore);
    @@ -772,8 +760,7 @@ static LinphoneCoreVTable linphonec_vtable = {
     	
     	if (proxyCfg && [[NSUserDefaults standardUserDefaults] boolForKey:@"backgroundmode_preference"]) {
     		//For registration register
    -		linphone_core_refresh_registers(theLinphoneCore);
    -		
    +		[self refreshRegisters];
     		//wait for registration answer
     		int i=0;
     		while (!linphone_proxy_config_is_registered(proxyCfg) && i++<40 ) {
    @@ -833,21 +820,10 @@ static LinphoneCoreVTable linphonec_vtable = {
     }
     
     - (void)refreshRegisters{
    -	/*first check if network is available*/
    -	if (proxyReachability){
    -		SCNetworkReachabilityFlags flags=0;
    -		if (!SCNetworkReachabilityGetFlags(proxyReachability, &flags)) {
    -			[LinphoneLogger logc:LinphoneLoggerError format:"Cannot get reachability flags, re-creating reachability context."];
    -			[self setupNetworkReachabilityCallback];
    -		}else{
    -			networkReachabilityCallBack(proxyReachability, flags, 0);
    -			if (flags==0){
    -				/*workaround iOS bug: reachability API cease to work after some time.*/
    -				/*when flags==0, either we have no network, or the reachability object lies. To workaround, create a new one*/
    -				[self setupNetworkReachabilityCallback];
    -			}
    -		}
    -	}else [LinphoneLogger logc:LinphoneLoggerError format:"No proxy reachability context created !"];
    +	if (connectivity==none){
    +		//don't trust ios when he says there is no network. Create a new reachability context, the previous one might be mis-functionning.
    +		[self setupNetworkReachabilityCallback];
    +	}
     	linphone_core_refresh_registers(theLinphoneCore);//just to make sure REGISTRATION is up to date
     }
     
    diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m
    index 4daf01701..ecc7859fb 100644
    --- a/Classes/PhoneMainView.m
    +++ b/Classes/PhoneMainView.m
    @@ -661,6 +661,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
     }
     
     - (void)batteryLevelChanged:(NSNotification*)notif {
    +	if (! [LinphoneManager isLcReady]) return;
         LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]);
         if (!call || !linphone_call_params_video_enabled(linphone_call_get_current_params(call)))
             return;
    diff --git a/submodules/externals/exosip b/submodules/externals/exosip
    index cabb39c79..1195a20a0 160000
    --- a/submodules/externals/exosip
    +++ b/submodules/externals/exosip
    @@ -1 +1 @@
    -Subproject commit cabb39c79560ab11c3dc668ce9d5fee8ea19e832
    +Subproject commit 1195a20a0c61bb90b9b580ca6f394c742236dda8
    diff --git a/submodules/linphone b/submodules/linphone
    index 88703bcc1..f815b0d5a 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit 88703bcc139e124598732b0babc762fddff0309c
    +Subproject commit f815b0d5aaec61743302a1a5c48f62abe8224948
    
    From 223e44c86233bdffd527a5446331c24b7b2ce1fb Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Mon, 10 Sep 2012 14:27:18 +0200
    Subject: [PATCH 194/397] Fix Chat screen rotation Small fixes
    
    ---
     Classes/ChatRoomViewController.m              | 117 ++++++----
     Classes/ChatRoomViewController.xib            | 100 +++------
     Classes/FirstLoginViewController.m            |   2 +-
     Classes/LinphoneManager.m                     |  33 +--
     Classes/LinphoneUI/UIChatCell.m               |  18 +-
     Classes/LinphoneUI/UIChatRoomCell.m           |   2 +-
     Classes/LinphoneUI/UIChatRoomCell.xib         | 108 +++++-----
     .../LinphoneUI/UICompositeViewController.m    |   2 +
     Classes/LinphoneUI/UIMainBar.xib              | 158 ++------------
     Classes/LinphoneUI/UIMainBar~ipad.xib         | 203 +++---------------
     linphone.xcodeproj/project.pbxproj            |  12 +-
     11 files changed, 235 insertions(+), 520 deletions(-)
    
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index a144d846c..3dfdfb7bb 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -73,7 +73,7 @@ static UICompositeViewDescription *compositeDescription = nil;
                                                                     content:@"ChatRoomViewController" 
                                                                    stateBar:nil 
                                                             stateBarEnabled:false 
    -                                                                 tabBar:@"UIMainBar" 
    +                                                                 tabBar:/*@"UIMainBar"*/nil
                                                               tabBarEnabled:false /*to keep room for chat*/
                                                                  fullscreen:false
                                                               landscapeMode:[LinphoneManager runningOnIpad]
    @@ -167,11 +167,20 @@ static UICompositeViewDescription *compositeDescription = nil;
         
         NSString *displayName = nil;
         UIImage *image = nil;
    -	LinphoneAddress* linphoneAddress =linphone_core_interpret_url([LinphoneManager getLc],[_remoteAddress cStringUsingEncoding: NSUTF8StringEncoding]);
    -	if (linphoneAddress==NULL)
    -		return ;
    -	char *tmp=linphone_address_as_string_uri_only(linphoneAddress);
    -	NSString *normalizedSipAddress=[NSString stringWithUTF8String:tmp];
    +	LinphoneAddress* linphoneAddress = linphone_core_interpret_url([LinphoneManager getLc], [_remoteAddress UTF8String]);
    +	if (linphoneAddress == NULL) {
    +        [[PhoneMainView instance] popCurrentView];
    +		UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid SIP address",nil)
    +														message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to send a message or use a valid SIP address (I.E sip:john@example.net)",nil)
    +													   delegate:nil
    +											  cancelButtonTitle:NSLocalizedString(@"Continue",nil)
    +											  otherButtonTitles:nil];
    +		[error show];
    +		[error release];
    +        return;
    +    }
    +	char *tmp = linphone_address_as_string_uri_only(linphoneAddress);
    +	NSString *normalizedSipAddress = [NSString stringWithUTF8String:tmp];
     	ms_free(tmp);
     	
         ABRecordRef acontact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress];
    @@ -180,7 +189,8 @@ static UICompositeViewDescription *compositeDescription = nil;
             image = [FastAddressBook getContactImage:acontact thumbnail:true];
         }
     	[_remoteAddress release];
    -    _remoteAddress =[normalizedSipAddress retain];
    +    _remoteAddress = [normalizedSipAddress retain];
    +    
         // Display name
         if(displayName == nil) {
             displayName = [NSString stringWithUTF8String:linphone_address_get_username(linphoneAddress)];
    @@ -192,14 +202,15 @@ static UICompositeViewDescription *compositeDescription = nil;
             image = [UIImage imageNamed:@"avatar_unknown_small.png"];
         }
         [avatarImage setImage:image];
    -	linphone_address_destroy(linphoneAddress);
    +    
    +    linphone_address_destroy(linphoneAddress);
     }
     
     static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState state,void* ud) {
    -	ChatRoomViewController* thiz=(ChatRoomViewController*)ud;
    +	ChatRoomViewController* thiz = (ChatRoomViewController*)ud;
     	ChatModel *chat = (ChatModel *)linphone_chat_message_get_user_data(msg); 
     	[LinphoneLogger log:LinphoneLoggerLog 
    -				 format:@"Delivery status for [%@] is [%s]",chat.message,linphone_chat_message_state_to_string(state)];
    +				 format:@"Delivery status for [%@] is [%s]", chat.message, linphone_chat_message_state_to_string(state)];
     	[chat setState:[NSNumber numberWithInt:state]];
     	[chat update];
     	[thiz.tableController updateChatEntry:chat];
    @@ -215,10 +226,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
             return FALSE;
         }
         if(chatRoom == NULL) {
    -		
    -
     		chatRoom = linphone_core_create_chat_room([LinphoneManager getLc], [_remoteAddress UTF8String]);
    -		
         }
         
         // Save message in database
    @@ -233,9 +241,9 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         [chat create];
         [tableController addChatEntry:chat];
         [chat release];
    -    LinphoneChatMessage* msg = linphone_chat_room_create_message(chatRoom,[message UTF8String]);
    -	linphone_chat_message_set_user_data(msg,chat);
    -    linphone_chat_room_send_message2(chatRoom, msg,message_status,self);
    +    LinphoneChatMessage* msg = linphone_chat_room_create_message(chatRoom, [message UTF8String]);
    +	linphone_chat_message_set_user_data(msg, chat);
    +    linphone_chat_room_send_message2(chatRoom, msg, message_status, self);
         return TRUE;
     }
     
    @@ -302,7 +310,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     
     - (void)keyboardWillHide:(NSNotification *)notif {
         //CGRect beginFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
    -    CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    +    //CGRect endFrame = [[[notif userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
         UIViewAnimationCurve curve = [[[notif userInfo] objectForKey:UIKeyboardAnimationCurveUserInfoKey] intValue];
         NSTimeInterval duration = [[[notif userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
         [UIView beginAnimations:@"resize" context:nil];
    @@ -310,16 +318,27 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         [UIView setAnimationCurve:curve];
         [UIView setAnimationBeginsFromCurrentState:TRUE];
         
    -    // Move view
    -    CGRect frame = [[self chatView/*view*/] frame];
    -    frame.origin.y = frame.origin.y + endFrame.size.height /*0*/;
    -    [[self /*view*/chatView] setFrame:frame];
    +    // Resize chat view
    +    {
    +        CGRect chatFrame = [[self chatView] frame];
    +        chatFrame.size.height = [[self view] frame].size.height - chatFrame.origin.y;
    +        [[self chatView] setFrame:chatFrame];
    +    }
         
    -    // Resize table view
    -    CGRect tableFrame = [tableController.view frame];
    -    tableFrame.origin.y = [headerView frame].origin.y + [headerView frame].size.height;
    -    tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y;
    -    [tableController.view setFrame:tableFrame];
    +    // Move header view
    +    {
    +        CGRect headerFrame = [headerView frame];
    +        headerFrame.origin.y = 0;
    +        [headerView setFrame:headerFrame];
    +    }
    +    
    +    // Resize & Move table view
    +    {
    +        CGRect tableFrame = [tableController.view frame];
    +        tableFrame.origin.y = [headerView frame].origin.y + [headerView frame].size.height;
    +        tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y;
    +        [tableController.view setFrame:tableFrame];
    +    }
         
         [UIView commitAnimations];
     }
    @@ -340,30 +359,36 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
             endFrame.size.width = width;
         }
         
    -    // Move view
    +    // Resize chat view
         {
    -        CGRect frame = [[self chatView/*view*/] frame];
    -       // CGRect rect = [PhoneMainView instance].view.bounds;
    -		
    -       // CGPoint pos = {frame.size.width, frame.size.height};
    -       // CGPoint gPos = [self.view convertPoint:pos toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; // Bypass IOS bug on landscape mode
    -        frame.origin.y = /*(rect.size.height - gPos.y*/ frame.origin.y - endFrame.size.height;
    -        if(frame.origin.y > 0) frame.origin.y = 0;
    -        [[self chatView] setFrame:frame];
    -    }
    -    
    -    // Resize table view
    -    {
    -        /*CGPoint pos = {0, 0};
    -        CGPoint gPos = [[self.view superview] convertPoint:pos toView:self.view];*/
    -        CGRect tableFrame = [tableController.view frame];
    -        tableFrame.origin.y += endFrame.size.height - headerView.frame.size.height/*gPos.y*/;
    -        tableFrame.size.height = tableFrame.size.height - endFrame.size.height+headerView.frame.size.height;
    -        [tableController.view setFrame:tableFrame];
    +        CGRect viewFrame = [[self view] frame];
    +        CGRect rect = [PhoneMainView instance].view.bounds;
    +        CGPoint pos = {viewFrame.size.width, viewFrame.size.height};
    +        CGPoint gPos = [self.view convertPoint:pos toView:[UIApplication sharedApplication].keyWindow.rootViewController.view]; // Bypass IOS bug on landscape mode
    +        float diff = (rect.size.height - gPos.y - endFrame.size.height);
    +        if(diff > 0) diff = 0;
    +        CGRect chatFrame = [[self chatView] frame];
    +        chatFrame.size.height = viewFrame.size.height - chatFrame.origin.y + diff;
    +        [[self chatView] setFrame:chatFrame];
         }
     
    +    // Move header view
    +    {
    +        CGRect headerFrame = [headerView frame];
    +        headerFrame.origin.y = -headerFrame.size.height;
    +        [headerView setFrame:headerFrame];
    +    }
    +    
    +    // Resize & Move table view
    +    {
    +        CGRect tableFrame = [tableController.view frame];
    +        tableFrame.origin.y = [headerView frame].origin.y + [headerView frame].size.height;
    +        tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y;
    +        [tableController.view setFrame:tableFrame];
    +    }
    +    
         // Scroll
    -    int lastSection = [tableController.tableView numberOfSections] -1;
    +    int lastSection = [tableController.tableView numberOfSections] - 1;
         if(lastSection >= 0) {
             int lastRow = [tableController.tableView numberOfRowsInSection:lastSection] - 1;
             if(lastRow >=0) {
    diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib
    index fa18a7f31..83160fc92 100644
    --- a/Classes/ChatRoomViewController.xib
    +++ b/Classes/ChatRoomViewController.xib
    @@ -3,23 +3,22 @@
     	
     		1296
     		11E53
    -		2182
    +		2549
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1181
    +			1498
     		
     		
    -			IBUIView
    +			IBProxyObject
    +			IBUIButton
     			IBUIImageView
     			IBUILabel
    -			IBProxyObject
    -			IBUITextField
    -			IBUITableViewController
     			IBUITableView
    +			IBUITableViewController
     			IBUITextView
    -			IBUIButton
    +			IBUIView
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -154,7 +153,6 @@
     										{{250, 0}, {70, 59}}
     										
     										
    -										
     										_NS:9
     										NO
     										
    @@ -198,7 +196,7 @@
     										{250, 59}
     										
     										
    -										
    +										
     										_NS:9
     										NO
     										IBCocoaTouchFramework
    @@ -207,46 +205,9 @@
     											chat_field.png
     										
     									
    -									
    -										
    -										-2147483390
    -										{{10, 10}, {230, 39}}
    -										
    -										
    -										
    -										_NS:9
    -										NO
    -										YES
    -										IBCocoaTouchFramework
    -										0
    -										
    -										Type your message here
    -										
    -											3
    -											MAA
    -											
    -												2
    -											
    -										
    -										17
    -										
    -											2
    -											2
    -											IBCocoaTouchFramework
    -										
    -										
    -											1
    -											18
    -										
    -										
    -											Helvetica
    -											18
    -											16
    -										
    -									
     									
     										
    -										292
    +										258
     										{{10, 10}, {230, 39}}
     										
     										
    @@ -258,14 +219,22 @@
     											
     										
     										IBCocoaTouchFramework
    -										YES
    -										
    +										YES
    +										NO
    +										This is a message
     										
     											2
     											IBCocoaTouchFramework
     										
    -										
    -										
    +										
    +											1
    +											18
    +										
    +										
    +											Helvetica
    +											18
    +											16
    +										
     									
     								
     								{{0, 357}, {320, 59}}
    @@ -273,11 +242,7 @@
     								
     								
     								_NS:9
    -								
    -									3
    -									MQA
    -									
    -								
    +								
     								IBCocoaTouchFramework
     							
     						
    @@ -286,11 +251,7 @@
     						
     						
     						_NS:9
    -						
    -							3
    -							MQA
    -							
    -						
    +						
     						IBCocoaTouchFramework
     					
     					
    @@ -378,11 +339,7 @@
     						
     						
     						_NS:9
    -						
    -							3
    -							MQA
    -							
    -						
    +						
     						IBCocoaTouchFramework
     					
     				
    @@ -661,7 +618,6 @@
     						
     						
     							
    -							
     							
     							
     						
    @@ -686,12 +642,6 @@
     						
     						messageField
     					
    -					
    -						19
    -						
    -						
    -						messageFieldOld
    -					
     				
     			
     			
    @@ -705,7 +655,6 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				ChatRoomTableViewController
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -720,6 +669,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     			
     			
    @@ -856,6 +806,6 @@
     			{140, 117}
     			{5, 117}
     		
    -		1181
    +		1498
     	
     
    diff --git a/Classes/FirstLoginViewController.m b/Classes/FirstLoginViewController.m
    index 014cf0c35..e8d137a8b 100644
    --- a/Classes/FirstLoginViewController.m
    +++ b/Classes/FirstLoginViewController.m
    @@ -180,7 +180,7 @@ static UICompositeViewDescription *compositeDescription = nil;
     		linphone_core_clear_proxy_config([LinphoneManager getLc]);
     		LinphoneProxyConfig* proxyCfg = linphone_core_create_proxy_config([LinphoneManager getLc]);
     		/*default domain is supposed to be preset from linphonerc*/
    -		NSString* identity = [NSString stringWithFormat:@"sip:%@@%@",usernameField.text,linphone_proxy_config_get_addr(proxyCfg)];
    +		NSString* identity = [NSString stringWithFormat:@"sip:%@@%s",usernameField.text, linphone_proxy_config_get_addr(proxyCfg)];
     		linphone_proxy_config_set_identity(proxyCfg,[identity UTF8String]);
     		LinphoneAuthInfo* auth_info =linphone_auth_info_new([usernameField.text UTF8String]
     															,[usernameField.text UTF8String]
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index c44183b4a..6cc0405f3 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -737,20 +737,21 @@ static LinphoneCoreVTable linphonec_vtable = {
     }
     
     - (void)waitForRegisterToArrive{
    -	int i;
    -	UIBackgroundTaskIdentifier bgid;
    -	stopWaitingRegisters=FALSE;
    -	[LinphoneLogger logc:LinphoneLoggerLog format:"Starting long running task for registering"];
    -	bgid=[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler: ^{
    -		[LinphoneManager instance]->stopWaitingRegisters=TRUE;
    -		[LinphoneLogger logc:LinphoneLoggerLog format:"Expiration handler called"];
    -	}];
    -	for(i=0;i<100 && (!stopWaitingRegisters);i++){
    -		linphone_core_iterate(theLinphoneCore);
    -		usleep(20000);
    -	}
    -	[LinphoneLogger logc:LinphoneLoggerLog format:"Ending long running task for registering"];
    -	[[UIApplication sharedApplication] endBackgroundTask:bgid];
    +    if ([[UIDevice currentDevice] respondsToSelector:@selector(isMultitaskingSupported)]
    +		&& [UIApplication sharedApplication].applicationState ==  UIApplicationStateBackground) {
    +        stopWaitingRegisters = FALSE;
    +        [LinphoneLogger logc:LinphoneLoggerLog format:"Starting long running task for registering"];
    +        UIBackgroundTaskIdentifier bgid = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler: ^{
    +            [LinphoneManager instance]->stopWaitingRegisters=TRUE;
    +            [LinphoneLogger logc:LinphoneLoggerLog format:"Expiration handler called"];
    +        }];
    +        for(int i=0;i<100 && (!stopWaitingRegisters);i++){
    +            linphone_core_iterate(theLinphoneCore);
    +            usleep(20000);
    +        }
    +        [LinphoneLogger logc:LinphoneLoggerLog format:"Ending long running task for registering"];
    +        [[UIApplication sharedApplication] endBackgroundTask:bgid];
    +    }
     }
     
     - (BOOL)enterBackgroundMode {
    @@ -913,8 +914,8 @@ static LinphoneCoreVTable linphonec_vtable = {
             }
             linphone_address_destroy(linphoneAddress);
     	} else if (proxyCfg==nil){
    -		UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid sip address",nil)
    -														message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to place a call or use a valid sip address (I.E sip:john@example.net)",nil) 
    +		UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid SIP address",nil)
    +														message:NSLocalizedString(@"Either configure a SIP proxy server from settings prior to place a call or use a valid SIP address (I.E sip:john@example.net)",nil)
     													   delegate:nil 
     											  cancelButtonTitle:NSLocalizedString(@"Continue",nil) 
     											  otherButtonTitles:nil];
    diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m
    index b6ad2bd80..dc6100161 100644
    --- a/Classes/LinphoneUI/UIChatCell.m
    +++ b/Classes/LinphoneUI/UIChatCell.m
    @@ -77,13 +77,14 @@
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat cell: null chat"];
             return;
         }
    -    LinphoneAddress* linphoneAddress =linphone_core_interpret_url([LinphoneManager getLc],[[chat remoteContact] cStringUsingEncoding: NSUTF8StringEncoding]);
    -	if (linphoneAddress==NULL)
    -		return ;
    -	char *tmp=linphone_address_as_string_uri_only(linphoneAddress);
    -	NSString *normalizedSipAddress=[NSString stringWithUTF8String:tmp];
    +    LinphoneAddress* linphoneAddress = linphone_core_interpret_url([LinphoneManager getLc], [[chat remoteContact] UTF8String]);
    +	if (linphoneAddress == NULL)
    +		return;
    +	char *tmp = linphone_address_as_string_uri_only(linphoneAddress);
    +	NSString *normalizedSipAddress = [NSString stringWithUTF8String:tmp];
     	ms_free(tmp);
    -    ABRecordRef contact =[[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress];
    +    
    +    ABRecordRef contact = [[[LinphoneManager instance] fastAddressBook] getContact:normalizedSipAddress];
         if(contact != nil) {
             displayName = [FastAddressBook getContactDisplayName:contact];
             image = [FastAddressBook getContactImage:contact thumbnail:true];
    @@ -91,7 +92,7 @@
         
         // Display name
         if(displayName == nil) {
    -        displayName = [NSString stringWithCString:linphone_address_get_username(linphoneAddress) encoding:NSUTF8StringEncoding];
    +        displayName = [NSString stringWithUTF8String:linphone_address_get_username(linphoneAddress)];
         }
         [addressLabel setText:displayName];
         
    @@ -103,7 +104,8 @@
         
         // Message
         [chatContentLabel setText:[chat message]];
    -	linphone_address_destroy(linphoneAddress);
    +    
    +    linphone_address_destroy(linphoneAddress);
     }
     
     - (void)layoutSubviews {
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m
    index badd8088f..d432f37f8 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.m
    +++ b/Classes/LinphoneUI/UIChatRoomCell.m
    @@ -38,7 +38,7 @@ static const CGFloat CELL_MIN_HEIGHT = 40.0f;
     static const CGFloat CELL_MIN_WIDTH = 150.0f;
     static const CGFloat CELL_MAX_WIDTH = 320.0f;
     static const CGFloat CELL_MESSAGE_X_MARGIN = 26.0f;
    -static const CGFloat CELL_MESSAGE_Y_MARGIN = 33.0f;
    +static const CGFloat CELL_MESSAGE_Y_MARGIN = 36.0f;
     static const CGFloat CELL_FONT_SIZE = 17.0f;
     static UIFont *CELL_FONT = nil;
     
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib
    index e8127e89c..647825af5 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.xib
    +++ b/Classes/LinphoneUI/UIChatRoomCell.xib
    @@ -3,19 +3,19 @@
     	
     		1296
     		11E53
    -		2182
    +		2549
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1181
    +			1498
     		
     		
    +			IBProxyObject
     			IBUIButton
     			IBUIImageView
    -			IBUIView
     			IBUILabel
    -			IBProxyObject
    +			IBUIView
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -59,11 +59,15 @@
     							
     								
     								274
    -								{294, 107}
    +								{294, 104}
     								
     								
     								
     								_NS:9
    +								
    +									3
    +									MCAwAA
    +								
     								NO
     								YES
     								7
    @@ -77,7 +81,7 @@
     								
     								0
     								10
    -								100000
    +								0
     								
     									1
     									17
    @@ -89,60 +93,25 @@
     								
     								NO
     							
    -							
    -								
    -								289
    -								{{250, 0}, {44, 44}}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								2
    -								20
    -								20
    -								2
    -								
    -									3
    -									MC41AA
    -								
    -								
    -									NSImage
    -									list_delete_over.png
    -								
    -								
    -									NSImage
    -									list_delete_default.png
    -								
    -								
    -									2
    -									15
    -								
    -								
    -									Helvetica-Bold
    -									15
    -									16
    -								
    -							
     							
     								
     								265
    -								{{14, 107}, {260, 7}}
    +								{{0, 104}, {280, 10}}
     								
     								
     								
     								_NS:9
    +								
     								NO
     								YES
     								7
     								NO
     								IBCocoaTouchFramework
     								09/09/2009 at 09:09
    -								
    +								
    +									3
    +									MC41AA
    +								
     								
     								0
     								8
    @@ -173,16 +142,49 @@
     									chat_message_not_delivered.png
     								
     							
    +							
    +								
    +								289
    +								{{250, 0}, {44, 44}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								2
    +								20
    +								20
    +								2
    +								
    +								
    +									NSImage
    +									list_delete_over.png
    +								
    +								
    +									NSImage
    +									list_delete_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
     						
     						{{13, 13}, {294, 114}}
     						
     						
     						
     						_NS:9
    -						
    -							3
    -							MCAwAA
    -						
    +						
     						YES
     						IBCocoaTouchFramework
     					
    @@ -356,8 +358,8 @@
     						
     						
     							
    -							
     							
    +							
     							
     						
     						
    @@ -488,6 +490,6 @@
     			{45, 45}
     			{45, 45}
     		
    -		1181
    +		1498
     	
     
    diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m
    index 68e2037f0..ea0953c9a 100644
    --- a/Classes/LinphoneUI/UICompositeViewController.m
    +++ b/Classes/LinphoneUI/UICompositeViewController.m
    @@ -425,11 +425,13 @@
                 [contentView.layer removeAnimationForKey:@"transition"];
                 [contentView.layer addAnimation:viewTransition forKey:@"transition"];
                 if(oldViewDescription.stateBar != currentViewDescription.stateBar ||
    +               oldViewDescription.stateBarEnabled != currentViewDescription.stateBarEnabled ||
                    [stateBarView.layer animationForKey:@"transition"] != nil) {
                     [stateBarView.layer removeAnimationForKey:@"transition"];
                     [stateBarView.layer addAnimation:viewTransition forKey:@"transition"];
                 }
                 if(oldViewDescription.tabBar != currentViewDescription.tabBar ||
    +               oldViewDescription.tabBarEnabled != currentViewDescription.tabBarEnabled ||
                    [tabBarView.layer animationForKey:@"transition"] != nil) {
                     [tabBarView.layer removeAnimationForKey:@"transition"];
                     [tabBarView.layer addAnimation:viewTransition forKey:@"transition"];
    diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/UIMainBar.xib
    index d1f14bc5f..4276bf294 100644
    --- a/Classes/LinphoneUI/UIMainBar.xib
    +++ b/Classes/LinphoneUI/UIMainBar.xib
    @@ -37,27 +37,11 @@
     				
     				292
     				
    -					
    -						
    -						290
    -						{{0, 77}, {320, 2000}}
    -						
    -						
    -						
    -						_NS:9
    -						
    -							1
    -							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    -						
    -						28
    -						IBCocoaTouchFramework
    -					
     					
     						
     						-2147483356
     						{{0, 11}, {320, 66}}
     						
    -						
     						
     						_NS:9
     						
    @@ -71,12 +55,25 @@
     						NO
     						IBCocoaTouchFramework
     					
    +					
    +						
    +						290
    +						{{0, 77}, {320, 2000}}
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +						
    +						28
    +						IBCocoaTouchFramework
    +					
     					
     						
     						292
     						{64, 77}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -122,7 +119,6 @@
     								274
     								{21, 21}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -137,7 +133,6 @@
     								256
     								{{2, 2}, {17, 17}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -167,7 +162,6 @@
     						
     						{{38, 1}, {21, 21}}
     						
    -						
     						
     						_NS:9
     						
    @@ -183,7 +177,6 @@
     						292
     						{{64, 0}, {64, 77}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -215,7 +208,6 @@
     						292
     						{{192, 0}, {64, 77}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -247,7 +239,6 @@
     						292
     						{{128, 0}, {64, 77}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -279,7 +270,6 @@
     						292
     						{{256, 0}, {64, 77}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -315,7 +305,6 @@
     								274
     								{21, 21}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -327,8 +316,6 @@
     								256
     								{{2, 2}, {17, 17}}
     								
    -								
    -								
     								_NS:9
     								NO
     								YES
    @@ -347,7 +334,6 @@
     						
     						{{261, 1}, {21, 21}}
     						
    -						
     						
     						_NS:9
     						
    @@ -358,7 +344,6 @@
     				
     				{320, 77}
     				
    -				
     				
     				_NS:9
     				
    @@ -532,10 +517,10 @@
     							
     							
     							
    -							
     							
     							
     							
    +							
     							
     						
     						
    @@ -661,118 +646,7 @@
     			
     			45
     		
    -		
    -			
    -				
    -					TPMultiLayoutViewController
    -					UIViewController
    -					
    -						UIView
    -						UIView
    -					
    -					
    -						
    -							landscapeView
    -							UIView
    -						
    -						
    -							portraitView
    -							UIView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/TPMultiLayoutViewController.h
    -					
    -				
    -				
    -					UIMainBar
    -					TPMultiLayoutViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onChatClick:
    -							id
    -						
    -						
    -							onContactsClick:
    -							id
    -						
    -						
    -							onDialerClick:
    -							id
    -						
    -						
    -							onHistoryClick:
    -							id
    -						
    -						
    -							onSettingsClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UILabel
    -						UIView
    -						UIButton
    -						UIButton
    -						UIButton
    -						UILabel
    -						UIView
    -						UIButton
    -					
    -					
    -						
    -							chatButton
    -							UIButton
    -						
    -						
    -							chatNotificationLabel
    -							UILabel
    -						
    -						
    -							chatNotificationView
    -							UIView
    -						
    -						
    -							contactsButton
    -							UIButton
    -						
    -						
    -							dialerButton
    -							UIButton
    -						
    -						
    -							historyButton
    -							UIButton
    -						
    -						
    -							historyNotificationLabel
    -							UILabel
    -						
    -						
    -							historyNotificationView
    -							UIView
    -						
    -						
    -							settingsButton
    -							UIButton
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UIMainBar.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
    diff --git a/Classes/LinphoneUI/UIMainBar~ipad.xib b/Classes/LinphoneUI/UIMainBar~ipad.xib
    index 559a0e4b0..dd2648b97 100644
    --- a/Classes/LinphoneUI/UIMainBar~ipad.xib
    +++ b/Classes/LinphoneUI/UIMainBar~ipad.xib
    @@ -37,27 +37,11 @@
     				
     				292
     				
    -					
    -						
    -						290
    -						{{0, 77}, {768, 2000}}
    -						
    -						
    -						
    -						_NS:9
    -						
    -							1
    -							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    -						
    -						28
    -						IBIPadFramework
    -					
     					
     						
     						-2147483356
     						{{0, 11}, {768, 66}}
     						
    -						
     						
     						_NS:9
     						
    @@ -71,12 +55,25 @@
     						NO
     						IBIPadFramework
     					
    +					
    +						
    +						290
    +						{{0, 77}, {768, 2000}}
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +						
    +						28
    +						IBIPadFramework
    +					
     					
     						
     						292
     						{175, 77}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -123,7 +120,6 @@
     								274
     								{21, 21}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -138,7 +134,6 @@
     								256
     								{{2, 2}, {17, 17}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -168,7 +163,6 @@
     						
     						{{140, 1}, {21, 21}}
     						
    -						
     						
     						_NS:9
     						
    @@ -185,7 +179,6 @@
     						292
     						{{175, 0}, {175, 77}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -218,7 +211,6 @@
     						288
     						{{350, -1}, {68, 80}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -251,7 +243,6 @@
     						292
     						{{418, 0}, {175, 77}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -284,7 +275,6 @@
     						292
     						{{593, 0}, {175, 77}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -321,7 +311,6 @@
     								274
     								{21, 21}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -333,8 +322,6 @@
     								256
     								{{2, 2}, {17, 17}}
     								
    -								
    -								
     								_NS:9
     								NO
     								YES
    @@ -353,7 +340,6 @@
     						
     						{{605, 1}, {21, 21}}
     						
    -						
     						
     						_NS:9
     						
    @@ -365,7 +351,6 @@
     				
     				{768, 77}
     				
    -				
     				
     				_NS:9
     				
    @@ -379,27 +364,11 @@
     				
     				292
     				
    -					
    -						
    -						290
    -						{{0, 86}, {1024, 2000}}
    -						
    -						
    -						
    -						_NS:9
    -						
    -							1
    -							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    -						
    -						28
    -						IBIPadFramework
    -					
     					
     						
     						-2147483356
     						{{0, 19}, {1024, 67}}
     						
    -						
     						
     						_NS:9
     						
    @@ -413,12 +382,25 @@
     						NO
     						IBIPadFramework
     					
    +					
    +						
    +						290
    +						{{0, 86}, {1024, 2000}}
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +						
    +						28
    +						IBIPadFramework
    +					
     					
     						
     						292
     						{240, 86}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -455,7 +437,6 @@
     								274
     								{21, 21}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -467,7 +448,6 @@
     								256
     								{{2, 2}, {17, 17}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -487,7 +467,6 @@
     						
     						{{208, 1}, {21, 21}}
     						
    -						
     						
     						_NS:9
     						
    @@ -501,7 +480,6 @@
     						292
     						{{240, 0}, {240, 86}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -534,7 +512,6 @@
     						288
     						{{480, 8}, {68, 80}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -558,7 +535,6 @@
     						292
     						{{544, 0}, {240, 86}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -591,7 +567,6 @@
     						292
     						{{784, 0}, {240, 86}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -628,7 +603,6 @@
     								274
     								{21, 21}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -640,8 +614,6 @@
     								256
     								{{2, 2}, {17, 17}}
     								
    -								
    -								
     								_NS:9
     								NO
     								YES
    @@ -660,7 +632,6 @@
     						
     						{{792, 1}, {21, 21}}
     						
    -						
     						
     						_NS:9
     						
    @@ -672,7 +643,6 @@
     				
     				{1024, 86}
     				
    -				
     				
     				_NS:9
     				
    @@ -852,12 +822,12 @@
     						
     							
     							
    -							
     							
     							
     							
     							
     							
    +							
     							
     						
     						
    @@ -950,12 +920,12 @@
     						
     							
     							
    -							
     							
     							
     							
     							
     							
    +							
     							
     						
     						
    @@ -1108,118 +1078,7 @@
     			
     			62
     		
    -		
    -			
    -				
    -					TPMultiLayoutViewController
    -					UIViewController
    -					
    -						UIView
    -						UIView
    -					
    -					
    -						
    -							landscapeView
    -							UIView
    -						
    -						
    -							portraitView
    -							UIView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/TPMultiLayoutViewController.h
    -					
    -				
    -				
    -					UIMainBar
    -					TPMultiLayoutViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onChatClick:
    -							id
    -						
    -						
    -							onContactsClick:
    -							id
    -						
    -						
    -							onDialerClick:
    -							id
    -						
    -						
    -							onHistoryClick:
    -							id
    -						
    -						
    -							onSettingsClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UILabel
    -						UIView
    -						UIButton
    -						UIButton
    -						UIButton
    -						UILabel
    -						UIView
    -						UIButton
    -					
    -					
    -						
    -							chatButton
    -							UIButton
    -						
    -						
    -							chatNotificationLabel
    -							UILabel
    -						
    -						
    -							chatNotificationView
    -							UIView
    -						
    -						
    -							contactsButton
    -							UIButton
    -						
    -						
    -							dialerButton
    -							UIButton
    -						
    -						
    -							historyButton
    -							UIButton
    -						
    -						
    -							historyNotificationLabel
    -							UILabel
    -						
    -						
    -							historyNotificationView
    -							UIView
    -						
    -						
    -							settingsButton
    -							UIButton
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UIMainBar.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBIPadFramework
     		
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index 6a3eca7ba..c9f2309a0 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -2662,12 +2662,6 @@
     		29B97317FDCFA39411CA2CEA /* Resources */ = {
     			isa = PBXGroup;
     			children = (
    -				57F005C615EE2D9200914747 /* linphonerc-factory */,
    -				57F005C715EE2D9200914747 /* linphonerc-factory~ipad */,
    -				57F005C315EE2CCF00914747 /* linphonerc */,
    -				2234C8ED15EE744200E18E83 /* chat_message_inprogress.png */,
    -				2234C8E715EE2F7F00E18E83 /* chat_message_delivered.png */,
    -				2234C8E815EE2F7F00E18E83 /* chat_message_not_delivered.png */,
     				D3F83F741582253100336684 /* accept_default.png */,
     				D3F83F751582253100336684 /* accept_over.png */,
     				D3D6A39B159B0EEF005F692C /* add_call_default.png */,
    @@ -2748,6 +2742,9 @@
     				D3A74F5A15C6AA0B001500B9 /* chat_field.9.png */,
     				D3A74F5D15C6ADA9001500B9 /* chat_field.9@2x.png */,
     				D3B9A3DA15A58C440096EA4E /* chat_field.png */,
    +				2234C8E715EE2F7F00E18E83 /* chat_message_delivered.png */,
    +				2234C8ED15EE744200E18E83 /* chat_message_inprogress.png */,
    +				2234C8E815EE2F7F00E18E83 /* chat_message_not_delivered.png */,
     				D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */,
     				D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */,
     				D38327FF158100E400FA0D23 /* chat_over.png */,
    @@ -2864,6 +2861,9 @@
     				D33CF34815D3A03400CD4B85 /* linphone_icon_57@2x.png */,
     				34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */,
     				D33CF34915D3A03400CD4B85 /* linphone_icon_72@2x.png */,
    +				57F005C315EE2CCF00914747 /* linphonerc */,
    +				57F005C615EE2D9200914747 /* linphonerc-factory */,
    +				57F005C715EE2D9200914747 /* linphonerc-factory~ipad */,
     				D321FF9815E628CB0098B5F4 /* linphonerc~ipad */,
     				D3EA5416159858A80037DC6B /* list_delete_default.png */,
     				D3EA5417159858A80037DC6B /* list_delete_over.png */,
    
    From 2ecaf9c58ec5a389301cfdf201a360be8b4ab317 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Mon, 10 Sep 2012 14:41:17 +0200
    Subject: [PATCH 195/397] Fix chat room views positioning when come back from
     background
    
    ---
     Classes/ChatRoomViewController.m | 3 +++
     1 file changed, 3 insertions(+)
    
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index 3dfdfb7bb..154b670d2 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -124,6 +124,9 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     - (void)viewWillDisappear:(BOOL)animated {
         [super viewWillDisappear:animated];
    +    
    +    [messageField resignFirstResponder];
    +    
         if(chatRoom != NULL) {
             linphone_chat_room_destroy(chatRoom);
             chatRoom = NULL;
    
    From 1f0759d7ecd3687a9dab9d2483545c24ab07cf2a Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Mon, 10 Sep 2012 16:15:49 +0200
    Subject: [PATCH 196/397] update linphone submodule (to save contact
     parameters)
    
    ---
     submodules/linphone | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/submodules/linphone b/submodules/linphone
    index f815b0d5a..e45053170 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit f815b0d5aaec61743302a1a5c48f62abe8224948
    +Subproject commit e4505317065b76a89665bd1bf07a66ee3972d771
    
    From 014d457882148313c906f5ab696378ad60e52f7d Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Mon, 10 Sep 2012 16:54:23 +0200
    Subject: [PATCH 197/397] update mssilk
    
    ---
     submodules/mssilk | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/submodules/mssilk b/submodules/mssilk
    index d3a6a0a13..f9015a91c 160000
    --- a/submodules/mssilk
    +++ b/submodules/mssilk
    @@ -1 +1 @@
    -Subproject commit d3a6a0a130730c0eaf9a0b6ed2fc466432852684
    +Subproject commit f9015a91ca056cc5be577dfb78c7c224f1fd77b2
    
    From 9f19681772d149f7a8ca48fd449f252dbe93275e Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Mon, 10 Sep 2012 17:56:40 +0200
    Subject: [PATCH 198/397] update xcode project for new mediasteamer2
    
    ---
     linphone.xcodeproj/project.pbxproj | 10 ++++++++--
     1 file changed, 8 insertions(+), 2 deletions(-)
    
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index c9f2309a0..a5abaaa91 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -133,6 +133,8 @@
     		344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
     		344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
     		34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */ = {isa = PBXBuildFile; fileRef = 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */; };
    +		570B130115FE44AF00DE62B6 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 570B130015FE44AF00DE62B6 /* libmediastreamer_voip.a */; };
    +		570B130315FE44ED00DE62B6 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 570B130215FE44ED00DE62B6 /* libmediastreamer_base.a */; };
     		57F005C415EE2CCF00914747 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C315EE2CCF00914747 /* linphonerc */; };
     		57F005C515EE2CCF00914747 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C315EE2CCF00914747 /* linphonerc */; };
     		57F005C815EE2D9200914747 /* linphonerc-factory in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C615EE2D9200914747 /* linphonerc-factory */; };
    @@ -1133,7 +1135,6 @@
     		D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; };
     		D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; };
     		F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; };
    -		F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; };
     /* End PBXBuildFile section */
     
     /* Begin PBXContainerItemProxy section */
    @@ -1477,6 +1478,8 @@
     		344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; };
     		344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; };
     		34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_72.png; path = Resources/linphone_icon_72.png; sourceTree = ""; };
    +		570B130015FE44AF00DE62B6 /* libmediastreamer_voip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_voip.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_voip.a"; sourceTree = ""; };
    +		570B130215FE44ED00DE62B6 /* libmediastreamer_base.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_base.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_base.a"; sourceTree = ""; };
     		57F005C315EE2CCF00914747 /* linphonerc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = linphonerc; path = Resources/linphonerc; sourceTree = ""; };
     		57F005C615EE2D9200914747 /* linphonerc-factory */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc-factory"; path = "Resources/linphonerc-factory"; sourceTree = ""; };
     		57F005C715EE2D9200914747 /* linphonerc-factory~ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc-factory~ipad"; path = "Resources/linphonerc-factory~ipad"; sourceTree = ""; };
    @@ -2077,8 +2080,9 @@
     				220FAD3110765B400068D98F /* libeXosip2.a in Frameworks */,
     				220FAD3210765B400068D98F /* libgsm.a in Frameworks */,
     				223148E41178A08200637D6A /* libilbc.a in Frameworks */,
    +				570B130315FE44ED00DE62B6 /* libmediastreamer_base.a in Frameworks */,
    +				570B130115FE44AF00DE62B6 /* libmediastreamer_voip.a in Frameworks */,
     				F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */,
    -				F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */,
     				226F2ED81344B0EF00F6EF27 /* libmsamr.a in Frameworks */,
     				223148E61178A09900637D6A /* libmsilbc.a in Frameworks */,
     				226183B0147259670037138E /* libmssilk.a in Frameworks */,
    @@ -2590,6 +2594,8 @@
     		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
     			isa = PBXGroup;
     			children = (
    +				570B130215FE44ED00DE62B6 /* libmediastreamer_base.a */,
    +				570B130015FE44AF00DE62B6 /* libmediastreamer_voip.a */,
     				2258633C11410BAC00C5A737 /* README */,
     				22276E8013C73D3100210156 /* libavcodec.a */,
     				22276E8113C73D3100210156 /* libavutil.a */,
    
    From e232007bb9768aaa67a73947649ccc27acdde02a Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Mon, 10 Sep 2012 17:55:43 +0200
    Subject: [PATCH 199/397] Start localization
    
    ---
     Classes/LinphoneUI/UIStateBar.xib             |   15 +
     .../LinphoneUI/{ => en.lproj}/UICallBar.xib   |   94 +-
     .../{ => en.lproj}/UICallBar~ipad.xib         |   88 +-
     .../LinphoneUI/{ => en.lproj}/UICallCell.xib  |   30 +
     .../{ => en.lproj}/UIConferenceHeader.xib     |   16 +-
     .../{ => en.lproj}/UIContactDetailsFooter.xib |   23 +-
     .../{ => en.lproj}/UIContactDetailsHeader.xib |   14 +-
     Classes/LinphoneUI/en.lproj/UIMainBar.xib     |  812 ++
     .../LinphoneUI/en.lproj/UIMainBar~ipad.xib    | 1271 +++
     Classes/LinphoneUI/fr.lproj/UICallBar.xib     | 2853 ++++++
     .../LinphoneUI/fr.lproj/UICallBar~ipad.xib    | 2771 ++++++
     Classes/LinphoneUI/fr.lproj/UICallCell.xib    | 5130 ++++++++++
     .../fr.lproj/UIConferenceHeader.xib           |  280 +
     .../fr.lproj/UIContactDetailsFooter.xib       |  216 +
     .../fr.lproj/UIContactDetailsHeader.xib       |  494 +
     .../LinphoneUI/{ => fr.lproj}/UIMainBar.xib   |  138 +-
     .../{ => fr.lproj}/UIMainBar~ipad.xib         |  137 +-
     .../{ => en.lproj}/ChatRoomViewController.xib |   19 +-
     Classes/{ => en.lproj}/ChatViewController.xib |   24 +-
     .../ContactDetailsLabelViewController.xib     |   17 +-
     .../ContactDetailsViewController.xib          |   24 +-
     .../{ => en.lproj}/ContactsViewController.xib |   26 +-
     .../{ => en.lproj}/DialerViewController.xib   |  106 +-
     .../DialerViewController~ipad.xib             |  105 +-
     .../FirstLoginViewController.xib              |    9 +
     .../HistoryDetailsViewController.xib          |   50 +-
     .../{ => en.lproj}/HistoryViewController.xib  |   24 +-
     .../{ => en.lproj}/InCallViewController.xib   |    4 +
     .../IncomingCallViewController.xib            |   12 +
     .../{ => en.lproj}/WizardViewController.xib   |   96 +-
     Classes/fr.lproj/ChatRoomViewController.xib   |  804 ++
     Classes/fr.lproj/ChatViewController.xib       |  525 ++
     .../ContactDetailsLabelViewController.xib     |  396 +
     .../fr.lproj/ContactDetailsViewController.xib |  740 ++
     Classes/fr.lproj/ContactsViewController.xib   |  574 ++
     Classes/fr.lproj/DialerViewController.xib     | 1773 ++++
     .../fr.lproj/DialerViewController~ipad.xib    | 1546 +++
     Classes/fr.lproj/FirstLoginViewController.xib |  575 ++
     .../fr.lproj/HistoryDetailsViewController.xib |  919 ++
     Classes/fr.lproj/HistoryViewController.xib    |  584 ++
     Classes/fr.lproj/InCallViewController.xib     |  587 ++
     .../fr.lproj/IncomingCallViewController.xib   | 4896 ++++++++++
     Classes/fr.lproj/WizardViewController.xib     | 1846 ++++
     Resources/en.lproj/Localizable.strings        |  Bin 12992 -> 12704 bytes
     Resources/fr.lproj/Localizable.strings        |  Bin 0 -> 12704 bytes
     linphone.ldb/Contents.plist                   | 8300 +++++++++++++++++
     .../1/ChatRoomViewController.xib              |  820 ++
     .../1/ChatViewController.xib                  |  535 ++
     .../1/ContactDetailsLabelViewController.xib   |  403 +
     .../1/ContactDetailsViewController.xib        |  749 ++
     .../1/ContactsViewController.xib              |  584 ++
     .../1/DialerViewController.xib                | 1798 ++++
     .../1/DialerViewController~ipad.xib           | 1571 ++++
     .../1/FirstLoginViewController.xib            |  584 ++
     .../1/HistoryDetailsViewController.xib        |  940 ++
     .../1/HistoryViewController.xib               |  594 ++
     .../1/InCallViewController.xib                |  597 ++
     .../1/IncomingCallViewController.xib          | 4910 ++++++++++
     .../1/WizardViewController.xib                | 1903 ++++
     .../LinphoneUI/UICallBar/1/UICallBar.xib      | 2917 ++++++
     .../UICallBar~ipad/1/UICallBar~ipad.xib       | 2835 ++++++
     .../LinphoneUI/UICallCell/1/UICallCell.xib    | 5147 ++++++++++
     .../1/UIConferenceHeader.xib                  |  286 +
     .../1/UIContactDetailsFooter.xib              |  220 +
     .../1/UIContactDetailsHeader.xib              |  504 +
     .../LinphoneUI/UIMainBar/1/UIMainBar.xib      |  812 ++
     .../UIMainBar~ipad/1/UIMainBar~ipad.xib       | 1271 +++
     .../Localizable/1/Localizable.strings         |  Bin 0 -> 12704 bytes
     linphone.xcodeproj/project.pbxproj            |  518 +-
     69 files changed, 69125 insertions(+), 336 deletions(-)
     rename Classes/LinphoneUI/{ => en.lproj}/UICallBar.xib (97%)
     rename Classes/LinphoneUI/{ => en.lproj}/UICallBar~ipad.xib (97%)
     rename Classes/LinphoneUI/{ => en.lproj}/UICallCell.xib (99%)
     rename Classes/LinphoneUI/{ => en.lproj}/UIConferenceHeader.xib (95%)
     rename Classes/LinphoneUI/{ => en.lproj}/UIContactDetailsFooter.xib (92%)
     rename Classes/LinphoneUI/{ => en.lproj}/UIContactDetailsHeader.xib (97%)
     create mode 100644 Classes/LinphoneUI/en.lproj/UIMainBar.xib
     create mode 100644 Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib
     create mode 100644 Classes/LinphoneUI/fr.lproj/UICallBar.xib
     create mode 100644 Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib
     create mode 100644 Classes/LinphoneUI/fr.lproj/UICallCell.xib
     create mode 100644 Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib
     create mode 100644 Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib
     create mode 100644 Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib
     rename Classes/LinphoneUI/{ => fr.lproj}/UIMainBar.xib (83%)
     rename Classes/LinphoneUI/{ => fr.lproj}/UIMainBar~ipad.xib (89%)
     rename Classes/{ => en.lproj}/ChatRoomViewController.xib (97%)
     rename Classes/{ => en.lproj}/ChatViewController.xib (97%)
     rename Classes/{ => en.lproj}/ContactDetailsLabelViewController.xib (98%)
     rename Classes/{ => en.lproj}/ContactDetailsViewController.xib (98%)
     rename Classes/{ => en.lproj}/ContactsViewController.xib (98%)
     rename Classes/{ => en.lproj}/DialerViewController.xib (94%)
     rename Classes/{ => en.lproj}/DialerViewController~ipad.xib (93%)
     rename Classes/{ => en.lproj}/FirstLoginViewController.xib (98%)
     rename Classes/{ => en.lproj}/HistoryDetailsViewController.xib (94%)
     rename Classes/{ => en.lproj}/HistoryViewController.xib (98%)
     rename Classes/{ => en.lproj}/InCallViewController.xib (99%)
     rename Classes/{ => en.lproj}/IncomingCallViewController.xib (99%)
     rename Classes/{ => en.lproj}/WizardViewController.xib (94%)
     create mode 100644 Classes/fr.lproj/ChatRoomViewController.xib
     create mode 100644 Classes/fr.lproj/ChatViewController.xib
     create mode 100644 Classes/fr.lproj/ContactDetailsLabelViewController.xib
     create mode 100644 Classes/fr.lproj/ContactDetailsViewController.xib
     create mode 100644 Classes/fr.lproj/ContactsViewController.xib
     create mode 100644 Classes/fr.lproj/DialerViewController.xib
     create mode 100644 Classes/fr.lproj/DialerViewController~ipad.xib
     create mode 100644 Classes/fr.lproj/FirstLoginViewController.xib
     create mode 100644 Classes/fr.lproj/HistoryDetailsViewController.xib
     create mode 100644 Classes/fr.lproj/HistoryViewController.xib
     create mode 100644 Classes/fr.lproj/InCallViewController.xib
     create mode 100644 Classes/fr.lproj/IncomingCallViewController.xib
     create mode 100644 Classes/fr.lproj/WizardViewController.xib
     create mode 100644 Resources/fr.lproj/Localizable.strings
     create mode 100644 linphone.ldb/Contents.plist
     create mode 100644 linphone.ldb/Resources/Classes/ChatRoomViewController/1/ChatRoomViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/ChatViewController/1/ChatViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/ContactDetailsLabelViewController/1/ContactDetailsLabelViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/ContactDetailsViewController/1/ContactDetailsViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/ContactsViewController/1/ContactsViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/DialerViewController/1/DialerViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/DialerViewController~ipad/1/DialerViewController~ipad.xib
     create mode 100644 linphone.ldb/Resources/Classes/FirstLoginViewController/1/FirstLoginViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/HistoryDetailsViewController/1/HistoryDetailsViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/HistoryViewController/1/HistoryViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/InCallViewController/1/InCallViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/IncomingCallViewController/1/IncomingCallViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/WizardViewController/1/WizardViewController.xib
     create mode 100644 linphone.ldb/Resources/LinphoneUI/UICallBar/1/UICallBar.xib
     create mode 100644 linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/1/UICallBar~ipad.xib
     create mode 100644 linphone.ldb/Resources/LinphoneUI/UICallCell/1/UICallCell.xib
     create mode 100644 linphone.ldb/Resources/LinphoneUI/UIConferenceHeader/1/UIConferenceHeader.xib
     create mode 100644 linphone.ldb/Resources/LinphoneUI/UIContactDetailsFooter/1/UIContactDetailsFooter.xib
     create mode 100644 linphone.ldb/Resources/LinphoneUI/UIContactDetailsHeader/1/UIContactDetailsHeader.xib
     create mode 100644 linphone.ldb/Resources/LinphoneUI/UIMainBar/1/UIMainBar.xib
     create mode 100644 linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/1/UIMainBar~ipad.xib
     create mode 100644 linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings
    
    diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib
    index b25d2e859..45a65aa71 100644
    --- a/Classes/LinphoneUI/UIStateBar.xib
    +++ b/Classes/LinphoneUI/UIStateBar.xib
    @@ -62,6 +62,10 @@
     						_NS:567
     						2
     						NO
    +						
    +							Registration state
    +							
    +						
     						IBCocoaTouchFramework
     						
     							NSImage
    @@ -81,6 +85,9 @@
     						7
     						3
     						NO
    +						
    +							Registration state
    +						
     						IBCocoaTouchFramework
     						CARAMBA
     						
    @@ -110,6 +117,9 @@
     						_NS:567
     						4
     						NO
    +						
    +							Call quality
    +						
     						IBCocoaTouchFramework
     					
     					
    @@ -118,10 +128,14 @@
     						{{287, 3}, {27, 17}}
     						
     						
    +						
     						_NS:567
     						1
     						5
     						NO
    +						
    +							Security state
    +						
     						IBCocoaTouchFramework
     					
     				
    @@ -206,6 +220,7 @@
     						{{447, 3}, {27, 17}}
     						
     						
    +						
     						_NS:567
     						1
     						5
    diff --git a/Classes/LinphoneUI/UICallBar.xib b/Classes/LinphoneUI/en.lproj/UICallBar.xib
    similarity index 97%
    rename from Classes/LinphoneUI/UICallBar.xib
    rename to Classes/LinphoneUI/en.lproj/UICallBar.xib
    index 98b9cd14d..d3cebcc76 100644
    --- a/Classes/LinphoneUI/UICallBar.xib
    +++ b/Classes/LinphoneUI/en.lproj/UICallBar.xib
    @@ -90,6 +90,9 @@
     								NO
     								NO
     								3
    +								
    +									1
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -127,6 +130,9 @@
     								NO
     								NO
     								4
    +								
    +									2
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -152,6 +158,9 @@
     								NO
     								NO
     								5
    +								
    +									3
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -177,6 +186,9 @@
     								NO
     								NO
     								6
    +								
    +									4
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -202,6 +214,9 @@
     								NO
     								NO
     								7
    +								
    +									5
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -227,6 +242,9 @@
     								NO
     								NO
     								8
    +								
    +									6
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -252,6 +270,9 @@
     								NO
     								NO
     								9
    +								
    +									7
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -277,6 +298,9 @@
     								NO
     								NO
     								10
    +								
    +									8
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -302,6 +326,9 @@
     								NO
     								NO
     								11
    +								
    +									9
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -327,6 +354,9 @@
     								NO
     								NO
     								12
    +								
    +									Star
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -352,6 +382,9 @@
     								NO
     								NO
     								13
    +								
    +									0
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -377,6 +410,9 @@
     								NO
     								NO
     								14
    +								
    +									Sharp
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -420,7 +456,7 @@
     								NO
     								16
     								
    -									Add call
    +									Transfer call
     								
     								IBCocoaTouchFramework
     								0
    @@ -647,7 +683,7 @@
     								NO
     								23
     								
    -									Add call
    +									Options
     								
     								IBCocoaTouchFramework
     								0
    @@ -1196,7 +1232,7 @@
     								{{0, 82}, {480, 2000}}
     								
     								
    -								
    +								
     								_NS:9
     								
     									1
    @@ -1410,7 +1446,7 @@
     								{65, 82}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								25
    @@ -1470,7 +1506,7 @@
     								{{415, 0}, {65, 82}}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								27
    @@ -2555,28 +2591,28 @@
     					
     						UIButton
     						UIToggleButton
    -						UIButton
    -						UIButton
    -						UIButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
     						UIHangUpButton
     						UIMicroButton
    -						UIButton
    -						UIButton
    +						UIDigitButton
    +						UIDigitButton
     						UIButton
     						UIToggleButton
     						UIButton
     						UIView
     						UIView
     						UIPauseButton
    -						UIButton
    -						UIButton
    -						UIButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
     						UISpeakerButton
    -						UIButton
    -						UIButton
    -						UIButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
     						UIVideoButton
    -						UIButton
    +						UIDigitButton
     					
     					
     						
    @@ -2589,15 +2625,15 @@
     						
     						
     							eightButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							fiveButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							fourButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							hangupButton
    @@ -2609,11 +2645,11 @@
     						
     						
     							nineButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							oneButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							optionsAddButton
    @@ -2641,15 +2677,15 @@
     						
     						
     							sevenButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							sharpButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							sixButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							speakerButton
    @@ -2657,15 +2693,15 @@
     						
     						
     							starButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							threeButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							twoButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							videoButton
    @@ -2673,7 +2709,7 @@
     						
     						
     							zeroButton
    -							UIButton
    +							UIDigitButton
     						
     					
     					
    diff --git a/Classes/LinphoneUI/UICallBar~ipad.xib b/Classes/LinphoneUI/en.lproj/UICallBar~ipad.xib
    similarity index 97%
    rename from Classes/LinphoneUI/UICallBar~ipad.xib
    rename to Classes/LinphoneUI/en.lproj/UICallBar~ipad.xib
    index 64fa7ca94..4b3c2fdd3 100644
    --- a/Classes/LinphoneUI/UICallBar~ipad.xib
    +++ b/Classes/LinphoneUI/en.lproj/UICallBar~ipad.xib
    @@ -880,6 +880,9 @@
     								NO
     								NO
     								3
    +								
    +									1
    +								
     								IBIPadFramework
     								0
     								0
    @@ -899,6 +902,9 @@
     								NO
     								NO
     								4
    +								
    +									2
    +								
     								IBIPadFramework
     								0
     								0
    @@ -918,6 +924,9 @@
     								NO
     								NO
     								5
    +								
    +									3
    +								
     								IBIPadFramework
     								0
     								0
    @@ -937,6 +946,9 @@
     								NO
     								NO
     								6
    +								
    +									4
    +								
     								IBIPadFramework
     								0
     								0
    @@ -956,6 +968,9 @@
     								NO
     								NO
     								7
    +								
    +									5
    +								
     								IBIPadFramework
     								0
     								0
    @@ -975,6 +990,9 @@
     								NO
     								NO
     								8
    +								
    +									6
    +								
     								IBIPadFramework
     								0
     								0
    @@ -994,6 +1012,9 @@
     								NO
     								NO
     								9
    +								
    +									7
    +								
     								IBIPadFramework
     								0
     								0
    @@ -1013,6 +1034,9 @@
     								NO
     								NO
     								10
    +								
    +									8
    +								
     								IBIPadFramework
     								0
     								0
    @@ -1032,6 +1056,9 @@
     								NO
     								NO
     								11
    +								
    +									9
    +								
     								IBIPadFramework
     								0
     								0
    @@ -1051,6 +1078,9 @@
     								NO
     								NO
     								12
    +								
    +									Star
    +								
     								IBIPadFramework
     								0
     								0
    @@ -1070,6 +1100,9 @@
     								NO
     								NO
     								13
    +								
    +									0
    +								
     								IBIPadFramework
     								0
     								0
    @@ -1089,6 +1122,9 @@
     								NO
     								NO
     								14
    +								
    +									Sharp
    +								
     								IBIPadFramework
     								0
     								0
    @@ -1123,7 +1159,7 @@
     								NO
     								16
     								
    -									Add call
    +									Transfer call
     								
     								IBIPadFramework
     								0
    @@ -1347,7 +1383,7 @@
     								NO
     								23
     								
    -									Add call
    +									Options
     								
     								IBIPadFramework
     								0
    @@ -2473,28 +2509,28 @@
     					
     						UIButton
     						UIToggleButton
    -						UIButton
    -						UIButton
    -						UIButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
     						UIHangUpButton
     						UIMicroButton
    -						UIButton
    -						UIButton
    +						UIDigitButton
    +						UIDigitButton
     						UIButton
     						UIToggleButton
     						UIButton
     						UIView
     						UIView
     						UIPauseButton
    -						UIButton
    -						UIButton
    -						UIButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
     						UISpeakerButton
    -						UIButton
    -						UIButton
    -						UIButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
     						UIVideoButton
    -						UIButton
    +						UIDigitButton
     					
     					
     						
    @@ -2507,15 +2543,15 @@
     						
     						
     							eightButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							fiveButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							fourButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							hangupButton
    @@ -2527,11 +2563,11 @@
     						
     						
     							nineButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							oneButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							optionsAddButton
    @@ -2559,15 +2595,15 @@
     						
     						
     							sevenButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							sharpButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							sixButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							speakerButton
    @@ -2575,15 +2611,15 @@
     						
     						
     							starButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							threeButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							twoButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							videoButton
    @@ -2591,7 +2627,7 @@
     						
     						
     							zeroButton
    -							UIButton
    +							UIDigitButton
     						
     					
     					
    diff --git a/Classes/LinphoneUI/UICallCell.xib b/Classes/LinphoneUI/en.lproj/UICallCell.xib
    similarity index 99%
    rename from Classes/LinphoneUI/UICallCell.xib
    rename to Classes/LinphoneUI/en.lproj/UICallCell.xib
    index e8526ff6d..e17f7df5b 100644
    --- a/Classes/LinphoneUI/UICallCell.xib
    +++ b/Classes/LinphoneUI/en.lproj/UICallCell.xib
    @@ -54,6 +54,9 @@
     									MCAwAA
     								
     								NO
    +								
    +									
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -105,6 +108,11 @@
     								_NS:9
     								
     								NO
    +								
    +									Contact's avatar
    +									
    +									
    +								
     								IBCocoaTouchFramework
     								
     									NSImage
    @@ -164,6 +172,10 @@
     								NO
     								7
     								NO
    +								
    +									Contact's name
    +									
    +								
     								IBCocoaTouchFramework
     								0102030405
     								
    @@ -4579,6 +4591,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								
     								_NS:9
     								NO
    +								
    +									Call state
    +									
    +									
    +								
     								IBCocoaTouchFramework
     							
     							
    @@ -4590,6 +4607,9 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								
     								_NS:9
     								NO
    +								
    +									Remove
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -4620,6 +4640,9 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								
     								_NS:9
     								NO
    +								
    +									Pause
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -4656,6 +4679,10 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								YES
     								7
     								NO
    +								
    +									Call state
    +									
    +								
     								IBCocoaTouchFramework
     								12:34
     								
    @@ -4682,6 +4709,9 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								
     								_NS:9
     								NO
    +								
    +									Expand
    +								
     								IBCocoaTouchFramework
     								0
     								0
    diff --git a/Classes/LinphoneUI/UIConferenceHeader.xib b/Classes/LinphoneUI/en.lproj/UIConferenceHeader.xib
    similarity index 95%
    rename from Classes/LinphoneUI/UIConferenceHeader.xib
    rename to Classes/LinphoneUI/en.lproj/UIConferenceHeader.xib
    index 00f23d3c3..3fa734501 100644
    --- a/Classes/LinphoneUI/UIConferenceHeader.xib
    +++ b/Classes/LinphoneUI/en.lproj/UIConferenceHeader.xib
    @@ -3,18 +3,18 @@
     	
     		1296
     		11E53
    -		2182
    +		2549
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1181
    +			1498
     		
     		
    +			IBProxyObject
     			IBUIButton
     			IBUIImageView
     			IBUIView
    -			IBProxyObject
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -45,6 +45,11 @@
     						
     						_NS:9
     						NO
    +						
    +							Conference
    +							
    +							
    +						
     						IBCocoaTouchFramework
     						
     							NSImage
    @@ -71,6 +76,9 @@
     						
     						_NS:9
     						NO
    +						
    +							Pause
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -273,6 +281,6 @@
     			{43, 46}
     			{640, 135}
     		
    -		1181
    +		1498
     	
     
    diff --git a/Classes/LinphoneUI/UIContactDetailsFooter.xib b/Classes/LinphoneUI/en.lproj/UIContactDetailsFooter.xib
    similarity index 92%
    rename from Classes/LinphoneUI/UIContactDetailsFooter.xib
    rename to Classes/LinphoneUI/en.lproj/UIContactDetailsFooter.xib
    index 78b5e58dc..57c5e91bd 100644
    --- a/Classes/LinphoneUI/UIContactDetailsFooter.xib
    +++ b/Classes/LinphoneUI/en.lproj/UIContactDetailsFooter.xib
    @@ -41,12 +41,16 @@
     						{{23, 25}, {275, 50}}
     						
     						
    +						
     						_NS:9
     						
     							3
     							MCAwAA
     						
     						NO
    +						
    +							Remove
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -178,17 +182,20 @@
     							id
     						
     					
    -					
    -						removeButton
    -						UIButton
    -					
    -					
    -						removeButton
    -						
    +					
    +						id
    +						UIButton
    +					
    +					
    +						
    +							contactDetailsDelegate
    +							id
    +						
    +						
     							removeButton
     							UIButton
     						
    -					
    +					
     					
     						IBProjectSource
     						./Classes/UIContactDetailsFooter.h
    diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.xib b/Classes/LinphoneUI/en.lproj/UIContactDetailsHeader.xib
    similarity index 97%
    rename from Classes/LinphoneUI/UIContactDetailsHeader.xib
    rename to Classes/LinphoneUI/en.lproj/UIContactDetailsHeader.xib
    index ee6cd04d7..6e7ff2aca 100644
    --- a/Classes/LinphoneUI/UIContactDetailsHeader.xib
    +++ b/Classes/LinphoneUI/en.lproj/UIContactDetailsHeader.xib
    @@ -77,6 +77,10 @@
     						
     						_NS:9
     						NO
    +						
    +							Contact's avatar
    +							
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -118,6 +122,9 @@
     								YES
     								7
     								NO
    +								
    +									Contact's name
    +								
     								IBCocoaTouchFramework
     								Contact1
     								
    @@ -159,6 +166,7 @@
     								{219, 130}
     								
     								
    +								
     								_NS:9
     								
     									10
    @@ -428,13 +436,13 @@ AAgACAAIAAEAAQABAAE
     					UIContactDetailsHeader
     					UIViewController
     					
    -						onImageClick:
    +						onAvatarClick:
     						id
     					
     					
    -						onImageClick:
    +						onAvatarClick:
     						
    -							onImageClick:
    +							onAvatarClick:
     							id
     						
     					
    diff --git a/Classes/LinphoneUI/en.lproj/UIMainBar.xib b/Classes/LinphoneUI/en.lproj/UIMainBar.xib
    new file mode 100644
    index 000000000..6fb85e091
    --- /dev/null
    +++ b/Classes/LinphoneUI/en.lproj/UIMainBar.xib
    @@ -0,0 +1,812 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUILabel
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 11}, {320, 66}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMDkwOTI0NTczOTEAA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						290
    +						{{0, 77}, {320, 2000}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +						
    +						28
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						{64, 77}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							History
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							history_over.png
    +						
    +						
    +							NSImage
    +							history_selected.png
    +						
    +						
    +							NSImage
    +							history_default.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									history_notification.png
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									History missed
    +									
    +								
    +								IBCocoaTouchFramework
    +								99
    +								
    +									3
    +									MQA
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +									1
    +									14
    +								
    +								
    +									Helvetica
    +									14
    +									16
    +								
    +							
    +						
    +						{{38, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						NO
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						{{64, 0}, {64, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Contacts
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							contacts_over.png
    +						
    +						
    +							NSImage
    +							contacts_selected.png
    +						
    +						
    +							NSImage
    +							contacts_default.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{192, 0}, {64, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Settings
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							settings_over.png
    +						
    +						
    +							NSImage
    +							settings_selected.png
    +						
    +						
    +							NSImage
    +							settings_default.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{128, 0}, {64, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Dialer
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							dialer_over.png
    +						
    +						
    +							NSImage
    +							dialer_selected.png
    +						
    +						
    +							NSImage
    +							dialer_default.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{256, 0}, {64, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Chat
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							chat_over.png
    +						
    +						
    +							NSImage
    +							chat_selected.png
    +						
    +						
    +							NSImage
    +							chat_default.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Chat missed
    +									
    +								
    +								IBCocoaTouchFramework
    +								99
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +								
    +							
    +						
    +						{{261, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						NO
    +						NO
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 77}
    +				
    +				
    +				
    +				_NS:9
    +				
    +					1
    +					MCAxIDAuMTkxOTQ1NDc1NSAwAA
    +				
    +				NO
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						historyButton
    +						
    +						
    +					
    +					13
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					14
    +				
    +				
    +					
    +						contactsButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						chatButton
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						settingsButton
    +						
    +						
    +					
    +					29
    +				
    +				
    +					
    +						dialerButton
    +						
    +						
    +					
    +					12
    +				
    +				
    +					
    +						historyNotificationLabel
    +						
    +						
    +					
    +					35
    +				
    +				
    +					
    +						historyNotificationView
    +						
    +						
    +					
    +					36
    +				
    +				
    +					
    +						chatNotificationLabel
    +						
    +						
    +					
    +					40
    +				
    +				
    +					
    +						chatNotificationView
    +						
    +						
    +					
    +					41
    +				
    +				
    +					
    +						portraitView
    +						
    +						
    +					
    +					43
    +				
    +				
    +					
    +						onChatClick:
    +						
    +						
    +						7
    +					
    +					26
    +				
    +				
    +					
    +						onHistoryClick:
    +						
    +						
    +						7
    +					
    +					22
    +				
    +				
    +					
    +						onDialerClick:
    +						
    +						
    +						7
    +					
    +					24
    +				
    +				
    +					
    +						onContactsClick:
    +						
    +						
    +						7
    +					
    +					23
    +				
    +				
    +					
    +						onSettingsClick:
    +						
    +						
    +						7
    +					
    +					25
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +						
    +						mask
    +					
    +					
    +						5
    +						
    +						
    +						chat
    +					
    +					
    +						6
    +						
    +						
    +						history
    +					
    +					
    +						8
    +						
    +						
    +						contacts
    +					
    +					
    +						9
    +						
    +						
    +						settings
    +					
    +					
    +						7
    +						
    +						
    +						dialer
    +					
    +					
    +						32
    +						
    +						
    +							
    +							
    +						
    +						
    +						historyNotificationView
    +					
    +					
    +						33
    +						
    +						
    +						historyNotificationImage
    +					
    +					
    +						34
    +						
    +						
    +						historyNotificationLabel
    +					
    +					
    +						37
    +						
    +						
    +							
    +							
    +						
    +						
    +						chatNotificationView
    +					
    +					
    +						38
    +						
    +						
    +						chatNotificationLabel
    +					
    +					
    +						39
    +						
    +						
    +						chatNotificationImage
    +					
    +					
    +						45
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				UIMainBar
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			45
    +		
    +		
    +			
    +				
    +					TPMultiLayoutViewController
    +					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					UIMainBar
    +					TPMultiLayoutViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onChatClick:
    +							id
    +						
    +						
    +							onContactsClick:
    +							id
    +						
    +						
    +							onDialerClick:
    +							id
    +						
    +						
    +							onHistoryClick:
    +							id
    +						
    +						
    +							onSettingsClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +						UIButton
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +					
    +					
    +						
    +							chatButton
    +							UIButton
    +						
    +						
    +							chatNotificationLabel
    +							UILabel
    +						
    +						
    +							chatNotificationView
    +							UIView
    +						
    +						
    +							contactsButton
    +							UIButton
    +						
    +						
    +							dialerButton
    +							UIButton
    +						
    +						
    +							historyButton
    +							UIButton
    +						
    +						
    +							historyNotificationLabel
    +							UILabel
    +						
    +						
    +							historyNotificationView
    +							UIView
    +						
    +						
    +							settingsButton
    +							UIButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIMainBar.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{43, 43}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +		
    +		1498
    +	
    +
    diff --git a/Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib b/Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib
    new file mode 100644
    index 000000000..430d80158
    --- /dev/null
    +++ b/Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib
    @@ -0,0 +1,1271 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUILabel
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBIPadFramework
    +			
    +			
    +				IBFirstResponder
    +				IBIPadFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 11}, {768, 66}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMDkwOTI0NTczOTEAA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						290
    +						{{0, 77}, {768, 2000}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +						
    +						28
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						{175, 77}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						1
    +						
    +							History
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							history_over~ipad.png
    +						
    +						
    +							NSImage
    +							history_selected~ipad.png
    +						
    +						
    +							NSImage
    +							history_default~ipad.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBIPadFramework
    +								
    +									NSImage
    +									history_notification.png
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									History missed
    +									
    +								
    +								IBIPadFramework
    +								99
    +								
    +									3
    +									MQA
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +									1
    +									14
    +								
    +								
    +									Helvetica
    +									14
    +									16
    +								
    +							
    +						
    +						{{140, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						NO
    +						2
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						{{175, 0}, {175, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						3
    +						
    +							Contacts
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							contacts_over~ipad.png
    +						
    +						
    +							NSImage
    +							contacts_selected~ipad.png
    +						
    +						
    +							NSImage
    +							contacts_default~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						288
    +						{{350, -1}, {68, 80}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						4
    +						
    +							Dialer
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							dialer_over.png
    +						
    +						
    +							NSImage
    +							dialer_selected
    +						
    +						
    +							NSImage
    +							dialer_default.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{418, 0}, {175, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						5
    +						
    +							Settings
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							settings_over~ipad.png
    +						
    +						
    +							NSImage
    +							settings_selected~ipad.png
    +						
    +						
    +							NSImage
    +							settings_default~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{593, 0}, {175, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						6
    +						
    +							Chat
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							chat_over~ipad.png
    +						
    +						
    +							NSImage
    +							chat_selected~ipad.png
    +						
    +						
    +							NSImage
    +							chat_default~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBIPadFramework
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Chat missed
    +									
    +								
    +								IBIPadFramework
    +								99
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +								
    +							
    +						
    +						{{605, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						NO
    +						7
    +						NO
    +						IBIPadFramework
    +					
    +				
    +				{768, 77}
    +				
    +				
    +				
    +				_NS:9
    +				
    +					1
    +					MCAxIDAuMTkxOTQ1NDc1NSAwAA
    +				
    +				NO
    +				IBIPadFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 19}, {1024, 67}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMDkwOTI0NTczOTEAA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						290
    +						{{0, 86}, {1024, 2000}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +						
    +						28
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						{240, 86}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						1
    +						
    +							History
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							history_over_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							history_selected_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							history_default_landscape~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBIPadFramework
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								IBIPadFramework
    +								99
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +								
    +							
    +						
    +						{{208, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						NO
    +						2
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						{{240, 0}, {240, 86}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						3
    +						
    +							Contacts
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							contacts_over_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							contacts_selected_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							contacts_default_landscape~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						288
    +						{{480, 8}, {68, 80}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						4
    +						
    +							Dialer
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{544, 0}, {240, 86}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						5
    +						
    +							Settings
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							settings_over_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							settings_selected_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							settings_default_landscape~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{784, 0}, {240, 86}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						6
    +						
    +							Chat
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							chat_over_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							chat_selected_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							chat_default_landscape~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBIPadFramework
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								IBIPadFramework
    +								99
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +								
    +							
    +						
    +						{{792, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						NO
    +						7
    +						NO
    +						IBIPadFramework
    +					
    +				
    +				{1024, 86}
    +				
    +				
    +				
    +				_NS:9
    +				
    +					1
    +					MCAxIDAuMTkxOTQ1NDc1NSAwAA
    +				
    +				NO
    +				IBIPadFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					41
    +				
    +				
    +					
    +						portraitView
    +						
    +						
    +					
    +					42
    +				
    +				
    +					
    +						landscapeView
    +						
    +						
    +					
    +					43
    +				
    +				
    +					
    +						chatButton
    +						
    +						
    +					
    +					44
    +				
    +				
    +					
    +						chatNotificationView
    +						
    +						
    +					
    +					45
    +				
    +				
    +					
    +						chatNotificationLabel
    +						
    +						
    +					
    +					46
    +				
    +				
    +					
    +						contactsButton
    +						
    +						
    +					
    +					47
    +				
    +				
    +					
    +						dialerButton
    +						
    +						
    +					
    +					48
    +				
    +				
    +					
    +						historyButton
    +						
    +						
    +					
    +					49
    +				
    +				
    +					
    +						historyNotificationLabel
    +						
    +						
    +					
    +					50
    +				
    +				
    +					
    +						historyNotificationView
    +						
    +						
    +					
    +					51
    +				
    +				
    +					
    +						settingsButton
    +						
    +						
    +					
    +					52
    +				
    +				
    +					
    +						onDialerClick:
    +						
    +						
    +						7
    +					
    +					60
    +				
    +				
    +					
    +						onChatClick:
    +						
    +						
    +						7
    +					
    +					56
    +				
    +				
    +					
    +						onHistoryClick:
    +						
    +						
    +						7
    +					
    +					58
    +				
    +				
    +					
    +						onContactsClick:
    +						
    +						
    +						7
    +					
    +					57
    +				
    +				
    +					
    +						onSettingsClick:
    +						
    +						
    +						7
    +					
    +					59
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						2
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						Portrait View
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +						
    +						
    +						chatNotificationView
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +						
    +						
    +						historyNotificationView
    +					
    +					
    +						5
    +						
    +						
    +						dialer
    +					
    +					
    +						6
    +						
    +						
    +						
    +						mask
    +					
    +					
    +						7
    +						
    +						
    +						chat
    +					
    +					
    +						8
    +						
    +						
    +						history
    +					
    +					
    +						9
    +						
    +						
    +						contacts
    +					
    +					
    +						11
    +						
    +						
    +						historyNotificationLabel
    +					
    +					
    +						12
    +						
    +						
    +						historyNotificationImage
    +					
    +					
    +						13
    +						
    +						
    +						chatNotificationImage
    +					
    +					
    +						14
    +						
    +						
    +						chatNotificationLabel
    +					
    +					
    +						10
    +						
    +						
    +						settings
    +					
    +					
    +						28
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						Landscape View
    +					
    +					
    +						29
    +						
    +						
    +							
    +							
    +						
    +						
    +						chatNotificationView
    +					
    +					
    +						30
    +						
    +						
    +						settings
    +					
    +					
    +						31
    +						
    +						
    +						contacts
    +					
    +					
    +						32
    +						
    +						
    +						history
    +					
    +					
    +						33
    +						
    +						
    +						chat
    +					
    +					
    +						34
    +						
    +						
    +						
    +						mask
    +					
    +					
    +						36
    +						
    +						
    +							
    +							
    +						
    +						
    +						historyNotificationView
    +					
    +					
    +						37
    +						
    +						
    +						historyNotificationImage
    +					
    +					
    +						38
    +						
    +						
    +						historyNotificationLabel
    +					
    +					
    +						39
    +						
    +						
    +						chatNotificationLabel
    +					
    +					
    +						40
    +						
    +						
    +						chatNotificationImage
    +					
    +					
    +						35
    +						
    +						
    +						dialer
    +					
    +					
    +						61
    +						
    +						
    +						background
    +					
    +					
    +						62
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				UIMainBar
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			62
    +		
    +		
    +			
    +				
    +					TPMultiLayoutViewController
    +					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					UIMainBar
    +					TPMultiLayoutViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onChatClick:
    +							id
    +						
    +						
    +							onContactsClick:
    +							id
    +						
    +						
    +							onDialerClick:
    +							id
    +						
    +						
    +							onHistoryClick:
    +							id
    +						
    +						
    +							onSettingsClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +						UIButton
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +					
    +					
    +						
    +							chatButton
    +							UIButton
    +						
    +						
    +							chatNotificationLabel
    +							UILabel
    +						
    +						
    +							chatNotificationView
    +							UIView
    +						
    +						
    +							contactsButton
    +							UIButton
    +						
    +						
    +							dialerButton
    +							UIButton
    +						
    +						
    +							historyButton
    +							UIButton
    +						
    +						
    +							historyNotificationLabel
    +							UILabel
    +						
    +						
    +							historyNotificationView
    +							UIView
    +						
    +						
    +							settingsButton
    +							UIButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIMainBar.h
    +					
    +				
    +			
    +		
    +		0
    +		IBIPadFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{480, 170}
    +			{353, 153}
    +			{480, 170}
    +			{353, 153}
    +			{480, 170}
    +			{353, 153}
    +			{480, 171}
    +			{352, 153}
    +			{480, 171}
    +			{352, 153}
    +			{480, 171}
    +			{352, 153}
    +			{128, 154}
    +			{128, 154}
    +			{16, 16}
    +			{480, 171}
    +			{353, 153}
    +			{43, 43}
    +			{480, 171}
    +			{353, 153}
    +			{480, 171}
    +			{353, 153}
    +			{480, 171}
    +			{350, 153}
    +			{480, 171}
    +			{350, 153}
    +			{480, 171}
    +			{350, 153}
    +		
    +		1498
    +	
    +
    diff --git a/Classes/LinphoneUI/fr.lproj/UICallBar.xib b/Classes/LinphoneUI/fr.lproj/UICallBar.xib
    new file mode 100644
    index 000000000..f10fb754a
    --- /dev/null
    +++ b/Classes/LinphoneUI/fr.lproj/UICallBar.xib
    @@ -0,0 +1,2853 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIButton
    +			IBUIActivityIndicatorView
    +			IBUIView
    +			IBUIImageView
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				301
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 335}, {320, 125}}
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMTkxOTQ1NDc1NQA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						288
    +						
    +							
    +								
    +								274
    +								{281, 260}
    +								
    +								
    +								_NS:9
    +								2
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									dialer_alt_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 10}, {107, 54}}
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								3
    +								
    +									1
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									numpad_one_over.png
    +								
    +								
    +									NSImage
    +									numpad_one_default.png
    +								
    +								
    +									Helvetica-Bold
    +									Helvetica
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 10}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								4
    +								
    +									2
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_two_over.png
    +								
    +								
    +									NSImage
    +									numpad_two_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 10}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								5
    +								
    +									3
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_three_over.png
    +								
    +								
    +									NSImage
    +									numpad_three_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 72}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								6
    +								
    +									4
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_four_over.png
    +								
    +								
    +									NSImage
    +									numpad_four_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 72}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								7
    +								
    +									5
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_five_over.png
    +								
    +								
    +									NSImage
    +									numpad_five_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 72}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								8
    +								
    +									6
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_six_over.png
    +								
    +								
    +									NSImage
    +									numpad_six_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 134}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								9
    +								
    +									7
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_seven_over.png
    +								
    +								
    +									NSImage
    +									numpad_seven_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 134}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								10
    +								
    +									8
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_eight_over.png
    +								
    +								
    +									NSImage
    +									numpad_eight_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 134}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								11
    +								
    +									9
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_nine_over.png
    +								
    +								
    +									NSImage
    +									numpad_nine_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 196}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								12
    +								
    +									Star
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_star_over.png
    +								
    +								
    +									NSImage
    +									numpad_star_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 196}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								13
    +								
    +									0
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_zero_over.png
    +								
    +								
    +									NSImage
    +									numpad_zero_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 196}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								14
    +								
    +									Sharp
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_sharp_over.png
    +								
    +								
    +									NSImage
    +									numpad_sharp_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{20, 57}, {281, 260}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						1
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								292
    +								{{3, 0}, {77, 68}}
    +								
    +								
    +								_NS:9
    +								NO
    +								16
    +								
    +									Transfer call
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_transfer_over.png
    +								
    +								
    +									NSImage
    +									options_transfer_disabled.png
    +								
    +								
    +									NSImage
    +									options_transfer_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{3, 61}, {77, 68}}
    +								
    +								
    +								_NS:9
    +								NO
    +								17
    +								
    +									Add call
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_add_over.png
    +								
    +								
    +									NSImage
    +									options_add_disabled.png
    +								
    +								
    +									NSImage
    +									options_add_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{240, 205}, {80, 129}}
    +						
    +						
    +						_NS:9
    +						
    +						15
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								290
    +								{{0, 135}, {320, 2000}}
    +								
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								292
    +								{80, 67}
    +								
    +								
    +								_NS:9
    +								NO
    +								19
    +								
    +									Video
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									video_off_over.png
    +								
    +								
    +									NSImage
    +									video_off_disabled.png
    +								
    +								
    +									NSImage
    +									video_on_default.png
    +								
    +								
    +									NSImage
    +									video_off_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{20, 20}, {37, 37}}
    +								
    +								
    +								_NS:9
    +								NO
    +								20
    +								IBCocoaTouchFramework
    +								0
    +							
    +							
    +								
    +								292
    +								{{80, 0}, {80, 67}}
    +								
    +								
    +								_NS:9
    +								NO
    +								21
    +								
    +									Micro
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									micro_off_over.png
    +								
    +								
    +									NSImage
    +									micro_off_disabled.png
    +								
    +								
    +									NSImage
    +									micro_on_default.png
    +								
    +								
    +									NSImage
    +									micro_off_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{160, 0}, {80, 67}}
    +								
    +								
    +								_NS:9
    +								NO
    +								22
    +								
    +									Speaker
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									speaker_off_over.png
    +								
    +								
    +									NSImage
    +									speaker_off_disabled.png
    +								
    +								
    +									NSImage
    +									speaker_on_default.png
    +								
    +								
    +									NSImage
    +									speaker_off_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{240, 0}, {80, 67}}
    +								
    +								
    +								_NS:9
    +								NO
    +								23
    +								
    +									Options
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_over.png
    +								
    +								
    +									NSImage
    +									options_disabled.png
    +								
    +								
    +									NSImage
    +									options_selected.png
    +								
    +								
    +									NSImage
    +									options_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{0, 67}, {105, 68}}
    +								
    +								
    +								_NS:9
    +								NO
    +								24
    +								
    +									Pause
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									pause_off_over.png
    +								
    +								
    +									NSImage
    +									pause_on_default.png
    +								
    +								
    +									NSImage
    +									pause_off_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483384
    +								{{0, 67}, {105, 68}}
    +								
    +								
    +								_NS:9
    +								NO
    +								25
    +								
    +									Start Conference
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									conference_over.png
    +								
    +								
    +									NSImage
    +									conference_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{105, 67}, {111, 68}}
    +								
    +								
    +								_NS:9
    +								NO
    +								26
    +								
    +									Hangup
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									hangup_over.png
    +								
    +								
    +									NSImage
    +									hangup_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{215, 67}, {105, 68}}
    +								
    +								
    +								_NS:9
    +								NO
    +								27
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									dialer_alt_over.png
    +								
    +								
    +									NSImage
    +									dialer_alt_back_default.png
    +								
    +								
    +									NSImage
    +									dialer_alt_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 325}, {320, 135}}
    +						
    +						
    +						_NS:9
    +						
    +						18
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				_NS:9
    +				
    +				NO
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				301
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 248}, {480, 72}}
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMTkxOTQ1NDc1NQA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						288
    +						
    +							
    +								
    +								274
    +								{281, 260}
    +								
    +								
    +								_NS:9
    +								2
    +								NO
    +								IBCocoaTouchFramework
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 10}, {107, 54}}
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								3
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 10}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								4
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 10}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								5
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 72}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								6
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 72}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								7
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 72}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								8
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 134}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								9
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 134}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								10
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 134}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								11
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 196}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								12
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 196}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								13
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 196}, {107, 54}}
    +								
    +								NO
    +								NO
    +								14
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +						
    +						{{91, 0}, {281, 260}}
    +						
    +						
    +						_NS:9
    +						
    +						1
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								292
    +								{65, 55}
    +								
    +								
    +								_NS:9
    +								NO
    +								16
    +								
    +									Add call
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_transfer_over_landscape.png
    +								
    +								
    +									NSImage
    +									options_transfer_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									options_transfer_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 51}, {65, 55}}
    +								
    +								
    +								_NS:9
    +								NO
    +								17
    +								
    +									Add call
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_add_over_landscape.png
    +								
    +								
    +									NSImage
    +									options_add_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									options_add_default_landscape.png
    +								
    +								
    +								
    +							
    +						
    +						{{415, 140}, {65, 105}}
    +						
    +						
    +						_NS:9
    +						
    +						15
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								290
    +								{{0, 82}, {480, 2000}}
    +								
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								292
    +								{{65, 0}, {65, 82}}
    +								
    +								
    +								_NS:9
    +								NO
    +								19
    +								
    +									Video
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									video_off_over_landscape.png
    +								
    +								
    +									NSImage
    +									video_off_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									video_on_default_landscape.png
    +								
    +								
    +									NSImage
    +									video_off_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{79, 20}, {37, 37}}
    +								
    +								
    +								_NS:9
    +								NO
    +								20
    +								IBCocoaTouchFramework
    +								0
    +							
    +							
    +								
    +								292
    +								{{130, 0}, {65, 82}}
    +								
    +								
    +								_NS:9
    +								NO
    +								21
    +								
    +									Micro
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									micro_off_over_landscape.png
    +								
    +								
    +									NSImage
    +									micro_off_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									micro_on_default_landscape.png
    +								
    +								
    +									NSImage
    +									micro_off_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{285, 0}, {65, 82}}
    +								
    +								
    +								_NS:9
    +								NO
    +								22
    +								
    +									Speaker
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									speaker_off_over_landscape.png
    +								
    +								
    +									NSImage
    +									speaker_off_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									speaker_on_default_landscape.png
    +								
    +								
    +									NSImage
    +									speaker_off_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{350, 0}, {65, 82}}
    +								
    +								
    +								_NS:9
    +								NO
    +								23
    +								
    +									Add call
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_over_landscape.png
    +								
    +								
    +									NSImage
    +									options_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									options_selected_landscape.png
    +								
    +								
    +									NSImage
    +									options_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{65, 82}
    +								
    +								
    +								_NS:9
    +								NO
    +								24
    +								
    +									Pause
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									pause_off_over_landscape.png
    +								
    +								
    +									NSImage
    +									pause_on_default_landscape.png
    +								
    +								
    +									NSImage
    +									pause_off_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483384
    +								{65, 82}
    +								
    +								
    +								_NS:9
    +								NO
    +								25
    +								
    +									Start Conference
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									conference_over_landscape.png
    +								
    +								
    +									NSImage
    +									conference_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{195, 0}, {90, 82}}
    +								
    +								
    +								_NS:9
    +								NO
    +								26
    +								
    +									Hangup
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									hangup_over_landscape.png
    +								
    +								
    +									NSImage
    +									hangup_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{415, 0}, {65, 82}}
    +								
    +								
    +								_NS:9
    +								NO
    +								27
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									dialer_alt_over_landscape.png
    +								
    +								
    +									NSImage
    +									dialer_alt_back_default_landscape.png
    +								
    +								
    +									NSImage
    +									dialer_alt_default_landscape.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 238}, {480, 82}}
    +						
    +						
    +						_NS:9
    +						
    +						18
    +						IBCocoaTouchFramework
    +					
    +				
    +				{480, 320}
    +				
    +				_NS:9
    +				
    +				NO
    +				
    +					3
    +					3
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					13
    +				
    +				
    +					
    +						hangupButton
    +						
    +						
    +					
    +					29
    +				
    +				
    +					
    +						conferenceButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						pauseButton
    +						
    +						
    +					
    +					15
    +				
    +				
    +					
    +						optionsButton
    +						
    +						
    +					
    +					19
    +				
    +				
    +					
    +						speakerButton
    +						
    +						
    +					
    +					16
    +				
    +				
    +					
    +						microButton
    +						
    +						
    +					
    +					14
    +				
    +				
    +					
    +						videoButton
    +						
    +						
    +					
    +					17
    +				
    +				
    +					
    +						padView
    +						
    +						
    +					
    +					45
    +				
    +				
    +					
    +						eightButton
    +						
    +						
    +					
    +					75
    +				
    +				
    +					
    +						fiveButton
    +						
    +						
    +					
    +					76
    +				
    +				
    +					
    +						fourButton
    +						
    +						
    +					
    +					77
    +				
    +				
    +					
    +						nineButton
    +						
    +						
    +					
    +					78
    +				
    +				
    +					
    +						oneButton
    +						
    +						
    +					
    +					79
    +				
    +				
    +					
    +						sevenButton
    +						
    +						
    +					
    +					80
    +				
    +				
    +					
    +						sharpButton
    +						
    +						
    +					
    +					81
    +				
    +				
    +					
    +						sixButton
    +						
    +						
    +					
    +					82
    +				
    +				
    +					
    +						starButton
    +						
    +						
    +					
    +					83
    +				
    +				
    +					
    +						threeButton
    +						
    +						
    +					
    +					84
    +				
    +				
    +					
    +						twoButton
    +						
    +						
    +					
    +					85
    +				
    +				
    +					
    +						zeroButton
    +						
    +						
    +					
    +					86
    +				
    +				
    +					
    +						optionsView
    +						
    +						
    +					
    +					92
    +				
    +				
    +					
    +						optionsAddButton
    +						
    +						
    +					
    +					96
    +				
    +				
    +					
    +						optionsTransferButton
    +						
    +						
    +					
    +					97
    +				
    +				
    +					
    +						landscapeView
    +						
    +						
    +					
    +					137
    +				
    +				
    +					
    +						portraitView
    +						
    +						
    +					
    +					138
    +				
    +				
    +					
    +						dialerButton
    +						
    +						
    +					
    +					140
    +				
    +				
    +					
    +						onPadClick:
    +						
    +						
    +						7
    +					
    +					46
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					20
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					60
    +				
    +				
    +					
    +						onConferenceClick:
    +						
    +						
    +						7
    +					
    +					28
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					89
    +				
    +				
    +					
    +						onOptionsAddClick:
    +						
    +						
    +						7
    +					
    +					93
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					91
    +				
    +				
    +					
    +						onOptionsTransferClick:
    +						
    +						
    +						7
    +					
    +					98
    +				
    +				
    +					
    +						onPadClick:
    +						
    +						
    +						7
    +					
    +					132
    +				
    +				
    +					
    +						onConferenceClick:
    +						
    +						
    +						7
    +					
    +					135
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					134
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					129
    +				
    +				
    +					
    +						onOptionsAddClick:
    +						
    +						
    +						7
    +					
    +					130
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					136
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					131
    +				
    +				
    +					
    +						onOptionsTransferClick:
    +						
    +						
    +						7
    +					
    +					133
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						Portrait View
    +					
    +					
    +						5
    +						
    +						
    +						
    +						mask
    +					
    +					
    +						30
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						buttons
    +					
    +					
    +						6
    +						
    +						
    +						dialerButton
    +					
    +					
    +						7
    +						
    +						
    +						hangupButton
    +					
    +					
    +						21
    +						
    +						
    +						conferenceButton
    +					
    +					
    +						8
    +						
    +						
    +						pauseButton
    +					
    +					
    +						10
    +						
    +						
    +						optionsButton
    +					
    +					
    +						9
    +						
    +						
    +						speakerButton
    +					
    +					
    +						11
    +						
    +						
    +						microButton
    +					
    +					
    +						12
    +						
    +						
    +						videoButton
    +					
    +					
    +						31
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						padView
    +					
    +					
    +						59
    +						
    +						
    +						videoWaitView
    +					
    +					
    +						73
    +						
    +						
    +						1
    +					
    +					
    +						72
    +						
    +						
    +						2
    +					
    +					
    +						71
    +						
    +						
    +						3
    +					
    +					
    +						69
    +						
    +						
    +						4
    +					
    +					
    +						70
    +						
    +						
    +						5
    +					
    +					
    +						63
    +						
    +						
    +						6
    +					
    +					
    +						68
    +						
    +						
    +						7
    +					
    +					
    +						67
    +						
    +						
    +						8
    +					
    +					
    +						66
    +						
    +						
    +						9
    +					
    +					
    +						62
    +						
    +						
    +						*
    +					
    +					
    +						64
    +						
    +						
    +						0
    +					
    +					
    +						65
    +						
    +						
    +						#
    +					
    +					
    +						87
    +						
    +						
    +							
    +							
    +						
    +						
    +						optionsView
    +					
    +					
    +						88
    +						
    +						
    +						optionsAddButton
    +					
    +					
    +						90
    +						
    +						
    +						optionsTansferButton
    +					
    +					
    +						99
    +						
    +						
    +						background
    +					
    +					
    +						100
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						Landscape View
    +					
    +					
    +						101
    +						
    +						
    +							
    +							
    +						
    +						
    +						optionsView
    +					
    +					
    +						102
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						padView
    +					
    +					
    +						114
    +						
    +						
    +						background
    +					
    +					
    +						115
    +						
    +						
    +						1
    +					
    +					
    +						116
    +						
    +						
    +						2
    +					
    +					
    +						117
    +						
    +						
    +						3
    +					
    +					
    +						118
    +						
    +						
    +						4
    +					
    +					
    +						119
    +						
    +						
    +						5
    +					
    +					
    +						120
    +						
    +						
    +						6
    +					
    +					
    +						121
    +						
    +						
    +						7
    +					
    +					
    +						122
    +						
    +						
    +						8
    +					
    +					
    +						123
    +						
    +						
    +						9
    +					
    +					
    +						124
    +						
    +						
    +						*
    +					
    +					
    +						125
    +						
    +						
    +						0
    +					
    +					
    +						126
    +						
    +						
    +						#
    +					
    +					
    +						127
    +						
    +						
    +						optionsAddButton
    +					
    +					
    +						128
    +						
    +						
    +						optionsTansferButton
    +					
    +					
    +						103
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						buttons
    +					
    +					
    +						106
    +						
    +						
    +						dialerButton
    +					
    +					
    +						110
    +						
    +						
    +						optionsButton
    +					
    +					
    +						113
    +						
    +						
    +						videoButton
    +					
    +					
    +						112
    +						
    +						
    +						microButton
    +					
    +					
    +						111
    +						
    +						
    +						speakerButton
    +					
    +					
    +						109
    +						
    +						
    +						pauseButton
    +					
    +					
    +						108
    +						
    +						
    +						conferenceButton
    +					
    +					
    +						107
    +						
    +						
    +						hangupButton
    +					
    +					
    +						105
    +						
    +						
    +						videoWaitView
    +					
    +					
    +						104
    +						
    +						
    +						mask
    +					
    +					
    +						141
    +						
    +						
    +						background
    +					
    +					
    +						142
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				UICallBar
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UITransparentView
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIHangUpButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIMicroButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UISpeakerButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIMicroButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIVideoButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIVideoButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UITransparentView
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIHangUpButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UISpeakerButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			142
    +		
    +		
    +			
    +				
    +					TPMultiLayoutViewController
    +					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					UICallBar
    +					TPMultiLayoutViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onConferenceClick:
    +							id
    +						
    +						
    +							onOptionsAddClick:
    +							id
    +						
    +						
    +							onOptionsClick:
    +							id
    +						
    +						
    +							onOptionsTransferClick:
    +							id
    +						
    +						
    +							onPadClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIToggleButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIHangUpButton
    +						UIMicroButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIButton
    +						UIToggleButton
    +						UIButton
    +						UIView
    +						UIView
    +						UIPauseButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UISpeakerButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIVideoButton
    +						UIDigitButton
    +					
    +					
    +						
    +							conferenceButton
    +							UIButton
    +						
    +						
    +							dialerButton
    +							UIToggleButton
    +						
    +						
    +							eightButton
    +							UIDigitButton
    +						
    +						
    +							fiveButton
    +							UIDigitButton
    +						
    +						
    +							fourButton
    +							UIDigitButton
    +						
    +						
    +							hangupButton
    +							UIHangUpButton
    +						
    +						
    +							microButton
    +							UIMicroButton
    +						
    +						
    +							nineButton
    +							UIDigitButton
    +						
    +						
    +							oneButton
    +							UIDigitButton
    +						
    +						
    +							optionsAddButton
    +							UIButton
    +						
    +						
    +							optionsButton
    +							UIToggleButton
    +						
    +						
    +							optionsTransferButton
    +							UIButton
    +						
    +						
    +							optionsView
    +							UIView
    +						
    +						
    +							padView
    +							UIView
    +						
    +						
    +							pauseButton
    +							UIPauseButton
    +						
    +						
    +							sevenButton
    +							UIDigitButton
    +						
    +						
    +							sharpButton
    +							UIDigitButton
    +						
    +						
    +							sixButton
    +							UIDigitButton
    +						
    +						
    +							speakerButton
    +							UISpeakerButton
    +						
    +						
    +							starButton
    +							UIDigitButton
    +						
    +						
    +							threeButton
    +							UIDigitButton
    +						
    +						
    +							twoButton
    +							UIDigitButton
    +						
    +						
    +							videoButton
    +							UIVideoButton
    +						
    +						
    +							zeroButton
    +							UIDigitButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICallBar.h
    +					
    +				
    +				
    +					UIDigitButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIDigitButton.h
    +					
    +				
    +				
    +					UIHangUpButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIHangUpButton.h
    +					
    +				
    +				
    +					UILongTouchButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UILongTouchButton.h
    +					
    +				
    +				
    +					UIMicroButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIMicroButton.h
    +					
    +				
    +				
    +					UIPauseButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIPauseButton.h
    +					
    +				
    +				
    +					UISpeakerButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UISpeakerButton.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +				
    +					UITransparentView
    +					UIView
    +					
    +						IBProjectSource
    +						./Classes/UITransparentView.h
    +					
    +				
    +				
    +					UIVideoButton
    +					UIToggleButton
    +					
    +						waitView
    +						UIActivityIndicatorView
    +					
    +					
    +						waitView
    +						
    +							waitView
    +							UIActivityIndicatorView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIVideoButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{209, 136}
    +			{130, 163}
    +			{209, 136}
    +			{130, 163}
    +			{209, 136}
    +			{130, 163}
    +			{530, 526}
    +			{209, 136}
    +			{130, 163}
    +			{209, 136}
    +			{130, 163}
    +			{222, 136}
    +			{180, 163}
    +			{222, 136}
    +			{180, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{155, 137}
    +			{129, 109}
    +			{155, 137}
    +			{129, 109}
    +			{155, 137}
    +			{129, 109}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{155, 137}
    +			{129, 109}
    +			{155, 137}
    +			{129, 109}
    +			{155, 137}
    +			{129, 109}
    +			{209, 136}
    +			{130, 163}
    +			{209, 136}
    +			{130, 163}
    +			{209, 136}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +		
    +		933
    +	
    +
    diff --git a/Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib b/Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib
    new file mode 100644
    index 000000000..8d9e850f1
    --- /dev/null
    +++ b/Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib
    @@ -0,0 +1,2771 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIButton
    +			IBUIActivityIndicatorView
    +			IBUIView
    +			IBUIImageView
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBIPadFramework
    +			
    +			
    +				IBFirstResponder
    +				IBIPadFramework
    +			
    +			
    +				
    +				301
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 680}, {1024, 68}}
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMTkxOTQ1NDc1NQA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						288
    +						
    +							
    +								
    +								274
    +								{281, 260}
    +								
    +								
    +								_NS:9
    +								2
    +								NO
    +								IBIPadFramework
    +								
    +									NSImage
    +									dialer_alt_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 10}, {107, 54}}
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								3
    +								IBIPadFramework
    +								0
    +								0
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									numpad_one_over.png
    +								
    +								
    +									NSImage
    +									numpad_one_default.png
    +								
    +								
    +									Helvetica-Bold
    +									Helvetica
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 10}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								4
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_two_over.png
    +								
    +								
    +									NSImage
    +									numpad_two_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 10}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								5
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_three_over.png
    +								
    +								
    +									NSImage
    +									numpad_three_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 72}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								6
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_four_over.png
    +								
    +								
    +									NSImage
    +									numpad_four_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 72}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								7
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_five_over.png
    +								
    +								
    +									NSImage
    +									numpad_five_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 72}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								8
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_six_over.png
    +								
    +								
    +									NSImage
    +									numpad_six_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 134}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								9
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_seven_over.png
    +								
    +								
    +									NSImage
    +									numpad_seven_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 134}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								10
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_eight_over.png
    +								
    +								
    +									NSImage
    +									numpad_eight_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 134}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								11
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_nine_over.png
    +								
    +								
    +									NSImage
    +									numpad_nine_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 196}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								12
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_star_over.png
    +								
    +								
    +									NSImage
    +									numpad_star_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 196}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								13
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_zero_over.png
    +								
    +								
    +									NSImage
    +									numpad_zero_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 196}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								14
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_sharp_over.png
    +								
    +								
    +									NSImage
    +									numpad_sharp_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{372, 244}, {281, 260}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						1
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								292
    +								{81, 69}
    +								
    +								
    +								_NS:9
    +								NO
    +								16
    +								
    +									Add call
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_transfer_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_transfer_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_transfer_default_landscape~ipad.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 65}, {81, 69}}
    +								
    +								_NS:9
    +								NO
    +								17
    +								
    +									Add call
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_add_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_add_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_add_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{239, 552}, {81, 133}}
    +						
    +						
    +						_NS:9
    +						
    +						15
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								290
    +								{{0, 85}, {1024, 2000}}
    +								
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBIPadFramework
    +							
    +							
    +								
    +								292
    +								{80, 85}
    +								
    +								
    +								_NS:9
    +								NO
    +								19
    +								
    +									Video
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									video_off_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									video_off_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									video_on_default_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									video_off_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{20, 20}, {37, 37}}
    +								
    +								
    +								_NS:9
    +								NO
    +								20
    +								IBIPadFramework
    +								0
    +							
    +							
    +								
    +								292
    +								{{80, 0}, {80, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								21
    +								
    +									Micro
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									micro_off_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									micro_off_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									micro_on_default_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									micro_off_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{160, 0}, {80, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								22
    +								
    +									Speaker
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									speaker_off_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_off_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_on_default_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_off_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{240, 0}, {80, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								23
    +								
    +									Add call
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_selected_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{701, 0}, {87, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								24
    +								
    +									Pause
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									pause_off_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									pause_on_default_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									pause_off_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483384
    +								{{701, 0}, {87, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								25
    +								
    +									Start Conference
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									conference_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									conference_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{875, 0}, {149, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								26
    +								
    +									Hangup
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									hangup_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									hangup_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{788, 0}, {87, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								27
    +								
    +									Back
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									dialer_alt_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									dialer_alt_back_default_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									dialer_alt_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 663}, {1024, 85}}
    +						
    +						
    +						_NS:9
    +						
    +						18
    +						IBIPadFramework
    +					
    +				
    +				{1024, 748}
    +				
    +				_NS:9
    +				
    +				NO
    +				
    +					3
    +					3
    +				
    +				IBIPadFramework
    +			
    +			
    +				
    +				301
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 936}, {768, 68}}
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMTkxOTQ1NDc1NQA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						288
    +						
    +							
    +								
    +								274
    +								{281, 260}
    +								
    +								
    +								_NS:9
    +								2
    +								NO
    +								IBIPadFramework
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 10}, {107, 54}}
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								3
    +								
    +									1
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 10}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								4
    +								
    +									2
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 10}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								5
    +								
    +									3
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 72}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								6
    +								
    +									4
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 72}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								7
    +								
    +									5
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 72}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								8
    +								
    +									6
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 134}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								9
    +								
    +									7
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 134}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								10
    +								
    +									8
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 134}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								11
    +								
    +									9
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 196}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								12
    +								
    +									Star
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 196}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								13
    +								
    +									0
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 196}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								14
    +								
    +									Sharp
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +						
    +						{{244, 372}, {281, 260}}
    +						
    +						
    +						_NS:9
    +						
    +						1
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								292
    +								{81, 69}
    +								
    +								
    +								_NS:9
    +								NO
    +								16
    +								
    +									Transfer call
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_transfer_over~ipad.png
    +								
    +								
    +									NSImage
    +									options_transfer_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									options_transfer_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 64}, {81, 69}}
    +								
    +								_NS:9
    +								NO
    +								17
    +								
    +									Add call
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_add_over~ipad.png
    +								
    +								
    +									NSImage
    +									options_add_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									options_add_default~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{239, 809}, {81, 133}}
    +						
    +						
    +						_NS:9
    +						
    +						15
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								290
    +								{{0, 85}, {768, 2000}}
    +								
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBIPadFramework
    +							
    +							
    +								
    +								292
    +								{80, 85}
    +								
    +								
    +								_NS:9
    +								NO
    +								19
    +								
    +									Video
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									video_off_over~ipad.png
    +								
    +								
    +									NSImage
    +									video_off_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									video_on_default~ipad.png
    +								
    +								
    +									NSImage
    +									video_off_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{20, 20}, {37, 37}}
    +								
    +								
    +								_NS:9
    +								NO
    +								20
    +								IBIPadFramework
    +								0
    +							
    +							
    +								
    +								292
    +								{{80, 0}, {80, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								21
    +								
    +									Micro
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									micro_off_over~ipad.png
    +								
    +								
    +									NSImage
    +									micro_off_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									micro_on_default~ipad.png
    +								
    +								
    +									NSImage
    +									micro_off_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{160, 0}, {80, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								22
    +								
    +									Speaker
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									speaker_off_over~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_off_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_on_default~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_off_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{240, 0}, {80, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								23
    +								
    +									Options
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_over~ipad.png
    +								
    +								
    +									NSImage
    +									options_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									options_selected~ipad.png
    +								
    +								
    +									NSImage
    +									options_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{445, 0}, {87, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								24
    +								
    +									Pause
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									pause_off_over~ipad.png
    +								
    +								
    +									NSImage
    +									pause_on_default~ipad.png
    +								
    +								
    +									NSImage
    +									pause_off_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483384
    +								{{445, 0}, {87, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								25
    +								
    +									Start Conference
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									conference_over~ipad.png
    +								
    +								
    +									NSImage
    +									conference_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{619, 0}, {149, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								26
    +								
    +									Hangup
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									hangup_over~ipad.png
    +								
    +								
    +									NSImage
    +									hangup_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{532, 0}, {87, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								27
    +								
    +									Back
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									dialer_alt_over~ipad.png
    +								
    +								
    +									NSImage
    +									dialer_alt_back_default~ipad.png
    +								
    +								
    +									NSImage
    +									dialer_alt_default~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 919}, {768, 85}}
    +						
    +						
    +						_NS:9
    +						
    +						18
    +						IBIPadFramework
    +					
    +				
    +				{768, 1004}
    +				
    +				_NS:9
    +				
    +				NO
    +				IBIPadFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						conferenceButton
    +						
    +						
    +					
    +					64
    +				
    +				
    +					
    +						dialerButton
    +						
    +						
    +					
    +					65
    +				
    +				
    +					
    +						eightButton
    +						
    +						
    +					
    +					66
    +				
    +				
    +					
    +						fiveButton
    +						
    +						
    +					
    +					67
    +				
    +				
    +					
    +						fourButton
    +						
    +						
    +					
    +					68
    +				
    +				
    +					
    +						hangupButton
    +						
    +						
    +					
    +					69
    +				
    +				
    +					
    +						landscapeView
    +						
    +						
    +					
    +					70
    +				
    +				
    +					
    +						microButton
    +						
    +						
    +					
    +					71
    +				
    +				
    +					
    +						nineButton
    +						
    +						
    +					
    +					72
    +				
    +				
    +					
    +						oneButton
    +						
    +						
    +					
    +					73
    +				
    +				
    +					
    +						optionsAddButton
    +						
    +						
    +					
    +					74
    +				
    +				
    +					
    +						optionsButton
    +						
    +						
    +					
    +					75
    +				
    +				
    +					
    +						optionsTransferButton
    +						
    +						
    +					
    +					76
    +				
    +				
    +					
    +						optionsView
    +						
    +						
    +					
    +					77
    +				
    +				
    +					
    +						padView
    +						
    +						
    +					
    +					78
    +				
    +				
    +					
    +						pauseButton
    +						
    +						
    +					
    +					79
    +				
    +				
    +					
    +						portraitView
    +						
    +						
    +					
    +					80
    +				
    +				
    +					
    +						sevenButton
    +						
    +						
    +					
    +					81
    +				
    +				
    +					
    +						sharpButton
    +						
    +						
    +					
    +					82
    +				
    +				
    +					
    +						sixButton
    +						
    +						
    +					
    +					83
    +				
    +				
    +					
    +						speakerButton
    +						
    +						
    +					
    +					84
    +				
    +				
    +					
    +						starButton
    +						
    +						
    +					
    +					85
    +				
    +				
    +					
    +						threeButton
    +						
    +						
    +					
    +					86
    +				
    +				
    +					
    +						twoButton
    +						
    +						
    +					
    +					87
    +				
    +				
    +					
    +						videoButton
    +						
    +						
    +					
    +					88
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					89
    +				
    +				
    +					
    +						zeroButton
    +						
    +						
    +					
    +					90
    +				
    +				
    +					
    +						onPadClick:
    +						
    +						
    +						7
    +					
    +					92
    +				
    +				
    +					
    +						onConferenceClick:
    +						
    +						
    +						7
    +					
    +					93
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					91
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					62
    +				
    +				
    +					
    +						onOptionsAddClick:
    +						
    +						
    +						7
    +					
    +					94
    +				
    +				
    +					
    +						onOptionsTransferClick:
    +						
    +						
    +						7
    +					
    +					95
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					63
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						2
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						Landscape View
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						Portrait View
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +						
    +						
    +						optionsView
    +					
    +					
    +						5
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						padView
    +					
    +					
    +						6
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						buttons
    +					
    +					
    +						7
    +						
    +						
    +						mask
    +					
    +					
    +						8
    +						
    +						
    +						background
    +					
    +					
    +						9
    +						
    +						
    +						videoWaitView
    +					
    +					
    +						10
    +						
    +						
    +						dialerButton
    +					
    +					
    +						11
    +						
    +						
    +						hangupButton
    +					
    +					
    +						12
    +						
    +						
    +						conferenceButton
    +					
    +					
    +						13
    +						
    +						
    +						pauseButton
    +					
    +					
    +						14
    +						
    +						
    +						optionsButton
    +					
    +					
    +						15
    +						
    +						
    +						speakerButton
    +					
    +					
    +						16
    +						
    +						
    +						microButton
    +					
    +					
    +						17
    +						
    +						
    +						videoButton
    +					
    +					
    +						18
    +						
    +						
    +						background
    +					
    +					
    +						19
    +						
    +						
    +						1
    +					
    +					
    +						20
    +						
    +						
    +						2
    +					
    +					
    +						21
    +						
    +						
    +						3
    +					
    +					
    +						22
    +						
    +						
    +						4
    +					
    +					
    +						23
    +						
    +						
    +						5
    +					
    +					
    +						24
    +						
    +						
    +						6
    +					
    +					
    +						25
    +						
    +						
    +						7
    +					
    +					
    +						26
    +						
    +						
    +						8
    +					
    +					
    +						27
    +						
    +						
    +						9
    +					
    +					
    +						28
    +						
    +						
    +						*
    +					
    +					
    +						29
    +						
    +						
    +						0
    +					
    +					
    +						30
    +						
    +						
    +						#
    +					
    +					
    +						31
    +						
    +						
    +						optionsAddButton
    +					
    +					
    +						32
    +						
    +						
    +						optionsTansferButton
    +					
    +					
    +						33
    +						
    +						
    +						mask
    +					
    +					
    +						34
    +						
    +						
    +							
    +							
    +						
    +						
    +						optionsView
    +					
    +					
    +						35
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						padView
    +					
    +					
    +						36
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						buttons
    +					
    +					
    +						37
    +						
    +						
    +						background
    +					
    +					
    +						38
    +						
    +						
    +						dialerButton
    +					
    +					
    +						39
    +						
    +						
    +						optionsButton
    +					
    +					
    +						40
    +						
    +						
    +						videoButton
    +					
    +					
    +						41
    +						
    +						
    +						microButton
    +					
    +					
    +						42
    +						
    +						
    +						speakerButton
    +					
    +					
    +						43
    +						
    +						
    +						pauseButton
    +					
    +					
    +						44
    +						
    +						
    +						conferenceButton
    +					
    +					
    +						45
    +						
    +						
    +						hangupButton
    +					
    +					
    +						46
    +						
    +						
    +						videoWaitView
    +					
    +					
    +						47
    +						
    +						
    +						#
    +					
    +					
    +						48
    +						
    +						
    +						0
    +					
    +					
    +						49
    +						
    +						
    +						*
    +					
    +					
    +						50
    +						
    +						
    +						9
    +					
    +					
    +						51
    +						
    +						
    +						8
    +					
    +					
    +						52
    +						
    +						
    +						7
    +					
    +					
    +						53
    +						
    +						
    +						6
    +					
    +					
    +						54
    +						
    +						
    +						5
    +					
    +					
    +						55
    +						
    +						
    +						4
    +					
    +					
    +						56
    +						
    +						
    +						3
    +					
    +					
    +						57
    +						
    +						
    +						2
    +					
    +					
    +						58
    +						
    +						
    +						1
    +					
    +					
    +						59
    +						
    +						
    +						background
    +					
    +					
    +						60
    +						
    +						
    +						optionsAddButton
    +					
    +					
    +						61
    +						
    +						
    +						optionsTansferButton
    +					
    +				
    +			
    +			
    +				UICallBar
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIHangUpButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UISpeakerButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIMicroButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIVideoButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UITransparentView
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UITransparentView
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIVideoButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIMicroButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UISpeakerButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIHangUpButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			95
    +		
    +		
    +			
    +				
    +					TPMultiLayoutViewController
    +					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					UICallBar
    +					TPMultiLayoutViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onConferenceClick:
    +							id
    +						
    +						
    +							onOptionsAddClick:
    +							id
    +						
    +						
    +							onOptionsClick:
    +							id
    +						
    +						
    +							onOptionsTransferClick:
    +							id
    +						
    +						
    +							onPadClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIToggleButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIHangUpButton
    +						UIMicroButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIButton
    +						UIToggleButton
    +						UIButton
    +						UIView
    +						UIView
    +						UIPauseButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UISpeakerButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIVideoButton
    +						UIDigitButton
    +					
    +					
    +						
    +							conferenceButton
    +							UIButton
    +						
    +						
    +							dialerButton
    +							UIToggleButton
    +						
    +						
    +							eightButton
    +							UIDigitButton
    +						
    +						
    +							fiveButton
    +							UIDigitButton
    +						
    +						
    +							fourButton
    +							UIDigitButton
    +						
    +						
    +							hangupButton
    +							UIHangUpButton
    +						
    +						
    +							microButton
    +							UIMicroButton
    +						
    +						
    +							nineButton
    +							UIDigitButton
    +						
    +						
    +							oneButton
    +							UIDigitButton
    +						
    +						
    +							optionsAddButton
    +							UIButton
    +						
    +						
    +							optionsButton
    +							UIToggleButton
    +						
    +						
    +							optionsTransferButton
    +							UIButton
    +						
    +						
    +							optionsView
    +							UIView
    +						
    +						
    +							padView
    +							UIView
    +						
    +						
    +							pauseButton
    +							UIPauseButton
    +						
    +						
    +							sevenButton
    +							UIDigitButton
    +						
    +						
    +							sharpButton
    +							UIDigitButton
    +						
    +						
    +							sixButton
    +							UIDigitButton
    +						
    +						
    +							speakerButton
    +							UISpeakerButton
    +						
    +						
    +							starButton
    +							UIDigitButton
    +						
    +						
    +							threeButton
    +							UIDigitButton
    +						
    +						
    +							twoButton
    +							UIDigitButton
    +						
    +						
    +							videoButton
    +							UIVideoButton
    +						
    +						
    +							zeroButton
    +							UIDigitButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICallBar.h
    +					
    +				
    +				
    +					UIDigitButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIDigitButton.h
    +					
    +				
    +				
    +					UIHangUpButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIHangUpButton.h
    +					
    +				
    +				
    +					UILongTouchButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UILongTouchButton.h
    +					
    +				
    +				
    +					UIMicroButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIMicroButton.h
    +					
    +				
    +				
    +					UIPauseButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIPauseButton.h
    +					
    +				
    +				
    +					UISpeakerButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UISpeakerButton.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +				
    +					UITransparentView
    +					UIView
    +					
    +						IBProjectSource
    +						./Classes/UITransparentView.h
    +					
    +				
    +				
    +					UIVideoButton
    +					UIToggleButton
    +					
    +						waitView
    +						UIActivityIndicatorView
    +					
    +					
    +						waitView
    +						
    +							waitView
    +							UIActivityIndicatorView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIVideoButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBIPadFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{530, 526}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{297, 170}
    +			{297, 170}
    +			{297, 170}
    +			{297, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +		
    +		933
    +	
    +
    diff --git a/Classes/LinphoneUI/fr.lproj/UICallCell.xib b/Classes/LinphoneUI/fr.lproj/UICallCell.xib
    new file mode 100644
    index 000000000..addf5cec1
    --- /dev/null
    +++ b/Classes/LinphoneUI/fr.lproj/UICallCell.xib
    @@ -0,0 +1,5130 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +			IBUILabel
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				290
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{{0, 63}, {320, 250}}
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MCAwAA
    +								
    +								NO
    +								
    +									
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MQA
    +								
    +								
    +									1
    +									MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +								
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								293
    +								{{0, 48}, {320, 262}}
    +								
    +								
    +								_NS:9
    +								
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_shadow.png
    +								
    +							
    +							
    +								
    +								293
    +								{{80, 65}, {160, 170}}
    +								
    +								
    +								_NS:9
    +								
    +								NO
    +								
    +									Contact's avatar
    +									
    +									
    +								
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_unknown.png
    +								
    +							
    +						
    +						{320, 300}
    +						
    +						
    +						_NS:9
    +						
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 63}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									cell_call_first.png
    +								
    +							
    +							
    +								
    +								290
    +								{320, 63}
    +								
    +								
    +								_NS:9
    +								0.0
    +								NO
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								290
    +								{{10, 0}, {206, 51}}
    +								
    +								
    +								_NS:9
    +								NO
    +								NO
    +								7
    +								NO
    +								
    +									Contact's name
    +									
    +								
    +								IBCocoaTouchFramework
    +								0102030405
    +								
    +									10
    +									
    +										549453824
    +										{256, 256}
    +										
    +											
    +												
    +												
    +													
    +														TU0AKgAEAAh1eIH/cHJ5/3Bzff9vcXX/bnB3/3Byef9vcXX/bG51/2xudf9ucHf/cHN9/2dqdP9ucXv/
    +cHJ5/3Bzff9qbHP/b3F1/3N1fP9sbnX/am13/2ptd/9sbnX/am13/3l7gf91d33/bG95/2xudf9sb3n/
    +bG95/2dqdP9qbXf/c3V8/3Bzff93eoP/bG51/3Bzff9sbnX/dXd9/2dqdP9qbHP/bG51/2psc/9sb3n/
    +am13/2ptd/9sb3n/bG51/3V3ff97fYP/YmVu/25xe/9sb3n/c3Z//2psc/9zdXz/cHN9/2dqcf9qbHP/
    +YmVu/2dqdP9nanH/am13/2xvef91eIH/Z2p0/25xe/91d33/bG51/25wd/92eHz/dXd9/29xdf9ucHf/
    +eHl9/2xudf9ucHf/bG95/3Bzff9sb3n/bnF7/3l7gf9zdn//c3Z//3N2f/91eIH/c3V8/3Byef9nanT/
    +bnB3/3Byef91d33/dHZ8/2psc/9sbnX/Z2p0/3N1fP9qbXf/cXN6/2psdf9wcnv/dnd9/25xe/9ucHf/
    +bnB3/2ptd/92eH//a254/3Fzev9sb3n/cHJ5/25wd/9ucHf/cHN9/25wd/9wcnn/dnh8/2xudf93eX//
    +dXd9/2dqdP9ucXv/dXd9/3N2f/9zdXz/Z2px/2xudf9ucXv/am13/3Bzff9zdXz/cHN9/2psc/9qbXf/
    +bG51/2Jlbv9qbXf/aGp0/2hqcP9rbnX/cnV//29yfP9ucXv/bnF7/25xe/9zdn//bXB1/2xvef9qbXb/
    +Zmly/2Jlbv9kZ3H/Zmhu/2Rncf9kZ3H/Zmlz/2Zpc/9kZ3H/bnB3/2Jlbv9nanT/ZGdx/2Zobv9zdXz/
    +ZGdx/2xvef9maXP/foCG/2xvef9ucXv/bG95/25wd/9wc33/b3F1/3l8hv91eIH/cHN9/3N1fP9sb3n/
    +d3qD/25wd/9zdn//cHJ5/3Bzff9wcnn/cHN9/3Bzff9ucXv/d3l//2ptd/9ucXv/c3Z//3N2f/9wcnn/
    +bnF7/3N2f/9ucHf/cHJ5/3Bzff9sb3n/cHJ5/25xe/9wc33/bnF7/3Byef9zdXz/bnB3/25xe/9zdXz/
    +d3l//3N2f/9sb3n/bnB3/3Bzff9sb3n/bnF7/25wd/9wcnn/cHJ5/3Byef9sbnX/c3V8/2psc/9zdXz/
    +dnh8/3Byef9kZ3H/am13/25xe/9sb3n/bnF7/25xe/9zdn//Z2p0/2xudf95e4H/Z2p0/2xvef9ucXv/
    +bG51/2psc/9ucXv/cHJ5/2psc/9qbXf/Z2px/2ptd/9qbHP/cHN9/2ptd/9sbnX/bG51/3V3ff9wcnn/
    +c3V8/3Byef9wc33/d3l//29xdf9zdXz/bnB3/2ptd/9qbXf/Z2px/2Zpc/9kZ3H/am13/2xvef9nanH/
    +cHJ5/29xdf9wcnn/Z2px/2xudf9zdXz/b3F1/25wd/9ucHf/bnB3/25wd/9+gIb/eHl9/3N1fP9wcnn/
    +cHJ5/3Byef9qbHP/bG51/3Z4fP9wcnn/dXiB/2xudf9ucXv/bG51/3Byef9nanH/ZGdx/2Zpc/9nanH/
    +Z2px/2Zobv9iZW7/Zmhu/2Zobv9qbXf/c3Z//1lcZf9maXP/Z2p0/3Byef9kZ3H/bG95/2xvef9qbHP/
    +am13/2Zpc/9qbXf/bG51/2xvef9wc33/dXd9/2dqdP9sb3n/dXd9/2dqdP9ucHf/c3V8/3V3ff9qbXf/
    +bnF7/3d5f/9ucHf/bG51/2xudf9wc33/bG51/2xudf91d33/bnB3/3Byef9wcnn/cHJ5/29xdf9ucHf/
    +Z2p0/3Byef9wc33/eXuB/3d5f/9sb3n/bnF7/2psc/9zdXz/b3F5/29yev9qbHX/bnB4/3d5f/9wcnn/
    +bnB3/2xudf9ucHf/dHZ7/25wd/9ucXn/bW92/3Byef9ucHf/bG51/3N1fP9ucXv/cHN9/3V3ff9qbHP/
    +dnh8/3V3ff9nanH/bnB3/3V3ff9ucHf/cHJ5/2Zpc/9qbXf/bG95/2xudf9sb3n/dXd9/3Z4fP9vcXX/
    +bnF7/25wd/9nanH/c3Z//3Bzff9wcnn/bnB3/3R2ff9ucXr/bnF7/3Bzff9sb3n/dXd9/25xev90dnz/
    +dXiA/3V4gP9wcnn/c3Z//3Bzff9ucXv/cHN9/3N2f/9zdn//bG95/3d6g/9sb3n/c3Z//3Bzff9ucHf/
    +d3l//2dqcf9qbXf/Z2p0/3d6g/9sbnX/am13/2Zpc/9nanT/am13/2Zobv9zdXz/bnB3/2dqdP9kZ3H/
    +ZGZs/3Byef9gY2z/Z2px/2Rncf9maG7/YGNs/2Zobv9kZ3H/Zmhu/2ptd/9gY2z/ZGdx/2Rncf9nanT/
    +ZGdx/2psc/9maXP/ZGdx/2Zobv9maG7/YmVu/2Zpc/9qbHP/am13/2psc/9ucXv/cHN9/2xudf9nanT/
    +bnF7/3V3ff9wcnn/bnB3/29xdf9zdXz/bG95/3Bzff9sb3n/c3Z//3N2f/91eIH/bnF7/3V4gf9ucXv/
    +dXiB/3l7gf9zdn//am13/3Byef9zdn//cHN9/3N2f/91eIH/e36H/3Bzff9wc33/foCG/3V4gf93eoP/
    +eXuB/3N2f/9ucXv/dXiB/3V3ff9vcXX/c3V8/25wd/91d33/c3V8/3d5f/9wc33/cHJ5/25wd/93eX//
    +c3Z//3Bzff9ucXv/cHN9/3V3ff9vcXX/c3V8/25wd/9vcXX/bnB3/2xvef9nanT/Zmhu/2ptd/9sb3n/
    +Zmlz/3Byef9tb3P/bnF7/2xudf9ucHf/dXd9/2xvef9sb3n/bG95/25xe/9ucXv/e36H/3l7gf9zdn//
    +c3Z//3V4gf93eoP/c3Z//3N2f/9+gYr/eXyG/4GDiv9wc33/d3qD/3N1fP93eX//cHJ5/3Bzff9wc33/
    +bnF7/25xe/9ucHf/b3F1/3Byef9ucXv/eXuB/36Ahv9nanT/c3Z//3Byef93eX//bW9z/3Z4fP91d33/
    +bnB3/25xe/9nanT/bG95/25wd/9ucXv/dXiB/3l8hv9ucHf/c3Z//3V4gf9ucHf/dXiB/3N2f/91d33/
    +am13/29xdf91d33/bnB3/2xvef9ucXv/d3qD/25xe/9wcnn/c3Z//25wd/9ucHf/cHJ5/3V3ff9vcXX/
    +cHJ5/2xudf9vcXX/bG51/3Byef9ucXj/aGty/21vc/9nanT/cHN9/25wd/9vcnr/a212/21wev91d33/
    +am13/2xudf9maXP/am13/3R2e/9tb3b/bnF6/2xudf9wcnn/am13/2xudf9ucXv/bG95/25xe/9wc33/
    +ZGdx/3Byef9ucHf/YmVu/2psc/9wc33/bnF7/2ptd/9maG7/bW9z/25wd/9sbnX/c3V8/3d5f/91d33/
    +b3F1/25xe/9ucXv/Z2p0/3V3ff9wc33/bnF7/21vdv9zdnz/cHJ5/25weP9zdXz/bnF7/3l7gf9xc3r/
    +d3mA/3d5f/9zdX3/b3F1/3N1fP9sbnX/bG51/25wd/9sbnX/cHJ5/2psc/92eHz/amxz/3Bzff9ucHf/
    +bW9z/3h5ff9nanH/bG51/2Jlbv91eIH/amxz/2Zpc/9iZW7/YmVu/2dqdP9maG7/c3Z//3N1fP9qbXf/
    +Z2p0/2dqdP91eIH/ZGdx/2xudf9nanT/am13/2ptd/9ucXv/bnF7/21vc/91eIH/Zmlz/25wd/9wcnn/
    +bnB3/25wd/9vcXX/cHJ5/21vc/9sbnX/bG95/2dqdP9sbnX/bG51/2xvef9sbnX/bnF7/25xe/9nanT/
    +bnF7/3Bzff91d33/cHN9/2ptd/9qbHP/bnF7/2Zpc/9qbXf/YmVu/2ptd/9qbHP/bG95/2Rncf9ucXv/
    +ZGdx/25xe/9zdXz/bG95/2Rncf9tb3P/bG95/25wd/91d33/dXiB/3t9g/9ucHf/c3V8/3t9g/9ucXv/
    +dXiB/3d5f/9wcnn/bnF7/3N2f/95e4H/cHN9/3V4gf9ucXv/d3qD/3V4gf93eX//c3Z//3N1fP9zdXz/
    +d3l//3Bzff9ucXv/bnF7/3N1fP9zdXz/bG51/2xvef9nanH/Z2px/2dqdP9qbHP/YmVu/2BjbP9sbnX/
    +bG51/2Rncf9sb3n/bG51/2ptd/9maXP/Z2px/25xe/9qbHP/Zmlz/2Zpc/9qbHP/Z2p0/3V4gf91d33/
    +cHN9/25wd/9sb3n/am13/2Zpc/9sb3n/dXd9/3Bzff91eIH/bW9z/25xe/9sbnX/c3V8/21vc/9sbnX/
    +cHN9/2ptd/9qbXf/bnF7/2ptd/9sbnX/bG51/3Byef93eX//ZGdx/2xvef9ucXv/dXd9/2xudf92eHz/
    +dXd9/25wd/9sbnX/amxz/2xvef9vcXX/bnB3/3Bzff93eoP/bG95/3Bzff9zdn//bG95/3N2f/9wc33/
    +dXiB/25xe/9zdXz/e32D/3Bzff9ucHf/bnF7/3V3ff9vcXX/b3F1/3N1fP9tb3P/bG51/3Byef9zdXz/
    +bW9z/3Byef9nanH/amxz/2psc/9ucHf/bnB3/2psc/9sbnX/amxz/3V3fP9ucHj/bW93/2psdf9vcnr/
    +dXd8/25wd/9qbXf/Z2p0/25xe/9zdoD/bXB6/3J0fP9wcnf/c3V8/29xdf9ucHf/bnF7/3Byef9zdXz/
    +cHN9/2ptd/91d33/eHl9/2psc/9zdXz/dnh8/3N1fP9ucXv/Zmhu/29xdf9ucHf/bnB3/25wd/92eHz/
    +cHJ5/2xudf9wcnn/bG95/2Rncf9wc33/bnF7/2ttdP9maXP/bnF5/2lsdf9laHL/am13/2ptd/9zdXz/
    +bm92/3R3fv91d33/bnB3/21vc/9zdXz/bW9z/3Byef9ucHf/bnB3/3N1fP9nanH/d3l//25wd/97fYP/
    +c3Z//3Bzff97fYP/bnF7/21vc/9maG7/eXuB/2ptd/9qbXf/ZGdx/2Zobv9nanT/Z2px/3N2f/9wcnn/
    +am13/2ptd/9qbXf/d3qD/2Rncf9qbXf/Z2p0/2xvef9qbXf/Z2p0/2ptd/9maXP/d3l//2Rncf9qbXf/
    +bnB3/2ptd/9qbXf/bG51/25xe/9tb3P/bnB3/25wd/9qbHP/bG51/2xudf9qbXf/bG51/3N1fP9zdXz/
    +bG51/3N1fP91d33/dXd9/25xe/9sbnX/bW9z/3Bzff9maXP/bG51/2Rncf9nanT/Z2px/2ptd/9nanT/
    +bnF7/2dqdP9wc33/cHJ5/2psc/9dYGr/bG51/2ptd/9sb3n/c3V8/2ptd/91eIH/bG51/2ptd/9zdn//
    +am13/25xe/9sb3n/Z2p0/2psc/9nanT/bG95/2xudf9ucXv/amxz/2xvef9sb3n/cHN9/2dqcf9maXP/
    +Zmlz/25xe/9sb3n/am13/2ptd/9nanT/d3l//25xe/9zdn//bnB3/25xe/9wc33/cHN9/25xe/9qbXf/
    +cHJ5/3Bzff9sb3n/cHN9/25wd/9wcnn/bnB3/29xdf94eX3/cHN9/25wd/9wc33/bnB3/25xe/97fYP/
    +dXiB/3V3ff9sb3n/c3V8/3Byef9sbnX/c3V8/3V3ff9ucXv/c3V8/2psc/9ucXv/am13/3N1fP9sbnX/
    +bG51/3V3ff9ucHf/cHJ5/3Byef9sb3n/bnB3/25wd/92eHz/gIKG/25wd/91d33/c3V8/3d5f/9ucHf/
    +dnh8/3Z4fP9ucHf/bG51/2xudf9sbnX/bG51/2ptd/9sb3n/dXiB/2Zpc/9sb3n/Zmlz/2Jlbv9qbXf/
    +Z2p0/2dqdP9iZW7/YGNs/2xvef9kZ3H/YGNs/2Zpc/9kZ3H/Zmhu/2Jlbv9qbXf/ZGdx/2Zpc/9qbXf/
    +bnF7/2xudf9sb3n/Zmlz/2ptd/9sbnX/am13/21wef9laHH/am13/2dqdP9zdXz/bW92/25weP9rbnj/
    +b3F6/3N2fv9ucXX/bG51/2dqcf9sb3n/b3J8/2xud/9ucXr/bW9z/25xe/9ucHf/bnB3/3Byef9ucHf/
    +dXd9/3N1fP9sbnX/cHJ5/3V3ff9kZ3H/am13/3N1fP9wcnn/bG95/2Jlbv9nanT/am13/2ptd/9qbXf/
    +d3l//25xe/9qbXf/bnF7/2ptd/9iZW7/am13/2ptd/9nanL/Z2ly/29xef9ucHf/amxz/3N1fP9wcnn/
    +cHN9/3Byef9ydX7/dXd9/29xdv9rbnj/cHJ5/25wd/9wc33/bnB3/25wd/9zdXz/amxz/3d5f/9wcnn/
    +d3l//29xdf9wcnn/eXuB/2xvef9vcXX/Z2px/3t9g/9sb3n/cHN9/2xvef9ucHf/cHJ5/25xe/9+f4P/
    +dXd9/3Byef9qbXf/bG51/35/g/9qbHP/cHJ5/2xvef91d33/bnB3/25xe/9zdn//bG95/3l7gf9maG7/
    +bnB3/2xvef9qbXf/am13/2psc/9qbXf/bG51/2psc/9sbnX/Zmlz/2Zpc/9nanH/Z2px/2Rncf9qbXf/
    +Zmlz/2Jlbv9nanT/bG95/2xvef9kZ3H/Zmhu/2Jlbv9nanT/YGNs/2Rncf9dYGr/ZGdx/2Rncf9qbXf/
    +ZGdx/2xvef9iZW7/Z2p0/2ptd/9maG7/XWBq/2psc/9nanT/am13/3N1fP9ucXv/eXyG/2ptd/9nanT/
    +dXd9/25wd/9zdXz/cHJ5/3Byef9vcXX/bnF7/3Bzff9wcnn/eXuB/3N1fP91eIH/dXiB/3l8hv9zdXz/
    +cHJ5/25xe/95e4H/d3qD/3N2f/9zdn//cHN9/3l7gf9zdXz/bnF7/25wd/9wc33/cHN9/3N2f/9sb3n/
    +bG95/3Byef9wc33/bG95/25xe/9ucXv/cHJ5/25wd/9ucHf/eXuB/3N2f/9ucHf/bG95/25wd/9wc33/
    +d3qD/3d5f/91d33/bG51/3Byef9sbnX/amxz/3N1fP94eX3/dXd9/3V4gf9ucHf/cHJ5/3Byef92eHz/
    +bG95/3Bzff93eoP/c3Z//3N2f/9zdXz/bnB3/25wd/9zdXz/eHl9/3+Bh/9ucHf/dnh8/3Byef93eX//
    +bnB3/3d6g/95e4H/bnB3/3Byef9sbnX/bnB3/2psc/9qbXf/am13/3l8hv9maXP/bnF7/2psc/9kZ3H/
    +bnF7/2xvef9ucXv/amxz/2ptd/91d33/bG51/2psc/9wc33/cHN9/2xudf9maXP/cHN9/2dqcf9nanT/
    +amxz/2dqdP9sbnX/am13/2Zpc/9sb3n/bG51/2xvef9sbnj/ZWhy/2dqdP9nanH/bnF7/2ttdf9rbnb/
    +a252/29xeP90dnz/am13/2ptd/9nanH/cHJ5/3N1fP9tcHj/bnF6/2dqdP9qbHP/Zmhu/2psc/9nanT/
    +amxz/2dqdP9qbXf/YGNs/2dqdP91d33/YmVu/2xudf9sb3n/am13/2xudf9iZW7/am13/2xvef9ucXv/
    +bG51/3d5f/9ucXv/am13/3Byef9ucHf/ZGdx/25xe/9sb3n/am13/2lsdP9wcnv/b3J7/21vd/9zdXz/
    +bnB3/3Bzff9rbXT/a254/25xe/9rbXX/bW9z/25wd/9tb3P/b3F1/2xvef9wcnn/c3V8/2ptd/93eX//
    +bnB3/3V4gf9ucXv/cHJ5/3d6g/9qbXf/bG51/2Jlbv91eIH/am13/25xe/9maXP/amxz/2ptd/9qbXf/
    +e32D/3N1fP9qbXf/bG51/2psc/91eIH/YGNs/2Zpc/9kZ3H/Z2p0/2Zpc/9nanH/bG95/2Rncf9zdXz/
    +YGNs/2Zpc/9nanT/amxz/2Zpc/9qbHP/bG95/2xudf9qbHP/bG51/2Zpc/9nanT/amxz/2ptd/9maXP/
    +cHN9/25xe/9maXP/am13/3Bzff91d33/bG95/2xvef9tb3P/dXd9/25wd/9ucHf/Zmlz/25wd/9tb3P/
    +c3V8/21vc/92eHz/bnB3/3h5ff94eX3/bG51/2dqcf9sb3n/bnF7/25xe/9zdXz/cHJ5/36Ahv9wc33/
    +c3V8/3l7gf9zdXz/bnF7/25xe/9sbnX/bG51/3N1fP9zdXz/b3F1/3N1fP9ucHf/c3V8/3Byef91d33/
    +b3F1/2xudf9sb3n/dnh8/3Z4fP9zdXz/cHN9/3Bzff94eX3/b3F1/3Bzff9qbHP/bnB3/2xvef9wc33/
    +ZGdx/2dqdP9nanT/am13/2ptd/9ucHf/cHJ5/3Byef9sbnX/bG51/3V3ff92eHz/amxz/25xe/9ucHf/
    +cHN9/3d5f/93eX//c3V8/21vc/9zdXz/bW9z/2xudf9zdn//d3qD/3V4gf95e4H/bnF7/3N2f/91eIH/
    +e32D/3Byef91eIH/eXuB/3d6g/93eoP/d3qD/3Bzff9wc33/bnF7/3V4gf+Bg4r/bG95/3V3ff9wc33/
    +eXuB/25xe/97fof/eXuB/3N1fP9zdn//bG95/3V4gf9wcnn/d3qD/3V4gf9/gYf/cHJ5/3d6g/9wc33/
    +bG95/3V4gf9zdn//dXiB/3N1fP9zdXz/eXyG/3V4gf9zdn//e32D/3l7gf9zdn//c3V8/3d6g/9ucHf/
    +bnF7/2xvef9wc33/bG95/25xe/9qbXf/cHJ5/25wd/9wcnn/cnR6/21vdv9sb3n/bnB3/3Bzff9tcHr/
    +cXN7/25wd/9vcXr/bnB6/2xudf9sbnX/Z2px/3V3ff9ydX7/b3J8/2tueP9rbXT/am13/2xudf9sbnX/
    +bG51/3Byef9zdXz/cHJ5/2RmbP9ucHf/dXd9/2Rncf9qbXf/bG95/2dqdP9sbnX/YmVu/2ptd/9qbXf/
    +bG95/2xudf91d33/bG95/2xudf9zdXz/bG51/2Zobv9wcnn/cHJ5/2xvef9rbnf/c3V+/3F0fv9sb3n/
    +c3V8/3N1fP9zdXz/bnB0/29xeP90dnz/bW94/3Byef9wc33/b3F1/25wd/9tb3P/cHJ5/3Byef9qbHP/
    +dXd9/2ptd/91d33/amxz/2xudf9zdXz/YmVu/25wd/9nanH/eXuB/25wd/9ucHf/bnB3/25wd/9wcnn/
    +b3F1/36Ahv91d33/bnB3/2xudf9tb3P/fn+D/2psc/9sbnX/bnB3/25xe/9sbnX/amxz/25xe/9nanT/
    +d3l//2Rncf9sbnX/bnB3/21vc/9nanH/b3F1/3Bzff9ucHf/bnB3/25xe/9sb3n/c3V8/3Byef91d33/
    +b3F1/3h5ff9zdXz/bG51/3Byef91d33/dXiB/3V4gf9wc33/cHN9/3N2f/9sb3n/bnF7/2dqdP9wcnn/
    +bW9z/3N1fP9sbnX/cHN9/2ptd/91d33/dXd9/2xudf9iZW7/am13/2ptd/9qbXf/bnF7/3Byef9zdn//
    +bnF7/25xe/9zdn//cHN9/25xe/9ucXv/bG51/2ptd/9sb3n/bnF7/2ptd/9sb3n/bnB3/25wd/9wcnn/
    +dXd9/2xudf9maXP/Z2p0/3Z4fP9zdXz/dXd9/3N1fP9ucHf/dnh8/2ptd/9ucXv/ZGdx/2psc/9maXP/
    +am13/2Jlbv9kZ3H/ZGdx/2Rncf9iZW7/Zmlz/2Zpc/9qbXf/ZGdx/2dqcf9sb3n/bnF7/2Rncf9qbXf/
    +amxz/25xe/9zdXz/dXd9/2xvef9sbnX/cHN9/21vc/9qbHP/dXd9/3V3ff91d33/eHl9/25wd/9vcXX/
    +bnB3/3Z4fP9ucHf/c3Z//3Z4fP91d33/cHJ5/3N1fP9ucHf/bnB3/25wd/91d33/f4KM/3Byef9zdn//
    +bnF7/3d5f/9sb3n/e32D/3h5ff9ucHf/cHN9/2ptd/9zdn//bG95/3Bzff9wcnn/e36H/25wd/9wc33/
    +bG95/2ptd/9zdn//dXiB/3V3ff9sb3n/bnB3/3d6g/9ucXv/bnB3/3N2f/9zdn//bnB3/2xudf9wcnn/
    +bW9z/29xdf9ucHf/bnB3/2xvef9wcnn/cHN9/3Bzff9wcnn/c3Z//3N2f/9xc3r/cHJ5/3N2f/93eoP/
    +cHN9/3h6gP9zdXr/d3l//3h7hP9zdn//cHN9/2dqdP93eoL/dnmB/3N2fv9wcnr/bnB3/25wd/9vcXX/
    +cHJ5/25wd/91d33/dXd9/3N1fP9maG7/bnB3/3l7gf9maG7/bG51/2ptd/9sbnX/amxz/2Jlbv9sbnX/
    +cHN9/2ptd/9nanH/c3V8/2dqdP9nanH/Zmlz/2Zobv9ZXGX/ZGdx/2Zpc/9iZW7/YmVt/2xud/9sb3f/
    +a210/29yef9wcnn/dnh8/29xdf9tcHr/bnF7/2Zpcv9naXD/Z2pz/2Jlbv9kZmz/Zmhu/2dqdP9nanT/
    +ZGdx/25wd/9maXP/c3V8/2psc/9maXP/cHJ5/2Jlbv9wcnn/bnF7/3+Bh/9zdn//dXiB/3N1fP9wc33/
    +cHN9/2xvef97fYP/cHN9/2xvef9sb3n/cHJ5/3+Bh/9sb3n/cHN9/3Byef9zdn//c3V8/3Byef9zdn//
    +bG95/3t+h/9sb3n/dXiB/3d6g/9wcnn/am13/3Byef9wc33/cHJ5/25xe/9zdn//cHJ5/3l7gf91eIH/
    +eXyG/3d6g/95fIb/d3qD/3Bzff91eIH/d3l//3l8hv91d33/cHN9/2xvef9wc33/am13/3Byef9sbnX/
    +cHJ5/29xdf91d33/bG95/3Bzff9ucHf/d3qD/3h5ff9sbnX/Zmlz/2xvef9wcnn/cHJ5/3Byef91d33/
    +dXiB/3d5f/9wc33/e36H/3l7gf9wc33/c3Z//25wd/9wc33/d3qD/3Bzff9wcnn/cHN9/25xe/9wc33/
    +c3V8/3h5ff9vcXX/amxz/2psc/92eHz/cHJ5/3Bzff9ucXv/bG51/3V4gf9ucXv/c3V8/2dqcf9sbnX/
    +cHJ5/3N1fP9qbHP/bG51/29xdf9zdXz/bW9z/2xudf9wcnn/cHJ5/2xudf9sb3n/c3V8/3Z4fP9sb3n/
    +cHN9/25xe/9zdn//dXd9/3d5f/9wc33/bG95/3N2f/9ucXv/bnB3/3d5f/95e4H/d3l//3d5f/9sb3n/
    +cHJ5/29xdf92eHz/bnB3/3N1fP92eHz/dXd9/3N1fP9wcnn/b3F1/2xudf9wc33/dXd9/4CChv9tb3P/
    +bnF7/2xudf91d33/bW9z/3d5f/92eHz/bW9z/2xudf9nanH/cHN9/2xvef9wcnn/bnB3/3d5f/9ucHf/
    +cHN9/2xvef9sb3n/dXd9/3N2f/91d33/bnB3/25wd/95e4H/bG95/25wd/9wc33/dnh8/2xudf9qbHP/
    +bnB3/21vc/9sbnX/bG95/2ptd/9ucHf/bnB3/25wd/9wcnn/bW9z/3N1fP9xc3r/a253/2psc/9nanT/
    +bnF7/2dqdP9vcnz/aWx2/29xev9sb3n/amxz/2xudf9iZW7/cHN9/3R2fP9xdH3/bW93/2hrcv9sb3n/
    +bG51/2xvef9sbnX/dXd9/3V3ff9wcnn/amxz/2xudf93eX//Z2px/2ptd/9qbXf/am13/2xvef9maG7/
    +bW9z/25wd/9wcnn/b3F1/3N1fP9sbnX/bG51/2xvef9wcnn/Zmhu/2xvef9qbXf/Zmlz/2Vocv9sb3n/
    +cXR7/2xvef9zdXz/c3V8/3V3ff9ucHT/bnB1/3R2fP9sb3j/b3F2/21vdf9tb3P/bG51/25wd/9zdXz/
    +c3V8/2psc/93eX//am13/3d5f/9sbnX/am13/3d5f/9sbnX/bG51/2ptd/97fYP/dXd9/3Byef9vcXX/
    +cHJ5/2xvef9ucHf/eXuB/2xvef9qbXf/am13/2xudf9+gIb/amxz/3Byef9ucHf/cHJ5/25wd/9ucHf/
    +bnB3/2Zpc/91d33/Z2px/3N2f/9wcnn/bnB3/2psc/9sb3n/cHN9/3N1fP9zdn//dXiB/3Byef95fIb/
    +dXiB/3d6g/93eoP/e36H/3l8hv9wc33/dXiB/3l7gf9+gYr/foCG/3d6g/93eoP/d3qD/3V3ff93eoP/
    +cHN9/3d6g/91eIH/e32D/3Bzff9zdn//bnB3/3l7gf94eX3/c3Z//2dqdP9zdn//c3Z//3N2f/9ucHf/
    +d3l//3l7gf97fYP/d3qD/3+CjP97fof/eXuB/3l7gf91d33/dXiB/3l7gf93eoP/cHJ5/3Bzff9ucXv/
    +c3Z//25xe/97fYP/c3V8/2xvef9sb3n/d3l//3N2f/9wc33/cHJ5/2xvef9ucXv/am13/3Byef9sbnX/
    +bW9z/25xe/9ucXv/ZGdx/2dqdP9qbHP/cHJ5/2dqcf9maG7/bG95/2dqdP9kZ3H/ZGdx/2ptd/9wc33/
    +Z2p0/2ptd/9nanH/bG95/3N1fP9wc33/bG95/2xudf9zdXz/am13/2dqdP9ucXv/c3V8/3V3ff91d33/
    +bG51/25xe/9sbnX/bG95/2ptd/9ucXv/bnF7/3V3ff92eHz/cHJ5/2xudf9tb3P/c3V8/3d5f/+Agob/
    +bW9z/2xvef9sb3n/eHl9/2xudf93eoP/dXd9/2ptd/9qbXf/Zmlz/3N1fP9wcnn/c3Z//3Bzff97fof/
    +cHJ5/3N2f/9sb3n/bG51/3V3ff9zdXz/c3V8/25wd/9ucHf/dXiB/25xe/9sb3n/cHN9/3N2f/9tb3P/
    +bG51/3N1fP9sb3n/cHN9/3Bzff9sb3n/bnB3/25xe/9ucHf/cHJ5/21vc/91d33/c3V6/21wef9ucHf/
    +bnB3/3N1fP9ucHf/cXN7/2xud/9wcnn/dHZ9/25wd/9ucHf/Z2px/3V3ff90dnv/cXR7/25wd/9lZ3D/
    +amxz/2xudf9qbXf/am13/3Bzff9ucXv/bnF7/2Zpc/9sbnX/c3V8/2Rncf9maXP/Zmlz/2dqcf9maXP/
    +XWBq/2dqcf9nanT/Z2p0/2Zpc/9sb3n/Z2px/2dqcf9qbXf/am13/2Jlbv9qbXf/bG51/2Vocf9oa3T/
    +b3J5/3J1f/9tcHr/dHeA/3V4gf97fYP/dXd9/3Z4f/95e4H/bG93/21vdv9tb3b/bG51/2ptd/9tb3P/
    +dXd9/3Byef9sbnX/d3l//2xudf92eHz/bG51/2xudf93eX//bG51/2xvef9sb3n/d3qD/3N2f/9ucXv/
    +bG95/3Byef9ucHf/bnB3/3d5f/9ucHf/bG51/2ptd/9ucHf/gYOK/2ptd/9zdn//cHJ5/3N2f/9wcnn/
    +bnB3/2xvef9qbXf/eXuB/2dqcf95e4H/dXiB/3N2f/9wc33/dXd9/3l7gf91d33/dXd9/3d6g/91d33/
    +fX6B/3t9g/9/gYf/foCG/36Ahv97fYP/eHl9/3l7gf9+f4P/gYOK/36Ahv95e4H/d3qD/3N2f/91d33/
    +d3qD/3Bzff9wc33/cHN9/3l7gf9zdn//dXiB/3N1fP9/gYf/e36H/3V4gf9sb3n/c3Z//3Bzff9wc33/
    +bnF7/3Z4fP9zdXz/dXd9/25xe/93eX//dnh8/3V3ff94eX3/bnB3/25wd/91d33/cHJ5/25wd/9ucHf/
    +bnB3/3N1fP9wcnn/dnh8/29xdf9qbHP/bG51/3Z4fP9wcnn/c3V8/25wd/9qbXf/bnF7/25wd/9zdn//
    +am13/25wd/9zdXz/dXd9/2ptd/9vcXX/bG51/3N1fP9sbnX/am13/3N1fP9ucXv/bG51/2xudf9wcnn/
    +eHl9/2ptd/9zdXz/c3V8/3V4gf93eoP/eXuB/3l7gf9zdXz/e32D/3V4gf9zdXz/d3qD/3t9g/9+gIb/
    +foGK/3N2f/97fYP/dXiB/3d6g/9wc33/dXiB/3N2f/91eIH/c3Z//3Bzff9ucHf/bnB3/3N1fP92eHz/
    +gIKG/2xvef9ucHf/bnB3/3Z4fP9qbXf/c3Z//3N1fP9qbHP/am13/2BjbP9ucXv/Z2p0/25xe/9wc33/
    +dXiB/2xudf9sb3n/bG95/2ptd/9wc33/cHN9/3N1fP9tb3P/am13/3V3ff9qbXf/Z2px/2xvef9ucXv/
    +amxz/2Zpc/9sb3n/bG95/25xe/9sb3n/bG51/2xudf9qbXf/Zmlz/2Zpc/9maG7/am13/2tueP9nanT/
    +Zmlz/2Zpc/9nanT/Z2lv/2ptd/9maXL/a252/2xvef9qbHP/am13/2Rncf9sb3n/b3J8/3Bze/9sbnT/
    +Z2lw/2xudf9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9qbHP/bG95/3l7gf9qbXf/cHJ5/3d6g/9zdn//
    +c3Z//2ptd/9wc33/dXiB/3d6g/9wcnn/d3qD/3Bzff9wcnn/c3Z//3Bzff9maXP/bnF7/25xe/9sb3n/
    +bG95/3N2f/9xdH7/am12/25wd/9ucXv/dXd9/2xudf9tb3b/cnV8/21veP9vcXj/bnB3/25wd/9wcnn/
    +bW9z/3N1fP9zdXz/bG51/3d5f/9tb3P/dXd9/21vc/9sbnX/dXd9/2dqdP9maXP/Z2p0/3d5f/9zdXz/
    +bnB3/2xudf91d33/bG95/2ptd/93eoP/c3Z//25xe/9sb3n/bnB3/4GDiv9qbXf/bG95/25wd/9ucXv/
    +cHJ5/25xe/9ucHf/Z2px/3Z4fP9lZmr/c3V8/25wd/9tb3P/Z2p0/2dqcf9sb3n/amxz/2psc/9maXP/
    +YmVu/2xvef9qbXf/bG95/2xvef91d33/bnF7/2xudf9sbnX/c3V8/3V3ff91d33/bG95/2xvef9qbXf/
    +am13/2xvef9qbHP/cHJ5/2xudf91d33/bG51/3N1fP9vcXX/e32D/3d6g/9wc33/Z2p0/3Bzff91d33/
    +c3V8/25wd/9zdn//d3l//3d5f/91d33/dXiB/3d5f/93eX//eXuB/25xe/9wc33/dXiB/3V4gf9zdn//
    +d3qD/35/g/97fYP/dXiB/3t+h/9zdn//bnF7/3Byef93eX//cHN9/3N2f/9wc33/bnB3/3Bzff9qbXf/
    +c3V8/2dqcf9ucHf/c3V8/3N1fP9sbnX/bG51/2xudf9wc33/bG95/2ptd/9zdXz/c3V8/2psc/9sbnX/
    +bnF7/3Z4fP9sbnX/bG51/2psc/9ucXv/c3V8/3N1fP9wcnn/bG51/3V3ff9sbnX/Z2p0/3Byef9wc33/
    +dnh8/3d5f/9ucHf/c3Z//2xvef9zdXz/bG95/25xe/9ucHf/c3Z//3N2f/9wc33/bnB3/25wd/9zdn//
    +eXuB/4GDiv9ucHf/bnF7/3Bzff95e4H/cHN9/3d6g/93eoP/cHJ5/3N2f/9maXP/dXd9/3Bzff91d33/
    +c3Z//3l8hv9ucHf/cHJ5/25xe/9ucHf/dXd9/3V3ff92eHz/b3F1/25wd/91d33/bG95/2xvef91eIH/
    +dXiB/25xe/9sb3n/c3Z//3Bzff9wc33/cHN9/2xvef9zdXz/cHJ5/25wd/9wcnn/b3F1/3N1fP9zdXr/
    +bW92/2xudf9tb3P/cHJ5/2xudv9tb3f/aWx1/25xef9ucXv/Zmhu/2dqdP9kZ3H/bG95/2xvef9vcXr/
    +a252/2Vobv9sbnX/cHJ5/2xudf9zdXz/dXd9/2xvef9sb3n/Zmlz/2ptd/9zdXz/YmVu/2psc/91d33/
    +cHN9/25wd/9nanH/bnB3/25xe/91eIH/bG95/3V3ff9sb3n/bnB3/3V4gf9ucXv/am13/25wd/9ucHf/
    +bG95/29xeP9zdn7/dHd//21vdv9wcnn/cHJ5/3V3ff9qbXf/cHJ6/3d6g/9wc33/bnF6/3F0fv9ucXv/
    +bnF7/2xudf9zdXz/cHJ5/2ptd/9zdXz/bG51/3V3ff9sbnX/b3F1/3d5f/9sbnX/amxz/29xdf92eHz/
    +cHJ5/3Byef9ucHf/dXd9/2ptd/9maXP/c3Z//25xe/9sb3n/Zmlz/2psc/9/gYf/am13/2ptd/9qbHP/
    +am13/21vc/9sbnX/bG51/2psc/93eX//Zmlz/3Bzff9ucXv/bnB3/2xudf9sbnX/bnB3/2xudf9sb3n/
    +bnB3/2psc/9zdXz/bnB3/3N1fP9ucHf/eHl9/3Bzff9wcnn/cHN9/3d6g/95fIb/e32D/3V4gf93eoP/
    +cHN9/2xvef9wc33/bG95/3V3ff9ucHf/dXd9/25wd/91eIH/bnB3/3l8hv93eX//c3V8/2psc/9zdXz/
    +cHJ5/3N1fP9ucHf/c3V8/3N1fP92eHz/cHN9/3V3ff91d33/dXd9/3d5f/9qbHP/bnB3/3V3ff9zdXz/
    +b3F1/25wd/91d33/cHJ5/25xe/93eX//bG51/2psc/9sbnX/eHl9/3Byef91d33/bnF7/2xudf91eIH/
    +cHN9/3V4gf9kZ3H/bnB3/25xe/93eoP/c3V8/3N1fP9zdXz/eXuB/3N2f/9wcnn/eXuB/3t9g/9ucXv/
    +cHJ5/3V4gf93eX//bnB3/3Byef9wcnn/d3l//3Bzff9zdn//c3V8/3Byef91d33/cHJ5/25wd/9zdXz/
    +cHN9/3N1fP91d33/bG95/3N1fP9ucHf/c3V8/25wd/9wcnn/bnB3/3N2f/91eIH/c3Z//2xvef9ucXv/
    +c3Z//3V4gf+DhYz/dXd9/3V3ff97fYP/f4GH/3t9g/9/gYf/hYeN/3t9g/95fIb/c3Z//36Biv9+gIb/
    +foCG/31+gf+Bg4r/dnh8/3l7gf97fYP/dnh8/3t9g/97fYP/eXuB/3Bzff9ucXv/d3l//25wd/9qbHP/
    +cHN9/3Bzff9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2dqdP9nanH/Z2p0/2Zpc/9kZ3H/Z2p0/2psc/9nanT/
    +bG95/2Nmbv9gY2z/Zmhu/2ptd/9oa3P/bG52/2lsdv9sb3j/bnF7/21vc/9tb3P/Z2px/3Byef9xdHv/
    +b3F4/3Byef9oanD/b3F1/3N1fP9ucHf/dXd9/3V3ff9ucHf/bnB3/2psc/9wcnn/dnh8/2Zobv9sbnX/
    +dXd9/3N1fP9wcnn/Zmhu/2xudf9sb3n/dXd9/2ptd/9wcnn/b3F1/21vc/9wc33/bG51/2Rncf9qbHP/
    +Z2p0/2BjbP9kZ3H/aGt1/2tud/9nanP/bnB4/21vdv91d33/bG51/21vc/9zdn3/a254/21vd/9tcHr/
    +am13/2ptd/9sbnX/cHJ5/2xvef9nanT/c3V8/2psc/91d33/bG51/2xvef93eX//Z2p0/25xe/9wc33/
    +e32D/3d6g/9zdn//cHN9/3d6g/9zdXz/bnF7/3l8hv9zdn//cHN9/2ptd/9ucHf/f4KM/2xvef9zdn//
    +cHN9/3Bzff9zdXz/c3Z//25xe/9nanT/eHl9/2dqcf9zdXz/cHJ5/25wd/9sbnX/bG51/29xdf9vcXX/
    +cHJ5/3Byef9sbnX/c3V8/3Byef9sb3n/cHN9/3V3ff9wc33/bW9z/2ptd/9ucXv/dXd9/3Z4fP9wcnn/
    +cHN9/2ptd/9nanT/cHN9/2psc/9wc33/am13/3Bzff9qbXf/bG95/2xudf93eoP/dXd9/2xvef9qbHP/
    +bG95/2xvef9wc33/bG51/2ptd/9ucXv/bnF7/3Bzff9zdXz/dXd9/2xvef93eX//Zmlz/2ptd/9wc33/
    +bG95/2ptd/9sbnX/cHN9/3Byef9zdXz/eXuB/3N2f/9qbXf/bnB3/3l7gf9wc33/dnh8/3N1fP9ucHf/
    +bnF7/25wd/9zdXz/ZGdx/25wd/9zdXz/c3Z//25xe/9ucXv/cHN9/3d6g/95fIb/c3Z//36Ahv97fof/
    +cHN9/3V4gf95e4H/e36H/3V3ff93eX//c3Z//3l8hv9zdn//d3qD/3d6g/9zdn//d3qD/3N2f/9sb3n/
    +c3Z//3N2f/91eIH/d3qD/3Bzff9wc33/cHN9/25xe/9ucXv/cHN9/3Bzff91eIH/c3Z//3N2f/9ucHf/
    +bW9z/3N1fP91d33/fn+D/25wd/9sb3n/dXiB/3d5f/9ucXv/d3l//3d6g/9zdn//bnF7/2psc/9wc33/
    +cHJ5/3V3ff9zdXz/eXuB/2xudf9wcnn/bG95/2xudf91d33/dXd9/25xe/9ucHf/bG95/3V3ff9ucHf/
    +Z2p0/3Bzff91d33/bW9z/2dqcf9wcnn/bG95/2ptd/9sbnX/bG51/25xe/9sbnX/am13/2xvef9qbHP/
    +bG95/21veP9pa3L/YmVu/2Zobv9sb3n/bG51/2lsdP9oa3X/am12/2hrdf9maG7/Zmhu/1lcZf9maXP/
    +bXB6/21wef9tb3f/Z2p0/25xdf9ucXv/bnB3/3N2f/93eX//bnF7/3Bzff9qbXf/c3Z//3d5f/9nanT/
    +cHJ5/3N2f/93eX//cHJ5/2psc/9sbnX/bG95/3V3ff9sbnX/bG95/2ptd/9nanT/cHN9/2xvef9maXP/
    +bG51/25xe/9kZmz/bG51/2xudv9ucHj/aWx0/25xe/9sb3n/cHN9/2dqdP9qbXf/cHJ4/25wdf9sbnb/
    +c3V9/25wd/9wcnn/bG51/3Byef9ucHf/bG51/3V3ff9sbnX/dXd9/2xudf9sbnX/d3l//2dqdP9qbHP/
    +b3F1/3Z4fP9zdn//bG95/25wd/91d33/bG95/2xvef97fof/dXiB/3N2f/9ucHf/cHJ5/3+CjP9qbXf/
    +bnF7/25wd/9ucXv/cHN9/3N2f/9wc33/am13/3d5f/9nanH/cHJ5/3Byef9sbnX/Z2p0/2dqdP9sbnX/
    +amxz/2xudf9nanT/Zmlz/2xvef9qbXf/am13/2xvef9zdXz/cHJ5/21vc/9wcnn/cHJ5/3Z4fP91d33/
    +am13/3N1fP9ucXv/bG51/3V3ff9qbHP/cHN9/2ptd/9zdXz/bnB3/3Bzff9sb3n/foCG/3d5f/9ucXv/
    +bW9z/3N1fP9zdXz/dnh8/3Byef9sbnX/bG95/3Bzff9wc33/cHN9/3V3ff9wcnn/dXiB/2Rncf9nanT/
    +cHN9/2ptd/9qbXf/am13/2dqdP9qbXf/bG95/3N2f/9qbHP/Zmlz/2psc/91d33/bnF7/3Bzff9qbXf/
    +Zmlz/2dqdP9sbnX/bnF7/2Zpc/9sbnX/bW9z/3N1fP9wcnn/bnB3/3Byef93eX//c3Z//25wd/91d33/
    +eXuB/3Byef9wcnn/dXiB/3t9g/9ucHf/cHJ5/3Byef9zdn//cHN9/3d6g/97fYP/dXiB/3t+h/9zdn//
    +c3Z//3t9g/95e4H/d3qD/3t9g/9wc33/dXiB/3l7gf9wc33/dXiB/3V4gf9zdXz/d3qD/3l7gf91eIH/
    +bnB3/3Byef9wc33/cHN9/3t9g/9vcXX/bnB3/3d5f/9zdn//bnF7/3d5f/91eIH/bnF7/25xe/9qbXf/
    +cHN9/25xe/91eIH/cHN9/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3d5f/9zdn//c3Z//3V4gf95e4H/
    +cHN9/3Byef93eX//dXd9/2xvef9qbXf/cHN9/25xe/9wcnn/bnF7/25wd/91d33/bnB3/3Byef9zdn//
    +bnB3/3Bzff9vcnv/b3F1/2dqdP9ucHf/cHN9/25xe/9vcnv/bXB6/29xev9ydX7/bnB3/25wd/9maG7/
    +b3F1/3J0ev9tcHr/bW93/2Zpc/9sbnX/am13/2dqdP9ucXv/c3V8/2psc/9sb3n/amxz/2xvef9ucXv/
    +ZGdx/2dqdP9ucXv/cHN9/2ptd/9iZW7/Zmlz/2xudf9ucXv/Z2p0/25xe/9sbnX/bG51/3N1fP9wcnn/
    +Z2px/2xudf9ucXv/ZGZs/25wd/9vcXj/b3F4/25wd/9wcnn/cHJ5/3h5ff9nanT/bG51/29xeP9sbnX/
    +bnB3/3F0fv9sb3n/bG51/2ptd/9ucHf/cHJ5/29xdf9zdXz/bG51/3l7gf9ucHf/bnB3/3d6g/9ucHf/
    +bG51/2ptd/9zdn//c3Z//3Bzff9sb3n/c3Z//2dqdP9nanT/eXuB/3N2f/9wc33/am13/29xdf+Agob/
    +bG51/25wd/9sbnX/cHJ5/2xvef9ucXv/b3F1/2xudf92eHz/Zmhu/3N1fP9sbnX/Z2p0/2Zpc/9nanT/
    +bG51/2psc/9nanH/bG51/2Zpc/9wc33/am13/2ptd/9ucXv/cHN9/2xvef9tb3P/bnF7/25xe/9zdXz/
    +dXd9/3Bzff9wc33/bnF7/2Zpc/93eX//bnB3/3V3ff9ucHf/bnF7/2xvef9zdn//cHN9/3+Bh/95e4H/
    +c3Z//3Byef9zdn//dXiB/3d5f/9zdn//cHN9/25wd/9zdn//dXd9/3N1fP93eX//cHJ5/3d5f/9maXP/
    +am13/3N1fP9sb3n/Z2px/2psc/9qbXf/Zmlz/2dqdP9wcnn/Zmlz/2BjbP9nanH/bG95/2ptd/9sb3n/
    +bG95/2Jlbv9qbXf/amxz/2ptd/9iZW7/Zmlz/2Zobv9sb3n/am13/2ptd/9tb3P/dXd9/3N1fP9ucHf/
    +dXd9/3Z4fP9tb3P/bW9z/3N1fP91d33/am13/2xudf9sbnX/bnF7/2ptd/9wc33/dXd9/3Byef93eX//
    +c3V8/2psc/94eX3/dnh8/3Z4fP91d33/bG51/25xe/9wc33/bG51/25xe/9sb3n/bG51/25xe/91d33/
    +bG51/25wd/9vcXX/c3V8/3Byef97fYP/bnB3/21vc/9zdXz/c3V8/25wd/91d33/dXd9/3Byef9wcnn/
    +amxz/2xudf9sb3n/cHN9/3Bzff91d33/bG51/2xvef9sbnX/bnB3/3N1fP9zdn//c3V8/25wd/9zdXz/
    +dXd9/25xe/9sb3n/dXiB/3N2f/9sb3n/bG95/25xe/9wcnn/c3V8/2xudf9sbnX/dnh8/29xdf9ucHf/
    +cHN9/3Byef9zdn//c3Z//3F0fv9sb3n/bG95/3V3ff9ucHj/b3F4/2ptdf9rbnf/cXR+/2ptd/9qbXf/
    +YmVu/2xvef9wcnn/b3F6/3Bye/91eID/Z2px/3N1fP9vcXX/Z2px/2psc/97fYP/cHJ5/2psc/9zdXz/
    +bG95/25xe/9wc33/c3V8/25xe/9ucXv/c3V8/25xe/9nanT/cHN9/2xudf9qbXf/bG51/2xvef9gY2z/
    +c3V8/2xvef9qbHP/dXd9/2Zpc/9nanH/Zmly/2dqdP9pbHT/bG95/3J1fv93eX//bG95/3Byef9ucXv/
    +bG50/21wev9kZ3D/Z2lz/2dqdP9gY2z/ZGdx/2Zobv9iZW7/Zmhu/2Jlbv9maXP/Zmhu/2Rncf9sbnX/
    +bG95/2Zobv9qbXf/bnF7/2xvef9ucXv/amxz/25xe/9kZ3H/ZGdx/3V3ff9sb3n/bnF7/2Zpc/9tb3P/
    +foCG/2psc/9sbnX/bG51/3Bzff9qbXf/bG95/2xudf9maXP/bG95/11gav9sb3n/amxz/2Rncf9kZ3H/
    +Z2p0/2xudf9sbnX/bG51/2ptd/9maXP/c3V8/2ptd/9sb3n/bnF7/25xe/9sb3n/bG51/2xvef9ucXv/
    +dnh8/3h5ff9zdn//dnh8/3V3ff9qbXf/eXuB/3Byef93eX//bG95/2xvef9ucHf/c3Z//25xe/9+gIb/
    +eHl9/3N1fP9wcnn/c3Z//3V4gf93eX//cHN9/25xe/9sb3n/dXiB/3l7gf9ucXv/dXiB/25wd/93eoP/
    +Zmlz/25wd/93eX//bnF7/2ptd/9sbnX/cHJ5/3Byef9ucXv/dXd9/3N1fP9nanH/bW9z/3N1fP9wc33/
    +c3V8/25xe/9nanT/bnB3/25xe/9zdn//bG95/25wd/9sb3n/cHN9/25wd/9ucHf/am13/3h5ff9zdn//
    +bnF7/3l8hv95e4H/bnB3/25wd/93eX//eXuB/3Byef9ucHf/c3V8/3V4gf93eoP/d3qD/3V4gf91eIH/
    +d3qD/3V4gf9wc33/e36H/3t9g/97fof/eXyG/3Bzff95e4H/d3qD/25wd/9wc33/bnF7/3Byef91eIH/
    +d3qD/3Bzff9ucHf/bnB3/3Bzff9wc33/e32D/2xvef9tb3P/dXd9/3V3ff9wcnn/eXuB/3h5ff9wcnn/
    +bnF7/2ptd/9ucHf/bnB3/3V4gf93eoP/e32D/3N1fP9zdn//c3Z//2ptd/9wc33/cHN9/3N2f/9ucXv/
    +c3Z//3V3ff9sb3n/bnB3/3N2f/91d33/bnB3/2psc/9sbnX/cHJ5/2ptd/9sbnX/Zmlz/3Bzff9qbHP/
    +Z2px/2dqcf9maXP/am13/2lrdP9oa3L/Z2p0/2psc/9wc33/bW9z/21vdv9sbnT/aWxz/3N1fv9ucXv/
    +bG95/2dqdP9ydX//dHd//3Byef9wc3r/dnh+/2Zobv9wc33/cHJ5/2dqdP9nanT/d3qD/2xvef9qbXf/
    +dnh8/25xe/9zdn//cHN9/3V3ff9wcnn/cHJ5/3N1fP9wcnn/amxz/3Bzff9qbXf/bnB3/25wd/91d33/
    +Zmhu/3N1fP9zdXz/am13/3d6g/9nanT/Z2p0/2hrdP9oa3L/a212/2tueP9tcHn/dXd9/2xudf9vcXX/
    +bnB3/25wdv90dn3/am12/2ptd/9wc33/bG51/2xudf9sbnX/bG51/2ptd/9qbHP/cHJ5/25wd/9ucHf/
    +bG95/3Bzff9gY2z/bG51/25wd/9ucXv/bnF7/2ptd/9ucXv/am13/2Rncf91d33/c3V8/3N1fP9nanH/
    +b3F1/36Ahv9ucHf/bG95/29xdf9zdXz/bnB3/2xudf9ucHf/bW9z/3N1fP9maG7/bnF7/25xe/9maXP/
    +ZGdx/2xudf9sbnX/b3F1/3Byef9ucXv/bG51/3N1fP9wc33/cHN9/3Bzff9wc33/bnB3/2ptd/9ucXv/
    +c3Z//3l7gf93eX//d3l//3V3ff91eIH/bG95/3l7gf9zdXz/d3qD/2ptd/9wc33/c3V8/3V4gf9wc33/
    +f4GH/3d5f/9wc33/cHJ5/3Bzff9zdn//dXd9/25wd/9tb3P/am13/25xe/9zdXz/am13/3V3ff9ucHf/
    +d3qD/2psc/9sb3n/eHl9/3Byef9ucHf/bnB3/3V3ff9wcnn/c3V8/3V3ff9wcnn/amxz/25wd/9wcnn/
    +c3V8/3N1fP91d33/bG51/3Bzff9zdn//dXiB/2ptd/9zdXz/cHN9/3V4gf9zdn//c3Z//3Bzff97fYP/
    +c3Z//2xvef95fIb/d3l//2xvef9wcnn/d3l//3d6g/9zdXz/c3V8/3N1fP9zdn//cHN9/3Bzff93eoP/
    +dXiB/3t+h/95e4H/bnF7/3l8hv93eX//eXuB/3l7gf9ucHf/d3l//3d6g/9zdXz/eXuB/3d6g/9zdn//
    +eXyG/3d6g/91eIH/c3V8/3N1fP9zdn//dXiB/3l8hv9wc33/bG95/3V3ff91d33/cHJ5/3d5f/94eX3/
    +cHJ5/25wd/9nanT/bG95/25xe/91d33/dnh8/3V3ff9sbnX/am13/25wd/9nanH/cHJ5/3Byef9wc33/
    +bnF7/3Bzff91eIH/cHN9/2xvef9zdn//dXd9/25xe/9qbXf/bnF7/3N2f/9sb3n/bnB3/2dqdP91d33/
    +b3F1/25wd/9ucHf/amxz/25wd/9ucHj/a254/2ptd/9tb3P/cHJ5/2ptd/9qbXf/Z2pz/2Vocf9sb3n/
    +Zmhu/2dqdP9gY2z/Z2p0/2hrdf9oanD/aWx2/3BzfP9iZW7/bnF7/2ptd/9maXP/Zmlz/3V4gf9qbXf/
    +Z2p0/25xe/9qbXf/bnF7/25xe/9ucXv/bnF7/25xe/91d33/cHJ5/2psc/9ucXv/Z2p0/2dqdP9sbnX/
    +bnF7/2Jlbv9ucXv/am13/2psc/9zdXz/Zmlz/2Rncf9nanT/aGty/2xvd/9sbnb/c3V8/3V3ff9sbnX/
    +bnB3/2tud/9tb3b/cXN6/21vdv9wcnn/dXd9/2xvef9sb3n/bG95/2xvef9sb3n/bG95/3N2f/9wcnn/
    +cHJ5/3Bzff91eIH/Zmhu/25wd/9vcXX/c3V8/3N1fP9wcnn/c3V8/2psc/9qbHP/d3l//3V4gf9wc33/
    +cHJ5/3Byef9/gYf/bG95/25wd/9vcXX/c3V8/2xudf9tb3P/am13/2ptd/9wc33/ZGdx/2xvef9ucXv/
    +YmVu/2Zpc/9sbnX/Z2p0/21vc/9sbnX/am13/2dqdP9ucXv/bnF7/3Bzff9sb3n/bG95/2ptd/9nanT/
    +bG95/2ptd/9zdXz/dnh8/3Z4fP9zdXz/cHJ5/2psc/93eX//am13/3N1fP9sbnX/b3F1/29xdf9wcnn/
    +dXd9/36Ahv91d33/c3V8/21vc/9ucXv/cHN9/3N1fP9sb3n/Z2p0/2ptd/9sb3n/dnh8/29xdf94eX3/
    +bnB3/3V3ff9nanH/bnB3/3h5ff9wcnn/bnB3/2xvef9zdXz/c3V8/3Byef92eHz/cHJ5/2psc/9sbnX/
    +cHN9/3V4gf91eIH/dXiB/2ptd/9ucXv/bG95/3Bzff9qbXf/cHJ5/2xvef9zdXz/bG95/3Byef9ucHf/
    +eHl9/3V3ff9qbXf/foCG/3V4gf9tb3P/bW9z/3V3ff91eIH/bW9z/2xudf9nanT/bnB3/2ptd/9sbnX/
    +cHJ5/2xudf92eHz/dXd9/2dqdP91d33/bnF7/3N1fP9ucXv/Z2p0/3Bzff9wc33/bG51/2xvef9qbHP/
    +Z2px/2dqdP9nanT/am13/2psc/9nanH/bG95/2dqdP9zdn//Zmlz/2Rncf9nanT/bG95/2psc/9wcnn/
    +cHJ5/2Zpc/9sbnX/Z2p0/2psc/9qbXf/cHN9/3Bzff93eX//bG51/2ptd/9sbnX/amxz/3N1fP9ucHf/
    +cHJ5/3Byef91eIH/dXiB/3V4gf9ucXv/eXuB/3V4gf9ucHf/ZGdx/2xvef9wc33/bnB3/21vc/9nanH/
    +dXd9/21vc/9qbXf/am13/2dqdP9sb3n/bW94/2xudv9maXP/amxz/2ptd/9kZ3H/Zmlz/2Nmbv9jZm//
    +bG94/2dqcf9nanT/YGNs/2xvef9sb3n/amx0/2hrdf9oa3T/Wl1m/2dqdP9nanH/XWBq/2Rncf93eX//
    +am13/2ptd/9zdXz/bnB3/3Byef9zdXz/c3V8/3Byef9wcnn/dXd9/3Byef9ucHX/c3V8/25wd/9wc33/
    +b3F7/3V3ff9naXP/d3l//3N2f/9sb3n/dnh//25wd/9vcXX/bW92/2xudf9sbnX/bnB3/29ye/9wc33/
    +Z2px/2psc/9sbnX/amxz/29xev9sbnX/bW92/3V3ff9qbXf/am13/21vef9nanT/bW9z/2Rncf9ucHj/
    +bG51/2tud/9rbnf/c3V7/2Zpc/9qbXf/bnB3/3V3ff9ucXv/c3Z//3N1fP9qbHP/Z2p0/3V3ff92eHz/
    +cHJ5/25wd/9vcXX/fX6B/2ptd/9qbXf/bG95/3Bzff9sbnX/bG51/2dqdP9qbXf/bnF7/2Jlbv9sb3n/
    +bG95/2Rncf9iZW7/amxz/2dqcf9qbXf/amxz/2ptd/9maXP/bnF7/2xvef9sb3n/bG95/3Bzff9sb3n/
    +bG51/25wd/9sb3n/dXiB/3l7gf95e4H/c3Z//3V4gf9zdXz/eXyG/3V4gf97fYP/c3Z//3V4gf9wc33/
    +e32D/3t9g/+Bg4r/fn+D/35/g/9zdn//e32D/3t9g/97fYP/c3Z//3Byef9wc33/dXiB/3N2f/9ucHf/
    +d3l//3Bzff93eoP/am13/25wd/93eX//bG95/3Byef9wcnn/dXiB/3V4gf9ucXv/d3l//3N1fP9qbHP/
    +bG51/3N1fP9zdXz/dXd9/3V3ff9qbXf/am13/2ptd/91d33/amxz/29xdf9ucHf/c3V8/2xudf9wcnn/
    +bW9z/3V3ff91d33/bG51/3t9g/93eX//bG51/2xudf9zdXz/d3l//3Byef9sbnX/bG51/25wd/9wcnn/
    +bnB3/3N1fP9vcXX/dXd9/3V3ff9nanH/d3l//25xe/92eHz/cHJ5/25wd/92eHz/c3V8/2xvef9ucXv/
    +bG95/2psc/9ucXv/bnF7/2xudf9vcXX/bnB3/3N2f/9ucHf/e32D/3N1fP9ucHf/dXd9/3N2f/9ucXv/
    +dXiB/3V3ff9wc33/bnB3/25wd/9vcXX/bG51/3Byef91d33/eHl9/25wd/9wc33/bnF7/2xvef91eIH/
    +cHN9/3V4gf9ucHf/cHJ5/3Byef9wcnn/bG51/3N1fP9ucXv/am13/2Rncf9sb3n/cHN9/21vc/9tb3P/
    +amxz/3Z4fP9ucHf/bG95/3Bzff9sb3n/bnF7/25weP9wc33/bG51/2xudf9wcnn/am13/2ttdf9ucHX/
    +bG52/3J0e/9sb3n/cHJ5/2Zpc/91eID/bnF7/3BzfP9vcnv/dXd9/2dqcf9zdXz/b3F4/2ttdP9sbnX/
    +dXd9/21wd/9rbXX/c3V8/2ptd/9vcnz/bXB6/21wev9tcHr/aWx2/21wev9wcnr/a21y/3Fzev9tb3T/
    +cHJ5/3Byef91d33/a210/3d5gv9wc3z/bnF6/3V3ff9ucHf/bW92/25wd/9tb3T/bnB1/21wef9vcnv/
    +bnF7/2dqdP9sbnX/amx0/2ttdP9wcnv/cHJ7/29xev96fIL/cHJ6/29xeP93eoL/b3J8/29xef9pbHb/
    +b3J8/2ptdv9tcHr/bXB6/29ye/9iZW7/Z2p0/2xudf9sb3n/bG95/2xvef9sb3n/Zmlz/2ptd/9wc33/
    +dXd9/2xvef9qbXf/Zmlz/3d6g/9sb3n/Z2p0/2ptd/91d33/bG51/2xvef9nanH/bnB3/3N2f/9qbHP/
    +c3V8/3Bzff9qbXf/bnB3/25xe/9sb3n/bnF7/3Bzff9ucHf/bnB3/3Bzff91d33/c3V8/3V4gf9zdn//
    +cHN9/3Byef9ucXv/bnF7/3N2f/91eIH/e32D/3Bzff9zdn//bnB3/3d5f/9ucXv/dXd9/2ptd/9qbXf/
    +bG51/3Byef91d33/d3l//3Bzff9ucHf/bnB3/3N1fP9wcnn/cHJ5/2xvef9qbXf/bG51/2xvef9sb3n/
    +Zmlz/3Bzff9qbXf/dXd9/2Jlbv9nanT/d3l//2ptd/9tb3P/bG51/3Byef9zdXz/bG51/3Z4fP9wcnn/
    +bG51/2psc/9sb3n/bG95/3V3ff91d33/am13/2ptd/9qbHP/am13/2Zpc/9sbnX/am13/2xvef9qbHP/
    +cHJ5/29xdf95e4H/dnh8/2xudf95fIb/e32D/29xdf9sbnX/c3V8/3d5f/9wcnn/bnB3/25wd/9vcXX/
    +c3V8/2psc/9ucHf/bW9z/3V3ff91d33/Z2p0/3V4gf9ucXv/c3V8/2dqdP9maXP/bnB3/2ptd/9nanT/
    +Z2p0/2Zpc/9kZmz/Zmhu/2dqdP9maG7/ZGdx/2Zobv9maXP/ZGdx/3Bzff9maXP/ZGdx/2xvef9sb3n/
    +amxz/3V3ff9wc33/bnF7/2ptd/9qbXf/amxz/2xudf9sb3n/dXd9/3N1fP9tb3P/b3F1/3Byef9qbXf/
    +cHN9/25wd/91d33/bW9z/25wd/9sb3n/am13/2xudf92eHz/cHJ5/25wd/9qbHP/bnB3/3N1fP9tb3P/
    +bG95/25wd/97fYP/cHN9/3d6g/9ucXv/bG95/3Byef9vcXj/cHJ5/2dqcf9sbnX/bnB3/25wd/9vcXj/
    +bnB1/2xvdv9ydHv/bW9z/3Byef9nanH/cHJ5/21vdv9ydHv/b3F6/3V3ff9jZnD/a254/2ptd/9maXL/
    +Z2ly/3F0e/9oa3X/Zmlz/25xev9pbHT/bG95/25xe/9pbHX/amx1/2hrc/9sb3f/am13/2Zobv9pbHb/
    +Z2pz/2hrdf9tcHj/am12/2Nlbv9wc3r/aGt0/2xudP9sb3n/aGtz/2ZocP9sb3f/amxy/2tud/9ucHb/
    +c3V8/3N1fP9qbXf/bnB3/3Byef9ucHf/cHJ5/3J0ev9vcXj/dnh+/3Bze/9rbXb/cXR+/25wd/9ucHf/
    +am12/3BzfP9sb3f/cXN6/3Fzev9wcnn/Zmlz/2ptd/9qbXf/bG95/2Zpc/9maXP/Z2p0/2Rncf9iZW7/
    +ZGdx/25wd/9kZ3H/Z2px/2Jlbv9zdXz/Zmhu/11gav9kZmz/bG95/2Rncf9maXP/XWBq/2Zobv9qbXf/
    +XWBq/2dqdP9kZ3H/XWBq/2Jlbv9kZ3H/Z2px/2dqdP9sb3n/Z2p0/2psc/9ucXv/cHN9/25xe/9sb3n/
    +bG95/25wd/9sbnX/bnB3/29xdf92eHz/cHN9/3d5f/9zdn//eXuB/25xe/95fIb/c3Z//3V4gf9ucXv/
    +c3V8/3N1fP91eIH/eXuB/3l8hv9zdn//bnF7/25xe/91eIH/cHN9/3N2f/9wc33/bnB3/3N2f/91eIH/
    +c3Z//3Byef95e4H/c3Z//3l8hv9ucHf/b3F1/3d5f/9vcXX/bnB3/3Byef9zdn//cHN9/25xe/93eX//
    +c3Z//2xvef9ucHf/bnF7/3Byef92eHz/eHl9/25wd/93eoP/c3Z//3l7gf9ucXv/cHJ5/3Byef9wc33/
    +bG95/3Bzff9sb3n/d3qD/3V3ff9ucHf/fn+D/3l7gf9vcXX/bG95/3V3ff91eIH/cHN9/29xdf9qbHP/
    +bG95/25xe/9qbHP/bnB3/25wd/91d33/dXd9/2xvef93eoP/dXiB/3t9g/9zdn//bG95/3V4gf9zdn//
    +c3Z//3N2f/91eIH/bG95/3Bzff91d33/bnB3/29xdf9wcnn/c3V8/2xudf97fYP/bnB3/2ptd/91d33/
    +dXd9/21vc/91d33/bnF7/2xvef9maXP/ZGdx/2Zobv9qbHP/Z2p0/25wd/9qbXf/ZGZs/2Zobv9maXP/
    +YmVu/2dqdP9nanH/Z2p0/2psc/9nanT/am13/2ptd/9nanT/dXd9/2xvef9nanT/Zmlz/25xe/9wcnn/
    +bW9z/25wd/9sbnX/d3l//25wd/9wcnn/bnB3/2xudf9vcXX/cHJ5/3Bzff9qbHP/b3F1/3N1fP9ucHf/
    +cHJ5/25wd/9tb3b/b3F4/25wd/9ucXv/Z2p0/3Bzff9vcXj/cnV+/29xef95e4H/Zmlz/3J1fv9qbXf/
    +b3J8/25wd/9xdH7/cnR9/25xef93eYD/cHJ6/3R2fv90dn7/bG95/3F0ff9ucXr/bnB5/29yfP9nanL/
    +bXB6/21wdv9tb3f/dnh9/3J1fv9tb3b/d3l+/29yfP9xdHv/cHN7/2ptd/9maXP/dHZ8/2xudP9ucHf/
    +bnB0/3N1fP9zdXz/Z2p0/2xudf9sb3n/Zmlz/2tud/9xc3r/aGt1/3V3ff9ucHf/ZWhy/3Fze/9qbXf/
    +bG94/21wd/9zdX3/amx0/21wev9ydHr/a254/2Zpc/9ucXv/bG95/3Byef9ucHf/bnB3/25wd/9sbnX/
    +am13/2xvef92eHz/bnB3/25wd/9ucHf/e32D/3V3ff9sbnX/bG95/3V3ff9sbnX/bG95/2Zpc/9qbXf/
    +cHN9/2Rncf9qbHP/bnF7/2psc/9ucHf/c3V8/25wd/9sbnX/c3V8/25wd/9ucHf/cHN9/3d5f/9ucXv/
    +dXd9/3V3ff9wcnn/bG51/25wd/9tb3P/dXd9/3Bzff95e4H/c3Z//3N2f/9sb3n/eXyG/3l7gf9zdn//
    +bnB3/3N1fP9zdXz/c3Z//3t9g/9+gYr/dXiB/3N2f/9ucXv/bnF7/25xe/9ucXv/bG95/2xvef91eIH/
    +c3Z//3N2f/9wcnn/eXyG/3d6g/9+gIb/c3V8/3N1fP95fIb/cHN9/3Bzff9zdXz/dXiB/3N2f/9ucXv/
    +eXuB/3V4gf9ucHf/cHN9/3V4gf91eIH/e32D/36Ahv91d33/c3V8/25wd/91d33/bnB3/25wd/9ucHf/
    +bnB3/2xudf9wc33/am13/3V3ff9wc33/Z2px/3d6g/9zdn//amxz/2xudf9zdXz/dXd9/3Bzff9qbXf/
    +Z2p0/2xudf9wc33/Z2p0/2xudf9sbnX/c3V8/3Bzff9maXP/dXd9/2dqdP9wc33/bnF7/2dqdP9zdXz/
    +bnF7/2xvef9ucXv/bnF7/2ptd/9sbnX/bnF7/2dqcf9maG7/Z2px/2dqdP9kZ3H/dXd9/2psc/9nanH/
    +bnB3/2xvef9maG7/bnF7/2ptd/9ucXv/Zmlz/2psc/9qbHP/bG95/2xvef9wcnn/cHJ5/2dqdP9qbHP/
    +Z2p0/2Zpc/9wc33/bG51/2ptd/9qbXf/am13/2xudf9sb3n/bG51/3Z4fP91d33/bnB3/2Zpc/9wcnn/
    +cHJ5/21vc/9sbnX/b3F1/3h5ff9ucHf/cHJ5/2xudf9sbnX/bG95/25xe/9ucXv/Zmhu/21vc/9zdXz/
    +bnB3/3N1fP9ucHf/b3F2/2ptd/9sbnX/bnB3/2Zobv9zdXz/bnB3/3N1fP9xc3r/eXuC/2hrcv9ydXz/
    +a211/3R2ff9ucHf/cnV//3V3ff9vcXj/dnh9/3Bzff9xdH7/eHqD/3F0fv9wc3z/cHN8/3Byef90d4D/
    +aWxz/3N2f/9ucXv/bXB6/3d5f/90d3//bG95/3V3ff9sb3n/c3Z//29yfP9wcnn/Z2pz/3h6gP9vcXX/
    +cHJ5/25wd/92eHz/c3V8/21vc/9sbnX/bnF7/2psc/9sbnX/cnR8/2Zpc/9wcnn/Zmlz/2Nmb/90dn3/
    +am13/25xev9vcnz/dnh+/21vc/90dnz/dHZ8/25wd/9maXP/bnF7/2ptd/9ucXv/bnF7/2xvef9ucHf/
    +bG51/2psc/9sbnX/dnh8/25wd/9wcnn/bG51/3l8hv9zdn//Z2p0/2xvef9zdn//bnB3/3Byef9sb3n/
    +bG95/25xe/9qbHP/bG95/3Bzff9sb3n/bnB3/3N2f/93eoP/dXiB/3d6g/9wc33/dXd9/3t9g/9+gIb/
    +dXiB/3d6g/97fYP/c3V8/3Bzff9wc33/bnB3/3N2f/9zdn//eXuB/3Bzff9wcnn/am13/3V4gf91d33/
    +cHJ5/25wd/9sb3n/cHJ5/2xvef91d33/d3l//2xvef9sb3n/am13/2xvef9sbnX/bnB3/25wd/9sb3n/
    +d3qD/3d6g/9zdn//bnF7/3t+h/95e4H/foGK/3N2f/9wc33/eXyG/3N1fP91eIH/d3l//3d6g/97fYP/
    +eXyG/3t9g/95e4H/c3V8/3Bzff91eIH/bnF7/3Bzff93eX//bnB3/3N1fP9wcnn/dXd9/2xudf9tb3P/
    +bG51/2ptd/9nanT/cHN9/2ptd/93eX//d3l//2dqcf95e4H/dXd9/2Zpc/9maG7/bG95/2ptd/9nanT/
    +Zmhu/2Jlbv9nanH/am13/2Jlbv9kZ3H/Zmhu/2ptd/9nanT/ZGdx/25wd/9maXP/Z2p0/2dqdP9kZ3H/
    +bnB3/2Rncf9maG7/Z2p0/2ptd/9kZ3H/ZGdx/2dqdP9nanT/Z2px/2dqcf9nanT/YmVu/3Byef9qbHP/
    +amxz/3N1fP9ucXv/bG51/3Z4fP9ucXv/bG95/2Zpc/9qbHP/amxz/25xe/9sb3n/dnh8/3V3ff9sb3n/
    +am13/2xudf9nanT/bnF7/2psc/9wc33/bG95/2xvef9qbXf/am13/2dqdP91d33/bnF7/2xudf9sbnX/
    +cHJ5/3Byef9sbnX/b3F1/29xdf94eX3/bnB3/3Byef9ucHf/amxz/2ptd/9wc33/c3Z//2ptd/9zdXz/
    +dXiB/3N1fP93eoP/c3V8/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/2xvef9wc33/cHN9/3d6g/9nanT/
    +c3Z+/2xvef94eoD/cHN9/3N2f/94eoD/cHJ5/3V3ff9wc33/bnF7/3d5f/9ucXv/bG95/3N1fP9sbnX/
    +dXd9/2RmbP9ucHf/am13/2psc/94eX3/dXd9/29xdf94eX3/b3F1/3N1fP9sb3n/bW9z/2Zobv94eX3/
    +b3F1/3Byef9wcnn/eHl9/3V3ff9tb3P/bnB3/3N1fP9sbnX/bG95/3N1fP9sbnX/dXd9/3Byef9qbHP/
    +d3l//2ptd/9ucXv/cHN9/3V3ff9nanH/c3V8/25wd/9nanH/YGNs/2dqdP9maXP/am13/25xe/9sb3n/
    +bG51/2psc/9nanT/amxz/3N1fP9qbXf/bG51/2psc/93eoP/bnF7/2Rncf9sbnX/cHN9/2xvef9sb3n/
    +am13/2dqdP9qbXf/Z2p0/2ptd/9sb3n/bG51/25wd/9ucHf/dXd9/2xudf9zdXz/b3F1/2xudf9ucHf/
    +dXd9/2ptd/9zdXz/dXd9/2xudf9qbXf/bG95/2xudf9wc33/cHJ5/3l7gf9sb3n/cHN9/25wd/95e4H/
    +dXiB/25xe/9vcXX/b3F1/25wd/9sbnX/c3Z//3t+h/9ucXv/bnF7/3Bzff9sb3n/bG95/2xudf9wcnn/
    +bnB3/3N2f/9zdn//bnF7/2ptd/91eIH/cHN9/3l7gf9wcnn/bW9z/3V3ff9tb3P/bG95/25wd/9vcXX/
    +dXd9/3N1fP9zdXz/c3V8/25wd/9ucHf/c3V8/29xdf9zdXz/d3l//25wd/9wcnn/cHJ5/3Byef9qbXf/
    +bG51/2xudf9sb3n/am13/3N1fP9qbXf/eHl9/3d5f/9vcXX/f4GH/3d5f/9wcnn/b3F1/3Z4fP92eHz/
    +c3V8/2xudf9nanT/bG51/3N1fP9nanT/am13/2xvef9zdXz/cHJ5/29xdf93eX//dXd9/3N1fP9wcnn/
    +b3F1/3Z4fP9wcnn/bnB3/3Byef9wc33/bnB3/25wd/9zdXz/c3V8/21vc/9sbnX/bG95/2dqdP9zdXz/
    +bG51/2xvef91d33/cHJ5/25wd/93eX//cHJ5/3N1fP9qbHP/bnB3/2xvef91d33/c3Z//3d5f/91d33/
    +c3Z//2xvef9ucHf/bG51/3N1fP9tb3P/dXd9/25wd/9sb3n/cHN9/3Bzff9ucHf/eXuB/3N2f/9zdXz/
    +bnB3/3N1fP9ucHf/bG51/2xudf9sbnX/d3l//2ptd/9sb3n/bG95/2dqdP9sbnX/bnB3/3Byef9nanH/
    +b3F1/3N2f/9wcnn/cHN9/2xvef9vcXX/bnF7/29xdf9wcnn/Zmhu/3N1fP9ucHf/dXd9/3V3ff93eX//
    +Z2p0/3N1fP9qbXf/dXiB/2xvef9sb3n/dnh8/21vc/91d33/bG95/2xvef9wc33/bG51/2psc/9ucXv/
    +Zmlz/25xe/9dYGr/Zmlz/3Byef9qbXf/d3l//3Bzff9ucHf/d3l//25wd/9ucXv/bG95/2xvef9nanT/
    +eHl9/25wd/9ucHf/cHJ5/3Z4fP91d33/bnB3/29xdf9zdXz/am13/2xudf9wc33/amxz/3V3ff9sbnX/
    +amxz/3N1fP9qbXf/bG95/3N1fP93eoP/bG51/3V3ff92eHz/bG51/2Zpc/9wc33/cHN9/2xvef9sb3n/
    +bnF7/2ptd/9qbHP/Zmlz/2dqcf91d33/Z2p0/2xvef9maXP/dXiB/25xe/9maXP/bG95/3N1fP9sb3n/
    +bnF7/2psc/9maXP/am13/2psc/9nanT/cHJ5/2dqdP9qbXf/cHJ5/3Z4fP9wc33/dXd9/29xdf9sb3n/
    +cHN9/3l7gf9wc33/c3Z//3V3ff9sb3n/bG95/25xe/9sb3n/dXd9/3N1fP97fof/bnF7/3Bzff9sb3n/
    +eXuB/3N2f/9ucXv/bnB3/3N1fP9ucXv/bnF7/3N1fP93eoP/bG95/25wd/9ucXv/am13/2ptd/9ucHf/
    +bnB3/2xudf9wc33/cHJ5/25wd/9qbHP/dXd9/3Byef91eIH/am13/2psc/9ucXv/bG51/2psc/9qbHP/
    +Zmlz/25xe/9maXP/bnF7/3N1fP9qbXf/bG51/3Byef9tb3P/c3V8/3l7gf9ucHf/c3Z//3N2f/9wc33/
    +bnB3/3Byef9wcnn/c3Z//3Byef93eX//bG95/3Z4fP95e4H/bG51/3+Bh/91d33/bG51/2ptd/91d33/
    +cHN9/3Bzff9sb3n/Z2p0/2xudf9wc33/bG51/3Byef9qbXf/cHJ5/3Byef9qbXf/dXiB/3Bzff9zdXz/
    +bG95/2xudf9zdXz/cHJ5/3Byef9wcnn/dXd9/3Byef9ucHf/bnB3/2xvef9sb3n/am13/2dqdP9nanT/
    +cHN9/2xudf9qbHP/c3Z//2xvef9nanT/bnF7/2ptd/9ucXv/Z2px/21vc/9sbnX/eHl9/3Bzff9zdn//
    +d3l//3Bzff9ucHf/bG95/25wd/9wc33/bG95/3Bzff9ucHf/cHN9/3N2f/9ucXv/bG51/3d5f/9wcnn/
    +bW9z/21vc/9zdXz/bnB3/2xvef9sbnX/bG51/3V3ff9maXP/Zmlz/2Zpc/9dYGr/amxz/2ptd/9sb3n/
    +Zmlz/2xudf9wcnn/bG51/25wd/9tb3P/am13/2xvef9qbXf/bnF7/2Rncf9wc33/bG51/3N1fP9zdXz/
    +dnh8/2dqcf9zdXz/b3F1/3V3ff9sb3n/bG95/3V3ff9ucHf/dXiB/3Byef9wcnn/c3Z//25xe/9ucHf/
    +c3V8/2ptd/9wc33/Z2p0/3V4gf9zdXz/am13/3t9g/91eIH/dXiB/3t9g/9zdXz/dXiB/3Byef9ucXv/
    +c3V8/36Bif9zdn//dXiB/3N2f/95fIb/eXuB/3N1fP9ucHf/dXd9/2xvef9zdn//d3qD/3Bzff95e4H/
    +bnF7/2xudf93eX//bG95/3N1fP93eX//e32D/29xdf92eHz/dnh8/3Byef9sbnX/dnh8/3N2f/9ucXv/
    +c3V8/3V3ff9wc33/c3Z//3Byef9wcnn/eXyG/3Bzff9wc33/am13/3t9g/9wc33/Z2p0/25xe/91d33/
    +bnF7/3N2f/9ucHf/bG51/25wd/9vcXX/bG51/3N1fP9nanT/Zmlz/2xvef9wc33/bG95/2ptd/9kZ3H/
    +amxz/2psc/9ucHf/Z2px/25xe/9wc33/amxz/21vc/9ucHf/cHJ5/25wd/9zdn//d3qD/2xvef9wc33/
    +bG95/3l7gf91eIH/c3Z//3Byef9wc33/d3qD/3V4gf95fIb/foGK/3V4gf9zdn//dXiB/3V4gf91eIH/
    +c3Z//3V4gf9zdXz/eXuB/3N2f/9ucHf/bG51/3V3ff9zdXz/eXuB/2xudf9vcXX/dXd9/2xvef9sb3n/
    +bG95/2xvef92eHz/bnF7/3d5f/97fYP/bnF7/2xvef9wc33/b3F1/25xe/93eoP/bG95/3Byef9wcnn/
    +cHJ5/2xudf9ucHf/bW9z/3Byef9ucHf/dnh8/3Byef93eX//e36H/25xe/+Bg4r/d3l//25wd/9wcnn/
    +c3V8/3Z4fP91d33/c3Z//2xvef9wcnn/c3Z//2xvef9zdn//bnF7/3V4gf9zdn//cHJ5/3+Bh/93eoP/
    +eXuB/3N2f/9wc33/dXiB/3N2f/9zdn//e32D/3d6g/95e4H/dXiB/3N2f/91eIH/c3Z//2xvef9ucXv/
    +bG95/3l7gf9wc33/c3Z//3l8hv9wc33/b3F1/3Bzff9sb3n/c3V8/2Zpc/9tb3P/cHJ5/3Z4fP92eHz/
    +dXiB/3h5ff9zdXz/bG95/25wd/9vcXX/cHJ5/3Byef91eIH/c3V8/3Bzff9zdn//cHN9/2ptd/91eIH/
    +c3Z//2xvef9wcnn/cHN9/2xvef9ucXv/bG95/2xvef93eX//bnB3/3Byef9zdXz/Zmhu/2psc/9qbXf/
    +bnF7/2Zpc/9qbHP/am13/2Zobv9sbnX/Z2px/2Zpc/9nanT/bG51/2xudf9iZW7/dXd9/25wd/92eHz/
    +c3V8/3V3ff9nanT/bnF7/3Byef90d4H/c3Z//3N2f/94eoD/cnR7/36Ahv90d4D/dHeA/3p8gv92eYL/
    +c3Z+/3Z5gv9vcnz/eXuC/21wev91eIH/bG51/2Jlbv9vcnz/a211/2lrcv9xdHv/aWxz/29yfP9qbHP/
    +aWx2/2Zpcv91d33/aWx2/2xveP9qbXf/d3l//3Byef9ucHf/b3F1/3V3ff9sbnX/bnF7/3N1fP9sbnX/
    +dXd9/2xudf9sbnX/d3h9/3Byef9wcnj/dHd7/3h6gP9sbnX/cHN9/3N1fP9tb3b/bG51/3V3ff9zdXz/
    +bnB3/3N1fP9sb3n/am13/2xudf9nanT/bG51/3Z4fP9sbnX/bnF7/2dqdP93eoP/bnF7/2Zpc/9sbnX/
    +dnh8/2xudf91d33/b3F1/2xvef9ucXv/bnB3/29xdf9wcnn/bG51/2psc/9zdXz/dXd9/3Byef9zdXz/
    +bG51/2xudf9qbXf/c3V8/2xvef9zdXz/dnh8/25wd/9ucHf/cHJ5/3Byef9ucXv/dXd9/3t+h/9sb3n/
    +cHJ5/2ptd/93eX//c3Z//3Bzff9ucHf/bG95/25xe/9wc33/c3Z//3l8hv9zdn//cHN9/3Bzff9wc33/
    +cHN9/3Byef9wcnn/bnB3/3N2f/9ucXv/cHN9/2dqdP91eIH/dXd9/3d5f/9sbnX/bG51/3Bzff9sb3n/
    +am13/2xudf9ucHf/dXd9/3Byef9zdn//d3l//2xudf9vcXX/c3V8/29xdf9ucHf/eHl9/3Byef9ucXv/
    +bnF7/2ptd/9nanT/bG95/2xudf9wcnn/bnB3/3V3ff9sbnX/dXd9/3l7gf9vcXX/gYSN/3d5f/9sb3n/
    +cHJ5/3Z4fP91d33/dnh8/3Byef9maG7/bnB3/3Bzff9wcnn/dXiB/3Byef9wc33/c3Z//3N1fP9/gYf/
    +bnF7/3l7gf9wc33/c3V8/3l8hv93eoP/cHN9/3d6g/9wc33/c3Z//25xe/9ucXv/cHN9/3Bzff9ucXv/
    +cHN9/3Byef93eoP/cHN9/3Bzff93eoP/dXiB/3Bzff91eIH/dXiB/3V4gf9qbXf/cHN9/3Bzff95e4H/
    +c3Z//3l7gf95e4H/d3qD/3Bzff9wc33/dXiB/3d6g/9zdn//d3qD/3N2f/91eIH/c3Z//3Byef9ucHf/
    +d3l//3N2f/9sb3n/bG95/25xe/9sbnX/c3V8/2xudf9ucHf/d3l//2dqdP9zdn//c3Z//2Zpc/9vcXX/
    +bnB3/2xvef9kZ3H/bG51/3N1fP9vcXX/bnB3/25wd/9zdn//cHN9/25xe/9wc33/Zmlz/3d5f/9sb3n/
    +dHeA/3h6gf93eX//am13/3BzfP9sb3n/cnV+/3J0e/91d33/dXh9/29xdv94eoH/bXB3/25weP9xdH3/
    +bnF7/25wd/9wcnr/aWx2/29ye/9laG//aWx1/3J0ff9rbnj/cnV+/21weP9sb3n/dnh//2xvef9ydHv/
    +cXN6/2psdP9naXD/cXN5/2psdP9sbnX/bG95/3d6hP9tcHr/cHN9/2xvef9wc33/bG95/25xe/9ydX7/
    +bXB6/3h6gP9vcXj/bG51/3Z3ff9ydHv/b3F4/3N1e/90dn3/bnB0/3N1e/90dn3/bnF6/25wd/92eHz/
    +c3Z//3Byef9wcnn/c3V8/2xudf9zdXz/bnB3/2xudf94eX3/am13/3Bzff9maXP/c3Z//3Bzff9maXP/
    +bG51/3N1fP9sbnX/dXd9/2xudf9ucHf/bnF7/25wd/9ucHf/cHN9/2xvef9sbnX/c3V8/3h5ff9wcnn/
    +c3V8/21vc/9vcXX/bG51/3l7gf9wc33/d3l//3V4gf9wcnn/bnF7/3Bzff9ucXv/bG95/3h5ff93eX//
    +bW9z/2xudf9nanT/d3l//25xe/9sb3n/amxz/2psc/9qbXf/bG95/2xvef9zdXz/cHJ5/2xudf9sb3n/
    +am13/2xudf9sbnX/am13/2dqdP9ucXv/bG95/2xudf9maXP/dXd9/25xe/95e4H/bG51/25wd/9zdXz/
    +cHJ5/2xvef9qbXf/bG51/3Z4fP9ucHf/dXd9/3d5f/9sbnX/b3F1/3Bzff9tb3P/bnB3/3V3ff9ucXv/
    +cHJ5/25xe/9sbnX/bW9z/2xvef9qbXf/amxz/2ptd/9zdXz/am13/3Z4fP91eIH/bG51/3+Bh/91d33/
    +bW9z/2xudf9wc33/bnF7/3N1fP9wcnn/ZGdx/21vc/9zdXz/bW9z/3Z4fP9sbnX/cHJ5/25wd/9sbnX/
    +eXuB/2ptd/91d33/bG51/2dqcf93eX//am13/2xvef9ucXv/am13/25xe/9qbHP/bG51/2ptd/9sb3n/
    +cHJ5/25wd/9sbnX/dXd9/2xvef9ucHf/d3qD/3Bzff9ucXv/c3Z//25xe/9ucXv/Z2p0/2xvef9ucXv/
    +eXuB/3V4gf93eoP/dnh8/3N1fP9sbnX/bW9z/2xudf9ucHf/bW9z/2xvef9sbnX/bG95/2xudf9maXP/
    +YmVu/2xvef9nanT/Zmlz/2xudf9sb3n/am13/25xe/9qbHP/bG51/3V3ff9qbHP/bG95/3Bzff9maXP/
    +am13/21vef9tcHr/amxz/2psc/9zdXz/bG51/2xudf9vcXX/c3V8/3V3ff9sb3n/bnF7/2dqdP91eIH/
    +bG95/3R2e/92eHz/dHZ9/2ptdv9ucHn/bG93/3Bze/9ucXn/c3Z+/3Fzev9sbnb/dnmC/3Byev9ydX7/
    +dnh+/3N1fv91d33/d3l//25wef91eID/a212/3Bzff9vcnz/bW94/3V3f/9xdHz/bnF7/3V3gP9wcnv/
    +cXN6/3R2fP9tcHr/bnB5/3N1fv9tb3j/bnB5/3J0ef93eoH/bW94/3V3ff9sbnX/cHJ5/25wd/9wcnn/
    +dHZ8/21wef93eX7/bnF5/2tueP9xdHz/b3J6/21vdv9ucXn/c3V9/2xvdv9tcHj/bnF7/29yev9sb3n/
    +dXd9/3V3ff9ucXv/dXiB/3V4gf9sb3n/cHN9/2xvef9qbXf/dXd9/3N1fP91d33/Zmhu/3V3ff9ucXv/
    +ZGdx/2psc/9wc33/bG51/25wd/9nanH/Z2p0/2psc/9maG7/Zmhu/2xvef9nanT/Zmlz/3Byef92eHz/
    +c3V8/3Byef9sb3n/bnB3/25wd/95fIb/cHN9/3l7gf91eIH/cHJ5/3N2f/91eIH/eXyG/3V4gf9+gIb/
    +foGK/3N1fP9wc33/cHN9/36Biv97fYP/c3Z//3Bzff9zdn//c3Z//3N2f/9zdXz/dnh8/25wd/9ucHf/
    +cHJ5/21vc/9vcXX/b3F1/2xvef9sb3n/cHN9/3Bzff9ucHf/Z2p0/3d6g/91eIH/foGK/2ptd/9ucXv/
    +dnh8/3V3ff9sb3n/bG95/3Byef91eIH/bnF7/3V4gf93eoP/bG95/3Bzff91eIH/bnF7/25xe/94eX3/
    +cHJ5/3N2f/9wc33/cHJ5/3Byef9wc33/bnB3/3Byef9ucXv/eXuB/25wd/91eIH/dXiB/2xvef9/gYf/
    +eHl9/29xdf9sbnX/cHN9/25xe/91d33/bnF7/2BjbP9qbHP/am13/2Zobv9qbXf/Zmhu/2Zpc/9nanH/
    +Z2px/3V3ff9qbHP/bG95/2xudf9nanH/cHJ5/2xvef9sb3n/bG95/2xudf9ucHf/b3F1/29xdf9ucXv/
    +bnF7/3V4gf9ucXv/bnB3/25xe/9wc33/cHJ5/3l7gf9wc33/c3Z//3V4gf9zdn//bnF7/2xvef9zdn//
    +d3qD/3t9g/93eoP/eXyG/3l7gf93eoP/dXiB/3N1fP9wcnn/c3Z//3Bzff91eIH/cHN9/3l7gf9wc33/
    +c3V8/25xe/97fYP/eXuB/3Bzff9wc33/cHN9/25xe/9sb3n/am13/29xdf92eHz/am13/25xe/9zdn//
    +Zmlz/2xvef9vcnz/b3J7/2dqdP9qbXf/c3Z//25xe/9sb3n/bnF7/3V4gf91eIH/cHN9/3N2f/9sb3n/
    +eXuB/29ye/93eYD/eXuB/3l7gf9wc3v/dHd+/3V3fv92eH//c3aA/3t9hP90dn3/bnF6/3V3gP9vcnz/
    +dnmD/3d6hP90d3z/d3mA/3x9gv91eH//e3yA/25xe/91d4D/dHd//29yfP92eYL/cnV+/29yef93eoL/
    +dXiB/3F0ff93eX//bG94/2xueP9vcXj/bG94/21wef9ydHv/dnh8/29xef9wcnn/bG51/3N1fP9qbHP/
    +b3F3/3J0e/9rbnj/eHp//3Byef9sb3n/dXiB/3V4gf9ydHv/b3F5/29yfP9ucHj/cXN6/29yef9ydX3/
    +bnB3/3d5f/91eIH/bnF7/3V3ff91d33/bnB3/3N1fP9ucHf/bG51/3V3ff9zdXz/dnh8/2dqcf92eHz/
    +dXd9/2dqdP9sb3n/dXd9/21vc/91d33/am13/2xudf9tb3P/bW9z/2xudf9wcnn/bG51/2psc/9zdXz/
    +c3V8/3N1fP9wcnn/bG51/2xudf9vcXX/eXyG/25xe/91eIH/bnF7/2xvef9ucXv/bnF7/25xe/9wcnn/
    +dXd9/3V4gf9sb3n/cHJ5/2psc/91d33/c3V8/2xudf9ucHf/bG95/2ptd/94eX3/bnB3/3V3ff9ucHf/
    +cHJ5/3Byef9qbXf/am13/2xudf9qbHP/bG51/2xvef9ucXv/bG51/2dqdP91d33/bG95/3V4gf9maXP/
    +bG95/3V3ff9zdXz/bG51/2psc/9sbnX/bnF7/2ptd/9wc33/d3l//2xudf9wcnn/dXd9/25wd/9ucXv/
    +dXd9/3V4gf91eIH/c3Z//3Byef9sb3n/bnB3/25wd/9sbnX/bG51/3V3ff9ucHf/d3qD/3V4gf9ucHf/
    +f4GH/3V4gf9tb3P/b3F1/3V3ff9ucXv/dXiB/3Bzff9nanT/bG95/25xe/9ucHf/dXd9/21vc/91d33/
    +bnB3/25wd/93eoP/bnB3/3N1fP9ucHf/bW9z/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/25wd/9ucHf/
    +bnB3/29xdf91d33/bnB3/21vc/9sbnX/am13/2psc/9wc33/bG95/2ptd/9ucXv/Z2p0/2psc/9iZW7/
    +Zmlz/2ptd/9nanT/Zmhu/2ptd/9maXP/Zmlz/2dqcf9maG7/ZGdx/2Rncf9kZ3H/Zmlz/2Jlbv9nanT/
    +YmVu/2BjbP9kZ3H/bG95/2xvef9gY2z/Zmhu/2RmbP9nanT/ZGdx/11gav9kZ3H/Z2p0/2Zpc/9nanT/
    +am13/11gav9maXP/bG95/2xveP9oa3T/Zmlz/2ptd/9qbXf/bG51/21vdv9wc3z/bG95/2ptd/9qbXf/
    +Zmlz/3N1fP9sbnb/cXN5/3F0ff90d3//bnB1/25wd/9vcXn/bXB6/25weP9wc33/bW92/2psc/9vcnv/
    +am13/29yfP9ucXv/bG51/25wd/9ydHv/bnF6/3d6gv9ydHv/c3Z//3V4gf91eIH/e32D/3V4gf90dn3/
    +e32D/3d6g/9xdH7/e32G/3d5ff91eIH/dnh9/3V4gf90dn3/eXuA/3x/h/94eoH/enyC/3l7gf99foH/
    +c3Z//3N2f/94eoD/cXN5/3p7gP9xc3f/bG95/3V3ff91d33/bW92/21vdv9tb3f/aGt1/2ttdP9oa3X/
    +bG95/2xvef91d33/c3Z//3Byef9wc33/dXd9/2ptd/9wc33/bG51/2xudf91d33/cHJ5/3Z4fP9nanH/
    +dnh8/3N2f/9sbnX/bW9z/3N1fP9ucHf/d3l//25wd/9ucHf/b3F1/21vc/9sbnX/c3V8/21vc/9qbXf/
    +cHN9/3V3ff9zdXz/c3V8/21vc/9sbnX/bG51/3N2f/9qbXf/bnF7/2dqdP9maXP/Z2px/2dqcf9maXP/
    +ZGdx/2xvef9wcnn/amxz/2psc/9maXP/c3V8/25xe/9sbnX/am13/2psc/9sbnX/c3V8/2xudf9sb3n/
    +bG51/2ptd/9qbXf/am13/2xvef9sbnX/bG51/2xudf9ucXv/cHN9/2ptd/9ucHf/d3l//25wd/93eX//
    +amxz/25wd/92eHz/dXd9/2xudf9qbXf/bG51/3V3ff9sb3n/bG95/3d5f/9qbXf/bG95/3Bzff9sbnX/
    +cHJ5/3V3ff9zdn//c3Z//3Bzff9ucHf/bG95/25wd/9sb3n/bnB3/2xvef91d33/bnB3/3l8hv93eX//
    +bW9z/35/g/93eX//bnB3/2xudf9zdXz/bnB3/3V3ff9wcnn/Zmlz/29xdf9zdXz/bnB3/3Z4fP9tb3P/
    +c3V8/3N1fP9vcXX/e32D/25wd/9wcnn/bnF7/2xudf9zdXz/am13/2xvef9qbXf/am13/2ptd/9tb3P/
    +bG51/2xudf9vcXX/c3Z//25xe/9ucHf/bG95/2xvef9ucHf/dnh8/3Byef9ucHf/cHJ5/25wd/9ucHf/
    +amxz/3Byef9zdn//dXiB/3Bzff97fYP/c3Z//3V4gf9sb3n/bnB3/29xdf9ucHf/bG51/3Byef9qbXf/
    +c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/ZGdx/2ptd/9sbnX/c3V8/2xudf9kZ3H/bG51/25xe/9nanT/
    +bG95/2xvef9iZW7/am13/25xef9vcnr/am13/2dqdP9ucHf/bG51/21vc/9tb3T/cnV8/25xev9qbXf/
    +bnB3/25wd/93eH3/bW92/3Byef9vcXr/bG95/2dqc/9naXP/Zmlz/2Nmb/9nanH/aGp0/2Vocf9maXP/
    +bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/bW9z/2ptd/9ucXv/am13/25xe/9sb3n/
    +bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/bnB3/29xef91d33/bG50/2xveP9qbXf/
    +cHN9/2psc/9sbnb/bG95/2xud/92eH7/bG95/2xudf9zdXz/bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/
    +bnB3/3d5f/9sbnX/dXd9/3Byef9ucHf/c3V8/3V3ff9ucHf/dXd9/2xvef9qbXf/c3Z//25xe/91d33/
    +am13/3l7gf93eX//cHJ5/3N1fP91eIH/cHJ5/3t+h/9wcnn/bG95/29xdf9ucHf/bG51/3V3ff9tb3P/
    +bG51/3V3ff92eHz/c3V8/3Byef9sbnX/amxz/2xudf95e4H/bG51/3Z4fP9ucHf/bG51/3Byef9ucHf/
    +cHJ5/25wd/91d33/eHl9/29xdf9sb3n/bG95/3V4gf93eX//bnF7/3d6g/9zdn//c3Z//3l7gf9zdn//
    +dXiB/3V3ff95e4H/e32D/3Z4fP95e4H/dXd9/3N2f/91eIH/dXiB/3d6g/9zdXz/bnF7/36Ahv93eoP/
    +foGK/3V3ff9zdn//d3qD/3t9g/9wc33/bnB3/2xvef9zdXz/cHN9/3Bzff91eIH/bnB3/25wd/9zdXz/
    +bG51/2xudf9zdXz/dXd9/3Bzff91eIH/cHJ5/25xe/9wcnn/bnB3/2xvef9ucHf/dnh8/25wd/95e4H/
    +d3l//3Byef9+f4P/dXd9/25wd/9sbnX/c3V8/2xudf91d33/bG95/2Rncf9qbHP/am13/2dqcf9ucXv/
    +am13/2ptd/9qbXf/Z2px/3N2f/9sbnX/bnF7/25xe/9sbnX/c3V8/2xvef9sb3n/bG51/29xdf9sb3n/
    +bnB3/2xvef9ucXv/bnB3/3N2f/9sb3n/bnB3/25wd/9wcnn/b3F1/3Z4fP9ucXv/bG95/25xe/9wc33/
    +bnF7/2xvef9zdn//c3Z//3V4gf9wc33/eXuB/3N2f/9zdn//bnB3/25wd/9tb3P/bnB3/25wd/9zdXz/
    +bG51/3N1fP9qbXf/Z2px/25wd/92eHz/bnF7/2dqdP9sbnX/bnB3/3Bzff9ucHf/Z2px/21vc/9sb3n/
    +Z2p0/2ptd/9sb3n/ZGZs/2xudf9ucXv/b3J6/2ptd/9qbXf/bG95/2xvef9qbHP/bW9z/3J1fP9wcnz/
    +am13/25wd/9ucHf/dXd8/2xudf9vcnj/bnF7/29yfP9nanT/ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/
    +am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/
    +bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/bnB3/2xudf9ydHv/dnh+/25wd/9vcXn/
    +bnB3/3Z4fP9sbnX/bnB3/29xef9tb3X/dnh9/3Byef9vcXX/dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/
    +bG51/2xudf9wc33/b3F1/3Z4fP91d33/bG51/25xe/9wc33/bG51/3V3ff9sbnX/amxz/3N1fP9ucHf/
    +c3V8/2Zobv9wc33/cHN9/2ptd/9vcXX/c3V8/29xdf92eHz/bW9z/2ptd/9sbnX/bG95/2dqdP9wc33/
    +bG51/2xudf9zdXz/dXd9/3Bzff9wcnn/bG51/21vc/9qbHP/c3Z//2xudf9zdXz/bnB3/2xudf9zdXz/
    +bW9z/2ptd/9tb3P/bnF7/3Z4fP9ucHf/bnB3/2xvef91eIH/dXd9/2xvef9zdn//bnB3/2xvef91d33/
    +bG95/25wd/9ucHf/c3Z//3N2f/9ucXv/cHJ5/25xe/9ucHf/bnF7/3N2f/9zdn//bnB3/2dqdP91eIH/
    +bnF7/3d5f/9sb3n/b3F1/3Bzff93eX//b3F1/25wd/9qbXf/c3V8/3Byef9ucHf/eHl9/25wd/9wcnn/
    +cHJ5/2xvef9wcnn/c3Z//3d5f/9qbHP/Z2p0/2dqcf9sbnX/Z2px/2dqdP9nanT/bG51/3N1fP9qbXf/
    +dXiB/3V3ff9sb3n/e32D/3V3ff9qbXf/am13/3Bzff9qbXf/dnh8/2ptd/9kZ3H/bG51/3Z4fP9ucHf/
    +dnh8/3Byef9wc33/dXiB/25xe/97fof/bnF7/3Bzff9wc33/bnF7/3d5f/9ucXv/cHJ5/25wd/9wcnn/
    +bnF7/25wd/9ucHf/cHN9/25xe/9zdn//cHN9/3N1fP9ucXv/bG95/25wd/93eX//bG95/3Byef9qbXf/
    +bG51/25xe/9tb3P/dXd9/25wd/9ucXv/bnB3/3h5ff9wcnn/dXd9/2xudf9qbXf/bG51/2ptd/9qbHP/
    +bG95/2Rncf9ucXv/ZGdx/2Jlbv9kZ3H/c3V8/25xe/9qbXf/bG51/25wd/9zdXz/c3V8/2Zobv9tb3P/
    +bnB3/2xudf9ucHf/bG95/2RmbP9qbXf/bW93/25xef9rbnf/am13/25wd/9zdXz/bnB3/25wd/91d3z/
    +dXd7/25wd/9tb3P/bW9z/3N1e/9sb3n/cnR6/3J0e/9xc3r/bG51/2psc/9ucHf/bG95/3Bzff91d33/
    +bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn//bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/
    +dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/bnB3/2xvef9tb3n/dHZ8/3h6g/9tb3j/
    +cHN8/25wd/94eX3/Z2px/25weP9sbnb/cHJ5/3h6gf91eIH/cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/
    +cHJ5/25xe/9ucHf/d3qD/3Byef91d33/cHN9/3Byef9wc33/dXd9/2xvef91d33/cHJ5/2dqdP93eX//
    +bnF7/3h5ff9nanH/dXd9/3V3ff9wcnn/b3F1/3N1fP9ucHf/d3l//21vc/9sbnX/bG51/25wd/9nanT/
    +bnF7/2xudf9qbHP/dXd9/3V3ff9wc33/bnF7/2xudf9qbXf/am13/3V3ff9wcnn/dXd9/25wd/9qbXf/
    +cHN9/25wd/9ucHf/bW9z/25xe/95e4H/bnB3/25xe/9ucHf/eXuB/3V4gf9ucXv/dXd9/25wd/9ucHf/
    +c3Z//25wd/9ucHf/bG95/3Byef9ucXv/Z2px/25wd/9vcXX/b3F1/29xdf91d33/bnF7/2ptd/9kZmz/
    +bnF7/2xudf91d33/Z2p0/2psc/9ucXv/c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/bG51/3N1fP9maXP/
    +bnF7/3Bzff9sbnX/amxz/2xvef9wc33/bnB3/3Byef9sb3n/c3Z//2xvef9sb3n/bG95/2xvef9zdn//
    +b3F1/3l7gf93eX//c3V8/36Ahv93eX//bG95/2xvef95e4H/bnF7/3V4gf9ucHf/Z2px/25xe/93eX//
    +bnF7/3d5f/9ucXv/c3V8/3Byef9tb3P/eXuB/2xudf9ucHf/cHJ5/25wd/9zdXz/bnB3/25wd/9sbnX/
    +am13/2psc/9nanT/amxz/2ptd/9sbnX/c3V8/21vc/9qbHP/am13/2xvef9qbXf/d3l//2xudf9sb3n/
    +am13/2ptd/9wc33/am13/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9vcXX/b3F1/21vc/9tb3P/
    +am13/25xe/9maXP/bG95/2Zpc/9kZ3H/Z2p0/3N1fP9sb3n/Zmlz/2xvef9qbXf/c3V8/2xvef9maXP/
    +bG51/25xe/9vcXX/bnB3/29xdf9nanH/bW9z/2ttdP9sb3n/bG92/2xudf9tb3P/c3V8/2xudf9ucHf/
    +dHZ9/29xef9tb3P/bG51/2psc/9zdXz/a254/29xev9ydHv/b3J7/21vc/9nanH/bG51/2dqdP9qbXf/
    +bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/am13/2psc/9sb3n/bG51/2xvef9wc33/
    +am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/c3Z//25wd/9qbXf/Z2p0/29yfP94eoP/
    +b3F4/3V3ff9ucHf/dXd9/2Zpc/9sb3n/am13/2xud/90dn3/cHJ6/2xudf94eX3/cHJ5/2xudf9qbXf/
    +am13/2xudf9sbnX/am13/3N1fP9sbnX/dXd9/25wd/9tb3P/cHJ5/25xe/9qbHP/c3V8/21vc/9qbHP/
    +dnh8/3Bzff91eIH/Z2px/25xe/9zdn//bnB3/25wd/9wc33/bG95/3d5f/9vcXX/bnF7/3N1fP9zdn//
    +am13/3N2f/9zdn//bnB3/3d5f/93eoP/dXiB/3Bzff9wc33/bG95/2xvef91eIH/cHJ5/3N2f/9ucXv/
    +b3F1/3V3ff9sb3n/cHJ5/29xdf9wcnn/d3l//25wd/9vcXX/bG51/3V4gf91eIH/cHJ5/3V4gf9wcnn/
    +cHN9/3d5f/9ucHf/cHJ5/25wd/9sb3n/cHJ5/2psc/9ucHf/cHJ5/29xdf9sbnX/dnh8/25wd/9sbnX/
    +Zmhu/25wd/9tb3P/dXd9/2ptd/9sbnX/bnF7/2xvef9kZ3H/Z2p0/2Zpc/9sb3n/Z2p0/2dqdP9wc33/
    +Z2p0/3Bzff9wc33/am13/2xudf9ucXv/c3V8/25xe/9zdXz/bG51/3Byef9ucHf/bnB3/25wd/9vcXX/
    +dXd9/2xudf94eX3/dXd9/3Byef93eoP/c3V8/2xudf9sbnX/eHl9/3Byef91d33/amxz/2Jkav9sbnX/
    +bnF7/2psc/9wcnn/Z2px/2Zpc/9maXP/ZGdx/3Bzff9qbHP/amxz/2xvef9qbXf/am13/2ptd/9qbXf/
    +bG51/2psc/9sbnX/bG51/2dqdP9qbXf/am13/25xe/9qbHP/bG51/2ptd/9wc33/am13/3N2f/9qbXf/
    +cHN9/2ptd/9ucHf/dXd9/25wd/91d33/bnB3/3Byef9wcnn/cHJ5/21vc/9ucXv/bG51/25wd/9qbXf/
    +am13/2ptd/9wc33/Z2p0/25xe/9qbHP/Z2px/2xvef93eX//c3Z//2xvef9ucXv/bnB3/3Z4fP9wcnn/
    +amxz/2xudf9zdn//bnB3/2xvef9ucXv/Zmlz/25xe/9rbXT/b3J6/29xdv9ucHf/bnB3/3Bzff9sb3n/
    +bnB3/3Z4fv9ucXr/b3F1/25wd/9tb3P/dnh+/2xvdv9tcHr/c3V7/29yfP9qbHP/YmVu/2xudf9qbXf/
    +bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/cHJ5/25xe/9wcnn/d3l//29xdf91eIH/
    +dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/cHN9/3V4gf9ucXv/bG95/2ptd/9wc3z/
    +dnh//3Byef91eIH/c3Z//3t+h/9wc33/d3mC/3Z4f/9ydHn/dHZ+/3BzfP9sbnb/cHN9/3Byef9tb3P/
    +bG95/2xudf9vcXX/bnB3/2xvef9zdn//d3l//3l7gf93eoP/cHN9/3d6g/93eoP/bnB3/3d5f/9zdXz/
    +cHN9/3t9g/9zdn//dXiB/2Zobv9ucHf/dXd9/2xvef9ucHf/c3Z//2xvef93eX//b3F1/25wd/9tb3P/
    +cHJ5/2dqcf9ucXv/c3V8/2xvef91d33/eXyG/3d6g/91eIH/c3Z//25wd/9qbXf/eXuB/3Bzff9zdn//
    +dXiB/3Bzff95fIb/dXd9/3l7gf91d33/eXuB/3+Bh/9zdn//dXiB/3Z4fP+Bg4r/f4GH/3d5f/99foH/
    +dXd9/3d5f/9+f4P/eHl9/3h5ff93eX//d3l//3l8hv9ucXv/dXiB/3d6g/9zdXz/c3V8/3t9g/93eoP/
    +c3Z//2xvef9zdn//dXiB/3l8hv9wc33/cHN9/25xe/93eX//bnB3/25wd/9sbnX/cHN9/25wd/9sb3n/
    +cHN9/2xudf91d33/dXd9/3N1fP9vcXX/cHJ5/3h5ff9wcnn/dXd9/25xe/9zdn//cHN9/25wd/9wcnn/
    +c3V8/3V4gf9zdn//e36H/3t+h/95fIb/f4GH/3t+h/9wc33/dXd9/3+Bh/97fYP/foGK/3d6g/9ucXv/
    +dXiB/3l8hv9zdXz/eXuB/3Bzff9ucXv/bG95/25wd/95fIb/bnF7/25xe/9wc33/bnF7/3Bzff9wcnn/
    +bnF7/3N1fP9wcnn/bnF7/2xvef9ucHf/bW9z/25wd/9zdXz/bnB3/2xvef9ucXv/d3l//25xe/93eoP/
    +bnF7/3N2f/9wc33/bG95/3V3ff9sb3n/dnh8/25wd/9zdXz/bnB3/25xe/9ucHf/cHN9/2xudf9sbnX/
    +bW9z/2ptd/9tb3P/cHN9/2ptd/9ucHf/Z2p0/2Zpc/9nanH/dXd9/3Byef9nanH/bG95/2xudf9wc33/
    +am13/2dqdP9sbnX/bnF7/2ptd/9sb3n/bG95/2BjbP9nanT/amxz/2xvef9rbXX/bG51/2dqcf9nanT/
    +ZGdx/2Zobv9qbXf/Zmlz/2Jlbv9nanH/ZGdx/25wd/9sb3j/bW92/3N1ef9tb3b/bnB3/2dqdP9ucHf/
    +bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn//am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/
    +c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/c3V8/2psc/9wcnn/am13/2dqdP9qbHP/
    +bnB3/3R3fv9rbnX/bnB3/21vdf91eIH/Z2p0/2xvef9sb3n/bG92/3R2ff9wc33/bG95/3Bzff9zdn//
    +cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/2xudf9zdn//c3Z//2xvef9zdXz/dXd9/2xvef95e4H/
    +cHJ5/25wd/91eIH/bnF7/3d6g/9maG7/bG95/3V3ff9sb3n/bnF7/3d6g/9wc33/eXuB/25wd/9ucHf/
    +bW9z/3N1fP9qbHP/bnF7/2xvef9nanT/c3V8/3V3ff9qbXf/bG51/2xvef9qbHP/ZGdx/3N1fP9qbXf/
    +cHJ5/25wd/9tb3P/cHJ5/2xudf9qbXf/amxz/2xvef93eX//Z2px/21vc/9sbnX/d3l//3N1fP9ucHf/
    +dnh8/2xvef9ucHf/eHl9/29xdf9qbXf/amxz/25wd/9wcnn/bnB3/29xdf9tb3P/am13/2xudf9zdXz/
    +bnF7/2ptd/9nanH/cHN9/2psc/9wc33/bG51/2xudf9sb3n/c3V8/2Rncf9nanH/YmVu/25xe/9nanT/
    +bG51/3Bzff9qbXf/bG95/3Bzff9sb3n/bG51/25xe/93eX//cHN9/3d5f/9ucXv/c3Z//3Bzff9ucHf/
    +bnB3/2xvef91d33/b3F1/3Z4fP94eX3/c3V8/3l7gf91d33/bG51/2dqdP93eX//bnB3/3l7gf9wcnn/
    +Z2px/29xdf94eX3/bnB3/3l7gf9ucHf/bG95/3Bzff9ucXv/d3qD/3N2f/93eoP/e32D/3d5f/9+f4P/
    +d3l//3d5f/97fYP/ent//3t+h/95e4H/eXuB/3l7gf97fYP/e32D/3V4gf93eX//fX6B/3+Bh/93eX//
    +f4KM/3d6g/93eoP/cHN9/2xvef91d33/bnB3/3V3ff9qbXf/bG95/2ptd/9ucXv/amxz/2xvef9qbHP/
    +amxz/2dqcf9nanH/Zmhu/2dqdP9nanH/bG51/2Rncf9dYGr/XWBq/2xvef9nanT/YGNs/2Zpc/9sb3n/
    +bnF7/25xe/9qbXf/bG51/2xudf9ucHf/dXd9/3V3ff9maG7/bG51/3N1fP90dn7/cXN5/25wd/9vcXX/
    +bnF7/2xvef9vcXX/dXd9/25xe/9qbXf/bG95/25wd/93eH3/c3V8/3N1e/93eX//c3Z//25xe/9nanT/
    +bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/
    +bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/
    +bG51/25xe/90d37/cHN6/3V3gP9wc33/foGK/3N1fP91eIH/cXR9/21wev9ydX3/cHN8/2ptd/9sb3n/
    +bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9zdn//dXiB/3l7gf9wc33/c3Z//3d5f/9qbHP/
    +d3l//29xdf9qbHP/c3V8/29xdf93eX//Z2px/25wd/94eX3/bnB3/3Byef91d33/cHJ5/3d5f/9sb3n/
    +bG95/25wd/9ucHf/Z2p0/3Bzff9sb3n/bW9z/3N1fP91d33/bG95/2ptd/9ucXv/bW9z/2Zpc/91d33/
    +bG95/3Bzff9qbXf/bG51/2xvef9qbHP/bG51/2psc/9qbXf/dXd9/2Rncf9qbHP/Zmlz/3Bzff9zdXz/
    +Zmlz/3V3ff9qbHP/amxz/3V3ff9sbnX/am13/2dqdP9sb3n/bG95/2ptd/9qbXf/bW9z/29xdf9ucHf/
    +eXuB/3Bzff9sb3n/am13/3Bzff9ucHf/eHl9/25xe/9wc33/d3qD/3t9g/9ucHf/bnB3/2ptd/93eoP/
    +c3Z//3N1fP95e4H/c3V8/3N2f/91eIH/eXuB/3N1fP9zdn//d3qD/2ptd/9wc33/bG51/2ptd/9nanT/
    +Zmlz/2Zpc/9iZW7/bG95/2psc/9wc33/dXd9/2xvef93eoP/bnF7/2ptd/9sbnX/dXd9/2ptd/95e4H/
    +bnF7/2dqdP9sb3n/eHl9/29xdf93eX//bnB3/25xe/9ucXv/bnB3/3l7gf9ucXv/c3Z//3V4gf9zdXz/
    +dXiB/3Bzff9wcnn/bnB3/3Byef91eIH/cHJ5/25wd/9sb3n/bG95/3Bzff9ucHf/bW9z/3V3ff94eX3/
    +cHJ5/3l7gf9wcnn/bG95/25xe/9qbHP/c3V8/2ptd/9wc33/bW9z/3Byef9ucHf/c3V8/29xdf91d33/
    +bG95/25xe/9ucHf/bG95/3Byef9wc33/bnB3/25xe/9zdXz/bG95/3N2f/97fof/e32D/25xe/93eoP/
    +eXyG/3V4gf93eoP/cHJ5/25xe/9zdXz/c3V8/3Bzff9zdn//ZGdx/25wd/9tb3T/cXN6/3Fzev9ucXr/
    +bnB3/2xvef9sb3n/b3F1/3d5f/9ucHf/bW9z/25wd/9ucHf/d3l//3J0ff9xdHv/cnR7/29xeP9ucHf/
    +Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/
    +bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/
    +bG51/2psc/9vcXn/c3V7/25wdf9xc3r/bW9z/3d5f/9qbXf/am13/2ttdP9oa3X/c3Z9/3V3ff9sb3n/
    +bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/am13/2xvef9sb3n/Z2px/2Zpc/9qbXf/
    +XWBq/3Byef9maXP/XWBq/2xvef9maG7/c3V8/2Jlbv9qbXf/dXd9/2dqdP9ucXv/c3V8/2xudf9zdXz/
    +bG51/2xudf9vcXX/cHJ5/29xdf9zdn//c3Z//3Bzff91eIH/eXyG/3V4gf9wc33/cHN9/25wd/9qbXf/
    +d3l//25xe/9wcnn/bnB3/21vc/9zdXz/bG51/2ptd/9qbHP/bG95/3V3ff9iZW7/bG51/2Rncf9sb3n/
    +cHJ5/2Jlbv9qbXf/Z2px/2Zobv9ucHf/Zmlz/2Rncf9kZ3H/Z2p0/2xudf9qbHP/bG51/2dqdP9sbnX/
    +am13/3V3ff9ucXv/bnB3/2xvef9zdn//bG95/3h5ff9ucHf/cHJ5/3V3ff94eX3/bG51/2xudf9nanT/
    +cHN9/25wd/9tb3P/bnF7/2ptd/9sb3n/bnF7/3Bzff9qbXf/bnF7/3d5f/9ucHf/c3Z//25wd/9ucXv/
    +bnB3/2xvef9ucHf/am13/3d6g/9zdXz/eXuB/3t9g/91eIH/eXyG/3N2f/9ucHf/bG95/3l7gf9wcnn/
    +d3qD/25xe/9nanT/bnB3/3l7gf9wcnn/eXyG/3Byef9ucXv/cHN9/25wd/93eoP/bnB3/25wd/9wc33/
    +bnB3/3Z4fP9vcXX/bnB3/2xvef9ucHf/cHN9/2xvef9sb3n/bnB3/25wd/9zdXz/b3F1/29xdf91d33/
    +dXd9/25wd/95e4H/cHJ5/2xvef9ucXv/Z2p0/3N1fP9qbXf/bG95/2psc/9sb3n/bG51/3Bzff9qbHP/
    +cHN9/2ptd/9sb3n/amxz/2dqcf9qbHP/Z2p0/2Zobv9nanH/Z2px/2Rncf9maXP/c3V8/25xe/9maG7/
    +c3V8/25wd/9sbnX/dnh8/2ptd/9sb3n/bnB3/25wd/9zdXz/dXd9/2dqcf9wcnn/bW9z/29xeP9sb3n/
    +bXB6/2xvef9sb3n/bnB3/3Byef93eX//cHJ5/2xudf9ucHf/am13/3N1fP9sb3n/cXN6/3N1ff9vcXv/
    +c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/
    +cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/
    +cHJ5/2xudf9ucHf/b3F4/3N1ev9pbHP/a253/2Vocv9wcnn/ZGdx/2Vocv9laHL/YmVv/3J0fP9zdoD/
    +am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/c3V8/2xvef9wc33/c3V8/21vc/91d33/
    +dXd9/2psc/91eIH/bnB3/2Zobv91d33/bnB3/3d5f/9maXP/cHJ5/3h5ff9sbnX/c3V8/3Z4fP9sb3n/
    +eHl9/25wd/9tb3P/bW9z/3Byef9qbHP/cHJ5/25wd/9sbnX/bG95/3N1fP9ucXv/bG95/2ptd/9sbnX/
    +Z2p0/3d5f/9qbXf/cHJ5/3Byef9ucHf/c3V8/2ptd/9wcnn/b3F1/25wd/92eHz/Z2px/29xdf9sbnX/
    +cHJ5/3Z4fP9sbnX/dXiB/25xe/9zdn//e36H/3Byef9wc33/c3V8/25xe/9ucXv/cHJ5/25xe/9sb3n/
    +bnB3/2xvef93eX//c3V8/25xe/9wcnn/dXiB/2xvef93eX//bnB3/25xe/9ucXv/d3qD/25wd/9qbXf/
    +am13/3N2f/9ucHf/bnB3/3Bzff9sb3n/c3Z//3N2f/93eX//bG95/3N1fP91eIH/bnF7/3V4gf9ucXv/
    +cHN9/25xe/9wcnn/cHJ5/2ptd/9zdn//bnB3/3N2f/92eHz/cHN9/3t9g/9wcnn/bnB3/25wd/94eX3/
    +bnB3/3d5f/9wcnn/Zmhu/25wd/92eHz/bnB3/3l8hv9wcnn/cHN9/3Bzff9zdXz/d3qD/3N2f/91eIH/
    +dXiB/25wd/94eX3/bnB3/29xdf9sbnX/bnB3/3Byef9vcXX/bG51/21vc/9sbnX/cHJ5/2xudf9tb3P/
    +cHN9/3Bzff9sbnX/bnB3/2ptd/9qbXf/bG95/2Rncf9qbXf/ZGdx/2xvef9qbXf/cHN9/2ptd/91d33/
    +am13/3N1fP9ucXv/cHJ5/25wd/9ucHf/cHJ5/25xe/9qbXf/bnB3/25wd/9sb3n/bnB3/3V3ff91d33/
    +Z2px/3N1fP9ucXv/bG95/3V4gf9wcnn/bnF7/2ptd/9ucXv/cHN9/3N2f/9nanT/cHN9/2hrcv9qbXf/
    +bG52/3Fzev9sbnX/bnB3/21vc/9tb3P/eHqA/2xudf9sbnX/bnB3/25wd/92eHz/bXB6/3Byef9ydHr/
    +cXN5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/cHN9/3Byef9wc33/c3Z//25xe/9ucHf/
    +bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn//d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/
    +d3qD/3d6g/9wc33/c3V8/3N1fP93eoP/b3J6/3J0fP9rbnj/d3l//25wd/9wcnn/bW90/2xudf90dn3/
    +dHd//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/cHJ5/25xe/9ucXv/c3Z//3h5ff9ucHf/
    +c3V8/3N1fP9qbXf/dXiB/3Byef9nanH/cHJ5/21vc/94eX3/Zmhu/25wd/94eX3/bG51/3N1fP91d33/
    +am13/3d5f/9sbnX/bG51/2xudf9wcnn/bG51/3N1fP9wcnn/cHJ5/3Byef94eX3/c3V8/2xvef9sb3n/
    +bW9z/2Zobv91d33/cHJ5/2xudf9ucHf/am13/3Byef9nanT/am13/2xudf9wcnn/eHl9/2psc/9tb3P/
    +amxz/2xvef91d33/am13/3d5f/9qbXf/am13/3d5f/9sbnX/Z2p0/2xudf9ucHf/bG51/21vc/9nanT/
    +Z2p0/2xudf9tb3P/dnh8/3Byef9ucHf/bW9z/25xe/9tb3P/c3V8/2xudf9ucHf/bnB3/3d6g/9ucHf/
    +bG51/25wd/9zdn//bnB3/25wd/9wc33/bnF7/3N1fP91d33/d3l//3V4gf9zdn//eXuB/3N2f/93eoP/
    +c3Z//3N2f/9sb3n/bnB3/25wd/9nanT/c3V8/21vc/9zdXz/c3V8/2xvef93eoP/bnF7/2ptd/9sbnX/
    +c3V8/2dqdP91d33/Z2p0/11gav9kZ3H/bG95/2Zobv9wcnn/Zmhu/2ptd/9nanT/Z2px/3Byef9qbXf/
    +am13/25xe/9sbnX/bnF7/2ptd/9qbXf/Zmlz/2xudf9wc33/bnB3/2xvef9vcXX/b3F1/3N1fP9ucHf/
    +b3F1/3V3ff9ucHf/am13/3V3ff9wcnn/bG51/25xe/9qbXf/am13/2Zpc/9sb3n/bG95/25xe/9qbXf/
    +cHN9/2xvef9wc33/bG95/2ptd/9nanH/amxz/2psc/9qbHP/Zmlz/2psc/9sbnX/amxz/2dqdP9ucXv/
    +cHN9/2Zpc/9ucHf/bG95/2xudf93eX//bnB3/25xe/9sbnX/cHJ5/3N1fP9wc33/Z2p0/3Bzff9ydX7/
    +cnV+/3F0fv9ydX7/cHN9/3Bzff9wcnn/cHJ5/3p9hv9wcnn/cHJ5/3V4gf9zdn//d3l//3J1fv9ydHz/
    +dXZ8/3Fzef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/ZGdx/2xudf9nanT/bG51/2xudf9sbnX/
    +Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX//Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/
    +bnB3/3N1fP9zdn//Z2p0/29xdf9vcXb/dnh//3Bze/96fIL/cHN9/36Biv93eX//e32D/3J1fv9vcnv/
    +c3aA/3N2gP9nanT/bG51/3Bzff9nanT/am13/2ptd/9sb3n/am13/2psc/9nanH/bnF7/3N2f/93eX//
    +bnF7/3Bzff91eIH/bnF7/3d5f/9ucHf/amxz/3Byef9tb3P/d3l//2Zobv9ucXv/dXd9/25wd/91eIH/
    +dXd9/2xvef93eoP/cHN9/2ptd/9vcXX/cHN9/25wd/91d33/cHJ5/25wd/9sb3n/eHl9/3N1fP9ucHf/
    +bnB3/2xudf9iZW7/dXd9/2xvef9qbXf/bnB3/2xudf9ucXv/amxz/2xudf9tb3P/bnB3/3V3ff9kZ3H/
    +bG51/2Zpc/9qbXf/cHN9/2dqdP93eX//bG51/2ptd/91d33/ZGdx/2Jlbv9maG7/amxz/2xudf9qbHP/
    +Zmlz/2Zobv9maXP/ZGdx/2xvef9maXP/Zmlz/2dqcf9maXP/amxz/2xvef9sbnX/bG51/2xudf91d33/
    +am13/2Zpc/9nanT/cHN9/2xudf9sbnX/bnB3/3Byef9zdXz/dnh8/3V4gf9wc33/c3Z//3t9g/9wc33/
    +dXd9/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9wcnn/d3l//3V4gf9zdn//e36H/3d6g/9wcnn/
    +c3V8/3d5f/9sb3n/dXiB/3Byef9nanH/bnB3/3d5f/9wcnn/d3qD/25wd/9wc33/bG95/25wd/92eHz/
    +cHJ5/25wd/9ucHf/bG51/3Byef9ucHf/cHJ5/2dqdP9sb3n/c3Z//29xdf9ucHf/bW9z/2xvef9zdn//
    +cHN9/3Byef91eIH/bnB3/21vc/94eX3/dXd9/25wd/9zdXz/b3F1/25wd/9qbHP/c3V8/3Byef9zdn//
    +bnF7/3N1fP9wcnn/dXd9/3N1fP9sb3n/amxz/2xudf9qbXf/Z2px/2Zpc/9maXP/Z2px/2xudf9maXP/
    +bG95/25xe/9nanT/bnF7/2xvef9tb3P/c3V8/2ptd/9qbXf/ZGdx/2xvef9nanT/bG95/2Jlbv9nanT/
    +b3F4/25weP9vcXr/bG94/2tud/9qbXf/amxz/2Rncf9zdn//Z2p0/2ptd/9ucHf/bnB3/3Byef9ucHf/
    +b3J3/21wev9oa3X/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/
    +Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/
    +bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3J0e/9ucXn/cnR7/29xeP95e4H/bnB3/2xudf9qbXf/
    +aWt0/25wef9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn//c3V8/21vc/9ucHf/bG51/2xvef9wc33/
    +dXd9/2xudf9zdXz/bnF7/2Zpc/9zdXz/Z2p0/2Jlbv9ucXv/bG51/3V3ff9iZW7/cHN9/3d5f/9qbXf/
    +bnF7/25xe/9sbnX/c3V8/2Zpc/9gY2z/Zmhu/2Zpc/9maXP/bG95/2psc/9nanH/Z2px/2xvef9sb3n/
    +Z2px/2psc/9maXP/YGNs/3V3ff9qbXf/bG51/2ptd/9nanH/am13/2Jlbv9qbHP/Z2px/2ptd/9ucXv/
    +Zmlz/2psc/9kZ3H/bnF7/3V3ff9nanT/dXd9/2xudf9wcnn/d3l//2Zpc/9nanH/bW9z/21vc/9sbnX/
    +bnB3/25wd/9ucHf/c3V8/25wd/94eX3/bnF7/25xe/9sb3n/c3V8/21vc/94eX3/bG95/25wd/9ucHf/
    +d3l//2ptd/9maXP/amxz/3N1fP9sbnX/b3F1/3Byef9vcXX/c3V8/3Z4fP91d33/bnB3/3Byef94eX3/
    +bnF7/3V3ff91d33/bnF7/25wd/9sb3n/bG95/2xvef93eX//cHN9/3t9g/91eIH/cHN9/3V4gf9wc33/
    +am13/3Byef9zdn//am13/3d5f/9zdn//Z2p0/29xdf95e4H/bnB3/3d5f/9ucHf/c3V8/2xudf9vcXX/
    +dnh8/3V3ff9wc33/bnF7/3V4gf9wc33/bnB3/3Bzff9qbXf/cHJ5/3V4gf9zdn//c3Z//3N1fP91d33/
    +eXuB/3d5f/9zdn//e32D/3V4gf9zdXz/eXuB/3N2f/9zdn//eXyG/3V3ff93eX//dnh8/3t9g/97fYP/
    +dXiB/3Bzff91eIH/c3Z//3d6g/9zdn//cHN9/3N1fP9zdn//c3Z//3N1fP9sb3n/bnB3/25wd/9ucXv/
    +am13/3Bzff9wc33/Z2p0/3N1fP9zdXz/b3F1/3V3ff9sbnX/cHJ5/2dqdP91d33/bnF7/3N2f/9qbXf/
    +c3Z//25xe/9tcHn/b3J8/29ye/9ucXv/bnF7/25xe/9ucXv/fH+I/3J1fv9zdn//d3l//3t9g/96fIL/
    +d3qA/3Z4ff92eX7/cnN6/2xudf9sbnX/Zmlz/2psc/9nanT/am13/2xudf9maXP/bnF7/2dqdP9tb3P/
    +cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/bG51/3Byef9iZW7/am13/2ptd/9sb3n/
    +Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/bnF7/3N2ff9ydHz/gYOK/3V4gf91eIH/
    +b3J8/25xev9zdX7/cnV//2hrdf9sb3n/bnB3/25wd/9wcnn/cHJ5/3N1fP9sbnX/am13/2ptd/9wcnn/
    +dnh8/3d5f/9sb3n/cHN9/25xe/9ucHf/dnh8/2xvef9kZ3H/c3V8/2xudf94eX3/Z2px/3N2f/93eoP/
    +bG95/3N2f/95e4H/bG95/3V4gf9ucXv/am13/25xe/9wc33/bnB3/25xe/9sb3n/bG95/25wd/92eHz/
    +dXd9/29xdf9tb3P/Z2px/2dqcf91d33/am13/21vc/9wcnn/am13/2xvef9kZ3H/Z2p0/2Zobv9maXP/
    +am13/2Rncf9maG7/XWBq/2Rncf9wcnn/YmVu/3Byef9maXP/Zmlz/3Byef9iZW7/YmVu/2psc/9nanT/
    +bG51/2xudf9qbHP/bG51/25xe/9sb3n/dXd9/3Byef9ucHf/bG51/3N2f/9vcXX/eHl9/25wd/9vcXX/
    +bnB3/3d5f/9ucHf/bnB3/25wd/91d33/bnB3/29xdf9wcnn/bG51/3Byef9zdn//d3l//3Bzff9wc33/
    +d3l//2xvef9zdXz/dnh8/25xe/9ucHf/bnB3/29xdf9ucHf/dnh8/3Byef94eX3/dnh8/3N1fP92eHz/
    +bnB3/2xudf9vcXX/c3V8/2psc/91d33/dXd9/2psc/9vcXX/d3l//3Byef93eX//bnF7/3N2f/9ucHf/
    +b3F1/3h5ff9wc33/c3V8/25xe/9wc33/c3Z//25wd/9ucHf/bG95/25wd/9zdn//c3V8/25xe/9wc33/
    +cHN9/3l8hv9zdn//cHN9/3d6g/9ucXv/bnB3/3t9g/93eoP/dXiB/3d6g/9wc33/c3Z//3N1fP9wc33/
    +bnF7/3Bzff9wcnn/c3Z//3N2f/95e4H/c3Z//25xe/9vcXX/bnB3/2xvef9vcXX/am13/2xudf9vcXX/
    +bnB3/2xudf9zdn//cHJ5/2xudf9wc33/bnF7/29xdf93eX//bnB3/3V4gf9ucXv/eXuB/3V4gf95e4H/
    +Z2p0/2xvef9wc3z/dHeA/3Z5gv9ydX//b3F4/25wd/9ucHf/am13/3d5f/9ucHf/bnB3/2xudf9wcnn/
    +bnF7/2xvef9tcHr/dXd+/3V4gP9wc33/cHJ5/2xvef9wc33/c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/
    +bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/e36H/3N2f/97fYP/cHN9/3t9g/9zdn//
    +c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/c3V8/2xud/9ucXr/a210/3d6g/9qbXf/
    +bG51/2psc/9sbnX/b3J8/3BzfP9rbXT/bG51/25wd/9ucHf/bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/
    +bG95/3V3ff92eHz/bG51/3N1fP9ucHf/b3F1/3V3ff9sbnX/bG51/2xvef9qbXf/c3V8/2Rncf9zdXz/
    +dnh8/2xudf9ucHf/dnh8/2xudf91d33/am13/2Rncf9qbHP/bnB3/2xudf9wc33/bG51/2xudf9qbXf/
    +cHN9/3Byef9sbnX/bW9z/2psc/9qbHP/dXd9/2xvef9ucHf/c3V8/2xudf9ucHf/Zmhu/3Byef9tb3P/
    +bnB3/25wd/9nanT/am13/2dqdP9ucXv/c3V8/2ptd/93eX//bnB3/25xe/94eX3/Zmhu/2dqdP9ucHf/
    +bnB3/2xvef9ucHf/bnB3/25wd/9zdn//c3Z//3l7gf9ucXv/bnF7/3Bzff93eX//cHN9/3l7gf9zdXz/
    +bnB3/3N2f/97fYP/cHJ5/25wd/9ucHf/c3Z//2xvef9wcnn/c3Z//2xvef9wcnn/c3V8/3Z4fP9ucXv/
    +bG95/3d5f/9wc33/c3Z//3d5f/9ucXv/bnB3/3Byef9ucHf/bnB3/3d5f/9zdn//eXuB/3l7gf93eoP/
    +d3l//25xe/9sbnX/b3F1/3N1fP9qbHP/c3V8/3N1fP9qbHP/bG51/3N1fP9tb3P/dXd9/2psc/9ucXv/
    +bW9z/2xudf92eHz/c3V8/25wd/9wcnn/cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/bnF7/2xvef9sb3n/
    +bnF7/25xe/9zdn//c3Z//3Bzff95e4H/c3Z//3Bzff99foH/eXuB/36Ahv97fYP/d3l//3V3ff91d33/
    +dXiB/3d6g/93eoP/c3Z//3d6g/93eoP/e36H/3l8hv93eoP/cHN9/3N1fP9zdn//cHN9/3Byef9sb3n/
    +b3F1/25xe/9ucHf/bnF7/3Byef9qbHP/cHJ5/2xudf9tb3P/dnh8/2xudf9wc33/bG95/3N2f/9zdn//
    +c3Z//2dqdP9sb3n/cHJ5/29yfP92eYD/cnV+/29xeP9tb3P/b3F1/2xudf93eX//bG51/2xudf9ucHf/
    +c3V8/3V3ff9wc33/cnR8/3V3ff9xdH3/cHJ5/2xvef9qbXf/cHN8/25xe/9ucXv/c3V8/2ptd/9zdn//
    +bnB3/2xudf90dn3/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/cHJ5/3V3ff9tb3T/dHd9/2dqdP9zdXz/
    +am13/2xvef9sb3n/am13/2Vocf9sb3n/am13/2Nmb/9qbHP/am13/3J0e/9ucHf/cXN6/2tud/93eoP/
    +cHJ5/2xudf9sbnX/aGt0/21veP9xdH3/Z2p0/2ptd/9qbXf/am13/2ptd/9ucXv/dXd9/3Byef9vcXX/
    +b3F1/25xe/9wc33/dXd9/2xudf9nanT/am13/2psc/91d33/bG51/2psc/9sbnX/Z2p0/3Byef9kZ3H/
    +bG95/25xe/9sbnX/am13/3N1fP9qbHP/dXd9/2xvef9gY2z/Zmlz/2dqdP9nanH/bG95/2psc/9qbHP/
    +Z2p0/2ptd/9qbXf/Z2px/2dqdP9kZ3H/ZGdx/3Byef9nanH/Z2px/2xvef9nanT/amxz/2BjbP9qbXf/
    +amxz/2dqdP9qbXf/ZGdx/2dqcf9kZ3H/am13/25xe/9maXP/cHJ5/2ptd/9sb3n/dXd9/2Rncf9maXP/
    +amxz/2xudf9sbnX/bG51/2ptd/9tb3P/bnF7/25xe/9zdXz/cHJ5/3Byef9sb3n/dXd9/2xudf9zdXz/
    +am13/2ptd/9sbnX/cHJ5/2dqcf9kZ3H/Zmlz/2xvef9nanT/amxz/3N1fP9sbnX/bnB3/3V3ff94eX3/
    +cHN9/29xdf94eX3/bG95/3N1fP91d33/bnB3/2xudf9tb3P/am13/2ptd/9zdXz/cHJ5/3N1fP91d33/
    +c3V8/3h5ff9ucHf/bG95/21vc/9zdXz/Z2p0/3N1fP9zdXz/Zmlz/2dqdP9sb3n/bG51/3V3ff9vcXX/
    +dXd9/2xudf9qbHP/dXd9/3N1fP9wcnn/cHN9/2xvef9ucXv/bnB3/25wd/9vcXX/bG51/2xudf9sbnX/
    +b3F1/2xvef9ucXv/cHN9/25xe/9wcnn/dXiB/3N2f/9zdXz/dXiB/3N2f/93eoP/dXiB/3Bzff9wc33/
    +cHJ5/3Bzff9zdn//c3Z//2xvef9ucXv/cHN9/3d5f/9zdn//bnF7/3N1fP9zdXz/c3Z//3N1fP9ucHf/
    +cHJ5/3Bzff9zdn//cHN9/3V4gf9zdn//cHJ5/3Bzff9wcnn/cHJ5/3d6g/9ucHf/dXiB/3Byef95e4H/
    +eXyG/36Ahv9zdn//c3Z//3Bzff9ydX//dnmA/3J1fv9zdn//bnB3/25wd/9sb3n/dXiB/2xvef9sbnX/
    +cHJ5/3Z4fP92eHz/c3V7/3J0ff91d33/bnB3/21vd/9pbHb/Zmhx/2ttdf9sb3n/cXN6/3Fzev9tb3P/
    +cHJ7/2ttdf9rbXT/cHN9/25xe/9tb3b/a254/25xev9ucXv/bG95/21wev9xdH7/b3F2/3Z4fv9qbXT/
    +dXd9/3Bzff9xc3r/dXd9/3R2fv9sbnb/b3F5/29yfP9sb3b/bG52/2xudv9ydX//cXN7/3Z4fv9wcnn/
    +foGK/3d6g/9ucHf/bnB3/25wdf9wc3v/dXd9/2ptdv9rbnf/bnB3/25wd/9ydHv/dHZ8/3N1fP9tcHn/
    +bXB3/2tueP9ucXv/dXd9/3V3ff9sb3n/bnF7/25xe/9ucHf/eXuB/25xe/9vcXX/bG51/3N1fP92eHz/
    +amxz/3V3ff91d33/bG51/2xudf94eX3/bnB3/3h5ff9zdXz/Z2p0/2xudf9ucHf/bW9z/3Byef9ucHf/
    +bnB3/2xudf9zdXz/am13/2ptd/9qbXf/Z2p0/2Zpc/91d33/am13/2psc/9wcnn/amxz/2xudf9maG7/
    +c3Z//2ptd/9ucXv/c3Z//2xvef9ucHf/b3F1/3V3ff92eHz/b3F1/3V3ff9ucHf/bnB3/3Z4fP9nanT/
    +bnB3/3Byef9zdXz/bnB3/3Byef9ucHf/bnB3/3Byef9ucHf/c3V8/3Byef9ucXv/bG95/3V3ff9sbnX/
    +bG95/2Zpc/9qbHP/am13/3N1fP9sbnX/amxz/2psc/9ucXv/bG51/2psc/9ucXv/am13/2psc/9ucXv/
    +c3V8/2xvef9qbXf/dXd9/2xudf9ucXv/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/cHN9/2xudf9zdXz/
    +dXd9/3N2f/9zdn//bG95/3Byef9ucXv/c3V8/25wd/9zdn//d3l//2xvef9ucXv/cHN9/3Byef95e4H/
    +cHN9/3l7gf9wc33/bG95/3l7gf9zdn//dXiB/3N2f/9wc33/c3V8/25wd/9wcnn/cHJ5/3Byef9wc33/
    +cHJ5/2xvef9wc33/bnF7/3Byef9ucHf/bW9z/3Byef9wcnn/bG51/3N1fP9sbnX/bnF7/3Bzff9tb3P/
    +b3F1/25wd/9ucHf/c3V8/3V3ff9sb3n/cHJ5/2xvef91d33/c3Z//3Byef9ucHf/c3Z//3V4gf93eX//
    +dXd9/3h5ff95e4H/dnh8/3l7gf9/gYf/eXyG/3l7gf97fof/eXuB/3d5f/9/gYf/dXd9/3t9g/91d33/
    +foCG/3t9g/97fof/c3Z//3N2f/9xc3r/cHN6/3J1fP9xc3v/cHJ5/2ptd/9nanT/Z2p0/3V3ff9qbHP/
    +Z2px/2ptd/9ucXv/cHJ5/2lsdv9rbnj/b3J5/2xudf9rbnb/a252/2hqcv9naXH/a211/25xef9tcHr/
    +a21z/3J0fP9tcHj/bG93/3F0fv9ydX3/b3F5/29xev9ydX3/dHd//3Byef9xdHz/eHqC/3V3ff94e4H/
    +cXN6/3l8gv91d3//dnmB/3l7g/96fIP/c3V+/3d4fv92eID/dXd+/3F0fv9xc3v/d3qC/3h6gP99f4b/
    +dnh//4OFjP9+f4P/ent//3d5f/94eoD/enyC/3p8gP9ydHv/cHN9/25xe/9vcnv/cnV+/3Z4gP92eH//
    +cnV+/29yev9wc3v/cHJ5/3V3ff92eHz/bnB3/25xe/9wc33/bnF7/3l7gf9wc33/cHJ5/25xe/9wc33/
    +c3Z//2dqdP91d33/dXd9/25xe/9wc33/e32D/3Byef97fof/d3qD/3N1fP9wc33/d3qD/3N2f/9zdn//
    +c3Z//3N2f/9ucXv/bnF7/25xe/9ucHf/bnF7/2xvef9qbXf/d3qD/3N1fP9wc33/cHN9/25xe/9ucHf/
    +Zmlz/3V3ff9sbnX/c3V8/3N1fP9ucHf/bnB3/29xdf9wcnn/dnh8/29xdf95e4H/b3F1/25wd/92eHz/
    +Z2p0/2dqdP9ucHf/bnB3/21vc/9sbnX/bG51/2xudf9ucHf/bnB3/2xvef9sb3n/bG95/2ptd/92eHz/
    +am13/25xe/9maXP/am13/2xudf9wc33/bG51/2Rncf9qbHP/am13/2psc/9qbHP/bG95/2ptd/9nanT/
    +bG95/3N1fP9ucXv/am13/3N1fP91eIH/eXyG/3t9g/9zdn//c3Z//3Bzff9zdXz/bnB3/3N2f/9wcnn/
    +dXiB/3l7gf91eIH/dXiB/3Bzff9wcnn/cHN9/3N1fP9vcXX/cHN9/3V3ff9qbXf/bG51/3N2f/9wcnn/
    +d3l//2xudf9zdXz/bW9z/2xudf94eX3/c3Z//3V3ff9sb3n/bG95/25xe/9vcXX/bG51/29xdf9vcXX/
    +bW9z/21vc/9vcXX/c3V8/2xudf9sb3n/bW9z/25wd/9wc33/cHJ5/29xdf94eX3/bnB3/3N2f/91d33/
    +bW9z/2xudf9qbXf/bG51/25xe/9ucXv/bW9z/2xudf9ucHf/dXd9/25xe/9ucHf/amxz/2xudf9sbnX/
    +bnB3/2xvef9ucHf/b3F1/2xudf9qbXf/c3Z//3N1fP91d33/dXiB/3N1fP91eIH/foGK/3N1fP93eoP/
    +c3Z//3t+h/93eoP/e36H/3N1fP9zdn//cXN7/3N2gP96fIP/eXuB/3p8gv91d33/c3V8/3V3ff97fof/
    +dXiB/3Bzff9wc33/dXd9/3V3ff90dnz/dXd+/3J1ff9ucXv/bXB5/3Bze/9pa3P/aWx2/3FzfP90d37/
    +c3Z//3F0fP92eH//cnR9/3Bze/90d4H/dHeA/29yfP9xdHz/bXB4/29yfP9vcXv/bG95/21weP9tb3b/
    +cHJ5/2ttc/92eHz/bnF6/25wef9ydX3/bXB6/25wd/9tcHn/bW92/29xd/9tb3b/bG54/3Fzd/90dnz/
    +dHZ8/2xvef95fIb/cHN9/2xvef9wcnn/bnF7/3R2fP90dn3/cHJ6/21veP9tb3j/bG95/25xe/91d33/
    +dHeA/3F0fP9zdn3/bnF6/3Bzff91eIH/d3l//25wd/9ucXv/bnB3/25wd/92eHz/bnB3/2ptd/9qbXf/
    +bG51/25wd/9nanH/cHN9/3Bzff9qbXf/bnF7/3V3ff9tb3P/d3l//2xvef9nanT/Zmlz/2xvef9qbXf/
    +bG95/2xudf9ucHf/bnB3/3Byef9ucXv/bnB3/25xe/9ucHf/am13/3N2f/9ucHf/bnF7/25wd/9qbXf/
    +bG95/2psc/91d33/bG51/3N1fP9wcnn/bnB3/2xudf9sbnX/c3V8/3Bzff9qbHP/dXiB/2psc/9qbHP/
    +c3V8/2Jlbv9dYGr/Z2px/2Rncf9maG7/Z2px/2dqcf9qbHP/bG95/2xudf9ucXv/bnB3/3V3ff9sb3n/
    +d3l//25xe/9zdn//am13/25xe/9wc33/eXuB/3V4gf9sb3n/c3V8/3V4gf9zdn//d3l//36Ahv95e4H/
    +dnh8/3l8hv9+gYr/e32D/3N2f/97fYP/bnB3/3N2f/93eX//cHN9/3N2f/9zdn//c3V8/3N1fP91eIH/
    +c3Z//3l8hv97fYP/e32D/3Bzff9ucXv/cHJ5/3Bzff9zdn//c3V8/3V4gf95e4H/cHJ5/2dqdP9zdn//
    +cHN9/3l7gf9sb3n/dXiB/25xe/9sbnX/dnh8/3Byef91d33/bG51/29xdf9ucHf/b3F1/2psc/9sbnX/
    +bG51/21vc/9sbnX/bW9z/3Bzff9wcnn/cHJ5/3Byef9wcnn/dXiB/25xe/9sb3n/eXuB/25xe/9zdn//
    +bnF7/25wd/9wcnn/bnF7/25wd/9ucXv/cHN9/25wd/9wcnn/cHJ5/3Z4fP9zdXz/cHJ5/2psc/9vcXX/
    +bnB3/2xudf9ucHf/am13/2ptd/9qbHP/amxz/3Byef9sbnX/bG51/2xudf9tb3P/bG51/3Z4fP9sbnX/
    +bnB3/21vc/9zdXz/bnF7/3Z4fP9tb3P/bG51/25xeP9ydX//dXd9/3V4gf91d33/bnB3/2ptd/9sb3n/
    +dXiB/29xdf9sb3n/bnF7/3V3ff9zdXz/cHJ5/3Z4fP9xc3n/cHJ5/25wd/9ucXr/Zmlz/2psc/9wcnn/
    +dXd7/25wd/9tb3P/dHd9/2tueP9sb3n/a210/21wef9sbnX/amxz/2hrdf9qbXT/am13/2psc/9ydX//
    +cnV+/3N2f/9vcnz/eXuA/3J1f/91eIH/enyD/3x/hf95e4H/dnh+/3d5f/96fIH/cnV//3J1fv91eIH/
    +eHuF/3p8g/91d33/foGK/3V4gf9wc33/cHN9/3N2f/91eIH/eXuB/3V4fv9wc33/c3Z//25xe/9zdn//
    +eHqB/3V4gf9ydX7/dHZ8/25wd/9ucXv/cHN9/3N2f/9vcXX/bG95/25wd/9zdXz/dXd9/2xudf9sbnX/
    +cHJ5/29xdf9ucXv/am13/3Bzff93eX//bnF7/3V3ff92eHz/b3F1/3d5f/9wcnn/bG51/2xudf9wcnn/
    +cHJ5/2ptd/9tb3P/bnF7/2xvef9ucHf/b3F1/25wd/9wcnn/bG95/2xudf9ucHf/am13/25xe/9sbnX/
    +am13/2ptd/9nanH/c3V8/2xudf9zdXz/bnF7/2xvef9sbnX/am13/3N1fP94eX3/bG95/3d5f/9ucHf/
    +bnB3/3V4gf9sb3n/Z2p0/3V4gf9zdn//cHJ5/3N2f/9zdn//dXiB/3V4gf91eIH/e32D/3d6g/95e4H/
    +c3Z//3l8hv91eIH/eXyG/3Bzff91eIH/dXiB/3t9g/93eoP/bnF7/3V4gf95fIb/bnF7/3Byef9ucXv/
    +cHJ5/25wd/9zdn//dXiB/3V4gf9wcnn/c3Z//2xvef9qbXf/c3V8/2xvef9nanT/Z2px/2Zpc/9maG7/
    +Zmlz/2Zobv9maXP/am13/2xvef9qbHP/bG51/2Zpc/9nanT/bG51/2psc/9ucXv/cHN9/2psc/9nanH/
    +bG95/2ptd/9zdn//Z2p0/25xe/9sb3n/am13/3N1fP9ucXv/cHN9/2ptd/9qbXf/bG95/29xdf9sbnX/
    +bG51/2xudf9tb3P/bG51/25wd/9wcnn/bW9z/2xvef9qbXf/cHJ5/3N1fP9sb3n/am13/3N1fP9sb3n/
    +c3V8/2xudf9ucHf/bnB3/2xvef9ucHf/bnF7/3N2f/9ucHf/cHJ5/3Byef9zdXz/cHJ5/25xe/9sb3n/
    +bG95/25wd/9sb3n/bG95/2xvef9sbnX/bG51/2xudf9wc33/bnB3/3Byef9ucHf/bnB3/25xe/94eX3/
    +bnB3/3Byef9ucHf/dXd9/3N2f/93eX//b3F1/29xdf9ucHf/dHZ9/3N1fP91d33/eHl9/3Byef9sbnX/
    +bnB3/3d5f/9vcXX/bnB3/3Byef92eHz/bnB3/3Byef9wc33/am13/2xvef9qbXf/am13/2dqdP9maXP/
    +amxz/3N1fP9nanT/Z2px/2xvef9kZ3H/Zmhu/2RmbP9nanT/Zmhu/2dqcf9kZ3H/Zmhu/2Zobv9kZ3H/
    +d3qD/3V4gf93eoP/dXd9/31+gf93eoP/dXiB/3l7gf91eIH/cHN9/3N2f/91eIH/eXyG/3d5f/91d33/
    +d3l//3+Bh/97fYP/c3V8/3+Bh/91eIH/c3V8/3N1fP9wc33/d3l//3l8hv97fYP/c3Z//3N2f/9sb3n/
    +bnF7/3Bzff9wc33/cHN9/3V3ff9ucXv/bnF7/3Byef9zdXz/bnB3/25wd/9tb3P/cHJ5/25xe/9ucHf/
    +bnF7/2xvef9ucXv/cHN9/3N1fP91eIH/d3l//2xvef9zdn//dXiB/25xe/97fYP/dXiB/3V3ff9zdn//
    +d3l//3l7gf95e4H/dnh8/3d6g/91d33/eXuB/3h5ff96e3//e32D/3d5f/91d33/fn+D/3V3ff97fYP/
    +d3l//3d5f/91d33/cHN9/3d6g/9zdn//eXyG/3N2f/9wcnn/c3V8/3N1fP95e4H/e32D/3N1fP97fof/
    +cHN9/3Bzff97fof/am13/2Zpc/9ucHf/bG95/29xdf9sbnX/bW9z/2ptd/9sbnX/bnB3/3N1fP91d33/
    +eHl9/25wd/93eX//bnB3/25xe/9nanH/bG51/25wd/9zdXz/c3V8/2dqcf9ucHf/c3V8/2psc/9vcXX/
    +bnB3/25wd/9qbXf/cHN9/3d5f/9zdXz/bnB3/25wd/9wcnn/cHN9/3h5ff91d33/b3F1/29xdf9ucHf/
    +b3F1/3Byef9sbnX/cHJ5/3Byef91d33/bG51/3Byef9qbHP/bnB3/3Byef9vcXX/dXiB/3V4gf9wcnn/
    +bnB3/3N2f/9sb3n/eXuB/25wd/9wc33/cHJ5/2xvef93eX//c3Z//3d5f/9ucXv/bG95/3Bzff9ucXv/
    +bG95/25xe/9wcnn/c3V8/3V3ff9zdn//d3qD/3N1fP9wcnn/bnF7/3V4gf9+gIb/dXiB/3Bzff93eoP/
    +c3Z//3l8hv9zdn//bG95/2xvef9ucXv/cHJ5/3Bzff91eIH/bnF7/25xe/9wcnn/c3Z//3Bzff9wcnn/
    +Z2p0/25wd/9vcXX/bnB3/25wd/9ucHf/bG51/25wd/9qbXf/cHN9/29xdf9vcXX/bnF7/3Bzff9zdn//
    +eXuB/3N1fP91eIH/bnB3/3V4gf91d33/d3l//3Byef9wcnn/bG95/3N2f/9wc33/c3Z//3Z4fP9wcnn/
    +bG51/2xudf92eHz/bG51/2ptd/9sb3n/cHN9/2xvef9nanT/Z2p0/2xvef9qbXf/Zmlz/2Zpc/9maXP/
    +Zmlz/2xudf91d33/bnB3/3Byef9zdXz/bG95/3Bzff9sb3n/cHN9/3Byef9zdn//c3V8/3Bzff9zdXz/
    +cHN9/3Byef9sbnX/bG95/2xudf9wcnn/bnB3/25wd/9zdXz/cHJ5/25xe/9qbXf/bG51/2ptd/9qbHP/
    +am13/2psc/9zdn//bnF7/2psc/93eoP/bG95/2dqdP9sbnX/bG95/3N1fP91eIH/dnh8/3Byef9zdXz/
    +b3F1/21vc/9ucXv/cHN9/25xe/92eHz/cHJ5/3Byef9wcnn/c3V8/2xudf9wcnn/bW9z/3Bzff9qbXf/
    +amxz/2xvef9ucHf/bnB3/2xudf9tb3P/c3V8/3V3ff9sbnX/bG95/25xe/9sbnX/c3V8/2xvef9qbXf/
    +Z2p0/2xudf9qbXf/am13/2xudf9sbnX/bG51/25wd/9ucHf/bG95/25xe/9sb3n/bnB3/3N1fP9tb3P/
    +cHJ5/25wd/9sbnX/bW9z/2dqcf9ucXv/Z2p0/2ptd/9sbnX/amxz/2xudf9ucHf/eHl9/3d5f/9vcXX/
    +dXd9/25wd/9ucHf/eXyG/2ptd/9qbHP/bG95/2xvef9wcnn/bnF7/3Byef9sb3n/bnB3/3Bzff9zdn//
    +d3qD/3t9g/9zdn//d3qD/3N1fP9zdXz/am13/3Bzff9ucXv/cHN9/3N2f/9nanT/cHN9/25xe/9nanH/
    +amxz/2xudf9qbXf/bG51/25xe/93eX//c3V8/29xdf9ucXv/bnB3/3N1fP92eHz/c3V8/2xudf9sb3n/
    +bG95/25xe/91eIH/c3Z//3N2f/9wc33/dXd9/2xudf9zdXz/amxz/21vc/9ucHf/b3F1/3V3ff9zdXz/
    +b3F1/25wd/91d33/cHJ5/3l7gf9sbnX/dXd9/3Byef9ucHf/c3V8/25xe/9wc33/bG95/2xudf9wc33/
    +bG51/2Rncf9qbXf/am13/2dqdP9maXP/am13/3Byef9sbnX/bW9z/25wd/9ucXv/dXd9/2xvef9sb3n/
    +c3V8/29xdf92eHz/bnB3/2xudf9qbXf/bnB3/29xdf9vcXX/cHJ5/29xdf91d33/cHJ5/3V3ff9wc33/
    +bnF7/3Byef9zdn//cHJ5/3N1fP9wcnn/bnB3/2ptd/9sb3n/am13/3N1fP9vcXX/bW9z/25wd/9ucXv/
    +bnF7/3l7gf9vcXX/c3V8/21vc/93eX//c3V8/3V3ff9vcXX/bnB3/2xudf9wcnn/bnF7/3N1fP9ucXv/
    +cHJ5/2dqdP9sbnX/eHl9/29xdf9zdXz/dXd9/3Z4fP9zdXz/bnB3/2xvef9sb3n/cHJ5/3Byef9ucHf/
    +bnB3/2psc/9sbnX/d3l//25wd/9ucXv/bG95/2xvef9zdXz/bnB3/3Byef9sbnX/bnB3/2xudf9sbnX/
    +bG51/2ptd/9ucHf/bnB3/3Byef9ucHf/cHN9/3Byef9zdXz/c3Z//3V4gf91eIH/c3Z//3N2f/91eIH/
    +c3V8/3N2f/9zdXz/e36H/3N2f/9ucXv/eXyG/3Bzff9sb3n/bG95/3Bzff9zdn//e36H/3t9g/9zdn//
    +c3Z//25wd/9ucXv/cHN9/3Z4fP91d33/d3l//3V3ff9ucHf/cHN9/3V4gf9ucXv/c3Z//2xvef9zdn//
    +bnF7/25wd/9ucXv/bnB3/3N1fP9ucHf/b3F1/2xvef9zdXz/amxz/2xvef9wc33/am13/25xe/9wcnn/
    +bG51/2dqcf9ucHf/bG51/25wd/9qbXf/cHJ5/25wd/9wcnn/bG51/25wd/9zdXz/bnB3/25wd/9zdXz/
    +amxz/25wd/9sbnX/bG51/21vc/9maG7/bG95/2dqdP9qbHP/bG51/2dqcf9nanH/Zmhu/3Byef9wcnn/
    +Z2px/25wd/9gY2z/ZGZs/3Byef9iZW7/XWBq/2BjbP9maG7/ZGdx/2Zobv9maG7/ZGdx/2Zpc/9nanT/
    +bnF7/3Bzff9zdXz/bG95/3V3ff9qbXf/bG51/2dqdP9qbHP/am13/2xvef9wcnn/amxz/3Byef9ucXv/
    +Z2p0/2ptd/9ucHf/bnB3/21vc/9sb3n/c3V8/3V3ff9sbnX/bG51/2dqdP9nanT/cHJ5/25xe/9qbXf/
    +bnB3/2Zpc/9maXP/am13/2xvef9ucXv/bnF7/3Bzff9ucHf/bnF7/2ptd/9sbnX/bnB3/21vc/9ucXv/
    +bnF7/2xudf9nanT/dXd9/2ptd/9zdn//amxz/2ptd/9nanT/amxz/2xvef9ucXv/bG95/25wd/9sbnX/
    +bnB3/2xudf9qbHP/bnB3/29xdf9ucHf/am13/25wd/9ucXv/bG95/2xvef9wc33/bnF7/3l7gf9wc33/
    +cHJ5/3V4gf9wc33/eXuB/3Bzff9sb3n/cHJ5/25wd/9ucHf/bW9z/3Byef9tb3P/cHJ5/25wd/9zdXz/
    +bG51/25wd/9nanT/bG51/2psc/9sbnX/bnB3/21vc/9sbnX/bnB3/25wd/9zdXz/bnB3/29xdf9vcXX/
    +cHJ5/3Bzff91eIH/bnB3/3Bzff9wcnn/e36H/3d6g/95e4H/cHN9/3N1fP9ydHz/enyC/3p8gv99f4X/
    +fn+D/3t9g/92eHz/d3qD/3t+h/9wc33/d3qD/3t9g/97fYP/d3qD/3d6g/94e4X/dXiB/3Z5gv9ydX7/
    +dHeA/3Fzev9rbnj/bnB3/3d4ff9vcnz/cnV+/25xe/9vcXn/bnB3/21vdv9tb3b/bG51/25wd/9ucHT/
    +bnB4/21wef9sb3n/bnB3/2ttdP9pa3X/aGty/2tueP9pa3X/a210/2tueP9sb3b/c3V7/25wd/9tb3b/
    +cHJ5/21vdv9ucHf/bG51/3h6gP9ucHf/am13/3N2f/9qbHP/YmVu/2Jlbv9maXP/Z2p0/3N1fP9tcHr/
    +bG95/2ptd/9oanT/am13/2xvef9xc33/cHN8/3R2fP9sb3n/amxz/2dqdP9ucXv/bG95/3V3ff9tb3P/
    +cHN9/2ptd/9sb3n/am13/2xudf9wcnn/bnB3/21vc/9wcnn/dXd9/2ptd/9ucXv/cHN9/2xudf9wcnn/
    +c3V8/2xudf9kZ3H/am13/25wd/9wcnn/bG51/2xvef9sbnX/am13/2Zpc/9maXP/bG95/2ptd/9qbXf/
    +am13/2dqdP9nanT/Zmlz/2Zpc/9nanT/YmVu/2xvef9maXP/Z2px/2xudf9qbHP/Z2p0/2psc/9zdXz/
    +cHN9/2dqdP9wcnn/amxz/2psc/91d33/Z2p0/2Rncf9maXP/bG95/2dqdP9sbnX/Z2px/2dqcf9nanT/
    +Z2p0/3Bzff9wc33/cHJ5/2dqdP9wcnn/Z2p0/2dqcf9maXP/Zmlz/2ptd/9nanT/am13/2Rncf9sbnX/
    +bG95/2Jlbv9nanT/bG51/2xvef9nanH/Z2p0/25xe/9ucXv/amxz/2dqcf9sbnX/bG95/3d5f/9wcnn/
    +bnB3/3Byef9sbnX/bG51/3V3ff9ucHf/bnB3/3Byef9ucXv/bG95/3Byef9qbXf/bG51/2xvef9sbnX/
    +c3V8/3Byef9vcXX/bG51/3Z4fP9zdXz/eHl9/25wd/9wcnn/bnB3/2xudf9wcnn/cHN9/3Byef9ucHf/
    +bnB3/3Byef9sbnX/ZGdx/2xudf9sbnX/Z2p0/2dqdP9sbnX/bnB3/25wd/9vcXX/cHN9/3Byef94eX3/
    +cHJ5/2xvef9wc33/cHN9/3d5f/9sb3n/bG95/25xe/9sb3n/bnB3/29xdf9wcnn/bG51/25wd/9wcnn/
    +c3Z//25xe/9wc33/bnB3/3N1fP9zdXz/dXiB/2ptd/9ucHf/bG51/2xudf9sbnX/bnF7/2ptd/9sbnX/
    +bG51/2xvef9wc33/dXd9/21vc/9zdXz/bnB3/3h5ff9wc33/eXuB/25xe/9qbXf/b3F4/3Bzff9ydHz/
    +dHZ9/3V3ff9qbXf/bG51/3N1fP94eX3/bnB3/3N2f/92eHz/dXd9/3Byef9ucXv/cXR9/29xeP9xc3r/
    +bnB3/25wev9pa3T/Z2p0/2ttdf9xc3v/bXB6/2xveP9rbnj/am12/2ZpcP9oanH/amxz/2dqcv9kZ3H/
    +ZWhy/2Zpc/9maXD/Z2lv/3Bzff9tb3f/b3F6/21vdv9vcnv/bnB3/25wd/9vcXj/cXN6/3J0ev9ucHj/
    +bXB6/29yfP9vcXb/bG95/2ttdf90d3//bG52/2xudv91d33/am13/2Rncf9nanT/bG95/21wev90d4D/
    +cnR8/3Bzff9rbnj/am13/21wev9vcnz/cXR+/29yfP9zdX3/bXB6/2ptd/9nanT/bG95/2ptd/9ucXv/
    +amxz/25xe/9qbXf/bG51/2ptd/9qbXf/bG95/2xvef9qbHP/bnF7/3V3ff9qbHP/bG95/3N1fP9sb3n/
    +bG95/3Byef9vcXX/Zmlz/25wd/9zdXz/c3Z//3Byef9zdn//cHN9/25xe/9qbXf/bnB3/3N2f/9wc33/
    +bG95/3Byef9sbnX/cHN9/25wd/9wcnn/bG95/2dqdP9wcnn/am13/3Byef9wc33/bG95/2xvef9vcXX/
    +d3l//3d5f/9zdXz/c3V8/2ptd/9sb3n/d3l//2xudf9sbnX/Z2p0/3Byef9ucHf/bG51/2xudf9tb3P/
    +bG95/2ptd/9zdXz/cHN9/3N1fP9sb3n/bnF7/2Zpc/9nanH/ZGdx/2dqdP9sb3n/am13/3Byef9nanH/
    +bG51/3N1fP9kZmz/amxz/25wd/9wcnn/bG51/3Bzff9wc33/d3l//2xvef9qbXf/Z2px/2ptd/9zdXz/
    +Z2p0/2dqcf9qbXf/Zmlz/2psc/9qbXf/ZGdx/2Zobv9maXP/am13/2dqcf9nanT/amxz/2ptd/9ucXv/
    +bG51/3Byef9ucHf/b3F1/2psc/92eHz/cHJ5/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/3V4gf9wc33/
    +c3V8/2xvef9wc33/bnB3/2dqdP9vcXX/b3F1/25wd/9sbnX/bG95/25wd/9sbnX/am13/25xe/9qbXf/
    +dnh8/2xudf9tb3P/cHJ5/3Byef91d33/bG51/2dqdP9sb3n/am13/2dqdP9sbnX/bnF7/25wd/9wcnn/
    +am13/3Bzff9ucHf/cHJ5/2xvef9ucHf/bG95/3Bzff9qbXf/cHJ5/2xvef9ucHf/bG95/3N2f/9sb3n/
    +bG95/25wd/9wc33/dXiB/3l8hv9ucHf/dXiB/25xe/93eoP/c3Z//3d6g/9ucXv/am13/21weP9xc3v/
    +b3F5/3R3fP90dnz/bnF7/21vc/9ucHf/dXd9/2ptd/9sb3n/bnF7/3N1fP9sbnX/bnB4/25xev9ucHj/
    +bnF5/25wd/9tcHr/Z2p0/2xvd/9tcHj/cnV9/3Bze/9ydHv/cHN9/3BzfP9vcnz/dHZ8/3N1e/9xc3r/
    +bnB5/3J0e/9wcnv/bnF5/21weP9ydHv/bG51/3Fze/9rbXb/bXB6/3Byef9sb3n/bG95/2xvef9rbXb/
    +aWx0/21weP9pbHb/b3F6/2lsdv9rbnb/bnF6/2ptdv9qbXf/c3V8/2xvef9kZ3H/Zmlz/2xvef9qbXf/
    +cHN7/2xvef9ucHn/am12/2tudv9tb3b/bW92/29yfP9ucHn/dXh//3Fzev91d33/dXd9/3V4gf9wc33/
    +c3Z//3Byef91d33/bnB3/29xdf9wc33/bnF7/3N2f/9zdn//bnB3/3d5f/95e4H/cHJ5/3Bzff95e4H/
    +dXiB/3d6g/9wc33/cHJ5/25xe/9wc33/dXiB/3l7gf9zdXz/c3Z//25xe/9wc33/bnB3/3Byef93eX//
    +cHN9/25wd/9ucHf/Z2px/3Byef9ucHf/bW9z/2dqdP9iZW7/am13/2Rncf9sbnX/c3V8/3N1fP9sbnX/
    +b3F1/3h5ff93eX//dXiB/3N2f/9sb3n/cHN9/3l7gf9ucHf/cHN9/3V3ff97fYP/eXuB/3l7gf93eX//
    +dnh8/3t9g/95e4H/foGK/36Biv9/goz/f4GH/35/g/92eHz/dXiB/3Z4fP92eHz/e32D/3l7gf95fIb/
    +c3Z//3V4gf93eoP/Zmlz/2ptd/9zdXz/cHJ5/2dqdP9ucXv/bnF7/3V3ff9sb3n/amxz/25wd/9wcnn/
    +d3qD/3Bzff9ucXv/c3Z//2ptd/9ucHf/dXd9/25wd/9sb3n/cHJ5/3Bzff9wc33/c3Z//25wd/9sb3n/
    +cHN9/25xe/91eIH/c3Z//25xe/9sb3n/e32D/3l8hv95fIb/c3Z//3V4gf9ucXv/bnF7/3V4gf95fIb/
    +d3qD/3V4gf9zdn//d3qD/3Bzff9ucXv/bnB3/2xvef9sb3n/bG95/3N2f/91eIH/cHJ5/2xvef91d33/
    +cHN9/3d5f/9ucHf/am13/3Byef9wcnn/dnh8/25wd/9sb3n/c3V8/29xdf9qbXf/bG95/3N1fP9wcnn/
    +c3Z//3N2f/93eoP/cHN9/3V4gf9wc33/bnF7/25wd/9zdn//bG95/3Byef9ucHf/bG95/2xvef9zdn//
    +bG95/25wd/9ucHf/c3V8/3Byef91d33/amxz/25xe/9qbHP/c3V8/2xvef9ucHf/Zmlz/2Rncf9sb3f/
    +b3J8/2ttdP9ucXr/cnR7/2xvef9tb3P/bnB3/3V3ff9sbnX/cHN9/3N2f/91d33/cHN9/29yfP9zdXz/
    +bnF7/3F0fv90dn3/cXN7/2hrdf9vcXn/b3F5/3N2gP9wcnn/cXN8/3Bzff9ydHv/cnV+/3Z5gv92eYH/
    +c3Z+/25xe/9zdn7/cnR9/3J1ff9tcHn/cXR9/3Fzev90d4D/bXB6/3N2gP9wc3z/b3J8/3F0ff9vcnz/
    +b3F6/21wd/9ydX3/cHJ7/3J0e/9tb3f/a252/3N1fv9tcHj/cHJ5/3Z4f/9zdXz/Z2px/2psc/9wcnr/
    +bW92/3J0e/9ucHn/bnF5/2xvd/9ucHT/cHJ5/21vdv9xc3r/b3F4/3N1e/9vcXn/bG95/25xe/91d33/
    +c3V8/3N1fP9qbXf/c3V8/2xudf9sbnX/am13/2xudf9wcnn/cHJ5/21vc/92eHz/d3l//2ptd/9ucXv/
    +dnh8/3Byef9wcnn/cHJ5/2xudf9maG7/bG51/3N1fP9wc33/bG51/2ptd/9sbnX/amxz/2ptd/9vcXX/
    +dnh8/25xe/9ucHf/bG51/2dqdP9ucXv/cHJ5/25wd/9sbnX/Zmlz/3Bzff9nanT/bnF7/3N2f/9wc33/
    +am13/25xe/93eoP/e32D/3V4gf95e4H/cHJ5/3Bzff97fYP/bnB3/3Byef9ucHf/cHN9/25xe/9wc33/
    +bnB3/25wd/9ucHf/bW9z/3V3ff9wc33/dXiB/2xvef9wc33/bG51/3Byef9sb3n/bnB3/3N2f/9wcnn/
    +c3V8/2psc/9zdXz/c3V8/2dqcf9sbnX/cHJ5/2xudf9sbnX/c3V8/3Byef91d33/dXd9/3Byef9wcnn/
    +c3Z//3d6g/9ucXv/bnB3/3N2f/9ucHf/cHJ5/3d6g/9zdn//dXiB/3l8hv97fYP/fX6B/3t9g/91d33/
    +d3qD/3l8hv93eX//fn+D/3t9g/97fYP/cHJ5/31+gf97fYP/fn+D/3l7gf9+gIb/d3l//3l7gf9zdn//
    +d3qD/3t9g/91eIH/dXiB/3N2f/9zdXz/c3V8/3N1fP9wc33/bG95/3N1fP93eoP/c3Z//3N1fP9sb3n/
    +cHN9/3Bzff93eX//cHJ5/2ptd/9wcnn/bG95/3V3ff9sbnX/bnB3/3V3ff9ucHf/amxz/25wd/9zdXz/
    +bG95/25wd/9sbnX/cHJ5/25wd/91d33/bnB3/25wd/9ucHf/dXd9/2xudf9sbnX/bW9z/2ptd/9qbXf/
    +cHN9/2xudf9wcnn/bG51/2ptd/9qbXf/dXd9/2psc/9sb3n/Z2px/3N1fP9qbXf/bnB3/2Zpc/9dYGr/
    +a210/29yfP9sbnX/bW92/3Fzev9sb3n/amxz/2xvef9ucXv/bG51/2xvef9zdXz/bnF7/2ptd/9rbnf/
    +b3F4/21wev90dnv/dHd7/29xef9maW//bW93/3J0e/9zdXz/bnB4/3Byef9wc3z/dHd//3R3f/94eoP/
    +dnmC/3V3gP9rbnf/c3V9/29yfP9vcnz/bnB2/21vdv9qbHL/b3J5/2xveP9sb3n/bXB6/21weP9tb3b/
    +bG53/21weP9pa3P/cHJ6/29yev9ydHn/bnB3/25wdf91d33/bnF7/3J0fP93eX//c3V8/2Zobv9sbnX/
    +c3V8/3BzfP91dnv/cnR5/3N1e/9xc3j/bW91/21veP9sbnT/bW92/29yev91d3//cHJ5/3Bzff91d33/
    +d3l//3N1fP91d33/bG95/3l7gf9ucXv/bnB3/25xe/9sb3n/dXiB/3V4gf9ucXv/dXd9/3N2f/9nanT/
    +bnF7/3l7gf9wc33/c3Z//3N2f/9sb3n/Z2p0/29xdf91eIH/c3Z//25wd/9ucHf/cHJ5/2xudf9ucHf/
    +bG51/3Z4fP9wc33/cHJ5/3N2f/9nanT/cHN9/3Bzff9wcnn/bnF7/2ptd/95e4H/bG95/3N1fP95fIb/
    +e32D/3N1fP9zdn//foGK/3l7gf91eIH/dXiB/3Byef9wc33/e36H/3V3ff91d33/dnh8/3t9g/95e4H/
    +dXiB/3N2f/9zdXz/c3Z//3N1fP93eX//c3Z//3t+h/93eoP/eXuB/3N1fP9ucXv/bG95/2xvef9zdn//
    +cHN9/3Bzff9sb3n/cHN9/3N1fP9qbHP/bG51/3Byef9sbnX/amxz/3Bzff9wcnn/dXiB/3V3ff9wc33/
    +bW9z/2xvef9ucXv/bnF7/2xudf9zdXz/bG51/2xudf9ucXv/am13/25wd/9wcnn/bG95/3N2f/9zdXz/
    +bnB3/2xvef9wcnn/b3F1/3Z4fP9wcnn/cHJ5/2Zobv9ucXv/bnF7/3N1fP9qbXf/bnF7/21vc/9ucXv/
    +bG51/2xvef9ucXv/bG51/2psc/9qbXf/ZGdx/2Zpc/9nanH/bG51/2Jlbv9nanT/bG95/2ptd/9qbHP/
    +Z2p0/2xvef9ucXv/dXd9/3Byef9ucHf/cHN9/3Bzff97fYP/cHN9/25wd/93eoP/cHN9/2xvef91d33/
    +eXyG/3N2f/93eoP/c3Z//3d6g/9wc33/e32D/3d5f/95e4H/dXd9/3t+h/9zdn//dXd9/3Bzff9wc33/
    +bnB3/3V4gf9ucHf/bnF7/2xvef9wcnn/c3Z//3d6g/9ucHf/dXd9/25wd/95fIb/c3Z//3t9g/91eIH/
    +am13/25xe/91eIH/b3J7/3F0fP92eH7/c3V8/25wd/9wc33/dXiB/3Byef9wc33/c3Z//3V4gf9zdn//
    +b3J8/3R2ff9xdH7/cnV+/3h6gP9wc3z/aGt0/21wd/90d3//c3Z//3Byef9vcXb/b3F4/25xe/9xdHz/
    +cnR8/3N0ev9wcnv/bG95/3J0fP9vcnr/bnB5/21vdf9xdHv/b3F4/3N2fv9tb3j/cnR9/25xev9vcnv/
    +bnB3/3R2fP9ydHv/bG52/21vd/9vcnz/b3F4/25xe/9tcHn/d3l//21wd/9ydHz/dnh8/3Byef9kZmz/
    +Z2p0/3Byef9ucXv/dHd9/3N1fP9wc3z/dHd+/2xvef9sb3n/cHJ5/3Bzff90dn3/dnmD/3R2f/91eIH/
    +eXyG/36Ahv95fIb/foCG/3V4gf95e4H/cHN9/3Byef9ucXv/c3V8/3V3ff9zdn//bnF7/3Z4fP9wc33/
    +ZGdx/2ptd/9zdXz/Z2p0/2xvef9sb3n/Zmlz/2Jlbv9qbXf/c3V8/3N1fP9nanT/bG95/2xvef9qbXf/
    +bG51/21vc/9zdXz/bnF7/2xudf9qbXf/YmVu/2xvef9sbnX/bG51/2Zpc/9kZ3H/cHN9/2Zpc/9ucHf/
    +c3V8/3Byef9nanH/b3F1/3Z4fP9zdn//cHN9/3Bzff9ucHf/bnB3/3l7gf9wcnn/bnF7/25wd/9wc33/
    +c3Z//3Bzff9ucXv/bG95/25xe/9ucHf/dXiB/3d6g/9+gYr/c3Z//3N2f/9vcXX/bnB3/25wd/9tb3P/
    +cHN9/2ptd/9sb3n/Z2p0/25xe/9qbXf/ZGdx/2Zpc/9ucXv/am13/2Zpc/9wc33/cHJ5/3V3ff91d33/
    +cHJ5/2psc/9qbXf/dXd9/3Bzff9tb3P/cHJ5/2xudf9qbHP/bG95/2psc/9qbXf/bG95/2xudf9wc33/
    +bnF7/2ptd/9sb3n/bG95/2ptd/91d33/c3V8/25wd/9kZ3H/bG95/3V3ff91d33/bnB3/3Byef9sbnX/
    +bG95/2psc/9qbXf/bG95/2xudf9nanT/bnF7/2dqdP9qbXf/bG51/2ptd/9maXP/am13/2xvef9sb3n/
    +am13/2ptd/9zdXz/cHJ5/3Z4fP9wcnn/bnB3/2xvef9sb3n/c3V8/3Byef9sbnX/c3V8/2psc/9nanH/
    +bG51/25wd/9tb3P/cHN9/2psc/9sbnX/bG51/3V3ff9ucHf/cHJ5/21vc/92eHz/am13/2dqdP9qbHP/
    +bG51/2psc/9zdXz/am13/2xvef9qbXf/bG51/2xvef91d33/bnB3/3Z4fP9tb3P/eXuB/3N1fP93eX//
    +cHN9/2dqdP9ucHf/dXiB/29yfP9xdHz/dXh//25weP9sbnX/cHJ5/3N1fP9qbXf/bnF7/25xe/9sb3n/
    +cHN8/3Byef9ydHv/bnB4/25xev9xc3r/am13/2dqdP9sb3j/bG95/3Bye/9rbnj/am12/2tueP9rbnj/
    +bG95/29xeP9rbnf/bnF6/21wev9xdH3/cXR+/3F0ff9vcnv/cnR7/2hrdf9sbnb/bG94/25weP9sbnb/
    +b3F5/2xvef9wc33/dHZ8/2ptd/9xc33/dnh8/21wev9ydX7/dHZ8/31+gv9ucHf/c3Z//3l7gf93eoP/
    +Z2p0/2xvef9zdn//c3Z//3Z4fv92eH7/cHN9/3J1fv9sb3n/b3J8/2xvef9sb3n/dHd7/3Z4fv9tcHr/
    +c3V8/3N1fP91d33/c3V8/3Z4fP9ucHf/dnh8/3N1fP9vcXX/bnB3/25xe/93eoP/c3Z//3Bzff95e4H/
    +dXiB/2ptd/9zdn//d3qD/25xe/9zdn//dXd9/29xdf9maGz/b3F1/3V3ff91d33/bnB3/3Byef9ucHf/
    +bG51/2xudf9sbnX/dXd9/25xe/9qbXf/bG51/1xfaP9qbHP/amxz/2psc/9iZW7/YmVu/2xvef9iZW7/
    +Z2p0/25xe/9sb3n/am13/2psc/91d33/bnF7/3Byef9zdXz/bG95/3Byef91d33/bnB3/2xvef9ucHf/
    +bnF7/3Byef9zdXz/cHJ5/25wd/9zdXz/bnB3/3Bzff9wc33/e36H/3Bzff91d33/bG95/3Bzff9wcnn/
    +cHJ5/3N2f/9wc33/cHN9/25wd/91d33/bnB3/2dqcf9qbHP/c3V8/3Byef9nanH/bnF7/3N1fP93eX//
    +dXd9/25xe/9tb3P/cHJ5/3V3ff9zdn//bG95/25xe/9vcXX/b3F1/3N1fP9sbnX/bW9z/2xudf9ucHf/
    +c3Z//3V4gf9ucHf/bnF7/25xe/9wcnn/d3qD/3V4gf9zdn//bG95/3N2f/93eoP/eXuB/3Bzff91eIH/
    +cHN9/25xe/9ucHf/bnF7/3Bzff9ucXv/bnB3/3d5f/9sb3n/bnF7/3Bzff9wc33/bG95/3Byef9zdn//
    +cHN9/3Bzff9zdXz/d3qD/3V4gf97fYP/cHJ5/3N2f/9wc33/c3Z//3d5f/9zdn//cHJ5/3V4gf9wc33/
    +cHN9/3N2f/93eoP/dXiB/3t9g/9zdXz/cHN9/3Bzff91d33/c3Z//3N2f/9sb3n/c3Z//2xudf9ucHf/
    +bnB3/25wd/9qbHP/c3Z//3Bzff9zdn//bG95/3Byef9sbnX/d3l//2ptd/92eHz/bW9z/3d5f/9zdXz/
    +d3l//3Bzff9maXP/bG95/3Bzff9sbnX/bnF7/3F0fv9xdH3/bnF7/3N2f/93eX//bG95/3Bzff91d33/
    +dXd9/3Byef9ucHf/cXN6/21veP9sb3f/bXB4/2tudv9oa3X/am1z/2xud/9zdn3/am13/2tudv9oa3X/
    +Zmlz/2hrdf9pbHP/aGt0/2hqcP9naW//Zmhu/2hrdf9oa3L/Z2p0/3N1fP9sbnX/bW9z/25wd/9sb3n/
    +bG95/25xe/9sb3n/cHN9/3N2f/9qbXf/bnF7/3N2f/9ucHf/dXiB/3Z4fP99foH/b3F1/3N1fP94eX3/
    +c3V8/2dqcf9qbHP/cHJ5/3N1fP91d33/dnh8/3Byef9zdn//bG51/3Byef9ucHf/bW9z/3V3ff91d33/
    +bG51/3Byef9ucXv/c3V8/2xvef9zdXz/bG95/3d5f/9ucXv/bG51/3N1fP9ucHf/dnh8/3Byef9ucXv/
    +d3l//3Bzff9nanT/c3Z//3d5f/9ucHf/cHJ5/3Z4fP9vcXX/ZWZq/29xdf9zdXz/dnh8/2ptd/9wc33/
    +cHN9/25xe/9ucHf/bnB3/3N2f/9wc33/bnB3/3Byef9maG7/bG51/2xudf9qbXf/Zmlz/2Zpc/9sb3n/
    +YmVu/2psc/9sb3n/am13/2dqdP9sbnX/bnF7/2xvef9ucXv/bnF7/2xudf9qbXf/bnF7/2xudf9qbXf/
    +amxz/2xvef9sb3n/bnF7/2xudf9nanH/c3V8/2xudf9ucHf/bnF7/3d6g/9wcnn/dnh8/25wd/9wcnn/
    +b3F1/29xdf9zdXz/bG95/3N1fP9sbnX/c3V8/2xvef9maXP/ZGdx/25xe/9qbXf/Zmlz/3Byef9zdXz/
    +eHl9/3Z4fP9wcnn/bnB3/3Bzff91eIH/c3V8/29xdf9ucHf/bW9z/21vc/9wcnn/bG51/2xvef9sbnX/
    +bG51/3Bzff9sb3n/ZGdx/2dqcf9maG7/Zmlz/2xvef9wc33/bnF7/2dqdP9ucHf/c3V8/3V3ff9sbnX/
    +c3V8/2ptd/9ucXv/am13/2xvef9ucXv/bnB3/2xudf91d33/amxz/2xudf9ucHf/b3F1/2dqcf9ucHf/
    +bnB3/25xe/9ucHf/bG95/3N1fP92eHz/dXd9/2xvef9wc33/cHJ5/25xe/9zdn//cHN9/3Byef91eIH/
    +bnF7/25xe/9sb3n/dXiB/3V4gf9+gIb/dXd9/3V4gf91eIH/e32D/3N2f/93eoP/bnB3/3V3ff9sb3n/
    +bnB3/25wd/9sb3n/bG51/3N2f/9wc33/dnh8/25wd/9zdXz/bG95/3d5f/9qbXf/dXd9/21vc/93eX//
    +cHN9/3Bzff9sb3n/ZGZs/3Byef9wc33/am13/29yfP9zdoD/c3Z+/3Byef93eoP/eXuB/3Byef93eoP/
    +e32D/3l7gf91eID/dnmB/3t9gP92eIH/c3Z+/3R3f/9ydH3/cnV+/3J0ff9wcnn/eHqE/3N1fv9sb3n/
    +bG95/25wd/9zdXz/bW9z/2xudf9ucHf/bG95/29xdf9zdXz/cHJ5/25xe/9qbXf/ZGdx/2psc/9qbXf/
    +amxz/21vc/9wcnn/b3F1/3Byef9wc33/Z2p0/25xe/91eIH/bnB3/3d6g/95e4H/f4GH/3N1fP93eoP/
    +e36H/3d6g/9wc33/bnF7/3t9g/95e4H/eXuB/36Ahv93eoP/eXuB/25xe/91eIH/c3Z//2xvef91d33/
    +dXd9/2xudf9ucHf/cHJ5/3N1fP9zdXz/eHl9/3Bzff91eIH/cHN9/25xe/9zdXz/c3Z//3d5f/93eoP/
    +dXiB/3d5f/9wc33/amxz/3Bzff93eX//bG95/3V4gf95e4H/cHJ5/2dqdP9ucHf/d3l//3l7gf9ucXv/
    +cHN9/25xe/9sbnX/bG51/21vc/9ucXv/cHJ5/2xudf9ucXv/Zmlz/2ptd/9sbnX/am13/2dqdP9nanH/
    +bnF7/2Zobv9ucHf/bnF7/25wd/9qbHP/am13/3Bzff9ucXv/bnB3/3Bzff9sbnX/bW9z/3N1fP9wcnn/
    +bnB3/29xdf9ucHf/bG51/3Byef9qbXf/Zmlz/25xe/9nanH/bG95/25xe/91eIH/am13/3Bzff9nanT/
    +am13/2Zpc/9nanT/cHN9/21vc/9zdXz/bW9z/3V3ff9ucXv/Zmlz/2dqdP91d33/bnF7/2ptd/9wc33/
    +bG95/3V3ff93eX//cHN9/2psc/9qbHP/am13/2xvef9qbHP/bnF7/2dqcf9qbHP/bG95/2psc/9ucXv/
    +bG51/21vc/91d33/cHJ5/2ptd/9sbnX/bG51/2psc/9ucHf/cHJ5/3Byef9qbHP/cHJ5/3N1fP94eX3/
    +bnF7/3Bzff9ucXv/cHJ5/25wd/9wcnn/cHN9/25wd/9ucHf/dnh8/2dqdP9qbXf/bG51/21vc/9kZmz/
    +b3F1/25wd/9zdXz/bnB3/25wd/9ucHf/c3V8/3V3ff9ucHf/c3Z//25wd/9ucHf/c3V8/3Bzff9wcnn/
    +c3Z//2xvef9nanT/am13/3N2f/9ucXv/d3l//3Bzff9wc33/c3Z//3l7gf9wc33/c3Z//2xvef92eHz/
    +bnB3/29xdf9ucHf/bnF7/2xvef91d33/c3Z//3V3ff9sb3n/cHJ5/29xdf91d33/bG51/3Z4fP9tb3P/
    +d3l//3V3ff9wc33/cHN9/2Rncf91eIH/c3Z//2xveP9vcnz/c3aA/3V4gP9sb3n/dXiB/3V3ff9sbnX/
    +c3V8/3Z4fP91d33/c3V8/29xdf9xc3n/cHJ5/3Fzev9vcXb/bG95/3Bzff9ucHf/bnB3/3V3ff9wcnn/
    +bG95/2xudf9nanT/cHN9/2psc/9maXP/amxz/2psc/9qbHP/bG95/25xe/9sb3n/dXiB/3N1fP9wc33/
    +d3qD/3N1fP9wc33/dXiB/3l7gf95e4H/d3qD/25xe/95e4H/d3qD/3N1fP91eIH/dXd9/3l8hv9sb3n/
    +c3V8/3V3ff9wcnn/Z2p0/2Zpc/92eHz/dXd9/3V3ff91d33/bnB3/3Bzff9nanH/bnB3/2xvef9qbXf/
    +bnF7/3Bzff9sbnX/cHJ5/3N1fP9wc33/c3Z//3t9g/91eIH/foGK/3d6g/93eoP/c3Z//3l7gf97fof/
    +eXuB/3d6g/97fof/eXuB/3V3ff95fIb/e36H/3V4gf95e4H/eXyG/3Bzff9qbXf/cHJ5/3N2f/93eX//
    +bG51/3Byef9ucHf/bG51/25wd/9ucHf/c3V8/3V3ff9sbnX/bnF7/2Rncf9qbXf/Z2p0/2dqcf9nanH/
    +YmVu/2xvef9iZGr/bG51/25xe/9sb3n/Z2p0/2xudf9wc33/bG95/2xvef9zdXz/bG51/2xudf9wc33/
    +bG95/2dqdP9maXP/am13/2ptd/9sb3n/amxz/2Zpc/9zdXz/am13/2ptd/9ucXv/dXd9/2dqdP9qbXf/
    +YmVu/2dqdP9iZW7/Z2px/2ptd/9maXP/bG95/2Zobv9qbXf/Zmlz/2BjbP9gY2z/bnF7/2ptd/9maXP/
    +am13/2psc/9wc33/bnF7/2dqdP9ucXv/c3Z//3Bzff9wc33/bG95/3N2f/9ucHf/bG95/25xe/9sb3n/
    +c3V8/25xe/9tb3P/dXd9/25wd/9ucHf/b3F1/25wd/9qbXf/am13/25wd/9sb3n/Zmlz/2ptd/9ucXv/
    +c3V8/2ptd/9ucXv/bG51/2xvef9sb3n/bG95/2xvef9ucHf/am13/3Bzff9nanT/am13/2ptd/9sbnX/
    +YmVu/2psc/9nanT/bG95/2psc/9qbHP/am13/25xe/9sb3n/amxz/25xe/9qbXf/bG51/25xe/9sb3n/
    +bG51/2xudf9kZ3H/Z2p0/2Rncf9sb3n/cHJ5/3N1fP9sb3n/bW9z/25wd/91d33/c3V8/3V3ff9ucHf/
    +eXuB/25wd/9wcnn/am13/2xvef9qbXf/c3Z//3V3ff91d33/b3F1/3Byef9ucXv/d3l//25xe/93eoP/
    +cHJ5/3d6g/9ucXv/c3Z//3V4gf9maG7/dHeA/29ye/9rbnf/cHN8/3R2fP9vcnz/bG51/3Bzff91d33/
    +bG51/3N1fP9zdXz/c3V8/3N1fP9tb3P/bnB3/3N1fP9ucXv/am13/2psc/9sb3n/am13/2psc/9zdXz/
    +Z2p0/2xvef9nanH/amxz/3N1fP9sbnX/bG51/2xudf9tb3P/b3F1/3Byef91d33/cHJ5/3V4gP9zdXz/
    +c3Z//3R3gP9ucXv/bnB3/2xvef9ucXv/cHJ5/3J0e/9rbXP/dHZ9/3V3ff9vcXj/cnR7/3R2fP91eIH/
    +bW90/25xe/9zdXz/am13/2dqcf9maG7/dXd9/3Byef92eHz/dXiB/25xev90d4D/aGt1/3N2f/9xdH7/
    +b3F4/3V4gf92eYH/c3V8/3d6g/95fIb/d3qD/3l8hv9+gYr/eXyG/4GDiv91eIH/dXiB/3V4gf91eIH/
    +eXyG/3t9g/9ucXv/d3l//25xe/9ucHf/c3V8/3h5ff9ucXv/d3l//3V3ff9ucHf/Zmlz/29xdf92eHz/
    +dnh8/2psc/9tb3P/cHJ5/2ptd/9sb3n/bG95/3N2f/91eIH/c3Z//3V4gf9qbXf/bnF7/25wd/9ucHf/
    +bnF7/2Zpc/9zdn//Zmhu/29xdf9wc33/bG95/2dqdP9ucHf/d3qD/25xe/9wc33/cHN9/25wd/9ucHf/
    +eHl9/3N1fP9ucHf/bnB3/25wd/9ucHf/bnF7/2xudf9qbHP/dXd9/2xudf9sb3n/cHN9/3V3ff9ucHf/
    +cHJ5/2Zpc/9qbXf/Z2p0/21vc/9ucXv/am13/25wd/9vcXX/dnh8/25wd/9kZ3H/Zmlz/3V3ff9tb3P/
    +bW9z/3Bzff9ucHf/dXiB/3l7gf9zdn//bG51/3N1fP9ucXv/cHN9/25wd/92eHz/bnB3/25xe/9wcnn/
    +bnB3/3Bzff9ucHf/bnB3/3N1fP9wcnn/bG51/2xudf9qbXf/am13/2ptd/9qbXf/bnF7/2dqcf9sb3n/
    +bnF7/3Bzff9sb3n/bG95/2xudf9sb3n/Zmlz/2dqdP9nanT/amxz/2dqcf9wc33/Zmlz/2ptd/9qbXf/
    +am13/2Jlbv9sbnX/bG95/3V3ff9ucHf/bnB3/3N2f/93eoP/c3Z//3Byef91eIH/c3Z//3N1fP95fIb/
    +dXiB/3V3ff91eIH/c3V8/3N2f/9ucXv/eXyG/31+gf9+gIb/dXiB/3V3ff91eIH/e32D/3d6g/93eoP/
    +bnF7/3t9g/9sb3n/bG95/2dqdP9wcnn/am13/3V4gf93eX//dXd9/25wd/9wc33/cHN9/3d6g/9wc33/
    +eXyG/25wd/94eX3/c3V8/3N1fP9zdXz/Zmhs/3V4f/9zdoD/bnB5/3R3gf92eH7/c3Z//25xe/93eoP/
    +dXd9/29xdf9zdn//dXd9/3V3ff9wcnn/bG51/25xe/9zdXz/bnF7/21vc/9tb3P/cHJ5/2xvef9sbnX/
    +dXd9/2xvef9wcnn/bG95/2dqdP91d33/bnB0/21vdv9tb3b/am13/2xudP9tcHr/c3V9/2xvef90d4D/
    +b3J5/29xef9zdn3/cXN4/29xdv9tb3f/bXB6/2xvef9xdH3/Z2pz/3N1ff91d33/b3J5/3Fzev90dnv/
    +dXd+/25wdf9wc33/dXd9/25xe/9qbXf/bnF7/3l7gf9zdn//eXuC/3Z5g/90d4D/d3mA/2xueP91d3//
    +dHeB/3N1e/95e4L/eXuB/3J0fP91eIH/cHN9/3Bzff9wc33/eXuB/3Bzff95fIb/cHN9/3N1fP9ucXv/
    +bG95/3Byef9ucXv/Z2p0/25xe/9qbXf/Z2p0/2ptd/9zdXz/am13/3V3ff9zdXz/bG51/2Rncf9sbnX/
    +dXd9/3Z4fP9nanT/bG51/25xe/9qbXf/am13/2ptd/9sb3n/cHN9/2xvef9ucXv/Zmlz/2ptd/9ucHf/
    +bnB3/2xudf9kZmz/dnh8/2Zobv9ucHf/c3Z//2xvef9qbHP/bnB3/3d6g/9zdn//cHN9/3N2f/9wc33/
    +cHN9/3l7gf9ucXv/bG95/2xvef9ucXv/cHN9/3N2f/9wcnn/bG95/3V3ff9ucHf/bnB3/3V3ff92eHz/
    +am13/25xe/9kZ3H/bG51/2psc/9qbHP/bG95/2dqdP9qbXf/amxz/25xe/9qbXf/Zmhu/2Zobv9zdXz/
    +bW9z/2psc/9ucXv/ZGdx/3N1fP91d33/c3V8/3Byef91d33/dXd9/3V3ff9ucHf/dXd9/25wd/9ucXv/
    +bnF7/25wd/91d33/dXiB/25xe/91eIH/cHN9/2xvef9ucHf/cHN9/2xvef9ucXv/bnF7/3Bzff9ucHf/
    +c3Z//3d6g/9zdn//cHN9/3Byef9tb3P/c3V8/25wd/9sb3n/am13/2psc/9qbHP/bG95/2Zpc/9nanT/
    +am13/2ptd/9kZ3H/amxz/2ptd/91d33/bG51/21vc/9wcnn/c3V8/3Bzff9nanH/bnF7/2xudf9tb3P/
    +cHJ5/2xudf9qbXf/bG51/25wd/9sbnX/Zmlz/25xe/91d33/c3V8/2xudf9sbnX/bnB3/3N1fP9zdXz/
    +dXd9/2xudf91d33/Zmlz/2ptd/9maXP/am13/2psc/9wc33/cHN9/3Bzff9qbHP/bG95/2ptd/9sb3n/
    +Zmlz/3V3ff9nanH/cHN9/2ptd/9ucXv/am13/2RmbP90dXv/cnR9/2ttdv9ucXn/cnV+/3N1fP9ucHf/
    +c3Z//3V4gf9zdXz/dXiB/3N2f/95e4H/dXiB/3Bzff95fIb/eXyG/3t9g/9zdn//c3V8/3l8hv94e4H/
    +dXd9/31/hf96fIL/eHuE/3Z5gf9zdXz/en2F/3R3f/9xc3r/cnR7/29xeP9wcnn/cXR8/3d5fv9wc3v/
    +c3Z+/3Fzev9vcXj/cnR7/3J0ef9xc3r/b3F2/25wef9vcnr/cnR5/2ptc/9ydHz/dXd//3R2fP9vcnv/
    +cHJ5/3R3gf9vcXj/c3Z//3p8gv9wcnn/Z2p0/2dqdP93eX//dnmC/3V3fv9ydX3/bXB6/29yeP9maXP/
    +Z2py/2ptdf9nanT/bnF5/3J1ff9sb3b/cHN9/3Bzff9ucXv/cHN9/3l8hv91eIH/d3qD/3N2f/9zdn//
    +c3V8/3Bzff91eIH/cHN9/3N2f/93eX//c3Z//25wd/9wc33/c3Z//25wd/93eX//d3l//21vc/9iZW7/
    +am13/3N1fP93eX//am13/2xudf9wcnn/bW9z/2xudf9sbnX/bG95/3N1fP9ucXv/cHN9/2dqdP9wc33/
    +c3V8/3Bzff9ucHf/bG95/3d6g/9sb3n/cHN9/3l7gf9wc33/bnF7/3N2f/9+gIb/eXyG/3N2f/91eIH/
    +c3Z//3Bzff91d33/cHJ5/25xe/9sb3n/bG95/25wd/9sb3n/Z2p0/2Rncf9ucXv/Zmlz/2dqdP9sb3n/
    +c3V8/2psc/9wc33/am13/2xvef9qbHP/am13/25xe/9nanT/bG51/21vc/9zdXz/bG95/2Rncf9kZ3H/
    +cHN9/2ptd/9nanT/bnF7/2dqdP9zdXz/dXd9/3V3ff9ucXv/cHN9/25xe/9wc33/amxz/2ptd/9nanT/
    +amxz/2dqdP9qbHP/bnF7/2ptd/9qbHP/Zmlz/2Rncf9iZW7/Zmhu/2Rncf9iZW7/ZGdx/2Zobv9maXP/
    +YmVu/2Rncf9maXP/Zmlz/2Zobv9kZ3H/Zmhu/2dqdP9maXP/Zmlz/2dqcf9kZ3H/Z2px/25xe/9qbXf/
    +am13/2xvef9sb3n/Zmlz/2ptd/9ucHf/dXd9/3Byef9ucHf/bnF7/3N2f/9zdXz/bnB3/3Bzff9ucXv/
    +bnB3/3V3ff9ucHf/bnB3/25wd/9ucHf/am13/2Zobv9zdXz/c3V8/3Byef9sbnX/bW9z/21vc/9wcnn/
    +cHJ5/3Bzff9sbnX/dXd9/2dqdP9sbnX/Zmlz/2dqdP9nanT/bnF7/3N1fP91d33/bnB3/3V3ff9ucXv/
    +cHJ5/25wd/92eHz/b3F1/3N1fP9zdXz/dnh8/25wd/9kZmz/bnB1/25xe/9tb3f/cHN9/3l7gf91eIH/
    +c3Z//3t9g/9wc33/bnB3/3Bzff9zdn//d3l//3V3ff9sb3n/bnF7/3Byef90dn3/bXB3/2ptdv9vcnv/
    +cnV+/21wdf9zdXz/bG93/25xev9tcHn/aGpz/3J0ev9wc3v/b3F6/3Bye/9pbHX/bnF5/2xvd/9xdH7/
    +a254/2ptd/9zdXv/bG95/29yev9zdXv/bnB2/25wdv9vcXX/b3F4/25wdf9sb3b/cHJ5/3V3fP93eX//
    +bnB3/3ByeP91eIH/bW94/3V3fv93eX//bW95/2Zpc/9nanT/dXd9/3R2ff9wcnn/cHN7/2xvef9rbnT/
    +Zmlz/2RncP9oa3P/Y2Zv/2Vocf9qbXb/a212/25xe/9qbXf/Z2p0/2dqdP9zdXz/bG95/3Byef9ucHf/
    +bG95/2ptd/9wc33/c3V8/2ptd/9sb3n/cHN9/2xvef9qbXf/am13/3Bzff9tb3P/dnh8/3l8hv9vcXX/
    +Zmhu/2xudf92eHz/d3qD/2xvef9ucXv/c3Z//3N1fP9wcnn/bG95/3Bzff93eX//c3Z//3V4gf9qbXf/
    +c3Z//25wd/9wcnn/cHJ5/2ptd/95e4H/am13/3Byef9zdn//c3V8/2ptd/9zdn//foCG/3l8hv93eoP/
    +eXuB/3V4gf95fIb/eXyG/3l7gf93eX//cHN9/3d6g/91eIH/d3qD/3N1fP9ucXv/e32D/3N1fP9zdn//
    +dXiB/3l7gf9wc33/cHN9/25wd/9wc33/cHJ5/25wd/91d33/amxz/2xudf9ucHf/dnh8/25wd/9kZ3H/
    +ZGdx/3N1fP9qbXf/bG51/3Bzff9nanT/bnF7/3V3ff9zdXz/bG95/3Bzff9qbHP/bG95/2dqdP9sb3n/
    +Z2p0/2xudf9qbHP/am13/3Bzff9ucXv/bG51/25wd/9qbXf/Z2p0/2xudf9qbXf/amxz/2ptd/9nanT/
    +Z2p0/2Zpc/9qbXf/bG95/25xe/9ucXv/bG95/2xudf9ucXv/Z2p0/2xudf9qbHP/am13/2xudf9wcnn/
    +bG51/2xudf9wcnn/bG95/2Rncf9sbnX/bnB3/3V3ff9wcnn/b3F1/25xe/91eIH/c3Z//25wd/9wc33/
    +cHN9/3Byef9zdn//bnF7/2ptd/9ucXv/bG95/25wd/9kZ3H/bnF7/25xe/9sb3n/Z2p0/2ptd/9sbnX/
    +bnF7/2xvef9qbXf/Z2p0/3N1fP9kZ3H/Z2px/2BjbP9iZW7/ZGdx/3N1fP9ucXv/am13/2xudf9wc33/
    +bG95/2xvef9qbXf/dXd9/21vc/91d33/bnF7/3h5ff9ucHf/ZGZs/3Bydv9ucXv/bG95/25xe/9zdn//
    +d3qD/25xe/93eX//c3Z//25wd/9zdn//c3Z//3l7gf95e4H/cHJ5/3Bzff9vcnz/dXd+/3Byef9rbnj/
    +cHN7/3Fze/9sbnb/cHJ4/2tueP9sb3j/bG95/2psc/9ydXz/cXN7/2lsdv9ydX7/aWtx/3Bye/9oa3T/
    +bXB5/2RncP9laHL/bW93/2ptd/9sb3n/bnF6/2ptd/9qbXf/am13/2xvef9qbHT/a210/21vc/90dnz/
    +dHZ8/25wd/9vcXb/c3Z//2xvd/9xdH3/cXR+/2tueP9maG7/Zmhu/3V3ff9zdX3/bnF7/3R3fv93eX7/
    +c3V8/3J1fv9ucXr/bnF6/2tud/9vcXj/dXiA/3R2fv9wc33/bnF7/25xe/9sbnX/dXd9/3V3ff91eIH/
    +dnh8/3N1fP9wcnn/bnF7/3d5f/9ucHf/cHJ5/3N1fP9zdXz/bnB3/3Byef9zdXz/b3F1/3Z4fP93eX//
    +bnB3/2dqcf9ucXv/dXd9/3l7gf9vcXX/bG95/3V4gf9zdXz/bnF7/2ptd/9wc33/d3l//3Bzff9zdn//
    +am13/3N2f/9wcnn/c3V8/25wd/9maXP/d3l//2dqcf9ucHf/bnB3/25xe/9nanT/cHJ5/3V3ff9wc33/
    +cHN9/3N2f/91d33/cHJ5/3Byef9ucHf/bnB3/2dqcf9zdXz/bnB3/3Bzff9sb3n/Z2p0/3V3ff9ucHf/
    +bnB3/3N2f/95e4H/cHN9/3N2f/9sb3n/cHJ5/2xudf9ucHf/dXd9/2xudf9ucHf/bnB3/3Z4fP9ucHf/
    +Z2px/2ZobP9zdn//bnF7/25wd/9zdXz/amxz/3Byef91d33/bG95/2xvef9wc33/bG51/25xe/9ucXv/
    +c3V8/2xudf9sbnX/Z2p0/2xudf9ucXv/bG95/2dqdP9sb3n/amxz/2Rncf9qbHP/bnF7/2dqcf9sb3n/
    +am13/2ptd/9qbXf/bG95/25xe/9ucXv/bnF7/2xvef9qbHP/bnF7/25xe/9qbXf/Z2p0/21vc/9sbnX/
    +bnF7/21vc/9ucHf/cHN9/3Byef9maG7/bnB3/3Byef9zdn//c3Z//2xvef9sb3n/cHN9/3N2f/9ucHf/
    +cHN9/3N1fP9ucHf/dXiB/3Bzff9qbXf/cHN9/25wd/9ucHf/Zmlz/3V4gf93eoP/cHN9/2xvef9wcnn/
    +bG95/25xe/91d33/bnF7/25xe/93eX//amxz/2xudf9qbHP/Zmlz/21vc/92eHz/dXd9/3Byef9tb3P/
    +d3l//2xvef9ucXv/amxz/3N1fP9nanT/bG95/2dqdP9sb3n/Zmlz/2Jlbv9sbnX/am13/2psc/9sbnX/
    +bnB3/3V3ff9sbnX/dXd9/3Byef9qbHP/bG51/2xvef9zdXz/c3V8/2ptd/9xdH3/bG54/25xe/9ucHf/
    +am11/25wd/9tb3b/bG52/2tudP9rbnf/aGt0/2Zpc/9naW//cXN6/3R2fP9qbXf/cnR8/2Zob/9kZ3H/
    +ZWhy/25wd/9laHH/aGt1/3Bzff9ucXv/cHN9/3Bzff9ucHf/amxz/29xdv9wcnr/b3F4/21vdv9ucHX/
    +dnh8/3V3ff9xc3v/cHN4/3N1fP9ydHz/dHeA/3h6gP9wcnn/Zmlz/2Zobv9wc33/cXN5/3Fzev9ydHr/
    +c3V8/29xef9tcHj/b3F3/2xudv9pa3T/bnF5/3N1fP9xc3n/c3V8/29xdf9ucXv/bG95/3d5f/91eIH/
    +d3qD/3N2f/9zdn//cHN9/3N2f/95e4H/c3Z//3N2f/9zdn//cHN9/2xvef9ucHf/c3Z//25wd/93eX//
    +d3l//3N2f/9maXP/cHN9/3N2f/93eX//bnB3/3Byef91d33/b3F1/29xdf9sbnX/dXd9/3N1fP9ucHf/
    +cHJ5/2Zobv9ucHf/am13/2ptd/9tb3P/Zmhu/3V3ff9iZW7/am13/2xvef9sbnX/Zmlz/2ptd/9zdXz/
    +c3V8/3N1fP91d33/bnF7/2xvef9zdXz/bnB3/25wd/9nanT/dXiB/25xe/9zdn//bnB3/2dqdP9zdn//
    +am13/25xe/9zdn//dXiB/25wd/9zdn//am13/25xe/9vcXX/bnF7/3N1fP9sbnX/bnB3/3Byef92eHz/
    +bnB3/2Zpc/9kZmz/cHJ5/2xvef9nanT/bnF7/2Zpc/9sb3n/c3Z//2xvef93eoP/dXiB/25wd/9zdn//
    +c3Z//3V3ff9ucHf/bnB3/2ptd/9ucHf/cHN9/3V4gf9wcnn/c3Z//25xe/9ucHf/bG95/3Bzff9wcnn/
    +dXiB/25xe/9ucXv/bnB3/3Byef9wc33/cHN9/25xe/9ucXv/bnB3/3N2f/9sb3n/b3F1/2xvef9vcXX/
    +bnB3/3N2f/9ucHf/bnB3/3Bzff9wc33/Zmlz/3Byef9zdXz/dXiB/3V4gf9ucHf/bG95/3N2f/91d33/
    +bG95/3N2f/91eIH/bnF7/3d5f/9ucXv/am13/3Bzff9ucHf/bnB3/2ptd/93eX//dXiB/3N2f/9sb3n/
    +cHJ5/2xudf9ucXv/c3Z//3N1fP9zdXz/dXiB/2xvef9wcnn/am13/2dqdP9ucHf/dXd9/3h5ff9zdXz/
    +bnB3/3h5ff9zdXz/c3V8/29xdf92eHz/bnB3/25xe/9qbXf/bnF7/2xvef9kZ3H/amxz/2dqdP9iZW7/
    +Z2p0/2xvef9ucXv/amxz/3N1fP9sb3n/ZGdx/2psc/9nanT/bG95/2xvef9oanH/cHN8/2tudv9sb3n/
    +bW92/21vd/9vcXj/b3F2/3J0e/9vcXj/dHZ8/2ptd/9oa3L/bW9z/3d5f/94eoD/cHJ5/3p8gv9ucHf/
    +cnR7/25wdP90dn3/bG52/3Bzev92eH//bnF7/3N2ff9xc3r/bnB4/2hrcv9tcHf/bXB6/2xudf9sbnX/
    +am10/2xvef9ydHr/am10/2ttcv9ucXn/aWx0/3J0fP9vcnn/a213/2Rncf9kZmz/bnF7/3Byef9sb3n/
    +dHZ8/3Bze/9sb3f/a212/2xvd/9rbnb/aGt1/25wef9sb3n/bG93/3Bzff9maXP/Z2p0/2psc/9ucXv/
    +bG95/3N1fP9maXP/ZGdx/2Rncf9nanT/bG95/2Zpc/9kZ3H/Zmlz/2Zpc/9kZ3H/Zmlz/2Zpc/9iZW7/
    +bG51/2xvef9kZ3H/XWBq/2Zpc/9sb3n/cHJ5/2Rncf9nanT/dXd9/2xudf9sbnX/am13/25xe/91d33/
    +bG95/3N1fP9nanH/dXd9/25wd/9ucXv/bnB3/2dqcf94eX3/Zmlz/2xvef9ucXv/b3F1/2xudf9sbnX/
    +c3V8/3N1fP91d33/dnh8/3N1fP9ucHf/cHJ5/2xudf9ucHf/Z2px/3N1fP9wcnn/bG95/2dqdP9iZW7/
    +bnF7/2Zpc/9sb3n/cHN9/3d5f/9qbHP/c3V8/2psc/9wcnn/b3F1/3Bzff9zdXz/bnB3/2xudf9wcnn/
    +c3V8/29xdf9qbHP/Zmhu/3Byef9ucHf/bnB3/3V4gf9wcnn/dXiB/3l8hv91eIH/c3Z//3V4gf9sb3n/
    +d3qD/3V4gf95e4H/cHJ5/3N1fP9sb3n/bG95/3N2f/9wc33/cHJ5/3V3ff9ucHf/bnB3/25wd/9zdXz/
    +bG51/3N1fP9sbnX/bnF7/21vc/9ucHf/c3V8/25xe/9sb3n/am13/2ptd/9sb3n/amxz/2psc/9nanT/
    +Z2px/2xudf9ucXv/amxz/2Zpc/9sb3n/bG95/2BjbP9nanT/bW9z/25wd/9ucHf/amxz/2xudf9sb3n/
    +c3V8/2ptd/9ucXv/dnh8/3Byef93eX//cHN9/2ptd/9zdXz/bG51/2xudf9qbHP/dXd9/3N1fP9zdXz/
    +amxz/25wd/9ucHf/bnB3/3V3ff9wcnn/dXd9/3d5f/9ucHf/b3F1/2ptd/9nanT/bnB3/3V3ff92eHz/
    +c3V8/2xudf92eHz/dXd9/3V3ff9wcnn/dnh8/3Byef9wc33/cHJ5/3Byef9zdXz/Zmhu/21vc/9qbXf/
    +Zmlz/21vdv9xdH7/dXd9/21vc/9zdXz/bnF7/2Rncf9sbnX/bnF7/25xe/9ucXv/aWxz/3Bze/9ydHr/
    +c3aA/3J1fv9ydXv/c3V8/3F0ff92eH//dnmC/3V4gf9sb3n/bXB6/29xef95e4H/eXuE/29yfP93eoT/
    +bnF4/3J1f/9zdXz/cnV+/29xdv9zdXz/c3Z+/29yev92eH7/b3F4/2xvef9rbXT/cHJ5/29xeP9xc3f/
    +bW9z/29xeP9xc3r/c3V9/3Bye/9zdXv/dXh//3Byef9xc3r/c3V8/29xdf9nanH/Zmhu/25wd/9sb3n/
    +bG95/3R2fP9ucXr/bG94/2hrdf9ucXv/aGt1/2dqc/9rbnf/bG94/2lsc/9nanT/XWBq/2Zobv9maG7/
    +bG95/2xvef9ucHf/Zmlz/2Zobv9maG7/Zmlz/2ptd/9maXP/ZGdx/2dqdP9nanT/Zmhu/2dqdP9nanT/
    +YGNs/2xudf9ucHf/Zmhu/11gav9maXP/am13/3Byef9maXP/Z2p0/25wd/9maG7/Z2px/2Rncf9sb3n/
    +bnF7/25xe/9wc33/Zmhu/3Bzff9nanT/bG95/2psc/9maXP/c3V8/2Jlbv9sbnX/bnB3/2xudf9maXP/
    +Zmlz/3Bzff9ucXv/bG95/25xe/9ucXv/bnF7/2xvef9sbnX/bnF7/2dqdP9zdXz/c3V8/3Byef9tb3P/
    +ZGZs/3Byef9sbnX/cHJ5/3V3ff93eX//b3F1/25wd/9nanH/bnF7/3Byef91eIH/dXiB/3N1fP9zdXz/
    +c3Z//3d6g/9wc33/bnF7/2xvef9zdn//c3Z//3N1fP91eIH/bG95/25xe/91eIH/c3Z//2xvef9zdXz/
    +amxz/3N1fP9qbXf/cHN9/2psc/9qbHP/amxz/2dqdP9ucXv/Z2p0/2psc/9sb3n/Z2p0/2Zpc/9qbXf/
    +bnF7/2ptd/9sb3n/am13/2xvef9vcXX/cHJ5/3Z4fP9zdXz/c3V8/3Byef9wcnn/dnh8/25xe/9sb3n/
    +bG95/2xvef9sb3n/dXiB/3N1fP9wcnn/dXiB/3Bzff9qbXf/bnF7/25wd/9sb3n/bnB3/29xdf9sbnX/
    +c3V8/3V3ff9sbnX/cHN9/3N1fP9ucHf/c3V8/2xudf9nanH/bG95/29xdf9ucHf/ZGdx/3N1fP9sb3n/
    +bG95/2Zpc/9sb3n/Zmlz/25wd/9wc33/bnF7/25xe/9zdXz/Z2p0/25wd/9qbHP/Z2px/2ptd/9zdXz/
    +dXd9/2xvef9sbnX/dXd9/2xvef9ucXv/Zmhu/2ptd/9nanH/bG95/2psc/9qbXf/Zmlz/11gav9laHL/
    +Z2lv/1xfaP9naW//am12/2xvef9sbnX/Z2p0/2Zpc/9iZW7/amxz/25xe/9ucXv/c3V8/2tud/9ydHv/
    +cHJ4/25xev9tb3b/bG51/21wef9ucHf/cXN6/3R2fP9wcnj/bG51/21vdv9rbXb/dHZ+/3J1fP9rbnb/
    +dHZ9/2xudf9tb3b/cXN5/2xvd/9ucHf/cHJ7/3Bzev9wcnn/c3V8/2xvef9ucHf/bG94/3J0ff9xc3v/
    +dHZ+/29yev9xdHz/bXB5/3BzfP9ucHr/dXeA/3h6gP9ydX7/cHN9/3N2f/9ucHf/am13/2dqdP9wc33/
    +cHN9/3N2f/95fIX/cXN9/25xe/9oa3X/c3V8/25wd/9sb3n/cHN9/3V3ff9wcnn/cHN9/2xvef9wc33/
    +bG95/3V3ff91d33/d3l//3N1fP9ucHf/b3F1/3V3ff94eX3/dXd9/3Byef9zdXz/cHJ5/2dqdP9sb3n/
    +bnF7/2xudf91d33/cHN9/2psc/9iZW7/am13/3Bzff9ucXv/amxz/2ptd/9zdXz/Z2px/2psc/9maXP/
    +Z2p0/2dqdP9maXP/Z2p0/2BjbP9ucXv/Z2p0/2xvef9sbnX/amxz/3Z4fP9maG7/bnB3/2xvef9sb3n/
    +bG95/2ptd/91d33/c3V8/3N1fP9zdXz/cHJ5/3N1fP9wc33/bnB3/3Bzff9qbXf/dXiB/3d5f/91d33/
    +bnB3/2RmbP9ucHf/am13/2ptd/9ucXv/dXd9/2xudf9qbXf/YmVu/2xudf9sbnX/bG95/2xvef9sbnX/
    +am13/3Bzff9zdXz/bG51/2Zpc/9kZ3H/bnF7/2xvef9qbHP/bG95/2psc/9sb3n/d3l//25xe/9kZ3H/
    +Z2p0/2BjbP9kZ3H/Zmhu/2ptd/9kZ3H/Z2px/2Zobv9nanH/am13/2dqdP9qbXf/c3V8/25xe/9qbXf/
    +bG51/25xe/9qbXf/cHJ5/29xdf9zdXz/b3F1/25xe/91d33/c3V8/3N1fP9ucXv/bnF7/3V3ff9wcnn/
    +bnB3/25wd/9ucHf/bnB3/3Bzff9vcXX/b3F1/25wd/9sbnX/Zmhu/21vc/9tb3P/bG51/2xudf9qbXf/
    +amxz/3Bzff9zdXz/bG51/3Bzff9wc33/bnF7/3Bzff9tb3P/bG51/3N1fP9vcXX/bnB3/2Zobv92eHz/
    +cHJ5/3N1fP9nanH/cHJ5/25wd/9zdXz/dXd9/3Byef9wc33/d3l//25xe/91eIH/bG95/3N1fP9zdXz/
    +dXiB/3l7gf9ucXv/cHJ5/3V4gf9zdXz/c3Z//25wd/9zdXz/bnF7/3V4gf9wc33/cHN9/3Bzff9qbHP/
    +bW93/29ye/9pbHX/b3F6/29yfP9xdH7/bnF7/3Byef9wc33/bG95/2xvef9zdn//bnF7/3Bzff9sb3n/
    +dHZ8/25xe/9xc3v/bnF7/21vdv9xc3r/cXN4/29yev9zdX3/cXN6/3F0fP9xdHz/b3J6/3d5gv9xdHv/
    +bW93/3R2fv9qbXb/a254/3R2f/9tcHr/cHN8/21wev9tcHn/bnF4/3Bye/9vcnz/bnB3/2tueP9tcHr/
    +bG51/25xev9qbXf/cHJ8/2xudf9qbXf/am13/3J0e/9ucXv/am13/2psc/9nanT/Z2px/2Jlbv9gY2z/
    +am13/2dqdP9qbXf/c3Z//2ptd/9qbXf/ZGdx/25xe/9sb3n/bG51/3Byef9ucXv/cHJ5/3Byef9tb3P/
    +cHJ5/25wd/93eX//d3qD/3d6g/91eIH/c3Z//25xe/93eoP/d3qD/3d6g/9zdn//dXiB/3d6g/9sb3n/
    +cHN9/3Bzff9zdn//e32D/3l7gf9wc33/bG95/3N2f/95e4H/foCG/3N2f/93eoP/eXyG/3Bzff9wc33/
    +dXd9/3d6g/95e4H/eXuB/3V4gf9wc33/e32D/3N1fP91eIH/c3Z//3Bzff95e4H/bG95/25wd/9ucXv/
    +cHJ5/2ptd/9sb3n/cHN9/3V4gf9zdXz/cHJ5/3Byef9wcnn/c3V8/29xdf9ucHf/Z2p0/3Bzff91d33/
    +cHN9/21vc/9kZ3H/bG95/2dqdP9sb3n/cHN9/3V3ff9qbXf/am13/2Rncf9nanT/amxz/2ptd/9nanT/
    +Z2px/2Zpc/9ucXv/bnF7/2dqcf9ZXGX/XF9o/2Zpc/9maXP/Zmhu/2Rncf9kZ3H/Z2p0/2xvef9maXP/
    +Z2p0/2xvef9maXP/bnF7/2xudf9wc33/amxz/2xvef9sbnX/bG51/3V3ff9ucHf/bnB3/3l7gf9ucXv/
    +bnB3/25wd/9zdXz/am13/3V4gf9wcnn/cHJ5/3Byef9zdn//d3qD/3N2f/9zdn//cHJ5/3Bzff95e4H/
    +cHN9/3Bzff9ucXv/cHN9/25xe/9wc33/bnB3/25wd/9wcnn/bW9z/2dqcf9vcXX/bnB3/25wd/9sbnX/
    +am13/2xudf91d33/c3V8/2ptd/9wc33/cHJ5/3Byef9zdn//bG51/2xudf9zdn//am13/25wd/9kZ3H/
    +c3Z//3N2f/9zdn//am13/3N2f/9wcnn/dXiB/36Ahv95fIb/eXyG/3t9g/9zdn//d3qD/25xe/9wcnn/
    +cHJ5/3N2f/95fIb/cHN9/25xe/93eX//bnF7/3Byef9vcXX/c3V8/25xe/91eIH/cHN9/25xe/9sb3n/
    +bG51/29xef9xdHz/aGtz/3Byef9ydHr/dHZ8/25xe/9ucXv/cHN9/25wd/9wcnn/dXiB/3Bzff9zdn//
    +bnF7/3Z4fv9xc3r/c3Z//21wev9tb3j/dHZ7/3J1ff9tcHr/cnV//29xef90dn//bXB6/3ByeP93eX//
    +cHF4/25wd/9zdXz/amxz/25wd/92eH7/bnB3/3N1fP9vcXj/aGt1/25wdP9vcXv/bnF7/2xudf9sb3n/
    +cHN9/2xudf9zdXz/bG51/3N1fP9sbnX/amxz/2ptd/91d33/bnF7/2xvef9qbXf/bG95/2psc/9kZ3H/
    +YGNs/2dqdP9nanH/Z2p0/3V3ff9qbXf/Z2p0/2BjbP9qbXf/Zmlz/2Zobv9nanT/Zmlz/2Zpc/9qbXf/
    +Zmhu/2dqdP9maG7/dXd9/3V3ff9zdXz/bG95/3Bzff9qbXf/cHN9/3d5f/9wc33/cHJ5/3N1fP91d33/
    +bG51/3Byef9wc33/c3Z//3d6g/93eoP/c3V8/25xe/9ucXv/dXd9/3V3ff9sb3n/bG95/3d5f/9sbnX/
    +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/Zmlz/25xe/9nanT/bG95/2xvef9iZW7/am13/2BjbP9iZW7/
    +Z2px/2Rncf9kZ3H/Zmlz/2ptd/9sb3n/bG95/2xudf9sb3n/bnF7/2xvef9sbnX/bnF7/2dqdP9ucXv/
    +dXd9/3N2f/9ucHf/Z2p0/25wd/9ucHf/cHJ5/3N1fP92eHz/bG51/2xudf9kZ3H/am13/25wd/9sbnX/
    +bG95/2xudf9nanT/cHN9/3Bzff9sbnX/YmVu/2Jlbv9ucXv/am13/2xudf9qbXf/Z2px/2xvef9wcnn/
    +bG95/25wd/9sb3n/Z2p0/2xvef9qbXf/c3V8/2xudf9wcnn/bG95/3N1fP97fYP/cHN9/3Byef95fIb/
    +dXiB/3Byef9zdXz/d3qD/25xe/97fYP/dXd9/3l7gf91eIH/eXyG/3l8hv91eIH/dXiB/3N2f/9wc33/
    +d3qD/3Bzff9ucHf/Z2p0/25wd/9wcnn/cHJ5/25wd/9vcXX/cHN9/29xdf9nanH/bG51/2xudf9qbHP/
    +am13/2dqdP9nanT/bnF7/2xvef9qbHP/am13/25xe/9qbXf/c3V8/2ptd/9nanT/bnF7/2dqdP9sbnX/
    +ZGZs/3Byef9ucXv/bG95/2Rncf9sb3n/Z2px/25xe/9wc33/am13/2xvef9wc33/am13/2xvef9kZ3H/
    +Z2p0/2psc/9qbXf/cHJ5/2dqcf9maXP/cHJ5/2psc/9sb3n/Z2px/2ptd/9nanT/Z2p0/2ptd/9nanH/
    +amxz/2dqdP9sb3j/cnV8/2Zpc/9vcXf/a253/25xe/9qbHP/Z2p0/2dqdP9kZ3H/bG51/2xvef9qbXf/
    +am13/2xudf9sb3n/aGt1/3V3ff9ucXj/bW92/3Z4fP91d33/bG92/3N1fP9sbnb/c3V8/25wd/9vcXX/
    +eHl9/3N1fP9sbnX/bnB3/2psc/9sb3n/dXiB/25xe/9wcnn/bnF7/2ptd/9qbXf/c3V8/25xe/9qbHP/
    +bG51/3N1fP9ucHf/cHJ5/25wd/9zdXz/bG51/21vc/9qbXf/d3l//2xvef9qbXf/am13/2psc/9qbXf/
    +ZGdx/2BjbP9qbXf/amxz/2xvef91d33/bG95/3N1fP9naW//c3V8/3Byef9sb3n/cHN9/3V4gf9wc33/
    +cHN9/25wd/9ucXv/bnF7/3d6g/91eIH/d3l//3V4gf9zdn//cHJ5/3N1fP93eX//c3V8/25wd/91d33/
    +c3V8/21vc/9qbXf/bnB3/2xvef9ucXv/am13/2Zobv9maG7/Zmlz/3Bzff9zdXz/bG51/2ptd/91d33/
    +bG51/21vc/9tb3P/bnB3/2xvef9sb3n/bG95/2Zpc/9ucXv/am13/3N1fP9ucHf/Z2px/3Z4fP9nanH/
    +bnB3/25wd/9vcXX/bG95/2xvef9zdn//c3Z//3N2f/9ucHf/c3V8/3Bzff9ucXv/bG95/3N1fP9nanT/
    +c3Z//3l7gf93eX//c3V8/3N1fP91eIH/cHJ5/3d6g/97fYP/f4GH/3d5f/9zdn//bnF7/3N2f/9zdn//
    +cHN9/3Bzff9ucHf/am13/3V3ff92eHz/bG95/2psc/9maXP/cHN9/25wd/9zdXz/cHJ5/2xvef9zdXz/
    +dXd9/3N1fP9ucXv/bnB3/2xudf91d33/bnF7/3V3ff9wcnn/bnB3/2ptd/9sbnX/dXd9/2xudf9sbnX/
    +eHl9/3N1fP9qbHP/bnB3/3V3ff9nanH/cHJ5/25wd/9ucHf/bG95/3N1fP9wcnn/cHJ5/3N2f/9ucXv/
    +c3V8/3V4gf9ucXv/bnF7/25wd/9wc33/c3Z//3N2f/9wcnn/c3V8/3V4gf9wcnn/Zmlz/25xe/9ucHf/
    +b3F1/25wd/9sb3n/cHN9/3V4gf9wc33/bnF7/25xe/9zdn//b3F1/3Z4fP9tb3P/amxz/3Byef9qbHP/
    +bnB3/2dqcf9zdn//cHN9/25xe/9nanH/c3V8/2xudf9ucXv/eXuB/3V4gf9zdn//c3Z//2xudf9ucHf/
    +bG51/25wd/9vcXX/c3V8/3d5f/9ucHf/cHJ5/3d5f/9ucHf/c3Z//3Byef9wcnn/c3V8/3Byef92eHz/
    +bG51/2xudf9nanT/bG95/2xvef9maXP/a210/2Vocv9ucXv/am13/2xudf9sbnX/Z2p0/2ptd/9ucXv/
    +bnB3/25xe/9qbXf/bG95/2Zpc/9zdXz/am13/2dqcf9wcnn/bnF7/2psc/9ucXv/am13/25xe/9qbXf/
    +am13/3Bzff9sb3n/Z2p0/2ptd/9kZ3H/bG51/3V3ff9ucHf/c3V8/2xvef9sbnX/bG51/3Bzff9ucXv/
    +Zmlz/2ptd/92eHz/bnB3/3N1fP9sb3n/dXiB/3Bzff9zdXz/c3V8/3h7hf91eIH/dXiB/3N2f/9zdn//
    +c3V8/2ptd/9ucXv/dXd9/3d6g/93eoP/fYCJ/3d6g/93eYD/bXB5/3N2f/9ucXv/bXB6/21wev9ydX7/
    +c3V8/3V3ff9sbnX/cHJ5/3Byef93eoP/d3l//3h5ff9zdXz/bnF7/2psc/9sb3n/dXd9/2xvef9nanT/
    +cHJ5/2ptd/9qbHP/am13/2xvef9sb3n/cHN9/25xe/9sbnX/bG51/2ptd/91d33/dXd9/2ptd/9qbXf/
    +c3Z//2dqcf9nanT/amxz/2xudf9sbnX/am13/2xvef9maXP/bG95/2psc/9ucXv/bG51/2Jlbv9wcnn/
    +YGNs/2Rncf9maXP/Z2px/2Zpc/9maXP/bG95/2dqdP9qbXf/Zmlz/2ptd/9qbXf/am13/2psc/9sb3n/
    +ZGdx/2ptd/9zdXz/cHJ5/2dqcf9iZW7/bG95/2dqcf9sb3n/am13/3N1fP9qbHP/am13/2Zpc/9qbHP/
    +am13/2xudf9ucHf/b3F1/2psc/9zdXz/dXd9/2psc/9maG7/Zmhu/3Z4fP9wcnn/cHJ5/25wd/9tb3P/
    +c3V8/3V3ff9zdn//bG51/2xvef9qbXf/bnF7/2ptd/91d33/c3V8/29xdf9wcnn/b3F1/3V4gf9ucXv/
    +bnB3/3l7gf9wc33/bG95/25xe/93eX//am13/3Bzff9wcnn/cHN9/3Bzff9wc33/bG95/2xvef92eHz/
    +bnB3/29xdf9ucHf/bG95/2ptd/9maXP/bnF7/2ptd/9qbXf/Z2px/2Rncf9nanT/Zmhu/2BjbP9nanT/
    +Zmlz/2Zpc/9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2xvef9qbXf/cHN9/2xudf92eHz/b3F1/2psc/9wc33/
    +cHJ5/3N2f/9maXP/cHN9/3Bzff9wc33/am13/3N2f/9ucHf/c3Z//3V4gf9ucXv/c3Z//3N2f/9ucXv/
    +dXiB/3N2f/9zdXz/cHN9/3d6g/9+gYr/c3Z//3d6g/95fIb/c3V8/3l7gf9zdXz/d3qD/3d6g/93eoP/
    +eXuB/3N2f/9zdn//c3V8/3l7gf91eIH/bG95/25xe/9qbXf/c3Z//3V3ff9ucHf/bG95/2dqdP9sb3n/
    +cHN9/25xe/9zdn//bnB3/3Bzff9ucHf/d3qD/3Bzff9ucHf/dXiB/3V4gf9wcnn/c3Z//3Bzff9zdn//
    +bnF7/3Byef97fYP/d3qD/2xvef9zdn//Z2p0/25xe/91eIH/bnF7/3V3ff91eIH/cHN9/3V3ff97fYP/
    +d3qD/3N1fP9ucXv/dnmC/3Bzff90d4D/bnB3/3R3gP9wc3z/cHJ5/3ByeP90d33/bnF7/3R3gP9vcXj/
    +b3F3/3Byef9maXP/Z2px/21vc/9tb3P/bnB3/3V3fP9xc3v/cHN7/2lsdP9sbnb/bW92/2lrdP9tb3f/
    +b3F4/3Byev9wc33/bnB3/3Byef9wc33/eXyG/3d6g/93eX//c3Z//3N2f/9ucHf/cHN9/3V4gf9zdn//
    +bnF7/3d5f/91eIH/bnB3/25xe/9ucXv/bnB3/3V3ff9zdXz/bnB3/29xdf9wcnn/dnh8/3l7gf9wcnn/
    +cHJ5/3V4gf9qbXf/bnB3/21vc/9ucHf/am13/25wd/9sbnX/ZGZs/25wd/9tb3P/c3V8/2xudf9qbHP/
    +dXd9/2dqdP9sbnX/cHJ5/21vc/9ucHf/bG95/25xe/91eIH/c3Z//25xe/9zdn//cHN9/25xe/9vcXX/
    +cHN9/2dqdP9sb3n/dXd9/3Z4fP9tb3P/Z2px/3Byef9sbnX/bnF7/2ptd/91d33/bnB3/25wd/9nanH/
    +bW9z/2xudf9sb3n/bG95/2psc/9kZ3H/cHN9/25xe/9maXP/YmVu/2Rncf9sb3n/am13/2xudf9qbHP/
    +bG51/3Byef9zdXz/bnF7/3Byef9wcnn/b3F1/3Bzff9ucXv/d3l//3Bzff9ucHf/bnF7/25wd/95e4H/
    +bG95/29xdf93eX//bnF7/2xvef9ucXv/c3Z//2dqdP9zdn//bnF7/3Bzff9wc33/cHN9/3V4gf91eIH/
    +e32D/3N2f/9wc33/cHN9/25xe/9zdn//cHN9/3d6g/93eoP/dXiB/3N1fP9wc33/c3Z//2xvef9maXP/
    +cHN9/25wd/9zdXz/c3Z//2xvef9sb3n/cHJ5/25xe/9wc33/bnB3/3Bzff9ucHf/eHl9/29xdf9qbHP/
    +bnF7/29xdf9zdXz/Zmlz/3Bzff9zdXz/cHJ5/2xvef93eoP/cHJ5/3Bzff91eIH/c3Z//3Bzff9wc33/
    +am13/25xe/9ucHf/bnB3/25wd/9wc33/dXd9/2xvef9zdXz/eHl9/29xdf92eHz/bG51/2ptd/9qbXf/
    +bnF7/25xe/9qbXf/Z2px/2Zobv9sb3n/bnF7/2Jlbv9maXP/Zmlz/25xe/9ucXv/bG51/2xudf9qbHP/
    +amxz/25xe/9zdn//c3Z//3Byef9zdn//bnF7/3l8hv9zdn//c3V8/3d6g/97fYP/dXiB/3Z5g/93eoP/
    +dnmC/3V3gP9wc33/fYCJ/3p8g/9wc33/d3qD/2ptd/9wc33/dnh+/3Byef90dnz/a254/2tueP9oa3X/
    +c3V8/29yfP9pbHX/am13/3N1fv9sb3n/bG95/2xudf9xc3r/bnB0/3Byd/9sbnT/cXN5/25wd/9vcnv/
    +cHJ2/25wdf9vcXX/amxz/2dqcf9tb3P/bG51/25wd/9zdXz/cXN6/25wef9sbnb/bnB3/21vdv9tb3X/
    +cnR7/3Fzev9ucXn/bG95/2ptd/9sb3n/bG51/3d5f/93eX//c3V8/3Bzff9sb3n/am13/2xvef91d33/
    +dXd9/2xudf91d33/dXd9/2xvef9ucXv/cHN9/3N1fP9zdXz/bnB3/25wd/9vcXX/bnB3/3V3ff93eX//
    +cHN9/25xe/93eoP/Z2p0/2xvef9sbnX/cHJ5/25wd/9sb3n/bnB3/2RmbP9ucHf/bG95/3N2f/9ucXv/
    +bG51/3d5f/9ucHf/bnB3/3Bzff9wcnn/bnB3/2xvef9ucXv/dXiB/3d6g/91eIH/d3qD/3N2f/9wc33/
    +cHJ5/3Bzff9sb3n/bnF7/3N2f/91d33/cHJ5/2ptd/9zdn//bG51/3Byef9wcnn/bnF7/2ptd/9sb3n/
    +Z2p0/21vc/9ucHf/bG95/3Byef9ucHf/amxz/3V3ff92eHz/bnB3/2dqcf9qbHP/dXd9/3Byef9sbnX/
    +b3F1/29xdf9ucHf/c3V8/3N1fP9sbnX/am13/2psc/9sb3n/Z2px/25xe/9nanT/amxz/2dqcf9nanH/
    +dXd9/2psc/9sbnX/dXd9/2xudf9maXP/amxz/25xe/9nanT/bG95/2xvef9qbXf/bnB3/2xudf9qbXf/
    +am13/3N1fP9tb3P/bG51/2xvef9sb3n/am13/2Zpc/9ucXv/am13/2psc/9kZ3H/Z2px/2ptd/9nanT/
    +Zmlz/2ptd/9sbnX/bG51/21vc/9sbnX/bnB3/2xvef9wcnn/c3V8/2xvef93eX//cHN9/3d5f/9sb3n/
    +am13/25xe/9wcnn/c3Z//2ptd/93eoP/c3Z//3N2f/9ucHf/c3Z//25wd/9wcnn/cHJ5/25wd/9wcnn/
    +c3V8/2xudf9wcnn/bG51/2xudf9sbnX/am13/3Bzff9sbnX/cHJ5/3h5ff9tb3P/dXd9/3Byef9zdXz/
    +c3V8/3V3ff92eHz/cHJ5/25wd/9ucHf/cHN9/3N2f/9sb3n/cHN9/3Bzff93eoP/eXuB/3V4gf91eIH/
    +bG95/3N1fP95e4H/fn+D/3t9g/95e4H/fX6B/3Bzff99gIr/cnV+/3J0e/90d4D/d3mA/3R3gP90dn//
    +dHeA/3V4gf90dn7/b3F4/3l8hP94eoD/bG95/3BzfP9pa3L/b3F6/3V3ff9ucXr/dHZ9/2ptdv9rbXb/
    +a212/3R2fP9wc33/bG52/25weP90dnv/bnB3/21weP9pbHb/am11/2lsc/9sb3f/bG5z/21veP9vcXj/
    +bG95/29xef9ucHf/bW90/2Zobv9nanH/bG51/2xudf9sbnX/dHZ7/25weP9rbnj/Zmly/2Zpc/9nanL/
    +Y2Zw/2ptd/9qbXX/am13/2xvef9qbXf/bG95/2xudf9zdn//c3V8/3Bzff9wc33/am13/2psc/9nanT/
    +dXd9/3N1fP9qbXf/dXd9/3Bzff9sbnX/bG95/25xe/9wcnn/dnh8/3N1fP9ucHf/bW9z/2xudf93eX//
    +dXiB/25xe/9ucHf/eXuB/2xudf9wcnn/bG51/2xvef9ucHf/bG51/2ptd/9kZ3H/am13/2dqdP9qbXf/
    +am13/2Zpc/9zdXz/bG51/2dqdP9sb3n/Z2px/2dqcf9qbHP/bG51/25xe/9ucXv/bG95/2xvef9qbXf/
    +bG51/2dqdP9qbXf/Zmlz/2xudf9sb3n/cHJ5/2psc/9kZ3H/Z2p0/2dqdP9sbnX/bG95/2ptd/9qbHP/
    +bG51/2BjbP9qbHP/Z2px/2psc/9qbXf/bG51/2Zpc/9qbXf/bnF7/2dqdP9gY2z/YmVu/2ptd/9nanT/
    +Z2p0/2dqcf9qbHP/am13/2xvef9ucXv/bnB3/25wd/9ucHf/c3Z//25wd/9zdn//cHN9/2xvef9sb3n/
    +bW9z/3l7gf9vcXX/bnB3/3V3ff9ucXv/bG95/25wd/9wc33/bG51/3Byef9ucHf/bnB3/3N1fP9ucHf/
    +bnB3/29xdf91d33/b3F1/21vc/9sbnX/bnB3/25wd/9ucHf/c3V8/25wd/9ucHf/bnB3/29xdf91d33/
    +b3F1/2Zobv9wcnn/am13/2dqdP9qbHP/Zmlz/2xudf9sb3n/bG95/2ptd/9qbHP/cHJ5/2Zpc/9sb3n/
    +Zmhu/11gav9iZW7/Zmhu/2Zpc/9dYGr/am13/2dqdP9maG7/YmVu/2dqdP9kZ3H/Zmhu/2Rncf9kZ3H/
    +am13/2dqdP9iZW7/Z2px/2BjbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Zpc/9ucXv/Zmlz/3Byef9nanT/
    +Z2p0/2xvef9ucXv/bG95/25xe/9sbnX/bG51/3J0e/9xdHv/aGt1/2tueP9pbHb/bG95/2xvef9sbnX/
    +bnB3/2Zobv9maXP/am13/3Bzff9ucXv/am13/25xe/9qbXb/dHeA/25xe/9rbnb/bnF6/3Bzff9ucXr/
    +bXB5/3Fzev9xc3v/b3F5/29xef91d3//d3l//3F0fP92eID/cHJ5/3R2fP93eYH/cHJ6/3d5gf95fIX/
    +eHqC/3d5fv98foT/fH6F/3N1fP90dnz/eXuA/3d5gP9ydHz/c3V9/3Z4fv90dnz/dnh8/3F0ev9zdXv/
    +dXd9/3h6gP90dn3/dHZ+/3Bzff9sb3n/bG95/3N1fP9wc33/c3Z//3d6hP90dn3/c3Z//2lsdv9tcHr/
    +bW93/21vd/9zdXz/am13/29xeP9wc33/am13/3Byef9ucHf/eHl9/3Z4fP91d33/dXd9/25wd/9sb3n/
    +bnB3/3V3ff91d33/bnB3/3V3ff92eHz/b3F1/3Byef9wcnn/dXd9/3V3ff9ucHf/am13/2xudf9qbXf/
    +dXd9/3l7gf9ucHf/bG95/3V4gf9maXP/am13/2dqcf9qbHP/amxz/2dqdP9nanH/XWBq/2Zpc/9maG7/
    +am13/2xvef9nanT/c3V8/2dqcf9qbHP/bG95/2dqdP9qbHP/bG51/2xudf9wc33/am13/25xe/9qbXf/
    +am13/2ptd/9qbXf/bG95/2ptd/9qbHP/cHN9/3d5f/9sb3n/bnB3/3Byef9tb3P/bW9z/25wd/9zdXz/
    +b3F1/2xudf9sbnX/bG95/2xudf9ucHf/bG95/2ptd/9qbXf/bnF7/3d5f/9nanT/amxz/2psc/9ucXv/
    +bnF7/3N2f/9wcnn/bnF7/2xvef9zdXz/dnh8/3Byef9ucHf/am13/25xe/9tb3P/dXd9/3Bzff9sbnX/
    +amxz/2xudf9zdn//am13/2xudf91d33/bG95/2ptd/9qbHP/bG95/2Rncf9nanT/Z2p0/2psc/9ucXv/
    +amxz/2dqdP9sb3n/bnF7/2xudf9qbHP/am13/2ptd/9sbnX/am13/3Byef9sb3n/bnB3/25wd/9wcnn/
    +dXd9/25wd/9maXP/dXiB/25wd/9ucHf/cHJ5/25wd/9zdXz/cHN9/3N2f/9wc33/cHN9/3d6g/9wc33/
    +eXuB/3N2f/9ucXv/cHJ5/25wd/9ucXv/Z2p0/3V3ff9sbnX/bnB3/25wd/94eX3/bnB3/25wd/9sb3n/
    +bG95/3N1fP9qbXf/Z2p0/2ptd/9sbnX/bW9z/25wd/9zdXz/dXd9/25wd/9zdn//d3l//2xvef93eX//
    +c3Z//3Bzff91eIH/d3l//3l7gf9zdn//c3Z//3V3ff93eoT/enyD/3V3ff94e4P/eHqB/3V4gv90d4D/
    +bnF7/3V4gf9qbXf/Z2p0/2xvef9wc33/c3V8/25wd/9ydHz/bnF6/3R3f/9ucHn/bG93/29yfP9ydHv/
    +b3F4/25wdf9wcnf/bW92/25wdP9vcnr/cnR8/3V3fv9ucHf/dXh//2xud/9ydHz/dHd//25xef9zdn//
    +c3V8/3J0ef9wc3z/c3V9/3R3gP9sb3f/bXB6/3V4gv9ucXv/b3J8/2xvef9vcXj/bnB4/3Bzev9vcXj/
    +cXN6/25wd/9ydXz/cHJ4/21wef9tb3P/Zmhu/2dqcf9sbnX/bW9z/2ptd/91d33/bnB0/25xe/9maXP/
    +bnB3/21vc/9tb3P/c3V8/2ptd/9qbXf/bnF7/2xudf9sb3n/amxz/3V3ff9zdXz/bnF7/3Bzff9nanT/
    +amxz/2Zpc/9wcnn/bG95/2xudf9qbXf/bG95/2Zobv9maXP/Zmlz/2Zpc/9qbXf/Z2p0/2dqcf9maG7/
    +amxz/25wd/9zdn//am13/2ptd/9zdn//am13/2xvef9qbXf/am13/2ptd/9zdXz/bnB3/2dqcf91d33/
    +b3F1/3N2f/93eoP/c3V8/3t9g/9zdXz/c3V8/3Bzff9sb3n/bnB3/25xe/9sb3n/c3Z//25wd/9zdXz/
    +bnB3/2xudf9sbnX/amxz/2xudf9qbXf/bG51/2xvef91eIH/am13/2dqcf9nanH/Zmhu/2Rncf9maXP/
    +am13/2Zobv9qbHP/Zmlz/2psc/9nanH/amxz/2xudf9qbHP/amxz/2xvef93eX//am13/2dqdP9nanH/
    +bnF7/25xe/9wc33/b3F1/29xdf9ucHf/cHJ5/3Z4fP91d33/bG51/21vc/9ucHf/bW9z/3N1fP9wc33/
    +am13/3Byef9ucHf/d3l//3Byef9sbnX/dXd9/2xvef9nanT/Z2p0/2xvef9maXP/amxz/2ptd/9sbnX/
    +c3V8/2xudf9nanT/bG95/25xe/9qbXf/bG51/2ptd/9qbHP/bG51/2ptd/9sb3n/bG51/2ptd/9sbnX/
    +cHJ5/3V3ff9wcnn/Z2px/3N2f/9nanT/bnB3/25wd/9ucHf/cHJ5/3Byef9wc33/cHN9/3Byef93eoP/
    +c3Z//3V4gf9sb3n/bG95/25wd/9vcXX/cHJ5/2dqcf9zdXz/bG95/2ptd/9maXP/d3l//2dqcf9qbXf/
    +amxz/2Zpc/9qbXf/Zmhu/2Jlbv9maG7/Zmlz/2Rncf9nanH/am13/2xvef9maXP/am13/3V3ff9qbXf/
    +dXd9/3N1fP9ucHf/dXd9/3N1fP93eX//cHN9/25wd/9sb3n/bG95/25xef9qbXX/b3J8/3N1e/9xc3z/
    +c3Z//25xe/9zdn//am13/3Byef9wc33/d3qD/3l8hv90d4D/dHeB/29xev90d4H/cXN7/21wef9tcHr/
    +dHZ8/29yev9wc3r/dXh//3N1fv9wc3v/cnV9/3Z4gf94en//c3V8/3p8gf9rbnf/b3F7/3V3ff9ucXv/
    +dHeA/3V4gf9ydX//cnR7/3h7hP98foX/cnV+/3d6hP99gIr/dnmB/3R3gP9zdXz/dnmB/3R3gP9wc33/
    +bnF7/3J1fv9tcHr/dnh8/21vdv9wc33/bnB3/2dqdP9qbXf/bnF7/25wd/9wcnn/d3l//3N1fP91eIH/
    +cHN9/3V4gf9wc33/c3Z//36Ahv93eoP/c3Z//3V4gf9wcnn/bnF7/3Byef95e4H/dXiB/3l7gf95e4H/
    +c3Z//25xe/9ucXv/d3qD/3Bzff9ucHf/bnF7/3V4gf9wcnn/cHJ5/25wd/9ucHf/c3V8/3Byef9vcXX/
    +bG51/3N1fP92eHz/dnh8/25wd/9wcnn/dXd9/2xudf9ucHf/bnB3/29xdf9ucXv/c3Z//3N2f/9maXP/
    +c3Z//3Byef9wc33/c3Z//2xvef91d33/cHJ5/25wd/9ucXv/am13/25wd/9wc33/cHJ5/3V3ff9ucHf/
    +c3V8/25wd/9ucHf/cHJ5/29xdf9tb3P/bnB3/2ptd/9sb3n/d3l//25wd/9tb3P/bG95/25wd/9tb3P/
    +cHJ5/3Byef9sbnX/bG51/2xudf9tb3P/am13/2xudf9ucHf/bG51/21vc/9zdXz/dXiB/2xvef9sb3n/
    +am13/25xe/9wc33/c3Z//2xvef9vcXX/bG95/25xe/9zdn//dXiB/25xe/9ucHf/bnF7/2xvef9zdn//
    +dXd9/25wd/9ucHf/bnB3/3d5f/9zdXz/bnB3/3N1fP9sbnX/Zmlz/2psc/9qbXf/ZGdx/2dqcf9qbXf/
    +Zmhu/2xvef9nanH/ZGdx/2dqdP9sb3n/amxz/2xudf9sb3n/bG51/2ptd/9sbnX/cHJ5/25xe/9sb3n/
    +bnF7/25xe/93eX//cHN9/2ptd/93eoP/cHN9/3Byef9wcnn/dXd9/3V3ff94eX3/e32D/3l7gf93eX//
    +f4KM/3l8hv97fYP/d3qD/3N1fP91d33/c3Z//3V4gf9wc33/eXuB/3V4gf9wcnn/bnB3/3l8hv9ucHf/
    +c3Z//3Bzff9wcnn/cHN9/3Byef9wcnn/cHJ5/25wd/9sbnX/bG95/3Bzff9ucXv/bnB3/25xe/93eX//
    +bnB3/3V3ff9zdXz/bnB3/3V3ff9zdXz/d3l//3Bzff9ucHf/bG95/3R3gP91dnz/bnB3/3J0fP92eHz/
    +b3F4/3J0e/9ucHf/c3V8/2psc/9qbXf/bG51/3Bzff9ucXv/c3V8/3J0e/9rbnT/c3V8/21wef9ucHf/
    +bW92/3V3fP9tb3b/a212/21wev9qbXf/b3F4/2ttdf92eH//cnR7/25xeP91d33/Z2py/2xvef91d33/
    +bnB3/3N2fv9vcnv/a254/2hrdf90d33/cHN9/2dqcv9nanT/dXiB/2dqdP9maG7/ZGdx/2Zpc/9qbHP/
    +ZGdx/2BjbP9maXP/XWBq/25wd/9gY2z/Zmlz/2Zobv9maXP/Z2p0/2xudf9sbnX/bnB3/3N1fP9vcXX/
    +cHJ5/2Zobv9sbnX/bG51/25wd/9wcnn/bnB3/25wd/91d33/cHN9/25wd/9ucHf/dXd9/3V3ff91d33/
    +c3Z//3N1fP9ucHf/cHJ5/3V3ff9qbXf/bG51/25wd/9wc33/am13/2xvef9sbnX/cHJ5/3Byef9ucHf/
    +bG51/25wd/9zdXz/c3V8/3V3ff9ucXv/bnF7/3V3ff9qbXf/bG51/21vc/9sbnX/am13/3N1fP9wcnn/
    +Zmlz/3N2f/9ucHf/cHN9/3V3ff9wcnn/cHN9/29xdf9sb3n/bG95/2ptd/9sb3n/bnF7/2xvef91eIH/
    +cHN9/3N2f/9ucXv/bnF7/3N2f/9wcnn/bnF7/2xvef9ucHf/cHJ5/3Z4fP9ucHf/bW9z/2ptd/9sb3n/
    +bG51/3Byef9ucHf/am13/2xudf9qbXf/am13/25wd/9tb3P/bG51/2dqdP9qbHP/bG95/3V3ff9qbXf/
    +Zmlz/2xudf9ucHf/dXd9/3V3ff9ucXv/cHJ5/3Bzff9ucXv/c3Z//3Z4fP9sbnX/b3F1/2xvef9ucHf/
    +d3l//3V4gf9ucHf/bnF7/2xvef93eoP/cHJ5/25wd/9wcnn/bnB3/2dqdP9sbnX/am13/2Zpc/9qbXf/
    +am13/2dqdP9wc33/Z2p0/2dqdP9zdXz/bnF7/2psc/9sbnX/bG51/2xudf9sbnX/bG51/2ptd/9sbnX/
    +Z2p0/2xvef9qbXf/dXd9/2xudf9nanH/cHJ5/2psc/9sbnX/bG51/2xudf9sbnX/bnB3/3Byef9ucHf/
    +bnB3/3l7gf91d33/c3Z//3Byef9sbnX/am13/2xudf9sb3n/ZGdx/25xe/9qbXf/am13/2xudf95e4H/
    +bnB3/2xudf9sbnX/bW9z/3Byef9sbnX/bnB3/25wd/9qbXf/bG51/25wd/91d33/cHJ5/2xudf9wcnn/
    +d3l//2xvef93eoP/dXiB/3N2f/91eIH/c3Z//3l8hv91eIH/cHJ5/3N1fP9ydHz/cXN5/3Byef90d3//
    +dXd9/3BzfP9wc3z/bG95/3Bzff9nanT/bnB3/3Bzff9zdn//cHN9/3V4gf90d4D/aGt1/3Z5g/9ucXr/
    +dHeA/3BzfP94e4T/cHN9/3BzfP9wc33/dXiA/3N1fv9sb3n/eXuB/3N2f/9wcnn/d3qD/2ptd/93eoP/
    +eXyG/3V4gf95fIb/eXuB/3Byef9sb3n/e32D/3d5f/9ucHf/bnB3/3t9g/9ucHf/b3F1/2xudf9ucHf/
    +bW9z/2dqcf9kZ3H/am13/2psc/91d33/amxz/25wd/9tb3P/bG51/29xdf9wcnn/b3F1/3N1fP91d33/
    +bnB3/2xvef9kZ3H/bG95/3Bzff9ucXv/d3qD/3V4gf9wc33/d3qD/3V4gf9wc33/dnh8/35/g/9+gIb/
    +fX6B/36Ahv97fYP/dXiB/3d6g/95e4H/c3Z//3Bzff91eIH/e32D/3d6g/93eoP/c3Z//3d6g/93eoP/
    +dXiB/3N2f/9wc33/dXd9/3d5f/95e4H/dXiB/3V3ff94eX3/bnB3/25wd/9sbnX/bG51/2xudf9ucHf/
    +bnF7/2ptd/9wc33/bnB3/25xe/9zdn//bG95/3Bzff9ucHf/cHJ5/25xe/9sbnX/bG51/3Byef9wcnn/
    +dXd9/2xudf9zdXz/bG51/25wd/9zdXz/bnB3/25wd/9ucHf/bG95/3N1fP92eHz/bG51/21vc/9wcnn/
    +c3V8/2xudf91d33/bG95/2xudf9sbnX/amxz/2ptd/9sb3n/am13/2psc/9qbHP/bG51/2xudf94eX3/
    +am13/2dqdP9ucHf/bnF7/3V3ff92eHz/bnB3/29xdf9zdXz/cHJ5/25wd/9zdXz/bG51/2ptd/9qbXf/
    +amxz/25xe/9wcnn/Z2p0/2xudf9ucHf/d3qD/2ptd/9ucXv/bnF7/2xudf9qbXf/am13/2xvef9maXP/
    +bG51/2ptd/9sbnX/cHN9/2dqdP9maXP/c3V8/3Bzff9sbnX/bG51/2xudf9sbnX/bW9z/2ptd/9qbXf/
    +amxz/2dqdP9sb3n/bG51/3N1fP9qbHP/ZGdx/2dqdP9maXP/amxz/2ptd/9nanH/am13/2dqdP9sb3n/
    +bG51/25wd/95e4H/dnh8/3V3ff9zdXz/bnB3/25wd/9ucHf/bG95/2Zpc/9zdn//bnF7/2xvef9wcnn/
    +foGK/3N1fP9wc33/c3Z//3Bzff9ucXv/am13/2xvef9vcXX/bG51/21vc/9vcXX/dXd9/3Bzff9nanT/
    +bnF7/3V3ff9nanT/dXd9/3Byef9sb3n/dXd9/25wd/91d33/bG95/2dqdP9qbHP/c3Z//3N1ff9rbXT/
    +cHJ5/25wd/9rbnj/bnF7/2ptd/9wc33/bG51/21vc/9ucHf/bnF7/2xvef9wc33/am13/2Vocv9zdn//
    +bG51/25xe/9maXP/bnB3/2dqcf9nanH/amxz/2ptd/9maXP/YmVu/25wd/9kZ3H/YmVu/2Zpc/9cX2j/
    +Z2p0/2xvef9maXP/Z2p0/3V3ff9sb3n/bG95/3l7gf91eIH/bnB3/3Bzff9+gIb/bnF7/29xdf9sb3n/
    +bnF7/25wd/9sb3n/Z2p0/25xe/9qbXf/d3l//2dqdP9ucXv/bnB3/2ptd/9ucHf/bnF7/2xvef9zdXz/
    +dXd9/25wd/9sb3n/aGp0/2xvef9tb3f/bnB3/3J1fv9tcHr/bnF6/3V4gf9wc33/c3V8/25wd/9zdn//
    +c3Z//3N2f/9ucXv/dXiB/3Byef9wc33/c3Z//3Byef9ucHf/cHN9/3d5f/9wc33/cHN9/25wd/91eIH/
    +c3Z//3Bzff9vcXX/bnB3/3d5f/91eIH/dnh8/3V3ff91d33/d3l//3Byef9ucXv/bG95/2xvef9ucHf/
    +c3V8/3N1fP9sbnX/c3V8/29xdf9wcnn/dXd9/25wd/9zdXz/am13/2xudf9sb3n/Z2p0/2xvef9sb3n/
    +amxz/25xe/9sbnX/cHN9/2psc/9sb3n/bnF7/2psc/9nanH/Zmlz/2Zpc/9nanT/bnB3/2Zobv9qbHP/
    +Z2p0/25xe/9nanT/bnF7/2xudf9sbnX/cHJ5/21vc/9ucHf/bG95/2xvef9ucXv/am13/25wd/9ucHf/
    +dnh8/2xudf9nanH/b3F1/25xe/91d33/c3Z//2xvef9wcnn/c3Z//3Byef9ucHf/dXiB/3Bzff9ucXv/
    +bnF7/3N2f/91eIH/c3Z//2xvef9wc33/c3V8/36Ahv9ucHf/dXd9/3V3ff9tb3P/Z2p0/2xudf9qbXf/
    +Z2p0/2xudf9vcXX/b3F1/3V3ff9ucHf/bnB3/3V3ff91eIH/bnB3/2xvef9ucXv/cHN9/25xe/9zdn//
    +d3qD/3d5f/9zdXz/e32D/3l7gf9+f4P/e32D/3l7gf9+gYr/d3qD/3l7gf9+gIb/d3l//3V3ff91d33/
    +eXuB/3V3ff93eX//gYOK/36Biv97fYP/d3qD/3Byef9ucHf/bnF7/25wd/9maG7/cHN9/2xvef9kZ3H/
    +Z2p0/3V4gf9nanH/Z2px/2psc/9nanH/Z2px/2Jlbv9kZ3H/Zmlz/2Zpc/9maG7/ZGdx/2Rncf9maXP/
    +YGNs/2dqdP9wcnn/ZGdx/3V3ff9sb3n/bG51/3N1fP9sbnX/d3l//3Byef9vcXX/bG51/3V4f/90d37/
    +bW90/3N1fP9ucHf/bnB3/3N2f/9sb3n/cHJ5/2dqdP9ucHf/cHN9/3Bzff9ucHf/c3V8/3Byef9maG7/
    +d3qD/2xudf9wcnn/am13/3N1fP9sb3n/bW9z/25wd/9ucHf/bnB3/2xudf91d33/cHJ5/2xudf9wc33/
    +ZGdx/2xvef9wcnn/bG95/2xudf91d33/c3V8/2xudf94eX3/d3qD/25wd/9ucXv/foCG/3Bzff9wcnn/
    +bnF7/25xe/9ucHf/am13/2psc/9rbnj/a254/3d6hP9wcnn/dXiB/3N1fP9ucXv/cHN9/3Bzff9wc33/
    +eXuB/3Z5gv91eIH/cHJ8/2lrdP9rbnj/bW93/29xef9xdH3/bnF7/21wev9zdn//c3Z//3Bzff9ucXv/
    +d3qD/3N2f/91d33/bnB3/3N1fP9vcXX/bnB3/3Byef9ucHf/b3F1/3Byef92eHz/bnB3/3Byef9ucHf/
    +dXd9/3Byef9wc33/bG95/3Bzff91d33/d3l//3N1fP9sb3n/bnF7/3Z4fP9tb3P/am13/2xudf9qbHP/
    +am13/25wd/9sb3n/Z2p0/3Bzff9sbnX/bnF7/3Bzff9nanT/bnF7/2ptd/9qbHP/am13/2Zpc/9qbXf/
    +bG95/2xudf9wc33/bG51/25xe/9qbXf/bnF7/3Bzff9qbXf/bG51/2dqdP9qbXf/bnF7/3N1fP9sbnX/
    +am13/25wd/92eHz/bnB3/3N2f/9sb3n/bG95/3Bzff9ucHf/bG51/29xdf9wcnn/bnF7/3Byef9wc33/
    +bG95/3d6g/9sb3n/bnF7/3N1fP9zdn//dXiB/3d6g/9ucXv/cHJ5/3d6g/91eIH/cHN9/3N1fP9qbXf/
    +bW9z/25wd/9ucHf/cHN9/3Byef9nanT/bG95/3Byef93eoP/bG95/3N1fP9wcnn/bG51/2psc/9qbXf/
    +bG51/2Zpc/9sbnX/amxz/2dqdP9ucXv/bG51/2dqdP9ucXv/bG95/2psc/9nanH/Z2px/2xudf9sbnX/
    +am13/2psc/9maG7/YGNs/2Rncf9kZ3H/bG95/2Zpc/9maXP/Z2p0/2Zpc/9kZ3H/bG95/2psc/9nanT/
    +Zmlz/2xvef9sb3n/Zmlz/3d5f/91d33/dXd9/3Byef9ucHf/bnB3/3Byef9wcnn/am13/3d6g/9zdXz/
    +bG95/3Byef95fIb/bG95/25wd/9sb3n/bG95/2xvef9qbHP/bG51/2xudf9qbHP/bG51/2psc/9sb3n/
    +am13/2Zpc/9sb3n/dXd9/2Rncf9sb3n/Zmlz/2dqcf9maXP/Zmlz/3N1fP9qbXf/Z2px/2dqdP9xdH3/
    +c3V8/2psc/9ucXv/amxz/2psc/9sb3n/am13/2xvef9qbXf/bG51/3Bzff9ucXv/bG95/3N1fP9wcnn/
    +amxz/36Ahv9zdXz/cHJ5/2xudf93eX//bG95/21vc/9ucHf/bG95/2xvef9nanT/dXd9/2xvef9qbXf/
    +cHN9/2Rncf9ucXv/bG95/2ptd/9sbnX/b3J7/29ye/9oa3X/c3V8/3J0fP9nanT/bG52/3h6gP9rbXT/
    +bG51/21vdv9sbnX/bG51/21vdf9pa3L/bG92/2hrdf9zdn3/bXB6/2xvef9tb3b/Z2px/21vc/9sbnX/
    +bG51/3Z4fP90dnz/cHJ7/2xvef9pbHP/bW92/2ttdv9sb3f/dHZ8/25wef9sbnf/cHJ5/25wd/9qbXf/
    +am13/3N1fP9ucXv/c3V8/2xudf9ucXv/amxz/2ptd/9qbXf/bG51/2psc/9qbXf/am13/2psc/9qbHP/
    +bG51/2xvef9sb3n/am13/2ptd/9sb3n/c3V8/3N2f/9wc33/cHN9/3V3ff94eX3/bnB3/3Bzff9zdXz/
    +bnF7/25xe/9zdn//c3Z//2xvef97fYP/c3Z//3t9g/97fYP/c3V8/36Ahv91eIH/c3Z//3d5f/94eX3/
    +d3qD/3l8hv91eIH/e32D/3N2f/9zdn//cHJ5/3d6g/91d33/bG95/25wd/9sb3n/bnB3/3V4gf91d33/
    +bnB3/2xvef9ucXv/dXiB/3Byef91eIH/bG95/25wd/9wcnn/bW9z/2psc/9vcXX/cHJ5/2xvef9sb3n/
    +bnF7/25xe/91eIH/am13/2xvef9zdXz/bnF7/3V3ff91d33/b3F1/29xdf91d33/bnB3/2xudf9zdXz/
    +bnB3/25wd/9zdXz/cHN9/3N2f/9zdXz/bG95/25xe/9wc33/eXuB/3N1fP91eIH/dXiB/3Byef9sb3n/
    +bnF7/25xe/9ucHf/bnF7/25xe/9wcnn/c3Z//25xe/9sb3n/cHN9/3Bzff9vcXX/bG95/2xvef9vcXX/
    +bnB3/3Bzff9wcnn/b3F1/25wd/9zdXz/bnB3/3d5f/9ucHf/bG95/3N2f/9ucHf/cHJ5/3Bzff9zdXz/
    +bnB3/25wd/9wc33/cHN9/2dqdP93eX//dnh8/3Z4fP9zdXz/bG51/2xudf9ucHf/bW9z/2dqcf9zdXz/
    +bW9z/2xudf9sbnX/eXyG/2xudf9nanT/Z2px/2Zpc/9sbnX/Zmlz/2Zpc/9nanH/ZGdx/2xudf9qbHP/
    +bnF7/2xudf9kZ3H/bG95/3V3ff9maXP/c3V8/25wd/9sb3n/c3Z//25xe/93eoP/dXd9/25wd/9ucXv/
    +b3J6/3J0fP9ucHf/dXd9/29xdf9ucHf/cHN9/25xe/9zdn//bG95/2xvef9wc33/cHN9/25wd/9zdn//
    +bnF7/2ptd/94e4X/dHZ8/3J0fP9sbnX/dHZ8/29xeP9sbnX/b3F4/29xeP9tcHr/bnB0/3V3e/9wcnn/
    +aGt1/21wev9jZm//cHJ5/25xev9tb3P/bW92/3Z4fP9ydHv/cHJ3/3V3fP9ydHv/aGtz/21vdv96fIP/
    +bW93/2xvef9tb3f/aWx2/2xudf9rbXb/aWx1/2hrcv9pa3T/dnh+/25wd/9tb3f/a254/2dqcf9tb3P/
    +bG51/25wd/91d33/cnV+/3F0ff9vcXr/aWxy/21vd/9tb3b/b3F5/3BzfP9rbnj/bnB4/25wd/9wcnn/
    +bG51/25wd/94eX3/cHJ5/3N2f/9wcnn/c3Z//3Byef9zdXz/d3qD/3N1fP9wcnn/cHN9/3N2f/9sb3n/
    +bG95/3Byef9zdXz/c3V8/29xdf9ucHf/bnF7/3l7gf93eX//dXd9/3N1fP91d33/dXd9/25wd/9ucHf/
    +b3F1/25wd/9ucHf/bnF7/2ptd/9kZ3H/dXd9/2ptd/9zdXz/dnh8/25wd/94eX3/cHJ5/29xdf9wcnn/
    +bG51/3Bzff9ucXv/bG51/3N1fP9tb3P/c3V8/2xudf9zdXz/cHN9/2psc/9qbXf/Z2p0/2ptd/91d33/
    +dXd9/25wd/9ucHf/bG51/3Bzff9sbnX/bG95/2ptd/9sbnX/cHN9/21vc/9qbHP/am13/2xvef9tb3P/
    +bG51/21vc/9qbHP/c3Z//2dqcf9sbnX/bW9z/21vc/9zdXz/c3V8/2xudf9tb3P/cHN9/25wd/9ucHf/
    +Zmlz/2Zobv9maG7/am13/2Zpc/9qbXf/bG95/2psc/9qbXf/am13/3N2f/9qbXf/cHN9/3Bzff9nanH/
    +ZGdx/2dqdP9qbXf/am13/2xudf9sbnX/bG51/25xe/9sbnX/am13/3Byef9zdXz/b3F1/2xudf9sbnX/
    +bG51/2xvef9ucXv/am13/21vc/9sbnX/dXd9/2xudf93eoP/cHN9/21vc/9wcnn/bG51/2dqdP9sbnX/
    +amxz/2dqcf9maXP/Z2p0/2ptd/9maXP/c3Z//3d5f/9wcnn/Z2p0/2Rncf9kZ3H/bG51/2ptd/9maXP/
    +bG95/2xudf9maXP/Z2p0/3d6g/9qbHP/bG51/2psc/9maXP/bG51/2Zpc/9kZ3H/bG51/2dqdP9qbHP/
    +amxz/2ptd/9nanT/YGNs/2ptd/9zdXz/YmVu/25xe/9sbnX/Z2px/2ptd/9qbXf/dXd9/25xe/9maXP/
    +am13/25xe/9xc3r/a254/3ByeP9sbnX/a210/2ptd/9sbnX/am13/2dqdP9qbHP/Zmlz/2dqdP9maXP/
    +am13/2hrcv9iZW7/cnR6/25xev9ucXr/a253/3R2ev9ucHn/bG51/21veP9rbnj/bnF7/21weP9vcnz/
    +b3J6/2tueP9vcnz/ZWhx/3F0fP9wcnn/am11/2ptd/90d4D/cnV9/21weP9xc3v/cXN6/2psc/9qbXX/
    +dXd//2ttdP9tcHr/a254/2lsdP9tb3T/aWx1/2hrdP9tbnX/aGt0/3d4ff9xc3j/bXB6/21vdv9maXP/
    +amxz/2dqdP9qbXf/bnF7/3N1fP9vcnv/bXB6/2Vocv9qbXf/am13/3N1ff9xc3v/bW92/25xev9sb3n/
    +bG95/2dqdP9sbnX/c3V8/2ptd/9qbXf/Z2px/2Zpc/9nanH/Z2px/2ptd/9nanH/Zmhu/2Zpc/9qbXf/
    +YmVu/2Jlbv9maG7/Zmlz/2ptd/9sbnX/YmVu/2Zpc/9sb3n/c3V8/3Bzff9zdXz/cHN9/3d5f/9qbXf/
    +bW9z/2xudf9ucHf/bnB3/3V3ff9sbnX/Z2px/3V3ff9wcnn/dXd9/3V3ff9sbnX/c3Z//3Bzff9tb3P/
    +b3F1/29xdf92eHz/c3V8/2xudf91d33/am13/2ptd/9nanT/bnF7/2ptd/9iZW7/Z2px/2Jlbv9iZW7/
    +Z2p0/2dqdP9nanH/Z2p0/2psc/9zdXz/bG51/3Byef9sbnX/bnB3/3N1fP9sbnX/YmVu/2psc/9qbXf/
    +bG51/2dqdP9qbHP/Z2p0/3d5f/9nanH/bG51/21vc/9sbnX/c3V8/3V3ff9wcnn/bW9z/3Bzff9sbnX/
    +amxz/25xe/9sb3n/b3F1/3d5f/9sb3n/cHN9/3Bzff9ucHf/bnF7/2xvef97fof/bnF7/3d6g/95e4H/
    +c3V8/2xvef91eIH/c3V8/25wd/9ucXv/bnF7/25wd/9wc33/cHJ5/2xvef9zdn//cHJ5/2xudf9sbnX/
    +am13/2ptd/9ucXv/cHN9/25wd/9ucHf/Z2p0/3V3ff9ucHf/eXuB/3N1fP9vcXX/cHJ5/25wd/9vcXX/
    +c3V8/2xudf9sbnX/bnB3/3Byef9sbnX/bG51/3l7gf93eX//d3l//3Byef9sb3n/am13/25xe/9ucXv/
    +am13/3N2f/9vcXX/amxz/2ptd/9+f4P/bnF7/3Byef9ucHf/bnB3/25wd/9sb3n/am13/3Bzff9wcnn/
    +cHJ5/3N1fP93eoP/c3Z//25xe/95e4H/e36H/2dqdP91eIH/d3qD/3N2f/93eoP/d3qD/3t+h/97fYP/
    +c3Z//3V4gf9sb3j/bnB2/25xef9ydXz/cXR9/3Bzff9vcXj/bG95/25wd/9sb3n/bG95/3Byef9sb3n/
    +bG51/3J1fP9ucHf/Z2px/3J1fv9zdXr/cHJ5/2tueP9ydHr/cHJ6/29xd/9wc33/b3J8/3F0ff9xc3z/
    +cXR9/3N2fv9ucHn/c3Z+/2hrdP9zdn7/dXh//29xeP9ucHf/dXiA/3F0ff9tcHr/dHZ7/3R2e/9pbHT/
    +bnF4/3V4f/9sbnb/bnB3/2xudf9sbnX/bW90/2hrc/9rbXT/a254/2dqdP9wc33/bnB0/21wef9tb3P/
    +amxz/21vc/9nanT/bG51/2xvef9sb3n/am13/3Byef9nanT/Zmlz/2dqdP9ucXv/cHN9/2ptd/9ucHf/
    +bG51/25wd/9qbXf/am13/3V3ff9wcnn/cHJ5/2xudf9ucHf/bG51/2xudf9ucXv/Z2p0/2psc/9qbXf/
    +bnF7/2psc/9qbXf/bG95/3Bzff9sb3n/am13/2dqdP9ucXv/cHN9/3d5f/94eX3/dnh8/3V3ff93eX//
    +bG51/2xudf9sb3n/bG95/2xudf9wcnn/cHJ5/2xudf92eHz/bnB3/3N1fP91d33/am13/2xvef9sb3n/
    +bG51/21vc/9sbnX/dXd9/3N1fP9ucHf/cHN9/2ptd/9qbXf/Z2p0/3V3ff9wcnn/Z2p0/2ptd/9nanT/
    +bG51/3Bzff9ucXv/bnB3/2xudf9tb3P/dnh8/29xdf9ucXv/cHN9/25xe/91d33/bG51/2dqcf9tb3P/
    +cHJ5/2xudf9tb3P/bW9z/2ptd/93eX//Z2p0/2psc/9sbnX/am13/3V3ff92eHz/cHN9/29xdf91d33/
    +bnB3/25wd/9qbXf/ZGdx/2psc/9ucXv/am13/2psc/9nanT/Z2px/2xudf9qbXf/dXiB/2xudf9wc33/
    +dXd9/2xudf9nanT/bnF7/21vc/9sbnX/bG51/2ptd/9nanT/am13/2dqcf9nanT/bnF7/2ptd/9qbXf/
    +am13/2ptd/9qbXf/bG95/25xe/9sb3n/Zmlz/2BjbP9qbXf/Zmhu/25wd/9qbXf/Z2px/2dqdP9maXP/
    +Zmhu/2dqdP9kZ3H/Zmlz/2Zpc/9sb3n/am13/2dqdP93eoP/c3V8/3V3ff9nanT/ZGdx/2Jlbv9nanH/
    +Z2px/2dqdP9sb3n/Z2p0/2Jlbv9nanT/eXuB/2ptd/9qbXf/bG51/2xudf9ucHf/b3F1/2dqdP9ucHf/
    +bG51/21vc/9sbnX/c3V8/2xudf9qbHP/dnh8/3V3ff9maG7/c3Z//3N2f/9sb3n/c3V8/3N1fP94eX3/
    +dXd9/3Byef9zdXz/c3Z8/3J0e/9ucXv/cnV7/29xef9vcXj/bW93/3Byef9ucHf/b3F1/29xdf9sbnX/
    +bW9z/25wd/9wcnn/bG95/2hqcf91d37/cnV6/21wef9tb3b/dXd9/3R2fv9ucHf/b3F6/3F0ff9ucXv/
    +cXN6/3J0ff9zdn7/cnR7/3Z5gf9rbnf/c3Z//3R3f/9vcXb/b3F2/3N2f/9wc33/bnB3/3R3gP90dnv/
    +am10/3J0e/90dn3/bG51/29xef9sbnX/am12/2xvc/9gY2z/Zmlz/2dqdP9kZ3H/bG95/2dqcf9qbXf/
    +amxz/2ptd/9qbXf/bG51/2xudf9wcnn/bnB3/21vc/9ucXv/Z2p0/2Zpc/9nanT/bG95/25xe/9wcnn/
    +cHJ5/25wd/9ucHf/bW9z/25wd/9zdXz/dXd9/3Bzff9ucHf/bG95/2xvef9sb3n/dXd9/29xdf9ucHf/
    +bnF7/3Bzff9vcXX/bG95/3V4gf91eIH/bnF7/3N1fP9wc33/d3qD/3d6g/95fIb/e36H/36Ahv9+f4P/
    +e36H/3Bzff9wc33/dXiB/3N2f/9wc33/cHN9/25xe/9qbXf/eHl9/3N2f/91d33/dXd9/2xvef9wcnn/
    +cHJ5/29xdf9sb3n/bnB3/3N1fP9zdXz/cHJ5/25xe/9qbXf/am13/2dqdP91d33/c3V8/2xudf9sb3n/
    +cHJ5/3Byef9zdn//dXiB/3V4gf9zdn//cHJ5/3t9g/9wc33/dXiB/3d6g/95fIb/e32D/3d6g/9wc33/
    +dXd9/3N2f/9zdn//cHN9/3N1fP9zdXz/d3qD/2ptd/9sb3n/cHJ5/25wd/91d33/dnh8/3V3ff9ucHf/
    +dXd9/25wd/9tb3P/bG95/2ptd/9wcnn/c3Z//3Bzff9ucXv/dXd9/2xudf9ucHf/bnB3/3t9g/9vcXX/
    +c3V8/3Z4fP9ucHf/amxz/25xe/9qbXf/am13/2xudf9qbXf/bG51/2psc/9nanH/bG51/25xe/9qbXf/
    +am13/2xudf9qbXf/ZGdx/2xvef9ucXv/bG95/2Zobv9kZ3H/am13/2dqdP9zdXz/am13/2dqdP9zdXz/
    +bG51/2xudf9zdXz/b3F1/2xvef9sb3n/c3Z//25xe/9vcXX/e32D/3d5f/93eX//bnB3/2xudf9nanT/
    +bnB3/25wd/9sb3n/dXiB/25wd/9ucHf/bnB3/31+gf9ucHf/bG95/2xudf9nanT/Z2p0/21vc/9nanT/
    +bG51/2psc/9sbnX/Zmlz/2xvef9nanT/Z2p0/3Bzff9zdXz/ZGdx/3N1fP9ucXv/bG51/3N1fP9ucXv/
    +cHN9/3Bzff9sb3n/bG95/3Fze/9ydHv/b3J5/3R2fP9vcXb/bW95/2hrdf9oa3X/am13/2psc/9qbHP/
    +bG95/2Zpc/9maXP/Z2p0/2dqc/9gY2z/cXR9/29xef9sb3j/bG52/3J0e/9vcnv/b3F1/25weP9wcnn/
    +cHJ2/25weP9wcnn/bnB3/25weP9ydX7/Z2p0/3N2f/9xc33/bnB3/3Bzff9wc33/bnF7/21vc/9zdXz/
    +dnh8/2xudf9zdn//d3qD/29xdf9wcnn/bG95/2xvef9sb3n/Zmhu/25wd/9ucHf/amxz/3V3ff9sb3n/
    +cHJ5/29xdf9sbnX/bnB3/2xudf9tb3P/c3V8/2xudf9sbnX/bnF7/2Zpc/9qbXf/Z2p0/2ptd/9wc33/
    +bG95/3Bzff9sb3n/bG51/25wd/9ucHf/c3V8/3N2f/9zdXz/b3F1/25wd/9ucHf/bG51/3V3ff9vcXX/
    +bG51/25wd/9wcnn/bG95/25wd/91eIH/e32D/3Bzff9wc33/c3V8/3N2f/91eIH/eXuB/3d5f/9zdn//
    +dnh8/3d5f/9nanT/b3F1/25xe/9wc33/cHN9/3Bzff9ucXv/bnB3/3V4gf9wc33/c3Z//3V4gf9ucHf/
    +cHN9/25xe/9ucHf/bG95/2xvef91d33/c3Z//25xe/9wc33/bnB3/25wd/9nanT/c3V8/3N2f/9qbXf/
    +bG95/25wd/9sb3n/c3Z//3Bzff9zdn//c3Z//3Bzff95fIb/cHJ5/25xe/9zdn//cHN9/3Bzff9wc33/
    +Z2p0/25wd/9zdn//bnF7/3Byef9wcnn/cHJ5/3d6g/9ucHf/cHJ5/3Bzff9sb3n/d3l//3Z4fP91d33/
    +bnB3/3N2f/9ucHf/bnB3/25wd/9ucHf/cHJ5/3d5f/91eIH/c3Z//3l7gf9ucXv/bnF7/3N2f/9+gYr/
    +c3V8/3d6g/97fYP/cHN9/3Byef9ucXv/bG95/2xvef9sb3n/bG95/3Bzff9ucXv/bnB3/3Bzff97fYP/
    +dXiB/3Bzff9ucXv/cHN9/25xe/93eoP/e32D/3l7gf9zdn//cHJ5/3N2f/9wcnn/eXuB/3Bzff9ucHf/
    +d3qD/3N1fP9zdXz/eXyG/3V3ff91d33/c3V8/3d6g/91eIH/c3V8/3l8hv93eoP/d3l//3Bzff9sb3n/
    +Zmlz/25wd/9sbnX/b3F1/3Byef9ucHf/bnB3/2xvef97fYP/bnF7/25xe/9ucHf/bG51/2ptd/9qbHP/
    +amxz/2xudf9ucHf/bnB3/2dqdP91eIH/am13/2xvef93eoP/c3Z//2Zpc/91d33/c3Z//3Bzff93eX//
    +c3Z//3V3ff9wc33/bnF7/25wd/91d3v/dXd7/3Byef91d3z/bnB0/3Byef9qbXf/bG95/25wd/9tb3P/
    +bG51/25xe/9maXP/YmVu/2dqdP9kZ3H/YGNs/3J1fv9sb3n/Zmhu/2RmbP9sb3n/Z2py/2dqcf9oa3L/
    +Z2lz/2dpb/9laHH/bG95/2ptd/9sbnX/bG95/2Rncf9wc33/bG95/2xudf9qbXf/c3Z//3V4gf9vcXX/
    +cHJ5/3V3ff9sbnX/dXd9/3d5f/9tb3P/bnB3/2xudf9ucHf/bnF7/2Zobv9sbnX/bnB3/2dqcf91d33/
    +bG51/25wd/9ucHf/b3F1/25wd/9ucHf/am13/3Bzff9sbnX/am13/2xvef9maXP/Z2p0/2Vocv9tb3T/
    +c3V8/25wd/9ydHv/c3Z//2xvef9ucHf/bG95/3Bzff9zdXz/c3V8/25wd/9ucHf/b3F1/21vc/9wcnn/
    +bW9z/25wd/9ucXv/c3Z//3Bzff9wcnn/dXiB/3d5f/9sb3n/bG95/29xdf9ucHf/cHJ5/3Z4fP9ucXv/
    +c3V8/3Bzff9zdXz/ZGdx/2psc/9qbXf/am13/2ptd/9sb3n/bnB3/2dqdP9zdXz/bnF7/25xe/9wc33/
    +bG51/2xvef9sb3n/am13/2psc/9sbnX/c3V8/3Bzff9ucHf/cHJ5/2xudf9tb3P/Z2px/2xvef9wc33/
    +bG51/25wd/9ucHf/b3F1/3N1fP9zdXz/bnB3/25xe/9tb3P/dXd9/2xudf9sb3n/bnF7/25xe/9ucXv/
    +am13/2Zpc/9sbnX/c3V8/25wd/9sbnX/bW9z/2xudf94eX3/bnB3/25wd/9ucXv/bnB3/3Z4fP91d33/
    +eHl9/25wd/9zdXz/bG51/29xdf9ucHf/bnB3/3Byef91eIH/c3Z//3Bzff93eoP/bnF7/3Bzff9ucXv/
    +eXyG/25wd/9zdXz/dnh8/25wd/9ucHf/bnF7/3Byef9qbXf/bnB3/25wd/9ucXv/bnB3/25wd/9sbnX/
    +dnh8/25wd/9tb3P/bnB3/25wd/9qbXf/cHN9/3V3ff92eHz/cHJ5/2xudf9wc33/cHJ5/3l7gf9wc33/
    +bnF7/3V3ff9tb3P/bnB3/3Byef9ucHf/b3F1/25wd/9zdXz/cHJ5/29xdf95e4H/dXiB/3l7gf9ucHf/
    +bnB3/2RmbP9sbnX/Z2p0/2psc/9sbnX/am13/2Zpc/9qbHP/c3Z//2ptd/9qbXf/am13/2dqdP9maXP/
    +am13/2Zpc/9qbXf/bG51/2xvef9nanT/bG95/2Rncf9maXP/bG95/2ptd/9iZW7/bnF7/2xvef9sbnX/
    +cHN9/25xe/9zdXz/bnF7/2xvef9qbHP/cHN9/3Byef9sb3n/dnh8/21vc/9ucHf/bG51/25wd/9qbXf/
    +bG51/21vc/92eHz/bnB3/2dqcf9zdXz/bnB3/2dqdP97fof/c3Z//25xe/9ucXv/eXuB/2xvef9ucHf/
    +bG95/25xe/9ucHf/bnB3/25xe/9qbXf/bG51/2xvef9kZ3H/c3V8/25xe/9qbXf/bG51/3N2f/93eoP/
    +cHJ5/3Bzff91d33/bG51/3V3ff95e4H/bG51/3Byef9ucHf/b3F1/3Byef9maG//Z2p0/2dqc/9hZG3/
    +cHN9/2ttdP9oa3X/a21z/2psc/9qbXf/bG51/2ptd/9wc33/bG95/25xe/9tcHr/Z2p0/2dqdP9oa3P/
    +bXB3/3J1fv9ucXv/bG95/3Byef9qbHP/amxz/2psc/9sb3n/bG95/2xvef9sbnX/bnF7/2psc/9sbnX/
    +bnF7/2psc/9maXP/Zmlz/2ptd/9maXP/Z2px/25xe/9ucXv/amxz/2Zobv9kZ3H/Zmlz/2dqdP9wcnn/
    +bG95/25xe/9wc33/c3V8/2Rncf9sbnX/am13/2psc/9nanT/bG95/2dqcf9qbHP/c3V8/25xe/9ucXv/
    +cHN9/2psc/9qbXf/bnF7/25wd/9tb3P/b3F1/3V3ff9zdXz/c3V8/3N1fP9sbnX/bnB3/2psc/9ucHf/
    +eHl9/25wd/9sbnX/bG51/2xvef9zdn//bnF7/2xudf9ucHf/bnB3/3V4gf9ucHf/cHJ5/3N1fP9ucXv/
    +bnF7/3N1fP9qbHP/amxz/3V3ff9ucHf/bnB3/25wd/9ucHf/dnh8/21vc/9ucHf/c3V8/25wd/92eHz/
    +dXd9/3Z4fP9ucXv/dXiB/25xe/9zdXz/am13/2Zpc/9qbHP/cHN9/2xvef9sbnX/cHN9/2ptd/9sbnX/
    +bnB3/3l7gf9wcnn/c3Z//3V4gf9ucXv/bnB3/25xe/9ucHf/am13/25wd/9sb3n/bnF7/25wd/9ucHf/
    +bG51/3d5f/9wcnn/b3F1/2xudf9ucHf/Z2px/2xvef9wc33/bnF7/2xvef9qbHP/bG95/2Zobv9sb3n/
    +Z2px/2dqcf9qbXf/Z2p0/2Zpc/9sb3n/am13/2ptd/9qbXf/bG51/3V3ff9sb3n/eXyG/3l7gf95e4H/
    +cHN9/25wd/9qbXf/c3Z//3N1fP9zdXz/dXiB/3V3ff91eIH/d3l//4OFjP97fYP/eXuB/3V4gf9zdn//
    +cHN9/3N2f/9wc33/d3qD/3V3ff91eIH/cHN9/3l7gf9zdXz/bnF7/3V4gf9wc33/am13/3d6g/91eIH/
    +cHN9/3N2f/93eoP/e32D/3N2f/9wcnn/b3F1/3V3ff91eIH/bnF7/3l7gf9ucHf/c3V8/29xdf9ucHf/
    +bW9z/21vc/9vcXX/dXd9/25wd/9sb3n/bnF7/2dqdP9nanT/e32D/3V3ff9wcnn/bnB3/3Z4fP9tb3P/
    +b3F1/25wd/9ucHf/bG51/2psc/9zdn//bnF7/25wd/9zdXz/Zmhu/3Z4fP9ucXv/b3F1/21vc/99f4X/
    +e32D/3V3ff93eoP/fX6C/3V3ff98foX/f4GI/3N2f/92eYL/cnR7/29yfP9zdn//aGt1/25wd/9qbHP/
    +ZWhy/29ye/9sbnX/bW92/21vdv9nanH/am13/2dqcf9maXP/bnB3/2Zpc/9nanT/bG92/2hrdP9lZ3D/
    +ZWhw/2xudP9ucXr/a212/2hqc/9qbXf/bG51/2xudf9qbXf/bnF7/3Byef9wcnn/b3F1/3N1fP9wcnn/
    +bG51/3N1fP9vcXX/bnB3/3Byef9zdXz/bnB3/3Byef9wc33/dXd9/25xe/9sb3n/bnB3/25xe/9zdXz/
    +eHl9/3N1fP9zdXz/cHN9/3Z4fP9nanH/bG51/3Bzff9sbnX/bnB3/3V3ff9tb3P/bG51/3Z4fP9wcnn/
    +cHJ5/3N1fP9sbnX/bG51/2xvef9zdXz/bG51/2xudf9wcnn/c3V8/3Bzff9zdXz/bnB3/25wd/9sb3n/
    +bG95/3d5f/9ucHf/cHJ5/2xvef9vcXX/c3Z//3Bzff9sb3n/bG95/25xe/91eIH/bnB3/3N2f/9zdn//
    +c3Z//3N2f/93eX//bnB3/2xvef9wc33/bG95/2xudf9sbnX/bG51/3Z4fP9qbXf/am13/3Byef9sbnX/
    +c3V8/3N1fP9ucXv/bG95/3N1fP9qbHP/bW9z/21vc/9sbnX/bnB3/3V3ff9wc33/bG95/3N2f/9ucHf/
    +bnF7/25xe/93eoP/cHN9/3N2f/95fIb/d3qD/3V3ff91eIH/dXd9/3N2f/9zdn//c3V8/3V4gf9wcnn/
    +cHJ5/3Bzff91eIH/cHN9/25xe/9ucHf/cHJ5/2psc/9zdn//eXuB/3N2f/9ucXv/bG95/3N1fP9vcXX/
    +c3V8/2xudf9sbnX/dXd9/25xe/9ucHf/cHN9/3Byef9wcnn/bnF7/3N1fP91eIH/bnF7/3l8hv95e4H/
    +eXuB/25xe/9qbXf/Zmlz/3Byef9ucHf/am13/3Bzff9sb3n/cHN9/25wd/93eoP/c3Z//3Byef9ucHf/
    +b3F1/2psc/9vcXX/bG51/3Byef9vcXX/am13/2xudf9zdXz/bG51/2xudf9wc33/bG95/2Zobv9wcnn/
    +cHJ5/25xe/9sb3n/c3V8/3V3ff9ucXv/bG95/21vc/91d33/eXuB/25wd/91eIH/bG51/3Byef9tb3P/
    +bnB3/2xvef9ucXv/cHJ5/3V4gf9wcnn/bG95/25xe/9qbXf/Zmlz/3Z5gv9zdn//cHN9/21vef92eH7/
    +bnB3/29xdf9sb3n/bnB3/29xdf9vcXb/dHZ9/3Byef9ucHf/bG94/2Nmb/91d3z/bG95/2lsc/9nanT/
    +bnF7/3V4gf9xc3v/c3Z//3N2fv9tcHr/dXd+/3J1f/9rbnj/bnF7/2xveP9tb3j/cXN6/29xeP9tb3P/
    +aWty/2ptdP9wc3v/b3F4/3Bze/9ucXr/Z2p0/2xvef9qbHP/Zmlz/25wd/9nanL/aGt0/25xef9sbnb/
    +aGt1/21wef9ydX7/dHeB/29xef9sb3j/bnF7/2xudf9qbHP/amxz/25xe/9sb3n/bG95/21vc/9ucXv/
    +bnF7/2xvef92eHz/bnB3/3Byef9zdXz/cHJ5/21vc/9qbHP/bnF7/3N1fP9sbnX/bG51/2dqdP9sb3n/
    +bG95/3Bzff9sb3n/c3V8/25xe/9wc33/Z2p0/2ptd/9ucXv/amxz/2dqdP9sb3n/Zmlz/2dqcf9sb3n/
    +am13/2xvef9zdXz/amxz/2xudf9qbXf/bnF7/2ptd/9tb3P/bnF7/3V3ff9zdn//cHN9/25wd/9ucHf/
    +bnB3/25wd/91eIH/bnB3/3Byef9ucHf/cHJ5/3N2f/91eIH/c3V8/3Bzff9wc33/e32D/25wd/9wc33/
    +dXiB/3l7gf91eIH/d3l//2xvef9qbXf/bnF7/25wd/9qbHP/bnB3/2xudf94eX3/bnB3/2xudf9sb3n/
    +am13/3Byef9zdXz/c3V8/2ptd/9zdXz/amxz/2xvef9ucHf/am13/21vc/92eHz/c3V8/25wd/91d33/
    +b3F1/29xdf9vcXX/dnh8/25wd/9ucHf/bnB3/25xe/9qbXf/bG95/2psc/9sbnX/bG51/2xudf9qbXf/
    +Z2p0/2dqdP9nanH/dXd9/2dqdP9nanH/ZGdx/2Zpc/9dYGr/Z2p0/3N1fP9sb3n/bG51/2ptd/9qbXf/
    +amxz/2xvef9sbnX/am13/25xe/9wcnn/amxz/25xe/9qbHP/Z2p0/2xudf9sbnX/c3V8/2ptd/93eoP/
    +cHN9/3Bzff9sb3n/am13/2psc/9ucHf/bW9z/2xudf9ucHf/bG51/3Byef9tb3P/d3l//3Bzff9sb3n/
    +cHJ5/2xudf9maXP/bG51/2dqdP9wc33/am13/2xudf9ucHf/c3Z//25wd/9ucHf/dXiB/3V4gf9kZ3H/
    +dXd9/25wd/91d33/bG51/3Bzff95fIb/c3Z//2xvef9sb3n/cnV+/3Z5gv9sbnX/enyC/29ydv9vcnz/
    +bnB3/3Bzff9wc33/bG95/2xvef9wcnn/b3F1/2dqcf9ucHf/bG92/2hrdf91eIH/dXd+/3R2fv9ydHv/
    +dXd8/29yd/9wcnf/b3F3/3J0e/9ucHj/b3J5/3V3ff9wcnj/cHJ3/3Fzev9sbnX/dHZ8/29xd/9tcHn/
    +bG51/25xef9ydX7/bnB5/2xvef9vcXj/bG93/29yev9wcnj/aWx1/3Bze/9tcHr/a254/3Byef9tcHr/
    +bW92/2dqdP9rbnb/dHZ9/3R2ff9zdX3/c3V8/29yef92eYL/dXd9/3Z4fP9+gYr/cXR+/3N2f/92eID/
    +bW93/2hrdP9sb3n/b3J8/3V3ff9oa3X/YmVu/35/g/93eX//c3V8/3N1fP93eoP/c3Z//3N2f/9ucXv/
    +cHN9/3V4gf9zdn//eXyG/3N2f/9wc33/cHN9/3Bzff9ucHf/am13/3Bzff91d33/bnF7/3Byef9sbnX/
    +cHJ5/25wd/9zdXz/cHJ5/3V3ff9zdXz/cHN9/2ptd/9ucHf/d3qD/3Bzff9wc33/cHN9/2xvef9ucHf/
    +dXiB/3Bzff91eIH/e32D/3V3ff93eoP/eXuB/3t9g/93eX//d3l//3l8hv97fof/e32D/36Ahv97fYP/
    +eXuB/3V3ff91d33/gYOK/3Z4fP93eX//eHl9/3h5ff97fYP/d3qD/3N1fP95fIb/d3qD/3t+h/9wcnn/
    +c3Z//3d6g/91eIH/dXiB/3l7gf9zdXz/c3V8/3V4gf9zdXz/Z2p0/2xvef9nanT/d3l//25wd/9qbXf/
    +bnB3/2ptd/9ucXv/dXd9/3Z4fP9wcnn/c3V8/2xudf9vcXX/YmVu/2Jlbv9maG7/bnB3/2dqdP9iZW7/
    +ZGdx/2BjbP9kZ3H/ZGdx/25wd/9kZ3H/Zmhu/2Zpc/9maXP/Zmlz/2Zobv9dYGr/YGNs/2Zobv9maG7/
    +Z2p0/2Zpc/9nanT/Zmlz/3V4gf9sb3n/am13/2psc/9qbXf/Zmhu/25wd/91d33/c3V8/3N1fP9sb3n/
    +bnF7/3Byef91eIH/c3Z//3N2f/91eIH/d3qD/3N1fP93eoP/cHN9/3Byef9wc33/c3V8/3d5f/9ucXv/
    +eXyG/3l7gf91eIH/c3Z//25wd/9qbXf/c3V8/3Bzff9wc33/c3Z//25wd/9ucXv/bG95/3l7gf91d33/
    +bnB3/3Byef9ucHf/bnB3/25xe/9wcnn/cHN9/2xvef9sb3n/bG95/3Bzff9ucHf/bnB3/3N1fP9zdXz/
    +Zmhu/3Bzff9qbXf/bnF7/2ptd/9sb3n/dXiB/3Bzff9ucHf/bG51/3V2e/92eYD/bG52/3R2fP9sbnX/
    +cXN6/21vd/9vcXn/cHJ5/3Byef9ucHf/bnB3/25wd/9qbHP/bG51/2psdP9pbHT/cHJ4/25weP9sb3f/
    +bnB5/21vd/9ucHf/aGt1/2hrdP9qbXf/aGt0/2xvd/9sb3n/aWx0/21weP9nanT/ZWhv/25xev9vcnr/
    +a254/25xeP9ydHz/dHZ9/29xe/9vcnz/b3J8/3N1ev9xdH3/cnR9/3F0ff92eYH/dXiA/25xev9zdXz/
    +c3Z//3Byef9rbnj/b3J8/3h6gP90dn//cnR7/29xef9pbHb/cHJ5/21vc/9vcXX/d3l//29xdf90dnz/
    +dnh8/2tud/9maXP/c3V8/3N1fP93eX//bG51/2psc/9zdXz/b3F1/25wd/9sbnX/bnF7/2ptd/9qbXf/
    +amxz/2xvef9ucXv/bG51/3d5f/9vcXX/bnF7/3N1fP91d33/bnB3/2ptd/9zdn//c3Z//25xe/9wc33/
    +am13/3Bzff9wc33/dXd9/3N1fP91d33/bnB3/25wd/9sbnX/bG95/3N2f/9ucXv/c3Z//3V4gf9zdXz/
    +cHJ5/3d5f/91d33/cHJ5/3V3ff9tb3P/bG95/2xvef9wc33/am13/25xe/9ucXv/c3V8/3Byef91d33/
    +bnB3/25wd/9ucHf/cHJ5/3l8hv9sb3n/bnB3/25wd/9ucHf/cHJ5/25wd/9qbXf/cHJ5/3Byef94eX3/
    +bnB3/25wd/9zdXz/bnF7/3V4gf91d33/am13/29xdf9wcnn/bW9z/2Zpc/9qbXf/Zmlz/3Bzff9sbnX/
    +Z2p0/2xvef9qbHP/Z2p0/2xvef9ucHf/Z2px/2dqdP9iZW7/ZGZs/25wd/9sb3n/bnF7/3d5f/91d33/
    +bG95/3V3ff9qbXf/bG95/29xdf93eX//cHJ5/25xe/9wcnn/bnF7/2psc/9sbnX/Zmlz/2ptd/9sbnX/
    +bG95/2xudf9tb3P/bnB3/25wd/97fof/c3Z//3V4gf9zdXz/dXiB/25xe/91eIH/e36H/3V4gf93eoP/
    +d3qD/3d6g/93eX//eXyG/3l8hv95fIb/eXuB/3t9g/9zdn//d3qD/3N2f/9wcnn/bnB3/2xvef92eHz/
    +b3F1/3l7gf93eX//c3V8/3N2f/9ucHf/Z2px/21vc/9sbnX/bG51/2xvef9qbHP/am13/2dqcf9zdn//
    +bG95/2psc/9sb3n/bG51/2ptd/9qbXf/bG51/25xe/9sb3n/bG51/2xudf9ucHf/bG51/2dqdP9sb3n/
    +bG95/11gav9qbXf/am13/3Bzff9sbnX/bnF7/3V4gf9ucXv/bG51/2xudf9ydHz/dHZ8/29xef9ucXv/
    +bG50/25xef9nanT/am13/2dqdP9nanT/Z2px/2Zpc/9nanH/Zmlz/2ttdP9oa3T/bnB4/3V3ff9ydX//
    +c3aA/3J1fv9tcHn/cnV+/29ye/9tb3f/cXR+/3J1fv92eH7/c3aA/25xev91d33/cXR9/21wd/9vcnz/
    +c3Z//3J1ff90dnz/cnR8/3N1fP9wcnj/bnB3/3Byef91d3v/cHJ5/25wd/9tcHf/c3V8/3J0fP9sbnX/
    +bW9z/3N2f/9wcnn/amxz/25xe/93eX//dHeA/3J0fP9vcnv/a211/29yef9ucHf/bW9z/3d5f/9vcXb/
    +c3V9/3V3fv9sb3j/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/c3V8/2psc/9nanT/bG51/2ptd/9sbnX/
    +bG51/2ptd/9sbnX/cHJ5/2xudf94eX3/bG95/25xe/9zdn//cHN9/2xvef9nanT/dXd9/3N2f/9sb3n/
    +dXd9/2xvef9wc33/dXiB/3d5f/9zdXz/dXd9/25wd/9zdXz/amxz/2xudf9wcnn/am13/3Byef9sb3n/
    +amxz/2Zpc/9wcnn/am13/2dqdP9wc33/amxz/2xvef9sb3n/bnF7/2xudf9zdXz/cHJ5/3Byef9wc33/
    +bnF7/2ptd/9sbnX/bG51/2xudf93eX//bW9z/2xudf9sbnX/bG51/3Byef9wcnn/b3F1/2xvef9ucXv/
    +dXiB/2xvef9ucHf/dXd9/3N1fP9zdn//dXd9/2xvef9ucHf/c3Z//25xe/9qbXf/cHN9/2ptd/95e4H/
    +dXiB/3Bzff93eoP/c3Z//3t9g/9+f4P/eXyG/3d6g/91eIH/c3V8/3N2f/9qbXf/bW9z/25wd/93eX//
    +dXd9/3Byef93eX//cHJ5/3Byef9wcnn/e32D/3V4gf9wc33/bnF7/3Bzff9nanT/bG95/2ptd/9sbnX/
    +bW9z/25wd/9ucHf/bG51/2dqdP9qbHP/dXiB/2xvef9ucXv/bG51/2ptd/9kZ3H/Z2p0/3Byef9maG7/
    +am13/2dqdP9qbXf/Z2p0/2dqdP9sb3n/am13/3Bzff9ucXv/bG51/2xvef9sb3n/bG51/2dqdP9qbXf/
    +dXd9/25wd/93eoP/dXiB/3V3ff91d33/b3F1/2Zobv9ucHf/bW9z/2xudf9ucXv/bG51/3Byef9tb3P/
    +dXiB/3Bzff9qbHP/am13/2dqdP9sbnX/bG51/2ptd/9sb3n/bG95/2psc/9sbnX/Z2p0/2Zpc/9maXP/
    +amxz/2xvef9iZW7/bG95/25xe/9wc33/amxz/2ptd/91eIH/bnF7/25wd/9sb3n/b3F4/3R2ff9wcnn/
    +cXN4/21vc/9ydHv/bG51/25xev9wc33/cHN9/25wd/9wc33/cHN9/3Byef9wc33/bG94/25xef9xc3v/
    +c3V8/29xeP91d33/bG95/3R3gP9ucXv/amx0/2xvef9ucXv/cHN8/3Bzff9wcnn/c3V8/3Byef9vcXj/
    +cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/d3l//25wd/9wcnn/bnB3/3V3ff91d33/
    +bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9xc3r/c3V8/21vdv93eoT/dXiB/3V3ff9/goz/
    +cHJ8/3h6gf91d37/aWx2/2Vocv9ucXv/c3V8/3N1fP9qbXf/am13/3t9g/9wcnn/bnB3/3N1fP9ucXv/
    +bG95/2xvef9wc33/bnF7/3N2f/9sb3n/d3l//2xvef9ucXv/bnF7/3V4gf9zdXz/Z2p0/3N2f/91d33/
    +bG51/3V3ff9ucHf/cHJ5/3N2f/9zdn//c3Z//3N2f/9ucXv/c3Z//2ptd/9wcnn/cHN9/3Byef9wc33/
    +c3V8/29xdf9ucHf/dnh8/3N1fP9wcnn/c3V8/21vc/9zdXz/bnB3/2xvef9ucHf/bnF7/2ptd/9ucHf/
    +bnF7/25xe/9sbnX/bG51/2xudf9tb3P/dXiB/2psc/9qbHP/bG51/2dqdP9sb3n/bnF7/2ptd/9qbXf/
    +am13/3V3ff9maXP/Zmhu/2ptd/9sb3n/bnF7/2xvef9maXP/Zmhu/2ptd/9maG7/XWBq/2Rncf9gY2z/
    +bG95/2dqdP9qbHP/Z2p0/2psc/9qbXf/cHN9/3N1fP9ucXv/bnF7/2xudf9sbnX/am13/21vc/9ucHf/
    +eXuB/3N1fP9wcnn/cHJ5/2xudf9qbHP/am13/3Bzff9sb3n/bG95/25wd/9wcnn/amxz/21vc/9sbnX/
    +am13/2dqdP9qbXf/bG51/2xudf9sbnX/am13/3d5f/9sb3n/bnF7/2xvef9sb3n/bG51/3Byef92eHz/
    +bG51/3N1fP9wc33/c3Z//3Bzff9zdXz/c3V8/3N1fP9wcnn/dXd9/2xudf9wcnn/bnB3/2ptd/9sbnX/
    +am13/3Bzff9qbHP/d3l//3d5f/9zdXz/dXd9/25wd/9kZmz/bG95/2xvef9wc33/c3Z//29xdf9wc33/
    +bnB3/3d6g/91eIH/bnF7/25xe/9sb3n/cHJ5/3Byef9wcnn/c3Z//3N1fP9wcnn/cHN9/3N2f/9wcnn/
    +cHJ5/25xe/9zdn//Zmlz/3V4gf9wc33/d3l//2xudf9ucHf/d3l//25xe/9sb3n/bG95/3p8g/97fYP/
    +dnmC/3V3ff91d3z/dHeA/3F0fP9zdXz/cXN6/3V3ff9ucHf/cHJ5/3Byef9sbnX/bnB0/29xeP9ucXr/
    +b3F4/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/
    +bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/bG51/3N1fP9nanT/amxz/2psc/9ucXv/
    +cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/ZWhx/2Zpc/9jZnD/a254/2xudf9maXP/
    +dXd9/2lrc/9wcnn/bXB4/2dpcP9laHL/am13/2xvef9zdXz/bG95/2xudf94eX3/bG95/25wd/9sb3n/
    +bnF7/25xe/9ucXv/bnB3/3Byef9zdXz/bnB3/3h5ff9vcXX/bnF7/25wd/9zdn//cHJ5/2Zpc/9zdn//
    +cHN9/25xe/93eX//cHJ5/25xe/9zdn//c3Z//3Byef9zdXz/c3V8/3Byef9nanH/bG51/3Byef9sbnX/
    +cHN9/3N1fP9ucHf/bG51/3V3ff9wc33/amxz/3V3ff9qbXf/bnB3/3Byef9ucHf/bG95/2ptd/9sbnX/
    +bG95/25xe/9zdXz/am13/2xudf9qbXf/bG51/3V4gf9qbXf/bG51/25wd/9tb3P/bnF7/2xvef9sbnX/
    +cHJ5/25wd/95e4H/bG51/2xudf9qbXf/bG95/2xvef9sb3n/Z2p0/2Zpc/9ucXv/am13/2Zpc/9sb3n/
    +Zmlz/3N1fP9ucXv/bG51/2xvef9qbXf/dXd9/3Z4fP94eX3/c3V8/3Byef9sbnX/am13/3V3ff9zdn//
    +dXiB/3t+h/91eIH/cHN9/3N2f/9sb3n/bG51/25wd/95e4H/bG95/2xudf9sb3n/am13/2Rncf9nanH/
    +YGNs/2Rncf9maXP/bG51/2ptd/9qbXf/am13/2ptd/91d33/bG95/3Bzff9sb3n/cHJ5/2xudf9sb3n/
    +dXd9/2ptd/9sb3n/cHN9/3Bzff9ucXv/bG95/3Bzff9zdXz/bnF7/3N1fP9ucHf/dXd9/3Byef9tb3P/
    +b3F1/2xudf9zdn//bnB3/3d5f/93eX//cHN9/3d6g/9ucXv/Zmlz/3Byef9ucHf/cHN9/3N2f/9sb3n/
    +c3Z//25xe/91eIH/dXiB/3Bzff9zdn//cHJ5/25wd/9vcXX/bG51/3Byef9sbnX/am13/2xudf9sbnX/
    +amxz/2psc/9qbHP/am13/2Jlbv9ucXv/bnF7/3N1fP9nanT/bnB3/3Z4fP9wcnn/bG51/2xudf95e4H/
    +c3Z//25xe/9ucHf/bG95/25xev9vcXj/bXB6/21vef92eHz/cHJ5/25xe/9sb3n/bnB3/3Bydv9rbnf/
    +bG94/29xeP9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/
    +cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/am13/2psc/91d33/am13/2xudf9maXP/
    +bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/dnh8/3Byev9zdXz/cXR9/3R3gP9wc33/
    +bnF7/3+CjP9zdn//dnmD/3h7hP9xc3r/c3V8/3t9g/9+gIb/e32D/3d6g/9wc33/e32D/3Bzff9zdXz/
    +cHN9/25xe/9zdn//bnF7/2xvef9ucXv/dXd9/29xdf91eIH/bnB3/2xvef9ucHf/dXd9/2xvef9kZ3H/
    +cHN9/3N2f/9ucXv/d3l//2xvef9ucXv/dXiB/3V4gf9zdn//c3Z//3V4gf9wc33/am13/2xvef91eIH/
    +bnF7/3V4gf91eIH/bnF7/2xvef93eX//cHN9/3Byef91eIH/bnB3/25xe/9wc33/c3Z//3Bzff9wc33/
    +cHN9/25xe/9wc33/dXd9/25wd/9ucHf/bG95/25wd/93eoP/bnB3/25xe/9wc33/cHJ5/3Bzff9vcXX/
    +bnB3/3Byef9tb3P/d3l//2ptd/9sbnX/am13/25xe/9wcnn/cHJ5/2xudf9qbHP/cHJ5/2xvef9qbHP/
    +cHN9/2dqdP91eIH/d3qD/3Bzff9zdn//cHJ5/3d6g/95e4H/e36H/3V4gf93eoP/cHN9/3V4gf9sb3n/
    +bG95/3Byef91eIH/c3Z//25xe/9wcnn/bG51/2dqcf9ucHf/dnh8/21vc/9qbXf/bG95/3Byef9sbnX/
    +b3F1/2RmbP9sbnX/bG51/2ptd/9sb3n/Z2p0/2dqdP9sbnX/dXd9/2xudf9ucXv/bnF7/2xvef9nanT/
    +bG51/3N1fP9sbnX/cHJ5/3Bzff9ucXv/bnF7/25xe/9wc33/cHN9/2xvef91d33/bnB3/3V3ff9zdXz/
    +b3F1/2xvef9sb3n/c3Z//3Byef93eoP/d3qD/3N2f/91eIH/cHN9/2dqdP9ucHf/bnF7/3N2f/9wc33/
    +bnB3/3N2f/9wcnn/eHl9/3V3ff9sbnX/bG95/2xudf9sbnX/bG51/2Zpc/9sbnX/amxz/2Zpc/9maXP/
    +Zmhu/2Zobv9maG7/amxz/2xvef9gY2z/Z2p0/2xvef9ucXv/Zmlz/2xudf91d33/bG95/2xudf9ucHf/
    +bnF7/25xe/9ucHf/bG51/2xudf9sb3n/am13/3J0e/9zdn//d3l//3Bzff9wc33/cHN9/25xe/9xc33/
    +bnB2/25weP9wcnn/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/am13/2xudf9ucXv/bG95/25xe/9wc33/
    +bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/
    +am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn//d3qD/3l7gf93eoP/dXh//29yfP9vcnv/
    +b3F1/2xudf93eoP/b3F4/3d5f/97fYb/dHZ//3V3ff97fYP/foCG/3t9g/9zdn//cHJ5/3l8hv9wc33/
    +c3V8/3N2f/91eIH/d3qD/3d6g/9ucXv/cHN9/3N2f/9wcnn/d3qD/3N1fP9zdn//c3V8/3N2f/9sb3n/
    +Zmlz/3N2f/91d33/bG95/3l7gf9sb3n/bnB3/25wd/9zdXz/bnB3/25wd/91d33/bnB3/2xudf9qbHP/
    +cHJ5/21vc/92eHz/cHJ5/2xudf9sb3n/eHl9/3V3ff9wcnn/d3qD/25wd/9wc33/bnF7/3V4gf9wc33/
    +bnF7/2xvef9sb3n/c3Z//3N2f/9wcnn/bG95/2xvef9sb3n/d3l//25wd/9vcXX/b3F1/29xdf9zdXz/
    +bnB3/25wd/9ucHf/b3F1/3d5f/9qbXf/bG51/25wd/9wcnn/bnF7/3Byef9sbnX/amxz/3Byef9wcnn/
    +amxz/3Byef9qbHP/cHN9/25xe/9tb3P/bnB3/21vc/91d33/dXiB/3V4gf9zdn//cHN9/25wd/9ucHf/
    +c3V8/3Bzff91eIH/foGK/3t9g/93eoP/d3qD/3Byef9ucXv/dXiB/3d5f/9sb3n/bnB3/3Bzff9wc33/
    +Z2p0/25wd/9maG7/bG51/2xudf9tb3P/bG51/2psc/9sb3n/bnB3/3l8hv9wc33/c3Z//3Bzff9wc33/
    +am13/2xvef93eoP/cHJ5/3N1fP91d33/dXd9/3V3ff9zdXz/dXd9/3V3ff9wcnn/dXd9/29xdf91d33/
    +dXd9/3Byef9sb3n/b3F1/3Byef9tb3P/dXd9/3d5f/9ucHf/cHJ5/3Byef9kZ3H/am13/2Zpc/9sb3n/
    +bnF7/2ptd/9zdXz/bG51/3V3ff9zdXz/bnB3/3N1fP9sb3n/bG95/25wd/9ucHf/bG95/25wd/9wcnn/
    +c3V8/29xdf9ucHf/bG51/29xdf9zdXz/Z2px/2xvef9zdn//eXuB/3Byef9wcnn/eXuB/25xe/9sb3n/
    +bnB3/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/2xvd/9vcXn/am13/3Bzff9qbXf/am13/2psc/9ucHf/
    +am13/2xudf9sbnb/bW92/3Byef9ucXv/bG95/2ptd/93eX//dXd9/3Byef9ucHf/c3V8/3N1fP91d33/
    +c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/
    +bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/bG95/2xvef9wcnn/am13/2tueP9maXD/
    +Z2p0/2dqcf9iZW7/cHJ5/2hqcf9xc3r/bnB5/2xudf9qbXf/cHN9/3Z4fP9wcnn/bnB3/2xudf93eX//
    +Zmlz/2ptd/9ucHf/am13/25xe/9ucXv/bW9z/25wd/9sb3n/am13/3V3ff9qbXf/bG95/2ptd/9sb3n/
    +ZGdx/11gav9qbXf/am13/2xvef9zdXz/Z2p0/2xudf9wcnn/bnB3/2xudf9ucHf/cHN9/25wd/9sbnX/
    +am13/25xe/9sb3n/d3l//3Bzff9ucXv/bnF7/3l7gf91eIH/cHN9/3l8hv9zdXz/d3qD/25xe/91d33/
    +c3V8/3N1fP9vcXX/bG51/3N1fP9wcnn/b3F1/21vc/9tb3P/bG51/3d5f/9sb3n/amxz/2xudf9sbnX/
    +c3V8/2xudf9ucHf/bnB3/25wd/93eX//bnB3/2xudf9wcnn/c3V8/25xe/9wc33/bG95/25wd/91eIH/
    +d3qD/3Bzff93eoP/cHN9/3l7gf91eIH/dXd9/3l7gf95e4H/e32D/4GDiv9/gYf/foCG/36Ahv9wc33/
    +cHN9/2ptd/9sbnX/bG95/3N1fP9wc33/bnF7/25xe/9qbXf/Z2p0/25xe/9wc33/am13/2Zpc/9nanT/
    +Z2p0/2Rncf9maXP/ZGdx/2dqdP9qbXf/amxz/2xudf9kZ3H/am13/2xudf97fYP/cHN9/3N1fP9ucXv/
    +dXiB/2xvef9ucHf/d3l//25wd/9zdn//d3l//3V4gf91d33/cHN9/3l7gf95e4H/dXiB/3l8hv9wcnn/
    +eXuB/3V4gf9wc33/cHN9/3N2f/91eIH/bnF7/3d5f/93eX//bnF7/3N1fP9tb3P/Z2px/25wd/9sbnX/
    +dXd9/25wd/9qbXf/c3V8/2xudf9wc33/c3V8/2ptd/9wcnn/bG51/2xvef9tb3P/b3F1/2xvef9sb3n/
    +bG95/25xe/9ucHf/bnF7/3N2f/9wcnn/d3l//2xvef9wc33/eXyG/3t+h/9zdn//d3qD/36Ahv93eoP/
    +d3qD/3V4gf9ucXv/bnF7/25xe/9vcXX/amxz/3R2ff9wcnr/c3V6/25wd/92eHz/c3Z//25xe/9ucXv/
    +bG95/29ye/9tb3f/bnB3/25wdP9sb3n/c3V8/25wd/9qbXf/dXd9/3V4gf9wc33/bG95/3N2f/91eIH/
    +d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/dXiB/3t+h/9zdn//dXiB/25xe/97fYP/
    +c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/bnB3/3Bzff9zdn//c3V8/29xeP9ucXn/
    +bW90/2xveP9qbXf/Z2px/3d5f/9tb3T/c3V8/3N2fv9ucHj/cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//
    +c3Z//2Rncf9maXP/Z2p0/2Zobv9qbXf/bG95/2psc/9nanT/am13/2dqcf9ucHf/ZGdx/2Zobv9maG7/
    +Z2p0/2Rncf9gY2z/Z2p0/2dqdP9qbXf/cHN9/2dqdP9sbnX/bnF7/2xvef9qbXf/bG95/25xe/9sbnX/
    +bG51/25wd/9wcnn/b3F1/3l7gf93eoP/c3Z//3N1fP95e4H/eXuB/25xe/93eX//bnB3/25xe/9sb3n/
    +dXd9/3Byef9zdXz/bG51/2xudf9wc33/bG95/2xudf9sbnX/bG51/2ptd/91eIH/bnF7/2dqdP9nanH/
    +Z2px/2Zpc/9maG7/Zmhu/2dqcf9qbHP/c3V8/2Zpc/9kZ3H/am13/25xe/9qbXf/bG95/2dqdP9qbXf/
    +cHN9/3Bzff9nanH/cHN9/2ptd/9zdn//cHJ5/29xdf9wcnn/cHJ5/3N1fP91d33/dXd9/3Bzff9ucXv/
    +bW9z/21vc/9ucHf/bnF7/3N2f/93eX//d3l//3d6g/9zdn//c3Z//3Bzff93eoP/foCG/3l8hv91d33/
    +dXiB/3N2f/9ucXv/cHJ5/2xvef9zdXz/bnB3/25wd/9sb3n/amxz/29xdf9wcnn/e36H/3V4gf9zdn//
    +cHN9/3N2f/9ucHf/bnB3/3Z4fP9tb3P/c3V8/3Z4fP9wc33/cHN9/25xe/93eX//d3l//3Bzff95fIb/
    +bnF7/3d5f/91eIH/cHN9/3N1fP9wcnn/bnF7/2xvef92eHz/dXiB/25xe/9ucXv/bG95/2ptd/9qbXf/
    +bG95/3V3ff9wcnn/b3F1/3Z4fP9ucHf/c3V8/3V3ff9ucHf/c3V8/2ptd/9sbnX/bW9z/21vc/9ucHf/
    +bG95/2xudf9ucHf/bW9z/21vc/9ucXv/am13/3V3ff9maG7/am13/2xvef92eHz/bnB3/29xdf91d33/
    +am13/3Bzff91d33/d3l//3t9g/93eX//d3l//3d5f/98fYL/dniA/3Z4gP9xc3r/d3l//3Bzff9ucXv/
    +bnF7/3Bzff9tcHr/b3J8/3F0ff9zdXz/cHN9/3l7gf9wc33/bnF7/3V3ff91eIH/bnF7/25xe/91d33/
    +bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/bnB3/25wd/93eX//cHJ5/3Byef9ucHf/
    +eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/bG95/2xudf9ucXv/cHJ5/3J0e/9sbnb/
    +bG52/2Vocv9maXP/Zmhu/2Rncf9zdn//Z2px/21wd/9rbXb/Zmhv/2Nmb/9qbXf/cHJ5/2xvef9ucXv/
    +bG95/3V4gf9qbHP/bG95/25xe/9ucXv/dXd9/3N1fP9vcXX/cHJ5/3N1fP9sbnX/c3V8/2ptd/9qbXf/
    +bG51/25wd/9nanT/Zmlz/2ptd/9sbnX/am13/3V3ff9qbXf/am13/3Bzff9qbXf/bG51/2ptd/9qbXf/
    +amxz/2Zpc/9kZ3H/bG95/2psc/9zdXz/cHN9/2xvef9qbHP/bG95/3N1fP9qbXf/dnh8/2ptd/9ucHf/
    +bG95/3N2f/9ucXv/dXd9/25wd/9wcnn/c3Z//3Bzff9wcnn/bnB3/3Byef9wc33/f4GH/3V4gf9zdn//
    +bnF7/3Bzff9zdn//cHJ5/3Byef9wc33/cHN9/3l7gf9sb3n/bG95/2xvef92eHz/bnB3/25wd/9ucHf/
    +b3F1/3Z4fP9wcnn/Zmlz/25xe/9qbHP/bG95/2xvef9qbXf/cHJ5/25wd/9wc33/dnh8/3Z4fP9zdn//
    +c3Z//25wd/9sb3n/Z2p0/2ptd/9ucXv/c3V8/3N1fP9wcnn/bW9z/2psc/9maG7/bG51/3V3ff9sb3n/
    +bG51/3Byef9ucHf/bG51/3Byef9sbnX/bnB3/25wd/9tb3P/cHJ5/2Rncf9sbnX/bG95/3V4gf9ucXv/
    +bG95/25xe/92eHz/bnB3/25wd/92eHz/bG51/3N1fP92eHz/dXd9/3Bzff9ucXv/c3Z//3Z4fP9vcXX/
    +d3l//25wd/9zdXz/cHJ5/3Byef9ucHf/cHJ5/3Bzff9ucXv/eXuB/3l8hv91eIH/cHN9/25xe/9qbXf/
    +bnF7/25xe/97fYP/dXiB/3N1fP95e4H/bG95/25xe/9wc33/bnB3/3N2f/9sb3n/cHJ5/3Byef9zdXz/
    +dXiB/3N2f/9zdXz/c3Z//3N1fP9zdXz/d3qD/3N2f/97fof/bnF7/3Bzff9wc33/eXuB/25wd/9ucXv/
    +dXiB/3Bzff95e4H/e32D/3V4gf91eIH/cHN9/3Byef9qbXf/dnh8/3Fzev9zdXz/cHJ5/3N2f/9zdn//
    +bnF7/2xvef9wc33/bG51/2xudv9rbXb/aWxz/2dpb/9ucXv/am13/2Rncf9qbXf/am13/2Zpc/9nanH/
    +am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/
    +cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/bnF7/25wd/9vcXX/c3V8/3Byef9vcnz/
    +b3F4/3N1ff9ucXv/dHeA/3N1fP9zdXz/foCG/25wd/91d33/c3V9/21vdP9sb3b/c3V8/3V3ff9wc33/
    +bG95/3Byef91d33/Z2px/2xvef9ucXv/cHN9/3N2f/9zdn//bG95/25xe/9wc33/bnF7/3V4gf9ucXv/
    +bnB3/2xudf9zdXz/bnB3/2psc/9ucHf/bG51/3N1fP92eHz/bnB3/2xvef91d33/bnB3/25wd/9wcnn/
    +cHJ5/2xudf9sbnX/bnB3/3V3ff9tb3P/eHl9/2xvef9ucXv/amxz/2xvef9zdXz/bG51/3N1fP9sbnX/
    +c3V8/2xudf9zdXz/cHJ5/25xe/9ucHf/bG95/3Bzff9wc33/b3F1/25wd/9vcXX/cHJ5/3t9g/9ucHf/
    +c3V8/2xudf9ucHf/bnF7/25wd/9ucHf/cHJ5/3Bzff93eX//bnB3/2xvef9ucHf/c3V8/25wd/9sbnX/
    +am13/2ptd/9wc33/bnF7/2Rncf9qbXf/Z2p0/2ptd/9qbXf/amxz/25wd/9sbnX/bG95/3V3ff9wc33/
    +cHN9/25xe/9sbnX/amxz/25wd/9wc33/cHN9/3d5f/91eIH/d3qD/3N2f/92eHz/bnB3/36Ahv9/gYf/
    +eXuB/3p7f/9+gIb/e36H/3d6g/97fof/d3l//3l7gf92eHz/c3Z//31+gf9zdXz/eHl9/3t9g/9/goz/
    +e32D/3d6g/9zdn//eXuB/2xvef9vcXX/dnh8/2ptd/9ucXv/c3V8/3Bzff9qbXf/am13/25xe/9ucXv/
    +Z2px/3Byef9maXP/bG95/2ptd/9sb3n/Zmlz/2Rncf9kZmz/Zmhu/25wd/9wcnn/Zmlz/2xudf9qbXf/
    +Zmlz/2dqdP9sbnX/dXd9/3Byef9ucHf/eHl9/25wd/9sbnX/c3V8/2xudf91d33/bG51/29xdf9wcnn/
    +bG95/3V3ff9ucXv/bG95/3Bzff9sb3n/b3F1/3Byef9ucHf/dnh8/2Rncf9ucHf/bG51/3d5f/9qbXf/
    +am13/3N1fP9sbnX/dnh8/3Z4fP9tb3P/bG95/25xe/9ucHf/amxz/3R2fP9tb3f/c3V6/2xudf9wcnn/
    +cHJ5/25xe/9qbXf/c3V8/29xeP9xdH7/cXR+/3F0ff9wc33/dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/
    +bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/
    +bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/b3F1/3Byef9sbnX/bG51/25xe/9sbnX/
    +cHJ5/25wd/9xc3r/bnB0/29xeP9ucHf/bG51/3t9g/9ucHX/dHd+/3N1e/9vcXX/b3F1/3N1fP91d33/
    +cHN9/25xe/9wc33/d3l//2Rncf9sbnX/cHJ5/2xvef9wc33/am13/2xudf9ucHf/bnF7/25xe/9wc33/
    +am13/2xvef9nanT/bG95/2psc/9kZ3H/am13/2xudf9ucXv/c3V8/2dqdP9qbHP/bG95/2ptd/9sb3n/
    +bG95/2ptd/9sbnX/am13/2ptd/9wc33/bG95/3V3ff9wc33/bnF7/2xudf9zdXz/dnh8/25wd/93eoP/
    +bG95/3V3ff9ucXv/c3Z//3Byef91d33/cHJ5/25xe/91eIH/dXiB/25wd/9ucXv/cHJ5/3V4gf97fof/
    +c3Z//3V4gf9zdn//bnF7/3N2f/9wc33/cHJ5/3Byef9ucXv/d3qD/3Byef9sb3n/cHN9/3V4gf9wc33/
    +bnF7/25wd/9sbnX/dnh8/3Byef9sbnX/cHJ5/2xudf9qbXf/bG51/2psc/9sb3n/bW9z/3Byef92eHz/
    +dXd9/3V3ff9wcnn/bG95/25xe/9ucHf/dXd9/3Bzff93eX//dnh8/3N2f/9wcnn/bG95/2Rncf9zdn//
    +dnh8/25xe/9qbXf/cHN9/25xe/9ucHf/cHN9/2dqdP9wcnn/bG95/25wd/91d33/Z2p0/2xvef9wc33/
    +eXyG/3Z4fP9wc33/c3V8/3d5f/9sb3n/bnB3/3Z4fP9sb3n/c3Z//3d6g/91eIH/cHN9/3N2f/95e4H/
    +d3l//25wd/95e4H/bnF7/3V3ff9zdn//c3Z//3Bzff9wcnn/cHN9/25xe/93eX//d3l//3N2f/9ucXv/
    +bnF7/2dqdP9sb3n/bnB3/3Z4fP9ucHf/bG95/3V4gf9ucHf/b3F1/3Bzff9ucHf/eXuB/2ptd/9ucHf/
    +bnB3/29xdf91d33/cHJ5/25wd/9zdXz/bnB3/29xdf9wcnn/b3F1/3Z4fP9kZ3H/am13/2xvef91eIH/
    +am13/2xudf9ucXv/Zmlz/3Bzff9zdXz/c3V8/3V4gf91eIH/bnF7/2ptd/9vcnz/bG95/3N1fP9naXD/
    +Z2p0/2ptd/9sb3n/am13/25xe/9tb3b/cXN7/3F0fP9vcnv/cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/
    +bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/c3V8/2xudf95e4H/bnB3/3N1fP93eX//
    +dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/am13/2Zpc/9nanT/bG51/2psc/9sb3n/
    +bG51/2xvef9qbXb/am13/2lsdf9rbnj/am13/2dqdP91eIH/a211/3N1ff9sb3n/am12/2xudf9wcnn/
    +dXd9/3N1fP9zdXz/dXd9/3Byef9dYGr/YmVu/2Zpc/9nanT/am13/2Rncf9maG7/ZGdx/2Zpc/9maXP/
    +Z2p0/2Zobv9nanT/ZGdx/2Rncf9iZW7/XF9o/2Zobv9maG7/am13/25wd/9kZ3H/Zmlz/25xe/9sb3n/
    +bnF7/2ptd/9sb3n/bnF7/2ptd/9tb3P/dXd9/3Byef95e4H/cHN9/3Bzff9vcXX/dXd9/3V3ff9ucXv/
    +dXiB/25wd/92eHz/bnB3/3Z4fP9wcnn/c3Z//25wd/9ucHf/cHJ5/3Byef9tb3P/bG51/21vc/9zdXz/
    +d3l//2xvef9sb3n/bG95/2xudf9qbXf/am13/2ptd/9nanT/bG51/3V3ff9ucHf/bnB3/25wd/9zdn//
    +cHJ5/25wd/9sbnX/bnB3/3N1fP9zdXz/bG51/3Byef9sbnX/bG51/25xe/9wcnn/cHN9/3Bzff9zdn//
    +e36H/3l7gf91eIH/cHN9/3Byef9ucXv/bG95/3Bzff91d33/d3qD/3d5f/93eoP/cHN9/25xe/9qbHP/
    +eXuB/36Ahv95fIb/dXd9/3d6g/91eIH/c3Z//3V4gf9wc33/d3qD/3Bzff9zdn//eXyG/2xvef9ucHf/
    +cHJ5/3l7gf9zdXz/cHJ5/3Byef92eHz/bnB3/3Byef9wc33/bG95/3N2f/91eIH/c3V8/2xvef9wcnn/
    +e32D/3l7gf9sb3n/dXiB/3Byef9zdn//cHN9/3N2f/9zdn//bnB3/3V4gf9wc33/d3l//3V4gf91eIH/
    +c3V8/3Bzff9qbXf/b3F1/21vc/91d33/bG95/2xudf91d33/am13/2xudf9qbXf/bG51/3V3ff9qbXf/
    +bW9z/2xudf9tb3P/dXd9/2ptd/9tb3P/cHJ5/2ptd/9sbnX/bG95/2xudf91d33/Zmhu/25wd/9sbnX/
    +dXd9/2xudf9vcXX/dnh8/2xudf92eHz/cHN9/21vc/9wcnn/c3V8/3Byef9nanT/bnF7/29ye/9wc33/
    +bG51/2xvef9qbXf/am13/2xvef9zdXz/bnB0/3J0ev9xdHv/bnB6/25xe/91eIH/cHN9/25wd/95fIb/
    +d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/
    +d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/dnh8/2xvef9qbXf/am13/2xudf9qbXf/
    +c3V8/2xudf9wcnn/bW92/3ByeP9vcXX/bnB3/2dqcf9nanH/d3l//25xdf90dnz/bW94/2tueP9nanT/
    +bnF7/3V3ff9sb3n/cHN9/25xe/92eHz/YmVu/29xdf9zdn//d3l//3V4gf9wc33/bG95/25xe/9zdn//
    +dXiB/3d6g/9ucXv/eXuB/3N2f/97fYP/cHN9/2xvef9zdn//cHJ5/3N2f/97fof/c3Z//3Bzff93eoP/
    +c3Z//3d6g/9wc33/cHN9/3Bzff9sb3n/bnB3/3V4gf9zdn//foGK/3N2f/9wc33/bnB3/3V3ff9zdn//
    +bnB3/3V4gf9sbnX/dnh8/25wd/92eHz/cHN9/3Z4fP9ucHf/bG95/25xe/91d33/b3F1/3Byef9wc33/
    +d3qD/36Biv91eIH/dXiB/25xe/9ucHf/cHN9/2xvef9ucXv/bG95/25wd/9wc33/bG95/2xvef9wcnn/
    +dXd9/3Byef9tb3P/bW9z/2dqdP9wc33/bG95/2dqdP9sb3n/ZGdx/2Zpc/9sb3n/Zmlz/2dqcf9maXP/
    +bG51/3V3ff9sb3n/c3V8/25wd/9ucHf/bG51/2tueP9vcnz/dXeA/3h7hf9ydX7/dXd9/25wd/9ucHf/
    +Zmds/3Byef9wcnn/c3V8/2dqdP9wcnn/cHJ5/2xudf9qbXf/Zmlz/2psc/9maXP/aGty/25xe/9nanT/
    +a210/2hrdf91eIH/bnF7/2xvef9qbXf/c3V8/2dqdP9qbXf/am13/2xudf9ydHv/dHZ8/2ptd/9sb3n/
    +bW92/3N1fP9ydHv/am12/3d4ff9wcnn/dXiA/3J1fv91eIH/cnR8/2xudf9wcnn/cHJ5/3V3ff9wcnn/
    +cHJ5/21vc/9ucHf/Z2px/25wd/9ucHf/dHZ8/29xeP9sb3b/dnh//29xdf9sb3n/bnF7/29xdf94eX3/
    +amxz/29xdf9tb3P/cHJ2/3V3ff9wcnn/b3F4/3R2fv9ucXj/bW93/3Fze/9vcXX/dXd+/2dpb/9sbnX/
    +bnB6/3d5f/9sb3b/a254/3V3e/9sbnT/dHZ6/3Bzff92eHz/e32D/36Ahv99foH/d3l//3l7gf91d3z/
    +c3Z+/2tudf9sb3n/am13/2Zpc/9nanT/bnF6/2ptdv9zdX7/c3V9/3V4gP9wc33/e32D/3V4gf9ucXv/
    +e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/am13/25wd/9wcnn/bG51/3l7gf9ucHf/
    +c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/
    +bG95/3Bzff9sbnX/cHJ5/25xeP9ucHn/bG52/2tudv9nanT/am12/3F0fv9pbHX/bXB6/2psdP9nanH/
    +Y2Zv/2Zpc/9ucHf/am13/25xe/9ucXv/b3J7/2Zpcv9rbnf/bW94/29yfP9ucXr/b3J6/21vdv9vcXj/
    +bG93/2lsdP9rbXb/bXB4/21wev9nanP/aGt0/2Fkbf9gY2z/amxz/2dqcf9oa3X/cnV8/2Zocf9qbXb/
    +a212/2xudf9sbnf/bW92/3Byef9ucHn/b3F4/2psdf9ucXv/bnF6/29ye/9sb3n/bW94/25wdf9xc3r/
    +bnF3/3F0e/9vcnv/bXB4/3J0fP9ucHf/cHJ5/21wev9ucXv/amx1/2ptc/9tcHj/b3F4/3J0ef9tb3b/
    +bXB4/3Bze/91d33/dHZ+/3Bze/9wcnn/b3F4/3h6gv93eH3/dHZ7/3Z4f/92eYL/d3qB/3d5gv90d3//
    +eXyF/3t+h/99f4f/e32G/31/hf98foX/fYCI/3p9hv9+gIb/e32E/3V3fv95e4P/enyD/3d5f/95e4H/
    +enyE/3l8g/97fYL/dnh//3V3fv92eYL/cnV9/3Fze/9sb3j/bnF5/3F0ff9zdXv/bXB5/3R2ff9rbXX/
    +amx1/2Rmbf9pbHX/aWx2/25wev9fYmz/Zmlz/2dqdP9kZ3H/Zmlz/2BjbP9maG7/XmFr/2Vocv9qbXf/
    +Y2Zw/2Zpc/9oa3T/b3F5/2dqdP9maXP/ZGdx/25wd/9kZ3H/Zmlz/2Zpc/9oa3T/cXN6/3N1fP9rbnj/
    +bnF6/2xvef90dn3/cHN7/2ttdf90dn3/b3J6/3V3ff9vcnv/dHd//3Byef9ucHf/cnV+/25xe/93eX//
    +cHJ5/3N1fP9ucHf/cHJ5/2dqcf9ucHf/bnB3/3R2ev9sbnb/a211/3N1fP9tb3T/bG51/25wd/9ucHf/
    +dXd9/2dqdP9sbnX/bW95/25weP9xdHz/bnF5/2xveP9xc3z/bnB3/2xudf9xdHz/bnB3/3F0ff9sbnf/
    +bnB5/29xeP92eH7/b3F4/3J0eP9xc3r/bG93/3Fzev9vcXr/am13/3N1fP9sb3n/cHN9/2xudf9zdX3/
    +dHZ9/3V4gP9ucXv/c3Z//3N2f/9sb3n/cHJ5/3R2fP9vcXr/dnh+/3FzfP9vcnz/bnF7/3N2f/9sb3n/
    +bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX//amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/
    +ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/bG95/2xudf9wc33/am13/2Zpc/9sb3n/
    +am13/25wd/9zdn//bnB3/25xe/9ucHj/b3F5/2hrc/9qbHT/Zmlz/2lsdv9rbnf/Z2py/25weP9xdHz/
    +bW90/2hrdf9sb3n/cHN9/2xvef9zdXz/c3V8/3Bzff9rbnf/b3J8/29yfP9ydX//dXd+/3R2ff9tb3b/
    +cnR6/2xveP9tcHr/bnB4/3J1ff9vcnz/bG52/3Fzff9oa3X/ZGdx/21vc/9tb3P/c3Z//3Z4f/9vcnr/
    +cXN7/3F0ff9wcnz/bnF6/3Bzff9ydX7/c3Z//3N2f/9sb3n/c3Z9/3J1fv9ydX//dnmC/3N2f/92eYH/
    +dXiB/3J1fv98foX/dHeB/3F0ff9ydX7/cHN8/3R3f/91d33/cHN8/29xef9vcXX/cHJ5/3Fzd/91d33/
    +bnB3/25xe/9ucXv/cnR6/3F0fP9xc3j/bG52/21wef90dn3/dXh+/21vd/90d3z/bnF4/29xef9wc3z/
    +bG95/3Bzff9xdH7/cnV+/25xev9wc3z/cnV+/3N2f/9wc3z/d3qE/3BzfP9rbnf/bnF6/3Byef9vcXn/
    +cnR7/29xef9ydHv/bW92/2hrcv9qbXf/am13/2xudf9tb3P/cnR8/3N1fP90dn7/c3V6/3N1fP91eH//
    +bXB4/3F0e/9rbXP/bXB6/2xvd/90dnz/aGt0/3J0e/9zdXz/bnB3/3N1fP9ucHf/bnB3/2ttdP9wc3n/
    +c3V7/3ByeP9wcnj/cXN5/3V3gP9ydHv/cHJ5/3Byef95e4H/bG51/2tud/9rbXb/bG95/25xe/9xc3r/
    +bG53/29xeP9zdXn/dHd+/3Fzef9sbnT/cnR9/3F0ff9ydHz/bW94/3V4f/9ucXn/bG94/21wev9wc33/
    +d3l//3Byef9wcnn/bW9z/25wd/9maG7/bG51/21veP90dnv/b3F6/21wev94eoH/cnV//3Fzev9sb3n/
    +cHJ5/3Z4fP9sbnX/bW92/25xe/9wc33/dnmA/3FzfP9wc3z/dnmD/3R2fv9vcnr/dniB/3Z4gf92eH3/
    +cnV+/3R3gf9ydHz/fH6E/3d5gP94eoD/c3Z+/2xveP9ucXr/bnF4/2Zpc/9sb3n/am13/25xe/9kZ3H/
    +cXN9/25xev91eID/bnF7/2xvef9zdXz/bW92/3Byef91d37/cXR9/3t9h/90d3//cXR9/3N2f/95e4H/
    +c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/f4GH/3d5f/93eoP/c3Z//3d6g/91d33/
    +foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn//am13/25xe/9ucXv/c3Z//3Bzff9qbXf/
    +c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bXB3/3V3ff9tb3j/bnF6/25xe/90dn3/cXN7/29yfP9vcnz/
    +cHN9/3Fzev9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9tcHn/aWx2/2xvef9rbXT/am13/21wef9vcnz/
    +am13/29yfP9nanT/bG95/2tueP9vcnv/bnF5/2tudv9ydHv/bG51/2Zpc/9vcXX/bnB3/3Bzff91eIH/
    +bG95/25xe/9ucXv/bG95/21vdv9ucHf/c3Z//3N2f/90d4D/bnF7/21wev9zdn//b3F4/3N2f/9ucXv/
    +c3V8/3N2f/9zdXz/eXuF/3Bzff9zdn//c3Z//3N2fv9zdn//eHqA/25xe/9tcHr/cnR8/3Byef9wcnn/
    +cHN8/3Byef9ucHf/bnB3/21vdv9wcnn/b3F1/2dqcf9qbXf/cHN9/3Bzff9qbXf/dHZ8/25wd/9ucHf/
    +cHJ5/21vd/9zdXz/bG95/3V4gf9ucXv/cHN8/3N2f/9ucXv/bnF7/3h7hf95fIX/dnh8/3x9gP99f4b/
    +foCG/3x9gf9+gIf/foCG/3d6g/93eoP/eXyG/3t9g/95e4H/dnh8/25wd/9ucXj/b3J7/3Fzev9ydHv/
    +eXt//3R2ff90dnz/bG94/3Byef9wcnr/dHd//3J0ff98foT/fX+F/3V3ff97fYP/dnh8/3Z4fv91dnv/
    +d3l+/3F0fP90d37/cHJ6/3V4f/90d4H/cHN7/3Byef9zdXz/dXiB/2ptd/9tb3b/bW92/29yev9xdH7/
    +b3F4/2lsdv9tb3f/c3V7/3N2f/9tcHr/bW92/3F0fv9ydX3/c3Z8/2xudf9ydX7/a210/2hrdf9maXP/
    +bXB5/3N1fP9wc33/am13/2xudf9sbnX/Z2px/2xudf9vcXX/cHJ4/2ttdv9ucXr/dHd+/29yd/9sbnb/
    +b3F1/3Bzff93eX//bnB4/2xvef9ucXr/cXN6/3Fzev9vcXj/bnB3/3h6gP9ydHv/bG51/29xeP9ydHv/
    +bW92/2tudf9ucHf/amxz/3N1fP9ydHv/bnF6/2dqdP9nanT/aGt1/2xvef9nanT/bG95/2ptd/9ucXv/
    +ZGdx/29xe/9xc3n/cnR9/2xvef9ucHf/c3V8/2xvef9tcHn/dHZ+/25xeP9zdn//a254/2ptdv9nanT/
    +bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/
    +Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/
    +Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/aWx1/2xudf9sb3n/cHN8/2tueP9ucHf/
    +bXB5/3J0fP9ucXb/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/cHN9/2ptd/9qbXf/Z2p0/2ptd/9sb3n/
    +bnF7/2Zpc/9qbXf/YmVu/2dqdP9laHL/aGt0/2lsdf9oanH/bW95/2dqdP9iZW7/bG51/2ptd/9rbnj/
    +bnF4/2Zpc/9naW//ZGdx/2Rncf9kZ3H/Zmhu/2ptd/9kZ3H/ZGdx/2BjbP9maG7/Z2p0/2Zpc/9nanT/
    +Z2p0/2dqdP9ucXv/bG51/3d6g/9qbXf/am13/2xudf9sbnX/cHJ5/3V3ff9ucHf/bnB3/25xe/9wcnn/
    +cHN9/3d6g/9zdXz/cHN9/3Byef9wc33/c3Z//3N1fP9sb3n/cHJ5/3d6g/91eIH/bnB3/3d5f/9ucXv/
    +bnB3/25xe/9ucXv/cHN9/3N2f/93eoP/dXiB/3d6g/9wc33/cHN9/2xvef94eX3/c3V8/25wd/91d33/
    +c3V8/3N2f/91eIH/c3Z//3Bzff9qbXf/Z2p0/2xvef9ucXv/bG95/25wd/9qbXf/bG51/2tud/9rbXT/
    +bG95/3V3ff9wc33/dHZ8/2tueP9sbnb/Z2p0/2ttdf9oanP/amxz/2ptd/9maG7/bG95/2dqdP9sbnX/
    +amx0/21weP9rbXb/bnF6/2xvef9zdXz/b3J8/25xe/9zdn//eXuB/36Biv9wcnn/cHN9/3F0fP9ydX3/
    +bnF6/2ptd/9laHL/bW92/3N1fP9xdH3/b3F4/3Bydv9tcHr/dXd9/3h5ff9vcXj/eHqB/25xev9ucHf/
    +am11/3Fzev91d33/cHJ5/29xdf9ucHf/bnF7/2dqdP9rbnj/b3F4/3Bze/9rbnf/b3J8/3Z5gv9xc3v/
    +a253/25wd/9ucHf/d3qD/29xd/9sb3n/bXB6/3J0e/9tcHr/am13/2ptd/95e4H/cHJ5/2psc/9ucXv/
    +cHJ5/25wd/9sbnX/bnB3/2dqcf9zdXz/c3V8/25xe/9qbXf/am13/2Zpc/9ucXv/YmVu/2Zpc/9kZ3H/
    +am13/11gaP9rbnj/bG93/21wd/9tcHr/am13/2xvef9sbnX/a253/3R2fP9tb3P/dXd+/2lsdv9pbHX/
    +Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/bG51/2xvef9zdn//amxz/2xudf9qbHP/
    +bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/bG95/25xe/9maXP/bG51/2xudf9ucXv/
    +bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/29xd/9zdXz/cnR7/2tudv9sb3n/bnF7/25xe/9qbXf/
    +c3V8/3J0e/9wc3v/b3F4/3N1fP9wc33/e32D/3t9g/9+gYr/eXuB/3N1fP9sbnX/bnB3/2xudf9wcnn/
    +bnF7/3Bzff9qbXf/bG95/2Zpc/9sb3n/bnF7/3R2e/9ucXn/bG51/3Fzev9ucHf/Z2p0/25xe/9zdn//
    +b3J8/3Byev9rbXT/aGtx/2dqcf9kZ3H/ZGdx/2Zobv9nanT/am13/2Zpc/9kZ3H/Zmhu/2xvef9nanT/
    +bG51/2Zpc/9qbXf/bnF7/2ptd/93eoP/bnF7/2xudf9ucHf/c3V8/3N1fP9zdXz/bnF7/3N2f/9zdn//
    +c3Z//3N1fP93eoP/bnF7/25xe/9sb3n/bnF7/2xvef9sb3n/Z2px/2xudf9zdXz/cHJ5/2xudf9zdXz/
    +bG51/2ptd/9sb3n/bG51/2ptd/9qbXf/am13/2dqdP9sb3n/ZGdx/2dqcf9nanH/bnB3/2ptd/9maXP/
    +bG95/2ptd/9qbXf/bnF7/2ptd/9qbXf/Z2p0/2Zpc/9qbXf/bG95/2xudf9sb3n/bnB3/25wd/9ucXv/
    +bnB3/3V3ff91eIH/dXd9/3Z4fP9ucHf/bG92/2hrcv9xc3r/a252/25wdv9ydX7/cHJ5/3Bzff9sb3n/
    +b3J5/2tudv9xc3r/bG51/3V3e/9ydHv/c3V8/3N1fP9ucHf/bW92/3V3ff91eIH/amxz/2xudf9tb3b/
    +b3F2/25weP9tb3b/amxz/29xdf91d33/c3V8/2xvef9wcnn/bnF7/3l7gf95e4H/cHJ5/3d5f/9ucHf/
    +bnB1/2lsdf9ucHr/bG95/25xe/9qbXf/am13/3N1fP9sbnX/bW93/2xvef9vcXj/ZWhy/2ptd/90dnz/
    +bnB1/2psc/9sbnX/bG51/3d5f/9tb3T/bW92/21vdv9rbnf/a254/2xudf9sbnX/eXyG/3Byef9sbnX/
    +bnB3/25wd/9sbnX/bG95/2xvef9nanH/dXd9/3Z4fP91d33/cHJ5/3Byef9ucHf/c3Z//2psc/9zdXz/
    +cHJ5/3N1fP9maG7/cHJ5/3Byev9wcnr/b3J7/2xudf9wcnn/bG51/2tud/9ydHv/bG52/3d5f/9tcHj/
    +cHN8/3N2fv91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/bG51/25wd/9zdXz/d3l//2ptd/9qbXf/
    +bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/
    +bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9tb3b/cHN9/3F0fP9xc3r/cnV+/3d6g/9zdn//
    +cHN9/3R3gP90dn7/b3J6/25wd/9ucXv/cHJ5/3l7gf93eX//e36H/3d5f/91d33/bG51/25wd/9sb3n/
    +cHN9/3N1fP9zdXz/bnB3/3V3ff9sbnX/cHJ5/3Byef9wc3r/aWx2/2VocP9kZ3H/ZGdx/11gav9kZ3H/
    +Zmlz/2dqc/9rbXb/ZWhy/2ZpcP9nanH/bG95/2ptd/9sbnX/c3V8/3Byef9zdXz/bG51/2psc/9qbXf/
    +Z2px/2psc/9maXP/Z2p0/2xvef9sbnX/eXuB/3Byef9ucHf/bG51/3Byef9wcnn/bnB3/2xudf9ucHf/
    +bG95/2xudf9nanH/bG95/2dqcf9nanT/ZGdx/2Zpc/9sbnX/bG51/2Rncf9nanT/bnF7/2xvef9qbHP/
    +dXd9/2ptd/9nanH/bG95/2dqcf9ucXv/bG95/25xe/9wcnn/bnF7/2xvef9qbXf/bnF7/3V3ff91d33/
    +b3F1/3Byef9wcnn/bnB3/25xe/9sbnX/am13/2psc/9qbHP/bnB3/25wd/9sbnX/bG51/3N1fP9sbnX/
    +bG95/21vc/9zdXz/dXd9/25xe/9wc33/am13/2dqdP9dYGn/aWx1/2ptdf9sbnP/b3F4/2xudf9ucXv/
    +bG51/29xeP9rbXX/bnF5/21wef9ydHv/dHZ8/3R2ff9wcnn/bW92/2xvef9wc33/d3qD/2xudf9rbXX/
    +a253/3Fzev9vcnv/b3F4/2xvef9vcXX/c3V8/3Byef9ucHf/bW9z/2xudf91d33/c3V8/21vc/94eX3/
    +b3F1/25wdf9qbHL/cnR7/3N1fP9zdn//bnF7/25wd/9zdn//bG95/3Byef9vcnr/cXN5/21vdv9ydHv/
    +dniB/3J0e/9wc3z/cHN9/3N1fP99gIn/b3F4/21wef9ucHf/bnB3/25wd/9nanT/bG51/3l7gf9ucXv/
    +bG51/25wd/9ucHf/Z2p0/2ptd/9qbXf/ZGdx/2xvef9ucXv/Zmlz/2Zpc/9nanT/Zmlz/2xvef9qbXf/
    +c3Z//3V3ff91d33/amxz/3Fze/93eX7/dXiC/3N2f/9wc33/eXuB/3J0e/9vcnz/cXR+/2ttd/91eH7/
    +bG92/3Byef90dnz/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/
    +bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/
    +bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/aGty/2hrdf9tb3b/Z2py/2lrcv9sb3n/
    +Z2p0/2Zobv9rbnj/bG95/2dqdP9jZm//ZWhy/2Rncf9sb3n/Zmlz/3Bzff9zdXz/dXiB/3Byef93eoP/
    +cHN9/3l8hv97fYP/e32D/3V3ff99foH/dXd9/3l8hv95fIb/e3yB/3l8g/9ydH3/b3J7/25wd/9qbXf/
    +bnB3/3Fzev92eH7/eXp//3p8gv92eH7/dXd9/3d6g/93eoP/dXd9/3d6g/9zdn//d3qD/3N1fP9wcnn/
    +c3Z//3N1fP9zdn//c3V8/3Bzff91eIH/bnB3/3d6g/9wc33/bnF7/3Byef9wc33/dXd9/2ptd/9sb3n/
    +bW9z/25wd/9ucHf/bnB3/3h5ff9ucHf/dXd9/2xvef9ucHf/bW9z/25wd/9nanH/bG51/3Z4fP91d33/
    +b3F1/3Z4fP9vcXX/bW9z/3N1fP9qbXf/cHN9/2xvef9wcnn/dXd9/3Byef9sb3n/amxz/25xe/9wc33/
    +bnF7/2psc/9qbXf/Z2p0/2Zobv9maXP/ZGdx/2dqcf9kZ3H/Zmlz/2psc/9qbXf/amxz/2psc/9zdXz/
    +bnB3/2xudf9sbnX/bnF7/3N1fP9zdXz/dXd9/3N1fP9sbnX/ZWdt/2psdv9rbnj/a252/29yfP9sb3n/
    +cHN9/2xvef9wcnn/aWxz/3Byef9tcHn/dHZ8/3R2fP9zdXz/cXN5/21wef9vcnv/dXiB/3t+h/9zdXz/
    +b3F4/21wef9xc3r/am12/2hrdf9maXP/am13/25xe/9sb3n/bG51/2ptd/9qbHP/cHN9/3Bzff9sbnX/
    +c3V8/21vdv9wcXf/c3V8/3t9g/97fYP/fX6B/3l7gf92eHz/foCG/3h5ff91d37/dHZ8/3Fzd/9ucHj/
    +cXN6/3d6gv9vcnv/bG95/3Bzff9wc33/en2G/3N1fP9xdH3/cXN5/25xeP9xc3n/bG51/29xdf91eIH/
    +bnF7/2dqdP9sbnX/bnB3/2psc/9sb3n/bnF7/2Zpc/9sb3n/c3V8/2xvef9wcnn/dXd9/2xudf9zdXz/
    +Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dHd//3N0e/9tcHT/bnB3/3N1fP9qbHP/bG95/3N1fv9rbXf/
    +dXd9/21vdf9zdXz/dXd8/3N1fP9sb3n/Z2p0/3V3ff91d33/bnB3/2xvef9sbnX/bnB3/25wd/91d33/
    +bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/
    +bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/bnB3/21vdP9wcnr/cXN5/21vdf9ucHf/
    +c3Z//3N1fP9sb3n/cnR7/3N1e/9rbXT/aWx2/2xudf9nanT/c3V8/2xvef91d33/dXd9/2Rncf9kZ3H/
    +Zmlz/2Jlbv9nanT/Z2p0/2Zpc/9kZ3H/Zmlz/2Rncf9qbXf/bG95/25wev9xdHz/bW93/29xef9sbnX/
    +am13/25wd/9vcXn/cnR7/3ByeP9ydHv/bnB3/2xvef9zdn//bG95/25wd/9wcnn/cHJ5/3Bzff9qbXf/
    +bW9z/25wd/9tb3P/bnB3/25wd/9sbnX/cHJ5/21vc/91eIH/cHN9/3N2f/93eoP/d3qD/3d5f/9wc33/
    +cHJ5/21vc/9ucHf/cHJ5/21vc/91d33/b3F1/3V3ff9sbnX/bnB3/29xdf9sbnX/Zmhu/2xudf91d33/
    +c3V8/29xdf93eX//b3F1/2xudf9ucXv/Z2p0/3Bzff9sb3n/bG95/25xe/9ucXv/bG95/2psc/9wc33/
    +cHN9/3N1fP9sbnX/cHJ5/3N1fP9sb3n/bnF7/25wd/9ucHf/bnB3/2xudf9vcXX/bnB3/2xvef9sbnX/
    +d3qD/3Bzff9zdn//c3Z//3d6g/95e4H/dXiB/3l7gf91eIH/am13/2ptd/9xc3r/bnB2/2xudf9ucHf/
    +bW9z/3V3ff9ucHf/cHJ5/2lsc/9ucXv/b3F6/3V3ff90dnz/b3J7/3Byev9vcXj/b3F4/3V3ff93eX//
    +bG51/2hrdf9rbnj/bXB4/2Zpc/9rbXT/ZGdx/2dqdP9wcnn/am13/2dqcf9nanT/ZGdx/2Zpc/9maXP/
    +Zmhu/2dqdP9jZm//aGpx/2hqcv9wcnr/cHJ5/3Byef9ucHf/bnB3/2xvef9ucHf/bW91/25xe/9qbXb/
    +Zmlz/2lrdP9wcnr/bXB0/2dqcf9sbnX/bW9z/3Z5gv9tb3b/a254/21vd/9tb3b/c3V8/2xudf9vcXX/
    +d3qD/3V3ff9ucHf/cHJ5/3Bzff9qbXf/bnF7/25wd/9qbHP/c3V8/3Z4fP9ucHf/cHN9/3Z4fP9ucHf/
    +bnB3/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/21wev9xdHr/bnB4/25wd/91d33/bXB3/29xef9ydX7/
    +a213/3h6fv9vcXf/cnV9/3h6gP93eoP/c3Z//25xe/9+gIb/foGK/3l7gf97fYP/d3l//3t9g/93eoP/
    +foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/e32D/3N1fP9wcnn/cHJ5/25xe/9zdn//
    +c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/dXiB/3Bzff9wcnn/bXB6/3Fze/9ucXr/
    +bnB3/3N2f/9ucXv/bG95/3BzfP9xdH3/bnF5/2xvef9ucHf/cHJ5/3h5ff9wcnn/foCG/3t9g/9qbXf/
    +am13/3Bzff9qbHP/bG95/2xvef9nanT/amxz/2xvef9maXP/bnF7/3Bzff9wc3z/cXR+/25xeP9vcnz/
    +c3V8/2ptd/9qbXf/b3F5/3J0ev9vcXf/am13/2dpc/9nanT/cHN9/2xudf9sbnX/cHN9/25xe/9wc33/
    +Zmlz/2xudf9qbXf/amxz/2dqcf9kZ3H/Zmhu/2dqcf9qbHP/cHJ5/2ptd/9qbHP/am13/2Zpc/9sb3n/
    +amxz/2ptd/9nanT/amxz/25xe/9qbXf/c3V8/2psc/9sb3n/Zmlz/2psc/9qbHP/amxz/2Jlbv9maXP/
    +bnF7/2xvef9sbnX/dXd9/2psc/9sbnX/cHJ5/2xudf91d33/bnB3/2xvef92eHz/bnB3/25wd/9tb3P/
    +eHl9/3N1fP9zdXz/cHJ5/3N1fP9zdXz/bnF7/25xe/9sb3n/bW9z/2xudf9ucHf/bG95/25wd/9wcnn/
    +b3F1/3Byef9qbXf/bG95/2ptd/9wc33/cHN9/2xvef9wc33/bG95/2Jlbv9hZG3/bG51/21wef9qbXf/
    +bnB6/3Byef91eIH/bnB3/2xvef9naXP/cHJ5/29xef91d37/dHZ9/25xev9vcXr/bnF4/3Byef91d33/
    +d3l//25wd/9vcXj/cHJ5/3F0e/9ucHf/b3F4/25wd/9wcnn/dXd9/25wd/9qbHP/bnF7/3Byef9sb3n/
    +bnF7/2xudf9wc33/b3F1/21vdv9sb3b/dXd9/25wd/9zdXz/bnB3/2xudf9sbnX/bW9z/2hrdP9wc3v/
    +bXB6/2ptdP9qbXT/c3V8/21vdf9iZW7/ZGdx/2dqcf9ydX7/a211/2tueP9rbnj/bXB3/3N1fP9sbnX/
    +bnB3/3t9g/91d33/bnB3/25xe/9zdn//am13/3Bzff9sb3n/bG95/3Bzff91d33/cHJ5/3N1fP91d33/
    +bG51/3Byef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9xdH7/dnh+/3F0fv9wcnn/dXd9/2xudf9vcXf/
    +dHZ8/21veP91d37/bW92/21wev90dnz/c3V8/21vc/9ucHf/dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/
    +bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/
    +cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/eXyG/36Biv91eIH/dHeA/3Fze/9wc3v/
    +a252/2hrcv9maXP/YmVu/2Zobv9nanP/bG94/2xudv9pbHb/cHJ5/2ptd/91d33/bG95/36Ahv97fYP/
    +am13/2xudf91d33/amxz/3V3ff9wc33/bG95/2xudf9zdn//Z2p0/3N2f/91d33/cnR7/3Byef9ucHf/
    +cHJ5/2xvef9maXP/amxz/29xef9vcXj/cHJ3/25wev9qbXf/Zmlz/3Bzff9sbnX/am13/3Bzff9ucXv/
    +cHN9/2ptd/9sbnX/bG51/2psc/9qbHP/Zmlz/2dqcf9nanH/bG51/3V3ff9wc33/bG51/3N1fP9sb3n/
    +c3V8/2xudf9wcnn/am13/21vc/9zdn//cHN9/3d5f/9vcXX/dXd9/2psc/9ucXv/bnF7/25xe/9nanH/
    +bG95/3V4gf97fYP/c3V8/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3N2f/9wc33/eXuB/3Bzff9ucXv/
    +bG95/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/25wd/9qbXf/am13/21vc/9qbXf/am13/2xvef9sbnX/
    +cHJ5/25wd/9wcnn/cHJ5/25wd/9wc33/dXd9/3l7gf91d33/dXd9/3Bzff9sb3n/am13/3Bydv9tb3b/
    +am13/2ptd/9sbnX/dXd9/25wd/9wcnn/Z2px/3Byef9ucHn/dHd//3d4ff9vcXj/cXN5/2tud/9sb3n/
    +c3V8/3V3ff9sbnX/aGt1/21wev9tb3j/Zmlz/2hrdf9maXP/cHN9/3Bzff9qbXf/Z2p0/2xvef9ucXv/
    +bG51/25xe/9qbHP/bG95/2xudf9ucXr/aWx0/3J0e/9sbnX/cHN9/25xe/9nanT/bG95/2xudf9sbnX/
    +c3V9/3R2fv9tcHr/cHJ3/3R2fP9wcnn/am13/2dqdP9ucHf/dnmC/25xe/9ucXv/bnF7/25xe/91d33/
    +bnB3/29xdf93eX//cHN9/2ptd/9qbXf/cHN9/2Rncf9sbnX/Z2p0/2Rncf9nanT/bG95/2Zpc/9maXP/
    +bG95/2dqcf9qbXf/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/a212/3N1e/9zdXz/b3F1/3d5f/9tcHr/
    +cXR8/3Z4gP9ucXr/dnh//25wdf9ucHf/dXd9/2xvef9qbXf/bG51/3V3ff93eX//bG95/3Byef9ucHf/
    +bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX//am13/3Bzff9wc33/bW9z/2ptd/9nanT/
    +am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/Z2px/2ptd/9zdXz/bG95/2xvef9sbnb/
    +cHJ6/21wev9sb3n/bnF7/2xvef9ucXv/dHeA/3Z4f/9xdH3/am13/3Bzff9zdXz/e32D/3V4gf+Fh43/
    +f4KM/25xe/9sb3n/d3l//2xvef93eX//cHN9/3Bzff9zdXz/dXiB/2xvef94eoH/dnh+/25xev9ucXr/
    +aGp0/2dqcf9nanT/XWBq/2Rncf9qbXb/bG93/21vd/9ucXj/bG51/2psc/9zdXz/Z2p0/2xvef9sb3n/
    +bnB3/25wd/9qbXf/am13/2psc/9sb3n/bG51/2ptd/9sbnX/am13/2xudf93eX//eHl9/3Byef91eIH/
    +c3Z//3d5f/9ucHf/c3Z//25wd/9ucHf/c3Z//25wd/93eX//bnB3/3Z4fP9nanH/bnB3/29xdf9ucHf/
    +Z2px/2psc/91d33/c3V8/2psc/91d33/amxz/2psc/9sb3n/ZGdx/2dqdP9maXP/Zmlz/25wd/9qbXf/
    +Z2p0/2ptd/91d33/bnF7/25xe/9tb3P/dXd9/3Bzff9ucXv/cHJ5/25xe/9ucHf/bnB3/3Byef9zdn//
    +c3Z//3V4gf9wcnn/eXuB/3l8hv91eIH/e32D/3t+h/97fof/eXuB/3l7gf93eoP/bnF7/2ptd/9xc3r/
    +cnR7/2xvd/9tb3f/bnB3/3N1fP9sb3n/cHN9/2dqdP9wc3v/cXN8/3V3ff92eHz/bnB6/3Bye/9tcHj/
    +bnB3/3V3ff94eX3/b3F1/21vdv9tcHr/bnF5/2tueP9qbXf/Z2p0/3N1fP9sb3n/amxz/2dqdP9sb3n/
    +bG95/2psc/9nanT/Z2px/2xvef9maG7/Zmly/2Rncf9ucXr/bG51/3Bzff9ucXv/Z2p0/25xe/9sbnX/
    +Z2p0/2hrdf9oa3X/ZWhv/2Rmbv9maXP/a254/2dqdP9iZW7/Z2px/29xeP9maXP/aWx0/2ptd/9rbnj/
    +cHN9/2ptd/9qbXf/d3qD/3N1fP9sbnX/bnB3/3Byef9sb3n/bnF7/3Byef9ucHf/bG95/3V3ff9sb3n/
    +bnB3/3Z4fP9vcXX/dXd9/2BjbP9sb3n/cHN9/2xvef9tb3P/b3F4/21wev9xdH3/bnF7/2xvef93eX//
    +bG95/2xud/90dnz/bG94/3Bzff9rbnb/bG95/3V3fP9ucHf/bnB3/2psc/92eHz/dXd9/25xe/9ucXv/
    +bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/d3qD/2xvef9wc33/cHN9/25wd/9ucXv/
    +bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/
    +bG51/29xev9rbnj/cnV+/3Bzff9ucXv/bG95/3J1fv91dnv/cHN6/2hrdf9oa3X/Z2p0/3V3ff9ucHf/
    +fX6B/3d5f/9wcnn/bnF7/3Z4fP9ucHf/dnh8/2xvef9ucXv/Z2p0/2ptd/9kZ3H/bnF7/3Byef9pa3T/
    +bG95/2dqc/9sbnX/am13/2dqcf9qbHP/bnB3/21weP9tb3f/cnR7/25wd/9nanT/cHN9/2Zpc/9qbHP/
    +amxz/2ptd/9ucXv/Z2p0/2xvef9qbXf/bG95/2xudf9nanT/Z2p0/2xudf9maXP/bnB3/2xvef9maG7/
    +am13/2xvef9ucXv/Zmlz/2dqdP9maG7/Zmhu/2ptd/9nanH/c3V8/2psc/9zdXz/ZGdx/2ptd/9qbHP/
    +amxz/2Jlbv9maXP/bnF7/3N1fP9nanH/cHN9/2psc/9sbnX/bG95/2psc/9sb3n/am13/2xvef92eHz/
    +cHJ5/3Byef9ucHf/dXd9/25wd/9wcnn/bG51/3N1fP9wcnn/cHJ5/29xdf9vcXX/bG51/25wd/9sb3n/
    +bnF7/2xvef9ucHf/bG51/25wd/9zdXz/bG51/3Bzff93eX//d3l//3V4gf9wc33/c3Z//2dqdP9nanT/
    +b3J7/21wef9sb3f/bW91/25wd/9zdXz/bG95/3N1fP9qbHP/cHJ5/3Bzff91d37/eHl+/3V3ff9ydHn/
    +bnF6/3Byef91eIH/eXuB/3N1fP9xc3r/cnV+/25wef9ucHf/bG51/2xudf9wc33/dXd9/25wd/9sbnX/
    +c3V8/3V3ff9tb3P/bnB3/21vc/9ucXv/am13/21vdf9qbHH/cXN6/21vc/92eHz/c3V8/29xdf9ucXv/
    +am13/2xvef9xdHv/cHN8/21vdv9tb3j/b3J8/3R3gP9qbXf/am13/25wd/91d3v/cXN3/3Byd/9tb3j/
    +bG95/3h5ff9ucHf/bnB3/3l7gf9zdXz/amxz/2ptd/9wc33/Z2p0/2ptd/9qbXf/Zmlz/2xudf9wc33/
    +bG51/2psc/9wc33/amxz/25xe/9sb3n/dXiB/3t9g/91eIH/dXd9/3h6gP91eH//dnh+/25xev9qbXf/
    +cHN9/2hrc/9sb3f/dnh9/21wev90doD/cnV9/3V4gf96fIL/d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/
    +bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/
    +bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/
    +dHZ9/21vdv9xc3r/cXN7/3Byef9wc33/cHN9/29ye/9ydX7/cnR7/21vdv9sbnX/cHJ5/2dqcf94eX3/
    +bG95/3t9g/91d33/cHJ5/25wd/92eH7/bnB3/3h5ff9wc33/cnV+/21wd/9rbnj/bG95/29yfP91d33/
    +bnB4/21wef9rbXf/bG51/2ptd/9kZ3H/Z2p0/2xveP9tcHj/a253/3Fze/9sbnX/Z2px/3R2fP9qbHP/
    +bG51/25wd/9wc33/cHN9/2xudf9wc33/bG51/2ptd/9sbnX/Z2px/2xudf9qbXf/bnB3/3Z4fP9wc33/
    +bG95/3V3ff9zdn//c3Z//25wd/9ucXv/bnB3/25wd/9zdn//bG95/3V4gf9ucHf/dXd9/2ptd/9zdn//
    +bnB3/3Byef9nanT/bnB3/3V4gf93eoP/bG95/3V3ff9tb3P/bG51/3Byef9tb3P/bnF7/25xe/9ucHf/
    +dnh8/3N1fP9qbXf/amxz/3Bzff9ucXv/c3V8/2xudf9zdXz/bG95/2xudf9qbHP/am13/2ptd/9qbXf/
    +am13/25wd/9ucHf/c3V8/2xvef9sbnX/dXd9/25xe/91eIH/eXyG/3l8hv93eoP/c3Z//3V4gf9ucXv/
    +bnF7/3V4gf9wcnr/cHJ3/3BzeP9vcXX/dXd9/25wd/9wcnn/bG51/25weP91d3//dnmA/3h7hf9zdoD/
    +dnh+/29yfP9ucXv/c3Z//3d5f/9wcnn/bnB0/3Fze/9ucHj/bnB4/29xdf9vcXX/c3V8/3N1fP9ucHf/
    +amxz/3N2f/91d33/bG51/3Byef9sb3n/bG95/2xudf9sbnX/ZGdv/3Fzff9qbHP/dXd9/25xe/9nanT/
    +bG95/2ptd/9qbXf/bXB4/21wef9sb3j/am1z/25wd/9wc33/ZGdx/2dqcf9ucHf/dnd8/29xef9ucHn/
    +bG94/25wd/94eX3/bnB3/3Bzff97fof/dXd9/2psc/9sbnX/dXd9/2xudf9sbnX/bnB3/2xudf9sbnX/
    +dnh8/25wd/9ucHf/dXd9/25wd/9zdXz/YGNs/2xudf9sb3n/amxz/2psc/9rbnj/bG51/3Fzef9wcnn/
    +bG95/3l7gf9ucHf/bnB5/3d5gf9vcXj/c3Z//2xvdP9pbHX/am13/2dqdP9maG7/Zmlz/3Byef9zdXz/
    +bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/bG51/21vc/91d33/am13/2xvef9zdXz/
    +bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/
    +bnB3/3V3ff9tb3b/b3F5/25weP9vcXj/bnB3/3ByeP9ucHb/cHJ5/29yfP9vcnz/bG54/29ye/9qbXf/
    +dXiB/3N2f/9/gYf/eXyG/3h6gP93eX//fH6E/3J0e/95fIX/c3Z//3R3f/9wcnj/bXB5/25wd/9zdn//
    +dHeB/3F0fP9xdH7/bnB3/3Byef9zdXz/bG95/2xvef90dn//cnV//29yfP91d33/cHJ5/21vdv91d33/
    +bnB3/3Byef9vcXv/dnh9/3V3ff9ucXr/dnl//3N1fP9ydX//bG95/2xveP9vcXj/cXR9/29ye/94eoH/
    +d3qD/3N2f/96fIL/enyC/3t9g/91d3z/dnh//3Z4fv9zdn//enyC/3V3e/9+gIb/enyC/31+gv9zdXz/
    +eXuB/3h5ff91d33/cHJ5/3d4ff96fIP/gIKJ/3V4gf94eoH/d3mC/3V3ff93eYL/cHJ5/3Z5gv91eID/
    +cHN9/3p8gv91eID/cHN9/3N1fP93eoP/c3Z+/3Bzff9sb3n/c3Z//3Bzff9vcXX/bG51/25wd/9qbXf/
    +Z2pz/2xudf9wcnn/bnB3/3N1fP9sbnX/bG51/3V3ff9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9wc33/
    +bG95/2xudf9wcnn/b3F2/2xudf9rbnj/bG51/25xe/9qbXf/bG51/2Jlbv9pa3X/b3J6/3J1ev91d37/
    +cnV+/3Byef9sb3n/bG92/3Bzff91d33/Z2p0/2lsdf9tcHr/bG93/21wef9ucHf/b3F1/3V3ff91d33/
    +cHN9/2xvef91eIH/dXd9/25wd/9wcnn/cHJ5/3Byef9ucHf/cHJ5/2lrc/92eYD/bG95/3l7gf91d33/
    +bnB3/25xe/9sb3n/bG95/3J0e/9xc3j/bnF5/2lsdP9sbnX/bnF7/2Jlbv9maXP/bG51/3J0e/9sbnf/
    +a252/25wd/9ucHf/dnh8/2xudf9ucHf/dXiB/3Bzff9nanT/bnB3/3Z4fP9sbnX/bG51/25wd/9qbXf/
    +am13/3Bzff9qbXf/am13/3V4gf9tb3P/cHJ5/2dqdP9sb3n/c3V8/3Byef9ucHf/dHeA/3Bzff91d3//
    +dHeB/2xvef95fIb/cHJ5/25xev93eYD/bW92/3R3f/9vcXj/bW92/3N1fP9wcnn/bnB3/2xvef91d33/
    +dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/
    +cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/
    +cHN9/2dqdP9sb3n/aGt1/25weP9tcHf/cHN7/21vdv9ydXz/cHN7/3ByeP9ydHz/am12/2dqdP9rbXT/
    +ZGdx/2xvef9qbXf/c3Z//3N1fP9xdHz/b3F4/3Z4fv9ucHf/dnh9/29xeP9wcnv/bG51/2lsdP9sbnT/
    +bG93/3Byev9tb3b/cnR7/2xudf9ucHf/bG51/2dqcf9maG//bXB3/25wd/9tb3X/cnR6/29xev9rbnb/
    +cnR5/3J0ev9wcnv/cHN8/3N1fP92eID/cHN9/3J1fP9ucHj/cXR9/29xeP9vcXj/bnB4/29yef9ucHj/
    +d3h9/3BzfP9xc3r/dXd+/3J1fv91eID/bnF6/3N2gP9ucHf/b3F5/3J0e/9sbnb/dHZ7/2xvef9zdXz/
    +am12/3F0ff9sb3j/bG94/2Zobf9rbXT/cXN6/3l7gf9vcXb/cnV+/3Bze/9tcHn/cXN9/25wd/9wcnz/
    +cHJ5/2xvdv91d37/cHJ8/21vc/9ucHf/dHZ8/3J0e/9xdH3/bnB3/3J1fv9ydX3/bnB3/25wd/9ucHj/
    +bW93/2ttdP9sbnX/bG95/2xudf9pbHb/Zmlz/25xe/95e4H/c3V8/3V4gf97fof/e36H/3d5f/9wc33/
    +c3Z//25wd/9qbXf/dXd9/29xeP9sb3f/b3F3/25wd/91d33/bnF7/25xe/9sb3n/b3J7/3J1f/90d37/
    +dnh//3N2f/9ydH3/b3J7/25wd/9wc33/dXiB/25wd/9tcHr/dXd+/25xef9sb3n/bnB3/25wd/93eX//
    +dnh8/2xvef9qbXf/dXd9/3N1fP9ucHf/c3Z//3Bzff9wc33/cnV+/3N2f/9pbHT/dniA/25wd/91d33/
    +bnF7/21vc/9tb3P/bG51/2tueP9xdH7/cXN8/3Bze/9rbnj/a254/3N1fP9nanH/bG51/21vc/9zdnz/
    +b3J6/29xdv9ucHT/bnB3/3d5f/9vcXX/cHJ5/3V4gf9wc33/bG95/2xvef91d33/bG95/3Byef9wcnn/
    +bnB3/29xdf91d33/b3F1/25wd/97fYP/bnB3/3Byef9ucXv/c3Z//3d6g/9zdn//cHN9/3N2f/9wcnv/
    +cXR8/25xe/9kZ3H/dXiB/2psc/9laHL/c3V8/2hrdP90dn3/bnF5/2xvef9vcnz/bnF7/25wd/9sbnX/
    +bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/
    +dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/
    +cHJ5/3V3ff9sb3n/bW95/2hrdf9ucHf/bG52/21vd/9qbHP/bnB2/3J0e/9oanL/bG53/2hrcv9iZW7/
    +a210/2BjbP9nanT/am13/3V3ff9zdXz/cHN9/21vd/9wc33/a254/3h6gP9rbnf/bW95/2hrdf9iZW//
    +aWxz/2lsdP9tb3X/aWx2/25xe/9qbXf/bG51/2Zpc/9iZW7/YmVu/2ptd/9ucHf/bW94/29xeP9tcHr/
    +bnF7/25xef91d33/cnR7/3F0e/9wc3z/dHeB/3R3gP9ydHr/bnB2/3R2fP91d33/cXN7/3Fze/9zdn7/
    +b3J6/3J1fP9ydX3/dHZ9/3V3ff9xdH7/cnV//21weP9ydHz/bW92/29xeP9sb3f/bG51/25xef9sb3f/
    +cHN7/2ptdv9ucHn/a252/29xeP9kZ3H/aGt1/25xe/91eH//bG51/21wev9tb3b/bG53/29yfP9pbHb/
    +aWx2/2xud/9rbXX/cXR7/21wev9oa3P/a212/29yfP9vcXr/c3aA/25xe/9xdH7/bnB5/2xvdv9wcnr/
    +bnB4/2xvef9ucHj/bnB1/3Byef9vcXX/bnB4/2lsdf9wcnn/c3V8/2ptd/9sb3n/dXd9/3V3ff92eHz/
    +dXd9/25xe/9ucHf/bG95/3V4gf9zdXz/bW94/25xe/9ucHX/c3V8/25wd/9sb3n/Zmlz/21wdP9zdn3/
    +c3V7/3Z3fP9zdXz/cXN5/25wdv9sb3n/cHJ5/3V3ff9ucHf/b3F4/3R2e/9tb3b/a253/2hqdP9sbnX/
    +bnF7/2ptd/9nanH/ZGdx/25xe/9maXP/YmVu/2Rncf9nanH/Zmlz/2ptd/9oanT/Y2Zu/29ye/9nanT/
    +cHJ5/2dqdP9kZ3H/Zmhu/2Zobv9jZm//bG95/25xe/9sb3n/amxz/2ttdP9sb3n/ZGdx/2Zpc/9sbnX/
    +dHZ8/3Fzd/9tb3f/b3F2/29xdf95e4H/b3F1/3N1fP94eX3/c3V8/25wd/9ucHf/dXd9/2xudf9ucXv/
    +bnF7/25wd/9sb3n/c3V8/2xvef9wcnn/foCG/2xvef9wc3z/Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/
    +bnB3/3J0ev9ydHv/Z2px/3l7gf9ucHf/Z2p0/3l7gf9wcnn/eXuB/3J0ef9ydHv/cHJ5/25wd/9vcXX/
    +bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/
    +dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/dXiB/3d6g/9zdn//dXiB/25xe/9wc33/
    +dXiB/3V4gf9zdn//bG95/3N1fP9ucHj/cnV9/25xev9vcnv/a253/3Byef93eX//aGpu/3BzfP9tb3b/
    +aGt1/25wd/9nanT/cHN9/3N2f/91eIH/d3l//3R2fP9vcXj/d3mC/21wev93eoP/cnV+/25xe/9ydHv/
    +aGt0/3J1fv9wc33/dXiB/3V3ff97fYP/dnh8/3V4gf91d33/cHN9/2xvef9zdn//c3Z//3R3gf90dn//
    +eHqA/3p8gP92eH3/foCH/3x9gf90d4D/c3Z//3Z4gP93eoT/dHZ8/25wd/93eX//eHqA/3V4gP9zdn7/
    +dXeA/25wev9ucXr/cXR9/3R2ff9vcXr/bnF6/3J1ff9tb3b/cXN6/25wdv9ydHr/bnB3/21vdv9vcXf/
    +aWx1/3R2fP9vcnz/dHd+/3J0ff91eID/bXB6/3Fzev90d4D/eHuE/29yfP9vcnv/cHN9/3R3fv93eoL/
    +d3qC/3V4gP94eoD/d3l+/3l7gf93eX//cnV+/3N2gP93eYD/d3l+/3+Bh/93eYH/eHqA/3h6gv94e4L/
    +dXh//3l8g/91eH//dnh//3Fze/9ydHr/b3J6/3F0fv9wcnr/d3qD/3t9g/91eIH/d3qD/3t+h/97fof/
    +d3qD/3d6g/9wc33/bnF7/2xvef91d33/bG95/21wef9tcHr/bG51/3J1fP9ucHf/c3V8/25wd/9tb3f/
    +bXB6/29yev9xdH3/a253/21weP9tb3b/bG95/3N1fP93eX//bnB3/29xeP9ydHv/bW92/2tud/9qbXf/
    +bG95/3d5f/9wc33/am13/2Zpc/91d33/cHN9/2ptd/9ucXv/bG95/3Byef9ydHz/c3V7/2hqcv92eH//
    +am13/3V3ff9zdXz/bnB3/25wd/9ucXv/bW92/3Fze/9ydX3/cnR8/2xudv9vcXj/cHJ5/2dqcf9qbHP/
    +bG51/3N2f/90dnz/dHeA/3R2ff9ucXv/d3l//25wd/9zdXz/d3l//2xudf9qbXf/Z2p0/25xe/9nanT/
    +am13/2dqdP9qbHP/Z2p0/25xe/9qbXf/am13/3l7gf9tb3P/cHJ5/2BjbP9sbnX/cHJ5/2xudf9ucHf/
    +cHJ5/21wev9ydHv/dHeA/2Zpc/93eX//bnB3/2ptd/92eHz/bnB3/3p7gP9ydHr/cnV//25xe/9vcXX/
    +b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/
    +bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/
    +amxz/2ptd/9sb3n/bnF7/25wd/90dn3/bG92/25xe/9sb3n/aGt0/2Rncf9qbHT/c3V8/2RmbP9wc33/
    +cHN6/21wev9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/94eX3/bG95/3N2f/9wcnn/eXyG/3N2f/9wcnn/
    +bnB3/2ptd/9ucXv/c3Z//3Bzff9zdXz/d3qD/3Byef9ucXv/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/
    +bnF7/3N2f/96fIL/c3Z//32Aif95e4H/c3Z+/3Bzff9zdn//fYCJ/3d5f/92eH7/en2G/3p9hv92eYL/
    +dXiB/3V4gf90d4H/c3Z//3V4gf96fIL/b3F4/3Bzff9ydX7/cHJ5/3Bzff9wcnn/dHeA/25weP9ucHf/
    +bW92/2hrcf9xc3n/cHJ5/3Z4fP9ucXr/cHN8/2ptdv9qbXf/c3V8/3d5f/9qbXf/aGt1/2xudf9sb3n/
    +bG95/21wev9tb3b/a254/2hqcf9maXP/a210/2Vocf9nanT/a210/2hrcv9ucXv/a210/2Nmb/9naXP/
    +aGt0/2dqdP9maXL/Z2lw/2hrdf9kZ3D/ZGdw/2Zpc/9iZW//ZWhw/25xe/9wc33/bnB3/25wd/91d33/
    +d3l//3N2f/91d33/bnF7/2xvef9sb3n/dXd9/25wd/9ucHj/cHJ7/2xveP90dnz/bnF7/2dqdP9zdXz/
    +bG51/29xeP9ydH3/dHeA/3N1fv9maXP/a211/2xudv9qbXf/am13/3Bzff9vcnv/bXB6/2lsdP9sbnX/
    +bW92/2ptd/91d33/bnF7/2dqdP9nanT/cHN9/3N1fP9qbHP/bG95/2ptd/9qbXf/bnF6/25xe/9laHL/
    +bnF6/2Nmb/9qbXf/bG51/2Rncf9maXP/bG51/2xvef9qbXb/bG51/2ptdP9oa3P/c3V8/3Bzff91d33/
    +ZGdx/2psc/9tb3X/cXN5/29xef9sb3n/bG51/3d5f/9sbnX/cHN9/3d5f/9qbXf/Z2p0/2Zpc/9zdXz/
    +bW9z/29xdf9ucHf/amxz/21vc/9zdXz/cHJ5/3N1fP9+gIb/bnB3/3Bzff9kZ3H/bnB3/3N2f/9sb3n/
    +bnB3/29xeP9wcnn/cXN7/2xudf92eHz/cHJ5/2xudf9ucHf/eHl9/21vc/91d37/b3F4/29xeP9ucHf/
    +bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/c3Z//3+Bh/9zdn//d3qD/31+gf9zdn//
    +c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX//c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/
    +am13/25wd/9wcnn/bG51/25xe/9qbXf/bXB6/2ttdP9oa3P/aGty/2ttdf9nanT/c3V8/2dqdP9rbnj/
    +cXN7/2ttdP9kZ2//bW91/2dqdP9sb3n/cHJ5/3d5f/93eX//bG51/2xudf9wcnn/dXd9/2xudf9sbnX/
    +c3V8/25wd/9wcnn/bnF7/3Bzff9ucXv/bnB3/2ptd/9ucHf/bnB3/3Bzff9ucXv/eXyG/3V3ff93eX//
    +c3Z//3N2f/9wcnn/dXiB/3l7gf91eIH/cHJ5/3t9g/97fYP/foCG/3t9g/9ucXv/c3Z//3l7gf9wcnn/
    +eXuB/3Bzff9wc33/bG95/2Zpc/91d33/cHN9/2psc/9ucHf/bG95/3N1fP9vcXX/cHJ5/25wd/9zdXz/
    +am13/3V3ff9wcnn/bG95/2ptd/9kZ3H/bG51/25wd/9tb3P/cHJ5/25xe/9zdn//cHJ5/25xe/9zdXz/
    +c3V8/3d6g/9wc33/d3qD/3t9g/93eoP/d3qD/3t+h/97fYP/eHuF/31/hf96fIP/c3Z//3J1f/95e4H/
    +am13/3N1fP9wcnn/bG95/3R2fP9ydHv/dXd7/2dqcf9ucHX/bnB3/21vd/9ucXv/dnh8/2xudf9ucHf/
    +dXd9/3d5f/9zdXz/bnF7/2ptd/9qbXf/bG51/3N1fP9qbXf/bG95/2xvef9qbXf/dHZ8/2xvef9maXP/
    +dXd9/2ptd/9sb3j/cnR7/3F0ff9xdHz/Z2lx/21vdv9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9sbnP/
    +am13/21vdv9wc33/dXd9/25xe/9qbXf/b3F1/3Z4fP9zdn//b3F1/3Byef9wc33/bnF7/3Bzff90dnz/
    +bG93/3R3gP9nanT/bnF7/25xe/9sb3n/bG95/3V4gf92eYL/c3V9/3N2fv9vcnr/b3F4/3d5f/91d33/
    +d3qD/2xvef9ucHf/b3F4/3J0ev9ucXv/cHN8/2xvef93eoP/bW9z/3Byef92eHz/am13/2dqdP9qbXf/
    +cHN9/2xudf9ucHf/bG95/2xudf9ucHf/dXd9/3Byef91d33/fn+D/25wd/9ydHz/Z2p0/25wd/9wc33/
    +bnB3/2xvef9sb3j/cXN5/21wev9nanT/bnF7/2psc/9nanT/bG51/3h5ff9vcXX/eXuB/3Byef9vcXn/
    +bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/
    +bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/c3V8/25xe/9zdXz/bG51/2xvef9sbnX/
    +cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/bW92/2ptd/9sbnX/Z2p0/3N1fP9nanH/
    +b3F5/3F0ff9sb3f/Zmhv/29xeP9sbnX/cHJ5/3V3ff97fYP/eHl9/21vc/9sb3n/c3Z//3N2f/9sb3n/
    +bnB3/25xe/9ucHf/bnB3/3N1fP91d33/bnF7/25wd/9ucHf/bG95/25wd/9ucXv/bnB3/3l7gf9zdXz/
    +eHl9/3N1fP9wc33/bG95/3N1fP9wcnn/cHJ5/2xudf9zdXz/dXd9/3V3ff9zdXz/Z2px/29xdf91d33/
    +b3F1/3V3ff9ucHf/c3V8/21vc/9maG7/cHN9/2xudf9nanT/Z2p0/2xudf9sb3n/am13/2dqdP9nanH/
    +am13/2Zobv9ucHf/Zmlz/2Zobv9gY2z/XWBq/2dqcf9nanT/YmVu/2Zpc/9kZ3H/ZGdx/2Jlbv9iZW7/
    +ZGdx/2Jlbv9maXP/Z2px/2dqdP9wcnn/Z2p0/2Rncf9qbXf/Z2p0/2Zpc/9maXP/Z2p0/2Zobv9qbHP/
    +am13/2Jlbv9maG7/ZGdx/2dqcf9sb3n/bG95/2xvef9nanT/bG95/2psc/9sbnX/bnF7/3N1fP9qbHP/
    +am13/25xe/91d33/bG95/2ptd/9nanH/amxz/2Rncf9qbXf/amxz/2tueP9rbnj/am11/3V3e/9wcnn/
    +amxz/3d5f/9sb3n/bnF6/3F0fv9xdH3/dHZ8/2dqcv9tb3b/cHJ5/2xudf9zdXz/dXd9/21wev9tcHr/
    +aWx2/2xvef9tb3n/dXiB/3d6g/9wcnn/bnB3/21vc/91d33/dXd9/2psc/9sb3n/bG95/3Byef9qbXf/
    +bnF6/2xudf9ydH3/am13/25wd/9ucHf/bG95/3Byef9zdn//dHeA/3J0fP9tcHj/bG53/3J0e/94eoH/
    +c3Z//3t+h/9sb3n/bG95/25xe/90dn3/bnB4/25wd/9tb3P/dXiB/2dqdP9nanT/cHN9/2xudf9nanT/
    +ZGdx/2xvef9qbHP/ZGdx/2dqcf9kZ3H/Z2p0/2xvef9sb3n/bG95/3t9g/9qbXf/c3V8/2Zpc/9sb3n/
    +cHN9/25wd/9wc33/bnB3/3ByeP9zdXr/bG95/3N2f/9wcnn/bG95/2xvef91d37/b3F2/3l7f/9xc3n/
    +bnB3/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/
    +bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/
    +b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/94eoD/cXN7/29xef9vcnf/bG95/2xveP9ydX7/
    +Z2p0/25xev9xdH3/a254/2RncP9rbnj/Z2p0/2xvef9wc33/c3Z//3N1fP9sb3n/cHJ5/3Fzff9ydX7/
    +b3J8/3Byef9ydX7/cHJ5/3Bzff90d4D/cHN9/3V3ff9vcXX/bG51/2xudf9tb3P/bnB3/2xudf95e4H/
    +cHN9/3R2fP91d3v/c3V8/2ptd/9sb3n/bG51/2xudf9qbXf/cnV8/3N1fP9wcnn/am13/2Fkbf9qbHP/
    +c3V8/2xudf9ydXz/am13/25xe/9sbnX/ZWhx/3N1fP9sbnX/bG51/2xudf9sbnX/bG95/2ptd/9ucHf/
    +b3F1/3N1fP9tb3P/dnh8/25xe/9sbnX/amxz/2Jlbv9qbHP/bG95/2Zpc/9qbXf/am13/2xudf9qbXf/
    +am13/2xudf9qbXf/cHN9/2xvef9ucXv/d3l//3V3ff92eHz/dnh8/3Byef9sb3n/bnF7/3Bzff9sbnX/
    +bW9z/3V3ff9qbHP/bnB3/2xudf9tb3P/c3V8/3Bzff9sb3n/Z2p0/2xvef9qbHP/bW9z/3N1fP92eHz/
    +cHJ5/25wd/91d33/c3V8/25xe/9wcnn/am13/25xe/9qbXf/cHN9/2xvef9tcHr/bXB4/21veP9zdoD/
    +bnF7/2xudf93eX//bG51/2tueP9wc3v/cnR7/3R2ev9naXD/bnB2/3N1fP9ucHf/dXd9/3V3ff9vcXj/
    +b3F5/2xuc/9ucHf/cHJ2/3N2f/93eX//cHN9/2xvef9sb3n/dXiB/3h5ff9ucHf/c3V8/3N1fP9wcnn/
    +bG95/3J1ff9sb3f/cnN5/2Vocv9qbHP/Z2p0/2BjbP9kZ3H/Zmlz/2dqc/9rbnT/aWtz/2Zob/9pa3L/
    +cHN9/2xvef91eIH/Z2lz/2xudf9sb3f/cXR7/2ptd/9sbnX/am13/3V4gf9kZ3H/am13/3Byef9maG7/
    +ZGdx/11gav9nanT/Zmhu/2Rncf9maG7/Zmhu/2Rncf9qbXf/ZGdx/2dqdP91eIH/YmVu/2dpc/9nanH/
    +cHN9/3V4gf9wcnn/bnF7/25xev9wcnn/c3V8/2ptd/9ucXv/am13/2dqdP9sbnP/dnd8/2tueP90d37/
    +cXN5/25xev9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/
    +cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/
    +c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/c3V8/2dqcP9sb3n/bW92/2xveP9sb3n/
    +dXd+/2ptd/9wc33/cnV+/2xvef9maHL/bXB6/2dqdP9ucXv/bnF7/3V3ff94eX3/cHJ5/21vdv90dnz/
    +bnF7/3F0fv9ydX7/cnV+/29xeP9vcnv/c3Z9/3N2gP91eIH/cHN9/3N1fP9zdn//d3qD/3d5f/91d33/
    +gIKJ/3p8gv92eYP/dXiB/3d6g/9zdX3/eHqB/3h7hP91d37/dHZ9/3p7gP97fYH/enyC/3R3f/9ucXr/
    +cnV+/3p8gv9ydHv/cnV9/3Byef90d4D/cnV9/29ye/94eoD/bnB3/29xeP9ucHf/bW92/21wev9rbnj/
    +bnB6/2tueP9xdHv/b3F4/3d4ff9vcXj/bnB3/2xuc/9iZW//bW92/2xvef9rbnj/dHeA/3J1fv9xdH7/
    +bW93/2xveP9ucHf/b3F4/3J1fv9vcnz/c3Z//3h7hf96fIL/eXyG/31+gv96fIL/enyC/3p8gv94e4X/
    +d3qC/3V3ff97fYP/d3l//3Z4f/92eHz/d3l//31+gv99foL/enyD/3d5f/96fIP/dXd9/3N2f/91d33/
    +eHl9/3Byef9wcnn/dXd9/3N1fP9wcnn/bnB3/2psc/9ucXv/bG51/2xvef9sb3n/aGt1/2lsdP9qbXX/
    +cnV+/25wd/9nanT/d3l//2xveP9rbnj/cnV9/2xvef9ucHf/X2Jr/2ttc/9tcHr/bnB3/3N2f/92eH//
    +bnF7/21wev9qbHX/bXB3/2ttdP9ucXv/d3l//2ptd/9maXP/bG51/3V4gf93eX//bG51/3N1fP9wcnn/
    +c3V8/2xvef9zdXz/am13/3J1ff9nanT/bG51/25xe/9kZmz/bG51/2xudf9ucHf/b3F1/21wd/9qbXX/
    +a253/3V3ff9ucXv/d3l//25wdP9tcHf/c3V9/3R3f/9wc33/b3F1/2xudf97fYP/bG51/25wd/92eHz/
    +b3F1/25wd/9qbHP/eHl9/3Byef9tb3P/b3F1/29xdf9sbnX/dXd9/3N1fP92eHz/f4GH/2dqdP9sb3n/
    +am13/3Bzff95e4H/dXd9/3V4gf9vcnz/c3V+/3V3ff9tcHr/bnF7/21wef9sb3j/cHJ5/3d6gP9xc3v/
    +dHd+/3R3gP9zdn//dnmC/3Bzff9zdn//c3V8/3N2f/91eIH/bnB3/3d5f/9sb3n/bnB3/25wd/93eX//
    +bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/
    +cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/bnF7/3V4gP9ucHf/cHN8/29xeP9ucXn/
    +a254/3V3ff9pbHb/cXR8/29yfP9wc3z/bG95/2xvef9qbXf/cHN9/3Byef91eIH/d3l//3Fze/9ucHj/
    +dHd+/2ptd/92eYD/cHJ6/3V3f/9tcHr/cXR8/3V3fv92eYD/dXiB/29xeP9tcHn/bnF7/3Bzff9wc33/
    +cHN9/3l8hf9ydX7/dHV7/3J0fP9ydX//cXN6/3Fzev9ydX3/b3J6/3Fzef9ydHz/dXiB/3Z4f/9vcnr/
    +bW94/25xef92eHz/b3F2/3Bze/9wc3v/c3Z//25xe/9vcXr/d3l//21vdv9xc3r/b3J6/21weP9vcXv/
    +bW94/25wef9rbnj/b3J8/21wef90dn3/cXN7/3Bze/9tb3X/ZWdu/2Zpc/9pa3P/Zmly/2tueP9rbnb/
    +bG92/2Vocf9sbnX/aWxz/2dpb/9oanT/a210/21veP90dn3/b3J5/3R2fP9zdXr/bnF4/29ye/9ucXv/
    +b3J8/3BzfP9xc3r/cXR9/3Bye/9ydHv/cXN9/3J1ff93eX//e32D/3R3f/9xdH3/c3Z//3F0ff9vcnz/
    +dXd9/3d5f/9ucHf/cHJ5/3Byef9wcnn/cHJ5/3V3ff9sbnX/cHJ5/21vc/9ucXv/bnF7/2xvef9sb3j/
    +bXB4/3V3fv9sb3n/Z2p0/3d5f/9sbnX/a210/29xd/9tcHr/cnR6/2Rmbv9sbnT/am13/2dqdP9ucXv/
    +c3V8/2xudP9tcHr/a252/2xvef9ucXv/cHN9/3d5f/9ucXv/bG95/25xe/97fof/d3qD/25wd/91d33/
    +cHJ5/3Byef9ucHf/cnR7/21vdv9ydXz/aGty/2xudf9ucXv/ZGZs/25wd/9ucHf/bW93/25weP9ucHf/
    +bnB2/2xveP9zdXz/c3V8/3V4gf9sbnX/bG51/21wev9zdXz/am13/2xudf9qbXf/dXiB/2psc/9sbnX/
    +dXd9/2xudf9tb3P/amxz/3Z4fP9vcXX/bnB3/2xvef9ucHf/am13/3d5f/91d33/c3V8/4GDiv9qbXf/
    +cHN9/2dqcf9vcXX/c3V8/2ptd/9ucHf/bW92/3Bye/9ydX7/cnR7/3V4gf91d4D/cHJ7/3d5gP96fYf/
    +eHqB/3R2fv9ydX3/bXB5/2xvef9sbnX/bG51/2ptd/9ucHf/c3V8/2xvef91d33/bnB3/3Byef9sb3n/
    +dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/
    +d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/c3V8/25wd/91d33/bG95/3F0ff9ydH3/
    +dHd//3Bzff95e4H/c3Z+/3d6gP9wc3z/b3F5/2xudf9sbnX/Zmlz/2xvef9sb3n/dXd9/3N1fP9rbnj/
    +bG52/3Z4f/9qbXb/dnh9/3Byd/9zdn3/bW93/25weP9ucXv/dHd//3V3f/90dnz/d3l//3d5f/9+gIb/
    +d3l//3R3gP96fYb/dXd+/25xe/9wc33/c3V9/29yfP9xc3r/dHZ+/29yef9zdX3/c3V9/3N2f/9xdH7/
    +bG95/3Bzev9ucHX/dHZ+/21vdv9qbXf/bG92/3Bze/9sb3f/bG94/3R2fP9tb3P/cnR5/3F0e/9ucHf/
    +bG95/2xvef9ucHn/bnB3/3Bye/9vcXr/c3V9/3V3f/9xdHz/b3F4/2ttc/9rbXT/bnF5/2ptdf9sbnX/
    +bG50/3F0fP9qbHP/bW92/2xvef9tb3b/cHJ3/2lsdv9wc3v/dXh//2tudv90dnv/cXN6/25xef9wcnn/
    +dHZ+/25xe/9tcHr/bnB5/3F0ff9vcnv/bW94/3Byev9sb3j/a252/3J1fP9vcXn/a210/21wev9vcnz/
    +bnB3/3N2f/93eoP/cHN9/3N2f/9zdn//c3Z//3V4gf91eIH/cHJ5/3d6g/9wc33/d3qD/3l8hv93eoP/
    +dnmB/3Bzff90d4D/dXiB/3N2f/97fYP/d3l//21wev94e4P/dXd//3V4gv9vcnz/a251/3N1fP9vcXX/
    +Z2px/2psc/97fYP/cXR7/2xudf9vcXj/bnF7/3N1fP93eX//bnF7/2dqdP9ucXv/d3qD/3d6g/9ucXv/
    +cHN9/3V3ff9wc33/bnF7/3Z4fv9kZ3H/dniA/2xvef9qbHP/dXd9/2Zpc/9nanH/ZGdx/2Rncf9pbHL/
    +a213/21wev9laHL/ZGdx/2Rncf9qbXf/Z2lv/2tud/9qbXb/c3V8/25wdf9sb3n/bnF7/3V4gf9qbXf/
    +bnF7/3l7gf9sb3n/bG95/2dqdP91d33/bG95/2xvef9ucXv/bnF7/2dqdP93eX//c3Z//3N2f/+Bg4r/
    +bG51/3Byef9maXP/bnB3/3Byef9sbnX/bnB3/25weP9ucHf/amxz/25wd/9vcXX/d3h9/3N1ev9tcHj/
    +dXd7/3V3ff9wc3z/c3V9/3Byev9sb3n/bG51/2ptd/9maXP/am13/2xvef9ucXv/cHJ5/2dqcf9nanT/
    +Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/
    +Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/Zmhu/2Zpc/9kZ3H/cHJ5/2dqdP9qbXX/
    +bnB4/29yfP9sbnX/c3V8/25xe/9xdHv/bXB5/3J1ff9pbHX/bW90/2ptd/9sb3n/am13/3Bzff9ucXv/
    +cnR8/3J0e/94e4X/bG95/3l7gf9ucHf/dXiB/3Byef9ucXv/b3J8/3N1e/9wc33/cHJ6/2ttdP9zdXz/
    +c3V8/21vc/9vcnz/bnF6/25xef9ucHf/cnR7/3R2fP9ydHv/bW92/3R3ff9vcXj/c3Z//25xe/9vcnz/
    +c3V+/3F0ff94eoD/cHJ3/3R2e/9vcXX/a21z/25wd/90dnv/b3F5/3Fzev9xc3r/b3F1/3V3ff9ydX7/
    +bnB1/2xudv9ucHf/bXB1/2tueP9tb3f/bG51/21wev9vcnz/b3J7/29ye/9qbXf/aWxz/29xef9nanH/
    +bG92/2xveP91eIH/a21z/2lsdv9vcXX/b3F4/25wd/9tb3b/dHZ7/3N2ff9pbHb/d3mA/3J0e/91d33/
    +cXR+/3R3gP9zdn7/dHeA/3R3gP97fof/d3qD/3d5gP91eH//cHN8/21wev9wc3z/dnmC/3N2f/9wc3v/
    +eXuC/3V4gf9zdXz/dXd9/25wd/91d33/cHJ5/3Byef9wcnn/cHJ5/21vc/9wc33/am13/2xvef9qbXf/
    +bnF7/2xueP9rbnX/bG52/29xef9ucHf/dXd9/3N1fP9rbnj/cXN6/3Byef9zdXr/bW5z/2hqcf9wc3z/
    +cHJ5/2dqdP9nanT/d3qD/25xe/9sb3n/bnF6/25xe/9zdn//d3qD/25xe/9qbXf/bnF7/3l7gf95e4H/
    +bW9z/3N1fP9zdXz/bG51/2xudf9zdXz/Zmhu/3R2fv9ydHv/am13/3d6g/9nanT/Z2p0/2dqdP9nanH/
    +a254/21wef90dn3/bG51/2ptd/9qbXf/bnF7/2xvef9ydHv/am13/3Fze/9sbnb/am13/2xudf91d33/
    +amxz/21vc/91d33/bnB3/25wd/9sbnX/cHN9/2xvef9ucHf/bG95/25wd/9qbHP/dnh8/3Bzff9wc33/
    +f4KM/25wd/9wc33/am13/2xvef91d33/bG51/3N1fP9tb3n/bG51/2dqcf9nanT/bW92/3V3ff9zdX3/
    +cXR8/3d6hP91eIH/cXR7/3J1ff9zdXz/am13/3Byef9wcnn/Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/
    +bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/
    +bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/cHJ5/29xdf9wc33/bnF7/3l8hv9ucXv/
    +cHN9/3R3gP94eoD/cHN9/3l7gf9zdn//dHeA/3Bzff9xc3r/am13/25wd/9vcXX/cHJ5/25wd/9zdXz/
    +c3V8/2ptd/9qbXf/d3l//25wd/94eX3/bnB3/3N1fP9qbXf/b3J8/29yfP90d37/d3mC/3Z4gf9zdn//
    +e32D/3l8hv9zdXz/dXd9/25xev9sb3j/aGt0/25xe/91d33/c3V8/2xudf9zdXz/bnB3/3V3ff9sbnX/
    +bG95/25xe/9vcXj/dXd9/21vdv9zdXz/a213/2dqdP9rbnj/cXR9/3Byef9wcnn/dXd9/21vdv91d3z/
    +c3Z//25wd/9sb3n/cHJ5/2xudv9sbnb/bnF4/25wd/9zdXz/c3V8/3Fzev9wc33/bG51/2dqdP9sb3n/
    +Y2Zu/2ptd/9wcnn/enyC/2xvef9sbnX/bW92/2tud/9ucHf/aGt1/3V3ff92eHz/aGt1/3Z4f/9wcnn/
    +bnB3/25xeP9zdn//bnB3/3Bzff9ucXv/eXuC/3Z5gv9ydHv/dnh//25xe/9sb3n/bG95/3Bzff9vcnv/
    +Zmly/3J1fv9vcnv/dXd9/3d5f/9wcnn/c3V8/3Byef9zdXz/cHJ5/3V3ff9tb3P/dXd9/25wd/9wcnn/
    +c3V8/25xe/9qbXf/a210/2tueP9qbXf/bG51/3d5f/9ucXv/bG51/29ye/9ucHf/cXR8/2ttdP9laG//
    +bnF6/2ptd/9maXP/Zmlz/3R3gf9tcHn/bG93/2xvdv9wcnn/c3V8/3d6g/9sbnX/amxz/25wd/93eX//
    +d3l//25wd/91d33/dXd9/25wd/9ucXv/dnh//2hrdP91d4D/a253/2psc/9zdXz/Zmlz/2Rncf9maXP/
    +Z2px/21wev9sb3n/c3V8/25xe/9wcnn/cHJ5/3Z4fP9wcnn/dHZ6/2xudf92eH7/bW91/29xdf9ucHf/
    +eHl9/2psc/9sbnX/dXd9/2xudf9qbXf/amxz/25xe/9sbnX/b3F1/29xdf9vcXX/Z2px/3V3ff91d33/
    +c3V8/3+Bh/9nanT/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/bG95/21veP9qbHP/ZWhy/2xudf9xdH3/
    +cXN5/21vdv90dnz/c3V8/21wef9wcnr/bnB6/21wd/9ucHf/cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn//
    +bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/am13/2xudf9ucHf/bG51/3V3ff99foH/
    +Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/am13/25xe/9ucHf/c3V8/3V3ff95e4H/
    +bnB3/3Fze/9wc3v/dHeA/3N2f/93eX//c3Z//3Z5gv9zdn7/cHJ4/2hrdP9qbXf/bG51/3N1fP9ucHf/
    +c3V8/3V3ff9qbXf/Z2p0/3d5f/9sbnX/eHl9/25wd/91d33/b3F1/3Byef9wcnr/cXR8/3R3f/91eIH/
    +cHJ5/3N2f/9zdn//bnB3/3Z4f/9ucXr/bnB4/21vc/9wcnn/dXd9/3h5ff9ucHf/dXd9/25wd/92eHz/
    +bG51/3Byef9zdXz/am13/3V3ff9sbnX/dnh8/29xdf9qbHP/bG95/3Bzff9ucXv/am13/3Bzff9qbXf/
    +dXd9/3V3ff9ucHf/bnB3/3Byef9vcXX/bnB3/25xe/9ucHf/c3Z//3V4gf9zdn//c3Z//2xvef9qbXf/
    +c3V8/2dqcf9sbnX/bnB3/3d5f/9ucHf/am13/3Byef9wcnn/bnB3/2ptd/91eIH/eXuB/2dqdP93eX//
    +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/bG95/3N1fP9ucXv/aGty/3Z4fP9qbHP/Z2px/2xudf9ucXv/
    +cHN9/2Zpc/9zdn//b3F1/2xvef9sb3n/Zmlz/2ptd/9nanT/bnF7/2ptd/9qbXf/bG51/3Bzff9sbnX/
    +bG95/2xvef9ucXv/b3F4/21vdv9sbnf/bG51/2dqcf9wcnn/am13/2hrcv9ucHr/bW91/3BzfP9oanP/
    +X2Jq/2hrdf9nanH/XWBq/2Rncf93eX//bnF6/29xev9sb3j/c3Z+/3d6g/95fIb/cHJ5/2xvef9wc33/
    +eXyG/3t+h/9wc33/e32D/3t9g/91d33/cHN9/3p8gv9pbHb/e32E/3N2f/9sb3n/d3l//25wd/9vcXX/
    +bG51/2xudf9vcXj/cHJ6/3R2fv9ucXv/bG95/3N1fP91d33/bnB3/3J0e/9tcHn/dniB/25xe/9ucHf/
    +bnB3/3Z4fP9sbnX/cHJ5/3h5ff9sbnX/bG95/2ptd/9ucXv/am13/2xudf9qbXf/bG51/2Zpc/9wc33/
    +cHN9/3N1fP9/gYf/am13/25xe/9sbnX/bnB3/3Bzff9nanT/bnF7/3Byef9wc3v/a253/2dqc/9wcnn/
    +cXR9/25xeP9pbHX/Z2pz/2dqdP9laHD/bnB2/2ptd/9rbXX/bG95/2xvef9nanT/am13/3N1fP9wc33/
    +d3qD/2xudf9wc33/bG51/3V3ff9nanT/amxz/2xudf9qbHP/bG95/2ptd/9qbXf/bG95/2xudf91d33/
    +e32D/2Jlbv9ucXv/bG95/3N2f/9qbHP/c3V8/3Bzff9nanH/amxz/2Jlbv9nanT/Z2px/2ptd/9sb3n/
    +dHeA/2lsdP9sb3j/b3F3/3Byef9wcnn/cHJ5/3Byef91d3v/b3J7/3Z4fv9ucHf/bnB3/2xvef9wc33/
    +bG95/25xe/95e4H/cHJ5/2ptd/91eIH/bnB3/3d5f/9ucHf/dXd9/2xvef9ucXv/cnR7/3Bze/9xdHv/
    +cHN9/2tueP9zdXz/dXd9/29xdf92eH//bXB6/21vd/9rbXf/bnB3/3V3ff94eX3/bG95/3l7gf9zdXz/
    +e32D/3Bzff91eIH/eXuB/3N2f/97fof/c3Z//3t9g/9wc33/c3Z//3d5f/95fIb/d3qD/3N2f/93eoP/
    +c3Z//3t9g/91eIH/c3V8/2xvef9sb3n/bG95/25wd/9wcnn/bW9z/3Byef91d33/c3Z//3V3ff9ucHf/
    +bG51/25xe/9iZW7/bG51/2xvef9zdn//Zmlz/2Rncf9nanH/Z2p0/2dqdP9kZ3H/bnF7/3N1fP9nanT/
    +d3l//2ptd/9nanT/bG51/3Byef9sbnX/am13/2xvef9ucXv/am13/2Zpc/9wc33/Z2p0/2BjbP9nanT/
    +cHN9/2xvef9iZGr/bnF7/2xudf91d33/dnh8/3N1fP9wcnn/bG95/25xe/9ucXv/am13/2psc/9ucXv/
    +am13/2psc/9qbXf/cHN9/29yfP9rbXb/bG93/2tueP9sbnX/dXd9/3Byef9tb3P/cXN6/21wef9ydHz/
    +a251/2dqcv9ydHv/cHJ5/2psc/9sbnX/dnh//3Byef9sbnX/aWx1/2xvef9ucXv/dXd9/2Zpc/9gY2z/
    +Z2px/3Byef9wcnn/Z2px/25xe/9sb3n/amxz/2Zobv9rbnj/Y2Zu/3Z5gv9vcnv/bG95/3d5f/9ucHf/
    +bnB3/2xudf9tb3P/bnB3/3Fzev90dnz/c3Z+/25xe/9wc33/d3qD/3J0fP9ydHr/a254/3N2f/9tb3b/
    +am13/2xudf92eHz/bnB3/3Byef9zdXz/bW9z/21vc/9tb3P/bnB3/3Byef9ucHf/bnB3/29xdf9nanH/
    +c3V8/3N2f/9zdn//f4GH/2xudf9xc3r/ZGdx/2ptd/9sb3n/Z2px/3Byef9vcXb/b3F4/2xudf9nanT/
    +cHN9/3V4gP90dnz/dHZ9/3N1fP91d33/bnB3/3N0eP9ydHr/cHJ5/3Byef9wcnn/amxz/2xudf92eHz/
    +cHJ5/3V4gf9sbnX/bnF7/2xudf9wcnn/Z2px/2Rncf9maXP/Z2px/2dqcf9maG7/YmVu/2Zobv9maG7/
    +am13/3N2f/9ZXGX/Zmlz/2dqdP9wcnn/ZGdx/2xvef9sb3n/amxz/2ptd/9maXP/am13/2xudf9sb3n/
    +cHN9/3R2ff9oa3X/bG95/3F0ff9vcnz/dXd9/3N1fP9wcnn/dHZ8/3N2f/91d37/b3J5/2xudv9sbnX/
    +cHN9/2xudf9sbnX/dXd9/2xvef9qbXf/e32D/3N1fP93eoP/bG95/3Z4fP9qbXf/c3Z//3J0e/9ucHn/
    +cXN6/3R2fP9tb3P/c3V8/3Bzff9ucHf/c3V8/29yfP9ucXv/bnB3/3Byef93eX//e32D/3Byef97fYP/
    +cHJ5/3t9g/9ucXv/cHN9/3V3ff9wc33/eXuB/3Byef9zdn//bG95/2ptd/9sb3n/c3V8/3N1fP9ucHf/
    +bnB3/25wd/9zdXz/bG95/2ptd/9qbHP/am13/2Rncf9nanH/am13/2dqcf9nanT/am13/25xe/9wc33/
    +amxz/2xudf9zdXz/amxz/25wd/9wc33/eXyG/2xvef9ucHf/cHJ5/3N1fP9ucXv/bG95/3N2f/97fYP/
    +c3Z//36Biv91eIH/c3Z//3Bzff93eoP/c3Z//3l8hv93eoP/e32D/3l7gf9wc33/d3qD/25wd/9maG7/
    +bG51/25wd/9sbnX/ZWZq/3N1fP9zdXz/c3Z//3V4gf9wc33/dXd9/3V3ff91d33/cHN9/3Bzff9wc33/
    +dnh8/3Bzff9wc33/c3Z//3Z5gv91eIH/bXB5/3Bze/9sb3n/bG51/3V3ff9sb3n/bG51/3F0ff9tcHn/
    +c3Z+/21vd/9naXP/am13/2xvef9iZW7/ZGdx/3V3ff9qbXX/Z2p0/2hrdf9xc3r/cnV8/3Z4f/9sbnX/
    +amxz/2tudf91eIH/dHZ8/25wdf9ydX7/cnV+/2xvef9ucHf/cXR9/2dqdP90dn7/Zmlz/2Zpb/9sb3n/
    +YmVu/2Zobv9kZ3H/Zmhu/2lsc/9sbnj/dHZ9/2xvef9sbnX/bG95/3V4gf9tcHn/cHN7/2tud/92eYH/
    +b3J7/25wd/9vcXX/d3l9/3Byef9wc33/dHZ8/25wd/9sb3n/b3F1/25wd/9ucHf/bW9z/2xudf9ucHf/
    +aGt1/25xev92eH7/dXeA/36Ahv9ucHf/dXiB/2Zobv9qbXf/bG95/2Zpc/9wcnn/bW90/2tueP9sbnX/
    +Z2pz/2xvef9vcnv/cHJ7/3N1e/92eYH/c3Z//29yfP9zdX3/cnV9/3J1fv91eIH/d3qD/3N2f/9zdn//
    +foGK/3l8hv+Bg4r/cHN9/3d6g/9zdXz/d3l//3Byef9wc33/cHN9/25xe/9ucXv/bnB3/29xdf9wcnn/
    +bnF7/3l7gf9+gIb/Z2p0/3N2f/9wcnn/d3l//21vc/92eHz/dXd9/25wd/9ucXv/Z2p0/2xvef9ucHf/
    +bnF7/3V4gf94e4X/bnB3/3Fze/90d4D/cHN8/3V3ff9wc33/bnF7/3N1fP9ydHr/cnR6/21wd/9sb3n/
    +bnF7/3d6g/9ucXv/cHJ5/3N2f/9ucHf/amxz/3V3ff9vcXX/dXd9/2xvef9zdn//bXB6/3V3fv9ydX7/
    +cHN9/3N2f/90dnz/bnB3/3N2f/9wc33/bG95/3Fze/9ucXv/bXB6/2xveP9ucXv/dHeA/3p8gv9ucHf/
    +dHd9/2xudf92eHz/cHJ5/3Byef9zdXz/bG95/3N1fP9sbnX/bnF7/2dqdP9nanT/bG51/2xvef9sb3n/
    +amxz/2xudf9sbnX/dXd9/3N1fP9ucHf/bW9z/2xvef9maXP/am13/2xvef9sbnX/c3V8/3N1fP9zdXz/
    +c3V8/29xdf9vcXX/cHN9/2ptd/9wcnn/c3V8/3d6g/9sbnX/bnB3/29xdf9vcXX/bG51/2psc/9ucXv/
    +cHN9/2ptd/93eX//am13/2psc/9qbXf/bnF7/2xudf9ucXv/am13/3Bzff9ucXv/ZGdx/25xe/9nanH/
    +YGNs/2Rncf9qbXf/bG51/2RmbP9ucXv/bnF7/3Bzff91eIH/c3Z+/3R2fP9zdXz/c3V8/3Fzef9ucHf/
    +cHJ5/3Z4fP9wcnn/bnB4/29xeP9ydHz/cnR7/2xudv9wc3r/dXiB/3N1fP91d33/bnF7/29xdf91d33/
    +bnF6/3F0fv9zdXz/aGt1/25xe/9ucXv/am13/25wd/95fIX/cnR6/2xvef9rbnj/cnV8/3V3ff93eX//
    +bnB3/21vdv9wcnb/d3l9/3d5gP9tcHX/cnR7/3N1fP9sb3n/bG94/3R2ff9qbHP/eHl+/25xe/9tb3P/
    +dnh8/2Zpc/9qbXf/bG51/21vc/9sbnX/cHJ5/3V3ff9ucHf/bW9z/25wd/97fYP/cXN6/3FzfP9rbnf/
    +dHeA/25xev9qbXb/bG92/3N2f/9tb3b/cnR7/21wev9sb3n/bG95/21wdf9tb3b/bnB4/2xudf9rbXP/
    +bnB3/2lsdf9sbnj/dXd+/3J0e/97fYL/bG90/3ByeP9gY2z/bG51/2xudf9kZ3H/bG95/2xudv9sb3j/
    +bG95/2ptdv9wcnn/dHZ9/25weP9ucHj/bnB5/3N1fP9tb3b/cXN7/29ye/9ucHf/bG95/2ptd/9maXP/
    +bG95/3V3ff9wc33/dXiB/21vc/9ucXv/bG51/3N1fP9tb3P/bG51/3Bzff9qbXf/am13/25xe/9qbXf/
    +bG51/2xudf9wcnn/d3l//2Rncf9sb3n/bnF7/3V3ff9sbnX/dnh8/3V3ff9ucHf/bG51/2psc/9sb3n/
    +b3F1/25wd/9wc33/dnmC/2tud/9sb3j/bXB6/2hrdf9xc3r/a254/21wef9vcnz/cnR9/3R2fP9vcnz/
    +bnB3/25xe/91d33/b3F1/29xdf9zdXz/ZWhx/2Zpcv9wcnr/bW92/3d5gP9rbnj/cXR+/21wd/90dn3/
    +c3Z9/3J1ff91eIH/enyC/3Byef9zdn//c3V8/2xvef9vcnv/cnR7/21wev9sb3j/bnB3/3BzfP92eH7/
    +bXB6/3R2fP9rbXT/eHl9/25weP9ucHf/cnR7/3Fzev92eH3/bG94/3N1fP9ucXv/bG51/25wdf9vcXj/
    +b3F4/21vdP9sbnb/bW92/3R3gP9ucXv/bG52/2xudf9wcnn/Z2p0/2xudf9tb3P/bG51/3Bzff9zdXz/
    +dXh8/3Z5f/9ucHf/a254/25xe/9qbXf/b3J8/29yfP94eoD/bG95/25wd/9ucXv/bnF7/2ptd/9oa3T/
    +c3Z//3V4gf9wcnn/eXuB/25xe/9sb3n/bnB3/3V4gf9ucXv/d3l//25wd/92eHz/c3V8/2ptdP9zdXz/
    +am13/2Zobv9sbnX/bnB3/2ptd/9gY2z/cHN9/25xe/9vcnz/cHJ8/3J1fv9ydX7/cHN8/3Byef91d33/
    +b3F4/25weP90d37/cHJ5/3Byev9xc3v/c3V8/3J0e/9wc3v/cHN8/3N2f/9wcnn/d3qD/3N2f/9ucHf/
    +d3l//25xe/91d4D/dHeA/2ptd/9wc33/cHN9/25xe/9wcnn/en2G/3N2fv9vcnz/b3J6/29yfP92eH7/
    +dnh//3BzfP9ydHv/cnR5/3p8gv94e4T/cHJ4/3J1fv9ucXv/cHN8/3Bze/92eH7/am13/3h6gP9ucXv/
    +c3V8/3l7gf9sb3n/bnB3/3Byef9ucHf/b3F1/3Byef91d33/cHJ5/29xdf9ucHf/eXyG/25xe/9vcnv/
    +am13/3J0ev9vcXr/aGt1/2tudv9ydHz/a252/21vdv9tb3f/bW92/2xudf9rbXT/bG51/25xef9rbXT/
    +aWx2/2xvef9qbXf/amx0/3F0ev9tb3b/cnR6/2hrcf9sbnf/am13/3Byef9wc33/bG95/3Bzff9tb3X/
    +a252/2dqc/9fYWv/ZGZt/2xveP9qbXb/bG95/3F0e/91d3//b3F3/3J1ff9zdXz/bG95/3N1fP9wcnn/
    +bG51/3N1fP91d33/bnF7/3N1fP9qbHP/bnF7/2ptd/9zdXz/bG51/2xudf91d33/bnB3/3Byef9wcnn/
    +bG95/25wd/9ucHf/dnh8/4CChv9ucHf/dXd9/3N1fP93eX//bnB3/3Z4fP92eHz/bnB3/2xudf9sbnX/
    +bG51/2xudf9qbXf/bG95/3V4gP9nanT/bW95/3F0ff9vcnn/dXd9/3N1e/90dnz/c3V7/21vdv9sb3j/
    +Zmlz/2FkbP9maXP/ZGdx/2Zobv9iZW7/am13/2lsdv9rbnb/dHZ7/3Byef9zdXv/bG51/2xvef9qbXf/
    +bnF5/21wev9rbnf/b3J8/2xvef9nanH/bnF7/2xvef9oa3T/a253/25xef9tb3j/bG51/21vdv9tb3f/
    +cHN6/2lsdv9qbXf/ZGdw/3N1fP9nanT/Zmlz/2ptdv9ucHf/b3J8/21vdv9vcnz/bXB6/2hrdf9tb3f/
    +bG95/29yfP9qbHP/aGtz/2ttdP9zdX7/bnB5/21vdv9sbnX/b3J8/2hrdf9sbnX/bnB3/21vdv9xc3r/
    +dHZ8/3V3fv91d37/bnB3/2ptd/9vcnv/am13/25wd/90dnz/dXd+/2xudf9tb3b/a254/29xeP9nanL/
    +aWt1/2ptd/9sb3n/amx0/25xe/9qbHP/Y2Zv/2hrdf9ucXv/bG94/29yfP9nanH/b3F4/2tueP9oa3X/
    +cnR7/2ptd/9jZm//Zmlz/2ptd/9qbXf/YGNs/25xe/9qbXf/bW94/25xe/9ydX//cnV//3N2gP91eIL/
    +dXd//29xeP9xc3v/dHd//29ye/9tcHn/cnR6/21wev9ucHn/a253/21wev9rbnj/amxz/3V3ff9wcnn/
    +bG51/3V3ff9qbXf/b3J8/3J1fv9maXP/bnB3/21vc/9qbXf/Z2p0/3R2ff9sbnX/bW91/3Fzev9rbnj/
    +dHZ9/3F0ff9vcnz/dXd9/3F0fP90d3//dXiB/21vdv90d3//b3J7/3R3f/9wcnv/cXR9/2dqdP94eX3/
    +cHJ5/29xdf94eX3/amxz/21vc/9tb3P/am13/2xudf9ucHf/dXd9/2xvef9sbnX/am13/3d6g/9nanT/
    +a253/2VocP9rbnT/bG93/2RncP9laHD/bG93/2hqcP9pbHP/ZGdx/2hqcP9maXP/amx0/2lsc/9rbnf/
    +a210/2ttdP9tcHr/bXB5/2hqc/9ucXn/bW95/3Fzef9rbXT/cHJ5/2xvef9wcnn/cHN9/2xvef9ucXv/
    +bnF6/3Byd/9ucHf/bnB3/3Byef94eX3/c3V8/3Byev9ydHv/dXd9/3Byd/9ydXr/dHZ9/2xudv9wcnn/
    +bG51/2psc/9zdXz/eHl9/3V3ff91eIH/bnB3/3Byef9wcnn/dnh8/2xvef9wc33/d3qD/3N2f/9zdn//
    +c3V8/25wd/9ucHf/c3V8/3h5ff9/gYf/bnB3/3Z4fP9wcnn/d3l//25wd/93eoP/eXuB/25wd/9wcnn/
    +bG51/25wd/9qbHP/am13/2ptd/94e4X/Z2pz/25xef9ydHv/a254/3Bzff9rbnj/dHd+/3J0ff9tb3f/
    +cnR8/21vd/9qbHP/cHN9/3Bzff9sbnX/Zmlz/3Bzff9nanT/am13/21vef9tcHr/bXB6/2ptdf9tb3f/
    +b3F5/3Byev9sb3n/cXN6/3J0fP91d33/bG51/3N1fP9wc33/bG51/25wd/9xdHv/cnR6/25wd/9wcnr/
    +a252/29xef9sb3n/bnB5/2ttdv91eH//a253/2ptd/9rbnb/b3F4/29yfP9wcnn/bnB5/21vdv9rbnX/
    +cnR6/29xev9ydXz/b3F4/21vdv9ydHv/c3V9/2ptd/9vcXj/bW92/25wd/9tb3b/bW92/25wd/9xc3r/
    +cHN6/3R2fP93eX7/dXd//3Bzff9tcHr/dHZ8/25wd/9vcXj/b3F6/3R1fP9xc3r/cnR6/3Bzff9wc3z/
    +aWx0/2xvdv9tb3X/cHJ6/25wdv93eH3/b3F3/2ttdP9tb3f/c3V7/3R3fP90d37/b3F4/3Z3ff91d33/
    +cXN6/3Z4f/9xdH3/bXB6/3Byev9vcnz/cXR+/2hrdf9ydX//cXR9/2lsdv9sb3n/cXN8/25wd/9sb3j/
    +bnB6/21wef9nanT/am12/3N1fP9vcXn/c3V7/3N1ev9qbXf/a210/21vdv9vcXj/bnB3/29xdf9zdXz/
    +cHJ5/25wd/9wcnn/bG51/3N2f/90d4D/am13/21vc/9ucHf/b3F1/2xvef93eX//b3F4/2xudf9wc33/
    +bG94/3R2ff9xc3r/bW92/3V3fP90d33/dHZ9/3Z4fv9wcnb/b3F4/3Fzev9xc3r/c3V8/3N2f/9oa3H/
    +eHl9/3Byef9sb3n/d3qD/25xe/9wcnn/bnB3/25wd/9wcnn/cHN9/3d6g/9zdn//cHN9/3N2f/9/gYf/
    +cHN9/3N2f/9qbXf/cHJ2/3R2ff9ucHf/cHJ5/3N2f/9ucXv/b3F4/21wev9sb3n/bG95/29xeP9vcnb/
    +cHJ5/2xudv9tb3P/dXd7/3R2fP9sbnX/cXR9/25xe/9tcHr/b3F1/25wd/9nanT/Z2p0/2ptd/9qbXf/
    +bnB3/3Byef9vcXj/bG51/29xdf9ucHf/dXd9/3Byef9wcnn/cHJ5/3N1fP9ydHr/c3V6/3J0fP9tb3T/
    +c3V8/21vc/9sbnX/c3Z//3d6g/91eIH/eXuB/25xe/9zdn//dXiB/3t9g/9wcnn/dXiB/3l7gf93eoP/
    +d3qD/3d6g/9wc33/cHN9/25xe/91eIH/gYOK/2xvef91d33/cHN9/3l7gf9ucXv/e36H/3l7gf9zdXz/
    +c3Z//2xvef91eIH/cHJ5/3d6g/91eIH/foCG/25xeP9zdn//dnh//25wd/9xc3n/a253/3Z4fv9zdXz/
    +b3F4/3Z5gf91eIH/c3V+/3t9g/95e4H/c3Z//3N1fP93eoP/bnB3/3F0ff9wcnn/cnV+/3d6gv9ydX7/
    +cHN9/3d5f/95fIL/dXiB/3h6gP95e4H/foCG/3V3ff97fYP/e32D/3N2f/92eYL/eHqA/3d5gP9ydX7/
    +dHeA/2ttd/9ucXr/cHJ8/3Fzev9xc3v/eXuC/3J0e/9ucHj/b3F5/3R2fP9xc3r/dHZ8/21veP9sbnX/
    +aGt1/3N2f/9sb3n/cXN7/2lsdv9qbXT/cnR7/25xe/9rbnj/b3J7/2xueP9tb3f/bXB6/29xev9tcHj/
    +cXN6/3J0e/9zdXz/dHZ9/3BzfP9xc3r/aGt0/21wef9qbHT/a210/2hrdf9sbnf/bG52/25xev9tcHr/
    +bW94/2hqc/9ucHf/aGty/2hrdf9pbHP/b3F6/2psdf9oanP/am13/25xe/9sb3f/bW94/2dqdP9ucXn/
    +bXB3/3FzeP9vcnj/bnF7/2hrdf9sbnX/bnB4/3F0e/9laG//bnB4/2xvef9sbnX/bG51/3N1fP9sbnX/
    +bG95/25xe/9wcnn/bW9z/2xudf9zdXz/bnF7/25xe/9wcnn/a253/2tud/9tb3P/c3V8/29xdf9sbnX/
    +bG95/3Bzff9sbnX/bnB3/2psc/9zdn//eXuB/25wd/9ucHf/cHN9/25xe/9ucHf/eXuB/2xvef9qbXf/
    +c3Z//25xe/91d33/cHN9/2xvef92eHz/c3Z//3Byef91d33/b3F1/3Byef91d33/cHJ5/25xe/9ucXv/
    +Zmhu/3N1fP9qbXf/bG51/3V3ff9nanT/Z2p0/2psc/9qbHP/amxz/3Bzff93eX//am13/25wd/9qbXf/
    +eXuB/2ptd/9wc33/am13/2xudf9ucXv/Z2p0/2dqcf9qbXf/amxz/2psc/9iZW7/bG51/2dqdP9sbnX/
    +bG51/25xe/9qbXf/am13/3Bzff9zdXz/Zmlz/2xvef9ucXv/amxz/2xudf9sbnX/ZGdx/2Rncf9kZ3H/
    +YmVu/2Zpc/9oanP/bG53/2ptd/9vcXj/c3Z//3N2f/9wc33/bnF7/25xe/9zdn//b3J7/3Fze/9tcHr/
    +bW91/3Bzff9tb3P/amxz/3V3ff91d33/dXd9/3h5ff9ucHf/b3F1/25wd/92eHz/bnB3/3N2f/92eHz/
    +dXd9/3Byef9zdXz/bnB3/25wd/9ucHf/dXd9/3+CjP9wcnn/c3Z//25xe/93eX//bG95/3t9g/94eX3/
    +bnB3/3Bzff9qbXf/c3Z//2xvef9wc33/cHJ5/3t+h/9ucHf/cHN7/3R3gP9ucHf/dXiB/25xe/95fIb/
    +cnV+/29ye/91eIH/cHN9/25wd/9zdn//c3Z//25wd/9sbnX/cHJ5/2xvef9ucHf/bG51/3Byef91d33/
    +bnB3/29xdf9zdXz/c3V8/2xvef91d33/cHN9/3Bzff9qbXf/cHJ5/3N1fP9ucHf/cHJ5/3Byef9zdn//
    +c3Z//3N2f/9qbXf/bXB5/3N2f/9wc33/cnV+/3d6g/90d4D/c3V8/3N2f/96fIL/enyC/31/hf90d4D/
    +cnV+/29yfP95fIX/dHeA/3h6gP9ydX7/cnV+/3Z4fv9tcHn/am13/3R2fP9ucHf/b3F1/3J1fv9zdX7/
    +bG95/3J1fv90dnz/d3l9/3h5ff9xc3r/dHZ9/2xudf9wcnr/bnB3/21wev9rbnj/b3F5/3Bzev9zdX7/
    +dnmC/3J1f/9sb3n/dnh+/3Byev91eIH/b3J8/3R3f/9ucXv/b3F5/3F0fv91eIH/cXN5/3J1fv9wcnr/
    +cXR9/3J0e/90d4D/cXN7/3V3ff9wc3v/cHJ5/3N1ff92eH//am11/3N1ff9ydHz/bG51/2xudf91d33/
    +bnB3/3Byef9ucXv/c3Z//25wd/9sb3n/dnh8/25xe/9wcnn/c3V8/2xudf9nanT/bW9z/3Byef9vcXX/
    +b3F1/3Bzff91d33/bnB3/25xe/9qbXf/c3Z//3h5ff9sbnX/bG51/2ptd/9sb3n/am13/3N1fP9sbnX/
    +Zmlz/2xvef9qbXf/bG95/2dqdP9kZ3H/bnB3/2ptd/9maXP/Z2p0/2Rncf9maXP/Z2p0/2Zpc/9nanT/
    +ZGdx/1xfaP9kZ3H/ZGdx/2Rncf9ucHf/YmVu/2Jlbv9maG7/ZGdx/2psc/9nanT/bnB3/2Zobv9kZ3H/
    +Z2px/3d6g/9nanT/cHN9/2psc/9qbXf/dXd9/2xudf9nanH/bG95/2xudf9tb3P/Z2px/25wd/9ucHf/
    +bG95/25wd/9zdn//c3V8/3Bzff93eoP/eXuB/25xe/93eoP/d3qD/3Byef9wc33/cHN9/2xudf9vcXX/
    +c3V8/21vc/9sbnX/cHJ5/29xeP9tb3b/cHJ5/3V4gf91eIH/c3Z//3N2f/9ucXv/d3l//3Bye/90dnz/
    +cXN9/2xvef9zdn//bnF7/25wd/93eX//eXuB/3d5f/93eX//bG95/3Byef9vcXX/dnh8/25wd/9zdXz/
    +dnh8/3V3ff9zdXz/cHJ5/29xdf9sbnX/cHN9/3V3ff+Agob/bW9z/25xe/9sbnX/dXd9/21vc/93eX//
    +dnh8/21vc/9sbnX/Z2px/3Bzff9sb3n/cHJ5/25wd/93eX//bW92/29yfP9xc3v/aGt1/2xvef9kZ3H/
    +dXd9/2xvef9pbHP/cXR7/25xe/9ucHf/cHN9/3Z4fP9sbnX/amxz/25wd/9ucHf/bG51/2psc/9ucHf/
    +c3V8/2xudf9qbXf/c3V8/3V3ff9sb3n/c3V8/3Bzff91d33/bG51/3V3ff9zdXz/b3F1/3N1fP9ucHf/
    +c3V8/3N1fP9zdXz/Zmlz/2ptd/9ucHf/bG95/3Bzff93eX//bnF7/29xdf9sbnX/c3V8/3V3ff91d33/
    +bnB3/25wd/9ucHf/dXd9/25wd/92eHz/bnB3/2xvef91d33/bW9z/2xudf92eHz/bG51/2xvef9ucXv/
    +am13/2ptd/9ucXv/c3V8/3V3ff94eX3/c3V8/3d5f/9vcXX/cHJ5/25wd/9sb3n/am13/2ptd/9wcnn/
    +cHN9/3J1fv9wc33/am13/3R2fP9vcXX/cHJ5/2xudf9ydHz/bnB3/2xvef9vcnz/dnmC/25xe/9zdn//
    +bnF6/3N2fv9qbXf/dnh8/21vdv90dnz/b3F4/2tueP9ucXr/cHN9/2Vocv9tcHr/cnR8/2Jlbv9nanH/
    +bnF7/2ptd/9qbXf/amxz/2Zpc/9maG7/Zmhu/2dqdP9maG7/Z2p0/2xvef9maXP/ZGdx/2Rncf9qbXf/
    +Z2p0/2dqdP9ucXv/cHN9/2ptd/9sb3n/Z2p0/3Bzff92eHz/bG51/29xdf9ucHf/bnB3/3Byef97fYP/
    +c3Z//25xe/91eIH/c3Z//3V4gf9zdn//bG95/3N2f/9wc33/bnF7/3N1fP9tb3P/bnB3/25wd/9sb3n/
    +bnF7/2xvef9nanT/bnF7/2xvef9sbnX/dXd9/2Rncf9maG7/ZGdx/2Rncf9maG7/am13/25wd/9nanH/
    +Z2p0/2ptd/95e4H/bG95/3N1fP9sbnX/amxz/3V3ff9sbnX/bG51/3Bzff9ucHf/bnB3/2ptd/9ucHf/
    +b3F1/29xdf9ucHf/c3V8/25wd/9tb3P/dXd9/3N1fP9nanT/dXd9/3N1fP9qbXf/am13/2psc/9nanT/
    +amxz/3Byef9nanH/Zmhv/2tueP9nanT/ZWhy/2ttdf9qbXf/am13/2ptd/9nanT/Z2px/3Bzff9sb3j/
    +b3J8/2xvef9sbnX/c3V8/2ptd/9nanT/bnF7/3N1fP91d33/dXd9/2xudf9ucXv/bG51/2xvef9qbXf/
    +bnF7/25xe/91d33/dnh8/3Byef9sbnX/bW9z/3N1fP93eX//gIKG/21vc/9sb3n/bG95/3h5ff9sbnX/
    +d3qD/3V3ff9qbXf/am13/2Zpc/9zdXz/cHJ5/3N2f/9wc33/en2G/21vd/9vcnz/cnV8/2hqdP9nanT/
    +ZGdx/3Byef9ucXv/aWxz/3F0fv9vcnz/bG95/3Bzff9zdn//bW9z/2xudf9zdXz/cHJ5/25wd/9qbXf/
    +cHN9/3l7gf9ucHf/bnB3/3l7gf97fof/c3Z//3t+h/97fYP/e32D/3N2f/95e4H/eXyG/3N2f/95fIb/
    +eXuB/36Ahv97fYP/foCG/3V3ff91d33/cHN9/3Bzff91eIH/eXyG/25xe/9qbXf/bnB3/3N2f/93eX//
    +dXiB/2ptd/9sb3n/bG95/3l7gf9wc33/eXuB/3Bzff9ucXv/dXd9/29xdf9sbnX/dnh8/2xudf9wcnn/
    +cHN9/25xe/9wc33/c3Z//3V3ff91eIH/eXuB/3V4gf93eX//bnB3/25xe/9ucHf/bnB3/2xudf9nanH/
    +bG51/3N1fP9wc33/c3V8/2psc/9zdXz/bG51/2xudf9qbXf/cHN9/3Byef9nanT/bG95/3l7gf9sbnX/
    +bW9z/2xudf9sb3n/Zmlz/3Bzff9qbHP/cHN9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/bG95/2xvef9nanT/
    +bnF7/3N2f/9wcnn/bnF7/3Bzff9ucXv/cHJ5/3Byef91eIH/cHJ5/3N2f/91d33/cHN9/2xvef9sb3n/
    +dXiB/3Byef9wcnn/c3Z//3Bzff9ucHf/bG51/2xudf91d33/c3V8/2psc/9qbHP/am13/2xudf9nanH/
    +c3V8/2psc/9maXP/bG95/2xudf9wc33/cHJ5/2xudf9wcnn/c3V8/2xudf9wc33/amxz/2xvef9sb3n/
    +bG51/3N1fP9wcnn/Z2p0/3Bzff9zdXz/bnB3/3d5f/9qbXf/bnB3/25wd/9sbnX/bG51/3V3ff94eX3/
    +b3F1/25wd/9zdXz/f4GH/2xvef9zdXz/bG95/2xudf92eHz/am13/2ptd/9ucXv/bG95/2psc/9maXP/
    +bG51/2dqcf9kZ3H/Zmlz/2xvef9maXP/Z2p0/25xe/9zdXz/Z2p0/3N1fP9ucXv/am13/2ptd/9vcXX/
    +b3F1/2xudf9zdXz/bG51/2tud/9ydHv/bXB6/29ye/9wc3z/d3qD/3l8hv95fIb/d3qD/3Bzff97fYP/
    +dHeA/3h7gv95e4H/dHZ9/3t9g/91eIH/c3V8/3d6g/97fYP/foCG/36Biv9zdn//e32D/3V4gf93eoP/
    +cHN9/3V4gf9zdn//dXiB/3N2f/9wc33/bnB3/25wd/9zdXz/dnh8/4CChv9sb3n/bnB3/25wd/92eHz/
    +am13/3N2f/9zdXz/amxz/2ptd/9gY2z/bnF7/2dqdP9ucXv/cHN9/3V4gf9rbXX/bnF7/3R3gP9ydHv/
    +c3Z//2ptd/93eX//cnV+/25weP9ydHz/bXB5/2dqcv9sb3n/bnF7/2psc/9maXP/bG95/2xvef9sb3n/
    +am13/25wd/91d33/bG95/2xvef91eIH/d3qD/3Bzff93eX//dXiB/3Bzff9ucHf/c3V8/3N1fP9sbnX/
    +bG95/2xvef9wc33/cHN9/3N1fP9qbHP/bW9z/2xudf9sbnX/c3V8/3d5f/9ucHf/am13/2xvef9zdn//
    +eXuB/3d6g/9ucXv/bnF7/3Byef95fIb/c3Z//3l8hv9wc33/dXiB/3l8hv91eIH/dXd9/3t+h/9ucXv/
    +dXiB/3V4gf9wc33/bnF7/3N1fP91d33/d3qD/3d5f/9wcnn/dXd9/2dqdP9nanT/amxz/2Zpc/9iZW7/
    +YmVu/2xudf9qbXf/cHN9/25xe/9nanT/cHN9/2ptd/9sbnX/am13/3N1fP9ucHf/Z2p0/25xe/93eoP/
    +bG51/2ptd/9qbXf/bG95/2ptd/91d33/Z2p0/3Bzff9sb3n/cHJ5/3Byef91d33/Zmhu/3V3ff9zdXz/
    +am13/25xe/9zdn//dXiB/3Bzff9ucHf/cHN9/25xe/9sb3n/dXd9/25wd/9wcnn/dnh8/3Byef9ucHf/
    +bG95/3d5f/9wc33/cHJ5/25xe/91eIH/bnF7/3N1fP9sb3n/eXuB/3l7gf9wc33/dXd9/3l7gf93eX//
    +dXiB/36Ahv9zdXz/bnF7/3N2f/9wc33/eXyG/3l8hv92eHz/eXuB/35/g/95e4H/fX6B/3Bzff91eIH/
    +dXiB/3Bzff93eoP/c3Z//25wd/93eoP/d3qD/3Bzff95e4H/am13/2xvef9ucHf/bG95/2xvef9zdn//
    +dXd9/2xvef9ucHf/c3V8/3+Bh/9sbnX/dXd9/2xudf9qbXf/eHl9/25wd/9sb3n/dXiB/3V4gf9zdXz/
    +bnB3/2xvef9ucHf/cHJ5/25wd/9zdn//c3Z//3N1fP9+gIb/e36H/3V3ff9+f4P/fX6B/3Z4fP91eIH/
    +c3Z//2xudf9sbnX/cHN9/2xvef9rbnj/dHZ8/3R2fP9ydHr/enyC/36Ahv97fYP/eXuB/3V4gf9wc33/
    +enyD/3N2fv90dn7/cXN6/21vdv91d33/bG51/2dqdP9wcnn/cHN9/3Z4fP93eX//bnB3/3N2f/9sb3n/
    +c3V8/2xvef9ucXv/bnB3/3N2f/9zdn//cHN9/25wd/9ucHf/c3Z//3l7gf+Bg4r/bnB3/25xe/9wc33/
    +eXuB/3Bzff93eoP/d3qD/3Byef9zdn//Zmlz/3V3ff9wc33/dXd9/3N2f/95fIX/bG51/29xeP90d37/
    +am13/3Bzff9sb3n/eHl9/3N1e/9rbnf/cXN7/25xe/9sb3n/dXiB/3V4gf9ucXv/bG95/3N2f/9ucXv/
    +c3V8/2ptd/9sb3n/dXd9/25wd/9ucXv/dXiB/3l8hv9wc33/dXd9/3Bzff9zdXz/bnB3/3V3ff9wcnn/
    +bG51/25wd/9ucHf/cHN9/3Bzff91d33/bW9z/2xudf9nanT/am13/25xe/9ucHf/Z2p0/2Rncf9qbHP/
    +ZGdx/2dqdP9maG7/YmVu/2dqcf9maXP/cHJ5/2dqcf9sb3n/Z2px/2psc/9sb3n/amxz/2dqdP9zdXz/
    +Z2p0/25xe/9zdXz/bG95/2xudf9ucHf/c3V8/3V3ff93eX//c3V8/3Z4fP9ucHf/cHJ5/3Byef9vcXX/
    +am13/25wd/9ucHf/cHJ5/3Z4fP9wcnn/bG51/3N1fP9ucHf/bnB3/25wd/9zdn//bnF7/2psc/9ucXv/
    +eXuB/29xdf9ucXv/bnB3/2xvef9qbXf/d3l//2xvef9zdn//dXiB/3Bzff9sb3n/cHN9/2Zpc/9zdn//
    +dXiB/2ptd/9wc33/dXiB/3N2f/9zdn//cHN9/3V4gf9zdn//c3Z//3t9g/95e4H/e32D/3t9g/95e4H/
    +c3V8/3N1fP95e4H/cHJ5/2xvef9ucHf/cHN9/25wd/9sb3n/amxz/3N2f/9zdn//b3F1/25wd/9wcnn/
    +bG95/25wd/9wc33/bG51/2psc/9ucXv/am13/3Bzff9ucXv/bG51/25wd/9zdXz/bnF7/3d6g/9zdXz/
    +c3Z//3V4gf91eIH/e32D/3V4gf9zdXz/e32D/3d6g/9wc33/e36H/3Z4fP91eIH/dXd9/3V4gf9zdXz/
    +eXuB/3t+h/9wc33/cHN9/3N2f/+Bg4r/bnB3/3V3ff9ucHf/bG51/3h5ff9vcXX/bG95/3V3ff91d33/
    +bG51/2xudf9sbnX/Z2p0/2psc/9maXP/bG95/2dqcf9maXP/cHN9/3d5f/9nanT/cHN9/3N1fP9qbXf/
    +bG51/2xudf9zdXz/c3V8/3l7gf9zdn//cHJ5/3Z4f/9wc3r/aGt1/2ptd/9wc33/amxz/2ptd/9qbXf/
    +am13/3N1fP9rbnX/cHN8/3Fzev9wcnn/dXd9/3Byef9ucHf/c3V8/3Bzff9zdXz/dXd9/2xvef9zdXz/
    +bnB3/3N1fP9ucHf/cHJ5/25wd/9zdn//dXiB/3N2f/9sb3n/bnF7/3N2f/91eIH/g4WM/3V3ff91d33/
    +e32D/3+Bh/97fYP/f4GH/4WHjf97fYP/eXyG/3N2f/9+gYr/foCG/36Ahv99foH/gIKJ/3N1ev9zdX3/
    +dXd+/2lrdf9ucXv/am13/3N1fP91d33/a254/3N1fP9xc3n/amxz/3Bzff9wc33/amxz/2Rncf9qbXf/
    +bG51/2ptd/9qbHP/bnB3/3V3ff9sbnX/amxz/3V3ff93eX//cHJ5/3V3ff9ucXv/cHN9/2xudf9qbXf/
    +bG95/2dqdP9sb3n/bG51/25xe/9wc33/cHN9/2dqdP9qbHP/am13/25wd/91d33/dXd9/3N1fP9ucHf/
    +bG95/3Bzff9zdn//bnF7/2xvef9sb3n/bG95/3d5f/9sb3n/dXd9/25xe/9wc33/c3Z//29xdf9ucHf/
    +dnh8/2psc/91d33/dXd9/25wd/9qbXf/bnB3/2xvef9wc33/bnF7/2dqdP9qbXf/Zmhu/2ptd/9sb3n/
    +bG51/2dqdP9qbXf/bW9z/25wd/92eHz/cHJ5/2Zpc/9wc33/bG95/2xudf9nanT/bnF7/25wd/9qbHP/
    +bnB3/3d5f/9tb3P/cHJ5/25wd/9ucHf/am13/3V3ff9qbXf/cHN9/3Bzff9ucHf/bnB3/3Bzff9maXP/
    +c3Z//3N1fP9sbnX/cHJ5/3N2f/9wcnn/bnB3/25wd/9wcnn/cHJ5/3Byef91d33/bnB3/25wd/92eHz/
    +c3V8/2xudf9qbXf/cHN9/2xudf9sbnX/bnB3/3Byef9qbXf/Z2p0/2Zpc/9ucXv/am13/2Zpc/9maXP/
    +Zmlz/2Jlbv9nanH/Z2p0/2Rncf9maXP/bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/
    +bW9z/2ptd/9ucXv/am13/25xe/9sb3n/bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/
    +bnB3/3Byef91d33/bW9z/21vc/9wcnn/f4GH/21vc/9wc33/am13/25wd/91d33/bG95/2xudf9zdXz/
    +bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/bnB3/3d5f/9wcnn/bnB3/3h5ff93eX//bG51/3V3ff93eX//
    +bnB3/25wd/9ucHf/bnF7/3Bzff93eoP/eXyG/3N2f/97fYP/cnV//21wev9wc33/c3Z//2xvef9ucXv/
    +bnB3/25wd/91d33/cHJ3/3V4gP91eIH/c3Z//3d6g/9zdn//bG95/3N2f/9zdn//dXiB/3d6g/9wc33/
    +cHN9/3Bzff9ucXv/bnF7/3Bzff9wc33/dXiB/3N2f/9zdn//bnB3/21vc/9zdXz/dXd9/35/g/9ucHf/
    +bG95/3V4gf93eX//bnF7/3d5f/93eoP/c3Z//25xe/9qbHP/cHN9/3Byef91d33/c3V8/3l7gf9sbnb/
    +cXR8/3V4gv9wcnz/eXyG/3V3ff99foH/fH6F/3J1f/92eID/cXN6/2hrdf9wc33/dXd9/21vc/9nanH/
    +cHJ5/3l7gf93eX//dXd9/3V4gf95e4H/c3V8/25xe/91eIH/eXyG/3N2f/95fIb/c3Z//3d6g/9wc33/
    +cHN9/25xe/9sb3n/bG95/2xvef9zdn//c3Z//3d5f/9vcXX/bnB3/25wd/9wcnn/dXd9/3N1fP9ucXv/
    +b3F1/2xvef9wc33/d3l//3N2f/9wcnn/cHJ5/2xvef91d33/bnF7/3d5f/9wcnn/d3qD/3d6g/9zdn//
    +c3Z//35/g/91d33/fX6B/31+gf91eIH/dXiB/3l7gf9+gIb/f4GH/36Ahv97fYP/fX6B/3d5f/95e4H/
    +foCG/3d5f/93eX//dnh8/3N2f/91eIH/foCG/3t9g/9ucXv/d3qD/3N2f/9zdn//cHJ5/3V4gf9zdn//
    +cHN9/3V4gf95fIb/cHN9/25xe/9sb3n/bnF7/2ptd/92eHz/Z2p0/3Byef9ucXv/bG95/2xudf9zdXz/
    +amxz/3V3ff9zdXz/am13/25xe/91eIH/c3Z//25xe/9ucXv/cHJ5/25xe/9ucXv/dXd9/2xvef9sb3n/
    +c3V8/25wd/9sbnX/bG51/3Bzff9sbnX/bnB3/2psc/9wcnn/bW9z/2ptd/9nanT/cHN9/25xe/9nanT/
    +ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/
    +dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/
    +bnB3/2xudf9zdXz/d3l//2psc/9qbXf/cHJ5/3+Bh/9sbnX/bnF7/2ptd/9vcXX/dnh8/3Byef9vcXX/
    +dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/bG51/2xudf9wc33/bG51/21vc/94eX3/d3l//21vc/9zdXz/
    +c3V8/2ptd/9sbnX/bG51/25wd/9wcnn/d3l//3N2f/9ucHf/c3V7/3N1fP9vcXj/bG95/3N2f/9ucXv/
    +c3Z//2xvef9ucXv/c3Z//21wev92eYD/eHqB/3V3gP97fof/c3Z//3N2f/97fYP/eXuB/3d6g/97fYP/
    +cHN9/3V4gf95e4H/cHN9/3V4gf91eIH/c3V8/3d6g/95e4H/dXiB/25wd/9wcnn/cHN9/3Bzff97fYP/
    +b3F1/25wd/93eX//c3Z//25xe/93eX//dXiB/25xe/9ucXv/am13/3Bzff9ucXv/dXiB/3Bzff94e4X/
    +b3F4/25xev91d33/aGt0/2xvef9sbnX/c3V8/3N1fP9tcHr/dXd9/3J0ff9wcnn/d3l//3V3ff9sb3n/
    +am13/3Bzff9ucHf/bnF7/2xvef9ucXv/d3l//3Byef9sb3n/c3Z//3l8hv9wc33/eXyG/2xvef9wc33/
    +bG95/3Bzff9ucXv/bG51/2xvef9sbnX/c3V8/3N1fP93eX//b3F1/29xdf9sbnX/bG95/3V3ff9zdXz/
    +am13/2psc/9sbnX/bG95/25xe/9qbXf/Z2p0/2psc/9nanT/dXd9/2ptd/9zdXz/bG51/2xvef9qbXf/
    +bG51/2xudf9zdXz/Z2p0/25xe/9qbXf/amxz/2Zpc/9qbXf/am13/25xe/9sb3n/am13/25xe/9sb3n/
    +bG95/3Bzff9sbnX/bG51/2xudf9sbnX/bG95/3Bzff9sb3n/amxz/3Bzff9sbnX/bG51/2psc/9wc33/
    +cHJ5/25wd/9ucXv/d3qD/3Byef91eIH/bG95/25xe/9qbXf/dXd9/2xvef9wc33/cHJ5/3N1fP9ucXv/
    +cHN9/2xvef91eIH/dXiB/2psc/9sbnX/c3V8/2xvef9ucHf/cHJ5/25wd/9wcnn/bnB3/3V3ff9wcnn/
    +bnF7/3N1fP9zdXz/am13/2xudf9wc33/am13/2psc/9maXP/bnF7/21vc/9ucHf/bnB3/3V3ff9wcnn/
    +bG51/2psc/9ucHf/bG95/3Bzff91d33/bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn//
    +bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/
    +bnB3/2xvef9sb3n/dXd9/3l8hv9ucHf/bnB3/3N2f/+BhI3/c3V8/3N2f/9sb3n/c3V8/3l7gf91eIH/
    +cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/cHJ5/25xe/9ucHf/d3qD/3N2f/9wc33/e36H/36Biv9zdn//
    +eXyG/3l7gf9wc33/c3Z//25xe/9qbXf/bW9z/3V3ff9zdXz/bnB4/3N1fP9xc3j/bnB2/25wd/91d33/
    +cHJ5/25xe/9ucHf/bnF7/25xe/9tb3f/cXR9/3N1fP9vcXn/d3l//3N1fP9qbHP/eHl9/3Z4fP92eHz/
    +dXd9/2xudf9ucXv/cHN9/2xudf9ucXv/bG95/2xudf9ucXv/dXd9/2xudf9ucHf/b3F1/3N1fP9wcnn/
    +e32D/25wd/9tb3P/c3V8/3N1fP9ucHf/dXd9/3V3ff9wcnn/cHJ5/2psc/9sbnX/bG95/3Bzff9wc33/
    +dXd9/2xudf9tcHr/c3V8/2xvef9zdXz/b3F1/3Byef90dnz/bnB3/3J0ev9wc3v/bG95/3V4gf9zdn//
    +bG95/2xvef9ucXv/c3Z//25xe/9nanT/cHJ5/3d5f/9vcXX/Z2px/3V3ff94eX3/bnB3/3l7gf9sbnX/
    +bG51/21vc/9zdXz/bnF7/25wd/9ucHf/bG95/3Byef9wcnn/dXd9/25wd/9vcXX/b3F1/25wd/91d33/
    +bnF7/25xe/9sbnX/am13/25xe/9wc33/bG95/2dqdP9sbnX/amxz/3Z4fP9ucHf/bnF7/25wd/9wc33/
    +bnB3/25wd/9vcXX/dnh8/25wd/92eHz/cHJ5/21vc/9ucHf/bnB3/3Byef9zdn//dXiB/3N2f/93eoP/
    +cHN9/3Bzff9wc33/bG95/2xudf9sbnX/bG51/25wd/9wc33/bnF7/2Zpc/9sb3n/amxz/2dqdP9kZ3H/
    +bG95/2ptd/9maXP/bnB3/3V3ff9sbnX/bG95/2xudf9ucXv/Z2p0/3N1fP9nanT/bG95/2xvef9ucXv/
    +am13/2xvef9nanH/dXd9/3Byef9maXP/am13/25xe/9ucHf/am13/2xudf9tb3P/bG95/2psc/9ucXv/
    +bnF7/2ptd/9wc33/cHN9/2Zpc/9sbnX/cHN9/2ptd/9qbXf/Zmlz/2ptd/9sbnX/Z2p0/2ptd/91d33/
    +bnF7/21vc/9nanH/bG51/2dqdP9qbXf/bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/
    +am13/2psc/9sb3n/bG51/2xvef9wc33/am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/
    +c3Z//25wd/9qbXf/Z2p0/3Bzff95fIb/cHJ5/3N1fP9zdn//g4WM/3N1fP9wc33/am13/25wd/9zdXz/
    +cHJ5/2xudf94eX3/cHJ5/2xudf9qbXf/am13/2xudf9sbnX/am13/3N1fP9ucXv/b3F1/3d5f/91d33/
    +am13/3N1fP9wc33/Z2p0/2xvef9sbnX/bnB3/2ptd/94eX3/c3Z//25xe/92eYP/c3V8/21vdv9ucHf/
    +cHN9/2xvef9sbnX/bG51/2xvef9rbnj/bXB6/3J1fv9ydX7/dHeA/3d6g/91eIH/cHN9/3t+h/97fYP/
    +e36H/3l8hv9wc33/eXuB/3d6g/9ucHf/cHN9/25xe/9wcnn/dXiB/3d6g/9wc33/bnB3/25wd/9wc33/
    +cHN9/3t9g/9sb3n/bW9z/3V3ff91d33/cHJ5/3l7gf94eX3/cHJ5/25xe/9qbXf/bnB3/25wd/91eIH/
    +d3qD/3p8gv9xc3v/cHN9/3R3fv9ucHf/bnF7/25wd/9zdn//c3Z//25xe/9zdXv/bnF7/25wd/9zdn//
    +dXd9/25wd/9qbHP/bG51/3N2f/9sb3n/am13/2xvef93eX//bnB3/2ptd/9zdn//eXuB/3Byef95fIb/
    +bnF7/25xe/9wcnn/c3Z//3Bzff9ucHf/bnB3/3Bzff9wcnn/cHJ5/3V4gf9ucXv/bnB3/29xdf9ucXv/
    +dXd9/3N2f/9zdn//bnB3/2xvef9zdXz/dnh8/3V3ff9ucHf/cHJ5/25wd/92eHz/b3F1/3Byef9sbnX/
    +am13/2ptd/9sbnX/am13/3N1fP9nanT/cHJ5/2psc/9nanT/Z2p0/2dqdP9qbXf/bG95/25xe/9qbHP/
    +am13/2ptd/9nanT/Z2p0/2Zobv9kZ3H/Z2p0/2xudf9qbXf/cHN9/3N1fP9sbnX/bnB3/2xudf9ucHf/
    +Z2p0/3N2f/91eIH/bnB3/3Byef93eX//bnB3/3Byef9sbnX/cHJ5/2ptd/93eX//bG95/2xvef91eIH/
    +c3Z//29xdf9wcnn/amxz/3V3ff9ucXv/amxz/25wd/9ucXv/am13/3Byef9tb3P/bG51/2xvef9qbHP/
    +bnF7/25xe/9sbnX/dXd9/3Bzff9nanT/bG51/25xe/9sbnX/amxz/2Rncf9nanT/Z2p0/2Zpc/9maXP/
    +dXd9/25xe/9qbHP/YmVu/2xudf9qbXf/bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/
    +cHJ5/25xe/9wcnn/d3l//29xdf91eIH/dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/
    +cHN9/3V4gf9ucXv/bG95/2ptd/9wc33/d3l//2xudf9ucHf/c3V8/35/g/9ucHf/bnB3/2dqdP9sbnX/
    +cHJ5/25xe/9sbnX/cHN9/3Byef9tb3P/bG95/2xudf9vcXX/bnB3/2xvef9zdn//bnF7/2xvef95fIb/
    +eXuB/25xe/95e4H/eXuB/3N1fP91eIH/d3qD/3N2f/9wc33/e32D/3N2f/9tcHn/d3qD/3N1ff9tcHr/
    +cHN9/3d6g/9zdn//bG95/25wd/9ucHf/c3V8/3Byev9xdH7/dnmC/3R3gP97fof/eXuB/25xe/95fIb/
    +d3l//3l7gf95e4H/bnB3/3d5f/93eoP/c3V8/3l7gf93eoP/c3Z//3l8hv93eoP/dXiB/3N1fP9zdXz/
    +c3Z//3V4gf95fIb/cHN9/2xvef91d33/dXd9/3Byef93eX//eHl9/3Byef9ucHf/Z2p0/2xvef9ucXv/
    +dXd9/3Z4fP91d33/a211/2ttdv9zdXv/a210/25xe/9tb3P/bnF7/25xe/9tb3f/cXR9/3J0ff9sb3n/
    +c3Z//3V3ff9ucXv/am13/25xe/9sb3n/amxz/2Zpc/9sb3n/dXd9/2ptd/9kZ3H/bG95/3Byef9nanH/
    +c3V8/2Zobv9sbnX/bG51/2ptd/9nanT/ZGdx/2Zpc/9maXP/ZGdx/2Zpc/9wcnn/Z2p0/2Jlbv9maXP/
    +Z2p0/3Bzff9sb3n/bnF7/2psc/9qbXf/bnF7/3V3ff9wc33/am13/25wd/9qbHP/dnh8/25wd/9wcnn/
    +bnF7/3Bzff9zdXz/cHN9/3N1fP95e4H/bnB3/3V3ff9ucXv/bG95/2xvef9ucXv/bG51/25wd/91d33/
    +bnB3/25xe/9ucXv/am13/25xe/9sbnX/Z2p0/2xudf9nanT/Z2p0/2dqdP9sb3n/YmVu/2dqcf9nanH/
    +ZGdx/2Jlbv9ucXv/Z2p0/2Zpc/9sbnX/c3V8/2xudf9sb3n/bG51/2xvef9kZ3H/c3V8/2xudf9sb3n/
    +c3Z//2xvef9vcXX/bnB3/2psc/91d33/bnB3/2xudf9qbXf/cHJ5/2ptd/9wc33/bG51/2xudf9ucHf/
    +bG51/25xe/9ucXv/am13/3N1fP9wc33/Zmlz/2dqcf9qbXf/Z2p0/2psc/9maXP/am13/2ptd/9sbnX/
    +bG51/3Z4fP9sbnX/bnB3/2dqdP9ucHf/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn//
    +am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/
    +c3V8/2psc/9wcnn/am13/2dqdP9qbHP/bnB3/3d5f/9tb3P/bG51/3V3ff9+f4P/bnB3/3Byef9ucHf/
    +b3F1/3V3ff9wc33/bG95/3Bzff9zdn//cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/3l7gf95e4H/
    +g4WM/36Ahv97fYP/foCG/36Ahv9zdn//dXiB/3V4gf9wcnn/bnB3/3h5ff91d33/a254/3x+hf9ydX7/
    +b3J6/3R3gP95e4H/cHN9/2xvef9vcXX/bnF7/3N2f/9tcHr/b3F4/3Fzev9sbnX/dnh8/3V3ff9nanT/
    +dXd9/25xe/9zdXz/bnF7/2dqdP9wc33/cHN9/2xudf9sb3n/amxz/2dqcf9nanT/Z2p0/2ptd/9qbHP/
    +Z2px/2xvef9nanT/c3Z//2Zpc/9kZ3H/Z2p0/2xvef9qbHP/cHJ5/3Byef9maXP/bG51/2dqdP9qbHP/
    +am13/3Bzff9wc33/dnh//2ttdf9qbXX/cXN6/2ptd/9ucXv/Z2px/2ptd/9rbXf/bnF4/3J1fv91eID/
    +bnF6/3l7gf91eIH/bnB3/2Rncf9sb3n/cHJ5/29xdf9qbHP/cHJ5/3Z4fP9nanT/Z2p0/2ptd/91d33/
    +b3F1/3d5f/9tb3P/bG51/2xvef9wcnn/bnB3/2ptd/9sb3n/am13/2ptd/9nanT/cHJ5/2dqdP9nanT/
    +Z2p0/25xe/91d33/bG95/2xvef9nanH/bG51/2xvef9zdXz/bnF7/2psc/9qbXf/Zmlz/3Bzff9qbXf/
    +am13/2xvef9nanT/Z2px/2xudf9nanH/bG95/2dqdP91d33/bG51/2Zpc/9maXP/am13/2Zpc/9qbXf/
    +cHJ5/2dqdP9sb3n/cHN9/2dqdP9qbXf/Z2px/2dqdP9qbXf/Zmlz/2dqdP9nanT/am13/2Rncf9qbHP/
    +amxz/2psc/9kZ3H/cHN9/2ptd/9qbHP/am13/3Byef9qbHP/am13/2psc/9maXP/YGNs/25xe/9nanH/
    +am13/3Bzff9sbnX/am13/2psc/9nanT/bnF7/2ptd/9zdn//c3Z//3l8hv93eX//fn+D/3N2f/9zdn//
    +eXyG/3V3ff93eoP/d3qD/25xe/95e4H/c3Z//2ptd/9ucHf/dXiB/3N2f/9wc33/bG95/25xe/9sb3n/
    +bnB3/3Byef97fYP/c3Z//25xe/9nanT/bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/
    +bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/
    +cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/bG51/25xe/91d33/bW9z/2xudf9wcnn/fX6B/2xvef9qbXf/
    +Z2p0/2dqdP9ucXv/bnF7/2ptd/9sb3n/bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9qbXf/
    +Z2p0/3Byef9wcnn/ZGdx/25wd/9sb3n/Zmhu/2xvef9maXP/cHJ5/21vc/91d33/dXd9/2xudf93eYD/
    +b3J5/2ptd/9sb3n/bnF7/2xvef9tb3P/bW9z/25wd/9zdXz/bnB3/3Bze/9zdn3/b3F1/3V3ff91d33/
    +Z2px/3d5f/9ucXv/dnh8/3Byef9ucHf/dnh8/3N1fP9sb3n/bnF7/2xvef9qbHP/bnF7/25xe/9sbnX/
    +b3F1/25wd/9zdn//bnB3/3t9g/9zdXz/bnB3/3V3ff9zdn//bnF7/3V4gf91d33/cHN9/25wd/9ucHf/
    +b3F1/2xudf9wcnn/dXd9/3h5ff9ucHf/bnF6/3V2fP9tb3T/cHN9/25wd/9wc33/cHJ5/29xeP9xdHz/
    +cnR6/2xudf9zdXz/bnF7/2ptd/9kZ3H/bG95/25xe/9ucHf/bG95/3Bzff95e4H/bnF7/25wd/9sb3n/
    +dnh8/2xudf93eX//bG51/2xudf9qbXf/am13/2xudf9maXP/am13/2ptd/9qbXf/am13/3N1fP9qbXf/
    +Zmlz/2psc/91d33/dnh8/3N1fP91d33/bG51/2dqcf9ucXv/cHN9/3Byef9sbnX/bnB3/2ptd/91d33/
    +bnB3/3V3ff9sb3n/cHN9/25wd/9ucHf/am13/25wd/9ucHf/d3l//29xdf9sbnX/bG51/2ptd/9wc33/
    +cHN9/3Bzff9sb3n/bG51/3Bzff9qbXf/bG95/2xudf9nanT/bG95/2xudf9nanH/Z2p0/2ptd/9nanT/
    +Z2p0/2dqdP9sbnX/Z2p0/25xe/9qbXf/amxz/3Bzff93eX//bnB3/3Byef9sb3n/c3Z//2ptd/9zdn//
    +cHJ5/3Bzff97fYP/c3Z//3d6g/9zdn//dXd9/3d6g/9zdn//bnB3/3Byef9ucHf/cHJ5/3N1fP9ucHf/
    +b3F1/3N1fP9tb3P/cHJ5/3N1fP9sbnX/bnF7/3N1fP9qbXf/bnB3/3V3ff9zdXz/c3V8/25wd/9vcXX/
    +cHJ5/2xudf9qbXf/c3V8/25wd/9ucHf/Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/
    +cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/
    +bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/bG51/2psc/9wcnn/dnh8/21vc/9sbnX/cHJ5/3l8hv9ucHf/
    +dXd9/25wd/9sb3n/dXd9/3V3ff9sb3n/bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/
    +d3qD/3V4gf93eoP/d3qD/3V4gf93eoP/eXuB/3Byef91eIH/c3Z//3Byef9vcXX/eXuB/3Z4fP9tb3b/
    +d3qD/3N1fP9ucHf/bnF7/3N1fP9zdXz/b3F1/29xdf9vcXX/cHJ5/25wd/9tb3j/b3J5/21vc/91d33/
    +dXd9/2dqdP91eIH/bnF7/3N1fP9nanT/Zmlz/25wd/9qbXf/Z2p0/2dqdP9maXP/ZGZs/2Zobv9nanT/
    +Zmhu/2Rncf9maG7/Zmlz/2Rncf9wc33/Zmlz/2Rncf9sb3n/bG95/2psc/91d33/cHN9/25xe/9qbXf/
    +am13/2psc/9sbnX/bG95/3V3ff9ydHz/bG5z/21vdP9wc3z/amx0/2xvef9qbXf/am13/2ptd/9rbXT/
    +a252/21wef9sbnX/dnh8/3Byef9ucHf/amxz/25wd/9ucXv/bnB3/2xudf9ucHf/c3V8/2Zpc/9nanH/
    +bG51/3N1fP9ucHf/d3l//2xudf9vcXX/bG51/2xvef9wc33/bnF7/3l7gf93eoP/cHN9/25xe/94eX3/
    +bnB3/2xudf9qbHP/dXd9/3Z4fP91d33/eHl9/25wd/9vcXX/c3V8/3Byef9zdXz/bnB3/25wd/9sbnX/
    +eHl9/29xdf91d33/bG95/2ptd/9qbXf/bG51/2dqdP9sb3n/ZGdx/3d5f/9qbXf/ZGdx/2Rncf9sb3n/
    +cHJ5/3Byef9wcnn/cHJ5/25xe/9zdn//bnF7/3Bzff9ucHf/b3F1/3N1fP9sbnX/bG51/2xvef9zdXz/
    +b3F1/3Byef9sbnX/b3F1/2xudf9zdXz/bnF7/3Bzff91eIH/e32D/3N2f/9zdn//c3V8/3d6g/9qbXf/
    +cHN9/25wd/9ucHf/eHl9/3N1fP9ucHf/bnB3/25wd/9sb3n/cHJ5/2ptd/9sb3n/bG95/3Byef9zdXz/
    +am13/2xudf9wcnn/bW9z/25wd/9sb3n/amxz/3V3ff9zdXz/bG51/2xudf9zdXz/cHJ5/2xvef9tb3P/
    +am13/3N1fP9ucHf/bnB3/3V4gf9ucXv/c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/
    +cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/
    +bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/cHJ5/2xudf9ucHf/cHJ5/3h5ff9vcXX/bnB3/3Bzff97fof/
    +c3Z//3V4gf9ucHf/bnF7/3l7gf91eIH/am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/
    +c3V8/3N1fP9zdXz/dnh8/3Z4fP9zdXz/dXd9/3N1fP9sbnX/bnF7/2ptd/9wc33/bG95/3d6g/91d33/
    +bnB3/3l6gP9wc3v/bW91/3Bzff9ucXv/bnF7/2dqdP9sb3n/am13/3Byef9ucHj/bW94/3Byef9ucHf/
    +dXd9/3V3ff9sb3n/d3qD/3V4gf97fYP/c3Z//2xvef91eIH/c3Z//3N2f/9zdn//dXiB/2xvef9wc33/
    +dXd9/25wd/9vcXX/cHJ5/3N1fP9sbnX/e32D/25wd/9qbXf/dXd9/3V3ff9tb3P/dXd9/25xe/9sb3n/
    +Zmlz/2Rncf9maG7/amxz/2dqdP9ucHf/am13/2Zobv9pa3H/cHN5/21vdP9zdXz/bG51/3Byef9wcnn/
    +a211/2tudv9ucHn/aGt0/3V3ff9sb3n/Z2p0/2Zpc/9ucXv/am13/2xudf9maXP/bG95/3Bzff9kZ3H/
    +YmVu/2xudf9zdXz/bG51/3V3ff9ucHf/bnB3/25xe/9ucHf/bnB3/2psc/92eHz/cHJ5/25wd/9sb3n/
    +d3l//3Byef9sbnX/bG51/3Byef92eHz/c3V8/3h5ff9ucXv/bnB3/3V4gf91eIH/dXiB/3Bzff9zdn//
    +cHJ5/3d5f/9sb3n/dXd9/3Bzff9wcnn/cHJ5/21vc/9ucHf/cHN9/2ptd/93eoP/bnB3/2psc/9nanH/
    +b3F1/3N1fP9ucHf/cHJ5/3Byef9ucHf/dXd9/25xe/9ucXv/amxz/21vc/9wc33/bG51/29xdf9wcnn/
    +cHJ5/25wd/9ucHf/bnB3/21vc/9qbXf/bG95/25wd/9ucHf/c3V8/3h5ff9sbnX/c3V8/2dqdP91d33/
    +ZGdx/25xe/9qbXf/bnB3/3h5ff9wcnn/bG51/21vc/9qbXf/am13/2xudf9sbnX/bG95/2xvef9ucXv/
    +c3V8/2dqdP9sbnX/am13/2dqcf9nanT/Z2p0/2Zobv9qbXf/am13/2Rncf9qbHP/am13/2xvef9sb3n/
    +Z2px/2Zpc/9wc33/am13/2xudf91d33/cHJ5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/
    +cHN9/3Byef9wc33/c3Z//25xe/9ucHf/bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn//
    +d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/d3qD/3d6g/9wc33/c3V8/3N1fP95fIb/cHN9/3Bzff9zdn//
    +e36H/3Bzff9zdn//bG95/2xudf91d33/c3Z//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/
    +cHJ5/25xe/9zdn//dXiB/3d5f/95e4H/d3qD/3d6g/93eX//cHJ5/3N2f/93eoP/cHN9/2ptd/91d33/
    +cHN9/2hrcv91eID/b3J7/2xueP9zdn7/cHN9/3Byef9ucHf/bnF7/2xvef9ucXv/cHJ6/21wef9tb3f/
    +bG51/3N1fP9wc33/Zmlz/3V3ff9nanT/cHN9/25xe/9nanT/c3V8/25xe/9sb3n/bnF7/25xe/9qbXf/
    +bG51/25xe/9nanH/Zmhu/2dqcf9nanT/ZGdx/3V3ff9qbHP/Z2px/25wd/9sb3n/Zmhu/25xe/9qbXf/
    +bnF7/2Zpc/9qbHP/amxz/2xvef9sb3n/cHJ5/3Byef9oa3X/bG51/29ye/9tcHr/c3Z//25wd/9ucXv/
    +dHZ9/21vd/9tb3b/b3F6/2xudf92eHz/dXd9/25wd/9maXP/cHJ5/2ptd/9sbnX/bG51/25wd/9zdXz/
    +am13/2RmbP9tb3P/dXd9/2xudf92eHz/bW9z/2xudf9zdXz/bG51/2xudf9qbHP/dXd9/2xudf9ucHf/
    +bnF7/3V4gf9wc33/am13/2dqdP9zdn//dXd9/3Bzff92eHz/bnF7/2ptd/9zdn//c3V8/3Byef9sbnX/
    +cHJ5/2xudf91d33/am13/3Bzff9zdXz/cHJ5/3Byef9sbnX/amxz/25wd/9nanT/dXd9/2dqdP9kZ3H/
    +ZGdx/2dqcf9qbXf/amxz/25xe/9qbHP/am13/3N1fP9sb3n/bnF7/21vc/9sbnX/bnF7/2xudf9sbnX/
    +bG95/2xvef9qbXf/bG51/2xudf9vcXX/b3F1/25wd/9ucXv/bnF7/3V4gf95e4H/bnF7/3d5f/9wcnn/
    +d3l//2dqdP9zdn//cHJ5/3Byef93eX//bnF7/2xvef9qbXf/b3F1/29xdf9vcXX/bG51/29xdf9sbnX/
    +c3Z//3N2f/9ucXv/bnB3/3Bzff9zdn//c3Z//3N2f/9ucXv/dXiB/3V4gf9sb3n/bnB3/3Bzff9wc33/
    +cHN9/3Byef9wcnn/d3qD/25xe/9sb3n/eHl9/3Byef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/
    +ZGdx/2xudf9nanT/bG51/2xudf9sbnX/Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX//
    +Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/bnB3/3N1fP9zdn//Z2p0/29xdf9vcXX/dXd9/2xudf9ucHf/
    +dXd9/3t9g/9ucHf/cHJ5/2ptd/9nanT/bnF7/3Bzff9maXP/bG51/3Bzff9nanT/am13/2ptd/9sb3n/
    +am13/2psc/9nanH/am13/2xvef9wc33/cHJ5/2xvef9wc33/bnF7/2psc/9sb3n/bG95/3Bzff9qbXf/
    +d3l//3d5f/9oa3L/d3l//3N1e/9sb3n/b3J8/3d6g/91eIH/cHN9/3d6g/9zdn//dnmC/3J1fP9rbnf/
    +aWx2/2dpb/9qbXf/Z2p0/2Rncf9ucHf/Zmlz/2dqdP9nanT/ZGdx/25wd/9kZ3H/Zmhu/2dqdP9qbXf/
    +ZGdx/2Rncf9nanT/Z2p0/2dqcf9nanH/Z2p0/2Jlbv9wcnn/amxz/2psc/9zdXz/bnF7/2xudf92eHz/
    +bnF7/2xvef9maXP/amxz/2psc/9ucXv/bG95/3Z4fP91d33/bG95/2xveP9ydH3/cXN7/3V4gf9wcnn/
    +c3Z//3R3gP9ucHf/bG93/21wef9oa3X/dXd9/25xe/9sbnX/bG51/3Byef9sb3n/bnF7/3N1fP9wc33/
    +c3Z//2xvef9nanH/bnB3/3d5f/9sb3n/d3qD/2xvef9wc33/dXiB/25wd/9sb3n/bG51/3V3ff9ucHf/
    +bG51/2xvef91d33/bnF7/2ptd/9maXP/c3V8/3N1fP9wcnn/dnh8/2xudf9sbnX/c3V8/25xe/9wc33/
    +bnF7/3Bzff9zdXz/dXiB/25xe/91eIH/dXiB/3Bzff91eIH/dXiB/3Bzff97fYP/c3Z//36Biv91d33/
    +am13/2xvef9ucXv/cHN9/2xvef9zdXz/bnB3/3Bzff91d33/cHJ5/3Bzff9qbHP/amxz/25xe/9qbHP/
    +Z2px/2xvef9sb3n/bG51/2xudf9nanT/bG51/2psc/9sb3n/am13/2xvef91d33/dnh8/2ptd/9zdXz/
    +bG51/25xe/9kZ3H/bG95/2xudf9sbnX/dXd9/2xvef9qbXf/am13/29xdf9ucHf/b3F1/2xudf9ucHf/
    +b3F1/3N1fP9zdXz/cHJ5/3N1fP92eHz/cHJ5/3Byef9zdXz/bG51/3V3ff9zdXz/amxz/21vc/9ucXv/
    +bG95/2xvef9nanT/Z2px/2ptd/9nanH/Z2px/25xe/9nanT/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/
    +ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/
    +dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3N1fP9qbXf/
    +bG51/3V3ff97fYP/b3F1/3N1fP9sbnX/bG51/25wd/9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn//
    +c3V8/21vc/9ucHf/bG51/3Byef9zdXz/dnh8/3Z4fP9zdXz/dnh8/3N1fP9ucHf/c3V8/3Byef9zdXz/
    +am13/3h5ff93eX//b3F1/3p9g/9vcnr/bW92/25xe/9zdXz/cHN9/2xudf9sb3n/am13/2xudf9qbXb/
    +a254/2tud/9sb3n/c3V8/3Byef9vcXX/d3l//3V3ff9zdXz/cHJ5/29xdf92eHz/cHJ5/25wd/9wcnn/
    +cHN9/25wd/9ucHf/c3V8/3N1fP9tb3P/bG51/2xvef9nanT/c3V8/2xudf9sb3n/dXd9/3Byef9ucHf/
    +d3l//3Byef9zdXz/amxz/25wd/9sb3n/dXd9/3N2f/93eX//dXd9/3J1fv9sb3j/bW94/2psc/9wc33/
    +amxz/2ptd/9sb3n/aGtz/2ttdf9vcnz/bW92/3h6gP9zdn//c3V8/25wd/9zdXz/Zmlz/2Rncf9gY2z/
    +Zmhu/2Zpc/9gY2z/XWBq/2Rncf9sb3n/ZGdx/3Byef9kZ3H/am13/2dqdP9iZW7/Zmhu/2Jlbv9nanT/
    +amxz/2psc/9sbnX/c3V8/25xe/9qbXf/Z2p0/2xvef9ucXv/c3V8/3V3ff9sbnX/bnB3/3N1fP9sb3n/
    +cHN9/25xe/9wc33/cHJ5/3V4gf9zdXz/c3Z//3V4gf9zdXz/c3Z//3N2f/9ucXv/d3qD/25wd/95e4H/
    +am13/2ptd/9qbXf/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/eXyG/3N2f/91eIH/bnB3/25wd/92eHz/
    +bnB3/29xdf91d33/c3Z//25xe/9wcnn/am13/2xvef9ucHf/bG95/2xvef9ucXv/dXd9/3Z4fP9vcXX/
    +dnh8/2ptd/9ucXv/YGJo/2psc/9qbXf/bG51/3d5f/9tb3P/bW9z/2xudf9vcXX/bG51/2xudf9ucHf/
    +bG51/29xdf91d33/dXd9/3N1fP9sbnX/dXd9/25xe/9qbXf/cHN9/2psc/9sb3n/Z2p0/2Rncf9maG7/
    +ZGdx/2Zpc/9nanT/Zmhu/2dqcf9sb3n/am13/21vc/92eHz/cHJ5/2xudf9sbnX/Zmlz/2psc/9nanT/
    +am13/2xudf9maXP/bnF7/2dqdP9tb3P/cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/
    +bG51/3Byef9iZW7/am13/2ptd/9sb3n/Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/
    +Z2p0/2Zpc/9sb3n/c3Z//2ptd/9ucXv/am13/2psc/9ucXv/cHN9/2dqdP9sb3n/bnB3/25wd/9wcnn/
    +cHJ5/3N1fP9sbnX/am13/2ptd/9ucXv/c3V8/3h5ff9zdXz/cHJ5/3Bzff9ucXv/bnB3/3N1fP9ucXv/
    +d3l//2xvef92eHz/eXuB/2xudf96fIP/bnF5/2xudf9sb3n/c3V8/25xe/9nanT/Z2p0/2xudf9sbnX/
    +bW93/21veP9vcXn/am13/3Byef9wcnn/am13/3V4gf9wc33/c3V8/2xvef9sbnX/c3V8/3Byef9wcnn/
    +cHJ5/3V3ff9wcnn/bnB3/25wd/9sb3n/bG95/2ptd/9nanT/Z2p0/3Bzff9sbnX/amxz/3N2f/9sb3n/
    +Z2p0/25xe/9qbXf/bnF7/2dqcf9tb3P/bG51/3h5ff9wc33/c3Z//3d5f/9ucXv/a251/2lsdv9nanT/
    +bnF7/2psc/9qbXf/bnF7/21vd/9ucXv/cHN8/2xudf93eX//cHJ5/21vc/9tb3P/c3V8/3N1fP9wcnn/
    +bG95/2xvef9zdn//am13/2dqdP9wc33/eXuB/3Bzff97fYP/c3V8/3N2f/9zdn//bG95/2xvef9sbnX/
    +c3V8/25wd/9ucHf/bG51/3V3ff9ucXv/bG51/2psc/9wc33/cHN9/3N1fP93eoP/bnB3/29xdf9wc33/
    +bG95/2ptd/9qbHP/amxz/2Zpc/9sb3n/bG51/2xvef9ucXv/am13/2xvef9qbXf/bG51/3V3ff9sbnX/
    +d3l//2ptd/9maXP/Zmlz/2ptd/9qbXf/Zmlz/2psc/9maG7/Z2p0/3Byef9qbHP/bG95/2dqcf9nanT/
    +bG95/2Jlbv9gY2z/Zmlz/2Zpc/9maG7/Zmhu/2dqdP9kZ3H/Z2px/2dqcf9qbXf/am13/3Bzff9wc33/
    +bG51/3N1fP9sbnX/c3V8/2Vmav9ucHf/bG51/2xudf95e4H/b3F1/29xdf9qbHP/bW9z/21vc/9ucXv/
    +bnB3/3Byef9ucHf/d3l//3V4gf95e4H/dXiB/3l7gf9wc33/dXiB/3d6g/9wc33/eXuB/3l7gf9ucXv/
    +cHJ5/3Bzff9ucXv/cHN9/25wd/9ucHf/c3Z//25xe/9ucXv/eXuB/3V4gf9wc33/cHJ5/2xvef9wc33/
    +c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/
    +e36H/3N2f/97fYP/cHN9/3t9g/9zdn//c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/
    +dXd9/2xudf9ucHf/cHN9/3t9g/9ucXv/cHN9/25wd/9sbnX/bnF7/25xe/9qbHP/bG51/25wd/9ucHf/
    +bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/cHN9/3N2f/93eoP/c3Z//3V4gf91eIH/cHN9/25xe/9wc33/
    +cHJ5/3Z4fP9wcnn/d3l//3t+h/9ucXv/fX+G/3Fze/9rbnf/cHJ5/3N1fP9zdXz/bG95/2ptd/9qbHP/
    +aGpx/2ptdP9sb3n/cnV+/21wev91eIH/c3Z//3Byef9/gYf/d3qD/3l7gf9zdn//cHN9/3V4gf9zdn//
    +c3Z//3t9g/93eoP/eXuB/3V4gf9zdn//dXiB/3N2f/9sb3n/bnF7/2xvef95e4H/cHN9/3N2f/95fIb/
    +cHN9/29xdf9wc33/bG95/3N1fP9maXP/bW9z/3Byef92eHz/dnh8/3V4gf94eX3/cnR7/21veP9vcXj/
    +a21z/3Z4fP9sbnX/bnF7/2xvef9rbnX/b3J6/3F0ff9qbXf/dXiB/3N2f/9sb3n/cHJ5/3Bzff9zdn//
    +cHN9/2xvef9ucHf/dXd9/2psc/9qbHP/cHJ5/3N1fP9vcXX/dnh8/25wd/9wcnn/c3V8/2ptd/9wcnn/
    +cHJ5/3d6g/9wc33/bnF7/2xvef91d33/c3V8/21vc/9tb3P/dXd9/3Bzff9zdXz/c3Z//2xudf9nanT/
    +bnF7/2ptd/9qbXf/Z2p0/2psc/9qbHP/bG95/2xudf9wc33/bnF7/2ptd/9ucXv/bG51/2dqdP9ucXv/
    +Zmlz/3V4gf9qbXf/Zmlz/2psc/9tb3P/bG51/2psc/9sbnX/am13/25xe/91d33/b3F1/3Byef9vcXX/
    +cHJ5/3Z4fP9ucHf/am13/3Byef9wcnn/bG51/2ptd/9sbnX/am13/2ptd/9nanT/cHN9/25wd/91d33/
    +dXd9/2xudf91d33/bG51/3V3ff9nanH/cHJ5/2xvef9sb3n/eXuB/25wd/9ucHf/Z2px/21vc/9tb3P/
    +c3V8/2psc/9tb3P/bG51/3V3ff9wcnn/dnh8/3Bzff92eHz/cHJ5/25xe/91eIH/bnF7/3V4gf9wc33/
    +am13/25wd/9wc33/bnF7/3Bzff9vcXX/bnB3/3V4gf9ucXv/cHN9/3d5f/9wc33/cHJ5/2xvef9qbXf/
    +cHN9/25xe/9ucXv/c3V8/2ptd/9zdn//bnB3/2xudf91d33/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/
    +cHJ5/3V3ff9tb3P/dXd9/2dqdP9zdXz/am13/2xvef9sb3n/am13/2Rncf9sb3n/am13/2Jlbv9qbHP/
    +am13/3N1fP9qbHP/bG51/3Byef9+gIb/cHJ5/3Byef9sbnX/bG51/25wd/9wc33/Zmlz/2ptd/9qbXf/
    +am13/2ptd/9ucXv/dXd9/3Byef9vcXX/b3F1/3N1fP9zdXz/eXuB/25wd/9zdXz/cHJ5/2xvef9sb3n/
    +cHJ5/2ptd/91d33/bG51/3V3ff95e4H/b3F1/36Bif9ydHv/bG52/3N1fP9zdXz/dnh8/3V3ff9ucHf/
    +bG51/25wd/9rbnj/cXN6/3V3gP9wcnn/cHN9/3N2f/9zdXz/f4GH/25xe/95e4H/cHN9/3N1fP95fIb/
    +d3qD/3Bzff93eoP/cHN9/3N2f/9ucXv/bnF7/3Bzff9wc33/bnF7/3Bzff9wcnn/d3qD/3Bzff9wc33/
    +d3qD/3V4gf9wc33/dXiB/3V4gf91eIH/am13/3Bzff9wc33/eXuB/3N2f/95e4H/eXuB/3Z4gf9vcnz/
    +b3J4/21wev91d33/bnB3/3Bzff91eIH/b3J5/3Bzff9xc3r/bnB3/3d5f/9zdn//bG95/2xvef9ucXv/
    +dXd9/3Byef9qbXf/bW9z/3V3ff9nanH/bG51/25xe/9ucXv/bW9z/3Z4fP9sbnX/bG95/25xe/9nanT/
    +bG51/2ptd/9wc33/bG51/25wd/9ucHf/cHJ5/25xe/9sbnX/bG51/3V3ff9zdXz/dXd9/3l7gf9wcnn/
    +bnB3/3V4gf9wc33/cHN9/2xvef9ucHf/am13/25xe/9sb3n/c3Z//3N2f/9sb3n/bnB3/25wd/9sbnX/
    +c3V8/2xudf97fYP/bnB3/2xudf9qbXf/am13/25wd/9nanT/am13/2dqdP9sb3n/dXd9/2psc/9qbXf/
    +Z2p0/2xudf91d33/bG51/2dqdP9wcnn/cHN9/2xudf9qbHP/am13/2ptd/9sb3n/Z2p0/2xvef9nanT/
    +bG95/2xvef9maXP/am13/2psc/9ucXv/YmVu/2xudf9nanT/am13/3V3ff9qbXf/am13/2Rncf9sbnX/
    +am13/2ptd/9ucHf/bnB3/2ptd/91d33/c3Z//3V3ff9wc33/dXd9/3Bzff9wc33/c3Z//25xe/91eIH/
    +cHN9/2xudf9ucHf/bnB3/25wd/9wcnn/bG51/2xudf9wcnn/bG51/3Byef94eX3/bG51/2xudf9nanT/
    +ZGdx/2xudf9sb3n/cHJ5/3Byef9tb3P/bnF7/2psc/9qbHP/cHN9/25xe/9sbnX/am13/25xe/9ucXv/
    +am13/2xvef9wc33/bW9z/3V3ff9nanH/c3V8/25xe/9wcnn/c3V8/3N1fP9qbHP/bnB3/25xe/9qbHP/
    +amxz/2psc/9ucXv/Zmlz/2psc/9sb3n/dXiB/2ptd/9ucXv/am13/2xudf9sbnX/c3V8/2Zpc/9qbXf/
    +bnB3/25wd/9zdXz/c3V8/3N1fP9sb3n/bG51/2ptd/9wcnn/cHJ5/3l7gf9ucHf/dXd9/25wd/9zdXz/
    +bG51/25xe/9sbnX/c3V8/2ptd/92eHz/dXiB/2xudf97fYT/cXN6/2dqc/9qbXf/am13/3Bzff91d33/
    +bnB3/2xvef9sb3n/bG94/21wd/91d3z/bG51/3Byef9ucHf/bG51/3l7gf9qbXf/dXd9/2xudf9nanH/
    +d3l//2ptd/9sb3n/bnF7/2ptd/9ucXv/amxz/2xudf9qbXf/bG95/3Byef9ucHf/bG51/3V3ff9sb3n/
    +bnB3/3d6g/9wc33/bnF7/3N2f/9ucXv/bnF7/2dqdP9sb3n/bnF7/3l7gf91eIH/d3qD/3Z4fP9ydHv/
    +a252/2xudP9qbHP/c3V8/21vc/9wcnn/cHJ5/25wd/9sbnX/a212/2Nmb/9sb3n/Z2p0/2Zpc/9sbnX/
    +bG95/3V3ff9ucXv/bG95/29xdf93eX//Zmlz/25wd/9wcnn/c3V8/3Byef97fYP/c3V8/3Bzff91eIH/
    +bG95/25xe/9wcnn/dXiB/3Bzff9wcnn/bnB3/25xe/91d33/bnB3/2xudf91d33/dXd9/3N1fP94eX3/
    +bnB3/29xdf92eHz/cHJ5/3Byef9qbHP/b3F1/2psc/9ucHf/bnB3/3N2f/91eIH/cHN9/3Bzff9ucHf/
    +cHJ5/3Bzff9sb3n/dXiB/25wd/9ucHf/b3F1/25wd/9wcnn/bG51/3Byef9sbnX/bnB3/3Z4fP9tb3P/
    +bG51/2psc/9qbXf/d3l//2xudf9kZ3H/am13/25xe/9qbXf/Z2px/2dqcf9maXP/bG95/2dqdP9ucXv/
    +bnF7/25xe/9wc33/bG51/25xe/9tb3P/dnh8/2Zpc/9ucXv/am13/2ptd/93eX//bG95/2xvef9qbHP/
    +bnB3/29xdf9zdXz/bG51/2ptd/9qbXf/cHN9/25wd/9wc33/bnF7/3N1fP9wcnn/bnB3/25xe/9qbXf/
    +bG95/25xe/9nanT/am13/2ptd/9qbHP/Z2p0/2psc/9nanT/bG95/2Zpc/9sb3n/dnh8/21vc/9sbnX/
    +bG51/2xudf9ucHf/bnB3/3Byef9wc33/bnB3/3V3ff9ucHf/bnB3/3V4gf91eIH/cHN9/25xe/91eIH/
    +d3qD/3Byef91eIH/c3Z//25wd/92eHz/amxz/3Z4fP9wcnn/c3V8/3N1fP9zdXz/amxz/25wd/9wcnn/
    +bG51/2ptd/9sbnX/c3V8/2psc/9vcXX/cHJ5/3V3ff9wcnn/cHJ5/25wd/9ucHf/bnB3/3V3ff9nanH/
    +bG95/2xvef9qbXf/c3Z//3N2f/95e4H/dXiB/3Bzff9zdn//dXiB/3d6g/+Bg4r/d3l//35/g/97fYP/
    +fn+D/3V3ff95fIb/c3Z//3l7gf9ucHf/dXiB/3V4gf9tcHr/fYCH/3V3fv9wc3v/dXeA/3Bzff97fYP/
    +e32D/25xe/9ucHf/cnR7/21wev9tb3f/a254/2Zobv9maXP/Z2px/2dqcf91d33/amxz/2xvef9sbnX/
    +Z2px/3Byef9sb3n/bG95/2xvef9sbnX/bnB3/29xdf9vcXX/bnF7/25xe/91eIH/bnF7/25wd/9ucXv/
    +cHN9/3Byef95e4H/cHN9/3N2f/91eIH/c3Z//25xe/9sb3n/c3Z//3d6g/97fYP/d3qD/3l8hv95e4H/
    +dXiB/3F0fv9ucHf/aGt0/2xvef9sbnX/bG95/2hrdf9rbXf/a254/3F0fP9ucXv/en2D/3l7gf9wc33/
    +cHN9/3Bzff9wc33/bnB3/29xdf9vcXX/dXd9/2Zobv9tb3P/bnF7/25xe/9sbnX/dXd9/25wd/9wcnn/
    +cHJ5/2dqdP9qbXf/bW9z/3Z4fP9sbnX/amxz/2dqdP9qbXf/bnF7/2Zpc/9maXP/cHN9/3N1fP9sb3n/
    +dXd9/2psc/9maXP/bG95/2xudf9qbHP/Zmlz/2dqdP9maXP/bG51/2dqdP9ucXv/bnF7/2ptd/9qbXf/
    +Zmlz/2dqcf9qbXf/Zmlz/3N1fP9nanT/amxz/2psc/9sbnX/am13/2dqdP9maXP/Zmlz/2psc/9zdXz/
    +bG51/2xudf9iZW7/Z2p0/3N1fP9qbXf/Zmlz/2ptd/9sb3n/am13/2dqcf9kZ3H/Zmlz/25xe/9nanT/
    +am13/2xvef9qbXf/cHN9/2Zpc/9nanT/Z2p0/25xe/9gY2z/Zmlz/2Rncf9iZW7/cHJ5/2xvef9nanT/
    +Z2px/2ptd/9qbHP/am13/21vc/9sbnX/Zmlz/3Bzff9nanT/bnF7/2xvef9ucXv/bG95/2ptd/9ucXv/
    +bG51/2xvef9sb3n/Zmlz/2dqdP9qbXf/Zmlz/2dqdP9maG7/Zmlz/2ptd/9nanH/am13/3Byef9kZ3H/
    +Z2px/2Zobv9iZW7/Zmlz/2xudf9qbXf/am13/2xudf9ucXv/amxz/2psc/9ucXv/bG95/2dqdP9nanH/
    +bG95/3Bzff9sbnX/Z2p0/2xvef9qbHP/c3V8/2dqdP91d33/bnB3/3Z4fP92eHz/bnF7/2psc/9sbnX/
    +cHJ5/21vc/9wcnn/cHJ5/3V3ff9ucHf/bW9z/3V3ff93eX//bnF7/25xe/9sbnX/bG51/3Byef9wc33/
    +Zmhu/25wd/9ucHf/Z2p0/2ptd/9wcnn/c3V8/2xudf9vcXX/bnB3/3Byef9zdXz/eXuB/2xudf91d33/
    +dXd9/3V3ff9ucHf/c3V8/25wd/91d33/bnB3/3d6g/91eIH/bnB3/3t9hP9wc33/a212/3Bzff9wc33/
    +dXiB/3l7gf9wc33/cHJ5/3N2f/9ucXv/b3F6/3V3ff9tb3P/dXd9/25wd/9ucHf/d3qD/25wd/9zdXz/
    +bnB3/21vc/92eHz/bnB3/3Byef9wcnn/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/25wd/9tb3P/
    +bG51/2ptd/9qbHP/cHN9/2xvef9qbXf/bnF7/2dqdP9qbHP/YmVu/2Zpc/9qbXf/Z2p0/2Zobv9qbXf/
    +Z2pz/2dqc/9pbHP/a21y/2ttdP90dnz/bnB3/2xvef9tcHr/bnF7/2ptd/9maXH/ZWhy/2xvef9sb3n/
    +YGNs/2Zobv9kZmz/d3l//3N2f/9ucXv/c3V8/3t+h/9sb3n/c3V8/3V4gf95fIb/eHl9/31+gf9zdXz/
    +dXiB/3d6g/9ucXv/cHN9/3Bzff93eX//bnB3/2xvef9ucHf/bG95/3Z4fP9qbXf/bG95/3V3ff94eX3/
    +cHJ5/3V3ff9wcnn/am13/3N1fP9tb3P/am13/2Zpc/9nanT/am13/21vc/9sbnX/c3V8/3V3ff9zdn//
    +c3Z//3Byef9zdXz/eXuB/3Bzff95fIb/c3V8/3N2f/9wc33/c3Z//3V4gf92eHz/e32D/3V3ff9zdn//
    +eXyG/3N2f/9zdn//bnF7/3V4gf93eoP/bnF7/2ptd/9zdXz/c3V8/3Byef9vcXX/bG51/2xvef91d33/
    +bG51/3Byef9ucXv/am13/25xe/9qbHP/am13/2dqdP9ucXv/XWBq/2ptd/9nanT/Zmlz/3N1fP9sb3n/
    +am13/2dqdP9sb3n/bG51/25wd/9tb3P/bW9z/2dqcf92eHz/cHJ5/3V3ff9zdXz/cHJ5/3Bzff9wc33/
    +c3Z//3Bzff9zdn//c3Z//2xvef9qbHP/bnB3/25wd/9zdXz/bW9z/2xudf9zdXz/b3F1/3N1fP94eX3/
    +bnB3/2xudf9vcXX/Z2px/2psc/9wcnn/bnB3/25wd/9ucHf/cHN9/2dqdP9sbnX/cHN9/3N1fP9sb3n/
    +amxz/25xe/9ucXv/bG51/2ptd/9ucXv/bG51/3Z4fP9qbHP/dnh8/25xe/9zdn//c3Z//3Bzff9qbHP/
    +bnB3/3N1fP9tb3P/bnF7/2ptd/91d33/bnB3/25wd/9wcnn/dnh8/3N1fP9wcnn/bnB3/25wd/9wc33/
    +dXiB/2dqdP9wcnn/c3V8/2xvef9wc33/cHN9/3N2f/9ucHf/b3F1/29xdf9zdXz/cHJ5/3l8hv9sb3n/
    +dXiB/3N1fP92eHz/bW9z/3Byef9ucHf/dXd9/25wd/95fIb/d3l//21vc/96e4H/b3F5/2Zpcv9sbnX/
    +am13/3Byef94eX3/bnB3/25wd/9zdXz/cHJ3/3Fzev91d3v/bW9z/3N1fP9zdXz/b3F1/3t9g/9ucHf/
    +cHJ5/25xe/9sbnX/c3V8/2ptd/9sb3n/am13/2ptd/9qbXf/bW9z/2xudf9sbnX/b3F1/3N2f/9ucXv/
    +bnB3/2xvef9sb3n/bnB3/3Z4fP9wcnn/bnB3/3Byef9ucHf/bnB3/2psc/9wcnn/c3Z//3V4gf9wc33/
    +e32D/3N2f/90d4D/bnF7/25xef9rbnf/c3Z//3Byef9wcnn/bnF7/3N2fv9xdHv/bG95/2hrdf9wc33/
    +bG95/2Rncf9qbXf/bG51/3h5ff9zdXz/cHJ5/25wd/93eoP/am13/25xe/9ucXv/cHN9/2xvef9zdn//
    +bG95/25xe/9zdXz/bG51/25wd/9wcnn/d3l//2dqdP9iZW7/Zmlz/2ptd/9zdXz/am13/2xudf9wcnn/
    +d3l//25wd/91d33/bnB3/2ptd/91d33/b3F1/2psc/9nanH/b3F1/2xudf9vcXX/b3F1/3Byef91d33/
    +bnB3/25wd/9sbnX/bW9z/3N1fP9nanT/d3l//2xudf9qbXf/amxz/2psc/9nanH/Zmhu/2dqdP9kZ3H/
    +YmVu/2xudf9gY2z/Zmhu/2BjbP9maXP/bG51/2Rncf9iZW7/Zmlz/2Rncf9maXP/Zmhu/2Rncf9nanT/
    +bnF7/2dqdP9sb3n/bnF7/2xvef9ucXv/Z2p0/25xe/9ucXv/c3V8/2Zobv9wcnn/bnB3/2Zpc/91d33/
    +bnF7/25wd/9qbHP/bnB3/2ptd/9sb3n/amxz/2dqdP9iZW7/bnF7/2dqdP9zdXz/bnF7/2xvef9wc33/
    +bG95/2xvef9sbnX/am13/2ptd/9maXP/YmVu/2xvef9ucHf/c3V8/21vc/9sbnX/cHJ5/2ptd/9wc33/
    +dXd9/25wd/9wcnn/bW9z/2Zobv9qbXf/dXiB/25xe/9sb3n/bG95/3N2f/9wcnn/cHN9/3V3ff91d33/
    +bnF7/2xvef91d33/bnF7/2xudf9qbXf/am13/2xudf91d33/am13/3N1fP9ucXv/bG95/2xvef9qbXf/
    +ZGdx/2dqcf9maXP/Z2p0/2xvef9qbXf/Z2p0/2dqcf9qbHP/bG95/3N1fP9wc33/bG95/2ptd/9tb3P/
    +bnB3/3Bzff9maG7/bG51/2xudf9sbnX/bnF7/25xe/91eIH/cHJ5/3N1fP9ucHf/dXiB/3N2f/95e4H/
    +c3Z//3d6g/9wc33/eXuB/25xe/9wcnn/c3Z//3Z4fP9ucHf/eXuB/3d5f/9wcnn/fH2C/3F0fP9wcnz/
    +c3Z//3N2f/93eoP/eXyG/3Bzff91d33/eHuF/3N1e/9ydHn/cHN9/2tud/9qbXf/am13/2dqcf9zdn//
    +bG51/25xe/9ucXv/bG51/3N1fP9sb3n/bG95/2xudf9vcXX/bG95/25wd/9sb3n/bnF7/25wd/9zdn//
    +bG95/25wd/9ucHf/cHJ5/29xdf92eHz/bnF7/2xvef9ucXv/cHN9/25xe/9sb3n/c3Z//3N2f/91eIH/
    +cHN9/3l7gf9zdn//c3Z//25weP9ucXn/bG51/3Byef9vcXX/bG95/25wd/9zdXz/cXN6/2lsdP9ucHf/
    +dnh8/25xe/9nanT/bG51/25wd/92eHz/c3V8/3N1fP9sbnX/dnh8/2xudf9ucHf/bnF7/3N1fP9ucHf/
    +dXd9/25wd/9wc33/dXiB/25xe/9sb3n/cHN9/3d6g/9ucHf/bG95/3Byef9wc33/eXuB/25xe/9wcnn/
    +cHN9/3V4gf9ucHf/dXd9/25wd/9wcnn/dXiB/25xe/9sb3n/Z2p0/2xvef9qbXf/bnB3/29xdf9ucHf/
    +dXd9/25wd/9ucHf/bnB3/25wd/9wc33/am13/3d5f/9ucHf/bnB3/25wd/9sb3n/cHJ5/3N1fP9wc33/
    +bnB3/25wd/93eX//bnB3/25wd/9ucHf/dXd9/3h5ff9zdXz/bG51/3Byef9wcnn/cHN9/3Byef9ucHf/
    +bnB3/3N1fP9sbnX/am13/2xvef9qbXf/c3V8/2Zpc/9ucXv/am13/2xvef9iZW7/am13/2dqdP9kZ3H/
    +cHN9/2xvef9sbnX/amxz/3Bzff9sbnX/am13/3N2f/9zdXz/bnF7/3l8hv9zdn//eXyG/3V4gf9zdn//
    +c3Z//25xe/9wc33/bnB3/3Byef9zdXz/bG51/2dqcf9wcnn/c3V8/3N1fP9sbnX/bG51/2xvef9qbXf/
    +c3V8/3V3ff9sb3n/bG95/2ptd/9iZW7/Zmlz/25xe/9qbXf/am13/2Zpc/9sb3n/amxz/2psc/9ucXv/
    +bnF7/2dqdP9maXP/bG95/2Zpc/9maG7/ZGdx/2dqcf9kZ3H/bG95/2Jlbv9qbXf/am13/2Zpc/9nanT/
    +Zmlz/2BjbP9kZmz/ZGdx/2Rncf9qbXf/Z2px/2Zpc/9kZ3H/Zmhu/2ptd/9wc33/c3V8/2xudf9nanT/
    +bG51/3Bzff9sb3n/Zmhu/25wd/9ucHf/bG51/25xe/9wc33/dXd9/29xdf9ucHf/bnB3/3N2f/9ucHf/
    +eHl9/3Byef91d33/b3F1/3V3ff9ucHf/bnB3/25wd/9zdXz/am13/3V4gf91d33/bG94/3d5gP9tcHj/
    +aGt1/2ptd/9qbXf/bG95/3N1fP9sbnX/am13/25xe/9vcXf/cHJ5/3V3e/9wcnn/cHN9/3V4gf9ucXv/
    +e36H/25xe/9wc33/cHN9/25xe/93eX//bnF7/3Byef9ucHf/cHJ5/25xe/9ucHf/bnB3/3Bzff9ucXv/
    +c3Z//3Bzff9zdXz/bnF7/2xvef9ucHf/d3l//2xvef9wcnn/am13/2xudf9ucXv/bW9z/3V3ff9ucHf/
    +bnF7/25wd/94eX3/cHJ5/3N1fP9qbXX/aGt1/2hrdP9ucXv/bG51/2ptd/9qbXf/bnF7/2tueP9kZ3D/
    +ZWhx/3J1fP9ucXv/am13/2xudf9ucHf/c3V8/3N1fP9ucXv/bG95/3Z4fP9qbHP/cHJ5/25wd/9zdXz/
    +bnB3/3d5f/9wcnn/bnF7/3Bzff9nanT/bnF7/25xe/93eoP/bnB3/2xvef9nanT/bnB3/3N1fP9qbHP/
    +amxz/2ptd/91d33/bG95/25xe/9sbnX/bG51/25xe/9nanH/Z2px/2Zpc/9maXP/YmVu/2dqdP9qbHP/
    +bG95/3N1fP9qbHP/am13/2dqdP9maXP/cHN9/2dqdP9zdXz/bG51/2xudf9wc33/bnB3/21vc/9tb3P/
    +c3V8/2xvef9sb3n/e36H/25wd/9zdXz/bnB3/3V4gf97fYP/cHN9/3Byef9zdn//c3Z//3d6g/9wcnn/
    +bnB3/3Byef95e4H/cHJ5/3V4gf95e4H/c3Z//3l7gf9zdXz/eXyG/3d6g/95fIb/bG95/3V4gf9zdXz/
    +cHN9/3l8hv95e4H/dnh8/3N2f/9+gIb/dXiB/3V4gf9tb3P/bW9z/2dqcf92eHz/bnB3/3d6g/9zdXz/
    +am13/2xvef9qbXf/Zmlz/2dqcf9nanH/am13/2dqdP9nanT/bG95/3Bzff9ucHf/bW9z/25wd/9tb3P/
    +am13/3N1fP91d33/bG95/2ptd/9ucXv/ZWZq/2dqcf9wcnn/bnB3/25wd/9vcXX/c3V8/25wd/9ucXv/
    +d3l//3V3ff9ucXv/bG95/3V3ff9wcnn/bnF7/2xvef9ucXv/cHJ5/3V3ff9sb3n/d3l//3d5f/91eIH/
    +eXuB/3d6g/9ucXv/c3Z//3t9g/97fYP/fX6B/3Bzff9zdn//c3V8/3Bzff93eoP/dXiB/3V4gf9sb3n/
    +Z2p0/25wd/9ucXv/cHJ5/2dqdP9ucXv/bnB3/25wd/9wcnn/cHN9/3Z4fP9sbnX/bG51/21vc/9wc33/
    +bG95/3N1fP9ucXv/dXd9/2xudf92eHz/bnF7/3Byef91eIH/c3Z//29xdf95e4H/d3l//3N1fP97foX/
    +dXd9/3J0e/9zdn//dXd9/31+gf97fof/dXiB/3V4gf91eIH/dHZ9/3J1f/92eH//bnF7/3N1fP9wcnn/
    +bW9z/3l7gf9sbnX/bnB3/3Byef9ucHf/c3V8/25wd/9ucHf/bG51/2ptd/9qbHP/Z2p0/2psc/9qbXf/
    +bG51/3N1fP9tb3P/amxz/2ptd/9sb3n/am13/3d5f/9sbnX/bG95/2ptd/9qbXf/cHN9/2ptd/9zdXz/
    +cHJ5/25wd/9ucHf/c3V8/2xvef91d37/cHN4/3R2ff9ydX3/eHqA/3V4gf9zdn//b3J8/29yfP9vcnj/
    +aGpy/2hrdP9zdXz/bG95/2Zpc/9sb3n/am13/3V3ff9wc33/cHN9/25xe/94eX3/am13/3Bzff91eIH/
    +c3Z//2xvef91d33/b3F1/2xvef9ucXv/Z2p0/25xe/9wc33/eXyG/3Byef9ucHf/am13/3N2f/93eoP/
    +bnF7/25wd/9wcnn/dnh8/25wd/9ucXv/bW9z/2xudf9zdXz/bG51/2psc/9qbXf/bG95/2ptd/9ucHf/
    +bG51/25wd/93eX//am13/25wd/9sbnX/am13/25xe/9nanT/c3V8/2ptd/9sbnX/cHJ5/2xudf9sbnX/
    +bG51/3N1fP9tb3P/bnB3/3V3ff9sbnX/am13/2dqdP9ucXv/dXd9/2xvef9nanT/am13/2xudf9wc33/
    +amxz/2psc/9nanT/c3V8/2xudf9zdXz/dXd9/3Byef9zdn//bG95/3N2f/9ucXv/cHN9/2dqdP9ucXv/
    +bnB3/2dqdP9wc33/bG95/25wd/9ucHf/d3l//3Byef9wcnn/Z2px/2xudf9iZW7/bnF7/2psc/91eIH/
    +bG95/2psc/9maXP/Z2p0/2Zobv9maG7/ZGdx/2Zobv9iZW7/YGNs/2Rncf9nanT/ZGdx/2Rncf9kZ3H/
    +YGNs/2Rncf9sb3n/bG95/2dqdP9maXP/Z2p0/11fZf9iZW7/bG95/2xvef9qbXf/bG51/2xvef9qbXf/
    +bnF7/3Z4fP94eX3/cHJ5/2xudf9zdn//cHN9/3N1fP9ucHf/bnF7/3Bzff93eX//bnB3/3Z4fP92eHz/
    +c3V8/3V3ff9wc33/b3F1/29xdf9zdXz/bnB3/3N1fP9tb3P/bG51/2xudf9sbnX/cHN9/2ptd/91d33/
    +Z2p0/2Rncf9sbnX/bG95/2xvef9nanT/bG51/2xudf9sbnX/bnB3/3Bzff91d33/b3F1/25wd/9ucHf/
    +c3V8/3Byef92eHz/cHJ5/3V3ff9qbHP/c3Z//3Bzff9wcnn/dXiB/3V3ff9sbnX/eHl9/3V3ff9wcnn/
    +dXiB/3Byef9sb3j/b3F1/2xvef9zdn//eHl9/2xvef9wcnn/cHN8/21wev9tb3j/cHJ5/2dqcv9maXP/
    +Zmlz/2Rncf9wc33/amxz/2psc/9sb3n/am13/2ptd/9qbXf/am13/2xudf9qbHP/bG51/2xudf9nanT/
    +am13/2ptd/9ucXv/amxz/2xudf9qbXf/cHN9/2ptd/9zdn//am13/3Bzff9qbXf/bnB3/3V3ff9ucHf/
    +dXd9/25wd/9wcnn/cHJ5/3Byef9tb3P/bnF7/21vd/9ucXn/bW93/3R2ff9sb3n/am13/2ptd/9ucXv/
    +b3F4/2hrc/9sb3n/d3l//3N2f/9sb3n/bnF7/25wd/9ucXv/Z2p0/2dqdP9qbXf/bnF7/2Zpc/9nanT/
    +Z2p0/2ptd/9nanT/bnF7/2xudf9qbXf/bG51/2psc/9tb3P/bnF7/3l7gf9tb3P/amxz/2psc/9ucXv/
    +cHN9/25xe/9ucXv/c3Z//3l7gf9zdn//dXiB/25xe/9wc33/d3qD/3N1fP9zdXz/bnB3/25xe/9ucXv/
    +c3Z//3N1fP9wc33/eXyG/3N2f/9wc33/c3V8/3N2f/93eoP/c3Z//3t9g/9zdn//cHJ5/3t9g/9zdn//
    +d3l//3V3ff93eoP/c3Z//3d6g/97fof/c3Z//3N1fP9zdn//eXuB/3l8hv9zdn//bG95/3N2f/9wcnn/
    +d3l//3Byef9ucHf/bnB3/3h5ff9sbnX/cHJ5/3Z4fP9wcnn/bnB3/2ptd/9ucXv/bG51/2xvef9nanH/
    +bnF7/2xudf9nanT/bnF7/2ptd/9qbXf/Z2p0/3N1fP9sbnX/Z2p0/2xudf9qbXf/Zmlz/3N1fP9qbXf/
    +fn+D/3Z4fP9wcnn/c3V8/3N2f/9sb3n/bnF7/25wd/9wcnn/bnB3/2xvef9wc33/d3l//25xe/9wcnn/
    +cHN9/25wd/9ucHf/d3l//3N2f/91d33/bnB3/3N1fP9lZmr/Zmlz/25xe/9sb3n/am13/2dqcf9qbXf/
    +amxz/2dqdP9ucHf/cHJ5/2dqdP9kZ3H/bnF7/2ptd/9nanT/amxz/2ptd/9qbXf/cHJ5/2psc/9zdXz/
    +c3V8/25wd/9zdXz/dXd9/29xdf9ucXv/dXiB/3Bzff91d33/bG95/25xe/9wcnn/bnF7/3Bzff9wcnn/
    +eXuB/25wd/9qbXf/bnF7/3V4gf9wc33/bnF7/3V4gf9ucXv/cHN9/3Bzff93eoP/eXyG/3N2f/9zdn//
    +cHN9/3d6g/9zdn//e32D/3d6g/95fIb/cHN9/3l7gf91eIH/c3V8/3d6g/91eIH/c3Z//3t+h/97fob/
    +d3qE/3p8g/90dn7/bXB6/25wd/9sb3n/cHN9/3d5f/9ucXv/bnB3/25xe/9xdH7/c3V9/3d5gP9wc33/
    +bnF7/2xvef9ucHf/eXyG/25xe/9ucXv/cHN9/25xe/9wc33/cHJ5/25xe/9zdXz/cHJ5/25xe/9sb3n/
    +bnB3/21vc/9ucHf/c3V8/25wd/9sb3n/bnF7/3d5f/9ucXv/d3qD/25xe/9zdn//cHN9/2xvef91d33/
    +bG95/3Z4fP9ucHf/c3V8/25wd/9ucXv/bnB3/3Bzff9tb3f/bnB3/21vc/9ydHz/bnB3/25wd/9wcnn/
    +cHJ5/3Fzef9oa3P/aGtx/3V3ff9wcnn/Z2px/2xvef9sbnX/dnh8/3N1fP91eIH/c3Z//3V4gf9sb3n/
    +bG95/3Bzff9ucXv/bG95/3N2f/9sb3n/cHN9/25wd/9sb3n/bnB3/25xe/93eoP/bnB3/2xudf9qbHP/
    +c3V8/3N1fP9ucHf/bnB3/3V3ff92eHz/c3V8/2xvef9qbXf/bnB3/3N1fP9sbnX/am13/2xudf9sbnX/
    +amxz/25wd/9tb3P/bnB3/3V3ff9ucHf/bG95/2ptd/9tb3P/bnB3/2psc/9zdXz/bnB3/2ptd/91eIH/
    +bnB3/25wd/9ucHf/bnF7/25wd/9zdXz/dXiB/25wd/9sb3n/bnB3/3N1fP91d33/bnB3/2psc/9tb3P/
    +bG51/3V3ff9sbnX/bG51/25wd/91d33/bG51/3Byef9zdXz/am13/2ptd/9nanT/bG95/2psc/9qbXf/
    +ZGdx/2ptd/9qbHP/Zmlz/2ptd/9qbXf/am13/2psc/9zdXz/bG51/2xudf9wcnn/bnF7/25xe/91eIH/
    +cHN9/3+Bh/93eX//bG95/3Bzff9zdn//bG95/25xe/9ucHf/cHJ5/25wd/9qbXf/bnF7/3V4gf9ucXv/
    +cHJ5/25xe/9ucHf/cHN9/3d5f/91eIH/c3V8/3Byef9ucXv/ZGdx/25wd/9wcnn/cHN9/2xvef9wcnn/
    +bnF7/2xvef9wc33/d3l//3d5f/9zdXz/bG51/3Z4fP9zdXz/cHJ5/25wd/9wcnn/bG51/3V3ff9qbXf/
    +cHN9/3N1fP9sb3n/bG95/2xvef9qbHP/Z2p0/25xe/9nanT/c3V8/2dqdP9qbXf/Z2px/2psc/9sb3n/
    +amxz/3Byef9maG7/YmVu/2ptd/9sb3n/amxz/2Zpc/9ucHf/Z2px/2xudf9tb3P/bnB3/3Bzff9ucHf/
    +dXiB/25wd/9zdXz/bnB3/3V3ff9zdXz/dXd9/2xudf91d33/bG95/25wd/9zdn//dXd9/29xdf92eHz/
    +eHl9/3J0e/92eH7/bXB4/2hrdP9qbHP/Zmlz/3Byef91d33/am13/21vc/9sb3n/bm92/21weP92eH//
    +bnB3/2xvef9wc33/bnF7/3d6g/9zdn//d3qD/3t9g/93eX//fn+D/3d5f/93eX//e32D/3p7f/97fof/
    +eXuB/3l7gf95e4H/e32D/3t9g/91eIH/d3l//31+gf9/gYf/d3l//3+CjP93eoP/d3qD/3Bzff9sb3n/
    +dXd9/25wd/91d33/am13/2xvef9qbXf/bnF7/2psc/9rbnj/aGty/2hqc/9maG//am13/2dqcf9qbXf/
    +bnF7/2xveP9tcHj/YmVu/19ibP9sb3n/Z2p0/2BjbP9maXP/bG95/3h5ff9wc33/c3Z//25wd/91d33/
    +bG95/2xvef9sb3n/bnB3/25wd/92eHz/cHJ5/3Byef9sb3n/bnB3/25wd/9ucHf/dXd9/2xudf9qbHP/
    +Z2px/3Byef9ucHf/am13/2xvef9wc33/c3V8/25xe/9ucXv/bG51/25xe/9wc33/bG51/25wd/9ucHf/
    +bnB3/2ptd/9wcnn/b3F1/25wd/93eX//cHJ5/25wd/9vcXX/bG51/25wd/9sbnX/cHN9/2xvef9ucXv/
    +eXuB/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/3d6g/9ucHf/bG51/2xvef91d33/eHl9/3Bzff9sb3n/
    +bnB3/25wd/95e4H/bG51/2xvef9ucHf/d3l//25xe/9wc33/dXd9/2xvef9zdXz/bnB3/25xe/9ucXv/
    +bnF7/2dqdP9sb3n/bG95/2xudf9wc33/cHJ5/25wd/9sb3n/dXd9/25wd/9sb3n/bG51/2ptd/9nanT/
    +bnF7/2xudf99foH/dXd9/21vc/9wcnn/c3Z//25wd/9ucHf/b3F1/2xudf9sbnX/Z2px/3N1fP9zdXz/
    +bG51/21vc/9sb3n/am13/2xvef9zdXz/bG95/3Bzff91d33/cHJ5/2Rncf9ucHf/bnB3/3Bzff9ucHf/
    +bnF7/25xe/9wcnn/cHN9/3d6g/93eoP/c3Z//2xvef91eIH/c3Z//3N2f/9ucXv/cHN9/3N1fP93eoP/
    +bnF7/3d6g/91eIH/cHN9/3N2f/9wc33/bG95/2xvef91eIH/bnF7/3V3ff9sbnX/bG51/2xudf9sb3n/
    +bnF7/2ptd/93eX//bW9z/2psc/9zdn//cHJ5/25wd/9sbnX/cHJ5/2psc/9vcXX/bnB3/25wd/9zdXz/
    +bG51/3Byef9ucHf/dXd9/2xudf9zdXz/bnB3/3h5ff9sbnX/eHl9/25xe/9wcnn/c3Z//2xvef9qbHP/
    +cHN9/3V3ff9sb3j/dHeB/25wef9sb3n/bnF7/25wd/9zdn//dXiB/2xvef9ucHf/bnF7/3R2fP9vcnn/
    +dnh//25wd/9ucXv/bnF7/25wd/95e4H/bnF7/3N2f/91eIH/c3V8/3V4gf9wc33/cHJ5/25wd/9wcnn/
    +dXiB/3Byef9ucHf/bG95/2xvef9wc33/bnB3/21vc/91d33/eHl9/3Byef95e4H/cHJ5/2xvef9ucXv/
    +amxz/3N1fP9qbXf/cHN9/21vc/9wcnn/bnB3/3N1fP9vcXX/dHZ9/21wef9xc3z/bnB3/3N2f/9ucXv/
    +c3Z//3V4gf9wc33/dXd+/2xvef9ydX7/e36H/3t9g/9ucXv/d3qD/3l8hv94eX3/cHJ5/3V3ff9tb3P/
    +cHJ5/2xudf9ucHf/bG51/2ptd/9sbnX/dnh8/25wd/9qbXf/Z2p0/2dqdP9sbnX/bnF7/3V3ff9sbnX/
    +bG51/2Zpc/9sb3n/am13/2ptd/9sb3n/c3V8/3Bzff9wc33/bG95/2ptd/9ucXv/cHN9/3Byef9ucHf/
    +bG51/2xvef9nanT/bnB3/29xdf9zdXz/dnh8/25wd/9qbXf/amxz/2xudf9qbXf/Z2p0/2xvef9qbHP/
    +Zmlz/3Bzff9sbnX/bG95/2ptd/9zdXz/bG51/25xe/91d33/bG51/2psc/9ucHf/dXd9/3h5ff9wcnn/
    +Zmlz/2dqdP9sbnX/dnh8/2xudf9ucHf/b3F1/3d5f/9sbnX/cHJ5/3V3ff9qbXf/bG95/2xudf9sb3n/
    +bnB3/3N1fP9qbHP/bnB3/2xudf9nanT/am13/2xvef9sbnX/bW9z/3N1fP9sbnX/bG95/2psc/9sb3n/
    +Z2p0/25xe/9qbXf/eXuB/3d5f/9sbnX/bG51/3Bzff9sbnX/bW9z/2xudf9sbnX/bG51/2Zpc/9zdn//
    +cHN9/2xvef9vcXX/cHJ5/29xdf9wcnn/c3V8/25xe/92eHz/dnh8/3Byef9maG7/bnB3/3N1fP9zdXz/
    +bnB3/3Byef9wc33/dXiB/3V4gf97fof/eXyG/3d6g/9qbXf/dXiB/3Bzff9wc33/bnB3/29xdf9sbnX/
    +dXd9/25xe/9wc33/c3Z//3Byef9ucHf/bG51/25wd/9qbHP/dXd9/3Byef93eX//amxz/21vc/9sbnX/
    +bnF7/2xvef9ucHf/dXd9/21vc/9ucHf/c3V8/3Byef9ucHf/bG51/3Byef9sbnX/bG51/2ptd/9sbnX/
    +bnB3/2xudf9zdXz/bG51/3V3ff9qbXf/dXd9/25xe/91d33/Z2p0/3h5ff9ucHf/b3F1/3Byef93eoP/
    +c3V8/3l7gf96fIP/c3Z//3Z5g/9ucXr/bG51/2xudf9qbXf/bnF7/3d5f/9tb3P/bW9z/2xudf9ucHf/
    +b3F2/3d5gv9wcnn/bnF7/3Bzff9ucHf/d3qD/25wd/9ucHf/cHN9/25wd/92eHz/b3F1/25wd/9sb3n/
    +bnB3/3Bzff9sb3n/bG95/25wd/9ucHf/c3V8/29xdf9vcXX/dXd9/3V3ff9ucHf/eXuB/3Byef9sb3n/
    +bnF7/2dqdP9zdXz/am13/2xvef9qbHP/bG95/2xudf9wc33/amxz/3Bzff9qbXb/bG53/2hqdP9vcnz/
    +am13/3Byef9wcnj/cXN6/3JzeP9oanP/Z2pz/3N1fP9ucXv/Zmhu/3N1fP9ucHf/dnh8/3Byef94eX3/
    +bnB3/3V3ff9sbnX/bG51/25wd/9sbnX/bG51/3N1fP9wc33/am13/2dqdP9maXP/amxz/2ptd/9zdXz/
    +Z2px/2Zpc/9iZW7/Zmlz/2RmbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Rncf9iZW7/Z2p0/2Zpc/9maG7/
    +Zmlz/2Zpc/9qbXf/Zmlz/2xvef9sbnX/bnF7/3N1fP9qbXf/amxz/2psc/9qbXf/am13/2xudf91d33/
    +b3F1/2xvef91d33/bG95/3Byef9sbnX/dXd9/2ptd/9wc33/dXd9/21vc/9nanH/cHJ5/3Z4fP92eHz/
    +c3V8/2dqcf9sb3n/cHJ5/3t9g/9wc33/c3V8/25wd/93eoP/bnB3/3N1fP91d33/bG51/3Byef9sbnX/
    +cHJ5/3Byef91d33/b3F1/3Byef9sbnX/bnB3/3N1fP9ucHf/bW9z/29xdf9zdXz/b3F1/2xvef9ucHf/
    +cHN9/25wd/9wc33/bG95/3+Bh/93eX//bnB3/25xe/91eIH/cHN9/3N2f/9zdn//cHJ5/2ptd/9kZ3H/
    +dXiB/3Bzff9sb3n/cHJ5/3Bzff9wcnn/c3Z//3l7gf9zdn//c3Z//3l7gf9wc33/Z2p0/25wd/91eIH/
    +c3Z//3Byef9vcXX/bnB3/3Bzff9zdn//d3l//3h5ff9zdn//bG95/3d6g/9zdn//cHN9/25wd/9vcXX/
    +cHJ5/3N1fP9ucHf/dXd9/3N1fP9ucHf/bnB3/3Byef9sbnX/Zmlz/25xe/9ucXv/d3l//2ptd/9qbHP/
    +amxz/2ptd/9qbXf/am13/3N1fP9sbnX/Z2p0/2ptd/9sb3n/Z2px/2Zpc/9nanT/ZGdx/2Zpc/9kZ3H/
    +amxz/2ptd/9nanT/cHN9/2xudf9wcnn/bG51/3Z4fP91d33/dXd9/2xvef95e4H/bnB3/25wd/9wcnn/
    +c3Z//25wd/9zdn//dnh8/29yfP94eoH/bnB5/25wd/9ucXv/bnB3/3Byef93eX//bW9z/21vc/9sb3n/
    +a252/2xudf92eYL/cHJ5/3Bzff9wc33/c3V8/3d6g/9zdn//dXiB/3V4gf9ucHf/eHl9/25wd/9vcXX/
    +bG51/25wd/9wcnn/b3F1/2xudf9tb3P/bG51/3Byef9sbnX/bW9z/3Bzff9wc33/bG51/25wd/9qbXf/
    +am13/2xvef9kZ3H/am13/2Rncf9sb3n/am13/3Bzff9qbXf/dXd9/2ptd/9xc3v/bG53/2ttc/9lZ3D/
    +Z2p0/2Zpc/9maXP/ZGdx/2dqdP9tb3j/am13/21vdv90dn3/dXd9/2dqcf9zdXz/bnF7/3N1fP9qbXf/
    +dXd9/2xvef9ucXv/bW9z/3Byef9wcnn/b3F1/2xvef9ucXv/dXd9/25wd/9ucHf/bG95/25xe/9zdXz/
    +e32D/3Byef9vcXX/bnB3/25xe/9wcnn/b3F1/2xudf9wcnn/cHJ5/3Byef9wcnn/bG51/3Byef9ucXv/
    +am13/2ptd/9sbnX/bnF7/2dqdP9qbXf/am13/2xvef91d33/cHJ5/29xdf9vcXX/bG95/3Byef9ucHf/
    +c3V8/25wd/9sbnX/dnh8/3Byef9ucHf/bW9z/3V3ff9sb3n/d3l//3d6g/9zdXz/bG95/3d6g/97fYP/
    +d3l//3Bzff9sb3n/cHJ5/2xvef92eHz/am13/2xvef9ucHf/eXyG/25xe/93eX//cHN9/25xe/9wcnn/
    +bG95/2xvef9wc33/dXiB/25wd/9ucXv/am13/25wd/9wc33/bnF7/2xvef9sb3n/cHN9/25wd/9sb3n/
    +Z2p0/25xe/9nanT/bnF7/21vc/+Agob/d3l//25wd/9ucHf/dXiB/3Bzff9zdn//c3Z//25xe/9ucXv/
    +Zmlz/3N2f/9ucXv/bnB3/25wd/9ucXv/bW9z/25wd/91d33/bnB3/25xe/9zdXz/am13/2Rncf9qbXf/
    +bG95/2ptd/9nanT/Z2px/2Zpc/9nanT/Z2p0/3Byef9ucHf/bnB3/2dqcf9zdXz/bG95/2ptd/9qbHP/
    +bG51/2xvef9sb3n/bG51/3Bzff9ucXv/am13/2xudf9ucXv/bnB3/2dqdP91d33/c3V8/3d5f/9sbnX/
    +b3F1/3Byef9wcnn/bG95/2ptd/91d33/bG51/2ptd/9sb3n/cHN9/2Zpc/9qbHP/bG95/2xudf9sb3n/
    +Z2p0/2ptd/9qbXf/Z2p0/2ptd/9nanH/am13/2Zpc/9wcnn/c3V8/3V3ff9qbXf/cHN9/2dqdP9maXP/
    +am13/3N1fP9tb3P/c3V8/3N1fP9sb3n/d3qC/25wef9ucHX/bnB3/25wd/9ucXv/d3qD/3Byef9ucHf/
    +b3J8/29xef9sbnT/cHJ6/2dpb/9qbXf/Z2p0/2dqcf9wcnn/am13/2ptd/9ucXv/bG51/25xe/9qbXf/
    +am13/2Zpc/9sbnX/cHN9/25wd/9sb3n/b3F1/29xdf9zdXz/bnB3/29xdf91d33/bnB3/2ptd/91d33/
    +cHJ5/2xudf9ucXv/am13/2ptd/9maXP/bG95/2xvef9ucXv/am13/3Bzff9sb3n/cHN9/21wev9tcHr/
    +bG95/3h6gP91eIH/foCG/3Z5gv93eoP/dXiA/25weP9pbHb/bnF7/3Bzff9maXP/bnB3/2xvef95fIb/
    +dXiB/3t+h/93eoP/dXiB/3Byef9zdn//bG95/25xe/9sb3n/cHN9/3V4gf9wc33/bnB3/25wd/9wc33/
    +c3Z//36Ahv91eIH/c3V8/25wd/9wc33/bnB3/2xudf9ucHf/c3V8/3V3ff9zdn//bnF7/2xvef9zdn//
    +cHN9/3Bzff9ucXv/c3V8/3Bzff9sbnX/bG95/25wd/9zdXz/dXd9/3Byef9sbnX/b3F1/2ptd/9ucHf/
    +bG51/3N1fP9qbXf/bG51/3V3ff9ucXv/bnB3/2xudf9zdXz/bW9z/3Byef91d33/bG51/2ptd/9qbXf/
    +cHN9/2xvef9qbXf/Zmlz/2xudf9qbXf/c3V8/2Zpc/9maXP/Z2px/3Bzff9nanH/bnF7/2xvef9qbHP/
    +am13/2Zpc/9nanH/Zmhu/2Zpc/9kZ3H/Zmlz/2dqcf9kZ3H/Z2p0/2Zpc/9nanT/bG51/2xvef9sbnX/
    +am13/2dqcf9sb3n/Zmlz/25xe/9sbnX/f4GH/3V3ff9sbnX/bG95/3Bzff9sbnX/bnF7/2xvef9qbHP/
    +amxz/2RmbP9wc33/am13/2xudf9wcnn/cHJ5/2xudf9ucHf/c3V8/2ptd/9sb3n/bnF7/2xudf9iZW7/
    +Z2p0/2xvef9sb3n/Z2p0/2ptd/9qbXf/bG95/3Bzff91d33/dXd9/3V3ff9vcXX/d3l//3V3ff9zdXz/
    +bG51/2xudf9sb3n/bnF7/21vc/9zdXz/dXd9/25wd/9ucHf/bnB3/21vc/9nanH/c3V8/2xvef91d33/
    +Z2p0/21vc/9zdXz/bnB3/2xudf9wcnn/d3l//2ptd/9nanT/am13/3V3ff9sbnX/bG51/2xvef9sbnX/
    +am13/2Zpc/9sbnX/bG51/2xudf9ucHf/bW9z/3Byef9sb3n/dXd9/3V3ff93eX//bW9z/3V3ff9sbnX/
    +bG51/2xudf91d33/cHJ5/3d5f/91eIH/cXR+/3Z5gv9wc3r/aGt1/25wd/9ucHf/bnF7/3d5f/9sbnX/
    +bG95/2xvef9ydHv/bnF5/3V4gf9ucHf/cHN9/2xvef9ucHf/dnh8/3Byef9ucHf/bnB3/2xudf9wcnn/
    +bnB3/3Byef9nanT/bG95/3N2f/9vcXX/bnB3/21vc/9sb3n/c3Z//3Bzff9wcnn/dXiB/25wd/9tb3P/
    +eHl9/3V3ff9ucHf/c3V8/29xdf9ucHf/amxz/3N1fP9wcnn/c3Z//25xe/9zdXz/cHJ5/3V3ff9zdX3/
    +bnF7/29xeP90d4D/cHN9/3Bzff9sb3n/cXN7/3Bze/9tb3f/aGp0/2xvef9ucXv/Z2p0/25xe/9sb3n/
    +c3V8/25wd/94eX3/bnB3/3Bzff9wcnn/cHN9/25xe/9zdn//cHJ5/3N2f/91eIH/cHN9/3Byef9sb3n/
    +c3V8/3N1fP97fYP/c3V8/29xdf9vcXX/dXd9/21vc/9ucHf/cHJ5/3Byef9wcnn/dXd9/2xvef9nanT/
    +bG95/2ptd/9qbXf/amxz/2Zpc/9qbXf/Zmlz/2dqdP9sbnX/bG95/3N1fP9wc33/am13/2psc/9sbnX/
    +bnF7/2xudf9zdXz/bG95/25wd/91d33/cHN9/25xe/9ucHf/dXd9/29xdf9zdXz/c3V8/25wd/9ucHf/
    +bnF7/3V3ff9ucXv/d3qD/2xvef9ucHf/bG95/3d5f/9sb3n/bnB3/3Byef95fIb/bnB3/3N1fP9wcnn/
    +bW9z/25wd/9wcnn/bG51/21vc/9wcnn/bG51/25wd/9ucHf/bG51/2xvef9sb3n/amxz/25wd/9ucXv/
    +bW9z/2xudf9sb3n/bnF7/2xvef91eIH/bG95/4GDiv91d33/bW9z/3Byef9wc33/am13/25xe/9sb3n/
    +amxz/2xudf9maXP/dnh8/2xvef9ucHf/cHJ5/25wd/9sbnX/b3F1/3Z4fP9zdXz/c3V8/3N1fP9ucHf/
    +amxz/2xudf9wcnn/bnB3/29xdf9ucHf/bnB3/25xe/91eIH/d3l//3d6g/93eX//bG95/3d5f/9zdXz/
    +cHN9/2psc/9ucHf/cHN9/3Bzff9ucXv/c3Z//3N2f/9wcnn/cHJ5/3Bzff9wcnn/cHJ5/3d6g/95fIb/
    +eXyG/25xe/9zdn//c3Z//25xe/91eIH/e32D/3l8hv91eIH/c3V8/3d6g/97fYP/bnF7/25wd/9ucXv/
    +cHJ5/3Bzff9sb3n/cHN9/3Byef9sb3n/cHJ5/25wd/9wc33/bnB3/25xe/9wcnn/eHl9/29xdf91d33/
    +cHJ5/2xudf9vcXX/d3l//3Bzff97fYP/dXiB/29yfP91eIH/cHN9/21wev9wc33/cHJ5/2xvef93eX//
    +bnB3/2xvef9wcnn/cXR9/21weP91d33/bnB3/3N1fP9sbnX/b3F1/3Z4fP91d33/cHN9/25xe/91eIH/
    +cHN9/25wd/9wc33/am13/3Byef91eIH/c3Z//3N2f/9zdXz/dXd9/3l7gf93eX//c3Z//3t9g/91eIH/
    +c3V8/3l7gf9zdn//c3Z//3l8hv91d33/d3l//3Z4fP97fYP/e32D/3V4gf9wc33/dXiB/3N2f/92eYL/
    +c3Z+/3Bye/9vcXj/c3V8/25wd/9ucXv/bG95/2xvef9xdHz/bG95/2ptd/9wc33/cHN9/2dqdP9zdXz/
    +c3V8/25xe/9sb3n/c3V8/2xvef9qbXf/bG51/3V3ff9ucHf/c3V8/29xdf9wcnn/cHN9/2xvef9qbXf/
    +bG51/3N1fP92eHz/eXuB/3N1fP9sbnX/bW9z/3Z4fP9sbnX/am13/2xvef9sb3n/cHJ5/3Byef9ucHf/
    +amxz/3N1fP9ucXv/bG95/2ptd/9maXP/bnB3/2xudf9sb3n/bG51/2xvef9wc33/c3V8/2xvef9tb3P/
    +bW9z/3Byef9qbHP/c3V8/25wd/9sb3n/dXd9/3V3ff9ucHf/bW9z/3Byef9ucHf/cHJ5/3Byef9sbnX/
    +bG51/25xe/9wc33/am13/3Bzff9qbXf/bnB3/25wd/91d33/bG51/2psc/9ucHf/d3qD/2xvef9wc33/
    +cHJ5/25wd/9ucXv/c3Z//25wd/9wcnn/cHN9/25wd/9wc33/bnF7/3Byef9zdn//d3qD/3Byef9zdn//
    +dXiB/25xe/9wc33/bnF7/3Bzff9wcnn/dXiB/2ptd/+BhI3/eXuB/25xe/91eIH/c3Z//2xvef9wc33/
    +bnF7/2xudf9nanT/Z2p0/3V3ff9ucHf/bG95/3Byef9ucHf/bG51/25wd/91d33/c3V8/3V3ff9ucXv/
    +cHJ5/2xvef9wcnn/c3Z//3N2f/9wc33/cHJ5/25xe/9ucXv/dXd9/3Z4fP93eX//eHl9/25wd/94eX3/
    +cHJ5/3V3ff9qbHP/bW9z/25wd/9ucHf/bnB3/3N1fP9ucXv/bG51/2psc/9nanH/Z2px/2dqdP9sb3n/
    +am13/3N1fP9maXP/amxz/2ptd/9qbXf/am13/3Bzff9zdXz/am13/2ptd/9zdXz/dnh8/2dqdP9wcnn/
    +cHN9/2xvef9ucXv/Z2p0/25xe/9vcXX/amxz/3V3ff9vcXX/c3V8/2ptd/9wc33/cHN9/3l7gf9ucHf/
    +c3Z//2xvef9sb3n/cHJ5/3Z4fP9wcnn/eHl9/3Z4fP9ydHv/dXd8/25wd/9qbHP/bG51/2xudf9sbnX/
    +dnh8/2xudf9sbnX/bnB3/29xeP9tcHj/dHZ9/25xe/9zdn//bnB3/29xdf94eX3/cHN9/3N1fP9ucXv/
    +cHN9/3N2f/9ucHf/bnB3/2xvef9ucHf/c3Z//3N1fP9ucXv/cHN9/3Bzff95fIb/c3Z//3Bzff93eoP/
    +bnF7/25wd/97fYP/d3qD/3V4gf93eoP/cHN9/3N2f/9zdXz/cHN9/25xe/9wc33/cHJ5/3N2f/9zdn//
    +eHqA/3N2fv9vcnr/bnB3/3R2ff9wcnn/c3V8/3V3ff90dnz/c3Z9/29xef9tb3f/c3Z//3Byef9sbnX/
    +cHN9/25xe/9zdn//cHN9/3d5f/9ucXv/cHJ5/29xdf9wcnn/cHJ5/3V4gf9ucHf/c3Z//3V3ff91d33/
    +amxz/25wd/9wcnn/dnh8/3l7gf9zdXz/bW9z/2xudf9zdXz/bG51/2xudf9zdXz/bG95/3Byef9wcnn/
    +c3V8/25wd/9zdXz/cHJ5/3N1fP9ucHf/Z2p0/2xvef9sbnX/bnB3/21vc/9ucHf/cHJ5/3V3ff9qbXf/
    +bnB3/2ptd/9ucXv/Zmlz/3N1fP9vcXX/bnB3/3V3ff9wcnn/am13/2xudf9ucXv/am13/3Bzff9ucXv/
    +bG51/21vc/9ucXv/cHN9/2xudf91d33/bW9z/2xudf9sbnX/dXd9/2psc/9qbHP/bW9z/3V3ff9tb3P/
    +bG95/2xudf9qbXf/bG51/3V3ff9ucHf/bnB3/3Bzff9vcXX/bG95/2xvef9vcXX/cHN9/3V3ff9sb3n/
    +dXd9/25wd/9ucXv/c3Z//2ptd/9sb3n/bG51/3N1fP9nanT/gIKG/3Z4fP9vcXX/dXiB/25xe/9qbXf/
    +c3Z//3Bzff9sbnX/bG51/25wd/91eIH/c3V8/25xe/9sb3n/bnF7/2xvef9zdn//c3Z//3V4gf93eoP/
    +cHN9/3Byef9ucHf/cHN9/3d6g/9wc33/cHN9/3N1fP9ucXv/bnF7/3l7gf93eX//eXuB/3l7gf9ucXv/
    +dnh8/3Byef9zdXz/bnB3/25wd/9wcnn/bnF7/2xvef9wc33/bnF7/2xudf9ucHf/bnB3/25wd/9vcXX/
    +cHJ5/3V3ff95e4H/bnB3/25wd/9wc33/bnF7/3Bzff95e4H/foCG/3d5f/92eHz/fn+D/36Ahv9zdXz/
    +e32D/3+Bh/95fIb/e36H/3N2f/9+gIb/eHl9/3V3ff97fYP/d3l//3l7gf94eX3/e32D/3d6g/9+gIb/
    +c3V8/3d6g/9ucXv/Z2p0/29xdf93eX//c3Z//3l7gf94eoD/dXiB/3R2fv9qbXf/aGty/2dqcf9qbHP/
    +ZGdx/25wd/9nanH/Z2p0/2xvef9qbXT/aWty/3Fzev9qbHP/bnF7/21vc/9sbnX/dnh8/3N1fP9ucHf/
    +cHJ5/3Byef9zdXz/bnB3/25wd/9ucHf/b3F1/25xe/9sb3n/bG95/25xe/9ucXv/c3Z//3N2f/9wc33/
    +eXuB/3N2f/9wc33/fX6B/3l7gf9+gIb/e32D/3d5f/91d33/dXd9/3V4gf93eoP/d3qD/3N2f/93eoP/
    +d3qD/3t+h/97fof/eHuC/3R3gP93eoL/eXuB/3l7gf93eX//dXh+/3R2fP9ucXv/bnB3/25xe/9wcnn/
    +amxz/3Byef9sbnX/c3Z//3V4gf93eX//c3Z//3N2f/9ucXv/cHN9/25xe/93eX//bG95/3Byef9zdn//
    +dXiB/25xe/9wc33/dXiB/3t9g/9/gYf/d3qD/3Bzff91eIH/d3qD/3Bzff91eIH/d3qD/25xe/9sb3n/
    +cHN9/3Bzff9ucHf/cHN9/3N2f/91eIH/c3Z//3N1fP9zdn//cHJ5/3Bzff9sb3n/bnB3/3N1fP9zdXz/
    +b3F1/3Byef9wcnn/c3V8/2xudf91d33/cHJ5/25wd/93eX//c3V8/29xdf9ucHf/cHN9/2xvef91d33/
    +c3V8/2ptd/9sbnX/bnF7/3V3ff9sbnX/bnF7/2xudf9qbXf/bG51/3N1fP9kZ3H/am13/2xudf93eX//
    +amxz/2xvef9qbXf/ZGdx/2xudf9sb3n/Z2p0/2psc/9qbXf/amxz/2ptd/9sbnX/amxz/2xvef9zdXz/
    +amxz/25xe/9qbXf/am13/2xvef9wcnn/bnF7/25xe/93eX//cHJ5/4GEjf97fYP/d3qD/3l7gf91eIH/
    +bG95/3l8hv97fYP/cHN9/25xe/9sb3n/d3qD/3N1fP9ucXv/dXiB/3N2f/9wc33/c3Z//3V4gf93eoP/
    +eXuB/3Bzff9ucXv/bG95/2ptd/91d33/bnB3/3N1fP9ucHf/bG95/25xe/91eIH/d3l//3d5f/93eX//
    +bnF7/3d5f/9wc33/dXiB/2xvef9ucXv/dXiB/3N2f/91eIH/eXuB/3N2f/9ucXv/bnF7/3Bzff9zdXz/
    +cHJ5/3N2f/95e4H/d3qD/25wd/9ucHf/bnF7/3Bzff9wc33/dXd9/3d5f/9wcnn/bnB3/25xe/9zdn//
    +bG95/2xvef9wc33/bG95/3Byef9nanT/bnF7/25wd/9sb3n/dXd9/3Bzff9wcnn/am13/3Bzff9zdXz/
    +dnh8/29xdf9zdXz/am13/2Zpc/9qbXf/c3V8/3Byef9zdXz/dXd9/3J0e/92eH3/bW90/2xudv9tb3P/
    +bG95/2xvef93eX//c3Z//3d6g/90d4D/bXB6/25wef90dn3/b3F2/3V3ff9sbnX/amxz/3V3ff9zdXz/
    +cHJ5/3Bzff9sb3n/bnF7/25wd/9ucHf/b3F1/2xudf9sbnX/bG51/29xdf9sb3n/bnF7/3Bzff9ucXv/
    +cHJ5/3V4gf9zdn//c3V8/3V4gf9zdn//d3qD/3V4gf9wc33/cHN9/3Byef9wc33/c3Z//3N2f/9sb3n/
    +bnF7/3Bzff92eH7/c3Z//29yfP9ucXr/c3Z//3N2f/91d33/c3Z//3R2fP9zdoD/cHN9/3Bzff91eIH/
    +c3Z//3Byef9wc33/cHJ5/3N1fP9wc33/c3V8/3V3ff9wcnn/bnB3/3Byef9ucHf/dXd9/2ptd/9ucXv/
    +bG95/25xe/9maXP/amxz/2xvef9wc33/dXiB/2ptd/9sbnX/bG95/2xvef9sbnX/c3V8/3N1fP9sbnX/
    +am13/2xvef9sbnX/Z2p0/25xe/9wc33/dXd9/25wd/9vcXX/bnB3/2xvef9ucXv/cHN9/25xe/9zdn//
    +dXiB/25wd/9wc33/cHN9/3N2f/9sb3n/d3qD/3Bzff9sb3n/eXyG/3Bzff9vcXX/b3F1/3N1fP9qbHP/
    +cHN9/3Bzff9nanT/am13/2ptd/9wc33/amxz/2ptd/9nanH/Zmlz/2dqcf9maXP/YGNs/2Rncf9nanH/
    +c3V8/2xudf9sb3n/amxz/2Zpc/9qbXf/bnF7/2xudf9tb3P/cHJ5/25wd/9ucXv/bnF7/3Byef9ucHf/
    +cHN9/25wd/91eIH/bnF7/25xe/91eIH/dnh8/3N2f/91eIH/fn+D/3h5ff+Ji5H/fn+D/3l7gf9+f4P/
    +e32D/3N1fP9+f4P/foCG/3d5f/91d33/cHN9/3l7gf91d33/cHN9/3N2f/9wc33/bnF7/3V4gf9zdn//
    +dXiB/3V4gf9zdn//c3Z//3Byef9ucXv/c3Z//25xe/9ucXv/bnB3/25wd/9qbXf/dXd9/3d5f/91d33/
    +d3l//25wd/91d33/bnB3/3Z4fP9sbnX/c3V8/3V3ff9wcnn/cHJ5/3Z4fP9zdXz/b3F1/25wd/9wcnn/
    +b3F1/21vc/9zdXz/dXd9/3d5f/9qbXf/bG51/25xe/9sbnX/dXd9/3V3ff93eX//am13/2psc/9ucXv/
    +am13/2Jlbv9qbHP/am13/2dqcf9maXP/XWBq/2dqcf9kZ3H/Z2p0/3Bzff9qbXf/Z2px/2Rncf9sb3n/
    +bG95/3Bzff9qbHP/c3V8/2xudf9maXP/Z2p0/3Bzff9sbnX/c3V8/3V3ff9xdH3/cnV+/2xudv9tb3b/
    +bG51/2ptd/9ucHf/dnh8/25wd/9wcnn/bnB3/29xef9wcnn/dXh+/3Bzff95e4H/cHN9/2xvef95e4H/
    +c3Z//3V4gf9zdn//cHN9/3N1fP9ucHf/cHJ5/3Byef9wcnn/cHN9/3Byef9sb3n/cHN9/25xe/9wcnn/
    +bnB3/21vc/9wcnn/cHJ5/2xudf9zdXz/bG51/25xe/9wc33/bW9z/29xdf9ucHf/bnB3/3N1fP91d33/
    +bG95/3Byef9sb3n/dHZ9/3R3f/9ucXn/bnB3/25xe/91d33/dXd9/3N2f/91eID/eHqA/3J0e/93eYD/
    +foCG/3l8hv95e4H/e36H/3l7gf9zdn//c3Z//3V3ff93eX//bnF7/25xe/9wc33/dXiB/3V4gf9vcXX/
    +cHN9/3Bzff9zdn//bG51/29xdf9wcnn/dnh8/3l7gf9wcnn/bnF7/3N2f/91eIH/cHJ5/3V4gf93eoP/
    +bnF7/3N2f/9zdn//c3Z//3Bzff93eoP/eXyG/31+gf95e4H/c3Z//3V4gf9zdXz/c3Z//3N2f/9zdXz/
    +dXiB/3t9g/92eHz/eXuB/3d5f/95e4H/dXd9/3t9g/93eoP/c3Z//36Biv91eIH/bnF7/3Byef93eoP/
    +cHN9/3l7gf93eoP/bG95/2xvef9wc33/dXd9/2xvef9zdn//bG95/2xvef9zdXz/cHJ5/2dqcf9qbHP/
    +bW9z/3V3ff9qbXf/c3V8/25wd/9sb3n/cHN9/3V4gf9sb3n/bnF7/2xvef9ucXv/bnF7/3Byef9ucXv/
    +c3Z//3l7gf93eoP/eXyG/3d5f/93eX//fX6B/2ptd/9sbnX/am13/3Bzff9maXP/e32D/3Bzff9tb3P/
    +c3V8/2xvef9nanT/bnF7/25xe/9qbHP/bW9z/2psc/9ucXv/bG51/2Zpc/9sb3n/am13/2Rncf9qbXf/
    +am13/2dqdP9nanT/Z2px/2dqcf9nanH/ZGdx/2dqdP9maXP/Zmhu/2Jlbv9iZW7/ZGZs/25wd/9zdXz/
    +cHN9/3N1fP9nanH/bnF7/2dqcf9wc33/Z2p0/2ptd/93eX//bnF7/3Byef91d33/bnB3/25wd/9vcXX/
    +cHJ5/21vc/9ucHf/cHJ5/3Z4fP95e4H/bG51/25wd/9zdn//bG51/3h5ff91d33/d3l//3Byef9qbHP/
    +c3V8/25xe/9kZ3H/am13/2xvef9nanH/Z2p0/2BjbP9nanH/YmVu/2Jlbv9nanT/am13/2dqcf9kZ3H/
    +bnF7/3Byef94eX3/bW9z/3V3ff9ucHf/Zmlz/2Zpc/9zdn//cHJ5/3V4gf94eoD/c3Z//3J1f/9tcHj/
    +bW92/2xudf9sbnX/bG51/3N1fP9wcnn/cHJ5/25wd/9vcnz/bnB3/3N1fP9sbnX/c3V8/21vc/9sbnX/
    +eHl9/3N2f/91d33/bG95/2xvef9ucXv/b3F1/2xudf9vcXX/b3F1/21vc/9tb3P/b3F1/3N1fP9sbnX/
    +bG95/21vc/9ucHf/cHN9/3Byef9vcXX/eHl9/25wd/9zdn//dXd9/21vc/9sbnX/am13/2xudf9ucXv/
    +bnF7/21vc/9sbnX/bnB3/3V3ff9wc3v/bnB3/25wdP9sb3n/c3Z//3V4gf9ucXv/dHZ8/3V2ev9ucHf/
    +a253/3N2f/9zdXz/dXd9/3V4gf9zdXz/c3Z//3d5f/91eIH/d3l//3N1fP9ucHf/cHJ5/3Bzff9sb3n/
    +amxz/2ptd/9wcnn/bnF7/2Rncf9sbnX/bnF7/3Bzff91eIH/bG95/25xe/9wc33/bnF7/2ptd/9wc33/
    +cHN9/2ptd/9sb3n/am13/2xudf9maXP/cHN9/25xe/9wc33/bG95/2xudf9sbnX/amxz/2xudf9sbnX/
    +amxz/2ptd/9ucXv/Z2p0/2xudf9nanT/amxz/2BjbP9ucXv/am13/2xudf91d33/bnF7/2xudf9sbnX/
    +cHN9/2xudf9zdXz/c3V8/25wd/9ucHf/dXd9/3Z4fP9wcnn/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/
    +cHJ5/3N1fP97fYP/cHN9/3V4gf9wcnn/bG95/25xe/9zdXz/amxz/21vc/9ucHf/bnB3/2xudf9sbnX/
    +bnF7/2xudf9wc33/bG95/3Byef9sbnX/cHJ5/3V3ff9ucHf/cHJ5/25xe/91d33/am13/3+Bh/91d33/
    +bnB3/3Z4fP9ucHf/amxz/2xvef9wc33/Zmlz/2psc/9maXP/am13/2dqdP9nanT/am13/2Zobv9iZW7/
    +Z2px/2ptd/9maXP/ZGdx/2Zobv9kZ3H/Zmhu/2Zobv9maXP/ZGZs/2Rncf9iZW7/ZGdx/2Zobv9ucHf/
    +cHJ5/2Zpc/9wc33/Zmhu/25xe/9kZ3H/am13/2BjbP9kZ3H/bnB3/2ptd/9sb3n/bnF7/2ptd/9qbXf/
    +am13/2xvef9qbHP/bG51/21vc/91d33/dXd9/25wd/9vcXX/c3Z//2xvef91eIH/d3qD/3l8hv9wc33/
    +bnF7/3l7gf91eIH/bnF7/3N2f/97fYP/c3V8/3V4gf9sb3n/bnF7/2ptd/9ucHf/dXiB/3V4gf9ucXv/
    +am13/3V4gf95e4H/e32D/3Bzff93eX//cHJ5/25wd/9ucHf/dXiB/3N2f/95fIb/e32D/3l7gf9ydX//
    +bnF7/25wd/9sb3n/bnB3/2xvef9wc33/bnF7/3Byef9vcXn/c3V9/29yev91eH7/bG95/3V4gf9ucXv/
    +bG51/3Z4fP9wcnn/dXd9/2xudf9vcXX/bnB3/29xdf9qbHP/bG51/2xudf9tb3P/bG51/21vc/9wc33/
    +cHJ5/3Byef9wcnn/cHJ5/3V4gf9ucXv/bG95/3l7gf9ucXv/c3Z//25xe/9ucHf/cHJ5/25xe/9ucHf/
    +bnF7/3Bzff9ucHf/cHJ5/3Byef92eHz/c3V8/25wd/9sbnP/cHJ5/3Bzff9ucXv/am13/29yfP9xdHv/
    +a211/2psdP9wcnn/bG51/2xudf9sbnX/bW9z/3Z4fP92eHz/bnB3/3Z4fP9wcnn/am13/25xe/9zdXz/
    +bnF7/2xudf9qbXf/bnF7/3N1fP9nanH/cHJ5/3Byef91d33/e32D/3Byef91d33/c3V8/3Byef9tb3P/
    +cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/amxz/3Bzff9wc33/cHN9/2ptd/9sbnX/bG95/2dqcf9wcnn/
    +bnB3/25xe/9wcnn/dXd9/2xudf9ucHf/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/d3qD/3Byef9ucHf/
    +bW9z/3Byef9sbnX/c3V8/3Bzff9ucHf/bnF7/3V4gf95e4H/c3Z//3d6g/9ucXv/b3F1/3N1fP9ucHf/
    +Zmhu/2ptd/9qbXf/d3l//2xudf9ucXv/bG51/2psc/9wcnn/c3V8/25wd/9ucHf/bG95/3Bzff9wcnn/
    +bG95/3N1fP9ucHf/dXd9/25wd/9wcnn/am13/2xudf91d33/d3l//3t9g/9+f4P/fn+D/3l7gf+IipD/
    +foGK/3l7gf9+gYr/foCG/3N1fP97fYP/e32D/3V3ff93eX//eHl9/3l7gf91d33/dXd9/3d6g/9zdXz/
    +bG95/25wd/91d33/cHJ5/2xvef9sb3n/Z2p0/2psc/9qbHP/am13/2dqcf9qbXf/Zmlz/2Rncf9maG7/
    +cHJ5/3V3ff9qbXf/c3V8/2Zobv9kZ3H/ZGdx/25wd/9kZ3H/Z2p0/3Bzff9ucXv/cHN9/3Bzff9ucHf/
    +amxz/29xdf9wcnn/bnB3/2xudf9tb3P/dnh8/3V3ff9wcnn/b3F1/3Byef9wcnn/c3Z//3N1fP91eIH/
    +bG95/2ptd/91d33/dXd9/2xudf9ucHf/dnh8/2xudf9wcnn/bG51/2xudf9maXP/am13/3N1fP9zdXz/
    +bG51/2dqcf9wcnn/c3V8/3Z4fP9qbXf/dXd9/2ptd/9maXP/bG51/2Zpc/9maG7/Zmlz/2ptd/9sb3j/
    +bW92/21vdv9tb3f/bnB3/2ptd/9nanT/cHN9/3Bzff9sb3n/b3F4/29yfP9rbnj/cXR9/2hrdf9ucXv/
    +bG95/2ptd/9zdXz/bnF7/3Bzff9qbXf/am13/2xvef9vcXX/bG51/2xudf9sbnX/bW9z/2xudf9ucHf/
    +cHJ5/21vc/9sb3n/am13/3Byef9zdXz/bG95/2ptd/9zdXz/bG95/3N1fP9sbnX/bnB3/25wd/9sb3n/
    +bnB3/25xe/9zdn//bnB3/3Byef9wcnn/c3V8/3Fzev9ucXn/bG95/3Bzff9zdn//cHN9/25wd/9wc33/
    +cXN6/2xud/9sbnX/cHN9/25wd/9wcnn/bnB3/25wd/91d33/c3V8/2xvef9zdXz/bnF7/25xe/9qbXf/
    +bnF7/25xe/9qbHP/bG51/2ptd/9qbXf/Zmlz/2xvef9sb3n/bG95/3N2f/9sb3n/bnF7/25xe/9sb3n/
    +bG95/25xe/9wc33/bG95/25xe/9sbnX/bG51/2dqdP9zdXz/dnh8/3Z4fP9wc33/bnB3/3Bzff9sb3n/
    +bG95/29xdf9wcnn/dXiB/3d5f/9ucXv/c3V8/3N2f/9ucXv/bG95/3V4gf9zdn//cHN9/3l8hv91eIH/
    +cHN9/3Byef93eoP/bnF7/3V4gf9zdn//cHJ5/3Byef91eIH/eXuB/3N2f/91eIH/c3Z//3Bzff92eHz/
    +dXd9/2Zobv9ucHf/cHJ5/3V3ff9sbnX/bnF7/2xudf9nanT/cHJ5/3N1fP9sbnX/bnB3/25wd/9zdXz/
    +bnB3/3Bzff9wc33/bnB3/3V4gf9wc33/dXiB/3N1fP91eIH/e32D/3l7gf95e4H/e32D/3t9g/91d33/
    +g4WM/3d6g/9wcnn/dXiB/3V4gf9nanT/dXiB/3d6g/9wc33/c3V8/3N1fP9zdn//bG95/25wd/9ucXv/
    +bG95/29xdf9sbnX/dXd9/3Bzff9sb3n/bnB3/25wd/9ucHf/b3F1/3N1fP9ucHf/dXd9/2ptd/9nanH/
    +bW9z/3d5f/95e4H/cHJ5/3t9g/9ucHf/c3V8/21vc/91d33/bG51/3Byef93eX//bnF7/3N1fP9wcnn/
    +bnB3/2dqcf9sbnX/bG95/2psc/9sbnX/Z2px/2xvef9zdXz/Z2px/2Zobv9qbXf/ZGdx/2xvef9sb3n/
    +dXd9/2ptd/9qbHP/bnF7/25xe/9maXP/bG51/3N1fP9qbHP/cHJ5/2psc/9qbHP/ZGdx/2psc/9wc33/
    +cHN9/2ptd/9nanT/bG95/25xe/91d33/bG51/3d5f/9ucHf/bG51/2psc/9wcnn/bG51/3Byef9wcnn/
    +dHZ8/21vdv9tcHn/bG51/25wd/9sbnX/Zmlz/2xvef9sb3n/am13/25xe/9vcnn/bXB3/3V3fv9ucHf/
    +cHN9/3Byef9sb3n/d3l//3N2f/93eX//bnF7/2xvef9wc33/bnF7/2xvef9ucXv/cHJ5/3N1fP91d33/
    +c3Z//3d6g/9zdXz/cHJ5/25xe/91eIH/foCG/3V4gf9wc33/d3qD/3N2f/95fIb/c3Z//2xvef9sb3n/
    +bnF7/3Byef9wc33/dXiB/25xe/9ucXv/cHJ5/3N2f/9ydX7/cHJ5/2xvef9ucXv/c3Z//3Bzff9wc33/
    +cnV+/3J0ev9ucHn/a254/3Bzff9vcXX/b3F1/25xe/9wc33/dnh8/3N1fP9ucHf/d3l//3Byef92eHz/
    +bnF7/3N2f/95e4H/cHJ5/25xe/9zdn//cHN9/25xe/91eIH/d3qD/3d6g/97fof/dXiB/3t9g/99foH/
    +e32D/3d6g/93eoP/eXuB/3V4gf91eIH/dXiB/3V3ff92eHz/eXuB/3t9g/9+f4P/eXuB/3Bzff95e4H/
    +cHN9/3Bzff9wcnn/bnF7/3V4gf95e4H/cHN9/3Bzff93eoP/bnB3/2ptd/9ucXv/bnB3/2xvef91eIH/
    +cHN9/2xvef9vcXX/c3V8/25wd/9ucHf/c3V8/2xudf9sbnX/dXd9/3V3ff9wc33/dXiB/3V4gf9zdn//
    +eXuB/3N2f/9maXP/bnB3/3Bzff95e4H/dXiB/3l7gf9zdn//c3Z//3t9g/97fYP/c3V8/3Z4fP93eoP/
    +eXyG/3d5f/97fYP/foCG/3h5ff9+f4P/e32D/35/g/91d33/eXuB/36Ahv9sb3n/am13/3Bzff92eHz/
    +bnB3/3l8hv9wc33/bnB3/25xe/9ucXv/Zmlz/3V4gf97fYP/c3V8/3Byef9zdXz/d3qD/3V3ff93eX//
    +foCG/3Z4fP91d33/c3Z//3t9g/97fYP/d3qD/3V4gf91d33/dXd9/3N2f/95e4H/d3qD/3d6g/9sb3n/
    +bG95/3Byef95e4H/e36H/3Bzff95fIb/cHJ5/3V4gf9zdXz/c3Z//29xdf9zdXz/dXiB/3Bzff93eX//
    +cHJ5/2xvef9qbHP/bnB3/25wd/9tb3P/bW9z/25wd/9zdXz/dXiB/2xvef9ucHf/c3Z//3Byef91d33/
    +c3V8/3d5f/9wcnn/bW9z/3N1fP9zdXz/bG51/25wd/91d33/bW9z/3Bzff9sb3n/bnB3/2psc/9ucHf/
    +dnh8/3N2f/9vcXX/amxz/2xvef9wc33/c3V8/2xudf93eX//bG51/2xudf9qbHP/dXiB/3N2f/9zdn//
    +cHN8/3N1fP9tb3b/cXN6/25wd/9ucHf/b3F1/25wd/9ucXv/c3Z//3Bzff92eYL/dHZ+/3Fzev93eX//
    +bW92/3V3ff9wcnn/bnB3/3N1fP9ucXv/cHN9/2xvef9sbnX/cHN9/2xudf9kZ3H/am13/2ptd/9nanT/
    +Zmlz/2ptd/9wcnn/bG51/21vc/9ucHf/bnF7/3V3ff9sb3n/bG95/3N1fP9vcXX/dnh8/25wd/9sbnX/
    +am13/25wd/9vcXX/b3F1/3Byef9vcXX/dXd9/3Byef90dn3/cXN9/25wd/9tcHn/bXB6/25xe/9ucHf/
    +bnB3/3Byef9wc3r/bW94/2ptd/9zdXz/b3F1/21vc/9ucHf/bnF7/3V3ff9sb3n/bnB3/3V3ff9sb3n/
    +c3V8/3Byef9zdXz/c3Z//25wd/9ucXv/bG95/25wd/9wcnn/cHN9/3N1fP9ucXv/d3l//25xe/9wc33/
    +dXd9/3N2f/9wcnn/d3qD/3d5f/9zdn//c3Z//3Byef9wcnn/bnB3/25xe/9wc33/dXd9/2xudf9tb3P/
    +c3V8/2dqdP9sbnX/bG51/21vc/9wcnn/c3V8/2Rncf9qbXf/bnF7/2xudf9tb3P/am13/2xudf9qbHP/
    +dXd9/25xe/9qbXf/bG95/25xe/9sbnX/cHJ5/3V3ff9ucHf/cHJ5/3d5f/93eX//c3Z//3V4gf91eIH/
    +bG95/3V3ff91d33/Zmhu/25wd/91d33/dnh8/3Byef9wcnn/b3F1/2xudf9wcnn/cHJ5/2Rncf9nanT/
    +am13/2ptd/9nanT/bG51/2Zpc/9maG7/bG95/2dqdP9qbXf/Z2px/2dqcf9qbXf/c3V8/3Byef9wcnn/
    +dnh8/2xudf93eoP/am13/21vc/9qbXf/bG51/2psc/9zdXz/d3l//25wd/9ucHf/b3F1/25wd/9qbXf/
    +bG51/3V3ff9qbHP/amxz/29xdf9wcnn/c3V8/2xvef9ucHf/bG51/2ptd/9sbnX/c3V8/3N1fP9wcnn/
    +amxz/2xudf9qbXf/c3V8/3V3ff9qbXf/d3l//2xudf9ucHf/bG51/2xvef9sbnX/cHJ5/3Z4fP9zdXz/
    +c3V8/2ptd/9sbnX/amxz/2xudf9sbnX/bW9z/21vc/9sbnX/cHJ5/3V3ff9sbnX/bG51/3Z4fP9sb3n/
    +dXd9/3Byef93eX//bnF7/29xdf91d33/cHN9/2xvef9wcnn/eHl9/3Byef95e4H/c3Z//25wd/9qbXf/
    +bnB3/3d5f/91eIH/bnF7/25wd/9wc33/dXiB/3d5f/9ucHf/dXiB/25wd/9sb3n/Z2p0/2ptd/9sb3n/
    +bnF7/25xe/9wc3z/bnB3/29yev9ucHf/b3F1/2xudf9qbXf/bnF7/3N2f/9wc33/bXB6/3F0ff9sbnf/
    +cXR9/2ttdP9qbXf/Z2p0/2psc/9sb3n/bnF7/2xvef9ucHf/bG51/25wd/9sbnX/amxz/25wd/9vcXX/
    +bnB3/2ptd/9ucHf/bnF7/2xvef9sb3n/cHN9/25xe/95e4H/cHN9/3Byef91eIH/cHN9/3l7gf9wc33/
    +bG95/3Byef9ucHf/bnB3/21vc/9wcnn/bW9z/3Byef9ucHf/c3V8/2xudv9sbnX/a211/25xev9ucXv/
    +bnB3/3Byef9ydHv/b3J7/25wef9ucHf/c3V8/25wd/9vcXX/b3F1/3Byef9zdXz/bG51/3N1fP94eX3/
    +bnB3/3V3ff9ucHf/bnB3/3d5f/9wcnn/c3Z//3V4gf91eIH/bG95/3N2f/9wcnn/bnB3/3d5f/9sbnX/
    +cHJ5/3V3ff91d33/b3F1/3N1fP92eHz/c3V8/3Byef9ucHf/bnB3/21vc/9sbnX/c3V8/3d5f/9ucHf/
    +am13/25xe/9kZ3H/bG51/2ptd/9sbnX/bG95/3N1fP9maXP/bG51/2xvef9sb3n/bW9z/2xudf9ucHf/
    +bnB3/3V4gf9ucXv/bnB3/25xe/9wcnn/bnB3/3Byef91d33/bG51/2xudf92eHz/d3l//3N1fP9zdXz/
    +c3V8/25wd/91d33/c3Z//2dqcf9ucHf/dXiB/3t9g/91eIH/d3qD/3Bzff9ucHf/c3Z//3N2f/9sb3n/
    +bnB3/3N1fP9ucHf/bnB3/3Bzff9ucXv/bnF7/3Z4fP91d33/c3V8/25wd/9tb3P/cHJ5/25wd/9sb3n/
    +bnF7/3Z4fP9vcXX/e32D/25wd/9qbXf/am13/25wd/9nanH/cHJ5/3d6g/9sb3n/cHJ5/3Byef9wc33/
    +bnB3/25xe/91eIH/am13/2xvef9ucHf/bnF7/3Bzff9sb3n/bnF7/29xdf9ucHf/bW9z/3N1fP9wcnn/
    +c3V8/2xudf9ucHf/am13/3N1fP92eHz/am13/3V3ff9qbHP/am13/2xudf9qbXf/amxz/2xvef91d33/
    +cHN9/3V3ff9sb3n/bG51/2dqdP9qbHP/bG51/2xudf9sbnX/bG51/2ptd/9wc33/amxz/2Rncf9ucXv/
    +Z2p0/25xe/9sb3n/dXd9/2ptd/9qbXf/cHN9/25xe/9nanT/bG95/3V3ff9sbnX/cHN9/2ptd/9nanT/
    +ZGdx/2xudf9zdXz/cHN9/25wd/9vcXX/bG95/3V3ff94eX3/bnB3/3l7gf9ucXv/bnB3/2dqdP91d33/
    +bnB3/25wd/9wcnn/bnF7/21veP9wcnn/b3J8/3Byef9ucXv/am13/3Bzff9zdn//bG95/3Byef9ydH3/
    +cHJ7/3V2e/9vcXf/cHJ5/25wd/9sbnX/cHJ5/3Bzff9wcnn/bnB3/25wd/9wcnn/bG51/2Rncf9sbnX/
    +bG51/2dqdP9nanT/bG51/25wd/9ucHf/b3F1/3Bzff9wcnn/eHl9/3Byef9sb3n/cHN9/3Bzff93eX//
    +bG95/2xvef9ucXv/bG95/25wd/9vcXX/cHJ5/2xudf9ucHf/cHJ5/3N2f/9vcnz/b3J8/25xev9wc33/
    +cHN9/3Byef9ucHf/bnB3/3Fzev9tb3b/bW91/25xe/9qbXf/bG51/2xudf9sb3n/c3V8/2ptd/9zdXz/
    +dXd9/25wd/91d33/b3F1/25xe/93eX//bnB3/3Bzff9ucXv/c3Z//2xvef91eIH/bnF7/3Bzff95fIb/
    +d3qD/3l8hv97fof/e32D/3V3ff95fIb/e32D/3N2f/9zdn//bnF7/3Bzff9wcnn/bG95/25xe/91eIH/
    +bnB3/3Byef91d33/bG95/3Byef9sb3n/bnB3/3Bzff91d33/amxz/25wd/9wcnn/bnB3/25wd/9ucXv/
    +bnF7/2ptd/95e4H/bnF7/25xe/9zdn//cHN9/3Byef9wc33/d3l//3N1fP9wcnn/dXd9/3V4gf9wcnn/
    +cHN9/25xe/9ucXv/dXd9/3V4gf9maXP/am13/3Bzff94eX3/c3V8/3N1fP9vcXX/b3F1/3Byef91d33/
    +bnB3/2ptd/9wcnn/cHJ5/21vc/9zdXz/bG95/2ptd/91d33/c3V8/3V3ff9qbXf/am13/2xudf91eIH/
    +d3qD/3l8hv9+gIb/c3Z//4GDiv9zdn//c3Z//3Bzff9ucXv/am13/3N1fP95fIb/bnB3/25wd/9ucHf/
    +cHJ5/2xudf9sbnX/c3V8/2dqcf9sbnX/bG95/25xe/9zdn//bG95/2xvef9ucHf/bnB3/25wd/9wc33/
    +cHN9/3N2f/9ucHf/amxz/29xdf91d33/eHl9/2xudf92eHz/bW9z/25wd/9ucHf/bnF7/25wd/91d33/
    +dXiB/3V3ff92eHz/bnB3/2xudf9nanH/bnB3/2xudf9vcXX/bG51/2xudf9qbXf/bnF7/2ptd/9qbXf/
    +c3V8/2psc/92eHz/c3V8/3V3ff9wcnn/bnB3/3N2f/9wc33/am13/2xvef95e4H/bnB3/3Z4fP9ucHf/
    +bG51/2psc/9vcXX/dXd9/3N1fP9sb3n/cHJ5/25xe/95e4H/eXuB/3Byef93eX//bnB3/29xdf9nanH/
    +am13/2Rncf9maG7/Zmlz/2tueP9oa3P/am11/2ptd/9qbXf/bG51/2Rncf9qbXf/c3V8/2xudf9qbHP/
    +b3F6/2xud/9zdXr/bnB3/3Byef9wcnn/bnB3/3N1fP91eIH/cHN9/3N1fP9sb3n/cHN9/25wd/9nanT/
    +b3F1/29xdf9ucHf/bG51/2xvef9ucHf/bG51/2ptd/9ucXv/am13/3Z4fP9sbnX/bW9z/3Byef9wcnn/
    +dXd9/2xudf9nanT/bG95/2ptd/9nanT/bG51/25xe/9ucHf/cHJ5/2ptd/9vcnz/bW92/2xvd/9sb3n/
    +bG95/2dqdP9nanT/Z2p0/2ttdP9sb3n/bXB4/2xveP9zdn//bG95/2xvef9ucHf/cHN9/3N1fP9qbXf/
    +dXd9/3d5f/9qbXf/c3V8/2xudf9tb3P/d3l//2ptd/9ucXv/bG95/3Bzff9qbXf/bnF7/2psc/9maXP/
    +cHJ5/2ptd/9qbXf/cHN9/25xe/9sbnX/cHJ5/3N1fP9ucHf/bnB3/2xvef9wcnn/bG51/2xvef9wc33/
    +dXiB/2xvef9ucXv/d3l//2xvef9ucXv/bnB3/3Bzff9zdn//dXiB/2xvef9wc33/c3Z//25wd/9ucHf/
    +cHJ5/25wd/9nanH/dXd9/25wd/9tb3P/bG51/25wd/9tb3P/bG51/2xvef9sbnX/bW9z/3h5ff91d33/
    +cHJ5/3N1fP9wcnn/cHJ5/3Z4fP9wcnn/Z2px/2xudf9zdn//dXd9/25xe/9zdn//cHN9/3Bzff91eIH/
    +eXuB/3N1fP9ucXv/d3qD/3t9g/92eHz/fn+D/3l7gf97fYP/fX6B/3t9g/97fYP/c3V8/3Bzff91eIH/
    +c3V8/3Byef9zdXz/dXd9/25wd/9+gYr/d3qD/3N1fP9zdXz/cHN9/2xvef95e4H/f4GH/3Bzff9zdXz/
    +cHN9/3Bzff9ucHf/bG95/3N2f/9nanT/bnB3/3Byef91eIH/dXiB/3N2f/9zdn//c3V8/3Bzff9zdXz/
    +c3Z//25xe/9zdn//bnB3/2xvef9ucXv/dnh8/3Z4fP9wcnn/dnh8/21vc/9zdXz/bG51/2xvef9tb3P/
    +c3V8/3V3ff9ucXv/cHN9/2ptd/9nanT/XF9o/2Zpc/9qbXf/amxz/2dqcf9sbnX/bG51/3Bzff9nanH/
    +Zmlz/25xe/9qbXf/c3V8/3V3ff91d33/bG51/2psc/9wc33/am13/2dqdP9qbXf/dXiB/25wd/92eHz/
    +bnF7/25wd/9sb3n/b3F1/3N1fP9wcnn/bnB3/21vc/9sbnX/dXd9/3N1fP9tb3P/eHl9/29xdf9vcXX/
    +Zmhu/3V3ff9ucHf/bG95/3Byef9xdH3/bnF7/3Fze/9ucHf/bnB3/29xdf9sbnX/c3V8/3N1fP9ucHf/
    +b3F1/3J0ev9zdn//dnmD/3N2f/91eIH/bnF7/25xe/91eIH/eXyG/3d6g/91eIH/c3Z//3d6g/9wc33/
    +bnF7/25wd/9sb3n/bG95/2xvef9zdn//dXiB/3Byef9sb3n/dXd9/3Bzff93eX//bnB3/2ptd/9wcnn/
    +cHJ5/3Z4fP9ucHf/bG95/3N1fP9vcXX/am13/2xvef9zdXz/cHJ5/3N2f/9zdn//d3qD/3Bzff9xdH7/
    +c3Z9/3J1fP9zdXz/bnB3/2xudf9sb3n/bnF6/21veP9tb3j/c3Z//2xvef9ucHf/bnB3/3N1fP94eX3/
    +b3F1/3V3ff93eX//bnB3/3V3ff9ucHf/cHJ5/3V3ff9ucHf/bnF7/2xudf9ucXv/Z2p0/3Bzff9qbXf/
    +am13/25xe/9sb3n/Z2p0/2xvef9qbXf/YmVu/2Rncf9maXP/Zmhu/2Zobv9maG7/Z2p0/2Rncf9maG7/
    +Zmlz/25wd/9maG7/Zmhu/2xvef9gY2z/Zmlz/2Rncf9nanH/Zmlz/2Rncf9cX2j/Zmlz/2Zpc/9kZ3H/
    +YmVu/2Zpc/9nanT/YmVu/3N1fP9nanH/Zmhu/2Zpc/9qbHP/Z2px/2xudf9sb3n/am13/2xudf9wc33/
    +c3V8/25xe/9sb3n/am13/2ptd/9zdXz/bnB3/2Zobv9nanT/bnF7/3Bzff9sb3n/bG95/2ptd/9sbnX/
    +bG95/2xvef9sbnX/Zmlz/2ptd/9ucXv/am13/3N1fP9sbnX/cHJ5/3Byef9zdXz/dXd9/2xudf9vcXX/
    +c3V8/25xe/9wc33/bnF7/3Bzff9sbnX/e32D/3V3ff9ucHf/cHJ5/2xvef9nanT/dXd9/3l8hv9sb3n/
    +b3F1/25wd/9ucHf/bnB3/25wd/9zdn//am13/25wd/9wcnn/c3Z//3N2f/9ucHf/cHN9/3Byef9wc33/
    +bnF7/3V4gf9ucXv/dXd9/25wd/9qbHP/bnB3/3V3ff91d33/bnB3/3Z4fP9sbnX/c3V8/25wd/9sbnX/
    +bG51/25xe/9zdXz/c3V8/3V3ff9zdXz/bG51/2RmbP9nanT/am13/2dqdP9sbnX/bG95/25wd/9ucXv/
    +bG51/2dqdP9zdXz/bG95/3V3ff91d33/dXd9/2xudf9sbnX/dXd9/25wd/9vcXX/c3V8/3l7gf9sbnX/
    +c3V8/2dqdP9nanT/Zmlz/2ptd/9ucXv/bG95/2xudf9qbXf/amxz/3Bzff9wc33/bG51/3N1fP9sbnX/
    +bG51/2Jlbv93eoP/c3Z//3V4gf94e4X/eXuC/3V3ff9ydX3/a254/3Byef9tb3P/bnB3/3Byef9zdXz/
    +bW9z/21vc/9xcnj/dHZ+/3l6f/94eoH/foCG/3d5f/95e4H/c3Z//3d6g/97fYP/dXiB/3V4gf9zdn//
    +c3V8/3N1fP9zdXz/cHN9/2xvef9zdXz/d3qD/3N2f/9zdXz/bG95/3Bzff9wc33/d3l//3Byef9qbXf/
    +cHJ5/2xvef91d33/bG51/25wd/91d33/bnB3/2psc/9ucHf/c3V8/2xvef9ucHf/bG51/3Byef9ucHf/
    +cnR6/3N1e/9wcnn/dXd9/2ptd/9sb3n/am13/2tudv9qbXf/am13/3Bzff9sbnX/cHJ5/2xudf9qbXf/
    +dnh8/21vc/9sb3n/c3V8/2xudf9wcnn/bW9z/3Byef93eX//bnB3/2xvef9sbnX/cHN9/2xudf94eX3/
    +bnB3/25wd/93eX//dXd9/25xe/91eIH/dnh8/25wd/9wc33/dXd9/3N1fP9ucHf/bnF7/3l7gf9wcnn/
    +bnF7/3N2f/93eoP/bnF7/25xe/93eX//cHJ5/25xe/9ucHf/bnF7/2xvef9ucXv/bG51/2xvef9wc33/
    +b3F1/25wd/9wc33/bnB3/2psc/94eX3/bnB3/29xdf9ucHf/bG51/25wd/9ucXv/cHN9/3Byef9ucXv/
    +dXiB/3l7gf95e4H/cHN9/3Bzff9ucXv/eHl9/3V3ff9nanH/bG51/3Byef91d33/b3F1/25wd/9tb3P/
    +bG51/25wd/9ucHf/bG51/2dqdP9sb3n/am13/2Rncf9qbXf/bG51/3Bzff9qbXf/bG95/2xvef9kZ3H/
    +Z2p0/3Bzff9zdXz/c3V8/3N1fP91d33/bnB3/3t9g/9zdn//cHJ5/3N1fP9wcnn/am13/3d6g/95fIb/
    +cHN9/3Bzff9zdn//cHN9/3Byef9wcnn/d3qD/2xvef9zdXz/cHJ5/3V4gf95e4H/c3V8/3Bzff91d33/
    +d3qD/3d6g/91eIH/d3qD/3d6g/91eIH/dXd9/3t9g/97fYP/e32D/3l8hv97fof/cHN9/3d6g/9wc33/
    +c3Z//3N2f/93eoP/eXuB/3V4gf95e4H/dXiB/2ptd/9qbXf/cHJ5/25wd/9sbnX/bG51/2xudf9ucHf/
    +c3V8/21vc/9nanT/cHN9/25xe/93eX//dXd9/3Bzff9qbXf/bG51/3N1fP9sb3n/bG51/25xe/91eIH/
    +am13/25xe/9kZ3H/amxz/2Rncf9nanT/cHJ5/2ptd/9nanH/Z2p0/2Rncf9maXP/Zmlz/2Zobv9nanT/
    +YmVu/2Zobv9cX2j/bnF7/2ptd/9ucHf/b3F4/2tueP9tb3f/am12/2dpb/9maXP/Zmlz/2Rncf9maXP/
    +Z2p0/2dqcf9sbnT/a254/2tueP9wc3r/a253/25xe/9tb3P/bnF7/2xudf9sb3n/bnF7/2xudf9qbHP/
    +am13/2Rncf9maXP/Z2px/2xudf9iZW7/Z2p0/2xvef9qbXf/amxz/2dqdP9sb3n/bnF7/3V3ff9wcnn/
    +bnB3/3Bzff9wc33/e32D/3Bzff9ucHf/d3qD/3Bzff9sb3n/dXd9/3l8hv9zdn//d3qD/3N2f/93eoP/
    +cXR9/3Z4fv9ydHv/dHZ9/3Z4fP9ucHf/cHJ5/3Bydv9wcnr/b3F4/25wd/91eIH/bnB3/25xe/9sb3n/
    +cHJ5/3Z4fP9tb3P/am13/3N1fP9qbXf/bnF7/2dqcf9ucXv/dXd9/2xvef9ucXv/bG51/2xvef9qbHP/
    +dXd9/2ptd/9sbnX/dnh8/3N1fP9sb3n/dXd9/25xe/9nanT/Z2p0/25xe/9sb3n/amxz/2psc/9wc33/
    +am13/2xudf9wc33/dXd9/2psc/9qbHP/bnF7/2dqcf9sbnX/bW9z/25wd/9sbnX/bnB3/2xudf9qbXf/
    +bnF7/21vc/9vcXX/dXd9/21vc/9qbHP/eXuB/25xe/9wc33/cHN9/2xvef9ucHf/cHJ5/2xvef9ucHf/
    +bG95/25xe/91d33/dnh8/25xe/9sbnX/am13/3N1fP9ucXv/YmVu/2ptd/9sb3n/bnF7/2psc/9qbHP/
    +Z2px/2dqcf9nanH/Z2px/2dqdP9maXP/am13/2dqdP9kZ3H/bG95/2psc/9wc33/bG95/3Bzff9zdXz/
    +Z2px/21vc/9zdn//cHN9/3Z4fP91d33/c3Z//25xe/95fIb/c3Z//25wd/9ucHf/bnB3/2ptd/9zdn//
    +e32D/25wd/9vcXX/cHN9/25xe/9ucHf/cHJ5/3V4gf9nanT/bnB3/25wd/93eoP/c3Z//2xvef9ucHf/
    +bG95/3Bzff9wcnn/cHN9/2xvef9ucXv/bG51/2xudf9ucHf/bnF7/3N1fP9zdXz/dXd9/25wd/9wcnn/
    +am13/2xvef9qbXf/cHN9/3Bzff9sb3n/cHN9/2xvef9iZW7/YGNs/2psc/9sb3n/Zmlz/2xudf9sbnX/
    +bW9z/3N1fP9tb3P/amxz/3N1fP9ucHf/d3l//3V3ff9ucXv/am13/2ptd/9wc33/am13/2ptd/9ucHf/
    +e32D/3Byef91d33/bG51/25wd/9ucHf/cHJ5/3V3ff9ucHf/amxz/25xe/9wcnn/bG95/25xe/9sbnX/
    +cHN9/29xdf9sbnX/Z2px/2xvef9qbHP/am13/2xvef9tb3b/b3F5/29yev9tb3P/cHJ5/2xvef9sbnX/
    +bG51/3N1fP9vcXX/a211/2xudv9vcXn/cnR7/25wd/9wcnn/bG51/2xvef9qbHP/am13/2xvef9sbnX/
    +Z2p0/25xe/9nanT/am13/2xudf9qbXf/Zmlz/2ptd/9sb3n/bG95/2ptd/9qbXf/c3V8/3Byef92eHz/
    +cHJ5/25wd/9sb3n/bG95/3N1fP9wcnn/bG51/3N1fP9qbHP/Z2px/2xudf9ucHf/bW9z/3Bzff9qbHP/
    +bG51/25weP9xdHv/cXR8/25xe/91d33/b3F1/3N1fP9ucHX/bnB3/21vdf9rbXP/c3V8/2ptd/9sb3n/
    +am13/2xudf91d33/bG51/2xvef91d33/bnB3/3Byef9sbnX/cHN9/3V4gf9wcnn/bG95/2ptd/9wcnn/
    +b3F1/3h5ff9tb3P/bG51/3N1fP91d33/bnB3/3l7gf9zdn//bnF7/3Byef93eX//d3l//25xe/9wcnn/
    +d3l//2xvef9sb3n/cHN9/3V3ff9ucHf/bnB3/3V3ff9ucHf/bG95/2xudf9wcnn/bnB3/3Byef9ucHf/
    +bnB3/25xe/9qbXf/bW9z/3Bzff9qbHP/ZGdx/3N1fP9qbHP/am13/2xvef9nanT/amxz/2xudf9qbXf/
    +bG51/2xudf9sb3n/dXd9/2xvef9ucXv/bG95/2xudf9zdXz/bG95/2BjbP9maXP/bG95/3Bzff9nanT/
    +am13/2dqdP9qbHP/am13/2ptd/9qbXf/Z2p0/25xe/9sb3n/Zmlz/2xvef9sbnX/cHN9/2ptd/9zdXz/
    +c3V8/2Rncf9sbnX/dXd9/3N2f/91d33/dXd9/3V4gf9ucXv/dXiB/3Bzff9ucHf/cHJ5/25wd/9sb3n/
    +c3Z//3t9g/9sb3n/b3F1/25wd/9ucHf/b3F1/29xdf9zdXz/Zmhu/25wd/9sbnX/c3V8/3Bzff9qbXf/
    +bnB3/2psc/9wcnn/am13/3Byef9sbnX/cHJ5/2xudf9tb3P/bG51/3Byef91d33/bnF7/3d5f/9ucHf/
    +cHJ5/3Byef9ucHf/cHN9/3V3ff95e4H/dXd9/3V3ff9wc33/bG95/2ptd/9vcXX/bnB3/2ptd/9sb3n/
    +bnB3/21vc/9zdXz/bW9z/2psc/91d33/am13/3V4gf94eX3/cHJ5/25wd/9ucHf/cHJ5/2xudf9qbXf/
    +bG95/3N2f/9qbXf/bG95/2Rncf9nanT/Zmlz/3Bzff9wc33/am13/2dqdP9sb3n/bnF7/2xudf9ucXv/
    +amxz/2xvef9sbnX/bnF7/2Rncf9zdXz/bG51/21vc/9sbnX/b3F4/3FzfP9vcnv/bnB3/3N2f/9zdn//
    +bnF7/3Byef9wc33/bnB3/25xe/9xc3v/cXR9/3d5gP9wc33/dXiB/3Bzff9ucXv/bnB3/25xe/9wc33/
    +bnF7/25wd/93eX//bG95/25xe/9wc33/cHN9/2xvef9wcnn/c3Z//3Bzff9wc33/c3V8/3d6g/91eIH/
    +e32D/3Byef9zdn//cHN9/3N2f/93eX//c3Z//3Byef91eIH/cHN9/3Bzff9zdn//d3qD/3V4gf97fYP/
    +c3V8/3Bzff9xdH3/cnR7/3F0fv9wc3r/cHJ5/2xudf9wc33/am13/25xev9tb3b/a210/3N1fv9wc33/
    +c3Z//2xvef9wcnn/dXd9/2xudf9zdXz/eHl9/3Bzff9zdXz/bnB3/3V3ff93eoP/c3Z//3N2f/91d33/
    +eXuB/3N1fP97fof/c3Z//3N2f/9+gIb/e32D/3l8hv9/gYf/d3qD/3N1fP9zdXz/foCG/3t9g/93eoP/
    +dXiB/36Ahv91d33/c3V8/3t9g/9+gIb/dXd9/3N1fP93eX//bG95/25wd/9vcXX/c3Z//25xe/91eIH/
    +bnB3/3Byef9zdXz/bnF7/3Byef91eIH/cHN9/3V3ff95fIb/cHN9/3V4gf95fIb/dXd9/3N1fP9zdn//
    +cHN9/3Byef9ucXv/cHN9/3d6g/91eIH/c3Z//3V4gf9ucXv/dXiB/3V4gf9nanT/bG51/3N2f/93eX//
    +cHN9/25wd/9sbnX/bG51/25wd/9sbnX/c3V8/2xudf91d33/bnB3/2psc/9zdXz/bG51/3V3ff9ucHf/
    +c3Z//3h5ff9qbHP/bnB3/3N2f/9wc33/c3V8/3N1fP9zdXz/cHN9/3h5ff9ucHf/bnB3/25wd/9nanT/
    +bG95/3V4gf9/gYf/cHN9/3Byef9ucXv/cHN9/3Byef9zdXz/dXiB/2dqdP9wc33/bnB3/3Bzff93eoP/
    +c3V8/3N2f/9ucXv/dXiB/3Bzff91eIH/c3V8/3t9g/91eIH/c3Z//3d6g/91eIH/e32D/3l8hv9+gYr/
    +eXuB/3l7gf95fIb/dXiB/3t9g/97fof/e36H/3l7gf95e4H/d3qD/25xe/9qbXf/cHJ5/3N1fP9sb3n/
    +bnF7/3Byef9wcnn/dXd9/29xdf9qbHP/dnh8/3N1fP93eX//dnh8/2xvef9qbXf/bG95/25xe/9sbnX/
    +bG95/2xvef93eX//bG95/25xe/9qbXf/am13/2dqdP9zdXz/bG95/2psc/9nanT/bG95/2xvef9qbHP/
    +Z2p0/2dqcf9sb3n/Zmhu/2Rncf9dYGr/cHJ5/2xudf9sb3n/a210/2ttdf9rbnj/aGpx/2Rncf9maXP/
    +Zmlz/2Zobv9iZW7/ZGdx/2Jlbv9maXP/aGpw/2xvd/9xc3r/bG51/3N1fP9qbXf/bnF7/2ptd/9sb3n/
    +bnF7/25wd/9sbnX/dXd9/2psc/9sbnX/bnB3/29xdf9nanH/bnB3/25wd/9ucXv/bnB3/2xvef9zdXz/
    +dnh8/3V3ff9sb3n/cHN9/3Byef9ucXv/c3Z//3Bzff9wcnn/dXiB/25xe/9ucXv/bG95/3V4gf91eIH/
    +foCG/3V3ff91eIH/dHeA/3R3fv90d4D/dHeA/3Bzff9ucXv/cHJ5/2xudf9vcXj/bW94/21vdv9zdn7/
    +cHN9/3Z4fP9ucHf/c3V8/3V3ff9ucHf/dXiB/3d5f/91d33/cHJ5/2xudf9sb3n/dXd9/25xe/9sb3n/
    +Zmlz/25xe/9qbHP/bnF7/2ptd/9qbHP/cHN9/2xvef9ucXv/dXiB/2xvef9tb3P/am13/3N1fP9ucXv/
    +Z2p0/2psc/9wcnn/Zmlz/2Zpc/9sb3n/bnF7/2dqdP9sbnX/c3V8/2ptd/9qbXf/amxz/25xe/9sb3n/
    +bG95/2dqdP9sbnX/bnB3/25wd/9tb3P/cHJ5/2xudf9qbXf/dXd9/3Byef9ucHf/bnB3/25wd/9ucHf/
    +bnF7/3Bzff9ucHf/bnF7/2xvef95fIb/bnF7/25xe/9wc33/bG95/3V4gf9zdXz/ZGdx/2Zpc/9wc33/
    +bnF7/2ptd/9sb3n/am13/2xvef9qbXf/amxz/2ptd/9maXP/bnF7/2Zpc/9gY2z/am13/2psc/91d33/
    +bG95/2xvef91d33/ZGdx/2psc/9ucXv/dXiB/3Z4fP91eIH/d3l//3d6g/97fYP/d3qD/3N2f/9zdn//
    +cHN9/3V3ff97fYP/g4WM/3Bzff9ucXv/cHN9/3Byef9ucHf/cHJ5/3V4gf9qbHP/dXiB/25wd/9ucXv/
    +dXiB/25wd/9wcnn/am13/3Bzff9ucXv/cHJ5/21vc/9zdXz/bnB3/21vc/9zdXz/bnB3/3h5ff9ucHf/
    +dXd9/25wd/9ucHf/c3V8/2xudf9wc33/d3l//3d5f/91eIH/cHN9/3N2f/9nanT/Z2p0/25xe/9sb3n/
    +bG95/2xvef9ucHf/bnF7/3V4gf9wcnn/Zmlz/3V3ff9wc33/d3l//3h5ff91d33/b3F1/25wd/9zdXz/
    +bnB3/3Byef9ucHf/d3l//25xe/9sb3n/bG51/2xudf9sbnX/cHN9/3V3ff9ucHf/bG51/3N1fP91d33/
    +bW9z/25wd/9tb3P/bnF7/2ptd/9sbnX/Zmhu/2xvef9qbHP/bnF7/2xudf9vcXb/cXN7/29xev9sb3n/
    +c3Z//25xe/9ucHf/bG95/2xvef9ucHf/cHJ5/21vdv9wcnj/dXd7/29xe/9wc33/bnF7/3Byef9ucHf/
    +cHJ5/3Bzff9ucHf/bnB3/3Z4fP9nanT/am13/2xudf9tb3P/ZGZs/29xdf9ucHf/c3V8/25wd/9ucHf/
    +bnB3/3N1fP91d33/bnB3/3N2f/9ucHf/bnB3/3N1fP9wc33/cHJ5/3N2f/9sb3n/Z2p0/2ptd/9zdn//
    +bnF7/3d5f/9wc33/cXN9/3R3f/91eH//dXiB/3V4gf9wc33/bnF7/3Bzff9ucXr/cnR9/3Bzff9ucXv/
    +dHZ9/3N2f/91d33/bG95/3Byef91d33/bG95/3Bzff91eIH/c3V8/2xvef9ucHf/c3V8/3V3ff9wcnn/
    +bnB3/25wd/92eHz/bG95/3d5f/9ucXv/bnB3/3l7gf9zdXz/c3V8/3l7gf9ucHf/bW9z/2xudf92eHz/
    +cHJ5/3Byef9sbnX/dnh8/2ptd/9qbXf/dXd9/3Z4fP9sbnX/bnB3/3d5f/9ucHf/amxz/2xudf9zdXz/
    +bnF7/3Bzff9qbXf/bG51/21vc/9wcnn/bnB3/3N2f/9ucHf/bG51/3Bzff9ucHf/bnB3/3Bzff9ucHf/
    +b3F1/29xdf9wc33/cHJ5/3N2f/91eIH/foGK/3V4gf95fIb/eXyG/3N2f/9+gYr/d3qD/3Bzff9wc33/
    +e32D/3d6g/91eIH/eXyG/3N2f/95fIb/dXiB/3V4gf95fIb/cHN9/3t9g/95fIb/cHN9/3V4gf9wcnn/
    +d3l//3V3ff92eHz/eXuB/2dqdP9ucHf/dXiB/2ptd/9ucXv/bG95/3Bzff9sb3n/dXd9/2xudf9qbXf/
    +am13/2dqdP9nanT/bnF7/3l7gf9sbnX/bG51/25wd/9sbnX/am13/2xudf9ucXv/ZGZs/2ptd/9maXP/
    +bG95/3N1fP9nanT/amxz/2Zpc/9qbXf/bG51/25wd/9tb3P/dXd9/3Byef9sbnX/dXd9/3Byef92eHz/
    +c3V8/3h5ff9ucHf/bG51/3V3ff9ucXv/dXiB/3l8hv95fIb/d3qD/3N2f/91eIH/bnF7/25xe/91eIH/
    +cHJ5/3Byef9zdn//bnB3/25wd/9wc33/bnF7/2dqdP91eIH/dXiB/3l7gf95fIb/dXiB/3N1fP9wc33/
    +c3Z//2xvef9zdn//bnF7/3l7gf9zdn//bnF7/25wd/9vcXX/b3F1/3N1fP9zdXz/bnB3/2psc/9zdn//
    +dXd9/2xudf9wcnn/bG95/2xvef9sbnX/bG51/1xfaP9ucXv/bG95/3N1fP9tcHr/bW91/3ByeP9tb3j/
    +aGp0/2xvef9qbXf/bG95/2dqdP9sbnX/bnB3/29xef9oa3X/bG93/3Byev9rbnj/bnF7/2xudf9sb3n/
    +bG95/2xvef9sb3n/bnB3/2ptd/9wc33/Z2p0/2ptd/9qbXf/bG51/2Jlbv9qbHP/Z2p0/2xvef9qbHP/
    +amxz/2ptd/9ucXv/bG95/2psc/9ucXv/am13/2xudf9ucXv/bG95/2xudf9sbnX/ZGdx/2dqdP9kZ3H/
    +bG95/3Byef9zdXz/bG95/21vdP9ucHf/cnR6/3Fzev9vcXj/bG95/2xudf9ucHf/bG51/2ptd/9rbnj/
    +a254/3J1fv91d33/dXd9/29xdf9wcnn/c3Z//25xe/91eIH/d3qD/3N2f/9ucHf/bnB3/3N1fP93eX//
    +bnF7/25xe/9qbXf/c3Z//3Bzff91d33/bnF7/2xudf94eX3/cHJ5/3V3ff91eIH/bnF7/25wd/9sb3n/
    +dXd9/25wd/91d33/bG51/3Z4fP9qbHP/Z2p0/3Bzff92eHz/bG51/3Byef92eHz/bW9z/2xudf9vcXX/
    +dnh8/3N1fP9zdXz/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/bG51/2ptd/9ucXv/am13/2psc/9wc33/
    +Zmlz/2ptd/9maXP/am13/2dqcf9maXP/Z2px/25wd/9kZ3H/Zmhu/2Zpc/9nanH/cHJ5/2Zpc/9gY2z/
    +YmVu/2Zpc/9qbXf/Zmhu/2dqdP9iZW7/Z2p0/2Zobv9maG7/am13/2Rncf9maXP/Zmhu/2BjbP9maXP/
    +ZGdx/2ptd/9nanT/bG95/3Byef9kZ3H/ZGdx/2ptd/91d33/dXd9/3V3ff94eX3/cHJ5/3N2f/9ucXv/
    +c3V8/3V4gf9zdXz/bnB3/3N2f/9+gIb/bnB3/29xdf9ucHf/bG51/2xudf9ucHf/dXd9/2ZobP9ucHf/
    +bG51/25wd/92eHz/bG51/2xudf9qbHP/bnB3/29xdf9ucHf/bG51/3Bzff9qbXf/bG51/25xe/9wc33/
    +bG95/3Bzff9zdXz/am13/2xudf91d33/bG51/3Byef91d33/d3l//3N2f/9ucXv/cHN9/2xvef9sbnX/
    +cHJ5/29xdf9sbnX/bG95/2ptd/9vcXX/c3V8/3Byef9maG7/c3V8/3N1fP92eHz/d3l//3V4gf9ucHf/
    +cHN9/3Bzff9wcnn/d3qD/3Bzff95e4H/cHN9/2xvef9sb3n/bnB3/29xdf91d33/dXd9/3Bzff9sb3n/
    +dXiB/3V3ff9ucHf/cHJ5/3Byef9wcnn/bnB3/3Byef9maG7/cHJ5/25wd/9wc33/bnB3/25weP9wcnn/
    +bXB5/25wd/9wcnn/b3F1/3N1fP9sbnX/bnB3/3Byef9vcXj/bG52/2xvef9vcnv/bXB5/2xvef9sbnX/
    +bG95/2Zpc/9nanT/Z2p0/2psc/9nanH/cHN9/2Zpc/9qbXf/am13/2ptd/9iZW7/bG51/2xvef91d33/
    +bnB3/25wd/9zdn//d3qD/3N2f/9wcnn/dXiB/3N2f/9zdXz/eXyG/3V4gf91d33/dXiB/3N1fP9zdn//
    +bnF7/3l8hv99foH/foCG/3V4gf91d33/dXiB/3V3fv90d4D/cXR+/25xe/9wcnn/c3Z//3Byef9wcnr/
    +cHJ5/2tueP90d4D/d3l//3V3ff9ucHf/cHN9/3V3ff9wc33/c3Z//3d6g/91d33/bG95/2xvef9zdn//
    +eXyG/25xe/9ucHf/bnB3/3Z4fP9wcnn/c3V8/2xudf9nanH/cHN9/2ptd/9ucXv/d3l//21vc/9tb3P/
    +b3F1/3Z4fP9ucHf/cHJ5/2ptd/94eX3/bnB3/2dqcf9ucHf/c3V8/2psc/9wcnn/dnh8/29xdf9qbHP/
    +bW9z/3N1fP9zdXz/cHJ5/2xudf9qbXf/am13/2xvef9qbHP/am13/2dqcf9kZ3H/am13/2psc/9maG7/
    +Z2p0/1xfaP9gY2z/YmVu/2dqdP9kZ3H/ZGdx/2Zobv9ucHf/Zmlz/2Rncf9nanT/Z2px/25xe/9qbXf/
    +ZGdx/2Zpc/9wc33/c3V8/2xudf9zdXz/bG51/2xvef9qbXf/am13/3N1fP9ucHf/cHJ5/25xe/9maXP/
    +cHN9/25wd/92eHz/cHJ5/25xe/9zdXz/amxz/2xudf91d33/dXd9/3N1fP92eHz/d3l//3N1fP91d33/
    +bG95/29xdf9wcnn/amxz/2xudf9wcnn/eXuB/3Byef9tb3P/bG51/2Zpc/9nanT/am13/3N1fP9gY2z/
    +am13/2dqdP9qbXf/bnF7/2dqcf9ucHf/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/cHJ5/21vc/9wcnn/
    +dXd9/3Byef92eHz/dnh8/25xe/9ucXv/eXuB/3N1fP91eIH/e36H/3t+h/93eX//cHN9/3N2f/9ucHf/
    +am13/3V3ff9ucHf/bG95/3Byef9sb3n/bnF7/3N2f/9ucXv/am13/3N1fP9ucXv/dXd9/3d5f/91eIH/
    +bG95/25wd/9ucXv/bnB3/3N2f/9sb3n/d3l//3Bzff9ucXv/bG95/25wd/9ucHf/d3l//3Z4fP9sb3n/
    +am13/3V3ff9zdXz/bnB3/3N2f/9wc33/cHN9/3N2f/91eIH/Z2p0/25xe/9ucHf/dXd9/3R3gP9wcnv/
    +cnR8/3Bzff9ucXv/c3Z//25xe/9zdn//bG95/3Bzff9zdn//bnF7/3F0ff9zdn//cXR+/3F0ff9wcnn/
    +bW9z/3N1fP9ucHf/bG95/2ptd/9qbHP/amxz/2xvef9maXP/Z2p0/2ptd/9qbXf/ZGdx/2psc/9qbXf/
    +dXd9/2xudf9tb3P/cHJ5/3N1fP9wc33/Z2px/25xe/9sbnX/bW9z/3Byef9sbnX/am13/2xudf9ucHf/
    +bG51/2Zpc/9ucXv/dXd9/3N1fP9sbnX/bG92/29xef9wc3v/dHd//3F0ff9wcnn/cHJ5/3Byef9ydHz/
    +bnB4/21weP9tb3f/cHN9/3Bzff9wc33/amxz/2xvef95e4H/dXiB/3N2f/9+gYr/eXyG/3d5f/93eX//
    +foCG/4OFjP97fYP/dXiB/25xe/95fIb/c3Z//3t9g/9wc33/cHN9/3d5f/9wc33/c3Z//3d6g/9ucXv/
    +cHN9/29xdf93eX//bnB3/3N1fP9ucHf/eHl9/2psc/9maXP/bG95/25xe/9maXP/bG51/3N1fP9sbnX/
    +Zmlz/2xudf9zdXz/cHN9/25xe/9qbXf/am13/2Zpc/9ucXv/amxz/2dqdP9maXP/Zmlz/25xe/9qbHP/
    +Z2px/2dqdP9iZW7/Zmhu/2Jlbv9nanT/Zmhu/2Zpc/9maG7/bnB3/2dqdP9kZ3H/Z2p0/2Rncf9nanT/
    +ZGdx/11gav9gY2z/am13/2ptd/9maG7/am13/2dqcf9ucXv/bnF7/2ptd/9zdXz/am13/2ptd/9qbXf/
    +Z2px/3N1fP9ucHf/eHl9/3Bzff9wc33/d3l//2xudf9ucHf/c3Z//3l7gf91eIH/eXuB/3l8hv91eIH/
    +dXiB/3V4gf9wc33/dXiB/25xe/9ucHf/bnF7/3l8hv9zdn//cHJ5/3Bzff9ucXv/cHN9/3V4gf9+gIb/
    +bG95/3V4gf9zdXz/dXiB/3d6g/9qbXf/cHJ5/2xvef9wcnn/bG95/2xvef9sb3n/c3V8/3N1fP9ucHf/
    +c3V8/3N1fP9wc33/dXd9/3d5f/9sb3n/cHJ5/3N1fP9qbXf/bG95/3V3ff91d33/dnh8/3V3ff9ucXv/
    +bnB3/2xvef91eIH/c3V8/2xvef9wc33/am13/3Byef93eoP/cHN9/2dqdP9wc33/cHN9/3V3ff94eX3/
    +dXd9/2xudf9vcXX/bnB3/2dqcf9wcnn/bG51/3V3ff9wcnn/bG51/2ptd/9nanT/bG51/25xe/9qbXf/
    +Z2px/2Rncf9ucXv/Zmlz/2Jlbv9kZ3H/Z2px/2Zpc/9qbXf/Z2p0/11gav9nanT/amxz/25xe/9qbXf/
    +a211/2lrdP9oa3X/aWtz/2xvef9sb3n/cHN9/2psc/9wcnn/bnB3/2xuc/9sb3n/amx1/2hrdP9oam//
    +ZGdx/2Zobv9nanT/Zmlz/2Zpc/9nanH/ZGdx/2dqcf9ucXv/am13/2ptd/9sb3n/bG95/2Zpc/9qbXf/
    +bnB3/3V3ff9wcnn/bnB3/25xe/9zdn//c3V8/25wd/9wc33/bnF7/25wd/91d33/bnB3/25wd/9ucHf/
    +bnB3/2ptd/9maG7/c3V8/3N1fP9wcnn/bG51/21vc/9ucHT/bnB3/3Byef9wcnr/bG95/2xvef9ucHf/
    +cnR7/2xudv9rbXb/aWx2/25xe/9zdXz/dXd9/25wd/91d33/c3V8/2xvef9qbXf/d3l//2xvef9qbHP/
    +bG51/25xe/91eIH/bnF7/25wd/9kZ3H/dXd9/2ptd/9ucXv/am13/2xvef9sb3n/bG51/2xvef91d33/
    +am13/2ptd/9sbnX/dXd9/25wd/91d33/bG51/3Z4fP9nanT/am13/25wd/9zdXz/bG51/29xdf9zdXz/
    +b3F1/2psc/9ucHf/dXd9/3N1fP9ucXv/am13/2ptd/9qbXf/cHN9/2xudf9ucXv/bG51/25wd/92eHz/
    +bG51/21vc/9zdXz/bG51/29xdf9qbXf/cHN9/25xe/9zdXz/bnB3/3h5ff9zdXz/bnB3/25wd/9vcXX/
    +c3Z//25xe/9sb3n/bG95/3d5f/9zdn//cHN9/3d6g/9wcnn/dXiB/3V4gf9wcnn/e32D/3Bzff9zdn//
    +cHN9/2ptd/9ucXv/bG95/3d5f/9wc33/c3Z//3d6g/9sb3n/cHN9/3l7gf95e4H/cHN9/3V4gf91eIH/
    +c3V8/25wd/9wc33/bG95/3V4gf9qbXf/cHJ5/25xe/93eoP/cHN9/29xdf9zdXz/bnB3/21vc/9qbXf/
    +cHN9/2Rncf9ucXv/Z2p0/25wd/91d33/amxz/21vc/9tb3P/am13/25wd/9ucXv/bG95/3d5f/91eIH/
    +dXiB/3V4gf9zdn//dXiB/3V4gf95e4H/c3Z//3d6g/97fYP/dXiB/3d6g/97fof/e36H/3d6g/93eoP/
    +cHN9/25xe/9sb3n/dXd9/2xvef9ucXv/cHN9/2xudf9sb3n/bnF7/2dqdP9gY2z/Z2p0/2ptd/9wcnn/
    +cHN9/2ptd/9nanT/bG51/2xvef9kZ3H/bnF7/2ptd/93eX//bnB3/21vc/9qbXf/am13/2xvef93eX//
    +cHN9/2ptd/9maXP/dXd9/3Bzff9qbXf/bnF7/2xvef9wcnn/c3V8/3V3ff9maG7/amxz/2ptd/9wc33/
    +bnF7/25wd/9ucHb/bW93/3J0e/9zdn//cHN9/3V4gf9sb3n/dXiB/25xe/9sb3n/b3J8/21wev9tcHr/
    +b3J7/2xvef9sbnX/bnF7/2dqdP9sbnX/amxz/2ptd/9sbnX/cHJ5/2xudf9sbnX/cHJ5/2xvef9kZ3H/
    +bG51/25wd/91d33/cHJ5/29xdf9ucXv/dXiB/3N2f/9ucHf/cHN9/3Bzff9wcnn/c3Z//25xe/9qbXf/
    +bnF7/2xvef9ucHf/ZGdx/25xe/9ucXv/bG95/2dqdP9qbXf/bW92/2tudv9sb3n/bG95/2dqdP9maXP/
    +Zmlz/2xudf9laHH/Y2Zw/2Zpc/9ydHv/bnF7/2ptd/9sbnX/cHN9/25xe/9qbXf/am13/3Byef9qbXf/
    +Z2p0/2xudf9zdXz/d3l//3V3ff9ucHf/amxz/3l7gf9wc33/cHN9/25wd/9ucHf/cHN9/3Byef91eIH/
    +eXuB/3Byef9wc33/bnB3/3d6g/9wc33/dXiB/3N1fP95fIb/dXd9/3N1fP9zdn//c3Z//3Bzff9zdn//
    +d3qD/3Bzff9sb3n/c3Z//3l8hv97fYP/dXiB/3N2f/9zdn//c3V8/3t9g/9zdn//dXiB/25wd/9wcnn/
    +c3Z//25wd/9ucHf/dXd9/2psc/9ucHf/Z2p0/3Bzff9ucXv/cHN9/2xvef93eX//c3Z//3Bzff9wc33/
    +bnB3/3N2f/9wc33/cHJ5/2xvef95e4H/cHN9/3Byef93eX//cHJ5/3V4gf9zdn//bG95/3d5f/9zdXz/
    +cHN9/2xvef9sb3n/bnB3/3Byef93eX//c3V8/25xe/95e4H/bG95/2xvef95e4H/dnh8/25wd/93eX//
    +d3l//25xe/9sb3n/cHN9/25wd/9zdn//bG95/25wd/9ucXv/eXyG/3N1fP9tb3P/c3V8/25wd/9vcXX/
    +bG51/3Byef9maG7/cHJ5/25wd/9wc33/dXd9/2xudf9ucHf/bnB3/2xudf9ucHf/cHJ5/3Byef92eHz/
    +cHJ5/3N1fP9wc33/bnF7/2xvef9sb3n/bnF7/2ptd/9ucXv/cHN9/25wd/9ucHf/dXd9/3d5f/9zdn//
    +dXd9/25xe/9sb3n/bG95/3V3ff9ucHf/bnB3/3N1fP9sbnX/bnB3/3Z4fP9ucHf/Z2px/2xvef91eIH/
    +d3qD/3d6g/91eIH/am13/2xvef9ucXv/bnB3/3Byef9sbnX/dXd9/2xvef9sbnX/bG51/2xudf9qbXf/
    +dXd9/25xe/9nanT/Z2p0/3Bzff9zdXz/amxz/2xvef9qbXf/am13/25xe/9wc33/YmVu/2dqdP9sbnX/
    +bnF7/2xvef9pbHb/a254/2xuc/9rbnX/cHJ5/25wd/91d33/am13/3Bzff9wcnn/cHJ5/29xef9ucHn/
    +bnF5/29ye/9sb3n/amxz/25xe/9ucXv/am13/2dqdP9tb3P/bG51/25xe/9tb3P/bnB3/3Bzff9wcnn/
    +Zmhu/25wd/9wcnn/c3Z//3N2f/9sb3n/bG95/3Bzff9zdn//bnB3/3Bzff9zdXz/bnB3/3V4gf9wc33/
    +am13/3Bzff9ucHf/bnB3/2Zpc/91eIH/d3qD/3Bzff9sb3n/cHJ5/2xvef9rbnj/cHJ3/2xudv9qbXf/
    +Zmlz/2xudf9qbXf/aGp0/2dqdP9tb3X/dXd8/3V3ff9wcnn/bW9z/3d5f/9zdXz/bnF7/25wd/91d33/
    +c3V8/2xudf9vcXX/d3l//3l7gf92eHz/bnB3/2dqdP93eX//cHN9/25xe/9wcnn/cHJ5/3N2f/9wcnn/
    +d3qD/3l8hv9zdXz/cHN9/2xvef93eX//cHJ5/3N1fP9ucHf/dXd9/2xudf9tb3P/b3F1/25wd/9maG7/
    +bG51/3Byef9qbHP/YmVu/25wd/93eX//dXd9/25wd/9sbnX/cHJ5/29xdf91d33/b3F1/3Byef9ucHf/
    +b3F1/3N2f/9ucHf/bnB3/3V4gf9qbXf/c3Z//3Bzff95e4H/eXuB/3d6g/9zdn//foCG/31+gf97fYP/
    +d3l//3h5ff97fYP/d3qD/3N2f/9wc33/e32D/3d6g/9wc33/e32D/3N2f/95fIb/d3qD/25xe/95e4H/
    +dXiB/3V4gf9ucXv/bG95/25wd/9wcnn/d3qD/25xe/9wcnn/dnh8/2xudf9sbnX/dXd9/3N1fP9wcnn/
    +eHl9/3Z4fP9ucHf/am13/2xvef9nanT/bG95/2dqdP9sbnX/bG51/3N2f/9wc33/amxz/2ptd/9nanT/
    +am13/2xvef9sb3n/ZGdx/3Bzff9ucHf/c3V8/3N1fP9nanH/bG51/2ptd/9qbXf/am13/3N1fP9ucHf/
    +dXd9/3N1fP91d33/c3V8/25wd/9wcnn/bG95/2ptd/9nanT/bnF7/3Z4fP9sbnX/bnB3/3V3ff93eX//
    +c3V8/25xe/9qbXf/am13/2xudf9zdXz/am13/2xvef9ucXv/Zmlz/2xudf9zdXz/bnB3/2Vmav9ucHf/
    +c3V8/3l7gf9wc33/c3Z//2dqdP9wcnn/bG51/2psc/9zdXz/bG51/3V3ff9wcnn/bW9z/2ptd/9sbnX/
    +cHN9/3V3ff9ucXv/am13/29xdf92eHz/c3Z//29xdf9wcnn/cHN9/25xe/9wc33/dXd9/2dqcf9qbXf/
    +bnB3/3Bzff90d4D/cnR7/29yfP9sb3n/bnF7/3N2f/9zdn//eXuB/3N1fP91eIH/dXiB/3V4gP9ucXv/
    +b3J8/3BzfP9vcnv/bnF7/25wd/9zdn//bG95/29xdf9sb3n/b3F1/25wd/9zdn//bnB3/25wd/9wc33/
    +cHN9/2Zpc/9wcnn/c3V8/3V4gf91eIH/bnB3/2xvef9zdn//dXd9/2xvef9zdn//dXiB/25xe/93eX//
    +bnF7/2ptd/9wc33/bnB3/25wd/9qbXf/d3l//3V4gf9zdn//bG95/3Byef9tb3b/bW94/29ye/9wcnn/
    +bnB3/2xvef9sb3n/c3V8/2xvef9qbXf/b3F5/3V3ff94eX3/c3V8/25wd/94eX3/d3l//3V3ff9ucHf/
    +d3l//3V3ff9tb3P/bW9z/3V3ff95e4H/cHJ5/2ptd/9maXP/c3V8/2dqdP9nanT/Z2p0/2dqdP9qbXf/
    +Zmlz/2xvef91d33/Z2p0/2xudf9nanT/dXd9/2ptd/9ucXv/am13/3d5f/9ucHf/bnB3/3Byef9ucXv/
    +ZGdx/2xvef9wc33/bnB3/2psc/9wcnn/e32D/3V3ff9ucHf/bG95/25wd/9ucHf/eXuB/25wd/9ucXv/
    +bG95/2xvef93eX//bnB3/25xe/91eIH/bG95/3Byef9sbnX/dXd9/3Byef9ucHf/bG51/3Z4fP9zdXz/
    +am13/2xudf9sbnX/bnB3/25xe/9qbHP/Zmlz/3V3ff9ucXv/bG51/3V3ff9tb3P/am13/2ptd/9kZ3H/
    +dXd9/2xvef9ucHf/am13/2ptd/9qbXf/bG51/3V4gf9sb3n/bnB3/3V3ff9sbnX/bG95/3V3ff9zdn//
    +bnF7/3d5f/95e4H/cHN9/3Bzff91eIH/bnB3/3Bzff9ucHf/bnF7/29xdf95e4H/c3Z//2xvef9wcnn/
    +bG51/2xvef9ucXv/bnF7/2Zpc/9zdn//bnB3/3N1fP9zdXz/Zmhu/29xdf9ucHf/cHJ5/29xdf94eX3/
    +c3V8/3N1fP9ucXv/bnF7/3Bzff9sb3n/bnF7/2xvef9sb3n/Z2px/25xe/9zdXz/amxz/2ptd/9ucXv/
    +dXd9/2xvef9qbXf/Z2px/2psc/9kZ3H/am13/2psc/9qbXf/bG95/2Rncf9sbnX/cHJ5/2xudf9lZmr/
    +bnB3/3V3ff93eoP/cHN9/3d5f/9qbXf/cHJ5/29xdf9qbHP/dXd9/2psc/93eX//cHN9/2xvef9sb3n/
    +bG95/3V4gf93eoP/cHJ5/25wd/9tb3P/dXd9/3V3ff9qbHP/bG95/2xvef9wcnn/am13/25xe/9maG7/
    +bG95/2xvef9zdn//b3J8/3Fzev9vcnr/a253/2xudf9ucXv/am13/3N1fP9sbnX/cHN9/25xe/9qbXf/
    +bnF6/25xef9tcHr/bXB6/2ptd/9qbXf/bG95/2psc/9qbHP/Z2p0/2dqcf9sbnX/bnF7/2psc/9maXP/
    +bG95/2xvef9gY2z/Z2p0/21vc/9ucHf/bnB3/2psc/9sbnX/bG95/3N1fP9qbXf/bnF7/3Z4fP9wcnn/
    +d3l//3Bzff9qbXf/c3V8/2xudf9sbnX/amxz/3V3ff9zdXz/c3V8/2psc/9ucHf/b3F4/25wd/9xc3n/
    +bnB3/2ptd/9sbnX/bnB3/2xvef9qbXf/aWx2/29xeP91d33/dnh8/3N1fP9sbnX/dnh8/3d5f/9zdXz/
    +bnB3/3V3ff9zdXz/bW9z/2xudf92eHz/d3l//3Bzff9sb3n/Z2p0/3Bzff9ucXv/bG95/2ptd/9qbXf/
    +am13/21vc/91d33/eHl9/29xdf9ucHf/bG51/3Z4fP9sbnX/dXd9/2xudf93eX//bnB3/21vc/9tb3P/
    +c3V8/2Rncf9wcnn/dXiB/3Bzff9ucXv/dXiB/4GDiv91eIH/bnF7/25wd/9ucHf/bG95/3Z4fP9ucHf/
    +bG95/25wd/9qbXf/d3l//25wd/9sb3n/c3Z//25wd/9wc33/Zmlz/3N2f/9zdn//bnF7/2xvef93eX//
    +dXd9/3Bzff9ucHf/am13/3Bzff9wc33/bnB3/2ptd/92eHz/cHN9/29xdf91d33/bnF7/25xe/9wcnn/
    +Z2p0/3d6g/9zdn//c3Z//3Bzff9ucXv/cHJ5/3Byef91eIH/bnF7/2xvef91d33/bnB3/3N2f/95e4H/
    +bnB3/2xvef91d33/cHN9/2ptd/9nanT/bG95/2Zpc/9nanT/Zmhu/2dqcf9kZ3H/c3V8/25xe/9maXP/
    +am13/2Zpc/9qbHP/am13/2ptd/9kZ3H/cHN9/2dqdP9wcnn/bG95/2BjbP9qbHP/amxz/2ptd/9sbnX/
    +cHN9/25xe/9wc33/bnF7/25xe/9ucXv/am13/3N1fP9zdXz/c3V8/2xudf9zdXz/dnh8/3Byef9ucHf/
    +dXd9/3N1fP9ucXv/cHJ5/2ptd/9ucXv/am13/3Bzff9sb3n/bG95/25wd/9ucHf/bG95/3Bzff9ucXv/
    +Z2p0/3Bzff9wc33/eXuB/3V3ff92eHz/Z2px/2xvef9wcnn/Z2p0/3N2f/9nanT/d3l//3Bzff9tb3P/
    +bnB3/29xdf9zdn//d3l//3Bzff9sb3n/bG95/3V4gf94eX3/bnB3/3N1fP9zdXz/cHJ5/2xvef9zdn//
    +amxz/2psc/9nanT/bnF7/2hqdP9ucHb/bXB4/2xvdv9ucHf/dXd9/29xdf92eHz/b3F1/3Z4fP9zdXz/
    +bnB3/3Byef9wcnn/cXN6/3N1fP9wcnn/cHJ5/3Z4fP9ucXv/bG95/2xvef9sb3n/bG95/3V4gf9zdXz/
    +cHJ5/3V4gf9wc33/am13/25xe/9ucHf/bG95/25wd/9vcXX/bG51/3N1fP91d33/bG51/3Bzff9zdXz/
    +bnB3/3N1fP9sbnX/Z2px/2xvef9vcXX/bnB3/2Rncf9zdXz/bG95/2xvef9maXP/bG95/2hrdf9wcnn/
    +cHJ7/3J0fP9ucHf/Z2p0/25xe/9zdXz/b3J7/2ptdf9sb3n/c3V8/3V3ff9sb3n/bG51/3V3ff91eIH/
    +bnF7/3Byef92eHz/dXd9/2xudf9sbnX/dnh8/3d6g/91d33/cHN9/2ptd/91eIH/d3qD/3d6g/9ucHf/
    +bG95/25wd/9ucHf/dXiB/3l7gf9wc33/c3V8/3N2f/9+gYr/eXuB/35/g/92eHz/f4GH/3V3ff91eIH/
    +dXd9/35/g/9wcnn/eHl9/31+gf93eX//eHl9/3d5f/+Fh43/fn+D/3l7gf92eHz/dXd9/3Bzff9+gYr/
    +c3Z//3Bzff9sb3n/cHN9/3l7gf9wcnn/c3V8/3V4gf9zdXz/dXiB/2dqdP9zdn//c3Z//3Bzff9sb3n/
    +dXd9/3Z4fP9wc33/bG51/2Zpc/9wc33/cHJ5/29xdf9ucHf/dXd9/3Byef9ucHf/eHl9/2xvef9ucHf/
    +cHJ5/25wd/93eX//dXd9/3Byef9ucHf/bnB3/2xudf9vcXX/dXd9/2xudf9sbnX/c3V8/2ptd/9wcnn/
    +eHl9/3Bzff91eIH/dXiB/3V3ff9wcnn/bnB3/3V3ff9qbHP/cHN9/3Byef9ucXv/bG95/3V4gf93eX//
    +Z2p0/25xe/9sb3n/bnB3/3N1fP9ucHf/bG51/3Bzff9nanT/am13/25xe/9maXP/am13/2xudf9sbnX/
    +bG51/3V3ff9ucHf/cHJ5/3N1fP9ucXv/c3V8/25wd/9ucHf/cHJ5/3N1fP9vcXX/dXd9/3h5ff9wcnn/
    +cHJ5/3V3ff9zdXz/cHJ5/25wd/9qbHP/bnF7/2xudf9sb3n/bG95/2dqdP9nanT/Zmhu/2Rncf9nanT/
    +Z2px/1xfaP9maG7/ZGdx/3Byef9maXP/bnB3/1lcZf9iZW7/Zmhu/2Jlbv9nanT/XWBq/2xvef9nanT/
    +amxz/2xudf9qbHP/bnF7/3d5f/9qbXf/Zmlz/2xudf91eIH/d3l//2xudf9zdXz/cHJ5/3N1fP9sb3n/
    +dXd9/2Zpc/9maG7/Z2px/2ptd/9oanT/bnB5/29xeP9ucHj/bG51/3Z4fP9vcXX/dnh8/29xdf91d33/
    +bnF7/3Bzff91eIH/dHZ+/3N1ff9zdn3/bnF7/25xe/91d33/cHJ5/25wd/9ucHf/bnB3/25wd/9wc33/
    +b3F1/29xdf9ucHf/bG51/2Zobv9tb3P/bW9z/2xudf9sbnX/am13/2psc/9wc33/c3V8/2xudf9wc33/
    +cHN9/25xe/9wc33/bW9z/2xudf9zdXz/b3F1/25wd/9maG7/dnh8/3Byef9zdXz/Z2px/3Byef9ucHj/
    +cHJ6/25xef9tb3b/bG51/2RmbP9sbnX/bnF4/25wd/9sb3j/dHZ+/3V4gf95e4H/bnF7/3Byef91eIH/
    +dnh8/3Byef9ucXv/c3V8/3N1fP9ucHf/b3F1/3d5f/97fYP/dXd9/3Bzff9sb3n/d3l//3Z4fP9zdXz/
    +amxz/2xudf9qbXf/am13/2xvef9zdXz/amxz/2psc/9kZ3H/c3V8/2Zpc/9qbXf/ZGdx/3Byef9iZW7/
    +ZGZs/2Rncf9maXP/XV9l/2Rncf9nanT/ZGZs/2BjbP9iZW7/cHN9/2ptd/9maG7/YmVu/2Jlbv9iZW7/
    +cHJ5/2dqcf9kZ3H/YGNs/2Rncf9kZ3H/YmVu/2dqcf9qbXf/bG51/2ptd/9iZW7/bnF7/25xe/9qbXf/
    +bG51/3N1fP91d33/c3V8/25wd/9qbHP/cHN9/3Bzff9wcnn/cHJ5/3d6g/91eIH/cHJ5/3t9g/9wc33/
    +c3Z//3N2f/9wcnn/eXyG/3l7gf9ucXv/cHJ5/2xvef9wcnn/bnB3/3d6g/9ucXv/cHJ5/3t9g/9wc33/
    +d3qD/3d6g/9wc33/d3qD/3t9g/9zdn//cHN9/3Byef91d33/Z2p0/2xvef9ucHf/c3Z//25xe/93eoP/
    +eXuB/2xvef9zdn//cHJ5/25xe/9wc33/b3F1/2xudf9zdXz/am13/25wd/9wcnn/Zmlz/2ptd/9sbnX/
    +bG95/2ptd/9zdXz/bW9z/25xe/9zdXz/c3V8/3Bzff9sbnX/bnB3/3Bzff9sb3n/bG51/3V3ff93eX//
    +bnB3/3Byef9wcnn/cHJ5/3Byef91d33/bG51/3Byef9tb3P/bnF7/25xe/9sb3n/am13/2xudf9nanT/
    +am13/2dqdP9iZW7/am13/25xe/9zdn//bG95/3V3ff9kZmz/bW9z/21vc/9ucHf/dXd9/2dqdP95e4H/
    +cHN9/2xvef9sb3n/bnF7/3Bzff93eX//bnF7/2xvef9ucXv/e36H/3d6g/9ucHf/dXd9/3Byef9wcnn/
    +bnB3/3N1fP9qbHP/bG51/2xudf91d33/bW93/29xeP9tcHj/aGt1/2Vocf9ucXv/amxz/3d5f/9sbnX/
    +bnF7/3Byef9wcnn/cXN6/3F0ev9wc33/c3Z//3Byef9wc33/eXuB/3Bzff9wc33/bnF7/3Bzff9ucXv/
    +cHN9/25wd/9ucHf/cHJ5/21vc/9nanH/b3F1/25wd/9ucHf/bG51/2ptd/9sbnX/dXd9/3N1fP9qbXf/
    +cHN9/3Byef9wcnn/c3Z//2xudf9sbnX/c3Z//2ptd/9ucHf/ZGdx/3N2f/9zdn//c3Z//2ptd/9zdn//
    +cXN7/3N2gP91eIH/cnV//3N1fP9qbXf/cHJ5/29xeP9ucHj/bW94/3J0e/90d3//eXyG/3Bzff9ucXv/
    +d3l//3d5f/9ucXv/c3V8/25xe/9wcnn/bnB3/25wd/91d33/e36H/3Z4fP9wcnn/bnB3/3V4gf91d33/
    +dnh8/25wd/9wcnn/c3V8/3Byef9zdn//e32D/2xvef9sb3n/Z2p0/3d6g/9zdn//dXiB/25wd/93eX//
    +Z2p0/2xvef9ucHf/c3V8/2ZobP9sbnX/c3V8/2psc/9nanT/amxz/3l7gf9ucXv/Zmlz/2Zobv9sbnX/
    +ZGdx/3Bzff9maG7/amxz/2Zpc/9qbHP/bnB3/2xudf9ucHf/cHJ5/2xvef9wc33/Z2p0/3Bzff9wc33/
    +dXiB/3N2f/93eoP/d3qD/3l7gf91d33/c3Z//3V4gf95fIb/cHN9/3N1fP95fIb/d3qD/3V3ff95fIb/
    +cHN9/3V4gf9wc33/bnB3/3d5f/91d33/bnB3/2xudf9sbnX/bW9z/25wd/94eX3/bG95/2xvef93eX//
    +bnB3/3N1fP9zdn//bnF7/3d6g/93eX//cHN9/3Bzff9zdn//dXd9/2psc/9ucHf/bW9z/2xvef9qbXf/
    +c3V8/3V3ff9kZ3H/bG51/2dqcf9maG7/Z2p0/2Rncf9kZ3H/bG95/2dqcf9qbHP/Z2p0/2Rncf9qbHP/
    +Z2px/2psc/9qbHP/cHN9/2ptd/9zdXz/c3V8/3N1fP91d33/cHN9/3Bzff91eIH/bnF7/25wd/9zdn//
    +d3qD/3Bzff9zdn//c3Z//3N2f/91eIH/dXiB/3Byef93eoP/cHN9/3d6g/95fIb/d3qD/3d6g/9wc33/
    +c3Z//3V4gf9wc33/am13/3N1fP93eoP/e32D/3l7gf95fIb/am13/3N2f/9zdXz/c3V8/3l7gf9sb3n/
    +eXuB/3V4gf9ucHf/bnB3/25xe/9zdXz/d3l//25xe/9nanT/bnF7/3d6g/93eoP/bnF7/3Bzff91d33/
    +cHN9/25xe/93eX//Zmlz/2xvef9zdXz/e32D/3Bzff9zdXv/dHZ//3F0fv9sb3n/d3qD/3N1fP93eoP/
    +cHJ5/3N2f/9zdn//c3Z//3Bzff9zdX3/dHeA/3V4gf9zdn//cHN9/3d6g/9wc33/bnB3/2dqdP9ucHf/
    +cHJ5/3Byef9ucHf/b3F1/3Bzff9vcXX/Z2px/2xudf9sbnX/amxz/2ptd/9nanT/Z2p0/25xe/9sb3n/
    +amxz/2ptd/9ucXv/am13/3N1fP9qbXf/Z2p0/25xe/9nanT/bG51/2RmbP9wcnn/bnF7/2xvef9kZ3H/
    +bG95/2lsc/9ucXr/b3F5/2xvef9ucHf/Z2p0/2xvef9ucHf/bG52/2dqdP9tcHf/bG94/3Byef9nanH/
    +Zmlz/3Byef94eX3/bnB3/3N1fP9wcnn/c3V8/2xudf9ucHf/c3V8/3l7gf9zdXz/bG95/21vc/92eHz/
    +c3V8/3Bzff9sbnX/bG51/21vc/9sbnX/bnB3/3V3ff9tb3P/bG51/2dqdP91eIH/c3V8/3Byef9tb3P/
    +eHl9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/am13/3V3ff9ucHf/bG51/25wd/9+gIb/cHN9/3Byef9tb3P/
    +bG51/2psc/97fYP/bG51/2ptd/9qbXf/b3F1/3N1fP9ucHf/bG51/3N1fP9ucHf/cHN9/2Zpc/9qbXf/
    +am13/2ptd/9qbHP/cHN9/2xvef9wc33/bG51/2Rncf9qbHP/am13/2ptd/9sbnX/c3V8/2ptd/9nanT/
    +d3l//2xudf9sb3n/bG51/2xudf94eX3/dXd9/3Byef9vcXX/bG95/25wd/9sb3n/eXuB/3Bzff9wcnn/
    +eXuB/3Byef9zdn//eXuB/3Bzff9ucXv/dXd9/3V3ff9wc33/c3Z//3N2f/9sb3n/cHJ5/3Byef9wc33/
    +cHJ5/3d5f/97fYP/cHJ5/25xe/9ucHf/b3F1/3Byef9sbnX/am13/3N1fP9tb3P/am13/25xe/9kZ3H/
    +am13/2ptd/9ucXv/bG51/3N1fP9ucHf/c3V8/3N1fP9ucHf/dXd9/25xe/9qbXf/cHN9/2xudf9sbnX/
    +c3V8/3V3ff9ucHf/dXd9/3Byef9wcnn/cHJ5/3Byef9tb3P/cHN9/2ptd/9sb3n/am13/25xe/9sb3n/
    +am13/2dqdP9qbXf/am13/2BjbP9qbHP/cHN9/3V3ff91d33/dnh8/2Vmav9ucHf/bnB3/2xvef91eIH/
    +Z2p0/3N2f/9zdn//bnF7/2xvef9ucXv/c3Z//3d6g/9ucXv/am13/25xe/95e4H/eXuB/21vc/9zdXz/
    +c3V8/2xudf9sbnX/c3V8/2Zobv9qbXf/bG51/3V3ff9rbXX/bG52/25vdf9sb3j/Zmlz/3Bzff9sbnX/
    +d3l//21vc/9sbnX/c3V8/3V3ff9vcnv/bnB3/29xef9zdn//bnF7/3N1fP91eIH/bnF7/25xe/9ucHf/
    +cHN9/3N2f/9zdn//cHJ5/3N1fP91eIH/cHJ5/2Zpc/9ucXv/bnB3/29xdf9ucHf/bG95/3Bzff91eIH/
    +cHN9/25xe/9ucXv/c3Z//29xdf92eHz/bW9z/2psc/9wcnn/amxz/25wd/9nanH/c3Z//3Bzff9ucXv/
    +Z2px/3N1fP9ucHf/cHJ7/3R2f/9xdH7/cHJ5/2dqdP9sb3n/cHJ5/29xeP9tb3j/cnR6/3R2ff93eX//
    +bnB3/3Byef93eX//dnh8/2ptd/9wcnn/cHJ5/3Byef9qbHP/cHJ5/3h5ff93eX//dXd9/25xe/9vcXX/
    +eHl9/3d5f/91eIH/c3V8/3N1fP9wc33/cHJ5/2xvef9zdn//bG95/2xvef9sb3n/d3qD/25xe/9wc33/
    +bG95/3d5f/9sbnX/b3F1/25wd/9ucHf/ZGZs/2Zpc/9wc33/amxz/2dqdP9sbnX/d3l//2dqdP9sb3n/
    +Z2px/2Zobv9gY2z/eXuB/2Zpc/9sbnX/amxz/2xudf9zdXz/bW9z/2xvef91d33/bG95/3V4gf9sb3n/
    +c3Z//3d6g/91eIH/cHN9/3l7gf93eoP/foCG/3N2f/9ucXv/c3V8/3N2f/91eIH/dXd9/36Ahv9zdn//
    +c3V8/36Biv9zdXz/cHN9/29xdf9vcXX/dnh8/3V3ff9wcnn/bW9z/25wd/9ucHf/am13/3d5f/9ucXv/
    +am13/3h5ff9sb3n/c3Z//3t+h/9sbnX/bG95/3N1fP9ucXv/cHN9/25xe/9ucXv/Z2p0/2ptd/9sbnX/
    +cHJ5/25wd/9zdn//dXd9/2xvef9vcXX/bW9z/2xudf9ucXv/am13/21vc/91d33/bnB3/25wd/91d33/
    +Z2px/25wd/9wcnn/c3Z//25wd/95e4H/d3qD/3d6g/93eX//cHN9/3Z4fP9wcnn/bnB3/3N1fP9sbnX/
    +bnB3/3V3ff93eX//cHJ5/3N1fP9wcnn/c3V8/3Byef91d33/bW9z/3V3ff9ucHf/cHJ5/3N1fP9ucXv/
    +am13/2xudf9qbXf/bG95/2xudf9iZW7/am13/3N1fP9zdXz/c3V8/3d5f/9lZmr/bW9z/2xudf9ucHf/
    +c3Z//2dqdP9wc33/c3Z//3Byef9sbnX/cHJ5/3N1fP93eoP/bG51/2psc/9ucHf/d3l//3d5f/9ucHf/
    +dXd9/3V3ff9ucHf/bnF7/3d5f/9qbXf/cHJ5/29xdf91eIH/bnF7/3Fze/9ydHz/bnF7/2ptd/91d33/
    +bnB3/3V3ff9vcXX/bnF7/3N2f/93eoP/cnV8/25wd/9tb3j/dnh8/25wd/9vcXX/bnB3/2xvef9qbXf/
    +Zmlz/25xe/9qbXf/am13/2dqcf9kZ3H/Z2p0/2Zobv9gY2z/Z2p0/2Zpc/9maXP/amxz/2Rncf9qbXf/
    +am13/2dqdP9sb3n/am13/3Bzff9sbnX/dnh8/29xdf9qbHP/cHN9/3Byef9zdn//Zmlz/3Bzff9wc33/
    +cHN9/2ptd/9zdn//bnB3/3FzfP9wcnr/a211/25wd/9sbnX/bG95/25weP9xc3r/cHN7/3J1fv94eoP/
    +fYCJ/3N2f/93eoP/eXyG/3d6g/9zdXz/dXiB/3d6g/9wc33/am13/25wd/93eoP/eXuB/3d5f/9zdn//
    +bnF7/3t9g/95e4H/c3Z//3Byef9wcnn/cHN9/2xvef9ucHf/dXd9/3Byef9qbHP/b3F1/3d6g/9wc33/
    +c3Z//2xvef91d33/am13/25wd/9sb3n/bnF7/2dqcf9sbnX/dnh8/29xdf9qbXf/bG51/3t9g/9qbXf/
    +bnF7/2xudf9sbnX/Z2px/3t9g/9qbHP/bnB3/2xudf9tb3P/bnF7/25wd/9ucHf/dXd9/3Byef91d33/
    +amxz/25wd/91d33/dXd9/25wd/9zdXz/bG51/3N1fP9sbnX/ZGZs/2dqdP9qbXf/am13/2dqdP9sb3n/
    +amxz/2Rncf9zdXz/Zmlz/2dqdP9kZ3H/ZGZs/2ptd/9sb3n/Z2p0/2Jlbv9kZmz/XWBq/2BjbP9qbXf/
    +Zmlz/2Jlbv9sb3n/am13/2xvef9zdXz/Z2p0/2xudf9ucXv/bnF7/3Byef9zdXz/c3V8/2psc/9ucHf/
    +bG95/2xvef9tb3P/c3V8/3h5ff9sbnX/bnB3/25wd/9wc33/cHN9/2xvef9ucHf/dXd9/3Bzff9ucHf/
    +cHN9/2dqdP9sb3n/c3Z//3Z4fP9qbXf/c3V8/2ptd/9sbnX/cHN9/2xvef9zdXz/bnF7/2xudf9sb3n/
    +amxz/2psc/9sb3n/bG95/2Zpc/9qbXf/Z2p0/25xe/9qbXf/am13/2xudf9wc33/bG51/2xvef9sb3n/
    +bnF7/3Byef9ucHf/bnB3/3N1fP9tb3P/Zmhu/29xdf91d33/dXd9/3d5f/93eoP/amxz/25wd/9ucXv/
    +c3Z//3d5f/9sb3n/c3Z//3l7gf9zdXz/am13/3N2f/93eoP/eXyG/3Byef9sb3n/cHN9/3l8hv97fof/
    +cHN9/3t9g/97fYP/dXd9/3Bzff97fYP/am13/25xe/9ucHf/eXuB/21wef90dnz/dXd//3R3gP9zdXz/
    +eXuB/3Bzff95fIb/c3Z//3Bzff91eIH/eXuB/3Z5gv9ydHz/c3aA/3p9g/9zdn//cHN9/3Bzff9ucXv/
    +c3Z//3Bzff93eoP/d3qD/3V4gf9zdXz/cHN9/3N2f/9sb3n/Zmlz/3Bzff9ucHf/c3V8/3N2f/9sb3n/
    +bG95/3Byef9ucXv/cHN9/25wd/9wc33/bnB3/3h5ff9vcXX/amxz/25xe/9vcXX/c3V8/2Zpc/9wc33/
    +c3V8/3Byef9sb3n/d3qD/3Byef9vcnv/cHJ6/29xef9ucHf/amxz/21vc/9sbnX/b3F1/25wd/9wcnr/
    +cXR9/3V3ff9sb3n/c3V8/3h5ff93eoP/cHN9/25xe/9zdn//cHN9/2dqdP9wc33/e32D/3l8hv93eoP/
    +c3Z//3Bzff93eX//dXd9/3Byef9ucHf/b3F1/3Bzff9ucXv/bnF7/3N2f/9ucHf/Z2p0/2ptd/93eX//
    +bnB3/25wd/9qbHP/dXd9/2xudf9vcXX/bnB3/2xvef9maXP/bG95/3Z4fP9vcXX/bG51/25xe/9/goz/
    +dXiB/3N2f/9ucHf/b3F1/2psc/9+f4P/bG51/29xdf9ucHf/b3F1/3Byef9sbnX/bnB3/3V3ff9wc33/
    +c3Z//2psc/9vcXX/dXd9/3N1fP9qbXf/bnF7/2xudf9wc33/amxz/2BjbP9kZ3H/amxz/2ptd/9maXP/
    +cHN9/2xudf9maXP/d3l//2xudf91d33/bG51/2ptd/91d33/bnF7/2ptd/9nanH/Zmlz/2Rncf9kZ3H/
    +cHN9/2xvef9nanT/dXd9/25xe/9ucXv/c3V8/25wd/9sb3n/dnh8/3Byef9ucXv/c3V8/3Bzff9maXP/
    +bnB3/3Byef9wcnn/bnB3/3N2f/95e4H/cHN9/3Byef9wc33/dXiB/3N2f/9wc33/cHN9/3t9g/93eoP/
    +dXiB/3t9g/9zdn//d3qD/3l8hv95fIb/cHN9/3l8hv9zdn//cHN9/3l7gf9ucXv/c3Z//3V3ff9vcXX/
    +c3V8/25wd/9wcnn/dXd9/3Z4fP9zdXz/cHJ5/2xvef9ucXv/bnF7/2ptd/9qbHP/bnF7/2ptd/9qbHP/
    +am13/3Bzff9wc33/am13/2xudf9ucXv/bG51/2Rncf9sbnX/c3V8/3V3ff9zdXz/c3V8/2BjbP9maXP/
    +am13/2xudf9wc33/Zmlz/25xe/91d33/bG51/2Zpc/9sb3n/bnF7/3V3ff9maXP/YGNs/2dqcf9wcnn/
    +cHJ5/2dqcf9ucXv/bG95/2psc/9maG7/am13/2BjbP9nanH/Z2px/3V3ff9qbHP/bnB3/29xd/9sbnX/
    +amxz/2xvef9maXP/cHJ5/2psc/9nanH/bG95/3Bzff9ucXr/aGtz/2ptd/9zdXz/bW9z/2xudf9sb3n/
    +bG95/2ptd/9maXP/bnF7/2ptd/9qbHP/ZGdx/2dqcf9qbXf/Z2p0/2Zpc/9qbXf/bG51/2xudf9tb3P/
    +bG51/25wd/9sb3n/cHJ5/3N1fP9sb3n/d3l//3Bzff93eX//bG95/2ptd/9ucXv/cHJ5/3N2f/9qbXf/
    +d3qD/3N2f/9zdn//bnB3/3N2f/9ucHf/bnB4/2ptdv9rbnf/bG51/2Rncf9sbnX/am13/2psc/9pbHT/
    +bXB4/2xueP9wc33/bG51/3Byef94eX3/cHN9/3Bzff9sb3n/c3Z//25xe/9nanT/bnF7/3d5f/91eIH/
    +c3Z//25xe/9zdn//eXuB/3Z4fP91d33/bG51/21vc/9ucHf/bG51/2xudf9zdXz/bG51/2Rncf9maXP/
    +cHJ5/2dqcf9maXP/YmVu/25xe/9nanT/bG51/2xudf9qbXf/Zmhu/21vc/9zdXz/bW9z/2ptd/9sb3n/
    +f4GH/25xe/9sb3n/bG51/2xudf9qbHP/fX6B/2psc/9sbnX/b3F1/29xdf9zdXz/bG95/2xvef9wc33/
    +cHN9/3Bzff9qbHP/cHJ5/3V3ff9zdn//bnF7/3V3ff9ucHf/dXiB/3Byef9nanH/bnF7/3Bzff93eoP/
    +bG95/3l7gf93eoP/d3l//3+Bh/9zdXz/d3qD/3Bzff9wc33/eXyG/3d6g/9ucXv/bnB3/2xvef9sbnX/
    +am13/3V3ff9wc33/Z2p0/3h5ff9zdXz/c3V8/3d5f/9sb3n/bG95/3h5ff9ucHf/c3V8/3V3ff91d33/
    +Z2px/25wd/9wc33/bG95/2xudf9sbnX/c3V8/2ptd/9maXP/amxz/2ptd/9ucXv/am13/2ptd/9zdXz/
    +cHN9/2ptd/9ucXv/ZGdx/2ptd/9nanT/cHJ5/2Rncf9zdXz/am13/2ptd/9ucXv/am13/3Bzff9wc33/
    +bG95/3V3ff9qbXf/bnB3/3N2f/91eIH/cHN9/3V3ff91d33/dXd9/3Bzff9wc33/cHN9/3Z4fP9wc33/
    +cHN9/3N2f/93eoP/d3qD/25xe/9zdXz/dXiB/3Byef9sb3n/cHN9/3l7gf91eIH/dXd9/3d5f/9kZ3H/
    +bnB3/2xudf9zdXz/eHl9/25wd/91d33/dnh8/2ptd/9maXP/c3V8/3N1fP93eX//bG51/2psc/9sbnX/
    +dXiB/3V3ff9vcXX/c3Z//3N2f/9sb3n/bnB3/3N2f/9sb3n/bG95/21vc/95e4H/b3F2/3J0ev90dn7/
    +dnmC/3V3ff95fIb/dXd9/3t+h/9wc33/c3V8/3V4gf93eoP/dnmB/3Fzev9vcXf/dXh+/29xdf9tb3P/
    +bG51/25wd/9ucHf/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/29xdf9maG7/cHJ5/2ptd/9nanT/
    +amxz/2Zpc/9sbnX/bG95/2xvef9qbXf/amxz/3Byef9maXP/bG95/2Zobv9dYGr/YmVu/2Zobv9maXP/
    +XWBq/2ptd/9nanT/Zmhu/2Jlbv9nanT/Zmhy/2hqcf9oa3P/aWtz/2ptd/9qbHP/bG51/25wd/9rbXL/
    +aGty/2ttc/9pbHX/Z2p0/2Vocv9maXP/bnF7/3Bzff9ucHf/bG51/3N1fP9sbnX/Zmlz/2xvef9zdXz/
    +c3V8/3N1fP9qbHP/bnF7/3N1fP9wc33/bnF7/2Zpc/9nanH/Zmlz/2Rncf9sbnX/cHN9/2psc/9kZ3H/
    +ZGdx/25wd/9iZW7/ZGdx/11gav9nanT/ZGdx/2Zobv9qbHP/Z2px/2Jlbv9nanT/cHN9/2dqdP9qbXf/
    +bG95/36Biv9ucXv/bG95/21vc/9tb3P/b3F1/4CChv9ucHf/cHJ5/3Byef9zdXz/c3Z//3Byef9wc33/
    +cHN9/3N2f/9wc33/am13/25wd/9wc33/dXd9/25wd/9ucHf/bG51/3Bzff9nanT/YmRq/2dqdP9qbXf/
    +bG95/2Zpc/9ucXv/Z2p0/2Jlbv9ucHf/YmVu/2dqdP9nanH/Z2px/3Byef9zdXz/amxz/2dqcf9nanT/
    +Zmlz/2dqdP9sb3n/am13/2Zpc/91d33/bG95/3Byef93eX//dXiB/3V4gf97fof/d3qD/3t9g/93eoP/
    +c3Z//2Zpc/9zdXz/c3V8/3V4gf9sb3n/cHJ5/3d5f/9ucXv/bG51/25xe/9wc33/dXiB/3N1fP91d33/
    +eXuB/3t9g/91eIH/foCG/3V3ff93eoP/dXiB/3V4gf9sb3n/d3qD/3N2f/9wcnn/dXiB/3V4gf95e4H/
    +dXiB/3Bzff93eX//c3Z//3Byef9wc33/dXiB/3N2f/91d33/c3V8/3N1fP9wcnn/bnB3/3Byef92eHz/
    +cHJ5/25wd/9ucHf/c3V8/3N1fP9sbnX/bW9z/3N2f/9wcnn/amxz/25xe/93eX//dXiB/3N2f/9zdn//
    +Z2p0/2ptd/9ucXv/cHN9/3V4gf9wcnn/c3Z//3d5f/9sb3n/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/
    +b3F1/3h5ff95e4H/b3F1/3N1fP91d33/bG95/2ptd/91d33/amxz/2ttdP9sbnX/c3Z//2ptd/9vcXj/
    +cHJ3/25wd/9tb3P/cHJ5/2xudf93eX//am13/21vc/9zdXz/dXd9/3J0e/9sb3n/bXB6/3Bzff9sbnb/
    +amxz/2ptd/9rbnj/bG51/2tud/9wcnn/bG95/25wd/9ucHf/cHJ5/3V3ff9ucHf/Zmlz/3R3gP9tcHf/
    +bnB3/3Fzef9ucHf/cnR7/3Bzff9ydX7/cHJ8/3Bzff93eoP/cHN9/3h6gP9zdn7/bnF7/3Byef9vcXj/
    +bnF7/2hrdf91d33/bW92/25wd/9vcXj/eHl9/29xef9wcnn/cHN8/3Z3fP95e4H/dXd9/3d5f/96fIP/
    +cnV+/3F0e/91d37/dniA/3V3ff9wcnn/c3Z//3Z4f/93eoP/dXiB/3Bzff91eIH/bnF7/2ptd/91eIH/
    +e32D/3d5f/93eX//c3V8/3d6g/9zdn//dnh8/3N1fP9ucHf/bnF7/25xe/9vcXX/bG95/3V3ff9vcXX/
    +amxz/2xudf92eHz/bnB3/3Byef9nanT/cHN9/2ptd/9ucHf/c3Z//3Byef9qbHP/b3F1/3Z4fP9qbHP/
    +bG51/25wd/9/gYf/cHJ5/2ptd/9tb3P/bnB3/2ptd/9/gYf/bnB3/29xdf9ucHf/bG95/3Byef9tb3P/
    +am13/2ptd/9wc33/bnF7/2dqdP9sbnX/c3V8/3h5ff9wcnn/bnF7/2xvef9wcnn/am13/2Vmav9sbnX/
    +bnF7/3Byef9sbnX/dnh8/3Bzff9ucHf/eXuB/3V3ff93eoP/cHN9/3N2f/97fof/e36H/3V4gf91d33/
    +dXd9/25xe/9zdXz/dXiB/3V4gf9wc33/e32D/3d6g/95fIb/e36H/2xvef9ucXv/d3l//25xe/9zdn//
    +c3Z//3N2f/9maG7/bnB3/3N1fP9wcnn/b3F1/21vc/9zdXz/bG51/2dqcf9wcnn/bnF7/3N1fP9ucHf/
    +bG95/3V3ff9zdXz/bG51/3Byef9ucHf/c3V8/25wd/91d33/am13/3V4gf9ucXv/amxz/2xvef9ucXv/
    +cHN9/3Bzff9wcnn/c3V8/3Byef9wcnn/cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/
    +d3l//25wd/9wcnn/bnB3/3V3ff91d33/bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9wcnn/
    +c3V8/2Zobv9nanT/bnF7/2xvef91d33/bG51/2ptd/9zdXz/Z2p0/2Rncf9ucXv/c3V8/3N1fP9qbXf/
    +am13/2psc/93eX//d3qD/2xudf9ucXv/bG95/2ptd/9qbXf/c3V8/2ptd/9xc3r/bnB3/3d5f/9ucHf/
    +cHJ5/29xd/9ucXv/amxz/25wd/9ucHf/d3l//25wd/9vcXX/dXd9/3d5f/9wcnn/bG52/25xe/9xdHz/
    +am13/2ttdf9qbXf/bG51/2xudf9rbnf/bXB6/2xudf9qbXf/bG51/3Byef90dnz/cHJ5/2hrc/9ydX7/
    +aGt1/25wd/9wcnn/bnB4/25weP9ydHv/b3J7/29ye/9vcXj/dXiB/3F0ff9zdn//bG95/2xvef9ucHf/
    +cXN3/3Byef9oa3P/cnR8/2xveP9qbXf/aWx1/3R2ff9pbHP/am13/2dqc/9pbHb/bG51/2Rncf9maG7/
    +bG95/2psc/9maXP/bG94/29xef9sb3f/am12/2ttdv9ydHr/c3V8/3Bzff9vcXX/cHJ5/2xvef9qbXf/
    +cHN9/3d5f/93eX//d3l//3Byef91eIH/c3Z//3d6g/93eoP/cHN9/3N2f/9wc33/bG95/29xdf91d33/
    +b3F1/2psc/9sbnX/dnh8/25wd/9sbnX/bG51/25wd/9qbHP/bG51/2xvef9wcnn/amxz/2xudf92eHz/
    +Z2px/25wd/9ucHf/f4GH/3Z4fP9zdXz/cHJ5/25wd/9qbXf/gYOK/2xvef9ucXv/bnB3/3V4gf9zdn//
    +c3Z//3N2f/91eIH/e32D/3t9g/92eHz/eXuB/31+gf9/gYf/eXuB/3V4gf9zdn//dXiB/3Bzff9qbXf/
    +c3V8/3d6g/93eoP/c3Z//3t9g/93eoP/bnF7/3t9g/9ucXv/dXiB/25xe/9vcXX/eXuB/3d6g/9sb3n/
    +bnB3/25wd/9nanH/bW9z/25wd/9sbnX/Z2px/3N2f/9ucXv/c3Z//3V3ff91d33/d3qD/36Ahv91eIH/
    +eXuB/3d6g/93eoP/bG95/3t9g/97fYP/d3qD/3V3ff91d33/dXiB/3V4gf9ucXv/d3qD/3V4gf9zdn//
    +bnB3/3Byef95e4H/dXiB/3Byef9zdn//bnB3/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/
    +bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/
    +bG51/3N1fP9nanT/amxz/2psc/9ucXv/cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/
    +ZGdx/2dqdP9cX2j/YGNs/2Zpc/9maXP/bG95/2Rncf9kZ3H/cHJ5/2Zobv9kZ3H/am13/2xvef9zdXz/
    +bG95/2xudf9sbnX/d3l//3l8hv9sbnX/c3V8/3N1fP9zdXz/b3F1/3V3ff9sb3n/cnR6/3Fzev90dn7/
    +bnF5/3J0e/9wcnf/cHJ5/2xudf9ucHf/bnB3/3d5f/9sbnX/b3F1/3V3ff91d33/cnR7/2xudv9sbnb/
    +cXN7/2ttc/9qbHX/bG93/3Fzef9rbXb/bG53/29yev9tcHj/a254/2xvef9ucXn/c3V7/29yev9rbXb/
    +cnV//25xef9wcnn/c3V8/3V3ff9ydHn/eXuA/3V3fv90dn3/c3V9/3h7hf91eID/dXd+/3N1fP90dnz/
    +cHJ5/3R2fv9xdH3/b3J8/3J1fP9wc3v/a252/29xeP9ydX//bW94/2xveP9nanT/a253/2xudf9qbXf/
    +bW9z/3Bzff9qbXf/aGt0/2xvef9zdn3/am11/21veP9sbnb/bW94/2xvef9qbXf/am13/3Bzff9sbnX/
    +Z2p0/2xvef9ucXv/c3V8/2xvef9sbnX/c3V8/3N1fP9zdXz/cHJ5/21vc/9qbXf/bnF7/21vc/9ucHf/
    +dnh8/21vc/9qbHP/cHJ5/3l7gf9wcnn/bG95/2xvef9ucXv/bnB3/2xvef9zdn//cHN9/2xvef9qbXf/
    +eHl9/2dqdP9nanT/bG51/3t9g/9sb3n/cHN9/2xvef9qbXf/Z2p0/3t9g/9qbHP/Z2px/2dqcf9maXP/
    +Z2px/2dqcf9qbHP/am13/25xe/9qbXf/Z2p0/2xudf9wc33/c3V8/2xvef9qbXf/bW9z/25wd/9ucHf/
    +Zmhu/2xudf9sbnX/c3V8/2dqdP9zdn//c3Z//25wd/95e4H/am13/3V4gf9zdn//cHJ5/3l7gf97fYP/
    +cHJ5/3N2f/9wcnn/bG95/3Byef9zdn//dXiB/2xvef91eIH/c3Z//3d6g/91eIH/c3V8/3N2f/97fYP/
    +bnF7/3N2f/9zdn//c3Z//2dqdP95e4H/c3Z//25xe/9ucHf/bG95/25xe/9zdXz/Zmlz/3N1fP9zdXz/
    +c3V8/25wd/9wcnn/dnh8/3Z4fP9ucHf/cHN9/25wd/9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/
    +bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/
    +am13/2psc/91d33/am13/2xudf9maXP/bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/
    +dnh8/3Byef9zdXz/Zmlz/2xvef9wc33/dXiB/3d5f/9wc33/cHN9/36Biv9wcnn/c3V8/3t9g/9+gIb/
    +e32D/3d6g/9wc33/cHN9/3l8hv+Bg4r/dXiB/3t9g/93eoP/eXuB/3N2f/91d33/b3F1/3R2fP9vcXn/
    +cnR8/21vdv90dnv/bnB3/3Byef9qbXf/bG95/2xvef93eX//bG51/25wd/93eX//e36H/3Z5gv9tcHr/
    +b3J7/3Z3ff9rbnf/bG94/2xveP90dn//bW92/3J1ff9wc33/bW92/21wev9ydX//cHN9/3F0ff9tcHn/
    +aWty/21vdv9qbHP/bG94/3V3fv9tcHn/a210/3Z4fv9tb3b/bW92/21veP9ucXr/b3F6/21wef9tb3b/
    +cXN6/2xudP9ydHv/b3F5/2xvd/9ydHz/bW93/2tueP90dnz/cXN6/29xeP9sbnX/amxz/2xudf9qbHP/
    +bG51/2xudf9wc33/bG51/2ptd/9wc3z/c3V8/21vdv9zdXz/bnB3/25xev9ucHf/cHJ5/25xe/9zdn//
    +cHJ5/2ptd/9zdXz/cHN9/3V3ff93eX//cHJ5/3V4gf9zdn//dXd9/3Bzff9ucHf/c3V8/3Bzff9zdXz/
    +cHN9/3l7gf9wc33/am13/3Byef93eX//am13/2xvef9sb3n/bG95/2ptd/9sbnX/dXd9/3Byef9qbXf/
    +Z2p0/3V3ff9nanT/bG51/29xdf9+gIb/dXd9/3V3ff9ucHf/bnB3/25wd/+Bg4r/bnB3/29xdf9vcXX/
    +bG51/2xudf9ucHf/bnB3/21vc/91d33/bnB3/25wd/9vcXX/dnh8/3l7gf9zdn//cHN9/25wd/9ucXv/
    +bnB3/2dqcf9vcXX/bG51/3N1fP9qbXf/dXiB/3N2f/9ucHf/d3l//2dqdP91eIH/c3Z//3N1fP9zdn//
    +eXyG/3N1fP93eoP/cHN9/3Bzff9zdXz/bnF7/3V4gf9wc33/eXyG/3V4gf95e4H/d3qD/2xudf9sbnX/
    +dnh8/3Byef9zdXz/bnB3/25xe/9gY2z/bnF7/25xe/9ucHf/bG51/2xudf9sb3n/bG95/2dqcf9zdXz/
    +bG95/3N2f/9ucHf/bnB3/3N1fP92eHz/b3F1/3Byef9ucHf/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/
    +am13/2xudf9ucXv/bG95/25xe/9wc33/bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/
    +bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn//
    +d3qD/3l7gf93eoP/e32D/3Bzff9zdn//d3qD/36Ahv97fof/dXiB/3d5f/+DhYz/dXiB/3V3ff97fYP/
    +foCG/3t9g/9zdn//cHJ5/3N1fP93eX//d3qD/2xvef93eX//c3Z//3N2f/9ucXv/dXd9/25wd/94eoD/
    +dHeA/3N2f/9ucXv/dnh//2xvef9wcnn/bG51/2xudf9qbHP/eHl9/2xvef9sb3n/d3l//3d6g/91d33/
    +bnF7/3Bzff96fIP/bnB3/29xdf9ucXr/d3h8/2xudf9ydHv/bnB3/2ptd/9vcXj/bnF7/2xudf9wcnn/
    +b3F4/2Zpc/9rbnX/am13/29yfP93eoD/b3J8/2xvef95e4H/b3F1/2xvef9ucXv/b3J8/3F0ff9vcnv/
    +bnF7/3Z4fv9wcnn/dnh+/3J0fP9ydHv/dXd9/2xudv9nanT/dnh+/25xe/9ucXv/am13/2ptdP9qbHP/
    +bW9z/2xudf9qbHP/cHN9/2xudf9sb3n/dXd9/3d5f/9wc33/eHqA/3N2f/9sb3n/c3Z//3d6g/91eIH/
    +e32D/3N2f/9wc33/e32D/3l8hv9+gIb/e32D/3Bzff95e4H/d3l//3d5f/9ucXv/bnB3/25wd/9ucXv/
    +bG95/2xudf9wc33/amxz/2BjbP9nanH/bG95/2Zpc/9nanH/Zmlz/2ptd/9nanT/am13/3V3ff9ucXv/
    +am13/2ptd/9zdXz/bG51/2xudf9qbXf/e32D/25xe/9wc33/am13/2ptd/9qbXf/f4GH/2ptd/9qbXf/
    +bG95/2ptd/9wcnn/bnB3/25wd/9sbnX/dnh8/25wd/9sb3n/bG95/3V3ff93eX//cHN9/3N2f/9wcnn/
    +cHN9/3Byef9nanT/cHJ5/3Byef9wc33/am13/3N2f/9zdn//cHJ5/3l8hv9ucXv/dXiB/3Bzff9vcXX/
    +bnB3/3h5ff9tb3P/bG95/2psc/9qbHP/Z2p0/2ptd/9ucXv/Zmlz/2xvef9sbnX/am13/25xe/9sbnX/
    +bW9z/3h5ff9wc33/c3V8/3N1fP9wc33/amxz/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/3Byef9maXP/
    +bnF7/2xudf9ucXv/am13/2xvef9zdXz/cHN9/2xudf9wcnn/bG51/3Byef9ucXv/bG95/2ptd/93eX//
    +dXd9/3Byef9ucHf/c3V8/3N1fP91d33/c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/
    +eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/
    +bG95/2xvef9wcnn/am13/3Bzff9nanT/Z2p0/25xe/9zdXz/dXd9/2xudf9sbnX/c3V8/2xudf9qbXf/
    +cHN9/3Z4fP9wcnn/bnB3/2xudf9tb3P/dXd9/3V4gf9sbnX/dXd9/3V3ff91d33/c3V8/3Z4fP9vcXX/
    +c3Z//3V3ff9sbnX/Z2p0/3V3ff9qbXf/bnF7/2dqdP9qbHP/Z2p0/3V3ff9ucHf/bnB3/3N1fP92eHz/
    +dXd9/3Byef9wcnn/eXuB/25wd/9sb3n/c3V8/3Z4fP9ucHf/cHJ5/21vc/9sbnX/cHJ5/3N2f/9wcnn/
    +c3Z//3N2f/9qbXf/c3V8/3N1fP93eoP/eXyG/25xe/9qbXf/fX6B/21vc/9nanT/bnF7/2xvef9sb3n/
    +bG95/2xvef9wc33/amxz/2xvef9sb3n/bG95/25xe/9nanT/ZGdx/3V3ff9wcnn/bnB3/21vc/9vcXX/
    +am13/29xdf9ucHf/bG95/3N2f/9sb3n/bG95/3N2f/93eX//bnF7/3d5f/9wc33/cHJ5/3N2f/91eIH/
    +c3Z//3l7gf9sb3n/bnB3/3N1fP91d33/dXd9/3N1fP9sbnX/dnh8/3Z4fP91d33/bnB3/21vc/9qbHP/
    +am13/2xudf9tb3P/cHJ5/2xudf9kZmz/bnB3/3V3ff9sbnX/b3F1/2psc/9wcnn/bG51/2xvef91d33/
    +c3Z//3Byef9ucHf/e32D/3N1fP9zdXz/c3V8/4OFjP91eIH/fX6B/3d5f/97fYP/dXd9/4mLkf93eX//
    +dXiB/3d6g/9zdn//dXiB/3Bzff9zdn//dXd9/3t+h/97fYP/dXd9/3Bzff95e4H/f4GH/3d6g/9ucXv/
    +bnB3/3Byef9wcnn/Z2p0/25wd/9vcXX/cHJ5/2psc/9ucHf/bnB3/2xudf93eX//am13/3N2f/9sb3n/
    +bnB3/25xe/91eIH/am13/3Bzff9ucHf/bG95/3Byef9wcnn/c3V8/2xudf9wcnn/bnB3/25wd/9zdXz/
    +cHN9/3N1fP91eIH/c3Z//3N2f/95e4H/dXiB/25wd/9ucXv/bnF7/25xe/9vcXX/amxz/3V3ff9zdXz/
    +amxz/3N1fP9tb3P/cHN9/2ptd/9ucHf/c3V8/3d5f/9qbXf/cHJ5/21vc/9sb3n/c3V8/25wd/9qbXf/
    +dXd9/3V4gf9wc33/bG95/3N2f/91eIH/d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/
    +dXiB/3t+h/9zdn//dXiB/25xe/97fYP/c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/
    +bnB3/3Bzff9zdn//c3V8/3Byef91d33/bG51/21vc/91d33/dXd9/3d5f/9sb3n/bnF7/3l7gf9wcnn/
    +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//cHJ5/3d5f/95fIb/bnB3/3N2f/91d33/dXd9/25xe/95e4H/
    +am13/3V4gf9wc33/bnB3/25wd/94eX3/b3F1/3V3ff9vcXX/b3F1/2xudf9ucXv/bG51/25wd/91d33/
    +dnh8/3N1fP9sb3n/bnB3/3Z4fP9tb3P/bG51/25xe/91d33/amxz/2xvef9qbXf/bW9z/3Byef91d33/
    +bW9z/25xe/9ucXv/Z2px/21vc/9sbnX/c3Z//36Ahv9sb3n/ZGdx/3d6g/9kZ3H/YGNs/2Zpc/9kZ3H/
    +ZGdx/2Zpc/9nanT/bG95/2psc/9qbXf/bnF7/25xe/9ucXv/Z2p0/2Zpc/91d33/cHN9/25xe/9sbnX/
    +amxz/2psc/9ucHf/bnB3/2xudf91eIH/bnF7/3Bzff93eoP/eXuB/3Bzff91eIH/cHN9/2ptd/9ucXv/
    +cHN9/25wd/91d33/bW9z/2xudf9ucHf/cHN9/3N1fP9wc33/bG95/3V3ff9ucXv/cHN9/2ptd/9nanH/
    +ZGdx/2Zpc/9iZW7/ZGdx/2Zpc/9nanH/XWBq/2psc/9ucXv/ZGdx/2xudf9kZ3H/bG95/2Zpc/9qbXf/
    +cHN9/3Bzff9sbnX/bW9z/3N2f/9sb3n/bnB3/29xdf9+gIb/cHJ5/3Byef9ucHf/cHJ5/21vc/9+gIb/
    +bG95/2xudf9wcnn/bG51/25xe/9qbHP/amxz/2dqdP93eX//cHN9/2ptd/9sbnX/c3V8/3N2f/9ucXv/
    +Z2px/2dqcf9nanT/Z2px/2BjbP9nanT/bG51/2xvef9qbHP/am13/2ptd/9qbXf/dXiB/2psc/9ucXv/
    +bW9z/2xvef9ucXv/d3qD/25wd/9wcnn/bnB3/2ptd/9wcnn/c3Z//3V3ff9sb3n/cHN9/3N1fP9wc33/
    +eXuB/3d5f/91d33/e32D/3t9g/97fYP/f4GH/36Ahv9zdXz/d3l//3t9g/93eX//d3l//3d5f/9+f4P/
    +e32D/3Bzff93eoP/c3Z//36Ahv9zdn//dXiB/3t9g/97fof/c3Z//3V4gf9zdXz/cHN9/3l7gf9wc33/
    +bnF7/3V3ff91eIH/bnF7/25xe/91d33/bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/
    +bnB3/25wd/93eX//cHJ5/3Byef9ucHf/eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/
    +bG95/2xudf9ucXv/cHJ5/3N1fP9ucHf/c3V8/2dqdP9maXP/bnF7/25xe/9ucXv/ZGdx/2dqcf9ucHf/
    +Zmhu/2Jlbv9qbXf/cHJ5/2xvef9ucXv/bG95/2dqdP9wc33/c3Z//2xudf9wc33/cHN9/3Byef9sbnX/
    +cHN9/2dqdP9qbXf/bG95/2xvef9qbXf/c3V8/2xudf9wc33/am13/2ptd/9qbXf/cHJ5/25wd/9ucHf/
    +dXd9/3V3ff9zdXz/bnB3/25wd/92eHz/bG95/2dqdP91d33/dXd9/2xudf9qbXf/bG51/2xudf9qbXf/
    +c3V8/25wd/9sb3n/cHN9/2ptd/9wcnn/bnB3/3Bzff9+gIb/bnB3/2psc/9/gYf/b3F1/2psc/9zdXz/
    +bnB3/3Byef9wcnn/bnF7/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/2xudf9maG7/d3l//3l7gf9zdn//
    +bnB3/2xudf9nanT/bnB3/25wd/9qbXf/c3Z//2ptd/9sb3n/c3Z//3d5f/9ucXv/dHeA/3N2f/9rbnf/
    +bnF7/25xe/9ucHf/eXuB/2xvef9sb3n/cHN9/3d5f/95e4H/dXd9/3Bzff91d33/cHN9/3Z4fP9ucHf/
    +bG51/29xdf9ucHf/bnB3/2xvef9zdn//c3Z//2Zpc/9zdn//d3qD/25wd/9wc33/am13/3V4gf9wc33/
    +dXiB/36Ahv9+f4P/dXd9/3V3ff97fYP/c3Z//3N1fP9wc33/foGK/3V4gf91eIH/eXuB/3t9g/91d33/
    +g4WM/3t9g/9zdn//eXuB/3Bzff91eIH/cHJ5/25xe/9ucHf/eXyG/3l7gf9wc33/cHN9/3N2f/93eX//
    +c3Z//25wd/9sb3n/bnF7/25wd/9nanT/b3F1/25wd/9wcnn/bW9z/2xudf9ucHf/am13/3l7gf9nanT/
    +bnF7/25xe/9wc33/cHN9/3t+h/9qbXf/bnF7/3Byef9ucHf/bnF7/3V4gf91eIH/dXd9/3l8hv91d33/
    +d3l//36Ahv95e4H/d3l//3l8hv95e4H/d3l//36Ahv97fYP/cHN9/3V4gf91eIH/cHN9/3Byef9qbXf/
    +dnh8/3Byef9nanT/bnF7/2psc/9zdXz/bG51/2ptd/9ucXv/c3V8/2dqdP9qbXf/Z2px/2Zobv9ucXv/
    +am13/2Rncf9qbXf/am13/2Zpc/9nanH/am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/
    +eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/
    +bnF7/25wd/9vcXX/c3V8/3Byef9ucXv/bnB3/3N1fP9qbXf/Z2p0/3Bzff92eHz/dXd9/2psc/9wcnn/
    +dXd9/21vc/9sbnX/c3V8/3V3ff9wc33/bG95/3Byef9sb3n/c3V8/3l7gf9sb3n/cHN9/3V3ff9zdXz/
    +cHN9/3V4gf9sb3n/bnB3/29yfP9wc33/bG95/3d5ff9sb3n/dXd9/2ptd/9sb3n/am13/25xe/9wcnn/
    +c3Z//3V4gf95e4H/d3l//25xe/9ucXv/d3l//25xev9qbXf/cHJ5/3J0e/9sbnX/bG52/2xudf9sbnX/
    +bnB3/3N1fP9tb3P/a254/2tueP9oa3T/a253/2xudf9vcXn/eXuC/29xeP9qbHP/fH6F/25wdf9nanL/
    +cnR7/29xeP9xc3r/cHJ5/21vd/9zdXz/b3F4/25xev9ucXv/b3J8/25xe/9sbnX/Zmlz/3N2fP9xdH7/
    +cnR7/21vc/9nanT/ZGdx/2xudf9sbnX/amxz/25xe/9qbXf/am13/25xev90dnz/a211/2ptd/9sb3n/
    +Z2pz/2xvef9sbnX/amxz/3N1fP9nanT/Z2p0/2xvef9zdXz/c3V8/3Bzff9sb3n/cHN9/2xvef9zdXz/
    +bG95/2xudf9qbXf/bG95/2xudf9qbXf/cHJ5/25wd/9nanH/cHN9/3N2f/9sb3n/cHJ5/2Zpc/9wcnn/
    +bG51/3Bzff93eX//d3qD/3Byef9qbXf/dXiB/25xe/9zdXz/cHN9/36Biv9zdn//c3Z//25xe/9zdn//
    +c3Z//4GDiv9zdn//cHJ5/3l7gf9wcnn/c3Z//3N1fP9wc33/bG95/3d6g/91eIH/b3F1/29xdf9zdXz/
    +eHl9/3h5ff9tb3P/bG51/2xudf9qbHP/Z2p0/21vc/9wcnn/cHJ5/25wd/9wcnn/cHJ5/25wd/95fIb/
    +Z2p0/25xe/9wc33/bnF7/25xe/97fof/c3Z//3d5f/91d33/eHl9/3d5f/95e4H/e32D/3l7gf9+gYr/
    +eXyG/3l8hv+Agob/cHJ5/25wd/9wc33/bG95/2xvef92eHz/dXd9/2xudf9tb3P/bG95/25xe/9ucHf/
    +amxz/3V3ff9wcnn/bnB3/3Byef9vcXX/d3l//25xe/9zdn//eXuB/3l8hv9zdn//dXiB/3Bzff9wc33/
    +dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/
    +bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/
    +b3F1/3Byef9sbnX/bG51/25xe/9sbnX/cHJ5/25wd/9zdXz/bW9z/2psc/9wc33/dXd9/3N1fP9nanT/
    +bnF7/3Z4fP9vcXX/b3F1/3N1fP91d33/cHN9/25xe/9wc33/bG95/3Bzff93eoP/bG51/3Byef9ucXv/
    +bnF7/3Byef91d33/bG51/21vd/9tcHr/c3V9/2xvdv92eH3/b3F4/3Byef9sbnX/bG51/2xudf9qbXf/
    +bW9z/3N1fP91d33/dXiB/3V3ff9ucHf/bXB6/3J1fv9vcXj/a212/25xe/9ucXv/bnB4/29yd/9ucXr/
    +cnR7/3F0ff92eH7/b3F4/3N1fv9xdH3/bnB2/3BzfP9vcXj/cnV8/3x+hP9tb3b/a210/3p8gv9vcXb/
    +aGp0/2xveP9vcXf/bnF5/25xef9tb3b/bXB6/25weP9tb3f/bnB4/3Bzev9ucHj/bW91/2dqc/9ydXr/
    +eHl//3N1fP9tb3b/bnB3/2xudf9vcXX/b3F1/2xudf9wcnn/bG51/2xudf9xc3r/d3mA/29xd/9ucXv/
    +c3V+/3BzfP9sb3n/amxz/2psc/9ucHf/YmVu/2Zpc/9nanT/Z2p0/2dqdP9maXP/Zmlz/25wd/9maXP/
    +Z2p0/2Zobv9kZ3H/YmVu/2Rncf9kZ3H/Zmhu/2ptd/9sbnX/ZGdx/2xudf9wc33/am13/2ptd/9iZW7/
    +bG51/2Zpc/9ucXv/dXd9/3N1fP9ucHf/bnB3/3N2f/9sb3n/bnB3/25wd/95e4H/bnB3/2xvef9qbXf/
    +bnB3/2xudf99foH/cHJ5/25wd/9zdXz/bnB3/3Byef9ucHf/cHN9/3Byef97fof/eXuB/25xe/9wcnn/
    +eHl9/3Z4fP94eX3/bW9z/2xudf9sbnX/b3F1/25wd/9vcXX/cHJ5/3Byef9sbnX/cHJ5/25wd/9tb3P/
    +d3l//2dqcf9ucHf/c3V8/2ptd/9sbnX/dXd9/2ptd/9sb3n/bG51/2dqdP9qbXf/am13/2ptd/9maXP/
    +bnF7/2xudf9sbnX/cHJ5/25xe/9sb3n/c3V8/25wd/9ucXv/eXuB/3V4gf9ucXv/c3V8/3V4gf91eIH/
    +bnF7/2ptd/9wc33/cHN9/3Byef9wc33/bnB3/3d5f/9wcnn/cHN9/3d6g/95e4H/c3Z//3V4gf9ucXv/
    +cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/
    +c3V8/2xudf95e4H/bnB3/3N1fP93eX//dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/
    +am13/2Zpc/9nanT/bG51/2psc/9sb3n/bG51/2xvef9qbXf/bG95/2dqcf9maXP/bnF7/3Byef9sb3n/
    +Zmlz/2ptd/9ucXv/am13/2xudf9wcnn/dXd9/3N1fP9zdXz/dXd9/25xe/9zdn//e36H/2xvef9zdXz/
    +cHJ5/3V3ff91d33/dXd9/25wd/9sbnf/b3J6/3N2f/9sb3f/dniA/3F0ff90dnz/bnB3/21vc/9sbnX/
    +am13/2psc/9ucXv/bnF7/3V3ff9wc33/Z2p0/3Byef9ucXv/a252/2lsdv9sb3n/a254/2tueP9tcHj/
    +bG95/2hrdf9maXP/bnF5/2lrcf9tcHj/am13/2dqcv9pbHb/aWt0/2psdP9wcnv/ZWhy/2Zpc/9vcnr/
    +a252/2dqc/9nanT/cXR8/25wef9ucHj/ZWhx/2Vocv9kZ3H/Zmlx/2dpcP9nanT/aWx0/2Vocf9gY2z/
    +Z2p0/3N1ff9qbXf/Zmly/2Zocf9jZm7/ZWhy/2dqcf9kZ3H/Z2p0/2Rncf9nanP/b3J7/3R3f/9rbnb/
    +a211/3R2fP9ydHv/bnF7/21vc/9ucHf/d3l//2psc/9ucHf/cHN9/3N1fP9zdXz/c3Z//2xvef91eIH/
    +c3V8/3Z4fP9zdXz/cHJ5/25wd/9ucXv/b3F1/25wd/9ucHf/bnB3/2xudf9sbnX/c3V8/2xudf9sbnX/
    +Zmlz/2psc/9qbXf/bnF7/3N1fP9wc33/am13/2ptd/9ucXv/bG51/25wd/9ucHf/foCG/25xe/9wcnn/
    +b3F1/2xudf9zdXz/e32D/3N1fP9ucHf/c3V8/25wd/9zdXz/bnF7/3N2f/9wcnn/eXyG/3d6g/9zdn//
    +c3Z//3d5f/93eX//eXuB/25xe/9ucXv/bnB3/2xvef9sb3n/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/
    +cHJ5/3d5f/9kZ3H/bnF7/3Bzff9sb3n/bnF7/3V4gf9ucHf/bG95/25xe/9ucHf/cHN9/25wd/9ucXv/
    +bG95/3N1fP9ucHf/bnB3/25xe/91eIH/dXiB/3N2f/9sb3n/bnB3/3h5ff9ucHf/bG51/21vc/9wcnn/
    +c3V8/3Byef9nanT/bnF7/3N2f/9sb3n/cHJ5/2xvef95e4H/cHN9/3Bzff91eIH/dXiB/3Z4fP9zdn//
    +bG95/25xe/91eIH/cHN9/25wd/95fIb/d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/
    +bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/
    +dnh8/2xvef9qbXf/am13/2xudf9qbXf/c3V8/2xudf9wcnn/bnB3/3N1fP9vcXX/bG51/3V3ff91d33/
    +dXd9/2ptd/9sb3n/am13/2ptd/9maXP/bnF7/3V3ff9sb3n/cHN9/25xe/9qbXf/cHN9/3V4gf9sbnX/
    +cHJ5/2xudf92eHz/cHN9/3d5f/9wc33/bnB4/29xef95e4L/bnB2/3N2fv9ucXr/c3V+/2xvef9ucHf/
    +cHJ5/25xe/9ucHf/dXd9/3Byef91d33/c3V8/21vc/9ydHz/b3F6/2ttdv9rbXX/am13/2Zpc/9rbnf/
    +bG94/2tueP9naXD/Zmlz/2xveP9oa3X/cnR7/2ptd/9oa3T/cnR7/2xudf9sb3b/dHZ+/3Bydv9sb3n/
    +cHN8/3J1ff9tcHn/b3F1/3l7gf92eH7/dXd9/25wd/9tb3f/aGt1/25wd/9ucHf/bG95/3R2f/9ucHf/
    +bW92/25wd/97fIH/cHJ5/21wef9ucHf/am13/21wev9ucXv/bnB3/3N2f/9ucHf/b3F4/3F0fv90d4H/
    +a254/2lsdv9xdH7/c3V8/3N2f/9wc33/d3qD/3t+h/9ucXv/cHN9/3d6g/91eIH/dXiB/25xe/9ucHf/
    +e36H/3Bzff95fIb/d3qD/3Bzff9nanT/bnB3/2xvef9sb3n/c3V8/2ptd/9nanH/cHJ5/3Byef9vcXX/
    +bG95/2xudf9ucHf/bG95/3Bzff94eX3/dXd9/3Byef9wcnn/eXuB/3N2f/9zdXz/c3Z//3l8hv9ucXv/
    +bnF7/25wd/9ucXv/cHN9/3l8hv9wc33/bG95/3V3ff9wcnn/cHJ5/3Byef9wcnn/bG51/3N1fP9sb3n/
    +bG51/2xudf9wc33/bG95/25wd/9qbHP/Z2px/2dqcf9kZ3H/Z2p0/2xudf9sb3n/bnB3/2xudf9vcXX/
    +bnB3/25xe/93eX//ZGdx/25xe/9wc33/c3Z//3N2f/95fIb/cHJ5/3V4gf93eoP/c3Z//3t9g/91d33/
    +dXiB/3Bzff93eoP/c3Z//3N2f/93eoP/eXuB/3l7gf93eoP/dXiB/3d5f/9/gYf/foCG/3d5f/92eHz/
    +e32D/36Ahv99foH/d3l//3t9g/9+f4P/eXuB/3d6g/9wc33/foGK/3N2f/9zdn//eXyG/3l8hv97fYP/
    +d3qD/3V4gf9wc33/e32D/3V4gf9ucXv/e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/
    +am13/25wd/9wcnn/bG51/3l7gf9ucHf/c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/
    +bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/bG95/3Bzff9sbnX/cHJ5/3Byef9ucHf/am13/2psc/91d33/
    +dXd9/3Byef9maXP/am13/2dqdP9nanH/YmVu/2Zpc/9ucHf/am13/25xe/9ucXv/am13/25xe/91d33/
    +amxz/25xe/9qbXf/bnF7/25wd/9zdXz/am13/25xe/9zdn//fH+I/3Byev90d4D/b3J6/3Bzff9nanT/
    +bG51/2ptd/9qbXf/bnB3/3N1fP9wcnn/dXd9/3N1fP9sbnb/dXd+/3R3f/9vcnr/bnF6/3Bzff9vcXv/
    +dnmC/3p8gv94eoD/cnV//3Byef9zdn//cHJ5/3h6gP9wc33/bnB3/3Z5gv9zdXz/c3V8/3l8hv91d33/
    +dHZ8/3R2ff92eYL/dHeA/3N1fP95fIX/d3qD/3Z4f/9wc33/bG95/2dpc/9ucHf/bG51/29xdf9wcnn/
    +bnB3/25wd/9sb3n/e32D/29ye/9ucXr/bnB3/21vdv9tcHr/bnB3/29xdf9ucXv/cHJ5/25wd/9tcHr/
    +dnmC/2tueP9sb3n/d3qD/3N2f/9ucXv/bnB3/25xe/93eX//bG95/25wd/9wc33/cHN9/3N2f/9wc33/
    +bnB3/3t+h/9ucHf/dXiB/3N1fP9wcnn/Z2px/3Byef9sbnX/bnB3/25xe/9ucXv/bnF7/3N2f/9wc33/
    +c3V8/2ptd/9sb3n/cHJ5/3N1fP93eoP/eXyG/36Ahv91d33/dnh8/36Ahv95fIb/cHN9/3N1fP9/gYf/
    +c3Z//3V4gf93eoP/d3l//3d5f/+Cg4f/e32D/3Z4fP95fIb/c3Z//3V4gf9zdn//c3Z//25wd/95e4H/
    +d3qD/3N2f/9zdn//d3qD/3N2f/93eX//bnB3/2xvef9sb3n/bG95/25wd/9ucHf/dnh8/3Byef9vcXX/
    +bG51/25wd/9wcnn/dXd9/2Zobv9sb3n/bnF7/3Bzff91eIH/e32D/25wd/9ucXv/bG95/3Byef9zdn//
    +bnB3/3V4gf9wc33/eXyG/3V3ff93eX//e32D/2Zpc/9nanT/Z2p0/2xudf9sbnX/c3V8/2ptd/9sbnX/
    +am13/3N1fP9sb3n/cHN9/2xudf9zdXz/dXd9/25wd/9wcnn/bnF7/36Biv9zdXz/c3V8/3t9g/95fIb/
    +d3l//3Bzff9ucXv/bnF7/3N2f/9sb3n/bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX//
    +amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/
    +bG95/2xudf9wc33/am13/2Zpc/9sb3n/am13/25wd/9zdn//bnB3/25xe/9wcnn/c3V8/25wd/9ucHf/
    +d3l//3Z4fP92eHz/am13/25xe/9wcnn/bW9z/2dqdP9sb3n/cHN9/2xvef9zdXz/c3V8/2xvef9wc33/
    +dXd9/2xudf9sb3n/bG51/2xvef9qbXf/bnF7/2ptd/9wc33/bnF7/3h7hf9sb3b/cHJ7/25wdv9ucXv/
    +am13/2xudf9sbnX/bG95/2xudf9ucXv/dXiB/3V4gf9zdXz/b3F1/3R2fP9xc3v/bnB1/25wd/9ucHf/
    +am13/3Bzff91d33/dnh8/3Byef9sbnX/cHN9/3Byef95e4H/cHN9/25xe/91d33/bW9z/25wd/9wcnn/
    +bnB3/29xdf9ucHf/c3V8/3Byef9vcXX/eXuB/3V4gf95e4H/bnB3/25wd/9kZmz/bG51/2dqdP9qbHP/
    +bG51/2ptd/9maXP/amxz/3N2f/9qbXf/am13/2ttdv9rbnX/cHJ6/2xvef9wcnn/cHN9/3Byef9vcnn/
    +bXB6/3N2gP9oa3X/Z2p0/2xvef9qbXf/dXiB/3N1fP93eoP/eXyG/3N2f/93eX//fn+D/3l8hv95fIb/
    +dXiB/3d6g/9+gYr/cHN9/3d6g/91eIH/bnF7/2dqdP9sb3n/bnF7/25wd/9wc33/bG95/2ptd/9wc33/
    +bnF7/3Byef9sb3n/bnF7/2xvef9sb3n/c3V8/3V3ff9zdXz/bnB3/25wd/93eX//bnF7/3Byef9ucHf/
    +e32D/25wd/9wc33/c3V8/25xe/9ucHf/eXyG/3N1fP9ucHf/dnh8/21vc/9sb3n/cHJ5/25xe/9sbnX/
    +dXd9/3V3ff9ucXv/bG51/3N1fP9ucXv/dnh8/2xudf9qbXf/bG51/21vc/9tb3P/bW9z/3N1fP9sbnX/
    +amxz/2dqdP9sbnX/bnF7/3N1fP9kZ3H/bG51/2xvef9nanT/am13/2xvef9maG7/bG51/2xudf9qbHP/
    +Z2p0/2Rncf9maXP/Zmhu/2Zpc/9iZW7/ZGdx/2dqdP9qbXf/am13/2xvef9qbXf/amxz/3N1fP9maXP/
    +Z2px/2Zpc/9sb3n/am13/25xe/9kZ3H/cHN9/25xe/9sbnX/bG95/2xvef91eIH/bnB3/29xdf93eX//
    +eXyG/3d6g/9wc33/cHN9/3N2f/95e4H/c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/
    +f4GH/3d5f/93eoP/c3Z//3d6g/91d33/foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn//
    +am13/25xe/9ucXv/c3Z//3Bzff9qbXf/c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bnB3/3V3ff9ucHf/
    +am13/3V4gf95e4H/eXuB/2xvef9wc33/cHN9/3N1fP9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9sbnX/
    +cHN9/3d5f/9qbXf/bnB3/21vc/9wcnn/bnF7/3V3ff9ucXv/bG51/25wd/94eoH/bnB4/3J0fP9vcXn/
    +dHZ9/2xudf9qbXf/Z2p0/2ptd/9nanP/bG95/2xvef93eX//bnF7/2psc/9tcHn/bnB5/21vdP9rbXT/
    +bnB3/2dqcf9sb3n/cHN9/25xe/9sb3n/amxz/2xvef9maG7/bG95/2dqcf9nanH/am13/2dqdP9maXP/
    +bG95/2ptd/9qbXf/am13/2xudf91d33/bG95/3l8hv95e4H/eXuB/3Bzff9ucHf/am13/3N2f/9zdXz/
    +c3V8/3V4gf91d33/dXiB/3d5f/+DhYz/e32D/3h6gP9zdn7/b3F5/2xvef9rbnj/Z2px/2dqdP9qbHP/
    +a210/2xvef93eX//c3V8/25xev91eIH/cHN9/2xudf9sbnX/cHJ5/3Bzff9kZ3H/bnF7/3N1fP9sb3n/
    +bG95/2xvef9ucXv/dXiB/2xvef91d33/bnF7/3N1fP9sbnX/bnB3/2xudf9ucHf/bG51/25wd/9qbXf/
    +c3Z//25wd/9sb3n/bnF7/2ptd/9sb3n/bnB3/3Bzff93eoP/c3Z//25xe/9sb3n/dXiB/25xe/9wc33/
    +cHJ5/3t+h/9ucXv/bG95/29xdf9sbnX/cHJ5/3t9g/9ucXv/amxz/3V3ff9qbHP/am13/2ptd/9sb3n/
    +Z2p0/3V3ff9sb3n/am13/2psc/9zdXz/cHJ5/3d5f/9tb3P/bW9z/2xudf9nanH/bG51/2xudf91d33/
    +bG51/21vc/9sbnX/bG51/3Z4fP92eHz/Z2p0/2xvef91d33/c3V8/25xe/9zdXz/b3F1/25wd/9ucHf/
    +bnB3/25wd/9nanT/bG95/2ptd/9ucXv/am13/2xudf9sbnX/bG95/25wd/9wcnn/bG95/2xudf9zdXz/
    +Z2p0/2dqcf9nanT/bG95/2ptd/9ucXv/ZGdx/25xe/9zdXz/bG51/2xvef9qbXf/cHJ5/2dqcf9nanH/
    +bG95/3Bzff9ucXv/Z2p0/2dqdP9nanT/bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/
    +cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/
    +c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/
    +bnB3/2xvef91eIH/dnh8/3V3ff9ucHf/cHN9/3N1fP9vcXX/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/
    +bnB3/3Z4fP93eX//bG51/3N1fP9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9ucXv/d3qD/29yfP9zdn//
    +c3V9/3l7gf9qbXf/bnF7/3Byef9zdn//a254/3N2f/91eIH/e32D/3d6g/9wcnn/cXR+/3J1fv9ucXn/
    +bnB3/3Byef9qbHT/c3Z//3h6gP9zdn//bnF7/2xvef9zdXz/b3F1/3N1e/9sbnX/bG51/3R2fP9ucXv/
    +bnB3/3F0ff9vcXj/b3F4/25xe/9zdXz/dXiB/25xe/95fIb/eXuB/3l7gf9ucXv/am13/2Zpc/9wcnn/
    +bnB3/2ptd/9wc33/bG95/3Bzff9ucHf/d3qD/3N2f/9wcnn/bnB3/29xdv9ucHf/cHJ5/25wd/9ucXv/
    +bG95/25wd/9sb3j/dXd8/29xd/9sbnX/cHN9/2xvef9ucHf/bG95/3d5f/91eIH/Zmlz/3V4gf95e4H/
    +cHN9/3N1fP91eIH/d3qD/4GDiv95e4H/eXyG/3V4gf93eoP/bnF7/3N1fP9ucXv/bG95/2xvef9ucHf/
    +bnB3/3N2f/9wcnn/bnB3/2ptd/9ucHf/bG51/25wd/9ucXv/d3l//25xe/9ucHf/amxz/3d5f/9ucXv/
    +am13/2ptd/91d33/bG51/3Byef9ucHf/cHN9/3V4gf9+gYr/d3qD/3Bzff97fof/cHN9/3N2f/93eoP/
    +dXiB/3N2f/97fof/e32D/3d6g/91d33/e32D/3d6g/9+gYr/cHN9/3N1fP9zdXz/cHJ5/2xvef9ucHf/
    +dXd9/25wd/9tb3P/bnB3/25wd/9zdn//dXd9/25wd/9tb3P/c3V8/2xvef9sb3n/cHN9/2dqcf9qbHP/
    +amxz/2ptd/9qbXf/Z2p0/2ptd/9sb3n/cHN9/2xudf9nanT/am13/2dqdP9maXP/Z2p0/2dqdP9kZ3H/
    +am13/2Rncf9maG7/YmVu/2Zpc/9kZ3H/am13/1xfaP9qbXf/bG95/2BjbP9kZ3H/Z2px/2xvef9maG7/
    +Zmhu/25wd/9zdXz/bnF7/2dqdP9maXP/Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/
    +bG51/2xvef9zdn//amxz/2xudf9qbHP/bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/
    +bG95/25xe/9maXP/bG51/2xudf9ucXv/bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/25wd/9zdXz/
    +cHJ5/29xdf9sbnX/dXd9/3V4gf95e4H/cHN9/3V4gf9zdn//cHJ5/3N1fP9wc33/e32D/3t9g/9+gYr/
    +eXuB/3Bzff95e4H/eXuB/25wd/9zdn//bG95/3N2f/91eIH/eXyG/3d5f/9wcnb/b3F2/3Z4ff9vcXj/
    +cHN7/21veP90dn3/am13/3Byef9wcnn/cHN8/2psc/9ucHf/bnB3/3V3ff9wcnn/bW9z/29xeP9sb3n/
    +amxy/2Zpcv9oa3T/X2Js/2hrdf9xc3v/bG95/2xudf9pbHb/bXB6/2ttdf9rbnf/a252/2lsdv9tb3j/
    +bW93/2psdP9vcnz/amx0/2dqdP9tb3b/bG51/3N1fP9qbXf/d3qD/3Bzff9wc33/bG95/2ptd/9qbHP/
    +bnB3/21vc/9sbnX/bnB3/2xudf9wcnn/bW9z/3d5f/9wc33/bG95/29xef9sbnX/aWx2/2ptd/9nanT/
    +am13/2xudf9nanT/a210/3N1ff9vcXn/bW93/3V4gf91eIH/am13/2ptd/9wc33/cHN9/2Jlbv9ucXv/
    +dXd9/25wd/9sbnX/bG51/25wd/91d33/cHJ5/3V3ff9sbnX/cHN9/2dqdP9vcXX/bG51/2xudf9qbXf/
    +am13/2xudf9zdXz/bnB3/29xdf9maXP/bG95/2xvef9sb3n/c3Z//3V4gf9wcnn/c3V8/2psc/91d33/
    +cHN9/25xe/9sb3n/d3l//2xvef9ucXv/bnB3/2xudf9zdXz/foCG/3N2f/9sb3n/d3qD/2xvef9sb3n/
    +c3Z//3N1fP9ucHf/dnh8/3Byef9ucHf/bG95/3V3ff9wcnn/e32D/29xdf9tb3P/bG51/29xdf9ucHf/
    +b3F1/3Z4fP9ucHf/bnB3/3Byef9zdXz/dXd9/3V3ff9nanH/bG51/3d5f/9sb3n/am13/2xvef9sbnX/
    +bnF7/2xvef9nanT/am13/2Rncf9maXP/Zmlz/2dqdP9iZW7/XF9o/2Rncf9ucXv/am13/3Byef9zdXz/
    +bG51/3V3ff9ucHf/bG51/2psc/9zdXz/cHJ5/3N1fP9maG7/cHJ5/3N1fP9nanT/dXd9/2xudf92eHz/
    +b3F1/2xvef91eIH/d3qD/3V4gf9sb3n/bnF7/3N2f/91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/
    +bG51/25wd/9zdXz/d3l//2ptd/9qbXf/bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/
    +bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9sbnX/
    +bnF7/2ptd/9sbnX/am13/3d5f/93eX//eHl9/25wd/91d33/cHN9/25wd/9ucXv/cHJ5/3l7gf93eX//
    +e36H/3d5f/9ucHf/dXiB/3d5f/9wcnn/c3Z//2xvef9ucXv/c3Z//3l7gf92eHz/Z2pz/2Zpcv9ucHj/
    +Zmlz/2hrc/9pbHb/bXB6/2dqdP9maXP/Zmlz/2dqdP9hZGz/Z2px/2dqcf9zdXz/am13/2dqdP9oa3X/
    +a254/2hrdP9oa3P/am13/2hqcf9tcHj/cHJ5/3Byef90dnz/bnB5/3V4gf9ydHz/cXR+/29ye/9vcnv/
    +b3J8/3N2f/9xc3r/eXyF/29ye/9tb3f/cnR+/3N1fP93eX//bnF7/3l8hv95e4H/dXiB/3N2f/9ucHf/
    +am13/3N1fP9wc33/cHN9/3N2f/9ucHf/bnF7/2xvef95e4H/dXd9/25wd/9wc3r/cHN6/29ye/9ydX7/
    +c3Z//3V4gf9zdXz/c3Z//3J1fv94eoL/cXN6/25weP9zdXz/c3V8/3V4gf91d33/foCG/3t9g/9wc33/
    +d3qD/3l7gf93eoP/c3Z//3N2f/9zdn//d3qD/3N2f/93eX//bnB3/3V4gf9nanT/cHJ5/3Byef9wcnn/
    +cHJ5/2xvef9wcnn/d3qD/3N2f/91d33/am13/3N1fP9wc33/cHN9/3l8hv97fYP/d3qD/3N2f/9ucHf/
    +eXuB/3N2f/9ucXv/cHN9/3l7gf9wc33/c3Z//25wd/9wcnn/dXiB/36Ahv9zdn//bnB3/3d6g/9vcXX/
    +bnB3/3N1fP9wcnn/bG51/3h5ff9wcnn/cHJ5/2xudf9zdXz/cHJ5/3d5f/9tb3P/bG51/2dqdP9ucHf/
    +bnB3/3Byef93eX//bnF7/25wd/9ucXv/c3Z//3V3ff91d33/Z2p0/25xe/95e4H/c3Z//3N2f/9wc33/
    +bnB3/3N2f/9ucHf/bnB3/3V3ff9sbnX/cHJ5/3V3ff91d33/b3F1/2dqcf9wcnn/c3Z//3Byef9zdn//
    +dXiB/3Bzff95e4H/c3Z//25xe/9qbXf/c3Z//3V3ff91d33/amxz/3Byef94eX3/bG95/3N2f/9ucXv/
    +dXd9/25wd/9ucXv/d3qD/3V4gf93eoP/b3F1/3Byef91d33/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/
    +am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/
    +bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/
    +Z2px/2dqdP9qbHP/Zmlz/2Jlbv9qbXf/am13/2xvef9maG7/Z2p0/2Rncf9gY2z/ZGdx/2Rncf9sb3n/
    +Zmlz/3Bzff9zdXz/amxz/2ptd/9zdXz/bG51/25xe/9qbXf/am13/2xvef91d33/c3V8/21wev9vcXb/
    +dHZ8/25wd/9vcnz/bXB5/3N2f/9sbnX/bG51/25wd/9ucXv/Zmlz/21vc/9sbnX/dXd9/25wd/9ucHf/
    +cXN6/29xeP9ucHj/bnF6/3Bzff9vcnz/dHeA/3J1f/9wc33/dnmC/3J0fP93eYD/dHZ9/29xeP9wcnr/
    +bnB4/3Byef9ydHv/b3F5/3h7gv9vcnz/bG93/3Fzev9sb3n/dnh8/29xdf95e4H/d3l//3N1fP9zdn//
    +bnB3/2dqcf9tb3P/bG51/2xudf9sb3n/amxz/2ptd/9nanH/c3Z//2xvef9qbHP/bG94/21vdv9rbnb/
    +bG95/2ptd/9qbXf/Z2p0/2xudf9sbnX/cnR7/29xeP9oa3T/bG95/2xvef9ucXv/bG95/3V4gf9zdn//
    +amxz/25xe/91d33/bnB3/21vc/9qbXf/cHJ5/3d5f/9wcnn/d3l//2xvef91d33/Z2p0/25xe/9sb3n/
    +bG95/3Byef9tb3P/bW9z/3Bzff9sbnX/Z2p0/2BjbP9nanT/Z2p0/2Zpc/9sb3n/bnF7/2dqdP9nanT/
    +YmVu/25wd/9maXP/ZGZs/2Rncf9sb3n/Zmhu/2ptd/9kZ3H/YmVu/2Zpc/9ucHf/Z2p0/2BjbP9sb3n/
    +YmVu/2Rncf9qbXf/Zmlz/2psc/9qbXf/Zmlz/2Rncf9iZW7/am13/2dqdP9zdn//amxz/2psc/9nanT/
    +am13/2xudf9nanH/dXd9/2xudf9tb3P/bnB3/3Byef94eX3/d3l//2ptd/9ucXv/eXuB/3V4gf93eoP/
    +dXiB/3N1fP95e4H/cHN9/3Bzff93eoP/cHJ5/3V4gf91eIH/c3Z//25wd/9qbXf/cHN9/3V3ff9vcXX/
    +c3Z//3V4gf9ucHf/c3Z//25wd/9wc33/Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dXiB/2ptd/9wc33/
    +bnF7/3Z4fP9wcnn/cHJ5/3l7gf93eX//e32D/29xdf91d33/dXd9/3N1fP9sb3n/Z2p0/3V3ff91d33/
    +bnB3/2xvef9sbnX/bnB3/25wd/91d33/bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/
    +bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/
    +bnB3/21vc/9wcnn/bG51/2xvef9qbXf/dnh8/3h5ff91d33/bG51/25wd/9ucHf/am13/2xudf9nanT/
    +c3V8/2xvef91d33/dXd9/2xudf9sb3n/c3V8/2dqdP9ucXv/Zmlz/2xvef9wcnn/d3l//3Bzff9wc3v/
    +bXB5/3J1fv9qbXf/bnF7/2ptd/9zdXz/bG51/25wd/9zdXz/bnF7/2ptd/9ucXv/cHJ5/3d5f/9ucXv/
    +cHN9/3V4gf9ucXv/bnF7/25wd/9vcnz/bXB6/21wev9oa3X/bXB6/3R2fP9ucHX/eHqA/29xef9sb3n/
    +bG95/2dqdP9qbXf/Z2p0/2Zpc/9ydHz/bXB4/2lsc/9tb3j/a253/3V3ff9ucHf/d3qD/3V4gf91d33/
    +dXd9/29xdf9maG7/bnB3/21vc/9sbnX/bnF7/2xudf9wcnn/bW9z/3V4gf9wc33/amxz/2ptd/9qbXb/
    +bnB3/29xeP9qbXf/bnB3/2dqcf9sbnX/bG51/21wev9rbnf/Z2p0/2psc/9sb3n/cHJ5/2psc/91d33/
    +dXd9/2psc/9sb3n/c3V8/3Byef9sb3n/bnB3/3V3ff94eX3/bnF7/3l8hv9zdXz/e32D/2xvef9zdn//
    +d3qD/3N2f/93eoP/dXd9/3N2f/9+gIb/cHN9/3N1fP9sb3n/cHN9/3N2f/9zdn//d3qD/3t9g/95fIb/
    +d3qD/3Bzff97fof/eXyG/3V4gf9zdXz/dXiB/25wd/9wcnn/bnB3/3Byef91d33/d3qD/3d5f/9sb3n/
    +d3l//25wd/9ucXv/d3qD/3V4gf91eIH/d3qD/3V4gf91eIH/dXd9/3t9g/93eoP/foGK/3Byef9ucXv/
    +bnB3/25xe/9wcnn/c3V8/3t+h/9wc33/cHJ5/25xe/9wc33/d3l//3h5ff9qbXf/cHJ5/3d6g/9wcnn/
    +dnh8/3N1fP9sbnX/dnh8/29xdf9ucHf/cHJ5/21vc/9zdXz/c3V8/3N1fP9tb3P/bG51/3N2f/9ucXv/
    +bG51/2xvef9wc33/Zmlz/2xvef9nanH/Zmlz/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/25xe/9qbXf/
    +bnF7/25wd/91d33/bnF7/2xvef93eoP/eXuB/36Ahv9wcnn/c3Z//3l7gf93eoP/c3Z//25xe/9+gIb/
    +foGK/3l7gf97fYP/d3l//3t9g/93eoP/foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/
    +e32D/3N1fP9wcnn/cHJ5/25xe/9zdn//c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/
    +dXiB/3Bzff9wcnn/bG95/25wd/9zdXz/bG51/3V3ff92eHz/dXd9/25wd/9sb3n/bnF7/2xvef9ucHf/
    +cHJ5/3h5ff9wcnn/foCG/3t9g/9tb3P/cHJ5/3Z4fP9ucHf/dXd9/2ptd/9ucHf/c3Z//3V4gf92eHz/
    +c3V7/21wd/9wcnr/am13/3N1fP9sbnX/bnF7/2ptd/9sbnX/cHN9/25xe/9qbHP/bnB3/29xdf91d33/
    +bG95/25xe/9wcnn/bG95/21vc/9ucHf/bG95/25wd/91d33/amxz/25xe/9zdn//c3V8/36Biv93eoP/
    +c3Z//3d6g/91d33/cHN9/3d6g/91d33/foCJ/2Zpcv9jZnD/bnB3/2ptdv9vcnz/amxz/3d5f/93eX//
    +c3V8/3V3ff9ucHf/ZGZs/2xvef9sb3n/cHN9/3N2f/9vcXX/cHN9/25wd/93eoP/dXiB/25xe/9ucXv/
    +bXB6/3Byef9vcXr/bnB3/2xvef9nanT/cHJ5/25weP90d37/c3V6/25weP9ucXr/c3Z//25xe/9maXP/
    +c3V8/3V3ff9nanH/bnB3/3N1fP9zdXz/bnB3/21vc/9zdXz/d3l//25xe/9zdn//bG51/3Bzff9kZmz/
    +bG51/2xvef9sbnX/c3V8/29xdf9sb3n/c3Z//25wd/9qbXf/Z2p0/3Byef9ucHf/bG51/3Bzff9zdn//
    +cHN9/2xvef9sb3n/dXd9/3V4gf9zdn//cHJ5/3V4gf9ucXv/cHN9/3Bzff9ucHf/c3Z//3d5f/91d33/
    +Z2px/3Z4fP9sbnX/bG51/3Bzff9ucHf/bW9z/25wd/9sbnX/bnF7/2xudf9wc33/cHJ5/3V3ff9nanT/
    +bG51/2dqdP9nanT/am13/2xudf93eoP/bG51/2xudf9wcnn/cHJ5/3d6g/93eX//bnB3/25wd/93eoP/
    +cHN9/3d5f/9zdn//am13/3V3ff9ucHf/c3V8/3V3ff9tb3P/cHJ5/3N1fP91d33/bG51/2xudf9ucHf/
    +dnh8/2xvef91eIH/cHN9/25wd/9zdXz/bnB3/2xvef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9zdn//
    +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//e36H/3l7gf9/gYf/bnB3/25xe/91d33/c3V8/21vc/9ucHf/
    +dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/
    +dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/
    +eXyG/36Biv91eIH/dXiB/3N1fP9wc33/dXiB/25xe/9zdn//dXd9/3Bzff9ucHf/cHJ5/3Byef9qbXf/
    +cHJ5/2ptd/91d33/bG95/36Ahv97fYP/bW9z/3Byef91d33/b3F1/3Bzff9sb3n/bG95/3V4gf95e4H/
    +d3l//3d5gv9ucXv/cHN9/25wd/9zdn//c3V8/3Bzff9sb3n/bnB3/3Z4fP9zdn//am13/25xe/9ucHf/
    +dXiB/25wd/9wc33/cHN9/3Byef9vcXX/bG51/25wd/9zdXz/dXd9/2psc/9wcnn/bnF7/2xudf91d33/
    +c3V8/25wd/9ucXv/am13/2psc/9sbnX/bW9z/3V3ff9ucHf/aWxz/3Fzef9sbnX/c3V+/25wd/93eX//
    +d3l//3Bzff93eoP/bnF7/2Zpc/9wcnn/bnB3/3Bzff9zdn//bG95/3N2f/9ucXv/dXiB/3V4gf9wc33/
    +cnV+/25weP9rbXX/bXB4/2hqcf9maXP/YGNs/2ptd/9qbXf/b3J7/25wd/9pa3P/amxz/2ptd/9wc33/
    +Zmlz/3V3ff91d33/amxz/3Byef9zdXz/cHN9/3N2f/9wc33/eXyG/3l8hv91eIH/d3qD/25xe/9zdn//
    +ZGdx/25wd/9ucXv/bW9z/3Byef9sbnX/bG51/3N1fP9qbHP/Zmlz/2dqdP9sbnX/amxz/2Rncf9ucXv/
    +am13/2xvef9nanH/YmVu/2ptd/9qbXf/Z2px/2Zpc/9nanT/amxz/2psc/9sb3n/Z2p0/25xe/9wc33/
    +cHN9/2Zpc/93eX//Z2p0/2xudf9zdn//c3Z//2ptd/9wcnn/b3F1/3Byef9vcXX/cHJ5/25wd/91d33/
    +Z2p0/2ptd/9qbHP/bG51/2xvef9sbnX/d3qD/2dqdP9sbnX/bnF7/2xvef93eX//bnF7/2xudf9nanT/
    +c3V8/2ptd/9qbXf/bG95/2Zpc/9wcnn/am13/2xvef9wc33/amxz/2ptd/9sb3n/cHN9/2ptd/9tb3P/
    +bG95/3Z4fP9ucHf/c3V8/25xe/9qbHP/bnF7/2xudf9sbnX/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/
    +am13/2xudf9zdXz/cHJ5/3Byef9wcnn/am13/3N1fP9wc33/eXyG/21vc/9ucHf/dXd9/2xvef9qbXf/
    +bG51/3V3ff93eX//bG95/3Byef9ucHf/bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX//
    +am13/3Bzff9wc33/bW9z/2ptd/9nanT/am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/
    +Z2px/2ptd/9zdXz/bG95/2xvef9qbHP/bG51/25xe/9nanT/dnh8/3N1fP9wc33/bnF7/3N2f/9zdn//
    +am13/3Bzff9zdXz/e32D/3V4gf+Fh43/f4KM/3N2f/93eoP/foCG/3N1fP95fIb/dnh8/3l7gf9+gIb/
    +e36H/36Ahv95fIb/c3Z//3N2f/9sb3n/dXiB/2xvef9ucXv/bG95/3Byef91eIH/eXuB/2ptd/9ucXv/
    +bnB3/3Bzff9wcnn/c3Z//3V4gf9sb3n/bG95/2xudf9sbnX/cHJ5/3V3ff9nanH/bnF7/3Bzff9ucXv/
    +d3qD/3N2f/9ucXv/dXiB/3Byef9qbXf/b3F4/25wd/92eHz/cXR9/25wd/9vcnv/bG95/3N2f/9wcnn/
    +d3qD/3d6g/9zdn//dXiB/3Bzff9nanT/bnB3/25xe/9zdn//cHN9/25wd/9zdn//cHJ5/3h5ff91d33/
    +bG51/2xvef9tb3f/bnB4/29xev9rbnj/bnB3/2psc/9ucHf/b3F5/3J0ev9ucHb/Zmhv/2ptdP9sb3n/
    +cHJ5/2dqcf93eX//c3V8/2dqcf9qbXf/cHJ5/25xe/9ucXv/cHN9/3t9g/95fIb/c3Z//3d6g/9zdn//
    +d3qD/2ptd/9zdXz/dXiB/3Bzff95fIb/dXd9/3V4gf9+gIb/cHN9/25xe/9qbXf/cHJ5/25wd/9sbnX/
    +c3Z//3Bzff9wc33/bW9z/2ptd/9ucXv/bG95/2psc/9nanH/Z2px/2psc/9sbnX/bG95/2xudf9zdXz/
    +dXd9/3N1fP9qbXf/dXiB/2dqdP9wcnn/c3V8/3N1fP9sbnX/am13/2xudf9sb3n/am13/2xvef9sb3n/
    +dXd9/2ptd/9qbXf/Z2p0/2xudf9wcnn/b3F1/31+gf9vcXX/bW9z/3N2f/9wc33/dXiB/3N1fP9ucHf/
    +cHN9/3d6g/9zdn//c3Z//3N2f/9sb3n/eXuB/25wd/9zdn//dXd9/25wd/9ucXv/dXiB/3l7gf9sb3n/
    +bnB3/3N1fP9wcnn/Z2p0/2xvef9sb3n/bG51/25xe/9qbXf/bG95/2BjbP9sb3n/cHN9/2xvef9tb3P/
    +bnB3/2xvef9qbXf/cHN9/25xe/9ucXv/bG95/25xe/91d33/c3V8/3t9g/9qbXf/bG95/3Z4fP9ucHf/
    +bnB3/2psc/92eHz/dXd9/25xe/9ucXv/bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/
    +d3qD/2xvef9wc33/cHN9/25wd/9ucXv/bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/
    +amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/amxz/2ptd/9qbXf/Z2p0/3Bzff9ucHf/cHJ5/21vc/9ucHf/
    +bnB3/2Zpc/9nanT/Z2p0/3V3ff9ucHf/fX6B/3d5f/9sbnX/bG95/3h5ff9ucHf/cHN9/2xvef9ucHf/
    +dnh8/3V3ff91d33/dXd9/29xdf9ucHf/bG51/3Byef9sbnX/bG95/2ptd/9sbnX/cHN9/3V3ff9maXP/
    +bG95/2xudf9qbXf/amxz/2ptd/9sb3n/Zmhu/2psc/9maXP/amx0/2ptd/9sb3n/YmVu/2xvef9tcHn/
    +bW92/3V3ff9xdH3/bXB6/3V3ff9vcXj/bXB5/3Fzev9ydHr/dXh//3J0fP9vcXn/b3J7/29xdv9wcnn/
    +bW9z/3V3ff93eX//bnB3/3Byef9wcnn/ZGdx/2ptd/9maXP/bG95/25xe/9qbXf/c3V8/2xudf91d33/
    +c3V8/25wd/9zdXz/bXB6/21wev9ucXn/bG95/2xvef9sbnX/bnB3/25xe/92eH3/c3V8/2ptdf9vcXb/
    +c3V8/3N2f/9maXP/e36H/3N2f/9sb3n/bG95/25xe/9zdn//cHN9/3N2f/93eX//eXuB/3Bzff93eoP/
    +cHN9/3d6g/9nanT/bnB3/3N2f/9wcnn/c3Z//25wd/9ucXv/d3l//25wd/9sbnX/Z2p0/3Byef9ucHf/
    +am13/3V4gf91eIH/c3Z//25wd/9sb3n/c3V8/3N2f/9ucHf/bnB3/25xe/9ucHf/bnB3/3V4gf9wc33/
    +c3Z//3V3ff91d33/bnB3/3l7gf9nanT/bnF7/3Bzff9zdXz/bG51/2xudf9sbnX/bnB3/2xudf9sbnX/
    +bG95/3Z4fP9qbXf/bG95/2xvef9wcnn/d3qD/3N1fP9+gIb/c3V8/3N1fP93eoP/dXiB/3t+h/93eoP/
    +c3Z//3N2f/9+gYr/eXyG/3N2f/91eIH/bG95/3V4gf9ucHf/dXd9/3V3ff9wcnn/bG95/3N1fP9wc33/
    +Zmlz/2dqcf9qbXf/eHl9/2xvef9wc33/c3Z//25xe/9zdn//cHN9/3V4gf9sb3n/dXiB/3t9g/91eIH/
    +dXd9/3l7gf95e4H/d3l//35/g/95e4H/d3qD/3d6g/95e4H/eXyG/3d6g/+DhYz/dXiB/3d6g/97fYP/
    +d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/
    +bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/
    +ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/dXd9/2xudf9ucHf/bG95/2xudf9zdXz/bnF7/3Byef9sbnX/
    +bG51/21vc/9sbnX/cHJ5/2dqcf94eX3/bG95/3t9g/91d33/am13/25xe/91d33/am13/2ptd/9sbnX/
    +bW9z/3V3ff94eX3/dXd9/29yfP9ucHf/bnB3/2ptd/9ydHz/b3F1/3V3ff9ucHf/bnB3/3V3ff9zdXz/
    +Z2px/3Byef9ucXv/dXiB/3Byef9zdn//dXiB/3Byef9sb3n/a254/3Byd/9vcXn/cHJ5/2ttc/9tb3j/
    +bnF7/25xev91d37/cHN8/25weP90dn//cXN5/29yev9ydH3/bnB3/3V3fv9ydX7/b3J8/3F0fv9zdn//
    +dXiB/25xe/93eX//d3l//25xe/9zdXz/bW9z/2dqcf9ucHf/bG51/3V3ff9ucHf/am13/3N1fP9sbnX/
    +cHN9/3N1fP9qbXf/cHJ5/2xudf9rbnf/amx0/2ttc/9kZ3H/Zmlz/2psc/9qbXf/bnF6/3F0fP9rbnf/
    +bXB4/3R2fP9wc33/YGNs/3d6g/9ucXv/Zmlz/2psc/9qbHP/Z2p0/2dqdP9nanT/c3V8/25wd/9sb3n/
    +cHJ5/2dqcf9wc33/Zmlz/2xudf9qbXf/amxz/2ptd/9qbXf/bG95/3N1fP9sbnX/bG51/2Zpc/9qbXf/
    +bG51/2psc/91d33/cHN9/25xe/9qbXf/am13/3Bzff9zdXz/amxz/2psc/9nanH/Z2px/2Zpc/9ucXv/
    +am13/3Bzff9zdXz/cHJ5/2psc/91d33/bnB3/25xe/91d33/dXd9/2xvef9sb3n/bG95/25xe/9qbXf/
    +cHN9/3N2f/95e4H/bG95/3N2f/9wcnn/cHJ5/3d6g/9wc33/foCG/25wd/9vcXX/c3V8/2xudf92eHz/
    +cHJ5/29xdf9sbnX/dXd9/25wd/9wcnn/bG95/2Zpc/9zdXz/bW9z/3Z4fP91d33/bW9z/25wd/91d33/
    +dXd9/2xudf9ucHf/cHJ5/25wd/9qbHP/bG95/25xe/9sbnX/bnF7/2dqcf9nanT/YGNs/2xudf9sb3n/
    +amxz/2psc/9qbXf/amxz/2psc/9sb3n/am13/2xvef9qbHP/cHN9/3N1fP9sb3n/eXuB/2dqcf9nanT/
    +am13/2dqdP9maG7/Zmlz/3Byef9zdXz/bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/
    +bG51/21vc/91d33/am13/2xvef9zdXz/bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/
    +Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/bnB3/3V3ff9sbnX/bG51/25wd/9qbXf/c3V8/25wd/9ucXv/
    +am13/2xvef9sb3n/am13/25xe/9qbXf/dXiB/3N2f/9/gYf/eXyG/3Bzff91eIH/d3l//25wd/9zdXz/
    +bnB3/29xdf9zdXz/dnh8/3V3ff9wcnr/b3F4/3J0ev9tb3f/cXN6/2ttdP9ucXv/bG51/25wd/94eX3/
    +cHJ5/2dqcf9zdXz/c3V8/3N1fP9ucHf/bnB3/3Z4fP9vcXb/bXB6/2xvef9wc3z/cXN7/3Fze/9xdHv/
    +cHJ5/3R2fv92eH7/dHeB/3R3f/9xdHz/eXuA/3d5f/9ydX3/eXyF/3BzfP93eYD/dHd//3Bzff90dn3/
    +cHJ5/25xe/9tcHn/dnh8/3V3gP9ucXr/bnF6/2xvef9rbnj/aWx2/2tueP90dnz/b3F4/25wdP90dnv/
    +bW93/3J0fP9zdXz/bW92/3J0fP9qbXf/bG51/25wdf9ucHb/bG51/2psc/9sbnX/am13/2ptd/9ydHr/
    +Z2pz/2ptd/9xc3n/bG95/2Jlbv99foH/c3V8/2xudf9tb3P/bG51/25wd/9ucHf/bnB3/3V3ff91d33/
    +cHN9/3Byef9maG7/bG95/2Rncf9iZW7/Z2p0/2xudf9qbXf/Z2p0/2xudf9ucXv/amxz/2dqdP9nanT/
    +am13/2dqcf9nanH/cHJ5/25xe/9sb3n/am13/2xudf9ucXv/c3V8/2xvef9qbXf/bnB3/29xdf9ucHf/
    +c3V8/3Byef91d33/bG95/2xvef9nanT/dXd9/29xdf9wcnn/dXd9/3Bzff9qbXf/bG51/2xudf9sb3n/
    +Zmlz/2ptd/9qbXf/cHJ5/2Rncf9qbHP/Z2p0/2ptd/9sb3n/bG95/3d6g/9nanH/Z2px/25xe/9qbHP/
    +d3l//2xvef9qbHP/bG51/3N1fP9sb3n/bG95/25xe/9maXP/bG95/2dqcf9ucXv/bG95/2dqcf9nanT/
    +bnF7/25xe/9maXP/bG51/2ptd/95e4H/cHJ5/3V4gf93eoP/cHJ5/3l7gf9wc33/bnF7/2dqdP9sb3n/
    +c3V8/3Byef9ucHf/c3Z//25xe/9ucXv/cHN9/25xe/9ucXv/bG95/3h5ff94eX3/cHJ5/4CChv9sbnX/
    +bG51/3N1fP9wcnn/bnB3/2xvef91d33/dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/
    +bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/
    +cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/cHN9/2dqdP9sb3n/Z2p0/2xudf9qbHP/Z2p0/25xe/9qbXf/
    +bnF7/2dqcf9qbXf/am13/2Zpc/9qbHP/ZGdx/2xvef9qbXf/c3Z//3N1fP9qbXf/am13/3N1fP9qbXf/
    +bnF7/2ptd/9sbnX/bnF7/3Bzff9ucXv/am11/2xudf9xc3j/a211/3Fzev9tb3T/cHN9/2Zpc/9ucHf/
    +dnh8/3Byef9rbXT/dHZ7/3Bzff90d4D/cHN9/2xvef9zdn//bnB3/25wd/9tcHr/cnV8/29xef9wcnr/
    +cnR6/21vdv9wc3v/c3V7/3V3ff9wc33/bXB6/3N2fv90dnr/bnB1/3V3ff9tb3b/cXN6/3Byef9vcXn/
    +cHJ5/3Byef9xc33/cHN8/3d5f/93eoL/cnV+/3BzfP9ucXr/bXB5/2tueP9tcHn/dnh+/3J0ff9vcnn/
    +dHZ+/21wef9vcXr/b3J8/21vdv9ydX7/bG95/25wd/9tcHn/bW92/2dqdP9nanT/bnB3/25wd/9ucXv/
    +dXd9/2ptdv9rbnf/bnF5/2xvef9iZW7/d3qD/2ptd/9qbXf/am13/2ptd/9qbXf/bG95/2ptd/9wcnn/
    +bG95/2xvef9ucHf/Zmhu/2xvef9iZW7/ZGdx/2psc/9nanH/Zmlz/2Rncf9qbHP/bG95/2psc/9qbHP/
    +Zmlz/2ptd/9qbHP/amxz/3Byef9qbHP/Z2p0/2psc/9iZW7/bG95/3Bzff9qbHP/amxz/2ptd/9sbnX/
    +amxz/25xe/9ucHf/dXd9/29xdf9wcnn/Zmlz/3V3ff9sbnX/bnB3/3N1fP91d33/bnB3/3Byef9vcXX/
    +bnB3/2psc/9sb3n/bnB3/3V4gf9qbHP/bG51/29xdf9sb3n/cHJ5/3Byef+Agob/bG51/2xudf9zdXz/
    +bW9z/3Z4fP9zdXz/bnB3/25wd/94eX3/dXd9/3Byef9zdXz/bnB3/3V3ff9ucHf/dXd9/3Z4fP9vcXX/
    +bG95/3V4gf93eoP/bnF7/2xvef91eIH/eXyG/25xe/93eoP/d3qD/3N1fP97fof/dXiB/3V4gf9ucXv/
    +c3Z//3d6g/9zdn//cHN9/3N2f/9ucXv/bnF7/25xe/9sb3n/cHN9/25wd/94eX3/eHl9/3V3ff9/gYf/
    +bG95/2xvef9wc33/bnF7/25wd/9sbnX/bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/
    +bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/
    +cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/cHJ5/3V3ff9sb3n/bG95/2dqdP9qbHP/Zmhu/2Rncf9nanT/
    +amxz/2Zpc/9cX2j/ZGZs/2Zobv9gY2z/amxz/2BjbP9nanT/am13/3V3ff9zdXz/am13/2xudf9sb3n/
    +bG51/2xvef9sbnX/am13/3N1fP9zdXz/c3V8/3Byef94eoD/eHuC/3N1fP93eX7/cnR5/3R2ff9sbnX/
    +dXd9/3d6g/9zdXz/bnB2/3N1ff91d33/dXd9/3N1fP9sbnX/cHJ5/21wev9wc33/b3J7/3R3fv9ucXr/
    +b3J3/3N1ef9rbnf/bnF7/3J0fP9ydX7/bnF6/2tueP9wc3z/b3F6/2lsdP9wcnn/aWx2/21veP9rbnj/
    +bG95/21veP9pa3T/amxz/25wdv9ucHf/b3F2/2hqc/9tb3b/bG92/29xef9nanT/bnB3/3J1ff9vcXr/
    +b3F4/3J0fP9ydHv/c3V7/3N1fP9tb3T/dHZ8/2ttdv9tb3X/a253/2xudf9laHL/ZGdx/2xudf9qbXf/
    +bG95/3V3ff9qbHP/a213/2xudP9ucXv/ZGdx/3t9g/9ucXv/Z2p0/2xudf9qbHP/bnF7/2ptd/9ucXv/
    +d3l//3N1fP91d33/dnh8/2xudf9wcnn/Zmlz/2dqdP9sbnX/bnB3/3Byef9vcXX/cHJ5/3Z4fP9vcXX/
    +bnB3/2xudf9ucHf/am13/2ptd/9zdXz/bG51/2ptd/9qbXf/Z2p0/3Byef94eX3/b3F1/2xudf9sbnX/
    +bW9z/2xudf9wcnn/bnF7/3V3ff9sb3n/cHJ5/2psc/93eX//bW9z/25wd/9wcnn/dXd9/25wd/9wc33/
    +bnF7/25xe/9qbXf/c3V8/3N2f/95fIb/bG95/3Bzff9zdXz/bnF7/3N2f/9zdn//gYSN/3N1fP9ucHf/
    +c3Z//25wd/91eIH/cHN9/25xe/9ucHf/d3l//3d6g/93eoP/eXuB/3Byef9zdn//c3V8/3l7gf95e4H/
    +c3Z//3Bzff95e4H/eXuB/25wd/9ucXv/d3l//3t+h/9zdXz/e32D/3N2f/9sb3n/dnh8/25wd/9zdXz/
    +Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/bG51/2xudf9qbXf/bG51/3Byef9ucHf/dXd9/3V3ff9zdXz/
    +f4GH/29xdf9zdXz/cHJ5/25wd/9vcXX/bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/
    +c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/
    +dXiB/3d6g/9zdn//dXiB/25xe/9wc33/dXiB/3V4gf9zdn//bG95/3N1fP9ucHf/bnF7/2xvef9ucHf/
    +cHJ5/2xudf9wcnn/Z2px/25wd/9tb3P/Z2p0/25wd/9nanT/cHN9/3N2f/91eIH/d3l//25xe/9sb3n/
    +c3Z//25xe/91d33/bG51/29xdf91d33/dXd9/3N1fP9oa3T/cXR8/3N1ev9tcHn/b3J8/29xd/9zdXz/
    +am13/3V3ff91d33/cHJ5/2xudv9ydHv/cXN6/3J0e/9wcnn/am13/25xe/9rbXP/bW92/21veP9vcnr/
    +bXB6/21weP9ucHX/bG93/3Fze/9zdn7/dnmA/3N2f/9xdH7/d3l//3FzfP9tb3b/c3V6/25wef9xc3j/
    +b3J3/25xef9zdn3/bG94/29xef91d3z/cXN4/3Bydv9qbXb/bXB6/21vd/9ydHv/Z2p0/2ttdP9ucHb/
    +bG51/2hrc/9qbXb/a253/3J1ff9wc33/a210/3R2ff9nanT/aGty/2psc/9sbnX/ZGdx/2Zpc/9sbnX/
    +Z2p0/2xvef9wc33/Zmlz/2xvef9qbXf/bnF7/2Jlbv93eoP/bnF7/2Zpc/9nanH/amxz/3Bzff9sbnX/
    +bnF7/3V3ff9ucXv/bG95/3Byef9qbHP/am13/2Zpc/9kZ3H/Z2px/2dqcf9qbHP/bG51/2dqdP9ucXv/
    +Z2px/2dqcf9maXP/Z2p0/2psc/9nanT/c3V8/2dqdP9qbXf/am13/2Zpc/9qbHP/am13/2dqcf9nanT/
    +Z2p0/2Zobv9maXP/Z2p0/2ptd/9wc33/am13/2xudf9iZW7/c3V8/2Zpc/9ucXv/bnF7/3Bzff9sbnX/
    +cHJ5/2xvef9qbXf/am13/2xudf9sbnX/d3l//2dqdP9sbnX/bG51/2dqdP9qbXf/am13/3t9g/9kZ3H/
    +Zmlz/3Byef9qbHP/c3Z//2xvef9ucHf/bG51/3Z4fP9zdXz/dXd9/3V3ff9vcXX/cHJ5/2xvef9zdn//
    +c3Z//2xvef9qbXf/dXiB/3d5f/9ucHf/cHJ5/3l7gf91eIH/amxz/2xvef9sb3n/amxz/3Bzff9qbHP/
    +bG95/2BjbP9sbnX/cHJ5/2xudf9ucHf/cHJ5/2ptd/9qbHP/am13/2ptd/9ucHf/bnB3/3N1fP9wc33/
    +cHN9/4GDiv9ucHf/c3Z//25xe/9vcXX/b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/
    +d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/
    +bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/amxz/2ptd/9sb3n/bnF7/25wd/91d33/bnB3/25xe/9wc33/
    +bnB3/3Bzff9zdn//d3qD/2xvef95fIb/dXd9/25xe/9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/97fYP/
    +dXiB/3l8hv93eoP/eXyG/3N2f/9wcnn/dXiB/3l7gf9wc33/bnB3/3R2fv93eYH/c3V+/3R2fv9vcnn/
    +cHN9/2ptd/91eIH/d3qD/3V4gf9wcnn/b3J8/29yfP9wcnn/cHJ5/21vc/9zdXz/b3F1/2xvef9tb3n/
    +cHN7/3J0ff9wc3z/Z2p0/29xef9zdn//bnF7/3d4ff9zdn//cHJ5/3Z4fv9xc3f/am10/2xvef9ucHf/
    +a254/21wev9wcnb/dXd9/25xev9vcnz/dnh//3Fzev9zdX3/Z2p0/25xe/9sb3n/dnh+/2hrdP9ucHf/
    +bXB5/25xe/9sb3n/cHN9/3N2f/94e4X/c3Z//29xdf91d33/c3V8/2xudf9qbXf/bG95/2Zpc/9maXP/
    +bG51/25wd/9wcnn/dXd9/2psc/9ucHf/bG95/3V3ff9maXP/f4GH/3V4gf9wcnn/cHN9/3Bzff93eX//
    +c3Z//3V4gf97fof/eXuB/3t9g/97fYP/d3qD/3l8hv9zdn//cHN9/3N1fP9zdXz/bnF7/25xe/9ucXv/
    +dnh8/25wd/9wcnn/bG95/3N1fP9sbnX/Z2p0/3N1fP9kZ3H/Z2p0/2psc/9kZ3H/am13/2xvef9sbnX/
    +bnF7/3Bzff9sbnX/Z2p0/2ptd/9ucXv/c3V8/25wd/9qbXf/ZGdx/3N1fP9nanT/bG95/25xe/9wc33/
    +bG95/25xe/9qbXf/bnF7/2ptd/9ucHf/b3F1/3d5f/9maG7/b3F1/2xudf9nanT/bnB3/2xvef9/gYf/
    +bG95/25xe/93eoP/cHJ5/3t+h/9wc33/cHN9/25wd/91eIH/dXd9/3N2f/9wc33/cHJ5/3V4gf9zdn//
    +d3l//3V3ff9vcXX/bG51/3V3ff9zdXz/bG51/2psc/9wc33/foGK/3N1fP93eoP/c3Z//25wd/91d33/
    +bnB3/25wd/9kZ3H/bnB3/3N2f/9sb3n/bnB3/3Byef9ucHf/bG95/25wd/9sb3n/bnB3/25wd/9sb3n/
    +cHN9/2xvef9/gYf/cHJ5/3Byef9ucHf/bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/
    +c3Z//3+Bh/9zdn//d3qD/31+gf9zdn//c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX//
    +c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/am13/25wd/9wcnn/bG51/25xe/9qbXf/bnF7/2xudf9qbXf/
    +amxz/2Zpc/9sb3n/am13/25xe/9maXP/bG95/2xudf9iZW7/bG51/2dqdP9sb3n/cHJ5/3d5f/93eX//
    +am13/2ptd/9qbXf/am13/25xe/9sbnX/Z2p0/25xe/9wc33/cHN9/25vdf9qbHX/bG51/2ptdv9rbnj/
    +Z2pz/2dqdP9kZ3H/am13/3N1fP9sb3n/Zmlz/2psc/9maXP/am13/2Zpc/9qbHP/am13/2psc/9sbnX/
    +Z2p0/21vdv9tcHr/bG95/15ha/9nanH/a210/2ttdP9wcnn/dHZ9/2ptd/9sb3n/aGty/2dqdP9oa3T/
    +amxz/2ptd/9wcnn/bW9z/3Z4fP9qbXf/bnB3/3Z4fP9sbnX/am13/2Rncf9qbXf/am13/3d5f/9nanH/
    +bG51/2xudf9ucHf/bG95/25wd/9ucHf/dXiB/25xe/9sbnX/dXd9/25xe/9tb3P/cHJ5/25wd/9nanH/
    +amxz/29xdf9ucHf/cHJ5/3N1fP9qbXf/am13/2ptd/9sb3n/YmVu/36Ahv9sb3n/Z2p0/2dqdP9qbXf/
    +cHN9/2ptd/9sb3n/dXd9/3V3ff9wcnn/c3V8/3Byef9ucXv/bG95/2ptd/9ucHf/bG95/25xe/9sb3n/
    +bG95/3V3ff9ucHf/bG95/25wd/93eX//bnB3/25wd/97fYP/amxz/25wd/9ucHf/bG51/25wd/9sb3n/
    +bW9z/2xvef9ucXv/Z2p0/2Jlbv9nanH/am13/3Bzff9qbXf/am13/2Rncf9wc33/amxz/2xudf9ucHf/
    +c3V8/2xvef9ucXv/am13/3Bzff9nanT/bG51/21vc/92eHz/Zmhu/2xudf9tb3P/bG51/29xdf9zdXz/
    +f4KM/25xe/9nanT/d3qD/2xvef93eX//cHJ5/2xvef9ucHf/dXiB/3h5ff9zdn//c3Z//3Byef9zdn//
    +dXiB/3t9g/95fIb/cHJ5/3Bzff97fYP/fn+D/3Z4fP9wc33/e32D/3t+h/9wc33/dXiB/3Bzff9ucXv/
    +dXiB/25wd/9wc33/Z2p0/25wd/9wc33/bnB3/2xvef9sb3n/bnB3/2ptd/9qbXf/bnF7/25wd/9sbnX/
    +bG51/3N1fP9wcnn/f4GH/3Byef9wcnn/bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/
    +Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/
    +c3V8/25xe/9zdXz/bG51/2xvef9sbnX/cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/
    +bnB3/2ptd/9qbXf/c3V8/25xe/9ucXv/am13/2xvef9ucHf/ZGZs/25wd/9sbnX/cHJ5/3V3ff97fYP/
    +eHl9/25wd/9ucHf/bnB3/3Byef9wc33/bW9z/2psc/9zdXz/dXd9/3N1fP9ydHr/Zmlz/2ptd/9oa3X/
    +b3J8/2xvef9ucHf/bnB3/3V3ff93eX//dXd9/25wd/9ucHf/bnF7/3N2f/9ucXv/bnF7/3N2f/9ucHf/
    +bG95/2xvef9vcXX/dXd9/3Byef9kZmz/bW9z/25wd/9ucXv/d3l//3d6g/9wc33/dXiB/3N1fP9wcnn/
    +bG95/3Byef9sbnX/cHJ5/25wd/9zdn//bnB3/25xe/95e4H/bG95/25wd/9qbXf/b3F1/29xdf94eX3/
    +bnB3/25wd/9ucHf/b3F1/3Byef9sb3n/cHJ5/3d5f/9zdXz/bG51/3N1fP9ucXv/bG51/3N1fP9sbnX/
    +Z2p0/2dqdP9sb3n/bnB3/25xe/9wc33/amxz/29xdf9wcnn/c3V8/2Jlbv9/gYf/bnB3/21vc/9sbnX/
    +bG95/3d5f/9wc33/dXiB/3l7gf93eX//c3Z//3V4gf9ucXv/bnF7/25wd/9maXP/bnB3/25xe/9ucXv/
    +cHJ5/2xvef91d33/b3F1/2xudf9ucHf/dnh8/25wd/9sbnX/dXiB/2psc/9sb3n/bG51/2dqdP9qbXf/
    +am13/2psc/9sb3n/bnF7/2ptd/9qbXf/bnF7/25xe/91d33/am13/2ptd/9kZ3H/c3V8/2ptd/9qbHP/
    +am13/25xe/9qbXf/am13/2psc/9sb3n/ZGdx/2xudf9nanT/cHN9/2Rncf9nanT/bG51/2dqdP9qbXf/
    +bnF7/36Ahv9qbXf/Z2p0/3N2f/9sbnX/dXd9/2xvef9qbXf/bW9z/3d5f/93eX//dXd9/3Byef9ucHf/
    +cHN9/3N2f/93eX//dXd9/2xvef9qbXf/dXd9/3V3ff9sb3n/b3F1/3Z4fP93eX//bnB3/3N2f/9ucXv/
    +bnB3/3Bzff9sb3n/bnF7/2Zpc/9sb3n/cHN9/25wd/9wc33/bnB3/2xudf9ucHf/bnB3/3V3ff9wcnn/
    +bW9z/25wd/9zdXz/c3V8/3+Bh/91d33/cHJ5/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/
    +bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/
    +Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/95e4H/
    +c3V8/3Bzff9wc33/Z2p0/3Bzff9zdXz/cHJ5/2xudf9wcnn/am13/2Jlbv9qbXf/Z2p0/2xvef9wc33/
    +c3Z//3N1fP9sbnX/bG95/21vc/9ucXv/bnF7/2dqdP9kZ3H/bnF7/3Bzff9ucXv/cnR7/2Rncf9qbHP/
    +am13/3Bzff9sb3n/bnB3/2psc/9zdXz/dXd9/3N1fP9qbXf/bG51/25wd/92eHz/cHJ5/3Byef9zdXz/
    +b3F1/25wd/9nanT/bW9z/25wd/9sb3n/ZGdx/2ptd/9qbXf/am13/25xe/93eX//cHJ5/3N1fP9wcnn/
    +bW9z/21vc/9ucHf/bG51/2Zpc/9nanH/bG95/2dqcf9maXP/bnF7/2psc/9maXP/am13/2xudf9sbnX/
    +c3V8/2psc/9nanT/a253/2xudf9wc33/a254/3Byef91eID/bG95/2xvef91d33/cHJ5/2ptd/9ucXv/
    +bG95/2hrdf9qbXf/bG51/2xudf9qbXf/Z2p0/2Rncf9nanH/a254/2xvef9gY2z/gIKG/2xudf9tb3P/
    +bG51/29xdf91d33/cHJ5/3V3ff91d33/c3Z//3Bzff91d33/cHN9/3Bzff9wcnn/am13/25wd/9zdn//
    +cHN9/3V4gf93eoP/d3l//2ptd/9ucHf/bnB3/3Z4fP9qbHP/bW9z/3Z4fP9sbnX/bnB3/3Byef9qbHP/
    +bnB3/2ptd/9sbnX/bnB3/3N1fP9ucHf/bG51/3N1fP9wcnn/dnh8/3Byef9ucHf/bG51/3N1fP9ucHf/
    +bnB3/25xe/9zdn//c3Z//3Bzff9wc33/d3qD/25xe/91eIH/cHN9/3l8hv9zdXz/dXd9/3l7gf92eHz/
    +eXuB/3t9g/+FiJH/d3qD/3Bzff9/gYf/dXiB/3t+h/91eIH/d3qD/3V4gf9+gYr/e32D/3d6g/9zdn//
    +c3V8/3N2f/9zdn//dnh8/3V4gf9sb3n/bG95/3Z4fP91d33/bG51/21vc/9wcnn/d3l//25xe/91d33/
    +cHJ5/25wd/9ucXv/bnB3/3Byef9nanH/cHN9/3V4gf9wcnn/bnF7/25xe/9ucHf/cHJ5/25xe/91eIH/
    +cHN9/3Byef9ucXv/c3Z//3N2f/9+gIb/dnh8/3Bzff9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/
    +eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/
    +dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/
    +c3V8/2Zobv9sb3n/bG51/2Zpc/9qbXf/am13/2ptd/9nanT/am13/2xvef9kZ3H/bG95/2dqdP9ucXv/
    +bnF7/3V3ff94eX3/bG95/3N2f/9sb3n/cHN9/3Bzff9ucHf/Z2p0/3V3ff91d33/dXd9/3h5ff9sbnX/
    +bnB3/2xvef91d33/c3Z//2xvef9qbXf/c3Z//3l7gf91eIH/bnB3/3Byef9wc33/d3l//3Byef9wcnn/
    +cHJ5/21vc/9sbnX/amxz/2xudf9sbnX/bG51/2Zobv9wcnn/bG51/25xe/9ucXv/c3V8/3J0e/9sb3n/
    +bnB3/2xudf9ucHT/bG51/2Zpc/9vcXj/bG51/21vdv9tb3b/bW93/3R2ff9rbnf/aGt1/2dqdP9sbnX/
    +am13/3Fzev9qbHP/a253/2xveP9qbHP/bG95/2xveP9wcnj/dHZ7/21vdf9ydXz/dXd9/3J0ff9sb3n/
    +b3J8/3N1fP9vcXj/b3F4/21vc/9qbXf/bG95/3Byef9ucHf/b3F1/29xeP9zdXz/Z2px/4GDiv9sb3n/
    +bnF7/3Byef9wcnn/dXiB/3N2f/93eoP/e32D/3V4gf9wc33/c3Z//3V3ff9ucHf/b3F1/2psc/9ucHf/
    +bnF7/25wd/9zdn//c3V8/3Z4fP9qbHP/bG51/21vc/92eHz/bG51/29xdf92eHz/amxz/2xudf9wc33/
    +Zmlz/3Byef9qbXf/bnB3/25wd/92eHz/b3F1/25wd/9zdXz/c3V8/3V3ff9wc33/am13/2dqcf9wcnn/
    +bW9z/29xdf9sbnX/cHJ5/2xvef9wcnn/bG51/2xvef9maXP/cHJ5/25wd/94eX3/Zmhu/2xudf9sb3n/
    +Z2p0/2ptd/9sb3n/foCG/25xe/9sbnX/eXuB/2xvef93eX//bG51/25wd/9tb3P/dXd9/3N1fP91d33/
    +bG51/2psc/9zdXz/c3V8/3N1fP9sb3n/amxz/2ptd/92eHz/c3V8/29xdf9ucHf/cHN9/3d6g/9ucXv/
    +d3l//3Bzff9zdXz/cHN9/3Byef9wc33/am13/3Bzff95e4H/dXd9/3V4gf9wc33/cHN9/3V3ff91eIH/
    +eXuB/3N1fP9zdXz/cHN9/3d6g/95e4H/g4WM/3l8hv91eIH/d3qD/3Bzff9zdn//c3V8/3N2f/91eIH/
    +bnB3/3d5f/9sb3n/bnB3/25wd/93eX//bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/
    +dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/
    +bnF7/3V4gf9ucHf/c3Z//3Bzff9qbXf/c3V8/3Bzff91eIH/bG95/2xvef9zdn//bG95/2xvef9qbXf/
    +cHN9/3Byef91eIH/d3l//2xvef9zdn//bnB3/3N2f/9wc33/cHJ5/2ptd/9zdXz/cHJ5/3V3ff92eHz/
    +Z2p0/2ptd/9qbXf/cHN9/2ptd/9sbnX/amxz/3Byef91d33/c3V8/2dqdP9tb3P/bnF7/3V4gf9wc33/
    +cHN9/3d6g/9zdXz/bnF7/25xe/9xc3r/dXiA/3N1fP9tcHr/c3Z//3Z4fv94e4T/enyC/31/hv94eoD/
    +dHeA/3Bzff9ucXv/cHN6/29xef9tcHn/cnR7/25wd/9vcXX/aWx1/2ttdv9wcnn/b3F3/21vdv9sbnb/
    +bW92/21wdv9xc3n/bG50/21vdP9wcnj/bW91/25xef9xdHz/cXR9/3Fzev9vcXj/b3F4/3Z4gP9wc3v/
    +bG95/29yfP9ydHz/cXN7/21wev9ucHf/bnF7/3Byef9wc33/bnB3/25wd/9xc3r/cHJ5/2Zobv+Agob/
    +bG51/2xudf9sbnX/bG51/3N1fP9wcnn/eHl9/3V3ff91d33/c3V8/3Bzff9zdXz/amxz/2psc/9nanT/
    +Z2px/2xudf9sbnX/cHN9/2xudf9wc33/Z2p0/2psc/9sbnX/dXd9/2ptd/9qbHP/c3V8/2ptd/9qbXf/
    +cHN9/2dqdP9ucXv/bnB3/3N1fP9ucHf/dXd9/25wd/9sb3n/c3Z//3N2f/93eX//dXiB/25xe/9sb3n/
    +c3Z//25wd/9wcnn/c3V8/3N2f/9ucXv/c3Z//2xvef9zdXz/Z2px/3Byef9sbnX/cHN9/2Rncf9qbHP/
    +bnF7/2dqcf9qbXf/am13/3V4gf9maXP/ZGdx/3N1fP9nanT/cHJ5/2psc/9nanT/Z2px/3V3ff9zdXz/
    +bnF7/2ptd/9qbXf/cHN9/3N1fP9zdXz/c3V8/25wd/9ucHf/d3qD/3N2f/9ucHf/bG95/3Bzff95e4H/
    +bG95/3V3ff9sb3n/bnB3/25xe/9sb3n/bnB3/2dqcf9vcXX/c3V8/2ptd/9ucHf/bG51/2ptd/9nanT/
    +bG51/3N1fP9sbnX/bW9z/2xudf9zdXz/dXd9/31+gf9zdXz/bG95/2xvef9sbnX/bG51/2ptd/9ucHf/
    +c3V8/2xvef91d33/bnB3/3Byef9sb3n/dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/
    +bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/
    +c3V8/25wd/91d33/am13/3Bzff9sbnX/amxz/25wd/9sb3n/bnF7/2ptd/9qbXf/dXd9/2xudf9sbnX/
    +Zmlz/2xvef9sb3n/dXd9/3N1fP9qbXf/bnF7/21vc/9zdXz/cHJ5/25xe/9sb3n/c3Z//3Bzff93eX//
    +eHqA/2hrdf9ucHf/a254/3N2f/9ucHf/bnB3/25wd/9wcnn/eXuB/3V3ff9sbnX/bG51/21vdv91d3z/
    +am13/2psc/9ucXv/amxz/2dqcf9nanT/Z2pz/2dqc/9maHL/YmRt/2Zobv9pbHb/bG53/25wef9wcnr/
    +cHJ5/2tueP9tb3f/bG51/3Fzev9sb3f/bG95/21wev9vcnr/bG53/2xudf9rbnX/b3J6/25wef9ucXn/
    +am13/2tueP9ydHv/cHJ6/25wd/9ucXn/dHZ9/29xdv9wcnr/dHZ9/3BzeP9ucHf/bnB4/29xef93eYD/
    +bnF2/25wd/9xc3v/cXN4/3N1e/9xc3r/cXN6/3N2f/9wc33/d3qD/3Byef9wcnn/cXR9/3Bzff9nanT/
    +f4KM/3Bzff9ucHf/b3F1/21vc/9zdXz/bnB3/3V3ff93eX//cHN9/25xe/9wc33/dXd9/29xdf9ucHf/
    +bnB3/25wd/9vcXX/cHN9/3N2f/9ucXv/dXiB/2xvef9ucXv/bnF7/3l7gf91d33/d3l//35/g/94eX3/
    +eXuB/36Ahv96e3//f4GH/3l8hv9+gYr/eXyG/4CChv97fYP/dXd9/3l8hv99foH/fn+D/35/g/93eX//
    +cHN9/3t9g/9wc33/c3V8/3Byef9wc33/b3F1/3Z4fP9qbXf/bG95/2Jlbv9qbXf/am13/2ptd/9gY2z/
    +Zmlz/2xvef9kZ3H/Zmlz/2xvef93eoP/am13/2Rncf9wc33/ZGdx/2ptd/9maG7/Z2px/2Zobv9zdXz/
    +d3qD/3Bzff9sb3n/amxz/3Byef9zdXz/dnh8/3N1fP9sbnX/bG51/3h5ff9wcnn/bnB3/25wd/9zdXz/
    +d3l//25wd/91d33/bnB3/21vc/9wcnn/bnB3/2xvef9maXP/bnB3/3Byef9sbnX/bnB3/25wd/9wcnn/
    +amxz/25wd/92eHz/bnB3/29xdf9wcnn/cHJ5/3Z4fP9+gIb/c3V8/3Byef9sb3n/bG51/2ptd/9maXP/
    +am13/2xvef9ucXv/cHJ5/2dqcf9nanT/Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/
    +Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/
    +Zmhu/2Zpc/9kZ3H/cHJ5/2Zpc/9qbXf/am13/2Rncf9maXP/Z2p0/2xvef9maXP/bG51/3Bzff9maXP/
    +bW9z/2ptd/9sb3n/am13/3Bzff9ucXv/amxz/25xe/9sbnX/cHJ5/2xvef9qbXf/ZGdx/2ptd/9qbXf/
    +c3V8/3F0e/9laHH/bG51/2dqc/9tcHr/amxz/2ptd/9nanT/cHJ5/3l7gf91d33/amxz/2xudf9vcXj/
    +d3h8/3Byef9vcXX/dXd9/21vc/9sbnX/bG95/29yfP9wc3v/bW92/2ptd/9sb3j/c3V7/3V4f/90dnr/
    +c3V8/3Byev9xc3v/c3Z9/29xeP91d4D/bnB4/21wev91d37/dnh//3Fze/9tb3b/bW93/3J0e/9zdn3/
    +cnV+/25xe/9vcnn/cnV//25xe/9wcnr/cHN8/3Z4gf9wcnn/cHJ6/3d6hP9zdXz/cXN9/3Bzff9zdXz/
    +fYCJ/25wd/9sb3n/bG95/29xeP90dnv/b3J7/25wd/9ucHf/bW92/3N1fP9ucHf/bnB3/29yef9wcnn/
    +Z2px/35/g/9ucHf/bG51/21vc/9qbXf/bnF7/2xvef93eX//d3l//3N1fP9ucXv/bnF7/25xe/9nanT/
    +amxz/2Zpc/9nanT/ZGdx/2dqdP9nanT/ZGdx/3Byef9kZ3H/bG51/2xudf9sb3n/Zmlz/2psc/9wc33/
    +amxz/2xudf9zdXz/amxz/2xvef9qbXf/bnF7/2ptd/9sb3n/am13/2xudf9ucXv/cHN9/3Bzff9wc33/
    +am13/2ptd/91d33/bnB3/2xudf9sbnX/bnB3/2xudf92eHz/bG51/25wd/9kZ3H/bG95/3N1fP9sb3n/
    +ZGZs/2ptd/9ucXv/bG51/2ptd/9zdXz/fn+D/2xvef9sb3n/foCG/25xe/91eIH/bnF7/25wd/9vcXX/
    +dXd9/3d5f/9wc33/c3Z//25wd/9zdn//bnF7/3V3ff9ucXv/bG51/29xdf94eX3/c3Z//25wd/9ucXv/
    +c3Z//3l7gf9wcnn/d3l//25xe/9wcnn/cHN9/3N2f/9zdXz/am13/2xvef91d33/bG51/3N1fP9sb3n/
    +bG51/2dqcf9sb3n/dXd9/2psc/9qbXf/bG95/2xvef9wcnn/d3qD/3V3ff91d33/am13/3Byef9wcnn/
    +Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/
    +am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/
    +cHJ5/29xdf9wc33/bnF7/3l8hv9sb3n/cHN9/3N2f/9sb3n/bG95/3N2f/9wc33/bG95/3Bzff93eX//
    +am13/25wd/9vcXX/cHJ5/25wd/9zdXz/c3V8/2xudf9sb3n/bnB3/2xvef9sbnX/amxz/1xfaP9nanH/
    +Z2px/3Bzff9ucXv/a253/2xud/9tb3j/cXR7/21vc/9ucHf/amxz/25xe/93eX//c3V8/2hqdP9rbnf/
    +bXB5/3R2ev9sbnX/bW9z/25wd/9qbHP/cHJ5/29xef9zdX3/cHJ7/21weP9sb3n/bnB3/3N2f/94eoD/
    +b3J7/3N2f/9zdn//eHuF/3l7gf92eH7/fX+F/3R2ff91eH7/enyC/3p8gv94eoH/d3h9/31/hv97fYP/
    +e32D/3x9gf94eoD/dnh8/31/hf94eX7/d3l//3d5f/97fYP/cHN9/3V3ff97fof/cHN9/2xvef9wc33/
    +cHN9/3t+h/9zdXz/c3Z//3d6g/9wc33/d3mA/3J1f/9ucHb/bXB5/21vdv9ucHf/bnB3/25wd/9vcnv/
    +cHJ5/2dqcf9+gIb/bnF7/3N1fP9vcXX/bnF7/3d6g/9wc33/e36H/3l8hv9zdn//cHN9/25xe/91d33/
    +bnB3/25xe/9sb3n/bnF7/2xvef9ucXv/cHN9/3Byef93eX//bG51/2xudf9sbnX/bG95/2dqdP9qbHP/
    +bnF7/2psc/9nanH/am13/2Zpc/9nanT/Z2px/2ptd/9sbnX/bnF7/2xudf9tb3P/cHJ5/3V3ff91d33/
    +dXd9/2xvef9sb3n/dXiB/25wd/9wc33/c3V8/3V4gf9zdn//d3qD/3N2f/95fIb/cHN9/3l8hv97fYP/
    +eXuB/2dqdP9zdn//eXyG/3Bzff91eIH/eXuB/3+Bh/9ucXv/bnB3/35/g/9tb3P/dXd9/3Byef9wcnn/
    +b3F1/3d5f/93eX//bnF7/3Bzff9sb3n/cHJ5/25xe/93eX//c3Z//3Byef9ucHf/dXd9/3N1fP9sb3n/
    +bG95/3N2f/93eX//bnB3/3V3ff9vcXX/bnF7/3Bzff9ucXv/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/
    +bG95/2xvef9qbHP/bG95/3V3ff9vcXX/bG51/2xvef9qbXf/cHJ5/3l7gf91d33/bnF7/25wd/9ucHf/
    +cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn//bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/
    +am13/2xudf9ucHf/bG51/3V3ff99foH/Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/
    +am13/25xe/9ucHf/c3V8/3V3ff95e4H/bnB3/3V3ff92eHz/amxz/2xudf92eHz/bnF7/2xudf9ucHf/
    +c3V8/2dqdP9qbXf/bG51/3N1fP9ucHf/c3V8/3V3ff9ucHf/cHJ5/3Byef9zdXz/bW9z/21vc/9kZmz/
    +bG51/2xvef91d33/bG50/3Byef9vcXb/cXN5/3Fzef9qbXf/bG95/2Zpc/9sb3n/d3l//3N1fP9rbXT/
    +bXB4/29yev9zdXz/bnB3/25wd/9zdn//am13/25xe/9ucHr/cHN7/2xudv9oa3X/a254/2xudf9wc33/
    +dXd9/2xudf9ucHf/bnB3/3Byef91d33/bnB3/3d5f/9ucHf/bG95/3N2f/92eHz/cHJ5/25wd/9wcnn/
    +cHJ5/3Byef9wcnn/bnB3/25wd/9sb3n/bnB3/25wd/91eIH/c3Z//3Byef9ucHf/d3l//29xdf9nanH/
    +bG51/21vc/93eoP/bG51/2ptd/9ucXv/amxz/3N1fP9qbXb/aWt0/29xeP9sb3j/bG51/2xvef9ucHf/
    +bG95/2xvef9nanH/fn+D/25wd/9ucHf/am13/2xudf91d33/bG51/3l7gf91eIH/cHN9/3N2f/9wc33/
    +d3l//2xvef9wc33/bnB3/2xvef9sb3n/bnF7/3Bzff9ucXv/d3l//2ptd/9ucHf/bG95/3Byef9vcXX/
    +b3F1/3N1fP9vcXX/b3F1/3Bzff9nanT/bG51/2ptd/9ucXv/bG51/2xvef9sb3n/bG51/2xudf9sb3n/
    +dXd9/3Bzff9qbXf/am13/3Byef9qbXf/am13/2Zpc/9ucXv/bG95/2xvef9nanT/bnF7/2Rncf9sb3n/
    +bnF7/25xe/9gY2z/Z2p0/2xvef9qbXf/am13/3Bzff93eoP/am13/2ptd/97fYP/bG51/2xvef9ucXv/
    +bG95/2psc/91d33/dXd9/2ptd/9zdXz/bnB3/3Bzff9ucHf/dnh8/25xe/9wcnn/cHJ5/3d6g/9ucXv/
    +cHN9/2xvef9wc33/AA0BAAADAAAAAQEAAAABAQADAAAAAQEAAAABAgADAAAABAAEAKoBAwADAAAAAQAB
    +AAABBgADAAAAAQACAAABEQAEAAAAAgAEALIBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQCA
    +AAABFwAEAAAAAgAEALoBHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAEAMIAAAAAAAgACAAI
    +AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
    +													
    +												
    +											
    +										
    +										
    +									
    +									scrollViewTexturedBackgroundColor
    +								
    +								
    +								0
    +								10
    +								
    +									1
    +									30
    +								
    +								
    +									Helvetica
    +									30
    +									16
    +								
    +							
    +							
    +								
    +								289
    +								{{224, 14}, {25, 25}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Call state
    +									
    +									
    +								
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								-2147483359
    +								{{216, 6}, {41, 41}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Remove
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								8
    +								8
    +								8
    +								8
    +								
    +								
    +									NSImage
    +									call_state_delete_over.png
    +								
    +								
    +									NSImage
    +									call_state_delete_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483359
    +								{{216, 6}, {41, 41}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Pause
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								8
    +								8
    +								8
    +								8
    +								
    +								
    +									NSImage
    +									call_state_play_over.png
    +								
    +								
    +									NSImage
    +									call_state_pause_default.png
    +								
    +								
    +									NSImage
    +									call_state_play_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								289
    +								{{262, 12}, {50, 29}}
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Call state
    +									
    +								
    +								IBCocoaTouchFramework
    +								12:34
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +									1
    +									15
    +								
    +								
    +									Helvetica
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								290
    +								{{0, 5}, {200, 40}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Expand
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +						
    +						{320, 63}
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 300}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				{320, 460}
    +				_NS:9
    +				
    +				NO
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						avatarImage
    +						
    +						
    +					
    +					34
    +				
    +				
    +					
    +						addressLabel
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						stateImage
    +						
    +						
    +					
    +					33
    +				
    +				
    +					
    +						stateLabel
    +						
    +						
    +					
    +					32
    +				
    +				
    +					
    +						avatarView
    +						
    +						
    +					
    +					41
    +				
    +				
    +					
    +						headerView
    +						
    +						
    +					
    +					42
    +				
    +				
    +					
    +						backgroundView
    +						
    +						
    +					
    +					46
    +				
    +				
    +					
    +						pauseButton
    +						
    +						
    +					
    +					48
    +				
    +				
    +					
    +						removeButton
    +						
    +						
    +					
    +					50
    +				
    +				
    +					
    +						headerBackgroundImage
    +						
    +						
    +					
    +					54
    +				
    +				
    +					
    +						selectedBackgroundView
    +						
    +						
    +					
    +					58
    +				
    +				
    +					
    +						headerBackgroundHighlightImage
    +						
    +						
    +					
    +					59
    +				
    +				
    +					
    +						doHeaderClick:
    +						
    +						
    +						7
    +					
    +					39
    +				
    +				
    +					
    +						doRemoveClick:
    +						
    +						
    +						7
    +					
    +					51
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						16
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						31
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						avatarView
    +					
    +					
    +						29
    +						
    +						
    +						avatarImage
    +					
    +					
    +						36
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						headerView
    +					
    +					
    +						17
    +						
    +						
    +						addressLabel
    +					
    +					
    +						18
    +						
    +						
    +						stateImage
    +					
    +					
    +						19
    +						
    +						
    +						stateLabel
    +					
    +					
    +						30
    +						
    +						
    +						avatarShadowImage
    +					
    +					
    +						44
    +						
    +						
    +					
    +					
    +						45
    +						
    +						
    +						background
    +					
    +					
    +						47
    +						
    +						
    +						pauseButton
    +					
    +					
    +						49
    +						
    +						
    +						removeButton
    +					
    +					
    +						38
    +						
    +						
    +						toggleButton
    +					
    +					
    +						52
    +						
    +						
    +						headerBackgroundImage
    +					
    +					
    +						56
    +						
    +						
    +						headerBackgroundHighlightImage
    +					
    +				
    +			
    +			
    +				UICallCell
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			75
    +		
    +		
    +			
    +				
    +					UICallCell
    +					UITableViewCell
    +					
    +						id
    +						id
    +					
    +					
    +						
    +							doHeaderClick:
    +							id
    +						
    +						
    +							doRemoveClick:
    +							id
    +						
    +					
    +					
    +						UILabel
    +						UIImageView
    +						UIView
    +						UIImageView
    +						UIImageView
    +						UIView
    +						UIPauseButton
    +						UIButton
    +						UIImageView
    +						UILabel
    +					
    +					
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +						
    +							avatarView
    +							UIView
    +						
    +						
    +							headerBackgroundHighlightImage
    +							UIImageView
    +						
    +						
    +							headerBackgroundImage
    +							UIImageView
    +						
    +						
    +							headerView
    +							UIView
    +						
    +						
    +							pauseButton
    +							UIPauseButton
    +						
    +						
    +							removeButton
    +							UIButton
    +						
    +						
    +							stateImage
    +							UIImageView
    +						
    +						
    +							stateLabel
    +							UILabel
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICallCell.h
    +					
    +				
    +				
    +					UIPauseButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIPauseButton.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{640, 523}
    +			{320, 339}
    +			{43, 43}
    +			{43, 43}
    +			{43, 50}
    +			{43, 46}
    +			{43, 46}
    +			{640, 125}
    +		
    +		933
    +	
    +
    diff --git a/Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib b/Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib
    new file mode 100644
    index 000000000..1cc468c15
    --- /dev/null
    +++ b/Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib
    @@ -0,0 +1,280 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						292
    +						{320, 68}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Conference
    +							
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							header_conference.png
    +						
    +					
    +					
    +						
    +						292
    +						{{224, 14}, {25, 25}}
    +						
    +						_NS:9
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						{{216, 6}, {41, 41}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Pause
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						NO
    +						8
    +						8
    +						8
    +						8
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							call_state_play_over.png
    +						
    +						
    +							NSImage
    +							call_state_pause_default.png
    +						
    +						
    +							NSImage
    +							call_state_play_default.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +				
    +				{320, 68}
    +				
    +				_NS:9
    +				
    +					3
    +					MQA
    +					
    +						2
    +					
    +				
    +				NO
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					5
    +				
    +				
    +					
    +						stateImage
    +						
    +						
    +					
    +					9
    +				
    +				
    +					
    +						pauseButton
    +						
    +						
    +					
    +					14
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						7
    +						
    +						
    +						backgroundImage
    +					
    +					
    +						8
    +						
    +						
    +						stateImage
    +					
    +					
    +						13
    +						
    +						
    +						pauseButton
    +					
    +				
    +			
    +			
    +				UIConferenceHeader
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			14
    +		
    +		
    +			
    +				
    +					UIConferenceHeader
    +					UIViewController
    +					
    +						UIPauseButton
    +						UIImageView
    +					
    +					
    +						
    +							pauseButton
    +							UIPauseButton
    +						
    +						
    +							stateImage
    +							UIImageView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIConferenceHeader.h
    +					
    +				
    +				
    +					UIPauseButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIPauseButton.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{43, 50}
    +			{43, 46}
    +			{43, 46}
    +			{640, 135}
    +		
    +		933
    +	
    +
    diff --git a/Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib b/Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib
    new file mode 100644
    index 000000000..94b242680
    --- /dev/null
    +++ b/Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib
    @@ -0,0 +1,216 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBProxyObject
    +			IBUIView
    +			IBUIButton
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						301
    +						{{23, 25}, {275, 50}}
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						NO
    +						
    +							Remove
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						Remove Contact
    +						
    +							3
    +							MQA
    +						
    +						
    +							NSImage
    +							button_alert_background_over.png
    +						
    +						
    +							NSImage
    +							button_alert_background_default.png
    +						
    +						
    +							2
    +							26
    +						
    +						
    +							Helvetica-Bold
    +							26
    +							16
    +						
    +					
    +				
    +				{320, 80}
    +				
    +				_NS:9
    +				
    +				YES
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						removeButton
    +						
    +						
    +					
    +					6
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					7
    +				
    +				
    +					
    +						onRemoveClick:
    +						
    +						
    +						7
    +					
    +					10
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +						
    +						
    +					
    +					
    +						5
    +						
    +						
    +						removeButton
    +					
    +				
    +			
    +			
    +				UIContactDetailsFooter
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			10
    +		
    +		
    +			
    +				
    +					UIContactDetailsFooter
    +					UIViewController
    +					
    +						onRemoveClick:
    +						id
    +					
    +					
    +						onRemoveClick:
    +						
    +							onRemoveClick:
    +							id
    +						
    +					
    +					
    +						id
    +						UIButton
    +					
    +					
    +						
    +							contactDetailsDelegate
    +							id
    +						
    +						
    +							removeButton
    +							UIButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIContactDetailsFooter.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{550, 101}
    +			{550, 101}
    +		
    +		933
    +	
    +
    diff --git a/Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib b/Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib
    new file mode 100644
    index 000000000..6a50359fc
    --- /dev/null
    +++ b/Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib
    @@ -0,0 +1,494 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIButton
    +			IBUITableView
    +			IBUIImageView
    +			IBUIView
    +			IBUILabel
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						292
    +						{{-13, -5}, {131, 107}}
    +						
    +						
    +						_NS:9
    +						NO
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							avatar_shadow_small.png
    +						
    +					
    +					
    +						
    +						292
    +						{{20, 6}, {65, 65}}
    +						
    +						
    +						_NS:9
    +						NO
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							avatar_unknown_small.png
    +						
    +					
    +					
    +						
    +						292
    +						{{20, 6}, {65, 65}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Contact's avatar
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						
    +							3
    +							MQA
    +						
    +						
    +							1
    +							MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +						
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{{0, 37}, {199, 43}}
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Contact's name
    +								
    +								IBCocoaTouchFramework
    +								Contact1
    +								
    +									3
    +									MC4zMzMzMzMzMzMzAA
    +								
    +								
    +								0
    +								10
    +								
    +									1
    +									22
    +								
    +								
    +									Helvetica
    +									22
    +									16
    +								
    +							
    +						
    +						{{101, 0}, {219, 80}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								274
    +								{219, 130}
    +								
    +								_NS:9
    +								
    +									10
    +									
    +										549453824
    +										{512, 1}
    +										
    +											
    +												
    +												
    +													
    +														TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA
    +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA
    +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI
    +AAgACAAIAAEAAQABAAE
    +													
    +												
    +											
    +										
    +										
    +									
    +									groupTableViewBackgroundColor
    +								
    +								YES
    +								IBCocoaTouchFramework
    +								YES
    +								1
    +								2
    +								0
    +								YES
    +								44
    +								10
    +								10
    +							
    +						
    +						{{101, 0}, {219, 130}}
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 130}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					5
    +				
    +				
    +					
    +						avatarImage
    +						
    +						
    +					
    +					9
    +				
    +				
    +					
    +						editView
    +						
    +						
    +					
    +					16
    +				
    +				
    +					
    +						normalView
    +						
    +						
    +					
    +					17
    +				
    +				
    +					
    +						tableView
    +						
    +						
    +					
    +					20
    +				
    +				
    +					
    +						addressLabel
    +						
    +						
    +					
    +					21
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					18
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					19
    +				
    +				
    +					
    +						onAvatarClick:
    +						
    +						
    +						7
    +					
    +					23
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						6
    +						
    +						
    +						avatarImage
    +					
    +					
    +						7
    +						
    +						
    +						avatarShadowBackground
    +					
    +					
    +						13
    +						
    +						
    +							
    +						
    +						
    +						editView
    +					
    +					
    +						12
    +						
    +						
    +							
    +						
    +						
    +						normalView
    +					
    +					
    +						8
    +						
    +						
    +						addressLabel
    +					
    +					
    +						15
    +						
    +						
    +					
    +					
    +						22
    +						
    +						
    +						avatarButton
    +					
    +				
    +			
    +			
    +				UIContactDetailsHeader
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			23
    +		
    +		
    +			
    +				
    +					UIContactDetailsHeader
    +					UIViewController
    +					
    +						onAvatarClick:
    +						id
    +					
    +					
    +						onAvatarClick:
    +						
    +							onAvatarClick:
    +							id
    +						
    +					
    +					
    +						UILabel
    +						UIImageView
    +						id
    +						UIView
    +						UIView
    +						UITableView
    +					
    +					
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +						
    +							contactDetailsDelegate
    +							id
    +						
    +						
    +							editView
    +							UIView
    +						
    +						
    +							normalView
    +							UIView
    +						
    +						
    +							tableView
    +							UITableView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIContactDetailsHeader.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{262, 214}
    +			{131, 131}
    +		
    +		933
    +	
    +
    diff --git a/Classes/LinphoneUI/UIMainBar.xib b/Classes/LinphoneUI/fr.lproj/UIMainBar.xib
    similarity index 83%
    rename from Classes/LinphoneUI/UIMainBar.xib
    rename to Classes/LinphoneUI/fr.lproj/UIMainBar.xib
    index 4276bf294..fd25101a8 100644
    --- a/Classes/LinphoneUI/UIMainBar.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIMainBar.xib
    @@ -3,19 +3,19 @@
     	
     		1296
     		11E53
    -		2549
    +		1938
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			933
     		
     		
    -			IBProxyObject
     			IBUIButton
     			IBUIImageView
    -			IBUILabel
     			IBUIView
    +			IBUILabel
    +			IBProxyObject
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -34,7 +34,7 @@
     				IBCocoaTouchFramework
     			
     			
    -				
    +				
     				292
     				
     					
    @@ -60,7 +60,6 @@
     						290
     						{{0, 77}, {320, 2000}}
     						
    -						
     						_NS:9
     						
     							1
    @@ -139,6 +138,10 @@
     								YES
     								7
     								NO
    +								
    +									History missed
    +									
    +								
     								IBCocoaTouchFramework
     								99
     								
    @@ -316,11 +319,16 @@
     								256
     								{{2, 2}, {17, 17}}
     								
    +								
     								_NS:9
     								NO
     								YES
     								7
     								NO
    +								
    +									Chat missed
    +									
    +								
     								IBCocoaTouchFramework
     								99
     								
    @@ -343,8 +351,7 @@
     					
     				
     				{320, 77}
    -				
    -				
    +				
     				_NS:9
     				
     					1
    @@ -646,7 +653,118 @@
     			
     			45
     		
    -		
    +		
    +			
    +				
    +					TPMultiLayoutViewController
    +					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					UIMainBar
    +					TPMultiLayoutViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onChatClick:
    +							id
    +						
    +						
    +							onContactsClick:
    +							id
    +						
    +						
    +							onDialerClick:
    +							id
    +						
    +						
    +							onHistoryClick:
    +							id
    +						
    +						
    +							onSettingsClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +						UIButton
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +					
    +					
    +						
    +							chatButton
    +							UIButton
    +						
    +						
    +							chatNotificationLabel
    +							UILabel
    +						
    +						
    +							chatNotificationView
    +							UIView
    +						
    +						
    +							contactsButton
    +							UIButton
    +						
    +						
    +							dialerButton
    +							UIButton
    +						
    +						
    +							historyButton
    +							UIButton
    +						
    +						
    +							historyNotificationLabel
    +							UILabel
    +						
    +						
    +							historyNotificationView
    +							UIView
    +						
    +						
    +							settingsButton
    +							UIButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIMainBar.h
    +					
    +				
    +			
    +		
     		0
     		IBCocoaTouchFramework
     		
    @@ -673,6 +791,6 @@
     			{128, 154}
     			{128, 154}
     		
    -		1498
    +		933
     	
     
    diff --git a/Classes/LinphoneUI/UIMainBar~ipad.xib b/Classes/LinphoneUI/fr.lproj/UIMainBar~ipad.xib
    similarity index 89%
    rename from Classes/LinphoneUI/UIMainBar~ipad.xib
    rename to Classes/LinphoneUI/fr.lproj/UIMainBar~ipad.xib
    index dd2648b97..74780b34d 100644
    --- a/Classes/LinphoneUI/UIMainBar~ipad.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIMainBar~ipad.xib
    @@ -3,19 +3,19 @@
     	
     		1296
     		11E53
    -		2549
    +		1938
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			933
     		
     		
    -			IBProxyObject
     			IBUIButton
     			IBUIImageView
    -			IBUILabel
     			IBUIView
    +			IBUILabel
    +			IBProxyObject
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -34,7 +34,7 @@
     				IBIPadFramework
     			
     			
    -				
    +				
     				292
     				
     					
    @@ -140,6 +140,10 @@
     								YES
     								7
     								NO
    +								
    +									History missed
    +									
    +								
     								IBIPadFramework
     								99
     								
    @@ -327,6 +331,10 @@
     								YES
     								7
     								NO
    +								
    +									Chat missed
    +									
    +								
     								IBIPadFramework
     								99
     								
    @@ -350,7 +358,6 @@
     					
     				
     				{768, 77}
    -				
     				
     				_NS:9
     				
    @@ -361,7 +368,7 @@
     				IBIPadFramework
     			
     			
    -				
    +				
     				292
     				
     					
    @@ -642,7 +649,6 @@
     					
     				
     				{1024, 86}
    -				
     				
     				_NS:9
     				
    @@ -1078,7 +1084,118 @@
     			
     			62
     		
    -		
    +		
    +			
    +				
    +					TPMultiLayoutViewController
    +					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					UIMainBar
    +					TPMultiLayoutViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onChatClick:
    +							id
    +						
    +						
    +							onContactsClick:
    +							id
    +						
    +						
    +							onDialerClick:
    +							id
    +						
    +						
    +							onHistoryClick:
    +							id
    +						
    +						
    +							onSettingsClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +						UIButton
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +					
    +					
    +						
    +							chatButton
    +							UIButton
    +						
    +						
    +							chatNotificationLabel
    +							UILabel
    +						
    +						
    +							chatNotificationView
    +							UIView
    +						
    +						
    +							contactsButton
    +							UIButton
    +						
    +						
    +							dialerButton
    +							UIButton
    +						
    +						
    +							historyButton
    +							UIButton
    +						
    +						
    +							historyNotificationLabel
    +							UILabel
    +						
    +						
    +							historyNotificationView
    +							UIView
    +						
    +						
    +							settingsButton
    +							UIButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIMainBar.h
    +					
    +				
    +			
    +		
     		0
     		IBIPadFramework
     		
    @@ -1117,6 +1234,6 @@
     			{480, 171}
     			{350, 153}
     		
    -		1498
    +		933
     	
     
    diff --git a/Classes/ChatRoomViewController.xib b/Classes/en.lproj/ChatRoomViewController.xib
    similarity index 97%
    rename from Classes/ChatRoomViewController.xib
    rename to Classes/en.lproj/ChatRoomViewController.xib
    index 83160fc92..3b1a431c4 100644
    --- a/Classes/ChatRoomViewController.xib
    +++ b/Classes/en.lproj/ChatRoomViewController.xib
    @@ -72,6 +72,11 @@
     										
     										_NS:9
     										NO
    +										
    +											Contact's avatar
    +											
    +											
    +										
     										IBCocoaTouchFramework
     										
     											NSImage
    @@ -90,6 +95,10 @@
     										YES
     										7
     										NO
    +										
    +											Contact's name
    +											
    +										
     										IBCocoaTouchFramework
     										Contact1
     										
    @@ -156,7 +165,7 @@
     										_NS:9
     										NO
     										
    -											Missed
    +											Send
     										
     										IBCocoaTouchFramework
     										NO
    @@ -216,7 +225,7 @@
     										YES
     										YES
     										
    -											
    +											Enter your message here
     										
     										IBCocoaTouchFramework
     										YES
    @@ -283,7 +292,7 @@
     								_NS:9
     								NO
     								
    -									All
    +									Back
     								
     								IBCocoaTouchFramework
     								0
    @@ -311,7 +320,7 @@
     								_NS:9
     								NO
     								
    -									Missed
    +									Edit
     								
     								IBCocoaTouchFramework
     								0
    @@ -537,8 +546,8 @@
     						
     						
     							
    -							
     							
    +							
     						
     						
     						toolsView
    diff --git a/Classes/ChatViewController.xib b/Classes/en.lproj/ChatViewController.xib
    similarity index 97%
    rename from Classes/ChatViewController.xib
    rename to Classes/en.lproj/ChatViewController.xib
    index 8a0d0d0e9..5a413935c 100644
    --- a/Classes/ChatViewController.xib
    +++ b/Classes/en.lproj/ChatViewController.xib
    @@ -3,21 +3,21 @@
     	
     		1296
     		11E53
    -		2182
    +		2549
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1181
    +			1498
     		
     		
    +			IBProxyObject
     			IBUIButton
     			IBUIImageView
    -			IBProxyObject
     			IBUILabel
    -			IBUITextField
    -			IBUITableViewController
     			IBUITableView
    +			IBUITableViewController
    +			IBUITextField
     			IBUIView
     		
     		
    @@ -69,7 +69,7 @@
     								_NS:9
     								NO
     								
    -									All
    +									New Discussion
     								
     								IBCocoaTouchFramework
     								0
    @@ -107,7 +107,7 @@
     								_NS:9
     								NO
     								
    -									Missed
    +									Edit
     								
     								IBCocoaTouchFramework
     								0
    @@ -150,6 +150,7 @@
     						{{0, 74}, {320, 378}}
     						
     						
    +						
     						_NS:9
     						
     							1
    @@ -183,6 +184,9 @@
     						_NS:9
     						NO
     						YES
    +						
    +							Enter a address
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -387,8 +391,8 @@
     						
     						
     							
    -							
     							
    +							
     						
     						
     						toolsBar
    @@ -415,7 +419,7 @@
     						25
     						
     						
    -						address
    +						addressField
     					
     					
     						26
    @@ -526,6 +530,6 @@
     			{320, 88}
     			{5, 117}
     		
    -		1181
    +		1498
     	
     
    diff --git a/Classes/ContactDetailsLabelViewController.xib b/Classes/en.lproj/ContactDetailsLabelViewController.xib
    similarity index 98%
    rename from Classes/ContactDetailsLabelViewController.xib
    rename to Classes/en.lproj/ContactDetailsLabelViewController.xib
    index 629bad47d..d31c015f8 100644
    --- a/Classes/ContactDetailsLabelViewController.xib
    +++ b/Classes/en.lproj/ContactDetailsLabelViewController.xib
    @@ -3,19 +3,19 @@
     	
     		1296
     		11E53
    -		2182
    +		2549
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1181
    +			1498
     		
     		
    -			IBUITableView
    -			IBUIButton
    -			IBUIView
    -			IBUIImageView
     			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUITableView
    +			IBUIView
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -84,7 +84,7 @@
     								_NS:9
     								NO
     								
    -									Add contact
    +									Back
     								
     								IBCocoaTouchFramework
     								0
    @@ -133,7 +133,6 @@
     						{{0, 59}, {320, 401}}
     						
     						
    -						
     						_NS:9
     						
     							10
    @@ -399,6 +398,6 @@ AAgACAAIAAEAAQABAAE
     			{320, 88}
     			{5, 117}
     		
    -		1181
    +		1498
     	
     
    diff --git a/Classes/ContactDetailsViewController.xib b/Classes/en.lproj/ContactDetailsViewController.xib
    similarity index 98%
    rename from Classes/ContactDetailsViewController.xib
    rename to Classes/en.lproj/ContactDetailsViewController.xib
    index 6bb560020..437f20b94 100644
    --- a/Classes/ContactDetailsViewController.xib
    +++ b/Classes/en.lproj/ContactDetailsViewController.xib
    @@ -3,21 +3,21 @@
     	
     		1296
     		11E53
    -		2182
    +		2549
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1181
    +			1498
     		
     		
    -			IBUIView
    -			IBUIImageView
     			IBProxyObject
    -			IBUIViewController
    -			IBUITableViewController
    -			IBUITableView
     			IBUIButton
    +			IBUIImageView
    +			IBUITableView
    +			IBUITableViewController
    +			IBUIView
    +			IBUIViewController
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -68,7 +68,7 @@
     								_NS:9
     								NO
     								
    -									Add contact
    +									Back
     								
     								IBCocoaTouchFramework
     								0
    @@ -106,7 +106,7 @@
     								_NS:9
     								NO
     								
    -									Add contact
    +									Cancel
     								
     								IBCocoaTouchFramework
     								0
    @@ -134,7 +134,7 @@
     								_NS:9
     								NO
     								
    -									Add contact
    +									Edit
     								
     								IBCocoaTouchFramework
     								0
    @@ -741,9 +741,9 @@ AAgACAAIAAEAAQABAAE
     			{320, 88}
     			{320, 88}
     			{320, 88}
    -			{320, 117}
    +			{320, 88}
     			{5, 117}
     		
    -		1181
    +		1498
     	
     
    diff --git a/Classes/ContactsViewController.xib b/Classes/en.lproj/ContactsViewController.xib
    similarity index 98%
    rename from Classes/ContactsViewController.xib
    rename to Classes/en.lproj/ContactsViewController.xib
    index bc8e932eb..f452a385d 100644
    --- a/Classes/ContactsViewController.xib
    +++ b/Classes/en.lproj/ContactsViewController.xib
    @@ -3,20 +3,20 @@
     	
     		1296
     		11E53
    -		2182
    +		2549
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1181
    +			1498
     		
     		
    -			IBUIImageView
    -			IBUIButton
    -			IBUITableView
    -			IBUIView
    -			IBUITableViewController
     			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUITableView
    +			IBUITableViewController
    +			IBUIView
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -67,7 +67,7 @@
     								_NS:9
     								NO
     								
    -									All
    +									All contacts filter
     								
     								IBCocoaTouchFramework
     								0
    @@ -106,7 +106,7 @@
     								_NS:9
     								NO
     								
    -									Linphone
    +									Linphone contacts filter
     								
     								IBCocoaTouchFramework
     								0
    @@ -163,7 +163,7 @@
     								_NS:9
     								NO
     								
    -									Add contact
    +									Back
     								
     								IBCocoaTouchFramework
     								0
    @@ -569,8 +569,8 @@
     		YES
     		3
     		
    -			{213, 117}
    -			{213, 117}
    +			{160, 88}
    +			{160, 88}
     			{213, 117}
     			{213, 117}
     			{213, 117}
    @@ -579,6 +579,6 @@
     			{213, 117}
     			{5, 117}
     		
    -		1181
    +		1498
     	
     
    diff --git a/Classes/DialerViewController.xib b/Classes/en.lproj/DialerViewController.xib
    similarity index 94%
    rename from Classes/DialerViewController.xib
    rename to Classes/en.lproj/DialerViewController.xib
    index 68299157f..4e797df2a 100644
    --- a/Classes/DialerViewController.xib
    +++ b/Classes/en.lproj/DialerViewController.xib
    @@ -74,6 +74,9 @@
     								
     								NO
     								NO
    +								
    +									Enter a address
    +								
     								IBCocoaTouchFramework
     								0
     								
    @@ -134,6 +137,9 @@
     								
     								NO
     								NO
    +								
    +									1
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -170,6 +176,9 @@
     								
     								NO
     								NO
    +								
    +									2
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -194,6 +203,9 @@
     								
     								NO
     								NO
    +								
    +									3
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -218,6 +230,9 @@
     								
     								NO
     								NO
    +								
    +									4
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -242,6 +257,9 @@
     								
     								NO
     								NO
    +								
    +									5
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -266,6 +284,9 @@
     								
     								NO
     								NO
    +								
    +									6
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -290,6 +311,9 @@
     								
     								NO
     								NO
    +								
    +									7
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -314,6 +338,9 @@
     								
     								NO
     								NO
    +								
    +									8
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -338,6 +365,9 @@
     								
     								NO
     								NO
    +								
    +									9
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -362,6 +392,9 @@
     								
     								NO
     								NO
    +								
    +									Star
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -386,6 +419,9 @@
     								
     								NO
     								NO
    +								
    +									0
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -410,6 +446,9 @@
     								
     								NO
     								NO
    +								
    +									Sharp
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -451,6 +490,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Add to contact
    +								
     								IBCocoaTouchFramework
     								NO
     								0
    @@ -485,6 +527,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Back
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -515,6 +560,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Call
    +								
     								IBCocoaTouchFramework
     								NO
     								0
    @@ -546,6 +594,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Add call
    +								
     								IBCocoaTouchFramework
     								NO
     								0
    @@ -577,6 +628,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Transfer call
    +								
     								IBCocoaTouchFramework
     								NO
     								0
    @@ -605,9 +659,11 @@
     								{{214, 0}, {106, 69}}
     								
     								
    -								
     								_NS:9
     								NO
    +								
    +									Backspace
    +								
     								IBCocoaTouchFramework
     								NO
     								0
    @@ -1407,20 +1463,20 @@
     							UITextField
     							UIButton
     							UICallButton
    -							UIButton
    +							UIDigitButton
     							UIEraseButton
    -							UIButton
    -							UIButton
    -							UIButton
    -							UIButton
    -							UIButton
    -							UIButton
    -							UIButton
    -							UIButton
    -							UIButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
     							UITransferButton
    -							UIButton
    -							UIButton
    +							UIDigitButton
    +							UIDigitButton
     						
     					
     					
    @@ -1471,7 +1527,7 @@
     							
     							
     								eightButton
    -								UIButton
    +								UIDigitButton
     							
     							
     								eraseButton
    @@ -1479,39 +1535,39 @@
     							
     							
     								fiveButton
    -								UIButton
    +								UIDigitButton
     							
     							
     								fourButton
    -								UIButton
    +								UIDigitButton
     							
     							
     								nineButton
    -								UIButton
    +								UIDigitButton
     							
     							
     								oneButton
    -								UIButton
    +								UIDigitButton
     							
     							
     								sevenButton
    -								UIButton
    +								UIDigitButton
     							
     							
     								sharpButton
    -								UIButton
    +								UIDigitButton
     							
     							
     								sixButton
    -								UIButton
    +								UIDigitButton
     							
     							
     								starButton
    -								UIButton
    +								UIDigitButton
     							
     							
     								threeButton
    -								UIButton
    +								UIDigitButton
     							
     							
     								transferButton
    @@ -1519,11 +1575,11 @@
     							
     							
     								twoButton
    -								UIButton
    +								UIDigitButton
     							
     							
     								zeroButton
    -								UIButton
    +								UIDigitButton
     							
     						
     					
    diff --git a/Classes/DialerViewController~ipad.xib b/Classes/en.lproj/DialerViewController~ipad.xib
    similarity index 93%
    rename from Classes/DialerViewController~ipad.xib
    rename to Classes/en.lproj/DialerViewController~ipad.xib
    index 9e9abaae9..526b49aca 100644
    --- a/Classes/DialerViewController~ipad.xib
    +++ b/Classes/en.lproj/DialerViewController~ipad.xib
    @@ -69,6 +69,9 @@
     								
     								NO
     								NO
    +								
    +									Enter a address
    +								
     								IBIPadFramework
     								0
     								
    @@ -104,6 +107,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Backscape
    +								
     								IBIPadFramework
     								NO
     								0
    @@ -173,6 +179,9 @@
     								
     								NO
     								NO
    +								
    +									1
    +								
     								IBIPadFramework
     								0
     								0
    @@ -202,6 +211,9 @@
     								
     								NO
     								NO
    +								
    +									2
    +								
     								IBIPadFramework
     								0
     								0
    @@ -226,6 +238,9 @@
     								
     								NO
     								NO
    +								
    +									3
    +								
     								IBIPadFramework
     								0
     								0
    @@ -250,6 +265,9 @@
     								
     								NO
     								NO
    +								
    +									4
    +								
     								IBIPadFramework
     								0
     								0
    @@ -274,6 +292,9 @@
     								
     								NO
     								NO
    +								
    +									5
    +								
     								IBIPadFramework
     								0
     								0
    @@ -298,6 +319,9 @@
     								
     								NO
     								NO
    +								
    +									6
    +								
     								IBIPadFramework
     								0
     								0
    @@ -322,6 +346,9 @@
     								
     								NO
     								NO
    +								
    +									7
    +								
     								IBIPadFramework
     								0
     								0
    @@ -346,6 +373,9 @@
     								
     								NO
     								NO
    +								
    +									8
    +								
     								IBIPadFramework
     								0
     								0
    @@ -370,6 +400,9 @@
     								
     								NO
     								NO
    +								
    +									9
    +								
     								IBIPadFramework
     								0
     								0
    @@ -394,6 +427,9 @@
     								
     								NO
     								NO
    +								
    +									Star
    +								
     								IBIPadFramework
     								0
     								0
    @@ -418,6 +454,9 @@
     								
     								NO
     								NO
    +								
    +									0
    +								
     								IBIPadFramework
     								0
     								0
    @@ -442,6 +481,9 @@
     								
     								NO
     								NO
    +								
    +									Sharp
    +								
     								IBIPadFramework
     								0
     								0
    @@ -482,6 +524,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Add to Contact
    +								
     								IBIPadFramework
     								NO
     								0
    @@ -513,6 +558,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Back
    +								
     								IBIPadFramework
     								0
     								0
    @@ -543,6 +591,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Call
    +								
     								IBIPadFramework
     								NO
     								0
    @@ -574,6 +625,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Add call
    +								
     								IBIPadFramework
     								NO
     								0
    @@ -604,6 +658,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Transfer Call
    +								
     								IBIPadFramework
     								NO
     								0
    @@ -1264,20 +1321,20 @@
     						UITextField
     						UIButton
     						UICallButton
    -						UIButton
    +						UIDigitButton
     						UIEraseButton
    -						UIButton
    -						UIButton
    -						UIButton
    -						UIButton
    -						UIButton
    -						UIButton
    -						UIButton
    -						UIButton
    -						UIButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
     						UITransferButton
    -						UIButton
    -						UIButton
    +						UIDigitButton
    +						UIDigitButton
     					
     					
     						
    @@ -1302,7 +1359,7 @@
     						
     						
     							eightButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							eraseButton
    @@ -1310,39 +1367,39 @@
     						
     						
     							fiveButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							fourButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							nineButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							oneButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							sevenButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							sharpButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							sixButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							starButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							threeButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							transferButton
    @@ -1350,11 +1407,11 @@
     						
     						
     							twoButton
    -							UIButton
    +							UIDigitButton
     						
     						
     							zeroButton
    -							UIButton
    +							UIDigitButton
     						
     					
     					
    diff --git a/Classes/FirstLoginViewController.xib b/Classes/en.lproj/FirstLoginViewController.xib
    similarity index 98%
    rename from Classes/FirstLoginViewController.xib
    rename to Classes/en.lproj/FirstLoginViewController.xib
    index 73b5dab9f..80faa334c 100644
    --- a/Classes/FirstLoginViewController.xib
    +++ b/Classes/en.lproj/FirstLoginViewController.xib
    @@ -50,6 +50,9 @@
     						
     						_NS:9
     						NO
    +						
    +							Login
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -123,6 +126,9 @@
     						
     						NO
     						NO
    +						
    +							Username
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -163,6 +169,9 @@
     						
     						NO
     						NO
    +						
    +							Password
    +						
     						IBCocoaTouchFramework
     						0
     						0
    diff --git a/Classes/HistoryDetailsViewController.xib b/Classes/en.lproj/HistoryDetailsViewController.xib
    similarity index 94%
    rename from Classes/HistoryDetailsViewController.xib
    rename to Classes/en.lproj/HistoryDetailsViewController.xib
    index 781846385..75f2fc588 100644
    --- a/Classes/HistoryDetailsViewController.xib
    +++ b/Classes/en.lproj/HistoryDetailsViewController.xib
    @@ -3,19 +3,19 @@
     	
     		1296
     		11E53
    -		2182
    +		2549
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1181
    +			1498
     		
     		
    +			IBProxyObject
     			IBUIButton
     			IBUIImageView
    -			IBUIView
     			IBUILabel
    -			IBProxyObject
    +			IBUIView
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -66,7 +66,7 @@
     								_NS:9
     								NO
     								
    -									Add contact
    +									Back
     								
     								IBCocoaTouchFramework
     								0
    @@ -104,7 +104,7 @@
     								_NS:9
     								NO
     								
    -									Add contact
    +									Add to contact
     								
     								IBCocoaTouchFramework
     								0
    @@ -150,6 +150,9 @@
     								
     								_NS:9
     								NO
    +								
    +									
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -189,6 +192,11 @@
     								
     								_NS:9
     								NO
    +								
    +									Contact's avatar
    +									
    +									
    +								
     								IBCocoaTouchFramework
     								
     									NSImage
    @@ -207,6 +215,9 @@
     								YES
     								7
     								NO
    +								
    +									Contact's name
    +								
     								IBCocoaTouchFramework
     								Contact1
     								
    @@ -254,6 +265,9 @@
     								YES
     								7
     								NO
    +								
    +									
    +								
     								IBCocoaTouchFramework
     								Date:
     								
    @@ -281,6 +295,10 @@
     								YES
     								7
     								NO
    +								
    +									Call date
    +									
    +								
     								IBCocoaTouchFramework
     								11/11/2011 at 10:01
     								
    @@ -321,6 +339,9 @@
     								YES
     								7
     								NO
    +								
    +									
    +								
     								IBCocoaTouchFramework
     								Duration:
     								
    @@ -341,6 +362,10 @@
     								YES
     								7
     								NO
    +								
    +									Call duration
    +									
    +								
     								IBCocoaTouchFramework
     								9:05
     								
    @@ -374,6 +399,9 @@
     								YES
     								7
     								NO
    +								
    +									
    +								
     								IBCocoaTouchFramework
     								Type:
     								
    @@ -394,6 +422,10 @@
     								YES
     								7
     								NO
    +								
    +									Call type
    +									
    +								
     								IBCocoaTouchFramework
     								outgoing call
     								
    @@ -417,9 +449,11 @@
     						{{33, 323}, {255, 50}}
     						
     						
    -						
     						_NS:9
     						NO
    +						
    +							Callback
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -901,6 +935,6 @@
     			{320, 117}
     			{5, 117}
     		
    -		1181
    +		1498
     	
     
    diff --git a/Classes/HistoryViewController.xib b/Classes/en.lproj/HistoryViewController.xib
    similarity index 98%
    rename from Classes/HistoryViewController.xib
    rename to Classes/en.lproj/HistoryViewController.xib
    index e782748d0..2e9e1f3ed 100644
    --- a/Classes/HistoryViewController.xib
    +++ b/Classes/en.lproj/HistoryViewController.xib
    @@ -3,20 +3,20 @@
     	
     		1296
     		11E53
    -		2182
    +		2549
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1181
    +			1498
     		
     		
    -			IBUIImageView
    -			IBUIButton
    -			IBUITableView
    -			IBUIView
    -			IBUITableViewController
     			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUITableView
    +			IBUITableViewController
    +			IBUIView
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -66,6 +66,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Delete all
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -102,7 +105,7 @@
     								_NS:9
     								NO
     								
    -									All
    +									All contacts filter
     								
     								IBCocoaTouchFramework
     								0
    @@ -131,7 +134,7 @@
     								_NS:9
     								NO
     								
    -									Missed
    +									Missed contacts filter
     								
     								IBCocoaTouchFramework
     								0
    @@ -452,6 +455,7 @@
     						35
     						
     						
    +						delAllButton
     					
     				
     			
    @@ -585,6 +589,6 @@
     			{160, 88}
     			{5, 117}
     		
    -		1181
    +		1498
     	
     
    diff --git a/Classes/InCallViewController.xib b/Classes/en.lproj/InCallViewController.xib
    similarity index 99%
    rename from Classes/InCallViewController.xib
    rename to Classes/en.lproj/InCallViewController.xib
    index 61b54f0d5..d849e1ca3 100644
    --- a/Classes/InCallViewController.xib
    +++ b/Classes/en.lproj/InCallViewController.xib
    @@ -146,8 +146,12 @@
     						{{0, 23}, {85, 33}}
     						
     						
    +						
     						_NS:9
     						NO
    +						
    +							Switch camera
    +						
     						IBCocoaTouchFramework
     						0
     						0
    diff --git a/Classes/IncomingCallViewController.xib b/Classes/en.lproj/IncomingCallViewController.xib
    similarity index 99%
    rename from Classes/IncomingCallViewController.xib
    rename to Classes/en.lproj/IncomingCallViewController.xib
    index 435a55df5..2f8fa4b70 100644
    --- a/Classes/IncomingCallViewController.xib
    +++ b/Classes/en.lproj/IncomingCallViewController.xib
    @@ -83,6 +83,10 @@
     								
     								_NS:9
     								NO
    +								
    +									Incoming call
    +									
    +								
     								IBCocoaTouchFramework
     								
     									NSImage
    @@ -101,6 +105,9 @@
     								NO
     								7
     								NO
    +								
    +									Contact's name
    +								
     								IBCocoaTouchFramework
     								0102030405
     								
    @@ -4534,6 +4541,11 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								
     								_NS:9
     								NO
    +								
    +									Contact's avatar
    +									
    +									
    +								
     								IBCocoaTouchFramework
     								
     									NSImage
    diff --git a/Classes/WizardViewController.xib b/Classes/en.lproj/WizardViewController.xib
    similarity index 94%
    rename from Classes/WizardViewController.xib
    rename to Classes/en.lproj/WizardViewController.xib
    index 90049c4fa..70b4ee8eb 100644
    --- a/Classes/WizardViewController.xib
    +++ b/Classes/en.lproj/WizardViewController.xib
    @@ -67,6 +67,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Cancel
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -107,6 +110,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Start
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -133,6 +139,9 @@
     								
     								_NS:9
     								NO
    +								
    +									Back
    +								
     								IBCocoaTouchFramework
     								0
     								0
    @@ -218,6 +227,10 @@
     						
     						_NS:9
     						NO
    +						
    +							Linphone setup assistant icon
    +							
    +						
     						IBCocoaTouchFramework
     						
     							NSImage
    @@ -280,6 +293,10 @@
     						
     						_NS:9
     						NO
    +						
    +							Account setup assistant
    +							
    +						
     						IBCocoaTouchFramework
     						
     							NSImage
    @@ -295,6 +312,10 @@
     						
     						_NS:9
     						NO
    +						
    +							Create linphone.org account
    +							
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -329,6 +350,10 @@
     						
     						_NS:9
     						NO
    +						
    +							Sign in linphone.org account
    +							
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -350,6 +375,10 @@
     						
     						_NS:9
     						NO
    +						
    +							Sign in SIP account
    +							
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -384,6 +413,10 @@
     						
     						_NS:9
     						NO
    +						
    +							Account setup assistant
    +							
    +						
     						IBCocoaTouchFramework
     						
     					
    @@ -423,6 +456,9 @@
     						NO
     						YES
     						100
    +						
    +							Username
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -464,6 +500,9 @@
     						NO
     						YES
     						101
    +						
    +							Password
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -494,6 +533,9 @@
     						NO
     						YES
     						102
    +						
    +							Password again
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -524,6 +566,9 @@
     						NO
     						YES
     						103
    +						
    +							Email
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -551,6 +596,9 @@
     						
     						_NS:9
     						NO
    +						
    +							Register
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -592,6 +640,10 @@
     						
     						_NS:9
     						NO
    +						
    +							Account setup assistant
    +							
    +						
     						IBCocoaTouchFramework
     						
     					
    @@ -629,6 +681,9 @@
     						
     						_NS:9
     						NO
    +						
    +							Sign in
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -652,6 +707,9 @@
     						NO
     						YES
     						101
    +						
    +							Password
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -682,6 +740,9 @@
     						NO
     						YES
     						100
    +						
    +							Username
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -722,6 +783,10 @@
     						
     						_NS:9
     						NO
    +						
    +							Account setup assistant
    +							
    +						
     						IBCocoaTouchFramework
     						
     					
    @@ -761,6 +826,9 @@
     						NO
     						YES
     						100
    +						
    +							Username
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -790,6 +858,9 @@
     						NO
     						YES
     						101
    +						
    +							Password
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -820,6 +891,9 @@
     						NO
     						YES
     						104
    +						
    +							Domain
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -847,6 +921,9 @@
     						
     						_NS:9
     						NO
    +						
    +							Sign in
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -881,6 +958,10 @@
     						
     						_NS:9
     						NO
    +						
    +							Account setup assistant
    +							
    +						
     						IBCocoaTouchFramework
     						
     					
    @@ -918,6 +999,9 @@
     						
     						_NS:9
     						NO
    +						
    +							Check validation
    +						
     						IBCocoaTouchFramework
     						0
     						0
    @@ -941,6 +1025,9 @@
     						NO
     						YES
     						101
    +						
    +							
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -971,6 +1058,9 @@
     						NO
     						YES
     						100
    +						
    +							
    +						
     						IBCocoaTouchFramework
     						0
     						
    @@ -1375,8 +1465,8 @@
     							
     							
     							
    -							
     							
    +							
     						
     						
     						createAccountView
    @@ -1728,7 +1818,7 @@
     						UIButton
     						UIView
     						UIView
    -						UIView
    +						UIScrollView
     						UIView
     						UIView
     						UIButton
    @@ -1751,7 +1841,7 @@
     						
     						
     							contentView
    -							UIView
    +							UIScrollView
     						
     						
     							createAccountView
    diff --git a/Classes/fr.lproj/ChatRoomViewController.xib b/Classes/fr.lproj/ChatRoomViewController.xib
    new file mode 100644
    index 000000000..9336cdb48
    --- /dev/null
    +++ b/Classes/fr.lproj/ChatRoomViewController.xib
    @@ -0,0 +1,804 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIView
    +			IBUIImageView
    +			IBUILabel
    +			IBProxyObject
    +			IBUITableViewController
    +			IBUITableView
    +			IBUITextView
    +			IBUIButton
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						310
    +						
    +							
    +								
    +								290
    +								
    +									
    +										
    +										292
    +										{{-13, -5}, {131, 107}}
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											avatar_shadow_small.png
    +										
    +									
    +									
    +										
    +										292
    +										{{20, 6}, {65, 65}}
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Contact's avatar
    +											
    +											
    +										
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											avatar_unknown_small.png
    +										
    +									
    +									
    +										
    +										290
    +										{{101, 37}, {199, 43}}
    +										
    +										
    +										_NS:9
    +										NO
    +										YES
    +										7
    +										NO
    +										
    +											Contact's name
    +											
    +										
    +										IBCocoaTouchFramework
    +										Contact1
    +										
    +											3
    +											MC4zMzMzMzMzMzMzAA
    +										
    +										
    +										0
    +										10
    +										
    +											1
    +											22
    +										
    +										
    +											Helvetica
    +											22
    +											16
    +										
    +									
    +								
    +								{320, 80}
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MCAwAA
    +								
    +								YES
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								274
    +								{{0, 80}, {320, 277}}
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MQA
    +								
    +								YES
    +								IBCocoaTouchFramework
    +								YES
    +								0
    +								YES
    +								44
    +								22
    +								22
    +							
    +							
    +								
    +								266
    +								
    +									
    +										
    +										257
    +										{{250, 0}, {70, 59}}
    +										
    +										_NS:9
    +										NO
    +										
    +											Send
    +										
    +										IBCocoaTouchFramework
    +										NO
    +										0
    +										0
    +										NO
    +										NO
    +										
    +											3
    +											MC41AA
    +										
    +										
    +											NSImage
    +											chat_send_over.png
    +										
    +										
    +											NSImage
    +											chat_send_disabled.png
    +										
    +										
    +											NSImage
    +											chat_send_default.png
    +										
    +										
    +											2
    +											15
    +										
    +										
    +											Helvetica-Bold
    +											15
    +											16
    +										
    +									
    +									
    +										
    +										258
    +										{250, 59}
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											chat_field.png
    +										
    +									
    +									
    +										
    +										258
    +										{{10, 10}, {230, 39}}
    +										
    +										
    +										_NS:9
    +										YES
    +										YES
    +										
    +											Enter your message here
    +										
    +										IBCocoaTouchFramework
    +										YES
    +										NO
    +										This is a message
    +										
    +											2
    +											IBCocoaTouchFramework
    +										
    +										
    +											1
    +											18
    +										
    +										
    +											Helvetica
    +											18
    +											16
    +										
    +									
    +								
    +								{{0, 357}, {320, 59}}
    +								
    +								
    +								_NS:9
    +								
    +								IBCocoaTouchFramework
    +							
    +						
    +						{{0, 44}, {320, 416}}
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{160, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									chat_back_over.png
    +								
    +								
    +									NSImage
    +									chat_back_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								289
    +								{{160, 0}, {160, 44}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Edit
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									chat_edit_over.png
    +								
    +								
    +									NSImage
    +									chat_ok_default.png
    +								
    +								
    +									NSImage
    +									chat_edit_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				NO
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					11
    +				
    +				
    +					
    +						tableController
    +						
    +						
    +					
    +					32
    +				
    +				
    +					
    +						editButton
    +						
    +						
    +					
    +					35
    +				
    +				
    +					
    +						addressLabel
    +						
    +						
    +					
    +					43
    +				
    +				
    +					
    +						headerView
    +						
    +						
    +					
    +					45
    +				
    +				
    +					
    +						avatarImage
    +						
    +						
    +					
    +					44
    +				
    +				
    +					
    +						fieldBackgroundImage
    +						
    +						
    +					
    +					48
    +				
    +				
    +					
    +						footerView
    +						
    +						
    +					
    +					46
    +				
    +				
    +					
    +						sendButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						chatView
    +						
    +						
    +					
    +					54
    +				
    +				
    +					
    +						messageField
    +						
    +						
    +					
    +					57
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					30
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					31
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					12
    +				
    +				
    +					
    +						onEditClick:
    +						
    +						
    +						7
    +					
    +					13
    +				
    +				
    +					
    +						onSendClick:
    +						
    +						
    +						7
    +					
    +					25
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					33
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						6
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						7
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						toolsView
    +					
    +					
    +						9
    +						
    +						
    +						backButton
    +					
    +					
    +						10
    +						
    +						
    +						editButton
    +					
    +					
    +						29
    +						
    +						
    +						tableController
    +					
    +					
    +						47
    +						
    +						
    +						background
    +					
    +					
    +						49
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						chatView
    +					
    +					
    +						39
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						headerView
    +					
    +					
    +						40
    +						
    +						
    +						addressLabel
    +					
    +					
    +						41
    +						
    +						
    +						avatarImage
    +					
    +					
    +						42
    +						
    +						
    +						avatarShadowBackground
    +					
    +					
    +						8
    +						
    +						
    +						tableView
    +					
    +					
    +						14
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						footerView
    +					
    +					
    +						21
    +						
    +						
    +						fieldBackgroundImage
    +					
    +					
    +						15
    +						
    +						
    +						sendButton
    +					
    +					
    +						55
    +						
    +						
    +						messageField
    +					
    +				
    +			
    +			
    +				ChatRoomViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				ChatRoomTableViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +			
    +			
    +			
    +			
    +			
    +			57
    +		
    +		
    +			
    +				
    +					ChatRoomTableViewController
    +					UITableViewController
    +					
    +						IBProjectSource
    +						./Classes/ChatRoomTableViewController.h
    +					
    +				
    +				
    +					ChatRoomViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onBackClick:
    +							id
    +						
    +						
    +							onEditClick:
    +							id
    +						
    +						
    +							onMessageChange:
    +							id
    +						
    +						
    +							onSendClick:
    +							id
    +						
    +					
    +					
    +						UILabel
    +						UIImageView
    +						UIView
    +						UIToggleButton
    +						UIImageView
    +						UIView
    +						UIView
    +						UITextView
    +						UIButton
    +						ChatRoomTableViewController
    +					
    +					
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +						
    +							chatView
    +							UIView
    +						
    +						
    +							editButton
    +							UIToggleButton
    +						
    +						
    +							fieldBackgroundImage
    +							UIImageView
    +						
    +						
    +							footerView
    +							UIView
    +						
    +						
    +							headerView
    +							UIView
    +						
    +						
    +							messageField
    +							UITextView
    +						
    +						
    +							sendButton
    +							UIButton
    +						
    +						
    +							tableController
    +							ChatRoomTableViewController
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ChatRoomViewController.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{262, 214}
    +			{131, 131}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{500, 117}
    +			{320, 88}
    +			{140, 117}
    +			{140, 117}
    +			{140, 117}
    +			{5, 117}
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/ChatViewController.xib b/Classes/fr.lproj/ChatViewController.xib
    new file mode 100644
    index 000000000..4986fe592
    --- /dev/null
    +++ b/Classes/fr.lproj/ChatViewController.xib
    @@ -0,0 +1,525 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIButton
    +			IBUIImageView
    +			IBProxyObject
    +			IBUILabel
    +			IBUITextField
    +			IBUITableViewController
    +			IBUITableView
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{{160, 0}, {160, 44}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									New Discussion
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									chat_add_over.png
    +								
    +								
    +									NSImage
    +									chat_add_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								289
    +								{160, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Edit
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									chat_edit_over.png
    +								
    +								
    +									NSImage
    +									chat_ok_default.png
    +								
    +								
    +									NSImage
    +									chat_edit_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						274
    +						{{0, 74}, {320, 378}}
    +						
    +						_NS:9
    +						
    +							1
    +							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						YES
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						1
    +						0
    +						YES
    +						44
    +						22
    +						22
    +					
    +					
    +						
    +						292
    +						{{24, 44}, {296, 30}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						
    +							Enter a address
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						1
    +						
    +							1
    +							17
    +						
    +						
    +							Helvetica
    +							17
    +							16
    +						
    +					
    +					
    +						
    +						292
    +						{{0, 44}, {24, 30}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						IBCocoaTouchFramework
    +						To:
    +						
    +							1
    +							MCAwIDAAA
    +						
    +						
    +						0
    +						10
    +						
    +						
    +					
    +				
    +				{320, 460}
    +				
    +				_NS:9
    +				
    +					3
    +					MQA
    +					
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				NO
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					14
    +				
    +				
    +					
    +						tableController
    +						
    +						
    +					
    +					18
    +				
    +				
    +					
    +						editButton
    +						
    +						
    +					
    +					22
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					13
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					11
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					12
    +				
    +				
    +					
    +						onEditClick:
    +						
    +						
    +						7
    +					
    +					21
    +				
    +				
    +					
    +						onAddClick:
    +						
    +						
    +						7
    +					
    +					20
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					28
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +						tableController
    +					
    +					
    +						5
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						6
    +						
    +						
    +						tableView
    +					
    +					
    +						7
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						toolsBar
    +					
    +					
    +						9
    +						
    +						
    +						editButton
    +					
    +					
    +						10
    +						
    +						
    +						addButton
    +					
    +					
    +						23
    +						
    +						
    +						background
    +					
    +					
    +						25
    +						
    +						
    +						addressField
    +					
    +					
    +						26
    +						
    +						
    +					
    +				
    +			
    +			
    +				ChatViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				ChatTableViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			28
    +		
    +		
    +			
    +				
    +					ChatTableViewController
    +					UITableViewController
    +					
    +						IBProjectSource
    +						./Classes/ChatTableViewController.h
    +					
    +				
    +				
    +					ChatViewController
    +					UIViewController
    +					
    +						id
    +						id
    +					
    +					
    +						
    +							onAddClick:
    +							id
    +						
    +						
    +							onEditClick:
    +							id
    +						
    +					
    +					
    +						UITextField
    +						UIToggleButton
    +						ChatTableViewController
    +					
    +					
    +						
    +							addressField
    +							UITextField
    +						
    +						
    +							editButton
    +							UIToggleButton
    +						
    +						
    +							tableController
    +							ChatTableViewController
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ChatViewController.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{5, 117}
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/ContactDetailsLabelViewController.xib b/Classes/fr.lproj/ContactDetailsLabelViewController.xib
    new file mode 100644
    index 000000000..670156316
    --- /dev/null
    +++ b/Classes/fr.lproj/ContactDetailsLabelViewController.xib
    @@ -0,0 +1,396 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUITableView
    +			IBUIButton
    +			IBUIView
    +			IBUIImageView
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						274
    +						{320, 460}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							background.png
    +						
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{160, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									contact_back_over.png
    +								
    +								
    +									NSImage
    +									contact_back_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						306
    +						{{0, 59}, {320, 401}}
    +						
    +						_NS:9
    +						
    +							10
    +							
    +								549453824
    +								{512, 1}
    +								
    +									
    +										
    +										
    +											
    +												TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA
    +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA
    +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI
    +AAgACAAIAAEAAQABAAE
    +											
    +										
    +									
    +								
    +								
    +									3
    +									MCAwAA
    +								
    +							
    +							groupTableViewBackgroundColor
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						YES
    +						NO
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						1
    +						2
    +						0
    +						YES
    +						44
    +						10
    +						10
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					12
    +				
    +				
    +					
    +						tableView
    +						
    +						
    +					
    +					15
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					13
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					14
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					11
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						5
    +						
    +						
    +						tableView
    +					
    +					
    +						6
    +						
    +						
    +							
    +							
    +						
    +						
    +						toolsBar
    +					
    +					
    +						8
    +						
    +						
    +						backButton
    +					
    +					
    +						10
    +						
    +						
    +						barBackground
    +					
    +					
    +						16
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				ContactDetailsLabelViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			16
    +		
    +		
    +			
    +				
    +					ContactDetailsLabelViewController
    +					UIViewController
    +					
    +						onBackClick:
    +						id
    +					
    +					
    +						onBackClick:
    +						
    +							onBackClick:
    +							id
    +						
    +					
    +					
    +						tableView
    +						UITableView
    +					
    +					
    +						tableView
    +						
    +							tableView
    +							UITableView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ContactDetailsLabelViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{640, 523}
    +			{320, 88}
    +			{320, 88}
    +			{5, 117}
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/ContactDetailsViewController.xib b/Classes/fr.lproj/ContactDetailsViewController.xib
    new file mode 100644
    index 000000000..c83ace1ee
    --- /dev/null
    +++ b/Classes/fr.lproj/ContactDetailsViewController.xib
    @@ -0,0 +1,740 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIView
    +			IBUIImageView
    +			IBProxyObject
    +			IBUIViewController
    +			IBUITableViewController
    +			IBUITableView
    +			IBUIButton
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{160, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									contact_back_over.png
    +								
    +								
    +									NSImage
    +									contact_back_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{160, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Cancel
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									contact_cancel_over.png
    +								
    +								
    +									NSImage
    +									contact_cancel_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								289
    +								{{160, 0}, {160, 44}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Edit
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									contact_edit_over.png
    +								
    +								
    +									NSImage
    +									contact_ok_default.png
    +								
    +								
    +									NSImage
    +									contact_edit_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						306
    +						{{0, 44}, {320, 416}}
    +						
    +						_NS:9
    +						
    +							10
    +							
    +								549453824
    +								{512, 1}
    +								
    +									
    +										
    +										
    +											
    +												TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA
    +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA
    +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI
    +AAgACAAIAAEAAQABAAE
    +											
    +										
    +									
    +								
    +								
    +									3
    +									MCAwAA
    +								
    +							
    +							groupTableViewBackgroundColor
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						YES
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						1
    +						2
    +						0
    +						YES
    +						YES
    +						44
    +						10
    +						10
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +			
    +				UIContactDetailsFooter
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +			
    +				UIContactDetailsHeader
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					3
    +				
    +				
    +					
    +						tableController
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						editButton
    +						
    +						
    +					
    +					31
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					50
    +				
    +				
    +					
    +						cancelButton
    +						
    +						
    +					
    +					51
    +				
    +				
    +					
    +						onEditClick:
    +						
    +						
    +						7
    +					
    +					30
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					10
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					29
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						contactDetailsDelegate
    +						
    +						
    +					
    +					53
    +				
    +				
    +					
    +						footerController
    +						
    +						
    +					
    +					59
    +				
    +				
    +					
    +						headerController
    +						
    +						
    +					
    +					60
    +				
    +				
    +					
    +						onCancelClick:
    +						
    +						
    +						7
    +					
    +					49
    +				
    +				
    +					
    +						contactDetailsDelegate
    +						
    +						
    +					
    +					61
    +				
    +				
    +					
    +						contactDetailsDelegate
    +						
    +						
    +					
    +					62
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						1
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						toolBar
    +					
    +					
    +						8
    +						
    +						
    +						editButton
    +					
    +					
    +						9
    +						
    +						
    +						backButton
    +					
    +					
    +						19
    +						
    +						
    +						tableView
    +					
    +					
    +						20
    +						
    +						
    +						
    +						tableController
    +					
    +					
    +						47
    +						
    +						
    +						cancelButton
    +					
    +					
    +						52
    +						
    +						
    +						barBackground
    +					
    +					
    +						57
    +						
    +						
    +						footerController
    +					
    +					
    +						58
    +						
    +						
    +						headerController
    +					
    +				
    +			
    +			
    +				ContactDetailsViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				ContactDetailsTableViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIContactDetailsFooter
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIContactDetailsHeader
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			62
    +		
    +		
    +			
    +				
    +					ContactDetailsTableViewController
    +					UITableViewController
    +					
    +						id
    +						UIContactDetailsFooter
    +						UIContactDetailsHeader
    +					
    +					
    +						
    +							contactDetailsDelegate
    +							id
    +						
    +						
    +							footerController
    +							UIContactDetailsFooter
    +						
    +						
    +							headerController
    +							UIContactDetailsHeader
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ContactDetailsTableViewController.h
    +					
    +				
    +				
    +					ContactDetailsViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onBackClick:
    +							id
    +						
    +						
    +							onCancelClick:
    +							id
    +						
    +						
    +							onEditClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIButton
    +						UIToggleButton
    +						ContactDetailsTableViewController
    +					
    +					
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							cancelButton
    +							UIButton
    +						
    +						
    +							editButton
    +							UIToggleButton
    +						
    +						
    +							tableController
    +							ContactDetailsTableViewController
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ContactDetailsViewController.h
    +					
    +				
    +				
    +					UIContactDetailsFooter
    +					UIViewController
    +					
    +						onRemoveClick:
    +						id
    +					
    +					
    +						onRemoveClick:
    +						
    +							onRemoveClick:
    +							id
    +						
    +					
    +					
    +						id
    +						UIButton
    +					
    +					
    +						
    +							contactDetailsDelegate
    +							id
    +						
    +						
    +							removeButton
    +							UIButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIContactDetailsFooter.h
    +					
    +				
    +				
    +					UIContactDetailsHeader
    +					UIViewController
    +					
    +						onAvatarClick:
    +						id
    +					
    +					
    +						onAvatarClick:
    +						
    +							onAvatarClick:
    +							id
    +						
    +					
    +					
    +						UILabel
    +						UIImageView
    +						id
    +						UIView
    +						UIView
    +						UITableView
    +					
    +					
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +						
    +							contactDetailsDelegate
    +							id
    +						
    +						
    +							editView
    +							UIView
    +						
    +						
    +							normalView
    +							UIView
    +						
    +						
    +							tableView
    +							UITableView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIContactDetailsHeader.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{5, 117}
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/ContactsViewController.xib b/Classes/fr.lproj/ContactsViewController.xib
    new file mode 100644
    index 000000000..66f95d6d9
    --- /dev/null
    +++ b/Classes/fr.lproj/ContactsViewController.xib
    @@ -0,0 +1,574 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIImageView
    +			IBUIButton
    +			IBUITableView
    +			IBUIView
    +			IBUITableViewController
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								289
    +								{{120, 0}, {80, 44}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									All contacts filter
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									contacts_all_selected.png
    +								
    +								
    +								
    +									NSImage
    +									contacts_all_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								289
    +								{{200, 0}, {80, 44}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Linphone contacts filter
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									contacts_linphone_selected.png
    +								
    +								
    +								
    +									NSImage
    +									contacts_linphone_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{80, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add contact
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									contacts_add_over.png
    +								
    +								
    +									NSImage
    +									contacts_add_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{80, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									contacts_back_over.png
    +								
    +								
    +									NSImage
    +									contacts_back_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						274
    +						{{0, 44}, {320, 416}}
    +						
    +						_NS:10
    +						
    +							1
    +							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						YES
    +						NO
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						1
    +						0
    +						YES
    +						44
    +						22
    +						22
    +					
    +				
    +				{320, 460}
    +				
    +				_NS:9
    +				
    +					3
    +					MQA
    +					
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				NO
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					16
    +				
    +				
    +					
    +						allButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						linphoneButton
    +						
    +						
    +					
    +					31
    +				
    +				
    +					
    +						tableController
    +						
    +						
    +					
    +					83
    +				
    +				
    +					
    +						tableView
    +						
    +						
    +					
    +					84
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					90
    +				
    +				
    +					
    +						addButton
    +						
    +						
    +					
    +					91
    +				
    +				
    +					
    +						onAllClick:
    +						
    +						
    +						7
    +					
    +					29
    +				
    +				
    +					
    +						onLinphoneClick:
    +						
    +						
    +						7
    +					
    +					47
    +				
    +				
    +					
    +						onAddContactClick:
    +						
    +						
    +						7
    +					
    +					86
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					81
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					82
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					80
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					89
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						2
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						toolBar
    +					
    +					
    +						4
    +						
    +						
    +						allButton
    +					
    +					
    +						5
    +						
    +						
    +						linphoneButton
    +					
    +					
    +						6
    +						
    +						
    +						addButton
    +					
    +					
    +						69
    +						
    +						
    +						tableView
    +					
    +					
    +						76
    +						
    +						
    +						
    +						tableController
    +					
    +					
    +						87
    +						
    +						
    +						backButton
    +					
    +					
    +						92
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				ContactsViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				ContactsTableViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			92
    +		
    +		
    +			
    +				
    +					ContactsTableViewController
    +					UITableViewController
    +					
    +						IBProjectSource
    +						./Classes/ContactsTableViewController.h
    +					
    +				
    +				
    +					ContactsViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onAddContactClick:
    +							id
    +						
    +						
    +							onAllClick:
    +							id
    +						
    +						
    +							onBackClick:
    +							id
    +						
    +						
    +							onLinphoneClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIButton
    +						UIButton
    +						UIButton
    +						ContactsTableViewController
    +						UITableView
    +					
    +					
    +						
    +							addButton
    +							UIButton
    +						
    +						
    +							allButton
    +							UIButton
    +						
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							linphoneButton
    +							UIButton
    +						
    +						
    +							tableController
    +							ContactsTableViewController
    +						
    +						
    +							tableView
    +							UITableView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ContactsViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{160, 88}
    +			{160, 88}
    +			{213, 117}
    +			{213, 117}
    +			{213, 117}
    +			{213, 117}
    +			{213, 117}
    +			{213, 117}
    +			{5, 117}
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/DialerViewController.xib b/Classes/fr.lproj/DialerViewController.xib
    new file mode 100644
    index 000000000..2efa9450d
    --- /dev/null
    +++ b/Classes/fr.lproj/DialerViewController.xib
    @@ -0,0 +1,1773 @@
    +
    +
    +	
    +		784
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			YES
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +			IBUITextField
    +			IBProxyObject
    +		
    +		
    +			YES
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			YES
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					YES
    +					
    +						
    +						288
    +						
    +							YES
    +							
    +								
    +								292
    +								{320, 80}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									dialer_address_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{320, 60}
    +								
    +								
    +								
    +									3
    +									MSAwAA
    +								
    +								NO
    +								NO
    +								
    +									Enter a address
    +								
    +								IBCocoaTouchFramework
    +								0
    +								
    +								Enter sip address or phone number...
    +								
    +									3
    +									MQA
    +								
    +								15
    +								
    +									1
    +									3
    +									IBCocoaTouchFramework
    +								
    +								
    +									Helvetica
    +									Helvetica
    +									0
    +									36
    +								
    +								
    +									Helvetica
    +									36
    +									16
    +								
    +							
    +						
    +						{320, 80}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwAA
    +							
    +								2
    +							
    +						
    +						YES
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						288
    +						
    +							YES
    +							
    +								
    +								292
    +								{{0, 11}, {107, 54}}
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								
    +									1
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									numpad_one_over.png
    +								
    +								
    +									NSImage
    +									numpad_one_default.png
    +								
    +								
    +									Helvetica-Bold
    +									Helvetica
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 11}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									2
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_two_over.png
    +								
    +								
    +									NSImage
    +									numpad_two_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 11}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									3
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_three_over.png
    +								
    +								
    +									NSImage
    +									numpad_three_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 73}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									4
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_four_over.png
    +								
    +								
    +									NSImage
    +									numpad_four_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 73}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									5
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_five_over.png
    +								
    +								
    +									NSImage
    +									numpad_five_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 73}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									6
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_six_over.png
    +								
    +								
    +									NSImage
    +									numpad_six_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 135}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									7
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_seven_over.png
    +								
    +								
    +									NSImage
    +									numpad_seven_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 135}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									8
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_eight_over.png
    +								
    +								
    +									NSImage
    +									numpad_eight_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 135}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									9
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_nine_over.png
    +								
    +								
    +									NSImage
    +									numpad_nine_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 197}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									Star
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_star_over.png
    +								
    +								
    +									NSImage
    +									numpad_star_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 197}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									0
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_zero_over.png
    +								
    +								
    +									NSImage
    +									numpad_zero_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 197}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									Sharp
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_sharp_over.png
    +								
    +								
    +									NSImage
    +									numpad_sharp_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 58}, {320, 260}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						288
    +						
    +							YES
    +							
    +								
    +								292
    +								{106, 69}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add to contact
    +								
    +								IBCocoaTouchFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									add_contact_over.png
    +								
    +								
    +									NSImage
    +									add_contact_disabled.png
    +								
    +								
    +									NSImage
    +									add_contact_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{106, 69}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									back_over.png
    +								
    +								
    +									NSImage
    +									back_disabled.png
    +								
    +								
    +									NSImage
    +									back_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{106, 0}, {108, 69}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Call
    +								
    +								IBCocoaTouchFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									call_over.png
    +								
    +								
    +									NSImage
    +									call_disabled.png
    +								
    +								
    +									NSImage
    +									call_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{106, 0}, {108, 69}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add call
    +								
    +								IBCocoaTouchFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									add_call_over.png
    +								
    +								
    +									NSImage
    +									add_call_disabled.png
    +								
    +								
    +									NSImage
    +									add_call_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{106, 0}, {108, 69}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Transfer call
    +								
    +								IBCocoaTouchFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									transfer_call_over.png
    +								
    +								
    +									NSImage
    +									transfer_call_disabled.png
    +								
    +								
    +									NSImage
    +									transfer_call_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{214, 0}, {106, 69}}
    +								
    +								_NS:9
    +								NO
    +								
    +									Backspace
    +								
    +								IBCocoaTouchFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									backspace_over.png
    +								
    +								
    +									NSImage
    +									backspace_disabled.png
    +								
    +								
    +									NSImage
    +									backspace_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 305}, {320, 69}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwAA
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				YES
    +				
    +					
    +						view
    +						
    +						
    +					
    +					176
    +				
    +				
    +					
    +						oneButton
    +						
    +						
    +					
    +					191
    +				
    +				
    +					
    +						twoButton
    +						
    +						
    +					
    +					192
    +				
    +				
    +					
    +						threeButton
    +						
    +						
    +					
    +					193
    +				
    +				
    +					
    +						fourButton
    +						
    +						
    +					
    +					194
    +				
    +				
    +					
    +						fiveButton
    +						
    +						
    +					
    +					195
    +				
    +				
    +					
    +						sixButton
    +						
    +						
    +					
    +					196
    +				
    +				
    +					
    +						sevenButton
    +						
    +						
    +					
    +					197
    +				
    +				
    +					
    +						zeroButton
    +						
    +						
    +					
    +					198
    +				
    +				
    +					
    +						starButton
    +						
    +						
    +					
    +					199
    +				
    +				
    +					
    +						nineButton
    +						
    +						
    +					
    +					200
    +				
    +				
    +					
    +						eraseButton
    +						
    +						
    +					
    +					202
    +				
    +				
    +					
    +						eightButton
    +						
    +						
    +					
    +					204
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					205
    +				
    +				
    +					
    +						addContactButton
    +						
    +						
    +					
    +					225
    +				
    +				
    +					
    +						addCallButton
    +						
    +						
    +					
    +					227
    +				
    +				
    +					
    +						callButton
    +						
    +						
    +					
    +					231
    +				
    +				
    +					
    +						sharpButton
    +						
    +						
    +					
    +					232
    +				
    +				
    +					
    +						transferButton
    +						
    +						
    +					
    +					253
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					254
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					190
    +				
    +				
    +					
    +						onAddressChange:
    +						
    +						
    +						18
    +					
    +					208
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					242
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					243
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					244
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					245
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					246
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					247
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					248
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					241
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					240
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					249
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					250
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					251
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					233
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					234
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					252
    +				
    +				
    +					
    +						onAddContactClick:
    +						
    +						
    +						7
    +					
    +					230
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					235
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					237
    +				
    +			
    +			
    +				
    +					YES
    +					
    +						0
    +						
    +							YES
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						171
    +						
    +						
    +							YES
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						178
    +						
    +						
    +							YES
    +							
    +							
    +						
    +						
    +						dialer
    +					
    +					
    +						4
    +						
    +						
    +						addressField
    +					
    +					
    +						179
    +						
    +						
    +						background
    +					
    +					
    +						180
    +						
    +						
    +							YES
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						pad
    +					
    +					
    +						41
    +						
    +						
    +						#
    +					
    +					
    +						40
    +						
    +						
    +						0
    +					
    +					
    +						39
    +						
    +						
    +						*
    +					
    +					
    +						36
    +						
    +						
    +						9
    +					
    +					
    +						35
    +						
    +						
    +						8
    +					
    +					
    +						33
    +						
    +						
    +						6
    +					
    +					
    +						34
    +						
    +						
    +						7
    +					
    +					
    +						31
    +						
    +						
    +						5
    +					
    +					
    +						30
    +						
    +						
    +						4
    +					
    +					
    +						29
    +						
    +						
    +						3
    +					
    +					
    +						37
    +						
    +						
    +						2
    +					
    +					
    +						38
    +						
    +						
    +						1
    +					
    +					
    +						182
    +						
    +						
    +							YES
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						toolBar
    +					
    +					
    +						183
    +						
    +						
    +						backButton
    +					
    +					
    +						185
    +						
    +						
    +						backspaceButton
    +					
    +					
    +						184
    +						
    +						
    +						addCallButton
    +					
    +					
    +						222
    +						
    +						
    +						addContactButton
    +					
    +					
    +						224
    +						
    +						
    +						callButton
    +					
    +					
    +						236
    +						
    +						
    +						transferButton
    +					
    +				
    +			
    +			
    +				YES
    +				
    +					YES
    +					-1.CustomClassName
    +					-1.IBPluginDependency
    +					-2.CustomClassName
    +					-2.IBPluginDependency
    +					171.IBPluginDependency
    +					178.IBPluginDependency
    +					179.IBPluginDependency
    +					180.IBPluginDependency
    +					182.IBPluginDependency
    +					183.IBPluginDependency
    +					183.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					184.CustomClassName
    +					184.IBPluginDependency
    +					184.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					185.CustomClassName
    +					185.IBPluginDependency
    +					185.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					222.IBPluginDependency
    +					222.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					224.CustomClassName
    +					224.IBPluginDependency
    +					224.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					236.CustomClassName
    +					236.IBPluginDependency
    +					236.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					29.CustomClassName
    +					29.IBPluginDependency
    +					29.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					30.CustomClassName
    +					30.IBPluginDependency
    +					30.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					31.CustomClassName
    +					31.IBPluginDependency
    +					31.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					33.CustomClassName
    +					33.IBPluginDependency
    +					33.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					34.CustomClassName
    +					34.IBPluginDependency
    +					34.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					35.CustomClassName
    +					35.IBPluginDependency
    +					35.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					36.CustomClassName
    +					36.IBPluginDependency
    +					36.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					37.CustomClassName
    +					37.IBPluginDependency
    +					37.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					38.CustomClassName
    +					38.IBPluginDependency
    +					38.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					39.CustomClassName
    +					39.IBPluginDependency
    +					39.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					4.CustomClassName
    +					4.IBPluginDependency
    +					40.CustomClassName
    +					40.IBPluginDependency
    +					40.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					41.CustomClassName
    +					41.IBPluginDependency
    +					41.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +				
    +				
    +					YES
    +					DialerViewController
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					UIResponder
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UICallButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIEraseButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UICallButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UITransferButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIAddressTextField
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +				
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			254
    +		
    +		
    +			
    +				YES
    +				
    +					DialerViewController
    +					UIViewController
    +					
    +						YES
    +						
    +							YES
    +							onAddContactClick:
    +							onAddressChange:
    +							onBackClick:
    +						
    +						
    +							YES
    +							id
    +							id
    +							id
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							onAddContactClick:
    +							onAddressChange:
    +							onBackClick:
    +						
    +						
    +							YES
    +							
    +								onAddContactClick:
    +								id
    +							
    +							
    +								onAddressChange:
    +								id
    +							
    +							
    +								onBackClick:
    +								id
    +							
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							addCallButton
    +							addContactButton
    +							addressField
    +							backButton
    +							callButton
    +							eightButton
    +							eraseButton
    +							fiveButton
    +							fourButton
    +							nineButton
    +							oneButton
    +							sevenButton
    +							sharpButton
    +							sixButton
    +							starButton
    +							threeButton
    +							transferButton
    +							twoButton
    +							zeroButton
    +						
    +						
    +							YES
    +							UICallButton
    +							UIButton
    +							UITextField
    +							UIButton
    +							UICallButton
    +							UIDigitButton
    +							UIEraseButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UITransferButton
    +							UIDigitButton
    +							UIDigitButton
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							addCallButton
    +							addContactButton
    +							addressField
    +							backButton
    +							callButton
    +							eightButton
    +							eraseButton
    +							fiveButton
    +							fourButton
    +							nineButton
    +							oneButton
    +							sevenButton
    +							sharpButton
    +							sixButton
    +							starButton
    +							threeButton
    +							transferButton
    +							twoButton
    +							zeroButton
    +						
    +						
    +							YES
    +							
    +								addCallButton
    +								UICallButton
    +							
    +							
    +								addContactButton
    +								UIButton
    +							
    +							
    +								addressField
    +								UITextField
    +							
    +							
    +								backButton
    +								UIButton
    +							
    +							
    +								callButton
    +								UICallButton
    +							
    +							
    +								eightButton
    +								UIDigitButton
    +							
    +							
    +								eraseButton
    +								UIEraseButton
    +							
    +							
    +								fiveButton
    +								UIDigitButton
    +							
    +							
    +								fourButton
    +								UIDigitButton
    +							
    +							
    +								nineButton
    +								UIDigitButton
    +							
    +							
    +								oneButton
    +								UIDigitButton
    +							
    +							
    +								sevenButton
    +								UIDigitButton
    +							
    +							
    +								sharpButton
    +								UIDigitButton
    +							
    +							
    +								sixButton
    +								UIDigitButton
    +							
    +							
    +								starButton
    +								UIDigitButton
    +							
    +							
    +								threeButton
    +								UIDigitButton
    +							
    +							
    +								transferButton
    +								UITransferButton
    +							
    +							
    +								twoButton
    +								UIDigitButton
    +							
    +							
    +								zeroButton
    +								UIDigitButton
    +							
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/DialerViewController.h
    +					
    +				
    +				
    +					UIAddressTextField
    +					UITextField
    +					
    +						IBProjectSource
    +						./Classes/UIAddressTextField.h
    +					
    +				
    +				
    +					UICallButton
    +					UIButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICallButton.h
    +					
    +				
    +				
    +					UIDigitButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIDigitButton.h
    +					
    +				
    +				
    +					UIEraseButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIEraseButton.h
    +					
    +				
    +				
    +					UILongTouchButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UILongTouchButton.h
    +					
    +				
    +				
    +					UITransferButton
    +					UIButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UITransferButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    +			
    +		
    +		YES
    +		3
    +		
    +			YES
    +			
    +				YES
    +				add_call_default.png
    +				add_call_disabled.png
    +				add_call_over.png
    +				add_contact_default.png
    +				add_contact_disabled.png
    +				add_contact_over.png
    +				back_default.png
    +				back_disabled.png
    +				back_over.png
    +				backspace_default.png
    +				backspace_disabled.png
    +				backspace_over.png
    +				call_default.png
    +				call_disabled.png
    +				call_over.png
    +				dialer_address_background.png
    +				numpad_eight_default.png
    +				numpad_eight_over.png
    +				numpad_five_default.png
    +				numpad_five_over.png
    +				numpad_four_default.png
    +				numpad_four_over.png
    +				numpad_nine_default.png
    +				numpad_nine_over.png
    +				numpad_one_default.png
    +				numpad_one_over.png
    +				numpad_seven_default.png
    +				numpad_seven_over.png
    +				numpad_sharp_default.png
    +				numpad_sharp_over.png
    +				numpad_six_default.png
    +				numpad_six_over.png
    +				numpad_star_default.png
    +				numpad_star_over.png
    +				numpad_three_default.png
    +				numpad_three_over.png
    +				numpad_two_default.png
    +				numpad_two_over.png
    +				numpad_zero_default.png
    +				numpad_zero_over.png
    +				transfer_call_default.png
    +				transfer_call_disabled.png
    +				transfer_call_over.png
    +			
    +			
    +				YES
    +				{214, 138}
    +				{214, 138}
    +				{214, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{214, 138}
    +				{214, 138}
    +				{214, 138}
    +				{640, 135}
    +				{220, 113}
    +				{220, 113}
    +				{220, 113}
    +				{220, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{220, 113}
    +				{220, 113}
    +				{220, 113}
    +				{220, 113}
    +				{214, 138}
    +				{214, 138}
    +				{214, 138}
    +			
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/DialerViewController~ipad.xib b/Classes/fr.lproj/DialerViewController~ipad.xib
    new file mode 100644
    index 000000000..42f029282
    --- /dev/null
    +++ b/Classes/fr.lproj/DialerViewController~ipad.xib
    @@ -0,0 +1,1546 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +			IBUITextField
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBIPadFramework
    +			
    +			
    +				IBFirstResponder
    +				IBIPadFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{768, 80}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBIPadFramework
    +								
    +									NSImage
    +									dialer_address_background.png
    +								
    +							
    +							
    +								
    +								290
    +								{700, 60}
    +								
    +								
    +								
    +									3
    +									MSAwAA
    +								
    +								NO
    +								NO
    +								
    +									Enter a address
    +								
    +								IBIPadFramework
    +								0
    +								
    +								Enter sip address or phone number...
    +								
    +									3
    +									MQA
    +								
    +								15
    +								
    +									1
    +									3
    +									IBCocoaTouchFramework
    +								
    +								
    +									Helvetica
    +									Helvetica
    +									0
    +									36
    +								
    +								
    +									Helvetica
    +									36
    +									16
    +								
    +							
    +							
    +								
    +								289
    +								{{698, 4}, {70, 51}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Backscape
    +								
    +								IBIPadFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								15
    +								15
    +								15
    +								15
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									backspace_over~ipad.png
    +								
    +								
    +									NSImage
    +									backspace_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									backspace_default~ipad.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +						
    +						{768, 80}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwAA
    +							
    +								2
    +							
    +						
    +						YES
    +						IBIPadFramework
    +					
    +					
    +						
    +						268
    +						
    +							
    +								
    +								292
    +								{{0, 11}, {107, 54}}
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								
    +									1
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_one_over.png
    +								
    +								
    +									NSImage
    +									numpad_one_default.png
    +								
    +								
    +									Helvetica-Bold
    +									Helvetica
    +									2
    +									15
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 11}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									2
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_two_over.png
    +								
    +								
    +									NSImage
    +									numpad_two_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 11}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									3
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_three_over.png
    +								
    +								
    +									NSImage
    +									numpad_three_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 73}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									4
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_four_over.png
    +								
    +								
    +									NSImage
    +									numpad_four_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 73}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									5
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_five_over.png
    +								
    +								
    +									NSImage
    +									numpad_five_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 73}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									6
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_six_over.png
    +								
    +								
    +									NSImage
    +									numpad_six_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 135}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									7
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_seven_over.png
    +								
    +								
    +									NSImage
    +									numpad_seven_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 135}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									8
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_eight_over.png
    +								
    +								
    +									NSImage
    +									numpad_eight_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 135}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									9
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_nine_over.png
    +								
    +								
    +									NSImage
    +									numpad_nine_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 197}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									Star
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_star_over.png
    +								
    +								
    +									NSImage
    +									numpad_star_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 197}, {106, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									0
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_zero_over.png
    +								
    +								
    +									NSImage
    +									numpad_zero_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 197}, {107, 54}}
    +								
    +								
    +								NO
    +								NO
    +								
    +									Sharp
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_sharp_over.png
    +								
    +								
    +									NSImage
    +									numpad_sharp_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 640}, {320, 260}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						IBIPadFramework
    +					
    +					
    +						
    +						265
    +						
    +							
    +								
    +								292
    +								{126, 85}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add to Contact
    +								
    +								IBIPadFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									add_contact_over~ipad.png
    +								
    +								
    +									NSImage
    +									add_contact_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									add_contact_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{126, 85}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									back_over~ipad.png
    +								
    +								
    +									NSImage
    +									back_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									back_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{126, 0}, {186, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Call
    +								
    +								IBIPadFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									call_over~ipad.png
    +								
    +								
    +									NSImage
    +									call_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									call_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{126, 0}, {186, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add call
    +								
    +								IBIPadFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									add_call_over~ipad.png
    +								
    +								
    +									NSImage
    +									add_call_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									add_call_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{126, 0}, {186, 85}}
    +								
    +								_NS:9
    +								NO
    +								
    +									Transfer Call
    +								
    +								IBIPadFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									transfer_call_over~ipad.png
    +								
    +								
    +									NSImage
    +									transfer_call_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									transfer_call_default~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{456, 815}, {312, 85}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwAA
    +							
    +						
    +						IBIPadFramework
    +					
    +				
    +				{768, 900}
    +				
    +				_NS:9
    +				
    +				IBIPadFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						addCallButton
    +						
    +						
    +					
    +					42
    +				
    +				
    +					
    +						addContactButton
    +						
    +						
    +					
    +					43
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					44
    +				
    +				
    +					
    +						callButton
    +						
    +						
    +					
    +					45
    +				
    +				
    +					
    +						eightButton
    +						
    +						
    +					
    +					47
    +				
    +				
    +					
    +						eraseButton
    +						
    +						
    +					
    +					48
    +				
    +				
    +					
    +						fiveButton
    +						
    +						
    +					
    +					49
    +				
    +				
    +					
    +						fourButton
    +						
    +						
    +					
    +					50
    +				
    +				
    +					
    +						nineButton
    +						
    +						
    +					
    +					51
    +				
    +				
    +					
    +						oneButton
    +						
    +						
    +					
    +					52
    +				
    +				
    +					
    +						sevenButton
    +						
    +						
    +					
    +					53
    +				
    +				
    +					
    +						sharpButton
    +						
    +						
    +					
    +					54
    +				
    +				
    +					
    +						sixButton
    +						
    +						
    +					
    +					55
    +				
    +				
    +					
    +						starButton
    +						
    +						
    +					
    +					56
    +				
    +				
    +					
    +						threeButton
    +						
    +						
    +					
    +					57
    +				
    +				
    +					
    +						transferButton
    +						
    +						
    +					
    +					58
    +				
    +				
    +					
    +						twoButton
    +						
    +						
    +					
    +					59
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					60
    +				
    +				
    +					
    +						zeroButton
    +						
    +						
    +					
    +					61
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					69
    +				
    +				
    +					
    +						onAddressChange:
    +						
    +						
    +						18
    +					
    +					65
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					35
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					29
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					36
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					37
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					32
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					31
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					30
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					33
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					34
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					41
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					40
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					68
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					38
    +				
    +				
    +					
    +						onAddContactClick:
    +						
    +						
    +						7
    +					
    +					63
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					39
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						2
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						toolBar
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						pad
    +					
    +					
    +						5
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						dialer
    +					
    +					
    +						6
    +						
    +						
    +						addressField
    +					
    +					
    +						7
    +						
    +						
    +						background
    +					
    +					
    +						8
    +						
    +						
    +						*
    +					
    +					
    +						9
    +						
    +						
    +						6
    +					
    +					
    +						10
    +						
    +						
    +						0
    +					
    +					
    +						11
    +						
    +						
    +						#
    +					
    +					
    +						12
    +						
    +						
    +						9
    +					
    +					
    +						13
    +						
    +						
    +						8
    +					
    +					
    +						14
    +						
    +						
    +						7
    +					
    +					
    +						15
    +						
    +						
    +						4
    +					
    +					
    +						16
    +						
    +						
    +						5
    +					
    +					
    +						17
    +						
    +						
    +						3
    +					
    +					
    +						18
    +						
    +						
    +						2
    +					
    +					
    +						19
    +						
    +						
    +						1
    +					
    +					
    +						20
    +						
    +						
    +						transferButton
    +					
    +					
    +						21
    +						
    +						
    +						callButton
    +					
    +					
    +						22
    +						
    +						
    +						backButton
    +					
    +					
    +						23
    +						
    +						
    +						addCallButton
    +					
    +					
    +						24
    +						
    +						
    +						addContactButton
    +					
    +					
    +						25
    +						
    +						
    +						backspaceButton
    +					
    +				
    +			
    +			
    +				DialerViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UITransferButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UICallButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UICallButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIEraseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIAddressTextField
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			69
    +		
    +		
    +			
    +				
    +					DialerViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onAddContactClick:
    +							id
    +						
    +						
    +							onAddressChange:
    +							id
    +						
    +						
    +							onBackClick:
    +							id
    +						
    +					
    +					
    +						UICallButton
    +						UIButton
    +						UITextField
    +						UIButton
    +						UICallButton
    +						UIDigitButton
    +						UIEraseButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UITransferButton
    +						UIDigitButton
    +						UIDigitButton
    +					
    +					
    +						
    +							addCallButton
    +							UICallButton
    +						
    +						
    +							addContactButton
    +							UIButton
    +						
    +						
    +							addressField
    +							UITextField
    +						
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							callButton
    +							UICallButton
    +						
    +						
    +							eightButton
    +							UIDigitButton
    +						
    +						
    +							eraseButton
    +							UIEraseButton
    +						
    +						
    +							fiveButton
    +							UIDigitButton
    +						
    +						
    +							fourButton
    +							UIDigitButton
    +						
    +						
    +							nineButton
    +							UIDigitButton
    +						
    +						
    +							oneButton
    +							UIDigitButton
    +						
    +						
    +							sevenButton
    +							UIDigitButton
    +						
    +						
    +							sharpButton
    +							UIDigitButton
    +						
    +						
    +							sixButton
    +							UIDigitButton
    +						
    +						
    +							starButton
    +							UIDigitButton
    +						
    +						
    +							threeButton
    +							UIDigitButton
    +						
    +						
    +							transferButton
    +							UITransferButton
    +						
    +						
    +							twoButton
    +							UIDigitButton
    +						
    +						
    +							zeroButton
    +							UIDigitButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/DialerViewController.h
    +					
    +				
    +				
    +					UIAddressTextField
    +					UITextField
    +					
    +						IBProjectSource
    +						./Classes/UIAddressTextField.h
    +					
    +				
    +				
    +					UICallButton
    +					UIButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICallButton.h
    +					
    +				
    +				
    +					UIDigitButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIDigitButton.h
    +					
    +				
    +				
    +					UIEraseButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIEraseButton.h
    +					
    +				
    +				
    +					UILongTouchButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UILongTouchButton.h
    +					
    +				
    +				
    +					UITransferButton
    +					UIButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UITransferButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBIPadFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{371, 170}
    +			{371, 170}
    +			{371, 170}
    +			{251, 170}
    +			{251, 170}
    +			{251, 170}
    +			{251, 170}
    +			{251, 170}
    +			{251, 170}
    +			{81, 43}
    +			{81, 43}
    +			{81, 43}
    +			{371, 170}
    +			{371, 170}
    +			{371, 170}
    +			{640, 135}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{371, 170}
    +			{371, 170}
    +			{371, 170}
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/FirstLoginViewController.xib b/Classes/fr.lproj/FirstLoginViewController.xib
    new file mode 100644
    index 000000000..097fbb335
    --- /dev/null
    +++ b/Classes/fr.lproj/FirstLoginViewController.xib
    @@ -0,0 +1,575 @@
    +
    +
    +	
    +		784
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			YES
    +			IBUIButton
    +			IBUIActivityIndicatorView
    +			IBUIView
    +			IBUITextField
    +			IBProxyObject
    +		
    +		
    +			YES
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			YES
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					YES
    +					
    +						
    +						292
    +						{{33, 312}, {255, 50}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Login
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Login
    +						
    +							3
    +							MC4zMzMzMzMzMzMzAA
    +						
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							button_background_over.png
    +						
    +						
    +							NSImage
    +							button_background_default.png
    +						
    +						
    +							2
    +							20
    +						
    +						
    +							Helvetica-Bold
    +							20
    +							16
    +						
    +					
    +					
    +						
    +						-2147483356
    +						{{60, 420}, {200, 37}}
    +						
    +						NO
    +						NO
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						
    +							3
    +							MQA
    +						
    +						
    +							1
    +							MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA
    +						
    +						
    +						
    +							Helvetica-Bold
    +							Helvetica
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +					
    +						
    +						292
    +						{{60, 170}, {200, 31}}
    +						
    +						
    +						NO
    +						NO
    +						
    +							Username
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Username
    +						
    +							3
    +							MAA
    +							
    +								2
    +							
    +						
    +						YES
    +						17
    +						
    +							1
    +							IBCocoaTouchFramework
    +						
    +						
    +							NSImage
    +							field_background.png
    +						
    +						
    +							1
    +							14
    +						
    +						
    +							Helvetica
    +							14
    +							16
    +						
    +					
    +					
    +						
    +						292
    +						{{60, 220}, {200, 31}}
    +						
    +						
    +						NO
    +						NO
    +						
    +							Password
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						YES
    +						17
    +						
    +							1
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							YES
    +							
    +								
    +								292
    +								{{142, 211}, {37, 37}}
    +								
    +								
    +								NO
    +								NO
    +								NO
    +								IBCocoaTouchFramework
    +								NO
    +								YES
    +								0
    +							
    +						
    +						{320, 460}
    +						
    +						
    +						
    +							3
    +							MSAwLjY2AA
    +							
    +						
    +						NO
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				_NS:9
    +				
    +					3
    +					MCAwAA
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				YES
    +				
    +					
    +						view
    +						
    +						
    +					
    +					56
    +				
    +				
    +					
    +						siteButton
    +						
    +						
    +					
    +					58
    +				
    +				
    +					
    +						usernameField
    +						
    +						
    +					
    +					59
    +				
    +				
    +					
    +						passwordField
    +						
    +						
    +					
    +					60
    +				
    +				
    +					
    +						loginButton
    +						
    +						
    +					
    +					65
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					57
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					39
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					17
    +				
    +				
    +					
    +						onSiteClick:
    +						
    +						
    +						7
    +					
    +					63
    +				
    +				
    +					
    +						onLoginClick:
    +						
    +						
    +						7
    +					
    +					66
    +				
    +			
    +			
    +				
    +					YES
    +					
    +						0
    +						
    +							YES
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						55
    +						
    +						
    +							YES
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						35
    +						
    +						
    +						siteButton
    +					
    +					
    +						8
    +						
    +						
    +						passwordField
    +					
    +					
    +						6
    +						
    +						
    +						usernameField
    +					
    +					
    +						64
    +						
    +						
    +						loginButton
    +					
    +					
    +						31
    +						
    +						
    +							YES
    +							
    +						
    +						
    +						waitView
    +					
    +					
    +						32
    +						
    +						
    +						activityIndicator
    +					
    +				
    +			
    +			
    +				YES
    +				
    +					YES
    +					-1.CustomClassName
    +					-1.IBPluginDependency
    +					-2.CustomClassName
    +					-2.IBPluginDependency
    +					31.IBPluginDependency
    +					32.IBPluginDependency
    +					35.IBPluginDependency
    +					55.IBPluginDependency
    +					6.IBPluginDependency
    +					64.IBPluginDependency
    +					64.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					8.IBPluginDependency
    +				
    +				
    +					YES
    +					FirstLoginViewController
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					UIResponder
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			66
    +		
    +		
    +			
    +				YES
    +				
    +					FirstLoginViewController
    +					UIViewController
    +					
    +						YES
    +						
    +							YES
    +							onLoginClick:
    +							onSiteClick:
    +						
    +						
    +							YES
    +							id
    +							id
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							onLoginClick:
    +							onSiteClick:
    +						
    +						
    +							YES
    +							
    +								onLoginClick:
    +								id
    +							
    +							
    +								onSiteClick:
    +								id
    +							
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							loginButton
    +							passwordField
    +							siteButton
    +							usernameField
    +							waitView
    +						
    +						
    +							YES
    +							UIButton
    +							UITextField
    +							UIButton
    +							UITextField
    +							UIView
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							loginButton
    +							passwordField
    +							siteButton
    +							usernameField
    +							waitView
    +						
    +						
    +							YES
    +							
    +								loginButton
    +								UIButton
    +							
    +							
    +								passwordField
    +								UITextField
    +							
    +							
    +								siteButton
    +								UIButton
    +							
    +							
    +								usernameField
    +								UITextField
    +							
    +							
    +								waitView
    +								UIView
    +							
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/FirstLoginViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    +			
    +		
    +		YES
    +		3
    +		
    +			YES
    +			
    +				YES
    +				button_background_default.png
    +				button_background_over.png
    +				field_background.png
    +			
    +			
    +				YES
    +				{550, 101}
    +				{550, 101}
    +				{542, 88}
    +			
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/HistoryDetailsViewController.xib b/Classes/fr.lproj/HistoryDetailsViewController.xib
    new file mode 100644
    index 000000000..1c58703c5
    --- /dev/null
    +++ b/Classes/fr.lproj/HistoryDetailsViewController.xib
    @@ -0,0 +1,919 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +			IBUILabel
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{160, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									history_details_back_over.png
    +								
    +								
    +									NSImage
    +									history_details_back_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								289
    +								{{160, 0}, {160, 44}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add to contact
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									history_details_add_over.png
    +								
    +								
    +									NSImage
    +									history_details_add_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 58}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						295
    +						
    +							
    +								
    +								292
    +								{320, 100}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MQA
    +								
    +								
    +									1
    +									MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-13, -5}, {131, 107}}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_shadow_small.png
    +								
    +							
    +							
    +								
    +								292
    +								{{20, 6}, {65, 65}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Contact's avatar
    +									
    +									
    +								
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_unknown_small.png
    +								
    +							
    +							
    +								
    +								290
    +								{{101, 37}, {199, 43}}
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Contact's name
    +								
    +								IBCocoaTouchFramework
    +								Contact1
    +								
    +									3
    +									MC4zMzMzMzMzMzMzAA
    +								
    +								
    +								0
    +								10
    +								
    +									1
    +									22
    +								
    +								
    +									Helvetica
    +									22
    +									16
    +								
    +							
    +						
    +						{{0, 44}, {320, 100}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						295
    +						
    +							
    +								
    +								292
    +								{49, 21}
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									
    +								
    +								IBCocoaTouchFramework
    +								Date:
    +								
    +								0
    +								10
    +								
    +									2
    +									17
    +								
    +								
    +									Helvetica-Bold
    +									17
    +									16
    +								
    +							
    +							
    +								
    +								290
    +								{{57, 0}, {223, 21}}
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Call date
    +									
    +								
    +								IBCocoaTouchFramework
    +								11/11/2011 at 10:01
    +								
    +								0
    +								10
    +								
    +									1
    +									17
    +								
    +								
    +									Helvetica
    +									17
    +									16
    +								
    +							
    +						
    +						{{20, 166}, {280, 21}}
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						295
    +						
    +							
    +								
    +								292
    +								{80, 21}
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									
    +								
    +								IBCocoaTouchFramework
    +								Duration:
    +								
    +								0
    +								10
    +								
    +								
    +							
    +							
    +								
    +								290
    +								{{88, 0}, {192, 21}}
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Call duration
    +									
    +								
    +								IBCocoaTouchFramework
    +								9:05
    +								
    +								0
    +								10
    +								
    +								
    +							
    +						
    +						{{20, 195}, {280, 21}}
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						295
    +						
    +							
    +								
    +								292
    +								{57, 21}
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									
    +								
    +								IBCocoaTouchFramework
    +								Type:
    +								
    +								0
    +								10
    +								
    +								
    +							
    +							
    +								
    +								290
    +								{{65, 0}, {215, 21}}
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Call type
    +									
    +								
    +								IBCocoaTouchFramework
    +								outgoing call
    +								
    +								0
    +								10
    +								
    +								
    +							
    +						
    +						{{20, 224}, {280, 21}}
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						293
    +						{{33, 323}, {255, 50}}
    +						
    +						_NS:9
    +						NO
    +						
    +							Callback
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						NO
    +						10
    +						10
    +						10
    +						10
    +						0102030405
    +						
    +						
    +						
    +							NSImage
    +							button_background_over.png
    +						
    +						
    +							NSImage
    +							button_background_default.png
    +						
    +						
    +							2
    +							20
    +						
    +						
    +							Helvetica-Bold
    +							20
    +							16
    +						
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					10
    +				
    +				
    +					
    +						addressButton
    +						
    +						
    +					
    +					41
    +				
    +				
    +					
    +						addressLabel
    +						
    +						
    +					
    +					42
    +				
    +				
    +					
    +						avatarImage
    +						
    +						
    +					
    +					43
    +				
    +				
    +					
    +						dateHeaderLabel
    +						
    +						
    +					
    +					44
    +				
    +				
    +					
    +						dateLabel
    +						
    +						
    +					
    +					45
    +				
    +				
    +					
    +						durationHeaderLabel
    +						
    +						
    +					
    +					46
    +				
    +				
    +					
    +						durationLabel
    +						
    +						
    +					
    +					47
    +				
    +				
    +					
    +						typeHeaderLabel
    +						
    +						
    +					
    +					48
    +				
    +				
    +					
    +						typeLabel
    +						
    +						
    +					
    +					49
    +				
    +				
    +					
    +						addContactButton
    +						
    +						
    +					
    +					52
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					11
    +				
    +				
    +					
    +						onAddressClick:
    +						
    +						
    +						7
    +					
    +					39
    +				
    +				
    +					
    +						onContactClick:
    +						
    +						
    +						7
    +					
    +					40
    +				
    +				
    +					
    +						onAddContactClick:
    +						
    +						
    +						7
    +					
    +					53
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						6
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						navigationBar
    +					
    +					
    +						8
    +						
    +						
    +						background
    +					
    +					
    +						9
    +						
    +						
    +						backButton
    +					
    +					
    +						29
    +						
    +						
    +							
    +							
    +						
    +						
    +						dateView
    +					
    +					
    +						27
    +						
    +						
    +						dateHeaderLabel
    +					
    +					
    +						28
    +						
    +						
    +						dateLabel
    +					
    +					
    +						30
    +						
    +						
    +							
    +							
    +						
    +						
    +						durationView
    +					
    +					
    +						31
    +						
    +						
    +						durationHeaderLabel
    +					
    +					
    +						32
    +						
    +						
    +						durationLabel
    +					
    +					
    +						33
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						headerView
    +					
    +					
    +						25
    +						
    +						
    +						addressLabel
    +					
    +					
    +						23
    +						
    +						
    +						avatarImage
    +					
    +					
    +						24
    +						
    +						
    +						avatarShadowBackground
    +					
    +					
    +						34
    +						
    +						
    +							
    +							
    +						
    +						
    +						typeView
    +					
    +					
    +						35
    +						
    +						
    +						typeLabel
    +					
    +					
    +						36
    +						
    +						
    +						typeHeaderLabel
    +					
    +					
    +						37
    +						
    +						
    +						addressButton
    +					
    +					
    +						38
    +						
    +						
    +						headerButton
    +					
    +					
    +						50
    +						
    +						
    +						addButton
    +					
    +				
    +			
    +			
    +				HistoryDetailsViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			53
    +		
    +		
    +			
    +				
    +					HistoryDetailsViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onAddContactClick:
    +							id
    +						
    +						
    +							onAddressClick:
    +							id
    +						
    +						
    +							onBackClick:
    +							id
    +						
    +						
    +							onContactClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIButton
    +						UILabel
    +						UIImageView
    +						UILabel
    +						UILabel
    +						UILabel
    +						UILabel
    +						UILabel
    +						UILabel
    +					
    +					
    +						
    +							addContactButton
    +							UIButton
    +						
    +						
    +							addressButton
    +							UIButton
    +						
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +						
    +							dateHeaderLabel
    +							UILabel
    +						
    +						
    +							dateLabel
    +							UILabel
    +						
    +						
    +							durationHeaderLabel
    +							UILabel
    +						
    +						
    +							durationLabel
    +							UILabel
    +						
    +						
    +							typeHeaderLabel
    +							UILabel
    +						
    +						
    +							typeLabel
    +							UILabel
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/HistoryDetailsViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{262, 214}
    +			{131, 131}
    +			{550, 101}
    +			{550, 101}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 117}
    +			{5, 117}
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/HistoryViewController.xib b/Classes/fr.lproj/HistoryViewController.xib
    new file mode 100644
    index 000000000..28d489ce8
    --- /dev/null
    +++ b/Classes/fr.lproj/HistoryViewController.xib
    @@ -0,0 +1,584 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIImageView
    +			IBUIButton
    +			IBUITableView
    +			IBUIView
    +			IBUITableViewController
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{80, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Delete all
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								Del
    +								
    +									3
    +									MQA
    +								
    +								
    +									1
    +									MCAwIDAAA
    +								
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								292
    +								{{80, 0}, {80, 44}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									All contacts filter
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									history_all_selected.png
    +								
    +								
    +								
    +									NSImage
    +									history_all_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{160, 0}, {80, 44}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Missed contacts filter
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									history_missed_selected.png
    +								
    +								
    +								
    +									NSImage
    +									history_missed_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								289
    +								{{240, 0}, {80, 44}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Edit
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									history_edit_over.png
    +								
    +								
    +									NSImage
    +									history_ok_default.png
    +								
    +								
    +									NSImage
    +									history_edit_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 58}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						274
    +						{{0, 44}, {320, 416}}
    +						
    +						_NS:9
    +						
    +							1
    +							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						YES
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						1
    +						0
    +						YES
    +						44
    +						22
    +						22
    +					
    +				
    +				{320, 460}
    +				
    +				_NS:9
    +				
    +					3
    +					MQA
    +					
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				NO
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					16
    +				
    +				
    +					
    +						tableController
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						allButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						missedButton
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						tableView
    +						
    +						
    +					
    +					31
    +				
    +				
    +					
    +						editButton
    +						
    +						
    +					
    +					33
    +				
    +				
    +					
    +						deleteButton
    +						
    +						
    +					
    +					36
    +				
    +				
    +					
    +						onAllClick:
    +						
    +						
    +						7
    +					
    +					29
    +				
    +				
    +					
    +						onMissedClick:
    +						
    +						
    +						7
    +					
    +					30
    +				
    +				
    +					
    +						onEditClick:
    +						
    +						
    +						7
    +					
    +					32
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					23
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					24
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					25
    +				
    +				
    +					
    +						onDeleteClick:
    +						
    +						
    +						7
    +					
    +					37
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						2
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						toolsBar
    +					
    +					
    +						4
    +						
    +						
    +						allButton
    +					
    +					
    +						5
    +						
    +						
    +						missedButton
    +					
    +					
    +						6
    +						
    +						
    +						editButton
    +					
    +					
    +						17
    +						
    +						
    +						tableView
    +					
    +					
    +						18
    +						
    +						
    +						
    +						tableController
    +					
    +					
    +						34
    +						
    +						
    +						background
    +					
    +					
    +						35
    +						
    +						
    +						delAllButton
    +					
    +				
    +			
    +			
    +				HistoryViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				HistoryTableViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			37
    +		
    +		
    +			
    +				
    +					HistoryTableViewController
    +					UITableViewController
    +					
    +						IBProjectSource
    +						./Classes/HistoryTableViewController.h
    +					
    +				
    +				
    +					HistoryViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onAllClick:
    +							id
    +						
    +						
    +							onDeleteClick:
    +							id
    +						
    +						
    +							onEditClick:
    +							id
    +						
    +						
    +							onMissedClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIButton
    +						UIToggleButton
    +						UIButton
    +						HistoryTableViewController
    +						UITableView
    +					
    +					
    +						
    +							allButton
    +							UIButton
    +						
    +						
    +							deleteButton
    +							UIButton
    +						
    +						
    +							editButton
    +							UIToggleButton
    +						
    +						
    +							missedButton
    +							UIButton
    +						
    +						
    +							tableController
    +							HistoryTableViewController
    +						
    +						
    +							tableView
    +							UITableView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/HistoryViewController.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{213, 117}
    +			{213, 117}
    +			{160, 88}
    +			{160, 88}
    +			{213, 117}
    +			{213, 117}
    +			{160, 88}
    +			{5, 117}
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/InCallViewController.xib b/Classes/fr.lproj/InCallViewController.xib
    new file mode 100644
    index 000000000..06a646eea
    --- /dev/null
    +++ b/Classes/fr.lproj/InCallViewController.xib
    @@ -0,0 +1,587 @@
    +
    +
    +	
    +		784
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			YES
    +			IBUITableView
    +			IBUIButton
    +			IBUIActivityIndicatorView
    +			IBUIView
    +			IBUITableViewController
    +			IBProxyObject
    +		
    +		
    +			YES
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			YES
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					YES
    +					
    +						
    +						274
    +						
    +							YES
    +							
    +								
    +								301
    +								{{-1000, -1000}, {2000, 2000}}
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MAA
    +								
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								274
    +								{320, 460}
    +								
    +								
    +								_NS:196
    +								
    +									3
    +									MCAwAA
    +								
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								283
    +								{{220, 360}, {100, 100}}
    +								
    +								
    +								
    +								1
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								301
    +								{{141, 212}, {37, 37}}
    +								
    +								
    +								_NS:1030
    +								NO
    +								IBCocoaTouchFramework
    +								NO
    +								YES
    +								0
    +							
    +						
    +						{320, 460}
    +						
    +						
    +						_NS:196
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						274
    +						{{0, -10}, {320, 480}}
    +						
    +						
    +						_NS:418
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						10
    +						25
    +						0.0
    +						0.0
    +						NO
    +						NO
    +						10
    +						25
    +						0.0
    +						0.0
    +						1
    +						1
    +						
    +						0
    +						NO
    +						YES
    +						44
    +						10
    +						10
    +					
    +					
    +						
    +						-2147483356
    +						{{0, 23}, {85, 33}}
    +						
    +						_NS:9
    +						NO
    +						
    +							Switch camera
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						NO
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							switch_camera_over.png
    +						
    +						
    +							NSImage
    +							switch_camera_default.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				NO
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				YES
    +				
    +					
    +						view
    +						
    +						
    +					
    +					23
    +				
    +				
    +					
    +						videoGroup
    +						
    +						
    +					
    +					129
    +				
    +				
    +					
    +						videoView
    +						
    +						
    +					
    +					133
    +				
    +				
    +					
    +						videoWaitingForFirstImage
    +						
    +						
    +					
    +					145
    +				
    +				
    +					
    +						videoPreview
    +						
    +						
    +					
    +					130
    +				
    +				
    +					
    +						videoCameraSwitch
    +						
    +						
    +					
    +					161
    +				
    +				
    +					
    +						callTableController
    +						
    +						
    +					
    +					167
    +				
    +				
    +					
    +						callTableView
    +						
    +						
    +					
    +					109
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					169
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					168
    +				
    +				
    +					
    +						preview
    +						
    +						
    +					
    +					172
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					166
    +				
    +			
    +			
    +				
    +					YES
    +					
    +						0
    +						
    +							YES
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						9
    +						
    +						
    +							YES
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						126
    +						
    +						
    +							YES
    +							
    +							
    +							
    +							
    +						
    +						
    +						video
    +					
    +					
    +						132
    +						
    +						
    +							YES
    +						
    +						
    +						display
    +					
    +					
    +						144
    +						
    +						
    +						waitIndicator
    +					
    +					
    +						127
    +						
    +						
    +						preview
    +					
    +					
    +						160
    +						
    +						
    +						videoCameraSwitch
    +					
    +					
    +						162
    +						
    +						
    +							YES
    +						
    +						
    +						callTableController
    +					
    +					
    +						173
    +						
    +						
    +						background
    +					
    +					
    +						106
    +						
    +						
    +						callTableView
    +					
    +				
    +			
    +			
    +				YES
    +				
    +					YES
    +					-1.CustomClassName
    +					-1.IBPluginDependency
    +					-2.CustomClassName
    +					-2.IBPluginDependency
    +					106.IBPluginDependency
    +					126.IBPluginDependency
    +					127.IBPluginDependency
    +					132.IBPluginDependency
    +					144.IBPluginDependency
    +					160.CustomClassName
    +					160.IBPluginDependency
    +					160.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					162.CustomClassName
    +					162.IBPluginDependency
    +					173.IBPluginDependency
    +					9.IBPluginDependency
    +				
    +				
    +					YES
    +					InCallViewController
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					UIResponder
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					UICamSwitch
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					InCallTableViewController
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			173
    +		
    +		
    +			
    +				YES
    +				
    +					InCallTableViewController
    +					UITableViewController
    +					
    +						IBProjectSource
    +						./Classes/InCallTableViewController.h
    +					
    +				
    +				
    +					InCallViewController
    +					UIViewController
    +					
    +						YES
    +						
    +							YES
    +							callTableController
    +							callTableView
    +							testVideoView
    +							videoCameraSwitch
    +							videoGroup
    +							videoPreview
    +							videoView
    +							videoWaitingForFirstImage
    +						
    +						
    +							YES
    +							InCallTableViewController
    +							UITableView
    +							UIView
    +							UICamSwitch
    +							UIView
    +							UIView
    +							UIView
    +							UIActivityIndicatorView
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							callTableController
    +							callTableView
    +							testVideoView
    +							videoCameraSwitch
    +							videoGroup
    +							videoPreview
    +							videoView
    +							videoWaitingForFirstImage
    +						
    +						
    +							YES
    +							
    +								callTableController
    +								InCallTableViewController
    +							
    +							
    +								callTableView
    +								UITableView
    +							
    +							
    +								testVideoView
    +								UIView
    +							
    +							
    +								videoCameraSwitch
    +								UICamSwitch
    +							
    +							
    +								videoGroup
    +								UIView
    +							
    +							
    +								videoPreview
    +								UIView
    +							
    +							
    +								videoView
    +								UIView
    +							
    +							
    +								videoWaitingForFirstImage
    +								UIActivityIndicatorView
    +							
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/InCallViewController.h
    +					
    +				
    +				
    +					UICamSwitch
    +					UIButton
    +					
    +						preview
    +						UIView
    +					
    +					
    +						preview
    +						
    +							preview
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICamSwitch.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    +			
    +		
    +		YES
    +		3
    +		
    +			YES
    +			
    +				YES
    +				switch_camera_default.png
    +				switch_camera_over.png
    +			
    +			
    +				YES
    +				{170, 65}
    +				{170, 65}
    +			
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/IncomingCallViewController.xib b/Classes/fr.lproj/IncomingCallViewController.xib
    new file mode 100644
    index 000000000..a58703eda
    --- /dev/null
    +++ b/Classes/fr.lproj/IncomingCallViewController.xib
    @@ -0,0 +1,4896 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +			IBUILabel
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						274
    +						{320, 460}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							background.png
    +						
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{{0, 49}, {320, 63}}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									cell_call_first.png
    +								
    +							
    +							
    +								
    +								290
    +								{320, 68}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Incoming call
    +									
    +								
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									header_incoming.png
    +								
    +							
    +							
    +								
    +								292
    +								{{10, 53}, {300, 51}}
    +								
    +								
    +								_NS:9
    +								NO
    +								NO
    +								7
    +								NO
    +								
    +									Contact's name
    +								
    +								IBCocoaTouchFramework
    +								0102030405
    +								
    +									10
    +									
    +										549453824
    +										{256, 256}
    +										
    +											
    +												
    +												
    +													
    +														TU0AKgAEAAh1eIH/cHJ5/3Bzff9vcXX/bnB3/3Byef9vcXX/bG51/2xudf9ucHf/cHN9/2dqdP9ucXv/
    +cHJ5/3Bzff9qbHP/b3F1/3N1fP9sbnX/am13/2ptd/9sbnX/am13/3l7gf91d33/bG95/2xudf9sb3n/
    +bG95/2dqdP9qbXf/c3V8/3Bzff93eoP/bG51/3Bzff9sbnX/dXd9/2dqdP9qbHP/bG51/2psc/9sb3n/
    +am13/2ptd/9sb3n/bG51/3V3ff97fYP/YmVu/25xe/9sb3n/c3Z//2psc/9zdXz/cHN9/2dqcf9qbHP/
    +YmVu/2dqdP9nanH/am13/2xvef91eIH/Z2p0/25xe/91d33/bG51/25wd/92eHz/dXd9/29xdf9ucHf/
    +eHl9/2xudf9ucHf/bG95/3Bzff9sb3n/bnF7/3l7gf9zdn//c3Z//3N2f/91eIH/c3V8/3Byef9nanT/
    +bnB3/3Byef91d33/dHZ8/2psc/9sbnX/Z2p0/3N1fP9qbXf/cXN6/2psdf9wcnv/dnd9/25xe/9ucHf/
    +bnB3/2ptd/92eH//a254/3Fzev9sb3n/cHJ5/25wd/9ucHf/cHN9/25wd/9wcnn/dnh8/2xudf93eX//
    +dXd9/2dqdP9ucXv/dXd9/3N2f/9zdXz/Z2px/2xudf9ucXv/am13/3Bzff9zdXz/cHN9/2psc/9qbXf/
    +bG51/2Jlbv9qbXf/aGp0/2hqcP9rbnX/cnV//29yfP9ucXv/bnF7/25xe/9zdn//bXB1/2xvef9qbXb/
    +Zmly/2Jlbv9kZ3H/Zmhu/2Rncf9kZ3H/Zmlz/2Zpc/9kZ3H/bnB3/2Jlbv9nanT/ZGdx/2Zobv9zdXz/
    +ZGdx/2xvef9maXP/foCG/2xvef9ucXv/bG95/25wd/9wc33/b3F1/3l8hv91eIH/cHN9/3N1fP9sb3n/
    +d3qD/25wd/9zdn//cHJ5/3Bzff9wcnn/cHN9/3Bzff9ucXv/d3l//2ptd/9ucXv/c3Z//3N2f/9wcnn/
    +bnF7/3N2f/9ucHf/cHJ5/3Bzff9sb3n/cHJ5/25xe/9wc33/bnF7/3Byef9zdXz/bnB3/25xe/9zdXz/
    +d3l//3N2f/9sb3n/bnB3/3Bzff9sb3n/bnF7/25wd/9wcnn/cHJ5/3Byef9sbnX/c3V8/2psc/9zdXz/
    +dnh8/3Byef9kZ3H/am13/25xe/9sb3n/bnF7/25xe/9zdn//Z2p0/2xudf95e4H/Z2p0/2xvef9ucXv/
    +bG51/2psc/9ucXv/cHJ5/2psc/9qbXf/Z2px/2ptd/9qbHP/cHN9/2ptd/9sbnX/bG51/3V3ff9wcnn/
    +c3V8/3Byef9wc33/d3l//29xdf9zdXz/bnB3/2ptd/9qbXf/Z2px/2Zpc/9kZ3H/am13/2xvef9nanH/
    +cHJ5/29xdf9wcnn/Z2px/2xudf9zdXz/b3F1/25wd/9ucHf/bnB3/25wd/9+gIb/eHl9/3N1fP9wcnn/
    +cHJ5/3Byef9qbHP/bG51/3Z4fP9wcnn/dXiB/2xudf9ucXv/bG51/3Byef9nanH/ZGdx/2Zpc/9nanH/
    +Z2px/2Zobv9iZW7/Zmhu/2Zobv9qbXf/c3Z//1lcZf9maXP/Z2p0/3Byef9kZ3H/bG95/2xvef9qbHP/
    +am13/2Zpc/9qbXf/bG51/2xvef9wc33/dXd9/2dqdP9sb3n/dXd9/2dqdP9ucHf/c3V8/3V3ff9qbXf/
    +bnF7/3d5f/9ucHf/bG51/2xudf9wc33/bG51/2xudf91d33/bnB3/3Byef9wcnn/cHJ5/29xdf9ucHf/
    +Z2p0/3Byef9wc33/eXuB/3d5f/9sb3n/bnF7/2psc/9zdXz/b3F5/29yev9qbHX/bnB4/3d5f/9wcnn/
    +bnB3/2xudf9ucHf/dHZ7/25wd/9ucXn/bW92/3Byef9ucHf/bG51/3N1fP9ucXv/cHN9/3V3ff9qbHP/
    +dnh8/3V3ff9nanH/bnB3/3V3ff9ucHf/cHJ5/2Zpc/9qbXf/bG95/2xudf9sb3n/dXd9/3Z4fP9vcXX/
    +bnF7/25wd/9nanH/c3Z//3Bzff9wcnn/bnB3/3R2ff9ucXr/bnF7/3Bzff9sb3n/dXd9/25xev90dnz/
    +dXiA/3V4gP9wcnn/c3Z//3Bzff9ucXv/cHN9/3N2f/9zdn//bG95/3d6g/9sb3n/c3Z//3Bzff9ucHf/
    +d3l//2dqcf9qbXf/Z2p0/3d6g/9sbnX/am13/2Zpc/9nanT/am13/2Zobv9zdXz/bnB3/2dqdP9kZ3H/
    +ZGZs/3Byef9gY2z/Z2px/2Rncf9maG7/YGNs/2Zobv9kZ3H/Zmhu/2ptd/9gY2z/ZGdx/2Rncf9nanT/
    +ZGdx/2psc/9maXP/ZGdx/2Zobv9maG7/YmVu/2Zpc/9qbHP/am13/2psc/9ucXv/cHN9/2xudf9nanT/
    +bnF7/3V3ff9wcnn/bnB3/29xdf9zdXz/bG95/3Bzff9sb3n/c3Z//3N2f/91eIH/bnF7/3V4gf9ucXv/
    +dXiB/3l7gf9zdn//am13/3Byef9zdn//cHN9/3N2f/91eIH/e36H/3Bzff9wc33/foCG/3V4gf93eoP/
    +eXuB/3N2f/9ucXv/dXiB/3V3ff9vcXX/c3V8/25wd/91d33/c3V8/3d5f/9wc33/cHJ5/25wd/93eX//
    +c3Z//3Bzff9ucXv/cHN9/3V3ff9vcXX/c3V8/25wd/9vcXX/bnB3/2xvef9nanT/Zmhu/2ptd/9sb3n/
    +Zmlz/3Byef9tb3P/bnF7/2xudf9ucHf/dXd9/2xvef9sb3n/bG95/25xe/9ucXv/e36H/3l7gf9zdn//
    +c3Z//3V4gf93eoP/c3Z//3N2f/9+gYr/eXyG/4GDiv9wc33/d3qD/3N1fP93eX//cHJ5/3Bzff9wc33/
    +bnF7/25xe/9ucHf/b3F1/3Byef9ucXv/eXuB/36Ahv9nanT/c3Z//3Byef93eX//bW9z/3Z4fP91d33/
    +bnB3/25xe/9nanT/bG95/25wd/9ucXv/dXiB/3l8hv9ucHf/c3Z//3V4gf9ucHf/dXiB/3N2f/91d33/
    +am13/29xdf91d33/bnB3/2xvef9ucXv/d3qD/25xe/9wcnn/c3Z//25wd/9ucHf/cHJ5/3V3ff9vcXX/
    +cHJ5/2xudf9vcXX/bG51/3Byef9ucXj/aGty/21vc/9nanT/cHN9/25wd/9vcnr/a212/21wev91d33/
    +am13/2xudf9maXP/am13/3R2e/9tb3b/bnF6/2xudf9wcnn/am13/2xudf9ucXv/bG95/25xe/9wc33/
    +ZGdx/3Byef9ucHf/YmVu/2psc/9wc33/bnF7/2ptd/9maG7/bW9z/25wd/9sbnX/c3V8/3d5f/91d33/
    +b3F1/25xe/9ucXv/Z2p0/3V3ff9wc33/bnF7/21vdv9zdnz/cHJ5/25weP9zdXz/bnF7/3l7gf9xc3r/
    +d3mA/3d5f/9zdX3/b3F1/3N1fP9sbnX/bG51/25wd/9sbnX/cHJ5/2psc/92eHz/amxz/3Bzff9ucHf/
    +bW9z/3h5ff9nanH/bG51/2Jlbv91eIH/amxz/2Zpc/9iZW7/YmVu/2dqdP9maG7/c3Z//3N1fP9qbXf/
    +Z2p0/2dqdP91eIH/ZGdx/2xudf9nanT/am13/2ptd/9ucXv/bnF7/21vc/91eIH/Zmlz/25wd/9wcnn/
    +bnB3/25wd/9vcXX/cHJ5/21vc/9sbnX/bG95/2dqdP9sbnX/bG51/2xvef9sbnX/bnF7/25xe/9nanT/
    +bnF7/3Bzff91d33/cHN9/2ptd/9qbHP/bnF7/2Zpc/9qbXf/YmVu/2ptd/9qbHP/bG95/2Rncf9ucXv/
    +ZGdx/25xe/9zdXz/bG95/2Rncf9tb3P/bG95/25wd/91d33/dXiB/3t9g/9ucHf/c3V8/3t9g/9ucXv/
    +dXiB/3d5f/9wcnn/bnF7/3N2f/95e4H/cHN9/3V4gf9ucXv/d3qD/3V4gf93eX//c3Z//3N1fP9zdXz/
    +d3l//3Bzff9ucXv/bnF7/3N1fP9zdXz/bG51/2xvef9nanH/Z2px/2dqdP9qbHP/YmVu/2BjbP9sbnX/
    +bG51/2Rncf9sb3n/bG51/2ptd/9maXP/Z2px/25xe/9qbHP/Zmlz/2Zpc/9qbHP/Z2p0/3V4gf91d33/
    +cHN9/25wd/9sb3n/am13/2Zpc/9sb3n/dXd9/3Bzff91eIH/bW9z/25xe/9sbnX/c3V8/21vc/9sbnX/
    +cHN9/2ptd/9qbXf/bnF7/2ptd/9sbnX/bG51/3Byef93eX//ZGdx/2xvef9ucXv/dXd9/2xudf92eHz/
    +dXd9/25wd/9sbnX/amxz/2xvef9vcXX/bnB3/3Bzff93eoP/bG95/3Bzff9zdn//bG95/3N2f/9wc33/
    +dXiB/25xe/9zdXz/e32D/3Bzff9ucHf/bnF7/3V3ff9vcXX/b3F1/3N1fP9tb3P/bG51/3Byef9zdXz/
    +bW9z/3Byef9nanH/amxz/2psc/9ucHf/bnB3/2psc/9sbnX/amxz/3V3fP9ucHj/bW93/2psdf9vcnr/
    +dXd8/25wd/9qbXf/Z2p0/25xe/9zdoD/bXB6/3J0fP9wcnf/c3V8/29xdf9ucHf/bnF7/3Byef9zdXz/
    +cHN9/2ptd/91d33/eHl9/2psc/9zdXz/dnh8/3N1fP9ucXv/Zmhu/29xdf9ucHf/bnB3/25wd/92eHz/
    +cHJ5/2xudf9wcnn/bG95/2Rncf9wc33/bnF7/2ttdP9maXP/bnF5/2lsdf9laHL/am13/2ptd/9zdXz/
    +bm92/3R3fv91d33/bnB3/21vc/9zdXz/bW9z/3Byef9ucHf/bnB3/3N1fP9nanH/d3l//25wd/97fYP/
    +c3Z//3Bzff97fYP/bnF7/21vc/9maG7/eXuB/2ptd/9qbXf/ZGdx/2Zobv9nanT/Z2px/3N2f/9wcnn/
    +am13/2ptd/9qbXf/d3qD/2Rncf9qbXf/Z2p0/2xvef9qbXf/Z2p0/2ptd/9maXP/d3l//2Rncf9qbXf/
    +bnB3/2ptd/9qbXf/bG51/25xe/9tb3P/bnB3/25wd/9qbHP/bG51/2xudf9qbXf/bG51/3N1fP9zdXz/
    +bG51/3N1fP91d33/dXd9/25xe/9sbnX/bW9z/3Bzff9maXP/bG51/2Rncf9nanT/Z2px/2ptd/9nanT/
    +bnF7/2dqdP9wc33/cHJ5/2psc/9dYGr/bG51/2ptd/9sb3n/c3V8/2ptd/91eIH/bG51/2ptd/9zdn//
    +am13/25xe/9sb3n/Z2p0/2psc/9nanT/bG95/2xudf9ucXv/amxz/2xvef9sb3n/cHN9/2dqcf9maXP/
    +Zmlz/25xe/9sb3n/am13/2ptd/9nanT/d3l//25xe/9zdn//bnB3/25xe/9wc33/cHN9/25xe/9qbXf/
    +cHJ5/3Bzff9sb3n/cHN9/25wd/9wcnn/bnB3/29xdf94eX3/cHN9/25wd/9wc33/bnB3/25xe/97fYP/
    +dXiB/3V3ff9sb3n/c3V8/3Byef9sbnX/c3V8/3V3ff9ucXv/c3V8/2psc/9ucXv/am13/3N1fP9sbnX/
    +bG51/3V3ff9ucHf/cHJ5/3Byef9sb3n/bnB3/25wd/92eHz/gIKG/25wd/91d33/c3V8/3d5f/9ucHf/
    +dnh8/3Z4fP9ucHf/bG51/2xudf9sbnX/bG51/2ptd/9sb3n/dXiB/2Zpc/9sb3n/Zmlz/2Jlbv9qbXf/
    +Z2p0/2dqdP9iZW7/YGNs/2xvef9kZ3H/YGNs/2Zpc/9kZ3H/Zmhu/2Jlbv9qbXf/ZGdx/2Zpc/9qbXf/
    +bnF7/2xudf9sb3n/Zmlz/2ptd/9sbnX/am13/21wef9laHH/am13/2dqdP9zdXz/bW92/25weP9rbnj/
    +b3F6/3N2fv9ucXX/bG51/2dqcf9sb3n/b3J8/2xud/9ucXr/bW9z/25xe/9ucHf/bnB3/3Byef9ucHf/
    +dXd9/3N1fP9sbnX/cHJ5/3V3ff9kZ3H/am13/3N1fP9wcnn/bG95/2Jlbv9nanT/am13/2ptd/9qbXf/
    +d3l//25xe/9qbXf/bnF7/2ptd/9iZW7/am13/2ptd/9nanL/Z2ly/29xef9ucHf/amxz/3N1fP9wcnn/
    +cHN9/3Byef9ydX7/dXd9/29xdv9rbnj/cHJ5/25wd/9wc33/bnB3/25wd/9zdXz/amxz/3d5f/9wcnn/
    +d3l//29xdf9wcnn/eXuB/2xvef9vcXX/Z2px/3t9g/9sb3n/cHN9/2xvef9ucHf/cHJ5/25xe/9+f4P/
    +dXd9/3Byef9qbXf/bG51/35/g/9qbHP/cHJ5/2xvef91d33/bnB3/25xe/9zdn//bG95/3l7gf9maG7/
    +bnB3/2xvef9qbXf/am13/2psc/9qbXf/bG51/2psc/9sbnX/Zmlz/2Zpc/9nanH/Z2px/2Rncf9qbXf/
    +Zmlz/2Jlbv9nanT/bG95/2xvef9kZ3H/Zmhu/2Jlbv9nanT/YGNs/2Rncf9dYGr/ZGdx/2Rncf9qbXf/
    +ZGdx/2xvef9iZW7/Z2p0/2ptd/9maG7/XWBq/2psc/9nanT/am13/3N1fP9ucXv/eXyG/2ptd/9nanT/
    +dXd9/25wd/9zdXz/cHJ5/3Byef9vcXX/bnF7/3Bzff9wcnn/eXuB/3N1fP91eIH/dXiB/3l8hv9zdXz/
    +cHJ5/25xe/95e4H/d3qD/3N2f/9zdn//cHN9/3l7gf9zdXz/bnF7/25wd/9wc33/cHN9/3N2f/9sb3n/
    +bG95/3Byef9wc33/bG95/25xe/9ucXv/cHJ5/25wd/9ucHf/eXuB/3N2f/9ucHf/bG95/25wd/9wc33/
    +d3qD/3d5f/91d33/bG51/3Byef9sbnX/amxz/3N1fP94eX3/dXd9/3V4gf9ucHf/cHJ5/3Byef92eHz/
    +bG95/3Bzff93eoP/c3Z//3N2f/9zdXz/bnB3/25wd/9zdXz/eHl9/3+Bh/9ucHf/dnh8/3Byef93eX//
    +bnB3/3d6g/95e4H/bnB3/3Byef9sbnX/bnB3/2psc/9qbXf/am13/3l8hv9maXP/bnF7/2psc/9kZ3H/
    +bnF7/2xvef9ucXv/amxz/2ptd/91d33/bG51/2psc/9wc33/cHN9/2xudf9maXP/cHN9/2dqcf9nanT/
    +amxz/2dqdP9sbnX/am13/2Zpc/9sb3n/bG51/2xvef9sbnj/ZWhy/2dqdP9nanH/bnF7/2ttdf9rbnb/
    +a252/29xeP90dnz/am13/2ptd/9nanH/cHJ5/3N1fP9tcHj/bnF6/2dqdP9qbHP/Zmhu/2psc/9nanT/
    +amxz/2dqdP9qbXf/YGNs/2dqdP91d33/YmVu/2xudf9sb3n/am13/2xudf9iZW7/am13/2xvef9ucXv/
    +bG51/3d5f/9ucXv/am13/3Byef9ucHf/ZGdx/25xe/9sb3n/am13/2lsdP9wcnv/b3J7/21vd/9zdXz/
    +bnB3/3Bzff9rbXT/a254/25xe/9rbXX/bW9z/25wd/9tb3P/b3F1/2xvef9wcnn/c3V8/2ptd/93eX//
    +bnB3/3V4gf9ucXv/cHJ5/3d6g/9qbXf/bG51/2Jlbv91eIH/am13/25xe/9maXP/amxz/2ptd/9qbXf/
    +e32D/3N1fP9qbXf/bG51/2psc/91eIH/YGNs/2Zpc/9kZ3H/Z2p0/2Zpc/9nanH/bG95/2Rncf9zdXz/
    +YGNs/2Zpc/9nanT/amxz/2Zpc/9qbHP/bG95/2xudf9qbHP/bG51/2Zpc/9nanT/amxz/2ptd/9maXP/
    +cHN9/25xe/9maXP/am13/3Bzff91d33/bG95/2xvef9tb3P/dXd9/25wd/9ucHf/Zmlz/25wd/9tb3P/
    +c3V8/21vc/92eHz/bnB3/3h5ff94eX3/bG51/2dqcf9sb3n/bnF7/25xe/9zdXz/cHJ5/36Ahv9wc33/
    +c3V8/3l7gf9zdXz/bnF7/25xe/9sbnX/bG51/3N1fP9zdXz/b3F1/3N1fP9ucHf/c3V8/3Byef91d33/
    +b3F1/2xudf9sb3n/dnh8/3Z4fP9zdXz/cHN9/3Bzff94eX3/b3F1/3Bzff9qbHP/bnB3/2xvef9wc33/
    +ZGdx/2dqdP9nanT/am13/2ptd/9ucHf/cHJ5/3Byef9sbnX/bG51/3V3ff92eHz/amxz/25xe/9ucHf/
    +cHN9/3d5f/93eX//c3V8/21vc/9zdXz/bW9z/2xudf9zdn//d3qD/3V4gf95e4H/bnF7/3N2f/91eIH/
    +e32D/3Byef91eIH/eXuB/3d6g/93eoP/d3qD/3Bzff9wc33/bnF7/3V4gf+Bg4r/bG95/3V3ff9wc33/
    +eXuB/25xe/97fof/eXuB/3N1fP9zdn//bG95/3V4gf9wcnn/d3qD/3V4gf9/gYf/cHJ5/3d6g/9wc33/
    +bG95/3V4gf9zdn//dXiB/3N1fP9zdXz/eXyG/3V4gf9zdn//e32D/3l7gf9zdn//c3V8/3d6g/9ucHf/
    +bnF7/2xvef9wc33/bG95/25xe/9qbXf/cHJ5/25wd/9wcnn/cnR6/21vdv9sb3n/bnB3/3Bzff9tcHr/
    +cXN7/25wd/9vcXr/bnB6/2xudf9sbnX/Z2px/3V3ff9ydX7/b3J8/2tueP9rbXT/am13/2xudf9sbnX/
    +bG51/3Byef9zdXz/cHJ5/2RmbP9ucHf/dXd9/2Rncf9qbXf/bG95/2dqdP9sbnX/YmVu/2ptd/9qbXf/
    +bG95/2xudf91d33/bG95/2xudf9zdXz/bG51/2Zobv9wcnn/cHJ5/2xvef9rbnf/c3V+/3F0fv9sb3n/
    +c3V8/3N1fP9zdXz/bnB0/29xeP90dnz/bW94/3Byef9wc33/b3F1/25wd/9tb3P/cHJ5/3Byef9qbHP/
    +dXd9/2ptd/91d33/amxz/2xudf9zdXz/YmVu/25wd/9nanH/eXuB/25wd/9ucHf/bnB3/25wd/9wcnn/
    +b3F1/36Ahv91d33/bnB3/2xudf9tb3P/fn+D/2psc/9sbnX/bnB3/25xe/9sbnX/amxz/25xe/9nanT/
    +d3l//2Rncf9sbnX/bnB3/21vc/9nanH/b3F1/3Bzff9ucHf/bnB3/25xe/9sb3n/c3V8/3Byef91d33/
    +b3F1/3h5ff9zdXz/bG51/3Byef91d33/dXiB/3V4gf9wc33/cHN9/3N2f/9sb3n/bnF7/2dqdP9wcnn/
    +bW9z/3N1fP9sbnX/cHN9/2ptd/91d33/dXd9/2xudf9iZW7/am13/2ptd/9qbXf/bnF7/3Byef9zdn//
    +bnF7/25xe/9zdn//cHN9/25xe/9ucXv/bG51/2ptd/9sb3n/bnF7/2ptd/9sb3n/bnB3/25wd/9wcnn/
    +dXd9/2xudf9maXP/Z2p0/3Z4fP9zdXz/dXd9/3N1fP9ucHf/dnh8/2ptd/9ucXv/ZGdx/2psc/9maXP/
    +am13/2Jlbv9kZ3H/ZGdx/2Rncf9iZW7/Zmlz/2Zpc/9qbXf/ZGdx/2dqcf9sb3n/bnF7/2Rncf9qbXf/
    +amxz/25xe/9zdXz/dXd9/2xvef9sbnX/cHN9/21vc/9qbHP/dXd9/3V3ff91d33/eHl9/25wd/9vcXX/
    +bnB3/3Z4fP9ucHf/c3Z//3Z4fP91d33/cHJ5/3N1fP9ucHf/bnB3/25wd/91d33/f4KM/3Byef9zdn//
    +bnF7/3d5f/9sb3n/e32D/3h5ff9ucHf/cHN9/2ptd/9zdn//bG95/3Bzff9wcnn/e36H/25wd/9wc33/
    +bG95/2ptd/9zdn//dXiB/3V3ff9sb3n/bnB3/3d6g/9ucXv/bnB3/3N2f/9zdn//bnB3/2xudf9wcnn/
    +bW9z/29xdf9ucHf/bnB3/2xvef9wcnn/cHN9/3Bzff9wcnn/c3Z//3N2f/9xc3r/cHJ5/3N2f/93eoP/
    +cHN9/3h6gP9zdXr/d3l//3h7hP9zdn//cHN9/2dqdP93eoL/dnmB/3N2fv9wcnr/bnB3/25wd/9vcXX/
    +cHJ5/25wd/91d33/dXd9/3N1fP9maG7/bnB3/3l7gf9maG7/bG51/2ptd/9sbnX/amxz/2Jlbv9sbnX/
    +cHN9/2ptd/9nanH/c3V8/2dqdP9nanH/Zmlz/2Zobv9ZXGX/ZGdx/2Zpc/9iZW7/YmVt/2xud/9sb3f/
    +a210/29yef9wcnn/dnh8/29xdf9tcHr/bnF7/2Zpcv9naXD/Z2pz/2Jlbv9kZmz/Zmhu/2dqdP9nanT/
    +ZGdx/25wd/9maXP/c3V8/2psc/9maXP/cHJ5/2Jlbv9wcnn/bnF7/3+Bh/9zdn//dXiB/3N1fP9wc33/
    +cHN9/2xvef97fYP/cHN9/2xvef9sb3n/cHJ5/3+Bh/9sb3n/cHN9/3Byef9zdn//c3V8/3Byef9zdn//
    +bG95/3t+h/9sb3n/dXiB/3d6g/9wcnn/am13/3Byef9wc33/cHJ5/25xe/9zdn//cHJ5/3l7gf91eIH/
    +eXyG/3d6g/95fIb/d3qD/3Bzff91eIH/d3l//3l8hv91d33/cHN9/2xvef9wc33/am13/3Byef9sbnX/
    +cHJ5/29xdf91d33/bG95/3Bzff9ucHf/d3qD/3h5ff9sbnX/Zmlz/2xvef9wcnn/cHJ5/3Byef91d33/
    +dXiB/3d5f/9wc33/e36H/3l7gf9wc33/c3Z//25wd/9wc33/d3qD/3Bzff9wcnn/cHN9/25xe/9wc33/
    +c3V8/3h5ff9vcXX/amxz/2psc/92eHz/cHJ5/3Bzff9ucXv/bG51/3V4gf9ucXv/c3V8/2dqcf9sbnX/
    +cHJ5/3N1fP9qbHP/bG51/29xdf9zdXz/bW9z/2xudf9wcnn/cHJ5/2xudf9sb3n/c3V8/3Z4fP9sb3n/
    +cHN9/25xe/9zdn//dXd9/3d5f/9wc33/bG95/3N2f/9ucXv/bnB3/3d5f/95e4H/d3l//3d5f/9sb3n/
    +cHJ5/29xdf92eHz/bnB3/3N1fP92eHz/dXd9/3N1fP9wcnn/b3F1/2xudf9wc33/dXd9/4CChv9tb3P/
    +bnF7/2xudf91d33/bW9z/3d5f/92eHz/bW9z/2xudf9nanH/cHN9/2xvef9wcnn/bnB3/3d5f/9ucHf/
    +cHN9/2xvef9sb3n/dXd9/3N2f/91d33/bnB3/25wd/95e4H/bG95/25wd/9wc33/dnh8/2xudf9qbHP/
    +bnB3/21vc/9sbnX/bG95/2ptd/9ucHf/bnB3/25wd/9wcnn/bW9z/3N1fP9xc3r/a253/2psc/9nanT/
    +bnF7/2dqdP9vcnz/aWx2/29xev9sb3n/amxz/2xudf9iZW7/cHN9/3R2fP9xdH3/bW93/2hrcv9sb3n/
    +bG51/2xvef9sbnX/dXd9/3V3ff9wcnn/amxz/2xudf93eX//Z2px/2ptd/9qbXf/am13/2xvef9maG7/
    +bW9z/25wd/9wcnn/b3F1/3N1fP9sbnX/bG51/2xvef9wcnn/Zmhu/2xvef9qbXf/Zmlz/2Vocv9sb3n/
    +cXR7/2xvef9zdXz/c3V8/3V3ff9ucHT/bnB1/3R2fP9sb3j/b3F2/21vdf9tb3P/bG51/25wd/9zdXz/
    +c3V8/2psc/93eX//am13/3d5f/9sbnX/am13/3d5f/9sbnX/bG51/2ptd/97fYP/dXd9/3Byef9vcXX/
    +cHJ5/2xvef9ucHf/eXuB/2xvef9qbXf/am13/2xudf9+gIb/amxz/3Byef9ucHf/cHJ5/25wd/9ucHf/
    +bnB3/2Zpc/91d33/Z2px/3N2f/9wcnn/bnB3/2psc/9sb3n/cHN9/3N1fP9zdn//dXiB/3Byef95fIb/
    +dXiB/3d6g/93eoP/e36H/3l8hv9wc33/dXiB/3l7gf9+gYr/foCG/3d6g/93eoP/d3qD/3V3ff93eoP/
    +cHN9/3d6g/91eIH/e32D/3Bzff9zdn//bnB3/3l7gf94eX3/c3Z//2dqdP9zdn//c3Z//3N2f/9ucHf/
    +d3l//3l7gf97fYP/d3qD/3+CjP97fof/eXuB/3l7gf91d33/dXiB/3l7gf93eoP/cHJ5/3Bzff9ucXv/
    +c3Z//25xe/97fYP/c3V8/2xvef9sb3n/d3l//3N2f/9wc33/cHJ5/2xvef9ucXv/am13/3Byef9sbnX/
    +bW9z/25xe/9ucXv/ZGdx/2dqdP9qbHP/cHJ5/2dqcf9maG7/bG95/2dqdP9kZ3H/ZGdx/2ptd/9wc33/
    +Z2p0/2ptd/9nanH/bG95/3N1fP9wc33/bG95/2xudf9zdXz/am13/2dqdP9ucXv/c3V8/3V3ff91d33/
    +bG51/25xe/9sbnX/bG95/2ptd/9ucXv/bnF7/3V3ff92eHz/cHJ5/2xudf9tb3P/c3V8/3d5f/+Agob/
    +bW9z/2xvef9sb3n/eHl9/2xudf93eoP/dXd9/2ptd/9qbXf/Zmlz/3N1fP9wcnn/c3Z//3Bzff97fof/
    +cHJ5/3N2f/9sb3n/bG51/3V3ff9zdXz/c3V8/25wd/9ucHf/dXiB/25xe/9sb3n/cHN9/3N2f/9tb3P/
    +bG51/3N1fP9sb3n/cHN9/3Bzff9sb3n/bnB3/25xe/9ucHf/cHJ5/21vc/91d33/c3V6/21wef9ucHf/
    +bnB3/3N1fP9ucHf/cXN7/2xud/9wcnn/dHZ9/25wd/9ucHf/Z2px/3V3ff90dnv/cXR7/25wd/9lZ3D/
    +amxz/2xudf9qbXf/am13/3Bzff9ucXv/bnF7/2Zpc/9sbnX/c3V8/2Rncf9maXP/Zmlz/2dqcf9maXP/
    +XWBq/2dqcf9nanT/Z2p0/2Zpc/9sb3n/Z2px/2dqcf9qbXf/am13/2Jlbv9qbXf/bG51/2Vocf9oa3T/
    +b3J5/3J1f/9tcHr/dHeA/3V4gf97fYP/dXd9/3Z4f/95e4H/bG93/21vdv9tb3b/bG51/2ptd/9tb3P/
    +dXd9/3Byef9sbnX/d3l//2xudf92eHz/bG51/2xudf93eX//bG51/2xvef9sb3n/d3qD/3N2f/9ucXv/
    +bG95/3Byef9ucHf/bnB3/3d5f/9ucHf/bG51/2ptd/9ucHf/gYOK/2ptd/9zdn//cHJ5/3N2f/9wcnn/
    +bnB3/2xvef9qbXf/eXuB/2dqcf95e4H/dXiB/3N2f/9wc33/dXd9/3l7gf91d33/dXd9/3d6g/91d33/
    +fX6B/3t9g/9/gYf/foCG/36Ahv97fYP/eHl9/3l7gf9+f4P/gYOK/36Ahv95e4H/d3qD/3N2f/91d33/
    +d3qD/3Bzff9wc33/cHN9/3l7gf9zdn//dXiB/3N1fP9/gYf/e36H/3V4gf9sb3n/c3Z//3Bzff9wc33/
    +bnF7/3Z4fP9zdXz/dXd9/25xe/93eX//dnh8/3V3ff94eX3/bnB3/25wd/91d33/cHJ5/25wd/9ucHf/
    +bnB3/3N1fP9wcnn/dnh8/29xdf9qbHP/bG51/3Z4fP9wcnn/c3V8/25wd/9qbXf/bnF7/25wd/9zdn//
    +am13/25wd/9zdXz/dXd9/2ptd/9vcXX/bG51/3N1fP9sbnX/am13/3N1fP9ucXv/bG51/2xudf9wcnn/
    +eHl9/2ptd/9zdXz/c3V8/3V4gf93eoP/eXuB/3l7gf9zdXz/e32D/3V4gf9zdXz/d3qD/3t9g/9+gIb/
    +foGK/3N2f/97fYP/dXiB/3d6g/9wc33/dXiB/3N2f/91eIH/c3Z//3Bzff9ucHf/bnB3/3N1fP92eHz/
    +gIKG/2xvef9ucHf/bnB3/3Z4fP9qbXf/c3Z//3N1fP9qbHP/am13/2BjbP9ucXv/Z2p0/25xe/9wc33/
    +dXiB/2xudf9sb3n/bG95/2ptd/9wc33/cHN9/3N1fP9tb3P/am13/3V3ff9qbXf/Z2px/2xvef9ucXv/
    +amxz/2Zpc/9sb3n/bG95/25xe/9sb3n/bG51/2xudf9qbXf/Zmlz/2Zpc/9maG7/am13/2tueP9nanT/
    +Zmlz/2Zpc/9nanT/Z2lv/2ptd/9maXL/a252/2xvef9qbHP/am13/2Rncf9sb3n/b3J8/3Bze/9sbnT/
    +Z2lw/2xudf9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9qbHP/bG95/3l7gf9qbXf/cHJ5/3d6g/9zdn//
    +c3Z//2ptd/9wc33/dXiB/3d6g/9wcnn/d3qD/3Bzff9wcnn/c3Z//3Bzff9maXP/bnF7/25xe/9sb3n/
    +bG95/3N2f/9xdH7/am12/25wd/9ucXv/dXd9/2xudf9tb3b/cnV8/21veP9vcXj/bnB3/25wd/9wcnn/
    +bW9z/3N1fP9zdXz/bG51/3d5f/9tb3P/dXd9/21vc/9sbnX/dXd9/2dqdP9maXP/Z2p0/3d5f/9zdXz/
    +bnB3/2xudf91d33/bG95/2ptd/93eoP/c3Z//25xe/9sb3n/bnB3/4GDiv9qbXf/bG95/25wd/9ucXv/
    +cHJ5/25xe/9ucHf/Z2px/3Z4fP9lZmr/c3V8/25wd/9tb3P/Z2p0/2dqcf9sb3n/amxz/2psc/9maXP/
    +YmVu/2xvef9qbXf/bG95/2xvef91d33/bnF7/2xudf9sbnX/c3V8/3V3ff91d33/bG95/2xvef9qbXf/
    +am13/2xvef9qbHP/cHJ5/2xudf91d33/bG51/3N1fP9vcXX/e32D/3d6g/9wc33/Z2p0/3Bzff91d33/
    +c3V8/25wd/9zdn//d3l//3d5f/91d33/dXiB/3d5f/93eX//eXuB/25xe/9wc33/dXiB/3V4gf9zdn//
    +d3qD/35/g/97fYP/dXiB/3t+h/9zdn//bnF7/3Byef93eX//cHN9/3N2f/9wc33/bnB3/3Bzff9qbXf/
    +c3V8/2dqcf9ucHf/c3V8/3N1fP9sbnX/bG51/2xudf9wc33/bG95/2ptd/9zdXz/c3V8/2psc/9sbnX/
    +bnF7/3Z4fP9sbnX/bG51/2psc/9ucXv/c3V8/3N1fP9wcnn/bG51/3V3ff9sbnX/Z2p0/3Byef9wc33/
    +dnh8/3d5f/9ucHf/c3Z//2xvef9zdXz/bG95/25xe/9ucHf/c3Z//3N2f/9wc33/bnB3/25wd/9zdn//
    +eXuB/4GDiv9ucHf/bnF7/3Bzff95e4H/cHN9/3d6g/93eoP/cHJ5/3N2f/9maXP/dXd9/3Bzff91d33/
    +c3Z//3l8hv9ucHf/cHJ5/25xe/9ucHf/dXd9/3V3ff92eHz/b3F1/25wd/91d33/bG95/2xvef91eIH/
    +dXiB/25xe/9sb3n/c3Z//3Bzff9wc33/cHN9/2xvef9zdXz/cHJ5/25wd/9wcnn/b3F1/3N1fP9zdXr/
    +bW92/2xudf9tb3P/cHJ5/2xudv9tb3f/aWx1/25xef9ucXv/Zmhu/2dqdP9kZ3H/bG95/2xvef9vcXr/
    +a252/2Vobv9sbnX/cHJ5/2xudf9zdXz/dXd9/2xvef9sb3n/Zmlz/2ptd/9zdXz/YmVu/2psc/91d33/
    +cHN9/25wd/9nanH/bnB3/25xe/91eIH/bG95/3V3ff9sb3n/bnB3/3V4gf9ucXv/am13/25wd/9ucHf/
    +bG95/29xeP9zdn7/dHd//21vdv9wcnn/cHJ5/3V3ff9qbXf/cHJ6/3d6g/9wc33/bnF6/3F0fv9ucXv/
    +bnF7/2xudf9zdXz/cHJ5/2ptd/9zdXz/bG51/3V3ff9sbnX/b3F1/3d5f/9sbnX/amxz/29xdf92eHz/
    +cHJ5/3Byef9ucHf/dXd9/2ptd/9maXP/c3Z//25xe/9sb3n/Zmlz/2psc/9/gYf/am13/2ptd/9qbHP/
    +am13/21vc/9sbnX/bG51/2psc/93eX//Zmlz/3Bzff9ucXv/bnB3/2xudf9sbnX/bnB3/2xudf9sb3n/
    +bnB3/2psc/9zdXz/bnB3/3N1fP9ucHf/eHl9/3Bzff9wcnn/cHN9/3d6g/95fIb/e32D/3V4gf93eoP/
    +cHN9/2xvef9wc33/bG95/3V3ff9ucHf/dXd9/25wd/91eIH/bnB3/3l8hv93eX//c3V8/2psc/9zdXz/
    +cHJ5/3N1fP9ucHf/c3V8/3N1fP92eHz/cHN9/3V3ff91d33/dXd9/3d5f/9qbHP/bnB3/3V3ff9zdXz/
    +b3F1/25wd/91d33/cHJ5/25xe/93eX//bG51/2psc/9sbnX/eHl9/3Byef91d33/bnF7/2xudf91eIH/
    +cHN9/3V4gf9kZ3H/bnB3/25xe/93eoP/c3V8/3N1fP9zdXz/eXuB/3N2f/9wcnn/eXuB/3t9g/9ucXv/
    +cHJ5/3V4gf93eX//bnB3/3Byef9wcnn/d3l//3Bzff9zdn//c3V8/3Byef91d33/cHJ5/25wd/9zdXz/
    +cHN9/3N1fP91d33/bG95/3N1fP9ucHf/c3V8/25wd/9wcnn/bnB3/3N2f/91eIH/c3Z//2xvef9ucXv/
    +c3Z//3V4gf+DhYz/dXd9/3V3ff97fYP/f4GH/3t9g/9/gYf/hYeN/3t9g/95fIb/c3Z//36Biv9+gIb/
    +foCG/31+gf+Bg4r/dnh8/3l7gf97fYP/dnh8/3t9g/97fYP/eXuB/3Bzff9ucXv/d3l//25wd/9qbHP/
    +cHN9/3Bzff9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2dqdP9nanH/Z2p0/2Zpc/9kZ3H/Z2p0/2psc/9nanT/
    +bG95/2Nmbv9gY2z/Zmhu/2ptd/9oa3P/bG52/2lsdv9sb3j/bnF7/21vc/9tb3P/Z2px/3Byef9xdHv/
    +b3F4/3Byef9oanD/b3F1/3N1fP9ucHf/dXd9/3V3ff9ucHf/bnB3/2psc/9wcnn/dnh8/2Zobv9sbnX/
    +dXd9/3N1fP9wcnn/Zmhu/2xudf9sb3n/dXd9/2ptd/9wcnn/b3F1/21vc/9wc33/bG51/2Rncf9qbHP/
    +Z2p0/2BjbP9kZ3H/aGt1/2tud/9nanP/bnB4/21vdv91d33/bG51/21vc/9zdn3/a254/21vd/9tcHr/
    +am13/2ptd/9sbnX/cHJ5/2xvef9nanT/c3V8/2psc/91d33/bG51/2xvef93eX//Z2p0/25xe/9wc33/
    +e32D/3d6g/9zdn//cHN9/3d6g/9zdXz/bnF7/3l8hv9zdn//cHN9/2ptd/9ucHf/f4KM/2xvef9zdn//
    +cHN9/3Bzff9zdXz/c3Z//25xe/9nanT/eHl9/2dqcf9zdXz/cHJ5/25wd/9sbnX/bG51/29xdf9vcXX/
    +cHJ5/3Byef9sbnX/c3V8/3Byef9sb3n/cHN9/3V3ff9wc33/bW9z/2ptd/9ucXv/dXd9/3Z4fP9wcnn/
    +cHN9/2ptd/9nanT/cHN9/2psc/9wc33/am13/3Bzff9qbXf/bG95/2xudf93eoP/dXd9/2xvef9qbHP/
    +bG95/2xvef9wc33/bG51/2ptd/9ucXv/bnF7/3Bzff9zdXz/dXd9/2xvef93eX//Zmlz/2ptd/9wc33/
    +bG95/2ptd/9sbnX/cHN9/3Byef9zdXz/eXuB/3N2f/9qbXf/bnB3/3l7gf9wc33/dnh8/3N1fP9ucHf/
    +bnF7/25wd/9zdXz/ZGdx/25wd/9zdXz/c3Z//25xe/9ucXv/cHN9/3d6g/95fIb/c3Z//36Ahv97fof/
    +cHN9/3V4gf95e4H/e36H/3V3ff93eX//c3Z//3l8hv9zdn//d3qD/3d6g/9zdn//d3qD/3N2f/9sb3n/
    +c3Z//3N2f/91eIH/d3qD/3Bzff9wc33/cHN9/25xe/9ucXv/cHN9/3Bzff91eIH/c3Z//3N2f/9ucHf/
    +bW9z/3N1fP91d33/fn+D/25wd/9sb3n/dXiB/3d5f/9ucXv/d3l//3d6g/9zdn//bnF7/2psc/9wc33/
    +cHJ5/3V3ff9zdXz/eXuB/2xudf9wcnn/bG95/2xudf91d33/dXd9/25xe/9ucHf/bG95/3V3ff9ucHf/
    +Z2p0/3Bzff91d33/bW9z/2dqcf9wcnn/bG95/2ptd/9sbnX/bG51/25xe/9sbnX/am13/2xvef9qbHP/
    +bG95/21veP9pa3L/YmVu/2Zobv9sb3n/bG51/2lsdP9oa3X/am12/2hrdf9maG7/Zmhu/1lcZf9maXP/
    +bXB6/21wef9tb3f/Z2p0/25xdf9ucXv/bnB3/3N2f/93eX//bnF7/3Bzff9qbXf/c3Z//3d5f/9nanT/
    +cHJ5/3N2f/93eX//cHJ5/2psc/9sbnX/bG95/3V3ff9sbnX/bG95/2ptd/9nanT/cHN9/2xvef9maXP/
    +bG51/25xe/9kZmz/bG51/2xudv9ucHj/aWx0/25xe/9sb3n/cHN9/2dqdP9qbXf/cHJ4/25wdf9sbnb/
    +c3V9/25wd/9wcnn/bG51/3Byef9ucHf/bG51/3V3ff9sbnX/dXd9/2xudf9sbnX/d3l//2dqdP9qbHP/
    +b3F1/3Z4fP9zdn//bG95/25wd/91d33/bG95/2xvef97fof/dXiB/3N2f/9ucHf/cHJ5/3+CjP9qbXf/
    +bnF7/25wd/9ucXv/cHN9/3N2f/9wc33/am13/3d5f/9nanH/cHJ5/3Byef9sbnX/Z2p0/2dqdP9sbnX/
    +amxz/2xudf9nanT/Zmlz/2xvef9qbXf/am13/2xvef9zdXz/cHJ5/21vc/9wcnn/cHJ5/3Z4fP91d33/
    +am13/3N1fP9ucXv/bG51/3V3ff9qbHP/cHN9/2ptd/9zdXz/bnB3/3Bzff9sb3n/foCG/3d5f/9ucXv/
    +bW9z/3N1fP9zdXz/dnh8/3Byef9sbnX/bG95/3Bzff9wc33/cHN9/3V3ff9wcnn/dXiB/2Rncf9nanT/
    +cHN9/2ptd/9qbXf/am13/2dqdP9qbXf/bG95/3N2f/9qbHP/Zmlz/2psc/91d33/bnF7/3Bzff9qbXf/
    +Zmlz/2dqdP9sbnX/bnF7/2Zpc/9sbnX/bW9z/3N1fP9wcnn/bnB3/3Byef93eX//c3Z//25wd/91d33/
    +eXuB/3Byef9wcnn/dXiB/3t9g/9ucHf/cHJ5/3Byef9zdn//cHN9/3d6g/97fYP/dXiB/3t+h/9zdn//
    +c3Z//3t9g/95e4H/d3qD/3t9g/9wc33/dXiB/3l7gf9wc33/dXiB/3V4gf9zdXz/d3qD/3l7gf91eIH/
    +bnB3/3Byef9wc33/cHN9/3t9g/9vcXX/bnB3/3d5f/9zdn//bnF7/3d5f/91eIH/bnF7/25xe/9qbXf/
    +cHN9/25xe/91eIH/cHN9/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3d5f/9zdn//c3Z//3V4gf95e4H/
    +cHN9/3Byef93eX//dXd9/2xvef9qbXf/cHN9/25xe/9wcnn/bnF7/25wd/91d33/bnB3/3Byef9zdn//
    +bnB3/3Bzff9vcnv/b3F1/2dqdP9ucHf/cHN9/25xe/9vcnv/bXB6/29xev9ydX7/bnB3/25wd/9maG7/
    +b3F1/3J0ev9tcHr/bW93/2Zpc/9sbnX/am13/2dqdP9ucXv/c3V8/2psc/9sb3n/amxz/2xvef9ucXv/
    +ZGdx/2dqdP9ucXv/cHN9/2ptd/9iZW7/Zmlz/2xudf9ucXv/Z2p0/25xe/9sbnX/bG51/3N1fP9wcnn/
    +Z2px/2xudf9ucXv/ZGZs/25wd/9vcXj/b3F4/25wd/9wcnn/cHJ5/3h5ff9nanT/bG51/29xeP9sbnX/
    +bnB3/3F0fv9sb3n/bG51/2ptd/9ucHf/cHJ5/29xdf9zdXz/bG51/3l7gf9ucHf/bnB3/3d6g/9ucHf/
    +bG51/2ptd/9zdn//c3Z//3Bzff9sb3n/c3Z//2dqdP9nanT/eXuB/3N2f/9wc33/am13/29xdf+Agob/
    +bG51/25wd/9sbnX/cHJ5/2xvef9ucXv/b3F1/2xudf92eHz/Zmhu/3N1fP9sbnX/Z2p0/2Zpc/9nanT/
    +bG51/2psc/9nanH/bG51/2Zpc/9wc33/am13/2ptd/9ucXv/cHN9/2xvef9tb3P/bnF7/25xe/9zdXz/
    +dXd9/3Bzff9wc33/bnF7/2Zpc/93eX//bnB3/3V3ff9ucHf/bnF7/2xvef9zdn//cHN9/3+Bh/95e4H/
    +c3Z//3Byef9zdn//dXiB/3d5f/9zdn//cHN9/25wd/9zdn//dXd9/3N1fP93eX//cHJ5/3d5f/9maXP/
    +am13/3N1fP9sb3n/Z2px/2psc/9qbXf/Zmlz/2dqdP9wcnn/Zmlz/2BjbP9nanH/bG95/2ptd/9sb3n/
    +bG95/2Jlbv9qbXf/amxz/2ptd/9iZW7/Zmlz/2Zobv9sb3n/am13/2ptd/9tb3P/dXd9/3N1fP9ucHf/
    +dXd9/3Z4fP9tb3P/bW9z/3N1fP91d33/am13/2xudf9sbnX/bnF7/2ptd/9wc33/dXd9/3Byef93eX//
    +c3V8/2psc/94eX3/dnh8/3Z4fP91d33/bG51/25xe/9wc33/bG51/25xe/9sb3n/bG51/25xe/91d33/
    +bG51/25wd/9vcXX/c3V8/3Byef97fYP/bnB3/21vc/9zdXz/c3V8/25wd/91d33/dXd9/3Byef9wcnn/
    +amxz/2xudf9sb3n/cHN9/3Bzff91d33/bG51/2xvef9sbnX/bnB3/3N1fP9zdn//c3V8/25wd/9zdXz/
    +dXd9/25xe/9sb3n/dXiB/3N2f/9sb3n/bG95/25xe/9wcnn/c3V8/2xudf9sbnX/dnh8/29xdf9ucHf/
    +cHN9/3Byef9zdn//c3Z//3F0fv9sb3n/bG95/3V3ff9ucHj/b3F4/2ptdf9rbnf/cXR+/2ptd/9qbXf/
    +YmVu/2xvef9wcnn/b3F6/3Bye/91eID/Z2px/3N1fP9vcXX/Z2px/2psc/97fYP/cHJ5/2psc/9zdXz/
    +bG95/25xe/9wc33/c3V8/25xe/9ucXv/c3V8/25xe/9nanT/cHN9/2xudf9qbXf/bG51/2xvef9gY2z/
    +c3V8/2xvef9qbHP/dXd9/2Zpc/9nanH/Zmly/2dqdP9pbHT/bG95/3J1fv93eX//bG95/3Byef9ucXv/
    +bG50/21wev9kZ3D/Z2lz/2dqdP9gY2z/ZGdx/2Zobv9iZW7/Zmhu/2Jlbv9maXP/Zmhu/2Rncf9sbnX/
    +bG95/2Zobv9qbXf/bnF7/2xvef9ucXv/amxz/25xe/9kZ3H/ZGdx/3V3ff9sb3n/bnF7/2Zpc/9tb3P/
    +foCG/2psc/9sbnX/bG51/3Bzff9qbXf/bG95/2xudf9maXP/bG95/11gav9sb3n/amxz/2Rncf9kZ3H/
    +Z2p0/2xudf9sbnX/bG51/2ptd/9maXP/c3V8/2ptd/9sb3n/bnF7/25xe/9sb3n/bG51/2xvef9ucXv/
    +dnh8/3h5ff9zdn//dnh8/3V3ff9qbXf/eXuB/3Byef93eX//bG95/2xvef9ucHf/c3Z//25xe/9+gIb/
    +eHl9/3N1fP9wcnn/c3Z//3V4gf93eX//cHN9/25xe/9sb3n/dXiB/3l7gf9ucXv/dXiB/25wd/93eoP/
    +Zmlz/25wd/93eX//bnF7/2ptd/9sbnX/cHJ5/3Byef9ucXv/dXd9/3N1fP9nanH/bW9z/3N1fP9wc33/
    +c3V8/25xe/9nanT/bnB3/25xe/9zdn//bG95/25wd/9sb3n/cHN9/25wd/9ucHf/am13/3h5ff9zdn//
    +bnF7/3l8hv95e4H/bnB3/25wd/93eX//eXuB/3Byef9ucHf/c3V8/3V4gf93eoP/d3qD/3V4gf91eIH/
    +d3qD/3V4gf9wc33/e36H/3t9g/97fof/eXyG/3Bzff95e4H/d3qD/25wd/9wc33/bnF7/3Byef91eIH/
    +d3qD/3Bzff9ucHf/bnB3/3Bzff9wc33/e32D/2xvef9tb3P/dXd9/3V3ff9wcnn/eXuB/3h5ff9wcnn/
    +bnF7/2ptd/9ucHf/bnB3/3V4gf93eoP/e32D/3N1fP9zdn//c3Z//2ptd/9wc33/cHN9/3N2f/9ucXv/
    +c3Z//3V3ff9sb3n/bnB3/3N2f/91d33/bnB3/2psc/9sbnX/cHJ5/2ptd/9sbnX/Zmlz/3Bzff9qbHP/
    +Z2px/2dqcf9maXP/am13/2lrdP9oa3L/Z2p0/2psc/9wc33/bW9z/21vdv9sbnT/aWxz/3N1fv9ucXv/
    +bG95/2dqdP9ydX//dHd//3Byef9wc3r/dnh+/2Zobv9wc33/cHJ5/2dqdP9nanT/d3qD/2xvef9qbXf/
    +dnh8/25xe/9zdn//cHN9/3V3ff9wcnn/cHJ5/3N1fP9wcnn/amxz/3Bzff9qbXf/bnB3/25wd/91d33/
    +Zmhu/3N1fP9zdXz/am13/3d6g/9nanT/Z2p0/2hrdP9oa3L/a212/2tueP9tcHn/dXd9/2xudf9vcXX/
    +bnB3/25wdv90dn3/am12/2ptd/9wc33/bG51/2xudf9sbnX/bG51/2ptd/9qbHP/cHJ5/25wd/9ucHf/
    +bG95/3Bzff9gY2z/bG51/25wd/9ucXv/bnF7/2ptd/9ucXv/am13/2Rncf91d33/c3V8/3N1fP9nanH/
    +b3F1/36Ahv9ucHf/bG95/29xdf9zdXz/bnB3/2xudf9ucHf/bW9z/3N1fP9maG7/bnF7/25xe/9maXP/
    +ZGdx/2xudf9sbnX/b3F1/3Byef9ucXv/bG51/3N1fP9wc33/cHN9/3Bzff9wc33/bnB3/2ptd/9ucXv/
    +c3Z//3l7gf93eX//d3l//3V3ff91eIH/bG95/3l7gf9zdXz/d3qD/2ptd/9wc33/c3V8/3V4gf9wc33/
    +f4GH/3d5f/9wc33/cHJ5/3Bzff9zdn//dXd9/25wd/9tb3P/am13/25xe/9zdXz/am13/3V3ff9ucHf/
    +d3qD/2psc/9sb3n/eHl9/3Byef9ucHf/bnB3/3V3ff9wcnn/c3V8/3V3ff9wcnn/amxz/25wd/9wcnn/
    +c3V8/3N1fP91d33/bG51/3Bzff9zdn//dXiB/2ptd/9zdXz/cHN9/3V4gf9zdn//c3Z//3Bzff97fYP/
    +c3Z//2xvef95fIb/d3l//2xvef9wcnn/d3l//3d6g/9zdXz/c3V8/3N1fP9zdn//cHN9/3Bzff93eoP/
    +dXiB/3t+h/95e4H/bnF7/3l8hv93eX//eXuB/3l7gf9ucHf/d3l//3d6g/9zdXz/eXuB/3d6g/9zdn//
    +eXyG/3d6g/91eIH/c3V8/3N1fP9zdn//dXiB/3l8hv9wc33/bG95/3V3ff91d33/cHJ5/3d5f/94eX3/
    +cHJ5/25wd/9nanT/bG95/25xe/91d33/dnh8/3V3ff9sbnX/am13/25wd/9nanH/cHJ5/3Byef9wc33/
    +bnF7/3Bzff91eIH/cHN9/2xvef9zdn//dXd9/25xe/9qbXf/bnF7/3N2f/9sb3n/bnB3/2dqdP91d33/
    +b3F1/25wd/9ucHf/amxz/25wd/9ucHj/a254/2ptd/9tb3P/cHJ5/2ptd/9qbXf/Z2pz/2Vocf9sb3n/
    +Zmhu/2dqdP9gY2z/Z2p0/2hrdf9oanD/aWx2/3BzfP9iZW7/bnF7/2ptd/9maXP/Zmlz/3V4gf9qbXf/
    +Z2p0/25xe/9qbXf/bnF7/25xe/9ucXv/bnF7/25xe/91d33/cHJ5/2psc/9ucXv/Z2p0/2dqdP9sbnX/
    +bnF7/2Jlbv9ucXv/am13/2psc/9zdXz/Zmlz/2Rncf9nanT/aGty/2xvd/9sbnb/c3V8/3V3ff9sbnX/
    +bnB3/2tud/9tb3b/cXN6/21vdv9wcnn/dXd9/2xvef9sb3n/bG95/2xvef9sb3n/bG95/3N2f/9wcnn/
    +cHJ5/3Bzff91eIH/Zmhu/25wd/9vcXX/c3V8/3N1fP9wcnn/c3V8/2psc/9qbHP/d3l//3V4gf9wc33/
    +cHJ5/3Byef9/gYf/bG95/25wd/9vcXX/c3V8/2xudf9tb3P/am13/2ptd/9wc33/ZGdx/2xvef9ucXv/
    +YmVu/2Zpc/9sbnX/Z2p0/21vc/9sbnX/am13/2dqdP9ucXv/bnF7/3Bzff9sb3n/bG95/2ptd/9nanT/
    +bG95/2ptd/9zdXz/dnh8/3Z4fP9zdXz/cHJ5/2psc/93eX//am13/3N1fP9sbnX/b3F1/29xdf9wcnn/
    +dXd9/36Ahv91d33/c3V8/21vc/9ucXv/cHN9/3N1fP9sb3n/Z2p0/2ptd/9sb3n/dnh8/29xdf94eX3/
    +bnB3/3V3ff9nanH/bnB3/3h5ff9wcnn/bnB3/2xvef9zdXz/c3V8/3Byef92eHz/cHJ5/2psc/9sbnX/
    +cHN9/3V4gf91eIH/dXiB/2ptd/9ucXv/bG95/3Bzff9qbXf/cHJ5/2xvef9zdXz/bG95/3Byef9ucHf/
    +eHl9/3V3ff9qbXf/foCG/3V4gf9tb3P/bW9z/3V3ff91eIH/bW9z/2xudf9nanT/bnB3/2ptd/9sbnX/
    +cHJ5/2xudf92eHz/dXd9/2dqdP91d33/bnF7/3N1fP9ucXv/Z2p0/3Bzff9wc33/bG51/2xvef9qbHP/
    +Z2px/2dqdP9nanT/am13/2psc/9nanH/bG95/2dqdP9zdn//Zmlz/2Rncf9nanT/bG95/2psc/9wcnn/
    +cHJ5/2Zpc/9sbnX/Z2p0/2psc/9qbXf/cHN9/3Bzff93eX//bG51/2ptd/9sbnX/amxz/3N1fP9ucHf/
    +cHJ5/3Byef91eIH/dXiB/3V4gf9ucXv/eXuB/3V4gf9ucHf/ZGdx/2xvef9wc33/bnB3/21vc/9nanH/
    +dXd9/21vc/9qbXf/am13/2dqdP9sb3n/bW94/2xudv9maXP/amxz/2ptd/9kZ3H/Zmlz/2Nmbv9jZm//
    +bG94/2dqcf9nanT/YGNs/2xvef9sb3n/amx0/2hrdf9oa3T/Wl1m/2dqdP9nanH/XWBq/2Rncf93eX//
    +am13/2ptd/9zdXz/bnB3/3Byef9zdXz/c3V8/3Byef9wcnn/dXd9/3Byef9ucHX/c3V8/25wd/9wc33/
    +b3F7/3V3ff9naXP/d3l//3N2f/9sb3n/dnh//25wd/9vcXX/bW92/2xudf9sbnX/bnB3/29ye/9wc33/
    +Z2px/2psc/9sbnX/amxz/29xev9sbnX/bW92/3V3ff9qbXf/am13/21vef9nanT/bW9z/2Rncf9ucHj/
    +bG51/2tud/9rbnf/c3V7/2Zpc/9qbXf/bnB3/3V3ff9ucXv/c3Z//3N1fP9qbHP/Z2p0/3V3ff92eHz/
    +cHJ5/25wd/9vcXX/fX6B/2ptd/9qbXf/bG95/3Bzff9sbnX/bG51/2dqdP9qbXf/bnF7/2Jlbv9sb3n/
    +bG95/2Rncf9iZW7/amxz/2dqcf9qbXf/amxz/2ptd/9maXP/bnF7/2xvef9sb3n/bG95/3Bzff9sb3n/
    +bG51/25wd/9sb3n/dXiB/3l7gf95e4H/c3Z//3V4gf9zdXz/eXyG/3V4gf97fYP/c3Z//3V4gf9wc33/
    +e32D/3t9g/+Bg4r/fn+D/35/g/9zdn//e32D/3t9g/97fYP/c3Z//3Byef9wc33/dXiB/3N2f/9ucHf/
    +d3l//3Bzff93eoP/am13/25wd/93eX//bG95/3Byef9wcnn/dXiB/3V4gf9ucXv/d3l//3N1fP9qbHP/
    +bG51/3N1fP9zdXz/dXd9/3V3ff9qbXf/am13/2ptd/91d33/amxz/29xdf9ucHf/c3V8/2xudf9wcnn/
    +bW9z/3V3ff91d33/bG51/3t9g/93eX//bG51/2xudf9zdXz/d3l//3Byef9sbnX/bG51/25wd/9wcnn/
    +bnB3/3N1fP9vcXX/dXd9/3V3ff9nanH/d3l//25xe/92eHz/cHJ5/25wd/92eHz/c3V8/2xvef9ucXv/
    +bG95/2psc/9ucXv/bnF7/2xudf9vcXX/bnB3/3N2f/9ucHf/e32D/3N1fP9ucHf/dXd9/3N2f/9ucXv/
    +dXiB/3V3ff9wc33/bnB3/25wd/9vcXX/bG51/3Byef91d33/eHl9/25wd/9wc33/bnF7/2xvef91eIH/
    +cHN9/3V4gf9ucHf/cHJ5/3Byef9wcnn/bG51/3N1fP9ucXv/am13/2Rncf9sb3n/cHN9/21vc/9tb3P/
    +amxz/3Z4fP9ucHf/bG95/3Bzff9sb3n/bnF7/25weP9wc33/bG51/2xudf9wcnn/am13/2ttdf9ucHX/
    +bG52/3J0e/9sb3n/cHJ5/2Zpc/91eID/bnF7/3BzfP9vcnv/dXd9/2dqcf9zdXz/b3F4/2ttdP9sbnX/
    +dXd9/21wd/9rbXX/c3V8/2ptd/9vcnz/bXB6/21wev9tcHr/aWx2/21wev9wcnr/a21y/3Fzev9tb3T/
    +cHJ5/3Byef91d33/a210/3d5gv9wc3z/bnF6/3V3ff9ucHf/bW92/25wd/9tb3T/bnB1/21wef9vcnv/
    +bnF7/2dqdP9sbnX/amx0/2ttdP9wcnv/cHJ7/29xev96fIL/cHJ6/29xeP93eoL/b3J8/29xef9pbHb/
    +b3J8/2ptdv9tcHr/bXB6/29ye/9iZW7/Z2p0/2xudf9sb3n/bG95/2xvef9sb3n/Zmlz/2ptd/9wc33/
    +dXd9/2xvef9qbXf/Zmlz/3d6g/9sb3n/Z2p0/2ptd/91d33/bG51/2xvef9nanH/bnB3/3N2f/9qbHP/
    +c3V8/3Bzff9qbXf/bnB3/25xe/9sb3n/bnF7/3Bzff9ucHf/bnB3/3Bzff91d33/c3V8/3V4gf9zdn//
    +cHN9/3Byef9ucXv/bnF7/3N2f/91eIH/e32D/3Bzff9zdn//bnB3/3d5f/9ucXv/dXd9/2ptd/9qbXf/
    +bG51/3Byef91d33/d3l//3Bzff9ucHf/bnB3/3N1fP9wcnn/cHJ5/2xvef9qbXf/bG51/2xvef9sb3n/
    +Zmlz/3Bzff9qbXf/dXd9/2Jlbv9nanT/d3l//2ptd/9tb3P/bG51/3Byef9zdXz/bG51/3Z4fP9wcnn/
    +bG51/2psc/9sb3n/bG95/3V3ff91d33/am13/2ptd/9qbHP/am13/2Zpc/9sbnX/am13/2xvef9qbHP/
    +cHJ5/29xdf95e4H/dnh8/2xudf95fIb/e32D/29xdf9sbnX/c3V8/3d5f/9wcnn/bnB3/25wd/9vcXX/
    +c3V8/2psc/9ucHf/bW9z/3V3ff91d33/Z2p0/3V4gf9ucXv/c3V8/2dqdP9maXP/bnB3/2ptd/9nanT/
    +Z2p0/2Zpc/9kZmz/Zmhu/2dqdP9maG7/ZGdx/2Zobv9maXP/ZGdx/3Bzff9maXP/ZGdx/2xvef9sb3n/
    +amxz/3V3ff9wc33/bnF7/2ptd/9qbXf/amxz/2xudf9sb3n/dXd9/3N1fP9tb3P/b3F1/3Byef9qbXf/
    +cHN9/25wd/91d33/bW9z/25wd/9sb3n/am13/2xudf92eHz/cHJ5/25wd/9qbHP/bnB3/3N1fP9tb3P/
    +bG95/25wd/97fYP/cHN9/3d6g/9ucXv/bG95/3Byef9vcXj/cHJ5/2dqcf9sbnX/bnB3/25wd/9vcXj/
    +bnB1/2xvdv9ydHv/bW9z/3Byef9nanH/cHJ5/21vdv9ydHv/b3F6/3V3ff9jZnD/a254/2ptd/9maXL/
    +Z2ly/3F0e/9oa3X/Zmlz/25xev9pbHT/bG95/25xe/9pbHX/amx1/2hrc/9sb3f/am13/2Zobv9pbHb/
    +Z2pz/2hrdf9tcHj/am12/2Nlbv9wc3r/aGt0/2xudP9sb3n/aGtz/2ZocP9sb3f/amxy/2tud/9ucHb/
    +c3V8/3N1fP9qbXf/bnB3/3Byef9ucHf/cHJ5/3J0ev9vcXj/dnh+/3Bze/9rbXb/cXR+/25wd/9ucHf/
    +am12/3BzfP9sb3f/cXN6/3Fzev9wcnn/Zmlz/2ptd/9qbXf/bG95/2Zpc/9maXP/Z2p0/2Rncf9iZW7/
    +ZGdx/25wd/9kZ3H/Z2px/2Jlbv9zdXz/Zmhu/11gav9kZmz/bG95/2Rncf9maXP/XWBq/2Zobv9qbXf/
    +XWBq/2dqdP9kZ3H/XWBq/2Jlbv9kZ3H/Z2px/2dqdP9sb3n/Z2p0/2psc/9ucXv/cHN9/25xe/9sb3n/
    +bG95/25wd/9sbnX/bnB3/29xdf92eHz/cHN9/3d5f/9zdn//eXuB/25xe/95fIb/c3Z//3V4gf9ucXv/
    +c3V8/3N1fP91eIH/eXuB/3l8hv9zdn//bnF7/25xe/91eIH/cHN9/3N2f/9wc33/bnB3/3N2f/91eIH/
    +c3Z//3Byef95e4H/c3Z//3l8hv9ucHf/b3F1/3d5f/9vcXX/bnB3/3Byef9zdn//cHN9/25xe/93eX//
    +c3Z//2xvef9ucHf/bnF7/3Byef92eHz/eHl9/25wd/93eoP/c3Z//3l7gf9ucXv/cHJ5/3Byef9wc33/
    +bG95/3Bzff9sb3n/d3qD/3V3ff9ucHf/fn+D/3l7gf9vcXX/bG95/3V3ff91eIH/cHN9/29xdf9qbHP/
    +bG95/25xe/9qbHP/bnB3/25wd/91d33/dXd9/2xvef93eoP/dXiB/3t9g/9zdn//bG95/3V4gf9zdn//
    +c3Z//3N2f/91eIH/bG95/3Bzff91d33/bnB3/29xdf9wcnn/c3V8/2xudf97fYP/bnB3/2ptd/91d33/
    +dXd9/21vc/91d33/bnF7/2xvef9maXP/ZGdx/2Zobv9qbHP/Z2p0/25wd/9qbXf/ZGZs/2Zobv9maXP/
    +YmVu/2dqdP9nanH/Z2p0/2psc/9nanT/am13/2ptd/9nanT/dXd9/2xvef9nanT/Zmlz/25xe/9wcnn/
    +bW9z/25wd/9sbnX/d3l//25wd/9wcnn/bnB3/2xudf9vcXX/cHJ5/3Bzff9qbHP/b3F1/3N1fP9ucHf/
    +cHJ5/25wd/9tb3b/b3F4/25wd/9ucXv/Z2p0/3Bzff9vcXj/cnV+/29xef95e4H/Zmlz/3J1fv9qbXf/
    +b3J8/25wd/9xdH7/cnR9/25xef93eYD/cHJ6/3R2fv90dn7/bG95/3F0ff9ucXr/bnB5/29yfP9nanL/
    +bXB6/21wdv9tb3f/dnh9/3J1fv9tb3b/d3l+/29yfP9xdHv/cHN7/2ptd/9maXP/dHZ8/2xudP9ucHf/
    +bnB0/3N1fP9zdXz/Z2p0/2xudf9sb3n/Zmlz/2tud/9xc3r/aGt1/3V3ff9ucHf/ZWhy/3Fze/9qbXf/
    +bG94/21wd/9zdX3/amx0/21wev9ydHr/a254/2Zpc/9ucXv/bG95/3Byef9ucHf/bnB3/25wd/9sbnX/
    +am13/2xvef92eHz/bnB3/25wd/9ucHf/e32D/3V3ff9sbnX/bG95/3V3ff9sbnX/bG95/2Zpc/9qbXf/
    +cHN9/2Rncf9qbHP/bnF7/2psc/9ucHf/c3V8/25wd/9sbnX/c3V8/25wd/9ucHf/cHN9/3d5f/9ucXv/
    +dXd9/3V3ff9wcnn/bG51/25wd/9tb3P/dXd9/3Bzff95e4H/c3Z//3N2f/9sb3n/eXyG/3l7gf9zdn//
    +bnB3/3N1fP9zdXz/c3Z//3t9g/9+gYr/dXiB/3N2f/9ucXv/bnF7/25xe/9ucXv/bG95/2xvef91eIH/
    +c3Z//3N2f/9wcnn/eXyG/3d6g/9+gIb/c3V8/3N1fP95fIb/cHN9/3Bzff9zdXz/dXiB/3N2f/9ucXv/
    +eXuB/3V4gf9ucHf/cHN9/3V4gf91eIH/e32D/36Ahv91d33/c3V8/25wd/91d33/bnB3/25wd/9ucHf/
    +bnB3/2xudf9wc33/am13/3V3ff9wc33/Z2px/3d6g/9zdn//amxz/2xudf9zdXz/dXd9/3Bzff9qbXf/
    +Z2p0/2xudf9wc33/Z2p0/2xudf9sbnX/c3V8/3Bzff9maXP/dXd9/2dqdP9wc33/bnF7/2dqdP9zdXz/
    +bnF7/2xvef9ucXv/bnF7/2ptd/9sbnX/bnF7/2dqcf9maG7/Z2px/2dqdP9kZ3H/dXd9/2psc/9nanH/
    +bnB3/2xvef9maG7/bnF7/2ptd/9ucXv/Zmlz/2psc/9qbHP/bG95/2xvef9wcnn/cHJ5/2dqdP9qbHP/
    +Z2p0/2Zpc/9wc33/bG51/2ptd/9qbXf/am13/2xudf9sb3n/bG51/3Z4fP91d33/bnB3/2Zpc/9wcnn/
    +cHJ5/21vc/9sbnX/b3F1/3h5ff9ucHf/cHJ5/2xudf9sbnX/bG95/25xe/9ucXv/Zmhu/21vc/9zdXz/
    +bnB3/3N1fP9ucHf/b3F2/2ptd/9sbnX/bnB3/2Zobv9zdXz/bnB3/3N1fP9xc3r/eXuC/2hrcv9ydXz/
    +a211/3R2ff9ucHf/cnV//3V3ff9vcXj/dnh9/3Bzff9xdH7/eHqD/3F0fv9wc3z/cHN8/3Byef90d4D/
    +aWxz/3N2f/9ucXv/bXB6/3d5f/90d3//bG95/3V3ff9sb3n/c3Z//29yfP9wcnn/Z2pz/3h6gP9vcXX/
    +cHJ5/25wd/92eHz/c3V8/21vc/9sbnX/bnF7/2psc/9sbnX/cnR8/2Zpc/9wcnn/Zmlz/2Nmb/90dn3/
    +am13/25xev9vcnz/dnh+/21vc/90dnz/dHZ8/25wd/9maXP/bnF7/2ptd/9ucXv/bnF7/2xvef9ucHf/
    +bG51/2psc/9sbnX/dnh8/25wd/9wcnn/bG51/3l8hv9zdn//Z2p0/2xvef9zdn//bnB3/3Byef9sb3n/
    +bG95/25xe/9qbHP/bG95/3Bzff9sb3n/bnB3/3N2f/93eoP/dXiB/3d6g/9wc33/dXd9/3t9g/9+gIb/
    +dXiB/3d6g/97fYP/c3V8/3Bzff9wc33/bnB3/3N2f/9zdn//eXuB/3Bzff9wcnn/am13/3V4gf91d33/
    +cHJ5/25wd/9sb3n/cHJ5/2xvef91d33/d3l//2xvef9sb3n/am13/2xvef9sbnX/bnB3/25wd/9sb3n/
    +d3qD/3d6g/9zdn//bnF7/3t+h/95e4H/foGK/3N2f/9wc33/eXyG/3N1fP91eIH/d3l//3d6g/97fYP/
    +eXyG/3t9g/95e4H/c3V8/3Bzff91eIH/bnF7/3Bzff93eX//bnB3/3N1fP9wcnn/dXd9/2xudf9tb3P/
    +bG51/2ptd/9nanT/cHN9/2ptd/93eX//d3l//2dqcf95e4H/dXd9/2Zpc/9maG7/bG95/2ptd/9nanT/
    +Zmhu/2Jlbv9nanH/am13/2Jlbv9kZ3H/Zmhu/2ptd/9nanT/ZGdx/25wd/9maXP/Z2p0/2dqdP9kZ3H/
    +bnB3/2Rncf9maG7/Z2p0/2ptd/9kZ3H/ZGdx/2dqdP9nanT/Z2px/2dqcf9nanT/YmVu/3Byef9qbHP/
    +amxz/3N1fP9ucXv/bG51/3Z4fP9ucXv/bG95/2Zpc/9qbHP/amxz/25xe/9sb3n/dnh8/3V3ff9sb3n/
    +am13/2xudf9nanT/bnF7/2psc/9wc33/bG95/2xvef9qbXf/am13/2dqdP91d33/bnF7/2xudf9sbnX/
    +cHJ5/3Byef9sbnX/b3F1/29xdf94eX3/bnB3/3Byef9ucHf/amxz/2ptd/9wc33/c3Z//2ptd/9zdXz/
    +dXiB/3N1fP93eoP/c3V8/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/2xvef9wc33/cHN9/3d6g/9nanT/
    +c3Z+/2xvef94eoD/cHN9/3N2f/94eoD/cHJ5/3V3ff9wc33/bnF7/3d5f/9ucXv/bG95/3N1fP9sbnX/
    +dXd9/2RmbP9ucHf/am13/2psc/94eX3/dXd9/29xdf94eX3/b3F1/3N1fP9sb3n/bW9z/2Zobv94eX3/
    +b3F1/3Byef9wcnn/eHl9/3V3ff9tb3P/bnB3/3N1fP9sbnX/bG95/3N1fP9sbnX/dXd9/3Byef9qbHP/
    +d3l//2ptd/9ucXv/cHN9/3V3ff9nanH/c3V8/25wd/9nanH/YGNs/2dqdP9maXP/am13/25xe/9sb3n/
    +bG51/2psc/9nanT/amxz/3N1fP9qbXf/bG51/2psc/93eoP/bnF7/2Rncf9sbnX/cHN9/2xvef9sb3n/
    +am13/2dqdP9qbXf/Z2p0/2ptd/9sb3n/bG51/25wd/9ucHf/dXd9/2xudf9zdXz/b3F1/2xudf9ucHf/
    +dXd9/2ptd/9zdXz/dXd9/2xudf9qbXf/bG95/2xudf9wc33/cHJ5/3l7gf9sb3n/cHN9/25wd/95e4H/
    +dXiB/25xe/9vcXX/b3F1/25wd/9sbnX/c3Z//3t+h/9ucXv/bnF7/3Bzff9sb3n/bG95/2xudf9wcnn/
    +bnB3/3N2f/9zdn//bnF7/2ptd/91eIH/cHN9/3l7gf9wcnn/bW9z/3V3ff9tb3P/bG95/25wd/9vcXX/
    +dXd9/3N1fP9zdXz/c3V8/25wd/9ucHf/c3V8/29xdf9zdXz/d3l//25wd/9wcnn/cHJ5/3Byef9qbXf/
    +bG51/2xudf9sb3n/am13/3N1fP9qbXf/eHl9/3d5f/9vcXX/f4GH/3d5f/9wcnn/b3F1/3Z4fP92eHz/
    +c3V8/2xudf9nanT/bG51/3N1fP9nanT/am13/2xvef9zdXz/cHJ5/29xdf93eX//dXd9/3N1fP9wcnn/
    +b3F1/3Z4fP9wcnn/bnB3/3Byef9wc33/bnB3/25wd/9zdXz/c3V8/21vc/9sbnX/bG95/2dqdP9zdXz/
    +bG51/2xvef91d33/cHJ5/25wd/93eX//cHJ5/3N1fP9qbHP/bnB3/2xvef91d33/c3Z//3d5f/91d33/
    +c3Z//2xvef9ucHf/bG51/3N1fP9tb3P/dXd9/25wd/9sb3n/cHN9/3Bzff9ucHf/eXuB/3N2f/9zdXz/
    +bnB3/3N1fP9ucHf/bG51/2xudf9sbnX/d3l//2ptd/9sb3n/bG95/2dqdP9sbnX/bnB3/3Byef9nanH/
    +b3F1/3N2f/9wcnn/cHN9/2xvef9vcXX/bnF7/29xdf9wcnn/Zmhu/3N1fP9ucHf/dXd9/3V3ff93eX//
    +Z2p0/3N1fP9qbXf/dXiB/2xvef9sb3n/dnh8/21vc/91d33/bG95/2xvef9wc33/bG51/2psc/9ucXv/
    +Zmlz/25xe/9dYGr/Zmlz/3Byef9qbXf/d3l//3Bzff9ucHf/d3l//25wd/9ucXv/bG95/2xvef9nanT/
    +eHl9/25wd/9ucHf/cHJ5/3Z4fP91d33/bnB3/29xdf9zdXz/am13/2xudf9wc33/amxz/3V3ff9sbnX/
    +amxz/3N1fP9qbXf/bG95/3N1fP93eoP/bG51/3V3ff92eHz/bG51/2Zpc/9wc33/cHN9/2xvef9sb3n/
    +bnF7/2ptd/9qbHP/Zmlz/2dqcf91d33/Z2p0/2xvef9maXP/dXiB/25xe/9maXP/bG95/3N1fP9sb3n/
    +bnF7/2psc/9maXP/am13/2psc/9nanT/cHJ5/2dqdP9qbXf/cHJ5/3Z4fP9wc33/dXd9/29xdf9sb3n/
    +cHN9/3l7gf9wc33/c3Z//3V3ff9sb3n/bG95/25xe/9sb3n/dXd9/3N1fP97fof/bnF7/3Bzff9sb3n/
    +eXuB/3N2f/9ucXv/bnB3/3N1fP9ucXv/bnF7/3N1fP93eoP/bG95/25wd/9ucXv/am13/2ptd/9ucHf/
    +bnB3/2xudf9wc33/cHJ5/25wd/9qbHP/dXd9/3Byef91eIH/am13/2psc/9ucXv/bG51/2psc/9qbHP/
    +Zmlz/25xe/9maXP/bnF7/3N1fP9qbXf/bG51/3Byef9tb3P/c3V8/3l7gf9ucHf/c3Z//3N2f/9wc33/
    +bnB3/3Byef9wcnn/c3Z//3Byef93eX//bG95/3Z4fP95e4H/bG51/3+Bh/91d33/bG51/2ptd/91d33/
    +cHN9/3Bzff9sb3n/Z2p0/2xudf9wc33/bG51/3Byef9qbXf/cHJ5/3Byef9qbXf/dXiB/3Bzff9zdXz/
    +bG95/2xudf9zdXz/cHJ5/3Byef9wcnn/dXd9/3Byef9ucHf/bnB3/2xvef9sb3n/am13/2dqdP9nanT/
    +cHN9/2xudf9qbHP/c3Z//2xvef9nanT/bnF7/2ptd/9ucXv/Z2px/21vc/9sbnX/eHl9/3Bzff9zdn//
    +d3l//3Bzff9ucHf/bG95/25wd/9wc33/bG95/3Bzff9ucHf/cHN9/3N2f/9ucXv/bG51/3d5f/9wcnn/
    +bW9z/21vc/9zdXz/bnB3/2xvef9sbnX/bG51/3V3ff9maXP/Zmlz/2Zpc/9dYGr/amxz/2ptd/9sb3n/
    +Zmlz/2xudf9wcnn/bG51/25wd/9tb3P/am13/2xvef9qbXf/bnF7/2Rncf9wc33/bG51/3N1fP9zdXz/
    +dnh8/2dqcf9zdXz/b3F1/3V3ff9sb3n/bG95/3V3ff9ucHf/dXiB/3Byef9wcnn/c3Z//25xe/9ucHf/
    +c3V8/2ptd/9wc33/Z2p0/3V4gf9zdXz/am13/3t9g/91eIH/dXiB/3t9g/9zdXz/dXiB/3Byef9ucXv/
    +c3V8/36Bif9zdn//dXiB/3N2f/95fIb/eXuB/3N1fP9ucHf/dXd9/2xvef9zdn//d3qD/3Bzff95e4H/
    +bnF7/2xudf93eX//bG95/3N1fP93eX//e32D/29xdf92eHz/dnh8/3Byef9sbnX/dnh8/3N2f/9ucXv/
    +c3V8/3V3ff9wc33/c3Z//3Byef9wcnn/eXyG/3Bzff9wc33/am13/3t9g/9wc33/Z2p0/25xe/91d33/
    +bnF7/3N2f/9ucHf/bG51/25wd/9vcXX/bG51/3N1fP9nanT/Zmlz/2xvef9wc33/bG95/2ptd/9kZ3H/
    +amxz/2psc/9ucHf/Z2px/25xe/9wc33/amxz/21vc/9ucHf/cHJ5/25wd/9zdn//d3qD/2xvef9wc33/
    +bG95/3l7gf91eIH/c3Z//3Byef9wc33/d3qD/3V4gf95fIb/foGK/3V4gf9zdn//dXiB/3V4gf91eIH/
    +c3Z//3V4gf9zdXz/eXuB/3N2f/9ucHf/bG51/3V3ff9zdXz/eXuB/2xudf9vcXX/dXd9/2xvef9sb3n/
    +bG95/2xvef92eHz/bnF7/3d5f/97fYP/bnF7/2xvef9wc33/b3F1/25xe/93eoP/bG95/3Byef9wcnn/
    +cHJ5/2xudf9ucHf/bW9z/3Byef9ucHf/dnh8/3Byef93eX//e36H/25xe/+Bg4r/d3l//25wd/9wcnn/
    +c3V8/3Z4fP91d33/c3Z//2xvef9wcnn/c3Z//2xvef9zdn//bnF7/3V4gf9zdn//cHJ5/3+Bh/93eoP/
    +eXuB/3N2f/9wc33/dXiB/3N2f/9zdn//e32D/3d6g/95e4H/dXiB/3N2f/91eIH/c3Z//2xvef9ucXv/
    +bG95/3l7gf9wc33/c3Z//3l8hv9wc33/b3F1/3Bzff9sb3n/c3V8/2Zpc/9tb3P/cHJ5/3Z4fP92eHz/
    +dXiB/3h5ff9zdXz/bG95/25wd/9vcXX/cHJ5/3Byef91eIH/c3V8/3Bzff9zdn//cHN9/2ptd/91eIH/
    +c3Z//2xvef9wcnn/cHN9/2xvef9ucXv/bG95/2xvef93eX//bnB3/3Byef9zdXz/Zmhu/2psc/9qbXf/
    +bnF7/2Zpc/9qbHP/am13/2Zobv9sbnX/Z2px/2Zpc/9nanT/bG51/2xudf9iZW7/dXd9/25wd/92eHz/
    +c3V8/3V3ff9nanT/bnF7/3Byef90d4H/c3Z//3N2f/94eoD/cnR7/36Ahv90d4D/dHeA/3p8gv92eYL/
    +c3Z+/3Z5gv9vcnz/eXuC/21wev91eIH/bG51/2Jlbv9vcnz/a211/2lrcv9xdHv/aWxz/29yfP9qbHP/
    +aWx2/2Zpcv91d33/aWx2/2xveP9qbXf/d3l//3Byef9ucHf/b3F1/3V3ff9sbnX/bnF7/3N1fP9sbnX/
    +dXd9/2xudf9sbnX/d3h9/3Byef9wcnj/dHd7/3h6gP9sbnX/cHN9/3N1fP9tb3b/bG51/3V3ff9zdXz/
    +bnB3/3N1fP9sb3n/am13/2xudf9nanT/bG51/3Z4fP9sbnX/bnF7/2dqdP93eoP/bnF7/2Zpc/9sbnX/
    +dnh8/2xudf91d33/b3F1/2xvef9ucXv/bnB3/29xdf9wcnn/bG51/2psc/9zdXz/dXd9/3Byef9zdXz/
    +bG51/2xudf9qbXf/c3V8/2xvef9zdXz/dnh8/25wd/9ucHf/cHJ5/3Byef9ucXv/dXd9/3t+h/9sb3n/
    +cHJ5/2ptd/93eX//c3Z//3Bzff9ucHf/bG95/25xe/9wc33/c3Z//3l8hv9zdn//cHN9/3Bzff9wc33/
    +cHN9/3Byef9wcnn/bnB3/3N2f/9ucXv/cHN9/2dqdP91eIH/dXd9/3d5f/9sbnX/bG51/3Bzff9sb3n/
    +am13/2xudf9ucHf/dXd9/3Byef9zdn//d3l//2xudf9vcXX/c3V8/29xdf9ucHf/eHl9/3Byef9ucXv/
    +bnF7/2ptd/9nanT/bG95/2xudf9wcnn/bnB3/3V3ff9sbnX/dXd9/3l7gf9vcXX/gYSN/3d5f/9sb3n/
    +cHJ5/3Z4fP91d33/dnh8/3Byef9maG7/bnB3/3Bzff9wcnn/dXiB/3Byef9wc33/c3Z//3N1fP9/gYf/
    +bnF7/3l7gf9wc33/c3V8/3l8hv93eoP/cHN9/3d6g/9wc33/c3Z//25xe/9ucXv/cHN9/3Bzff9ucXv/
    +cHN9/3Byef93eoP/cHN9/3Bzff93eoP/dXiB/3Bzff91eIH/dXiB/3V4gf9qbXf/cHN9/3Bzff95e4H/
    +c3Z//3l7gf95e4H/d3qD/3Bzff9wc33/dXiB/3d6g/9zdn//d3qD/3N2f/91eIH/c3Z//3Byef9ucHf/
    +d3l//3N2f/9sb3n/bG95/25xe/9sbnX/c3V8/2xudf9ucHf/d3l//2dqdP9zdn//c3Z//2Zpc/9vcXX/
    +bnB3/2xvef9kZ3H/bG51/3N1fP9vcXX/bnB3/25wd/9zdn//cHN9/25xe/9wc33/Zmlz/3d5f/9sb3n/
    +dHeA/3h6gf93eX//am13/3BzfP9sb3n/cnV+/3J0e/91d33/dXh9/29xdv94eoH/bXB3/25weP9xdH3/
    +bnF7/25wd/9wcnr/aWx2/29ye/9laG//aWx1/3J0ff9rbnj/cnV+/21weP9sb3n/dnh//2xvef9ydHv/
    +cXN6/2psdP9naXD/cXN5/2psdP9sbnX/bG95/3d6hP9tcHr/cHN9/2xvef9wc33/bG95/25xe/9ydX7/
    +bXB6/3h6gP9vcXj/bG51/3Z3ff9ydHv/b3F4/3N1e/90dn3/bnB0/3N1e/90dn3/bnF6/25wd/92eHz/
    +c3Z//3Byef9wcnn/c3V8/2xudf9zdXz/bnB3/2xudf94eX3/am13/3Bzff9maXP/c3Z//3Bzff9maXP/
    +bG51/3N1fP9sbnX/dXd9/2xudf9ucHf/bnF7/25wd/9ucHf/cHN9/2xvef9sbnX/c3V8/3h5ff9wcnn/
    +c3V8/21vc/9vcXX/bG51/3l7gf9wc33/d3l//3V4gf9wcnn/bnF7/3Bzff9ucXv/bG95/3h5ff93eX//
    +bW9z/2xudf9nanT/d3l//25xe/9sb3n/amxz/2psc/9qbXf/bG95/2xvef9zdXz/cHJ5/2xudf9sb3n/
    +am13/2xudf9sbnX/am13/2dqdP9ucXv/bG95/2xudf9maXP/dXd9/25xe/95e4H/bG51/25wd/9zdXz/
    +cHJ5/2xvef9qbXf/bG51/3Z4fP9ucHf/dXd9/3d5f/9sbnX/b3F1/3Bzff9tb3P/bnB3/3V3ff9ucXv/
    +cHJ5/25xe/9sbnX/bW9z/2xvef9qbXf/amxz/2ptd/9zdXz/am13/3Z4fP91eIH/bG51/3+Bh/91d33/
    +bW9z/2xudf9wc33/bnF7/3N1fP9wcnn/ZGdx/21vc/9zdXz/bW9z/3Z4fP9sbnX/cHJ5/25wd/9sbnX/
    +eXuB/2ptd/91d33/bG51/2dqcf93eX//am13/2xvef9ucXv/am13/25xe/9qbHP/bG51/2ptd/9sb3n/
    +cHJ5/25wd/9sbnX/dXd9/2xvef9ucHf/d3qD/3Bzff9ucXv/c3Z//25xe/9ucXv/Z2p0/2xvef9ucXv/
    +eXuB/3V4gf93eoP/dnh8/3N1fP9sbnX/bW9z/2xudf9ucHf/bW9z/2xvef9sbnX/bG95/2xudf9maXP/
    +YmVu/2xvef9nanT/Zmlz/2xudf9sb3n/am13/25xe/9qbHP/bG51/3V3ff9qbHP/bG95/3Bzff9maXP/
    +am13/21vef9tcHr/amxz/2psc/9zdXz/bG51/2xudf9vcXX/c3V8/3V3ff9sb3n/bnF7/2dqdP91eIH/
    +bG95/3R2e/92eHz/dHZ9/2ptdv9ucHn/bG93/3Bze/9ucXn/c3Z+/3Fzev9sbnb/dnmC/3Byev9ydX7/
    +dnh+/3N1fv91d33/d3l//25wef91eID/a212/3Bzff9vcnz/bW94/3V3f/9xdHz/bnF7/3V3gP9wcnv/
    +cXN6/3R2fP9tcHr/bnB5/3N1fv9tb3j/bnB5/3J0ef93eoH/bW94/3V3ff9sbnX/cHJ5/25wd/9wcnn/
    +dHZ8/21wef93eX7/bnF5/2tueP9xdHz/b3J6/21vdv9ucXn/c3V9/2xvdv9tcHj/bnF7/29yev9sb3n/
    +dXd9/3V3ff9ucXv/dXiB/3V4gf9sb3n/cHN9/2xvef9qbXf/dXd9/3N1fP91d33/Zmhu/3V3ff9ucXv/
    +ZGdx/2psc/9wc33/bG51/25wd/9nanH/Z2p0/2psc/9maG7/Zmhu/2xvef9nanT/Zmlz/3Byef92eHz/
    +c3V8/3Byef9sb3n/bnB3/25wd/95fIb/cHN9/3l7gf91eIH/cHJ5/3N2f/91eIH/eXyG/3V4gf9+gIb/
    +foGK/3N1fP9wc33/cHN9/36Biv97fYP/c3Z//3Bzff9zdn//c3Z//3N2f/9zdXz/dnh8/25wd/9ucHf/
    +cHJ5/21vc/9vcXX/b3F1/2xvef9sb3n/cHN9/3Bzff9ucHf/Z2p0/3d6g/91eIH/foGK/2ptd/9ucXv/
    +dnh8/3V3ff9sb3n/bG95/3Byef91eIH/bnF7/3V4gf93eoP/bG95/3Bzff91eIH/bnF7/25xe/94eX3/
    +cHJ5/3N2f/9wc33/cHJ5/3Byef9wc33/bnB3/3Byef9ucXv/eXuB/25wd/91eIH/dXiB/2xvef9/gYf/
    +eHl9/29xdf9sbnX/cHN9/25xe/91d33/bnF7/2BjbP9qbHP/am13/2Zobv9qbXf/Zmhu/2Zpc/9nanH/
    +Z2px/3V3ff9qbHP/bG95/2xudf9nanH/cHJ5/2xvef9sb3n/bG95/2xudf9ucHf/b3F1/29xdf9ucXv/
    +bnF7/3V4gf9ucXv/bnB3/25xe/9wc33/cHJ5/3l7gf9wc33/c3Z//3V4gf9zdn//bnF7/2xvef9zdn//
    +d3qD/3t9g/93eoP/eXyG/3l7gf93eoP/dXiB/3N1fP9wcnn/c3Z//3Bzff91eIH/cHN9/3l7gf9wc33/
    +c3V8/25xe/97fYP/eXuB/3Bzff9wc33/cHN9/25xe/9sb3n/am13/29xdf92eHz/am13/25xe/9zdn//
    +Zmlz/2xvef9vcnz/b3J7/2dqdP9qbXf/c3Z//25xe/9sb3n/bnF7/3V4gf91eIH/cHN9/3N2f/9sb3n/
    +eXuB/29ye/93eYD/eXuB/3l7gf9wc3v/dHd+/3V3fv92eH//c3aA/3t9hP90dn3/bnF6/3V3gP9vcnz/
    +dnmD/3d6hP90d3z/d3mA/3x9gv91eH//e3yA/25xe/91d4D/dHd//29yfP92eYL/cnV+/29yef93eoL/
    +dXiB/3F0ff93eX//bG94/2xueP9vcXj/bG94/21wef9ydHv/dnh8/29xef9wcnn/bG51/3N1fP9qbHP/
    +b3F3/3J0e/9rbnj/eHp//3Byef9sb3n/dXiB/3V4gf9ydHv/b3F5/29yfP9ucHj/cXN6/29yef9ydX3/
    +bnB3/3d5f/91eIH/bnF7/3V3ff91d33/bnB3/3N1fP9ucHf/bG51/3V3ff9zdXz/dnh8/2dqcf92eHz/
    +dXd9/2dqdP9sb3n/dXd9/21vc/91d33/am13/2xudf9tb3P/bW9z/2xudf9wcnn/bG51/2psc/9zdXz/
    +c3V8/3N1fP9wcnn/bG51/2xudf9vcXX/eXyG/25xe/91eIH/bnF7/2xvef9ucXv/bnF7/25xe/9wcnn/
    +dXd9/3V4gf9sb3n/cHJ5/2psc/91d33/c3V8/2xudf9ucHf/bG95/2ptd/94eX3/bnB3/3V3ff9ucHf/
    +cHJ5/3Byef9qbXf/am13/2xudf9qbHP/bG51/2xvef9ucXv/bG51/2dqdP91d33/bG95/3V4gf9maXP/
    +bG95/3V3ff9zdXz/bG51/2psc/9sbnX/bnF7/2ptd/9wc33/d3l//2xudf9wcnn/dXd9/25wd/9ucXv/
    +dXd9/3V4gf91eIH/c3Z//3Byef9sb3n/bnB3/25wd/9sbnX/bG51/3V3ff9ucHf/d3qD/3V4gf9ucHf/
    +f4GH/3V4gf9tb3P/b3F1/3V3ff9ucXv/dXiB/3Bzff9nanT/bG95/25xe/9ucHf/dXd9/21vc/91d33/
    +bnB3/25wd/93eoP/bnB3/3N1fP9ucHf/bW9z/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/25wd/9ucHf/
    +bnB3/29xdf91d33/bnB3/21vc/9sbnX/am13/2psc/9wc33/bG95/2ptd/9ucXv/Z2p0/2psc/9iZW7/
    +Zmlz/2ptd/9nanT/Zmhu/2ptd/9maXP/Zmlz/2dqcf9maG7/ZGdx/2Rncf9kZ3H/Zmlz/2Jlbv9nanT/
    +YmVu/2BjbP9kZ3H/bG95/2xvef9gY2z/Zmhu/2RmbP9nanT/ZGdx/11gav9kZ3H/Z2p0/2Zpc/9nanT/
    +am13/11gav9maXP/bG95/2xveP9oa3T/Zmlz/2ptd/9qbXf/bG51/21vdv9wc3z/bG95/2ptd/9qbXf/
    +Zmlz/3N1fP9sbnb/cXN5/3F0ff90d3//bnB1/25wd/9vcXn/bXB6/25weP9wc33/bW92/2psc/9vcnv/
    +am13/29yfP9ucXv/bG51/25wd/9ydHv/bnF6/3d6gv9ydHv/c3Z//3V4gf91eIH/e32D/3V4gf90dn3/
    +e32D/3d6g/9xdH7/e32G/3d5ff91eIH/dnh9/3V4gf90dn3/eXuA/3x/h/94eoH/enyC/3l7gf99foH/
    +c3Z//3N2f/94eoD/cXN5/3p7gP9xc3f/bG95/3V3ff91d33/bW92/21vdv9tb3f/aGt1/2ttdP9oa3X/
    +bG95/2xvef91d33/c3Z//3Byef9wc33/dXd9/2ptd/9wc33/bG51/2xudf91d33/cHJ5/3Z4fP9nanH/
    +dnh8/3N2f/9sbnX/bW9z/3N1fP9ucHf/d3l//25wd/9ucHf/b3F1/21vc/9sbnX/c3V8/21vc/9qbXf/
    +cHN9/3V3ff9zdXz/c3V8/21vc/9sbnX/bG51/3N2f/9qbXf/bnF7/2dqdP9maXP/Z2px/2dqcf9maXP/
    +ZGdx/2xvef9wcnn/amxz/2psc/9maXP/c3V8/25xe/9sbnX/am13/2psc/9sbnX/c3V8/2xudf9sb3n/
    +bG51/2ptd/9qbXf/am13/2xvef9sbnX/bG51/2xudf9ucXv/cHN9/2ptd/9ucHf/d3l//25wd/93eX//
    +amxz/25wd/92eHz/dXd9/2xudf9qbXf/bG51/3V3ff9sb3n/bG95/3d5f/9qbXf/bG95/3Bzff9sbnX/
    +cHJ5/3V3ff9zdn//c3Z//3Bzff9ucHf/bG95/25wd/9sb3n/bnB3/2xvef91d33/bnB3/3l8hv93eX//
    +bW9z/35/g/93eX//bnB3/2xudf9zdXz/bnB3/3V3ff9wcnn/Zmlz/29xdf9zdXz/bnB3/3Z4fP9tb3P/
    +c3V8/3N1fP9vcXX/e32D/25wd/9wcnn/bnF7/2xudf9zdXz/am13/2xvef9qbXf/am13/2ptd/9tb3P/
    +bG51/2xudf9vcXX/c3Z//25xe/9ucHf/bG95/2xvef9ucHf/dnh8/3Byef9ucHf/cHJ5/25wd/9ucHf/
    +amxz/3Byef9zdn//dXiB/3Bzff97fYP/c3Z//3V4gf9sb3n/bnB3/29xdf9ucHf/bG51/3Byef9qbXf/
    +c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/ZGdx/2ptd/9sbnX/c3V8/2xudf9kZ3H/bG51/25xe/9nanT/
    +bG95/2xvef9iZW7/am13/25xef9vcnr/am13/2dqdP9ucHf/bG51/21vc/9tb3T/cnV8/25xev9qbXf/
    +bnB3/25wd/93eH3/bW92/3Byef9vcXr/bG95/2dqc/9naXP/Zmlz/2Nmb/9nanH/aGp0/2Vocf9maXP/
    +bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/bW9z/2ptd/9ucXv/am13/25xe/9sb3n/
    +bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/bnB3/29xef91d33/bG50/2xveP9qbXf/
    +cHN9/2psc/9sbnb/bG95/2xud/92eH7/bG95/2xudf9zdXz/bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/
    +bnB3/3d5f/9sbnX/dXd9/3Byef9ucHf/c3V8/3V3ff9ucHf/dXd9/2xvef9qbXf/c3Z//25xe/91d33/
    +am13/3l7gf93eX//cHJ5/3N1fP91eIH/cHJ5/3t+h/9wcnn/bG95/29xdf9ucHf/bG51/3V3ff9tb3P/
    +bG51/3V3ff92eHz/c3V8/3Byef9sbnX/amxz/2xudf95e4H/bG51/3Z4fP9ucHf/bG51/3Byef9ucHf/
    +cHJ5/25wd/91d33/eHl9/29xdf9sb3n/bG95/3V4gf93eX//bnF7/3d6g/9zdn//c3Z//3l7gf9zdn//
    +dXiB/3V3ff95e4H/e32D/3Z4fP95e4H/dXd9/3N2f/91eIH/dXiB/3d6g/9zdXz/bnF7/36Ahv93eoP/
    +foGK/3V3ff9zdn//d3qD/3t9g/9wc33/bnB3/2xvef9zdXz/cHN9/3Bzff91eIH/bnB3/25wd/9zdXz/
    +bG51/2xudf9zdXz/dXd9/3Bzff91eIH/cHJ5/25xe/9wcnn/bnB3/2xvef9ucHf/dnh8/25wd/95e4H/
    +d3l//3Byef9+f4P/dXd9/25wd/9sbnX/c3V8/2xudf91d33/bG95/2Rncf9qbHP/am13/2dqcf9ucXv/
    +am13/2ptd/9qbXf/Z2px/3N2f/9sbnX/bnF7/25xe/9sbnX/c3V8/2xvef9sb3n/bG51/29xdf9sb3n/
    +bnB3/2xvef9ucXv/bnB3/3N2f/9sb3n/bnB3/25wd/9wcnn/b3F1/3Z4fP9ucXv/bG95/25xe/9wc33/
    +bnF7/2xvef9zdn//c3Z//3V4gf9wc33/eXuB/3N2f/9zdn//bnB3/25wd/9tb3P/bnB3/25wd/9zdXz/
    +bG51/3N1fP9qbXf/Z2px/25wd/92eHz/bnF7/2dqdP9sbnX/bnB3/3Bzff9ucHf/Z2px/21vc/9sb3n/
    +Z2p0/2ptd/9sb3n/ZGZs/2xudf9ucXv/b3J6/2ptd/9qbXf/bG95/2xvef9qbHP/bW9z/3J1fP9wcnz/
    +am13/25wd/9ucHf/dXd8/2xudf9vcnj/bnF7/29yfP9nanT/ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/
    +am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/
    +bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/bnB3/2xudf9ydHv/dnh+/25wd/9vcXn/
    +bnB3/3Z4fP9sbnX/bnB3/29xef9tb3X/dnh9/3Byef9vcXX/dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/
    +bG51/2xudf9wc33/b3F1/3Z4fP91d33/bG51/25xe/9wc33/bG51/3V3ff9sbnX/amxz/3N1fP9ucHf/
    +c3V8/2Zobv9wc33/cHN9/2ptd/9vcXX/c3V8/29xdf92eHz/bW9z/2ptd/9sbnX/bG95/2dqdP9wc33/
    +bG51/2xudf9zdXz/dXd9/3Bzff9wcnn/bG51/21vc/9qbHP/c3Z//2xudf9zdXz/bnB3/2xudf9zdXz/
    +bW9z/2ptd/9tb3P/bnF7/3Z4fP9ucHf/bnB3/2xvef91eIH/dXd9/2xvef9zdn//bnB3/2xvef91d33/
    +bG95/25wd/9ucHf/c3Z//3N2f/9ucXv/cHJ5/25xe/9ucHf/bnF7/3N2f/9zdn//bnB3/2dqdP91eIH/
    +bnF7/3d5f/9sb3n/b3F1/3Bzff93eX//b3F1/25wd/9qbXf/c3V8/3Byef9ucHf/eHl9/25wd/9wcnn/
    +cHJ5/2xvef9wcnn/c3Z//3d5f/9qbHP/Z2p0/2dqcf9sbnX/Z2px/2dqdP9nanT/bG51/3N1fP9qbXf/
    +dXiB/3V3ff9sb3n/e32D/3V3ff9qbXf/am13/3Bzff9qbXf/dnh8/2ptd/9kZ3H/bG51/3Z4fP9ucHf/
    +dnh8/3Byef9wc33/dXiB/25xe/97fof/bnF7/3Bzff9wc33/bnF7/3d5f/9ucXv/cHJ5/25wd/9wcnn/
    +bnF7/25wd/9ucHf/cHN9/25xe/9zdn//cHN9/3N1fP9ucXv/bG95/25wd/93eX//bG95/3Byef9qbXf/
    +bG51/25xe/9tb3P/dXd9/25wd/9ucXv/bnB3/3h5ff9wcnn/dXd9/2xudf9qbXf/bG51/2ptd/9qbHP/
    +bG95/2Rncf9ucXv/ZGdx/2Jlbv9kZ3H/c3V8/25xe/9qbXf/bG51/25wd/9zdXz/c3V8/2Zobv9tb3P/
    +bnB3/2xudf9ucHf/bG95/2RmbP9qbXf/bW93/25xef9rbnf/am13/25wd/9zdXz/bnB3/25wd/91d3z/
    +dXd7/25wd/9tb3P/bW9z/3N1e/9sb3n/cnR6/3J0e/9xc3r/bG51/2psc/9ucHf/bG95/3Bzff91d33/
    +bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn//bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/
    +dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/bnB3/2xvef9tb3n/dHZ8/3h6g/9tb3j/
    +cHN8/25wd/94eX3/Z2px/25weP9sbnb/cHJ5/3h6gf91eIH/cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/
    +cHJ5/25xe/9ucHf/d3qD/3Byef91d33/cHN9/3Byef9wc33/dXd9/2xvef91d33/cHJ5/2dqdP93eX//
    +bnF7/3h5ff9nanH/dXd9/3V3ff9wcnn/b3F1/3N1fP9ucHf/d3l//21vc/9sbnX/bG51/25wd/9nanT/
    +bnF7/2xudf9qbHP/dXd9/3V3ff9wc33/bnF7/2xudf9qbXf/am13/3V3ff9wcnn/dXd9/25wd/9qbXf/
    +cHN9/25wd/9ucHf/bW9z/25xe/95e4H/bnB3/25xe/9ucHf/eXuB/3V4gf9ucXv/dXd9/25wd/9ucHf/
    +c3Z//25wd/9ucHf/bG95/3Byef9ucXv/Z2px/25wd/9vcXX/b3F1/29xdf91d33/bnF7/2ptd/9kZmz/
    +bnF7/2xudf91d33/Z2p0/2psc/9ucXv/c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/bG51/3N1fP9maXP/
    +bnF7/3Bzff9sbnX/amxz/2xvef9wc33/bnB3/3Byef9sb3n/c3Z//2xvef9sb3n/bG95/2xvef9zdn//
    +b3F1/3l7gf93eX//c3V8/36Ahv93eX//bG95/2xvef95e4H/bnF7/3V4gf9ucHf/Z2px/25xe/93eX//
    +bnF7/3d5f/9ucXv/c3V8/3Byef9tb3P/eXuB/2xudf9ucHf/cHJ5/25wd/9zdXz/bnB3/25wd/9sbnX/
    +am13/2psc/9nanT/amxz/2ptd/9sbnX/c3V8/21vc/9qbHP/am13/2xvef9qbXf/d3l//2xudf9sb3n/
    +am13/2ptd/9wc33/am13/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9vcXX/b3F1/21vc/9tb3P/
    +am13/25xe/9maXP/bG95/2Zpc/9kZ3H/Z2p0/3N1fP9sb3n/Zmlz/2xvef9qbXf/c3V8/2xvef9maXP/
    +bG51/25xe/9vcXX/bnB3/29xdf9nanH/bW9z/2ttdP9sb3n/bG92/2xudf9tb3P/c3V8/2xudf9ucHf/
    +dHZ9/29xef9tb3P/bG51/2psc/9zdXz/a254/29xev9ydHv/b3J7/21vc/9nanH/bG51/2dqdP9qbXf/
    +bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/am13/2psc/9sb3n/bG51/2xvef9wc33/
    +am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/c3Z//25wd/9qbXf/Z2p0/29yfP94eoP/
    +b3F4/3V3ff9ucHf/dXd9/2Zpc/9sb3n/am13/2xud/90dn3/cHJ6/2xudf94eX3/cHJ5/2xudf9qbXf/
    +am13/2xudf9sbnX/am13/3N1fP9sbnX/dXd9/25wd/9tb3P/cHJ5/25xe/9qbHP/c3V8/21vc/9qbHP/
    +dnh8/3Bzff91eIH/Z2px/25xe/9zdn//bnB3/25wd/9wc33/bG95/3d5f/9vcXX/bnF7/3N1fP9zdn//
    +am13/3N2f/9zdn//bnB3/3d5f/93eoP/dXiB/3Bzff9wc33/bG95/2xvef91eIH/cHJ5/3N2f/9ucXv/
    +b3F1/3V3ff9sb3n/cHJ5/29xdf9wcnn/d3l//25wd/9vcXX/bG51/3V4gf91eIH/cHJ5/3V4gf9wcnn/
    +cHN9/3d5f/9ucHf/cHJ5/25wd/9sb3n/cHJ5/2psc/9ucHf/cHJ5/29xdf9sbnX/dnh8/25wd/9sbnX/
    +Zmhu/25wd/9tb3P/dXd9/2ptd/9sbnX/bnF7/2xvef9kZ3H/Z2p0/2Zpc/9sb3n/Z2p0/2dqdP9wc33/
    +Z2p0/3Bzff9wc33/am13/2xudf9ucXv/c3V8/25xe/9zdXz/bG51/3Byef9ucHf/bnB3/25wd/9vcXX/
    +dXd9/2xudf94eX3/dXd9/3Byef93eoP/c3V8/2xudf9sbnX/eHl9/3Byef91d33/amxz/2Jkav9sbnX/
    +bnF7/2psc/9wcnn/Z2px/2Zpc/9maXP/ZGdx/3Bzff9qbHP/amxz/2xvef9qbXf/am13/2ptd/9qbXf/
    +bG51/2psc/9sbnX/bG51/2dqdP9qbXf/am13/25xe/9qbHP/bG51/2ptd/9wc33/am13/3N2f/9qbXf/
    +cHN9/2ptd/9ucHf/dXd9/25wd/91d33/bnB3/3Byef9wcnn/cHJ5/21vc/9ucXv/bG51/25wd/9qbXf/
    +am13/2ptd/9wc33/Z2p0/25xe/9qbHP/Z2px/2xvef93eX//c3Z//2xvef9ucXv/bnB3/3Z4fP9wcnn/
    +amxz/2xudf9zdn//bnB3/2xvef9ucXv/Zmlz/25xe/9rbXT/b3J6/29xdv9ucHf/bnB3/3Bzff9sb3n/
    +bnB3/3Z4fv9ucXr/b3F1/25wd/9tb3P/dnh+/2xvdv9tcHr/c3V7/29yfP9qbHP/YmVu/2xudf9qbXf/
    +bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/cHJ5/25xe/9wcnn/d3l//29xdf91eIH/
    +dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/cHN9/3V4gf9ucXv/bG95/2ptd/9wc3z/
    +dnh//3Byef91eIH/c3Z//3t+h/9wc33/d3mC/3Z4f/9ydHn/dHZ+/3BzfP9sbnb/cHN9/3Byef9tb3P/
    +bG95/2xudf9vcXX/bnB3/2xvef9zdn//d3l//3l7gf93eoP/cHN9/3d6g/93eoP/bnB3/3d5f/9zdXz/
    +cHN9/3t9g/9zdn//dXiB/2Zobv9ucHf/dXd9/2xvef9ucHf/c3Z//2xvef93eX//b3F1/25wd/9tb3P/
    +cHJ5/2dqcf9ucXv/c3V8/2xvef91d33/eXyG/3d6g/91eIH/c3Z//25wd/9qbXf/eXuB/3Bzff9zdn//
    +dXiB/3Bzff95fIb/dXd9/3l7gf91d33/eXuB/3+Bh/9zdn//dXiB/3Z4fP+Bg4r/f4GH/3d5f/99foH/
    +dXd9/3d5f/9+f4P/eHl9/3h5ff93eX//d3l//3l8hv9ucXv/dXiB/3d6g/9zdXz/c3V8/3t9g/93eoP/
    +c3Z//2xvef9zdn//dXiB/3l8hv9wc33/cHN9/25xe/93eX//bnB3/25wd/9sbnX/cHN9/25wd/9sb3n/
    +cHN9/2xudf91d33/dXd9/3N1fP9vcXX/cHJ5/3h5ff9wcnn/dXd9/25xe/9zdn//cHN9/25wd/9wcnn/
    +c3V8/3V4gf9zdn//e36H/3t+h/95fIb/f4GH/3t+h/9wc33/dXd9/3+Bh/97fYP/foGK/3d6g/9ucXv/
    +dXiB/3l8hv9zdXz/eXuB/3Bzff9ucXv/bG95/25wd/95fIb/bnF7/25xe/9wc33/bnF7/3Bzff9wcnn/
    +bnF7/3N1fP9wcnn/bnF7/2xvef9ucHf/bW9z/25wd/9zdXz/bnB3/2xvef9ucXv/d3l//25xe/93eoP/
    +bnF7/3N2f/9wc33/bG95/3V3ff9sb3n/dnh8/25wd/9zdXz/bnB3/25xe/9ucHf/cHN9/2xudf9sbnX/
    +bW9z/2ptd/9tb3P/cHN9/2ptd/9ucHf/Z2p0/2Zpc/9nanH/dXd9/3Byef9nanH/bG95/2xudf9wc33/
    +am13/2dqdP9sbnX/bnF7/2ptd/9sb3n/bG95/2BjbP9nanT/amxz/2xvef9rbXX/bG51/2dqcf9nanT/
    +ZGdx/2Zobv9qbXf/Zmlz/2Jlbv9nanH/ZGdx/25wd/9sb3j/bW92/3N1ef9tb3b/bnB3/2dqdP9ucHf/
    +bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn//am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/
    +c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/c3V8/2psc/9wcnn/am13/2dqdP9qbHP/
    +bnB3/3R3fv9rbnX/bnB3/21vdf91eIH/Z2p0/2xvef9sb3n/bG92/3R2ff9wc33/bG95/3Bzff9zdn//
    +cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/2xudf9zdn//c3Z//2xvef9zdXz/dXd9/2xvef95e4H/
    +cHJ5/25wd/91eIH/bnF7/3d6g/9maG7/bG95/3V3ff9sb3n/bnF7/3d6g/9wc33/eXuB/25wd/9ucHf/
    +bW9z/3N1fP9qbHP/bnF7/2xvef9nanT/c3V8/3V3ff9qbXf/bG51/2xvef9qbHP/ZGdx/3N1fP9qbXf/
    +cHJ5/25wd/9tb3P/cHJ5/2xudf9qbXf/amxz/2xvef93eX//Z2px/21vc/9sbnX/d3l//3N1fP9ucHf/
    +dnh8/2xvef9ucHf/eHl9/29xdf9qbXf/amxz/25wd/9wcnn/bnB3/29xdf9tb3P/am13/2xudf9zdXz/
    +bnF7/2ptd/9nanH/cHN9/2psc/9wc33/bG51/2xudf9sb3n/c3V8/2Rncf9nanH/YmVu/25xe/9nanT/
    +bG51/3Bzff9qbXf/bG95/3Bzff9sb3n/bG51/25xe/93eX//cHN9/3d5f/9ucXv/c3Z//3Bzff9ucHf/
    +bnB3/2xvef91d33/b3F1/3Z4fP94eX3/c3V8/3l7gf91d33/bG51/2dqdP93eX//bnB3/3l7gf9wcnn/
    +Z2px/29xdf94eX3/bnB3/3l7gf9ucHf/bG95/3Bzff9ucXv/d3qD/3N2f/93eoP/e32D/3d5f/9+f4P/
    +d3l//3d5f/97fYP/ent//3t+h/95e4H/eXuB/3l7gf97fYP/e32D/3V4gf93eX//fX6B/3+Bh/93eX//
    +f4KM/3d6g/93eoP/cHN9/2xvef91d33/bnB3/3V3ff9qbXf/bG95/2ptd/9ucXv/amxz/2xvef9qbHP/
    +amxz/2dqcf9nanH/Zmhu/2dqdP9nanH/bG51/2Rncf9dYGr/XWBq/2xvef9nanT/YGNs/2Zpc/9sb3n/
    +bnF7/25xe/9qbXf/bG51/2xudf9ucHf/dXd9/3V3ff9maG7/bG51/3N1fP90dn7/cXN5/25wd/9vcXX/
    +bnF7/2xvef9vcXX/dXd9/25xe/9qbXf/bG95/25wd/93eH3/c3V8/3N1e/93eX//c3Z//25xe/9nanT/
    +bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/
    +bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/
    +bG51/25xe/90d37/cHN6/3V3gP9wc33/foGK/3N1fP91eIH/cXR9/21wev9ydX3/cHN8/2ptd/9sb3n/
    +bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9zdn//dXiB/3l7gf9wc33/c3Z//3d5f/9qbHP/
    +d3l//29xdf9qbHP/c3V8/29xdf93eX//Z2px/25wd/94eX3/bnB3/3Byef91d33/cHJ5/3d5f/9sb3n/
    +bG95/25wd/9ucHf/Z2p0/3Bzff9sb3n/bW9z/3N1fP91d33/bG95/2ptd/9ucXv/bW9z/2Zpc/91d33/
    +bG95/3Bzff9qbXf/bG51/2xvef9qbHP/bG51/2psc/9qbXf/dXd9/2Rncf9qbHP/Zmlz/3Bzff9zdXz/
    +Zmlz/3V3ff9qbHP/amxz/3V3ff9sbnX/am13/2dqdP9sb3n/bG95/2ptd/9qbXf/bW9z/29xdf9ucHf/
    +eXuB/3Bzff9sb3n/am13/3Bzff9ucHf/eHl9/25xe/9wc33/d3qD/3t9g/9ucHf/bnB3/2ptd/93eoP/
    +c3Z//3N1fP95e4H/c3V8/3N2f/91eIH/eXuB/3N1fP9zdn//d3qD/2ptd/9wc33/bG51/2ptd/9nanT/
    +Zmlz/2Zpc/9iZW7/bG95/2psc/9wc33/dXd9/2xvef93eoP/bnF7/2ptd/9sbnX/dXd9/2ptd/95e4H/
    +bnF7/2dqdP9sb3n/eHl9/29xdf93eX//bnB3/25xe/9ucXv/bnB3/3l7gf9ucXv/c3Z//3V4gf9zdXz/
    +dXiB/3Bzff9wcnn/bnB3/3Byef91eIH/cHJ5/25wd/9sb3n/bG95/3Bzff9ucHf/bW9z/3V3ff94eX3/
    +cHJ5/3l7gf9wcnn/bG95/25xe/9qbHP/c3V8/2ptd/9wc33/bW9z/3Byef9ucHf/c3V8/29xdf91d33/
    +bG95/25xe/9ucHf/bG95/3Byef9wc33/bnB3/25xe/9zdXz/bG95/3N2f/97fof/e32D/25xe/93eoP/
    +eXyG/3V4gf93eoP/cHJ5/25xe/9zdXz/c3V8/3Bzff9zdn//ZGdx/25wd/9tb3T/cXN6/3Fzev9ucXr/
    +bnB3/2xvef9sb3n/b3F1/3d5f/9ucHf/bW9z/25wd/9ucHf/d3l//3J0ff9xdHv/cnR7/29xeP9ucHf/
    +Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/
    +bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/
    +bG51/2psc/9vcXn/c3V7/25wdf9xc3r/bW9z/3d5f/9qbXf/am13/2ttdP9oa3X/c3Z9/3V3ff9sb3n/
    +bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/am13/2xvef9sb3n/Z2px/2Zpc/9qbXf/
    +XWBq/3Byef9maXP/XWBq/2xvef9maG7/c3V8/2Jlbv9qbXf/dXd9/2dqdP9ucXv/c3V8/2xudf9zdXz/
    +bG51/2xudf9vcXX/cHJ5/29xdf9zdn//c3Z//3Bzff91eIH/eXyG/3V4gf9wc33/cHN9/25wd/9qbXf/
    +d3l//25xe/9wcnn/bnB3/21vc/9zdXz/bG51/2ptd/9qbHP/bG95/3V3ff9iZW7/bG51/2Rncf9sb3n/
    +cHJ5/2Jlbv9qbXf/Z2px/2Zobv9ucHf/Zmlz/2Rncf9kZ3H/Z2p0/2xudf9qbHP/bG51/2dqdP9sbnX/
    +am13/3V3ff9ucXv/bnB3/2xvef9zdn//bG95/3h5ff9ucHf/cHJ5/3V3ff94eX3/bG51/2xudf9nanT/
    +cHN9/25wd/9tb3P/bnF7/2ptd/9sb3n/bnF7/3Bzff9qbXf/bnF7/3d5f/9ucHf/c3Z//25wd/9ucXv/
    +bnB3/2xvef9ucHf/am13/3d6g/9zdXz/eXuB/3t9g/91eIH/eXyG/3N2f/9ucHf/bG95/3l7gf9wcnn/
    +d3qD/25xe/9nanT/bnB3/3l7gf9wcnn/eXyG/3Byef9ucXv/cHN9/25wd/93eoP/bnB3/25wd/9wc33/
    +bnB3/3Z4fP9vcXX/bnB3/2xvef9ucHf/cHN9/2xvef9sb3n/bnB3/25wd/9zdXz/b3F1/29xdf91d33/
    +dXd9/25wd/95e4H/cHJ5/2xvef9ucXv/Z2p0/3N1fP9qbXf/bG95/2psc/9sb3n/bG51/3Bzff9qbHP/
    +cHN9/2ptd/9sb3n/amxz/2dqcf9qbHP/Z2p0/2Zobv9nanH/Z2px/2Rncf9maXP/c3V8/25xe/9maG7/
    +c3V8/25wd/9sbnX/dnh8/2ptd/9sb3n/bnB3/25wd/9zdXz/dXd9/2dqcf9wcnn/bW9z/29xeP9sb3n/
    +bXB6/2xvef9sb3n/bnB3/3Byef93eX//cHJ5/2xudf9ucHf/am13/3N1fP9sb3n/cXN6/3N1ff9vcXv/
    +c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/
    +cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/
    +cHJ5/2xudf9ucHf/b3F4/3N1ev9pbHP/a253/2Vocv9wcnn/ZGdx/2Vocv9laHL/YmVv/3J0fP9zdoD/
    +am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/c3V8/2xvef9wc33/c3V8/21vc/91d33/
    +dXd9/2psc/91eIH/bnB3/2Zobv91d33/bnB3/3d5f/9maXP/cHJ5/3h5ff9sbnX/c3V8/3Z4fP9sb3n/
    +eHl9/25wd/9tb3P/bW9z/3Byef9qbHP/cHJ5/25wd/9sbnX/bG95/3N1fP9ucXv/bG95/2ptd/9sbnX/
    +Z2p0/3d5f/9qbXf/cHJ5/3Byef9ucHf/c3V8/2ptd/9wcnn/b3F1/25wd/92eHz/Z2px/29xdf9sbnX/
    +cHJ5/3Z4fP9sbnX/dXiB/25xe/9zdn//e36H/3Byef9wc33/c3V8/25xe/9ucXv/cHJ5/25xe/9sb3n/
    +bnB3/2xvef93eX//c3V8/25xe/9wcnn/dXiB/2xvef93eX//bnB3/25xe/9ucXv/d3qD/25wd/9qbXf/
    +am13/3N2f/9ucHf/bnB3/3Bzff9sb3n/c3Z//3N2f/93eX//bG95/3N1fP91eIH/bnF7/3V4gf9ucXv/
    +cHN9/25xe/9wcnn/cHJ5/2ptd/9zdn//bnB3/3N2f/92eHz/cHN9/3t9g/9wcnn/bnB3/25wd/94eX3/
    +bnB3/3d5f/9wcnn/Zmhu/25wd/92eHz/bnB3/3l8hv9wcnn/cHN9/3Bzff9zdXz/d3qD/3N2f/91eIH/
    +dXiB/25wd/94eX3/bnB3/29xdf9sbnX/bnB3/3Byef9vcXX/bG51/21vc/9sbnX/cHJ5/2xudf9tb3P/
    +cHN9/3Bzff9sbnX/bnB3/2ptd/9qbXf/bG95/2Rncf9qbXf/ZGdx/2xvef9qbXf/cHN9/2ptd/91d33/
    +am13/3N1fP9ucXv/cHJ5/25wd/9ucHf/cHJ5/25xe/9qbXf/bnB3/25wd/9sb3n/bnB3/3V3ff91d33/
    +Z2px/3N1fP9ucXv/bG95/3V4gf9wcnn/bnF7/2ptd/9ucXv/cHN9/3N2f/9nanT/cHN9/2hrcv9qbXf/
    +bG52/3Fzev9sbnX/bnB3/21vc/9tb3P/eHqA/2xudf9sbnX/bnB3/25wd/92eHz/bXB6/3Byef9ydHr/
    +cXN5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/cHN9/3Byef9wc33/c3Z//25xe/9ucHf/
    +bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn//d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/
    +d3qD/3d6g/9wc33/c3V8/3N1fP93eoP/b3J6/3J0fP9rbnj/d3l//25wd/9wcnn/bW90/2xudf90dn3/
    +dHd//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/cHJ5/25xe/9ucXv/c3Z//3h5ff9ucHf/
    +c3V8/3N1fP9qbXf/dXiB/3Byef9nanH/cHJ5/21vc/94eX3/Zmhu/25wd/94eX3/bG51/3N1fP91d33/
    +am13/3d5f/9sbnX/bG51/2xudf9wcnn/bG51/3N1fP9wcnn/cHJ5/3Byef94eX3/c3V8/2xvef9sb3n/
    +bW9z/2Zobv91d33/cHJ5/2xudf9ucHf/am13/3Byef9nanT/am13/2xudf9wcnn/eHl9/2psc/9tb3P/
    +amxz/2xvef91d33/am13/3d5f/9qbXf/am13/3d5f/9sbnX/Z2p0/2xudf9ucHf/bG51/21vc/9nanT/
    +Z2p0/2xudf9tb3P/dnh8/3Byef9ucHf/bW9z/25xe/9tb3P/c3V8/2xudf9ucHf/bnB3/3d6g/9ucHf/
    +bG51/25wd/9zdn//bnB3/25wd/9wc33/bnF7/3N1fP91d33/d3l//3V4gf9zdn//eXuB/3N2f/93eoP/
    +c3Z//3N2f/9sb3n/bnB3/25wd/9nanT/c3V8/21vc/9zdXz/c3V8/2xvef93eoP/bnF7/2ptd/9sbnX/
    +c3V8/2dqdP91d33/Z2p0/11gav9kZ3H/bG95/2Zobv9wcnn/Zmhu/2ptd/9nanT/Z2px/3Byef9qbXf/
    +am13/25xe/9sbnX/bnF7/2ptd/9qbXf/Zmlz/2xudf9wc33/bnB3/2xvef9vcXX/b3F1/3N1fP9ucHf/
    +b3F1/3V3ff9ucHf/am13/3V3ff9wcnn/bG51/25xe/9qbXf/am13/2Zpc/9sb3n/bG95/25xe/9qbXf/
    +cHN9/2xvef9wc33/bG95/2ptd/9nanH/amxz/2psc/9qbHP/Zmlz/2psc/9sbnX/amxz/2dqdP9ucXv/
    +cHN9/2Zpc/9ucHf/bG95/2xudf93eX//bnB3/25xe/9sbnX/cHJ5/3N1fP9wc33/Z2p0/3Bzff9ydX7/
    +cnV+/3F0fv9ydX7/cHN9/3Bzff9wcnn/cHJ5/3p9hv9wcnn/cHJ5/3V4gf9zdn//d3l//3J1fv9ydHz/
    +dXZ8/3Fzef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/ZGdx/2xudf9nanT/bG51/2xudf9sbnX/
    +Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX//Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/
    +bnB3/3N1fP9zdn//Z2p0/29xdf9vcXb/dnh//3Bze/96fIL/cHN9/36Biv93eX//e32D/3J1fv9vcnv/
    +c3aA/3N2gP9nanT/bG51/3Bzff9nanT/am13/2ptd/9sb3n/am13/2psc/9nanH/bnF7/3N2f/93eX//
    +bnF7/3Bzff91eIH/bnF7/3d5f/9ucHf/amxz/3Byef9tb3P/d3l//2Zobv9ucXv/dXd9/25wd/91eIH/
    +dXd9/2xvef93eoP/cHN9/2ptd/9vcXX/cHN9/25wd/91d33/cHJ5/25wd/9sb3n/eHl9/3N1fP9ucHf/
    +bnB3/2xudf9iZW7/dXd9/2xvef9qbXf/bnB3/2xudf9ucXv/amxz/2xudf9tb3P/bnB3/3V3ff9kZ3H/
    +bG51/2Zpc/9qbXf/cHN9/2dqdP93eX//bG51/2ptd/91d33/ZGdx/2Jlbv9maG7/amxz/2xudf9qbHP/
    +Zmlz/2Zobv9maXP/ZGdx/2xvef9maXP/Zmlz/2dqcf9maXP/amxz/2xvef9sbnX/bG51/2xudf91d33/
    +am13/2Zpc/9nanT/cHN9/2xudf9sbnX/bnB3/3Byef9zdXz/dnh8/3V4gf9wc33/c3Z//3t9g/9wc33/
    +dXd9/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9wcnn/d3l//3V4gf9zdn//e36H/3d6g/9wcnn/
    +c3V8/3d5f/9sb3n/dXiB/3Byef9nanH/bnB3/3d5f/9wcnn/d3qD/25wd/9wc33/bG95/25wd/92eHz/
    +cHJ5/25wd/9ucHf/bG51/3Byef9ucHf/cHJ5/2dqdP9sb3n/c3Z//29xdf9ucHf/bW9z/2xvef9zdn//
    +cHN9/3Byef91eIH/bnB3/21vc/94eX3/dXd9/25wd/9zdXz/b3F1/25wd/9qbHP/c3V8/3Byef9zdn//
    +bnF7/3N1fP9wcnn/dXd9/3N1fP9sb3n/amxz/2xudf9qbXf/Z2px/2Zpc/9maXP/Z2px/2xudf9maXP/
    +bG95/25xe/9nanT/bnF7/2xvef9tb3P/c3V8/2ptd/9qbXf/ZGdx/2xvef9nanT/bG95/2Jlbv9nanT/
    +b3F4/25weP9vcXr/bG94/2tud/9qbXf/amxz/2Rncf9zdn//Z2p0/2ptd/9ucHf/bnB3/3Byef9ucHf/
    +b3J3/21wev9oa3X/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/
    +Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/
    +bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3J0e/9ucXn/cnR7/29xeP95e4H/bnB3/2xudf9qbXf/
    +aWt0/25wef9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn//c3V8/21vc/9ucHf/bG51/2xvef9wc33/
    +dXd9/2xudf9zdXz/bnF7/2Zpc/9zdXz/Z2p0/2Jlbv9ucXv/bG51/3V3ff9iZW7/cHN9/3d5f/9qbXf/
    +bnF7/25xe/9sbnX/c3V8/2Zpc/9gY2z/Zmhu/2Zpc/9maXP/bG95/2psc/9nanH/Z2px/2xvef9sb3n/
    +Z2px/2psc/9maXP/YGNs/3V3ff9qbXf/bG51/2ptd/9nanH/am13/2Jlbv9qbHP/Z2px/2ptd/9ucXv/
    +Zmlz/2psc/9kZ3H/bnF7/3V3ff9nanT/dXd9/2xudf9wcnn/d3l//2Zpc/9nanH/bW9z/21vc/9sbnX/
    +bnB3/25wd/9ucHf/c3V8/25wd/94eX3/bnF7/25xe/9sb3n/c3V8/21vc/94eX3/bG95/25wd/9ucHf/
    +d3l//2ptd/9maXP/amxz/3N1fP9sbnX/b3F1/3Byef9vcXX/c3V8/3Z4fP91d33/bnB3/3Byef94eX3/
    +bnF7/3V3ff91d33/bnF7/25wd/9sb3n/bG95/2xvef93eX//cHN9/3t9g/91eIH/cHN9/3V4gf9wc33/
    +am13/3Byef9zdn//am13/3d5f/9zdn//Z2p0/29xdf95e4H/bnB3/3d5f/9ucHf/c3V8/2xudf9vcXX/
    +dnh8/3V3ff9wc33/bnF7/3V4gf9wc33/bnB3/3Bzff9qbXf/cHJ5/3V4gf9zdn//c3Z//3N1fP91d33/
    +eXuB/3d5f/9zdn//e32D/3V4gf9zdXz/eXuB/3N2f/9zdn//eXyG/3V3ff93eX//dnh8/3t9g/97fYP/
    +dXiB/3Bzff91eIH/c3Z//3d6g/9zdn//cHN9/3N1fP9zdn//c3Z//3N1fP9sb3n/bnB3/25wd/9ucXv/
    +am13/3Bzff9wc33/Z2p0/3N1fP9zdXz/b3F1/3V3ff9sbnX/cHJ5/2dqdP91d33/bnF7/3N2f/9qbXf/
    +c3Z//25xe/9tcHn/b3J8/29ye/9ucXv/bnF7/25xe/9ucXv/fH+I/3J1fv9zdn//d3l//3t9g/96fIL/
    +d3qA/3Z4ff92eX7/cnN6/2xudf9sbnX/Zmlz/2psc/9nanT/am13/2xudf9maXP/bnF7/2dqdP9tb3P/
    +cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/bG51/3Byef9iZW7/am13/2ptd/9sb3n/
    +Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/bnF7/3N2ff9ydHz/gYOK/3V4gf91eIH/
    +b3J8/25xev9zdX7/cnV//2hrdf9sb3n/bnB3/25wd/9wcnn/cHJ5/3N1fP9sbnX/am13/2ptd/9wcnn/
    +dnh8/3d5f/9sb3n/cHN9/25xe/9ucHf/dnh8/2xvef9kZ3H/c3V8/2xudf94eX3/Z2px/3N2f/93eoP/
    +bG95/3N2f/95e4H/bG95/3V4gf9ucXv/am13/25xe/9wc33/bnB3/25xe/9sb3n/bG95/25wd/92eHz/
    +dXd9/29xdf9tb3P/Z2px/2dqcf91d33/am13/21vc/9wcnn/am13/2xvef9kZ3H/Z2p0/2Zobv9maXP/
    +am13/2Rncf9maG7/XWBq/2Rncf9wcnn/YmVu/3Byef9maXP/Zmlz/3Byef9iZW7/YmVu/2psc/9nanT/
    +bG51/2xudf9qbHP/bG51/25xe/9sb3n/dXd9/3Byef9ucHf/bG51/3N2f/9vcXX/eHl9/25wd/9vcXX/
    +bnB3/3d5f/9ucHf/bnB3/25wd/91d33/bnB3/29xdf9wcnn/bG51/3Byef9zdn//d3l//3Bzff9wc33/
    +d3l//2xvef9zdXz/dnh8/25xe/9ucHf/bnB3/29xdf9ucHf/dnh8/3Byef94eX3/dnh8/3N1fP92eHz/
    +bnB3/2xudf9vcXX/c3V8/2psc/91d33/dXd9/2psc/9vcXX/d3l//3Byef93eX//bnF7/3N2f/9ucHf/
    +b3F1/3h5ff9wc33/c3V8/25xe/9wc33/c3Z//25wd/9ucHf/bG95/25wd/9zdn//c3V8/25xe/9wc33/
    +cHN9/3l8hv9zdn//cHN9/3d6g/9ucXv/bnB3/3t9g/93eoP/dXiB/3d6g/9wc33/c3Z//3N1fP9wc33/
    +bnF7/3Bzff9wcnn/c3Z//3N2f/95e4H/c3Z//25xe/9vcXX/bnB3/2xvef9vcXX/am13/2xudf9vcXX/
    +bnB3/2xudf9zdn//cHJ5/2xudf9wc33/bnF7/29xdf93eX//bnB3/3V4gf9ucXv/eXuB/3V4gf95e4H/
    +Z2p0/2xvef9wc3z/dHeA/3Z5gv9ydX//b3F4/25wd/9ucHf/am13/3d5f/9ucHf/bnB3/2xudf9wcnn/
    +bnF7/2xvef9tcHr/dXd+/3V4gP9wc33/cHJ5/2xvef9wc33/c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/
    +bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/e36H/3N2f/97fYP/cHN9/3t9g/9zdn//
    +c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/c3V8/2xud/9ucXr/a210/3d6g/9qbXf/
    +bG51/2psc/9sbnX/b3J8/3BzfP9rbXT/bG51/25wd/9ucHf/bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/
    +bG95/3V3ff92eHz/bG51/3N1fP9ucHf/b3F1/3V3ff9sbnX/bG51/2xvef9qbXf/c3V8/2Rncf9zdXz/
    +dnh8/2xudf9ucHf/dnh8/2xudf91d33/am13/2Rncf9qbHP/bnB3/2xudf9wc33/bG51/2xudf9qbXf/
    +cHN9/3Byef9sbnX/bW9z/2psc/9qbHP/dXd9/2xvef9ucHf/c3V8/2xudf9ucHf/Zmhu/3Byef9tb3P/
    +bnB3/25wd/9nanT/am13/2dqdP9ucXv/c3V8/2ptd/93eX//bnB3/25xe/94eX3/Zmhu/2dqdP9ucHf/
    +bnB3/2xvef9ucHf/bnB3/25wd/9zdn//c3Z//3l7gf9ucXv/bnF7/3Bzff93eX//cHN9/3l7gf9zdXz/
    +bnB3/3N2f/97fYP/cHJ5/25wd/9ucHf/c3Z//2xvef9wcnn/c3Z//2xvef9wcnn/c3V8/3Z4fP9ucXv/
    +bG95/3d5f/9wc33/c3Z//3d5f/9ucXv/bnB3/3Byef9ucHf/bnB3/3d5f/9zdn//eXuB/3l7gf93eoP/
    +d3l//25xe/9sbnX/b3F1/3N1fP9qbHP/c3V8/3N1fP9qbHP/bG51/3N1fP9tb3P/dXd9/2psc/9ucXv/
    +bW9z/2xudf92eHz/c3V8/25wd/9wcnn/cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/bnF7/2xvef9sb3n/
    +bnF7/25xe/9zdn//c3Z//3Bzff95e4H/c3Z//3Bzff99foH/eXuB/36Ahv97fYP/d3l//3V3ff91d33/
    +dXiB/3d6g/93eoP/c3Z//3d6g/93eoP/e36H/3l8hv93eoP/cHN9/3N1fP9zdn//cHN9/3Byef9sb3n/
    +b3F1/25xe/9ucHf/bnF7/3Byef9qbHP/cHJ5/2xudf9tb3P/dnh8/2xudf9wc33/bG95/3N2f/9zdn//
    +c3Z//2dqdP9sb3n/cHJ5/29yfP92eYD/cnV+/29xeP9tb3P/b3F1/2xudf93eX//bG51/2xudf9ucHf/
    +c3V8/3V3ff9wc33/cnR8/3V3ff9xdH3/cHJ5/2xvef9qbXf/cHN8/25xe/9ucXv/c3V8/2ptd/9zdn//
    +bnB3/2xudf90dn3/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/cHJ5/3V3ff9tb3T/dHd9/2dqdP9zdXz/
    +am13/2xvef9sb3n/am13/2Vocf9sb3n/am13/2Nmb/9qbHP/am13/3J0e/9ucHf/cXN6/2tud/93eoP/
    +cHJ5/2xudf9sbnX/aGt0/21veP9xdH3/Z2p0/2ptd/9qbXf/am13/2ptd/9ucXv/dXd9/3Byef9vcXX/
    +b3F1/25xe/9wc33/dXd9/2xudf9nanT/am13/2psc/91d33/bG51/2psc/9sbnX/Z2p0/3Byef9kZ3H/
    +bG95/25xe/9sbnX/am13/3N1fP9qbHP/dXd9/2xvef9gY2z/Zmlz/2dqdP9nanH/bG95/2psc/9qbHP/
    +Z2p0/2ptd/9qbXf/Z2px/2dqdP9kZ3H/ZGdx/3Byef9nanH/Z2px/2xvef9nanT/amxz/2BjbP9qbXf/
    +amxz/2dqdP9qbXf/ZGdx/2dqcf9kZ3H/am13/25xe/9maXP/cHJ5/2ptd/9sb3n/dXd9/2Rncf9maXP/
    +amxz/2xudf9sbnX/bG51/2ptd/9tb3P/bnF7/25xe/9zdXz/cHJ5/3Byef9sb3n/dXd9/2xudf9zdXz/
    +am13/2ptd/9sbnX/cHJ5/2dqcf9kZ3H/Zmlz/2xvef9nanT/amxz/3N1fP9sbnX/bnB3/3V3ff94eX3/
    +cHN9/29xdf94eX3/bG95/3N1fP91d33/bnB3/2xudf9tb3P/am13/2ptd/9zdXz/cHJ5/3N1fP91d33/
    +c3V8/3h5ff9ucHf/bG95/21vc/9zdXz/Z2p0/3N1fP9zdXz/Zmlz/2dqdP9sb3n/bG51/3V3ff9vcXX/
    +dXd9/2xudf9qbHP/dXd9/3N1fP9wcnn/cHN9/2xvef9ucXv/bnB3/25wd/9vcXX/bG51/2xudf9sbnX/
    +b3F1/2xvef9ucXv/cHN9/25xe/9wcnn/dXiB/3N2f/9zdXz/dXiB/3N2f/93eoP/dXiB/3Bzff9wc33/
    +cHJ5/3Bzff9zdn//c3Z//2xvef9ucXv/cHN9/3d5f/9zdn//bnF7/3N1fP9zdXz/c3Z//3N1fP9ucHf/
    +cHJ5/3Bzff9zdn//cHN9/3V4gf9zdn//cHJ5/3Bzff9wcnn/cHJ5/3d6g/9ucHf/dXiB/3Byef95e4H/
    +eXyG/36Ahv9zdn//c3Z//3Bzff9ydX//dnmA/3J1fv9zdn//bnB3/25wd/9sb3n/dXiB/2xvef9sbnX/
    +cHJ5/3Z4fP92eHz/c3V7/3J0ff91d33/bnB3/21vd/9pbHb/Zmhx/2ttdf9sb3n/cXN6/3Fzev9tb3P/
    +cHJ7/2ttdf9rbXT/cHN9/25xe/9tb3b/a254/25xev9ucXv/bG95/21wev9xdH7/b3F2/3Z4fv9qbXT/
    +dXd9/3Bzff9xc3r/dXd9/3R2fv9sbnb/b3F5/29yfP9sb3b/bG52/2xudv9ydX//cXN7/3Z4fv9wcnn/
    +foGK/3d6g/9ucHf/bnB3/25wdf9wc3v/dXd9/2ptdv9rbnf/bnB3/25wd/9ydHv/dHZ8/3N1fP9tcHn/
    +bXB3/2tueP9ucXv/dXd9/3V3ff9sb3n/bnF7/25xe/9ucHf/eXuB/25xe/9vcXX/bG51/3N1fP92eHz/
    +amxz/3V3ff91d33/bG51/2xudf94eX3/bnB3/3h5ff9zdXz/Z2p0/2xudf9ucHf/bW9z/3Byef9ucHf/
    +bnB3/2xudf9zdXz/am13/2ptd/9qbXf/Z2p0/2Zpc/91d33/am13/2psc/9wcnn/amxz/2xudf9maG7/
    +c3Z//2ptd/9ucXv/c3Z//2xvef9ucHf/b3F1/3V3ff92eHz/b3F1/3V3ff9ucHf/bnB3/3Z4fP9nanT/
    +bnB3/3Byef9zdXz/bnB3/3Byef9ucHf/bnB3/3Byef9ucHf/c3V8/3Byef9ucXv/bG95/3V3ff9sbnX/
    +bG95/2Zpc/9qbHP/am13/3N1fP9sbnX/amxz/2psc/9ucXv/bG51/2psc/9ucXv/am13/2psc/9ucXv/
    +c3V8/2xvef9qbXf/dXd9/2xudf9ucXv/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/cHN9/2xudf9zdXz/
    +dXd9/3N2f/9zdn//bG95/3Byef9ucXv/c3V8/25wd/9zdn//d3l//2xvef9ucXv/cHN9/3Byef95e4H/
    +cHN9/3l7gf9wc33/bG95/3l7gf9zdn//dXiB/3N2f/9wc33/c3V8/25wd/9wcnn/cHJ5/3Byef9wc33/
    +cHJ5/2xvef9wc33/bnF7/3Byef9ucHf/bW9z/3Byef9wcnn/bG51/3N1fP9sbnX/bnF7/3Bzff9tb3P/
    +b3F1/25wd/9ucHf/c3V8/3V3ff9sb3n/cHJ5/2xvef91d33/c3Z//3Byef9ucHf/c3Z//3V4gf93eX//
    +dXd9/3h5ff95e4H/dnh8/3l7gf9/gYf/eXyG/3l7gf97fof/eXuB/3d5f/9/gYf/dXd9/3t9g/91d33/
    +foCG/3t9g/97fof/c3Z//3N2f/9xc3r/cHN6/3J1fP9xc3v/cHJ5/2ptd/9nanT/Z2p0/3V3ff9qbHP/
    +Z2px/2ptd/9ucXv/cHJ5/2lsdv9rbnj/b3J5/2xudf9rbnb/a252/2hqcv9naXH/a211/25xef9tcHr/
    +a21z/3J0fP9tcHj/bG93/3F0fv9ydX3/b3F5/29xev9ydX3/dHd//3Byef9xdHz/eHqC/3V3ff94e4H/
    +cXN6/3l8gv91d3//dnmB/3l7g/96fIP/c3V+/3d4fv92eID/dXd+/3F0fv9xc3v/d3qC/3h6gP99f4b/
    +dnh//4OFjP9+f4P/ent//3d5f/94eoD/enyC/3p8gP9ydHv/cHN9/25xe/9vcnv/cnV+/3Z4gP92eH//
    +cnV+/29yev9wc3v/cHJ5/3V3ff92eHz/bnB3/25xe/9wc33/bnF7/3l7gf9wc33/cHJ5/25xe/9wc33/
    +c3Z//2dqdP91d33/dXd9/25xe/9wc33/e32D/3Byef97fof/d3qD/3N1fP9wc33/d3qD/3N2f/9zdn//
    +c3Z//3N2f/9ucXv/bnF7/25xe/9ucHf/bnF7/2xvef9qbXf/d3qD/3N1fP9wc33/cHN9/25xe/9ucHf/
    +Zmlz/3V3ff9sbnX/c3V8/3N1fP9ucHf/bnB3/29xdf9wcnn/dnh8/29xdf95e4H/b3F1/25wd/92eHz/
    +Z2p0/2dqdP9ucHf/bnB3/21vc/9sbnX/bG51/2xudf9ucHf/bnB3/2xvef9sb3n/bG95/2ptd/92eHz/
    +am13/25xe/9maXP/am13/2xudf9wc33/bG51/2Rncf9qbHP/am13/2psc/9qbHP/bG95/2ptd/9nanT/
    +bG95/3N1fP9ucXv/am13/3N1fP91eIH/eXyG/3t9g/9zdn//c3Z//3Bzff9zdXz/bnB3/3N2f/9wcnn/
    +dXiB/3l7gf91eIH/dXiB/3Bzff9wcnn/cHN9/3N1fP9vcXX/cHN9/3V3ff9qbXf/bG51/3N2f/9wcnn/
    +d3l//2xudf9zdXz/bW9z/2xudf94eX3/c3Z//3V3ff9sb3n/bG95/25xe/9vcXX/bG51/29xdf9vcXX/
    +bW9z/21vc/9vcXX/c3V8/2xudf9sb3n/bW9z/25wd/9wc33/cHJ5/29xdf94eX3/bnB3/3N2f/91d33/
    +bW9z/2xudf9qbXf/bG51/25xe/9ucXv/bW9z/2xudf9ucHf/dXd9/25xe/9ucHf/amxz/2xudf9sbnX/
    +bnB3/2xvef9ucHf/b3F1/2xudf9qbXf/c3Z//3N1fP91d33/dXiB/3N1fP91eIH/foGK/3N1fP93eoP/
    +c3Z//3t+h/93eoP/e36H/3N1fP9zdn//cXN7/3N2gP96fIP/eXuB/3p8gv91d33/c3V8/3V3ff97fof/
    +dXiB/3Bzff9wc33/dXd9/3V3ff90dnz/dXd+/3J1ff9ucXv/bXB5/3Bze/9pa3P/aWx2/3FzfP90d37/
    +c3Z//3F0fP92eH//cnR9/3Bze/90d4H/dHeA/29yfP9xdHz/bXB4/29yfP9vcXv/bG95/21weP9tb3b/
    +cHJ5/2ttc/92eHz/bnF6/25wef9ydX3/bXB6/25wd/9tcHn/bW92/29xd/9tb3b/bG54/3Fzd/90dnz/
    +dHZ8/2xvef95fIb/cHN9/2xvef9wcnn/bnF7/3R2fP90dn3/cHJ6/21veP9tb3j/bG95/25xe/91d33/
    +dHeA/3F0fP9zdn3/bnF6/3Bzff91eIH/d3l//25wd/9ucXv/bnB3/25wd/92eHz/bnB3/2ptd/9qbXf/
    +bG51/25wd/9nanH/cHN9/3Bzff9qbXf/bnF7/3V3ff9tb3P/d3l//2xvef9nanT/Zmlz/2xvef9qbXf/
    +bG95/2xudf9ucHf/bnB3/3Byef9ucXv/bnB3/25xe/9ucHf/am13/3N2f/9ucHf/bnF7/25wd/9qbXf/
    +bG95/2psc/91d33/bG51/3N1fP9wcnn/bnB3/2xudf9sbnX/c3V8/3Bzff9qbHP/dXiB/2psc/9qbHP/
    +c3V8/2Jlbv9dYGr/Z2px/2Rncf9maG7/Z2px/2dqcf9qbHP/bG95/2xudf9ucXv/bnB3/3V3ff9sb3n/
    +d3l//25xe/9zdn//am13/25xe/9wc33/eXuB/3V4gf9sb3n/c3V8/3V4gf9zdn//d3l//36Ahv95e4H/
    +dnh8/3l8hv9+gYr/e32D/3N2f/97fYP/bnB3/3N2f/93eX//cHN9/3N2f/9zdn//c3V8/3N1fP91eIH/
    +c3Z//3l8hv97fYP/e32D/3Bzff9ucXv/cHJ5/3Bzff9zdn//c3V8/3V4gf95e4H/cHJ5/2dqdP9zdn//
    +cHN9/3l7gf9sb3n/dXiB/25xe/9sbnX/dnh8/3Byef91d33/bG51/29xdf9ucHf/b3F1/2psc/9sbnX/
    +bG51/21vc/9sbnX/bW9z/3Bzff9wcnn/cHJ5/3Byef9wcnn/dXiB/25xe/9sb3n/eXuB/25xe/9zdn//
    +bnF7/25wd/9wcnn/bnF7/25wd/9ucXv/cHN9/25wd/9wcnn/cHJ5/3Z4fP9zdXz/cHJ5/2psc/9vcXX/
    +bnB3/2xudf9ucHf/am13/2ptd/9qbHP/amxz/3Byef9sbnX/bG51/2xudf9tb3P/bG51/3Z4fP9sbnX/
    +bnB3/21vc/9zdXz/bnF7/3Z4fP9tb3P/bG51/25xeP9ydX//dXd9/3V4gf91d33/bnB3/2ptd/9sb3n/
    +dXiB/29xdf9sb3n/bnF7/3V3ff9zdXz/cHJ5/3Z4fP9xc3n/cHJ5/25wd/9ucXr/Zmlz/2psc/9wcnn/
    +dXd7/25wd/9tb3P/dHd9/2tueP9sb3n/a210/21wef9sbnX/amxz/2hrdf9qbXT/am13/2psc/9ydX//
    +cnV+/3N2f/9vcnz/eXuA/3J1f/91eIH/enyD/3x/hf95e4H/dnh+/3d5f/96fIH/cnV//3J1fv91eIH/
    +eHuF/3p8g/91d33/foGK/3V4gf9wc33/cHN9/3N2f/91eIH/eXuB/3V4fv9wc33/c3Z//25xe/9zdn//
    +eHqB/3V4gf9ydX7/dHZ8/25wd/9ucXv/cHN9/3N2f/9vcXX/bG95/25wd/9zdXz/dXd9/2xudf9sbnX/
    +cHJ5/29xdf9ucXv/am13/3Bzff93eX//bnF7/3V3ff92eHz/b3F1/3d5f/9wcnn/bG51/2xudf9wcnn/
    +cHJ5/2ptd/9tb3P/bnF7/2xvef9ucHf/b3F1/25wd/9wcnn/bG95/2xudf9ucHf/am13/25xe/9sbnX/
    +am13/2ptd/9nanH/c3V8/2xudf9zdXz/bnF7/2xvef9sbnX/am13/3N1fP94eX3/bG95/3d5f/9ucHf/
    +bnB3/3V4gf9sb3n/Z2p0/3V4gf9zdn//cHJ5/3N2f/9zdn//dXiB/3V4gf91eIH/e32D/3d6g/95e4H/
    +c3Z//3l8hv91eIH/eXyG/3Bzff91eIH/dXiB/3t9g/93eoP/bnF7/3V4gf95fIb/bnF7/3Byef9ucXv/
    +cHJ5/25wd/9zdn//dXiB/3V4gf9wcnn/c3Z//2xvef9qbXf/c3V8/2xvef9nanT/Z2px/2Zpc/9maG7/
    +Zmlz/2Zobv9maXP/am13/2xvef9qbHP/bG51/2Zpc/9nanT/bG51/2psc/9ucXv/cHN9/2psc/9nanH/
    +bG95/2ptd/9zdn//Z2p0/25xe/9sb3n/am13/3N1fP9ucXv/cHN9/2ptd/9qbXf/bG95/29xdf9sbnX/
    +bG51/2xudf9tb3P/bG51/25wd/9wcnn/bW9z/2xvef9qbXf/cHJ5/3N1fP9sb3n/am13/3N1fP9sb3n/
    +c3V8/2xudf9ucHf/bnB3/2xvef9ucHf/bnF7/3N2f/9ucHf/cHJ5/3Byef9zdXz/cHJ5/25xe/9sb3n/
    +bG95/25wd/9sb3n/bG95/2xvef9sbnX/bG51/2xudf9wc33/bnB3/3Byef9ucHf/bnB3/25xe/94eX3/
    +bnB3/3Byef9ucHf/dXd9/3N2f/93eX//b3F1/29xdf9ucHf/dHZ9/3N1fP91d33/eHl9/3Byef9sbnX/
    +bnB3/3d5f/9vcXX/bnB3/3Byef92eHz/bnB3/3Byef9wc33/am13/2xvef9qbXf/am13/2dqdP9maXP/
    +amxz/3N1fP9nanT/Z2px/2xvef9kZ3H/Zmhu/2RmbP9nanT/Zmhu/2dqcf9kZ3H/Zmhu/2Zobv9kZ3H/
    +d3qD/3V4gf93eoP/dXd9/31+gf93eoP/dXiB/3l7gf91eIH/cHN9/3N2f/91eIH/eXyG/3d5f/91d33/
    +d3l//3+Bh/97fYP/c3V8/3+Bh/91eIH/c3V8/3N1fP9wc33/d3l//3l8hv97fYP/c3Z//3N2f/9sb3n/
    +bnF7/3Bzff9wc33/cHN9/3V3ff9ucXv/bnF7/3Byef9zdXz/bnB3/25wd/9tb3P/cHJ5/25xe/9ucHf/
    +bnF7/2xvef9ucXv/cHN9/3N1fP91eIH/d3l//2xvef9zdn//dXiB/25xe/97fYP/dXiB/3V3ff9zdn//
    +d3l//3l7gf95e4H/dnh8/3d6g/91d33/eXuB/3h5ff96e3//e32D/3d5f/91d33/fn+D/3V3ff97fYP/
    +d3l//3d5f/91d33/cHN9/3d6g/9zdn//eXyG/3N2f/9wcnn/c3V8/3N1fP95e4H/e32D/3N1fP97fof/
    +cHN9/3Bzff97fof/am13/2Zpc/9ucHf/bG95/29xdf9sbnX/bW9z/2ptd/9sbnX/bnB3/3N1fP91d33/
    +eHl9/25wd/93eX//bnB3/25xe/9nanH/bG51/25wd/9zdXz/c3V8/2dqcf9ucHf/c3V8/2psc/9vcXX/
    +bnB3/25wd/9qbXf/cHN9/3d5f/9zdXz/bnB3/25wd/9wcnn/cHN9/3h5ff91d33/b3F1/29xdf9ucHf/
    +b3F1/3Byef9sbnX/cHJ5/3Byef91d33/bG51/3Byef9qbHP/bnB3/3Byef9vcXX/dXiB/3V4gf9wcnn/
    +bnB3/3N2f/9sb3n/eXuB/25wd/9wc33/cHJ5/2xvef93eX//c3Z//3d5f/9ucXv/bG95/3Bzff9ucXv/
    +bG95/25xe/9wcnn/c3V8/3V3ff9zdn//d3qD/3N1fP9wcnn/bnF7/3V4gf9+gIb/dXiB/3Bzff93eoP/
    +c3Z//3l8hv9zdn//bG95/2xvef9ucXv/cHJ5/3Bzff91eIH/bnF7/25xe/9wcnn/c3Z//3Bzff9wcnn/
    +Z2p0/25wd/9vcXX/bnB3/25wd/9ucHf/bG51/25wd/9qbXf/cHN9/29xdf9vcXX/bnF7/3Bzff9zdn//
    +eXuB/3N1fP91eIH/bnB3/3V4gf91d33/d3l//3Byef9wcnn/bG95/3N2f/9wc33/c3Z//3Z4fP9wcnn/
    +bG51/2xudf92eHz/bG51/2ptd/9sb3n/cHN9/2xvef9nanT/Z2p0/2xvef9qbXf/Zmlz/2Zpc/9maXP/
    +Zmlz/2xudf91d33/bnB3/3Byef9zdXz/bG95/3Bzff9sb3n/cHN9/3Byef9zdn//c3V8/3Bzff9zdXz/
    +cHN9/3Byef9sbnX/bG95/2xudf9wcnn/bnB3/25wd/9zdXz/cHJ5/25xe/9qbXf/bG51/2ptd/9qbHP/
    +am13/2psc/9zdn//bnF7/2psc/93eoP/bG95/2dqdP9sbnX/bG95/3N1fP91eIH/dnh8/3Byef9zdXz/
    +b3F1/21vc/9ucXv/cHN9/25xe/92eHz/cHJ5/3Byef9wcnn/c3V8/2xudf9wcnn/bW9z/3Bzff9qbXf/
    +amxz/2xvef9ucHf/bnB3/2xudf9tb3P/c3V8/3V3ff9sbnX/bG95/25xe/9sbnX/c3V8/2xvef9qbXf/
    +Z2p0/2xudf9qbXf/am13/2xudf9sbnX/bG51/25wd/9ucHf/bG95/25xe/9sb3n/bnB3/3N1fP9tb3P/
    +cHJ5/25wd/9sbnX/bW9z/2dqcf9ucXv/Z2p0/2ptd/9sbnX/amxz/2xudf9ucHf/eHl9/3d5f/9vcXX/
    +dXd9/25wd/9ucHf/eXyG/2ptd/9qbHP/bG95/2xvef9wcnn/bnF7/3Byef9sb3n/bnB3/3Bzff9zdn//
    +d3qD/3t9g/9zdn//d3qD/3N1fP9zdXz/am13/3Bzff9ucXv/cHN9/3N2f/9nanT/cHN9/25xe/9nanH/
    +amxz/2xudf9qbXf/bG51/25xe/93eX//c3V8/29xdf9ucXv/bnB3/3N1fP92eHz/c3V8/2xudf9sb3n/
    +bG95/25xe/91eIH/c3Z//3N2f/9wc33/dXd9/2xudf9zdXz/amxz/21vc/9ucHf/b3F1/3V3ff9zdXz/
    +b3F1/25wd/91d33/cHJ5/3l7gf9sbnX/dXd9/3Byef9ucHf/c3V8/25xe/9wc33/bG95/2xudf9wc33/
    +bG51/2Rncf9qbXf/am13/2dqdP9maXP/am13/3Byef9sbnX/bW9z/25wd/9ucXv/dXd9/2xvef9sb3n/
    +c3V8/29xdf92eHz/bnB3/2xudf9qbXf/bnB3/29xdf9vcXX/cHJ5/29xdf91d33/cHJ5/3V3ff9wc33/
    +bnF7/3Byef9zdn//cHJ5/3N1fP9wcnn/bnB3/2ptd/9sb3n/am13/3N1fP9vcXX/bW9z/25wd/9ucXv/
    +bnF7/3l7gf9vcXX/c3V8/21vc/93eX//c3V8/3V3ff9vcXX/bnB3/2xudf9wcnn/bnF7/3N1fP9ucXv/
    +cHJ5/2dqdP9sbnX/eHl9/29xdf9zdXz/dXd9/3Z4fP9zdXz/bnB3/2xvef9sb3n/cHJ5/3Byef9ucHf/
    +bnB3/2psc/9sbnX/d3l//25wd/9ucXv/bG95/2xvef9zdXz/bnB3/3Byef9sbnX/bnB3/2xudf9sbnX/
    +bG51/2ptd/9ucHf/bnB3/3Byef9ucHf/cHN9/3Byef9zdXz/c3Z//3V4gf91eIH/c3Z//3N2f/91eIH/
    +c3V8/3N2f/9zdXz/e36H/3N2f/9ucXv/eXyG/3Bzff9sb3n/bG95/3Bzff9zdn//e36H/3t9g/9zdn//
    +c3Z//25wd/9ucXv/cHN9/3Z4fP91d33/d3l//3V3ff9ucHf/cHN9/3V4gf9ucXv/c3Z//2xvef9zdn//
    +bnF7/25wd/9ucXv/bnB3/3N1fP9ucHf/b3F1/2xvef9zdXz/amxz/2xvef9wc33/am13/25xe/9wcnn/
    +bG51/2dqcf9ucHf/bG51/25wd/9qbXf/cHJ5/25wd/9wcnn/bG51/25wd/9zdXz/bnB3/25wd/9zdXz/
    +amxz/25wd/9sbnX/bG51/21vc/9maG7/bG95/2dqdP9qbHP/bG51/2dqcf9nanH/Zmhu/3Byef9wcnn/
    +Z2px/25wd/9gY2z/ZGZs/3Byef9iZW7/XWBq/2BjbP9maG7/ZGdx/2Zobv9maG7/ZGdx/2Zpc/9nanT/
    +bnF7/3Bzff9zdXz/bG95/3V3ff9qbXf/bG51/2dqdP9qbHP/am13/2xvef9wcnn/amxz/3Byef9ucXv/
    +Z2p0/2ptd/9ucHf/bnB3/21vc/9sb3n/c3V8/3V3ff9sbnX/bG51/2dqdP9nanT/cHJ5/25xe/9qbXf/
    +bnB3/2Zpc/9maXP/am13/2xvef9ucXv/bnF7/3Bzff9ucHf/bnF7/2ptd/9sbnX/bnB3/21vc/9ucXv/
    +bnF7/2xudf9nanT/dXd9/2ptd/9zdn//amxz/2ptd/9nanT/amxz/2xvef9ucXv/bG95/25wd/9sbnX/
    +bnB3/2xudf9qbHP/bnB3/29xdf9ucHf/am13/25wd/9ucXv/bG95/2xvef9wc33/bnF7/3l7gf9wc33/
    +cHJ5/3V4gf9wc33/eXuB/3Bzff9sb3n/cHJ5/25wd/9ucHf/bW9z/3Byef9tb3P/cHJ5/25wd/9zdXz/
    +bG51/25wd/9nanT/bG51/2psc/9sbnX/bnB3/21vc/9sbnX/bnB3/25wd/9zdXz/bnB3/29xdf9vcXX/
    +cHJ5/3Bzff91eIH/bnB3/3Bzff9wcnn/e36H/3d6g/95e4H/cHN9/3N1fP9ydHz/enyC/3p8gv99f4X/
    +fn+D/3t9g/92eHz/d3qD/3t+h/9wc33/d3qD/3t9g/97fYP/d3qD/3d6g/94e4X/dXiB/3Z5gv9ydX7/
    +dHeA/3Fzev9rbnj/bnB3/3d4ff9vcnz/cnV+/25xe/9vcXn/bnB3/21vdv9tb3b/bG51/25wd/9ucHT/
    +bnB4/21wef9sb3n/bnB3/2ttdP9pa3X/aGty/2tueP9pa3X/a210/2tueP9sb3b/c3V7/25wd/9tb3b/
    +cHJ5/21vdv9ucHf/bG51/3h6gP9ucHf/am13/3N2f/9qbHP/YmVu/2Jlbv9maXP/Z2p0/3N1fP9tcHr/
    +bG95/2ptd/9oanT/am13/2xvef9xc33/cHN8/3R2fP9sb3n/amxz/2dqdP9ucXv/bG95/3V3ff9tb3P/
    +cHN9/2ptd/9sb3n/am13/2xudf9wcnn/bnB3/21vc/9wcnn/dXd9/2ptd/9ucXv/cHN9/2xudf9wcnn/
    +c3V8/2xudf9kZ3H/am13/25wd/9wcnn/bG51/2xvef9sbnX/am13/2Zpc/9maXP/bG95/2ptd/9qbXf/
    +am13/2dqdP9nanT/Zmlz/2Zpc/9nanT/YmVu/2xvef9maXP/Z2px/2xudf9qbHP/Z2p0/2psc/9zdXz/
    +cHN9/2dqdP9wcnn/amxz/2psc/91d33/Z2p0/2Rncf9maXP/bG95/2dqdP9sbnX/Z2px/2dqcf9nanT/
    +Z2p0/3Bzff9wc33/cHJ5/2dqdP9wcnn/Z2p0/2dqcf9maXP/Zmlz/2ptd/9nanT/am13/2Rncf9sbnX/
    +bG95/2Jlbv9nanT/bG51/2xvef9nanH/Z2p0/25xe/9ucXv/amxz/2dqcf9sbnX/bG95/3d5f/9wcnn/
    +bnB3/3Byef9sbnX/bG51/3V3ff9ucHf/bnB3/3Byef9ucXv/bG95/3Byef9qbXf/bG51/2xvef9sbnX/
    +c3V8/3Byef9vcXX/bG51/3Z4fP9zdXz/eHl9/25wd/9wcnn/bnB3/2xudf9wcnn/cHN9/3Byef9ucHf/
    +bnB3/3Byef9sbnX/ZGdx/2xudf9sbnX/Z2p0/2dqdP9sbnX/bnB3/25wd/9vcXX/cHN9/3Byef94eX3/
    +cHJ5/2xvef9wc33/cHN9/3d5f/9sb3n/bG95/25xe/9sb3n/bnB3/29xdf9wcnn/bG51/25wd/9wcnn/
    +c3Z//25xe/9wc33/bnB3/3N1fP9zdXz/dXiB/2ptd/9ucHf/bG51/2xudf9sbnX/bnF7/2ptd/9sbnX/
    +bG51/2xvef9wc33/dXd9/21vc/9zdXz/bnB3/3h5ff9wc33/eXuB/25xe/9qbXf/b3F4/3Bzff9ydHz/
    +dHZ9/3V3ff9qbXf/bG51/3N1fP94eX3/bnB3/3N2f/92eHz/dXd9/3Byef9ucXv/cXR9/29xeP9xc3r/
    +bnB3/25wev9pa3T/Z2p0/2ttdf9xc3v/bXB6/2xveP9rbnj/am12/2ZpcP9oanH/amxz/2dqcv9kZ3H/
    +ZWhy/2Zpc/9maXD/Z2lv/3Bzff9tb3f/b3F6/21vdv9vcnv/bnB3/25wd/9vcXj/cXN6/3J0ev9ucHj/
    +bXB6/29yfP9vcXb/bG95/2ttdf90d3//bG52/2xudv91d33/am13/2Rncf9nanT/bG95/21wev90d4D/
    +cnR8/3Bzff9rbnj/am13/21wev9vcnz/cXR+/29yfP9zdX3/bXB6/2ptd/9nanT/bG95/2ptd/9ucXv/
    +amxz/25xe/9qbXf/bG51/2ptd/9qbXf/bG95/2xvef9qbHP/bnF7/3V3ff9qbHP/bG95/3N1fP9sb3n/
    +bG95/3Byef9vcXX/Zmlz/25wd/9zdXz/c3Z//3Byef9zdn//cHN9/25xe/9qbXf/bnB3/3N2f/9wc33/
    +bG95/3Byef9sbnX/cHN9/25wd/9wcnn/bG95/2dqdP9wcnn/am13/3Byef9wc33/bG95/2xvef9vcXX/
    +d3l//3d5f/9zdXz/c3V8/2ptd/9sb3n/d3l//2xudf9sbnX/Z2p0/3Byef9ucHf/bG51/2xudf9tb3P/
    +bG95/2ptd/9zdXz/cHN9/3N1fP9sb3n/bnF7/2Zpc/9nanH/ZGdx/2dqdP9sb3n/am13/3Byef9nanH/
    +bG51/3N1fP9kZmz/amxz/25wd/9wcnn/bG51/3Bzff9wc33/d3l//2xvef9qbXf/Z2px/2ptd/9zdXz/
    +Z2p0/2dqcf9qbXf/Zmlz/2psc/9qbXf/ZGdx/2Zobv9maXP/am13/2dqcf9nanT/amxz/2ptd/9ucXv/
    +bG51/3Byef9ucHf/b3F1/2psc/92eHz/cHJ5/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/3V4gf9wc33/
    +c3V8/2xvef9wc33/bnB3/2dqdP9vcXX/b3F1/25wd/9sbnX/bG95/25wd/9sbnX/am13/25xe/9qbXf/
    +dnh8/2xudf9tb3P/cHJ5/3Byef91d33/bG51/2dqdP9sb3n/am13/2dqdP9sbnX/bnF7/25wd/9wcnn/
    +am13/3Bzff9ucHf/cHJ5/2xvef9ucHf/bG95/3Bzff9qbXf/cHJ5/2xvef9ucHf/bG95/3N2f/9sb3n/
    +bG95/25wd/9wc33/dXiB/3l8hv9ucHf/dXiB/25xe/93eoP/c3Z//3d6g/9ucXv/am13/21weP9xc3v/
    +b3F5/3R3fP90dnz/bnF7/21vc/9ucHf/dXd9/2ptd/9sb3n/bnF7/3N1fP9sbnX/bnB4/25xev9ucHj/
    +bnF5/25wd/9tcHr/Z2p0/2xvd/9tcHj/cnV9/3Bze/9ydHv/cHN9/3BzfP9vcnz/dHZ8/3N1e/9xc3r/
    +bnB5/3J0e/9wcnv/bnF5/21weP9ydHv/bG51/3Fze/9rbXb/bXB6/3Byef9sb3n/bG95/2xvef9rbXb/
    +aWx0/21weP9pbHb/b3F6/2lsdv9rbnb/bnF6/2ptdv9qbXf/c3V8/2xvef9kZ3H/Zmlz/2xvef9qbXf/
    +cHN7/2xvef9ucHn/am12/2tudv9tb3b/bW92/29yfP9ucHn/dXh//3Fzev91d33/dXd9/3V4gf9wc33/
    +c3Z//3Byef91d33/bnB3/29xdf9wc33/bnF7/3N2f/9zdn//bnB3/3d5f/95e4H/cHJ5/3Bzff95e4H/
    +dXiB/3d6g/9wc33/cHJ5/25xe/9wc33/dXiB/3l7gf9zdXz/c3Z//25xe/9wc33/bnB3/3Byef93eX//
    +cHN9/25wd/9ucHf/Z2px/3Byef9ucHf/bW9z/2dqdP9iZW7/am13/2Rncf9sbnX/c3V8/3N1fP9sbnX/
    +b3F1/3h5ff93eX//dXiB/3N2f/9sb3n/cHN9/3l7gf9ucHf/cHN9/3V3ff97fYP/eXuB/3l7gf93eX//
    +dnh8/3t9g/95e4H/foGK/36Biv9/goz/f4GH/35/g/92eHz/dXiB/3Z4fP92eHz/e32D/3l7gf95fIb/
    +c3Z//3V4gf93eoP/Zmlz/2ptd/9zdXz/cHJ5/2dqdP9ucXv/bnF7/3V3ff9sb3n/amxz/25wd/9wcnn/
    +d3qD/3Bzff9ucXv/c3Z//2ptd/9ucHf/dXd9/25wd/9sb3n/cHJ5/3Bzff9wc33/c3Z//25wd/9sb3n/
    +cHN9/25xe/91eIH/c3Z//25xe/9sb3n/e32D/3l8hv95fIb/c3Z//3V4gf9ucXv/bnF7/3V4gf95fIb/
    +d3qD/3V4gf9zdn//d3qD/3Bzff9ucXv/bnB3/2xvef9sb3n/bG95/3N2f/91eIH/cHJ5/2xvef91d33/
    +cHN9/3d5f/9ucHf/am13/3Byef9wcnn/dnh8/25wd/9sb3n/c3V8/29xdf9qbXf/bG95/3N1fP9wcnn/
    +c3Z//3N2f/93eoP/cHN9/3V4gf9wc33/bnF7/25wd/9zdn//bG95/3Byef9ucHf/bG95/2xvef9zdn//
    +bG95/25wd/9ucHf/c3V8/3Byef91d33/amxz/25xe/9qbHP/c3V8/2xvef9ucHf/Zmlz/2Rncf9sb3f/
    +b3J8/2ttdP9ucXr/cnR7/2xvef9tb3P/bnB3/3V3ff9sbnX/cHN9/3N2f/91d33/cHN9/29yfP9zdXz/
    +bnF7/3F0fv90dn3/cXN7/2hrdf9vcXn/b3F5/3N2gP9wcnn/cXN8/3Bzff9ydHv/cnV+/3Z5gv92eYH/
    +c3Z+/25xe/9zdn7/cnR9/3J1ff9tcHn/cXR9/3Fzev90d4D/bXB6/3N2gP9wc3z/b3J8/3F0ff9vcnz/
    +b3F6/21wd/9ydX3/cHJ7/3J0e/9tb3f/a252/3N1fv9tcHj/cHJ5/3Z4f/9zdXz/Z2px/2psc/9wcnr/
    +bW92/3J0e/9ucHn/bnF5/2xvd/9ucHT/cHJ5/21vdv9xc3r/b3F4/3N1e/9vcXn/bG95/25xe/91d33/
    +c3V8/3N1fP9qbXf/c3V8/2xudf9sbnX/am13/2xudf9wcnn/cHJ5/21vc/92eHz/d3l//2ptd/9ucXv/
    +dnh8/3Byef9wcnn/cHJ5/2xudf9maG7/bG51/3N1fP9wc33/bG51/2ptd/9sbnX/amxz/2ptd/9vcXX/
    +dnh8/25xe/9ucHf/bG51/2dqdP9ucXv/cHJ5/25wd/9sbnX/Zmlz/3Bzff9nanT/bnF7/3N2f/9wc33/
    +am13/25xe/93eoP/e32D/3V4gf95e4H/cHJ5/3Bzff97fYP/bnB3/3Byef9ucHf/cHN9/25xe/9wc33/
    +bnB3/25wd/9ucHf/bW9z/3V3ff9wc33/dXiB/2xvef9wc33/bG51/3Byef9sb3n/bnB3/3N2f/9wcnn/
    +c3V8/2psc/9zdXz/c3V8/2dqcf9sbnX/cHJ5/2xudf9sbnX/c3V8/3Byef91d33/dXd9/3Byef9wcnn/
    +c3Z//3d6g/9ucXv/bnB3/3N2f/9ucHf/cHJ5/3d6g/9zdn//dXiB/3l8hv97fYP/fX6B/3t9g/91d33/
    +d3qD/3l8hv93eX//fn+D/3t9g/97fYP/cHJ5/31+gf97fYP/fn+D/3l7gf9+gIb/d3l//3l7gf9zdn//
    +d3qD/3t9g/91eIH/dXiB/3N2f/9zdXz/c3V8/3N1fP9wc33/bG95/3N1fP93eoP/c3Z//3N1fP9sb3n/
    +cHN9/3Bzff93eX//cHJ5/2ptd/9wcnn/bG95/3V3ff9sbnX/bnB3/3V3ff9ucHf/amxz/25wd/9zdXz/
    +bG95/25wd/9sbnX/cHJ5/25wd/91d33/bnB3/25wd/9ucHf/dXd9/2xudf9sbnX/bW9z/2ptd/9qbXf/
    +cHN9/2xudf9wcnn/bG51/2ptd/9qbXf/dXd9/2psc/9sb3n/Z2px/3N1fP9qbXf/bnB3/2Zpc/9dYGr/
    +a210/29yfP9sbnX/bW92/3Fzev9sb3n/amxz/2xvef9ucXv/bG51/2xvef9zdXz/bnF7/2ptd/9rbnf/
    +b3F4/21wev90dnv/dHd7/29xef9maW//bW93/3J0e/9zdXz/bnB4/3Byef9wc3z/dHd//3R3f/94eoP/
    +dnmC/3V3gP9rbnf/c3V9/29yfP9vcnz/bnB2/21vdv9qbHL/b3J5/2xveP9sb3n/bXB6/21weP9tb3b/
    +bG53/21weP9pa3P/cHJ6/29yev9ydHn/bnB3/25wdf91d33/bnF7/3J0fP93eX//c3V8/2Zobv9sbnX/
    +c3V8/3BzfP91dnv/cnR5/3N1e/9xc3j/bW91/21veP9sbnT/bW92/29yev91d3//cHJ5/3Bzff91d33/
    +d3l//3N1fP91d33/bG95/3l7gf9ucXv/bnB3/25xe/9sb3n/dXiB/3V4gf9ucXv/dXd9/3N2f/9nanT/
    +bnF7/3l7gf9wc33/c3Z//3N2f/9sb3n/Z2p0/29xdf91eIH/c3Z//25wd/9ucHf/cHJ5/2xudf9ucHf/
    +bG51/3Z4fP9wc33/cHJ5/3N2f/9nanT/cHN9/3Bzff9wcnn/bnF7/2ptd/95e4H/bG95/3N1fP95fIb/
    +e32D/3N1fP9zdn//foGK/3l7gf91eIH/dXiB/3Byef9wc33/e36H/3V3ff91d33/dnh8/3t9g/95e4H/
    +dXiB/3N2f/9zdXz/c3Z//3N1fP93eX//c3Z//3t+h/93eoP/eXuB/3N1fP9ucXv/bG95/2xvef9zdn//
    +cHN9/3Bzff9sb3n/cHN9/3N1fP9qbHP/bG51/3Byef9sbnX/amxz/3Bzff9wcnn/dXiB/3V3ff9wc33/
    +bW9z/2xvef9ucXv/bnF7/2xudf9zdXz/bG51/2xudf9ucXv/am13/25wd/9wcnn/bG95/3N2f/9zdXz/
    +bnB3/2xvef9wcnn/b3F1/3Z4fP9wcnn/cHJ5/2Zobv9ucXv/bnF7/3N1fP9qbXf/bnF7/21vc/9ucXv/
    +bG51/2xvef9ucXv/bG51/2psc/9qbXf/ZGdx/2Zpc/9nanH/bG51/2Jlbv9nanT/bG95/2ptd/9qbHP/
    +Z2p0/2xvef9ucXv/dXd9/3Byef9ucHf/cHN9/3Bzff97fYP/cHN9/25wd/93eoP/cHN9/2xvef91d33/
    +eXyG/3N2f/93eoP/c3Z//3d6g/9wc33/e32D/3d5f/95e4H/dXd9/3t+h/9zdn//dXd9/3Bzff9wc33/
    +bnB3/3V4gf9ucHf/bnF7/2xvef9wcnn/c3Z//3d6g/9ucHf/dXd9/25wd/95fIb/c3Z//3t9g/91eIH/
    +am13/25xe/91eIH/b3J7/3F0fP92eH7/c3V8/25wd/9wc33/dXiB/3Byef9wc33/c3Z//3V4gf9zdn//
    +b3J8/3R2ff9xdH7/cnV+/3h6gP9wc3z/aGt0/21wd/90d3//c3Z//3Byef9vcXb/b3F4/25xe/9xdHz/
    +cnR8/3N0ev9wcnv/bG95/3J0fP9vcnr/bnB5/21vdf9xdHv/b3F4/3N2fv9tb3j/cnR9/25xev9vcnv/
    +bnB3/3R2fP9ydHv/bG52/21vd/9vcnz/b3F4/25xe/9tcHn/d3l//21wd/9ydHz/dnh8/3Byef9kZmz/
    +Z2p0/3Byef9ucXv/dHd9/3N1fP9wc3z/dHd+/2xvef9sb3n/cHJ5/3Bzff90dn3/dnmD/3R2f/91eIH/
    +eXyG/36Ahv95fIb/foCG/3V4gf95e4H/cHN9/3Byef9ucXv/c3V8/3V3ff9zdn//bnF7/3Z4fP9wc33/
    +ZGdx/2ptd/9zdXz/Z2p0/2xvef9sb3n/Zmlz/2Jlbv9qbXf/c3V8/3N1fP9nanT/bG95/2xvef9qbXf/
    +bG51/21vc/9zdXz/bnF7/2xudf9qbXf/YmVu/2xvef9sbnX/bG51/2Zpc/9kZ3H/cHN9/2Zpc/9ucHf/
    +c3V8/3Byef9nanH/b3F1/3Z4fP9zdn//cHN9/3Bzff9ucHf/bnB3/3l7gf9wcnn/bnF7/25wd/9wc33/
    +c3Z//3Bzff9ucXv/bG95/25xe/9ucHf/dXiB/3d6g/9+gYr/c3Z//3N2f/9vcXX/bnB3/25wd/9tb3P/
    +cHN9/2ptd/9sb3n/Z2p0/25xe/9qbXf/ZGdx/2Zpc/9ucXv/am13/2Zpc/9wc33/cHJ5/3V3ff91d33/
    +cHJ5/2psc/9qbXf/dXd9/3Bzff9tb3P/cHJ5/2xudf9qbHP/bG95/2psc/9qbXf/bG95/2xudf9wc33/
    +bnF7/2ptd/9sb3n/bG95/2ptd/91d33/c3V8/25wd/9kZ3H/bG95/3V3ff91d33/bnB3/3Byef9sbnX/
    +bG95/2psc/9qbXf/bG95/2xudf9nanT/bnF7/2dqdP9qbXf/bG51/2ptd/9maXP/am13/2xvef9sb3n/
    +am13/2ptd/9zdXz/cHJ5/3Z4fP9wcnn/bnB3/2xvef9sb3n/c3V8/3Byef9sbnX/c3V8/2psc/9nanH/
    +bG51/25wd/9tb3P/cHN9/2psc/9sbnX/bG51/3V3ff9ucHf/cHJ5/21vc/92eHz/am13/2dqdP9qbHP/
    +bG51/2psc/9zdXz/am13/2xvef9qbXf/bG51/2xvef91d33/bnB3/3Z4fP9tb3P/eXuB/3N1fP93eX//
    +cHN9/2dqdP9ucHf/dXiB/29yfP9xdHz/dXh//25weP9sbnX/cHJ5/3N1fP9qbXf/bnF7/25xe/9sb3n/
    +cHN8/3Byef9ydHv/bnB4/25xev9xc3r/am13/2dqdP9sb3j/bG95/3Bye/9rbnj/am12/2tueP9rbnj/
    +bG95/29xeP9rbnf/bnF6/21wev9xdH3/cXR+/3F0ff9vcnv/cnR7/2hrdf9sbnb/bG94/25weP9sbnb/
    +b3F5/2xvef9wc33/dHZ8/2ptd/9xc33/dnh8/21wev9ydX7/dHZ8/31+gv9ucHf/c3Z//3l7gf93eoP/
    +Z2p0/2xvef9zdn//c3Z//3Z4fv92eH7/cHN9/3J1fv9sb3n/b3J8/2xvef9sb3n/dHd7/3Z4fv9tcHr/
    +c3V8/3N1fP91d33/c3V8/3Z4fP9ucHf/dnh8/3N1fP9vcXX/bnB3/25xe/93eoP/c3Z//3Bzff95e4H/
    +dXiB/2ptd/9zdn//d3qD/25xe/9zdn//dXd9/29xdf9maGz/b3F1/3V3ff91d33/bnB3/3Byef9ucHf/
    +bG51/2xudf9sbnX/dXd9/25xe/9qbXf/bG51/1xfaP9qbHP/amxz/2psc/9iZW7/YmVu/2xvef9iZW7/
    +Z2p0/25xe/9sb3n/am13/2psc/91d33/bnF7/3Byef9zdXz/bG95/3Byef91d33/bnB3/2xvef9ucHf/
    +bnF7/3Byef9zdXz/cHJ5/25wd/9zdXz/bnB3/3Bzff9wc33/e36H/3Bzff91d33/bG95/3Bzff9wcnn/
    +cHJ5/3N2f/9wc33/cHN9/25wd/91d33/bnB3/2dqcf9qbHP/c3V8/3Byef9nanH/bnF7/3N1fP93eX//
    +dXd9/25xe/9tb3P/cHJ5/3V3ff9zdn//bG95/25xe/9vcXX/b3F1/3N1fP9sbnX/bW9z/2xudf9ucHf/
    +c3Z//3V4gf9ucHf/bnF7/25xe/9wcnn/d3qD/3V4gf9zdn//bG95/3N2f/93eoP/eXuB/3Bzff91eIH/
    +cHN9/25xe/9ucHf/bnF7/3Bzff9ucXv/bnB3/3d5f/9sb3n/bnF7/3Bzff9wc33/bG95/3Byef9zdn//
    +cHN9/3Bzff9zdXz/d3qD/3V4gf97fYP/cHJ5/3N2f/9wc33/c3Z//3d5f/9zdn//cHJ5/3V4gf9wc33/
    +cHN9/3N2f/93eoP/dXiB/3t9g/9zdXz/cHN9/3Bzff91d33/c3Z//3N2f/9sb3n/c3Z//2xudf9ucHf/
    +bnB3/25wd/9qbHP/c3Z//3Bzff9zdn//bG95/3Byef9sbnX/d3l//2ptd/92eHz/bW9z/3d5f/9zdXz/
    +d3l//3Bzff9maXP/bG95/3Bzff9sbnX/bnF7/3F0fv9xdH3/bnF7/3N2f/93eX//bG95/3Bzff91d33/
    +dXd9/3Byef9ucHf/cXN6/21veP9sb3f/bXB4/2tudv9oa3X/am1z/2xud/9zdn3/am13/2tudv9oa3X/
    +Zmlz/2hrdf9pbHP/aGt0/2hqcP9naW//Zmhu/2hrdf9oa3L/Z2p0/3N1fP9sbnX/bW9z/25wd/9sb3n/
    +bG95/25xe/9sb3n/cHN9/3N2f/9qbXf/bnF7/3N2f/9ucHf/dXiB/3Z4fP99foH/b3F1/3N1fP94eX3/
    +c3V8/2dqcf9qbHP/cHJ5/3N1fP91d33/dnh8/3Byef9zdn//bG51/3Byef9ucHf/bW9z/3V3ff91d33/
    +bG51/3Byef9ucXv/c3V8/2xvef9zdXz/bG95/3d5f/9ucXv/bG51/3N1fP9ucHf/dnh8/3Byef9ucXv/
    +d3l//3Bzff9nanT/c3Z//3d5f/9ucHf/cHJ5/3Z4fP9vcXX/ZWZq/29xdf9zdXz/dnh8/2ptd/9wc33/
    +cHN9/25xe/9ucHf/bnB3/3N2f/9wc33/bnB3/3Byef9maG7/bG51/2xudf9qbXf/Zmlz/2Zpc/9sb3n/
    +YmVu/2psc/9sb3n/am13/2dqdP9sbnX/bnF7/2xvef9ucXv/bnF7/2xudf9qbXf/bnF7/2xudf9qbXf/
    +amxz/2xvef9sb3n/bnF7/2xudf9nanH/c3V8/2xudf9ucHf/bnF7/3d6g/9wcnn/dnh8/25wd/9wcnn/
    +b3F1/29xdf9zdXz/bG95/3N1fP9sbnX/c3V8/2xvef9maXP/ZGdx/25xe/9qbXf/Zmlz/3Byef9zdXz/
    +eHl9/3Z4fP9wcnn/bnB3/3Bzff91eIH/c3V8/29xdf9ucHf/bW9z/21vc/9wcnn/bG51/2xvef9sbnX/
    +bG51/3Bzff9sb3n/ZGdx/2dqcf9maG7/Zmlz/2xvef9wc33/bnF7/2dqdP9ucHf/c3V8/3V3ff9sbnX/
    +c3V8/2ptd/9ucXv/am13/2xvef9ucXv/bnB3/2xudf91d33/amxz/2xudf9ucHf/b3F1/2dqcf9ucHf/
    +bnB3/25xe/9ucHf/bG95/3N1fP92eHz/dXd9/2xvef9wc33/cHJ5/25xe/9zdn//cHN9/3Byef91eIH/
    +bnF7/25xe/9sb3n/dXiB/3V4gf9+gIb/dXd9/3V4gf91eIH/e32D/3N2f/93eoP/bnB3/3V3ff9sb3n/
    +bnB3/25wd/9sb3n/bG51/3N2f/9wc33/dnh8/25wd/9zdXz/bG95/3d5f/9qbXf/dXd9/21vc/93eX//
    +cHN9/3Bzff9sb3n/ZGZs/3Byef9wc33/am13/29yfP9zdoD/c3Z+/3Byef93eoP/eXuB/3Byef93eoP/
    +e32D/3l7gf91eID/dnmB/3t9gP92eIH/c3Z+/3R3f/9ydH3/cnV+/3J0ff9wcnn/eHqE/3N1fv9sb3n/
    +bG95/25wd/9zdXz/bW9z/2xudf9ucHf/bG95/29xdf9zdXz/cHJ5/25xe/9qbXf/ZGdx/2psc/9qbXf/
    +amxz/21vc/9wcnn/b3F1/3Byef9wc33/Z2p0/25xe/91eIH/bnB3/3d6g/95e4H/f4GH/3N1fP93eoP/
    +e36H/3d6g/9wc33/bnF7/3t9g/95e4H/eXuB/36Ahv93eoP/eXuB/25xe/91eIH/c3Z//2xvef91d33/
    +dXd9/2xudf9ucHf/cHJ5/3N1fP9zdXz/eHl9/3Bzff91eIH/cHN9/25xe/9zdXz/c3Z//3d5f/93eoP/
    +dXiB/3d5f/9wc33/amxz/3Bzff93eX//bG95/3V4gf95e4H/cHJ5/2dqdP9ucHf/d3l//3l7gf9ucXv/
    +cHN9/25xe/9sbnX/bG51/21vc/9ucXv/cHJ5/2xudf9ucXv/Zmlz/2ptd/9sbnX/am13/2dqdP9nanH/
    +bnF7/2Zobv9ucHf/bnF7/25wd/9qbHP/am13/3Bzff9ucXv/bnB3/3Bzff9sbnX/bW9z/3N1fP9wcnn/
    +bnB3/29xdf9ucHf/bG51/3Byef9qbXf/Zmlz/25xe/9nanH/bG95/25xe/91eIH/am13/3Bzff9nanT/
    +am13/2Zpc/9nanT/cHN9/21vc/9zdXz/bW9z/3V3ff9ucXv/Zmlz/2dqdP91d33/bnF7/2ptd/9wc33/
    +bG95/3V3ff93eX//cHN9/2psc/9qbHP/am13/2xvef9qbHP/bnF7/2dqcf9qbHP/bG95/2psc/9ucXv/
    +bG51/21vc/91d33/cHJ5/2ptd/9sbnX/bG51/2psc/9ucHf/cHJ5/3Byef9qbHP/cHJ5/3N1fP94eX3/
    +bnF7/3Bzff9ucXv/cHJ5/25wd/9wcnn/cHN9/25wd/9ucHf/dnh8/2dqdP9qbXf/bG51/21vc/9kZmz/
    +b3F1/25wd/9zdXz/bnB3/25wd/9ucHf/c3V8/3V3ff9ucHf/c3Z//25wd/9ucHf/c3V8/3Bzff9wcnn/
    +c3Z//2xvef9nanT/am13/3N2f/9ucXv/d3l//3Bzff9wc33/c3Z//3l7gf9wc33/c3Z//2xvef92eHz/
    +bnB3/29xdf9ucHf/bnF7/2xvef91d33/c3Z//3V3ff9sb3n/cHJ5/29xdf91d33/bG51/3Z4fP9tb3P/
    +d3l//3V3ff9wc33/cHN9/2Rncf91eIH/c3Z//2xveP9vcnz/c3aA/3V4gP9sb3n/dXiB/3V3ff9sbnX/
    +c3V8/3Z4fP91d33/c3V8/29xdf9xc3n/cHJ5/3Fzev9vcXb/bG95/3Bzff9ucHf/bnB3/3V3ff9wcnn/
    +bG95/2xudf9nanT/cHN9/2psc/9maXP/amxz/2psc/9qbHP/bG95/25xe/9sb3n/dXiB/3N1fP9wc33/
    +d3qD/3N1fP9wc33/dXiB/3l7gf95e4H/d3qD/25xe/95e4H/d3qD/3N1fP91eIH/dXd9/3l8hv9sb3n/
    +c3V8/3V3ff9wcnn/Z2p0/2Zpc/92eHz/dXd9/3V3ff91d33/bnB3/3Bzff9nanH/bnB3/2xvef9qbXf/
    +bnF7/3Bzff9sbnX/cHJ5/3N1fP9wc33/c3Z//3t9g/91eIH/foGK/3d6g/93eoP/c3Z//3l7gf97fof/
    +eXuB/3d6g/97fof/eXuB/3V3ff95fIb/e36H/3V4gf95e4H/eXyG/3Bzff9qbXf/cHJ5/3N2f/93eX//
    +bG51/3Byef9ucHf/bG51/25wd/9ucHf/c3V8/3V3ff9sbnX/bnF7/2Rncf9qbXf/Z2p0/2dqcf9nanH/
    +YmVu/2xvef9iZGr/bG51/25xe/9sb3n/Z2p0/2xudf9wc33/bG95/2xvef9zdXz/bG51/2xudf9wc33/
    +bG95/2dqdP9maXP/am13/2ptd/9sb3n/amxz/2Zpc/9zdXz/am13/2ptd/9ucXv/dXd9/2dqdP9qbXf/
    +YmVu/2dqdP9iZW7/Z2px/2ptd/9maXP/bG95/2Zobv9qbXf/Zmlz/2BjbP9gY2z/bnF7/2ptd/9maXP/
    +am13/2psc/9wc33/bnF7/2dqdP9ucXv/c3Z//3Bzff9wc33/bG95/3N2f/9ucHf/bG95/25xe/9sb3n/
    +c3V8/25xe/9tb3P/dXd9/25wd/9ucHf/b3F1/25wd/9qbXf/am13/25wd/9sb3n/Zmlz/2ptd/9ucXv/
    +c3V8/2ptd/9ucXv/bG51/2xvef9sb3n/bG95/2xvef9ucHf/am13/3Bzff9nanT/am13/2ptd/9sbnX/
    +YmVu/2psc/9nanT/bG95/2psc/9qbHP/am13/25xe/9sb3n/amxz/25xe/9qbXf/bG51/25xe/9sb3n/
    +bG51/2xudf9kZ3H/Z2p0/2Rncf9sb3n/cHJ5/3N1fP9sb3n/bW9z/25wd/91d33/c3V8/3V3ff9ucHf/
    +eXuB/25wd/9wcnn/am13/2xvef9qbXf/c3Z//3V3ff91d33/b3F1/3Byef9ucXv/d3l//25xe/93eoP/
    +cHJ5/3d6g/9ucXv/c3Z//3V4gf9maG7/dHeA/29ye/9rbnf/cHN8/3R2fP9vcnz/bG51/3Bzff91d33/
    +bG51/3N1fP9zdXz/c3V8/3N1fP9tb3P/bnB3/3N1fP9ucXv/am13/2psc/9sb3n/am13/2psc/9zdXz/
    +Z2p0/2xvef9nanH/amxz/3N1fP9sbnX/bG51/2xudf9tb3P/b3F1/3Byef91d33/cHJ5/3V4gP9zdXz/
    +c3Z//3R3gP9ucXv/bnB3/2xvef9ucXv/cHJ5/3J0e/9rbXP/dHZ9/3V3ff9vcXj/cnR7/3R2fP91eIH/
    +bW90/25xe/9zdXz/am13/2dqcf9maG7/dXd9/3Byef92eHz/dXiB/25xev90d4D/aGt1/3N2f/9xdH7/
    +b3F4/3V4gf92eYH/c3V8/3d6g/95fIb/d3qD/3l8hv9+gYr/eXyG/4GDiv91eIH/dXiB/3V4gf91eIH/
    +eXyG/3t9g/9ucXv/d3l//25xe/9ucHf/c3V8/3h5ff9ucXv/d3l//3V3ff9ucHf/Zmlz/29xdf92eHz/
    +dnh8/2psc/9tb3P/cHJ5/2ptd/9sb3n/bG95/3N2f/91eIH/c3Z//3V4gf9qbXf/bnF7/25wd/9ucHf/
    +bnF7/2Zpc/9zdn//Zmhu/29xdf9wc33/bG95/2dqdP9ucHf/d3qD/25xe/9wc33/cHN9/25wd/9ucHf/
    +eHl9/3N1fP9ucHf/bnB3/25wd/9ucHf/bnF7/2xudf9qbHP/dXd9/2xudf9sb3n/cHN9/3V3ff9ucHf/
    +cHJ5/2Zpc/9qbXf/Z2p0/21vc/9ucXv/am13/25wd/9vcXX/dnh8/25wd/9kZ3H/Zmlz/3V3ff9tb3P/
    +bW9z/3Bzff9ucHf/dXiB/3l7gf9zdn//bG51/3N1fP9ucXv/cHN9/25wd/92eHz/bnB3/25xe/9wcnn/
    +bnB3/3Bzff9ucHf/bnB3/3N1fP9wcnn/bG51/2xudf9qbXf/am13/2ptd/9qbXf/bnF7/2dqcf9sb3n/
    +bnF7/3Bzff9sb3n/bG95/2xudf9sb3n/Zmlz/2dqdP9nanT/amxz/2dqcf9wc33/Zmlz/2ptd/9qbXf/
    +am13/2Jlbv9sbnX/bG95/3V3ff9ucHf/bnB3/3N2f/93eoP/c3Z//3Byef91eIH/c3Z//3N1fP95fIb/
    +dXiB/3V3ff91eIH/c3V8/3N2f/9ucXv/eXyG/31+gf9+gIb/dXiB/3V3ff91eIH/e32D/3d6g/93eoP/
    +bnF7/3t9g/9sb3n/bG95/2dqdP9wcnn/am13/3V4gf93eX//dXd9/25wd/9wc33/cHN9/3d6g/9wc33/
    +eXyG/25wd/94eX3/c3V8/3N1fP9zdXz/Zmhs/3V4f/9zdoD/bnB5/3R3gf92eH7/c3Z//25xe/93eoP/
    +dXd9/29xdf9zdn//dXd9/3V3ff9wcnn/bG51/25xe/9zdXz/bnF7/21vc/9tb3P/cHJ5/2xvef9sbnX/
    +dXd9/2xvef9wcnn/bG95/2dqdP91d33/bnB0/21vdv9tb3b/am13/2xudP9tcHr/c3V9/2xvef90d4D/
    +b3J5/29xef9zdn3/cXN4/29xdv9tb3f/bXB6/2xvef9xdH3/Z2pz/3N1ff91d33/b3J5/3Fzev90dnv/
    +dXd+/25wdf9wc33/dXd9/25xe/9qbXf/bnF7/3l7gf9zdn//eXuC/3Z5g/90d4D/d3mA/2xueP91d3//
    +dHeB/3N1e/95e4L/eXuB/3J0fP91eIH/cHN9/3Bzff9wc33/eXuB/3Bzff95fIb/cHN9/3N1fP9ucXv/
    +bG95/3Byef9ucXv/Z2p0/25xe/9qbXf/Z2p0/2ptd/9zdXz/am13/3V3ff9zdXz/bG51/2Rncf9sbnX/
    +dXd9/3Z4fP9nanT/bG51/25xe/9qbXf/am13/2ptd/9sb3n/cHN9/2xvef9ucXv/Zmlz/2ptd/9ucHf/
    +bnB3/2xudf9kZmz/dnh8/2Zobv9ucHf/c3Z//2xvef9qbHP/bnB3/3d6g/9zdn//cHN9/3N2f/9wc33/
    +cHN9/3l7gf9ucXv/bG95/2xvef9ucXv/cHN9/3N2f/9wcnn/bG95/3V3ff9ucHf/bnB3/3V3ff92eHz/
    +am13/25xe/9kZ3H/bG51/2psc/9qbHP/bG95/2dqdP9qbXf/amxz/25xe/9qbXf/Zmhu/2Zobv9zdXz/
    +bW9z/2psc/9ucXv/ZGdx/3N1fP91d33/c3V8/3Byef91d33/dXd9/3V3ff9ucHf/dXd9/25wd/9ucXv/
    +bnF7/25wd/91d33/dXiB/25xe/91eIH/cHN9/2xvef9ucHf/cHN9/2xvef9ucXv/bnF7/3Bzff9ucHf/
    +c3Z//3d6g/9zdn//cHN9/3Byef9tb3P/c3V8/25wd/9sb3n/am13/2psc/9qbHP/bG95/2Zpc/9nanT/
    +am13/2ptd/9kZ3H/amxz/2ptd/91d33/bG51/21vc/9wcnn/c3V8/3Bzff9nanH/bnF7/2xudf9tb3P/
    +cHJ5/2xudf9qbXf/bG51/25wd/9sbnX/Zmlz/25xe/91d33/c3V8/2xudf9sbnX/bnB3/3N1fP9zdXz/
    +dXd9/2xudf91d33/Zmlz/2ptd/9maXP/am13/2psc/9wc33/cHN9/3Bzff9qbHP/bG95/2ptd/9sb3n/
    +Zmlz/3V3ff9nanH/cHN9/2ptd/9ucXv/am13/2RmbP90dXv/cnR9/2ttdv9ucXn/cnV+/3N1fP9ucHf/
    +c3Z//3V4gf9zdXz/dXiB/3N2f/95e4H/dXiB/3Bzff95fIb/eXyG/3t9g/9zdn//c3V8/3l8hv94e4H/
    +dXd9/31/hf96fIL/eHuE/3Z5gf9zdXz/en2F/3R3f/9xc3r/cnR7/29xeP9wcnn/cXR8/3d5fv9wc3v/
    +c3Z+/3Fzev9vcXj/cnR7/3J0ef9xc3r/b3F2/25wef9vcnr/cnR5/2ptc/9ydHz/dXd//3R2fP9vcnv/
    +cHJ5/3R3gf9vcXj/c3Z//3p8gv9wcnn/Z2p0/2dqdP93eX//dnmC/3V3fv9ydX3/bXB6/29yeP9maXP/
    +Z2py/2ptdf9nanT/bnF5/3J1ff9sb3b/cHN9/3Bzff9ucXv/cHN9/3l8hv91eIH/d3qD/3N2f/9zdn//
    +c3V8/3Bzff91eIH/cHN9/3N2f/93eX//c3Z//25wd/9wc33/c3Z//25wd/93eX//d3l//21vc/9iZW7/
    +am13/3N1fP93eX//am13/2xudf9wcnn/bW9z/2xudf9sbnX/bG95/3N1fP9ucXv/cHN9/2dqdP9wc33/
    +c3V8/3Bzff9ucHf/bG95/3d6g/9sb3n/cHN9/3l7gf9wc33/bnF7/3N2f/9+gIb/eXyG/3N2f/91eIH/
    +c3Z//3Bzff91d33/cHJ5/25xe/9sb3n/bG95/25wd/9sb3n/Z2p0/2Rncf9ucXv/Zmlz/2dqdP9sb3n/
    +c3V8/2psc/9wc33/am13/2xvef9qbHP/am13/25xe/9nanT/bG51/21vc/9zdXz/bG95/2Rncf9kZ3H/
    +cHN9/2ptd/9nanT/bnF7/2dqdP9zdXz/dXd9/3V3ff9ucXv/cHN9/25xe/9wc33/amxz/2ptd/9nanT/
    +amxz/2dqdP9qbHP/bnF7/2ptd/9qbHP/Zmlz/2Rncf9iZW7/Zmhu/2Rncf9iZW7/ZGdx/2Zobv9maXP/
    +YmVu/2Rncf9maXP/Zmlz/2Zobv9kZ3H/Zmhu/2dqdP9maXP/Zmlz/2dqcf9kZ3H/Z2px/25xe/9qbXf/
    +am13/2xvef9sb3n/Zmlz/2ptd/9ucHf/dXd9/3Byef9ucHf/bnF7/3N2f/9zdXz/bnB3/3Bzff9ucXv/
    +bnB3/3V3ff9ucHf/bnB3/25wd/9ucHf/am13/2Zobv9zdXz/c3V8/3Byef9sbnX/bW9z/21vc/9wcnn/
    +cHJ5/3Bzff9sbnX/dXd9/2dqdP9sbnX/Zmlz/2dqdP9nanT/bnF7/3N1fP91d33/bnB3/3V3ff9ucXv/
    +cHJ5/25wd/92eHz/b3F1/3N1fP9zdXz/dnh8/25wd/9kZmz/bnB1/25xe/9tb3f/cHN9/3l7gf91eIH/
    +c3Z//3t9g/9wc33/bnB3/3Bzff9zdn//d3l//3V3ff9sb3n/bnF7/3Byef90dn3/bXB3/2ptdv9vcnv/
    +cnV+/21wdf9zdXz/bG93/25xev9tcHn/aGpz/3J0ev9wc3v/b3F6/3Bye/9pbHX/bnF5/2xvd/9xdH7/
    +a254/2ptd/9zdXv/bG95/29yev9zdXv/bnB2/25wdv9vcXX/b3F4/25wdf9sb3b/cHJ5/3V3fP93eX//
    +bnB3/3ByeP91eIH/bW94/3V3fv93eX//bW95/2Zpc/9nanT/dXd9/3R2ff9wcnn/cHN7/2xvef9rbnT/
    +Zmlz/2RncP9oa3P/Y2Zv/2Vocf9qbXb/a212/25xe/9qbXf/Z2p0/2dqdP9zdXz/bG95/3Byef9ucHf/
    +bG95/2ptd/9wc33/c3V8/2ptd/9sb3n/cHN9/2xvef9qbXf/am13/3Bzff9tb3P/dnh8/3l8hv9vcXX/
    +Zmhu/2xudf92eHz/d3qD/2xvef9ucXv/c3Z//3N1fP9wcnn/bG95/3Bzff93eX//c3Z//3V4gf9qbXf/
    +c3Z//25wd/9wcnn/cHJ5/2ptd/95e4H/am13/3Byef9zdn//c3V8/2ptd/9zdn//foCG/3l8hv93eoP/
    +eXuB/3V4gf95fIb/eXyG/3l7gf93eX//cHN9/3d6g/91eIH/d3qD/3N1fP9ucXv/e32D/3N1fP9zdn//
    +dXiB/3l7gf9wc33/cHN9/25wd/9wc33/cHJ5/25wd/91d33/amxz/2xudf9ucHf/dnh8/25wd/9kZ3H/
    +ZGdx/3N1fP9qbXf/bG51/3Bzff9nanT/bnF7/3V3ff9zdXz/bG95/3Bzff9qbHP/bG95/2dqdP9sb3n/
    +Z2p0/2xudf9qbHP/am13/3Bzff9ucXv/bG51/25wd/9qbXf/Z2p0/2xudf9qbXf/amxz/2ptd/9nanT/
    +Z2p0/2Zpc/9qbXf/bG95/25xe/9ucXv/bG95/2xudf9ucXv/Z2p0/2xudf9qbHP/am13/2xudf9wcnn/
    +bG51/2xudf9wcnn/bG95/2Rncf9sbnX/bnB3/3V3ff9wcnn/b3F1/25xe/91eIH/c3Z//25wd/9wc33/
    +cHN9/3Byef9zdn//bnF7/2ptd/9ucXv/bG95/25wd/9kZ3H/bnF7/25xe/9sb3n/Z2p0/2ptd/9sbnX/
    +bnF7/2xvef9qbXf/Z2p0/3N1fP9kZ3H/Z2px/2BjbP9iZW7/ZGdx/3N1fP9ucXv/am13/2xudf9wc33/
    +bG95/2xvef9qbXf/dXd9/21vc/91d33/bnF7/3h5ff9ucHf/ZGZs/3Bydv9ucXv/bG95/25xe/9zdn//
    +d3qD/25xe/93eX//c3Z//25wd/9zdn//c3Z//3l7gf95e4H/cHJ5/3Bzff9vcnz/dXd+/3Byef9rbnj/
    +cHN7/3Fze/9sbnb/cHJ4/2tueP9sb3j/bG95/2psc/9ydXz/cXN7/2lsdv9ydX7/aWtx/3Bye/9oa3T/
    +bXB5/2RncP9laHL/bW93/2ptd/9sb3n/bnF6/2ptd/9qbXf/am13/2xvef9qbHT/a210/21vc/90dnz/
    +dHZ8/25wd/9vcXb/c3Z//2xvd/9xdH3/cXR+/2tueP9maG7/Zmhu/3V3ff9zdX3/bnF7/3R3fv93eX7/
    +c3V8/3J1fv9ucXr/bnF6/2tud/9vcXj/dXiA/3R2fv9wc33/bnF7/25xe/9sbnX/dXd9/3V3ff91eIH/
    +dnh8/3N1fP9wcnn/bnF7/3d5f/9ucHf/cHJ5/3N1fP9zdXz/bnB3/3Byef9zdXz/b3F1/3Z4fP93eX//
    +bnB3/2dqcf9ucXv/dXd9/3l7gf9vcXX/bG95/3V4gf9zdXz/bnF7/2ptd/9wc33/d3l//3Bzff9zdn//
    +am13/3N2f/9wcnn/c3V8/25wd/9maXP/d3l//2dqcf9ucHf/bnB3/25xe/9nanT/cHJ5/3V3ff9wc33/
    +cHN9/3N2f/91d33/cHJ5/3Byef9ucHf/bnB3/2dqcf9zdXz/bnB3/3Bzff9sb3n/Z2p0/3V3ff9ucHf/
    +bnB3/3N2f/95e4H/cHN9/3N2f/9sb3n/cHJ5/2xudf9ucHf/dXd9/2xudf9ucHf/bnB3/3Z4fP9ucHf/
    +Z2px/2ZobP9zdn//bnF7/25wd/9zdXz/amxz/3Byef91d33/bG95/2xvef9wc33/bG51/25xe/9ucXv/
    +c3V8/2xudf9sbnX/Z2p0/2xudf9ucXv/bG95/2dqdP9sb3n/amxz/2Rncf9qbHP/bnF7/2dqcf9sb3n/
    +am13/2ptd/9qbXf/bG95/25xe/9ucXv/bnF7/2xvef9qbHP/bnF7/25xe/9qbXf/Z2p0/21vc/9sbnX/
    +bnF7/21vc/9ucHf/cHN9/3Byef9maG7/bnB3/3Byef9zdn//c3Z//2xvef9sb3n/cHN9/3N2f/9ucHf/
    +cHN9/3N1fP9ucHf/dXiB/3Bzff9qbXf/cHN9/25wd/9ucHf/Zmlz/3V4gf93eoP/cHN9/2xvef9wcnn/
    +bG95/25xe/91d33/bnF7/25xe/93eX//amxz/2xudf9qbHP/Zmlz/21vc/92eHz/dXd9/3Byef9tb3P/
    +d3l//2xvef9ucXv/amxz/3N1fP9nanT/bG95/2dqdP9sb3n/Zmlz/2Jlbv9sbnX/am13/2psc/9sbnX/
    +bnB3/3V3ff9sbnX/dXd9/3Byef9qbHP/bG51/2xvef9zdXz/c3V8/2ptd/9xdH3/bG54/25xe/9ucHf/
    +am11/25wd/9tb3b/bG52/2tudP9rbnf/aGt0/2Zpc/9naW//cXN6/3R2fP9qbXf/cnR8/2Zob/9kZ3H/
    +ZWhy/25wd/9laHH/aGt1/3Bzff9ucXv/cHN9/3Bzff9ucHf/amxz/29xdv9wcnr/b3F4/21vdv9ucHX/
    +dnh8/3V3ff9xc3v/cHN4/3N1fP9ydHz/dHeA/3h6gP9wcnn/Zmlz/2Zobv9wc33/cXN5/3Fzev9ydHr/
    +c3V8/29xef9tcHj/b3F3/2xudv9pa3T/bnF5/3N1fP9xc3n/c3V8/29xdf9ucXv/bG95/3d5f/91eIH/
    +d3qD/3N2f/9zdn//cHN9/3N2f/95e4H/c3Z//3N2f/9zdn//cHN9/2xvef9ucHf/c3Z//25wd/93eX//
    +d3l//3N2f/9maXP/cHN9/3N2f/93eX//bnB3/3Byef91d33/b3F1/29xdf9sbnX/dXd9/3N1fP9ucHf/
    +cHJ5/2Zobv9ucHf/am13/2ptd/9tb3P/Zmhu/3V3ff9iZW7/am13/2xvef9sbnX/Zmlz/2ptd/9zdXz/
    +c3V8/3N1fP91d33/bnF7/2xvef9zdXz/bnB3/25wd/9nanT/dXiB/25xe/9zdn//bnB3/2dqdP9zdn//
    +am13/25xe/9zdn//dXiB/25wd/9zdn//am13/25xe/9vcXX/bnF7/3N1fP9sbnX/bnB3/3Byef92eHz/
    +bnB3/2Zpc/9kZmz/cHJ5/2xvef9nanT/bnF7/2Zpc/9sb3n/c3Z//2xvef93eoP/dXiB/25wd/9zdn//
    +c3Z//3V3ff9ucHf/bnB3/2ptd/9ucHf/cHN9/3V4gf9wcnn/c3Z//25xe/9ucHf/bG95/3Bzff9wcnn/
    +dXiB/25xe/9ucXv/bnB3/3Byef9wc33/cHN9/25xe/9ucXv/bnB3/3N2f/9sb3n/b3F1/2xvef9vcXX/
    +bnB3/3N2f/9ucHf/bnB3/3Bzff9wc33/Zmlz/3Byef9zdXz/dXiB/3V4gf9ucHf/bG95/3N2f/91d33/
    +bG95/3N2f/91eIH/bnF7/3d5f/9ucXv/am13/3Bzff9ucHf/bnB3/2ptd/93eX//dXiB/3N2f/9sb3n/
    +cHJ5/2xudf9ucXv/c3Z//3N1fP9zdXz/dXiB/2xvef9wcnn/am13/2dqdP9ucHf/dXd9/3h5ff9zdXz/
    +bnB3/3h5ff9zdXz/c3V8/29xdf92eHz/bnB3/25xe/9qbXf/bnF7/2xvef9kZ3H/amxz/2dqdP9iZW7/
    +Z2p0/2xvef9ucXv/amxz/3N1fP9sb3n/ZGdx/2psc/9nanT/bG95/2xvef9oanH/cHN8/2tudv9sb3n/
    +bW92/21vd/9vcXj/b3F2/3J0e/9vcXj/dHZ8/2ptd/9oa3L/bW9z/3d5f/94eoD/cHJ5/3p8gv9ucHf/
    +cnR7/25wdP90dn3/bG52/3Bzev92eH//bnF7/3N2ff9xc3r/bnB4/2hrcv9tcHf/bXB6/2xudf9sbnX/
    +am10/2xvef9ydHr/am10/2ttcv9ucXn/aWx0/3J0fP9vcnn/a213/2Rncf9kZmz/bnF7/3Byef9sb3n/
    +dHZ8/3Bze/9sb3f/a212/2xvd/9rbnb/aGt1/25wef9sb3n/bG93/3Bzff9maXP/Z2p0/2psc/9ucXv/
    +bG95/3N1fP9maXP/ZGdx/2Rncf9nanT/bG95/2Zpc/9kZ3H/Zmlz/2Zpc/9kZ3H/Zmlz/2Zpc/9iZW7/
    +bG51/2xvef9kZ3H/XWBq/2Zpc/9sb3n/cHJ5/2Rncf9nanT/dXd9/2xudf9sbnX/am13/25xe/91d33/
    +bG95/3N1fP9nanH/dXd9/25wd/9ucXv/bnB3/2dqcf94eX3/Zmlz/2xvef9ucXv/b3F1/2xudf9sbnX/
    +c3V8/3N1fP91d33/dnh8/3N1fP9ucHf/cHJ5/2xudf9ucHf/Z2px/3N1fP9wcnn/bG95/2dqdP9iZW7/
    +bnF7/2Zpc/9sb3n/cHN9/3d5f/9qbHP/c3V8/2psc/9wcnn/b3F1/3Bzff9zdXz/bnB3/2xudf9wcnn/
    +c3V8/29xdf9qbHP/Zmhu/3Byef9ucHf/bnB3/3V4gf9wcnn/dXiB/3l8hv91eIH/c3Z//3V4gf9sb3n/
    +d3qD/3V4gf95e4H/cHJ5/3N1fP9sb3n/bG95/3N2f/9wc33/cHJ5/3V3ff9ucHf/bnB3/25wd/9zdXz/
    +bG51/3N1fP9sbnX/bnF7/21vc/9ucHf/c3V8/25xe/9sb3n/am13/2ptd/9sb3n/amxz/2psc/9nanT/
    +Z2px/2xudf9ucXv/amxz/2Zpc/9sb3n/bG95/2BjbP9nanT/bW9z/25wd/9ucHf/amxz/2xudf9sb3n/
    +c3V8/2ptd/9ucXv/dnh8/3Byef93eX//cHN9/2ptd/9zdXz/bG51/2xudf9qbHP/dXd9/3N1fP9zdXz/
    +amxz/25wd/9ucHf/bnB3/3V3ff9wcnn/dXd9/3d5f/9ucHf/b3F1/2ptd/9nanT/bnB3/3V3ff92eHz/
    +c3V8/2xudf92eHz/dXd9/3V3ff9wcnn/dnh8/3Byef9wc33/cHJ5/3Byef9zdXz/Zmhu/21vc/9qbXf/
    +Zmlz/21vdv9xdH7/dXd9/21vc/9zdXz/bnF7/2Rncf9sbnX/bnF7/25xe/9ucXv/aWxz/3Bze/9ydHr/
    +c3aA/3J1fv9ydXv/c3V8/3F0ff92eH//dnmC/3V4gf9sb3n/bXB6/29xef95e4H/eXuE/29yfP93eoT/
    +bnF4/3J1f/9zdXz/cnV+/29xdv9zdXz/c3Z+/29yev92eH7/b3F4/2xvef9rbXT/cHJ5/29xeP9xc3f/
    +bW9z/29xeP9xc3r/c3V9/3Bye/9zdXv/dXh//3Byef9xc3r/c3V8/29xdf9nanH/Zmhu/25wd/9sb3n/
    +bG95/3R2fP9ucXr/bG94/2hrdf9ucXv/aGt1/2dqc/9rbnf/bG94/2lsc/9nanT/XWBq/2Zobv9maG7/
    +bG95/2xvef9ucHf/Zmlz/2Zobv9maG7/Zmlz/2ptd/9maXP/ZGdx/2dqdP9nanT/Zmhu/2dqdP9nanT/
    +YGNs/2xudf9ucHf/Zmhu/11gav9maXP/am13/3Byef9maXP/Z2p0/25wd/9maG7/Z2px/2Rncf9sb3n/
    +bnF7/25xe/9wc33/Zmhu/3Bzff9nanT/bG95/2psc/9maXP/c3V8/2Jlbv9sbnX/bnB3/2xudf9maXP/
    +Zmlz/3Bzff9ucXv/bG95/25xe/9ucXv/bnF7/2xvef9sbnX/bnF7/2dqdP9zdXz/c3V8/3Byef9tb3P/
    +ZGZs/3Byef9sbnX/cHJ5/3V3ff93eX//b3F1/25wd/9nanH/bnF7/3Byef91eIH/dXiB/3N1fP9zdXz/
    +c3Z//3d6g/9wc33/bnF7/2xvef9zdn//c3Z//3N1fP91eIH/bG95/25xe/91eIH/c3Z//2xvef9zdXz/
    +amxz/3N1fP9qbXf/cHN9/2psc/9qbHP/amxz/2dqdP9ucXv/Z2p0/2psc/9sb3n/Z2p0/2Zpc/9qbXf/
    +bnF7/2ptd/9sb3n/am13/2xvef9vcXX/cHJ5/3Z4fP9zdXz/c3V8/3Byef9wcnn/dnh8/25xe/9sb3n/
    +bG95/2xvef9sb3n/dXiB/3N1fP9wcnn/dXiB/3Bzff9qbXf/bnF7/25wd/9sb3n/bnB3/29xdf9sbnX/
    +c3V8/3V3ff9sbnX/cHN9/3N1fP9ucHf/c3V8/2xudf9nanH/bG95/29xdf9ucHf/ZGdx/3N1fP9sb3n/
    +bG95/2Zpc/9sb3n/Zmlz/25wd/9wc33/bnF7/25xe/9zdXz/Z2p0/25wd/9qbHP/Z2px/2ptd/9zdXz/
    +dXd9/2xvef9sbnX/dXd9/2xvef9ucXv/Zmhu/2ptd/9nanH/bG95/2psc/9qbXf/Zmlz/11gav9laHL/
    +Z2lv/1xfaP9naW//am12/2xvef9sbnX/Z2p0/2Zpc/9iZW7/amxz/25xe/9ucXv/c3V8/2tud/9ydHv/
    +cHJ4/25xev9tb3b/bG51/21wef9ucHf/cXN6/3R2fP9wcnj/bG51/21vdv9rbXb/dHZ+/3J1fP9rbnb/
    +dHZ9/2xudf9tb3b/cXN5/2xvd/9ucHf/cHJ7/3Bzev9wcnn/c3V8/2xvef9ucHf/bG94/3J0ff9xc3v/
    +dHZ+/29yev9xdHz/bXB5/3BzfP9ucHr/dXeA/3h6gP9ydX7/cHN9/3N2f/9ucHf/am13/2dqdP9wc33/
    +cHN9/3N2f/95fIX/cXN9/25xe/9oa3X/c3V8/25wd/9sb3n/cHN9/3V3ff9wcnn/cHN9/2xvef9wc33/
    +bG95/3V3ff91d33/d3l//3N1fP9ucHf/b3F1/3V3ff94eX3/dXd9/3Byef9zdXz/cHJ5/2dqdP9sb3n/
    +bnF7/2xudf91d33/cHN9/2psc/9iZW7/am13/3Bzff9ucXv/amxz/2ptd/9zdXz/Z2px/2psc/9maXP/
    +Z2p0/2dqdP9maXP/Z2p0/2BjbP9ucXv/Z2p0/2xvef9sbnX/amxz/3Z4fP9maG7/bnB3/2xvef9sb3n/
    +bG95/2ptd/91d33/c3V8/3N1fP9zdXz/cHJ5/3N1fP9wc33/bnB3/3Bzff9qbXf/dXiB/3d5f/91d33/
    +bnB3/2RmbP9ucHf/am13/2ptd/9ucXv/dXd9/2xudf9qbXf/YmVu/2xudf9sbnX/bG95/2xvef9sbnX/
    +am13/3Bzff9zdXz/bG51/2Zpc/9kZ3H/bnF7/2xvef9qbHP/bG95/2psc/9sb3n/d3l//25xe/9kZ3H/
    +Z2p0/2BjbP9kZ3H/Zmhu/2ptd/9kZ3H/Z2px/2Zobv9nanH/am13/2dqdP9qbXf/c3V8/25xe/9qbXf/
    +bG51/25xe/9qbXf/cHJ5/29xdf9zdXz/b3F1/25xe/91d33/c3V8/3N1fP9ucXv/bnF7/3V3ff9wcnn/
    +bnB3/25wd/9ucHf/bnB3/3Bzff9vcXX/b3F1/25wd/9sbnX/Zmhu/21vc/9tb3P/bG51/2xudf9qbXf/
    +amxz/3Bzff9zdXz/bG51/3Bzff9wc33/bnF7/3Bzff9tb3P/bG51/3N1fP9vcXX/bnB3/2Zobv92eHz/
    +cHJ5/3N1fP9nanH/cHJ5/25wd/9zdXz/dXd9/3Byef9wc33/d3l//25xe/91eIH/bG95/3N1fP9zdXz/
    +dXiB/3l7gf9ucXv/cHJ5/3V4gf9zdXz/c3Z//25wd/9zdXz/bnF7/3V4gf9wc33/cHN9/3Bzff9qbHP/
    +bW93/29ye/9pbHX/b3F6/29yfP9xdH7/bnF7/3Byef9wc33/bG95/2xvef9zdn//bnF7/3Bzff9sb3n/
    +dHZ8/25xe/9xc3v/bnF7/21vdv9xc3r/cXN4/29yev9zdX3/cXN6/3F0fP9xdHz/b3J6/3d5gv9xdHv/
    +bW93/3R2fv9qbXb/a254/3R2f/9tcHr/cHN8/21wev9tcHn/bnF4/3Bye/9vcnz/bnB3/2tueP9tcHr/
    +bG51/25xev9qbXf/cHJ8/2xudf9qbXf/am13/3J0e/9ucXv/am13/2psc/9nanT/Z2px/2Jlbv9gY2z/
    +am13/2dqdP9qbXf/c3Z//2ptd/9qbXf/ZGdx/25xe/9sb3n/bG51/3Byef9ucXv/cHJ5/3Byef9tb3P/
    +cHJ5/25wd/93eX//d3qD/3d6g/91eIH/c3Z//25xe/93eoP/d3qD/3d6g/9zdn//dXiB/3d6g/9sb3n/
    +cHN9/3Bzff9zdn//e32D/3l7gf9wc33/bG95/3N2f/95e4H/foCG/3N2f/93eoP/eXyG/3Bzff9wc33/
    +dXd9/3d6g/95e4H/eXuB/3V4gf9wc33/e32D/3N1fP91eIH/c3Z//3Bzff95e4H/bG95/25wd/9ucXv/
    +cHJ5/2ptd/9sb3n/cHN9/3V4gf9zdXz/cHJ5/3Byef9wcnn/c3V8/29xdf9ucHf/Z2p0/3Bzff91d33/
    +cHN9/21vc/9kZ3H/bG95/2dqdP9sb3n/cHN9/3V3ff9qbXf/am13/2Rncf9nanT/amxz/2ptd/9nanT/
    +Z2px/2Zpc/9ucXv/bnF7/2dqcf9ZXGX/XF9o/2Zpc/9maXP/Zmhu/2Rncf9kZ3H/Z2p0/2xvef9maXP/
    +Z2p0/2xvef9maXP/bnF7/2xudf9wc33/amxz/2xvef9sbnX/bG51/3V3ff9ucHf/bnB3/3l7gf9ucXv/
    +bnB3/25wd/9zdXz/am13/3V4gf9wcnn/cHJ5/3Byef9zdn//d3qD/3N2f/9zdn//cHJ5/3Bzff95e4H/
    +cHN9/3Bzff9ucXv/cHN9/25xe/9wc33/bnB3/25wd/9wcnn/bW9z/2dqcf9vcXX/bnB3/25wd/9sbnX/
    +am13/2xudf91d33/c3V8/2ptd/9wc33/cHJ5/3Byef9zdn//bG51/2xudf9zdn//am13/25wd/9kZ3H/
    +c3Z//3N2f/9zdn//am13/3N2f/9wcnn/dXiB/36Ahv95fIb/eXyG/3t9g/9zdn//d3qD/25xe/9wcnn/
    +cHJ5/3N2f/95fIb/cHN9/25xe/93eX//bnF7/3Byef9vcXX/c3V8/25xe/91eIH/cHN9/25xe/9sb3n/
    +bG51/29xef9xdHz/aGtz/3Byef9ydHr/dHZ8/25xe/9ucXv/cHN9/25wd/9wcnn/dXiB/3Bzff9zdn//
    +bnF7/3Z4fv9xc3r/c3Z//21wev9tb3j/dHZ7/3J1ff9tcHr/cnV//29xef90dn//bXB6/3ByeP93eX//
    +cHF4/25wd/9zdXz/amxz/25wd/92eH7/bnB3/3N1fP9vcXj/aGt1/25wdP9vcXv/bnF7/2xudf9sb3n/
    +cHN9/2xudf9zdXz/bG51/3N1fP9sbnX/amxz/2ptd/91d33/bnF7/2xvef9qbXf/bG95/2psc/9kZ3H/
    +YGNs/2dqdP9nanH/Z2p0/3V3ff9qbXf/Z2p0/2BjbP9qbXf/Zmlz/2Zobv9nanT/Zmlz/2Zpc/9qbXf/
    +Zmhu/2dqdP9maG7/dXd9/3V3ff9zdXz/bG95/3Bzff9qbXf/cHN9/3d5f/9wc33/cHJ5/3N1fP91d33/
    +bG51/3Byef9wc33/c3Z//3d6g/93eoP/c3V8/25xe/9ucXv/dXd9/3V3ff9sb3n/bG95/3d5f/9sbnX/
    +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/Zmlz/25xe/9nanT/bG95/2xvef9iZW7/am13/2BjbP9iZW7/
    +Z2px/2Rncf9kZ3H/Zmlz/2ptd/9sb3n/bG95/2xudf9sb3n/bnF7/2xvef9sbnX/bnF7/2dqdP9ucXv/
    +dXd9/3N2f/9ucHf/Z2p0/25wd/9ucHf/cHJ5/3N1fP92eHz/bG51/2xudf9kZ3H/am13/25wd/9sbnX/
    +bG95/2xudf9nanT/cHN9/3Bzff9sbnX/YmVu/2Jlbv9ucXv/am13/2xudf9qbXf/Z2px/2xvef9wcnn/
    +bG95/25wd/9sb3n/Z2p0/2xvef9qbXf/c3V8/2xudf9wcnn/bG95/3N1fP97fYP/cHN9/3Byef95fIb/
    +dXiB/3Byef9zdXz/d3qD/25xe/97fYP/dXd9/3l7gf91eIH/eXyG/3l8hv91eIH/dXiB/3N2f/9wc33/
    +d3qD/3Bzff9ucHf/Z2p0/25wd/9wcnn/cHJ5/25wd/9vcXX/cHN9/29xdf9nanH/bG51/2xudf9qbHP/
    +am13/2dqdP9nanT/bnF7/2xvef9qbHP/am13/25xe/9qbXf/c3V8/2ptd/9nanT/bnF7/2dqdP9sbnX/
    +ZGZs/3Byef9ucXv/bG95/2Rncf9sb3n/Z2px/25xe/9wc33/am13/2xvef9wc33/am13/2xvef9kZ3H/
    +Z2p0/2psc/9qbXf/cHJ5/2dqcf9maXP/cHJ5/2psc/9sb3n/Z2px/2ptd/9nanT/Z2p0/2ptd/9nanH/
    +amxz/2dqdP9sb3j/cnV8/2Zpc/9vcXf/a253/25xe/9qbHP/Z2p0/2dqdP9kZ3H/bG51/2xvef9qbXf/
    +am13/2xudf9sb3n/aGt1/3V3ff9ucXj/bW92/3Z4fP91d33/bG92/3N1fP9sbnb/c3V8/25wd/9vcXX/
    +eHl9/3N1fP9sbnX/bnB3/2psc/9sb3n/dXiB/25xe/9wcnn/bnF7/2ptd/9qbXf/c3V8/25xe/9qbHP/
    +bG51/3N1fP9ucHf/cHJ5/25wd/9zdXz/bG51/21vc/9qbXf/d3l//2xvef9qbXf/am13/2psc/9qbXf/
    +ZGdx/2BjbP9qbXf/amxz/2xvef91d33/bG95/3N1fP9naW//c3V8/3Byef9sb3n/cHN9/3V4gf9wc33/
    +cHN9/25wd/9ucXv/bnF7/3d6g/91eIH/d3l//3V4gf9zdn//cHJ5/3N1fP93eX//c3V8/25wd/91d33/
    +c3V8/21vc/9qbXf/bnB3/2xvef9ucXv/am13/2Zobv9maG7/Zmlz/3Bzff9zdXz/bG51/2ptd/91d33/
    +bG51/21vc/9tb3P/bnB3/2xvef9sb3n/bG95/2Zpc/9ucXv/am13/3N1fP9ucHf/Z2px/3Z4fP9nanH/
    +bnB3/25wd/9vcXX/bG95/2xvef9zdn//c3Z//3N2f/9ucHf/c3V8/3Bzff9ucXv/bG95/3N1fP9nanT/
    +c3Z//3l7gf93eX//c3V8/3N1fP91eIH/cHJ5/3d6g/97fYP/f4GH/3d5f/9zdn//bnF7/3N2f/9zdn//
    +cHN9/3Bzff9ucHf/am13/3V3ff92eHz/bG95/2psc/9maXP/cHN9/25wd/9zdXz/cHJ5/2xvef9zdXz/
    +dXd9/3N1fP9ucXv/bnB3/2xudf91d33/bnF7/3V3ff9wcnn/bnB3/2ptd/9sbnX/dXd9/2xudf9sbnX/
    +eHl9/3N1fP9qbHP/bnB3/3V3ff9nanH/cHJ5/25wd/9ucHf/bG95/3N1fP9wcnn/cHJ5/3N2f/9ucXv/
    +c3V8/3V4gf9ucXv/bnF7/25wd/9wc33/c3Z//3N2f/9wcnn/c3V8/3V4gf9wcnn/Zmlz/25xe/9ucHf/
    +b3F1/25wd/9sb3n/cHN9/3V4gf9wc33/bnF7/25xe/9zdn//b3F1/3Z4fP9tb3P/amxz/3Byef9qbHP/
    +bnB3/2dqcf9zdn//cHN9/25xe/9nanH/c3V8/2xudf9ucXv/eXuB/3V4gf9zdn//c3Z//2xudf9ucHf/
    +bG51/25wd/9vcXX/c3V8/3d5f/9ucHf/cHJ5/3d5f/9ucHf/c3Z//3Byef9wcnn/c3V8/3Byef92eHz/
    +bG51/2xudf9nanT/bG95/2xvef9maXP/a210/2Vocv9ucXv/am13/2xudf9sbnX/Z2p0/2ptd/9ucXv/
    +bnB3/25xe/9qbXf/bG95/2Zpc/9zdXz/am13/2dqcf9wcnn/bnF7/2psc/9ucXv/am13/25xe/9qbXf/
    +am13/3Bzff9sb3n/Z2p0/2ptd/9kZ3H/bG51/3V3ff9ucHf/c3V8/2xvef9sbnX/bG51/3Bzff9ucXv/
    +Zmlz/2ptd/92eHz/bnB3/3N1fP9sb3n/dXiB/3Bzff9zdXz/c3V8/3h7hf91eIH/dXiB/3N2f/9zdn//
    +c3V8/2ptd/9ucXv/dXd9/3d6g/93eoP/fYCJ/3d6g/93eYD/bXB5/3N2f/9ucXv/bXB6/21wev9ydX7/
    +c3V8/3V3ff9sbnX/cHJ5/3Byef93eoP/d3l//3h5ff9zdXz/bnF7/2psc/9sb3n/dXd9/2xvef9nanT/
    +cHJ5/2ptd/9qbHP/am13/2xvef9sb3n/cHN9/25xe/9sbnX/bG51/2ptd/91d33/dXd9/2ptd/9qbXf/
    +c3Z//2dqcf9nanT/amxz/2xudf9sbnX/am13/2xvef9maXP/bG95/2psc/9ucXv/bG51/2Jlbv9wcnn/
    +YGNs/2Rncf9maXP/Z2px/2Zpc/9maXP/bG95/2dqdP9qbXf/Zmlz/2ptd/9qbXf/am13/2psc/9sb3n/
    +ZGdx/2ptd/9zdXz/cHJ5/2dqcf9iZW7/bG95/2dqcf9sb3n/am13/3N1fP9qbHP/am13/2Zpc/9qbHP/
    +am13/2xudf9ucHf/b3F1/2psc/9zdXz/dXd9/2psc/9maG7/Zmhu/3Z4fP9wcnn/cHJ5/25wd/9tb3P/
    +c3V8/3V3ff9zdn//bG51/2xvef9qbXf/bnF7/2ptd/91d33/c3V8/29xdf9wcnn/b3F1/3V4gf9ucXv/
    +bnB3/3l7gf9wc33/bG95/25xe/93eX//am13/3Bzff9wcnn/cHN9/3Bzff9wc33/bG95/2xvef92eHz/
    +bnB3/29xdf9ucHf/bG95/2ptd/9maXP/bnF7/2ptd/9qbXf/Z2px/2Rncf9nanT/Zmhu/2BjbP9nanT/
    +Zmlz/2Zpc/9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2xvef9qbXf/cHN9/2xudf92eHz/b3F1/2psc/9wc33/
    +cHJ5/3N2f/9maXP/cHN9/3Bzff9wc33/am13/3N2f/9ucHf/c3Z//3V4gf9ucXv/c3Z//3N2f/9ucXv/
    +dXiB/3N2f/9zdXz/cHN9/3d6g/9+gYr/c3Z//3d6g/95fIb/c3V8/3l7gf9zdXz/d3qD/3d6g/93eoP/
    +eXuB/3N2f/9zdn//c3V8/3l7gf91eIH/bG95/25xe/9qbXf/c3Z//3V3ff9ucHf/bG95/2dqdP9sb3n/
    +cHN9/25xe/9zdn//bnB3/3Bzff9ucHf/d3qD/3Bzff9ucHf/dXiB/3V4gf9wcnn/c3Z//3Bzff9zdn//
    +bnF7/3Byef97fYP/d3qD/2xvef9zdn//Z2p0/25xe/91eIH/bnF7/3V3ff91eIH/cHN9/3V3ff97fYP/
    +d3qD/3N1fP9ucXv/dnmC/3Bzff90d4D/bnB3/3R3gP9wc3z/cHJ5/3ByeP90d33/bnF7/3R3gP9vcXj/
    +b3F3/3Byef9maXP/Z2px/21vc/9tb3P/bnB3/3V3fP9xc3v/cHN7/2lsdP9sbnb/bW92/2lrdP9tb3f/
    +b3F4/3Byev9wc33/bnB3/3Byef9wc33/eXyG/3d6g/93eX//c3Z//3N2f/9ucHf/cHN9/3V4gf9zdn//
    +bnF7/3d5f/91eIH/bnB3/25xe/9ucXv/bnB3/3V3ff9zdXz/bnB3/29xdf9wcnn/dnh8/3l7gf9wcnn/
    +cHJ5/3V4gf9qbXf/bnB3/21vc/9ucHf/am13/25wd/9sbnX/ZGZs/25wd/9tb3P/c3V8/2xudf9qbHP/
    +dXd9/2dqdP9sbnX/cHJ5/21vc/9ucHf/bG95/25xe/91eIH/c3Z//25xe/9zdn//cHN9/25xe/9vcXX/
    +cHN9/2dqdP9sb3n/dXd9/3Z4fP9tb3P/Z2px/3Byef9sbnX/bnF7/2ptd/91d33/bnB3/25wd/9nanH/
    +bW9z/2xudf9sb3n/bG95/2psc/9kZ3H/cHN9/25xe/9maXP/YmVu/2Rncf9sb3n/am13/2xudf9qbHP/
    +bG51/3Byef9zdXz/bnF7/3Byef9wcnn/b3F1/3Bzff9ucXv/d3l//3Bzff9ucHf/bnF7/25wd/95e4H/
    +bG95/29xdf93eX//bnF7/2xvef9ucXv/c3Z//2dqdP9zdn//bnF7/3Bzff9wc33/cHN9/3V4gf91eIH/
    +e32D/3N2f/9wc33/cHN9/25xe/9zdn//cHN9/3d6g/93eoP/dXiB/3N1fP9wc33/c3Z//2xvef9maXP/
    +cHN9/25wd/9zdXz/c3Z//2xvef9sb3n/cHJ5/25xe/9wc33/bnB3/3Bzff9ucHf/eHl9/29xdf9qbHP/
    +bnF7/29xdf9zdXz/Zmlz/3Bzff9zdXz/cHJ5/2xvef93eoP/cHJ5/3Bzff91eIH/c3Z//3Bzff9wc33/
    +am13/25xe/9ucHf/bnB3/25wd/9wc33/dXd9/2xvef9zdXz/eHl9/29xdf92eHz/bG51/2ptd/9qbXf/
    +bnF7/25xe/9qbXf/Z2px/2Zobv9sb3n/bnF7/2Jlbv9maXP/Zmlz/25xe/9ucXv/bG51/2xudf9qbHP/
    +amxz/25xe/9zdn//c3Z//3Byef9zdn//bnF7/3l8hv9zdn//c3V8/3d6g/97fYP/dXiB/3Z5g/93eoP/
    +dnmC/3V3gP9wc33/fYCJ/3p8g/9wc33/d3qD/2ptd/9wc33/dnh+/3Byef90dnz/a254/2tueP9oa3X/
    +c3V8/29yfP9pbHX/am13/3N1fv9sb3n/bG95/2xudf9xc3r/bnB0/3Byd/9sbnT/cXN5/25wd/9vcnv/
    +cHJ2/25wdf9vcXX/amxz/2dqcf9tb3P/bG51/25wd/9zdXz/cXN6/25wef9sbnb/bnB3/21vdv9tb3X/
    +cnR7/3Fzev9ucXn/bG95/2ptd/9sb3n/bG51/3d5f/93eX//c3V8/3Bzff9sb3n/am13/2xvef91d33/
    +dXd9/2xudf91d33/dXd9/2xvef9ucXv/cHN9/3N1fP9zdXz/bnB3/25wd/9vcXX/bnB3/3V3ff93eX//
    +cHN9/25xe/93eoP/Z2p0/2xvef9sbnX/cHJ5/25wd/9sb3n/bnB3/2RmbP9ucHf/bG95/3N2f/9ucXv/
    +bG51/3d5f/9ucHf/bnB3/3Bzff9wcnn/bnB3/2xvef9ucXv/dXiB/3d6g/91eIH/d3qD/3N2f/9wc33/
    +cHJ5/3Bzff9sb3n/bnF7/3N2f/91d33/cHJ5/2ptd/9zdn//bG51/3Byef9wcnn/bnF7/2ptd/9sb3n/
    +Z2p0/21vc/9ucHf/bG95/3Byef9ucHf/amxz/3V3ff92eHz/bnB3/2dqcf9qbHP/dXd9/3Byef9sbnX/
    +b3F1/29xdf9ucHf/c3V8/3N1fP9sbnX/am13/2psc/9sb3n/Z2px/25xe/9nanT/amxz/2dqcf9nanH/
    +dXd9/2psc/9sbnX/dXd9/2xudf9maXP/amxz/25xe/9nanT/bG95/2xvef9qbXf/bnB3/2xudf9qbXf/
    +am13/3N1fP9tb3P/bG51/2xvef9sb3n/am13/2Zpc/9ucXv/am13/2psc/9kZ3H/Z2px/2ptd/9nanT/
    +Zmlz/2ptd/9sbnX/bG51/21vc/9sbnX/bnB3/2xvef9wcnn/c3V8/2xvef93eX//cHN9/3d5f/9sb3n/
    +am13/25xe/9wcnn/c3Z//2ptd/93eoP/c3Z//3N2f/9ucHf/c3Z//25wd/9wcnn/cHJ5/25wd/9wcnn/
    +c3V8/2xudf9wcnn/bG51/2xudf9sbnX/am13/3Bzff9sbnX/cHJ5/3h5ff9tb3P/dXd9/3Byef9zdXz/
    +c3V8/3V3ff92eHz/cHJ5/25wd/9ucHf/cHN9/3N2f/9sb3n/cHN9/3Bzff93eoP/eXuB/3V4gf91eIH/
    +bG95/3N1fP95e4H/fn+D/3t9g/95e4H/fX6B/3Bzff99gIr/cnV+/3J0e/90d4D/d3mA/3R3gP90dn//
    +dHeA/3V4gf90dn7/b3F4/3l8hP94eoD/bG95/3BzfP9pa3L/b3F6/3V3ff9ucXr/dHZ9/2ptdv9rbXb/
    +a212/3R2fP9wc33/bG52/25weP90dnv/bnB3/21weP9pbHb/am11/2lsc/9sb3f/bG5z/21veP9vcXj/
    +bG95/29xef9ucHf/bW90/2Zobv9nanH/bG51/2xudf9sbnX/dHZ7/25weP9rbnj/Zmly/2Zpc/9nanL/
    +Y2Zw/2ptd/9qbXX/am13/2xvef9qbXf/bG95/2xudf9zdn//c3V8/3Bzff9wc33/am13/2psc/9nanT/
    +dXd9/3N1fP9qbXf/dXd9/3Bzff9sbnX/bG95/25xe/9wcnn/dnh8/3N1fP9ucHf/bW9z/2xudf93eX//
    +dXiB/25xe/9ucHf/eXuB/2xudf9wcnn/bG51/2xvef9ucHf/bG51/2ptd/9kZ3H/am13/2dqdP9qbXf/
    +am13/2Zpc/9zdXz/bG51/2dqdP9sb3n/Z2px/2dqcf9qbHP/bG51/25xe/9ucXv/bG95/2xvef9qbXf/
    +bG51/2dqdP9qbXf/Zmlz/2xudf9sb3n/cHJ5/2psc/9kZ3H/Z2p0/2dqdP9sbnX/bG95/2ptd/9qbHP/
    +bG51/2BjbP9qbHP/Z2px/2psc/9qbXf/bG51/2Zpc/9qbXf/bnF7/2dqdP9gY2z/YmVu/2ptd/9nanT/
    +Z2p0/2dqcf9qbHP/am13/2xvef9ucXv/bnB3/25wd/9ucHf/c3Z//25wd/9zdn//cHN9/2xvef9sb3n/
    +bW9z/3l7gf9vcXX/bnB3/3V3ff9ucXv/bG95/25wd/9wc33/bG51/3Byef9ucHf/bnB3/3N1fP9ucHf/
    +bnB3/29xdf91d33/b3F1/21vc/9sbnX/bnB3/25wd/9ucHf/c3V8/25wd/9ucHf/bnB3/29xdf91d33/
    +b3F1/2Zobv9wcnn/am13/2dqdP9qbHP/Zmlz/2xudf9sb3n/bG95/2ptd/9qbHP/cHJ5/2Zpc/9sb3n/
    +Zmhu/11gav9iZW7/Zmhu/2Zpc/9dYGr/am13/2dqdP9maG7/YmVu/2dqdP9kZ3H/Zmhu/2Rncf9kZ3H/
    +am13/2dqdP9iZW7/Z2px/2BjbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Zpc/9ucXv/Zmlz/3Byef9nanT/
    +Z2p0/2xvef9ucXv/bG95/25xe/9sbnX/bG51/3J0e/9xdHv/aGt1/2tueP9pbHb/bG95/2xvef9sbnX/
    +bnB3/2Zobv9maXP/am13/3Bzff9ucXv/am13/25xe/9qbXb/dHeA/25xe/9rbnb/bnF6/3Bzff9ucXr/
    +bXB5/3Fzev9xc3v/b3F5/29xef91d3//d3l//3F0fP92eID/cHJ5/3R2fP93eYH/cHJ6/3d5gf95fIX/
    +eHqC/3d5fv98foT/fH6F/3N1fP90dnz/eXuA/3d5gP9ydHz/c3V9/3Z4fv90dnz/dnh8/3F0ev9zdXv/
    +dXd9/3h6gP90dn3/dHZ+/3Bzff9sb3n/bG95/3N1fP9wc33/c3Z//3d6hP90dn3/c3Z//2lsdv9tcHr/
    +bW93/21vd/9zdXz/am13/29xeP9wc33/am13/3Byef9ucHf/eHl9/3Z4fP91d33/dXd9/25wd/9sb3n/
    +bnB3/3V3ff91d33/bnB3/3V3ff92eHz/b3F1/3Byef9wcnn/dXd9/3V3ff9ucHf/am13/2xudf9qbXf/
    +dXd9/3l7gf9ucHf/bG95/3V4gf9maXP/am13/2dqcf9qbHP/amxz/2dqdP9nanH/XWBq/2Zpc/9maG7/
    +am13/2xvef9nanT/c3V8/2dqcf9qbHP/bG95/2dqdP9qbHP/bG51/2xudf9wc33/am13/25xe/9qbXf/
    +am13/2ptd/9qbXf/bG95/2ptd/9qbHP/cHN9/3d5f/9sb3n/bnB3/3Byef9tb3P/bW9z/25wd/9zdXz/
    +b3F1/2xudf9sbnX/bG95/2xudf9ucHf/bG95/2ptd/9qbXf/bnF7/3d5f/9nanT/amxz/2psc/9ucXv/
    +bnF7/3N2f/9wcnn/bnF7/2xvef9zdXz/dnh8/3Byef9ucHf/am13/25xe/9tb3P/dXd9/3Bzff9sbnX/
    +amxz/2xudf9zdn//am13/2xudf91d33/bG95/2ptd/9qbHP/bG95/2Rncf9nanT/Z2p0/2psc/9ucXv/
    +amxz/2dqdP9sb3n/bnF7/2xudf9qbHP/am13/2ptd/9sbnX/am13/3Byef9sb3n/bnB3/25wd/9wcnn/
    +dXd9/25wd/9maXP/dXiB/25wd/9ucHf/cHJ5/25wd/9zdXz/cHN9/3N2f/9wc33/cHN9/3d6g/9wc33/
    +eXuB/3N2f/9ucXv/cHJ5/25wd/9ucXv/Z2p0/3V3ff9sbnX/bnB3/25wd/94eX3/bnB3/25wd/9sb3n/
    +bG95/3N1fP9qbXf/Z2p0/2ptd/9sbnX/bW9z/25wd/9zdXz/dXd9/25wd/9zdn//d3l//2xvef93eX//
    +c3Z//3Bzff91eIH/d3l//3l7gf9zdn//c3Z//3V3ff93eoT/enyD/3V3ff94e4P/eHqB/3V4gv90d4D/
    +bnF7/3V4gf9qbXf/Z2p0/2xvef9wc33/c3V8/25wd/9ydHz/bnF6/3R3f/9ucHn/bG93/29yfP9ydHv/
    +b3F4/25wdf9wcnf/bW92/25wdP9vcnr/cnR8/3V3fv9ucHf/dXh//2xud/9ydHz/dHd//25xef9zdn//
    +c3V8/3J0ef9wc3z/c3V9/3R3gP9sb3f/bXB6/3V4gv9ucXv/b3J8/2xvef9vcXj/bnB4/3Bzev9vcXj/
    +cXN6/25wd/9ydXz/cHJ4/21wef9tb3P/Zmhu/2dqcf9sbnX/bW9z/2ptd/91d33/bnB0/25xe/9maXP/
    +bnB3/21vc/9tb3P/c3V8/2ptd/9qbXf/bnF7/2xudf9sb3n/amxz/3V3ff9zdXz/bnF7/3Bzff9nanT/
    +amxz/2Zpc/9wcnn/bG95/2xudf9qbXf/bG95/2Zobv9maXP/Zmlz/2Zpc/9qbXf/Z2p0/2dqcf9maG7/
    +amxz/25wd/9zdn//am13/2ptd/9zdn//am13/2xvef9qbXf/am13/2ptd/9zdXz/bnB3/2dqcf91d33/
    +b3F1/3N2f/93eoP/c3V8/3t9g/9zdXz/c3V8/3Bzff9sb3n/bnB3/25xe/9sb3n/c3Z//25wd/9zdXz/
    +bnB3/2xudf9sbnX/amxz/2xudf9qbXf/bG51/2xvef91eIH/am13/2dqcf9nanH/Zmhu/2Rncf9maXP/
    +am13/2Zobv9qbHP/Zmlz/2psc/9nanH/amxz/2xudf9qbHP/amxz/2xvef93eX//am13/2dqdP9nanH/
    +bnF7/25xe/9wc33/b3F1/29xdf9ucHf/cHJ5/3Z4fP91d33/bG51/21vc/9ucHf/bW9z/3N1fP9wc33/
    +am13/3Byef9ucHf/d3l//3Byef9sbnX/dXd9/2xvef9nanT/Z2p0/2xvef9maXP/amxz/2ptd/9sbnX/
    +c3V8/2xudf9nanT/bG95/25xe/9qbXf/bG51/2ptd/9qbHP/bG51/2ptd/9sb3n/bG51/2ptd/9sbnX/
    +cHJ5/3V3ff9wcnn/Z2px/3N2f/9nanT/bnB3/25wd/9ucHf/cHJ5/3Byef9wc33/cHN9/3Byef93eoP/
    +c3Z//3V4gf9sb3n/bG95/25wd/9vcXX/cHJ5/2dqcf9zdXz/bG95/2ptd/9maXP/d3l//2dqcf9qbXf/
    +amxz/2Zpc/9qbXf/Zmhu/2Jlbv9maG7/Zmlz/2Rncf9nanH/am13/2xvef9maXP/am13/3V3ff9qbXf/
    +dXd9/3N1fP9ucHf/dXd9/3N1fP93eX//cHN9/25wd/9sb3n/bG95/25xef9qbXX/b3J8/3N1e/9xc3z/
    +c3Z//25xe/9zdn//am13/3Byef9wc33/d3qD/3l8hv90d4D/dHeB/29xev90d4H/cXN7/21wef9tcHr/
    +dHZ8/29yev9wc3r/dXh//3N1fv9wc3v/cnV9/3Z4gf94en//c3V8/3p8gf9rbnf/b3F7/3V3ff9ucXv/
    +dHeA/3V4gf9ydX//cnR7/3h7hP98foX/cnV+/3d6hP99gIr/dnmB/3R3gP9zdXz/dnmB/3R3gP9wc33/
    +bnF7/3J1fv9tcHr/dnh8/21vdv9wc33/bnB3/2dqdP9qbXf/bnF7/25wd/9wcnn/d3l//3N1fP91eIH/
    +cHN9/3V4gf9wc33/c3Z//36Ahv93eoP/c3Z//3V4gf9wcnn/bnF7/3Byef95e4H/dXiB/3l7gf95e4H/
    +c3Z//25xe/9ucXv/d3qD/3Bzff9ucHf/bnF7/3V4gf9wcnn/cHJ5/25wd/9ucHf/c3V8/3Byef9vcXX/
    +bG51/3N1fP92eHz/dnh8/25wd/9wcnn/dXd9/2xudf9ucHf/bnB3/29xdf9ucXv/c3Z//3N2f/9maXP/
    +c3Z//3Byef9wc33/c3Z//2xvef91d33/cHJ5/25wd/9ucXv/am13/25wd/9wc33/cHJ5/3V3ff9ucHf/
    +c3V8/25wd/9ucHf/cHJ5/29xdf9tb3P/bnB3/2ptd/9sb3n/d3l//25wd/9tb3P/bG95/25wd/9tb3P/
    +cHJ5/3Byef9sbnX/bG51/2xudf9tb3P/am13/2xudf9ucHf/bG51/21vc/9zdXz/dXiB/2xvef9sb3n/
    +am13/25xe/9wc33/c3Z//2xvef9vcXX/bG95/25xe/9zdn//dXiB/25xe/9ucHf/bnF7/2xvef9zdn//
    +dXd9/25wd/9ucHf/bnB3/3d5f/9zdXz/bnB3/3N1fP9sbnX/Zmlz/2psc/9qbXf/ZGdx/2dqcf9qbXf/
    +Zmhu/2xvef9nanH/ZGdx/2dqdP9sb3n/amxz/2xudf9sb3n/bG51/2ptd/9sbnX/cHJ5/25xe/9sb3n/
    +bnF7/25xe/93eX//cHN9/2ptd/93eoP/cHN9/3Byef9wcnn/dXd9/3V3ff94eX3/e32D/3l7gf93eX//
    +f4KM/3l8hv97fYP/d3qD/3N1fP91d33/c3Z//3V4gf9wc33/eXuB/3V4gf9wcnn/bnB3/3l8hv9ucHf/
    +c3Z//3Bzff9wcnn/cHN9/3Byef9wcnn/cHJ5/25wd/9sbnX/bG95/3Bzff9ucXv/bnB3/25xe/93eX//
    +bnB3/3V3ff9zdXz/bnB3/3V3ff9zdXz/d3l//3Bzff9ucHf/bG95/3R3gP91dnz/bnB3/3J0fP92eHz/
    +b3F4/3J0e/9ucHf/c3V8/2psc/9qbXf/bG51/3Bzff9ucXv/c3V8/3J0e/9rbnT/c3V8/21wef9ucHf/
    +bW92/3V3fP9tb3b/a212/21wev9qbXf/b3F4/2ttdf92eH//cnR7/25xeP91d33/Z2py/2xvef91d33/
    +bnB3/3N2fv9vcnv/a254/2hrdf90d33/cHN9/2dqcv9nanT/dXiB/2dqdP9maG7/ZGdx/2Zpc/9qbHP/
    +ZGdx/2BjbP9maXP/XWBq/25wd/9gY2z/Zmlz/2Zobv9maXP/Z2p0/2xudf9sbnX/bnB3/3N1fP9vcXX/
    +cHJ5/2Zobv9sbnX/bG51/25wd/9wcnn/bnB3/25wd/91d33/cHN9/25wd/9ucHf/dXd9/3V3ff91d33/
    +c3Z//3N1fP9ucHf/cHJ5/3V3ff9qbXf/bG51/25wd/9wc33/am13/2xvef9sbnX/cHJ5/3Byef9ucHf/
    +bG51/25wd/9zdXz/c3V8/3V3ff9ucXv/bnF7/3V3ff9qbXf/bG51/21vc/9sbnX/am13/3N1fP9wcnn/
    +Zmlz/3N2f/9ucHf/cHN9/3V3ff9wcnn/cHN9/29xdf9sb3n/bG95/2ptd/9sb3n/bnF7/2xvef91eIH/
    +cHN9/3N2f/9ucXv/bnF7/3N2f/9wcnn/bnF7/2xvef9ucHf/cHJ5/3Z4fP9ucHf/bW9z/2ptd/9sb3n/
    +bG51/3Byef9ucHf/am13/2xudf9qbXf/am13/25wd/9tb3P/bG51/2dqdP9qbHP/bG95/3V3ff9qbXf/
    +Zmlz/2xudf9ucHf/dXd9/3V3ff9ucXv/cHJ5/3Bzff9ucXv/c3Z//3Z4fP9sbnX/b3F1/2xvef9ucHf/
    +d3l//3V4gf9ucHf/bnF7/2xvef93eoP/cHJ5/25wd/9wcnn/bnB3/2dqdP9sbnX/am13/2Zpc/9qbXf/
    +am13/2dqdP9wc33/Z2p0/2dqdP9zdXz/bnF7/2psc/9sbnX/bG51/2xudf9sbnX/bG51/2ptd/9sbnX/
    +Z2p0/2xvef9qbXf/dXd9/2xudf9nanH/cHJ5/2psc/9sbnX/bG51/2xudf9sbnX/bnB3/3Byef9ucHf/
    +bnB3/3l7gf91d33/c3Z//3Byef9sbnX/am13/2xudf9sb3n/ZGdx/25xe/9qbXf/am13/2xudf95e4H/
    +bnB3/2xudf9sbnX/bW9z/3Byef9sbnX/bnB3/25wd/9qbXf/bG51/25wd/91d33/cHJ5/2xudf9wcnn/
    +d3l//2xvef93eoP/dXiB/3N2f/91eIH/c3Z//3l8hv91eIH/cHJ5/3N1fP9ydHz/cXN5/3Byef90d3//
    +dXd9/3BzfP9wc3z/bG95/3Bzff9nanT/bnB3/3Bzff9zdn//cHN9/3V4gf90d4D/aGt1/3Z5g/9ucXr/
    +dHeA/3BzfP94e4T/cHN9/3BzfP9wc33/dXiA/3N1fv9sb3n/eXuB/3N2f/9wcnn/d3qD/2ptd/93eoP/
    +eXyG/3V4gf95fIb/eXuB/3Byef9sb3n/e32D/3d5f/9ucHf/bnB3/3t9g/9ucHf/b3F1/2xudf9ucHf/
    +bW9z/2dqcf9kZ3H/am13/2psc/91d33/amxz/25wd/9tb3P/bG51/29xdf9wcnn/b3F1/3N1fP91d33/
    +bnB3/2xvef9kZ3H/bG95/3Bzff9ucXv/d3qD/3V4gf9wc33/d3qD/3V4gf9wc33/dnh8/35/g/9+gIb/
    +fX6B/36Ahv97fYP/dXiB/3d6g/95e4H/c3Z//3Bzff91eIH/e32D/3d6g/93eoP/c3Z//3d6g/93eoP/
    +dXiB/3N2f/9wc33/dXd9/3d5f/95e4H/dXiB/3V3ff94eX3/bnB3/25wd/9sbnX/bG51/2xudf9ucHf/
    +bnF7/2ptd/9wc33/bnB3/25xe/9zdn//bG95/3Bzff9ucHf/cHJ5/25xe/9sbnX/bG51/3Byef9wcnn/
    +dXd9/2xudf9zdXz/bG51/25wd/9zdXz/bnB3/25wd/9ucHf/bG95/3N1fP92eHz/bG51/21vc/9wcnn/
    +c3V8/2xudf91d33/bG95/2xudf9sbnX/amxz/2ptd/9sb3n/am13/2psc/9qbHP/bG51/2xudf94eX3/
    +am13/2dqdP9ucHf/bnF7/3V3ff92eHz/bnB3/29xdf9zdXz/cHJ5/25wd/9zdXz/bG51/2ptd/9qbXf/
    +amxz/25xe/9wcnn/Z2p0/2xudf9ucHf/d3qD/2ptd/9ucXv/bnF7/2xudf9qbXf/am13/2xvef9maXP/
    +bG51/2ptd/9sbnX/cHN9/2dqdP9maXP/c3V8/3Bzff9sbnX/bG51/2xudf9sbnX/bW9z/2ptd/9qbXf/
    +amxz/2dqdP9sb3n/bG51/3N1fP9qbHP/ZGdx/2dqdP9maXP/amxz/2ptd/9nanH/am13/2dqdP9sb3n/
    +bG51/25wd/95e4H/dnh8/3V3ff9zdXz/bnB3/25wd/9ucHf/bG95/2Zpc/9zdn//bnF7/2xvef9wcnn/
    +foGK/3N1fP9wc33/c3Z//3Bzff9ucXv/am13/2xvef9vcXX/bG51/21vc/9vcXX/dXd9/3Bzff9nanT/
    +bnF7/3V3ff9nanT/dXd9/3Byef9sb3n/dXd9/25wd/91d33/bG95/2dqdP9qbHP/c3Z//3N1ff9rbXT/
    +cHJ5/25wd/9rbnj/bnF7/2ptd/9wc33/bG51/21vc/9ucHf/bnF7/2xvef9wc33/am13/2Vocv9zdn//
    +bG51/25xe/9maXP/bnB3/2dqcf9nanH/amxz/2ptd/9maXP/YmVu/25wd/9kZ3H/YmVu/2Zpc/9cX2j/
    +Z2p0/2xvef9maXP/Z2p0/3V3ff9sb3n/bG95/3l7gf91eIH/bnB3/3Bzff9+gIb/bnF7/29xdf9sb3n/
    +bnF7/25wd/9sb3n/Z2p0/25xe/9qbXf/d3l//2dqdP9ucXv/bnB3/2ptd/9ucHf/bnF7/2xvef9zdXz/
    +dXd9/25wd/9sb3n/aGp0/2xvef9tb3f/bnB3/3J1fv9tcHr/bnF6/3V4gf9wc33/c3V8/25wd/9zdn//
    +c3Z//3N2f/9ucXv/dXiB/3Byef9wc33/c3Z//3Byef9ucHf/cHN9/3d5f/9wc33/cHN9/25wd/91eIH/
    +c3Z//3Bzff9vcXX/bnB3/3d5f/91eIH/dnh8/3V3ff91d33/d3l//3Byef9ucXv/bG95/2xvef9ucHf/
    +c3V8/3N1fP9sbnX/c3V8/29xdf9wcnn/dXd9/25wd/9zdXz/am13/2xudf9sb3n/Z2p0/2xvef9sb3n/
    +amxz/25xe/9sbnX/cHN9/2psc/9sb3n/bnF7/2psc/9nanH/Zmlz/2Zpc/9nanT/bnB3/2Zobv9qbHP/
    +Z2p0/25xe/9nanT/bnF7/2xudf9sbnX/cHJ5/21vc/9ucHf/bG95/2xvef9ucXv/am13/25wd/9ucHf/
    +dnh8/2xudf9nanH/b3F1/25xe/91d33/c3Z//2xvef9wcnn/c3Z//3Byef9ucHf/dXiB/3Bzff9ucXv/
    +bnF7/3N2f/91eIH/c3Z//2xvef9wc33/c3V8/36Ahv9ucHf/dXd9/3V3ff9tb3P/Z2p0/2xudf9qbXf/
    +Z2p0/2xudf9vcXX/b3F1/3V3ff9ucHf/bnB3/3V3ff91eIH/bnB3/2xvef9ucXv/cHN9/25xe/9zdn//
    +d3qD/3d5f/9zdXz/e32D/3l7gf9+f4P/e32D/3l7gf9+gYr/d3qD/3l7gf9+gIb/d3l//3V3ff91d33/
    +eXuB/3V3ff93eX//gYOK/36Biv97fYP/d3qD/3Byef9ucHf/bnF7/25wd/9maG7/cHN9/2xvef9kZ3H/
    +Z2p0/3V4gf9nanH/Z2px/2psc/9nanH/Z2px/2Jlbv9kZ3H/Zmlz/2Zpc/9maG7/ZGdx/2Rncf9maXP/
    +YGNs/2dqdP9wcnn/ZGdx/3V3ff9sb3n/bG51/3N1fP9sbnX/d3l//3Byef9vcXX/bG51/3V4f/90d37/
    +bW90/3N1fP9ucHf/bnB3/3N2f/9sb3n/cHJ5/2dqdP9ucHf/cHN9/3Bzff9ucHf/c3V8/3Byef9maG7/
    +d3qD/2xudf9wcnn/am13/3N1fP9sb3n/bW9z/25wd/9ucHf/bnB3/2xudf91d33/cHJ5/2xudf9wc33/
    +ZGdx/2xvef9wcnn/bG95/2xudf91d33/c3V8/2xudf94eX3/d3qD/25wd/9ucXv/foCG/3Bzff9wcnn/
    +bnF7/25xe/9ucHf/am13/2psc/9rbnj/a254/3d6hP9wcnn/dXiB/3N1fP9ucXv/cHN9/3Bzff9wc33/
    +eXuB/3Z5gv91eIH/cHJ8/2lrdP9rbnj/bW93/29xef9xdH3/bnF7/21wev9zdn//c3Z//3Bzff9ucXv/
    +d3qD/3N2f/91d33/bnB3/3N1fP9vcXX/bnB3/3Byef9ucHf/b3F1/3Byef92eHz/bnB3/3Byef9ucHf/
    +dXd9/3Byef9wc33/bG95/3Bzff91d33/d3l//3N1fP9sb3n/bnF7/3Z4fP9tb3P/am13/2xudf9qbHP/
    +am13/25wd/9sb3n/Z2p0/3Bzff9sbnX/bnF7/3Bzff9nanT/bnF7/2ptd/9qbHP/am13/2Zpc/9qbXf/
    +bG95/2xudf9wc33/bG51/25xe/9qbXf/bnF7/3Bzff9qbXf/bG51/2dqdP9qbXf/bnF7/3N1fP9sbnX/
    +am13/25wd/92eHz/bnB3/3N2f/9sb3n/bG95/3Bzff9ucHf/bG51/29xdf9wcnn/bnF7/3Byef9wc33/
    +bG95/3d6g/9sb3n/bnF7/3N1fP9zdn//dXiB/3d6g/9ucXv/cHJ5/3d6g/91eIH/cHN9/3N1fP9qbXf/
    +bW9z/25wd/9ucHf/cHN9/3Byef9nanT/bG95/3Byef93eoP/bG95/3N1fP9wcnn/bG51/2psc/9qbXf/
    +bG51/2Zpc/9sbnX/amxz/2dqdP9ucXv/bG51/2dqdP9ucXv/bG95/2psc/9nanH/Z2px/2xudf9sbnX/
    +am13/2psc/9maG7/YGNs/2Rncf9kZ3H/bG95/2Zpc/9maXP/Z2p0/2Zpc/9kZ3H/bG95/2psc/9nanT/
    +Zmlz/2xvef9sb3n/Zmlz/3d5f/91d33/dXd9/3Byef9ucHf/bnB3/3Byef9wcnn/am13/3d6g/9zdXz/
    +bG95/3Byef95fIb/bG95/25wd/9sb3n/bG95/2xvef9qbHP/bG51/2xudf9qbHP/bG51/2psc/9sb3n/
    +am13/2Zpc/9sb3n/dXd9/2Rncf9sb3n/Zmlz/2dqcf9maXP/Zmlz/3N1fP9qbXf/Z2px/2dqdP9xdH3/
    +c3V8/2psc/9ucXv/amxz/2psc/9sb3n/am13/2xvef9qbXf/bG51/3Bzff9ucXv/bG95/3N1fP9wcnn/
    +amxz/36Ahv9zdXz/cHJ5/2xudf93eX//bG95/21vc/9ucHf/bG95/2xvef9nanT/dXd9/2xvef9qbXf/
    +cHN9/2Rncf9ucXv/bG95/2ptd/9sbnX/b3J7/29ye/9oa3X/c3V8/3J0fP9nanT/bG52/3h6gP9rbXT/
    +bG51/21vdv9sbnX/bG51/21vdf9pa3L/bG92/2hrdf9zdn3/bXB6/2xvef9tb3b/Z2px/21vc/9sbnX/
    +bG51/3Z4fP90dnz/cHJ7/2xvef9pbHP/bW92/2ttdv9sb3f/dHZ8/25wef9sbnf/cHJ5/25wd/9qbXf/
    +am13/3N1fP9ucXv/c3V8/2xudf9ucXv/amxz/2ptd/9qbXf/bG51/2psc/9qbXf/am13/2psc/9qbHP/
    +bG51/2xvef9sb3n/am13/2ptd/9sb3n/c3V8/3N2f/9wc33/cHN9/3V3ff94eX3/bnB3/3Bzff9zdXz/
    +bnF7/25xe/9zdn//c3Z//2xvef97fYP/c3Z//3t9g/97fYP/c3V8/36Ahv91eIH/c3Z//3d5f/94eX3/
    +d3qD/3l8hv91eIH/e32D/3N2f/9zdn//cHJ5/3d6g/91d33/bG95/25wd/9sb3n/bnB3/3V4gf91d33/
    +bnB3/2xvef9ucXv/dXiB/3Byef91eIH/bG95/25wd/9wcnn/bW9z/2psc/9vcXX/cHJ5/2xvef9sb3n/
    +bnF7/25xe/91eIH/am13/2xvef9zdXz/bnF7/3V3ff91d33/b3F1/29xdf91d33/bnB3/2xudf9zdXz/
    +bnB3/25wd/9zdXz/cHN9/3N2f/9zdXz/bG95/25xe/9wc33/eXuB/3N1fP91eIH/dXiB/3Byef9sb3n/
    +bnF7/25xe/9ucHf/bnF7/25xe/9wcnn/c3Z//25xe/9sb3n/cHN9/3Bzff9vcXX/bG95/2xvef9vcXX/
    +bnB3/3Bzff9wcnn/b3F1/25wd/9zdXz/bnB3/3d5f/9ucHf/bG95/3N2f/9ucHf/cHJ5/3Bzff9zdXz/
    +bnB3/25wd/9wc33/cHN9/2dqdP93eX//dnh8/3Z4fP9zdXz/bG51/2xudf9ucHf/bW9z/2dqcf9zdXz/
    +bW9z/2xudf9sbnX/eXyG/2xudf9nanT/Z2px/2Zpc/9sbnX/Zmlz/2Zpc/9nanH/ZGdx/2xudf9qbHP/
    +bnF7/2xudf9kZ3H/bG95/3V3ff9maXP/c3V8/25wd/9sb3n/c3Z//25xe/93eoP/dXd9/25wd/9ucXv/
    +b3J6/3J0fP9ucHf/dXd9/29xdf9ucHf/cHN9/25xe/9zdn//bG95/2xvef9wc33/cHN9/25wd/9zdn//
    +bnF7/2ptd/94e4X/dHZ8/3J0fP9sbnX/dHZ8/29xeP9sbnX/b3F4/29xeP9tcHr/bnB0/3V3e/9wcnn/
    +aGt1/21wev9jZm//cHJ5/25xev9tb3P/bW92/3Z4fP9ydHv/cHJ3/3V3fP9ydHv/aGtz/21vdv96fIP/
    +bW93/2xvef9tb3f/aWx2/2xudf9rbXb/aWx1/2hrcv9pa3T/dnh+/25wd/9tb3f/a254/2dqcf9tb3P/
    +bG51/25wd/91d33/cnV+/3F0ff9vcXr/aWxy/21vd/9tb3b/b3F5/3BzfP9rbnj/bnB4/25wd/9wcnn/
    +bG51/25wd/94eX3/cHJ5/3N2f/9wcnn/c3Z//3Byef9zdXz/d3qD/3N1fP9wcnn/cHN9/3N2f/9sb3n/
    +bG95/3Byef9zdXz/c3V8/29xdf9ucHf/bnF7/3l7gf93eX//dXd9/3N1fP91d33/dXd9/25wd/9ucHf/
    +b3F1/25wd/9ucHf/bnF7/2ptd/9kZ3H/dXd9/2ptd/9zdXz/dnh8/25wd/94eX3/cHJ5/29xdf9wcnn/
    +bG51/3Bzff9ucXv/bG51/3N1fP9tb3P/c3V8/2xudf9zdXz/cHN9/2psc/9qbXf/Z2p0/2ptd/91d33/
    +dXd9/25wd/9ucHf/bG51/3Bzff9sbnX/bG95/2ptd/9sbnX/cHN9/21vc/9qbHP/am13/2xvef9tb3P/
    +bG51/21vc/9qbHP/c3Z//2dqcf9sbnX/bW9z/21vc/9zdXz/c3V8/2xudf9tb3P/cHN9/25wd/9ucHf/
    +Zmlz/2Zobv9maG7/am13/2Zpc/9qbXf/bG95/2psc/9qbXf/am13/3N2f/9qbXf/cHN9/3Bzff9nanH/
    +ZGdx/2dqdP9qbXf/am13/2xudf9sbnX/bG51/25xe/9sbnX/am13/3Byef9zdXz/b3F1/2xudf9sbnX/
    +bG51/2xvef9ucXv/am13/21vc/9sbnX/dXd9/2xudf93eoP/cHN9/21vc/9wcnn/bG51/2dqdP9sbnX/
    +amxz/2dqcf9maXP/Z2p0/2ptd/9maXP/c3Z//3d5f/9wcnn/Z2p0/2Rncf9kZ3H/bG51/2ptd/9maXP/
    +bG95/2xudf9maXP/Z2p0/3d6g/9qbHP/bG51/2psc/9maXP/bG51/2Zpc/9kZ3H/bG51/2dqdP9qbHP/
    +amxz/2ptd/9nanT/YGNs/2ptd/9zdXz/YmVu/25xe/9sbnX/Z2px/2ptd/9qbXf/dXd9/25xe/9maXP/
    +am13/25xe/9xc3r/a254/3ByeP9sbnX/a210/2ptd/9sbnX/am13/2dqdP9qbHP/Zmlz/2dqdP9maXP/
    +am13/2hrcv9iZW7/cnR6/25xev9ucXr/a253/3R2ev9ucHn/bG51/21veP9rbnj/bnF7/21weP9vcnz/
    +b3J6/2tueP9vcnz/ZWhx/3F0fP9wcnn/am11/2ptd/90d4D/cnV9/21weP9xc3v/cXN6/2psc/9qbXX/
    +dXd//2ttdP9tcHr/a254/2lsdP9tb3T/aWx1/2hrdP9tbnX/aGt0/3d4ff9xc3j/bXB6/21vdv9maXP/
    +amxz/2dqdP9qbXf/bnF7/3N1fP9vcnv/bXB6/2Vocv9qbXf/am13/3N1ff9xc3v/bW92/25xev9sb3n/
    +bG95/2dqdP9sbnX/c3V8/2ptd/9qbXf/Z2px/2Zpc/9nanH/Z2px/2ptd/9nanH/Zmhu/2Zpc/9qbXf/
    +YmVu/2Jlbv9maG7/Zmlz/2ptd/9sbnX/YmVu/2Zpc/9sb3n/c3V8/3Bzff9zdXz/cHN9/3d5f/9qbXf/
    +bW9z/2xudf9ucHf/bnB3/3V3ff9sbnX/Z2px/3V3ff9wcnn/dXd9/3V3ff9sbnX/c3Z//3Bzff9tb3P/
    +b3F1/29xdf92eHz/c3V8/2xudf91d33/am13/2ptd/9nanT/bnF7/2ptd/9iZW7/Z2px/2Jlbv9iZW7/
    +Z2p0/2dqdP9nanH/Z2p0/2psc/9zdXz/bG51/3Byef9sbnX/bnB3/3N1fP9sbnX/YmVu/2psc/9qbXf/
    +bG51/2dqdP9qbHP/Z2p0/3d5f/9nanH/bG51/21vc/9sbnX/c3V8/3V3ff9wcnn/bW9z/3Bzff9sbnX/
    +amxz/25xe/9sb3n/b3F1/3d5f/9sb3n/cHN9/3Bzff9ucHf/bnF7/2xvef97fof/bnF7/3d6g/95e4H/
    +c3V8/2xvef91eIH/c3V8/25wd/9ucXv/bnF7/25wd/9wc33/cHJ5/2xvef9zdn//cHJ5/2xudf9sbnX/
    +am13/2ptd/9ucXv/cHN9/25wd/9ucHf/Z2p0/3V3ff9ucHf/eXuB/3N1fP9vcXX/cHJ5/25wd/9vcXX/
    +c3V8/2xudf9sbnX/bnB3/3Byef9sbnX/bG51/3l7gf93eX//d3l//3Byef9sb3n/am13/25xe/9ucXv/
    +am13/3N2f/9vcXX/amxz/2ptd/9+f4P/bnF7/3Byef9ucHf/bnB3/25wd/9sb3n/am13/3Bzff9wcnn/
    +cHJ5/3N1fP93eoP/c3Z//25xe/95e4H/e36H/2dqdP91eIH/d3qD/3N2f/93eoP/d3qD/3t+h/97fYP/
    +c3Z//3V4gf9sb3j/bnB2/25xef9ydXz/cXR9/3Bzff9vcXj/bG95/25wd/9sb3n/bG95/3Byef9sb3n/
    +bG51/3J1fP9ucHf/Z2px/3J1fv9zdXr/cHJ5/2tueP9ydHr/cHJ6/29xd/9wc33/b3J8/3F0ff9xc3z/
    +cXR9/3N2fv9ucHn/c3Z+/2hrdP9zdn7/dXh//29xeP9ucHf/dXiA/3F0ff9tcHr/dHZ7/3R2e/9pbHT/
    +bnF4/3V4f/9sbnb/bnB3/2xudf9sbnX/bW90/2hrc/9rbXT/a254/2dqdP9wc33/bnB0/21wef9tb3P/
    +amxz/21vc/9nanT/bG51/2xvef9sb3n/am13/3Byef9nanT/Zmlz/2dqdP9ucXv/cHN9/2ptd/9ucHf/
    +bG51/25wd/9qbXf/am13/3V3ff9wcnn/cHJ5/2xudf9ucHf/bG51/2xudf9ucXv/Z2p0/2psc/9qbXf/
    +bnF7/2psc/9qbXf/bG95/3Bzff9sb3n/am13/2dqdP9ucXv/cHN9/3d5f/94eX3/dnh8/3V3ff93eX//
    +bG51/2xudf9sb3n/bG95/2xudf9wcnn/cHJ5/2xudf92eHz/bnB3/3N1fP91d33/am13/2xvef9sb3n/
    +bG51/21vc/9sbnX/dXd9/3N1fP9ucHf/cHN9/2ptd/9qbXf/Z2p0/3V3ff9wcnn/Z2p0/2ptd/9nanT/
    +bG51/3Bzff9ucXv/bnB3/2xudf9tb3P/dnh8/29xdf9ucXv/cHN9/25xe/91d33/bG51/2dqcf9tb3P/
    +cHJ5/2xudf9tb3P/bW9z/2ptd/93eX//Z2p0/2psc/9sbnX/am13/3V3ff92eHz/cHN9/29xdf91d33/
    +bnB3/25wd/9qbXf/ZGdx/2psc/9ucXv/am13/2psc/9nanT/Z2px/2xudf9qbXf/dXiB/2xudf9wc33/
    +dXd9/2xudf9nanT/bnF7/21vc/9sbnX/bG51/2ptd/9nanT/am13/2dqcf9nanT/bnF7/2ptd/9qbXf/
    +am13/2ptd/9qbXf/bG95/25xe/9sb3n/Zmlz/2BjbP9qbXf/Zmhu/25wd/9qbXf/Z2px/2dqdP9maXP/
    +Zmhu/2dqdP9kZ3H/Zmlz/2Zpc/9sb3n/am13/2dqdP93eoP/c3V8/3V3ff9nanT/ZGdx/2Jlbv9nanH/
    +Z2px/2dqdP9sb3n/Z2p0/2Jlbv9nanT/eXuB/2ptd/9qbXf/bG51/2xudf9ucHf/b3F1/2dqdP9ucHf/
    +bG51/21vc/9sbnX/c3V8/2xudf9qbHP/dnh8/3V3ff9maG7/c3Z//3N2f/9sb3n/c3V8/3N1fP94eX3/
    +dXd9/3Byef9zdXz/c3Z8/3J0e/9ucXv/cnV7/29xef9vcXj/bW93/3Byef9ucHf/b3F1/29xdf9sbnX/
    +bW9z/25wd/9wcnn/bG95/2hqcf91d37/cnV6/21wef9tb3b/dXd9/3R2fv9ucHf/b3F6/3F0ff9ucXv/
    +cXN6/3J0ff9zdn7/cnR7/3Z5gf9rbnf/c3Z//3R3f/9vcXb/b3F2/3N2f/9wc33/bnB3/3R3gP90dnv/
    +am10/3J0e/90dn3/bG51/29xef9sbnX/am12/2xvc/9gY2z/Zmlz/2dqdP9kZ3H/bG95/2dqcf9qbXf/
    +amxz/2ptd/9qbXf/bG51/2xudf9wcnn/bnB3/21vc/9ucXv/Z2p0/2Zpc/9nanT/bG95/25xe/9wcnn/
    +cHJ5/25wd/9ucHf/bW9z/25wd/9zdXz/dXd9/3Bzff9ucHf/bG95/2xvef9sb3n/dXd9/29xdf9ucHf/
    +bnF7/3Bzff9vcXX/bG95/3V4gf91eIH/bnF7/3N1fP9wc33/d3qD/3d6g/95fIb/e36H/36Ahv9+f4P/
    +e36H/3Bzff9wc33/dXiB/3N2f/9wc33/cHN9/25xe/9qbXf/eHl9/3N2f/91d33/dXd9/2xvef9wcnn/
    +cHJ5/29xdf9sb3n/bnB3/3N1fP9zdXz/cHJ5/25xe/9qbXf/am13/2dqdP91d33/c3V8/2xudf9sb3n/
    +cHJ5/3Byef9zdn//dXiB/3V4gf9zdn//cHJ5/3t9g/9wc33/dXiB/3d6g/95fIb/e32D/3d6g/9wc33/
    +dXd9/3N2f/9zdn//cHN9/3N1fP9zdXz/d3qD/2ptd/9sb3n/cHJ5/25wd/91d33/dnh8/3V3ff9ucHf/
    +dXd9/25wd/9tb3P/bG95/2ptd/9wcnn/c3Z//3Bzff9ucXv/dXd9/2xudf9ucHf/bnB3/3t9g/9vcXX/
    +c3V8/3Z4fP9ucHf/amxz/25xe/9qbXf/am13/2xudf9qbXf/bG51/2psc/9nanH/bG51/25xe/9qbXf/
    +am13/2xudf9qbXf/ZGdx/2xvef9ucXv/bG95/2Zobv9kZ3H/am13/2dqdP9zdXz/am13/2dqdP9zdXz/
    +bG51/2xudf9zdXz/b3F1/2xvef9sb3n/c3Z//25xe/9vcXX/e32D/3d5f/93eX//bnB3/2xudf9nanT/
    +bnB3/25wd/9sb3n/dXiB/25wd/9ucHf/bnB3/31+gf9ucHf/bG95/2xudf9nanT/Z2p0/21vc/9nanT/
    +bG51/2psc/9sbnX/Zmlz/2xvef9nanT/Z2p0/3Bzff9zdXz/ZGdx/3N1fP9ucXv/bG51/3N1fP9ucXv/
    +cHN9/3Bzff9sb3n/bG95/3Fze/9ydHv/b3J5/3R2fP9vcXb/bW95/2hrdf9oa3X/am13/2psc/9qbHP/
    +bG95/2Zpc/9maXP/Z2p0/2dqc/9gY2z/cXR9/29xef9sb3j/bG52/3J0e/9vcnv/b3F1/25weP9wcnn/
    +cHJ2/25weP9wcnn/bnB3/25weP9ydX7/Z2p0/3N2f/9xc33/bnB3/3Bzff9wc33/bnF7/21vc/9zdXz/
    +dnh8/2xudf9zdn//d3qD/29xdf9wcnn/bG95/2xvef9sb3n/Zmhu/25wd/9ucHf/amxz/3V3ff9sb3n/
    +cHJ5/29xdf9sbnX/bnB3/2xudf9tb3P/c3V8/2xudf9sbnX/bnF7/2Zpc/9qbXf/Z2p0/2ptd/9wc33/
    +bG95/3Bzff9sb3n/bG51/25wd/9ucHf/c3V8/3N2f/9zdXz/b3F1/25wd/9ucHf/bG51/3V3ff9vcXX/
    +bG51/25wd/9wcnn/bG95/25wd/91eIH/e32D/3Bzff9wc33/c3V8/3N2f/91eIH/eXuB/3d5f/9zdn//
    +dnh8/3d5f/9nanT/b3F1/25xe/9wc33/cHN9/3Bzff9ucXv/bnB3/3V4gf9wc33/c3Z//3V4gf9ucHf/
    +cHN9/25xe/9ucHf/bG95/2xvef91d33/c3Z//25xe/9wc33/bnB3/25wd/9nanT/c3V8/3N2f/9qbXf/
    +bG95/25wd/9sb3n/c3Z//3Bzff9zdn//c3Z//3Bzff95fIb/cHJ5/25xe/9zdn//cHN9/3Bzff9wc33/
    +Z2p0/25wd/9zdn//bnF7/3Byef9wcnn/cHJ5/3d6g/9ucHf/cHJ5/3Bzff9sb3n/d3l//3Z4fP91d33/
    +bnB3/3N2f/9ucHf/bnB3/25wd/9ucHf/cHJ5/3d5f/91eIH/c3Z//3l7gf9ucXv/bnF7/3N2f/9+gYr/
    +c3V8/3d6g/97fYP/cHN9/3Byef9ucXv/bG95/2xvef9sb3n/bG95/3Bzff9ucXv/bnB3/3Bzff97fYP/
    +dXiB/3Bzff9ucXv/cHN9/25xe/93eoP/e32D/3l7gf9zdn//cHJ5/3N2f/9wcnn/eXuB/3Bzff9ucHf/
    +d3qD/3N1fP9zdXz/eXyG/3V3ff91d33/c3V8/3d6g/91eIH/c3V8/3l8hv93eoP/d3l//3Bzff9sb3n/
    +Zmlz/25wd/9sbnX/b3F1/3Byef9ucHf/bnB3/2xvef97fYP/bnF7/25xe/9ucHf/bG51/2ptd/9qbHP/
    +amxz/2xudf9ucHf/bnB3/2dqdP91eIH/am13/2xvef93eoP/c3Z//2Zpc/91d33/c3Z//3Bzff93eX//
    +c3Z//3V3ff9wc33/bnF7/25wd/91d3v/dXd7/3Byef91d3z/bnB0/3Byef9qbXf/bG95/25wd/9tb3P/
    +bG51/25xe/9maXP/YmVu/2dqdP9kZ3H/YGNs/3J1fv9sb3n/Zmhu/2RmbP9sb3n/Z2py/2dqcf9oa3L/
    +Z2lz/2dpb/9laHH/bG95/2ptd/9sbnX/bG95/2Rncf9wc33/bG95/2xudf9qbXf/c3Z//3V4gf9vcXX/
    +cHJ5/3V3ff9sbnX/dXd9/3d5f/9tb3P/bnB3/2xudf9ucHf/bnF7/2Zobv9sbnX/bnB3/2dqcf91d33/
    +bG51/25wd/9ucHf/b3F1/25wd/9ucHf/am13/3Bzff9sbnX/am13/2xvef9maXP/Z2p0/2Vocv9tb3T/
    +c3V8/25wd/9ydHv/c3Z//2xvef9ucHf/bG95/3Bzff9zdXz/c3V8/25wd/9ucHf/b3F1/21vc/9wcnn/
    +bW9z/25wd/9ucXv/c3Z//3Bzff9wcnn/dXiB/3d5f/9sb3n/bG95/29xdf9ucHf/cHJ5/3Z4fP9ucXv/
    +c3V8/3Bzff9zdXz/ZGdx/2psc/9qbXf/am13/2ptd/9sb3n/bnB3/2dqdP9zdXz/bnF7/25xe/9wc33/
    +bG51/2xvef9sb3n/am13/2psc/9sbnX/c3V8/3Bzff9ucHf/cHJ5/2xudf9tb3P/Z2px/2xvef9wc33/
    +bG51/25wd/9ucHf/b3F1/3N1fP9zdXz/bnB3/25xe/9tb3P/dXd9/2xudf9sb3n/bnF7/25xe/9ucXv/
    +am13/2Zpc/9sbnX/c3V8/25wd/9sbnX/bW9z/2xudf94eX3/bnB3/25wd/9ucXv/bnB3/3Z4fP91d33/
    +eHl9/25wd/9zdXz/bG51/29xdf9ucHf/bnB3/3Byef91eIH/c3Z//3Bzff93eoP/bnF7/3Bzff9ucXv/
    +eXyG/25wd/9zdXz/dnh8/25wd/9ucHf/bnF7/3Byef9qbXf/bnB3/25wd/9ucXv/bnB3/25wd/9sbnX/
    +dnh8/25wd/9tb3P/bnB3/25wd/9qbXf/cHN9/3V3ff92eHz/cHJ5/2xudf9wc33/cHJ5/3l7gf9wc33/
    +bnF7/3V3ff9tb3P/bnB3/3Byef9ucHf/b3F1/25wd/9zdXz/cHJ5/29xdf95e4H/dXiB/3l7gf9ucHf/
    +bnB3/2RmbP9sbnX/Z2p0/2psc/9sbnX/am13/2Zpc/9qbHP/c3Z//2ptd/9qbXf/am13/2dqdP9maXP/
    +am13/2Zpc/9qbXf/bG51/2xvef9nanT/bG95/2Rncf9maXP/bG95/2ptd/9iZW7/bnF7/2xvef9sbnX/
    +cHN9/25xe/9zdXz/bnF7/2xvef9qbHP/cHN9/3Byef9sb3n/dnh8/21vc/9ucHf/bG51/25wd/9qbXf/
    +bG51/21vc/92eHz/bnB3/2dqcf9zdXz/bnB3/2dqdP97fof/c3Z//25xe/9ucXv/eXuB/2xvef9ucHf/
    +bG95/25xe/9ucHf/bnB3/25xe/9qbXf/bG51/2xvef9kZ3H/c3V8/25xe/9qbXf/bG51/3N2f/93eoP/
    +cHJ5/3Bzff91d33/bG51/3V3ff95e4H/bG51/3Byef9ucHf/b3F1/3Byef9maG//Z2p0/2dqc/9hZG3/
    +cHN9/2ttdP9oa3X/a21z/2psc/9qbXf/bG51/2ptd/9wc33/bG95/25xe/9tcHr/Z2p0/2dqdP9oa3P/
    +bXB3/3J1fv9ucXv/bG95/3Byef9qbHP/amxz/2psc/9sb3n/bG95/2xvef9sbnX/bnF7/2psc/9sbnX/
    +bnF7/2psc/9maXP/Zmlz/2ptd/9maXP/Z2px/25xe/9ucXv/amxz/2Zobv9kZ3H/Zmlz/2dqdP9wcnn/
    +bG95/25xe/9wc33/c3V8/2Rncf9sbnX/am13/2psc/9nanT/bG95/2dqcf9qbHP/c3V8/25xe/9ucXv/
    +cHN9/2psc/9qbXf/bnF7/25wd/9tb3P/b3F1/3V3ff9zdXz/c3V8/3N1fP9sbnX/bnB3/2psc/9ucHf/
    +eHl9/25wd/9sbnX/bG51/2xvef9zdn//bnF7/2xudf9ucHf/bnB3/3V4gf9ucHf/cHJ5/3N1fP9ucXv/
    +bnF7/3N1fP9qbHP/amxz/3V3ff9ucHf/bnB3/25wd/9ucHf/dnh8/21vc/9ucHf/c3V8/25wd/92eHz/
    +dXd9/3Z4fP9ucXv/dXiB/25xe/9zdXz/am13/2Zpc/9qbHP/cHN9/2xvef9sbnX/cHN9/2ptd/9sbnX/
    +bnB3/3l7gf9wcnn/c3Z//3V4gf9ucXv/bnB3/25xe/9ucHf/am13/25wd/9sb3n/bnF7/25wd/9ucHf/
    +bG51/3d5f/9wcnn/b3F1/2xudf9ucHf/Z2px/2xvef9wc33/bnF7/2xvef9qbHP/bG95/2Zobv9sb3n/
    +Z2px/2dqcf9qbXf/Z2p0/2Zpc/9sb3n/am13/2ptd/9qbXf/bG51/3V3ff9sb3n/eXyG/3l7gf95e4H/
    +cHN9/25wd/9qbXf/c3Z//3N1fP9zdXz/dXiB/3V3ff91eIH/d3l//4OFjP97fYP/eXuB/3V4gf9zdn//
    +cHN9/3N2f/9wc33/d3qD/3V3ff91eIH/cHN9/3l7gf9zdXz/bnF7/3V4gf9wc33/am13/3d6g/91eIH/
    +cHN9/3N2f/93eoP/e32D/3N2f/9wcnn/b3F1/3V3ff91eIH/bnF7/3l7gf9ucHf/c3V8/29xdf9ucHf/
    +bW9z/21vc/9vcXX/dXd9/25wd/9sb3n/bnF7/2dqdP9nanT/e32D/3V3ff9wcnn/bnB3/3Z4fP9tb3P/
    +b3F1/25wd/9ucHf/bG51/2psc/9zdn//bnF7/25wd/9zdXz/Zmhu/3Z4fP9ucXv/b3F1/21vc/99f4X/
    +e32D/3V3ff93eoP/fX6C/3V3ff98foX/f4GI/3N2f/92eYL/cnR7/29yfP9zdn//aGt1/25wd/9qbHP/
    +ZWhy/29ye/9sbnX/bW92/21vdv9nanH/am13/2dqcf9maXP/bnB3/2Zpc/9nanT/bG92/2hrdP9lZ3D/
    +ZWhw/2xudP9ucXr/a212/2hqc/9qbXf/bG51/2xudf9qbXf/bnF7/3Byef9wcnn/b3F1/3N1fP9wcnn/
    +bG51/3N1fP9vcXX/bnB3/3Byef9zdXz/bnB3/3Byef9wc33/dXd9/25xe/9sb3n/bnB3/25xe/9zdXz/
    +eHl9/3N1fP9zdXz/cHN9/3Z4fP9nanH/bG51/3Bzff9sbnX/bnB3/3V3ff9tb3P/bG51/3Z4fP9wcnn/
    +cHJ5/3N1fP9sbnX/bG51/2xvef9zdXz/bG51/2xudf9wcnn/c3V8/3Bzff9zdXz/bnB3/25wd/9sb3n/
    +bG95/3d5f/9ucHf/cHJ5/2xvef9vcXX/c3Z//3Bzff9sb3n/bG95/25xe/91eIH/bnB3/3N2f/9zdn//
    +c3Z//3N2f/93eX//bnB3/2xvef9wc33/bG95/2xudf9sbnX/bG51/3Z4fP9qbXf/am13/3Byef9sbnX/
    +c3V8/3N1fP9ucXv/bG95/3N1fP9qbHP/bW9z/21vc/9sbnX/bnB3/3V3ff9wc33/bG95/3N2f/9ucHf/
    +bnF7/25xe/93eoP/cHN9/3N2f/95fIb/d3qD/3V3ff91eIH/dXd9/3N2f/9zdn//c3V8/3V4gf9wcnn/
    +cHJ5/3Bzff91eIH/cHN9/25xe/9ucHf/cHJ5/2psc/9zdn//eXuB/3N2f/9ucXv/bG95/3N1fP9vcXX/
    +c3V8/2xudf9sbnX/dXd9/25xe/9ucHf/cHN9/3Byef9wcnn/bnF7/3N1fP91eIH/bnF7/3l8hv95e4H/
    +eXuB/25xe/9qbXf/Zmlz/3Byef9ucHf/am13/3Bzff9sb3n/cHN9/25wd/93eoP/c3Z//3Byef9ucHf/
    +b3F1/2psc/9vcXX/bG51/3Byef9vcXX/am13/2xudf9zdXz/bG51/2xudf9wc33/bG95/2Zobv9wcnn/
    +cHJ5/25xe/9sb3n/c3V8/3V3ff9ucXv/bG95/21vc/91d33/eXuB/25wd/91eIH/bG51/3Byef9tb3P/
    +bnB3/2xvef9ucXv/cHJ5/3V4gf9wcnn/bG95/25xe/9qbXf/Zmlz/3Z5gv9zdn//cHN9/21vef92eH7/
    +bnB3/29xdf9sb3n/bnB3/29xdf9vcXb/dHZ9/3Byef9ucHf/bG94/2Nmb/91d3z/bG95/2lsc/9nanT/
    +bnF7/3V4gf9xc3v/c3Z//3N2fv9tcHr/dXd+/3J1f/9rbnj/bnF7/2xveP9tb3j/cXN6/29xeP9tb3P/
    +aWty/2ptdP9wc3v/b3F4/3Bze/9ucXr/Z2p0/2xvef9qbHP/Zmlz/25wd/9nanL/aGt0/25xef9sbnb/
    +aGt1/21wef9ydX7/dHeB/29xef9sb3j/bnF7/2xudf9qbHP/amxz/25xe/9sb3n/bG95/21vc/9ucXv/
    +bnF7/2xvef92eHz/bnB3/3Byef9zdXz/cHJ5/21vc/9qbHP/bnF7/3N1fP9sbnX/bG51/2dqdP9sb3n/
    +bG95/3Bzff9sb3n/c3V8/25xe/9wc33/Z2p0/2ptd/9ucXv/amxz/2dqdP9sb3n/Zmlz/2dqcf9sb3n/
    +am13/2xvef9zdXz/amxz/2xudf9qbXf/bnF7/2ptd/9tb3P/bnF7/3V3ff9zdn//cHN9/25wd/9ucHf/
    +bnB3/25wd/91eIH/bnB3/3Byef9ucHf/cHJ5/3N2f/91eIH/c3V8/3Bzff9wc33/e32D/25wd/9wc33/
    +dXiB/3l7gf91eIH/d3l//2xvef9qbXf/bnF7/25wd/9qbHP/bnB3/2xudf94eX3/bnB3/2xudf9sb3n/
    +am13/3Byef9zdXz/c3V8/2ptd/9zdXz/amxz/2xvef9ucHf/am13/21vc/92eHz/c3V8/25wd/91d33/
    +b3F1/29xdf9vcXX/dnh8/25wd/9ucHf/bnB3/25xe/9qbXf/bG95/2psc/9sbnX/bG51/2xudf9qbXf/
    +Z2p0/2dqdP9nanH/dXd9/2dqdP9nanH/ZGdx/2Zpc/9dYGr/Z2p0/3N1fP9sb3n/bG51/2ptd/9qbXf/
    +amxz/2xvef9sbnX/am13/25xe/9wcnn/amxz/25xe/9qbHP/Z2p0/2xudf9sbnX/c3V8/2ptd/93eoP/
    +cHN9/3Bzff9sb3n/am13/2psc/9ucHf/bW9z/2xudf9ucHf/bG51/3Byef9tb3P/d3l//3Bzff9sb3n/
    +cHJ5/2xudf9maXP/bG51/2dqdP9wc33/am13/2xudf9ucHf/c3Z//25wd/9ucHf/dXiB/3V4gf9kZ3H/
    +dXd9/25wd/91d33/bG51/3Bzff95fIb/c3Z//2xvef9sb3n/cnV+/3Z5gv9sbnX/enyC/29ydv9vcnz/
    +bnB3/3Bzff9wc33/bG95/2xvef9wcnn/b3F1/2dqcf9ucHf/bG92/2hrdf91eIH/dXd+/3R2fv9ydHv/
    +dXd8/29yd/9wcnf/b3F3/3J0e/9ucHj/b3J5/3V3ff9wcnj/cHJ3/3Fzev9sbnX/dHZ8/29xd/9tcHn/
    +bG51/25xef9ydX7/bnB5/2xvef9vcXj/bG93/29yev9wcnj/aWx1/3Bze/9tcHr/a254/3Byef9tcHr/
    +bW92/2dqdP9rbnb/dHZ9/3R2ff9zdX3/c3V8/29yef92eYL/dXd9/3Z4fP9+gYr/cXR+/3N2f/92eID/
    +bW93/2hrdP9sb3n/b3J8/3V3ff9oa3X/YmVu/35/g/93eX//c3V8/3N1fP93eoP/c3Z//3N2f/9ucXv/
    +cHN9/3V4gf9zdn//eXyG/3N2f/9wc33/cHN9/3Bzff9ucHf/am13/3Bzff91d33/bnF7/3Byef9sbnX/
    +cHJ5/25wd/9zdXz/cHJ5/3V3ff9zdXz/cHN9/2ptd/9ucHf/d3qD/3Bzff9wc33/cHN9/2xvef9ucHf/
    +dXiB/3Bzff91eIH/e32D/3V3ff93eoP/eXuB/3t9g/93eX//d3l//3l8hv97fof/e32D/36Ahv97fYP/
    +eXuB/3V3ff91d33/gYOK/3Z4fP93eX//eHl9/3h5ff97fYP/d3qD/3N1fP95fIb/d3qD/3t+h/9wcnn/
    +c3Z//3d6g/91eIH/dXiB/3l7gf9zdXz/c3V8/3V4gf9zdXz/Z2p0/2xvef9nanT/d3l//25wd/9qbXf/
    +bnB3/2ptd/9ucXv/dXd9/3Z4fP9wcnn/c3V8/2xudf9vcXX/YmVu/2Jlbv9maG7/bnB3/2dqdP9iZW7/
    +ZGdx/2BjbP9kZ3H/ZGdx/25wd/9kZ3H/Zmhu/2Zpc/9maXP/Zmlz/2Zobv9dYGr/YGNs/2Zobv9maG7/
    +Z2p0/2Zpc/9nanT/Zmlz/3V4gf9sb3n/am13/2psc/9qbXf/Zmhu/25wd/91d33/c3V8/3N1fP9sb3n/
    +bnF7/3Byef91eIH/c3Z//3N2f/91eIH/d3qD/3N1fP93eoP/cHN9/3Byef9wc33/c3V8/3d5f/9ucXv/
    +eXyG/3l7gf91eIH/c3Z//25wd/9qbXf/c3V8/3Bzff9wc33/c3Z//25wd/9ucXv/bG95/3l7gf91d33/
    +bnB3/3Byef9ucHf/bnB3/25xe/9wcnn/cHN9/2xvef9sb3n/bG95/3Bzff9ucHf/bnB3/3N1fP9zdXz/
    +Zmhu/3Bzff9qbXf/bnF7/2ptd/9sb3n/dXiB/3Bzff9ucHf/bG51/3V2e/92eYD/bG52/3R2fP9sbnX/
    +cXN6/21vd/9vcXn/cHJ5/3Byef9ucHf/bnB3/25wd/9qbHP/bG51/2psdP9pbHT/cHJ4/25weP9sb3f/
    +bnB5/21vd/9ucHf/aGt1/2hrdP9qbXf/aGt0/2xvd/9sb3n/aWx0/21weP9nanT/ZWhv/25xev9vcnr/
    +a254/25xeP9ydHz/dHZ9/29xe/9vcnz/b3J8/3N1ev9xdH3/cnR9/3F0ff92eYH/dXiA/25xev9zdXz/
    +c3Z//3Byef9rbnj/b3J8/3h6gP90dn//cnR7/29xef9pbHb/cHJ5/21vc/9vcXX/d3l//29xdf90dnz/
    +dnh8/2tud/9maXP/c3V8/3N1fP93eX//bG51/2psc/9zdXz/b3F1/25wd/9sbnX/bnF7/2ptd/9qbXf/
    +amxz/2xvef9ucXv/bG51/3d5f/9vcXX/bnF7/3N1fP91d33/bnB3/2ptd/9zdn//c3Z//25xe/9wc33/
    +am13/3Bzff9wc33/dXd9/3N1fP91d33/bnB3/25wd/9sbnX/bG95/3N2f/9ucXv/c3Z//3V4gf9zdXz/
    +cHJ5/3d5f/91d33/cHJ5/3V3ff9tb3P/bG95/2xvef9wc33/am13/25xe/9ucXv/c3V8/3Byef91d33/
    +bnB3/25wd/9ucHf/cHJ5/3l8hv9sb3n/bnB3/25wd/9ucHf/cHJ5/25wd/9qbXf/cHJ5/3Byef94eX3/
    +bnB3/25wd/9zdXz/bnF7/3V4gf91d33/am13/29xdf9wcnn/bW9z/2Zpc/9qbXf/Zmlz/3Bzff9sbnX/
    +Z2p0/2xvef9qbHP/Z2p0/2xvef9ucHf/Z2px/2dqdP9iZW7/ZGZs/25wd/9sb3n/bnF7/3d5f/91d33/
    +bG95/3V3ff9qbXf/bG95/29xdf93eX//cHJ5/25xe/9wcnn/bnF7/2psc/9sbnX/Zmlz/2ptd/9sbnX/
    +bG95/2xudf9tb3P/bnB3/25wd/97fof/c3Z//3V4gf9zdXz/dXiB/25xe/91eIH/e36H/3V4gf93eoP/
    +d3qD/3d6g/93eX//eXyG/3l8hv95fIb/eXuB/3t9g/9zdn//d3qD/3N2f/9wcnn/bnB3/2xvef92eHz/
    +b3F1/3l7gf93eX//c3V8/3N2f/9ucHf/Z2px/21vc/9sbnX/bG51/2xvef9qbHP/am13/2dqcf9zdn//
    +bG95/2psc/9sb3n/bG51/2ptd/9qbXf/bG51/25xe/9sb3n/bG51/2xudf9ucHf/bG51/2dqdP9sb3n/
    +bG95/11gav9qbXf/am13/3Bzff9sbnX/bnF7/3V4gf9ucXv/bG51/2xudf9ydHz/dHZ8/29xef9ucXv/
    +bG50/25xef9nanT/am13/2dqdP9nanT/Z2px/2Zpc/9nanH/Zmlz/2ttdP9oa3T/bnB4/3V3ff9ydX//
    +c3aA/3J1fv9tcHn/cnV+/29ye/9tb3f/cXR+/3J1fv92eH7/c3aA/25xev91d33/cXR9/21wd/9vcnz/
    +c3Z//3J1ff90dnz/cnR8/3N1fP9wcnj/bnB3/3Byef91d3v/cHJ5/25wd/9tcHf/c3V8/3J0fP9sbnX/
    +bW9z/3N2f/9wcnn/amxz/25xe/93eX//dHeA/3J0fP9vcnv/a211/29yef9ucHf/bW9z/3d5f/9vcXb/
    +c3V9/3V3fv9sb3j/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/c3V8/2psc/9nanT/bG51/2ptd/9sbnX/
    +bG51/2ptd/9sbnX/cHJ5/2xudf94eX3/bG95/25xe/9zdn//cHN9/2xvef9nanT/dXd9/3N2f/9sb3n/
    +dXd9/2xvef9wc33/dXiB/3d5f/9zdXz/dXd9/25wd/9zdXz/amxz/2xudf9wcnn/am13/3Byef9sb3n/
    +amxz/2Zpc/9wcnn/am13/2dqdP9wc33/amxz/2xvef9sb3n/bnF7/2xudf9zdXz/cHJ5/3Byef9wc33/
    +bnF7/2ptd/9sbnX/bG51/2xudf93eX//bW9z/2xudf9sbnX/bG51/3Byef9wcnn/b3F1/2xvef9ucXv/
    +dXiB/2xvef9ucHf/dXd9/3N1fP9zdn//dXd9/2xvef9ucHf/c3Z//25xe/9qbXf/cHN9/2ptd/95e4H/
    +dXiB/3Bzff93eoP/c3Z//3t9g/9+f4P/eXyG/3d6g/91eIH/c3V8/3N2f/9qbXf/bW9z/25wd/93eX//
    +dXd9/3Byef93eX//cHJ5/3Byef9wcnn/e32D/3V4gf9wc33/bnF7/3Bzff9nanT/bG95/2ptd/9sbnX/
    +bW9z/25wd/9ucHf/bG51/2dqdP9qbHP/dXiB/2xvef9ucXv/bG51/2ptd/9kZ3H/Z2p0/3Byef9maG7/
    +am13/2dqdP9qbXf/Z2p0/2dqdP9sb3n/am13/3Bzff9ucXv/bG51/2xvef9sb3n/bG51/2dqdP9qbXf/
    +dXd9/25wd/93eoP/dXiB/3V3ff91d33/b3F1/2Zobv9ucHf/bW9z/2xudf9ucXv/bG51/3Byef9tb3P/
    +dXiB/3Bzff9qbHP/am13/2dqdP9sbnX/bG51/2ptd/9sb3n/bG95/2psc/9sbnX/Z2p0/2Zpc/9maXP/
    +amxz/2xvef9iZW7/bG95/25xe/9wc33/amxz/2ptd/91eIH/bnF7/25wd/9sb3n/b3F4/3R2ff9wcnn/
    +cXN4/21vc/9ydHv/bG51/25xev9wc33/cHN9/25wd/9wc33/cHN9/3Byef9wc33/bG94/25xef9xc3v/
    +c3V8/29xeP91d33/bG95/3R3gP9ucXv/amx0/2xvef9ucXv/cHN8/3Bzff9wcnn/c3V8/3Byef9vcXj/
    +cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/d3l//25wd/9wcnn/bnB3/3V3ff91d33/
    +bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9xc3r/c3V8/21vdv93eoT/dXiB/3V3ff9/goz/
    +cHJ8/3h6gf91d37/aWx2/2Vocv9ucXv/c3V8/3N1fP9qbXf/am13/3t9g/9wcnn/bnB3/3N1fP9ucXv/
    +bG95/2xvef9wc33/bnF7/3N2f/9sb3n/d3l//2xvef9ucXv/bnF7/3V4gf9zdXz/Z2p0/3N2f/91d33/
    +bG51/3V3ff9ucHf/cHJ5/3N2f/9zdn//c3Z//3N2f/9ucXv/c3Z//2ptd/9wcnn/cHN9/3Byef9wc33/
    +c3V8/29xdf9ucHf/dnh8/3N1fP9wcnn/c3V8/21vc/9zdXz/bnB3/2xvef9ucHf/bnF7/2ptd/9ucHf/
    +bnF7/25xe/9sbnX/bG51/2xudf9tb3P/dXiB/2psc/9qbHP/bG51/2dqdP9sb3n/bnF7/2ptd/9qbXf/
    +am13/3V3ff9maXP/Zmhu/2ptd/9sb3n/bnF7/2xvef9maXP/Zmhu/2ptd/9maG7/XWBq/2Rncf9gY2z/
    +bG95/2dqdP9qbHP/Z2p0/2psc/9qbXf/cHN9/3N1fP9ucXv/bnF7/2xudf9sbnX/am13/21vc/9ucHf/
    +eXuB/3N1fP9wcnn/cHJ5/2xudf9qbHP/am13/3Bzff9sb3n/bG95/25wd/9wcnn/amxz/21vc/9sbnX/
    +am13/2dqdP9qbXf/bG51/2xudf9sbnX/am13/3d5f/9sb3n/bnF7/2xvef9sb3n/bG51/3Byef92eHz/
    +bG51/3N1fP9wc33/c3Z//3Bzff9zdXz/c3V8/3N1fP9wcnn/dXd9/2xudf9wcnn/bnB3/2ptd/9sbnX/
    +am13/3Bzff9qbHP/d3l//3d5f/9zdXz/dXd9/25wd/9kZmz/bG95/2xvef9wc33/c3Z//29xdf9wc33/
    +bnB3/3d6g/91eIH/bnF7/25xe/9sb3n/cHJ5/3Byef9wcnn/c3Z//3N1fP9wcnn/cHN9/3N2f/9wcnn/
    +cHJ5/25xe/9zdn//Zmlz/3V4gf9wc33/d3l//2xudf9ucHf/d3l//25xe/9sb3n/bG95/3p8g/97fYP/
    +dnmC/3V3ff91d3z/dHeA/3F0fP9zdXz/cXN6/3V3ff9ucHf/cHJ5/3Byef9sbnX/bnB0/29xeP9ucXr/
    +b3F4/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/
    +bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/bG51/3N1fP9nanT/amxz/2psc/9ucXv/
    +cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/ZWhx/2Zpc/9jZnD/a254/2xudf9maXP/
    +dXd9/2lrc/9wcnn/bXB4/2dpcP9laHL/am13/2xvef9zdXz/bG95/2xudf94eX3/bG95/25wd/9sb3n/
    +bnF7/25xe/9ucXv/bnB3/3Byef9zdXz/bnB3/3h5ff9vcXX/bnF7/25wd/9zdn//cHJ5/2Zpc/9zdn//
    +cHN9/25xe/93eX//cHJ5/25xe/9zdn//c3Z//3Byef9zdXz/c3V8/3Byef9nanH/bG51/3Byef9sbnX/
    +cHN9/3N1fP9ucHf/bG51/3V3ff9wc33/amxz/3V3ff9qbXf/bnB3/3Byef9ucHf/bG95/2ptd/9sbnX/
    +bG95/25xe/9zdXz/am13/2xudf9qbXf/bG51/3V4gf9qbXf/bG51/25wd/9tb3P/bnF7/2xvef9sbnX/
    +cHJ5/25wd/95e4H/bG51/2xudf9qbXf/bG95/2xvef9sb3n/Z2p0/2Zpc/9ucXv/am13/2Zpc/9sb3n/
    +Zmlz/3N1fP9ucXv/bG51/2xvef9qbXf/dXd9/3Z4fP94eX3/c3V8/3Byef9sbnX/am13/3V3ff9zdn//
    +dXiB/3t+h/91eIH/cHN9/3N2f/9sb3n/bG51/25wd/95e4H/bG95/2xudf9sb3n/am13/2Rncf9nanH/
    +YGNs/2Rncf9maXP/bG51/2ptd/9qbXf/am13/2ptd/91d33/bG95/3Bzff9sb3n/cHJ5/2xudf9sb3n/
    +dXd9/2ptd/9sb3n/cHN9/3Bzff9ucXv/bG95/3Bzff9zdXz/bnF7/3N1fP9ucHf/dXd9/3Byef9tb3P/
    +b3F1/2xudf9zdn//bnB3/3d5f/93eX//cHN9/3d6g/9ucXv/Zmlz/3Byef9ucHf/cHN9/3N2f/9sb3n/
    +c3Z//25xe/91eIH/dXiB/3Bzff9zdn//cHJ5/25wd/9vcXX/bG51/3Byef9sbnX/am13/2xudf9sbnX/
    +amxz/2psc/9qbHP/am13/2Jlbv9ucXv/bnF7/3N1fP9nanT/bnB3/3Z4fP9wcnn/bG51/2xudf95e4H/
    +c3Z//25xe/9ucHf/bG95/25xev9vcXj/bXB6/21vef92eHz/cHJ5/25xe/9sb3n/bnB3/3Bydv9rbnf/
    +bG94/29xeP9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/
    +cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/am13/2psc/91d33/am13/2xudf9maXP/
    +bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/dnh8/3Byev9zdXz/cXR9/3R3gP9wc33/
    +bnF7/3+CjP9zdn//dnmD/3h7hP9xc3r/c3V8/3t9g/9+gIb/e32D/3d6g/9wc33/e32D/3Bzff9zdXz/
    +cHN9/25xe/9zdn//bnF7/2xvef9ucXv/dXd9/29xdf91eIH/bnB3/2xvef9ucHf/dXd9/2xvef9kZ3H/
    +cHN9/3N2f/9ucXv/d3l//2xvef9ucXv/dXiB/3V4gf9zdn//c3Z//3V4gf9wc33/am13/2xvef91eIH/
    +bnF7/3V4gf91eIH/bnF7/2xvef93eX//cHN9/3Byef91eIH/bnB3/25xe/9wc33/c3Z//3Bzff9wc33/
    +cHN9/25xe/9wc33/dXd9/25wd/9ucHf/bG95/25wd/93eoP/bnB3/25xe/9wc33/cHJ5/3Bzff9vcXX/
    +bnB3/3Byef9tb3P/d3l//2ptd/9sbnX/am13/25xe/9wcnn/cHJ5/2xudf9qbHP/cHJ5/2xvef9qbHP/
    +cHN9/2dqdP91eIH/d3qD/3Bzff9zdn//cHJ5/3d6g/95e4H/e36H/3V4gf93eoP/cHN9/3V4gf9sb3n/
    +bG95/3Byef91eIH/c3Z//25xe/9wcnn/bG51/2dqcf9ucHf/dnh8/21vc/9qbXf/bG95/3Byef9sbnX/
    +b3F1/2RmbP9sbnX/bG51/2ptd/9sb3n/Z2p0/2dqdP9sbnX/dXd9/2xudf9ucXv/bnF7/2xvef9nanT/
    +bG51/3N1fP9sbnX/cHJ5/3Bzff9ucXv/bnF7/25xe/9wc33/cHN9/2xvef91d33/bnB3/3V3ff9zdXz/
    +b3F1/2xvef9sb3n/c3Z//3Byef93eoP/d3qD/3N2f/91eIH/cHN9/2dqdP9ucHf/bnF7/3N2f/9wc33/
    +bnB3/3N2f/9wcnn/eHl9/3V3ff9sbnX/bG95/2xudf9sbnX/bG51/2Zpc/9sbnX/amxz/2Zpc/9maXP/
    +Zmhu/2Zobv9maG7/amxz/2xvef9gY2z/Z2p0/2xvef9ucXv/Zmlz/2xudf91d33/bG95/2xudf9ucHf/
    +bnF7/25xe/9ucHf/bG51/2xudf9sb3n/am13/3J0e/9zdn//d3l//3Bzff9wc33/cHN9/25xe/9xc33/
    +bnB2/25weP9wcnn/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/am13/2xudf9ucXv/bG95/25xe/9wc33/
    +bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/
    +am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn//d3qD/3l7gf93eoP/dXh//29yfP9vcnv/
    +b3F1/2xudf93eoP/b3F4/3d5f/97fYb/dHZ//3V3ff97fYP/foCG/3t9g/9zdn//cHJ5/3l8hv9wc33/
    +c3V8/3N2f/91eIH/d3qD/3d6g/9ucXv/cHN9/3N2f/9wcnn/d3qD/3N1fP9zdn//c3V8/3N2f/9sb3n/
    +Zmlz/3N2f/91d33/bG95/3l7gf9sb3n/bnB3/25wd/9zdXz/bnB3/25wd/91d33/bnB3/2xudf9qbHP/
    +cHJ5/21vc/92eHz/cHJ5/2xudf9sb3n/eHl9/3V3ff9wcnn/d3qD/25wd/9wc33/bnF7/3V4gf9wc33/
    +bnF7/2xvef9sb3n/c3Z//3N2f/9wcnn/bG95/2xvef9sb3n/d3l//25wd/9vcXX/b3F1/29xdf9zdXz/
    +bnB3/25wd/9ucHf/b3F1/3d5f/9qbXf/bG51/25wd/9wcnn/bnF7/3Byef9sbnX/amxz/3Byef9wcnn/
    +amxz/3Byef9qbHP/cHN9/25xe/9tb3P/bnB3/21vc/91d33/dXiB/3V4gf9zdn//cHN9/25wd/9ucHf/
    +c3V8/3Bzff91eIH/foGK/3t9g/93eoP/d3qD/3Byef9ucXv/dXiB/3d5f/9sb3n/bnB3/3Bzff9wc33/
    +Z2p0/25wd/9maG7/bG51/2xudf9tb3P/bG51/2psc/9sb3n/bnB3/3l8hv9wc33/c3Z//3Bzff9wc33/
    +am13/2xvef93eoP/cHJ5/3N1fP91d33/dXd9/3V3ff9zdXz/dXd9/3V3ff9wcnn/dXd9/29xdf91d33/
    +dXd9/3Byef9sb3n/b3F1/3Byef9tb3P/dXd9/3d5f/9ucHf/cHJ5/3Byef9kZ3H/am13/2Zpc/9sb3n/
    +bnF7/2ptd/9zdXz/bG51/3V3ff9zdXz/bnB3/3N1fP9sb3n/bG95/25wd/9ucHf/bG95/25wd/9wcnn/
    +c3V8/29xdf9ucHf/bG51/29xdf9zdXz/Z2px/2xvef9zdn//eXuB/3Byef9wcnn/eXuB/25xe/9sb3n/
    +bnB3/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/2xvd/9vcXn/am13/3Bzff9qbXf/am13/2psc/9ucHf/
    +am13/2xudf9sbnb/bW92/3Byef9ucXv/bG95/2ptd/93eX//dXd9/3Byef9ucHf/c3V8/3N1fP91d33/
    +c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/
    +bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/bG95/2xvef9wcnn/am13/2tueP9maXD/
    +Z2p0/2dqcf9iZW7/cHJ5/2hqcf9xc3r/bnB5/2xudf9qbXf/cHN9/3Z4fP9wcnn/bnB3/2xudf93eX//
    +Zmlz/2ptd/9ucHf/am13/25xe/9ucXv/bW9z/25wd/9sb3n/am13/3V3ff9qbXf/bG95/2ptd/9sb3n/
    +ZGdx/11gav9qbXf/am13/2xvef9zdXz/Z2p0/2xudf9wcnn/bnB3/2xudf9ucHf/cHN9/25wd/9sbnX/
    +am13/25xe/9sb3n/d3l//3Bzff9ucXv/bnF7/3l7gf91eIH/cHN9/3l8hv9zdXz/d3qD/25xe/91d33/
    +c3V8/3N1fP9vcXX/bG51/3N1fP9wcnn/b3F1/21vc/9tb3P/bG51/3d5f/9sb3n/amxz/2xudf9sbnX/
    +c3V8/2xudf9ucHf/bnB3/25wd/93eX//bnB3/2xudf9wcnn/c3V8/25xe/9wc33/bG95/25wd/91eIH/
    +d3qD/3Bzff93eoP/cHN9/3l7gf91eIH/dXd9/3l7gf95e4H/e32D/4GDiv9/gYf/foCG/36Ahv9wc33/
    +cHN9/2ptd/9sbnX/bG95/3N1fP9wc33/bnF7/25xe/9qbXf/Z2p0/25xe/9wc33/am13/2Zpc/9nanT/
    +Z2p0/2Rncf9maXP/ZGdx/2dqdP9qbXf/amxz/2xudf9kZ3H/am13/2xudf97fYP/cHN9/3N1fP9ucXv/
    +dXiB/2xvef9ucHf/d3l//25wd/9zdn//d3l//3V4gf91d33/cHN9/3l7gf95e4H/dXiB/3l8hv9wcnn/
    +eXuB/3V4gf9wc33/cHN9/3N2f/91eIH/bnF7/3d5f/93eX//bnF7/3N1fP9tb3P/Z2px/25wd/9sbnX/
    +dXd9/25wd/9qbXf/c3V8/2xudf9wc33/c3V8/2ptd/9wcnn/bG51/2xvef9tb3P/b3F1/2xvef9sb3n/
    +bG95/25xe/9ucHf/bnF7/3N2f/9wcnn/d3l//2xvef9wc33/eXyG/3t+h/9zdn//d3qD/36Ahv93eoP/
    +d3qD/3V4gf9ucXv/bnF7/25xe/9vcXX/amxz/3R2ff9wcnr/c3V6/25wd/92eHz/c3Z//25xe/9ucXv/
    +bG95/29ye/9tb3f/bnB3/25wdP9sb3n/c3V8/25wd/9qbXf/dXd9/3V4gf9wc33/bG95/3N2f/91eIH/
    +d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/dXiB/3t+h/9zdn//dXiB/25xe/97fYP/
    +c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/bnB3/3Bzff9zdn//c3V8/29xeP9ucXn/
    +bW90/2xveP9qbXf/Z2px/3d5f/9tb3T/c3V8/3N2fv9ucHj/cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//
    +c3Z//2Rncf9maXP/Z2p0/2Zobv9qbXf/bG95/2psc/9nanT/am13/2dqcf9ucHf/ZGdx/2Zobv9maG7/
    +Z2p0/2Rncf9gY2z/Z2p0/2dqdP9qbXf/cHN9/2dqdP9sbnX/bnF7/2xvef9qbXf/bG95/25xe/9sbnX/
    +bG51/25wd/9wcnn/b3F1/3l7gf93eoP/c3Z//3N1fP95e4H/eXuB/25xe/93eX//bnB3/25xe/9sb3n/
    +dXd9/3Byef9zdXz/bG51/2xudf9wc33/bG95/2xudf9sbnX/bG51/2ptd/91eIH/bnF7/2dqdP9nanH/
    +Z2px/2Zpc/9maG7/Zmhu/2dqcf9qbHP/c3V8/2Zpc/9kZ3H/am13/25xe/9qbXf/bG95/2dqdP9qbXf/
    +cHN9/3Bzff9nanH/cHN9/2ptd/9zdn//cHJ5/29xdf9wcnn/cHJ5/3N1fP91d33/dXd9/3Bzff9ucXv/
    +bW9z/21vc/9ucHf/bnF7/3N2f/93eX//d3l//3d6g/9zdn//c3Z//3Bzff93eoP/foCG/3l8hv91d33/
    +dXiB/3N2f/9ucXv/cHJ5/2xvef9zdXz/bnB3/25wd/9sb3n/amxz/29xdf9wcnn/e36H/3V4gf9zdn//
    +cHN9/3N2f/9ucHf/bnB3/3Z4fP9tb3P/c3V8/3Z4fP9wc33/cHN9/25xe/93eX//d3l//3Bzff95fIb/
    +bnF7/3d5f/91eIH/cHN9/3N1fP9wcnn/bnF7/2xvef92eHz/dXiB/25xe/9ucXv/bG95/2ptd/9qbXf/
    +bG95/3V3ff9wcnn/b3F1/3Z4fP9ucHf/c3V8/3V3ff9ucHf/c3V8/2ptd/9sbnX/bW9z/21vc/9ucHf/
    +bG95/2xudf9ucHf/bW9z/21vc/9ucXv/am13/3V3ff9maG7/am13/2xvef92eHz/bnB3/29xdf91d33/
    +am13/3Bzff91d33/d3l//3t9g/93eX//d3l//3d5f/98fYL/dniA/3Z4gP9xc3r/d3l//3Bzff9ucXv/
    +bnF7/3Bzff9tcHr/b3J8/3F0ff9zdXz/cHN9/3l7gf9wc33/bnF7/3V3ff91eIH/bnF7/25xe/91d33/
    +bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/bnB3/25wd/93eX//cHJ5/3Byef9ucHf/
    +eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/bG95/2xudf9ucXv/cHJ5/3J0e/9sbnb/
    +bG52/2Vocv9maXP/Zmhu/2Rncf9zdn//Z2px/21wd/9rbXb/Zmhv/2Nmb/9qbXf/cHJ5/2xvef9ucXv/
    +bG95/3V4gf9qbHP/bG95/25xe/9ucXv/dXd9/3N1fP9vcXX/cHJ5/3N1fP9sbnX/c3V8/2ptd/9qbXf/
    +bG51/25wd/9nanT/Zmlz/2ptd/9sbnX/am13/3V3ff9qbXf/am13/3Bzff9qbXf/bG51/2ptd/9qbXf/
    +amxz/2Zpc/9kZ3H/bG95/2psc/9zdXz/cHN9/2xvef9qbHP/bG95/3N1fP9qbXf/dnh8/2ptd/9ucHf/
    +bG95/3N2f/9ucXv/dXd9/25wd/9wcnn/c3Z//3Bzff9wcnn/bnB3/3Byef9wc33/f4GH/3V4gf9zdn//
    +bnF7/3Bzff9zdn//cHJ5/3Byef9wc33/cHN9/3l7gf9sb3n/bG95/2xvef92eHz/bnB3/25wd/9ucHf/
    +b3F1/3Z4fP9wcnn/Zmlz/25xe/9qbHP/bG95/2xvef9qbXf/cHJ5/25wd/9wc33/dnh8/3Z4fP9zdn//
    +c3Z//25wd/9sb3n/Z2p0/2ptd/9ucXv/c3V8/3N1fP9wcnn/bW9z/2psc/9maG7/bG51/3V3ff9sb3n/
    +bG51/3Byef9ucHf/bG51/3Byef9sbnX/bnB3/25wd/9tb3P/cHJ5/2Rncf9sbnX/bG95/3V4gf9ucXv/
    +bG95/25xe/92eHz/bnB3/25wd/92eHz/bG51/3N1fP92eHz/dXd9/3Bzff9ucXv/c3Z//3Z4fP9vcXX/
    +d3l//25wd/9zdXz/cHJ5/3Byef9ucHf/cHJ5/3Bzff9ucXv/eXuB/3l8hv91eIH/cHN9/25xe/9qbXf/
    +bnF7/25xe/97fYP/dXiB/3N1fP95e4H/bG95/25xe/9wc33/bnB3/3N2f/9sb3n/cHJ5/3Byef9zdXz/
    +dXiB/3N2f/9zdXz/c3Z//3N1fP9zdXz/d3qD/3N2f/97fof/bnF7/3Bzff9wc33/eXuB/25wd/9ucXv/
    +dXiB/3Bzff95e4H/e32D/3V4gf91eIH/cHN9/3Byef9qbXf/dnh8/3Fzev9zdXz/cHJ5/3N2f/9zdn//
    +bnF7/2xvef9wc33/bG51/2xudv9rbXb/aWxz/2dpb/9ucXv/am13/2Rncf9qbXf/am13/2Zpc/9nanH/
    +am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/
    +cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/bnF7/25wd/9vcXX/c3V8/3Byef9vcnz/
    +b3F4/3N1ff9ucXv/dHeA/3N1fP9zdXz/foCG/25wd/91d33/c3V9/21vdP9sb3b/c3V8/3V3ff9wc33/
    +bG95/3Byef91d33/Z2px/2xvef9ucXv/cHN9/3N2f/9zdn//bG95/25xe/9wc33/bnF7/3V4gf9ucXv/
    +bnB3/2xudf9zdXz/bnB3/2psc/9ucHf/bG51/3N1fP92eHz/bnB3/2xvef91d33/bnB3/25wd/9wcnn/
    +cHJ5/2xudf9sbnX/bnB3/3V3ff9tb3P/eHl9/2xvef9ucXv/amxz/2xvef9zdXz/bG51/3N1fP9sbnX/
    +c3V8/2xudf9zdXz/cHJ5/25xe/9ucHf/bG95/3Bzff9wc33/b3F1/25wd/9vcXX/cHJ5/3t9g/9ucHf/
    +c3V8/2xudf9ucHf/bnF7/25wd/9ucHf/cHJ5/3Bzff93eX//bnB3/2xvef9ucHf/c3V8/25wd/9sbnX/
    +am13/2ptd/9wc33/bnF7/2Rncf9qbXf/Z2p0/2ptd/9qbXf/amxz/25wd/9sbnX/bG95/3V3ff9wc33/
    +cHN9/25xe/9sbnX/amxz/25wd/9wc33/cHN9/3d5f/91eIH/d3qD/3N2f/92eHz/bnB3/36Ahv9/gYf/
    +eXuB/3p7f/9+gIb/e36H/3d6g/97fof/d3l//3l7gf92eHz/c3Z//31+gf9zdXz/eHl9/3t9g/9/goz/
    +e32D/3d6g/9zdn//eXuB/2xvef9vcXX/dnh8/2ptd/9ucXv/c3V8/3Bzff9qbXf/am13/25xe/9ucXv/
    +Z2px/3Byef9maXP/bG95/2ptd/9sb3n/Zmlz/2Rncf9kZmz/Zmhu/25wd/9wcnn/Zmlz/2xudf9qbXf/
    +Zmlz/2dqdP9sbnX/dXd9/3Byef9ucHf/eHl9/25wd/9sbnX/c3V8/2xudf91d33/bG51/29xdf9wcnn/
    +bG95/3V3ff9ucXv/bG95/3Bzff9sb3n/b3F1/3Byef9ucHf/dnh8/2Rncf9ucHf/bG51/3d5f/9qbXf/
    +am13/3N1fP9sbnX/dnh8/3Z4fP9tb3P/bG95/25xe/9ucHf/amxz/3R2fP9tb3f/c3V6/2xudf9wcnn/
    +cHJ5/25xe/9qbXf/c3V8/29xeP9xdH7/cXR+/3F0ff9wc33/dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/
    +bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/
    +bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/b3F1/3Byef9sbnX/bG51/25xe/9sbnX/
    +cHJ5/25wd/9xc3r/bnB0/29xeP9ucHf/bG51/3t9g/9ucHX/dHd+/3N1e/9vcXX/b3F1/3N1fP91d33/
    +cHN9/25xe/9wc33/d3l//2Rncf9sbnX/cHJ5/2xvef9wc33/am13/2xudf9ucHf/bnF7/25xe/9wc33/
    +am13/2xvef9nanT/bG95/2psc/9kZ3H/am13/2xudf9ucXv/c3V8/2dqdP9qbHP/bG95/2ptd/9sb3n/
    +bG95/2ptd/9sbnX/am13/2ptd/9wc33/bG95/3V3ff9wc33/bnF7/2xudf9zdXz/dnh8/25wd/93eoP/
    +bG95/3V3ff9ucXv/c3Z//3Byef91d33/cHJ5/25xe/91eIH/dXiB/25wd/9ucXv/cHJ5/3V4gf97fof/
    +c3Z//3V4gf9zdn//bnF7/3N2f/9wc33/cHJ5/3Byef9ucXv/d3qD/3Byef9sb3n/cHN9/3V4gf9wc33/
    +bnF7/25wd/9sbnX/dnh8/3Byef9sbnX/cHJ5/2xudf9qbXf/bG51/2psc/9sb3n/bW9z/3Byef92eHz/
    +dXd9/3V3ff9wcnn/bG95/25xe/9ucHf/dXd9/3Bzff93eX//dnh8/3N2f/9wcnn/bG95/2Rncf9zdn//
    +dnh8/25xe/9qbXf/cHN9/25xe/9ucHf/cHN9/2dqdP9wcnn/bG95/25wd/91d33/Z2p0/2xvef9wc33/
    +eXyG/3Z4fP9wc33/c3V8/3d5f/9sb3n/bnB3/3Z4fP9sb3n/c3Z//3d6g/91eIH/cHN9/3N2f/95e4H/
    +d3l//25wd/95e4H/bnF7/3V3ff9zdn//c3Z//3Bzff9wcnn/cHN9/25xe/93eX//d3l//3N2f/9ucXv/
    +bnF7/2dqdP9sb3n/bnB3/3Z4fP9ucHf/bG95/3V4gf9ucHf/b3F1/3Bzff9ucHf/eXuB/2ptd/9ucHf/
    +bnB3/29xdf91d33/cHJ5/25wd/9zdXz/bnB3/29xdf9wcnn/b3F1/3Z4fP9kZ3H/am13/2xvef91eIH/
    +am13/2xudf9ucXv/Zmlz/3Bzff9zdXz/c3V8/3V4gf91eIH/bnF7/2ptd/9vcnz/bG95/3N1fP9naXD/
    +Z2p0/2ptd/9sb3n/am13/25xe/9tb3b/cXN7/3F0fP9vcnv/cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/
    +bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/c3V8/2xudf95e4H/bnB3/3N1fP93eX//
    +dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/am13/2Zpc/9nanT/bG51/2psc/9sb3n/
    +bG51/2xvef9qbXb/am13/2lsdf9rbnj/am13/2dqdP91eIH/a211/3N1ff9sb3n/am12/2xudf9wcnn/
    +dXd9/3N1fP9zdXz/dXd9/3Byef9dYGr/YmVu/2Zpc/9nanT/am13/2Rncf9maG7/ZGdx/2Zpc/9maXP/
    +Z2p0/2Zobv9nanT/ZGdx/2Rncf9iZW7/XF9o/2Zobv9maG7/am13/25wd/9kZ3H/Zmlz/25xe/9sb3n/
    +bnF7/2ptd/9sb3n/bnF7/2ptd/9tb3P/dXd9/3Byef95e4H/cHN9/3Bzff9vcXX/dXd9/3V3ff9ucXv/
    +dXiB/25wd/92eHz/bnB3/3Z4fP9wcnn/c3Z//25wd/9ucHf/cHJ5/3Byef9tb3P/bG51/21vc/9zdXz/
    +d3l//2xvef9sb3n/bG95/2xudf9qbXf/am13/2ptd/9nanT/bG51/3V3ff9ucHf/bnB3/25wd/9zdn//
    +cHJ5/25wd/9sbnX/bnB3/3N1fP9zdXz/bG51/3Byef9sbnX/bG51/25xe/9wcnn/cHN9/3Bzff9zdn//
    +e36H/3l7gf91eIH/cHN9/3Byef9ucXv/bG95/3Bzff91d33/d3qD/3d5f/93eoP/cHN9/25xe/9qbHP/
    +eXuB/36Ahv95fIb/dXd9/3d6g/91eIH/c3Z//3V4gf9wc33/d3qD/3Bzff9zdn//eXyG/2xvef9ucHf/
    +cHJ5/3l7gf9zdXz/cHJ5/3Byef92eHz/bnB3/3Byef9wc33/bG95/3N2f/91eIH/c3V8/2xvef9wcnn/
    +e32D/3l7gf9sb3n/dXiB/3Byef9zdn//cHN9/3N2f/9zdn//bnB3/3V4gf9wc33/d3l//3V4gf91eIH/
    +c3V8/3Bzff9qbXf/b3F1/21vc/91d33/bG95/2xudf91d33/am13/2xudf9qbXf/bG51/3V3ff9qbXf/
    +bW9z/2xudf9tb3P/dXd9/2ptd/9tb3P/cHJ5/2ptd/9sbnX/bG95/2xudf91d33/Zmhu/25wd/9sbnX/
    +dXd9/2xudf9vcXX/dnh8/2xudf92eHz/cHN9/21vc/9wcnn/c3V8/3Byef9nanT/bnF7/29ye/9wc33/
    +bG51/2xvef9qbXf/am13/2xvef9zdXz/bnB0/3J0ev9xdHv/bnB6/25xe/91eIH/cHN9/25wd/95fIb/
    +d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/
    +d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/dnh8/2xvef9qbXf/am13/2xudf9qbXf/
    +c3V8/2xudf9wcnn/bW92/3ByeP9vcXX/bnB3/2dqcf9nanH/d3l//25xdf90dnz/bW94/2tueP9nanT/
    +bnF7/3V3ff9sb3n/cHN9/25xe/92eHz/YmVu/29xdf9zdn//d3l//3V4gf9wc33/bG95/25xe/9zdn//
    +dXiB/3d6g/9ucXv/eXuB/3N2f/97fYP/cHN9/2xvef9zdn//cHJ5/3N2f/97fof/c3Z//3Bzff93eoP/
    +c3Z//3d6g/9wc33/cHN9/3Bzff9sb3n/bnB3/3V4gf9zdn//foGK/3N2f/9wc33/bnB3/3V3ff9zdn//
    +bnB3/3V4gf9sbnX/dnh8/25wd/92eHz/cHN9/3Z4fP9ucHf/bG95/25xe/91d33/b3F1/3Byef9wc33/
    +d3qD/36Biv91eIH/dXiB/25xe/9ucHf/cHN9/2xvef9ucXv/bG95/25wd/9wc33/bG95/2xvef9wcnn/
    +dXd9/3Byef9tb3P/bW9z/2dqdP9wc33/bG95/2dqdP9sb3n/ZGdx/2Zpc/9sb3n/Zmlz/2dqcf9maXP/
    +bG51/3V3ff9sb3n/c3V8/25wd/9ucHf/bG51/2tueP9vcnz/dXeA/3h7hf9ydX7/dXd9/25wd/9ucHf/
    +Zmds/3Byef9wcnn/c3V8/2dqdP9wcnn/cHJ5/2xudf9qbXf/Zmlz/2psc/9maXP/aGty/25xe/9nanT/
    +a210/2hrdf91eIH/bnF7/2xvef9qbXf/c3V8/2dqdP9qbXf/am13/2xudf9ydHv/dHZ8/2ptd/9sb3n/
    +bW92/3N1fP9ydHv/am12/3d4ff9wcnn/dXiA/3J1fv91eIH/cnR8/2xudf9wcnn/cHJ5/3V3ff9wcnn/
    +cHJ5/21vc/9ucHf/Z2px/25wd/9ucHf/dHZ8/29xeP9sb3b/dnh//29xdf9sb3n/bnF7/29xdf94eX3/
    +amxz/29xdf9tb3P/cHJ2/3V3ff9wcnn/b3F4/3R2fv9ucXj/bW93/3Fze/9vcXX/dXd+/2dpb/9sbnX/
    +bnB6/3d5f/9sb3b/a254/3V3e/9sbnT/dHZ6/3Bzff92eHz/e32D/36Ahv99foH/d3l//3l7gf91d3z/
    +c3Z+/2tudf9sb3n/am13/2Zpc/9nanT/bnF6/2ptdv9zdX7/c3V9/3V4gP9wc33/e32D/3V4gf9ucXv/
    +e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/am13/25wd/9wcnn/bG51/3l7gf9ucHf/
    +c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/
    +bG95/3Bzff9sbnX/cHJ5/25xeP9ucHn/bG52/2tudv9nanT/am12/3F0fv9pbHX/bXB6/2psdP9nanH/
    +Y2Zv/2Zpc/9ucHf/am13/25xe/9ucXv/b3J7/2Zpcv9rbnf/bW94/29yfP9ucXr/b3J6/21vdv9vcXj/
    +bG93/2lsdP9rbXb/bXB4/21wev9nanP/aGt0/2Fkbf9gY2z/amxz/2dqcf9oa3X/cnV8/2Zocf9qbXb/
    +a212/2xudf9sbnf/bW92/3Byef9ucHn/b3F4/2psdf9ucXv/bnF6/29ye/9sb3n/bW94/25wdf9xc3r/
    +bnF3/3F0e/9vcnv/bXB4/3J0fP9ucHf/cHJ5/21wev9ucXv/amx1/2ptc/9tcHj/b3F4/3J0ef9tb3b/
    +bXB4/3Bze/91d33/dHZ+/3Bze/9wcnn/b3F4/3h6gv93eH3/dHZ7/3Z4f/92eYL/d3qB/3d5gv90d3//
    +eXyF/3t+h/99f4f/e32G/31/hf98foX/fYCI/3p9hv9+gIb/e32E/3V3fv95e4P/enyD/3d5f/95e4H/
    +enyE/3l8g/97fYL/dnh//3V3fv92eYL/cnV9/3Fze/9sb3j/bnF5/3F0ff9zdXv/bXB5/3R2ff9rbXX/
    +amx1/2Rmbf9pbHX/aWx2/25wev9fYmz/Zmlz/2dqdP9kZ3H/Zmlz/2BjbP9maG7/XmFr/2Vocv9qbXf/
    +Y2Zw/2Zpc/9oa3T/b3F5/2dqdP9maXP/ZGdx/25wd/9kZ3H/Zmlz/2Zpc/9oa3T/cXN6/3N1fP9rbnj/
    +bnF6/2xvef90dn3/cHN7/2ttdf90dn3/b3J6/3V3ff9vcnv/dHd//3Byef9ucHf/cnV+/25xe/93eX//
    +cHJ5/3N1fP9ucHf/cHJ5/2dqcf9ucHf/bnB3/3R2ev9sbnb/a211/3N1fP9tb3T/bG51/25wd/9ucHf/
    +dXd9/2dqdP9sbnX/bW95/25weP9xdHz/bnF5/2xveP9xc3z/bnB3/2xudf9xdHz/bnB3/3F0ff9sbnf/
    +bnB5/29xeP92eH7/b3F4/3J0eP9xc3r/bG93/3Fzev9vcXr/am13/3N1fP9sb3n/cHN9/2xudf9zdX3/
    +dHZ9/3V4gP9ucXv/c3Z//3N2f/9sb3n/cHJ5/3R2fP9vcXr/dnh+/3FzfP9vcnz/bnF7/3N2f/9sb3n/
    +bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX//amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/
    +ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/bG95/2xudf9wc33/am13/2Zpc/9sb3n/
    +am13/25wd/9zdn//bnB3/25xe/9ucHj/b3F5/2hrc/9qbHT/Zmlz/2lsdv9rbnf/Z2py/25weP9xdHz/
    +bW90/2hrdf9sb3n/cHN9/2xvef9zdXz/c3V8/3Bzff9rbnf/b3J8/29yfP9ydX//dXd+/3R2ff9tb3b/
    +cnR6/2xveP9tcHr/bnB4/3J1ff9vcnz/bG52/3Fzff9oa3X/ZGdx/21vc/9tb3P/c3Z//3Z4f/9vcnr/
    +cXN7/3F0ff9wcnz/bnF6/3Bzff9ydX7/c3Z//3N2f/9sb3n/c3Z9/3J1fv9ydX//dnmC/3N2f/92eYH/
    +dXiB/3J1fv98foX/dHeB/3F0ff9ydX7/cHN8/3R3f/91d33/cHN8/29xef9vcXX/cHJ5/3Fzd/91d33/
    +bnB3/25xe/9ucXv/cnR6/3F0fP9xc3j/bG52/21wef90dn3/dXh+/21vd/90d3z/bnF4/29xef9wc3z/
    +bG95/3Bzff9xdH7/cnV+/25xev9wc3z/cnV+/3N2f/9wc3z/d3qE/3BzfP9rbnf/bnF6/3Byef9vcXn/
    +cnR7/29xef9ydHv/bW92/2hrcv9qbXf/am13/2xudf9tb3P/cnR8/3N1fP90dn7/c3V6/3N1fP91eH//
    +bXB4/3F0e/9rbXP/bXB6/2xvd/90dnz/aGt0/3J0e/9zdXz/bnB3/3N1fP9ucHf/bnB3/2ttdP9wc3n/
    +c3V7/3ByeP9wcnj/cXN5/3V3gP9ydHv/cHJ5/3Byef95e4H/bG51/2tud/9rbXb/bG95/25xe/9xc3r/
    +bG53/29xeP9zdXn/dHd+/3Fzef9sbnT/cnR9/3F0ff9ydHz/bW94/3V4f/9ucXn/bG94/21wev9wc33/
    +d3l//3Byef9wcnn/bW9z/25wd/9maG7/bG51/21veP90dnv/b3F6/21wev94eoH/cnV//3Fzev9sb3n/
    +cHJ5/3Z4fP9sbnX/bW92/25xe/9wc33/dnmA/3FzfP9wc3z/dnmD/3R2fv9vcnr/dniB/3Z4gf92eH3/
    +cnV+/3R3gf9ydHz/fH6E/3d5gP94eoD/c3Z+/2xveP9ucXr/bnF4/2Zpc/9sb3n/am13/25xe/9kZ3H/
    +cXN9/25xev91eID/bnF7/2xvef9zdXz/bW92/3Byef91d37/cXR9/3t9h/90d3//cXR9/3N2f/95e4H/
    +c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/f4GH/3d5f/93eoP/c3Z//3d6g/91d33/
    +foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn//am13/25xe/9ucXv/c3Z//3Bzff9qbXf/
    +c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bXB3/3V3ff9tb3j/bnF6/25xe/90dn3/cXN7/29yfP9vcnz/
    +cHN9/3Fzev9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9tcHn/aWx2/2xvef9rbXT/am13/21wef9vcnz/
    +am13/29yfP9nanT/bG95/2tueP9vcnv/bnF5/2tudv9ydHv/bG51/2Zpc/9vcXX/bnB3/3Bzff91eIH/
    +bG95/25xe/9ucXv/bG95/21vdv9ucHf/c3Z//3N2f/90d4D/bnF7/21wev9zdn//b3F4/3N2f/9ucXv/
    +c3V8/3N2f/9zdXz/eXuF/3Bzff9zdn//c3Z//3N2fv9zdn//eHqA/25xe/9tcHr/cnR8/3Byef9wcnn/
    +cHN8/3Byef9ucHf/bnB3/21vdv9wcnn/b3F1/2dqcf9qbXf/cHN9/3Bzff9qbXf/dHZ8/25wd/9ucHf/
    +cHJ5/21vd/9zdXz/bG95/3V4gf9ucXv/cHN8/3N2f/9ucXv/bnF7/3h7hf95fIX/dnh8/3x9gP99f4b/
    +foCG/3x9gf9+gIf/foCG/3d6g/93eoP/eXyG/3t9g/95e4H/dnh8/25wd/9ucXj/b3J7/3Fzev9ydHv/
    +eXt//3R2ff90dnz/bG94/3Byef9wcnr/dHd//3J0ff98foT/fX+F/3V3ff97fYP/dnh8/3Z4fv91dnv/
    +d3l+/3F0fP90d37/cHJ6/3V4f/90d4H/cHN7/3Byef9zdXz/dXiB/2ptd/9tb3b/bW92/29yev9xdH7/
    +b3F4/2lsdv9tb3f/c3V7/3N2f/9tcHr/bW92/3F0fv9ydX3/c3Z8/2xudf9ydX7/a210/2hrdf9maXP/
    +bXB5/3N1fP9wc33/am13/2xudf9sbnX/Z2px/2xudf9vcXX/cHJ4/2ttdv9ucXr/dHd+/29yd/9sbnb/
    +b3F1/3Bzff93eX//bnB4/2xvef9ucXr/cXN6/3Fzev9vcXj/bnB3/3h6gP9ydHv/bG51/29xeP9ydHv/
    +bW92/2tudf9ucHf/amxz/3N1fP9ydHv/bnF6/2dqdP9nanT/aGt1/2xvef9nanT/bG95/2ptd/9ucXv/
    +ZGdx/29xe/9xc3n/cnR9/2xvef9ucHf/c3V8/2xvef9tcHn/dHZ+/25xeP9zdn//a254/2ptdv9nanT/
    +bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/
    +Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/
    +Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/aWx1/2xudf9sb3n/cHN8/2tueP9ucHf/
    +bXB5/3J0fP9ucXb/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/cHN9/2ptd/9qbXf/Z2p0/2ptd/9sb3n/
    +bnF7/2Zpc/9qbXf/YmVu/2dqdP9laHL/aGt0/2lsdf9oanH/bW95/2dqdP9iZW7/bG51/2ptd/9rbnj/
    +bnF4/2Zpc/9naW//ZGdx/2Rncf9kZ3H/Zmhu/2ptd/9kZ3H/ZGdx/2BjbP9maG7/Z2p0/2Zpc/9nanT/
    +Z2p0/2dqdP9ucXv/bG51/3d6g/9qbXf/am13/2xudf9sbnX/cHJ5/3V3ff9ucHf/bnB3/25xe/9wcnn/
    +cHN9/3d6g/9zdXz/cHN9/3Byef9wc33/c3Z//3N1fP9sb3n/cHJ5/3d6g/91eIH/bnB3/3d5f/9ucXv/
    +bnB3/25xe/9ucXv/cHN9/3N2f/93eoP/dXiB/3d6g/9wc33/cHN9/2xvef94eX3/c3V8/25wd/91d33/
    +c3V8/3N2f/91eIH/c3Z//3Bzff9qbXf/Z2p0/2xvef9ucXv/bG95/25wd/9qbXf/bG51/2tud/9rbXT/
    +bG95/3V3ff9wc33/dHZ8/2tueP9sbnb/Z2p0/2ttdf9oanP/amxz/2ptd/9maG7/bG95/2dqdP9sbnX/
    +amx0/21weP9rbXb/bnF6/2xvef9zdXz/b3J8/25xe/9zdn//eXuB/36Biv9wcnn/cHN9/3F0fP9ydX3/
    +bnF6/2ptd/9laHL/bW92/3N1fP9xdH3/b3F4/3Bydv9tcHr/dXd9/3h5ff9vcXj/eHqB/25xev9ucHf/
    +am11/3Fzev91d33/cHJ5/29xdf9ucHf/bnF7/2dqdP9rbnj/b3F4/3Bze/9rbnf/b3J8/3Z5gv9xc3v/
    +a253/25wd/9ucHf/d3qD/29xd/9sb3n/bXB6/3J0e/9tcHr/am13/2ptd/95e4H/cHJ5/2psc/9ucXv/
    +cHJ5/25wd/9sbnX/bnB3/2dqcf9zdXz/c3V8/25xe/9qbXf/am13/2Zpc/9ucXv/YmVu/2Zpc/9kZ3H/
    +am13/11gaP9rbnj/bG93/21wd/9tcHr/am13/2xvef9sbnX/a253/3R2fP9tb3P/dXd+/2lsdv9pbHX/
    +Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/bG51/2xvef9zdn//amxz/2xudf9qbHP/
    +bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/bG95/25xe/9maXP/bG51/2xudf9ucXv/
    +bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/29xd/9zdXz/cnR7/2tudv9sb3n/bnF7/25xe/9qbXf/
    +c3V8/3J0e/9wc3v/b3F4/3N1fP9wc33/e32D/3t9g/9+gYr/eXuB/3N1fP9sbnX/bnB3/2xudf9wcnn/
    +bnF7/3Bzff9qbXf/bG95/2Zpc/9sb3n/bnF7/3R2e/9ucXn/bG51/3Fzev9ucHf/Z2p0/25xe/9zdn//
    +b3J8/3Byev9rbXT/aGtx/2dqcf9kZ3H/ZGdx/2Zobv9nanT/am13/2Zpc/9kZ3H/Zmhu/2xvef9nanT/
    +bG51/2Zpc/9qbXf/bnF7/2ptd/93eoP/bnF7/2xudf9ucHf/c3V8/3N1fP9zdXz/bnF7/3N2f/9zdn//
    +c3Z//3N1fP93eoP/bnF7/25xe/9sb3n/bnF7/2xvef9sb3n/Z2px/2xudf9zdXz/cHJ5/2xudf9zdXz/
    +bG51/2ptd/9sb3n/bG51/2ptd/9qbXf/am13/2dqdP9sb3n/ZGdx/2dqcf9nanH/bnB3/2ptd/9maXP/
    +bG95/2ptd/9qbXf/bnF7/2ptd/9qbXf/Z2p0/2Zpc/9qbXf/bG95/2xudf9sb3n/bnB3/25wd/9ucXv/
    +bnB3/3V3ff91eIH/dXd9/3Z4fP9ucHf/bG92/2hrcv9xc3r/a252/25wdv9ydX7/cHJ5/3Bzff9sb3n/
    +b3J5/2tudv9xc3r/bG51/3V3e/9ydHv/c3V8/3N1fP9ucHf/bW92/3V3ff91eIH/amxz/2xudf9tb3b/
    +b3F2/25weP9tb3b/amxz/29xdf91d33/c3V8/2xvef9wcnn/bnF7/3l7gf95e4H/cHJ5/3d5f/9ucHf/
    +bnB1/2lsdf9ucHr/bG95/25xe/9qbXf/am13/3N1fP9sbnX/bW93/2xvef9vcXj/ZWhy/2ptd/90dnz/
    +bnB1/2psc/9sbnX/bG51/3d5f/9tb3T/bW92/21vdv9rbnf/a254/2xudf9sbnX/eXyG/3Byef9sbnX/
    +bnB3/25wd/9sbnX/bG95/2xvef9nanH/dXd9/3Z4fP91d33/cHJ5/3Byef9ucHf/c3Z//2psc/9zdXz/
    +cHJ5/3N1fP9maG7/cHJ5/3Byev9wcnr/b3J7/2xudf9wcnn/bG51/2tud/9ydHv/bG52/3d5f/9tcHj/
    +cHN8/3N2fv91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/bG51/25wd/9zdXz/d3l//2ptd/9qbXf/
    +bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/
    +bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9tb3b/cHN9/3F0fP9xc3r/cnV+/3d6g/9zdn//
    +cHN9/3R3gP90dn7/b3J6/25wd/9ucXv/cHJ5/3l7gf93eX//e36H/3d5f/91d33/bG51/25wd/9sb3n/
    +cHN9/3N1fP9zdXz/bnB3/3V3ff9sbnX/cHJ5/3Byef9wc3r/aWx2/2VocP9kZ3H/ZGdx/11gav9kZ3H/
    +Zmlz/2dqc/9rbXb/ZWhy/2ZpcP9nanH/bG95/2ptd/9sbnX/c3V8/3Byef9zdXz/bG51/2psc/9qbXf/
    +Z2px/2psc/9maXP/Z2p0/2xvef9sbnX/eXuB/3Byef9ucHf/bG51/3Byef9wcnn/bnB3/2xudf9ucHf/
    +bG95/2xudf9nanH/bG95/2dqcf9nanT/ZGdx/2Zpc/9sbnX/bG51/2Rncf9nanT/bnF7/2xvef9qbHP/
    +dXd9/2ptd/9nanH/bG95/2dqcf9ucXv/bG95/25xe/9wcnn/bnF7/2xvef9qbXf/bnF7/3V3ff91d33/
    +b3F1/3Byef9wcnn/bnB3/25xe/9sbnX/am13/2psc/9qbHP/bnB3/25wd/9sbnX/bG51/3N1fP9sbnX/
    +bG95/21vc/9zdXz/dXd9/25xe/9wc33/am13/2dqdP9dYGn/aWx1/2ptdf9sbnP/b3F4/2xudf9ucXv/
    +bG51/29xeP9rbXX/bnF5/21wef9ydHv/dHZ8/3R2ff9wcnn/bW92/2xvef9wc33/d3qD/2xudf9rbXX/
    +a253/3Fzev9vcnv/b3F4/2xvef9vcXX/c3V8/3Byef9ucHf/bW9z/2xudf91d33/c3V8/21vc/94eX3/
    +b3F1/25wdf9qbHL/cnR7/3N1fP9zdn//bnF7/25wd/9zdn//bG95/3Byef9vcnr/cXN5/21vdv9ydHv/
    +dniB/3J0e/9wc3z/cHN9/3N1fP99gIn/b3F4/21wef9ucHf/bnB3/25wd/9nanT/bG51/3l7gf9ucXv/
    +bG51/25wd/9ucHf/Z2p0/2ptd/9qbXf/ZGdx/2xvef9ucXv/Zmlz/2Zpc/9nanT/Zmlz/2xvef9qbXf/
    +c3Z//3V3ff91d33/amxz/3Fze/93eX7/dXiC/3N2f/9wc33/eXuB/3J0e/9vcnz/cXR+/2ttd/91eH7/
    +bG92/3Byef90dnz/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/
    +bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/
    +bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/aGty/2hrdf9tb3b/Z2py/2lrcv9sb3n/
    +Z2p0/2Zobv9rbnj/bG95/2dqdP9jZm//ZWhy/2Rncf9sb3n/Zmlz/3Bzff9zdXz/dXiB/3Byef93eoP/
    +cHN9/3l8hv97fYP/e32D/3V3ff99foH/dXd9/3l8hv95fIb/e3yB/3l8g/9ydH3/b3J7/25wd/9qbXf/
    +bnB3/3Fzev92eH7/eXp//3p8gv92eH7/dXd9/3d6g/93eoP/dXd9/3d6g/9zdn//d3qD/3N1fP9wcnn/
    +c3Z//3N1fP9zdn//c3V8/3Bzff91eIH/bnB3/3d6g/9wc33/bnF7/3Byef9wc33/dXd9/2ptd/9sb3n/
    +bW9z/25wd/9ucHf/bnB3/3h5ff9ucHf/dXd9/2xvef9ucHf/bW9z/25wd/9nanH/bG51/3Z4fP91d33/
    +b3F1/3Z4fP9vcXX/bW9z/3N1fP9qbXf/cHN9/2xvef9wcnn/dXd9/3Byef9sb3n/amxz/25xe/9wc33/
    +bnF7/2psc/9qbXf/Z2p0/2Zobv9maXP/ZGdx/2dqcf9kZ3H/Zmlz/2psc/9qbXf/amxz/2psc/9zdXz/
    +bnB3/2xudf9sbnX/bnF7/3N1fP9zdXz/dXd9/3N1fP9sbnX/ZWdt/2psdv9rbnj/a252/29yfP9sb3n/
    +cHN9/2xvef9wcnn/aWxz/3Byef9tcHn/dHZ8/3R2fP9zdXz/cXN5/21wef9vcnv/dXiB/3t+h/9zdXz/
    +b3F4/21wef9xc3r/am12/2hrdf9maXP/am13/25xe/9sb3n/bG51/2ptd/9qbHP/cHN9/3Bzff9sbnX/
    +c3V8/21vdv9wcXf/c3V8/3t9g/97fYP/fX6B/3l7gf92eHz/foCG/3h5ff91d37/dHZ8/3Fzd/9ucHj/
    +cXN6/3d6gv9vcnv/bG95/3Bzff9wc33/en2G/3N1fP9xdH3/cXN5/25xeP9xc3n/bG51/29xdf91eIH/
    +bnF7/2dqdP9sbnX/bnB3/2psc/9sb3n/bnF7/2Zpc/9sb3n/c3V8/2xvef9wcnn/dXd9/2xudf9zdXz/
    +Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dHd//3N0e/9tcHT/bnB3/3N1fP9qbHP/bG95/3N1fv9rbXf/
    +dXd9/21vdf9zdXz/dXd8/3N1fP9sb3n/Z2p0/3V3ff91d33/bnB3/2xvef9sbnX/bnB3/25wd/91d33/
    +bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/
    +bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/bnB3/21vdP9wcnr/cXN5/21vdf9ucHf/
    +c3Z//3N1fP9sb3n/cnR7/3N1e/9rbXT/aWx2/2xudf9nanT/c3V8/2xvef91d33/dXd9/2Rncf9kZ3H/
    +Zmlz/2Jlbv9nanT/Z2p0/2Zpc/9kZ3H/Zmlz/2Rncf9qbXf/bG95/25wev9xdHz/bW93/29xef9sbnX/
    +am13/25wd/9vcXn/cnR7/3ByeP9ydHv/bnB3/2xvef9zdn//bG95/25wd/9wcnn/cHJ5/3Bzff9qbXf/
    +bW9z/25wd/9tb3P/bnB3/25wd/9sbnX/cHJ5/21vc/91eIH/cHN9/3N2f/93eoP/d3qD/3d5f/9wc33/
    +cHJ5/21vc/9ucHf/cHJ5/21vc/91d33/b3F1/3V3ff9sbnX/bnB3/29xdf9sbnX/Zmhu/2xudf91d33/
    +c3V8/29xdf93eX//b3F1/2xudf9ucXv/Z2p0/3Bzff9sb3n/bG95/25xe/9ucXv/bG95/2psc/9wc33/
    +cHN9/3N1fP9sbnX/cHJ5/3N1fP9sb3n/bnF7/25wd/9ucHf/bnB3/2xudf9vcXX/bnB3/2xvef9sbnX/
    +d3qD/3Bzff9zdn//c3Z//3d6g/95e4H/dXiB/3l7gf91eIH/am13/2ptd/9xc3r/bnB2/2xudf9ucHf/
    +bW9z/3V3ff9ucHf/cHJ5/2lsc/9ucXv/b3F6/3V3ff90dnz/b3J7/3Byev9vcXj/b3F4/3V3ff93eX//
    +bG51/2hrdf9rbnj/bXB4/2Zpc/9rbXT/ZGdx/2dqdP9wcnn/am13/2dqcf9nanT/ZGdx/2Zpc/9maXP/
    +Zmhu/2dqdP9jZm//aGpx/2hqcv9wcnr/cHJ5/3Byef9ucHf/bnB3/2xvef9ucHf/bW91/25xe/9qbXb/
    +Zmlz/2lrdP9wcnr/bXB0/2dqcf9sbnX/bW9z/3Z5gv9tb3b/a254/21vd/9tb3b/c3V8/2xudf9vcXX/
    +d3qD/3V3ff9ucHf/cHJ5/3Bzff9qbXf/bnF7/25wd/9qbHP/c3V8/3Z4fP9ucHf/cHN9/3Z4fP9ucHf/
    +bnB3/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/21wev9xdHr/bnB4/25wd/91d33/bXB3/29xef9ydX7/
    +a213/3h6fv9vcXf/cnV9/3h6gP93eoP/c3Z//25xe/9+gIb/foGK/3l7gf97fYP/d3l//3t9g/93eoP/
    +foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/e32D/3N1fP9wcnn/cHJ5/25xe/9zdn//
    +c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/dXiB/3Bzff9wcnn/bXB6/3Fze/9ucXr/
    +bnB3/3N2f/9ucXv/bG95/3BzfP9xdH3/bnF5/2xvef9ucHf/cHJ5/3h5ff9wcnn/foCG/3t9g/9qbXf/
    +am13/3Bzff9qbHP/bG95/2xvef9nanT/amxz/2xvef9maXP/bnF7/3Bzff9wc3z/cXR+/25xeP9vcnz/
    +c3V8/2ptd/9qbXf/b3F5/3J0ev9vcXf/am13/2dpc/9nanT/cHN9/2xudf9sbnX/cHN9/25xe/9wc33/
    +Zmlz/2xudf9qbXf/amxz/2dqcf9kZ3H/Zmhu/2dqcf9qbHP/cHJ5/2ptd/9qbHP/am13/2Zpc/9sb3n/
    +amxz/2ptd/9nanT/amxz/25xe/9qbXf/c3V8/2psc/9sb3n/Zmlz/2psc/9qbHP/amxz/2Jlbv9maXP/
    +bnF7/2xvef9sbnX/dXd9/2psc/9sbnX/cHJ5/2xudf91d33/bnB3/2xvef92eHz/bnB3/25wd/9tb3P/
    +eHl9/3N1fP9zdXz/cHJ5/3N1fP9zdXz/bnF7/25xe/9sb3n/bW9z/2xudf9ucHf/bG95/25wd/9wcnn/
    +b3F1/3Byef9qbXf/bG95/2ptd/9wc33/cHN9/2xvef9wc33/bG95/2Jlbv9hZG3/bG51/21wef9qbXf/
    +bnB6/3Byef91eIH/bnB3/2xvef9naXP/cHJ5/29xef91d37/dHZ9/25xev9vcXr/bnF4/3Byef91d33/
    +d3l//25wd/9vcXj/cHJ5/3F0e/9ucHf/b3F4/25wd/9wcnn/dXd9/25wd/9qbHP/bnF7/3Byef9sb3n/
    +bnF7/2xudf9wc33/b3F1/21vdv9sb3b/dXd9/25wd/9zdXz/bnB3/2xudf9sbnX/bW9z/2hrdP9wc3v/
    +bXB6/2ptdP9qbXT/c3V8/21vdf9iZW7/ZGdx/2dqcf9ydX7/a211/2tueP9rbnj/bXB3/3N1fP9sbnX/
    +bnB3/3t9g/91d33/bnB3/25xe/9zdn//am13/3Bzff9sb3n/bG95/3Bzff91d33/cHJ5/3N1fP91d33/
    +bG51/3Byef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9xdH7/dnh+/3F0fv9wcnn/dXd9/2xudf9vcXf/
    +dHZ8/21veP91d37/bW92/21wev90dnz/c3V8/21vc/9ucHf/dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/
    +bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/
    +cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/eXyG/36Biv91eIH/dHeA/3Fze/9wc3v/
    +a252/2hrcv9maXP/YmVu/2Zobv9nanP/bG94/2xudv9pbHb/cHJ5/2ptd/91d33/bG95/36Ahv97fYP/
    +am13/2xudf91d33/amxz/3V3ff9wc33/bG95/2xudf9zdn//Z2p0/3N2f/91d33/cnR7/3Byef9ucHf/
    +cHJ5/2xvef9maXP/amxz/29xef9vcXj/cHJ3/25wev9qbXf/Zmlz/3Bzff9sbnX/am13/3Bzff9ucXv/
    +cHN9/2ptd/9sbnX/bG51/2psc/9qbHP/Zmlz/2dqcf9nanH/bG51/3V3ff9wc33/bG51/3N1fP9sb3n/
    +c3V8/2xudf9wcnn/am13/21vc/9zdn//cHN9/3d5f/9vcXX/dXd9/2psc/9ucXv/bnF7/25xe/9nanH/
    +bG95/3V4gf97fYP/c3V8/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3N2f/9wc33/eXuB/3Bzff9ucXv/
    +bG95/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/25wd/9qbXf/am13/21vc/9qbXf/am13/2xvef9sbnX/
    +cHJ5/25wd/9wcnn/cHJ5/25wd/9wc33/dXd9/3l7gf91d33/dXd9/3Bzff9sb3n/am13/3Bydv9tb3b/
    +am13/2ptd/9sbnX/dXd9/25wd/9wcnn/Z2px/3Byef9ucHn/dHd//3d4ff9vcXj/cXN5/2tud/9sb3n/
    +c3V8/3V3ff9sbnX/aGt1/21wev9tb3j/Zmlz/2hrdf9maXP/cHN9/3Bzff9qbXf/Z2p0/2xvef9ucXv/
    +bG51/25xe/9qbHP/bG95/2xudf9ucXr/aWx0/3J0e/9sbnX/cHN9/25xe/9nanT/bG95/2xudf9sbnX/
    +c3V9/3R2fv9tcHr/cHJ3/3R2fP9wcnn/am13/2dqdP9ucHf/dnmC/25xe/9ucXv/bnF7/25xe/91d33/
    +bnB3/29xdf93eX//cHN9/2ptd/9qbXf/cHN9/2Rncf9sbnX/Z2p0/2Rncf9nanT/bG95/2Zpc/9maXP/
    +bG95/2dqcf9qbXf/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/a212/3N1e/9zdXz/b3F1/3d5f/9tcHr/
    +cXR8/3Z4gP9ucXr/dnh//25wdf9ucHf/dXd9/2xvef9qbXf/bG51/3V3ff93eX//bG95/3Byef9ucHf/
    +bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX//am13/3Bzff9wc33/bW9z/2ptd/9nanT/
    +am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/Z2px/2ptd/9zdXz/bG95/2xvef9sbnb/
    +cHJ6/21wev9sb3n/bnF7/2xvef9ucXv/dHeA/3Z4f/9xdH3/am13/3Bzff9zdXz/e32D/3V4gf+Fh43/
    +f4KM/25xe/9sb3n/d3l//2xvef93eX//cHN9/3Bzff9zdXz/dXiB/2xvef94eoH/dnh+/25xev9ucXr/
    +aGp0/2dqcf9nanT/XWBq/2Rncf9qbXb/bG93/21vd/9ucXj/bG51/2psc/9zdXz/Z2p0/2xvef9sb3n/
    +bnB3/25wd/9qbXf/am13/2psc/9sb3n/bG51/2ptd/9sbnX/am13/2xudf93eX//eHl9/3Byef91eIH/
    +c3Z//3d5f/9ucHf/c3Z//25wd/9ucHf/c3Z//25wd/93eX//bnB3/3Z4fP9nanH/bnB3/29xdf9ucHf/
    +Z2px/2psc/91d33/c3V8/2psc/91d33/amxz/2psc/9sb3n/ZGdx/2dqdP9maXP/Zmlz/25wd/9qbXf/
    +Z2p0/2ptd/91d33/bnF7/25xe/9tb3P/dXd9/3Bzff9ucXv/cHJ5/25xe/9ucHf/bnB3/3Byef9zdn//
    +c3Z//3V4gf9wcnn/eXuB/3l8hv91eIH/e32D/3t+h/97fof/eXuB/3l7gf93eoP/bnF7/2ptd/9xc3r/
    +cnR7/2xvd/9tb3f/bnB3/3N1fP9sb3n/cHN9/2dqdP9wc3v/cXN8/3V3ff92eHz/bnB6/3Bye/9tcHj/
    +bnB3/3V3ff94eX3/b3F1/21vdv9tcHr/bnF5/2tueP9qbXf/Z2p0/3N1fP9sb3n/amxz/2dqdP9sb3n/
    +bG95/2psc/9nanT/Z2px/2xvef9maG7/Zmly/2Rncf9ucXr/bG51/3Bzff9ucXv/Z2p0/25xe/9sbnX/
    +Z2p0/2hrdf9oa3X/ZWhv/2Rmbv9maXP/a254/2dqdP9iZW7/Z2px/29xeP9maXP/aWx0/2ptd/9rbnj/
    +cHN9/2ptd/9qbXf/d3qD/3N1fP9sbnX/bnB3/3Byef9sb3n/bnF7/3Byef9ucHf/bG95/3V3ff9sb3n/
    +bnB3/3Z4fP9vcXX/dXd9/2BjbP9sb3n/cHN9/2xvef9tb3P/b3F4/21wev9xdH3/bnF7/2xvef93eX//
    +bG95/2xud/90dnz/bG94/3Bzff9rbnb/bG95/3V3fP9ucHf/bnB3/2psc/92eHz/dXd9/25xe/9ucXv/
    +bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/d3qD/2xvef9wc33/cHN9/25wd/9ucXv/
    +bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/
    +bG51/29xev9rbnj/cnV+/3Bzff9ucXv/bG95/3J1fv91dnv/cHN6/2hrdf9oa3X/Z2p0/3V3ff9ucHf/
    +fX6B/3d5f/9wcnn/bnF7/3Z4fP9ucHf/dnh8/2xvef9ucXv/Z2p0/2ptd/9kZ3H/bnF7/3Byef9pa3T/
    +bG95/2dqc/9sbnX/am13/2dqcf9qbHP/bnB3/21weP9tb3f/cnR7/25wd/9nanT/cHN9/2Zpc/9qbHP/
    +amxz/2ptd/9ucXv/Z2p0/2xvef9qbXf/bG95/2xudf9nanT/Z2p0/2xudf9maXP/bnB3/2xvef9maG7/
    +am13/2xvef9ucXv/Zmlz/2dqdP9maG7/Zmhu/2ptd/9nanH/c3V8/2psc/9zdXz/ZGdx/2ptd/9qbHP/
    +amxz/2Jlbv9maXP/bnF7/3N1fP9nanH/cHN9/2psc/9sbnX/bG95/2psc/9sb3n/am13/2xvef92eHz/
    +cHJ5/3Byef9ucHf/dXd9/25wd/9wcnn/bG51/3N1fP9wcnn/cHJ5/29xdf9vcXX/bG51/25wd/9sb3n/
    +bnF7/2xvef9ucHf/bG51/25wd/9zdXz/bG51/3Bzff93eX//d3l//3V4gf9wc33/c3Z//2dqdP9nanT/
    +b3J7/21wef9sb3f/bW91/25wd/9zdXz/bG95/3N1fP9qbHP/cHJ5/3Bzff91d37/eHl+/3V3ff9ydHn/
    +bnF6/3Byef91eIH/eXuB/3N1fP9xc3r/cnV+/25wef9ucHf/bG51/2xudf9wc33/dXd9/25wd/9sbnX/
    +c3V8/3V3ff9tb3P/bnB3/21vc/9ucXv/am13/21vdf9qbHH/cXN6/21vc/92eHz/c3V8/29xdf9ucXv/
    +am13/2xvef9xdHv/cHN8/21vdv9tb3j/b3J8/3R3gP9qbXf/am13/25wd/91d3v/cXN3/3Byd/9tb3j/
    +bG95/3h5ff9ucHf/bnB3/3l7gf9zdXz/amxz/2ptd/9wc33/Z2p0/2ptd/9qbXf/Zmlz/2xudf9wc33/
    +bG51/2psc/9wc33/amxz/25xe/9sb3n/dXiB/3t9g/91eIH/dXd9/3h6gP91eH//dnh+/25xev9qbXf/
    +cHN9/2hrc/9sb3f/dnh9/21wev90doD/cnV9/3V4gf96fIL/d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/
    +bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/
    +bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/
    +dHZ9/21vdv9xc3r/cXN7/3Byef9wc33/cHN9/29ye/9ydX7/cnR7/21vdv9sbnX/cHJ5/2dqcf94eX3/
    +bG95/3t9g/91d33/cHJ5/25wd/92eH7/bnB3/3h5ff9wc33/cnV+/21wd/9rbnj/bG95/29yfP91d33/
    +bnB4/21wef9rbXf/bG51/2ptd/9kZ3H/Z2p0/2xveP9tcHj/a253/3Fze/9sbnX/Z2px/3R2fP9qbHP/
    +bG51/25wd/9wc33/cHN9/2xudf9wc33/bG51/2ptd/9sbnX/Z2px/2xudf9qbXf/bnB3/3Z4fP9wc33/
    +bG95/3V3ff9zdn//c3Z//25wd/9ucXv/bnB3/25wd/9zdn//bG95/3V4gf9ucHf/dXd9/2ptd/9zdn//
    +bnB3/3Byef9nanT/bnB3/3V4gf93eoP/bG95/3V3ff9tb3P/bG51/3Byef9tb3P/bnF7/25xe/9ucHf/
    +dnh8/3N1fP9qbXf/amxz/3Bzff9ucXv/c3V8/2xudf9zdXz/bG95/2xudf9qbHP/am13/2ptd/9qbXf/
    +am13/25wd/9ucHf/c3V8/2xvef9sbnX/dXd9/25xe/91eIH/eXyG/3l8hv93eoP/c3Z//3V4gf9ucXv/
    +bnF7/3V4gf9wcnr/cHJ3/3BzeP9vcXX/dXd9/25wd/9wcnn/bG51/25weP91d3//dnmA/3h7hf9zdoD/
    +dnh+/29yfP9ucXv/c3Z//3d5f/9wcnn/bnB0/3Fze/9ucHj/bnB4/29xdf9vcXX/c3V8/3N1fP9ucHf/
    +amxz/3N2f/91d33/bG51/3Byef9sb3n/bG95/2xudf9sbnX/ZGdv/3Fzff9qbHP/dXd9/25xe/9nanT/
    +bG95/2ptd/9qbXf/bXB4/21wef9sb3j/am1z/25wd/9wc33/ZGdx/2dqcf9ucHf/dnd8/29xef9ucHn/
    +bG94/25wd/94eX3/bnB3/3Bzff97fof/dXd9/2psc/9sbnX/dXd9/2xudf9sbnX/bnB3/2xudf9sbnX/
    +dnh8/25wd/9ucHf/dXd9/25wd/9zdXz/YGNs/2xudf9sb3n/amxz/2psc/9rbnj/bG51/3Fzef9wcnn/
    +bG95/3l7gf9ucHf/bnB5/3d5gf9vcXj/c3Z//2xvdP9pbHX/am13/2dqdP9maG7/Zmlz/3Byef9zdXz/
    +bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/bG51/21vc/91d33/am13/2xvef9zdXz/
    +bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/
    +bnB3/3V3ff9tb3b/b3F5/25weP9vcXj/bnB3/3ByeP9ucHb/cHJ5/29yfP9vcnz/bG54/29ye/9qbXf/
    +dXiB/3N2f/9/gYf/eXyG/3h6gP93eX//fH6E/3J0e/95fIX/c3Z//3R3f/9wcnj/bXB5/25wd/9zdn//
    +dHeB/3F0fP9xdH7/bnB3/3Byef9zdXz/bG95/2xvef90dn//cnV//29yfP91d33/cHJ5/21vdv91d33/
    +bnB3/3Byef9vcXv/dnh9/3V3ff9ucXr/dnl//3N1fP9ydX//bG95/2xveP9vcXj/cXR9/29ye/94eoH/
    +d3qD/3N2f/96fIL/enyC/3t9g/91d3z/dnh//3Z4fv9zdn//enyC/3V3e/9+gIb/enyC/31+gv9zdXz/
    +eXuB/3h5ff91d33/cHJ5/3d4ff96fIP/gIKJ/3V4gf94eoH/d3mC/3V3ff93eYL/cHJ5/3Z5gv91eID/
    +cHN9/3p8gv91eID/cHN9/3N1fP93eoP/c3Z+/3Bzff9sb3n/c3Z//3Bzff9vcXX/bG51/25wd/9qbXf/
    +Z2pz/2xudf9wcnn/bnB3/3N1fP9sbnX/bG51/3V3ff9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9wc33/
    +bG95/2xudf9wcnn/b3F2/2xudf9rbnj/bG51/25xe/9qbXf/bG51/2Jlbv9pa3X/b3J6/3J1ev91d37/
    +cnV+/3Byef9sb3n/bG92/3Bzff91d33/Z2p0/2lsdf9tcHr/bG93/21wef9ucHf/b3F1/3V3ff91d33/
    +cHN9/2xvef91eIH/dXd9/25wd/9wcnn/cHJ5/3Byef9ucHf/cHJ5/2lrc/92eYD/bG95/3l7gf91d33/
    +bnB3/25xe/9sb3n/bG95/3J0e/9xc3j/bnF5/2lsdP9sbnX/bnF7/2Jlbv9maXP/bG51/3J0e/9sbnf/
    +a252/25wd/9ucHf/dnh8/2xudf9ucHf/dXiB/3Bzff9nanT/bnB3/3Z4fP9sbnX/bG51/25wd/9qbXf/
    +am13/3Bzff9qbXf/am13/3V4gf9tb3P/cHJ5/2dqdP9sb3n/c3V8/3Byef9ucHf/dHeA/3Bzff91d3//
    +dHeB/2xvef95fIb/cHJ5/25xev93eYD/bW92/3R3f/9vcXj/bW92/3N1fP9wcnn/bnB3/2xvef91d33/
    +dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/
    +cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/
    +cHN9/2dqdP9sb3n/aGt1/25weP9tcHf/cHN7/21vdv9ydXz/cHN7/3ByeP9ydHz/am12/2dqdP9rbXT/
    +ZGdx/2xvef9qbXf/c3Z//3N1fP9xdHz/b3F4/3Z4fv9ucHf/dnh9/29xeP9wcnv/bG51/2lsdP9sbnT/
    +bG93/3Byev9tb3b/cnR7/2xudf9ucHf/bG51/2dqcf9maG//bXB3/25wd/9tb3X/cnR6/29xev9rbnb/
    +cnR5/3J0ev9wcnv/cHN8/3N1fP92eID/cHN9/3J1fP9ucHj/cXR9/29xeP9vcXj/bnB4/29yef9ucHj/
    +d3h9/3BzfP9xc3r/dXd+/3J1fv91eID/bnF6/3N2gP9ucHf/b3F5/3J0e/9sbnb/dHZ7/2xvef9zdXz/
    +am12/3F0ff9sb3j/bG94/2Zobf9rbXT/cXN6/3l7gf9vcXb/cnV+/3Bze/9tcHn/cXN9/25wd/9wcnz/
    +cHJ5/2xvdv91d37/cHJ8/21vc/9ucHf/dHZ8/3J0e/9xdH3/bnB3/3J1fv9ydX3/bnB3/25wd/9ucHj/
    +bW93/2ttdP9sbnX/bG95/2xudf9pbHb/Zmlz/25xe/95e4H/c3V8/3V4gf97fof/e36H/3d5f/9wc33/
    +c3Z//25wd/9qbXf/dXd9/29xeP9sb3f/b3F3/25wd/91d33/bnF7/25xe/9sb3n/b3J7/3J1f/90d37/
    +dnh//3N2f/9ydH3/b3J7/25wd/9wc33/dXiB/25wd/9tcHr/dXd+/25xef9sb3n/bnB3/25wd/93eX//
    +dnh8/2xvef9qbXf/dXd9/3N1fP9ucHf/c3Z//3Bzff9wc33/cnV+/3N2f/9pbHT/dniA/25wd/91d33/
    +bnF7/21vc/9tb3P/bG51/2tueP9xdH7/cXN8/3Bze/9rbnj/a254/3N1fP9nanH/bG51/21vc/9zdnz/
    +b3J6/29xdv9ucHT/bnB3/3d5f/9vcXX/cHJ5/3V4gf9wc33/bG95/2xvef91d33/bG95/3Byef9wcnn/
    +bnB3/29xdf91d33/b3F1/25wd/97fYP/bnB3/3Byef9ucXv/c3Z//3d6g/9zdn//cHN9/3N2f/9wcnv/
    +cXR8/25xe/9kZ3H/dXiB/2psc/9laHL/c3V8/2hrdP90dn3/bnF5/2xvef9vcnz/bnF7/25wd/9sbnX/
    +bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/
    +dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/
    +cHJ5/3V3ff9sb3n/bW95/2hrdf9ucHf/bG52/21vd/9qbHP/bnB2/3J0e/9oanL/bG53/2hrcv9iZW7/
    +a210/2BjbP9nanT/am13/3V3ff9zdXz/cHN9/21vd/9wc33/a254/3h6gP9rbnf/bW95/2hrdf9iZW//
    +aWxz/2lsdP9tb3X/aWx2/25xe/9qbXf/bG51/2Zpc/9iZW7/YmVu/2ptd/9ucHf/bW94/29xeP9tcHr/
    +bnF7/25xef91d33/cnR7/3F0e/9wc3z/dHeB/3R3gP9ydHr/bnB2/3R2fP91d33/cXN7/3Fze/9zdn7/
    +b3J6/3J1fP9ydX3/dHZ9/3V3ff9xdH7/cnV//21weP9ydHz/bW92/29xeP9sb3f/bG51/25xef9sb3f/
    +cHN7/2ptdv9ucHn/a252/29xeP9kZ3H/aGt1/25xe/91eH//bG51/21wev9tb3b/bG53/29yfP9pbHb/
    +aWx2/2xud/9rbXX/cXR7/21wev9oa3P/a212/29yfP9vcXr/c3aA/25xe/9xdH7/bnB5/2xvdv9wcnr/
    +bnB4/2xvef9ucHj/bnB1/3Byef9vcXX/bnB4/2lsdf9wcnn/c3V8/2ptd/9sb3n/dXd9/3V3ff92eHz/
    +dXd9/25xe/9ucHf/bG95/3V4gf9zdXz/bW94/25xe/9ucHX/c3V8/25wd/9sb3n/Zmlz/21wdP9zdn3/
    +c3V7/3Z3fP9zdXz/cXN5/25wdv9sb3n/cHJ5/3V3ff9ucHf/b3F4/3R2e/9tb3b/a253/2hqdP9sbnX/
    +bnF7/2ptd/9nanH/ZGdx/25xe/9maXP/YmVu/2Rncf9nanH/Zmlz/2ptd/9oanT/Y2Zu/29ye/9nanT/
    +cHJ5/2dqdP9kZ3H/Zmhu/2Zobv9jZm//bG95/25xe/9sb3n/amxz/2ttdP9sb3n/ZGdx/2Zpc/9sbnX/
    +dHZ8/3Fzd/9tb3f/b3F2/29xdf95e4H/b3F1/3N1fP94eX3/c3V8/25wd/9ucHf/dXd9/2xudf9ucXv/
    +bnF7/25wd/9sb3n/c3V8/2xvef9wcnn/foCG/2xvef9wc3z/Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/
    +bnB3/3J0ev9ydHv/Z2px/3l7gf9ucHf/Z2p0/3l7gf9wcnn/eXuB/3J0ef9ydHv/cHJ5/25wd/9vcXX/
    +bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/
    +dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/dXiB/3d6g/9zdn//dXiB/25xe/9wc33/
    +dXiB/3V4gf9zdn//bG95/3N1fP9ucHj/cnV9/25xev9vcnv/a253/3Byef93eX//aGpu/3BzfP9tb3b/
    +aGt1/25wd/9nanT/cHN9/3N2f/91eIH/d3l//3R2fP9vcXj/d3mC/21wev93eoP/cnV+/25xe/9ydHv/
    +aGt0/3J1fv9wc33/dXiB/3V3ff97fYP/dnh8/3V4gf91d33/cHN9/2xvef9zdn//c3Z//3R3gf90dn//
    +eHqA/3p8gP92eH3/foCH/3x9gf90d4D/c3Z//3Z4gP93eoT/dHZ8/25wd/93eX//eHqA/3V4gP9zdn7/
    +dXeA/25wev9ucXr/cXR9/3R2ff9vcXr/bnF6/3J1ff9tb3b/cXN6/25wdv9ydHr/bnB3/21vdv9vcXf/
    +aWx1/3R2fP9vcnz/dHd+/3J0ff91eID/bXB6/3Fzev90d4D/eHuE/29yfP9vcnv/cHN9/3R3fv93eoL/
    +d3qC/3V4gP94eoD/d3l+/3l7gf93eX//cnV+/3N2gP93eYD/d3l+/3+Bh/93eYH/eHqA/3h6gv94e4L/
    +dXh//3l8g/91eH//dnh//3Fze/9ydHr/b3J6/3F0fv9wcnr/d3qD/3t9g/91eIH/d3qD/3t+h/97fof/
    +d3qD/3d6g/9wc33/bnF7/2xvef91d33/bG95/21wef9tcHr/bG51/3J1fP9ucHf/c3V8/25wd/9tb3f/
    +bXB6/29yev9xdH3/a253/21weP9tb3b/bG95/3N1fP93eX//bnB3/29xeP9ydHv/bW92/2tud/9qbXf/
    +bG95/3d5f/9wc33/am13/2Zpc/91d33/cHN9/2ptd/9ucXv/bG95/3Byef9ydHz/c3V7/2hqcv92eH//
    +am13/3V3ff9zdXz/bnB3/25wd/9ucXv/bW92/3Fze/9ydX3/cnR8/2xudv9vcXj/cHJ5/2dqcf9qbHP/
    +bG51/3N2f/90dnz/dHeA/3R2ff9ucXv/d3l//25wd/9zdXz/d3l//2xudf9qbXf/Z2p0/25xe/9nanT/
    +am13/2dqdP9qbHP/Z2p0/25xe/9qbXf/am13/3l7gf9tb3P/cHJ5/2BjbP9sbnX/cHJ5/2xudf9ucHf/
    +cHJ5/21wev9ydHv/dHeA/2Zpc/93eX//bnB3/2ptd/92eHz/bnB3/3p7gP9ydHr/cnV//25xe/9vcXX/
    +b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/
    +bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/
    +amxz/2ptd/9sb3n/bnF7/25wd/90dn3/bG92/25xe/9sb3n/aGt0/2Rncf9qbHT/c3V8/2RmbP9wc33/
    +cHN6/21wev9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/94eX3/bG95/3N2f/9wcnn/eXyG/3N2f/9wcnn/
    +bnB3/2ptd/9ucXv/c3Z//3Bzff9zdXz/d3qD/3Byef9ucXv/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/
    +bnF7/3N2f/96fIL/c3Z//32Aif95e4H/c3Z+/3Bzff9zdn//fYCJ/3d5f/92eH7/en2G/3p9hv92eYL/
    +dXiB/3V4gf90d4H/c3Z//3V4gf96fIL/b3F4/3Bzff9ydX7/cHJ5/3Bzff9wcnn/dHeA/25weP9ucHf/
    +bW92/2hrcf9xc3n/cHJ5/3Z4fP9ucXr/cHN8/2ptdv9qbXf/c3V8/3d5f/9qbXf/aGt1/2xudf9sb3n/
    +bG95/21wev9tb3b/a254/2hqcf9maXP/a210/2Vocf9nanT/a210/2hrcv9ucXv/a210/2Nmb/9naXP/
    +aGt0/2dqdP9maXL/Z2lw/2hrdf9kZ3D/ZGdw/2Zpc/9iZW//ZWhw/25xe/9wc33/bnB3/25wd/91d33/
    +d3l//3N2f/91d33/bnF7/2xvef9sb3n/dXd9/25wd/9ucHj/cHJ7/2xveP90dnz/bnF7/2dqdP9zdXz/
    +bG51/29xeP9ydH3/dHeA/3N1fv9maXP/a211/2xudv9qbXf/am13/3Bzff9vcnv/bXB6/2lsdP9sbnX/
    +bW92/2ptd/91d33/bnF7/2dqdP9nanT/cHN9/3N1fP9qbHP/bG95/2ptd/9qbXf/bnF6/25xe/9laHL/
    +bnF6/2Nmb/9qbXf/bG51/2Rncf9maXP/bG51/2xvef9qbXb/bG51/2ptdP9oa3P/c3V8/3Bzff91d33/
    +ZGdx/2psc/9tb3X/cXN5/29xef9sb3n/bG51/3d5f/9sbnX/cHN9/3d5f/9qbXf/Z2p0/2Zpc/9zdXz/
    +bW9z/29xdf9ucHf/amxz/21vc/9zdXz/cHJ5/3N1fP9+gIb/bnB3/3Bzff9kZ3H/bnB3/3N2f/9sb3n/
    +bnB3/29xeP9wcnn/cXN7/2xudf92eHz/cHJ5/2xudf9ucHf/eHl9/21vc/91d37/b3F4/29xeP9ucHf/
    +bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/c3Z//3+Bh/9zdn//d3qD/31+gf9zdn//
    +c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX//c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/
    +am13/25wd/9wcnn/bG51/25xe/9qbXf/bXB6/2ttdP9oa3P/aGty/2ttdf9nanT/c3V8/2dqdP9rbnj/
    +cXN7/2ttdP9kZ2//bW91/2dqdP9sb3n/cHJ5/3d5f/93eX//bG51/2xudf9wcnn/dXd9/2xudf9sbnX/
    +c3V8/25wd/9wcnn/bnF7/3Bzff9ucXv/bnB3/2ptd/9ucHf/bnB3/3Bzff9ucXv/eXyG/3V3ff93eX//
    +c3Z//3N2f/9wcnn/dXiB/3l7gf91eIH/cHJ5/3t9g/97fYP/foCG/3t9g/9ucXv/c3Z//3l7gf9wcnn/
    +eXuB/3Bzff9wc33/bG95/2Zpc/91d33/cHN9/2psc/9ucHf/bG95/3N1fP9vcXX/cHJ5/25wd/9zdXz/
    +am13/3V3ff9wcnn/bG95/2ptd/9kZ3H/bG51/25wd/9tb3P/cHJ5/25xe/9zdn//cHJ5/25xe/9zdXz/
    +c3V8/3d6g/9wc33/d3qD/3t9g/93eoP/d3qD/3t+h/97fYP/eHuF/31/hf96fIP/c3Z//3J1f/95e4H/
    +am13/3N1fP9wcnn/bG95/3R2fP9ydHv/dXd7/2dqcf9ucHX/bnB3/21vd/9ucXv/dnh8/2xudf9ucHf/
    +dXd9/3d5f/9zdXz/bnF7/2ptd/9qbXf/bG51/3N1fP9qbXf/bG95/2xvef9qbXf/dHZ8/2xvef9maXP/
    +dXd9/2ptd/9sb3j/cnR7/3F0ff9xdHz/Z2lx/21vdv9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9sbnP/
    +am13/21vdv9wc33/dXd9/25xe/9qbXf/b3F1/3Z4fP9zdn//b3F1/3Byef9wc33/bnF7/3Bzff90dnz/
    +bG93/3R3gP9nanT/bnF7/25xe/9sb3n/bG95/3V4gf92eYL/c3V9/3N2fv9vcnr/b3F4/3d5f/91d33/
    +d3qD/2xvef9ucHf/b3F4/3J0ev9ucXv/cHN8/2xvef93eoP/bW9z/3Byef92eHz/am13/2dqdP9qbXf/
    +cHN9/2xudf9ucHf/bG95/2xudf9ucHf/dXd9/3Byef91d33/fn+D/25wd/9ydHz/Z2p0/25wd/9wc33/
    +bnB3/2xvef9sb3j/cXN5/21wev9nanT/bnF7/2psc/9nanT/bG51/3h5ff9vcXX/eXuB/3Byef9vcXn/
    +bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/
    +bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/c3V8/25xe/9zdXz/bG51/2xvef9sbnX/
    +cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/bW92/2ptd/9sbnX/Z2p0/3N1fP9nanH/
    +b3F5/3F0ff9sb3f/Zmhv/29xeP9sbnX/cHJ5/3V3ff97fYP/eHl9/21vc/9sb3n/c3Z//3N2f/9sb3n/
    +bnB3/25xe/9ucHf/bnB3/3N1fP91d33/bnF7/25wd/9ucHf/bG95/25wd/9ucXv/bnB3/3l7gf9zdXz/
    +eHl9/3N1fP9wc33/bG95/3N1fP9wcnn/cHJ5/2xudf9zdXz/dXd9/3V3ff9zdXz/Z2px/29xdf91d33/
    +b3F1/3V3ff9ucHf/c3V8/21vc/9maG7/cHN9/2xudf9nanT/Z2p0/2xudf9sb3n/am13/2dqdP9nanH/
    +am13/2Zobv9ucHf/Zmlz/2Zobv9gY2z/XWBq/2dqcf9nanT/YmVu/2Zpc/9kZ3H/ZGdx/2Jlbv9iZW7/
    +ZGdx/2Jlbv9maXP/Z2px/2dqdP9wcnn/Z2p0/2Rncf9qbXf/Z2p0/2Zpc/9maXP/Z2p0/2Zobv9qbHP/
    +am13/2Jlbv9maG7/ZGdx/2dqcf9sb3n/bG95/2xvef9nanT/bG95/2psc/9sbnX/bnF7/3N1fP9qbHP/
    +am13/25xe/91d33/bG95/2ptd/9nanH/amxz/2Rncf9qbXf/amxz/2tueP9rbnj/am11/3V3e/9wcnn/
    +amxz/3d5f/9sb3n/bnF6/3F0fv9xdH3/dHZ8/2dqcv9tb3b/cHJ5/2xudf9zdXz/dXd9/21wev9tcHr/
    +aWx2/2xvef9tb3n/dXiB/3d6g/9wcnn/bnB3/21vc/91d33/dXd9/2psc/9sb3n/bG95/3Byef9qbXf/
    +bnF6/2xudf9ydH3/am13/25wd/9ucHf/bG95/3Byef9zdn//dHeA/3J0fP9tcHj/bG53/3J0e/94eoH/
    +c3Z//3t+h/9sb3n/bG95/25xe/90dn3/bnB4/25wd/9tb3P/dXiB/2dqdP9nanT/cHN9/2xudf9nanT/
    +ZGdx/2xvef9qbHP/ZGdx/2dqcf9kZ3H/Z2p0/2xvef9sb3n/bG95/3t9g/9qbXf/c3V8/2Zpc/9sb3n/
    +cHN9/25wd/9wc33/bnB3/3ByeP9zdXr/bG95/3N2f/9wcnn/bG95/2xvef91d37/b3F2/3l7f/9xc3n/
    +bnB3/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/
    +bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/
    +b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/94eoD/cXN7/29xef9vcnf/bG95/2xveP9ydX7/
    +Z2p0/25xev9xdH3/a254/2RncP9rbnj/Z2p0/2xvef9wc33/c3Z//3N1fP9sb3n/cHJ5/3Fzff9ydX7/
    +b3J8/3Byef9ydX7/cHJ5/3Bzff90d4D/cHN9/3V3ff9vcXX/bG51/2xudf9tb3P/bnB3/2xudf95e4H/
    +cHN9/3R2fP91d3v/c3V8/2ptd/9sb3n/bG51/2xudf9qbXf/cnV8/3N1fP9wcnn/am13/2Fkbf9qbHP/
    +c3V8/2xudf9ydXz/am13/25xe/9sbnX/ZWhx/3N1fP9sbnX/bG51/2xudf9sbnX/bG95/2ptd/9ucHf/
    +b3F1/3N1fP9tb3P/dnh8/25xe/9sbnX/amxz/2Jlbv9qbHP/bG95/2Zpc/9qbXf/am13/2xudf9qbXf/
    +am13/2xudf9qbXf/cHN9/2xvef9ucXv/d3l//3V3ff92eHz/dnh8/3Byef9sb3n/bnF7/3Bzff9sbnX/
    +bW9z/3V3ff9qbHP/bnB3/2xudf9tb3P/c3V8/3Bzff9sb3n/Z2p0/2xvef9qbHP/bW9z/3N1fP92eHz/
    +cHJ5/25wd/91d33/c3V8/25xe/9wcnn/am13/25xe/9qbXf/cHN9/2xvef9tcHr/bXB4/21veP9zdoD/
    +bnF7/2xudf93eX//bG51/2tueP9wc3v/cnR7/3R2ev9naXD/bnB2/3N1fP9ucHf/dXd9/3V3ff9vcXj/
    +b3F5/2xuc/9ucHf/cHJ2/3N2f/93eX//cHN9/2xvef9sb3n/dXiB/3h5ff9ucHf/c3V8/3N1fP9wcnn/
    +bG95/3J1ff9sb3f/cnN5/2Vocv9qbHP/Z2p0/2BjbP9kZ3H/Zmlz/2dqc/9rbnT/aWtz/2Zob/9pa3L/
    +cHN9/2xvef91eIH/Z2lz/2xudf9sb3f/cXR7/2ptd/9sbnX/am13/3V4gf9kZ3H/am13/3Byef9maG7/
    +ZGdx/11gav9nanT/Zmhu/2Rncf9maG7/Zmhu/2Rncf9qbXf/ZGdx/2dqdP91eIH/YmVu/2dpc/9nanH/
    +cHN9/3V4gf9wcnn/bnF7/25xev9wcnn/c3V8/2ptd/9ucXv/am13/2dqdP9sbnP/dnd8/2tueP90d37/
    +cXN5/25xev9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/
    +cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/
    +c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/c3V8/2dqcP9sb3n/bW92/2xveP9sb3n/
    +dXd+/2ptd/9wc33/cnV+/2xvef9maHL/bXB6/2dqdP9ucXv/bnF7/3V3ff94eX3/cHJ5/21vdv90dnz/
    +bnF7/3F0fv9ydX7/cnV+/29xeP9vcnv/c3Z9/3N2gP91eIH/cHN9/3N1fP9zdn//d3qD/3d5f/91d33/
    +gIKJ/3p8gv92eYP/dXiB/3d6g/9zdX3/eHqB/3h7hP91d37/dHZ9/3p7gP97fYH/enyC/3R3f/9ucXr/
    +cnV+/3p8gv9ydHv/cnV9/3Byef90d4D/cnV9/29ye/94eoD/bnB3/29xeP9ucHf/bW92/21wev9rbnj/
    +bnB6/2tueP9xdHv/b3F4/3d4ff9vcXj/bnB3/2xuc/9iZW//bW92/2xvef9rbnj/dHeA/3J1fv9xdH7/
    +bW93/2xveP9ucHf/b3F4/3J1fv9vcnz/c3Z//3h7hf96fIL/eXyG/31+gv96fIL/enyC/3p8gv94e4X/
    +d3qC/3V3ff97fYP/d3l//3Z4f/92eHz/d3l//31+gv99foL/enyD/3d5f/96fIP/dXd9/3N2f/91d33/
    +eHl9/3Byef9wcnn/dXd9/3N1fP9wcnn/bnB3/2psc/9ucXv/bG51/2xvef9sb3n/aGt1/2lsdP9qbXX/
    +cnV+/25wd/9nanT/d3l//2xveP9rbnj/cnV9/2xvef9ucHf/X2Jr/2ttc/9tcHr/bnB3/3N2f/92eH//
    +bnF7/21wev9qbHX/bXB3/2ttdP9ucXv/d3l//2ptd/9maXP/bG51/3V4gf93eX//bG51/3N1fP9wcnn/
    +c3V8/2xvef9zdXz/am13/3J1ff9nanT/bG51/25xe/9kZmz/bG51/2xudf9ucHf/b3F1/21wd/9qbXX/
    +a253/3V3ff9ucXv/d3l//25wdP9tcHf/c3V9/3R3f/9wc33/b3F1/2xudf97fYP/bG51/25wd/92eHz/
    +b3F1/25wd/9qbHP/eHl9/3Byef9tb3P/b3F1/29xdf9sbnX/dXd9/3N1fP92eHz/f4GH/2dqdP9sb3n/
    +am13/3Bzff95e4H/dXd9/3V4gf9vcnz/c3V+/3V3ff9tcHr/bnF7/21wef9sb3j/cHJ5/3d6gP9xc3v/
    +dHd+/3R3gP9zdn//dnmC/3Bzff9zdn//c3V8/3N2f/91eIH/bnB3/3d5f/9sb3n/bnB3/25wd/93eX//
    +bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/
    +cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/bnF7/3V4gP9ucHf/cHN8/29xeP9ucXn/
    +a254/3V3ff9pbHb/cXR8/29yfP9wc3z/bG95/2xvef9qbXf/cHN9/3Byef91eIH/d3l//3Fze/9ucHj/
    +dHd+/2ptd/92eYD/cHJ6/3V3f/9tcHr/cXR8/3V3fv92eYD/dXiB/29xeP9tcHn/bnF7/3Bzff9wc33/
    +cHN9/3l8hf9ydX7/dHV7/3J0fP9ydX//cXN6/3Fzev9ydX3/b3J6/3Fzef9ydHz/dXiB/3Z4f/9vcnr/
    +bW94/25xef92eHz/b3F2/3Bze/9wc3v/c3Z//25xe/9vcXr/d3l//21vdv9xc3r/b3J6/21weP9vcXv/
    +bW94/25wef9rbnj/b3J8/21wef90dn3/cXN7/3Bze/9tb3X/ZWdu/2Zpc/9pa3P/Zmly/2tueP9rbnb/
    +bG92/2Vocf9sbnX/aWxz/2dpb/9oanT/a210/21veP90dn3/b3J5/3R2fP9zdXr/bnF4/29ye/9ucXv/
    +b3J8/3BzfP9xc3r/cXR9/3Bye/9ydHv/cXN9/3J1ff93eX//e32D/3R3f/9xdH3/c3Z//3F0ff9vcnz/
    +dXd9/3d5f/9ucHf/cHJ5/3Byef9wcnn/cHJ5/3V3ff9sbnX/cHJ5/21vc/9ucXv/bnF7/2xvef9sb3j/
    +bXB4/3V3fv9sb3n/Z2p0/3d5f/9sbnX/a210/29xd/9tcHr/cnR6/2Rmbv9sbnT/am13/2dqdP9ucXv/
    +c3V8/2xudP9tcHr/a252/2xvef9ucXv/cHN9/3d5f/9ucXv/bG95/25xe/97fof/d3qD/25wd/91d33/
    +cHJ5/3Byef9ucHf/cnR7/21vdv9ydXz/aGty/2xudf9ucXv/ZGZs/25wd/9ucHf/bW93/25weP9ucHf/
    +bnB2/2xveP9zdXz/c3V8/3V4gf9sbnX/bG51/21wev9zdXz/am13/2xudf9qbXf/dXiB/2psc/9sbnX/
    +dXd9/2xudf9tb3P/amxz/3Z4fP9vcXX/bnB3/2xvef9ucHf/am13/3d5f/91d33/c3V8/4GDiv9qbXf/
    +cHN9/2dqcf9vcXX/c3V8/2ptd/9ucHf/bW92/3Bye/9ydX7/cnR7/3V4gf91d4D/cHJ7/3d5gP96fYf/
    +eHqB/3R2fv9ydX3/bXB5/2xvef9sbnX/bG51/2ptd/9ucHf/c3V8/2xvef91d33/bnB3/3Byef9sb3n/
    +dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/
    +d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/c3V8/25wd/91d33/bG95/3F0ff9ydH3/
    +dHd//3Bzff95e4H/c3Z+/3d6gP9wc3z/b3F5/2xudf9sbnX/Zmlz/2xvef9sb3n/dXd9/3N1fP9rbnj/
    +bG52/3Z4f/9qbXb/dnh9/3Byd/9zdn3/bW93/25weP9ucXv/dHd//3V3f/90dnz/d3l//3d5f/9+gIb/
    +d3l//3R3gP96fYb/dXd+/25xe/9wc33/c3V9/29yfP9xc3r/dHZ+/29yef9zdX3/c3V9/3N2f/9xdH7/
    +bG95/3Bzev9ucHX/dHZ+/21vdv9qbXf/bG92/3Bze/9sb3f/bG94/3R2fP9tb3P/cnR5/3F0e/9ucHf/
    +bG95/2xvef9ucHn/bnB3/3Bye/9vcXr/c3V9/3V3f/9xdHz/b3F4/2ttc/9rbXT/bnF5/2ptdf9sbnX/
    +bG50/3F0fP9qbHP/bW92/2xvef9tb3b/cHJ3/2lsdv9wc3v/dXh//2tudv90dnv/cXN6/25xef9wcnn/
    +dHZ+/25xe/9tcHr/bnB5/3F0ff9vcnv/bW94/3Byev9sb3j/a252/3J1fP9vcXn/a210/21wev9vcnz/
    +bnB3/3N2f/93eoP/cHN9/3N2f/9zdn//c3Z//3V4gf91eIH/cHJ5/3d6g/9wc33/d3qD/3l8hv93eoP/
    +dnmB/3Bzff90d4D/dXiB/3N2f/97fYP/d3l//21wev94e4P/dXd//3V4gv9vcnz/a251/3N1fP9vcXX/
    +Z2px/2psc/97fYP/cXR7/2xudf9vcXj/bnF7/3N1fP93eX//bnF7/2dqdP9ucXv/d3qD/3d6g/9ucXv/
    +cHN9/3V3ff9wc33/bnF7/3Z4fv9kZ3H/dniA/2xvef9qbHP/dXd9/2Zpc/9nanH/ZGdx/2Rncf9pbHL/
    +a213/21wev9laHL/ZGdx/2Rncf9qbXf/Z2lv/2tud/9qbXb/c3V8/25wdf9sb3n/bnF7/3V4gf9qbXf/
    +bnF7/3l7gf9sb3n/bG95/2dqdP91d33/bG95/2xvef9ucXv/bnF7/2dqdP93eX//c3Z//3N2f/+Bg4r/
    +bG51/3Byef9maXP/bnB3/3Byef9sbnX/bnB3/25weP9ucHf/amxz/25wd/9vcXX/d3h9/3N1ev9tcHj/
    +dXd7/3V3ff9wc3z/c3V9/3Byev9sb3n/bG51/2ptd/9maXP/am13/2xvef9ucXv/cHJ5/2dqcf9nanT/
    +Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/
    +Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/Zmhu/2Zpc/9kZ3H/cHJ5/2dqdP9qbXX/
    +bnB4/29yfP9sbnX/c3V8/25xe/9xdHv/bXB5/3J1ff9pbHX/bW90/2ptd/9sb3n/am13/3Bzff9ucXv/
    +cnR8/3J0e/94e4X/bG95/3l7gf9ucHf/dXiB/3Byef9ucXv/b3J8/3N1e/9wc33/cHJ6/2ttdP9zdXz/
    +c3V8/21vc/9vcnz/bnF6/25xef9ucHf/cnR7/3R2fP9ydHv/bW92/3R3ff9vcXj/c3Z//25xe/9vcnz/
    +c3V+/3F0ff94eoD/cHJ3/3R2e/9vcXX/a21z/25wd/90dnv/b3F5/3Fzev9xc3r/b3F1/3V3ff9ydX7/
    +bnB1/2xudv9ucHf/bXB1/2tueP9tb3f/bG51/21wev9vcnz/b3J7/29ye/9qbXf/aWxz/29xef9nanH/
    +bG92/2xveP91eIH/a21z/2lsdv9vcXX/b3F4/25wd/9tb3b/dHZ7/3N2ff9pbHb/d3mA/3J0e/91d33/
    +cXR+/3R3gP9zdn7/dHeA/3R3gP97fof/d3qD/3d5gP91eH//cHN8/21wev9wc3z/dnmC/3N2f/9wc3v/
    +eXuC/3V4gf9zdXz/dXd9/25wd/91d33/cHJ5/3Byef9wcnn/cHJ5/21vc/9wc33/am13/2xvef9qbXf/
    +bnF7/2xueP9rbnX/bG52/29xef9ucHf/dXd9/3N1fP9rbnj/cXN6/3Byef9zdXr/bW5z/2hqcf9wc3z/
    +cHJ5/2dqdP9nanT/d3qD/25xe/9sb3n/bnF6/25xe/9zdn//d3qD/25xe/9qbXf/bnF7/3l7gf95e4H/
    +bW9z/3N1fP9zdXz/bG51/2xudf9zdXz/Zmhu/3R2fv9ydHv/am13/3d6g/9nanT/Z2p0/2dqdP9nanH/
    +a254/21wef90dn3/bG51/2ptd/9qbXf/bnF7/2xvef9ydHv/am13/3Fze/9sbnb/am13/2xudf91d33/
    +amxz/21vc/91d33/bnB3/25wd/9sbnX/cHN9/2xvef9ucHf/bG95/25wd/9qbHP/dnh8/3Bzff9wc33/
    +f4KM/25wd/9wc33/am13/2xvef91d33/bG51/3N1fP9tb3n/bG51/2dqcf9nanT/bW92/3V3ff9zdX3/
    +cXR8/3d6hP91eIH/cXR7/3J1ff9zdXz/am13/3Byef9wcnn/Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/
    +bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/
    +bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/cHJ5/29xdf9wc33/bnF7/3l8hv9ucXv/
    +cHN9/3R3gP94eoD/cHN9/3l7gf9zdn//dHeA/3Bzff9xc3r/am13/25wd/9vcXX/cHJ5/25wd/9zdXz/
    +c3V8/2ptd/9qbXf/d3l//25wd/94eX3/bnB3/3N1fP9qbXf/b3J8/29yfP90d37/d3mC/3Z4gf9zdn//
    +e32D/3l8hv9zdXz/dXd9/25xev9sb3j/aGt0/25xe/91d33/c3V8/2xudf9zdXz/bnB3/3V3ff9sbnX/
    +bG95/25xe/9vcXj/dXd9/21vdv9zdXz/a213/2dqdP9rbnj/cXR9/3Byef9wcnn/dXd9/21vdv91d3z/
    +c3Z//25wd/9sb3n/cHJ5/2xudv9sbnb/bnF4/25wd/9zdXz/c3V8/3Fzev9wc33/bG51/2dqdP9sb3n/
    +Y2Zu/2ptd/9wcnn/enyC/2xvef9sbnX/bW92/2tud/9ucHf/aGt1/3V3ff92eHz/aGt1/3Z4f/9wcnn/
    +bnB3/25xeP9zdn//bnB3/3Bzff9ucXv/eXuC/3Z5gv9ydHv/dnh//25xe/9sb3n/bG95/3Bzff9vcnv/
    +Zmly/3J1fv9vcnv/dXd9/3d5f/9wcnn/c3V8/3Byef9zdXz/cHJ5/3V3ff9tb3P/dXd9/25wd/9wcnn/
    +c3V8/25xe/9qbXf/a210/2tueP9qbXf/bG51/3d5f/9ucXv/bG51/29ye/9ucHf/cXR8/2ttdP9laG//
    +bnF6/2ptd/9maXP/Zmlz/3R3gf9tcHn/bG93/2xvdv9wcnn/c3V8/3d6g/9sbnX/amxz/25wd/93eX//
    +d3l//25wd/91d33/dXd9/25wd/9ucXv/dnh//2hrdP91d4D/a253/2psc/9zdXz/Zmlz/2Rncf9maXP/
    +Z2px/21wev9sb3n/c3V8/25xe/9wcnn/cHJ5/3Z4fP9wcnn/dHZ6/2xudf92eH7/bW91/29xdf9ucHf/
    +eHl9/2psc/9sbnX/dXd9/2xudf9qbXf/amxz/25xe/9sbnX/b3F1/29xdf9vcXX/Z2px/3V3ff91d33/
    +c3V8/3+Bh/9nanT/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/bG95/21veP9qbHP/ZWhy/2xudf9xdH3/
    +cXN5/21vdv90dnz/c3V8/21wef9wcnr/bnB6/21wd/9ucHf/cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn//
    +bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/am13/2xudf9ucHf/bG51/3V3ff99foH/
    +Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/am13/25xe/9ucHf/c3V8/3V3ff95e4H/
    +bnB3/3Fze/9wc3v/dHeA/3N2f/93eX//c3Z//3Z5gv9zdn7/cHJ4/2hrdP9qbXf/bG51/3N1fP9ucHf/
    +c3V8/3V3ff9qbXf/Z2p0/3d5f/9sbnX/eHl9/25wd/91d33/b3F1/3Byef9wcnr/cXR8/3R3f/91eIH/
    +cHJ5/3N2f/9zdn//bnB3/3Z4f/9ucXr/bnB4/21vc/9wcnn/dXd9/3h5ff9ucHf/dXd9/25wd/92eHz/
    +bG51/3Byef9zdXz/am13/3V3ff9sbnX/dnh8/29xdf9qbHP/bG95/3Bzff9ucXv/am13/3Bzff9qbXf/
    +dXd9/3V3ff9ucHf/bnB3/3Byef9vcXX/bnB3/25xe/9ucHf/c3Z//3V4gf9zdn//c3Z//2xvef9qbXf/
    +c3V8/2dqcf9sbnX/bnB3/3d5f/9ucHf/am13/3Byef9wcnn/bnB3/2ptd/91eIH/eXuB/2dqdP93eX//
    +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/bG95/3N1fP9ucXv/aGty/3Z4fP9qbHP/Z2px/2xudf9ucXv/
    +cHN9/2Zpc/9zdn//b3F1/2xvef9sb3n/Zmlz/2ptd/9nanT/bnF7/2ptd/9qbXf/bG51/3Bzff9sbnX/
    +bG95/2xvef9ucXv/b3F4/21vdv9sbnf/bG51/2dqcf9wcnn/am13/2hrcv9ucHr/bW91/3BzfP9oanP/
    +X2Jq/2hrdf9nanH/XWBq/2Rncf93eX//bnF6/29xev9sb3j/c3Z+/3d6g/95fIb/cHJ5/2xvef9wc33/
    +eXyG/3t+h/9wc33/e32D/3t9g/91d33/cHN9/3p8gv9pbHb/e32E/3N2f/9sb3n/d3l//25wd/9vcXX/
    +bG51/2xudf9vcXj/cHJ6/3R2fv9ucXv/bG95/3N1fP91d33/bnB3/3J0e/9tcHn/dniB/25xe/9ucHf/
    +bnB3/3Z4fP9sbnX/cHJ5/3h5ff9sbnX/bG95/2ptd/9ucXv/am13/2xudf9qbXf/bG51/2Zpc/9wc33/
    +cHN9/3N1fP9/gYf/am13/25xe/9sbnX/bnB3/3Bzff9nanT/bnF7/3Byef9wc3v/a253/2dqc/9wcnn/
    +cXR9/25xeP9pbHX/Z2pz/2dqdP9laHD/bnB2/2ptd/9rbXX/bG95/2xvef9nanT/am13/3N1fP9wc33/
    +d3qD/2xudf9wc33/bG51/3V3ff9nanT/amxz/2xudf9qbHP/bG95/2ptd/9qbXf/bG95/2xudf91d33/
    +e32D/2Jlbv9ucXv/bG95/3N2f/9qbHP/c3V8/3Bzff9nanH/amxz/2Jlbv9nanT/Z2px/2ptd/9sb3n/
    +dHeA/2lsdP9sb3j/b3F3/3Byef9wcnn/cHJ5/3Byef91d3v/b3J7/3Z4fv9ucHf/bnB3/2xvef9wc33/
    +bG95/25xe/95e4H/cHJ5/2ptd/91eIH/bnB3/3d5f/9ucHf/dXd9/2xvef9ucXv/cnR7/3Bze/9xdHv/
    +cHN9/2tueP9zdXz/dXd9/29xdf92eH//bXB6/21vd/9rbXf/bnB3/3V3ff94eX3/bG95/3l7gf9zdXz/
    +e32D/3Bzff91eIH/eXuB/3N2f/97fof/c3Z//3t9g/9wc33/c3Z//3d5f/95fIb/d3qD/3N2f/93eoP/
    +c3Z//3t9g/91eIH/c3V8/2xvef9sb3n/bG95/25wd/9wcnn/bW9z/3Byef91d33/c3Z//3V3ff9ucHf/
    +bG51/25xe/9iZW7/bG51/2xvef9zdn//Zmlz/2Rncf9nanH/Z2p0/2dqdP9kZ3H/bnF7/3N1fP9nanT/
    +d3l//2ptd/9nanT/bG51/3Byef9sbnX/am13/2xvef9ucXv/am13/2Zpc/9wc33/Z2p0/2BjbP9nanT/
    +cHN9/2xvef9iZGr/bnF7/2xudf91d33/dnh8/3N1fP9wcnn/bG95/25xe/9ucXv/am13/2psc/9ucXv/
    +am13/2psc/9qbXf/cHN9/29yfP9rbXb/bG93/2tueP9sbnX/dXd9/3Byef9tb3P/cXN6/21wef9ydHz/
    +a251/2dqcv9ydHv/cHJ5/2psc/9sbnX/dnh//3Byef9sbnX/aWx1/2xvef9ucXv/dXd9/2Zpc/9gY2z/
    +Z2px/3Byef9wcnn/Z2px/25xe/9sb3n/amxz/2Zobv9rbnj/Y2Zu/3Z5gv9vcnv/bG95/3d5f/9ucHf/
    +bnB3/2xudf9tb3P/bnB3/3Fzev90dnz/c3Z+/25xe/9wc33/d3qD/3J0fP9ydHr/a254/3N2f/9tb3b/
    +am13/2xudf92eHz/bnB3/3Byef9zdXz/bW9z/21vc/9tb3P/bnB3/3Byef9ucHf/bnB3/29xdf9nanH/
    +c3V8/3N2f/9zdn//f4GH/2xudf9xc3r/ZGdx/2ptd/9sb3n/Z2px/3Byef9vcXb/b3F4/2xudf9nanT/
    +cHN9/3V4gP90dnz/dHZ9/3N1fP91d33/bnB3/3N0eP9ydHr/cHJ5/3Byef9wcnn/amxz/2xudf92eHz/
    +cHJ5/3V4gf9sbnX/bnF7/2xudf9wcnn/Z2px/2Rncf9maXP/Z2px/2dqcf9maG7/YmVu/2Zobv9maG7/
    +am13/3N2f/9ZXGX/Zmlz/2dqdP9wcnn/ZGdx/2xvef9sb3n/amxz/2ptd/9maXP/am13/2xudf9sb3n/
    +cHN9/3R2ff9oa3X/bG95/3F0ff9vcnz/dXd9/3N1fP9wcnn/dHZ8/3N2f/91d37/b3J5/2xudv9sbnX/
    +cHN9/2xudf9sbnX/dXd9/2xvef9qbXf/e32D/3N1fP93eoP/bG95/3Z4fP9qbXf/c3Z//3J0e/9ucHn/
    +cXN6/3R2fP9tb3P/c3V8/3Bzff9ucHf/c3V8/29yfP9ucXv/bnB3/3Byef93eX//e32D/3Byef97fYP/
    +cHJ5/3t9g/9ucXv/cHN9/3V3ff9wc33/eXuB/3Byef9zdn//bG95/2ptd/9sb3n/c3V8/3N1fP9ucHf/
    +bnB3/25wd/9zdXz/bG95/2ptd/9qbHP/am13/2Rncf9nanH/am13/2dqcf9nanT/am13/25xe/9wc33/
    +amxz/2xudf9zdXz/amxz/25wd/9wc33/eXyG/2xvef9ucHf/cHJ5/3N1fP9ucXv/bG95/3N2f/97fYP/
    +c3Z//36Biv91eIH/c3Z//3Bzff93eoP/c3Z//3l8hv93eoP/e32D/3l7gf9wc33/d3qD/25wd/9maG7/
    +bG51/25wd/9sbnX/ZWZq/3N1fP9zdXz/c3Z//3V4gf9wc33/dXd9/3V3ff91d33/cHN9/3Bzff9wc33/
    +dnh8/3Bzff9wc33/c3Z//3Z5gv91eIH/bXB5/3Bze/9sb3n/bG51/3V3ff9sb3n/bG51/3F0ff9tcHn/
    +c3Z+/21vd/9naXP/am13/2xvef9iZW7/ZGdx/3V3ff9qbXX/Z2p0/2hrdf9xc3r/cnV8/3Z4f/9sbnX/
    +amxz/2tudf91eIH/dHZ8/25wdf9ydX7/cnV+/2xvef9ucHf/cXR9/2dqdP90dn7/Zmlz/2Zpb/9sb3n/
    +YmVu/2Zobv9kZ3H/Zmhu/2lsc/9sbnj/dHZ9/2xvef9sbnX/bG95/3V4gf9tcHn/cHN7/2tud/92eYH/
    +b3J7/25wd/9vcXX/d3l9/3Byef9wc33/dHZ8/25wd/9sb3n/b3F1/25wd/9ucHf/bW9z/2xudf9ucHf/
    +aGt1/25xev92eH7/dXeA/36Ahv9ucHf/dXiB/2Zobv9qbXf/bG95/2Zpc/9wcnn/bW90/2tueP9sbnX/
    +Z2pz/2xvef9vcnv/cHJ7/3N1e/92eYH/c3Z//29yfP9zdX3/cnV9/3J1fv91eIH/d3qD/3N2f/9zdn//
    +foGK/3l8hv+Bg4r/cHN9/3d6g/9zdXz/d3l//3Byef9wc33/cHN9/25xe/9ucXv/bnB3/29xdf9wcnn/
    +bnF7/3l7gf9+gIb/Z2p0/3N2f/9wcnn/d3l//21vc/92eHz/dXd9/25wd/9ucXv/Z2p0/2xvef9ucHf/
    +bnF7/3V4gf94e4X/bnB3/3Fze/90d4D/cHN8/3V3ff9wc33/bnF7/3N1fP9ydHr/cnR6/21wd/9sb3n/
    +bnF7/3d6g/9ucXv/cHJ5/3N2f/9ucHf/amxz/3V3ff9vcXX/dXd9/2xvef9zdn//bXB6/3V3fv9ydX7/
    +cHN9/3N2f/90dnz/bnB3/3N2f/9wc33/bG95/3Fze/9ucXv/bXB6/2xveP9ucXv/dHeA/3p8gv9ucHf/
    +dHd9/2xudf92eHz/cHJ5/3Byef9zdXz/bG95/3N1fP9sbnX/bnF7/2dqdP9nanT/bG51/2xvef9sb3n/
    +amxz/2xudf9sbnX/dXd9/3N1fP9ucHf/bW9z/2xvef9maXP/am13/2xvef9sbnX/c3V8/3N1fP9zdXz/
    +c3V8/29xdf9vcXX/cHN9/2ptd/9wcnn/c3V8/3d6g/9sbnX/bnB3/29xdf9vcXX/bG51/2psc/9ucXv/
    +cHN9/2ptd/93eX//am13/2psc/9qbXf/bnF7/2xudf9ucXv/am13/3Bzff9ucXv/ZGdx/25xe/9nanH/
    +YGNs/2Rncf9qbXf/bG51/2RmbP9ucXv/bnF7/3Bzff91eIH/c3Z+/3R2fP9zdXz/c3V8/3Fzef9ucHf/
    +cHJ5/3Z4fP9wcnn/bnB4/29xeP9ydHz/cnR7/2xudv9wc3r/dXiB/3N1fP91d33/bnF7/29xdf91d33/
    +bnF6/3F0fv9zdXz/aGt1/25xe/9ucXv/am13/25wd/95fIX/cnR6/2xvef9rbnj/cnV8/3V3ff93eX//
    +bnB3/21vdv9wcnb/d3l9/3d5gP9tcHX/cnR7/3N1fP9sb3n/bG94/3R2ff9qbHP/eHl+/25xe/9tb3P/
    +dnh8/2Zpc/9qbXf/bG51/21vc/9sbnX/cHJ5/3V3ff9ucHf/bW9z/25wd/97fYP/cXN6/3FzfP9rbnf/
    +dHeA/25xev9qbXb/bG92/3N2f/9tb3b/cnR7/21wev9sb3n/bG95/21wdf9tb3b/bnB4/2xudf9rbXP/
    +bnB3/2lsdf9sbnj/dXd+/3J0e/97fYL/bG90/3ByeP9gY2z/bG51/2xudf9kZ3H/bG95/2xudv9sb3j/
    +bG95/2ptdv9wcnn/dHZ9/25weP9ucHj/bnB5/3N1fP9tb3b/cXN7/29ye/9ucHf/bG95/2ptd/9maXP/
    +bG95/3V3ff9wc33/dXiB/21vc/9ucXv/bG51/3N1fP9tb3P/bG51/3Bzff9qbXf/am13/25xe/9qbXf/
    +bG51/2xudf9wcnn/d3l//2Rncf9sb3n/bnF7/3V3ff9sbnX/dnh8/3V3ff9ucHf/bG51/2psc/9sb3n/
    +b3F1/25wd/9wc33/dnmC/2tud/9sb3j/bXB6/2hrdf9xc3r/a254/21wef9vcnz/cnR9/3R2fP9vcnz/
    +bnB3/25xe/91d33/b3F1/29xdf9zdXz/ZWhx/2Zpcv9wcnr/bW92/3d5gP9rbnj/cXR+/21wd/90dn3/
    +c3Z9/3J1ff91eIH/enyC/3Byef9zdn//c3V8/2xvef9vcnv/cnR7/21wev9sb3j/bnB3/3BzfP92eH7/
    +bXB6/3R2fP9rbXT/eHl9/25weP9ucHf/cnR7/3Fzev92eH3/bG94/3N1fP9ucXv/bG51/25wdf9vcXj/
    +b3F4/21vdP9sbnb/bW92/3R3gP9ucXv/bG52/2xudf9wcnn/Z2p0/2xudf9tb3P/bG51/3Bzff9zdXz/
    +dXh8/3Z5f/9ucHf/a254/25xe/9qbXf/b3J8/29yfP94eoD/bG95/25wd/9ucXv/bnF7/2ptd/9oa3T/
    +c3Z//3V4gf9wcnn/eXuB/25xe/9sb3n/bnB3/3V4gf9ucXv/d3l//25wd/92eHz/c3V8/2ptdP9zdXz/
    +am13/2Zobv9sbnX/bnB3/2ptd/9gY2z/cHN9/25xe/9vcnz/cHJ8/3J1fv9ydX7/cHN8/3Byef91d33/
    +b3F4/25weP90d37/cHJ5/3Byev9xc3v/c3V8/3J0e/9wc3v/cHN8/3N2f/9wcnn/d3qD/3N2f/9ucHf/
    +d3l//25xe/91d4D/dHeA/2ptd/9wc33/cHN9/25xe/9wcnn/en2G/3N2fv9vcnz/b3J6/29yfP92eH7/
    +dnh//3BzfP9ydHv/cnR5/3p8gv94e4T/cHJ4/3J1fv9ucXv/cHN8/3Bze/92eH7/am13/3h6gP9ucXv/
    +c3V8/3l7gf9sb3n/bnB3/3Byef9ucHf/b3F1/3Byef91d33/cHJ5/29xdf9ucHf/eXyG/25xe/9vcnv/
    +am13/3J0ev9vcXr/aGt1/2tudv9ydHz/a252/21vdv9tb3f/bW92/2xudf9rbXT/bG51/25xef9rbXT/
    +aWx2/2xvef9qbXf/amx0/3F0ev9tb3b/cnR6/2hrcf9sbnf/am13/3Byef9wc33/bG95/3Bzff9tb3X/
    +a252/2dqc/9fYWv/ZGZt/2xveP9qbXb/bG95/3F0e/91d3//b3F3/3J1ff9zdXz/bG95/3N1fP9wcnn/
    +bG51/3N1fP91d33/bnF7/3N1fP9qbHP/bnF7/2ptd/9zdXz/bG51/2xudf91d33/bnB3/3Byef9wcnn/
    +bG95/25wd/9ucHf/dnh8/4CChv9ucHf/dXd9/3N1fP93eX//bnB3/3Z4fP92eHz/bnB3/2xudf9sbnX/
    +bG51/2xudf9qbXf/bG95/3V4gP9nanT/bW95/3F0ff9vcnn/dXd9/3N1e/90dnz/c3V7/21vdv9sb3j/
    +Zmlz/2FkbP9maXP/ZGdx/2Zobv9iZW7/am13/2lsdv9rbnb/dHZ7/3Byef9zdXv/bG51/2xvef9qbXf/
    +bnF5/21wev9rbnf/b3J8/2xvef9nanH/bnF7/2xvef9oa3T/a253/25xef9tb3j/bG51/21vdv9tb3f/
    +cHN6/2lsdv9qbXf/ZGdw/3N1fP9nanT/Zmlz/2ptdv9ucHf/b3J8/21vdv9vcnz/bXB6/2hrdf9tb3f/
    +bG95/29yfP9qbHP/aGtz/2ttdP9zdX7/bnB5/21vdv9sbnX/b3J8/2hrdf9sbnX/bnB3/21vdv9xc3r/
    +dHZ8/3V3fv91d37/bnB3/2ptd/9vcnv/am13/25wd/90dnz/dXd+/2xudf9tb3b/a254/29xeP9nanL/
    +aWt1/2ptd/9sb3n/amx0/25xe/9qbHP/Y2Zv/2hrdf9ucXv/bG94/29yfP9nanH/b3F4/2tueP9oa3X/
    +cnR7/2ptd/9jZm//Zmlz/2ptd/9qbXf/YGNs/25xe/9qbXf/bW94/25xe/9ydX//cnV//3N2gP91eIL/
    +dXd//29xeP9xc3v/dHd//29ye/9tcHn/cnR6/21wev9ucHn/a253/21wev9rbnj/amxz/3V3ff9wcnn/
    +bG51/3V3ff9qbXf/b3J8/3J1fv9maXP/bnB3/21vc/9qbXf/Z2p0/3R2ff9sbnX/bW91/3Fzev9rbnj/
    +dHZ9/3F0ff9vcnz/dXd9/3F0fP90d3//dXiB/21vdv90d3//b3J7/3R3f/9wcnv/cXR9/2dqdP94eX3/
    +cHJ5/29xdf94eX3/amxz/21vc/9tb3P/am13/2xudf9ucHf/dXd9/2xvef9sbnX/am13/3d6g/9nanT/
    +a253/2VocP9rbnT/bG93/2RncP9laHD/bG93/2hqcP9pbHP/ZGdx/2hqcP9maXP/amx0/2lsc/9rbnf/
    +a210/2ttdP9tcHr/bXB5/2hqc/9ucXn/bW95/3Fzef9rbXT/cHJ5/2xvef9wcnn/cHN9/2xvef9ucXv/
    +bnF6/3Byd/9ucHf/bnB3/3Byef94eX3/c3V8/3Byev9ydHv/dXd9/3Byd/9ydXr/dHZ9/2xudv9wcnn/
    +bG51/2psc/9zdXz/eHl9/3V3ff91eIH/bnB3/3Byef9wcnn/dnh8/2xvef9wc33/d3qD/3N2f/9zdn//
    +c3V8/25wd/9ucHf/c3V8/3h5ff9/gYf/bnB3/3Z4fP9wcnn/d3l//25wd/93eoP/eXuB/25wd/9wcnn/
    +bG51/25wd/9qbHP/am13/2ptd/94e4X/Z2pz/25xef9ydHv/a254/3Bzff9rbnj/dHd+/3J0ff9tb3f/
    +cnR8/21vd/9qbHP/cHN9/3Bzff9sbnX/Zmlz/3Bzff9nanT/am13/21vef9tcHr/bXB6/2ptdf9tb3f/
    +b3F5/3Byev9sb3n/cXN6/3J0fP91d33/bG51/3N1fP9wc33/bG51/25wd/9xdHv/cnR6/25wd/9wcnr/
    +a252/29xef9sb3n/bnB5/2ttdv91eH//a253/2ptd/9rbnb/b3F4/29yfP9wcnn/bnB5/21vdv9rbnX/
    +cnR6/29xev9ydXz/b3F4/21vdv9ydHv/c3V9/2ptd/9vcXj/bW92/25wd/9tb3b/bW92/25wd/9xc3r/
    +cHN6/3R2fP93eX7/dXd//3Bzff9tcHr/dHZ8/25wd/9vcXj/b3F6/3R1fP9xc3r/cnR6/3Bzff9wc3z/
    +aWx0/2xvdv9tb3X/cHJ6/25wdv93eH3/b3F3/2ttdP9tb3f/c3V7/3R3fP90d37/b3F4/3Z3ff91d33/
    +cXN6/3Z4f/9xdH3/bXB6/3Byev9vcnz/cXR+/2hrdf9ydX//cXR9/2lsdv9sb3n/cXN8/25wd/9sb3j/
    +bnB6/21wef9nanT/am12/3N1fP9vcXn/c3V7/3N1ev9qbXf/a210/21vdv9vcXj/bnB3/29xdf9zdXz/
    +cHJ5/25wd/9wcnn/bG51/3N2f/90d4D/am13/21vc/9ucHf/b3F1/2xvef93eX//b3F4/2xudf9wc33/
    +bG94/3R2ff9xc3r/bW92/3V3fP90d33/dHZ9/3Z4fv9wcnb/b3F4/3Fzev9xc3r/c3V8/3N2f/9oa3H/
    +eHl9/3Byef9sb3n/d3qD/25xe/9wcnn/bnB3/25wd/9wcnn/cHN9/3d6g/9zdn//cHN9/3N2f/9/gYf/
    +cHN9/3N2f/9qbXf/cHJ2/3R2ff9ucHf/cHJ5/3N2f/9ucXv/b3F4/21wev9sb3n/bG95/29xeP9vcnb/
    +cHJ5/2xudv9tb3P/dXd7/3R2fP9sbnX/cXR9/25xe/9tcHr/b3F1/25wd/9nanT/Z2p0/2ptd/9qbXf/
    +bnB3/3Byef9vcXj/bG51/29xdf9ucHf/dXd9/3Byef9wcnn/cHJ5/3N1fP9ydHr/c3V6/3J0fP9tb3T/
    +c3V8/21vc/9sbnX/c3Z//3d6g/91eIH/eXuB/25xe/9zdn//dXiB/3t9g/9wcnn/dXiB/3l7gf93eoP/
    +d3qD/3d6g/9wc33/cHN9/25xe/91eIH/gYOK/2xvef91d33/cHN9/3l7gf9ucXv/e36H/3l7gf9zdXz/
    +c3Z//2xvef91eIH/cHJ5/3d6g/91eIH/foCG/25xeP9zdn//dnh//25wd/9xc3n/a253/3Z4fv9zdXz/
    +b3F4/3Z5gf91eIH/c3V+/3t9g/95e4H/c3Z//3N1fP93eoP/bnB3/3F0ff9wcnn/cnV+/3d6gv9ydX7/
    +cHN9/3d5f/95fIL/dXiB/3h6gP95e4H/foCG/3V3ff97fYP/e32D/3N2f/92eYL/eHqA/3d5gP9ydX7/
    +dHeA/2ttd/9ucXr/cHJ8/3Fzev9xc3v/eXuC/3J0e/9ucHj/b3F5/3R2fP9xc3r/dHZ8/21veP9sbnX/
    +aGt1/3N2f/9sb3n/cXN7/2lsdv9qbXT/cnR7/25xe/9rbnj/b3J7/2xueP9tb3f/bXB6/29xev9tcHj/
    +cXN6/3J0e/9zdXz/dHZ9/3BzfP9xc3r/aGt0/21wef9qbHT/a210/2hrdf9sbnf/bG52/25xev9tcHr/
    +bW94/2hqc/9ucHf/aGty/2hrdf9pbHP/b3F6/2psdf9oanP/am13/25xe/9sb3f/bW94/2dqdP9ucXn/
    +bXB3/3FzeP9vcnj/bnF7/2hrdf9sbnX/bnB4/3F0e/9laG//bnB4/2xvef9sbnX/bG51/3N1fP9sbnX/
    +bG95/25xe/9wcnn/bW9z/2xudf9zdXz/bnF7/25xe/9wcnn/a253/2tud/9tb3P/c3V8/29xdf9sbnX/
    +bG95/3Bzff9sbnX/bnB3/2psc/9zdn//eXuB/25wd/9ucHf/cHN9/25xe/9ucHf/eXuB/2xvef9qbXf/
    +c3Z//25xe/91d33/cHN9/2xvef92eHz/c3Z//3Byef91d33/b3F1/3Byef91d33/cHJ5/25xe/9ucXv/
    +Zmhu/3N1fP9qbXf/bG51/3V3ff9nanT/Z2p0/2psc/9qbHP/amxz/3Bzff93eX//am13/25wd/9qbXf/
    +eXuB/2ptd/9wc33/am13/2xudf9ucXv/Z2p0/2dqcf9qbXf/amxz/2psc/9iZW7/bG51/2dqdP9sbnX/
    +bG51/25xe/9qbXf/am13/3Bzff9zdXz/Zmlz/2xvef9ucXv/amxz/2xudf9sbnX/ZGdx/2Rncf9kZ3H/
    +YmVu/2Zpc/9oanP/bG53/2ptd/9vcXj/c3Z//3N2f/9wc33/bnF7/25xe/9zdn//b3J7/3Fze/9tcHr/
    +bW91/3Bzff9tb3P/amxz/3V3ff91d33/dXd9/3h5ff9ucHf/b3F1/25wd/92eHz/bnB3/3N2f/92eHz/
    +dXd9/3Byef9zdXz/bnB3/25wd/9ucHf/dXd9/3+CjP9wcnn/c3Z//25xe/93eX//bG95/3t9g/94eX3/
    +bnB3/3Bzff9qbXf/c3Z//2xvef9wc33/cHJ5/3t+h/9ucHf/cHN7/3R3gP9ucHf/dXiB/25xe/95fIb/
    +cnV+/29ye/91eIH/cHN9/25wd/9zdn//c3Z//25wd/9sbnX/cHJ5/2xvef9ucHf/bG51/3Byef91d33/
    +bnB3/29xdf9zdXz/c3V8/2xvef91d33/cHN9/3Bzff9qbXf/cHJ5/3N1fP9ucHf/cHJ5/3Byef9zdn//
    +c3Z//3N2f/9qbXf/bXB5/3N2f/9wc33/cnV+/3d6g/90d4D/c3V8/3N2f/96fIL/enyC/31/hf90d4D/
    +cnV+/29yfP95fIX/dHeA/3h6gP9ydX7/cnV+/3Z4fv9tcHn/am13/3R2fP9ucHf/b3F1/3J1fv9zdX7/
    +bG95/3J1fv90dnz/d3l9/3h5ff9xc3r/dHZ9/2xudf9wcnr/bnB3/21wev9rbnj/b3F5/3Bzev9zdX7/
    +dnmC/3J1f/9sb3n/dnh+/3Byev91eIH/b3J8/3R3f/9ucXv/b3F5/3F0fv91eIH/cXN5/3J1fv9wcnr/
    +cXR9/3J0e/90d4D/cXN7/3V3ff9wc3v/cHJ5/3N1ff92eH//am11/3N1ff9ydHz/bG51/2xudf91d33/
    +bnB3/3Byef9ucXv/c3Z//25wd/9sb3n/dnh8/25xe/9wcnn/c3V8/2xudf9nanT/bW9z/3Byef9vcXX/
    +b3F1/3Bzff91d33/bnB3/25xe/9qbXf/c3Z//3h5ff9sbnX/bG51/2ptd/9sb3n/am13/3N1fP9sbnX/
    +Zmlz/2xvef9qbXf/bG95/2dqdP9kZ3H/bnB3/2ptd/9maXP/Z2p0/2Rncf9maXP/Z2p0/2Zpc/9nanT/
    +ZGdx/1xfaP9kZ3H/ZGdx/2Rncf9ucHf/YmVu/2Jlbv9maG7/ZGdx/2psc/9nanT/bnB3/2Zobv9kZ3H/
    +Z2px/3d6g/9nanT/cHN9/2psc/9qbXf/dXd9/2xudf9nanH/bG95/2xudf9tb3P/Z2px/25wd/9ucHf/
    +bG95/25wd/9zdn//c3V8/3Bzff93eoP/eXuB/25xe/93eoP/d3qD/3Byef9wc33/cHN9/2xudf9vcXX/
    +c3V8/21vc/9sbnX/cHJ5/29xeP9tb3b/cHJ5/3V4gf91eIH/c3Z//3N2f/9ucXv/d3l//3Bye/90dnz/
    +cXN9/2xvef9zdn//bnF7/25wd/93eX//eXuB/3d5f/93eX//bG95/3Byef9vcXX/dnh8/25wd/9zdXz/
    +dnh8/3V3ff9zdXz/cHJ5/29xdf9sbnX/cHN9/3V3ff+Agob/bW9z/25xe/9sbnX/dXd9/21vc/93eX//
    +dnh8/21vc/9sbnX/Z2px/3Bzff9sb3n/cHJ5/25wd/93eX//bW92/29yfP9xc3v/aGt1/2xvef9kZ3H/
    +dXd9/2xvef9pbHP/cXR7/25xe/9ucHf/cHN9/3Z4fP9sbnX/amxz/25wd/9ucHf/bG51/2psc/9ucHf/
    +c3V8/2xudf9qbXf/c3V8/3V3ff9sb3n/c3V8/3Bzff91d33/bG51/3V3ff9zdXz/b3F1/3N1fP9ucHf/
    +c3V8/3N1fP9zdXz/Zmlz/2ptd/9ucHf/bG95/3Bzff93eX//bnF7/29xdf9sbnX/c3V8/3V3ff91d33/
    +bnB3/25wd/9ucHf/dXd9/25wd/92eHz/bnB3/2xvef91d33/bW9z/2xudf92eHz/bG51/2xvef9ucXv/
    +am13/2ptd/9ucXv/c3V8/3V3ff94eX3/c3V8/3d5f/9vcXX/cHJ5/25wd/9sb3n/am13/2ptd/9wcnn/
    +cHN9/3J1fv9wc33/am13/3R2fP9vcXX/cHJ5/2xudf9ydHz/bnB3/2xvef9vcnz/dnmC/25xe/9zdn//
    +bnF6/3N2fv9qbXf/dnh8/21vdv90dnz/b3F4/2tueP9ucXr/cHN9/2Vocv9tcHr/cnR8/2Jlbv9nanH/
    +bnF7/2ptd/9qbXf/amxz/2Zpc/9maG7/Zmhu/2dqdP9maG7/Z2p0/2xvef9maXP/ZGdx/2Rncf9qbXf/
    +Z2p0/2dqdP9ucXv/cHN9/2ptd/9sb3n/Z2p0/3Bzff92eHz/bG51/29xdf9ucHf/bnB3/3Byef97fYP/
    +c3Z//25xe/91eIH/c3Z//3V4gf9zdn//bG95/3N2f/9wc33/bnF7/3N1fP9tb3P/bnB3/25wd/9sb3n/
    +bnF7/2xvef9nanT/bnF7/2xvef9sbnX/dXd9/2Rncf9maG7/ZGdx/2Rncf9maG7/am13/25wd/9nanH/
    +Z2p0/2ptd/95e4H/bG95/3N1fP9sbnX/amxz/3V3ff9sbnX/bG51/3Bzff9ucHf/bnB3/2ptd/9ucHf/
    +b3F1/29xdf9ucHf/c3V8/25wd/9tb3P/dXd9/3N1fP9nanT/dXd9/3N1fP9qbXf/am13/2psc/9nanT/
    +amxz/3Byef9nanH/Zmhv/2tueP9nanT/ZWhy/2ttdf9qbXf/am13/2ptd/9nanT/Z2px/3Bzff9sb3j/
    +b3J8/2xvef9sbnX/c3V8/2ptd/9nanT/bnF7/3N1fP91d33/dXd9/2xudf9ucXv/bG51/2xvef9qbXf/
    +bnF7/25xe/91d33/dnh8/3Byef9sbnX/bW9z/3N1fP93eX//gIKG/21vc/9sb3n/bG95/3h5ff9sbnX/
    +d3qD/3V3ff9qbXf/am13/2Zpc/9zdXz/cHJ5/3N2f/9wc33/en2G/21vd/9vcnz/cnV8/2hqdP9nanT/
    +ZGdx/3Byef9ucXv/aWxz/3F0fv9vcnz/bG95/3Bzff9zdn//bW9z/2xudf9zdXz/cHJ5/25wd/9qbXf/
    +cHN9/3l7gf9ucHf/bnB3/3l7gf97fof/c3Z//3t+h/97fYP/e32D/3N2f/95e4H/eXyG/3N2f/95fIb/
    +eXuB/36Ahv97fYP/foCG/3V3ff91d33/cHN9/3Bzff91eIH/eXyG/25xe/9qbXf/bnB3/3N2f/93eX//
    +dXiB/2ptd/9sb3n/bG95/3l7gf9wc33/eXuB/3Bzff9ucXv/dXd9/29xdf9sbnX/dnh8/2xudf9wcnn/
    +cHN9/25xe/9wc33/c3Z//3V3ff91eIH/eXuB/3V4gf93eX//bnB3/25xe/9ucHf/bnB3/2xudf9nanH/
    +bG51/3N1fP9wc33/c3V8/2psc/9zdXz/bG51/2xudf9qbXf/cHN9/3Byef9nanT/bG95/3l7gf9sbnX/
    +bW9z/2xudf9sb3n/Zmlz/3Bzff9qbHP/cHN9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/bG95/2xvef9nanT/
    +bnF7/3N2f/9wcnn/bnF7/3Bzff9ucXv/cHJ5/3Byef91eIH/cHJ5/3N2f/91d33/cHN9/2xvef9sb3n/
    +dXiB/3Byef9wcnn/c3Z//3Bzff9ucHf/bG51/2xudf91d33/c3V8/2psc/9qbHP/am13/2xudf9nanH/
    +c3V8/2psc/9maXP/bG95/2xudf9wc33/cHJ5/2xudf9wcnn/c3V8/2xudf9wc33/amxz/2xvef9sb3n/
    +bG51/3N1fP9wcnn/Z2p0/3Bzff9zdXz/bnB3/3d5f/9qbXf/bnB3/25wd/9sbnX/bG51/3V3ff94eX3/
    +b3F1/25wd/9zdXz/f4GH/2xvef9zdXz/bG95/2xudf92eHz/am13/2ptd/9ucXv/bG95/2psc/9maXP/
    +bG51/2dqcf9kZ3H/Zmlz/2xvef9maXP/Z2p0/25xe/9zdXz/Z2p0/3N1fP9ucXv/am13/2ptd/9vcXX/
    +b3F1/2xudf9zdXz/bG51/2tud/9ydHv/bXB6/29ye/9wc3z/d3qD/3l8hv95fIb/d3qD/3Bzff97fYP/
    +dHeA/3h7gv95e4H/dHZ9/3t9g/91eIH/c3V8/3d6g/97fYP/foCG/36Biv9zdn//e32D/3V4gf93eoP/
    +cHN9/3V4gf9zdn//dXiB/3N2f/9wc33/bnB3/25wd/9zdXz/dnh8/4CChv9sb3n/bnB3/25wd/92eHz/
    +am13/3N2f/9zdXz/amxz/2ptd/9gY2z/bnF7/2dqdP9ucXv/cHN9/3V4gf9rbXX/bnF7/3R3gP9ydHv/
    +c3Z//2ptd/93eX//cnV+/25weP9ydHz/bXB5/2dqcv9sb3n/bnF7/2psc/9maXP/bG95/2xvef9sb3n/
    +am13/25wd/91d33/bG95/2xvef91eIH/d3qD/3Bzff93eX//dXiB/3Bzff9ucHf/c3V8/3N1fP9sbnX/
    +bG95/2xvef9wc33/cHN9/3N1fP9qbHP/bW9z/2xudf9sbnX/c3V8/3d5f/9ucHf/am13/2xvef9zdn//
    +eXuB/3d6g/9ucXv/bnF7/3Byef95fIb/c3Z//3l8hv9wc33/dXiB/3l8hv91eIH/dXd9/3t+h/9ucXv/
    +dXiB/3V4gf9wc33/bnF7/3N1fP91d33/d3qD/3d5f/9wcnn/dXd9/2dqdP9nanT/amxz/2Zpc/9iZW7/
    +YmVu/2xudf9qbXf/cHN9/25xe/9nanT/cHN9/2ptd/9sbnX/am13/3N1fP9ucHf/Z2p0/25xe/93eoP/
    +bG51/2ptd/9qbXf/bG95/2ptd/91d33/Z2p0/3Bzff9sb3n/cHJ5/3Byef91d33/Zmhu/3V3ff9zdXz/
    +am13/25xe/9zdn//dXiB/3Bzff9ucHf/cHN9/25xe/9sb3n/dXd9/25wd/9wcnn/dnh8/3Byef9ucHf/
    +bG95/3d5f/9wc33/cHJ5/25xe/91eIH/bnF7/3N1fP9sb3n/eXuB/3l7gf9wc33/dXd9/3l7gf93eX//
    +dXiB/36Ahv9zdXz/bnF7/3N2f/9wc33/eXyG/3l8hv92eHz/eXuB/35/g/95e4H/fX6B/3Bzff91eIH/
    +dXiB/3Bzff93eoP/c3Z//25wd/93eoP/d3qD/3Bzff95e4H/am13/2xvef9ucHf/bG95/2xvef9zdn//
    +dXd9/2xvef9ucHf/c3V8/3+Bh/9sbnX/dXd9/2xudf9qbXf/eHl9/25wd/9sb3n/dXiB/3V4gf9zdXz/
    +bnB3/2xvef9ucHf/cHJ5/25wd/9zdn//c3Z//3N1fP9+gIb/e36H/3V3ff9+f4P/fX6B/3Z4fP91eIH/
    +c3Z//2xudf9sbnX/cHN9/2xvef9rbnj/dHZ8/3R2fP9ydHr/enyC/36Ahv97fYP/eXuB/3V4gf9wc33/
    +enyD/3N2fv90dn7/cXN6/21vdv91d33/bG51/2dqdP9wcnn/cHN9/3Z4fP93eX//bnB3/3N2f/9sb3n/
    +c3V8/2xvef9ucXv/bnB3/3N2f/9zdn//cHN9/25wd/9ucHf/c3Z//3l7gf+Bg4r/bnB3/25xe/9wc33/
    +eXuB/3Bzff93eoP/d3qD/3Byef9zdn//Zmlz/3V3ff9wc33/dXd9/3N2f/95fIX/bG51/29xeP90d37/
    +am13/3Bzff9sb3n/eHl9/3N1e/9rbnf/cXN7/25xe/9sb3n/dXiB/3V4gf9ucXv/bG95/3N2f/9ucXv/
    +c3V8/2ptd/9sb3n/dXd9/25wd/9ucXv/dXiB/3l8hv9wc33/dXd9/3Bzff9zdXz/bnB3/3V3ff9wcnn/
    +bG51/25wd/9ucHf/cHN9/3Bzff91d33/bW9z/2xudf9nanT/am13/25xe/9ucHf/Z2p0/2Rncf9qbHP/
    +ZGdx/2dqdP9maG7/YmVu/2dqcf9maXP/cHJ5/2dqcf9sb3n/Z2px/2psc/9sb3n/amxz/2dqdP9zdXz/
    +Z2p0/25xe/9zdXz/bG95/2xudf9ucHf/c3V8/3V3ff93eX//c3V8/3Z4fP9ucHf/cHJ5/3Byef9vcXX/
    +am13/25wd/9ucHf/cHJ5/3Z4fP9wcnn/bG51/3N1fP9ucHf/bnB3/25wd/9zdn//bnF7/2psc/9ucXv/
    +eXuB/29xdf9ucXv/bnB3/2xvef9qbXf/d3l//2xvef9zdn//dXiB/3Bzff9sb3n/cHN9/2Zpc/9zdn//
    +dXiB/2ptd/9wc33/dXiB/3N2f/9zdn//cHN9/3V4gf9zdn//c3Z//3t9g/95e4H/e32D/3t9g/95e4H/
    +c3V8/3N1fP95e4H/cHJ5/2xvef9ucHf/cHN9/25wd/9sb3n/amxz/3N2f/9zdn//b3F1/25wd/9wcnn/
    +bG95/25wd/9wc33/bG51/2psc/9ucXv/am13/3Bzff9ucXv/bG51/25wd/9zdXz/bnF7/3d6g/9zdXz/
    +c3Z//3V4gf91eIH/e32D/3V4gf9zdXz/e32D/3d6g/9wc33/e36H/3Z4fP91eIH/dXd9/3V4gf9zdXz/
    +eXuB/3t+h/9wc33/cHN9/3N2f/+Bg4r/bnB3/3V3ff9ucHf/bG51/3h5ff9vcXX/bG95/3V3ff91d33/
    +bG51/2xudf9sbnX/Z2p0/2psc/9maXP/bG95/2dqcf9maXP/cHN9/3d5f/9nanT/cHN9/3N1fP9qbXf/
    +bG51/2xudf9zdXz/c3V8/3l7gf9zdn//cHJ5/3Z4f/9wc3r/aGt1/2ptd/9wc33/amxz/2ptd/9qbXf/
    +am13/3N1fP9rbnX/cHN8/3Fzev9wcnn/dXd9/3Byef9ucHf/c3V8/3Bzff9zdXz/dXd9/2xvef9zdXz/
    +bnB3/3N1fP9ucHf/cHJ5/25wd/9zdn//dXiB/3N2f/9sb3n/bnF7/3N2f/91eIH/g4WM/3V3ff91d33/
    +e32D/3+Bh/97fYP/f4GH/4WHjf97fYP/eXyG/3N2f/9+gYr/foCG/36Ahv99foH/gIKJ/3N1ev9zdX3/
    +dXd+/2lrdf9ucXv/am13/3N1fP91d33/a254/3N1fP9xc3n/amxz/3Bzff9wc33/amxz/2Rncf9qbXf/
    +bG51/2ptd/9qbHP/bnB3/3V3ff9sbnX/amxz/3V3ff93eX//cHJ5/3V3ff9ucXv/cHN9/2xudf9qbXf/
    +bG95/2dqdP9sb3n/bG51/25xe/9wc33/cHN9/2dqdP9qbHP/am13/25wd/91d33/dXd9/3N1fP9ucHf/
    +bG95/3Bzff9zdn//bnF7/2xvef9sb3n/bG95/3d5f/9sb3n/dXd9/25xe/9wc33/c3Z//29xdf9ucHf/
    +dnh8/2psc/91d33/dXd9/25wd/9qbXf/bnB3/2xvef9wc33/bnF7/2dqdP9qbXf/Zmhu/2ptd/9sb3n/
    +bG51/2dqdP9qbXf/bW9z/25wd/92eHz/cHJ5/2Zpc/9wc33/bG95/2xudf9nanT/bnF7/25wd/9qbHP/
    +bnB3/3d5f/9tb3P/cHJ5/25wd/9ucHf/am13/3V3ff9qbXf/cHN9/3Bzff9ucHf/bnB3/3Bzff9maXP/
    +c3Z//3N1fP9sbnX/cHJ5/3N2f/9wcnn/bnB3/25wd/9wcnn/cHJ5/3Byef91d33/bnB3/25wd/92eHz/
    +c3V8/2xudf9qbXf/cHN9/2xudf9sbnX/bnB3/3Byef9qbXf/Z2p0/2Zpc/9ucXv/am13/2Zpc/9maXP/
    +Zmlz/2Jlbv9nanH/Z2p0/2Rncf9maXP/bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/
    +bW9z/2ptd/9ucXv/am13/25xe/9sb3n/bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/
    +bnB3/3Byef91d33/bW9z/21vc/9wcnn/f4GH/21vc/9wc33/am13/25wd/91d33/bG95/2xudf9zdXz/
    +bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/bnB3/3d5f/9wcnn/bnB3/3h5ff93eX//bG51/3V3ff93eX//
    +bnB3/25wd/9ucHf/bnF7/3Bzff93eoP/eXyG/3N2f/97fYP/cnV//21wev9wc33/c3Z//2xvef9ucXv/
    +bnB3/25wd/91d33/cHJ3/3V4gP91eIH/c3Z//3d6g/9zdn//bG95/3N2f/9zdn//dXiB/3d6g/9wc33/
    +cHN9/3Bzff9ucXv/bnF7/3Bzff9wc33/dXiB/3N2f/9zdn//bnB3/21vc/9zdXz/dXd9/35/g/9ucHf/
    +bG95/3V4gf93eX//bnF7/3d5f/93eoP/c3Z//25xe/9qbHP/cHN9/3Byef91d33/c3V8/3l7gf9sbnb/
    +cXR8/3V4gv9wcnz/eXyG/3V3ff99foH/fH6F/3J1f/92eID/cXN6/2hrdf9wc33/dXd9/21vc/9nanH/
    +cHJ5/3l7gf93eX//dXd9/3V4gf95e4H/c3V8/25xe/91eIH/eXyG/3N2f/95fIb/c3Z//3d6g/9wc33/
    +cHN9/25xe/9sb3n/bG95/2xvef9zdn//c3Z//3d5f/9vcXX/bnB3/25wd/9wcnn/dXd9/3N1fP9ucXv/
    +b3F1/2xvef9wc33/d3l//3N2f/9wcnn/cHJ5/2xvef91d33/bnF7/3d5f/9wcnn/d3qD/3d6g/9zdn//
    +c3Z//35/g/91d33/fX6B/31+gf91eIH/dXiB/3l7gf9+gIb/f4GH/36Ahv97fYP/fX6B/3d5f/95e4H/
    +foCG/3d5f/93eX//dnh8/3N2f/91eIH/foCG/3t9g/9ucXv/d3qD/3N2f/9zdn//cHJ5/3V4gf9zdn//
    +cHN9/3V4gf95fIb/cHN9/25xe/9sb3n/bnF7/2ptd/92eHz/Z2p0/3Byef9ucXv/bG95/2xudf9zdXz/
    +amxz/3V3ff9zdXz/am13/25xe/91eIH/c3Z//25xe/9ucXv/cHJ5/25xe/9ucXv/dXd9/2xvef9sb3n/
    +c3V8/25wd/9sbnX/bG51/3Bzff9sbnX/bnB3/2psc/9wcnn/bW9z/2ptd/9nanT/cHN9/25xe/9nanT/
    +ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/
    +dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/
    +bnB3/2xudf9zdXz/d3l//2psc/9qbXf/cHJ5/3+Bh/9sbnX/bnF7/2ptd/9vcXX/dnh8/3Byef9vcXX/
    +dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/bG51/2xudf9wc33/bG51/21vc/94eX3/d3l//21vc/9zdXz/
    +c3V8/2ptd/9sbnX/bG51/25wd/9wcnn/d3l//3N2f/9ucHf/c3V7/3N1fP9vcXj/bG95/3N2f/9ucXv/
    +c3Z//2xvef9ucXv/c3Z//21wev92eYD/eHqB/3V3gP97fof/c3Z//3N2f/97fYP/eXuB/3d6g/97fYP/
    +cHN9/3V4gf95e4H/cHN9/3V4gf91eIH/c3V8/3d6g/95e4H/dXiB/25wd/9wcnn/cHN9/3Bzff97fYP/
    +b3F1/25wd/93eX//c3Z//25xe/93eX//dXiB/25xe/9ucXv/am13/3Bzff9ucXv/dXiB/3Bzff94e4X/
    +b3F4/25xev91d33/aGt0/2xvef9sbnX/c3V8/3N1fP9tcHr/dXd9/3J0ff9wcnn/d3l//3V3ff9sb3n/
    +am13/3Bzff9ucHf/bnF7/2xvef9ucXv/d3l//3Byef9sb3n/c3Z//3l8hv9wc33/eXyG/2xvef9wc33/
    +bG95/3Bzff9ucXv/bG51/2xvef9sbnX/c3V8/3N1fP93eX//b3F1/29xdf9sbnX/bG95/3V3ff9zdXz/
    +am13/2psc/9sbnX/bG95/25xe/9qbXf/Z2p0/2psc/9nanT/dXd9/2ptd/9zdXz/bG51/2xvef9qbXf/
    +bG51/2xudf9zdXz/Z2p0/25xe/9qbXf/amxz/2Zpc/9qbXf/am13/25xe/9sb3n/am13/25xe/9sb3n/
    +bG95/3Bzff9sbnX/bG51/2xudf9sbnX/bG95/3Bzff9sb3n/amxz/3Bzff9sbnX/bG51/2psc/9wc33/
    +cHJ5/25wd/9ucXv/d3qD/3Byef91eIH/bG95/25xe/9qbXf/dXd9/2xvef9wc33/cHJ5/3N1fP9ucXv/
    +cHN9/2xvef91eIH/dXiB/2psc/9sbnX/c3V8/2xvef9ucHf/cHJ5/25wd/9wcnn/bnB3/3V3ff9wcnn/
    +bnF7/3N1fP9zdXz/am13/2xudf9wc33/am13/2psc/9maXP/bnF7/21vc/9ucHf/bnB3/3V3ff9wcnn/
    +bG51/2psc/9ucHf/bG95/3Bzff91d33/bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn//
    +bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/
    +bnB3/2xvef9sb3n/dXd9/3l8hv9ucHf/bnB3/3N2f/+BhI3/c3V8/3N2f/9sb3n/c3V8/3l7gf91eIH/
    +cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/cHJ5/25xe/9ucHf/d3qD/3N2f/9wc33/e36H/36Biv9zdn//
    +eXyG/3l7gf9wc33/c3Z//25xe/9qbXf/bW9z/3V3ff9zdXz/bnB4/3N1fP9xc3j/bnB2/25wd/91d33/
    +cHJ5/25xe/9ucHf/bnF7/25xe/9tb3f/cXR9/3N1fP9vcXn/d3l//3N1fP9qbHP/eHl9/3Z4fP92eHz/
    +dXd9/2xudf9ucXv/cHN9/2xudf9ucXv/bG95/2xudf9ucXv/dXd9/2xudf9ucHf/b3F1/3N1fP9wcnn/
    +e32D/25wd/9tb3P/c3V8/3N1fP9ucHf/dXd9/3V3ff9wcnn/cHJ5/2psc/9sbnX/bG95/3Bzff9wc33/
    +dXd9/2xudf9tcHr/c3V8/2xvef9zdXz/b3F1/3Byef90dnz/bnB3/3J0ev9wc3v/bG95/3V4gf9zdn//
    +bG95/2xvef9ucXv/c3Z//25xe/9nanT/cHJ5/3d5f/9vcXX/Z2px/3V3ff94eX3/bnB3/3l7gf9sbnX/
    +bG51/21vc/9zdXz/bnF7/25wd/9ucHf/bG95/3Byef9wcnn/dXd9/25wd/9vcXX/b3F1/25wd/91d33/
    +bnF7/25xe/9sbnX/am13/25xe/9wc33/bG95/2dqdP9sbnX/amxz/3Z4fP9ucHf/bnF7/25wd/9wc33/
    +bnB3/25wd/9vcXX/dnh8/25wd/92eHz/cHJ5/21vc/9ucHf/bnB3/3Byef9zdn//dXiB/3N2f/93eoP/
    +cHN9/3Bzff9wc33/bG95/2xudf9sbnX/bG51/25wd/9wc33/bnF7/2Zpc/9sb3n/amxz/2dqdP9kZ3H/
    +bG95/2ptd/9maXP/bnB3/3V3ff9sbnX/bG95/2xudf9ucXv/Z2p0/3N1fP9nanT/bG95/2xvef9ucXv/
    +am13/2xvef9nanH/dXd9/3Byef9maXP/am13/25xe/9ucHf/am13/2xudf9tb3P/bG95/2psc/9ucXv/
    +bnF7/2ptd/9wc33/cHN9/2Zpc/9sbnX/cHN9/2ptd/9qbXf/Zmlz/2ptd/9sbnX/Z2p0/2ptd/91d33/
    +bnF7/21vc/9nanH/bG51/2dqdP9qbXf/bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/
    +am13/2psc/9sb3n/bG51/2xvef9wc33/am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/
    +c3Z//25wd/9qbXf/Z2p0/3Bzff95fIb/cHJ5/3N1fP9zdn//g4WM/3N1fP9wc33/am13/25wd/9zdXz/
    +cHJ5/2xudf94eX3/cHJ5/2xudf9qbXf/am13/2xudf9sbnX/am13/3N1fP9ucXv/b3F1/3d5f/91d33/
    +am13/3N1fP9wc33/Z2p0/2xvef9sbnX/bnB3/2ptd/94eX3/c3Z//25xe/92eYP/c3V8/21vdv9ucHf/
    +cHN9/2xvef9sbnX/bG51/2xvef9rbnj/bXB6/3J1fv9ydX7/dHeA/3d6g/91eIH/cHN9/3t+h/97fYP/
    +e36H/3l8hv9wc33/eXuB/3d6g/9ucHf/cHN9/25xe/9wcnn/dXiB/3d6g/9wc33/bnB3/25wd/9wc33/
    +cHN9/3t9g/9sb3n/bW9z/3V3ff91d33/cHJ5/3l7gf94eX3/cHJ5/25xe/9qbXf/bnB3/25wd/91eIH/
    +d3qD/3p8gv9xc3v/cHN9/3R3fv9ucHf/bnF7/25wd/9zdn//c3Z//25xe/9zdXv/bnF7/25wd/9zdn//
    +dXd9/25wd/9qbHP/bG51/3N2f/9sb3n/am13/2xvef93eX//bnB3/2ptd/9zdn//eXuB/3Byef95fIb/
    +bnF7/25xe/9wcnn/c3Z//3Bzff9ucHf/bnB3/3Bzff9wcnn/cHJ5/3V4gf9ucXv/bnB3/29xdf9ucXv/
    +dXd9/3N2f/9zdn//bnB3/2xvef9zdXz/dnh8/3V3ff9ucHf/cHJ5/25wd/92eHz/b3F1/3Byef9sbnX/
    +am13/2ptd/9sbnX/am13/3N1fP9nanT/cHJ5/2psc/9nanT/Z2p0/2dqdP9qbXf/bG95/25xe/9qbHP/
    +am13/2ptd/9nanT/Z2p0/2Zobv9kZ3H/Z2p0/2xudf9qbXf/cHN9/3N1fP9sbnX/bnB3/2xudf9ucHf/
    +Z2p0/3N2f/91eIH/bnB3/3Byef93eX//bnB3/3Byef9sbnX/cHJ5/2ptd/93eX//bG95/2xvef91eIH/
    +c3Z//29xdf9wcnn/amxz/3V3ff9ucXv/amxz/25wd/9ucXv/am13/3Byef9tb3P/bG51/2xvef9qbHP/
    +bnF7/25xe/9sbnX/dXd9/3Bzff9nanT/bG51/25xe/9sbnX/amxz/2Rncf9nanT/Z2p0/2Zpc/9maXP/
    +dXd9/25xe/9qbHP/YmVu/2xudf9qbXf/bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/
    +cHJ5/25xe/9wcnn/d3l//29xdf91eIH/dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/
    +cHN9/3V4gf9ucXv/bG95/2ptd/9wc33/d3l//2xudf9ucHf/c3V8/35/g/9ucHf/bnB3/2dqdP9sbnX/
    +cHJ5/25xe/9sbnX/cHN9/3Byef9tb3P/bG95/2xudf9vcXX/bnB3/2xvef9zdn//bnF7/2xvef95fIb/
    +eXuB/25xe/95e4H/eXuB/3N1fP91eIH/d3qD/3N2f/9wc33/e32D/3N2f/9tcHn/d3qD/3N1ff9tcHr/
    +cHN9/3d6g/9zdn//bG95/25wd/9ucHf/c3V8/3Byev9xdH7/dnmC/3R3gP97fof/eXuB/25xe/95fIb/
    +d3l//3l7gf95e4H/bnB3/3d5f/93eoP/c3V8/3l7gf93eoP/c3Z//3l8hv93eoP/dXiB/3N1fP9zdXz/
    +c3Z//3V4gf95fIb/cHN9/2xvef91d33/dXd9/3Byef93eX//eHl9/3Byef9ucHf/Z2p0/2xvef9ucXv/
    +dXd9/3Z4fP91d33/a211/2ttdv9zdXv/a210/25xe/9tb3P/bnF7/25xe/9tb3f/cXR9/3J0ff9sb3n/
    +c3Z//3V3ff9ucXv/am13/25xe/9sb3n/amxz/2Zpc/9sb3n/dXd9/2ptd/9kZ3H/bG95/3Byef9nanH/
    +c3V8/2Zobv9sbnX/bG51/2ptd/9nanT/ZGdx/2Zpc/9maXP/ZGdx/2Zpc/9wcnn/Z2p0/2Jlbv9maXP/
    +Z2p0/3Bzff9sb3n/bnF7/2psc/9qbXf/bnF7/3V3ff9wc33/am13/25wd/9qbHP/dnh8/25wd/9wcnn/
    +bnF7/3Bzff9zdXz/cHN9/3N1fP95e4H/bnB3/3V3ff9ucXv/bG95/2xvef9ucXv/bG51/25wd/91d33/
    +bnB3/25xe/9ucXv/am13/25xe/9sbnX/Z2p0/2xudf9nanT/Z2p0/2dqdP9sb3n/YmVu/2dqcf9nanH/
    +ZGdx/2Jlbv9ucXv/Z2p0/2Zpc/9sbnX/c3V8/2xudf9sb3n/bG51/2xvef9kZ3H/c3V8/2xudf9sb3n/
    +c3Z//2xvef9vcXX/bnB3/2psc/91d33/bnB3/2xudf9qbXf/cHJ5/2ptd/9wc33/bG51/2xudf9ucHf/
    +bG51/25xe/9ucXv/am13/3N1fP9wc33/Zmlz/2dqcf9qbXf/Z2p0/2psc/9maXP/am13/2ptd/9sbnX/
    +bG51/3Z4fP9sbnX/bnB3/2dqdP9ucHf/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn//
    +am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/
    +c3V8/2psc/9wcnn/am13/2dqdP9qbHP/bnB3/3d5f/9tb3P/bG51/3V3ff9+f4P/bnB3/3Byef9ucHf/
    +b3F1/3V3ff9wc33/bG95/3Bzff9zdn//cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/3l7gf95e4H/
    +g4WM/36Ahv97fYP/foCG/36Ahv9zdn//dXiB/3V4gf9wcnn/bnB3/3h5ff91d33/a254/3x+hf9ydX7/
    +b3J6/3R3gP95e4H/cHN9/2xvef9vcXX/bnF7/3N2f/9tcHr/b3F4/3Fzev9sbnX/dnh8/3V3ff9nanT/
    +dXd9/25xe/9zdXz/bnF7/2dqdP9wc33/cHN9/2xudf9sb3n/amxz/2dqcf9nanT/Z2p0/2ptd/9qbHP/
    +Z2px/2xvef9nanT/c3Z//2Zpc/9kZ3H/Z2p0/2xvef9qbHP/cHJ5/3Byef9maXP/bG51/2dqdP9qbHP/
    +am13/3Bzff9wc33/dnh//2ttdf9qbXX/cXN6/2ptd/9ucXv/Z2px/2ptd/9rbXf/bnF4/3J1fv91eID/
    +bnF6/3l7gf91eIH/bnB3/2Rncf9sb3n/cHJ5/29xdf9qbHP/cHJ5/3Z4fP9nanT/Z2p0/2ptd/91d33/
    +b3F1/3d5f/9tb3P/bG51/2xvef9wcnn/bnB3/2ptd/9sb3n/am13/2ptd/9nanT/cHJ5/2dqdP9nanT/
    +Z2p0/25xe/91d33/bG95/2xvef9nanH/bG51/2xvef9zdXz/bnF7/2psc/9qbXf/Zmlz/3Bzff9qbXf/
    +am13/2xvef9nanT/Z2px/2xudf9nanH/bG95/2dqdP91d33/bG51/2Zpc/9maXP/am13/2Zpc/9qbXf/
    +cHJ5/2dqdP9sb3n/cHN9/2dqdP9qbXf/Z2px/2dqdP9qbXf/Zmlz/2dqdP9nanT/am13/2Rncf9qbHP/
    +amxz/2psc/9kZ3H/cHN9/2ptd/9qbHP/am13/3Byef9qbHP/am13/2psc/9maXP/YGNs/25xe/9nanH/
    +am13/3Bzff9sbnX/am13/2psc/9nanT/bnF7/2ptd/9zdn//c3Z//3l8hv93eX//fn+D/3N2f/9zdn//
    +eXyG/3V3ff93eoP/d3qD/25xe/95e4H/c3Z//2ptd/9ucHf/dXiB/3N2f/9wc33/bG95/25xe/9sb3n/
    +bnB3/3Byef97fYP/c3Z//25xe/9nanT/bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/
    +bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/
    +cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/bG51/25xe/91d33/bW9z/2xudf9wcnn/fX6B/2xvef9qbXf/
    +Z2p0/2dqdP9ucXv/bnF7/2ptd/9sb3n/bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9qbXf/
    +Z2p0/3Byef9wcnn/ZGdx/25wd/9sb3n/Zmhu/2xvef9maXP/cHJ5/21vc/91d33/dXd9/2xudf93eYD/
    +b3J5/2ptd/9sb3n/bnF7/2xvef9tb3P/bW9z/25wd/9zdXz/bnB3/3Bze/9zdn3/b3F1/3V3ff91d33/
    +Z2px/3d5f/9ucXv/dnh8/3Byef9ucHf/dnh8/3N1fP9sb3n/bnF7/2xvef9qbHP/bnF7/25xe/9sbnX/
    +b3F1/25wd/9zdn//bnB3/3t9g/9zdXz/bnB3/3V3ff9zdn//bnF7/3V4gf91d33/cHN9/25wd/9ucHf/
    +b3F1/2xudf9wcnn/dXd9/3h5ff9ucHf/bnF6/3V2fP9tb3T/cHN9/25wd/9wc33/cHJ5/29xeP9xdHz/
    +cnR6/2xudf9zdXz/bnF7/2ptd/9kZ3H/bG95/25xe/9ucHf/bG95/3Bzff95e4H/bnF7/25wd/9sb3n/
    +dnh8/2xudf93eX//bG51/2xudf9qbXf/am13/2xudf9maXP/am13/2ptd/9qbXf/am13/3N1fP9qbXf/
    +Zmlz/2psc/91d33/dnh8/3N1fP91d33/bG51/2dqcf9ucXv/cHN9/3Byef9sbnX/bnB3/2ptd/91d33/
    +bnB3/3V3ff9sb3n/cHN9/25wd/9ucHf/am13/25wd/9ucHf/d3l//29xdf9sbnX/bG51/2ptd/9wc33/
    +cHN9/3Bzff9sb3n/bG51/3Bzff9qbXf/bG95/2xudf9nanT/bG95/2xudf9nanH/Z2p0/2ptd/9nanT/
    +Z2p0/2dqdP9sbnX/Z2p0/25xe/9qbXf/amxz/3Bzff93eX//bnB3/3Byef9sb3n/c3Z//2ptd/9zdn//
    +cHJ5/3Bzff97fYP/c3Z//3d6g/9zdn//dXd9/3d6g/9zdn//bnB3/3Byef9ucHf/cHJ5/3N1fP9ucHf/
    +b3F1/3N1fP9tb3P/cHJ5/3N1fP9sbnX/bnF7/3N1fP9qbXf/bnB3/3V3ff9zdXz/c3V8/25wd/9vcXX/
    +cHJ5/2xudf9qbXf/c3V8/25wd/9ucHf/Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/
    +cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/
    +bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/bG51/2psc/9wcnn/dnh8/21vc/9sbnX/cHJ5/3l8hv9ucHf/
    +dXd9/25wd/9sb3n/dXd9/3V3ff9sb3n/bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/
    +d3qD/3V4gf93eoP/d3qD/3V4gf93eoP/eXuB/3Byef91eIH/c3Z//3Byef9vcXX/eXuB/3Z4fP9tb3b/
    +d3qD/3N1fP9ucHf/bnF7/3N1fP9zdXz/b3F1/29xdf9vcXX/cHJ5/25wd/9tb3j/b3J5/21vc/91d33/
    +dXd9/2dqdP91eIH/bnF7/3N1fP9nanT/Zmlz/25wd/9qbXf/Z2p0/2dqdP9maXP/ZGZs/2Zobv9nanT/
    +Zmhu/2Rncf9maG7/Zmlz/2Rncf9wc33/Zmlz/2Rncf9sb3n/bG95/2psc/91d33/cHN9/25xe/9qbXf/
    +am13/2psc/9sbnX/bG95/3V3ff9ydHz/bG5z/21vdP9wc3z/amx0/2xvef9qbXf/am13/2ptd/9rbXT/
    +a252/21wef9sbnX/dnh8/3Byef9ucHf/amxz/25wd/9ucXv/bnB3/2xudf9ucHf/c3V8/2Zpc/9nanH/
    +bG51/3N1fP9ucHf/d3l//2xudf9vcXX/bG51/2xvef9wc33/bnF7/3l7gf93eoP/cHN9/25xe/94eX3/
    +bnB3/2xudf9qbHP/dXd9/3Z4fP91d33/eHl9/25wd/9vcXX/c3V8/3Byef9zdXz/bnB3/25wd/9sbnX/
    +eHl9/29xdf91d33/bG95/2ptd/9qbXf/bG51/2dqdP9sb3n/ZGdx/3d5f/9qbXf/ZGdx/2Rncf9sb3n/
    +cHJ5/3Byef9wcnn/cHJ5/25xe/9zdn//bnF7/3Bzff9ucHf/b3F1/3N1fP9sbnX/bG51/2xvef9zdXz/
    +b3F1/3Byef9sbnX/b3F1/2xudf9zdXz/bnF7/3Bzff91eIH/e32D/3N2f/9zdn//c3V8/3d6g/9qbXf/
    +cHN9/25wd/9ucHf/eHl9/3N1fP9ucHf/bnB3/25wd/9sb3n/cHJ5/2ptd/9sb3n/bG95/3Byef9zdXz/
    +am13/2xudf9wcnn/bW9z/25wd/9sb3n/amxz/3V3ff9zdXz/bG51/2xudf9zdXz/cHJ5/2xvef9tb3P/
    +am13/3N1fP9ucHf/bnB3/3V4gf9ucXv/c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/
    +cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/
    +bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/cHJ5/2xudf9ucHf/cHJ5/3h5ff9vcXX/bnB3/3Bzff97fof/
    +c3Z//3V4gf9ucHf/bnF7/3l7gf91eIH/am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/
    +c3V8/3N1fP9zdXz/dnh8/3Z4fP9zdXz/dXd9/3N1fP9sbnX/bnF7/2ptd/9wc33/bG95/3d6g/91d33/
    +bnB3/3l6gP9wc3v/bW91/3Bzff9ucXv/bnF7/2dqdP9sb3n/am13/3Byef9ucHj/bW94/3Byef9ucHf/
    +dXd9/3V3ff9sb3n/d3qD/3V4gf97fYP/c3Z//2xvef91eIH/c3Z//3N2f/9zdn//dXiB/2xvef9wc33/
    +dXd9/25wd/9vcXX/cHJ5/3N1fP9sbnX/e32D/25wd/9qbXf/dXd9/3V3ff9tb3P/dXd9/25xe/9sb3n/
    +Zmlz/2Rncf9maG7/amxz/2dqdP9ucHf/am13/2Zobv9pa3H/cHN5/21vdP9zdXz/bG51/3Byef9wcnn/
    +a211/2tudv9ucHn/aGt0/3V3ff9sb3n/Z2p0/2Zpc/9ucXv/am13/2xudf9maXP/bG95/3Bzff9kZ3H/
    +YmVu/2xudf9zdXz/bG51/3V3ff9ucHf/bnB3/25xe/9ucHf/bnB3/2psc/92eHz/cHJ5/25wd/9sb3n/
    +d3l//3Byef9sbnX/bG51/3Byef92eHz/c3V8/3h5ff9ucXv/bnB3/3V4gf91eIH/dXiB/3Bzff9zdn//
    +cHJ5/3d5f/9sb3n/dXd9/3Bzff9wcnn/cHJ5/21vc/9ucHf/cHN9/2ptd/93eoP/bnB3/2psc/9nanH/
    +b3F1/3N1fP9ucHf/cHJ5/3Byef9ucHf/dXd9/25xe/9ucXv/amxz/21vc/9wc33/bG51/29xdf9wcnn/
    +cHJ5/25wd/9ucHf/bnB3/21vc/9qbXf/bG95/25wd/9ucHf/c3V8/3h5ff9sbnX/c3V8/2dqdP91d33/
    +ZGdx/25xe/9qbXf/bnB3/3h5ff9wcnn/bG51/21vc/9qbXf/am13/2xudf9sbnX/bG95/2xvef9ucXv/
    +c3V8/2dqdP9sbnX/am13/2dqcf9nanT/Z2p0/2Zobv9qbXf/am13/2Rncf9qbHP/am13/2xvef9sb3n/
    +Z2px/2Zpc/9wc33/am13/2xudf91d33/cHJ5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/
    +cHN9/3Byef9wc33/c3Z//25xe/9ucHf/bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn//
    +d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/d3qD/3d6g/9wc33/c3V8/3N1fP95fIb/cHN9/3Bzff9zdn//
    +e36H/3Bzff9zdn//bG95/2xudf91d33/c3Z//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/
    +cHJ5/25xe/9zdn//dXiB/3d5f/95e4H/d3qD/3d6g/93eX//cHJ5/3N2f/93eoP/cHN9/2ptd/91d33/
    +cHN9/2hrcv91eID/b3J7/2xueP9zdn7/cHN9/3Byef9ucHf/bnF7/2xvef9ucXv/cHJ6/21wef9tb3f/
    +bG51/3N1fP9wc33/Zmlz/3V3ff9nanT/cHN9/25xe/9nanT/c3V8/25xe/9sb3n/bnF7/25xe/9qbXf/
    +bG51/25xe/9nanH/Zmhu/2dqcf9nanT/ZGdx/3V3ff9qbHP/Z2px/25wd/9sb3n/Zmhu/25xe/9qbXf/
    +bnF7/2Zpc/9qbHP/amxz/2xvef9sb3n/cHJ5/3Byef9oa3X/bG51/29ye/9tcHr/c3Z//25wd/9ucXv/
    +dHZ9/21vd/9tb3b/b3F6/2xudf92eHz/dXd9/25wd/9maXP/cHJ5/2ptd/9sbnX/bG51/25wd/9zdXz/
    +am13/2RmbP9tb3P/dXd9/2xudf92eHz/bW9z/2xudf9zdXz/bG51/2xudf9qbHP/dXd9/2xudf9ucHf/
    +bnF7/3V4gf9wc33/am13/2dqdP9zdn//dXd9/3Bzff92eHz/bnF7/2ptd/9zdn//c3V8/3Byef9sbnX/
    +cHJ5/2xudf91d33/am13/3Bzff9zdXz/cHJ5/3Byef9sbnX/amxz/25wd/9nanT/dXd9/2dqdP9kZ3H/
    +ZGdx/2dqcf9qbXf/amxz/25xe/9qbHP/am13/3N1fP9sb3n/bnF7/21vc/9sbnX/bnF7/2xudf9sbnX/
    +bG95/2xvef9qbXf/bG51/2xudf9vcXX/b3F1/25wd/9ucXv/bnF7/3V4gf95e4H/bnF7/3d5f/9wcnn/
    +d3l//2dqdP9zdn//cHJ5/3Byef93eX//bnF7/2xvef9qbXf/b3F1/29xdf9vcXX/bG51/29xdf9sbnX/
    +c3Z//3N2f/9ucXv/bnB3/3Bzff9zdn//c3Z//3N2f/9ucXv/dXiB/3V4gf9sb3n/bnB3/3Bzff9wc33/
    +cHN9/3Byef9wcnn/d3qD/25xe/9sb3n/eHl9/3Byef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/
    +ZGdx/2xudf9nanT/bG51/2xudf9sbnX/Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX//
    +Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/bnB3/3N1fP9zdn//Z2p0/29xdf9vcXX/dXd9/2xudf9ucHf/
    +dXd9/3t9g/9ucHf/cHJ5/2ptd/9nanT/bnF7/3Bzff9maXP/bG51/3Bzff9nanT/am13/2ptd/9sb3n/
    +am13/2psc/9nanH/am13/2xvef9wc33/cHJ5/2xvef9wc33/bnF7/2psc/9sb3n/bG95/3Bzff9qbXf/
    +d3l//3d5f/9oa3L/d3l//3N1e/9sb3n/b3J8/3d6g/91eIH/cHN9/3d6g/9zdn//dnmC/3J1fP9rbnf/
    +aWx2/2dpb/9qbXf/Z2p0/2Rncf9ucHf/Zmlz/2dqdP9nanT/ZGdx/25wd/9kZ3H/Zmhu/2dqdP9qbXf/
    +ZGdx/2Rncf9nanT/Z2p0/2dqcf9nanH/Z2p0/2Jlbv9wcnn/amxz/2psc/9zdXz/bnF7/2xudf92eHz/
    +bnF7/2xvef9maXP/amxz/2psc/9ucXv/bG95/3Z4fP91d33/bG95/2xveP9ydH3/cXN7/3V4gf9wcnn/
    +c3Z//3R3gP9ucHf/bG93/21wef9oa3X/dXd9/25xe/9sbnX/bG51/3Byef9sb3n/bnF7/3N1fP9wc33/
    +c3Z//2xvef9nanH/bnB3/3d5f/9sb3n/d3qD/2xvef9wc33/dXiB/25wd/9sb3n/bG51/3V3ff9ucHf/
    +bG51/2xvef91d33/bnF7/2ptd/9maXP/c3V8/3N1fP9wcnn/dnh8/2xudf9sbnX/c3V8/25xe/9wc33/
    +bnF7/3Bzff9zdXz/dXiB/25xe/91eIH/dXiB/3Bzff91eIH/dXiB/3Bzff97fYP/c3Z//36Biv91d33/
    +am13/2xvef9ucXv/cHN9/2xvef9zdXz/bnB3/3Bzff91d33/cHJ5/3Bzff9qbHP/amxz/25xe/9qbHP/
    +Z2px/2xvef9sb3n/bG51/2xudf9nanT/bG51/2psc/9sb3n/am13/2xvef91d33/dnh8/2ptd/9zdXz/
    +bG51/25xe/9kZ3H/bG95/2xudf9sbnX/dXd9/2xvef9qbXf/am13/29xdf9ucHf/b3F1/2xudf9ucHf/
    +b3F1/3N1fP9zdXz/cHJ5/3N1fP92eHz/cHJ5/3Byef9zdXz/bG51/3V3ff9zdXz/amxz/21vc/9ucXv/
    +bG95/2xvef9nanT/Z2px/2ptd/9nanH/Z2px/25xe/9nanT/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/
    +ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/
    +dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3N1fP9qbXf/
    +bG51/3V3ff97fYP/b3F1/3N1fP9sbnX/bG51/25wd/9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn//
    +c3V8/21vc/9ucHf/bG51/3Byef9zdXz/dnh8/3Z4fP9zdXz/dnh8/3N1fP9ucHf/c3V8/3Byef9zdXz/
    +am13/3h5ff93eX//b3F1/3p9g/9vcnr/bW92/25xe/9zdXz/cHN9/2xudf9sb3n/am13/2xudf9qbXb/
    +a254/2tud/9sb3n/c3V8/3Byef9vcXX/d3l//3V3ff9zdXz/cHJ5/29xdf92eHz/cHJ5/25wd/9wcnn/
    +cHN9/25wd/9ucHf/c3V8/3N1fP9tb3P/bG51/2xvef9nanT/c3V8/2xudf9sb3n/dXd9/3Byef9ucHf/
    +d3l//3Byef9zdXz/amxz/25wd/9sb3n/dXd9/3N2f/93eX//dXd9/3J1fv9sb3j/bW94/2psc/9wc33/
    +amxz/2ptd/9sb3n/aGtz/2ttdf9vcnz/bW92/3h6gP9zdn//c3V8/25wd/9zdXz/Zmlz/2Rncf9gY2z/
    +Zmhu/2Zpc/9gY2z/XWBq/2Rncf9sb3n/ZGdx/3Byef9kZ3H/am13/2dqdP9iZW7/Zmhu/2Jlbv9nanT/
    +amxz/2psc/9sbnX/c3V8/25xe/9qbXf/Z2p0/2xvef9ucXv/c3V8/3V3ff9sbnX/bnB3/3N1fP9sb3n/
    +cHN9/25xe/9wc33/cHJ5/3V4gf9zdXz/c3Z//3V4gf9zdXz/c3Z//3N2f/9ucXv/d3qD/25wd/95e4H/
    +am13/2ptd/9qbXf/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/eXyG/3N2f/91eIH/bnB3/25wd/92eHz/
    +bnB3/29xdf91d33/c3Z//25xe/9wcnn/am13/2xvef9ucHf/bG95/2xvef9ucXv/dXd9/3Z4fP9vcXX/
    +dnh8/2ptd/9ucXv/YGJo/2psc/9qbXf/bG51/3d5f/9tb3P/bW9z/2xudf9vcXX/bG51/2xudf9ucHf/
    +bG51/29xdf91d33/dXd9/3N1fP9sbnX/dXd9/25xe/9qbXf/cHN9/2psc/9sb3n/Z2p0/2Rncf9maG7/
    +ZGdx/2Zpc/9nanT/Zmhu/2dqcf9sb3n/am13/21vc/92eHz/cHJ5/2xudf9sbnX/Zmlz/2psc/9nanT/
    +am13/2xudf9maXP/bnF7/2dqdP9tb3P/cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/
    +bG51/3Byef9iZW7/am13/2ptd/9sb3n/Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/
    +Z2p0/2Zpc/9sb3n/c3Z//2ptd/9ucXv/am13/2psc/9ucXv/cHN9/2dqdP9sb3n/bnB3/25wd/9wcnn/
    +cHJ5/3N1fP9sbnX/am13/2ptd/9ucXv/c3V8/3h5ff9zdXz/cHJ5/3Bzff9ucXv/bnB3/3N1fP9ucXv/
    +d3l//2xvef92eHz/eXuB/2xudf96fIP/bnF5/2xudf9sb3n/c3V8/25xe/9nanT/Z2p0/2xudf9sbnX/
    +bW93/21veP9vcXn/am13/3Byef9wcnn/am13/3V4gf9wc33/c3V8/2xvef9sbnX/c3V8/3Byef9wcnn/
    +cHJ5/3V3ff9wcnn/bnB3/25wd/9sb3n/bG95/2ptd/9nanT/Z2p0/3Bzff9sbnX/amxz/3N2f/9sb3n/
    +Z2p0/25xe/9qbXf/bnF7/2dqcf9tb3P/bG51/3h5ff9wc33/c3Z//3d5f/9ucXv/a251/2lsdv9nanT/
    +bnF7/2psc/9qbXf/bnF7/21vd/9ucXv/cHN8/2xudf93eX//cHJ5/21vc/9tb3P/c3V8/3N1fP9wcnn/
    +bG95/2xvef9zdn//am13/2dqdP9wc33/eXuB/3Bzff97fYP/c3V8/3N2f/9zdn//bG95/2xvef9sbnX/
    +c3V8/25wd/9ucHf/bG51/3V3ff9ucXv/bG51/2psc/9wc33/cHN9/3N1fP93eoP/bnB3/29xdf9wc33/
    +bG95/2ptd/9qbHP/amxz/2Zpc/9sb3n/bG51/2xvef9ucXv/am13/2xvef9qbXf/bG51/3V3ff9sbnX/
    +d3l//2ptd/9maXP/Zmlz/2ptd/9qbXf/Zmlz/2psc/9maG7/Z2p0/3Byef9qbHP/bG95/2dqcf9nanT/
    +bG95/2Jlbv9gY2z/Zmlz/2Zpc/9maG7/Zmhu/2dqdP9kZ3H/Z2px/2dqcf9qbXf/am13/3Bzff9wc33/
    +bG51/3N1fP9sbnX/c3V8/2Vmav9ucHf/bG51/2xudf95e4H/b3F1/29xdf9qbHP/bW9z/21vc/9ucXv/
    +bnB3/3Byef9ucHf/d3l//3V4gf95e4H/dXiB/3l7gf9wc33/dXiB/3d6g/9wc33/eXuB/3l7gf9ucXv/
    +cHJ5/3Bzff9ucXv/cHN9/25wd/9ucHf/c3Z//25xe/9ucXv/eXuB/3V4gf9wc33/cHJ5/2xvef9wc33/
    +c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/
    +e36H/3N2f/97fYP/cHN9/3t9g/9zdn//c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/
    +dXd9/2xudf9ucHf/cHN9/3t9g/9ucXv/cHN9/25wd/9sbnX/bnF7/25xe/9qbHP/bG51/25wd/9ucHf/
    +bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/cHN9/3N2f/93eoP/c3Z//3V4gf91eIH/cHN9/25xe/9wc33/
    +cHJ5/3Z4fP9wcnn/d3l//3t+h/9ucXv/fX+G/3Fze/9rbnf/cHJ5/3N1fP9zdXz/bG95/2ptd/9qbHP/
    +aGpx/2ptdP9sb3n/cnV+/21wev91eIH/c3Z//3Byef9/gYf/d3qD/3l7gf9zdn//cHN9/3V4gf9zdn//
    +c3Z//3t9g/93eoP/eXuB/3V4gf9zdn//dXiB/3N2f/9sb3n/bnF7/2xvef95e4H/cHN9/3N2f/95fIb/
    +cHN9/29xdf9wc33/bG95/3N1fP9maXP/bW9z/3Byef92eHz/dnh8/3V4gf94eX3/cnR7/21veP9vcXj/
    +a21z/3Z4fP9sbnX/bnF7/2xvef9rbnX/b3J6/3F0ff9qbXf/dXiB/3N2f/9sb3n/cHJ5/3Bzff9zdn//
    +cHN9/2xvef9ucHf/dXd9/2psc/9qbHP/cHJ5/3N1fP9vcXX/dnh8/25wd/9wcnn/c3V8/2ptd/9wcnn/
    +cHJ5/3d6g/9wc33/bnF7/2xvef91d33/c3V8/21vc/9tb3P/dXd9/3Bzff9zdXz/c3Z//2xudf9nanT/
    +bnF7/2ptd/9qbXf/Z2p0/2psc/9qbHP/bG95/2xudf9wc33/bnF7/2ptd/9ucXv/bG51/2dqdP9ucXv/
    +Zmlz/3V4gf9qbXf/Zmlz/2psc/9tb3P/bG51/2psc/9sbnX/am13/25xe/91d33/b3F1/3Byef9vcXX/
    +cHJ5/3Z4fP9ucHf/am13/3Byef9wcnn/bG51/2ptd/9sbnX/am13/2ptd/9nanT/cHN9/25wd/91d33/
    +dXd9/2xudf91d33/bG51/3V3ff9nanH/cHJ5/2xvef9sb3n/eXuB/25wd/9ucHf/Z2px/21vc/9tb3P/
    +c3V8/2psc/9tb3P/bG51/3V3ff9wcnn/dnh8/3Bzff92eHz/cHJ5/25xe/91eIH/bnF7/3V4gf9wc33/
    +am13/25wd/9wc33/bnF7/3Bzff9vcXX/bnB3/3V4gf9ucXv/cHN9/3d5f/9wc33/cHJ5/2xvef9qbXf/
    +cHN9/25xe/9ucXv/c3V8/2ptd/9zdn//bnB3/2xudf91d33/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/
    +cHJ5/3V3ff9tb3P/dXd9/2dqdP9zdXz/am13/2xvef9sb3n/am13/2Rncf9sb3n/am13/2Jlbv9qbHP/
    +am13/3N1fP9qbHP/bG51/3Byef9+gIb/cHJ5/3Byef9sbnX/bG51/25wd/9wc33/Zmlz/2ptd/9qbXf/
    +am13/2ptd/9ucXv/dXd9/3Byef9vcXX/b3F1/3N1fP9zdXz/eXuB/25wd/9zdXz/cHJ5/2xvef9sb3n/
    +cHJ5/2ptd/91d33/bG51/3V3ff95e4H/b3F1/36Bif9ydHv/bG52/3N1fP9zdXz/dnh8/3V3ff9ucHf/
    +bG51/25wd/9rbnj/cXN6/3V3gP9wcnn/cHN9/3N2f/9zdXz/f4GH/25xe/95e4H/cHN9/3N1fP95fIb/
    +d3qD/3Bzff93eoP/cHN9/3N2f/9ucXv/bnF7/3Bzff9wc33/bnF7/3Bzff9wcnn/d3qD/3Bzff9wc33/
    +d3qD/3V4gf9wc33/dXiB/3V4gf91eIH/am13/3Bzff9wc33/eXuB/3N2f/95e4H/eXuB/3Z4gf9vcnz/
    +b3J4/21wev91d33/bnB3/3Bzff91eIH/b3J5/3Bzff9xc3r/bnB3/3d5f/9zdn//bG95/2xvef9ucXv/
    +dXd9/3Byef9qbXf/bW9z/3V3ff9nanH/bG51/25xe/9ucXv/bW9z/3Z4fP9sbnX/bG95/25xe/9nanT/
    +bG51/2ptd/9wc33/bG51/25wd/9ucHf/cHJ5/25xe/9sbnX/bG51/3V3ff9zdXz/dXd9/3l7gf9wcnn/
    +bnB3/3V4gf9wc33/cHN9/2xvef9ucHf/am13/25xe/9sb3n/c3Z//3N2f/9sb3n/bnB3/25wd/9sbnX/
    +c3V8/2xudf97fYP/bnB3/2xudf9qbXf/am13/25wd/9nanT/am13/2dqdP9sb3n/dXd9/2psc/9qbXf/
    +Z2p0/2xudf91d33/bG51/2dqdP9wcnn/cHN9/2xudf9qbHP/am13/2ptd/9sb3n/Z2p0/2xvef9nanT/
    +bG95/2xvef9maXP/am13/2psc/9ucXv/YmVu/2xudf9nanT/am13/3V3ff9qbXf/am13/2Rncf9sbnX/
    +am13/2ptd/9ucHf/bnB3/2ptd/91d33/c3Z//3V3ff9wc33/dXd9/3Bzff9wc33/c3Z//25xe/91eIH/
    +cHN9/2xudf9ucHf/bnB3/25wd/9wcnn/bG51/2xudf9wcnn/bG51/3Byef94eX3/bG51/2xudf9nanT/
    +ZGdx/2xudf9sb3n/cHJ5/3Byef9tb3P/bnF7/2psc/9qbHP/cHN9/25xe/9sbnX/am13/25xe/9ucXv/
    +am13/2xvef9wc33/bW9z/3V3ff9nanH/c3V8/25xe/9wcnn/c3V8/3N1fP9qbHP/bnB3/25xe/9qbHP/
    +amxz/2psc/9ucXv/Zmlz/2psc/9sb3n/dXiB/2ptd/9ucXv/am13/2xudf9sbnX/c3V8/2Zpc/9qbXf/
    +bnB3/25wd/9zdXz/c3V8/3N1fP9sb3n/bG51/2ptd/9wcnn/cHJ5/3l7gf9ucHf/dXd9/25wd/9zdXz/
    +bG51/25xe/9sbnX/c3V8/2ptd/92eHz/dXiB/2xudf97fYT/cXN6/2dqc/9qbXf/am13/3Bzff91d33/
    +bnB3/2xvef9sb3n/bG94/21wd/91d3z/bG51/3Byef9ucHf/bG51/3l7gf9qbXf/dXd9/2xudf9nanH/
    +d3l//2ptd/9sb3n/bnF7/2ptd/9ucXv/amxz/2xudf9qbXf/bG95/3Byef9ucHf/bG51/3V3ff9sb3n/
    +bnB3/3d6g/9wc33/bnF7/3N2f/9ucXv/bnF7/2dqdP9sb3n/bnF7/3l7gf91eIH/d3qD/3Z4fP9ydHv/
    +a252/2xudP9qbHP/c3V8/21vc/9wcnn/cHJ5/25wd/9sbnX/a212/2Nmb/9sb3n/Z2p0/2Zpc/9sbnX/
    +bG95/3V3ff9ucXv/bG95/29xdf93eX//Zmlz/25wd/9wcnn/c3V8/3Byef97fYP/c3V8/3Bzff91eIH/
    +bG95/25xe/9wcnn/dXiB/3Bzff9wcnn/bnB3/25xe/91d33/bnB3/2xudf91d33/dXd9/3N1fP94eX3/
    +bnB3/29xdf92eHz/cHJ5/3Byef9qbHP/b3F1/2psc/9ucHf/bnB3/3N2f/91eIH/cHN9/3Bzff9ucHf/
    +cHJ5/3Bzff9sb3n/dXiB/25wd/9ucHf/b3F1/25wd/9wcnn/bG51/3Byef9sbnX/bnB3/3Z4fP9tb3P/
    +bG51/2psc/9qbXf/d3l//2xudf9kZ3H/am13/25xe/9qbXf/Z2px/2dqcf9maXP/bG95/2dqdP9ucXv/
    +bnF7/25xe/9wc33/bG51/25xe/9tb3P/dnh8/2Zpc/9ucXv/am13/2ptd/93eX//bG95/2xvef9qbHP/
    +bnB3/29xdf9zdXz/bG51/2ptd/9qbXf/cHN9/25wd/9wc33/bnF7/3N1fP9wcnn/bnB3/25xe/9qbXf/
    +bG95/25xe/9nanT/am13/2ptd/9qbHP/Z2p0/2psc/9nanT/bG95/2Zpc/9sb3n/dnh8/21vc/9sbnX/
    +bG51/2xudf9ucHf/bnB3/3Byef9wc33/bnB3/3V3ff9ucHf/bnB3/3V4gf91eIH/cHN9/25xe/91eIH/
    +d3qD/3Byef91eIH/c3Z//25wd/92eHz/amxz/3Z4fP9wcnn/c3V8/3N1fP9zdXz/amxz/25wd/9wcnn/
    +bG51/2ptd/9sbnX/c3V8/2psc/9vcXX/cHJ5/3V3ff9wcnn/cHJ5/25wd/9ucHf/bnB3/3V3ff9nanH/
    +bG95/2xvef9qbXf/c3Z//3N2f/95e4H/dXiB/3Bzff9zdn//dXiB/3d6g/+Bg4r/d3l//35/g/97fYP/
    +fn+D/3V3ff95fIb/c3Z//3l7gf9ucHf/dXiB/3V4gf9tcHr/fYCH/3V3fv9wc3v/dXeA/3Bzff97fYP/
    +e32D/25xe/9ucHf/cnR7/21wev9tb3f/a254/2Zobv9maXP/Z2px/2dqcf91d33/amxz/2xvef9sbnX/
    +Z2px/3Byef9sb3n/bG95/2xvef9sbnX/bnB3/29xdf9vcXX/bnF7/25xe/91eIH/bnF7/25wd/9ucXv/
    +cHN9/3Byef95e4H/cHN9/3N2f/91eIH/c3Z//25xe/9sb3n/c3Z//3d6g/97fYP/d3qD/3l8hv95e4H/
    +dXiB/3F0fv9ucHf/aGt0/2xvef9sbnX/bG95/2hrdf9rbXf/a254/3F0fP9ucXv/en2D/3l7gf9wc33/
    +cHN9/3Bzff9wc33/bnB3/29xdf9vcXX/dXd9/2Zobv9tb3P/bnF7/25xe/9sbnX/dXd9/25wd/9wcnn/
    +cHJ5/2dqdP9qbXf/bW9z/3Z4fP9sbnX/amxz/2dqdP9qbXf/bnF7/2Zpc/9maXP/cHN9/3N1fP9sb3n/
    +dXd9/2psc/9maXP/bG95/2xudf9qbHP/Zmlz/2dqdP9maXP/bG51/2dqdP9ucXv/bnF7/2ptd/9qbXf/
    +Zmlz/2dqcf9qbXf/Zmlz/3N1fP9nanT/amxz/2psc/9sbnX/am13/2dqdP9maXP/Zmlz/2psc/9zdXz/
    +bG51/2xudf9iZW7/Z2p0/3N1fP9qbXf/Zmlz/2ptd/9sb3n/am13/2dqcf9kZ3H/Zmlz/25xe/9nanT/
    +am13/2xvef9qbXf/cHN9/2Zpc/9nanT/Z2p0/25xe/9gY2z/Zmlz/2Rncf9iZW7/cHJ5/2xvef9nanT/
    +Z2px/2ptd/9qbHP/am13/21vc/9sbnX/Zmlz/3Bzff9nanT/bnF7/2xvef9ucXv/bG95/2ptd/9ucXv/
    +bG51/2xvef9sb3n/Zmlz/2dqdP9qbXf/Zmlz/2dqdP9maG7/Zmlz/2ptd/9nanH/am13/3Byef9kZ3H/
    +Z2px/2Zobv9iZW7/Zmlz/2xudf9qbXf/am13/2xudf9ucXv/amxz/2psc/9ucXv/bG95/2dqdP9nanH/
    +bG95/3Bzff9sbnX/Z2p0/2xvef9qbHP/c3V8/2dqdP91d33/bnB3/3Z4fP92eHz/bnF7/2psc/9sbnX/
    +cHJ5/21vc/9wcnn/cHJ5/3V3ff9ucHf/bW9z/3V3ff93eX//bnF7/25xe/9sbnX/bG51/3Byef9wc33/
    +Zmhu/25wd/9ucHf/Z2p0/2ptd/9wcnn/c3V8/2xudf9vcXX/bnB3/3Byef9zdXz/eXuB/2xudf91d33/
    +dXd9/3V3ff9ucHf/c3V8/25wd/91d33/bnB3/3d6g/91eIH/bnB3/3t9hP9wc33/a212/3Bzff9wc33/
    +dXiB/3l7gf9wc33/cHJ5/3N2f/9ucXv/b3F6/3V3ff9tb3P/dXd9/25wd/9ucHf/d3qD/25wd/9zdXz/
    +bnB3/21vc/92eHz/bnB3/3Byef9wcnn/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/25wd/9tb3P/
    +bG51/2ptd/9qbHP/cHN9/2xvef9qbXf/bnF7/2dqdP9qbHP/YmVu/2Zpc/9qbXf/Z2p0/2Zobv9qbXf/
    +Z2pz/2dqc/9pbHP/a21y/2ttdP90dnz/bnB3/2xvef9tcHr/bnF7/2ptd/9maXH/ZWhy/2xvef9sb3n/
    +YGNs/2Zobv9kZmz/d3l//3N2f/9ucXv/c3V8/3t+h/9sb3n/c3V8/3V4gf95fIb/eHl9/31+gf9zdXz/
    +dXiB/3d6g/9ucXv/cHN9/3Bzff93eX//bnB3/2xvef9ucHf/bG95/3Z4fP9qbXf/bG95/3V3ff94eX3/
    +cHJ5/3V3ff9wcnn/am13/3N1fP9tb3P/am13/2Zpc/9nanT/am13/21vc/9sbnX/c3V8/3V3ff9zdn//
    +c3Z//3Byef9zdXz/eXuB/3Bzff95fIb/c3V8/3N2f/9wc33/c3Z//3V4gf92eHz/e32D/3V3ff9zdn//
    +eXyG/3N2f/9zdn//bnF7/3V4gf93eoP/bnF7/2ptd/9zdXz/c3V8/3Byef9vcXX/bG51/2xvef91d33/
    +bG51/3Byef9ucXv/am13/25xe/9qbHP/am13/2dqdP9ucXv/XWBq/2ptd/9nanT/Zmlz/3N1fP9sb3n/
    +am13/2dqdP9sb3n/bG51/25wd/9tb3P/bW9z/2dqcf92eHz/cHJ5/3V3ff9zdXz/cHJ5/3Bzff9wc33/
    +c3Z//3Bzff9zdn//c3Z//2xvef9qbHP/bnB3/25wd/9zdXz/bW9z/2xudf9zdXz/b3F1/3N1fP94eX3/
    +bnB3/2xudf9vcXX/Z2px/2psc/9wcnn/bnB3/25wd/9ucHf/cHN9/2dqdP9sbnX/cHN9/3N1fP9sb3n/
    +amxz/25xe/9ucXv/bG51/2ptd/9ucXv/bG51/3Z4fP9qbHP/dnh8/25xe/9zdn//c3Z//3Bzff9qbHP/
    +bnB3/3N1fP9tb3P/bnF7/2ptd/91d33/bnB3/25wd/9wcnn/dnh8/3N1fP9wcnn/bnB3/25wd/9wc33/
    +dXiB/2dqdP9wcnn/c3V8/2xvef9wc33/cHN9/3N2f/9ucHf/b3F1/29xdf9zdXz/cHJ5/3l8hv9sb3n/
    +dXiB/3N1fP92eHz/bW9z/3Byef9ucHf/dXd9/25wd/95fIb/d3l//21vc/96e4H/b3F5/2Zpcv9sbnX/
    +am13/3Byef94eX3/bnB3/25wd/9zdXz/cHJ3/3Fzev91d3v/bW9z/3N1fP9zdXz/b3F1/3t9g/9ucHf/
    +cHJ5/25xe/9sbnX/c3V8/2ptd/9sb3n/am13/2ptd/9qbXf/bW9z/2xudf9sbnX/b3F1/3N2f/9ucXv/
    +bnB3/2xvef9sb3n/bnB3/3Z4fP9wcnn/bnB3/3Byef9ucHf/bnB3/2psc/9wcnn/c3Z//3V4gf9wc33/
    +e32D/3N2f/90d4D/bnF7/25xef9rbnf/c3Z//3Byef9wcnn/bnF7/3N2fv9xdHv/bG95/2hrdf9wc33/
    +bG95/2Rncf9qbXf/bG51/3h5ff9zdXz/cHJ5/25wd/93eoP/am13/25xe/9ucXv/cHN9/2xvef9zdn//
    +bG95/25xe/9zdXz/bG51/25wd/9wcnn/d3l//2dqdP9iZW7/Zmlz/2ptd/9zdXz/am13/2xudf9wcnn/
    +d3l//25wd/91d33/bnB3/2ptd/91d33/b3F1/2psc/9nanH/b3F1/2xudf9vcXX/b3F1/3Byef91d33/
    +bnB3/25wd/9sbnX/bW9z/3N1fP9nanT/d3l//2xudf9qbXf/amxz/2psc/9nanH/Zmhu/2dqdP9kZ3H/
    +YmVu/2xudf9gY2z/Zmhu/2BjbP9maXP/bG51/2Rncf9iZW7/Zmlz/2Rncf9maXP/Zmhu/2Rncf9nanT/
    +bnF7/2dqdP9sb3n/bnF7/2xvef9ucXv/Z2p0/25xe/9ucXv/c3V8/2Zobv9wcnn/bnB3/2Zpc/91d33/
    +bnF7/25wd/9qbHP/bnB3/2ptd/9sb3n/amxz/2dqdP9iZW7/bnF7/2dqdP9zdXz/bnF7/2xvef9wc33/
    +bG95/2xvef9sbnX/am13/2ptd/9maXP/YmVu/2xvef9ucHf/c3V8/21vc/9sbnX/cHJ5/2ptd/9wc33/
    +dXd9/25wd/9wcnn/bW9z/2Zobv9qbXf/dXiB/25xe/9sb3n/bG95/3N2f/9wcnn/cHN9/3V3ff91d33/
    +bnF7/2xvef91d33/bnF7/2xudf9qbXf/am13/2xudf91d33/am13/3N1fP9ucXv/bG95/2xvef9qbXf/
    +ZGdx/2dqcf9maXP/Z2p0/2xvef9qbXf/Z2p0/2dqcf9qbHP/bG95/3N1fP9wc33/bG95/2ptd/9tb3P/
    +bnB3/3Bzff9maG7/bG51/2xudf9sbnX/bnF7/25xe/91eIH/cHJ5/3N1fP9ucHf/dXiB/3N2f/95e4H/
    +c3Z//3d6g/9wc33/eXuB/25xe/9wcnn/c3Z//3Z4fP9ucHf/eXuB/3d5f/9wcnn/fH2C/3F0fP9wcnz/
    +c3Z//3N2f/93eoP/eXyG/3Bzff91d33/eHuF/3N1e/9ydHn/cHN9/2tud/9qbXf/am13/2dqcf9zdn//
    +bG51/25xe/9ucXv/bG51/3N1fP9sb3n/bG95/2xudf9vcXX/bG95/25wd/9sb3n/bnF7/25wd/9zdn//
    +bG95/25wd/9ucHf/cHJ5/29xdf92eHz/bnF7/2xvef9ucXv/cHN9/25xe/9sb3n/c3Z//3N2f/91eIH/
    +cHN9/3l7gf9zdn//c3Z//25weP9ucXn/bG51/3Byef9vcXX/bG95/25wd/9zdXz/cXN6/2lsdP9ucHf/
    +dnh8/25xe/9nanT/bG51/25wd/92eHz/c3V8/3N1fP9sbnX/dnh8/2xudf9ucHf/bnF7/3N1fP9ucHf/
    +dXd9/25wd/9wc33/dXiB/25xe/9sb3n/cHN9/3d6g/9ucHf/bG95/3Byef9wc33/eXuB/25xe/9wcnn/
    +cHN9/3V4gf9ucHf/dXd9/25wd/9wcnn/dXiB/25xe/9sb3n/Z2p0/2xvef9qbXf/bnB3/29xdf9ucHf/
    +dXd9/25wd/9ucHf/bnB3/25wd/9wc33/am13/3d5f/9ucHf/bnB3/25wd/9sb3n/cHJ5/3N1fP9wc33/
    +bnB3/25wd/93eX//bnB3/25wd/9ucHf/dXd9/3h5ff9zdXz/bG51/3Byef9wcnn/cHN9/3Byef9ucHf/
    +bnB3/3N1fP9sbnX/am13/2xvef9qbXf/c3V8/2Zpc/9ucXv/am13/2xvef9iZW7/am13/2dqdP9kZ3H/
    +cHN9/2xvef9sbnX/amxz/3Bzff9sbnX/am13/3N2f/9zdXz/bnF7/3l8hv9zdn//eXyG/3V4gf9zdn//
    +c3Z//25xe/9wc33/bnB3/3Byef9zdXz/bG51/2dqcf9wcnn/c3V8/3N1fP9sbnX/bG51/2xvef9qbXf/
    +c3V8/3V3ff9sb3n/bG95/2ptd/9iZW7/Zmlz/25xe/9qbXf/am13/2Zpc/9sb3n/amxz/2psc/9ucXv/
    +bnF7/2dqdP9maXP/bG95/2Zpc/9maG7/ZGdx/2dqcf9kZ3H/bG95/2Jlbv9qbXf/am13/2Zpc/9nanT/
    +Zmlz/2BjbP9kZmz/ZGdx/2Rncf9qbXf/Z2px/2Zpc/9kZ3H/Zmhu/2ptd/9wc33/c3V8/2xudf9nanT/
    +bG51/3Bzff9sb3n/Zmhu/25wd/9ucHf/bG51/25xe/9wc33/dXd9/29xdf9ucHf/bnB3/3N2f/9ucHf/
    +eHl9/3Byef91d33/b3F1/3V3ff9ucHf/bnB3/25wd/9zdXz/am13/3V4gf91d33/bG94/3d5gP9tcHj/
    +aGt1/2ptd/9qbXf/bG95/3N1fP9sbnX/am13/25xe/9vcXf/cHJ5/3V3e/9wcnn/cHN9/3V4gf9ucXv/
    +e36H/25xe/9wc33/cHN9/25xe/93eX//bnF7/3Byef9ucHf/cHJ5/25xe/9ucHf/bnB3/3Bzff9ucXv/
    +c3Z//3Bzff9zdXz/bnF7/2xvef9ucHf/d3l//2xvef9wcnn/am13/2xudf9ucXv/bW9z/3V3ff9ucHf/
    +bnF7/25wd/94eX3/cHJ5/3N1fP9qbXX/aGt1/2hrdP9ucXv/bG51/2ptd/9qbXf/bnF7/2tueP9kZ3D/
    +ZWhx/3J1fP9ucXv/am13/2xudf9ucHf/c3V8/3N1fP9ucXv/bG95/3Z4fP9qbHP/cHJ5/25wd/9zdXz/
    +bnB3/3d5f/9wcnn/bnF7/3Bzff9nanT/bnF7/25xe/93eoP/bnB3/2xvef9nanT/bnB3/3N1fP9qbHP/
    +amxz/2ptd/91d33/bG95/25xe/9sbnX/bG51/25xe/9nanH/Z2px/2Zpc/9maXP/YmVu/2dqdP9qbHP/
    +bG95/3N1fP9qbHP/am13/2dqdP9maXP/cHN9/2dqdP9zdXz/bG51/2xudf9wc33/bnB3/21vc/9tb3P/
    +c3V8/2xvef9sb3n/e36H/25wd/9zdXz/bnB3/3V4gf97fYP/cHN9/3Byef9zdn//c3Z//3d6g/9wcnn/
    +bnB3/3Byef95e4H/cHJ5/3V4gf95e4H/c3Z//3l7gf9zdXz/eXyG/3d6g/95fIb/bG95/3V4gf9zdXz/
    +cHN9/3l8hv95e4H/dnh8/3N2f/9+gIb/dXiB/3V4gf9tb3P/bW9z/2dqcf92eHz/bnB3/3d6g/9zdXz/
    +am13/2xvef9qbXf/Zmlz/2dqcf9nanH/am13/2dqdP9nanT/bG95/3Bzff9ucHf/bW9z/25wd/9tb3P/
    +am13/3N1fP91d33/bG95/2ptd/9ucXv/ZWZq/2dqcf9wcnn/bnB3/25wd/9vcXX/c3V8/25wd/9ucXv/
    +d3l//3V3ff9ucXv/bG95/3V3ff9wcnn/bnF7/2xvef9ucXv/cHJ5/3V3ff9sb3n/d3l//3d5f/91eIH/
    +eXuB/3d6g/9ucXv/c3Z//3t9g/97fYP/fX6B/3Bzff9zdn//c3V8/3Bzff93eoP/dXiB/3V4gf9sb3n/
    +Z2p0/25wd/9ucXv/cHJ5/2dqdP9ucXv/bnB3/25wd/9wcnn/cHN9/3Z4fP9sbnX/bG51/21vc/9wc33/
    +bG95/3N1fP9ucXv/dXd9/2xudf92eHz/bnF7/3Byef91eIH/c3Z//29xdf95e4H/d3l//3N1fP97foX/
    +dXd9/3J0e/9zdn//dXd9/31+gf97fof/dXiB/3V4gf91eIH/dHZ9/3J1f/92eH//bnF7/3N1fP9wcnn/
    +bW9z/3l7gf9sbnX/bnB3/3Byef9ucHf/c3V8/25wd/9ucHf/bG51/2ptd/9qbHP/Z2p0/2psc/9qbXf/
    +bG51/3N1fP9tb3P/amxz/2ptd/9sb3n/am13/3d5f/9sbnX/bG95/2ptd/9qbXf/cHN9/2ptd/9zdXz/
    +cHJ5/25wd/9ucHf/c3V8/2xvef91d37/cHN4/3R2ff9ydX3/eHqA/3V4gf9zdn//b3J8/29yfP9vcnj/
    +aGpy/2hrdP9zdXz/bG95/2Zpc/9sb3n/am13/3V3ff9wc33/cHN9/25xe/94eX3/am13/3Bzff91eIH/
    +c3Z//2xvef91d33/b3F1/2xvef9ucXv/Z2p0/25xe/9wc33/eXyG/3Byef9ucHf/am13/3N2f/93eoP/
    +bnF7/25wd/9wcnn/dnh8/25wd/9ucXv/bW9z/2xudf9zdXz/bG51/2psc/9qbXf/bG95/2ptd/9ucHf/
    +bG51/25wd/93eX//am13/25wd/9sbnX/am13/25xe/9nanT/c3V8/2ptd/9sbnX/cHJ5/2xudf9sbnX/
    +bG51/3N1fP9tb3P/bnB3/3V3ff9sbnX/am13/2dqdP9ucXv/dXd9/2xvef9nanT/am13/2xudf9wc33/
    +amxz/2psc/9nanT/c3V8/2xudf9zdXz/dXd9/3Byef9zdn//bG95/3N2f/9ucXv/cHN9/2dqdP9ucXv/
    +bnB3/2dqdP9wc33/bG95/25wd/9ucHf/d3l//3Byef9wcnn/Z2px/2xudf9iZW7/bnF7/2psc/91eIH/
    +bG95/2psc/9maXP/Z2p0/2Zobv9maG7/ZGdx/2Zobv9iZW7/YGNs/2Rncf9nanT/ZGdx/2Rncf9kZ3H/
    +YGNs/2Rncf9sb3n/bG95/2dqdP9maXP/Z2p0/11fZf9iZW7/bG95/2xvef9qbXf/bG51/2xvef9qbXf/
    +bnF7/3Z4fP94eX3/cHJ5/2xudf9zdn//cHN9/3N1fP9ucHf/bnF7/3Bzff93eX//bnB3/3Z4fP92eHz/
    +c3V8/3V3ff9wc33/b3F1/29xdf9zdXz/bnB3/3N1fP9tb3P/bG51/2xudf9sbnX/cHN9/2ptd/91d33/
    +Z2p0/2Rncf9sbnX/bG95/2xvef9nanT/bG51/2xudf9sbnX/bnB3/3Bzff91d33/b3F1/25wd/9ucHf/
    +c3V8/3Byef92eHz/cHJ5/3V3ff9qbHP/c3Z//3Bzff9wcnn/dXiB/3V3ff9sbnX/eHl9/3V3ff9wcnn/
    +dXiB/3Byef9sb3j/b3F1/2xvef9zdn//eHl9/2xvef9wcnn/cHN8/21wev9tb3j/cHJ5/2dqcv9maXP/
    +Zmlz/2Rncf9wc33/amxz/2psc/9sb3n/am13/2ptd/9qbXf/am13/2xudf9qbHP/bG51/2xudf9nanT/
    +am13/2ptd/9ucXv/amxz/2xudf9qbXf/cHN9/2ptd/9zdn//am13/3Bzff9qbXf/bnB3/3V3ff9ucHf/
    +dXd9/25wd/9wcnn/cHJ5/3Byef9tb3P/bnF7/21vd/9ucXn/bW93/3R2ff9sb3n/am13/2ptd/9ucXv/
    +b3F4/2hrc/9sb3n/d3l//3N2f/9sb3n/bnF7/25wd/9ucXv/Z2p0/2dqdP9qbXf/bnF7/2Zpc/9nanT/
    +Z2p0/2ptd/9nanT/bnF7/2xudf9qbXf/bG51/2psc/9tb3P/bnF7/3l7gf9tb3P/amxz/2psc/9ucXv/
    +cHN9/25xe/9ucXv/c3Z//3l7gf9zdn//dXiB/25xe/9wc33/d3qD/3N1fP9zdXz/bnB3/25xe/9ucXv/
    +c3Z//3N1fP9wc33/eXyG/3N2f/9wc33/c3V8/3N2f/93eoP/c3Z//3t9g/9zdn//cHJ5/3t9g/9zdn//
    +d3l//3V3ff93eoP/c3Z//3d6g/97fof/c3Z//3N1fP9zdn//eXuB/3l8hv9zdn//bG95/3N2f/9wcnn/
    +d3l//3Byef9ucHf/bnB3/3h5ff9sbnX/cHJ5/3Z4fP9wcnn/bnB3/2ptd/9ucXv/bG51/2xvef9nanH/
    +bnF7/2xudf9nanT/bnF7/2ptd/9qbXf/Z2p0/3N1fP9sbnX/Z2p0/2xudf9qbXf/Zmlz/3N1fP9qbXf/
    +fn+D/3Z4fP9wcnn/c3V8/3N2f/9sb3n/bnF7/25wd/9wcnn/bnB3/2xvef9wc33/d3l//25xe/9wcnn/
    +cHN9/25wd/9ucHf/d3l//3N2f/91d33/bnB3/3N1fP9lZmr/Zmlz/25xe/9sb3n/am13/2dqcf9qbXf/
    +amxz/2dqdP9ucHf/cHJ5/2dqdP9kZ3H/bnF7/2ptd/9nanT/amxz/2ptd/9qbXf/cHJ5/2psc/9zdXz/
    +c3V8/25wd/9zdXz/dXd9/29xdf9ucXv/dXiB/3Bzff91d33/bG95/25xe/9wcnn/bnF7/3Bzff9wcnn/
    +eXuB/25wd/9qbXf/bnF7/3V4gf9wc33/bnF7/3V4gf9ucXv/cHN9/3Bzff93eoP/eXyG/3N2f/9zdn//
    +cHN9/3d6g/9zdn//e32D/3d6g/95fIb/cHN9/3l7gf91eIH/c3V8/3d6g/91eIH/c3Z//3t+h/97fob/
    +d3qE/3p8g/90dn7/bXB6/25wd/9sb3n/cHN9/3d5f/9ucXv/bnB3/25xe/9xdH7/c3V9/3d5gP9wc33/
    +bnF7/2xvef9ucHf/eXyG/25xe/9ucXv/cHN9/25xe/9wc33/cHJ5/25xe/9zdXz/cHJ5/25xe/9sb3n/
    +bnB3/21vc/9ucHf/c3V8/25wd/9sb3n/bnF7/3d5f/9ucXv/d3qD/25xe/9zdn//cHN9/2xvef91d33/
    +bG95/3Z4fP9ucHf/c3V8/25wd/9ucXv/bnB3/3Bzff9tb3f/bnB3/21vc/9ydHz/bnB3/25wd/9wcnn/
    +cHJ5/3Fzef9oa3P/aGtx/3V3ff9wcnn/Z2px/2xvef9sbnX/dnh8/3N1fP91eIH/c3Z//3V4gf9sb3n/
    +bG95/3Bzff9ucXv/bG95/3N2f/9sb3n/cHN9/25wd/9sb3n/bnB3/25xe/93eoP/bnB3/2xudf9qbHP/
    +c3V8/3N1fP9ucHf/bnB3/3V3ff92eHz/c3V8/2xvef9qbXf/bnB3/3N1fP9sbnX/am13/2xudf9sbnX/
    +amxz/25wd/9tb3P/bnB3/3V3ff9ucHf/bG95/2ptd/9tb3P/bnB3/2psc/9zdXz/bnB3/2ptd/91eIH/
    +bnB3/25wd/9ucHf/bnF7/25wd/9zdXz/dXiB/25wd/9sb3n/bnB3/3N1fP91d33/bnB3/2psc/9tb3P/
    +bG51/3V3ff9sbnX/bG51/25wd/91d33/bG51/3Byef9zdXz/am13/2ptd/9nanT/bG95/2psc/9qbXf/
    +ZGdx/2ptd/9qbHP/Zmlz/2ptd/9qbXf/am13/2psc/9zdXz/bG51/2xudf9wcnn/bnF7/25xe/91eIH/
    +cHN9/3+Bh/93eX//bG95/3Bzff9zdn//bG95/25xe/9ucHf/cHJ5/25wd/9qbXf/bnF7/3V4gf9ucXv/
    +cHJ5/25xe/9ucHf/cHN9/3d5f/91eIH/c3V8/3Byef9ucXv/ZGdx/25wd/9wcnn/cHN9/2xvef9wcnn/
    +bnF7/2xvef9wc33/d3l//3d5f/9zdXz/bG51/3Z4fP9zdXz/cHJ5/25wd/9wcnn/bG51/3V3ff9qbXf/
    +cHN9/3N1fP9sb3n/bG95/2xvef9qbHP/Z2p0/25xe/9nanT/c3V8/2dqdP9qbXf/Z2px/2psc/9sb3n/
    +amxz/3Byef9maG7/YmVu/2ptd/9sb3n/amxz/2Zpc/9ucHf/Z2px/2xudf9tb3P/bnB3/3Bzff9ucHf/
    +dXiB/25wd/9zdXz/bnB3/3V3ff9zdXz/dXd9/2xudf91d33/bG95/25wd/9zdn//dXd9/29xdf92eHz/
    +eHl9/3J0e/92eH7/bXB4/2hrdP9qbHP/Zmlz/3Byef91d33/am13/21vc/9sb3n/bm92/21weP92eH//
    +bnB3/2xvef9wc33/bnF7/3d6g/9zdn//d3qD/3t9g/93eX//fn+D/3d5f/93eX//e32D/3p7f/97fof/
    +eXuB/3l7gf95e4H/e32D/3t9g/91eIH/d3l//31+gf9/gYf/d3l//3+CjP93eoP/d3qD/3Bzff9sb3n/
    +dXd9/25wd/91d33/am13/2xvef9qbXf/bnF7/2psc/9rbnj/aGty/2hqc/9maG//am13/2dqcf9qbXf/
    +bnF7/2xveP9tcHj/YmVu/19ibP9sb3n/Z2p0/2BjbP9maXP/bG95/3h5ff9wc33/c3Z//25wd/91d33/
    +bG95/2xvef9sb3n/bnB3/25wd/92eHz/cHJ5/3Byef9sb3n/bnB3/25wd/9ucHf/dXd9/2xudf9qbHP/
    +Z2px/3Byef9ucHf/am13/2xvef9wc33/c3V8/25xe/9ucXv/bG51/25xe/9wc33/bG51/25wd/9ucHf/
    +bnB3/2ptd/9wcnn/b3F1/25wd/93eX//cHJ5/25wd/9vcXX/bG51/25wd/9sbnX/cHN9/2xvef9ucXv/
    +eXuB/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/3d6g/9ucHf/bG51/2xvef91d33/eHl9/3Bzff9sb3n/
    +bnB3/25wd/95e4H/bG51/2xvef9ucHf/d3l//25xe/9wc33/dXd9/2xvef9zdXz/bnB3/25xe/9ucXv/
    +bnF7/2dqdP9sb3n/bG95/2xudf9wc33/cHJ5/25wd/9sb3n/dXd9/25wd/9sb3n/bG51/2ptd/9nanT/
    +bnF7/2xudf99foH/dXd9/21vc/9wcnn/c3Z//25wd/9ucHf/b3F1/2xudf9sbnX/Z2px/3N1fP9zdXz/
    +bG51/21vc/9sb3n/am13/2xvef9zdXz/bG95/3Bzff91d33/cHJ5/2Rncf9ucHf/bnB3/3Bzff9ucHf/
    +bnF7/25xe/9wcnn/cHN9/3d6g/93eoP/c3Z//2xvef91eIH/c3Z//3N2f/9ucXv/cHN9/3N1fP93eoP/
    +bnF7/3d6g/91eIH/cHN9/3N2f/9wc33/bG95/2xvef91eIH/bnF7/3V3ff9sbnX/bG51/2xudf9sb3n/
    +bnF7/2ptd/93eX//bW9z/2psc/9zdn//cHJ5/25wd/9sbnX/cHJ5/2psc/9vcXX/bnB3/25wd/9zdXz/
    +bG51/3Byef9ucHf/dXd9/2xudf9zdXz/bnB3/3h5ff9sbnX/eHl9/25xe/9wcnn/c3Z//2xvef9qbHP/
    +cHN9/3V3ff9sb3j/dHeB/25wef9sb3n/bnF7/25wd/9zdn//dXiB/2xvef9ucHf/bnF7/3R2fP9vcnn/
    +dnh//25wd/9ucXv/bnF7/25wd/95e4H/bnF7/3N2f/91eIH/c3V8/3V4gf9wc33/cHJ5/25wd/9wcnn/
    +dXiB/3Byef9ucHf/bG95/2xvef9wc33/bnB3/21vc/91d33/eHl9/3Byef95e4H/cHJ5/2xvef9ucXv/
    +amxz/3N1fP9qbXf/cHN9/21vc/9wcnn/bnB3/3N1fP9vcXX/dHZ9/21wef9xc3z/bnB3/3N2f/9ucXv/
    +c3Z//3V4gf9wc33/dXd+/2xvef9ydX7/e36H/3t9g/9ucXv/d3qD/3l8hv94eX3/cHJ5/3V3ff9tb3P/
    +cHJ5/2xudf9ucHf/bG51/2ptd/9sbnX/dnh8/25wd/9qbXf/Z2p0/2dqdP9sbnX/bnF7/3V3ff9sbnX/
    +bG51/2Zpc/9sb3n/am13/2ptd/9sb3n/c3V8/3Bzff9wc33/bG95/2ptd/9ucXv/cHN9/3Byef9ucHf/
    +bG51/2xvef9nanT/bnB3/29xdf9zdXz/dnh8/25wd/9qbXf/amxz/2xudf9qbXf/Z2p0/2xvef9qbHP/
    +Zmlz/3Bzff9sbnX/bG95/2ptd/9zdXz/bG51/25xe/91d33/bG51/2psc/9ucHf/dXd9/3h5ff9wcnn/
    +Zmlz/2dqdP9sbnX/dnh8/2xudf9ucHf/b3F1/3d5f/9sbnX/cHJ5/3V3ff9qbXf/bG95/2xudf9sb3n/
    +bnB3/3N1fP9qbHP/bnB3/2xudf9nanT/am13/2xvef9sbnX/bW9z/3N1fP9sbnX/bG95/2psc/9sb3n/
    +Z2p0/25xe/9qbXf/eXuB/3d5f/9sbnX/bG51/3Bzff9sbnX/bW9z/2xudf9sbnX/bG51/2Zpc/9zdn//
    +cHN9/2xvef9vcXX/cHJ5/29xdf9wcnn/c3V8/25xe/92eHz/dnh8/3Byef9maG7/bnB3/3N1fP9zdXz/
    +bnB3/3Byef9wc33/dXiB/3V4gf97fof/eXyG/3d6g/9qbXf/dXiB/3Bzff9wc33/bnB3/29xdf9sbnX/
    +dXd9/25xe/9wc33/c3Z//3Byef9ucHf/bG51/25wd/9qbHP/dXd9/3Byef93eX//amxz/21vc/9sbnX/
    +bnF7/2xvef9ucHf/dXd9/21vc/9ucHf/c3V8/3Byef9ucHf/bG51/3Byef9sbnX/bG51/2ptd/9sbnX/
    +bnB3/2xudf9zdXz/bG51/3V3ff9qbXf/dXd9/25xe/91d33/Z2p0/3h5ff9ucHf/b3F1/3Byef93eoP/
    +c3V8/3l7gf96fIP/c3Z//3Z5g/9ucXr/bG51/2xudf9qbXf/bnF7/3d5f/9tb3P/bW9z/2xudf9ucHf/
    +b3F2/3d5gv9wcnn/bnF7/3Bzff9ucHf/d3qD/25wd/9ucHf/cHN9/25wd/92eHz/b3F1/25wd/9sb3n/
    +bnB3/3Bzff9sb3n/bG95/25wd/9ucHf/c3V8/29xdf9vcXX/dXd9/3V3ff9ucHf/eXuB/3Byef9sb3n/
    +bnF7/2dqdP9zdXz/am13/2xvef9qbHP/bG95/2xudf9wc33/amxz/3Bzff9qbXb/bG53/2hqdP9vcnz/
    +am13/3Byef9wcnj/cXN6/3JzeP9oanP/Z2pz/3N1fP9ucXv/Zmhu/3N1fP9ucHf/dnh8/3Byef94eX3/
    +bnB3/3V3ff9sbnX/bG51/25wd/9sbnX/bG51/3N1fP9wc33/am13/2dqdP9maXP/amxz/2ptd/9zdXz/
    +Z2px/2Zpc/9iZW7/Zmlz/2RmbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Rncf9iZW7/Z2p0/2Zpc/9maG7/
    +Zmlz/2Zpc/9qbXf/Zmlz/2xvef9sbnX/bnF7/3N1fP9qbXf/amxz/2psc/9qbXf/am13/2xudf91d33/
    +b3F1/2xvef91d33/bG95/3Byef9sbnX/dXd9/2ptd/9wc33/dXd9/21vc/9nanH/cHJ5/3Z4fP92eHz/
    +c3V8/2dqcf9sb3n/cHJ5/3t9g/9wc33/c3V8/25wd/93eoP/bnB3/3N1fP91d33/bG51/3Byef9sbnX/
    +cHJ5/3Byef91d33/b3F1/3Byef9sbnX/bnB3/3N1fP9ucHf/bW9z/29xdf9zdXz/b3F1/2xvef9ucHf/
    +cHN9/25wd/9wc33/bG95/3+Bh/93eX//bnB3/25xe/91eIH/cHN9/3N2f/9zdn//cHJ5/2ptd/9kZ3H/
    +dXiB/3Bzff9sb3n/cHJ5/3Bzff9wcnn/c3Z//3l7gf9zdn//c3Z//3l7gf9wc33/Z2p0/25wd/91eIH/
    +c3Z//3Byef9vcXX/bnB3/3Bzff9zdn//d3l//3h5ff9zdn//bG95/3d6g/9zdn//cHN9/25wd/9vcXX/
    +cHJ5/3N1fP9ucHf/dXd9/3N1fP9ucHf/bnB3/3Byef9sbnX/Zmlz/25xe/9ucXv/d3l//2ptd/9qbHP/
    +amxz/2ptd/9qbXf/am13/3N1fP9sbnX/Z2p0/2ptd/9sb3n/Z2px/2Zpc/9nanT/ZGdx/2Zpc/9kZ3H/
    +amxz/2ptd/9nanT/cHN9/2xudf9wcnn/bG51/3Z4fP91d33/dXd9/2xvef95e4H/bnB3/25wd/9wcnn/
    +c3Z//25wd/9zdn//dnh8/29yfP94eoH/bnB5/25wd/9ucXv/bnB3/3Byef93eX//bW9z/21vc/9sb3n/
    +a252/2xudf92eYL/cHJ5/3Bzff9wc33/c3V8/3d6g/9zdn//dXiB/3V4gf9ucHf/eHl9/25wd/9vcXX/
    +bG51/25wd/9wcnn/b3F1/2xudf9tb3P/bG51/3Byef9sbnX/bW9z/3Bzff9wc33/bG51/25wd/9qbXf/
    +am13/2xvef9kZ3H/am13/2Rncf9sb3n/am13/3Bzff9qbXf/dXd9/2ptd/9xc3v/bG53/2ttc/9lZ3D/
    +Z2p0/2Zpc/9maXP/ZGdx/2dqdP9tb3j/am13/21vdv90dn3/dXd9/2dqcf9zdXz/bnF7/3N1fP9qbXf/
    +dXd9/2xvef9ucXv/bW9z/3Byef9wcnn/b3F1/2xvef9ucXv/dXd9/25wd/9ucHf/bG95/25xe/9zdXz/
    +e32D/3Byef9vcXX/bnB3/25xe/9wcnn/b3F1/2xudf9wcnn/cHJ5/3Byef9wcnn/bG51/3Byef9ucXv/
    +am13/2ptd/9sbnX/bnF7/2dqdP9qbXf/am13/2xvef91d33/cHJ5/29xdf9vcXX/bG95/3Byef9ucHf/
    +c3V8/25wd/9sbnX/dnh8/3Byef9ucHf/bW9z/3V3ff9sb3n/d3l//3d6g/9zdXz/bG95/3d6g/97fYP/
    +d3l//3Bzff9sb3n/cHJ5/2xvef92eHz/am13/2xvef9ucHf/eXyG/25xe/93eX//cHN9/25xe/9wcnn/
    +bG95/2xvef9wc33/dXiB/25wd/9ucXv/am13/25wd/9wc33/bnF7/2xvef9sb3n/cHN9/25wd/9sb3n/
    +Z2p0/25xe/9nanT/bnF7/21vc/+Agob/d3l//25wd/9ucHf/dXiB/3Bzff9zdn//c3Z//25xe/9ucXv/
    +Zmlz/3N2f/9ucXv/bnB3/25wd/9ucXv/bW9z/25wd/91d33/bnB3/25xe/9zdXz/am13/2Rncf9qbXf/
    +bG95/2ptd/9nanT/Z2px/2Zpc/9nanT/Z2p0/3Byef9ucHf/bnB3/2dqcf9zdXz/bG95/2ptd/9qbHP/
    +bG51/2xvef9sb3n/bG51/3Bzff9ucXv/am13/2xudf9ucXv/bnB3/2dqdP91d33/c3V8/3d5f/9sbnX/
    +b3F1/3Byef9wcnn/bG95/2ptd/91d33/bG51/2ptd/9sb3n/cHN9/2Zpc/9qbHP/bG95/2xudf9sb3n/
    +Z2p0/2ptd/9qbXf/Z2p0/2ptd/9nanH/am13/2Zpc/9wcnn/c3V8/3V3ff9qbXf/cHN9/2dqdP9maXP/
    +am13/3N1fP9tb3P/c3V8/3N1fP9sb3n/d3qC/25wef9ucHX/bnB3/25wd/9ucXv/d3qD/3Byef9ucHf/
    +b3J8/29xef9sbnT/cHJ6/2dpb/9qbXf/Z2p0/2dqcf9wcnn/am13/2ptd/9ucXv/bG51/25xe/9qbXf/
    +am13/2Zpc/9sbnX/cHN9/25wd/9sb3n/b3F1/29xdf9zdXz/bnB3/29xdf91d33/bnB3/2ptd/91d33/
    +cHJ5/2xudf9ucXv/am13/2ptd/9maXP/bG95/2xvef9ucXv/am13/3Bzff9sb3n/cHN9/21wev9tcHr/
    +bG95/3h6gP91eIH/foCG/3Z5gv93eoP/dXiA/25weP9pbHb/bnF7/3Bzff9maXP/bnB3/2xvef95fIb/
    +dXiB/3t+h/93eoP/dXiB/3Byef9zdn//bG95/25xe/9sb3n/cHN9/3V4gf9wc33/bnB3/25wd/9wc33/
    +c3Z//36Ahv91eIH/c3V8/25wd/9wc33/bnB3/2xudf9ucHf/c3V8/3V3ff9zdn//bnF7/2xvef9zdn//
    +cHN9/3Bzff9ucXv/c3V8/3Bzff9sbnX/bG95/25wd/9zdXz/dXd9/3Byef9sbnX/b3F1/2ptd/9ucHf/
    +bG51/3N1fP9qbXf/bG51/3V3ff9ucXv/bnB3/2xudf9zdXz/bW9z/3Byef91d33/bG51/2ptd/9qbXf/
    +cHN9/2xvef9qbXf/Zmlz/2xudf9qbXf/c3V8/2Zpc/9maXP/Z2px/3Bzff9nanH/bnF7/2xvef9qbHP/
    +am13/2Zpc/9nanH/Zmhu/2Zpc/9kZ3H/Zmlz/2dqcf9kZ3H/Z2p0/2Zpc/9nanT/bG51/2xvef9sbnX/
    +am13/2dqcf9sb3n/Zmlz/25xe/9sbnX/f4GH/3V3ff9sbnX/bG95/3Bzff9sbnX/bnF7/2xvef9qbHP/
    +amxz/2RmbP9wc33/am13/2xudf9wcnn/cHJ5/2xudf9ucHf/c3V8/2ptd/9sb3n/bnF7/2xudf9iZW7/
    +Z2p0/2xvef9sb3n/Z2p0/2ptd/9qbXf/bG95/3Bzff91d33/dXd9/3V3ff9vcXX/d3l//3V3ff9zdXz/
    +bG51/2xudf9sb3n/bnF7/21vc/9zdXz/dXd9/25wd/9ucHf/bnB3/21vc/9nanH/c3V8/2xvef91d33/
    +Z2p0/21vc/9zdXz/bnB3/2xudf9wcnn/d3l//2ptd/9nanT/am13/3V3ff9sbnX/bG51/2xvef9sbnX/
    +am13/2Zpc/9sbnX/bG51/2xudf9ucHf/bW9z/3Byef9sb3n/dXd9/3V3ff93eX//bW9z/3V3ff9sbnX/
    +bG51/2xudf91d33/cHJ5/3d5f/91eIH/cXR+/3Z5gv9wc3r/aGt1/25wd/9ucHf/bnF7/3d5f/9sbnX/
    +bG95/2xvef9ydHv/bnF5/3V4gf9ucHf/cHN9/2xvef9ucHf/dnh8/3Byef9ucHf/bnB3/2xudf9wcnn/
    +bnB3/3Byef9nanT/bG95/3N2f/9vcXX/bnB3/21vc/9sb3n/c3Z//3Bzff9wcnn/dXiB/25wd/9tb3P/
    +eHl9/3V3ff9ucHf/c3V8/29xdf9ucHf/amxz/3N1fP9wcnn/c3Z//25xe/9zdXz/cHJ5/3V3ff9zdX3/
    +bnF7/29xeP90d4D/cHN9/3Bzff9sb3n/cXN7/3Bze/9tb3f/aGp0/2xvef9ucXv/Z2p0/25xe/9sb3n/
    +c3V8/25wd/94eX3/bnB3/3Bzff9wcnn/cHN9/25xe/9zdn//cHJ5/3N2f/91eIH/cHN9/3Byef9sb3n/
    +c3V8/3N1fP97fYP/c3V8/29xdf9vcXX/dXd9/21vc/9ucHf/cHJ5/3Byef9wcnn/dXd9/2xvef9nanT/
    +bG95/2ptd/9qbXf/amxz/2Zpc/9qbXf/Zmlz/2dqdP9sbnX/bG95/3N1fP9wc33/am13/2psc/9sbnX/
    +bnF7/2xudf9zdXz/bG95/25wd/91d33/cHN9/25xe/9ucHf/dXd9/29xdf9zdXz/c3V8/25wd/9ucHf/
    +bnF7/3V3ff9ucXv/d3qD/2xvef9ucHf/bG95/3d5f/9sb3n/bnB3/3Byef95fIb/bnB3/3N1fP9wcnn/
    +bW9z/25wd/9wcnn/bG51/21vc/9wcnn/bG51/25wd/9ucHf/bG51/2xvef9sb3n/amxz/25wd/9ucXv/
    +bW9z/2xudf9sb3n/bnF7/2xvef91eIH/bG95/4GDiv91d33/bW9z/3Byef9wc33/am13/25xe/9sb3n/
    +amxz/2xudf9maXP/dnh8/2xvef9ucHf/cHJ5/25wd/9sbnX/b3F1/3Z4fP9zdXz/c3V8/3N1fP9ucHf/
    +amxz/2xudf9wcnn/bnB3/29xdf9ucHf/bnB3/25xe/91eIH/d3l//3d6g/93eX//bG95/3d5f/9zdXz/
    +cHN9/2psc/9ucHf/cHN9/3Bzff9ucXv/c3Z//3N2f/9wcnn/cHJ5/3Bzff9wcnn/cHJ5/3d6g/95fIb/
    +eXyG/25xe/9zdn//c3Z//25xe/91eIH/e32D/3l8hv91eIH/c3V8/3d6g/97fYP/bnF7/25wd/9ucXv/
    +cHJ5/3Bzff9sb3n/cHN9/3Byef9sb3n/cHJ5/25wd/9wc33/bnB3/25xe/9wcnn/eHl9/29xdf91d33/
    +cHJ5/2xudf9vcXX/d3l//3Bzff97fYP/dXiB/29yfP91eIH/cHN9/21wev9wc33/cHJ5/2xvef93eX//
    +bnB3/2xvef9wcnn/cXR9/21weP91d33/bnB3/3N1fP9sbnX/b3F1/3Z4fP91d33/cHN9/25xe/91eIH/
    +cHN9/25wd/9wc33/am13/3Byef91eIH/c3Z//3N2f/9zdXz/dXd9/3l7gf93eX//c3Z//3t9g/91eIH/
    +c3V8/3l7gf9zdn//c3Z//3l8hv91d33/d3l//3Z4fP97fYP/e32D/3V4gf9wc33/dXiB/3N2f/92eYL/
    +c3Z+/3Bye/9vcXj/c3V8/25wd/9ucXv/bG95/2xvef9xdHz/bG95/2ptd/9wc33/cHN9/2dqdP9zdXz/
    +c3V8/25xe/9sb3n/c3V8/2xvef9qbXf/bG51/3V3ff9ucHf/c3V8/29xdf9wcnn/cHN9/2xvef9qbXf/
    +bG51/3N1fP92eHz/eXuB/3N1fP9sbnX/bW9z/3Z4fP9sbnX/am13/2xvef9sb3n/cHJ5/3Byef9ucHf/
    +amxz/3N1fP9ucXv/bG95/2ptd/9maXP/bnB3/2xudf9sb3n/bG51/2xvef9wc33/c3V8/2xvef9tb3P/
    +bW9z/3Byef9qbHP/c3V8/25wd/9sb3n/dXd9/3V3ff9ucHf/bW9z/3Byef9ucHf/cHJ5/3Byef9sbnX/
    +bG51/25xe/9wc33/am13/3Bzff9qbXf/bnB3/25wd/91d33/bG51/2psc/9ucHf/d3qD/2xvef9wc33/
    +cHJ5/25wd/9ucXv/c3Z//25wd/9wcnn/cHN9/25wd/9wc33/bnF7/3Byef9zdn//d3qD/3Byef9zdn//
    +dXiB/25xe/9wc33/bnF7/3Bzff9wcnn/dXiB/2ptd/+BhI3/eXuB/25xe/91eIH/c3Z//2xvef9wc33/
    +bnF7/2xudf9nanT/Z2p0/3V3ff9ucHf/bG95/3Byef9ucHf/bG51/25wd/91d33/c3V8/3V3ff9ucXv/
    +cHJ5/2xvef9wcnn/c3Z//3N2f/9wc33/cHJ5/25xe/9ucXv/dXd9/3Z4fP93eX//eHl9/25wd/94eX3/
    +cHJ5/3V3ff9qbHP/bW9z/25wd/9ucHf/bnB3/3N1fP9ucXv/bG51/2psc/9nanH/Z2px/2dqdP9sb3n/
    +am13/3N1fP9maXP/amxz/2ptd/9qbXf/am13/3Bzff9zdXz/am13/2ptd/9zdXz/dnh8/2dqdP9wcnn/
    +cHN9/2xvef9ucXv/Z2p0/25xe/9vcXX/amxz/3V3ff9vcXX/c3V8/2ptd/9wc33/cHN9/3l7gf9ucHf/
    +c3Z//2xvef9sb3n/cHJ5/3Z4fP9wcnn/eHl9/3Z4fP9ydHv/dXd8/25wd/9qbHP/bG51/2xudf9sbnX/
    +dnh8/2xudf9sbnX/bnB3/29xeP9tcHj/dHZ9/25xe/9zdn//bnB3/29xdf94eX3/cHN9/3N1fP9ucXv/
    +cHN9/3N2f/9ucHf/bnB3/2xvef9ucHf/c3Z//3N1fP9ucXv/cHN9/3Bzff95fIb/c3Z//3Bzff93eoP/
    +bnF7/25wd/97fYP/d3qD/3V4gf93eoP/cHN9/3N2f/9zdXz/cHN9/25xe/9wc33/cHJ5/3N2f/9zdn//
    +eHqA/3N2fv9vcnr/bnB3/3R2ff9wcnn/c3V8/3V3ff90dnz/c3Z9/29xef9tb3f/c3Z//3Byef9sbnX/
    +cHN9/25xe/9zdn//cHN9/3d5f/9ucXv/cHJ5/29xdf9wcnn/cHJ5/3V4gf9ucHf/c3Z//3V3ff91d33/
    +amxz/25wd/9wcnn/dnh8/3l7gf9zdXz/bW9z/2xudf9zdXz/bG51/2xudf9zdXz/bG95/3Byef9wcnn/
    +c3V8/25wd/9zdXz/cHJ5/3N1fP9ucHf/Z2p0/2xvef9sbnX/bnB3/21vc/9ucHf/cHJ5/3V3ff9qbXf/
    +bnB3/2ptd/9ucXv/Zmlz/3N1fP9vcXX/bnB3/3V3ff9wcnn/am13/2xudf9ucXv/am13/3Bzff9ucXv/
    +bG51/21vc/9ucXv/cHN9/2xudf91d33/bW9z/2xudf9sbnX/dXd9/2psc/9qbHP/bW9z/3V3ff9tb3P/
    +bG95/2xudf9qbXf/bG51/3V3ff9ucHf/bnB3/3Bzff9vcXX/bG95/2xvef9vcXX/cHN9/3V3ff9sb3n/
    +dXd9/25wd/9ucXv/c3Z//2ptd/9sb3n/bG51/3N1fP9nanT/gIKG/3Z4fP9vcXX/dXiB/25xe/9qbXf/
    +c3Z//3Bzff9sbnX/bG51/25wd/91eIH/c3V8/25xe/9sb3n/bnF7/2xvef9zdn//c3Z//3V4gf93eoP/
    +cHN9/3Byef9ucHf/cHN9/3d6g/9wc33/cHN9/3N1fP9ucXv/bnF7/3l7gf93eX//eXuB/3l7gf9ucXv/
    +dnh8/3Byef9zdXz/bnB3/25wd/9wcnn/bnF7/2xvef9wc33/bnF7/2xudf9ucHf/bnB3/25wd/9vcXX/
    +cHJ5/3V3ff95e4H/bnB3/25wd/9wc33/bnF7/3Bzff95e4H/foCG/3d5f/92eHz/fn+D/36Ahv9zdXz/
    +e32D/3+Bh/95fIb/e36H/3N2f/9+gIb/eHl9/3V3ff97fYP/d3l//3l7gf94eX3/e32D/3d6g/9+gIb/
    +c3V8/3d6g/9ucXv/Z2p0/29xdf93eX//c3Z//3l7gf94eoD/dXiB/3R2fv9qbXf/aGty/2dqcf9qbHP/
    +ZGdx/25wd/9nanH/Z2p0/2xvef9qbXT/aWty/3Fzev9qbHP/bnF7/21vc/9sbnX/dnh8/3N1fP9ucHf/
    +cHJ5/3Byef9zdXz/bnB3/25wd/9ucHf/b3F1/25xe/9sb3n/bG95/25xe/9ucXv/c3Z//3N2f/9wc33/
    +eXuB/3N2f/9wc33/fX6B/3l7gf9+gIb/e32D/3d5f/91d33/dXd9/3V4gf93eoP/d3qD/3N2f/93eoP/
    +d3qD/3t+h/97fof/eHuC/3R3gP93eoL/eXuB/3l7gf93eX//dXh+/3R2fP9ucXv/bnB3/25xe/9wcnn/
    +amxz/3Byef9sbnX/c3Z//3V4gf93eX//c3Z//3N2f/9ucXv/cHN9/25xe/93eX//bG95/3Byef9zdn//
    +dXiB/25xe/9wc33/dXiB/3t9g/9/gYf/d3qD/3Bzff91eIH/d3qD/3Bzff91eIH/d3qD/25xe/9sb3n/
    +cHN9/3Bzff9ucHf/cHN9/3N2f/91eIH/c3Z//3N1fP9zdn//cHJ5/3Bzff9sb3n/bnB3/3N1fP9zdXz/
    +b3F1/3Byef9wcnn/c3V8/2xudf91d33/cHJ5/25wd/93eX//c3V8/29xdf9ucHf/cHN9/2xvef91d33/
    +c3V8/2ptd/9sbnX/bnF7/3V3ff9sbnX/bnF7/2xudf9qbXf/bG51/3N1fP9kZ3H/am13/2xudf93eX//
    +amxz/2xvef9qbXf/ZGdx/2xudf9sb3n/Z2p0/2psc/9qbXf/amxz/2ptd/9sbnX/amxz/2xvef9zdXz/
    +amxz/25xe/9qbXf/am13/2xvef9wcnn/bnF7/25xe/93eX//cHJ5/4GEjf97fYP/d3qD/3l7gf91eIH/
    +bG95/3l8hv97fYP/cHN9/25xe/9sb3n/d3qD/3N1fP9ucXv/dXiB/3N2f/9wc33/c3Z//3V4gf93eoP/
    +eXuB/3Bzff9ucXv/bG95/2ptd/91d33/bnB3/3N1fP9ucHf/bG95/25xe/91eIH/d3l//3d5f/93eX//
    +bnF7/3d5f/9wc33/dXiB/2xvef9ucXv/dXiB/3N2f/91eIH/eXuB/3N2f/9ucXv/bnF7/3Bzff9zdXz/
    +cHJ5/3N2f/95e4H/d3qD/25wd/9ucHf/bnF7/3Bzff9wc33/dXd9/3d5f/9wcnn/bnB3/25xe/9zdn//
    +bG95/2xvef9wc33/bG95/3Byef9nanT/bnF7/25wd/9sb3n/dXd9/3Bzff9wcnn/am13/3Bzff9zdXz/
    +dnh8/29xdf9zdXz/am13/2Zpc/9qbXf/c3V8/3Byef9zdXz/dXd9/3J0e/92eH3/bW90/2xudv9tb3P/
    +bG95/2xvef93eX//c3Z//3d6g/90d4D/bXB6/25wef90dn3/b3F2/3V3ff9sbnX/amxz/3V3ff9zdXz/
    +cHJ5/3Bzff9sb3n/bnF7/25wd/9ucHf/b3F1/2xudf9sbnX/bG51/29xdf9sb3n/bnF7/3Bzff9ucXv/
    +cHJ5/3V4gf9zdn//c3V8/3V4gf9zdn//d3qD/3V4gf9wc33/cHN9/3Byef9wc33/c3Z//3N2f/9sb3n/
    +bnF7/3Bzff92eH7/c3Z//29yfP9ucXr/c3Z//3N2f/91d33/c3Z//3R2fP9zdoD/cHN9/3Bzff91eIH/
    +c3Z//3Byef9wc33/cHJ5/3N1fP9wc33/c3V8/3V3ff9wcnn/bnB3/3Byef9ucHf/dXd9/2ptd/9ucXv/
    +bG95/25xe/9maXP/amxz/2xvef9wc33/dXiB/2ptd/9sbnX/bG95/2xvef9sbnX/c3V8/3N1fP9sbnX/
    +am13/2xvef9sbnX/Z2p0/25xe/9wc33/dXd9/25wd/9vcXX/bnB3/2xvef9ucXv/cHN9/25xe/9zdn//
    +dXiB/25wd/9wc33/cHN9/3N2f/9sb3n/d3qD/3Bzff9sb3n/eXyG/3Bzff9vcXX/b3F1/3N1fP9qbHP/
    +cHN9/3Bzff9nanT/am13/2ptd/9wc33/amxz/2ptd/9nanH/Zmlz/2dqcf9maXP/YGNs/2Rncf9nanH/
    +c3V8/2xudf9sb3n/amxz/2Zpc/9qbXf/bnF7/2xudf9tb3P/cHJ5/25wd/9ucXv/bnF7/3Byef9ucHf/
    +cHN9/25wd/91eIH/bnF7/25xe/91eIH/dnh8/3N2f/91eIH/fn+D/3h5ff+Ji5H/fn+D/3l7gf9+f4P/
    +e32D/3N1fP9+f4P/foCG/3d5f/91d33/cHN9/3l7gf91d33/cHN9/3N2f/9wc33/bnF7/3V4gf9zdn//
    +dXiB/3V4gf9zdn//c3Z//3Byef9ucXv/c3Z//25xe/9ucXv/bnB3/25wd/9qbXf/dXd9/3d5f/91d33/
    +d3l//25wd/91d33/bnB3/3Z4fP9sbnX/c3V8/3V3ff9wcnn/cHJ5/3Z4fP9zdXz/b3F1/25wd/9wcnn/
    +b3F1/21vc/9zdXz/dXd9/3d5f/9qbXf/bG51/25xe/9sbnX/dXd9/3V3ff93eX//am13/2psc/9ucXv/
    +am13/2Jlbv9qbHP/am13/2dqcf9maXP/XWBq/2dqcf9kZ3H/Z2p0/3Bzff9qbXf/Z2px/2Rncf9sb3n/
    +bG95/3Bzff9qbHP/c3V8/2xudf9maXP/Z2p0/3Bzff9sbnX/c3V8/3V3ff9xdH3/cnV+/2xudv9tb3b/
    +bG51/2ptd/9ucHf/dnh8/25wd/9wcnn/bnB3/29xef9wcnn/dXh+/3Bzff95e4H/cHN9/2xvef95e4H/
    +c3Z//3V4gf9zdn//cHN9/3N1fP9ucHf/cHJ5/3Byef9wcnn/cHN9/3Byef9sb3n/cHN9/25xe/9wcnn/
    +bnB3/21vc/9wcnn/cHJ5/2xudf9zdXz/bG51/25xe/9wc33/bW9z/29xdf9ucHf/bnB3/3N1fP91d33/
    +bG95/3Byef9sb3n/dHZ9/3R3f/9ucXn/bnB3/25xe/91d33/dXd9/3N2f/91eID/eHqA/3J0e/93eYD/
    +foCG/3l8hv95e4H/e36H/3l7gf9zdn//c3Z//3V3ff93eX//bnF7/25xe/9wc33/dXiB/3V4gf9vcXX/
    +cHN9/3Bzff9zdn//bG51/29xdf9wcnn/dnh8/3l7gf9wcnn/bnF7/3N2f/91eIH/cHJ5/3V4gf93eoP/
    +bnF7/3N2f/9zdn//c3Z//3Bzff93eoP/eXyG/31+gf95e4H/c3Z//3V4gf9zdXz/c3Z//3N2f/9zdXz/
    +dXiB/3t9g/92eHz/eXuB/3d5f/95e4H/dXd9/3t9g/93eoP/c3Z//36Biv91eIH/bnF7/3Byef93eoP/
    +cHN9/3l7gf93eoP/bG95/2xvef9wc33/dXd9/2xvef9zdn//bG95/2xvef9zdXz/cHJ5/2dqcf9qbHP/
    +bW9z/3V3ff9qbXf/c3V8/25wd/9sb3n/cHN9/3V4gf9sb3n/bnF7/2xvef9ucXv/bnF7/3Byef9ucXv/
    +c3Z//3l7gf93eoP/eXyG/3d5f/93eX//fX6B/2ptd/9sbnX/am13/3Bzff9maXP/e32D/3Bzff9tb3P/
    +c3V8/2xvef9nanT/bnF7/25xe/9qbHP/bW9z/2psc/9ucXv/bG51/2Zpc/9sb3n/am13/2Rncf9qbXf/
    +am13/2dqdP9nanT/Z2px/2dqcf9nanH/ZGdx/2dqdP9maXP/Zmhu/2Jlbv9iZW7/ZGZs/25wd/9zdXz/
    +cHN9/3N1fP9nanH/bnF7/2dqcf9wc33/Z2p0/2ptd/93eX//bnF7/3Byef91d33/bnB3/25wd/9vcXX/
    +cHJ5/21vc/9ucHf/cHJ5/3Z4fP95e4H/bG51/25wd/9zdn//bG51/3h5ff91d33/d3l//3Byef9qbHP/
    +c3V8/25xe/9kZ3H/am13/2xvef9nanH/Z2p0/2BjbP9nanH/YmVu/2Jlbv9nanT/am13/2dqcf9kZ3H/
    +bnF7/3Byef94eX3/bW9z/3V3ff9ucHf/Zmlz/2Zpc/9zdn//cHJ5/3V4gf94eoD/c3Z//3J1f/9tcHj/
    +bW92/2xudf9sbnX/bG51/3N1fP9wcnn/cHJ5/25wd/9vcnz/bnB3/3N1fP9sbnX/c3V8/21vc/9sbnX/
    +eHl9/3N2f/91d33/bG95/2xvef9ucXv/b3F1/2xudf9vcXX/b3F1/21vc/9tb3P/b3F1/3N1fP9sbnX/
    +bG95/21vc/9ucHf/cHN9/3Byef9vcXX/eHl9/25wd/9zdn//dXd9/21vc/9sbnX/am13/2xudf9ucXv/
    +bnF7/21vc/9sbnX/bnB3/3V3ff9wc3v/bnB3/25wdP9sb3n/c3Z//3V4gf9ucXv/dHZ8/3V2ev9ucHf/
    +a253/3N2f/9zdXz/dXd9/3V4gf9zdXz/c3Z//3d5f/91eIH/d3l//3N1fP9ucHf/cHJ5/3Bzff9sb3n/
    +amxz/2ptd/9wcnn/bnF7/2Rncf9sbnX/bnF7/3Bzff91eIH/bG95/25xe/9wc33/bnF7/2ptd/9wc33/
    +cHN9/2ptd/9sb3n/am13/2xudf9maXP/cHN9/25xe/9wc33/bG95/2xudf9sbnX/amxz/2xudf9sbnX/
    +amxz/2ptd/9ucXv/Z2p0/2xudf9nanT/amxz/2BjbP9ucXv/am13/2xudf91d33/bnF7/2xudf9sbnX/
    +cHN9/2xudf9zdXz/c3V8/25wd/9ucHf/dXd9/3Z4fP9wcnn/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/
    +cHJ5/3N1fP97fYP/cHN9/3V4gf9wcnn/bG95/25xe/9zdXz/amxz/21vc/9ucHf/bnB3/2xudf9sbnX/
    +bnF7/2xudf9wc33/bG95/3Byef9sbnX/cHJ5/3V3ff9ucHf/cHJ5/25xe/91d33/am13/3+Bh/91d33/
    +bnB3/3Z4fP9ucHf/amxz/2xvef9wc33/Zmlz/2psc/9maXP/am13/2dqdP9nanT/am13/2Zobv9iZW7/
    +Z2px/2ptd/9maXP/ZGdx/2Zobv9kZ3H/Zmhu/2Zobv9maXP/ZGZs/2Rncf9iZW7/ZGdx/2Zobv9ucHf/
    +cHJ5/2Zpc/9wc33/Zmhu/25xe/9kZ3H/am13/2BjbP9kZ3H/bnB3/2ptd/9sb3n/bnF7/2ptd/9qbXf/
    +am13/2xvef9qbHP/bG51/21vc/91d33/dXd9/25wd/9vcXX/c3Z//2xvef91eIH/d3qD/3l8hv9wc33/
    +bnF7/3l7gf91eIH/bnF7/3N2f/97fYP/c3V8/3V4gf9sb3n/bnF7/2ptd/9ucHf/dXiB/3V4gf9ucXv/
    +am13/3V4gf95e4H/e32D/3Bzff93eX//cHJ5/25wd/9ucHf/dXiB/3N2f/95fIb/e32D/3l7gf9ydX//
    +bnF7/25wd/9sb3n/bnB3/2xvef9wc33/bnF7/3Byef9vcXn/c3V9/29yev91eH7/bG95/3V4gf9ucXv/
    +bG51/3Z4fP9wcnn/dXd9/2xudf9vcXX/bnB3/29xdf9qbHP/bG51/2xudf9tb3P/bG51/21vc/9wc33/
    +cHJ5/3Byef9wcnn/cHJ5/3V4gf9ucXv/bG95/3l7gf9ucXv/c3Z//25xe/9ucHf/cHJ5/25xe/9ucHf/
    +bnF7/3Bzff9ucHf/cHJ5/3Byef92eHz/c3V8/25wd/9sbnP/cHJ5/3Bzff9ucXv/am13/29yfP9xdHv/
    +a211/2psdP9wcnn/bG51/2xudf9sbnX/bW9z/3Z4fP92eHz/bnB3/3Z4fP9wcnn/am13/25xe/9zdXz/
    +bnF7/2xudf9qbXf/bnF7/3N1fP9nanH/cHJ5/3Byef91d33/e32D/3Byef91d33/c3V8/3Byef9tb3P/
    +cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/amxz/3Bzff9wc33/cHN9/2ptd/9sbnX/bG95/2dqcf9wcnn/
    +bnB3/25xe/9wcnn/dXd9/2xudf9ucHf/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/d3qD/3Byef9ucHf/
    +bW9z/3Byef9sbnX/c3V8/3Bzff9ucHf/bnF7/3V4gf95e4H/c3Z//3d6g/9ucXv/b3F1/3N1fP9ucHf/
    +Zmhu/2ptd/9qbXf/d3l//2xudf9ucXv/bG51/2psc/9wcnn/c3V8/25wd/9ucHf/bG95/3Bzff9wcnn/
    +bG95/3N1fP9ucHf/dXd9/25wd/9wcnn/am13/2xudf91d33/d3l//3t9g/9+f4P/fn+D/3l7gf+IipD/
    +foGK/3l7gf9+gYr/foCG/3N1fP97fYP/e32D/3V3ff93eX//eHl9/3l7gf91d33/dXd9/3d6g/9zdXz/
    +bG95/25wd/91d33/cHJ5/2xvef9sb3n/Z2p0/2psc/9qbHP/am13/2dqcf9qbXf/Zmlz/2Rncf9maG7/
    +cHJ5/3V3ff9qbXf/c3V8/2Zobv9kZ3H/ZGdx/25wd/9kZ3H/Z2p0/3Bzff9ucXv/cHN9/3Bzff9ucHf/
    +amxz/29xdf9wcnn/bnB3/2xudf9tb3P/dnh8/3V3ff9wcnn/b3F1/3Byef9wcnn/c3Z//3N1fP91eIH/
    +bG95/2ptd/91d33/dXd9/2xudf9ucHf/dnh8/2xudf9wcnn/bG51/2xudf9maXP/am13/3N1fP9zdXz/
    +bG51/2dqcf9wcnn/c3V8/3Z4fP9qbXf/dXd9/2ptd/9maXP/bG51/2Zpc/9maG7/Zmlz/2ptd/9sb3j/
    +bW92/21vdv9tb3f/bnB3/2ptd/9nanT/cHN9/3Bzff9sb3n/b3F4/29yfP9rbnj/cXR9/2hrdf9ucXv/
    +bG95/2ptd/9zdXz/bnF7/3Bzff9qbXf/am13/2xvef9vcXX/bG51/2xudf9sbnX/bW9z/2xudf9ucHf/
    +cHJ5/21vc/9sb3n/am13/3Byef9zdXz/bG95/2ptd/9zdXz/bG95/3N1fP9sbnX/bnB3/25wd/9sb3n/
    +bnB3/25xe/9zdn//bnB3/3Byef9wcnn/c3V8/3Fzev9ucXn/bG95/3Bzff9zdn//cHN9/25wd/9wc33/
    +cXN6/2xud/9sbnX/cHN9/25wd/9wcnn/bnB3/25wd/91d33/c3V8/2xvef9zdXz/bnF7/25xe/9qbXf/
    +bnF7/25xe/9qbHP/bG51/2ptd/9qbXf/Zmlz/2xvef9sb3n/bG95/3N2f/9sb3n/bnF7/25xe/9sb3n/
    +bG95/25xe/9wc33/bG95/25xe/9sbnX/bG51/2dqdP9zdXz/dnh8/3Z4fP9wc33/bnB3/3Bzff9sb3n/
    +bG95/29xdf9wcnn/dXiB/3d5f/9ucXv/c3V8/3N2f/9ucXv/bG95/3V4gf9zdn//cHN9/3l8hv91eIH/
    +cHN9/3Byef93eoP/bnF7/3V4gf9zdn//cHJ5/3Byef91eIH/eXuB/3N2f/91eIH/c3Z//3Bzff92eHz/
    +dXd9/2Zobv9ucHf/cHJ5/3V3ff9sbnX/bnF7/2xudf9nanT/cHJ5/3N1fP9sbnX/bnB3/25wd/9zdXz/
    +bnB3/3Bzff9wc33/bnB3/3V4gf9wc33/dXiB/3N1fP91eIH/e32D/3l7gf95e4H/e32D/3t9g/91d33/
    +g4WM/3d6g/9wcnn/dXiB/3V4gf9nanT/dXiB/3d6g/9wc33/c3V8/3N1fP9zdn//bG95/25wd/9ucXv/
    +bG95/29xdf9sbnX/dXd9/3Bzff9sb3n/bnB3/25wd/9ucHf/b3F1/3N1fP9ucHf/dXd9/2ptd/9nanH/
    +bW9z/3d5f/95e4H/cHJ5/3t9g/9ucHf/c3V8/21vc/91d33/bG51/3Byef93eX//bnF7/3N1fP9wcnn/
    +bnB3/2dqcf9sbnX/bG95/2psc/9sbnX/Z2px/2xvef9zdXz/Z2px/2Zobv9qbXf/ZGdx/2xvef9sb3n/
    +dXd9/2ptd/9qbHP/bnF7/25xe/9maXP/bG51/3N1fP9qbHP/cHJ5/2psc/9qbHP/ZGdx/2psc/9wc33/
    +cHN9/2ptd/9nanT/bG95/25xe/91d33/bG51/3d5f/9ucHf/bG51/2psc/9wcnn/bG51/3Byef9wcnn/
    +dHZ8/21vdv9tcHn/bG51/25wd/9sbnX/Zmlz/2xvef9sb3n/am13/25xe/9vcnn/bXB3/3V3fv9ucHf/
    +cHN9/3Byef9sb3n/d3l//3N2f/93eX//bnF7/2xvef9wc33/bnF7/2xvef9ucXv/cHJ5/3N1fP91d33/
    +c3Z//3d6g/9zdXz/cHJ5/25xe/91eIH/foCG/3V4gf9wc33/d3qD/3N2f/95fIb/c3Z//2xvef9sb3n/
    +bnF7/3Byef9wc33/dXiB/25xe/9ucXv/cHJ5/3N2f/9ydX7/cHJ5/2xvef9ucXv/c3Z//3Bzff9wc33/
    +cnV+/3J0ev9ucHn/a254/3Bzff9vcXX/b3F1/25xe/9wc33/dnh8/3N1fP9ucHf/d3l//3Byef92eHz/
    +bnF7/3N2f/95e4H/cHJ5/25xe/9zdn//cHN9/25xe/91eIH/d3qD/3d6g/97fof/dXiB/3t9g/99foH/
    +e32D/3d6g/93eoP/eXuB/3V4gf91eIH/dXiB/3V3ff92eHz/eXuB/3t9g/9+f4P/eXuB/3Bzff95e4H/
    +cHN9/3Bzff9wcnn/bnF7/3V4gf95e4H/cHN9/3Bzff93eoP/bnB3/2ptd/9ucXv/bnB3/2xvef91eIH/
    +cHN9/2xvef9vcXX/c3V8/25wd/9ucHf/c3V8/2xudf9sbnX/dXd9/3V3ff9wc33/dXiB/3V4gf9zdn//
    +eXuB/3N2f/9maXP/bnB3/3Bzff95e4H/dXiB/3l7gf9zdn//c3Z//3t9g/97fYP/c3V8/3Z4fP93eoP/
    +eXyG/3d5f/97fYP/foCG/3h5ff9+f4P/e32D/35/g/91d33/eXuB/36Ahv9sb3n/am13/3Bzff92eHz/
    +bnB3/3l8hv9wc33/bnB3/25xe/9ucXv/Zmlz/3V4gf97fYP/c3V8/3Byef9zdXz/d3qD/3V3ff93eX//
    +foCG/3Z4fP91d33/c3Z//3t9g/97fYP/d3qD/3V4gf91d33/dXd9/3N2f/95e4H/d3qD/3d6g/9sb3n/
    +bG95/3Byef95e4H/e36H/3Bzff95fIb/cHJ5/3V4gf9zdXz/c3Z//29xdf9zdXz/dXiB/3Bzff93eX//
    +cHJ5/2xvef9qbHP/bnB3/25wd/9tb3P/bW9z/25wd/9zdXz/dXiB/2xvef9ucHf/c3Z//3Byef91d33/
    +c3V8/3d5f/9wcnn/bW9z/3N1fP9zdXz/bG51/25wd/91d33/bW9z/3Bzff9sb3n/bnB3/2psc/9ucHf/
    +dnh8/3N2f/9vcXX/amxz/2xvef9wc33/c3V8/2xudf93eX//bG51/2xudf9qbHP/dXiB/3N2f/9zdn//
    +cHN8/3N1fP9tb3b/cXN6/25wd/9ucHf/b3F1/25wd/9ucXv/c3Z//3Bzff92eYL/dHZ+/3Fzev93eX//
    +bW92/3V3ff9wcnn/bnB3/3N1fP9ucXv/cHN9/2xvef9sbnX/cHN9/2xudf9kZ3H/am13/2ptd/9nanT/
    +Zmlz/2ptd/9wcnn/bG51/21vc/9ucHf/bnF7/3V3ff9sb3n/bG95/3N1fP9vcXX/dnh8/25wd/9sbnX/
    +am13/25wd/9vcXX/b3F1/3Byef9vcXX/dXd9/3Byef90dn3/cXN9/25wd/9tcHn/bXB6/25xe/9ucHf/
    +bnB3/3Byef9wc3r/bW94/2ptd/9zdXz/b3F1/21vc/9ucHf/bnF7/3V3ff9sb3n/bnB3/3V3ff9sb3n/
    +c3V8/3Byef9zdXz/c3Z//25wd/9ucXv/bG95/25wd/9wcnn/cHN9/3N1fP9ucXv/d3l//25xe/9wc33/
    +dXd9/3N2f/9wcnn/d3qD/3d5f/9zdn//c3Z//3Byef9wcnn/bnB3/25xe/9wc33/dXd9/2xudf9tb3P/
    +c3V8/2dqdP9sbnX/bG51/21vc/9wcnn/c3V8/2Rncf9qbXf/bnF7/2xudf9tb3P/am13/2xudf9qbHP/
    +dXd9/25xe/9qbXf/bG95/25xe/9sbnX/cHJ5/3V3ff9ucHf/cHJ5/3d5f/93eX//c3Z//3V4gf91eIH/
    +bG95/3V3ff91d33/Zmhu/25wd/91d33/dnh8/3Byef9wcnn/b3F1/2xudf9wcnn/cHJ5/2Rncf9nanT/
    +am13/2ptd/9nanT/bG51/2Zpc/9maG7/bG95/2dqdP9qbXf/Z2px/2dqcf9qbXf/c3V8/3Byef9wcnn/
    +dnh8/2xudf93eoP/am13/21vc/9qbXf/bG51/2psc/9zdXz/d3l//25wd/9ucHf/b3F1/25wd/9qbXf/
    +bG51/3V3ff9qbHP/amxz/29xdf9wcnn/c3V8/2xvef9ucHf/bG51/2ptd/9sbnX/c3V8/3N1fP9wcnn/
    +amxz/2xudf9qbXf/c3V8/3V3ff9qbXf/d3l//2xudf9ucHf/bG51/2xvef9sbnX/cHJ5/3Z4fP9zdXz/
    +c3V8/2ptd/9sbnX/amxz/2xudf9sbnX/bW9z/21vc/9sbnX/cHJ5/3V3ff9sbnX/bG51/3Z4fP9sb3n/
    +dXd9/3Byef93eX//bnF7/29xdf91d33/cHN9/2xvef9wcnn/eHl9/3Byef95e4H/c3Z//25wd/9qbXf/
    +bnB3/3d5f/91eIH/bnF7/25wd/9wc33/dXiB/3d5f/9ucHf/dXiB/25wd/9sb3n/Z2p0/2ptd/9sb3n/
    +bnF7/25xe/9wc3z/bnB3/29yev9ucHf/b3F1/2xudf9qbXf/bnF7/3N2f/9wc33/bXB6/3F0ff9sbnf/
    +cXR9/2ttdP9qbXf/Z2p0/2psc/9sb3n/bnF7/2xvef9ucHf/bG51/25wd/9sbnX/amxz/25wd/9vcXX/
    +bnB3/2ptd/9ucHf/bnF7/2xvef9sb3n/cHN9/25xe/95e4H/cHN9/3Byef91eIH/cHN9/3l7gf9wc33/
    +bG95/3Byef9ucHf/bnB3/21vc/9wcnn/bW9z/3Byef9ucHf/c3V8/2xudv9sbnX/a211/25xev9ucXv/
    +bnB3/3Byef9ydHv/b3J7/25wef9ucHf/c3V8/25wd/9vcXX/b3F1/3Byef9zdXz/bG51/3N1fP94eX3/
    +bnB3/3V3ff9ucHf/bnB3/3d5f/9wcnn/c3Z//3V4gf91eIH/bG95/3N2f/9wcnn/bnB3/3d5f/9sbnX/
    +cHJ5/3V3ff91d33/b3F1/3N1fP92eHz/c3V8/3Byef9ucHf/bnB3/21vc/9sbnX/c3V8/3d5f/9ucHf/
    +am13/25xe/9kZ3H/bG51/2ptd/9sbnX/bG95/3N1fP9maXP/bG51/2xvef9sb3n/bW9z/2xudf9ucHf/
    +bnB3/3V4gf9ucXv/bnB3/25xe/9wcnn/bnB3/3Byef91d33/bG51/2xudf92eHz/d3l//3N1fP9zdXz/
    +c3V8/25wd/91d33/c3Z//2dqcf9ucHf/dXiB/3t9g/91eIH/d3qD/3Bzff9ucHf/c3Z//3N2f/9sb3n/
    +bnB3/3N1fP9ucHf/bnB3/3Bzff9ucXv/bnF7/3Z4fP91d33/c3V8/25wd/9tb3P/cHJ5/25wd/9sb3n/
    +bnF7/3Z4fP9vcXX/e32D/25wd/9qbXf/am13/25wd/9nanH/cHJ5/3d6g/9sb3n/cHJ5/3Byef9wc33/
    +bnB3/25xe/91eIH/am13/2xvef9ucHf/bnF7/3Bzff9sb3n/bnF7/29xdf9ucHf/bW9z/3N1fP9wcnn/
    +c3V8/2xudf9ucHf/am13/3N1fP92eHz/am13/3V3ff9qbHP/am13/2xudf9qbXf/amxz/2xvef91d33/
    +cHN9/3V3ff9sb3n/bG51/2dqdP9qbHP/bG51/2xudf9sbnX/bG51/2ptd/9wc33/amxz/2Rncf9ucXv/
    +Z2p0/25xe/9sb3n/dXd9/2ptd/9qbXf/cHN9/25xe/9nanT/bG95/3V3ff9sbnX/cHN9/2ptd/9nanT/
    +ZGdx/2xudf9zdXz/cHN9/25wd/9vcXX/bG95/3V3ff94eX3/bnB3/3l7gf9ucXv/bnB3/2dqdP91d33/
    +bnB3/25wd/9wcnn/bnF7/21veP9wcnn/b3J8/3Byef9ucXv/am13/3Bzff9zdn//bG95/3Byef9ydH3/
    +cHJ7/3V2e/9vcXf/cHJ5/25wd/9sbnX/cHJ5/3Bzff9wcnn/bnB3/25wd/9wcnn/bG51/2Rncf9sbnX/
    +bG51/2dqdP9nanT/bG51/25wd/9ucHf/b3F1/3Bzff9wcnn/eHl9/3Byef9sb3n/cHN9/3Bzff93eX//
    +bG95/2xvef9ucXv/bG95/25wd/9vcXX/cHJ5/2xudf9ucHf/cHJ5/3N2f/9vcnz/b3J8/25xev9wc33/
    +cHN9/3Byef9ucHf/bnB3/3Fzev9tb3b/bW91/25xe/9qbXf/bG51/2xudf9sb3n/c3V8/2ptd/9zdXz/
    +dXd9/25wd/91d33/b3F1/25xe/93eX//bnB3/3Bzff9ucXv/c3Z//2xvef91eIH/bnF7/3Bzff95fIb/
    +d3qD/3l8hv97fof/e32D/3V3ff95fIb/e32D/3N2f/9zdn//bnF7/3Bzff9wcnn/bG95/25xe/91eIH/
    +bnB3/3Byef91d33/bG95/3Byef9sb3n/bnB3/3Bzff91d33/amxz/25wd/9wcnn/bnB3/25wd/9ucXv/
    +bnF7/2ptd/95e4H/bnF7/25xe/9zdn//cHN9/3Byef9wc33/d3l//3N1fP9wcnn/dXd9/3V4gf9wcnn/
    +cHN9/25xe/9ucXv/dXd9/3V4gf9maXP/am13/3Bzff94eX3/c3V8/3N1fP9vcXX/b3F1/3Byef91d33/
    +bnB3/2ptd/9wcnn/cHJ5/21vc/9zdXz/bG95/2ptd/91d33/c3V8/3V3ff9qbXf/am13/2xudf91eIH/
    +d3qD/3l8hv9+gIb/c3Z//4GDiv9zdn//c3Z//3Bzff9ucXv/am13/3N1fP95fIb/bnB3/25wd/9ucHf/
    +cHJ5/2xudf9sbnX/c3V8/2dqcf9sbnX/bG95/25xe/9zdn//bG95/2xvef9ucHf/bnB3/25wd/9wc33/
    +cHN9/3N2f/9ucHf/amxz/29xdf91d33/eHl9/2xudf92eHz/bW9z/25wd/9ucHf/bnF7/25wd/91d33/
    +dXiB/3V3ff92eHz/bnB3/2xudf9nanH/bnB3/2xudf9vcXX/bG51/2xudf9qbXf/bnF7/2ptd/9qbXf/
    +c3V8/2psc/92eHz/c3V8/3V3ff9wcnn/bnB3/3N2f/9wc33/am13/2xvef95e4H/bnB3/3Z4fP9ucHf/
    +bG51/2psc/9vcXX/dXd9/3N1fP9sb3n/cHJ5/25xe/95e4H/eXuB/3Byef93eX//bnB3/29xdf9nanH/
    +am13/2Rncf9maG7/Zmlz/2tueP9oa3P/am11/2ptd/9qbXf/bG51/2Rncf9qbXf/c3V8/2xudf9qbHP/
    +b3F6/2xud/9zdXr/bnB3/3Byef9wcnn/bnB3/3N1fP91eIH/cHN9/3N1fP9sb3n/cHN9/25wd/9nanT/
    +b3F1/29xdf9ucHf/bG51/2xvef9ucHf/bG51/2ptd/9ucXv/am13/3Z4fP9sbnX/bW9z/3Byef9wcnn/
    +dXd9/2xudf9nanT/bG95/2ptd/9nanT/bG51/25xe/9ucHf/cHJ5/2ptd/9vcnz/bW92/2xvd/9sb3n/
    +bG95/2dqdP9nanT/Z2p0/2ttdP9sb3n/bXB4/2xveP9zdn//bG95/2xvef9ucHf/cHN9/3N1fP9qbXf/
    +dXd9/3d5f/9qbXf/c3V8/2xudf9tb3P/d3l//2ptd/9ucXv/bG95/3Bzff9qbXf/bnF7/2psc/9maXP/
    +cHJ5/2ptd/9qbXf/cHN9/25xe/9sbnX/cHJ5/3N1fP9ucHf/bnB3/2xvef9wcnn/bG51/2xvef9wc33/
    +dXiB/2xvef9ucXv/d3l//2xvef9ucXv/bnB3/3Bzff9zdn//dXiB/2xvef9wc33/c3Z//25wd/9ucHf/
    +cHJ5/25wd/9nanH/dXd9/25wd/9tb3P/bG51/25wd/9tb3P/bG51/2xvef9sbnX/bW9z/3h5ff91d33/
    +cHJ5/3N1fP9wcnn/cHJ5/3Z4fP9wcnn/Z2px/2xudf9zdn//dXd9/25xe/9zdn//cHN9/3Bzff91eIH/
    +eXuB/3N1fP9ucXv/d3qD/3t9g/92eHz/fn+D/3l7gf97fYP/fX6B/3t9g/97fYP/c3V8/3Bzff91eIH/
    +c3V8/3Byef9zdXz/dXd9/25wd/9+gYr/d3qD/3N1fP9zdXz/cHN9/2xvef95e4H/f4GH/3Bzff9zdXz/
    +cHN9/3Bzff9ucHf/bG95/3N2f/9nanT/bnB3/3Byef91eIH/dXiB/3N2f/9zdn//c3V8/3Bzff9zdXz/
    +c3Z//25xe/9zdn//bnB3/2xvef9ucXv/dnh8/3Z4fP9wcnn/dnh8/21vc/9zdXz/bG51/2xvef9tb3P/
    +c3V8/3V3ff9ucXv/cHN9/2ptd/9nanT/XF9o/2Zpc/9qbXf/amxz/2dqcf9sbnX/bG51/3Bzff9nanH/
    +Zmlz/25xe/9qbXf/c3V8/3V3ff91d33/bG51/2psc/9wc33/am13/2dqdP9qbXf/dXiB/25wd/92eHz/
    +bnF7/25wd/9sb3n/b3F1/3N1fP9wcnn/bnB3/21vc/9sbnX/dXd9/3N1fP9tb3P/eHl9/29xdf9vcXX/
    +Zmhu/3V3ff9ucHf/bG95/3Byef9xdH3/bnF7/3Fze/9ucHf/bnB3/29xdf9sbnX/c3V8/3N1fP9ucHf/
    +b3F1/3J0ev9zdn//dnmD/3N2f/91eIH/bnF7/25xe/91eIH/eXyG/3d6g/91eIH/c3Z//3d6g/9wc33/
    +bnF7/25wd/9sb3n/bG95/2xvef9zdn//dXiB/3Byef9sb3n/dXd9/3Bzff93eX//bnB3/2ptd/9wcnn/
    +cHJ5/3Z4fP9ucHf/bG95/3N1fP9vcXX/am13/2xvef9zdXz/cHJ5/3N2f/9zdn//d3qD/3Bzff9xdH7/
    +c3Z9/3J1fP9zdXz/bnB3/2xudf9sb3n/bnF6/21veP9tb3j/c3Z//2xvef9ucHf/bnB3/3N1fP94eX3/
    +b3F1/3V3ff93eX//bnB3/3V3ff9ucHf/cHJ5/3V3ff9ucHf/bnF7/2xudf9ucXv/Z2p0/3Bzff9qbXf/
    +am13/25xe/9sb3n/Z2p0/2xvef9qbXf/YmVu/2Rncf9maXP/Zmhu/2Zobv9maG7/Z2p0/2Rncf9maG7/
    +Zmlz/25wd/9maG7/Zmhu/2xvef9gY2z/Zmlz/2Rncf9nanH/Zmlz/2Rncf9cX2j/Zmlz/2Zpc/9kZ3H/
    +YmVu/2Zpc/9nanT/YmVu/3N1fP9nanH/Zmhu/2Zpc/9qbHP/Z2px/2xudf9sb3n/am13/2xudf9wc33/
    +c3V8/25xe/9sb3n/am13/2ptd/9zdXz/bnB3/2Zobv9nanT/bnF7/3Bzff9sb3n/bG95/2ptd/9sbnX/
    +bG95/2xvef9sbnX/Zmlz/2ptd/9ucXv/am13/3N1fP9sbnX/cHJ5/3Byef9zdXz/dXd9/2xudf9vcXX/
    +c3V8/25xe/9wc33/bnF7/3Bzff9sbnX/e32D/3V3ff9ucHf/cHJ5/2xvef9nanT/dXd9/3l8hv9sb3n/
    +b3F1/25wd/9ucHf/bnB3/25wd/9zdn//am13/25wd/9wcnn/c3Z//3N2f/9ucHf/cHN9/3Byef9wc33/
    +bnF7/3V4gf9ucXv/dXd9/25wd/9qbHP/bnB3/3V3ff91d33/bnB3/3Z4fP9sbnX/c3V8/25wd/9sbnX/
    +bG51/25xe/9zdXz/c3V8/3V3ff9zdXz/bG51/2RmbP9nanT/am13/2dqdP9sbnX/bG95/25wd/9ucXv/
    +bG51/2dqdP9zdXz/bG95/3V3ff91d33/dXd9/2xudf9sbnX/dXd9/25wd/9vcXX/c3V8/3l7gf9sbnX/
    +c3V8/2dqdP9nanT/Zmlz/2ptd/9ucXv/bG95/2xudf9qbXf/amxz/3Bzff9wc33/bG51/3N1fP9sbnX/
    +bG51/2Jlbv93eoP/c3Z//3V4gf94e4X/eXuC/3V3ff9ydX3/a254/3Byef9tb3P/bnB3/3Byef9zdXz/
    +bW9z/21vc/9xcnj/dHZ+/3l6f/94eoH/foCG/3d5f/95e4H/c3Z//3d6g/97fYP/dXiB/3V4gf9zdn//
    +c3V8/3N1fP9zdXz/cHN9/2xvef9zdXz/d3qD/3N2f/9zdXz/bG95/3Bzff9wc33/d3l//3Byef9qbXf/
    +cHJ5/2xvef91d33/bG51/25wd/91d33/bnB3/2psc/9ucHf/c3V8/2xvef9ucHf/bG51/3Byef9ucHf/
    +cnR6/3N1e/9wcnn/dXd9/2ptd/9sb3n/am13/2tudv9qbXf/am13/3Bzff9sbnX/cHJ5/2xudf9qbXf/
    +dnh8/21vc/9sb3n/c3V8/2xudf9wcnn/bW9z/3Byef93eX//bnB3/2xvef9sbnX/cHN9/2xudf94eX3/
    +bnB3/25wd/93eX//dXd9/25xe/91eIH/dnh8/25wd/9wc33/dXd9/3N1fP9ucHf/bnF7/3l7gf9wcnn/
    +bnF7/3N2f/93eoP/bnF7/25xe/93eX//cHJ5/25xe/9ucHf/bnF7/2xvef9ucXv/bG51/2xvef9wc33/
    +b3F1/25wd/9wc33/bnB3/2psc/94eX3/bnB3/29xdf9ucHf/bG51/25wd/9ucXv/cHN9/3Byef9ucXv/
    +dXiB/3l7gf95e4H/cHN9/3Bzff9ucXv/eHl9/3V3ff9nanH/bG51/3Byef91d33/b3F1/25wd/9tb3P/
    +bG51/25wd/9ucHf/bG51/2dqdP9sb3n/am13/2Rncf9qbXf/bG51/3Bzff9qbXf/bG95/2xvef9kZ3H/
    +Z2p0/3Bzff9zdXz/c3V8/3N1fP91d33/bnB3/3t9g/9zdn//cHJ5/3N1fP9wcnn/am13/3d6g/95fIb/
    +cHN9/3Bzff9zdn//cHN9/3Byef9wcnn/d3qD/2xvef9zdXz/cHJ5/3V4gf95e4H/c3V8/3Bzff91d33/
    +d3qD/3d6g/91eIH/d3qD/3d6g/91eIH/dXd9/3t9g/97fYP/e32D/3l8hv97fof/cHN9/3d6g/9wc33/
    +c3Z//3N2f/93eoP/eXuB/3V4gf95e4H/dXiB/2ptd/9qbXf/cHJ5/25wd/9sbnX/bG51/2xudf9ucHf/
    +c3V8/21vc/9nanT/cHN9/25xe/93eX//dXd9/3Bzff9qbXf/bG51/3N1fP9sb3n/bG51/25xe/91eIH/
    +am13/25xe/9kZ3H/amxz/2Rncf9nanT/cHJ5/2ptd/9nanH/Z2p0/2Rncf9maXP/Zmlz/2Zobv9nanT/
    +YmVu/2Zobv9cX2j/bnF7/2ptd/9ucHf/b3F4/2tueP9tb3f/am12/2dpb/9maXP/Zmlz/2Rncf9maXP/
    +Z2p0/2dqcf9sbnT/a254/2tueP9wc3r/a253/25xe/9tb3P/bnF7/2xudf9sb3n/bnF7/2xudf9qbHP/
    +am13/2Rncf9maXP/Z2px/2xudf9iZW7/Z2p0/2xvef9qbXf/amxz/2dqdP9sb3n/bnF7/3V3ff9wcnn/
    +bnB3/3Bzff9wc33/e32D/3Bzff9ucHf/d3qD/3Bzff9sb3n/dXd9/3l8hv9zdn//d3qD/3N2f/93eoP/
    +cXR9/3Z4fv9ydHv/dHZ9/3Z4fP9ucHf/cHJ5/3Bydv9wcnr/b3F4/25wd/91eIH/bnB3/25xe/9sb3n/
    +cHJ5/3Z4fP9tb3P/am13/3N1fP9qbXf/bnF7/2dqcf9ucXv/dXd9/2xvef9ucXv/bG51/2xvef9qbHP/
    +dXd9/2ptd/9sbnX/dnh8/3N1fP9sb3n/dXd9/25xe/9nanT/Z2p0/25xe/9sb3n/amxz/2psc/9wc33/
    +am13/2xudf9wc33/dXd9/2psc/9qbHP/bnF7/2dqcf9sbnX/bW9z/25wd/9sbnX/bnB3/2xudf9qbXf/
    +bnF7/21vc/9vcXX/dXd9/21vc/9qbHP/eXuB/25xe/9wc33/cHN9/2xvef9ucHf/cHJ5/2xvef9ucHf/
    +bG95/25xe/91d33/dnh8/25xe/9sbnX/am13/3N1fP9ucXv/YmVu/2ptd/9sb3n/bnF7/2psc/9qbHP/
    +Z2px/2dqcf9nanH/Z2px/2dqdP9maXP/am13/2dqdP9kZ3H/bG95/2psc/9wc33/bG95/3Bzff9zdXz/
    +Z2px/21vc/9zdn//cHN9/3Z4fP91d33/c3Z//25xe/95fIb/c3Z//25wd/9ucHf/bnB3/2ptd/9zdn//
    +e32D/25wd/9vcXX/cHN9/25xe/9ucHf/cHJ5/3V4gf9nanT/bnB3/25wd/93eoP/c3Z//2xvef9ucHf/
    +bG95/3Bzff9wcnn/cHN9/2xvef9ucXv/bG51/2xudf9ucHf/bnF7/3N1fP9zdXz/dXd9/25wd/9wcnn/
    +am13/2xvef9qbXf/cHN9/3Bzff9sb3n/cHN9/2xvef9iZW7/YGNs/2psc/9sb3n/Zmlz/2xudf9sbnX/
    +bW9z/3N1fP9tb3P/amxz/3N1fP9ucHf/d3l//3V3ff9ucXv/am13/2ptd/9wc33/am13/2ptd/9ucHf/
    +e32D/3Byef91d33/bG51/25wd/9ucHf/cHJ5/3V3ff9ucHf/amxz/25xe/9wcnn/bG95/25xe/9sbnX/
    +cHN9/29xdf9sbnX/Z2px/2xvef9qbHP/am13/2xvef9tb3b/b3F5/29yev9tb3P/cHJ5/2xvef9sbnX/
    +bG51/3N1fP9vcXX/a211/2xudv9vcXn/cnR7/25wd/9wcnn/bG51/2xvef9qbHP/am13/2xvef9sbnX/
    +Z2p0/25xe/9nanT/am13/2xudf9qbXf/Zmlz/2ptd/9sb3n/bG95/2ptd/9qbXf/c3V8/3Byef92eHz/
    +cHJ5/25wd/9sb3n/bG95/3N1fP9wcnn/bG51/3N1fP9qbHP/Z2px/2xudf9ucHf/bW9z/3Bzff9qbHP/
    +bG51/25weP9xdHv/cXR8/25xe/91d33/b3F1/3N1fP9ucHX/bnB3/21vdf9rbXP/c3V8/2ptd/9sb3n/
    +am13/2xudf91d33/bG51/2xvef91d33/bnB3/3Byef9sbnX/cHN9/3V4gf9wcnn/bG95/2ptd/9wcnn/
    +b3F1/3h5ff9tb3P/bG51/3N1fP91d33/bnB3/3l7gf9zdn//bnF7/3Byef93eX//d3l//25xe/9wcnn/
    +d3l//2xvef9sb3n/cHN9/3V3ff9ucHf/bnB3/3V3ff9ucHf/bG95/2xudf9wcnn/bnB3/3Byef9ucHf/
    +bnB3/25xe/9qbXf/bW9z/3Bzff9qbHP/ZGdx/3N1fP9qbHP/am13/2xvef9nanT/amxz/2xudf9qbXf/
    +bG51/2xudf9sb3n/dXd9/2xvef9ucXv/bG95/2xudf9zdXz/bG95/2BjbP9maXP/bG95/3Bzff9nanT/
    +am13/2dqdP9qbHP/am13/2ptd/9qbXf/Z2p0/25xe/9sb3n/Zmlz/2xvef9sbnX/cHN9/2ptd/9zdXz/
    +c3V8/2Rncf9sbnX/dXd9/3N2f/91d33/dXd9/3V4gf9ucXv/dXiB/3Bzff9ucHf/cHJ5/25wd/9sb3n/
    +c3Z//3t9g/9sb3n/b3F1/25wd/9ucHf/b3F1/29xdf9zdXz/Zmhu/25wd/9sbnX/c3V8/3Bzff9qbXf/
    +bnB3/2psc/9wcnn/am13/3Byef9sbnX/cHJ5/2xudf9tb3P/bG51/3Byef91d33/bnF7/3d5f/9ucHf/
    +cHJ5/3Byef9ucHf/cHN9/3V3ff95e4H/dXd9/3V3ff9wc33/bG95/2ptd/9vcXX/bnB3/2ptd/9sb3n/
    +bnB3/21vc/9zdXz/bW9z/2psc/91d33/am13/3V4gf94eX3/cHJ5/25wd/9ucHf/cHJ5/2xudf9qbXf/
    +bG95/3N2f/9qbXf/bG95/2Rncf9nanT/Zmlz/3Bzff9wc33/am13/2dqdP9sb3n/bnF7/2xudf9ucXv/
    +amxz/2xvef9sbnX/bnF7/2Rncf9zdXz/bG51/21vc/9sbnX/b3F4/3FzfP9vcnv/bnB3/3N2f/9zdn//
    +bnF7/3Byef9wc33/bnB3/25xe/9xc3v/cXR9/3d5gP9wc33/dXiB/3Bzff9ucXv/bnB3/25xe/9wc33/
    +bnF7/25wd/93eX//bG95/25xe/9wc33/cHN9/2xvef9wcnn/c3Z//3Bzff9wc33/c3V8/3d6g/91eIH/
    +e32D/3Byef9zdn//cHN9/3N2f/93eX//c3Z//3Byef91eIH/cHN9/3Bzff9zdn//d3qD/3V4gf97fYP/
    +c3V8/3Bzff9xdH3/cnR7/3F0fv9wc3r/cHJ5/2xudf9wc33/am13/25xev9tb3b/a210/3N1fv9wc33/
    +c3Z//2xvef9wcnn/dXd9/2xudf9zdXz/eHl9/3Bzff9zdXz/bnB3/3V3ff93eoP/c3Z//3N2f/91d33/
    +eXuB/3N1fP97fof/c3Z//3N2f/9+gIb/e32D/3l8hv9/gYf/d3qD/3N1fP9zdXz/foCG/3t9g/93eoP/
    +dXiB/36Ahv91d33/c3V8/3t9g/9+gIb/dXd9/3N1fP93eX//bG95/25wd/9vcXX/c3Z//25xe/91eIH/
    +bnB3/3Byef9zdXz/bnF7/3Byef91eIH/cHN9/3V3ff95fIb/cHN9/3V4gf95fIb/dXd9/3N1fP9zdn//
    +cHN9/3Byef9ucXv/cHN9/3d6g/91eIH/c3Z//3V4gf9ucXv/dXiB/3V4gf9nanT/bG51/3N2f/93eX//
    +cHN9/25wd/9sbnX/bG51/25wd/9sbnX/c3V8/2xudf91d33/bnB3/2psc/9zdXz/bG51/3V3ff9ucHf/
    +c3Z//3h5ff9qbHP/bnB3/3N2f/9wc33/c3V8/3N1fP9zdXz/cHN9/3h5ff9ucHf/bnB3/25wd/9nanT/
    +bG95/3V4gf9/gYf/cHN9/3Byef9ucXv/cHN9/3Byef9zdXz/dXiB/2dqdP9wc33/bnB3/3Bzff93eoP/
    +c3V8/3N2f/9ucXv/dXiB/3Bzff91eIH/c3V8/3t9g/91eIH/c3Z//3d6g/91eIH/e32D/3l8hv9+gYr/
    +eXuB/3l7gf95fIb/dXiB/3t9g/97fof/e36H/3l7gf95e4H/d3qD/25xe/9qbXf/cHJ5/3N1fP9sb3n/
    +bnF7/3Byef9wcnn/dXd9/29xdf9qbHP/dnh8/3N1fP93eX//dnh8/2xvef9qbXf/bG95/25xe/9sbnX/
    +bG95/2xvef93eX//bG95/25xe/9qbXf/am13/2dqdP9zdXz/bG95/2psc/9nanT/bG95/2xvef9qbHP/
    +Z2p0/2dqcf9sb3n/Zmhu/2Rncf9dYGr/cHJ5/2xudf9sb3n/a210/2ttdf9rbnj/aGpx/2Rncf9maXP/
    +Zmlz/2Zobv9iZW7/ZGdx/2Jlbv9maXP/aGpw/2xvd/9xc3r/bG51/3N1fP9qbXf/bnF7/2ptd/9sb3n/
    +bnF7/25wd/9sbnX/dXd9/2psc/9sbnX/bnB3/29xdf9nanH/bnB3/25wd/9ucXv/bnB3/2xvef9zdXz/
    +dnh8/3V3ff9sb3n/cHN9/3Byef9ucXv/c3Z//3Bzff9wcnn/dXiB/25xe/9ucXv/bG95/3V4gf91eIH/
    +foCG/3V3ff91eIH/dHeA/3R3fv90d4D/dHeA/3Bzff9ucXv/cHJ5/2xudf9vcXj/bW94/21vdv9zdn7/
    +cHN9/3Z4fP9ucHf/c3V8/3V3ff9ucHf/dXiB/3d5f/91d33/cHJ5/2xudf9sb3n/dXd9/25xe/9sb3n/
    +Zmlz/25xe/9qbHP/bnF7/2ptd/9qbHP/cHN9/2xvef9ucXv/dXiB/2xvef9tb3P/am13/3N1fP9ucXv/
    +Z2p0/2psc/9wcnn/Zmlz/2Zpc/9sb3n/bnF7/2dqdP9sbnX/c3V8/2ptd/9qbXf/amxz/25xe/9sb3n/
    +bG95/2dqdP9sbnX/bnB3/25wd/9tb3P/cHJ5/2xudf9qbXf/dXd9/3Byef9ucHf/bnB3/25wd/9ucHf/
    +bnF7/3Bzff9ucHf/bnF7/2xvef95fIb/bnF7/25xe/9wc33/bG95/3V4gf9zdXz/ZGdx/2Zpc/9wc33/
    +bnF7/2ptd/9sb3n/am13/2xvef9qbXf/amxz/2ptd/9maXP/bnF7/2Zpc/9gY2z/am13/2psc/91d33/
    +bG95/2xvef91d33/ZGdx/2psc/9ucXv/dXiB/3Z4fP91eIH/d3l//3d6g/97fYP/d3qD/3N2f/9zdn//
    +cHN9/3V3ff97fYP/g4WM/3Bzff9ucXv/cHN9/3Byef9ucHf/cHJ5/3V4gf9qbHP/dXiB/25wd/9ucXv/
    +dXiB/25wd/9wcnn/am13/3Bzff9ucXv/cHJ5/21vc/9zdXz/bnB3/21vc/9zdXz/bnB3/3h5ff9ucHf/
    +dXd9/25wd/9ucHf/c3V8/2xudf9wc33/d3l//3d5f/91eIH/cHN9/3N2f/9nanT/Z2p0/25xe/9sb3n/
    +bG95/2xvef9ucHf/bnF7/3V4gf9wcnn/Zmlz/3V3ff9wc33/d3l//3h5ff91d33/b3F1/25wd/9zdXz/
    +bnB3/3Byef9ucHf/d3l//25xe/9sb3n/bG51/2xudf9sbnX/cHN9/3V3ff9ucHf/bG51/3N1fP91d33/
    +bW9z/25wd/9tb3P/bnF7/2ptd/9sbnX/Zmhu/2xvef9qbHP/bnF7/2xudf9vcXb/cXN7/29xev9sb3n/
    +c3Z//25xe/9ucHf/bG95/2xvef9ucHf/cHJ5/21vdv9wcnj/dXd7/29xe/9wc33/bnF7/3Byef9ucHf/
    +cHJ5/3Bzff9ucHf/bnB3/3Z4fP9nanT/am13/2xudf9tb3P/ZGZs/29xdf9ucHf/c3V8/25wd/9ucHf/
    +bnB3/3N1fP91d33/bnB3/3N2f/9ucHf/bnB3/3N1fP9wc33/cHJ5/3N2f/9sb3n/Z2p0/2ptd/9zdn//
    +bnF7/3d5f/9wc33/cXN9/3R3f/91eH//dXiB/3V4gf9wc33/bnF7/3Bzff9ucXr/cnR9/3Bzff9ucXv/
    +dHZ9/3N2f/91d33/bG95/3Byef91d33/bG95/3Bzff91eIH/c3V8/2xvef9ucHf/c3V8/3V3ff9wcnn/
    +bnB3/25wd/92eHz/bG95/3d5f/9ucXv/bnB3/3l7gf9zdXz/c3V8/3l7gf9ucHf/bW9z/2xudf92eHz/
    +cHJ5/3Byef9sbnX/dnh8/2ptd/9qbXf/dXd9/3Z4fP9sbnX/bnB3/3d5f/9ucHf/amxz/2xudf9zdXz/
    +bnF7/3Bzff9qbXf/bG51/21vc/9wcnn/bnB3/3N2f/9ucHf/bG51/3Bzff9ucHf/bnB3/3Bzff9ucHf/
    +b3F1/29xdf9wc33/cHJ5/3N2f/91eIH/foGK/3V4gf95fIb/eXyG/3N2f/9+gYr/d3qD/3Bzff9wc33/
    +e32D/3d6g/91eIH/eXyG/3N2f/95fIb/dXiB/3V4gf95fIb/cHN9/3t9g/95fIb/cHN9/3V4gf9wcnn/
    +d3l//3V3ff92eHz/eXuB/2dqdP9ucHf/dXiB/2ptd/9ucXv/bG95/3Bzff9sb3n/dXd9/2xudf9qbXf/
    +am13/2dqdP9nanT/bnF7/3l7gf9sbnX/bG51/25wd/9sbnX/am13/2xudf9ucXv/ZGZs/2ptd/9maXP/
    +bG95/3N1fP9nanT/amxz/2Zpc/9qbXf/bG51/25wd/9tb3P/dXd9/3Byef9sbnX/dXd9/3Byef92eHz/
    +c3V8/3h5ff9ucHf/bG51/3V3ff9ucXv/dXiB/3l8hv95fIb/d3qD/3N2f/91eIH/bnF7/25xe/91eIH/
    +cHJ5/3Byef9zdn//bnB3/25wd/9wc33/bnF7/2dqdP91eIH/dXiB/3l7gf95fIb/dXiB/3N1fP9wc33/
    +c3Z//2xvef9zdn//bnF7/3l7gf9zdn//bnF7/25wd/9vcXX/b3F1/3N1fP9zdXz/bnB3/2psc/9zdn//
    +dXd9/2xudf9wcnn/bG95/2xvef9sbnX/bG51/1xfaP9ucXv/bG95/3N1fP9tcHr/bW91/3ByeP9tb3j/
    +aGp0/2xvef9qbXf/bG95/2dqdP9sbnX/bnB3/29xef9oa3X/bG93/3Byev9rbnj/bnF7/2xudf9sb3n/
    +bG95/2xvef9sb3n/bnB3/2ptd/9wc33/Z2p0/2ptd/9qbXf/bG51/2Jlbv9qbHP/Z2p0/2xvef9qbHP/
    +amxz/2ptd/9ucXv/bG95/2psc/9ucXv/am13/2xudf9ucXv/bG95/2xudf9sbnX/ZGdx/2dqdP9kZ3H/
    +bG95/3Byef9zdXz/bG95/21vdP9ucHf/cnR6/3Fzev9vcXj/bG95/2xudf9ucHf/bG51/2ptd/9rbnj/
    +a254/3J1fv91d33/dXd9/29xdf9wcnn/c3Z//25xe/91eIH/d3qD/3N2f/9ucHf/bnB3/3N1fP93eX//
    +bnF7/25xe/9qbXf/c3Z//3Bzff91d33/bnF7/2xudf94eX3/cHJ5/3V3ff91eIH/bnF7/25wd/9sb3n/
    +dXd9/25wd/91d33/bG51/3Z4fP9qbHP/Z2p0/3Bzff92eHz/bG51/3Byef92eHz/bW9z/2xudf9vcXX/
    +dnh8/3N1fP9zdXz/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/bG51/2ptd/9ucXv/am13/2psc/9wc33/
    +Zmlz/2ptd/9maXP/am13/2dqcf9maXP/Z2px/25wd/9kZ3H/Zmhu/2Zpc/9nanH/cHJ5/2Zpc/9gY2z/
    +YmVu/2Zpc/9qbXf/Zmhu/2dqdP9iZW7/Z2p0/2Zobv9maG7/am13/2Rncf9maXP/Zmhu/2BjbP9maXP/
    +ZGdx/2ptd/9nanT/bG95/3Byef9kZ3H/ZGdx/2ptd/91d33/dXd9/3V3ff94eX3/cHJ5/3N2f/9ucXv/
    +c3V8/3V4gf9zdXz/bnB3/3N2f/9+gIb/bnB3/29xdf9ucHf/bG51/2xudf9ucHf/dXd9/2ZobP9ucHf/
    +bG51/25wd/92eHz/bG51/2xudf9qbHP/bnB3/29xdf9ucHf/bG51/3Bzff9qbXf/bG51/25xe/9wc33/
    +bG95/3Bzff9zdXz/am13/2xudf91d33/bG51/3Byef91d33/d3l//3N2f/9ucXv/cHN9/2xvef9sbnX/
    +cHJ5/29xdf9sbnX/bG95/2ptd/9vcXX/c3V8/3Byef9maG7/c3V8/3N1fP92eHz/d3l//3V4gf9ucHf/
    +cHN9/3Bzff9wcnn/d3qD/3Bzff95e4H/cHN9/2xvef9sb3n/bnB3/29xdf91d33/dXd9/3Bzff9sb3n/
    +dXiB/3V3ff9ucHf/cHJ5/3Byef9wcnn/bnB3/3Byef9maG7/cHJ5/25wd/9wc33/bnB3/25weP9wcnn/
    +bXB5/25wd/9wcnn/b3F1/3N1fP9sbnX/bnB3/3Byef9vcXj/bG52/2xvef9vcnv/bXB5/2xvef9sbnX/
    +bG95/2Zpc/9nanT/Z2p0/2psc/9nanH/cHN9/2Zpc/9qbXf/am13/2ptd/9iZW7/bG51/2xvef91d33/
    +bnB3/25wd/9zdn//d3qD/3N2f/9wcnn/dXiB/3N2f/9zdXz/eXyG/3V4gf91d33/dXiB/3N1fP9zdn//
    +bnF7/3l8hv99foH/foCG/3V4gf91d33/dXiB/3V3fv90d4D/cXR+/25xe/9wcnn/c3Z//3Byef9wcnr/
    +cHJ5/2tueP90d4D/d3l//3V3ff9ucHf/cHN9/3V3ff9wc33/c3Z//3d6g/91d33/bG95/2xvef9zdn//
    +eXyG/25xe/9ucHf/bnB3/3Z4fP9wcnn/c3V8/2xudf9nanH/cHN9/2ptd/9ucXv/d3l//21vc/9tb3P/
    +b3F1/3Z4fP9ucHf/cHJ5/2ptd/94eX3/bnB3/2dqcf9ucHf/c3V8/2psc/9wcnn/dnh8/29xdf9qbHP/
    +bW9z/3N1fP9zdXz/cHJ5/2xudf9qbXf/am13/2xvef9qbHP/am13/2dqcf9kZ3H/am13/2psc/9maG7/
    +Z2p0/1xfaP9gY2z/YmVu/2dqdP9kZ3H/ZGdx/2Zobv9ucHf/Zmlz/2Rncf9nanT/Z2px/25xe/9qbXf/
    +ZGdx/2Zpc/9wc33/c3V8/2xudf9zdXz/bG51/2xvef9qbXf/am13/3N1fP9ucHf/cHJ5/25xe/9maXP/
    +cHN9/25wd/92eHz/cHJ5/25xe/9zdXz/amxz/2xudf91d33/dXd9/3N1fP92eHz/d3l//3N1fP91d33/
    +bG95/29xdf9wcnn/amxz/2xudf9wcnn/eXuB/3Byef9tb3P/bG51/2Zpc/9nanT/am13/3N1fP9gY2z/
    +am13/2dqdP9qbXf/bnF7/2dqcf9ucHf/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/cHJ5/21vc/9wcnn/
    +dXd9/3Byef92eHz/dnh8/25xe/9ucXv/eXuB/3N1fP91eIH/e36H/3t+h/93eX//cHN9/3N2f/9ucHf/
    +am13/3V3ff9ucHf/bG95/3Byef9sb3n/bnF7/3N2f/9ucXv/am13/3N1fP9ucXv/dXd9/3d5f/91eIH/
    +bG95/25wd/9ucXv/bnB3/3N2f/9sb3n/d3l//3Bzff9ucXv/bG95/25wd/9ucHf/d3l//3Z4fP9sb3n/
    +am13/3V3ff9zdXz/bnB3/3N2f/9wc33/cHN9/3N2f/91eIH/Z2p0/25xe/9ucHf/dXd9/3R3gP9wcnv/
    +cnR8/3Bzff9ucXv/c3Z//25xe/9zdn//bG95/3Bzff9zdn//bnF7/3F0ff9zdn//cXR+/3F0ff9wcnn/
    +bW9z/3N1fP9ucHf/bG95/2ptd/9qbHP/amxz/2xvef9maXP/Z2p0/2ptd/9qbXf/ZGdx/2psc/9qbXf/
    +dXd9/2xudf9tb3P/cHJ5/3N1fP9wc33/Z2px/25xe/9sbnX/bW9z/3Byef9sbnX/am13/2xudf9ucHf/
    +bG51/2Zpc/9ucXv/dXd9/3N1fP9sbnX/bG92/29xef9wc3v/dHd//3F0ff9wcnn/cHJ5/3Byef9ydHz/
    +bnB4/21weP9tb3f/cHN9/3Bzff9wc33/amxz/2xvef95e4H/dXiB/3N2f/9+gYr/eXyG/3d5f/93eX//
    +foCG/4OFjP97fYP/dXiB/25xe/95fIb/c3Z//3t9g/9wc33/cHN9/3d5f/9wc33/c3Z//3d6g/9ucXv/
    +cHN9/29xdf93eX//bnB3/3N1fP9ucHf/eHl9/2psc/9maXP/bG95/25xe/9maXP/bG51/3N1fP9sbnX/
    +Zmlz/2xudf9zdXz/cHN9/25xe/9qbXf/am13/2Zpc/9ucXv/amxz/2dqdP9maXP/Zmlz/25xe/9qbHP/
    +Z2px/2dqdP9iZW7/Zmhu/2Jlbv9nanT/Zmhu/2Zpc/9maG7/bnB3/2dqdP9kZ3H/Z2p0/2Rncf9nanT/
    +ZGdx/11gav9gY2z/am13/2ptd/9maG7/am13/2dqcf9ucXv/bnF7/2ptd/9zdXz/am13/2ptd/9qbXf/
    +Z2px/3N1fP9ucHf/eHl9/3Bzff9wc33/d3l//2xudf9ucHf/c3Z//3l7gf91eIH/eXuB/3l8hv91eIH/
    +dXiB/3V4gf9wc33/dXiB/25xe/9ucHf/bnF7/3l8hv9zdn//cHJ5/3Bzff9ucXv/cHN9/3V4gf9+gIb/
    +bG95/3V4gf9zdXz/dXiB/3d6g/9qbXf/cHJ5/2xvef9wcnn/bG95/2xvef9sb3n/c3V8/3N1fP9ucHf/
    +c3V8/3N1fP9wc33/dXd9/3d5f/9sb3n/cHJ5/3N1fP9qbXf/bG95/3V3ff91d33/dnh8/3V3ff9ucXv/
    +bnB3/2xvef91eIH/c3V8/2xvef9wc33/am13/3Byef93eoP/cHN9/2dqdP9wc33/cHN9/3V3ff94eX3/
    +dXd9/2xudf9vcXX/bnB3/2dqcf9wcnn/bG51/3V3ff9wcnn/bG51/2ptd/9nanT/bG51/25xe/9qbXf/
    +Z2px/2Rncf9ucXv/Zmlz/2Jlbv9kZ3H/Z2px/2Zpc/9qbXf/Z2p0/11gav9nanT/amxz/25xe/9qbXf/
    +a211/2lrdP9oa3X/aWtz/2xvef9sb3n/cHN9/2psc/9wcnn/bnB3/2xuc/9sb3n/amx1/2hrdP9oam//
    +ZGdx/2Zobv9nanT/Zmlz/2Zpc/9nanH/ZGdx/2dqcf9ucXv/am13/2ptd/9sb3n/bG95/2Zpc/9qbXf/
    +bnB3/3V3ff9wcnn/bnB3/25xe/9zdn//c3V8/25wd/9wc33/bnF7/25wd/91d33/bnB3/25wd/9ucHf/
    +bnB3/2ptd/9maG7/c3V8/3N1fP9wcnn/bG51/21vc/9ucHT/bnB3/3Byef9wcnr/bG95/2xvef9ucHf/
    +cnR7/2xudv9rbXb/aWx2/25xe/9zdXz/dXd9/25wd/91d33/c3V8/2xvef9qbXf/d3l//2xvef9qbHP/
    +bG51/25xe/91eIH/bnF7/25wd/9kZ3H/dXd9/2ptd/9ucXv/am13/2xvef9sb3n/bG51/2xvef91d33/
    +am13/2ptd/9sbnX/dXd9/25wd/91d33/bG51/3Z4fP9nanT/am13/25wd/9zdXz/bG51/29xdf9zdXz/
    +b3F1/2psc/9ucHf/dXd9/3N1fP9ucXv/am13/2ptd/9qbXf/cHN9/2xudf9ucXv/bG51/25wd/92eHz/
    +bG51/21vc/9zdXz/bG51/29xdf9qbXf/cHN9/25xe/9zdXz/bnB3/3h5ff9zdXz/bnB3/25wd/9vcXX/
    +c3Z//25xe/9sb3n/bG95/3d5f/9zdn//cHN9/3d6g/9wcnn/dXiB/3V4gf9wcnn/e32D/3Bzff9zdn//
    +cHN9/2ptd/9ucXv/bG95/3d5f/9wc33/c3Z//3d6g/9sb3n/cHN9/3l7gf95e4H/cHN9/3V4gf91eIH/
    +c3V8/25wd/9wc33/bG95/3V4gf9qbXf/cHJ5/25xe/93eoP/cHN9/29xdf9zdXz/bnB3/21vc/9qbXf/
    +cHN9/2Rncf9ucXv/Z2p0/25wd/91d33/amxz/21vc/9tb3P/am13/25wd/9ucXv/bG95/3d5f/91eIH/
    +dXiB/3V4gf9zdn//dXiB/3V4gf95e4H/c3Z//3d6g/97fYP/dXiB/3d6g/97fof/e36H/3d6g/93eoP/
    +cHN9/25xe/9sb3n/dXd9/2xvef9ucXv/cHN9/2xudf9sb3n/bnF7/2dqdP9gY2z/Z2p0/2ptd/9wcnn/
    +cHN9/2ptd/9nanT/bG51/2xvef9kZ3H/bnF7/2ptd/93eX//bnB3/21vc/9qbXf/am13/2xvef93eX//
    +cHN9/2ptd/9maXP/dXd9/3Bzff9qbXf/bnF7/2xvef9wcnn/c3V8/3V3ff9maG7/amxz/2ptd/9wc33/
    +bnF7/25wd/9ucHb/bW93/3J0e/9zdn//cHN9/3V4gf9sb3n/dXiB/25xe/9sb3n/b3J8/21wev9tcHr/
    +b3J7/2xvef9sbnX/bnF7/2dqdP9sbnX/amxz/2ptd/9sbnX/cHJ5/2xudf9sbnX/cHJ5/2xvef9kZ3H/
    +bG51/25wd/91d33/cHJ5/29xdf9ucXv/dXiB/3N2f/9ucHf/cHN9/3Bzff9wcnn/c3Z//25xe/9qbXf/
    +bnF7/2xvef9ucHf/ZGdx/25xe/9ucXv/bG95/2dqdP9qbXf/bW92/2tudv9sb3n/bG95/2dqdP9maXP/
    +Zmlz/2xudf9laHH/Y2Zw/2Zpc/9ydHv/bnF7/2ptd/9sbnX/cHN9/25xe/9qbXf/am13/3Byef9qbXf/
    +Z2p0/2xudf9zdXz/d3l//3V3ff9ucHf/amxz/3l7gf9wc33/cHN9/25wd/9ucHf/cHN9/3Byef91eIH/
    +eXuB/3Byef9wc33/bnB3/3d6g/9wc33/dXiB/3N1fP95fIb/dXd9/3N1fP9zdn//c3Z//3Bzff9zdn//
    +d3qD/3Bzff9sb3n/c3Z//3l8hv97fYP/dXiB/3N2f/9zdn//c3V8/3t9g/9zdn//dXiB/25wd/9wcnn/
    +c3Z//25wd/9ucHf/dXd9/2psc/9ucHf/Z2p0/3Bzff9ucXv/cHN9/2xvef93eX//c3Z//3Bzff9wc33/
    +bnB3/3N2f/9wc33/cHJ5/2xvef95e4H/cHN9/3Byef93eX//cHJ5/3V4gf9zdn//bG95/3d5f/9zdXz/
    +cHN9/2xvef9sb3n/bnB3/3Byef93eX//c3V8/25xe/95e4H/bG95/2xvef95e4H/dnh8/25wd/93eX//
    +d3l//25xe/9sb3n/cHN9/25wd/9zdn//bG95/25wd/9ucXv/eXyG/3N1fP9tb3P/c3V8/25wd/9vcXX/
    +bG51/3Byef9maG7/cHJ5/25wd/9wc33/dXd9/2xudf9ucHf/bnB3/2xudf9ucHf/cHJ5/3Byef92eHz/
    +cHJ5/3N1fP9wc33/bnF7/2xvef9sb3n/bnF7/2ptd/9ucXv/cHN9/25wd/9ucHf/dXd9/3d5f/9zdn//
    +dXd9/25xe/9sb3n/bG95/3V3ff9ucHf/bnB3/3N1fP9sbnX/bnB3/3Z4fP9ucHf/Z2px/2xvef91eIH/
    +d3qD/3d6g/91eIH/am13/2xvef9ucXv/bnB3/3Byef9sbnX/dXd9/2xvef9sbnX/bG51/2xudf9qbXf/
    +dXd9/25xe/9nanT/Z2p0/3Bzff9zdXz/amxz/2xvef9qbXf/am13/25xe/9wc33/YmVu/2dqdP9sbnX/
    +bnF7/2xvef9pbHb/a254/2xuc/9rbnX/cHJ5/25wd/91d33/am13/3Bzff9wcnn/cHJ5/29xef9ucHn/
    +bnF5/29ye/9sb3n/amxz/25xe/9ucXv/am13/2dqdP9tb3P/bG51/25xe/9tb3P/bnB3/3Bzff9wcnn/
    +Zmhu/25wd/9wcnn/c3Z//3N2f/9sb3n/bG95/3Bzff9zdn//bnB3/3Bzff9zdXz/bnB3/3V4gf9wc33/
    +am13/3Bzff9ucHf/bnB3/2Zpc/91eIH/d3qD/3Bzff9sb3n/cHJ5/2xvef9rbnj/cHJ3/2xudv9qbXf/
    +Zmlz/2xudf9qbXf/aGp0/2dqdP9tb3X/dXd8/3V3ff9wcnn/bW9z/3d5f/9zdXz/bnF7/25wd/91d33/
    +c3V8/2xudf9vcXX/d3l//3l7gf92eHz/bnB3/2dqdP93eX//cHN9/25xe/9wcnn/cHJ5/3N2f/9wcnn/
    +d3qD/3l8hv9zdXz/cHN9/2xvef93eX//cHJ5/3N1fP9ucHf/dXd9/2xudf9tb3P/b3F1/25wd/9maG7/
    +bG51/3Byef9qbHP/YmVu/25wd/93eX//dXd9/25wd/9sbnX/cHJ5/29xdf91d33/b3F1/3Byef9ucHf/
    +b3F1/3N2f/9ucHf/bnB3/3V4gf9qbXf/c3Z//3Bzff95e4H/eXuB/3d6g/9zdn//foCG/31+gf97fYP/
    +d3l//3h5ff97fYP/d3qD/3N2f/9wc33/e32D/3d6g/9wc33/e32D/3N2f/95fIb/d3qD/25xe/95e4H/
    +dXiB/3V4gf9ucXv/bG95/25wd/9wcnn/d3qD/25xe/9wcnn/dnh8/2xudf9sbnX/dXd9/3N1fP9wcnn/
    +eHl9/3Z4fP9ucHf/am13/2xvef9nanT/bG95/2dqdP9sbnX/bG51/3N2f/9wc33/amxz/2ptd/9nanT/
    +am13/2xvef9sb3n/ZGdx/3Bzff9ucHf/c3V8/3N1fP9nanH/bG51/2ptd/9qbXf/am13/3N1fP9ucHf/
    +dXd9/3N1fP91d33/c3V8/25wd/9wcnn/bG95/2ptd/9nanT/bnF7/3Z4fP9sbnX/bnB3/3V3ff93eX//
    +c3V8/25xe/9qbXf/am13/2xudf9zdXz/am13/2xvef9ucXv/Zmlz/2xudf9zdXz/bnB3/2Vmav9ucHf/
    +c3V8/3l7gf9wc33/c3Z//2dqdP9wcnn/bG51/2psc/9zdXz/bG51/3V3ff9wcnn/bW9z/2ptd/9sbnX/
    +cHN9/3V3ff9ucXv/am13/29xdf92eHz/c3Z//29xdf9wcnn/cHN9/25xe/9wc33/dXd9/2dqcf9qbXf/
    +bnB3/3Bzff90d4D/cnR7/29yfP9sb3n/bnF7/3N2f/9zdn//eXuB/3N1fP91eIH/dXiB/3V4gP9ucXv/
    +b3J8/3BzfP9vcnv/bnF7/25wd/9zdn//bG95/29xdf9sb3n/b3F1/25wd/9zdn//bnB3/25wd/9wc33/
    +cHN9/2Zpc/9wcnn/c3V8/3V4gf91eIH/bnB3/2xvef9zdn//dXd9/2xvef9zdn//dXiB/25xe/93eX//
    +bnF7/2ptd/9wc33/bnB3/25wd/9qbXf/d3l//3V4gf9zdn//bG95/3Byef9tb3b/bW94/29ye/9wcnn/
    +bnB3/2xvef9sb3n/c3V8/2xvef9qbXf/b3F5/3V3ff94eX3/c3V8/25wd/94eX3/d3l//3V3ff9ucHf/
    +d3l//3V3ff9tb3P/bW9z/3V3ff95e4H/cHJ5/2ptd/9maXP/c3V8/2dqdP9nanT/Z2p0/2dqdP9qbXf/
    +Zmlz/2xvef91d33/Z2p0/2xudf9nanT/dXd9/2ptd/9ucXv/am13/3d5f/9ucHf/bnB3/3Byef9ucXv/
    +ZGdx/2xvef9wc33/bnB3/2psc/9wcnn/e32D/3V3ff9ucHf/bG95/25wd/9ucHf/eXuB/25wd/9ucXv/
    +bG95/2xvef93eX//bnB3/25xe/91eIH/bG95/3Byef9sbnX/dXd9/3Byef9ucHf/bG51/3Z4fP9zdXz/
    +am13/2xudf9sbnX/bnB3/25xe/9qbHP/Zmlz/3V3ff9ucXv/bG51/3V3ff9tb3P/am13/2ptd/9kZ3H/
    +dXd9/2xvef9ucHf/am13/2ptd/9qbXf/bG51/3V4gf9sb3n/bnB3/3V3ff9sbnX/bG95/3V3ff9zdn//
    +bnF7/3d5f/95e4H/cHN9/3Bzff91eIH/bnB3/3Bzff9ucHf/bnF7/29xdf95e4H/c3Z//2xvef9wcnn/
    +bG51/2xvef9ucXv/bnF7/2Zpc/9zdn//bnB3/3N1fP9zdXz/Zmhu/29xdf9ucHf/cHJ5/29xdf94eX3/
    +c3V8/3N1fP9ucXv/bnF7/3Bzff9sb3n/bnF7/2xvef9sb3n/Z2px/25xe/9zdXz/amxz/2ptd/9ucXv/
    +dXd9/2xvef9qbXf/Z2px/2psc/9kZ3H/am13/2psc/9qbXf/bG95/2Rncf9sbnX/cHJ5/2xudf9lZmr/
    +bnB3/3V3ff93eoP/cHN9/3d5f/9qbXf/cHJ5/29xdf9qbHP/dXd9/2psc/93eX//cHN9/2xvef9sb3n/
    +bG95/3V4gf93eoP/cHJ5/25wd/9tb3P/dXd9/3V3ff9qbHP/bG95/2xvef9wcnn/am13/25xe/9maG7/
    +bG95/2xvef9zdn//b3J8/3Fzev9vcnr/a253/2xudf9ucXv/am13/3N1fP9sbnX/cHN9/25xe/9qbXf/
    +bnF6/25xef9tcHr/bXB6/2ptd/9qbXf/bG95/2psc/9qbHP/Z2p0/2dqcf9sbnX/bnF7/2psc/9maXP/
    +bG95/2xvef9gY2z/Z2p0/21vc/9ucHf/bnB3/2psc/9sbnX/bG95/3N1fP9qbXf/bnF7/3Z4fP9wcnn/
    +d3l//3Bzff9qbXf/c3V8/2xudf9sbnX/amxz/3V3ff9zdXz/c3V8/2psc/9ucHf/b3F4/25wd/9xc3n/
    +bnB3/2ptd/9sbnX/bnB3/2xvef9qbXf/aWx2/29xeP91d33/dnh8/3N1fP9sbnX/dnh8/3d5f/9zdXz/
    +bnB3/3V3ff9zdXz/bW9z/2xudf92eHz/d3l//3Bzff9sb3n/Z2p0/3Bzff9ucXv/bG95/2ptd/9qbXf/
    +am13/21vc/91d33/eHl9/29xdf9ucHf/bG51/3Z4fP9sbnX/dXd9/2xudf93eX//bnB3/21vc/9tb3P/
    +c3V8/2Rncf9wcnn/dXiB/3Bzff9ucXv/dXiB/4GDiv91eIH/bnF7/25wd/9ucHf/bG95/3Z4fP9ucHf/
    +bG95/25wd/9qbXf/d3l//25wd/9sb3n/c3Z//25wd/9wc33/Zmlz/3N2f/9zdn//bnF7/2xvef93eX//
    +dXd9/3Bzff9ucHf/am13/3Bzff9wc33/bnB3/2ptd/92eHz/cHN9/29xdf91d33/bnF7/25xe/9wcnn/
    +Z2p0/3d6g/9zdn//c3Z//3Bzff9ucXv/cHJ5/3Byef91eIH/bnF7/2xvef91d33/bnB3/3N2f/95e4H/
    +bnB3/2xvef91d33/cHN9/2ptd/9nanT/bG95/2Zpc/9nanT/Zmhu/2dqcf9kZ3H/c3V8/25xe/9maXP/
    +am13/2Zpc/9qbHP/am13/2ptd/9kZ3H/cHN9/2dqdP9wcnn/bG95/2BjbP9qbHP/amxz/2ptd/9sbnX/
    +cHN9/25xe/9wc33/bnF7/25xe/9ucXv/am13/3N1fP9zdXz/c3V8/2xudf9zdXz/dnh8/3Byef9ucHf/
    +dXd9/3N1fP9ucXv/cHJ5/2ptd/9ucXv/am13/3Bzff9sb3n/bG95/25wd/9ucHf/bG95/3Bzff9ucXv/
    +Z2p0/3Bzff9wc33/eXuB/3V3ff92eHz/Z2px/2xvef9wcnn/Z2p0/3N2f/9nanT/d3l//3Bzff9tb3P/
    +bnB3/29xdf9zdn//d3l//3Bzff9sb3n/bG95/3V4gf94eX3/bnB3/3N1fP9zdXz/cHJ5/2xvef9zdn//
    +amxz/2psc/9nanT/bnF7/2hqdP9ucHb/bXB4/2xvdv9ucHf/dXd9/29xdf92eHz/b3F1/3Z4fP9zdXz/
    +bnB3/3Byef9wcnn/cXN6/3N1fP9wcnn/cHJ5/3Z4fP9ucXv/bG95/2xvef9sb3n/bG95/3V4gf9zdXz/
    +cHJ5/3V4gf9wc33/am13/25xe/9ucHf/bG95/25wd/9vcXX/bG51/3N1fP91d33/bG51/3Bzff9zdXz/
    +bnB3/3N1fP9sbnX/Z2px/2xvef9vcXX/bnB3/2Rncf9zdXz/bG95/2xvef9maXP/bG95/2hrdf9wcnn/
    +cHJ7/3J0fP9ucHf/Z2p0/25xe/9zdXz/b3J7/2ptdf9sb3n/c3V8/3V3ff9sb3n/bG51/3V3ff91eIH/
    +bnF7/3Byef92eHz/dXd9/2xudf9sbnX/dnh8/3d6g/91d33/cHN9/2ptd/91eIH/d3qD/3d6g/9ucHf/
    +bG95/25wd/9ucHf/dXiB/3l7gf9wc33/c3V8/3N2f/9+gYr/eXuB/35/g/92eHz/f4GH/3V3ff91eIH/
    +dXd9/35/g/9wcnn/eHl9/31+gf93eX//eHl9/3d5f/+Fh43/fn+D/3l7gf92eHz/dXd9/3Bzff9+gYr/
    +c3Z//3Bzff9sb3n/cHN9/3l7gf9wcnn/c3V8/3V4gf9zdXz/dXiB/2dqdP9zdn//c3Z//3Bzff9sb3n/
    +dXd9/3Z4fP9wc33/bG51/2Zpc/9wc33/cHJ5/29xdf9ucHf/dXd9/3Byef9ucHf/eHl9/2xvef9ucHf/
    +cHJ5/25wd/93eX//dXd9/3Byef9ucHf/bnB3/2xudf9vcXX/dXd9/2xudf9sbnX/c3V8/2ptd/9wcnn/
    +eHl9/3Bzff91eIH/dXiB/3V3ff9wcnn/bnB3/3V3ff9qbHP/cHN9/3Byef9ucXv/bG95/3V4gf93eX//
    +Z2p0/25xe/9sb3n/bnB3/3N1fP9ucHf/bG51/3Bzff9nanT/am13/25xe/9maXP/am13/2xudf9sbnX/
    +bG51/3V3ff9ucHf/cHJ5/3N1fP9ucXv/c3V8/25wd/9ucHf/cHJ5/3N1fP9vcXX/dXd9/3h5ff9wcnn/
    +cHJ5/3V3ff9zdXz/cHJ5/25wd/9qbHP/bnF7/2xudf9sb3n/bG95/2dqdP9nanT/Zmhu/2Rncf9nanT/
    +Z2px/1xfaP9maG7/ZGdx/3Byef9maXP/bnB3/1lcZf9iZW7/Zmhu/2Jlbv9nanT/XWBq/2xvef9nanT/
    +amxz/2xudf9qbHP/bnF7/3d5f/9qbXf/Zmlz/2xudf91eIH/d3l//2xudf9zdXz/cHJ5/3N1fP9sb3n/
    +dXd9/2Zpc/9maG7/Z2px/2ptd/9oanT/bnB5/29xeP9ucHj/bG51/3Z4fP9vcXX/dnh8/29xdf91d33/
    +bnF7/3Bzff91eIH/dHZ+/3N1ff9zdn3/bnF7/25xe/91d33/cHJ5/25wd/9ucHf/bnB3/25wd/9wc33/
    +b3F1/29xdf9ucHf/bG51/2Zobv9tb3P/bW9z/2xudf9sbnX/am13/2psc/9wc33/c3V8/2xudf9wc33/
    +cHN9/25xe/9wc33/bW9z/2xudf9zdXz/b3F1/25wd/9maG7/dnh8/3Byef9zdXz/Z2px/3Byef9ucHj/
    +cHJ6/25xef9tb3b/bG51/2RmbP9sbnX/bnF4/25wd/9sb3j/dHZ+/3V4gf95e4H/bnF7/3Byef91eIH/
    +dnh8/3Byef9ucXv/c3V8/3N1fP9ucHf/b3F1/3d5f/97fYP/dXd9/3Bzff9sb3n/d3l//3Z4fP9zdXz/
    +amxz/2xudf9qbXf/am13/2xvef9zdXz/amxz/2psc/9kZ3H/c3V8/2Zpc/9qbXf/ZGdx/3Byef9iZW7/
    +ZGZs/2Rncf9maXP/XV9l/2Rncf9nanT/ZGZs/2BjbP9iZW7/cHN9/2ptd/9maG7/YmVu/2Jlbv9iZW7/
    +cHJ5/2dqcf9kZ3H/YGNs/2Rncf9kZ3H/YmVu/2dqcf9qbXf/bG51/2ptd/9iZW7/bnF7/25xe/9qbXf/
    +bG51/3N1fP91d33/c3V8/25wd/9qbHP/cHN9/3Bzff9wcnn/cHJ5/3d6g/91eIH/cHJ5/3t9g/9wc33/
    +c3Z//3N2f/9wcnn/eXyG/3l7gf9ucXv/cHJ5/2xvef9wcnn/bnB3/3d6g/9ucXv/cHJ5/3t9g/9wc33/
    +d3qD/3d6g/9wc33/d3qD/3t9g/9zdn//cHN9/3Byef91d33/Z2p0/2xvef9ucHf/c3Z//25xe/93eoP/
    +eXuB/2xvef9zdn//cHJ5/25xe/9wc33/b3F1/2xudf9zdXz/am13/25wd/9wcnn/Zmlz/2ptd/9sbnX/
    +bG95/2ptd/9zdXz/bW9z/25xe/9zdXz/c3V8/3Bzff9sbnX/bnB3/3Bzff9sb3n/bG51/3V3ff93eX//
    +bnB3/3Byef9wcnn/cHJ5/3Byef91d33/bG51/3Byef9tb3P/bnF7/25xe/9sb3n/am13/2xudf9nanT/
    +am13/2dqdP9iZW7/am13/25xe/9zdn//bG95/3V3ff9kZmz/bW9z/21vc/9ucHf/dXd9/2dqdP95e4H/
    +cHN9/2xvef9sb3n/bnF7/3Bzff93eX//bnF7/2xvef9ucXv/e36H/3d6g/9ucHf/dXd9/3Byef9wcnn/
    +bnB3/3N1fP9qbHP/bG51/2xudf91d33/bW93/29xeP9tcHj/aGt1/2Vocf9ucXv/amxz/3d5f/9sbnX/
    +bnF7/3Byef9wcnn/cXN6/3F0ev9wc33/c3Z//3Byef9wc33/eXuB/3Bzff9wc33/bnF7/3Bzff9ucXv/
    +cHN9/25wd/9ucHf/cHJ5/21vc/9nanH/b3F1/25wd/9ucHf/bG51/2ptd/9sbnX/dXd9/3N1fP9qbXf/
    +cHN9/3Byef9wcnn/c3Z//2xudf9sbnX/c3Z//2ptd/9ucHf/ZGdx/3N2f/9zdn//c3Z//2ptd/9zdn//
    +cXN7/3N2gP91eIH/cnV//3N1fP9qbXf/cHJ5/29xeP9ucHj/bW94/3J0e/90d3//eXyG/3Bzff9ucXv/
    +d3l//3d5f/9ucXv/c3V8/25xe/9wcnn/bnB3/25wd/91d33/e36H/3Z4fP9wcnn/bnB3/3V4gf91d33/
    +dnh8/25wd/9wcnn/c3V8/3Byef9zdn//e32D/2xvef9sb3n/Z2p0/3d6g/9zdn//dXiB/25wd/93eX//
    +Z2p0/2xvef9ucHf/c3V8/2ZobP9sbnX/c3V8/2psc/9nanT/amxz/3l7gf9ucXv/Zmlz/2Zobv9sbnX/
    +ZGdx/3Bzff9maG7/amxz/2Zpc/9qbHP/bnB3/2xudf9ucHf/cHJ5/2xvef9wc33/Z2p0/3Bzff9wc33/
    +dXiB/3N2f/93eoP/d3qD/3l7gf91d33/c3Z//3V4gf95fIb/cHN9/3N1fP95fIb/d3qD/3V3ff95fIb/
    +cHN9/3V4gf9wc33/bnB3/3d5f/91d33/bnB3/2xudf9sbnX/bW9z/25wd/94eX3/bG95/2xvef93eX//
    +bnB3/3N1fP9zdn//bnF7/3d6g/93eX//cHN9/3Bzff9zdn//dXd9/2psc/9ucHf/bW9z/2xvef9qbXf/
    +c3V8/3V3ff9kZ3H/bG51/2dqcf9maG7/Z2p0/2Rncf9kZ3H/bG95/2dqcf9qbHP/Z2p0/2Rncf9qbHP/
    +Z2px/2psc/9qbHP/cHN9/2ptd/9zdXz/c3V8/3N1fP91d33/cHN9/3Bzff91eIH/bnF7/25wd/9zdn//
    +d3qD/3Bzff9zdn//c3Z//3N2f/91eIH/dXiB/3Byef93eoP/cHN9/3d6g/95fIb/d3qD/3d6g/9wc33/
    +c3Z//3V4gf9wc33/am13/3N1fP93eoP/e32D/3l7gf95fIb/am13/3N2f/9zdXz/c3V8/3l7gf9sb3n/
    +eXuB/3V4gf9ucHf/bnB3/25xe/9zdXz/d3l//25xe/9nanT/bnF7/3d6g/93eoP/bnF7/3Bzff91d33/
    +cHN9/25xe/93eX//Zmlz/2xvef9zdXz/e32D/3Bzff9zdXv/dHZ//3F0fv9sb3n/d3qD/3N1fP93eoP/
    +cHJ5/3N2f/9zdn//c3Z//3Bzff9zdX3/dHeA/3V4gf9zdn//cHN9/3d6g/9wc33/bnB3/2dqdP9ucHf/
    +cHJ5/3Byef9ucHf/b3F1/3Bzff9vcXX/Z2px/2xudf9sbnX/amxz/2ptd/9nanT/Z2p0/25xe/9sb3n/
    +amxz/2ptd/9ucXv/am13/3N1fP9qbXf/Z2p0/25xe/9nanT/bG51/2RmbP9wcnn/bnF7/2xvef9kZ3H/
    +bG95/2lsc/9ucXr/b3F5/2xvef9ucHf/Z2p0/2xvef9ucHf/bG52/2dqdP9tcHf/bG94/3Byef9nanH/
    +Zmlz/3Byef94eX3/bnB3/3N1fP9wcnn/c3V8/2xudf9ucHf/c3V8/3l7gf9zdXz/bG95/21vc/92eHz/
    +c3V8/3Bzff9sbnX/bG51/21vc/9sbnX/bnB3/3V3ff9tb3P/bG51/2dqdP91eIH/c3V8/3Byef9tb3P/
    +eHl9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/am13/3V3ff9ucHf/bG51/25wd/9+gIb/cHN9/3Byef9tb3P/
    +bG51/2psc/97fYP/bG51/2ptd/9qbXf/b3F1/3N1fP9ucHf/bG51/3N1fP9ucHf/cHN9/2Zpc/9qbXf/
    +am13/2ptd/9qbHP/cHN9/2xvef9wc33/bG51/2Rncf9qbHP/am13/2ptd/9sbnX/c3V8/2ptd/9nanT/
    +d3l//2xudf9sb3n/bG51/2xudf94eX3/dXd9/3Byef9vcXX/bG95/25wd/9sb3n/eXuB/3Bzff9wcnn/
    +eXuB/3Byef9zdn//eXuB/3Bzff9ucXv/dXd9/3V3ff9wc33/c3Z//3N2f/9sb3n/cHJ5/3Byef9wc33/
    +cHJ5/3d5f/97fYP/cHJ5/25xe/9ucHf/b3F1/3Byef9sbnX/am13/3N1fP9tb3P/am13/25xe/9kZ3H/
    +am13/2ptd/9ucXv/bG51/3N1fP9ucHf/c3V8/3N1fP9ucHf/dXd9/25xe/9qbXf/cHN9/2xudf9sbnX/
    +c3V8/3V3ff9ucHf/dXd9/3Byef9wcnn/cHJ5/3Byef9tb3P/cHN9/2ptd/9sb3n/am13/25xe/9sb3n/
    +am13/2dqdP9qbXf/am13/2BjbP9qbHP/cHN9/3V3ff91d33/dnh8/2Vmav9ucHf/bnB3/2xvef91eIH/
    +Z2p0/3N2f/9zdn//bnF7/2xvef9ucXv/c3Z//3d6g/9ucXv/am13/25xe/95e4H/eXuB/21vc/9zdXz/
    +c3V8/2xudf9sbnX/c3V8/2Zobv9qbXf/bG51/3V3ff9rbXX/bG52/25vdf9sb3j/Zmlz/3Bzff9sbnX/
    +d3l//21vc/9sbnX/c3V8/3V3ff9vcnv/bnB3/29xef9zdn//bnF7/3N1fP91eIH/bnF7/25xe/9ucHf/
    +cHN9/3N2f/9zdn//cHJ5/3N1fP91eIH/cHJ5/2Zpc/9ucXv/bnB3/29xdf9ucHf/bG95/3Bzff91eIH/
    +cHN9/25xe/9ucXv/c3Z//29xdf92eHz/bW9z/2psc/9wcnn/amxz/25wd/9nanH/c3Z//3Bzff9ucXv/
    +Z2px/3N1fP9ucHf/cHJ7/3R2f/9xdH7/cHJ5/2dqdP9sb3n/cHJ5/29xeP9tb3j/cnR6/3R2ff93eX//
    +bnB3/3Byef93eX//dnh8/2ptd/9wcnn/cHJ5/3Byef9qbHP/cHJ5/3h5ff93eX//dXd9/25xe/9vcXX/
    +eHl9/3d5f/91eIH/c3V8/3N1fP9wc33/cHJ5/2xvef9zdn//bG95/2xvef9sb3n/d3qD/25xe/9wc33/
    +bG95/3d5f/9sbnX/b3F1/25wd/9ucHf/ZGZs/2Zpc/9wc33/amxz/2dqdP9sbnX/d3l//2dqdP9sb3n/
    +Z2px/2Zobv9gY2z/eXuB/2Zpc/9sbnX/amxz/2xudf9zdXz/bW9z/2xvef91d33/bG95/3V4gf9sb3n/
    +c3Z//3d6g/91eIH/cHN9/3l7gf93eoP/foCG/3N2f/9ucXv/c3V8/3N2f/91eIH/dXd9/36Ahv9zdn//
    +c3V8/36Biv9zdXz/cHN9/29xdf9vcXX/dnh8/3V3ff9wcnn/bW9z/25wd/9ucHf/am13/3d5f/9ucXv/
    +am13/3h5ff9sb3n/c3Z//3t+h/9sbnX/bG95/3N1fP9ucXv/cHN9/25xe/9ucXv/Z2p0/2ptd/9sbnX/
    +cHJ5/25wd/9zdn//dXd9/2xvef9vcXX/bW9z/2xudf9ucXv/am13/21vc/91d33/bnB3/25wd/91d33/
    +Z2px/25wd/9wcnn/c3Z//25wd/95e4H/d3qD/3d6g/93eX//cHN9/3Z4fP9wcnn/bnB3/3N1fP9sbnX/
    +bnB3/3V3ff93eX//cHJ5/3N1fP9wcnn/c3V8/3Byef91d33/bW9z/3V3ff9ucHf/cHJ5/3N1fP9ucXv/
    +am13/2xudf9qbXf/bG95/2xudf9iZW7/am13/3N1fP9zdXz/c3V8/3d5f/9lZmr/bW9z/2xudf9ucHf/
    +c3Z//2dqdP9wc33/c3Z//3Byef9sbnX/cHJ5/3N1fP93eoP/bG51/2psc/9ucHf/d3l//3d5f/9ucHf/
    +dXd9/3V3ff9ucHf/bnF7/3d5f/9qbXf/cHJ5/29xdf91eIH/bnF7/3Fze/9ydHz/bnF7/2ptd/91d33/
    +bnB3/3V3ff9vcXX/bnF7/3N2f/93eoP/cnV8/25wd/9tb3j/dnh8/25wd/9vcXX/bnB3/2xvef9qbXf/
    +Zmlz/25xe/9qbXf/am13/2dqcf9kZ3H/Z2p0/2Zobv9gY2z/Z2p0/2Zpc/9maXP/amxz/2Rncf9qbXf/
    +am13/2dqdP9sb3n/am13/3Bzff9sbnX/dnh8/29xdf9qbHP/cHN9/3Byef9zdn//Zmlz/3Bzff9wc33/
    +cHN9/2ptd/9zdn//bnB3/3FzfP9wcnr/a211/25wd/9sbnX/bG95/25weP9xc3r/cHN7/3J1fv94eoP/
    +fYCJ/3N2f/93eoP/eXyG/3d6g/9zdXz/dXiB/3d6g/9wc33/am13/25wd/93eoP/eXuB/3d5f/9zdn//
    +bnF7/3t9g/95e4H/c3Z//3Byef9wcnn/cHN9/2xvef9ucHf/dXd9/3Byef9qbHP/b3F1/3d6g/9wc33/
    +c3Z//2xvef91d33/am13/25wd/9sb3n/bnF7/2dqcf9sbnX/dnh8/29xdf9qbXf/bG51/3t9g/9qbXf/
    +bnF7/2xudf9sbnX/Z2px/3t9g/9qbHP/bnB3/2xudf9tb3P/bnF7/25wd/9ucHf/dXd9/3Byef91d33/
    +amxz/25wd/91d33/dXd9/25wd/9zdXz/bG51/3N1fP9sbnX/ZGZs/2dqdP9qbXf/am13/2dqdP9sb3n/
    +amxz/2Rncf9zdXz/Zmlz/2dqdP9kZ3H/ZGZs/2ptd/9sb3n/Z2p0/2Jlbv9kZmz/XWBq/2BjbP9qbXf/
    +Zmlz/2Jlbv9sb3n/am13/2xvef9zdXz/Z2p0/2xudf9ucXv/bnF7/3Byef9zdXz/c3V8/2psc/9ucHf/
    +bG95/2xvef9tb3P/c3V8/3h5ff9sbnX/bnB3/25wd/9wc33/cHN9/2xvef9ucHf/dXd9/3Bzff9ucHf/
    +cHN9/2dqdP9sb3n/c3Z//3Z4fP9qbXf/c3V8/2ptd/9sbnX/cHN9/2xvef9zdXz/bnF7/2xudf9sb3n/
    +amxz/2psc/9sb3n/bG95/2Zpc/9qbXf/Z2p0/25xe/9qbXf/am13/2xudf9wc33/bG51/2xvef9sb3n/
    +bnF7/3Byef9ucHf/bnB3/3N1fP9tb3P/Zmhu/29xdf91d33/dXd9/3d5f/93eoP/amxz/25wd/9ucXv/
    +c3Z//3d5f/9sb3n/c3Z//3l7gf9zdXz/am13/3N2f/93eoP/eXyG/3Byef9sb3n/cHN9/3l8hv97fof/
    +cHN9/3t9g/97fYP/dXd9/3Bzff97fYP/am13/25xe/9ucHf/eXuB/21wef90dnz/dXd//3R3gP9zdXz/
    +eXuB/3Bzff95fIb/c3Z//3Bzff91eIH/eXuB/3Z5gv9ydHz/c3aA/3p9g/9zdn//cHN9/3Bzff9ucXv/
    +c3Z//3Bzff93eoP/d3qD/3V4gf9zdXz/cHN9/3N2f/9sb3n/Zmlz/3Bzff9ucHf/c3V8/3N2f/9sb3n/
    +bG95/3Byef9ucXv/cHN9/25wd/9wc33/bnB3/3h5ff9vcXX/amxz/25xe/9vcXX/c3V8/2Zpc/9wc33/
    +c3V8/3Byef9sb3n/d3qD/3Byef9vcnv/cHJ6/29xef9ucHf/amxz/21vc/9sbnX/b3F1/25wd/9wcnr/
    +cXR9/3V3ff9sb3n/c3V8/3h5ff93eoP/cHN9/25xe/9zdn//cHN9/2dqdP9wc33/e32D/3l8hv93eoP/
    +c3Z//3Bzff93eX//dXd9/3Byef9ucHf/b3F1/3Bzff9ucXv/bnF7/3N2f/9ucHf/Z2p0/2ptd/93eX//
    +bnB3/25wd/9qbHP/dXd9/2xudf9vcXX/bnB3/2xvef9maXP/bG95/3Z4fP9vcXX/bG51/25xe/9/goz/
    +dXiB/3N2f/9ucHf/b3F1/2psc/9+f4P/bG51/29xdf9ucHf/b3F1/3Byef9sbnX/bnB3/3V3ff9wc33/
    +c3Z//2psc/9vcXX/dXd9/3N1fP9qbXf/bnF7/2xudf9wc33/amxz/2BjbP9kZ3H/amxz/2ptd/9maXP/
    +cHN9/2xudf9maXP/d3l//2xudf91d33/bG51/2ptd/91d33/bnF7/2ptd/9nanH/Zmlz/2Rncf9kZ3H/
    +cHN9/2xvef9nanT/dXd9/25xe/9ucXv/c3V8/25wd/9sb3n/dnh8/3Byef9ucXv/c3V8/3Bzff9maXP/
    +bnB3/3Byef9wcnn/bnB3/3N2f/95e4H/cHN9/3Byef9wc33/dXiB/3N2f/9wc33/cHN9/3t9g/93eoP/
    +dXiB/3t9g/9zdn//d3qD/3l8hv95fIb/cHN9/3l8hv9zdn//cHN9/3l7gf9ucXv/c3Z//3V3ff9vcXX/
    +c3V8/25wd/9wcnn/dXd9/3Z4fP9zdXz/cHJ5/2xvef9ucXv/bnF7/2ptd/9qbHP/bnF7/2ptd/9qbHP/
    +am13/3Bzff9wc33/am13/2xudf9ucXv/bG51/2Rncf9sbnX/c3V8/3V3ff9zdXz/c3V8/2BjbP9maXP/
    +am13/2xudf9wc33/Zmlz/25xe/91d33/bG51/2Zpc/9sb3n/bnF7/3V3ff9maXP/YGNs/2dqcf9wcnn/
    +cHJ5/2dqcf9ucXv/bG95/2psc/9maG7/am13/2BjbP9nanH/Z2px/3V3ff9qbHP/bnB3/29xd/9sbnX/
    +amxz/2xvef9maXP/cHJ5/2psc/9nanH/bG95/3Bzff9ucXr/aGtz/2ptd/9zdXz/bW9z/2xudf9sb3n/
    +bG95/2ptd/9maXP/bnF7/2ptd/9qbHP/ZGdx/2dqcf9qbXf/Z2p0/2Zpc/9qbXf/bG51/2xudf9tb3P/
    +bG51/25wd/9sb3n/cHJ5/3N1fP9sb3n/d3l//3Bzff93eX//bG95/2ptd/9ucXv/cHJ5/3N2f/9qbXf/
    +d3qD/3N2f/9zdn//bnB3/3N2f/9ucHf/bnB4/2ptdv9rbnf/bG51/2Rncf9sbnX/am13/2psc/9pbHT/
    +bXB4/2xueP9wc33/bG51/3Byef94eX3/cHN9/3Bzff9sb3n/c3Z//25xe/9nanT/bnF7/3d5f/91eIH/
    +c3Z//25xe/9zdn//eXuB/3Z4fP91d33/bG51/21vc/9ucHf/bG51/2xudf9zdXz/bG51/2Rncf9maXP/
    +cHJ5/2dqcf9maXP/YmVu/25xe/9nanT/bG51/2xudf9qbXf/Zmhu/21vc/9zdXz/bW9z/2ptd/9sb3n/
    +f4GH/25xe/9sb3n/bG51/2xudf9qbHP/fX6B/2psc/9sbnX/b3F1/29xdf9zdXz/bG95/2xvef9wc33/
    +cHN9/3Bzff9qbHP/cHJ5/3V3ff9zdn//bnF7/3V3ff9ucHf/dXiB/3Byef9nanH/bnF7/3Bzff93eoP/
    +bG95/3l7gf93eoP/d3l//3+Bh/9zdXz/d3qD/3Bzff9wc33/eXyG/3d6g/9ucXv/bnB3/2xvef9sbnX/
    +am13/3V3ff9wc33/Z2p0/3h5ff9zdXz/c3V8/3d5f/9sb3n/bG95/3h5ff9ucHf/c3V8/3V3ff91d33/
    +Z2px/25wd/9wc33/bG95/2xudf9sbnX/c3V8/2ptd/9maXP/amxz/2ptd/9ucXv/am13/2ptd/9zdXz/
    +cHN9/2ptd/9ucXv/ZGdx/2ptd/9nanT/cHJ5/2Rncf9zdXz/am13/2ptd/9ucXv/am13/3Bzff9wc33/
    +bG95/3V3ff9qbXf/bnB3/3N2f/91eIH/cHN9/3V3ff91d33/dXd9/3Bzff9wc33/cHN9/3Z4fP9wc33/
    +cHN9/3N2f/93eoP/d3qD/25xe/9zdXz/dXiB/3Byef9sb3n/cHN9/3l7gf91eIH/dXd9/3d5f/9kZ3H/
    +bnB3/2xudf9zdXz/eHl9/25wd/91d33/dnh8/2ptd/9maXP/c3V8/3N1fP93eX//bG51/2psc/9sbnX/
    +dXiB/3V3ff9vcXX/c3Z//3N2f/9sb3n/bnB3/3N2f/9sb3n/bG95/21vc/95e4H/b3F2/3J0ev90dn7/
    +dnmC/3V3ff95fIb/dXd9/3t+h/9wc33/c3V8/3V4gf93eoP/dnmB/3Fzev9vcXf/dXh+/29xdf9tb3P/
    +bG51/25wd/9ucHf/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/29xdf9maG7/cHJ5/2ptd/9nanT/
    +amxz/2Zpc/9sbnX/bG95/2xvef9qbXf/amxz/3Byef9maXP/bG95/2Zobv9dYGr/YmVu/2Zobv9maXP/
    +XWBq/2ptd/9nanT/Zmhu/2Jlbv9nanT/Zmhy/2hqcf9oa3P/aWtz/2ptd/9qbHP/bG51/25wd/9rbXL/
    +aGty/2ttc/9pbHX/Z2p0/2Vocv9maXP/bnF7/3Bzff9ucHf/bG51/3N1fP9sbnX/Zmlz/2xvef9zdXz/
    +c3V8/3N1fP9qbHP/bnF7/3N1fP9wc33/bnF7/2Zpc/9nanH/Zmlz/2Rncf9sbnX/cHN9/2psc/9kZ3H/
    +ZGdx/25wd/9iZW7/ZGdx/11gav9nanT/ZGdx/2Zobv9qbHP/Z2px/2Jlbv9nanT/cHN9/2dqdP9qbXf/
    +bG95/36Biv9ucXv/bG95/21vc/9tb3P/b3F1/4CChv9ucHf/cHJ5/3Byef9zdXz/c3Z//3Byef9wc33/
    +cHN9/3N2f/9wc33/am13/25wd/9wc33/dXd9/25wd/9ucHf/bG51/3Bzff9nanT/YmRq/2dqdP9qbXf/
    +bG95/2Zpc/9ucXv/Z2p0/2Jlbv9ucHf/YmVu/2dqdP9nanH/Z2px/3Byef9zdXz/amxz/2dqcf9nanT/
    +Zmlz/2dqdP9sb3n/am13/2Zpc/91d33/bG95/3Byef93eX//dXiB/3V4gf97fof/d3qD/3t9g/93eoP/
    +c3Z//2Zpc/9zdXz/c3V8/3V4gf9sb3n/cHJ5/3d5f/9ucXv/bG51/25xe/9wc33/dXiB/3N1fP91d33/
    +eXuB/3t9g/91eIH/foCG/3V3ff93eoP/dXiB/3V4gf9sb3n/d3qD/3N2f/9wcnn/dXiB/3V4gf95e4H/
    +dXiB/3Bzff93eX//c3Z//3Byef9wc33/dXiB/3N2f/91d33/c3V8/3N1fP9wcnn/bnB3/3Byef92eHz/
    +cHJ5/25wd/9ucHf/c3V8/3N1fP9sbnX/bW9z/3N2f/9wcnn/amxz/25xe/93eX//dXiB/3N2f/9zdn//
    +Z2p0/2ptd/9ucXv/cHN9/3V4gf9wcnn/c3Z//3d5f/9sb3n/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/
    +b3F1/3h5ff95e4H/b3F1/3N1fP91d33/bG95/2ptd/91d33/amxz/2ttdP9sbnX/c3Z//2ptd/9vcXj/
    +cHJ3/25wd/9tb3P/cHJ5/2xudf93eX//am13/21vc/9zdXz/dXd9/3J0e/9sb3n/bXB6/3Bzff9sbnb/
    +amxz/2ptd/9rbnj/bG51/2tud/9wcnn/bG95/25wd/9ucHf/cHJ5/3V3ff9ucHf/Zmlz/3R3gP9tcHf/
    +bnB3/3Fzef9ucHf/cnR7/3Bzff9ydX7/cHJ8/3Bzff93eoP/cHN9/3h6gP9zdn7/bnF7/3Byef9vcXj/
    +bnF7/2hrdf91d33/bW92/25wd/9vcXj/eHl9/29xef9wcnn/cHN8/3Z3fP95e4H/dXd9/3d5f/96fIP/
    +cnV+/3F0e/91d37/dniA/3V3ff9wcnn/c3Z//3Z4f/93eoP/dXiB/3Bzff91eIH/bnF7/2ptd/91eIH/
    +e32D/3d5f/93eX//c3V8/3d6g/9zdn//dnh8/3N1fP9ucHf/bnF7/25xe/9vcXX/bG95/3V3ff9vcXX/
    +amxz/2xudf92eHz/bnB3/3Byef9nanT/cHN9/2ptd/9ucHf/c3Z//3Byef9qbHP/b3F1/3Z4fP9qbHP/
    +bG51/25wd/9/gYf/cHJ5/2ptd/9tb3P/bnB3/2ptd/9/gYf/bnB3/29xdf9ucHf/bG95/3Byef9tb3P/
    +am13/2ptd/9wc33/bnF7/2dqdP9sbnX/c3V8/3h5ff9wcnn/bnF7/2xvef9wcnn/am13/2Vmav9sbnX/
    +bnF7/3Byef9sbnX/dnh8/3Bzff9ucHf/eXuB/3V3ff93eoP/cHN9/3N2f/97fof/e36H/3V4gf91d33/
    +dXd9/25xe/9zdXz/dXiB/3V4gf9wc33/e32D/3d6g/95fIb/e36H/2xvef9ucXv/d3l//25xe/9zdn//
    +c3Z//3N2f/9maG7/bnB3/3N1fP9wcnn/b3F1/21vc/9zdXz/bG51/2dqcf9wcnn/bnF7/3N1fP9ucHf/
    +bG95/3V3ff9zdXz/bG51/3Byef9ucHf/c3V8/25wd/91d33/am13/3V4gf9ucXv/amxz/2xvef9ucXv/
    +cHN9/3Bzff9wcnn/c3V8/3Byef9wcnn/cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/
    +d3l//25wd/9wcnn/bnB3/3V3ff91d33/bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9wcnn/
    +c3V8/2Zobv9nanT/bnF7/2xvef91d33/bG51/2ptd/9zdXz/Z2p0/2Rncf9ucXv/c3V8/3N1fP9qbXf/
    +am13/2psc/93eX//d3qD/2xudf9ucXv/bG95/2ptd/9qbXf/c3V8/2ptd/9xc3r/bnB3/3d5f/9ucHf/
    +cHJ5/29xd/9ucXv/amxz/25wd/9ucHf/d3l//25wd/9vcXX/dXd9/3d5f/9wcnn/bG52/25xe/9xdHz/
    +am13/2ttdf9qbXf/bG51/2xudf9rbnf/bXB6/2xudf9qbXf/bG51/3Byef90dnz/cHJ5/2hrc/9ydX7/
    +aGt1/25wd/9wcnn/bnB4/25weP9ydHv/b3J7/29ye/9vcXj/dXiB/3F0ff9zdn//bG95/2xvef9ucHf/
    +cXN3/3Byef9oa3P/cnR8/2xveP9qbXf/aWx1/3R2ff9pbHP/am13/2dqc/9pbHb/bG51/2Rncf9maG7/
    +bG95/2psc/9maXP/bG94/29xef9sb3f/am12/2ttdv9ydHr/c3V8/3Bzff9vcXX/cHJ5/2xvef9qbXf/
    +cHN9/3d5f/93eX//d3l//3Byef91eIH/c3Z//3d6g/93eoP/cHN9/3N2f/9wc33/bG95/29xdf91d33/
    +b3F1/2psc/9sbnX/dnh8/25wd/9sbnX/bG51/25wd/9qbHP/bG51/2xvef9wcnn/amxz/2xudf92eHz/
    +Z2px/25wd/9ucHf/f4GH/3Z4fP9zdXz/cHJ5/25wd/9qbXf/gYOK/2xvef9ucXv/bnB3/3V4gf9zdn//
    +c3Z//3N2f/91eIH/e32D/3t9g/92eHz/eXuB/31+gf9/gYf/eXuB/3V4gf9zdn//dXiB/3Bzff9qbXf/
    +c3V8/3d6g/93eoP/c3Z//3t9g/93eoP/bnF7/3t9g/9ucXv/dXiB/25xe/9vcXX/eXuB/3d6g/9sb3n/
    +bnB3/25wd/9nanH/bW9z/25wd/9sbnX/Z2px/3N2f/9ucXv/c3Z//3V3ff91d33/d3qD/36Ahv91eIH/
    +eXuB/3d6g/93eoP/bG95/3t9g/97fYP/d3qD/3V3ff91d33/dXiB/3V4gf9ucXv/d3qD/3V4gf9zdn//
    +bnB3/3Byef95e4H/dXiB/3Byef9zdn//bnB3/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/
    +bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/
    +bG51/3N1fP9nanT/amxz/2psc/9ucXv/cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/
    +ZGdx/2dqdP9cX2j/YGNs/2Zpc/9maXP/bG95/2Rncf9kZ3H/cHJ5/2Zobv9kZ3H/am13/2xvef9zdXz/
    +bG95/2xudf9sbnX/d3l//3l8hv9sbnX/c3V8/3N1fP9zdXz/b3F1/3V3ff9sb3n/cnR6/3Fzev90dn7/
    +bnF5/3J0e/9wcnf/cHJ5/2xudf9ucHf/bnB3/3d5f/9sbnX/b3F1/3V3ff91d33/cnR7/2xudv9sbnb/
    +cXN7/2ttc/9qbHX/bG93/3Fzef9rbXb/bG53/29yev9tcHj/a254/2xvef9ucXn/c3V7/29yev9rbXb/
    +cnV//25xef9wcnn/c3V8/3V3ff9ydHn/eXuA/3V3fv90dn3/c3V9/3h7hf91eID/dXd+/3N1fP90dnz/
    +cHJ5/3R2fv9xdH3/b3J8/3J1fP9wc3v/a252/29xeP9ydX//bW94/2xveP9nanT/a253/2xudf9qbXf/
    +bW9z/3Bzff9qbXf/aGt0/2xvef9zdn3/am11/21veP9sbnb/bW94/2xvef9qbXf/am13/3Bzff9sbnX/
    +Z2p0/2xvef9ucXv/c3V8/2xvef9sbnX/c3V8/3N1fP9zdXz/cHJ5/21vc/9qbXf/bnF7/21vc/9ucHf/
    +dnh8/21vc/9qbHP/cHJ5/3l7gf9wcnn/bG95/2xvef9ucXv/bnB3/2xvef9zdn//cHN9/2xvef9qbXf/
    +eHl9/2dqdP9nanT/bG51/3t9g/9sb3n/cHN9/2xvef9qbXf/Z2p0/3t9g/9qbHP/Z2px/2dqcf9maXP/
    +Z2px/2dqcf9qbHP/am13/25xe/9qbXf/Z2p0/2xudf9wc33/c3V8/2xvef9qbXf/bW9z/25wd/9ucHf/
    +Zmhu/2xudf9sbnX/c3V8/2dqdP9zdn//c3Z//25wd/95e4H/am13/3V4gf9zdn//cHJ5/3l7gf97fYP/
    +cHJ5/3N2f/9wcnn/bG95/3Byef9zdn//dXiB/2xvef91eIH/c3Z//3d6g/91eIH/c3V8/3N2f/97fYP/
    +bnF7/3N2f/9zdn//c3Z//2dqdP95e4H/c3Z//25xe/9ucHf/bG95/25xe/9zdXz/Zmlz/3N1fP9zdXz/
    +c3V8/25wd/9wcnn/dnh8/3Z4fP9ucHf/cHN9/25wd/9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/
    +bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/
    +am13/2psc/91d33/am13/2xudf9maXP/bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/
    +dnh8/3Byef9zdXz/Zmlz/2xvef9wc33/dXiB/3d5f/9wc33/cHN9/36Biv9wcnn/c3V8/3t9g/9+gIb/
    +e32D/3d6g/9wc33/cHN9/3l8hv+Bg4r/dXiB/3t9g/93eoP/eXuB/3N2f/91d33/b3F1/3R2fP9vcXn/
    +cnR8/21vdv90dnv/bnB3/3Byef9qbXf/bG95/2xvef93eX//bG51/25wd/93eX//e36H/3Z5gv9tcHr/
    +b3J7/3Z3ff9rbnf/bG94/2xveP90dn//bW92/3J1ff9wc33/bW92/21wev9ydX//cHN9/3F0ff9tcHn/
    +aWty/21vdv9qbHP/bG94/3V3fv9tcHn/a210/3Z4fv9tb3b/bW92/21veP9ucXr/b3F6/21wef9tb3b/
    +cXN6/2xudP9ydHv/b3F5/2xvd/9ydHz/bW93/2tueP90dnz/cXN6/29xeP9sbnX/amxz/2xudf9qbHP/
    +bG51/2xudf9wc33/bG51/2ptd/9wc3z/c3V8/21vdv9zdXz/bnB3/25xev9ucHf/cHJ5/25xe/9zdn//
    +cHJ5/2ptd/9zdXz/cHN9/3V3ff93eX//cHJ5/3V4gf9zdn//dXd9/3Bzff9ucHf/c3V8/3Bzff9zdXz/
    +cHN9/3l7gf9wc33/am13/3Byef93eX//am13/2xvef9sb3n/bG95/2ptd/9sbnX/dXd9/3Byef9qbXf/
    +Z2p0/3V3ff9nanT/bG51/29xdf9+gIb/dXd9/3V3ff9ucHf/bnB3/25wd/+Bg4r/bnB3/29xdf9vcXX/
    +bG51/2xudf9ucHf/bnB3/21vc/91d33/bnB3/25wd/9vcXX/dnh8/3l7gf9zdn//cHN9/25wd/9ucXv/
    +bnB3/2dqcf9vcXX/bG51/3N1fP9qbXf/dXiB/3N2f/9ucHf/d3l//2dqdP91eIH/c3Z//3N1fP9zdn//
    +eXyG/3N1fP93eoP/cHN9/3Bzff9zdXz/bnF7/3V4gf9wc33/eXyG/3V4gf95e4H/d3qD/2xudf9sbnX/
    +dnh8/3Byef9zdXz/bnB3/25xe/9gY2z/bnF7/25xe/9ucHf/bG51/2xudf9sb3n/bG95/2dqcf9zdXz/
    +bG95/3N2f/9ucHf/bnB3/3N1fP92eHz/b3F1/3Byef9ucHf/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/
    +am13/2xudf9ucXv/bG95/25xe/9wc33/bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/
    +bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn//
    +d3qD/3l7gf93eoP/e32D/3Bzff9zdn//d3qD/36Ahv97fof/dXiB/3d5f/+DhYz/dXiB/3V3ff97fYP/
    +foCG/3t9g/9zdn//cHJ5/3N1fP93eX//d3qD/2xvef93eX//c3Z//3N2f/9ucXv/dXd9/25wd/94eoD/
    +dHeA/3N2f/9ucXv/dnh//2xvef9wcnn/bG51/2xudf9qbHP/eHl9/2xvef9sb3n/d3l//3d6g/91d33/
    +bnF7/3Bzff96fIP/bnB3/29xdf9ucXr/d3h8/2xudf9ydHv/bnB3/2ptd/9vcXj/bnF7/2xudf9wcnn/
    +b3F4/2Zpc/9rbnX/am13/29yfP93eoD/b3J8/2xvef95e4H/b3F1/2xvef9ucXv/b3J8/3F0ff9vcnv/
    +bnF7/3Z4fv9wcnn/dnh+/3J0fP9ydHv/dXd9/2xudv9nanT/dnh+/25xe/9ucXv/am13/2ptdP9qbHP/
    +bW9z/2xudf9qbHP/cHN9/2xudf9sb3n/dXd9/3d5f/9wc33/eHqA/3N2f/9sb3n/c3Z//3d6g/91eIH/
    +e32D/3N2f/9wc33/e32D/3l8hv9+gIb/e32D/3Bzff95e4H/d3l//3d5f/9ucXv/bnB3/25wd/9ucXv/
    +bG95/2xudf9wc33/amxz/2BjbP9nanH/bG95/2Zpc/9nanH/Zmlz/2ptd/9nanT/am13/3V3ff9ucXv/
    +am13/2ptd/9zdXz/bG51/2xudf9qbXf/e32D/25xe/9wc33/am13/2ptd/9qbXf/f4GH/2ptd/9qbXf/
    +bG95/2ptd/9wcnn/bnB3/25wd/9sbnX/dnh8/25wd/9sb3n/bG95/3V3ff93eX//cHN9/3N2f/9wcnn/
    +cHN9/3Byef9nanT/cHJ5/3Byef9wc33/am13/3N2f/9zdn//cHJ5/3l8hv9ucXv/dXiB/3Bzff9vcXX/
    +bnB3/3h5ff9tb3P/bG95/2psc/9qbHP/Z2p0/2ptd/9ucXv/Zmlz/2xvef9sbnX/am13/25xe/9sbnX/
    +bW9z/3h5ff9wc33/c3V8/3N1fP9wc33/amxz/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/3Byef9maXP/
    +bnF7/2xudf9ucXv/am13/2xvef9zdXz/cHN9/2xudf9wcnn/bG51/3Byef9ucXv/bG95/2ptd/93eX//
    +dXd9/3Byef9ucHf/c3V8/3N1fP91d33/c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/
    +eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/
    +bG95/2xvef9wcnn/am13/3Bzff9nanT/Z2p0/25xe/9zdXz/dXd9/2xudf9sbnX/c3V8/2xudf9qbXf/
    +cHN9/3Z4fP9wcnn/bnB3/2xudf9tb3P/dXd9/3V4gf9sbnX/dXd9/3V3ff91d33/c3V8/3Z4fP9vcXX/
    +c3Z//3V3ff9sbnX/Z2p0/3V3ff9qbXf/bnF7/2dqdP9qbHP/Z2p0/3V3ff9ucHf/bnB3/3N1fP92eHz/
    +dXd9/3Byef9wcnn/eXuB/25wd/9sb3n/c3V8/3Z4fP9ucHf/cHJ5/21vc/9sbnX/cHJ5/3N2f/9wcnn/
    +c3Z//3N2f/9qbXf/c3V8/3N1fP93eoP/eXyG/25xe/9qbXf/fX6B/21vc/9nanT/bnF7/2xvef9sb3n/
    +bG95/2xvef9wc33/amxz/2xvef9sb3n/bG95/25xe/9nanT/ZGdx/3V3ff9wcnn/bnB3/21vc/9vcXX/
    +am13/29xdf9ucHf/bG95/3N2f/9sb3n/bG95/3N2f/93eX//bnF7/3d5f/9wc33/cHJ5/3N2f/91eIH/
    +c3Z//3l7gf9sb3n/bnB3/3N1fP91d33/dXd9/3N1fP9sbnX/dnh8/3Z4fP91d33/bnB3/21vc/9qbHP/
    +am13/2xudf9tb3P/cHJ5/2xudf9kZmz/bnB3/3V3ff9sbnX/b3F1/2psc/9wcnn/bG51/2xvef91d33/
    +c3Z//3Byef9ucHf/e32D/3N1fP9zdXz/c3V8/4OFjP91eIH/fX6B/3d5f/97fYP/dXd9/4mLkf93eX//
    +dXiB/3d6g/9zdn//dXiB/3Bzff9zdn//dXd9/3t+h/97fYP/dXd9/3Bzff95e4H/f4GH/3d6g/9ucXv/
    +bnB3/3Byef9wcnn/Z2p0/25wd/9vcXX/cHJ5/2psc/9ucHf/bnB3/2xudf93eX//am13/3N2f/9sb3n/
    +bnB3/25xe/91eIH/am13/3Bzff9ucHf/bG95/3Byef9wcnn/c3V8/2xudf9wcnn/bnB3/25wd/9zdXz/
    +cHN9/3N1fP91eIH/c3Z//3N2f/95e4H/dXiB/25wd/9ucXv/bnF7/25xe/9vcXX/amxz/3V3ff9zdXz/
    +amxz/3N1fP9tb3P/cHN9/2ptd/9ucHf/c3V8/3d5f/9qbXf/cHJ5/21vc/9sb3n/c3V8/25wd/9qbXf/
    +dXd9/3V4gf9wc33/bG95/3N2f/91eIH/d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/
    +dXiB/3t+h/9zdn//dXiB/25xe/97fYP/c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/
    +bnB3/3Bzff9zdn//c3V8/3Byef91d33/bG51/21vc/91d33/dXd9/3d5f/9sb3n/bnF7/3l7gf9wcnn/
    +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//cHJ5/3d5f/95fIb/bnB3/3N2f/91d33/dXd9/25xe/95e4H/
    +am13/3V4gf9wc33/bnB3/25wd/94eX3/b3F1/3V3ff9vcXX/b3F1/2xudf9ucXv/bG51/25wd/91d33/
    +dnh8/3N1fP9sb3n/bnB3/3Z4fP9tb3P/bG51/25xe/91d33/amxz/2xvef9qbXf/bW9z/3Byef91d33/
    +bW9z/25xe/9ucXv/Z2px/21vc/9sbnX/c3Z//36Ahv9sb3n/ZGdx/3d6g/9kZ3H/YGNs/2Zpc/9kZ3H/
    +ZGdx/2Zpc/9nanT/bG95/2psc/9qbXf/bnF7/25xe/9ucXv/Z2p0/2Zpc/91d33/cHN9/25xe/9sbnX/
    +amxz/2psc/9ucHf/bnB3/2xudf91eIH/bnF7/3Bzff93eoP/eXuB/3Bzff91eIH/cHN9/2ptd/9ucXv/
    +cHN9/25wd/91d33/bW9z/2xudf9ucHf/cHN9/3N1fP9wc33/bG95/3V3ff9ucXv/cHN9/2ptd/9nanH/
    +ZGdx/2Zpc/9iZW7/ZGdx/2Zpc/9nanH/XWBq/2psc/9ucXv/ZGdx/2xudf9kZ3H/bG95/2Zpc/9qbXf/
    +cHN9/3Bzff9sbnX/bW9z/3N2f/9sb3n/bnB3/29xdf9+gIb/cHJ5/3Byef9ucHf/cHJ5/21vc/9+gIb/
    +bG95/2xudf9wcnn/bG51/25xe/9qbHP/amxz/2dqdP93eX//cHN9/2ptd/9sbnX/c3V8/3N2f/9ucXv/
    +Z2px/2dqcf9nanT/Z2px/2BjbP9nanT/bG51/2xvef9qbHP/am13/2ptd/9qbXf/dXiB/2psc/9ucXv/
    +bW9z/2xvef9ucXv/d3qD/25wd/9wcnn/bnB3/2ptd/9wcnn/c3Z//3V3ff9sb3n/cHN9/3N1fP9wc33/
    +eXuB/3d5f/91d33/e32D/3t9g/97fYP/f4GH/36Ahv9zdXz/d3l//3t9g/93eX//d3l//3d5f/9+f4P/
    +e32D/3Bzff93eoP/c3Z//36Ahv9zdn//dXiB/3t9g/97fof/c3Z//3V4gf9zdXz/cHN9/3l7gf9wc33/
    +bnF7/3V3ff91eIH/bnF7/25xe/91d33/bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/
    +bnB3/25wd/93eX//cHJ5/3Byef9ucHf/eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/
    +bG95/2xudf9ucXv/cHJ5/3N1fP9ucHf/c3V8/2dqdP9maXP/bnF7/25xe/9ucXv/ZGdx/2dqcf9ucHf/
    +Zmhu/2Jlbv9qbXf/cHJ5/2xvef9ucXv/bG95/2dqdP9wc33/c3Z//2xudf9wc33/cHN9/3Byef9sbnX/
    +cHN9/2dqdP9qbXf/bG95/2xvef9qbXf/c3V8/2xudf9wc33/am13/2ptd/9qbXf/cHJ5/25wd/9ucHf/
    +dXd9/3V3ff9zdXz/bnB3/25wd/92eHz/bG95/2dqdP91d33/dXd9/2xudf9qbXf/bG51/2xudf9qbXf/
    +c3V8/25wd/9sb3n/cHN9/2ptd/9wcnn/bnB3/3Bzff9+gIb/bnB3/2psc/9/gYf/b3F1/2psc/9zdXz/
    +bnB3/3Byef9wcnn/bnF7/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/2xudf9maG7/d3l//3l7gf9zdn//
    +bnB3/2xudf9nanT/bnB3/25wd/9qbXf/c3Z//2ptd/9sb3n/c3Z//3d5f/9ucXv/dHeA/3N2f/9rbnf/
    +bnF7/25xe/9ucHf/eXuB/2xvef9sb3n/cHN9/3d5f/95e4H/dXd9/3Bzff91d33/cHN9/3Z4fP9ucHf/
    +bG51/29xdf9ucHf/bnB3/2xvef9zdn//c3Z//2Zpc/9zdn//d3qD/25wd/9wc33/am13/3V4gf9wc33/
    +dXiB/36Ahv9+f4P/dXd9/3V3ff97fYP/c3Z//3N1fP9wc33/foGK/3V4gf91eIH/eXuB/3t9g/91d33/
    +g4WM/3t9g/9zdn//eXuB/3Bzff91eIH/cHJ5/25xe/9ucHf/eXyG/3l7gf9wc33/cHN9/3N2f/93eX//
    +c3Z//25wd/9sb3n/bnF7/25wd/9nanT/b3F1/25wd/9wcnn/bW9z/2xudf9ucHf/am13/3l7gf9nanT/
    +bnF7/25xe/9wc33/cHN9/3t+h/9qbXf/bnF7/3Byef9ucHf/bnF7/3V4gf91eIH/dXd9/3l8hv91d33/
    +d3l//36Ahv95e4H/d3l//3l8hv95e4H/d3l//36Ahv97fYP/cHN9/3V4gf91eIH/cHN9/3Byef9qbXf/
    +dnh8/3Byef9nanT/bnF7/2psc/9zdXz/bG51/2ptd/9ucXv/c3V8/2dqdP9qbXf/Z2px/2Zobv9ucXv/
    +am13/2Rncf9qbXf/am13/2Zpc/9nanH/am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/
    +eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/
    +bnF7/25wd/9vcXX/c3V8/3Byef9ucXv/bnB3/3N1fP9qbXf/Z2p0/3Bzff92eHz/dXd9/2psc/9wcnn/
    +dXd9/21vc/9sbnX/c3V8/3V3ff9wc33/bG95/3Byef9sb3n/c3V8/3l7gf9sb3n/cHN9/3V3ff9zdXz/
    +cHN9/3V4gf9sb3n/bnB3/29yfP9wc33/bG95/3d5ff9sb3n/dXd9/2ptd/9sb3n/am13/25xe/9wcnn/
    +c3Z//3V4gf95e4H/d3l//25xe/9ucXv/d3l//25xev9qbXf/cHJ5/3J0e/9sbnX/bG52/2xudf9sbnX/
    +bnB3/3N1fP9tb3P/a254/2tueP9oa3T/a253/2xudf9vcXn/eXuC/29xeP9qbHP/fH6F/25wdf9nanL/
    +cnR7/29xeP9xc3r/cHJ5/21vd/9zdXz/b3F4/25xev9ucXv/b3J8/25xe/9sbnX/Zmlz/3N2fP9xdH7/
    +cnR7/21vc/9nanT/ZGdx/2xudf9sbnX/amxz/25xe/9qbXf/am13/25xev90dnz/a211/2ptd/9sb3n/
    +Z2pz/2xvef9sbnX/amxz/3N1fP9nanT/Z2p0/2xvef9zdXz/c3V8/3Bzff9sb3n/cHN9/2xvef9zdXz/
    +bG95/2xudf9qbXf/bG95/2xudf9qbXf/cHJ5/25wd/9nanH/cHN9/3N2f/9sb3n/cHJ5/2Zpc/9wcnn/
    +bG51/3Bzff93eX//d3qD/3Byef9qbXf/dXiB/25xe/9zdXz/cHN9/36Biv9zdn//c3Z//25xe/9zdn//
    +c3Z//4GDiv9zdn//cHJ5/3l7gf9wcnn/c3Z//3N1fP9wc33/bG95/3d6g/91eIH/b3F1/29xdf9zdXz/
    +eHl9/3h5ff9tb3P/bG51/2xudf9qbHP/Z2p0/21vc/9wcnn/cHJ5/25wd/9wcnn/cHJ5/25wd/95fIb/
    +Z2p0/25xe/9wc33/bnF7/25xe/97fof/c3Z//3d5f/91d33/eHl9/3d5f/95e4H/e32D/3l7gf9+gYr/
    +eXyG/3l8hv+Agob/cHJ5/25wd/9wc33/bG95/2xvef92eHz/dXd9/2xudf9tb3P/bG95/25xe/9ucHf/
    +amxz/3V3ff9wcnn/bnB3/3Byef9vcXX/d3l//25xe/9zdn//eXuB/3l8hv9zdn//dXiB/3Bzff9wc33/
    +dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/
    +bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/
    +b3F1/3Byef9sbnX/bG51/25xe/9sbnX/cHJ5/25wd/9zdXz/bW9z/2psc/9wc33/dXd9/3N1fP9nanT/
    +bnF7/3Z4fP9vcXX/b3F1/3N1fP91d33/cHN9/25xe/9wc33/bG95/3Bzff93eoP/bG51/3Byef9ucXv/
    +bnF7/3Byef91d33/bG51/21vd/9tcHr/c3V9/2xvdv92eH3/b3F4/3Byef9sbnX/bG51/2xudf9qbXf/
    +bW9z/3N1fP91d33/dXiB/3V3ff9ucHf/bXB6/3J1fv9vcXj/a212/25xe/9ucXv/bnB4/29yd/9ucXr/
    +cnR7/3F0ff92eH7/b3F4/3N1fv9xdH3/bnB2/3BzfP9vcXj/cnV8/3x+hP9tb3b/a210/3p8gv9vcXb/
    +aGp0/2xveP9vcXf/bnF5/25xef9tb3b/bXB6/25weP9tb3f/bnB4/3Bzev9ucHj/bW91/2dqc/9ydXr/
    +eHl//3N1fP9tb3b/bnB3/2xudf9vcXX/b3F1/2xudf9wcnn/bG51/2xudf9xc3r/d3mA/29xd/9ucXv/
    +c3V+/3BzfP9sb3n/amxz/2psc/9ucHf/YmVu/2Zpc/9nanT/Z2p0/2dqdP9maXP/Zmlz/25wd/9maXP/
    +Z2p0/2Zobv9kZ3H/YmVu/2Rncf9kZ3H/Zmhu/2ptd/9sbnX/ZGdx/2xudf9wc33/am13/2ptd/9iZW7/
    +bG51/2Zpc/9ucXv/dXd9/3N1fP9ucHf/bnB3/3N2f/9sb3n/bnB3/25wd/95e4H/bnB3/2xvef9qbXf/
    +bnB3/2xudf99foH/cHJ5/25wd/9zdXz/bnB3/3Byef9ucHf/cHN9/3Byef97fof/eXuB/25xe/9wcnn/
    +eHl9/3Z4fP94eX3/bW9z/2xudf9sbnX/b3F1/25wd/9vcXX/cHJ5/3Byef9sbnX/cHJ5/25wd/9tb3P/
    +d3l//2dqcf9ucHf/c3V8/2ptd/9sbnX/dXd9/2ptd/9sb3n/bG51/2dqdP9qbXf/am13/2ptd/9maXP/
    +bnF7/2xudf9sbnX/cHJ5/25xe/9sb3n/c3V8/25wd/9ucXv/eXuB/3V4gf9ucXv/c3V8/3V4gf91eIH/
    +bnF7/2ptd/9wc33/cHN9/3Byef9wc33/bnB3/3d5f/9wcnn/cHN9/3d6g/95e4H/c3Z//3V4gf9ucXv/
    +cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/
    +c3V8/2xudf95e4H/bnB3/3N1fP93eX//dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/
    +am13/2Zpc/9nanT/bG51/2psc/9sb3n/bG51/2xvef9qbXf/bG95/2dqcf9maXP/bnF7/3Byef9sb3n/
    +Zmlz/2ptd/9ucXv/am13/2xudf9wcnn/dXd9/3N1fP9zdXz/dXd9/25xe/9zdn//e36H/2xvef9zdXz/
    +cHJ5/3V3ff91d33/dXd9/25wd/9sbnf/b3J6/3N2f/9sb3f/dniA/3F0ff90dnz/bnB3/21vc/9sbnX/
    +am13/2psc/9ucXv/bnF7/3V3ff9wc33/Z2p0/3Byef9ucXv/a252/2lsdv9sb3n/a254/2tueP9tcHj/
    +bG95/2hrdf9maXP/bnF5/2lrcf9tcHj/am13/2dqcv9pbHb/aWt0/2psdP9wcnv/ZWhy/2Zpc/9vcnr/
    +a252/2dqc/9nanT/cXR8/25wef9ucHj/ZWhx/2Vocv9kZ3H/Zmlx/2dpcP9nanT/aWx0/2Vocf9gY2z/
    +Z2p0/3N1ff9qbXf/Zmly/2Zocf9jZm7/ZWhy/2dqcf9kZ3H/Z2p0/2Rncf9nanP/b3J7/3R3f/9rbnb/
    +a211/3R2fP9ydHv/bnF7/21vc/9ucHf/d3l//2psc/9ucHf/cHN9/3N1fP9zdXz/c3Z//2xvef91eIH/
    +c3V8/3Z4fP9zdXz/cHJ5/25wd/9ucXv/b3F1/25wd/9ucHf/bnB3/2xudf9sbnX/c3V8/2xudf9sbnX/
    +Zmlz/2psc/9qbXf/bnF7/3N1fP9wc33/am13/2ptd/9ucXv/bG51/25wd/9ucHf/foCG/25xe/9wcnn/
    +b3F1/2xudf9zdXz/e32D/3N1fP9ucHf/c3V8/25wd/9zdXz/bnF7/3N2f/9wcnn/eXyG/3d6g/9zdn//
    +c3Z//3d5f/93eX//eXuB/25xe/9ucXv/bnB3/2xvef9sb3n/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/
    +cHJ5/3d5f/9kZ3H/bnF7/3Bzff9sb3n/bnF7/3V4gf9ucHf/bG95/25xe/9ucHf/cHN9/25wd/9ucXv/
    +bG95/3N1fP9ucHf/bnB3/25xe/91eIH/dXiB/3N2f/9sb3n/bnB3/3h5ff9ucHf/bG51/21vc/9wcnn/
    +c3V8/3Byef9nanT/bnF7/3N2f/9sb3n/cHJ5/2xvef95e4H/cHN9/3Bzff91eIH/dXiB/3Z4fP9zdn//
    +bG95/25xe/91eIH/cHN9/25wd/95fIb/d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/
    +bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/
    +dnh8/2xvef9qbXf/am13/2xudf9qbXf/c3V8/2xudf9wcnn/bnB3/3N1fP9vcXX/bG51/3V3ff91d33/
    +dXd9/2ptd/9sb3n/am13/2ptd/9maXP/bnF7/3V3ff9sb3n/cHN9/25xe/9qbXf/cHN9/3V4gf9sbnX/
    +cHJ5/2xudf92eHz/cHN9/3d5f/9wc33/bnB4/29xef95e4L/bnB2/3N2fv9ucXr/c3V+/2xvef9ucHf/
    +cHJ5/25xe/9ucHf/dXd9/3Byef91d33/c3V8/21vc/9ydHz/b3F6/2ttdv9rbXX/am13/2Zpc/9rbnf/
    +bG94/2tueP9naXD/Zmlz/2xveP9oa3X/cnR7/2ptd/9oa3T/cnR7/2xudf9sb3b/dHZ+/3Bydv9sb3n/
    +cHN8/3J1ff9tcHn/b3F1/3l7gf92eH7/dXd9/25wd/9tb3f/aGt1/25wd/9ucHf/bG95/3R2f/9ucHf/
    +bW92/25wd/97fIH/cHJ5/21wef9ucHf/am13/21wev9ucXv/bnB3/3N2f/9ucHf/b3F4/3F0fv90d4H/
    +a254/2lsdv9xdH7/c3V8/3N2f/9wc33/d3qD/3t+h/9ucXv/cHN9/3d6g/91eIH/dXiB/25xe/9ucHf/
    +e36H/3Bzff95fIb/d3qD/3Bzff9nanT/bnB3/2xvef9sb3n/c3V8/2ptd/9nanH/cHJ5/3Byef9vcXX/
    +bG95/2xudf9ucHf/bG95/3Bzff94eX3/dXd9/3Byef9wcnn/eXuB/3N2f/9zdXz/c3Z//3l8hv9ucXv/
    +bnF7/25wd/9ucXv/cHN9/3l8hv9wc33/bG95/3V3ff9wcnn/cHJ5/3Byef9wcnn/bG51/3N1fP9sb3n/
    +bG51/2xudf9wc33/bG95/25wd/9qbHP/Z2px/2dqcf9kZ3H/Z2p0/2xudf9sb3n/bnB3/2xudf9vcXX/
    +bnB3/25xe/93eX//ZGdx/25xe/9wc33/c3Z//3N2f/95fIb/cHJ5/3V4gf93eoP/c3Z//3t9g/91d33/
    +dXiB/3Bzff93eoP/c3Z//3N2f/93eoP/eXuB/3l7gf93eoP/dXiB/3d5f/9/gYf/foCG/3d5f/92eHz/
    +e32D/36Ahv99foH/d3l//3t9g/9+f4P/eXuB/3d6g/9wc33/foGK/3N2f/9zdn//eXyG/3l8hv97fYP/
    +d3qD/3V4gf9wc33/e32D/3V4gf9ucXv/e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/
    +am13/25wd/9wcnn/bG51/3l7gf9ucHf/c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/
    +bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/bG95/3Bzff9sbnX/cHJ5/3Byef9ucHf/am13/2psc/91d33/
    +dXd9/3Byef9maXP/am13/2dqdP9nanH/YmVu/2Zpc/9ucHf/am13/25xe/9ucXv/am13/25xe/91d33/
    +amxz/25xe/9qbXf/bnF7/25wd/9zdXz/am13/25xe/9zdn//fH+I/3Byev90d4D/b3J6/3Bzff9nanT/
    +bG51/2ptd/9qbXf/bnB3/3N1fP9wcnn/dXd9/3N1fP9sbnb/dXd+/3R3f/9vcnr/bnF6/3Bzff9vcXv/
    +dnmC/3p8gv94eoD/cnV//3Byef9zdn//cHJ5/3h6gP9wc33/bnB3/3Z5gv9zdXz/c3V8/3l8hv91d33/
    +dHZ8/3R2ff92eYL/dHeA/3N1fP95fIX/d3qD/3Z4f/9wc33/bG95/2dpc/9ucHf/bG51/29xdf9wcnn/
    +bnB3/25wd/9sb3n/e32D/29ye/9ucXr/bnB3/21vdv9tcHr/bnB3/29xdf9ucXv/cHJ5/25wd/9tcHr/
    +dnmC/2tueP9sb3n/d3qD/3N2f/9ucXv/bnB3/25xe/93eX//bG95/25wd/9wc33/cHN9/3N2f/9wc33/
    +bnB3/3t+h/9ucHf/dXiB/3N1fP9wcnn/Z2px/3Byef9sbnX/bnB3/25xe/9ucXv/bnF7/3N2f/9wc33/
    +c3V8/2ptd/9sb3n/cHJ5/3N1fP93eoP/eXyG/36Ahv91d33/dnh8/36Ahv95fIb/cHN9/3N1fP9/gYf/
    +c3Z//3V4gf93eoP/d3l//3d5f/+Cg4f/e32D/3Z4fP95fIb/c3Z//3V4gf9zdn//c3Z//25wd/95e4H/
    +d3qD/3N2f/9zdn//d3qD/3N2f/93eX//bnB3/2xvef9sb3n/bG95/25wd/9ucHf/dnh8/3Byef9vcXX/
    +bG51/25wd/9wcnn/dXd9/2Zobv9sb3n/bnF7/3Bzff91eIH/e32D/25wd/9ucXv/bG95/3Byef9zdn//
    +bnB3/3V4gf9wc33/eXyG/3V3ff93eX//e32D/2Zpc/9nanT/Z2p0/2xudf9sbnX/c3V8/2ptd/9sbnX/
    +am13/3N1fP9sb3n/cHN9/2xudf9zdXz/dXd9/25wd/9wcnn/bnF7/36Biv9zdXz/c3V8/3t9g/95fIb/
    +d3l//3Bzff9ucXv/bnF7/3N2f/9sb3n/bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX//
    +amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/
    +bG95/2xudf9wc33/am13/2Zpc/9sb3n/am13/25wd/9zdn//bnB3/25xe/9wcnn/c3V8/25wd/9ucHf/
    +d3l//3Z4fP92eHz/am13/25xe/9wcnn/bW9z/2dqdP9sb3n/cHN9/2xvef9zdXz/c3V8/2xvef9wc33/
    +dXd9/2xudf9sb3n/bG51/2xvef9qbXf/bnF7/2ptd/9wc33/bnF7/3h7hf9sb3b/cHJ7/25wdv9ucXv/
    +am13/2xudf9sbnX/bG95/2xudf9ucXv/dXiB/3V4gf9zdXz/b3F1/3R2fP9xc3v/bnB1/25wd/9ucHf/
    +am13/3Bzff91d33/dnh8/3Byef9sbnX/cHN9/3Byef95e4H/cHN9/25xe/91d33/bW9z/25wd/9wcnn/
    +bnB3/29xdf9ucHf/c3V8/3Byef9vcXX/eXuB/3V4gf95e4H/bnB3/25wd/9kZmz/bG51/2dqdP9qbHP/
    +bG51/2ptd/9maXP/amxz/3N2f/9qbXf/am13/2ttdv9rbnX/cHJ6/2xvef9wcnn/cHN9/3Byef9vcnn/
    +bXB6/3N2gP9oa3X/Z2p0/2xvef9qbXf/dXiB/3N1fP93eoP/eXyG/3N2f/93eX//fn+D/3l8hv95fIb/
    +dXiB/3d6g/9+gYr/cHN9/3d6g/91eIH/bnF7/2dqdP9sb3n/bnF7/25wd/9wc33/bG95/2ptd/9wc33/
    +bnF7/3Byef9sb3n/bnF7/2xvef9sb3n/c3V8/3V3ff9zdXz/bnB3/25wd/93eX//bnF7/3Byef9ucHf/
    +e32D/25wd/9wc33/c3V8/25xe/9ucHf/eXyG/3N1fP9ucHf/dnh8/21vc/9sb3n/cHJ5/25xe/9sbnX/
    +dXd9/3V3ff9ucXv/bG51/3N1fP9ucXv/dnh8/2xudf9qbXf/bG51/21vc/9tb3P/bW9z/3N1fP9sbnX/
    +amxz/2dqdP9sbnX/bnF7/3N1fP9kZ3H/bG51/2xvef9nanT/am13/2xvef9maG7/bG51/2xudf9qbHP/
    +Z2p0/2Rncf9maXP/Zmhu/2Zpc/9iZW7/ZGdx/2dqdP9qbXf/am13/2xvef9qbXf/amxz/3N1fP9maXP/
    +Z2px/2Zpc/9sb3n/am13/25xe/9kZ3H/cHN9/25xe/9sbnX/bG95/2xvef91eIH/bnB3/29xdf93eX//
    +eXyG/3d6g/9wc33/cHN9/3N2f/95e4H/c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/
    +f4GH/3d5f/93eoP/c3Z//3d6g/91d33/foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn//
    +am13/25xe/9ucXv/c3Z//3Bzff9qbXf/c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bnB3/3V3ff9ucHf/
    +am13/3V4gf95e4H/eXuB/2xvef9wc33/cHN9/3N1fP9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9sbnX/
    +cHN9/3d5f/9qbXf/bnB3/21vc/9wcnn/bnF7/3V3ff9ucXv/bG51/25wd/94eoH/bnB4/3J0fP9vcXn/
    +dHZ9/2xudf9qbXf/Z2p0/2ptd/9nanP/bG95/2xvef93eX//bnF7/2psc/9tcHn/bnB5/21vdP9rbXT/
    +bnB3/2dqcf9sb3n/cHN9/25xe/9sb3n/amxz/2xvef9maG7/bG95/2dqcf9nanH/am13/2dqdP9maXP/
    +bG95/2ptd/9qbXf/am13/2xudf91d33/bG95/3l8hv95e4H/eXuB/3Bzff9ucHf/am13/3N2f/9zdXz/
    +c3V8/3V4gf91d33/dXiB/3d5f/+DhYz/e32D/3h6gP9zdn7/b3F5/2xvef9rbnj/Z2px/2dqdP9qbHP/
    +a210/2xvef93eX//c3V8/25xev91eIH/cHN9/2xudf9sbnX/cHJ5/3Bzff9kZ3H/bnF7/3N1fP9sb3n/
    +bG95/2xvef9ucXv/dXiB/2xvef91d33/bnF7/3N1fP9sbnX/bnB3/2xudf9ucHf/bG51/25wd/9qbXf/
    +c3Z//25wd/9sb3n/bnF7/2ptd/9sb3n/bnB3/3Bzff93eoP/c3Z//25xe/9sb3n/dXiB/25xe/9wc33/
    +cHJ5/3t+h/9ucXv/bG95/29xdf9sbnX/cHJ5/3t9g/9ucXv/amxz/3V3ff9qbHP/am13/2ptd/9sb3n/
    +Z2p0/3V3ff9sb3n/am13/2psc/9zdXz/cHJ5/3d5f/9tb3P/bW9z/2xudf9nanH/bG51/2xudf91d33/
    +bG51/21vc/9sbnX/bG51/3Z4fP92eHz/Z2p0/2xvef91d33/c3V8/25xe/9zdXz/b3F1/25wd/9ucHf/
    +bnB3/25wd/9nanT/bG95/2ptd/9ucXv/am13/2xudf9sbnX/bG95/25wd/9wcnn/bG95/2xudf9zdXz/
    +Z2p0/2dqcf9nanT/bG95/2ptd/9ucXv/ZGdx/25xe/9zdXz/bG51/2xvef9qbXf/cHJ5/2dqcf9nanH/
    +bG95/3Bzff9ucXv/Z2p0/2dqdP9nanT/bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/
    +cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/
    +c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/
    +bnB3/2xvef91eIH/dnh8/3V3ff9ucHf/cHN9/3N1fP9vcXX/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/
    +bnB3/3Z4fP93eX//bG51/3N1fP9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9ucXv/d3qD/29yfP9zdn//
    +c3V9/3l7gf9qbXf/bnF7/3Byef9zdn//a254/3N2f/91eIH/e32D/3d6g/9wcnn/cXR+/3J1fv9ucXn/
    +bnB3/3Byef9qbHT/c3Z//3h6gP9zdn//bnF7/2xvef9zdXz/b3F1/3N1e/9sbnX/bG51/3R2fP9ucXv/
    +bnB3/3F0ff9vcXj/b3F4/25xe/9zdXz/dXiB/25xe/95fIb/eXuB/3l7gf9ucXv/am13/2Zpc/9wcnn/
    +bnB3/2ptd/9wc33/bG95/3Bzff9ucHf/d3qD/3N2f/9wcnn/bnB3/29xdv9ucHf/cHJ5/25wd/9ucXv/
    +bG95/25wd/9sb3j/dXd8/29xd/9sbnX/cHN9/2xvef9ucHf/bG95/3d5f/91eIH/Zmlz/3V4gf95e4H/
    +cHN9/3N1fP91eIH/d3qD/4GDiv95e4H/eXyG/3V4gf93eoP/bnF7/3N1fP9ucXv/bG95/2xvef9ucHf/
    +bnB3/3N2f/9wcnn/bnB3/2ptd/9ucHf/bG51/25wd/9ucXv/d3l//25xe/9ucHf/amxz/3d5f/9ucXv/
    +am13/2ptd/91d33/bG51/3Byef9ucHf/cHN9/3V4gf9+gYr/d3qD/3Bzff97fof/cHN9/3N2f/93eoP/
    +dXiB/3N2f/97fof/e32D/3d6g/91d33/e32D/3d6g/9+gYr/cHN9/3N1fP9zdXz/cHJ5/2xvef9ucHf/
    +dXd9/25wd/9tb3P/bnB3/25wd/9zdn//dXd9/25wd/9tb3P/c3V8/2xvef9sb3n/cHN9/2dqcf9qbHP/
    +amxz/2ptd/9qbXf/Z2p0/2ptd/9sb3n/cHN9/2xudf9nanT/am13/2dqdP9maXP/Z2p0/2dqdP9kZ3H/
    +am13/2Rncf9maG7/YmVu/2Zpc/9kZ3H/am13/1xfaP9qbXf/bG95/2BjbP9kZ3H/Z2px/2xvef9maG7/
    +Zmhu/25wd/9zdXz/bnF7/2dqdP9maXP/Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/
    +bG51/2xvef9zdn//amxz/2xudf9qbHP/bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/
    +bG95/25xe/9maXP/bG51/2xudf9ucXv/bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/25wd/9zdXz/
    +cHJ5/29xdf9sbnX/dXd9/3V4gf95e4H/cHN9/3V4gf9zdn//cHJ5/3N1fP9wc33/e32D/3t9g/9+gYr/
    +eXuB/3Bzff95e4H/eXuB/25wd/9zdn//bG95/3N2f/91eIH/eXyG/3d5f/9wcnb/b3F2/3Z4ff9vcXj/
    +cHN7/21veP90dn3/am13/3Byef9wcnn/cHN8/2psc/9ucHf/bnB3/3V3ff9wcnn/bW9z/29xeP9sb3n/
    +amxy/2Zpcv9oa3T/X2Js/2hrdf9xc3v/bG95/2xudf9pbHb/bXB6/2ttdf9rbnf/a252/2lsdv9tb3j/
    +bW93/2psdP9vcnz/amx0/2dqdP9tb3b/bG51/3N1fP9qbXf/d3qD/3Bzff9wc33/bG95/2ptd/9qbHP/
    +bnB3/21vc/9sbnX/bnB3/2xudf9wcnn/bW9z/3d5f/9wc33/bG95/29xef9sbnX/aWx2/2ptd/9nanT/
    +am13/2xudf9nanT/a210/3N1ff9vcXn/bW93/3V4gf91eIH/am13/2ptd/9wc33/cHN9/2Jlbv9ucXv/
    +dXd9/25wd/9sbnX/bG51/25wd/91d33/cHJ5/3V3ff9sbnX/cHN9/2dqdP9vcXX/bG51/2xudf9qbXf/
    +am13/2xudf9zdXz/bnB3/29xdf9maXP/bG95/2xvef9sb3n/c3Z//3V4gf9wcnn/c3V8/2psc/91d33/
    +cHN9/25xe/9sb3n/d3l//2xvef9ucXv/bnB3/2xudf9zdXz/foCG/3N2f/9sb3n/d3qD/2xvef9sb3n/
    +c3Z//3N1fP9ucHf/dnh8/3Byef9ucHf/bG95/3V3ff9wcnn/e32D/29xdf9tb3P/bG51/29xdf9ucHf/
    +b3F1/3Z4fP9ucHf/bnB3/3Byef9zdXz/dXd9/3V3ff9nanH/bG51/3d5f/9sb3n/am13/2xvef9sbnX/
    +bnF7/2xvef9nanT/am13/2Rncf9maXP/Zmlz/2dqdP9iZW7/XF9o/2Rncf9ucXv/am13/3Byef9zdXz/
    +bG51/3V3ff9ucHf/bG51/2psc/9zdXz/cHJ5/3N1fP9maG7/cHJ5/3N1fP9nanT/dXd9/2xudf92eHz/
    +b3F1/2xvef91eIH/d3qD/3V4gf9sb3n/bnF7/3N2f/91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/
    +bG51/25wd/9zdXz/d3l//2ptd/9qbXf/bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/
    +bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9sbnX/
    +bnF7/2ptd/9sbnX/am13/3d5f/93eX//eHl9/25wd/91d33/cHN9/25wd/9ucXv/cHJ5/3l7gf93eX//
    +e36H/3d5f/9ucHf/dXiB/3d5f/9wcnn/c3Z//2xvef9ucXv/c3Z//3l7gf92eHz/Z2pz/2Zpcv9ucHj/
    +Zmlz/2hrc/9pbHb/bXB6/2dqdP9maXP/Zmlz/2dqdP9hZGz/Z2px/2dqcf9zdXz/am13/2dqdP9oa3X/
    +a254/2hrdP9oa3P/am13/2hqcf9tcHj/cHJ5/3Byef90dnz/bnB5/3V4gf9ydHz/cXR+/29ye/9vcnv/
    +b3J8/3N2f/9xc3r/eXyF/29ye/9tb3f/cnR+/3N1fP93eX//bnF7/3l8hv95e4H/dXiB/3N2f/9ucHf/
    +am13/3N1fP9wc33/cHN9/3N2f/9ucHf/bnF7/2xvef95e4H/dXd9/25wd/9wc3r/cHN6/29ye/9ydX7/
    +c3Z//3V4gf9zdXz/c3Z//3J1fv94eoL/cXN6/25weP9zdXz/c3V8/3V4gf91d33/foCG/3t9g/9wc33/
    +d3qD/3l7gf93eoP/c3Z//3N2f/9zdn//d3qD/3N2f/93eX//bnB3/3V4gf9nanT/cHJ5/3Byef9wcnn/
    +cHJ5/2xvef9wcnn/d3qD/3N2f/91d33/am13/3N1fP9wc33/cHN9/3l8hv97fYP/d3qD/3N2f/9ucHf/
    +eXuB/3N2f/9ucXv/cHN9/3l7gf9wc33/c3Z//25wd/9wcnn/dXiB/36Ahv9zdn//bnB3/3d6g/9vcXX/
    +bnB3/3N1fP9wcnn/bG51/3h5ff9wcnn/cHJ5/2xudf9zdXz/cHJ5/3d5f/9tb3P/bG51/2dqdP9ucHf/
    +bnB3/3Byef93eX//bnF7/25wd/9ucXv/c3Z//3V3ff91d33/Z2p0/25xe/95e4H/c3Z//3N2f/9wc33/
    +bnB3/3N2f/9ucHf/bnB3/3V3ff9sbnX/cHJ5/3V3ff91d33/b3F1/2dqcf9wcnn/c3Z//3Byef9zdn//
    +dXiB/3Bzff95e4H/c3Z//25xe/9qbXf/c3Z//3V3ff91d33/amxz/3Byef94eX3/bG95/3N2f/9ucXv/
    +dXd9/25wd/9ucXv/d3qD/3V4gf93eoP/b3F1/3Byef91d33/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/
    +am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/
    +bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/
    +Z2px/2dqdP9qbHP/Zmlz/2Jlbv9qbXf/am13/2xvef9maG7/Z2p0/2Rncf9gY2z/ZGdx/2Rncf9sb3n/
    +Zmlz/3Bzff9zdXz/amxz/2ptd/9zdXz/bG51/25xe/9qbXf/am13/2xvef91d33/c3V8/21wev9vcXb/
    +dHZ8/25wd/9vcnz/bXB5/3N2f/9sbnX/bG51/25wd/9ucXv/Zmlz/21vc/9sbnX/dXd9/25wd/9ucHf/
    +cXN6/29xeP9ucHj/bnF6/3Bzff9vcnz/dHeA/3J1f/9wc33/dnmC/3J0fP93eYD/dHZ9/29xeP9wcnr/
    +bnB4/3Byef9ydHv/b3F5/3h7gv9vcnz/bG93/3Fzev9sb3n/dnh8/29xdf95e4H/d3l//3N1fP9zdn//
    +bnB3/2dqcf9tb3P/bG51/2xudf9sb3n/amxz/2ptd/9nanH/c3Z//2xvef9qbHP/bG94/21vdv9rbnb/
    +bG95/2ptd/9qbXf/Z2p0/2xudf9sbnX/cnR7/29xeP9oa3T/bG95/2xvef9ucXv/bG95/3V4gf9zdn//
    +amxz/25xe/91d33/bnB3/21vc/9qbXf/cHJ5/3d5f/9wcnn/d3l//2xvef91d33/Z2p0/25xe/9sb3n/
    +bG95/3Byef9tb3P/bW9z/3Bzff9sbnX/Z2p0/2BjbP9nanT/Z2p0/2Zpc/9sb3n/bnF7/2dqdP9nanT/
    +YmVu/25wd/9maXP/ZGZs/2Rncf9sb3n/Zmhu/2ptd/9kZ3H/YmVu/2Zpc/9ucHf/Z2p0/2BjbP9sb3n/
    +YmVu/2Rncf9qbXf/Zmlz/2psc/9qbXf/Zmlz/2Rncf9iZW7/am13/2dqdP9zdn//amxz/2psc/9nanT/
    +am13/2xudf9nanH/dXd9/2xudf9tb3P/bnB3/3Byef94eX3/d3l//2ptd/9ucXv/eXuB/3V4gf93eoP/
    +dXiB/3N1fP95e4H/cHN9/3Bzff93eoP/cHJ5/3V4gf91eIH/c3Z//25wd/9qbXf/cHN9/3V3ff9vcXX/
    +c3Z//3V4gf9ucHf/c3Z//25wd/9wc33/Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dXiB/2ptd/9wc33/
    +bnF7/3Z4fP9wcnn/cHJ5/3l7gf93eX//e32D/29xdf91d33/dXd9/3N1fP9sb3n/Z2p0/3V3ff91d33/
    +bnB3/2xvef9sbnX/bnB3/25wd/91d33/bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/
    +bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/
    +bnB3/21vc/9wcnn/bG51/2xvef9qbXf/dnh8/3h5ff91d33/bG51/25wd/9ucHf/am13/2xudf9nanT/
    +c3V8/2xvef91d33/dXd9/2xudf9sb3n/c3V8/2dqdP9ucXv/Zmlz/2xvef9wcnn/d3l//3Bzff9wc3v/
    +bXB5/3J1fv9qbXf/bnF7/2ptd/9zdXz/bG51/25wd/9zdXz/bnF7/2ptd/9ucXv/cHJ5/3d5f/9ucXv/
    +cHN9/3V4gf9ucXv/bnF7/25wd/9vcnz/bXB6/21wev9oa3X/bXB6/3R2fP9ucHX/eHqA/29xef9sb3n/
    +bG95/2dqdP9qbXf/Z2p0/2Zpc/9ydHz/bXB4/2lsc/9tb3j/a253/3V3ff9ucHf/d3qD/3V4gf91d33/
    +dXd9/29xdf9maG7/bnB3/21vc/9sbnX/bnF7/2xudf9wcnn/bW9z/3V4gf9wc33/amxz/2ptd/9qbXb/
    +bnB3/29xeP9qbXf/bnB3/2dqcf9sbnX/bG51/21wev9rbnf/Z2p0/2psc/9sb3n/cHJ5/2psc/91d33/
    +dXd9/2psc/9sb3n/c3V8/3Byef9sb3n/bnB3/3V3ff94eX3/bnF7/3l8hv9zdXz/e32D/2xvef9zdn//
    +d3qD/3N2f/93eoP/dXd9/3N2f/9+gIb/cHN9/3N1fP9sb3n/cHN9/3N2f/9zdn//d3qD/3t9g/95fIb/
    +d3qD/3Bzff97fof/eXyG/3V4gf9zdXz/dXiB/25wd/9wcnn/bnB3/3Byef91d33/d3qD/3d5f/9sb3n/
    +d3l//25wd/9ucXv/d3qD/3V4gf91eIH/d3qD/3V4gf91eIH/dXd9/3t9g/93eoP/foGK/3Byef9ucXv/
    +bnB3/25xe/9wcnn/c3V8/3t+h/9wc33/cHJ5/25xe/9wc33/d3l//3h5ff9qbXf/cHJ5/3d6g/9wcnn/
    +dnh8/3N1fP9sbnX/dnh8/29xdf9ucHf/cHJ5/21vc/9zdXz/c3V8/3N1fP9tb3P/bG51/3N2f/9ucXv/
    +bG51/2xvef9wc33/Zmlz/2xvef9nanH/Zmlz/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/25xe/9qbXf/
    +bnF7/25wd/91d33/bnF7/2xvef93eoP/eXuB/36Ahv9wcnn/c3Z//3l7gf93eoP/c3Z//25xe/9+gIb/
    +foGK/3l7gf97fYP/d3l//3t9g/93eoP/foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/
    +e32D/3N1fP9wcnn/cHJ5/25xe/9zdn//c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/
    +dXiB/3Bzff9wcnn/bG95/25wd/9zdXz/bG51/3V3ff92eHz/dXd9/25wd/9sb3n/bnF7/2xvef9ucHf/
    +cHJ5/3h5ff9wcnn/foCG/3t9g/9tb3P/cHJ5/3Z4fP9ucHf/dXd9/2ptd/9ucHf/c3Z//3V4gf92eHz/
    +c3V7/21wd/9wcnr/am13/3N1fP9sbnX/bnF7/2ptd/9sbnX/cHN9/25xe/9qbHP/bnB3/29xdf91d33/
    +bG95/25xe/9wcnn/bG95/21vc/9ucHf/bG95/25wd/91d33/amxz/25xe/9zdn//c3V8/36Biv93eoP/
    +c3Z//3d6g/91d33/cHN9/3d6g/91d33/foCJ/2Zpcv9jZnD/bnB3/2ptdv9vcnz/amxz/3d5f/93eX//
    +c3V8/3V3ff9ucHf/ZGZs/2xvef9sb3n/cHN9/3N2f/9vcXX/cHN9/25wd/93eoP/dXiB/25xe/9ucXv/
    +bXB6/3Byef9vcXr/bnB3/2xvef9nanT/cHJ5/25weP90d37/c3V6/25weP9ucXr/c3Z//25xe/9maXP/
    +c3V8/3V3ff9nanH/bnB3/3N1fP9zdXz/bnB3/21vc/9zdXz/d3l//25xe/9zdn//bG51/3Bzff9kZmz/
    +bG51/2xvef9sbnX/c3V8/29xdf9sb3n/c3Z//25wd/9qbXf/Z2p0/3Byef9ucHf/bG51/3Bzff9zdn//
    +cHN9/2xvef9sb3n/dXd9/3V4gf9zdn//cHJ5/3V4gf9ucXv/cHN9/3Bzff9ucHf/c3Z//3d5f/91d33/
    +Z2px/3Z4fP9sbnX/bG51/3Bzff9ucHf/bW9z/25wd/9sbnX/bnF7/2xudf9wc33/cHJ5/3V3ff9nanT/
    +bG51/2dqdP9nanT/am13/2xudf93eoP/bG51/2xudf9wcnn/cHJ5/3d6g/93eX//bnB3/25wd/93eoP/
    +cHN9/3d5f/9zdn//am13/3V3ff9ucHf/c3V8/3V3ff9tb3P/cHJ5/3N1fP91d33/bG51/2xudf9ucHf/
    +dnh8/2xvef91eIH/cHN9/25wd/9zdXz/bnB3/2xvef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9zdn//
    +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//e36H/3l7gf9/gYf/bnB3/25xe/91d33/c3V8/21vc/9ucHf/
    +dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/
    +dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/
    +eXyG/36Biv91eIH/dXiB/3N1fP9wc33/dXiB/25xe/9zdn//dXd9/3Bzff9ucHf/cHJ5/3Byef9qbXf/
    +cHJ5/2ptd/91d33/bG95/36Ahv97fYP/bW9z/3Byef91d33/b3F1/3Bzff9sb3n/bG95/3V4gf95e4H/
    +d3l//3d5gv9ucXv/cHN9/25wd/9zdn//c3V8/3Bzff9sb3n/bnB3/3Z4fP9zdn//am13/25xe/9ucHf/
    +dXiB/25wd/9wc33/cHN9/3Byef9vcXX/bG51/25wd/9zdXz/dXd9/2psc/9wcnn/bnF7/2xudf91d33/
    +c3V8/25wd/9ucXv/am13/2psc/9sbnX/bW9z/3V3ff9ucHf/aWxz/3Fzef9sbnX/c3V+/25wd/93eX//
    +d3l//3Bzff93eoP/bnF7/2Zpc/9wcnn/bnB3/3Bzff9zdn//bG95/3N2f/9ucXv/dXiB/3V4gf9wc33/
    +cnV+/25weP9rbXX/bXB4/2hqcf9maXP/YGNs/2ptd/9qbXf/b3J7/25wd/9pa3P/amxz/2ptd/9wc33/
    +Zmlz/3V3ff91d33/amxz/3Byef9zdXz/cHN9/3N2f/9wc33/eXyG/3l8hv91eIH/d3qD/25xe/9zdn//
    +ZGdx/25wd/9ucXv/bW9z/3Byef9sbnX/bG51/3N1fP9qbHP/Zmlz/2dqdP9sbnX/amxz/2Rncf9ucXv/
    +am13/2xvef9nanH/YmVu/2ptd/9qbXf/Z2px/2Zpc/9nanT/amxz/2psc/9sb3n/Z2p0/25xe/9wc33/
    +cHN9/2Zpc/93eX//Z2p0/2xudf9zdn//c3Z//2ptd/9wcnn/b3F1/3Byef9vcXX/cHJ5/25wd/91d33/
    +Z2p0/2ptd/9qbHP/bG51/2xvef9sbnX/d3qD/2dqdP9sbnX/bnF7/2xvef93eX//bnF7/2xudf9nanT/
    +c3V8/2ptd/9qbXf/bG95/2Zpc/9wcnn/am13/2xvef9wc33/amxz/2ptd/9sb3n/cHN9/2ptd/9tb3P/
    +bG95/3Z4fP9ucHf/c3V8/25xe/9qbHP/bnF7/2xudf9sbnX/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/
    +am13/2xudf9zdXz/cHJ5/3Byef9wcnn/am13/3N1fP9wc33/eXyG/21vc/9ucHf/dXd9/2xvef9qbXf/
    +bG51/3V3ff93eX//bG95/3Byef9ucHf/bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX//
    +am13/3Bzff9wc33/bW9z/2ptd/9nanT/am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/
    +Z2px/2ptd/9zdXz/bG95/2xvef9qbHP/bG51/25xe/9nanT/dnh8/3N1fP9wc33/bnF7/3N2f/9zdn//
    +am13/3Bzff9zdXz/e32D/3V4gf+Fh43/f4KM/3N2f/93eoP/foCG/3N1fP95fIb/dnh8/3l7gf9+gIb/
    +e36H/36Ahv95fIb/c3Z//3N2f/9sb3n/dXiB/2xvef9ucXv/bG95/3Byef91eIH/eXuB/2ptd/9ucXv/
    +bnB3/3Bzff9wcnn/c3Z//3V4gf9sb3n/bG95/2xudf9sbnX/cHJ5/3V3ff9nanH/bnF7/3Bzff9ucXv/
    +d3qD/3N2f/9ucXv/dXiB/3Byef9qbXf/b3F4/25wd/92eHz/cXR9/25wd/9vcnv/bG95/3N2f/9wcnn/
    +d3qD/3d6g/9zdn//dXiB/3Bzff9nanT/bnB3/25xe/9zdn//cHN9/25wd/9zdn//cHJ5/3h5ff91d33/
    +bG51/2xvef9tb3f/bnB4/29xev9rbnj/bnB3/2psc/9ucHf/b3F5/3J0ev9ucHb/Zmhv/2ptdP9sb3n/
    +cHJ5/2dqcf93eX//c3V8/2dqcf9qbXf/cHJ5/25xe/9ucXv/cHN9/3t9g/95fIb/c3Z//3d6g/9zdn//
    +d3qD/2ptd/9zdXz/dXiB/3Bzff95fIb/dXd9/3V4gf9+gIb/cHN9/25xe/9qbXf/cHJ5/25wd/9sbnX/
    +c3Z//3Bzff9wc33/bW9z/2ptd/9ucXv/bG95/2psc/9nanH/Z2px/2psc/9sbnX/bG95/2xudf9zdXz/
    +dXd9/3N1fP9qbXf/dXiB/2dqdP9wcnn/c3V8/3N1fP9sbnX/am13/2xudf9sb3n/am13/2xvef9sb3n/
    +dXd9/2ptd/9qbXf/Z2p0/2xudf9wcnn/b3F1/31+gf9vcXX/bW9z/3N2f/9wc33/dXiB/3N1fP9ucHf/
    +cHN9/3d6g/9zdn//c3Z//3N2f/9sb3n/eXuB/25wd/9zdn//dXd9/25wd/9ucXv/dXiB/3l7gf9sb3n/
    +bnB3/3N1fP9wcnn/Z2p0/2xvef9sb3n/bG51/25xe/9qbXf/bG95/2BjbP9sb3n/cHN9/2xvef9tb3P/
    +bnB3/2xvef9qbXf/cHN9/25xe/9ucXv/bG95/25xe/91d33/c3V8/3t9g/9qbXf/bG95/3Z4fP9ucHf/
    +bnB3/2psc/92eHz/dXd9/25xe/9ucXv/bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/
    +d3qD/2xvef9wc33/cHN9/25wd/9ucXv/bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/
    +amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/amxz/2ptd/9qbXf/Z2p0/3Bzff9ucHf/cHJ5/21vc/9ucHf/
    +bnB3/2Zpc/9nanT/Z2p0/3V3ff9ucHf/fX6B/3d5f/9sbnX/bG95/3h5ff9ucHf/cHN9/2xvef9ucHf/
    +dnh8/3V3ff91d33/dXd9/29xdf9ucHf/bG51/3Byef9sbnX/bG95/2ptd/9sbnX/cHN9/3V3ff9maXP/
    +bG95/2xudf9qbXf/amxz/2ptd/9sb3n/Zmhu/2psc/9maXP/amx0/2ptd/9sb3n/YmVu/2xvef9tcHn/
    +bW92/3V3ff9xdH3/bXB6/3V3ff9vcXj/bXB5/3Fzev9ydHr/dXh//3J0fP9vcXn/b3J7/29xdv9wcnn/
    +bW9z/3V3ff93eX//bnB3/3Byef9wcnn/ZGdx/2ptd/9maXP/bG95/25xe/9qbXf/c3V8/2xudf91d33/
    +c3V8/25wd/9zdXz/bXB6/21wev9ucXn/bG95/2xvef9sbnX/bnB3/25xe/92eH3/c3V8/2ptdf9vcXb/
    +c3V8/3N2f/9maXP/e36H/3N2f/9sb3n/bG95/25xe/9zdn//cHN9/3N2f/93eX//eXuB/3Bzff93eoP/
    +cHN9/3d6g/9nanT/bnB3/3N2f/9wcnn/c3Z//25wd/9ucXv/d3l//25wd/9sbnX/Z2p0/3Byef9ucHf/
    +am13/3V4gf91eIH/c3Z//25wd/9sb3n/c3V8/3N2f/9ucHf/bnB3/25xe/9ucHf/bnB3/3V4gf9wc33/
    +c3Z//3V3ff91d33/bnB3/3l7gf9nanT/bnF7/3Bzff9zdXz/bG51/2xudf9sbnX/bnB3/2xudf9sbnX/
    +bG95/3Z4fP9qbXf/bG95/2xvef9wcnn/d3qD/3N1fP9+gIb/c3V8/3N1fP93eoP/dXiB/3t+h/93eoP/
    +c3Z//3N2f/9+gYr/eXyG/3N2f/91eIH/bG95/3V4gf9ucHf/dXd9/3V3ff9wcnn/bG95/3N1fP9wc33/
    +Zmlz/2dqcf9qbXf/eHl9/2xvef9wc33/c3Z//25xe/9zdn//cHN9/3V4gf9sb3n/dXiB/3t9g/91eIH/
    +dXd9/3l7gf95e4H/d3l//35/g/95e4H/d3qD/3d6g/95e4H/eXyG/3d6g/+DhYz/dXiB/3d6g/97fYP/
    +d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/
    +bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/
    +ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/dXd9/2xudf9ucHf/bG95/2xudf9zdXz/bnF7/3Byef9sbnX/
    +bG51/21vc/9sbnX/cHJ5/2dqcf94eX3/bG95/3t9g/91d33/am13/25xe/91d33/am13/2ptd/9sbnX/
    +bW9z/3V3ff94eX3/dXd9/29yfP9ucHf/bnB3/2ptd/9ydHz/b3F1/3V3ff9ucHf/bnB3/3V3ff9zdXz/
    +Z2px/3Byef9ucXv/dXiB/3Byef9zdn//dXiB/3Byef9sb3n/a254/3Byd/9vcXn/cHJ5/2ttc/9tb3j/
    +bnF7/25xev91d37/cHN8/25weP90dn//cXN5/29yev9ydH3/bnB3/3V3fv9ydX7/b3J8/3F0fv9zdn//
    +dXiB/25xe/93eX//d3l//25xe/9zdXz/bW9z/2dqcf9ucHf/bG51/3V3ff9ucHf/am13/3N1fP9sbnX/
    +cHN9/3N1fP9qbXf/cHJ5/2xudf9rbnf/amx0/2ttc/9kZ3H/Zmlz/2psc/9qbXf/bnF6/3F0fP9rbnf/
    +bXB4/3R2fP9wc33/YGNs/3d6g/9ucXv/Zmlz/2psc/9qbHP/Z2p0/2dqdP9nanT/c3V8/25wd/9sb3n/
    +cHJ5/2dqcf9wc33/Zmlz/2xudf9qbXf/amxz/2ptd/9qbXf/bG95/3N1fP9sbnX/bG51/2Zpc/9qbXf/
    +bG51/2psc/91d33/cHN9/25xe/9qbXf/am13/3Bzff9zdXz/amxz/2psc/9nanH/Z2px/2Zpc/9ucXv/
    +am13/3Bzff9zdXz/cHJ5/2psc/91d33/bnB3/25xe/91d33/dXd9/2xvef9sb3n/bG95/25xe/9qbXf/
    +cHN9/3N2f/95e4H/bG95/3N2f/9wcnn/cHJ5/3d6g/9wc33/foCG/25wd/9vcXX/c3V8/2xudf92eHz/
    +cHJ5/29xdf9sbnX/dXd9/25wd/9wcnn/bG95/2Zpc/9zdXz/bW9z/3Z4fP91d33/bW9z/25wd/91d33/
    +dXd9/2xudf9ucHf/cHJ5/25wd/9qbHP/bG95/25xe/9sbnX/bnF7/2dqcf9nanT/YGNs/2xudf9sb3n/
    +amxz/2psc/9qbXf/amxz/2psc/9sb3n/am13/2xvef9qbHP/cHN9/3N1fP9sb3n/eXuB/2dqcf9nanT/
    +am13/2dqdP9maG7/Zmlz/3Byef9zdXz/bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/
    +bG51/21vc/91d33/am13/2xvef9zdXz/bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/
    +Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/bnB3/3V3ff9sbnX/bG51/25wd/9qbXf/c3V8/25wd/9ucXv/
    +am13/2xvef9sb3n/am13/25xe/9qbXf/dXiB/3N2f/9/gYf/eXyG/3Bzff91eIH/d3l//25wd/9zdXz/
    +bnB3/29xdf9zdXz/dnh8/3V3ff9wcnr/b3F4/3J0ev9tb3f/cXN6/2ttdP9ucXv/bG51/25wd/94eX3/
    +cHJ5/2dqcf9zdXz/c3V8/3N1fP9ucHf/bnB3/3Z4fP9vcXb/bXB6/2xvef9wc3z/cXN7/3Fze/9xdHv/
    +cHJ5/3R2fv92eH7/dHeB/3R3f/9xdHz/eXuA/3d5f/9ydX3/eXyF/3BzfP93eYD/dHd//3Bzff90dn3/
    +cHJ5/25xe/9tcHn/dnh8/3V3gP9ucXr/bnF6/2xvef9rbnj/aWx2/2tueP90dnz/b3F4/25wdP90dnv/
    +bW93/3J0fP9zdXz/bW92/3J0fP9qbXf/bG51/25wdf9ucHb/bG51/2psc/9sbnX/am13/2ptd/9ydHr/
    +Z2pz/2ptd/9xc3n/bG95/2Jlbv99foH/c3V8/2xudf9tb3P/bG51/25wd/9ucHf/bnB3/3V3ff91d33/
    +cHN9/3Byef9maG7/bG95/2Rncf9iZW7/Z2p0/2xudf9qbXf/Z2p0/2xudf9ucXv/amxz/2dqdP9nanT/
    +am13/2dqcf9nanH/cHJ5/25xe/9sb3n/am13/2xudf9ucXv/c3V8/2xvef9qbXf/bnB3/29xdf9ucHf/
    +c3V8/3Byef91d33/bG95/2xvef9nanT/dXd9/29xdf9wcnn/dXd9/3Bzff9qbXf/bG51/2xudf9sb3n/
    +Zmlz/2ptd/9qbXf/cHJ5/2Rncf9qbHP/Z2p0/2ptd/9sb3n/bG95/3d6g/9nanH/Z2px/25xe/9qbHP/
    +d3l//2xvef9qbHP/bG51/3N1fP9sb3n/bG95/25xe/9maXP/bG95/2dqcf9ucXv/bG95/2dqcf9nanT/
    +bnF7/25xe/9maXP/bG51/2ptd/95e4H/cHJ5/3V4gf93eoP/cHJ5/3l7gf9wc33/bnF7/2dqdP9sb3n/
    +c3V8/3Byef9ucHf/c3Z//25xe/9ucXv/cHN9/25xe/9ucXv/bG95/3h5ff94eX3/cHJ5/4CChv9sbnX/
    +bG51/3N1fP9wcnn/bnB3/2xvef91d33/dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/
    +bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/
    +cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/cHN9/2dqdP9sb3n/Z2p0/2xudf9qbHP/Z2p0/25xe/9qbXf/
    +bnF7/2dqcf9qbXf/am13/2Zpc/9qbHP/ZGdx/2xvef9qbXf/c3Z//3N1fP9qbXf/am13/3N1fP9qbXf/
    +bnF7/2ptd/9sbnX/bnF7/3Bzff9ucXv/am11/2xudf9xc3j/a211/3Fzev9tb3T/cHN9/2Zpc/9ucHf/
    +dnh8/3Byef9rbXT/dHZ7/3Bzff90d4D/cHN9/2xvef9zdn//bnB3/25wd/9tcHr/cnV8/29xef9wcnr/
    +cnR6/21vdv9wc3v/c3V7/3V3ff9wc33/bXB6/3N2fv90dnr/bnB1/3V3ff9tb3b/cXN6/3Byef9vcXn/
    +cHJ5/3Byef9xc33/cHN8/3d5f/93eoL/cnV+/3BzfP9ucXr/bXB5/2tueP9tcHn/dnh+/3J0ff9vcnn/
    +dHZ+/21wef9vcXr/b3J8/21vdv9ydX7/bG95/25wd/9tcHn/bW92/2dqdP9nanT/bnB3/25wd/9ucXv/
    +dXd9/2ptdv9rbnf/bnF5/2xvef9iZW7/d3qD/2ptd/9qbXf/am13/2ptd/9qbXf/bG95/2ptd/9wcnn/
    +bG95/2xvef9ucHf/Zmhu/2xvef9iZW7/ZGdx/2psc/9nanH/Zmlz/2Rncf9qbHP/bG95/2psc/9qbHP/
    +Zmlz/2ptd/9qbHP/amxz/3Byef9qbHP/Z2p0/2psc/9iZW7/bG95/3Bzff9qbHP/amxz/2ptd/9sbnX/
    +amxz/25xe/9ucHf/dXd9/29xdf9wcnn/Zmlz/3V3ff9sbnX/bnB3/3N1fP91d33/bnB3/3Byef9vcXX/
    +bnB3/2psc/9sb3n/bnB3/3V4gf9qbHP/bG51/29xdf9sb3n/cHJ5/3Byef+Agob/bG51/2xudf9zdXz/
    +bW9z/3Z4fP9zdXz/bnB3/25wd/94eX3/dXd9/3Byef9zdXz/bnB3/3V3ff9ucHf/dXd9/3Z4fP9vcXX/
    +bG95/3V4gf93eoP/bnF7/2xvef91eIH/eXyG/25xe/93eoP/d3qD/3N1fP97fof/dXiB/3V4gf9ucXv/
    +c3Z//3d6g/9zdn//cHN9/3N2f/9ucXv/bnF7/25xe/9sb3n/cHN9/25wd/94eX3/eHl9/3V3ff9/gYf/
    +bG95/2xvef9wc33/bnF7/25wd/9sbnX/bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/
    +bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/
    +cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/cHJ5/3V3ff9sb3n/bG95/2dqdP9qbHP/Zmhu/2Rncf9nanT/
    +amxz/2Zpc/9cX2j/ZGZs/2Zobv9gY2z/amxz/2BjbP9nanT/am13/3V3ff9zdXz/am13/2xudf9sb3n/
    +bG51/2xvef9sbnX/am13/3N1fP9zdXz/c3V8/3Byef94eoD/eHuC/3N1fP93eX7/cnR5/3R2ff9sbnX/
    +dXd9/3d6g/9zdXz/bnB2/3N1ff91d33/dXd9/3N1fP9sbnX/cHJ5/21wev9wc33/b3J7/3R3fv9ucXr/
    +b3J3/3N1ef9rbnf/bnF7/3J0fP9ydX7/bnF6/2tueP9wc3z/b3F6/2lsdP9wcnn/aWx2/21veP9rbnj/
    +bG95/21veP9pa3T/amxz/25wdv9ucHf/b3F2/2hqc/9tb3b/bG92/29xef9nanT/bnB3/3J1ff9vcXr/
    +b3F4/3J0fP9ydHv/c3V7/3N1fP9tb3T/dHZ8/2ttdv9tb3X/a253/2xudf9laHL/ZGdx/2xudf9qbXf/
    +bG95/3V3ff9qbHP/a213/2xudP9ucXv/ZGdx/3t9g/9ucXv/Z2p0/2xudf9qbHP/bnF7/2ptd/9ucXv/
    +d3l//3N1fP91d33/dnh8/2xudf9wcnn/Zmlz/2dqdP9sbnX/bnB3/3Byef9vcXX/cHJ5/3Z4fP9vcXX/
    +bnB3/2xudf9ucHf/am13/2ptd/9zdXz/bG51/2ptd/9qbXf/Z2p0/3Byef94eX3/b3F1/2xudf9sbnX/
    +bW9z/2xudf9wcnn/bnF7/3V3ff9sb3n/cHJ5/2psc/93eX//bW9z/25wd/9wcnn/dXd9/25wd/9wc33/
    +bnF7/25xe/9qbXf/c3V8/3N2f/95fIb/bG95/3Bzff9zdXz/bnF7/3N2f/9zdn//gYSN/3N1fP9ucHf/
    +c3Z//25wd/91eIH/cHN9/25xe/9ucHf/d3l//3d6g/93eoP/eXuB/3Byef9zdn//c3V8/3l7gf95e4H/
    +c3Z//3Bzff95e4H/eXuB/25wd/9ucXv/d3l//3t+h/9zdXz/e32D/3N2f/9sb3n/dnh8/25wd/9zdXz/
    +Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/bG51/2xudf9qbXf/bG51/3Byef9ucHf/dXd9/3V3ff9zdXz/
    +f4GH/29xdf9zdXz/cHJ5/25wd/9vcXX/bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/
    +c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/
    +dXiB/3d6g/9zdn//dXiB/25xe/9wc33/dXiB/3V4gf9zdn//bG95/3N1fP9ucHf/bnF7/2xvef9ucHf/
    +cHJ5/2xudf9wcnn/Z2px/25wd/9tb3P/Z2p0/25wd/9nanT/cHN9/3N2f/91eIH/d3l//25xe/9sb3n/
    +c3Z//25xe/91d33/bG51/29xdf91d33/dXd9/3N1fP9oa3T/cXR8/3N1ev9tcHn/b3J8/29xd/9zdXz/
    +am13/3V3ff91d33/cHJ5/2xudv9ydHv/cXN6/3J0e/9wcnn/am13/25xe/9rbXP/bW92/21veP9vcnr/
    +bXB6/21weP9ucHX/bG93/3Fze/9zdn7/dnmA/3N2f/9xdH7/d3l//3FzfP9tb3b/c3V6/25wef9xc3j/
    +b3J3/25xef9zdn3/bG94/29xef91d3z/cXN4/3Bydv9qbXb/bXB6/21vd/9ydHv/Z2p0/2ttdP9ucHb/
    +bG51/2hrc/9qbXb/a253/3J1ff9wc33/a210/3R2ff9nanT/aGty/2psc/9sbnX/ZGdx/2Zpc/9sbnX/
    +Z2p0/2xvef9wc33/Zmlz/2xvef9qbXf/bnF7/2Jlbv93eoP/bnF7/2Zpc/9nanH/amxz/3Bzff9sbnX/
    +bnF7/3V3ff9ucXv/bG95/3Byef9qbHP/am13/2Zpc/9kZ3H/Z2px/2dqcf9qbHP/bG51/2dqdP9ucXv/
    +Z2px/2dqcf9maXP/Z2p0/2psc/9nanT/c3V8/2dqdP9qbXf/am13/2Zpc/9qbHP/am13/2dqcf9nanT/
    +Z2p0/2Zobv9maXP/Z2p0/2ptd/9wc33/am13/2xudf9iZW7/c3V8/2Zpc/9ucXv/bnF7/3Bzff9sbnX/
    +cHJ5/2xvef9qbXf/am13/2xudf9sbnX/d3l//2dqdP9sbnX/bG51/2dqdP9qbXf/am13/3t9g/9kZ3H/
    +Zmlz/3Byef9qbHP/c3Z//2xvef9ucHf/bG51/3Z4fP9zdXz/dXd9/3V3ff9vcXX/cHJ5/2xvef9zdn//
    +c3Z//2xvef9qbXf/dXiB/3d5f/9ucHf/cHJ5/3l7gf91eIH/amxz/2xvef9sb3n/amxz/3Bzff9qbHP/
    +bG95/2BjbP9sbnX/cHJ5/2xudf9ucHf/cHJ5/2ptd/9qbHP/am13/2ptd/9ucHf/bnB3/3N1fP9wc33/
    +cHN9/4GDiv9ucHf/c3Z//25xe/9vcXX/b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/
    +d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/
    +bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/amxz/2ptd/9sb3n/bnF7/25wd/91d33/bnB3/25xe/9wc33/
    +bnB3/3Bzff9zdn//d3qD/2xvef95fIb/dXd9/25xe/9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/97fYP/
    +dXiB/3l8hv93eoP/eXyG/3N2f/9wcnn/dXiB/3l7gf9wc33/bnB3/3R2fv93eYH/c3V+/3R2fv9vcnn/
    +cHN9/2ptd/91eIH/d3qD/3V4gf9wcnn/b3J8/29yfP9wcnn/cHJ5/21vc/9zdXz/b3F1/2xvef9tb3n/
    +cHN7/3J0ff9wc3z/Z2p0/29xef9zdn//bnF7/3d4ff9zdn//cHJ5/3Z4fv9xc3f/am10/2xvef9ucHf/
    +a254/21wev9wcnb/dXd9/25xev9vcnz/dnh//3Fzev9zdX3/Z2p0/25xe/9sb3n/dnh+/2hrdP9ucHf/
    +bXB5/25xe/9sb3n/cHN9/3N2f/94e4X/c3Z//29xdf91d33/c3V8/2xudf9qbXf/bG95/2Zpc/9maXP/
    +bG51/25wd/9wcnn/dXd9/2psc/9ucHf/bG95/3V3ff9maXP/f4GH/3V4gf9wcnn/cHN9/3Bzff93eX//
    +c3Z//3V4gf97fof/eXuB/3t9g/97fYP/d3qD/3l8hv9zdn//cHN9/3N1fP9zdXz/bnF7/25xe/9ucXv/
    +dnh8/25wd/9wcnn/bG95/3N1fP9sbnX/Z2p0/3N1fP9kZ3H/Z2p0/2psc/9kZ3H/am13/2xvef9sbnX/
    +bnF7/3Bzff9sbnX/Z2p0/2ptd/9ucXv/c3V8/25wd/9qbXf/ZGdx/3N1fP9nanT/bG95/25xe/9wc33/
    +bG95/25xe/9qbXf/bnF7/2ptd/9ucHf/b3F1/3d5f/9maG7/b3F1/2xudf9nanT/bnB3/2xvef9/gYf/
    +bG95/25xe/93eoP/cHJ5/3t+h/9wc33/cHN9/25wd/91eIH/dXd9/3N2f/9wc33/cHJ5/3V4gf9zdn//
    +d3l//3V3ff9vcXX/bG51/3V3ff9zdXz/bG51/2psc/9wc33/foGK/3N1fP93eoP/c3Z//25wd/91d33/
    +bnB3/25wd/9kZ3H/bnB3/3N2f/9sb3n/bnB3/3Byef9ucHf/bG95/25wd/9sb3n/bnB3/25wd/9sb3n/
    +cHN9/2xvef9/gYf/cHJ5/3Byef9ucHf/bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/
    +c3Z//3+Bh/9zdn//d3qD/31+gf9zdn//c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX//
    +c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/am13/25wd/9wcnn/bG51/25xe/9qbXf/bnF7/2xudf9qbXf/
    +amxz/2Zpc/9sb3n/am13/25xe/9maXP/bG95/2xudf9iZW7/bG51/2dqdP9sb3n/cHJ5/3d5f/93eX//
    +am13/2ptd/9qbXf/am13/25xe/9sbnX/Z2p0/25xe/9wc33/cHN9/25vdf9qbHX/bG51/2ptdv9rbnj/
    +Z2pz/2dqdP9kZ3H/am13/3N1fP9sb3n/Zmlz/2psc/9maXP/am13/2Zpc/9qbHP/am13/2psc/9sbnX/
    +Z2p0/21vdv9tcHr/bG95/15ha/9nanH/a210/2ttdP9wcnn/dHZ9/2ptd/9sb3n/aGty/2dqdP9oa3T/
    +amxz/2ptd/9wcnn/bW9z/3Z4fP9qbXf/bnB3/3Z4fP9sbnX/am13/2Rncf9qbXf/am13/3d5f/9nanH/
    +bG51/2xudf9ucHf/bG95/25wd/9ucHf/dXiB/25xe/9sbnX/dXd9/25xe/9tb3P/cHJ5/25wd/9nanH/
    +amxz/29xdf9ucHf/cHJ5/3N1fP9qbXf/am13/2ptd/9sb3n/YmVu/36Ahv9sb3n/Z2p0/2dqdP9qbXf/
    +cHN9/2ptd/9sb3n/dXd9/3V3ff9wcnn/c3V8/3Byef9ucXv/bG95/2ptd/9ucHf/bG95/25xe/9sb3n/
    +bG95/3V3ff9ucHf/bG95/25wd/93eX//bnB3/25wd/97fYP/amxz/25wd/9ucHf/bG51/25wd/9sb3n/
    +bW9z/2xvef9ucXv/Z2p0/2Jlbv9nanH/am13/3Bzff9qbXf/am13/2Rncf9wc33/amxz/2xudf9ucHf/
    +c3V8/2xvef9ucXv/am13/3Bzff9nanT/bG51/21vc/92eHz/Zmhu/2xudf9tb3P/bG51/29xdf9zdXz/
    +f4KM/25xe/9nanT/d3qD/2xvef93eX//cHJ5/2xvef9ucHf/dXiB/3h5ff9zdn//c3Z//3Byef9zdn//
    +dXiB/3t9g/95fIb/cHJ5/3Bzff97fYP/fn+D/3Z4fP9wc33/e32D/3t+h/9wc33/dXiB/3Bzff9ucXv/
    +dXiB/25wd/9wc33/Z2p0/25wd/9wc33/bnB3/2xvef9sb3n/bnB3/2ptd/9qbXf/bnF7/25wd/9sbnX/
    +bG51/3N1fP9wcnn/f4GH/3Byef9wcnn/bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/
    +Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/
    +c3V8/25xe/9zdXz/bG51/2xvef9sbnX/cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/
    +bnB3/2ptd/9qbXf/c3V8/25xe/9ucXv/am13/2xvef9ucHf/ZGZs/25wd/9sbnX/cHJ5/3V3ff97fYP/
    +eHl9/25wd/9ucHf/bnB3/3Byef9wc33/bW9z/2psc/9zdXz/dXd9/3N1fP9ydHr/Zmlz/2ptd/9oa3X/
    +b3J8/2xvef9ucHf/bnB3/3V3ff93eX//dXd9/25wd/9ucHf/bnF7/3N2f/9ucXv/bnF7/3N2f/9ucHf/
    +bG95/2xvef9vcXX/dXd9/3Byef9kZmz/bW9z/25wd/9ucXv/d3l//3d6g/9wc33/dXiB/3N1fP9wcnn/
    +bG95/3Byef9sbnX/cHJ5/25wd/9zdn//bnB3/25xe/95e4H/bG95/25wd/9qbXf/b3F1/29xdf94eX3/
    +bnB3/25wd/9ucHf/b3F1/3Byef9sb3n/cHJ5/3d5f/9zdXz/bG51/3N1fP9ucXv/bG51/3N1fP9sbnX/
    +Z2p0/2dqdP9sb3n/bnB3/25xe/9wc33/amxz/29xdf9wcnn/c3V8/2Jlbv9/gYf/bnB3/21vc/9sbnX/
    +bG95/3d5f/9wc33/dXiB/3l7gf93eX//c3Z//3V4gf9ucXv/bnF7/25wd/9maXP/bnB3/25xe/9ucXv/
    +cHJ5/2xvef91d33/b3F1/2xudf9ucHf/dnh8/25wd/9sbnX/dXiB/2psc/9sb3n/bG51/2dqdP9qbXf/
    +am13/2psc/9sb3n/bnF7/2ptd/9qbXf/bnF7/25xe/91d33/am13/2ptd/9kZ3H/c3V8/2ptd/9qbHP/
    +am13/25xe/9qbXf/am13/2psc/9sb3n/ZGdx/2xudf9nanT/cHN9/2Rncf9nanT/bG51/2dqdP9qbXf/
    +bnF7/36Ahv9qbXf/Z2p0/3N2f/9sbnX/dXd9/2xvef9qbXf/bW9z/3d5f/93eX//dXd9/3Byef9ucHf/
    +cHN9/3N2f/93eX//dXd9/2xvef9qbXf/dXd9/3V3ff9sb3n/b3F1/3Z4fP93eX//bnB3/3N2f/9ucXv/
    +bnB3/3Bzff9sb3n/bnF7/2Zpc/9sb3n/cHN9/25wd/9wc33/bnB3/2xudf9ucHf/bnB3/3V3ff9wcnn/
    +bW9z/25wd/9zdXz/c3V8/3+Bh/91d33/cHJ5/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/
    +bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/
    +Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/95e4H/
    +c3V8/3Bzff9wc33/Z2p0/3Bzff9zdXz/cHJ5/2xudf9wcnn/am13/2Jlbv9qbXf/Z2p0/2xvef9wc33/
    +c3Z//3N1fP9sbnX/bG95/21vc/9ucXv/bnF7/2dqdP9kZ3H/bnF7/3Bzff9ucXv/cnR7/2Rncf9qbHP/
    +am13/3Bzff9sb3n/bnB3/2psc/9zdXz/dXd9/3N1fP9qbXf/bG51/25wd/92eHz/cHJ5/3Byef9zdXz/
    +b3F1/25wd/9nanT/bW9z/25wd/9sb3n/ZGdx/2ptd/9qbXf/am13/25xe/93eX//cHJ5/3N1fP9wcnn/
    +bW9z/21vc/9ucHf/bG51/2Zpc/9nanH/bG95/2dqcf9maXP/bnF7/2psc/9maXP/am13/2xudf9sbnX/
    +c3V8/2psc/9nanT/a253/2xudf9wc33/a254/3Byef91eID/bG95/2xvef91d33/cHJ5/2ptd/9ucXv/
    +bG95/2hrdf9qbXf/bG51/2xudf9qbXf/Z2p0/2Rncf9nanH/a254/2xvef9gY2z/gIKG/2xudf9tb3P/
    +bG51/29xdf91d33/cHJ5/3V3ff91d33/c3Z//3Bzff91d33/cHN9/3Bzff9wcnn/am13/25wd/9zdn//
    +cHN9/3V4gf93eoP/d3l//2ptd/9ucHf/bnB3/3Z4fP9qbHP/bW9z/3Z4fP9sbnX/bnB3/3Byef9qbHP/
    +bnB3/2ptd/9sbnX/bnB3/3N1fP9ucHf/bG51/3N1fP9wcnn/dnh8/3Byef9ucHf/bG51/3N1fP9ucHf/
    +bnB3/25xe/9zdn//c3Z//3Bzff9wc33/d3qD/25xe/91eIH/cHN9/3l8hv9zdXz/dXd9/3l7gf92eHz/
    +eXuB/3t9g/+FiJH/d3qD/3Bzff9/gYf/dXiB/3t+h/91eIH/d3qD/3V4gf9+gYr/e32D/3d6g/9zdn//
    +c3V8/3N2f/9zdn//dnh8/3V4gf9sb3n/bG95/3Z4fP91d33/bG51/21vc/9wcnn/d3l//25xe/91d33/
    +cHJ5/25wd/9ucXv/bnB3/3Byef9nanH/cHN9/3V4gf9wcnn/bnF7/25xe/9ucHf/cHJ5/25xe/91eIH/
    +cHN9/3Byef9ucXv/c3Z//3N2f/9+gIb/dnh8/3Bzff9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/
    +eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/
    +dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/
    +c3V8/2Zobv9sb3n/bG51/2Zpc/9qbXf/am13/2ptd/9nanT/am13/2xvef9kZ3H/bG95/2dqdP9ucXv/
    +bnF7/3V3ff94eX3/bG95/3N2f/9sb3n/cHN9/3Bzff9ucHf/Z2p0/3V3ff91d33/dXd9/3h5ff9sbnX/
    +bnB3/2xvef91d33/c3Z//2xvef9qbXf/c3Z//3l7gf91eIH/bnB3/3Byef9wc33/d3l//3Byef9wcnn/
    +cHJ5/21vc/9sbnX/amxz/2xudf9sbnX/bG51/2Zobv9wcnn/bG51/25xe/9ucXv/c3V8/3J0e/9sb3n/
    +bnB3/2xudf9ucHT/bG51/2Zpc/9vcXj/bG51/21vdv9tb3b/bW93/3R2ff9rbnf/aGt1/2dqdP9sbnX/
    +am13/3Fzev9qbHP/a253/2xveP9qbHP/bG95/2xveP9wcnj/dHZ7/21vdf9ydXz/dXd9/3J0ff9sb3n/
    +b3J8/3N1fP9vcXj/b3F4/21vc/9qbXf/bG95/3Byef9ucHf/b3F1/29xeP9zdXz/Z2px/4GDiv9sb3n/
    +bnF7/3Byef9wcnn/dXiB/3N2f/93eoP/e32D/3V4gf9wc33/c3Z//3V3ff9ucHf/b3F1/2psc/9ucHf/
    +bnF7/25wd/9zdn//c3V8/3Z4fP9qbHP/bG51/21vc/92eHz/bG51/29xdf92eHz/amxz/2xudf9wc33/
    +Zmlz/3Byef9qbXf/bnB3/25wd/92eHz/b3F1/25wd/9zdXz/c3V8/3V3ff9wc33/am13/2dqcf9wcnn/
    +bW9z/29xdf9sbnX/cHJ5/2xvef9wcnn/bG51/2xvef9maXP/cHJ5/25wd/94eX3/Zmhu/2xudf9sb3n/
    +Z2p0/2ptd/9sb3n/foCG/25xe/9sbnX/eXuB/2xvef93eX//bG51/25wd/9tb3P/dXd9/3N1fP91d33/
    +bG51/2psc/9zdXz/c3V8/3N1fP9sb3n/amxz/2ptd/92eHz/c3V8/29xdf9ucHf/cHN9/3d6g/9ucXv/
    +d3l//3Bzff9zdXz/cHN9/3Byef9wc33/am13/3Bzff95e4H/dXd9/3V4gf9wc33/cHN9/3V3ff91eIH/
    +eXuB/3N1fP9zdXz/cHN9/3d6g/95e4H/g4WM/3l8hv91eIH/d3qD/3Bzff9zdn//c3V8/3N2f/91eIH/
    +bnB3/3d5f/9sb3n/bnB3/25wd/93eX//bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/
    +dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/
    +bnF7/3V4gf9ucHf/c3Z//3Bzff9qbXf/c3V8/3Bzff91eIH/bG95/2xvef9zdn//bG95/2xvef9qbXf/
    +cHN9/3Byef91eIH/d3l//2xvef9zdn//bnB3/3N2f/9wc33/cHJ5/2ptd/9zdXz/cHJ5/3V3ff92eHz/
    +Z2p0/2ptd/9qbXf/cHN9/2ptd/9sbnX/amxz/3Byef91d33/c3V8/2dqdP9tb3P/bnF7/3V4gf9wc33/
    +cHN9/3d6g/9zdXz/bnF7/25xe/9xc3r/dXiA/3N1fP9tcHr/c3Z//3Z4fv94e4T/enyC/31/hv94eoD/
    +dHeA/3Bzff9ucXv/cHN6/29xef9tcHn/cnR7/25wd/9vcXX/aWx1/2ttdv9wcnn/b3F3/21vdv9sbnb/
    +bW92/21wdv9xc3n/bG50/21vdP9wcnj/bW91/25xef9xdHz/cXR9/3Fzev9vcXj/b3F4/3Z4gP9wc3v/
    +bG95/29yfP9ydHz/cXN7/21wev9ucHf/bnF7/3Byef9wc33/bnB3/25wd/9xc3r/cHJ5/2Zobv+Agob/
    +bG51/2xudf9sbnX/bG51/3N1fP9wcnn/eHl9/3V3ff91d33/c3V8/3Bzff9zdXz/amxz/2psc/9nanT/
    +Z2px/2xudf9sbnX/cHN9/2xudf9wc33/Z2p0/2psc/9sbnX/dXd9/2ptd/9qbHP/c3V8/2ptd/9qbXf/
    +cHN9/2dqdP9ucXv/bnB3/3N1fP9ucHf/dXd9/25wd/9sb3n/c3Z//3N2f/93eX//dXiB/25xe/9sb3n/
    +c3Z//25wd/9wcnn/c3V8/3N2f/9ucXv/c3Z//2xvef9zdXz/Z2px/3Byef9sbnX/cHN9/2Rncf9qbHP/
    +bnF7/2dqcf9qbXf/am13/3V4gf9maXP/ZGdx/3N1fP9nanT/cHJ5/2psc/9nanT/Z2px/3V3ff9zdXz/
    +bnF7/2ptd/9qbXf/cHN9/3N1fP9zdXz/c3V8/25wd/9ucHf/d3qD/3N2f/9ucHf/bG95/3Bzff95e4H/
    +bG95/3V3ff9sb3n/bnB3/25xe/9sb3n/bnB3/2dqcf9vcXX/c3V8/2ptd/9ucHf/bG51/2ptd/9nanT/
    +bG51/3N1fP9sbnX/bW9z/2xudf9zdXz/dXd9/31+gf9zdXz/bG95/2xvef9sbnX/bG51/2ptd/9ucHf/
    +c3V8/2xvef91d33/bnB3/3Byef9sb3n/dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/
    +bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/
    +c3V8/25wd/91d33/am13/3Bzff9sbnX/amxz/25wd/9sb3n/bnF7/2ptd/9qbXf/dXd9/2xudf9sbnX/
    +Zmlz/2xvef9sb3n/dXd9/3N1fP9qbXf/bnF7/21vc/9zdXz/cHJ5/25xe/9sb3n/c3Z//3Bzff93eX//
    +eHqA/2hrdf9ucHf/a254/3N2f/9ucHf/bnB3/25wd/9wcnn/eXuB/3V3ff9sbnX/bG51/21vdv91d3z/
    +am13/2psc/9ucXv/amxz/2dqcf9nanT/Z2pz/2dqc/9maHL/YmRt/2Zobv9pbHb/bG53/25wef9wcnr/
    +cHJ5/2tueP9tb3f/bG51/3Fzev9sb3f/bG95/21wev9vcnr/bG53/2xudf9rbnX/b3J6/25wef9ucXn/
    +am13/2tueP9ydHv/cHJ6/25wd/9ucXn/dHZ9/29xdv9wcnr/dHZ9/3BzeP9ucHf/bnB4/29xef93eYD/
    +bnF2/25wd/9xc3v/cXN4/3N1e/9xc3r/cXN6/3N2f/9wc33/d3qD/3Byef9wcnn/cXR9/3Bzff9nanT/
    +f4KM/3Bzff9ucHf/b3F1/21vc/9zdXz/bnB3/3V3ff93eX//cHN9/25xe/9wc33/dXd9/29xdf9ucHf/
    +bnB3/25wd/9vcXX/cHN9/3N2f/9ucXv/dXiB/2xvef9ucXv/bnF7/3l7gf91d33/d3l//35/g/94eX3/
    +eXuB/36Ahv96e3//f4GH/3l8hv9+gYr/eXyG/4CChv97fYP/dXd9/3l8hv99foH/fn+D/35/g/93eX//
    +cHN9/3t9g/9wc33/c3V8/3Byef9wc33/b3F1/3Z4fP9qbXf/bG95/2Jlbv9qbXf/am13/2ptd/9gY2z/
    +Zmlz/2xvef9kZ3H/Zmlz/2xvef93eoP/am13/2Rncf9wc33/ZGdx/2ptd/9maG7/Z2px/2Zobv9zdXz/
    +d3qD/3Bzff9sb3n/amxz/3Byef9zdXz/dnh8/3N1fP9sbnX/bG51/3h5ff9wcnn/bnB3/25wd/9zdXz/
    +d3l//25wd/91d33/bnB3/21vc/9wcnn/bnB3/2xvef9maXP/bnB3/3Byef9sbnX/bnB3/25wd/9wcnn/
    +amxz/25wd/92eHz/bnB3/29xdf9wcnn/cHJ5/3Z4fP9+gIb/c3V8/3Byef9sb3n/bG51/2ptd/9maXP/
    +am13/2xvef9ucXv/cHJ5/2dqcf9nanT/Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/
    +Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/
    +Zmhu/2Zpc/9kZ3H/cHJ5/2Zpc/9qbXf/am13/2Rncf9maXP/Z2p0/2xvef9maXP/bG51/3Bzff9maXP/
    +bW9z/2ptd/9sb3n/am13/3Bzff9ucXv/amxz/25xe/9sbnX/cHJ5/2xvef9qbXf/ZGdx/2ptd/9qbXf/
    +c3V8/3F0e/9laHH/bG51/2dqc/9tcHr/amxz/2ptd/9nanT/cHJ5/3l7gf91d33/amxz/2xudf9vcXj/
    +d3h8/3Byef9vcXX/dXd9/21vc/9sbnX/bG95/29yfP9wc3v/bW92/2ptd/9sb3j/c3V7/3V4f/90dnr/
    +c3V8/3Byev9xc3v/c3Z9/29xeP91d4D/bnB4/21wev91d37/dnh//3Fze/9tb3b/bW93/3J0e/9zdn3/
    +cnV+/25xe/9vcnn/cnV//25xe/9wcnr/cHN8/3Z4gf9wcnn/cHJ6/3d6hP9zdXz/cXN9/3Bzff9zdXz/
    +fYCJ/25wd/9sb3n/bG95/29xeP90dnv/b3J7/25wd/9ucHf/bW92/3N1fP9ucHf/bnB3/29yef9wcnn/
    +Z2px/35/g/9ucHf/bG51/21vc/9qbXf/bnF7/2xvef93eX//d3l//3N1fP9ucXv/bnF7/25xe/9nanT/
    +amxz/2Zpc/9nanT/ZGdx/2dqdP9nanT/ZGdx/3Byef9kZ3H/bG51/2xudf9sb3n/Zmlz/2psc/9wc33/
    +amxz/2xudf9zdXz/amxz/2xvef9qbXf/bnF7/2ptd/9sb3n/am13/2xudf9ucXv/cHN9/3Bzff9wc33/
    +am13/2ptd/91d33/bnB3/2xudf9sbnX/bnB3/2xudf92eHz/bG51/25wd/9kZ3H/bG95/3N1fP9sb3n/
    +ZGZs/2ptd/9ucXv/bG51/2ptd/9zdXz/fn+D/2xvef9sb3n/foCG/25xe/91eIH/bnF7/25wd/9vcXX/
    +dXd9/3d5f/9wc33/c3Z//25wd/9zdn//bnF7/3V3ff9ucXv/bG51/29xdf94eX3/c3Z//25wd/9ucXv/
    +c3Z//3l7gf9wcnn/d3l//25xe/9wcnn/cHN9/3N2f/9zdXz/am13/2xvef91d33/bG51/3N1fP9sb3n/
    +bG51/2dqcf9sb3n/dXd9/2psc/9qbXf/bG95/2xvef9wcnn/d3qD/3V3ff91d33/am13/3Byef9wcnn/
    +Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/
    +am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/
    +cHJ5/29xdf9wc33/bnF7/3l8hv9sb3n/cHN9/3N2f/9sb3n/bG95/3N2f/9wc33/bG95/3Bzff93eX//
    +am13/25wd/9vcXX/cHJ5/25wd/9zdXz/c3V8/2xudf9sb3n/bnB3/2xvef9sbnX/amxz/1xfaP9nanH/
    +Z2px/3Bzff9ucXv/a253/2xud/9tb3j/cXR7/21vc/9ucHf/amxz/25xe/93eX//c3V8/2hqdP9rbnf/
    +bXB5/3R2ev9sbnX/bW9z/25wd/9qbHP/cHJ5/29xef9zdX3/cHJ7/21weP9sb3n/bnB3/3N2f/94eoD/
    +b3J7/3N2f/9zdn//eHuF/3l7gf92eH7/fX+F/3R2ff91eH7/enyC/3p8gv94eoH/d3h9/31/hv97fYP/
    +e32D/3x9gf94eoD/dnh8/31/hf94eX7/d3l//3d5f/97fYP/cHN9/3V3ff97fof/cHN9/2xvef9wc33/
    +cHN9/3t+h/9zdXz/c3Z//3d6g/9wc33/d3mA/3J1f/9ucHb/bXB5/21vdv9ucHf/bnB3/25wd/9vcnv/
    +cHJ5/2dqcf9+gIb/bnF7/3N1fP9vcXX/bnF7/3d6g/9wc33/e36H/3l8hv9zdn//cHN9/25xe/91d33/
    +bnB3/25xe/9sb3n/bnF7/2xvef9ucXv/cHN9/3Byef93eX//bG51/2xudf9sbnX/bG95/2dqdP9qbHP/
    +bnF7/2psc/9nanH/am13/2Zpc/9nanT/Z2px/2ptd/9sbnX/bnF7/2xudf9tb3P/cHJ5/3V3ff91d33/
    +dXd9/2xvef9sb3n/dXiB/25wd/9wc33/c3V8/3V4gf9zdn//d3qD/3N2f/95fIb/cHN9/3l8hv97fYP/
    +eXuB/2dqdP9zdn//eXyG/3Bzff91eIH/eXuB/3+Bh/9ucXv/bnB3/35/g/9tb3P/dXd9/3Byef9wcnn/
    +b3F1/3d5f/93eX//bnF7/3Bzff9sb3n/cHJ5/25xe/93eX//c3Z//3Byef9ucHf/dXd9/3N1fP9sb3n/
    +bG95/3N2f/93eX//bnB3/3V3ff9vcXX/bnF7/3Bzff9ucXv/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/
    +bG95/2xvef9qbHP/bG95/3V3ff9vcXX/bG51/2xvef9qbXf/cHJ5/3l7gf91d33/bnF7/25wd/9ucHf/
    +cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn//bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/
    +am13/2xudf9ucHf/bG51/3V3ff99foH/Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/
    +am13/25xe/9ucHf/c3V8/3V3ff95e4H/bnB3/3V3ff92eHz/amxz/2xudf92eHz/bnF7/2xudf9ucHf/
    +c3V8/2dqdP9qbXf/bG51/3N1fP9ucHf/c3V8/3V3ff9ucHf/cHJ5/3Byef9zdXz/bW9z/21vc/9kZmz/
    +bG51/2xvef91d33/bG50/3Byef9vcXb/cXN5/3Fzef9qbXf/bG95/2Zpc/9sb3n/d3l//3N1fP9rbXT/
    +bXB4/29yev9zdXz/bnB3/25wd/9zdn//am13/25xe/9ucHr/cHN7/2xudv9oa3X/a254/2xudf9wc33/
    +dXd9/2xudf9ucHf/bnB3/3Byef91d33/bnB3/3d5f/9ucHf/bG95/3N2f/92eHz/cHJ5/25wd/9wcnn/
    +cHJ5/3Byef9wcnn/bnB3/25wd/9sb3n/bnB3/25wd/91eIH/c3Z//3Byef9ucHf/d3l//29xdf9nanH/
    +bG51/21vc/93eoP/bG51/2ptd/9ucXv/amxz/3N1fP9qbXb/aWt0/29xeP9sb3j/bG51/2xvef9ucHf/
    +bG95/2xvef9nanH/fn+D/25wd/9ucHf/am13/2xudf91d33/bG51/3l7gf91eIH/cHN9/3N2f/9wc33/
    +d3l//2xvef9wc33/bnB3/2xvef9sb3n/bnF7/3Bzff9ucXv/d3l//2ptd/9ucHf/bG95/3Byef9vcXX/
    +b3F1/3N1fP9vcXX/b3F1/3Bzff9nanT/bG51/2ptd/9ucXv/bG51/2xvef9sb3n/bG51/2xudf9sb3n/
    +dXd9/3Bzff9qbXf/am13/3Byef9qbXf/am13/2Zpc/9ucXv/bG95/2xvef9nanT/bnF7/2Rncf9sb3n/
    +bnF7/25xe/9gY2z/Z2p0/2xvef9qbXf/am13/3Bzff93eoP/am13/2ptd/97fYP/bG51/2xvef9ucXv/
    +bG95/2psc/91d33/dXd9/2ptd/9zdXz/bnB3/3Bzff9ucHf/dnh8/25xe/9wcnn/cHJ5/3d6g/9ucXv/
    +cHN9/2xvef9wc33/AA0BAAADAAAAAQEAAAABAQADAAAAAQEAAAABAgADAAAABAAEAKoBAwADAAAAAQAB
    +AAABBgADAAAAAQACAAABEQAEAAAAAgAEALIBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQCA
    +AAABFwAEAAAAAgAEALoBHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAEAMIAAAAAAAgACAAI
    +AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
    +													
    +												
    +											
    +										
    +										
    +											3
    +											MCAwAA
    +										
    +									
    +									scrollViewTexturedBackgroundColor
    +								
    +								
    +								0
    +								10
    +								
    +									1
    +									30
    +								
    +								
    +									Helvetica
    +									30
    +									16
    +								
    +							
    +							
    +								
    +								293
    +								{{0, 96}, {320, 262}}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_shadow.png
    +								
    +							
    +							
    +								
    +								293
    +								{{80, 113}, {160, 170}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Contact's avatar
    +									
    +									
    +								
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_unknown.png
    +								
    +							
    +						
    +						{320, 395}
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						266
    +						
    +							
    +								
    +								-2147483374
    +								{{0, 10}, {320, 67}}
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MQA
    +									
    +										2
    +									
    +								
    +								-1
    +								NO
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								278
    +								{160, 77}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Accept
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									accept_over.png
    +								
    +								
    +									NSImage
    +									accept_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								275
    +								{{160, 0}, {160, 77}}
    +								
    +								_NS:9
    +								NO
    +								
    +									Decline
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									decline_over.png
    +								
    +								
    +									NSImage
    +									decline_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 383}, {320, 77}}
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						avatarImage
    +						
    +						
    +					
    +					20
    +				
    +				
    +					
    +						addressLabel
    +						
    +						
    +					
    +					14
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						onDeclineClick:
    +						
    +						
    +						7
    +					
    +					16
    +				
    +				
    +					
    +						onAcceptClick:
    +						
    +						
    +						7
    +					
    +					15
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						25
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						22
    +						
    +						
    +						background
    +					
    +					
    +						8
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						21
    +						
    +						
    +						addressBackgroundImage
    +					
    +					
    +						19
    +						
    +						
    +						avatarImage
    +					
    +					
    +						18
    +						
    +						
    +						avatarShadowImage
    +					
    +					
    +						9
    +						
    +						
    +						addressLabel
    +					
    +					
    +						12
    +						
    +						
    +						headerBackground
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						tabBar
    +					
    +					
    +						5
    +						
    +						
    +						mask
    +					
    +					
    +						6
    +						
    +						
    +						declineButton
    +					
    +					
    +						7
    +						
    +						
    +						acceptButton
    +					
    +				
    +			
    +			
    +				IncomingCallViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			30
    +		
    +		
    +			
    +				
    +					IncomingCallViewController
    +					UIViewController
    +					
    +						id
    +						id
    +					
    +					
    +						
    +							onAcceptClick:
    +							id
    +						
    +						
    +							onDeclineClick:
    +							id
    +						
    +					
    +					
    +						UILabel
    +						UIImageView
    +					
    +					
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/IncomingCallViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{320, 154}
    +			{320, 154}
    +			{640, 523}
    +			{320, 339}
    +			{640, 523}
    +			{640, 125}
    +			{320, 154}
    +			{320, 154}
    +			{640, 135}
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/WizardViewController.xib b/Classes/fr.lproj/WizardViewController.xib
    new file mode 100644
    index 000000000..fc0a9fc96
    --- /dev/null
    +++ b/Classes/fr.lproj/WizardViewController.xib
    @@ -0,0 +1,1846 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIView
    +			IBUIImageView
    +			IBUILabel
    +			IBProxyObject
    +			IBUIActivityIndicatorView
    +			IBUITextField
    +			IBUIScrollView
    +			IBUIButton
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						268
    +						{320, 394}
    +						
    +						
    +						_NS:9
    +						YES
    +						YES
    +						IBCocoaTouchFramework
    +						NO
    +						NO
    +					
    +					
    +						
    +						266
    +						
    +							
    +								
    +								294
    +								{160, 77}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Cancel
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									setup_cancel_over.png
    +								
    +								
    +									NSImage
    +									setup_cancel_disabled.png
    +								
    +								
    +									NSImage
    +									setup_cancel_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								291
    +								{{160, 0}, {160, 77}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Start
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									setup_start_over.png
    +								
    +								
    +									NSImage
    +									setup_start_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483357
    +								{{160, 0}, {160, 77}}
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									setup_back_over.png
    +								
    +								
    +									NSImage
    +									setup_back_disabled.png
    +								
    +								
    +									NSImage
    +									setup_back_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 383}, {320, 77}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						-2147483374
    +						
    +							
    +								
    +								292
    +								{{141, 212}, {37, 37}}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								NO
    +								YES
    +								0
    +							
    +						
    +						{320, 460}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwLjUAA
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{60, 80}, {201, 129}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Linphone setup assistant icon
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							setup_welcome_logo.png
    +						
    +					
    +					
    +						
    +						282
    +						{{40, 290}, {240, 44}}
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						IBCocoaTouchFramework
    +						This assistant will help you  to use a SIP account for your calls.
    +						
    +							3
    +							MC4zMzMzMzMzMzMzAA
    +						
    +						
    +						0
    +						NO
    +						10
    +						0
    +						1
    +						
    +							1
    +							12
    +						
    +						
    +							Helvetica
    +							12
    +							16
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 50}, {258, 24}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Account setup assistant
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							setup_title_assistant.png
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 141}, {255, 50}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Create linphone.org account
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Create an account on linphone.org
    +						
    +						
    +						
    +							NSImage
    +							button_background_over.png
    +						
    +						
    +							NSImage
    +							button_background_default.png
    +						
    +						
    +							2
    +							13
    +						
    +						
    +							Helvetica-Bold
    +							13
    +							16
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 205}, {255, 50}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Sign in linphone.org account
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						I have already a linphone.org account
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 269}, {255, 50}}
    +						
    +						_NS:9
    +						NO
    +						
    +							Sign in SIP account
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						I have already a SIP account
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 50}, {258, 24}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Account setup assistant
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +					
    +					
    +						
    +						298
    +						{{39, 80}, {240, 44}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Enter you username and password with your email address
    +						
    +						
    +						0
    +						NO
    +						10
    +						0
    +						1
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 140}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							Username
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Username
    +						
    +							3
    +							MAA
    +							
    +								2
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +							NSImage
    +							field_background.png
    +						
    +						
    +							1
    +							14
    +						
    +						
    +							Helvetica
    +							14
    +							16
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 185}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							Password
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 230}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						102
    +						
    +							Password again
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 275}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						103
    +						
    +							Email
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Email
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						287
    +						{{33, 330}, {255, 50}}
    +						
    +						_NS:9
    +						NO
    +						
    +							Register
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Register
    +						
    +						
    +						
    +						
    +						
    +							2
    +							20
    +						
    +						
    +							Helvetica-Bold
    +							20
    +							16
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 50}, {258, 24}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Account setup assistant
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +					
    +					
    +						
    +						298
    +						{{40, 80}, {240, 44}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Enter you username and password of your linphone.org account
    +						
    +						
    +						0
    +						NO
    +						10
    +						0
    +						1
    +						
    +						
    +					
    +					
    +						
    +						287
    +						{{32, 330}, {255, 50}}
    +						
    +						_NS:9
    +						NO
    +						
    +							Sign in
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Sign in
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 185}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							Password
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 140}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							Username
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Username
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 50}, {258, 24}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Account setup assistant
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +					
    +					
    +						
    +						298
    +						{{40, 80}, {240, 44}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Enter you username and password with your SIP domain
    +						
    +						
    +						0
    +						NO
    +						10
    +						0
    +						1
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 140}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							Username
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Username
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 185}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							Password
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 230}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						104
    +						
    +							Domain
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Domain
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						287
    +						{{34, 330}, {255, 50}}
    +						
    +						_NS:9
    +						NO
    +						
    +							Sign in
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Sign in
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 50}, {258, 24}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Account setup assistant
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +					
    +					
    +						
    +						298
    +						{{40, 80}, {240, 44}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Your account is created. Please check your mails in order to validate your account.
    +						
    +						
    +						0
    +						NO
    +						10
    +						0
    +						1
    +						
    +						
    +					
    +					
    +						
    +						287
    +						{{32, 330}, {255, 50}}
    +						
    +						_NS:9
    +						NO
    +						
    +							Check validation
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Check validation
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483329
    +						{{32, 185}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483329
    +						{{32, 140}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Username
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					20
    +				
    +				
    +					
    +						startButton
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						welcomeView
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						choiceView
    +						
    +						
    +					
    +					40
    +				
    +				
    +					
    +						createAccountView
    +						
    +						
    +					
    +					70
    +				
    +				
    +					
    +						connectAccountView
    +						
    +						
    +					
    +					71
    +				
    +				
    +					
    +						externalAccountView
    +						
    +						
    +					
    +					72
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					96
    +				
    +				
    +					
    +						contentView
    +						
    +						
    +					
    +					99
    +				
    +				
    +					
    +						validateAccountView
    +						
    +						
    +					
    +					112
    +				
    +				
    +					
    +						onStartClick:
    +						
    +						
    +						7
    +					
    +					25
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					23
    +				
    +				
    +					
    +						onCancelClick:
    +						
    +						
    +						7
    +					
    +					24
    +				
    +				
    +					
    +						onCreateAccountClick:
    +						
    +						
    +						7
    +					
    +					42
    +				
    +				
    +					
    +						onConnectAccountClick:
    +						
    +						
    +						7
    +					
    +					41
    +				
    +				
    +					
    +						onExternalAccountClick:
    +						
    +						
    +						7
    +					
    +					43
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					86
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					87
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					88
    +				
    +				
    +					
    +						onSignInExternalClick:
    +						
    +						
    +						7
    +					
    +					115
    +				
    +				
    +					
    +						onSignInClick:
    +						
    +						
    +						7
    +					
    +					116
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					85
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					81
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					80
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					82
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					83
    +				
    +				
    +					
    +						onRegisterClick:
    +						
    +						
    +						7
    +					
    +					113
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					84
    +				
    +				
    +					
    +						onCheckValidationClick:
    +						
    +						
    +						7
    +					
    +					114
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					109
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					110
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						12
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						14
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						tabBar
    +					
    +					
    +						16
    +						
    +						
    +						startButton
    +					
    +					
    +						17
    +						
    +						
    +						backButton
    +					
    +					
    +						18
    +						
    +						
    +						cancelButton
    +					
    +					
    +						21
    +						
    +						
    +							
    +							
    +						
    +						
    +						welcomeView
    +					
    +					
    +						19
    +						
    +						
    +						iconImage
    +					
    +					
    +						22
    +						
    +						
    +						label
    +					
    +					
    +						33
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						choiceView
    +					
    +					
    +						37
    +						
    +						
    +						titleImage
    +					
    +					
    +						44
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						createAccountView
    +					
    +					
    +						48
    +						
    +						
    +						titleImage
    +					
    +					
    +						52
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						connectAccountView
    +					
    +					
    +						53
    +						
    +						
    +						titleImage
    +					
    +					
    +						56
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						externalAccountView
    +					
    +					
    +						57
    +						
    +						
    +						titleImage
    +					
    +					
    +						58
    +						
    +						
    +						label
    +					
    +					
    +						59
    +						
    +						
    +						usernameField
    +					
    +					
    +						60
    +						
    +						
    +						passwordField
    +					
    +					
    +						61
    +						
    +						
    +						domainField
    +					
    +					
    +						62
    +						
    +						
    +						signInButton
    +					
    +					
    +						64
    +						
    +						
    +						signInButton
    +					
    +					
    +						66
    +						
    +						
    +						passwordField
    +					
    +					
    +						67
    +						
    +						
    +						label
    +					
    +					
    +						68
    +						
    +						
    +						usernameField
    +					
    +					
    +						73
    +						
    +						
    +						label
    +					
    +					
    +						74
    +						
    +						
    +						usernameField
    +					
    +					
    +						75
    +						
    +						
    +						passwordField
    +					
    +					
    +						76
    +						
    +						
    +						password2Field
    +					
    +					
    +						77
    +						
    +						
    +						registerButton
    +					
    +					
    +						79
    +						
    +						
    +						emailField
    +					
    +					
    +						39
    +						
    +						
    +						externalAccountButton
    +					
    +					
    +						38
    +						
    +						
    +						connectAccountButton
    +					
    +					
    +						36
    +						
    +						
    +						createAccountButton
    +					
    +					
    +						91
    +						
    +						
    +							
    +						
    +						
    +						waitView
    +					
    +					
    +						90
    +						
    +						
    +						activityIndicatorView
    +					
    +					
    +						98
    +						
    +						
    +						contentView
    +					
    +					
    +						101
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						validateAccountView
    +					
    +					
    +						103
    +						
    +						
    +						checkValidationButton
    +					
    +					
    +						105
    +						
    +						
    +						label
    +					
    +					
    +						107
    +						
    +						
    +						titleImage
    +					
    +					
    +						104
    +						
    +						
    +						usernameField
    +					
    +					
    +						106
    +						
    +						
    +						passwordField
    +					
    +				
    +			
    +			
    +				WizardViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			116
    +		
    +		
    +			
    +				
    +					WizardViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onBackClick:
    +							id
    +						
    +						
    +							onCancelClick:
    +							id
    +						
    +						
    +							onCheckValidationClick:
    +							id
    +						
    +						
    +							onConnectAccountClick:
    +							id
    +						
    +						
    +							onCreateAccountClick:
    +							id
    +						
    +						
    +							onExternalAccountClick:
    +							id
    +						
    +						
    +							onRegisterClick:
    +							id
    +						
    +						
    +							onSignInClick:
    +							id
    +						
    +						
    +							onSignInExternalClick:
    +							id
    +						
    +						
    +							onStartClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIView
    +						UIView
    +						UIScrollView
    +						UIView
    +						UIView
    +						UIButton
    +						UIView
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							choiceView
    +							UIView
    +						
    +						
    +							connectAccountView
    +							UIView
    +						
    +						
    +							contentView
    +							UIScrollView
    +						
    +						
    +							createAccountView
    +							UIView
    +						
    +						
    +							externalAccountView
    +							UIView
    +						
    +						
    +							startButton
    +							UIButton
    +						
    +						
    +							validateAccountView
    +							UIView
    +						
    +						
    +							waitView
    +							UIView
    +						
    +						
    +							welcomeView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/WizardViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{550, 101}
    +			{550, 101}
    +			{542, 88}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{516, 48}
    +			{402, 258}
    +		
    +		933
    +	
    +
    diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings
    index 78ad42e2428add4689948467a112c894b92dbfc4..3b8e89a40903c581ae655e5f4f8debcc5bb8b95c 100644
    GIT binary patch
    delta 226
    zcmX?*x*(b9|G&u#83Q&3%LuXtGk7utOs){}oV-_X8=SXr@?n7z>0*XdhCGH81_g#h
    zAkGEyih(eZA)O(0vY((LTs25<9dW8RR|w5z;&f(+XYgeRW^kWeAQnA&x~LeZFOo>?
    zWOK1aP{Z$uX+v3j;!7w0m-Lw|FUdD~uLRfTr4sj;C%@piT68s7b
    zX$(aS`3$)X3Jj_Y4wD(hqbFYz7X!)($mTMnG86-0B11Zmg-vCE#1g2%-fGg5pGXKm
    zdD&{2lP5{qn0qqhF*q_50AVoDgc2ak1d5~s&GZJcN`Pi+G3YaJF(@(k0&U4;$N`Gv
    zG2~BvFRjdrE+Rd7mTcJMRZ;?zy`;D{8%f<`wkFxqdw~
    zd%!WqhqO$QqC_8y(xZ9(tIgEMf(^C524T$vOVE7r3T(*=(HT;4?sr;&sRvZk}z
    zLH-S#r#uw+e=+o{XKL+$a!Sh|^4zy+ty;nw%Z}~Ph
    z_iWE8T6@sx4tyu&tHM*)YKNCL`hKbh}wXwu6?vGY(
    z1b#7YIKY?3Fo@t6!%ktPhP9I8;$pCQo}_Ky#=S@I7jwWH>wR}Lm(5c?=Yqm
    zcj$5>wGevCMQvs-P(_lE@7G6@^WWRXqY3-9&`734tJa4tU*(^-K|5wvtHxg@T4rw4
    zi!d{3hC7_8w*&F4C1@B%_Cy%>w1Xh@SD~)PXyQ>i$l@H%TQCG>U76!}fhP3tzqQyPiMEM^WI
    zCt2nh{3Rne_kL%yJM&Rf`xbgy^54bq9tUH_0`EJrG^6(H!pH8|)%%ErHq95j=@ff;
    ziZSPS!w{{EqBqdSNHNsW>r8|HNvbG$rOhTNH>|=@qZoxz&P4vMgJfMDI%r83{gv1q
    zpAnvc)8sd6I2EM8Thbj!MU(Muq7^x;fQ+^&^v8L$%j0#>zJTqoKt*Oh%h>Y0I!JcS
    zw)tfC;Co&Myo_75R^H359JXq$Tv{K@Xh8CO=NY{;@1lo(IyXiS)oL#sBWyBW2kk3s
    z2lDcp>(fE851pROZ4oP11voYX=RB3_N3?@z2YQ}nq$#Fwj20?Zt0>E?0J4sCif_hf
    zA*JfaXrgjaZ(3_yj*>%fvk&}Xq{=G3uT$pdUdAq1Yh|QQS~tg^&eB6(cTyG0Mg1rp
    zWUoPTlN*!{G_7Wa~T^a8WHsQ4d&G=2;4T&2(|%
    z*|XVwdVbQ>w#9Who^`wR(>y<{amV%W>$3YcBuVlZiT&KU#7o4;dsb#xDH#OzDdt17
    zxjMUe0~t;49C$mL@6|_AL1+BAaQ^fu#P+-KmxWg9ba`6l@wyppBc{c2HN+G645`mF
    zL0&ggX9tJY$ISvg@-12`N_{o1YkJCfYaP}-wR~58HF9eeA{nDgBl;a*cjkEzC5bWm
    zDZb^N&oa(tv$T*epU{U0bGfprFBt#S~T#sgeqX%RJnTzpk|ov>49D
    z@@^L8#r^J>_c(=nfj@WF@*XW)xEXzs6TnpWu0CEJZoLC#zv3^g8m8@9tBb#MCjhh-
    zgSnqA<~P{SVK;bA5Jm;>@QZe&={z0uA3(L~T(ZN=nJ2(gWFc~{oU1vy^XaEmQ07-X**I1@vMixBvhE
    
    literal 0
    HcmV?d00001
    
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    new file mode 100644
    index 000000000..d4bac3ea5
    --- /dev/null
    +++ b/linphone.ldb/Contents.plist
    @@ -0,0 +1,8300 @@
    +
    +
    +
    +
    +	bundles
    +	
    +		
    +			associated Xcode projects
    +			
    +				../linphone.xcodeproj
    +			
    +			change date
    +			2001-01-01T00:00:00Z
    +			changed values
    +			
    +			class
    +			BLBundleObject
    +			errors
    +			
    +			files
    +			
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/ContactDetailsViewController/1/ContactDetailsViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:02:37Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					9441c4e7e9f4a58b8eb373d379d8ca85
    +
    +					name
    +					ContactDetailsViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Edit"; ObjectID = "8";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							8.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Edit
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "9";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							9.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Cancel"; ObjectID = "47";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							47.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Cancel
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/ContactDetailsLabelViewController/1/ContactDetailsLabelViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:03:08Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					2b192e9fe7d3719ea8c6dfdde2642766
    +
    +					name
    +					ContactDetailsLabelViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "8";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							8.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/ChatRoomViewController/1/ChatRoomViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:21:35Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					73bafe5878db223f8ccca7a749e21d89
    +
    +					name
    +					ChatRoomViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "9";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							9.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Edit"; ObjectID = "10";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							10.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Edit
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Send"; ObjectID = "15";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							15.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Send
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "Contact's name"; ObjectID = "40";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							40.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contact's name
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "Contact1"; ObjectID = "40";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							40.text
    +							localizations
    +							
    +								en
    +								Contact1
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Contact's avatar"; ObjectID = "41";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							41.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contact's avatar
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextView"; accessibilityLabel = "Enter your message here"; ObjectID = "55";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							55.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Enter your message here
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextView"; text = "This is a message"; ObjectID = "55";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							55.text
    +							localizations
    +							
    +								en
    +								This is a message
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/ChatViewController/1/ChatViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:08:28Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					5899ee290abaa696222088258d0de490
    +
    +					name
    +					ChatViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Edit"; ObjectID = "9";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							9.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Edit
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "New Discussion"; ObjectID = "10";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							10.accessibilityLabel
    +							localizations
    +							
    +								en
    +								New Discussion
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Enter a address"; ObjectID = "25";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							25.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Enter a address
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "To:"; ObjectID = "26";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							26.text
    +							localizations
    +							
    +								en
    +								To:
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/ContactsViewController/1/ContactsViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:18:11Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					513f01ab42b113fe6fec168d6a5b7dc6
    +
    +					name
    +					ContactsViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "All contacts filter"; ObjectID = "4";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							4.accessibilityLabel
    +							localizations
    +							
    +								en
    +								All contacts filter
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Linphone contacts filter"; ObjectID = "5";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							5.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Linphone contacts filter
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add contact"; ObjectID = "6";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							6.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add contact
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "87";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							87.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/DialerViewController/1/DialerViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:13:02Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					13c159c763c7583463ca5f1586ae1974
    +
    +					name
    +					DialerViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Enter a address"; ObjectID = "4";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							4.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Enter a address
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Enter sip address or phone number..."; ObjectID = "4";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							4.placeholder
    +							localizations
    +							
    +								en
    +								Enter sip address or phone number...
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "3"; ObjectID = "29";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							29.accessibilityLabel
    +							localizations
    +							
    +								en
    +								3
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "4"; ObjectID = "30";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							30.accessibilityLabel
    +							localizations
    +							
    +								en
    +								4
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "5"; ObjectID = "31";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							31.accessibilityLabel
    +							localizations
    +							
    +								en
    +								5
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "6"; ObjectID = "33";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							33.accessibilityLabel
    +							localizations
    +							
    +								en
    +								6
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "7"; ObjectID = "34";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							34.accessibilityLabel
    +							localizations
    +							
    +								en
    +								7
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "8"; ObjectID = "35";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							35.accessibilityLabel
    +							localizations
    +							
    +								en
    +								8
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "9"; ObjectID = "36";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							36.accessibilityLabel
    +							localizations
    +							
    +								en
    +								9
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "2"; ObjectID = "37";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							37.accessibilityLabel
    +							localizations
    +							
    +								en
    +								2
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "1"; ObjectID = "38";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							38.accessibilityLabel
    +							localizations
    +							
    +								en
    +								1
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Star"; ObjectID = "39";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							39.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Star
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "0"; ObjectID = "40";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							40.accessibilityLabel
    +							localizations
    +							
    +								en
    +								0
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Sharp"; ObjectID = "41";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							41.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Sharp
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "183";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							183.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add call"; ObjectID = "184";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							184.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Backspace"; ObjectID = "185";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							185.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Backspace
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add to contact"; ObjectID = "222";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							222.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add to contact
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Call"; ObjectID = "224";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							224.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Transfer call"; ObjectID = "236";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							236.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Transfer call
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/DialerViewController~ipad/1/DialerViewController~ipad.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:13:22Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					1ed22f3f31bb5198ca991b340a165b4c
    +
    +					name
    +					DialerViewController~ipad.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Enter a address"; ObjectID = "6";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							6.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Enter a address
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Enter sip address or phone number..."; ObjectID = "6";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							6.placeholder
    +							localizations
    +							
    +								en
    +								Enter sip address or phone number...
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Star"; ObjectID = "8";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							8.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Star
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "6"; ObjectID = "9";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							9.accessibilityLabel
    +							localizations
    +							
    +								en
    +								6
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "0"; ObjectID = "10";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							10.accessibilityLabel
    +							localizations
    +							
    +								en
    +								0
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Sharp"; ObjectID = "11";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							11.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Sharp
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "9"; ObjectID = "12";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							12.accessibilityLabel
    +							localizations
    +							
    +								en
    +								9
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "8"; ObjectID = "13";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							13.accessibilityLabel
    +							localizations
    +							
    +								en
    +								8
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "7"; ObjectID = "14";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							14.accessibilityLabel
    +							localizations
    +							
    +								en
    +								7
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "4"; ObjectID = "15";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							15.accessibilityLabel
    +							localizations
    +							
    +								en
    +								4
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "5"; ObjectID = "16";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							16.accessibilityLabel
    +							localizations
    +							
    +								en
    +								5
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "3"; ObjectID = "17";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							17.accessibilityLabel
    +							localizations
    +							
    +								en
    +								3
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "2"; ObjectID = "18";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							18.accessibilityLabel
    +							localizations
    +							
    +								en
    +								2
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "1"; ObjectID = "19";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							19.accessibilityLabel
    +							localizations
    +							
    +								en
    +								1
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Transfer Call"; ObjectID = "20";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							20.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Transfer Call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Call"; ObjectID = "21";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							21.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "22";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							22.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add call"; ObjectID = "23";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							23.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add to Contact"; ObjectID = "24";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							24.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add to Contact
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Backscape"; ObjectID = "25";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							25.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Backscape
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/FirstLoginViewController/1/FirstLoginViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:14:10Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					24ce0752284c3c6fd4b51c7368558504
    +
    +					name
    +					FirstLoginViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Username"; ObjectID = "6";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							6.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Username
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Username"; ObjectID = "6";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							6.placeholder
    +							localizations
    +							
    +								en
    +								Username
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Password"; ObjectID = "8";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							8.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Password
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Password"; ObjectID = "8";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							8.placeholder
    +							localizations
    +							
    +								en
    +								Password
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Login"; ObjectID = "64";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							64.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Login
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "Login"; ObjectID = "64";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							64.normalTitle
    +							localizations
    +							
    +								en
    +								Login
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/HistoryDetailsViewController/1/HistoryDetailsViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:21:27Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					8e3f7756f219a2bd1a73da657abf7f25
    +
    +					name
    +					HistoryDetailsViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "9";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							9.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Contact's avatar"; ObjectID = "23";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							23.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contact's avatar
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "Contact's name"; ObjectID = "25";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							25.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contact's name
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "Contact1"; ObjectID = "25";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							25.text
    +							localizations
    +							
    +								en
    +								Contact1
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "Date:"; ObjectID = "27";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							27.text
    +							localizations
    +							
    +								en
    +								Date:
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "Call date"; ObjectID = "28";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							28.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Call date
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "11/11/2011 at 10:01"; ObjectID = "28";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							28.text
    +							localizations
    +							
    +								en
    +								11/11/2011 at 10:01
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "Duration:"; ObjectID = "31";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							31.text
    +							localizations
    +							
    +								en
    +								Duration:
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "Call duration"; ObjectID = "32";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							32.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Call duration
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "9:05"; ObjectID = "32";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							32.text
    +							localizations
    +							
    +								en
    +								9:05
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "Call type"; ObjectID = "35";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							35.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Call type
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "outgoing call"; ObjectID = "35";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							35.text
    +							localizations
    +							
    +								en
    +								outgoing call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "Type:"; ObjectID = "36";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							36.text
    +							localizations
    +							
    +								en
    +								Type:
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Callback"; ObjectID = "37";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							37.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Callback
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "0102030405"; ObjectID = "37";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							37.normalTitle
    +							localizations
    +							
    +								en
    +								0102030405
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add to contact"; ObjectID = "50";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							50.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add to contact
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/HistoryViewController/1/HistoryViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:18:57Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					298b795268cf5c06a0f890835be7ddb3
    +
    +					name
    +					HistoryViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "All contacts filter"; ObjectID = "4";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							4.accessibilityLabel
    +							localizations
    +							
    +								en
    +								All contacts filter
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Missed contacts filter"; ObjectID = "5";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							5.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Missed contacts filter
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Edit"; ObjectID = "6";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							6.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Edit
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Delete all"; ObjectID = "35";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							35.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Delete all
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "Del"; ObjectID = "35";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							35.normalTitle
    +							localizations
    +							
    +								en
    +								Del
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/InCallViewController/1/InCallViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:34:47Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					ef39c975bbcbb80f09bc1b599428075d
    +
    +					name
    +					InCallViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Switch camera"; ObjectID = "160";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							160.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Switch camera
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/IncomingCallViewController/1/IncomingCallViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:21:18Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					6b6854fd566e71a7fa5ca6490dc64ca8
    +
    +					name
    +					IncomingCallViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Decline"; ObjectID = "6";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							6.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Decline
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Accept"; ObjectID = "7";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							7.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Accept
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "Contact's name"; ObjectID = "9";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							9.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contact's name
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "0102030405"; ObjectID = "9";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							9.text
    +							localizations
    +							
    +								en
    +								0102030405
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Incoming call"; ObjectID = "12";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							12.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Incoming call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Contact's avatar"; ObjectID = "19";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							19.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contact's avatar
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/WizardViewController/1/WizardViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:50:00Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					42816e9f5499a89abc8b9520051622f6
    +
    +					name
    +					WizardViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Start"; ObjectID = "16";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							16.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Start
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "17";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							17.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Cancel"; ObjectID = "18";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							18.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Cancel
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Linphone setup assistant icon"; ObjectID = "19";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							19.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Linphone setup assistant icon
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "This assistant will help you  to use a SIP account for your calls."; ObjectID = "22";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							22.text
    +							localizations
    +							
    +								en
    +								This assistant will help you  to use a SIP account for your calls.
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Create linphone.org account"; ObjectID = "36";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							36.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Create linphone.org account
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "Create an account on linphone.org"; ObjectID = "36";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							36.normalTitle
    +							localizations
    +							
    +								en
    +								Create an account on linphone.org
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Account setup assistant"; ObjectID = "37";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							37.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Account setup assistant
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Sign in linphone.org account"; ObjectID = "38";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							38.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Sign in linphone.org account
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "I have already a linphone.org account"; ObjectID = "38";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							38.normalTitle
    +							localizations
    +							
    +								en
    +								I have already a linphone.org account
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Sign in SIP account"; ObjectID = "39";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							39.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Sign in SIP account
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "I have already a SIP account"; ObjectID = "39";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							39.normalTitle
    +							localizations
    +							
    +								en
    +								I have already a SIP account
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Account setup assistant"; ObjectID = "48";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							48.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Account setup assistant
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Account setup assistant"; ObjectID = "53";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							53.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Account setup assistant
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Account setup assistant"; ObjectID = "57";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							57.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Account setup assistant
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "Enter you username and password with your SIP domain"; ObjectID = "58";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							58.text
    +							localizations
    +							
    +								en
    +								Enter you username and password with your SIP domain
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Username"; ObjectID = "59";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							59.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Username
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Username"; ObjectID = "59";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							59.placeholder
    +							localizations
    +							
    +								en
    +								Username
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Password"; ObjectID = "60";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							60.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Password
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Password"; ObjectID = "60";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							60.placeholder
    +							localizations
    +							
    +								en
    +								Password
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Domain"; ObjectID = "61";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							61.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Domain
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Domain"; ObjectID = "61";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							61.placeholder
    +							localizations
    +							
    +								en
    +								Domain
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Sign in"; ObjectID = "62";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							62.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Sign in
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "Sign in"; ObjectID = "62";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							62.normalTitle
    +							localizations
    +							
    +								en
    +								Sign in
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Sign in"; ObjectID = "64";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							64.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Sign in
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "Sign in"; ObjectID = "64";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							64.normalTitle
    +							localizations
    +							
    +								en
    +								Sign in
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Password"; ObjectID = "66";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							66.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Password
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Password"; ObjectID = "66";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							66.placeholder
    +							localizations
    +							
    +								en
    +								Password
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "Enter you username and password of your linphone.org account"; ObjectID = "67";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							67.text
    +							localizations
    +							
    +								en
    +								Enter you username and password of your linphone.org account
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Username"; ObjectID = "68";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							68.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Username
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Username"; ObjectID = "68";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							68.placeholder
    +							localizations
    +							
    +								en
    +								Username
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "Enter you username and password with your email address"; ObjectID = "73";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							73.text
    +							localizations
    +							
    +								en
    +								Enter you username and password with your email address
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Username"; ObjectID = "74";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							74.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Username
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Username"; ObjectID = "74";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							74.placeholder
    +							localizations
    +							
    +								en
    +								Username
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Password"; ObjectID = "75";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							75.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Password
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Password"; ObjectID = "75";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							75.placeholder
    +							localizations
    +							
    +								en
    +								Password
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Password again"; ObjectID = "76";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							76.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Password again
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Password"; ObjectID = "76";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							76.placeholder
    +							localizations
    +							
    +								en
    +								Password
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Register"; ObjectID = "77";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							77.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Register
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "Register"; ObjectID = "77";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							77.normalTitle
    +							localizations
    +							
    +								en
    +								Register
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; accessibilityLabel = "Email"; ObjectID = "79";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							79.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Email
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Email"; ObjectID = "79";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							79.placeholder
    +							localizations
    +							
    +								en
    +								Email
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Check validation"; ObjectID = "103";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							103.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Check validation
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "Check validation"; ObjectID = "103";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							103.normalTitle
    +							localizations
    +							
    +								en
    +								Check validation
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Username"; ObjectID = "104";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							104.placeholder
    +							localizations
    +							
    +								en
    +								Username
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "Your account is created. Please check your mails in order to validate your account."; ObjectID = "105";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							105.text
    +							localizations
    +							
    +								en
    +								Your account is created. Please check your mails in order to validate your account.
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUITextField"; placeholder = "Password"; ObjectID = "106";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							106.placeholder
    +							localizations
    +							
    +								en
    +								Password
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Account setup assistant"; ObjectID = "107";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							107.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Account setup assistant
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +			
    +			flags
    +			0
    +			name
    +			Classes
    +			naming style
    +			1
    +			referencing style
    +			1
    +			user name
    +			Classes
    +		
    +		
    +			associated Xcode projects
    +			
    +				../../linphone.xcodeproj
    +			
    +			change date
    +			2001-01-01T00:00:00Z
    +			changed values
    +			
    +			class
    +			BLBundleObject
    +			errors
    +			
    +			files
    +			
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								LinphoneUI/UICallBar/1/UICallBar.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:23:27Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					21217614bd20aef77a46e2656ec50428
    +
    +					name
    +					UICallBar.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "6";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							6.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Hangup"; ObjectID = "7";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							7.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Hangup
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Pause"; ObjectID = "8";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							8.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Pause
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Speaker"; ObjectID = "9";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							9.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Speaker
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Options"; ObjectID = "10";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							10.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Options
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Micro"; ObjectID = "11";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							11.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Micro
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Video"; ObjectID = "12";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							12.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Video
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Start Conference"; ObjectID = "21";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							21.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Start Conference
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Star"; ObjectID = "62";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							62.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Star
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "6"; ObjectID = "63";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							63.accessibilityLabel
    +							localizations
    +							
    +								en
    +								6
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "0"; ObjectID = "64";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							64.accessibilityLabel
    +							localizations
    +							
    +								en
    +								0
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Sharp"; ObjectID = "65";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							65.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Sharp
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "9"; ObjectID = "66";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							66.accessibilityLabel
    +							localizations
    +							
    +								en
    +								9
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "8"; ObjectID = "67";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							67.accessibilityLabel
    +							localizations
    +							
    +								en
    +								8
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "7"; ObjectID = "68";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							68.accessibilityLabel
    +							localizations
    +							
    +								en
    +								7
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "4"; ObjectID = "69";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							69.accessibilityLabel
    +							localizations
    +							
    +								en
    +								4
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "5"; ObjectID = "70";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							70.accessibilityLabel
    +							localizations
    +							
    +								en
    +								5
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "3"; ObjectID = "71";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							71.accessibilityLabel
    +							localizations
    +							
    +								en
    +								3
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "2"; ObjectID = "72";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							72.accessibilityLabel
    +							localizations
    +							
    +								en
    +								2
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "1"; ObjectID = "73";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							73.accessibilityLabel
    +							localizations
    +							
    +								en
    +								1
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add call"; ObjectID = "88";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							88.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Transfer call"; ObjectID = "90";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							90.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Transfer call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "106";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							106.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Hangup"; ObjectID = "107";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							107.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Hangup
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Start Conference"; ObjectID = "108";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							108.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Start Conference
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Pause"; ObjectID = "109";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							109.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Pause
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add call"; ObjectID = "110";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							110.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Speaker"; ObjectID = "111";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							111.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Speaker
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Micro"; ObjectID = "112";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							112.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Micro
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Video"; ObjectID = "113";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							113.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Video
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add call"; ObjectID = "127";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							127.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add call"; ObjectID = "128";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							128.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add call
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								LinphoneUI/UICallBar~ipad/1/UICallBar~ipad.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:24:52Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					5f071ae1683c558236da3e9e81c4f310
    +
    +					name
    +					UICallBar~ipad.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "10";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							10.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Hangup"; ObjectID = "11";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							11.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Hangup
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Start Conference"; ObjectID = "12";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							12.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Start Conference
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Pause"; ObjectID = "13";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							13.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Pause
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Options"; ObjectID = "14";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							14.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Options
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Speaker"; ObjectID = "15";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							15.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Speaker
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Micro"; ObjectID = "16";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							16.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Micro
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Video"; ObjectID = "17";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							17.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Video
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "1"; ObjectID = "19";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							19.accessibilityLabel
    +							localizations
    +							
    +								en
    +								1
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "2"; ObjectID = "20";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							20.accessibilityLabel
    +							localizations
    +							
    +								en
    +								2
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "3"; ObjectID = "21";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							21.accessibilityLabel
    +							localizations
    +							
    +								en
    +								3
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "4"; ObjectID = "22";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							22.accessibilityLabel
    +							localizations
    +							
    +								en
    +								4
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "5"; ObjectID = "23";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							23.accessibilityLabel
    +							localizations
    +							
    +								en
    +								5
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "6"; ObjectID = "24";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							24.accessibilityLabel
    +							localizations
    +							
    +								en
    +								6
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "7"; ObjectID = "25";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							25.accessibilityLabel
    +							localizations
    +							
    +								en
    +								7
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "8"; ObjectID = "26";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							26.accessibilityLabel
    +							localizations
    +							
    +								en
    +								8
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "9"; ObjectID = "27";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							27.accessibilityLabel
    +							localizations
    +							
    +								en
    +								9
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Star"; ObjectID = "28";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							28.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Star
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "0"; ObjectID = "29";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							29.accessibilityLabel
    +							localizations
    +							
    +								en
    +								0
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Sharp"; ObjectID = "30";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							30.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Sharp
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add call"; ObjectID = "31";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							31.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Transfer call"; ObjectID = "32";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							32.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Transfer call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "38";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							38.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add call"; ObjectID = "39";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							39.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Video"; ObjectID = "40";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							40.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Video
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Micro"; ObjectID = "41";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							41.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Micro
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Speaker"; ObjectID = "42";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							42.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Speaker
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Pause"; ObjectID = "43";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							43.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Pause
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Start Conference"; ObjectID = "44";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							44.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Start Conference
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Hangup"; ObjectID = "45";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							45.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Hangup
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add call"; ObjectID = "60";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							60.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Add call"; ObjectID = "61";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							61.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Add call
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								LinphoneUI/UIConferenceHeader/1/UIConferenceHeader.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:25:36Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					0178fd143e6193631ff7cef0c9406532
    +
    +					name
    +					UIConferenceHeader.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Conference"; ObjectID = "7";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							7.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Conference
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Pause"; ObjectID = "13";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							13.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Pause
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +						fr_FR
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								LinphoneUI/UIContactDetailsFooter/1/UIContactDetailsFooter.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:25:42Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					0bc7c38f764c5c69721ba92aaaad7292
    +
    +					name
    +					UIContactDetailsFooter.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Remove"; ObjectID = "5";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							5.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Remove
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "Remove Contact"; ObjectID = "5";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							5.normalTitle
    +							localizations
    +							
    +								en
    +								Remove Contact
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								LinphoneUI/UIMainBar/1/UIMainBar.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:26:19Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					5cec6bcd22057df549ea6ed9d5dcf3bc
    +
    +					name
    +					UIMainBar.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Chat"; ObjectID = "5";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							5.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Chat
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "History"; ObjectID = "6";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							6.accessibilityLabel
    +							localizations
    +							
    +								en
    +								History
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Dialer"; ObjectID = "7";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							7.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Dialer
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Contacts"; ObjectID = "8";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							8.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contacts
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Settings"; ObjectID = "9";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							9.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Settings
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "History missed"; ObjectID = "34";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							34.accessibilityLabel
    +							localizations
    +							
    +								en
    +								History missed
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "99"; ObjectID = "34";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							34.text
    +							localizations
    +							
    +								en
    +								99
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "Chat missed"; ObjectID = "38";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							38.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Chat missed
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "99"; ObjectID = "38";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							38.text
    +							localizations
    +							
    +								en
    +								99
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								LinphoneUI/UIMainBar~ipad/1/UIMainBar~ipad.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:27:06Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					2a8f1a9fc65ae4366e6ae727c36ca4f9
    +
    +					name
    +					UIMainBar~ipad.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Dialer"; ObjectID = "5";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							5.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Dialer
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Chat"; ObjectID = "7";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							7.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Chat
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "History"; ObjectID = "8";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							8.accessibilityLabel
    +							localizations
    +							
    +								en
    +								History
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Contacts"; ObjectID = "9";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							9.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contacts
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Settings"; ObjectID = "10";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							10.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Settings
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "History missed"; ObjectID = "11";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							11.accessibilityLabel
    +							localizations
    +							
    +								en
    +								History missed
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "99"; ObjectID = "11";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							11.text
    +							localizations
    +							
    +								en
    +								99
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "Chat missed"; ObjectID = "14";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							14.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Chat missed
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "99"; ObjectID = "14";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							14.text
    +							localizations
    +							
    +								en
    +								99
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Settings"; ObjectID = "30";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							30.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Settings
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Contacts"; ObjectID = "31";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							31.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contacts
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "History"; ObjectID = "32";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							32.accessibilityLabel
    +							localizations
    +							
    +								en
    +								History
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Chat"; ObjectID = "33";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							33.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Chat
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Dialer"; ObjectID = "35";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							35.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Dialer
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "99"; ObjectID = "38";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							38.text
    +							localizations
    +							
    +								en
    +								99
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "99"; ObjectID = "39";
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							39.text
    +							localizations
    +							
    +								en
    +								99
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								LinphoneUI/UIContactDetailsHeader/1/UIContactDetailsHeader.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:33:00Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					63c3d2093e6051f9a56cdc2c5931554f
    +
    +					name
    +					UIContactDetailsHeader.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "Contact's name"; ObjectID = "8";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							8.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contact's name
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "Contact1"; ObjectID = "8";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							8.text
    +							localizations
    +							
    +								en
    +								Contact1
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Contact's avatar"; ObjectID = "22";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							22.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contact's avatar
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								LinphoneUI/UICallCell/1/UICallCell.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-10T15:32:07Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					cc6d2f3f532fa2140d7fad349cfeb4c5
    +
    +					name
    +					UICallCell.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "Contact's name"; ObjectID = "17";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							17.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contact's name
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "0102030405"; ObjectID = "17";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							17.text
    +							localizations
    +							
    +								en
    +								0102030405
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Call state"; ObjectID = "18";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							18.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Call state
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; accessibilityLabel = "Call state"; ObjectID = "19";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							19.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Call state
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUILabel"; text = "12:34"; ObjectID = "19";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							19.text
    +							localizations
    +							
    +								en
    +								12:34
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIImageView"; accessibilityLabel = "Contact's avatar"; ObjectID = "29";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							29.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contact's avatar
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Expand"; ObjectID = "38";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							38.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Expand
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Pause"; ObjectID = "47";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							47.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Pause
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Remove"; ObjectID = "49";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							49.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Remove
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +						fr
    +						1
    +					
    +				
    +			
    +			flags
    +			0
    +			name
    +			Classes/LinphoneUI
    +			naming style
    +			1
    +			referencing style
    +			1
    +			user name
    +			LinphoneUI
    +		
    +		
    +			associated Xcode projects
    +			
    +				../linphone.xcodeproj
    +			
    +			change date
    +			2001-01-01T00:00:00Z
    +			changed values
    +			
    +			class
    +			BLBundleObject
    +			errors
    +			
    +			files
    +			
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Resources/Localizable/1/Localizable.strings
    +							
    +						
    +					
    +					change date
    +					2012-09-10T14:42:01Z
    +					changed values
    +					
    +					class
    +					BLStringsFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					69120e517d5f8a0ef7d82d62c184845e
    +
    +					name
    +					Localizable.strings
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							 (Aborted)
    +							localizations
    +							
    +								en
    +								 (Aborted)
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							 (Declined)
    +							localizations
    +							
    +								en
    +								 (Declined)
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							 (Missed)
    +							localizations
    +							
    +								en
    +								 (Missed)
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							%@
    +Reason was: %@
    +							localizations
    +							
    +								en
    +								%1$@
    +Reason was: %2$@
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							'%@' not registered to Service
    +							localizations
    +							
    +								en
    +								'%@' not registered to Service
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							'%@' would like to enable video
    +							localizations
    +							
    +								en
    +								'%@' would like to enable video
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Accept
    +							localizations
    +							
    +								en
    +								Accept
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Account creation issue
    +							localizations
    +							
    +								en
    +								Account creation issue
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Account validation issue
    +							localizations
    +							
    +								en
    +								Account validation issue
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Alert
    +							localizations
    +							
    +								en
    +								Alert
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Answer
    +							localizations
    +							
    +								en
    +								Answer
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Bad credentials, check your account settings
    +							localizations
    +							
    +								en
    +								Bad credentials, check your account settings
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Battery is running low. Stop video ?
    +							localizations
    +							
    +								en
    +								Battery is running low. Stop video ?
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Call failed
    +							localizations
    +							
    +								en
    +								Call failed
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Can't create the account. Please try again.
    +							localizations
    +							
    +								en
    +								Can't create the account. Please try again.
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Cannot call %@
    +							localizations
    +							
    +								en
    +								Cannot call %@
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Cannot make call
    +							localizations
    +							
    +								en
    +								Cannot make call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Check error
    +							localizations
    +							
    +								en
    +								Check error
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Check issue
    +							localizations
    +							
    +								en
    +								Check issue
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Communication issue
    +							localizations
    +							
    +								en
    +								Communication issue
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Communication issue (%@)
    +							localizations
    +							
    +								en
    +								Communication issue (%@)
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Continue
    +							localizations
    +							
    +								en
    +								Continue
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Continue video
    +							localizations
    +							
    +								en
    +								Continue video
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Decline
    +							localizations
    +							
    +								en
    +								Decline
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Dismiss
    +							localizations
    +							
    +								en
    +								Dismiss
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Either configure a SIP proxy server from settings prior to place a call or use a valid SIP address (I.E sip:john@example.net)
    +							localizations
    +							
    +								en
    +								Either configure a SIP proxy server from settings prior to place a call or use a valid SIP address (I.E sip:john@example.net)
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Either configure a SIP proxy server from settings prior to send a message or use a valid SIP address (I.E sip:john@example.net)
    +							localizations
    +							
    +								en
    +								Either configure a SIP proxy server from settings prior to send a message or use a valid SIP address (I.E sip:john@example.net)
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Enter your password
    +							localizations
    +							
    +								en
    +								Enter your password
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Enter your username
    +							localizations
    +							
    +								en
    +								Enter your username
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							First name
    +							localizations
    +							
    +								en
    +								First name
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							IC_MSG
    +							localizations
    +							
    +								en
    +								IC_MSG
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							IM_MSG
    +							localizations
    +							
    +								en
    +								IM_MSG
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Incoming call
    +							localizations
    +							
    +								en
    +								Incoming call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Invalid SIP address
    +							localizations
    +							
    +								en
    +								Invalid SIP address
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Last name
    +							localizations
    +							
    +								en
    +								Last name
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Network down
    +							localizations
    +							
    +								en
    +								Network down
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Network Error
    +							localizations
    +							
    +								en
    +								Network Error
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							No microphone
    +							localizations
    +							
    +								en
    +								No microphone
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							No SIP account configured
    +							localizations
    +							
    +								en
    +								No SIP account configured
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							No SIP account defined
    +							localizations
    +							
    +								en
    +								No SIP account defined
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Not registered
    +							localizations
    +							
    +								en
    +								Not registered
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Ok
    +							localizations
    +							
    +								en
    +								Ok
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Outgoing call
    +							localizations
    +							
    +								en
    +								Outgoing call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Phone number
    +							localizations
    +							
    +								en
    +								Phone number
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Phone numbers
    +							localizations
    +							
    +								en
    +								Phone numbers
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Please make sure your device is connected to the internet and double check your SIP account configuration in the settings.
    +							localizations
    +							
    +								en
    +								Please make sure your device is connected to the internet and double check your SIP account configuration in the settings.
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Please terminate GSM call
    +							localizations
    +							
    +								en
    +								Please terminate GSM call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Registered
    +							localizations
    +							
    +								en
    +								Registered
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Registration failed
    +							localizations
    +							
    +								en
    +								Registration failed
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Registration failure
    +							localizations
    +							
    +								en
    +								Registration failure
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Registration in progress
    +							localizations
    +							
    +								en
    +								Registration in progress
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Show
    +							localizations
    +							
    +								en
    +								Show
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							SIP address
    +							localizations
    +							
    +								en
    +								SIP address
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							SIP addresses
    +							localizations
    +							
    +								en
    +								SIP addresses
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							SIP server unreachable
    +							localizations
    +							
    +								en
    +								SIP server unreachable
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Stop video
    +							localizations
    +							
    +								en
    +								Stop video
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							The email is invalid.
    +
    +							localizations
    +							
    +								en
    +								The email is invalid.
    +
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							The password is too short (minimum %d characters).
    +
    +							localizations
    +							
    +								en
    +								The password is too short (minimum %d characters).
    +
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							The passwords are different.
    +
    +							localizations
    +							
    +								en
    +								The passwords are different.
    +
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							The username is too short (minimum %d characters).
    +
    +							localizations
    +							
    +								en
    +								The username is too short (minimum %d characters).
    +
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							There is no network connection available, enable WIFI or WWAN prior to place a call
    +							localizations
    +							
    +								en
    +								There is no network connection available, enable WIFI or WWAN prior to place a call
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Unknown
    +							localizations
    +							
    +								en
    +								Unknown
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Username already exists
    +							localizations
    +							
    +								en
    +								Username already exists
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							You need to plug a microphone to your device to use this application.
    +							localizations
    +							
    +								en
    +								You need to plug a microphone to your device to use this application.
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Your account is not validate yet.
    +							localizations
    +							
    +								en
    +								Your account is not validate yet.
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					plist file
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +					
    +				
    +			
    +			flags
    +			0
    +			name
    +			Resources
    +			naming style
    +			1
    +			referencing style
    +			1
    +			user name
    +			Resources
    +		
    +	
    +	languages
    +	
    +		en
    +		fr
    +	
    +	preferences
    +	
    +		XcodeAddMissingFiles
    +		
    +		XcodeFileLimit
    +		75
    +		XcodeHasFileLimit
    +		
    +		XcodeHasLanguageLimit
    +		
    +		XcodeLanguageLimit
    +		90
    +		XcodeRemoveNotMatchingFiles
    +		
    +		autotranslateNewStrings
    +		
    +		compressLocalizationFiles
    +		
    +		deactivateEmptyStrings
    +		
    +		deactivatePlaceholderStrings
    +		
    +		defaultBundleNaming
    +		1
    +		defaultBundleReferencing
    +		1
    +		embedDictionary
    +		
    +		embedDictionaryGuesses
    +		
    +		importEmptyStrings
    +		
    +		includeInterfacePreview
    +		
    +		markAutotranslatedAsNotChanged
    +		
    +		rescanXcodeProjects
    +		
    +		saveCompressed
    +		
    +		updateXcodeProjects
    +		
    +		valueChangesResetStrings
    +		
    +	
    +	reference language
    +	en
    +	version
    +	5
    +
    +
    diff --git a/linphone.ldb/Resources/Classes/ChatRoomViewController/1/ChatRoomViewController.xib b/linphone.ldb/Resources/Classes/ChatRoomViewController/1/ChatRoomViewController.xib
    new file mode 100644
    index 000000000..3b1a431c4
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/ChatRoomViewController/1/ChatRoomViewController.xib
    @@ -0,0 +1,820 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUILabel
    +			IBUITableView
    +			IBUITableViewController
    +			IBUITextView
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						310
    +						
    +							
    +								
    +								290
    +								
    +									
    +										
    +										292
    +										{{-13, -5}, {131, 107}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											avatar_shadow_small.png
    +										
    +									
    +									
    +										
    +										292
    +										{{20, 6}, {65, 65}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Contact's avatar
    +											
    +											
    +										
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											avatar_unknown_small.png
    +										
    +									
    +									
    +										
    +										290
    +										{{101, 37}, {199, 43}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										YES
    +										7
    +										NO
    +										
    +											Contact's name
    +											
    +										
    +										IBCocoaTouchFramework
    +										Contact1
    +										
    +											3
    +											MC4zMzMzMzMzMzMzAA
    +										
    +										
    +										0
    +										10
    +										
    +											1
    +											22
    +										
    +										
    +											Helvetica
    +											22
    +											16
    +										
    +									
    +								
    +								{320, 80}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MCAwAA
    +								
    +								YES
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								274
    +								{{0, 80}, {320, 277}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MQA
    +								
    +								YES
    +								IBCocoaTouchFramework
    +								YES
    +								0
    +								YES
    +								44
    +								22
    +								22
    +							
    +							
    +								
    +								266
    +								
    +									
    +										
    +										257
    +										{{250, 0}, {70, 59}}
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Send
    +										
    +										IBCocoaTouchFramework
    +										NO
    +										0
    +										0
    +										NO
    +										NO
    +										
    +											3
    +											MC41AA
    +										
    +										
    +											NSImage
    +											chat_send_over.png
    +										
    +										
    +											NSImage
    +											chat_send_disabled.png
    +										
    +										
    +											NSImage
    +											chat_send_default.png
    +										
    +										
    +											2
    +											15
    +										
    +										
    +											Helvetica-Bold
    +											15
    +											16
    +										
    +									
    +									
    +										
    +										258
    +										{250, 59}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											chat_field.png
    +										
    +									
    +									
    +										
    +										258
    +										{{10, 10}, {230, 39}}
    +										
    +										
    +										
    +										_NS:9
    +										YES
    +										YES
    +										
    +											Enter your message here
    +										
    +										IBCocoaTouchFramework
    +										YES
    +										NO
    +										This is a message
    +										
    +											2
    +											IBCocoaTouchFramework
    +										
    +										
    +											1
    +											18
    +										
    +										
    +											Helvetica
    +											18
    +											16
    +										
    +									
    +								
    +								{{0, 357}, {320, 59}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +								IBCocoaTouchFramework
    +							
    +						
    +						{{0, 44}, {320, 416}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{160, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									chat_back_over.png
    +								
    +								
    +									NSImage
    +									chat_back_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								289
    +								{{160, 0}, {160, 44}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Edit
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									chat_edit_over.png
    +								
    +								
    +									NSImage
    +									chat_ok_default.png
    +								
    +								
    +									NSImage
    +									chat_edit_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				NO
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					11
    +				
    +				
    +					
    +						tableController
    +						
    +						
    +					
    +					32
    +				
    +				
    +					
    +						editButton
    +						
    +						
    +					
    +					35
    +				
    +				
    +					
    +						addressLabel
    +						
    +						
    +					
    +					43
    +				
    +				
    +					
    +						headerView
    +						
    +						
    +					
    +					45
    +				
    +				
    +					
    +						avatarImage
    +						
    +						
    +					
    +					44
    +				
    +				
    +					
    +						fieldBackgroundImage
    +						
    +						
    +					
    +					48
    +				
    +				
    +					
    +						footerView
    +						
    +						
    +					
    +					46
    +				
    +				
    +					
    +						sendButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						chatView
    +						
    +						
    +					
    +					54
    +				
    +				
    +					
    +						messageField
    +						
    +						
    +					
    +					57
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					30
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					31
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					12
    +				
    +				
    +					
    +						onEditClick:
    +						
    +						
    +						7
    +					
    +					13
    +				
    +				
    +					
    +						onSendClick:
    +						
    +						
    +						7
    +					
    +					25
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					33
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						6
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						7
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						toolsView
    +					
    +					
    +						9
    +						
    +						
    +						backButton
    +					
    +					
    +						10
    +						
    +						
    +						editButton
    +					
    +					
    +						29
    +						
    +						
    +						tableController
    +					
    +					
    +						47
    +						
    +						
    +						background
    +					
    +					
    +						49
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						chatView
    +					
    +					
    +						39
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						headerView
    +					
    +					
    +						40
    +						
    +						
    +						addressLabel
    +					
    +					
    +						41
    +						
    +						
    +						avatarImage
    +					
    +					
    +						42
    +						
    +						
    +						avatarShadowBackground
    +					
    +					
    +						8
    +						
    +						
    +						tableView
    +					
    +					
    +						14
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						footerView
    +					
    +					
    +						21
    +						
    +						
    +						fieldBackgroundImage
    +					
    +					
    +						15
    +						
    +						
    +						sendButton
    +					
    +					
    +						55
    +						
    +						
    +						messageField
    +					
    +				
    +			
    +			
    +				ChatRoomViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				ChatRoomTableViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +			
    +			
    +			
    +			
    +			
    +			57
    +		
    +		
    +			
    +				
    +					ChatRoomTableViewController
    +					UITableViewController
    +					
    +						IBProjectSource
    +						./Classes/ChatRoomTableViewController.h
    +					
    +				
    +				
    +					ChatRoomViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onBackClick:
    +							id
    +						
    +						
    +							onEditClick:
    +							id
    +						
    +						
    +							onMessageChange:
    +							id
    +						
    +						
    +							onSendClick:
    +							id
    +						
    +					
    +					
    +						UILabel
    +						UIImageView
    +						UIView
    +						UIToggleButton
    +						UIImageView
    +						UIView
    +						UIView
    +						UITextView
    +						UIButton
    +						ChatRoomTableViewController
    +					
    +					
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +						
    +							chatView
    +							UIView
    +						
    +						
    +							editButton
    +							UIToggleButton
    +						
    +						
    +							fieldBackgroundImage
    +							UIImageView
    +						
    +						
    +							footerView
    +							UIView
    +						
    +						
    +							headerView
    +							UIView
    +						
    +						
    +							messageField
    +							UITextView
    +						
    +						
    +							sendButton
    +							UIButton
    +						
    +						
    +							tableController
    +							ChatRoomTableViewController
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ChatRoomViewController.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{262, 214}
    +			{131, 131}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{500, 117}
    +			{320, 88}
    +			{140, 117}
    +			{140, 117}
    +			{140, 117}
    +			{5, 117}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/ChatViewController/1/ChatViewController.xib b/linphone.ldb/Resources/Classes/ChatViewController/1/ChatViewController.xib
    new file mode 100644
    index 000000000..5a413935c
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/ChatViewController/1/ChatViewController.xib
    @@ -0,0 +1,535 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUILabel
    +			IBUITableView
    +			IBUITableViewController
    +			IBUITextField
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{{160, 0}, {160, 44}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									New Discussion
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									chat_add_over.png
    +								
    +								
    +									NSImage
    +									chat_add_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								289
    +								{160, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Edit
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									chat_edit_over.png
    +								
    +								
    +									NSImage
    +									chat_ok_default.png
    +								
    +								
    +									NSImage
    +									chat_edit_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						274
    +						{{0, 74}, {320, 378}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						YES
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						1
    +						0
    +						YES
    +						44
    +						22
    +						22
    +					
    +					
    +						
    +						292
    +						{{24, 44}, {296, 30}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						
    +							Enter a address
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						1
    +						
    +							1
    +							17
    +						
    +						
    +							Helvetica
    +							17
    +							16
    +						
    +					
    +					
    +						
    +						292
    +						{{0, 44}, {24, 30}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						IBCocoaTouchFramework
    +						To:
    +						
    +							1
    +							MCAwIDAAA
    +						
    +						
    +						0
    +						10
    +						
    +						
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				_NS:9
    +				
    +					3
    +					MQA
    +					
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				NO
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					14
    +				
    +				
    +					
    +						tableController
    +						
    +						
    +					
    +					18
    +				
    +				
    +					
    +						editButton
    +						
    +						
    +					
    +					22
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					13
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					11
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					12
    +				
    +				
    +					
    +						onEditClick:
    +						
    +						
    +						7
    +					
    +					21
    +				
    +				
    +					
    +						onAddClick:
    +						
    +						
    +						7
    +					
    +					20
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					28
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +						tableController
    +					
    +					
    +						5
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						6
    +						
    +						
    +						tableView
    +					
    +					
    +						7
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						toolsBar
    +					
    +					
    +						9
    +						
    +						
    +						editButton
    +					
    +					
    +						10
    +						
    +						
    +						addButton
    +					
    +					
    +						23
    +						
    +						
    +						background
    +					
    +					
    +						25
    +						
    +						
    +						addressField
    +					
    +					
    +						26
    +						
    +						
    +					
    +				
    +			
    +			
    +				ChatViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				ChatTableViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			28
    +		
    +		
    +			
    +				
    +					ChatTableViewController
    +					UITableViewController
    +					
    +						IBProjectSource
    +						./Classes/ChatTableViewController.h
    +					
    +				
    +				
    +					ChatViewController
    +					UIViewController
    +					
    +						id
    +						id
    +					
    +					
    +						
    +							onAddClick:
    +							id
    +						
    +						
    +							onEditClick:
    +							id
    +						
    +					
    +					
    +						UITextField
    +						UIToggleButton
    +						ChatTableViewController
    +					
    +					
    +						
    +							addressField
    +							UITextField
    +						
    +						
    +							editButton
    +							UIToggleButton
    +						
    +						
    +							tableController
    +							ChatTableViewController
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ChatViewController.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{5, 117}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/ContactDetailsLabelViewController/1/ContactDetailsLabelViewController.xib b/linphone.ldb/Resources/Classes/ContactDetailsLabelViewController/1/ContactDetailsLabelViewController.xib
    new file mode 100644
    index 000000000..d31c015f8
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/ContactDetailsLabelViewController/1/ContactDetailsLabelViewController.xib
    @@ -0,0 +1,403 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUITableView
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						274
    +						{320, 460}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							background.png
    +						
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{160, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									contact_back_over.png
    +								
    +								
    +									NSImage
    +									contact_back_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						306
    +						{{0, 59}, {320, 401}}
    +						
    +						
    +						_NS:9
    +						
    +							10
    +							
    +								549453824
    +								{512, 1}
    +								
    +									
    +										
    +										
    +											
    +												TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA
    +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA
    +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI
    +AAgACAAIAAEAAQABAAE
    +											
    +										
    +									
    +								
    +								
    +									3
    +									MCAwAA
    +								
    +							
    +							groupTableViewBackgroundColor
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						YES
    +						NO
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						1
    +						2
    +						0
    +						YES
    +						44
    +						10
    +						10
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					12
    +				
    +				
    +					
    +						tableView
    +						
    +						
    +					
    +					15
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					13
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					14
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					11
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						5
    +						
    +						
    +						tableView
    +					
    +					
    +						6
    +						
    +						
    +							
    +							
    +						
    +						
    +						toolsBar
    +					
    +					
    +						8
    +						
    +						
    +						backButton
    +					
    +					
    +						10
    +						
    +						
    +						barBackground
    +					
    +					
    +						16
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				ContactDetailsLabelViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			16
    +		
    +		
    +			
    +				
    +					ContactDetailsLabelViewController
    +					UIViewController
    +					
    +						onBackClick:
    +						id
    +					
    +					
    +						onBackClick:
    +						
    +							onBackClick:
    +							id
    +						
    +					
    +					
    +						tableView
    +						UITableView
    +					
    +					
    +						tableView
    +						
    +							tableView
    +							UITableView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ContactDetailsLabelViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{640, 523}
    +			{320, 88}
    +			{320, 88}
    +			{5, 117}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/ContactDetailsViewController/1/ContactDetailsViewController.xib b/linphone.ldb/Resources/Classes/ContactDetailsViewController/1/ContactDetailsViewController.xib
    new file mode 100644
    index 000000000..437f20b94
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/ContactDetailsViewController/1/ContactDetailsViewController.xib
    @@ -0,0 +1,749 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUITableView
    +			IBUITableViewController
    +			IBUIView
    +			IBUIViewController
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{160, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									contact_back_over.png
    +								
    +								
    +									NSImage
    +									contact_back_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{160, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Cancel
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									contact_cancel_over.png
    +								
    +								
    +									NSImage
    +									contact_cancel_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								289
    +								{{160, 0}, {160, 44}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Edit
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									contact_edit_over.png
    +								
    +								
    +									NSImage
    +									contact_ok_default.png
    +								
    +								
    +									NSImage
    +									contact_edit_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						306
    +						{{0, 44}, {320, 416}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							10
    +							
    +								549453824
    +								{512, 1}
    +								
    +									
    +										
    +										
    +											
    +												TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA
    +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA
    +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI
    +AAgACAAIAAEAAQABAAE
    +											
    +										
    +									
    +								
    +								
    +									3
    +									MCAwAA
    +								
    +							
    +							groupTableViewBackgroundColor
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						YES
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						1
    +						2
    +						0
    +						YES
    +						YES
    +						44
    +						10
    +						10
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +			
    +				UIContactDetailsFooter
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +			
    +				UIContactDetailsHeader
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					3
    +				
    +				
    +					
    +						tableController
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						editButton
    +						
    +						
    +					
    +					31
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					50
    +				
    +				
    +					
    +						cancelButton
    +						
    +						
    +					
    +					51
    +				
    +				
    +					
    +						onEditClick:
    +						
    +						
    +						7
    +					
    +					30
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					10
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					29
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						contactDetailsDelegate
    +						
    +						
    +					
    +					53
    +				
    +				
    +					
    +						footerController
    +						
    +						
    +					
    +					59
    +				
    +				
    +					
    +						headerController
    +						
    +						
    +					
    +					60
    +				
    +				
    +					
    +						onCancelClick:
    +						
    +						
    +						7
    +					
    +					49
    +				
    +				
    +					
    +						contactDetailsDelegate
    +						
    +						
    +					
    +					61
    +				
    +				
    +					
    +						contactDetailsDelegate
    +						
    +						
    +					
    +					62
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						1
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						toolBar
    +					
    +					
    +						8
    +						
    +						
    +						editButton
    +					
    +					
    +						9
    +						
    +						
    +						backButton
    +					
    +					
    +						19
    +						
    +						
    +						tableView
    +					
    +					
    +						20
    +						
    +						
    +						
    +						tableController
    +					
    +					
    +						47
    +						
    +						
    +						cancelButton
    +					
    +					
    +						52
    +						
    +						
    +						barBackground
    +					
    +					
    +						57
    +						
    +						
    +						footerController
    +					
    +					
    +						58
    +						
    +						
    +						headerController
    +					
    +				
    +			
    +			
    +				ContactDetailsViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				ContactDetailsTableViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIContactDetailsFooter
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIContactDetailsHeader
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			62
    +		
    +		
    +			
    +				
    +					ContactDetailsTableViewController
    +					UITableViewController
    +					
    +						id
    +						UIContactDetailsFooter
    +						UIContactDetailsHeader
    +					
    +					
    +						
    +							contactDetailsDelegate
    +							id
    +						
    +						
    +							footerController
    +							UIContactDetailsFooter
    +						
    +						
    +							headerController
    +							UIContactDetailsHeader
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ContactDetailsTableViewController.h
    +					
    +				
    +				
    +					ContactDetailsViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onBackClick:
    +							id
    +						
    +						
    +							onCancelClick:
    +							id
    +						
    +						
    +							onEditClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIButton
    +						UIToggleButton
    +						ContactDetailsTableViewController
    +					
    +					
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							cancelButton
    +							UIButton
    +						
    +						
    +							editButton
    +							UIToggleButton
    +						
    +						
    +							tableController
    +							ContactDetailsTableViewController
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ContactDetailsViewController.h
    +					
    +				
    +				
    +					UIContactDetailsFooter
    +					UIViewController
    +					
    +						onRemoveClick:
    +						id
    +					
    +					
    +						onRemoveClick:
    +						
    +							onRemoveClick:
    +							id
    +						
    +					
    +					
    +						id
    +						UIButton
    +					
    +					
    +						
    +							contactDetailsDelegate
    +							id
    +						
    +						
    +							removeButton
    +							UIButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIContactDetailsFooter.h
    +					
    +				
    +				
    +					UIContactDetailsHeader
    +					UIViewController
    +					
    +						onAvatarClick:
    +						id
    +					
    +					
    +						onAvatarClick:
    +						
    +							onAvatarClick:
    +							id
    +						
    +					
    +					
    +						UILabel
    +						UIImageView
    +						id
    +						UIView
    +						UIView
    +						UITableView
    +					
    +					
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +						
    +							contactDetailsDelegate
    +							id
    +						
    +						
    +							editView
    +							UIView
    +						
    +						
    +							normalView
    +							UIView
    +						
    +						
    +							tableView
    +							UITableView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIContactDetailsHeader.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{5, 117}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/ContactsViewController/1/ContactsViewController.xib b/linphone.ldb/Resources/Classes/ContactsViewController/1/ContactsViewController.xib
    new file mode 100644
    index 000000000..f452a385d
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/ContactsViewController/1/ContactsViewController.xib
    @@ -0,0 +1,584 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUITableView
    +			IBUITableViewController
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								289
    +								{{120, 0}, {80, 44}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									All contacts filter
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									contacts_all_selected.png
    +								
    +								
    +								
    +									NSImage
    +									contacts_all_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								289
    +								{{200, 0}, {80, 44}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Linphone contacts filter
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									contacts_linphone_selected.png
    +								
    +								
    +								
    +									NSImage
    +									contacts_linphone_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{80, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add contact
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									contacts_add_over.png
    +								
    +								
    +									NSImage
    +									contacts_add_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{80, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									contacts_back_over.png
    +								
    +								
    +									NSImage
    +									contacts_back_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						274
    +						{{0, 44}, {320, 416}}
    +						
    +						
    +						
    +						_NS:10
    +						
    +							1
    +							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						YES
    +						NO
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						1
    +						0
    +						YES
    +						44
    +						22
    +						22
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				_NS:9
    +				
    +					3
    +					MQA
    +					
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				NO
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					16
    +				
    +				
    +					
    +						allButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						linphoneButton
    +						
    +						
    +					
    +					31
    +				
    +				
    +					
    +						tableController
    +						
    +						
    +					
    +					83
    +				
    +				
    +					
    +						tableView
    +						
    +						
    +					
    +					84
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					90
    +				
    +				
    +					
    +						addButton
    +						
    +						
    +					
    +					91
    +				
    +				
    +					
    +						onAllClick:
    +						
    +						
    +						7
    +					
    +					29
    +				
    +				
    +					
    +						onLinphoneClick:
    +						
    +						
    +						7
    +					
    +					47
    +				
    +				
    +					
    +						onAddContactClick:
    +						
    +						
    +						7
    +					
    +					86
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					81
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					82
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					80
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					89
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						2
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						toolBar
    +					
    +					
    +						4
    +						
    +						
    +						allButton
    +					
    +					
    +						5
    +						
    +						
    +						linphoneButton
    +					
    +					
    +						6
    +						
    +						
    +						addButton
    +					
    +					
    +						69
    +						
    +						
    +						tableView
    +					
    +					
    +						76
    +						
    +						
    +						
    +						tableController
    +					
    +					
    +						87
    +						
    +						
    +						backButton
    +					
    +					
    +						92
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				ContactsViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				ContactsTableViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			92
    +		
    +		
    +			
    +				
    +					ContactsTableViewController
    +					UITableViewController
    +					
    +						IBProjectSource
    +						./Classes/ContactsTableViewController.h
    +					
    +				
    +				
    +					ContactsViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onAddContactClick:
    +							id
    +						
    +						
    +							onAllClick:
    +							id
    +						
    +						
    +							onBackClick:
    +							id
    +						
    +						
    +							onLinphoneClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIButton
    +						UIButton
    +						UIButton
    +						ContactsTableViewController
    +						UITableView
    +					
    +					
    +						
    +							addButton
    +							UIButton
    +						
    +						
    +							allButton
    +							UIButton
    +						
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							linphoneButton
    +							UIButton
    +						
    +						
    +							tableController
    +							ContactsTableViewController
    +						
    +						
    +							tableView
    +							UITableView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ContactsViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{160, 88}
    +			{160, 88}
    +			{213, 117}
    +			{213, 117}
    +			{213, 117}
    +			{213, 117}
    +			{213, 117}
    +			{213, 117}
    +			{5, 117}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/DialerViewController/1/DialerViewController.xib b/linphone.ldb/Resources/Classes/DialerViewController/1/DialerViewController.xib
    new file mode 100644
    index 000000000..4e797df2a
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/DialerViewController/1/DialerViewController.xib
    @@ -0,0 +1,1798 @@
    +
    +
    +	
    +		784
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			YES
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUITextField
    +			IBUIView
    +		
    +		
    +			YES
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			YES
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					YES
    +					
    +						
    +						288
    +						
    +							YES
    +							
    +								
    +								292
    +								{320, 80}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									dialer_address_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{320, 60}
    +								
    +								
    +								
    +								
    +									3
    +									MSAwAA
    +								
    +								NO
    +								NO
    +								
    +									Enter a address
    +								
    +								IBCocoaTouchFramework
    +								0
    +								
    +								Enter sip address or phone number...
    +								
    +									3
    +									MQA
    +								
    +								15
    +								
    +									1
    +									3
    +									IBCocoaTouchFramework
    +								
    +								
    +									Helvetica
    +									Helvetica
    +									0
    +									36
    +								
    +								
    +									Helvetica
    +									36
    +									16
    +								
    +							
    +						
    +						{320, 80}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwAA
    +							
    +								2
    +							
    +						
    +						YES
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						288
    +						
    +							YES
    +							
    +								
    +								292
    +								{{0, 11}, {107, 54}}
    +								
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								
    +									1
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									numpad_one_over.png
    +								
    +								
    +									NSImage
    +									numpad_one_default.png
    +								
    +								
    +									Helvetica-Bold
    +									Helvetica
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 11}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									2
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_two_over.png
    +								
    +								
    +									NSImage
    +									numpad_two_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 11}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									3
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_three_over.png
    +								
    +								
    +									NSImage
    +									numpad_three_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 73}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									4
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_four_over.png
    +								
    +								
    +									NSImage
    +									numpad_four_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 73}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									5
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_five_over.png
    +								
    +								
    +									NSImage
    +									numpad_five_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 73}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									6
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_six_over.png
    +								
    +								
    +									NSImage
    +									numpad_six_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 135}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									7
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_seven_over.png
    +								
    +								
    +									NSImage
    +									numpad_seven_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 135}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									8
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_eight_over.png
    +								
    +								
    +									NSImage
    +									numpad_eight_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 135}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									9
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_nine_over.png
    +								
    +								
    +									NSImage
    +									numpad_nine_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 197}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									Star
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_star_over.png
    +								
    +								
    +									NSImage
    +									numpad_star_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 197}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									0
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_zero_over.png
    +								
    +								
    +									NSImage
    +									numpad_zero_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 197}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									Sharp
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_sharp_over.png
    +								
    +								
    +									NSImage
    +									numpad_sharp_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 58}, {320, 260}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						288
    +						
    +							YES
    +							
    +								
    +								292
    +								{106, 69}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add to contact
    +								
    +								IBCocoaTouchFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									add_contact_over.png
    +								
    +								
    +									NSImage
    +									add_contact_disabled.png
    +								
    +								
    +									NSImage
    +									add_contact_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{106, 69}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									back_over.png
    +								
    +								
    +									NSImage
    +									back_disabled.png
    +								
    +								
    +									NSImage
    +									back_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{106, 0}, {108, 69}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Call
    +								
    +								IBCocoaTouchFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									call_over.png
    +								
    +								
    +									NSImage
    +									call_disabled.png
    +								
    +								
    +									NSImage
    +									call_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{106, 0}, {108, 69}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add call
    +								
    +								IBCocoaTouchFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									add_call_over.png
    +								
    +								
    +									NSImage
    +									add_call_disabled.png
    +								
    +								
    +									NSImage
    +									add_call_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{106, 0}, {108, 69}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Transfer call
    +								
    +								IBCocoaTouchFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									transfer_call_over.png
    +								
    +								
    +									NSImage
    +									transfer_call_disabled.png
    +								
    +								
    +									NSImage
    +									transfer_call_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{214, 0}, {106, 69}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Backspace
    +								
    +								IBCocoaTouchFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									backspace_over.png
    +								
    +								
    +									NSImage
    +									backspace_disabled.png
    +								
    +								
    +									NSImage
    +									backspace_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 305}, {320, 69}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwAA
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				YES
    +				
    +					
    +						view
    +						
    +						
    +					
    +					176
    +				
    +				
    +					
    +						oneButton
    +						
    +						
    +					
    +					191
    +				
    +				
    +					
    +						twoButton
    +						
    +						
    +					
    +					192
    +				
    +				
    +					
    +						threeButton
    +						
    +						
    +					
    +					193
    +				
    +				
    +					
    +						fourButton
    +						
    +						
    +					
    +					194
    +				
    +				
    +					
    +						fiveButton
    +						
    +						
    +					
    +					195
    +				
    +				
    +					
    +						sixButton
    +						
    +						
    +					
    +					196
    +				
    +				
    +					
    +						sevenButton
    +						
    +						
    +					
    +					197
    +				
    +				
    +					
    +						zeroButton
    +						
    +						
    +					
    +					198
    +				
    +				
    +					
    +						starButton
    +						
    +						
    +					
    +					199
    +				
    +				
    +					
    +						nineButton
    +						
    +						
    +					
    +					200
    +				
    +				
    +					
    +						eraseButton
    +						
    +						
    +					
    +					202
    +				
    +				
    +					
    +						eightButton
    +						
    +						
    +					
    +					204
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					205
    +				
    +				
    +					
    +						addContactButton
    +						
    +						
    +					
    +					225
    +				
    +				
    +					
    +						addCallButton
    +						
    +						
    +					
    +					227
    +				
    +				
    +					
    +						callButton
    +						
    +						
    +					
    +					231
    +				
    +				
    +					
    +						sharpButton
    +						
    +						
    +					
    +					232
    +				
    +				
    +					
    +						transferButton
    +						
    +						
    +					
    +					253
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					254
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					190
    +				
    +				
    +					
    +						onAddressChange:
    +						
    +						
    +						18
    +					
    +					208
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					242
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					243
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					244
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					245
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					246
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					247
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					248
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					241
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					240
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					249
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					250
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					251
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					233
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					234
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					252
    +				
    +				
    +					
    +						onAddContactClick:
    +						
    +						
    +						7
    +					
    +					230
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					235
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					237
    +				
    +			
    +			
    +				
    +					YES
    +					
    +						0
    +						
    +							YES
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						171
    +						
    +						
    +							YES
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						178
    +						
    +						
    +							YES
    +							
    +							
    +						
    +						
    +						dialer
    +					
    +					
    +						4
    +						
    +						
    +						addressField
    +					
    +					
    +						179
    +						
    +						
    +						background
    +					
    +					
    +						180
    +						
    +						
    +							YES
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						pad
    +					
    +					
    +						41
    +						
    +						
    +						#
    +					
    +					
    +						40
    +						
    +						
    +						0
    +					
    +					
    +						39
    +						
    +						
    +						*
    +					
    +					
    +						36
    +						
    +						
    +						9
    +					
    +					
    +						35
    +						
    +						
    +						8
    +					
    +					
    +						33
    +						
    +						
    +						6
    +					
    +					
    +						34
    +						
    +						
    +						7
    +					
    +					
    +						31
    +						
    +						
    +						5
    +					
    +					
    +						30
    +						
    +						
    +						4
    +					
    +					
    +						29
    +						
    +						
    +						3
    +					
    +					
    +						37
    +						
    +						
    +						2
    +					
    +					
    +						38
    +						
    +						
    +						1
    +					
    +					
    +						182
    +						
    +						
    +							YES
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						toolBar
    +					
    +					
    +						183
    +						
    +						
    +						backButton
    +					
    +					
    +						185
    +						
    +						
    +						backspaceButton
    +					
    +					
    +						184
    +						
    +						
    +						addCallButton
    +					
    +					
    +						222
    +						
    +						
    +						addContactButton
    +					
    +					
    +						224
    +						
    +						
    +						callButton
    +					
    +					
    +						236
    +						
    +						
    +						transferButton
    +					
    +				
    +			
    +			
    +				YES
    +				
    +					YES
    +					-1.CustomClassName
    +					-1.IBPluginDependency
    +					-2.CustomClassName
    +					-2.IBPluginDependency
    +					171.IBPluginDependency
    +					178.IBPluginDependency
    +					179.IBPluginDependency
    +					180.IBPluginDependency
    +					182.IBPluginDependency
    +					183.IBPluginDependency
    +					183.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					184.CustomClassName
    +					184.IBPluginDependency
    +					184.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					185.CustomClassName
    +					185.IBPluginDependency
    +					185.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					222.IBPluginDependency
    +					222.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					224.CustomClassName
    +					224.IBPluginDependency
    +					224.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					236.CustomClassName
    +					236.IBPluginDependency
    +					236.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					29.CustomClassName
    +					29.IBPluginDependency
    +					29.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					30.CustomClassName
    +					30.IBPluginDependency
    +					30.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					31.CustomClassName
    +					31.IBPluginDependency
    +					31.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					33.CustomClassName
    +					33.IBPluginDependency
    +					33.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					34.CustomClassName
    +					34.IBPluginDependency
    +					34.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					35.CustomClassName
    +					35.IBPluginDependency
    +					35.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					36.CustomClassName
    +					36.IBPluginDependency
    +					36.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					37.CustomClassName
    +					37.IBPluginDependency
    +					37.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					38.CustomClassName
    +					38.IBPluginDependency
    +					38.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					39.CustomClassName
    +					39.IBPluginDependency
    +					39.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					4.CustomClassName
    +					4.IBPluginDependency
    +					40.CustomClassName
    +					40.IBPluginDependency
    +					40.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					41.CustomClassName
    +					41.IBPluginDependency
    +					41.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +				
    +				
    +					YES
    +					DialerViewController
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					UIResponder
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UICallButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIEraseButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UICallButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UITransferButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIAddressTextField
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					UIDigitButton
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +				
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			254
    +		
    +		
    +			
    +				YES
    +				
    +					DialerViewController
    +					UIViewController
    +					
    +						YES
    +						
    +							YES
    +							onAddContactClick:
    +							onAddressChange:
    +							onBackClick:
    +						
    +						
    +							YES
    +							id
    +							id
    +							id
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							onAddContactClick:
    +							onAddressChange:
    +							onBackClick:
    +						
    +						
    +							YES
    +							
    +								onAddContactClick:
    +								id
    +							
    +							
    +								onAddressChange:
    +								id
    +							
    +							
    +								onBackClick:
    +								id
    +							
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							addCallButton
    +							addContactButton
    +							addressField
    +							backButton
    +							callButton
    +							eightButton
    +							eraseButton
    +							fiveButton
    +							fourButton
    +							nineButton
    +							oneButton
    +							sevenButton
    +							sharpButton
    +							sixButton
    +							starButton
    +							threeButton
    +							transferButton
    +							twoButton
    +							zeroButton
    +						
    +						
    +							YES
    +							UICallButton
    +							UIButton
    +							UITextField
    +							UIButton
    +							UICallButton
    +							UIDigitButton
    +							UIEraseButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UIDigitButton
    +							UITransferButton
    +							UIDigitButton
    +							UIDigitButton
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							addCallButton
    +							addContactButton
    +							addressField
    +							backButton
    +							callButton
    +							eightButton
    +							eraseButton
    +							fiveButton
    +							fourButton
    +							nineButton
    +							oneButton
    +							sevenButton
    +							sharpButton
    +							sixButton
    +							starButton
    +							threeButton
    +							transferButton
    +							twoButton
    +							zeroButton
    +						
    +						
    +							YES
    +							
    +								addCallButton
    +								UICallButton
    +							
    +							
    +								addContactButton
    +								UIButton
    +							
    +							
    +								addressField
    +								UITextField
    +							
    +							
    +								backButton
    +								UIButton
    +							
    +							
    +								callButton
    +								UICallButton
    +							
    +							
    +								eightButton
    +								UIDigitButton
    +							
    +							
    +								eraseButton
    +								UIEraseButton
    +							
    +							
    +								fiveButton
    +								UIDigitButton
    +							
    +							
    +								fourButton
    +								UIDigitButton
    +							
    +							
    +								nineButton
    +								UIDigitButton
    +							
    +							
    +								oneButton
    +								UIDigitButton
    +							
    +							
    +								sevenButton
    +								UIDigitButton
    +							
    +							
    +								sharpButton
    +								UIDigitButton
    +							
    +							
    +								sixButton
    +								UIDigitButton
    +							
    +							
    +								starButton
    +								UIDigitButton
    +							
    +							
    +								threeButton
    +								UIDigitButton
    +							
    +							
    +								transferButton
    +								UITransferButton
    +							
    +							
    +								twoButton
    +								UIDigitButton
    +							
    +							
    +								zeroButton
    +								UIDigitButton
    +							
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/DialerViewController.h
    +					
    +				
    +				
    +					UIAddressTextField
    +					UITextField
    +					
    +						IBProjectSource
    +						./Classes/UIAddressTextField.h
    +					
    +				
    +				
    +					UICallButton
    +					UIButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICallButton.h
    +					
    +				
    +				
    +					UIDigitButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIDigitButton.h
    +					
    +				
    +				
    +					UIEraseButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIEraseButton.h
    +					
    +				
    +				
    +					UILongTouchButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UILongTouchButton.h
    +					
    +				
    +				
    +					UITransferButton
    +					UIButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UITransferButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    +			
    +		
    +		YES
    +		3
    +		
    +			YES
    +			
    +				YES
    +				add_call_default.png
    +				add_call_disabled.png
    +				add_call_over.png
    +				add_contact_default.png
    +				add_contact_disabled.png
    +				add_contact_over.png
    +				back_default.png
    +				back_disabled.png
    +				back_over.png
    +				backspace_default.png
    +				backspace_disabled.png
    +				backspace_over.png
    +				call_default.png
    +				call_disabled.png
    +				call_over.png
    +				dialer_address_background.png
    +				numpad_eight_default.png
    +				numpad_eight_over.png
    +				numpad_five_default.png
    +				numpad_five_over.png
    +				numpad_four_default.png
    +				numpad_four_over.png
    +				numpad_nine_default.png
    +				numpad_nine_over.png
    +				numpad_one_default.png
    +				numpad_one_over.png
    +				numpad_seven_default.png
    +				numpad_seven_over.png
    +				numpad_sharp_default.png
    +				numpad_sharp_over.png
    +				numpad_six_default.png
    +				numpad_six_over.png
    +				numpad_star_default.png
    +				numpad_star_over.png
    +				numpad_three_default.png
    +				numpad_three_over.png
    +				numpad_two_default.png
    +				numpad_two_over.png
    +				numpad_zero_default.png
    +				numpad_zero_over.png
    +				transfer_call_default.png
    +				transfer_call_disabled.png
    +				transfer_call_over.png
    +			
    +			
    +				YES
    +				{214, 138}
    +				{214, 138}
    +				{214, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{213, 138}
    +				{214, 138}
    +				{214, 138}
    +				{214, 138}
    +				{640, 135}
    +				{220, 113}
    +				{220, 113}
    +				{220, 113}
    +				{220, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{210, 113}
    +				{220, 113}
    +				{220, 113}
    +				{220, 113}
    +				{220, 113}
    +				{214, 138}
    +				{214, 138}
    +				{214, 138}
    +			
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/DialerViewController~ipad/1/DialerViewController~ipad.xib b/linphone.ldb/Resources/Classes/DialerViewController~ipad/1/DialerViewController~ipad.xib
    new file mode 100644
    index 000000000..526b49aca
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/DialerViewController~ipad/1/DialerViewController~ipad.xib
    @@ -0,0 +1,1571 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUITextField
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBIPadFramework
    +			
    +			
    +				IBFirstResponder
    +				IBIPadFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{768, 80}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBIPadFramework
    +								
    +									NSImage
    +									dialer_address_background.png
    +								
    +							
    +							
    +								
    +								290
    +								{700, 60}
    +								
    +								
    +								
    +								
    +									3
    +									MSAwAA
    +								
    +								NO
    +								NO
    +								
    +									Enter a address
    +								
    +								IBIPadFramework
    +								0
    +								
    +								Enter sip address or phone number...
    +								
    +									3
    +									MQA
    +								
    +								15
    +								
    +									1
    +									3
    +									IBCocoaTouchFramework
    +								
    +								
    +									Helvetica
    +									Helvetica
    +									0
    +									36
    +								
    +								
    +									Helvetica
    +									36
    +									16
    +								
    +							
    +							
    +								
    +								289
    +								{{698, 4}, {70, 51}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Backscape
    +								
    +								IBIPadFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								15
    +								15
    +								15
    +								15
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									backspace_over~ipad.png
    +								
    +								
    +									NSImage
    +									backspace_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									backspace_default~ipad.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +						
    +						{768, 80}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwAA
    +							
    +								2
    +							
    +						
    +						YES
    +						IBIPadFramework
    +					
    +					
    +						
    +						268
    +						
    +							
    +								
    +								292
    +								{{0, 11}, {107, 54}}
    +								
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								
    +									1
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_one_over.png
    +								
    +								
    +									NSImage
    +									numpad_one_default.png
    +								
    +								
    +									Helvetica-Bold
    +									Helvetica
    +									2
    +									15
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 11}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									2
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_two_over.png
    +								
    +								
    +									NSImage
    +									numpad_two_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 11}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									3
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_three_over.png
    +								
    +								
    +									NSImage
    +									numpad_three_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 73}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									4
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_four_over.png
    +								
    +								
    +									NSImage
    +									numpad_four_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 73}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									5
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_five_over.png
    +								
    +								
    +									NSImage
    +									numpad_five_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 73}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									6
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_six_over.png
    +								
    +								
    +									NSImage
    +									numpad_six_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 135}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									7
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_seven_over.png
    +								
    +								
    +									NSImage
    +									numpad_seven_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 135}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									8
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_eight_over.png
    +								
    +								
    +									NSImage
    +									numpad_eight_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 135}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									9
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_nine_over.png
    +								
    +								
    +									NSImage
    +									numpad_nine_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 197}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									Star
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_star_over.png
    +								
    +								
    +									NSImage
    +									numpad_star_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{107, 197}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									0
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_zero_over.png
    +								
    +								
    +									NSImage
    +									numpad_zero_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{213, 197}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								
    +									Sharp
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_sharp_over.png
    +								
    +								
    +									NSImage
    +									numpad_sharp_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 640}, {320, 260}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						IBIPadFramework
    +					
    +					
    +						
    +						265
    +						
    +							
    +								
    +								292
    +								{126, 85}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add to Contact
    +								
    +								IBIPadFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									add_contact_over~ipad.png
    +								
    +								
    +									NSImage
    +									add_contact_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									add_contact_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{126, 85}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									back_over~ipad.png
    +								
    +								
    +									NSImage
    +									back_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									back_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{126, 0}, {186, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Call
    +								
    +								IBIPadFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									call_over~ipad.png
    +								
    +								
    +									NSImage
    +									call_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									call_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{126, 0}, {186, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add call
    +								
    +								IBIPadFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									add_call_over~ipad.png
    +								
    +								
    +									NSImage
    +									add_call_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									add_call_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{126, 0}, {186, 85}}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Transfer Call
    +								
    +								IBIPadFramework
    +								NO
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									transfer_call_over~ipad.png
    +								
    +								
    +									NSImage
    +									transfer_call_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									transfer_call_default~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{456, 815}, {312, 85}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwAA
    +							
    +						
    +						IBIPadFramework
    +					
    +				
    +				{768, 900}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBIPadFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						addCallButton
    +						
    +						
    +					
    +					42
    +				
    +				
    +					
    +						addContactButton
    +						
    +						
    +					
    +					43
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					44
    +				
    +				
    +					
    +						callButton
    +						
    +						
    +					
    +					45
    +				
    +				
    +					
    +						eightButton
    +						
    +						
    +					
    +					47
    +				
    +				
    +					
    +						eraseButton
    +						
    +						
    +					
    +					48
    +				
    +				
    +					
    +						fiveButton
    +						
    +						
    +					
    +					49
    +				
    +				
    +					
    +						fourButton
    +						
    +						
    +					
    +					50
    +				
    +				
    +					
    +						nineButton
    +						
    +						
    +					
    +					51
    +				
    +				
    +					
    +						oneButton
    +						
    +						
    +					
    +					52
    +				
    +				
    +					
    +						sevenButton
    +						
    +						
    +					
    +					53
    +				
    +				
    +					
    +						sharpButton
    +						
    +						
    +					
    +					54
    +				
    +				
    +					
    +						sixButton
    +						
    +						
    +					
    +					55
    +				
    +				
    +					
    +						starButton
    +						
    +						
    +					
    +					56
    +				
    +				
    +					
    +						threeButton
    +						
    +						
    +					
    +					57
    +				
    +				
    +					
    +						transferButton
    +						
    +						
    +					
    +					58
    +				
    +				
    +					
    +						twoButton
    +						
    +						
    +					
    +					59
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					60
    +				
    +				
    +					
    +						zeroButton
    +						
    +						
    +					
    +					61
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					69
    +				
    +				
    +					
    +						onAddressChange:
    +						
    +						
    +						18
    +					
    +					65
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					35
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					29
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					36
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					37
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					32
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					31
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					30
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					33
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					34
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					41
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					40
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					68
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					38
    +				
    +				
    +					
    +						onAddContactClick:
    +						
    +						
    +						7
    +					
    +					63
    +				
    +				
    +					
    +						addressField
    +						
    +						
    +					
    +					39
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						2
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						toolBar
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						pad
    +					
    +					
    +						5
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						dialer
    +					
    +					
    +						6
    +						
    +						
    +						addressField
    +					
    +					
    +						7
    +						
    +						
    +						background
    +					
    +					
    +						8
    +						
    +						
    +						*
    +					
    +					
    +						9
    +						
    +						
    +						6
    +					
    +					
    +						10
    +						
    +						
    +						0
    +					
    +					
    +						11
    +						
    +						
    +						#
    +					
    +					
    +						12
    +						
    +						
    +						9
    +					
    +					
    +						13
    +						
    +						
    +						8
    +					
    +					
    +						14
    +						
    +						
    +						7
    +					
    +					
    +						15
    +						
    +						
    +						4
    +					
    +					
    +						16
    +						
    +						
    +						5
    +					
    +					
    +						17
    +						
    +						
    +						3
    +					
    +					
    +						18
    +						
    +						
    +						2
    +					
    +					
    +						19
    +						
    +						
    +						1
    +					
    +					
    +						20
    +						
    +						
    +						transferButton
    +					
    +					
    +						21
    +						
    +						
    +						callButton
    +					
    +					
    +						22
    +						
    +						
    +						backButton
    +					
    +					
    +						23
    +						
    +						
    +						addCallButton
    +					
    +					
    +						24
    +						
    +						
    +						addContactButton
    +					
    +					
    +						25
    +						
    +						
    +						backspaceButton
    +					
    +				
    +			
    +			
    +				DialerViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UITransferButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UICallButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UICallButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIEraseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIAddressTextField
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			69
    +		
    +		
    +			
    +				
    +					DialerViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onAddContactClick:
    +							id
    +						
    +						
    +							onAddressChange:
    +							id
    +						
    +						
    +							onBackClick:
    +							id
    +						
    +					
    +					
    +						UICallButton
    +						UIButton
    +						UITextField
    +						UIButton
    +						UICallButton
    +						UIDigitButton
    +						UIEraseButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UITransferButton
    +						UIDigitButton
    +						UIDigitButton
    +					
    +					
    +						
    +							addCallButton
    +							UICallButton
    +						
    +						
    +							addContactButton
    +							UIButton
    +						
    +						
    +							addressField
    +							UITextField
    +						
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							callButton
    +							UICallButton
    +						
    +						
    +							eightButton
    +							UIDigitButton
    +						
    +						
    +							eraseButton
    +							UIEraseButton
    +						
    +						
    +							fiveButton
    +							UIDigitButton
    +						
    +						
    +							fourButton
    +							UIDigitButton
    +						
    +						
    +							nineButton
    +							UIDigitButton
    +						
    +						
    +							oneButton
    +							UIDigitButton
    +						
    +						
    +							sevenButton
    +							UIDigitButton
    +						
    +						
    +							sharpButton
    +							UIDigitButton
    +						
    +						
    +							sixButton
    +							UIDigitButton
    +						
    +						
    +							starButton
    +							UIDigitButton
    +						
    +						
    +							threeButton
    +							UIDigitButton
    +						
    +						
    +							transferButton
    +							UITransferButton
    +						
    +						
    +							twoButton
    +							UIDigitButton
    +						
    +						
    +							zeroButton
    +							UIDigitButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/DialerViewController.h
    +					
    +				
    +				
    +					UIAddressTextField
    +					UITextField
    +					
    +						IBProjectSource
    +						./Classes/UIAddressTextField.h
    +					
    +				
    +				
    +					UICallButton
    +					UIButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICallButton.h
    +					
    +				
    +				
    +					UIDigitButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIDigitButton.h
    +					
    +				
    +				
    +					UIEraseButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIEraseButton.h
    +					
    +				
    +				
    +					UILongTouchButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UILongTouchButton.h
    +					
    +				
    +				
    +					UITransferButton
    +					UIButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UITransferButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBIPadFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{371, 170}
    +			{371, 170}
    +			{371, 170}
    +			{251, 170}
    +			{251, 170}
    +			{251, 170}
    +			{251, 170}
    +			{251, 170}
    +			{251, 170}
    +			{81, 43}
    +			{81, 43}
    +			{81, 43}
    +			{371, 170}
    +			{371, 170}
    +			{371, 170}
    +			{640, 135}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{371, 170}
    +			{371, 170}
    +			{371, 170}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/FirstLoginViewController/1/FirstLoginViewController.xib b/linphone.ldb/Resources/Classes/FirstLoginViewController/1/FirstLoginViewController.xib
    new file mode 100644
    index 000000000..80faa334c
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/FirstLoginViewController/1/FirstLoginViewController.xib
    @@ -0,0 +1,584 @@
    +
    +
    +	
    +		784
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			YES
    +			IBProxyObject
    +			IBUIActivityIndicatorView
    +			IBUIButton
    +			IBUITextField
    +			IBUIView
    +		
    +		
    +			YES
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			YES
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					YES
    +					
    +						
    +						292
    +						{{33, 312}, {255, 50}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Login
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Login
    +						
    +							3
    +							MC4zMzMzMzMzMzMzAA
    +						
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							button_background_over.png
    +						
    +						
    +							NSImage
    +							button_background_default.png
    +						
    +						
    +							2
    +							20
    +						
    +						
    +							Helvetica-Bold
    +							20
    +							16
    +						
    +					
    +					
    +						
    +						-2147483356
    +						{{60, 420}, {200, 37}}
    +						
    +						
    +						
    +						NO
    +						NO
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						
    +							3
    +							MQA
    +						
    +						
    +							1
    +							MC4xOTYwNzg0MyAwLjMwOTgwMzkzIDAuNTIxNTY4NjYAA
    +						
    +						
    +						
    +							Helvetica-Bold
    +							Helvetica
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +					
    +						
    +						292
    +						{{60, 170}, {200, 31}}
    +						
    +						
    +						
    +						NO
    +						NO
    +						
    +							Username
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Username
    +						
    +							3
    +							MAA
    +							
    +								2
    +							
    +						
    +						YES
    +						17
    +						
    +							1
    +							IBCocoaTouchFramework
    +						
    +						
    +							NSImage
    +							field_background.png
    +						
    +						
    +							1
    +							14
    +						
    +						
    +							Helvetica
    +							14
    +							16
    +						
    +					
    +					
    +						
    +						292
    +						{{60, 220}, {200, 31}}
    +						
    +						
    +						
    +						NO
    +						NO
    +						
    +							Password
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						YES
    +						17
    +						
    +							1
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							YES
    +							
    +								
    +								292
    +								{{142, 211}, {37, 37}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								NO
    +								IBCocoaTouchFramework
    +								NO
    +								YES
    +								0
    +							
    +						
    +						{320, 460}
    +						
    +						
    +						
    +						
    +							3
    +							MSAwLjY2AA
    +							
    +						
    +						NO
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				_NS:9
    +				
    +					3
    +					MCAwAA
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				YES
    +				
    +					
    +						view
    +						
    +						
    +					
    +					56
    +				
    +				
    +					
    +						siteButton
    +						
    +						
    +					
    +					58
    +				
    +				
    +					
    +						usernameField
    +						
    +						
    +					
    +					59
    +				
    +				
    +					
    +						passwordField
    +						
    +						
    +					
    +					60
    +				
    +				
    +					
    +						loginButton
    +						
    +						
    +					
    +					65
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					57
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					39
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					17
    +				
    +				
    +					
    +						onSiteClick:
    +						
    +						
    +						7
    +					
    +					63
    +				
    +				
    +					
    +						onLoginClick:
    +						
    +						
    +						7
    +					
    +					66
    +				
    +			
    +			
    +				
    +					YES
    +					
    +						0
    +						
    +							YES
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						55
    +						
    +						
    +							YES
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						35
    +						
    +						
    +						siteButton
    +					
    +					
    +						8
    +						
    +						
    +						passwordField
    +					
    +					
    +						6
    +						
    +						
    +						usernameField
    +					
    +					
    +						64
    +						
    +						
    +						loginButton
    +					
    +					
    +						31
    +						
    +						
    +							YES
    +							
    +						
    +						
    +						waitView
    +					
    +					
    +						32
    +						
    +						
    +						activityIndicator
    +					
    +				
    +			
    +			
    +				YES
    +				
    +					YES
    +					-1.CustomClassName
    +					-1.IBPluginDependency
    +					-2.CustomClassName
    +					-2.IBPluginDependency
    +					31.IBPluginDependency
    +					32.IBPluginDependency
    +					35.IBPluginDependency
    +					55.IBPluginDependency
    +					6.IBPluginDependency
    +					64.IBPluginDependency
    +					64.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					8.IBPluginDependency
    +				
    +				
    +					YES
    +					FirstLoginViewController
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					UIResponder
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			66
    +		
    +		
    +			
    +				YES
    +				
    +					FirstLoginViewController
    +					UIViewController
    +					
    +						YES
    +						
    +							YES
    +							onLoginClick:
    +							onSiteClick:
    +						
    +						
    +							YES
    +							id
    +							id
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							onLoginClick:
    +							onSiteClick:
    +						
    +						
    +							YES
    +							
    +								onLoginClick:
    +								id
    +							
    +							
    +								onSiteClick:
    +								id
    +							
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							loginButton
    +							passwordField
    +							siteButton
    +							usernameField
    +							waitView
    +						
    +						
    +							YES
    +							UIButton
    +							UITextField
    +							UIButton
    +							UITextField
    +							UIView
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							loginButton
    +							passwordField
    +							siteButton
    +							usernameField
    +							waitView
    +						
    +						
    +							YES
    +							
    +								loginButton
    +								UIButton
    +							
    +							
    +								passwordField
    +								UITextField
    +							
    +							
    +								siteButton
    +								UIButton
    +							
    +							
    +								usernameField
    +								UITextField
    +							
    +							
    +								waitView
    +								UIView
    +							
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/FirstLoginViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    +			
    +		
    +		YES
    +		3
    +		
    +			YES
    +			
    +				YES
    +				button_background_default.png
    +				button_background_over.png
    +				field_background.png
    +			
    +			
    +				YES
    +				{550, 101}
    +				{550, 101}
    +				{542, 88}
    +			
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/HistoryDetailsViewController/1/HistoryDetailsViewController.xib b/linphone.ldb/Resources/Classes/HistoryDetailsViewController/1/HistoryDetailsViewController.xib
    new file mode 100644
    index 000000000..75f2fc588
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/HistoryDetailsViewController/1/HistoryDetailsViewController.xib
    @@ -0,0 +1,940 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUILabel
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{160, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									history_details_back_over.png
    +								
    +								
    +									NSImage
    +									history_details_back_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								289
    +								{{160, 0}, {160, 44}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Add to contact
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									history_details_add_over.png
    +								
    +								
    +									NSImage
    +									history_details_add_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 58}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						295
    +						
    +							
    +								
    +								292
    +								{320, 100}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MQA
    +								
    +								
    +									1
    +									MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-13, -5}, {131, 107}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_shadow_small.png
    +								
    +							
    +							
    +								
    +								292
    +								{{20, 6}, {65, 65}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Contact's avatar
    +									
    +									
    +								
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_unknown_small.png
    +								
    +							
    +							
    +								
    +								290
    +								{{101, 37}, {199, 43}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Contact's name
    +								
    +								IBCocoaTouchFramework
    +								Contact1
    +								
    +									3
    +									MC4zMzMzMzMzMzMzAA
    +								
    +								
    +								0
    +								10
    +								
    +									1
    +									22
    +								
    +								
    +									Helvetica
    +									22
    +									16
    +								
    +							
    +						
    +						{{0, 44}, {320, 100}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						295
    +						
    +							
    +								
    +								292
    +								{49, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									
    +								
    +								IBCocoaTouchFramework
    +								Date:
    +								
    +								0
    +								10
    +								
    +									2
    +									17
    +								
    +								
    +									Helvetica-Bold
    +									17
    +									16
    +								
    +							
    +							
    +								
    +								290
    +								{{57, 0}, {223, 21}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Call date
    +									
    +								
    +								IBCocoaTouchFramework
    +								11/11/2011 at 10:01
    +								
    +								0
    +								10
    +								
    +									1
    +									17
    +								
    +								
    +									Helvetica
    +									17
    +									16
    +								
    +							
    +						
    +						{{20, 166}, {280, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						295
    +						
    +							
    +								
    +								292
    +								{80, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									
    +								
    +								IBCocoaTouchFramework
    +								Duration:
    +								
    +								0
    +								10
    +								
    +								
    +							
    +							
    +								
    +								290
    +								{{88, 0}, {192, 21}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Call duration
    +									
    +								
    +								IBCocoaTouchFramework
    +								9:05
    +								
    +								0
    +								10
    +								
    +								
    +							
    +						
    +						{{20, 195}, {280, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						295
    +						
    +							
    +								
    +								292
    +								{57, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									
    +								
    +								IBCocoaTouchFramework
    +								Type:
    +								
    +								0
    +								10
    +								
    +								
    +							
    +							
    +								
    +								290
    +								{{65, 0}, {215, 21}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Call type
    +									
    +								
    +								IBCocoaTouchFramework
    +								outgoing call
    +								
    +								0
    +								10
    +								
    +								
    +							
    +						
    +						{{20, 224}, {280, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						293
    +						{{33, 323}, {255, 50}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Callback
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						NO
    +						10
    +						10
    +						10
    +						10
    +						0102030405
    +						
    +						
    +						
    +							NSImage
    +							button_background_over.png
    +						
    +						
    +							NSImage
    +							button_background_default.png
    +						
    +						
    +							2
    +							20
    +						
    +						
    +							Helvetica-Bold
    +							20
    +							16
    +						
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					10
    +				
    +				
    +					
    +						addressButton
    +						
    +						
    +					
    +					41
    +				
    +				
    +					
    +						addressLabel
    +						
    +						
    +					
    +					42
    +				
    +				
    +					
    +						avatarImage
    +						
    +						
    +					
    +					43
    +				
    +				
    +					
    +						dateHeaderLabel
    +						
    +						
    +					
    +					44
    +				
    +				
    +					
    +						dateLabel
    +						
    +						
    +					
    +					45
    +				
    +				
    +					
    +						durationHeaderLabel
    +						
    +						
    +					
    +					46
    +				
    +				
    +					
    +						durationLabel
    +						
    +						
    +					
    +					47
    +				
    +				
    +					
    +						typeHeaderLabel
    +						
    +						
    +					
    +					48
    +				
    +				
    +					
    +						typeLabel
    +						
    +						
    +					
    +					49
    +				
    +				
    +					
    +						addContactButton
    +						
    +						
    +					
    +					52
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					11
    +				
    +				
    +					
    +						onAddressClick:
    +						
    +						
    +						7
    +					
    +					39
    +				
    +				
    +					
    +						onContactClick:
    +						
    +						
    +						7
    +					
    +					40
    +				
    +				
    +					
    +						onAddContactClick:
    +						
    +						
    +						7
    +					
    +					53
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						6
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						navigationBar
    +					
    +					
    +						8
    +						
    +						
    +						background
    +					
    +					
    +						9
    +						
    +						
    +						backButton
    +					
    +					
    +						29
    +						
    +						
    +							
    +							
    +						
    +						
    +						dateView
    +					
    +					
    +						27
    +						
    +						
    +						dateHeaderLabel
    +					
    +					
    +						28
    +						
    +						
    +						dateLabel
    +					
    +					
    +						30
    +						
    +						
    +							
    +							
    +						
    +						
    +						durationView
    +					
    +					
    +						31
    +						
    +						
    +						durationHeaderLabel
    +					
    +					
    +						32
    +						
    +						
    +						durationLabel
    +					
    +					
    +						33
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						headerView
    +					
    +					
    +						25
    +						
    +						
    +						addressLabel
    +					
    +					
    +						23
    +						
    +						
    +						avatarImage
    +					
    +					
    +						24
    +						
    +						
    +						avatarShadowBackground
    +					
    +					
    +						34
    +						
    +						
    +							
    +							
    +						
    +						
    +						typeView
    +					
    +					
    +						35
    +						
    +						
    +						typeLabel
    +					
    +					
    +						36
    +						
    +						
    +						typeHeaderLabel
    +					
    +					
    +						37
    +						
    +						
    +						addressButton
    +					
    +					
    +						38
    +						
    +						
    +						headerButton
    +					
    +					
    +						50
    +						
    +						
    +						addButton
    +					
    +				
    +			
    +			
    +				HistoryDetailsViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			53
    +		
    +		
    +			
    +				
    +					HistoryDetailsViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onAddContactClick:
    +							id
    +						
    +						
    +							onAddressClick:
    +							id
    +						
    +						
    +							onBackClick:
    +							id
    +						
    +						
    +							onContactClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIButton
    +						UILabel
    +						UIImageView
    +						UILabel
    +						UILabel
    +						UILabel
    +						UILabel
    +						UILabel
    +						UILabel
    +					
    +					
    +						
    +							addContactButton
    +							UIButton
    +						
    +						
    +							addressButton
    +							UIButton
    +						
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +						
    +							dateHeaderLabel
    +							UILabel
    +						
    +						
    +							dateLabel
    +							UILabel
    +						
    +						
    +							durationHeaderLabel
    +							UILabel
    +						
    +						
    +							durationLabel
    +							UILabel
    +						
    +						
    +							typeHeaderLabel
    +							UILabel
    +						
    +						
    +							typeLabel
    +							UILabel
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/HistoryDetailsViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{262, 214}
    +			{131, 131}
    +			{550, 101}
    +			{550, 101}
    +			{320, 88}
    +			{320, 88}
    +			{320, 88}
    +			{320, 117}
    +			{5, 117}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/HistoryViewController/1/HistoryViewController.xib b/linphone.ldb/Resources/Classes/HistoryViewController/1/HistoryViewController.xib
    new file mode 100644
    index 000000000..2e9e1f3ed
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/HistoryViewController/1/HistoryViewController.xib
    @@ -0,0 +1,594 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUITableView
    +			IBUITableViewController
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{80, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Delete all
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								Del
    +								
    +									3
    +									MQA
    +								
    +								
    +									1
    +									MCAwIDAAA
    +								
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								292
    +								{{80, 0}, {80, 44}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									All contacts filter
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									history_all_selected.png
    +								
    +								
    +								
    +									NSImage
    +									history_all_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{160, 0}, {80, 44}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Missed contacts filter
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									history_missed_selected.png
    +								
    +								
    +								
    +									NSImage
    +									history_missed_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								289
    +								{{240, 0}, {80, 44}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Edit
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								
    +								
    +									NSImage
    +									history_edit_over.png
    +								
    +								
    +									NSImage
    +									history_ok_default.png
    +								
    +								
    +									NSImage
    +									history_edit_default.png
    +								
    +								
    +								
    +							
    +						
    +						{320, 58}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MQA
    +							
    +								2
    +							
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						274
    +						{{0, 44}, {320, 416}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						YES
    +						0.0
    +						10
    +						0.0
    +						0.0
    +						1
    +						0
    +						YES
    +						44
    +						22
    +						22
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				_NS:9
    +				
    +					3
    +					MQA
    +					
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				NO
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					16
    +				
    +				
    +					
    +						tableController
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						allButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						missedButton
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						tableView
    +						
    +						
    +					
    +					31
    +				
    +				
    +					
    +						editButton
    +						
    +						
    +					
    +					33
    +				
    +				
    +					
    +						deleteButton
    +						
    +						
    +					
    +					36
    +				
    +				
    +					
    +						onAllClick:
    +						
    +						
    +						7
    +					
    +					29
    +				
    +				
    +					
    +						onMissedClick:
    +						
    +						
    +						7
    +					
    +					30
    +				
    +				
    +					
    +						onEditClick:
    +						
    +						
    +						7
    +					
    +					32
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					23
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					24
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					25
    +				
    +				
    +					
    +						onDeleteClick:
    +						
    +						
    +						7
    +					
    +					37
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						2
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						toolsBar
    +					
    +					
    +						4
    +						
    +						
    +						allButton
    +					
    +					
    +						5
    +						
    +						
    +						missedButton
    +					
    +					
    +						6
    +						
    +						
    +						editButton
    +					
    +					
    +						17
    +						
    +						
    +						tableView
    +					
    +					
    +						18
    +						
    +						
    +						
    +						tableController
    +					
    +					
    +						34
    +						
    +						
    +						background
    +					
    +					
    +						35
    +						
    +						
    +						delAllButton
    +					
    +				
    +			
    +			
    +				HistoryViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				HistoryTableViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			37
    +		
    +		
    +			
    +				
    +					HistoryTableViewController
    +					UITableViewController
    +					
    +						IBProjectSource
    +						./Classes/HistoryTableViewController.h
    +					
    +				
    +				
    +					HistoryViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onAllClick:
    +							id
    +						
    +						
    +							onDeleteClick:
    +							id
    +						
    +						
    +							onEditClick:
    +							id
    +						
    +						
    +							onMissedClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIButton
    +						UIToggleButton
    +						UIButton
    +						HistoryTableViewController
    +						UITableView
    +					
    +					
    +						
    +							allButton
    +							UIButton
    +						
    +						
    +							deleteButton
    +							UIButton
    +						
    +						
    +							editButton
    +							UIToggleButton
    +						
    +						
    +							missedButton
    +							UIButton
    +						
    +						
    +							tableController
    +							HistoryTableViewController
    +						
    +						
    +							tableView
    +							UITableView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/HistoryViewController.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{213, 117}
    +			{213, 117}
    +			{160, 88}
    +			{160, 88}
    +			{213, 117}
    +			{213, 117}
    +			{160, 88}
    +			{5, 117}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/InCallViewController/1/InCallViewController.xib b/linphone.ldb/Resources/Classes/InCallViewController/1/InCallViewController.xib
    new file mode 100644
    index 000000000..d849e1ca3
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/InCallViewController/1/InCallViewController.xib
    @@ -0,0 +1,597 @@
    +
    +
    +	
    +		784
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			YES
    +			IBProxyObject
    +			IBUIActivityIndicatorView
    +			IBUIButton
    +			IBUITableView
    +			IBUITableViewController
    +			IBUIView
    +		
    +		
    +			YES
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			YES
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					YES
    +					
    +						
    +						274
    +						
    +							YES
    +							
    +								
    +								301
    +								{{-1000, -1000}, {2000, 2000}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MAA
    +								
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								274
    +								{320, 460}
    +								
    +								
    +								
    +								_NS:196
    +								
    +									3
    +									MCAwAA
    +								
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								283
    +								{{220, 360}, {100, 100}}
    +								
    +								
    +								
    +								
    +								1
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								301
    +								{{141, 212}, {37, 37}}
    +								
    +								
    +								
    +								_NS:1030
    +								NO
    +								IBCocoaTouchFramework
    +								NO
    +								YES
    +								0
    +							
    +						
    +						{320, 460}
    +						
    +						
    +						
    +						_NS:196
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						274
    +						{{0, -10}, {320, 480}}
    +						
    +						
    +						
    +						_NS:418
    +						
    +						YES
    +						IBCocoaTouchFramework
    +						10
    +						25
    +						0.0
    +						0.0
    +						NO
    +						NO
    +						10
    +						25
    +						0.0
    +						0.0
    +						1
    +						1
    +						
    +						0
    +						NO
    +						YES
    +						44
    +						10
    +						10
    +					
    +					
    +						
    +						-2147483356
    +						{{0, 23}, {85, 33}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Switch camera
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						NO
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							switch_camera_over.png
    +						
    +						
    +							NSImage
    +							switch_camera_default.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				
    +				NO
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				
    +					1
    +					1
    +				
    +				IBCocoaTouchFramework
    +				NO
    +			
    +		
    +		
    +			
    +				YES
    +				
    +					
    +						view
    +						
    +						
    +					
    +					23
    +				
    +				
    +					
    +						videoGroup
    +						
    +						
    +					
    +					129
    +				
    +				
    +					
    +						videoView
    +						
    +						
    +					
    +					133
    +				
    +				
    +					
    +						videoWaitingForFirstImage
    +						
    +						
    +					
    +					145
    +				
    +				
    +					
    +						videoPreview
    +						
    +						
    +					
    +					130
    +				
    +				
    +					
    +						videoCameraSwitch
    +						
    +						
    +					
    +					161
    +				
    +				
    +					
    +						callTableController
    +						
    +						
    +					
    +					167
    +				
    +				
    +					
    +						callTableView
    +						
    +						
    +					
    +					109
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					169
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					168
    +				
    +				
    +					
    +						preview
    +						
    +						
    +					
    +					172
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					166
    +				
    +			
    +			
    +				
    +					YES
    +					
    +						0
    +						
    +							YES
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						9
    +						
    +						
    +							YES
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						126
    +						
    +						
    +							YES
    +							
    +							
    +							
    +							
    +						
    +						
    +						video
    +					
    +					
    +						132
    +						
    +						
    +							YES
    +						
    +						
    +						display
    +					
    +					
    +						144
    +						
    +						
    +						waitIndicator
    +					
    +					
    +						127
    +						
    +						
    +						preview
    +					
    +					
    +						160
    +						
    +						
    +						videoCameraSwitch
    +					
    +					
    +						162
    +						
    +						
    +							YES
    +						
    +						
    +						callTableController
    +					
    +					
    +						173
    +						
    +						
    +						background
    +					
    +					
    +						106
    +						
    +						
    +						callTableView
    +					
    +				
    +			
    +			
    +				YES
    +				
    +					YES
    +					-1.CustomClassName
    +					-1.IBPluginDependency
    +					-2.CustomClassName
    +					-2.IBPluginDependency
    +					106.IBPluginDependency
    +					126.IBPluginDependency
    +					127.IBPluginDependency
    +					132.IBPluginDependency
    +					144.IBPluginDependency
    +					160.CustomClassName
    +					160.IBPluginDependency
    +					160.IBUIButtonInspectorSelectedStateConfigurationMetadataKey
    +					162.CustomClassName
    +					162.IBPluginDependency
    +					173.IBPluginDependency
    +					9.IBPluginDependency
    +				
    +				
    +					YES
    +					InCallViewController
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					UIResponder
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					UICamSwitch
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					
    +					InCallTableViewController
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			
    +				YES
    +				
    +				
    +			
    +			
    +			173
    +		
    +		
    +			
    +				YES
    +				
    +					InCallTableViewController
    +					UITableViewController
    +					
    +						IBProjectSource
    +						./Classes/InCallTableViewController.h
    +					
    +				
    +				
    +					InCallViewController
    +					UIViewController
    +					
    +						YES
    +						
    +							YES
    +							callTableController
    +							callTableView
    +							testVideoView
    +							videoCameraSwitch
    +							videoGroup
    +							videoPreview
    +							videoView
    +							videoWaitingForFirstImage
    +						
    +						
    +							YES
    +							InCallTableViewController
    +							UITableView
    +							UIView
    +							UICamSwitch
    +							UIView
    +							UIView
    +							UIView
    +							UIActivityIndicatorView
    +						
    +					
    +					
    +						YES
    +						
    +							YES
    +							callTableController
    +							callTableView
    +							testVideoView
    +							videoCameraSwitch
    +							videoGroup
    +							videoPreview
    +							videoView
    +							videoWaitingForFirstImage
    +						
    +						
    +							YES
    +							
    +								callTableController
    +								InCallTableViewController
    +							
    +							
    +								callTableView
    +								UITableView
    +							
    +							
    +								testVideoView
    +								UIView
    +							
    +							
    +								videoCameraSwitch
    +								UICamSwitch
    +							
    +							
    +								videoGroup
    +								UIView
    +							
    +							
    +								videoPreview
    +								UIView
    +							
    +							
    +								videoView
    +								UIView
    +							
    +							
    +								videoWaitingForFirstImage
    +								UIActivityIndicatorView
    +							
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/InCallViewController.h
    +					
    +				
    +				
    +					UICamSwitch
    +					UIButton
    +					
    +						preview
    +						UIView
    +					
    +					
    +						preview
    +						
    +							preview
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICamSwitch.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    +			
    +		
    +		YES
    +		3
    +		
    +			YES
    +			
    +				YES
    +				switch_camera_default.png
    +				switch_camera_over.png
    +			
    +			
    +				YES
    +				{170, 65}
    +				{170, 65}
    +			
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/IncomingCallViewController/1/IncomingCallViewController.xib b/linphone.ldb/Resources/Classes/IncomingCallViewController/1/IncomingCallViewController.xib
    new file mode 100644
    index 000000000..2f8fa4b70
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/IncomingCallViewController/1/IncomingCallViewController.xib
    @@ -0,0 +1,4910 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUILabel
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						274
    +						{320, 460}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							background.png
    +						
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{{0, 49}, {320, 63}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									cell_call_first.png
    +								
    +							
    +							
    +								
    +								290
    +								{320, 68}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Incoming call
    +									
    +								
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									header_incoming.png
    +								
    +							
    +							
    +								
    +								292
    +								{{10, 53}, {300, 51}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								NO
    +								7
    +								NO
    +								
    +									Contact's name
    +								
    +								IBCocoaTouchFramework
    +								0102030405
    +								
    +									10
    +									
    +										549453824
    +										{256, 256}
    +										
    +											
    +												
    +												
    +													
    +														TU0AKgAEAAh1eIH/cHJ5/3Bzff9vcXX/bnB3/3Byef9vcXX/bG51/2xudf9ucHf/cHN9/2dqdP9ucXv/
    +cHJ5/3Bzff9qbHP/b3F1/3N1fP9sbnX/am13/2ptd/9sbnX/am13/3l7gf91d33/bG95/2xudf9sb3n/
    +bG95/2dqdP9qbXf/c3V8/3Bzff93eoP/bG51/3Bzff9sbnX/dXd9/2dqdP9qbHP/bG51/2psc/9sb3n/
    +am13/2ptd/9sb3n/bG51/3V3ff97fYP/YmVu/25xe/9sb3n/c3Z//2psc/9zdXz/cHN9/2dqcf9qbHP/
    +YmVu/2dqdP9nanH/am13/2xvef91eIH/Z2p0/25xe/91d33/bG51/25wd/92eHz/dXd9/29xdf9ucHf/
    +eHl9/2xudf9ucHf/bG95/3Bzff9sb3n/bnF7/3l7gf9zdn//c3Z//3N2f/91eIH/c3V8/3Byef9nanT/
    +bnB3/3Byef91d33/dHZ8/2psc/9sbnX/Z2p0/3N1fP9qbXf/cXN6/2psdf9wcnv/dnd9/25xe/9ucHf/
    +bnB3/2ptd/92eH//a254/3Fzev9sb3n/cHJ5/25wd/9ucHf/cHN9/25wd/9wcnn/dnh8/2xudf93eX//
    +dXd9/2dqdP9ucXv/dXd9/3N2f/9zdXz/Z2px/2xudf9ucXv/am13/3Bzff9zdXz/cHN9/2psc/9qbXf/
    +bG51/2Jlbv9qbXf/aGp0/2hqcP9rbnX/cnV//29yfP9ucXv/bnF7/25xe/9zdn//bXB1/2xvef9qbXb/
    +Zmly/2Jlbv9kZ3H/Zmhu/2Rncf9kZ3H/Zmlz/2Zpc/9kZ3H/bnB3/2Jlbv9nanT/ZGdx/2Zobv9zdXz/
    +ZGdx/2xvef9maXP/foCG/2xvef9ucXv/bG95/25wd/9wc33/b3F1/3l8hv91eIH/cHN9/3N1fP9sb3n/
    +d3qD/25wd/9zdn//cHJ5/3Bzff9wcnn/cHN9/3Bzff9ucXv/d3l//2ptd/9ucXv/c3Z//3N2f/9wcnn/
    +bnF7/3N2f/9ucHf/cHJ5/3Bzff9sb3n/cHJ5/25xe/9wc33/bnF7/3Byef9zdXz/bnB3/25xe/9zdXz/
    +d3l//3N2f/9sb3n/bnB3/3Bzff9sb3n/bnF7/25wd/9wcnn/cHJ5/3Byef9sbnX/c3V8/2psc/9zdXz/
    +dnh8/3Byef9kZ3H/am13/25xe/9sb3n/bnF7/25xe/9zdn//Z2p0/2xudf95e4H/Z2p0/2xvef9ucXv/
    +bG51/2psc/9ucXv/cHJ5/2psc/9qbXf/Z2px/2ptd/9qbHP/cHN9/2ptd/9sbnX/bG51/3V3ff9wcnn/
    +c3V8/3Byef9wc33/d3l//29xdf9zdXz/bnB3/2ptd/9qbXf/Z2px/2Zpc/9kZ3H/am13/2xvef9nanH/
    +cHJ5/29xdf9wcnn/Z2px/2xudf9zdXz/b3F1/25wd/9ucHf/bnB3/25wd/9+gIb/eHl9/3N1fP9wcnn/
    +cHJ5/3Byef9qbHP/bG51/3Z4fP9wcnn/dXiB/2xudf9ucXv/bG51/3Byef9nanH/ZGdx/2Zpc/9nanH/
    +Z2px/2Zobv9iZW7/Zmhu/2Zobv9qbXf/c3Z//1lcZf9maXP/Z2p0/3Byef9kZ3H/bG95/2xvef9qbHP/
    +am13/2Zpc/9qbXf/bG51/2xvef9wc33/dXd9/2dqdP9sb3n/dXd9/2dqdP9ucHf/c3V8/3V3ff9qbXf/
    +bnF7/3d5f/9ucHf/bG51/2xudf9wc33/bG51/2xudf91d33/bnB3/3Byef9wcnn/cHJ5/29xdf9ucHf/
    +Z2p0/3Byef9wc33/eXuB/3d5f/9sb3n/bnF7/2psc/9zdXz/b3F5/29yev9qbHX/bnB4/3d5f/9wcnn/
    +bnB3/2xudf9ucHf/dHZ7/25wd/9ucXn/bW92/3Byef9ucHf/bG51/3N1fP9ucXv/cHN9/3V3ff9qbHP/
    +dnh8/3V3ff9nanH/bnB3/3V3ff9ucHf/cHJ5/2Zpc/9qbXf/bG95/2xudf9sb3n/dXd9/3Z4fP9vcXX/
    +bnF7/25wd/9nanH/c3Z//3Bzff9wcnn/bnB3/3R2ff9ucXr/bnF7/3Bzff9sb3n/dXd9/25xev90dnz/
    +dXiA/3V4gP9wcnn/c3Z//3Bzff9ucXv/cHN9/3N2f/9zdn//bG95/3d6g/9sb3n/c3Z//3Bzff9ucHf/
    +d3l//2dqcf9qbXf/Z2p0/3d6g/9sbnX/am13/2Zpc/9nanT/am13/2Zobv9zdXz/bnB3/2dqdP9kZ3H/
    +ZGZs/3Byef9gY2z/Z2px/2Rncf9maG7/YGNs/2Zobv9kZ3H/Zmhu/2ptd/9gY2z/ZGdx/2Rncf9nanT/
    +ZGdx/2psc/9maXP/ZGdx/2Zobv9maG7/YmVu/2Zpc/9qbHP/am13/2psc/9ucXv/cHN9/2xudf9nanT/
    +bnF7/3V3ff9wcnn/bnB3/29xdf9zdXz/bG95/3Bzff9sb3n/c3Z//3N2f/91eIH/bnF7/3V4gf9ucXv/
    +dXiB/3l7gf9zdn//am13/3Byef9zdn//cHN9/3N2f/91eIH/e36H/3Bzff9wc33/foCG/3V4gf93eoP/
    +eXuB/3N2f/9ucXv/dXiB/3V3ff9vcXX/c3V8/25wd/91d33/c3V8/3d5f/9wc33/cHJ5/25wd/93eX//
    +c3Z//3Bzff9ucXv/cHN9/3V3ff9vcXX/c3V8/25wd/9vcXX/bnB3/2xvef9nanT/Zmhu/2ptd/9sb3n/
    +Zmlz/3Byef9tb3P/bnF7/2xudf9ucHf/dXd9/2xvef9sb3n/bG95/25xe/9ucXv/e36H/3l7gf9zdn//
    +c3Z//3V4gf93eoP/c3Z//3N2f/9+gYr/eXyG/4GDiv9wc33/d3qD/3N1fP93eX//cHJ5/3Bzff9wc33/
    +bnF7/25xe/9ucHf/b3F1/3Byef9ucXv/eXuB/36Ahv9nanT/c3Z//3Byef93eX//bW9z/3Z4fP91d33/
    +bnB3/25xe/9nanT/bG95/25wd/9ucXv/dXiB/3l8hv9ucHf/c3Z//3V4gf9ucHf/dXiB/3N2f/91d33/
    +am13/29xdf91d33/bnB3/2xvef9ucXv/d3qD/25xe/9wcnn/c3Z//25wd/9ucHf/cHJ5/3V3ff9vcXX/
    +cHJ5/2xudf9vcXX/bG51/3Byef9ucXj/aGty/21vc/9nanT/cHN9/25wd/9vcnr/a212/21wev91d33/
    +am13/2xudf9maXP/am13/3R2e/9tb3b/bnF6/2xudf9wcnn/am13/2xudf9ucXv/bG95/25xe/9wc33/
    +ZGdx/3Byef9ucHf/YmVu/2psc/9wc33/bnF7/2ptd/9maG7/bW9z/25wd/9sbnX/c3V8/3d5f/91d33/
    +b3F1/25xe/9ucXv/Z2p0/3V3ff9wc33/bnF7/21vdv9zdnz/cHJ5/25weP9zdXz/bnF7/3l7gf9xc3r/
    +d3mA/3d5f/9zdX3/b3F1/3N1fP9sbnX/bG51/25wd/9sbnX/cHJ5/2psc/92eHz/amxz/3Bzff9ucHf/
    +bW9z/3h5ff9nanH/bG51/2Jlbv91eIH/amxz/2Zpc/9iZW7/YmVu/2dqdP9maG7/c3Z//3N1fP9qbXf/
    +Z2p0/2dqdP91eIH/ZGdx/2xudf9nanT/am13/2ptd/9ucXv/bnF7/21vc/91eIH/Zmlz/25wd/9wcnn/
    +bnB3/25wd/9vcXX/cHJ5/21vc/9sbnX/bG95/2dqdP9sbnX/bG51/2xvef9sbnX/bnF7/25xe/9nanT/
    +bnF7/3Bzff91d33/cHN9/2ptd/9qbHP/bnF7/2Zpc/9qbXf/YmVu/2ptd/9qbHP/bG95/2Rncf9ucXv/
    +ZGdx/25xe/9zdXz/bG95/2Rncf9tb3P/bG95/25wd/91d33/dXiB/3t9g/9ucHf/c3V8/3t9g/9ucXv/
    +dXiB/3d5f/9wcnn/bnF7/3N2f/95e4H/cHN9/3V4gf9ucXv/d3qD/3V4gf93eX//c3Z//3N1fP9zdXz/
    +d3l//3Bzff9ucXv/bnF7/3N1fP9zdXz/bG51/2xvef9nanH/Z2px/2dqdP9qbHP/YmVu/2BjbP9sbnX/
    +bG51/2Rncf9sb3n/bG51/2ptd/9maXP/Z2px/25xe/9qbHP/Zmlz/2Zpc/9qbHP/Z2p0/3V4gf91d33/
    +cHN9/25wd/9sb3n/am13/2Zpc/9sb3n/dXd9/3Bzff91eIH/bW9z/25xe/9sbnX/c3V8/21vc/9sbnX/
    +cHN9/2ptd/9qbXf/bnF7/2ptd/9sbnX/bG51/3Byef93eX//ZGdx/2xvef9ucXv/dXd9/2xudf92eHz/
    +dXd9/25wd/9sbnX/amxz/2xvef9vcXX/bnB3/3Bzff93eoP/bG95/3Bzff9zdn//bG95/3N2f/9wc33/
    +dXiB/25xe/9zdXz/e32D/3Bzff9ucHf/bnF7/3V3ff9vcXX/b3F1/3N1fP9tb3P/bG51/3Byef9zdXz/
    +bW9z/3Byef9nanH/amxz/2psc/9ucHf/bnB3/2psc/9sbnX/amxz/3V3fP9ucHj/bW93/2psdf9vcnr/
    +dXd8/25wd/9qbXf/Z2p0/25xe/9zdoD/bXB6/3J0fP9wcnf/c3V8/29xdf9ucHf/bnF7/3Byef9zdXz/
    +cHN9/2ptd/91d33/eHl9/2psc/9zdXz/dnh8/3N1fP9ucXv/Zmhu/29xdf9ucHf/bnB3/25wd/92eHz/
    +cHJ5/2xudf9wcnn/bG95/2Rncf9wc33/bnF7/2ttdP9maXP/bnF5/2lsdf9laHL/am13/2ptd/9zdXz/
    +bm92/3R3fv91d33/bnB3/21vc/9zdXz/bW9z/3Byef9ucHf/bnB3/3N1fP9nanH/d3l//25wd/97fYP/
    +c3Z//3Bzff97fYP/bnF7/21vc/9maG7/eXuB/2ptd/9qbXf/ZGdx/2Zobv9nanT/Z2px/3N2f/9wcnn/
    +am13/2ptd/9qbXf/d3qD/2Rncf9qbXf/Z2p0/2xvef9qbXf/Z2p0/2ptd/9maXP/d3l//2Rncf9qbXf/
    +bnB3/2ptd/9qbXf/bG51/25xe/9tb3P/bnB3/25wd/9qbHP/bG51/2xudf9qbXf/bG51/3N1fP9zdXz/
    +bG51/3N1fP91d33/dXd9/25xe/9sbnX/bW9z/3Bzff9maXP/bG51/2Rncf9nanT/Z2px/2ptd/9nanT/
    +bnF7/2dqdP9wc33/cHJ5/2psc/9dYGr/bG51/2ptd/9sb3n/c3V8/2ptd/91eIH/bG51/2ptd/9zdn//
    +am13/25xe/9sb3n/Z2p0/2psc/9nanT/bG95/2xudf9ucXv/amxz/2xvef9sb3n/cHN9/2dqcf9maXP/
    +Zmlz/25xe/9sb3n/am13/2ptd/9nanT/d3l//25xe/9zdn//bnB3/25xe/9wc33/cHN9/25xe/9qbXf/
    +cHJ5/3Bzff9sb3n/cHN9/25wd/9wcnn/bnB3/29xdf94eX3/cHN9/25wd/9wc33/bnB3/25xe/97fYP/
    +dXiB/3V3ff9sb3n/c3V8/3Byef9sbnX/c3V8/3V3ff9ucXv/c3V8/2psc/9ucXv/am13/3N1fP9sbnX/
    +bG51/3V3ff9ucHf/cHJ5/3Byef9sb3n/bnB3/25wd/92eHz/gIKG/25wd/91d33/c3V8/3d5f/9ucHf/
    +dnh8/3Z4fP9ucHf/bG51/2xudf9sbnX/bG51/2ptd/9sb3n/dXiB/2Zpc/9sb3n/Zmlz/2Jlbv9qbXf/
    +Z2p0/2dqdP9iZW7/YGNs/2xvef9kZ3H/YGNs/2Zpc/9kZ3H/Zmhu/2Jlbv9qbXf/ZGdx/2Zpc/9qbXf/
    +bnF7/2xudf9sb3n/Zmlz/2ptd/9sbnX/am13/21wef9laHH/am13/2dqdP9zdXz/bW92/25weP9rbnj/
    +b3F6/3N2fv9ucXX/bG51/2dqcf9sb3n/b3J8/2xud/9ucXr/bW9z/25xe/9ucHf/bnB3/3Byef9ucHf/
    +dXd9/3N1fP9sbnX/cHJ5/3V3ff9kZ3H/am13/3N1fP9wcnn/bG95/2Jlbv9nanT/am13/2ptd/9qbXf/
    +d3l//25xe/9qbXf/bnF7/2ptd/9iZW7/am13/2ptd/9nanL/Z2ly/29xef9ucHf/amxz/3N1fP9wcnn/
    +cHN9/3Byef9ydX7/dXd9/29xdv9rbnj/cHJ5/25wd/9wc33/bnB3/25wd/9zdXz/amxz/3d5f/9wcnn/
    +d3l//29xdf9wcnn/eXuB/2xvef9vcXX/Z2px/3t9g/9sb3n/cHN9/2xvef9ucHf/cHJ5/25xe/9+f4P/
    +dXd9/3Byef9qbXf/bG51/35/g/9qbHP/cHJ5/2xvef91d33/bnB3/25xe/9zdn//bG95/3l7gf9maG7/
    +bnB3/2xvef9qbXf/am13/2psc/9qbXf/bG51/2psc/9sbnX/Zmlz/2Zpc/9nanH/Z2px/2Rncf9qbXf/
    +Zmlz/2Jlbv9nanT/bG95/2xvef9kZ3H/Zmhu/2Jlbv9nanT/YGNs/2Rncf9dYGr/ZGdx/2Rncf9qbXf/
    +ZGdx/2xvef9iZW7/Z2p0/2ptd/9maG7/XWBq/2psc/9nanT/am13/3N1fP9ucXv/eXyG/2ptd/9nanT/
    +dXd9/25wd/9zdXz/cHJ5/3Byef9vcXX/bnF7/3Bzff9wcnn/eXuB/3N1fP91eIH/dXiB/3l8hv9zdXz/
    +cHJ5/25xe/95e4H/d3qD/3N2f/9zdn//cHN9/3l7gf9zdXz/bnF7/25wd/9wc33/cHN9/3N2f/9sb3n/
    +bG95/3Byef9wc33/bG95/25xe/9ucXv/cHJ5/25wd/9ucHf/eXuB/3N2f/9ucHf/bG95/25wd/9wc33/
    +d3qD/3d5f/91d33/bG51/3Byef9sbnX/amxz/3N1fP94eX3/dXd9/3V4gf9ucHf/cHJ5/3Byef92eHz/
    +bG95/3Bzff93eoP/c3Z//3N2f/9zdXz/bnB3/25wd/9zdXz/eHl9/3+Bh/9ucHf/dnh8/3Byef93eX//
    +bnB3/3d6g/95e4H/bnB3/3Byef9sbnX/bnB3/2psc/9qbXf/am13/3l8hv9maXP/bnF7/2psc/9kZ3H/
    +bnF7/2xvef9ucXv/amxz/2ptd/91d33/bG51/2psc/9wc33/cHN9/2xudf9maXP/cHN9/2dqcf9nanT/
    +amxz/2dqdP9sbnX/am13/2Zpc/9sb3n/bG51/2xvef9sbnj/ZWhy/2dqdP9nanH/bnF7/2ttdf9rbnb/
    +a252/29xeP90dnz/am13/2ptd/9nanH/cHJ5/3N1fP9tcHj/bnF6/2dqdP9qbHP/Zmhu/2psc/9nanT/
    +amxz/2dqdP9qbXf/YGNs/2dqdP91d33/YmVu/2xudf9sb3n/am13/2xudf9iZW7/am13/2xvef9ucXv/
    +bG51/3d5f/9ucXv/am13/3Byef9ucHf/ZGdx/25xe/9sb3n/am13/2lsdP9wcnv/b3J7/21vd/9zdXz/
    +bnB3/3Bzff9rbXT/a254/25xe/9rbXX/bW9z/25wd/9tb3P/b3F1/2xvef9wcnn/c3V8/2ptd/93eX//
    +bnB3/3V4gf9ucXv/cHJ5/3d6g/9qbXf/bG51/2Jlbv91eIH/am13/25xe/9maXP/amxz/2ptd/9qbXf/
    +e32D/3N1fP9qbXf/bG51/2psc/91eIH/YGNs/2Zpc/9kZ3H/Z2p0/2Zpc/9nanH/bG95/2Rncf9zdXz/
    +YGNs/2Zpc/9nanT/amxz/2Zpc/9qbHP/bG95/2xudf9qbHP/bG51/2Zpc/9nanT/amxz/2ptd/9maXP/
    +cHN9/25xe/9maXP/am13/3Bzff91d33/bG95/2xvef9tb3P/dXd9/25wd/9ucHf/Zmlz/25wd/9tb3P/
    +c3V8/21vc/92eHz/bnB3/3h5ff94eX3/bG51/2dqcf9sb3n/bnF7/25xe/9zdXz/cHJ5/36Ahv9wc33/
    +c3V8/3l7gf9zdXz/bnF7/25xe/9sbnX/bG51/3N1fP9zdXz/b3F1/3N1fP9ucHf/c3V8/3Byef91d33/
    +b3F1/2xudf9sb3n/dnh8/3Z4fP9zdXz/cHN9/3Bzff94eX3/b3F1/3Bzff9qbHP/bnB3/2xvef9wc33/
    +ZGdx/2dqdP9nanT/am13/2ptd/9ucHf/cHJ5/3Byef9sbnX/bG51/3V3ff92eHz/amxz/25xe/9ucHf/
    +cHN9/3d5f/93eX//c3V8/21vc/9zdXz/bW9z/2xudf9zdn//d3qD/3V4gf95e4H/bnF7/3N2f/91eIH/
    +e32D/3Byef91eIH/eXuB/3d6g/93eoP/d3qD/3Bzff9wc33/bnF7/3V4gf+Bg4r/bG95/3V3ff9wc33/
    +eXuB/25xe/97fof/eXuB/3N1fP9zdn//bG95/3V4gf9wcnn/d3qD/3V4gf9/gYf/cHJ5/3d6g/9wc33/
    +bG95/3V4gf9zdn//dXiB/3N1fP9zdXz/eXyG/3V4gf9zdn//e32D/3l7gf9zdn//c3V8/3d6g/9ucHf/
    +bnF7/2xvef9wc33/bG95/25xe/9qbXf/cHJ5/25wd/9wcnn/cnR6/21vdv9sb3n/bnB3/3Bzff9tcHr/
    +cXN7/25wd/9vcXr/bnB6/2xudf9sbnX/Z2px/3V3ff9ydX7/b3J8/2tueP9rbXT/am13/2xudf9sbnX/
    +bG51/3Byef9zdXz/cHJ5/2RmbP9ucHf/dXd9/2Rncf9qbXf/bG95/2dqdP9sbnX/YmVu/2ptd/9qbXf/
    +bG95/2xudf91d33/bG95/2xudf9zdXz/bG51/2Zobv9wcnn/cHJ5/2xvef9rbnf/c3V+/3F0fv9sb3n/
    +c3V8/3N1fP9zdXz/bnB0/29xeP90dnz/bW94/3Byef9wc33/b3F1/25wd/9tb3P/cHJ5/3Byef9qbHP/
    +dXd9/2ptd/91d33/amxz/2xudf9zdXz/YmVu/25wd/9nanH/eXuB/25wd/9ucHf/bnB3/25wd/9wcnn/
    +b3F1/36Ahv91d33/bnB3/2xudf9tb3P/fn+D/2psc/9sbnX/bnB3/25xe/9sbnX/amxz/25xe/9nanT/
    +d3l//2Rncf9sbnX/bnB3/21vc/9nanH/b3F1/3Bzff9ucHf/bnB3/25xe/9sb3n/c3V8/3Byef91d33/
    +b3F1/3h5ff9zdXz/bG51/3Byef91d33/dXiB/3V4gf9wc33/cHN9/3N2f/9sb3n/bnF7/2dqdP9wcnn/
    +bW9z/3N1fP9sbnX/cHN9/2ptd/91d33/dXd9/2xudf9iZW7/am13/2ptd/9qbXf/bnF7/3Byef9zdn//
    +bnF7/25xe/9zdn//cHN9/25xe/9ucXv/bG51/2ptd/9sb3n/bnF7/2ptd/9sb3n/bnB3/25wd/9wcnn/
    +dXd9/2xudf9maXP/Z2p0/3Z4fP9zdXz/dXd9/3N1fP9ucHf/dnh8/2ptd/9ucXv/ZGdx/2psc/9maXP/
    +am13/2Jlbv9kZ3H/ZGdx/2Rncf9iZW7/Zmlz/2Zpc/9qbXf/ZGdx/2dqcf9sb3n/bnF7/2Rncf9qbXf/
    +amxz/25xe/9zdXz/dXd9/2xvef9sbnX/cHN9/21vc/9qbHP/dXd9/3V3ff91d33/eHl9/25wd/9vcXX/
    +bnB3/3Z4fP9ucHf/c3Z//3Z4fP91d33/cHJ5/3N1fP9ucHf/bnB3/25wd/91d33/f4KM/3Byef9zdn//
    +bnF7/3d5f/9sb3n/e32D/3h5ff9ucHf/cHN9/2ptd/9zdn//bG95/3Bzff9wcnn/e36H/25wd/9wc33/
    +bG95/2ptd/9zdn//dXiB/3V3ff9sb3n/bnB3/3d6g/9ucXv/bnB3/3N2f/9zdn//bnB3/2xudf9wcnn/
    +bW9z/29xdf9ucHf/bnB3/2xvef9wcnn/cHN9/3Bzff9wcnn/c3Z//3N2f/9xc3r/cHJ5/3N2f/93eoP/
    +cHN9/3h6gP9zdXr/d3l//3h7hP9zdn//cHN9/2dqdP93eoL/dnmB/3N2fv9wcnr/bnB3/25wd/9vcXX/
    +cHJ5/25wd/91d33/dXd9/3N1fP9maG7/bnB3/3l7gf9maG7/bG51/2ptd/9sbnX/amxz/2Jlbv9sbnX/
    +cHN9/2ptd/9nanH/c3V8/2dqdP9nanH/Zmlz/2Zobv9ZXGX/ZGdx/2Zpc/9iZW7/YmVt/2xud/9sb3f/
    +a210/29yef9wcnn/dnh8/29xdf9tcHr/bnF7/2Zpcv9naXD/Z2pz/2Jlbv9kZmz/Zmhu/2dqdP9nanT/
    +ZGdx/25wd/9maXP/c3V8/2psc/9maXP/cHJ5/2Jlbv9wcnn/bnF7/3+Bh/9zdn//dXiB/3N1fP9wc33/
    +cHN9/2xvef97fYP/cHN9/2xvef9sb3n/cHJ5/3+Bh/9sb3n/cHN9/3Byef9zdn//c3V8/3Byef9zdn//
    +bG95/3t+h/9sb3n/dXiB/3d6g/9wcnn/am13/3Byef9wc33/cHJ5/25xe/9zdn//cHJ5/3l7gf91eIH/
    +eXyG/3d6g/95fIb/d3qD/3Bzff91eIH/d3l//3l8hv91d33/cHN9/2xvef9wc33/am13/3Byef9sbnX/
    +cHJ5/29xdf91d33/bG95/3Bzff9ucHf/d3qD/3h5ff9sbnX/Zmlz/2xvef9wcnn/cHJ5/3Byef91d33/
    +dXiB/3d5f/9wc33/e36H/3l7gf9wc33/c3Z//25wd/9wc33/d3qD/3Bzff9wcnn/cHN9/25xe/9wc33/
    +c3V8/3h5ff9vcXX/amxz/2psc/92eHz/cHJ5/3Bzff9ucXv/bG51/3V4gf9ucXv/c3V8/2dqcf9sbnX/
    +cHJ5/3N1fP9qbHP/bG51/29xdf9zdXz/bW9z/2xudf9wcnn/cHJ5/2xudf9sb3n/c3V8/3Z4fP9sb3n/
    +cHN9/25xe/9zdn//dXd9/3d5f/9wc33/bG95/3N2f/9ucXv/bnB3/3d5f/95e4H/d3l//3d5f/9sb3n/
    +cHJ5/29xdf92eHz/bnB3/3N1fP92eHz/dXd9/3N1fP9wcnn/b3F1/2xudf9wc33/dXd9/4CChv9tb3P/
    +bnF7/2xudf91d33/bW9z/3d5f/92eHz/bW9z/2xudf9nanH/cHN9/2xvef9wcnn/bnB3/3d5f/9ucHf/
    +cHN9/2xvef9sb3n/dXd9/3N2f/91d33/bnB3/25wd/95e4H/bG95/25wd/9wc33/dnh8/2xudf9qbHP/
    +bnB3/21vc/9sbnX/bG95/2ptd/9ucHf/bnB3/25wd/9wcnn/bW9z/3N1fP9xc3r/a253/2psc/9nanT/
    +bnF7/2dqdP9vcnz/aWx2/29xev9sb3n/amxz/2xudf9iZW7/cHN9/3R2fP9xdH3/bW93/2hrcv9sb3n/
    +bG51/2xvef9sbnX/dXd9/3V3ff9wcnn/amxz/2xudf93eX//Z2px/2ptd/9qbXf/am13/2xvef9maG7/
    +bW9z/25wd/9wcnn/b3F1/3N1fP9sbnX/bG51/2xvef9wcnn/Zmhu/2xvef9qbXf/Zmlz/2Vocv9sb3n/
    +cXR7/2xvef9zdXz/c3V8/3V3ff9ucHT/bnB1/3R2fP9sb3j/b3F2/21vdf9tb3P/bG51/25wd/9zdXz/
    +c3V8/2psc/93eX//am13/3d5f/9sbnX/am13/3d5f/9sbnX/bG51/2ptd/97fYP/dXd9/3Byef9vcXX/
    +cHJ5/2xvef9ucHf/eXuB/2xvef9qbXf/am13/2xudf9+gIb/amxz/3Byef9ucHf/cHJ5/25wd/9ucHf/
    +bnB3/2Zpc/91d33/Z2px/3N2f/9wcnn/bnB3/2psc/9sb3n/cHN9/3N1fP9zdn//dXiB/3Byef95fIb/
    +dXiB/3d6g/93eoP/e36H/3l8hv9wc33/dXiB/3l7gf9+gYr/foCG/3d6g/93eoP/d3qD/3V3ff93eoP/
    +cHN9/3d6g/91eIH/e32D/3Bzff9zdn//bnB3/3l7gf94eX3/c3Z//2dqdP9zdn//c3Z//3N2f/9ucHf/
    +d3l//3l7gf97fYP/d3qD/3+CjP97fof/eXuB/3l7gf91d33/dXiB/3l7gf93eoP/cHJ5/3Bzff9ucXv/
    +c3Z//25xe/97fYP/c3V8/2xvef9sb3n/d3l//3N2f/9wc33/cHJ5/2xvef9ucXv/am13/3Byef9sbnX/
    +bW9z/25xe/9ucXv/ZGdx/2dqdP9qbHP/cHJ5/2dqcf9maG7/bG95/2dqdP9kZ3H/ZGdx/2ptd/9wc33/
    +Z2p0/2ptd/9nanH/bG95/3N1fP9wc33/bG95/2xudf9zdXz/am13/2dqdP9ucXv/c3V8/3V3ff91d33/
    +bG51/25xe/9sbnX/bG95/2ptd/9ucXv/bnF7/3V3ff92eHz/cHJ5/2xudf9tb3P/c3V8/3d5f/+Agob/
    +bW9z/2xvef9sb3n/eHl9/2xudf93eoP/dXd9/2ptd/9qbXf/Zmlz/3N1fP9wcnn/c3Z//3Bzff97fof/
    +cHJ5/3N2f/9sb3n/bG51/3V3ff9zdXz/c3V8/25wd/9ucHf/dXiB/25xe/9sb3n/cHN9/3N2f/9tb3P/
    +bG51/3N1fP9sb3n/cHN9/3Bzff9sb3n/bnB3/25xe/9ucHf/cHJ5/21vc/91d33/c3V6/21wef9ucHf/
    +bnB3/3N1fP9ucHf/cXN7/2xud/9wcnn/dHZ9/25wd/9ucHf/Z2px/3V3ff90dnv/cXR7/25wd/9lZ3D/
    +amxz/2xudf9qbXf/am13/3Bzff9ucXv/bnF7/2Zpc/9sbnX/c3V8/2Rncf9maXP/Zmlz/2dqcf9maXP/
    +XWBq/2dqcf9nanT/Z2p0/2Zpc/9sb3n/Z2px/2dqcf9qbXf/am13/2Jlbv9qbXf/bG51/2Vocf9oa3T/
    +b3J5/3J1f/9tcHr/dHeA/3V4gf97fYP/dXd9/3Z4f/95e4H/bG93/21vdv9tb3b/bG51/2ptd/9tb3P/
    +dXd9/3Byef9sbnX/d3l//2xudf92eHz/bG51/2xudf93eX//bG51/2xvef9sb3n/d3qD/3N2f/9ucXv/
    +bG95/3Byef9ucHf/bnB3/3d5f/9ucHf/bG51/2ptd/9ucHf/gYOK/2ptd/9zdn//cHJ5/3N2f/9wcnn/
    +bnB3/2xvef9qbXf/eXuB/2dqcf95e4H/dXiB/3N2f/9wc33/dXd9/3l7gf91d33/dXd9/3d6g/91d33/
    +fX6B/3t9g/9/gYf/foCG/36Ahv97fYP/eHl9/3l7gf9+f4P/gYOK/36Ahv95e4H/d3qD/3N2f/91d33/
    +d3qD/3Bzff9wc33/cHN9/3l7gf9zdn//dXiB/3N1fP9/gYf/e36H/3V4gf9sb3n/c3Z//3Bzff9wc33/
    +bnF7/3Z4fP9zdXz/dXd9/25xe/93eX//dnh8/3V3ff94eX3/bnB3/25wd/91d33/cHJ5/25wd/9ucHf/
    +bnB3/3N1fP9wcnn/dnh8/29xdf9qbHP/bG51/3Z4fP9wcnn/c3V8/25wd/9qbXf/bnF7/25wd/9zdn//
    +am13/25wd/9zdXz/dXd9/2ptd/9vcXX/bG51/3N1fP9sbnX/am13/3N1fP9ucXv/bG51/2xudf9wcnn/
    +eHl9/2ptd/9zdXz/c3V8/3V4gf93eoP/eXuB/3l7gf9zdXz/e32D/3V4gf9zdXz/d3qD/3t9g/9+gIb/
    +foGK/3N2f/97fYP/dXiB/3d6g/9wc33/dXiB/3N2f/91eIH/c3Z//3Bzff9ucHf/bnB3/3N1fP92eHz/
    +gIKG/2xvef9ucHf/bnB3/3Z4fP9qbXf/c3Z//3N1fP9qbHP/am13/2BjbP9ucXv/Z2p0/25xe/9wc33/
    +dXiB/2xudf9sb3n/bG95/2ptd/9wc33/cHN9/3N1fP9tb3P/am13/3V3ff9qbXf/Z2px/2xvef9ucXv/
    +amxz/2Zpc/9sb3n/bG95/25xe/9sb3n/bG51/2xudf9qbXf/Zmlz/2Zpc/9maG7/am13/2tueP9nanT/
    +Zmlz/2Zpc/9nanT/Z2lv/2ptd/9maXL/a252/2xvef9qbHP/am13/2Rncf9sb3n/b3J8/3Bze/9sbnT/
    +Z2lw/2xudf9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9qbHP/bG95/3l7gf9qbXf/cHJ5/3d6g/9zdn//
    +c3Z//2ptd/9wc33/dXiB/3d6g/9wcnn/d3qD/3Bzff9wcnn/c3Z//3Bzff9maXP/bnF7/25xe/9sb3n/
    +bG95/3N2f/9xdH7/am12/25wd/9ucXv/dXd9/2xudf9tb3b/cnV8/21veP9vcXj/bnB3/25wd/9wcnn/
    +bW9z/3N1fP9zdXz/bG51/3d5f/9tb3P/dXd9/21vc/9sbnX/dXd9/2dqdP9maXP/Z2p0/3d5f/9zdXz/
    +bnB3/2xudf91d33/bG95/2ptd/93eoP/c3Z//25xe/9sb3n/bnB3/4GDiv9qbXf/bG95/25wd/9ucXv/
    +cHJ5/25xe/9ucHf/Z2px/3Z4fP9lZmr/c3V8/25wd/9tb3P/Z2p0/2dqcf9sb3n/amxz/2psc/9maXP/
    +YmVu/2xvef9qbXf/bG95/2xvef91d33/bnF7/2xudf9sbnX/c3V8/3V3ff91d33/bG95/2xvef9qbXf/
    +am13/2xvef9qbHP/cHJ5/2xudf91d33/bG51/3N1fP9vcXX/e32D/3d6g/9wc33/Z2p0/3Bzff91d33/
    +c3V8/25wd/9zdn//d3l//3d5f/91d33/dXiB/3d5f/93eX//eXuB/25xe/9wc33/dXiB/3V4gf9zdn//
    +d3qD/35/g/97fYP/dXiB/3t+h/9zdn//bnF7/3Byef93eX//cHN9/3N2f/9wc33/bnB3/3Bzff9qbXf/
    +c3V8/2dqcf9ucHf/c3V8/3N1fP9sbnX/bG51/2xudf9wc33/bG95/2ptd/9zdXz/c3V8/2psc/9sbnX/
    +bnF7/3Z4fP9sbnX/bG51/2psc/9ucXv/c3V8/3N1fP9wcnn/bG51/3V3ff9sbnX/Z2p0/3Byef9wc33/
    +dnh8/3d5f/9ucHf/c3Z//2xvef9zdXz/bG95/25xe/9ucHf/c3Z//3N2f/9wc33/bnB3/25wd/9zdn//
    +eXuB/4GDiv9ucHf/bnF7/3Bzff95e4H/cHN9/3d6g/93eoP/cHJ5/3N2f/9maXP/dXd9/3Bzff91d33/
    +c3Z//3l8hv9ucHf/cHJ5/25xe/9ucHf/dXd9/3V3ff92eHz/b3F1/25wd/91d33/bG95/2xvef91eIH/
    +dXiB/25xe/9sb3n/c3Z//3Bzff9wc33/cHN9/2xvef9zdXz/cHJ5/25wd/9wcnn/b3F1/3N1fP9zdXr/
    +bW92/2xudf9tb3P/cHJ5/2xudv9tb3f/aWx1/25xef9ucXv/Zmhu/2dqdP9kZ3H/bG95/2xvef9vcXr/
    +a252/2Vobv9sbnX/cHJ5/2xudf9zdXz/dXd9/2xvef9sb3n/Zmlz/2ptd/9zdXz/YmVu/2psc/91d33/
    +cHN9/25wd/9nanH/bnB3/25xe/91eIH/bG95/3V3ff9sb3n/bnB3/3V4gf9ucXv/am13/25wd/9ucHf/
    +bG95/29xeP9zdn7/dHd//21vdv9wcnn/cHJ5/3V3ff9qbXf/cHJ6/3d6g/9wc33/bnF6/3F0fv9ucXv/
    +bnF7/2xudf9zdXz/cHJ5/2ptd/9zdXz/bG51/3V3ff9sbnX/b3F1/3d5f/9sbnX/amxz/29xdf92eHz/
    +cHJ5/3Byef9ucHf/dXd9/2ptd/9maXP/c3Z//25xe/9sb3n/Zmlz/2psc/9/gYf/am13/2ptd/9qbHP/
    +am13/21vc/9sbnX/bG51/2psc/93eX//Zmlz/3Bzff9ucXv/bnB3/2xudf9sbnX/bnB3/2xudf9sb3n/
    +bnB3/2psc/9zdXz/bnB3/3N1fP9ucHf/eHl9/3Bzff9wcnn/cHN9/3d6g/95fIb/e32D/3V4gf93eoP/
    +cHN9/2xvef9wc33/bG95/3V3ff9ucHf/dXd9/25wd/91eIH/bnB3/3l8hv93eX//c3V8/2psc/9zdXz/
    +cHJ5/3N1fP9ucHf/c3V8/3N1fP92eHz/cHN9/3V3ff91d33/dXd9/3d5f/9qbHP/bnB3/3V3ff9zdXz/
    +b3F1/25wd/91d33/cHJ5/25xe/93eX//bG51/2psc/9sbnX/eHl9/3Byef91d33/bnF7/2xudf91eIH/
    +cHN9/3V4gf9kZ3H/bnB3/25xe/93eoP/c3V8/3N1fP9zdXz/eXuB/3N2f/9wcnn/eXuB/3t9g/9ucXv/
    +cHJ5/3V4gf93eX//bnB3/3Byef9wcnn/d3l//3Bzff9zdn//c3V8/3Byef91d33/cHJ5/25wd/9zdXz/
    +cHN9/3N1fP91d33/bG95/3N1fP9ucHf/c3V8/25wd/9wcnn/bnB3/3N2f/91eIH/c3Z//2xvef9ucXv/
    +c3Z//3V4gf+DhYz/dXd9/3V3ff97fYP/f4GH/3t9g/9/gYf/hYeN/3t9g/95fIb/c3Z//36Biv9+gIb/
    +foCG/31+gf+Bg4r/dnh8/3l7gf97fYP/dnh8/3t9g/97fYP/eXuB/3Bzff9ucXv/d3l//25wd/9qbHP/
    +cHN9/3Bzff9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2dqdP9nanH/Z2p0/2Zpc/9kZ3H/Z2p0/2psc/9nanT/
    +bG95/2Nmbv9gY2z/Zmhu/2ptd/9oa3P/bG52/2lsdv9sb3j/bnF7/21vc/9tb3P/Z2px/3Byef9xdHv/
    +b3F4/3Byef9oanD/b3F1/3N1fP9ucHf/dXd9/3V3ff9ucHf/bnB3/2psc/9wcnn/dnh8/2Zobv9sbnX/
    +dXd9/3N1fP9wcnn/Zmhu/2xudf9sb3n/dXd9/2ptd/9wcnn/b3F1/21vc/9wc33/bG51/2Rncf9qbHP/
    +Z2p0/2BjbP9kZ3H/aGt1/2tud/9nanP/bnB4/21vdv91d33/bG51/21vc/9zdn3/a254/21vd/9tcHr/
    +am13/2ptd/9sbnX/cHJ5/2xvef9nanT/c3V8/2psc/91d33/bG51/2xvef93eX//Z2p0/25xe/9wc33/
    +e32D/3d6g/9zdn//cHN9/3d6g/9zdXz/bnF7/3l8hv9zdn//cHN9/2ptd/9ucHf/f4KM/2xvef9zdn//
    +cHN9/3Bzff9zdXz/c3Z//25xe/9nanT/eHl9/2dqcf9zdXz/cHJ5/25wd/9sbnX/bG51/29xdf9vcXX/
    +cHJ5/3Byef9sbnX/c3V8/3Byef9sb3n/cHN9/3V3ff9wc33/bW9z/2ptd/9ucXv/dXd9/3Z4fP9wcnn/
    +cHN9/2ptd/9nanT/cHN9/2psc/9wc33/am13/3Bzff9qbXf/bG95/2xudf93eoP/dXd9/2xvef9qbHP/
    +bG95/2xvef9wc33/bG51/2ptd/9ucXv/bnF7/3Bzff9zdXz/dXd9/2xvef93eX//Zmlz/2ptd/9wc33/
    +bG95/2ptd/9sbnX/cHN9/3Byef9zdXz/eXuB/3N2f/9qbXf/bnB3/3l7gf9wc33/dnh8/3N1fP9ucHf/
    +bnF7/25wd/9zdXz/ZGdx/25wd/9zdXz/c3Z//25xe/9ucXv/cHN9/3d6g/95fIb/c3Z//36Ahv97fof/
    +cHN9/3V4gf95e4H/e36H/3V3ff93eX//c3Z//3l8hv9zdn//d3qD/3d6g/9zdn//d3qD/3N2f/9sb3n/
    +c3Z//3N2f/91eIH/d3qD/3Bzff9wc33/cHN9/25xe/9ucXv/cHN9/3Bzff91eIH/c3Z//3N2f/9ucHf/
    +bW9z/3N1fP91d33/fn+D/25wd/9sb3n/dXiB/3d5f/9ucXv/d3l//3d6g/9zdn//bnF7/2psc/9wc33/
    +cHJ5/3V3ff9zdXz/eXuB/2xudf9wcnn/bG95/2xudf91d33/dXd9/25xe/9ucHf/bG95/3V3ff9ucHf/
    +Z2p0/3Bzff91d33/bW9z/2dqcf9wcnn/bG95/2ptd/9sbnX/bG51/25xe/9sbnX/am13/2xvef9qbHP/
    +bG95/21veP9pa3L/YmVu/2Zobv9sb3n/bG51/2lsdP9oa3X/am12/2hrdf9maG7/Zmhu/1lcZf9maXP/
    +bXB6/21wef9tb3f/Z2p0/25xdf9ucXv/bnB3/3N2f/93eX//bnF7/3Bzff9qbXf/c3Z//3d5f/9nanT/
    +cHJ5/3N2f/93eX//cHJ5/2psc/9sbnX/bG95/3V3ff9sbnX/bG95/2ptd/9nanT/cHN9/2xvef9maXP/
    +bG51/25xe/9kZmz/bG51/2xudv9ucHj/aWx0/25xe/9sb3n/cHN9/2dqdP9qbXf/cHJ4/25wdf9sbnb/
    +c3V9/25wd/9wcnn/bG51/3Byef9ucHf/bG51/3V3ff9sbnX/dXd9/2xudf9sbnX/d3l//2dqdP9qbHP/
    +b3F1/3Z4fP9zdn//bG95/25wd/91d33/bG95/2xvef97fof/dXiB/3N2f/9ucHf/cHJ5/3+CjP9qbXf/
    +bnF7/25wd/9ucXv/cHN9/3N2f/9wc33/am13/3d5f/9nanH/cHJ5/3Byef9sbnX/Z2p0/2dqdP9sbnX/
    +amxz/2xudf9nanT/Zmlz/2xvef9qbXf/am13/2xvef9zdXz/cHJ5/21vc/9wcnn/cHJ5/3Z4fP91d33/
    +am13/3N1fP9ucXv/bG51/3V3ff9qbHP/cHN9/2ptd/9zdXz/bnB3/3Bzff9sb3n/foCG/3d5f/9ucXv/
    +bW9z/3N1fP9zdXz/dnh8/3Byef9sbnX/bG95/3Bzff9wc33/cHN9/3V3ff9wcnn/dXiB/2Rncf9nanT/
    +cHN9/2ptd/9qbXf/am13/2dqdP9qbXf/bG95/3N2f/9qbHP/Zmlz/2psc/91d33/bnF7/3Bzff9qbXf/
    +Zmlz/2dqdP9sbnX/bnF7/2Zpc/9sbnX/bW9z/3N1fP9wcnn/bnB3/3Byef93eX//c3Z//25wd/91d33/
    +eXuB/3Byef9wcnn/dXiB/3t9g/9ucHf/cHJ5/3Byef9zdn//cHN9/3d6g/97fYP/dXiB/3t+h/9zdn//
    +c3Z//3t9g/95e4H/d3qD/3t9g/9wc33/dXiB/3l7gf9wc33/dXiB/3V4gf9zdXz/d3qD/3l7gf91eIH/
    +bnB3/3Byef9wc33/cHN9/3t9g/9vcXX/bnB3/3d5f/9zdn//bnF7/3d5f/91eIH/bnF7/25xe/9qbXf/
    +cHN9/25xe/91eIH/cHN9/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3d5f/9zdn//c3Z//3V4gf95e4H/
    +cHN9/3Byef93eX//dXd9/2xvef9qbXf/cHN9/25xe/9wcnn/bnF7/25wd/91d33/bnB3/3Byef9zdn//
    +bnB3/3Bzff9vcnv/b3F1/2dqdP9ucHf/cHN9/25xe/9vcnv/bXB6/29xev9ydX7/bnB3/25wd/9maG7/
    +b3F1/3J0ev9tcHr/bW93/2Zpc/9sbnX/am13/2dqdP9ucXv/c3V8/2psc/9sb3n/amxz/2xvef9ucXv/
    +ZGdx/2dqdP9ucXv/cHN9/2ptd/9iZW7/Zmlz/2xudf9ucXv/Z2p0/25xe/9sbnX/bG51/3N1fP9wcnn/
    +Z2px/2xudf9ucXv/ZGZs/25wd/9vcXj/b3F4/25wd/9wcnn/cHJ5/3h5ff9nanT/bG51/29xeP9sbnX/
    +bnB3/3F0fv9sb3n/bG51/2ptd/9ucHf/cHJ5/29xdf9zdXz/bG51/3l7gf9ucHf/bnB3/3d6g/9ucHf/
    +bG51/2ptd/9zdn//c3Z//3Bzff9sb3n/c3Z//2dqdP9nanT/eXuB/3N2f/9wc33/am13/29xdf+Agob/
    +bG51/25wd/9sbnX/cHJ5/2xvef9ucXv/b3F1/2xudf92eHz/Zmhu/3N1fP9sbnX/Z2p0/2Zpc/9nanT/
    +bG51/2psc/9nanH/bG51/2Zpc/9wc33/am13/2ptd/9ucXv/cHN9/2xvef9tb3P/bnF7/25xe/9zdXz/
    +dXd9/3Bzff9wc33/bnF7/2Zpc/93eX//bnB3/3V3ff9ucHf/bnF7/2xvef9zdn//cHN9/3+Bh/95e4H/
    +c3Z//3Byef9zdn//dXiB/3d5f/9zdn//cHN9/25wd/9zdn//dXd9/3N1fP93eX//cHJ5/3d5f/9maXP/
    +am13/3N1fP9sb3n/Z2px/2psc/9qbXf/Zmlz/2dqdP9wcnn/Zmlz/2BjbP9nanH/bG95/2ptd/9sb3n/
    +bG95/2Jlbv9qbXf/amxz/2ptd/9iZW7/Zmlz/2Zobv9sb3n/am13/2ptd/9tb3P/dXd9/3N1fP9ucHf/
    +dXd9/3Z4fP9tb3P/bW9z/3N1fP91d33/am13/2xudf9sbnX/bnF7/2ptd/9wc33/dXd9/3Byef93eX//
    +c3V8/2psc/94eX3/dnh8/3Z4fP91d33/bG51/25xe/9wc33/bG51/25xe/9sb3n/bG51/25xe/91d33/
    +bG51/25wd/9vcXX/c3V8/3Byef97fYP/bnB3/21vc/9zdXz/c3V8/25wd/91d33/dXd9/3Byef9wcnn/
    +amxz/2xudf9sb3n/cHN9/3Bzff91d33/bG51/2xvef9sbnX/bnB3/3N1fP9zdn//c3V8/25wd/9zdXz/
    +dXd9/25xe/9sb3n/dXiB/3N2f/9sb3n/bG95/25xe/9wcnn/c3V8/2xudf9sbnX/dnh8/29xdf9ucHf/
    +cHN9/3Byef9zdn//c3Z//3F0fv9sb3n/bG95/3V3ff9ucHj/b3F4/2ptdf9rbnf/cXR+/2ptd/9qbXf/
    +YmVu/2xvef9wcnn/b3F6/3Bye/91eID/Z2px/3N1fP9vcXX/Z2px/2psc/97fYP/cHJ5/2psc/9zdXz/
    +bG95/25xe/9wc33/c3V8/25xe/9ucXv/c3V8/25xe/9nanT/cHN9/2xudf9qbXf/bG51/2xvef9gY2z/
    +c3V8/2xvef9qbHP/dXd9/2Zpc/9nanH/Zmly/2dqdP9pbHT/bG95/3J1fv93eX//bG95/3Byef9ucXv/
    +bG50/21wev9kZ3D/Z2lz/2dqdP9gY2z/ZGdx/2Zobv9iZW7/Zmhu/2Jlbv9maXP/Zmhu/2Rncf9sbnX/
    +bG95/2Zobv9qbXf/bnF7/2xvef9ucXv/amxz/25xe/9kZ3H/ZGdx/3V3ff9sb3n/bnF7/2Zpc/9tb3P/
    +foCG/2psc/9sbnX/bG51/3Bzff9qbXf/bG95/2xudf9maXP/bG95/11gav9sb3n/amxz/2Rncf9kZ3H/
    +Z2p0/2xudf9sbnX/bG51/2ptd/9maXP/c3V8/2ptd/9sb3n/bnF7/25xe/9sb3n/bG51/2xvef9ucXv/
    +dnh8/3h5ff9zdn//dnh8/3V3ff9qbXf/eXuB/3Byef93eX//bG95/2xvef9ucHf/c3Z//25xe/9+gIb/
    +eHl9/3N1fP9wcnn/c3Z//3V4gf93eX//cHN9/25xe/9sb3n/dXiB/3l7gf9ucXv/dXiB/25wd/93eoP/
    +Zmlz/25wd/93eX//bnF7/2ptd/9sbnX/cHJ5/3Byef9ucXv/dXd9/3N1fP9nanH/bW9z/3N1fP9wc33/
    +c3V8/25xe/9nanT/bnB3/25xe/9zdn//bG95/25wd/9sb3n/cHN9/25wd/9ucHf/am13/3h5ff9zdn//
    +bnF7/3l8hv95e4H/bnB3/25wd/93eX//eXuB/3Byef9ucHf/c3V8/3V4gf93eoP/d3qD/3V4gf91eIH/
    +d3qD/3V4gf9wc33/e36H/3t9g/97fof/eXyG/3Bzff95e4H/d3qD/25wd/9wc33/bnF7/3Byef91eIH/
    +d3qD/3Bzff9ucHf/bnB3/3Bzff9wc33/e32D/2xvef9tb3P/dXd9/3V3ff9wcnn/eXuB/3h5ff9wcnn/
    +bnF7/2ptd/9ucHf/bnB3/3V4gf93eoP/e32D/3N1fP9zdn//c3Z//2ptd/9wc33/cHN9/3N2f/9ucXv/
    +c3Z//3V3ff9sb3n/bnB3/3N2f/91d33/bnB3/2psc/9sbnX/cHJ5/2ptd/9sbnX/Zmlz/3Bzff9qbHP/
    +Z2px/2dqcf9maXP/am13/2lrdP9oa3L/Z2p0/2psc/9wc33/bW9z/21vdv9sbnT/aWxz/3N1fv9ucXv/
    +bG95/2dqdP9ydX//dHd//3Byef9wc3r/dnh+/2Zobv9wc33/cHJ5/2dqdP9nanT/d3qD/2xvef9qbXf/
    +dnh8/25xe/9zdn//cHN9/3V3ff9wcnn/cHJ5/3N1fP9wcnn/amxz/3Bzff9qbXf/bnB3/25wd/91d33/
    +Zmhu/3N1fP9zdXz/am13/3d6g/9nanT/Z2p0/2hrdP9oa3L/a212/2tueP9tcHn/dXd9/2xudf9vcXX/
    +bnB3/25wdv90dn3/am12/2ptd/9wc33/bG51/2xudf9sbnX/bG51/2ptd/9qbHP/cHJ5/25wd/9ucHf/
    +bG95/3Bzff9gY2z/bG51/25wd/9ucXv/bnF7/2ptd/9ucXv/am13/2Rncf91d33/c3V8/3N1fP9nanH/
    +b3F1/36Ahv9ucHf/bG95/29xdf9zdXz/bnB3/2xudf9ucHf/bW9z/3N1fP9maG7/bnF7/25xe/9maXP/
    +ZGdx/2xudf9sbnX/b3F1/3Byef9ucXv/bG51/3N1fP9wc33/cHN9/3Bzff9wc33/bnB3/2ptd/9ucXv/
    +c3Z//3l7gf93eX//d3l//3V3ff91eIH/bG95/3l7gf9zdXz/d3qD/2ptd/9wc33/c3V8/3V4gf9wc33/
    +f4GH/3d5f/9wc33/cHJ5/3Bzff9zdn//dXd9/25wd/9tb3P/am13/25xe/9zdXz/am13/3V3ff9ucHf/
    +d3qD/2psc/9sb3n/eHl9/3Byef9ucHf/bnB3/3V3ff9wcnn/c3V8/3V3ff9wcnn/amxz/25wd/9wcnn/
    +c3V8/3N1fP91d33/bG51/3Bzff9zdn//dXiB/2ptd/9zdXz/cHN9/3V4gf9zdn//c3Z//3Bzff97fYP/
    +c3Z//2xvef95fIb/d3l//2xvef9wcnn/d3l//3d6g/9zdXz/c3V8/3N1fP9zdn//cHN9/3Bzff93eoP/
    +dXiB/3t+h/95e4H/bnF7/3l8hv93eX//eXuB/3l7gf9ucHf/d3l//3d6g/9zdXz/eXuB/3d6g/9zdn//
    +eXyG/3d6g/91eIH/c3V8/3N1fP9zdn//dXiB/3l8hv9wc33/bG95/3V3ff91d33/cHJ5/3d5f/94eX3/
    +cHJ5/25wd/9nanT/bG95/25xe/91d33/dnh8/3V3ff9sbnX/am13/25wd/9nanH/cHJ5/3Byef9wc33/
    +bnF7/3Bzff91eIH/cHN9/2xvef9zdn//dXd9/25xe/9qbXf/bnF7/3N2f/9sb3n/bnB3/2dqdP91d33/
    +b3F1/25wd/9ucHf/amxz/25wd/9ucHj/a254/2ptd/9tb3P/cHJ5/2ptd/9qbXf/Z2pz/2Vocf9sb3n/
    +Zmhu/2dqdP9gY2z/Z2p0/2hrdf9oanD/aWx2/3BzfP9iZW7/bnF7/2ptd/9maXP/Zmlz/3V4gf9qbXf/
    +Z2p0/25xe/9qbXf/bnF7/25xe/9ucXv/bnF7/25xe/91d33/cHJ5/2psc/9ucXv/Z2p0/2dqdP9sbnX/
    +bnF7/2Jlbv9ucXv/am13/2psc/9zdXz/Zmlz/2Rncf9nanT/aGty/2xvd/9sbnb/c3V8/3V3ff9sbnX/
    +bnB3/2tud/9tb3b/cXN6/21vdv9wcnn/dXd9/2xvef9sb3n/bG95/2xvef9sb3n/bG95/3N2f/9wcnn/
    +cHJ5/3Bzff91eIH/Zmhu/25wd/9vcXX/c3V8/3N1fP9wcnn/c3V8/2psc/9qbHP/d3l//3V4gf9wc33/
    +cHJ5/3Byef9/gYf/bG95/25wd/9vcXX/c3V8/2xudf9tb3P/am13/2ptd/9wc33/ZGdx/2xvef9ucXv/
    +YmVu/2Zpc/9sbnX/Z2p0/21vc/9sbnX/am13/2dqdP9ucXv/bnF7/3Bzff9sb3n/bG95/2ptd/9nanT/
    +bG95/2ptd/9zdXz/dnh8/3Z4fP9zdXz/cHJ5/2psc/93eX//am13/3N1fP9sbnX/b3F1/29xdf9wcnn/
    +dXd9/36Ahv91d33/c3V8/21vc/9ucXv/cHN9/3N1fP9sb3n/Z2p0/2ptd/9sb3n/dnh8/29xdf94eX3/
    +bnB3/3V3ff9nanH/bnB3/3h5ff9wcnn/bnB3/2xvef9zdXz/c3V8/3Byef92eHz/cHJ5/2psc/9sbnX/
    +cHN9/3V4gf91eIH/dXiB/2ptd/9ucXv/bG95/3Bzff9qbXf/cHJ5/2xvef9zdXz/bG95/3Byef9ucHf/
    +eHl9/3V3ff9qbXf/foCG/3V4gf9tb3P/bW9z/3V3ff91eIH/bW9z/2xudf9nanT/bnB3/2ptd/9sbnX/
    +cHJ5/2xudf92eHz/dXd9/2dqdP91d33/bnF7/3N1fP9ucXv/Z2p0/3Bzff9wc33/bG51/2xvef9qbHP/
    +Z2px/2dqdP9nanT/am13/2psc/9nanH/bG95/2dqdP9zdn//Zmlz/2Rncf9nanT/bG95/2psc/9wcnn/
    +cHJ5/2Zpc/9sbnX/Z2p0/2psc/9qbXf/cHN9/3Bzff93eX//bG51/2ptd/9sbnX/amxz/3N1fP9ucHf/
    +cHJ5/3Byef91eIH/dXiB/3V4gf9ucXv/eXuB/3V4gf9ucHf/ZGdx/2xvef9wc33/bnB3/21vc/9nanH/
    +dXd9/21vc/9qbXf/am13/2dqdP9sb3n/bW94/2xudv9maXP/amxz/2ptd/9kZ3H/Zmlz/2Nmbv9jZm//
    +bG94/2dqcf9nanT/YGNs/2xvef9sb3n/amx0/2hrdf9oa3T/Wl1m/2dqdP9nanH/XWBq/2Rncf93eX//
    +am13/2ptd/9zdXz/bnB3/3Byef9zdXz/c3V8/3Byef9wcnn/dXd9/3Byef9ucHX/c3V8/25wd/9wc33/
    +b3F7/3V3ff9naXP/d3l//3N2f/9sb3n/dnh//25wd/9vcXX/bW92/2xudf9sbnX/bnB3/29ye/9wc33/
    +Z2px/2psc/9sbnX/amxz/29xev9sbnX/bW92/3V3ff9qbXf/am13/21vef9nanT/bW9z/2Rncf9ucHj/
    +bG51/2tud/9rbnf/c3V7/2Zpc/9qbXf/bnB3/3V3ff9ucXv/c3Z//3N1fP9qbHP/Z2p0/3V3ff92eHz/
    +cHJ5/25wd/9vcXX/fX6B/2ptd/9qbXf/bG95/3Bzff9sbnX/bG51/2dqdP9qbXf/bnF7/2Jlbv9sb3n/
    +bG95/2Rncf9iZW7/amxz/2dqcf9qbXf/amxz/2ptd/9maXP/bnF7/2xvef9sb3n/bG95/3Bzff9sb3n/
    +bG51/25wd/9sb3n/dXiB/3l7gf95e4H/c3Z//3V4gf9zdXz/eXyG/3V4gf97fYP/c3Z//3V4gf9wc33/
    +e32D/3t9g/+Bg4r/fn+D/35/g/9zdn//e32D/3t9g/97fYP/c3Z//3Byef9wc33/dXiB/3N2f/9ucHf/
    +d3l//3Bzff93eoP/am13/25wd/93eX//bG95/3Byef9wcnn/dXiB/3V4gf9ucXv/d3l//3N1fP9qbHP/
    +bG51/3N1fP9zdXz/dXd9/3V3ff9qbXf/am13/2ptd/91d33/amxz/29xdf9ucHf/c3V8/2xudf9wcnn/
    +bW9z/3V3ff91d33/bG51/3t9g/93eX//bG51/2xudf9zdXz/d3l//3Byef9sbnX/bG51/25wd/9wcnn/
    +bnB3/3N1fP9vcXX/dXd9/3V3ff9nanH/d3l//25xe/92eHz/cHJ5/25wd/92eHz/c3V8/2xvef9ucXv/
    +bG95/2psc/9ucXv/bnF7/2xudf9vcXX/bnB3/3N2f/9ucHf/e32D/3N1fP9ucHf/dXd9/3N2f/9ucXv/
    +dXiB/3V3ff9wc33/bnB3/25wd/9vcXX/bG51/3Byef91d33/eHl9/25wd/9wc33/bnF7/2xvef91eIH/
    +cHN9/3V4gf9ucHf/cHJ5/3Byef9wcnn/bG51/3N1fP9ucXv/am13/2Rncf9sb3n/cHN9/21vc/9tb3P/
    +amxz/3Z4fP9ucHf/bG95/3Bzff9sb3n/bnF7/25weP9wc33/bG51/2xudf9wcnn/am13/2ttdf9ucHX/
    +bG52/3J0e/9sb3n/cHJ5/2Zpc/91eID/bnF7/3BzfP9vcnv/dXd9/2dqcf9zdXz/b3F4/2ttdP9sbnX/
    +dXd9/21wd/9rbXX/c3V8/2ptd/9vcnz/bXB6/21wev9tcHr/aWx2/21wev9wcnr/a21y/3Fzev9tb3T/
    +cHJ5/3Byef91d33/a210/3d5gv9wc3z/bnF6/3V3ff9ucHf/bW92/25wd/9tb3T/bnB1/21wef9vcnv/
    +bnF7/2dqdP9sbnX/amx0/2ttdP9wcnv/cHJ7/29xev96fIL/cHJ6/29xeP93eoL/b3J8/29xef9pbHb/
    +b3J8/2ptdv9tcHr/bXB6/29ye/9iZW7/Z2p0/2xudf9sb3n/bG95/2xvef9sb3n/Zmlz/2ptd/9wc33/
    +dXd9/2xvef9qbXf/Zmlz/3d6g/9sb3n/Z2p0/2ptd/91d33/bG51/2xvef9nanH/bnB3/3N2f/9qbHP/
    +c3V8/3Bzff9qbXf/bnB3/25xe/9sb3n/bnF7/3Bzff9ucHf/bnB3/3Bzff91d33/c3V8/3V4gf9zdn//
    +cHN9/3Byef9ucXv/bnF7/3N2f/91eIH/e32D/3Bzff9zdn//bnB3/3d5f/9ucXv/dXd9/2ptd/9qbXf/
    +bG51/3Byef91d33/d3l//3Bzff9ucHf/bnB3/3N1fP9wcnn/cHJ5/2xvef9qbXf/bG51/2xvef9sb3n/
    +Zmlz/3Bzff9qbXf/dXd9/2Jlbv9nanT/d3l//2ptd/9tb3P/bG51/3Byef9zdXz/bG51/3Z4fP9wcnn/
    +bG51/2psc/9sb3n/bG95/3V3ff91d33/am13/2ptd/9qbHP/am13/2Zpc/9sbnX/am13/2xvef9qbHP/
    +cHJ5/29xdf95e4H/dnh8/2xudf95fIb/e32D/29xdf9sbnX/c3V8/3d5f/9wcnn/bnB3/25wd/9vcXX/
    +c3V8/2psc/9ucHf/bW9z/3V3ff91d33/Z2p0/3V4gf9ucXv/c3V8/2dqdP9maXP/bnB3/2ptd/9nanT/
    +Z2p0/2Zpc/9kZmz/Zmhu/2dqdP9maG7/ZGdx/2Zobv9maXP/ZGdx/3Bzff9maXP/ZGdx/2xvef9sb3n/
    +amxz/3V3ff9wc33/bnF7/2ptd/9qbXf/amxz/2xudf9sb3n/dXd9/3N1fP9tb3P/b3F1/3Byef9qbXf/
    +cHN9/25wd/91d33/bW9z/25wd/9sb3n/am13/2xudf92eHz/cHJ5/25wd/9qbHP/bnB3/3N1fP9tb3P/
    +bG95/25wd/97fYP/cHN9/3d6g/9ucXv/bG95/3Byef9vcXj/cHJ5/2dqcf9sbnX/bnB3/25wd/9vcXj/
    +bnB1/2xvdv9ydHv/bW9z/3Byef9nanH/cHJ5/21vdv9ydHv/b3F6/3V3ff9jZnD/a254/2ptd/9maXL/
    +Z2ly/3F0e/9oa3X/Zmlz/25xev9pbHT/bG95/25xe/9pbHX/amx1/2hrc/9sb3f/am13/2Zobv9pbHb/
    +Z2pz/2hrdf9tcHj/am12/2Nlbv9wc3r/aGt0/2xudP9sb3n/aGtz/2ZocP9sb3f/amxy/2tud/9ucHb/
    +c3V8/3N1fP9qbXf/bnB3/3Byef9ucHf/cHJ5/3J0ev9vcXj/dnh+/3Bze/9rbXb/cXR+/25wd/9ucHf/
    +am12/3BzfP9sb3f/cXN6/3Fzev9wcnn/Zmlz/2ptd/9qbXf/bG95/2Zpc/9maXP/Z2p0/2Rncf9iZW7/
    +ZGdx/25wd/9kZ3H/Z2px/2Jlbv9zdXz/Zmhu/11gav9kZmz/bG95/2Rncf9maXP/XWBq/2Zobv9qbXf/
    +XWBq/2dqdP9kZ3H/XWBq/2Jlbv9kZ3H/Z2px/2dqdP9sb3n/Z2p0/2psc/9ucXv/cHN9/25xe/9sb3n/
    +bG95/25wd/9sbnX/bnB3/29xdf92eHz/cHN9/3d5f/9zdn//eXuB/25xe/95fIb/c3Z//3V4gf9ucXv/
    +c3V8/3N1fP91eIH/eXuB/3l8hv9zdn//bnF7/25xe/91eIH/cHN9/3N2f/9wc33/bnB3/3N2f/91eIH/
    +c3Z//3Byef95e4H/c3Z//3l8hv9ucHf/b3F1/3d5f/9vcXX/bnB3/3Byef9zdn//cHN9/25xe/93eX//
    +c3Z//2xvef9ucHf/bnF7/3Byef92eHz/eHl9/25wd/93eoP/c3Z//3l7gf9ucXv/cHJ5/3Byef9wc33/
    +bG95/3Bzff9sb3n/d3qD/3V3ff9ucHf/fn+D/3l7gf9vcXX/bG95/3V3ff91eIH/cHN9/29xdf9qbHP/
    +bG95/25xe/9qbHP/bnB3/25wd/91d33/dXd9/2xvef93eoP/dXiB/3t9g/9zdn//bG95/3V4gf9zdn//
    +c3Z//3N2f/91eIH/bG95/3Bzff91d33/bnB3/29xdf9wcnn/c3V8/2xudf97fYP/bnB3/2ptd/91d33/
    +dXd9/21vc/91d33/bnF7/2xvef9maXP/ZGdx/2Zobv9qbHP/Z2p0/25wd/9qbXf/ZGZs/2Zobv9maXP/
    +YmVu/2dqdP9nanH/Z2p0/2psc/9nanT/am13/2ptd/9nanT/dXd9/2xvef9nanT/Zmlz/25xe/9wcnn/
    +bW9z/25wd/9sbnX/d3l//25wd/9wcnn/bnB3/2xudf9vcXX/cHJ5/3Bzff9qbHP/b3F1/3N1fP9ucHf/
    +cHJ5/25wd/9tb3b/b3F4/25wd/9ucXv/Z2p0/3Bzff9vcXj/cnV+/29xef95e4H/Zmlz/3J1fv9qbXf/
    +b3J8/25wd/9xdH7/cnR9/25xef93eYD/cHJ6/3R2fv90dn7/bG95/3F0ff9ucXr/bnB5/29yfP9nanL/
    +bXB6/21wdv9tb3f/dnh9/3J1fv9tb3b/d3l+/29yfP9xdHv/cHN7/2ptd/9maXP/dHZ8/2xudP9ucHf/
    +bnB0/3N1fP9zdXz/Z2p0/2xudf9sb3n/Zmlz/2tud/9xc3r/aGt1/3V3ff9ucHf/ZWhy/3Fze/9qbXf/
    +bG94/21wd/9zdX3/amx0/21wev9ydHr/a254/2Zpc/9ucXv/bG95/3Byef9ucHf/bnB3/25wd/9sbnX/
    +am13/2xvef92eHz/bnB3/25wd/9ucHf/e32D/3V3ff9sbnX/bG95/3V3ff9sbnX/bG95/2Zpc/9qbXf/
    +cHN9/2Rncf9qbHP/bnF7/2psc/9ucHf/c3V8/25wd/9sbnX/c3V8/25wd/9ucHf/cHN9/3d5f/9ucXv/
    +dXd9/3V3ff9wcnn/bG51/25wd/9tb3P/dXd9/3Bzff95e4H/c3Z//3N2f/9sb3n/eXyG/3l7gf9zdn//
    +bnB3/3N1fP9zdXz/c3Z//3t9g/9+gYr/dXiB/3N2f/9ucXv/bnF7/25xe/9ucXv/bG95/2xvef91eIH/
    +c3Z//3N2f/9wcnn/eXyG/3d6g/9+gIb/c3V8/3N1fP95fIb/cHN9/3Bzff9zdXz/dXiB/3N2f/9ucXv/
    +eXuB/3V4gf9ucHf/cHN9/3V4gf91eIH/e32D/36Ahv91d33/c3V8/25wd/91d33/bnB3/25wd/9ucHf/
    +bnB3/2xudf9wc33/am13/3V3ff9wc33/Z2px/3d6g/9zdn//amxz/2xudf9zdXz/dXd9/3Bzff9qbXf/
    +Z2p0/2xudf9wc33/Z2p0/2xudf9sbnX/c3V8/3Bzff9maXP/dXd9/2dqdP9wc33/bnF7/2dqdP9zdXz/
    +bnF7/2xvef9ucXv/bnF7/2ptd/9sbnX/bnF7/2dqcf9maG7/Z2px/2dqdP9kZ3H/dXd9/2psc/9nanH/
    +bnB3/2xvef9maG7/bnF7/2ptd/9ucXv/Zmlz/2psc/9qbHP/bG95/2xvef9wcnn/cHJ5/2dqdP9qbHP/
    +Z2p0/2Zpc/9wc33/bG51/2ptd/9qbXf/am13/2xudf9sb3n/bG51/3Z4fP91d33/bnB3/2Zpc/9wcnn/
    +cHJ5/21vc/9sbnX/b3F1/3h5ff9ucHf/cHJ5/2xudf9sbnX/bG95/25xe/9ucXv/Zmhu/21vc/9zdXz/
    +bnB3/3N1fP9ucHf/b3F2/2ptd/9sbnX/bnB3/2Zobv9zdXz/bnB3/3N1fP9xc3r/eXuC/2hrcv9ydXz/
    +a211/3R2ff9ucHf/cnV//3V3ff9vcXj/dnh9/3Bzff9xdH7/eHqD/3F0fv9wc3z/cHN8/3Byef90d4D/
    +aWxz/3N2f/9ucXv/bXB6/3d5f/90d3//bG95/3V3ff9sb3n/c3Z//29yfP9wcnn/Z2pz/3h6gP9vcXX/
    +cHJ5/25wd/92eHz/c3V8/21vc/9sbnX/bnF7/2psc/9sbnX/cnR8/2Zpc/9wcnn/Zmlz/2Nmb/90dn3/
    +am13/25xev9vcnz/dnh+/21vc/90dnz/dHZ8/25wd/9maXP/bnF7/2ptd/9ucXv/bnF7/2xvef9ucHf/
    +bG51/2psc/9sbnX/dnh8/25wd/9wcnn/bG51/3l8hv9zdn//Z2p0/2xvef9zdn//bnB3/3Byef9sb3n/
    +bG95/25xe/9qbHP/bG95/3Bzff9sb3n/bnB3/3N2f/93eoP/dXiB/3d6g/9wc33/dXd9/3t9g/9+gIb/
    +dXiB/3d6g/97fYP/c3V8/3Bzff9wc33/bnB3/3N2f/9zdn//eXuB/3Bzff9wcnn/am13/3V4gf91d33/
    +cHJ5/25wd/9sb3n/cHJ5/2xvef91d33/d3l//2xvef9sb3n/am13/2xvef9sbnX/bnB3/25wd/9sb3n/
    +d3qD/3d6g/9zdn//bnF7/3t+h/95e4H/foGK/3N2f/9wc33/eXyG/3N1fP91eIH/d3l//3d6g/97fYP/
    +eXyG/3t9g/95e4H/c3V8/3Bzff91eIH/bnF7/3Bzff93eX//bnB3/3N1fP9wcnn/dXd9/2xudf9tb3P/
    +bG51/2ptd/9nanT/cHN9/2ptd/93eX//d3l//2dqcf95e4H/dXd9/2Zpc/9maG7/bG95/2ptd/9nanT/
    +Zmhu/2Jlbv9nanH/am13/2Jlbv9kZ3H/Zmhu/2ptd/9nanT/ZGdx/25wd/9maXP/Z2p0/2dqdP9kZ3H/
    +bnB3/2Rncf9maG7/Z2p0/2ptd/9kZ3H/ZGdx/2dqdP9nanT/Z2px/2dqcf9nanT/YmVu/3Byef9qbHP/
    +amxz/3N1fP9ucXv/bG51/3Z4fP9ucXv/bG95/2Zpc/9qbHP/amxz/25xe/9sb3n/dnh8/3V3ff9sb3n/
    +am13/2xudf9nanT/bnF7/2psc/9wc33/bG95/2xvef9qbXf/am13/2dqdP91d33/bnF7/2xudf9sbnX/
    +cHJ5/3Byef9sbnX/b3F1/29xdf94eX3/bnB3/3Byef9ucHf/amxz/2ptd/9wc33/c3Z//2ptd/9zdXz/
    +dXiB/3N1fP93eoP/c3V8/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/2xvef9wc33/cHN9/3d6g/9nanT/
    +c3Z+/2xvef94eoD/cHN9/3N2f/94eoD/cHJ5/3V3ff9wc33/bnF7/3d5f/9ucXv/bG95/3N1fP9sbnX/
    +dXd9/2RmbP9ucHf/am13/2psc/94eX3/dXd9/29xdf94eX3/b3F1/3N1fP9sb3n/bW9z/2Zobv94eX3/
    +b3F1/3Byef9wcnn/eHl9/3V3ff9tb3P/bnB3/3N1fP9sbnX/bG95/3N1fP9sbnX/dXd9/3Byef9qbHP/
    +d3l//2ptd/9ucXv/cHN9/3V3ff9nanH/c3V8/25wd/9nanH/YGNs/2dqdP9maXP/am13/25xe/9sb3n/
    +bG51/2psc/9nanT/amxz/3N1fP9qbXf/bG51/2psc/93eoP/bnF7/2Rncf9sbnX/cHN9/2xvef9sb3n/
    +am13/2dqdP9qbXf/Z2p0/2ptd/9sb3n/bG51/25wd/9ucHf/dXd9/2xudf9zdXz/b3F1/2xudf9ucHf/
    +dXd9/2ptd/9zdXz/dXd9/2xudf9qbXf/bG95/2xudf9wc33/cHJ5/3l7gf9sb3n/cHN9/25wd/95e4H/
    +dXiB/25xe/9vcXX/b3F1/25wd/9sbnX/c3Z//3t+h/9ucXv/bnF7/3Bzff9sb3n/bG95/2xudf9wcnn/
    +bnB3/3N2f/9zdn//bnF7/2ptd/91eIH/cHN9/3l7gf9wcnn/bW9z/3V3ff9tb3P/bG95/25wd/9vcXX/
    +dXd9/3N1fP9zdXz/c3V8/25wd/9ucHf/c3V8/29xdf9zdXz/d3l//25wd/9wcnn/cHJ5/3Byef9qbXf/
    +bG51/2xudf9sb3n/am13/3N1fP9qbXf/eHl9/3d5f/9vcXX/f4GH/3d5f/9wcnn/b3F1/3Z4fP92eHz/
    +c3V8/2xudf9nanT/bG51/3N1fP9nanT/am13/2xvef9zdXz/cHJ5/29xdf93eX//dXd9/3N1fP9wcnn/
    +b3F1/3Z4fP9wcnn/bnB3/3Byef9wc33/bnB3/25wd/9zdXz/c3V8/21vc/9sbnX/bG95/2dqdP9zdXz/
    +bG51/2xvef91d33/cHJ5/25wd/93eX//cHJ5/3N1fP9qbHP/bnB3/2xvef91d33/c3Z//3d5f/91d33/
    +c3Z//2xvef9ucHf/bG51/3N1fP9tb3P/dXd9/25wd/9sb3n/cHN9/3Bzff9ucHf/eXuB/3N2f/9zdXz/
    +bnB3/3N1fP9ucHf/bG51/2xudf9sbnX/d3l//2ptd/9sb3n/bG95/2dqdP9sbnX/bnB3/3Byef9nanH/
    +b3F1/3N2f/9wcnn/cHN9/2xvef9vcXX/bnF7/29xdf9wcnn/Zmhu/3N1fP9ucHf/dXd9/3V3ff93eX//
    +Z2p0/3N1fP9qbXf/dXiB/2xvef9sb3n/dnh8/21vc/91d33/bG95/2xvef9wc33/bG51/2psc/9ucXv/
    +Zmlz/25xe/9dYGr/Zmlz/3Byef9qbXf/d3l//3Bzff9ucHf/d3l//25wd/9ucXv/bG95/2xvef9nanT/
    +eHl9/25wd/9ucHf/cHJ5/3Z4fP91d33/bnB3/29xdf9zdXz/am13/2xudf9wc33/amxz/3V3ff9sbnX/
    +amxz/3N1fP9qbXf/bG95/3N1fP93eoP/bG51/3V3ff92eHz/bG51/2Zpc/9wc33/cHN9/2xvef9sb3n/
    +bnF7/2ptd/9qbHP/Zmlz/2dqcf91d33/Z2p0/2xvef9maXP/dXiB/25xe/9maXP/bG95/3N1fP9sb3n/
    +bnF7/2psc/9maXP/am13/2psc/9nanT/cHJ5/2dqdP9qbXf/cHJ5/3Z4fP9wc33/dXd9/29xdf9sb3n/
    +cHN9/3l7gf9wc33/c3Z//3V3ff9sb3n/bG95/25xe/9sb3n/dXd9/3N1fP97fof/bnF7/3Bzff9sb3n/
    +eXuB/3N2f/9ucXv/bnB3/3N1fP9ucXv/bnF7/3N1fP93eoP/bG95/25wd/9ucXv/am13/2ptd/9ucHf/
    +bnB3/2xudf9wc33/cHJ5/25wd/9qbHP/dXd9/3Byef91eIH/am13/2psc/9ucXv/bG51/2psc/9qbHP/
    +Zmlz/25xe/9maXP/bnF7/3N1fP9qbXf/bG51/3Byef9tb3P/c3V8/3l7gf9ucHf/c3Z//3N2f/9wc33/
    +bnB3/3Byef9wcnn/c3Z//3Byef93eX//bG95/3Z4fP95e4H/bG51/3+Bh/91d33/bG51/2ptd/91d33/
    +cHN9/3Bzff9sb3n/Z2p0/2xudf9wc33/bG51/3Byef9qbXf/cHJ5/3Byef9qbXf/dXiB/3Bzff9zdXz/
    +bG95/2xudf9zdXz/cHJ5/3Byef9wcnn/dXd9/3Byef9ucHf/bnB3/2xvef9sb3n/am13/2dqdP9nanT/
    +cHN9/2xudf9qbHP/c3Z//2xvef9nanT/bnF7/2ptd/9ucXv/Z2px/21vc/9sbnX/eHl9/3Bzff9zdn//
    +d3l//3Bzff9ucHf/bG95/25wd/9wc33/bG95/3Bzff9ucHf/cHN9/3N2f/9ucXv/bG51/3d5f/9wcnn/
    +bW9z/21vc/9zdXz/bnB3/2xvef9sbnX/bG51/3V3ff9maXP/Zmlz/2Zpc/9dYGr/amxz/2ptd/9sb3n/
    +Zmlz/2xudf9wcnn/bG51/25wd/9tb3P/am13/2xvef9qbXf/bnF7/2Rncf9wc33/bG51/3N1fP9zdXz/
    +dnh8/2dqcf9zdXz/b3F1/3V3ff9sb3n/bG95/3V3ff9ucHf/dXiB/3Byef9wcnn/c3Z//25xe/9ucHf/
    +c3V8/2ptd/9wc33/Z2p0/3V4gf9zdXz/am13/3t9g/91eIH/dXiB/3t9g/9zdXz/dXiB/3Byef9ucXv/
    +c3V8/36Bif9zdn//dXiB/3N2f/95fIb/eXuB/3N1fP9ucHf/dXd9/2xvef9zdn//d3qD/3Bzff95e4H/
    +bnF7/2xudf93eX//bG95/3N1fP93eX//e32D/29xdf92eHz/dnh8/3Byef9sbnX/dnh8/3N2f/9ucXv/
    +c3V8/3V3ff9wc33/c3Z//3Byef9wcnn/eXyG/3Bzff9wc33/am13/3t9g/9wc33/Z2p0/25xe/91d33/
    +bnF7/3N2f/9ucHf/bG51/25wd/9vcXX/bG51/3N1fP9nanT/Zmlz/2xvef9wc33/bG95/2ptd/9kZ3H/
    +amxz/2psc/9ucHf/Z2px/25xe/9wc33/amxz/21vc/9ucHf/cHJ5/25wd/9zdn//d3qD/2xvef9wc33/
    +bG95/3l7gf91eIH/c3Z//3Byef9wc33/d3qD/3V4gf95fIb/foGK/3V4gf9zdn//dXiB/3V4gf91eIH/
    +c3Z//3V4gf9zdXz/eXuB/3N2f/9ucHf/bG51/3V3ff9zdXz/eXuB/2xudf9vcXX/dXd9/2xvef9sb3n/
    +bG95/2xvef92eHz/bnF7/3d5f/97fYP/bnF7/2xvef9wc33/b3F1/25xe/93eoP/bG95/3Byef9wcnn/
    +cHJ5/2xudf9ucHf/bW9z/3Byef9ucHf/dnh8/3Byef93eX//e36H/25xe/+Bg4r/d3l//25wd/9wcnn/
    +c3V8/3Z4fP91d33/c3Z//2xvef9wcnn/c3Z//2xvef9zdn//bnF7/3V4gf9zdn//cHJ5/3+Bh/93eoP/
    +eXuB/3N2f/9wc33/dXiB/3N2f/9zdn//e32D/3d6g/95e4H/dXiB/3N2f/91eIH/c3Z//2xvef9ucXv/
    +bG95/3l7gf9wc33/c3Z//3l8hv9wc33/b3F1/3Bzff9sb3n/c3V8/2Zpc/9tb3P/cHJ5/3Z4fP92eHz/
    +dXiB/3h5ff9zdXz/bG95/25wd/9vcXX/cHJ5/3Byef91eIH/c3V8/3Bzff9zdn//cHN9/2ptd/91eIH/
    +c3Z//2xvef9wcnn/cHN9/2xvef9ucXv/bG95/2xvef93eX//bnB3/3Byef9zdXz/Zmhu/2psc/9qbXf/
    +bnF7/2Zpc/9qbHP/am13/2Zobv9sbnX/Z2px/2Zpc/9nanT/bG51/2xudf9iZW7/dXd9/25wd/92eHz/
    +c3V8/3V3ff9nanT/bnF7/3Byef90d4H/c3Z//3N2f/94eoD/cnR7/36Ahv90d4D/dHeA/3p8gv92eYL/
    +c3Z+/3Z5gv9vcnz/eXuC/21wev91eIH/bG51/2Jlbv9vcnz/a211/2lrcv9xdHv/aWxz/29yfP9qbHP/
    +aWx2/2Zpcv91d33/aWx2/2xveP9qbXf/d3l//3Byef9ucHf/b3F1/3V3ff9sbnX/bnF7/3N1fP9sbnX/
    +dXd9/2xudf9sbnX/d3h9/3Byef9wcnj/dHd7/3h6gP9sbnX/cHN9/3N1fP9tb3b/bG51/3V3ff9zdXz/
    +bnB3/3N1fP9sb3n/am13/2xudf9nanT/bG51/3Z4fP9sbnX/bnF7/2dqdP93eoP/bnF7/2Zpc/9sbnX/
    +dnh8/2xudf91d33/b3F1/2xvef9ucXv/bnB3/29xdf9wcnn/bG51/2psc/9zdXz/dXd9/3Byef9zdXz/
    +bG51/2xudf9qbXf/c3V8/2xvef9zdXz/dnh8/25wd/9ucHf/cHJ5/3Byef9ucXv/dXd9/3t+h/9sb3n/
    +cHJ5/2ptd/93eX//c3Z//3Bzff9ucHf/bG95/25xe/9wc33/c3Z//3l8hv9zdn//cHN9/3Bzff9wc33/
    +cHN9/3Byef9wcnn/bnB3/3N2f/9ucXv/cHN9/2dqdP91eIH/dXd9/3d5f/9sbnX/bG51/3Bzff9sb3n/
    +am13/2xudf9ucHf/dXd9/3Byef9zdn//d3l//2xudf9vcXX/c3V8/29xdf9ucHf/eHl9/3Byef9ucXv/
    +bnF7/2ptd/9nanT/bG95/2xudf9wcnn/bnB3/3V3ff9sbnX/dXd9/3l7gf9vcXX/gYSN/3d5f/9sb3n/
    +cHJ5/3Z4fP91d33/dnh8/3Byef9maG7/bnB3/3Bzff9wcnn/dXiB/3Byef9wc33/c3Z//3N1fP9/gYf/
    +bnF7/3l7gf9wc33/c3V8/3l8hv93eoP/cHN9/3d6g/9wc33/c3Z//25xe/9ucXv/cHN9/3Bzff9ucXv/
    +cHN9/3Byef93eoP/cHN9/3Bzff93eoP/dXiB/3Bzff91eIH/dXiB/3V4gf9qbXf/cHN9/3Bzff95e4H/
    +c3Z//3l7gf95e4H/d3qD/3Bzff9wc33/dXiB/3d6g/9zdn//d3qD/3N2f/91eIH/c3Z//3Byef9ucHf/
    +d3l//3N2f/9sb3n/bG95/25xe/9sbnX/c3V8/2xudf9ucHf/d3l//2dqdP9zdn//c3Z//2Zpc/9vcXX/
    +bnB3/2xvef9kZ3H/bG51/3N1fP9vcXX/bnB3/25wd/9zdn//cHN9/25xe/9wc33/Zmlz/3d5f/9sb3n/
    +dHeA/3h6gf93eX//am13/3BzfP9sb3n/cnV+/3J0e/91d33/dXh9/29xdv94eoH/bXB3/25weP9xdH3/
    +bnF7/25wd/9wcnr/aWx2/29ye/9laG//aWx1/3J0ff9rbnj/cnV+/21weP9sb3n/dnh//2xvef9ydHv/
    +cXN6/2psdP9naXD/cXN5/2psdP9sbnX/bG95/3d6hP9tcHr/cHN9/2xvef9wc33/bG95/25xe/9ydX7/
    +bXB6/3h6gP9vcXj/bG51/3Z3ff9ydHv/b3F4/3N1e/90dn3/bnB0/3N1e/90dn3/bnF6/25wd/92eHz/
    +c3Z//3Byef9wcnn/c3V8/2xudf9zdXz/bnB3/2xudf94eX3/am13/3Bzff9maXP/c3Z//3Bzff9maXP/
    +bG51/3N1fP9sbnX/dXd9/2xudf9ucHf/bnF7/25wd/9ucHf/cHN9/2xvef9sbnX/c3V8/3h5ff9wcnn/
    +c3V8/21vc/9vcXX/bG51/3l7gf9wc33/d3l//3V4gf9wcnn/bnF7/3Bzff9ucXv/bG95/3h5ff93eX//
    +bW9z/2xudf9nanT/d3l//25xe/9sb3n/amxz/2psc/9qbXf/bG95/2xvef9zdXz/cHJ5/2xudf9sb3n/
    +am13/2xudf9sbnX/am13/2dqdP9ucXv/bG95/2xudf9maXP/dXd9/25xe/95e4H/bG51/25wd/9zdXz/
    +cHJ5/2xvef9qbXf/bG51/3Z4fP9ucHf/dXd9/3d5f/9sbnX/b3F1/3Bzff9tb3P/bnB3/3V3ff9ucXv/
    +cHJ5/25xe/9sbnX/bW9z/2xvef9qbXf/amxz/2ptd/9zdXz/am13/3Z4fP91eIH/bG51/3+Bh/91d33/
    +bW9z/2xudf9wc33/bnF7/3N1fP9wcnn/ZGdx/21vc/9zdXz/bW9z/3Z4fP9sbnX/cHJ5/25wd/9sbnX/
    +eXuB/2ptd/91d33/bG51/2dqcf93eX//am13/2xvef9ucXv/am13/25xe/9qbHP/bG51/2ptd/9sb3n/
    +cHJ5/25wd/9sbnX/dXd9/2xvef9ucHf/d3qD/3Bzff9ucXv/c3Z//25xe/9ucXv/Z2p0/2xvef9ucXv/
    +eXuB/3V4gf93eoP/dnh8/3N1fP9sbnX/bW9z/2xudf9ucHf/bW9z/2xvef9sbnX/bG95/2xudf9maXP/
    +YmVu/2xvef9nanT/Zmlz/2xudf9sb3n/am13/25xe/9qbHP/bG51/3V3ff9qbHP/bG95/3Bzff9maXP/
    +am13/21vef9tcHr/amxz/2psc/9zdXz/bG51/2xudf9vcXX/c3V8/3V3ff9sb3n/bnF7/2dqdP91eIH/
    +bG95/3R2e/92eHz/dHZ9/2ptdv9ucHn/bG93/3Bze/9ucXn/c3Z+/3Fzev9sbnb/dnmC/3Byev9ydX7/
    +dnh+/3N1fv91d33/d3l//25wef91eID/a212/3Bzff9vcnz/bW94/3V3f/9xdHz/bnF7/3V3gP9wcnv/
    +cXN6/3R2fP9tcHr/bnB5/3N1fv9tb3j/bnB5/3J0ef93eoH/bW94/3V3ff9sbnX/cHJ5/25wd/9wcnn/
    +dHZ8/21wef93eX7/bnF5/2tueP9xdHz/b3J6/21vdv9ucXn/c3V9/2xvdv9tcHj/bnF7/29yev9sb3n/
    +dXd9/3V3ff9ucXv/dXiB/3V4gf9sb3n/cHN9/2xvef9qbXf/dXd9/3N1fP91d33/Zmhu/3V3ff9ucXv/
    +ZGdx/2psc/9wc33/bG51/25wd/9nanH/Z2p0/2psc/9maG7/Zmhu/2xvef9nanT/Zmlz/3Byef92eHz/
    +c3V8/3Byef9sb3n/bnB3/25wd/95fIb/cHN9/3l7gf91eIH/cHJ5/3N2f/91eIH/eXyG/3V4gf9+gIb/
    +foGK/3N1fP9wc33/cHN9/36Biv97fYP/c3Z//3Bzff9zdn//c3Z//3N2f/9zdXz/dnh8/25wd/9ucHf/
    +cHJ5/21vc/9vcXX/b3F1/2xvef9sb3n/cHN9/3Bzff9ucHf/Z2p0/3d6g/91eIH/foGK/2ptd/9ucXv/
    +dnh8/3V3ff9sb3n/bG95/3Byef91eIH/bnF7/3V4gf93eoP/bG95/3Bzff91eIH/bnF7/25xe/94eX3/
    +cHJ5/3N2f/9wc33/cHJ5/3Byef9wc33/bnB3/3Byef9ucXv/eXuB/25wd/91eIH/dXiB/2xvef9/gYf/
    +eHl9/29xdf9sbnX/cHN9/25xe/91d33/bnF7/2BjbP9qbHP/am13/2Zobv9qbXf/Zmhu/2Zpc/9nanH/
    +Z2px/3V3ff9qbHP/bG95/2xudf9nanH/cHJ5/2xvef9sb3n/bG95/2xudf9ucHf/b3F1/29xdf9ucXv/
    +bnF7/3V4gf9ucXv/bnB3/25xe/9wc33/cHJ5/3l7gf9wc33/c3Z//3V4gf9zdn//bnF7/2xvef9zdn//
    +d3qD/3t9g/93eoP/eXyG/3l7gf93eoP/dXiB/3N1fP9wcnn/c3Z//3Bzff91eIH/cHN9/3l7gf9wc33/
    +c3V8/25xe/97fYP/eXuB/3Bzff9wc33/cHN9/25xe/9sb3n/am13/29xdf92eHz/am13/25xe/9zdn//
    +Zmlz/2xvef9vcnz/b3J7/2dqdP9qbXf/c3Z//25xe/9sb3n/bnF7/3V4gf91eIH/cHN9/3N2f/9sb3n/
    +eXuB/29ye/93eYD/eXuB/3l7gf9wc3v/dHd+/3V3fv92eH//c3aA/3t9hP90dn3/bnF6/3V3gP9vcnz/
    +dnmD/3d6hP90d3z/d3mA/3x9gv91eH//e3yA/25xe/91d4D/dHd//29yfP92eYL/cnV+/29yef93eoL/
    +dXiB/3F0ff93eX//bG94/2xueP9vcXj/bG94/21wef9ydHv/dnh8/29xef9wcnn/bG51/3N1fP9qbHP/
    +b3F3/3J0e/9rbnj/eHp//3Byef9sb3n/dXiB/3V4gf9ydHv/b3F5/29yfP9ucHj/cXN6/29yef9ydX3/
    +bnB3/3d5f/91eIH/bnF7/3V3ff91d33/bnB3/3N1fP9ucHf/bG51/3V3ff9zdXz/dnh8/2dqcf92eHz/
    +dXd9/2dqdP9sb3n/dXd9/21vc/91d33/am13/2xudf9tb3P/bW9z/2xudf9wcnn/bG51/2psc/9zdXz/
    +c3V8/3N1fP9wcnn/bG51/2xudf9vcXX/eXyG/25xe/91eIH/bnF7/2xvef9ucXv/bnF7/25xe/9wcnn/
    +dXd9/3V4gf9sb3n/cHJ5/2psc/91d33/c3V8/2xudf9ucHf/bG95/2ptd/94eX3/bnB3/3V3ff9ucHf/
    +cHJ5/3Byef9qbXf/am13/2xudf9qbHP/bG51/2xvef9ucXv/bG51/2dqdP91d33/bG95/3V4gf9maXP/
    +bG95/3V3ff9zdXz/bG51/2psc/9sbnX/bnF7/2ptd/9wc33/d3l//2xudf9wcnn/dXd9/25wd/9ucXv/
    +dXd9/3V4gf91eIH/c3Z//3Byef9sb3n/bnB3/25wd/9sbnX/bG51/3V3ff9ucHf/d3qD/3V4gf9ucHf/
    +f4GH/3V4gf9tb3P/b3F1/3V3ff9ucXv/dXiB/3Bzff9nanT/bG95/25xe/9ucHf/dXd9/21vc/91d33/
    +bnB3/25wd/93eoP/bnB3/3N1fP9ucHf/bW9z/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/25wd/9ucHf/
    +bnB3/29xdf91d33/bnB3/21vc/9sbnX/am13/2psc/9wc33/bG95/2ptd/9ucXv/Z2p0/2psc/9iZW7/
    +Zmlz/2ptd/9nanT/Zmhu/2ptd/9maXP/Zmlz/2dqcf9maG7/ZGdx/2Rncf9kZ3H/Zmlz/2Jlbv9nanT/
    +YmVu/2BjbP9kZ3H/bG95/2xvef9gY2z/Zmhu/2RmbP9nanT/ZGdx/11gav9kZ3H/Z2p0/2Zpc/9nanT/
    +am13/11gav9maXP/bG95/2xveP9oa3T/Zmlz/2ptd/9qbXf/bG51/21vdv9wc3z/bG95/2ptd/9qbXf/
    +Zmlz/3N1fP9sbnb/cXN5/3F0ff90d3//bnB1/25wd/9vcXn/bXB6/25weP9wc33/bW92/2psc/9vcnv/
    +am13/29yfP9ucXv/bG51/25wd/9ydHv/bnF6/3d6gv9ydHv/c3Z//3V4gf91eIH/e32D/3V4gf90dn3/
    +e32D/3d6g/9xdH7/e32G/3d5ff91eIH/dnh9/3V4gf90dn3/eXuA/3x/h/94eoH/enyC/3l7gf99foH/
    +c3Z//3N2f/94eoD/cXN5/3p7gP9xc3f/bG95/3V3ff91d33/bW92/21vdv9tb3f/aGt1/2ttdP9oa3X/
    +bG95/2xvef91d33/c3Z//3Byef9wc33/dXd9/2ptd/9wc33/bG51/2xudf91d33/cHJ5/3Z4fP9nanH/
    +dnh8/3N2f/9sbnX/bW9z/3N1fP9ucHf/d3l//25wd/9ucHf/b3F1/21vc/9sbnX/c3V8/21vc/9qbXf/
    +cHN9/3V3ff9zdXz/c3V8/21vc/9sbnX/bG51/3N2f/9qbXf/bnF7/2dqdP9maXP/Z2px/2dqcf9maXP/
    +ZGdx/2xvef9wcnn/amxz/2psc/9maXP/c3V8/25xe/9sbnX/am13/2psc/9sbnX/c3V8/2xudf9sb3n/
    +bG51/2ptd/9qbXf/am13/2xvef9sbnX/bG51/2xudf9ucXv/cHN9/2ptd/9ucHf/d3l//25wd/93eX//
    +amxz/25wd/92eHz/dXd9/2xudf9qbXf/bG51/3V3ff9sb3n/bG95/3d5f/9qbXf/bG95/3Bzff9sbnX/
    +cHJ5/3V3ff9zdn//c3Z//3Bzff9ucHf/bG95/25wd/9sb3n/bnB3/2xvef91d33/bnB3/3l8hv93eX//
    +bW9z/35/g/93eX//bnB3/2xudf9zdXz/bnB3/3V3ff9wcnn/Zmlz/29xdf9zdXz/bnB3/3Z4fP9tb3P/
    +c3V8/3N1fP9vcXX/e32D/25wd/9wcnn/bnF7/2xudf9zdXz/am13/2xvef9qbXf/am13/2ptd/9tb3P/
    +bG51/2xudf9vcXX/c3Z//25xe/9ucHf/bG95/2xvef9ucHf/dnh8/3Byef9ucHf/cHJ5/25wd/9ucHf/
    +amxz/3Byef9zdn//dXiB/3Bzff97fYP/c3Z//3V4gf9sb3n/bnB3/29xdf9ucHf/bG51/3Byef9qbXf/
    +c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/ZGdx/2ptd/9sbnX/c3V8/2xudf9kZ3H/bG51/25xe/9nanT/
    +bG95/2xvef9iZW7/am13/25xef9vcnr/am13/2dqdP9ucHf/bG51/21vc/9tb3T/cnV8/25xev9qbXf/
    +bnB3/25wd/93eH3/bW92/3Byef9vcXr/bG95/2dqc/9naXP/Zmlz/2Nmb/9nanH/aGp0/2Vocf9maXP/
    +bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/bW9z/2ptd/9ucXv/am13/25xe/9sb3n/
    +bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/bnB3/29xef91d33/bG50/2xveP9qbXf/
    +cHN9/2psc/9sbnb/bG95/2xud/92eH7/bG95/2xudf9zdXz/bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/
    +bnB3/3d5f/9sbnX/dXd9/3Byef9ucHf/c3V8/3V3ff9ucHf/dXd9/2xvef9qbXf/c3Z//25xe/91d33/
    +am13/3l7gf93eX//cHJ5/3N1fP91eIH/cHJ5/3t+h/9wcnn/bG95/29xdf9ucHf/bG51/3V3ff9tb3P/
    +bG51/3V3ff92eHz/c3V8/3Byef9sbnX/amxz/2xudf95e4H/bG51/3Z4fP9ucHf/bG51/3Byef9ucHf/
    +cHJ5/25wd/91d33/eHl9/29xdf9sb3n/bG95/3V4gf93eX//bnF7/3d6g/9zdn//c3Z//3l7gf9zdn//
    +dXiB/3V3ff95e4H/e32D/3Z4fP95e4H/dXd9/3N2f/91eIH/dXiB/3d6g/9zdXz/bnF7/36Ahv93eoP/
    +foGK/3V3ff9zdn//d3qD/3t9g/9wc33/bnB3/2xvef9zdXz/cHN9/3Bzff91eIH/bnB3/25wd/9zdXz/
    +bG51/2xudf9zdXz/dXd9/3Bzff91eIH/cHJ5/25xe/9wcnn/bnB3/2xvef9ucHf/dnh8/25wd/95e4H/
    +d3l//3Byef9+f4P/dXd9/25wd/9sbnX/c3V8/2xudf91d33/bG95/2Rncf9qbHP/am13/2dqcf9ucXv/
    +am13/2ptd/9qbXf/Z2px/3N2f/9sbnX/bnF7/25xe/9sbnX/c3V8/2xvef9sb3n/bG51/29xdf9sb3n/
    +bnB3/2xvef9ucXv/bnB3/3N2f/9sb3n/bnB3/25wd/9wcnn/b3F1/3Z4fP9ucXv/bG95/25xe/9wc33/
    +bnF7/2xvef9zdn//c3Z//3V4gf9wc33/eXuB/3N2f/9zdn//bnB3/25wd/9tb3P/bnB3/25wd/9zdXz/
    +bG51/3N1fP9qbXf/Z2px/25wd/92eHz/bnF7/2dqdP9sbnX/bnB3/3Bzff9ucHf/Z2px/21vc/9sb3n/
    +Z2p0/2ptd/9sb3n/ZGZs/2xudf9ucXv/b3J6/2ptd/9qbXf/bG95/2xvef9qbHP/bW9z/3J1fP9wcnz/
    +am13/25wd/9ucHf/dXd8/2xudf9vcnj/bnF7/29yfP9nanT/ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/
    +am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/
    +bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/bnB3/2xudf9ydHv/dnh+/25wd/9vcXn/
    +bnB3/3Z4fP9sbnX/bnB3/29xef9tb3X/dnh9/3Byef9vcXX/dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/
    +bG51/2xudf9wc33/b3F1/3Z4fP91d33/bG51/25xe/9wc33/bG51/3V3ff9sbnX/amxz/3N1fP9ucHf/
    +c3V8/2Zobv9wc33/cHN9/2ptd/9vcXX/c3V8/29xdf92eHz/bW9z/2ptd/9sbnX/bG95/2dqdP9wc33/
    +bG51/2xudf9zdXz/dXd9/3Bzff9wcnn/bG51/21vc/9qbHP/c3Z//2xudf9zdXz/bnB3/2xudf9zdXz/
    +bW9z/2ptd/9tb3P/bnF7/3Z4fP9ucHf/bnB3/2xvef91eIH/dXd9/2xvef9zdn//bnB3/2xvef91d33/
    +bG95/25wd/9ucHf/c3Z//3N2f/9ucXv/cHJ5/25xe/9ucHf/bnF7/3N2f/9zdn//bnB3/2dqdP91eIH/
    +bnF7/3d5f/9sb3n/b3F1/3Bzff93eX//b3F1/25wd/9qbXf/c3V8/3Byef9ucHf/eHl9/25wd/9wcnn/
    +cHJ5/2xvef9wcnn/c3Z//3d5f/9qbHP/Z2p0/2dqcf9sbnX/Z2px/2dqdP9nanT/bG51/3N1fP9qbXf/
    +dXiB/3V3ff9sb3n/e32D/3V3ff9qbXf/am13/3Bzff9qbXf/dnh8/2ptd/9kZ3H/bG51/3Z4fP9ucHf/
    +dnh8/3Byef9wc33/dXiB/25xe/97fof/bnF7/3Bzff9wc33/bnF7/3d5f/9ucXv/cHJ5/25wd/9wcnn/
    +bnF7/25wd/9ucHf/cHN9/25xe/9zdn//cHN9/3N1fP9ucXv/bG95/25wd/93eX//bG95/3Byef9qbXf/
    +bG51/25xe/9tb3P/dXd9/25wd/9ucXv/bnB3/3h5ff9wcnn/dXd9/2xudf9qbXf/bG51/2ptd/9qbHP/
    +bG95/2Rncf9ucXv/ZGdx/2Jlbv9kZ3H/c3V8/25xe/9qbXf/bG51/25wd/9zdXz/c3V8/2Zobv9tb3P/
    +bnB3/2xudf9ucHf/bG95/2RmbP9qbXf/bW93/25xef9rbnf/am13/25wd/9zdXz/bnB3/25wd/91d3z/
    +dXd7/25wd/9tb3P/bW9z/3N1e/9sb3n/cnR6/3J0e/9xc3r/bG51/2psc/9ucHf/bG95/3Bzff91d33/
    +bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn//bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/
    +dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/bnB3/2xvef9tb3n/dHZ8/3h6g/9tb3j/
    +cHN8/25wd/94eX3/Z2px/25weP9sbnb/cHJ5/3h6gf91eIH/cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/
    +cHJ5/25xe/9ucHf/d3qD/3Byef91d33/cHN9/3Byef9wc33/dXd9/2xvef91d33/cHJ5/2dqdP93eX//
    +bnF7/3h5ff9nanH/dXd9/3V3ff9wcnn/b3F1/3N1fP9ucHf/d3l//21vc/9sbnX/bG51/25wd/9nanT/
    +bnF7/2xudf9qbHP/dXd9/3V3ff9wc33/bnF7/2xudf9qbXf/am13/3V3ff9wcnn/dXd9/25wd/9qbXf/
    +cHN9/25wd/9ucHf/bW9z/25xe/95e4H/bnB3/25xe/9ucHf/eXuB/3V4gf9ucXv/dXd9/25wd/9ucHf/
    +c3Z//25wd/9ucHf/bG95/3Byef9ucXv/Z2px/25wd/9vcXX/b3F1/29xdf91d33/bnF7/2ptd/9kZmz/
    +bnF7/2xudf91d33/Z2p0/2psc/9ucXv/c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/bG51/3N1fP9maXP/
    +bnF7/3Bzff9sbnX/amxz/2xvef9wc33/bnB3/3Byef9sb3n/c3Z//2xvef9sb3n/bG95/2xvef9zdn//
    +b3F1/3l7gf93eX//c3V8/36Ahv93eX//bG95/2xvef95e4H/bnF7/3V4gf9ucHf/Z2px/25xe/93eX//
    +bnF7/3d5f/9ucXv/c3V8/3Byef9tb3P/eXuB/2xudf9ucHf/cHJ5/25wd/9zdXz/bnB3/25wd/9sbnX/
    +am13/2psc/9nanT/amxz/2ptd/9sbnX/c3V8/21vc/9qbHP/am13/2xvef9qbXf/d3l//2xudf9sb3n/
    +am13/2ptd/9wc33/am13/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9vcXX/b3F1/21vc/9tb3P/
    +am13/25xe/9maXP/bG95/2Zpc/9kZ3H/Z2p0/3N1fP9sb3n/Zmlz/2xvef9qbXf/c3V8/2xvef9maXP/
    +bG51/25xe/9vcXX/bnB3/29xdf9nanH/bW9z/2ttdP9sb3n/bG92/2xudf9tb3P/c3V8/2xudf9ucHf/
    +dHZ9/29xef9tb3P/bG51/2psc/9zdXz/a254/29xev9ydHv/b3J7/21vc/9nanH/bG51/2dqdP9qbXf/
    +bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/am13/2psc/9sb3n/bG51/2xvef9wc33/
    +am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/c3Z//25wd/9qbXf/Z2p0/29yfP94eoP/
    +b3F4/3V3ff9ucHf/dXd9/2Zpc/9sb3n/am13/2xud/90dn3/cHJ6/2xudf94eX3/cHJ5/2xudf9qbXf/
    +am13/2xudf9sbnX/am13/3N1fP9sbnX/dXd9/25wd/9tb3P/cHJ5/25xe/9qbHP/c3V8/21vc/9qbHP/
    +dnh8/3Bzff91eIH/Z2px/25xe/9zdn//bnB3/25wd/9wc33/bG95/3d5f/9vcXX/bnF7/3N1fP9zdn//
    +am13/3N2f/9zdn//bnB3/3d5f/93eoP/dXiB/3Bzff9wc33/bG95/2xvef91eIH/cHJ5/3N2f/9ucXv/
    +b3F1/3V3ff9sb3n/cHJ5/29xdf9wcnn/d3l//25wd/9vcXX/bG51/3V4gf91eIH/cHJ5/3V4gf9wcnn/
    +cHN9/3d5f/9ucHf/cHJ5/25wd/9sb3n/cHJ5/2psc/9ucHf/cHJ5/29xdf9sbnX/dnh8/25wd/9sbnX/
    +Zmhu/25wd/9tb3P/dXd9/2ptd/9sbnX/bnF7/2xvef9kZ3H/Z2p0/2Zpc/9sb3n/Z2p0/2dqdP9wc33/
    +Z2p0/3Bzff9wc33/am13/2xudf9ucXv/c3V8/25xe/9zdXz/bG51/3Byef9ucHf/bnB3/25wd/9vcXX/
    +dXd9/2xudf94eX3/dXd9/3Byef93eoP/c3V8/2xudf9sbnX/eHl9/3Byef91d33/amxz/2Jkav9sbnX/
    +bnF7/2psc/9wcnn/Z2px/2Zpc/9maXP/ZGdx/3Bzff9qbHP/amxz/2xvef9qbXf/am13/2ptd/9qbXf/
    +bG51/2psc/9sbnX/bG51/2dqdP9qbXf/am13/25xe/9qbHP/bG51/2ptd/9wc33/am13/3N2f/9qbXf/
    +cHN9/2ptd/9ucHf/dXd9/25wd/91d33/bnB3/3Byef9wcnn/cHJ5/21vc/9ucXv/bG51/25wd/9qbXf/
    +am13/2ptd/9wc33/Z2p0/25xe/9qbHP/Z2px/2xvef93eX//c3Z//2xvef9ucXv/bnB3/3Z4fP9wcnn/
    +amxz/2xudf9zdn//bnB3/2xvef9ucXv/Zmlz/25xe/9rbXT/b3J6/29xdv9ucHf/bnB3/3Bzff9sb3n/
    +bnB3/3Z4fv9ucXr/b3F1/25wd/9tb3P/dnh+/2xvdv9tcHr/c3V7/29yfP9qbHP/YmVu/2xudf9qbXf/
    +bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/cHJ5/25xe/9wcnn/d3l//29xdf91eIH/
    +dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/cHN9/3V4gf9ucXv/bG95/2ptd/9wc3z/
    +dnh//3Byef91eIH/c3Z//3t+h/9wc33/d3mC/3Z4f/9ydHn/dHZ+/3BzfP9sbnb/cHN9/3Byef9tb3P/
    +bG95/2xudf9vcXX/bnB3/2xvef9zdn//d3l//3l7gf93eoP/cHN9/3d6g/93eoP/bnB3/3d5f/9zdXz/
    +cHN9/3t9g/9zdn//dXiB/2Zobv9ucHf/dXd9/2xvef9ucHf/c3Z//2xvef93eX//b3F1/25wd/9tb3P/
    +cHJ5/2dqcf9ucXv/c3V8/2xvef91d33/eXyG/3d6g/91eIH/c3Z//25wd/9qbXf/eXuB/3Bzff9zdn//
    +dXiB/3Bzff95fIb/dXd9/3l7gf91d33/eXuB/3+Bh/9zdn//dXiB/3Z4fP+Bg4r/f4GH/3d5f/99foH/
    +dXd9/3d5f/9+f4P/eHl9/3h5ff93eX//d3l//3l8hv9ucXv/dXiB/3d6g/9zdXz/c3V8/3t9g/93eoP/
    +c3Z//2xvef9zdn//dXiB/3l8hv9wc33/cHN9/25xe/93eX//bnB3/25wd/9sbnX/cHN9/25wd/9sb3n/
    +cHN9/2xudf91d33/dXd9/3N1fP9vcXX/cHJ5/3h5ff9wcnn/dXd9/25xe/9zdn//cHN9/25wd/9wcnn/
    +c3V8/3V4gf9zdn//e36H/3t+h/95fIb/f4GH/3t+h/9wc33/dXd9/3+Bh/97fYP/foGK/3d6g/9ucXv/
    +dXiB/3l8hv9zdXz/eXuB/3Bzff9ucXv/bG95/25wd/95fIb/bnF7/25xe/9wc33/bnF7/3Bzff9wcnn/
    +bnF7/3N1fP9wcnn/bnF7/2xvef9ucHf/bW9z/25wd/9zdXz/bnB3/2xvef9ucXv/d3l//25xe/93eoP/
    +bnF7/3N2f/9wc33/bG95/3V3ff9sb3n/dnh8/25wd/9zdXz/bnB3/25xe/9ucHf/cHN9/2xudf9sbnX/
    +bW9z/2ptd/9tb3P/cHN9/2ptd/9ucHf/Z2p0/2Zpc/9nanH/dXd9/3Byef9nanH/bG95/2xudf9wc33/
    +am13/2dqdP9sbnX/bnF7/2ptd/9sb3n/bG95/2BjbP9nanT/amxz/2xvef9rbXX/bG51/2dqcf9nanT/
    +ZGdx/2Zobv9qbXf/Zmlz/2Jlbv9nanH/ZGdx/25wd/9sb3j/bW92/3N1ef9tb3b/bnB3/2dqdP9ucHf/
    +bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn//am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/
    +c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/c3V8/2psc/9wcnn/am13/2dqdP9qbHP/
    +bnB3/3R3fv9rbnX/bnB3/21vdf91eIH/Z2p0/2xvef9sb3n/bG92/3R2ff9wc33/bG95/3Bzff9zdn//
    +cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/2xudf9zdn//c3Z//2xvef9zdXz/dXd9/2xvef95e4H/
    +cHJ5/25wd/91eIH/bnF7/3d6g/9maG7/bG95/3V3ff9sb3n/bnF7/3d6g/9wc33/eXuB/25wd/9ucHf/
    +bW9z/3N1fP9qbHP/bnF7/2xvef9nanT/c3V8/3V3ff9qbXf/bG51/2xvef9qbHP/ZGdx/3N1fP9qbXf/
    +cHJ5/25wd/9tb3P/cHJ5/2xudf9qbXf/amxz/2xvef93eX//Z2px/21vc/9sbnX/d3l//3N1fP9ucHf/
    +dnh8/2xvef9ucHf/eHl9/29xdf9qbXf/amxz/25wd/9wcnn/bnB3/29xdf9tb3P/am13/2xudf9zdXz/
    +bnF7/2ptd/9nanH/cHN9/2psc/9wc33/bG51/2xudf9sb3n/c3V8/2Rncf9nanH/YmVu/25xe/9nanT/
    +bG51/3Bzff9qbXf/bG95/3Bzff9sb3n/bG51/25xe/93eX//cHN9/3d5f/9ucXv/c3Z//3Bzff9ucHf/
    +bnB3/2xvef91d33/b3F1/3Z4fP94eX3/c3V8/3l7gf91d33/bG51/2dqdP93eX//bnB3/3l7gf9wcnn/
    +Z2px/29xdf94eX3/bnB3/3l7gf9ucHf/bG95/3Bzff9ucXv/d3qD/3N2f/93eoP/e32D/3d5f/9+f4P/
    +d3l//3d5f/97fYP/ent//3t+h/95e4H/eXuB/3l7gf97fYP/e32D/3V4gf93eX//fX6B/3+Bh/93eX//
    +f4KM/3d6g/93eoP/cHN9/2xvef91d33/bnB3/3V3ff9qbXf/bG95/2ptd/9ucXv/amxz/2xvef9qbHP/
    +amxz/2dqcf9nanH/Zmhu/2dqdP9nanH/bG51/2Rncf9dYGr/XWBq/2xvef9nanT/YGNs/2Zpc/9sb3n/
    +bnF7/25xe/9qbXf/bG51/2xudf9ucHf/dXd9/3V3ff9maG7/bG51/3N1fP90dn7/cXN5/25wd/9vcXX/
    +bnF7/2xvef9vcXX/dXd9/25xe/9qbXf/bG95/25wd/93eH3/c3V8/3N1e/93eX//c3Z//25xe/9nanT/
    +bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/
    +bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/
    +bG51/25xe/90d37/cHN6/3V3gP9wc33/foGK/3N1fP91eIH/cXR9/21wev9ydX3/cHN8/2ptd/9sb3n/
    +bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9zdn//dXiB/3l7gf9wc33/c3Z//3d5f/9qbHP/
    +d3l//29xdf9qbHP/c3V8/29xdf93eX//Z2px/25wd/94eX3/bnB3/3Byef91d33/cHJ5/3d5f/9sb3n/
    +bG95/25wd/9ucHf/Z2p0/3Bzff9sb3n/bW9z/3N1fP91d33/bG95/2ptd/9ucXv/bW9z/2Zpc/91d33/
    +bG95/3Bzff9qbXf/bG51/2xvef9qbHP/bG51/2psc/9qbXf/dXd9/2Rncf9qbHP/Zmlz/3Bzff9zdXz/
    +Zmlz/3V3ff9qbHP/amxz/3V3ff9sbnX/am13/2dqdP9sb3n/bG95/2ptd/9qbXf/bW9z/29xdf9ucHf/
    +eXuB/3Bzff9sb3n/am13/3Bzff9ucHf/eHl9/25xe/9wc33/d3qD/3t9g/9ucHf/bnB3/2ptd/93eoP/
    +c3Z//3N1fP95e4H/c3V8/3N2f/91eIH/eXuB/3N1fP9zdn//d3qD/2ptd/9wc33/bG51/2ptd/9nanT/
    +Zmlz/2Zpc/9iZW7/bG95/2psc/9wc33/dXd9/2xvef93eoP/bnF7/2ptd/9sbnX/dXd9/2ptd/95e4H/
    +bnF7/2dqdP9sb3n/eHl9/29xdf93eX//bnB3/25xe/9ucXv/bnB3/3l7gf9ucXv/c3Z//3V4gf9zdXz/
    +dXiB/3Bzff9wcnn/bnB3/3Byef91eIH/cHJ5/25wd/9sb3n/bG95/3Bzff9ucHf/bW9z/3V3ff94eX3/
    +cHJ5/3l7gf9wcnn/bG95/25xe/9qbHP/c3V8/2ptd/9wc33/bW9z/3Byef9ucHf/c3V8/29xdf91d33/
    +bG95/25xe/9ucHf/bG95/3Byef9wc33/bnB3/25xe/9zdXz/bG95/3N2f/97fof/e32D/25xe/93eoP/
    +eXyG/3V4gf93eoP/cHJ5/25xe/9zdXz/c3V8/3Bzff9zdn//ZGdx/25wd/9tb3T/cXN6/3Fzev9ucXr/
    +bnB3/2xvef9sb3n/b3F1/3d5f/9ucHf/bW9z/25wd/9ucHf/d3l//3J0ff9xdHv/cnR7/29xeP9ucHf/
    +Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/
    +bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/
    +bG51/2psc/9vcXn/c3V7/25wdf9xc3r/bW9z/3d5f/9qbXf/am13/2ttdP9oa3X/c3Z9/3V3ff9sb3n/
    +bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/am13/2xvef9sb3n/Z2px/2Zpc/9qbXf/
    +XWBq/3Byef9maXP/XWBq/2xvef9maG7/c3V8/2Jlbv9qbXf/dXd9/2dqdP9ucXv/c3V8/2xudf9zdXz/
    +bG51/2xudf9vcXX/cHJ5/29xdf9zdn//c3Z//3Bzff91eIH/eXyG/3V4gf9wc33/cHN9/25wd/9qbXf/
    +d3l//25xe/9wcnn/bnB3/21vc/9zdXz/bG51/2ptd/9qbHP/bG95/3V3ff9iZW7/bG51/2Rncf9sb3n/
    +cHJ5/2Jlbv9qbXf/Z2px/2Zobv9ucHf/Zmlz/2Rncf9kZ3H/Z2p0/2xudf9qbHP/bG51/2dqdP9sbnX/
    +am13/3V3ff9ucXv/bnB3/2xvef9zdn//bG95/3h5ff9ucHf/cHJ5/3V3ff94eX3/bG51/2xudf9nanT/
    +cHN9/25wd/9tb3P/bnF7/2ptd/9sb3n/bnF7/3Bzff9qbXf/bnF7/3d5f/9ucHf/c3Z//25wd/9ucXv/
    +bnB3/2xvef9ucHf/am13/3d6g/9zdXz/eXuB/3t9g/91eIH/eXyG/3N2f/9ucHf/bG95/3l7gf9wcnn/
    +d3qD/25xe/9nanT/bnB3/3l7gf9wcnn/eXyG/3Byef9ucXv/cHN9/25wd/93eoP/bnB3/25wd/9wc33/
    +bnB3/3Z4fP9vcXX/bnB3/2xvef9ucHf/cHN9/2xvef9sb3n/bnB3/25wd/9zdXz/b3F1/29xdf91d33/
    +dXd9/25wd/95e4H/cHJ5/2xvef9ucXv/Z2p0/3N1fP9qbXf/bG95/2psc/9sb3n/bG51/3Bzff9qbHP/
    +cHN9/2ptd/9sb3n/amxz/2dqcf9qbHP/Z2p0/2Zobv9nanH/Z2px/2Rncf9maXP/c3V8/25xe/9maG7/
    +c3V8/25wd/9sbnX/dnh8/2ptd/9sb3n/bnB3/25wd/9zdXz/dXd9/2dqcf9wcnn/bW9z/29xeP9sb3n/
    +bXB6/2xvef9sb3n/bnB3/3Byef93eX//cHJ5/2xudf9ucHf/am13/3N1fP9sb3n/cXN6/3N1ff9vcXv/
    +c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/
    +cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/
    +cHJ5/2xudf9ucHf/b3F4/3N1ev9pbHP/a253/2Vocv9wcnn/ZGdx/2Vocv9laHL/YmVv/3J0fP9zdoD/
    +am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/c3V8/2xvef9wc33/c3V8/21vc/91d33/
    +dXd9/2psc/91eIH/bnB3/2Zobv91d33/bnB3/3d5f/9maXP/cHJ5/3h5ff9sbnX/c3V8/3Z4fP9sb3n/
    +eHl9/25wd/9tb3P/bW9z/3Byef9qbHP/cHJ5/25wd/9sbnX/bG95/3N1fP9ucXv/bG95/2ptd/9sbnX/
    +Z2p0/3d5f/9qbXf/cHJ5/3Byef9ucHf/c3V8/2ptd/9wcnn/b3F1/25wd/92eHz/Z2px/29xdf9sbnX/
    +cHJ5/3Z4fP9sbnX/dXiB/25xe/9zdn//e36H/3Byef9wc33/c3V8/25xe/9ucXv/cHJ5/25xe/9sb3n/
    +bnB3/2xvef93eX//c3V8/25xe/9wcnn/dXiB/2xvef93eX//bnB3/25xe/9ucXv/d3qD/25wd/9qbXf/
    +am13/3N2f/9ucHf/bnB3/3Bzff9sb3n/c3Z//3N2f/93eX//bG95/3N1fP91eIH/bnF7/3V4gf9ucXv/
    +cHN9/25xe/9wcnn/cHJ5/2ptd/9zdn//bnB3/3N2f/92eHz/cHN9/3t9g/9wcnn/bnB3/25wd/94eX3/
    +bnB3/3d5f/9wcnn/Zmhu/25wd/92eHz/bnB3/3l8hv9wcnn/cHN9/3Bzff9zdXz/d3qD/3N2f/91eIH/
    +dXiB/25wd/94eX3/bnB3/29xdf9sbnX/bnB3/3Byef9vcXX/bG51/21vc/9sbnX/cHJ5/2xudf9tb3P/
    +cHN9/3Bzff9sbnX/bnB3/2ptd/9qbXf/bG95/2Rncf9qbXf/ZGdx/2xvef9qbXf/cHN9/2ptd/91d33/
    +am13/3N1fP9ucXv/cHJ5/25wd/9ucHf/cHJ5/25xe/9qbXf/bnB3/25wd/9sb3n/bnB3/3V3ff91d33/
    +Z2px/3N1fP9ucXv/bG95/3V4gf9wcnn/bnF7/2ptd/9ucXv/cHN9/3N2f/9nanT/cHN9/2hrcv9qbXf/
    +bG52/3Fzev9sbnX/bnB3/21vc/9tb3P/eHqA/2xudf9sbnX/bnB3/25wd/92eHz/bXB6/3Byef9ydHr/
    +cXN5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/cHN9/3Byef9wc33/c3Z//25xe/9ucHf/
    +bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn//d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/
    +d3qD/3d6g/9wc33/c3V8/3N1fP93eoP/b3J6/3J0fP9rbnj/d3l//25wd/9wcnn/bW90/2xudf90dn3/
    +dHd//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/cHJ5/25xe/9ucXv/c3Z//3h5ff9ucHf/
    +c3V8/3N1fP9qbXf/dXiB/3Byef9nanH/cHJ5/21vc/94eX3/Zmhu/25wd/94eX3/bG51/3N1fP91d33/
    +am13/3d5f/9sbnX/bG51/2xudf9wcnn/bG51/3N1fP9wcnn/cHJ5/3Byef94eX3/c3V8/2xvef9sb3n/
    +bW9z/2Zobv91d33/cHJ5/2xudf9ucHf/am13/3Byef9nanT/am13/2xudf9wcnn/eHl9/2psc/9tb3P/
    +amxz/2xvef91d33/am13/3d5f/9qbXf/am13/3d5f/9sbnX/Z2p0/2xudf9ucHf/bG51/21vc/9nanT/
    +Z2p0/2xudf9tb3P/dnh8/3Byef9ucHf/bW9z/25xe/9tb3P/c3V8/2xudf9ucHf/bnB3/3d6g/9ucHf/
    +bG51/25wd/9zdn//bnB3/25wd/9wc33/bnF7/3N1fP91d33/d3l//3V4gf9zdn//eXuB/3N2f/93eoP/
    +c3Z//3N2f/9sb3n/bnB3/25wd/9nanT/c3V8/21vc/9zdXz/c3V8/2xvef93eoP/bnF7/2ptd/9sbnX/
    +c3V8/2dqdP91d33/Z2p0/11gav9kZ3H/bG95/2Zobv9wcnn/Zmhu/2ptd/9nanT/Z2px/3Byef9qbXf/
    +am13/25xe/9sbnX/bnF7/2ptd/9qbXf/Zmlz/2xudf9wc33/bnB3/2xvef9vcXX/b3F1/3N1fP9ucHf/
    +b3F1/3V3ff9ucHf/am13/3V3ff9wcnn/bG51/25xe/9qbXf/am13/2Zpc/9sb3n/bG95/25xe/9qbXf/
    +cHN9/2xvef9wc33/bG95/2ptd/9nanH/amxz/2psc/9qbHP/Zmlz/2psc/9sbnX/amxz/2dqdP9ucXv/
    +cHN9/2Zpc/9ucHf/bG95/2xudf93eX//bnB3/25xe/9sbnX/cHJ5/3N1fP9wc33/Z2p0/3Bzff9ydX7/
    +cnV+/3F0fv9ydX7/cHN9/3Bzff9wcnn/cHJ5/3p9hv9wcnn/cHJ5/3V4gf9zdn//d3l//3J1fv9ydHz/
    +dXZ8/3Fzef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/ZGdx/2xudf9nanT/bG51/2xudf9sbnX/
    +Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX//Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/
    +bnB3/3N1fP9zdn//Z2p0/29xdf9vcXb/dnh//3Bze/96fIL/cHN9/36Biv93eX//e32D/3J1fv9vcnv/
    +c3aA/3N2gP9nanT/bG51/3Bzff9nanT/am13/2ptd/9sb3n/am13/2psc/9nanH/bnF7/3N2f/93eX//
    +bnF7/3Bzff91eIH/bnF7/3d5f/9ucHf/amxz/3Byef9tb3P/d3l//2Zobv9ucXv/dXd9/25wd/91eIH/
    +dXd9/2xvef93eoP/cHN9/2ptd/9vcXX/cHN9/25wd/91d33/cHJ5/25wd/9sb3n/eHl9/3N1fP9ucHf/
    +bnB3/2xudf9iZW7/dXd9/2xvef9qbXf/bnB3/2xudf9ucXv/amxz/2xudf9tb3P/bnB3/3V3ff9kZ3H/
    +bG51/2Zpc/9qbXf/cHN9/2dqdP93eX//bG51/2ptd/91d33/ZGdx/2Jlbv9maG7/amxz/2xudf9qbHP/
    +Zmlz/2Zobv9maXP/ZGdx/2xvef9maXP/Zmlz/2dqcf9maXP/amxz/2xvef9sbnX/bG51/2xudf91d33/
    +am13/2Zpc/9nanT/cHN9/2xudf9sbnX/bnB3/3Byef9zdXz/dnh8/3V4gf9wc33/c3Z//3t9g/9wc33/
    +dXd9/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9wcnn/d3l//3V4gf9zdn//e36H/3d6g/9wcnn/
    +c3V8/3d5f/9sb3n/dXiB/3Byef9nanH/bnB3/3d5f/9wcnn/d3qD/25wd/9wc33/bG95/25wd/92eHz/
    +cHJ5/25wd/9ucHf/bG51/3Byef9ucHf/cHJ5/2dqdP9sb3n/c3Z//29xdf9ucHf/bW9z/2xvef9zdn//
    +cHN9/3Byef91eIH/bnB3/21vc/94eX3/dXd9/25wd/9zdXz/b3F1/25wd/9qbHP/c3V8/3Byef9zdn//
    +bnF7/3N1fP9wcnn/dXd9/3N1fP9sb3n/amxz/2xudf9qbXf/Z2px/2Zpc/9maXP/Z2px/2xudf9maXP/
    +bG95/25xe/9nanT/bnF7/2xvef9tb3P/c3V8/2ptd/9qbXf/ZGdx/2xvef9nanT/bG95/2Jlbv9nanT/
    +b3F4/25weP9vcXr/bG94/2tud/9qbXf/amxz/2Rncf9zdn//Z2p0/2ptd/9ucHf/bnB3/3Byef9ucHf/
    +b3J3/21wev9oa3X/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/
    +Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/
    +bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3J0e/9ucXn/cnR7/29xeP95e4H/bnB3/2xudf9qbXf/
    +aWt0/25wef9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn//c3V8/21vc/9ucHf/bG51/2xvef9wc33/
    +dXd9/2xudf9zdXz/bnF7/2Zpc/9zdXz/Z2p0/2Jlbv9ucXv/bG51/3V3ff9iZW7/cHN9/3d5f/9qbXf/
    +bnF7/25xe/9sbnX/c3V8/2Zpc/9gY2z/Zmhu/2Zpc/9maXP/bG95/2psc/9nanH/Z2px/2xvef9sb3n/
    +Z2px/2psc/9maXP/YGNs/3V3ff9qbXf/bG51/2ptd/9nanH/am13/2Jlbv9qbHP/Z2px/2ptd/9ucXv/
    +Zmlz/2psc/9kZ3H/bnF7/3V3ff9nanT/dXd9/2xudf9wcnn/d3l//2Zpc/9nanH/bW9z/21vc/9sbnX/
    +bnB3/25wd/9ucHf/c3V8/25wd/94eX3/bnF7/25xe/9sb3n/c3V8/21vc/94eX3/bG95/25wd/9ucHf/
    +d3l//2ptd/9maXP/amxz/3N1fP9sbnX/b3F1/3Byef9vcXX/c3V8/3Z4fP91d33/bnB3/3Byef94eX3/
    +bnF7/3V3ff91d33/bnF7/25wd/9sb3n/bG95/2xvef93eX//cHN9/3t9g/91eIH/cHN9/3V4gf9wc33/
    +am13/3Byef9zdn//am13/3d5f/9zdn//Z2p0/29xdf95e4H/bnB3/3d5f/9ucHf/c3V8/2xudf9vcXX/
    +dnh8/3V3ff9wc33/bnF7/3V4gf9wc33/bnB3/3Bzff9qbXf/cHJ5/3V4gf9zdn//c3Z//3N1fP91d33/
    +eXuB/3d5f/9zdn//e32D/3V4gf9zdXz/eXuB/3N2f/9zdn//eXyG/3V3ff93eX//dnh8/3t9g/97fYP/
    +dXiB/3Bzff91eIH/c3Z//3d6g/9zdn//cHN9/3N1fP9zdn//c3Z//3N1fP9sb3n/bnB3/25wd/9ucXv/
    +am13/3Bzff9wc33/Z2p0/3N1fP9zdXz/b3F1/3V3ff9sbnX/cHJ5/2dqdP91d33/bnF7/3N2f/9qbXf/
    +c3Z//25xe/9tcHn/b3J8/29ye/9ucXv/bnF7/25xe/9ucXv/fH+I/3J1fv9zdn//d3l//3t9g/96fIL/
    +d3qA/3Z4ff92eX7/cnN6/2xudf9sbnX/Zmlz/2psc/9nanT/am13/2xudf9maXP/bnF7/2dqdP9tb3P/
    +cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/bG51/3Byef9iZW7/am13/2ptd/9sb3n/
    +Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/bnF7/3N2ff9ydHz/gYOK/3V4gf91eIH/
    +b3J8/25xev9zdX7/cnV//2hrdf9sb3n/bnB3/25wd/9wcnn/cHJ5/3N1fP9sbnX/am13/2ptd/9wcnn/
    +dnh8/3d5f/9sb3n/cHN9/25xe/9ucHf/dnh8/2xvef9kZ3H/c3V8/2xudf94eX3/Z2px/3N2f/93eoP/
    +bG95/3N2f/95e4H/bG95/3V4gf9ucXv/am13/25xe/9wc33/bnB3/25xe/9sb3n/bG95/25wd/92eHz/
    +dXd9/29xdf9tb3P/Z2px/2dqcf91d33/am13/21vc/9wcnn/am13/2xvef9kZ3H/Z2p0/2Zobv9maXP/
    +am13/2Rncf9maG7/XWBq/2Rncf9wcnn/YmVu/3Byef9maXP/Zmlz/3Byef9iZW7/YmVu/2psc/9nanT/
    +bG51/2xudf9qbHP/bG51/25xe/9sb3n/dXd9/3Byef9ucHf/bG51/3N2f/9vcXX/eHl9/25wd/9vcXX/
    +bnB3/3d5f/9ucHf/bnB3/25wd/91d33/bnB3/29xdf9wcnn/bG51/3Byef9zdn//d3l//3Bzff9wc33/
    +d3l//2xvef9zdXz/dnh8/25xe/9ucHf/bnB3/29xdf9ucHf/dnh8/3Byef94eX3/dnh8/3N1fP92eHz/
    +bnB3/2xudf9vcXX/c3V8/2psc/91d33/dXd9/2psc/9vcXX/d3l//3Byef93eX//bnF7/3N2f/9ucHf/
    +b3F1/3h5ff9wc33/c3V8/25xe/9wc33/c3Z//25wd/9ucHf/bG95/25wd/9zdn//c3V8/25xe/9wc33/
    +cHN9/3l8hv9zdn//cHN9/3d6g/9ucXv/bnB3/3t9g/93eoP/dXiB/3d6g/9wc33/c3Z//3N1fP9wc33/
    +bnF7/3Bzff9wcnn/c3Z//3N2f/95e4H/c3Z//25xe/9vcXX/bnB3/2xvef9vcXX/am13/2xudf9vcXX/
    +bnB3/2xudf9zdn//cHJ5/2xudf9wc33/bnF7/29xdf93eX//bnB3/3V4gf9ucXv/eXuB/3V4gf95e4H/
    +Z2p0/2xvef9wc3z/dHeA/3Z5gv9ydX//b3F4/25wd/9ucHf/am13/3d5f/9ucHf/bnB3/2xudf9wcnn/
    +bnF7/2xvef9tcHr/dXd+/3V4gP9wc33/cHJ5/2xvef9wc33/c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/
    +bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/e36H/3N2f/97fYP/cHN9/3t9g/9zdn//
    +c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/c3V8/2xud/9ucXr/a210/3d6g/9qbXf/
    +bG51/2psc/9sbnX/b3J8/3BzfP9rbXT/bG51/25wd/9ucHf/bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/
    +bG95/3V3ff92eHz/bG51/3N1fP9ucHf/b3F1/3V3ff9sbnX/bG51/2xvef9qbXf/c3V8/2Rncf9zdXz/
    +dnh8/2xudf9ucHf/dnh8/2xudf91d33/am13/2Rncf9qbHP/bnB3/2xudf9wc33/bG51/2xudf9qbXf/
    +cHN9/3Byef9sbnX/bW9z/2psc/9qbHP/dXd9/2xvef9ucHf/c3V8/2xudf9ucHf/Zmhu/3Byef9tb3P/
    +bnB3/25wd/9nanT/am13/2dqdP9ucXv/c3V8/2ptd/93eX//bnB3/25xe/94eX3/Zmhu/2dqdP9ucHf/
    +bnB3/2xvef9ucHf/bnB3/25wd/9zdn//c3Z//3l7gf9ucXv/bnF7/3Bzff93eX//cHN9/3l7gf9zdXz/
    +bnB3/3N2f/97fYP/cHJ5/25wd/9ucHf/c3Z//2xvef9wcnn/c3Z//2xvef9wcnn/c3V8/3Z4fP9ucXv/
    +bG95/3d5f/9wc33/c3Z//3d5f/9ucXv/bnB3/3Byef9ucHf/bnB3/3d5f/9zdn//eXuB/3l7gf93eoP/
    +d3l//25xe/9sbnX/b3F1/3N1fP9qbHP/c3V8/3N1fP9qbHP/bG51/3N1fP9tb3P/dXd9/2psc/9ucXv/
    +bW9z/2xudf92eHz/c3V8/25wd/9wcnn/cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/bnF7/2xvef9sb3n/
    +bnF7/25xe/9zdn//c3Z//3Bzff95e4H/c3Z//3Bzff99foH/eXuB/36Ahv97fYP/d3l//3V3ff91d33/
    +dXiB/3d6g/93eoP/c3Z//3d6g/93eoP/e36H/3l8hv93eoP/cHN9/3N1fP9zdn//cHN9/3Byef9sb3n/
    +b3F1/25xe/9ucHf/bnF7/3Byef9qbHP/cHJ5/2xudf9tb3P/dnh8/2xudf9wc33/bG95/3N2f/9zdn//
    +c3Z//2dqdP9sb3n/cHJ5/29yfP92eYD/cnV+/29xeP9tb3P/b3F1/2xudf93eX//bG51/2xudf9ucHf/
    +c3V8/3V3ff9wc33/cnR8/3V3ff9xdH3/cHJ5/2xvef9qbXf/cHN8/25xe/9ucXv/c3V8/2ptd/9zdn//
    +bnB3/2xudf90dn3/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/cHJ5/3V3ff9tb3T/dHd9/2dqdP9zdXz/
    +am13/2xvef9sb3n/am13/2Vocf9sb3n/am13/2Nmb/9qbHP/am13/3J0e/9ucHf/cXN6/2tud/93eoP/
    +cHJ5/2xudf9sbnX/aGt0/21veP9xdH3/Z2p0/2ptd/9qbXf/am13/2ptd/9ucXv/dXd9/3Byef9vcXX/
    +b3F1/25xe/9wc33/dXd9/2xudf9nanT/am13/2psc/91d33/bG51/2psc/9sbnX/Z2p0/3Byef9kZ3H/
    +bG95/25xe/9sbnX/am13/3N1fP9qbHP/dXd9/2xvef9gY2z/Zmlz/2dqdP9nanH/bG95/2psc/9qbHP/
    +Z2p0/2ptd/9qbXf/Z2px/2dqdP9kZ3H/ZGdx/3Byef9nanH/Z2px/2xvef9nanT/amxz/2BjbP9qbXf/
    +amxz/2dqdP9qbXf/ZGdx/2dqcf9kZ3H/am13/25xe/9maXP/cHJ5/2ptd/9sb3n/dXd9/2Rncf9maXP/
    +amxz/2xudf9sbnX/bG51/2ptd/9tb3P/bnF7/25xe/9zdXz/cHJ5/3Byef9sb3n/dXd9/2xudf9zdXz/
    +am13/2ptd/9sbnX/cHJ5/2dqcf9kZ3H/Zmlz/2xvef9nanT/amxz/3N1fP9sbnX/bnB3/3V3ff94eX3/
    +cHN9/29xdf94eX3/bG95/3N1fP91d33/bnB3/2xudf9tb3P/am13/2ptd/9zdXz/cHJ5/3N1fP91d33/
    +c3V8/3h5ff9ucHf/bG95/21vc/9zdXz/Z2p0/3N1fP9zdXz/Zmlz/2dqdP9sb3n/bG51/3V3ff9vcXX/
    +dXd9/2xudf9qbHP/dXd9/3N1fP9wcnn/cHN9/2xvef9ucXv/bnB3/25wd/9vcXX/bG51/2xudf9sbnX/
    +b3F1/2xvef9ucXv/cHN9/25xe/9wcnn/dXiB/3N2f/9zdXz/dXiB/3N2f/93eoP/dXiB/3Bzff9wc33/
    +cHJ5/3Bzff9zdn//c3Z//2xvef9ucXv/cHN9/3d5f/9zdn//bnF7/3N1fP9zdXz/c3Z//3N1fP9ucHf/
    +cHJ5/3Bzff9zdn//cHN9/3V4gf9zdn//cHJ5/3Bzff9wcnn/cHJ5/3d6g/9ucHf/dXiB/3Byef95e4H/
    +eXyG/36Ahv9zdn//c3Z//3Bzff9ydX//dnmA/3J1fv9zdn//bnB3/25wd/9sb3n/dXiB/2xvef9sbnX/
    +cHJ5/3Z4fP92eHz/c3V7/3J0ff91d33/bnB3/21vd/9pbHb/Zmhx/2ttdf9sb3n/cXN6/3Fzev9tb3P/
    +cHJ7/2ttdf9rbXT/cHN9/25xe/9tb3b/a254/25xev9ucXv/bG95/21wev9xdH7/b3F2/3Z4fv9qbXT/
    +dXd9/3Bzff9xc3r/dXd9/3R2fv9sbnb/b3F5/29yfP9sb3b/bG52/2xudv9ydX//cXN7/3Z4fv9wcnn/
    +foGK/3d6g/9ucHf/bnB3/25wdf9wc3v/dXd9/2ptdv9rbnf/bnB3/25wd/9ydHv/dHZ8/3N1fP9tcHn/
    +bXB3/2tueP9ucXv/dXd9/3V3ff9sb3n/bnF7/25xe/9ucHf/eXuB/25xe/9vcXX/bG51/3N1fP92eHz/
    +amxz/3V3ff91d33/bG51/2xudf94eX3/bnB3/3h5ff9zdXz/Z2p0/2xudf9ucHf/bW9z/3Byef9ucHf/
    +bnB3/2xudf9zdXz/am13/2ptd/9qbXf/Z2p0/2Zpc/91d33/am13/2psc/9wcnn/amxz/2xudf9maG7/
    +c3Z//2ptd/9ucXv/c3Z//2xvef9ucHf/b3F1/3V3ff92eHz/b3F1/3V3ff9ucHf/bnB3/3Z4fP9nanT/
    +bnB3/3Byef9zdXz/bnB3/3Byef9ucHf/bnB3/3Byef9ucHf/c3V8/3Byef9ucXv/bG95/3V3ff9sbnX/
    +bG95/2Zpc/9qbHP/am13/3N1fP9sbnX/amxz/2psc/9ucXv/bG51/2psc/9ucXv/am13/2psc/9ucXv/
    +c3V8/2xvef9qbXf/dXd9/2xudf9ucXv/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/cHN9/2xudf9zdXz/
    +dXd9/3N2f/9zdn//bG95/3Byef9ucXv/c3V8/25wd/9zdn//d3l//2xvef9ucXv/cHN9/3Byef95e4H/
    +cHN9/3l7gf9wc33/bG95/3l7gf9zdn//dXiB/3N2f/9wc33/c3V8/25wd/9wcnn/cHJ5/3Byef9wc33/
    +cHJ5/2xvef9wc33/bnF7/3Byef9ucHf/bW9z/3Byef9wcnn/bG51/3N1fP9sbnX/bnF7/3Bzff9tb3P/
    +b3F1/25wd/9ucHf/c3V8/3V3ff9sb3n/cHJ5/2xvef91d33/c3Z//3Byef9ucHf/c3Z//3V4gf93eX//
    +dXd9/3h5ff95e4H/dnh8/3l7gf9/gYf/eXyG/3l7gf97fof/eXuB/3d5f/9/gYf/dXd9/3t9g/91d33/
    +foCG/3t9g/97fof/c3Z//3N2f/9xc3r/cHN6/3J1fP9xc3v/cHJ5/2ptd/9nanT/Z2p0/3V3ff9qbHP/
    +Z2px/2ptd/9ucXv/cHJ5/2lsdv9rbnj/b3J5/2xudf9rbnb/a252/2hqcv9naXH/a211/25xef9tcHr/
    +a21z/3J0fP9tcHj/bG93/3F0fv9ydX3/b3F5/29xev9ydX3/dHd//3Byef9xdHz/eHqC/3V3ff94e4H/
    +cXN6/3l8gv91d3//dnmB/3l7g/96fIP/c3V+/3d4fv92eID/dXd+/3F0fv9xc3v/d3qC/3h6gP99f4b/
    +dnh//4OFjP9+f4P/ent//3d5f/94eoD/enyC/3p8gP9ydHv/cHN9/25xe/9vcnv/cnV+/3Z4gP92eH//
    +cnV+/29yev9wc3v/cHJ5/3V3ff92eHz/bnB3/25xe/9wc33/bnF7/3l7gf9wc33/cHJ5/25xe/9wc33/
    +c3Z//2dqdP91d33/dXd9/25xe/9wc33/e32D/3Byef97fof/d3qD/3N1fP9wc33/d3qD/3N2f/9zdn//
    +c3Z//3N2f/9ucXv/bnF7/25xe/9ucHf/bnF7/2xvef9qbXf/d3qD/3N1fP9wc33/cHN9/25xe/9ucHf/
    +Zmlz/3V3ff9sbnX/c3V8/3N1fP9ucHf/bnB3/29xdf9wcnn/dnh8/29xdf95e4H/b3F1/25wd/92eHz/
    +Z2p0/2dqdP9ucHf/bnB3/21vc/9sbnX/bG51/2xudf9ucHf/bnB3/2xvef9sb3n/bG95/2ptd/92eHz/
    +am13/25xe/9maXP/am13/2xudf9wc33/bG51/2Rncf9qbHP/am13/2psc/9qbHP/bG95/2ptd/9nanT/
    +bG95/3N1fP9ucXv/am13/3N1fP91eIH/eXyG/3t9g/9zdn//c3Z//3Bzff9zdXz/bnB3/3N2f/9wcnn/
    +dXiB/3l7gf91eIH/dXiB/3Bzff9wcnn/cHN9/3N1fP9vcXX/cHN9/3V3ff9qbXf/bG51/3N2f/9wcnn/
    +d3l//2xudf9zdXz/bW9z/2xudf94eX3/c3Z//3V3ff9sb3n/bG95/25xe/9vcXX/bG51/29xdf9vcXX/
    +bW9z/21vc/9vcXX/c3V8/2xudf9sb3n/bW9z/25wd/9wc33/cHJ5/29xdf94eX3/bnB3/3N2f/91d33/
    +bW9z/2xudf9qbXf/bG51/25xe/9ucXv/bW9z/2xudf9ucHf/dXd9/25xe/9ucHf/amxz/2xudf9sbnX/
    +bnB3/2xvef9ucHf/b3F1/2xudf9qbXf/c3Z//3N1fP91d33/dXiB/3N1fP91eIH/foGK/3N1fP93eoP/
    +c3Z//3t+h/93eoP/e36H/3N1fP9zdn//cXN7/3N2gP96fIP/eXuB/3p8gv91d33/c3V8/3V3ff97fof/
    +dXiB/3Bzff9wc33/dXd9/3V3ff90dnz/dXd+/3J1ff9ucXv/bXB5/3Bze/9pa3P/aWx2/3FzfP90d37/
    +c3Z//3F0fP92eH//cnR9/3Bze/90d4H/dHeA/29yfP9xdHz/bXB4/29yfP9vcXv/bG95/21weP9tb3b/
    +cHJ5/2ttc/92eHz/bnF6/25wef9ydX3/bXB6/25wd/9tcHn/bW92/29xd/9tb3b/bG54/3Fzd/90dnz/
    +dHZ8/2xvef95fIb/cHN9/2xvef9wcnn/bnF7/3R2fP90dn3/cHJ6/21veP9tb3j/bG95/25xe/91d33/
    +dHeA/3F0fP9zdn3/bnF6/3Bzff91eIH/d3l//25wd/9ucXv/bnB3/25wd/92eHz/bnB3/2ptd/9qbXf/
    +bG51/25wd/9nanH/cHN9/3Bzff9qbXf/bnF7/3V3ff9tb3P/d3l//2xvef9nanT/Zmlz/2xvef9qbXf/
    +bG95/2xudf9ucHf/bnB3/3Byef9ucXv/bnB3/25xe/9ucHf/am13/3N2f/9ucHf/bnF7/25wd/9qbXf/
    +bG95/2psc/91d33/bG51/3N1fP9wcnn/bnB3/2xudf9sbnX/c3V8/3Bzff9qbHP/dXiB/2psc/9qbHP/
    +c3V8/2Jlbv9dYGr/Z2px/2Rncf9maG7/Z2px/2dqcf9qbHP/bG95/2xudf9ucXv/bnB3/3V3ff9sb3n/
    +d3l//25xe/9zdn//am13/25xe/9wc33/eXuB/3V4gf9sb3n/c3V8/3V4gf9zdn//d3l//36Ahv95e4H/
    +dnh8/3l8hv9+gYr/e32D/3N2f/97fYP/bnB3/3N2f/93eX//cHN9/3N2f/9zdn//c3V8/3N1fP91eIH/
    +c3Z//3l8hv97fYP/e32D/3Bzff9ucXv/cHJ5/3Bzff9zdn//c3V8/3V4gf95e4H/cHJ5/2dqdP9zdn//
    +cHN9/3l7gf9sb3n/dXiB/25xe/9sbnX/dnh8/3Byef91d33/bG51/29xdf9ucHf/b3F1/2psc/9sbnX/
    +bG51/21vc/9sbnX/bW9z/3Bzff9wcnn/cHJ5/3Byef9wcnn/dXiB/25xe/9sb3n/eXuB/25xe/9zdn//
    +bnF7/25wd/9wcnn/bnF7/25wd/9ucXv/cHN9/25wd/9wcnn/cHJ5/3Z4fP9zdXz/cHJ5/2psc/9vcXX/
    +bnB3/2xudf9ucHf/am13/2ptd/9qbHP/amxz/3Byef9sbnX/bG51/2xudf9tb3P/bG51/3Z4fP9sbnX/
    +bnB3/21vc/9zdXz/bnF7/3Z4fP9tb3P/bG51/25xeP9ydX//dXd9/3V4gf91d33/bnB3/2ptd/9sb3n/
    +dXiB/29xdf9sb3n/bnF7/3V3ff9zdXz/cHJ5/3Z4fP9xc3n/cHJ5/25wd/9ucXr/Zmlz/2psc/9wcnn/
    +dXd7/25wd/9tb3P/dHd9/2tueP9sb3n/a210/21wef9sbnX/amxz/2hrdf9qbXT/am13/2psc/9ydX//
    +cnV+/3N2f/9vcnz/eXuA/3J1f/91eIH/enyD/3x/hf95e4H/dnh+/3d5f/96fIH/cnV//3J1fv91eIH/
    +eHuF/3p8g/91d33/foGK/3V4gf9wc33/cHN9/3N2f/91eIH/eXuB/3V4fv9wc33/c3Z//25xe/9zdn//
    +eHqB/3V4gf9ydX7/dHZ8/25wd/9ucXv/cHN9/3N2f/9vcXX/bG95/25wd/9zdXz/dXd9/2xudf9sbnX/
    +cHJ5/29xdf9ucXv/am13/3Bzff93eX//bnF7/3V3ff92eHz/b3F1/3d5f/9wcnn/bG51/2xudf9wcnn/
    +cHJ5/2ptd/9tb3P/bnF7/2xvef9ucHf/b3F1/25wd/9wcnn/bG95/2xudf9ucHf/am13/25xe/9sbnX/
    +am13/2ptd/9nanH/c3V8/2xudf9zdXz/bnF7/2xvef9sbnX/am13/3N1fP94eX3/bG95/3d5f/9ucHf/
    +bnB3/3V4gf9sb3n/Z2p0/3V4gf9zdn//cHJ5/3N2f/9zdn//dXiB/3V4gf91eIH/e32D/3d6g/95e4H/
    +c3Z//3l8hv91eIH/eXyG/3Bzff91eIH/dXiB/3t9g/93eoP/bnF7/3V4gf95fIb/bnF7/3Byef9ucXv/
    +cHJ5/25wd/9zdn//dXiB/3V4gf9wcnn/c3Z//2xvef9qbXf/c3V8/2xvef9nanT/Z2px/2Zpc/9maG7/
    +Zmlz/2Zobv9maXP/am13/2xvef9qbHP/bG51/2Zpc/9nanT/bG51/2psc/9ucXv/cHN9/2psc/9nanH/
    +bG95/2ptd/9zdn//Z2p0/25xe/9sb3n/am13/3N1fP9ucXv/cHN9/2ptd/9qbXf/bG95/29xdf9sbnX/
    +bG51/2xudf9tb3P/bG51/25wd/9wcnn/bW9z/2xvef9qbXf/cHJ5/3N1fP9sb3n/am13/3N1fP9sb3n/
    +c3V8/2xudf9ucHf/bnB3/2xvef9ucHf/bnF7/3N2f/9ucHf/cHJ5/3Byef9zdXz/cHJ5/25xe/9sb3n/
    +bG95/25wd/9sb3n/bG95/2xvef9sbnX/bG51/2xudf9wc33/bnB3/3Byef9ucHf/bnB3/25xe/94eX3/
    +bnB3/3Byef9ucHf/dXd9/3N2f/93eX//b3F1/29xdf9ucHf/dHZ9/3N1fP91d33/eHl9/3Byef9sbnX/
    +bnB3/3d5f/9vcXX/bnB3/3Byef92eHz/bnB3/3Byef9wc33/am13/2xvef9qbXf/am13/2dqdP9maXP/
    +amxz/3N1fP9nanT/Z2px/2xvef9kZ3H/Zmhu/2RmbP9nanT/Zmhu/2dqcf9kZ3H/Zmhu/2Zobv9kZ3H/
    +d3qD/3V4gf93eoP/dXd9/31+gf93eoP/dXiB/3l7gf91eIH/cHN9/3N2f/91eIH/eXyG/3d5f/91d33/
    +d3l//3+Bh/97fYP/c3V8/3+Bh/91eIH/c3V8/3N1fP9wc33/d3l//3l8hv97fYP/c3Z//3N2f/9sb3n/
    +bnF7/3Bzff9wc33/cHN9/3V3ff9ucXv/bnF7/3Byef9zdXz/bnB3/25wd/9tb3P/cHJ5/25xe/9ucHf/
    +bnF7/2xvef9ucXv/cHN9/3N1fP91eIH/d3l//2xvef9zdn//dXiB/25xe/97fYP/dXiB/3V3ff9zdn//
    +d3l//3l7gf95e4H/dnh8/3d6g/91d33/eXuB/3h5ff96e3//e32D/3d5f/91d33/fn+D/3V3ff97fYP/
    +d3l//3d5f/91d33/cHN9/3d6g/9zdn//eXyG/3N2f/9wcnn/c3V8/3N1fP95e4H/e32D/3N1fP97fof/
    +cHN9/3Bzff97fof/am13/2Zpc/9ucHf/bG95/29xdf9sbnX/bW9z/2ptd/9sbnX/bnB3/3N1fP91d33/
    +eHl9/25wd/93eX//bnB3/25xe/9nanH/bG51/25wd/9zdXz/c3V8/2dqcf9ucHf/c3V8/2psc/9vcXX/
    +bnB3/25wd/9qbXf/cHN9/3d5f/9zdXz/bnB3/25wd/9wcnn/cHN9/3h5ff91d33/b3F1/29xdf9ucHf/
    +b3F1/3Byef9sbnX/cHJ5/3Byef91d33/bG51/3Byef9qbHP/bnB3/3Byef9vcXX/dXiB/3V4gf9wcnn/
    +bnB3/3N2f/9sb3n/eXuB/25wd/9wc33/cHJ5/2xvef93eX//c3Z//3d5f/9ucXv/bG95/3Bzff9ucXv/
    +bG95/25xe/9wcnn/c3V8/3V3ff9zdn//d3qD/3N1fP9wcnn/bnF7/3V4gf9+gIb/dXiB/3Bzff93eoP/
    +c3Z//3l8hv9zdn//bG95/2xvef9ucXv/cHJ5/3Bzff91eIH/bnF7/25xe/9wcnn/c3Z//3Bzff9wcnn/
    +Z2p0/25wd/9vcXX/bnB3/25wd/9ucHf/bG51/25wd/9qbXf/cHN9/29xdf9vcXX/bnF7/3Bzff9zdn//
    +eXuB/3N1fP91eIH/bnB3/3V4gf91d33/d3l//3Byef9wcnn/bG95/3N2f/9wc33/c3Z//3Z4fP9wcnn/
    +bG51/2xudf92eHz/bG51/2ptd/9sb3n/cHN9/2xvef9nanT/Z2p0/2xvef9qbXf/Zmlz/2Zpc/9maXP/
    +Zmlz/2xudf91d33/bnB3/3Byef9zdXz/bG95/3Bzff9sb3n/cHN9/3Byef9zdn//c3V8/3Bzff9zdXz/
    +cHN9/3Byef9sbnX/bG95/2xudf9wcnn/bnB3/25wd/9zdXz/cHJ5/25xe/9qbXf/bG51/2ptd/9qbHP/
    +am13/2psc/9zdn//bnF7/2psc/93eoP/bG95/2dqdP9sbnX/bG95/3N1fP91eIH/dnh8/3Byef9zdXz/
    +b3F1/21vc/9ucXv/cHN9/25xe/92eHz/cHJ5/3Byef9wcnn/c3V8/2xudf9wcnn/bW9z/3Bzff9qbXf/
    +amxz/2xvef9ucHf/bnB3/2xudf9tb3P/c3V8/3V3ff9sbnX/bG95/25xe/9sbnX/c3V8/2xvef9qbXf/
    +Z2p0/2xudf9qbXf/am13/2xudf9sbnX/bG51/25wd/9ucHf/bG95/25xe/9sb3n/bnB3/3N1fP9tb3P/
    +cHJ5/25wd/9sbnX/bW9z/2dqcf9ucXv/Z2p0/2ptd/9sbnX/amxz/2xudf9ucHf/eHl9/3d5f/9vcXX/
    +dXd9/25wd/9ucHf/eXyG/2ptd/9qbHP/bG95/2xvef9wcnn/bnF7/3Byef9sb3n/bnB3/3Bzff9zdn//
    +d3qD/3t9g/9zdn//d3qD/3N1fP9zdXz/am13/3Bzff9ucXv/cHN9/3N2f/9nanT/cHN9/25xe/9nanH/
    +amxz/2xudf9qbXf/bG51/25xe/93eX//c3V8/29xdf9ucXv/bnB3/3N1fP92eHz/c3V8/2xudf9sb3n/
    +bG95/25xe/91eIH/c3Z//3N2f/9wc33/dXd9/2xudf9zdXz/amxz/21vc/9ucHf/b3F1/3V3ff9zdXz/
    +b3F1/25wd/91d33/cHJ5/3l7gf9sbnX/dXd9/3Byef9ucHf/c3V8/25xe/9wc33/bG95/2xudf9wc33/
    +bG51/2Rncf9qbXf/am13/2dqdP9maXP/am13/3Byef9sbnX/bW9z/25wd/9ucXv/dXd9/2xvef9sb3n/
    +c3V8/29xdf92eHz/bnB3/2xudf9qbXf/bnB3/29xdf9vcXX/cHJ5/29xdf91d33/cHJ5/3V3ff9wc33/
    +bnF7/3Byef9zdn//cHJ5/3N1fP9wcnn/bnB3/2ptd/9sb3n/am13/3N1fP9vcXX/bW9z/25wd/9ucXv/
    +bnF7/3l7gf9vcXX/c3V8/21vc/93eX//c3V8/3V3ff9vcXX/bnB3/2xudf9wcnn/bnF7/3N1fP9ucXv/
    +cHJ5/2dqdP9sbnX/eHl9/29xdf9zdXz/dXd9/3Z4fP9zdXz/bnB3/2xvef9sb3n/cHJ5/3Byef9ucHf/
    +bnB3/2psc/9sbnX/d3l//25wd/9ucXv/bG95/2xvef9zdXz/bnB3/3Byef9sbnX/bnB3/2xudf9sbnX/
    +bG51/2ptd/9ucHf/bnB3/3Byef9ucHf/cHN9/3Byef9zdXz/c3Z//3V4gf91eIH/c3Z//3N2f/91eIH/
    +c3V8/3N2f/9zdXz/e36H/3N2f/9ucXv/eXyG/3Bzff9sb3n/bG95/3Bzff9zdn//e36H/3t9g/9zdn//
    +c3Z//25wd/9ucXv/cHN9/3Z4fP91d33/d3l//3V3ff9ucHf/cHN9/3V4gf9ucXv/c3Z//2xvef9zdn//
    +bnF7/25wd/9ucXv/bnB3/3N1fP9ucHf/b3F1/2xvef9zdXz/amxz/2xvef9wc33/am13/25xe/9wcnn/
    +bG51/2dqcf9ucHf/bG51/25wd/9qbXf/cHJ5/25wd/9wcnn/bG51/25wd/9zdXz/bnB3/25wd/9zdXz/
    +amxz/25wd/9sbnX/bG51/21vc/9maG7/bG95/2dqdP9qbHP/bG51/2dqcf9nanH/Zmhu/3Byef9wcnn/
    +Z2px/25wd/9gY2z/ZGZs/3Byef9iZW7/XWBq/2BjbP9maG7/ZGdx/2Zobv9maG7/ZGdx/2Zpc/9nanT/
    +bnF7/3Bzff9zdXz/bG95/3V3ff9qbXf/bG51/2dqdP9qbHP/am13/2xvef9wcnn/amxz/3Byef9ucXv/
    +Z2p0/2ptd/9ucHf/bnB3/21vc/9sb3n/c3V8/3V3ff9sbnX/bG51/2dqdP9nanT/cHJ5/25xe/9qbXf/
    +bnB3/2Zpc/9maXP/am13/2xvef9ucXv/bnF7/3Bzff9ucHf/bnF7/2ptd/9sbnX/bnB3/21vc/9ucXv/
    +bnF7/2xudf9nanT/dXd9/2ptd/9zdn//amxz/2ptd/9nanT/amxz/2xvef9ucXv/bG95/25wd/9sbnX/
    +bnB3/2xudf9qbHP/bnB3/29xdf9ucHf/am13/25wd/9ucXv/bG95/2xvef9wc33/bnF7/3l7gf9wc33/
    +cHJ5/3V4gf9wc33/eXuB/3Bzff9sb3n/cHJ5/25wd/9ucHf/bW9z/3Byef9tb3P/cHJ5/25wd/9zdXz/
    +bG51/25wd/9nanT/bG51/2psc/9sbnX/bnB3/21vc/9sbnX/bnB3/25wd/9zdXz/bnB3/29xdf9vcXX/
    +cHJ5/3Bzff91eIH/bnB3/3Bzff9wcnn/e36H/3d6g/95e4H/cHN9/3N1fP9ydHz/enyC/3p8gv99f4X/
    +fn+D/3t9g/92eHz/d3qD/3t+h/9wc33/d3qD/3t9g/97fYP/d3qD/3d6g/94e4X/dXiB/3Z5gv9ydX7/
    +dHeA/3Fzev9rbnj/bnB3/3d4ff9vcnz/cnV+/25xe/9vcXn/bnB3/21vdv9tb3b/bG51/25wd/9ucHT/
    +bnB4/21wef9sb3n/bnB3/2ttdP9pa3X/aGty/2tueP9pa3X/a210/2tueP9sb3b/c3V7/25wd/9tb3b/
    +cHJ5/21vdv9ucHf/bG51/3h6gP9ucHf/am13/3N2f/9qbHP/YmVu/2Jlbv9maXP/Z2p0/3N1fP9tcHr/
    +bG95/2ptd/9oanT/am13/2xvef9xc33/cHN8/3R2fP9sb3n/amxz/2dqdP9ucXv/bG95/3V3ff9tb3P/
    +cHN9/2ptd/9sb3n/am13/2xudf9wcnn/bnB3/21vc/9wcnn/dXd9/2ptd/9ucXv/cHN9/2xudf9wcnn/
    +c3V8/2xudf9kZ3H/am13/25wd/9wcnn/bG51/2xvef9sbnX/am13/2Zpc/9maXP/bG95/2ptd/9qbXf/
    +am13/2dqdP9nanT/Zmlz/2Zpc/9nanT/YmVu/2xvef9maXP/Z2px/2xudf9qbHP/Z2p0/2psc/9zdXz/
    +cHN9/2dqdP9wcnn/amxz/2psc/91d33/Z2p0/2Rncf9maXP/bG95/2dqdP9sbnX/Z2px/2dqcf9nanT/
    +Z2p0/3Bzff9wc33/cHJ5/2dqdP9wcnn/Z2p0/2dqcf9maXP/Zmlz/2ptd/9nanT/am13/2Rncf9sbnX/
    +bG95/2Jlbv9nanT/bG51/2xvef9nanH/Z2p0/25xe/9ucXv/amxz/2dqcf9sbnX/bG95/3d5f/9wcnn/
    +bnB3/3Byef9sbnX/bG51/3V3ff9ucHf/bnB3/3Byef9ucXv/bG95/3Byef9qbXf/bG51/2xvef9sbnX/
    +c3V8/3Byef9vcXX/bG51/3Z4fP9zdXz/eHl9/25wd/9wcnn/bnB3/2xudf9wcnn/cHN9/3Byef9ucHf/
    +bnB3/3Byef9sbnX/ZGdx/2xudf9sbnX/Z2p0/2dqdP9sbnX/bnB3/25wd/9vcXX/cHN9/3Byef94eX3/
    +cHJ5/2xvef9wc33/cHN9/3d5f/9sb3n/bG95/25xe/9sb3n/bnB3/29xdf9wcnn/bG51/25wd/9wcnn/
    +c3Z//25xe/9wc33/bnB3/3N1fP9zdXz/dXiB/2ptd/9ucHf/bG51/2xudf9sbnX/bnF7/2ptd/9sbnX/
    +bG51/2xvef9wc33/dXd9/21vc/9zdXz/bnB3/3h5ff9wc33/eXuB/25xe/9qbXf/b3F4/3Bzff9ydHz/
    +dHZ9/3V3ff9qbXf/bG51/3N1fP94eX3/bnB3/3N2f/92eHz/dXd9/3Byef9ucXv/cXR9/29xeP9xc3r/
    +bnB3/25wev9pa3T/Z2p0/2ttdf9xc3v/bXB6/2xveP9rbnj/am12/2ZpcP9oanH/amxz/2dqcv9kZ3H/
    +ZWhy/2Zpc/9maXD/Z2lv/3Bzff9tb3f/b3F6/21vdv9vcnv/bnB3/25wd/9vcXj/cXN6/3J0ev9ucHj/
    +bXB6/29yfP9vcXb/bG95/2ttdf90d3//bG52/2xudv91d33/am13/2Rncf9nanT/bG95/21wev90d4D/
    +cnR8/3Bzff9rbnj/am13/21wev9vcnz/cXR+/29yfP9zdX3/bXB6/2ptd/9nanT/bG95/2ptd/9ucXv/
    +amxz/25xe/9qbXf/bG51/2ptd/9qbXf/bG95/2xvef9qbHP/bnF7/3V3ff9qbHP/bG95/3N1fP9sb3n/
    +bG95/3Byef9vcXX/Zmlz/25wd/9zdXz/c3Z//3Byef9zdn//cHN9/25xe/9qbXf/bnB3/3N2f/9wc33/
    +bG95/3Byef9sbnX/cHN9/25wd/9wcnn/bG95/2dqdP9wcnn/am13/3Byef9wc33/bG95/2xvef9vcXX/
    +d3l//3d5f/9zdXz/c3V8/2ptd/9sb3n/d3l//2xudf9sbnX/Z2p0/3Byef9ucHf/bG51/2xudf9tb3P/
    +bG95/2ptd/9zdXz/cHN9/3N1fP9sb3n/bnF7/2Zpc/9nanH/ZGdx/2dqdP9sb3n/am13/3Byef9nanH/
    +bG51/3N1fP9kZmz/amxz/25wd/9wcnn/bG51/3Bzff9wc33/d3l//2xvef9qbXf/Z2px/2ptd/9zdXz/
    +Z2p0/2dqcf9qbXf/Zmlz/2psc/9qbXf/ZGdx/2Zobv9maXP/am13/2dqcf9nanT/amxz/2ptd/9ucXv/
    +bG51/3Byef9ucHf/b3F1/2psc/92eHz/cHJ5/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/3V4gf9wc33/
    +c3V8/2xvef9wc33/bnB3/2dqdP9vcXX/b3F1/25wd/9sbnX/bG95/25wd/9sbnX/am13/25xe/9qbXf/
    +dnh8/2xudf9tb3P/cHJ5/3Byef91d33/bG51/2dqdP9sb3n/am13/2dqdP9sbnX/bnF7/25wd/9wcnn/
    +am13/3Bzff9ucHf/cHJ5/2xvef9ucHf/bG95/3Bzff9qbXf/cHJ5/2xvef9ucHf/bG95/3N2f/9sb3n/
    +bG95/25wd/9wc33/dXiB/3l8hv9ucHf/dXiB/25xe/93eoP/c3Z//3d6g/9ucXv/am13/21weP9xc3v/
    +b3F5/3R3fP90dnz/bnF7/21vc/9ucHf/dXd9/2ptd/9sb3n/bnF7/3N1fP9sbnX/bnB4/25xev9ucHj/
    +bnF5/25wd/9tcHr/Z2p0/2xvd/9tcHj/cnV9/3Bze/9ydHv/cHN9/3BzfP9vcnz/dHZ8/3N1e/9xc3r/
    +bnB5/3J0e/9wcnv/bnF5/21weP9ydHv/bG51/3Fze/9rbXb/bXB6/3Byef9sb3n/bG95/2xvef9rbXb/
    +aWx0/21weP9pbHb/b3F6/2lsdv9rbnb/bnF6/2ptdv9qbXf/c3V8/2xvef9kZ3H/Zmlz/2xvef9qbXf/
    +cHN7/2xvef9ucHn/am12/2tudv9tb3b/bW92/29yfP9ucHn/dXh//3Fzev91d33/dXd9/3V4gf9wc33/
    +c3Z//3Byef91d33/bnB3/29xdf9wc33/bnF7/3N2f/9zdn//bnB3/3d5f/95e4H/cHJ5/3Bzff95e4H/
    +dXiB/3d6g/9wc33/cHJ5/25xe/9wc33/dXiB/3l7gf9zdXz/c3Z//25xe/9wc33/bnB3/3Byef93eX//
    +cHN9/25wd/9ucHf/Z2px/3Byef9ucHf/bW9z/2dqdP9iZW7/am13/2Rncf9sbnX/c3V8/3N1fP9sbnX/
    +b3F1/3h5ff93eX//dXiB/3N2f/9sb3n/cHN9/3l7gf9ucHf/cHN9/3V3ff97fYP/eXuB/3l7gf93eX//
    +dnh8/3t9g/95e4H/foGK/36Biv9/goz/f4GH/35/g/92eHz/dXiB/3Z4fP92eHz/e32D/3l7gf95fIb/
    +c3Z//3V4gf93eoP/Zmlz/2ptd/9zdXz/cHJ5/2dqdP9ucXv/bnF7/3V3ff9sb3n/amxz/25wd/9wcnn/
    +d3qD/3Bzff9ucXv/c3Z//2ptd/9ucHf/dXd9/25wd/9sb3n/cHJ5/3Bzff9wc33/c3Z//25wd/9sb3n/
    +cHN9/25xe/91eIH/c3Z//25xe/9sb3n/e32D/3l8hv95fIb/c3Z//3V4gf9ucXv/bnF7/3V4gf95fIb/
    +d3qD/3V4gf9zdn//d3qD/3Bzff9ucXv/bnB3/2xvef9sb3n/bG95/3N2f/91eIH/cHJ5/2xvef91d33/
    +cHN9/3d5f/9ucHf/am13/3Byef9wcnn/dnh8/25wd/9sb3n/c3V8/29xdf9qbXf/bG95/3N1fP9wcnn/
    +c3Z//3N2f/93eoP/cHN9/3V4gf9wc33/bnF7/25wd/9zdn//bG95/3Byef9ucHf/bG95/2xvef9zdn//
    +bG95/25wd/9ucHf/c3V8/3Byef91d33/amxz/25xe/9qbHP/c3V8/2xvef9ucHf/Zmlz/2Rncf9sb3f/
    +b3J8/2ttdP9ucXr/cnR7/2xvef9tb3P/bnB3/3V3ff9sbnX/cHN9/3N2f/91d33/cHN9/29yfP9zdXz/
    +bnF7/3F0fv90dn3/cXN7/2hrdf9vcXn/b3F5/3N2gP9wcnn/cXN8/3Bzff9ydHv/cnV+/3Z5gv92eYH/
    +c3Z+/25xe/9zdn7/cnR9/3J1ff9tcHn/cXR9/3Fzev90d4D/bXB6/3N2gP9wc3z/b3J8/3F0ff9vcnz/
    +b3F6/21wd/9ydX3/cHJ7/3J0e/9tb3f/a252/3N1fv9tcHj/cHJ5/3Z4f/9zdXz/Z2px/2psc/9wcnr/
    +bW92/3J0e/9ucHn/bnF5/2xvd/9ucHT/cHJ5/21vdv9xc3r/b3F4/3N1e/9vcXn/bG95/25xe/91d33/
    +c3V8/3N1fP9qbXf/c3V8/2xudf9sbnX/am13/2xudf9wcnn/cHJ5/21vc/92eHz/d3l//2ptd/9ucXv/
    +dnh8/3Byef9wcnn/cHJ5/2xudf9maG7/bG51/3N1fP9wc33/bG51/2ptd/9sbnX/amxz/2ptd/9vcXX/
    +dnh8/25xe/9ucHf/bG51/2dqdP9ucXv/cHJ5/25wd/9sbnX/Zmlz/3Bzff9nanT/bnF7/3N2f/9wc33/
    +am13/25xe/93eoP/e32D/3V4gf95e4H/cHJ5/3Bzff97fYP/bnB3/3Byef9ucHf/cHN9/25xe/9wc33/
    +bnB3/25wd/9ucHf/bW9z/3V3ff9wc33/dXiB/2xvef9wc33/bG51/3Byef9sb3n/bnB3/3N2f/9wcnn/
    +c3V8/2psc/9zdXz/c3V8/2dqcf9sbnX/cHJ5/2xudf9sbnX/c3V8/3Byef91d33/dXd9/3Byef9wcnn/
    +c3Z//3d6g/9ucXv/bnB3/3N2f/9ucHf/cHJ5/3d6g/9zdn//dXiB/3l8hv97fYP/fX6B/3t9g/91d33/
    +d3qD/3l8hv93eX//fn+D/3t9g/97fYP/cHJ5/31+gf97fYP/fn+D/3l7gf9+gIb/d3l//3l7gf9zdn//
    +d3qD/3t9g/91eIH/dXiB/3N2f/9zdXz/c3V8/3N1fP9wc33/bG95/3N1fP93eoP/c3Z//3N1fP9sb3n/
    +cHN9/3Bzff93eX//cHJ5/2ptd/9wcnn/bG95/3V3ff9sbnX/bnB3/3V3ff9ucHf/amxz/25wd/9zdXz/
    +bG95/25wd/9sbnX/cHJ5/25wd/91d33/bnB3/25wd/9ucHf/dXd9/2xudf9sbnX/bW9z/2ptd/9qbXf/
    +cHN9/2xudf9wcnn/bG51/2ptd/9qbXf/dXd9/2psc/9sb3n/Z2px/3N1fP9qbXf/bnB3/2Zpc/9dYGr/
    +a210/29yfP9sbnX/bW92/3Fzev9sb3n/amxz/2xvef9ucXv/bG51/2xvef9zdXz/bnF7/2ptd/9rbnf/
    +b3F4/21wev90dnv/dHd7/29xef9maW//bW93/3J0e/9zdXz/bnB4/3Byef9wc3z/dHd//3R3f/94eoP/
    +dnmC/3V3gP9rbnf/c3V9/29yfP9vcnz/bnB2/21vdv9qbHL/b3J5/2xveP9sb3n/bXB6/21weP9tb3b/
    +bG53/21weP9pa3P/cHJ6/29yev9ydHn/bnB3/25wdf91d33/bnF7/3J0fP93eX//c3V8/2Zobv9sbnX/
    +c3V8/3BzfP91dnv/cnR5/3N1e/9xc3j/bW91/21veP9sbnT/bW92/29yev91d3//cHJ5/3Bzff91d33/
    +d3l//3N1fP91d33/bG95/3l7gf9ucXv/bnB3/25xe/9sb3n/dXiB/3V4gf9ucXv/dXd9/3N2f/9nanT/
    +bnF7/3l7gf9wc33/c3Z//3N2f/9sb3n/Z2p0/29xdf91eIH/c3Z//25wd/9ucHf/cHJ5/2xudf9ucHf/
    +bG51/3Z4fP9wc33/cHJ5/3N2f/9nanT/cHN9/3Bzff9wcnn/bnF7/2ptd/95e4H/bG95/3N1fP95fIb/
    +e32D/3N1fP9zdn//foGK/3l7gf91eIH/dXiB/3Byef9wc33/e36H/3V3ff91d33/dnh8/3t9g/95e4H/
    +dXiB/3N2f/9zdXz/c3Z//3N1fP93eX//c3Z//3t+h/93eoP/eXuB/3N1fP9ucXv/bG95/2xvef9zdn//
    +cHN9/3Bzff9sb3n/cHN9/3N1fP9qbHP/bG51/3Byef9sbnX/amxz/3Bzff9wcnn/dXiB/3V3ff9wc33/
    +bW9z/2xvef9ucXv/bnF7/2xudf9zdXz/bG51/2xudf9ucXv/am13/25wd/9wcnn/bG95/3N2f/9zdXz/
    +bnB3/2xvef9wcnn/b3F1/3Z4fP9wcnn/cHJ5/2Zobv9ucXv/bnF7/3N1fP9qbXf/bnF7/21vc/9ucXv/
    +bG51/2xvef9ucXv/bG51/2psc/9qbXf/ZGdx/2Zpc/9nanH/bG51/2Jlbv9nanT/bG95/2ptd/9qbHP/
    +Z2p0/2xvef9ucXv/dXd9/3Byef9ucHf/cHN9/3Bzff97fYP/cHN9/25wd/93eoP/cHN9/2xvef91d33/
    +eXyG/3N2f/93eoP/c3Z//3d6g/9wc33/e32D/3d5f/95e4H/dXd9/3t+h/9zdn//dXd9/3Bzff9wc33/
    +bnB3/3V4gf9ucHf/bnF7/2xvef9wcnn/c3Z//3d6g/9ucHf/dXd9/25wd/95fIb/c3Z//3t9g/91eIH/
    +am13/25xe/91eIH/b3J7/3F0fP92eH7/c3V8/25wd/9wc33/dXiB/3Byef9wc33/c3Z//3V4gf9zdn//
    +b3J8/3R2ff9xdH7/cnV+/3h6gP9wc3z/aGt0/21wd/90d3//c3Z//3Byef9vcXb/b3F4/25xe/9xdHz/
    +cnR8/3N0ev9wcnv/bG95/3J0fP9vcnr/bnB5/21vdf9xdHv/b3F4/3N2fv9tb3j/cnR9/25xev9vcnv/
    +bnB3/3R2fP9ydHv/bG52/21vd/9vcnz/b3F4/25xe/9tcHn/d3l//21wd/9ydHz/dnh8/3Byef9kZmz/
    +Z2p0/3Byef9ucXv/dHd9/3N1fP9wc3z/dHd+/2xvef9sb3n/cHJ5/3Bzff90dn3/dnmD/3R2f/91eIH/
    +eXyG/36Ahv95fIb/foCG/3V4gf95e4H/cHN9/3Byef9ucXv/c3V8/3V3ff9zdn//bnF7/3Z4fP9wc33/
    +ZGdx/2ptd/9zdXz/Z2p0/2xvef9sb3n/Zmlz/2Jlbv9qbXf/c3V8/3N1fP9nanT/bG95/2xvef9qbXf/
    +bG51/21vc/9zdXz/bnF7/2xudf9qbXf/YmVu/2xvef9sbnX/bG51/2Zpc/9kZ3H/cHN9/2Zpc/9ucHf/
    +c3V8/3Byef9nanH/b3F1/3Z4fP9zdn//cHN9/3Bzff9ucHf/bnB3/3l7gf9wcnn/bnF7/25wd/9wc33/
    +c3Z//3Bzff9ucXv/bG95/25xe/9ucHf/dXiB/3d6g/9+gYr/c3Z//3N2f/9vcXX/bnB3/25wd/9tb3P/
    +cHN9/2ptd/9sb3n/Z2p0/25xe/9qbXf/ZGdx/2Zpc/9ucXv/am13/2Zpc/9wc33/cHJ5/3V3ff91d33/
    +cHJ5/2psc/9qbXf/dXd9/3Bzff9tb3P/cHJ5/2xudf9qbHP/bG95/2psc/9qbXf/bG95/2xudf9wc33/
    +bnF7/2ptd/9sb3n/bG95/2ptd/91d33/c3V8/25wd/9kZ3H/bG95/3V3ff91d33/bnB3/3Byef9sbnX/
    +bG95/2psc/9qbXf/bG95/2xudf9nanT/bnF7/2dqdP9qbXf/bG51/2ptd/9maXP/am13/2xvef9sb3n/
    +am13/2ptd/9zdXz/cHJ5/3Z4fP9wcnn/bnB3/2xvef9sb3n/c3V8/3Byef9sbnX/c3V8/2psc/9nanH/
    +bG51/25wd/9tb3P/cHN9/2psc/9sbnX/bG51/3V3ff9ucHf/cHJ5/21vc/92eHz/am13/2dqdP9qbHP/
    +bG51/2psc/9zdXz/am13/2xvef9qbXf/bG51/2xvef91d33/bnB3/3Z4fP9tb3P/eXuB/3N1fP93eX//
    +cHN9/2dqdP9ucHf/dXiB/29yfP9xdHz/dXh//25weP9sbnX/cHJ5/3N1fP9qbXf/bnF7/25xe/9sb3n/
    +cHN8/3Byef9ydHv/bnB4/25xev9xc3r/am13/2dqdP9sb3j/bG95/3Bye/9rbnj/am12/2tueP9rbnj/
    +bG95/29xeP9rbnf/bnF6/21wev9xdH3/cXR+/3F0ff9vcnv/cnR7/2hrdf9sbnb/bG94/25weP9sbnb/
    +b3F5/2xvef9wc33/dHZ8/2ptd/9xc33/dnh8/21wev9ydX7/dHZ8/31+gv9ucHf/c3Z//3l7gf93eoP/
    +Z2p0/2xvef9zdn//c3Z//3Z4fv92eH7/cHN9/3J1fv9sb3n/b3J8/2xvef9sb3n/dHd7/3Z4fv9tcHr/
    +c3V8/3N1fP91d33/c3V8/3Z4fP9ucHf/dnh8/3N1fP9vcXX/bnB3/25xe/93eoP/c3Z//3Bzff95e4H/
    +dXiB/2ptd/9zdn//d3qD/25xe/9zdn//dXd9/29xdf9maGz/b3F1/3V3ff91d33/bnB3/3Byef9ucHf/
    +bG51/2xudf9sbnX/dXd9/25xe/9qbXf/bG51/1xfaP9qbHP/amxz/2psc/9iZW7/YmVu/2xvef9iZW7/
    +Z2p0/25xe/9sb3n/am13/2psc/91d33/bnF7/3Byef9zdXz/bG95/3Byef91d33/bnB3/2xvef9ucHf/
    +bnF7/3Byef9zdXz/cHJ5/25wd/9zdXz/bnB3/3Bzff9wc33/e36H/3Bzff91d33/bG95/3Bzff9wcnn/
    +cHJ5/3N2f/9wc33/cHN9/25wd/91d33/bnB3/2dqcf9qbHP/c3V8/3Byef9nanH/bnF7/3N1fP93eX//
    +dXd9/25xe/9tb3P/cHJ5/3V3ff9zdn//bG95/25xe/9vcXX/b3F1/3N1fP9sbnX/bW9z/2xudf9ucHf/
    +c3Z//3V4gf9ucHf/bnF7/25xe/9wcnn/d3qD/3V4gf9zdn//bG95/3N2f/93eoP/eXuB/3Bzff91eIH/
    +cHN9/25xe/9ucHf/bnF7/3Bzff9ucXv/bnB3/3d5f/9sb3n/bnF7/3Bzff9wc33/bG95/3Byef9zdn//
    +cHN9/3Bzff9zdXz/d3qD/3V4gf97fYP/cHJ5/3N2f/9wc33/c3Z//3d5f/9zdn//cHJ5/3V4gf9wc33/
    +cHN9/3N2f/93eoP/dXiB/3t9g/9zdXz/cHN9/3Bzff91d33/c3Z//3N2f/9sb3n/c3Z//2xudf9ucHf/
    +bnB3/25wd/9qbHP/c3Z//3Bzff9zdn//bG95/3Byef9sbnX/d3l//2ptd/92eHz/bW9z/3d5f/9zdXz/
    +d3l//3Bzff9maXP/bG95/3Bzff9sbnX/bnF7/3F0fv9xdH3/bnF7/3N2f/93eX//bG95/3Bzff91d33/
    +dXd9/3Byef9ucHf/cXN6/21veP9sb3f/bXB4/2tudv9oa3X/am1z/2xud/9zdn3/am13/2tudv9oa3X/
    +Zmlz/2hrdf9pbHP/aGt0/2hqcP9naW//Zmhu/2hrdf9oa3L/Z2p0/3N1fP9sbnX/bW9z/25wd/9sb3n/
    +bG95/25xe/9sb3n/cHN9/3N2f/9qbXf/bnF7/3N2f/9ucHf/dXiB/3Z4fP99foH/b3F1/3N1fP94eX3/
    +c3V8/2dqcf9qbHP/cHJ5/3N1fP91d33/dnh8/3Byef9zdn//bG51/3Byef9ucHf/bW9z/3V3ff91d33/
    +bG51/3Byef9ucXv/c3V8/2xvef9zdXz/bG95/3d5f/9ucXv/bG51/3N1fP9ucHf/dnh8/3Byef9ucXv/
    +d3l//3Bzff9nanT/c3Z//3d5f/9ucHf/cHJ5/3Z4fP9vcXX/ZWZq/29xdf9zdXz/dnh8/2ptd/9wc33/
    +cHN9/25xe/9ucHf/bnB3/3N2f/9wc33/bnB3/3Byef9maG7/bG51/2xudf9qbXf/Zmlz/2Zpc/9sb3n/
    +YmVu/2psc/9sb3n/am13/2dqdP9sbnX/bnF7/2xvef9ucXv/bnF7/2xudf9qbXf/bnF7/2xudf9qbXf/
    +amxz/2xvef9sb3n/bnF7/2xudf9nanH/c3V8/2xudf9ucHf/bnF7/3d6g/9wcnn/dnh8/25wd/9wcnn/
    +b3F1/29xdf9zdXz/bG95/3N1fP9sbnX/c3V8/2xvef9maXP/ZGdx/25xe/9qbXf/Zmlz/3Byef9zdXz/
    +eHl9/3Z4fP9wcnn/bnB3/3Bzff91eIH/c3V8/29xdf9ucHf/bW9z/21vc/9wcnn/bG51/2xvef9sbnX/
    +bG51/3Bzff9sb3n/ZGdx/2dqcf9maG7/Zmlz/2xvef9wc33/bnF7/2dqdP9ucHf/c3V8/3V3ff9sbnX/
    +c3V8/2ptd/9ucXv/am13/2xvef9ucXv/bnB3/2xudf91d33/amxz/2xudf9ucHf/b3F1/2dqcf9ucHf/
    +bnB3/25xe/9ucHf/bG95/3N1fP92eHz/dXd9/2xvef9wc33/cHJ5/25xe/9zdn//cHN9/3Byef91eIH/
    +bnF7/25xe/9sb3n/dXiB/3V4gf9+gIb/dXd9/3V4gf91eIH/e32D/3N2f/93eoP/bnB3/3V3ff9sb3n/
    +bnB3/25wd/9sb3n/bG51/3N2f/9wc33/dnh8/25wd/9zdXz/bG95/3d5f/9qbXf/dXd9/21vc/93eX//
    +cHN9/3Bzff9sb3n/ZGZs/3Byef9wc33/am13/29yfP9zdoD/c3Z+/3Byef93eoP/eXuB/3Byef93eoP/
    +e32D/3l7gf91eID/dnmB/3t9gP92eIH/c3Z+/3R3f/9ydH3/cnV+/3J0ff9wcnn/eHqE/3N1fv9sb3n/
    +bG95/25wd/9zdXz/bW9z/2xudf9ucHf/bG95/29xdf9zdXz/cHJ5/25xe/9qbXf/ZGdx/2psc/9qbXf/
    +amxz/21vc/9wcnn/b3F1/3Byef9wc33/Z2p0/25xe/91eIH/bnB3/3d6g/95e4H/f4GH/3N1fP93eoP/
    +e36H/3d6g/9wc33/bnF7/3t9g/95e4H/eXuB/36Ahv93eoP/eXuB/25xe/91eIH/c3Z//2xvef91d33/
    +dXd9/2xudf9ucHf/cHJ5/3N1fP9zdXz/eHl9/3Bzff91eIH/cHN9/25xe/9zdXz/c3Z//3d5f/93eoP/
    +dXiB/3d5f/9wc33/amxz/3Bzff93eX//bG95/3V4gf95e4H/cHJ5/2dqdP9ucHf/d3l//3l7gf9ucXv/
    +cHN9/25xe/9sbnX/bG51/21vc/9ucXv/cHJ5/2xudf9ucXv/Zmlz/2ptd/9sbnX/am13/2dqdP9nanH/
    +bnF7/2Zobv9ucHf/bnF7/25wd/9qbHP/am13/3Bzff9ucXv/bnB3/3Bzff9sbnX/bW9z/3N1fP9wcnn/
    +bnB3/29xdf9ucHf/bG51/3Byef9qbXf/Zmlz/25xe/9nanH/bG95/25xe/91eIH/am13/3Bzff9nanT/
    +am13/2Zpc/9nanT/cHN9/21vc/9zdXz/bW9z/3V3ff9ucXv/Zmlz/2dqdP91d33/bnF7/2ptd/9wc33/
    +bG95/3V3ff93eX//cHN9/2psc/9qbHP/am13/2xvef9qbHP/bnF7/2dqcf9qbHP/bG95/2psc/9ucXv/
    +bG51/21vc/91d33/cHJ5/2ptd/9sbnX/bG51/2psc/9ucHf/cHJ5/3Byef9qbHP/cHJ5/3N1fP94eX3/
    +bnF7/3Bzff9ucXv/cHJ5/25wd/9wcnn/cHN9/25wd/9ucHf/dnh8/2dqdP9qbXf/bG51/21vc/9kZmz/
    +b3F1/25wd/9zdXz/bnB3/25wd/9ucHf/c3V8/3V3ff9ucHf/c3Z//25wd/9ucHf/c3V8/3Bzff9wcnn/
    +c3Z//2xvef9nanT/am13/3N2f/9ucXv/d3l//3Bzff9wc33/c3Z//3l7gf9wc33/c3Z//2xvef92eHz/
    +bnB3/29xdf9ucHf/bnF7/2xvef91d33/c3Z//3V3ff9sb3n/cHJ5/29xdf91d33/bG51/3Z4fP9tb3P/
    +d3l//3V3ff9wc33/cHN9/2Rncf91eIH/c3Z//2xveP9vcnz/c3aA/3V4gP9sb3n/dXiB/3V3ff9sbnX/
    +c3V8/3Z4fP91d33/c3V8/29xdf9xc3n/cHJ5/3Fzev9vcXb/bG95/3Bzff9ucHf/bnB3/3V3ff9wcnn/
    +bG95/2xudf9nanT/cHN9/2psc/9maXP/amxz/2psc/9qbHP/bG95/25xe/9sb3n/dXiB/3N1fP9wc33/
    +d3qD/3N1fP9wc33/dXiB/3l7gf95e4H/d3qD/25xe/95e4H/d3qD/3N1fP91eIH/dXd9/3l8hv9sb3n/
    +c3V8/3V3ff9wcnn/Z2p0/2Zpc/92eHz/dXd9/3V3ff91d33/bnB3/3Bzff9nanH/bnB3/2xvef9qbXf/
    +bnF7/3Bzff9sbnX/cHJ5/3N1fP9wc33/c3Z//3t9g/91eIH/foGK/3d6g/93eoP/c3Z//3l7gf97fof/
    +eXuB/3d6g/97fof/eXuB/3V3ff95fIb/e36H/3V4gf95e4H/eXyG/3Bzff9qbXf/cHJ5/3N2f/93eX//
    +bG51/3Byef9ucHf/bG51/25wd/9ucHf/c3V8/3V3ff9sbnX/bnF7/2Rncf9qbXf/Z2p0/2dqcf9nanH/
    +YmVu/2xvef9iZGr/bG51/25xe/9sb3n/Z2p0/2xudf9wc33/bG95/2xvef9zdXz/bG51/2xudf9wc33/
    +bG95/2dqdP9maXP/am13/2ptd/9sb3n/amxz/2Zpc/9zdXz/am13/2ptd/9ucXv/dXd9/2dqdP9qbXf/
    +YmVu/2dqdP9iZW7/Z2px/2ptd/9maXP/bG95/2Zobv9qbXf/Zmlz/2BjbP9gY2z/bnF7/2ptd/9maXP/
    +am13/2psc/9wc33/bnF7/2dqdP9ucXv/c3Z//3Bzff9wc33/bG95/3N2f/9ucHf/bG95/25xe/9sb3n/
    +c3V8/25xe/9tb3P/dXd9/25wd/9ucHf/b3F1/25wd/9qbXf/am13/25wd/9sb3n/Zmlz/2ptd/9ucXv/
    +c3V8/2ptd/9ucXv/bG51/2xvef9sb3n/bG95/2xvef9ucHf/am13/3Bzff9nanT/am13/2ptd/9sbnX/
    +YmVu/2psc/9nanT/bG95/2psc/9qbHP/am13/25xe/9sb3n/amxz/25xe/9qbXf/bG51/25xe/9sb3n/
    +bG51/2xudf9kZ3H/Z2p0/2Rncf9sb3n/cHJ5/3N1fP9sb3n/bW9z/25wd/91d33/c3V8/3V3ff9ucHf/
    +eXuB/25wd/9wcnn/am13/2xvef9qbXf/c3Z//3V3ff91d33/b3F1/3Byef9ucXv/d3l//25xe/93eoP/
    +cHJ5/3d6g/9ucXv/c3Z//3V4gf9maG7/dHeA/29ye/9rbnf/cHN8/3R2fP9vcnz/bG51/3Bzff91d33/
    +bG51/3N1fP9zdXz/c3V8/3N1fP9tb3P/bnB3/3N1fP9ucXv/am13/2psc/9sb3n/am13/2psc/9zdXz/
    +Z2p0/2xvef9nanH/amxz/3N1fP9sbnX/bG51/2xudf9tb3P/b3F1/3Byef91d33/cHJ5/3V4gP9zdXz/
    +c3Z//3R3gP9ucXv/bnB3/2xvef9ucXv/cHJ5/3J0e/9rbXP/dHZ9/3V3ff9vcXj/cnR7/3R2fP91eIH/
    +bW90/25xe/9zdXz/am13/2dqcf9maG7/dXd9/3Byef92eHz/dXiB/25xev90d4D/aGt1/3N2f/9xdH7/
    +b3F4/3V4gf92eYH/c3V8/3d6g/95fIb/d3qD/3l8hv9+gYr/eXyG/4GDiv91eIH/dXiB/3V4gf91eIH/
    +eXyG/3t9g/9ucXv/d3l//25xe/9ucHf/c3V8/3h5ff9ucXv/d3l//3V3ff9ucHf/Zmlz/29xdf92eHz/
    +dnh8/2psc/9tb3P/cHJ5/2ptd/9sb3n/bG95/3N2f/91eIH/c3Z//3V4gf9qbXf/bnF7/25wd/9ucHf/
    +bnF7/2Zpc/9zdn//Zmhu/29xdf9wc33/bG95/2dqdP9ucHf/d3qD/25xe/9wc33/cHN9/25wd/9ucHf/
    +eHl9/3N1fP9ucHf/bnB3/25wd/9ucHf/bnF7/2xudf9qbHP/dXd9/2xudf9sb3n/cHN9/3V3ff9ucHf/
    +cHJ5/2Zpc/9qbXf/Z2p0/21vc/9ucXv/am13/25wd/9vcXX/dnh8/25wd/9kZ3H/Zmlz/3V3ff9tb3P/
    +bW9z/3Bzff9ucHf/dXiB/3l7gf9zdn//bG51/3N1fP9ucXv/cHN9/25wd/92eHz/bnB3/25xe/9wcnn/
    +bnB3/3Bzff9ucHf/bnB3/3N1fP9wcnn/bG51/2xudf9qbXf/am13/2ptd/9qbXf/bnF7/2dqcf9sb3n/
    +bnF7/3Bzff9sb3n/bG95/2xudf9sb3n/Zmlz/2dqdP9nanT/amxz/2dqcf9wc33/Zmlz/2ptd/9qbXf/
    +am13/2Jlbv9sbnX/bG95/3V3ff9ucHf/bnB3/3N2f/93eoP/c3Z//3Byef91eIH/c3Z//3N1fP95fIb/
    +dXiB/3V3ff91eIH/c3V8/3N2f/9ucXv/eXyG/31+gf9+gIb/dXiB/3V3ff91eIH/e32D/3d6g/93eoP/
    +bnF7/3t9g/9sb3n/bG95/2dqdP9wcnn/am13/3V4gf93eX//dXd9/25wd/9wc33/cHN9/3d6g/9wc33/
    +eXyG/25wd/94eX3/c3V8/3N1fP9zdXz/Zmhs/3V4f/9zdoD/bnB5/3R3gf92eH7/c3Z//25xe/93eoP/
    +dXd9/29xdf9zdn//dXd9/3V3ff9wcnn/bG51/25xe/9zdXz/bnF7/21vc/9tb3P/cHJ5/2xvef9sbnX/
    +dXd9/2xvef9wcnn/bG95/2dqdP91d33/bnB0/21vdv9tb3b/am13/2xudP9tcHr/c3V9/2xvef90d4D/
    +b3J5/29xef9zdn3/cXN4/29xdv9tb3f/bXB6/2xvef9xdH3/Z2pz/3N1ff91d33/b3J5/3Fzev90dnv/
    +dXd+/25wdf9wc33/dXd9/25xe/9qbXf/bnF7/3l7gf9zdn//eXuC/3Z5g/90d4D/d3mA/2xueP91d3//
    +dHeB/3N1e/95e4L/eXuB/3J0fP91eIH/cHN9/3Bzff9wc33/eXuB/3Bzff95fIb/cHN9/3N1fP9ucXv/
    +bG95/3Byef9ucXv/Z2p0/25xe/9qbXf/Z2p0/2ptd/9zdXz/am13/3V3ff9zdXz/bG51/2Rncf9sbnX/
    +dXd9/3Z4fP9nanT/bG51/25xe/9qbXf/am13/2ptd/9sb3n/cHN9/2xvef9ucXv/Zmlz/2ptd/9ucHf/
    +bnB3/2xudf9kZmz/dnh8/2Zobv9ucHf/c3Z//2xvef9qbHP/bnB3/3d6g/9zdn//cHN9/3N2f/9wc33/
    +cHN9/3l7gf9ucXv/bG95/2xvef9ucXv/cHN9/3N2f/9wcnn/bG95/3V3ff9ucHf/bnB3/3V3ff92eHz/
    +am13/25xe/9kZ3H/bG51/2psc/9qbHP/bG95/2dqdP9qbXf/amxz/25xe/9qbXf/Zmhu/2Zobv9zdXz/
    +bW9z/2psc/9ucXv/ZGdx/3N1fP91d33/c3V8/3Byef91d33/dXd9/3V3ff9ucHf/dXd9/25wd/9ucXv/
    +bnF7/25wd/91d33/dXiB/25xe/91eIH/cHN9/2xvef9ucHf/cHN9/2xvef9ucXv/bnF7/3Bzff9ucHf/
    +c3Z//3d6g/9zdn//cHN9/3Byef9tb3P/c3V8/25wd/9sb3n/am13/2psc/9qbHP/bG95/2Zpc/9nanT/
    +am13/2ptd/9kZ3H/amxz/2ptd/91d33/bG51/21vc/9wcnn/c3V8/3Bzff9nanH/bnF7/2xudf9tb3P/
    +cHJ5/2xudf9qbXf/bG51/25wd/9sbnX/Zmlz/25xe/91d33/c3V8/2xudf9sbnX/bnB3/3N1fP9zdXz/
    +dXd9/2xudf91d33/Zmlz/2ptd/9maXP/am13/2psc/9wc33/cHN9/3Bzff9qbHP/bG95/2ptd/9sb3n/
    +Zmlz/3V3ff9nanH/cHN9/2ptd/9ucXv/am13/2RmbP90dXv/cnR9/2ttdv9ucXn/cnV+/3N1fP9ucHf/
    +c3Z//3V4gf9zdXz/dXiB/3N2f/95e4H/dXiB/3Bzff95fIb/eXyG/3t9g/9zdn//c3V8/3l8hv94e4H/
    +dXd9/31/hf96fIL/eHuE/3Z5gf9zdXz/en2F/3R3f/9xc3r/cnR7/29xeP9wcnn/cXR8/3d5fv9wc3v/
    +c3Z+/3Fzev9vcXj/cnR7/3J0ef9xc3r/b3F2/25wef9vcnr/cnR5/2ptc/9ydHz/dXd//3R2fP9vcnv/
    +cHJ5/3R3gf9vcXj/c3Z//3p8gv9wcnn/Z2p0/2dqdP93eX//dnmC/3V3fv9ydX3/bXB6/29yeP9maXP/
    +Z2py/2ptdf9nanT/bnF5/3J1ff9sb3b/cHN9/3Bzff9ucXv/cHN9/3l8hv91eIH/d3qD/3N2f/9zdn//
    +c3V8/3Bzff91eIH/cHN9/3N2f/93eX//c3Z//25wd/9wc33/c3Z//25wd/93eX//d3l//21vc/9iZW7/
    +am13/3N1fP93eX//am13/2xudf9wcnn/bW9z/2xudf9sbnX/bG95/3N1fP9ucXv/cHN9/2dqdP9wc33/
    +c3V8/3Bzff9ucHf/bG95/3d6g/9sb3n/cHN9/3l7gf9wc33/bnF7/3N2f/9+gIb/eXyG/3N2f/91eIH/
    +c3Z//3Bzff91d33/cHJ5/25xe/9sb3n/bG95/25wd/9sb3n/Z2p0/2Rncf9ucXv/Zmlz/2dqdP9sb3n/
    +c3V8/2psc/9wc33/am13/2xvef9qbHP/am13/25xe/9nanT/bG51/21vc/9zdXz/bG95/2Rncf9kZ3H/
    +cHN9/2ptd/9nanT/bnF7/2dqdP9zdXz/dXd9/3V3ff9ucXv/cHN9/25xe/9wc33/amxz/2ptd/9nanT/
    +amxz/2dqdP9qbHP/bnF7/2ptd/9qbHP/Zmlz/2Rncf9iZW7/Zmhu/2Rncf9iZW7/ZGdx/2Zobv9maXP/
    +YmVu/2Rncf9maXP/Zmlz/2Zobv9kZ3H/Zmhu/2dqdP9maXP/Zmlz/2dqcf9kZ3H/Z2px/25xe/9qbXf/
    +am13/2xvef9sb3n/Zmlz/2ptd/9ucHf/dXd9/3Byef9ucHf/bnF7/3N2f/9zdXz/bnB3/3Bzff9ucXv/
    +bnB3/3V3ff9ucHf/bnB3/25wd/9ucHf/am13/2Zobv9zdXz/c3V8/3Byef9sbnX/bW9z/21vc/9wcnn/
    +cHJ5/3Bzff9sbnX/dXd9/2dqdP9sbnX/Zmlz/2dqdP9nanT/bnF7/3N1fP91d33/bnB3/3V3ff9ucXv/
    +cHJ5/25wd/92eHz/b3F1/3N1fP9zdXz/dnh8/25wd/9kZmz/bnB1/25xe/9tb3f/cHN9/3l7gf91eIH/
    +c3Z//3t9g/9wc33/bnB3/3Bzff9zdn//d3l//3V3ff9sb3n/bnF7/3Byef90dn3/bXB3/2ptdv9vcnv/
    +cnV+/21wdf9zdXz/bG93/25xev9tcHn/aGpz/3J0ev9wc3v/b3F6/3Bye/9pbHX/bnF5/2xvd/9xdH7/
    +a254/2ptd/9zdXv/bG95/29yev9zdXv/bnB2/25wdv9vcXX/b3F4/25wdf9sb3b/cHJ5/3V3fP93eX//
    +bnB3/3ByeP91eIH/bW94/3V3fv93eX//bW95/2Zpc/9nanT/dXd9/3R2ff9wcnn/cHN7/2xvef9rbnT/
    +Zmlz/2RncP9oa3P/Y2Zv/2Vocf9qbXb/a212/25xe/9qbXf/Z2p0/2dqdP9zdXz/bG95/3Byef9ucHf/
    +bG95/2ptd/9wc33/c3V8/2ptd/9sb3n/cHN9/2xvef9qbXf/am13/3Bzff9tb3P/dnh8/3l8hv9vcXX/
    +Zmhu/2xudf92eHz/d3qD/2xvef9ucXv/c3Z//3N1fP9wcnn/bG95/3Bzff93eX//c3Z//3V4gf9qbXf/
    +c3Z//25wd/9wcnn/cHJ5/2ptd/95e4H/am13/3Byef9zdn//c3V8/2ptd/9zdn//foCG/3l8hv93eoP/
    +eXuB/3V4gf95fIb/eXyG/3l7gf93eX//cHN9/3d6g/91eIH/d3qD/3N1fP9ucXv/e32D/3N1fP9zdn//
    +dXiB/3l7gf9wc33/cHN9/25wd/9wc33/cHJ5/25wd/91d33/amxz/2xudf9ucHf/dnh8/25wd/9kZ3H/
    +ZGdx/3N1fP9qbXf/bG51/3Bzff9nanT/bnF7/3V3ff9zdXz/bG95/3Bzff9qbHP/bG95/2dqdP9sb3n/
    +Z2p0/2xudf9qbHP/am13/3Bzff9ucXv/bG51/25wd/9qbXf/Z2p0/2xudf9qbXf/amxz/2ptd/9nanT/
    +Z2p0/2Zpc/9qbXf/bG95/25xe/9ucXv/bG95/2xudf9ucXv/Z2p0/2xudf9qbHP/am13/2xudf9wcnn/
    +bG51/2xudf9wcnn/bG95/2Rncf9sbnX/bnB3/3V3ff9wcnn/b3F1/25xe/91eIH/c3Z//25wd/9wc33/
    +cHN9/3Byef9zdn//bnF7/2ptd/9ucXv/bG95/25wd/9kZ3H/bnF7/25xe/9sb3n/Z2p0/2ptd/9sbnX/
    +bnF7/2xvef9qbXf/Z2p0/3N1fP9kZ3H/Z2px/2BjbP9iZW7/ZGdx/3N1fP9ucXv/am13/2xudf9wc33/
    +bG95/2xvef9qbXf/dXd9/21vc/91d33/bnF7/3h5ff9ucHf/ZGZs/3Bydv9ucXv/bG95/25xe/9zdn//
    +d3qD/25xe/93eX//c3Z//25wd/9zdn//c3Z//3l7gf95e4H/cHJ5/3Bzff9vcnz/dXd+/3Byef9rbnj/
    +cHN7/3Fze/9sbnb/cHJ4/2tueP9sb3j/bG95/2psc/9ydXz/cXN7/2lsdv9ydX7/aWtx/3Bye/9oa3T/
    +bXB5/2RncP9laHL/bW93/2ptd/9sb3n/bnF6/2ptd/9qbXf/am13/2xvef9qbHT/a210/21vc/90dnz/
    +dHZ8/25wd/9vcXb/c3Z//2xvd/9xdH3/cXR+/2tueP9maG7/Zmhu/3V3ff9zdX3/bnF7/3R3fv93eX7/
    +c3V8/3J1fv9ucXr/bnF6/2tud/9vcXj/dXiA/3R2fv9wc33/bnF7/25xe/9sbnX/dXd9/3V3ff91eIH/
    +dnh8/3N1fP9wcnn/bnF7/3d5f/9ucHf/cHJ5/3N1fP9zdXz/bnB3/3Byef9zdXz/b3F1/3Z4fP93eX//
    +bnB3/2dqcf9ucXv/dXd9/3l7gf9vcXX/bG95/3V4gf9zdXz/bnF7/2ptd/9wc33/d3l//3Bzff9zdn//
    +am13/3N2f/9wcnn/c3V8/25wd/9maXP/d3l//2dqcf9ucHf/bnB3/25xe/9nanT/cHJ5/3V3ff9wc33/
    +cHN9/3N2f/91d33/cHJ5/3Byef9ucHf/bnB3/2dqcf9zdXz/bnB3/3Bzff9sb3n/Z2p0/3V3ff9ucHf/
    +bnB3/3N2f/95e4H/cHN9/3N2f/9sb3n/cHJ5/2xudf9ucHf/dXd9/2xudf9ucHf/bnB3/3Z4fP9ucHf/
    +Z2px/2ZobP9zdn//bnF7/25wd/9zdXz/amxz/3Byef91d33/bG95/2xvef9wc33/bG51/25xe/9ucXv/
    +c3V8/2xudf9sbnX/Z2p0/2xudf9ucXv/bG95/2dqdP9sb3n/amxz/2Rncf9qbHP/bnF7/2dqcf9sb3n/
    +am13/2ptd/9qbXf/bG95/25xe/9ucXv/bnF7/2xvef9qbHP/bnF7/25xe/9qbXf/Z2p0/21vc/9sbnX/
    +bnF7/21vc/9ucHf/cHN9/3Byef9maG7/bnB3/3Byef9zdn//c3Z//2xvef9sb3n/cHN9/3N2f/9ucHf/
    +cHN9/3N1fP9ucHf/dXiB/3Bzff9qbXf/cHN9/25wd/9ucHf/Zmlz/3V4gf93eoP/cHN9/2xvef9wcnn/
    +bG95/25xe/91d33/bnF7/25xe/93eX//amxz/2xudf9qbHP/Zmlz/21vc/92eHz/dXd9/3Byef9tb3P/
    +d3l//2xvef9ucXv/amxz/3N1fP9nanT/bG95/2dqdP9sb3n/Zmlz/2Jlbv9sbnX/am13/2psc/9sbnX/
    +bnB3/3V3ff9sbnX/dXd9/3Byef9qbHP/bG51/2xvef9zdXz/c3V8/2ptd/9xdH3/bG54/25xe/9ucHf/
    +am11/25wd/9tb3b/bG52/2tudP9rbnf/aGt0/2Zpc/9naW//cXN6/3R2fP9qbXf/cnR8/2Zob/9kZ3H/
    +ZWhy/25wd/9laHH/aGt1/3Bzff9ucXv/cHN9/3Bzff9ucHf/amxz/29xdv9wcnr/b3F4/21vdv9ucHX/
    +dnh8/3V3ff9xc3v/cHN4/3N1fP9ydHz/dHeA/3h6gP9wcnn/Zmlz/2Zobv9wc33/cXN5/3Fzev9ydHr/
    +c3V8/29xef9tcHj/b3F3/2xudv9pa3T/bnF5/3N1fP9xc3n/c3V8/29xdf9ucXv/bG95/3d5f/91eIH/
    +d3qD/3N2f/9zdn//cHN9/3N2f/95e4H/c3Z//3N2f/9zdn//cHN9/2xvef9ucHf/c3Z//25wd/93eX//
    +d3l//3N2f/9maXP/cHN9/3N2f/93eX//bnB3/3Byef91d33/b3F1/29xdf9sbnX/dXd9/3N1fP9ucHf/
    +cHJ5/2Zobv9ucHf/am13/2ptd/9tb3P/Zmhu/3V3ff9iZW7/am13/2xvef9sbnX/Zmlz/2ptd/9zdXz/
    +c3V8/3N1fP91d33/bnF7/2xvef9zdXz/bnB3/25wd/9nanT/dXiB/25xe/9zdn//bnB3/2dqdP9zdn//
    +am13/25xe/9zdn//dXiB/25wd/9zdn//am13/25xe/9vcXX/bnF7/3N1fP9sbnX/bnB3/3Byef92eHz/
    +bnB3/2Zpc/9kZmz/cHJ5/2xvef9nanT/bnF7/2Zpc/9sb3n/c3Z//2xvef93eoP/dXiB/25wd/9zdn//
    +c3Z//3V3ff9ucHf/bnB3/2ptd/9ucHf/cHN9/3V4gf9wcnn/c3Z//25xe/9ucHf/bG95/3Bzff9wcnn/
    +dXiB/25xe/9ucXv/bnB3/3Byef9wc33/cHN9/25xe/9ucXv/bnB3/3N2f/9sb3n/b3F1/2xvef9vcXX/
    +bnB3/3N2f/9ucHf/bnB3/3Bzff9wc33/Zmlz/3Byef9zdXz/dXiB/3V4gf9ucHf/bG95/3N2f/91d33/
    +bG95/3N2f/91eIH/bnF7/3d5f/9ucXv/am13/3Bzff9ucHf/bnB3/2ptd/93eX//dXiB/3N2f/9sb3n/
    +cHJ5/2xudf9ucXv/c3Z//3N1fP9zdXz/dXiB/2xvef9wcnn/am13/2dqdP9ucHf/dXd9/3h5ff9zdXz/
    +bnB3/3h5ff9zdXz/c3V8/29xdf92eHz/bnB3/25xe/9qbXf/bnF7/2xvef9kZ3H/amxz/2dqdP9iZW7/
    +Z2p0/2xvef9ucXv/amxz/3N1fP9sb3n/ZGdx/2psc/9nanT/bG95/2xvef9oanH/cHN8/2tudv9sb3n/
    +bW92/21vd/9vcXj/b3F2/3J0e/9vcXj/dHZ8/2ptd/9oa3L/bW9z/3d5f/94eoD/cHJ5/3p8gv9ucHf/
    +cnR7/25wdP90dn3/bG52/3Bzev92eH//bnF7/3N2ff9xc3r/bnB4/2hrcv9tcHf/bXB6/2xudf9sbnX/
    +am10/2xvef9ydHr/am10/2ttcv9ucXn/aWx0/3J0fP9vcnn/a213/2Rncf9kZmz/bnF7/3Byef9sb3n/
    +dHZ8/3Bze/9sb3f/a212/2xvd/9rbnb/aGt1/25wef9sb3n/bG93/3Bzff9maXP/Z2p0/2psc/9ucXv/
    +bG95/3N1fP9maXP/ZGdx/2Rncf9nanT/bG95/2Zpc/9kZ3H/Zmlz/2Zpc/9kZ3H/Zmlz/2Zpc/9iZW7/
    +bG51/2xvef9kZ3H/XWBq/2Zpc/9sb3n/cHJ5/2Rncf9nanT/dXd9/2xudf9sbnX/am13/25xe/91d33/
    +bG95/3N1fP9nanH/dXd9/25wd/9ucXv/bnB3/2dqcf94eX3/Zmlz/2xvef9ucXv/b3F1/2xudf9sbnX/
    +c3V8/3N1fP91d33/dnh8/3N1fP9ucHf/cHJ5/2xudf9ucHf/Z2px/3N1fP9wcnn/bG95/2dqdP9iZW7/
    +bnF7/2Zpc/9sb3n/cHN9/3d5f/9qbHP/c3V8/2psc/9wcnn/b3F1/3Bzff9zdXz/bnB3/2xudf9wcnn/
    +c3V8/29xdf9qbHP/Zmhu/3Byef9ucHf/bnB3/3V4gf9wcnn/dXiB/3l8hv91eIH/c3Z//3V4gf9sb3n/
    +d3qD/3V4gf95e4H/cHJ5/3N1fP9sb3n/bG95/3N2f/9wc33/cHJ5/3V3ff9ucHf/bnB3/25wd/9zdXz/
    +bG51/3N1fP9sbnX/bnF7/21vc/9ucHf/c3V8/25xe/9sb3n/am13/2ptd/9sb3n/amxz/2psc/9nanT/
    +Z2px/2xudf9ucXv/amxz/2Zpc/9sb3n/bG95/2BjbP9nanT/bW9z/25wd/9ucHf/amxz/2xudf9sb3n/
    +c3V8/2ptd/9ucXv/dnh8/3Byef93eX//cHN9/2ptd/9zdXz/bG51/2xudf9qbHP/dXd9/3N1fP9zdXz/
    +amxz/25wd/9ucHf/bnB3/3V3ff9wcnn/dXd9/3d5f/9ucHf/b3F1/2ptd/9nanT/bnB3/3V3ff92eHz/
    +c3V8/2xudf92eHz/dXd9/3V3ff9wcnn/dnh8/3Byef9wc33/cHJ5/3Byef9zdXz/Zmhu/21vc/9qbXf/
    +Zmlz/21vdv9xdH7/dXd9/21vc/9zdXz/bnF7/2Rncf9sbnX/bnF7/25xe/9ucXv/aWxz/3Bze/9ydHr/
    +c3aA/3J1fv9ydXv/c3V8/3F0ff92eH//dnmC/3V4gf9sb3n/bXB6/29xef95e4H/eXuE/29yfP93eoT/
    +bnF4/3J1f/9zdXz/cnV+/29xdv9zdXz/c3Z+/29yev92eH7/b3F4/2xvef9rbXT/cHJ5/29xeP9xc3f/
    +bW9z/29xeP9xc3r/c3V9/3Bye/9zdXv/dXh//3Byef9xc3r/c3V8/29xdf9nanH/Zmhu/25wd/9sb3n/
    +bG95/3R2fP9ucXr/bG94/2hrdf9ucXv/aGt1/2dqc/9rbnf/bG94/2lsc/9nanT/XWBq/2Zobv9maG7/
    +bG95/2xvef9ucHf/Zmlz/2Zobv9maG7/Zmlz/2ptd/9maXP/ZGdx/2dqdP9nanT/Zmhu/2dqdP9nanT/
    +YGNs/2xudf9ucHf/Zmhu/11gav9maXP/am13/3Byef9maXP/Z2p0/25wd/9maG7/Z2px/2Rncf9sb3n/
    +bnF7/25xe/9wc33/Zmhu/3Bzff9nanT/bG95/2psc/9maXP/c3V8/2Jlbv9sbnX/bnB3/2xudf9maXP/
    +Zmlz/3Bzff9ucXv/bG95/25xe/9ucXv/bnF7/2xvef9sbnX/bnF7/2dqdP9zdXz/c3V8/3Byef9tb3P/
    +ZGZs/3Byef9sbnX/cHJ5/3V3ff93eX//b3F1/25wd/9nanH/bnF7/3Byef91eIH/dXiB/3N1fP9zdXz/
    +c3Z//3d6g/9wc33/bnF7/2xvef9zdn//c3Z//3N1fP91eIH/bG95/25xe/91eIH/c3Z//2xvef9zdXz/
    +amxz/3N1fP9qbXf/cHN9/2psc/9qbHP/amxz/2dqdP9ucXv/Z2p0/2psc/9sb3n/Z2p0/2Zpc/9qbXf/
    +bnF7/2ptd/9sb3n/am13/2xvef9vcXX/cHJ5/3Z4fP9zdXz/c3V8/3Byef9wcnn/dnh8/25xe/9sb3n/
    +bG95/2xvef9sb3n/dXiB/3N1fP9wcnn/dXiB/3Bzff9qbXf/bnF7/25wd/9sb3n/bnB3/29xdf9sbnX/
    +c3V8/3V3ff9sbnX/cHN9/3N1fP9ucHf/c3V8/2xudf9nanH/bG95/29xdf9ucHf/ZGdx/3N1fP9sb3n/
    +bG95/2Zpc/9sb3n/Zmlz/25wd/9wc33/bnF7/25xe/9zdXz/Z2p0/25wd/9qbHP/Z2px/2ptd/9zdXz/
    +dXd9/2xvef9sbnX/dXd9/2xvef9ucXv/Zmhu/2ptd/9nanH/bG95/2psc/9qbXf/Zmlz/11gav9laHL/
    +Z2lv/1xfaP9naW//am12/2xvef9sbnX/Z2p0/2Zpc/9iZW7/amxz/25xe/9ucXv/c3V8/2tud/9ydHv/
    +cHJ4/25xev9tb3b/bG51/21wef9ucHf/cXN6/3R2fP9wcnj/bG51/21vdv9rbXb/dHZ+/3J1fP9rbnb/
    +dHZ9/2xudf9tb3b/cXN5/2xvd/9ucHf/cHJ7/3Bzev9wcnn/c3V8/2xvef9ucHf/bG94/3J0ff9xc3v/
    +dHZ+/29yev9xdHz/bXB5/3BzfP9ucHr/dXeA/3h6gP9ydX7/cHN9/3N2f/9ucHf/am13/2dqdP9wc33/
    +cHN9/3N2f/95fIX/cXN9/25xe/9oa3X/c3V8/25wd/9sb3n/cHN9/3V3ff9wcnn/cHN9/2xvef9wc33/
    +bG95/3V3ff91d33/d3l//3N1fP9ucHf/b3F1/3V3ff94eX3/dXd9/3Byef9zdXz/cHJ5/2dqdP9sb3n/
    +bnF7/2xudf91d33/cHN9/2psc/9iZW7/am13/3Bzff9ucXv/amxz/2ptd/9zdXz/Z2px/2psc/9maXP/
    +Z2p0/2dqdP9maXP/Z2p0/2BjbP9ucXv/Z2p0/2xvef9sbnX/amxz/3Z4fP9maG7/bnB3/2xvef9sb3n/
    +bG95/2ptd/91d33/c3V8/3N1fP9zdXz/cHJ5/3N1fP9wc33/bnB3/3Bzff9qbXf/dXiB/3d5f/91d33/
    +bnB3/2RmbP9ucHf/am13/2ptd/9ucXv/dXd9/2xudf9qbXf/YmVu/2xudf9sbnX/bG95/2xvef9sbnX/
    +am13/3Bzff9zdXz/bG51/2Zpc/9kZ3H/bnF7/2xvef9qbHP/bG95/2psc/9sb3n/d3l//25xe/9kZ3H/
    +Z2p0/2BjbP9kZ3H/Zmhu/2ptd/9kZ3H/Z2px/2Zobv9nanH/am13/2dqdP9qbXf/c3V8/25xe/9qbXf/
    +bG51/25xe/9qbXf/cHJ5/29xdf9zdXz/b3F1/25xe/91d33/c3V8/3N1fP9ucXv/bnF7/3V3ff9wcnn/
    +bnB3/25wd/9ucHf/bnB3/3Bzff9vcXX/b3F1/25wd/9sbnX/Zmhu/21vc/9tb3P/bG51/2xudf9qbXf/
    +amxz/3Bzff9zdXz/bG51/3Bzff9wc33/bnF7/3Bzff9tb3P/bG51/3N1fP9vcXX/bnB3/2Zobv92eHz/
    +cHJ5/3N1fP9nanH/cHJ5/25wd/9zdXz/dXd9/3Byef9wc33/d3l//25xe/91eIH/bG95/3N1fP9zdXz/
    +dXiB/3l7gf9ucXv/cHJ5/3V4gf9zdXz/c3Z//25wd/9zdXz/bnF7/3V4gf9wc33/cHN9/3Bzff9qbHP/
    +bW93/29ye/9pbHX/b3F6/29yfP9xdH7/bnF7/3Byef9wc33/bG95/2xvef9zdn//bnF7/3Bzff9sb3n/
    +dHZ8/25xe/9xc3v/bnF7/21vdv9xc3r/cXN4/29yev9zdX3/cXN6/3F0fP9xdHz/b3J6/3d5gv9xdHv/
    +bW93/3R2fv9qbXb/a254/3R2f/9tcHr/cHN8/21wev9tcHn/bnF4/3Bye/9vcnz/bnB3/2tueP9tcHr/
    +bG51/25xev9qbXf/cHJ8/2xudf9qbXf/am13/3J0e/9ucXv/am13/2psc/9nanT/Z2px/2Jlbv9gY2z/
    +am13/2dqdP9qbXf/c3Z//2ptd/9qbXf/ZGdx/25xe/9sb3n/bG51/3Byef9ucXv/cHJ5/3Byef9tb3P/
    +cHJ5/25wd/93eX//d3qD/3d6g/91eIH/c3Z//25xe/93eoP/d3qD/3d6g/9zdn//dXiB/3d6g/9sb3n/
    +cHN9/3Bzff9zdn//e32D/3l7gf9wc33/bG95/3N2f/95e4H/foCG/3N2f/93eoP/eXyG/3Bzff9wc33/
    +dXd9/3d6g/95e4H/eXuB/3V4gf9wc33/e32D/3N1fP91eIH/c3Z//3Bzff95e4H/bG95/25wd/9ucXv/
    +cHJ5/2ptd/9sb3n/cHN9/3V4gf9zdXz/cHJ5/3Byef9wcnn/c3V8/29xdf9ucHf/Z2p0/3Bzff91d33/
    +cHN9/21vc/9kZ3H/bG95/2dqdP9sb3n/cHN9/3V3ff9qbXf/am13/2Rncf9nanT/amxz/2ptd/9nanT/
    +Z2px/2Zpc/9ucXv/bnF7/2dqcf9ZXGX/XF9o/2Zpc/9maXP/Zmhu/2Rncf9kZ3H/Z2p0/2xvef9maXP/
    +Z2p0/2xvef9maXP/bnF7/2xudf9wc33/amxz/2xvef9sbnX/bG51/3V3ff9ucHf/bnB3/3l7gf9ucXv/
    +bnB3/25wd/9zdXz/am13/3V4gf9wcnn/cHJ5/3Byef9zdn//d3qD/3N2f/9zdn//cHJ5/3Bzff95e4H/
    +cHN9/3Bzff9ucXv/cHN9/25xe/9wc33/bnB3/25wd/9wcnn/bW9z/2dqcf9vcXX/bnB3/25wd/9sbnX/
    +am13/2xudf91d33/c3V8/2ptd/9wc33/cHJ5/3Byef9zdn//bG51/2xudf9zdn//am13/25wd/9kZ3H/
    +c3Z//3N2f/9zdn//am13/3N2f/9wcnn/dXiB/36Ahv95fIb/eXyG/3t9g/9zdn//d3qD/25xe/9wcnn/
    +cHJ5/3N2f/95fIb/cHN9/25xe/93eX//bnF7/3Byef9vcXX/c3V8/25xe/91eIH/cHN9/25xe/9sb3n/
    +bG51/29xef9xdHz/aGtz/3Byef9ydHr/dHZ8/25xe/9ucXv/cHN9/25wd/9wcnn/dXiB/3Bzff9zdn//
    +bnF7/3Z4fv9xc3r/c3Z//21wev9tb3j/dHZ7/3J1ff9tcHr/cnV//29xef90dn//bXB6/3ByeP93eX//
    +cHF4/25wd/9zdXz/amxz/25wd/92eH7/bnB3/3N1fP9vcXj/aGt1/25wdP9vcXv/bnF7/2xudf9sb3n/
    +cHN9/2xudf9zdXz/bG51/3N1fP9sbnX/amxz/2ptd/91d33/bnF7/2xvef9qbXf/bG95/2psc/9kZ3H/
    +YGNs/2dqdP9nanH/Z2p0/3V3ff9qbXf/Z2p0/2BjbP9qbXf/Zmlz/2Zobv9nanT/Zmlz/2Zpc/9qbXf/
    +Zmhu/2dqdP9maG7/dXd9/3V3ff9zdXz/bG95/3Bzff9qbXf/cHN9/3d5f/9wc33/cHJ5/3N1fP91d33/
    +bG51/3Byef9wc33/c3Z//3d6g/93eoP/c3V8/25xe/9ucXv/dXd9/3V3ff9sb3n/bG95/3d5f/9sbnX/
    +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/Zmlz/25xe/9nanT/bG95/2xvef9iZW7/am13/2BjbP9iZW7/
    +Z2px/2Rncf9kZ3H/Zmlz/2ptd/9sb3n/bG95/2xudf9sb3n/bnF7/2xvef9sbnX/bnF7/2dqdP9ucXv/
    +dXd9/3N2f/9ucHf/Z2p0/25wd/9ucHf/cHJ5/3N1fP92eHz/bG51/2xudf9kZ3H/am13/25wd/9sbnX/
    +bG95/2xudf9nanT/cHN9/3Bzff9sbnX/YmVu/2Jlbv9ucXv/am13/2xudf9qbXf/Z2px/2xvef9wcnn/
    +bG95/25wd/9sb3n/Z2p0/2xvef9qbXf/c3V8/2xudf9wcnn/bG95/3N1fP97fYP/cHN9/3Byef95fIb/
    +dXiB/3Byef9zdXz/d3qD/25xe/97fYP/dXd9/3l7gf91eIH/eXyG/3l8hv91eIH/dXiB/3N2f/9wc33/
    +d3qD/3Bzff9ucHf/Z2p0/25wd/9wcnn/cHJ5/25wd/9vcXX/cHN9/29xdf9nanH/bG51/2xudf9qbHP/
    +am13/2dqdP9nanT/bnF7/2xvef9qbHP/am13/25xe/9qbXf/c3V8/2ptd/9nanT/bnF7/2dqdP9sbnX/
    +ZGZs/3Byef9ucXv/bG95/2Rncf9sb3n/Z2px/25xe/9wc33/am13/2xvef9wc33/am13/2xvef9kZ3H/
    +Z2p0/2psc/9qbXf/cHJ5/2dqcf9maXP/cHJ5/2psc/9sb3n/Z2px/2ptd/9nanT/Z2p0/2ptd/9nanH/
    +amxz/2dqdP9sb3j/cnV8/2Zpc/9vcXf/a253/25xe/9qbHP/Z2p0/2dqdP9kZ3H/bG51/2xvef9qbXf/
    +am13/2xudf9sb3n/aGt1/3V3ff9ucXj/bW92/3Z4fP91d33/bG92/3N1fP9sbnb/c3V8/25wd/9vcXX/
    +eHl9/3N1fP9sbnX/bnB3/2psc/9sb3n/dXiB/25xe/9wcnn/bnF7/2ptd/9qbXf/c3V8/25xe/9qbHP/
    +bG51/3N1fP9ucHf/cHJ5/25wd/9zdXz/bG51/21vc/9qbXf/d3l//2xvef9qbXf/am13/2psc/9qbXf/
    +ZGdx/2BjbP9qbXf/amxz/2xvef91d33/bG95/3N1fP9naW//c3V8/3Byef9sb3n/cHN9/3V4gf9wc33/
    +cHN9/25wd/9ucXv/bnF7/3d6g/91eIH/d3l//3V4gf9zdn//cHJ5/3N1fP93eX//c3V8/25wd/91d33/
    +c3V8/21vc/9qbXf/bnB3/2xvef9ucXv/am13/2Zobv9maG7/Zmlz/3Bzff9zdXz/bG51/2ptd/91d33/
    +bG51/21vc/9tb3P/bnB3/2xvef9sb3n/bG95/2Zpc/9ucXv/am13/3N1fP9ucHf/Z2px/3Z4fP9nanH/
    +bnB3/25wd/9vcXX/bG95/2xvef9zdn//c3Z//3N2f/9ucHf/c3V8/3Bzff9ucXv/bG95/3N1fP9nanT/
    +c3Z//3l7gf93eX//c3V8/3N1fP91eIH/cHJ5/3d6g/97fYP/f4GH/3d5f/9zdn//bnF7/3N2f/9zdn//
    +cHN9/3Bzff9ucHf/am13/3V3ff92eHz/bG95/2psc/9maXP/cHN9/25wd/9zdXz/cHJ5/2xvef9zdXz/
    +dXd9/3N1fP9ucXv/bnB3/2xudf91d33/bnF7/3V3ff9wcnn/bnB3/2ptd/9sbnX/dXd9/2xudf9sbnX/
    +eHl9/3N1fP9qbHP/bnB3/3V3ff9nanH/cHJ5/25wd/9ucHf/bG95/3N1fP9wcnn/cHJ5/3N2f/9ucXv/
    +c3V8/3V4gf9ucXv/bnF7/25wd/9wc33/c3Z//3N2f/9wcnn/c3V8/3V4gf9wcnn/Zmlz/25xe/9ucHf/
    +b3F1/25wd/9sb3n/cHN9/3V4gf9wc33/bnF7/25xe/9zdn//b3F1/3Z4fP9tb3P/amxz/3Byef9qbHP/
    +bnB3/2dqcf9zdn//cHN9/25xe/9nanH/c3V8/2xudf9ucXv/eXuB/3V4gf9zdn//c3Z//2xudf9ucHf/
    +bG51/25wd/9vcXX/c3V8/3d5f/9ucHf/cHJ5/3d5f/9ucHf/c3Z//3Byef9wcnn/c3V8/3Byef92eHz/
    +bG51/2xudf9nanT/bG95/2xvef9maXP/a210/2Vocv9ucXv/am13/2xudf9sbnX/Z2p0/2ptd/9ucXv/
    +bnB3/25xe/9qbXf/bG95/2Zpc/9zdXz/am13/2dqcf9wcnn/bnF7/2psc/9ucXv/am13/25xe/9qbXf/
    +am13/3Bzff9sb3n/Z2p0/2ptd/9kZ3H/bG51/3V3ff9ucHf/c3V8/2xvef9sbnX/bG51/3Bzff9ucXv/
    +Zmlz/2ptd/92eHz/bnB3/3N1fP9sb3n/dXiB/3Bzff9zdXz/c3V8/3h7hf91eIH/dXiB/3N2f/9zdn//
    +c3V8/2ptd/9ucXv/dXd9/3d6g/93eoP/fYCJ/3d6g/93eYD/bXB5/3N2f/9ucXv/bXB6/21wev9ydX7/
    +c3V8/3V3ff9sbnX/cHJ5/3Byef93eoP/d3l//3h5ff9zdXz/bnF7/2psc/9sb3n/dXd9/2xvef9nanT/
    +cHJ5/2ptd/9qbHP/am13/2xvef9sb3n/cHN9/25xe/9sbnX/bG51/2ptd/91d33/dXd9/2ptd/9qbXf/
    +c3Z//2dqcf9nanT/amxz/2xudf9sbnX/am13/2xvef9maXP/bG95/2psc/9ucXv/bG51/2Jlbv9wcnn/
    +YGNs/2Rncf9maXP/Z2px/2Zpc/9maXP/bG95/2dqdP9qbXf/Zmlz/2ptd/9qbXf/am13/2psc/9sb3n/
    +ZGdx/2ptd/9zdXz/cHJ5/2dqcf9iZW7/bG95/2dqcf9sb3n/am13/3N1fP9qbHP/am13/2Zpc/9qbHP/
    +am13/2xudf9ucHf/b3F1/2psc/9zdXz/dXd9/2psc/9maG7/Zmhu/3Z4fP9wcnn/cHJ5/25wd/9tb3P/
    +c3V8/3V3ff9zdn//bG51/2xvef9qbXf/bnF7/2ptd/91d33/c3V8/29xdf9wcnn/b3F1/3V4gf9ucXv/
    +bnB3/3l7gf9wc33/bG95/25xe/93eX//am13/3Bzff9wcnn/cHN9/3Bzff9wc33/bG95/2xvef92eHz/
    +bnB3/29xdf9ucHf/bG95/2ptd/9maXP/bnF7/2ptd/9qbXf/Z2px/2Rncf9nanT/Zmhu/2BjbP9nanT/
    +Zmlz/2Zpc/9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2xvef9qbXf/cHN9/2xudf92eHz/b3F1/2psc/9wc33/
    +cHJ5/3N2f/9maXP/cHN9/3Bzff9wc33/am13/3N2f/9ucHf/c3Z//3V4gf9ucXv/c3Z//3N2f/9ucXv/
    +dXiB/3N2f/9zdXz/cHN9/3d6g/9+gYr/c3Z//3d6g/95fIb/c3V8/3l7gf9zdXz/d3qD/3d6g/93eoP/
    +eXuB/3N2f/9zdn//c3V8/3l7gf91eIH/bG95/25xe/9qbXf/c3Z//3V3ff9ucHf/bG95/2dqdP9sb3n/
    +cHN9/25xe/9zdn//bnB3/3Bzff9ucHf/d3qD/3Bzff9ucHf/dXiB/3V4gf9wcnn/c3Z//3Bzff9zdn//
    +bnF7/3Byef97fYP/d3qD/2xvef9zdn//Z2p0/25xe/91eIH/bnF7/3V3ff91eIH/cHN9/3V3ff97fYP/
    +d3qD/3N1fP9ucXv/dnmC/3Bzff90d4D/bnB3/3R3gP9wc3z/cHJ5/3ByeP90d33/bnF7/3R3gP9vcXj/
    +b3F3/3Byef9maXP/Z2px/21vc/9tb3P/bnB3/3V3fP9xc3v/cHN7/2lsdP9sbnb/bW92/2lrdP9tb3f/
    +b3F4/3Byev9wc33/bnB3/3Byef9wc33/eXyG/3d6g/93eX//c3Z//3N2f/9ucHf/cHN9/3V4gf9zdn//
    +bnF7/3d5f/91eIH/bnB3/25xe/9ucXv/bnB3/3V3ff9zdXz/bnB3/29xdf9wcnn/dnh8/3l7gf9wcnn/
    +cHJ5/3V4gf9qbXf/bnB3/21vc/9ucHf/am13/25wd/9sbnX/ZGZs/25wd/9tb3P/c3V8/2xudf9qbHP/
    +dXd9/2dqdP9sbnX/cHJ5/21vc/9ucHf/bG95/25xe/91eIH/c3Z//25xe/9zdn//cHN9/25xe/9vcXX/
    +cHN9/2dqdP9sb3n/dXd9/3Z4fP9tb3P/Z2px/3Byef9sbnX/bnF7/2ptd/91d33/bnB3/25wd/9nanH/
    +bW9z/2xudf9sb3n/bG95/2psc/9kZ3H/cHN9/25xe/9maXP/YmVu/2Rncf9sb3n/am13/2xudf9qbHP/
    +bG51/3Byef9zdXz/bnF7/3Byef9wcnn/b3F1/3Bzff9ucXv/d3l//3Bzff9ucHf/bnF7/25wd/95e4H/
    +bG95/29xdf93eX//bnF7/2xvef9ucXv/c3Z//2dqdP9zdn//bnF7/3Bzff9wc33/cHN9/3V4gf91eIH/
    +e32D/3N2f/9wc33/cHN9/25xe/9zdn//cHN9/3d6g/93eoP/dXiB/3N1fP9wc33/c3Z//2xvef9maXP/
    +cHN9/25wd/9zdXz/c3Z//2xvef9sb3n/cHJ5/25xe/9wc33/bnB3/3Bzff9ucHf/eHl9/29xdf9qbHP/
    +bnF7/29xdf9zdXz/Zmlz/3Bzff9zdXz/cHJ5/2xvef93eoP/cHJ5/3Bzff91eIH/c3Z//3Bzff9wc33/
    +am13/25xe/9ucHf/bnB3/25wd/9wc33/dXd9/2xvef9zdXz/eHl9/29xdf92eHz/bG51/2ptd/9qbXf/
    +bnF7/25xe/9qbXf/Z2px/2Zobv9sb3n/bnF7/2Jlbv9maXP/Zmlz/25xe/9ucXv/bG51/2xudf9qbHP/
    +amxz/25xe/9zdn//c3Z//3Byef9zdn//bnF7/3l8hv9zdn//c3V8/3d6g/97fYP/dXiB/3Z5g/93eoP/
    +dnmC/3V3gP9wc33/fYCJ/3p8g/9wc33/d3qD/2ptd/9wc33/dnh+/3Byef90dnz/a254/2tueP9oa3X/
    +c3V8/29yfP9pbHX/am13/3N1fv9sb3n/bG95/2xudf9xc3r/bnB0/3Byd/9sbnT/cXN5/25wd/9vcnv/
    +cHJ2/25wdf9vcXX/amxz/2dqcf9tb3P/bG51/25wd/9zdXz/cXN6/25wef9sbnb/bnB3/21vdv9tb3X/
    +cnR7/3Fzev9ucXn/bG95/2ptd/9sb3n/bG51/3d5f/93eX//c3V8/3Bzff9sb3n/am13/2xvef91d33/
    +dXd9/2xudf91d33/dXd9/2xvef9ucXv/cHN9/3N1fP9zdXz/bnB3/25wd/9vcXX/bnB3/3V3ff93eX//
    +cHN9/25xe/93eoP/Z2p0/2xvef9sbnX/cHJ5/25wd/9sb3n/bnB3/2RmbP9ucHf/bG95/3N2f/9ucXv/
    +bG51/3d5f/9ucHf/bnB3/3Bzff9wcnn/bnB3/2xvef9ucXv/dXiB/3d6g/91eIH/d3qD/3N2f/9wc33/
    +cHJ5/3Bzff9sb3n/bnF7/3N2f/91d33/cHJ5/2ptd/9zdn//bG51/3Byef9wcnn/bnF7/2ptd/9sb3n/
    +Z2p0/21vc/9ucHf/bG95/3Byef9ucHf/amxz/3V3ff92eHz/bnB3/2dqcf9qbHP/dXd9/3Byef9sbnX/
    +b3F1/29xdf9ucHf/c3V8/3N1fP9sbnX/am13/2psc/9sb3n/Z2px/25xe/9nanT/amxz/2dqcf9nanH/
    +dXd9/2psc/9sbnX/dXd9/2xudf9maXP/amxz/25xe/9nanT/bG95/2xvef9qbXf/bnB3/2xudf9qbXf/
    +am13/3N1fP9tb3P/bG51/2xvef9sb3n/am13/2Zpc/9ucXv/am13/2psc/9kZ3H/Z2px/2ptd/9nanT/
    +Zmlz/2ptd/9sbnX/bG51/21vc/9sbnX/bnB3/2xvef9wcnn/c3V8/2xvef93eX//cHN9/3d5f/9sb3n/
    +am13/25xe/9wcnn/c3Z//2ptd/93eoP/c3Z//3N2f/9ucHf/c3Z//25wd/9wcnn/cHJ5/25wd/9wcnn/
    +c3V8/2xudf9wcnn/bG51/2xudf9sbnX/am13/3Bzff9sbnX/cHJ5/3h5ff9tb3P/dXd9/3Byef9zdXz/
    +c3V8/3V3ff92eHz/cHJ5/25wd/9ucHf/cHN9/3N2f/9sb3n/cHN9/3Bzff93eoP/eXuB/3V4gf91eIH/
    +bG95/3N1fP95e4H/fn+D/3t9g/95e4H/fX6B/3Bzff99gIr/cnV+/3J0e/90d4D/d3mA/3R3gP90dn//
    +dHeA/3V4gf90dn7/b3F4/3l8hP94eoD/bG95/3BzfP9pa3L/b3F6/3V3ff9ucXr/dHZ9/2ptdv9rbXb/
    +a212/3R2fP9wc33/bG52/25weP90dnv/bnB3/21weP9pbHb/am11/2lsc/9sb3f/bG5z/21veP9vcXj/
    +bG95/29xef9ucHf/bW90/2Zobv9nanH/bG51/2xudf9sbnX/dHZ7/25weP9rbnj/Zmly/2Zpc/9nanL/
    +Y2Zw/2ptd/9qbXX/am13/2xvef9qbXf/bG95/2xudf9zdn//c3V8/3Bzff9wc33/am13/2psc/9nanT/
    +dXd9/3N1fP9qbXf/dXd9/3Bzff9sbnX/bG95/25xe/9wcnn/dnh8/3N1fP9ucHf/bW9z/2xudf93eX//
    +dXiB/25xe/9ucHf/eXuB/2xudf9wcnn/bG51/2xvef9ucHf/bG51/2ptd/9kZ3H/am13/2dqdP9qbXf/
    +am13/2Zpc/9zdXz/bG51/2dqdP9sb3n/Z2px/2dqcf9qbHP/bG51/25xe/9ucXv/bG95/2xvef9qbXf/
    +bG51/2dqdP9qbXf/Zmlz/2xudf9sb3n/cHJ5/2psc/9kZ3H/Z2p0/2dqdP9sbnX/bG95/2ptd/9qbHP/
    +bG51/2BjbP9qbHP/Z2px/2psc/9qbXf/bG51/2Zpc/9qbXf/bnF7/2dqdP9gY2z/YmVu/2ptd/9nanT/
    +Z2p0/2dqcf9qbHP/am13/2xvef9ucXv/bnB3/25wd/9ucHf/c3Z//25wd/9zdn//cHN9/2xvef9sb3n/
    +bW9z/3l7gf9vcXX/bnB3/3V3ff9ucXv/bG95/25wd/9wc33/bG51/3Byef9ucHf/bnB3/3N1fP9ucHf/
    +bnB3/29xdf91d33/b3F1/21vc/9sbnX/bnB3/25wd/9ucHf/c3V8/25wd/9ucHf/bnB3/29xdf91d33/
    +b3F1/2Zobv9wcnn/am13/2dqdP9qbHP/Zmlz/2xudf9sb3n/bG95/2ptd/9qbHP/cHJ5/2Zpc/9sb3n/
    +Zmhu/11gav9iZW7/Zmhu/2Zpc/9dYGr/am13/2dqdP9maG7/YmVu/2dqdP9kZ3H/Zmhu/2Rncf9kZ3H/
    +am13/2dqdP9iZW7/Z2px/2BjbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Zpc/9ucXv/Zmlz/3Byef9nanT/
    +Z2p0/2xvef9ucXv/bG95/25xe/9sbnX/bG51/3J0e/9xdHv/aGt1/2tueP9pbHb/bG95/2xvef9sbnX/
    +bnB3/2Zobv9maXP/am13/3Bzff9ucXv/am13/25xe/9qbXb/dHeA/25xe/9rbnb/bnF6/3Bzff9ucXr/
    +bXB5/3Fzev9xc3v/b3F5/29xef91d3//d3l//3F0fP92eID/cHJ5/3R2fP93eYH/cHJ6/3d5gf95fIX/
    +eHqC/3d5fv98foT/fH6F/3N1fP90dnz/eXuA/3d5gP9ydHz/c3V9/3Z4fv90dnz/dnh8/3F0ev9zdXv/
    +dXd9/3h6gP90dn3/dHZ+/3Bzff9sb3n/bG95/3N1fP9wc33/c3Z//3d6hP90dn3/c3Z//2lsdv9tcHr/
    +bW93/21vd/9zdXz/am13/29xeP9wc33/am13/3Byef9ucHf/eHl9/3Z4fP91d33/dXd9/25wd/9sb3n/
    +bnB3/3V3ff91d33/bnB3/3V3ff92eHz/b3F1/3Byef9wcnn/dXd9/3V3ff9ucHf/am13/2xudf9qbXf/
    +dXd9/3l7gf9ucHf/bG95/3V4gf9maXP/am13/2dqcf9qbHP/amxz/2dqdP9nanH/XWBq/2Zpc/9maG7/
    +am13/2xvef9nanT/c3V8/2dqcf9qbHP/bG95/2dqdP9qbHP/bG51/2xudf9wc33/am13/25xe/9qbXf/
    +am13/2ptd/9qbXf/bG95/2ptd/9qbHP/cHN9/3d5f/9sb3n/bnB3/3Byef9tb3P/bW9z/25wd/9zdXz/
    +b3F1/2xudf9sbnX/bG95/2xudf9ucHf/bG95/2ptd/9qbXf/bnF7/3d5f/9nanT/amxz/2psc/9ucXv/
    +bnF7/3N2f/9wcnn/bnF7/2xvef9zdXz/dnh8/3Byef9ucHf/am13/25xe/9tb3P/dXd9/3Bzff9sbnX/
    +amxz/2xudf9zdn//am13/2xudf91d33/bG95/2ptd/9qbHP/bG95/2Rncf9nanT/Z2p0/2psc/9ucXv/
    +amxz/2dqdP9sb3n/bnF7/2xudf9qbHP/am13/2ptd/9sbnX/am13/3Byef9sb3n/bnB3/25wd/9wcnn/
    +dXd9/25wd/9maXP/dXiB/25wd/9ucHf/cHJ5/25wd/9zdXz/cHN9/3N2f/9wc33/cHN9/3d6g/9wc33/
    +eXuB/3N2f/9ucXv/cHJ5/25wd/9ucXv/Z2p0/3V3ff9sbnX/bnB3/25wd/94eX3/bnB3/25wd/9sb3n/
    +bG95/3N1fP9qbXf/Z2p0/2ptd/9sbnX/bW9z/25wd/9zdXz/dXd9/25wd/9zdn//d3l//2xvef93eX//
    +c3Z//3Bzff91eIH/d3l//3l7gf9zdn//c3Z//3V3ff93eoT/enyD/3V3ff94e4P/eHqB/3V4gv90d4D/
    +bnF7/3V4gf9qbXf/Z2p0/2xvef9wc33/c3V8/25wd/9ydHz/bnF6/3R3f/9ucHn/bG93/29yfP9ydHv/
    +b3F4/25wdf9wcnf/bW92/25wdP9vcnr/cnR8/3V3fv9ucHf/dXh//2xud/9ydHz/dHd//25xef9zdn//
    +c3V8/3J0ef9wc3z/c3V9/3R3gP9sb3f/bXB6/3V4gv9ucXv/b3J8/2xvef9vcXj/bnB4/3Bzev9vcXj/
    +cXN6/25wd/9ydXz/cHJ4/21wef9tb3P/Zmhu/2dqcf9sbnX/bW9z/2ptd/91d33/bnB0/25xe/9maXP/
    +bnB3/21vc/9tb3P/c3V8/2ptd/9qbXf/bnF7/2xudf9sb3n/amxz/3V3ff9zdXz/bnF7/3Bzff9nanT/
    +amxz/2Zpc/9wcnn/bG95/2xudf9qbXf/bG95/2Zobv9maXP/Zmlz/2Zpc/9qbXf/Z2p0/2dqcf9maG7/
    +amxz/25wd/9zdn//am13/2ptd/9zdn//am13/2xvef9qbXf/am13/2ptd/9zdXz/bnB3/2dqcf91d33/
    +b3F1/3N2f/93eoP/c3V8/3t9g/9zdXz/c3V8/3Bzff9sb3n/bnB3/25xe/9sb3n/c3Z//25wd/9zdXz/
    +bnB3/2xudf9sbnX/amxz/2xudf9qbXf/bG51/2xvef91eIH/am13/2dqcf9nanH/Zmhu/2Rncf9maXP/
    +am13/2Zobv9qbHP/Zmlz/2psc/9nanH/amxz/2xudf9qbHP/amxz/2xvef93eX//am13/2dqdP9nanH/
    +bnF7/25xe/9wc33/b3F1/29xdf9ucHf/cHJ5/3Z4fP91d33/bG51/21vc/9ucHf/bW9z/3N1fP9wc33/
    +am13/3Byef9ucHf/d3l//3Byef9sbnX/dXd9/2xvef9nanT/Z2p0/2xvef9maXP/amxz/2ptd/9sbnX/
    +c3V8/2xudf9nanT/bG95/25xe/9qbXf/bG51/2ptd/9qbHP/bG51/2ptd/9sb3n/bG51/2ptd/9sbnX/
    +cHJ5/3V3ff9wcnn/Z2px/3N2f/9nanT/bnB3/25wd/9ucHf/cHJ5/3Byef9wc33/cHN9/3Byef93eoP/
    +c3Z//3V4gf9sb3n/bG95/25wd/9vcXX/cHJ5/2dqcf9zdXz/bG95/2ptd/9maXP/d3l//2dqcf9qbXf/
    +amxz/2Zpc/9qbXf/Zmhu/2Jlbv9maG7/Zmlz/2Rncf9nanH/am13/2xvef9maXP/am13/3V3ff9qbXf/
    +dXd9/3N1fP9ucHf/dXd9/3N1fP93eX//cHN9/25wd/9sb3n/bG95/25xef9qbXX/b3J8/3N1e/9xc3z/
    +c3Z//25xe/9zdn//am13/3Byef9wc33/d3qD/3l8hv90d4D/dHeB/29xev90d4H/cXN7/21wef9tcHr/
    +dHZ8/29yev9wc3r/dXh//3N1fv9wc3v/cnV9/3Z4gf94en//c3V8/3p8gf9rbnf/b3F7/3V3ff9ucXv/
    +dHeA/3V4gf9ydX//cnR7/3h7hP98foX/cnV+/3d6hP99gIr/dnmB/3R3gP9zdXz/dnmB/3R3gP9wc33/
    +bnF7/3J1fv9tcHr/dnh8/21vdv9wc33/bnB3/2dqdP9qbXf/bnF7/25wd/9wcnn/d3l//3N1fP91eIH/
    +cHN9/3V4gf9wc33/c3Z//36Ahv93eoP/c3Z//3V4gf9wcnn/bnF7/3Byef95e4H/dXiB/3l7gf95e4H/
    +c3Z//25xe/9ucXv/d3qD/3Bzff9ucHf/bnF7/3V4gf9wcnn/cHJ5/25wd/9ucHf/c3V8/3Byef9vcXX/
    +bG51/3N1fP92eHz/dnh8/25wd/9wcnn/dXd9/2xudf9ucHf/bnB3/29xdf9ucXv/c3Z//3N2f/9maXP/
    +c3Z//3Byef9wc33/c3Z//2xvef91d33/cHJ5/25wd/9ucXv/am13/25wd/9wc33/cHJ5/3V3ff9ucHf/
    +c3V8/25wd/9ucHf/cHJ5/29xdf9tb3P/bnB3/2ptd/9sb3n/d3l//25wd/9tb3P/bG95/25wd/9tb3P/
    +cHJ5/3Byef9sbnX/bG51/2xudf9tb3P/am13/2xudf9ucHf/bG51/21vc/9zdXz/dXiB/2xvef9sb3n/
    +am13/25xe/9wc33/c3Z//2xvef9vcXX/bG95/25xe/9zdn//dXiB/25xe/9ucHf/bnF7/2xvef9zdn//
    +dXd9/25wd/9ucHf/bnB3/3d5f/9zdXz/bnB3/3N1fP9sbnX/Zmlz/2psc/9qbXf/ZGdx/2dqcf9qbXf/
    +Zmhu/2xvef9nanH/ZGdx/2dqdP9sb3n/amxz/2xudf9sb3n/bG51/2ptd/9sbnX/cHJ5/25xe/9sb3n/
    +bnF7/25xe/93eX//cHN9/2ptd/93eoP/cHN9/3Byef9wcnn/dXd9/3V3ff94eX3/e32D/3l7gf93eX//
    +f4KM/3l8hv97fYP/d3qD/3N1fP91d33/c3Z//3V4gf9wc33/eXuB/3V4gf9wcnn/bnB3/3l8hv9ucHf/
    +c3Z//3Bzff9wcnn/cHN9/3Byef9wcnn/cHJ5/25wd/9sbnX/bG95/3Bzff9ucXv/bnB3/25xe/93eX//
    +bnB3/3V3ff9zdXz/bnB3/3V3ff9zdXz/d3l//3Bzff9ucHf/bG95/3R3gP91dnz/bnB3/3J0fP92eHz/
    +b3F4/3J0e/9ucHf/c3V8/2psc/9qbXf/bG51/3Bzff9ucXv/c3V8/3J0e/9rbnT/c3V8/21wef9ucHf/
    +bW92/3V3fP9tb3b/a212/21wev9qbXf/b3F4/2ttdf92eH//cnR7/25xeP91d33/Z2py/2xvef91d33/
    +bnB3/3N2fv9vcnv/a254/2hrdf90d33/cHN9/2dqcv9nanT/dXiB/2dqdP9maG7/ZGdx/2Zpc/9qbHP/
    +ZGdx/2BjbP9maXP/XWBq/25wd/9gY2z/Zmlz/2Zobv9maXP/Z2p0/2xudf9sbnX/bnB3/3N1fP9vcXX/
    +cHJ5/2Zobv9sbnX/bG51/25wd/9wcnn/bnB3/25wd/91d33/cHN9/25wd/9ucHf/dXd9/3V3ff91d33/
    +c3Z//3N1fP9ucHf/cHJ5/3V3ff9qbXf/bG51/25wd/9wc33/am13/2xvef9sbnX/cHJ5/3Byef9ucHf/
    +bG51/25wd/9zdXz/c3V8/3V3ff9ucXv/bnF7/3V3ff9qbXf/bG51/21vc/9sbnX/am13/3N1fP9wcnn/
    +Zmlz/3N2f/9ucHf/cHN9/3V3ff9wcnn/cHN9/29xdf9sb3n/bG95/2ptd/9sb3n/bnF7/2xvef91eIH/
    +cHN9/3N2f/9ucXv/bnF7/3N2f/9wcnn/bnF7/2xvef9ucHf/cHJ5/3Z4fP9ucHf/bW9z/2ptd/9sb3n/
    +bG51/3Byef9ucHf/am13/2xudf9qbXf/am13/25wd/9tb3P/bG51/2dqdP9qbHP/bG95/3V3ff9qbXf/
    +Zmlz/2xudf9ucHf/dXd9/3V3ff9ucXv/cHJ5/3Bzff9ucXv/c3Z//3Z4fP9sbnX/b3F1/2xvef9ucHf/
    +d3l//3V4gf9ucHf/bnF7/2xvef93eoP/cHJ5/25wd/9wcnn/bnB3/2dqdP9sbnX/am13/2Zpc/9qbXf/
    +am13/2dqdP9wc33/Z2p0/2dqdP9zdXz/bnF7/2psc/9sbnX/bG51/2xudf9sbnX/bG51/2ptd/9sbnX/
    +Z2p0/2xvef9qbXf/dXd9/2xudf9nanH/cHJ5/2psc/9sbnX/bG51/2xudf9sbnX/bnB3/3Byef9ucHf/
    +bnB3/3l7gf91d33/c3Z//3Byef9sbnX/am13/2xudf9sb3n/ZGdx/25xe/9qbXf/am13/2xudf95e4H/
    +bnB3/2xudf9sbnX/bW9z/3Byef9sbnX/bnB3/25wd/9qbXf/bG51/25wd/91d33/cHJ5/2xudf9wcnn/
    +d3l//2xvef93eoP/dXiB/3N2f/91eIH/c3Z//3l8hv91eIH/cHJ5/3N1fP9ydHz/cXN5/3Byef90d3//
    +dXd9/3BzfP9wc3z/bG95/3Bzff9nanT/bnB3/3Bzff9zdn//cHN9/3V4gf90d4D/aGt1/3Z5g/9ucXr/
    +dHeA/3BzfP94e4T/cHN9/3BzfP9wc33/dXiA/3N1fv9sb3n/eXuB/3N2f/9wcnn/d3qD/2ptd/93eoP/
    +eXyG/3V4gf95fIb/eXuB/3Byef9sb3n/e32D/3d5f/9ucHf/bnB3/3t9g/9ucHf/b3F1/2xudf9ucHf/
    +bW9z/2dqcf9kZ3H/am13/2psc/91d33/amxz/25wd/9tb3P/bG51/29xdf9wcnn/b3F1/3N1fP91d33/
    +bnB3/2xvef9kZ3H/bG95/3Bzff9ucXv/d3qD/3V4gf9wc33/d3qD/3V4gf9wc33/dnh8/35/g/9+gIb/
    +fX6B/36Ahv97fYP/dXiB/3d6g/95e4H/c3Z//3Bzff91eIH/e32D/3d6g/93eoP/c3Z//3d6g/93eoP/
    +dXiB/3N2f/9wc33/dXd9/3d5f/95e4H/dXiB/3V3ff94eX3/bnB3/25wd/9sbnX/bG51/2xudf9ucHf/
    +bnF7/2ptd/9wc33/bnB3/25xe/9zdn//bG95/3Bzff9ucHf/cHJ5/25xe/9sbnX/bG51/3Byef9wcnn/
    +dXd9/2xudf9zdXz/bG51/25wd/9zdXz/bnB3/25wd/9ucHf/bG95/3N1fP92eHz/bG51/21vc/9wcnn/
    +c3V8/2xudf91d33/bG95/2xudf9sbnX/amxz/2ptd/9sb3n/am13/2psc/9qbHP/bG51/2xudf94eX3/
    +am13/2dqdP9ucHf/bnF7/3V3ff92eHz/bnB3/29xdf9zdXz/cHJ5/25wd/9zdXz/bG51/2ptd/9qbXf/
    +amxz/25xe/9wcnn/Z2p0/2xudf9ucHf/d3qD/2ptd/9ucXv/bnF7/2xudf9qbXf/am13/2xvef9maXP/
    +bG51/2ptd/9sbnX/cHN9/2dqdP9maXP/c3V8/3Bzff9sbnX/bG51/2xudf9sbnX/bW9z/2ptd/9qbXf/
    +amxz/2dqdP9sb3n/bG51/3N1fP9qbHP/ZGdx/2dqdP9maXP/amxz/2ptd/9nanH/am13/2dqdP9sb3n/
    +bG51/25wd/95e4H/dnh8/3V3ff9zdXz/bnB3/25wd/9ucHf/bG95/2Zpc/9zdn//bnF7/2xvef9wcnn/
    +foGK/3N1fP9wc33/c3Z//3Bzff9ucXv/am13/2xvef9vcXX/bG51/21vc/9vcXX/dXd9/3Bzff9nanT/
    +bnF7/3V3ff9nanT/dXd9/3Byef9sb3n/dXd9/25wd/91d33/bG95/2dqdP9qbHP/c3Z//3N1ff9rbXT/
    +cHJ5/25wd/9rbnj/bnF7/2ptd/9wc33/bG51/21vc/9ucHf/bnF7/2xvef9wc33/am13/2Vocv9zdn//
    +bG51/25xe/9maXP/bnB3/2dqcf9nanH/amxz/2ptd/9maXP/YmVu/25wd/9kZ3H/YmVu/2Zpc/9cX2j/
    +Z2p0/2xvef9maXP/Z2p0/3V3ff9sb3n/bG95/3l7gf91eIH/bnB3/3Bzff9+gIb/bnF7/29xdf9sb3n/
    +bnF7/25wd/9sb3n/Z2p0/25xe/9qbXf/d3l//2dqdP9ucXv/bnB3/2ptd/9ucHf/bnF7/2xvef9zdXz/
    +dXd9/25wd/9sb3n/aGp0/2xvef9tb3f/bnB3/3J1fv9tcHr/bnF6/3V4gf9wc33/c3V8/25wd/9zdn//
    +c3Z//3N2f/9ucXv/dXiB/3Byef9wc33/c3Z//3Byef9ucHf/cHN9/3d5f/9wc33/cHN9/25wd/91eIH/
    +c3Z//3Bzff9vcXX/bnB3/3d5f/91eIH/dnh8/3V3ff91d33/d3l//3Byef9ucXv/bG95/2xvef9ucHf/
    +c3V8/3N1fP9sbnX/c3V8/29xdf9wcnn/dXd9/25wd/9zdXz/am13/2xudf9sb3n/Z2p0/2xvef9sb3n/
    +amxz/25xe/9sbnX/cHN9/2psc/9sb3n/bnF7/2psc/9nanH/Zmlz/2Zpc/9nanT/bnB3/2Zobv9qbHP/
    +Z2p0/25xe/9nanT/bnF7/2xudf9sbnX/cHJ5/21vc/9ucHf/bG95/2xvef9ucXv/am13/25wd/9ucHf/
    +dnh8/2xudf9nanH/b3F1/25xe/91d33/c3Z//2xvef9wcnn/c3Z//3Byef9ucHf/dXiB/3Bzff9ucXv/
    +bnF7/3N2f/91eIH/c3Z//2xvef9wc33/c3V8/36Ahv9ucHf/dXd9/3V3ff9tb3P/Z2p0/2xudf9qbXf/
    +Z2p0/2xudf9vcXX/b3F1/3V3ff9ucHf/bnB3/3V3ff91eIH/bnB3/2xvef9ucXv/cHN9/25xe/9zdn//
    +d3qD/3d5f/9zdXz/e32D/3l7gf9+f4P/e32D/3l7gf9+gYr/d3qD/3l7gf9+gIb/d3l//3V3ff91d33/
    +eXuB/3V3ff93eX//gYOK/36Biv97fYP/d3qD/3Byef9ucHf/bnF7/25wd/9maG7/cHN9/2xvef9kZ3H/
    +Z2p0/3V4gf9nanH/Z2px/2psc/9nanH/Z2px/2Jlbv9kZ3H/Zmlz/2Zpc/9maG7/ZGdx/2Rncf9maXP/
    +YGNs/2dqdP9wcnn/ZGdx/3V3ff9sb3n/bG51/3N1fP9sbnX/d3l//3Byef9vcXX/bG51/3V4f/90d37/
    +bW90/3N1fP9ucHf/bnB3/3N2f/9sb3n/cHJ5/2dqdP9ucHf/cHN9/3Bzff9ucHf/c3V8/3Byef9maG7/
    +d3qD/2xudf9wcnn/am13/3N1fP9sb3n/bW9z/25wd/9ucHf/bnB3/2xudf91d33/cHJ5/2xudf9wc33/
    +ZGdx/2xvef9wcnn/bG95/2xudf91d33/c3V8/2xudf94eX3/d3qD/25wd/9ucXv/foCG/3Bzff9wcnn/
    +bnF7/25xe/9ucHf/am13/2psc/9rbnj/a254/3d6hP9wcnn/dXiB/3N1fP9ucXv/cHN9/3Bzff9wc33/
    +eXuB/3Z5gv91eIH/cHJ8/2lrdP9rbnj/bW93/29xef9xdH3/bnF7/21wev9zdn//c3Z//3Bzff9ucXv/
    +d3qD/3N2f/91d33/bnB3/3N1fP9vcXX/bnB3/3Byef9ucHf/b3F1/3Byef92eHz/bnB3/3Byef9ucHf/
    +dXd9/3Byef9wc33/bG95/3Bzff91d33/d3l//3N1fP9sb3n/bnF7/3Z4fP9tb3P/am13/2xudf9qbHP/
    +am13/25wd/9sb3n/Z2p0/3Bzff9sbnX/bnF7/3Bzff9nanT/bnF7/2ptd/9qbHP/am13/2Zpc/9qbXf/
    +bG95/2xudf9wc33/bG51/25xe/9qbXf/bnF7/3Bzff9qbXf/bG51/2dqdP9qbXf/bnF7/3N1fP9sbnX/
    +am13/25wd/92eHz/bnB3/3N2f/9sb3n/bG95/3Bzff9ucHf/bG51/29xdf9wcnn/bnF7/3Byef9wc33/
    +bG95/3d6g/9sb3n/bnF7/3N1fP9zdn//dXiB/3d6g/9ucXv/cHJ5/3d6g/91eIH/cHN9/3N1fP9qbXf/
    +bW9z/25wd/9ucHf/cHN9/3Byef9nanT/bG95/3Byef93eoP/bG95/3N1fP9wcnn/bG51/2psc/9qbXf/
    +bG51/2Zpc/9sbnX/amxz/2dqdP9ucXv/bG51/2dqdP9ucXv/bG95/2psc/9nanH/Z2px/2xudf9sbnX/
    +am13/2psc/9maG7/YGNs/2Rncf9kZ3H/bG95/2Zpc/9maXP/Z2p0/2Zpc/9kZ3H/bG95/2psc/9nanT/
    +Zmlz/2xvef9sb3n/Zmlz/3d5f/91d33/dXd9/3Byef9ucHf/bnB3/3Byef9wcnn/am13/3d6g/9zdXz/
    +bG95/3Byef95fIb/bG95/25wd/9sb3n/bG95/2xvef9qbHP/bG51/2xudf9qbHP/bG51/2psc/9sb3n/
    +am13/2Zpc/9sb3n/dXd9/2Rncf9sb3n/Zmlz/2dqcf9maXP/Zmlz/3N1fP9qbXf/Z2px/2dqdP9xdH3/
    +c3V8/2psc/9ucXv/amxz/2psc/9sb3n/am13/2xvef9qbXf/bG51/3Bzff9ucXv/bG95/3N1fP9wcnn/
    +amxz/36Ahv9zdXz/cHJ5/2xudf93eX//bG95/21vc/9ucHf/bG95/2xvef9nanT/dXd9/2xvef9qbXf/
    +cHN9/2Rncf9ucXv/bG95/2ptd/9sbnX/b3J7/29ye/9oa3X/c3V8/3J0fP9nanT/bG52/3h6gP9rbXT/
    +bG51/21vdv9sbnX/bG51/21vdf9pa3L/bG92/2hrdf9zdn3/bXB6/2xvef9tb3b/Z2px/21vc/9sbnX/
    +bG51/3Z4fP90dnz/cHJ7/2xvef9pbHP/bW92/2ttdv9sb3f/dHZ8/25wef9sbnf/cHJ5/25wd/9qbXf/
    +am13/3N1fP9ucXv/c3V8/2xudf9ucXv/amxz/2ptd/9qbXf/bG51/2psc/9qbXf/am13/2psc/9qbHP/
    +bG51/2xvef9sb3n/am13/2ptd/9sb3n/c3V8/3N2f/9wc33/cHN9/3V3ff94eX3/bnB3/3Bzff9zdXz/
    +bnF7/25xe/9zdn//c3Z//2xvef97fYP/c3Z//3t9g/97fYP/c3V8/36Ahv91eIH/c3Z//3d5f/94eX3/
    +d3qD/3l8hv91eIH/e32D/3N2f/9zdn//cHJ5/3d6g/91d33/bG95/25wd/9sb3n/bnB3/3V4gf91d33/
    +bnB3/2xvef9ucXv/dXiB/3Byef91eIH/bG95/25wd/9wcnn/bW9z/2psc/9vcXX/cHJ5/2xvef9sb3n/
    +bnF7/25xe/91eIH/am13/2xvef9zdXz/bnF7/3V3ff91d33/b3F1/29xdf91d33/bnB3/2xudf9zdXz/
    +bnB3/25wd/9zdXz/cHN9/3N2f/9zdXz/bG95/25xe/9wc33/eXuB/3N1fP91eIH/dXiB/3Byef9sb3n/
    +bnF7/25xe/9ucHf/bnF7/25xe/9wcnn/c3Z//25xe/9sb3n/cHN9/3Bzff9vcXX/bG95/2xvef9vcXX/
    +bnB3/3Bzff9wcnn/b3F1/25wd/9zdXz/bnB3/3d5f/9ucHf/bG95/3N2f/9ucHf/cHJ5/3Bzff9zdXz/
    +bnB3/25wd/9wc33/cHN9/2dqdP93eX//dnh8/3Z4fP9zdXz/bG51/2xudf9ucHf/bW9z/2dqcf9zdXz/
    +bW9z/2xudf9sbnX/eXyG/2xudf9nanT/Z2px/2Zpc/9sbnX/Zmlz/2Zpc/9nanH/ZGdx/2xudf9qbHP/
    +bnF7/2xudf9kZ3H/bG95/3V3ff9maXP/c3V8/25wd/9sb3n/c3Z//25xe/93eoP/dXd9/25wd/9ucXv/
    +b3J6/3J0fP9ucHf/dXd9/29xdf9ucHf/cHN9/25xe/9zdn//bG95/2xvef9wc33/cHN9/25wd/9zdn//
    +bnF7/2ptd/94e4X/dHZ8/3J0fP9sbnX/dHZ8/29xeP9sbnX/b3F4/29xeP9tcHr/bnB0/3V3e/9wcnn/
    +aGt1/21wev9jZm//cHJ5/25xev9tb3P/bW92/3Z4fP9ydHv/cHJ3/3V3fP9ydHv/aGtz/21vdv96fIP/
    +bW93/2xvef9tb3f/aWx2/2xudf9rbXb/aWx1/2hrcv9pa3T/dnh+/25wd/9tb3f/a254/2dqcf9tb3P/
    +bG51/25wd/91d33/cnV+/3F0ff9vcXr/aWxy/21vd/9tb3b/b3F5/3BzfP9rbnj/bnB4/25wd/9wcnn/
    +bG51/25wd/94eX3/cHJ5/3N2f/9wcnn/c3Z//3Byef9zdXz/d3qD/3N1fP9wcnn/cHN9/3N2f/9sb3n/
    +bG95/3Byef9zdXz/c3V8/29xdf9ucHf/bnF7/3l7gf93eX//dXd9/3N1fP91d33/dXd9/25wd/9ucHf/
    +b3F1/25wd/9ucHf/bnF7/2ptd/9kZ3H/dXd9/2ptd/9zdXz/dnh8/25wd/94eX3/cHJ5/29xdf9wcnn/
    +bG51/3Bzff9ucXv/bG51/3N1fP9tb3P/c3V8/2xudf9zdXz/cHN9/2psc/9qbXf/Z2p0/2ptd/91d33/
    +dXd9/25wd/9ucHf/bG51/3Bzff9sbnX/bG95/2ptd/9sbnX/cHN9/21vc/9qbHP/am13/2xvef9tb3P/
    +bG51/21vc/9qbHP/c3Z//2dqcf9sbnX/bW9z/21vc/9zdXz/c3V8/2xudf9tb3P/cHN9/25wd/9ucHf/
    +Zmlz/2Zobv9maG7/am13/2Zpc/9qbXf/bG95/2psc/9qbXf/am13/3N2f/9qbXf/cHN9/3Bzff9nanH/
    +ZGdx/2dqdP9qbXf/am13/2xudf9sbnX/bG51/25xe/9sbnX/am13/3Byef9zdXz/b3F1/2xudf9sbnX/
    +bG51/2xvef9ucXv/am13/21vc/9sbnX/dXd9/2xudf93eoP/cHN9/21vc/9wcnn/bG51/2dqdP9sbnX/
    +amxz/2dqcf9maXP/Z2p0/2ptd/9maXP/c3Z//3d5f/9wcnn/Z2p0/2Rncf9kZ3H/bG51/2ptd/9maXP/
    +bG95/2xudf9maXP/Z2p0/3d6g/9qbHP/bG51/2psc/9maXP/bG51/2Zpc/9kZ3H/bG51/2dqdP9qbHP/
    +amxz/2ptd/9nanT/YGNs/2ptd/9zdXz/YmVu/25xe/9sbnX/Z2px/2ptd/9qbXf/dXd9/25xe/9maXP/
    +am13/25xe/9xc3r/a254/3ByeP9sbnX/a210/2ptd/9sbnX/am13/2dqdP9qbHP/Zmlz/2dqdP9maXP/
    +am13/2hrcv9iZW7/cnR6/25xev9ucXr/a253/3R2ev9ucHn/bG51/21veP9rbnj/bnF7/21weP9vcnz/
    +b3J6/2tueP9vcnz/ZWhx/3F0fP9wcnn/am11/2ptd/90d4D/cnV9/21weP9xc3v/cXN6/2psc/9qbXX/
    +dXd//2ttdP9tcHr/a254/2lsdP9tb3T/aWx1/2hrdP9tbnX/aGt0/3d4ff9xc3j/bXB6/21vdv9maXP/
    +amxz/2dqdP9qbXf/bnF7/3N1fP9vcnv/bXB6/2Vocv9qbXf/am13/3N1ff9xc3v/bW92/25xev9sb3n/
    +bG95/2dqdP9sbnX/c3V8/2ptd/9qbXf/Z2px/2Zpc/9nanH/Z2px/2ptd/9nanH/Zmhu/2Zpc/9qbXf/
    +YmVu/2Jlbv9maG7/Zmlz/2ptd/9sbnX/YmVu/2Zpc/9sb3n/c3V8/3Bzff9zdXz/cHN9/3d5f/9qbXf/
    +bW9z/2xudf9ucHf/bnB3/3V3ff9sbnX/Z2px/3V3ff9wcnn/dXd9/3V3ff9sbnX/c3Z//3Bzff9tb3P/
    +b3F1/29xdf92eHz/c3V8/2xudf91d33/am13/2ptd/9nanT/bnF7/2ptd/9iZW7/Z2px/2Jlbv9iZW7/
    +Z2p0/2dqdP9nanH/Z2p0/2psc/9zdXz/bG51/3Byef9sbnX/bnB3/3N1fP9sbnX/YmVu/2psc/9qbXf/
    +bG51/2dqdP9qbHP/Z2p0/3d5f/9nanH/bG51/21vc/9sbnX/c3V8/3V3ff9wcnn/bW9z/3Bzff9sbnX/
    +amxz/25xe/9sb3n/b3F1/3d5f/9sb3n/cHN9/3Bzff9ucHf/bnF7/2xvef97fof/bnF7/3d6g/95e4H/
    +c3V8/2xvef91eIH/c3V8/25wd/9ucXv/bnF7/25wd/9wc33/cHJ5/2xvef9zdn//cHJ5/2xudf9sbnX/
    +am13/2ptd/9ucXv/cHN9/25wd/9ucHf/Z2p0/3V3ff9ucHf/eXuB/3N1fP9vcXX/cHJ5/25wd/9vcXX/
    +c3V8/2xudf9sbnX/bnB3/3Byef9sbnX/bG51/3l7gf93eX//d3l//3Byef9sb3n/am13/25xe/9ucXv/
    +am13/3N2f/9vcXX/amxz/2ptd/9+f4P/bnF7/3Byef9ucHf/bnB3/25wd/9sb3n/am13/3Bzff9wcnn/
    +cHJ5/3N1fP93eoP/c3Z//25xe/95e4H/e36H/2dqdP91eIH/d3qD/3N2f/93eoP/d3qD/3t+h/97fYP/
    +c3Z//3V4gf9sb3j/bnB2/25xef9ydXz/cXR9/3Bzff9vcXj/bG95/25wd/9sb3n/bG95/3Byef9sb3n/
    +bG51/3J1fP9ucHf/Z2px/3J1fv9zdXr/cHJ5/2tueP9ydHr/cHJ6/29xd/9wc33/b3J8/3F0ff9xc3z/
    +cXR9/3N2fv9ucHn/c3Z+/2hrdP9zdn7/dXh//29xeP9ucHf/dXiA/3F0ff9tcHr/dHZ7/3R2e/9pbHT/
    +bnF4/3V4f/9sbnb/bnB3/2xudf9sbnX/bW90/2hrc/9rbXT/a254/2dqdP9wc33/bnB0/21wef9tb3P/
    +amxz/21vc/9nanT/bG51/2xvef9sb3n/am13/3Byef9nanT/Zmlz/2dqdP9ucXv/cHN9/2ptd/9ucHf/
    +bG51/25wd/9qbXf/am13/3V3ff9wcnn/cHJ5/2xudf9ucHf/bG51/2xudf9ucXv/Z2p0/2psc/9qbXf/
    +bnF7/2psc/9qbXf/bG95/3Bzff9sb3n/am13/2dqdP9ucXv/cHN9/3d5f/94eX3/dnh8/3V3ff93eX//
    +bG51/2xudf9sb3n/bG95/2xudf9wcnn/cHJ5/2xudf92eHz/bnB3/3N1fP91d33/am13/2xvef9sb3n/
    +bG51/21vc/9sbnX/dXd9/3N1fP9ucHf/cHN9/2ptd/9qbXf/Z2p0/3V3ff9wcnn/Z2p0/2ptd/9nanT/
    +bG51/3Bzff9ucXv/bnB3/2xudf9tb3P/dnh8/29xdf9ucXv/cHN9/25xe/91d33/bG51/2dqcf9tb3P/
    +cHJ5/2xudf9tb3P/bW9z/2ptd/93eX//Z2p0/2psc/9sbnX/am13/3V3ff92eHz/cHN9/29xdf91d33/
    +bnB3/25wd/9qbXf/ZGdx/2psc/9ucXv/am13/2psc/9nanT/Z2px/2xudf9qbXf/dXiB/2xudf9wc33/
    +dXd9/2xudf9nanT/bnF7/21vc/9sbnX/bG51/2ptd/9nanT/am13/2dqcf9nanT/bnF7/2ptd/9qbXf/
    +am13/2ptd/9qbXf/bG95/25xe/9sb3n/Zmlz/2BjbP9qbXf/Zmhu/25wd/9qbXf/Z2px/2dqdP9maXP/
    +Zmhu/2dqdP9kZ3H/Zmlz/2Zpc/9sb3n/am13/2dqdP93eoP/c3V8/3V3ff9nanT/ZGdx/2Jlbv9nanH/
    +Z2px/2dqdP9sb3n/Z2p0/2Jlbv9nanT/eXuB/2ptd/9qbXf/bG51/2xudf9ucHf/b3F1/2dqdP9ucHf/
    +bG51/21vc/9sbnX/c3V8/2xudf9qbHP/dnh8/3V3ff9maG7/c3Z//3N2f/9sb3n/c3V8/3N1fP94eX3/
    +dXd9/3Byef9zdXz/c3Z8/3J0e/9ucXv/cnV7/29xef9vcXj/bW93/3Byef9ucHf/b3F1/29xdf9sbnX/
    +bW9z/25wd/9wcnn/bG95/2hqcf91d37/cnV6/21wef9tb3b/dXd9/3R2fv9ucHf/b3F6/3F0ff9ucXv/
    +cXN6/3J0ff9zdn7/cnR7/3Z5gf9rbnf/c3Z//3R3f/9vcXb/b3F2/3N2f/9wc33/bnB3/3R3gP90dnv/
    +am10/3J0e/90dn3/bG51/29xef9sbnX/am12/2xvc/9gY2z/Zmlz/2dqdP9kZ3H/bG95/2dqcf9qbXf/
    +amxz/2ptd/9qbXf/bG51/2xudf9wcnn/bnB3/21vc/9ucXv/Z2p0/2Zpc/9nanT/bG95/25xe/9wcnn/
    +cHJ5/25wd/9ucHf/bW9z/25wd/9zdXz/dXd9/3Bzff9ucHf/bG95/2xvef9sb3n/dXd9/29xdf9ucHf/
    +bnF7/3Bzff9vcXX/bG95/3V4gf91eIH/bnF7/3N1fP9wc33/d3qD/3d6g/95fIb/e36H/36Ahv9+f4P/
    +e36H/3Bzff9wc33/dXiB/3N2f/9wc33/cHN9/25xe/9qbXf/eHl9/3N2f/91d33/dXd9/2xvef9wcnn/
    +cHJ5/29xdf9sb3n/bnB3/3N1fP9zdXz/cHJ5/25xe/9qbXf/am13/2dqdP91d33/c3V8/2xudf9sb3n/
    +cHJ5/3Byef9zdn//dXiB/3V4gf9zdn//cHJ5/3t9g/9wc33/dXiB/3d6g/95fIb/e32D/3d6g/9wc33/
    +dXd9/3N2f/9zdn//cHN9/3N1fP9zdXz/d3qD/2ptd/9sb3n/cHJ5/25wd/91d33/dnh8/3V3ff9ucHf/
    +dXd9/25wd/9tb3P/bG95/2ptd/9wcnn/c3Z//3Bzff9ucXv/dXd9/2xudf9ucHf/bnB3/3t9g/9vcXX/
    +c3V8/3Z4fP9ucHf/amxz/25xe/9qbXf/am13/2xudf9qbXf/bG51/2psc/9nanH/bG51/25xe/9qbXf/
    +am13/2xudf9qbXf/ZGdx/2xvef9ucXv/bG95/2Zobv9kZ3H/am13/2dqdP9zdXz/am13/2dqdP9zdXz/
    +bG51/2xudf9zdXz/b3F1/2xvef9sb3n/c3Z//25xe/9vcXX/e32D/3d5f/93eX//bnB3/2xudf9nanT/
    +bnB3/25wd/9sb3n/dXiB/25wd/9ucHf/bnB3/31+gf9ucHf/bG95/2xudf9nanT/Z2p0/21vc/9nanT/
    +bG51/2psc/9sbnX/Zmlz/2xvef9nanT/Z2p0/3Bzff9zdXz/ZGdx/3N1fP9ucXv/bG51/3N1fP9ucXv/
    +cHN9/3Bzff9sb3n/bG95/3Fze/9ydHv/b3J5/3R2fP9vcXb/bW95/2hrdf9oa3X/am13/2psc/9qbHP/
    +bG95/2Zpc/9maXP/Z2p0/2dqc/9gY2z/cXR9/29xef9sb3j/bG52/3J0e/9vcnv/b3F1/25weP9wcnn/
    +cHJ2/25weP9wcnn/bnB3/25weP9ydX7/Z2p0/3N2f/9xc33/bnB3/3Bzff9wc33/bnF7/21vc/9zdXz/
    +dnh8/2xudf9zdn//d3qD/29xdf9wcnn/bG95/2xvef9sb3n/Zmhu/25wd/9ucHf/amxz/3V3ff9sb3n/
    +cHJ5/29xdf9sbnX/bnB3/2xudf9tb3P/c3V8/2xudf9sbnX/bnF7/2Zpc/9qbXf/Z2p0/2ptd/9wc33/
    +bG95/3Bzff9sb3n/bG51/25wd/9ucHf/c3V8/3N2f/9zdXz/b3F1/25wd/9ucHf/bG51/3V3ff9vcXX/
    +bG51/25wd/9wcnn/bG95/25wd/91eIH/e32D/3Bzff9wc33/c3V8/3N2f/91eIH/eXuB/3d5f/9zdn//
    +dnh8/3d5f/9nanT/b3F1/25xe/9wc33/cHN9/3Bzff9ucXv/bnB3/3V4gf9wc33/c3Z//3V4gf9ucHf/
    +cHN9/25xe/9ucHf/bG95/2xvef91d33/c3Z//25xe/9wc33/bnB3/25wd/9nanT/c3V8/3N2f/9qbXf/
    +bG95/25wd/9sb3n/c3Z//3Bzff9zdn//c3Z//3Bzff95fIb/cHJ5/25xe/9zdn//cHN9/3Bzff9wc33/
    +Z2p0/25wd/9zdn//bnF7/3Byef9wcnn/cHJ5/3d6g/9ucHf/cHJ5/3Bzff9sb3n/d3l//3Z4fP91d33/
    +bnB3/3N2f/9ucHf/bnB3/25wd/9ucHf/cHJ5/3d5f/91eIH/c3Z//3l7gf9ucXv/bnF7/3N2f/9+gYr/
    +c3V8/3d6g/97fYP/cHN9/3Byef9ucXv/bG95/2xvef9sb3n/bG95/3Bzff9ucXv/bnB3/3Bzff97fYP/
    +dXiB/3Bzff9ucXv/cHN9/25xe/93eoP/e32D/3l7gf9zdn//cHJ5/3N2f/9wcnn/eXuB/3Bzff9ucHf/
    +d3qD/3N1fP9zdXz/eXyG/3V3ff91d33/c3V8/3d6g/91eIH/c3V8/3l8hv93eoP/d3l//3Bzff9sb3n/
    +Zmlz/25wd/9sbnX/b3F1/3Byef9ucHf/bnB3/2xvef97fYP/bnF7/25xe/9ucHf/bG51/2ptd/9qbHP/
    +amxz/2xudf9ucHf/bnB3/2dqdP91eIH/am13/2xvef93eoP/c3Z//2Zpc/91d33/c3Z//3Bzff93eX//
    +c3Z//3V3ff9wc33/bnF7/25wd/91d3v/dXd7/3Byef91d3z/bnB0/3Byef9qbXf/bG95/25wd/9tb3P/
    +bG51/25xe/9maXP/YmVu/2dqdP9kZ3H/YGNs/3J1fv9sb3n/Zmhu/2RmbP9sb3n/Z2py/2dqcf9oa3L/
    +Z2lz/2dpb/9laHH/bG95/2ptd/9sbnX/bG95/2Rncf9wc33/bG95/2xudf9qbXf/c3Z//3V4gf9vcXX/
    +cHJ5/3V3ff9sbnX/dXd9/3d5f/9tb3P/bnB3/2xudf9ucHf/bnF7/2Zobv9sbnX/bnB3/2dqcf91d33/
    +bG51/25wd/9ucHf/b3F1/25wd/9ucHf/am13/3Bzff9sbnX/am13/2xvef9maXP/Z2p0/2Vocv9tb3T/
    +c3V8/25wd/9ydHv/c3Z//2xvef9ucHf/bG95/3Bzff9zdXz/c3V8/25wd/9ucHf/b3F1/21vc/9wcnn/
    +bW9z/25wd/9ucXv/c3Z//3Bzff9wcnn/dXiB/3d5f/9sb3n/bG95/29xdf9ucHf/cHJ5/3Z4fP9ucXv/
    +c3V8/3Bzff9zdXz/ZGdx/2psc/9qbXf/am13/2ptd/9sb3n/bnB3/2dqdP9zdXz/bnF7/25xe/9wc33/
    +bG51/2xvef9sb3n/am13/2psc/9sbnX/c3V8/3Bzff9ucHf/cHJ5/2xudf9tb3P/Z2px/2xvef9wc33/
    +bG51/25wd/9ucHf/b3F1/3N1fP9zdXz/bnB3/25xe/9tb3P/dXd9/2xudf9sb3n/bnF7/25xe/9ucXv/
    +am13/2Zpc/9sbnX/c3V8/25wd/9sbnX/bW9z/2xudf94eX3/bnB3/25wd/9ucXv/bnB3/3Z4fP91d33/
    +eHl9/25wd/9zdXz/bG51/29xdf9ucHf/bnB3/3Byef91eIH/c3Z//3Bzff93eoP/bnF7/3Bzff9ucXv/
    +eXyG/25wd/9zdXz/dnh8/25wd/9ucHf/bnF7/3Byef9qbXf/bnB3/25wd/9ucXv/bnB3/25wd/9sbnX/
    +dnh8/25wd/9tb3P/bnB3/25wd/9qbXf/cHN9/3V3ff92eHz/cHJ5/2xudf9wc33/cHJ5/3l7gf9wc33/
    +bnF7/3V3ff9tb3P/bnB3/3Byef9ucHf/b3F1/25wd/9zdXz/cHJ5/29xdf95e4H/dXiB/3l7gf9ucHf/
    +bnB3/2RmbP9sbnX/Z2p0/2psc/9sbnX/am13/2Zpc/9qbHP/c3Z//2ptd/9qbXf/am13/2dqdP9maXP/
    +am13/2Zpc/9qbXf/bG51/2xvef9nanT/bG95/2Rncf9maXP/bG95/2ptd/9iZW7/bnF7/2xvef9sbnX/
    +cHN9/25xe/9zdXz/bnF7/2xvef9qbHP/cHN9/3Byef9sb3n/dnh8/21vc/9ucHf/bG51/25wd/9qbXf/
    +bG51/21vc/92eHz/bnB3/2dqcf9zdXz/bnB3/2dqdP97fof/c3Z//25xe/9ucXv/eXuB/2xvef9ucHf/
    +bG95/25xe/9ucHf/bnB3/25xe/9qbXf/bG51/2xvef9kZ3H/c3V8/25xe/9qbXf/bG51/3N2f/93eoP/
    +cHJ5/3Bzff91d33/bG51/3V3ff95e4H/bG51/3Byef9ucHf/b3F1/3Byef9maG//Z2p0/2dqc/9hZG3/
    +cHN9/2ttdP9oa3X/a21z/2psc/9qbXf/bG51/2ptd/9wc33/bG95/25xe/9tcHr/Z2p0/2dqdP9oa3P/
    +bXB3/3J1fv9ucXv/bG95/3Byef9qbHP/amxz/2psc/9sb3n/bG95/2xvef9sbnX/bnF7/2psc/9sbnX/
    +bnF7/2psc/9maXP/Zmlz/2ptd/9maXP/Z2px/25xe/9ucXv/amxz/2Zobv9kZ3H/Zmlz/2dqdP9wcnn/
    +bG95/25xe/9wc33/c3V8/2Rncf9sbnX/am13/2psc/9nanT/bG95/2dqcf9qbHP/c3V8/25xe/9ucXv/
    +cHN9/2psc/9qbXf/bnF7/25wd/9tb3P/b3F1/3V3ff9zdXz/c3V8/3N1fP9sbnX/bnB3/2psc/9ucHf/
    +eHl9/25wd/9sbnX/bG51/2xvef9zdn//bnF7/2xudf9ucHf/bnB3/3V4gf9ucHf/cHJ5/3N1fP9ucXv/
    +bnF7/3N1fP9qbHP/amxz/3V3ff9ucHf/bnB3/25wd/9ucHf/dnh8/21vc/9ucHf/c3V8/25wd/92eHz/
    +dXd9/3Z4fP9ucXv/dXiB/25xe/9zdXz/am13/2Zpc/9qbHP/cHN9/2xvef9sbnX/cHN9/2ptd/9sbnX/
    +bnB3/3l7gf9wcnn/c3Z//3V4gf9ucXv/bnB3/25xe/9ucHf/am13/25wd/9sb3n/bnF7/25wd/9ucHf/
    +bG51/3d5f/9wcnn/b3F1/2xudf9ucHf/Z2px/2xvef9wc33/bnF7/2xvef9qbHP/bG95/2Zobv9sb3n/
    +Z2px/2dqcf9qbXf/Z2p0/2Zpc/9sb3n/am13/2ptd/9qbXf/bG51/3V3ff9sb3n/eXyG/3l7gf95e4H/
    +cHN9/25wd/9qbXf/c3Z//3N1fP9zdXz/dXiB/3V3ff91eIH/d3l//4OFjP97fYP/eXuB/3V4gf9zdn//
    +cHN9/3N2f/9wc33/d3qD/3V3ff91eIH/cHN9/3l7gf9zdXz/bnF7/3V4gf9wc33/am13/3d6g/91eIH/
    +cHN9/3N2f/93eoP/e32D/3N2f/9wcnn/b3F1/3V3ff91eIH/bnF7/3l7gf9ucHf/c3V8/29xdf9ucHf/
    +bW9z/21vc/9vcXX/dXd9/25wd/9sb3n/bnF7/2dqdP9nanT/e32D/3V3ff9wcnn/bnB3/3Z4fP9tb3P/
    +b3F1/25wd/9ucHf/bG51/2psc/9zdn//bnF7/25wd/9zdXz/Zmhu/3Z4fP9ucXv/b3F1/21vc/99f4X/
    +e32D/3V3ff93eoP/fX6C/3V3ff98foX/f4GI/3N2f/92eYL/cnR7/29yfP9zdn//aGt1/25wd/9qbHP/
    +ZWhy/29ye/9sbnX/bW92/21vdv9nanH/am13/2dqcf9maXP/bnB3/2Zpc/9nanT/bG92/2hrdP9lZ3D/
    +ZWhw/2xudP9ucXr/a212/2hqc/9qbXf/bG51/2xudf9qbXf/bnF7/3Byef9wcnn/b3F1/3N1fP9wcnn/
    +bG51/3N1fP9vcXX/bnB3/3Byef9zdXz/bnB3/3Byef9wc33/dXd9/25xe/9sb3n/bnB3/25xe/9zdXz/
    +eHl9/3N1fP9zdXz/cHN9/3Z4fP9nanH/bG51/3Bzff9sbnX/bnB3/3V3ff9tb3P/bG51/3Z4fP9wcnn/
    +cHJ5/3N1fP9sbnX/bG51/2xvef9zdXz/bG51/2xudf9wcnn/c3V8/3Bzff9zdXz/bnB3/25wd/9sb3n/
    +bG95/3d5f/9ucHf/cHJ5/2xvef9vcXX/c3Z//3Bzff9sb3n/bG95/25xe/91eIH/bnB3/3N2f/9zdn//
    +c3Z//3N2f/93eX//bnB3/2xvef9wc33/bG95/2xudf9sbnX/bG51/3Z4fP9qbXf/am13/3Byef9sbnX/
    +c3V8/3N1fP9ucXv/bG95/3N1fP9qbHP/bW9z/21vc/9sbnX/bnB3/3V3ff9wc33/bG95/3N2f/9ucHf/
    +bnF7/25xe/93eoP/cHN9/3N2f/95fIb/d3qD/3V3ff91eIH/dXd9/3N2f/9zdn//c3V8/3V4gf9wcnn/
    +cHJ5/3Bzff91eIH/cHN9/25xe/9ucHf/cHJ5/2psc/9zdn//eXuB/3N2f/9ucXv/bG95/3N1fP9vcXX/
    +c3V8/2xudf9sbnX/dXd9/25xe/9ucHf/cHN9/3Byef9wcnn/bnF7/3N1fP91eIH/bnF7/3l8hv95e4H/
    +eXuB/25xe/9qbXf/Zmlz/3Byef9ucHf/am13/3Bzff9sb3n/cHN9/25wd/93eoP/c3Z//3Byef9ucHf/
    +b3F1/2psc/9vcXX/bG51/3Byef9vcXX/am13/2xudf9zdXz/bG51/2xudf9wc33/bG95/2Zobv9wcnn/
    +cHJ5/25xe/9sb3n/c3V8/3V3ff9ucXv/bG95/21vc/91d33/eXuB/25wd/91eIH/bG51/3Byef9tb3P/
    +bnB3/2xvef9ucXv/cHJ5/3V4gf9wcnn/bG95/25xe/9qbXf/Zmlz/3Z5gv9zdn//cHN9/21vef92eH7/
    +bnB3/29xdf9sb3n/bnB3/29xdf9vcXb/dHZ9/3Byef9ucHf/bG94/2Nmb/91d3z/bG95/2lsc/9nanT/
    +bnF7/3V4gf9xc3v/c3Z//3N2fv9tcHr/dXd+/3J1f/9rbnj/bnF7/2xveP9tb3j/cXN6/29xeP9tb3P/
    +aWty/2ptdP9wc3v/b3F4/3Bze/9ucXr/Z2p0/2xvef9qbHP/Zmlz/25wd/9nanL/aGt0/25xef9sbnb/
    +aGt1/21wef9ydX7/dHeB/29xef9sb3j/bnF7/2xudf9qbHP/amxz/25xe/9sb3n/bG95/21vc/9ucXv/
    +bnF7/2xvef92eHz/bnB3/3Byef9zdXz/cHJ5/21vc/9qbHP/bnF7/3N1fP9sbnX/bG51/2dqdP9sb3n/
    +bG95/3Bzff9sb3n/c3V8/25xe/9wc33/Z2p0/2ptd/9ucXv/amxz/2dqdP9sb3n/Zmlz/2dqcf9sb3n/
    +am13/2xvef9zdXz/amxz/2xudf9qbXf/bnF7/2ptd/9tb3P/bnF7/3V3ff9zdn//cHN9/25wd/9ucHf/
    +bnB3/25wd/91eIH/bnB3/3Byef9ucHf/cHJ5/3N2f/91eIH/c3V8/3Bzff9wc33/e32D/25wd/9wc33/
    +dXiB/3l7gf91eIH/d3l//2xvef9qbXf/bnF7/25wd/9qbHP/bnB3/2xudf94eX3/bnB3/2xudf9sb3n/
    +am13/3Byef9zdXz/c3V8/2ptd/9zdXz/amxz/2xvef9ucHf/am13/21vc/92eHz/c3V8/25wd/91d33/
    +b3F1/29xdf9vcXX/dnh8/25wd/9ucHf/bnB3/25xe/9qbXf/bG95/2psc/9sbnX/bG51/2xudf9qbXf/
    +Z2p0/2dqdP9nanH/dXd9/2dqdP9nanH/ZGdx/2Zpc/9dYGr/Z2p0/3N1fP9sb3n/bG51/2ptd/9qbXf/
    +amxz/2xvef9sbnX/am13/25xe/9wcnn/amxz/25xe/9qbHP/Z2p0/2xudf9sbnX/c3V8/2ptd/93eoP/
    +cHN9/3Bzff9sb3n/am13/2psc/9ucHf/bW9z/2xudf9ucHf/bG51/3Byef9tb3P/d3l//3Bzff9sb3n/
    +cHJ5/2xudf9maXP/bG51/2dqdP9wc33/am13/2xudf9ucHf/c3Z//25wd/9ucHf/dXiB/3V4gf9kZ3H/
    +dXd9/25wd/91d33/bG51/3Bzff95fIb/c3Z//2xvef9sb3n/cnV+/3Z5gv9sbnX/enyC/29ydv9vcnz/
    +bnB3/3Bzff9wc33/bG95/2xvef9wcnn/b3F1/2dqcf9ucHf/bG92/2hrdf91eIH/dXd+/3R2fv9ydHv/
    +dXd8/29yd/9wcnf/b3F3/3J0e/9ucHj/b3J5/3V3ff9wcnj/cHJ3/3Fzev9sbnX/dHZ8/29xd/9tcHn/
    +bG51/25xef9ydX7/bnB5/2xvef9vcXj/bG93/29yev9wcnj/aWx1/3Bze/9tcHr/a254/3Byef9tcHr/
    +bW92/2dqdP9rbnb/dHZ9/3R2ff9zdX3/c3V8/29yef92eYL/dXd9/3Z4fP9+gYr/cXR+/3N2f/92eID/
    +bW93/2hrdP9sb3n/b3J8/3V3ff9oa3X/YmVu/35/g/93eX//c3V8/3N1fP93eoP/c3Z//3N2f/9ucXv/
    +cHN9/3V4gf9zdn//eXyG/3N2f/9wc33/cHN9/3Bzff9ucHf/am13/3Bzff91d33/bnF7/3Byef9sbnX/
    +cHJ5/25wd/9zdXz/cHJ5/3V3ff9zdXz/cHN9/2ptd/9ucHf/d3qD/3Bzff9wc33/cHN9/2xvef9ucHf/
    +dXiB/3Bzff91eIH/e32D/3V3ff93eoP/eXuB/3t9g/93eX//d3l//3l8hv97fof/e32D/36Ahv97fYP/
    +eXuB/3V3ff91d33/gYOK/3Z4fP93eX//eHl9/3h5ff97fYP/d3qD/3N1fP95fIb/d3qD/3t+h/9wcnn/
    +c3Z//3d6g/91eIH/dXiB/3l7gf9zdXz/c3V8/3V4gf9zdXz/Z2p0/2xvef9nanT/d3l//25wd/9qbXf/
    +bnB3/2ptd/9ucXv/dXd9/3Z4fP9wcnn/c3V8/2xudf9vcXX/YmVu/2Jlbv9maG7/bnB3/2dqdP9iZW7/
    +ZGdx/2BjbP9kZ3H/ZGdx/25wd/9kZ3H/Zmhu/2Zpc/9maXP/Zmlz/2Zobv9dYGr/YGNs/2Zobv9maG7/
    +Z2p0/2Zpc/9nanT/Zmlz/3V4gf9sb3n/am13/2psc/9qbXf/Zmhu/25wd/91d33/c3V8/3N1fP9sb3n/
    +bnF7/3Byef91eIH/c3Z//3N2f/91eIH/d3qD/3N1fP93eoP/cHN9/3Byef9wc33/c3V8/3d5f/9ucXv/
    +eXyG/3l7gf91eIH/c3Z//25wd/9qbXf/c3V8/3Bzff9wc33/c3Z//25wd/9ucXv/bG95/3l7gf91d33/
    +bnB3/3Byef9ucHf/bnB3/25xe/9wcnn/cHN9/2xvef9sb3n/bG95/3Bzff9ucHf/bnB3/3N1fP9zdXz/
    +Zmhu/3Bzff9qbXf/bnF7/2ptd/9sb3n/dXiB/3Bzff9ucHf/bG51/3V2e/92eYD/bG52/3R2fP9sbnX/
    +cXN6/21vd/9vcXn/cHJ5/3Byef9ucHf/bnB3/25wd/9qbHP/bG51/2psdP9pbHT/cHJ4/25weP9sb3f/
    +bnB5/21vd/9ucHf/aGt1/2hrdP9qbXf/aGt0/2xvd/9sb3n/aWx0/21weP9nanT/ZWhv/25xev9vcnr/
    +a254/25xeP9ydHz/dHZ9/29xe/9vcnz/b3J8/3N1ev9xdH3/cnR9/3F0ff92eYH/dXiA/25xev9zdXz/
    +c3Z//3Byef9rbnj/b3J8/3h6gP90dn//cnR7/29xef9pbHb/cHJ5/21vc/9vcXX/d3l//29xdf90dnz/
    +dnh8/2tud/9maXP/c3V8/3N1fP93eX//bG51/2psc/9zdXz/b3F1/25wd/9sbnX/bnF7/2ptd/9qbXf/
    +amxz/2xvef9ucXv/bG51/3d5f/9vcXX/bnF7/3N1fP91d33/bnB3/2ptd/9zdn//c3Z//25xe/9wc33/
    +am13/3Bzff9wc33/dXd9/3N1fP91d33/bnB3/25wd/9sbnX/bG95/3N2f/9ucXv/c3Z//3V4gf9zdXz/
    +cHJ5/3d5f/91d33/cHJ5/3V3ff9tb3P/bG95/2xvef9wc33/am13/25xe/9ucXv/c3V8/3Byef91d33/
    +bnB3/25wd/9ucHf/cHJ5/3l8hv9sb3n/bnB3/25wd/9ucHf/cHJ5/25wd/9qbXf/cHJ5/3Byef94eX3/
    +bnB3/25wd/9zdXz/bnF7/3V4gf91d33/am13/29xdf9wcnn/bW9z/2Zpc/9qbXf/Zmlz/3Bzff9sbnX/
    +Z2p0/2xvef9qbHP/Z2p0/2xvef9ucHf/Z2px/2dqdP9iZW7/ZGZs/25wd/9sb3n/bnF7/3d5f/91d33/
    +bG95/3V3ff9qbXf/bG95/29xdf93eX//cHJ5/25xe/9wcnn/bnF7/2psc/9sbnX/Zmlz/2ptd/9sbnX/
    +bG95/2xudf9tb3P/bnB3/25wd/97fof/c3Z//3V4gf9zdXz/dXiB/25xe/91eIH/e36H/3V4gf93eoP/
    +d3qD/3d6g/93eX//eXyG/3l8hv95fIb/eXuB/3t9g/9zdn//d3qD/3N2f/9wcnn/bnB3/2xvef92eHz/
    +b3F1/3l7gf93eX//c3V8/3N2f/9ucHf/Z2px/21vc/9sbnX/bG51/2xvef9qbHP/am13/2dqcf9zdn//
    +bG95/2psc/9sb3n/bG51/2ptd/9qbXf/bG51/25xe/9sb3n/bG51/2xudf9ucHf/bG51/2dqdP9sb3n/
    +bG95/11gav9qbXf/am13/3Bzff9sbnX/bnF7/3V4gf9ucXv/bG51/2xudf9ydHz/dHZ8/29xef9ucXv/
    +bG50/25xef9nanT/am13/2dqdP9nanT/Z2px/2Zpc/9nanH/Zmlz/2ttdP9oa3T/bnB4/3V3ff9ydX//
    +c3aA/3J1fv9tcHn/cnV+/29ye/9tb3f/cXR+/3J1fv92eH7/c3aA/25xev91d33/cXR9/21wd/9vcnz/
    +c3Z//3J1ff90dnz/cnR8/3N1fP9wcnj/bnB3/3Byef91d3v/cHJ5/25wd/9tcHf/c3V8/3J0fP9sbnX/
    +bW9z/3N2f/9wcnn/amxz/25xe/93eX//dHeA/3J0fP9vcnv/a211/29yef9ucHf/bW9z/3d5f/9vcXb/
    +c3V9/3V3fv9sb3j/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/c3V8/2psc/9nanT/bG51/2ptd/9sbnX/
    +bG51/2ptd/9sbnX/cHJ5/2xudf94eX3/bG95/25xe/9zdn//cHN9/2xvef9nanT/dXd9/3N2f/9sb3n/
    +dXd9/2xvef9wc33/dXiB/3d5f/9zdXz/dXd9/25wd/9zdXz/amxz/2xudf9wcnn/am13/3Byef9sb3n/
    +amxz/2Zpc/9wcnn/am13/2dqdP9wc33/amxz/2xvef9sb3n/bnF7/2xudf9zdXz/cHJ5/3Byef9wc33/
    +bnF7/2ptd/9sbnX/bG51/2xudf93eX//bW9z/2xudf9sbnX/bG51/3Byef9wcnn/b3F1/2xvef9ucXv/
    +dXiB/2xvef9ucHf/dXd9/3N1fP9zdn//dXd9/2xvef9ucHf/c3Z//25xe/9qbXf/cHN9/2ptd/95e4H/
    +dXiB/3Bzff93eoP/c3Z//3t9g/9+f4P/eXyG/3d6g/91eIH/c3V8/3N2f/9qbXf/bW9z/25wd/93eX//
    +dXd9/3Byef93eX//cHJ5/3Byef9wcnn/e32D/3V4gf9wc33/bnF7/3Bzff9nanT/bG95/2ptd/9sbnX/
    +bW9z/25wd/9ucHf/bG51/2dqdP9qbHP/dXiB/2xvef9ucXv/bG51/2ptd/9kZ3H/Z2p0/3Byef9maG7/
    +am13/2dqdP9qbXf/Z2p0/2dqdP9sb3n/am13/3Bzff9ucXv/bG51/2xvef9sb3n/bG51/2dqdP9qbXf/
    +dXd9/25wd/93eoP/dXiB/3V3ff91d33/b3F1/2Zobv9ucHf/bW9z/2xudf9ucXv/bG51/3Byef9tb3P/
    +dXiB/3Bzff9qbHP/am13/2dqdP9sbnX/bG51/2ptd/9sb3n/bG95/2psc/9sbnX/Z2p0/2Zpc/9maXP/
    +amxz/2xvef9iZW7/bG95/25xe/9wc33/amxz/2ptd/91eIH/bnF7/25wd/9sb3n/b3F4/3R2ff9wcnn/
    +cXN4/21vc/9ydHv/bG51/25xev9wc33/cHN9/25wd/9wc33/cHN9/3Byef9wc33/bG94/25xef9xc3v/
    +c3V8/29xeP91d33/bG95/3R3gP9ucXv/amx0/2xvef9ucXv/cHN8/3Bzff9wcnn/c3V8/3Byef9vcXj/
    +cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/d3l//25wd/9wcnn/bnB3/3V3ff91d33/
    +bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9xc3r/c3V8/21vdv93eoT/dXiB/3V3ff9/goz/
    +cHJ8/3h6gf91d37/aWx2/2Vocv9ucXv/c3V8/3N1fP9qbXf/am13/3t9g/9wcnn/bnB3/3N1fP9ucXv/
    +bG95/2xvef9wc33/bnF7/3N2f/9sb3n/d3l//2xvef9ucXv/bnF7/3V4gf9zdXz/Z2p0/3N2f/91d33/
    +bG51/3V3ff9ucHf/cHJ5/3N2f/9zdn//c3Z//3N2f/9ucXv/c3Z//2ptd/9wcnn/cHN9/3Byef9wc33/
    +c3V8/29xdf9ucHf/dnh8/3N1fP9wcnn/c3V8/21vc/9zdXz/bnB3/2xvef9ucHf/bnF7/2ptd/9ucHf/
    +bnF7/25xe/9sbnX/bG51/2xudf9tb3P/dXiB/2psc/9qbHP/bG51/2dqdP9sb3n/bnF7/2ptd/9qbXf/
    +am13/3V3ff9maXP/Zmhu/2ptd/9sb3n/bnF7/2xvef9maXP/Zmhu/2ptd/9maG7/XWBq/2Rncf9gY2z/
    +bG95/2dqdP9qbHP/Z2p0/2psc/9qbXf/cHN9/3N1fP9ucXv/bnF7/2xudf9sbnX/am13/21vc/9ucHf/
    +eXuB/3N1fP9wcnn/cHJ5/2xudf9qbHP/am13/3Bzff9sb3n/bG95/25wd/9wcnn/amxz/21vc/9sbnX/
    +am13/2dqdP9qbXf/bG51/2xudf9sbnX/am13/3d5f/9sb3n/bnF7/2xvef9sb3n/bG51/3Byef92eHz/
    +bG51/3N1fP9wc33/c3Z//3Bzff9zdXz/c3V8/3N1fP9wcnn/dXd9/2xudf9wcnn/bnB3/2ptd/9sbnX/
    +am13/3Bzff9qbHP/d3l//3d5f/9zdXz/dXd9/25wd/9kZmz/bG95/2xvef9wc33/c3Z//29xdf9wc33/
    +bnB3/3d6g/91eIH/bnF7/25xe/9sb3n/cHJ5/3Byef9wcnn/c3Z//3N1fP9wcnn/cHN9/3N2f/9wcnn/
    +cHJ5/25xe/9zdn//Zmlz/3V4gf9wc33/d3l//2xudf9ucHf/d3l//25xe/9sb3n/bG95/3p8g/97fYP/
    +dnmC/3V3ff91d3z/dHeA/3F0fP9zdXz/cXN6/3V3ff9ucHf/cHJ5/3Byef9sbnX/bnB0/29xeP9ucXr/
    +b3F4/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/
    +bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/bG51/3N1fP9nanT/amxz/2psc/9ucXv/
    +cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/ZWhx/2Zpc/9jZnD/a254/2xudf9maXP/
    +dXd9/2lrc/9wcnn/bXB4/2dpcP9laHL/am13/2xvef9zdXz/bG95/2xudf94eX3/bG95/25wd/9sb3n/
    +bnF7/25xe/9ucXv/bnB3/3Byef9zdXz/bnB3/3h5ff9vcXX/bnF7/25wd/9zdn//cHJ5/2Zpc/9zdn//
    +cHN9/25xe/93eX//cHJ5/25xe/9zdn//c3Z//3Byef9zdXz/c3V8/3Byef9nanH/bG51/3Byef9sbnX/
    +cHN9/3N1fP9ucHf/bG51/3V3ff9wc33/amxz/3V3ff9qbXf/bnB3/3Byef9ucHf/bG95/2ptd/9sbnX/
    +bG95/25xe/9zdXz/am13/2xudf9qbXf/bG51/3V4gf9qbXf/bG51/25wd/9tb3P/bnF7/2xvef9sbnX/
    +cHJ5/25wd/95e4H/bG51/2xudf9qbXf/bG95/2xvef9sb3n/Z2p0/2Zpc/9ucXv/am13/2Zpc/9sb3n/
    +Zmlz/3N1fP9ucXv/bG51/2xvef9qbXf/dXd9/3Z4fP94eX3/c3V8/3Byef9sbnX/am13/3V3ff9zdn//
    +dXiB/3t+h/91eIH/cHN9/3N2f/9sb3n/bG51/25wd/95e4H/bG95/2xudf9sb3n/am13/2Rncf9nanH/
    +YGNs/2Rncf9maXP/bG51/2ptd/9qbXf/am13/2ptd/91d33/bG95/3Bzff9sb3n/cHJ5/2xudf9sb3n/
    +dXd9/2ptd/9sb3n/cHN9/3Bzff9ucXv/bG95/3Bzff9zdXz/bnF7/3N1fP9ucHf/dXd9/3Byef9tb3P/
    +b3F1/2xudf9zdn//bnB3/3d5f/93eX//cHN9/3d6g/9ucXv/Zmlz/3Byef9ucHf/cHN9/3N2f/9sb3n/
    +c3Z//25xe/91eIH/dXiB/3Bzff9zdn//cHJ5/25wd/9vcXX/bG51/3Byef9sbnX/am13/2xudf9sbnX/
    +amxz/2psc/9qbHP/am13/2Jlbv9ucXv/bnF7/3N1fP9nanT/bnB3/3Z4fP9wcnn/bG51/2xudf95e4H/
    +c3Z//25xe/9ucHf/bG95/25xev9vcXj/bXB6/21vef92eHz/cHJ5/25xe/9sb3n/bnB3/3Bydv9rbnf/
    +bG94/29xeP9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/
    +cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/am13/2psc/91d33/am13/2xudf9maXP/
    +bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/dnh8/3Byev9zdXz/cXR9/3R3gP9wc33/
    +bnF7/3+CjP9zdn//dnmD/3h7hP9xc3r/c3V8/3t9g/9+gIb/e32D/3d6g/9wc33/e32D/3Bzff9zdXz/
    +cHN9/25xe/9zdn//bnF7/2xvef9ucXv/dXd9/29xdf91eIH/bnB3/2xvef9ucHf/dXd9/2xvef9kZ3H/
    +cHN9/3N2f/9ucXv/d3l//2xvef9ucXv/dXiB/3V4gf9zdn//c3Z//3V4gf9wc33/am13/2xvef91eIH/
    +bnF7/3V4gf91eIH/bnF7/2xvef93eX//cHN9/3Byef91eIH/bnB3/25xe/9wc33/c3Z//3Bzff9wc33/
    +cHN9/25xe/9wc33/dXd9/25wd/9ucHf/bG95/25wd/93eoP/bnB3/25xe/9wc33/cHJ5/3Bzff9vcXX/
    +bnB3/3Byef9tb3P/d3l//2ptd/9sbnX/am13/25xe/9wcnn/cHJ5/2xudf9qbHP/cHJ5/2xvef9qbHP/
    +cHN9/2dqdP91eIH/d3qD/3Bzff9zdn//cHJ5/3d6g/95e4H/e36H/3V4gf93eoP/cHN9/3V4gf9sb3n/
    +bG95/3Byef91eIH/c3Z//25xe/9wcnn/bG51/2dqcf9ucHf/dnh8/21vc/9qbXf/bG95/3Byef9sbnX/
    +b3F1/2RmbP9sbnX/bG51/2ptd/9sb3n/Z2p0/2dqdP9sbnX/dXd9/2xudf9ucXv/bnF7/2xvef9nanT/
    +bG51/3N1fP9sbnX/cHJ5/3Bzff9ucXv/bnF7/25xe/9wc33/cHN9/2xvef91d33/bnB3/3V3ff9zdXz/
    +b3F1/2xvef9sb3n/c3Z//3Byef93eoP/d3qD/3N2f/91eIH/cHN9/2dqdP9ucHf/bnF7/3N2f/9wc33/
    +bnB3/3N2f/9wcnn/eHl9/3V3ff9sbnX/bG95/2xudf9sbnX/bG51/2Zpc/9sbnX/amxz/2Zpc/9maXP/
    +Zmhu/2Zobv9maG7/amxz/2xvef9gY2z/Z2p0/2xvef9ucXv/Zmlz/2xudf91d33/bG95/2xudf9ucHf/
    +bnF7/25xe/9ucHf/bG51/2xudf9sb3n/am13/3J0e/9zdn//d3l//3Bzff9wc33/cHN9/25xe/9xc33/
    +bnB2/25weP9wcnn/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/am13/2xudf9ucXv/bG95/25xe/9wc33/
    +bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/
    +am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn//d3qD/3l7gf93eoP/dXh//29yfP9vcnv/
    +b3F1/2xudf93eoP/b3F4/3d5f/97fYb/dHZ//3V3ff97fYP/foCG/3t9g/9zdn//cHJ5/3l8hv9wc33/
    +c3V8/3N2f/91eIH/d3qD/3d6g/9ucXv/cHN9/3N2f/9wcnn/d3qD/3N1fP9zdn//c3V8/3N2f/9sb3n/
    +Zmlz/3N2f/91d33/bG95/3l7gf9sb3n/bnB3/25wd/9zdXz/bnB3/25wd/91d33/bnB3/2xudf9qbHP/
    +cHJ5/21vc/92eHz/cHJ5/2xudf9sb3n/eHl9/3V3ff9wcnn/d3qD/25wd/9wc33/bnF7/3V4gf9wc33/
    +bnF7/2xvef9sb3n/c3Z//3N2f/9wcnn/bG95/2xvef9sb3n/d3l//25wd/9vcXX/b3F1/29xdf9zdXz/
    +bnB3/25wd/9ucHf/b3F1/3d5f/9qbXf/bG51/25wd/9wcnn/bnF7/3Byef9sbnX/amxz/3Byef9wcnn/
    +amxz/3Byef9qbHP/cHN9/25xe/9tb3P/bnB3/21vc/91d33/dXiB/3V4gf9zdn//cHN9/25wd/9ucHf/
    +c3V8/3Bzff91eIH/foGK/3t9g/93eoP/d3qD/3Byef9ucXv/dXiB/3d5f/9sb3n/bnB3/3Bzff9wc33/
    +Z2p0/25wd/9maG7/bG51/2xudf9tb3P/bG51/2psc/9sb3n/bnB3/3l8hv9wc33/c3Z//3Bzff9wc33/
    +am13/2xvef93eoP/cHJ5/3N1fP91d33/dXd9/3V3ff9zdXz/dXd9/3V3ff9wcnn/dXd9/29xdf91d33/
    +dXd9/3Byef9sb3n/b3F1/3Byef9tb3P/dXd9/3d5f/9ucHf/cHJ5/3Byef9kZ3H/am13/2Zpc/9sb3n/
    +bnF7/2ptd/9zdXz/bG51/3V3ff9zdXz/bnB3/3N1fP9sb3n/bG95/25wd/9ucHf/bG95/25wd/9wcnn/
    +c3V8/29xdf9ucHf/bG51/29xdf9zdXz/Z2px/2xvef9zdn//eXuB/3Byef9wcnn/eXuB/25xe/9sb3n/
    +bnB3/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/2xvd/9vcXn/am13/3Bzff9qbXf/am13/2psc/9ucHf/
    +am13/2xudf9sbnb/bW92/3Byef9ucXv/bG95/2ptd/93eX//dXd9/3Byef9ucHf/c3V8/3N1fP91d33/
    +c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/
    +bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/bG95/2xvef9wcnn/am13/2tueP9maXD/
    +Z2p0/2dqcf9iZW7/cHJ5/2hqcf9xc3r/bnB5/2xudf9qbXf/cHN9/3Z4fP9wcnn/bnB3/2xudf93eX//
    +Zmlz/2ptd/9ucHf/am13/25xe/9ucXv/bW9z/25wd/9sb3n/am13/3V3ff9qbXf/bG95/2ptd/9sb3n/
    +ZGdx/11gav9qbXf/am13/2xvef9zdXz/Z2p0/2xudf9wcnn/bnB3/2xudf9ucHf/cHN9/25wd/9sbnX/
    +am13/25xe/9sb3n/d3l//3Bzff9ucXv/bnF7/3l7gf91eIH/cHN9/3l8hv9zdXz/d3qD/25xe/91d33/
    +c3V8/3N1fP9vcXX/bG51/3N1fP9wcnn/b3F1/21vc/9tb3P/bG51/3d5f/9sb3n/amxz/2xudf9sbnX/
    +c3V8/2xudf9ucHf/bnB3/25wd/93eX//bnB3/2xudf9wcnn/c3V8/25xe/9wc33/bG95/25wd/91eIH/
    +d3qD/3Bzff93eoP/cHN9/3l7gf91eIH/dXd9/3l7gf95e4H/e32D/4GDiv9/gYf/foCG/36Ahv9wc33/
    +cHN9/2ptd/9sbnX/bG95/3N1fP9wc33/bnF7/25xe/9qbXf/Z2p0/25xe/9wc33/am13/2Zpc/9nanT/
    +Z2p0/2Rncf9maXP/ZGdx/2dqdP9qbXf/amxz/2xudf9kZ3H/am13/2xudf97fYP/cHN9/3N1fP9ucXv/
    +dXiB/2xvef9ucHf/d3l//25wd/9zdn//d3l//3V4gf91d33/cHN9/3l7gf95e4H/dXiB/3l8hv9wcnn/
    +eXuB/3V4gf9wc33/cHN9/3N2f/91eIH/bnF7/3d5f/93eX//bnF7/3N1fP9tb3P/Z2px/25wd/9sbnX/
    +dXd9/25wd/9qbXf/c3V8/2xudf9wc33/c3V8/2ptd/9wcnn/bG51/2xvef9tb3P/b3F1/2xvef9sb3n/
    +bG95/25xe/9ucHf/bnF7/3N2f/9wcnn/d3l//2xvef9wc33/eXyG/3t+h/9zdn//d3qD/36Ahv93eoP/
    +d3qD/3V4gf9ucXv/bnF7/25xe/9vcXX/amxz/3R2ff9wcnr/c3V6/25wd/92eHz/c3Z//25xe/9ucXv/
    +bG95/29ye/9tb3f/bnB3/25wdP9sb3n/c3V8/25wd/9qbXf/dXd9/3V4gf9wc33/bG95/3N2f/91eIH/
    +d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/dXiB/3t+h/9zdn//dXiB/25xe/97fYP/
    +c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/bnB3/3Bzff9zdn//c3V8/29xeP9ucXn/
    +bW90/2xveP9qbXf/Z2px/3d5f/9tb3T/c3V8/3N2fv9ucHj/cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//
    +c3Z//2Rncf9maXP/Z2p0/2Zobv9qbXf/bG95/2psc/9nanT/am13/2dqcf9ucHf/ZGdx/2Zobv9maG7/
    +Z2p0/2Rncf9gY2z/Z2p0/2dqdP9qbXf/cHN9/2dqdP9sbnX/bnF7/2xvef9qbXf/bG95/25xe/9sbnX/
    +bG51/25wd/9wcnn/b3F1/3l7gf93eoP/c3Z//3N1fP95e4H/eXuB/25xe/93eX//bnB3/25xe/9sb3n/
    +dXd9/3Byef9zdXz/bG51/2xudf9wc33/bG95/2xudf9sbnX/bG51/2ptd/91eIH/bnF7/2dqdP9nanH/
    +Z2px/2Zpc/9maG7/Zmhu/2dqcf9qbHP/c3V8/2Zpc/9kZ3H/am13/25xe/9qbXf/bG95/2dqdP9qbXf/
    +cHN9/3Bzff9nanH/cHN9/2ptd/9zdn//cHJ5/29xdf9wcnn/cHJ5/3N1fP91d33/dXd9/3Bzff9ucXv/
    +bW9z/21vc/9ucHf/bnF7/3N2f/93eX//d3l//3d6g/9zdn//c3Z//3Bzff93eoP/foCG/3l8hv91d33/
    +dXiB/3N2f/9ucXv/cHJ5/2xvef9zdXz/bnB3/25wd/9sb3n/amxz/29xdf9wcnn/e36H/3V4gf9zdn//
    +cHN9/3N2f/9ucHf/bnB3/3Z4fP9tb3P/c3V8/3Z4fP9wc33/cHN9/25xe/93eX//d3l//3Bzff95fIb/
    +bnF7/3d5f/91eIH/cHN9/3N1fP9wcnn/bnF7/2xvef92eHz/dXiB/25xe/9ucXv/bG95/2ptd/9qbXf/
    +bG95/3V3ff9wcnn/b3F1/3Z4fP9ucHf/c3V8/3V3ff9ucHf/c3V8/2ptd/9sbnX/bW9z/21vc/9ucHf/
    +bG95/2xudf9ucHf/bW9z/21vc/9ucXv/am13/3V3ff9maG7/am13/2xvef92eHz/bnB3/29xdf91d33/
    +am13/3Bzff91d33/d3l//3t9g/93eX//d3l//3d5f/98fYL/dniA/3Z4gP9xc3r/d3l//3Bzff9ucXv/
    +bnF7/3Bzff9tcHr/b3J8/3F0ff9zdXz/cHN9/3l7gf9wc33/bnF7/3V3ff91eIH/bnF7/25xe/91d33/
    +bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/bnB3/25wd/93eX//cHJ5/3Byef9ucHf/
    +eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/bG95/2xudf9ucXv/cHJ5/3J0e/9sbnb/
    +bG52/2Vocv9maXP/Zmhu/2Rncf9zdn//Z2px/21wd/9rbXb/Zmhv/2Nmb/9qbXf/cHJ5/2xvef9ucXv/
    +bG95/3V4gf9qbHP/bG95/25xe/9ucXv/dXd9/3N1fP9vcXX/cHJ5/3N1fP9sbnX/c3V8/2ptd/9qbXf/
    +bG51/25wd/9nanT/Zmlz/2ptd/9sbnX/am13/3V3ff9qbXf/am13/3Bzff9qbXf/bG51/2ptd/9qbXf/
    +amxz/2Zpc/9kZ3H/bG95/2psc/9zdXz/cHN9/2xvef9qbHP/bG95/3N1fP9qbXf/dnh8/2ptd/9ucHf/
    +bG95/3N2f/9ucXv/dXd9/25wd/9wcnn/c3Z//3Bzff9wcnn/bnB3/3Byef9wc33/f4GH/3V4gf9zdn//
    +bnF7/3Bzff9zdn//cHJ5/3Byef9wc33/cHN9/3l7gf9sb3n/bG95/2xvef92eHz/bnB3/25wd/9ucHf/
    +b3F1/3Z4fP9wcnn/Zmlz/25xe/9qbHP/bG95/2xvef9qbXf/cHJ5/25wd/9wc33/dnh8/3Z4fP9zdn//
    +c3Z//25wd/9sb3n/Z2p0/2ptd/9ucXv/c3V8/3N1fP9wcnn/bW9z/2psc/9maG7/bG51/3V3ff9sb3n/
    +bG51/3Byef9ucHf/bG51/3Byef9sbnX/bnB3/25wd/9tb3P/cHJ5/2Rncf9sbnX/bG95/3V4gf9ucXv/
    +bG95/25xe/92eHz/bnB3/25wd/92eHz/bG51/3N1fP92eHz/dXd9/3Bzff9ucXv/c3Z//3Z4fP9vcXX/
    +d3l//25wd/9zdXz/cHJ5/3Byef9ucHf/cHJ5/3Bzff9ucXv/eXuB/3l8hv91eIH/cHN9/25xe/9qbXf/
    +bnF7/25xe/97fYP/dXiB/3N1fP95e4H/bG95/25xe/9wc33/bnB3/3N2f/9sb3n/cHJ5/3Byef9zdXz/
    +dXiB/3N2f/9zdXz/c3Z//3N1fP9zdXz/d3qD/3N2f/97fof/bnF7/3Bzff9wc33/eXuB/25wd/9ucXv/
    +dXiB/3Bzff95e4H/e32D/3V4gf91eIH/cHN9/3Byef9qbXf/dnh8/3Fzev9zdXz/cHJ5/3N2f/9zdn//
    +bnF7/2xvef9wc33/bG51/2xudv9rbXb/aWxz/2dpb/9ucXv/am13/2Rncf9qbXf/am13/2Zpc/9nanH/
    +am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/
    +cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/bnF7/25wd/9vcXX/c3V8/3Byef9vcnz/
    +b3F4/3N1ff9ucXv/dHeA/3N1fP9zdXz/foCG/25wd/91d33/c3V9/21vdP9sb3b/c3V8/3V3ff9wc33/
    +bG95/3Byef91d33/Z2px/2xvef9ucXv/cHN9/3N2f/9zdn//bG95/25xe/9wc33/bnF7/3V4gf9ucXv/
    +bnB3/2xudf9zdXz/bnB3/2psc/9ucHf/bG51/3N1fP92eHz/bnB3/2xvef91d33/bnB3/25wd/9wcnn/
    +cHJ5/2xudf9sbnX/bnB3/3V3ff9tb3P/eHl9/2xvef9ucXv/amxz/2xvef9zdXz/bG51/3N1fP9sbnX/
    +c3V8/2xudf9zdXz/cHJ5/25xe/9ucHf/bG95/3Bzff9wc33/b3F1/25wd/9vcXX/cHJ5/3t9g/9ucHf/
    +c3V8/2xudf9ucHf/bnF7/25wd/9ucHf/cHJ5/3Bzff93eX//bnB3/2xvef9ucHf/c3V8/25wd/9sbnX/
    +am13/2ptd/9wc33/bnF7/2Rncf9qbXf/Z2p0/2ptd/9qbXf/amxz/25wd/9sbnX/bG95/3V3ff9wc33/
    +cHN9/25xe/9sbnX/amxz/25wd/9wc33/cHN9/3d5f/91eIH/d3qD/3N2f/92eHz/bnB3/36Ahv9/gYf/
    +eXuB/3p7f/9+gIb/e36H/3d6g/97fof/d3l//3l7gf92eHz/c3Z//31+gf9zdXz/eHl9/3t9g/9/goz/
    +e32D/3d6g/9zdn//eXuB/2xvef9vcXX/dnh8/2ptd/9ucXv/c3V8/3Bzff9qbXf/am13/25xe/9ucXv/
    +Z2px/3Byef9maXP/bG95/2ptd/9sb3n/Zmlz/2Rncf9kZmz/Zmhu/25wd/9wcnn/Zmlz/2xudf9qbXf/
    +Zmlz/2dqdP9sbnX/dXd9/3Byef9ucHf/eHl9/25wd/9sbnX/c3V8/2xudf91d33/bG51/29xdf9wcnn/
    +bG95/3V3ff9ucXv/bG95/3Bzff9sb3n/b3F1/3Byef9ucHf/dnh8/2Rncf9ucHf/bG51/3d5f/9qbXf/
    +am13/3N1fP9sbnX/dnh8/3Z4fP9tb3P/bG95/25xe/9ucHf/amxz/3R2fP9tb3f/c3V6/2xudf9wcnn/
    +cHJ5/25xe/9qbXf/c3V8/29xeP9xdH7/cXR+/3F0ff9wc33/dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/
    +bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/
    +bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/b3F1/3Byef9sbnX/bG51/25xe/9sbnX/
    +cHJ5/25wd/9xc3r/bnB0/29xeP9ucHf/bG51/3t9g/9ucHX/dHd+/3N1e/9vcXX/b3F1/3N1fP91d33/
    +cHN9/25xe/9wc33/d3l//2Rncf9sbnX/cHJ5/2xvef9wc33/am13/2xudf9ucHf/bnF7/25xe/9wc33/
    +am13/2xvef9nanT/bG95/2psc/9kZ3H/am13/2xudf9ucXv/c3V8/2dqdP9qbHP/bG95/2ptd/9sb3n/
    +bG95/2ptd/9sbnX/am13/2ptd/9wc33/bG95/3V3ff9wc33/bnF7/2xudf9zdXz/dnh8/25wd/93eoP/
    +bG95/3V3ff9ucXv/c3Z//3Byef91d33/cHJ5/25xe/91eIH/dXiB/25wd/9ucXv/cHJ5/3V4gf97fof/
    +c3Z//3V4gf9zdn//bnF7/3N2f/9wc33/cHJ5/3Byef9ucXv/d3qD/3Byef9sb3n/cHN9/3V4gf9wc33/
    +bnF7/25wd/9sbnX/dnh8/3Byef9sbnX/cHJ5/2xudf9qbXf/bG51/2psc/9sb3n/bW9z/3Byef92eHz/
    +dXd9/3V3ff9wcnn/bG95/25xe/9ucHf/dXd9/3Bzff93eX//dnh8/3N2f/9wcnn/bG95/2Rncf9zdn//
    +dnh8/25xe/9qbXf/cHN9/25xe/9ucHf/cHN9/2dqdP9wcnn/bG95/25wd/91d33/Z2p0/2xvef9wc33/
    +eXyG/3Z4fP9wc33/c3V8/3d5f/9sb3n/bnB3/3Z4fP9sb3n/c3Z//3d6g/91eIH/cHN9/3N2f/95e4H/
    +d3l//25wd/95e4H/bnF7/3V3ff9zdn//c3Z//3Bzff9wcnn/cHN9/25xe/93eX//d3l//3N2f/9ucXv/
    +bnF7/2dqdP9sb3n/bnB3/3Z4fP9ucHf/bG95/3V4gf9ucHf/b3F1/3Bzff9ucHf/eXuB/2ptd/9ucHf/
    +bnB3/29xdf91d33/cHJ5/25wd/9zdXz/bnB3/29xdf9wcnn/b3F1/3Z4fP9kZ3H/am13/2xvef91eIH/
    +am13/2xudf9ucXv/Zmlz/3Bzff9zdXz/c3V8/3V4gf91eIH/bnF7/2ptd/9vcnz/bG95/3N1fP9naXD/
    +Z2p0/2ptd/9sb3n/am13/25xe/9tb3b/cXN7/3F0fP9vcnv/cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/
    +bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/c3V8/2xudf95e4H/bnB3/3N1fP93eX//
    +dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/am13/2Zpc/9nanT/bG51/2psc/9sb3n/
    +bG51/2xvef9qbXb/am13/2lsdf9rbnj/am13/2dqdP91eIH/a211/3N1ff9sb3n/am12/2xudf9wcnn/
    +dXd9/3N1fP9zdXz/dXd9/3Byef9dYGr/YmVu/2Zpc/9nanT/am13/2Rncf9maG7/ZGdx/2Zpc/9maXP/
    +Z2p0/2Zobv9nanT/ZGdx/2Rncf9iZW7/XF9o/2Zobv9maG7/am13/25wd/9kZ3H/Zmlz/25xe/9sb3n/
    +bnF7/2ptd/9sb3n/bnF7/2ptd/9tb3P/dXd9/3Byef95e4H/cHN9/3Bzff9vcXX/dXd9/3V3ff9ucXv/
    +dXiB/25wd/92eHz/bnB3/3Z4fP9wcnn/c3Z//25wd/9ucHf/cHJ5/3Byef9tb3P/bG51/21vc/9zdXz/
    +d3l//2xvef9sb3n/bG95/2xudf9qbXf/am13/2ptd/9nanT/bG51/3V3ff9ucHf/bnB3/25wd/9zdn//
    +cHJ5/25wd/9sbnX/bnB3/3N1fP9zdXz/bG51/3Byef9sbnX/bG51/25xe/9wcnn/cHN9/3Bzff9zdn//
    +e36H/3l7gf91eIH/cHN9/3Byef9ucXv/bG95/3Bzff91d33/d3qD/3d5f/93eoP/cHN9/25xe/9qbHP/
    +eXuB/36Ahv95fIb/dXd9/3d6g/91eIH/c3Z//3V4gf9wc33/d3qD/3Bzff9zdn//eXyG/2xvef9ucHf/
    +cHJ5/3l7gf9zdXz/cHJ5/3Byef92eHz/bnB3/3Byef9wc33/bG95/3N2f/91eIH/c3V8/2xvef9wcnn/
    +e32D/3l7gf9sb3n/dXiB/3Byef9zdn//cHN9/3N2f/9zdn//bnB3/3V4gf9wc33/d3l//3V4gf91eIH/
    +c3V8/3Bzff9qbXf/b3F1/21vc/91d33/bG95/2xudf91d33/am13/2xudf9qbXf/bG51/3V3ff9qbXf/
    +bW9z/2xudf9tb3P/dXd9/2ptd/9tb3P/cHJ5/2ptd/9sbnX/bG95/2xudf91d33/Zmhu/25wd/9sbnX/
    +dXd9/2xudf9vcXX/dnh8/2xudf92eHz/cHN9/21vc/9wcnn/c3V8/3Byef9nanT/bnF7/29ye/9wc33/
    +bG51/2xvef9qbXf/am13/2xvef9zdXz/bnB0/3J0ev9xdHv/bnB6/25xe/91eIH/cHN9/25wd/95fIb/
    +d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/
    +d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/dnh8/2xvef9qbXf/am13/2xudf9qbXf/
    +c3V8/2xudf9wcnn/bW92/3ByeP9vcXX/bnB3/2dqcf9nanH/d3l//25xdf90dnz/bW94/2tueP9nanT/
    +bnF7/3V3ff9sb3n/cHN9/25xe/92eHz/YmVu/29xdf9zdn//d3l//3V4gf9wc33/bG95/25xe/9zdn//
    +dXiB/3d6g/9ucXv/eXuB/3N2f/97fYP/cHN9/2xvef9zdn//cHJ5/3N2f/97fof/c3Z//3Bzff93eoP/
    +c3Z//3d6g/9wc33/cHN9/3Bzff9sb3n/bnB3/3V4gf9zdn//foGK/3N2f/9wc33/bnB3/3V3ff9zdn//
    +bnB3/3V4gf9sbnX/dnh8/25wd/92eHz/cHN9/3Z4fP9ucHf/bG95/25xe/91d33/b3F1/3Byef9wc33/
    +d3qD/36Biv91eIH/dXiB/25xe/9ucHf/cHN9/2xvef9ucXv/bG95/25wd/9wc33/bG95/2xvef9wcnn/
    +dXd9/3Byef9tb3P/bW9z/2dqdP9wc33/bG95/2dqdP9sb3n/ZGdx/2Zpc/9sb3n/Zmlz/2dqcf9maXP/
    +bG51/3V3ff9sb3n/c3V8/25wd/9ucHf/bG51/2tueP9vcnz/dXeA/3h7hf9ydX7/dXd9/25wd/9ucHf/
    +Zmds/3Byef9wcnn/c3V8/2dqdP9wcnn/cHJ5/2xudf9qbXf/Zmlz/2psc/9maXP/aGty/25xe/9nanT/
    +a210/2hrdf91eIH/bnF7/2xvef9qbXf/c3V8/2dqdP9qbXf/am13/2xudf9ydHv/dHZ8/2ptd/9sb3n/
    +bW92/3N1fP9ydHv/am12/3d4ff9wcnn/dXiA/3J1fv91eIH/cnR8/2xudf9wcnn/cHJ5/3V3ff9wcnn/
    +cHJ5/21vc/9ucHf/Z2px/25wd/9ucHf/dHZ8/29xeP9sb3b/dnh//29xdf9sb3n/bnF7/29xdf94eX3/
    +amxz/29xdf9tb3P/cHJ2/3V3ff9wcnn/b3F4/3R2fv9ucXj/bW93/3Fze/9vcXX/dXd+/2dpb/9sbnX/
    +bnB6/3d5f/9sb3b/a254/3V3e/9sbnT/dHZ6/3Bzff92eHz/e32D/36Ahv99foH/d3l//3l7gf91d3z/
    +c3Z+/2tudf9sb3n/am13/2Zpc/9nanT/bnF6/2ptdv9zdX7/c3V9/3V4gP9wc33/e32D/3V4gf9ucXv/
    +e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/am13/25wd/9wcnn/bG51/3l7gf9ucHf/
    +c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/
    +bG95/3Bzff9sbnX/cHJ5/25xeP9ucHn/bG52/2tudv9nanT/am12/3F0fv9pbHX/bXB6/2psdP9nanH/
    +Y2Zv/2Zpc/9ucHf/am13/25xe/9ucXv/b3J7/2Zpcv9rbnf/bW94/29yfP9ucXr/b3J6/21vdv9vcXj/
    +bG93/2lsdP9rbXb/bXB4/21wev9nanP/aGt0/2Fkbf9gY2z/amxz/2dqcf9oa3X/cnV8/2Zocf9qbXb/
    +a212/2xudf9sbnf/bW92/3Byef9ucHn/b3F4/2psdf9ucXv/bnF6/29ye/9sb3n/bW94/25wdf9xc3r/
    +bnF3/3F0e/9vcnv/bXB4/3J0fP9ucHf/cHJ5/21wev9ucXv/amx1/2ptc/9tcHj/b3F4/3J0ef9tb3b/
    +bXB4/3Bze/91d33/dHZ+/3Bze/9wcnn/b3F4/3h6gv93eH3/dHZ7/3Z4f/92eYL/d3qB/3d5gv90d3//
    +eXyF/3t+h/99f4f/e32G/31/hf98foX/fYCI/3p9hv9+gIb/e32E/3V3fv95e4P/enyD/3d5f/95e4H/
    +enyE/3l8g/97fYL/dnh//3V3fv92eYL/cnV9/3Fze/9sb3j/bnF5/3F0ff9zdXv/bXB5/3R2ff9rbXX/
    +amx1/2Rmbf9pbHX/aWx2/25wev9fYmz/Zmlz/2dqdP9kZ3H/Zmlz/2BjbP9maG7/XmFr/2Vocv9qbXf/
    +Y2Zw/2Zpc/9oa3T/b3F5/2dqdP9maXP/ZGdx/25wd/9kZ3H/Zmlz/2Zpc/9oa3T/cXN6/3N1fP9rbnj/
    +bnF6/2xvef90dn3/cHN7/2ttdf90dn3/b3J6/3V3ff9vcnv/dHd//3Byef9ucHf/cnV+/25xe/93eX//
    +cHJ5/3N1fP9ucHf/cHJ5/2dqcf9ucHf/bnB3/3R2ev9sbnb/a211/3N1fP9tb3T/bG51/25wd/9ucHf/
    +dXd9/2dqdP9sbnX/bW95/25weP9xdHz/bnF5/2xveP9xc3z/bnB3/2xudf9xdHz/bnB3/3F0ff9sbnf/
    +bnB5/29xeP92eH7/b3F4/3J0eP9xc3r/bG93/3Fzev9vcXr/am13/3N1fP9sb3n/cHN9/2xudf9zdX3/
    +dHZ9/3V4gP9ucXv/c3Z//3N2f/9sb3n/cHJ5/3R2fP9vcXr/dnh+/3FzfP9vcnz/bnF7/3N2f/9sb3n/
    +bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX//amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/
    +ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/bG95/2xudf9wc33/am13/2Zpc/9sb3n/
    +am13/25wd/9zdn//bnB3/25xe/9ucHj/b3F5/2hrc/9qbHT/Zmlz/2lsdv9rbnf/Z2py/25weP9xdHz/
    +bW90/2hrdf9sb3n/cHN9/2xvef9zdXz/c3V8/3Bzff9rbnf/b3J8/29yfP9ydX//dXd+/3R2ff9tb3b/
    +cnR6/2xveP9tcHr/bnB4/3J1ff9vcnz/bG52/3Fzff9oa3X/ZGdx/21vc/9tb3P/c3Z//3Z4f/9vcnr/
    +cXN7/3F0ff9wcnz/bnF6/3Bzff9ydX7/c3Z//3N2f/9sb3n/c3Z9/3J1fv9ydX//dnmC/3N2f/92eYH/
    +dXiB/3J1fv98foX/dHeB/3F0ff9ydX7/cHN8/3R3f/91d33/cHN8/29xef9vcXX/cHJ5/3Fzd/91d33/
    +bnB3/25xe/9ucXv/cnR6/3F0fP9xc3j/bG52/21wef90dn3/dXh+/21vd/90d3z/bnF4/29xef9wc3z/
    +bG95/3Bzff9xdH7/cnV+/25xev9wc3z/cnV+/3N2f/9wc3z/d3qE/3BzfP9rbnf/bnF6/3Byef9vcXn/
    +cnR7/29xef9ydHv/bW92/2hrcv9qbXf/am13/2xudf9tb3P/cnR8/3N1fP90dn7/c3V6/3N1fP91eH//
    +bXB4/3F0e/9rbXP/bXB6/2xvd/90dnz/aGt0/3J0e/9zdXz/bnB3/3N1fP9ucHf/bnB3/2ttdP9wc3n/
    +c3V7/3ByeP9wcnj/cXN5/3V3gP9ydHv/cHJ5/3Byef95e4H/bG51/2tud/9rbXb/bG95/25xe/9xc3r/
    +bG53/29xeP9zdXn/dHd+/3Fzef9sbnT/cnR9/3F0ff9ydHz/bW94/3V4f/9ucXn/bG94/21wev9wc33/
    +d3l//3Byef9wcnn/bW9z/25wd/9maG7/bG51/21veP90dnv/b3F6/21wev94eoH/cnV//3Fzev9sb3n/
    +cHJ5/3Z4fP9sbnX/bW92/25xe/9wc33/dnmA/3FzfP9wc3z/dnmD/3R2fv9vcnr/dniB/3Z4gf92eH3/
    +cnV+/3R3gf9ydHz/fH6E/3d5gP94eoD/c3Z+/2xveP9ucXr/bnF4/2Zpc/9sb3n/am13/25xe/9kZ3H/
    +cXN9/25xev91eID/bnF7/2xvef9zdXz/bW92/3Byef91d37/cXR9/3t9h/90d3//cXR9/3N2f/95e4H/
    +c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/f4GH/3d5f/93eoP/c3Z//3d6g/91d33/
    +foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn//am13/25xe/9ucXv/c3Z//3Bzff9qbXf/
    +c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bXB3/3V3ff9tb3j/bnF6/25xe/90dn3/cXN7/29yfP9vcnz/
    +cHN9/3Fzev9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9tcHn/aWx2/2xvef9rbXT/am13/21wef9vcnz/
    +am13/29yfP9nanT/bG95/2tueP9vcnv/bnF5/2tudv9ydHv/bG51/2Zpc/9vcXX/bnB3/3Bzff91eIH/
    +bG95/25xe/9ucXv/bG95/21vdv9ucHf/c3Z//3N2f/90d4D/bnF7/21wev9zdn//b3F4/3N2f/9ucXv/
    +c3V8/3N2f/9zdXz/eXuF/3Bzff9zdn//c3Z//3N2fv9zdn//eHqA/25xe/9tcHr/cnR8/3Byef9wcnn/
    +cHN8/3Byef9ucHf/bnB3/21vdv9wcnn/b3F1/2dqcf9qbXf/cHN9/3Bzff9qbXf/dHZ8/25wd/9ucHf/
    +cHJ5/21vd/9zdXz/bG95/3V4gf9ucXv/cHN8/3N2f/9ucXv/bnF7/3h7hf95fIX/dnh8/3x9gP99f4b/
    +foCG/3x9gf9+gIf/foCG/3d6g/93eoP/eXyG/3t9g/95e4H/dnh8/25wd/9ucXj/b3J7/3Fzev9ydHv/
    +eXt//3R2ff90dnz/bG94/3Byef9wcnr/dHd//3J0ff98foT/fX+F/3V3ff97fYP/dnh8/3Z4fv91dnv/
    +d3l+/3F0fP90d37/cHJ6/3V4f/90d4H/cHN7/3Byef9zdXz/dXiB/2ptd/9tb3b/bW92/29yev9xdH7/
    +b3F4/2lsdv9tb3f/c3V7/3N2f/9tcHr/bW92/3F0fv9ydX3/c3Z8/2xudf9ydX7/a210/2hrdf9maXP/
    +bXB5/3N1fP9wc33/am13/2xudf9sbnX/Z2px/2xudf9vcXX/cHJ4/2ttdv9ucXr/dHd+/29yd/9sbnb/
    +b3F1/3Bzff93eX//bnB4/2xvef9ucXr/cXN6/3Fzev9vcXj/bnB3/3h6gP9ydHv/bG51/29xeP9ydHv/
    +bW92/2tudf9ucHf/amxz/3N1fP9ydHv/bnF6/2dqdP9nanT/aGt1/2xvef9nanT/bG95/2ptd/9ucXv/
    +ZGdx/29xe/9xc3n/cnR9/2xvef9ucHf/c3V8/2xvef9tcHn/dHZ+/25xeP9zdn//a254/2ptdv9nanT/
    +bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/
    +Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/
    +Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/aWx1/2xudf9sb3n/cHN8/2tueP9ucHf/
    +bXB5/3J0fP9ucXb/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/cHN9/2ptd/9qbXf/Z2p0/2ptd/9sb3n/
    +bnF7/2Zpc/9qbXf/YmVu/2dqdP9laHL/aGt0/2lsdf9oanH/bW95/2dqdP9iZW7/bG51/2ptd/9rbnj/
    +bnF4/2Zpc/9naW//ZGdx/2Rncf9kZ3H/Zmhu/2ptd/9kZ3H/ZGdx/2BjbP9maG7/Z2p0/2Zpc/9nanT/
    +Z2p0/2dqdP9ucXv/bG51/3d6g/9qbXf/am13/2xudf9sbnX/cHJ5/3V3ff9ucHf/bnB3/25xe/9wcnn/
    +cHN9/3d6g/9zdXz/cHN9/3Byef9wc33/c3Z//3N1fP9sb3n/cHJ5/3d6g/91eIH/bnB3/3d5f/9ucXv/
    +bnB3/25xe/9ucXv/cHN9/3N2f/93eoP/dXiB/3d6g/9wc33/cHN9/2xvef94eX3/c3V8/25wd/91d33/
    +c3V8/3N2f/91eIH/c3Z//3Bzff9qbXf/Z2p0/2xvef9ucXv/bG95/25wd/9qbXf/bG51/2tud/9rbXT/
    +bG95/3V3ff9wc33/dHZ8/2tueP9sbnb/Z2p0/2ttdf9oanP/amxz/2ptd/9maG7/bG95/2dqdP9sbnX/
    +amx0/21weP9rbXb/bnF6/2xvef9zdXz/b3J8/25xe/9zdn//eXuB/36Biv9wcnn/cHN9/3F0fP9ydX3/
    +bnF6/2ptd/9laHL/bW92/3N1fP9xdH3/b3F4/3Bydv9tcHr/dXd9/3h5ff9vcXj/eHqB/25xev9ucHf/
    +am11/3Fzev91d33/cHJ5/29xdf9ucHf/bnF7/2dqdP9rbnj/b3F4/3Bze/9rbnf/b3J8/3Z5gv9xc3v/
    +a253/25wd/9ucHf/d3qD/29xd/9sb3n/bXB6/3J0e/9tcHr/am13/2ptd/95e4H/cHJ5/2psc/9ucXv/
    +cHJ5/25wd/9sbnX/bnB3/2dqcf9zdXz/c3V8/25xe/9qbXf/am13/2Zpc/9ucXv/YmVu/2Zpc/9kZ3H/
    +am13/11gaP9rbnj/bG93/21wd/9tcHr/am13/2xvef9sbnX/a253/3R2fP9tb3P/dXd+/2lsdv9pbHX/
    +Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/bG51/2xvef9zdn//amxz/2xudf9qbHP/
    +bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/bG95/25xe/9maXP/bG51/2xudf9ucXv/
    +bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/29xd/9zdXz/cnR7/2tudv9sb3n/bnF7/25xe/9qbXf/
    +c3V8/3J0e/9wc3v/b3F4/3N1fP9wc33/e32D/3t9g/9+gYr/eXuB/3N1fP9sbnX/bnB3/2xudf9wcnn/
    +bnF7/3Bzff9qbXf/bG95/2Zpc/9sb3n/bnF7/3R2e/9ucXn/bG51/3Fzev9ucHf/Z2p0/25xe/9zdn//
    +b3J8/3Byev9rbXT/aGtx/2dqcf9kZ3H/ZGdx/2Zobv9nanT/am13/2Zpc/9kZ3H/Zmhu/2xvef9nanT/
    +bG51/2Zpc/9qbXf/bnF7/2ptd/93eoP/bnF7/2xudf9ucHf/c3V8/3N1fP9zdXz/bnF7/3N2f/9zdn//
    +c3Z//3N1fP93eoP/bnF7/25xe/9sb3n/bnF7/2xvef9sb3n/Z2px/2xudf9zdXz/cHJ5/2xudf9zdXz/
    +bG51/2ptd/9sb3n/bG51/2ptd/9qbXf/am13/2dqdP9sb3n/ZGdx/2dqcf9nanH/bnB3/2ptd/9maXP/
    +bG95/2ptd/9qbXf/bnF7/2ptd/9qbXf/Z2p0/2Zpc/9qbXf/bG95/2xudf9sb3n/bnB3/25wd/9ucXv/
    +bnB3/3V3ff91eIH/dXd9/3Z4fP9ucHf/bG92/2hrcv9xc3r/a252/25wdv9ydX7/cHJ5/3Bzff9sb3n/
    +b3J5/2tudv9xc3r/bG51/3V3e/9ydHv/c3V8/3N1fP9ucHf/bW92/3V3ff91eIH/amxz/2xudf9tb3b/
    +b3F2/25weP9tb3b/amxz/29xdf91d33/c3V8/2xvef9wcnn/bnF7/3l7gf95e4H/cHJ5/3d5f/9ucHf/
    +bnB1/2lsdf9ucHr/bG95/25xe/9qbXf/am13/3N1fP9sbnX/bW93/2xvef9vcXj/ZWhy/2ptd/90dnz/
    +bnB1/2psc/9sbnX/bG51/3d5f/9tb3T/bW92/21vdv9rbnf/a254/2xudf9sbnX/eXyG/3Byef9sbnX/
    +bnB3/25wd/9sbnX/bG95/2xvef9nanH/dXd9/3Z4fP91d33/cHJ5/3Byef9ucHf/c3Z//2psc/9zdXz/
    +cHJ5/3N1fP9maG7/cHJ5/3Byev9wcnr/b3J7/2xudf9wcnn/bG51/2tud/9ydHv/bG52/3d5f/9tcHj/
    +cHN8/3N2fv91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/bG51/25wd/9zdXz/d3l//2ptd/9qbXf/
    +bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/
    +bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9tb3b/cHN9/3F0fP9xc3r/cnV+/3d6g/9zdn//
    +cHN9/3R3gP90dn7/b3J6/25wd/9ucXv/cHJ5/3l7gf93eX//e36H/3d5f/91d33/bG51/25wd/9sb3n/
    +cHN9/3N1fP9zdXz/bnB3/3V3ff9sbnX/cHJ5/3Byef9wc3r/aWx2/2VocP9kZ3H/ZGdx/11gav9kZ3H/
    +Zmlz/2dqc/9rbXb/ZWhy/2ZpcP9nanH/bG95/2ptd/9sbnX/c3V8/3Byef9zdXz/bG51/2psc/9qbXf/
    +Z2px/2psc/9maXP/Z2p0/2xvef9sbnX/eXuB/3Byef9ucHf/bG51/3Byef9wcnn/bnB3/2xudf9ucHf/
    +bG95/2xudf9nanH/bG95/2dqcf9nanT/ZGdx/2Zpc/9sbnX/bG51/2Rncf9nanT/bnF7/2xvef9qbHP/
    +dXd9/2ptd/9nanH/bG95/2dqcf9ucXv/bG95/25xe/9wcnn/bnF7/2xvef9qbXf/bnF7/3V3ff91d33/
    +b3F1/3Byef9wcnn/bnB3/25xe/9sbnX/am13/2psc/9qbHP/bnB3/25wd/9sbnX/bG51/3N1fP9sbnX/
    +bG95/21vc/9zdXz/dXd9/25xe/9wc33/am13/2dqdP9dYGn/aWx1/2ptdf9sbnP/b3F4/2xudf9ucXv/
    +bG51/29xeP9rbXX/bnF5/21wef9ydHv/dHZ8/3R2ff9wcnn/bW92/2xvef9wc33/d3qD/2xudf9rbXX/
    +a253/3Fzev9vcnv/b3F4/2xvef9vcXX/c3V8/3Byef9ucHf/bW9z/2xudf91d33/c3V8/21vc/94eX3/
    +b3F1/25wdf9qbHL/cnR7/3N1fP9zdn//bnF7/25wd/9zdn//bG95/3Byef9vcnr/cXN5/21vdv9ydHv/
    +dniB/3J0e/9wc3z/cHN9/3N1fP99gIn/b3F4/21wef9ucHf/bnB3/25wd/9nanT/bG51/3l7gf9ucXv/
    +bG51/25wd/9ucHf/Z2p0/2ptd/9qbXf/ZGdx/2xvef9ucXv/Zmlz/2Zpc/9nanT/Zmlz/2xvef9qbXf/
    +c3Z//3V3ff91d33/amxz/3Fze/93eX7/dXiC/3N2f/9wc33/eXuB/3J0e/9vcnz/cXR+/2ttd/91eH7/
    +bG92/3Byef90dnz/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/
    +bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/
    +bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/aGty/2hrdf9tb3b/Z2py/2lrcv9sb3n/
    +Z2p0/2Zobv9rbnj/bG95/2dqdP9jZm//ZWhy/2Rncf9sb3n/Zmlz/3Bzff9zdXz/dXiB/3Byef93eoP/
    +cHN9/3l8hv97fYP/e32D/3V3ff99foH/dXd9/3l8hv95fIb/e3yB/3l8g/9ydH3/b3J7/25wd/9qbXf/
    +bnB3/3Fzev92eH7/eXp//3p8gv92eH7/dXd9/3d6g/93eoP/dXd9/3d6g/9zdn//d3qD/3N1fP9wcnn/
    +c3Z//3N1fP9zdn//c3V8/3Bzff91eIH/bnB3/3d6g/9wc33/bnF7/3Byef9wc33/dXd9/2ptd/9sb3n/
    +bW9z/25wd/9ucHf/bnB3/3h5ff9ucHf/dXd9/2xvef9ucHf/bW9z/25wd/9nanH/bG51/3Z4fP91d33/
    +b3F1/3Z4fP9vcXX/bW9z/3N1fP9qbXf/cHN9/2xvef9wcnn/dXd9/3Byef9sb3n/amxz/25xe/9wc33/
    +bnF7/2psc/9qbXf/Z2p0/2Zobv9maXP/ZGdx/2dqcf9kZ3H/Zmlz/2psc/9qbXf/amxz/2psc/9zdXz/
    +bnB3/2xudf9sbnX/bnF7/3N1fP9zdXz/dXd9/3N1fP9sbnX/ZWdt/2psdv9rbnj/a252/29yfP9sb3n/
    +cHN9/2xvef9wcnn/aWxz/3Byef9tcHn/dHZ8/3R2fP9zdXz/cXN5/21wef9vcnv/dXiB/3t+h/9zdXz/
    +b3F4/21wef9xc3r/am12/2hrdf9maXP/am13/25xe/9sb3n/bG51/2ptd/9qbHP/cHN9/3Bzff9sbnX/
    +c3V8/21vdv9wcXf/c3V8/3t9g/97fYP/fX6B/3l7gf92eHz/foCG/3h5ff91d37/dHZ8/3Fzd/9ucHj/
    +cXN6/3d6gv9vcnv/bG95/3Bzff9wc33/en2G/3N1fP9xdH3/cXN5/25xeP9xc3n/bG51/29xdf91eIH/
    +bnF7/2dqdP9sbnX/bnB3/2psc/9sb3n/bnF7/2Zpc/9sb3n/c3V8/2xvef9wcnn/dXd9/2xudf9zdXz/
    +Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dHd//3N0e/9tcHT/bnB3/3N1fP9qbHP/bG95/3N1fv9rbXf/
    +dXd9/21vdf9zdXz/dXd8/3N1fP9sb3n/Z2p0/3V3ff91d33/bnB3/2xvef9sbnX/bnB3/25wd/91d33/
    +bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/
    +bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/bnB3/21vdP9wcnr/cXN5/21vdf9ucHf/
    +c3Z//3N1fP9sb3n/cnR7/3N1e/9rbXT/aWx2/2xudf9nanT/c3V8/2xvef91d33/dXd9/2Rncf9kZ3H/
    +Zmlz/2Jlbv9nanT/Z2p0/2Zpc/9kZ3H/Zmlz/2Rncf9qbXf/bG95/25wev9xdHz/bW93/29xef9sbnX/
    +am13/25wd/9vcXn/cnR7/3ByeP9ydHv/bnB3/2xvef9zdn//bG95/25wd/9wcnn/cHJ5/3Bzff9qbXf/
    +bW9z/25wd/9tb3P/bnB3/25wd/9sbnX/cHJ5/21vc/91eIH/cHN9/3N2f/93eoP/d3qD/3d5f/9wc33/
    +cHJ5/21vc/9ucHf/cHJ5/21vc/91d33/b3F1/3V3ff9sbnX/bnB3/29xdf9sbnX/Zmhu/2xudf91d33/
    +c3V8/29xdf93eX//b3F1/2xudf9ucXv/Z2p0/3Bzff9sb3n/bG95/25xe/9ucXv/bG95/2psc/9wc33/
    +cHN9/3N1fP9sbnX/cHJ5/3N1fP9sb3n/bnF7/25wd/9ucHf/bnB3/2xudf9vcXX/bnB3/2xvef9sbnX/
    +d3qD/3Bzff9zdn//c3Z//3d6g/95e4H/dXiB/3l7gf91eIH/am13/2ptd/9xc3r/bnB2/2xudf9ucHf/
    +bW9z/3V3ff9ucHf/cHJ5/2lsc/9ucXv/b3F6/3V3ff90dnz/b3J7/3Byev9vcXj/b3F4/3V3ff93eX//
    +bG51/2hrdf9rbnj/bXB4/2Zpc/9rbXT/ZGdx/2dqdP9wcnn/am13/2dqcf9nanT/ZGdx/2Zpc/9maXP/
    +Zmhu/2dqdP9jZm//aGpx/2hqcv9wcnr/cHJ5/3Byef9ucHf/bnB3/2xvef9ucHf/bW91/25xe/9qbXb/
    +Zmlz/2lrdP9wcnr/bXB0/2dqcf9sbnX/bW9z/3Z5gv9tb3b/a254/21vd/9tb3b/c3V8/2xudf9vcXX/
    +d3qD/3V3ff9ucHf/cHJ5/3Bzff9qbXf/bnF7/25wd/9qbHP/c3V8/3Z4fP9ucHf/cHN9/3Z4fP9ucHf/
    +bnB3/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/21wev9xdHr/bnB4/25wd/91d33/bXB3/29xef9ydX7/
    +a213/3h6fv9vcXf/cnV9/3h6gP93eoP/c3Z//25xe/9+gIb/foGK/3l7gf97fYP/d3l//3t9g/93eoP/
    +foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/e32D/3N1fP9wcnn/cHJ5/25xe/9zdn//
    +c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/dXiB/3Bzff9wcnn/bXB6/3Fze/9ucXr/
    +bnB3/3N2f/9ucXv/bG95/3BzfP9xdH3/bnF5/2xvef9ucHf/cHJ5/3h5ff9wcnn/foCG/3t9g/9qbXf/
    +am13/3Bzff9qbHP/bG95/2xvef9nanT/amxz/2xvef9maXP/bnF7/3Bzff9wc3z/cXR+/25xeP9vcnz/
    +c3V8/2ptd/9qbXf/b3F5/3J0ev9vcXf/am13/2dpc/9nanT/cHN9/2xudf9sbnX/cHN9/25xe/9wc33/
    +Zmlz/2xudf9qbXf/amxz/2dqcf9kZ3H/Zmhu/2dqcf9qbHP/cHJ5/2ptd/9qbHP/am13/2Zpc/9sb3n/
    +amxz/2ptd/9nanT/amxz/25xe/9qbXf/c3V8/2psc/9sb3n/Zmlz/2psc/9qbHP/amxz/2Jlbv9maXP/
    +bnF7/2xvef9sbnX/dXd9/2psc/9sbnX/cHJ5/2xudf91d33/bnB3/2xvef92eHz/bnB3/25wd/9tb3P/
    +eHl9/3N1fP9zdXz/cHJ5/3N1fP9zdXz/bnF7/25xe/9sb3n/bW9z/2xudf9ucHf/bG95/25wd/9wcnn/
    +b3F1/3Byef9qbXf/bG95/2ptd/9wc33/cHN9/2xvef9wc33/bG95/2Jlbv9hZG3/bG51/21wef9qbXf/
    +bnB6/3Byef91eIH/bnB3/2xvef9naXP/cHJ5/29xef91d37/dHZ9/25xev9vcXr/bnF4/3Byef91d33/
    +d3l//25wd/9vcXj/cHJ5/3F0e/9ucHf/b3F4/25wd/9wcnn/dXd9/25wd/9qbHP/bnF7/3Byef9sb3n/
    +bnF7/2xudf9wc33/b3F1/21vdv9sb3b/dXd9/25wd/9zdXz/bnB3/2xudf9sbnX/bW9z/2hrdP9wc3v/
    +bXB6/2ptdP9qbXT/c3V8/21vdf9iZW7/ZGdx/2dqcf9ydX7/a211/2tueP9rbnj/bXB3/3N1fP9sbnX/
    +bnB3/3t9g/91d33/bnB3/25xe/9zdn//am13/3Bzff9sb3n/bG95/3Bzff91d33/cHJ5/3N1fP91d33/
    +bG51/3Byef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9xdH7/dnh+/3F0fv9wcnn/dXd9/2xudf9vcXf/
    +dHZ8/21veP91d37/bW92/21wev90dnz/c3V8/21vc/9ucHf/dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/
    +bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/
    +cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/eXyG/36Biv91eIH/dHeA/3Fze/9wc3v/
    +a252/2hrcv9maXP/YmVu/2Zobv9nanP/bG94/2xudv9pbHb/cHJ5/2ptd/91d33/bG95/36Ahv97fYP/
    +am13/2xudf91d33/amxz/3V3ff9wc33/bG95/2xudf9zdn//Z2p0/3N2f/91d33/cnR7/3Byef9ucHf/
    +cHJ5/2xvef9maXP/amxz/29xef9vcXj/cHJ3/25wev9qbXf/Zmlz/3Bzff9sbnX/am13/3Bzff9ucXv/
    +cHN9/2ptd/9sbnX/bG51/2psc/9qbHP/Zmlz/2dqcf9nanH/bG51/3V3ff9wc33/bG51/3N1fP9sb3n/
    +c3V8/2xudf9wcnn/am13/21vc/9zdn//cHN9/3d5f/9vcXX/dXd9/2psc/9ucXv/bnF7/25xe/9nanH/
    +bG95/3V4gf97fYP/c3V8/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3N2f/9wc33/eXuB/3Bzff9ucXv/
    +bG95/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/25wd/9qbXf/am13/21vc/9qbXf/am13/2xvef9sbnX/
    +cHJ5/25wd/9wcnn/cHJ5/25wd/9wc33/dXd9/3l7gf91d33/dXd9/3Bzff9sb3n/am13/3Bydv9tb3b/
    +am13/2ptd/9sbnX/dXd9/25wd/9wcnn/Z2px/3Byef9ucHn/dHd//3d4ff9vcXj/cXN5/2tud/9sb3n/
    +c3V8/3V3ff9sbnX/aGt1/21wev9tb3j/Zmlz/2hrdf9maXP/cHN9/3Bzff9qbXf/Z2p0/2xvef9ucXv/
    +bG51/25xe/9qbHP/bG95/2xudf9ucXr/aWx0/3J0e/9sbnX/cHN9/25xe/9nanT/bG95/2xudf9sbnX/
    +c3V9/3R2fv9tcHr/cHJ3/3R2fP9wcnn/am13/2dqdP9ucHf/dnmC/25xe/9ucXv/bnF7/25xe/91d33/
    +bnB3/29xdf93eX//cHN9/2ptd/9qbXf/cHN9/2Rncf9sbnX/Z2p0/2Rncf9nanT/bG95/2Zpc/9maXP/
    +bG95/2dqcf9qbXf/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/a212/3N1e/9zdXz/b3F1/3d5f/9tcHr/
    +cXR8/3Z4gP9ucXr/dnh//25wdf9ucHf/dXd9/2xvef9qbXf/bG51/3V3ff93eX//bG95/3Byef9ucHf/
    +bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX//am13/3Bzff9wc33/bW9z/2ptd/9nanT/
    +am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/Z2px/2ptd/9zdXz/bG95/2xvef9sbnb/
    +cHJ6/21wev9sb3n/bnF7/2xvef9ucXv/dHeA/3Z4f/9xdH3/am13/3Bzff9zdXz/e32D/3V4gf+Fh43/
    +f4KM/25xe/9sb3n/d3l//2xvef93eX//cHN9/3Bzff9zdXz/dXiB/2xvef94eoH/dnh+/25xev9ucXr/
    +aGp0/2dqcf9nanT/XWBq/2Rncf9qbXb/bG93/21vd/9ucXj/bG51/2psc/9zdXz/Z2p0/2xvef9sb3n/
    +bnB3/25wd/9qbXf/am13/2psc/9sb3n/bG51/2ptd/9sbnX/am13/2xudf93eX//eHl9/3Byef91eIH/
    +c3Z//3d5f/9ucHf/c3Z//25wd/9ucHf/c3Z//25wd/93eX//bnB3/3Z4fP9nanH/bnB3/29xdf9ucHf/
    +Z2px/2psc/91d33/c3V8/2psc/91d33/amxz/2psc/9sb3n/ZGdx/2dqdP9maXP/Zmlz/25wd/9qbXf/
    +Z2p0/2ptd/91d33/bnF7/25xe/9tb3P/dXd9/3Bzff9ucXv/cHJ5/25xe/9ucHf/bnB3/3Byef9zdn//
    +c3Z//3V4gf9wcnn/eXuB/3l8hv91eIH/e32D/3t+h/97fof/eXuB/3l7gf93eoP/bnF7/2ptd/9xc3r/
    +cnR7/2xvd/9tb3f/bnB3/3N1fP9sb3n/cHN9/2dqdP9wc3v/cXN8/3V3ff92eHz/bnB6/3Bye/9tcHj/
    +bnB3/3V3ff94eX3/b3F1/21vdv9tcHr/bnF5/2tueP9qbXf/Z2p0/3N1fP9sb3n/amxz/2dqdP9sb3n/
    +bG95/2psc/9nanT/Z2px/2xvef9maG7/Zmly/2Rncf9ucXr/bG51/3Bzff9ucXv/Z2p0/25xe/9sbnX/
    +Z2p0/2hrdf9oa3X/ZWhv/2Rmbv9maXP/a254/2dqdP9iZW7/Z2px/29xeP9maXP/aWx0/2ptd/9rbnj/
    +cHN9/2ptd/9qbXf/d3qD/3N1fP9sbnX/bnB3/3Byef9sb3n/bnF7/3Byef9ucHf/bG95/3V3ff9sb3n/
    +bnB3/3Z4fP9vcXX/dXd9/2BjbP9sb3n/cHN9/2xvef9tb3P/b3F4/21wev9xdH3/bnF7/2xvef93eX//
    +bG95/2xud/90dnz/bG94/3Bzff9rbnb/bG95/3V3fP9ucHf/bnB3/2psc/92eHz/dXd9/25xe/9ucXv/
    +bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/d3qD/2xvef9wc33/cHN9/25wd/9ucXv/
    +bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/
    +bG51/29xev9rbnj/cnV+/3Bzff9ucXv/bG95/3J1fv91dnv/cHN6/2hrdf9oa3X/Z2p0/3V3ff9ucHf/
    +fX6B/3d5f/9wcnn/bnF7/3Z4fP9ucHf/dnh8/2xvef9ucXv/Z2p0/2ptd/9kZ3H/bnF7/3Byef9pa3T/
    +bG95/2dqc/9sbnX/am13/2dqcf9qbHP/bnB3/21weP9tb3f/cnR7/25wd/9nanT/cHN9/2Zpc/9qbHP/
    +amxz/2ptd/9ucXv/Z2p0/2xvef9qbXf/bG95/2xudf9nanT/Z2p0/2xudf9maXP/bnB3/2xvef9maG7/
    +am13/2xvef9ucXv/Zmlz/2dqdP9maG7/Zmhu/2ptd/9nanH/c3V8/2psc/9zdXz/ZGdx/2ptd/9qbHP/
    +amxz/2Jlbv9maXP/bnF7/3N1fP9nanH/cHN9/2psc/9sbnX/bG95/2psc/9sb3n/am13/2xvef92eHz/
    +cHJ5/3Byef9ucHf/dXd9/25wd/9wcnn/bG51/3N1fP9wcnn/cHJ5/29xdf9vcXX/bG51/25wd/9sb3n/
    +bnF7/2xvef9ucHf/bG51/25wd/9zdXz/bG51/3Bzff93eX//d3l//3V4gf9wc33/c3Z//2dqdP9nanT/
    +b3J7/21wef9sb3f/bW91/25wd/9zdXz/bG95/3N1fP9qbHP/cHJ5/3Bzff91d37/eHl+/3V3ff9ydHn/
    +bnF6/3Byef91eIH/eXuB/3N1fP9xc3r/cnV+/25wef9ucHf/bG51/2xudf9wc33/dXd9/25wd/9sbnX/
    +c3V8/3V3ff9tb3P/bnB3/21vc/9ucXv/am13/21vdf9qbHH/cXN6/21vc/92eHz/c3V8/29xdf9ucXv/
    +am13/2xvef9xdHv/cHN8/21vdv9tb3j/b3J8/3R3gP9qbXf/am13/25wd/91d3v/cXN3/3Byd/9tb3j/
    +bG95/3h5ff9ucHf/bnB3/3l7gf9zdXz/amxz/2ptd/9wc33/Z2p0/2ptd/9qbXf/Zmlz/2xudf9wc33/
    +bG51/2psc/9wc33/amxz/25xe/9sb3n/dXiB/3t9g/91eIH/dXd9/3h6gP91eH//dnh+/25xev9qbXf/
    +cHN9/2hrc/9sb3f/dnh9/21wev90doD/cnV9/3V4gf96fIL/d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/
    +bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/
    +bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/
    +dHZ9/21vdv9xc3r/cXN7/3Byef9wc33/cHN9/29ye/9ydX7/cnR7/21vdv9sbnX/cHJ5/2dqcf94eX3/
    +bG95/3t9g/91d33/cHJ5/25wd/92eH7/bnB3/3h5ff9wc33/cnV+/21wd/9rbnj/bG95/29yfP91d33/
    +bnB4/21wef9rbXf/bG51/2ptd/9kZ3H/Z2p0/2xveP9tcHj/a253/3Fze/9sbnX/Z2px/3R2fP9qbHP/
    +bG51/25wd/9wc33/cHN9/2xudf9wc33/bG51/2ptd/9sbnX/Z2px/2xudf9qbXf/bnB3/3Z4fP9wc33/
    +bG95/3V3ff9zdn//c3Z//25wd/9ucXv/bnB3/25wd/9zdn//bG95/3V4gf9ucHf/dXd9/2ptd/9zdn//
    +bnB3/3Byef9nanT/bnB3/3V4gf93eoP/bG95/3V3ff9tb3P/bG51/3Byef9tb3P/bnF7/25xe/9ucHf/
    +dnh8/3N1fP9qbXf/amxz/3Bzff9ucXv/c3V8/2xudf9zdXz/bG95/2xudf9qbHP/am13/2ptd/9qbXf/
    +am13/25wd/9ucHf/c3V8/2xvef9sbnX/dXd9/25xe/91eIH/eXyG/3l8hv93eoP/c3Z//3V4gf9ucXv/
    +bnF7/3V4gf9wcnr/cHJ3/3BzeP9vcXX/dXd9/25wd/9wcnn/bG51/25weP91d3//dnmA/3h7hf9zdoD/
    +dnh+/29yfP9ucXv/c3Z//3d5f/9wcnn/bnB0/3Fze/9ucHj/bnB4/29xdf9vcXX/c3V8/3N1fP9ucHf/
    +amxz/3N2f/91d33/bG51/3Byef9sb3n/bG95/2xudf9sbnX/ZGdv/3Fzff9qbHP/dXd9/25xe/9nanT/
    +bG95/2ptd/9qbXf/bXB4/21wef9sb3j/am1z/25wd/9wc33/ZGdx/2dqcf9ucHf/dnd8/29xef9ucHn/
    +bG94/25wd/94eX3/bnB3/3Bzff97fof/dXd9/2psc/9sbnX/dXd9/2xudf9sbnX/bnB3/2xudf9sbnX/
    +dnh8/25wd/9ucHf/dXd9/25wd/9zdXz/YGNs/2xudf9sb3n/amxz/2psc/9rbnj/bG51/3Fzef9wcnn/
    +bG95/3l7gf9ucHf/bnB5/3d5gf9vcXj/c3Z//2xvdP9pbHX/am13/2dqdP9maG7/Zmlz/3Byef9zdXz/
    +bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/bG51/21vc/91d33/am13/2xvef9zdXz/
    +bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/
    +bnB3/3V3ff9tb3b/b3F5/25weP9vcXj/bnB3/3ByeP9ucHb/cHJ5/29yfP9vcnz/bG54/29ye/9qbXf/
    +dXiB/3N2f/9/gYf/eXyG/3h6gP93eX//fH6E/3J0e/95fIX/c3Z//3R3f/9wcnj/bXB5/25wd/9zdn//
    +dHeB/3F0fP9xdH7/bnB3/3Byef9zdXz/bG95/2xvef90dn//cnV//29yfP91d33/cHJ5/21vdv91d33/
    +bnB3/3Byef9vcXv/dnh9/3V3ff9ucXr/dnl//3N1fP9ydX//bG95/2xveP9vcXj/cXR9/29ye/94eoH/
    +d3qD/3N2f/96fIL/enyC/3t9g/91d3z/dnh//3Z4fv9zdn//enyC/3V3e/9+gIb/enyC/31+gv9zdXz/
    +eXuB/3h5ff91d33/cHJ5/3d4ff96fIP/gIKJ/3V4gf94eoH/d3mC/3V3ff93eYL/cHJ5/3Z5gv91eID/
    +cHN9/3p8gv91eID/cHN9/3N1fP93eoP/c3Z+/3Bzff9sb3n/c3Z//3Bzff9vcXX/bG51/25wd/9qbXf/
    +Z2pz/2xudf9wcnn/bnB3/3N1fP9sbnX/bG51/3V3ff9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9wc33/
    +bG95/2xudf9wcnn/b3F2/2xudf9rbnj/bG51/25xe/9qbXf/bG51/2Jlbv9pa3X/b3J6/3J1ev91d37/
    +cnV+/3Byef9sb3n/bG92/3Bzff91d33/Z2p0/2lsdf9tcHr/bG93/21wef9ucHf/b3F1/3V3ff91d33/
    +cHN9/2xvef91eIH/dXd9/25wd/9wcnn/cHJ5/3Byef9ucHf/cHJ5/2lrc/92eYD/bG95/3l7gf91d33/
    +bnB3/25xe/9sb3n/bG95/3J0e/9xc3j/bnF5/2lsdP9sbnX/bnF7/2Jlbv9maXP/bG51/3J0e/9sbnf/
    +a252/25wd/9ucHf/dnh8/2xudf9ucHf/dXiB/3Bzff9nanT/bnB3/3Z4fP9sbnX/bG51/25wd/9qbXf/
    +am13/3Bzff9qbXf/am13/3V4gf9tb3P/cHJ5/2dqdP9sb3n/c3V8/3Byef9ucHf/dHeA/3Bzff91d3//
    +dHeB/2xvef95fIb/cHJ5/25xev93eYD/bW92/3R3f/9vcXj/bW92/3N1fP9wcnn/bnB3/2xvef91d33/
    +dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/
    +cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/
    +cHN9/2dqdP9sb3n/aGt1/25weP9tcHf/cHN7/21vdv9ydXz/cHN7/3ByeP9ydHz/am12/2dqdP9rbXT/
    +ZGdx/2xvef9qbXf/c3Z//3N1fP9xdHz/b3F4/3Z4fv9ucHf/dnh9/29xeP9wcnv/bG51/2lsdP9sbnT/
    +bG93/3Byev9tb3b/cnR7/2xudf9ucHf/bG51/2dqcf9maG//bXB3/25wd/9tb3X/cnR6/29xev9rbnb/
    +cnR5/3J0ev9wcnv/cHN8/3N1fP92eID/cHN9/3J1fP9ucHj/cXR9/29xeP9vcXj/bnB4/29yef9ucHj/
    +d3h9/3BzfP9xc3r/dXd+/3J1fv91eID/bnF6/3N2gP9ucHf/b3F5/3J0e/9sbnb/dHZ7/2xvef9zdXz/
    +am12/3F0ff9sb3j/bG94/2Zobf9rbXT/cXN6/3l7gf9vcXb/cnV+/3Bze/9tcHn/cXN9/25wd/9wcnz/
    +cHJ5/2xvdv91d37/cHJ8/21vc/9ucHf/dHZ8/3J0e/9xdH3/bnB3/3J1fv9ydX3/bnB3/25wd/9ucHj/
    +bW93/2ttdP9sbnX/bG95/2xudf9pbHb/Zmlz/25xe/95e4H/c3V8/3V4gf97fof/e36H/3d5f/9wc33/
    +c3Z//25wd/9qbXf/dXd9/29xeP9sb3f/b3F3/25wd/91d33/bnF7/25xe/9sb3n/b3J7/3J1f/90d37/
    +dnh//3N2f/9ydH3/b3J7/25wd/9wc33/dXiB/25wd/9tcHr/dXd+/25xef9sb3n/bnB3/25wd/93eX//
    +dnh8/2xvef9qbXf/dXd9/3N1fP9ucHf/c3Z//3Bzff9wc33/cnV+/3N2f/9pbHT/dniA/25wd/91d33/
    +bnF7/21vc/9tb3P/bG51/2tueP9xdH7/cXN8/3Bze/9rbnj/a254/3N1fP9nanH/bG51/21vc/9zdnz/
    +b3J6/29xdv9ucHT/bnB3/3d5f/9vcXX/cHJ5/3V4gf9wc33/bG95/2xvef91d33/bG95/3Byef9wcnn/
    +bnB3/29xdf91d33/b3F1/25wd/97fYP/bnB3/3Byef9ucXv/c3Z//3d6g/9zdn//cHN9/3N2f/9wcnv/
    +cXR8/25xe/9kZ3H/dXiB/2psc/9laHL/c3V8/2hrdP90dn3/bnF5/2xvef9vcnz/bnF7/25wd/9sbnX/
    +bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/
    +dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/
    +cHJ5/3V3ff9sb3n/bW95/2hrdf9ucHf/bG52/21vd/9qbHP/bnB2/3J0e/9oanL/bG53/2hrcv9iZW7/
    +a210/2BjbP9nanT/am13/3V3ff9zdXz/cHN9/21vd/9wc33/a254/3h6gP9rbnf/bW95/2hrdf9iZW//
    +aWxz/2lsdP9tb3X/aWx2/25xe/9qbXf/bG51/2Zpc/9iZW7/YmVu/2ptd/9ucHf/bW94/29xeP9tcHr/
    +bnF7/25xef91d33/cnR7/3F0e/9wc3z/dHeB/3R3gP9ydHr/bnB2/3R2fP91d33/cXN7/3Fze/9zdn7/
    +b3J6/3J1fP9ydX3/dHZ9/3V3ff9xdH7/cnV//21weP9ydHz/bW92/29xeP9sb3f/bG51/25xef9sb3f/
    +cHN7/2ptdv9ucHn/a252/29xeP9kZ3H/aGt1/25xe/91eH//bG51/21wev9tb3b/bG53/29yfP9pbHb/
    +aWx2/2xud/9rbXX/cXR7/21wev9oa3P/a212/29yfP9vcXr/c3aA/25xe/9xdH7/bnB5/2xvdv9wcnr/
    +bnB4/2xvef9ucHj/bnB1/3Byef9vcXX/bnB4/2lsdf9wcnn/c3V8/2ptd/9sb3n/dXd9/3V3ff92eHz/
    +dXd9/25xe/9ucHf/bG95/3V4gf9zdXz/bW94/25xe/9ucHX/c3V8/25wd/9sb3n/Zmlz/21wdP9zdn3/
    +c3V7/3Z3fP9zdXz/cXN5/25wdv9sb3n/cHJ5/3V3ff9ucHf/b3F4/3R2e/9tb3b/a253/2hqdP9sbnX/
    +bnF7/2ptd/9nanH/ZGdx/25xe/9maXP/YmVu/2Rncf9nanH/Zmlz/2ptd/9oanT/Y2Zu/29ye/9nanT/
    +cHJ5/2dqdP9kZ3H/Zmhu/2Zobv9jZm//bG95/25xe/9sb3n/amxz/2ttdP9sb3n/ZGdx/2Zpc/9sbnX/
    +dHZ8/3Fzd/9tb3f/b3F2/29xdf95e4H/b3F1/3N1fP94eX3/c3V8/25wd/9ucHf/dXd9/2xudf9ucXv/
    +bnF7/25wd/9sb3n/c3V8/2xvef9wcnn/foCG/2xvef9wc3z/Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/
    +bnB3/3J0ev9ydHv/Z2px/3l7gf9ucHf/Z2p0/3l7gf9wcnn/eXuB/3J0ef9ydHv/cHJ5/25wd/9vcXX/
    +bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/
    +dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/dXiB/3d6g/9zdn//dXiB/25xe/9wc33/
    +dXiB/3V4gf9zdn//bG95/3N1fP9ucHj/cnV9/25xev9vcnv/a253/3Byef93eX//aGpu/3BzfP9tb3b/
    +aGt1/25wd/9nanT/cHN9/3N2f/91eIH/d3l//3R2fP9vcXj/d3mC/21wev93eoP/cnV+/25xe/9ydHv/
    +aGt0/3J1fv9wc33/dXiB/3V3ff97fYP/dnh8/3V4gf91d33/cHN9/2xvef9zdn//c3Z//3R3gf90dn//
    +eHqA/3p8gP92eH3/foCH/3x9gf90d4D/c3Z//3Z4gP93eoT/dHZ8/25wd/93eX//eHqA/3V4gP9zdn7/
    +dXeA/25wev9ucXr/cXR9/3R2ff9vcXr/bnF6/3J1ff9tb3b/cXN6/25wdv9ydHr/bnB3/21vdv9vcXf/
    +aWx1/3R2fP9vcnz/dHd+/3J0ff91eID/bXB6/3Fzev90d4D/eHuE/29yfP9vcnv/cHN9/3R3fv93eoL/
    +d3qC/3V4gP94eoD/d3l+/3l7gf93eX//cnV+/3N2gP93eYD/d3l+/3+Bh/93eYH/eHqA/3h6gv94e4L/
    +dXh//3l8g/91eH//dnh//3Fze/9ydHr/b3J6/3F0fv9wcnr/d3qD/3t9g/91eIH/d3qD/3t+h/97fof/
    +d3qD/3d6g/9wc33/bnF7/2xvef91d33/bG95/21wef9tcHr/bG51/3J1fP9ucHf/c3V8/25wd/9tb3f/
    +bXB6/29yev9xdH3/a253/21weP9tb3b/bG95/3N1fP93eX//bnB3/29xeP9ydHv/bW92/2tud/9qbXf/
    +bG95/3d5f/9wc33/am13/2Zpc/91d33/cHN9/2ptd/9ucXv/bG95/3Byef9ydHz/c3V7/2hqcv92eH//
    +am13/3V3ff9zdXz/bnB3/25wd/9ucXv/bW92/3Fze/9ydX3/cnR8/2xudv9vcXj/cHJ5/2dqcf9qbHP/
    +bG51/3N2f/90dnz/dHeA/3R2ff9ucXv/d3l//25wd/9zdXz/d3l//2xudf9qbXf/Z2p0/25xe/9nanT/
    +am13/2dqdP9qbHP/Z2p0/25xe/9qbXf/am13/3l7gf9tb3P/cHJ5/2BjbP9sbnX/cHJ5/2xudf9ucHf/
    +cHJ5/21wev9ydHv/dHeA/2Zpc/93eX//bnB3/2ptd/92eHz/bnB3/3p7gP9ydHr/cnV//25xe/9vcXX/
    +b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/
    +bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/
    +amxz/2ptd/9sb3n/bnF7/25wd/90dn3/bG92/25xe/9sb3n/aGt0/2Rncf9qbHT/c3V8/2RmbP9wc33/
    +cHN6/21wev9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/94eX3/bG95/3N2f/9wcnn/eXyG/3N2f/9wcnn/
    +bnB3/2ptd/9ucXv/c3Z//3Bzff9zdXz/d3qD/3Byef9ucXv/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/
    +bnF7/3N2f/96fIL/c3Z//32Aif95e4H/c3Z+/3Bzff9zdn//fYCJ/3d5f/92eH7/en2G/3p9hv92eYL/
    +dXiB/3V4gf90d4H/c3Z//3V4gf96fIL/b3F4/3Bzff9ydX7/cHJ5/3Bzff9wcnn/dHeA/25weP9ucHf/
    +bW92/2hrcf9xc3n/cHJ5/3Z4fP9ucXr/cHN8/2ptdv9qbXf/c3V8/3d5f/9qbXf/aGt1/2xudf9sb3n/
    +bG95/21wev9tb3b/a254/2hqcf9maXP/a210/2Vocf9nanT/a210/2hrcv9ucXv/a210/2Nmb/9naXP/
    +aGt0/2dqdP9maXL/Z2lw/2hrdf9kZ3D/ZGdw/2Zpc/9iZW//ZWhw/25xe/9wc33/bnB3/25wd/91d33/
    +d3l//3N2f/91d33/bnF7/2xvef9sb3n/dXd9/25wd/9ucHj/cHJ7/2xveP90dnz/bnF7/2dqdP9zdXz/
    +bG51/29xeP9ydH3/dHeA/3N1fv9maXP/a211/2xudv9qbXf/am13/3Bzff9vcnv/bXB6/2lsdP9sbnX/
    +bW92/2ptd/91d33/bnF7/2dqdP9nanT/cHN9/3N1fP9qbHP/bG95/2ptd/9qbXf/bnF6/25xe/9laHL/
    +bnF6/2Nmb/9qbXf/bG51/2Rncf9maXP/bG51/2xvef9qbXb/bG51/2ptdP9oa3P/c3V8/3Bzff91d33/
    +ZGdx/2psc/9tb3X/cXN5/29xef9sb3n/bG51/3d5f/9sbnX/cHN9/3d5f/9qbXf/Z2p0/2Zpc/9zdXz/
    +bW9z/29xdf9ucHf/amxz/21vc/9zdXz/cHJ5/3N1fP9+gIb/bnB3/3Bzff9kZ3H/bnB3/3N2f/9sb3n/
    +bnB3/29xeP9wcnn/cXN7/2xudf92eHz/cHJ5/2xudf9ucHf/eHl9/21vc/91d37/b3F4/29xeP9ucHf/
    +bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/c3Z//3+Bh/9zdn//d3qD/31+gf9zdn//
    +c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX//c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/
    +am13/25wd/9wcnn/bG51/25xe/9qbXf/bXB6/2ttdP9oa3P/aGty/2ttdf9nanT/c3V8/2dqdP9rbnj/
    +cXN7/2ttdP9kZ2//bW91/2dqdP9sb3n/cHJ5/3d5f/93eX//bG51/2xudf9wcnn/dXd9/2xudf9sbnX/
    +c3V8/25wd/9wcnn/bnF7/3Bzff9ucXv/bnB3/2ptd/9ucHf/bnB3/3Bzff9ucXv/eXyG/3V3ff93eX//
    +c3Z//3N2f/9wcnn/dXiB/3l7gf91eIH/cHJ5/3t9g/97fYP/foCG/3t9g/9ucXv/c3Z//3l7gf9wcnn/
    +eXuB/3Bzff9wc33/bG95/2Zpc/91d33/cHN9/2psc/9ucHf/bG95/3N1fP9vcXX/cHJ5/25wd/9zdXz/
    +am13/3V3ff9wcnn/bG95/2ptd/9kZ3H/bG51/25wd/9tb3P/cHJ5/25xe/9zdn//cHJ5/25xe/9zdXz/
    +c3V8/3d6g/9wc33/d3qD/3t9g/93eoP/d3qD/3t+h/97fYP/eHuF/31/hf96fIP/c3Z//3J1f/95e4H/
    +am13/3N1fP9wcnn/bG95/3R2fP9ydHv/dXd7/2dqcf9ucHX/bnB3/21vd/9ucXv/dnh8/2xudf9ucHf/
    +dXd9/3d5f/9zdXz/bnF7/2ptd/9qbXf/bG51/3N1fP9qbXf/bG95/2xvef9qbXf/dHZ8/2xvef9maXP/
    +dXd9/2ptd/9sb3j/cnR7/3F0ff9xdHz/Z2lx/21vdv9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9sbnP/
    +am13/21vdv9wc33/dXd9/25xe/9qbXf/b3F1/3Z4fP9zdn//b3F1/3Byef9wc33/bnF7/3Bzff90dnz/
    +bG93/3R3gP9nanT/bnF7/25xe/9sb3n/bG95/3V4gf92eYL/c3V9/3N2fv9vcnr/b3F4/3d5f/91d33/
    +d3qD/2xvef9ucHf/b3F4/3J0ev9ucXv/cHN8/2xvef93eoP/bW9z/3Byef92eHz/am13/2dqdP9qbXf/
    +cHN9/2xudf9ucHf/bG95/2xudf9ucHf/dXd9/3Byef91d33/fn+D/25wd/9ydHz/Z2p0/25wd/9wc33/
    +bnB3/2xvef9sb3j/cXN5/21wev9nanT/bnF7/2psc/9nanT/bG51/3h5ff9vcXX/eXuB/3Byef9vcXn/
    +bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/
    +bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/c3V8/25xe/9zdXz/bG51/2xvef9sbnX/
    +cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/bW92/2ptd/9sbnX/Z2p0/3N1fP9nanH/
    +b3F5/3F0ff9sb3f/Zmhv/29xeP9sbnX/cHJ5/3V3ff97fYP/eHl9/21vc/9sb3n/c3Z//3N2f/9sb3n/
    +bnB3/25xe/9ucHf/bnB3/3N1fP91d33/bnF7/25wd/9ucHf/bG95/25wd/9ucXv/bnB3/3l7gf9zdXz/
    +eHl9/3N1fP9wc33/bG95/3N1fP9wcnn/cHJ5/2xudf9zdXz/dXd9/3V3ff9zdXz/Z2px/29xdf91d33/
    +b3F1/3V3ff9ucHf/c3V8/21vc/9maG7/cHN9/2xudf9nanT/Z2p0/2xudf9sb3n/am13/2dqdP9nanH/
    +am13/2Zobv9ucHf/Zmlz/2Zobv9gY2z/XWBq/2dqcf9nanT/YmVu/2Zpc/9kZ3H/ZGdx/2Jlbv9iZW7/
    +ZGdx/2Jlbv9maXP/Z2px/2dqdP9wcnn/Z2p0/2Rncf9qbXf/Z2p0/2Zpc/9maXP/Z2p0/2Zobv9qbHP/
    +am13/2Jlbv9maG7/ZGdx/2dqcf9sb3n/bG95/2xvef9nanT/bG95/2psc/9sbnX/bnF7/3N1fP9qbHP/
    +am13/25xe/91d33/bG95/2ptd/9nanH/amxz/2Rncf9qbXf/amxz/2tueP9rbnj/am11/3V3e/9wcnn/
    +amxz/3d5f/9sb3n/bnF6/3F0fv9xdH3/dHZ8/2dqcv9tb3b/cHJ5/2xudf9zdXz/dXd9/21wev9tcHr/
    +aWx2/2xvef9tb3n/dXiB/3d6g/9wcnn/bnB3/21vc/91d33/dXd9/2psc/9sb3n/bG95/3Byef9qbXf/
    +bnF6/2xudf9ydH3/am13/25wd/9ucHf/bG95/3Byef9zdn//dHeA/3J0fP9tcHj/bG53/3J0e/94eoH/
    +c3Z//3t+h/9sb3n/bG95/25xe/90dn3/bnB4/25wd/9tb3P/dXiB/2dqdP9nanT/cHN9/2xudf9nanT/
    +ZGdx/2xvef9qbHP/ZGdx/2dqcf9kZ3H/Z2p0/2xvef9sb3n/bG95/3t9g/9qbXf/c3V8/2Zpc/9sb3n/
    +cHN9/25wd/9wc33/bnB3/3ByeP9zdXr/bG95/3N2f/9wcnn/bG95/2xvef91d37/b3F2/3l7f/9xc3n/
    +bnB3/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/
    +bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/
    +b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/94eoD/cXN7/29xef9vcnf/bG95/2xveP9ydX7/
    +Z2p0/25xev9xdH3/a254/2RncP9rbnj/Z2p0/2xvef9wc33/c3Z//3N1fP9sb3n/cHJ5/3Fzff9ydX7/
    +b3J8/3Byef9ydX7/cHJ5/3Bzff90d4D/cHN9/3V3ff9vcXX/bG51/2xudf9tb3P/bnB3/2xudf95e4H/
    +cHN9/3R2fP91d3v/c3V8/2ptd/9sb3n/bG51/2xudf9qbXf/cnV8/3N1fP9wcnn/am13/2Fkbf9qbHP/
    +c3V8/2xudf9ydXz/am13/25xe/9sbnX/ZWhx/3N1fP9sbnX/bG51/2xudf9sbnX/bG95/2ptd/9ucHf/
    +b3F1/3N1fP9tb3P/dnh8/25xe/9sbnX/amxz/2Jlbv9qbHP/bG95/2Zpc/9qbXf/am13/2xudf9qbXf/
    +am13/2xudf9qbXf/cHN9/2xvef9ucXv/d3l//3V3ff92eHz/dnh8/3Byef9sb3n/bnF7/3Bzff9sbnX/
    +bW9z/3V3ff9qbHP/bnB3/2xudf9tb3P/c3V8/3Bzff9sb3n/Z2p0/2xvef9qbHP/bW9z/3N1fP92eHz/
    +cHJ5/25wd/91d33/c3V8/25xe/9wcnn/am13/25xe/9qbXf/cHN9/2xvef9tcHr/bXB4/21veP9zdoD/
    +bnF7/2xudf93eX//bG51/2tueP9wc3v/cnR7/3R2ev9naXD/bnB2/3N1fP9ucHf/dXd9/3V3ff9vcXj/
    +b3F5/2xuc/9ucHf/cHJ2/3N2f/93eX//cHN9/2xvef9sb3n/dXiB/3h5ff9ucHf/c3V8/3N1fP9wcnn/
    +bG95/3J1ff9sb3f/cnN5/2Vocv9qbHP/Z2p0/2BjbP9kZ3H/Zmlz/2dqc/9rbnT/aWtz/2Zob/9pa3L/
    +cHN9/2xvef91eIH/Z2lz/2xudf9sb3f/cXR7/2ptd/9sbnX/am13/3V4gf9kZ3H/am13/3Byef9maG7/
    +ZGdx/11gav9nanT/Zmhu/2Rncf9maG7/Zmhu/2Rncf9qbXf/ZGdx/2dqdP91eIH/YmVu/2dpc/9nanH/
    +cHN9/3V4gf9wcnn/bnF7/25xev9wcnn/c3V8/2ptd/9ucXv/am13/2dqdP9sbnP/dnd8/2tueP90d37/
    +cXN5/25xev9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/
    +cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/
    +c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/c3V8/2dqcP9sb3n/bW92/2xveP9sb3n/
    +dXd+/2ptd/9wc33/cnV+/2xvef9maHL/bXB6/2dqdP9ucXv/bnF7/3V3ff94eX3/cHJ5/21vdv90dnz/
    +bnF7/3F0fv9ydX7/cnV+/29xeP9vcnv/c3Z9/3N2gP91eIH/cHN9/3N1fP9zdn//d3qD/3d5f/91d33/
    +gIKJ/3p8gv92eYP/dXiB/3d6g/9zdX3/eHqB/3h7hP91d37/dHZ9/3p7gP97fYH/enyC/3R3f/9ucXr/
    +cnV+/3p8gv9ydHv/cnV9/3Byef90d4D/cnV9/29ye/94eoD/bnB3/29xeP9ucHf/bW92/21wev9rbnj/
    +bnB6/2tueP9xdHv/b3F4/3d4ff9vcXj/bnB3/2xuc/9iZW//bW92/2xvef9rbnj/dHeA/3J1fv9xdH7/
    +bW93/2xveP9ucHf/b3F4/3J1fv9vcnz/c3Z//3h7hf96fIL/eXyG/31+gv96fIL/enyC/3p8gv94e4X/
    +d3qC/3V3ff97fYP/d3l//3Z4f/92eHz/d3l//31+gv99foL/enyD/3d5f/96fIP/dXd9/3N2f/91d33/
    +eHl9/3Byef9wcnn/dXd9/3N1fP9wcnn/bnB3/2psc/9ucXv/bG51/2xvef9sb3n/aGt1/2lsdP9qbXX/
    +cnV+/25wd/9nanT/d3l//2xveP9rbnj/cnV9/2xvef9ucHf/X2Jr/2ttc/9tcHr/bnB3/3N2f/92eH//
    +bnF7/21wev9qbHX/bXB3/2ttdP9ucXv/d3l//2ptd/9maXP/bG51/3V4gf93eX//bG51/3N1fP9wcnn/
    +c3V8/2xvef9zdXz/am13/3J1ff9nanT/bG51/25xe/9kZmz/bG51/2xudf9ucHf/b3F1/21wd/9qbXX/
    +a253/3V3ff9ucXv/d3l//25wdP9tcHf/c3V9/3R3f/9wc33/b3F1/2xudf97fYP/bG51/25wd/92eHz/
    +b3F1/25wd/9qbHP/eHl9/3Byef9tb3P/b3F1/29xdf9sbnX/dXd9/3N1fP92eHz/f4GH/2dqdP9sb3n/
    +am13/3Bzff95e4H/dXd9/3V4gf9vcnz/c3V+/3V3ff9tcHr/bnF7/21wef9sb3j/cHJ5/3d6gP9xc3v/
    +dHd+/3R3gP9zdn//dnmC/3Bzff9zdn//c3V8/3N2f/91eIH/bnB3/3d5f/9sb3n/bnB3/25wd/93eX//
    +bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/
    +cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/bnF7/3V4gP9ucHf/cHN8/29xeP9ucXn/
    +a254/3V3ff9pbHb/cXR8/29yfP9wc3z/bG95/2xvef9qbXf/cHN9/3Byef91eIH/d3l//3Fze/9ucHj/
    +dHd+/2ptd/92eYD/cHJ6/3V3f/9tcHr/cXR8/3V3fv92eYD/dXiB/29xeP9tcHn/bnF7/3Bzff9wc33/
    +cHN9/3l8hf9ydX7/dHV7/3J0fP9ydX//cXN6/3Fzev9ydX3/b3J6/3Fzef9ydHz/dXiB/3Z4f/9vcnr/
    +bW94/25xef92eHz/b3F2/3Bze/9wc3v/c3Z//25xe/9vcXr/d3l//21vdv9xc3r/b3J6/21weP9vcXv/
    +bW94/25wef9rbnj/b3J8/21wef90dn3/cXN7/3Bze/9tb3X/ZWdu/2Zpc/9pa3P/Zmly/2tueP9rbnb/
    +bG92/2Vocf9sbnX/aWxz/2dpb/9oanT/a210/21veP90dn3/b3J5/3R2fP9zdXr/bnF4/29ye/9ucXv/
    +b3J8/3BzfP9xc3r/cXR9/3Bye/9ydHv/cXN9/3J1ff93eX//e32D/3R3f/9xdH3/c3Z//3F0ff9vcnz/
    +dXd9/3d5f/9ucHf/cHJ5/3Byef9wcnn/cHJ5/3V3ff9sbnX/cHJ5/21vc/9ucXv/bnF7/2xvef9sb3j/
    +bXB4/3V3fv9sb3n/Z2p0/3d5f/9sbnX/a210/29xd/9tcHr/cnR6/2Rmbv9sbnT/am13/2dqdP9ucXv/
    +c3V8/2xudP9tcHr/a252/2xvef9ucXv/cHN9/3d5f/9ucXv/bG95/25xe/97fof/d3qD/25wd/91d33/
    +cHJ5/3Byef9ucHf/cnR7/21vdv9ydXz/aGty/2xudf9ucXv/ZGZs/25wd/9ucHf/bW93/25weP9ucHf/
    +bnB2/2xveP9zdXz/c3V8/3V4gf9sbnX/bG51/21wev9zdXz/am13/2xudf9qbXf/dXiB/2psc/9sbnX/
    +dXd9/2xudf9tb3P/amxz/3Z4fP9vcXX/bnB3/2xvef9ucHf/am13/3d5f/91d33/c3V8/4GDiv9qbXf/
    +cHN9/2dqcf9vcXX/c3V8/2ptd/9ucHf/bW92/3Bye/9ydX7/cnR7/3V4gf91d4D/cHJ7/3d5gP96fYf/
    +eHqB/3R2fv9ydX3/bXB5/2xvef9sbnX/bG51/2ptd/9ucHf/c3V8/2xvef91d33/bnB3/3Byef9sb3n/
    +dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/
    +d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/c3V8/25wd/91d33/bG95/3F0ff9ydH3/
    +dHd//3Bzff95e4H/c3Z+/3d6gP9wc3z/b3F5/2xudf9sbnX/Zmlz/2xvef9sb3n/dXd9/3N1fP9rbnj/
    +bG52/3Z4f/9qbXb/dnh9/3Byd/9zdn3/bW93/25weP9ucXv/dHd//3V3f/90dnz/d3l//3d5f/9+gIb/
    +d3l//3R3gP96fYb/dXd+/25xe/9wc33/c3V9/29yfP9xc3r/dHZ+/29yef9zdX3/c3V9/3N2f/9xdH7/
    +bG95/3Bzev9ucHX/dHZ+/21vdv9qbXf/bG92/3Bze/9sb3f/bG94/3R2fP9tb3P/cnR5/3F0e/9ucHf/
    +bG95/2xvef9ucHn/bnB3/3Bye/9vcXr/c3V9/3V3f/9xdHz/b3F4/2ttc/9rbXT/bnF5/2ptdf9sbnX/
    +bG50/3F0fP9qbHP/bW92/2xvef9tb3b/cHJ3/2lsdv9wc3v/dXh//2tudv90dnv/cXN6/25xef9wcnn/
    +dHZ+/25xe/9tcHr/bnB5/3F0ff9vcnv/bW94/3Byev9sb3j/a252/3J1fP9vcXn/a210/21wev9vcnz/
    +bnB3/3N2f/93eoP/cHN9/3N2f/9zdn//c3Z//3V4gf91eIH/cHJ5/3d6g/9wc33/d3qD/3l8hv93eoP/
    +dnmB/3Bzff90d4D/dXiB/3N2f/97fYP/d3l//21wev94e4P/dXd//3V4gv9vcnz/a251/3N1fP9vcXX/
    +Z2px/2psc/97fYP/cXR7/2xudf9vcXj/bnF7/3N1fP93eX//bnF7/2dqdP9ucXv/d3qD/3d6g/9ucXv/
    +cHN9/3V3ff9wc33/bnF7/3Z4fv9kZ3H/dniA/2xvef9qbHP/dXd9/2Zpc/9nanH/ZGdx/2Rncf9pbHL/
    +a213/21wev9laHL/ZGdx/2Rncf9qbXf/Z2lv/2tud/9qbXb/c3V8/25wdf9sb3n/bnF7/3V4gf9qbXf/
    +bnF7/3l7gf9sb3n/bG95/2dqdP91d33/bG95/2xvef9ucXv/bnF7/2dqdP93eX//c3Z//3N2f/+Bg4r/
    +bG51/3Byef9maXP/bnB3/3Byef9sbnX/bnB3/25weP9ucHf/amxz/25wd/9vcXX/d3h9/3N1ev9tcHj/
    +dXd7/3V3ff9wc3z/c3V9/3Byev9sb3n/bG51/2ptd/9maXP/am13/2xvef9ucXv/cHJ5/2dqcf9nanT/
    +Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/
    +Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/Zmhu/2Zpc/9kZ3H/cHJ5/2dqdP9qbXX/
    +bnB4/29yfP9sbnX/c3V8/25xe/9xdHv/bXB5/3J1ff9pbHX/bW90/2ptd/9sb3n/am13/3Bzff9ucXv/
    +cnR8/3J0e/94e4X/bG95/3l7gf9ucHf/dXiB/3Byef9ucXv/b3J8/3N1e/9wc33/cHJ6/2ttdP9zdXz/
    +c3V8/21vc/9vcnz/bnF6/25xef9ucHf/cnR7/3R2fP9ydHv/bW92/3R3ff9vcXj/c3Z//25xe/9vcnz/
    +c3V+/3F0ff94eoD/cHJ3/3R2e/9vcXX/a21z/25wd/90dnv/b3F5/3Fzev9xc3r/b3F1/3V3ff9ydX7/
    +bnB1/2xudv9ucHf/bXB1/2tueP9tb3f/bG51/21wev9vcnz/b3J7/29ye/9qbXf/aWxz/29xef9nanH/
    +bG92/2xveP91eIH/a21z/2lsdv9vcXX/b3F4/25wd/9tb3b/dHZ7/3N2ff9pbHb/d3mA/3J0e/91d33/
    +cXR+/3R3gP9zdn7/dHeA/3R3gP97fof/d3qD/3d5gP91eH//cHN8/21wev9wc3z/dnmC/3N2f/9wc3v/
    +eXuC/3V4gf9zdXz/dXd9/25wd/91d33/cHJ5/3Byef9wcnn/cHJ5/21vc/9wc33/am13/2xvef9qbXf/
    +bnF7/2xueP9rbnX/bG52/29xef9ucHf/dXd9/3N1fP9rbnj/cXN6/3Byef9zdXr/bW5z/2hqcf9wc3z/
    +cHJ5/2dqdP9nanT/d3qD/25xe/9sb3n/bnF6/25xe/9zdn//d3qD/25xe/9qbXf/bnF7/3l7gf95e4H/
    +bW9z/3N1fP9zdXz/bG51/2xudf9zdXz/Zmhu/3R2fv9ydHv/am13/3d6g/9nanT/Z2p0/2dqdP9nanH/
    +a254/21wef90dn3/bG51/2ptd/9qbXf/bnF7/2xvef9ydHv/am13/3Fze/9sbnb/am13/2xudf91d33/
    +amxz/21vc/91d33/bnB3/25wd/9sbnX/cHN9/2xvef9ucHf/bG95/25wd/9qbHP/dnh8/3Bzff9wc33/
    +f4KM/25wd/9wc33/am13/2xvef91d33/bG51/3N1fP9tb3n/bG51/2dqcf9nanT/bW92/3V3ff9zdX3/
    +cXR8/3d6hP91eIH/cXR7/3J1ff9zdXz/am13/3Byef9wcnn/Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/
    +bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/
    +bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/cHJ5/29xdf9wc33/bnF7/3l8hv9ucXv/
    +cHN9/3R3gP94eoD/cHN9/3l7gf9zdn//dHeA/3Bzff9xc3r/am13/25wd/9vcXX/cHJ5/25wd/9zdXz/
    +c3V8/2ptd/9qbXf/d3l//25wd/94eX3/bnB3/3N1fP9qbXf/b3J8/29yfP90d37/d3mC/3Z4gf9zdn//
    +e32D/3l8hv9zdXz/dXd9/25xev9sb3j/aGt0/25xe/91d33/c3V8/2xudf9zdXz/bnB3/3V3ff9sbnX/
    +bG95/25xe/9vcXj/dXd9/21vdv9zdXz/a213/2dqdP9rbnj/cXR9/3Byef9wcnn/dXd9/21vdv91d3z/
    +c3Z//25wd/9sb3n/cHJ5/2xudv9sbnb/bnF4/25wd/9zdXz/c3V8/3Fzev9wc33/bG51/2dqdP9sb3n/
    +Y2Zu/2ptd/9wcnn/enyC/2xvef9sbnX/bW92/2tud/9ucHf/aGt1/3V3ff92eHz/aGt1/3Z4f/9wcnn/
    +bnB3/25xeP9zdn//bnB3/3Bzff9ucXv/eXuC/3Z5gv9ydHv/dnh//25xe/9sb3n/bG95/3Bzff9vcnv/
    +Zmly/3J1fv9vcnv/dXd9/3d5f/9wcnn/c3V8/3Byef9zdXz/cHJ5/3V3ff9tb3P/dXd9/25wd/9wcnn/
    +c3V8/25xe/9qbXf/a210/2tueP9qbXf/bG51/3d5f/9ucXv/bG51/29ye/9ucHf/cXR8/2ttdP9laG//
    +bnF6/2ptd/9maXP/Zmlz/3R3gf9tcHn/bG93/2xvdv9wcnn/c3V8/3d6g/9sbnX/amxz/25wd/93eX//
    +d3l//25wd/91d33/dXd9/25wd/9ucXv/dnh//2hrdP91d4D/a253/2psc/9zdXz/Zmlz/2Rncf9maXP/
    +Z2px/21wev9sb3n/c3V8/25xe/9wcnn/cHJ5/3Z4fP9wcnn/dHZ6/2xudf92eH7/bW91/29xdf9ucHf/
    +eHl9/2psc/9sbnX/dXd9/2xudf9qbXf/amxz/25xe/9sbnX/b3F1/29xdf9vcXX/Z2px/3V3ff91d33/
    +c3V8/3+Bh/9nanT/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/bG95/21veP9qbHP/ZWhy/2xudf9xdH3/
    +cXN5/21vdv90dnz/c3V8/21wef9wcnr/bnB6/21wd/9ucHf/cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn//
    +bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/am13/2xudf9ucHf/bG51/3V3ff99foH/
    +Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/am13/25xe/9ucHf/c3V8/3V3ff95e4H/
    +bnB3/3Fze/9wc3v/dHeA/3N2f/93eX//c3Z//3Z5gv9zdn7/cHJ4/2hrdP9qbXf/bG51/3N1fP9ucHf/
    +c3V8/3V3ff9qbXf/Z2p0/3d5f/9sbnX/eHl9/25wd/91d33/b3F1/3Byef9wcnr/cXR8/3R3f/91eIH/
    +cHJ5/3N2f/9zdn//bnB3/3Z4f/9ucXr/bnB4/21vc/9wcnn/dXd9/3h5ff9ucHf/dXd9/25wd/92eHz/
    +bG51/3Byef9zdXz/am13/3V3ff9sbnX/dnh8/29xdf9qbHP/bG95/3Bzff9ucXv/am13/3Bzff9qbXf/
    +dXd9/3V3ff9ucHf/bnB3/3Byef9vcXX/bnB3/25xe/9ucHf/c3Z//3V4gf9zdn//c3Z//2xvef9qbXf/
    +c3V8/2dqcf9sbnX/bnB3/3d5f/9ucHf/am13/3Byef9wcnn/bnB3/2ptd/91eIH/eXuB/2dqdP93eX//
    +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/bG95/3N1fP9ucXv/aGty/3Z4fP9qbHP/Z2px/2xudf9ucXv/
    +cHN9/2Zpc/9zdn//b3F1/2xvef9sb3n/Zmlz/2ptd/9nanT/bnF7/2ptd/9qbXf/bG51/3Bzff9sbnX/
    +bG95/2xvef9ucXv/b3F4/21vdv9sbnf/bG51/2dqcf9wcnn/am13/2hrcv9ucHr/bW91/3BzfP9oanP/
    +X2Jq/2hrdf9nanH/XWBq/2Rncf93eX//bnF6/29xev9sb3j/c3Z+/3d6g/95fIb/cHJ5/2xvef9wc33/
    +eXyG/3t+h/9wc33/e32D/3t9g/91d33/cHN9/3p8gv9pbHb/e32E/3N2f/9sb3n/d3l//25wd/9vcXX/
    +bG51/2xudf9vcXj/cHJ6/3R2fv9ucXv/bG95/3N1fP91d33/bnB3/3J0e/9tcHn/dniB/25xe/9ucHf/
    +bnB3/3Z4fP9sbnX/cHJ5/3h5ff9sbnX/bG95/2ptd/9ucXv/am13/2xudf9qbXf/bG51/2Zpc/9wc33/
    +cHN9/3N1fP9/gYf/am13/25xe/9sbnX/bnB3/3Bzff9nanT/bnF7/3Byef9wc3v/a253/2dqc/9wcnn/
    +cXR9/25xeP9pbHX/Z2pz/2dqdP9laHD/bnB2/2ptd/9rbXX/bG95/2xvef9nanT/am13/3N1fP9wc33/
    +d3qD/2xudf9wc33/bG51/3V3ff9nanT/amxz/2xudf9qbHP/bG95/2ptd/9qbXf/bG95/2xudf91d33/
    +e32D/2Jlbv9ucXv/bG95/3N2f/9qbHP/c3V8/3Bzff9nanH/amxz/2Jlbv9nanT/Z2px/2ptd/9sb3n/
    +dHeA/2lsdP9sb3j/b3F3/3Byef9wcnn/cHJ5/3Byef91d3v/b3J7/3Z4fv9ucHf/bnB3/2xvef9wc33/
    +bG95/25xe/95e4H/cHJ5/2ptd/91eIH/bnB3/3d5f/9ucHf/dXd9/2xvef9ucXv/cnR7/3Bze/9xdHv/
    +cHN9/2tueP9zdXz/dXd9/29xdf92eH//bXB6/21vd/9rbXf/bnB3/3V3ff94eX3/bG95/3l7gf9zdXz/
    +e32D/3Bzff91eIH/eXuB/3N2f/97fof/c3Z//3t9g/9wc33/c3Z//3d5f/95fIb/d3qD/3N2f/93eoP/
    +c3Z//3t9g/91eIH/c3V8/2xvef9sb3n/bG95/25wd/9wcnn/bW9z/3Byef91d33/c3Z//3V3ff9ucHf/
    +bG51/25xe/9iZW7/bG51/2xvef9zdn//Zmlz/2Rncf9nanH/Z2p0/2dqdP9kZ3H/bnF7/3N1fP9nanT/
    +d3l//2ptd/9nanT/bG51/3Byef9sbnX/am13/2xvef9ucXv/am13/2Zpc/9wc33/Z2p0/2BjbP9nanT/
    +cHN9/2xvef9iZGr/bnF7/2xudf91d33/dnh8/3N1fP9wcnn/bG95/25xe/9ucXv/am13/2psc/9ucXv/
    +am13/2psc/9qbXf/cHN9/29yfP9rbXb/bG93/2tueP9sbnX/dXd9/3Byef9tb3P/cXN6/21wef9ydHz/
    +a251/2dqcv9ydHv/cHJ5/2psc/9sbnX/dnh//3Byef9sbnX/aWx1/2xvef9ucXv/dXd9/2Zpc/9gY2z/
    +Z2px/3Byef9wcnn/Z2px/25xe/9sb3n/amxz/2Zobv9rbnj/Y2Zu/3Z5gv9vcnv/bG95/3d5f/9ucHf/
    +bnB3/2xudf9tb3P/bnB3/3Fzev90dnz/c3Z+/25xe/9wc33/d3qD/3J0fP9ydHr/a254/3N2f/9tb3b/
    +am13/2xudf92eHz/bnB3/3Byef9zdXz/bW9z/21vc/9tb3P/bnB3/3Byef9ucHf/bnB3/29xdf9nanH/
    +c3V8/3N2f/9zdn//f4GH/2xudf9xc3r/ZGdx/2ptd/9sb3n/Z2px/3Byef9vcXb/b3F4/2xudf9nanT/
    +cHN9/3V4gP90dnz/dHZ9/3N1fP91d33/bnB3/3N0eP9ydHr/cHJ5/3Byef9wcnn/amxz/2xudf92eHz/
    +cHJ5/3V4gf9sbnX/bnF7/2xudf9wcnn/Z2px/2Rncf9maXP/Z2px/2dqcf9maG7/YmVu/2Zobv9maG7/
    +am13/3N2f/9ZXGX/Zmlz/2dqdP9wcnn/ZGdx/2xvef9sb3n/amxz/2ptd/9maXP/am13/2xudf9sb3n/
    +cHN9/3R2ff9oa3X/bG95/3F0ff9vcnz/dXd9/3N1fP9wcnn/dHZ8/3N2f/91d37/b3J5/2xudv9sbnX/
    +cHN9/2xudf9sbnX/dXd9/2xvef9qbXf/e32D/3N1fP93eoP/bG95/3Z4fP9qbXf/c3Z//3J0e/9ucHn/
    +cXN6/3R2fP9tb3P/c3V8/3Bzff9ucHf/c3V8/29yfP9ucXv/bnB3/3Byef93eX//e32D/3Byef97fYP/
    +cHJ5/3t9g/9ucXv/cHN9/3V3ff9wc33/eXuB/3Byef9zdn//bG95/2ptd/9sb3n/c3V8/3N1fP9ucHf/
    +bnB3/25wd/9zdXz/bG95/2ptd/9qbHP/am13/2Rncf9nanH/am13/2dqcf9nanT/am13/25xe/9wc33/
    +amxz/2xudf9zdXz/amxz/25wd/9wc33/eXyG/2xvef9ucHf/cHJ5/3N1fP9ucXv/bG95/3N2f/97fYP/
    +c3Z//36Biv91eIH/c3Z//3Bzff93eoP/c3Z//3l8hv93eoP/e32D/3l7gf9wc33/d3qD/25wd/9maG7/
    +bG51/25wd/9sbnX/ZWZq/3N1fP9zdXz/c3Z//3V4gf9wc33/dXd9/3V3ff91d33/cHN9/3Bzff9wc33/
    +dnh8/3Bzff9wc33/c3Z//3Z5gv91eIH/bXB5/3Bze/9sb3n/bG51/3V3ff9sb3n/bG51/3F0ff9tcHn/
    +c3Z+/21vd/9naXP/am13/2xvef9iZW7/ZGdx/3V3ff9qbXX/Z2p0/2hrdf9xc3r/cnV8/3Z4f/9sbnX/
    +amxz/2tudf91eIH/dHZ8/25wdf9ydX7/cnV+/2xvef9ucHf/cXR9/2dqdP90dn7/Zmlz/2Zpb/9sb3n/
    +YmVu/2Zobv9kZ3H/Zmhu/2lsc/9sbnj/dHZ9/2xvef9sbnX/bG95/3V4gf9tcHn/cHN7/2tud/92eYH/
    +b3J7/25wd/9vcXX/d3l9/3Byef9wc33/dHZ8/25wd/9sb3n/b3F1/25wd/9ucHf/bW9z/2xudf9ucHf/
    +aGt1/25xev92eH7/dXeA/36Ahv9ucHf/dXiB/2Zobv9qbXf/bG95/2Zpc/9wcnn/bW90/2tueP9sbnX/
    +Z2pz/2xvef9vcnv/cHJ7/3N1e/92eYH/c3Z//29yfP9zdX3/cnV9/3J1fv91eIH/d3qD/3N2f/9zdn//
    +foGK/3l8hv+Bg4r/cHN9/3d6g/9zdXz/d3l//3Byef9wc33/cHN9/25xe/9ucXv/bnB3/29xdf9wcnn/
    +bnF7/3l7gf9+gIb/Z2p0/3N2f/9wcnn/d3l//21vc/92eHz/dXd9/25wd/9ucXv/Z2p0/2xvef9ucHf/
    +bnF7/3V4gf94e4X/bnB3/3Fze/90d4D/cHN8/3V3ff9wc33/bnF7/3N1fP9ydHr/cnR6/21wd/9sb3n/
    +bnF7/3d6g/9ucXv/cHJ5/3N2f/9ucHf/amxz/3V3ff9vcXX/dXd9/2xvef9zdn//bXB6/3V3fv9ydX7/
    +cHN9/3N2f/90dnz/bnB3/3N2f/9wc33/bG95/3Fze/9ucXv/bXB6/2xveP9ucXv/dHeA/3p8gv9ucHf/
    +dHd9/2xudf92eHz/cHJ5/3Byef9zdXz/bG95/3N1fP9sbnX/bnF7/2dqdP9nanT/bG51/2xvef9sb3n/
    +amxz/2xudf9sbnX/dXd9/3N1fP9ucHf/bW9z/2xvef9maXP/am13/2xvef9sbnX/c3V8/3N1fP9zdXz/
    +c3V8/29xdf9vcXX/cHN9/2ptd/9wcnn/c3V8/3d6g/9sbnX/bnB3/29xdf9vcXX/bG51/2psc/9ucXv/
    +cHN9/2ptd/93eX//am13/2psc/9qbXf/bnF7/2xudf9ucXv/am13/3Bzff9ucXv/ZGdx/25xe/9nanH/
    +YGNs/2Rncf9qbXf/bG51/2RmbP9ucXv/bnF7/3Bzff91eIH/c3Z+/3R2fP9zdXz/c3V8/3Fzef9ucHf/
    +cHJ5/3Z4fP9wcnn/bnB4/29xeP9ydHz/cnR7/2xudv9wc3r/dXiB/3N1fP91d33/bnF7/29xdf91d33/
    +bnF6/3F0fv9zdXz/aGt1/25xe/9ucXv/am13/25wd/95fIX/cnR6/2xvef9rbnj/cnV8/3V3ff93eX//
    +bnB3/21vdv9wcnb/d3l9/3d5gP9tcHX/cnR7/3N1fP9sb3n/bG94/3R2ff9qbHP/eHl+/25xe/9tb3P/
    +dnh8/2Zpc/9qbXf/bG51/21vc/9sbnX/cHJ5/3V3ff9ucHf/bW9z/25wd/97fYP/cXN6/3FzfP9rbnf/
    +dHeA/25xev9qbXb/bG92/3N2f/9tb3b/cnR7/21wev9sb3n/bG95/21wdf9tb3b/bnB4/2xudf9rbXP/
    +bnB3/2lsdf9sbnj/dXd+/3J0e/97fYL/bG90/3ByeP9gY2z/bG51/2xudf9kZ3H/bG95/2xudv9sb3j/
    +bG95/2ptdv9wcnn/dHZ9/25weP9ucHj/bnB5/3N1fP9tb3b/cXN7/29ye/9ucHf/bG95/2ptd/9maXP/
    +bG95/3V3ff9wc33/dXiB/21vc/9ucXv/bG51/3N1fP9tb3P/bG51/3Bzff9qbXf/am13/25xe/9qbXf/
    +bG51/2xudf9wcnn/d3l//2Rncf9sb3n/bnF7/3V3ff9sbnX/dnh8/3V3ff9ucHf/bG51/2psc/9sb3n/
    +b3F1/25wd/9wc33/dnmC/2tud/9sb3j/bXB6/2hrdf9xc3r/a254/21wef9vcnz/cnR9/3R2fP9vcnz/
    +bnB3/25xe/91d33/b3F1/29xdf9zdXz/ZWhx/2Zpcv9wcnr/bW92/3d5gP9rbnj/cXR+/21wd/90dn3/
    +c3Z9/3J1ff91eIH/enyC/3Byef9zdn//c3V8/2xvef9vcnv/cnR7/21wev9sb3j/bnB3/3BzfP92eH7/
    +bXB6/3R2fP9rbXT/eHl9/25weP9ucHf/cnR7/3Fzev92eH3/bG94/3N1fP9ucXv/bG51/25wdf9vcXj/
    +b3F4/21vdP9sbnb/bW92/3R3gP9ucXv/bG52/2xudf9wcnn/Z2p0/2xudf9tb3P/bG51/3Bzff9zdXz/
    +dXh8/3Z5f/9ucHf/a254/25xe/9qbXf/b3J8/29yfP94eoD/bG95/25wd/9ucXv/bnF7/2ptd/9oa3T/
    +c3Z//3V4gf9wcnn/eXuB/25xe/9sb3n/bnB3/3V4gf9ucXv/d3l//25wd/92eHz/c3V8/2ptdP9zdXz/
    +am13/2Zobv9sbnX/bnB3/2ptd/9gY2z/cHN9/25xe/9vcnz/cHJ8/3J1fv9ydX7/cHN8/3Byef91d33/
    +b3F4/25weP90d37/cHJ5/3Byev9xc3v/c3V8/3J0e/9wc3v/cHN8/3N2f/9wcnn/d3qD/3N2f/9ucHf/
    +d3l//25xe/91d4D/dHeA/2ptd/9wc33/cHN9/25xe/9wcnn/en2G/3N2fv9vcnz/b3J6/29yfP92eH7/
    +dnh//3BzfP9ydHv/cnR5/3p8gv94e4T/cHJ4/3J1fv9ucXv/cHN8/3Bze/92eH7/am13/3h6gP9ucXv/
    +c3V8/3l7gf9sb3n/bnB3/3Byef9ucHf/b3F1/3Byef91d33/cHJ5/29xdf9ucHf/eXyG/25xe/9vcnv/
    +am13/3J0ev9vcXr/aGt1/2tudv9ydHz/a252/21vdv9tb3f/bW92/2xudf9rbXT/bG51/25xef9rbXT/
    +aWx2/2xvef9qbXf/amx0/3F0ev9tb3b/cnR6/2hrcf9sbnf/am13/3Byef9wc33/bG95/3Bzff9tb3X/
    +a252/2dqc/9fYWv/ZGZt/2xveP9qbXb/bG95/3F0e/91d3//b3F3/3J1ff9zdXz/bG95/3N1fP9wcnn/
    +bG51/3N1fP91d33/bnF7/3N1fP9qbHP/bnF7/2ptd/9zdXz/bG51/2xudf91d33/bnB3/3Byef9wcnn/
    +bG95/25wd/9ucHf/dnh8/4CChv9ucHf/dXd9/3N1fP93eX//bnB3/3Z4fP92eHz/bnB3/2xudf9sbnX/
    +bG51/2xudf9qbXf/bG95/3V4gP9nanT/bW95/3F0ff9vcnn/dXd9/3N1e/90dnz/c3V7/21vdv9sb3j/
    +Zmlz/2FkbP9maXP/ZGdx/2Zobv9iZW7/am13/2lsdv9rbnb/dHZ7/3Byef9zdXv/bG51/2xvef9qbXf/
    +bnF5/21wev9rbnf/b3J8/2xvef9nanH/bnF7/2xvef9oa3T/a253/25xef9tb3j/bG51/21vdv9tb3f/
    +cHN6/2lsdv9qbXf/ZGdw/3N1fP9nanT/Zmlz/2ptdv9ucHf/b3J8/21vdv9vcnz/bXB6/2hrdf9tb3f/
    +bG95/29yfP9qbHP/aGtz/2ttdP9zdX7/bnB5/21vdv9sbnX/b3J8/2hrdf9sbnX/bnB3/21vdv9xc3r/
    +dHZ8/3V3fv91d37/bnB3/2ptd/9vcnv/am13/25wd/90dnz/dXd+/2xudf9tb3b/a254/29xeP9nanL/
    +aWt1/2ptd/9sb3n/amx0/25xe/9qbHP/Y2Zv/2hrdf9ucXv/bG94/29yfP9nanH/b3F4/2tueP9oa3X/
    +cnR7/2ptd/9jZm//Zmlz/2ptd/9qbXf/YGNs/25xe/9qbXf/bW94/25xe/9ydX//cnV//3N2gP91eIL/
    +dXd//29xeP9xc3v/dHd//29ye/9tcHn/cnR6/21wev9ucHn/a253/21wev9rbnj/amxz/3V3ff9wcnn/
    +bG51/3V3ff9qbXf/b3J8/3J1fv9maXP/bnB3/21vc/9qbXf/Z2p0/3R2ff9sbnX/bW91/3Fzev9rbnj/
    +dHZ9/3F0ff9vcnz/dXd9/3F0fP90d3//dXiB/21vdv90d3//b3J7/3R3f/9wcnv/cXR9/2dqdP94eX3/
    +cHJ5/29xdf94eX3/amxz/21vc/9tb3P/am13/2xudf9ucHf/dXd9/2xvef9sbnX/am13/3d6g/9nanT/
    +a253/2VocP9rbnT/bG93/2RncP9laHD/bG93/2hqcP9pbHP/ZGdx/2hqcP9maXP/amx0/2lsc/9rbnf/
    +a210/2ttdP9tcHr/bXB5/2hqc/9ucXn/bW95/3Fzef9rbXT/cHJ5/2xvef9wcnn/cHN9/2xvef9ucXv/
    +bnF6/3Byd/9ucHf/bnB3/3Byef94eX3/c3V8/3Byev9ydHv/dXd9/3Byd/9ydXr/dHZ9/2xudv9wcnn/
    +bG51/2psc/9zdXz/eHl9/3V3ff91eIH/bnB3/3Byef9wcnn/dnh8/2xvef9wc33/d3qD/3N2f/9zdn//
    +c3V8/25wd/9ucHf/c3V8/3h5ff9/gYf/bnB3/3Z4fP9wcnn/d3l//25wd/93eoP/eXuB/25wd/9wcnn/
    +bG51/25wd/9qbHP/am13/2ptd/94e4X/Z2pz/25xef9ydHv/a254/3Bzff9rbnj/dHd+/3J0ff9tb3f/
    +cnR8/21vd/9qbHP/cHN9/3Bzff9sbnX/Zmlz/3Bzff9nanT/am13/21vef9tcHr/bXB6/2ptdf9tb3f/
    +b3F5/3Byev9sb3n/cXN6/3J0fP91d33/bG51/3N1fP9wc33/bG51/25wd/9xdHv/cnR6/25wd/9wcnr/
    +a252/29xef9sb3n/bnB5/2ttdv91eH//a253/2ptd/9rbnb/b3F4/29yfP9wcnn/bnB5/21vdv9rbnX/
    +cnR6/29xev9ydXz/b3F4/21vdv9ydHv/c3V9/2ptd/9vcXj/bW92/25wd/9tb3b/bW92/25wd/9xc3r/
    +cHN6/3R2fP93eX7/dXd//3Bzff9tcHr/dHZ8/25wd/9vcXj/b3F6/3R1fP9xc3r/cnR6/3Bzff9wc3z/
    +aWx0/2xvdv9tb3X/cHJ6/25wdv93eH3/b3F3/2ttdP9tb3f/c3V7/3R3fP90d37/b3F4/3Z3ff91d33/
    +cXN6/3Z4f/9xdH3/bXB6/3Byev9vcnz/cXR+/2hrdf9ydX//cXR9/2lsdv9sb3n/cXN8/25wd/9sb3j/
    +bnB6/21wef9nanT/am12/3N1fP9vcXn/c3V7/3N1ev9qbXf/a210/21vdv9vcXj/bnB3/29xdf9zdXz/
    +cHJ5/25wd/9wcnn/bG51/3N2f/90d4D/am13/21vc/9ucHf/b3F1/2xvef93eX//b3F4/2xudf9wc33/
    +bG94/3R2ff9xc3r/bW92/3V3fP90d33/dHZ9/3Z4fv9wcnb/b3F4/3Fzev9xc3r/c3V8/3N2f/9oa3H/
    +eHl9/3Byef9sb3n/d3qD/25xe/9wcnn/bnB3/25wd/9wcnn/cHN9/3d6g/9zdn//cHN9/3N2f/9/gYf/
    +cHN9/3N2f/9qbXf/cHJ2/3R2ff9ucHf/cHJ5/3N2f/9ucXv/b3F4/21wev9sb3n/bG95/29xeP9vcnb/
    +cHJ5/2xudv9tb3P/dXd7/3R2fP9sbnX/cXR9/25xe/9tcHr/b3F1/25wd/9nanT/Z2p0/2ptd/9qbXf/
    +bnB3/3Byef9vcXj/bG51/29xdf9ucHf/dXd9/3Byef9wcnn/cHJ5/3N1fP9ydHr/c3V6/3J0fP9tb3T/
    +c3V8/21vc/9sbnX/c3Z//3d6g/91eIH/eXuB/25xe/9zdn//dXiB/3t9g/9wcnn/dXiB/3l7gf93eoP/
    +d3qD/3d6g/9wc33/cHN9/25xe/91eIH/gYOK/2xvef91d33/cHN9/3l7gf9ucXv/e36H/3l7gf9zdXz/
    +c3Z//2xvef91eIH/cHJ5/3d6g/91eIH/foCG/25xeP9zdn//dnh//25wd/9xc3n/a253/3Z4fv9zdXz/
    +b3F4/3Z5gf91eIH/c3V+/3t9g/95e4H/c3Z//3N1fP93eoP/bnB3/3F0ff9wcnn/cnV+/3d6gv9ydX7/
    +cHN9/3d5f/95fIL/dXiB/3h6gP95e4H/foCG/3V3ff97fYP/e32D/3N2f/92eYL/eHqA/3d5gP9ydX7/
    +dHeA/2ttd/9ucXr/cHJ8/3Fzev9xc3v/eXuC/3J0e/9ucHj/b3F5/3R2fP9xc3r/dHZ8/21veP9sbnX/
    +aGt1/3N2f/9sb3n/cXN7/2lsdv9qbXT/cnR7/25xe/9rbnj/b3J7/2xueP9tb3f/bXB6/29xev9tcHj/
    +cXN6/3J0e/9zdXz/dHZ9/3BzfP9xc3r/aGt0/21wef9qbHT/a210/2hrdf9sbnf/bG52/25xev9tcHr/
    +bW94/2hqc/9ucHf/aGty/2hrdf9pbHP/b3F6/2psdf9oanP/am13/25xe/9sb3f/bW94/2dqdP9ucXn/
    +bXB3/3FzeP9vcnj/bnF7/2hrdf9sbnX/bnB4/3F0e/9laG//bnB4/2xvef9sbnX/bG51/3N1fP9sbnX/
    +bG95/25xe/9wcnn/bW9z/2xudf9zdXz/bnF7/25xe/9wcnn/a253/2tud/9tb3P/c3V8/29xdf9sbnX/
    +bG95/3Bzff9sbnX/bnB3/2psc/9zdn//eXuB/25wd/9ucHf/cHN9/25xe/9ucHf/eXuB/2xvef9qbXf/
    +c3Z//25xe/91d33/cHN9/2xvef92eHz/c3Z//3Byef91d33/b3F1/3Byef91d33/cHJ5/25xe/9ucXv/
    +Zmhu/3N1fP9qbXf/bG51/3V3ff9nanT/Z2p0/2psc/9qbHP/amxz/3Bzff93eX//am13/25wd/9qbXf/
    +eXuB/2ptd/9wc33/am13/2xudf9ucXv/Z2p0/2dqcf9qbXf/amxz/2psc/9iZW7/bG51/2dqdP9sbnX/
    +bG51/25xe/9qbXf/am13/3Bzff9zdXz/Zmlz/2xvef9ucXv/amxz/2xudf9sbnX/ZGdx/2Rncf9kZ3H/
    +YmVu/2Zpc/9oanP/bG53/2ptd/9vcXj/c3Z//3N2f/9wc33/bnF7/25xe/9zdn//b3J7/3Fze/9tcHr/
    +bW91/3Bzff9tb3P/amxz/3V3ff91d33/dXd9/3h5ff9ucHf/b3F1/25wd/92eHz/bnB3/3N2f/92eHz/
    +dXd9/3Byef9zdXz/bnB3/25wd/9ucHf/dXd9/3+CjP9wcnn/c3Z//25xe/93eX//bG95/3t9g/94eX3/
    +bnB3/3Bzff9qbXf/c3Z//2xvef9wc33/cHJ5/3t+h/9ucHf/cHN7/3R3gP9ucHf/dXiB/25xe/95fIb/
    +cnV+/29ye/91eIH/cHN9/25wd/9zdn//c3Z//25wd/9sbnX/cHJ5/2xvef9ucHf/bG51/3Byef91d33/
    +bnB3/29xdf9zdXz/c3V8/2xvef91d33/cHN9/3Bzff9qbXf/cHJ5/3N1fP9ucHf/cHJ5/3Byef9zdn//
    +c3Z//3N2f/9qbXf/bXB5/3N2f/9wc33/cnV+/3d6g/90d4D/c3V8/3N2f/96fIL/enyC/31/hf90d4D/
    +cnV+/29yfP95fIX/dHeA/3h6gP9ydX7/cnV+/3Z4fv9tcHn/am13/3R2fP9ucHf/b3F1/3J1fv9zdX7/
    +bG95/3J1fv90dnz/d3l9/3h5ff9xc3r/dHZ9/2xudf9wcnr/bnB3/21wev9rbnj/b3F5/3Bzev9zdX7/
    +dnmC/3J1f/9sb3n/dnh+/3Byev91eIH/b3J8/3R3f/9ucXv/b3F5/3F0fv91eIH/cXN5/3J1fv9wcnr/
    +cXR9/3J0e/90d4D/cXN7/3V3ff9wc3v/cHJ5/3N1ff92eH//am11/3N1ff9ydHz/bG51/2xudf91d33/
    +bnB3/3Byef9ucXv/c3Z//25wd/9sb3n/dnh8/25xe/9wcnn/c3V8/2xudf9nanT/bW9z/3Byef9vcXX/
    +b3F1/3Bzff91d33/bnB3/25xe/9qbXf/c3Z//3h5ff9sbnX/bG51/2ptd/9sb3n/am13/3N1fP9sbnX/
    +Zmlz/2xvef9qbXf/bG95/2dqdP9kZ3H/bnB3/2ptd/9maXP/Z2p0/2Rncf9maXP/Z2p0/2Zpc/9nanT/
    +ZGdx/1xfaP9kZ3H/ZGdx/2Rncf9ucHf/YmVu/2Jlbv9maG7/ZGdx/2psc/9nanT/bnB3/2Zobv9kZ3H/
    +Z2px/3d6g/9nanT/cHN9/2psc/9qbXf/dXd9/2xudf9nanH/bG95/2xudf9tb3P/Z2px/25wd/9ucHf/
    +bG95/25wd/9zdn//c3V8/3Bzff93eoP/eXuB/25xe/93eoP/d3qD/3Byef9wc33/cHN9/2xudf9vcXX/
    +c3V8/21vc/9sbnX/cHJ5/29xeP9tb3b/cHJ5/3V4gf91eIH/c3Z//3N2f/9ucXv/d3l//3Bye/90dnz/
    +cXN9/2xvef9zdn//bnF7/25wd/93eX//eXuB/3d5f/93eX//bG95/3Byef9vcXX/dnh8/25wd/9zdXz/
    +dnh8/3V3ff9zdXz/cHJ5/29xdf9sbnX/cHN9/3V3ff+Agob/bW9z/25xe/9sbnX/dXd9/21vc/93eX//
    +dnh8/21vc/9sbnX/Z2px/3Bzff9sb3n/cHJ5/25wd/93eX//bW92/29yfP9xc3v/aGt1/2xvef9kZ3H/
    +dXd9/2xvef9pbHP/cXR7/25xe/9ucHf/cHN9/3Z4fP9sbnX/amxz/25wd/9ucHf/bG51/2psc/9ucHf/
    +c3V8/2xudf9qbXf/c3V8/3V3ff9sb3n/c3V8/3Bzff91d33/bG51/3V3ff9zdXz/b3F1/3N1fP9ucHf/
    +c3V8/3N1fP9zdXz/Zmlz/2ptd/9ucHf/bG95/3Bzff93eX//bnF7/29xdf9sbnX/c3V8/3V3ff91d33/
    +bnB3/25wd/9ucHf/dXd9/25wd/92eHz/bnB3/2xvef91d33/bW9z/2xudf92eHz/bG51/2xvef9ucXv/
    +am13/2ptd/9ucXv/c3V8/3V3ff94eX3/c3V8/3d5f/9vcXX/cHJ5/25wd/9sb3n/am13/2ptd/9wcnn/
    +cHN9/3J1fv9wc33/am13/3R2fP9vcXX/cHJ5/2xudf9ydHz/bnB3/2xvef9vcnz/dnmC/25xe/9zdn//
    +bnF6/3N2fv9qbXf/dnh8/21vdv90dnz/b3F4/2tueP9ucXr/cHN9/2Vocv9tcHr/cnR8/2Jlbv9nanH/
    +bnF7/2ptd/9qbXf/amxz/2Zpc/9maG7/Zmhu/2dqdP9maG7/Z2p0/2xvef9maXP/ZGdx/2Rncf9qbXf/
    +Z2p0/2dqdP9ucXv/cHN9/2ptd/9sb3n/Z2p0/3Bzff92eHz/bG51/29xdf9ucHf/bnB3/3Byef97fYP/
    +c3Z//25xe/91eIH/c3Z//3V4gf9zdn//bG95/3N2f/9wc33/bnF7/3N1fP9tb3P/bnB3/25wd/9sb3n/
    +bnF7/2xvef9nanT/bnF7/2xvef9sbnX/dXd9/2Rncf9maG7/ZGdx/2Rncf9maG7/am13/25wd/9nanH/
    +Z2p0/2ptd/95e4H/bG95/3N1fP9sbnX/amxz/3V3ff9sbnX/bG51/3Bzff9ucHf/bnB3/2ptd/9ucHf/
    +b3F1/29xdf9ucHf/c3V8/25wd/9tb3P/dXd9/3N1fP9nanT/dXd9/3N1fP9qbXf/am13/2psc/9nanT/
    +amxz/3Byef9nanH/Zmhv/2tueP9nanT/ZWhy/2ttdf9qbXf/am13/2ptd/9nanT/Z2px/3Bzff9sb3j/
    +b3J8/2xvef9sbnX/c3V8/2ptd/9nanT/bnF7/3N1fP91d33/dXd9/2xudf9ucXv/bG51/2xvef9qbXf/
    +bnF7/25xe/91d33/dnh8/3Byef9sbnX/bW9z/3N1fP93eX//gIKG/21vc/9sb3n/bG95/3h5ff9sbnX/
    +d3qD/3V3ff9qbXf/am13/2Zpc/9zdXz/cHJ5/3N2f/9wc33/en2G/21vd/9vcnz/cnV8/2hqdP9nanT/
    +ZGdx/3Byef9ucXv/aWxz/3F0fv9vcnz/bG95/3Bzff9zdn//bW9z/2xudf9zdXz/cHJ5/25wd/9qbXf/
    +cHN9/3l7gf9ucHf/bnB3/3l7gf97fof/c3Z//3t+h/97fYP/e32D/3N2f/95e4H/eXyG/3N2f/95fIb/
    +eXuB/36Ahv97fYP/foCG/3V3ff91d33/cHN9/3Bzff91eIH/eXyG/25xe/9qbXf/bnB3/3N2f/93eX//
    +dXiB/2ptd/9sb3n/bG95/3l7gf9wc33/eXuB/3Bzff9ucXv/dXd9/29xdf9sbnX/dnh8/2xudf9wcnn/
    +cHN9/25xe/9wc33/c3Z//3V3ff91eIH/eXuB/3V4gf93eX//bnB3/25xe/9ucHf/bnB3/2xudf9nanH/
    +bG51/3N1fP9wc33/c3V8/2psc/9zdXz/bG51/2xudf9qbXf/cHN9/3Byef9nanT/bG95/3l7gf9sbnX/
    +bW9z/2xudf9sb3n/Zmlz/3Bzff9qbHP/cHN9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/bG95/2xvef9nanT/
    +bnF7/3N2f/9wcnn/bnF7/3Bzff9ucXv/cHJ5/3Byef91eIH/cHJ5/3N2f/91d33/cHN9/2xvef9sb3n/
    +dXiB/3Byef9wcnn/c3Z//3Bzff9ucHf/bG51/2xudf91d33/c3V8/2psc/9qbHP/am13/2xudf9nanH/
    +c3V8/2psc/9maXP/bG95/2xudf9wc33/cHJ5/2xudf9wcnn/c3V8/2xudf9wc33/amxz/2xvef9sb3n/
    +bG51/3N1fP9wcnn/Z2p0/3Bzff9zdXz/bnB3/3d5f/9qbXf/bnB3/25wd/9sbnX/bG51/3V3ff94eX3/
    +b3F1/25wd/9zdXz/f4GH/2xvef9zdXz/bG95/2xudf92eHz/am13/2ptd/9ucXv/bG95/2psc/9maXP/
    +bG51/2dqcf9kZ3H/Zmlz/2xvef9maXP/Z2p0/25xe/9zdXz/Z2p0/3N1fP9ucXv/am13/2ptd/9vcXX/
    +b3F1/2xudf9zdXz/bG51/2tud/9ydHv/bXB6/29ye/9wc3z/d3qD/3l8hv95fIb/d3qD/3Bzff97fYP/
    +dHeA/3h7gv95e4H/dHZ9/3t9g/91eIH/c3V8/3d6g/97fYP/foCG/36Biv9zdn//e32D/3V4gf93eoP/
    +cHN9/3V4gf9zdn//dXiB/3N2f/9wc33/bnB3/25wd/9zdXz/dnh8/4CChv9sb3n/bnB3/25wd/92eHz/
    +am13/3N2f/9zdXz/amxz/2ptd/9gY2z/bnF7/2dqdP9ucXv/cHN9/3V4gf9rbXX/bnF7/3R3gP9ydHv/
    +c3Z//2ptd/93eX//cnV+/25weP9ydHz/bXB5/2dqcv9sb3n/bnF7/2psc/9maXP/bG95/2xvef9sb3n/
    +am13/25wd/91d33/bG95/2xvef91eIH/d3qD/3Bzff93eX//dXiB/3Bzff9ucHf/c3V8/3N1fP9sbnX/
    +bG95/2xvef9wc33/cHN9/3N1fP9qbHP/bW9z/2xudf9sbnX/c3V8/3d5f/9ucHf/am13/2xvef9zdn//
    +eXuB/3d6g/9ucXv/bnF7/3Byef95fIb/c3Z//3l8hv9wc33/dXiB/3l8hv91eIH/dXd9/3t+h/9ucXv/
    +dXiB/3V4gf9wc33/bnF7/3N1fP91d33/d3qD/3d5f/9wcnn/dXd9/2dqdP9nanT/amxz/2Zpc/9iZW7/
    +YmVu/2xudf9qbXf/cHN9/25xe/9nanT/cHN9/2ptd/9sbnX/am13/3N1fP9ucHf/Z2p0/25xe/93eoP/
    +bG51/2ptd/9qbXf/bG95/2ptd/91d33/Z2p0/3Bzff9sb3n/cHJ5/3Byef91d33/Zmhu/3V3ff9zdXz/
    +am13/25xe/9zdn//dXiB/3Bzff9ucHf/cHN9/25xe/9sb3n/dXd9/25wd/9wcnn/dnh8/3Byef9ucHf/
    +bG95/3d5f/9wc33/cHJ5/25xe/91eIH/bnF7/3N1fP9sb3n/eXuB/3l7gf9wc33/dXd9/3l7gf93eX//
    +dXiB/36Ahv9zdXz/bnF7/3N2f/9wc33/eXyG/3l8hv92eHz/eXuB/35/g/95e4H/fX6B/3Bzff91eIH/
    +dXiB/3Bzff93eoP/c3Z//25wd/93eoP/d3qD/3Bzff95e4H/am13/2xvef9ucHf/bG95/2xvef9zdn//
    +dXd9/2xvef9ucHf/c3V8/3+Bh/9sbnX/dXd9/2xudf9qbXf/eHl9/25wd/9sb3n/dXiB/3V4gf9zdXz/
    +bnB3/2xvef9ucHf/cHJ5/25wd/9zdn//c3Z//3N1fP9+gIb/e36H/3V3ff9+f4P/fX6B/3Z4fP91eIH/
    +c3Z//2xudf9sbnX/cHN9/2xvef9rbnj/dHZ8/3R2fP9ydHr/enyC/36Ahv97fYP/eXuB/3V4gf9wc33/
    +enyD/3N2fv90dn7/cXN6/21vdv91d33/bG51/2dqdP9wcnn/cHN9/3Z4fP93eX//bnB3/3N2f/9sb3n/
    +c3V8/2xvef9ucXv/bnB3/3N2f/9zdn//cHN9/25wd/9ucHf/c3Z//3l7gf+Bg4r/bnB3/25xe/9wc33/
    +eXuB/3Bzff93eoP/d3qD/3Byef9zdn//Zmlz/3V3ff9wc33/dXd9/3N2f/95fIX/bG51/29xeP90d37/
    +am13/3Bzff9sb3n/eHl9/3N1e/9rbnf/cXN7/25xe/9sb3n/dXiB/3V4gf9ucXv/bG95/3N2f/9ucXv/
    +c3V8/2ptd/9sb3n/dXd9/25wd/9ucXv/dXiB/3l8hv9wc33/dXd9/3Bzff9zdXz/bnB3/3V3ff9wcnn/
    +bG51/25wd/9ucHf/cHN9/3Bzff91d33/bW9z/2xudf9nanT/am13/25xe/9ucHf/Z2p0/2Rncf9qbHP/
    +ZGdx/2dqdP9maG7/YmVu/2dqcf9maXP/cHJ5/2dqcf9sb3n/Z2px/2psc/9sb3n/amxz/2dqdP9zdXz/
    +Z2p0/25xe/9zdXz/bG95/2xudf9ucHf/c3V8/3V3ff93eX//c3V8/3Z4fP9ucHf/cHJ5/3Byef9vcXX/
    +am13/25wd/9ucHf/cHJ5/3Z4fP9wcnn/bG51/3N1fP9ucHf/bnB3/25wd/9zdn//bnF7/2psc/9ucXv/
    +eXuB/29xdf9ucXv/bnB3/2xvef9qbXf/d3l//2xvef9zdn//dXiB/3Bzff9sb3n/cHN9/2Zpc/9zdn//
    +dXiB/2ptd/9wc33/dXiB/3N2f/9zdn//cHN9/3V4gf9zdn//c3Z//3t9g/95e4H/e32D/3t9g/95e4H/
    +c3V8/3N1fP95e4H/cHJ5/2xvef9ucHf/cHN9/25wd/9sb3n/amxz/3N2f/9zdn//b3F1/25wd/9wcnn/
    +bG95/25wd/9wc33/bG51/2psc/9ucXv/am13/3Bzff9ucXv/bG51/25wd/9zdXz/bnF7/3d6g/9zdXz/
    +c3Z//3V4gf91eIH/e32D/3V4gf9zdXz/e32D/3d6g/9wc33/e36H/3Z4fP91eIH/dXd9/3V4gf9zdXz/
    +eXuB/3t+h/9wc33/cHN9/3N2f/+Bg4r/bnB3/3V3ff9ucHf/bG51/3h5ff9vcXX/bG95/3V3ff91d33/
    +bG51/2xudf9sbnX/Z2p0/2psc/9maXP/bG95/2dqcf9maXP/cHN9/3d5f/9nanT/cHN9/3N1fP9qbXf/
    +bG51/2xudf9zdXz/c3V8/3l7gf9zdn//cHJ5/3Z4f/9wc3r/aGt1/2ptd/9wc33/amxz/2ptd/9qbXf/
    +am13/3N1fP9rbnX/cHN8/3Fzev9wcnn/dXd9/3Byef9ucHf/c3V8/3Bzff9zdXz/dXd9/2xvef9zdXz/
    +bnB3/3N1fP9ucHf/cHJ5/25wd/9zdn//dXiB/3N2f/9sb3n/bnF7/3N2f/91eIH/g4WM/3V3ff91d33/
    +e32D/3+Bh/97fYP/f4GH/4WHjf97fYP/eXyG/3N2f/9+gYr/foCG/36Ahv99foH/gIKJ/3N1ev9zdX3/
    +dXd+/2lrdf9ucXv/am13/3N1fP91d33/a254/3N1fP9xc3n/amxz/3Bzff9wc33/amxz/2Rncf9qbXf/
    +bG51/2ptd/9qbHP/bnB3/3V3ff9sbnX/amxz/3V3ff93eX//cHJ5/3V3ff9ucXv/cHN9/2xudf9qbXf/
    +bG95/2dqdP9sb3n/bG51/25xe/9wc33/cHN9/2dqdP9qbHP/am13/25wd/91d33/dXd9/3N1fP9ucHf/
    +bG95/3Bzff9zdn//bnF7/2xvef9sb3n/bG95/3d5f/9sb3n/dXd9/25xe/9wc33/c3Z//29xdf9ucHf/
    +dnh8/2psc/91d33/dXd9/25wd/9qbXf/bnB3/2xvef9wc33/bnF7/2dqdP9qbXf/Zmhu/2ptd/9sb3n/
    +bG51/2dqdP9qbXf/bW9z/25wd/92eHz/cHJ5/2Zpc/9wc33/bG95/2xudf9nanT/bnF7/25wd/9qbHP/
    +bnB3/3d5f/9tb3P/cHJ5/25wd/9ucHf/am13/3V3ff9qbXf/cHN9/3Bzff9ucHf/bnB3/3Bzff9maXP/
    +c3Z//3N1fP9sbnX/cHJ5/3N2f/9wcnn/bnB3/25wd/9wcnn/cHJ5/3Byef91d33/bnB3/25wd/92eHz/
    +c3V8/2xudf9qbXf/cHN9/2xudf9sbnX/bnB3/3Byef9qbXf/Z2p0/2Zpc/9ucXv/am13/2Zpc/9maXP/
    +Zmlz/2Jlbv9nanH/Z2p0/2Rncf9maXP/bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/
    +bW9z/2ptd/9ucXv/am13/25xe/9sb3n/bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/
    +bnB3/3Byef91d33/bW9z/21vc/9wcnn/f4GH/21vc/9wc33/am13/25wd/91d33/bG95/2xudf9zdXz/
    +bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/bnB3/3d5f/9wcnn/bnB3/3h5ff93eX//bG51/3V3ff93eX//
    +bnB3/25wd/9ucHf/bnF7/3Bzff93eoP/eXyG/3N2f/97fYP/cnV//21wev9wc33/c3Z//2xvef9ucXv/
    +bnB3/25wd/91d33/cHJ3/3V4gP91eIH/c3Z//3d6g/9zdn//bG95/3N2f/9zdn//dXiB/3d6g/9wc33/
    +cHN9/3Bzff9ucXv/bnF7/3Bzff9wc33/dXiB/3N2f/9zdn//bnB3/21vc/9zdXz/dXd9/35/g/9ucHf/
    +bG95/3V4gf93eX//bnF7/3d5f/93eoP/c3Z//25xe/9qbHP/cHN9/3Byef91d33/c3V8/3l7gf9sbnb/
    +cXR8/3V4gv9wcnz/eXyG/3V3ff99foH/fH6F/3J1f/92eID/cXN6/2hrdf9wc33/dXd9/21vc/9nanH/
    +cHJ5/3l7gf93eX//dXd9/3V4gf95e4H/c3V8/25xe/91eIH/eXyG/3N2f/95fIb/c3Z//3d6g/9wc33/
    +cHN9/25xe/9sb3n/bG95/2xvef9zdn//c3Z//3d5f/9vcXX/bnB3/25wd/9wcnn/dXd9/3N1fP9ucXv/
    +b3F1/2xvef9wc33/d3l//3N2f/9wcnn/cHJ5/2xvef91d33/bnF7/3d5f/9wcnn/d3qD/3d6g/9zdn//
    +c3Z//35/g/91d33/fX6B/31+gf91eIH/dXiB/3l7gf9+gIb/f4GH/36Ahv97fYP/fX6B/3d5f/95e4H/
    +foCG/3d5f/93eX//dnh8/3N2f/91eIH/foCG/3t9g/9ucXv/d3qD/3N2f/9zdn//cHJ5/3V4gf9zdn//
    +cHN9/3V4gf95fIb/cHN9/25xe/9sb3n/bnF7/2ptd/92eHz/Z2p0/3Byef9ucXv/bG95/2xudf9zdXz/
    +amxz/3V3ff9zdXz/am13/25xe/91eIH/c3Z//25xe/9ucXv/cHJ5/25xe/9ucXv/dXd9/2xvef9sb3n/
    +c3V8/25wd/9sbnX/bG51/3Bzff9sbnX/bnB3/2psc/9wcnn/bW9z/2ptd/9nanT/cHN9/25xe/9nanT/
    +ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/
    +dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/
    +bnB3/2xudf9zdXz/d3l//2psc/9qbXf/cHJ5/3+Bh/9sbnX/bnF7/2ptd/9vcXX/dnh8/3Byef9vcXX/
    +dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/bG51/2xudf9wc33/bG51/21vc/94eX3/d3l//21vc/9zdXz/
    +c3V8/2ptd/9sbnX/bG51/25wd/9wcnn/d3l//3N2f/9ucHf/c3V7/3N1fP9vcXj/bG95/3N2f/9ucXv/
    +c3Z//2xvef9ucXv/c3Z//21wev92eYD/eHqB/3V3gP97fof/c3Z//3N2f/97fYP/eXuB/3d6g/97fYP/
    +cHN9/3V4gf95e4H/cHN9/3V4gf91eIH/c3V8/3d6g/95e4H/dXiB/25wd/9wcnn/cHN9/3Bzff97fYP/
    +b3F1/25wd/93eX//c3Z//25xe/93eX//dXiB/25xe/9ucXv/am13/3Bzff9ucXv/dXiB/3Bzff94e4X/
    +b3F4/25xev91d33/aGt0/2xvef9sbnX/c3V8/3N1fP9tcHr/dXd9/3J0ff9wcnn/d3l//3V3ff9sb3n/
    +am13/3Bzff9ucHf/bnF7/2xvef9ucXv/d3l//3Byef9sb3n/c3Z//3l8hv9wc33/eXyG/2xvef9wc33/
    +bG95/3Bzff9ucXv/bG51/2xvef9sbnX/c3V8/3N1fP93eX//b3F1/29xdf9sbnX/bG95/3V3ff9zdXz/
    +am13/2psc/9sbnX/bG95/25xe/9qbXf/Z2p0/2psc/9nanT/dXd9/2ptd/9zdXz/bG51/2xvef9qbXf/
    +bG51/2xudf9zdXz/Z2p0/25xe/9qbXf/amxz/2Zpc/9qbXf/am13/25xe/9sb3n/am13/25xe/9sb3n/
    +bG95/3Bzff9sbnX/bG51/2xudf9sbnX/bG95/3Bzff9sb3n/amxz/3Bzff9sbnX/bG51/2psc/9wc33/
    +cHJ5/25wd/9ucXv/d3qD/3Byef91eIH/bG95/25xe/9qbXf/dXd9/2xvef9wc33/cHJ5/3N1fP9ucXv/
    +cHN9/2xvef91eIH/dXiB/2psc/9sbnX/c3V8/2xvef9ucHf/cHJ5/25wd/9wcnn/bnB3/3V3ff9wcnn/
    +bnF7/3N1fP9zdXz/am13/2xudf9wc33/am13/2psc/9maXP/bnF7/21vc/9ucHf/bnB3/3V3ff9wcnn/
    +bG51/2psc/9ucHf/bG95/3Bzff91d33/bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn//
    +bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/
    +bnB3/2xvef9sb3n/dXd9/3l8hv9ucHf/bnB3/3N2f/+BhI3/c3V8/3N2f/9sb3n/c3V8/3l7gf91eIH/
    +cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/cHJ5/25xe/9ucHf/d3qD/3N2f/9wc33/e36H/36Biv9zdn//
    +eXyG/3l7gf9wc33/c3Z//25xe/9qbXf/bW9z/3V3ff9zdXz/bnB4/3N1fP9xc3j/bnB2/25wd/91d33/
    +cHJ5/25xe/9ucHf/bnF7/25xe/9tb3f/cXR9/3N1fP9vcXn/d3l//3N1fP9qbHP/eHl9/3Z4fP92eHz/
    +dXd9/2xudf9ucXv/cHN9/2xudf9ucXv/bG95/2xudf9ucXv/dXd9/2xudf9ucHf/b3F1/3N1fP9wcnn/
    +e32D/25wd/9tb3P/c3V8/3N1fP9ucHf/dXd9/3V3ff9wcnn/cHJ5/2psc/9sbnX/bG95/3Bzff9wc33/
    +dXd9/2xudf9tcHr/c3V8/2xvef9zdXz/b3F1/3Byef90dnz/bnB3/3J0ev9wc3v/bG95/3V4gf9zdn//
    +bG95/2xvef9ucXv/c3Z//25xe/9nanT/cHJ5/3d5f/9vcXX/Z2px/3V3ff94eX3/bnB3/3l7gf9sbnX/
    +bG51/21vc/9zdXz/bnF7/25wd/9ucHf/bG95/3Byef9wcnn/dXd9/25wd/9vcXX/b3F1/25wd/91d33/
    +bnF7/25xe/9sbnX/am13/25xe/9wc33/bG95/2dqdP9sbnX/amxz/3Z4fP9ucHf/bnF7/25wd/9wc33/
    +bnB3/25wd/9vcXX/dnh8/25wd/92eHz/cHJ5/21vc/9ucHf/bnB3/3Byef9zdn//dXiB/3N2f/93eoP/
    +cHN9/3Bzff9wc33/bG95/2xudf9sbnX/bG51/25wd/9wc33/bnF7/2Zpc/9sb3n/amxz/2dqdP9kZ3H/
    +bG95/2ptd/9maXP/bnB3/3V3ff9sbnX/bG95/2xudf9ucXv/Z2p0/3N1fP9nanT/bG95/2xvef9ucXv/
    +am13/2xvef9nanH/dXd9/3Byef9maXP/am13/25xe/9ucHf/am13/2xudf9tb3P/bG95/2psc/9ucXv/
    +bnF7/2ptd/9wc33/cHN9/2Zpc/9sbnX/cHN9/2ptd/9qbXf/Zmlz/2ptd/9sbnX/Z2p0/2ptd/91d33/
    +bnF7/21vc/9nanH/bG51/2dqdP9qbXf/bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/
    +am13/2psc/9sb3n/bG51/2xvef9wc33/am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/
    +c3Z//25wd/9qbXf/Z2p0/3Bzff95fIb/cHJ5/3N1fP9zdn//g4WM/3N1fP9wc33/am13/25wd/9zdXz/
    +cHJ5/2xudf94eX3/cHJ5/2xudf9qbXf/am13/2xudf9sbnX/am13/3N1fP9ucXv/b3F1/3d5f/91d33/
    +am13/3N1fP9wc33/Z2p0/2xvef9sbnX/bnB3/2ptd/94eX3/c3Z//25xe/92eYP/c3V8/21vdv9ucHf/
    +cHN9/2xvef9sbnX/bG51/2xvef9rbnj/bXB6/3J1fv9ydX7/dHeA/3d6g/91eIH/cHN9/3t+h/97fYP/
    +e36H/3l8hv9wc33/eXuB/3d6g/9ucHf/cHN9/25xe/9wcnn/dXiB/3d6g/9wc33/bnB3/25wd/9wc33/
    +cHN9/3t9g/9sb3n/bW9z/3V3ff91d33/cHJ5/3l7gf94eX3/cHJ5/25xe/9qbXf/bnB3/25wd/91eIH/
    +d3qD/3p8gv9xc3v/cHN9/3R3fv9ucHf/bnF7/25wd/9zdn//c3Z//25xe/9zdXv/bnF7/25wd/9zdn//
    +dXd9/25wd/9qbHP/bG51/3N2f/9sb3n/am13/2xvef93eX//bnB3/2ptd/9zdn//eXuB/3Byef95fIb/
    +bnF7/25xe/9wcnn/c3Z//3Bzff9ucHf/bnB3/3Bzff9wcnn/cHJ5/3V4gf9ucXv/bnB3/29xdf9ucXv/
    +dXd9/3N2f/9zdn//bnB3/2xvef9zdXz/dnh8/3V3ff9ucHf/cHJ5/25wd/92eHz/b3F1/3Byef9sbnX/
    +am13/2ptd/9sbnX/am13/3N1fP9nanT/cHJ5/2psc/9nanT/Z2p0/2dqdP9qbXf/bG95/25xe/9qbHP/
    +am13/2ptd/9nanT/Z2p0/2Zobv9kZ3H/Z2p0/2xudf9qbXf/cHN9/3N1fP9sbnX/bnB3/2xudf9ucHf/
    +Z2p0/3N2f/91eIH/bnB3/3Byef93eX//bnB3/3Byef9sbnX/cHJ5/2ptd/93eX//bG95/2xvef91eIH/
    +c3Z//29xdf9wcnn/amxz/3V3ff9ucXv/amxz/25wd/9ucXv/am13/3Byef9tb3P/bG51/2xvef9qbHP/
    +bnF7/25xe/9sbnX/dXd9/3Bzff9nanT/bG51/25xe/9sbnX/amxz/2Rncf9nanT/Z2p0/2Zpc/9maXP/
    +dXd9/25xe/9qbHP/YmVu/2xudf9qbXf/bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/
    +cHJ5/25xe/9wcnn/d3l//29xdf91eIH/dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/
    +cHN9/3V4gf9ucXv/bG95/2ptd/9wc33/d3l//2xudf9ucHf/c3V8/35/g/9ucHf/bnB3/2dqdP9sbnX/
    +cHJ5/25xe/9sbnX/cHN9/3Byef9tb3P/bG95/2xudf9vcXX/bnB3/2xvef9zdn//bnF7/2xvef95fIb/
    +eXuB/25xe/95e4H/eXuB/3N1fP91eIH/d3qD/3N2f/9wc33/e32D/3N2f/9tcHn/d3qD/3N1ff9tcHr/
    +cHN9/3d6g/9zdn//bG95/25wd/9ucHf/c3V8/3Byev9xdH7/dnmC/3R3gP97fof/eXuB/25xe/95fIb/
    +d3l//3l7gf95e4H/bnB3/3d5f/93eoP/c3V8/3l7gf93eoP/c3Z//3l8hv93eoP/dXiB/3N1fP9zdXz/
    +c3Z//3V4gf95fIb/cHN9/2xvef91d33/dXd9/3Byef93eX//eHl9/3Byef9ucHf/Z2p0/2xvef9ucXv/
    +dXd9/3Z4fP91d33/a211/2ttdv9zdXv/a210/25xe/9tb3P/bnF7/25xe/9tb3f/cXR9/3J0ff9sb3n/
    +c3Z//3V3ff9ucXv/am13/25xe/9sb3n/amxz/2Zpc/9sb3n/dXd9/2ptd/9kZ3H/bG95/3Byef9nanH/
    +c3V8/2Zobv9sbnX/bG51/2ptd/9nanT/ZGdx/2Zpc/9maXP/ZGdx/2Zpc/9wcnn/Z2p0/2Jlbv9maXP/
    +Z2p0/3Bzff9sb3n/bnF7/2psc/9qbXf/bnF7/3V3ff9wc33/am13/25wd/9qbHP/dnh8/25wd/9wcnn/
    +bnF7/3Bzff9zdXz/cHN9/3N1fP95e4H/bnB3/3V3ff9ucXv/bG95/2xvef9ucXv/bG51/25wd/91d33/
    +bnB3/25xe/9ucXv/am13/25xe/9sbnX/Z2p0/2xudf9nanT/Z2p0/2dqdP9sb3n/YmVu/2dqcf9nanH/
    +ZGdx/2Jlbv9ucXv/Z2p0/2Zpc/9sbnX/c3V8/2xudf9sb3n/bG51/2xvef9kZ3H/c3V8/2xudf9sb3n/
    +c3Z//2xvef9vcXX/bnB3/2psc/91d33/bnB3/2xudf9qbXf/cHJ5/2ptd/9wc33/bG51/2xudf9ucHf/
    +bG51/25xe/9ucXv/am13/3N1fP9wc33/Zmlz/2dqcf9qbXf/Z2p0/2psc/9maXP/am13/2ptd/9sbnX/
    +bG51/3Z4fP9sbnX/bnB3/2dqdP9ucHf/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn//
    +am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/
    +c3V8/2psc/9wcnn/am13/2dqdP9qbHP/bnB3/3d5f/9tb3P/bG51/3V3ff9+f4P/bnB3/3Byef9ucHf/
    +b3F1/3V3ff9wc33/bG95/3Bzff9zdn//cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/3l7gf95e4H/
    +g4WM/36Ahv97fYP/foCG/36Ahv9zdn//dXiB/3V4gf9wcnn/bnB3/3h5ff91d33/a254/3x+hf9ydX7/
    +b3J6/3R3gP95e4H/cHN9/2xvef9vcXX/bnF7/3N2f/9tcHr/b3F4/3Fzev9sbnX/dnh8/3V3ff9nanT/
    +dXd9/25xe/9zdXz/bnF7/2dqdP9wc33/cHN9/2xudf9sb3n/amxz/2dqcf9nanT/Z2p0/2ptd/9qbHP/
    +Z2px/2xvef9nanT/c3Z//2Zpc/9kZ3H/Z2p0/2xvef9qbHP/cHJ5/3Byef9maXP/bG51/2dqdP9qbHP/
    +am13/3Bzff9wc33/dnh//2ttdf9qbXX/cXN6/2ptd/9ucXv/Z2px/2ptd/9rbXf/bnF4/3J1fv91eID/
    +bnF6/3l7gf91eIH/bnB3/2Rncf9sb3n/cHJ5/29xdf9qbHP/cHJ5/3Z4fP9nanT/Z2p0/2ptd/91d33/
    +b3F1/3d5f/9tb3P/bG51/2xvef9wcnn/bnB3/2ptd/9sb3n/am13/2ptd/9nanT/cHJ5/2dqdP9nanT/
    +Z2p0/25xe/91d33/bG95/2xvef9nanH/bG51/2xvef9zdXz/bnF7/2psc/9qbXf/Zmlz/3Bzff9qbXf/
    +am13/2xvef9nanT/Z2px/2xudf9nanH/bG95/2dqdP91d33/bG51/2Zpc/9maXP/am13/2Zpc/9qbXf/
    +cHJ5/2dqdP9sb3n/cHN9/2dqdP9qbXf/Z2px/2dqdP9qbXf/Zmlz/2dqdP9nanT/am13/2Rncf9qbHP/
    +amxz/2psc/9kZ3H/cHN9/2ptd/9qbHP/am13/3Byef9qbHP/am13/2psc/9maXP/YGNs/25xe/9nanH/
    +am13/3Bzff9sbnX/am13/2psc/9nanT/bnF7/2ptd/9zdn//c3Z//3l8hv93eX//fn+D/3N2f/9zdn//
    +eXyG/3V3ff93eoP/d3qD/25xe/95e4H/c3Z//2ptd/9ucHf/dXiB/3N2f/9wc33/bG95/25xe/9sb3n/
    +bnB3/3Byef97fYP/c3Z//25xe/9nanT/bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/
    +bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/
    +cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/bG51/25xe/91d33/bW9z/2xudf9wcnn/fX6B/2xvef9qbXf/
    +Z2p0/2dqdP9ucXv/bnF7/2ptd/9sb3n/bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9qbXf/
    +Z2p0/3Byef9wcnn/ZGdx/25wd/9sb3n/Zmhu/2xvef9maXP/cHJ5/21vc/91d33/dXd9/2xudf93eYD/
    +b3J5/2ptd/9sb3n/bnF7/2xvef9tb3P/bW9z/25wd/9zdXz/bnB3/3Bze/9zdn3/b3F1/3V3ff91d33/
    +Z2px/3d5f/9ucXv/dnh8/3Byef9ucHf/dnh8/3N1fP9sb3n/bnF7/2xvef9qbHP/bnF7/25xe/9sbnX/
    +b3F1/25wd/9zdn//bnB3/3t9g/9zdXz/bnB3/3V3ff9zdn//bnF7/3V4gf91d33/cHN9/25wd/9ucHf/
    +b3F1/2xudf9wcnn/dXd9/3h5ff9ucHf/bnF6/3V2fP9tb3T/cHN9/25wd/9wc33/cHJ5/29xeP9xdHz/
    +cnR6/2xudf9zdXz/bnF7/2ptd/9kZ3H/bG95/25xe/9ucHf/bG95/3Bzff95e4H/bnF7/25wd/9sb3n/
    +dnh8/2xudf93eX//bG51/2xudf9qbXf/am13/2xudf9maXP/am13/2ptd/9qbXf/am13/3N1fP9qbXf/
    +Zmlz/2psc/91d33/dnh8/3N1fP91d33/bG51/2dqcf9ucXv/cHN9/3Byef9sbnX/bnB3/2ptd/91d33/
    +bnB3/3V3ff9sb3n/cHN9/25wd/9ucHf/am13/25wd/9ucHf/d3l//29xdf9sbnX/bG51/2ptd/9wc33/
    +cHN9/3Bzff9sb3n/bG51/3Bzff9qbXf/bG95/2xudf9nanT/bG95/2xudf9nanH/Z2p0/2ptd/9nanT/
    +Z2p0/2dqdP9sbnX/Z2p0/25xe/9qbXf/amxz/3Bzff93eX//bnB3/3Byef9sb3n/c3Z//2ptd/9zdn//
    +cHJ5/3Bzff97fYP/c3Z//3d6g/9zdn//dXd9/3d6g/9zdn//bnB3/3Byef9ucHf/cHJ5/3N1fP9ucHf/
    +b3F1/3N1fP9tb3P/cHJ5/3N1fP9sbnX/bnF7/3N1fP9qbXf/bnB3/3V3ff9zdXz/c3V8/25wd/9vcXX/
    +cHJ5/2xudf9qbXf/c3V8/25wd/9ucHf/Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/
    +cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/
    +bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/bG51/2psc/9wcnn/dnh8/21vc/9sbnX/cHJ5/3l8hv9ucHf/
    +dXd9/25wd/9sb3n/dXd9/3V3ff9sb3n/bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/
    +d3qD/3V4gf93eoP/d3qD/3V4gf93eoP/eXuB/3Byef91eIH/c3Z//3Byef9vcXX/eXuB/3Z4fP9tb3b/
    +d3qD/3N1fP9ucHf/bnF7/3N1fP9zdXz/b3F1/29xdf9vcXX/cHJ5/25wd/9tb3j/b3J5/21vc/91d33/
    +dXd9/2dqdP91eIH/bnF7/3N1fP9nanT/Zmlz/25wd/9qbXf/Z2p0/2dqdP9maXP/ZGZs/2Zobv9nanT/
    +Zmhu/2Rncf9maG7/Zmlz/2Rncf9wc33/Zmlz/2Rncf9sb3n/bG95/2psc/91d33/cHN9/25xe/9qbXf/
    +am13/2psc/9sbnX/bG95/3V3ff9ydHz/bG5z/21vdP9wc3z/amx0/2xvef9qbXf/am13/2ptd/9rbXT/
    +a252/21wef9sbnX/dnh8/3Byef9ucHf/amxz/25wd/9ucXv/bnB3/2xudf9ucHf/c3V8/2Zpc/9nanH/
    +bG51/3N1fP9ucHf/d3l//2xudf9vcXX/bG51/2xvef9wc33/bnF7/3l7gf93eoP/cHN9/25xe/94eX3/
    +bnB3/2xudf9qbHP/dXd9/3Z4fP91d33/eHl9/25wd/9vcXX/c3V8/3Byef9zdXz/bnB3/25wd/9sbnX/
    +eHl9/29xdf91d33/bG95/2ptd/9qbXf/bG51/2dqdP9sb3n/ZGdx/3d5f/9qbXf/ZGdx/2Rncf9sb3n/
    +cHJ5/3Byef9wcnn/cHJ5/25xe/9zdn//bnF7/3Bzff9ucHf/b3F1/3N1fP9sbnX/bG51/2xvef9zdXz/
    +b3F1/3Byef9sbnX/b3F1/2xudf9zdXz/bnF7/3Bzff91eIH/e32D/3N2f/9zdn//c3V8/3d6g/9qbXf/
    +cHN9/25wd/9ucHf/eHl9/3N1fP9ucHf/bnB3/25wd/9sb3n/cHJ5/2ptd/9sb3n/bG95/3Byef9zdXz/
    +am13/2xudf9wcnn/bW9z/25wd/9sb3n/amxz/3V3ff9zdXz/bG51/2xudf9zdXz/cHJ5/2xvef9tb3P/
    +am13/3N1fP9ucHf/bnB3/3V4gf9ucXv/c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/
    +cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/
    +bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/cHJ5/2xudf9ucHf/cHJ5/3h5ff9vcXX/bnB3/3Bzff97fof/
    +c3Z//3V4gf9ucHf/bnF7/3l7gf91eIH/am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/
    +c3V8/3N1fP9zdXz/dnh8/3Z4fP9zdXz/dXd9/3N1fP9sbnX/bnF7/2ptd/9wc33/bG95/3d6g/91d33/
    +bnB3/3l6gP9wc3v/bW91/3Bzff9ucXv/bnF7/2dqdP9sb3n/am13/3Byef9ucHj/bW94/3Byef9ucHf/
    +dXd9/3V3ff9sb3n/d3qD/3V4gf97fYP/c3Z//2xvef91eIH/c3Z//3N2f/9zdn//dXiB/2xvef9wc33/
    +dXd9/25wd/9vcXX/cHJ5/3N1fP9sbnX/e32D/25wd/9qbXf/dXd9/3V3ff9tb3P/dXd9/25xe/9sb3n/
    +Zmlz/2Rncf9maG7/amxz/2dqdP9ucHf/am13/2Zobv9pa3H/cHN5/21vdP9zdXz/bG51/3Byef9wcnn/
    +a211/2tudv9ucHn/aGt0/3V3ff9sb3n/Z2p0/2Zpc/9ucXv/am13/2xudf9maXP/bG95/3Bzff9kZ3H/
    +YmVu/2xudf9zdXz/bG51/3V3ff9ucHf/bnB3/25xe/9ucHf/bnB3/2psc/92eHz/cHJ5/25wd/9sb3n/
    +d3l//3Byef9sbnX/bG51/3Byef92eHz/c3V8/3h5ff9ucXv/bnB3/3V4gf91eIH/dXiB/3Bzff9zdn//
    +cHJ5/3d5f/9sb3n/dXd9/3Bzff9wcnn/cHJ5/21vc/9ucHf/cHN9/2ptd/93eoP/bnB3/2psc/9nanH/
    +b3F1/3N1fP9ucHf/cHJ5/3Byef9ucHf/dXd9/25xe/9ucXv/amxz/21vc/9wc33/bG51/29xdf9wcnn/
    +cHJ5/25wd/9ucHf/bnB3/21vc/9qbXf/bG95/25wd/9ucHf/c3V8/3h5ff9sbnX/c3V8/2dqdP91d33/
    +ZGdx/25xe/9qbXf/bnB3/3h5ff9wcnn/bG51/21vc/9qbXf/am13/2xudf9sbnX/bG95/2xvef9ucXv/
    +c3V8/2dqdP9sbnX/am13/2dqcf9nanT/Z2p0/2Zobv9qbXf/am13/2Rncf9qbHP/am13/2xvef9sb3n/
    +Z2px/2Zpc/9wc33/am13/2xudf91d33/cHJ5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/
    +cHN9/3Byef9wc33/c3Z//25xe/9ucHf/bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn//
    +d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/d3qD/3d6g/9wc33/c3V8/3N1fP95fIb/cHN9/3Bzff9zdn//
    +e36H/3Bzff9zdn//bG95/2xudf91d33/c3Z//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/
    +cHJ5/25xe/9zdn//dXiB/3d5f/95e4H/d3qD/3d6g/93eX//cHJ5/3N2f/93eoP/cHN9/2ptd/91d33/
    +cHN9/2hrcv91eID/b3J7/2xueP9zdn7/cHN9/3Byef9ucHf/bnF7/2xvef9ucXv/cHJ6/21wef9tb3f/
    +bG51/3N1fP9wc33/Zmlz/3V3ff9nanT/cHN9/25xe/9nanT/c3V8/25xe/9sb3n/bnF7/25xe/9qbXf/
    +bG51/25xe/9nanH/Zmhu/2dqcf9nanT/ZGdx/3V3ff9qbHP/Z2px/25wd/9sb3n/Zmhu/25xe/9qbXf/
    +bnF7/2Zpc/9qbHP/amxz/2xvef9sb3n/cHJ5/3Byef9oa3X/bG51/29ye/9tcHr/c3Z//25wd/9ucXv/
    +dHZ9/21vd/9tb3b/b3F6/2xudf92eHz/dXd9/25wd/9maXP/cHJ5/2ptd/9sbnX/bG51/25wd/9zdXz/
    +am13/2RmbP9tb3P/dXd9/2xudf92eHz/bW9z/2xudf9zdXz/bG51/2xudf9qbHP/dXd9/2xudf9ucHf/
    +bnF7/3V4gf9wc33/am13/2dqdP9zdn//dXd9/3Bzff92eHz/bnF7/2ptd/9zdn//c3V8/3Byef9sbnX/
    +cHJ5/2xudf91d33/am13/3Bzff9zdXz/cHJ5/3Byef9sbnX/amxz/25wd/9nanT/dXd9/2dqdP9kZ3H/
    +ZGdx/2dqcf9qbXf/amxz/25xe/9qbHP/am13/3N1fP9sb3n/bnF7/21vc/9sbnX/bnF7/2xudf9sbnX/
    +bG95/2xvef9qbXf/bG51/2xudf9vcXX/b3F1/25wd/9ucXv/bnF7/3V4gf95e4H/bnF7/3d5f/9wcnn/
    +d3l//2dqdP9zdn//cHJ5/3Byef93eX//bnF7/2xvef9qbXf/b3F1/29xdf9vcXX/bG51/29xdf9sbnX/
    +c3Z//3N2f/9ucXv/bnB3/3Bzff9zdn//c3Z//3N2f/9ucXv/dXiB/3V4gf9sb3n/bnB3/3Bzff9wc33/
    +cHN9/3Byef9wcnn/d3qD/25xe/9sb3n/eHl9/3Byef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/
    +ZGdx/2xudf9nanT/bG51/2xudf9sbnX/Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX//
    +Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/bnB3/3N1fP9zdn//Z2p0/29xdf9vcXX/dXd9/2xudf9ucHf/
    +dXd9/3t9g/9ucHf/cHJ5/2ptd/9nanT/bnF7/3Bzff9maXP/bG51/3Bzff9nanT/am13/2ptd/9sb3n/
    +am13/2psc/9nanH/am13/2xvef9wc33/cHJ5/2xvef9wc33/bnF7/2psc/9sb3n/bG95/3Bzff9qbXf/
    +d3l//3d5f/9oa3L/d3l//3N1e/9sb3n/b3J8/3d6g/91eIH/cHN9/3d6g/9zdn//dnmC/3J1fP9rbnf/
    +aWx2/2dpb/9qbXf/Z2p0/2Rncf9ucHf/Zmlz/2dqdP9nanT/ZGdx/25wd/9kZ3H/Zmhu/2dqdP9qbXf/
    +ZGdx/2Rncf9nanT/Z2p0/2dqcf9nanH/Z2p0/2Jlbv9wcnn/amxz/2psc/9zdXz/bnF7/2xudf92eHz/
    +bnF7/2xvef9maXP/amxz/2psc/9ucXv/bG95/3Z4fP91d33/bG95/2xveP9ydH3/cXN7/3V4gf9wcnn/
    +c3Z//3R3gP9ucHf/bG93/21wef9oa3X/dXd9/25xe/9sbnX/bG51/3Byef9sb3n/bnF7/3N1fP9wc33/
    +c3Z//2xvef9nanH/bnB3/3d5f/9sb3n/d3qD/2xvef9wc33/dXiB/25wd/9sb3n/bG51/3V3ff9ucHf/
    +bG51/2xvef91d33/bnF7/2ptd/9maXP/c3V8/3N1fP9wcnn/dnh8/2xudf9sbnX/c3V8/25xe/9wc33/
    +bnF7/3Bzff9zdXz/dXiB/25xe/91eIH/dXiB/3Bzff91eIH/dXiB/3Bzff97fYP/c3Z//36Biv91d33/
    +am13/2xvef9ucXv/cHN9/2xvef9zdXz/bnB3/3Bzff91d33/cHJ5/3Bzff9qbHP/amxz/25xe/9qbHP/
    +Z2px/2xvef9sb3n/bG51/2xudf9nanT/bG51/2psc/9sb3n/am13/2xvef91d33/dnh8/2ptd/9zdXz/
    +bG51/25xe/9kZ3H/bG95/2xudf9sbnX/dXd9/2xvef9qbXf/am13/29xdf9ucHf/b3F1/2xudf9ucHf/
    +b3F1/3N1fP9zdXz/cHJ5/3N1fP92eHz/cHJ5/3Byef9zdXz/bG51/3V3ff9zdXz/amxz/21vc/9ucXv/
    +bG95/2xvef9nanT/Z2px/2ptd/9nanH/Z2px/25xe/9nanT/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/
    +ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/
    +dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3N1fP9qbXf/
    +bG51/3V3ff97fYP/b3F1/3N1fP9sbnX/bG51/25wd/9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn//
    +c3V8/21vc/9ucHf/bG51/3Byef9zdXz/dnh8/3Z4fP9zdXz/dnh8/3N1fP9ucHf/c3V8/3Byef9zdXz/
    +am13/3h5ff93eX//b3F1/3p9g/9vcnr/bW92/25xe/9zdXz/cHN9/2xudf9sb3n/am13/2xudf9qbXb/
    +a254/2tud/9sb3n/c3V8/3Byef9vcXX/d3l//3V3ff9zdXz/cHJ5/29xdf92eHz/cHJ5/25wd/9wcnn/
    +cHN9/25wd/9ucHf/c3V8/3N1fP9tb3P/bG51/2xvef9nanT/c3V8/2xudf9sb3n/dXd9/3Byef9ucHf/
    +d3l//3Byef9zdXz/amxz/25wd/9sb3n/dXd9/3N2f/93eX//dXd9/3J1fv9sb3j/bW94/2psc/9wc33/
    +amxz/2ptd/9sb3n/aGtz/2ttdf9vcnz/bW92/3h6gP9zdn//c3V8/25wd/9zdXz/Zmlz/2Rncf9gY2z/
    +Zmhu/2Zpc/9gY2z/XWBq/2Rncf9sb3n/ZGdx/3Byef9kZ3H/am13/2dqdP9iZW7/Zmhu/2Jlbv9nanT/
    +amxz/2psc/9sbnX/c3V8/25xe/9qbXf/Z2p0/2xvef9ucXv/c3V8/3V3ff9sbnX/bnB3/3N1fP9sb3n/
    +cHN9/25xe/9wc33/cHJ5/3V4gf9zdXz/c3Z//3V4gf9zdXz/c3Z//3N2f/9ucXv/d3qD/25wd/95e4H/
    +am13/2ptd/9qbXf/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/eXyG/3N2f/91eIH/bnB3/25wd/92eHz/
    +bnB3/29xdf91d33/c3Z//25xe/9wcnn/am13/2xvef9ucHf/bG95/2xvef9ucXv/dXd9/3Z4fP9vcXX/
    +dnh8/2ptd/9ucXv/YGJo/2psc/9qbXf/bG51/3d5f/9tb3P/bW9z/2xudf9vcXX/bG51/2xudf9ucHf/
    +bG51/29xdf91d33/dXd9/3N1fP9sbnX/dXd9/25xe/9qbXf/cHN9/2psc/9sb3n/Z2p0/2Rncf9maG7/
    +ZGdx/2Zpc/9nanT/Zmhu/2dqcf9sb3n/am13/21vc/92eHz/cHJ5/2xudf9sbnX/Zmlz/2psc/9nanT/
    +am13/2xudf9maXP/bnF7/2dqdP9tb3P/cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/
    +bG51/3Byef9iZW7/am13/2ptd/9sb3n/Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/
    +Z2p0/2Zpc/9sb3n/c3Z//2ptd/9ucXv/am13/2psc/9ucXv/cHN9/2dqdP9sb3n/bnB3/25wd/9wcnn/
    +cHJ5/3N1fP9sbnX/am13/2ptd/9ucXv/c3V8/3h5ff9zdXz/cHJ5/3Bzff9ucXv/bnB3/3N1fP9ucXv/
    +d3l//2xvef92eHz/eXuB/2xudf96fIP/bnF5/2xudf9sb3n/c3V8/25xe/9nanT/Z2p0/2xudf9sbnX/
    +bW93/21veP9vcXn/am13/3Byef9wcnn/am13/3V4gf9wc33/c3V8/2xvef9sbnX/c3V8/3Byef9wcnn/
    +cHJ5/3V3ff9wcnn/bnB3/25wd/9sb3n/bG95/2ptd/9nanT/Z2p0/3Bzff9sbnX/amxz/3N2f/9sb3n/
    +Z2p0/25xe/9qbXf/bnF7/2dqcf9tb3P/bG51/3h5ff9wc33/c3Z//3d5f/9ucXv/a251/2lsdv9nanT/
    +bnF7/2psc/9qbXf/bnF7/21vd/9ucXv/cHN8/2xudf93eX//cHJ5/21vc/9tb3P/c3V8/3N1fP9wcnn/
    +bG95/2xvef9zdn//am13/2dqdP9wc33/eXuB/3Bzff97fYP/c3V8/3N2f/9zdn//bG95/2xvef9sbnX/
    +c3V8/25wd/9ucHf/bG51/3V3ff9ucXv/bG51/2psc/9wc33/cHN9/3N1fP93eoP/bnB3/29xdf9wc33/
    +bG95/2ptd/9qbHP/amxz/2Zpc/9sb3n/bG51/2xvef9ucXv/am13/2xvef9qbXf/bG51/3V3ff9sbnX/
    +d3l//2ptd/9maXP/Zmlz/2ptd/9qbXf/Zmlz/2psc/9maG7/Z2p0/3Byef9qbHP/bG95/2dqcf9nanT/
    +bG95/2Jlbv9gY2z/Zmlz/2Zpc/9maG7/Zmhu/2dqdP9kZ3H/Z2px/2dqcf9qbXf/am13/3Bzff9wc33/
    +bG51/3N1fP9sbnX/c3V8/2Vmav9ucHf/bG51/2xudf95e4H/b3F1/29xdf9qbHP/bW9z/21vc/9ucXv/
    +bnB3/3Byef9ucHf/d3l//3V4gf95e4H/dXiB/3l7gf9wc33/dXiB/3d6g/9wc33/eXuB/3l7gf9ucXv/
    +cHJ5/3Bzff9ucXv/cHN9/25wd/9ucHf/c3Z//25xe/9ucXv/eXuB/3V4gf9wc33/cHJ5/2xvef9wc33/
    +c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/
    +e36H/3N2f/97fYP/cHN9/3t9g/9zdn//c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/
    +dXd9/2xudf9ucHf/cHN9/3t9g/9ucXv/cHN9/25wd/9sbnX/bnF7/25xe/9qbHP/bG51/25wd/9ucHf/
    +bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/cHN9/3N2f/93eoP/c3Z//3V4gf91eIH/cHN9/25xe/9wc33/
    +cHJ5/3Z4fP9wcnn/d3l//3t+h/9ucXv/fX+G/3Fze/9rbnf/cHJ5/3N1fP9zdXz/bG95/2ptd/9qbHP/
    +aGpx/2ptdP9sb3n/cnV+/21wev91eIH/c3Z//3Byef9/gYf/d3qD/3l7gf9zdn//cHN9/3V4gf9zdn//
    +c3Z//3t9g/93eoP/eXuB/3V4gf9zdn//dXiB/3N2f/9sb3n/bnF7/2xvef95e4H/cHN9/3N2f/95fIb/
    +cHN9/29xdf9wc33/bG95/3N1fP9maXP/bW9z/3Byef92eHz/dnh8/3V4gf94eX3/cnR7/21veP9vcXj/
    +a21z/3Z4fP9sbnX/bnF7/2xvef9rbnX/b3J6/3F0ff9qbXf/dXiB/3N2f/9sb3n/cHJ5/3Bzff9zdn//
    +cHN9/2xvef9ucHf/dXd9/2psc/9qbHP/cHJ5/3N1fP9vcXX/dnh8/25wd/9wcnn/c3V8/2ptd/9wcnn/
    +cHJ5/3d6g/9wc33/bnF7/2xvef91d33/c3V8/21vc/9tb3P/dXd9/3Bzff9zdXz/c3Z//2xudf9nanT/
    +bnF7/2ptd/9qbXf/Z2p0/2psc/9qbHP/bG95/2xudf9wc33/bnF7/2ptd/9ucXv/bG51/2dqdP9ucXv/
    +Zmlz/3V4gf9qbXf/Zmlz/2psc/9tb3P/bG51/2psc/9sbnX/am13/25xe/91d33/b3F1/3Byef9vcXX/
    +cHJ5/3Z4fP9ucHf/am13/3Byef9wcnn/bG51/2ptd/9sbnX/am13/2ptd/9nanT/cHN9/25wd/91d33/
    +dXd9/2xudf91d33/bG51/3V3ff9nanH/cHJ5/2xvef9sb3n/eXuB/25wd/9ucHf/Z2px/21vc/9tb3P/
    +c3V8/2psc/9tb3P/bG51/3V3ff9wcnn/dnh8/3Bzff92eHz/cHJ5/25xe/91eIH/bnF7/3V4gf9wc33/
    +am13/25wd/9wc33/bnF7/3Bzff9vcXX/bnB3/3V4gf9ucXv/cHN9/3d5f/9wc33/cHJ5/2xvef9qbXf/
    +cHN9/25xe/9ucXv/c3V8/2ptd/9zdn//bnB3/2xudf91d33/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/
    +cHJ5/3V3ff9tb3P/dXd9/2dqdP9zdXz/am13/2xvef9sb3n/am13/2Rncf9sb3n/am13/2Jlbv9qbHP/
    +am13/3N1fP9qbHP/bG51/3Byef9+gIb/cHJ5/3Byef9sbnX/bG51/25wd/9wc33/Zmlz/2ptd/9qbXf/
    +am13/2ptd/9ucXv/dXd9/3Byef9vcXX/b3F1/3N1fP9zdXz/eXuB/25wd/9zdXz/cHJ5/2xvef9sb3n/
    +cHJ5/2ptd/91d33/bG51/3V3ff95e4H/b3F1/36Bif9ydHv/bG52/3N1fP9zdXz/dnh8/3V3ff9ucHf/
    +bG51/25wd/9rbnj/cXN6/3V3gP9wcnn/cHN9/3N2f/9zdXz/f4GH/25xe/95e4H/cHN9/3N1fP95fIb/
    +d3qD/3Bzff93eoP/cHN9/3N2f/9ucXv/bnF7/3Bzff9wc33/bnF7/3Bzff9wcnn/d3qD/3Bzff9wc33/
    +d3qD/3V4gf9wc33/dXiB/3V4gf91eIH/am13/3Bzff9wc33/eXuB/3N2f/95e4H/eXuB/3Z4gf9vcnz/
    +b3J4/21wev91d33/bnB3/3Bzff91eIH/b3J5/3Bzff9xc3r/bnB3/3d5f/9zdn//bG95/2xvef9ucXv/
    +dXd9/3Byef9qbXf/bW9z/3V3ff9nanH/bG51/25xe/9ucXv/bW9z/3Z4fP9sbnX/bG95/25xe/9nanT/
    +bG51/2ptd/9wc33/bG51/25wd/9ucHf/cHJ5/25xe/9sbnX/bG51/3V3ff9zdXz/dXd9/3l7gf9wcnn/
    +bnB3/3V4gf9wc33/cHN9/2xvef9ucHf/am13/25xe/9sb3n/c3Z//3N2f/9sb3n/bnB3/25wd/9sbnX/
    +c3V8/2xudf97fYP/bnB3/2xudf9qbXf/am13/25wd/9nanT/am13/2dqdP9sb3n/dXd9/2psc/9qbXf/
    +Z2p0/2xudf91d33/bG51/2dqdP9wcnn/cHN9/2xudf9qbHP/am13/2ptd/9sb3n/Z2p0/2xvef9nanT/
    +bG95/2xvef9maXP/am13/2psc/9ucXv/YmVu/2xudf9nanT/am13/3V3ff9qbXf/am13/2Rncf9sbnX/
    +am13/2ptd/9ucHf/bnB3/2ptd/91d33/c3Z//3V3ff9wc33/dXd9/3Bzff9wc33/c3Z//25xe/91eIH/
    +cHN9/2xudf9ucHf/bnB3/25wd/9wcnn/bG51/2xudf9wcnn/bG51/3Byef94eX3/bG51/2xudf9nanT/
    +ZGdx/2xudf9sb3n/cHJ5/3Byef9tb3P/bnF7/2psc/9qbHP/cHN9/25xe/9sbnX/am13/25xe/9ucXv/
    +am13/2xvef9wc33/bW9z/3V3ff9nanH/c3V8/25xe/9wcnn/c3V8/3N1fP9qbHP/bnB3/25xe/9qbHP/
    +amxz/2psc/9ucXv/Zmlz/2psc/9sb3n/dXiB/2ptd/9ucXv/am13/2xudf9sbnX/c3V8/2Zpc/9qbXf/
    +bnB3/25wd/9zdXz/c3V8/3N1fP9sb3n/bG51/2ptd/9wcnn/cHJ5/3l7gf9ucHf/dXd9/25wd/9zdXz/
    +bG51/25xe/9sbnX/c3V8/2ptd/92eHz/dXiB/2xudf97fYT/cXN6/2dqc/9qbXf/am13/3Bzff91d33/
    +bnB3/2xvef9sb3n/bG94/21wd/91d3z/bG51/3Byef9ucHf/bG51/3l7gf9qbXf/dXd9/2xudf9nanH/
    +d3l//2ptd/9sb3n/bnF7/2ptd/9ucXv/amxz/2xudf9qbXf/bG95/3Byef9ucHf/bG51/3V3ff9sb3n/
    +bnB3/3d6g/9wc33/bnF7/3N2f/9ucXv/bnF7/2dqdP9sb3n/bnF7/3l7gf91eIH/d3qD/3Z4fP9ydHv/
    +a252/2xudP9qbHP/c3V8/21vc/9wcnn/cHJ5/25wd/9sbnX/a212/2Nmb/9sb3n/Z2p0/2Zpc/9sbnX/
    +bG95/3V3ff9ucXv/bG95/29xdf93eX//Zmlz/25wd/9wcnn/c3V8/3Byef97fYP/c3V8/3Bzff91eIH/
    +bG95/25xe/9wcnn/dXiB/3Bzff9wcnn/bnB3/25xe/91d33/bnB3/2xudf91d33/dXd9/3N1fP94eX3/
    +bnB3/29xdf92eHz/cHJ5/3Byef9qbHP/b3F1/2psc/9ucHf/bnB3/3N2f/91eIH/cHN9/3Bzff9ucHf/
    +cHJ5/3Bzff9sb3n/dXiB/25wd/9ucHf/b3F1/25wd/9wcnn/bG51/3Byef9sbnX/bnB3/3Z4fP9tb3P/
    +bG51/2psc/9qbXf/d3l//2xudf9kZ3H/am13/25xe/9qbXf/Z2px/2dqcf9maXP/bG95/2dqdP9ucXv/
    +bnF7/25xe/9wc33/bG51/25xe/9tb3P/dnh8/2Zpc/9ucXv/am13/2ptd/93eX//bG95/2xvef9qbHP/
    +bnB3/29xdf9zdXz/bG51/2ptd/9qbXf/cHN9/25wd/9wc33/bnF7/3N1fP9wcnn/bnB3/25xe/9qbXf/
    +bG95/25xe/9nanT/am13/2ptd/9qbHP/Z2p0/2psc/9nanT/bG95/2Zpc/9sb3n/dnh8/21vc/9sbnX/
    +bG51/2xudf9ucHf/bnB3/3Byef9wc33/bnB3/3V3ff9ucHf/bnB3/3V4gf91eIH/cHN9/25xe/91eIH/
    +d3qD/3Byef91eIH/c3Z//25wd/92eHz/amxz/3Z4fP9wcnn/c3V8/3N1fP9zdXz/amxz/25wd/9wcnn/
    +bG51/2ptd/9sbnX/c3V8/2psc/9vcXX/cHJ5/3V3ff9wcnn/cHJ5/25wd/9ucHf/bnB3/3V3ff9nanH/
    +bG95/2xvef9qbXf/c3Z//3N2f/95e4H/dXiB/3Bzff9zdn//dXiB/3d6g/+Bg4r/d3l//35/g/97fYP/
    +fn+D/3V3ff95fIb/c3Z//3l7gf9ucHf/dXiB/3V4gf9tcHr/fYCH/3V3fv9wc3v/dXeA/3Bzff97fYP/
    +e32D/25xe/9ucHf/cnR7/21wev9tb3f/a254/2Zobv9maXP/Z2px/2dqcf91d33/amxz/2xvef9sbnX/
    +Z2px/3Byef9sb3n/bG95/2xvef9sbnX/bnB3/29xdf9vcXX/bnF7/25xe/91eIH/bnF7/25wd/9ucXv/
    +cHN9/3Byef95e4H/cHN9/3N2f/91eIH/c3Z//25xe/9sb3n/c3Z//3d6g/97fYP/d3qD/3l8hv95e4H/
    +dXiB/3F0fv9ucHf/aGt0/2xvef9sbnX/bG95/2hrdf9rbXf/a254/3F0fP9ucXv/en2D/3l7gf9wc33/
    +cHN9/3Bzff9wc33/bnB3/29xdf9vcXX/dXd9/2Zobv9tb3P/bnF7/25xe/9sbnX/dXd9/25wd/9wcnn/
    +cHJ5/2dqdP9qbXf/bW9z/3Z4fP9sbnX/amxz/2dqdP9qbXf/bnF7/2Zpc/9maXP/cHN9/3N1fP9sb3n/
    +dXd9/2psc/9maXP/bG95/2xudf9qbHP/Zmlz/2dqdP9maXP/bG51/2dqdP9ucXv/bnF7/2ptd/9qbXf/
    +Zmlz/2dqcf9qbXf/Zmlz/3N1fP9nanT/amxz/2psc/9sbnX/am13/2dqdP9maXP/Zmlz/2psc/9zdXz/
    +bG51/2xudf9iZW7/Z2p0/3N1fP9qbXf/Zmlz/2ptd/9sb3n/am13/2dqcf9kZ3H/Zmlz/25xe/9nanT/
    +am13/2xvef9qbXf/cHN9/2Zpc/9nanT/Z2p0/25xe/9gY2z/Zmlz/2Rncf9iZW7/cHJ5/2xvef9nanT/
    +Z2px/2ptd/9qbHP/am13/21vc/9sbnX/Zmlz/3Bzff9nanT/bnF7/2xvef9ucXv/bG95/2ptd/9ucXv/
    +bG51/2xvef9sb3n/Zmlz/2dqdP9qbXf/Zmlz/2dqdP9maG7/Zmlz/2ptd/9nanH/am13/3Byef9kZ3H/
    +Z2px/2Zobv9iZW7/Zmlz/2xudf9qbXf/am13/2xudf9ucXv/amxz/2psc/9ucXv/bG95/2dqdP9nanH/
    +bG95/3Bzff9sbnX/Z2p0/2xvef9qbHP/c3V8/2dqdP91d33/bnB3/3Z4fP92eHz/bnF7/2psc/9sbnX/
    +cHJ5/21vc/9wcnn/cHJ5/3V3ff9ucHf/bW9z/3V3ff93eX//bnF7/25xe/9sbnX/bG51/3Byef9wc33/
    +Zmhu/25wd/9ucHf/Z2p0/2ptd/9wcnn/c3V8/2xudf9vcXX/bnB3/3Byef9zdXz/eXuB/2xudf91d33/
    +dXd9/3V3ff9ucHf/c3V8/25wd/91d33/bnB3/3d6g/91eIH/bnB3/3t9hP9wc33/a212/3Bzff9wc33/
    +dXiB/3l7gf9wc33/cHJ5/3N2f/9ucXv/b3F6/3V3ff9tb3P/dXd9/25wd/9ucHf/d3qD/25wd/9zdXz/
    +bnB3/21vc/92eHz/bnB3/3Byef9wcnn/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/25wd/9tb3P/
    +bG51/2ptd/9qbHP/cHN9/2xvef9qbXf/bnF7/2dqdP9qbHP/YmVu/2Zpc/9qbXf/Z2p0/2Zobv9qbXf/
    +Z2pz/2dqc/9pbHP/a21y/2ttdP90dnz/bnB3/2xvef9tcHr/bnF7/2ptd/9maXH/ZWhy/2xvef9sb3n/
    +YGNs/2Zobv9kZmz/d3l//3N2f/9ucXv/c3V8/3t+h/9sb3n/c3V8/3V4gf95fIb/eHl9/31+gf9zdXz/
    +dXiB/3d6g/9ucXv/cHN9/3Bzff93eX//bnB3/2xvef9ucHf/bG95/3Z4fP9qbXf/bG95/3V3ff94eX3/
    +cHJ5/3V3ff9wcnn/am13/3N1fP9tb3P/am13/2Zpc/9nanT/am13/21vc/9sbnX/c3V8/3V3ff9zdn//
    +c3Z//3Byef9zdXz/eXuB/3Bzff95fIb/c3V8/3N2f/9wc33/c3Z//3V4gf92eHz/e32D/3V3ff9zdn//
    +eXyG/3N2f/9zdn//bnF7/3V4gf93eoP/bnF7/2ptd/9zdXz/c3V8/3Byef9vcXX/bG51/2xvef91d33/
    +bG51/3Byef9ucXv/am13/25xe/9qbHP/am13/2dqdP9ucXv/XWBq/2ptd/9nanT/Zmlz/3N1fP9sb3n/
    +am13/2dqdP9sb3n/bG51/25wd/9tb3P/bW9z/2dqcf92eHz/cHJ5/3V3ff9zdXz/cHJ5/3Bzff9wc33/
    +c3Z//3Bzff9zdn//c3Z//2xvef9qbHP/bnB3/25wd/9zdXz/bW9z/2xudf9zdXz/b3F1/3N1fP94eX3/
    +bnB3/2xudf9vcXX/Z2px/2psc/9wcnn/bnB3/25wd/9ucHf/cHN9/2dqdP9sbnX/cHN9/3N1fP9sb3n/
    +amxz/25xe/9ucXv/bG51/2ptd/9ucXv/bG51/3Z4fP9qbHP/dnh8/25xe/9zdn//c3Z//3Bzff9qbHP/
    +bnB3/3N1fP9tb3P/bnF7/2ptd/91d33/bnB3/25wd/9wcnn/dnh8/3N1fP9wcnn/bnB3/25wd/9wc33/
    +dXiB/2dqdP9wcnn/c3V8/2xvef9wc33/cHN9/3N2f/9ucHf/b3F1/29xdf9zdXz/cHJ5/3l8hv9sb3n/
    +dXiB/3N1fP92eHz/bW9z/3Byef9ucHf/dXd9/25wd/95fIb/d3l//21vc/96e4H/b3F5/2Zpcv9sbnX/
    +am13/3Byef94eX3/bnB3/25wd/9zdXz/cHJ3/3Fzev91d3v/bW9z/3N1fP9zdXz/b3F1/3t9g/9ucHf/
    +cHJ5/25xe/9sbnX/c3V8/2ptd/9sb3n/am13/2ptd/9qbXf/bW9z/2xudf9sbnX/b3F1/3N2f/9ucXv/
    +bnB3/2xvef9sb3n/bnB3/3Z4fP9wcnn/bnB3/3Byef9ucHf/bnB3/2psc/9wcnn/c3Z//3V4gf9wc33/
    +e32D/3N2f/90d4D/bnF7/25xef9rbnf/c3Z//3Byef9wcnn/bnF7/3N2fv9xdHv/bG95/2hrdf9wc33/
    +bG95/2Rncf9qbXf/bG51/3h5ff9zdXz/cHJ5/25wd/93eoP/am13/25xe/9ucXv/cHN9/2xvef9zdn//
    +bG95/25xe/9zdXz/bG51/25wd/9wcnn/d3l//2dqdP9iZW7/Zmlz/2ptd/9zdXz/am13/2xudf9wcnn/
    +d3l//25wd/91d33/bnB3/2ptd/91d33/b3F1/2psc/9nanH/b3F1/2xudf9vcXX/b3F1/3Byef91d33/
    +bnB3/25wd/9sbnX/bW9z/3N1fP9nanT/d3l//2xudf9qbXf/amxz/2psc/9nanH/Zmhu/2dqdP9kZ3H/
    +YmVu/2xudf9gY2z/Zmhu/2BjbP9maXP/bG51/2Rncf9iZW7/Zmlz/2Rncf9maXP/Zmhu/2Rncf9nanT/
    +bnF7/2dqdP9sb3n/bnF7/2xvef9ucXv/Z2p0/25xe/9ucXv/c3V8/2Zobv9wcnn/bnB3/2Zpc/91d33/
    +bnF7/25wd/9qbHP/bnB3/2ptd/9sb3n/amxz/2dqdP9iZW7/bnF7/2dqdP9zdXz/bnF7/2xvef9wc33/
    +bG95/2xvef9sbnX/am13/2ptd/9maXP/YmVu/2xvef9ucHf/c3V8/21vc/9sbnX/cHJ5/2ptd/9wc33/
    +dXd9/25wd/9wcnn/bW9z/2Zobv9qbXf/dXiB/25xe/9sb3n/bG95/3N2f/9wcnn/cHN9/3V3ff91d33/
    +bnF7/2xvef91d33/bnF7/2xudf9qbXf/am13/2xudf91d33/am13/3N1fP9ucXv/bG95/2xvef9qbXf/
    +ZGdx/2dqcf9maXP/Z2p0/2xvef9qbXf/Z2p0/2dqcf9qbHP/bG95/3N1fP9wc33/bG95/2ptd/9tb3P/
    +bnB3/3Bzff9maG7/bG51/2xudf9sbnX/bnF7/25xe/91eIH/cHJ5/3N1fP9ucHf/dXiB/3N2f/95e4H/
    +c3Z//3d6g/9wc33/eXuB/25xe/9wcnn/c3Z//3Z4fP9ucHf/eXuB/3d5f/9wcnn/fH2C/3F0fP9wcnz/
    +c3Z//3N2f/93eoP/eXyG/3Bzff91d33/eHuF/3N1e/9ydHn/cHN9/2tud/9qbXf/am13/2dqcf9zdn//
    +bG51/25xe/9ucXv/bG51/3N1fP9sb3n/bG95/2xudf9vcXX/bG95/25wd/9sb3n/bnF7/25wd/9zdn//
    +bG95/25wd/9ucHf/cHJ5/29xdf92eHz/bnF7/2xvef9ucXv/cHN9/25xe/9sb3n/c3Z//3N2f/91eIH/
    +cHN9/3l7gf9zdn//c3Z//25weP9ucXn/bG51/3Byef9vcXX/bG95/25wd/9zdXz/cXN6/2lsdP9ucHf/
    +dnh8/25xe/9nanT/bG51/25wd/92eHz/c3V8/3N1fP9sbnX/dnh8/2xudf9ucHf/bnF7/3N1fP9ucHf/
    +dXd9/25wd/9wc33/dXiB/25xe/9sb3n/cHN9/3d6g/9ucHf/bG95/3Byef9wc33/eXuB/25xe/9wcnn/
    +cHN9/3V4gf9ucHf/dXd9/25wd/9wcnn/dXiB/25xe/9sb3n/Z2p0/2xvef9qbXf/bnB3/29xdf9ucHf/
    +dXd9/25wd/9ucHf/bnB3/25wd/9wc33/am13/3d5f/9ucHf/bnB3/25wd/9sb3n/cHJ5/3N1fP9wc33/
    +bnB3/25wd/93eX//bnB3/25wd/9ucHf/dXd9/3h5ff9zdXz/bG51/3Byef9wcnn/cHN9/3Byef9ucHf/
    +bnB3/3N1fP9sbnX/am13/2xvef9qbXf/c3V8/2Zpc/9ucXv/am13/2xvef9iZW7/am13/2dqdP9kZ3H/
    +cHN9/2xvef9sbnX/amxz/3Bzff9sbnX/am13/3N2f/9zdXz/bnF7/3l8hv9zdn//eXyG/3V4gf9zdn//
    +c3Z//25xe/9wc33/bnB3/3Byef9zdXz/bG51/2dqcf9wcnn/c3V8/3N1fP9sbnX/bG51/2xvef9qbXf/
    +c3V8/3V3ff9sb3n/bG95/2ptd/9iZW7/Zmlz/25xe/9qbXf/am13/2Zpc/9sb3n/amxz/2psc/9ucXv/
    +bnF7/2dqdP9maXP/bG95/2Zpc/9maG7/ZGdx/2dqcf9kZ3H/bG95/2Jlbv9qbXf/am13/2Zpc/9nanT/
    +Zmlz/2BjbP9kZmz/ZGdx/2Rncf9qbXf/Z2px/2Zpc/9kZ3H/Zmhu/2ptd/9wc33/c3V8/2xudf9nanT/
    +bG51/3Bzff9sb3n/Zmhu/25wd/9ucHf/bG51/25xe/9wc33/dXd9/29xdf9ucHf/bnB3/3N2f/9ucHf/
    +eHl9/3Byef91d33/b3F1/3V3ff9ucHf/bnB3/25wd/9zdXz/am13/3V4gf91d33/bG94/3d5gP9tcHj/
    +aGt1/2ptd/9qbXf/bG95/3N1fP9sbnX/am13/25xe/9vcXf/cHJ5/3V3e/9wcnn/cHN9/3V4gf9ucXv/
    +e36H/25xe/9wc33/cHN9/25xe/93eX//bnF7/3Byef9ucHf/cHJ5/25xe/9ucHf/bnB3/3Bzff9ucXv/
    +c3Z//3Bzff9zdXz/bnF7/2xvef9ucHf/d3l//2xvef9wcnn/am13/2xudf9ucXv/bW9z/3V3ff9ucHf/
    +bnF7/25wd/94eX3/cHJ5/3N1fP9qbXX/aGt1/2hrdP9ucXv/bG51/2ptd/9qbXf/bnF7/2tueP9kZ3D/
    +ZWhx/3J1fP9ucXv/am13/2xudf9ucHf/c3V8/3N1fP9ucXv/bG95/3Z4fP9qbHP/cHJ5/25wd/9zdXz/
    +bnB3/3d5f/9wcnn/bnF7/3Bzff9nanT/bnF7/25xe/93eoP/bnB3/2xvef9nanT/bnB3/3N1fP9qbHP/
    +amxz/2ptd/91d33/bG95/25xe/9sbnX/bG51/25xe/9nanH/Z2px/2Zpc/9maXP/YmVu/2dqdP9qbHP/
    +bG95/3N1fP9qbHP/am13/2dqdP9maXP/cHN9/2dqdP9zdXz/bG51/2xudf9wc33/bnB3/21vc/9tb3P/
    +c3V8/2xvef9sb3n/e36H/25wd/9zdXz/bnB3/3V4gf97fYP/cHN9/3Byef9zdn//c3Z//3d6g/9wcnn/
    +bnB3/3Byef95e4H/cHJ5/3V4gf95e4H/c3Z//3l7gf9zdXz/eXyG/3d6g/95fIb/bG95/3V4gf9zdXz/
    +cHN9/3l8hv95e4H/dnh8/3N2f/9+gIb/dXiB/3V4gf9tb3P/bW9z/2dqcf92eHz/bnB3/3d6g/9zdXz/
    +am13/2xvef9qbXf/Zmlz/2dqcf9nanH/am13/2dqdP9nanT/bG95/3Bzff9ucHf/bW9z/25wd/9tb3P/
    +am13/3N1fP91d33/bG95/2ptd/9ucXv/ZWZq/2dqcf9wcnn/bnB3/25wd/9vcXX/c3V8/25wd/9ucXv/
    +d3l//3V3ff9ucXv/bG95/3V3ff9wcnn/bnF7/2xvef9ucXv/cHJ5/3V3ff9sb3n/d3l//3d5f/91eIH/
    +eXuB/3d6g/9ucXv/c3Z//3t9g/97fYP/fX6B/3Bzff9zdn//c3V8/3Bzff93eoP/dXiB/3V4gf9sb3n/
    +Z2p0/25wd/9ucXv/cHJ5/2dqdP9ucXv/bnB3/25wd/9wcnn/cHN9/3Z4fP9sbnX/bG51/21vc/9wc33/
    +bG95/3N1fP9ucXv/dXd9/2xudf92eHz/bnF7/3Byef91eIH/c3Z//29xdf95e4H/d3l//3N1fP97foX/
    +dXd9/3J0e/9zdn//dXd9/31+gf97fof/dXiB/3V4gf91eIH/dHZ9/3J1f/92eH//bnF7/3N1fP9wcnn/
    +bW9z/3l7gf9sbnX/bnB3/3Byef9ucHf/c3V8/25wd/9ucHf/bG51/2ptd/9qbHP/Z2p0/2psc/9qbXf/
    +bG51/3N1fP9tb3P/amxz/2ptd/9sb3n/am13/3d5f/9sbnX/bG95/2ptd/9qbXf/cHN9/2ptd/9zdXz/
    +cHJ5/25wd/9ucHf/c3V8/2xvef91d37/cHN4/3R2ff9ydX3/eHqA/3V4gf9zdn//b3J8/29yfP9vcnj/
    +aGpy/2hrdP9zdXz/bG95/2Zpc/9sb3n/am13/3V3ff9wc33/cHN9/25xe/94eX3/am13/3Bzff91eIH/
    +c3Z//2xvef91d33/b3F1/2xvef9ucXv/Z2p0/25xe/9wc33/eXyG/3Byef9ucHf/am13/3N2f/93eoP/
    +bnF7/25wd/9wcnn/dnh8/25wd/9ucXv/bW9z/2xudf9zdXz/bG51/2psc/9qbXf/bG95/2ptd/9ucHf/
    +bG51/25wd/93eX//am13/25wd/9sbnX/am13/25xe/9nanT/c3V8/2ptd/9sbnX/cHJ5/2xudf9sbnX/
    +bG51/3N1fP9tb3P/bnB3/3V3ff9sbnX/am13/2dqdP9ucXv/dXd9/2xvef9nanT/am13/2xudf9wc33/
    +amxz/2psc/9nanT/c3V8/2xudf9zdXz/dXd9/3Byef9zdn//bG95/3N2f/9ucXv/cHN9/2dqdP9ucXv/
    +bnB3/2dqdP9wc33/bG95/25wd/9ucHf/d3l//3Byef9wcnn/Z2px/2xudf9iZW7/bnF7/2psc/91eIH/
    +bG95/2psc/9maXP/Z2p0/2Zobv9maG7/ZGdx/2Zobv9iZW7/YGNs/2Rncf9nanT/ZGdx/2Rncf9kZ3H/
    +YGNs/2Rncf9sb3n/bG95/2dqdP9maXP/Z2p0/11fZf9iZW7/bG95/2xvef9qbXf/bG51/2xvef9qbXf/
    +bnF7/3Z4fP94eX3/cHJ5/2xudf9zdn//cHN9/3N1fP9ucHf/bnF7/3Bzff93eX//bnB3/3Z4fP92eHz/
    +c3V8/3V3ff9wc33/b3F1/29xdf9zdXz/bnB3/3N1fP9tb3P/bG51/2xudf9sbnX/cHN9/2ptd/91d33/
    +Z2p0/2Rncf9sbnX/bG95/2xvef9nanT/bG51/2xudf9sbnX/bnB3/3Bzff91d33/b3F1/25wd/9ucHf/
    +c3V8/3Byef92eHz/cHJ5/3V3ff9qbHP/c3Z//3Bzff9wcnn/dXiB/3V3ff9sbnX/eHl9/3V3ff9wcnn/
    +dXiB/3Byef9sb3j/b3F1/2xvef9zdn//eHl9/2xvef9wcnn/cHN8/21wev9tb3j/cHJ5/2dqcv9maXP/
    +Zmlz/2Rncf9wc33/amxz/2psc/9sb3n/am13/2ptd/9qbXf/am13/2xudf9qbHP/bG51/2xudf9nanT/
    +am13/2ptd/9ucXv/amxz/2xudf9qbXf/cHN9/2ptd/9zdn//am13/3Bzff9qbXf/bnB3/3V3ff9ucHf/
    +dXd9/25wd/9wcnn/cHJ5/3Byef9tb3P/bnF7/21vd/9ucXn/bW93/3R2ff9sb3n/am13/2ptd/9ucXv/
    +b3F4/2hrc/9sb3n/d3l//3N2f/9sb3n/bnF7/25wd/9ucXv/Z2p0/2dqdP9qbXf/bnF7/2Zpc/9nanT/
    +Z2p0/2ptd/9nanT/bnF7/2xudf9qbXf/bG51/2psc/9tb3P/bnF7/3l7gf9tb3P/amxz/2psc/9ucXv/
    +cHN9/25xe/9ucXv/c3Z//3l7gf9zdn//dXiB/25xe/9wc33/d3qD/3N1fP9zdXz/bnB3/25xe/9ucXv/
    +c3Z//3N1fP9wc33/eXyG/3N2f/9wc33/c3V8/3N2f/93eoP/c3Z//3t9g/9zdn//cHJ5/3t9g/9zdn//
    +d3l//3V3ff93eoP/c3Z//3d6g/97fof/c3Z//3N1fP9zdn//eXuB/3l8hv9zdn//bG95/3N2f/9wcnn/
    +d3l//3Byef9ucHf/bnB3/3h5ff9sbnX/cHJ5/3Z4fP9wcnn/bnB3/2ptd/9ucXv/bG51/2xvef9nanH/
    +bnF7/2xudf9nanT/bnF7/2ptd/9qbXf/Z2p0/3N1fP9sbnX/Z2p0/2xudf9qbXf/Zmlz/3N1fP9qbXf/
    +fn+D/3Z4fP9wcnn/c3V8/3N2f/9sb3n/bnF7/25wd/9wcnn/bnB3/2xvef9wc33/d3l//25xe/9wcnn/
    +cHN9/25wd/9ucHf/d3l//3N2f/91d33/bnB3/3N1fP9lZmr/Zmlz/25xe/9sb3n/am13/2dqcf9qbXf/
    +amxz/2dqdP9ucHf/cHJ5/2dqdP9kZ3H/bnF7/2ptd/9nanT/amxz/2ptd/9qbXf/cHJ5/2psc/9zdXz/
    +c3V8/25wd/9zdXz/dXd9/29xdf9ucXv/dXiB/3Bzff91d33/bG95/25xe/9wcnn/bnF7/3Bzff9wcnn/
    +eXuB/25wd/9qbXf/bnF7/3V4gf9wc33/bnF7/3V4gf9ucXv/cHN9/3Bzff93eoP/eXyG/3N2f/9zdn//
    +cHN9/3d6g/9zdn//e32D/3d6g/95fIb/cHN9/3l7gf91eIH/c3V8/3d6g/91eIH/c3Z//3t+h/97fob/
    +d3qE/3p8g/90dn7/bXB6/25wd/9sb3n/cHN9/3d5f/9ucXv/bnB3/25xe/9xdH7/c3V9/3d5gP9wc33/
    +bnF7/2xvef9ucHf/eXyG/25xe/9ucXv/cHN9/25xe/9wc33/cHJ5/25xe/9zdXz/cHJ5/25xe/9sb3n/
    +bnB3/21vc/9ucHf/c3V8/25wd/9sb3n/bnF7/3d5f/9ucXv/d3qD/25xe/9zdn//cHN9/2xvef91d33/
    +bG95/3Z4fP9ucHf/c3V8/25wd/9ucXv/bnB3/3Bzff9tb3f/bnB3/21vc/9ydHz/bnB3/25wd/9wcnn/
    +cHJ5/3Fzef9oa3P/aGtx/3V3ff9wcnn/Z2px/2xvef9sbnX/dnh8/3N1fP91eIH/c3Z//3V4gf9sb3n/
    +bG95/3Bzff9ucXv/bG95/3N2f/9sb3n/cHN9/25wd/9sb3n/bnB3/25xe/93eoP/bnB3/2xudf9qbHP/
    +c3V8/3N1fP9ucHf/bnB3/3V3ff92eHz/c3V8/2xvef9qbXf/bnB3/3N1fP9sbnX/am13/2xudf9sbnX/
    +amxz/25wd/9tb3P/bnB3/3V3ff9ucHf/bG95/2ptd/9tb3P/bnB3/2psc/9zdXz/bnB3/2ptd/91eIH/
    +bnB3/25wd/9ucHf/bnF7/25wd/9zdXz/dXiB/25wd/9sb3n/bnB3/3N1fP91d33/bnB3/2psc/9tb3P/
    +bG51/3V3ff9sbnX/bG51/25wd/91d33/bG51/3Byef9zdXz/am13/2ptd/9nanT/bG95/2psc/9qbXf/
    +ZGdx/2ptd/9qbHP/Zmlz/2ptd/9qbXf/am13/2psc/9zdXz/bG51/2xudf9wcnn/bnF7/25xe/91eIH/
    +cHN9/3+Bh/93eX//bG95/3Bzff9zdn//bG95/25xe/9ucHf/cHJ5/25wd/9qbXf/bnF7/3V4gf9ucXv/
    +cHJ5/25xe/9ucHf/cHN9/3d5f/91eIH/c3V8/3Byef9ucXv/ZGdx/25wd/9wcnn/cHN9/2xvef9wcnn/
    +bnF7/2xvef9wc33/d3l//3d5f/9zdXz/bG51/3Z4fP9zdXz/cHJ5/25wd/9wcnn/bG51/3V3ff9qbXf/
    +cHN9/3N1fP9sb3n/bG95/2xvef9qbHP/Z2p0/25xe/9nanT/c3V8/2dqdP9qbXf/Z2px/2psc/9sb3n/
    +amxz/3Byef9maG7/YmVu/2ptd/9sb3n/amxz/2Zpc/9ucHf/Z2px/2xudf9tb3P/bnB3/3Bzff9ucHf/
    +dXiB/25wd/9zdXz/bnB3/3V3ff9zdXz/dXd9/2xudf91d33/bG95/25wd/9zdn//dXd9/29xdf92eHz/
    +eHl9/3J0e/92eH7/bXB4/2hrdP9qbHP/Zmlz/3Byef91d33/am13/21vc/9sb3n/bm92/21weP92eH//
    +bnB3/2xvef9wc33/bnF7/3d6g/9zdn//d3qD/3t9g/93eX//fn+D/3d5f/93eX//e32D/3p7f/97fof/
    +eXuB/3l7gf95e4H/e32D/3t9g/91eIH/d3l//31+gf9/gYf/d3l//3+CjP93eoP/d3qD/3Bzff9sb3n/
    +dXd9/25wd/91d33/am13/2xvef9qbXf/bnF7/2psc/9rbnj/aGty/2hqc/9maG//am13/2dqcf9qbXf/
    +bnF7/2xveP9tcHj/YmVu/19ibP9sb3n/Z2p0/2BjbP9maXP/bG95/3h5ff9wc33/c3Z//25wd/91d33/
    +bG95/2xvef9sb3n/bnB3/25wd/92eHz/cHJ5/3Byef9sb3n/bnB3/25wd/9ucHf/dXd9/2xudf9qbHP/
    +Z2px/3Byef9ucHf/am13/2xvef9wc33/c3V8/25xe/9ucXv/bG51/25xe/9wc33/bG51/25wd/9ucHf/
    +bnB3/2ptd/9wcnn/b3F1/25wd/93eX//cHJ5/25wd/9vcXX/bG51/25wd/9sbnX/cHN9/2xvef9ucXv/
    +eXuB/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/3d6g/9ucHf/bG51/2xvef91d33/eHl9/3Bzff9sb3n/
    +bnB3/25wd/95e4H/bG51/2xvef9ucHf/d3l//25xe/9wc33/dXd9/2xvef9zdXz/bnB3/25xe/9ucXv/
    +bnF7/2dqdP9sb3n/bG95/2xudf9wc33/cHJ5/25wd/9sb3n/dXd9/25wd/9sb3n/bG51/2ptd/9nanT/
    +bnF7/2xudf99foH/dXd9/21vc/9wcnn/c3Z//25wd/9ucHf/b3F1/2xudf9sbnX/Z2px/3N1fP9zdXz/
    +bG51/21vc/9sb3n/am13/2xvef9zdXz/bG95/3Bzff91d33/cHJ5/2Rncf9ucHf/bnB3/3Bzff9ucHf/
    +bnF7/25xe/9wcnn/cHN9/3d6g/93eoP/c3Z//2xvef91eIH/c3Z//3N2f/9ucXv/cHN9/3N1fP93eoP/
    +bnF7/3d6g/91eIH/cHN9/3N2f/9wc33/bG95/2xvef91eIH/bnF7/3V3ff9sbnX/bG51/2xudf9sb3n/
    +bnF7/2ptd/93eX//bW9z/2psc/9zdn//cHJ5/25wd/9sbnX/cHJ5/2psc/9vcXX/bnB3/25wd/9zdXz/
    +bG51/3Byef9ucHf/dXd9/2xudf9zdXz/bnB3/3h5ff9sbnX/eHl9/25xe/9wcnn/c3Z//2xvef9qbHP/
    +cHN9/3V3ff9sb3j/dHeB/25wef9sb3n/bnF7/25wd/9zdn//dXiB/2xvef9ucHf/bnF7/3R2fP9vcnn/
    +dnh//25wd/9ucXv/bnF7/25wd/95e4H/bnF7/3N2f/91eIH/c3V8/3V4gf9wc33/cHJ5/25wd/9wcnn/
    +dXiB/3Byef9ucHf/bG95/2xvef9wc33/bnB3/21vc/91d33/eHl9/3Byef95e4H/cHJ5/2xvef9ucXv/
    +amxz/3N1fP9qbXf/cHN9/21vc/9wcnn/bnB3/3N1fP9vcXX/dHZ9/21wef9xc3z/bnB3/3N2f/9ucXv/
    +c3Z//3V4gf9wc33/dXd+/2xvef9ydX7/e36H/3t9g/9ucXv/d3qD/3l8hv94eX3/cHJ5/3V3ff9tb3P/
    +cHJ5/2xudf9ucHf/bG51/2ptd/9sbnX/dnh8/25wd/9qbXf/Z2p0/2dqdP9sbnX/bnF7/3V3ff9sbnX/
    +bG51/2Zpc/9sb3n/am13/2ptd/9sb3n/c3V8/3Bzff9wc33/bG95/2ptd/9ucXv/cHN9/3Byef9ucHf/
    +bG51/2xvef9nanT/bnB3/29xdf9zdXz/dnh8/25wd/9qbXf/amxz/2xudf9qbXf/Z2p0/2xvef9qbHP/
    +Zmlz/3Bzff9sbnX/bG95/2ptd/9zdXz/bG51/25xe/91d33/bG51/2psc/9ucHf/dXd9/3h5ff9wcnn/
    +Zmlz/2dqdP9sbnX/dnh8/2xudf9ucHf/b3F1/3d5f/9sbnX/cHJ5/3V3ff9qbXf/bG95/2xudf9sb3n/
    +bnB3/3N1fP9qbHP/bnB3/2xudf9nanT/am13/2xvef9sbnX/bW9z/3N1fP9sbnX/bG95/2psc/9sb3n/
    +Z2p0/25xe/9qbXf/eXuB/3d5f/9sbnX/bG51/3Bzff9sbnX/bW9z/2xudf9sbnX/bG51/2Zpc/9zdn//
    +cHN9/2xvef9vcXX/cHJ5/29xdf9wcnn/c3V8/25xe/92eHz/dnh8/3Byef9maG7/bnB3/3N1fP9zdXz/
    +bnB3/3Byef9wc33/dXiB/3V4gf97fof/eXyG/3d6g/9qbXf/dXiB/3Bzff9wc33/bnB3/29xdf9sbnX/
    +dXd9/25xe/9wc33/c3Z//3Byef9ucHf/bG51/25wd/9qbHP/dXd9/3Byef93eX//amxz/21vc/9sbnX/
    +bnF7/2xvef9ucHf/dXd9/21vc/9ucHf/c3V8/3Byef9ucHf/bG51/3Byef9sbnX/bG51/2ptd/9sbnX/
    +bnB3/2xudf9zdXz/bG51/3V3ff9qbXf/dXd9/25xe/91d33/Z2p0/3h5ff9ucHf/b3F1/3Byef93eoP/
    +c3V8/3l7gf96fIP/c3Z//3Z5g/9ucXr/bG51/2xudf9qbXf/bnF7/3d5f/9tb3P/bW9z/2xudf9ucHf/
    +b3F2/3d5gv9wcnn/bnF7/3Bzff9ucHf/d3qD/25wd/9ucHf/cHN9/25wd/92eHz/b3F1/25wd/9sb3n/
    +bnB3/3Bzff9sb3n/bG95/25wd/9ucHf/c3V8/29xdf9vcXX/dXd9/3V3ff9ucHf/eXuB/3Byef9sb3n/
    +bnF7/2dqdP9zdXz/am13/2xvef9qbHP/bG95/2xudf9wc33/amxz/3Bzff9qbXb/bG53/2hqdP9vcnz/
    +am13/3Byef9wcnj/cXN6/3JzeP9oanP/Z2pz/3N1fP9ucXv/Zmhu/3N1fP9ucHf/dnh8/3Byef94eX3/
    +bnB3/3V3ff9sbnX/bG51/25wd/9sbnX/bG51/3N1fP9wc33/am13/2dqdP9maXP/amxz/2ptd/9zdXz/
    +Z2px/2Zpc/9iZW7/Zmlz/2RmbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Rncf9iZW7/Z2p0/2Zpc/9maG7/
    +Zmlz/2Zpc/9qbXf/Zmlz/2xvef9sbnX/bnF7/3N1fP9qbXf/amxz/2psc/9qbXf/am13/2xudf91d33/
    +b3F1/2xvef91d33/bG95/3Byef9sbnX/dXd9/2ptd/9wc33/dXd9/21vc/9nanH/cHJ5/3Z4fP92eHz/
    +c3V8/2dqcf9sb3n/cHJ5/3t9g/9wc33/c3V8/25wd/93eoP/bnB3/3N1fP91d33/bG51/3Byef9sbnX/
    +cHJ5/3Byef91d33/b3F1/3Byef9sbnX/bnB3/3N1fP9ucHf/bW9z/29xdf9zdXz/b3F1/2xvef9ucHf/
    +cHN9/25wd/9wc33/bG95/3+Bh/93eX//bnB3/25xe/91eIH/cHN9/3N2f/9zdn//cHJ5/2ptd/9kZ3H/
    +dXiB/3Bzff9sb3n/cHJ5/3Bzff9wcnn/c3Z//3l7gf9zdn//c3Z//3l7gf9wc33/Z2p0/25wd/91eIH/
    +c3Z//3Byef9vcXX/bnB3/3Bzff9zdn//d3l//3h5ff9zdn//bG95/3d6g/9zdn//cHN9/25wd/9vcXX/
    +cHJ5/3N1fP9ucHf/dXd9/3N1fP9ucHf/bnB3/3Byef9sbnX/Zmlz/25xe/9ucXv/d3l//2ptd/9qbHP/
    +amxz/2ptd/9qbXf/am13/3N1fP9sbnX/Z2p0/2ptd/9sb3n/Z2px/2Zpc/9nanT/ZGdx/2Zpc/9kZ3H/
    +amxz/2ptd/9nanT/cHN9/2xudf9wcnn/bG51/3Z4fP91d33/dXd9/2xvef95e4H/bnB3/25wd/9wcnn/
    +c3Z//25wd/9zdn//dnh8/29yfP94eoH/bnB5/25wd/9ucXv/bnB3/3Byef93eX//bW9z/21vc/9sb3n/
    +a252/2xudf92eYL/cHJ5/3Bzff9wc33/c3V8/3d6g/9zdn//dXiB/3V4gf9ucHf/eHl9/25wd/9vcXX/
    +bG51/25wd/9wcnn/b3F1/2xudf9tb3P/bG51/3Byef9sbnX/bW9z/3Bzff9wc33/bG51/25wd/9qbXf/
    +am13/2xvef9kZ3H/am13/2Rncf9sb3n/am13/3Bzff9qbXf/dXd9/2ptd/9xc3v/bG53/2ttc/9lZ3D/
    +Z2p0/2Zpc/9maXP/ZGdx/2dqdP9tb3j/am13/21vdv90dn3/dXd9/2dqcf9zdXz/bnF7/3N1fP9qbXf/
    +dXd9/2xvef9ucXv/bW9z/3Byef9wcnn/b3F1/2xvef9ucXv/dXd9/25wd/9ucHf/bG95/25xe/9zdXz/
    +e32D/3Byef9vcXX/bnB3/25xe/9wcnn/b3F1/2xudf9wcnn/cHJ5/3Byef9wcnn/bG51/3Byef9ucXv/
    +am13/2ptd/9sbnX/bnF7/2dqdP9qbXf/am13/2xvef91d33/cHJ5/29xdf9vcXX/bG95/3Byef9ucHf/
    +c3V8/25wd/9sbnX/dnh8/3Byef9ucHf/bW9z/3V3ff9sb3n/d3l//3d6g/9zdXz/bG95/3d6g/97fYP/
    +d3l//3Bzff9sb3n/cHJ5/2xvef92eHz/am13/2xvef9ucHf/eXyG/25xe/93eX//cHN9/25xe/9wcnn/
    +bG95/2xvef9wc33/dXiB/25wd/9ucXv/am13/25wd/9wc33/bnF7/2xvef9sb3n/cHN9/25wd/9sb3n/
    +Z2p0/25xe/9nanT/bnF7/21vc/+Agob/d3l//25wd/9ucHf/dXiB/3Bzff9zdn//c3Z//25xe/9ucXv/
    +Zmlz/3N2f/9ucXv/bnB3/25wd/9ucXv/bW9z/25wd/91d33/bnB3/25xe/9zdXz/am13/2Rncf9qbXf/
    +bG95/2ptd/9nanT/Z2px/2Zpc/9nanT/Z2p0/3Byef9ucHf/bnB3/2dqcf9zdXz/bG95/2ptd/9qbHP/
    +bG51/2xvef9sb3n/bG51/3Bzff9ucXv/am13/2xudf9ucXv/bnB3/2dqdP91d33/c3V8/3d5f/9sbnX/
    +b3F1/3Byef9wcnn/bG95/2ptd/91d33/bG51/2ptd/9sb3n/cHN9/2Zpc/9qbHP/bG95/2xudf9sb3n/
    +Z2p0/2ptd/9qbXf/Z2p0/2ptd/9nanH/am13/2Zpc/9wcnn/c3V8/3V3ff9qbXf/cHN9/2dqdP9maXP/
    +am13/3N1fP9tb3P/c3V8/3N1fP9sb3n/d3qC/25wef9ucHX/bnB3/25wd/9ucXv/d3qD/3Byef9ucHf/
    +b3J8/29xef9sbnT/cHJ6/2dpb/9qbXf/Z2p0/2dqcf9wcnn/am13/2ptd/9ucXv/bG51/25xe/9qbXf/
    +am13/2Zpc/9sbnX/cHN9/25wd/9sb3n/b3F1/29xdf9zdXz/bnB3/29xdf91d33/bnB3/2ptd/91d33/
    +cHJ5/2xudf9ucXv/am13/2ptd/9maXP/bG95/2xvef9ucXv/am13/3Bzff9sb3n/cHN9/21wev9tcHr/
    +bG95/3h6gP91eIH/foCG/3Z5gv93eoP/dXiA/25weP9pbHb/bnF7/3Bzff9maXP/bnB3/2xvef95fIb/
    +dXiB/3t+h/93eoP/dXiB/3Byef9zdn//bG95/25xe/9sb3n/cHN9/3V4gf9wc33/bnB3/25wd/9wc33/
    +c3Z//36Ahv91eIH/c3V8/25wd/9wc33/bnB3/2xudf9ucHf/c3V8/3V3ff9zdn//bnF7/2xvef9zdn//
    +cHN9/3Bzff9ucXv/c3V8/3Bzff9sbnX/bG95/25wd/9zdXz/dXd9/3Byef9sbnX/b3F1/2ptd/9ucHf/
    +bG51/3N1fP9qbXf/bG51/3V3ff9ucXv/bnB3/2xudf9zdXz/bW9z/3Byef91d33/bG51/2ptd/9qbXf/
    +cHN9/2xvef9qbXf/Zmlz/2xudf9qbXf/c3V8/2Zpc/9maXP/Z2px/3Bzff9nanH/bnF7/2xvef9qbHP/
    +am13/2Zpc/9nanH/Zmhu/2Zpc/9kZ3H/Zmlz/2dqcf9kZ3H/Z2p0/2Zpc/9nanT/bG51/2xvef9sbnX/
    +am13/2dqcf9sb3n/Zmlz/25xe/9sbnX/f4GH/3V3ff9sbnX/bG95/3Bzff9sbnX/bnF7/2xvef9qbHP/
    +amxz/2RmbP9wc33/am13/2xudf9wcnn/cHJ5/2xudf9ucHf/c3V8/2ptd/9sb3n/bnF7/2xudf9iZW7/
    +Z2p0/2xvef9sb3n/Z2p0/2ptd/9qbXf/bG95/3Bzff91d33/dXd9/3V3ff9vcXX/d3l//3V3ff9zdXz/
    +bG51/2xudf9sb3n/bnF7/21vc/9zdXz/dXd9/25wd/9ucHf/bnB3/21vc/9nanH/c3V8/2xvef91d33/
    +Z2p0/21vc/9zdXz/bnB3/2xudf9wcnn/d3l//2ptd/9nanT/am13/3V3ff9sbnX/bG51/2xvef9sbnX/
    +am13/2Zpc/9sbnX/bG51/2xudf9ucHf/bW9z/3Byef9sb3n/dXd9/3V3ff93eX//bW9z/3V3ff9sbnX/
    +bG51/2xudf91d33/cHJ5/3d5f/91eIH/cXR+/3Z5gv9wc3r/aGt1/25wd/9ucHf/bnF7/3d5f/9sbnX/
    +bG95/2xvef9ydHv/bnF5/3V4gf9ucHf/cHN9/2xvef9ucHf/dnh8/3Byef9ucHf/bnB3/2xudf9wcnn/
    +bnB3/3Byef9nanT/bG95/3N2f/9vcXX/bnB3/21vc/9sb3n/c3Z//3Bzff9wcnn/dXiB/25wd/9tb3P/
    +eHl9/3V3ff9ucHf/c3V8/29xdf9ucHf/amxz/3N1fP9wcnn/c3Z//25xe/9zdXz/cHJ5/3V3ff9zdX3/
    +bnF7/29xeP90d4D/cHN9/3Bzff9sb3n/cXN7/3Bze/9tb3f/aGp0/2xvef9ucXv/Z2p0/25xe/9sb3n/
    +c3V8/25wd/94eX3/bnB3/3Bzff9wcnn/cHN9/25xe/9zdn//cHJ5/3N2f/91eIH/cHN9/3Byef9sb3n/
    +c3V8/3N1fP97fYP/c3V8/29xdf9vcXX/dXd9/21vc/9ucHf/cHJ5/3Byef9wcnn/dXd9/2xvef9nanT/
    +bG95/2ptd/9qbXf/amxz/2Zpc/9qbXf/Zmlz/2dqdP9sbnX/bG95/3N1fP9wc33/am13/2psc/9sbnX/
    +bnF7/2xudf9zdXz/bG95/25wd/91d33/cHN9/25xe/9ucHf/dXd9/29xdf9zdXz/c3V8/25wd/9ucHf/
    +bnF7/3V3ff9ucXv/d3qD/2xvef9ucHf/bG95/3d5f/9sb3n/bnB3/3Byef95fIb/bnB3/3N1fP9wcnn/
    +bW9z/25wd/9wcnn/bG51/21vc/9wcnn/bG51/25wd/9ucHf/bG51/2xvef9sb3n/amxz/25wd/9ucXv/
    +bW9z/2xudf9sb3n/bnF7/2xvef91eIH/bG95/4GDiv91d33/bW9z/3Byef9wc33/am13/25xe/9sb3n/
    +amxz/2xudf9maXP/dnh8/2xvef9ucHf/cHJ5/25wd/9sbnX/b3F1/3Z4fP9zdXz/c3V8/3N1fP9ucHf/
    +amxz/2xudf9wcnn/bnB3/29xdf9ucHf/bnB3/25xe/91eIH/d3l//3d6g/93eX//bG95/3d5f/9zdXz/
    +cHN9/2psc/9ucHf/cHN9/3Bzff9ucXv/c3Z//3N2f/9wcnn/cHJ5/3Bzff9wcnn/cHJ5/3d6g/95fIb/
    +eXyG/25xe/9zdn//c3Z//25xe/91eIH/e32D/3l8hv91eIH/c3V8/3d6g/97fYP/bnF7/25wd/9ucXv/
    +cHJ5/3Bzff9sb3n/cHN9/3Byef9sb3n/cHJ5/25wd/9wc33/bnB3/25xe/9wcnn/eHl9/29xdf91d33/
    +cHJ5/2xudf9vcXX/d3l//3Bzff97fYP/dXiB/29yfP91eIH/cHN9/21wev9wc33/cHJ5/2xvef93eX//
    +bnB3/2xvef9wcnn/cXR9/21weP91d33/bnB3/3N1fP9sbnX/b3F1/3Z4fP91d33/cHN9/25xe/91eIH/
    +cHN9/25wd/9wc33/am13/3Byef91eIH/c3Z//3N2f/9zdXz/dXd9/3l7gf93eX//c3Z//3t9g/91eIH/
    +c3V8/3l7gf9zdn//c3Z//3l8hv91d33/d3l//3Z4fP97fYP/e32D/3V4gf9wc33/dXiB/3N2f/92eYL/
    +c3Z+/3Bye/9vcXj/c3V8/25wd/9ucXv/bG95/2xvef9xdHz/bG95/2ptd/9wc33/cHN9/2dqdP9zdXz/
    +c3V8/25xe/9sb3n/c3V8/2xvef9qbXf/bG51/3V3ff9ucHf/c3V8/29xdf9wcnn/cHN9/2xvef9qbXf/
    +bG51/3N1fP92eHz/eXuB/3N1fP9sbnX/bW9z/3Z4fP9sbnX/am13/2xvef9sb3n/cHJ5/3Byef9ucHf/
    +amxz/3N1fP9ucXv/bG95/2ptd/9maXP/bnB3/2xudf9sb3n/bG51/2xvef9wc33/c3V8/2xvef9tb3P/
    +bW9z/3Byef9qbHP/c3V8/25wd/9sb3n/dXd9/3V3ff9ucHf/bW9z/3Byef9ucHf/cHJ5/3Byef9sbnX/
    +bG51/25xe/9wc33/am13/3Bzff9qbXf/bnB3/25wd/91d33/bG51/2psc/9ucHf/d3qD/2xvef9wc33/
    +cHJ5/25wd/9ucXv/c3Z//25wd/9wcnn/cHN9/25wd/9wc33/bnF7/3Byef9zdn//d3qD/3Byef9zdn//
    +dXiB/25xe/9wc33/bnF7/3Bzff9wcnn/dXiB/2ptd/+BhI3/eXuB/25xe/91eIH/c3Z//2xvef9wc33/
    +bnF7/2xudf9nanT/Z2p0/3V3ff9ucHf/bG95/3Byef9ucHf/bG51/25wd/91d33/c3V8/3V3ff9ucXv/
    +cHJ5/2xvef9wcnn/c3Z//3N2f/9wc33/cHJ5/25xe/9ucXv/dXd9/3Z4fP93eX//eHl9/25wd/94eX3/
    +cHJ5/3V3ff9qbHP/bW9z/25wd/9ucHf/bnB3/3N1fP9ucXv/bG51/2psc/9nanH/Z2px/2dqdP9sb3n/
    +am13/3N1fP9maXP/amxz/2ptd/9qbXf/am13/3Bzff9zdXz/am13/2ptd/9zdXz/dnh8/2dqdP9wcnn/
    +cHN9/2xvef9ucXv/Z2p0/25xe/9vcXX/amxz/3V3ff9vcXX/c3V8/2ptd/9wc33/cHN9/3l7gf9ucHf/
    +c3Z//2xvef9sb3n/cHJ5/3Z4fP9wcnn/eHl9/3Z4fP9ydHv/dXd8/25wd/9qbHP/bG51/2xudf9sbnX/
    +dnh8/2xudf9sbnX/bnB3/29xeP9tcHj/dHZ9/25xe/9zdn//bnB3/29xdf94eX3/cHN9/3N1fP9ucXv/
    +cHN9/3N2f/9ucHf/bnB3/2xvef9ucHf/c3Z//3N1fP9ucXv/cHN9/3Bzff95fIb/c3Z//3Bzff93eoP/
    +bnF7/25wd/97fYP/d3qD/3V4gf93eoP/cHN9/3N2f/9zdXz/cHN9/25xe/9wc33/cHJ5/3N2f/9zdn//
    +eHqA/3N2fv9vcnr/bnB3/3R2ff9wcnn/c3V8/3V3ff90dnz/c3Z9/29xef9tb3f/c3Z//3Byef9sbnX/
    +cHN9/25xe/9zdn//cHN9/3d5f/9ucXv/cHJ5/29xdf9wcnn/cHJ5/3V4gf9ucHf/c3Z//3V3ff91d33/
    +amxz/25wd/9wcnn/dnh8/3l7gf9zdXz/bW9z/2xudf9zdXz/bG51/2xudf9zdXz/bG95/3Byef9wcnn/
    +c3V8/25wd/9zdXz/cHJ5/3N1fP9ucHf/Z2p0/2xvef9sbnX/bnB3/21vc/9ucHf/cHJ5/3V3ff9qbXf/
    +bnB3/2ptd/9ucXv/Zmlz/3N1fP9vcXX/bnB3/3V3ff9wcnn/am13/2xudf9ucXv/am13/3Bzff9ucXv/
    +bG51/21vc/9ucXv/cHN9/2xudf91d33/bW9z/2xudf9sbnX/dXd9/2psc/9qbHP/bW9z/3V3ff9tb3P/
    +bG95/2xudf9qbXf/bG51/3V3ff9ucHf/bnB3/3Bzff9vcXX/bG95/2xvef9vcXX/cHN9/3V3ff9sb3n/
    +dXd9/25wd/9ucXv/c3Z//2ptd/9sb3n/bG51/3N1fP9nanT/gIKG/3Z4fP9vcXX/dXiB/25xe/9qbXf/
    +c3Z//3Bzff9sbnX/bG51/25wd/91eIH/c3V8/25xe/9sb3n/bnF7/2xvef9zdn//c3Z//3V4gf93eoP/
    +cHN9/3Byef9ucHf/cHN9/3d6g/9wc33/cHN9/3N1fP9ucXv/bnF7/3l7gf93eX//eXuB/3l7gf9ucXv/
    +dnh8/3Byef9zdXz/bnB3/25wd/9wcnn/bnF7/2xvef9wc33/bnF7/2xudf9ucHf/bnB3/25wd/9vcXX/
    +cHJ5/3V3ff95e4H/bnB3/25wd/9wc33/bnF7/3Bzff95e4H/foCG/3d5f/92eHz/fn+D/36Ahv9zdXz/
    +e32D/3+Bh/95fIb/e36H/3N2f/9+gIb/eHl9/3V3ff97fYP/d3l//3l7gf94eX3/e32D/3d6g/9+gIb/
    +c3V8/3d6g/9ucXv/Z2p0/29xdf93eX//c3Z//3l7gf94eoD/dXiB/3R2fv9qbXf/aGty/2dqcf9qbHP/
    +ZGdx/25wd/9nanH/Z2p0/2xvef9qbXT/aWty/3Fzev9qbHP/bnF7/21vc/9sbnX/dnh8/3N1fP9ucHf/
    +cHJ5/3Byef9zdXz/bnB3/25wd/9ucHf/b3F1/25xe/9sb3n/bG95/25xe/9ucXv/c3Z//3N2f/9wc33/
    +eXuB/3N2f/9wc33/fX6B/3l7gf9+gIb/e32D/3d5f/91d33/dXd9/3V4gf93eoP/d3qD/3N2f/93eoP/
    +d3qD/3t+h/97fof/eHuC/3R3gP93eoL/eXuB/3l7gf93eX//dXh+/3R2fP9ucXv/bnB3/25xe/9wcnn/
    +amxz/3Byef9sbnX/c3Z//3V4gf93eX//c3Z//3N2f/9ucXv/cHN9/25xe/93eX//bG95/3Byef9zdn//
    +dXiB/25xe/9wc33/dXiB/3t9g/9/gYf/d3qD/3Bzff91eIH/d3qD/3Bzff91eIH/d3qD/25xe/9sb3n/
    +cHN9/3Bzff9ucHf/cHN9/3N2f/91eIH/c3Z//3N1fP9zdn//cHJ5/3Bzff9sb3n/bnB3/3N1fP9zdXz/
    +b3F1/3Byef9wcnn/c3V8/2xudf91d33/cHJ5/25wd/93eX//c3V8/29xdf9ucHf/cHN9/2xvef91d33/
    +c3V8/2ptd/9sbnX/bnF7/3V3ff9sbnX/bnF7/2xudf9qbXf/bG51/3N1fP9kZ3H/am13/2xudf93eX//
    +amxz/2xvef9qbXf/ZGdx/2xudf9sb3n/Z2p0/2psc/9qbXf/amxz/2ptd/9sbnX/amxz/2xvef9zdXz/
    +amxz/25xe/9qbXf/am13/2xvef9wcnn/bnF7/25xe/93eX//cHJ5/4GEjf97fYP/d3qD/3l7gf91eIH/
    +bG95/3l8hv97fYP/cHN9/25xe/9sb3n/d3qD/3N1fP9ucXv/dXiB/3N2f/9wc33/c3Z//3V4gf93eoP/
    +eXuB/3Bzff9ucXv/bG95/2ptd/91d33/bnB3/3N1fP9ucHf/bG95/25xe/91eIH/d3l//3d5f/93eX//
    +bnF7/3d5f/9wc33/dXiB/2xvef9ucXv/dXiB/3N2f/91eIH/eXuB/3N2f/9ucXv/bnF7/3Bzff9zdXz/
    +cHJ5/3N2f/95e4H/d3qD/25wd/9ucHf/bnF7/3Bzff9wc33/dXd9/3d5f/9wcnn/bnB3/25xe/9zdn//
    +bG95/2xvef9wc33/bG95/3Byef9nanT/bnF7/25wd/9sb3n/dXd9/3Bzff9wcnn/am13/3Bzff9zdXz/
    +dnh8/29xdf9zdXz/am13/2Zpc/9qbXf/c3V8/3Byef9zdXz/dXd9/3J0e/92eH3/bW90/2xudv9tb3P/
    +bG95/2xvef93eX//c3Z//3d6g/90d4D/bXB6/25wef90dn3/b3F2/3V3ff9sbnX/amxz/3V3ff9zdXz/
    +cHJ5/3Bzff9sb3n/bnF7/25wd/9ucHf/b3F1/2xudf9sbnX/bG51/29xdf9sb3n/bnF7/3Bzff9ucXv/
    +cHJ5/3V4gf9zdn//c3V8/3V4gf9zdn//d3qD/3V4gf9wc33/cHN9/3Byef9wc33/c3Z//3N2f/9sb3n/
    +bnF7/3Bzff92eH7/c3Z//29yfP9ucXr/c3Z//3N2f/91d33/c3Z//3R2fP9zdoD/cHN9/3Bzff91eIH/
    +c3Z//3Byef9wc33/cHJ5/3N1fP9wc33/c3V8/3V3ff9wcnn/bnB3/3Byef9ucHf/dXd9/2ptd/9ucXv/
    +bG95/25xe/9maXP/amxz/2xvef9wc33/dXiB/2ptd/9sbnX/bG95/2xvef9sbnX/c3V8/3N1fP9sbnX/
    +am13/2xvef9sbnX/Z2p0/25xe/9wc33/dXd9/25wd/9vcXX/bnB3/2xvef9ucXv/cHN9/25xe/9zdn//
    +dXiB/25wd/9wc33/cHN9/3N2f/9sb3n/d3qD/3Bzff9sb3n/eXyG/3Bzff9vcXX/b3F1/3N1fP9qbHP/
    +cHN9/3Bzff9nanT/am13/2ptd/9wc33/amxz/2ptd/9nanH/Zmlz/2dqcf9maXP/YGNs/2Rncf9nanH/
    +c3V8/2xudf9sb3n/amxz/2Zpc/9qbXf/bnF7/2xudf9tb3P/cHJ5/25wd/9ucXv/bnF7/3Byef9ucHf/
    +cHN9/25wd/91eIH/bnF7/25xe/91eIH/dnh8/3N2f/91eIH/fn+D/3h5ff+Ji5H/fn+D/3l7gf9+f4P/
    +e32D/3N1fP9+f4P/foCG/3d5f/91d33/cHN9/3l7gf91d33/cHN9/3N2f/9wc33/bnF7/3V4gf9zdn//
    +dXiB/3V4gf9zdn//c3Z//3Byef9ucXv/c3Z//25xe/9ucXv/bnB3/25wd/9qbXf/dXd9/3d5f/91d33/
    +d3l//25wd/91d33/bnB3/3Z4fP9sbnX/c3V8/3V3ff9wcnn/cHJ5/3Z4fP9zdXz/b3F1/25wd/9wcnn/
    +b3F1/21vc/9zdXz/dXd9/3d5f/9qbXf/bG51/25xe/9sbnX/dXd9/3V3ff93eX//am13/2psc/9ucXv/
    +am13/2Jlbv9qbHP/am13/2dqcf9maXP/XWBq/2dqcf9kZ3H/Z2p0/3Bzff9qbXf/Z2px/2Rncf9sb3n/
    +bG95/3Bzff9qbHP/c3V8/2xudf9maXP/Z2p0/3Bzff9sbnX/c3V8/3V3ff9xdH3/cnV+/2xudv9tb3b/
    +bG51/2ptd/9ucHf/dnh8/25wd/9wcnn/bnB3/29xef9wcnn/dXh+/3Bzff95e4H/cHN9/2xvef95e4H/
    +c3Z//3V4gf9zdn//cHN9/3N1fP9ucHf/cHJ5/3Byef9wcnn/cHN9/3Byef9sb3n/cHN9/25xe/9wcnn/
    +bnB3/21vc/9wcnn/cHJ5/2xudf9zdXz/bG51/25xe/9wc33/bW9z/29xdf9ucHf/bnB3/3N1fP91d33/
    +bG95/3Byef9sb3n/dHZ9/3R3f/9ucXn/bnB3/25xe/91d33/dXd9/3N2f/91eID/eHqA/3J0e/93eYD/
    +foCG/3l8hv95e4H/e36H/3l7gf9zdn//c3Z//3V3ff93eX//bnF7/25xe/9wc33/dXiB/3V4gf9vcXX/
    +cHN9/3Bzff9zdn//bG51/29xdf9wcnn/dnh8/3l7gf9wcnn/bnF7/3N2f/91eIH/cHJ5/3V4gf93eoP/
    +bnF7/3N2f/9zdn//c3Z//3Bzff93eoP/eXyG/31+gf95e4H/c3Z//3V4gf9zdXz/c3Z//3N2f/9zdXz/
    +dXiB/3t9g/92eHz/eXuB/3d5f/95e4H/dXd9/3t9g/93eoP/c3Z//36Biv91eIH/bnF7/3Byef93eoP/
    +cHN9/3l7gf93eoP/bG95/2xvef9wc33/dXd9/2xvef9zdn//bG95/2xvef9zdXz/cHJ5/2dqcf9qbHP/
    +bW9z/3V3ff9qbXf/c3V8/25wd/9sb3n/cHN9/3V4gf9sb3n/bnF7/2xvef9ucXv/bnF7/3Byef9ucXv/
    +c3Z//3l7gf93eoP/eXyG/3d5f/93eX//fX6B/2ptd/9sbnX/am13/3Bzff9maXP/e32D/3Bzff9tb3P/
    +c3V8/2xvef9nanT/bnF7/25xe/9qbHP/bW9z/2psc/9ucXv/bG51/2Zpc/9sb3n/am13/2Rncf9qbXf/
    +am13/2dqdP9nanT/Z2px/2dqcf9nanH/ZGdx/2dqdP9maXP/Zmhu/2Jlbv9iZW7/ZGZs/25wd/9zdXz/
    +cHN9/3N1fP9nanH/bnF7/2dqcf9wc33/Z2p0/2ptd/93eX//bnF7/3Byef91d33/bnB3/25wd/9vcXX/
    +cHJ5/21vc/9ucHf/cHJ5/3Z4fP95e4H/bG51/25wd/9zdn//bG51/3h5ff91d33/d3l//3Byef9qbHP/
    +c3V8/25xe/9kZ3H/am13/2xvef9nanH/Z2p0/2BjbP9nanH/YmVu/2Jlbv9nanT/am13/2dqcf9kZ3H/
    +bnF7/3Byef94eX3/bW9z/3V3ff9ucHf/Zmlz/2Zpc/9zdn//cHJ5/3V4gf94eoD/c3Z//3J1f/9tcHj/
    +bW92/2xudf9sbnX/bG51/3N1fP9wcnn/cHJ5/25wd/9vcnz/bnB3/3N1fP9sbnX/c3V8/21vc/9sbnX/
    +eHl9/3N2f/91d33/bG95/2xvef9ucXv/b3F1/2xudf9vcXX/b3F1/21vc/9tb3P/b3F1/3N1fP9sbnX/
    +bG95/21vc/9ucHf/cHN9/3Byef9vcXX/eHl9/25wd/9zdn//dXd9/21vc/9sbnX/am13/2xudf9ucXv/
    +bnF7/21vc/9sbnX/bnB3/3V3ff9wc3v/bnB3/25wdP9sb3n/c3Z//3V4gf9ucXv/dHZ8/3V2ev9ucHf/
    +a253/3N2f/9zdXz/dXd9/3V4gf9zdXz/c3Z//3d5f/91eIH/d3l//3N1fP9ucHf/cHJ5/3Bzff9sb3n/
    +amxz/2ptd/9wcnn/bnF7/2Rncf9sbnX/bnF7/3Bzff91eIH/bG95/25xe/9wc33/bnF7/2ptd/9wc33/
    +cHN9/2ptd/9sb3n/am13/2xudf9maXP/cHN9/25xe/9wc33/bG95/2xudf9sbnX/amxz/2xudf9sbnX/
    +amxz/2ptd/9ucXv/Z2p0/2xudf9nanT/amxz/2BjbP9ucXv/am13/2xudf91d33/bnF7/2xudf9sbnX/
    +cHN9/2xudf9zdXz/c3V8/25wd/9ucHf/dXd9/3Z4fP9wcnn/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/
    +cHJ5/3N1fP97fYP/cHN9/3V4gf9wcnn/bG95/25xe/9zdXz/amxz/21vc/9ucHf/bnB3/2xudf9sbnX/
    +bnF7/2xudf9wc33/bG95/3Byef9sbnX/cHJ5/3V3ff9ucHf/cHJ5/25xe/91d33/am13/3+Bh/91d33/
    +bnB3/3Z4fP9ucHf/amxz/2xvef9wc33/Zmlz/2psc/9maXP/am13/2dqdP9nanT/am13/2Zobv9iZW7/
    +Z2px/2ptd/9maXP/ZGdx/2Zobv9kZ3H/Zmhu/2Zobv9maXP/ZGZs/2Rncf9iZW7/ZGdx/2Zobv9ucHf/
    +cHJ5/2Zpc/9wc33/Zmhu/25xe/9kZ3H/am13/2BjbP9kZ3H/bnB3/2ptd/9sb3n/bnF7/2ptd/9qbXf/
    +am13/2xvef9qbHP/bG51/21vc/91d33/dXd9/25wd/9vcXX/c3Z//2xvef91eIH/d3qD/3l8hv9wc33/
    +bnF7/3l7gf91eIH/bnF7/3N2f/97fYP/c3V8/3V4gf9sb3n/bnF7/2ptd/9ucHf/dXiB/3V4gf9ucXv/
    +am13/3V4gf95e4H/e32D/3Bzff93eX//cHJ5/25wd/9ucHf/dXiB/3N2f/95fIb/e32D/3l7gf9ydX//
    +bnF7/25wd/9sb3n/bnB3/2xvef9wc33/bnF7/3Byef9vcXn/c3V9/29yev91eH7/bG95/3V4gf9ucXv/
    +bG51/3Z4fP9wcnn/dXd9/2xudf9vcXX/bnB3/29xdf9qbHP/bG51/2xudf9tb3P/bG51/21vc/9wc33/
    +cHJ5/3Byef9wcnn/cHJ5/3V4gf9ucXv/bG95/3l7gf9ucXv/c3Z//25xe/9ucHf/cHJ5/25xe/9ucHf/
    +bnF7/3Bzff9ucHf/cHJ5/3Byef92eHz/c3V8/25wd/9sbnP/cHJ5/3Bzff9ucXv/am13/29yfP9xdHv/
    +a211/2psdP9wcnn/bG51/2xudf9sbnX/bW9z/3Z4fP92eHz/bnB3/3Z4fP9wcnn/am13/25xe/9zdXz/
    +bnF7/2xudf9qbXf/bnF7/3N1fP9nanH/cHJ5/3Byef91d33/e32D/3Byef91d33/c3V8/3Byef9tb3P/
    +cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/amxz/3Bzff9wc33/cHN9/2ptd/9sbnX/bG95/2dqcf9wcnn/
    +bnB3/25xe/9wcnn/dXd9/2xudf9ucHf/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/d3qD/3Byef9ucHf/
    +bW9z/3Byef9sbnX/c3V8/3Bzff9ucHf/bnF7/3V4gf95e4H/c3Z//3d6g/9ucXv/b3F1/3N1fP9ucHf/
    +Zmhu/2ptd/9qbXf/d3l//2xudf9ucXv/bG51/2psc/9wcnn/c3V8/25wd/9ucHf/bG95/3Bzff9wcnn/
    +bG95/3N1fP9ucHf/dXd9/25wd/9wcnn/am13/2xudf91d33/d3l//3t9g/9+f4P/fn+D/3l7gf+IipD/
    +foGK/3l7gf9+gYr/foCG/3N1fP97fYP/e32D/3V3ff93eX//eHl9/3l7gf91d33/dXd9/3d6g/9zdXz/
    +bG95/25wd/91d33/cHJ5/2xvef9sb3n/Z2p0/2psc/9qbHP/am13/2dqcf9qbXf/Zmlz/2Rncf9maG7/
    +cHJ5/3V3ff9qbXf/c3V8/2Zobv9kZ3H/ZGdx/25wd/9kZ3H/Z2p0/3Bzff9ucXv/cHN9/3Bzff9ucHf/
    +amxz/29xdf9wcnn/bnB3/2xudf9tb3P/dnh8/3V3ff9wcnn/b3F1/3Byef9wcnn/c3Z//3N1fP91eIH/
    +bG95/2ptd/91d33/dXd9/2xudf9ucHf/dnh8/2xudf9wcnn/bG51/2xudf9maXP/am13/3N1fP9zdXz/
    +bG51/2dqcf9wcnn/c3V8/3Z4fP9qbXf/dXd9/2ptd/9maXP/bG51/2Zpc/9maG7/Zmlz/2ptd/9sb3j/
    +bW92/21vdv9tb3f/bnB3/2ptd/9nanT/cHN9/3Bzff9sb3n/b3F4/29yfP9rbnj/cXR9/2hrdf9ucXv/
    +bG95/2ptd/9zdXz/bnF7/3Bzff9qbXf/am13/2xvef9vcXX/bG51/2xudf9sbnX/bW9z/2xudf9ucHf/
    +cHJ5/21vc/9sb3n/am13/3Byef9zdXz/bG95/2ptd/9zdXz/bG95/3N1fP9sbnX/bnB3/25wd/9sb3n/
    +bnB3/25xe/9zdn//bnB3/3Byef9wcnn/c3V8/3Fzev9ucXn/bG95/3Bzff9zdn//cHN9/25wd/9wc33/
    +cXN6/2xud/9sbnX/cHN9/25wd/9wcnn/bnB3/25wd/91d33/c3V8/2xvef9zdXz/bnF7/25xe/9qbXf/
    +bnF7/25xe/9qbHP/bG51/2ptd/9qbXf/Zmlz/2xvef9sb3n/bG95/3N2f/9sb3n/bnF7/25xe/9sb3n/
    +bG95/25xe/9wc33/bG95/25xe/9sbnX/bG51/2dqdP9zdXz/dnh8/3Z4fP9wc33/bnB3/3Bzff9sb3n/
    +bG95/29xdf9wcnn/dXiB/3d5f/9ucXv/c3V8/3N2f/9ucXv/bG95/3V4gf9zdn//cHN9/3l8hv91eIH/
    +cHN9/3Byef93eoP/bnF7/3V4gf9zdn//cHJ5/3Byef91eIH/eXuB/3N2f/91eIH/c3Z//3Bzff92eHz/
    +dXd9/2Zobv9ucHf/cHJ5/3V3ff9sbnX/bnF7/2xudf9nanT/cHJ5/3N1fP9sbnX/bnB3/25wd/9zdXz/
    +bnB3/3Bzff9wc33/bnB3/3V4gf9wc33/dXiB/3N1fP91eIH/e32D/3l7gf95e4H/e32D/3t9g/91d33/
    +g4WM/3d6g/9wcnn/dXiB/3V4gf9nanT/dXiB/3d6g/9wc33/c3V8/3N1fP9zdn//bG95/25wd/9ucXv/
    +bG95/29xdf9sbnX/dXd9/3Bzff9sb3n/bnB3/25wd/9ucHf/b3F1/3N1fP9ucHf/dXd9/2ptd/9nanH/
    +bW9z/3d5f/95e4H/cHJ5/3t9g/9ucHf/c3V8/21vc/91d33/bG51/3Byef93eX//bnF7/3N1fP9wcnn/
    +bnB3/2dqcf9sbnX/bG95/2psc/9sbnX/Z2px/2xvef9zdXz/Z2px/2Zobv9qbXf/ZGdx/2xvef9sb3n/
    +dXd9/2ptd/9qbHP/bnF7/25xe/9maXP/bG51/3N1fP9qbHP/cHJ5/2psc/9qbHP/ZGdx/2psc/9wc33/
    +cHN9/2ptd/9nanT/bG95/25xe/91d33/bG51/3d5f/9ucHf/bG51/2psc/9wcnn/bG51/3Byef9wcnn/
    +dHZ8/21vdv9tcHn/bG51/25wd/9sbnX/Zmlz/2xvef9sb3n/am13/25xe/9vcnn/bXB3/3V3fv9ucHf/
    +cHN9/3Byef9sb3n/d3l//3N2f/93eX//bnF7/2xvef9wc33/bnF7/2xvef9ucXv/cHJ5/3N1fP91d33/
    +c3Z//3d6g/9zdXz/cHJ5/25xe/91eIH/foCG/3V4gf9wc33/d3qD/3N2f/95fIb/c3Z//2xvef9sb3n/
    +bnF7/3Byef9wc33/dXiB/25xe/9ucXv/cHJ5/3N2f/9ydX7/cHJ5/2xvef9ucXv/c3Z//3Bzff9wc33/
    +cnV+/3J0ev9ucHn/a254/3Bzff9vcXX/b3F1/25xe/9wc33/dnh8/3N1fP9ucHf/d3l//3Byef92eHz/
    +bnF7/3N2f/95e4H/cHJ5/25xe/9zdn//cHN9/25xe/91eIH/d3qD/3d6g/97fof/dXiB/3t9g/99foH/
    +e32D/3d6g/93eoP/eXuB/3V4gf91eIH/dXiB/3V3ff92eHz/eXuB/3t9g/9+f4P/eXuB/3Bzff95e4H/
    +cHN9/3Bzff9wcnn/bnF7/3V4gf95e4H/cHN9/3Bzff93eoP/bnB3/2ptd/9ucXv/bnB3/2xvef91eIH/
    +cHN9/2xvef9vcXX/c3V8/25wd/9ucHf/c3V8/2xudf9sbnX/dXd9/3V3ff9wc33/dXiB/3V4gf9zdn//
    +eXuB/3N2f/9maXP/bnB3/3Bzff95e4H/dXiB/3l7gf9zdn//c3Z//3t9g/97fYP/c3V8/3Z4fP93eoP/
    +eXyG/3d5f/97fYP/foCG/3h5ff9+f4P/e32D/35/g/91d33/eXuB/36Ahv9sb3n/am13/3Bzff92eHz/
    +bnB3/3l8hv9wc33/bnB3/25xe/9ucXv/Zmlz/3V4gf97fYP/c3V8/3Byef9zdXz/d3qD/3V3ff93eX//
    +foCG/3Z4fP91d33/c3Z//3t9g/97fYP/d3qD/3V4gf91d33/dXd9/3N2f/95e4H/d3qD/3d6g/9sb3n/
    +bG95/3Byef95e4H/e36H/3Bzff95fIb/cHJ5/3V4gf9zdXz/c3Z//29xdf9zdXz/dXiB/3Bzff93eX//
    +cHJ5/2xvef9qbHP/bnB3/25wd/9tb3P/bW9z/25wd/9zdXz/dXiB/2xvef9ucHf/c3Z//3Byef91d33/
    +c3V8/3d5f/9wcnn/bW9z/3N1fP9zdXz/bG51/25wd/91d33/bW9z/3Bzff9sb3n/bnB3/2psc/9ucHf/
    +dnh8/3N2f/9vcXX/amxz/2xvef9wc33/c3V8/2xudf93eX//bG51/2xudf9qbHP/dXiB/3N2f/9zdn//
    +cHN8/3N1fP9tb3b/cXN6/25wd/9ucHf/b3F1/25wd/9ucXv/c3Z//3Bzff92eYL/dHZ+/3Fzev93eX//
    +bW92/3V3ff9wcnn/bnB3/3N1fP9ucXv/cHN9/2xvef9sbnX/cHN9/2xudf9kZ3H/am13/2ptd/9nanT/
    +Zmlz/2ptd/9wcnn/bG51/21vc/9ucHf/bnF7/3V3ff9sb3n/bG95/3N1fP9vcXX/dnh8/25wd/9sbnX/
    +am13/25wd/9vcXX/b3F1/3Byef9vcXX/dXd9/3Byef90dn3/cXN9/25wd/9tcHn/bXB6/25xe/9ucHf/
    +bnB3/3Byef9wc3r/bW94/2ptd/9zdXz/b3F1/21vc/9ucHf/bnF7/3V3ff9sb3n/bnB3/3V3ff9sb3n/
    +c3V8/3Byef9zdXz/c3Z//25wd/9ucXv/bG95/25wd/9wcnn/cHN9/3N1fP9ucXv/d3l//25xe/9wc33/
    +dXd9/3N2f/9wcnn/d3qD/3d5f/9zdn//c3Z//3Byef9wcnn/bnB3/25xe/9wc33/dXd9/2xudf9tb3P/
    +c3V8/2dqdP9sbnX/bG51/21vc/9wcnn/c3V8/2Rncf9qbXf/bnF7/2xudf9tb3P/am13/2xudf9qbHP/
    +dXd9/25xe/9qbXf/bG95/25xe/9sbnX/cHJ5/3V3ff9ucHf/cHJ5/3d5f/93eX//c3Z//3V4gf91eIH/
    +bG95/3V3ff91d33/Zmhu/25wd/91d33/dnh8/3Byef9wcnn/b3F1/2xudf9wcnn/cHJ5/2Rncf9nanT/
    +am13/2ptd/9nanT/bG51/2Zpc/9maG7/bG95/2dqdP9qbXf/Z2px/2dqcf9qbXf/c3V8/3Byef9wcnn/
    +dnh8/2xudf93eoP/am13/21vc/9qbXf/bG51/2psc/9zdXz/d3l//25wd/9ucHf/b3F1/25wd/9qbXf/
    +bG51/3V3ff9qbHP/amxz/29xdf9wcnn/c3V8/2xvef9ucHf/bG51/2ptd/9sbnX/c3V8/3N1fP9wcnn/
    +amxz/2xudf9qbXf/c3V8/3V3ff9qbXf/d3l//2xudf9ucHf/bG51/2xvef9sbnX/cHJ5/3Z4fP9zdXz/
    +c3V8/2ptd/9sbnX/amxz/2xudf9sbnX/bW9z/21vc/9sbnX/cHJ5/3V3ff9sbnX/bG51/3Z4fP9sb3n/
    +dXd9/3Byef93eX//bnF7/29xdf91d33/cHN9/2xvef9wcnn/eHl9/3Byef95e4H/c3Z//25wd/9qbXf/
    +bnB3/3d5f/91eIH/bnF7/25wd/9wc33/dXiB/3d5f/9ucHf/dXiB/25wd/9sb3n/Z2p0/2ptd/9sb3n/
    +bnF7/25xe/9wc3z/bnB3/29yev9ucHf/b3F1/2xudf9qbXf/bnF7/3N2f/9wc33/bXB6/3F0ff9sbnf/
    +cXR9/2ttdP9qbXf/Z2p0/2psc/9sb3n/bnF7/2xvef9ucHf/bG51/25wd/9sbnX/amxz/25wd/9vcXX/
    +bnB3/2ptd/9ucHf/bnF7/2xvef9sb3n/cHN9/25xe/95e4H/cHN9/3Byef91eIH/cHN9/3l7gf9wc33/
    +bG95/3Byef9ucHf/bnB3/21vc/9wcnn/bW9z/3Byef9ucHf/c3V8/2xudv9sbnX/a211/25xev9ucXv/
    +bnB3/3Byef9ydHv/b3J7/25wef9ucHf/c3V8/25wd/9vcXX/b3F1/3Byef9zdXz/bG51/3N1fP94eX3/
    +bnB3/3V3ff9ucHf/bnB3/3d5f/9wcnn/c3Z//3V4gf91eIH/bG95/3N2f/9wcnn/bnB3/3d5f/9sbnX/
    +cHJ5/3V3ff91d33/b3F1/3N1fP92eHz/c3V8/3Byef9ucHf/bnB3/21vc/9sbnX/c3V8/3d5f/9ucHf/
    +am13/25xe/9kZ3H/bG51/2ptd/9sbnX/bG95/3N1fP9maXP/bG51/2xvef9sb3n/bW9z/2xudf9ucHf/
    +bnB3/3V4gf9ucXv/bnB3/25xe/9wcnn/bnB3/3Byef91d33/bG51/2xudf92eHz/d3l//3N1fP9zdXz/
    +c3V8/25wd/91d33/c3Z//2dqcf9ucHf/dXiB/3t9g/91eIH/d3qD/3Bzff9ucHf/c3Z//3N2f/9sb3n/
    +bnB3/3N1fP9ucHf/bnB3/3Bzff9ucXv/bnF7/3Z4fP91d33/c3V8/25wd/9tb3P/cHJ5/25wd/9sb3n/
    +bnF7/3Z4fP9vcXX/e32D/25wd/9qbXf/am13/25wd/9nanH/cHJ5/3d6g/9sb3n/cHJ5/3Byef9wc33/
    +bnB3/25xe/91eIH/am13/2xvef9ucHf/bnF7/3Bzff9sb3n/bnF7/29xdf9ucHf/bW9z/3N1fP9wcnn/
    +c3V8/2xudf9ucHf/am13/3N1fP92eHz/am13/3V3ff9qbHP/am13/2xudf9qbXf/amxz/2xvef91d33/
    +cHN9/3V3ff9sb3n/bG51/2dqdP9qbHP/bG51/2xudf9sbnX/bG51/2ptd/9wc33/amxz/2Rncf9ucXv/
    +Z2p0/25xe/9sb3n/dXd9/2ptd/9qbXf/cHN9/25xe/9nanT/bG95/3V3ff9sbnX/cHN9/2ptd/9nanT/
    +ZGdx/2xudf9zdXz/cHN9/25wd/9vcXX/bG95/3V3ff94eX3/bnB3/3l7gf9ucXv/bnB3/2dqdP91d33/
    +bnB3/25wd/9wcnn/bnF7/21veP9wcnn/b3J8/3Byef9ucXv/am13/3Bzff9zdn//bG95/3Byef9ydH3/
    +cHJ7/3V2e/9vcXf/cHJ5/25wd/9sbnX/cHJ5/3Bzff9wcnn/bnB3/25wd/9wcnn/bG51/2Rncf9sbnX/
    +bG51/2dqdP9nanT/bG51/25wd/9ucHf/b3F1/3Bzff9wcnn/eHl9/3Byef9sb3n/cHN9/3Bzff93eX//
    +bG95/2xvef9ucXv/bG95/25wd/9vcXX/cHJ5/2xudf9ucHf/cHJ5/3N2f/9vcnz/b3J8/25xev9wc33/
    +cHN9/3Byef9ucHf/bnB3/3Fzev9tb3b/bW91/25xe/9qbXf/bG51/2xudf9sb3n/c3V8/2ptd/9zdXz/
    +dXd9/25wd/91d33/b3F1/25xe/93eX//bnB3/3Bzff9ucXv/c3Z//2xvef91eIH/bnF7/3Bzff95fIb/
    +d3qD/3l8hv97fof/e32D/3V3ff95fIb/e32D/3N2f/9zdn//bnF7/3Bzff9wcnn/bG95/25xe/91eIH/
    +bnB3/3Byef91d33/bG95/3Byef9sb3n/bnB3/3Bzff91d33/amxz/25wd/9wcnn/bnB3/25wd/9ucXv/
    +bnF7/2ptd/95e4H/bnF7/25xe/9zdn//cHN9/3Byef9wc33/d3l//3N1fP9wcnn/dXd9/3V4gf9wcnn/
    +cHN9/25xe/9ucXv/dXd9/3V4gf9maXP/am13/3Bzff94eX3/c3V8/3N1fP9vcXX/b3F1/3Byef91d33/
    +bnB3/2ptd/9wcnn/cHJ5/21vc/9zdXz/bG95/2ptd/91d33/c3V8/3V3ff9qbXf/am13/2xudf91eIH/
    +d3qD/3l8hv9+gIb/c3Z//4GDiv9zdn//c3Z//3Bzff9ucXv/am13/3N1fP95fIb/bnB3/25wd/9ucHf/
    +cHJ5/2xudf9sbnX/c3V8/2dqcf9sbnX/bG95/25xe/9zdn//bG95/2xvef9ucHf/bnB3/25wd/9wc33/
    +cHN9/3N2f/9ucHf/amxz/29xdf91d33/eHl9/2xudf92eHz/bW9z/25wd/9ucHf/bnF7/25wd/91d33/
    +dXiB/3V3ff92eHz/bnB3/2xudf9nanH/bnB3/2xudf9vcXX/bG51/2xudf9qbXf/bnF7/2ptd/9qbXf/
    +c3V8/2psc/92eHz/c3V8/3V3ff9wcnn/bnB3/3N2f/9wc33/am13/2xvef95e4H/bnB3/3Z4fP9ucHf/
    +bG51/2psc/9vcXX/dXd9/3N1fP9sb3n/cHJ5/25xe/95e4H/eXuB/3Byef93eX//bnB3/29xdf9nanH/
    +am13/2Rncf9maG7/Zmlz/2tueP9oa3P/am11/2ptd/9qbXf/bG51/2Rncf9qbXf/c3V8/2xudf9qbHP/
    +b3F6/2xud/9zdXr/bnB3/3Byef9wcnn/bnB3/3N1fP91eIH/cHN9/3N1fP9sb3n/cHN9/25wd/9nanT/
    +b3F1/29xdf9ucHf/bG51/2xvef9ucHf/bG51/2ptd/9ucXv/am13/3Z4fP9sbnX/bW9z/3Byef9wcnn/
    +dXd9/2xudf9nanT/bG95/2ptd/9nanT/bG51/25xe/9ucHf/cHJ5/2ptd/9vcnz/bW92/2xvd/9sb3n/
    +bG95/2dqdP9nanT/Z2p0/2ttdP9sb3n/bXB4/2xveP9zdn//bG95/2xvef9ucHf/cHN9/3N1fP9qbXf/
    +dXd9/3d5f/9qbXf/c3V8/2xudf9tb3P/d3l//2ptd/9ucXv/bG95/3Bzff9qbXf/bnF7/2psc/9maXP/
    +cHJ5/2ptd/9qbXf/cHN9/25xe/9sbnX/cHJ5/3N1fP9ucHf/bnB3/2xvef9wcnn/bG51/2xvef9wc33/
    +dXiB/2xvef9ucXv/d3l//2xvef9ucXv/bnB3/3Bzff9zdn//dXiB/2xvef9wc33/c3Z//25wd/9ucHf/
    +cHJ5/25wd/9nanH/dXd9/25wd/9tb3P/bG51/25wd/9tb3P/bG51/2xvef9sbnX/bW9z/3h5ff91d33/
    +cHJ5/3N1fP9wcnn/cHJ5/3Z4fP9wcnn/Z2px/2xudf9zdn//dXd9/25xe/9zdn//cHN9/3Bzff91eIH/
    +eXuB/3N1fP9ucXv/d3qD/3t9g/92eHz/fn+D/3l7gf97fYP/fX6B/3t9g/97fYP/c3V8/3Bzff91eIH/
    +c3V8/3Byef9zdXz/dXd9/25wd/9+gYr/d3qD/3N1fP9zdXz/cHN9/2xvef95e4H/f4GH/3Bzff9zdXz/
    +cHN9/3Bzff9ucHf/bG95/3N2f/9nanT/bnB3/3Byef91eIH/dXiB/3N2f/9zdn//c3V8/3Bzff9zdXz/
    +c3Z//25xe/9zdn//bnB3/2xvef9ucXv/dnh8/3Z4fP9wcnn/dnh8/21vc/9zdXz/bG51/2xvef9tb3P/
    +c3V8/3V3ff9ucXv/cHN9/2ptd/9nanT/XF9o/2Zpc/9qbXf/amxz/2dqcf9sbnX/bG51/3Bzff9nanH/
    +Zmlz/25xe/9qbXf/c3V8/3V3ff91d33/bG51/2psc/9wc33/am13/2dqdP9qbXf/dXiB/25wd/92eHz/
    +bnF7/25wd/9sb3n/b3F1/3N1fP9wcnn/bnB3/21vc/9sbnX/dXd9/3N1fP9tb3P/eHl9/29xdf9vcXX/
    +Zmhu/3V3ff9ucHf/bG95/3Byef9xdH3/bnF7/3Fze/9ucHf/bnB3/29xdf9sbnX/c3V8/3N1fP9ucHf/
    +b3F1/3J0ev9zdn//dnmD/3N2f/91eIH/bnF7/25xe/91eIH/eXyG/3d6g/91eIH/c3Z//3d6g/9wc33/
    +bnF7/25wd/9sb3n/bG95/2xvef9zdn//dXiB/3Byef9sb3n/dXd9/3Bzff93eX//bnB3/2ptd/9wcnn/
    +cHJ5/3Z4fP9ucHf/bG95/3N1fP9vcXX/am13/2xvef9zdXz/cHJ5/3N2f/9zdn//d3qD/3Bzff9xdH7/
    +c3Z9/3J1fP9zdXz/bnB3/2xudf9sb3n/bnF6/21veP9tb3j/c3Z//2xvef9ucHf/bnB3/3N1fP94eX3/
    +b3F1/3V3ff93eX//bnB3/3V3ff9ucHf/cHJ5/3V3ff9ucHf/bnF7/2xudf9ucXv/Z2p0/3Bzff9qbXf/
    +am13/25xe/9sb3n/Z2p0/2xvef9qbXf/YmVu/2Rncf9maXP/Zmhu/2Zobv9maG7/Z2p0/2Rncf9maG7/
    +Zmlz/25wd/9maG7/Zmhu/2xvef9gY2z/Zmlz/2Rncf9nanH/Zmlz/2Rncf9cX2j/Zmlz/2Zpc/9kZ3H/
    +YmVu/2Zpc/9nanT/YmVu/3N1fP9nanH/Zmhu/2Zpc/9qbHP/Z2px/2xudf9sb3n/am13/2xudf9wc33/
    +c3V8/25xe/9sb3n/am13/2ptd/9zdXz/bnB3/2Zobv9nanT/bnF7/3Bzff9sb3n/bG95/2ptd/9sbnX/
    +bG95/2xvef9sbnX/Zmlz/2ptd/9ucXv/am13/3N1fP9sbnX/cHJ5/3Byef9zdXz/dXd9/2xudf9vcXX/
    +c3V8/25xe/9wc33/bnF7/3Bzff9sbnX/e32D/3V3ff9ucHf/cHJ5/2xvef9nanT/dXd9/3l8hv9sb3n/
    +b3F1/25wd/9ucHf/bnB3/25wd/9zdn//am13/25wd/9wcnn/c3Z//3N2f/9ucHf/cHN9/3Byef9wc33/
    +bnF7/3V4gf9ucXv/dXd9/25wd/9qbHP/bnB3/3V3ff91d33/bnB3/3Z4fP9sbnX/c3V8/25wd/9sbnX/
    +bG51/25xe/9zdXz/c3V8/3V3ff9zdXz/bG51/2RmbP9nanT/am13/2dqdP9sbnX/bG95/25wd/9ucXv/
    +bG51/2dqdP9zdXz/bG95/3V3ff91d33/dXd9/2xudf9sbnX/dXd9/25wd/9vcXX/c3V8/3l7gf9sbnX/
    +c3V8/2dqdP9nanT/Zmlz/2ptd/9ucXv/bG95/2xudf9qbXf/amxz/3Bzff9wc33/bG51/3N1fP9sbnX/
    +bG51/2Jlbv93eoP/c3Z//3V4gf94e4X/eXuC/3V3ff9ydX3/a254/3Byef9tb3P/bnB3/3Byef9zdXz/
    +bW9z/21vc/9xcnj/dHZ+/3l6f/94eoH/foCG/3d5f/95e4H/c3Z//3d6g/97fYP/dXiB/3V4gf9zdn//
    +c3V8/3N1fP9zdXz/cHN9/2xvef9zdXz/d3qD/3N2f/9zdXz/bG95/3Bzff9wc33/d3l//3Byef9qbXf/
    +cHJ5/2xvef91d33/bG51/25wd/91d33/bnB3/2psc/9ucHf/c3V8/2xvef9ucHf/bG51/3Byef9ucHf/
    +cnR6/3N1e/9wcnn/dXd9/2ptd/9sb3n/am13/2tudv9qbXf/am13/3Bzff9sbnX/cHJ5/2xudf9qbXf/
    +dnh8/21vc/9sb3n/c3V8/2xudf9wcnn/bW9z/3Byef93eX//bnB3/2xvef9sbnX/cHN9/2xudf94eX3/
    +bnB3/25wd/93eX//dXd9/25xe/91eIH/dnh8/25wd/9wc33/dXd9/3N1fP9ucHf/bnF7/3l7gf9wcnn/
    +bnF7/3N2f/93eoP/bnF7/25xe/93eX//cHJ5/25xe/9ucHf/bnF7/2xvef9ucXv/bG51/2xvef9wc33/
    +b3F1/25wd/9wc33/bnB3/2psc/94eX3/bnB3/29xdf9ucHf/bG51/25wd/9ucXv/cHN9/3Byef9ucXv/
    +dXiB/3l7gf95e4H/cHN9/3Bzff9ucXv/eHl9/3V3ff9nanH/bG51/3Byef91d33/b3F1/25wd/9tb3P/
    +bG51/25wd/9ucHf/bG51/2dqdP9sb3n/am13/2Rncf9qbXf/bG51/3Bzff9qbXf/bG95/2xvef9kZ3H/
    +Z2p0/3Bzff9zdXz/c3V8/3N1fP91d33/bnB3/3t9g/9zdn//cHJ5/3N1fP9wcnn/am13/3d6g/95fIb/
    +cHN9/3Bzff9zdn//cHN9/3Byef9wcnn/d3qD/2xvef9zdXz/cHJ5/3V4gf95e4H/c3V8/3Bzff91d33/
    +d3qD/3d6g/91eIH/d3qD/3d6g/91eIH/dXd9/3t9g/97fYP/e32D/3l8hv97fof/cHN9/3d6g/9wc33/
    +c3Z//3N2f/93eoP/eXuB/3V4gf95e4H/dXiB/2ptd/9qbXf/cHJ5/25wd/9sbnX/bG51/2xudf9ucHf/
    +c3V8/21vc/9nanT/cHN9/25xe/93eX//dXd9/3Bzff9qbXf/bG51/3N1fP9sb3n/bG51/25xe/91eIH/
    +am13/25xe/9kZ3H/amxz/2Rncf9nanT/cHJ5/2ptd/9nanH/Z2p0/2Rncf9maXP/Zmlz/2Zobv9nanT/
    +YmVu/2Zobv9cX2j/bnF7/2ptd/9ucHf/b3F4/2tueP9tb3f/am12/2dpb/9maXP/Zmlz/2Rncf9maXP/
    +Z2p0/2dqcf9sbnT/a254/2tueP9wc3r/a253/25xe/9tb3P/bnF7/2xudf9sb3n/bnF7/2xudf9qbHP/
    +am13/2Rncf9maXP/Z2px/2xudf9iZW7/Z2p0/2xvef9qbXf/amxz/2dqdP9sb3n/bnF7/3V3ff9wcnn/
    +bnB3/3Bzff9wc33/e32D/3Bzff9ucHf/d3qD/3Bzff9sb3n/dXd9/3l8hv9zdn//d3qD/3N2f/93eoP/
    +cXR9/3Z4fv9ydHv/dHZ9/3Z4fP9ucHf/cHJ5/3Bydv9wcnr/b3F4/25wd/91eIH/bnB3/25xe/9sb3n/
    +cHJ5/3Z4fP9tb3P/am13/3N1fP9qbXf/bnF7/2dqcf9ucXv/dXd9/2xvef9ucXv/bG51/2xvef9qbHP/
    +dXd9/2ptd/9sbnX/dnh8/3N1fP9sb3n/dXd9/25xe/9nanT/Z2p0/25xe/9sb3n/amxz/2psc/9wc33/
    +am13/2xudf9wc33/dXd9/2psc/9qbHP/bnF7/2dqcf9sbnX/bW9z/25wd/9sbnX/bnB3/2xudf9qbXf/
    +bnF7/21vc/9vcXX/dXd9/21vc/9qbHP/eXuB/25xe/9wc33/cHN9/2xvef9ucHf/cHJ5/2xvef9ucHf/
    +bG95/25xe/91d33/dnh8/25xe/9sbnX/am13/3N1fP9ucXv/YmVu/2ptd/9sb3n/bnF7/2psc/9qbHP/
    +Z2px/2dqcf9nanH/Z2px/2dqdP9maXP/am13/2dqdP9kZ3H/bG95/2psc/9wc33/bG95/3Bzff9zdXz/
    +Z2px/21vc/9zdn//cHN9/3Z4fP91d33/c3Z//25xe/95fIb/c3Z//25wd/9ucHf/bnB3/2ptd/9zdn//
    +e32D/25wd/9vcXX/cHN9/25xe/9ucHf/cHJ5/3V4gf9nanT/bnB3/25wd/93eoP/c3Z//2xvef9ucHf/
    +bG95/3Bzff9wcnn/cHN9/2xvef9ucXv/bG51/2xudf9ucHf/bnF7/3N1fP9zdXz/dXd9/25wd/9wcnn/
    +am13/2xvef9qbXf/cHN9/3Bzff9sb3n/cHN9/2xvef9iZW7/YGNs/2psc/9sb3n/Zmlz/2xudf9sbnX/
    +bW9z/3N1fP9tb3P/amxz/3N1fP9ucHf/d3l//3V3ff9ucXv/am13/2ptd/9wc33/am13/2ptd/9ucHf/
    +e32D/3Byef91d33/bG51/25wd/9ucHf/cHJ5/3V3ff9ucHf/amxz/25xe/9wcnn/bG95/25xe/9sbnX/
    +cHN9/29xdf9sbnX/Z2px/2xvef9qbHP/am13/2xvef9tb3b/b3F5/29yev9tb3P/cHJ5/2xvef9sbnX/
    +bG51/3N1fP9vcXX/a211/2xudv9vcXn/cnR7/25wd/9wcnn/bG51/2xvef9qbHP/am13/2xvef9sbnX/
    +Z2p0/25xe/9nanT/am13/2xudf9qbXf/Zmlz/2ptd/9sb3n/bG95/2ptd/9qbXf/c3V8/3Byef92eHz/
    +cHJ5/25wd/9sb3n/bG95/3N1fP9wcnn/bG51/3N1fP9qbHP/Z2px/2xudf9ucHf/bW9z/3Bzff9qbHP/
    +bG51/25weP9xdHv/cXR8/25xe/91d33/b3F1/3N1fP9ucHX/bnB3/21vdf9rbXP/c3V8/2ptd/9sb3n/
    +am13/2xudf91d33/bG51/2xvef91d33/bnB3/3Byef9sbnX/cHN9/3V4gf9wcnn/bG95/2ptd/9wcnn/
    +b3F1/3h5ff9tb3P/bG51/3N1fP91d33/bnB3/3l7gf9zdn//bnF7/3Byef93eX//d3l//25xe/9wcnn/
    +d3l//2xvef9sb3n/cHN9/3V3ff9ucHf/bnB3/3V3ff9ucHf/bG95/2xudf9wcnn/bnB3/3Byef9ucHf/
    +bnB3/25xe/9qbXf/bW9z/3Bzff9qbHP/ZGdx/3N1fP9qbHP/am13/2xvef9nanT/amxz/2xudf9qbXf/
    +bG51/2xudf9sb3n/dXd9/2xvef9ucXv/bG95/2xudf9zdXz/bG95/2BjbP9maXP/bG95/3Bzff9nanT/
    +am13/2dqdP9qbHP/am13/2ptd/9qbXf/Z2p0/25xe/9sb3n/Zmlz/2xvef9sbnX/cHN9/2ptd/9zdXz/
    +c3V8/2Rncf9sbnX/dXd9/3N2f/91d33/dXd9/3V4gf9ucXv/dXiB/3Bzff9ucHf/cHJ5/25wd/9sb3n/
    +c3Z//3t9g/9sb3n/b3F1/25wd/9ucHf/b3F1/29xdf9zdXz/Zmhu/25wd/9sbnX/c3V8/3Bzff9qbXf/
    +bnB3/2psc/9wcnn/am13/3Byef9sbnX/cHJ5/2xudf9tb3P/bG51/3Byef91d33/bnF7/3d5f/9ucHf/
    +cHJ5/3Byef9ucHf/cHN9/3V3ff95e4H/dXd9/3V3ff9wc33/bG95/2ptd/9vcXX/bnB3/2ptd/9sb3n/
    +bnB3/21vc/9zdXz/bW9z/2psc/91d33/am13/3V4gf94eX3/cHJ5/25wd/9ucHf/cHJ5/2xudf9qbXf/
    +bG95/3N2f/9qbXf/bG95/2Rncf9nanT/Zmlz/3Bzff9wc33/am13/2dqdP9sb3n/bnF7/2xudf9ucXv/
    +amxz/2xvef9sbnX/bnF7/2Rncf9zdXz/bG51/21vc/9sbnX/b3F4/3FzfP9vcnv/bnB3/3N2f/9zdn//
    +bnF7/3Byef9wc33/bnB3/25xe/9xc3v/cXR9/3d5gP9wc33/dXiB/3Bzff9ucXv/bnB3/25xe/9wc33/
    +bnF7/25wd/93eX//bG95/25xe/9wc33/cHN9/2xvef9wcnn/c3Z//3Bzff9wc33/c3V8/3d6g/91eIH/
    +e32D/3Byef9zdn//cHN9/3N2f/93eX//c3Z//3Byef91eIH/cHN9/3Bzff9zdn//d3qD/3V4gf97fYP/
    +c3V8/3Bzff9xdH3/cnR7/3F0fv9wc3r/cHJ5/2xudf9wc33/am13/25xev9tb3b/a210/3N1fv9wc33/
    +c3Z//2xvef9wcnn/dXd9/2xudf9zdXz/eHl9/3Bzff9zdXz/bnB3/3V3ff93eoP/c3Z//3N2f/91d33/
    +eXuB/3N1fP97fof/c3Z//3N2f/9+gIb/e32D/3l8hv9/gYf/d3qD/3N1fP9zdXz/foCG/3t9g/93eoP/
    +dXiB/36Ahv91d33/c3V8/3t9g/9+gIb/dXd9/3N1fP93eX//bG95/25wd/9vcXX/c3Z//25xe/91eIH/
    +bnB3/3Byef9zdXz/bnF7/3Byef91eIH/cHN9/3V3ff95fIb/cHN9/3V4gf95fIb/dXd9/3N1fP9zdn//
    +cHN9/3Byef9ucXv/cHN9/3d6g/91eIH/c3Z//3V4gf9ucXv/dXiB/3V4gf9nanT/bG51/3N2f/93eX//
    +cHN9/25wd/9sbnX/bG51/25wd/9sbnX/c3V8/2xudf91d33/bnB3/2psc/9zdXz/bG51/3V3ff9ucHf/
    +c3Z//3h5ff9qbHP/bnB3/3N2f/9wc33/c3V8/3N1fP9zdXz/cHN9/3h5ff9ucHf/bnB3/25wd/9nanT/
    +bG95/3V4gf9/gYf/cHN9/3Byef9ucXv/cHN9/3Byef9zdXz/dXiB/2dqdP9wc33/bnB3/3Bzff93eoP/
    +c3V8/3N2f/9ucXv/dXiB/3Bzff91eIH/c3V8/3t9g/91eIH/c3Z//3d6g/91eIH/e32D/3l8hv9+gYr/
    +eXuB/3l7gf95fIb/dXiB/3t9g/97fof/e36H/3l7gf95e4H/d3qD/25xe/9qbXf/cHJ5/3N1fP9sb3n/
    +bnF7/3Byef9wcnn/dXd9/29xdf9qbHP/dnh8/3N1fP93eX//dnh8/2xvef9qbXf/bG95/25xe/9sbnX/
    +bG95/2xvef93eX//bG95/25xe/9qbXf/am13/2dqdP9zdXz/bG95/2psc/9nanT/bG95/2xvef9qbHP/
    +Z2p0/2dqcf9sb3n/Zmhu/2Rncf9dYGr/cHJ5/2xudf9sb3n/a210/2ttdf9rbnj/aGpx/2Rncf9maXP/
    +Zmlz/2Zobv9iZW7/ZGdx/2Jlbv9maXP/aGpw/2xvd/9xc3r/bG51/3N1fP9qbXf/bnF7/2ptd/9sb3n/
    +bnF7/25wd/9sbnX/dXd9/2psc/9sbnX/bnB3/29xdf9nanH/bnB3/25wd/9ucXv/bnB3/2xvef9zdXz/
    +dnh8/3V3ff9sb3n/cHN9/3Byef9ucXv/c3Z//3Bzff9wcnn/dXiB/25xe/9ucXv/bG95/3V4gf91eIH/
    +foCG/3V3ff91eIH/dHeA/3R3fv90d4D/dHeA/3Bzff9ucXv/cHJ5/2xudf9vcXj/bW94/21vdv9zdn7/
    +cHN9/3Z4fP9ucHf/c3V8/3V3ff9ucHf/dXiB/3d5f/91d33/cHJ5/2xudf9sb3n/dXd9/25xe/9sb3n/
    +Zmlz/25xe/9qbHP/bnF7/2ptd/9qbHP/cHN9/2xvef9ucXv/dXiB/2xvef9tb3P/am13/3N1fP9ucXv/
    +Z2p0/2psc/9wcnn/Zmlz/2Zpc/9sb3n/bnF7/2dqdP9sbnX/c3V8/2ptd/9qbXf/amxz/25xe/9sb3n/
    +bG95/2dqdP9sbnX/bnB3/25wd/9tb3P/cHJ5/2xudf9qbXf/dXd9/3Byef9ucHf/bnB3/25wd/9ucHf/
    +bnF7/3Bzff9ucHf/bnF7/2xvef95fIb/bnF7/25xe/9wc33/bG95/3V4gf9zdXz/ZGdx/2Zpc/9wc33/
    +bnF7/2ptd/9sb3n/am13/2xvef9qbXf/amxz/2ptd/9maXP/bnF7/2Zpc/9gY2z/am13/2psc/91d33/
    +bG95/2xvef91d33/ZGdx/2psc/9ucXv/dXiB/3Z4fP91eIH/d3l//3d6g/97fYP/d3qD/3N2f/9zdn//
    +cHN9/3V3ff97fYP/g4WM/3Bzff9ucXv/cHN9/3Byef9ucHf/cHJ5/3V4gf9qbHP/dXiB/25wd/9ucXv/
    +dXiB/25wd/9wcnn/am13/3Bzff9ucXv/cHJ5/21vc/9zdXz/bnB3/21vc/9zdXz/bnB3/3h5ff9ucHf/
    +dXd9/25wd/9ucHf/c3V8/2xudf9wc33/d3l//3d5f/91eIH/cHN9/3N2f/9nanT/Z2p0/25xe/9sb3n/
    +bG95/2xvef9ucHf/bnF7/3V4gf9wcnn/Zmlz/3V3ff9wc33/d3l//3h5ff91d33/b3F1/25wd/9zdXz/
    +bnB3/3Byef9ucHf/d3l//25xe/9sb3n/bG51/2xudf9sbnX/cHN9/3V3ff9ucHf/bG51/3N1fP91d33/
    +bW9z/25wd/9tb3P/bnF7/2ptd/9sbnX/Zmhu/2xvef9qbHP/bnF7/2xudf9vcXb/cXN7/29xev9sb3n/
    +c3Z//25xe/9ucHf/bG95/2xvef9ucHf/cHJ5/21vdv9wcnj/dXd7/29xe/9wc33/bnF7/3Byef9ucHf/
    +cHJ5/3Bzff9ucHf/bnB3/3Z4fP9nanT/am13/2xudf9tb3P/ZGZs/29xdf9ucHf/c3V8/25wd/9ucHf/
    +bnB3/3N1fP91d33/bnB3/3N2f/9ucHf/bnB3/3N1fP9wc33/cHJ5/3N2f/9sb3n/Z2p0/2ptd/9zdn//
    +bnF7/3d5f/9wc33/cXN9/3R3f/91eH//dXiB/3V4gf9wc33/bnF7/3Bzff9ucXr/cnR9/3Bzff9ucXv/
    +dHZ9/3N2f/91d33/bG95/3Byef91d33/bG95/3Bzff91eIH/c3V8/2xvef9ucHf/c3V8/3V3ff9wcnn/
    +bnB3/25wd/92eHz/bG95/3d5f/9ucXv/bnB3/3l7gf9zdXz/c3V8/3l7gf9ucHf/bW9z/2xudf92eHz/
    +cHJ5/3Byef9sbnX/dnh8/2ptd/9qbXf/dXd9/3Z4fP9sbnX/bnB3/3d5f/9ucHf/amxz/2xudf9zdXz/
    +bnF7/3Bzff9qbXf/bG51/21vc/9wcnn/bnB3/3N2f/9ucHf/bG51/3Bzff9ucHf/bnB3/3Bzff9ucHf/
    +b3F1/29xdf9wc33/cHJ5/3N2f/91eIH/foGK/3V4gf95fIb/eXyG/3N2f/9+gYr/d3qD/3Bzff9wc33/
    +e32D/3d6g/91eIH/eXyG/3N2f/95fIb/dXiB/3V4gf95fIb/cHN9/3t9g/95fIb/cHN9/3V4gf9wcnn/
    +d3l//3V3ff92eHz/eXuB/2dqdP9ucHf/dXiB/2ptd/9ucXv/bG95/3Bzff9sb3n/dXd9/2xudf9qbXf/
    +am13/2dqdP9nanT/bnF7/3l7gf9sbnX/bG51/25wd/9sbnX/am13/2xudf9ucXv/ZGZs/2ptd/9maXP/
    +bG95/3N1fP9nanT/amxz/2Zpc/9qbXf/bG51/25wd/9tb3P/dXd9/3Byef9sbnX/dXd9/3Byef92eHz/
    +c3V8/3h5ff9ucHf/bG51/3V3ff9ucXv/dXiB/3l8hv95fIb/d3qD/3N2f/91eIH/bnF7/25xe/91eIH/
    +cHJ5/3Byef9zdn//bnB3/25wd/9wc33/bnF7/2dqdP91eIH/dXiB/3l7gf95fIb/dXiB/3N1fP9wc33/
    +c3Z//2xvef9zdn//bnF7/3l7gf9zdn//bnF7/25wd/9vcXX/b3F1/3N1fP9zdXz/bnB3/2psc/9zdn//
    +dXd9/2xudf9wcnn/bG95/2xvef9sbnX/bG51/1xfaP9ucXv/bG95/3N1fP9tcHr/bW91/3ByeP9tb3j/
    +aGp0/2xvef9qbXf/bG95/2dqdP9sbnX/bnB3/29xef9oa3X/bG93/3Byev9rbnj/bnF7/2xudf9sb3n/
    +bG95/2xvef9sb3n/bnB3/2ptd/9wc33/Z2p0/2ptd/9qbXf/bG51/2Jlbv9qbHP/Z2p0/2xvef9qbHP/
    +amxz/2ptd/9ucXv/bG95/2psc/9ucXv/am13/2xudf9ucXv/bG95/2xudf9sbnX/ZGdx/2dqdP9kZ3H/
    +bG95/3Byef9zdXz/bG95/21vdP9ucHf/cnR6/3Fzev9vcXj/bG95/2xudf9ucHf/bG51/2ptd/9rbnj/
    +a254/3J1fv91d33/dXd9/29xdf9wcnn/c3Z//25xe/91eIH/d3qD/3N2f/9ucHf/bnB3/3N1fP93eX//
    +bnF7/25xe/9qbXf/c3Z//3Bzff91d33/bnF7/2xudf94eX3/cHJ5/3V3ff91eIH/bnF7/25wd/9sb3n/
    +dXd9/25wd/91d33/bG51/3Z4fP9qbHP/Z2p0/3Bzff92eHz/bG51/3Byef92eHz/bW9z/2xudf9vcXX/
    +dnh8/3N1fP9zdXz/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/bG51/2ptd/9ucXv/am13/2psc/9wc33/
    +Zmlz/2ptd/9maXP/am13/2dqcf9maXP/Z2px/25wd/9kZ3H/Zmhu/2Zpc/9nanH/cHJ5/2Zpc/9gY2z/
    +YmVu/2Zpc/9qbXf/Zmhu/2dqdP9iZW7/Z2p0/2Zobv9maG7/am13/2Rncf9maXP/Zmhu/2BjbP9maXP/
    +ZGdx/2ptd/9nanT/bG95/3Byef9kZ3H/ZGdx/2ptd/91d33/dXd9/3V3ff94eX3/cHJ5/3N2f/9ucXv/
    +c3V8/3V4gf9zdXz/bnB3/3N2f/9+gIb/bnB3/29xdf9ucHf/bG51/2xudf9ucHf/dXd9/2ZobP9ucHf/
    +bG51/25wd/92eHz/bG51/2xudf9qbHP/bnB3/29xdf9ucHf/bG51/3Bzff9qbXf/bG51/25xe/9wc33/
    +bG95/3Bzff9zdXz/am13/2xudf91d33/bG51/3Byef91d33/d3l//3N2f/9ucXv/cHN9/2xvef9sbnX/
    +cHJ5/29xdf9sbnX/bG95/2ptd/9vcXX/c3V8/3Byef9maG7/c3V8/3N1fP92eHz/d3l//3V4gf9ucHf/
    +cHN9/3Bzff9wcnn/d3qD/3Bzff95e4H/cHN9/2xvef9sb3n/bnB3/29xdf91d33/dXd9/3Bzff9sb3n/
    +dXiB/3V3ff9ucHf/cHJ5/3Byef9wcnn/bnB3/3Byef9maG7/cHJ5/25wd/9wc33/bnB3/25weP9wcnn/
    +bXB5/25wd/9wcnn/b3F1/3N1fP9sbnX/bnB3/3Byef9vcXj/bG52/2xvef9vcnv/bXB5/2xvef9sbnX/
    +bG95/2Zpc/9nanT/Z2p0/2psc/9nanH/cHN9/2Zpc/9qbXf/am13/2ptd/9iZW7/bG51/2xvef91d33/
    +bnB3/25wd/9zdn//d3qD/3N2f/9wcnn/dXiB/3N2f/9zdXz/eXyG/3V4gf91d33/dXiB/3N1fP9zdn//
    +bnF7/3l8hv99foH/foCG/3V4gf91d33/dXiB/3V3fv90d4D/cXR+/25xe/9wcnn/c3Z//3Byef9wcnr/
    +cHJ5/2tueP90d4D/d3l//3V3ff9ucHf/cHN9/3V3ff9wc33/c3Z//3d6g/91d33/bG95/2xvef9zdn//
    +eXyG/25xe/9ucHf/bnB3/3Z4fP9wcnn/c3V8/2xudf9nanH/cHN9/2ptd/9ucXv/d3l//21vc/9tb3P/
    +b3F1/3Z4fP9ucHf/cHJ5/2ptd/94eX3/bnB3/2dqcf9ucHf/c3V8/2psc/9wcnn/dnh8/29xdf9qbHP/
    +bW9z/3N1fP9zdXz/cHJ5/2xudf9qbXf/am13/2xvef9qbHP/am13/2dqcf9kZ3H/am13/2psc/9maG7/
    +Z2p0/1xfaP9gY2z/YmVu/2dqdP9kZ3H/ZGdx/2Zobv9ucHf/Zmlz/2Rncf9nanT/Z2px/25xe/9qbXf/
    +ZGdx/2Zpc/9wc33/c3V8/2xudf9zdXz/bG51/2xvef9qbXf/am13/3N1fP9ucHf/cHJ5/25xe/9maXP/
    +cHN9/25wd/92eHz/cHJ5/25xe/9zdXz/amxz/2xudf91d33/dXd9/3N1fP92eHz/d3l//3N1fP91d33/
    +bG95/29xdf9wcnn/amxz/2xudf9wcnn/eXuB/3Byef9tb3P/bG51/2Zpc/9nanT/am13/3N1fP9gY2z/
    +am13/2dqdP9qbXf/bnF7/2dqcf9ucHf/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/cHJ5/21vc/9wcnn/
    +dXd9/3Byef92eHz/dnh8/25xe/9ucXv/eXuB/3N1fP91eIH/e36H/3t+h/93eX//cHN9/3N2f/9ucHf/
    +am13/3V3ff9ucHf/bG95/3Byef9sb3n/bnF7/3N2f/9ucXv/am13/3N1fP9ucXv/dXd9/3d5f/91eIH/
    +bG95/25wd/9ucXv/bnB3/3N2f/9sb3n/d3l//3Bzff9ucXv/bG95/25wd/9ucHf/d3l//3Z4fP9sb3n/
    +am13/3V3ff9zdXz/bnB3/3N2f/9wc33/cHN9/3N2f/91eIH/Z2p0/25xe/9ucHf/dXd9/3R3gP9wcnv/
    +cnR8/3Bzff9ucXv/c3Z//25xe/9zdn//bG95/3Bzff9zdn//bnF7/3F0ff9zdn//cXR+/3F0ff9wcnn/
    +bW9z/3N1fP9ucHf/bG95/2ptd/9qbHP/amxz/2xvef9maXP/Z2p0/2ptd/9qbXf/ZGdx/2psc/9qbXf/
    +dXd9/2xudf9tb3P/cHJ5/3N1fP9wc33/Z2px/25xe/9sbnX/bW9z/3Byef9sbnX/am13/2xudf9ucHf/
    +bG51/2Zpc/9ucXv/dXd9/3N1fP9sbnX/bG92/29xef9wc3v/dHd//3F0ff9wcnn/cHJ5/3Byef9ydHz/
    +bnB4/21weP9tb3f/cHN9/3Bzff9wc33/amxz/2xvef95e4H/dXiB/3N2f/9+gYr/eXyG/3d5f/93eX//
    +foCG/4OFjP97fYP/dXiB/25xe/95fIb/c3Z//3t9g/9wc33/cHN9/3d5f/9wc33/c3Z//3d6g/9ucXv/
    +cHN9/29xdf93eX//bnB3/3N1fP9ucHf/eHl9/2psc/9maXP/bG95/25xe/9maXP/bG51/3N1fP9sbnX/
    +Zmlz/2xudf9zdXz/cHN9/25xe/9qbXf/am13/2Zpc/9ucXv/amxz/2dqdP9maXP/Zmlz/25xe/9qbHP/
    +Z2px/2dqdP9iZW7/Zmhu/2Jlbv9nanT/Zmhu/2Zpc/9maG7/bnB3/2dqdP9kZ3H/Z2p0/2Rncf9nanT/
    +ZGdx/11gav9gY2z/am13/2ptd/9maG7/am13/2dqcf9ucXv/bnF7/2ptd/9zdXz/am13/2ptd/9qbXf/
    +Z2px/3N1fP9ucHf/eHl9/3Bzff9wc33/d3l//2xudf9ucHf/c3Z//3l7gf91eIH/eXuB/3l8hv91eIH/
    +dXiB/3V4gf9wc33/dXiB/25xe/9ucHf/bnF7/3l8hv9zdn//cHJ5/3Bzff9ucXv/cHN9/3V4gf9+gIb/
    +bG95/3V4gf9zdXz/dXiB/3d6g/9qbXf/cHJ5/2xvef9wcnn/bG95/2xvef9sb3n/c3V8/3N1fP9ucHf/
    +c3V8/3N1fP9wc33/dXd9/3d5f/9sb3n/cHJ5/3N1fP9qbXf/bG95/3V3ff91d33/dnh8/3V3ff9ucXv/
    +bnB3/2xvef91eIH/c3V8/2xvef9wc33/am13/3Byef93eoP/cHN9/2dqdP9wc33/cHN9/3V3ff94eX3/
    +dXd9/2xudf9vcXX/bnB3/2dqcf9wcnn/bG51/3V3ff9wcnn/bG51/2ptd/9nanT/bG51/25xe/9qbXf/
    +Z2px/2Rncf9ucXv/Zmlz/2Jlbv9kZ3H/Z2px/2Zpc/9qbXf/Z2p0/11gav9nanT/amxz/25xe/9qbXf/
    +a211/2lrdP9oa3X/aWtz/2xvef9sb3n/cHN9/2psc/9wcnn/bnB3/2xuc/9sb3n/amx1/2hrdP9oam//
    +ZGdx/2Zobv9nanT/Zmlz/2Zpc/9nanH/ZGdx/2dqcf9ucXv/am13/2ptd/9sb3n/bG95/2Zpc/9qbXf/
    +bnB3/3V3ff9wcnn/bnB3/25xe/9zdn//c3V8/25wd/9wc33/bnF7/25wd/91d33/bnB3/25wd/9ucHf/
    +bnB3/2ptd/9maG7/c3V8/3N1fP9wcnn/bG51/21vc/9ucHT/bnB3/3Byef9wcnr/bG95/2xvef9ucHf/
    +cnR7/2xudv9rbXb/aWx2/25xe/9zdXz/dXd9/25wd/91d33/c3V8/2xvef9qbXf/d3l//2xvef9qbHP/
    +bG51/25xe/91eIH/bnF7/25wd/9kZ3H/dXd9/2ptd/9ucXv/am13/2xvef9sb3n/bG51/2xvef91d33/
    +am13/2ptd/9sbnX/dXd9/25wd/91d33/bG51/3Z4fP9nanT/am13/25wd/9zdXz/bG51/29xdf9zdXz/
    +b3F1/2psc/9ucHf/dXd9/3N1fP9ucXv/am13/2ptd/9qbXf/cHN9/2xudf9ucXv/bG51/25wd/92eHz/
    +bG51/21vc/9zdXz/bG51/29xdf9qbXf/cHN9/25xe/9zdXz/bnB3/3h5ff9zdXz/bnB3/25wd/9vcXX/
    +c3Z//25xe/9sb3n/bG95/3d5f/9zdn//cHN9/3d6g/9wcnn/dXiB/3V4gf9wcnn/e32D/3Bzff9zdn//
    +cHN9/2ptd/9ucXv/bG95/3d5f/9wc33/c3Z//3d6g/9sb3n/cHN9/3l7gf95e4H/cHN9/3V4gf91eIH/
    +c3V8/25wd/9wc33/bG95/3V4gf9qbXf/cHJ5/25xe/93eoP/cHN9/29xdf9zdXz/bnB3/21vc/9qbXf/
    +cHN9/2Rncf9ucXv/Z2p0/25wd/91d33/amxz/21vc/9tb3P/am13/25wd/9ucXv/bG95/3d5f/91eIH/
    +dXiB/3V4gf9zdn//dXiB/3V4gf95e4H/c3Z//3d6g/97fYP/dXiB/3d6g/97fof/e36H/3d6g/93eoP/
    +cHN9/25xe/9sb3n/dXd9/2xvef9ucXv/cHN9/2xudf9sb3n/bnF7/2dqdP9gY2z/Z2p0/2ptd/9wcnn/
    +cHN9/2ptd/9nanT/bG51/2xvef9kZ3H/bnF7/2ptd/93eX//bnB3/21vc/9qbXf/am13/2xvef93eX//
    +cHN9/2ptd/9maXP/dXd9/3Bzff9qbXf/bnF7/2xvef9wcnn/c3V8/3V3ff9maG7/amxz/2ptd/9wc33/
    +bnF7/25wd/9ucHb/bW93/3J0e/9zdn//cHN9/3V4gf9sb3n/dXiB/25xe/9sb3n/b3J8/21wev9tcHr/
    +b3J7/2xvef9sbnX/bnF7/2dqdP9sbnX/amxz/2ptd/9sbnX/cHJ5/2xudf9sbnX/cHJ5/2xvef9kZ3H/
    +bG51/25wd/91d33/cHJ5/29xdf9ucXv/dXiB/3N2f/9ucHf/cHN9/3Bzff9wcnn/c3Z//25xe/9qbXf/
    +bnF7/2xvef9ucHf/ZGdx/25xe/9ucXv/bG95/2dqdP9qbXf/bW92/2tudv9sb3n/bG95/2dqdP9maXP/
    +Zmlz/2xudf9laHH/Y2Zw/2Zpc/9ydHv/bnF7/2ptd/9sbnX/cHN9/25xe/9qbXf/am13/3Byef9qbXf/
    +Z2p0/2xudf9zdXz/d3l//3V3ff9ucHf/amxz/3l7gf9wc33/cHN9/25wd/9ucHf/cHN9/3Byef91eIH/
    +eXuB/3Byef9wc33/bnB3/3d6g/9wc33/dXiB/3N1fP95fIb/dXd9/3N1fP9zdn//c3Z//3Bzff9zdn//
    +d3qD/3Bzff9sb3n/c3Z//3l8hv97fYP/dXiB/3N2f/9zdn//c3V8/3t9g/9zdn//dXiB/25wd/9wcnn/
    +c3Z//25wd/9ucHf/dXd9/2psc/9ucHf/Z2p0/3Bzff9ucXv/cHN9/2xvef93eX//c3Z//3Bzff9wc33/
    +bnB3/3N2f/9wc33/cHJ5/2xvef95e4H/cHN9/3Byef93eX//cHJ5/3V4gf9zdn//bG95/3d5f/9zdXz/
    +cHN9/2xvef9sb3n/bnB3/3Byef93eX//c3V8/25xe/95e4H/bG95/2xvef95e4H/dnh8/25wd/93eX//
    +d3l//25xe/9sb3n/cHN9/25wd/9zdn//bG95/25wd/9ucXv/eXyG/3N1fP9tb3P/c3V8/25wd/9vcXX/
    +bG51/3Byef9maG7/cHJ5/25wd/9wc33/dXd9/2xudf9ucHf/bnB3/2xudf9ucHf/cHJ5/3Byef92eHz/
    +cHJ5/3N1fP9wc33/bnF7/2xvef9sb3n/bnF7/2ptd/9ucXv/cHN9/25wd/9ucHf/dXd9/3d5f/9zdn//
    +dXd9/25xe/9sb3n/bG95/3V3ff9ucHf/bnB3/3N1fP9sbnX/bnB3/3Z4fP9ucHf/Z2px/2xvef91eIH/
    +d3qD/3d6g/91eIH/am13/2xvef9ucXv/bnB3/3Byef9sbnX/dXd9/2xvef9sbnX/bG51/2xudf9qbXf/
    +dXd9/25xe/9nanT/Z2p0/3Bzff9zdXz/amxz/2xvef9qbXf/am13/25xe/9wc33/YmVu/2dqdP9sbnX/
    +bnF7/2xvef9pbHb/a254/2xuc/9rbnX/cHJ5/25wd/91d33/am13/3Bzff9wcnn/cHJ5/29xef9ucHn/
    +bnF5/29ye/9sb3n/amxz/25xe/9ucXv/am13/2dqdP9tb3P/bG51/25xe/9tb3P/bnB3/3Bzff9wcnn/
    +Zmhu/25wd/9wcnn/c3Z//3N2f/9sb3n/bG95/3Bzff9zdn//bnB3/3Bzff9zdXz/bnB3/3V4gf9wc33/
    +am13/3Bzff9ucHf/bnB3/2Zpc/91eIH/d3qD/3Bzff9sb3n/cHJ5/2xvef9rbnj/cHJ3/2xudv9qbXf/
    +Zmlz/2xudf9qbXf/aGp0/2dqdP9tb3X/dXd8/3V3ff9wcnn/bW9z/3d5f/9zdXz/bnF7/25wd/91d33/
    +c3V8/2xudf9vcXX/d3l//3l7gf92eHz/bnB3/2dqdP93eX//cHN9/25xe/9wcnn/cHJ5/3N2f/9wcnn/
    +d3qD/3l8hv9zdXz/cHN9/2xvef93eX//cHJ5/3N1fP9ucHf/dXd9/2xudf9tb3P/b3F1/25wd/9maG7/
    +bG51/3Byef9qbHP/YmVu/25wd/93eX//dXd9/25wd/9sbnX/cHJ5/29xdf91d33/b3F1/3Byef9ucHf/
    +b3F1/3N2f/9ucHf/bnB3/3V4gf9qbXf/c3Z//3Bzff95e4H/eXuB/3d6g/9zdn//foCG/31+gf97fYP/
    +d3l//3h5ff97fYP/d3qD/3N2f/9wc33/e32D/3d6g/9wc33/e32D/3N2f/95fIb/d3qD/25xe/95e4H/
    +dXiB/3V4gf9ucXv/bG95/25wd/9wcnn/d3qD/25xe/9wcnn/dnh8/2xudf9sbnX/dXd9/3N1fP9wcnn/
    +eHl9/3Z4fP9ucHf/am13/2xvef9nanT/bG95/2dqdP9sbnX/bG51/3N2f/9wc33/amxz/2ptd/9nanT/
    +am13/2xvef9sb3n/ZGdx/3Bzff9ucHf/c3V8/3N1fP9nanH/bG51/2ptd/9qbXf/am13/3N1fP9ucHf/
    +dXd9/3N1fP91d33/c3V8/25wd/9wcnn/bG95/2ptd/9nanT/bnF7/3Z4fP9sbnX/bnB3/3V3ff93eX//
    +c3V8/25xe/9qbXf/am13/2xudf9zdXz/am13/2xvef9ucXv/Zmlz/2xudf9zdXz/bnB3/2Vmav9ucHf/
    +c3V8/3l7gf9wc33/c3Z//2dqdP9wcnn/bG51/2psc/9zdXz/bG51/3V3ff9wcnn/bW9z/2ptd/9sbnX/
    +cHN9/3V3ff9ucXv/am13/29xdf92eHz/c3Z//29xdf9wcnn/cHN9/25xe/9wc33/dXd9/2dqcf9qbXf/
    +bnB3/3Bzff90d4D/cnR7/29yfP9sb3n/bnF7/3N2f/9zdn//eXuB/3N1fP91eIH/dXiB/3V4gP9ucXv/
    +b3J8/3BzfP9vcnv/bnF7/25wd/9zdn//bG95/29xdf9sb3n/b3F1/25wd/9zdn//bnB3/25wd/9wc33/
    +cHN9/2Zpc/9wcnn/c3V8/3V4gf91eIH/bnB3/2xvef9zdn//dXd9/2xvef9zdn//dXiB/25xe/93eX//
    +bnF7/2ptd/9wc33/bnB3/25wd/9qbXf/d3l//3V4gf9zdn//bG95/3Byef9tb3b/bW94/29ye/9wcnn/
    +bnB3/2xvef9sb3n/c3V8/2xvef9qbXf/b3F5/3V3ff94eX3/c3V8/25wd/94eX3/d3l//3V3ff9ucHf/
    +d3l//3V3ff9tb3P/bW9z/3V3ff95e4H/cHJ5/2ptd/9maXP/c3V8/2dqdP9nanT/Z2p0/2dqdP9qbXf/
    +Zmlz/2xvef91d33/Z2p0/2xudf9nanT/dXd9/2ptd/9ucXv/am13/3d5f/9ucHf/bnB3/3Byef9ucXv/
    +ZGdx/2xvef9wc33/bnB3/2psc/9wcnn/e32D/3V3ff9ucHf/bG95/25wd/9ucHf/eXuB/25wd/9ucXv/
    +bG95/2xvef93eX//bnB3/25xe/91eIH/bG95/3Byef9sbnX/dXd9/3Byef9ucHf/bG51/3Z4fP9zdXz/
    +am13/2xudf9sbnX/bnB3/25xe/9qbHP/Zmlz/3V3ff9ucXv/bG51/3V3ff9tb3P/am13/2ptd/9kZ3H/
    +dXd9/2xvef9ucHf/am13/2ptd/9qbXf/bG51/3V4gf9sb3n/bnB3/3V3ff9sbnX/bG95/3V3ff9zdn//
    +bnF7/3d5f/95e4H/cHN9/3Bzff91eIH/bnB3/3Bzff9ucHf/bnF7/29xdf95e4H/c3Z//2xvef9wcnn/
    +bG51/2xvef9ucXv/bnF7/2Zpc/9zdn//bnB3/3N1fP9zdXz/Zmhu/29xdf9ucHf/cHJ5/29xdf94eX3/
    +c3V8/3N1fP9ucXv/bnF7/3Bzff9sb3n/bnF7/2xvef9sb3n/Z2px/25xe/9zdXz/amxz/2ptd/9ucXv/
    +dXd9/2xvef9qbXf/Z2px/2psc/9kZ3H/am13/2psc/9qbXf/bG95/2Rncf9sbnX/cHJ5/2xudf9lZmr/
    +bnB3/3V3ff93eoP/cHN9/3d5f/9qbXf/cHJ5/29xdf9qbHP/dXd9/2psc/93eX//cHN9/2xvef9sb3n/
    +bG95/3V4gf93eoP/cHJ5/25wd/9tb3P/dXd9/3V3ff9qbHP/bG95/2xvef9wcnn/am13/25xe/9maG7/
    +bG95/2xvef9zdn//b3J8/3Fzev9vcnr/a253/2xudf9ucXv/am13/3N1fP9sbnX/cHN9/25xe/9qbXf/
    +bnF6/25xef9tcHr/bXB6/2ptd/9qbXf/bG95/2psc/9qbHP/Z2p0/2dqcf9sbnX/bnF7/2psc/9maXP/
    +bG95/2xvef9gY2z/Z2p0/21vc/9ucHf/bnB3/2psc/9sbnX/bG95/3N1fP9qbXf/bnF7/3Z4fP9wcnn/
    +d3l//3Bzff9qbXf/c3V8/2xudf9sbnX/amxz/3V3ff9zdXz/c3V8/2psc/9ucHf/b3F4/25wd/9xc3n/
    +bnB3/2ptd/9sbnX/bnB3/2xvef9qbXf/aWx2/29xeP91d33/dnh8/3N1fP9sbnX/dnh8/3d5f/9zdXz/
    +bnB3/3V3ff9zdXz/bW9z/2xudf92eHz/d3l//3Bzff9sb3n/Z2p0/3Bzff9ucXv/bG95/2ptd/9qbXf/
    +am13/21vc/91d33/eHl9/29xdf9ucHf/bG51/3Z4fP9sbnX/dXd9/2xudf93eX//bnB3/21vc/9tb3P/
    +c3V8/2Rncf9wcnn/dXiB/3Bzff9ucXv/dXiB/4GDiv91eIH/bnF7/25wd/9ucHf/bG95/3Z4fP9ucHf/
    +bG95/25wd/9qbXf/d3l//25wd/9sb3n/c3Z//25wd/9wc33/Zmlz/3N2f/9zdn//bnF7/2xvef93eX//
    +dXd9/3Bzff9ucHf/am13/3Bzff9wc33/bnB3/2ptd/92eHz/cHN9/29xdf91d33/bnF7/25xe/9wcnn/
    +Z2p0/3d6g/9zdn//c3Z//3Bzff9ucXv/cHJ5/3Byef91eIH/bnF7/2xvef91d33/bnB3/3N2f/95e4H/
    +bnB3/2xvef91d33/cHN9/2ptd/9nanT/bG95/2Zpc/9nanT/Zmhu/2dqcf9kZ3H/c3V8/25xe/9maXP/
    +am13/2Zpc/9qbHP/am13/2ptd/9kZ3H/cHN9/2dqdP9wcnn/bG95/2BjbP9qbHP/amxz/2ptd/9sbnX/
    +cHN9/25xe/9wc33/bnF7/25xe/9ucXv/am13/3N1fP9zdXz/c3V8/2xudf9zdXz/dnh8/3Byef9ucHf/
    +dXd9/3N1fP9ucXv/cHJ5/2ptd/9ucXv/am13/3Bzff9sb3n/bG95/25wd/9ucHf/bG95/3Bzff9ucXv/
    +Z2p0/3Bzff9wc33/eXuB/3V3ff92eHz/Z2px/2xvef9wcnn/Z2p0/3N2f/9nanT/d3l//3Bzff9tb3P/
    +bnB3/29xdf9zdn//d3l//3Bzff9sb3n/bG95/3V4gf94eX3/bnB3/3N1fP9zdXz/cHJ5/2xvef9zdn//
    +amxz/2psc/9nanT/bnF7/2hqdP9ucHb/bXB4/2xvdv9ucHf/dXd9/29xdf92eHz/b3F1/3Z4fP9zdXz/
    +bnB3/3Byef9wcnn/cXN6/3N1fP9wcnn/cHJ5/3Z4fP9ucXv/bG95/2xvef9sb3n/bG95/3V4gf9zdXz/
    +cHJ5/3V4gf9wc33/am13/25xe/9ucHf/bG95/25wd/9vcXX/bG51/3N1fP91d33/bG51/3Bzff9zdXz/
    +bnB3/3N1fP9sbnX/Z2px/2xvef9vcXX/bnB3/2Rncf9zdXz/bG95/2xvef9maXP/bG95/2hrdf9wcnn/
    +cHJ7/3J0fP9ucHf/Z2p0/25xe/9zdXz/b3J7/2ptdf9sb3n/c3V8/3V3ff9sb3n/bG51/3V3ff91eIH/
    +bnF7/3Byef92eHz/dXd9/2xudf9sbnX/dnh8/3d6g/91d33/cHN9/2ptd/91eIH/d3qD/3d6g/9ucHf/
    +bG95/25wd/9ucHf/dXiB/3l7gf9wc33/c3V8/3N2f/9+gYr/eXuB/35/g/92eHz/f4GH/3V3ff91eIH/
    +dXd9/35/g/9wcnn/eHl9/31+gf93eX//eHl9/3d5f/+Fh43/fn+D/3l7gf92eHz/dXd9/3Bzff9+gYr/
    +c3Z//3Bzff9sb3n/cHN9/3l7gf9wcnn/c3V8/3V4gf9zdXz/dXiB/2dqdP9zdn//c3Z//3Bzff9sb3n/
    +dXd9/3Z4fP9wc33/bG51/2Zpc/9wc33/cHJ5/29xdf9ucHf/dXd9/3Byef9ucHf/eHl9/2xvef9ucHf/
    +cHJ5/25wd/93eX//dXd9/3Byef9ucHf/bnB3/2xudf9vcXX/dXd9/2xudf9sbnX/c3V8/2ptd/9wcnn/
    +eHl9/3Bzff91eIH/dXiB/3V3ff9wcnn/bnB3/3V3ff9qbHP/cHN9/3Byef9ucXv/bG95/3V4gf93eX//
    +Z2p0/25xe/9sb3n/bnB3/3N1fP9ucHf/bG51/3Bzff9nanT/am13/25xe/9maXP/am13/2xudf9sbnX/
    +bG51/3V3ff9ucHf/cHJ5/3N1fP9ucXv/c3V8/25wd/9ucHf/cHJ5/3N1fP9vcXX/dXd9/3h5ff9wcnn/
    +cHJ5/3V3ff9zdXz/cHJ5/25wd/9qbHP/bnF7/2xudf9sb3n/bG95/2dqdP9nanT/Zmhu/2Rncf9nanT/
    +Z2px/1xfaP9maG7/ZGdx/3Byef9maXP/bnB3/1lcZf9iZW7/Zmhu/2Jlbv9nanT/XWBq/2xvef9nanT/
    +amxz/2xudf9qbHP/bnF7/3d5f/9qbXf/Zmlz/2xudf91eIH/d3l//2xudf9zdXz/cHJ5/3N1fP9sb3n/
    +dXd9/2Zpc/9maG7/Z2px/2ptd/9oanT/bnB5/29xeP9ucHj/bG51/3Z4fP9vcXX/dnh8/29xdf91d33/
    +bnF7/3Bzff91eIH/dHZ+/3N1ff9zdn3/bnF7/25xe/91d33/cHJ5/25wd/9ucHf/bnB3/25wd/9wc33/
    +b3F1/29xdf9ucHf/bG51/2Zobv9tb3P/bW9z/2xudf9sbnX/am13/2psc/9wc33/c3V8/2xudf9wc33/
    +cHN9/25xe/9wc33/bW9z/2xudf9zdXz/b3F1/25wd/9maG7/dnh8/3Byef9zdXz/Z2px/3Byef9ucHj/
    +cHJ6/25xef9tb3b/bG51/2RmbP9sbnX/bnF4/25wd/9sb3j/dHZ+/3V4gf95e4H/bnF7/3Byef91eIH/
    +dnh8/3Byef9ucXv/c3V8/3N1fP9ucHf/b3F1/3d5f/97fYP/dXd9/3Bzff9sb3n/d3l//3Z4fP9zdXz/
    +amxz/2xudf9qbXf/am13/2xvef9zdXz/amxz/2psc/9kZ3H/c3V8/2Zpc/9qbXf/ZGdx/3Byef9iZW7/
    +ZGZs/2Rncf9maXP/XV9l/2Rncf9nanT/ZGZs/2BjbP9iZW7/cHN9/2ptd/9maG7/YmVu/2Jlbv9iZW7/
    +cHJ5/2dqcf9kZ3H/YGNs/2Rncf9kZ3H/YmVu/2dqcf9qbXf/bG51/2ptd/9iZW7/bnF7/25xe/9qbXf/
    +bG51/3N1fP91d33/c3V8/25wd/9qbHP/cHN9/3Bzff9wcnn/cHJ5/3d6g/91eIH/cHJ5/3t9g/9wc33/
    +c3Z//3N2f/9wcnn/eXyG/3l7gf9ucXv/cHJ5/2xvef9wcnn/bnB3/3d6g/9ucXv/cHJ5/3t9g/9wc33/
    +d3qD/3d6g/9wc33/d3qD/3t9g/9zdn//cHN9/3Byef91d33/Z2p0/2xvef9ucHf/c3Z//25xe/93eoP/
    +eXuB/2xvef9zdn//cHJ5/25xe/9wc33/b3F1/2xudf9zdXz/am13/25wd/9wcnn/Zmlz/2ptd/9sbnX/
    +bG95/2ptd/9zdXz/bW9z/25xe/9zdXz/c3V8/3Bzff9sbnX/bnB3/3Bzff9sb3n/bG51/3V3ff93eX//
    +bnB3/3Byef9wcnn/cHJ5/3Byef91d33/bG51/3Byef9tb3P/bnF7/25xe/9sb3n/am13/2xudf9nanT/
    +am13/2dqdP9iZW7/am13/25xe/9zdn//bG95/3V3ff9kZmz/bW9z/21vc/9ucHf/dXd9/2dqdP95e4H/
    +cHN9/2xvef9sb3n/bnF7/3Bzff93eX//bnF7/2xvef9ucXv/e36H/3d6g/9ucHf/dXd9/3Byef9wcnn/
    +bnB3/3N1fP9qbHP/bG51/2xudf91d33/bW93/29xeP9tcHj/aGt1/2Vocf9ucXv/amxz/3d5f/9sbnX/
    +bnF7/3Byef9wcnn/cXN6/3F0ev9wc33/c3Z//3Byef9wc33/eXuB/3Bzff9wc33/bnF7/3Bzff9ucXv/
    +cHN9/25wd/9ucHf/cHJ5/21vc/9nanH/b3F1/25wd/9ucHf/bG51/2ptd/9sbnX/dXd9/3N1fP9qbXf/
    +cHN9/3Byef9wcnn/c3Z//2xudf9sbnX/c3Z//2ptd/9ucHf/ZGdx/3N2f/9zdn//c3Z//2ptd/9zdn//
    +cXN7/3N2gP91eIH/cnV//3N1fP9qbXf/cHJ5/29xeP9ucHj/bW94/3J0e/90d3//eXyG/3Bzff9ucXv/
    +d3l//3d5f/9ucXv/c3V8/25xe/9wcnn/bnB3/25wd/91d33/e36H/3Z4fP9wcnn/bnB3/3V4gf91d33/
    +dnh8/25wd/9wcnn/c3V8/3Byef9zdn//e32D/2xvef9sb3n/Z2p0/3d6g/9zdn//dXiB/25wd/93eX//
    +Z2p0/2xvef9ucHf/c3V8/2ZobP9sbnX/c3V8/2psc/9nanT/amxz/3l7gf9ucXv/Zmlz/2Zobv9sbnX/
    +ZGdx/3Bzff9maG7/amxz/2Zpc/9qbHP/bnB3/2xudf9ucHf/cHJ5/2xvef9wc33/Z2p0/3Bzff9wc33/
    +dXiB/3N2f/93eoP/d3qD/3l7gf91d33/c3Z//3V4gf95fIb/cHN9/3N1fP95fIb/d3qD/3V3ff95fIb/
    +cHN9/3V4gf9wc33/bnB3/3d5f/91d33/bnB3/2xudf9sbnX/bW9z/25wd/94eX3/bG95/2xvef93eX//
    +bnB3/3N1fP9zdn//bnF7/3d6g/93eX//cHN9/3Bzff9zdn//dXd9/2psc/9ucHf/bW9z/2xvef9qbXf/
    +c3V8/3V3ff9kZ3H/bG51/2dqcf9maG7/Z2p0/2Rncf9kZ3H/bG95/2dqcf9qbHP/Z2p0/2Rncf9qbHP/
    +Z2px/2psc/9qbHP/cHN9/2ptd/9zdXz/c3V8/3N1fP91d33/cHN9/3Bzff91eIH/bnF7/25wd/9zdn//
    +d3qD/3Bzff9zdn//c3Z//3N2f/91eIH/dXiB/3Byef93eoP/cHN9/3d6g/95fIb/d3qD/3d6g/9wc33/
    +c3Z//3V4gf9wc33/am13/3N1fP93eoP/e32D/3l7gf95fIb/am13/3N2f/9zdXz/c3V8/3l7gf9sb3n/
    +eXuB/3V4gf9ucHf/bnB3/25xe/9zdXz/d3l//25xe/9nanT/bnF7/3d6g/93eoP/bnF7/3Bzff91d33/
    +cHN9/25xe/93eX//Zmlz/2xvef9zdXz/e32D/3Bzff9zdXv/dHZ//3F0fv9sb3n/d3qD/3N1fP93eoP/
    +cHJ5/3N2f/9zdn//c3Z//3Bzff9zdX3/dHeA/3V4gf9zdn//cHN9/3d6g/9wc33/bnB3/2dqdP9ucHf/
    +cHJ5/3Byef9ucHf/b3F1/3Bzff9vcXX/Z2px/2xudf9sbnX/amxz/2ptd/9nanT/Z2p0/25xe/9sb3n/
    +amxz/2ptd/9ucXv/am13/3N1fP9qbXf/Z2p0/25xe/9nanT/bG51/2RmbP9wcnn/bnF7/2xvef9kZ3H/
    +bG95/2lsc/9ucXr/b3F5/2xvef9ucHf/Z2p0/2xvef9ucHf/bG52/2dqdP9tcHf/bG94/3Byef9nanH/
    +Zmlz/3Byef94eX3/bnB3/3N1fP9wcnn/c3V8/2xudf9ucHf/c3V8/3l7gf9zdXz/bG95/21vc/92eHz/
    +c3V8/3Bzff9sbnX/bG51/21vc/9sbnX/bnB3/3V3ff9tb3P/bG51/2dqdP91eIH/c3V8/3Byef9tb3P/
    +eHl9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/am13/3V3ff9ucHf/bG51/25wd/9+gIb/cHN9/3Byef9tb3P/
    +bG51/2psc/97fYP/bG51/2ptd/9qbXf/b3F1/3N1fP9ucHf/bG51/3N1fP9ucHf/cHN9/2Zpc/9qbXf/
    +am13/2ptd/9qbHP/cHN9/2xvef9wc33/bG51/2Rncf9qbHP/am13/2ptd/9sbnX/c3V8/2ptd/9nanT/
    +d3l//2xudf9sb3n/bG51/2xudf94eX3/dXd9/3Byef9vcXX/bG95/25wd/9sb3n/eXuB/3Bzff9wcnn/
    +eXuB/3Byef9zdn//eXuB/3Bzff9ucXv/dXd9/3V3ff9wc33/c3Z//3N2f/9sb3n/cHJ5/3Byef9wc33/
    +cHJ5/3d5f/97fYP/cHJ5/25xe/9ucHf/b3F1/3Byef9sbnX/am13/3N1fP9tb3P/am13/25xe/9kZ3H/
    +am13/2ptd/9ucXv/bG51/3N1fP9ucHf/c3V8/3N1fP9ucHf/dXd9/25xe/9qbXf/cHN9/2xudf9sbnX/
    +c3V8/3V3ff9ucHf/dXd9/3Byef9wcnn/cHJ5/3Byef9tb3P/cHN9/2ptd/9sb3n/am13/25xe/9sb3n/
    +am13/2dqdP9qbXf/am13/2BjbP9qbHP/cHN9/3V3ff91d33/dnh8/2Vmav9ucHf/bnB3/2xvef91eIH/
    +Z2p0/3N2f/9zdn//bnF7/2xvef9ucXv/c3Z//3d6g/9ucXv/am13/25xe/95e4H/eXuB/21vc/9zdXz/
    +c3V8/2xudf9sbnX/c3V8/2Zobv9qbXf/bG51/3V3ff9rbXX/bG52/25vdf9sb3j/Zmlz/3Bzff9sbnX/
    +d3l//21vc/9sbnX/c3V8/3V3ff9vcnv/bnB3/29xef9zdn//bnF7/3N1fP91eIH/bnF7/25xe/9ucHf/
    +cHN9/3N2f/9zdn//cHJ5/3N1fP91eIH/cHJ5/2Zpc/9ucXv/bnB3/29xdf9ucHf/bG95/3Bzff91eIH/
    +cHN9/25xe/9ucXv/c3Z//29xdf92eHz/bW9z/2psc/9wcnn/amxz/25wd/9nanH/c3Z//3Bzff9ucXv/
    +Z2px/3N1fP9ucHf/cHJ7/3R2f/9xdH7/cHJ5/2dqdP9sb3n/cHJ5/29xeP9tb3j/cnR6/3R2ff93eX//
    +bnB3/3Byef93eX//dnh8/2ptd/9wcnn/cHJ5/3Byef9qbHP/cHJ5/3h5ff93eX//dXd9/25xe/9vcXX/
    +eHl9/3d5f/91eIH/c3V8/3N1fP9wc33/cHJ5/2xvef9zdn//bG95/2xvef9sb3n/d3qD/25xe/9wc33/
    +bG95/3d5f/9sbnX/b3F1/25wd/9ucHf/ZGZs/2Zpc/9wc33/amxz/2dqdP9sbnX/d3l//2dqdP9sb3n/
    +Z2px/2Zobv9gY2z/eXuB/2Zpc/9sbnX/amxz/2xudf9zdXz/bW9z/2xvef91d33/bG95/3V4gf9sb3n/
    +c3Z//3d6g/91eIH/cHN9/3l7gf93eoP/foCG/3N2f/9ucXv/c3V8/3N2f/91eIH/dXd9/36Ahv9zdn//
    +c3V8/36Biv9zdXz/cHN9/29xdf9vcXX/dnh8/3V3ff9wcnn/bW9z/25wd/9ucHf/am13/3d5f/9ucXv/
    +am13/3h5ff9sb3n/c3Z//3t+h/9sbnX/bG95/3N1fP9ucXv/cHN9/25xe/9ucXv/Z2p0/2ptd/9sbnX/
    +cHJ5/25wd/9zdn//dXd9/2xvef9vcXX/bW9z/2xudf9ucXv/am13/21vc/91d33/bnB3/25wd/91d33/
    +Z2px/25wd/9wcnn/c3Z//25wd/95e4H/d3qD/3d6g/93eX//cHN9/3Z4fP9wcnn/bnB3/3N1fP9sbnX/
    +bnB3/3V3ff93eX//cHJ5/3N1fP9wcnn/c3V8/3Byef91d33/bW9z/3V3ff9ucHf/cHJ5/3N1fP9ucXv/
    +am13/2xudf9qbXf/bG95/2xudf9iZW7/am13/3N1fP9zdXz/c3V8/3d5f/9lZmr/bW9z/2xudf9ucHf/
    +c3Z//2dqdP9wc33/c3Z//3Byef9sbnX/cHJ5/3N1fP93eoP/bG51/2psc/9ucHf/d3l//3d5f/9ucHf/
    +dXd9/3V3ff9ucHf/bnF7/3d5f/9qbXf/cHJ5/29xdf91eIH/bnF7/3Fze/9ydHz/bnF7/2ptd/91d33/
    +bnB3/3V3ff9vcXX/bnF7/3N2f/93eoP/cnV8/25wd/9tb3j/dnh8/25wd/9vcXX/bnB3/2xvef9qbXf/
    +Zmlz/25xe/9qbXf/am13/2dqcf9kZ3H/Z2p0/2Zobv9gY2z/Z2p0/2Zpc/9maXP/amxz/2Rncf9qbXf/
    +am13/2dqdP9sb3n/am13/3Bzff9sbnX/dnh8/29xdf9qbHP/cHN9/3Byef9zdn//Zmlz/3Bzff9wc33/
    +cHN9/2ptd/9zdn//bnB3/3FzfP9wcnr/a211/25wd/9sbnX/bG95/25weP9xc3r/cHN7/3J1fv94eoP/
    +fYCJ/3N2f/93eoP/eXyG/3d6g/9zdXz/dXiB/3d6g/9wc33/am13/25wd/93eoP/eXuB/3d5f/9zdn//
    +bnF7/3t9g/95e4H/c3Z//3Byef9wcnn/cHN9/2xvef9ucHf/dXd9/3Byef9qbHP/b3F1/3d6g/9wc33/
    +c3Z//2xvef91d33/am13/25wd/9sb3n/bnF7/2dqcf9sbnX/dnh8/29xdf9qbXf/bG51/3t9g/9qbXf/
    +bnF7/2xudf9sbnX/Z2px/3t9g/9qbHP/bnB3/2xudf9tb3P/bnF7/25wd/9ucHf/dXd9/3Byef91d33/
    +amxz/25wd/91d33/dXd9/25wd/9zdXz/bG51/3N1fP9sbnX/ZGZs/2dqdP9qbXf/am13/2dqdP9sb3n/
    +amxz/2Rncf9zdXz/Zmlz/2dqdP9kZ3H/ZGZs/2ptd/9sb3n/Z2p0/2Jlbv9kZmz/XWBq/2BjbP9qbXf/
    +Zmlz/2Jlbv9sb3n/am13/2xvef9zdXz/Z2p0/2xudf9ucXv/bnF7/3Byef9zdXz/c3V8/2psc/9ucHf/
    +bG95/2xvef9tb3P/c3V8/3h5ff9sbnX/bnB3/25wd/9wc33/cHN9/2xvef9ucHf/dXd9/3Bzff9ucHf/
    +cHN9/2dqdP9sb3n/c3Z//3Z4fP9qbXf/c3V8/2ptd/9sbnX/cHN9/2xvef9zdXz/bnF7/2xudf9sb3n/
    +amxz/2psc/9sb3n/bG95/2Zpc/9qbXf/Z2p0/25xe/9qbXf/am13/2xudf9wc33/bG51/2xvef9sb3n/
    +bnF7/3Byef9ucHf/bnB3/3N1fP9tb3P/Zmhu/29xdf91d33/dXd9/3d5f/93eoP/amxz/25wd/9ucXv/
    +c3Z//3d5f/9sb3n/c3Z//3l7gf9zdXz/am13/3N2f/93eoP/eXyG/3Byef9sb3n/cHN9/3l8hv97fof/
    +cHN9/3t9g/97fYP/dXd9/3Bzff97fYP/am13/25xe/9ucHf/eXuB/21wef90dnz/dXd//3R3gP9zdXz/
    +eXuB/3Bzff95fIb/c3Z//3Bzff91eIH/eXuB/3Z5gv9ydHz/c3aA/3p9g/9zdn//cHN9/3Bzff9ucXv/
    +c3Z//3Bzff93eoP/d3qD/3V4gf9zdXz/cHN9/3N2f/9sb3n/Zmlz/3Bzff9ucHf/c3V8/3N2f/9sb3n/
    +bG95/3Byef9ucXv/cHN9/25wd/9wc33/bnB3/3h5ff9vcXX/amxz/25xe/9vcXX/c3V8/2Zpc/9wc33/
    +c3V8/3Byef9sb3n/d3qD/3Byef9vcnv/cHJ6/29xef9ucHf/amxz/21vc/9sbnX/b3F1/25wd/9wcnr/
    +cXR9/3V3ff9sb3n/c3V8/3h5ff93eoP/cHN9/25xe/9zdn//cHN9/2dqdP9wc33/e32D/3l8hv93eoP/
    +c3Z//3Bzff93eX//dXd9/3Byef9ucHf/b3F1/3Bzff9ucXv/bnF7/3N2f/9ucHf/Z2p0/2ptd/93eX//
    +bnB3/25wd/9qbHP/dXd9/2xudf9vcXX/bnB3/2xvef9maXP/bG95/3Z4fP9vcXX/bG51/25xe/9/goz/
    +dXiB/3N2f/9ucHf/b3F1/2psc/9+f4P/bG51/29xdf9ucHf/b3F1/3Byef9sbnX/bnB3/3V3ff9wc33/
    +c3Z//2psc/9vcXX/dXd9/3N1fP9qbXf/bnF7/2xudf9wc33/amxz/2BjbP9kZ3H/amxz/2ptd/9maXP/
    +cHN9/2xudf9maXP/d3l//2xudf91d33/bG51/2ptd/91d33/bnF7/2ptd/9nanH/Zmlz/2Rncf9kZ3H/
    +cHN9/2xvef9nanT/dXd9/25xe/9ucXv/c3V8/25wd/9sb3n/dnh8/3Byef9ucXv/c3V8/3Bzff9maXP/
    +bnB3/3Byef9wcnn/bnB3/3N2f/95e4H/cHN9/3Byef9wc33/dXiB/3N2f/9wc33/cHN9/3t9g/93eoP/
    +dXiB/3t9g/9zdn//d3qD/3l8hv95fIb/cHN9/3l8hv9zdn//cHN9/3l7gf9ucXv/c3Z//3V3ff9vcXX/
    +c3V8/25wd/9wcnn/dXd9/3Z4fP9zdXz/cHJ5/2xvef9ucXv/bnF7/2ptd/9qbHP/bnF7/2ptd/9qbHP/
    +am13/3Bzff9wc33/am13/2xudf9ucXv/bG51/2Rncf9sbnX/c3V8/3V3ff9zdXz/c3V8/2BjbP9maXP/
    +am13/2xudf9wc33/Zmlz/25xe/91d33/bG51/2Zpc/9sb3n/bnF7/3V3ff9maXP/YGNs/2dqcf9wcnn/
    +cHJ5/2dqcf9ucXv/bG95/2psc/9maG7/am13/2BjbP9nanH/Z2px/3V3ff9qbHP/bnB3/29xd/9sbnX/
    +amxz/2xvef9maXP/cHJ5/2psc/9nanH/bG95/3Bzff9ucXr/aGtz/2ptd/9zdXz/bW9z/2xudf9sb3n/
    +bG95/2ptd/9maXP/bnF7/2ptd/9qbHP/ZGdx/2dqcf9qbXf/Z2p0/2Zpc/9qbXf/bG51/2xudf9tb3P/
    +bG51/25wd/9sb3n/cHJ5/3N1fP9sb3n/d3l//3Bzff93eX//bG95/2ptd/9ucXv/cHJ5/3N2f/9qbXf/
    +d3qD/3N2f/9zdn//bnB3/3N2f/9ucHf/bnB4/2ptdv9rbnf/bG51/2Rncf9sbnX/am13/2psc/9pbHT/
    +bXB4/2xueP9wc33/bG51/3Byef94eX3/cHN9/3Bzff9sb3n/c3Z//25xe/9nanT/bnF7/3d5f/91eIH/
    +c3Z//25xe/9zdn//eXuB/3Z4fP91d33/bG51/21vc/9ucHf/bG51/2xudf9zdXz/bG51/2Rncf9maXP/
    +cHJ5/2dqcf9maXP/YmVu/25xe/9nanT/bG51/2xudf9qbXf/Zmhu/21vc/9zdXz/bW9z/2ptd/9sb3n/
    +f4GH/25xe/9sb3n/bG51/2xudf9qbHP/fX6B/2psc/9sbnX/b3F1/29xdf9zdXz/bG95/2xvef9wc33/
    +cHN9/3Bzff9qbHP/cHJ5/3V3ff9zdn//bnF7/3V3ff9ucHf/dXiB/3Byef9nanH/bnF7/3Bzff93eoP/
    +bG95/3l7gf93eoP/d3l//3+Bh/9zdXz/d3qD/3Bzff9wc33/eXyG/3d6g/9ucXv/bnB3/2xvef9sbnX/
    +am13/3V3ff9wc33/Z2p0/3h5ff9zdXz/c3V8/3d5f/9sb3n/bG95/3h5ff9ucHf/c3V8/3V3ff91d33/
    +Z2px/25wd/9wc33/bG95/2xudf9sbnX/c3V8/2ptd/9maXP/amxz/2ptd/9ucXv/am13/2ptd/9zdXz/
    +cHN9/2ptd/9ucXv/ZGdx/2ptd/9nanT/cHJ5/2Rncf9zdXz/am13/2ptd/9ucXv/am13/3Bzff9wc33/
    +bG95/3V3ff9qbXf/bnB3/3N2f/91eIH/cHN9/3V3ff91d33/dXd9/3Bzff9wc33/cHN9/3Z4fP9wc33/
    +cHN9/3N2f/93eoP/d3qD/25xe/9zdXz/dXiB/3Byef9sb3n/cHN9/3l7gf91eIH/dXd9/3d5f/9kZ3H/
    +bnB3/2xudf9zdXz/eHl9/25wd/91d33/dnh8/2ptd/9maXP/c3V8/3N1fP93eX//bG51/2psc/9sbnX/
    +dXiB/3V3ff9vcXX/c3Z//3N2f/9sb3n/bnB3/3N2f/9sb3n/bG95/21vc/95e4H/b3F2/3J0ev90dn7/
    +dnmC/3V3ff95fIb/dXd9/3t+h/9wc33/c3V8/3V4gf93eoP/dnmB/3Fzev9vcXf/dXh+/29xdf9tb3P/
    +bG51/25wd/9ucHf/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/29xdf9maG7/cHJ5/2ptd/9nanT/
    +amxz/2Zpc/9sbnX/bG95/2xvef9qbXf/amxz/3Byef9maXP/bG95/2Zobv9dYGr/YmVu/2Zobv9maXP/
    +XWBq/2ptd/9nanT/Zmhu/2Jlbv9nanT/Zmhy/2hqcf9oa3P/aWtz/2ptd/9qbHP/bG51/25wd/9rbXL/
    +aGty/2ttc/9pbHX/Z2p0/2Vocv9maXP/bnF7/3Bzff9ucHf/bG51/3N1fP9sbnX/Zmlz/2xvef9zdXz/
    +c3V8/3N1fP9qbHP/bnF7/3N1fP9wc33/bnF7/2Zpc/9nanH/Zmlz/2Rncf9sbnX/cHN9/2psc/9kZ3H/
    +ZGdx/25wd/9iZW7/ZGdx/11gav9nanT/ZGdx/2Zobv9qbHP/Z2px/2Jlbv9nanT/cHN9/2dqdP9qbXf/
    +bG95/36Biv9ucXv/bG95/21vc/9tb3P/b3F1/4CChv9ucHf/cHJ5/3Byef9zdXz/c3Z//3Byef9wc33/
    +cHN9/3N2f/9wc33/am13/25wd/9wc33/dXd9/25wd/9ucHf/bG51/3Bzff9nanT/YmRq/2dqdP9qbXf/
    +bG95/2Zpc/9ucXv/Z2p0/2Jlbv9ucHf/YmVu/2dqdP9nanH/Z2px/3Byef9zdXz/amxz/2dqcf9nanT/
    +Zmlz/2dqdP9sb3n/am13/2Zpc/91d33/bG95/3Byef93eX//dXiB/3V4gf97fof/d3qD/3t9g/93eoP/
    +c3Z//2Zpc/9zdXz/c3V8/3V4gf9sb3n/cHJ5/3d5f/9ucXv/bG51/25xe/9wc33/dXiB/3N1fP91d33/
    +eXuB/3t9g/91eIH/foCG/3V3ff93eoP/dXiB/3V4gf9sb3n/d3qD/3N2f/9wcnn/dXiB/3V4gf95e4H/
    +dXiB/3Bzff93eX//c3Z//3Byef9wc33/dXiB/3N2f/91d33/c3V8/3N1fP9wcnn/bnB3/3Byef92eHz/
    +cHJ5/25wd/9ucHf/c3V8/3N1fP9sbnX/bW9z/3N2f/9wcnn/amxz/25xe/93eX//dXiB/3N2f/9zdn//
    +Z2p0/2ptd/9ucXv/cHN9/3V4gf9wcnn/c3Z//3d5f/9sb3n/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/
    +b3F1/3h5ff95e4H/b3F1/3N1fP91d33/bG95/2ptd/91d33/amxz/2ttdP9sbnX/c3Z//2ptd/9vcXj/
    +cHJ3/25wd/9tb3P/cHJ5/2xudf93eX//am13/21vc/9zdXz/dXd9/3J0e/9sb3n/bXB6/3Bzff9sbnb/
    +amxz/2ptd/9rbnj/bG51/2tud/9wcnn/bG95/25wd/9ucHf/cHJ5/3V3ff9ucHf/Zmlz/3R3gP9tcHf/
    +bnB3/3Fzef9ucHf/cnR7/3Bzff9ydX7/cHJ8/3Bzff93eoP/cHN9/3h6gP9zdn7/bnF7/3Byef9vcXj/
    +bnF7/2hrdf91d33/bW92/25wd/9vcXj/eHl9/29xef9wcnn/cHN8/3Z3fP95e4H/dXd9/3d5f/96fIP/
    +cnV+/3F0e/91d37/dniA/3V3ff9wcnn/c3Z//3Z4f/93eoP/dXiB/3Bzff91eIH/bnF7/2ptd/91eIH/
    +e32D/3d5f/93eX//c3V8/3d6g/9zdn//dnh8/3N1fP9ucHf/bnF7/25xe/9vcXX/bG95/3V3ff9vcXX/
    +amxz/2xudf92eHz/bnB3/3Byef9nanT/cHN9/2ptd/9ucHf/c3Z//3Byef9qbHP/b3F1/3Z4fP9qbHP/
    +bG51/25wd/9/gYf/cHJ5/2ptd/9tb3P/bnB3/2ptd/9/gYf/bnB3/29xdf9ucHf/bG95/3Byef9tb3P/
    +am13/2ptd/9wc33/bnF7/2dqdP9sbnX/c3V8/3h5ff9wcnn/bnF7/2xvef9wcnn/am13/2Vmav9sbnX/
    +bnF7/3Byef9sbnX/dnh8/3Bzff9ucHf/eXuB/3V3ff93eoP/cHN9/3N2f/97fof/e36H/3V4gf91d33/
    +dXd9/25xe/9zdXz/dXiB/3V4gf9wc33/e32D/3d6g/95fIb/e36H/2xvef9ucXv/d3l//25xe/9zdn//
    +c3Z//3N2f/9maG7/bnB3/3N1fP9wcnn/b3F1/21vc/9zdXz/bG51/2dqcf9wcnn/bnF7/3N1fP9ucHf/
    +bG95/3V3ff9zdXz/bG51/3Byef9ucHf/c3V8/25wd/91d33/am13/3V4gf9ucXv/amxz/2xvef9ucXv/
    +cHN9/3Bzff9wcnn/c3V8/3Byef9wcnn/cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/
    +d3l//25wd/9wcnn/bnB3/3V3ff91d33/bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9wcnn/
    +c3V8/2Zobv9nanT/bnF7/2xvef91d33/bG51/2ptd/9zdXz/Z2p0/2Rncf9ucXv/c3V8/3N1fP9qbXf/
    +am13/2psc/93eX//d3qD/2xudf9ucXv/bG95/2ptd/9qbXf/c3V8/2ptd/9xc3r/bnB3/3d5f/9ucHf/
    +cHJ5/29xd/9ucXv/amxz/25wd/9ucHf/d3l//25wd/9vcXX/dXd9/3d5f/9wcnn/bG52/25xe/9xdHz/
    +am13/2ttdf9qbXf/bG51/2xudf9rbnf/bXB6/2xudf9qbXf/bG51/3Byef90dnz/cHJ5/2hrc/9ydX7/
    +aGt1/25wd/9wcnn/bnB4/25weP9ydHv/b3J7/29ye/9vcXj/dXiB/3F0ff9zdn//bG95/2xvef9ucHf/
    +cXN3/3Byef9oa3P/cnR8/2xveP9qbXf/aWx1/3R2ff9pbHP/am13/2dqc/9pbHb/bG51/2Rncf9maG7/
    +bG95/2psc/9maXP/bG94/29xef9sb3f/am12/2ttdv9ydHr/c3V8/3Bzff9vcXX/cHJ5/2xvef9qbXf/
    +cHN9/3d5f/93eX//d3l//3Byef91eIH/c3Z//3d6g/93eoP/cHN9/3N2f/9wc33/bG95/29xdf91d33/
    +b3F1/2psc/9sbnX/dnh8/25wd/9sbnX/bG51/25wd/9qbHP/bG51/2xvef9wcnn/amxz/2xudf92eHz/
    +Z2px/25wd/9ucHf/f4GH/3Z4fP9zdXz/cHJ5/25wd/9qbXf/gYOK/2xvef9ucXv/bnB3/3V4gf9zdn//
    +c3Z//3N2f/91eIH/e32D/3t9g/92eHz/eXuB/31+gf9/gYf/eXuB/3V4gf9zdn//dXiB/3Bzff9qbXf/
    +c3V8/3d6g/93eoP/c3Z//3t9g/93eoP/bnF7/3t9g/9ucXv/dXiB/25xe/9vcXX/eXuB/3d6g/9sb3n/
    +bnB3/25wd/9nanH/bW9z/25wd/9sbnX/Z2px/3N2f/9ucXv/c3Z//3V3ff91d33/d3qD/36Ahv91eIH/
    +eXuB/3d6g/93eoP/bG95/3t9g/97fYP/d3qD/3V3ff91d33/dXiB/3V4gf9ucXv/d3qD/3V4gf9zdn//
    +bnB3/3Byef95e4H/dXiB/3Byef9zdn//bnB3/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/
    +bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/
    +bG51/3N1fP9nanT/amxz/2psc/9ucXv/cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/
    +ZGdx/2dqdP9cX2j/YGNs/2Zpc/9maXP/bG95/2Rncf9kZ3H/cHJ5/2Zobv9kZ3H/am13/2xvef9zdXz/
    +bG95/2xudf9sbnX/d3l//3l8hv9sbnX/c3V8/3N1fP9zdXz/b3F1/3V3ff9sb3n/cnR6/3Fzev90dn7/
    +bnF5/3J0e/9wcnf/cHJ5/2xudf9ucHf/bnB3/3d5f/9sbnX/b3F1/3V3ff91d33/cnR7/2xudv9sbnb/
    +cXN7/2ttc/9qbHX/bG93/3Fzef9rbXb/bG53/29yev9tcHj/a254/2xvef9ucXn/c3V7/29yev9rbXb/
    +cnV//25xef9wcnn/c3V8/3V3ff9ydHn/eXuA/3V3fv90dn3/c3V9/3h7hf91eID/dXd+/3N1fP90dnz/
    +cHJ5/3R2fv9xdH3/b3J8/3J1fP9wc3v/a252/29xeP9ydX//bW94/2xveP9nanT/a253/2xudf9qbXf/
    +bW9z/3Bzff9qbXf/aGt0/2xvef9zdn3/am11/21veP9sbnb/bW94/2xvef9qbXf/am13/3Bzff9sbnX/
    +Z2p0/2xvef9ucXv/c3V8/2xvef9sbnX/c3V8/3N1fP9zdXz/cHJ5/21vc/9qbXf/bnF7/21vc/9ucHf/
    +dnh8/21vc/9qbHP/cHJ5/3l7gf9wcnn/bG95/2xvef9ucXv/bnB3/2xvef9zdn//cHN9/2xvef9qbXf/
    +eHl9/2dqdP9nanT/bG51/3t9g/9sb3n/cHN9/2xvef9qbXf/Z2p0/3t9g/9qbHP/Z2px/2dqcf9maXP/
    +Z2px/2dqcf9qbHP/am13/25xe/9qbXf/Z2p0/2xudf9wc33/c3V8/2xvef9qbXf/bW9z/25wd/9ucHf/
    +Zmhu/2xudf9sbnX/c3V8/2dqdP9zdn//c3Z//25wd/95e4H/am13/3V4gf9zdn//cHJ5/3l7gf97fYP/
    +cHJ5/3N2f/9wcnn/bG95/3Byef9zdn//dXiB/2xvef91eIH/c3Z//3d6g/91eIH/c3V8/3N2f/97fYP/
    +bnF7/3N2f/9zdn//c3Z//2dqdP95e4H/c3Z//25xe/9ucHf/bG95/25xe/9zdXz/Zmlz/3N1fP9zdXz/
    +c3V8/25wd/9wcnn/dnh8/3Z4fP9ucHf/cHN9/25wd/9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/
    +bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/
    +am13/2psc/91d33/am13/2xudf9maXP/bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/
    +dnh8/3Byef9zdXz/Zmlz/2xvef9wc33/dXiB/3d5f/9wc33/cHN9/36Biv9wcnn/c3V8/3t9g/9+gIb/
    +e32D/3d6g/9wc33/cHN9/3l8hv+Bg4r/dXiB/3t9g/93eoP/eXuB/3N2f/91d33/b3F1/3R2fP9vcXn/
    +cnR8/21vdv90dnv/bnB3/3Byef9qbXf/bG95/2xvef93eX//bG51/25wd/93eX//e36H/3Z5gv9tcHr/
    +b3J7/3Z3ff9rbnf/bG94/2xveP90dn//bW92/3J1ff9wc33/bW92/21wev9ydX//cHN9/3F0ff9tcHn/
    +aWty/21vdv9qbHP/bG94/3V3fv9tcHn/a210/3Z4fv9tb3b/bW92/21veP9ucXr/b3F6/21wef9tb3b/
    +cXN6/2xudP9ydHv/b3F5/2xvd/9ydHz/bW93/2tueP90dnz/cXN6/29xeP9sbnX/amxz/2xudf9qbHP/
    +bG51/2xudf9wc33/bG51/2ptd/9wc3z/c3V8/21vdv9zdXz/bnB3/25xev9ucHf/cHJ5/25xe/9zdn//
    +cHJ5/2ptd/9zdXz/cHN9/3V3ff93eX//cHJ5/3V4gf9zdn//dXd9/3Bzff9ucHf/c3V8/3Bzff9zdXz/
    +cHN9/3l7gf9wc33/am13/3Byef93eX//am13/2xvef9sb3n/bG95/2ptd/9sbnX/dXd9/3Byef9qbXf/
    +Z2p0/3V3ff9nanT/bG51/29xdf9+gIb/dXd9/3V3ff9ucHf/bnB3/25wd/+Bg4r/bnB3/29xdf9vcXX/
    +bG51/2xudf9ucHf/bnB3/21vc/91d33/bnB3/25wd/9vcXX/dnh8/3l7gf9zdn//cHN9/25wd/9ucXv/
    +bnB3/2dqcf9vcXX/bG51/3N1fP9qbXf/dXiB/3N2f/9ucHf/d3l//2dqdP91eIH/c3Z//3N1fP9zdn//
    +eXyG/3N1fP93eoP/cHN9/3Bzff9zdXz/bnF7/3V4gf9wc33/eXyG/3V4gf95e4H/d3qD/2xudf9sbnX/
    +dnh8/3Byef9zdXz/bnB3/25xe/9gY2z/bnF7/25xe/9ucHf/bG51/2xudf9sb3n/bG95/2dqcf9zdXz/
    +bG95/3N2f/9ucHf/bnB3/3N1fP92eHz/b3F1/3Byef9ucHf/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/
    +am13/2xudf9ucXv/bG95/25xe/9wc33/bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/
    +bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn//
    +d3qD/3l7gf93eoP/e32D/3Bzff9zdn//d3qD/36Ahv97fof/dXiB/3d5f/+DhYz/dXiB/3V3ff97fYP/
    +foCG/3t9g/9zdn//cHJ5/3N1fP93eX//d3qD/2xvef93eX//c3Z//3N2f/9ucXv/dXd9/25wd/94eoD/
    +dHeA/3N2f/9ucXv/dnh//2xvef9wcnn/bG51/2xudf9qbHP/eHl9/2xvef9sb3n/d3l//3d6g/91d33/
    +bnF7/3Bzff96fIP/bnB3/29xdf9ucXr/d3h8/2xudf9ydHv/bnB3/2ptd/9vcXj/bnF7/2xudf9wcnn/
    +b3F4/2Zpc/9rbnX/am13/29yfP93eoD/b3J8/2xvef95e4H/b3F1/2xvef9ucXv/b3J8/3F0ff9vcnv/
    +bnF7/3Z4fv9wcnn/dnh+/3J0fP9ydHv/dXd9/2xudv9nanT/dnh+/25xe/9ucXv/am13/2ptdP9qbHP/
    +bW9z/2xudf9qbHP/cHN9/2xudf9sb3n/dXd9/3d5f/9wc33/eHqA/3N2f/9sb3n/c3Z//3d6g/91eIH/
    +e32D/3N2f/9wc33/e32D/3l8hv9+gIb/e32D/3Bzff95e4H/d3l//3d5f/9ucXv/bnB3/25wd/9ucXv/
    +bG95/2xudf9wc33/amxz/2BjbP9nanH/bG95/2Zpc/9nanH/Zmlz/2ptd/9nanT/am13/3V3ff9ucXv/
    +am13/2ptd/9zdXz/bG51/2xudf9qbXf/e32D/25xe/9wc33/am13/2ptd/9qbXf/f4GH/2ptd/9qbXf/
    +bG95/2ptd/9wcnn/bnB3/25wd/9sbnX/dnh8/25wd/9sb3n/bG95/3V3ff93eX//cHN9/3N2f/9wcnn/
    +cHN9/3Byef9nanT/cHJ5/3Byef9wc33/am13/3N2f/9zdn//cHJ5/3l8hv9ucXv/dXiB/3Bzff9vcXX/
    +bnB3/3h5ff9tb3P/bG95/2psc/9qbHP/Z2p0/2ptd/9ucXv/Zmlz/2xvef9sbnX/am13/25xe/9sbnX/
    +bW9z/3h5ff9wc33/c3V8/3N1fP9wc33/amxz/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/3Byef9maXP/
    +bnF7/2xudf9ucXv/am13/2xvef9zdXz/cHN9/2xudf9wcnn/bG51/3Byef9ucXv/bG95/2ptd/93eX//
    +dXd9/3Byef9ucHf/c3V8/3N1fP91d33/c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/
    +eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/
    +bG95/2xvef9wcnn/am13/3Bzff9nanT/Z2p0/25xe/9zdXz/dXd9/2xudf9sbnX/c3V8/2xudf9qbXf/
    +cHN9/3Z4fP9wcnn/bnB3/2xudf9tb3P/dXd9/3V4gf9sbnX/dXd9/3V3ff91d33/c3V8/3Z4fP9vcXX/
    +c3Z//3V3ff9sbnX/Z2p0/3V3ff9qbXf/bnF7/2dqdP9qbHP/Z2p0/3V3ff9ucHf/bnB3/3N1fP92eHz/
    +dXd9/3Byef9wcnn/eXuB/25wd/9sb3n/c3V8/3Z4fP9ucHf/cHJ5/21vc/9sbnX/cHJ5/3N2f/9wcnn/
    +c3Z//3N2f/9qbXf/c3V8/3N1fP93eoP/eXyG/25xe/9qbXf/fX6B/21vc/9nanT/bnF7/2xvef9sb3n/
    +bG95/2xvef9wc33/amxz/2xvef9sb3n/bG95/25xe/9nanT/ZGdx/3V3ff9wcnn/bnB3/21vc/9vcXX/
    +am13/29xdf9ucHf/bG95/3N2f/9sb3n/bG95/3N2f/93eX//bnF7/3d5f/9wc33/cHJ5/3N2f/91eIH/
    +c3Z//3l7gf9sb3n/bnB3/3N1fP91d33/dXd9/3N1fP9sbnX/dnh8/3Z4fP91d33/bnB3/21vc/9qbHP/
    +am13/2xudf9tb3P/cHJ5/2xudf9kZmz/bnB3/3V3ff9sbnX/b3F1/2psc/9wcnn/bG51/2xvef91d33/
    +c3Z//3Byef9ucHf/e32D/3N1fP9zdXz/c3V8/4OFjP91eIH/fX6B/3d5f/97fYP/dXd9/4mLkf93eX//
    +dXiB/3d6g/9zdn//dXiB/3Bzff9zdn//dXd9/3t+h/97fYP/dXd9/3Bzff95e4H/f4GH/3d6g/9ucXv/
    +bnB3/3Byef9wcnn/Z2p0/25wd/9vcXX/cHJ5/2psc/9ucHf/bnB3/2xudf93eX//am13/3N2f/9sb3n/
    +bnB3/25xe/91eIH/am13/3Bzff9ucHf/bG95/3Byef9wcnn/c3V8/2xudf9wcnn/bnB3/25wd/9zdXz/
    +cHN9/3N1fP91eIH/c3Z//3N2f/95e4H/dXiB/25wd/9ucXv/bnF7/25xe/9vcXX/amxz/3V3ff9zdXz/
    +amxz/3N1fP9tb3P/cHN9/2ptd/9ucHf/c3V8/3d5f/9qbXf/cHJ5/21vc/9sb3n/c3V8/25wd/9qbXf/
    +dXd9/3V4gf9wc33/bG95/3N2f/91eIH/d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/
    +dXiB/3t+h/9zdn//dXiB/25xe/97fYP/c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/
    +bnB3/3Bzff9zdn//c3V8/3Byef91d33/bG51/21vc/91d33/dXd9/3d5f/9sb3n/bnF7/3l7gf9wcnn/
    +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//cHJ5/3d5f/95fIb/bnB3/3N2f/91d33/dXd9/25xe/95e4H/
    +am13/3V4gf9wc33/bnB3/25wd/94eX3/b3F1/3V3ff9vcXX/b3F1/2xudf9ucXv/bG51/25wd/91d33/
    +dnh8/3N1fP9sb3n/bnB3/3Z4fP9tb3P/bG51/25xe/91d33/amxz/2xvef9qbXf/bW9z/3Byef91d33/
    +bW9z/25xe/9ucXv/Z2px/21vc/9sbnX/c3Z//36Ahv9sb3n/ZGdx/3d6g/9kZ3H/YGNs/2Zpc/9kZ3H/
    +ZGdx/2Zpc/9nanT/bG95/2psc/9qbXf/bnF7/25xe/9ucXv/Z2p0/2Zpc/91d33/cHN9/25xe/9sbnX/
    +amxz/2psc/9ucHf/bnB3/2xudf91eIH/bnF7/3Bzff93eoP/eXuB/3Bzff91eIH/cHN9/2ptd/9ucXv/
    +cHN9/25wd/91d33/bW9z/2xudf9ucHf/cHN9/3N1fP9wc33/bG95/3V3ff9ucXv/cHN9/2ptd/9nanH/
    +ZGdx/2Zpc/9iZW7/ZGdx/2Zpc/9nanH/XWBq/2psc/9ucXv/ZGdx/2xudf9kZ3H/bG95/2Zpc/9qbXf/
    +cHN9/3Bzff9sbnX/bW9z/3N2f/9sb3n/bnB3/29xdf9+gIb/cHJ5/3Byef9ucHf/cHJ5/21vc/9+gIb/
    +bG95/2xudf9wcnn/bG51/25xe/9qbHP/amxz/2dqdP93eX//cHN9/2ptd/9sbnX/c3V8/3N2f/9ucXv/
    +Z2px/2dqcf9nanT/Z2px/2BjbP9nanT/bG51/2xvef9qbHP/am13/2ptd/9qbXf/dXiB/2psc/9ucXv/
    +bW9z/2xvef9ucXv/d3qD/25wd/9wcnn/bnB3/2ptd/9wcnn/c3Z//3V3ff9sb3n/cHN9/3N1fP9wc33/
    +eXuB/3d5f/91d33/e32D/3t9g/97fYP/f4GH/36Ahv9zdXz/d3l//3t9g/93eX//d3l//3d5f/9+f4P/
    +e32D/3Bzff93eoP/c3Z//36Ahv9zdn//dXiB/3t9g/97fof/c3Z//3V4gf9zdXz/cHN9/3l7gf9wc33/
    +bnF7/3V3ff91eIH/bnF7/25xe/91d33/bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/
    +bnB3/25wd/93eX//cHJ5/3Byef9ucHf/eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/
    +bG95/2xudf9ucXv/cHJ5/3N1fP9ucHf/c3V8/2dqdP9maXP/bnF7/25xe/9ucXv/ZGdx/2dqcf9ucHf/
    +Zmhu/2Jlbv9qbXf/cHJ5/2xvef9ucXv/bG95/2dqdP9wc33/c3Z//2xudf9wc33/cHN9/3Byef9sbnX/
    +cHN9/2dqdP9qbXf/bG95/2xvef9qbXf/c3V8/2xudf9wc33/am13/2ptd/9qbXf/cHJ5/25wd/9ucHf/
    +dXd9/3V3ff9zdXz/bnB3/25wd/92eHz/bG95/2dqdP91d33/dXd9/2xudf9qbXf/bG51/2xudf9qbXf/
    +c3V8/25wd/9sb3n/cHN9/2ptd/9wcnn/bnB3/3Bzff9+gIb/bnB3/2psc/9/gYf/b3F1/2psc/9zdXz/
    +bnB3/3Byef9wcnn/bnF7/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/2xudf9maG7/d3l//3l7gf9zdn//
    +bnB3/2xudf9nanT/bnB3/25wd/9qbXf/c3Z//2ptd/9sb3n/c3Z//3d5f/9ucXv/dHeA/3N2f/9rbnf/
    +bnF7/25xe/9ucHf/eXuB/2xvef9sb3n/cHN9/3d5f/95e4H/dXd9/3Bzff91d33/cHN9/3Z4fP9ucHf/
    +bG51/29xdf9ucHf/bnB3/2xvef9zdn//c3Z//2Zpc/9zdn//d3qD/25wd/9wc33/am13/3V4gf9wc33/
    +dXiB/36Ahv9+f4P/dXd9/3V3ff97fYP/c3Z//3N1fP9wc33/foGK/3V4gf91eIH/eXuB/3t9g/91d33/
    +g4WM/3t9g/9zdn//eXuB/3Bzff91eIH/cHJ5/25xe/9ucHf/eXyG/3l7gf9wc33/cHN9/3N2f/93eX//
    +c3Z//25wd/9sb3n/bnF7/25wd/9nanT/b3F1/25wd/9wcnn/bW9z/2xudf9ucHf/am13/3l7gf9nanT/
    +bnF7/25xe/9wc33/cHN9/3t+h/9qbXf/bnF7/3Byef9ucHf/bnF7/3V4gf91eIH/dXd9/3l8hv91d33/
    +d3l//36Ahv95e4H/d3l//3l8hv95e4H/d3l//36Ahv97fYP/cHN9/3V4gf91eIH/cHN9/3Byef9qbXf/
    +dnh8/3Byef9nanT/bnF7/2psc/9zdXz/bG51/2ptd/9ucXv/c3V8/2dqdP9qbXf/Z2px/2Zobv9ucXv/
    +am13/2Rncf9qbXf/am13/2Zpc/9nanH/am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/
    +eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/
    +bnF7/25wd/9vcXX/c3V8/3Byef9ucXv/bnB3/3N1fP9qbXf/Z2p0/3Bzff92eHz/dXd9/2psc/9wcnn/
    +dXd9/21vc/9sbnX/c3V8/3V3ff9wc33/bG95/3Byef9sb3n/c3V8/3l7gf9sb3n/cHN9/3V3ff9zdXz/
    +cHN9/3V4gf9sb3n/bnB3/29yfP9wc33/bG95/3d5ff9sb3n/dXd9/2ptd/9sb3n/am13/25xe/9wcnn/
    +c3Z//3V4gf95e4H/d3l//25xe/9ucXv/d3l//25xev9qbXf/cHJ5/3J0e/9sbnX/bG52/2xudf9sbnX/
    +bnB3/3N1fP9tb3P/a254/2tueP9oa3T/a253/2xudf9vcXn/eXuC/29xeP9qbHP/fH6F/25wdf9nanL/
    +cnR7/29xeP9xc3r/cHJ5/21vd/9zdXz/b3F4/25xev9ucXv/b3J8/25xe/9sbnX/Zmlz/3N2fP9xdH7/
    +cnR7/21vc/9nanT/ZGdx/2xudf9sbnX/amxz/25xe/9qbXf/am13/25xev90dnz/a211/2ptd/9sb3n/
    +Z2pz/2xvef9sbnX/amxz/3N1fP9nanT/Z2p0/2xvef9zdXz/c3V8/3Bzff9sb3n/cHN9/2xvef9zdXz/
    +bG95/2xudf9qbXf/bG95/2xudf9qbXf/cHJ5/25wd/9nanH/cHN9/3N2f/9sb3n/cHJ5/2Zpc/9wcnn/
    +bG51/3Bzff93eX//d3qD/3Byef9qbXf/dXiB/25xe/9zdXz/cHN9/36Biv9zdn//c3Z//25xe/9zdn//
    +c3Z//4GDiv9zdn//cHJ5/3l7gf9wcnn/c3Z//3N1fP9wc33/bG95/3d6g/91eIH/b3F1/29xdf9zdXz/
    +eHl9/3h5ff9tb3P/bG51/2xudf9qbHP/Z2p0/21vc/9wcnn/cHJ5/25wd/9wcnn/cHJ5/25wd/95fIb/
    +Z2p0/25xe/9wc33/bnF7/25xe/97fof/c3Z//3d5f/91d33/eHl9/3d5f/95e4H/e32D/3l7gf9+gYr/
    +eXyG/3l8hv+Agob/cHJ5/25wd/9wc33/bG95/2xvef92eHz/dXd9/2xudf9tb3P/bG95/25xe/9ucHf/
    +amxz/3V3ff9wcnn/bnB3/3Byef9vcXX/d3l//25xe/9zdn//eXuB/3l8hv9zdn//dXiB/3Bzff9wc33/
    +dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/
    +bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/
    +b3F1/3Byef9sbnX/bG51/25xe/9sbnX/cHJ5/25wd/9zdXz/bW9z/2psc/9wc33/dXd9/3N1fP9nanT/
    +bnF7/3Z4fP9vcXX/b3F1/3N1fP91d33/cHN9/25xe/9wc33/bG95/3Bzff93eoP/bG51/3Byef9ucXv/
    +bnF7/3Byef91d33/bG51/21vd/9tcHr/c3V9/2xvdv92eH3/b3F4/3Byef9sbnX/bG51/2xudf9qbXf/
    +bW9z/3N1fP91d33/dXiB/3V3ff9ucHf/bXB6/3J1fv9vcXj/a212/25xe/9ucXv/bnB4/29yd/9ucXr/
    +cnR7/3F0ff92eH7/b3F4/3N1fv9xdH3/bnB2/3BzfP9vcXj/cnV8/3x+hP9tb3b/a210/3p8gv9vcXb/
    +aGp0/2xveP9vcXf/bnF5/25xef9tb3b/bXB6/25weP9tb3f/bnB4/3Bzev9ucHj/bW91/2dqc/9ydXr/
    +eHl//3N1fP9tb3b/bnB3/2xudf9vcXX/b3F1/2xudf9wcnn/bG51/2xudf9xc3r/d3mA/29xd/9ucXv/
    +c3V+/3BzfP9sb3n/amxz/2psc/9ucHf/YmVu/2Zpc/9nanT/Z2p0/2dqdP9maXP/Zmlz/25wd/9maXP/
    +Z2p0/2Zobv9kZ3H/YmVu/2Rncf9kZ3H/Zmhu/2ptd/9sbnX/ZGdx/2xudf9wc33/am13/2ptd/9iZW7/
    +bG51/2Zpc/9ucXv/dXd9/3N1fP9ucHf/bnB3/3N2f/9sb3n/bnB3/25wd/95e4H/bnB3/2xvef9qbXf/
    +bnB3/2xudf99foH/cHJ5/25wd/9zdXz/bnB3/3Byef9ucHf/cHN9/3Byef97fof/eXuB/25xe/9wcnn/
    +eHl9/3Z4fP94eX3/bW9z/2xudf9sbnX/b3F1/25wd/9vcXX/cHJ5/3Byef9sbnX/cHJ5/25wd/9tb3P/
    +d3l//2dqcf9ucHf/c3V8/2ptd/9sbnX/dXd9/2ptd/9sb3n/bG51/2dqdP9qbXf/am13/2ptd/9maXP/
    +bnF7/2xudf9sbnX/cHJ5/25xe/9sb3n/c3V8/25wd/9ucXv/eXuB/3V4gf9ucXv/c3V8/3V4gf91eIH/
    +bnF7/2ptd/9wc33/cHN9/3Byef9wc33/bnB3/3d5f/9wcnn/cHN9/3d6g/95e4H/c3Z//3V4gf9ucXv/
    +cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/
    +c3V8/2xudf95e4H/bnB3/3N1fP93eX//dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/
    +am13/2Zpc/9nanT/bG51/2psc/9sb3n/bG51/2xvef9qbXf/bG95/2dqcf9maXP/bnF7/3Byef9sb3n/
    +Zmlz/2ptd/9ucXv/am13/2xudf9wcnn/dXd9/3N1fP9zdXz/dXd9/25xe/9zdn//e36H/2xvef9zdXz/
    +cHJ5/3V3ff91d33/dXd9/25wd/9sbnf/b3J6/3N2f/9sb3f/dniA/3F0ff90dnz/bnB3/21vc/9sbnX/
    +am13/2psc/9ucXv/bnF7/3V3ff9wc33/Z2p0/3Byef9ucXv/a252/2lsdv9sb3n/a254/2tueP9tcHj/
    +bG95/2hrdf9maXP/bnF5/2lrcf9tcHj/am13/2dqcv9pbHb/aWt0/2psdP9wcnv/ZWhy/2Zpc/9vcnr/
    +a252/2dqc/9nanT/cXR8/25wef9ucHj/ZWhx/2Vocv9kZ3H/Zmlx/2dpcP9nanT/aWx0/2Vocf9gY2z/
    +Z2p0/3N1ff9qbXf/Zmly/2Zocf9jZm7/ZWhy/2dqcf9kZ3H/Z2p0/2Rncf9nanP/b3J7/3R3f/9rbnb/
    +a211/3R2fP9ydHv/bnF7/21vc/9ucHf/d3l//2psc/9ucHf/cHN9/3N1fP9zdXz/c3Z//2xvef91eIH/
    +c3V8/3Z4fP9zdXz/cHJ5/25wd/9ucXv/b3F1/25wd/9ucHf/bnB3/2xudf9sbnX/c3V8/2xudf9sbnX/
    +Zmlz/2psc/9qbXf/bnF7/3N1fP9wc33/am13/2ptd/9ucXv/bG51/25wd/9ucHf/foCG/25xe/9wcnn/
    +b3F1/2xudf9zdXz/e32D/3N1fP9ucHf/c3V8/25wd/9zdXz/bnF7/3N2f/9wcnn/eXyG/3d6g/9zdn//
    +c3Z//3d5f/93eX//eXuB/25xe/9ucXv/bnB3/2xvef9sb3n/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/
    +cHJ5/3d5f/9kZ3H/bnF7/3Bzff9sb3n/bnF7/3V4gf9ucHf/bG95/25xe/9ucHf/cHN9/25wd/9ucXv/
    +bG95/3N1fP9ucHf/bnB3/25xe/91eIH/dXiB/3N2f/9sb3n/bnB3/3h5ff9ucHf/bG51/21vc/9wcnn/
    +c3V8/3Byef9nanT/bnF7/3N2f/9sb3n/cHJ5/2xvef95e4H/cHN9/3Bzff91eIH/dXiB/3Z4fP9zdn//
    +bG95/25xe/91eIH/cHN9/25wd/95fIb/d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/
    +bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/
    +dnh8/2xvef9qbXf/am13/2xudf9qbXf/c3V8/2xudf9wcnn/bnB3/3N1fP9vcXX/bG51/3V3ff91d33/
    +dXd9/2ptd/9sb3n/am13/2ptd/9maXP/bnF7/3V3ff9sb3n/cHN9/25xe/9qbXf/cHN9/3V4gf9sbnX/
    +cHJ5/2xudf92eHz/cHN9/3d5f/9wc33/bnB4/29xef95e4L/bnB2/3N2fv9ucXr/c3V+/2xvef9ucHf/
    +cHJ5/25xe/9ucHf/dXd9/3Byef91d33/c3V8/21vc/9ydHz/b3F6/2ttdv9rbXX/am13/2Zpc/9rbnf/
    +bG94/2tueP9naXD/Zmlz/2xveP9oa3X/cnR7/2ptd/9oa3T/cnR7/2xudf9sb3b/dHZ+/3Bydv9sb3n/
    +cHN8/3J1ff9tcHn/b3F1/3l7gf92eH7/dXd9/25wd/9tb3f/aGt1/25wd/9ucHf/bG95/3R2f/9ucHf/
    +bW92/25wd/97fIH/cHJ5/21wef9ucHf/am13/21wev9ucXv/bnB3/3N2f/9ucHf/b3F4/3F0fv90d4H/
    +a254/2lsdv9xdH7/c3V8/3N2f/9wc33/d3qD/3t+h/9ucXv/cHN9/3d6g/91eIH/dXiB/25xe/9ucHf/
    +e36H/3Bzff95fIb/d3qD/3Bzff9nanT/bnB3/2xvef9sb3n/c3V8/2ptd/9nanH/cHJ5/3Byef9vcXX/
    +bG95/2xudf9ucHf/bG95/3Bzff94eX3/dXd9/3Byef9wcnn/eXuB/3N2f/9zdXz/c3Z//3l8hv9ucXv/
    +bnF7/25wd/9ucXv/cHN9/3l8hv9wc33/bG95/3V3ff9wcnn/cHJ5/3Byef9wcnn/bG51/3N1fP9sb3n/
    +bG51/2xudf9wc33/bG95/25wd/9qbHP/Z2px/2dqcf9kZ3H/Z2p0/2xudf9sb3n/bnB3/2xudf9vcXX/
    +bnB3/25xe/93eX//ZGdx/25xe/9wc33/c3Z//3N2f/95fIb/cHJ5/3V4gf93eoP/c3Z//3t9g/91d33/
    +dXiB/3Bzff93eoP/c3Z//3N2f/93eoP/eXuB/3l7gf93eoP/dXiB/3d5f/9/gYf/foCG/3d5f/92eHz/
    +e32D/36Ahv99foH/d3l//3t9g/9+f4P/eXuB/3d6g/9wc33/foGK/3N2f/9zdn//eXyG/3l8hv97fYP/
    +d3qD/3V4gf9wc33/e32D/3V4gf9ucXv/e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/
    +am13/25wd/9wcnn/bG51/3l7gf9ucHf/c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/
    +bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/bG95/3Bzff9sbnX/cHJ5/3Byef9ucHf/am13/2psc/91d33/
    +dXd9/3Byef9maXP/am13/2dqdP9nanH/YmVu/2Zpc/9ucHf/am13/25xe/9ucXv/am13/25xe/91d33/
    +amxz/25xe/9qbXf/bnF7/25wd/9zdXz/am13/25xe/9zdn//fH+I/3Byev90d4D/b3J6/3Bzff9nanT/
    +bG51/2ptd/9qbXf/bnB3/3N1fP9wcnn/dXd9/3N1fP9sbnb/dXd+/3R3f/9vcnr/bnF6/3Bzff9vcXv/
    +dnmC/3p8gv94eoD/cnV//3Byef9zdn//cHJ5/3h6gP9wc33/bnB3/3Z5gv9zdXz/c3V8/3l8hv91d33/
    +dHZ8/3R2ff92eYL/dHeA/3N1fP95fIX/d3qD/3Z4f/9wc33/bG95/2dpc/9ucHf/bG51/29xdf9wcnn/
    +bnB3/25wd/9sb3n/e32D/29ye/9ucXr/bnB3/21vdv9tcHr/bnB3/29xdf9ucXv/cHJ5/25wd/9tcHr/
    +dnmC/2tueP9sb3n/d3qD/3N2f/9ucXv/bnB3/25xe/93eX//bG95/25wd/9wc33/cHN9/3N2f/9wc33/
    +bnB3/3t+h/9ucHf/dXiB/3N1fP9wcnn/Z2px/3Byef9sbnX/bnB3/25xe/9ucXv/bnF7/3N2f/9wc33/
    +c3V8/2ptd/9sb3n/cHJ5/3N1fP93eoP/eXyG/36Ahv91d33/dnh8/36Ahv95fIb/cHN9/3N1fP9/gYf/
    +c3Z//3V4gf93eoP/d3l//3d5f/+Cg4f/e32D/3Z4fP95fIb/c3Z//3V4gf9zdn//c3Z//25wd/95e4H/
    +d3qD/3N2f/9zdn//d3qD/3N2f/93eX//bnB3/2xvef9sb3n/bG95/25wd/9ucHf/dnh8/3Byef9vcXX/
    +bG51/25wd/9wcnn/dXd9/2Zobv9sb3n/bnF7/3Bzff91eIH/e32D/25wd/9ucXv/bG95/3Byef9zdn//
    +bnB3/3V4gf9wc33/eXyG/3V3ff93eX//e32D/2Zpc/9nanT/Z2p0/2xudf9sbnX/c3V8/2ptd/9sbnX/
    +am13/3N1fP9sb3n/cHN9/2xudf9zdXz/dXd9/25wd/9wcnn/bnF7/36Biv9zdXz/c3V8/3t9g/95fIb/
    +d3l//3Bzff9ucXv/bnF7/3N2f/9sb3n/bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX//
    +amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/
    +bG95/2xudf9wc33/am13/2Zpc/9sb3n/am13/25wd/9zdn//bnB3/25xe/9wcnn/c3V8/25wd/9ucHf/
    +d3l//3Z4fP92eHz/am13/25xe/9wcnn/bW9z/2dqdP9sb3n/cHN9/2xvef9zdXz/c3V8/2xvef9wc33/
    +dXd9/2xudf9sb3n/bG51/2xvef9qbXf/bnF7/2ptd/9wc33/bnF7/3h7hf9sb3b/cHJ7/25wdv9ucXv/
    +am13/2xudf9sbnX/bG95/2xudf9ucXv/dXiB/3V4gf9zdXz/b3F1/3R2fP9xc3v/bnB1/25wd/9ucHf/
    +am13/3Bzff91d33/dnh8/3Byef9sbnX/cHN9/3Byef95e4H/cHN9/25xe/91d33/bW9z/25wd/9wcnn/
    +bnB3/29xdf9ucHf/c3V8/3Byef9vcXX/eXuB/3V4gf95e4H/bnB3/25wd/9kZmz/bG51/2dqdP9qbHP/
    +bG51/2ptd/9maXP/amxz/3N2f/9qbXf/am13/2ttdv9rbnX/cHJ6/2xvef9wcnn/cHN9/3Byef9vcnn/
    +bXB6/3N2gP9oa3X/Z2p0/2xvef9qbXf/dXiB/3N1fP93eoP/eXyG/3N2f/93eX//fn+D/3l8hv95fIb/
    +dXiB/3d6g/9+gYr/cHN9/3d6g/91eIH/bnF7/2dqdP9sb3n/bnF7/25wd/9wc33/bG95/2ptd/9wc33/
    +bnF7/3Byef9sb3n/bnF7/2xvef9sb3n/c3V8/3V3ff9zdXz/bnB3/25wd/93eX//bnF7/3Byef9ucHf/
    +e32D/25wd/9wc33/c3V8/25xe/9ucHf/eXyG/3N1fP9ucHf/dnh8/21vc/9sb3n/cHJ5/25xe/9sbnX/
    +dXd9/3V3ff9ucXv/bG51/3N1fP9ucXv/dnh8/2xudf9qbXf/bG51/21vc/9tb3P/bW9z/3N1fP9sbnX/
    +amxz/2dqdP9sbnX/bnF7/3N1fP9kZ3H/bG51/2xvef9nanT/am13/2xvef9maG7/bG51/2xudf9qbHP/
    +Z2p0/2Rncf9maXP/Zmhu/2Zpc/9iZW7/ZGdx/2dqdP9qbXf/am13/2xvef9qbXf/amxz/3N1fP9maXP/
    +Z2px/2Zpc/9sb3n/am13/25xe/9kZ3H/cHN9/25xe/9sbnX/bG95/2xvef91eIH/bnB3/29xdf93eX//
    +eXyG/3d6g/9wc33/cHN9/3N2f/95e4H/c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/
    +f4GH/3d5f/93eoP/c3Z//3d6g/91d33/foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn//
    +am13/25xe/9ucXv/c3Z//3Bzff9qbXf/c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bnB3/3V3ff9ucHf/
    +am13/3V4gf95e4H/eXuB/2xvef9wc33/cHN9/3N1fP9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9sbnX/
    +cHN9/3d5f/9qbXf/bnB3/21vc/9wcnn/bnF7/3V3ff9ucXv/bG51/25wd/94eoH/bnB4/3J0fP9vcXn/
    +dHZ9/2xudf9qbXf/Z2p0/2ptd/9nanP/bG95/2xvef93eX//bnF7/2psc/9tcHn/bnB5/21vdP9rbXT/
    +bnB3/2dqcf9sb3n/cHN9/25xe/9sb3n/amxz/2xvef9maG7/bG95/2dqcf9nanH/am13/2dqdP9maXP/
    +bG95/2ptd/9qbXf/am13/2xudf91d33/bG95/3l8hv95e4H/eXuB/3Bzff9ucHf/am13/3N2f/9zdXz/
    +c3V8/3V4gf91d33/dXiB/3d5f/+DhYz/e32D/3h6gP9zdn7/b3F5/2xvef9rbnj/Z2px/2dqdP9qbHP/
    +a210/2xvef93eX//c3V8/25xev91eIH/cHN9/2xudf9sbnX/cHJ5/3Bzff9kZ3H/bnF7/3N1fP9sb3n/
    +bG95/2xvef9ucXv/dXiB/2xvef91d33/bnF7/3N1fP9sbnX/bnB3/2xudf9ucHf/bG51/25wd/9qbXf/
    +c3Z//25wd/9sb3n/bnF7/2ptd/9sb3n/bnB3/3Bzff93eoP/c3Z//25xe/9sb3n/dXiB/25xe/9wc33/
    +cHJ5/3t+h/9ucXv/bG95/29xdf9sbnX/cHJ5/3t9g/9ucXv/amxz/3V3ff9qbHP/am13/2ptd/9sb3n/
    +Z2p0/3V3ff9sb3n/am13/2psc/9zdXz/cHJ5/3d5f/9tb3P/bW9z/2xudf9nanH/bG51/2xudf91d33/
    +bG51/21vc/9sbnX/bG51/3Z4fP92eHz/Z2p0/2xvef91d33/c3V8/25xe/9zdXz/b3F1/25wd/9ucHf/
    +bnB3/25wd/9nanT/bG95/2ptd/9ucXv/am13/2xudf9sbnX/bG95/25wd/9wcnn/bG95/2xudf9zdXz/
    +Z2p0/2dqcf9nanT/bG95/2ptd/9ucXv/ZGdx/25xe/9zdXz/bG51/2xvef9qbXf/cHJ5/2dqcf9nanH/
    +bG95/3Bzff9ucXv/Z2p0/2dqdP9nanT/bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/
    +cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/
    +c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/
    +bnB3/2xvef91eIH/dnh8/3V3ff9ucHf/cHN9/3N1fP9vcXX/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/
    +bnB3/3Z4fP93eX//bG51/3N1fP9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9ucXv/d3qD/29yfP9zdn//
    +c3V9/3l7gf9qbXf/bnF7/3Byef9zdn//a254/3N2f/91eIH/e32D/3d6g/9wcnn/cXR+/3J1fv9ucXn/
    +bnB3/3Byef9qbHT/c3Z//3h6gP9zdn//bnF7/2xvef9zdXz/b3F1/3N1e/9sbnX/bG51/3R2fP9ucXv/
    +bnB3/3F0ff9vcXj/b3F4/25xe/9zdXz/dXiB/25xe/95fIb/eXuB/3l7gf9ucXv/am13/2Zpc/9wcnn/
    +bnB3/2ptd/9wc33/bG95/3Bzff9ucHf/d3qD/3N2f/9wcnn/bnB3/29xdv9ucHf/cHJ5/25wd/9ucXv/
    +bG95/25wd/9sb3j/dXd8/29xd/9sbnX/cHN9/2xvef9ucHf/bG95/3d5f/91eIH/Zmlz/3V4gf95e4H/
    +cHN9/3N1fP91eIH/d3qD/4GDiv95e4H/eXyG/3V4gf93eoP/bnF7/3N1fP9ucXv/bG95/2xvef9ucHf/
    +bnB3/3N2f/9wcnn/bnB3/2ptd/9ucHf/bG51/25wd/9ucXv/d3l//25xe/9ucHf/amxz/3d5f/9ucXv/
    +am13/2ptd/91d33/bG51/3Byef9ucHf/cHN9/3V4gf9+gYr/d3qD/3Bzff97fof/cHN9/3N2f/93eoP/
    +dXiB/3N2f/97fof/e32D/3d6g/91d33/e32D/3d6g/9+gYr/cHN9/3N1fP9zdXz/cHJ5/2xvef9ucHf/
    +dXd9/25wd/9tb3P/bnB3/25wd/9zdn//dXd9/25wd/9tb3P/c3V8/2xvef9sb3n/cHN9/2dqcf9qbHP/
    +amxz/2ptd/9qbXf/Z2p0/2ptd/9sb3n/cHN9/2xudf9nanT/am13/2dqdP9maXP/Z2p0/2dqdP9kZ3H/
    +am13/2Rncf9maG7/YmVu/2Zpc/9kZ3H/am13/1xfaP9qbXf/bG95/2BjbP9kZ3H/Z2px/2xvef9maG7/
    +Zmhu/25wd/9zdXz/bnF7/2dqdP9maXP/Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/
    +bG51/2xvef9zdn//amxz/2xudf9qbHP/bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/
    +bG95/25xe/9maXP/bG51/2xudf9ucXv/bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/25wd/9zdXz/
    +cHJ5/29xdf9sbnX/dXd9/3V4gf95e4H/cHN9/3V4gf9zdn//cHJ5/3N1fP9wc33/e32D/3t9g/9+gYr/
    +eXuB/3Bzff95e4H/eXuB/25wd/9zdn//bG95/3N2f/91eIH/eXyG/3d5f/9wcnb/b3F2/3Z4ff9vcXj/
    +cHN7/21veP90dn3/am13/3Byef9wcnn/cHN8/2psc/9ucHf/bnB3/3V3ff9wcnn/bW9z/29xeP9sb3n/
    +amxy/2Zpcv9oa3T/X2Js/2hrdf9xc3v/bG95/2xudf9pbHb/bXB6/2ttdf9rbnf/a252/2lsdv9tb3j/
    +bW93/2psdP9vcnz/amx0/2dqdP9tb3b/bG51/3N1fP9qbXf/d3qD/3Bzff9wc33/bG95/2ptd/9qbHP/
    +bnB3/21vc/9sbnX/bnB3/2xudf9wcnn/bW9z/3d5f/9wc33/bG95/29xef9sbnX/aWx2/2ptd/9nanT/
    +am13/2xudf9nanT/a210/3N1ff9vcXn/bW93/3V4gf91eIH/am13/2ptd/9wc33/cHN9/2Jlbv9ucXv/
    +dXd9/25wd/9sbnX/bG51/25wd/91d33/cHJ5/3V3ff9sbnX/cHN9/2dqdP9vcXX/bG51/2xudf9qbXf/
    +am13/2xudf9zdXz/bnB3/29xdf9maXP/bG95/2xvef9sb3n/c3Z//3V4gf9wcnn/c3V8/2psc/91d33/
    +cHN9/25xe/9sb3n/d3l//2xvef9ucXv/bnB3/2xudf9zdXz/foCG/3N2f/9sb3n/d3qD/2xvef9sb3n/
    +c3Z//3N1fP9ucHf/dnh8/3Byef9ucHf/bG95/3V3ff9wcnn/e32D/29xdf9tb3P/bG51/29xdf9ucHf/
    +b3F1/3Z4fP9ucHf/bnB3/3Byef9zdXz/dXd9/3V3ff9nanH/bG51/3d5f/9sb3n/am13/2xvef9sbnX/
    +bnF7/2xvef9nanT/am13/2Rncf9maXP/Zmlz/2dqdP9iZW7/XF9o/2Rncf9ucXv/am13/3Byef9zdXz/
    +bG51/3V3ff9ucHf/bG51/2psc/9zdXz/cHJ5/3N1fP9maG7/cHJ5/3N1fP9nanT/dXd9/2xudf92eHz/
    +b3F1/2xvef91eIH/d3qD/3V4gf9sb3n/bnF7/3N2f/91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/
    +bG51/25wd/9zdXz/d3l//2ptd/9qbXf/bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/
    +bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9sbnX/
    +bnF7/2ptd/9sbnX/am13/3d5f/93eX//eHl9/25wd/91d33/cHN9/25wd/9ucXv/cHJ5/3l7gf93eX//
    +e36H/3d5f/9ucHf/dXiB/3d5f/9wcnn/c3Z//2xvef9ucXv/c3Z//3l7gf92eHz/Z2pz/2Zpcv9ucHj/
    +Zmlz/2hrc/9pbHb/bXB6/2dqdP9maXP/Zmlz/2dqdP9hZGz/Z2px/2dqcf9zdXz/am13/2dqdP9oa3X/
    +a254/2hrdP9oa3P/am13/2hqcf9tcHj/cHJ5/3Byef90dnz/bnB5/3V4gf9ydHz/cXR+/29ye/9vcnv/
    +b3J8/3N2f/9xc3r/eXyF/29ye/9tb3f/cnR+/3N1fP93eX//bnF7/3l8hv95e4H/dXiB/3N2f/9ucHf/
    +am13/3N1fP9wc33/cHN9/3N2f/9ucHf/bnF7/2xvef95e4H/dXd9/25wd/9wc3r/cHN6/29ye/9ydX7/
    +c3Z//3V4gf9zdXz/c3Z//3J1fv94eoL/cXN6/25weP9zdXz/c3V8/3V4gf91d33/foCG/3t9g/9wc33/
    +d3qD/3l7gf93eoP/c3Z//3N2f/9zdn//d3qD/3N2f/93eX//bnB3/3V4gf9nanT/cHJ5/3Byef9wcnn/
    +cHJ5/2xvef9wcnn/d3qD/3N2f/91d33/am13/3N1fP9wc33/cHN9/3l8hv97fYP/d3qD/3N2f/9ucHf/
    +eXuB/3N2f/9ucXv/cHN9/3l7gf9wc33/c3Z//25wd/9wcnn/dXiB/36Ahv9zdn//bnB3/3d6g/9vcXX/
    +bnB3/3N1fP9wcnn/bG51/3h5ff9wcnn/cHJ5/2xudf9zdXz/cHJ5/3d5f/9tb3P/bG51/2dqdP9ucHf/
    +bnB3/3Byef93eX//bnF7/25wd/9ucXv/c3Z//3V3ff91d33/Z2p0/25xe/95e4H/c3Z//3N2f/9wc33/
    +bnB3/3N2f/9ucHf/bnB3/3V3ff9sbnX/cHJ5/3V3ff91d33/b3F1/2dqcf9wcnn/c3Z//3Byef9zdn//
    +dXiB/3Bzff95e4H/c3Z//25xe/9qbXf/c3Z//3V3ff91d33/amxz/3Byef94eX3/bG95/3N2f/9ucXv/
    +dXd9/25wd/9ucXv/d3qD/3V4gf93eoP/b3F1/3Byef91d33/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/
    +am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/
    +bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/
    +Z2px/2dqdP9qbHP/Zmlz/2Jlbv9qbXf/am13/2xvef9maG7/Z2p0/2Rncf9gY2z/ZGdx/2Rncf9sb3n/
    +Zmlz/3Bzff9zdXz/amxz/2ptd/9zdXz/bG51/25xe/9qbXf/am13/2xvef91d33/c3V8/21wev9vcXb/
    +dHZ8/25wd/9vcnz/bXB5/3N2f/9sbnX/bG51/25wd/9ucXv/Zmlz/21vc/9sbnX/dXd9/25wd/9ucHf/
    +cXN6/29xeP9ucHj/bnF6/3Bzff9vcnz/dHeA/3J1f/9wc33/dnmC/3J0fP93eYD/dHZ9/29xeP9wcnr/
    +bnB4/3Byef9ydHv/b3F5/3h7gv9vcnz/bG93/3Fzev9sb3n/dnh8/29xdf95e4H/d3l//3N1fP9zdn//
    +bnB3/2dqcf9tb3P/bG51/2xudf9sb3n/amxz/2ptd/9nanH/c3Z//2xvef9qbHP/bG94/21vdv9rbnb/
    +bG95/2ptd/9qbXf/Z2p0/2xudf9sbnX/cnR7/29xeP9oa3T/bG95/2xvef9ucXv/bG95/3V4gf9zdn//
    +amxz/25xe/91d33/bnB3/21vc/9qbXf/cHJ5/3d5f/9wcnn/d3l//2xvef91d33/Z2p0/25xe/9sb3n/
    +bG95/3Byef9tb3P/bW9z/3Bzff9sbnX/Z2p0/2BjbP9nanT/Z2p0/2Zpc/9sb3n/bnF7/2dqdP9nanT/
    +YmVu/25wd/9maXP/ZGZs/2Rncf9sb3n/Zmhu/2ptd/9kZ3H/YmVu/2Zpc/9ucHf/Z2p0/2BjbP9sb3n/
    +YmVu/2Rncf9qbXf/Zmlz/2psc/9qbXf/Zmlz/2Rncf9iZW7/am13/2dqdP9zdn//amxz/2psc/9nanT/
    +am13/2xudf9nanH/dXd9/2xudf9tb3P/bnB3/3Byef94eX3/d3l//2ptd/9ucXv/eXuB/3V4gf93eoP/
    +dXiB/3N1fP95e4H/cHN9/3Bzff93eoP/cHJ5/3V4gf91eIH/c3Z//25wd/9qbXf/cHN9/3V3ff9vcXX/
    +c3Z//3V4gf9ucHf/c3Z//25wd/9wc33/Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dXiB/2ptd/9wc33/
    +bnF7/3Z4fP9wcnn/cHJ5/3l7gf93eX//e32D/29xdf91d33/dXd9/3N1fP9sb3n/Z2p0/3V3ff91d33/
    +bnB3/2xvef9sbnX/bnB3/25wd/91d33/bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/
    +bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/
    +bnB3/21vc/9wcnn/bG51/2xvef9qbXf/dnh8/3h5ff91d33/bG51/25wd/9ucHf/am13/2xudf9nanT/
    +c3V8/2xvef91d33/dXd9/2xudf9sb3n/c3V8/2dqdP9ucXv/Zmlz/2xvef9wcnn/d3l//3Bzff9wc3v/
    +bXB5/3J1fv9qbXf/bnF7/2ptd/9zdXz/bG51/25wd/9zdXz/bnF7/2ptd/9ucXv/cHJ5/3d5f/9ucXv/
    +cHN9/3V4gf9ucXv/bnF7/25wd/9vcnz/bXB6/21wev9oa3X/bXB6/3R2fP9ucHX/eHqA/29xef9sb3n/
    +bG95/2dqdP9qbXf/Z2p0/2Zpc/9ydHz/bXB4/2lsc/9tb3j/a253/3V3ff9ucHf/d3qD/3V4gf91d33/
    +dXd9/29xdf9maG7/bnB3/21vc/9sbnX/bnF7/2xudf9wcnn/bW9z/3V4gf9wc33/amxz/2ptd/9qbXb/
    +bnB3/29xeP9qbXf/bnB3/2dqcf9sbnX/bG51/21wev9rbnf/Z2p0/2psc/9sb3n/cHJ5/2psc/91d33/
    +dXd9/2psc/9sb3n/c3V8/3Byef9sb3n/bnB3/3V3ff94eX3/bnF7/3l8hv9zdXz/e32D/2xvef9zdn//
    +d3qD/3N2f/93eoP/dXd9/3N2f/9+gIb/cHN9/3N1fP9sb3n/cHN9/3N2f/9zdn//d3qD/3t9g/95fIb/
    +d3qD/3Bzff97fof/eXyG/3V4gf9zdXz/dXiB/25wd/9wcnn/bnB3/3Byef91d33/d3qD/3d5f/9sb3n/
    +d3l//25wd/9ucXv/d3qD/3V4gf91eIH/d3qD/3V4gf91eIH/dXd9/3t9g/93eoP/foGK/3Byef9ucXv/
    +bnB3/25xe/9wcnn/c3V8/3t+h/9wc33/cHJ5/25xe/9wc33/d3l//3h5ff9qbXf/cHJ5/3d6g/9wcnn/
    +dnh8/3N1fP9sbnX/dnh8/29xdf9ucHf/cHJ5/21vc/9zdXz/c3V8/3N1fP9tb3P/bG51/3N2f/9ucXv/
    +bG51/2xvef9wc33/Zmlz/2xvef9nanH/Zmlz/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/25xe/9qbXf/
    +bnF7/25wd/91d33/bnF7/2xvef93eoP/eXuB/36Ahv9wcnn/c3Z//3l7gf93eoP/c3Z//25xe/9+gIb/
    +foGK/3l7gf97fYP/d3l//3t9g/93eoP/foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/
    +e32D/3N1fP9wcnn/cHJ5/25xe/9zdn//c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/
    +dXiB/3Bzff9wcnn/bG95/25wd/9zdXz/bG51/3V3ff92eHz/dXd9/25wd/9sb3n/bnF7/2xvef9ucHf/
    +cHJ5/3h5ff9wcnn/foCG/3t9g/9tb3P/cHJ5/3Z4fP9ucHf/dXd9/2ptd/9ucHf/c3Z//3V4gf92eHz/
    +c3V7/21wd/9wcnr/am13/3N1fP9sbnX/bnF7/2ptd/9sbnX/cHN9/25xe/9qbHP/bnB3/29xdf91d33/
    +bG95/25xe/9wcnn/bG95/21vc/9ucHf/bG95/25wd/91d33/amxz/25xe/9zdn//c3V8/36Biv93eoP/
    +c3Z//3d6g/91d33/cHN9/3d6g/91d33/foCJ/2Zpcv9jZnD/bnB3/2ptdv9vcnz/amxz/3d5f/93eX//
    +c3V8/3V3ff9ucHf/ZGZs/2xvef9sb3n/cHN9/3N2f/9vcXX/cHN9/25wd/93eoP/dXiB/25xe/9ucXv/
    +bXB6/3Byef9vcXr/bnB3/2xvef9nanT/cHJ5/25weP90d37/c3V6/25weP9ucXr/c3Z//25xe/9maXP/
    +c3V8/3V3ff9nanH/bnB3/3N1fP9zdXz/bnB3/21vc/9zdXz/d3l//25xe/9zdn//bG51/3Bzff9kZmz/
    +bG51/2xvef9sbnX/c3V8/29xdf9sb3n/c3Z//25wd/9qbXf/Z2p0/3Byef9ucHf/bG51/3Bzff9zdn//
    +cHN9/2xvef9sb3n/dXd9/3V4gf9zdn//cHJ5/3V4gf9ucXv/cHN9/3Bzff9ucHf/c3Z//3d5f/91d33/
    +Z2px/3Z4fP9sbnX/bG51/3Bzff9ucHf/bW9z/25wd/9sbnX/bnF7/2xudf9wc33/cHJ5/3V3ff9nanT/
    +bG51/2dqdP9nanT/am13/2xudf93eoP/bG51/2xudf9wcnn/cHJ5/3d6g/93eX//bnB3/25wd/93eoP/
    +cHN9/3d5f/9zdn//am13/3V3ff9ucHf/c3V8/3V3ff9tb3P/cHJ5/3N1fP91d33/bG51/2xudf9ucHf/
    +dnh8/2xvef91eIH/cHN9/25wd/9zdXz/bnB3/2xvef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9zdn//
    +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//e36H/3l7gf9/gYf/bnB3/25xe/91d33/c3V8/21vc/9ucHf/
    +dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/
    +dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/
    +eXyG/36Biv91eIH/dXiB/3N1fP9wc33/dXiB/25xe/9zdn//dXd9/3Bzff9ucHf/cHJ5/3Byef9qbXf/
    +cHJ5/2ptd/91d33/bG95/36Ahv97fYP/bW9z/3Byef91d33/b3F1/3Bzff9sb3n/bG95/3V4gf95e4H/
    +d3l//3d5gv9ucXv/cHN9/25wd/9zdn//c3V8/3Bzff9sb3n/bnB3/3Z4fP9zdn//am13/25xe/9ucHf/
    +dXiB/25wd/9wc33/cHN9/3Byef9vcXX/bG51/25wd/9zdXz/dXd9/2psc/9wcnn/bnF7/2xudf91d33/
    +c3V8/25wd/9ucXv/am13/2psc/9sbnX/bW9z/3V3ff9ucHf/aWxz/3Fzef9sbnX/c3V+/25wd/93eX//
    +d3l//3Bzff93eoP/bnF7/2Zpc/9wcnn/bnB3/3Bzff9zdn//bG95/3N2f/9ucXv/dXiB/3V4gf9wc33/
    +cnV+/25weP9rbXX/bXB4/2hqcf9maXP/YGNs/2ptd/9qbXf/b3J7/25wd/9pa3P/amxz/2ptd/9wc33/
    +Zmlz/3V3ff91d33/amxz/3Byef9zdXz/cHN9/3N2f/9wc33/eXyG/3l8hv91eIH/d3qD/25xe/9zdn//
    +ZGdx/25wd/9ucXv/bW9z/3Byef9sbnX/bG51/3N1fP9qbHP/Zmlz/2dqdP9sbnX/amxz/2Rncf9ucXv/
    +am13/2xvef9nanH/YmVu/2ptd/9qbXf/Z2px/2Zpc/9nanT/amxz/2psc/9sb3n/Z2p0/25xe/9wc33/
    +cHN9/2Zpc/93eX//Z2p0/2xudf9zdn//c3Z//2ptd/9wcnn/b3F1/3Byef9vcXX/cHJ5/25wd/91d33/
    +Z2p0/2ptd/9qbHP/bG51/2xvef9sbnX/d3qD/2dqdP9sbnX/bnF7/2xvef93eX//bnF7/2xudf9nanT/
    +c3V8/2ptd/9qbXf/bG95/2Zpc/9wcnn/am13/2xvef9wc33/amxz/2ptd/9sb3n/cHN9/2ptd/9tb3P/
    +bG95/3Z4fP9ucHf/c3V8/25xe/9qbHP/bnF7/2xudf9sbnX/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/
    +am13/2xudf9zdXz/cHJ5/3Byef9wcnn/am13/3N1fP9wc33/eXyG/21vc/9ucHf/dXd9/2xvef9qbXf/
    +bG51/3V3ff93eX//bG95/3Byef9ucHf/bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX//
    +am13/3Bzff9wc33/bW9z/2ptd/9nanT/am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/
    +Z2px/2ptd/9zdXz/bG95/2xvef9qbHP/bG51/25xe/9nanT/dnh8/3N1fP9wc33/bnF7/3N2f/9zdn//
    +am13/3Bzff9zdXz/e32D/3V4gf+Fh43/f4KM/3N2f/93eoP/foCG/3N1fP95fIb/dnh8/3l7gf9+gIb/
    +e36H/36Ahv95fIb/c3Z//3N2f/9sb3n/dXiB/2xvef9ucXv/bG95/3Byef91eIH/eXuB/2ptd/9ucXv/
    +bnB3/3Bzff9wcnn/c3Z//3V4gf9sb3n/bG95/2xudf9sbnX/cHJ5/3V3ff9nanH/bnF7/3Bzff9ucXv/
    +d3qD/3N2f/9ucXv/dXiB/3Byef9qbXf/b3F4/25wd/92eHz/cXR9/25wd/9vcnv/bG95/3N2f/9wcnn/
    +d3qD/3d6g/9zdn//dXiB/3Bzff9nanT/bnB3/25xe/9zdn//cHN9/25wd/9zdn//cHJ5/3h5ff91d33/
    +bG51/2xvef9tb3f/bnB4/29xev9rbnj/bnB3/2psc/9ucHf/b3F5/3J0ev9ucHb/Zmhv/2ptdP9sb3n/
    +cHJ5/2dqcf93eX//c3V8/2dqcf9qbXf/cHJ5/25xe/9ucXv/cHN9/3t9g/95fIb/c3Z//3d6g/9zdn//
    +d3qD/2ptd/9zdXz/dXiB/3Bzff95fIb/dXd9/3V4gf9+gIb/cHN9/25xe/9qbXf/cHJ5/25wd/9sbnX/
    +c3Z//3Bzff9wc33/bW9z/2ptd/9ucXv/bG95/2psc/9nanH/Z2px/2psc/9sbnX/bG95/2xudf9zdXz/
    +dXd9/3N1fP9qbXf/dXiB/2dqdP9wcnn/c3V8/3N1fP9sbnX/am13/2xudf9sb3n/am13/2xvef9sb3n/
    +dXd9/2ptd/9qbXf/Z2p0/2xudf9wcnn/b3F1/31+gf9vcXX/bW9z/3N2f/9wc33/dXiB/3N1fP9ucHf/
    +cHN9/3d6g/9zdn//c3Z//3N2f/9sb3n/eXuB/25wd/9zdn//dXd9/25wd/9ucXv/dXiB/3l7gf9sb3n/
    +bnB3/3N1fP9wcnn/Z2p0/2xvef9sb3n/bG51/25xe/9qbXf/bG95/2BjbP9sb3n/cHN9/2xvef9tb3P/
    +bnB3/2xvef9qbXf/cHN9/25xe/9ucXv/bG95/25xe/91d33/c3V8/3t9g/9qbXf/bG95/3Z4fP9ucHf/
    +bnB3/2psc/92eHz/dXd9/25xe/9ucXv/bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/
    +d3qD/2xvef9wc33/cHN9/25wd/9ucXv/bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/
    +amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/amxz/2ptd/9qbXf/Z2p0/3Bzff9ucHf/cHJ5/21vc/9ucHf/
    +bnB3/2Zpc/9nanT/Z2p0/3V3ff9ucHf/fX6B/3d5f/9sbnX/bG95/3h5ff9ucHf/cHN9/2xvef9ucHf/
    +dnh8/3V3ff91d33/dXd9/29xdf9ucHf/bG51/3Byef9sbnX/bG95/2ptd/9sbnX/cHN9/3V3ff9maXP/
    +bG95/2xudf9qbXf/amxz/2ptd/9sb3n/Zmhu/2psc/9maXP/amx0/2ptd/9sb3n/YmVu/2xvef9tcHn/
    +bW92/3V3ff9xdH3/bXB6/3V3ff9vcXj/bXB5/3Fzev9ydHr/dXh//3J0fP9vcXn/b3J7/29xdv9wcnn/
    +bW9z/3V3ff93eX//bnB3/3Byef9wcnn/ZGdx/2ptd/9maXP/bG95/25xe/9qbXf/c3V8/2xudf91d33/
    +c3V8/25wd/9zdXz/bXB6/21wev9ucXn/bG95/2xvef9sbnX/bnB3/25xe/92eH3/c3V8/2ptdf9vcXb/
    +c3V8/3N2f/9maXP/e36H/3N2f/9sb3n/bG95/25xe/9zdn//cHN9/3N2f/93eX//eXuB/3Bzff93eoP/
    +cHN9/3d6g/9nanT/bnB3/3N2f/9wcnn/c3Z//25wd/9ucXv/d3l//25wd/9sbnX/Z2p0/3Byef9ucHf/
    +am13/3V4gf91eIH/c3Z//25wd/9sb3n/c3V8/3N2f/9ucHf/bnB3/25xe/9ucHf/bnB3/3V4gf9wc33/
    +c3Z//3V3ff91d33/bnB3/3l7gf9nanT/bnF7/3Bzff9zdXz/bG51/2xudf9sbnX/bnB3/2xudf9sbnX/
    +bG95/3Z4fP9qbXf/bG95/2xvef9wcnn/d3qD/3N1fP9+gIb/c3V8/3N1fP93eoP/dXiB/3t+h/93eoP/
    +c3Z//3N2f/9+gYr/eXyG/3N2f/91eIH/bG95/3V4gf9ucHf/dXd9/3V3ff9wcnn/bG95/3N1fP9wc33/
    +Zmlz/2dqcf9qbXf/eHl9/2xvef9wc33/c3Z//25xe/9zdn//cHN9/3V4gf9sb3n/dXiB/3t9g/91eIH/
    +dXd9/3l7gf95e4H/d3l//35/g/95e4H/d3qD/3d6g/95e4H/eXyG/3d6g/+DhYz/dXiB/3d6g/97fYP/
    +d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/
    +bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/
    +ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/dXd9/2xudf9ucHf/bG95/2xudf9zdXz/bnF7/3Byef9sbnX/
    +bG51/21vc/9sbnX/cHJ5/2dqcf94eX3/bG95/3t9g/91d33/am13/25xe/91d33/am13/2ptd/9sbnX/
    +bW9z/3V3ff94eX3/dXd9/29yfP9ucHf/bnB3/2ptd/9ydHz/b3F1/3V3ff9ucHf/bnB3/3V3ff9zdXz/
    +Z2px/3Byef9ucXv/dXiB/3Byef9zdn//dXiB/3Byef9sb3n/a254/3Byd/9vcXn/cHJ5/2ttc/9tb3j/
    +bnF7/25xev91d37/cHN8/25weP90dn//cXN5/29yev9ydH3/bnB3/3V3fv9ydX7/b3J8/3F0fv9zdn//
    +dXiB/25xe/93eX//d3l//25xe/9zdXz/bW9z/2dqcf9ucHf/bG51/3V3ff9ucHf/am13/3N1fP9sbnX/
    +cHN9/3N1fP9qbXf/cHJ5/2xudf9rbnf/amx0/2ttc/9kZ3H/Zmlz/2psc/9qbXf/bnF6/3F0fP9rbnf/
    +bXB4/3R2fP9wc33/YGNs/3d6g/9ucXv/Zmlz/2psc/9qbHP/Z2p0/2dqdP9nanT/c3V8/25wd/9sb3n/
    +cHJ5/2dqcf9wc33/Zmlz/2xudf9qbXf/amxz/2ptd/9qbXf/bG95/3N1fP9sbnX/bG51/2Zpc/9qbXf/
    +bG51/2psc/91d33/cHN9/25xe/9qbXf/am13/3Bzff9zdXz/amxz/2psc/9nanH/Z2px/2Zpc/9ucXv/
    +am13/3Bzff9zdXz/cHJ5/2psc/91d33/bnB3/25xe/91d33/dXd9/2xvef9sb3n/bG95/25xe/9qbXf/
    +cHN9/3N2f/95e4H/bG95/3N2f/9wcnn/cHJ5/3d6g/9wc33/foCG/25wd/9vcXX/c3V8/2xudf92eHz/
    +cHJ5/29xdf9sbnX/dXd9/25wd/9wcnn/bG95/2Zpc/9zdXz/bW9z/3Z4fP91d33/bW9z/25wd/91d33/
    +dXd9/2xudf9ucHf/cHJ5/25wd/9qbHP/bG95/25xe/9sbnX/bnF7/2dqcf9nanT/YGNs/2xudf9sb3n/
    +amxz/2psc/9qbXf/amxz/2psc/9sb3n/am13/2xvef9qbHP/cHN9/3N1fP9sb3n/eXuB/2dqcf9nanT/
    +am13/2dqdP9maG7/Zmlz/3Byef9zdXz/bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/
    +bG51/21vc/91d33/am13/2xvef9zdXz/bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/
    +Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/bnB3/3V3ff9sbnX/bG51/25wd/9qbXf/c3V8/25wd/9ucXv/
    +am13/2xvef9sb3n/am13/25xe/9qbXf/dXiB/3N2f/9/gYf/eXyG/3Bzff91eIH/d3l//25wd/9zdXz/
    +bnB3/29xdf9zdXz/dnh8/3V3ff9wcnr/b3F4/3J0ev9tb3f/cXN6/2ttdP9ucXv/bG51/25wd/94eX3/
    +cHJ5/2dqcf9zdXz/c3V8/3N1fP9ucHf/bnB3/3Z4fP9vcXb/bXB6/2xvef9wc3z/cXN7/3Fze/9xdHv/
    +cHJ5/3R2fv92eH7/dHeB/3R3f/9xdHz/eXuA/3d5f/9ydX3/eXyF/3BzfP93eYD/dHd//3Bzff90dn3/
    +cHJ5/25xe/9tcHn/dnh8/3V3gP9ucXr/bnF6/2xvef9rbnj/aWx2/2tueP90dnz/b3F4/25wdP90dnv/
    +bW93/3J0fP9zdXz/bW92/3J0fP9qbXf/bG51/25wdf9ucHb/bG51/2psc/9sbnX/am13/2ptd/9ydHr/
    +Z2pz/2ptd/9xc3n/bG95/2Jlbv99foH/c3V8/2xudf9tb3P/bG51/25wd/9ucHf/bnB3/3V3ff91d33/
    +cHN9/3Byef9maG7/bG95/2Rncf9iZW7/Z2p0/2xudf9qbXf/Z2p0/2xudf9ucXv/amxz/2dqdP9nanT/
    +am13/2dqcf9nanH/cHJ5/25xe/9sb3n/am13/2xudf9ucXv/c3V8/2xvef9qbXf/bnB3/29xdf9ucHf/
    +c3V8/3Byef91d33/bG95/2xvef9nanT/dXd9/29xdf9wcnn/dXd9/3Bzff9qbXf/bG51/2xudf9sb3n/
    +Zmlz/2ptd/9qbXf/cHJ5/2Rncf9qbHP/Z2p0/2ptd/9sb3n/bG95/3d6g/9nanH/Z2px/25xe/9qbHP/
    +d3l//2xvef9qbHP/bG51/3N1fP9sb3n/bG95/25xe/9maXP/bG95/2dqcf9ucXv/bG95/2dqcf9nanT/
    +bnF7/25xe/9maXP/bG51/2ptd/95e4H/cHJ5/3V4gf93eoP/cHJ5/3l7gf9wc33/bnF7/2dqdP9sb3n/
    +c3V8/3Byef9ucHf/c3Z//25xe/9ucXv/cHN9/25xe/9ucXv/bG95/3h5ff94eX3/cHJ5/4CChv9sbnX/
    +bG51/3N1fP9wcnn/bnB3/2xvef91d33/dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/
    +bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/
    +cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/cHN9/2dqdP9sb3n/Z2p0/2xudf9qbHP/Z2p0/25xe/9qbXf/
    +bnF7/2dqcf9qbXf/am13/2Zpc/9qbHP/ZGdx/2xvef9qbXf/c3Z//3N1fP9qbXf/am13/3N1fP9qbXf/
    +bnF7/2ptd/9sbnX/bnF7/3Bzff9ucXv/am11/2xudf9xc3j/a211/3Fzev9tb3T/cHN9/2Zpc/9ucHf/
    +dnh8/3Byef9rbXT/dHZ7/3Bzff90d4D/cHN9/2xvef9zdn//bnB3/25wd/9tcHr/cnV8/29xef9wcnr/
    +cnR6/21vdv9wc3v/c3V7/3V3ff9wc33/bXB6/3N2fv90dnr/bnB1/3V3ff9tb3b/cXN6/3Byef9vcXn/
    +cHJ5/3Byef9xc33/cHN8/3d5f/93eoL/cnV+/3BzfP9ucXr/bXB5/2tueP9tcHn/dnh+/3J0ff9vcnn/
    +dHZ+/21wef9vcXr/b3J8/21vdv9ydX7/bG95/25wd/9tcHn/bW92/2dqdP9nanT/bnB3/25wd/9ucXv/
    +dXd9/2ptdv9rbnf/bnF5/2xvef9iZW7/d3qD/2ptd/9qbXf/am13/2ptd/9qbXf/bG95/2ptd/9wcnn/
    +bG95/2xvef9ucHf/Zmhu/2xvef9iZW7/ZGdx/2psc/9nanH/Zmlz/2Rncf9qbHP/bG95/2psc/9qbHP/
    +Zmlz/2ptd/9qbHP/amxz/3Byef9qbHP/Z2p0/2psc/9iZW7/bG95/3Bzff9qbHP/amxz/2ptd/9sbnX/
    +amxz/25xe/9ucHf/dXd9/29xdf9wcnn/Zmlz/3V3ff9sbnX/bnB3/3N1fP91d33/bnB3/3Byef9vcXX/
    +bnB3/2psc/9sb3n/bnB3/3V4gf9qbHP/bG51/29xdf9sb3n/cHJ5/3Byef+Agob/bG51/2xudf9zdXz/
    +bW9z/3Z4fP9zdXz/bnB3/25wd/94eX3/dXd9/3Byef9zdXz/bnB3/3V3ff9ucHf/dXd9/3Z4fP9vcXX/
    +bG95/3V4gf93eoP/bnF7/2xvef91eIH/eXyG/25xe/93eoP/d3qD/3N1fP97fof/dXiB/3V4gf9ucXv/
    +c3Z//3d6g/9zdn//cHN9/3N2f/9ucXv/bnF7/25xe/9sb3n/cHN9/25wd/94eX3/eHl9/3V3ff9/gYf/
    +bG95/2xvef9wc33/bnF7/25wd/9sbnX/bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/
    +bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/
    +cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/cHJ5/3V3ff9sb3n/bG95/2dqdP9qbHP/Zmhu/2Rncf9nanT/
    +amxz/2Zpc/9cX2j/ZGZs/2Zobv9gY2z/amxz/2BjbP9nanT/am13/3V3ff9zdXz/am13/2xudf9sb3n/
    +bG51/2xvef9sbnX/am13/3N1fP9zdXz/c3V8/3Byef94eoD/eHuC/3N1fP93eX7/cnR5/3R2ff9sbnX/
    +dXd9/3d6g/9zdXz/bnB2/3N1ff91d33/dXd9/3N1fP9sbnX/cHJ5/21wev9wc33/b3J7/3R3fv9ucXr/
    +b3J3/3N1ef9rbnf/bnF7/3J0fP9ydX7/bnF6/2tueP9wc3z/b3F6/2lsdP9wcnn/aWx2/21veP9rbnj/
    +bG95/21veP9pa3T/amxz/25wdv9ucHf/b3F2/2hqc/9tb3b/bG92/29xef9nanT/bnB3/3J1ff9vcXr/
    +b3F4/3J0fP9ydHv/c3V7/3N1fP9tb3T/dHZ8/2ttdv9tb3X/a253/2xudf9laHL/ZGdx/2xudf9qbXf/
    +bG95/3V3ff9qbHP/a213/2xudP9ucXv/ZGdx/3t9g/9ucXv/Z2p0/2xudf9qbHP/bnF7/2ptd/9ucXv/
    +d3l//3N1fP91d33/dnh8/2xudf9wcnn/Zmlz/2dqdP9sbnX/bnB3/3Byef9vcXX/cHJ5/3Z4fP9vcXX/
    +bnB3/2xudf9ucHf/am13/2ptd/9zdXz/bG51/2ptd/9qbXf/Z2p0/3Byef94eX3/b3F1/2xudf9sbnX/
    +bW9z/2xudf9wcnn/bnF7/3V3ff9sb3n/cHJ5/2psc/93eX//bW9z/25wd/9wcnn/dXd9/25wd/9wc33/
    +bnF7/25xe/9qbXf/c3V8/3N2f/95fIb/bG95/3Bzff9zdXz/bnF7/3N2f/9zdn//gYSN/3N1fP9ucHf/
    +c3Z//25wd/91eIH/cHN9/25xe/9ucHf/d3l//3d6g/93eoP/eXuB/3Byef9zdn//c3V8/3l7gf95e4H/
    +c3Z//3Bzff95e4H/eXuB/25wd/9ucXv/d3l//3t+h/9zdXz/e32D/3N2f/9sb3n/dnh8/25wd/9zdXz/
    +Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/bG51/2xudf9qbXf/bG51/3Byef9ucHf/dXd9/3V3ff9zdXz/
    +f4GH/29xdf9zdXz/cHJ5/25wd/9vcXX/bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/
    +c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/
    +dXiB/3d6g/9zdn//dXiB/25xe/9wc33/dXiB/3V4gf9zdn//bG95/3N1fP9ucHf/bnF7/2xvef9ucHf/
    +cHJ5/2xudf9wcnn/Z2px/25wd/9tb3P/Z2p0/25wd/9nanT/cHN9/3N2f/91eIH/d3l//25xe/9sb3n/
    +c3Z//25xe/91d33/bG51/29xdf91d33/dXd9/3N1fP9oa3T/cXR8/3N1ev9tcHn/b3J8/29xd/9zdXz/
    +am13/3V3ff91d33/cHJ5/2xudv9ydHv/cXN6/3J0e/9wcnn/am13/25xe/9rbXP/bW92/21veP9vcnr/
    +bXB6/21weP9ucHX/bG93/3Fze/9zdn7/dnmA/3N2f/9xdH7/d3l//3FzfP9tb3b/c3V6/25wef9xc3j/
    +b3J3/25xef9zdn3/bG94/29xef91d3z/cXN4/3Bydv9qbXb/bXB6/21vd/9ydHv/Z2p0/2ttdP9ucHb/
    +bG51/2hrc/9qbXb/a253/3J1ff9wc33/a210/3R2ff9nanT/aGty/2psc/9sbnX/ZGdx/2Zpc/9sbnX/
    +Z2p0/2xvef9wc33/Zmlz/2xvef9qbXf/bnF7/2Jlbv93eoP/bnF7/2Zpc/9nanH/amxz/3Bzff9sbnX/
    +bnF7/3V3ff9ucXv/bG95/3Byef9qbHP/am13/2Zpc/9kZ3H/Z2px/2dqcf9qbHP/bG51/2dqdP9ucXv/
    +Z2px/2dqcf9maXP/Z2p0/2psc/9nanT/c3V8/2dqdP9qbXf/am13/2Zpc/9qbHP/am13/2dqcf9nanT/
    +Z2p0/2Zobv9maXP/Z2p0/2ptd/9wc33/am13/2xudf9iZW7/c3V8/2Zpc/9ucXv/bnF7/3Bzff9sbnX/
    +cHJ5/2xvef9qbXf/am13/2xudf9sbnX/d3l//2dqdP9sbnX/bG51/2dqdP9qbXf/am13/3t9g/9kZ3H/
    +Zmlz/3Byef9qbHP/c3Z//2xvef9ucHf/bG51/3Z4fP9zdXz/dXd9/3V3ff9vcXX/cHJ5/2xvef9zdn//
    +c3Z//2xvef9qbXf/dXiB/3d5f/9ucHf/cHJ5/3l7gf91eIH/amxz/2xvef9sb3n/amxz/3Bzff9qbHP/
    +bG95/2BjbP9sbnX/cHJ5/2xudf9ucHf/cHJ5/2ptd/9qbHP/am13/2ptd/9ucHf/bnB3/3N1fP9wc33/
    +cHN9/4GDiv9ucHf/c3Z//25xe/9vcXX/b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/
    +d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/
    +bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/amxz/2ptd/9sb3n/bnF7/25wd/91d33/bnB3/25xe/9wc33/
    +bnB3/3Bzff9zdn//d3qD/2xvef95fIb/dXd9/25xe/9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/97fYP/
    +dXiB/3l8hv93eoP/eXyG/3N2f/9wcnn/dXiB/3l7gf9wc33/bnB3/3R2fv93eYH/c3V+/3R2fv9vcnn/
    +cHN9/2ptd/91eIH/d3qD/3V4gf9wcnn/b3J8/29yfP9wcnn/cHJ5/21vc/9zdXz/b3F1/2xvef9tb3n/
    +cHN7/3J0ff9wc3z/Z2p0/29xef9zdn//bnF7/3d4ff9zdn//cHJ5/3Z4fv9xc3f/am10/2xvef9ucHf/
    +a254/21wev9wcnb/dXd9/25xev9vcnz/dnh//3Fzev9zdX3/Z2p0/25xe/9sb3n/dnh+/2hrdP9ucHf/
    +bXB5/25xe/9sb3n/cHN9/3N2f/94e4X/c3Z//29xdf91d33/c3V8/2xudf9qbXf/bG95/2Zpc/9maXP/
    +bG51/25wd/9wcnn/dXd9/2psc/9ucHf/bG95/3V3ff9maXP/f4GH/3V4gf9wcnn/cHN9/3Bzff93eX//
    +c3Z//3V4gf97fof/eXuB/3t9g/97fYP/d3qD/3l8hv9zdn//cHN9/3N1fP9zdXz/bnF7/25xe/9ucXv/
    +dnh8/25wd/9wcnn/bG95/3N1fP9sbnX/Z2p0/3N1fP9kZ3H/Z2p0/2psc/9kZ3H/am13/2xvef9sbnX/
    +bnF7/3Bzff9sbnX/Z2p0/2ptd/9ucXv/c3V8/25wd/9qbXf/ZGdx/3N1fP9nanT/bG95/25xe/9wc33/
    +bG95/25xe/9qbXf/bnF7/2ptd/9ucHf/b3F1/3d5f/9maG7/b3F1/2xudf9nanT/bnB3/2xvef9/gYf/
    +bG95/25xe/93eoP/cHJ5/3t+h/9wc33/cHN9/25wd/91eIH/dXd9/3N2f/9wc33/cHJ5/3V4gf9zdn//
    +d3l//3V3ff9vcXX/bG51/3V3ff9zdXz/bG51/2psc/9wc33/foGK/3N1fP93eoP/c3Z//25wd/91d33/
    +bnB3/25wd/9kZ3H/bnB3/3N2f/9sb3n/bnB3/3Byef9ucHf/bG95/25wd/9sb3n/bnB3/25wd/9sb3n/
    +cHN9/2xvef9/gYf/cHJ5/3Byef9ucHf/bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/
    +c3Z//3+Bh/9zdn//d3qD/31+gf9zdn//c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX//
    +c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/am13/25wd/9wcnn/bG51/25xe/9qbXf/bnF7/2xudf9qbXf/
    +amxz/2Zpc/9sb3n/am13/25xe/9maXP/bG95/2xudf9iZW7/bG51/2dqdP9sb3n/cHJ5/3d5f/93eX//
    +am13/2ptd/9qbXf/am13/25xe/9sbnX/Z2p0/25xe/9wc33/cHN9/25vdf9qbHX/bG51/2ptdv9rbnj/
    +Z2pz/2dqdP9kZ3H/am13/3N1fP9sb3n/Zmlz/2psc/9maXP/am13/2Zpc/9qbHP/am13/2psc/9sbnX/
    +Z2p0/21vdv9tcHr/bG95/15ha/9nanH/a210/2ttdP9wcnn/dHZ9/2ptd/9sb3n/aGty/2dqdP9oa3T/
    +amxz/2ptd/9wcnn/bW9z/3Z4fP9qbXf/bnB3/3Z4fP9sbnX/am13/2Rncf9qbXf/am13/3d5f/9nanH/
    +bG51/2xudf9ucHf/bG95/25wd/9ucHf/dXiB/25xe/9sbnX/dXd9/25xe/9tb3P/cHJ5/25wd/9nanH/
    +amxz/29xdf9ucHf/cHJ5/3N1fP9qbXf/am13/2ptd/9sb3n/YmVu/36Ahv9sb3n/Z2p0/2dqdP9qbXf/
    +cHN9/2ptd/9sb3n/dXd9/3V3ff9wcnn/c3V8/3Byef9ucXv/bG95/2ptd/9ucHf/bG95/25xe/9sb3n/
    +bG95/3V3ff9ucHf/bG95/25wd/93eX//bnB3/25wd/97fYP/amxz/25wd/9ucHf/bG51/25wd/9sb3n/
    +bW9z/2xvef9ucXv/Z2p0/2Jlbv9nanH/am13/3Bzff9qbXf/am13/2Rncf9wc33/amxz/2xudf9ucHf/
    +c3V8/2xvef9ucXv/am13/3Bzff9nanT/bG51/21vc/92eHz/Zmhu/2xudf9tb3P/bG51/29xdf9zdXz/
    +f4KM/25xe/9nanT/d3qD/2xvef93eX//cHJ5/2xvef9ucHf/dXiB/3h5ff9zdn//c3Z//3Byef9zdn//
    +dXiB/3t9g/95fIb/cHJ5/3Bzff97fYP/fn+D/3Z4fP9wc33/e32D/3t+h/9wc33/dXiB/3Bzff9ucXv/
    +dXiB/25wd/9wc33/Z2p0/25wd/9wc33/bnB3/2xvef9sb3n/bnB3/2ptd/9qbXf/bnF7/25wd/9sbnX/
    +bG51/3N1fP9wcnn/f4GH/3Byef9wcnn/bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/
    +Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/
    +c3V8/25xe/9zdXz/bG51/2xvef9sbnX/cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/
    +bnB3/2ptd/9qbXf/c3V8/25xe/9ucXv/am13/2xvef9ucHf/ZGZs/25wd/9sbnX/cHJ5/3V3ff97fYP/
    +eHl9/25wd/9ucHf/bnB3/3Byef9wc33/bW9z/2psc/9zdXz/dXd9/3N1fP9ydHr/Zmlz/2ptd/9oa3X/
    +b3J8/2xvef9ucHf/bnB3/3V3ff93eX//dXd9/25wd/9ucHf/bnF7/3N2f/9ucXv/bnF7/3N2f/9ucHf/
    +bG95/2xvef9vcXX/dXd9/3Byef9kZmz/bW9z/25wd/9ucXv/d3l//3d6g/9wc33/dXiB/3N1fP9wcnn/
    +bG95/3Byef9sbnX/cHJ5/25wd/9zdn//bnB3/25xe/95e4H/bG95/25wd/9qbXf/b3F1/29xdf94eX3/
    +bnB3/25wd/9ucHf/b3F1/3Byef9sb3n/cHJ5/3d5f/9zdXz/bG51/3N1fP9ucXv/bG51/3N1fP9sbnX/
    +Z2p0/2dqdP9sb3n/bnB3/25xe/9wc33/amxz/29xdf9wcnn/c3V8/2Jlbv9/gYf/bnB3/21vc/9sbnX/
    +bG95/3d5f/9wc33/dXiB/3l7gf93eX//c3Z//3V4gf9ucXv/bnF7/25wd/9maXP/bnB3/25xe/9ucXv/
    +cHJ5/2xvef91d33/b3F1/2xudf9ucHf/dnh8/25wd/9sbnX/dXiB/2psc/9sb3n/bG51/2dqdP9qbXf/
    +am13/2psc/9sb3n/bnF7/2ptd/9qbXf/bnF7/25xe/91d33/am13/2ptd/9kZ3H/c3V8/2ptd/9qbHP/
    +am13/25xe/9qbXf/am13/2psc/9sb3n/ZGdx/2xudf9nanT/cHN9/2Rncf9nanT/bG51/2dqdP9qbXf/
    +bnF7/36Ahv9qbXf/Z2p0/3N2f/9sbnX/dXd9/2xvef9qbXf/bW9z/3d5f/93eX//dXd9/3Byef9ucHf/
    +cHN9/3N2f/93eX//dXd9/2xvef9qbXf/dXd9/3V3ff9sb3n/b3F1/3Z4fP93eX//bnB3/3N2f/9ucXv/
    +bnB3/3Bzff9sb3n/bnF7/2Zpc/9sb3n/cHN9/25wd/9wc33/bnB3/2xudf9ucHf/bnB3/3V3ff9wcnn/
    +bW9z/25wd/9zdXz/c3V8/3+Bh/91d33/cHJ5/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/
    +bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/
    +Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/95e4H/
    +c3V8/3Bzff9wc33/Z2p0/3Bzff9zdXz/cHJ5/2xudf9wcnn/am13/2Jlbv9qbXf/Z2p0/2xvef9wc33/
    +c3Z//3N1fP9sbnX/bG95/21vc/9ucXv/bnF7/2dqdP9kZ3H/bnF7/3Bzff9ucXv/cnR7/2Rncf9qbHP/
    +am13/3Bzff9sb3n/bnB3/2psc/9zdXz/dXd9/3N1fP9qbXf/bG51/25wd/92eHz/cHJ5/3Byef9zdXz/
    +b3F1/25wd/9nanT/bW9z/25wd/9sb3n/ZGdx/2ptd/9qbXf/am13/25xe/93eX//cHJ5/3N1fP9wcnn/
    +bW9z/21vc/9ucHf/bG51/2Zpc/9nanH/bG95/2dqcf9maXP/bnF7/2psc/9maXP/am13/2xudf9sbnX/
    +c3V8/2psc/9nanT/a253/2xudf9wc33/a254/3Byef91eID/bG95/2xvef91d33/cHJ5/2ptd/9ucXv/
    +bG95/2hrdf9qbXf/bG51/2xudf9qbXf/Z2p0/2Rncf9nanH/a254/2xvef9gY2z/gIKG/2xudf9tb3P/
    +bG51/29xdf91d33/cHJ5/3V3ff91d33/c3Z//3Bzff91d33/cHN9/3Bzff9wcnn/am13/25wd/9zdn//
    +cHN9/3V4gf93eoP/d3l//2ptd/9ucHf/bnB3/3Z4fP9qbHP/bW9z/3Z4fP9sbnX/bnB3/3Byef9qbHP/
    +bnB3/2ptd/9sbnX/bnB3/3N1fP9ucHf/bG51/3N1fP9wcnn/dnh8/3Byef9ucHf/bG51/3N1fP9ucHf/
    +bnB3/25xe/9zdn//c3Z//3Bzff9wc33/d3qD/25xe/91eIH/cHN9/3l8hv9zdXz/dXd9/3l7gf92eHz/
    +eXuB/3t9g/+FiJH/d3qD/3Bzff9/gYf/dXiB/3t+h/91eIH/d3qD/3V4gf9+gYr/e32D/3d6g/9zdn//
    +c3V8/3N2f/9zdn//dnh8/3V4gf9sb3n/bG95/3Z4fP91d33/bG51/21vc/9wcnn/d3l//25xe/91d33/
    +cHJ5/25wd/9ucXv/bnB3/3Byef9nanH/cHN9/3V4gf9wcnn/bnF7/25xe/9ucHf/cHJ5/25xe/91eIH/
    +cHN9/3Byef9ucXv/c3Z//3N2f/9+gIb/dnh8/3Bzff9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/
    +eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/
    +dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/
    +c3V8/2Zobv9sb3n/bG51/2Zpc/9qbXf/am13/2ptd/9nanT/am13/2xvef9kZ3H/bG95/2dqdP9ucXv/
    +bnF7/3V3ff94eX3/bG95/3N2f/9sb3n/cHN9/3Bzff9ucHf/Z2p0/3V3ff91d33/dXd9/3h5ff9sbnX/
    +bnB3/2xvef91d33/c3Z//2xvef9qbXf/c3Z//3l7gf91eIH/bnB3/3Byef9wc33/d3l//3Byef9wcnn/
    +cHJ5/21vc/9sbnX/amxz/2xudf9sbnX/bG51/2Zobv9wcnn/bG51/25xe/9ucXv/c3V8/3J0e/9sb3n/
    +bnB3/2xudf9ucHT/bG51/2Zpc/9vcXj/bG51/21vdv9tb3b/bW93/3R2ff9rbnf/aGt1/2dqdP9sbnX/
    +am13/3Fzev9qbHP/a253/2xveP9qbHP/bG95/2xveP9wcnj/dHZ7/21vdf9ydXz/dXd9/3J0ff9sb3n/
    +b3J8/3N1fP9vcXj/b3F4/21vc/9qbXf/bG95/3Byef9ucHf/b3F1/29xeP9zdXz/Z2px/4GDiv9sb3n/
    +bnF7/3Byef9wcnn/dXiB/3N2f/93eoP/e32D/3V4gf9wc33/c3Z//3V3ff9ucHf/b3F1/2psc/9ucHf/
    +bnF7/25wd/9zdn//c3V8/3Z4fP9qbHP/bG51/21vc/92eHz/bG51/29xdf92eHz/amxz/2xudf9wc33/
    +Zmlz/3Byef9qbXf/bnB3/25wd/92eHz/b3F1/25wd/9zdXz/c3V8/3V3ff9wc33/am13/2dqcf9wcnn/
    +bW9z/29xdf9sbnX/cHJ5/2xvef9wcnn/bG51/2xvef9maXP/cHJ5/25wd/94eX3/Zmhu/2xudf9sb3n/
    +Z2p0/2ptd/9sb3n/foCG/25xe/9sbnX/eXuB/2xvef93eX//bG51/25wd/9tb3P/dXd9/3N1fP91d33/
    +bG51/2psc/9zdXz/c3V8/3N1fP9sb3n/amxz/2ptd/92eHz/c3V8/29xdf9ucHf/cHN9/3d6g/9ucXv/
    +d3l//3Bzff9zdXz/cHN9/3Byef9wc33/am13/3Bzff95e4H/dXd9/3V4gf9wc33/cHN9/3V3ff91eIH/
    +eXuB/3N1fP9zdXz/cHN9/3d6g/95e4H/g4WM/3l8hv91eIH/d3qD/3Bzff9zdn//c3V8/3N2f/91eIH/
    +bnB3/3d5f/9sb3n/bnB3/25wd/93eX//bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/
    +dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/
    +bnF7/3V4gf9ucHf/c3Z//3Bzff9qbXf/c3V8/3Bzff91eIH/bG95/2xvef9zdn//bG95/2xvef9qbXf/
    +cHN9/3Byef91eIH/d3l//2xvef9zdn//bnB3/3N2f/9wc33/cHJ5/2ptd/9zdXz/cHJ5/3V3ff92eHz/
    +Z2p0/2ptd/9qbXf/cHN9/2ptd/9sbnX/amxz/3Byef91d33/c3V8/2dqdP9tb3P/bnF7/3V4gf9wc33/
    +cHN9/3d6g/9zdXz/bnF7/25xe/9xc3r/dXiA/3N1fP9tcHr/c3Z//3Z4fv94e4T/enyC/31/hv94eoD/
    +dHeA/3Bzff9ucXv/cHN6/29xef9tcHn/cnR7/25wd/9vcXX/aWx1/2ttdv9wcnn/b3F3/21vdv9sbnb/
    +bW92/21wdv9xc3n/bG50/21vdP9wcnj/bW91/25xef9xdHz/cXR9/3Fzev9vcXj/b3F4/3Z4gP9wc3v/
    +bG95/29yfP9ydHz/cXN7/21wev9ucHf/bnF7/3Byef9wc33/bnB3/25wd/9xc3r/cHJ5/2Zobv+Agob/
    +bG51/2xudf9sbnX/bG51/3N1fP9wcnn/eHl9/3V3ff91d33/c3V8/3Bzff9zdXz/amxz/2psc/9nanT/
    +Z2px/2xudf9sbnX/cHN9/2xudf9wc33/Z2p0/2psc/9sbnX/dXd9/2ptd/9qbHP/c3V8/2ptd/9qbXf/
    +cHN9/2dqdP9ucXv/bnB3/3N1fP9ucHf/dXd9/25wd/9sb3n/c3Z//3N2f/93eX//dXiB/25xe/9sb3n/
    +c3Z//25wd/9wcnn/c3V8/3N2f/9ucXv/c3Z//2xvef9zdXz/Z2px/3Byef9sbnX/cHN9/2Rncf9qbHP/
    +bnF7/2dqcf9qbXf/am13/3V4gf9maXP/ZGdx/3N1fP9nanT/cHJ5/2psc/9nanT/Z2px/3V3ff9zdXz/
    +bnF7/2ptd/9qbXf/cHN9/3N1fP9zdXz/c3V8/25wd/9ucHf/d3qD/3N2f/9ucHf/bG95/3Bzff95e4H/
    +bG95/3V3ff9sb3n/bnB3/25xe/9sb3n/bnB3/2dqcf9vcXX/c3V8/2ptd/9ucHf/bG51/2ptd/9nanT/
    +bG51/3N1fP9sbnX/bW9z/2xudf9zdXz/dXd9/31+gf9zdXz/bG95/2xvef9sbnX/bG51/2ptd/9ucHf/
    +c3V8/2xvef91d33/bnB3/3Byef9sb3n/dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/
    +bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/
    +c3V8/25wd/91d33/am13/3Bzff9sbnX/amxz/25wd/9sb3n/bnF7/2ptd/9qbXf/dXd9/2xudf9sbnX/
    +Zmlz/2xvef9sb3n/dXd9/3N1fP9qbXf/bnF7/21vc/9zdXz/cHJ5/25xe/9sb3n/c3Z//3Bzff93eX//
    +eHqA/2hrdf9ucHf/a254/3N2f/9ucHf/bnB3/25wd/9wcnn/eXuB/3V3ff9sbnX/bG51/21vdv91d3z/
    +am13/2psc/9ucXv/amxz/2dqcf9nanT/Z2pz/2dqc/9maHL/YmRt/2Zobv9pbHb/bG53/25wef9wcnr/
    +cHJ5/2tueP9tb3f/bG51/3Fzev9sb3f/bG95/21wev9vcnr/bG53/2xudf9rbnX/b3J6/25wef9ucXn/
    +am13/2tueP9ydHv/cHJ6/25wd/9ucXn/dHZ9/29xdv9wcnr/dHZ9/3BzeP9ucHf/bnB4/29xef93eYD/
    +bnF2/25wd/9xc3v/cXN4/3N1e/9xc3r/cXN6/3N2f/9wc33/d3qD/3Byef9wcnn/cXR9/3Bzff9nanT/
    +f4KM/3Bzff9ucHf/b3F1/21vc/9zdXz/bnB3/3V3ff93eX//cHN9/25xe/9wc33/dXd9/29xdf9ucHf/
    +bnB3/25wd/9vcXX/cHN9/3N2f/9ucXv/dXiB/2xvef9ucXv/bnF7/3l7gf91d33/d3l//35/g/94eX3/
    +eXuB/36Ahv96e3//f4GH/3l8hv9+gYr/eXyG/4CChv97fYP/dXd9/3l8hv99foH/fn+D/35/g/93eX//
    +cHN9/3t9g/9wc33/c3V8/3Byef9wc33/b3F1/3Z4fP9qbXf/bG95/2Jlbv9qbXf/am13/2ptd/9gY2z/
    +Zmlz/2xvef9kZ3H/Zmlz/2xvef93eoP/am13/2Rncf9wc33/ZGdx/2ptd/9maG7/Z2px/2Zobv9zdXz/
    +d3qD/3Bzff9sb3n/amxz/3Byef9zdXz/dnh8/3N1fP9sbnX/bG51/3h5ff9wcnn/bnB3/25wd/9zdXz/
    +d3l//25wd/91d33/bnB3/21vc/9wcnn/bnB3/2xvef9maXP/bnB3/3Byef9sbnX/bnB3/25wd/9wcnn/
    +amxz/25wd/92eHz/bnB3/29xdf9wcnn/cHJ5/3Z4fP9+gIb/c3V8/3Byef9sb3n/bG51/2ptd/9maXP/
    +am13/2xvef9ucXv/cHJ5/2dqcf9nanT/Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/
    +Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/
    +Zmhu/2Zpc/9kZ3H/cHJ5/2Zpc/9qbXf/am13/2Rncf9maXP/Z2p0/2xvef9maXP/bG51/3Bzff9maXP/
    +bW9z/2ptd/9sb3n/am13/3Bzff9ucXv/amxz/25xe/9sbnX/cHJ5/2xvef9qbXf/ZGdx/2ptd/9qbXf/
    +c3V8/3F0e/9laHH/bG51/2dqc/9tcHr/amxz/2ptd/9nanT/cHJ5/3l7gf91d33/amxz/2xudf9vcXj/
    +d3h8/3Byef9vcXX/dXd9/21vc/9sbnX/bG95/29yfP9wc3v/bW92/2ptd/9sb3j/c3V7/3V4f/90dnr/
    +c3V8/3Byev9xc3v/c3Z9/29xeP91d4D/bnB4/21wev91d37/dnh//3Fze/9tb3b/bW93/3J0e/9zdn3/
    +cnV+/25xe/9vcnn/cnV//25xe/9wcnr/cHN8/3Z4gf9wcnn/cHJ6/3d6hP9zdXz/cXN9/3Bzff9zdXz/
    +fYCJ/25wd/9sb3n/bG95/29xeP90dnv/b3J7/25wd/9ucHf/bW92/3N1fP9ucHf/bnB3/29yef9wcnn/
    +Z2px/35/g/9ucHf/bG51/21vc/9qbXf/bnF7/2xvef93eX//d3l//3N1fP9ucXv/bnF7/25xe/9nanT/
    +amxz/2Zpc/9nanT/ZGdx/2dqdP9nanT/ZGdx/3Byef9kZ3H/bG51/2xudf9sb3n/Zmlz/2psc/9wc33/
    +amxz/2xudf9zdXz/amxz/2xvef9qbXf/bnF7/2ptd/9sb3n/am13/2xudf9ucXv/cHN9/3Bzff9wc33/
    +am13/2ptd/91d33/bnB3/2xudf9sbnX/bnB3/2xudf92eHz/bG51/25wd/9kZ3H/bG95/3N1fP9sb3n/
    +ZGZs/2ptd/9ucXv/bG51/2ptd/9zdXz/fn+D/2xvef9sb3n/foCG/25xe/91eIH/bnF7/25wd/9vcXX/
    +dXd9/3d5f/9wc33/c3Z//25wd/9zdn//bnF7/3V3ff9ucXv/bG51/29xdf94eX3/c3Z//25wd/9ucXv/
    +c3Z//3l7gf9wcnn/d3l//25xe/9wcnn/cHN9/3N2f/9zdXz/am13/2xvef91d33/bG51/3N1fP9sb3n/
    +bG51/2dqcf9sb3n/dXd9/2psc/9qbXf/bG95/2xvef9wcnn/d3qD/3V3ff91d33/am13/3Byef9wcnn/
    +Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/
    +am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/
    +cHJ5/29xdf9wc33/bnF7/3l8hv9sb3n/cHN9/3N2f/9sb3n/bG95/3N2f/9wc33/bG95/3Bzff93eX//
    +am13/25wd/9vcXX/cHJ5/25wd/9zdXz/c3V8/2xudf9sb3n/bnB3/2xvef9sbnX/amxz/1xfaP9nanH/
    +Z2px/3Bzff9ucXv/a253/2xud/9tb3j/cXR7/21vc/9ucHf/amxz/25xe/93eX//c3V8/2hqdP9rbnf/
    +bXB5/3R2ev9sbnX/bW9z/25wd/9qbHP/cHJ5/29xef9zdX3/cHJ7/21weP9sb3n/bnB3/3N2f/94eoD/
    +b3J7/3N2f/9zdn//eHuF/3l7gf92eH7/fX+F/3R2ff91eH7/enyC/3p8gv94eoH/d3h9/31/hv97fYP/
    +e32D/3x9gf94eoD/dnh8/31/hf94eX7/d3l//3d5f/97fYP/cHN9/3V3ff97fof/cHN9/2xvef9wc33/
    +cHN9/3t+h/9zdXz/c3Z//3d6g/9wc33/d3mA/3J1f/9ucHb/bXB5/21vdv9ucHf/bnB3/25wd/9vcnv/
    +cHJ5/2dqcf9+gIb/bnF7/3N1fP9vcXX/bnF7/3d6g/9wc33/e36H/3l8hv9zdn//cHN9/25xe/91d33/
    +bnB3/25xe/9sb3n/bnF7/2xvef9ucXv/cHN9/3Byef93eX//bG51/2xudf9sbnX/bG95/2dqdP9qbHP/
    +bnF7/2psc/9nanH/am13/2Zpc/9nanT/Z2px/2ptd/9sbnX/bnF7/2xudf9tb3P/cHJ5/3V3ff91d33/
    +dXd9/2xvef9sb3n/dXiB/25wd/9wc33/c3V8/3V4gf9zdn//d3qD/3N2f/95fIb/cHN9/3l8hv97fYP/
    +eXuB/2dqdP9zdn//eXyG/3Bzff91eIH/eXuB/3+Bh/9ucXv/bnB3/35/g/9tb3P/dXd9/3Byef9wcnn/
    +b3F1/3d5f/93eX//bnF7/3Bzff9sb3n/cHJ5/25xe/93eX//c3Z//3Byef9ucHf/dXd9/3N1fP9sb3n/
    +bG95/3N2f/93eX//bnB3/3V3ff9vcXX/bnF7/3Bzff9ucXv/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/
    +bG95/2xvef9qbHP/bG95/3V3ff9vcXX/bG51/2xvef9qbXf/cHJ5/3l7gf91d33/bnF7/25wd/9ucHf/
    +cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn//bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/
    +am13/2xudf9ucHf/bG51/3V3ff99foH/Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/
    +am13/25xe/9ucHf/c3V8/3V3ff95e4H/bnB3/3V3ff92eHz/amxz/2xudf92eHz/bnF7/2xudf9ucHf/
    +c3V8/2dqdP9qbXf/bG51/3N1fP9ucHf/c3V8/3V3ff9ucHf/cHJ5/3Byef9zdXz/bW9z/21vc/9kZmz/
    +bG51/2xvef91d33/bG50/3Byef9vcXb/cXN5/3Fzef9qbXf/bG95/2Zpc/9sb3n/d3l//3N1fP9rbXT/
    +bXB4/29yev9zdXz/bnB3/25wd/9zdn//am13/25xe/9ucHr/cHN7/2xudv9oa3X/a254/2xudf9wc33/
    +dXd9/2xudf9ucHf/bnB3/3Byef91d33/bnB3/3d5f/9ucHf/bG95/3N2f/92eHz/cHJ5/25wd/9wcnn/
    +cHJ5/3Byef9wcnn/bnB3/25wd/9sb3n/bnB3/25wd/91eIH/c3Z//3Byef9ucHf/d3l//29xdf9nanH/
    +bG51/21vc/93eoP/bG51/2ptd/9ucXv/amxz/3N1fP9qbXb/aWt0/29xeP9sb3j/bG51/2xvef9ucHf/
    +bG95/2xvef9nanH/fn+D/25wd/9ucHf/am13/2xudf91d33/bG51/3l7gf91eIH/cHN9/3N2f/9wc33/
    +d3l//2xvef9wc33/bnB3/2xvef9sb3n/bnF7/3Bzff9ucXv/d3l//2ptd/9ucHf/bG95/3Byef9vcXX/
    +b3F1/3N1fP9vcXX/b3F1/3Bzff9nanT/bG51/2ptd/9ucXv/bG51/2xvef9sb3n/bG51/2xudf9sb3n/
    +dXd9/3Bzff9qbXf/am13/3Byef9qbXf/am13/2Zpc/9ucXv/bG95/2xvef9nanT/bnF7/2Rncf9sb3n/
    +bnF7/25xe/9gY2z/Z2p0/2xvef9qbXf/am13/3Bzff93eoP/am13/2ptd/97fYP/bG51/2xvef9ucXv/
    +bG95/2psc/91d33/dXd9/2ptd/9zdXz/bnB3/3Bzff9ucHf/dnh8/25xe/9wcnn/cHJ5/3d6g/9ucXv/
    +cHN9/2xvef9wc33/AA0BAAADAAAAAQEAAAABAQADAAAAAQEAAAABAgADAAAABAAEAKoBAwADAAAAAQAB
    +AAABBgADAAAAAQACAAABEQAEAAAAAgAEALIBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQCA
    +AAABFwAEAAAAAgAEALoBHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAEAMIAAAAAAAgACAAI
    +AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
    +													
    +												
    +											
    +										
    +										
    +											3
    +											MCAwAA
    +										
    +									
    +									scrollViewTexturedBackgroundColor
    +								
    +								
    +								0
    +								10
    +								
    +									1
    +									30
    +								
    +								
    +									Helvetica
    +									30
    +									16
    +								
    +							
    +							
    +								
    +								293
    +								{{0, 96}, {320, 262}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_shadow.png
    +								
    +							
    +							
    +								
    +								293
    +								{{80, 113}, {160, 170}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Contact's avatar
    +									
    +									
    +								
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_unknown.png
    +								
    +							
    +						
    +						{320, 395}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						266
    +						
    +							
    +								
    +								-2147483374
    +								{{0, 10}, {320, 67}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MQA
    +									
    +										2
    +									
    +								
    +								-1
    +								NO
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								278
    +								{160, 77}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Accept
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									accept_over.png
    +								
    +								
    +									NSImage
    +									accept_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								275
    +								{{160, 0}, {160, 77}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Decline
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									decline_over.png
    +								
    +								
    +									NSImage
    +									decline_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 383}, {320, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						avatarImage
    +						
    +						
    +					
    +					20
    +				
    +				
    +					
    +						addressLabel
    +						
    +						
    +					
    +					14
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						onDeclineClick:
    +						
    +						
    +						7
    +					
    +					16
    +				
    +				
    +					
    +						onAcceptClick:
    +						
    +						
    +						7
    +					
    +					15
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						25
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						22
    +						
    +						
    +						background
    +					
    +					
    +						8
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						21
    +						
    +						
    +						addressBackgroundImage
    +					
    +					
    +						19
    +						
    +						
    +						avatarImage
    +					
    +					
    +						18
    +						
    +						
    +						avatarShadowImage
    +					
    +					
    +						9
    +						
    +						
    +						addressLabel
    +					
    +					
    +						12
    +						
    +						
    +						headerBackground
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						tabBar
    +					
    +					
    +						5
    +						
    +						
    +						mask
    +					
    +					
    +						6
    +						
    +						
    +						declineButton
    +					
    +					
    +						7
    +						
    +						
    +						acceptButton
    +					
    +				
    +			
    +			
    +				IncomingCallViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			30
    +		
    +		
    +			
    +				
    +					IncomingCallViewController
    +					UIViewController
    +					
    +						id
    +						id
    +					
    +					
    +						
    +							onAcceptClick:
    +							id
    +						
    +						
    +							onDeclineClick:
    +							id
    +						
    +					
    +					
    +						UILabel
    +						UIImageView
    +					
    +					
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/IncomingCallViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{320, 154}
    +			{320, 154}
    +			{640, 523}
    +			{320, 339}
    +			{640, 523}
    +			{640, 125}
    +			{320, 154}
    +			{320, 154}
    +			{640, 135}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/WizardViewController/1/WizardViewController.xib b/linphone.ldb/Resources/Classes/WizardViewController/1/WizardViewController.xib
    new file mode 100644
    index 000000000..70b4ee8eb
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/WizardViewController/1/WizardViewController.xib
    @@ -0,0 +1,1903 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIActivityIndicatorView
    +			IBUIButton
    +			IBUIImageView
    +			IBUILabel
    +			IBUIScrollView
    +			IBUITextField
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						268
    +						{320, 394}
    +						
    +						
    +						
    +						_NS:9
    +						YES
    +						YES
    +						IBCocoaTouchFramework
    +						NO
    +						NO
    +					
    +					
    +						
    +						266
    +						
    +							
    +								
    +								294
    +								{160, 77}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Cancel
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									setup_cancel_over.png
    +								
    +								
    +									NSImage
    +									setup_cancel_disabled.png
    +								
    +								
    +									NSImage
    +									setup_cancel_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								291
    +								{{160, 0}, {160, 77}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Start
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									setup_start_over.png
    +								
    +								
    +									NSImage
    +									setup_start_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483357
    +								{{160, 0}, {160, 77}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									setup_back_over.png
    +								
    +								
    +									NSImage
    +									setup_back_disabled.png
    +								
    +								
    +									NSImage
    +									setup_back_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 383}, {320, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						-2147483374
    +						
    +							
    +								
    +								292
    +								{{141, 212}, {37, 37}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								NO
    +								YES
    +								0
    +							
    +						
    +						{320, 460}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwLjUAA
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{60, 80}, {201, 129}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Linphone setup assistant icon
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							setup_welcome_logo.png
    +						
    +					
    +					
    +						
    +						282
    +						{{40, 290}, {240, 44}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						IBCocoaTouchFramework
    +						This assistant will help you  to use a SIP account for your calls.
    +						
    +							3
    +							MC4zMzMzMzMzMzMzAA
    +						
    +						
    +						0
    +						10
    +						0
    +						1
    +						
    +							1
    +							12
    +						
    +						
    +							Helvetica
    +							12
    +							16
    +						
    +						NO
    +					
    +				
    +				{320, 394}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 50}, {258, 24}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Account setup assistant
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							setup_title_assistant.png
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 141}, {255, 50}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Create linphone.org account
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Create an account on linphone.org
    +						
    +						
    +						
    +							NSImage
    +							button_background_over.png
    +						
    +						
    +							NSImage
    +							button_background_default.png
    +						
    +						
    +							2
    +							13
    +						
    +						
    +							Helvetica-Bold
    +							13
    +							16
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 205}, {255, 50}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Sign in linphone.org account
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						I have already a linphone.org account
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 269}, {255, 50}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Sign in SIP account
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						I have already a SIP account
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 50}, {258, 24}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Account setup assistant
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +					
    +					
    +						
    +						298
    +						{{39, 80}, {240, 44}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Enter you username and password with your email address
    +						
    +						
    +						0
    +						10
    +						0
    +						1
    +						
    +						
    +						NO
    +					
    +					
    +						
    +						319
    +						{{32, 140}, {255, 31}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							Username
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Username
    +						
    +							3
    +							MAA
    +							
    +								2
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +							NSImage
    +							field_background.png
    +						
    +						
    +							1
    +							14
    +						
    +						
    +							Helvetica
    +							14
    +							16
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 185}, {255, 31}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							Password
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 230}, {255, 31}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						102
    +						
    +							Password again
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 275}, {255, 31}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						103
    +						
    +							Email
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Email
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						287
    +						{{33, 330}, {255, 50}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Register
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Register
    +						
    +						
    +						
    +						
    +						
    +							2
    +							20
    +						
    +						
    +							Helvetica-Bold
    +							20
    +							16
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 50}, {258, 24}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Account setup assistant
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +					
    +					
    +						
    +						298
    +						{{40, 80}, {240, 44}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Enter you username and password of your linphone.org account
    +						
    +						
    +						0
    +						10
    +						0
    +						1
    +						
    +						
    +						NO
    +					
    +					
    +						
    +						287
    +						{{32, 330}, {255, 50}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Sign in
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Sign in
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 185}, {255, 31}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							Password
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 140}, {255, 31}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							Username
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Username
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 50}, {258, 24}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Account setup assistant
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +					
    +					
    +						
    +						298
    +						{{40, 80}, {240, 44}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Enter you username and password with your SIP domain
    +						
    +						
    +						0
    +						10
    +						0
    +						1
    +						
    +						
    +						NO
    +					
    +					
    +						
    +						319
    +						{{33, 140}, {255, 31}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							Username
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Username
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 185}, {255, 31}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							Password
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 230}, {255, 31}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						104
    +						
    +							Domain
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Domain
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						287
    +						{{34, 330}, {255, 50}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Sign in
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Sign in
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 50}, {258, 24}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Account setup assistant
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +					
    +					
    +						
    +						298
    +						{{40, 80}, {240, 44}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Your account is created. Please check your mails in order to validate your account.
    +						
    +						
    +						0
    +						10
    +						0
    +						1
    +						
    +						
    +						NO
    +					
    +					
    +						
    +						287
    +						{{32, 330}, {255, 50}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Check validation
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Check validation
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483329
    +						{{32, 185}, {255, 31}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Password
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483329
    +						{{32, 140}, {255, 31}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Username
    +						
    +							3
    +							MAA
    +							
    +						
    +						YES
    +						17
    +						
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					20
    +				
    +				
    +					
    +						startButton
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						welcomeView
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						choiceView
    +						
    +						
    +					
    +					40
    +				
    +				
    +					
    +						createAccountView
    +						
    +						
    +					
    +					70
    +				
    +				
    +					
    +						connectAccountView
    +						
    +						
    +					
    +					71
    +				
    +				
    +					
    +						externalAccountView
    +						
    +						
    +					
    +					72
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					96
    +				
    +				
    +					
    +						contentView
    +						
    +						
    +					
    +					99
    +				
    +				
    +					
    +						validateAccountView
    +						
    +						
    +					
    +					112
    +				
    +				
    +					
    +						onStartClick:
    +						
    +						
    +						7
    +					
    +					25
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					23
    +				
    +				
    +					
    +						onCancelClick:
    +						
    +						
    +						7
    +					
    +					24
    +				
    +				
    +					
    +						onCreateAccountClick:
    +						
    +						
    +						7
    +					
    +					42
    +				
    +				
    +					
    +						onConnectAccountClick:
    +						
    +						
    +						7
    +					
    +					41
    +				
    +				
    +					
    +						onExternalAccountClick:
    +						
    +						
    +						7
    +					
    +					43
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					86
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					87
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					88
    +				
    +				
    +					
    +						onSignInExternalClick:
    +						
    +						
    +						7
    +					
    +					115
    +				
    +				
    +					
    +						onSignInClick:
    +						
    +						
    +						7
    +					
    +					116
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					85
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					81
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					80
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					82
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					83
    +				
    +				
    +					
    +						onRegisterClick:
    +						
    +						
    +						7
    +					
    +					113
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					84
    +				
    +				
    +					
    +						onCheckValidationClick:
    +						
    +						
    +						7
    +					
    +					114
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					109
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					110
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						12
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						14
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						tabBar
    +					
    +					
    +						16
    +						
    +						
    +						startButton
    +					
    +					
    +						17
    +						
    +						
    +						backButton
    +					
    +					
    +						18
    +						
    +						
    +						cancelButton
    +					
    +					
    +						21
    +						
    +						
    +							
    +							
    +						
    +						
    +						welcomeView
    +					
    +					
    +						19
    +						
    +						
    +						iconImage
    +					
    +					
    +						22
    +						
    +						
    +						label
    +					
    +					
    +						33
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						choiceView
    +					
    +					
    +						37
    +						
    +						
    +						titleImage
    +					
    +					
    +						44
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						createAccountView
    +					
    +					
    +						48
    +						
    +						
    +						titleImage
    +					
    +					
    +						52
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						connectAccountView
    +					
    +					
    +						53
    +						
    +						
    +						titleImage
    +					
    +					
    +						56
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						externalAccountView
    +					
    +					
    +						57
    +						
    +						
    +						titleImage
    +					
    +					
    +						58
    +						
    +						
    +						label
    +					
    +					
    +						59
    +						
    +						
    +						usernameField
    +					
    +					
    +						60
    +						
    +						
    +						passwordField
    +					
    +					
    +						61
    +						
    +						
    +						domainField
    +					
    +					
    +						62
    +						
    +						
    +						signInButton
    +					
    +					
    +						64
    +						
    +						
    +						signInButton
    +					
    +					
    +						66
    +						
    +						
    +						passwordField
    +					
    +					
    +						67
    +						
    +						
    +						label
    +					
    +					
    +						68
    +						
    +						
    +						usernameField
    +					
    +					
    +						73
    +						
    +						
    +						label
    +					
    +					
    +						74
    +						
    +						
    +						usernameField
    +					
    +					
    +						75
    +						
    +						
    +						passwordField
    +					
    +					
    +						76
    +						
    +						
    +						password2Field
    +					
    +					
    +						77
    +						
    +						
    +						registerButton
    +					
    +					
    +						79
    +						
    +						
    +						emailField
    +					
    +					
    +						39
    +						
    +						
    +						externalAccountButton
    +					
    +					
    +						38
    +						
    +						
    +						connectAccountButton
    +					
    +					
    +						36
    +						
    +						
    +						createAccountButton
    +					
    +					
    +						91
    +						
    +						
    +							
    +						
    +						
    +						waitView
    +					
    +					
    +						90
    +						
    +						
    +						activityIndicatorView
    +					
    +					
    +						98
    +						
    +						
    +						contentView
    +					
    +					
    +						101
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						validateAccountView
    +					
    +					
    +						103
    +						
    +						
    +						checkValidationButton
    +					
    +					
    +						105
    +						
    +						
    +						label
    +					
    +					
    +						107
    +						
    +						
    +						titleImage
    +					
    +					
    +						104
    +						
    +						
    +						usernameField
    +					
    +					
    +						106
    +						
    +						
    +						passwordField
    +					
    +				
    +			
    +			
    +				WizardViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			116
    +		
    +		
    +			
    +				
    +					WizardViewController
    +					UIViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onBackClick:
    +							id
    +						
    +						
    +							onCancelClick:
    +							id
    +						
    +						
    +							onCheckValidationClick:
    +							id
    +						
    +						
    +							onConnectAccountClick:
    +							id
    +						
    +						
    +							onCreateAccountClick:
    +							id
    +						
    +						
    +							onExternalAccountClick:
    +							id
    +						
    +						
    +							onRegisterClick:
    +							id
    +						
    +						
    +							onSignInClick:
    +							id
    +						
    +						
    +							onSignInExternalClick:
    +							id
    +						
    +						
    +							onStartClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIView
    +						UIView
    +						UIScrollView
    +						UIView
    +						UIView
    +						UIButton
    +						UIView
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							choiceView
    +							UIView
    +						
    +						
    +							connectAccountView
    +							UIView
    +						
    +						
    +							contentView
    +							UIScrollView
    +						
    +						
    +							createAccountView
    +							UIView
    +						
    +						
    +							externalAccountView
    +							UIView
    +						
    +						
    +							startButton
    +							UIButton
    +						
    +						
    +							validateAccountView
    +							UIView
    +						
    +						
    +							waitView
    +							UIView
    +						
    +						
    +							welcomeView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/WizardViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{550, 101}
    +			{550, 101}
    +			{542, 88}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{320, 154}
    +			{516, 48}
    +			{402, 258}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/LinphoneUI/UICallBar/1/UICallBar.xib b/linphone.ldb/Resources/LinphoneUI/UICallBar/1/UICallBar.xib
    new file mode 100644
    index 000000000..d3cebcc76
    --- /dev/null
    +++ b/linphone.ldb/Resources/LinphoneUI/UICallBar/1/UICallBar.xib
    @@ -0,0 +1,2917 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIActivityIndicatorView
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				301
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 335}, {320, 125}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMTkxOTQ1NDc1NQA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						288
    +						
    +							
    +								
    +								274
    +								{281, 260}
    +								
    +								
    +								
    +								_NS:9
    +								2
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									dialer_alt_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 10}, {107, 54}}
    +								
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								3
    +								
    +									1
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									numpad_one_over.png
    +								
    +								
    +									NSImage
    +									numpad_one_default.png
    +								
    +								
    +									Helvetica-Bold
    +									Helvetica
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 10}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								4
    +								
    +									2
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_two_over.png
    +								
    +								
    +									NSImage
    +									numpad_two_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 10}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								5
    +								
    +									3
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_three_over.png
    +								
    +								
    +									NSImage
    +									numpad_three_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 72}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								6
    +								
    +									4
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_four_over.png
    +								
    +								
    +									NSImage
    +									numpad_four_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 72}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								7
    +								
    +									5
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_five_over.png
    +								
    +								
    +									NSImage
    +									numpad_five_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 72}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								8
    +								
    +									6
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_six_over.png
    +								
    +								
    +									NSImage
    +									numpad_six_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 134}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								9
    +								
    +									7
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_seven_over.png
    +								
    +								
    +									NSImage
    +									numpad_seven_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 134}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								10
    +								
    +									8
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_eight_over.png
    +								
    +								
    +									NSImage
    +									numpad_eight_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 134}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								11
    +								
    +									9
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_nine_over.png
    +								
    +								
    +									NSImage
    +									numpad_nine_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 196}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								12
    +								
    +									Star
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_star_over.png
    +								
    +								
    +									NSImage
    +									numpad_star_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 196}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								13
    +								
    +									0
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_zero_over.png
    +								
    +								
    +									NSImage
    +									numpad_zero_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 196}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								14
    +								
    +									Sharp
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_sharp_over.png
    +								
    +								
    +									NSImage
    +									numpad_sharp_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{20, 57}, {281, 260}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						1
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								292
    +								{{3, 0}, {77, 68}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								16
    +								
    +									Transfer call
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_transfer_over.png
    +								
    +								
    +									NSImage
    +									options_transfer_disabled.png
    +								
    +								
    +									NSImage
    +									options_transfer_default.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{3, 61}, {77, 68}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								17
    +								
    +									Add call
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_add_over.png
    +								
    +								
    +									NSImage
    +									options_add_disabled.png
    +								
    +								
    +									NSImage
    +									options_add_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{240, 205}, {80, 129}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						15
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								290
    +								{{0, 135}, {320, 2000}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								292
    +								{80, 67}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								19
    +								
    +									Video
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									video_off_over.png
    +								
    +								
    +									NSImage
    +									video_off_disabled.png
    +								
    +								
    +									NSImage
    +									video_on_default.png
    +								
    +								
    +									NSImage
    +									video_off_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{20, 20}, {37, 37}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								20
    +								IBCocoaTouchFramework
    +								0
    +							
    +							
    +								
    +								292
    +								{{80, 0}, {80, 67}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								21
    +								
    +									Micro
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									micro_off_over.png
    +								
    +								
    +									NSImage
    +									micro_off_disabled.png
    +								
    +								
    +									NSImage
    +									micro_on_default.png
    +								
    +								
    +									NSImage
    +									micro_off_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{160, 0}, {80, 67}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								22
    +								
    +									Speaker
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									speaker_off_over.png
    +								
    +								
    +									NSImage
    +									speaker_off_disabled.png
    +								
    +								
    +									NSImage
    +									speaker_on_default.png
    +								
    +								
    +									NSImage
    +									speaker_off_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{240, 0}, {80, 67}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								23
    +								
    +									Options
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_over.png
    +								
    +								
    +									NSImage
    +									options_disabled.png
    +								
    +								
    +									NSImage
    +									options_selected.png
    +								
    +								
    +									NSImage
    +									options_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{0, 67}, {105, 68}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								24
    +								
    +									Pause
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									pause_off_over.png
    +								
    +								
    +									NSImage
    +									pause_on_default.png
    +								
    +								
    +									NSImage
    +									pause_off_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483384
    +								{{0, 67}, {105, 68}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								25
    +								
    +									Start Conference
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									conference_over.png
    +								
    +								
    +									NSImage
    +									conference_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{105, 67}, {111, 68}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								26
    +								
    +									Hangup
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									hangup_over.png
    +								
    +								
    +									NSImage
    +									hangup_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{215, 67}, {105, 68}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								27
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									dialer_alt_over.png
    +								
    +								
    +									NSImage
    +									dialer_alt_back_default.png
    +								
    +								
    +									NSImage
    +									dialer_alt_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 325}, {320, 135}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						18
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 460}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				NO
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				301
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 248}, {480, 72}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMTkxOTQ1NDc1NQA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						288
    +						
    +							
    +								
    +								274
    +								{281, 260}
    +								
    +								
    +								
    +								_NS:9
    +								2
    +								NO
    +								IBCocoaTouchFramework
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 10}, {107, 54}}
    +								
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								3
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 10}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								4
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 10}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								5
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 72}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								6
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 72}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								7
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 72}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								8
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 134}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								9
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 134}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								10
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 134}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								11
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 196}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								12
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 196}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								13
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 196}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								14
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +						
    +						{{91, 0}, {281, 260}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						1
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								292
    +								{65, 55}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								16
    +								
    +									Add call
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_transfer_over_landscape.png
    +								
    +								
    +									NSImage
    +									options_transfer_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									options_transfer_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 51}, {65, 55}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								17
    +								
    +									Add call
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_add_over_landscape.png
    +								
    +								
    +									NSImage
    +									options_add_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									options_add_default_landscape.png
    +								
    +								
    +								
    +							
    +						
    +						{{415, 140}, {65, 105}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						15
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								290
    +								{{0, 82}, {480, 2000}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								292
    +								{{65, 0}, {65, 82}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								19
    +								
    +									Video
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									video_off_over_landscape.png
    +								
    +								
    +									NSImage
    +									video_off_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									video_on_default_landscape.png
    +								
    +								
    +									NSImage
    +									video_off_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{79, 20}, {37, 37}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								20
    +								IBCocoaTouchFramework
    +								0
    +							
    +							
    +								
    +								292
    +								{{130, 0}, {65, 82}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								21
    +								
    +									Micro
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									micro_off_over_landscape.png
    +								
    +								
    +									NSImage
    +									micro_off_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									micro_on_default_landscape.png
    +								
    +								
    +									NSImage
    +									micro_off_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{285, 0}, {65, 82}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								22
    +								
    +									Speaker
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									speaker_off_over_landscape.png
    +								
    +								
    +									NSImage
    +									speaker_off_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									speaker_on_default_landscape.png
    +								
    +								
    +									NSImage
    +									speaker_off_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{350, 0}, {65, 82}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								23
    +								
    +									Add call
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_over_landscape.png
    +								
    +								
    +									NSImage
    +									options_disabled_landscape.png
    +								
    +								
    +									NSImage
    +									options_selected_landscape.png
    +								
    +								
    +									NSImage
    +									options_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{65, 82}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								24
    +								
    +									Pause
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									pause_off_over_landscape.png
    +								
    +								
    +									NSImage
    +									pause_on_default_landscape.png
    +								
    +								
    +									NSImage
    +									pause_off_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483384
    +								{65, 82}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								25
    +								
    +									Start Conference
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									conference_over_landscape.png
    +								
    +								
    +									NSImage
    +									conference_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{195, 0}, {90, 82}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								26
    +								
    +									Hangup
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									hangup_over_landscape.png
    +								
    +								
    +									NSImage
    +									hangup_default_landscape.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{415, 0}, {65, 82}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								27
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									dialer_alt_over_landscape.png
    +								
    +								
    +									NSImage
    +									dialer_alt_back_default_landscape.png
    +								
    +								
    +									NSImage
    +									dialer_alt_default_landscape.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 238}, {480, 82}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						18
    +						IBCocoaTouchFramework
    +					
    +				
    +				{480, 320}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				NO
    +				
    +					3
    +					3
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					13
    +				
    +				
    +					
    +						hangupButton
    +						
    +						
    +					
    +					29
    +				
    +				
    +					
    +						conferenceButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						pauseButton
    +						
    +						
    +					
    +					15
    +				
    +				
    +					
    +						optionsButton
    +						
    +						
    +					
    +					19
    +				
    +				
    +					
    +						speakerButton
    +						
    +						
    +					
    +					16
    +				
    +				
    +					
    +						microButton
    +						
    +						
    +					
    +					14
    +				
    +				
    +					
    +						videoButton
    +						
    +						
    +					
    +					17
    +				
    +				
    +					
    +						padView
    +						
    +						
    +					
    +					45
    +				
    +				
    +					
    +						eightButton
    +						
    +						
    +					
    +					75
    +				
    +				
    +					
    +						fiveButton
    +						
    +						
    +					
    +					76
    +				
    +				
    +					
    +						fourButton
    +						
    +						
    +					
    +					77
    +				
    +				
    +					
    +						nineButton
    +						
    +						
    +					
    +					78
    +				
    +				
    +					
    +						oneButton
    +						
    +						
    +					
    +					79
    +				
    +				
    +					
    +						sevenButton
    +						
    +						
    +					
    +					80
    +				
    +				
    +					
    +						sharpButton
    +						
    +						
    +					
    +					81
    +				
    +				
    +					
    +						sixButton
    +						
    +						
    +					
    +					82
    +				
    +				
    +					
    +						starButton
    +						
    +						
    +					
    +					83
    +				
    +				
    +					
    +						threeButton
    +						
    +						
    +					
    +					84
    +				
    +				
    +					
    +						twoButton
    +						
    +						
    +					
    +					85
    +				
    +				
    +					
    +						zeroButton
    +						
    +						
    +					
    +					86
    +				
    +				
    +					
    +						optionsView
    +						
    +						
    +					
    +					92
    +				
    +				
    +					
    +						optionsAddButton
    +						
    +						
    +					
    +					96
    +				
    +				
    +					
    +						optionsTransferButton
    +						
    +						
    +					
    +					97
    +				
    +				
    +					
    +						landscapeView
    +						
    +						
    +					
    +					137
    +				
    +				
    +					
    +						portraitView
    +						
    +						
    +					
    +					138
    +				
    +				
    +					
    +						dialerButton
    +						
    +						
    +					
    +					140
    +				
    +				
    +					
    +						onPadClick:
    +						
    +						
    +						7
    +					
    +					46
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					20
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					60
    +				
    +				
    +					
    +						onConferenceClick:
    +						
    +						
    +						7
    +					
    +					28
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					89
    +				
    +				
    +					
    +						onOptionsAddClick:
    +						
    +						
    +						7
    +					
    +					93
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					91
    +				
    +				
    +					
    +						onOptionsTransferClick:
    +						
    +						
    +						7
    +					
    +					98
    +				
    +				
    +					
    +						onPadClick:
    +						
    +						
    +						7
    +					
    +					132
    +				
    +				
    +					
    +						onConferenceClick:
    +						
    +						
    +						7
    +					
    +					135
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					134
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					129
    +				
    +				
    +					
    +						onOptionsAddClick:
    +						
    +						
    +						7
    +					
    +					130
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					136
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					131
    +				
    +				
    +					
    +						onOptionsTransferClick:
    +						
    +						
    +						7
    +					
    +					133
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						Portrait View
    +					
    +					
    +						5
    +						
    +						
    +						
    +						mask
    +					
    +					
    +						30
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						buttons
    +					
    +					
    +						6
    +						
    +						
    +						dialerButton
    +					
    +					
    +						7
    +						
    +						
    +						hangupButton
    +					
    +					
    +						21
    +						
    +						
    +						conferenceButton
    +					
    +					
    +						8
    +						
    +						
    +						pauseButton
    +					
    +					
    +						10
    +						
    +						
    +						optionsButton
    +					
    +					
    +						9
    +						
    +						
    +						speakerButton
    +					
    +					
    +						11
    +						
    +						
    +						microButton
    +					
    +					
    +						12
    +						
    +						
    +						videoButton
    +					
    +					
    +						31
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						padView
    +					
    +					
    +						59
    +						
    +						
    +						videoWaitView
    +					
    +					
    +						73
    +						
    +						
    +						1
    +					
    +					
    +						72
    +						
    +						
    +						2
    +					
    +					
    +						71
    +						
    +						
    +						3
    +					
    +					
    +						69
    +						
    +						
    +						4
    +					
    +					
    +						70
    +						
    +						
    +						5
    +					
    +					
    +						63
    +						
    +						
    +						6
    +					
    +					
    +						68
    +						
    +						
    +						7
    +					
    +					
    +						67
    +						
    +						
    +						8
    +					
    +					
    +						66
    +						
    +						
    +						9
    +					
    +					
    +						62
    +						
    +						
    +						*
    +					
    +					
    +						64
    +						
    +						
    +						0
    +					
    +					
    +						65
    +						
    +						
    +						#
    +					
    +					
    +						87
    +						
    +						
    +							
    +							
    +						
    +						
    +						optionsView
    +					
    +					
    +						88
    +						
    +						
    +						optionsAddButton
    +					
    +					
    +						90
    +						
    +						
    +						optionsTansferButton
    +					
    +					
    +						99
    +						
    +						
    +						background
    +					
    +					
    +						100
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						Landscape View
    +					
    +					
    +						101
    +						
    +						
    +							
    +							
    +						
    +						
    +						optionsView
    +					
    +					
    +						102
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						padView
    +					
    +					
    +						114
    +						
    +						
    +						background
    +					
    +					
    +						115
    +						
    +						
    +						1
    +					
    +					
    +						116
    +						
    +						
    +						2
    +					
    +					
    +						117
    +						
    +						
    +						3
    +					
    +					
    +						118
    +						
    +						
    +						4
    +					
    +					
    +						119
    +						
    +						
    +						5
    +					
    +					
    +						120
    +						
    +						
    +						6
    +					
    +					
    +						121
    +						
    +						
    +						7
    +					
    +					
    +						122
    +						
    +						
    +						8
    +					
    +					
    +						123
    +						
    +						
    +						9
    +					
    +					
    +						124
    +						
    +						
    +						*
    +					
    +					
    +						125
    +						
    +						
    +						0
    +					
    +					
    +						126
    +						
    +						
    +						#
    +					
    +					
    +						127
    +						
    +						
    +						optionsAddButton
    +					
    +					
    +						128
    +						
    +						
    +						optionsTansferButton
    +					
    +					
    +						103
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						buttons
    +					
    +					
    +						106
    +						
    +						
    +						dialerButton
    +					
    +					
    +						110
    +						
    +						
    +						optionsButton
    +					
    +					
    +						113
    +						
    +						
    +						videoButton
    +					
    +					
    +						112
    +						
    +						
    +						microButton
    +					
    +					
    +						111
    +						
    +						
    +						speakerButton
    +					
    +					
    +						109
    +						
    +						
    +						pauseButton
    +					
    +					
    +						108
    +						
    +						
    +						conferenceButton
    +					
    +					
    +						107
    +						
    +						
    +						hangupButton
    +					
    +					
    +						105
    +						
    +						
    +						videoWaitView
    +					
    +					
    +						104
    +						
    +						
    +						mask
    +					
    +					
    +						141
    +						
    +						
    +						background
    +					
    +					
    +						142
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				UICallBar
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UITransparentView
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIHangUpButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIMicroButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UISpeakerButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIMicroButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIVideoButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIVideoButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UITransparentView
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIHangUpButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UISpeakerButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			142
    +		
    +		
    +			
    +				
    +					TPMultiLayoutViewController
    +					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					UICallBar
    +					TPMultiLayoutViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onConferenceClick:
    +							id
    +						
    +						
    +							onOptionsAddClick:
    +							id
    +						
    +						
    +							onOptionsClick:
    +							id
    +						
    +						
    +							onOptionsTransferClick:
    +							id
    +						
    +						
    +							onPadClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIToggleButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIHangUpButton
    +						UIMicroButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIButton
    +						UIToggleButton
    +						UIButton
    +						UIView
    +						UIView
    +						UIPauseButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UISpeakerButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIVideoButton
    +						UIDigitButton
    +					
    +					
    +						
    +							conferenceButton
    +							UIButton
    +						
    +						
    +							dialerButton
    +							UIToggleButton
    +						
    +						
    +							eightButton
    +							UIDigitButton
    +						
    +						
    +							fiveButton
    +							UIDigitButton
    +						
    +						
    +							fourButton
    +							UIDigitButton
    +						
    +						
    +							hangupButton
    +							UIHangUpButton
    +						
    +						
    +							microButton
    +							UIMicroButton
    +						
    +						
    +							nineButton
    +							UIDigitButton
    +						
    +						
    +							oneButton
    +							UIDigitButton
    +						
    +						
    +							optionsAddButton
    +							UIButton
    +						
    +						
    +							optionsButton
    +							UIToggleButton
    +						
    +						
    +							optionsTransferButton
    +							UIButton
    +						
    +						
    +							optionsView
    +							UIView
    +						
    +						
    +							padView
    +							UIView
    +						
    +						
    +							pauseButton
    +							UIPauseButton
    +						
    +						
    +							sevenButton
    +							UIDigitButton
    +						
    +						
    +							sharpButton
    +							UIDigitButton
    +						
    +						
    +							sixButton
    +							UIDigitButton
    +						
    +						
    +							speakerButton
    +							UISpeakerButton
    +						
    +						
    +							starButton
    +							UIDigitButton
    +						
    +						
    +							threeButton
    +							UIDigitButton
    +						
    +						
    +							twoButton
    +							UIDigitButton
    +						
    +						
    +							videoButton
    +							UIVideoButton
    +						
    +						
    +							zeroButton
    +							UIDigitButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICallBar.h
    +					
    +				
    +				
    +					UIDigitButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIDigitButton.h
    +					
    +				
    +				
    +					UIHangUpButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIHangUpButton.h
    +					
    +				
    +				
    +					UILongTouchButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UILongTouchButton.h
    +					
    +				
    +				
    +					UIMicroButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIMicroButton.h
    +					
    +				
    +				
    +					UIPauseButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIPauseButton.h
    +					
    +				
    +				
    +					UISpeakerButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UISpeakerButton.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +				
    +					UITransparentView
    +					UIView
    +					
    +						IBProjectSource
    +						./Classes/UITransparentView.h
    +					
    +				
    +				
    +					UIVideoButton
    +					UIToggleButton
    +					
    +						waitView
    +						UIActivityIndicatorView
    +					
    +					
    +						waitView
    +						
    +							waitView
    +							UIActivityIndicatorView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIVideoButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{209, 136}
    +			{130, 163}
    +			{209, 136}
    +			{130, 163}
    +			{209, 136}
    +			{130, 163}
    +			{530, 526}
    +			{209, 136}
    +			{130, 163}
    +			{209, 136}
    +			{130, 163}
    +			{222, 136}
    +			{180, 163}
    +			{222, 136}
    +			{180, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{155, 137}
    +			{129, 109}
    +			{155, 137}
    +			{129, 109}
    +			{155, 137}
    +			{129, 109}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{155, 137}
    +			{129, 109}
    +			{155, 137}
    +			{129, 109}
    +			{155, 137}
    +			{129, 109}
    +			{209, 136}
    +			{130, 163}
    +			{209, 136}
    +			{130, 163}
    +			{209, 136}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +			{160, 134}
    +			{130, 163}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/1/UICallBar~ipad.xib b/linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/1/UICallBar~ipad.xib
    new file mode 100644
    index 000000000..4b3c2fdd3
    --- /dev/null
    +++ b/linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/1/UICallBar~ipad.xib
    @@ -0,0 +1,2835 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIActivityIndicatorView
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBIPadFramework
    +			
    +			
    +				IBFirstResponder
    +				IBIPadFramework
    +			
    +			
    +				
    +				301
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 680}, {1024, 68}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMTkxOTQ1NDc1NQA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						288
    +						
    +							
    +								
    +								274
    +								{281, 260}
    +								
    +								
    +								
    +								_NS:9
    +								2
    +								NO
    +								IBIPadFramework
    +								
    +									NSImage
    +									dialer_alt_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 10}, {107, 54}}
    +								
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								3
    +								IBIPadFramework
    +								0
    +								0
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									numpad_one_over.png
    +								
    +								
    +									NSImage
    +									numpad_one_default.png
    +								
    +								
    +									Helvetica-Bold
    +									Helvetica
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 10}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								4
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_two_over.png
    +								
    +								
    +									NSImage
    +									numpad_two_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 10}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								5
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_three_over.png
    +								
    +								
    +									NSImage
    +									numpad_three_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 72}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								6
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_four_over.png
    +								
    +								
    +									NSImage
    +									numpad_four_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 72}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								7
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_five_over.png
    +								
    +								
    +									NSImage
    +									numpad_five_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 72}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								8
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_six_over.png
    +								
    +								
    +									NSImage
    +									numpad_six_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 134}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								9
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_seven_over.png
    +								
    +								
    +									NSImage
    +									numpad_seven_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 134}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								10
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_eight_over.png
    +								
    +								
    +									NSImage
    +									numpad_eight_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 134}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								11
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_nine_over.png
    +								
    +								
    +									NSImage
    +									numpad_nine_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 196}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								12
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_star_over.png
    +								
    +								
    +									NSImage
    +									numpad_star_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 196}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								13
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_zero_over.png
    +								
    +								
    +									NSImage
    +									numpad_zero_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 196}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								14
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +									NSImage
    +									numpad_sharp_over.png
    +								
    +								
    +									NSImage
    +									numpad_sharp_default.png
    +								
    +								
    +								
    +							
    +						
    +						{{372, 244}, {281, 260}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						1
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								292
    +								{81, 69}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								16
    +								
    +									Add call
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_transfer_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_transfer_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_transfer_default_landscape~ipad.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 65}, {81, 69}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								17
    +								
    +									Add call
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_add_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_add_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_add_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{239, 552}, {81, 133}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						15
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								290
    +								{{0, 85}, {1024, 2000}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBIPadFramework
    +							
    +							
    +								
    +								292
    +								{80, 85}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								19
    +								
    +									Video
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									video_off_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									video_off_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									video_on_default_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									video_off_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{20, 20}, {37, 37}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								20
    +								IBIPadFramework
    +								0
    +							
    +							
    +								
    +								292
    +								{{80, 0}, {80, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								21
    +								
    +									Micro
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									micro_off_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									micro_off_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									micro_on_default_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									micro_off_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{160, 0}, {80, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								22
    +								
    +									Speaker
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									speaker_off_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_off_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_on_default_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_off_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{240, 0}, {80, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								23
    +								
    +									Add call
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_selected_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									options_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{701, 0}, {87, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								24
    +								
    +									Pause
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									pause_off_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									pause_on_default_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									pause_off_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483384
    +								{{701, 0}, {87, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								25
    +								
    +									Start Conference
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									conference_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									conference_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{875, 0}, {149, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								26
    +								
    +									Hangup
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									hangup_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									hangup_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{788, 0}, {87, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								27
    +								
    +									Back
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									dialer_alt_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									dialer_alt_back_default_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									dialer_alt_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 663}, {1024, 85}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						18
    +						IBIPadFramework
    +					
    +				
    +				{1024, 748}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				NO
    +				
    +					3
    +					3
    +				
    +				IBIPadFramework
    +			
    +			
    +				
    +				301
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 936}, {768, 68}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMTkxOTQ1NDc1NQA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						288
    +						
    +							
    +								
    +								274
    +								{281, 260}
    +								
    +								
    +								
    +								_NS:9
    +								2
    +								NO
    +								IBIPadFramework
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 10}, {107, 54}}
    +								
    +								
    +								
    +								
    +									1
    +									MC40MDAwMDAwMSAxIDEgMAA
    +								
    +								NO
    +								NO
    +								3
    +								
    +									1
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 10}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								4
    +								
    +									2
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 10}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								5
    +								
    +									3
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 72}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								6
    +								
    +									4
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 72}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								7
    +								
    +									5
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 72}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								8
    +								
    +									6
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 134}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								9
    +								
    +									7
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 134}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								10
    +								
    +									8
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 134}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								11
    +								
    +									9
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{-20, 196}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								12
    +								
    +									Star
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{87, 196}, {106, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								13
    +								
    +									0
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{193, 196}, {107, 54}}
    +								
    +								
    +								
    +								NO
    +								NO
    +								14
    +								
    +									Sharp
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +						
    +						{{244, 372}, {281, 260}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						1
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								292
    +								{81, 69}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								16
    +								
    +									Transfer call
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_transfer_over~ipad.png
    +								
    +								
    +									NSImage
    +									options_transfer_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									options_transfer_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{0, 64}, {81, 69}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								17
    +								
    +									Add call
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_add_over~ipad.png
    +								
    +								
    +									NSImage
    +									options_add_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									options_add_default~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{239, 809}, {81, 133}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						15
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						
    +							
    +								
    +								290
    +								{{0, 85}, {768, 2000}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBIPadFramework
    +							
    +							
    +								
    +								292
    +								{80, 85}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								19
    +								
    +									Video
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									video_off_over~ipad.png
    +								
    +								
    +									NSImage
    +									video_off_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									video_on_default~ipad.png
    +								
    +								
    +									NSImage
    +									video_off_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483356
    +								{{20, 20}, {37, 37}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								20
    +								IBIPadFramework
    +								0
    +							
    +							
    +								
    +								292
    +								{{80, 0}, {80, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								21
    +								
    +									Micro
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									micro_off_over~ipad.png
    +								
    +								
    +									NSImage
    +									micro_off_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									micro_on_default~ipad.png
    +								
    +								
    +									NSImage
    +									micro_off_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{160, 0}, {80, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								22
    +								
    +									Speaker
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									speaker_off_over~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_off_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_on_default~ipad.png
    +								
    +								
    +									NSImage
    +									speaker_off_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								292
    +								{{240, 0}, {80, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								23
    +								
    +									Options
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									options_over~ipad.png
    +								
    +								
    +									NSImage
    +									options_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									options_selected~ipad.png
    +								
    +								
    +									NSImage
    +									options_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{445, 0}, {87, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								24
    +								
    +									Pause
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									pause_off_over~ipad.png
    +								
    +								
    +									NSImage
    +									pause_on_default~ipad.png
    +								
    +								
    +									NSImage
    +									pause_off_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483384
    +								{{445, 0}, {87, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								25
    +								
    +									Start Conference
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									conference_over~ipad.png
    +								
    +								
    +									NSImage
    +									conference_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{619, 0}, {149, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								26
    +								
    +									Hangup
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									hangup_over~ipad.png
    +								
    +								
    +									NSImage
    +									hangup_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								264
    +								{{532, 0}, {87, 85}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								27
    +								
    +									Back
    +								
    +								IBIPadFramework
    +								0
    +								0
    +								NO
    +								NO
    +								
    +								
    +									NSImage
    +									dialer_alt_over~ipad.png
    +								
    +								
    +									NSImage
    +									dialer_alt_back_default~ipad.png
    +								
    +								
    +									NSImage
    +									dialer_alt_default~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 919}, {768, 85}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						18
    +						IBIPadFramework
    +					
    +				
    +				{768, 1004}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				NO
    +				IBIPadFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						conferenceButton
    +						
    +						
    +					
    +					64
    +				
    +				
    +					
    +						dialerButton
    +						
    +						
    +					
    +					65
    +				
    +				
    +					
    +						eightButton
    +						
    +						
    +					
    +					66
    +				
    +				
    +					
    +						fiveButton
    +						
    +						
    +					
    +					67
    +				
    +				
    +					
    +						fourButton
    +						
    +						
    +					
    +					68
    +				
    +				
    +					
    +						hangupButton
    +						
    +						
    +					
    +					69
    +				
    +				
    +					
    +						landscapeView
    +						
    +						
    +					
    +					70
    +				
    +				
    +					
    +						microButton
    +						
    +						
    +					
    +					71
    +				
    +				
    +					
    +						nineButton
    +						
    +						
    +					
    +					72
    +				
    +				
    +					
    +						oneButton
    +						
    +						
    +					
    +					73
    +				
    +				
    +					
    +						optionsAddButton
    +						
    +						
    +					
    +					74
    +				
    +				
    +					
    +						optionsButton
    +						
    +						
    +					
    +					75
    +				
    +				
    +					
    +						optionsTransferButton
    +						
    +						
    +					
    +					76
    +				
    +				
    +					
    +						optionsView
    +						
    +						
    +					
    +					77
    +				
    +				
    +					
    +						padView
    +						
    +						
    +					
    +					78
    +				
    +				
    +					
    +						pauseButton
    +						
    +						
    +					
    +					79
    +				
    +				
    +					
    +						portraitView
    +						
    +						
    +					
    +					80
    +				
    +				
    +					
    +						sevenButton
    +						
    +						
    +					
    +					81
    +				
    +				
    +					
    +						sharpButton
    +						
    +						
    +					
    +					82
    +				
    +				
    +					
    +						sixButton
    +						
    +						
    +					
    +					83
    +				
    +				
    +					
    +						speakerButton
    +						
    +						
    +					
    +					84
    +				
    +				
    +					
    +						starButton
    +						
    +						
    +					
    +					85
    +				
    +				
    +					
    +						threeButton
    +						
    +						
    +					
    +					86
    +				
    +				
    +					
    +						twoButton
    +						
    +						
    +					
    +					87
    +				
    +				
    +					
    +						videoButton
    +						
    +						
    +					
    +					88
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					89
    +				
    +				
    +					
    +						zeroButton
    +						
    +						
    +					
    +					90
    +				
    +				
    +					
    +						onPadClick:
    +						
    +						
    +						7
    +					
    +					92
    +				
    +				
    +					
    +						onConferenceClick:
    +						
    +						
    +						7
    +					
    +					93
    +				
    +				
    +					
    +						onOptionsClick:
    +						
    +						
    +						7
    +					
    +					91
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					62
    +				
    +				
    +					
    +						onOptionsAddClick:
    +						
    +						
    +						7
    +					
    +					94
    +				
    +				
    +					
    +						onOptionsTransferClick:
    +						
    +						
    +						7
    +					
    +					95
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					63
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						2
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						Landscape View
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						Portrait View
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +						
    +						
    +						optionsView
    +					
    +					
    +						5
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						padView
    +					
    +					
    +						6
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						buttons
    +					
    +					
    +						7
    +						
    +						
    +						mask
    +					
    +					
    +						8
    +						
    +						
    +						background
    +					
    +					
    +						9
    +						
    +						
    +						videoWaitView
    +					
    +					
    +						10
    +						
    +						
    +						dialerButton
    +					
    +					
    +						11
    +						
    +						
    +						hangupButton
    +					
    +					
    +						12
    +						
    +						
    +						conferenceButton
    +					
    +					
    +						13
    +						
    +						
    +						pauseButton
    +					
    +					
    +						14
    +						
    +						
    +						optionsButton
    +					
    +					
    +						15
    +						
    +						
    +						speakerButton
    +					
    +					
    +						16
    +						
    +						
    +						microButton
    +					
    +					
    +						17
    +						
    +						
    +						videoButton
    +					
    +					
    +						18
    +						
    +						
    +						background
    +					
    +					
    +						19
    +						
    +						
    +						1
    +					
    +					
    +						20
    +						
    +						
    +						2
    +					
    +					
    +						21
    +						
    +						
    +						3
    +					
    +					
    +						22
    +						
    +						
    +						4
    +					
    +					
    +						23
    +						
    +						
    +						5
    +					
    +					
    +						24
    +						
    +						
    +						6
    +					
    +					
    +						25
    +						
    +						
    +						7
    +					
    +					
    +						26
    +						
    +						
    +						8
    +					
    +					
    +						27
    +						
    +						
    +						9
    +					
    +					
    +						28
    +						
    +						
    +						*
    +					
    +					
    +						29
    +						
    +						
    +						0
    +					
    +					
    +						30
    +						
    +						
    +						#
    +					
    +					
    +						31
    +						
    +						
    +						optionsAddButton
    +					
    +					
    +						32
    +						
    +						
    +						optionsTansferButton
    +					
    +					
    +						33
    +						
    +						
    +						mask
    +					
    +					
    +						34
    +						
    +						
    +							
    +							
    +						
    +						
    +						optionsView
    +					
    +					
    +						35
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						padView
    +					
    +					
    +						36
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						buttons
    +					
    +					
    +						37
    +						
    +						
    +						background
    +					
    +					
    +						38
    +						
    +						
    +						dialerButton
    +					
    +					
    +						39
    +						
    +						
    +						optionsButton
    +					
    +					
    +						40
    +						
    +						
    +						videoButton
    +					
    +					
    +						41
    +						
    +						
    +						microButton
    +					
    +					
    +						42
    +						
    +						
    +						speakerButton
    +					
    +					
    +						43
    +						
    +						
    +						pauseButton
    +					
    +					
    +						44
    +						
    +						
    +						conferenceButton
    +					
    +					
    +						45
    +						
    +						
    +						hangupButton
    +					
    +					
    +						46
    +						
    +						
    +						videoWaitView
    +					
    +					
    +						47
    +						
    +						
    +						#
    +					
    +					
    +						48
    +						
    +						
    +						0
    +					
    +					
    +						49
    +						
    +						
    +						*
    +					
    +					
    +						50
    +						
    +						
    +						9
    +					
    +					
    +						51
    +						
    +						
    +						8
    +					
    +					
    +						52
    +						
    +						
    +						7
    +					
    +					
    +						53
    +						
    +						
    +						6
    +					
    +					
    +						54
    +						
    +						
    +						5
    +					
    +					
    +						55
    +						
    +						
    +						4
    +					
    +					
    +						56
    +						
    +						
    +						3
    +					
    +					
    +						57
    +						
    +						
    +						2
    +					
    +					
    +						58
    +						
    +						
    +						1
    +					
    +					
    +						59
    +						
    +						
    +						background
    +					
    +					
    +						60
    +						
    +						
    +						optionsAddButton
    +					
    +					
    +						61
    +						
    +						
    +						optionsTansferButton
    +					
    +				
    +			
    +			
    +				UICallBar
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIHangUpButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UISpeakerButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIMicroButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIVideoButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UITransparentView
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UITransparentView
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIToggleButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIVideoButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIMicroButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UISpeakerButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIHangUpButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIDigitButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			95
    +		
    +		
    +			
    +				
    +					TPMultiLayoutViewController
    +					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					UICallBar
    +					TPMultiLayoutViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onConferenceClick:
    +							id
    +						
    +						
    +							onOptionsAddClick:
    +							id
    +						
    +						
    +							onOptionsClick:
    +							id
    +						
    +						
    +							onOptionsTransferClick:
    +							id
    +						
    +						
    +							onPadClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIToggleButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIHangUpButton
    +						UIMicroButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIButton
    +						UIToggleButton
    +						UIButton
    +						UIView
    +						UIView
    +						UIPauseButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UISpeakerButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIDigitButton
    +						UIVideoButton
    +						UIDigitButton
    +					
    +					
    +						
    +							conferenceButton
    +							UIButton
    +						
    +						
    +							dialerButton
    +							UIToggleButton
    +						
    +						
    +							eightButton
    +							UIDigitButton
    +						
    +						
    +							fiveButton
    +							UIDigitButton
    +						
    +						
    +							fourButton
    +							UIDigitButton
    +						
    +						
    +							hangupButton
    +							UIHangUpButton
    +						
    +						
    +							microButton
    +							UIMicroButton
    +						
    +						
    +							nineButton
    +							UIDigitButton
    +						
    +						
    +							oneButton
    +							UIDigitButton
    +						
    +						
    +							optionsAddButton
    +							UIButton
    +						
    +						
    +							optionsButton
    +							UIToggleButton
    +						
    +						
    +							optionsTransferButton
    +							UIButton
    +						
    +						
    +							optionsView
    +							UIView
    +						
    +						
    +							padView
    +							UIView
    +						
    +						
    +							pauseButton
    +							UIPauseButton
    +						
    +						
    +							sevenButton
    +							UIDigitButton
    +						
    +						
    +							sharpButton
    +							UIDigitButton
    +						
    +						
    +							sixButton
    +							UIDigitButton
    +						
    +						
    +							speakerButton
    +							UISpeakerButton
    +						
    +						
    +							starButton
    +							UIDigitButton
    +						
    +						
    +							threeButton
    +							UIDigitButton
    +						
    +						
    +							twoButton
    +							UIDigitButton
    +						
    +						
    +							videoButton
    +							UIVideoButton
    +						
    +						
    +							zeroButton
    +							UIDigitButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICallBar.h
    +					
    +				
    +				
    +					UIDigitButton
    +					UILongTouchButton
    +					
    +						addressField
    +						UITextField
    +					
    +					
    +						addressField
    +						
    +							addressField
    +							UITextField
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIDigitButton.h
    +					
    +				
    +				
    +					UIHangUpButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIHangUpButton.h
    +					
    +				
    +				
    +					UILongTouchButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UILongTouchButton.h
    +					
    +				
    +				
    +					UIMicroButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIMicroButton.h
    +					
    +				
    +				
    +					UIPauseButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIPauseButton.h
    +					
    +				
    +				
    +					UISpeakerButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UISpeakerButton.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +				
    +					UITransparentView
    +					UIView
    +					
    +						IBProjectSource
    +						./Classes/UITransparentView.h
    +					
    +				
    +				
    +					UIVideoButton
    +					UIToggleButton
    +					
    +						waitView
    +						UIActivityIndicatorView
    +					
    +					
    +						waitView
    +						
    +							waitView
    +							UIActivityIndicatorView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIVideoButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBIPadFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{530, 526}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{297, 170}
    +			{297, 170}
    +			{297, 170}
    +			{297, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{159, 170}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{210, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{220, 113}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{162, 137}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{173, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{160, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +			{162, 170}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/LinphoneUI/UICallCell/1/UICallCell.xib b/linphone.ldb/Resources/LinphoneUI/UICallCell/1/UICallCell.xib
    new file mode 100644
    index 000000000..e17f7df5b
    --- /dev/null
    +++ b/linphone.ldb/Resources/LinphoneUI/UICallCell/1/UICallCell.xib
    @@ -0,0 +1,5147 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUILabel
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				290
    +				
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{{0, 63}, {320, 250}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									3
    +									MCAwAA
    +								
    +								NO
    +								
    +									
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MQA
    +								
    +								
    +									1
    +									MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +								
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								293
    +								{{0, 48}, {320, 262}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_shadow.png
    +								
    +							
    +							
    +								
    +								293
    +								{{80, 65}, {160, 170}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +								NO
    +								
    +									Contact's avatar
    +									
    +									
    +								
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									avatar_unknown.png
    +								
    +							
    +						
    +						{320, 300}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{320, 63}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									cell_call_first.png
    +								
    +							
    +							
    +								
    +								290
    +								{320, 63}
    +								
    +								
    +								
    +								_NS:9
    +								0.0
    +								NO
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								290
    +								{{10, 0}, {206, 51}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								NO
    +								7
    +								NO
    +								
    +									Contact's name
    +									
    +								
    +								IBCocoaTouchFramework
    +								0102030405
    +								
    +									10
    +									
    +										549453824
    +										{256, 256}
    +										
    +											
    +												
    +												
    +													
    +														TU0AKgAEAAh1eIH/cHJ5/3Bzff9vcXX/bnB3/3Byef9vcXX/bG51/2xudf9ucHf/cHN9/2dqdP9ucXv/
    +cHJ5/3Bzff9qbHP/b3F1/3N1fP9sbnX/am13/2ptd/9sbnX/am13/3l7gf91d33/bG95/2xudf9sb3n/
    +bG95/2dqdP9qbXf/c3V8/3Bzff93eoP/bG51/3Bzff9sbnX/dXd9/2dqdP9qbHP/bG51/2psc/9sb3n/
    +am13/2ptd/9sb3n/bG51/3V3ff97fYP/YmVu/25xe/9sb3n/c3Z//2psc/9zdXz/cHN9/2dqcf9qbHP/
    +YmVu/2dqdP9nanH/am13/2xvef91eIH/Z2p0/25xe/91d33/bG51/25wd/92eHz/dXd9/29xdf9ucHf/
    +eHl9/2xudf9ucHf/bG95/3Bzff9sb3n/bnF7/3l7gf9zdn//c3Z//3N2f/91eIH/c3V8/3Byef9nanT/
    +bnB3/3Byef91d33/dHZ8/2psc/9sbnX/Z2p0/3N1fP9qbXf/cXN6/2psdf9wcnv/dnd9/25xe/9ucHf/
    +bnB3/2ptd/92eH//a254/3Fzev9sb3n/cHJ5/25wd/9ucHf/cHN9/25wd/9wcnn/dnh8/2xudf93eX//
    +dXd9/2dqdP9ucXv/dXd9/3N2f/9zdXz/Z2px/2xudf9ucXv/am13/3Bzff9zdXz/cHN9/2psc/9qbXf/
    +bG51/2Jlbv9qbXf/aGp0/2hqcP9rbnX/cnV//29yfP9ucXv/bnF7/25xe/9zdn//bXB1/2xvef9qbXb/
    +Zmly/2Jlbv9kZ3H/Zmhu/2Rncf9kZ3H/Zmlz/2Zpc/9kZ3H/bnB3/2Jlbv9nanT/ZGdx/2Zobv9zdXz/
    +ZGdx/2xvef9maXP/foCG/2xvef9ucXv/bG95/25wd/9wc33/b3F1/3l8hv91eIH/cHN9/3N1fP9sb3n/
    +d3qD/25wd/9zdn//cHJ5/3Bzff9wcnn/cHN9/3Bzff9ucXv/d3l//2ptd/9ucXv/c3Z//3N2f/9wcnn/
    +bnF7/3N2f/9ucHf/cHJ5/3Bzff9sb3n/cHJ5/25xe/9wc33/bnF7/3Byef9zdXz/bnB3/25xe/9zdXz/
    +d3l//3N2f/9sb3n/bnB3/3Bzff9sb3n/bnF7/25wd/9wcnn/cHJ5/3Byef9sbnX/c3V8/2psc/9zdXz/
    +dnh8/3Byef9kZ3H/am13/25xe/9sb3n/bnF7/25xe/9zdn//Z2p0/2xudf95e4H/Z2p0/2xvef9ucXv/
    +bG51/2psc/9ucXv/cHJ5/2psc/9qbXf/Z2px/2ptd/9qbHP/cHN9/2ptd/9sbnX/bG51/3V3ff9wcnn/
    +c3V8/3Byef9wc33/d3l//29xdf9zdXz/bnB3/2ptd/9qbXf/Z2px/2Zpc/9kZ3H/am13/2xvef9nanH/
    +cHJ5/29xdf9wcnn/Z2px/2xudf9zdXz/b3F1/25wd/9ucHf/bnB3/25wd/9+gIb/eHl9/3N1fP9wcnn/
    +cHJ5/3Byef9qbHP/bG51/3Z4fP9wcnn/dXiB/2xudf9ucXv/bG51/3Byef9nanH/ZGdx/2Zpc/9nanH/
    +Z2px/2Zobv9iZW7/Zmhu/2Zobv9qbXf/c3Z//1lcZf9maXP/Z2p0/3Byef9kZ3H/bG95/2xvef9qbHP/
    +am13/2Zpc/9qbXf/bG51/2xvef9wc33/dXd9/2dqdP9sb3n/dXd9/2dqdP9ucHf/c3V8/3V3ff9qbXf/
    +bnF7/3d5f/9ucHf/bG51/2xudf9wc33/bG51/2xudf91d33/bnB3/3Byef9wcnn/cHJ5/29xdf9ucHf/
    +Z2p0/3Byef9wc33/eXuB/3d5f/9sb3n/bnF7/2psc/9zdXz/b3F5/29yev9qbHX/bnB4/3d5f/9wcnn/
    +bnB3/2xudf9ucHf/dHZ7/25wd/9ucXn/bW92/3Byef9ucHf/bG51/3N1fP9ucXv/cHN9/3V3ff9qbHP/
    +dnh8/3V3ff9nanH/bnB3/3V3ff9ucHf/cHJ5/2Zpc/9qbXf/bG95/2xudf9sb3n/dXd9/3Z4fP9vcXX/
    +bnF7/25wd/9nanH/c3Z//3Bzff9wcnn/bnB3/3R2ff9ucXr/bnF7/3Bzff9sb3n/dXd9/25xev90dnz/
    +dXiA/3V4gP9wcnn/c3Z//3Bzff9ucXv/cHN9/3N2f/9zdn//bG95/3d6g/9sb3n/c3Z//3Bzff9ucHf/
    +d3l//2dqcf9qbXf/Z2p0/3d6g/9sbnX/am13/2Zpc/9nanT/am13/2Zobv9zdXz/bnB3/2dqdP9kZ3H/
    +ZGZs/3Byef9gY2z/Z2px/2Rncf9maG7/YGNs/2Zobv9kZ3H/Zmhu/2ptd/9gY2z/ZGdx/2Rncf9nanT/
    +ZGdx/2psc/9maXP/ZGdx/2Zobv9maG7/YmVu/2Zpc/9qbHP/am13/2psc/9ucXv/cHN9/2xudf9nanT/
    +bnF7/3V3ff9wcnn/bnB3/29xdf9zdXz/bG95/3Bzff9sb3n/c3Z//3N2f/91eIH/bnF7/3V4gf9ucXv/
    +dXiB/3l7gf9zdn//am13/3Byef9zdn//cHN9/3N2f/91eIH/e36H/3Bzff9wc33/foCG/3V4gf93eoP/
    +eXuB/3N2f/9ucXv/dXiB/3V3ff9vcXX/c3V8/25wd/91d33/c3V8/3d5f/9wc33/cHJ5/25wd/93eX//
    +c3Z//3Bzff9ucXv/cHN9/3V3ff9vcXX/c3V8/25wd/9vcXX/bnB3/2xvef9nanT/Zmhu/2ptd/9sb3n/
    +Zmlz/3Byef9tb3P/bnF7/2xudf9ucHf/dXd9/2xvef9sb3n/bG95/25xe/9ucXv/e36H/3l7gf9zdn//
    +c3Z//3V4gf93eoP/c3Z//3N2f/9+gYr/eXyG/4GDiv9wc33/d3qD/3N1fP93eX//cHJ5/3Bzff9wc33/
    +bnF7/25xe/9ucHf/b3F1/3Byef9ucXv/eXuB/36Ahv9nanT/c3Z//3Byef93eX//bW9z/3Z4fP91d33/
    +bnB3/25xe/9nanT/bG95/25wd/9ucXv/dXiB/3l8hv9ucHf/c3Z//3V4gf9ucHf/dXiB/3N2f/91d33/
    +am13/29xdf91d33/bnB3/2xvef9ucXv/d3qD/25xe/9wcnn/c3Z//25wd/9ucHf/cHJ5/3V3ff9vcXX/
    +cHJ5/2xudf9vcXX/bG51/3Byef9ucXj/aGty/21vc/9nanT/cHN9/25wd/9vcnr/a212/21wev91d33/
    +am13/2xudf9maXP/am13/3R2e/9tb3b/bnF6/2xudf9wcnn/am13/2xudf9ucXv/bG95/25xe/9wc33/
    +ZGdx/3Byef9ucHf/YmVu/2psc/9wc33/bnF7/2ptd/9maG7/bW9z/25wd/9sbnX/c3V8/3d5f/91d33/
    +b3F1/25xe/9ucXv/Z2p0/3V3ff9wc33/bnF7/21vdv9zdnz/cHJ5/25weP9zdXz/bnF7/3l7gf9xc3r/
    +d3mA/3d5f/9zdX3/b3F1/3N1fP9sbnX/bG51/25wd/9sbnX/cHJ5/2psc/92eHz/amxz/3Bzff9ucHf/
    +bW9z/3h5ff9nanH/bG51/2Jlbv91eIH/amxz/2Zpc/9iZW7/YmVu/2dqdP9maG7/c3Z//3N1fP9qbXf/
    +Z2p0/2dqdP91eIH/ZGdx/2xudf9nanT/am13/2ptd/9ucXv/bnF7/21vc/91eIH/Zmlz/25wd/9wcnn/
    +bnB3/25wd/9vcXX/cHJ5/21vc/9sbnX/bG95/2dqdP9sbnX/bG51/2xvef9sbnX/bnF7/25xe/9nanT/
    +bnF7/3Bzff91d33/cHN9/2ptd/9qbHP/bnF7/2Zpc/9qbXf/YmVu/2ptd/9qbHP/bG95/2Rncf9ucXv/
    +ZGdx/25xe/9zdXz/bG95/2Rncf9tb3P/bG95/25wd/91d33/dXiB/3t9g/9ucHf/c3V8/3t9g/9ucXv/
    +dXiB/3d5f/9wcnn/bnF7/3N2f/95e4H/cHN9/3V4gf9ucXv/d3qD/3V4gf93eX//c3Z//3N1fP9zdXz/
    +d3l//3Bzff9ucXv/bnF7/3N1fP9zdXz/bG51/2xvef9nanH/Z2px/2dqdP9qbHP/YmVu/2BjbP9sbnX/
    +bG51/2Rncf9sb3n/bG51/2ptd/9maXP/Z2px/25xe/9qbHP/Zmlz/2Zpc/9qbHP/Z2p0/3V4gf91d33/
    +cHN9/25wd/9sb3n/am13/2Zpc/9sb3n/dXd9/3Bzff91eIH/bW9z/25xe/9sbnX/c3V8/21vc/9sbnX/
    +cHN9/2ptd/9qbXf/bnF7/2ptd/9sbnX/bG51/3Byef93eX//ZGdx/2xvef9ucXv/dXd9/2xudf92eHz/
    +dXd9/25wd/9sbnX/amxz/2xvef9vcXX/bnB3/3Bzff93eoP/bG95/3Bzff9zdn//bG95/3N2f/9wc33/
    +dXiB/25xe/9zdXz/e32D/3Bzff9ucHf/bnF7/3V3ff9vcXX/b3F1/3N1fP9tb3P/bG51/3Byef9zdXz/
    +bW9z/3Byef9nanH/amxz/2psc/9ucHf/bnB3/2psc/9sbnX/amxz/3V3fP9ucHj/bW93/2psdf9vcnr/
    +dXd8/25wd/9qbXf/Z2p0/25xe/9zdoD/bXB6/3J0fP9wcnf/c3V8/29xdf9ucHf/bnF7/3Byef9zdXz/
    +cHN9/2ptd/91d33/eHl9/2psc/9zdXz/dnh8/3N1fP9ucXv/Zmhu/29xdf9ucHf/bnB3/25wd/92eHz/
    +cHJ5/2xudf9wcnn/bG95/2Rncf9wc33/bnF7/2ttdP9maXP/bnF5/2lsdf9laHL/am13/2ptd/9zdXz/
    +bm92/3R3fv91d33/bnB3/21vc/9zdXz/bW9z/3Byef9ucHf/bnB3/3N1fP9nanH/d3l//25wd/97fYP/
    +c3Z//3Bzff97fYP/bnF7/21vc/9maG7/eXuB/2ptd/9qbXf/ZGdx/2Zobv9nanT/Z2px/3N2f/9wcnn/
    +am13/2ptd/9qbXf/d3qD/2Rncf9qbXf/Z2p0/2xvef9qbXf/Z2p0/2ptd/9maXP/d3l//2Rncf9qbXf/
    +bnB3/2ptd/9qbXf/bG51/25xe/9tb3P/bnB3/25wd/9qbHP/bG51/2xudf9qbXf/bG51/3N1fP9zdXz/
    +bG51/3N1fP91d33/dXd9/25xe/9sbnX/bW9z/3Bzff9maXP/bG51/2Rncf9nanT/Z2px/2ptd/9nanT/
    +bnF7/2dqdP9wc33/cHJ5/2psc/9dYGr/bG51/2ptd/9sb3n/c3V8/2ptd/91eIH/bG51/2ptd/9zdn//
    +am13/25xe/9sb3n/Z2p0/2psc/9nanT/bG95/2xudf9ucXv/amxz/2xvef9sb3n/cHN9/2dqcf9maXP/
    +Zmlz/25xe/9sb3n/am13/2ptd/9nanT/d3l//25xe/9zdn//bnB3/25xe/9wc33/cHN9/25xe/9qbXf/
    +cHJ5/3Bzff9sb3n/cHN9/25wd/9wcnn/bnB3/29xdf94eX3/cHN9/25wd/9wc33/bnB3/25xe/97fYP/
    +dXiB/3V3ff9sb3n/c3V8/3Byef9sbnX/c3V8/3V3ff9ucXv/c3V8/2psc/9ucXv/am13/3N1fP9sbnX/
    +bG51/3V3ff9ucHf/cHJ5/3Byef9sb3n/bnB3/25wd/92eHz/gIKG/25wd/91d33/c3V8/3d5f/9ucHf/
    +dnh8/3Z4fP9ucHf/bG51/2xudf9sbnX/bG51/2ptd/9sb3n/dXiB/2Zpc/9sb3n/Zmlz/2Jlbv9qbXf/
    +Z2p0/2dqdP9iZW7/YGNs/2xvef9kZ3H/YGNs/2Zpc/9kZ3H/Zmhu/2Jlbv9qbXf/ZGdx/2Zpc/9qbXf/
    +bnF7/2xudf9sb3n/Zmlz/2ptd/9sbnX/am13/21wef9laHH/am13/2dqdP9zdXz/bW92/25weP9rbnj/
    +b3F6/3N2fv9ucXX/bG51/2dqcf9sb3n/b3J8/2xud/9ucXr/bW9z/25xe/9ucHf/bnB3/3Byef9ucHf/
    +dXd9/3N1fP9sbnX/cHJ5/3V3ff9kZ3H/am13/3N1fP9wcnn/bG95/2Jlbv9nanT/am13/2ptd/9qbXf/
    +d3l//25xe/9qbXf/bnF7/2ptd/9iZW7/am13/2ptd/9nanL/Z2ly/29xef9ucHf/amxz/3N1fP9wcnn/
    +cHN9/3Byef9ydX7/dXd9/29xdv9rbnj/cHJ5/25wd/9wc33/bnB3/25wd/9zdXz/amxz/3d5f/9wcnn/
    +d3l//29xdf9wcnn/eXuB/2xvef9vcXX/Z2px/3t9g/9sb3n/cHN9/2xvef9ucHf/cHJ5/25xe/9+f4P/
    +dXd9/3Byef9qbXf/bG51/35/g/9qbHP/cHJ5/2xvef91d33/bnB3/25xe/9zdn//bG95/3l7gf9maG7/
    +bnB3/2xvef9qbXf/am13/2psc/9qbXf/bG51/2psc/9sbnX/Zmlz/2Zpc/9nanH/Z2px/2Rncf9qbXf/
    +Zmlz/2Jlbv9nanT/bG95/2xvef9kZ3H/Zmhu/2Jlbv9nanT/YGNs/2Rncf9dYGr/ZGdx/2Rncf9qbXf/
    +ZGdx/2xvef9iZW7/Z2p0/2ptd/9maG7/XWBq/2psc/9nanT/am13/3N1fP9ucXv/eXyG/2ptd/9nanT/
    +dXd9/25wd/9zdXz/cHJ5/3Byef9vcXX/bnF7/3Bzff9wcnn/eXuB/3N1fP91eIH/dXiB/3l8hv9zdXz/
    +cHJ5/25xe/95e4H/d3qD/3N2f/9zdn//cHN9/3l7gf9zdXz/bnF7/25wd/9wc33/cHN9/3N2f/9sb3n/
    +bG95/3Byef9wc33/bG95/25xe/9ucXv/cHJ5/25wd/9ucHf/eXuB/3N2f/9ucHf/bG95/25wd/9wc33/
    +d3qD/3d5f/91d33/bG51/3Byef9sbnX/amxz/3N1fP94eX3/dXd9/3V4gf9ucHf/cHJ5/3Byef92eHz/
    +bG95/3Bzff93eoP/c3Z//3N2f/9zdXz/bnB3/25wd/9zdXz/eHl9/3+Bh/9ucHf/dnh8/3Byef93eX//
    +bnB3/3d6g/95e4H/bnB3/3Byef9sbnX/bnB3/2psc/9qbXf/am13/3l8hv9maXP/bnF7/2psc/9kZ3H/
    +bnF7/2xvef9ucXv/amxz/2ptd/91d33/bG51/2psc/9wc33/cHN9/2xudf9maXP/cHN9/2dqcf9nanT/
    +amxz/2dqdP9sbnX/am13/2Zpc/9sb3n/bG51/2xvef9sbnj/ZWhy/2dqdP9nanH/bnF7/2ttdf9rbnb/
    +a252/29xeP90dnz/am13/2ptd/9nanH/cHJ5/3N1fP9tcHj/bnF6/2dqdP9qbHP/Zmhu/2psc/9nanT/
    +amxz/2dqdP9qbXf/YGNs/2dqdP91d33/YmVu/2xudf9sb3n/am13/2xudf9iZW7/am13/2xvef9ucXv/
    +bG51/3d5f/9ucXv/am13/3Byef9ucHf/ZGdx/25xe/9sb3n/am13/2lsdP9wcnv/b3J7/21vd/9zdXz/
    +bnB3/3Bzff9rbXT/a254/25xe/9rbXX/bW9z/25wd/9tb3P/b3F1/2xvef9wcnn/c3V8/2ptd/93eX//
    +bnB3/3V4gf9ucXv/cHJ5/3d6g/9qbXf/bG51/2Jlbv91eIH/am13/25xe/9maXP/amxz/2ptd/9qbXf/
    +e32D/3N1fP9qbXf/bG51/2psc/91eIH/YGNs/2Zpc/9kZ3H/Z2p0/2Zpc/9nanH/bG95/2Rncf9zdXz/
    +YGNs/2Zpc/9nanT/amxz/2Zpc/9qbHP/bG95/2xudf9qbHP/bG51/2Zpc/9nanT/amxz/2ptd/9maXP/
    +cHN9/25xe/9maXP/am13/3Bzff91d33/bG95/2xvef9tb3P/dXd9/25wd/9ucHf/Zmlz/25wd/9tb3P/
    +c3V8/21vc/92eHz/bnB3/3h5ff94eX3/bG51/2dqcf9sb3n/bnF7/25xe/9zdXz/cHJ5/36Ahv9wc33/
    +c3V8/3l7gf9zdXz/bnF7/25xe/9sbnX/bG51/3N1fP9zdXz/b3F1/3N1fP9ucHf/c3V8/3Byef91d33/
    +b3F1/2xudf9sb3n/dnh8/3Z4fP9zdXz/cHN9/3Bzff94eX3/b3F1/3Bzff9qbHP/bnB3/2xvef9wc33/
    +ZGdx/2dqdP9nanT/am13/2ptd/9ucHf/cHJ5/3Byef9sbnX/bG51/3V3ff92eHz/amxz/25xe/9ucHf/
    +cHN9/3d5f/93eX//c3V8/21vc/9zdXz/bW9z/2xudf9zdn//d3qD/3V4gf95e4H/bnF7/3N2f/91eIH/
    +e32D/3Byef91eIH/eXuB/3d6g/93eoP/d3qD/3Bzff9wc33/bnF7/3V4gf+Bg4r/bG95/3V3ff9wc33/
    +eXuB/25xe/97fof/eXuB/3N1fP9zdn//bG95/3V4gf9wcnn/d3qD/3V4gf9/gYf/cHJ5/3d6g/9wc33/
    +bG95/3V4gf9zdn//dXiB/3N1fP9zdXz/eXyG/3V4gf9zdn//e32D/3l7gf9zdn//c3V8/3d6g/9ucHf/
    +bnF7/2xvef9wc33/bG95/25xe/9qbXf/cHJ5/25wd/9wcnn/cnR6/21vdv9sb3n/bnB3/3Bzff9tcHr/
    +cXN7/25wd/9vcXr/bnB6/2xudf9sbnX/Z2px/3V3ff9ydX7/b3J8/2tueP9rbXT/am13/2xudf9sbnX/
    +bG51/3Byef9zdXz/cHJ5/2RmbP9ucHf/dXd9/2Rncf9qbXf/bG95/2dqdP9sbnX/YmVu/2ptd/9qbXf/
    +bG95/2xudf91d33/bG95/2xudf9zdXz/bG51/2Zobv9wcnn/cHJ5/2xvef9rbnf/c3V+/3F0fv9sb3n/
    +c3V8/3N1fP9zdXz/bnB0/29xeP90dnz/bW94/3Byef9wc33/b3F1/25wd/9tb3P/cHJ5/3Byef9qbHP/
    +dXd9/2ptd/91d33/amxz/2xudf9zdXz/YmVu/25wd/9nanH/eXuB/25wd/9ucHf/bnB3/25wd/9wcnn/
    +b3F1/36Ahv91d33/bnB3/2xudf9tb3P/fn+D/2psc/9sbnX/bnB3/25xe/9sbnX/amxz/25xe/9nanT/
    +d3l//2Rncf9sbnX/bnB3/21vc/9nanH/b3F1/3Bzff9ucHf/bnB3/25xe/9sb3n/c3V8/3Byef91d33/
    +b3F1/3h5ff9zdXz/bG51/3Byef91d33/dXiB/3V4gf9wc33/cHN9/3N2f/9sb3n/bnF7/2dqdP9wcnn/
    +bW9z/3N1fP9sbnX/cHN9/2ptd/91d33/dXd9/2xudf9iZW7/am13/2ptd/9qbXf/bnF7/3Byef9zdn//
    +bnF7/25xe/9zdn//cHN9/25xe/9ucXv/bG51/2ptd/9sb3n/bnF7/2ptd/9sb3n/bnB3/25wd/9wcnn/
    +dXd9/2xudf9maXP/Z2p0/3Z4fP9zdXz/dXd9/3N1fP9ucHf/dnh8/2ptd/9ucXv/ZGdx/2psc/9maXP/
    +am13/2Jlbv9kZ3H/ZGdx/2Rncf9iZW7/Zmlz/2Zpc/9qbXf/ZGdx/2dqcf9sb3n/bnF7/2Rncf9qbXf/
    +amxz/25xe/9zdXz/dXd9/2xvef9sbnX/cHN9/21vc/9qbHP/dXd9/3V3ff91d33/eHl9/25wd/9vcXX/
    +bnB3/3Z4fP9ucHf/c3Z//3Z4fP91d33/cHJ5/3N1fP9ucHf/bnB3/25wd/91d33/f4KM/3Byef9zdn//
    +bnF7/3d5f/9sb3n/e32D/3h5ff9ucHf/cHN9/2ptd/9zdn//bG95/3Bzff9wcnn/e36H/25wd/9wc33/
    +bG95/2ptd/9zdn//dXiB/3V3ff9sb3n/bnB3/3d6g/9ucXv/bnB3/3N2f/9zdn//bnB3/2xudf9wcnn/
    +bW9z/29xdf9ucHf/bnB3/2xvef9wcnn/cHN9/3Bzff9wcnn/c3Z//3N2f/9xc3r/cHJ5/3N2f/93eoP/
    +cHN9/3h6gP9zdXr/d3l//3h7hP9zdn//cHN9/2dqdP93eoL/dnmB/3N2fv9wcnr/bnB3/25wd/9vcXX/
    +cHJ5/25wd/91d33/dXd9/3N1fP9maG7/bnB3/3l7gf9maG7/bG51/2ptd/9sbnX/amxz/2Jlbv9sbnX/
    +cHN9/2ptd/9nanH/c3V8/2dqdP9nanH/Zmlz/2Zobv9ZXGX/ZGdx/2Zpc/9iZW7/YmVt/2xud/9sb3f/
    +a210/29yef9wcnn/dnh8/29xdf9tcHr/bnF7/2Zpcv9naXD/Z2pz/2Jlbv9kZmz/Zmhu/2dqdP9nanT/
    +ZGdx/25wd/9maXP/c3V8/2psc/9maXP/cHJ5/2Jlbv9wcnn/bnF7/3+Bh/9zdn//dXiB/3N1fP9wc33/
    +cHN9/2xvef97fYP/cHN9/2xvef9sb3n/cHJ5/3+Bh/9sb3n/cHN9/3Byef9zdn//c3V8/3Byef9zdn//
    +bG95/3t+h/9sb3n/dXiB/3d6g/9wcnn/am13/3Byef9wc33/cHJ5/25xe/9zdn//cHJ5/3l7gf91eIH/
    +eXyG/3d6g/95fIb/d3qD/3Bzff91eIH/d3l//3l8hv91d33/cHN9/2xvef9wc33/am13/3Byef9sbnX/
    +cHJ5/29xdf91d33/bG95/3Bzff9ucHf/d3qD/3h5ff9sbnX/Zmlz/2xvef9wcnn/cHJ5/3Byef91d33/
    +dXiB/3d5f/9wc33/e36H/3l7gf9wc33/c3Z//25wd/9wc33/d3qD/3Bzff9wcnn/cHN9/25xe/9wc33/
    +c3V8/3h5ff9vcXX/amxz/2psc/92eHz/cHJ5/3Bzff9ucXv/bG51/3V4gf9ucXv/c3V8/2dqcf9sbnX/
    +cHJ5/3N1fP9qbHP/bG51/29xdf9zdXz/bW9z/2xudf9wcnn/cHJ5/2xudf9sb3n/c3V8/3Z4fP9sb3n/
    +cHN9/25xe/9zdn//dXd9/3d5f/9wc33/bG95/3N2f/9ucXv/bnB3/3d5f/95e4H/d3l//3d5f/9sb3n/
    +cHJ5/29xdf92eHz/bnB3/3N1fP92eHz/dXd9/3N1fP9wcnn/b3F1/2xudf9wc33/dXd9/4CChv9tb3P/
    +bnF7/2xudf91d33/bW9z/3d5f/92eHz/bW9z/2xudf9nanH/cHN9/2xvef9wcnn/bnB3/3d5f/9ucHf/
    +cHN9/2xvef9sb3n/dXd9/3N2f/91d33/bnB3/25wd/95e4H/bG95/25wd/9wc33/dnh8/2xudf9qbHP/
    +bnB3/21vc/9sbnX/bG95/2ptd/9ucHf/bnB3/25wd/9wcnn/bW9z/3N1fP9xc3r/a253/2psc/9nanT/
    +bnF7/2dqdP9vcnz/aWx2/29xev9sb3n/amxz/2xudf9iZW7/cHN9/3R2fP9xdH3/bW93/2hrcv9sb3n/
    +bG51/2xvef9sbnX/dXd9/3V3ff9wcnn/amxz/2xudf93eX//Z2px/2ptd/9qbXf/am13/2xvef9maG7/
    +bW9z/25wd/9wcnn/b3F1/3N1fP9sbnX/bG51/2xvef9wcnn/Zmhu/2xvef9qbXf/Zmlz/2Vocv9sb3n/
    +cXR7/2xvef9zdXz/c3V8/3V3ff9ucHT/bnB1/3R2fP9sb3j/b3F2/21vdf9tb3P/bG51/25wd/9zdXz/
    +c3V8/2psc/93eX//am13/3d5f/9sbnX/am13/3d5f/9sbnX/bG51/2ptd/97fYP/dXd9/3Byef9vcXX/
    +cHJ5/2xvef9ucHf/eXuB/2xvef9qbXf/am13/2xudf9+gIb/amxz/3Byef9ucHf/cHJ5/25wd/9ucHf/
    +bnB3/2Zpc/91d33/Z2px/3N2f/9wcnn/bnB3/2psc/9sb3n/cHN9/3N1fP9zdn//dXiB/3Byef95fIb/
    +dXiB/3d6g/93eoP/e36H/3l8hv9wc33/dXiB/3l7gf9+gYr/foCG/3d6g/93eoP/d3qD/3V3ff93eoP/
    +cHN9/3d6g/91eIH/e32D/3Bzff9zdn//bnB3/3l7gf94eX3/c3Z//2dqdP9zdn//c3Z//3N2f/9ucHf/
    +d3l//3l7gf97fYP/d3qD/3+CjP97fof/eXuB/3l7gf91d33/dXiB/3l7gf93eoP/cHJ5/3Bzff9ucXv/
    +c3Z//25xe/97fYP/c3V8/2xvef9sb3n/d3l//3N2f/9wc33/cHJ5/2xvef9ucXv/am13/3Byef9sbnX/
    +bW9z/25xe/9ucXv/ZGdx/2dqdP9qbHP/cHJ5/2dqcf9maG7/bG95/2dqdP9kZ3H/ZGdx/2ptd/9wc33/
    +Z2p0/2ptd/9nanH/bG95/3N1fP9wc33/bG95/2xudf9zdXz/am13/2dqdP9ucXv/c3V8/3V3ff91d33/
    +bG51/25xe/9sbnX/bG95/2ptd/9ucXv/bnF7/3V3ff92eHz/cHJ5/2xudf9tb3P/c3V8/3d5f/+Agob/
    +bW9z/2xvef9sb3n/eHl9/2xudf93eoP/dXd9/2ptd/9qbXf/Zmlz/3N1fP9wcnn/c3Z//3Bzff97fof/
    +cHJ5/3N2f/9sb3n/bG51/3V3ff9zdXz/c3V8/25wd/9ucHf/dXiB/25xe/9sb3n/cHN9/3N2f/9tb3P/
    +bG51/3N1fP9sb3n/cHN9/3Bzff9sb3n/bnB3/25xe/9ucHf/cHJ5/21vc/91d33/c3V6/21wef9ucHf/
    +bnB3/3N1fP9ucHf/cXN7/2xud/9wcnn/dHZ9/25wd/9ucHf/Z2px/3V3ff90dnv/cXR7/25wd/9lZ3D/
    +amxz/2xudf9qbXf/am13/3Bzff9ucXv/bnF7/2Zpc/9sbnX/c3V8/2Rncf9maXP/Zmlz/2dqcf9maXP/
    +XWBq/2dqcf9nanT/Z2p0/2Zpc/9sb3n/Z2px/2dqcf9qbXf/am13/2Jlbv9qbXf/bG51/2Vocf9oa3T/
    +b3J5/3J1f/9tcHr/dHeA/3V4gf97fYP/dXd9/3Z4f/95e4H/bG93/21vdv9tb3b/bG51/2ptd/9tb3P/
    +dXd9/3Byef9sbnX/d3l//2xudf92eHz/bG51/2xudf93eX//bG51/2xvef9sb3n/d3qD/3N2f/9ucXv/
    +bG95/3Byef9ucHf/bnB3/3d5f/9ucHf/bG51/2ptd/9ucHf/gYOK/2ptd/9zdn//cHJ5/3N2f/9wcnn/
    +bnB3/2xvef9qbXf/eXuB/2dqcf95e4H/dXiB/3N2f/9wc33/dXd9/3l7gf91d33/dXd9/3d6g/91d33/
    +fX6B/3t9g/9/gYf/foCG/36Ahv97fYP/eHl9/3l7gf9+f4P/gYOK/36Ahv95e4H/d3qD/3N2f/91d33/
    +d3qD/3Bzff9wc33/cHN9/3l7gf9zdn//dXiB/3N1fP9/gYf/e36H/3V4gf9sb3n/c3Z//3Bzff9wc33/
    +bnF7/3Z4fP9zdXz/dXd9/25xe/93eX//dnh8/3V3ff94eX3/bnB3/25wd/91d33/cHJ5/25wd/9ucHf/
    +bnB3/3N1fP9wcnn/dnh8/29xdf9qbHP/bG51/3Z4fP9wcnn/c3V8/25wd/9qbXf/bnF7/25wd/9zdn//
    +am13/25wd/9zdXz/dXd9/2ptd/9vcXX/bG51/3N1fP9sbnX/am13/3N1fP9ucXv/bG51/2xudf9wcnn/
    +eHl9/2ptd/9zdXz/c3V8/3V4gf93eoP/eXuB/3l7gf9zdXz/e32D/3V4gf9zdXz/d3qD/3t9g/9+gIb/
    +foGK/3N2f/97fYP/dXiB/3d6g/9wc33/dXiB/3N2f/91eIH/c3Z//3Bzff9ucHf/bnB3/3N1fP92eHz/
    +gIKG/2xvef9ucHf/bnB3/3Z4fP9qbXf/c3Z//3N1fP9qbHP/am13/2BjbP9ucXv/Z2p0/25xe/9wc33/
    +dXiB/2xudf9sb3n/bG95/2ptd/9wc33/cHN9/3N1fP9tb3P/am13/3V3ff9qbXf/Z2px/2xvef9ucXv/
    +amxz/2Zpc/9sb3n/bG95/25xe/9sb3n/bG51/2xudf9qbXf/Zmlz/2Zpc/9maG7/am13/2tueP9nanT/
    +Zmlz/2Zpc/9nanT/Z2lv/2ptd/9maXL/a252/2xvef9qbHP/am13/2Rncf9sb3n/b3J8/3Bze/9sbnT/
    +Z2lw/2xudf9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9qbHP/bG95/3l7gf9qbXf/cHJ5/3d6g/9zdn//
    +c3Z//2ptd/9wc33/dXiB/3d6g/9wcnn/d3qD/3Bzff9wcnn/c3Z//3Bzff9maXP/bnF7/25xe/9sb3n/
    +bG95/3N2f/9xdH7/am12/25wd/9ucXv/dXd9/2xudf9tb3b/cnV8/21veP9vcXj/bnB3/25wd/9wcnn/
    +bW9z/3N1fP9zdXz/bG51/3d5f/9tb3P/dXd9/21vc/9sbnX/dXd9/2dqdP9maXP/Z2p0/3d5f/9zdXz/
    +bnB3/2xudf91d33/bG95/2ptd/93eoP/c3Z//25xe/9sb3n/bnB3/4GDiv9qbXf/bG95/25wd/9ucXv/
    +cHJ5/25xe/9ucHf/Z2px/3Z4fP9lZmr/c3V8/25wd/9tb3P/Z2p0/2dqcf9sb3n/amxz/2psc/9maXP/
    +YmVu/2xvef9qbXf/bG95/2xvef91d33/bnF7/2xudf9sbnX/c3V8/3V3ff91d33/bG95/2xvef9qbXf/
    +am13/2xvef9qbHP/cHJ5/2xudf91d33/bG51/3N1fP9vcXX/e32D/3d6g/9wc33/Z2p0/3Bzff91d33/
    +c3V8/25wd/9zdn//d3l//3d5f/91d33/dXiB/3d5f/93eX//eXuB/25xe/9wc33/dXiB/3V4gf9zdn//
    +d3qD/35/g/97fYP/dXiB/3t+h/9zdn//bnF7/3Byef93eX//cHN9/3N2f/9wc33/bnB3/3Bzff9qbXf/
    +c3V8/2dqcf9ucHf/c3V8/3N1fP9sbnX/bG51/2xudf9wc33/bG95/2ptd/9zdXz/c3V8/2psc/9sbnX/
    +bnF7/3Z4fP9sbnX/bG51/2psc/9ucXv/c3V8/3N1fP9wcnn/bG51/3V3ff9sbnX/Z2p0/3Byef9wc33/
    +dnh8/3d5f/9ucHf/c3Z//2xvef9zdXz/bG95/25xe/9ucHf/c3Z//3N2f/9wc33/bnB3/25wd/9zdn//
    +eXuB/4GDiv9ucHf/bnF7/3Bzff95e4H/cHN9/3d6g/93eoP/cHJ5/3N2f/9maXP/dXd9/3Bzff91d33/
    +c3Z//3l8hv9ucHf/cHJ5/25xe/9ucHf/dXd9/3V3ff92eHz/b3F1/25wd/91d33/bG95/2xvef91eIH/
    +dXiB/25xe/9sb3n/c3Z//3Bzff9wc33/cHN9/2xvef9zdXz/cHJ5/25wd/9wcnn/b3F1/3N1fP9zdXr/
    +bW92/2xudf9tb3P/cHJ5/2xudv9tb3f/aWx1/25xef9ucXv/Zmhu/2dqdP9kZ3H/bG95/2xvef9vcXr/
    +a252/2Vobv9sbnX/cHJ5/2xudf9zdXz/dXd9/2xvef9sb3n/Zmlz/2ptd/9zdXz/YmVu/2psc/91d33/
    +cHN9/25wd/9nanH/bnB3/25xe/91eIH/bG95/3V3ff9sb3n/bnB3/3V4gf9ucXv/am13/25wd/9ucHf/
    +bG95/29xeP9zdn7/dHd//21vdv9wcnn/cHJ5/3V3ff9qbXf/cHJ6/3d6g/9wc33/bnF6/3F0fv9ucXv/
    +bnF7/2xudf9zdXz/cHJ5/2ptd/9zdXz/bG51/3V3ff9sbnX/b3F1/3d5f/9sbnX/amxz/29xdf92eHz/
    +cHJ5/3Byef9ucHf/dXd9/2ptd/9maXP/c3Z//25xe/9sb3n/Zmlz/2psc/9/gYf/am13/2ptd/9qbHP/
    +am13/21vc/9sbnX/bG51/2psc/93eX//Zmlz/3Bzff9ucXv/bnB3/2xudf9sbnX/bnB3/2xudf9sb3n/
    +bnB3/2psc/9zdXz/bnB3/3N1fP9ucHf/eHl9/3Bzff9wcnn/cHN9/3d6g/95fIb/e32D/3V4gf93eoP/
    +cHN9/2xvef9wc33/bG95/3V3ff9ucHf/dXd9/25wd/91eIH/bnB3/3l8hv93eX//c3V8/2psc/9zdXz/
    +cHJ5/3N1fP9ucHf/c3V8/3N1fP92eHz/cHN9/3V3ff91d33/dXd9/3d5f/9qbHP/bnB3/3V3ff9zdXz/
    +b3F1/25wd/91d33/cHJ5/25xe/93eX//bG51/2psc/9sbnX/eHl9/3Byef91d33/bnF7/2xudf91eIH/
    +cHN9/3V4gf9kZ3H/bnB3/25xe/93eoP/c3V8/3N1fP9zdXz/eXuB/3N2f/9wcnn/eXuB/3t9g/9ucXv/
    +cHJ5/3V4gf93eX//bnB3/3Byef9wcnn/d3l//3Bzff9zdn//c3V8/3Byef91d33/cHJ5/25wd/9zdXz/
    +cHN9/3N1fP91d33/bG95/3N1fP9ucHf/c3V8/25wd/9wcnn/bnB3/3N2f/91eIH/c3Z//2xvef9ucXv/
    +c3Z//3V4gf+DhYz/dXd9/3V3ff97fYP/f4GH/3t9g/9/gYf/hYeN/3t9g/95fIb/c3Z//36Biv9+gIb/
    +foCG/31+gf+Bg4r/dnh8/3l7gf97fYP/dnh8/3t9g/97fYP/eXuB/3Bzff9ucXv/d3l//25wd/9qbHP/
    +cHN9/3Bzff9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2dqdP9nanH/Z2p0/2Zpc/9kZ3H/Z2p0/2psc/9nanT/
    +bG95/2Nmbv9gY2z/Zmhu/2ptd/9oa3P/bG52/2lsdv9sb3j/bnF7/21vc/9tb3P/Z2px/3Byef9xdHv/
    +b3F4/3Byef9oanD/b3F1/3N1fP9ucHf/dXd9/3V3ff9ucHf/bnB3/2psc/9wcnn/dnh8/2Zobv9sbnX/
    +dXd9/3N1fP9wcnn/Zmhu/2xudf9sb3n/dXd9/2ptd/9wcnn/b3F1/21vc/9wc33/bG51/2Rncf9qbHP/
    +Z2p0/2BjbP9kZ3H/aGt1/2tud/9nanP/bnB4/21vdv91d33/bG51/21vc/9zdn3/a254/21vd/9tcHr/
    +am13/2ptd/9sbnX/cHJ5/2xvef9nanT/c3V8/2psc/91d33/bG51/2xvef93eX//Z2p0/25xe/9wc33/
    +e32D/3d6g/9zdn//cHN9/3d6g/9zdXz/bnF7/3l8hv9zdn//cHN9/2ptd/9ucHf/f4KM/2xvef9zdn//
    +cHN9/3Bzff9zdXz/c3Z//25xe/9nanT/eHl9/2dqcf9zdXz/cHJ5/25wd/9sbnX/bG51/29xdf9vcXX/
    +cHJ5/3Byef9sbnX/c3V8/3Byef9sb3n/cHN9/3V3ff9wc33/bW9z/2ptd/9ucXv/dXd9/3Z4fP9wcnn/
    +cHN9/2ptd/9nanT/cHN9/2psc/9wc33/am13/3Bzff9qbXf/bG95/2xudf93eoP/dXd9/2xvef9qbHP/
    +bG95/2xvef9wc33/bG51/2ptd/9ucXv/bnF7/3Bzff9zdXz/dXd9/2xvef93eX//Zmlz/2ptd/9wc33/
    +bG95/2ptd/9sbnX/cHN9/3Byef9zdXz/eXuB/3N2f/9qbXf/bnB3/3l7gf9wc33/dnh8/3N1fP9ucHf/
    +bnF7/25wd/9zdXz/ZGdx/25wd/9zdXz/c3Z//25xe/9ucXv/cHN9/3d6g/95fIb/c3Z//36Ahv97fof/
    +cHN9/3V4gf95e4H/e36H/3V3ff93eX//c3Z//3l8hv9zdn//d3qD/3d6g/9zdn//d3qD/3N2f/9sb3n/
    +c3Z//3N2f/91eIH/d3qD/3Bzff9wc33/cHN9/25xe/9ucXv/cHN9/3Bzff91eIH/c3Z//3N2f/9ucHf/
    +bW9z/3N1fP91d33/fn+D/25wd/9sb3n/dXiB/3d5f/9ucXv/d3l//3d6g/9zdn//bnF7/2psc/9wc33/
    +cHJ5/3V3ff9zdXz/eXuB/2xudf9wcnn/bG95/2xudf91d33/dXd9/25xe/9ucHf/bG95/3V3ff9ucHf/
    +Z2p0/3Bzff91d33/bW9z/2dqcf9wcnn/bG95/2ptd/9sbnX/bG51/25xe/9sbnX/am13/2xvef9qbHP/
    +bG95/21veP9pa3L/YmVu/2Zobv9sb3n/bG51/2lsdP9oa3X/am12/2hrdf9maG7/Zmhu/1lcZf9maXP/
    +bXB6/21wef9tb3f/Z2p0/25xdf9ucXv/bnB3/3N2f/93eX//bnF7/3Bzff9qbXf/c3Z//3d5f/9nanT/
    +cHJ5/3N2f/93eX//cHJ5/2psc/9sbnX/bG95/3V3ff9sbnX/bG95/2ptd/9nanT/cHN9/2xvef9maXP/
    +bG51/25xe/9kZmz/bG51/2xudv9ucHj/aWx0/25xe/9sb3n/cHN9/2dqdP9qbXf/cHJ4/25wdf9sbnb/
    +c3V9/25wd/9wcnn/bG51/3Byef9ucHf/bG51/3V3ff9sbnX/dXd9/2xudf9sbnX/d3l//2dqdP9qbHP/
    +b3F1/3Z4fP9zdn//bG95/25wd/91d33/bG95/2xvef97fof/dXiB/3N2f/9ucHf/cHJ5/3+CjP9qbXf/
    +bnF7/25wd/9ucXv/cHN9/3N2f/9wc33/am13/3d5f/9nanH/cHJ5/3Byef9sbnX/Z2p0/2dqdP9sbnX/
    +amxz/2xudf9nanT/Zmlz/2xvef9qbXf/am13/2xvef9zdXz/cHJ5/21vc/9wcnn/cHJ5/3Z4fP91d33/
    +am13/3N1fP9ucXv/bG51/3V3ff9qbHP/cHN9/2ptd/9zdXz/bnB3/3Bzff9sb3n/foCG/3d5f/9ucXv/
    +bW9z/3N1fP9zdXz/dnh8/3Byef9sbnX/bG95/3Bzff9wc33/cHN9/3V3ff9wcnn/dXiB/2Rncf9nanT/
    +cHN9/2ptd/9qbXf/am13/2dqdP9qbXf/bG95/3N2f/9qbHP/Zmlz/2psc/91d33/bnF7/3Bzff9qbXf/
    +Zmlz/2dqdP9sbnX/bnF7/2Zpc/9sbnX/bW9z/3N1fP9wcnn/bnB3/3Byef93eX//c3Z//25wd/91d33/
    +eXuB/3Byef9wcnn/dXiB/3t9g/9ucHf/cHJ5/3Byef9zdn//cHN9/3d6g/97fYP/dXiB/3t+h/9zdn//
    +c3Z//3t9g/95e4H/d3qD/3t9g/9wc33/dXiB/3l7gf9wc33/dXiB/3V4gf9zdXz/d3qD/3l7gf91eIH/
    +bnB3/3Byef9wc33/cHN9/3t9g/9vcXX/bnB3/3d5f/9zdn//bnF7/3d5f/91eIH/bnF7/25xe/9qbXf/
    +cHN9/25xe/91eIH/cHN9/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3d5f/9zdn//c3Z//3V4gf95e4H/
    +cHN9/3Byef93eX//dXd9/2xvef9qbXf/cHN9/25xe/9wcnn/bnF7/25wd/91d33/bnB3/3Byef9zdn//
    +bnB3/3Bzff9vcnv/b3F1/2dqdP9ucHf/cHN9/25xe/9vcnv/bXB6/29xev9ydX7/bnB3/25wd/9maG7/
    +b3F1/3J0ev9tcHr/bW93/2Zpc/9sbnX/am13/2dqdP9ucXv/c3V8/2psc/9sb3n/amxz/2xvef9ucXv/
    +ZGdx/2dqdP9ucXv/cHN9/2ptd/9iZW7/Zmlz/2xudf9ucXv/Z2p0/25xe/9sbnX/bG51/3N1fP9wcnn/
    +Z2px/2xudf9ucXv/ZGZs/25wd/9vcXj/b3F4/25wd/9wcnn/cHJ5/3h5ff9nanT/bG51/29xeP9sbnX/
    +bnB3/3F0fv9sb3n/bG51/2ptd/9ucHf/cHJ5/29xdf9zdXz/bG51/3l7gf9ucHf/bnB3/3d6g/9ucHf/
    +bG51/2ptd/9zdn//c3Z//3Bzff9sb3n/c3Z//2dqdP9nanT/eXuB/3N2f/9wc33/am13/29xdf+Agob/
    +bG51/25wd/9sbnX/cHJ5/2xvef9ucXv/b3F1/2xudf92eHz/Zmhu/3N1fP9sbnX/Z2p0/2Zpc/9nanT/
    +bG51/2psc/9nanH/bG51/2Zpc/9wc33/am13/2ptd/9ucXv/cHN9/2xvef9tb3P/bnF7/25xe/9zdXz/
    +dXd9/3Bzff9wc33/bnF7/2Zpc/93eX//bnB3/3V3ff9ucHf/bnF7/2xvef9zdn//cHN9/3+Bh/95e4H/
    +c3Z//3Byef9zdn//dXiB/3d5f/9zdn//cHN9/25wd/9zdn//dXd9/3N1fP93eX//cHJ5/3d5f/9maXP/
    +am13/3N1fP9sb3n/Z2px/2psc/9qbXf/Zmlz/2dqdP9wcnn/Zmlz/2BjbP9nanH/bG95/2ptd/9sb3n/
    +bG95/2Jlbv9qbXf/amxz/2ptd/9iZW7/Zmlz/2Zobv9sb3n/am13/2ptd/9tb3P/dXd9/3N1fP9ucHf/
    +dXd9/3Z4fP9tb3P/bW9z/3N1fP91d33/am13/2xudf9sbnX/bnF7/2ptd/9wc33/dXd9/3Byef93eX//
    +c3V8/2psc/94eX3/dnh8/3Z4fP91d33/bG51/25xe/9wc33/bG51/25xe/9sb3n/bG51/25xe/91d33/
    +bG51/25wd/9vcXX/c3V8/3Byef97fYP/bnB3/21vc/9zdXz/c3V8/25wd/91d33/dXd9/3Byef9wcnn/
    +amxz/2xudf9sb3n/cHN9/3Bzff91d33/bG51/2xvef9sbnX/bnB3/3N1fP9zdn//c3V8/25wd/9zdXz/
    +dXd9/25xe/9sb3n/dXiB/3N2f/9sb3n/bG95/25xe/9wcnn/c3V8/2xudf9sbnX/dnh8/29xdf9ucHf/
    +cHN9/3Byef9zdn//c3Z//3F0fv9sb3n/bG95/3V3ff9ucHj/b3F4/2ptdf9rbnf/cXR+/2ptd/9qbXf/
    +YmVu/2xvef9wcnn/b3F6/3Bye/91eID/Z2px/3N1fP9vcXX/Z2px/2psc/97fYP/cHJ5/2psc/9zdXz/
    +bG95/25xe/9wc33/c3V8/25xe/9ucXv/c3V8/25xe/9nanT/cHN9/2xudf9qbXf/bG51/2xvef9gY2z/
    +c3V8/2xvef9qbHP/dXd9/2Zpc/9nanH/Zmly/2dqdP9pbHT/bG95/3J1fv93eX//bG95/3Byef9ucXv/
    +bG50/21wev9kZ3D/Z2lz/2dqdP9gY2z/ZGdx/2Zobv9iZW7/Zmhu/2Jlbv9maXP/Zmhu/2Rncf9sbnX/
    +bG95/2Zobv9qbXf/bnF7/2xvef9ucXv/amxz/25xe/9kZ3H/ZGdx/3V3ff9sb3n/bnF7/2Zpc/9tb3P/
    +foCG/2psc/9sbnX/bG51/3Bzff9qbXf/bG95/2xudf9maXP/bG95/11gav9sb3n/amxz/2Rncf9kZ3H/
    +Z2p0/2xudf9sbnX/bG51/2ptd/9maXP/c3V8/2ptd/9sb3n/bnF7/25xe/9sb3n/bG51/2xvef9ucXv/
    +dnh8/3h5ff9zdn//dnh8/3V3ff9qbXf/eXuB/3Byef93eX//bG95/2xvef9ucHf/c3Z//25xe/9+gIb/
    +eHl9/3N1fP9wcnn/c3Z//3V4gf93eX//cHN9/25xe/9sb3n/dXiB/3l7gf9ucXv/dXiB/25wd/93eoP/
    +Zmlz/25wd/93eX//bnF7/2ptd/9sbnX/cHJ5/3Byef9ucXv/dXd9/3N1fP9nanH/bW9z/3N1fP9wc33/
    +c3V8/25xe/9nanT/bnB3/25xe/9zdn//bG95/25wd/9sb3n/cHN9/25wd/9ucHf/am13/3h5ff9zdn//
    +bnF7/3l8hv95e4H/bnB3/25wd/93eX//eXuB/3Byef9ucHf/c3V8/3V4gf93eoP/d3qD/3V4gf91eIH/
    +d3qD/3V4gf9wc33/e36H/3t9g/97fof/eXyG/3Bzff95e4H/d3qD/25wd/9wc33/bnF7/3Byef91eIH/
    +d3qD/3Bzff9ucHf/bnB3/3Bzff9wc33/e32D/2xvef9tb3P/dXd9/3V3ff9wcnn/eXuB/3h5ff9wcnn/
    +bnF7/2ptd/9ucHf/bnB3/3V4gf93eoP/e32D/3N1fP9zdn//c3Z//2ptd/9wc33/cHN9/3N2f/9ucXv/
    +c3Z//3V3ff9sb3n/bnB3/3N2f/91d33/bnB3/2psc/9sbnX/cHJ5/2ptd/9sbnX/Zmlz/3Bzff9qbHP/
    +Z2px/2dqcf9maXP/am13/2lrdP9oa3L/Z2p0/2psc/9wc33/bW9z/21vdv9sbnT/aWxz/3N1fv9ucXv/
    +bG95/2dqdP9ydX//dHd//3Byef9wc3r/dnh+/2Zobv9wc33/cHJ5/2dqdP9nanT/d3qD/2xvef9qbXf/
    +dnh8/25xe/9zdn//cHN9/3V3ff9wcnn/cHJ5/3N1fP9wcnn/amxz/3Bzff9qbXf/bnB3/25wd/91d33/
    +Zmhu/3N1fP9zdXz/am13/3d6g/9nanT/Z2p0/2hrdP9oa3L/a212/2tueP9tcHn/dXd9/2xudf9vcXX/
    +bnB3/25wdv90dn3/am12/2ptd/9wc33/bG51/2xudf9sbnX/bG51/2ptd/9qbHP/cHJ5/25wd/9ucHf/
    +bG95/3Bzff9gY2z/bG51/25wd/9ucXv/bnF7/2ptd/9ucXv/am13/2Rncf91d33/c3V8/3N1fP9nanH/
    +b3F1/36Ahv9ucHf/bG95/29xdf9zdXz/bnB3/2xudf9ucHf/bW9z/3N1fP9maG7/bnF7/25xe/9maXP/
    +ZGdx/2xudf9sbnX/b3F1/3Byef9ucXv/bG51/3N1fP9wc33/cHN9/3Bzff9wc33/bnB3/2ptd/9ucXv/
    +c3Z//3l7gf93eX//d3l//3V3ff91eIH/bG95/3l7gf9zdXz/d3qD/2ptd/9wc33/c3V8/3V4gf9wc33/
    +f4GH/3d5f/9wc33/cHJ5/3Bzff9zdn//dXd9/25wd/9tb3P/am13/25xe/9zdXz/am13/3V3ff9ucHf/
    +d3qD/2psc/9sb3n/eHl9/3Byef9ucHf/bnB3/3V3ff9wcnn/c3V8/3V3ff9wcnn/amxz/25wd/9wcnn/
    +c3V8/3N1fP91d33/bG51/3Bzff9zdn//dXiB/2ptd/9zdXz/cHN9/3V4gf9zdn//c3Z//3Bzff97fYP/
    +c3Z//2xvef95fIb/d3l//2xvef9wcnn/d3l//3d6g/9zdXz/c3V8/3N1fP9zdn//cHN9/3Bzff93eoP/
    +dXiB/3t+h/95e4H/bnF7/3l8hv93eX//eXuB/3l7gf9ucHf/d3l//3d6g/9zdXz/eXuB/3d6g/9zdn//
    +eXyG/3d6g/91eIH/c3V8/3N1fP9zdn//dXiB/3l8hv9wc33/bG95/3V3ff91d33/cHJ5/3d5f/94eX3/
    +cHJ5/25wd/9nanT/bG95/25xe/91d33/dnh8/3V3ff9sbnX/am13/25wd/9nanH/cHJ5/3Byef9wc33/
    +bnF7/3Bzff91eIH/cHN9/2xvef9zdn//dXd9/25xe/9qbXf/bnF7/3N2f/9sb3n/bnB3/2dqdP91d33/
    +b3F1/25wd/9ucHf/amxz/25wd/9ucHj/a254/2ptd/9tb3P/cHJ5/2ptd/9qbXf/Z2pz/2Vocf9sb3n/
    +Zmhu/2dqdP9gY2z/Z2p0/2hrdf9oanD/aWx2/3BzfP9iZW7/bnF7/2ptd/9maXP/Zmlz/3V4gf9qbXf/
    +Z2p0/25xe/9qbXf/bnF7/25xe/9ucXv/bnF7/25xe/91d33/cHJ5/2psc/9ucXv/Z2p0/2dqdP9sbnX/
    +bnF7/2Jlbv9ucXv/am13/2psc/9zdXz/Zmlz/2Rncf9nanT/aGty/2xvd/9sbnb/c3V8/3V3ff9sbnX/
    +bnB3/2tud/9tb3b/cXN6/21vdv9wcnn/dXd9/2xvef9sb3n/bG95/2xvef9sb3n/bG95/3N2f/9wcnn/
    +cHJ5/3Bzff91eIH/Zmhu/25wd/9vcXX/c3V8/3N1fP9wcnn/c3V8/2psc/9qbHP/d3l//3V4gf9wc33/
    +cHJ5/3Byef9/gYf/bG95/25wd/9vcXX/c3V8/2xudf9tb3P/am13/2ptd/9wc33/ZGdx/2xvef9ucXv/
    +YmVu/2Zpc/9sbnX/Z2p0/21vc/9sbnX/am13/2dqdP9ucXv/bnF7/3Bzff9sb3n/bG95/2ptd/9nanT/
    +bG95/2ptd/9zdXz/dnh8/3Z4fP9zdXz/cHJ5/2psc/93eX//am13/3N1fP9sbnX/b3F1/29xdf9wcnn/
    +dXd9/36Ahv91d33/c3V8/21vc/9ucXv/cHN9/3N1fP9sb3n/Z2p0/2ptd/9sb3n/dnh8/29xdf94eX3/
    +bnB3/3V3ff9nanH/bnB3/3h5ff9wcnn/bnB3/2xvef9zdXz/c3V8/3Byef92eHz/cHJ5/2psc/9sbnX/
    +cHN9/3V4gf91eIH/dXiB/2ptd/9ucXv/bG95/3Bzff9qbXf/cHJ5/2xvef9zdXz/bG95/3Byef9ucHf/
    +eHl9/3V3ff9qbXf/foCG/3V4gf9tb3P/bW9z/3V3ff91eIH/bW9z/2xudf9nanT/bnB3/2ptd/9sbnX/
    +cHJ5/2xudf92eHz/dXd9/2dqdP91d33/bnF7/3N1fP9ucXv/Z2p0/3Bzff9wc33/bG51/2xvef9qbHP/
    +Z2px/2dqdP9nanT/am13/2psc/9nanH/bG95/2dqdP9zdn//Zmlz/2Rncf9nanT/bG95/2psc/9wcnn/
    +cHJ5/2Zpc/9sbnX/Z2p0/2psc/9qbXf/cHN9/3Bzff93eX//bG51/2ptd/9sbnX/amxz/3N1fP9ucHf/
    +cHJ5/3Byef91eIH/dXiB/3V4gf9ucXv/eXuB/3V4gf9ucHf/ZGdx/2xvef9wc33/bnB3/21vc/9nanH/
    +dXd9/21vc/9qbXf/am13/2dqdP9sb3n/bW94/2xudv9maXP/amxz/2ptd/9kZ3H/Zmlz/2Nmbv9jZm//
    +bG94/2dqcf9nanT/YGNs/2xvef9sb3n/amx0/2hrdf9oa3T/Wl1m/2dqdP9nanH/XWBq/2Rncf93eX//
    +am13/2ptd/9zdXz/bnB3/3Byef9zdXz/c3V8/3Byef9wcnn/dXd9/3Byef9ucHX/c3V8/25wd/9wc33/
    +b3F7/3V3ff9naXP/d3l//3N2f/9sb3n/dnh//25wd/9vcXX/bW92/2xudf9sbnX/bnB3/29ye/9wc33/
    +Z2px/2psc/9sbnX/amxz/29xev9sbnX/bW92/3V3ff9qbXf/am13/21vef9nanT/bW9z/2Rncf9ucHj/
    +bG51/2tud/9rbnf/c3V7/2Zpc/9qbXf/bnB3/3V3ff9ucXv/c3Z//3N1fP9qbHP/Z2p0/3V3ff92eHz/
    +cHJ5/25wd/9vcXX/fX6B/2ptd/9qbXf/bG95/3Bzff9sbnX/bG51/2dqdP9qbXf/bnF7/2Jlbv9sb3n/
    +bG95/2Rncf9iZW7/amxz/2dqcf9qbXf/amxz/2ptd/9maXP/bnF7/2xvef9sb3n/bG95/3Bzff9sb3n/
    +bG51/25wd/9sb3n/dXiB/3l7gf95e4H/c3Z//3V4gf9zdXz/eXyG/3V4gf97fYP/c3Z//3V4gf9wc33/
    +e32D/3t9g/+Bg4r/fn+D/35/g/9zdn//e32D/3t9g/97fYP/c3Z//3Byef9wc33/dXiB/3N2f/9ucHf/
    +d3l//3Bzff93eoP/am13/25wd/93eX//bG95/3Byef9wcnn/dXiB/3V4gf9ucXv/d3l//3N1fP9qbHP/
    +bG51/3N1fP9zdXz/dXd9/3V3ff9qbXf/am13/2ptd/91d33/amxz/29xdf9ucHf/c3V8/2xudf9wcnn/
    +bW9z/3V3ff91d33/bG51/3t9g/93eX//bG51/2xudf9zdXz/d3l//3Byef9sbnX/bG51/25wd/9wcnn/
    +bnB3/3N1fP9vcXX/dXd9/3V3ff9nanH/d3l//25xe/92eHz/cHJ5/25wd/92eHz/c3V8/2xvef9ucXv/
    +bG95/2psc/9ucXv/bnF7/2xudf9vcXX/bnB3/3N2f/9ucHf/e32D/3N1fP9ucHf/dXd9/3N2f/9ucXv/
    +dXiB/3V3ff9wc33/bnB3/25wd/9vcXX/bG51/3Byef91d33/eHl9/25wd/9wc33/bnF7/2xvef91eIH/
    +cHN9/3V4gf9ucHf/cHJ5/3Byef9wcnn/bG51/3N1fP9ucXv/am13/2Rncf9sb3n/cHN9/21vc/9tb3P/
    +amxz/3Z4fP9ucHf/bG95/3Bzff9sb3n/bnF7/25weP9wc33/bG51/2xudf9wcnn/am13/2ttdf9ucHX/
    +bG52/3J0e/9sb3n/cHJ5/2Zpc/91eID/bnF7/3BzfP9vcnv/dXd9/2dqcf9zdXz/b3F4/2ttdP9sbnX/
    +dXd9/21wd/9rbXX/c3V8/2ptd/9vcnz/bXB6/21wev9tcHr/aWx2/21wev9wcnr/a21y/3Fzev9tb3T/
    +cHJ5/3Byef91d33/a210/3d5gv9wc3z/bnF6/3V3ff9ucHf/bW92/25wd/9tb3T/bnB1/21wef9vcnv/
    +bnF7/2dqdP9sbnX/amx0/2ttdP9wcnv/cHJ7/29xev96fIL/cHJ6/29xeP93eoL/b3J8/29xef9pbHb/
    +b3J8/2ptdv9tcHr/bXB6/29ye/9iZW7/Z2p0/2xudf9sb3n/bG95/2xvef9sb3n/Zmlz/2ptd/9wc33/
    +dXd9/2xvef9qbXf/Zmlz/3d6g/9sb3n/Z2p0/2ptd/91d33/bG51/2xvef9nanH/bnB3/3N2f/9qbHP/
    +c3V8/3Bzff9qbXf/bnB3/25xe/9sb3n/bnF7/3Bzff9ucHf/bnB3/3Bzff91d33/c3V8/3V4gf9zdn//
    +cHN9/3Byef9ucXv/bnF7/3N2f/91eIH/e32D/3Bzff9zdn//bnB3/3d5f/9ucXv/dXd9/2ptd/9qbXf/
    +bG51/3Byef91d33/d3l//3Bzff9ucHf/bnB3/3N1fP9wcnn/cHJ5/2xvef9qbXf/bG51/2xvef9sb3n/
    +Zmlz/3Bzff9qbXf/dXd9/2Jlbv9nanT/d3l//2ptd/9tb3P/bG51/3Byef9zdXz/bG51/3Z4fP9wcnn/
    +bG51/2psc/9sb3n/bG95/3V3ff91d33/am13/2ptd/9qbHP/am13/2Zpc/9sbnX/am13/2xvef9qbHP/
    +cHJ5/29xdf95e4H/dnh8/2xudf95fIb/e32D/29xdf9sbnX/c3V8/3d5f/9wcnn/bnB3/25wd/9vcXX/
    +c3V8/2psc/9ucHf/bW9z/3V3ff91d33/Z2p0/3V4gf9ucXv/c3V8/2dqdP9maXP/bnB3/2ptd/9nanT/
    +Z2p0/2Zpc/9kZmz/Zmhu/2dqdP9maG7/ZGdx/2Zobv9maXP/ZGdx/3Bzff9maXP/ZGdx/2xvef9sb3n/
    +amxz/3V3ff9wc33/bnF7/2ptd/9qbXf/amxz/2xudf9sb3n/dXd9/3N1fP9tb3P/b3F1/3Byef9qbXf/
    +cHN9/25wd/91d33/bW9z/25wd/9sb3n/am13/2xudf92eHz/cHJ5/25wd/9qbHP/bnB3/3N1fP9tb3P/
    +bG95/25wd/97fYP/cHN9/3d6g/9ucXv/bG95/3Byef9vcXj/cHJ5/2dqcf9sbnX/bnB3/25wd/9vcXj/
    +bnB1/2xvdv9ydHv/bW9z/3Byef9nanH/cHJ5/21vdv9ydHv/b3F6/3V3ff9jZnD/a254/2ptd/9maXL/
    +Z2ly/3F0e/9oa3X/Zmlz/25xev9pbHT/bG95/25xe/9pbHX/amx1/2hrc/9sb3f/am13/2Zobv9pbHb/
    +Z2pz/2hrdf9tcHj/am12/2Nlbv9wc3r/aGt0/2xudP9sb3n/aGtz/2ZocP9sb3f/amxy/2tud/9ucHb/
    +c3V8/3N1fP9qbXf/bnB3/3Byef9ucHf/cHJ5/3J0ev9vcXj/dnh+/3Bze/9rbXb/cXR+/25wd/9ucHf/
    +am12/3BzfP9sb3f/cXN6/3Fzev9wcnn/Zmlz/2ptd/9qbXf/bG95/2Zpc/9maXP/Z2p0/2Rncf9iZW7/
    +ZGdx/25wd/9kZ3H/Z2px/2Jlbv9zdXz/Zmhu/11gav9kZmz/bG95/2Rncf9maXP/XWBq/2Zobv9qbXf/
    +XWBq/2dqdP9kZ3H/XWBq/2Jlbv9kZ3H/Z2px/2dqdP9sb3n/Z2p0/2psc/9ucXv/cHN9/25xe/9sb3n/
    +bG95/25wd/9sbnX/bnB3/29xdf92eHz/cHN9/3d5f/9zdn//eXuB/25xe/95fIb/c3Z//3V4gf9ucXv/
    +c3V8/3N1fP91eIH/eXuB/3l8hv9zdn//bnF7/25xe/91eIH/cHN9/3N2f/9wc33/bnB3/3N2f/91eIH/
    +c3Z//3Byef95e4H/c3Z//3l8hv9ucHf/b3F1/3d5f/9vcXX/bnB3/3Byef9zdn//cHN9/25xe/93eX//
    +c3Z//2xvef9ucHf/bnF7/3Byef92eHz/eHl9/25wd/93eoP/c3Z//3l7gf9ucXv/cHJ5/3Byef9wc33/
    +bG95/3Bzff9sb3n/d3qD/3V3ff9ucHf/fn+D/3l7gf9vcXX/bG95/3V3ff91eIH/cHN9/29xdf9qbHP/
    +bG95/25xe/9qbHP/bnB3/25wd/91d33/dXd9/2xvef93eoP/dXiB/3t9g/9zdn//bG95/3V4gf9zdn//
    +c3Z//3N2f/91eIH/bG95/3Bzff91d33/bnB3/29xdf9wcnn/c3V8/2xudf97fYP/bnB3/2ptd/91d33/
    +dXd9/21vc/91d33/bnF7/2xvef9maXP/ZGdx/2Zobv9qbHP/Z2p0/25wd/9qbXf/ZGZs/2Zobv9maXP/
    +YmVu/2dqdP9nanH/Z2p0/2psc/9nanT/am13/2ptd/9nanT/dXd9/2xvef9nanT/Zmlz/25xe/9wcnn/
    +bW9z/25wd/9sbnX/d3l//25wd/9wcnn/bnB3/2xudf9vcXX/cHJ5/3Bzff9qbHP/b3F1/3N1fP9ucHf/
    +cHJ5/25wd/9tb3b/b3F4/25wd/9ucXv/Z2p0/3Bzff9vcXj/cnV+/29xef95e4H/Zmlz/3J1fv9qbXf/
    +b3J8/25wd/9xdH7/cnR9/25xef93eYD/cHJ6/3R2fv90dn7/bG95/3F0ff9ucXr/bnB5/29yfP9nanL/
    +bXB6/21wdv9tb3f/dnh9/3J1fv9tb3b/d3l+/29yfP9xdHv/cHN7/2ptd/9maXP/dHZ8/2xudP9ucHf/
    +bnB0/3N1fP9zdXz/Z2p0/2xudf9sb3n/Zmlz/2tud/9xc3r/aGt1/3V3ff9ucHf/ZWhy/3Fze/9qbXf/
    +bG94/21wd/9zdX3/amx0/21wev9ydHr/a254/2Zpc/9ucXv/bG95/3Byef9ucHf/bnB3/25wd/9sbnX/
    +am13/2xvef92eHz/bnB3/25wd/9ucHf/e32D/3V3ff9sbnX/bG95/3V3ff9sbnX/bG95/2Zpc/9qbXf/
    +cHN9/2Rncf9qbHP/bnF7/2psc/9ucHf/c3V8/25wd/9sbnX/c3V8/25wd/9ucHf/cHN9/3d5f/9ucXv/
    +dXd9/3V3ff9wcnn/bG51/25wd/9tb3P/dXd9/3Bzff95e4H/c3Z//3N2f/9sb3n/eXyG/3l7gf9zdn//
    +bnB3/3N1fP9zdXz/c3Z//3t9g/9+gYr/dXiB/3N2f/9ucXv/bnF7/25xe/9ucXv/bG95/2xvef91eIH/
    +c3Z//3N2f/9wcnn/eXyG/3d6g/9+gIb/c3V8/3N1fP95fIb/cHN9/3Bzff9zdXz/dXiB/3N2f/9ucXv/
    +eXuB/3V4gf9ucHf/cHN9/3V4gf91eIH/e32D/36Ahv91d33/c3V8/25wd/91d33/bnB3/25wd/9ucHf/
    +bnB3/2xudf9wc33/am13/3V3ff9wc33/Z2px/3d6g/9zdn//amxz/2xudf9zdXz/dXd9/3Bzff9qbXf/
    +Z2p0/2xudf9wc33/Z2p0/2xudf9sbnX/c3V8/3Bzff9maXP/dXd9/2dqdP9wc33/bnF7/2dqdP9zdXz/
    +bnF7/2xvef9ucXv/bnF7/2ptd/9sbnX/bnF7/2dqcf9maG7/Z2px/2dqdP9kZ3H/dXd9/2psc/9nanH/
    +bnB3/2xvef9maG7/bnF7/2ptd/9ucXv/Zmlz/2psc/9qbHP/bG95/2xvef9wcnn/cHJ5/2dqdP9qbHP/
    +Z2p0/2Zpc/9wc33/bG51/2ptd/9qbXf/am13/2xudf9sb3n/bG51/3Z4fP91d33/bnB3/2Zpc/9wcnn/
    +cHJ5/21vc/9sbnX/b3F1/3h5ff9ucHf/cHJ5/2xudf9sbnX/bG95/25xe/9ucXv/Zmhu/21vc/9zdXz/
    +bnB3/3N1fP9ucHf/b3F2/2ptd/9sbnX/bnB3/2Zobv9zdXz/bnB3/3N1fP9xc3r/eXuC/2hrcv9ydXz/
    +a211/3R2ff9ucHf/cnV//3V3ff9vcXj/dnh9/3Bzff9xdH7/eHqD/3F0fv9wc3z/cHN8/3Byef90d4D/
    +aWxz/3N2f/9ucXv/bXB6/3d5f/90d3//bG95/3V3ff9sb3n/c3Z//29yfP9wcnn/Z2pz/3h6gP9vcXX/
    +cHJ5/25wd/92eHz/c3V8/21vc/9sbnX/bnF7/2psc/9sbnX/cnR8/2Zpc/9wcnn/Zmlz/2Nmb/90dn3/
    +am13/25xev9vcnz/dnh+/21vc/90dnz/dHZ8/25wd/9maXP/bnF7/2ptd/9ucXv/bnF7/2xvef9ucHf/
    +bG51/2psc/9sbnX/dnh8/25wd/9wcnn/bG51/3l8hv9zdn//Z2p0/2xvef9zdn//bnB3/3Byef9sb3n/
    +bG95/25xe/9qbHP/bG95/3Bzff9sb3n/bnB3/3N2f/93eoP/dXiB/3d6g/9wc33/dXd9/3t9g/9+gIb/
    +dXiB/3d6g/97fYP/c3V8/3Bzff9wc33/bnB3/3N2f/9zdn//eXuB/3Bzff9wcnn/am13/3V4gf91d33/
    +cHJ5/25wd/9sb3n/cHJ5/2xvef91d33/d3l//2xvef9sb3n/am13/2xvef9sbnX/bnB3/25wd/9sb3n/
    +d3qD/3d6g/9zdn//bnF7/3t+h/95e4H/foGK/3N2f/9wc33/eXyG/3N1fP91eIH/d3l//3d6g/97fYP/
    +eXyG/3t9g/95e4H/c3V8/3Bzff91eIH/bnF7/3Bzff93eX//bnB3/3N1fP9wcnn/dXd9/2xudf9tb3P/
    +bG51/2ptd/9nanT/cHN9/2ptd/93eX//d3l//2dqcf95e4H/dXd9/2Zpc/9maG7/bG95/2ptd/9nanT/
    +Zmhu/2Jlbv9nanH/am13/2Jlbv9kZ3H/Zmhu/2ptd/9nanT/ZGdx/25wd/9maXP/Z2p0/2dqdP9kZ3H/
    +bnB3/2Rncf9maG7/Z2p0/2ptd/9kZ3H/ZGdx/2dqdP9nanT/Z2px/2dqcf9nanT/YmVu/3Byef9qbHP/
    +amxz/3N1fP9ucXv/bG51/3Z4fP9ucXv/bG95/2Zpc/9qbHP/amxz/25xe/9sb3n/dnh8/3V3ff9sb3n/
    +am13/2xudf9nanT/bnF7/2psc/9wc33/bG95/2xvef9qbXf/am13/2dqdP91d33/bnF7/2xudf9sbnX/
    +cHJ5/3Byef9sbnX/b3F1/29xdf94eX3/bnB3/3Byef9ucHf/amxz/2ptd/9wc33/c3Z//2ptd/9zdXz/
    +dXiB/3N1fP93eoP/c3V8/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/2xvef9wc33/cHN9/3d6g/9nanT/
    +c3Z+/2xvef94eoD/cHN9/3N2f/94eoD/cHJ5/3V3ff9wc33/bnF7/3d5f/9ucXv/bG95/3N1fP9sbnX/
    +dXd9/2RmbP9ucHf/am13/2psc/94eX3/dXd9/29xdf94eX3/b3F1/3N1fP9sb3n/bW9z/2Zobv94eX3/
    +b3F1/3Byef9wcnn/eHl9/3V3ff9tb3P/bnB3/3N1fP9sbnX/bG95/3N1fP9sbnX/dXd9/3Byef9qbHP/
    +d3l//2ptd/9ucXv/cHN9/3V3ff9nanH/c3V8/25wd/9nanH/YGNs/2dqdP9maXP/am13/25xe/9sb3n/
    +bG51/2psc/9nanT/amxz/3N1fP9qbXf/bG51/2psc/93eoP/bnF7/2Rncf9sbnX/cHN9/2xvef9sb3n/
    +am13/2dqdP9qbXf/Z2p0/2ptd/9sb3n/bG51/25wd/9ucHf/dXd9/2xudf9zdXz/b3F1/2xudf9ucHf/
    +dXd9/2ptd/9zdXz/dXd9/2xudf9qbXf/bG95/2xudf9wc33/cHJ5/3l7gf9sb3n/cHN9/25wd/95e4H/
    +dXiB/25xe/9vcXX/b3F1/25wd/9sbnX/c3Z//3t+h/9ucXv/bnF7/3Bzff9sb3n/bG95/2xudf9wcnn/
    +bnB3/3N2f/9zdn//bnF7/2ptd/91eIH/cHN9/3l7gf9wcnn/bW9z/3V3ff9tb3P/bG95/25wd/9vcXX/
    +dXd9/3N1fP9zdXz/c3V8/25wd/9ucHf/c3V8/29xdf9zdXz/d3l//25wd/9wcnn/cHJ5/3Byef9qbXf/
    +bG51/2xudf9sb3n/am13/3N1fP9qbXf/eHl9/3d5f/9vcXX/f4GH/3d5f/9wcnn/b3F1/3Z4fP92eHz/
    +c3V8/2xudf9nanT/bG51/3N1fP9nanT/am13/2xvef9zdXz/cHJ5/29xdf93eX//dXd9/3N1fP9wcnn/
    +b3F1/3Z4fP9wcnn/bnB3/3Byef9wc33/bnB3/25wd/9zdXz/c3V8/21vc/9sbnX/bG95/2dqdP9zdXz/
    +bG51/2xvef91d33/cHJ5/25wd/93eX//cHJ5/3N1fP9qbHP/bnB3/2xvef91d33/c3Z//3d5f/91d33/
    +c3Z//2xvef9ucHf/bG51/3N1fP9tb3P/dXd9/25wd/9sb3n/cHN9/3Bzff9ucHf/eXuB/3N2f/9zdXz/
    +bnB3/3N1fP9ucHf/bG51/2xudf9sbnX/d3l//2ptd/9sb3n/bG95/2dqdP9sbnX/bnB3/3Byef9nanH/
    +b3F1/3N2f/9wcnn/cHN9/2xvef9vcXX/bnF7/29xdf9wcnn/Zmhu/3N1fP9ucHf/dXd9/3V3ff93eX//
    +Z2p0/3N1fP9qbXf/dXiB/2xvef9sb3n/dnh8/21vc/91d33/bG95/2xvef9wc33/bG51/2psc/9ucXv/
    +Zmlz/25xe/9dYGr/Zmlz/3Byef9qbXf/d3l//3Bzff9ucHf/d3l//25wd/9ucXv/bG95/2xvef9nanT/
    +eHl9/25wd/9ucHf/cHJ5/3Z4fP91d33/bnB3/29xdf9zdXz/am13/2xudf9wc33/amxz/3V3ff9sbnX/
    +amxz/3N1fP9qbXf/bG95/3N1fP93eoP/bG51/3V3ff92eHz/bG51/2Zpc/9wc33/cHN9/2xvef9sb3n/
    +bnF7/2ptd/9qbHP/Zmlz/2dqcf91d33/Z2p0/2xvef9maXP/dXiB/25xe/9maXP/bG95/3N1fP9sb3n/
    +bnF7/2psc/9maXP/am13/2psc/9nanT/cHJ5/2dqdP9qbXf/cHJ5/3Z4fP9wc33/dXd9/29xdf9sb3n/
    +cHN9/3l7gf9wc33/c3Z//3V3ff9sb3n/bG95/25xe/9sb3n/dXd9/3N1fP97fof/bnF7/3Bzff9sb3n/
    +eXuB/3N2f/9ucXv/bnB3/3N1fP9ucXv/bnF7/3N1fP93eoP/bG95/25wd/9ucXv/am13/2ptd/9ucHf/
    +bnB3/2xudf9wc33/cHJ5/25wd/9qbHP/dXd9/3Byef91eIH/am13/2psc/9ucXv/bG51/2psc/9qbHP/
    +Zmlz/25xe/9maXP/bnF7/3N1fP9qbXf/bG51/3Byef9tb3P/c3V8/3l7gf9ucHf/c3Z//3N2f/9wc33/
    +bnB3/3Byef9wcnn/c3Z//3Byef93eX//bG95/3Z4fP95e4H/bG51/3+Bh/91d33/bG51/2ptd/91d33/
    +cHN9/3Bzff9sb3n/Z2p0/2xudf9wc33/bG51/3Byef9qbXf/cHJ5/3Byef9qbXf/dXiB/3Bzff9zdXz/
    +bG95/2xudf9zdXz/cHJ5/3Byef9wcnn/dXd9/3Byef9ucHf/bnB3/2xvef9sb3n/am13/2dqdP9nanT/
    +cHN9/2xudf9qbHP/c3Z//2xvef9nanT/bnF7/2ptd/9ucXv/Z2px/21vc/9sbnX/eHl9/3Bzff9zdn//
    +d3l//3Bzff9ucHf/bG95/25wd/9wc33/bG95/3Bzff9ucHf/cHN9/3N2f/9ucXv/bG51/3d5f/9wcnn/
    +bW9z/21vc/9zdXz/bnB3/2xvef9sbnX/bG51/3V3ff9maXP/Zmlz/2Zpc/9dYGr/amxz/2ptd/9sb3n/
    +Zmlz/2xudf9wcnn/bG51/25wd/9tb3P/am13/2xvef9qbXf/bnF7/2Rncf9wc33/bG51/3N1fP9zdXz/
    +dnh8/2dqcf9zdXz/b3F1/3V3ff9sb3n/bG95/3V3ff9ucHf/dXiB/3Byef9wcnn/c3Z//25xe/9ucHf/
    +c3V8/2ptd/9wc33/Z2p0/3V4gf9zdXz/am13/3t9g/91eIH/dXiB/3t9g/9zdXz/dXiB/3Byef9ucXv/
    +c3V8/36Bif9zdn//dXiB/3N2f/95fIb/eXuB/3N1fP9ucHf/dXd9/2xvef9zdn//d3qD/3Bzff95e4H/
    +bnF7/2xudf93eX//bG95/3N1fP93eX//e32D/29xdf92eHz/dnh8/3Byef9sbnX/dnh8/3N2f/9ucXv/
    +c3V8/3V3ff9wc33/c3Z//3Byef9wcnn/eXyG/3Bzff9wc33/am13/3t9g/9wc33/Z2p0/25xe/91d33/
    +bnF7/3N2f/9ucHf/bG51/25wd/9vcXX/bG51/3N1fP9nanT/Zmlz/2xvef9wc33/bG95/2ptd/9kZ3H/
    +amxz/2psc/9ucHf/Z2px/25xe/9wc33/amxz/21vc/9ucHf/cHJ5/25wd/9zdn//d3qD/2xvef9wc33/
    +bG95/3l7gf91eIH/c3Z//3Byef9wc33/d3qD/3V4gf95fIb/foGK/3V4gf9zdn//dXiB/3V4gf91eIH/
    +c3Z//3V4gf9zdXz/eXuB/3N2f/9ucHf/bG51/3V3ff9zdXz/eXuB/2xudf9vcXX/dXd9/2xvef9sb3n/
    +bG95/2xvef92eHz/bnF7/3d5f/97fYP/bnF7/2xvef9wc33/b3F1/25xe/93eoP/bG95/3Byef9wcnn/
    +cHJ5/2xudf9ucHf/bW9z/3Byef9ucHf/dnh8/3Byef93eX//e36H/25xe/+Bg4r/d3l//25wd/9wcnn/
    +c3V8/3Z4fP91d33/c3Z//2xvef9wcnn/c3Z//2xvef9zdn//bnF7/3V4gf9zdn//cHJ5/3+Bh/93eoP/
    +eXuB/3N2f/9wc33/dXiB/3N2f/9zdn//e32D/3d6g/95e4H/dXiB/3N2f/91eIH/c3Z//2xvef9ucXv/
    +bG95/3l7gf9wc33/c3Z//3l8hv9wc33/b3F1/3Bzff9sb3n/c3V8/2Zpc/9tb3P/cHJ5/3Z4fP92eHz/
    +dXiB/3h5ff9zdXz/bG95/25wd/9vcXX/cHJ5/3Byef91eIH/c3V8/3Bzff9zdn//cHN9/2ptd/91eIH/
    +c3Z//2xvef9wcnn/cHN9/2xvef9ucXv/bG95/2xvef93eX//bnB3/3Byef9zdXz/Zmhu/2psc/9qbXf/
    +bnF7/2Zpc/9qbHP/am13/2Zobv9sbnX/Z2px/2Zpc/9nanT/bG51/2xudf9iZW7/dXd9/25wd/92eHz/
    +c3V8/3V3ff9nanT/bnF7/3Byef90d4H/c3Z//3N2f/94eoD/cnR7/36Ahv90d4D/dHeA/3p8gv92eYL/
    +c3Z+/3Z5gv9vcnz/eXuC/21wev91eIH/bG51/2Jlbv9vcnz/a211/2lrcv9xdHv/aWxz/29yfP9qbHP/
    +aWx2/2Zpcv91d33/aWx2/2xveP9qbXf/d3l//3Byef9ucHf/b3F1/3V3ff9sbnX/bnF7/3N1fP9sbnX/
    +dXd9/2xudf9sbnX/d3h9/3Byef9wcnj/dHd7/3h6gP9sbnX/cHN9/3N1fP9tb3b/bG51/3V3ff9zdXz/
    +bnB3/3N1fP9sb3n/am13/2xudf9nanT/bG51/3Z4fP9sbnX/bnF7/2dqdP93eoP/bnF7/2Zpc/9sbnX/
    +dnh8/2xudf91d33/b3F1/2xvef9ucXv/bnB3/29xdf9wcnn/bG51/2psc/9zdXz/dXd9/3Byef9zdXz/
    +bG51/2xudf9qbXf/c3V8/2xvef9zdXz/dnh8/25wd/9ucHf/cHJ5/3Byef9ucXv/dXd9/3t+h/9sb3n/
    +cHJ5/2ptd/93eX//c3Z//3Bzff9ucHf/bG95/25xe/9wc33/c3Z//3l8hv9zdn//cHN9/3Bzff9wc33/
    +cHN9/3Byef9wcnn/bnB3/3N2f/9ucXv/cHN9/2dqdP91eIH/dXd9/3d5f/9sbnX/bG51/3Bzff9sb3n/
    +am13/2xudf9ucHf/dXd9/3Byef9zdn//d3l//2xudf9vcXX/c3V8/29xdf9ucHf/eHl9/3Byef9ucXv/
    +bnF7/2ptd/9nanT/bG95/2xudf9wcnn/bnB3/3V3ff9sbnX/dXd9/3l7gf9vcXX/gYSN/3d5f/9sb3n/
    +cHJ5/3Z4fP91d33/dnh8/3Byef9maG7/bnB3/3Bzff9wcnn/dXiB/3Byef9wc33/c3Z//3N1fP9/gYf/
    +bnF7/3l7gf9wc33/c3V8/3l8hv93eoP/cHN9/3d6g/9wc33/c3Z//25xe/9ucXv/cHN9/3Bzff9ucXv/
    +cHN9/3Byef93eoP/cHN9/3Bzff93eoP/dXiB/3Bzff91eIH/dXiB/3V4gf9qbXf/cHN9/3Bzff95e4H/
    +c3Z//3l7gf95e4H/d3qD/3Bzff9wc33/dXiB/3d6g/9zdn//d3qD/3N2f/91eIH/c3Z//3Byef9ucHf/
    +d3l//3N2f/9sb3n/bG95/25xe/9sbnX/c3V8/2xudf9ucHf/d3l//2dqdP9zdn//c3Z//2Zpc/9vcXX/
    +bnB3/2xvef9kZ3H/bG51/3N1fP9vcXX/bnB3/25wd/9zdn//cHN9/25xe/9wc33/Zmlz/3d5f/9sb3n/
    +dHeA/3h6gf93eX//am13/3BzfP9sb3n/cnV+/3J0e/91d33/dXh9/29xdv94eoH/bXB3/25weP9xdH3/
    +bnF7/25wd/9wcnr/aWx2/29ye/9laG//aWx1/3J0ff9rbnj/cnV+/21weP9sb3n/dnh//2xvef9ydHv/
    +cXN6/2psdP9naXD/cXN5/2psdP9sbnX/bG95/3d6hP9tcHr/cHN9/2xvef9wc33/bG95/25xe/9ydX7/
    +bXB6/3h6gP9vcXj/bG51/3Z3ff9ydHv/b3F4/3N1e/90dn3/bnB0/3N1e/90dn3/bnF6/25wd/92eHz/
    +c3Z//3Byef9wcnn/c3V8/2xudf9zdXz/bnB3/2xudf94eX3/am13/3Bzff9maXP/c3Z//3Bzff9maXP/
    +bG51/3N1fP9sbnX/dXd9/2xudf9ucHf/bnF7/25wd/9ucHf/cHN9/2xvef9sbnX/c3V8/3h5ff9wcnn/
    +c3V8/21vc/9vcXX/bG51/3l7gf9wc33/d3l//3V4gf9wcnn/bnF7/3Bzff9ucXv/bG95/3h5ff93eX//
    +bW9z/2xudf9nanT/d3l//25xe/9sb3n/amxz/2psc/9qbXf/bG95/2xvef9zdXz/cHJ5/2xudf9sb3n/
    +am13/2xudf9sbnX/am13/2dqdP9ucXv/bG95/2xudf9maXP/dXd9/25xe/95e4H/bG51/25wd/9zdXz/
    +cHJ5/2xvef9qbXf/bG51/3Z4fP9ucHf/dXd9/3d5f/9sbnX/b3F1/3Bzff9tb3P/bnB3/3V3ff9ucXv/
    +cHJ5/25xe/9sbnX/bW9z/2xvef9qbXf/amxz/2ptd/9zdXz/am13/3Z4fP91eIH/bG51/3+Bh/91d33/
    +bW9z/2xudf9wc33/bnF7/3N1fP9wcnn/ZGdx/21vc/9zdXz/bW9z/3Z4fP9sbnX/cHJ5/25wd/9sbnX/
    +eXuB/2ptd/91d33/bG51/2dqcf93eX//am13/2xvef9ucXv/am13/25xe/9qbHP/bG51/2ptd/9sb3n/
    +cHJ5/25wd/9sbnX/dXd9/2xvef9ucHf/d3qD/3Bzff9ucXv/c3Z//25xe/9ucXv/Z2p0/2xvef9ucXv/
    +eXuB/3V4gf93eoP/dnh8/3N1fP9sbnX/bW9z/2xudf9ucHf/bW9z/2xvef9sbnX/bG95/2xudf9maXP/
    +YmVu/2xvef9nanT/Zmlz/2xudf9sb3n/am13/25xe/9qbHP/bG51/3V3ff9qbHP/bG95/3Bzff9maXP/
    +am13/21vef9tcHr/amxz/2psc/9zdXz/bG51/2xudf9vcXX/c3V8/3V3ff9sb3n/bnF7/2dqdP91eIH/
    +bG95/3R2e/92eHz/dHZ9/2ptdv9ucHn/bG93/3Bze/9ucXn/c3Z+/3Fzev9sbnb/dnmC/3Byev9ydX7/
    +dnh+/3N1fv91d33/d3l//25wef91eID/a212/3Bzff9vcnz/bW94/3V3f/9xdHz/bnF7/3V3gP9wcnv/
    +cXN6/3R2fP9tcHr/bnB5/3N1fv9tb3j/bnB5/3J0ef93eoH/bW94/3V3ff9sbnX/cHJ5/25wd/9wcnn/
    +dHZ8/21wef93eX7/bnF5/2tueP9xdHz/b3J6/21vdv9ucXn/c3V9/2xvdv9tcHj/bnF7/29yev9sb3n/
    +dXd9/3V3ff9ucXv/dXiB/3V4gf9sb3n/cHN9/2xvef9qbXf/dXd9/3N1fP91d33/Zmhu/3V3ff9ucXv/
    +ZGdx/2psc/9wc33/bG51/25wd/9nanH/Z2p0/2psc/9maG7/Zmhu/2xvef9nanT/Zmlz/3Byef92eHz/
    +c3V8/3Byef9sb3n/bnB3/25wd/95fIb/cHN9/3l7gf91eIH/cHJ5/3N2f/91eIH/eXyG/3V4gf9+gIb/
    +foGK/3N1fP9wc33/cHN9/36Biv97fYP/c3Z//3Bzff9zdn//c3Z//3N2f/9zdXz/dnh8/25wd/9ucHf/
    +cHJ5/21vc/9vcXX/b3F1/2xvef9sb3n/cHN9/3Bzff9ucHf/Z2p0/3d6g/91eIH/foGK/2ptd/9ucXv/
    +dnh8/3V3ff9sb3n/bG95/3Byef91eIH/bnF7/3V4gf93eoP/bG95/3Bzff91eIH/bnF7/25xe/94eX3/
    +cHJ5/3N2f/9wc33/cHJ5/3Byef9wc33/bnB3/3Byef9ucXv/eXuB/25wd/91eIH/dXiB/2xvef9/gYf/
    +eHl9/29xdf9sbnX/cHN9/25xe/91d33/bnF7/2BjbP9qbHP/am13/2Zobv9qbXf/Zmhu/2Zpc/9nanH/
    +Z2px/3V3ff9qbHP/bG95/2xudf9nanH/cHJ5/2xvef9sb3n/bG95/2xudf9ucHf/b3F1/29xdf9ucXv/
    +bnF7/3V4gf9ucXv/bnB3/25xe/9wc33/cHJ5/3l7gf9wc33/c3Z//3V4gf9zdn//bnF7/2xvef9zdn//
    +d3qD/3t9g/93eoP/eXyG/3l7gf93eoP/dXiB/3N1fP9wcnn/c3Z//3Bzff91eIH/cHN9/3l7gf9wc33/
    +c3V8/25xe/97fYP/eXuB/3Bzff9wc33/cHN9/25xe/9sb3n/am13/29xdf92eHz/am13/25xe/9zdn//
    +Zmlz/2xvef9vcnz/b3J7/2dqdP9qbXf/c3Z//25xe/9sb3n/bnF7/3V4gf91eIH/cHN9/3N2f/9sb3n/
    +eXuB/29ye/93eYD/eXuB/3l7gf9wc3v/dHd+/3V3fv92eH//c3aA/3t9hP90dn3/bnF6/3V3gP9vcnz/
    +dnmD/3d6hP90d3z/d3mA/3x9gv91eH//e3yA/25xe/91d4D/dHd//29yfP92eYL/cnV+/29yef93eoL/
    +dXiB/3F0ff93eX//bG94/2xueP9vcXj/bG94/21wef9ydHv/dnh8/29xef9wcnn/bG51/3N1fP9qbHP/
    +b3F3/3J0e/9rbnj/eHp//3Byef9sb3n/dXiB/3V4gf9ydHv/b3F5/29yfP9ucHj/cXN6/29yef9ydX3/
    +bnB3/3d5f/91eIH/bnF7/3V3ff91d33/bnB3/3N1fP9ucHf/bG51/3V3ff9zdXz/dnh8/2dqcf92eHz/
    +dXd9/2dqdP9sb3n/dXd9/21vc/91d33/am13/2xudf9tb3P/bW9z/2xudf9wcnn/bG51/2psc/9zdXz/
    +c3V8/3N1fP9wcnn/bG51/2xudf9vcXX/eXyG/25xe/91eIH/bnF7/2xvef9ucXv/bnF7/25xe/9wcnn/
    +dXd9/3V4gf9sb3n/cHJ5/2psc/91d33/c3V8/2xudf9ucHf/bG95/2ptd/94eX3/bnB3/3V3ff9ucHf/
    +cHJ5/3Byef9qbXf/am13/2xudf9qbHP/bG51/2xvef9ucXv/bG51/2dqdP91d33/bG95/3V4gf9maXP/
    +bG95/3V3ff9zdXz/bG51/2psc/9sbnX/bnF7/2ptd/9wc33/d3l//2xudf9wcnn/dXd9/25wd/9ucXv/
    +dXd9/3V4gf91eIH/c3Z//3Byef9sb3n/bnB3/25wd/9sbnX/bG51/3V3ff9ucHf/d3qD/3V4gf9ucHf/
    +f4GH/3V4gf9tb3P/b3F1/3V3ff9ucXv/dXiB/3Bzff9nanT/bG95/25xe/9ucHf/dXd9/21vc/91d33/
    +bnB3/25wd/93eoP/bnB3/3N1fP9ucHf/bW9z/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/25wd/9ucHf/
    +bnB3/29xdf91d33/bnB3/21vc/9sbnX/am13/2psc/9wc33/bG95/2ptd/9ucXv/Z2p0/2psc/9iZW7/
    +Zmlz/2ptd/9nanT/Zmhu/2ptd/9maXP/Zmlz/2dqcf9maG7/ZGdx/2Rncf9kZ3H/Zmlz/2Jlbv9nanT/
    +YmVu/2BjbP9kZ3H/bG95/2xvef9gY2z/Zmhu/2RmbP9nanT/ZGdx/11gav9kZ3H/Z2p0/2Zpc/9nanT/
    +am13/11gav9maXP/bG95/2xveP9oa3T/Zmlz/2ptd/9qbXf/bG51/21vdv9wc3z/bG95/2ptd/9qbXf/
    +Zmlz/3N1fP9sbnb/cXN5/3F0ff90d3//bnB1/25wd/9vcXn/bXB6/25weP9wc33/bW92/2psc/9vcnv/
    +am13/29yfP9ucXv/bG51/25wd/9ydHv/bnF6/3d6gv9ydHv/c3Z//3V4gf91eIH/e32D/3V4gf90dn3/
    +e32D/3d6g/9xdH7/e32G/3d5ff91eIH/dnh9/3V4gf90dn3/eXuA/3x/h/94eoH/enyC/3l7gf99foH/
    +c3Z//3N2f/94eoD/cXN5/3p7gP9xc3f/bG95/3V3ff91d33/bW92/21vdv9tb3f/aGt1/2ttdP9oa3X/
    +bG95/2xvef91d33/c3Z//3Byef9wc33/dXd9/2ptd/9wc33/bG51/2xudf91d33/cHJ5/3Z4fP9nanH/
    +dnh8/3N2f/9sbnX/bW9z/3N1fP9ucHf/d3l//25wd/9ucHf/b3F1/21vc/9sbnX/c3V8/21vc/9qbXf/
    +cHN9/3V3ff9zdXz/c3V8/21vc/9sbnX/bG51/3N2f/9qbXf/bnF7/2dqdP9maXP/Z2px/2dqcf9maXP/
    +ZGdx/2xvef9wcnn/amxz/2psc/9maXP/c3V8/25xe/9sbnX/am13/2psc/9sbnX/c3V8/2xudf9sb3n/
    +bG51/2ptd/9qbXf/am13/2xvef9sbnX/bG51/2xudf9ucXv/cHN9/2ptd/9ucHf/d3l//25wd/93eX//
    +amxz/25wd/92eHz/dXd9/2xudf9qbXf/bG51/3V3ff9sb3n/bG95/3d5f/9qbXf/bG95/3Bzff9sbnX/
    +cHJ5/3V3ff9zdn//c3Z//3Bzff9ucHf/bG95/25wd/9sb3n/bnB3/2xvef91d33/bnB3/3l8hv93eX//
    +bW9z/35/g/93eX//bnB3/2xudf9zdXz/bnB3/3V3ff9wcnn/Zmlz/29xdf9zdXz/bnB3/3Z4fP9tb3P/
    +c3V8/3N1fP9vcXX/e32D/25wd/9wcnn/bnF7/2xudf9zdXz/am13/2xvef9qbXf/am13/2ptd/9tb3P/
    +bG51/2xudf9vcXX/c3Z//25xe/9ucHf/bG95/2xvef9ucHf/dnh8/3Byef9ucHf/cHJ5/25wd/9ucHf/
    +amxz/3Byef9zdn//dXiB/3Bzff97fYP/c3Z//3V4gf9sb3n/bnB3/29xdf9ucHf/bG51/3Byef9qbXf/
    +c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/ZGdx/2ptd/9sbnX/c3V8/2xudf9kZ3H/bG51/25xe/9nanT/
    +bG95/2xvef9iZW7/am13/25xef9vcnr/am13/2dqdP9ucHf/bG51/21vc/9tb3T/cnV8/25xev9qbXf/
    +bnB3/25wd/93eH3/bW92/3Byef9vcXr/bG95/2dqc/9naXP/Zmlz/2Nmb/9nanH/aGp0/2Vocf9maXP/
    +bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/bW9z/2ptd/9ucXv/am13/25xe/9sb3n/
    +bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/bnB3/29xef91d33/bG50/2xveP9qbXf/
    +cHN9/2psc/9sbnb/bG95/2xud/92eH7/bG95/2xudf9zdXz/bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/
    +bnB3/3d5f/9sbnX/dXd9/3Byef9ucHf/c3V8/3V3ff9ucHf/dXd9/2xvef9qbXf/c3Z//25xe/91d33/
    +am13/3l7gf93eX//cHJ5/3N1fP91eIH/cHJ5/3t+h/9wcnn/bG95/29xdf9ucHf/bG51/3V3ff9tb3P/
    +bG51/3V3ff92eHz/c3V8/3Byef9sbnX/amxz/2xudf95e4H/bG51/3Z4fP9ucHf/bG51/3Byef9ucHf/
    +cHJ5/25wd/91d33/eHl9/29xdf9sb3n/bG95/3V4gf93eX//bnF7/3d6g/9zdn//c3Z//3l7gf9zdn//
    +dXiB/3V3ff95e4H/e32D/3Z4fP95e4H/dXd9/3N2f/91eIH/dXiB/3d6g/9zdXz/bnF7/36Ahv93eoP/
    +foGK/3V3ff9zdn//d3qD/3t9g/9wc33/bnB3/2xvef9zdXz/cHN9/3Bzff91eIH/bnB3/25wd/9zdXz/
    +bG51/2xudf9zdXz/dXd9/3Bzff91eIH/cHJ5/25xe/9wcnn/bnB3/2xvef9ucHf/dnh8/25wd/95e4H/
    +d3l//3Byef9+f4P/dXd9/25wd/9sbnX/c3V8/2xudf91d33/bG95/2Rncf9qbHP/am13/2dqcf9ucXv/
    +am13/2ptd/9qbXf/Z2px/3N2f/9sbnX/bnF7/25xe/9sbnX/c3V8/2xvef9sb3n/bG51/29xdf9sb3n/
    +bnB3/2xvef9ucXv/bnB3/3N2f/9sb3n/bnB3/25wd/9wcnn/b3F1/3Z4fP9ucXv/bG95/25xe/9wc33/
    +bnF7/2xvef9zdn//c3Z//3V4gf9wc33/eXuB/3N2f/9zdn//bnB3/25wd/9tb3P/bnB3/25wd/9zdXz/
    +bG51/3N1fP9qbXf/Z2px/25wd/92eHz/bnF7/2dqdP9sbnX/bnB3/3Bzff9ucHf/Z2px/21vc/9sb3n/
    +Z2p0/2ptd/9sb3n/ZGZs/2xudf9ucXv/b3J6/2ptd/9qbXf/bG95/2xvef9qbHP/bW9z/3J1fP9wcnz/
    +am13/25wd/9ucHf/dXd8/2xudf9vcnj/bnF7/29yfP9nanT/ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/
    +am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/
    +bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/bnB3/2xudf9ydHv/dnh+/25wd/9vcXn/
    +bnB3/3Z4fP9sbnX/bnB3/29xef9tb3X/dnh9/3Byef9vcXX/dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/
    +bG51/2xudf9wc33/b3F1/3Z4fP91d33/bG51/25xe/9wc33/bG51/3V3ff9sbnX/amxz/3N1fP9ucHf/
    +c3V8/2Zobv9wc33/cHN9/2ptd/9vcXX/c3V8/29xdf92eHz/bW9z/2ptd/9sbnX/bG95/2dqdP9wc33/
    +bG51/2xudf9zdXz/dXd9/3Bzff9wcnn/bG51/21vc/9qbHP/c3Z//2xudf9zdXz/bnB3/2xudf9zdXz/
    +bW9z/2ptd/9tb3P/bnF7/3Z4fP9ucHf/bnB3/2xvef91eIH/dXd9/2xvef9zdn//bnB3/2xvef91d33/
    +bG95/25wd/9ucHf/c3Z//3N2f/9ucXv/cHJ5/25xe/9ucHf/bnF7/3N2f/9zdn//bnB3/2dqdP91eIH/
    +bnF7/3d5f/9sb3n/b3F1/3Bzff93eX//b3F1/25wd/9qbXf/c3V8/3Byef9ucHf/eHl9/25wd/9wcnn/
    +cHJ5/2xvef9wcnn/c3Z//3d5f/9qbHP/Z2p0/2dqcf9sbnX/Z2px/2dqdP9nanT/bG51/3N1fP9qbXf/
    +dXiB/3V3ff9sb3n/e32D/3V3ff9qbXf/am13/3Bzff9qbXf/dnh8/2ptd/9kZ3H/bG51/3Z4fP9ucHf/
    +dnh8/3Byef9wc33/dXiB/25xe/97fof/bnF7/3Bzff9wc33/bnF7/3d5f/9ucXv/cHJ5/25wd/9wcnn/
    +bnF7/25wd/9ucHf/cHN9/25xe/9zdn//cHN9/3N1fP9ucXv/bG95/25wd/93eX//bG95/3Byef9qbXf/
    +bG51/25xe/9tb3P/dXd9/25wd/9ucXv/bnB3/3h5ff9wcnn/dXd9/2xudf9qbXf/bG51/2ptd/9qbHP/
    +bG95/2Rncf9ucXv/ZGdx/2Jlbv9kZ3H/c3V8/25xe/9qbXf/bG51/25wd/9zdXz/c3V8/2Zobv9tb3P/
    +bnB3/2xudf9ucHf/bG95/2RmbP9qbXf/bW93/25xef9rbnf/am13/25wd/9zdXz/bnB3/25wd/91d3z/
    +dXd7/25wd/9tb3P/bW9z/3N1e/9sb3n/cnR6/3J0e/9xc3r/bG51/2psc/9ucHf/bG95/3Bzff91d33/
    +bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn//bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/
    +dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/bnB3/2xvef9tb3n/dHZ8/3h6g/9tb3j/
    +cHN8/25wd/94eX3/Z2px/25weP9sbnb/cHJ5/3h6gf91eIH/cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/
    +cHJ5/25xe/9ucHf/d3qD/3Byef91d33/cHN9/3Byef9wc33/dXd9/2xvef91d33/cHJ5/2dqdP93eX//
    +bnF7/3h5ff9nanH/dXd9/3V3ff9wcnn/b3F1/3N1fP9ucHf/d3l//21vc/9sbnX/bG51/25wd/9nanT/
    +bnF7/2xudf9qbHP/dXd9/3V3ff9wc33/bnF7/2xudf9qbXf/am13/3V3ff9wcnn/dXd9/25wd/9qbXf/
    +cHN9/25wd/9ucHf/bW9z/25xe/95e4H/bnB3/25xe/9ucHf/eXuB/3V4gf9ucXv/dXd9/25wd/9ucHf/
    +c3Z//25wd/9ucHf/bG95/3Byef9ucXv/Z2px/25wd/9vcXX/b3F1/29xdf91d33/bnF7/2ptd/9kZmz/
    +bnF7/2xudf91d33/Z2p0/2psc/9ucXv/c3V8/2dqdP9nanT/Z2p0/3Bzff9sb3n/bG51/3N1fP9maXP/
    +bnF7/3Bzff9sbnX/amxz/2xvef9wc33/bnB3/3Byef9sb3n/c3Z//2xvef9sb3n/bG95/2xvef9zdn//
    +b3F1/3l7gf93eX//c3V8/36Ahv93eX//bG95/2xvef95e4H/bnF7/3V4gf9ucHf/Z2px/25xe/93eX//
    +bnF7/3d5f/9ucXv/c3V8/3Byef9tb3P/eXuB/2xudf9ucHf/cHJ5/25wd/9zdXz/bnB3/25wd/9sbnX/
    +am13/2psc/9nanT/amxz/2ptd/9sbnX/c3V8/21vc/9qbHP/am13/2xvef9qbXf/d3l//2xudf9sb3n/
    +am13/2ptd/9wc33/am13/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9vcXX/b3F1/21vc/9tb3P/
    +am13/25xe/9maXP/bG95/2Zpc/9kZ3H/Z2p0/3N1fP9sb3n/Zmlz/2xvef9qbXf/c3V8/2xvef9maXP/
    +bG51/25xe/9vcXX/bnB3/29xdf9nanH/bW9z/2ttdP9sb3n/bG92/2xudf9tb3P/c3V8/2xudf9ucHf/
    +dHZ9/29xef9tb3P/bG51/2psc/9zdXz/a254/29xev9ydHv/b3J7/21vc/9nanH/bG51/2dqdP9qbXf/
    +bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/am13/2psc/9sb3n/bG51/2xvef9wc33/
    +am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/c3Z//25wd/9qbXf/Z2p0/29yfP94eoP/
    +b3F4/3V3ff9ucHf/dXd9/2Zpc/9sb3n/am13/2xud/90dn3/cHJ6/2xudf94eX3/cHJ5/2xudf9qbXf/
    +am13/2xudf9sbnX/am13/3N1fP9sbnX/dXd9/25wd/9tb3P/cHJ5/25xe/9qbHP/c3V8/21vc/9qbHP/
    +dnh8/3Bzff91eIH/Z2px/25xe/9zdn//bnB3/25wd/9wc33/bG95/3d5f/9vcXX/bnF7/3N1fP9zdn//
    +am13/3N2f/9zdn//bnB3/3d5f/93eoP/dXiB/3Bzff9wc33/bG95/2xvef91eIH/cHJ5/3N2f/9ucXv/
    +b3F1/3V3ff9sb3n/cHJ5/29xdf9wcnn/d3l//25wd/9vcXX/bG51/3V4gf91eIH/cHJ5/3V4gf9wcnn/
    +cHN9/3d5f/9ucHf/cHJ5/25wd/9sb3n/cHJ5/2psc/9ucHf/cHJ5/29xdf9sbnX/dnh8/25wd/9sbnX/
    +Zmhu/25wd/9tb3P/dXd9/2ptd/9sbnX/bnF7/2xvef9kZ3H/Z2p0/2Zpc/9sb3n/Z2p0/2dqdP9wc33/
    +Z2p0/3Bzff9wc33/am13/2xudf9ucXv/c3V8/25xe/9zdXz/bG51/3Byef9ucHf/bnB3/25wd/9vcXX/
    +dXd9/2xudf94eX3/dXd9/3Byef93eoP/c3V8/2xudf9sbnX/eHl9/3Byef91d33/amxz/2Jkav9sbnX/
    +bnF7/2psc/9wcnn/Z2px/2Zpc/9maXP/ZGdx/3Bzff9qbHP/amxz/2xvef9qbXf/am13/2ptd/9qbXf/
    +bG51/2psc/9sbnX/bG51/2dqdP9qbXf/am13/25xe/9qbHP/bG51/2ptd/9wc33/am13/3N2f/9qbXf/
    +cHN9/2ptd/9ucHf/dXd9/25wd/91d33/bnB3/3Byef9wcnn/cHJ5/21vc/9ucXv/bG51/25wd/9qbXf/
    +am13/2ptd/9wc33/Z2p0/25xe/9qbHP/Z2px/2xvef93eX//c3Z//2xvef9ucXv/bnB3/3Z4fP9wcnn/
    +amxz/2xudf9zdn//bnB3/2xvef9ucXv/Zmlz/25xe/9rbXT/b3J6/29xdv9ucHf/bnB3/3Bzff9sb3n/
    +bnB3/3Z4fv9ucXr/b3F1/25wd/9tb3P/dnh+/2xvdv9tcHr/c3V7/29yfP9qbHP/YmVu/2xudf9qbXf/
    +bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/cHJ5/25xe/9wcnn/d3l//29xdf91eIH/
    +dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/cHN9/3V4gf9ucXv/bG95/2ptd/9wc3z/
    +dnh//3Byef91eIH/c3Z//3t+h/9wc33/d3mC/3Z4f/9ydHn/dHZ+/3BzfP9sbnb/cHN9/3Byef9tb3P/
    +bG95/2xudf9vcXX/bnB3/2xvef9zdn//d3l//3l7gf93eoP/cHN9/3d6g/93eoP/bnB3/3d5f/9zdXz/
    +cHN9/3t9g/9zdn//dXiB/2Zobv9ucHf/dXd9/2xvef9ucHf/c3Z//2xvef93eX//b3F1/25wd/9tb3P/
    +cHJ5/2dqcf9ucXv/c3V8/2xvef91d33/eXyG/3d6g/91eIH/c3Z//25wd/9qbXf/eXuB/3Bzff9zdn//
    +dXiB/3Bzff95fIb/dXd9/3l7gf91d33/eXuB/3+Bh/9zdn//dXiB/3Z4fP+Bg4r/f4GH/3d5f/99foH/
    +dXd9/3d5f/9+f4P/eHl9/3h5ff93eX//d3l//3l8hv9ucXv/dXiB/3d6g/9zdXz/c3V8/3t9g/93eoP/
    +c3Z//2xvef9zdn//dXiB/3l8hv9wc33/cHN9/25xe/93eX//bnB3/25wd/9sbnX/cHN9/25wd/9sb3n/
    +cHN9/2xudf91d33/dXd9/3N1fP9vcXX/cHJ5/3h5ff9wcnn/dXd9/25xe/9zdn//cHN9/25wd/9wcnn/
    +c3V8/3V4gf9zdn//e36H/3t+h/95fIb/f4GH/3t+h/9wc33/dXd9/3+Bh/97fYP/foGK/3d6g/9ucXv/
    +dXiB/3l8hv9zdXz/eXuB/3Bzff9ucXv/bG95/25wd/95fIb/bnF7/25xe/9wc33/bnF7/3Bzff9wcnn/
    +bnF7/3N1fP9wcnn/bnF7/2xvef9ucHf/bW9z/25wd/9zdXz/bnB3/2xvef9ucXv/d3l//25xe/93eoP/
    +bnF7/3N2f/9wc33/bG95/3V3ff9sb3n/dnh8/25wd/9zdXz/bnB3/25xe/9ucHf/cHN9/2xudf9sbnX/
    +bW9z/2ptd/9tb3P/cHN9/2ptd/9ucHf/Z2p0/2Zpc/9nanH/dXd9/3Byef9nanH/bG95/2xudf9wc33/
    +am13/2dqdP9sbnX/bnF7/2ptd/9sb3n/bG95/2BjbP9nanT/amxz/2xvef9rbXX/bG51/2dqcf9nanT/
    +ZGdx/2Zobv9qbXf/Zmlz/2Jlbv9nanH/ZGdx/25wd/9sb3j/bW92/3N1ef9tb3b/bnB3/2dqdP9ucHf/
    +bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn//am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/
    +c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/c3V8/2psc/9wcnn/am13/2dqdP9qbHP/
    +bnB3/3R3fv9rbnX/bnB3/21vdf91eIH/Z2p0/2xvef9sb3n/bG92/3R2ff9wc33/bG95/3Bzff9zdn//
    +cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/2xudf9zdn//c3Z//2xvef9zdXz/dXd9/2xvef95e4H/
    +cHJ5/25wd/91eIH/bnF7/3d6g/9maG7/bG95/3V3ff9sb3n/bnF7/3d6g/9wc33/eXuB/25wd/9ucHf/
    +bW9z/3N1fP9qbHP/bnF7/2xvef9nanT/c3V8/3V3ff9qbXf/bG51/2xvef9qbHP/ZGdx/3N1fP9qbXf/
    +cHJ5/25wd/9tb3P/cHJ5/2xudf9qbXf/amxz/2xvef93eX//Z2px/21vc/9sbnX/d3l//3N1fP9ucHf/
    +dnh8/2xvef9ucHf/eHl9/29xdf9qbXf/amxz/25wd/9wcnn/bnB3/29xdf9tb3P/am13/2xudf9zdXz/
    +bnF7/2ptd/9nanH/cHN9/2psc/9wc33/bG51/2xudf9sb3n/c3V8/2Rncf9nanH/YmVu/25xe/9nanT/
    +bG51/3Bzff9qbXf/bG95/3Bzff9sb3n/bG51/25xe/93eX//cHN9/3d5f/9ucXv/c3Z//3Bzff9ucHf/
    +bnB3/2xvef91d33/b3F1/3Z4fP94eX3/c3V8/3l7gf91d33/bG51/2dqdP93eX//bnB3/3l7gf9wcnn/
    +Z2px/29xdf94eX3/bnB3/3l7gf9ucHf/bG95/3Bzff9ucXv/d3qD/3N2f/93eoP/e32D/3d5f/9+f4P/
    +d3l//3d5f/97fYP/ent//3t+h/95e4H/eXuB/3l7gf97fYP/e32D/3V4gf93eX//fX6B/3+Bh/93eX//
    +f4KM/3d6g/93eoP/cHN9/2xvef91d33/bnB3/3V3ff9qbXf/bG95/2ptd/9ucXv/amxz/2xvef9qbHP/
    +amxz/2dqcf9nanH/Zmhu/2dqdP9nanH/bG51/2Rncf9dYGr/XWBq/2xvef9nanT/YGNs/2Zpc/9sb3n/
    +bnF7/25xe/9qbXf/bG51/2xudf9ucHf/dXd9/3V3ff9maG7/bG51/3N1fP90dn7/cXN5/25wd/9vcXX/
    +bnF7/2xvef9vcXX/dXd9/25xe/9qbXf/bG95/25wd/93eH3/c3V8/3N1e/93eX//c3Z//25xe/9nanT/
    +bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/
    +bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/
    +bG51/25xe/90d37/cHN6/3V3gP9wc33/foGK/3N1fP91eIH/cXR9/21wev9ydX3/cHN8/2ptd/9sb3n/
    +bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9zdn//dXiB/3l7gf9wc33/c3Z//3d5f/9qbHP/
    +d3l//29xdf9qbHP/c3V8/29xdf93eX//Z2px/25wd/94eX3/bnB3/3Byef91d33/cHJ5/3d5f/9sb3n/
    +bG95/25wd/9ucHf/Z2p0/3Bzff9sb3n/bW9z/3N1fP91d33/bG95/2ptd/9ucXv/bW9z/2Zpc/91d33/
    +bG95/3Bzff9qbXf/bG51/2xvef9qbHP/bG51/2psc/9qbXf/dXd9/2Rncf9qbHP/Zmlz/3Bzff9zdXz/
    +Zmlz/3V3ff9qbHP/amxz/3V3ff9sbnX/am13/2dqdP9sb3n/bG95/2ptd/9qbXf/bW9z/29xdf9ucHf/
    +eXuB/3Bzff9sb3n/am13/3Bzff9ucHf/eHl9/25xe/9wc33/d3qD/3t9g/9ucHf/bnB3/2ptd/93eoP/
    +c3Z//3N1fP95e4H/c3V8/3N2f/91eIH/eXuB/3N1fP9zdn//d3qD/2ptd/9wc33/bG51/2ptd/9nanT/
    +Zmlz/2Zpc/9iZW7/bG95/2psc/9wc33/dXd9/2xvef93eoP/bnF7/2ptd/9sbnX/dXd9/2ptd/95e4H/
    +bnF7/2dqdP9sb3n/eHl9/29xdf93eX//bnB3/25xe/9ucXv/bnB3/3l7gf9ucXv/c3Z//3V4gf9zdXz/
    +dXiB/3Bzff9wcnn/bnB3/3Byef91eIH/cHJ5/25wd/9sb3n/bG95/3Bzff9ucHf/bW9z/3V3ff94eX3/
    +cHJ5/3l7gf9wcnn/bG95/25xe/9qbHP/c3V8/2ptd/9wc33/bW9z/3Byef9ucHf/c3V8/29xdf91d33/
    +bG95/25xe/9ucHf/bG95/3Byef9wc33/bnB3/25xe/9zdXz/bG95/3N2f/97fof/e32D/25xe/93eoP/
    +eXyG/3V4gf93eoP/cHJ5/25xe/9zdXz/c3V8/3Bzff9zdn//ZGdx/25wd/9tb3T/cXN6/3Fzev9ucXr/
    +bnB3/2xvef9sb3n/b3F1/3d5f/9ucHf/bW9z/25wd/9ucHf/d3l//3J0ff9xdHv/cnR7/29xeP9ucHf/
    +Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/
    +bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/
    +bG51/2psc/9vcXn/c3V7/25wdf9xc3r/bW9z/3d5f/9qbXf/am13/2ttdP9oa3X/c3Z9/3V3ff9sb3n/
    +bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/am13/2xvef9sb3n/Z2px/2Zpc/9qbXf/
    +XWBq/3Byef9maXP/XWBq/2xvef9maG7/c3V8/2Jlbv9qbXf/dXd9/2dqdP9ucXv/c3V8/2xudf9zdXz/
    +bG51/2xudf9vcXX/cHJ5/29xdf9zdn//c3Z//3Bzff91eIH/eXyG/3V4gf9wc33/cHN9/25wd/9qbXf/
    +d3l//25xe/9wcnn/bnB3/21vc/9zdXz/bG51/2ptd/9qbHP/bG95/3V3ff9iZW7/bG51/2Rncf9sb3n/
    +cHJ5/2Jlbv9qbXf/Z2px/2Zobv9ucHf/Zmlz/2Rncf9kZ3H/Z2p0/2xudf9qbHP/bG51/2dqdP9sbnX/
    +am13/3V3ff9ucXv/bnB3/2xvef9zdn//bG95/3h5ff9ucHf/cHJ5/3V3ff94eX3/bG51/2xudf9nanT/
    +cHN9/25wd/9tb3P/bnF7/2ptd/9sb3n/bnF7/3Bzff9qbXf/bnF7/3d5f/9ucHf/c3Z//25wd/9ucXv/
    +bnB3/2xvef9ucHf/am13/3d6g/9zdXz/eXuB/3t9g/91eIH/eXyG/3N2f/9ucHf/bG95/3l7gf9wcnn/
    +d3qD/25xe/9nanT/bnB3/3l7gf9wcnn/eXyG/3Byef9ucXv/cHN9/25wd/93eoP/bnB3/25wd/9wc33/
    +bnB3/3Z4fP9vcXX/bnB3/2xvef9ucHf/cHN9/2xvef9sb3n/bnB3/25wd/9zdXz/b3F1/29xdf91d33/
    +dXd9/25wd/95e4H/cHJ5/2xvef9ucXv/Z2p0/3N1fP9qbXf/bG95/2psc/9sb3n/bG51/3Bzff9qbHP/
    +cHN9/2ptd/9sb3n/amxz/2dqcf9qbHP/Z2p0/2Zobv9nanH/Z2px/2Rncf9maXP/c3V8/25xe/9maG7/
    +c3V8/25wd/9sbnX/dnh8/2ptd/9sb3n/bnB3/25wd/9zdXz/dXd9/2dqcf9wcnn/bW9z/29xeP9sb3n/
    +bXB6/2xvef9sb3n/bnB3/3Byef93eX//cHJ5/2xudf9ucHf/am13/3N1fP9sb3n/cXN6/3N1ff9vcXv/
    +c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/
    +cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/
    +cHJ5/2xudf9ucHf/b3F4/3N1ev9pbHP/a253/2Vocv9wcnn/ZGdx/2Vocv9laHL/YmVv/3J0fP9zdoD/
    +am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/c3V8/2xvef9wc33/c3V8/21vc/91d33/
    +dXd9/2psc/91eIH/bnB3/2Zobv91d33/bnB3/3d5f/9maXP/cHJ5/3h5ff9sbnX/c3V8/3Z4fP9sb3n/
    +eHl9/25wd/9tb3P/bW9z/3Byef9qbHP/cHJ5/25wd/9sbnX/bG95/3N1fP9ucXv/bG95/2ptd/9sbnX/
    +Z2p0/3d5f/9qbXf/cHJ5/3Byef9ucHf/c3V8/2ptd/9wcnn/b3F1/25wd/92eHz/Z2px/29xdf9sbnX/
    +cHJ5/3Z4fP9sbnX/dXiB/25xe/9zdn//e36H/3Byef9wc33/c3V8/25xe/9ucXv/cHJ5/25xe/9sb3n/
    +bnB3/2xvef93eX//c3V8/25xe/9wcnn/dXiB/2xvef93eX//bnB3/25xe/9ucXv/d3qD/25wd/9qbXf/
    +am13/3N2f/9ucHf/bnB3/3Bzff9sb3n/c3Z//3N2f/93eX//bG95/3N1fP91eIH/bnF7/3V4gf9ucXv/
    +cHN9/25xe/9wcnn/cHJ5/2ptd/9zdn//bnB3/3N2f/92eHz/cHN9/3t9g/9wcnn/bnB3/25wd/94eX3/
    +bnB3/3d5f/9wcnn/Zmhu/25wd/92eHz/bnB3/3l8hv9wcnn/cHN9/3Bzff9zdXz/d3qD/3N2f/91eIH/
    +dXiB/25wd/94eX3/bnB3/29xdf9sbnX/bnB3/3Byef9vcXX/bG51/21vc/9sbnX/cHJ5/2xudf9tb3P/
    +cHN9/3Bzff9sbnX/bnB3/2ptd/9qbXf/bG95/2Rncf9qbXf/ZGdx/2xvef9qbXf/cHN9/2ptd/91d33/
    +am13/3N1fP9ucXv/cHJ5/25wd/9ucHf/cHJ5/25xe/9qbXf/bnB3/25wd/9sb3n/bnB3/3V3ff91d33/
    +Z2px/3N1fP9ucXv/bG95/3V4gf9wcnn/bnF7/2ptd/9ucXv/cHN9/3N2f/9nanT/cHN9/2hrcv9qbXf/
    +bG52/3Fzev9sbnX/bnB3/21vc/9tb3P/eHqA/2xudf9sbnX/bnB3/25wd/92eHz/bXB6/3Byef9ydHr/
    +cXN5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/cHN9/3Byef9wc33/c3Z//25xe/9ucHf/
    +bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn//d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/
    +d3qD/3d6g/9wc33/c3V8/3N1fP93eoP/b3J6/3J0fP9rbnj/d3l//25wd/9wcnn/bW90/2xudf90dn3/
    +dHd//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/cHJ5/25xe/9ucXv/c3Z//3h5ff9ucHf/
    +c3V8/3N1fP9qbXf/dXiB/3Byef9nanH/cHJ5/21vc/94eX3/Zmhu/25wd/94eX3/bG51/3N1fP91d33/
    +am13/3d5f/9sbnX/bG51/2xudf9wcnn/bG51/3N1fP9wcnn/cHJ5/3Byef94eX3/c3V8/2xvef9sb3n/
    +bW9z/2Zobv91d33/cHJ5/2xudf9ucHf/am13/3Byef9nanT/am13/2xudf9wcnn/eHl9/2psc/9tb3P/
    +amxz/2xvef91d33/am13/3d5f/9qbXf/am13/3d5f/9sbnX/Z2p0/2xudf9ucHf/bG51/21vc/9nanT/
    +Z2p0/2xudf9tb3P/dnh8/3Byef9ucHf/bW9z/25xe/9tb3P/c3V8/2xudf9ucHf/bnB3/3d6g/9ucHf/
    +bG51/25wd/9zdn//bnB3/25wd/9wc33/bnF7/3N1fP91d33/d3l//3V4gf9zdn//eXuB/3N2f/93eoP/
    +c3Z//3N2f/9sb3n/bnB3/25wd/9nanT/c3V8/21vc/9zdXz/c3V8/2xvef93eoP/bnF7/2ptd/9sbnX/
    +c3V8/2dqdP91d33/Z2p0/11gav9kZ3H/bG95/2Zobv9wcnn/Zmhu/2ptd/9nanT/Z2px/3Byef9qbXf/
    +am13/25xe/9sbnX/bnF7/2ptd/9qbXf/Zmlz/2xudf9wc33/bnB3/2xvef9vcXX/b3F1/3N1fP9ucHf/
    +b3F1/3V3ff9ucHf/am13/3V3ff9wcnn/bG51/25xe/9qbXf/am13/2Zpc/9sb3n/bG95/25xe/9qbXf/
    +cHN9/2xvef9wc33/bG95/2ptd/9nanH/amxz/2psc/9qbHP/Zmlz/2psc/9sbnX/amxz/2dqdP9ucXv/
    +cHN9/2Zpc/9ucHf/bG95/2xudf93eX//bnB3/25xe/9sbnX/cHJ5/3N1fP9wc33/Z2p0/3Bzff9ydX7/
    +cnV+/3F0fv9ydX7/cHN9/3Bzff9wcnn/cHJ5/3p9hv9wcnn/cHJ5/3V4gf9zdn//d3l//3J1fv9ydHz/
    +dXZ8/3Fzef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/ZGdx/2xudf9nanT/bG51/2xudf9sbnX/
    +Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX//Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/
    +bnB3/3N1fP9zdn//Z2p0/29xdf9vcXb/dnh//3Bze/96fIL/cHN9/36Biv93eX//e32D/3J1fv9vcnv/
    +c3aA/3N2gP9nanT/bG51/3Bzff9nanT/am13/2ptd/9sb3n/am13/2psc/9nanH/bnF7/3N2f/93eX//
    +bnF7/3Bzff91eIH/bnF7/3d5f/9ucHf/amxz/3Byef9tb3P/d3l//2Zobv9ucXv/dXd9/25wd/91eIH/
    +dXd9/2xvef93eoP/cHN9/2ptd/9vcXX/cHN9/25wd/91d33/cHJ5/25wd/9sb3n/eHl9/3N1fP9ucHf/
    +bnB3/2xudf9iZW7/dXd9/2xvef9qbXf/bnB3/2xudf9ucXv/amxz/2xudf9tb3P/bnB3/3V3ff9kZ3H/
    +bG51/2Zpc/9qbXf/cHN9/2dqdP93eX//bG51/2ptd/91d33/ZGdx/2Jlbv9maG7/amxz/2xudf9qbHP/
    +Zmlz/2Zobv9maXP/ZGdx/2xvef9maXP/Zmlz/2dqcf9maXP/amxz/2xvef9sbnX/bG51/2xudf91d33/
    +am13/2Zpc/9nanT/cHN9/2xudf9sbnX/bnB3/3Byef9zdXz/dnh8/3V4gf9wc33/c3Z//3t9g/9wc33/
    +dXd9/3N1fP9wcnn/bnB3/25wd/9zdXz/bG95/3V3ff9wcnn/d3l//3V4gf9zdn//e36H/3d6g/9wcnn/
    +c3V8/3d5f/9sb3n/dXiB/3Byef9nanH/bnB3/3d5f/9wcnn/d3qD/25wd/9wc33/bG95/25wd/92eHz/
    +cHJ5/25wd/9ucHf/bG51/3Byef9ucHf/cHJ5/2dqdP9sb3n/c3Z//29xdf9ucHf/bW9z/2xvef9zdn//
    +cHN9/3Byef91eIH/bnB3/21vc/94eX3/dXd9/25wd/9zdXz/b3F1/25wd/9qbHP/c3V8/3Byef9zdn//
    +bnF7/3N1fP9wcnn/dXd9/3N1fP9sb3n/amxz/2xudf9qbXf/Z2px/2Zpc/9maXP/Z2px/2xudf9maXP/
    +bG95/25xe/9nanT/bnF7/2xvef9tb3P/c3V8/2ptd/9qbXf/ZGdx/2xvef9nanT/bG95/2Jlbv9nanT/
    +b3F4/25weP9vcXr/bG94/2tud/9qbXf/amxz/2Rncf9zdn//Z2p0/2ptd/9ucHf/bnB3/3Byef9ucHf/
    +b3J3/21wev9oa3X/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/
    +Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/
    +bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3J0e/9ucXn/cnR7/29xeP95e4H/bnB3/2xudf9qbXf/
    +aWt0/25wef9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn//c3V8/21vc/9ucHf/bG51/2xvef9wc33/
    +dXd9/2xudf9zdXz/bnF7/2Zpc/9zdXz/Z2p0/2Jlbv9ucXv/bG51/3V3ff9iZW7/cHN9/3d5f/9qbXf/
    +bnF7/25xe/9sbnX/c3V8/2Zpc/9gY2z/Zmhu/2Zpc/9maXP/bG95/2psc/9nanH/Z2px/2xvef9sb3n/
    +Z2px/2psc/9maXP/YGNs/3V3ff9qbXf/bG51/2ptd/9nanH/am13/2Jlbv9qbHP/Z2px/2ptd/9ucXv/
    +Zmlz/2psc/9kZ3H/bnF7/3V3ff9nanT/dXd9/2xudf9wcnn/d3l//2Zpc/9nanH/bW9z/21vc/9sbnX/
    +bnB3/25wd/9ucHf/c3V8/25wd/94eX3/bnF7/25xe/9sb3n/c3V8/21vc/94eX3/bG95/25wd/9ucHf/
    +d3l//2ptd/9maXP/amxz/3N1fP9sbnX/b3F1/3Byef9vcXX/c3V8/3Z4fP91d33/bnB3/3Byef94eX3/
    +bnF7/3V3ff91d33/bnF7/25wd/9sb3n/bG95/2xvef93eX//cHN9/3t9g/91eIH/cHN9/3V4gf9wc33/
    +am13/3Byef9zdn//am13/3d5f/9zdn//Z2p0/29xdf95e4H/bnB3/3d5f/9ucHf/c3V8/2xudf9vcXX/
    +dnh8/3V3ff9wc33/bnF7/3V4gf9wc33/bnB3/3Bzff9qbXf/cHJ5/3V4gf9zdn//c3Z//3N1fP91d33/
    +eXuB/3d5f/9zdn//e32D/3V4gf9zdXz/eXuB/3N2f/9zdn//eXyG/3V3ff93eX//dnh8/3t9g/97fYP/
    +dXiB/3Bzff91eIH/c3Z//3d6g/9zdn//cHN9/3N1fP9zdn//c3Z//3N1fP9sb3n/bnB3/25wd/9ucXv/
    +am13/3Bzff9wc33/Z2p0/3N1fP9zdXz/b3F1/3V3ff9sbnX/cHJ5/2dqdP91d33/bnF7/3N2f/9qbXf/
    +c3Z//25xe/9tcHn/b3J8/29ye/9ucXv/bnF7/25xe/9ucXv/fH+I/3J1fv9zdn//d3l//3t9g/96fIL/
    +d3qA/3Z4ff92eX7/cnN6/2xudf9sbnX/Zmlz/2psc/9nanT/am13/2xudf9maXP/bnF7/2dqdP9tb3P/
    +cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/bG51/3Byef9iZW7/am13/2ptd/9sb3n/
    +Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/bnF7/3N2ff9ydHz/gYOK/3V4gf91eIH/
    +b3J8/25xev9zdX7/cnV//2hrdf9sb3n/bnB3/25wd/9wcnn/cHJ5/3N1fP9sbnX/am13/2ptd/9wcnn/
    +dnh8/3d5f/9sb3n/cHN9/25xe/9ucHf/dnh8/2xvef9kZ3H/c3V8/2xudf94eX3/Z2px/3N2f/93eoP/
    +bG95/3N2f/95e4H/bG95/3V4gf9ucXv/am13/25xe/9wc33/bnB3/25xe/9sb3n/bG95/25wd/92eHz/
    +dXd9/29xdf9tb3P/Z2px/2dqcf91d33/am13/21vc/9wcnn/am13/2xvef9kZ3H/Z2p0/2Zobv9maXP/
    +am13/2Rncf9maG7/XWBq/2Rncf9wcnn/YmVu/3Byef9maXP/Zmlz/3Byef9iZW7/YmVu/2psc/9nanT/
    +bG51/2xudf9qbHP/bG51/25xe/9sb3n/dXd9/3Byef9ucHf/bG51/3N2f/9vcXX/eHl9/25wd/9vcXX/
    +bnB3/3d5f/9ucHf/bnB3/25wd/91d33/bnB3/29xdf9wcnn/bG51/3Byef9zdn//d3l//3Bzff9wc33/
    +d3l//2xvef9zdXz/dnh8/25xe/9ucHf/bnB3/29xdf9ucHf/dnh8/3Byef94eX3/dnh8/3N1fP92eHz/
    +bnB3/2xudf9vcXX/c3V8/2psc/91d33/dXd9/2psc/9vcXX/d3l//3Byef93eX//bnF7/3N2f/9ucHf/
    +b3F1/3h5ff9wc33/c3V8/25xe/9wc33/c3Z//25wd/9ucHf/bG95/25wd/9zdn//c3V8/25xe/9wc33/
    +cHN9/3l8hv9zdn//cHN9/3d6g/9ucXv/bnB3/3t9g/93eoP/dXiB/3d6g/9wc33/c3Z//3N1fP9wc33/
    +bnF7/3Bzff9wcnn/c3Z//3N2f/95e4H/c3Z//25xe/9vcXX/bnB3/2xvef9vcXX/am13/2xudf9vcXX/
    +bnB3/2xudf9zdn//cHJ5/2xudf9wc33/bnF7/29xdf93eX//bnB3/3V4gf9ucXv/eXuB/3V4gf95e4H/
    +Z2p0/2xvef9wc3z/dHeA/3Z5gv9ydX//b3F4/25wd/9ucHf/am13/3d5f/9ucHf/bnB3/2xudf9wcnn/
    +bnF7/2xvef9tcHr/dXd+/3V4gP9wc33/cHJ5/2xvef9wc33/c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/
    +bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/e36H/3N2f/97fYP/cHN9/3t9g/9zdn//
    +c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/c3V8/2xud/9ucXr/a210/3d6g/9qbXf/
    +bG51/2psc/9sbnX/b3J8/3BzfP9rbXT/bG51/25wd/9ucHf/bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/
    +bG95/3V3ff92eHz/bG51/3N1fP9ucHf/b3F1/3V3ff9sbnX/bG51/2xvef9qbXf/c3V8/2Rncf9zdXz/
    +dnh8/2xudf9ucHf/dnh8/2xudf91d33/am13/2Rncf9qbHP/bnB3/2xudf9wc33/bG51/2xudf9qbXf/
    +cHN9/3Byef9sbnX/bW9z/2psc/9qbHP/dXd9/2xvef9ucHf/c3V8/2xudf9ucHf/Zmhu/3Byef9tb3P/
    +bnB3/25wd/9nanT/am13/2dqdP9ucXv/c3V8/2ptd/93eX//bnB3/25xe/94eX3/Zmhu/2dqdP9ucHf/
    +bnB3/2xvef9ucHf/bnB3/25wd/9zdn//c3Z//3l7gf9ucXv/bnF7/3Bzff93eX//cHN9/3l7gf9zdXz/
    +bnB3/3N2f/97fYP/cHJ5/25wd/9ucHf/c3Z//2xvef9wcnn/c3Z//2xvef9wcnn/c3V8/3Z4fP9ucXv/
    +bG95/3d5f/9wc33/c3Z//3d5f/9ucXv/bnB3/3Byef9ucHf/bnB3/3d5f/9zdn//eXuB/3l7gf93eoP/
    +d3l//25xe/9sbnX/b3F1/3N1fP9qbHP/c3V8/3N1fP9qbHP/bG51/3N1fP9tb3P/dXd9/2psc/9ucXv/
    +bW9z/2xudf92eHz/c3V8/25wd/9wcnn/cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/bnF7/2xvef9sb3n/
    +bnF7/25xe/9zdn//c3Z//3Bzff95e4H/c3Z//3Bzff99foH/eXuB/36Ahv97fYP/d3l//3V3ff91d33/
    +dXiB/3d6g/93eoP/c3Z//3d6g/93eoP/e36H/3l8hv93eoP/cHN9/3N1fP9zdn//cHN9/3Byef9sb3n/
    +b3F1/25xe/9ucHf/bnF7/3Byef9qbHP/cHJ5/2xudf9tb3P/dnh8/2xudf9wc33/bG95/3N2f/9zdn//
    +c3Z//2dqdP9sb3n/cHJ5/29yfP92eYD/cnV+/29xeP9tb3P/b3F1/2xudf93eX//bG51/2xudf9ucHf/
    +c3V8/3V3ff9wc33/cnR8/3V3ff9xdH3/cHJ5/2xvef9qbXf/cHN8/25xe/9ucXv/c3V8/2ptd/9zdn//
    +bnB3/2xudf90dn3/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/cHJ5/3V3ff9tb3T/dHd9/2dqdP9zdXz/
    +am13/2xvef9sb3n/am13/2Vocf9sb3n/am13/2Nmb/9qbHP/am13/3J0e/9ucHf/cXN6/2tud/93eoP/
    +cHJ5/2xudf9sbnX/aGt0/21veP9xdH3/Z2p0/2ptd/9qbXf/am13/2ptd/9ucXv/dXd9/3Byef9vcXX/
    +b3F1/25xe/9wc33/dXd9/2xudf9nanT/am13/2psc/91d33/bG51/2psc/9sbnX/Z2p0/3Byef9kZ3H/
    +bG95/25xe/9sbnX/am13/3N1fP9qbHP/dXd9/2xvef9gY2z/Zmlz/2dqdP9nanH/bG95/2psc/9qbHP/
    +Z2p0/2ptd/9qbXf/Z2px/2dqdP9kZ3H/ZGdx/3Byef9nanH/Z2px/2xvef9nanT/amxz/2BjbP9qbXf/
    +amxz/2dqdP9qbXf/ZGdx/2dqcf9kZ3H/am13/25xe/9maXP/cHJ5/2ptd/9sb3n/dXd9/2Rncf9maXP/
    +amxz/2xudf9sbnX/bG51/2ptd/9tb3P/bnF7/25xe/9zdXz/cHJ5/3Byef9sb3n/dXd9/2xudf9zdXz/
    +am13/2ptd/9sbnX/cHJ5/2dqcf9kZ3H/Zmlz/2xvef9nanT/amxz/3N1fP9sbnX/bnB3/3V3ff94eX3/
    +cHN9/29xdf94eX3/bG95/3N1fP91d33/bnB3/2xudf9tb3P/am13/2ptd/9zdXz/cHJ5/3N1fP91d33/
    +c3V8/3h5ff9ucHf/bG95/21vc/9zdXz/Z2p0/3N1fP9zdXz/Zmlz/2dqdP9sb3n/bG51/3V3ff9vcXX/
    +dXd9/2xudf9qbHP/dXd9/3N1fP9wcnn/cHN9/2xvef9ucXv/bnB3/25wd/9vcXX/bG51/2xudf9sbnX/
    +b3F1/2xvef9ucXv/cHN9/25xe/9wcnn/dXiB/3N2f/9zdXz/dXiB/3N2f/93eoP/dXiB/3Bzff9wc33/
    +cHJ5/3Bzff9zdn//c3Z//2xvef9ucXv/cHN9/3d5f/9zdn//bnF7/3N1fP9zdXz/c3Z//3N1fP9ucHf/
    +cHJ5/3Bzff9zdn//cHN9/3V4gf9zdn//cHJ5/3Bzff9wcnn/cHJ5/3d6g/9ucHf/dXiB/3Byef95e4H/
    +eXyG/36Ahv9zdn//c3Z//3Bzff9ydX//dnmA/3J1fv9zdn//bnB3/25wd/9sb3n/dXiB/2xvef9sbnX/
    +cHJ5/3Z4fP92eHz/c3V7/3J0ff91d33/bnB3/21vd/9pbHb/Zmhx/2ttdf9sb3n/cXN6/3Fzev9tb3P/
    +cHJ7/2ttdf9rbXT/cHN9/25xe/9tb3b/a254/25xev9ucXv/bG95/21wev9xdH7/b3F2/3Z4fv9qbXT/
    +dXd9/3Bzff9xc3r/dXd9/3R2fv9sbnb/b3F5/29yfP9sb3b/bG52/2xudv9ydX//cXN7/3Z4fv9wcnn/
    +foGK/3d6g/9ucHf/bnB3/25wdf9wc3v/dXd9/2ptdv9rbnf/bnB3/25wd/9ydHv/dHZ8/3N1fP9tcHn/
    +bXB3/2tueP9ucXv/dXd9/3V3ff9sb3n/bnF7/25xe/9ucHf/eXuB/25xe/9vcXX/bG51/3N1fP92eHz/
    +amxz/3V3ff91d33/bG51/2xudf94eX3/bnB3/3h5ff9zdXz/Z2p0/2xudf9ucHf/bW9z/3Byef9ucHf/
    +bnB3/2xudf9zdXz/am13/2ptd/9qbXf/Z2p0/2Zpc/91d33/am13/2psc/9wcnn/amxz/2xudf9maG7/
    +c3Z//2ptd/9ucXv/c3Z//2xvef9ucHf/b3F1/3V3ff92eHz/b3F1/3V3ff9ucHf/bnB3/3Z4fP9nanT/
    +bnB3/3Byef9zdXz/bnB3/3Byef9ucHf/bnB3/3Byef9ucHf/c3V8/3Byef9ucXv/bG95/3V3ff9sbnX/
    +bG95/2Zpc/9qbHP/am13/3N1fP9sbnX/amxz/2psc/9ucXv/bG51/2psc/9ucXv/am13/2psc/9ucXv/
    +c3V8/2xvef9qbXf/dXd9/2xudf9ucXv/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/cHN9/2xudf9zdXz/
    +dXd9/3N2f/9zdn//bG95/3Byef9ucXv/c3V8/25wd/9zdn//d3l//2xvef9ucXv/cHN9/3Byef95e4H/
    +cHN9/3l7gf9wc33/bG95/3l7gf9zdn//dXiB/3N2f/9wc33/c3V8/25wd/9wcnn/cHJ5/3Byef9wc33/
    +cHJ5/2xvef9wc33/bnF7/3Byef9ucHf/bW9z/3Byef9wcnn/bG51/3N1fP9sbnX/bnF7/3Bzff9tb3P/
    +b3F1/25wd/9ucHf/c3V8/3V3ff9sb3n/cHJ5/2xvef91d33/c3Z//3Byef9ucHf/c3Z//3V4gf93eX//
    +dXd9/3h5ff95e4H/dnh8/3l7gf9/gYf/eXyG/3l7gf97fof/eXuB/3d5f/9/gYf/dXd9/3t9g/91d33/
    +foCG/3t9g/97fof/c3Z//3N2f/9xc3r/cHN6/3J1fP9xc3v/cHJ5/2ptd/9nanT/Z2p0/3V3ff9qbHP/
    +Z2px/2ptd/9ucXv/cHJ5/2lsdv9rbnj/b3J5/2xudf9rbnb/a252/2hqcv9naXH/a211/25xef9tcHr/
    +a21z/3J0fP9tcHj/bG93/3F0fv9ydX3/b3F5/29xev9ydX3/dHd//3Byef9xdHz/eHqC/3V3ff94e4H/
    +cXN6/3l8gv91d3//dnmB/3l7g/96fIP/c3V+/3d4fv92eID/dXd+/3F0fv9xc3v/d3qC/3h6gP99f4b/
    +dnh//4OFjP9+f4P/ent//3d5f/94eoD/enyC/3p8gP9ydHv/cHN9/25xe/9vcnv/cnV+/3Z4gP92eH//
    +cnV+/29yev9wc3v/cHJ5/3V3ff92eHz/bnB3/25xe/9wc33/bnF7/3l7gf9wc33/cHJ5/25xe/9wc33/
    +c3Z//2dqdP91d33/dXd9/25xe/9wc33/e32D/3Byef97fof/d3qD/3N1fP9wc33/d3qD/3N2f/9zdn//
    +c3Z//3N2f/9ucXv/bnF7/25xe/9ucHf/bnF7/2xvef9qbXf/d3qD/3N1fP9wc33/cHN9/25xe/9ucHf/
    +Zmlz/3V3ff9sbnX/c3V8/3N1fP9ucHf/bnB3/29xdf9wcnn/dnh8/29xdf95e4H/b3F1/25wd/92eHz/
    +Z2p0/2dqdP9ucHf/bnB3/21vc/9sbnX/bG51/2xudf9ucHf/bnB3/2xvef9sb3n/bG95/2ptd/92eHz/
    +am13/25xe/9maXP/am13/2xudf9wc33/bG51/2Rncf9qbHP/am13/2psc/9qbHP/bG95/2ptd/9nanT/
    +bG95/3N1fP9ucXv/am13/3N1fP91eIH/eXyG/3t9g/9zdn//c3Z//3Bzff9zdXz/bnB3/3N2f/9wcnn/
    +dXiB/3l7gf91eIH/dXiB/3Bzff9wcnn/cHN9/3N1fP9vcXX/cHN9/3V3ff9qbXf/bG51/3N2f/9wcnn/
    +d3l//2xudf9zdXz/bW9z/2xudf94eX3/c3Z//3V3ff9sb3n/bG95/25xe/9vcXX/bG51/29xdf9vcXX/
    +bW9z/21vc/9vcXX/c3V8/2xudf9sb3n/bW9z/25wd/9wc33/cHJ5/29xdf94eX3/bnB3/3N2f/91d33/
    +bW9z/2xudf9qbXf/bG51/25xe/9ucXv/bW9z/2xudf9ucHf/dXd9/25xe/9ucHf/amxz/2xudf9sbnX/
    +bnB3/2xvef9ucHf/b3F1/2xudf9qbXf/c3Z//3N1fP91d33/dXiB/3N1fP91eIH/foGK/3N1fP93eoP/
    +c3Z//3t+h/93eoP/e36H/3N1fP9zdn//cXN7/3N2gP96fIP/eXuB/3p8gv91d33/c3V8/3V3ff97fof/
    +dXiB/3Bzff9wc33/dXd9/3V3ff90dnz/dXd+/3J1ff9ucXv/bXB5/3Bze/9pa3P/aWx2/3FzfP90d37/
    +c3Z//3F0fP92eH//cnR9/3Bze/90d4H/dHeA/29yfP9xdHz/bXB4/29yfP9vcXv/bG95/21weP9tb3b/
    +cHJ5/2ttc/92eHz/bnF6/25wef9ydX3/bXB6/25wd/9tcHn/bW92/29xd/9tb3b/bG54/3Fzd/90dnz/
    +dHZ8/2xvef95fIb/cHN9/2xvef9wcnn/bnF7/3R2fP90dn3/cHJ6/21veP9tb3j/bG95/25xe/91d33/
    +dHeA/3F0fP9zdn3/bnF6/3Bzff91eIH/d3l//25wd/9ucXv/bnB3/25wd/92eHz/bnB3/2ptd/9qbXf/
    +bG51/25wd/9nanH/cHN9/3Bzff9qbXf/bnF7/3V3ff9tb3P/d3l//2xvef9nanT/Zmlz/2xvef9qbXf/
    +bG95/2xudf9ucHf/bnB3/3Byef9ucXv/bnB3/25xe/9ucHf/am13/3N2f/9ucHf/bnF7/25wd/9qbXf/
    +bG95/2psc/91d33/bG51/3N1fP9wcnn/bnB3/2xudf9sbnX/c3V8/3Bzff9qbHP/dXiB/2psc/9qbHP/
    +c3V8/2Jlbv9dYGr/Z2px/2Rncf9maG7/Z2px/2dqcf9qbHP/bG95/2xudf9ucXv/bnB3/3V3ff9sb3n/
    +d3l//25xe/9zdn//am13/25xe/9wc33/eXuB/3V4gf9sb3n/c3V8/3V4gf9zdn//d3l//36Ahv95e4H/
    +dnh8/3l8hv9+gYr/e32D/3N2f/97fYP/bnB3/3N2f/93eX//cHN9/3N2f/9zdn//c3V8/3N1fP91eIH/
    +c3Z//3l8hv97fYP/e32D/3Bzff9ucXv/cHJ5/3Bzff9zdn//c3V8/3V4gf95e4H/cHJ5/2dqdP9zdn//
    +cHN9/3l7gf9sb3n/dXiB/25xe/9sbnX/dnh8/3Byef91d33/bG51/29xdf9ucHf/b3F1/2psc/9sbnX/
    +bG51/21vc/9sbnX/bW9z/3Bzff9wcnn/cHJ5/3Byef9wcnn/dXiB/25xe/9sb3n/eXuB/25xe/9zdn//
    +bnF7/25wd/9wcnn/bnF7/25wd/9ucXv/cHN9/25wd/9wcnn/cHJ5/3Z4fP9zdXz/cHJ5/2psc/9vcXX/
    +bnB3/2xudf9ucHf/am13/2ptd/9qbHP/amxz/3Byef9sbnX/bG51/2xudf9tb3P/bG51/3Z4fP9sbnX/
    +bnB3/21vc/9zdXz/bnF7/3Z4fP9tb3P/bG51/25xeP9ydX//dXd9/3V4gf91d33/bnB3/2ptd/9sb3n/
    +dXiB/29xdf9sb3n/bnF7/3V3ff9zdXz/cHJ5/3Z4fP9xc3n/cHJ5/25wd/9ucXr/Zmlz/2psc/9wcnn/
    +dXd7/25wd/9tb3P/dHd9/2tueP9sb3n/a210/21wef9sbnX/amxz/2hrdf9qbXT/am13/2psc/9ydX//
    +cnV+/3N2f/9vcnz/eXuA/3J1f/91eIH/enyD/3x/hf95e4H/dnh+/3d5f/96fIH/cnV//3J1fv91eIH/
    +eHuF/3p8g/91d33/foGK/3V4gf9wc33/cHN9/3N2f/91eIH/eXuB/3V4fv9wc33/c3Z//25xe/9zdn//
    +eHqB/3V4gf9ydX7/dHZ8/25wd/9ucXv/cHN9/3N2f/9vcXX/bG95/25wd/9zdXz/dXd9/2xudf9sbnX/
    +cHJ5/29xdf9ucXv/am13/3Bzff93eX//bnF7/3V3ff92eHz/b3F1/3d5f/9wcnn/bG51/2xudf9wcnn/
    +cHJ5/2ptd/9tb3P/bnF7/2xvef9ucHf/b3F1/25wd/9wcnn/bG95/2xudf9ucHf/am13/25xe/9sbnX/
    +am13/2ptd/9nanH/c3V8/2xudf9zdXz/bnF7/2xvef9sbnX/am13/3N1fP94eX3/bG95/3d5f/9ucHf/
    +bnB3/3V4gf9sb3n/Z2p0/3V4gf9zdn//cHJ5/3N2f/9zdn//dXiB/3V4gf91eIH/e32D/3d6g/95e4H/
    +c3Z//3l8hv91eIH/eXyG/3Bzff91eIH/dXiB/3t9g/93eoP/bnF7/3V4gf95fIb/bnF7/3Byef9ucXv/
    +cHJ5/25wd/9zdn//dXiB/3V4gf9wcnn/c3Z//2xvef9qbXf/c3V8/2xvef9nanT/Z2px/2Zpc/9maG7/
    +Zmlz/2Zobv9maXP/am13/2xvef9qbHP/bG51/2Zpc/9nanT/bG51/2psc/9ucXv/cHN9/2psc/9nanH/
    +bG95/2ptd/9zdn//Z2p0/25xe/9sb3n/am13/3N1fP9ucXv/cHN9/2ptd/9qbXf/bG95/29xdf9sbnX/
    +bG51/2xudf9tb3P/bG51/25wd/9wcnn/bW9z/2xvef9qbXf/cHJ5/3N1fP9sb3n/am13/3N1fP9sb3n/
    +c3V8/2xudf9ucHf/bnB3/2xvef9ucHf/bnF7/3N2f/9ucHf/cHJ5/3Byef9zdXz/cHJ5/25xe/9sb3n/
    +bG95/25wd/9sb3n/bG95/2xvef9sbnX/bG51/2xudf9wc33/bnB3/3Byef9ucHf/bnB3/25xe/94eX3/
    +bnB3/3Byef9ucHf/dXd9/3N2f/93eX//b3F1/29xdf9ucHf/dHZ9/3N1fP91d33/eHl9/3Byef9sbnX/
    +bnB3/3d5f/9vcXX/bnB3/3Byef92eHz/bnB3/3Byef9wc33/am13/2xvef9qbXf/am13/2dqdP9maXP/
    +amxz/3N1fP9nanT/Z2px/2xvef9kZ3H/Zmhu/2RmbP9nanT/Zmhu/2dqcf9kZ3H/Zmhu/2Zobv9kZ3H/
    +d3qD/3V4gf93eoP/dXd9/31+gf93eoP/dXiB/3l7gf91eIH/cHN9/3N2f/91eIH/eXyG/3d5f/91d33/
    +d3l//3+Bh/97fYP/c3V8/3+Bh/91eIH/c3V8/3N1fP9wc33/d3l//3l8hv97fYP/c3Z//3N2f/9sb3n/
    +bnF7/3Bzff9wc33/cHN9/3V3ff9ucXv/bnF7/3Byef9zdXz/bnB3/25wd/9tb3P/cHJ5/25xe/9ucHf/
    +bnF7/2xvef9ucXv/cHN9/3N1fP91eIH/d3l//2xvef9zdn//dXiB/25xe/97fYP/dXiB/3V3ff9zdn//
    +d3l//3l7gf95e4H/dnh8/3d6g/91d33/eXuB/3h5ff96e3//e32D/3d5f/91d33/fn+D/3V3ff97fYP/
    +d3l//3d5f/91d33/cHN9/3d6g/9zdn//eXyG/3N2f/9wcnn/c3V8/3N1fP95e4H/e32D/3N1fP97fof/
    +cHN9/3Bzff97fof/am13/2Zpc/9ucHf/bG95/29xdf9sbnX/bW9z/2ptd/9sbnX/bnB3/3N1fP91d33/
    +eHl9/25wd/93eX//bnB3/25xe/9nanH/bG51/25wd/9zdXz/c3V8/2dqcf9ucHf/c3V8/2psc/9vcXX/
    +bnB3/25wd/9qbXf/cHN9/3d5f/9zdXz/bnB3/25wd/9wcnn/cHN9/3h5ff91d33/b3F1/29xdf9ucHf/
    +b3F1/3Byef9sbnX/cHJ5/3Byef91d33/bG51/3Byef9qbHP/bnB3/3Byef9vcXX/dXiB/3V4gf9wcnn/
    +bnB3/3N2f/9sb3n/eXuB/25wd/9wc33/cHJ5/2xvef93eX//c3Z//3d5f/9ucXv/bG95/3Bzff9ucXv/
    +bG95/25xe/9wcnn/c3V8/3V3ff9zdn//d3qD/3N1fP9wcnn/bnF7/3V4gf9+gIb/dXiB/3Bzff93eoP/
    +c3Z//3l8hv9zdn//bG95/2xvef9ucXv/cHJ5/3Bzff91eIH/bnF7/25xe/9wcnn/c3Z//3Bzff9wcnn/
    +Z2p0/25wd/9vcXX/bnB3/25wd/9ucHf/bG51/25wd/9qbXf/cHN9/29xdf9vcXX/bnF7/3Bzff9zdn//
    +eXuB/3N1fP91eIH/bnB3/3V4gf91d33/d3l//3Byef9wcnn/bG95/3N2f/9wc33/c3Z//3Z4fP9wcnn/
    +bG51/2xudf92eHz/bG51/2ptd/9sb3n/cHN9/2xvef9nanT/Z2p0/2xvef9qbXf/Zmlz/2Zpc/9maXP/
    +Zmlz/2xudf91d33/bnB3/3Byef9zdXz/bG95/3Bzff9sb3n/cHN9/3Byef9zdn//c3V8/3Bzff9zdXz/
    +cHN9/3Byef9sbnX/bG95/2xudf9wcnn/bnB3/25wd/9zdXz/cHJ5/25xe/9qbXf/bG51/2ptd/9qbHP/
    +am13/2psc/9zdn//bnF7/2psc/93eoP/bG95/2dqdP9sbnX/bG95/3N1fP91eIH/dnh8/3Byef9zdXz/
    +b3F1/21vc/9ucXv/cHN9/25xe/92eHz/cHJ5/3Byef9wcnn/c3V8/2xudf9wcnn/bW9z/3Bzff9qbXf/
    +amxz/2xvef9ucHf/bnB3/2xudf9tb3P/c3V8/3V3ff9sbnX/bG95/25xe/9sbnX/c3V8/2xvef9qbXf/
    +Z2p0/2xudf9qbXf/am13/2xudf9sbnX/bG51/25wd/9ucHf/bG95/25xe/9sb3n/bnB3/3N1fP9tb3P/
    +cHJ5/25wd/9sbnX/bW9z/2dqcf9ucXv/Z2p0/2ptd/9sbnX/amxz/2xudf9ucHf/eHl9/3d5f/9vcXX/
    +dXd9/25wd/9ucHf/eXyG/2ptd/9qbHP/bG95/2xvef9wcnn/bnF7/3Byef9sb3n/bnB3/3Bzff9zdn//
    +d3qD/3t9g/9zdn//d3qD/3N1fP9zdXz/am13/3Bzff9ucXv/cHN9/3N2f/9nanT/cHN9/25xe/9nanH/
    +amxz/2xudf9qbXf/bG51/25xe/93eX//c3V8/29xdf9ucXv/bnB3/3N1fP92eHz/c3V8/2xudf9sb3n/
    +bG95/25xe/91eIH/c3Z//3N2f/9wc33/dXd9/2xudf9zdXz/amxz/21vc/9ucHf/b3F1/3V3ff9zdXz/
    +b3F1/25wd/91d33/cHJ5/3l7gf9sbnX/dXd9/3Byef9ucHf/c3V8/25xe/9wc33/bG95/2xudf9wc33/
    +bG51/2Rncf9qbXf/am13/2dqdP9maXP/am13/3Byef9sbnX/bW9z/25wd/9ucXv/dXd9/2xvef9sb3n/
    +c3V8/29xdf92eHz/bnB3/2xudf9qbXf/bnB3/29xdf9vcXX/cHJ5/29xdf91d33/cHJ5/3V3ff9wc33/
    +bnF7/3Byef9zdn//cHJ5/3N1fP9wcnn/bnB3/2ptd/9sb3n/am13/3N1fP9vcXX/bW9z/25wd/9ucXv/
    +bnF7/3l7gf9vcXX/c3V8/21vc/93eX//c3V8/3V3ff9vcXX/bnB3/2xudf9wcnn/bnF7/3N1fP9ucXv/
    +cHJ5/2dqdP9sbnX/eHl9/29xdf9zdXz/dXd9/3Z4fP9zdXz/bnB3/2xvef9sb3n/cHJ5/3Byef9ucHf/
    +bnB3/2psc/9sbnX/d3l//25wd/9ucXv/bG95/2xvef9zdXz/bnB3/3Byef9sbnX/bnB3/2xudf9sbnX/
    +bG51/2ptd/9ucHf/bnB3/3Byef9ucHf/cHN9/3Byef9zdXz/c3Z//3V4gf91eIH/c3Z//3N2f/91eIH/
    +c3V8/3N2f/9zdXz/e36H/3N2f/9ucXv/eXyG/3Bzff9sb3n/bG95/3Bzff9zdn//e36H/3t9g/9zdn//
    +c3Z//25wd/9ucXv/cHN9/3Z4fP91d33/d3l//3V3ff9ucHf/cHN9/3V4gf9ucXv/c3Z//2xvef9zdn//
    +bnF7/25wd/9ucXv/bnB3/3N1fP9ucHf/b3F1/2xvef9zdXz/amxz/2xvef9wc33/am13/25xe/9wcnn/
    +bG51/2dqcf9ucHf/bG51/25wd/9qbXf/cHJ5/25wd/9wcnn/bG51/25wd/9zdXz/bnB3/25wd/9zdXz/
    +amxz/25wd/9sbnX/bG51/21vc/9maG7/bG95/2dqdP9qbHP/bG51/2dqcf9nanH/Zmhu/3Byef9wcnn/
    +Z2px/25wd/9gY2z/ZGZs/3Byef9iZW7/XWBq/2BjbP9maG7/ZGdx/2Zobv9maG7/ZGdx/2Zpc/9nanT/
    +bnF7/3Bzff9zdXz/bG95/3V3ff9qbXf/bG51/2dqdP9qbHP/am13/2xvef9wcnn/amxz/3Byef9ucXv/
    +Z2p0/2ptd/9ucHf/bnB3/21vc/9sb3n/c3V8/3V3ff9sbnX/bG51/2dqdP9nanT/cHJ5/25xe/9qbXf/
    +bnB3/2Zpc/9maXP/am13/2xvef9ucXv/bnF7/3Bzff9ucHf/bnF7/2ptd/9sbnX/bnB3/21vc/9ucXv/
    +bnF7/2xudf9nanT/dXd9/2ptd/9zdn//amxz/2ptd/9nanT/amxz/2xvef9ucXv/bG95/25wd/9sbnX/
    +bnB3/2xudf9qbHP/bnB3/29xdf9ucHf/am13/25wd/9ucXv/bG95/2xvef9wc33/bnF7/3l7gf9wc33/
    +cHJ5/3V4gf9wc33/eXuB/3Bzff9sb3n/cHJ5/25wd/9ucHf/bW9z/3Byef9tb3P/cHJ5/25wd/9zdXz/
    +bG51/25wd/9nanT/bG51/2psc/9sbnX/bnB3/21vc/9sbnX/bnB3/25wd/9zdXz/bnB3/29xdf9vcXX/
    +cHJ5/3Bzff91eIH/bnB3/3Bzff9wcnn/e36H/3d6g/95e4H/cHN9/3N1fP9ydHz/enyC/3p8gv99f4X/
    +fn+D/3t9g/92eHz/d3qD/3t+h/9wc33/d3qD/3t9g/97fYP/d3qD/3d6g/94e4X/dXiB/3Z5gv9ydX7/
    +dHeA/3Fzev9rbnj/bnB3/3d4ff9vcnz/cnV+/25xe/9vcXn/bnB3/21vdv9tb3b/bG51/25wd/9ucHT/
    +bnB4/21wef9sb3n/bnB3/2ttdP9pa3X/aGty/2tueP9pa3X/a210/2tueP9sb3b/c3V7/25wd/9tb3b/
    +cHJ5/21vdv9ucHf/bG51/3h6gP9ucHf/am13/3N2f/9qbHP/YmVu/2Jlbv9maXP/Z2p0/3N1fP9tcHr/
    +bG95/2ptd/9oanT/am13/2xvef9xc33/cHN8/3R2fP9sb3n/amxz/2dqdP9ucXv/bG95/3V3ff9tb3P/
    +cHN9/2ptd/9sb3n/am13/2xudf9wcnn/bnB3/21vc/9wcnn/dXd9/2ptd/9ucXv/cHN9/2xudf9wcnn/
    +c3V8/2xudf9kZ3H/am13/25wd/9wcnn/bG51/2xvef9sbnX/am13/2Zpc/9maXP/bG95/2ptd/9qbXf/
    +am13/2dqdP9nanT/Zmlz/2Zpc/9nanT/YmVu/2xvef9maXP/Z2px/2xudf9qbHP/Z2p0/2psc/9zdXz/
    +cHN9/2dqdP9wcnn/amxz/2psc/91d33/Z2p0/2Rncf9maXP/bG95/2dqdP9sbnX/Z2px/2dqcf9nanT/
    +Z2p0/3Bzff9wc33/cHJ5/2dqdP9wcnn/Z2p0/2dqcf9maXP/Zmlz/2ptd/9nanT/am13/2Rncf9sbnX/
    +bG95/2Jlbv9nanT/bG51/2xvef9nanH/Z2p0/25xe/9ucXv/amxz/2dqcf9sbnX/bG95/3d5f/9wcnn/
    +bnB3/3Byef9sbnX/bG51/3V3ff9ucHf/bnB3/3Byef9ucXv/bG95/3Byef9qbXf/bG51/2xvef9sbnX/
    +c3V8/3Byef9vcXX/bG51/3Z4fP9zdXz/eHl9/25wd/9wcnn/bnB3/2xudf9wcnn/cHN9/3Byef9ucHf/
    +bnB3/3Byef9sbnX/ZGdx/2xudf9sbnX/Z2p0/2dqdP9sbnX/bnB3/25wd/9vcXX/cHN9/3Byef94eX3/
    +cHJ5/2xvef9wc33/cHN9/3d5f/9sb3n/bG95/25xe/9sb3n/bnB3/29xdf9wcnn/bG51/25wd/9wcnn/
    +c3Z//25xe/9wc33/bnB3/3N1fP9zdXz/dXiB/2ptd/9ucHf/bG51/2xudf9sbnX/bnF7/2ptd/9sbnX/
    +bG51/2xvef9wc33/dXd9/21vc/9zdXz/bnB3/3h5ff9wc33/eXuB/25xe/9qbXf/b3F4/3Bzff9ydHz/
    +dHZ9/3V3ff9qbXf/bG51/3N1fP94eX3/bnB3/3N2f/92eHz/dXd9/3Byef9ucXv/cXR9/29xeP9xc3r/
    +bnB3/25wev9pa3T/Z2p0/2ttdf9xc3v/bXB6/2xveP9rbnj/am12/2ZpcP9oanH/amxz/2dqcv9kZ3H/
    +ZWhy/2Zpc/9maXD/Z2lv/3Bzff9tb3f/b3F6/21vdv9vcnv/bnB3/25wd/9vcXj/cXN6/3J0ev9ucHj/
    +bXB6/29yfP9vcXb/bG95/2ttdf90d3//bG52/2xudv91d33/am13/2Rncf9nanT/bG95/21wev90d4D/
    +cnR8/3Bzff9rbnj/am13/21wev9vcnz/cXR+/29yfP9zdX3/bXB6/2ptd/9nanT/bG95/2ptd/9ucXv/
    +amxz/25xe/9qbXf/bG51/2ptd/9qbXf/bG95/2xvef9qbHP/bnF7/3V3ff9qbHP/bG95/3N1fP9sb3n/
    +bG95/3Byef9vcXX/Zmlz/25wd/9zdXz/c3Z//3Byef9zdn//cHN9/25xe/9qbXf/bnB3/3N2f/9wc33/
    +bG95/3Byef9sbnX/cHN9/25wd/9wcnn/bG95/2dqdP9wcnn/am13/3Byef9wc33/bG95/2xvef9vcXX/
    +d3l//3d5f/9zdXz/c3V8/2ptd/9sb3n/d3l//2xudf9sbnX/Z2p0/3Byef9ucHf/bG51/2xudf9tb3P/
    +bG95/2ptd/9zdXz/cHN9/3N1fP9sb3n/bnF7/2Zpc/9nanH/ZGdx/2dqdP9sb3n/am13/3Byef9nanH/
    +bG51/3N1fP9kZmz/amxz/25wd/9wcnn/bG51/3Bzff9wc33/d3l//2xvef9qbXf/Z2px/2ptd/9zdXz/
    +Z2p0/2dqcf9qbXf/Zmlz/2psc/9qbXf/ZGdx/2Zobv9maXP/am13/2dqcf9nanT/amxz/2ptd/9ucXv/
    +bG51/3Byef9ucHf/b3F1/2psc/92eHz/cHJ5/3Z4fP9ucHf/cHJ5/3Byef9ucHf/c3V8/3V4gf9wc33/
    +c3V8/2xvef9wc33/bnB3/2dqdP9vcXX/b3F1/25wd/9sbnX/bG95/25wd/9sbnX/am13/25xe/9qbXf/
    +dnh8/2xudf9tb3P/cHJ5/3Byef91d33/bG51/2dqdP9sb3n/am13/2dqdP9sbnX/bnF7/25wd/9wcnn/
    +am13/3Bzff9ucHf/cHJ5/2xvef9ucHf/bG95/3Bzff9qbXf/cHJ5/2xvef9ucHf/bG95/3N2f/9sb3n/
    +bG95/25wd/9wc33/dXiB/3l8hv9ucHf/dXiB/25xe/93eoP/c3Z//3d6g/9ucXv/am13/21weP9xc3v/
    +b3F5/3R3fP90dnz/bnF7/21vc/9ucHf/dXd9/2ptd/9sb3n/bnF7/3N1fP9sbnX/bnB4/25xev9ucHj/
    +bnF5/25wd/9tcHr/Z2p0/2xvd/9tcHj/cnV9/3Bze/9ydHv/cHN9/3BzfP9vcnz/dHZ8/3N1e/9xc3r/
    +bnB5/3J0e/9wcnv/bnF5/21weP9ydHv/bG51/3Fze/9rbXb/bXB6/3Byef9sb3n/bG95/2xvef9rbXb/
    +aWx0/21weP9pbHb/b3F6/2lsdv9rbnb/bnF6/2ptdv9qbXf/c3V8/2xvef9kZ3H/Zmlz/2xvef9qbXf/
    +cHN7/2xvef9ucHn/am12/2tudv9tb3b/bW92/29yfP9ucHn/dXh//3Fzev91d33/dXd9/3V4gf9wc33/
    +c3Z//3Byef91d33/bnB3/29xdf9wc33/bnF7/3N2f/9zdn//bnB3/3d5f/95e4H/cHJ5/3Bzff95e4H/
    +dXiB/3d6g/9wc33/cHJ5/25xe/9wc33/dXiB/3l7gf9zdXz/c3Z//25xe/9wc33/bnB3/3Byef93eX//
    +cHN9/25wd/9ucHf/Z2px/3Byef9ucHf/bW9z/2dqdP9iZW7/am13/2Rncf9sbnX/c3V8/3N1fP9sbnX/
    +b3F1/3h5ff93eX//dXiB/3N2f/9sb3n/cHN9/3l7gf9ucHf/cHN9/3V3ff97fYP/eXuB/3l7gf93eX//
    +dnh8/3t9g/95e4H/foGK/36Biv9/goz/f4GH/35/g/92eHz/dXiB/3Z4fP92eHz/e32D/3l7gf95fIb/
    +c3Z//3V4gf93eoP/Zmlz/2ptd/9zdXz/cHJ5/2dqdP9ucXv/bnF7/3V3ff9sb3n/amxz/25wd/9wcnn/
    +d3qD/3Bzff9ucXv/c3Z//2ptd/9ucHf/dXd9/25wd/9sb3n/cHJ5/3Bzff9wc33/c3Z//25wd/9sb3n/
    +cHN9/25xe/91eIH/c3Z//25xe/9sb3n/e32D/3l8hv95fIb/c3Z//3V4gf9ucXv/bnF7/3V4gf95fIb/
    +d3qD/3V4gf9zdn//d3qD/3Bzff9ucXv/bnB3/2xvef9sb3n/bG95/3N2f/91eIH/cHJ5/2xvef91d33/
    +cHN9/3d5f/9ucHf/am13/3Byef9wcnn/dnh8/25wd/9sb3n/c3V8/29xdf9qbXf/bG95/3N1fP9wcnn/
    +c3Z//3N2f/93eoP/cHN9/3V4gf9wc33/bnF7/25wd/9zdn//bG95/3Byef9ucHf/bG95/2xvef9zdn//
    +bG95/25wd/9ucHf/c3V8/3Byef91d33/amxz/25xe/9qbHP/c3V8/2xvef9ucHf/Zmlz/2Rncf9sb3f/
    +b3J8/2ttdP9ucXr/cnR7/2xvef9tb3P/bnB3/3V3ff9sbnX/cHN9/3N2f/91d33/cHN9/29yfP9zdXz/
    +bnF7/3F0fv90dn3/cXN7/2hrdf9vcXn/b3F5/3N2gP9wcnn/cXN8/3Bzff9ydHv/cnV+/3Z5gv92eYH/
    +c3Z+/25xe/9zdn7/cnR9/3J1ff9tcHn/cXR9/3Fzev90d4D/bXB6/3N2gP9wc3z/b3J8/3F0ff9vcnz/
    +b3F6/21wd/9ydX3/cHJ7/3J0e/9tb3f/a252/3N1fv9tcHj/cHJ5/3Z4f/9zdXz/Z2px/2psc/9wcnr/
    +bW92/3J0e/9ucHn/bnF5/2xvd/9ucHT/cHJ5/21vdv9xc3r/b3F4/3N1e/9vcXn/bG95/25xe/91d33/
    +c3V8/3N1fP9qbXf/c3V8/2xudf9sbnX/am13/2xudf9wcnn/cHJ5/21vc/92eHz/d3l//2ptd/9ucXv/
    +dnh8/3Byef9wcnn/cHJ5/2xudf9maG7/bG51/3N1fP9wc33/bG51/2ptd/9sbnX/amxz/2ptd/9vcXX/
    +dnh8/25xe/9ucHf/bG51/2dqdP9ucXv/cHJ5/25wd/9sbnX/Zmlz/3Bzff9nanT/bnF7/3N2f/9wc33/
    +am13/25xe/93eoP/e32D/3V4gf95e4H/cHJ5/3Bzff97fYP/bnB3/3Byef9ucHf/cHN9/25xe/9wc33/
    +bnB3/25wd/9ucHf/bW9z/3V3ff9wc33/dXiB/2xvef9wc33/bG51/3Byef9sb3n/bnB3/3N2f/9wcnn/
    +c3V8/2psc/9zdXz/c3V8/2dqcf9sbnX/cHJ5/2xudf9sbnX/c3V8/3Byef91d33/dXd9/3Byef9wcnn/
    +c3Z//3d6g/9ucXv/bnB3/3N2f/9ucHf/cHJ5/3d6g/9zdn//dXiB/3l8hv97fYP/fX6B/3t9g/91d33/
    +d3qD/3l8hv93eX//fn+D/3t9g/97fYP/cHJ5/31+gf97fYP/fn+D/3l7gf9+gIb/d3l//3l7gf9zdn//
    +d3qD/3t9g/91eIH/dXiB/3N2f/9zdXz/c3V8/3N1fP9wc33/bG95/3N1fP93eoP/c3Z//3N1fP9sb3n/
    +cHN9/3Bzff93eX//cHJ5/2ptd/9wcnn/bG95/3V3ff9sbnX/bnB3/3V3ff9ucHf/amxz/25wd/9zdXz/
    +bG95/25wd/9sbnX/cHJ5/25wd/91d33/bnB3/25wd/9ucHf/dXd9/2xudf9sbnX/bW9z/2ptd/9qbXf/
    +cHN9/2xudf9wcnn/bG51/2ptd/9qbXf/dXd9/2psc/9sb3n/Z2px/3N1fP9qbXf/bnB3/2Zpc/9dYGr/
    +a210/29yfP9sbnX/bW92/3Fzev9sb3n/amxz/2xvef9ucXv/bG51/2xvef9zdXz/bnF7/2ptd/9rbnf/
    +b3F4/21wev90dnv/dHd7/29xef9maW//bW93/3J0e/9zdXz/bnB4/3Byef9wc3z/dHd//3R3f/94eoP/
    +dnmC/3V3gP9rbnf/c3V9/29yfP9vcnz/bnB2/21vdv9qbHL/b3J5/2xveP9sb3n/bXB6/21weP9tb3b/
    +bG53/21weP9pa3P/cHJ6/29yev9ydHn/bnB3/25wdf91d33/bnF7/3J0fP93eX//c3V8/2Zobv9sbnX/
    +c3V8/3BzfP91dnv/cnR5/3N1e/9xc3j/bW91/21veP9sbnT/bW92/29yev91d3//cHJ5/3Bzff91d33/
    +d3l//3N1fP91d33/bG95/3l7gf9ucXv/bnB3/25xe/9sb3n/dXiB/3V4gf9ucXv/dXd9/3N2f/9nanT/
    +bnF7/3l7gf9wc33/c3Z//3N2f/9sb3n/Z2p0/29xdf91eIH/c3Z//25wd/9ucHf/cHJ5/2xudf9ucHf/
    +bG51/3Z4fP9wc33/cHJ5/3N2f/9nanT/cHN9/3Bzff9wcnn/bnF7/2ptd/95e4H/bG95/3N1fP95fIb/
    +e32D/3N1fP9zdn//foGK/3l7gf91eIH/dXiB/3Byef9wc33/e36H/3V3ff91d33/dnh8/3t9g/95e4H/
    +dXiB/3N2f/9zdXz/c3Z//3N1fP93eX//c3Z//3t+h/93eoP/eXuB/3N1fP9ucXv/bG95/2xvef9zdn//
    +cHN9/3Bzff9sb3n/cHN9/3N1fP9qbHP/bG51/3Byef9sbnX/amxz/3Bzff9wcnn/dXiB/3V3ff9wc33/
    +bW9z/2xvef9ucXv/bnF7/2xudf9zdXz/bG51/2xudf9ucXv/am13/25wd/9wcnn/bG95/3N2f/9zdXz/
    +bnB3/2xvef9wcnn/b3F1/3Z4fP9wcnn/cHJ5/2Zobv9ucXv/bnF7/3N1fP9qbXf/bnF7/21vc/9ucXv/
    +bG51/2xvef9ucXv/bG51/2psc/9qbXf/ZGdx/2Zpc/9nanH/bG51/2Jlbv9nanT/bG95/2ptd/9qbHP/
    +Z2p0/2xvef9ucXv/dXd9/3Byef9ucHf/cHN9/3Bzff97fYP/cHN9/25wd/93eoP/cHN9/2xvef91d33/
    +eXyG/3N2f/93eoP/c3Z//3d6g/9wc33/e32D/3d5f/95e4H/dXd9/3t+h/9zdn//dXd9/3Bzff9wc33/
    +bnB3/3V4gf9ucHf/bnF7/2xvef9wcnn/c3Z//3d6g/9ucHf/dXd9/25wd/95fIb/c3Z//3t9g/91eIH/
    +am13/25xe/91eIH/b3J7/3F0fP92eH7/c3V8/25wd/9wc33/dXiB/3Byef9wc33/c3Z//3V4gf9zdn//
    +b3J8/3R2ff9xdH7/cnV+/3h6gP9wc3z/aGt0/21wd/90d3//c3Z//3Byef9vcXb/b3F4/25xe/9xdHz/
    +cnR8/3N0ev9wcnv/bG95/3J0fP9vcnr/bnB5/21vdf9xdHv/b3F4/3N2fv9tb3j/cnR9/25xev9vcnv/
    +bnB3/3R2fP9ydHv/bG52/21vd/9vcnz/b3F4/25xe/9tcHn/d3l//21wd/9ydHz/dnh8/3Byef9kZmz/
    +Z2p0/3Byef9ucXv/dHd9/3N1fP9wc3z/dHd+/2xvef9sb3n/cHJ5/3Bzff90dn3/dnmD/3R2f/91eIH/
    +eXyG/36Ahv95fIb/foCG/3V4gf95e4H/cHN9/3Byef9ucXv/c3V8/3V3ff9zdn//bnF7/3Z4fP9wc33/
    +ZGdx/2ptd/9zdXz/Z2p0/2xvef9sb3n/Zmlz/2Jlbv9qbXf/c3V8/3N1fP9nanT/bG95/2xvef9qbXf/
    +bG51/21vc/9zdXz/bnF7/2xudf9qbXf/YmVu/2xvef9sbnX/bG51/2Zpc/9kZ3H/cHN9/2Zpc/9ucHf/
    +c3V8/3Byef9nanH/b3F1/3Z4fP9zdn//cHN9/3Bzff9ucHf/bnB3/3l7gf9wcnn/bnF7/25wd/9wc33/
    +c3Z//3Bzff9ucXv/bG95/25xe/9ucHf/dXiB/3d6g/9+gYr/c3Z//3N2f/9vcXX/bnB3/25wd/9tb3P/
    +cHN9/2ptd/9sb3n/Z2p0/25xe/9qbXf/ZGdx/2Zpc/9ucXv/am13/2Zpc/9wc33/cHJ5/3V3ff91d33/
    +cHJ5/2psc/9qbXf/dXd9/3Bzff9tb3P/cHJ5/2xudf9qbHP/bG95/2psc/9qbXf/bG95/2xudf9wc33/
    +bnF7/2ptd/9sb3n/bG95/2ptd/91d33/c3V8/25wd/9kZ3H/bG95/3V3ff91d33/bnB3/3Byef9sbnX/
    +bG95/2psc/9qbXf/bG95/2xudf9nanT/bnF7/2dqdP9qbXf/bG51/2ptd/9maXP/am13/2xvef9sb3n/
    +am13/2ptd/9zdXz/cHJ5/3Z4fP9wcnn/bnB3/2xvef9sb3n/c3V8/3Byef9sbnX/c3V8/2psc/9nanH/
    +bG51/25wd/9tb3P/cHN9/2psc/9sbnX/bG51/3V3ff9ucHf/cHJ5/21vc/92eHz/am13/2dqdP9qbHP/
    +bG51/2psc/9zdXz/am13/2xvef9qbXf/bG51/2xvef91d33/bnB3/3Z4fP9tb3P/eXuB/3N1fP93eX//
    +cHN9/2dqdP9ucHf/dXiB/29yfP9xdHz/dXh//25weP9sbnX/cHJ5/3N1fP9qbXf/bnF7/25xe/9sb3n/
    +cHN8/3Byef9ydHv/bnB4/25xev9xc3r/am13/2dqdP9sb3j/bG95/3Bye/9rbnj/am12/2tueP9rbnj/
    +bG95/29xeP9rbnf/bnF6/21wev9xdH3/cXR+/3F0ff9vcnv/cnR7/2hrdf9sbnb/bG94/25weP9sbnb/
    +b3F5/2xvef9wc33/dHZ8/2ptd/9xc33/dnh8/21wev9ydX7/dHZ8/31+gv9ucHf/c3Z//3l7gf93eoP/
    +Z2p0/2xvef9zdn//c3Z//3Z4fv92eH7/cHN9/3J1fv9sb3n/b3J8/2xvef9sb3n/dHd7/3Z4fv9tcHr/
    +c3V8/3N1fP91d33/c3V8/3Z4fP9ucHf/dnh8/3N1fP9vcXX/bnB3/25xe/93eoP/c3Z//3Bzff95e4H/
    +dXiB/2ptd/9zdn//d3qD/25xe/9zdn//dXd9/29xdf9maGz/b3F1/3V3ff91d33/bnB3/3Byef9ucHf/
    +bG51/2xudf9sbnX/dXd9/25xe/9qbXf/bG51/1xfaP9qbHP/amxz/2psc/9iZW7/YmVu/2xvef9iZW7/
    +Z2p0/25xe/9sb3n/am13/2psc/91d33/bnF7/3Byef9zdXz/bG95/3Byef91d33/bnB3/2xvef9ucHf/
    +bnF7/3Byef9zdXz/cHJ5/25wd/9zdXz/bnB3/3Bzff9wc33/e36H/3Bzff91d33/bG95/3Bzff9wcnn/
    +cHJ5/3N2f/9wc33/cHN9/25wd/91d33/bnB3/2dqcf9qbHP/c3V8/3Byef9nanH/bnF7/3N1fP93eX//
    +dXd9/25xe/9tb3P/cHJ5/3V3ff9zdn//bG95/25xe/9vcXX/b3F1/3N1fP9sbnX/bW9z/2xudf9ucHf/
    +c3Z//3V4gf9ucHf/bnF7/25xe/9wcnn/d3qD/3V4gf9zdn//bG95/3N2f/93eoP/eXuB/3Bzff91eIH/
    +cHN9/25xe/9ucHf/bnF7/3Bzff9ucXv/bnB3/3d5f/9sb3n/bnF7/3Bzff9wc33/bG95/3Byef9zdn//
    +cHN9/3Bzff9zdXz/d3qD/3V4gf97fYP/cHJ5/3N2f/9wc33/c3Z//3d5f/9zdn//cHJ5/3V4gf9wc33/
    +cHN9/3N2f/93eoP/dXiB/3t9g/9zdXz/cHN9/3Bzff91d33/c3Z//3N2f/9sb3n/c3Z//2xudf9ucHf/
    +bnB3/25wd/9qbHP/c3Z//3Bzff9zdn//bG95/3Byef9sbnX/d3l//2ptd/92eHz/bW9z/3d5f/9zdXz/
    +d3l//3Bzff9maXP/bG95/3Bzff9sbnX/bnF7/3F0fv9xdH3/bnF7/3N2f/93eX//bG95/3Bzff91d33/
    +dXd9/3Byef9ucHf/cXN6/21veP9sb3f/bXB4/2tudv9oa3X/am1z/2xud/9zdn3/am13/2tudv9oa3X/
    +Zmlz/2hrdf9pbHP/aGt0/2hqcP9naW//Zmhu/2hrdf9oa3L/Z2p0/3N1fP9sbnX/bW9z/25wd/9sb3n/
    +bG95/25xe/9sb3n/cHN9/3N2f/9qbXf/bnF7/3N2f/9ucHf/dXiB/3Z4fP99foH/b3F1/3N1fP94eX3/
    +c3V8/2dqcf9qbHP/cHJ5/3N1fP91d33/dnh8/3Byef9zdn//bG51/3Byef9ucHf/bW9z/3V3ff91d33/
    +bG51/3Byef9ucXv/c3V8/2xvef9zdXz/bG95/3d5f/9ucXv/bG51/3N1fP9ucHf/dnh8/3Byef9ucXv/
    +d3l//3Bzff9nanT/c3Z//3d5f/9ucHf/cHJ5/3Z4fP9vcXX/ZWZq/29xdf9zdXz/dnh8/2ptd/9wc33/
    +cHN9/25xe/9ucHf/bnB3/3N2f/9wc33/bnB3/3Byef9maG7/bG51/2xudf9qbXf/Zmlz/2Zpc/9sb3n/
    +YmVu/2psc/9sb3n/am13/2dqdP9sbnX/bnF7/2xvef9ucXv/bnF7/2xudf9qbXf/bnF7/2xudf9qbXf/
    +amxz/2xvef9sb3n/bnF7/2xudf9nanH/c3V8/2xudf9ucHf/bnF7/3d6g/9wcnn/dnh8/25wd/9wcnn/
    +b3F1/29xdf9zdXz/bG95/3N1fP9sbnX/c3V8/2xvef9maXP/ZGdx/25xe/9qbXf/Zmlz/3Byef9zdXz/
    +eHl9/3Z4fP9wcnn/bnB3/3Bzff91eIH/c3V8/29xdf9ucHf/bW9z/21vc/9wcnn/bG51/2xvef9sbnX/
    +bG51/3Bzff9sb3n/ZGdx/2dqcf9maG7/Zmlz/2xvef9wc33/bnF7/2dqdP9ucHf/c3V8/3V3ff9sbnX/
    +c3V8/2ptd/9ucXv/am13/2xvef9ucXv/bnB3/2xudf91d33/amxz/2xudf9ucHf/b3F1/2dqcf9ucHf/
    +bnB3/25xe/9ucHf/bG95/3N1fP92eHz/dXd9/2xvef9wc33/cHJ5/25xe/9zdn//cHN9/3Byef91eIH/
    +bnF7/25xe/9sb3n/dXiB/3V4gf9+gIb/dXd9/3V4gf91eIH/e32D/3N2f/93eoP/bnB3/3V3ff9sb3n/
    +bnB3/25wd/9sb3n/bG51/3N2f/9wc33/dnh8/25wd/9zdXz/bG95/3d5f/9qbXf/dXd9/21vc/93eX//
    +cHN9/3Bzff9sb3n/ZGZs/3Byef9wc33/am13/29yfP9zdoD/c3Z+/3Byef93eoP/eXuB/3Byef93eoP/
    +e32D/3l7gf91eID/dnmB/3t9gP92eIH/c3Z+/3R3f/9ydH3/cnV+/3J0ff9wcnn/eHqE/3N1fv9sb3n/
    +bG95/25wd/9zdXz/bW9z/2xudf9ucHf/bG95/29xdf9zdXz/cHJ5/25xe/9qbXf/ZGdx/2psc/9qbXf/
    +amxz/21vc/9wcnn/b3F1/3Byef9wc33/Z2p0/25xe/91eIH/bnB3/3d6g/95e4H/f4GH/3N1fP93eoP/
    +e36H/3d6g/9wc33/bnF7/3t9g/95e4H/eXuB/36Ahv93eoP/eXuB/25xe/91eIH/c3Z//2xvef91d33/
    +dXd9/2xudf9ucHf/cHJ5/3N1fP9zdXz/eHl9/3Bzff91eIH/cHN9/25xe/9zdXz/c3Z//3d5f/93eoP/
    +dXiB/3d5f/9wc33/amxz/3Bzff93eX//bG95/3V4gf95e4H/cHJ5/2dqdP9ucHf/d3l//3l7gf9ucXv/
    +cHN9/25xe/9sbnX/bG51/21vc/9ucXv/cHJ5/2xudf9ucXv/Zmlz/2ptd/9sbnX/am13/2dqdP9nanH/
    +bnF7/2Zobv9ucHf/bnF7/25wd/9qbHP/am13/3Bzff9ucXv/bnB3/3Bzff9sbnX/bW9z/3N1fP9wcnn/
    +bnB3/29xdf9ucHf/bG51/3Byef9qbXf/Zmlz/25xe/9nanH/bG95/25xe/91eIH/am13/3Bzff9nanT/
    +am13/2Zpc/9nanT/cHN9/21vc/9zdXz/bW9z/3V3ff9ucXv/Zmlz/2dqdP91d33/bnF7/2ptd/9wc33/
    +bG95/3V3ff93eX//cHN9/2psc/9qbHP/am13/2xvef9qbHP/bnF7/2dqcf9qbHP/bG95/2psc/9ucXv/
    +bG51/21vc/91d33/cHJ5/2ptd/9sbnX/bG51/2psc/9ucHf/cHJ5/3Byef9qbHP/cHJ5/3N1fP94eX3/
    +bnF7/3Bzff9ucXv/cHJ5/25wd/9wcnn/cHN9/25wd/9ucHf/dnh8/2dqdP9qbXf/bG51/21vc/9kZmz/
    +b3F1/25wd/9zdXz/bnB3/25wd/9ucHf/c3V8/3V3ff9ucHf/c3Z//25wd/9ucHf/c3V8/3Bzff9wcnn/
    +c3Z//2xvef9nanT/am13/3N2f/9ucXv/d3l//3Bzff9wc33/c3Z//3l7gf9wc33/c3Z//2xvef92eHz/
    +bnB3/29xdf9ucHf/bnF7/2xvef91d33/c3Z//3V3ff9sb3n/cHJ5/29xdf91d33/bG51/3Z4fP9tb3P/
    +d3l//3V3ff9wc33/cHN9/2Rncf91eIH/c3Z//2xveP9vcnz/c3aA/3V4gP9sb3n/dXiB/3V3ff9sbnX/
    +c3V8/3Z4fP91d33/c3V8/29xdf9xc3n/cHJ5/3Fzev9vcXb/bG95/3Bzff9ucHf/bnB3/3V3ff9wcnn/
    +bG95/2xudf9nanT/cHN9/2psc/9maXP/amxz/2psc/9qbHP/bG95/25xe/9sb3n/dXiB/3N1fP9wc33/
    +d3qD/3N1fP9wc33/dXiB/3l7gf95e4H/d3qD/25xe/95e4H/d3qD/3N1fP91eIH/dXd9/3l8hv9sb3n/
    +c3V8/3V3ff9wcnn/Z2p0/2Zpc/92eHz/dXd9/3V3ff91d33/bnB3/3Bzff9nanH/bnB3/2xvef9qbXf/
    +bnF7/3Bzff9sbnX/cHJ5/3N1fP9wc33/c3Z//3t9g/91eIH/foGK/3d6g/93eoP/c3Z//3l7gf97fof/
    +eXuB/3d6g/97fof/eXuB/3V3ff95fIb/e36H/3V4gf95e4H/eXyG/3Bzff9qbXf/cHJ5/3N2f/93eX//
    +bG51/3Byef9ucHf/bG51/25wd/9ucHf/c3V8/3V3ff9sbnX/bnF7/2Rncf9qbXf/Z2p0/2dqcf9nanH/
    +YmVu/2xvef9iZGr/bG51/25xe/9sb3n/Z2p0/2xudf9wc33/bG95/2xvef9zdXz/bG51/2xudf9wc33/
    +bG95/2dqdP9maXP/am13/2ptd/9sb3n/amxz/2Zpc/9zdXz/am13/2ptd/9ucXv/dXd9/2dqdP9qbXf/
    +YmVu/2dqdP9iZW7/Z2px/2ptd/9maXP/bG95/2Zobv9qbXf/Zmlz/2BjbP9gY2z/bnF7/2ptd/9maXP/
    +am13/2psc/9wc33/bnF7/2dqdP9ucXv/c3Z//3Bzff9wc33/bG95/3N2f/9ucHf/bG95/25xe/9sb3n/
    +c3V8/25xe/9tb3P/dXd9/25wd/9ucHf/b3F1/25wd/9qbXf/am13/25wd/9sb3n/Zmlz/2ptd/9ucXv/
    +c3V8/2ptd/9ucXv/bG51/2xvef9sb3n/bG95/2xvef9ucHf/am13/3Bzff9nanT/am13/2ptd/9sbnX/
    +YmVu/2psc/9nanT/bG95/2psc/9qbHP/am13/25xe/9sb3n/amxz/25xe/9qbXf/bG51/25xe/9sb3n/
    +bG51/2xudf9kZ3H/Z2p0/2Rncf9sb3n/cHJ5/3N1fP9sb3n/bW9z/25wd/91d33/c3V8/3V3ff9ucHf/
    +eXuB/25wd/9wcnn/am13/2xvef9qbXf/c3Z//3V3ff91d33/b3F1/3Byef9ucXv/d3l//25xe/93eoP/
    +cHJ5/3d6g/9ucXv/c3Z//3V4gf9maG7/dHeA/29ye/9rbnf/cHN8/3R2fP9vcnz/bG51/3Bzff91d33/
    +bG51/3N1fP9zdXz/c3V8/3N1fP9tb3P/bnB3/3N1fP9ucXv/am13/2psc/9sb3n/am13/2psc/9zdXz/
    +Z2p0/2xvef9nanH/amxz/3N1fP9sbnX/bG51/2xudf9tb3P/b3F1/3Byef91d33/cHJ5/3V4gP9zdXz/
    +c3Z//3R3gP9ucXv/bnB3/2xvef9ucXv/cHJ5/3J0e/9rbXP/dHZ9/3V3ff9vcXj/cnR7/3R2fP91eIH/
    +bW90/25xe/9zdXz/am13/2dqcf9maG7/dXd9/3Byef92eHz/dXiB/25xev90d4D/aGt1/3N2f/9xdH7/
    +b3F4/3V4gf92eYH/c3V8/3d6g/95fIb/d3qD/3l8hv9+gYr/eXyG/4GDiv91eIH/dXiB/3V4gf91eIH/
    +eXyG/3t9g/9ucXv/d3l//25xe/9ucHf/c3V8/3h5ff9ucXv/d3l//3V3ff9ucHf/Zmlz/29xdf92eHz/
    +dnh8/2psc/9tb3P/cHJ5/2ptd/9sb3n/bG95/3N2f/91eIH/c3Z//3V4gf9qbXf/bnF7/25wd/9ucHf/
    +bnF7/2Zpc/9zdn//Zmhu/29xdf9wc33/bG95/2dqdP9ucHf/d3qD/25xe/9wc33/cHN9/25wd/9ucHf/
    +eHl9/3N1fP9ucHf/bnB3/25wd/9ucHf/bnF7/2xudf9qbHP/dXd9/2xudf9sb3n/cHN9/3V3ff9ucHf/
    +cHJ5/2Zpc/9qbXf/Z2p0/21vc/9ucXv/am13/25wd/9vcXX/dnh8/25wd/9kZ3H/Zmlz/3V3ff9tb3P/
    +bW9z/3Bzff9ucHf/dXiB/3l7gf9zdn//bG51/3N1fP9ucXv/cHN9/25wd/92eHz/bnB3/25xe/9wcnn/
    +bnB3/3Bzff9ucHf/bnB3/3N1fP9wcnn/bG51/2xudf9qbXf/am13/2ptd/9qbXf/bnF7/2dqcf9sb3n/
    +bnF7/3Bzff9sb3n/bG95/2xudf9sb3n/Zmlz/2dqdP9nanT/amxz/2dqcf9wc33/Zmlz/2ptd/9qbXf/
    +am13/2Jlbv9sbnX/bG95/3V3ff9ucHf/bnB3/3N2f/93eoP/c3Z//3Byef91eIH/c3Z//3N1fP95fIb/
    +dXiB/3V3ff91eIH/c3V8/3N2f/9ucXv/eXyG/31+gf9+gIb/dXiB/3V3ff91eIH/e32D/3d6g/93eoP/
    +bnF7/3t9g/9sb3n/bG95/2dqdP9wcnn/am13/3V4gf93eX//dXd9/25wd/9wc33/cHN9/3d6g/9wc33/
    +eXyG/25wd/94eX3/c3V8/3N1fP9zdXz/Zmhs/3V4f/9zdoD/bnB5/3R3gf92eH7/c3Z//25xe/93eoP/
    +dXd9/29xdf9zdn//dXd9/3V3ff9wcnn/bG51/25xe/9zdXz/bnF7/21vc/9tb3P/cHJ5/2xvef9sbnX/
    +dXd9/2xvef9wcnn/bG95/2dqdP91d33/bnB0/21vdv9tb3b/am13/2xudP9tcHr/c3V9/2xvef90d4D/
    +b3J5/29xef9zdn3/cXN4/29xdv9tb3f/bXB6/2xvef9xdH3/Z2pz/3N1ff91d33/b3J5/3Fzev90dnv/
    +dXd+/25wdf9wc33/dXd9/25xe/9qbXf/bnF7/3l7gf9zdn//eXuC/3Z5g/90d4D/d3mA/2xueP91d3//
    +dHeB/3N1e/95e4L/eXuB/3J0fP91eIH/cHN9/3Bzff9wc33/eXuB/3Bzff95fIb/cHN9/3N1fP9ucXv/
    +bG95/3Byef9ucXv/Z2p0/25xe/9qbXf/Z2p0/2ptd/9zdXz/am13/3V3ff9zdXz/bG51/2Rncf9sbnX/
    +dXd9/3Z4fP9nanT/bG51/25xe/9qbXf/am13/2ptd/9sb3n/cHN9/2xvef9ucXv/Zmlz/2ptd/9ucHf/
    +bnB3/2xudf9kZmz/dnh8/2Zobv9ucHf/c3Z//2xvef9qbHP/bnB3/3d6g/9zdn//cHN9/3N2f/9wc33/
    +cHN9/3l7gf9ucXv/bG95/2xvef9ucXv/cHN9/3N2f/9wcnn/bG95/3V3ff9ucHf/bnB3/3V3ff92eHz/
    +am13/25xe/9kZ3H/bG51/2psc/9qbHP/bG95/2dqdP9qbXf/amxz/25xe/9qbXf/Zmhu/2Zobv9zdXz/
    +bW9z/2psc/9ucXv/ZGdx/3N1fP91d33/c3V8/3Byef91d33/dXd9/3V3ff9ucHf/dXd9/25wd/9ucXv/
    +bnF7/25wd/91d33/dXiB/25xe/91eIH/cHN9/2xvef9ucHf/cHN9/2xvef9ucXv/bnF7/3Bzff9ucHf/
    +c3Z//3d6g/9zdn//cHN9/3Byef9tb3P/c3V8/25wd/9sb3n/am13/2psc/9qbHP/bG95/2Zpc/9nanT/
    +am13/2ptd/9kZ3H/amxz/2ptd/91d33/bG51/21vc/9wcnn/c3V8/3Bzff9nanH/bnF7/2xudf9tb3P/
    +cHJ5/2xudf9qbXf/bG51/25wd/9sbnX/Zmlz/25xe/91d33/c3V8/2xudf9sbnX/bnB3/3N1fP9zdXz/
    +dXd9/2xudf91d33/Zmlz/2ptd/9maXP/am13/2psc/9wc33/cHN9/3Bzff9qbHP/bG95/2ptd/9sb3n/
    +Zmlz/3V3ff9nanH/cHN9/2ptd/9ucXv/am13/2RmbP90dXv/cnR9/2ttdv9ucXn/cnV+/3N1fP9ucHf/
    +c3Z//3V4gf9zdXz/dXiB/3N2f/95e4H/dXiB/3Bzff95fIb/eXyG/3t9g/9zdn//c3V8/3l8hv94e4H/
    +dXd9/31/hf96fIL/eHuE/3Z5gf9zdXz/en2F/3R3f/9xc3r/cnR7/29xeP9wcnn/cXR8/3d5fv9wc3v/
    +c3Z+/3Fzev9vcXj/cnR7/3J0ef9xc3r/b3F2/25wef9vcnr/cnR5/2ptc/9ydHz/dXd//3R2fP9vcnv/
    +cHJ5/3R3gf9vcXj/c3Z//3p8gv9wcnn/Z2p0/2dqdP93eX//dnmC/3V3fv9ydX3/bXB6/29yeP9maXP/
    +Z2py/2ptdf9nanT/bnF5/3J1ff9sb3b/cHN9/3Bzff9ucXv/cHN9/3l8hv91eIH/d3qD/3N2f/9zdn//
    +c3V8/3Bzff91eIH/cHN9/3N2f/93eX//c3Z//25wd/9wc33/c3Z//25wd/93eX//d3l//21vc/9iZW7/
    +am13/3N1fP93eX//am13/2xudf9wcnn/bW9z/2xudf9sbnX/bG95/3N1fP9ucXv/cHN9/2dqdP9wc33/
    +c3V8/3Bzff9ucHf/bG95/3d6g/9sb3n/cHN9/3l7gf9wc33/bnF7/3N2f/9+gIb/eXyG/3N2f/91eIH/
    +c3Z//3Bzff91d33/cHJ5/25xe/9sb3n/bG95/25wd/9sb3n/Z2p0/2Rncf9ucXv/Zmlz/2dqdP9sb3n/
    +c3V8/2psc/9wc33/am13/2xvef9qbHP/am13/25xe/9nanT/bG51/21vc/9zdXz/bG95/2Rncf9kZ3H/
    +cHN9/2ptd/9nanT/bnF7/2dqdP9zdXz/dXd9/3V3ff9ucXv/cHN9/25xe/9wc33/amxz/2ptd/9nanT/
    +amxz/2dqdP9qbHP/bnF7/2ptd/9qbHP/Zmlz/2Rncf9iZW7/Zmhu/2Rncf9iZW7/ZGdx/2Zobv9maXP/
    +YmVu/2Rncf9maXP/Zmlz/2Zobv9kZ3H/Zmhu/2dqdP9maXP/Zmlz/2dqcf9kZ3H/Z2px/25xe/9qbXf/
    +am13/2xvef9sb3n/Zmlz/2ptd/9ucHf/dXd9/3Byef9ucHf/bnF7/3N2f/9zdXz/bnB3/3Bzff9ucXv/
    +bnB3/3V3ff9ucHf/bnB3/25wd/9ucHf/am13/2Zobv9zdXz/c3V8/3Byef9sbnX/bW9z/21vc/9wcnn/
    +cHJ5/3Bzff9sbnX/dXd9/2dqdP9sbnX/Zmlz/2dqdP9nanT/bnF7/3N1fP91d33/bnB3/3V3ff9ucXv/
    +cHJ5/25wd/92eHz/b3F1/3N1fP9zdXz/dnh8/25wd/9kZmz/bnB1/25xe/9tb3f/cHN9/3l7gf91eIH/
    +c3Z//3t9g/9wc33/bnB3/3Bzff9zdn//d3l//3V3ff9sb3n/bnF7/3Byef90dn3/bXB3/2ptdv9vcnv/
    +cnV+/21wdf9zdXz/bG93/25xev9tcHn/aGpz/3J0ev9wc3v/b3F6/3Bye/9pbHX/bnF5/2xvd/9xdH7/
    +a254/2ptd/9zdXv/bG95/29yev9zdXv/bnB2/25wdv9vcXX/b3F4/25wdf9sb3b/cHJ5/3V3fP93eX//
    +bnB3/3ByeP91eIH/bW94/3V3fv93eX//bW95/2Zpc/9nanT/dXd9/3R2ff9wcnn/cHN7/2xvef9rbnT/
    +Zmlz/2RncP9oa3P/Y2Zv/2Vocf9qbXb/a212/25xe/9qbXf/Z2p0/2dqdP9zdXz/bG95/3Byef9ucHf/
    +bG95/2ptd/9wc33/c3V8/2ptd/9sb3n/cHN9/2xvef9qbXf/am13/3Bzff9tb3P/dnh8/3l8hv9vcXX/
    +Zmhu/2xudf92eHz/d3qD/2xvef9ucXv/c3Z//3N1fP9wcnn/bG95/3Bzff93eX//c3Z//3V4gf9qbXf/
    +c3Z//25wd/9wcnn/cHJ5/2ptd/95e4H/am13/3Byef9zdn//c3V8/2ptd/9zdn//foCG/3l8hv93eoP/
    +eXuB/3V4gf95fIb/eXyG/3l7gf93eX//cHN9/3d6g/91eIH/d3qD/3N1fP9ucXv/e32D/3N1fP9zdn//
    +dXiB/3l7gf9wc33/cHN9/25wd/9wc33/cHJ5/25wd/91d33/amxz/2xudf9ucHf/dnh8/25wd/9kZ3H/
    +ZGdx/3N1fP9qbXf/bG51/3Bzff9nanT/bnF7/3V3ff9zdXz/bG95/3Bzff9qbHP/bG95/2dqdP9sb3n/
    +Z2p0/2xudf9qbHP/am13/3Bzff9ucXv/bG51/25wd/9qbXf/Z2p0/2xudf9qbXf/amxz/2ptd/9nanT/
    +Z2p0/2Zpc/9qbXf/bG95/25xe/9ucXv/bG95/2xudf9ucXv/Z2p0/2xudf9qbHP/am13/2xudf9wcnn/
    +bG51/2xudf9wcnn/bG95/2Rncf9sbnX/bnB3/3V3ff9wcnn/b3F1/25xe/91eIH/c3Z//25wd/9wc33/
    +cHN9/3Byef9zdn//bnF7/2ptd/9ucXv/bG95/25wd/9kZ3H/bnF7/25xe/9sb3n/Z2p0/2ptd/9sbnX/
    +bnF7/2xvef9qbXf/Z2p0/3N1fP9kZ3H/Z2px/2BjbP9iZW7/ZGdx/3N1fP9ucXv/am13/2xudf9wc33/
    +bG95/2xvef9qbXf/dXd9/21vc/91d33/bnF7/3h5ff9ucHf/ZGZs/3Bydv9ucXv/bG95/25xe/9zdn//
    +d3qD/25xe/93eX//c3Z//25wd/9zdn//c3Z//3l7gf95e4H/cHJ5/3Bzff9vcnz/dXd+/3Byef9rbnj/
    +cHN7/3Fze/9sbnb/cHJ4/2tueP9sb3j/bG95/2psc/9ydXz/cXN7/2lsdv9ydX7/aWtx/3Bye/9oa3T/
    +bXB5/2RncP9laHL/bW93/2ptd/9sb3n/bnF6/2ptd/9qbXf/am13/2xvef9qbHT/a210/21vc/90dnz/
    +dHZ8/25wd/9vcXb/c3Z//2xvd/9xdH3/cXR+/2tueP9maG7/Zmhu/3V3ff9zdX3/bnF7/3R3fv93eX7/
    +c3V8/3J1fv9ucXr/bnF6/2tud/9vcXj/dXiA/3R2fv9wc33/bnF7/25xe/9sbnX/dXd9/3V3ff91eIH/
    +dnh8/3N1fP9wcnn/bnF7/3d5f/9ucHf/cHJ5/3N1fP9zdXz/bnB3/3Byef9zdXz/b3F1/3Z4fP93eX//
    +bnB3/2dqcf9ucXv/dXd9/3l7gf9vcXX/bG95/3V4gf9zdXz/bnF7/2ptd/9wc33/d3l//3Bzff9zdn//
    +am13/3N2f/9wcnn/c3V8/25wd/9maXP/d3l//2dqcf9ucHf/bnB3/25xe/9nanT/cHJ5/3V3ff9wc33/
    +cHN9/3N2f/91d33/cHJ5/3Byef9ucHf/bnB3/2dqcf9zdXz/bnB3/3Bzff9sb3n/Z2p0/3V3ff9ucHf/
    +bnB3/3N2f/95e4H/cHN9/3N2f/9sb3n/cHJ5/2xudf9ucHf/dXd9/2xudf9ucHf/bnB3/3Z4fP9ucHf/
    +Z2px/2ZobP9zdn//bnF7/25wd/9zdXz/amxz/3Byef91d33/bG95/2xvef9wc33/bG51/25xe/9ucXv/
    +c3V8/2xudf9sbnX/Z2p0/2xudf9ucXv/bG95/2dqdP9sb3n/amxz/2Rncf9qbHP/bnF7/2dqcf9sb3n/
    +am13/2ptd/9qbXf/bG95/25xe/9ucXv/bnF7/2xvef9qbHP/bnF7/25xe/9qbXf/Z2p0/21vc/9sbnX/
    +bnF7/21vc/9ucHf/cHN9/3Byef9maG7/bnB3/3Byef9zdn//c3Z//2xvef9sb3n/cHN9/3N2f/9ucHf/
    +cHN9/3N1fP9ucHf/dXiB/3Bzff9qbXf/cHN9/25wd/9ucHf/Zmlz/3V4gf93eoP/cHN9/2xvef9wcnn/
    +bG95/25xe/91d33/bnF7/25xe/93eX//amxz/2xudf9qbHP/Zmlz/21vc/92eHz/dXd9/3Byef9tb3P/
    +d3l//2xvef9ucXv/amxz/3N1fP9nanT/bG95/2dqdP9sb3n/Zmlz/2Jlbv9sbnX/am13/2psc/9sbnX/
    +bnB3/3V3ff9sbnX/dXd9/3Byef9qbHP/bG51/2xvef9zdXz/c3V8/2ptd/9xdH3/bG54/25xe/9ucHf/
    +am11/25wd/9tb3b/bG52/2tudP9rbnf/aGt0/2Zpc/9naW//cXN6/3R2fP9qbXf/cnR8/2Zob/9kZ3H/
    +ZWhy/25wd/9laHH/aGt1/3Bzff9ucXv/cHN9/3Bzff9ucHf/amxz/29xdv9wcnr/b3F4/21vdv9ucHX/
    +dnh8/3V3ff9xc3v/cHN4/3N1fP9ydHz/dHeA/3h6gP9wcnn/Zmlz/2Zobv9wc33/cXN5/3Fzev9ydHr/
    +c3V8/29xef9tcHj/b3F3/2xudv9pa3T/bnF5/3N1fP9xc3n/c3V8/29xdf9ucXv/bG95/3d5f/91eIH/
    +d3qD/3N2f/9zdn//cHN9/3N2f/95e4H/c3Z//3N2f/9zdn//cHN9/2xvef9ucHf/c3Z//25wd/93eX//
    +d3l//3N2f/9maXP/cHN9/3N2f/93eX//bnB3/3Byef91d33/b3F1/29xdf9sbnX/dXd9/3N1fP9ucHf/
    +cHJ5/2Zobv9ucHf/am13/2ptd/9tb3P/Zmhu/3V3ff9iZW7/am13/2xvef9sbnX/Zmlz/2ptd/9zdXz/
    +c3V8/3N1fP91d33/bnF7/2xvef9zdXz/bnB3/25wd/9nanT/dXiB/25xe/9zdn//bnB3/2dqdP9zdn//
    +am13/25xe/9zdn//dXiB/25wd/9zdn//am13/25xe/9vcXX/bnF7/3N1fP9sbnX/bnB3/3Byef92eHz/
    +bnB3/2Zpc/9kZmz/cHJ5/2xvef9nanT/bnF7/2Zpc/9sb3n/c3Z//2xvef93eoP/dXiB/25wd/9zdn//
    +c3Z//3V3ff9ucHf/bnB3/2ptd/9ucHf/cHN9/3V4gf9wcnn/c3Z//25xe/9ucHf/bG95/3Bzff9wcnn/
    +dXiB/25xe/9ucXv/bnB3/3Byef9wc33/cHN9/25xe/9ucXv/bnB3/3N2f/9sb3n/b3F1/2xvef9vcXX/
    +bnB3/3N2f/9ucHf/bnB3/3Bzff9wc33/Zmlz/3Byef9zdXz/dXiB/3V4gf9ucHf/bG95/3N2f/91d33/
    +bG95/3N2f/91eIH/bnF7/3d5f/9ucXv/am13/3Bzff9ucHf/bnB3/2ptd/93eX//dXiB/3N2f/9sb3n/
    +cHJ5/2xudf9ucXv/c3Z//3N1fP9zdXz/dXiB/2xvef9wcnn/am13/2dqdP9ucHf/dXd9/3h5ff9zdXz/
    +bnB3/3h5ff9zdXz/c3V8/29xdf92eHz/bnB3/25xe/9qbXf/bnF7/2xvef9kZ3H/amxz/2dqdP9iZW7/
    +Z2p0/2xvef9ucXv/amxz/3N1fP9sb3n/ZGdx/2psc/9nanT/bG95/2xvef9oanH/cHN8/2tudv9sb3n/
    +bW92/21vd/9vcXj/b3F2/3J0e/9vcXj/dHZ8/2ptd/9oa3L/bW9z/3d5f/94eoD/cHJ5/3p8gv9ucHf/
    +cnR7/25wdP90dn3/bG52/3Bzev92eH//bnF7/3N2ff9xc3r/bnB4/2hrcv9tcHf/bXB6/2xudf9sbnX/
    +am10/2xvef9ydHr/am10/2ttcv9ucXn/aWx0/3J0fP9vcnn/a213/2Rncf9kZmz/bnF7/3Byef9sb3n/
    +dHZ8/3Bze/9sb3f/a212/2xvd/9rbnb/aGt1/25wef9sb3n/bG93/3Bzff9maXP/Z2p0/2psc/9ucXv/
    +bG95/3N1fP9maXP/ZGdx/2Rncf9nanT/bG95/2Zpc/9kZ3H/Zmlz/2Zpc/9kZ3H/Zmlz/2Zpc/9iZW7/
    +bG51/2xvef9kZ3H/XWBq/2Zpc/9sb3n/cHJ5/2Rncf9nanT/dXd9/2xudf9sbnX/am13/25xe/91d33/
    +bG95/3N1fP9nanH/dXd9/25wd/9ucXv/bnB3/2dqcf94eX3/Zmlz/2xvef9ucXv/b3F1/2xudf9sbnX/
    +c3V8/3N1fP91d33/dnh8/3N1fP9ucHf/cHJ5/2xudf9ucHf/Z2px/3N1fP9wcnn/bG95/2dqdP9iZW7/
    +bnF7/2Zpc/9sb3n/cHN9/3d5f/9qbHP/c3V8/2psc/9wcnn/b3F1/3Bzff9zdXz/bnB3/2xudf9wcnn/
    +c3V8/29xdf9qbHP/Zmhu/3Byef9ucHf/bnB3/3V4gf9wcnn/dXiB/3l8hv91eIH/c3Z//3V4gf9sb3n/
    +d3qD/3V4gf95e4H/cHJ5/3N1fP9sb3n/bG95/3N2f/9wc33/cHJ5/3V3ff9ucHf/bnB3/25wd/9zdXz/
    +bG51/3N1fP9sbnX/bnF7/21vc/9ucHf/c3V8/25xe/9sb3n/am13/2ptd/9sb3n/amxz/2psc/9nanT/
    +Z2px/2xudf9ucXv/amxz/2Zpc/9sb3n/bG95/2BjbP9nanT/bW9z/25wd/9ucHf/amxz/2xudf9sb3n/
    +c3V8/2ptd/9ucXv/dnh8/3Byef93eX//cHN9/2ptd/9zdXz/bG51/2xudf9qbHP/dXd9/3N1fP9zdXz/
    +amxz/25wd/9ucHf/bnB3/3V3ff9wcnn/dXd9/3d5f/9ucHf/b3F1/2ptd/9nanT/bnB3/3V3ff92eHz/
    +c3V8/2xudf92eHz/dXd9/3V3ff9wcnn/dnh8/3Byef9wc33/cHJ5/3Byef9zdXz/Zmhu/21vc/9qbXf/
    +Zmlz/21vdv9xdH7/dXd9/21vc/9zdXz/bnF7/2Rncf9sbnX/bnF7/25xe/9ucXv/aWxz/3Bze/9ydHr/
    +c3aA/3J1fv9ydXv/c3V8/3F0ff92eH//dnmC/3V4gf9sb3n/bXB6/29xef95e4H/eXuE/29yfP93eoT/
    +bnF4/3J1f/9zdXz/cnV+/29xdv9zdXz/c3Z+/29yev92eH7/b3F4/2xvef9rbXT/cHJ5/29xeP9xc3f/
    +bW9z/29xeP9xc3r/c3V9/3Bye/9zdXv/dXh//3Byef9xc3r/c3V8/29xdf9nanH/Zmhu/25wd/9sb3n/
    +bG95/3R2fP9ucXr/bG94/2hrdf9ucXv/aGt1/2dqc/9rbnf/bG94/2lsc/9nanT/XWBq/2Zobv9maG7/
    +bG95/2xvef9ucHf/Zmlz/2Zobv9maG7/Zmlz/2ptd/9maXP/ZGdx/2dqdP9nanT/Zmhu/2dqdP9nanT/
    +YGNs/2xudf9ucHf/Zmhu/11gav9maXP/am13/3Byef9maXP/Z2p0/25wd/9maG7/Z2px/2Rncf9sb3n/
    +bnF7/25xe/9wc33/Zmhu/3Bzff9nanT/bG95/2psc/9maXP/c3V8/2Jlbv9sbnX/bnB3/2xudf9maXP/
    +Zmlz/3Bzff9ucXv/bG95/25xe/9ucXv/bnF7/2xvef9sbnX/bnF7/2dqdP9zdXz/c3V8/3Byef9tb3P/
    +ZGZs/3Byef9sbnX/cHJ5/3V3ff93eX//b3F1/25wd/9nanH/bnF7/3Byef91eIH/dXiB/3N1fP9zdXz/
    +c3Z//3d6g/9wc33/bnF7/2xvef9zdn//c3Z//3N1fP91eIH/bG95/25xe/91eIH/c3Z//2xvef9zdXz/
    +amxz/3N1fP9qbXf/cHN9/2psc/9qbHP/amxz/2dqdP9ucXv/Z2p0/2psc/9sb3n/Z2p0/2Zpc/9qbXf/
    +bnF7/2ptd/9sb3n/am13/2xvef9vcXX/cHJ5/3Z4fP9zdXz/c3V8/3Byef9wcnn/dnh8/25xe/9sb3n/
    +bG95/2xvef9sb3n/dXiB/3N1fP9wcnn/dXiB/3Bzff9qbXf/bnF7/25wd/9sb3n/bnB3/29xdf9sbnX/
    +c3V8/3V3ff9sbnX/cHN9/3N1fP9ucHf/c3V8/2xudf9nanH/bG95/29xdf9ucHf/ZGdx/3N1fP9sb3n/
    +bG95/2Zpc/9sb3n/Zmlz/25wd/9wc33/bnF7/25xe/9zdXz/Z2p0/25wd/9qbHP/Z2px/2ptd/9zdXz/
    +dXd9/2xvef9sbnX/dXd9/2xvef9ucXv/Zmhu/2ptd/9nanH/bG95/2psc/9qbXf/Zmlz/11gav9laHL/
    +Z2lv/1xfaP9naW//am12/2xvef9sbnX/Z2p0/2Zpc/9iZW7/amxz/25xe/9ucXv/c3V8/2tud/9ydHv/
    +cHJ4/25xev9tb3b/bG51/21wef9ucHf/cXN6/3R2fP9wcnj/bG51/21vdv9rbXb/dHZ+/3J1fP9rbnb/
    +dHZ9/2xudf9tb3b/cXN5/2xvd/9ucHf/cHJ7/3Bzev9wcnn/c3V8/2xvef9ucHf/bG94/3J0ff9xc3v/
    +dHZ+/29yev9xdHz/bXB5/3BzfP9ucHr/dXeA/3h6gP9ydX7/cHN9/3N2f/9ucHf/am13/2dqdP9wc33/
    +cHN9/3N2f/95fIX/cXN9/25xe/9oa3X/c3V8/25wd/9sb3n/cHN9/3V3ff9wcnn/cHN9/2xvef9wc33/
    +bG95/3V3ff91d33/d3l//3N1fP9ucHf/b3F1/3V3ff94eX3/dXd9/3Byef9zdXz/cHJ5/2dqdP9sb3n/
    +bnF7/2xudf91d33/cHN9/2psc/9iZW7/am13/3Bzff9ucXv/amxz/2ptd/9zdXz/Z2px/2psc/9maXP/
    +Z2p0/2dqdP9maXP/Z2p0/2BjbP9ucXv/Z2p0/2xvef9sbnX/amxz/3Z4fP9maG7/bnB3/2xvef9sb3n/
    +bG95/2ptd/91d33/c3V8/3N1fP9zdXz/cHJ5/3N1fP9wc33/bnB3/3Bzff9qbXf/dXiB/3d5f/91d33/
    +bnB3/2RmbP9ucHf/am13/2ptd/9ucXv/dXd9/2xudf9qbXf/YmVu/2xudf9sbnX/bG95/2xvef9sbnX/
    +am13/3Bzff9zdXz/bG51/2Zpc/9kZ3H/bnF7/2xvef9qbHP/bG95/2psc/9sb3n/d3l//25xe/9kZ3H/
    +Z2p0/2BjbP9kZ3H/Zmhu/2ptd/9kZ3H/Z2px/2Zobv9nanH/am13/2dqdP9qbXf/c3V8/25xe/9qbXf/
    +bG51/25xe/9qbXf/cHJ5/29xdf9zdXz/b3F1/25xe/91d33/c3V8/3N1fP9ucXv/bnF7/3V3ff9wcnn/
    +bnB3/25wd/9ucHf/bnB3/3Bzff9vcXX/b3F1/25wd/9sbnX/Zmhu/21vc/9tb3P/bG51/2xudf9qbXf/
    +amxz/3Bzff9zdXz/bG51/3Bzff9wc33/bnF7/3Bzff9tb3P/bG51/3N1fP9vcXX/bnB3/2Zobv92eHz/
    +cHJ5/3N1fP9nanH/cHJ5/25wd/9zdXz/dXd9/3Byef9wc33/d3l//25xe/91eIH/bG95/3N1fP9zdXz/
    +dXiB/3l7gf9ucXv/cHJ5/3V4gf9zdXz/c3Z//25wd/9zdXz/bnF7/3V4gf9wc33/cHN9/3Bzff9qbHP/
    +bW93/29ye/9pbHX/b3F6/29yfP9xdH7/bnF7/3Byef9wc33/bG95/2xvef9zdn//bnF7/3Bzff9sb3n/
    +dHZ8/25xe/9xc3v/bnF7/21vdv9xc3r/cXN4/29yev9zdX3/cXN6/3F0fP9xdHz/b3J6/3d5gv9xdHv/
    +bW93/3R2fv9qbXb/a254/3R2f/9tcHr/cHN8/21wev9tcHn/bnF4/3Bye/9vcnz/bnB3/2tueP9tcHr/
    +bG51/25xev9qbXf/cHJ8/2xudf9qbXf/am13/3J0e/9ucXv/am13/2psc/9nanT/Z2px/2Jlbv9gY2z/
    +am13/2dqdP9qbXf/c3Z//2ptd/9qbXf/ZGdx/25xe/9sb3n/bG51/3Byef9ucXv/cHJ5/3Byef9tb3P/
    +cHJ5/25wd/93eX//d3qD/3d6g/91eIH/c3Z//25xe/93eoP/d3qD/3d6g/9zdn//dXiB/3d6g/9sb3n/
    +cHN9/3Bzff9zdn//e32D/3l7gf9wc33/bG95/3N2f/95e4H/foCG/3N2f/93eoP/eXyG/3Bzff9wc33/
    +dXd9/3d6g/95e4H/eXuB/3V4gf9wc33/e32D/3N1fP91eIH/c3Z//3Bzff95e4H/bG95/25wd/9ucXv/
    +cHJ5/2ptd/9sb3n/cHN9/3V4gf9zdXz/cHJ5/3Byef9wcnn/c3V8/29xdf9ucHf/Z2p0/3Bzff91d33/
    +cHN9/21vc/9kZ3H/bG95/2dqdP9sb3n/cHN9/3V3ff9qbXf/am13/2Rncf9nanT/amxz/2ptd/9nanT/
    +Z2px/2Zpc/9ucXv/bnF7/2dqcf9ZXGX/XF9o/2Zpc/9maXP/Zmhu/2Rncf9kZ3H/Z2p0/2xvef9maXP/
    +Z2p0/2xvef9maXP/bnF7/2xudf9wc33/amxz/2xvef9sbnX/bG51/3V3ff9ucHf/bnB3/3l7gf9ucXv/
    +bnB3/25wd/9zdXz/am13/3V4gf9wcnn/cHJ5/3Byef9zdn//d3qD/3N2f/9zdn//cHJ5/3Bzff95e4H/
    +cHN9/3Bzff9ucXv/cHN9/25xe/9wc33/bnB3/25wd/9wcnn/bW9z/2dqcf9vcXX/bnB3/25wd/9sbnX/
    +am13/2xudf91d33/c3V8/2ptd/9wc33/cHJ5/3Byef9zdn//bG51/2xudf9zdn//am13/25wd/9kZ3H/
    +c3Z//3N2f/9zdn//am13/3N2f/9wcnn/dXiB/36Ahv95fIb/eXyG/3t9g/9zdn//d3qD/25xe/9wcnn/
    +cHJ5/3N2f/95fIb/cHN9/25xe/93eX//bnF7/3Byef9vcXX/c3V8/25xe/91eIH/cHN9/25xe/9sb3n/
    +bG51/29xef9xdHz/aGtz/3Byef9ydHr/dHZ8/25xe/9ucXv/cHN9/25wd/9wcnn/dXiB/3Bzff9zdn//
    +bnF7/3Z4fv9xc3r/c3Z//21wev9tb3j/dHZ7/3J1ff9tcHr/cnV//29xef90dn//bXB6/3ByeP93eX//
    +cHF4/25wd/9zdXz/amxz/25wd/92eH7/bnB3/3N1fP9vcXj/aGt1/25wdP9vcXv/bnF7/2xudf9sb3n/
    +cHN9/2xudf9zdXz/bG51/3N1fP9sbnX/amxz/2ptd/91d33/bnF7/2xvef9qbXf/bG95/2psc/9kZ3H/
    +YGNs/2dqdP9nanH/Z2p0/3V3ff9qbXf/Z2p0/2BjbP9qbXf/Zmlz/2Zobv9nanT/Zmlz/2Zpc/9qbXf/
    +Zmhu/2dqdP9maG7/dXd9/3V3ff9zdXz/bG95/3Bzff9qbXf/cHN9/3d5f/9wc33/cHJ5/3N1fP91d33/
    +bG51/3Byef9wc33/c3Z//3d6g/93eoP/c3V8/25xe/9ucXv/dXd9/3V3ff9sb3n/bG95/3d5f/9sbnX/
    +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/Zmlz/25xe/9nanT/bG95/2xvef9iZW7/am13/2BjbP9iZW7/
    +Z2px/2Rncf9kZ3H/Zmlz/2ptd/9sb3n/bG95/2xudf9sb3n/bnF7/2xvef9sbnX/bnF7/2dqdP9ucXv/
    +dXd9/3N2f/9ucHf/Z2p0/25wd/9ucHf/cHJ5/3N1fP92eHz/bG51/2xudf9kZ3H/am13/25wd/9sbnX/
    +bG95/2xudf9nanT/cHN9/3Bzff9sbnX/YmVu/2Jlbv9ucXv/am13/2xudf9qbXf/Z2px/2xvef9wcnn/
    +bG95/25wd/9sb3n/Z2p0/2xvef9qbXf/c3V8/2xudf9wcnn/bG95/3N1fP97fYP/cHN9/3Byef95fIb/
    +dXiB/3Byef9zdXz/d3qD/25xe/97fYP/dXd9/3l7gf91eIH/eXyG/3l8hv91eIH/dXiB/3N2f/9wc33/
    +d3qD/3Bzff9ucHf/Z2p0/25wd/9wcnn/cHJ5/25wd/9vcXX/cHN9/29xdf9nanH/bG51/2xudf9qbHP/
    +am13/2dqdP9nanT/bnF7/2xvef9qbHP/am13/25xe/9qbXf/c3V8/2ptd/9nanT/bnF7/2dqdP9sbnX/
    +ZGZs/3Byef9ucXv/bG95/2Rncf9sb3n/Z2px/25xe/9wc33/am13/2xvef9wc33/am13/2xvef9kZ3H/
    +Z2p0/2psc/9qbXf/cHJ5/2dqcf9maXP/cHJ5/2psc/9sb3n/Z2px/2ptd/9nanT/Z2p0/2ptd/9nanH/
    +amxz/2dqdP9sb3j/cnV8/2Zpc/9vcXf/a253/25xe/9qbHP/Z2p0/2dqdP9kZ3H/bG51/2xvef9qbXf/
    +am13/2xudf9sb3n/aGt1/3V3ff9ucXj/bW92/3Z4fP91d33/bG92/3N1fP9sbnb/c3V8/25wd/9vcXX/
    +eHl9/3N1fP9sbnX/bnB3/2psc/9sb3n/dXiB/25xe/9wcnn/bnF7/2ptd/9qbXf/c3V8/25xe/9qbHP/
    +bG51/3N1fP9ucHf/cHJ5/25wd/9zdXz/bG51/21vc/9qbXf/d3l//2xvef9qbXf/am13/2psc/9qbXf/
    +ZGdx/2BjbP9qbXf/amxz/2xvef91d33/bG95/3N1fP9naW//c3V8/3Byef9sb3n/cHN9/3V4gf9wc33/
    +cHN9/25wd/9ucXv/bnF7/3d6g/91eIH/d3l//3V4gf9zdn//cHJ5/3N1fP93eX//c3V8/25wd/91d33/
    +c3V8/21vc/9qbXf/bnB3/2xvef9ucXv/am13/2Zobv9maG7/Zmlz/3Bzff9zdXz/bG51/2ptd/91d33/
    +bG51/21vc/9tb3P/bnB3/2xvef9sb3n/bG95/2Zpc/9ucXv/am13/3N1fP9ucHf/Z2px/3Z4fP9nanH/
    +bnB3/25wd/9vcXX/bG95/2xvef9zdn//c3Z//3N2f/9ucHf/c3V8/3Bzff9ucXv/bG95/3N1fP9nanT/
    +c3Z//3l7gf93eX//c3V8/3N1fP91eIH/cHJ5/3d6g/97fYP/f4GH/3d5f/9zdn//bnF7/3N2f/9zdn//
    +cHN9/3Bzff9ucHf/am13/3V3ff92eHz/bG95/2psc/9maXP/cHN9/25wd/9zdXz/cHJ5/2xvef9zdXz/
    +dXd9/3N1fP9ucXv/bnB3/2xudf91d33/bnF7/3V3ff9wcnn/bnB3/2ptd/9sbnX/dXd9/2xudf9sbnX/
    +eHl9/3N1fP9qbHP/bnB3/3V3ff9nanH/cHJ5/25wd/9ucHf/bG95/3N1fP9wcnn/cHJ5/3N2f/9ucXv/
    +c3V8/3V4gf9ucXv/bnF7/25wd/9wc33/c3Z//3N2f/9wcnn/c3V8/3V4gf9wcnn/Zmlz/25xe/9ucHf/
    +b3F1/25wd/9sb3n/cHN9/3V4gf9wc33/bnF7/25xe/9zdn//b3F1/3Z4fP9tb3P/amxz/3Byef9qbHP/
    +bnB3/2dqcf9zdn//cHN9/25xe/9nanH/c3V8/2xudf9ucXv/eXuB/3V4gf9zdn//c3Z//2xudf9ucHf/
    +bG51/25wd/9vcXX/c3V8/3d5f/9ucHf/cHJ5/3d5f/9ucHf/c3Z//3Byef9wcnn/c3V8/3Byef92eHz/
    +bG51/2xudf9nanT/bG95/2xvef9maXP/a210/2Vocv9ucXv/am13/2xudf9sbnX/Z2p0/2ptd/9ucXv/
    +bnB3/25xe/9qbXf/bG95/2Zpc/9zdXz/am13/2dqcf9wcnn/bnF7/2psc/9ucXv/am13/25xe/9qbXf/
    +am13/3Bzff9sb3n/Z2p0/2ptd/9kZ3H/bG51/3V3ff9ucHf/c3V8/2xvef9sbnX/bG51/3Bzff9ucXv/
    +Zmlz/2ptd/92eHz/bnB3/3N1fP9sb3n/dXiB/3Bzff9zdXz/c3V8/3h7hf91eIH/dXiB/3N2f/9zdn//
    +c3V8/2ptd/9ucXv/dXd9/3d6g/93eoP/fYCJ/3d6g/93eYD/bXB5/3N2f/9ucXv/bXB6/21wev9ydX7/
    +c3V8/3V3ff9sbnX/cHJ5/3Byef93eoP/d3l//3h5ff9zdXz/bnF7/2psc/9sb3n/dXd9/2xvef9nanT/
    +cHJ5/2ptd/9qbHP/am13/2xvef9sb3n/cHN9/25xe/9sbnX/bG51/2ptd/91d33/dXd9/2ptd/9qbXf/
    +c3Z//2dqcf9nanT/amxz/2xudf9sbnX/am13/2xvef9maXP/bG95/2psc/9ucXv/bG51/2Jlbv9wcnn/
    +YGNs/2Rncf9maXP/Z2px/2Zpc/9maXP/bG95/2dqdP9qbXf/Zmlz/2ptd/9qbXf/am13/2psc/9sb3n/
    +ZGdx/2ptd/9zdXz/cHJ5/2dqcf9iZW7/bG95/2dqcf9sb3n/am13/3N1fP9qbHP/am13/2Zpc/9qbHP/
    +am13/2xudf9ucHf/b3F1/2psc/9zdXz/dXd9/2psc/9maG7/Zmhu/3Z4fP9wcnn/cHJ5/25wd/9tb3P/
    +c3V8/3V3ff9zdn//bG51/2xvef9qbXf/bnF7/2ptd/91d33/c3V8/29xdf9wcnn/b3F1/3V4gf9ucXv/
    +bnB3/3l7gf9wc33/bG95/25xe/93eX//am13/3Bzff9wcnn/cHN9/3Bzff9wc33/bG95/2xvef92eHz/
    +bnB3/29xdf9ucHf/bG95/2ptd/9maXP/bnF7/2ptd/9qbXf/Z2px/2Rncf9nanT/Zmhu/2BjbP9nanT/
    +Zmlz/2Zpc/9qbHP/ZGdx/2ptd/9qbXf/Z2p0/2xvef9qbXf/cHN9/2xudf92eHz/b3F1/2psc/9wc33/
    +cHJ5/3N2f/9maXP/cHN9/3Bzff9wc33/am13/3N2f/9ucHf/c3Z//3V4gf9ucXv/c3Z//3N2f/9ucXv/
    +dXiB/3N2f/9zdXz/cHN9/3d6g/9+gYr/c3Z//3d6g/95fIb/c3V8/3l7gf9zdXz/d3qD/3d6g/93eoP/
    +eXuB/3N2f/9zdn//c3V8/3l7gf91eIH/bG95/25xe/9qbXf/c3Z//3V3ff9ucHf/bG95/2dqdP9sb3n/
    +cHN9/25xe/9zdn//bnB3/3Bzff9ucHf/d3qD/3Bzff9ucHf/dXiB/3V4gf9wcnn/c3Z//3Bzff9zdn//
    +bnF7/3Byef97fYP/d3qD/2xvef9zdn//Z2p0/25xe/91eIH/bnF7/3V3ff91eIH/cHN9/3V3ff97fYP/
    +d3qD/3N1fP9ucXv/dnmC/3Bzff90d4D/bnB3/3R3gP9wc3z/cHJ5/3ByeP90d33/bnF7/3R3gP9vcXj/
    +b3F3/3Byef9maXP/Z2px/21vc/9tb3P/bnB3/3V3fP9xc3v/cHN7/2lsdP9sbnb/bW92/2lrdP9tb3f/
    +b3F4/3Byev9wc33/bnB3/3Byef9wc33/eXyG/3d6g/93eX//c3Z//3N2f/9ucHf/cHN9/3V4gf9zdn//
    +bnF7/3d5f/91eIH/bnB3/25xe/9ucXv/bnB3/3V3ff9zdXz/bnB3/29xdf9wcnn/dnh8/3l7gf9wcnn/
    +cHJ5/3V4gf9qbXf/bnB3/21vc/9ucHf/am13/25wd/9sbnX/ZGZs/25wd/9tb3P/c3V8/2xudf9qbHP/
    +dXd9/2dqdP9sbnX/cHJ5/21vc/9ucHf/bG95/25xe/91eIH/c3Z//25xe/9zdn//cHN9/25xe/9vcXX/
    +cHN9/2dqdP9sb3n/dXd9/3Z4fP9tb3P/Z2px/3Byef9sbnX/bnF7/2ptd/91d33/bnB3/25wd/9nanH/
    +bW9z/2xudf9sb3n/bG95/2psc/9kZ3H/cHN9/25xe/9maXP/YmVu/2Rncf9sb3n/am13/2xudf9qbHP/
    +bG51/3Byef9zdXz/bnF7/3Byef9wcnn/b3F1/3Bzff9ucXv/d3l//3Bzff9ucHf/bnF7/25wd/95e4H/
    +bG95/29xdf93eX//bnF7/2xvef9ucXv/c3Z//2dqdP9zdn//bnF7/3Bzff9wc33/cHN9/3V4gf91eIH/
    +e32D/3N2f/9wc33/cHN9/25xe/9zdn//cHN9/3d6g/93eoP/dXiB/3N1fP9wc33/c3Z//2xvef9maXP/
    +cHN9/25wd/9zdXz/c3Z//2xvef9sb3n/cHJ5/25xe/9wc33/bnB3/3Bzff9ucHf/eHl9/29xdf9qbHP/
    +bnF7/29xdf9zdXz/Zmlz/3Bzff9zdXz/cHJ5/2xvef93eoP/cHJ5/3Bzff91eIH/c3Z//3Bzff9wc33/
    +am13/25xe/9ucHf/bnB3/25wd/9wc33/dXd9/2xvef9zdXz/eHl9/29xdf92eHz/bG51/2ptd/9qbXf/
    +bnF7/25xe/9qbXf/Z2px/2Zobv9sb3n/bnF7/2Jlbv9maXP/Zmlz/25xe/9ucXv/bG51/2xudf9qbHP/
    +amxz/25xe/9zdn//c3Z//3Byef9zdn//bnF7/3l8hv9zdn//c3V8/3d6g/97fYP/dXiB/3Z5g/93eoP/
    +dnmC/3V3gP9wc33/fYCJ/3p8g/9wc33/d3qD/2ptd/9wc33/dnh+/3Byef90dnz/a254/2tueP9oa3X/
    +c3V8/29yfP9pbHX/am13/3N1fv9sb3n/bG95/2xudf9xc3r/bnB0/3Byd/9sbnT/cXN5/25wd/9vcnv/
    +cHJ2/25wdf9vcXX/amxz/2dqcf9tb3P/bG51/25wd/9zdXz/cXN6/25wef9sbnb/bnB3/21vdv9tb3X/
    +cnR7/3Fzev9ucXn/bG95/2ptd/9sb3n/bG51/3d5f/93eX//c3V8/3Bzff9sb3n/am13/2xvef91d33/
    +dXd9/2xudf91d33/dXd9/2xvef9ucXv/cHN9/3N1fP9zdXz/bnB3/25wd/9vcXX/bnB3/3V3ff93eX//
    +cHN9/25xe/93eoP/Z2p0/2xvef9sbnX/cHJ5/25wd/9sb3n/bnB3/2RmbP9ucHf/bG95/3N2f/9ucXv/
    +bG51/3d5f/9ucHf/bnB3/3Bzff9wcnn/bnB3/2xvef9ucXv/dXiB/3d6g/91eIH/d3qD/3N2f/9wc33/
    +cHJ5/3Bzff9sb3n/bnF7/3N2f/91d33/cHJ5/2ptd/9zdn//bG51/3Byef9wcnn/bnF7/2ptd/9sb3n/
    +Z2p0/21vc/9ucHf/bG95/3Byef9ucHf/amxz/3V3ff92eHz/bnB3/2dqcf9qbHP/dXd9/3Byef9sbnX/
    +b3F1/29xdf9ucHf/c3V8/3N1fP9sbnX/am13/2psc/9sb3n/Z2px/25xe/9nanT/amxz/2dqcf9nanH/
    +dXd9/2psc/9sbnX/dXd9/2xudf9maXP/amxz/25xe/9nanT/bG95/2xvef9qbXf/bnB3/2xudf9qbXf/
    +am13/3N1fP9tb3P/bG51/2xvef9sb3n/am13/2Zpc/9ucXv/am13/2psc/9kZ3H/Z2px/2ptd/9nanT/
    +Zmlz/2ptd/9sbnX/bG51/21vc/9sbnX/bnB3/2xvef9wcnn/c3V8/2xvef93eX//cHN9/3d5f/9sb3n/
    +am13/25xe/9wcnn/c3Z//2ptd/93eoP/c3Z//3N2f/9ucHf/c3Z//25wd/9wcnn/cHJ5/25wd/9wcnn/
    +c3V8/2xudf9wcnn/bG51/2xudf9sbnX/am13/3Bzff9sbnX/cHJ5/3h5ff9tb3P/dXd9/3Byef9zdXz/
    +c3V8/3V3ff92eHz/cHJ5/25wd/9ucHf/cHN9/3N2f/9sb3n/cHN9/3Bzff93eoP/eXuB/3V4gf91eIH/
    +bG95/3N1fP95e4H/fn+D/3t9g/95e4H/fX6B/3Bzff99gIr/cnV+/3J0e/90d4D/d3mA/3R3gP90dn//
    +dHeA/3V4gf90dn7/b3F4/3l8hP94eoD/bG95/3BzfP9pa3L/b3F6/3V3ff9ucXr/dHZ9/2ptdv9rbXb/
    +a212/3R2fP9wc33/bG52/25weP90dnv/bnB3/21weP9pbHb/am11/2lsc/9sb3f/bG5z/21veP9vcXj/
    +bG95/29xef9ucHf/bW90/2Zobv9nanH/bG51/2xudf9sbnX/dHZ7/25weP9rbnj/Zmly/2Zpc/9nanL/
    +Y2Zw/2ptd/9qbXX/am13/2xvef9qbXf/bG95/2xudf9zdn//c3V8/3Bzff9wc33/am13/2psc/9nanT/
    +dXd9/3N1fP9qbXf/dXd9/3Bzff9sbnX/bG95/25xe/9wcnn/dnh8/3N1fP9ucHf/bW9z/2xudf93eX//
    +dXiB/25xe/9ucHf/eXuB/2xudf9wcnn/bG51/2xvef9ucHf/bG51/2ptd/9kZ3H/am13/2dqdP9qbXf/
    +am13/2Zpc/9zdXz/bG51/2dqdP9sb3n/Z2px/2dqcf9qbHP/bG51/25xe/9ucXv/bG95/2xvef9qbXf/
    +bG51/2dqdP9qbXf/Zmlz/2xudf9sb3n/cHJ5/2psc/9kZ3H/Z2p0/2dqdP9sbnX/bG95/2ptd/9qbHP/
    +bG51/2BjbP9qbHP/Z2px/2psc/9qbXf/bG51/2Zpc/9qbXf/bnF7/2dqdP9gY2z/YmVu/2ptd/9nanT/
    +Z2p0/2dqcf9qbHP/am13/2xvef9ucXv/bnB3/25wd/9ucHf/c3Z//25wd/9zdn//cHN9/2xvef9sb3n/
    +bW9z/3l7gf9vcXX/bnB3/3V3ff9ucXv/bG95/25wd/9wc33/bG51/3Byef9ucHf/bnB3/3N1fP9ucHf/
    +bnB3/29xdf91d33/b3F1/21vc/9sbnX/bnB3/25wd/9ucHf/c3V8/25wd/9ucHf/bnB3/29xdf91d33/
    +b3F1/2Zobv9wcnn/am13/2dqdP9qbHP/Zmlz/2xudf9sb3n/bG95/2ptd/9qbHP/cHJ5/2Zpc/9sb3n/
    +Zmhu/11gav9iZW7/Zmhu/2Zpc/9dYGr/am13/2dqdP9maG7/YmVu/2dqdP9kZ3H/Zmhu/2Rncf9kZ3H/
    +am13/2dqdP9iZW7/Z2px/2BjbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Zpc/9ucXv/Zmlz/3Byef9nanT/
    +Z2p0/2xvef9ucXv/bG95/25xe/9sbnX/bG51/3J0e/9xdHv/aGt1/2tueP9pbHb/bG95/2xvef9sbnX/
    +bnB3/2Zobv9maXP/am13/3Bzff9ucXv/am13/25xe/9qbXb/dHeA/25xe/9rbnb/bnF6/3Bzff9ucXr/
    +bXB5/3Fzev9xc3v/b3F5/29xef91d3//d3l//3F0fP92eID/cHJ5/3R2fP93eYH/cHJ6/3d5gf95fIX/
    +eHqC/3d5fv98foT/fH6F/3N1fP90dnz/eXuA/3d5gP9ydHz/c3V9/3Z4fv90dnz/dnh8/3F0ev9zdXv/
    +dXd9/3h6gP90dn3/dHZ+/3Bzff9sb3n/bG95/3N1fP9wc33/c3Z//3d6hP90dn3/c3Z//2lsdv9tcHr/
    +bW93/21vd/9zdXz/am13/29xeP9wc33/am13/3Byef9ucHf/eHl9/3Z4fP91d33/dXd9/25wd/9sb3n/
    +bnB3/3V3ff91d33/bnB3/3V3ff92eHz/b3F1/3Byef9wcnn/dXd9/3V3ff9ucHf/am13/2xudf9qbXf/
    +dXd9/3l7gf9ucHf/bG95/3V4gf9maXP/am13/2dqcf9qbHP/amxz/2dqdP9nanH/XWBq/2Zpc/9maG7/
    +am13/2xvef9nanT/c3V8/2dqcf9qbHP/bG95/2dqdP9qbHP/bG51/2xudf9wc33/am13/25xe/9qbXf/
    +am13/2ptd/9qbXf/bG95/2ptd/9qbHP/cHN9/3d5f/9sb3n/bnB3/3Byef9tb3P/bW9z/25wd/9zdXz/
    +b3F1/2xudf9sbnX/bG95/2xudf9ucHf/bG95/2ptd/9qbXf/bnF7/3d5f/9nanT/amxz/2psc/9ucXv/
    +bnF7/3N2f/9wcnn/bnF7/2xvef9zdXz/dnh8/3Byef9ucHf/am13/25xe/9tb3P/dXd9/3Bzff9sbnX/
    +amxz/2xudf9zdn//am13/2xudf91d33/bG95/2ptd/9qbHP/bG95/2Rncf9nanT/Z2p0/2psc/9ucXv/
    +amxz/2dqdP9sb3n/bnF7/2xudf9qbHP/am13/2ptd/9sbnX/am13/3Byef9sb3n/bnB3/25wd/9wcnn/
    +dXd9/25wd/9maXP/dXiB/25wd/9ucHf/cHJ5/25wd/9zdXz/cHN9/3N2f/9wc33/cHN9/3d6g/9wc33/
    +eXuB/3N2f/9ucXv/cHJ5/25wd/9ucXv/Z2p0/3V3ff9sbnX/bnB3/25wd/94eX3/bnB3/25wd/9sb3n/
    +bG95/3N1fP9qbXf/Z2p0/2ptd/9sbnX/bW9z/25wd/9zdXz/dXd9/25wd/9zdn//d3l//2xvef93eX//
    +c3Z//3Bzff91eIH/d3l//3l7gf9zdn//c3Z//3V3ff93eoT/enyD/3V3ff94e4P/eHqB/3V4gv90d4D/
    +bnF7/3V4gf9qbXf/Z2p0/2xvef9wc33/c3V8/25wd/9ydHz/bnF6/3R3f/9ucHn/bG93/29yfP9ydHv/
    +b3F4/25wdf9wcnf/bW92/25wdP9vcnr/cnR8/3V3fv9ucHf/dXh//2xud/9ydHz/dHd//25xef9zdn//
    +c3V8/3J0ef9wc3z/c3V9/3R3gP9sb3f/bXB6/3V4gv9ucXv/b3J8/2xvef9vcXj/bnB4/3Bzev9vcXj/
    +cXN6/25wd/9ydXz/cHJ4/21wef9tb3P/Zmhu/2dqcf9sbnX/bW9z/2ptd/91d33/bnB0/25xe/9maXP/
    +bnB3/21vc/9tb3P/c3V8/2ptd/9qbXf/bnF7/2xudf9sb3n/amxz/3V3ff9zdXz/bnF7/3Bzff9nanT/
    +amxz/2Zpc/9wcnn/bG95/2xudf9qbXf/bG95/2Zobv9maXP/Zmlz/2Zpc/9qbXf/Z2p0/2dqcf9maG7/
    +amxz/25wd/9zdn//am13/2ptd/9zdn//am13/2xvef9qbXf/am13/2ptd/9zdXz/bnB3/2dqcf91d33/
    +b3F1/3N2f/93eoP/c3V8/3t9g/9zdXz/c3V8/3Bzff9sb3n/bnB3/25xe/9sb3n/c3Z//25wd/9zdXz/
    +bnB3/2xudf9sbnX/amxz/2xudf9qbXf/bG51/2xvef91eIH/am13/2dqcf9nanH/Zmhu/2Rncf9maXP/
    +am13/2Zobv9qbHP/Zmlz/2psc/9nanH/amxz/2xudf9qbHP/amxz/2xvef93eX//am13/2dqdP9nanH/
    +bnF7/25xe/9wc33/b3F1/29xdf9ucHf/cHJ5/3Z4fP91d33/bG51/21vc/9ucHf/bW9z/3N1fP9wc33/
    +am13/3Byef9ucHf/d3l//3Byef9sbnX/dXd9/2xvef9nanT/Z2p0/2xvef9maXP/amxz/2ptd/9sbnX/
    +c3V8/2xudf9nanT/bG95/25xe/9qbXf/bG51/2ptd/9qbHP/bG51/2ptd/9sb3n/bG51/2ptd/9sbnX/
    +cHJ5/3V3ff9wcnn/Z2px/3N2f/9nanT/bnB3/25wd/9ucHf/cHJ5/3Byef9wc33/cHN9/3Byef93eoP/
    +c3Z//3V4gf9sb3n/bG95/25wd/9vcXX/cHJ5/2dqcf9zdXz/bG95/2ptd/9maXP/d3l//2dqcf9qbXf/
    +amxz/2Zpc/9qbXf/Zmhu/2Jlbv9maG7/Zmlz/2Rncf9nanH/am13/2xvef9maXP/am13/3V3ff9qbXf/
    +dXd9/3N1fP9ucHf/dXd9/3N1fP93eX//cHN9/25wd/9sb3n/bG95/25xef9qbXX/b3J8/3N1e/9xc3z/
    +c3Z//25xe/9zdn//am13/3Byef9wc33/d3qD/3l8hv90d4D/dHeB/29xev90d4H/cXN7/21wef9tcHr/
    +dHZ8/29yev9wc3r/dXh//3N1fv9wc3v/cnV9/3Z4gf94en//c3V8/3p8gf9rbnf/b3F7/3V3ff9ucXv/
    +dHeA/3V4gf9ydX//cnR7/3h7hP98foX/cnV+/3d6hP99gIr/dnmB/3R3gP9zdXz/dnmB/3R3gP9wc33/
    +bnF7/3J1fv9tcHr/dnh8/21vdv9wc33/bnB3/2dqdP9qbXf/bnF7/25wd/9wcnn/d3l//3N1fP91eIH/
    +cHN9/3V4gf9wc33/c3Z//36Ahv93eoP/c3Z//3V4gf9wcnn/bnF7/3Byef95e4H/dXiB/3l7gf95e4H/
    +c3Z//25xe/9ucXv/d3qD/3Bzff9ucHf/bnF7/3V4gf9wcnn/cHJ5/25wd/9ucHf/c3V8/3Byef9vcXX/
    +bG51/3N1fP92eHz/dnh8/25wd/9wcnn/dXd9/2xudf9ucHf/bnB3/29xdf9ucXv/c3Z//3N2f/9maXP/
    +c3Z//3Byef9wc33/c3Z//2xvef91d33/cHJ5/25wd/9ucXv/am13/25wd/9wc33/cHJ5/3V3ff9ucHf/
    +c3V8/25wd/9ucHf/cHJ5/29xdf9tb3P/bnB3/2ptd/9sb3n/d3l//25wd/9tb3P/bG95/25wd/9tb3P/
    +cHJ5/3Byef9sbnX/bG51/2xudf9tb3P/am13/2xudf9ucHf/bG51/21vc/9zdXz/dXiB/2xvef9sb3n/
    +am13/25xe/9wc33/c3Z//2xvef9vcXX/bG95/25xe/9zdn//dXiB/25xe/9ucHf/bnF7/2xvef9zdn//
    +dXd9/25wd/9ucHf/bnB3/3d5f/9zdXz/bnB3/3N1fP9sbnX/Zmlz/2psc/9qbXf/ZGdx/2dqcf9qbXf/
    +Zmhu/2xvef9nanH/ZGdx/2dqdP9sb3n/amxz/2xudf9sb3n/bG51/2ptd/9sbnX/cHJ5/25xe/9sb3n/
    +bnF7/25xe/93eX//cHN9/2ptd/93eoP/cHN9/3Byef9wcnn/dXd9/3V3ff94eX3/e32D/3l7gf93eX//
    +f4KM/3l8hv97fYP/d3qD/3N1fP91d33/c3Z//3V4gf9wc33/eXuB/3V4gf9wcnn/bnB3/3l8hv9ucHf/
    +c3Z//3Bzff9wcnn/cHN9/3Byef9wcnn/cHJ5/25wd/9sbnX/bG95/3Bzff9ucXv/bnB3/25xe/93eX//
    +bnB3/3V3ff9zdXz/bnB3/3V3ff9zdXz/d3l//3Bzff9ucHf/bG95/3R3gP91dnz/bnB3/3J0fP92eHz/
    +b3F4/3J0e/9ucHf/c3V8/2psc/9qbXf/bG51/3Bzff9ucXv/c3V8/3J0e/9rbnT/c3V8/21wef9ucHf/
    +bW92/3V3fP9tb3b/a212/21wev9qbXf/b3F4/2ttdf92eH//cnR7/25xeP91d33/Z2py/2xvef91d33/
    +bnB3/3N2fv9vcnv/a254/2hrdf90d33/cHN9/2dqcv9nanT/dXiB/2dqdP9maG7/ZGdx/2Zpc/9qbHP/
    +ZGdx/2BjbP9maXP/XWBq/25wd/9gY2z/Zmlz/2Zobv9maXP/Z2p0/2xudf9sbnX/bnB3/3N1fP9vcXX/
    +cHJ5/2Zobv9sbnX/bG51/25wd/9wcnn/bnB3/25wd/91d33/cHN9/25wd/9ucHf/dXd9/3V3ff91d33/
    +c3Z//3N1fP9ucHf/cHJ5/3V3ff9qbXf/bG51/25wd/9wc33/am13/2xvef9sbnX/cHJ5/3Byef9ucHf/
    +bG51/25wd/9zdXz/c3V8/3V3ff9ucXv/bnF7/3V3ff9qbXf/bG51/21vc/9sbnX/am13/3N1fP9wcnn/
    +Zmlz/3N2f/9ucHf/cHN9/3V3ff9wcnn/cHN9/29xdf9sb3n/bG95/2ptd/9sb3n/bnF7/2xvef91eIH/
    +cHN9/3N2f/9ucXv/bnF7/3N2f/9wcnn/bnF7/2xvef9ucHf/cHJ5/3Z4fP9ucHf/bW9z/2ptd/9sb3n/
    +bG51/3Byef9ucHf/am13/2xudf9qbXf/am13/25wd/9tb3P/bG51/2dqdP9qbHP/bG95/3V3ff9qbXf/
    +Zmlz/2xudf9ucHf/dXd9/3V3ff9ucXv/cHJ5/3Bzff9ucXv/c3Z//3Z4fP9sbnX/b3F1/2xvef9ucHf/
    +d3l//3V4gf9ucHf/bnF7/2xvef93eoP/cHJ5/25wd/9wcnn/bnB3/2dqdP9sbnX/am13/2Zpc/9qbXf/
    +am13/2dqdP9wc33/Z2p0/2dqdP9zdXz/bnF7/2psc/9sbnX/bG51/2xudf9sbnX/bG51/2ptd/9sbnX/
    +Z2p0/2xvef9qbXf/dXd9/2xudf9nanH/cHJ5/2psc/9sbnX/bG51/2xudf9sbnX/bnB3/3Byef9ucHf/
    +bnB3/3l7gf91d33/c3Z//3Byef9sbnX/am13/2xudf9sb3n/ZGdx/25xe/9qbXf/am13/2xudf95e4H/
    +bnB3/2xudf9sbnX/bW9z/3Byef9sbnX/bnB3/25wd/9qbXf/bG51/25wd/91d33/cHJ5/2xudf9wcnn/
    +d3l//2xvef93eoP/dXiB/3N2f/91eIH/c3Z//3l8hv91eIH/cHJ5/3N1fP9ydHz/cXN5/3Byef90d3//
    +dXd9/3BzfP9wc3z/bG95/3Bzff9nanT/bnB3/3Bzff9zdn//cHN9/3V4gf90d4D/aGt1/3Z5g/9ucXr/
    +dHeA/3BzfP94e4T/cHN9/3BzfP9wc33/dXiA/3N1fv9sb3n/eXuB/3N2f/9wcnn/d3qD/2ptd/93eoP/
    +eXyG/3V4gf95fIb/eXuB/3Byef9sb3n/e32D/3d5f/9ucHf/bnB3/3t9g/9ucHf/b3F1/2xudf9ucHf/
    +bW9z/2dqcf9kZ3H/am13/2psc/91d33/amxz/25wd/9tb3P/bG51/29xdf9wcnn/b3F1/3N1fP91d33/
    +bnB3/2xvef9kZ3H/bG95/3Bzff9ucXv/d3qD/3V4gf9wc33/d3qD/3V4gf9wc33/dnh8/35/g/9+gIb/
    +fX6B/36Ahv97fYP/dXiB/3d6g/95e4H/c3Z//3Bzff91eIH/e32D/3d6g/93eoP/c3Z//3d6g/93eoP/
    +dXiB/3N2f/9wc33/dXd9/3d5f/95e4H/dXiB/3V3ff94eX3/bnB3/25wd/9sbnX/bG51/2xudf9ucHf/
    +bnF7/2ptd/9wc33/bnB3/25xe/9zdn//bG95/3Bzff9ucHf/cHJ5/25xe/9sbnX/bG51/3Byef9wcnn/
    +dXd9/2xudf9zdXz/bG51/25wd/9zdXz/bnB3/25wd/9ucHf/bG95/3N1fP92eHz/bG51/21vc/9wcnn/
    +c3V8/2xudf91d33/bG95/2xudf9sbnX/amxz/2ptd/9sb3n/am13/2psc/9qbHP/bG51/2xudf94eX3/
    +am13/2dqdP9ucHf/bnF7/3V3ff92eHz/bnB3/29xdf9zdXz/cHJ5/25wd/9zdXz/bG51/2ptd/9qbXf/
    +amxz/25xe/9wcnn/Z2p0/2xudf9ucHf/d3qD/2ptd/9ucXv/bnF7/2xudf9qbXf/am13/2xvef9maXP/
    +bG51/2ptd/9sbnX/cHN9/2dqdP9maXP/c3V8/3Bzff9sbnX/bG51/2xudf9sbnX/bW9z/2ptd/9qbXf/
    +amxz/2dqdP9sb3n/bG51/3N1fP9qbHP/ZGdx/2dqdP9maXP/amxz/2ptd/9nanH/am13/2dqdP9sb3n/
    +bG51/25wd/95e4H/dnh8/3V3ff9zdXz/bnB3/25wd/9ucHf/bG95/2Zpc/9zdn//bnF7/2xvef9wcnn/
    +foGK/3N1fP9wc33/c3Z//3Bzff9ucXv/am13/2xvef9vcXX/bG51/21vc/9vcXX/dXd9/3Bzff9nanT/
    +bnF7/3V3ff9nanT/dXd9/3Byef9sb3n/dXd9/25wd/91d33/bG95/2dqdP9qbHP/c3Z//3N1ff9rbXT/
    +cHJ5/25wd/9rbnj/bnF7/2ptd/9wc33/bG51/21vc/9ucHf/bnF7/2xvef9wc33/am13/2Vocv9zdn//
    +bG51/25xe/9maXP/bnB3/2dqcf9nanH/amxz/2ptd/9maXP/YmVu/25wd/9kZ3H/YmVu/2Zpc/9cX2j/
    +Z2p0/2xvef9maXP/Z2p0/3V3ff9sb3n/bG95/3l7gf91eIH/bnB3/3Bzff9+gIb/bnF7/29xdf9sb3n/
    +bnF7/25wd/9sb3n/Z2p0/25xe/9qbXf/d3l//2dqdP9ucXv/bnB3/2ptd/9ucHf/bnF7/2xvef9zdXz/
    +dXd9/25wd/9sb3n/aGp0/2xvef9tb3f/bnB3/3J1fv9tcHr/bnF6/3V4gf9wc33/c3V8/25wd/9zdn//
    +c3Z//3N2f/9ucXv/dXiB/3Byef9wc33/c3Z//3Byef9ucHf/cHN9/3d5f/9wc33/cHN9/25wd/91eIH/
    +c3Z//3Bzff9vcXX/bnB3/3d5f/91eIH/dnh8/3V3ff91d33/d3l//3Byef9ucXv/bG95/2xvef9ucHf/
    +c3V8/3N1fP9sbnX/c3V8/29xdf9wcnn/dXd9/25wd/9zdXz/am13/2xudf9sb3n/Z2p0/2xvef9sb3n/
    +amxz/25xe/9sbnX/cHN9/2psc/9sb3n/bnF7/2psc/9nanH/Zmlz/2Zpc/9nanT/bnB3/2Zobv9qbHP/
    +Z2p0/25xe/9nanT/bnF7/2xudf9sbnX/cHJ5/21vc/9ucHf/bG95/2xvef9ucXv/am13/25wd/9ucHf/
    +dnh8/2xudf9nanH/b3F1/25xe/91d33/c3Z//2xvef9wcnn/c3Z//3Byef9ucHf/dXiB/3Bzff9ucXv/
    +bnF7/3N2f/91eIH/c3Z//2xvef9wc33/c3V8/36Ahv9ucHf/dXd9/3V3ff9tb3P/Z2p0/2xudf9qbXf/
    +Z2p0/2xudf9vcXX/b3F1/3V3ff9ucHf/bnB3/3V3ff91eIH/bnB3/2xvef9ucXv/cHN9/25xe/9zdn//
    +d3qD/3d5f/9zdXz/e32D/3l7gf9+f4P/e32D/3l7gf9+gYr/d3qD/3l7gf9+gIb/d3l//3V3ff91d33/
    +eXuB/3V3ff93eX//gYOK/36Biv97fYP/d3qD/3Byef9ucHf/bnF7/25wd/9maG7/cHN9/2xvef9kZ3H/
    +Z2p0/3V4gf9nanH/Z2px/2psc/9nanH/Z2px/2Jlbv9kZ3H/Zmlz/2Zpc/9maG7/ZGdx/2Rncf9maXP/
    +YGNs/2dqdP9wcnn/ZGdx/3V3ff9sb3n/bG51/3N1fP9sbnX/d3l//3Byef9vcXX/bG51/3V4f/90d37/
    +bW90/3N1fP9ucHf/bnB3/3N2f/9sb3n/cHJ5/2dqdP9ucHf/cHN9/3Bzff9ucHf/c3V8/3Byef9maG7/
    +d3qD/2xudf9wcnn/am13/3N1fP9sb3n/bW9z/25wd/9ucHf/bnB3/2xudf91d33/cHJ5/2xudf9wc33/
    +ZGdx/2xvef9wcnn/bG95/2xudf91d33/c3V8/2xudf94eX3/d3qD/25wd/9ucXv/foCG/3Bzff9wcnn/
    +bnF7/25xe/9ucHf/am13/2psc/9rbnj/a254/3d6hP9wcnn/dXiB/3N1fP9ucXv/cHN9/3Bzff9wc33/
    +eXuB/3Z5gv91eIH/cHJ8/2lrdP9rbnj/bW93/29xef9xdH3/bnF7/21wev9zdn//c3Z//3Bzff9ucXv/
    +d3qD/3N2f/91d33/bnB3/3N1fP9vcXX/bnB3/3Byef9ucHf/b3F1/3Byef92eHz/bnB3/3Byef9ucHf/
    +dXd9/3Byef9wc33/bG95/3Bzff91d33/d3l//3N1fP9sb3n/bnF7/3Z4fP9tb3P/am13/2xudf9qbHP/
    +am13/25wd/9sb3n/Z2p0/3Bzff9sbnX/bnF7/3Bzff9nanT/bnF7/2ptd/9qbHP/am13/2Zpc/9qbXf/
    +bG95/2xudf9wc33/bG51/25xe/9qbXf/bnF7/3Bzff9qbXf/bG51/2dqdP9qbXf/bnF7/3N1fP9sbnX/
    +am13/25wd/92eHz/bnB3/3N2f/9sb3n/bG95/3Bzff9ucHf/bG51/29xdf9wcnn/bnF7/3Byef9wc33/
    +bG95/3d6g/9sb3n/bnF7/3N1fP9zdn//dXiB/3d6g/9ucXv/cHJ5/3d6g/91eIH/cHN9/3N1fP9qbXf/
    +bW9z/25wd/9ucHf/cHN9/3Byef9nanT/bG95/3Byef93eoP/bG95/3N1fP9wcnn/bG51/2psc/9qbXf/
    +bG51/2Zpc/9sbnX/amxz/2dqdP9ucXv/bG51/2dqdP9ucXv/bG95/2psc/9nanH/Z2px/2xudf9sbnX/
    +am13/2psc/9maG7/YGNs/2Rncf9kZ3H/bG95/2Zpc/9maXP/Z2p0/2Zpc/9kZ3H/bG95/2psc/9nanT/
    +Zmlz/2xvef9sb3n/Zmlz/3d5f/91d33/dXd9/3Byef9ucHf/bnB3/3Byef9wcnn/am13/3d6g/9zdXz/
    +bG95/3Byef95fIb/bG95/25wd/9sb3n/bG95/2xvef9qbHP/bG51/2xudf9qbHP/bG51/2psc/9sb3n/
    +am13/2Zpc/9sb3n/dXd9/2Rncf9sb3n/Zmlz/2dqcf9maXP/Zmlz/3N1fP9qbXf/Z2px/2dqdP9xdH3/
    +c3V8/2psc/9ucXv/amxz/2psc/9sb3n/am13/2xvef9qbXf/bG51/3Bzff9ucXv/bG95/3N1fP9wcnn/
    +amxz/36Ahv9zdXz/cHJ5/2xudf93eX//bG95/21vc/9ucHf/bG95/2xvef9nanT/dXd9/2xvef9qbXf/
    +cHN9/2Rncf9ucXv/bG95/2ptd/9sbnX/b3J7/29ye/9oa3X/c3V8/3J0fP9nanT/bG52/3h6gP9rbXT/
    +bG51/21vdv9sbnX/bG51/21vdf9pa3L/bG92/2hrdf9zdn3/bXB6/2xvef9tb3b/Z2px/21vc/9sbnX/
    +bG51/3Z4fP90dnz/cHJ7/2xvef9pbHP/bW92/2ttdv9sb3f/dHZ8/25wef9sbnf/cHJ5/25wd/9qbXf/
    +am13/3N1fP9ucXv/c3V8/2xudf9ucXv/amxz/2ptd/9qbXf/bG51/2psc/9qbXf/am13/2psc/9qbHP/
    +bG51/2xvef9sb3n/am13/2ptd/9sb3n/c3V8/3N2f/9wc33/cHN9/3V3ff94eX3/bnB3/3Bzff9zdXz/
    +bnF7/25xe/9zdn//c3Z//2xvef97fYP/c3Z//3t9g/97fYP/c3V8/36Ahv91eIH/c3Z//3d5f/94eX3/
    +d3qD/3l8hv91eIH/e32D/3N2f/9zdn//cHJ5/3d6g/91d33/bG95/25wd/9sb3n/bnB3/3V4gf91d33/
    +bnB3/2xvef9ucXv/dXiB/3Byef91eIH/bG95/25wd/9wcnn/bW9z/2psc/9vcXX/cHJ5/2xvef9sb3n/
    +bnF7/25xe/91eIH/am13/2xvef9zdXz/bnF7/3V3ff91d33/b3F1/29xdf91d33/bnB3/2xudf9zdXz/
    +bnB3/25wd/9zdXz/cHN9/3N2f/9zdXz/bG95/25xe/9wc33/eXuB/3N1fP91eIH/dXiB/3Byef9sb3n/
    +bnF7/25xe/9ucHf/bnF7/25xe/9wcnn/c3Z//25xe/9sb3n/cHN9/3Bzff9vcXX/bG95/2xvef9vcXX/
    +bnB3/3Bzff9wcnn/b3F1/25wd/9zdXz/bnB3/3d5f/9ucHf/bG95/3N2f/9ucHf/cHJ5/3Bzff9zdXz/
    +bnB3/25wd/9wc33/cHN9/2dqdP93eX//dnh8/3Z4fP9zdXz/bG51/2xudf9ucHf/bW9z/2dqcf9zdXz/
    +bW9z/2xudf9sbnX/eXyG/2xudf9nanT/Z2px/2Zpc/9sbnX/Zmlz/2Zpc/9nanH/ZGdx/2xudf9qbHP/
    +bnF7/2xudf9kZ3H/bG95/3V3ff9maXP/c3V8/25wd/9sb3n/c3Z//25xe/93eoP/dXd9/25wd/9ucXv/
    +b3J6/3J0fP9ucHf/dXd9/29xdf9ucHf/cHN9/25xe/9zdn//bG95/2xvef9wc33/cHN9/25wd/9zdn//
    +bnF7/2ptd/94e4X/dHZ8/3J0fP9sbnX/dHZ8/29xeP9sbnX/b3F4/29xeP9tcHr/bnB0/3V3e/9wcnn/
    +aGt1/21wev9jZm//cHJ5/25xev9tb3P/bW92/3Z4fP9ydHv/cHJ3/3V3fP9ydHv/aGtz/21vdv96fIP/
    +bW93/2xvef9tb3f/aWx2/2xudf9rbXb/aWx1/2hrcv9pa3T/dnh+/25wd/9tb3f/a254/2dqcf9tb3P/
    +bG51/25wd/91d33/cnV+/3F0ff9vcXr/aWxy/21vd/9tb3b/b3F5/3BzfP9rbnj/bnB4/25wd/9wcnn/
    +bG51/25wd/94eX3/cHJ5/3N2f/9wcnn/c3Z//3Byef9zdXz/d3qD/3N1fP9wcnn/cHN9/3N2f/9sb3n/
    +bG95/3Byef9zdXz/c3V8/29xdf9ucHf/bnF7/3l7gf93eX//dXd9/3N1fP91d33/dXd9/25wd/9ucHf/
    +b3F1/25wd/9ucHf/bnF7/2ptd/9kZ3H/dXd9/2ptd/9zdXz/dnh8/25wd/94eX3/cHJ5/29xdf9wcnn/
    +bG51/3Bzff9ucXv/bG51/3N1fP9tb3P/c3V8/2xudf9zdXz/cHN9/2psc/9qbXf/Z2p0/2ptd/91d33/
    +dXd9/25wd/9ucHf/bG51/3Bzff9sbnX/bG95/2ptd/9sbnX/cHN9/21vc/9qbHP/am13/2xvef9tb3P/
    +bG51/21vc/9qbHP/c3Z//2dqcf9sbnX/bW9z/21vc/9zdXz/c3V8/2xudf9tb3P/cHN9/25wd/9ucHf/
    +Zmlz/2Zobv9maG7/am13/2Zpc/9qbXf/bG95/2psc/9qbXf/am13/3N2f/9qbXf/cHN9/3Bzff9nanH/
    +ZGdx/2dqdP9qbXf/am13/2xudf9sbnX/bG51/25xe/9sbnX/am13/3Byef9zdXz/b3F1/2xudf9sbnX/
    +bG51/2xvef9ucXv/am13/21vc/9sbnX/dXd9/2xudf93eoP/cHN9/21vc/9wcnn/bG51/2dqdP9sbnX/
    +amxz/2dqcf9maXP/Z2p0/2ptd/9maXP/c3Z//3d5f/9wcnn/Z2p0/2Rncf9kZ3H/bG51/2ptd/9maXP/
    +bG95/2xudf9maXP/Z2p0/3d6g/9qbHP/bG51/2psc/9maXP/bG51/2Zpc/9kZ3H/bG51/2dqdP9qbHP/
    +amxz/2ptd/9nanT/YGNs/2ptd/9zdXz/YmVu/25xe/9sbnX/Z2px/2ptd/9qbXf/dXd9/25xe/9maXP/
    +am13/25xe/9xc3r/a254/3ByeP9sbnX/a210/2ptd/9sbnX/am13/2dqdP9qbHP/Zmlz/2dqdP9maXP/
    +am13/2hrcv9iZW7/cnR6/25xev9ucXr/a253/3R2ev9ucHn/bG51/21veP9rbnj/bnF7/21weP9vcnz/
    +b3J6/2tueP9vcnz/ZWhx/3F0fP9wcnn/am11/2ptd/90d4D/cnV9/21weP9xc3v/cXN6/2psc/9qbXX/
    +dXd//2ttdP9tcHr/a254/2lsdP9tb3T/aWx1/2hrdP9tbnX/aGt0/3d4ff9xc3j/bXB6/21vdv9maXP/
    +amxz/2dqdP9qbXf/bnF7/3N1fP9vcnv/bXB6/2Vocv9qbXf/am13/3N1ff9xc3v/bW92/25xev9sb3n/
    +bG95/2dqdP9sbnX/c3V8/2ptd/9qbXf/Z2px/2Zpc/9nanH/Z2px/2ptd/9nanH/Zmhu/2Zpc/9qbXf/
    +YmVu/2Jlbv9maG7/Zmlz/2ptd/9sbnX/YmVu/2Zpc/9sb3n/c3V8/3Bzff9zdXz/cHN9/3d5f/9qbXf/
    +bW9z/2xudf9ucHf/bnB3/3V3ff9sbnX/Z2px/3V3ff9wcnn/dXd9/3V3ff9sbnX/c3Z//3Bzff9tb3P/
    +b3F1/29xdf92eHz/c3V8/2xudf91d33/am13/2ptd/9nanT/bnF7/2ptd/9iZW7/Z2px/2Jlbv9iZW7/
    +Z2p0/2dqdP9nanH/Z2p0/2psc/9zdXz/bG51/3Byef9sbnX/bnB3/3N1fP9sbnX/YmVu/2psc/9qbXf/
    +bG51/2dqdP9qbHP/Z2p0/3d5f/9nanH/bG51/21vc/9sbnX/c3V8/3V3ff9wcnn/bW9z/3Bzff9sbnX/
    +amxz/25xe/9sb3n/b3F1/3d5f/9sb3n/cHN9/3Bzff9ucHf/bnF7/2xvef97fof/bnF7/3d6g/95e4H/
    +c3V8/2xvef91eIH/c3V8/25wd/9ucXv/bnF7/25wd/9wc33/cHJ5/2xvef9zdn//cHJ5/2xudf9sbnX/
    +am13/2ptd/9ucXv/cHN9/25wd/9ucHf/Z2p0/3V3ff9ucHf/eXuB/3N1fP9vcXX/cHJ5/25wd/9vcXX/
    +c3V8/2xudf9sbnX/bnB3/3Byef9sbnX/bG51/3l7gf93eX//d3l//3Byef9sb3n/am13/25xe/9ucXv/
    +am13/3N2f/9vcXX/amxz/2ptd/9+f4P/bnF7/3Byef9ucHf/bnB3/25wd/9sb3n/am13/3Bzff9wcnn/
    +cHJ5/3N1fP93eoP/c3Z//25xe/95e4H/e36H/2dqdP91eIH/d3qD/3N2f/93eoP/d3qD/3t+h/97fYP/
    +c3Z//3V4gf9sb3j/bnB2/25xef9ydXz/cXR9/3Bzff9vcXj/bG95/25wd/9sb3n/bG95/3Byef9sb3n/
    +bG51/3J1fP9ucHf/Z2px/3J1fv9zdXr/cHJ5/2tueP9ydHr/cHJ6/29xd/9wc33/b3J8/3F0ff9xc3z/
    +cXR9/3N2fv9ucHn/c3Z+/2hrdP9zdn7/dXh//29xeP9ucHf/dXiA/3F0ff9tcHr/dHZ7/3R2e/9pbHT/
    +bnF4/3V4f/9sbnb/bnB3/2xudf9sbnX/bW90/2hrc/9rbXT/a254/2dqdP9wc33/bnB0/21wef9tb3P/
    +amxz/21vc/9nanT/bG51/2xvef9sb3n/am13/3Byef9nanT/Zmlz/2dqdP9ucXv/cHN9/2ptd/9ucHf/
    +bG51/25wd/9qbXf/am13/3V3ff9wcnn/cHJ5/2xudf9ucHf/bG51/2xudf9ucXv/Z2p0/2psc/9qbXf/
    +bnF7/2psc/9qbXf/bG95/3Bzff9sb3n/am13/2dqdP9ucXv/cHN9/3d5f/94eX3/dnh8/3V3ff93eX//
    +bG51/2xudf9sb3n/bG95/2xudf9wcnn/cHJ5/2xudf92eHz/bnB3/3N1fP91d33/am13/2xvef9sb3n/
    +bG51/21vc/9sbnX/dXd9/3N1fP9ucHf/cHN9/2ptd/9qbXf/Z2p0/3V3ff9wcnn/Z2p0/2ptd/9nanT/
    +bG51/3Bzff9ucXv/bnB3/2xudf9tb3P/dnh8/29xdf9ucXv/cHN9/25xe/91d33/bG51/2dqcf9tb3P/
    +cHJ5/2xudf9tb3P/bW9z/2ptd/93eX//Z2p0/2psc/9sbnX/am13/3V3ff92eHz/cHN9/29xdf91d33/
    +bnB3/25wd/9qbXf/ZGdx/2psc/9ucXv/am13/2psc/9nanT/Z2px/2xudf9qbXf/dXiB/2xudf9wc33/
    +dXd9/2xudf9nanT/bnF7/21vc/9sbnX/bG51/2ptd/9nanT/am13/2dqcf9nanT/bnF7/2ptd/9qbXf/
    +am13/2ptd/9qbXf/bG95/25xe/9sb3n/Zmlz/2BjbP9qbXf/Zmhu/25wd/9qbXf/Z2px/2dqdP9maXP/
    +Zmhu/2dqdP9kZ3H/Zmlz/2Zpc/9sb3n/am13/2dqdP93eoP/c3V8/3V3ff9nanT/ZGdx/2Jlbv9nanH/
    +Z2px/2dqdP9sb3n/Z2p0/2Jlbv9nanT/eXuB/2ptd/9qbXf/bG51/2xudf9ucHf/b3F1/2dqdP9ucHf/
    +bG51/21vc/9sbnX/c3V8/2xudf9qbHP/dnh8/3V3ff9maG7/c3Z//3N2f/9sb3n/c3V8/3N1fP94eX3/
    +dXd9/3Byef9zdXz/c3Z8/3J0e/9ucXv/cnV7/29xef9vcXj/bW93/3Byef9ucHf/b3F1/29xdf9sbnX/
    +bW9z/25wd/9wcnn/bG95/2hqcf91d37/cnV6/21wef9tb3b/dXd9/3R2fv9ucHf/b3F6/3F0ff9ucXv/
    +cXN6/3J0ff9zdn7/cnR7/3Z5gf9rbnf/c3Z//3R3f/9vcXb/b3F2/3N2f/9wc33/bnB3/3R3gP90dnv/
    +am10/3J0e/90dn3/bG51/29xef9sbnX/am12/2xvc/9gY2z/Zmlz/2dqdP9kZ3H/bG95/2dqcf9qbXf/
    +amxz/2ptd/9qbXf/bG51/2xudf9wcnn/bnB3/21vc/9ucXv/Z2p0/2Zpc/9nanT/bG95/25xe/9wcnn/
    +cHJ5/25wd/9ucHf/bW9z/25wd/9zdXz/dXd9/3Bzff9ucHf/bG95/2xvef9sb3n/dXd9/29xdf9ucHf/
    +bnF7/3Bzff9vcXX/bG95/3V4gf91eIH/bnF7/3N1fP9wc33/d3qD/3d6g/95fIb/e36H/36Ahv9+f4P/
    +e36H/3Bzff9wc33/dXiB/3N2f/9wc33/cHN9/25xe/9qbXf/eHl9/3N2f/91d33/dXd9/2xvef9wcnn/
    +cHJ5/29xdf9sb3n/bnB3/3N1fP9zdXz/cHJ5/25xe/9qbXf/am13/2dqdP91d33/c3V8/2xudf9sb3n/
    +cHJ5/3Byef9zdn//dXiB/3V4gf9zdn//cHJ5/3t9g/9wc33/dXiB/3d6g/95fIb/e32D/3d6g/9wc33/
    +dXd9/3N2f/9zdn//cHN9/3N1fP9zdXz/d3qD/2ptd/9sb3n/cHJ5/25wd/91d33/dnh8/3V3ff9ucHf/
    +dXd9/25wd/9tb3P/bG95/2ptd/9wcnn/c3Z//3Bzff9ucXv/dXd9/2xudf9ucHf/bnB3/3t9g/9vcXX/
    +c3V8/3Z4fP9ucHf/amxz/25xe/9qbXf/am13/2xudf9qbXf/bG51/2psc/9nanH/bG51/25xe/9qbXf/
    +am13/2xudf9qbXf/ZGdx/2xvef9ucXv/bG95/2Zobv9kZ3H/am13/2dqdP9zdXz/am13/2dqdP9zdXz/
    +bG51/2xudf9zdXz/b3F1/2xvef9sb3n/c3Z//25xe/9vcXX/e32D/3d5f/93eX//bnB3/2xudf9nanT/
    +bnB3/25wd/9sb3n/dXiB/25wd/9ucHf/bnB3/31+gf9ucHf/bG95/2xudf9nanT/Z2p0/21vc/9nanT/
    +bG51/2psc/9sbnX/Zmlz/2xvef9nanT/Z2p0/3Bzff9zdXz/ZGdx/3N1fP9ucXv/bG51/3N1fP9ucXv/
    +cHN9/3Bzff9sb3n/bG95/3Fze/9ydHv/b3J5/3R2fP9vcXb/bW95/2hrdf9oa3X/am13/2psc/9qbHP/
    +bG95/2Zpc/9maXP/Z2p0/2dqc/9gY2z/cXR9/29xef9sb3j/bG52/3J0e/9vcnv/b3F1/25weP9wcnn/
    +cHJ2/25weP9wcnn/bnB3/25weP9ydX7/Z2p0/3N2f/9xc33/bnB3/3Bzff9wc33/bnF7/21vc/9zdXz/
    +dnh8/2xudf9zdn//d3qD/29xdf9wcnn/bG95/2xvef9sb3n/Zmhu/25wd/9ucHf/amxz/3V3ff9sb3n/
    +cHJ5/29xdf9sbnX/bnB3/2xudf9tb3P/c3V8/2xudf9sbnX/bnF7/2Zpc/9qbXf/Z2p0/2ptd/9wc33/
    +bG95/3Bzff9sb3n/bG51/25wd/9ucHf/c3V8/3N2f/9zdXz/b3F1/25wd/9ucHf/bG51/3V3ff9vcXX/
    +bG51/25wd/9wcnn/bG95/25wd/91eIH/e32D/3Bzff9wc33/c3V8/3N2f/91eIH/eXuB/3d5f/9zdn//
    +dnh8/3d5f/9nanT/b3F1/25xe/9wc33/cHN9/3Bzff9ucXv/bnB3/3V4gf9wc33/c3Z//3V4gf9ucHf/
    +cHN9/25xe/9ucHf/bG95/2xvef91d33/c3Z//25xe/9wc33/bnB3/25wd/9nanT/c3V8/3N2f/9qbXf/
    +bG95/25wd/9sb3n/c3Z//3Bzff9zdn//c3Z//3Bzff95fIb/cHJ5/25xe/9zdn//cHN9/3Bzff9wc33/
    +Z2p0/25wd/9zdn//bnF7/3Byef9wcnn/cHJ5/3d6g/9ucHf/cHJ5/3Bzff9sb3n/d3l//3Z4fP91d33/
    +bnB3/3N2f/9ucHf/bnB3/25wd/9ucHf/cHJ5/3d5f/91eIH/c3Z//3l7gf9ucXv/bnF7/3N2f/9+gYr/
    +c3V8/3d6g/97fYP/cHN9/3Byef9ucXv/bG95/2xvef9sb3n/bG95/3Bzff9ucXv/bnB3/3Bzff97fYP/
    +dXiB/3Bzff9ucXv/cHN9/25xe/93eoP/e32D/3l7gf9zdn//cHJ5/3N2f/9wcnn/eXuB/3Bzff9ucHf/
    +d3qD/3N1fP9zdXz/eXyG/3V3ff91d33/c3V8/3d6g/91eIH/c3V8/3l8hv93eoP/d3l//3Bzff9sb3n/
    +Zmlz/25wd/9sbnX/b3F1/3Byef9ucHf/bnB3/2xvef97fYP/bnF7/25xe/9ucHf/bG51/2ptd/9qbHP/
    +amxz/2xudf9ucHf/bnB3/2dqdP91eIH/am13/2xvef93eoP/c3Z//2Zpc/91d33/c3Z//3Bzff93eX//
    +c3Z//3V3ff9wc33/bnF7/25wd/91d3v/dXd7/3Byef91d3z/bnB0/3Byef9qbXf/bG95/25wd/9tb3P/
    +bG51/25xe/9maXP/YmVu/2dqdP9kZ3H/YGNs/3J1fv9sb3n/Zmhu/2RmbP9sb3n/Z2py/2dqcf9oa3L/
    +Z2lz/2dpb/9laHH/bG95/2ptd/9sbnX/bG95/2Rncf9wc33/bG95/2xudf9qbXf/c3Z//3V4gf9vcXX/
    +cHJ5/3V3ff9sbnX/dXd9/3d5f/9tb3P/bnB3/2xudf9ucHf/bnF7/2Zobv9sbnX/bnB3/2dqcf91d33/
    +bG51/25wd/9ucHf/b3F1/25wd/9ucHf/am13/3Bzff9sbnX/am13/2xvef9maXP/Z2p0/2Vocv9tb3T/
    +c3V8/25wd/9ydHv/c3Z//2xvef9ucHf/bG95/3Bzff9zdXz/c3V8/25wd/9ucHf/b3F1/21vc/9wcnn/
    +bW9z/25wd/9ucXv/c3Z//3Bzff9wcnn/dXiB/3d5f/9sb3n/bG95/29xdf9ucHf/cHJ5/3Z4fP9ucXv/
    +c3V8/3Bzff9zdXz/ZGdx/2psc/9qbXf/am13/2ptd/9sb3n/bnB3/2dqdP9zdXz/bnF7/25xe/9wc33/
    +bG51/2xvef9sb3n/am13/2psc/9sbnX/c3V8/3Bzff9ucHf/cHJ5/2xudf9tb3P/Z2px/2xvef9wc33/
    +bG51/25wd/9ucHf/b3F1/3N1fP9zdXz/bnB3/25xe/9tb3P/dXd9/2xudf9sb3n/bnF7/25xe/9ucXv/
    +am13/2Zpc/9sbnX/c3V8/25wd/9sbnX/bW9z/2xudf94eX3/bnB3/25wd/9ucXv/bnB3/3Z4fP91d33/
    +eHl9/25wd/9zdXz/bG51/29xdf9ucHf/bnB3/3Byef91eIH/c3Z//3Bzff93eoP/bnF7/3Bzff9ucXv/
    +eXyG/25wd/9zdXz/dnh8/25wd/9ucHf/bnF7/3Byef9qbXf/bnB3/25wd/9ucXv/bnB3/25wd/9sbnX/
    +dnh8/25wd/9tb3P/bnB3/25wd/9qbXf/cHN9/3V3ff92eHz/cHJ5/2xudf9wc33/cHJ5/3l7gf9wc33/
    +bnF7/3V3ff9tb3P/bnB3/3Byef9ucHf/b3F1/25wd/9zdXz/cHJ5/29xdf95e4H/dXiB/3l7gf9ucHf/
    +bnB3/2RmbP9sbnX/Z2p0/2psc/9sbnX/am13/2Zpc/9qbHP/c3Z//2ptd/9qbXf/am13/2dqdP9maXP/
    +am13/2Zpc/9qbXf/bG51/2xvef9nanT/bG95/2Rncf9maXP/bG95/2ptd/9iZW7/bnF7/2xvef9sbnX/
    +cHN9/25xe/9zdXz/bnF7/2xvef9qbHP/cHN9/3Byef9sb3n/dnh8/21vc/9ucHf/bG51/25wd/9qbXf/
    +bG51/21vc/92eHz/bnB3/2dqcf9zdXz/bnB3/2dqdP97fof/c3Z//25xe/9ucXv/eXuB/2xvef9ucHf/
    +bG95/25xe/9ucHf/bnB3/25xe/9qbXf/bG51/2xvef9kZ3H/c3V8/25xe/9qbXf/bG51/3N2f/93eoP/
    +cHJ5/3Bzff91d33/bG51/3V3ff95e4H/bG51/3Byef9ucHf/b3F1/3Byef9maG//Z2p0/2dqc/9hZG3/
    +cHN9/2ttdP9oa3X/a21z/2psc/9qbXf/bG51/2ptd/9wc33/bG95/25xe/9tcHr/Z2p0/2dqdP9oa3P/
    +bXB3/3J1fv9ucXv/bG95/3Byef9qbHP/amxz/2psc/9sb3n/bG95/2xvef9sbnX/bnF7/2psc/9sbnX/
    +bnF7/2psc/9maXP/Zmlz/2ptd/9maXP/Z2px/25xe/9ucXv/amxz/2Zobv9kZ3H/Zmlz/2dqdP9wcnn/
    +bG95/25xe/9wc33/c3V8/2Rncf9sbnX/am13/2psc/9nanT/bG95/2dqcf9qbHP/c3V8/25xe/9ucXv/
    +cHN9/2psc/9qbXf/bnF7/25wd/9tb3P/b3F1/3V3ff9zdXz/c3V8/3N1fP9sbnX/bnB3/2psc/9ucHf/
    +eHl9/25wd/9sbnX/bG51/2xvef9zdn//bnF7/2xudf9ucHf/bnB3/3V4gf9ucHf/cHJ5/3N1fP9ucXv/
    +bnF7/3N1fP9qbHP/amxz/3V3ff9ucHf/bnB3/25wd/9ucHf/dnh8/21vc/9ucHf/c3V8/25wd/92eHz/
    +dXd9/3Z4fP9ucXv/dXiB/25xe/9zdXz/am13/2Zpc/9qbHP/cHN9/2xvef9sbnX/cHN9/2ptd/9sbnX/
    +bnB3/3l7gf9wcnn/c3Z//3V4gf9ucXv/bnB3/25xe/9ucHf/am13/25wd/9sb3n/bnF7/25wd/9ucHf/
    +bG51/3d5f/9wcnn/b3F1/2xudf9ucHf/Z2px/2xvef9wc33/bnF7/2xvef9qbHP/bG95/2Zobv9sb3n/
    +Z2px/2dqcf9qbXf/Z2p0/2Zpc/9sb3n/am13/2ptd/9qbXf/bG51/3V3ff9sb3n/eXyG/3l7gf95e4H/
    +cHN9/25wd/9qbXf/c3Z//3N1fP9zdXz/dXiB/3V3ff91eIH/d3l//4OFjP97fYP/eXuB/3V4gf9zdn//
    +cHN9/3N2f/9wc33/d3qD/3V3ff91eIH/cHN9/3l7gf9zdXz/bnF7/3V4gf9wc33/am13/3d6g/91eIH/
    +cHN9/3N2f/93eoP/e32D/3N2f/9wcnn/b3F1/3V3ff91eIH/bnF7/3l7gf9ucHf/c3V8/29xdf9ucHf/
    +bW9z/21vc/9vcXX/dXd9/25wd/9sb3n/bnF7/2dqdP9nanT/e32D/3V3ff9wcnn/bnB3/3Z4fP9tb3P/
    +b3F1/25wd/9ucHf/bG51/2psc/9zdn//bnF7/25wd/9zdXz/Zmhu/3Z4fP9ucXv/b3F1/21vc/99f4X/
    +e32D/3V3ff93eoP/fX6C/3V3ff98foX/f4GI/3N2f/92eYL/cnR7/29yfP9zdn//aGt1/25wd/9qbHP/
    +ZWhy/29ye/9sbnX/bW92/21vdv9nanH/am13/2dqcf9maXP/bnB3/2Zpc/9nanT/bG92/2hrdP9lZ3D/
    +ZWhw/2xudP9ucXr/a212/2hqc/9qbXf/bG51/2xudf9qbXf/bnF7/3Byef9wcnn/b3F1/3N1fP9wcnn/
    +bG51/3N1fP9vcXX/bnB3/3Byef9zdXz/bnB3/3Byef9wc33/dXd9/25xe/9sb3n/bnB3/25xe/9zdXz/
    +eHl9/3N1fP9zdXz/cHN9/3Z4fP9nanH/bG51/3Bzff9sbnX/bnB3/3V3ff9tb3P/bG51/3Z4fP9wcnn/
    +cHJ5/3N1fP9sbnX/bG51/2xvef9zdXz/bG51/2xudf9wcnn/c3V8/3Bzff9zdXz/bnB3/25wd/9sb3n/
    +bG95/3d5f/9ucHf/cHJ5/2xvef9vcXX/c3Z//3Bzff9sb3n/bG95/25xe/91eIH/bnB3/3N2f/9zdn//
    +c3Z//3N2f/93eX//bnB3/2xvef9wc33/bG95/2xudf9sbnX/bG51/3Z4fP9qbXf/am13/3Byef9sbnX/
    +c3V8/3N1fP9ucXv/bG95/3N1fP9qbHP/bW9z/21vc/9sbnX/bnB3/3V3ff9wc33/bG95/3N2f/9ucHf/
    +bnF7/25xe/93eoP/cHN9/3N2f/95fIb/d3qD/3V3ff91eIH/dXd9/3N2f/9zdn//c3V8/3V4gf9wcnn/
    +cHJ5/3Bzff91eIH/cHN9/25xe/9ucHf/cHJ5/2psc/9zdn//eXuB/3N2f/9ucXv/bG95/3N1fP9vcXX/
    +c3V8/2xudf9sbnX/dXd9/25xe/9ucHf/cHN9/3Byef9wcnn/bnF7/3N1fP91eIH/bnF7/3l8hv95e4H/
    +eXuB/25xe/9qbXf/Zmlz/3Byef9ucHf/am13/3Bzff9sb3n/cHN9/25wd/93eoP/c3Z//3Byef9ucHf/
    +b3F1/2psc/9vcXX/bG51/3Byef9vcXX/am13/2xudf9zdXz/bG51/2xudf9wc33/bG95/2Zobv9wcnn/
    +cHJ5/25xe/9sb3n/c3V8/3V3ff9ucXv/bG95/21vc/91d33/eXuB/25wd/91eIH/bG51/3Byef9tb3P/
    +bnB3/2xvef9ucXv/cHJ5/3V4gf9wcnn/bG95/25xe/9qbXf/Zmlz/3Z5gv9zdn//cHN9/21vef92eH7/
    +bnB3/29xdf9sb3n/bnB3/29xdf9vcXb/dHZ9/3Byef9ucHf/bG94/2Nmb/91d3z/bG95/2lsc/9nanT/
    +bnF7/3V4gf9xc3v/c3Z//3N2fv9tcHr/dXd+/3J1f/9rbnj/bnF7/2xveP9tb3j/cXN6/29xeP9tb3P/
    +aWty/2ptdP9wc3v/b3F4/3Bze/9ucXr/Z2p0/2xvef9qbHP/Zmlz/25wd/9nanL/aGt0/25xef9sbnb/
    +aGt1/21wef9ydX7/dHeB/29xef9sb3j/bnF7/2xudf9qbHP/amxz/25xe/9sb3n/bG95/21vc/9ucXv/
    +bnF7/2xvef92eHz/bnB3/3Byef9zdXz/cHJ5/21vc/9qbHP/bnF7/3N1fP9sbnX/bG51/2dqdP9sb3n/
    +bG95/3Bzff9sb3n/c3V8/25xe/9wc33/Z2p0/2ptd/9ucXv/amxz/2dqdP9sb3n/Zmlz/2dqcf9sb3n/
    +am13/2xvef9zdXz/amxz/2xudf9qbXf/bnF7/2ptd/9tb3P/bnF7/3V3ff9zdn//cHN9/25wd/9ucHf/
    +bnB3/25wd/91eIH/bnB3/3Byef9ucHf/cHJ5/3N2f/91eIH/c3V8/3Bzff9wc33/e32D/25wd/9wc33/
    +dXiB/3l7gf91eIH/d3l//2xvef9qbXf/bnF7/25wd/9qbHP/bnB3/2xudf94eX3/bnB3/2xudf9sb3n/
    +am13/3Byef9zdXz/c3V8/2ptd/9zdXz/amxz/2xvef9ucHf/am13/21vc/92eHz/c3V8/25wd/91d33/
    +b3F1/29xdf9vcXX/dnh8/25wd/9ucHf/bnB3/25xe/9qbXf/bG95/2psc/9sbnX/bG51/2xudf9qbXf/
    +Z2p0/2dqdP9nanH/dXd9/2dqdP9nanH/ZGdx/2Zpc/9dYGr/Z2p0/3N1fP9sb3n/bG51/2ptd/9qbXf/
    +amxz/2xvef9sbnX/am13/25xe/9wcnn/amxz/25xe/9qbHP/Z2p0/2xudf9sbnX/c3V8/2ptd/93eoP/
    +cHN9/3Bzff9sb3n/am13/2psc/9ucHf/bW9z/2xudf9ucHf/bG51/3Byef9tb3P/d3l//3Bzff9sb3n/
    +cHJ5/2xudf9maXP/bG51/2dqdP9wc33/am13/2xudf9ucHf/c3Z//25wd/9ucHf/dXiB/3V4gf9kZ3H/
    +dXd9/25wd/91d33/bG51/3Bzff95fIb/c3Z//2xvef9sb3n/cnV+/3Z5gv9sbnX/enyC/29ydv9vcnz/
    +bnB3/3Bzff9wc33/bG95/2xvef9wcnn/b3F1/2dqcf9ucHf/bG92/2hrdf91eIH/dXd+/3R2fv9ydHv/
    +dXd8/29yd/9wcnf/b3F3/3J0e/9ucHj/b3J5/3V3ff9wcnj/cHJ3/3Fzev9sbnX/dHZ8/29xd/9tcHn/
    +bG51/25xef9ydX7/bnB5/2xvef9vcXj/bG93/29yev9wcnj/aWx1/3Bze/9tcHr/a254/3Byef9tcHr/
    +bW92/2dqdP9rbnb/dHZ9/3R2ff9zdX3/c3V8/29yef92eYL/dXd9/3Z4fP9+gYr/cXR+/3N2f/92eID/
    +bW93/2hrdP9sb3n/b3J8/3V3ff9oa3X/YmVu/35/g/93eX//c3V8/3N1fP93eoP/c3Z//3N2f/9ucXv/
    +cHN9/3V4gf9zdn//eXyG/3N2f/9wc33/cHN9/3Bzff9ucHf/am13/3Bzff91d33/bnF7/3Byef9sbnX/
    +cHJ5/25wd/9zdXz/cHJ5/3V3ff9zdXz/cHN9/2ptd/9ucHf/d3qD/3Bzff9wc33/cHN9/2xvef9ucHf/
    +dXiB/3Bzff91eIH/e32D/3V3ff93eoP/eXuB/3t9g/93eX//d3l//3l8hv97fof/e32D/36Ahv97fYP/
    +eXuB/3V3ff91d33/gYOK/3Z4fP93eX//eHl9/3h5ff97fYP/d3qD/3N1fP95fIb/d3qD/3t+h/9wcnn/
    +c3Z//3d6g/91eIH/dXiB/3l7gf9zdXz/c3V8/3V4gf9zdXz/Z2p0/2xvef9nanT/d3l//25wd/9qbXf/
    +bnB3/2ptd/9ucXv/dXd9/3Z4fP9wcnn/c3V8/2xudf9vcXX/YmVu/2Jlbv9maG7/bnB3/2dqdP9iZW7/
    +ZGdx/2BjbP9kZ3H/ZGdx/25wd/9kZ3H/Zmhu/2Zpc/9maXP/Zmlz/2Zobv9dYGr/YGNs/2Zobv9maG7/
    +Z2p0/2Zpc/9nanT/Zmlz/3V4gf9sb3n/am13/2psc/9qbXf/Zmhu/25wd/91d33/c3V8/3N1fP9sb3n/
    +bnF7/3Byef91eIH/c3Z//3N2f/91eIH/d3qD/3N1fP93eoP/cHN9/3Byef9wc33/c3V8/3d5f/9ucXv/
    +eXyG/3l7gf91eIH/c3Z//25wd/9qbXf/c3V8/3Bzff9wc33/c3Z//25wd/9ucXv/bG95/3l7gf91d33/
    +bnB3/3Byef9ucHf/bnB3/25xe/9wcnn/cHN9/2xvef9sb3n/bG95/3Bzff9ucHf/bnB3/3N1fP9zdXz/
    +Zmhu/3Bzff9qbXf/bnF7/2ptd/9sb3n/dXiB/3Bzff9ucHf/bG51/3V2e/92eYD/bG52/3R2fP9sbnX/
    +cXN6/21vd/9vcXn/cHJ5/3Byef9ucHf/bnB3/25wd/9qbHP/bG51/2psdP9pbHT/cHJ4/25weP9sb3f/
    +bnB5/21vd/9ucHf/aGt1/2hrdP9qbXf/aGt0/2xvd/9sb3n/aWx0/21weP9nanT/ZWhv/25xev9vcnr/
    +a254/25xeP9ydHz/dHZ9/29xe/9vcnz/b3J8/3N1ev9xdH3/cnR9/3F0ff92eYH/dXiA/25xev9zdXz/
    +c3Z//3Byef9rbnj/b3J8/3h6gP90dn//cnR7/29xef9pbHb/cHJ5/21vc/9vcXX/d3l//29xdf90dnz/
    +dnh8/2tud/9maXP/c3V8/3N1fP93eX//bG51/2psc/9zdXz/b3F1/25wd/9sbnX/bnF7/2ptd/9qbXf/
    +amxz/2xvef9ucXv/bG51/3d5f/9vcXX/bnF7/3N1fP91d33/bnB3/2ptd/9zdn//c3Z//25xe/9wc33/
    +am13/3Bzff9wc33/dXd9/3N1fP91d33/bnB3/25wd/9sbnX/bG95/3N2f/9ucXv/c3Z//3V4gf9zdXz/
    +cHJ5/3d5f/91d33/cHJ5/3V3ff9tb3P/bG95/2xvef9wc33/am13/25xe/9ucXv/c3V8/3Byef91d33/
    +bnB3/25wd/9ucHf/cHJ5/3l8hv9sb3n/bnB3/25wd/9ucHf/cHJ5/25wd/9qbXf/cHJ5/3Byef94eX3/
    +bnB3/25wd/9zdXz/bnF7/3V4gf91d33/am13/29xdf9wcnn/bW9z/2Zpc/9qbXf/Zmlz/3Bzff9sbnX/
    +Z2p0/2xvef9qbHP/Z2p0/2xvef9ucHf/Z2px/2dqdP9iZW7/ZGZs/25wd/9sb3n/bnF7/3d5f/91d33/
    +bG95/3V3ff9qbXf/bG95/29xdf93eX//cHJ5/25xe/9wcnn/bnF7/2psc/9sbnX/Zmlz/2ptd/9sbnX/
    +bG95/2xudf9tb3P/bnB3/25wd/97fof/c3Z//3V4gf9zdXz/dXiB/25xe/91eIH/e36H/3V4gf93eoP/
    +d3qD/3d6g/93eX//eXyG/3l8hv95fIb/eXuB/3t9g/9zdn//d3qD/3N2f/9wcnn/bnB3/2xvef92eHz/
    +b3F1/3l7gf93eX//c3V8/3N2f/9ucHf/Z2px/21vc/9sbnX/bG51/2xvef9qbHP/am13/2dqcf9zdn//
    +bG95/2psc/9sb3n/bG51/2ptd/9qbXf/bG51/25xe/9sb3n/bG51/2xudf9ucHf/bG51/2dqdP9sb3n/
    +bG95/11gav9qbXf/am13/3Bzff9sbnX/bnF7/3V4gf9ucXv/bG51/2xudf9ydHz/dHZ8/29xef9ucXv/
    +bG50/25xef9nanT/am13/2dqdP9nanT/Z2px/2Zpc/9nanH/Zmlz/2ttdP9oa3T/bnB4/3V3ff9ydX//
    +c3aA/3J1fv9tcHn/cnV+/29ye/9tb3f/cXR+/3J1fv92eH7/c3aA/25xev91d33/cXR9/21wd/9vcnz/
    +c3Z//3J1ff90dnz/cnR8/3N1fP9wcnj/bnB3/3Byef91d3v/cHJ5/25wd/9tcHf/c3V8/3J0fP9sbnX/
    +bW9z/3N2f/9wcnn/amxz/25xe/93eX//dHeA/3J0fP9vcnv/a211/29yef9ucHf/bW9z/3d5f/9vcXb/
    +c3V9/3V3fv9sb3j/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/c3V8/2psc/9nanT/bG51/2ptd/9sbnX/
    +bG51/2ptd/9sbnX/cHJ5/2xudf94eX3/bG95/25xe/9zdn//cHN9/2xvef9nanT/dXd9/3N2f/9sb3n/
    +dXd9/2xvef9wc33/dXiB/3d5f/9zdXz/dXd9/25wd/9zdXz/amxz/2xudf9wcnn/am13/3Byef9sb3n/
    +amxz/2Zpc/9wcnn/am13/2dqdP9wc33/amxz/2xvef9sb3n/bnF7/2xudf9zdXz/cHJ5/3Byef9wc33/
    +bnF7/2ptd/9sbnX/bG51/2xudf93eX//bW9z/2xudf9sbnX/bG51/3Byef9wcnn/b3F1/2xvef9ucXv/
    +dXiB/2xvef9ucHf/dXd9/3N1fP9zdn//dXd9/2xvef9ucHf/c3Z//25xe/9qbXf/cHN9/2ptd/95e4H/
    +dXiB/3Bzff93eoP/c3Z//3t9g/9+f4P/eXyG/3d6g/91eIH/c3V8/3N2f/9qbXf/bW9z/25wd/93eX//
    +dXd9/3Byef93eX//cHJ5/3Byef9wcnn/e32D/3V4gf9wc33/bnF7/3Bzff9nanT/bG95/2ptd/9sbnX/
    +bW9z/25wd/9ucHf/bG51/2dqdP9qbHP/dXiB/2xvef9ucXv/bG51/2ptd/9kZ3H/Z2p0/3Byef9maG7/
    +am13/2dqdP9qbXf/Z2p0/2dqdP9sb3n/am13/3Bzff9ucXv/bG51/2xvef9sb3n/bG51/2dqdP9qbXf/
    +dXd9/25wd/93eoP/dXiB/3V3ff91d33/b3F1/2Zobv9ucHf/bW9z/2xudf9ucXv/bG51/3Byef9tb3P/
    +dXiB/3Bzff9qbHP/am13/2dqdP9sbnX/bG51/2ptd/9sb3n/bG95/2psc/9sbnX/Z2p0/2Zpc/9maXP/
    +amxz/2xvef9iZW7/bG95/25xe/9wc33/amxz/2ptd/91eIH/bnF7/25wd/9sb3n/b3F4/3R2ff9wcnn/
    +cXN4/21vc/9ydHv/bG51/25xev9wc33/cHN9/25wd/9wc33/cHN9/3Byef9wc33/bG94/25xef9xc3v/
    +c3V8/29xeP91d33/bG95/3R3gP9ucXv/amx0/2xvef9ucXv/cHN8/3Bzff9wcnn/c3V8/3Byef9vcXj/
    +cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/d3l//25wd/9wcnn/bnB3/3V3ff91d33/
    +bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9xc3r/c3V8/21vdv93eoT/dXiB/3V3ff9/goz/
    +cHJ8/3h6gf91d37/aWx2/2Vocv9ucXv/c3V8/3N1fP9qbXf/am13/3t9g/9wcnn/bnB3/3N1fP9ucXv/
    +bG95/2xvef9wc33/bnF7/3N2f/9sb3n/d3l//2xvef9ucXv/bnF7/3V4gf9zdXz/Z2p0/3N2f/91d33/
    +bG51/3V3ff9ucHf/cHJ5/3N2f/9zdn//c3Z//3N2f/9ucXv/c3Z//2ptd/9wcnn/cHN9/3Byef9wc33/
    +c3V8/29xdf9ucHf/dnh8/3N1fP9wcnn/c3V8/21vc/9zdXz/bnB3/2xvef9ucHf/bnF7/2ptd/9ucHf/
    +bnF7/25xe/9sbnX/bG51/2xudf9tb3P/dXiB/2psc/9qbHP/bG51/2dqdP9sb3n/bnF7/2ptd/9qbXf/
    +am13/3V3ff9maXP/Zmhu/2ptd/9sb3n/bnF7/2xvef9maXP/Zmhu/2ptd/9maG7/XWBq/2Rncf9gY2z/
    +bG95/2dqdP9qbHP/Z2p0/2psc/9qbXf/cHN9/3N1fP9ucXv/bnF7/2xudf9sbnX/am13/21vc/9ucHf/
    +eXuB/3N1fP9wcnn/cHJ5/2xudf9qbHP/am13/3Bzff9sb3n/bG95/25wd/9wcnn/amxz/21vc/9sbnX/
    +am13/2dqdP9qbXf/bG51/2xudf9sbnX/am13/3d5f/9sb3n/bnF7/2xvef9sb3n/bG51/3Byef92eHz/
    +bG51/3N1fP9wc33/c3Z//3Bzff9zdXz/c3V8/3N1fP9wcnn/dXd9/2xudf9wcnn/bnB3/2ptd/9sbnX/
    +am13/3Bzff9qbHP/d3l//3d5f/9zdXz/dXd9/25wd/9kZmz/bG95/2xvef9wc33/c3Z//29xdf9wc33/
    +bnB3/3d6g/91eIH/bnF7/25xe/9sb3n/cHJ5/3Byef9wcnn/c3Z//3N1fP9wcnn/cHN9/3N2f/9wcnn/
    +cHJ5/25xe/9zdn//Zmlz/3V4gf9wc33/d3l//2xudf9ucHf/d3l//25xe/9sb3n/bG95/3p8g/97fYP/
    +dnmC/3V3ff91d3z/dHeA/3F0fP9zdXz/cXN6/3V3ff9ucHf/cHJ5/3Byef9sbnX/bnB0/29xeP9ucXr/
    +b3F4/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/
    +bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/bG51/3N1fP9nanT/amxz/2psc/9ucXv/
    +cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/ZWhx/2Zpc/9jZnD/a254/2xudf9maXP/
    +dXd9/2lrc/9wcnn/bXB4/2dpcP9laHL/am13/2xvef9zdXz/bG95/2xudf94eX3/bG95/25wd/9sb3n/
    +bnF7/25xe/9ucXv/bnB3/3Byef9zdXz/bnB3/3h5ff9vcXX/bnF7/25wd/9zdn//cHJ5/2Zpc/9zdn//
    +cHN9/25xe/93eX//cHJ5/25xe/9zdn//c3Z//3Byef9zdXz/c3V8/3Byef9nanH/bG51/3Byef9sbnX/
    +cHN9/3N1fP9ucHf/bG51/3V3ff9wc33/amxz/3V3ff9qbXf/bnB3/3Byef9ucHf/bG95/2ptd/9sbnX/
    +bG95/25xe/9zdXz/am13/2xudf9qbXf/bG51/3V4gf9qbXf/bG51/25wd/9tb3P/bnF7/2xvef9sbnX/
    +cHJ5/25wd/95e4H/bG51/2xudf9qbXf/bG95/2xvef9sb3n/Z2p0/2Zpc/9ucXv/am13/2Zpc/9sb3n/
    +Zmlz/3N1fP9ucXv/bG51/2xvef9qbXf/dXd9/3Z4fP94eX3/c3V8/3Byef9sbnX/am13/3V3ff9zdn//
    +dXiB/3t+h/91eIH/cHN9/3N2f/9sb3n/bG51/25wd/95e4H/bG95/2xudf9sb3n/am13/2Rncf9nanH/
    +YGNs/2Rncf9maXP/bG51/2ptd/9qbXf/am13/2ptd/91d33/bG95/3Bzff9sb3n/cHJ5/2xudf9sb3n/
    +dXd9/2ptd/9sb3n/cHN9/3Bzff9ucXv/bG95/3Bzff9zdXz/bnF7/3N1fP9ucHf/dXd9/3Byef9tb3P/
    +b3F1/2xudf9zdn//bnB3/3d5f/93eX//cHN9/3d6g/9ucXv/Zmlz/3Byef9ucHf/cHN9/3N2f/9sb3n/
    +c3Z//25xe/91eIH/dXiB/3Bzff9zdn//cHJ5/25wd/9vcXX/bG51/3Byef9sbnX/am13/2xudf9sbnX/
    +amxz/2psc/9qbHP/am13/2Jlbv9ucXv/bnF7/3N1fP9nanT/bnB3/3Z4fP9wcnn/bG51/2xudf95e4H/
    +c3Z//25xe/9ucHf/bG95/25xev9vcXj/bXB6/21vef92eHz/cHJ5/25xe/9sb3n/bnB3/3Bydv9rbnf/
    +bG94/29xeP9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/
    +cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/am13/2psc/91d33/am13/2xudf9maXP/
    +bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/dnh8/3Byev9zdXz/cXR9/3R3gP9wc33/
    +bnF7/3+CjP9zdn//dnmD/3h7hP9xc3r/c3V8/3t9g/9+gIb/e32D/3d6g/9wc33/e32D/3Bzff9zdXz/
    +cHN9/25xe/9zdn//bnF7/2xvef9ucXv/dXd9/29xdf91eIH/bnB3/2xvef9ucHf/dXd9/2xvef9kZ3H/
    +cHN9/3N2f/9ucXv/d3l//2xvef9ucXv/dXiB/3V4gf9zdn//c3Z//3V4gf9wc33/am13/2xvef91eIH/
    +bnF7/3V4gf91eIH/bnF7/2xvef93eX//cHN9/3Byef91eIH/bnB3/25xe/9wc33/c3Z//3Bzff9wc33/
    +cHN9/25xe/9wc33/dXd9/25wd/9ucHf/bG95/25wd/93eoP/bnB3/25xe/9wc33/cHJ5/3Bzff9vcXX/
    +bnB3/3Byef9tb3P/d3l//2ptd/9sbnX/am13/25xe/9wcnn/cHJ5/2xudf9qbHP/cHJ5/2xvef9qbHP/
    +cHN9/2dqdP91eIH/d3qD/3Bzff9zdn//cHJ5/3d6g/95e4H/e36H/3V4gf93eoP/cHN9/3V4gf9sb3n/
    +bG95/3Byef91eIH/c3Z//25xe/9wcnn/bG51/2dqcf9ucHf/dnh8/21vc/9qbXf/bG95/3Byef9sbnX/
    +b3F1/2RmbP9sbnX/bG51/2ptd/9sb3n/Z2p0/2dqdP9sbnX/dXd9/2xudf9ucXv/bnF7/2xvef9nanT/
    +bG51/3N1fP9sbnX/cHJ5/3Bzff9ucXv/bnF7/25xe/9wc33/cHN9/2xvef91d33/bnB3/3V3ff9zdXz/
    +b3F1/2xvef9sb3n/c3Z//3Byef93eoP/d3qD/3N2f/91eIH/cHN9/2dqdP9ucHf/bnF7/3N2f/9wc33/
    +bnB3/3N2f/9wcnn/eHl9/3V3ff9sbnX/bG95/2xudf9sbnX/bG51/2Zpc/9sbnX/amxz/2Zpc/9maXP/
    +Zmhu/2Zobv9maG7/amxz/2xvef9gY2z/Z2p0/2xvef9ucXv/Zmlz/2xudf91d33/bG95/2xudf9ucHf/
    +bnF7/25xe/9ucHf/bG51/2xudf9sb3n/am13/3J0e/9zdn//d3l//3Bzff9wc33/cHN9/25xe/9xc33/
    +bnB2/25weP9wcnn/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/am13/2xudf9ucXv/bG95/25xe/9wc33/
    +bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/
    +am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn//d3qD/3l7gf93eoP/dXh//29yfP9vcnv/
    +b3F1/2xudf93eoP/b3F4/3d5f/97fYb/dHZ//3V3ff97fYP/foCG/3t9g/9zdn//cHJ5/3l8hv9wc33/
    +c3V8/3N2f/91eIH/d3qD/3d6g/9ucXv/cHN9/3N2f/9wcnn/d3qD/3N1fP9zdn//c3V8/3N2f/9sb3n/
    +Zmlz/3N2f/91d33/bG95/3l7gf9sb3n/bnB3/25wd/9zdXz/bnB3/25wd/91d33/bnB3/2xudf9qbHP/
    +cHJ5/21vc/92eHz/cHJ5/2xudf9sb3n/eHl9/3V3ff9wcnn/d3qD/25wd/9wc33/bnF7/3V4gf9wc33/
    +bnF7/2xvef9sb3n/c3Z//3N2f/9wcnn/bG95/2xvef9sb3n/d3l//25wd/9vcXX/b3F1/29xdf9zdXz/
    +bnB3/25wd/9ucHf/b3F1/3d5f/9qbXf/bG51/25wd/9wcnn/bnF7/3Byef9sbnX/amxz/3Byef9wcnn/
    +amxz/3Byef9qbHP/cHN9/25xe/9tb3P/bnB3/21vc/91d33/dXiB/3V4gf9zdn//cHN9/25wd/9ucHf/
    +c3V8/3Bzff91eIH/foGK/3t9g/93eoP/d3qD/3Byef9ucXv/dXiB/3d5f/9sb3n/bnB3/3Bzff9wc33/
    +Z2p0/25wd/9maG7/bG51/2xudf9tb3P/bG51/2psc/9sb3n/bnB3/3l8hv9wc33/c3Z//3Bzff9wc33/
    +am13/2xvef93eoP/cHJ5/3N1fP91d33/dXd9/3V3ff9zdXz/dXd9/3V3ff9wcnn/dXd9/29xdf91d33/
    +dXd9/3Byef9sb3n/b3F1/3Byef9tb3P/dXd9/3d5f/9ucHf/cHJ5/3Byef9kZ3H/am13/2Zpc/9sb3n/
    +bnF7/2ptd/9zdXz/bG51/3V3ff9zdXz/bnB3/3N1fP9sb3n/bG95/25wd/9ucHf/bG95/25wd/9wcnn/
    +c3V8/29xdf9ucHf/bG51/29xdf9zdXz/Z2px/2xvef9zdn//eXuB/3Byef9wcnn/eXuB/25xe/9sb3n/
    +bnB3/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/2xvd/9vcXn/am13/3Bzff9qbXf/am13/2psc/9ucHf/
    +am13/2xudf9sbnb/bW92/3Byef9ucXv/bG95/2ptd/93eX//dXd9/3Byef9ucHf/c3V8/3N1fP91d33/
    +c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/
    +bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/bG95/2xvef9wcnn/am13/2tueP9maXD/
    +Z2p0/2dqcf9iZW7/cHJ5/2hqcf9xc3r/bnB5/2xudf9qbXf/cHN9/3Z4fP9wcnn/bnB3/2xudf93eX//
    +Zmlz/2ptd/9ucHf/am13/25xe/9ucXv/bW9z/25wd/9sb3n/am13/3V3ff9qbXf/bG95/2ptd/9sb3n/
    +ZGdx/11gav9qbXf/am13/2xvef9zdXz/Z2p0/2xudf9wcnn/bnB3/2xudf9ucHf/cHN9/25wd/9sbnX/
    +am13/25xe/9sb3n/d3l//3Bzff9ucXv/bnF7/3l7gf91eIH/cHN9/3l8hv9zdXz/d3qD/25xe/91d33/
    +c3V8/3N1fP9vcXX/bG51/3N1fP9wcnn/b3F1/21vc/9tb3P/bG51/3d5f/9sb3n/amxz/2xudf9sbnX/
    +c3V8/2xudf9ucHf/bnB3/25wd/93eX//bnB3/2xudf9wcnn/c3V8/25xe/9wc33/bG95/25wd/91eIH/
    +d3qD/3Bzff93eoP/cHN9/3l7gf91eIH/dXd9/3l7gf95e4H/e32D/4GDiv9/gYf/foCG/36Ahv9wc33/
    +cHN9/2ptd/9sbnX/bG95/3N1fP9wc33/bnF7/25xe/9qbXf/Z2p0/25xe/9wc33/am13/2Zpc/9nanT/
    +Z2p0/2Rncf9maXP/ZGdx/2dqdP9qbXf/amxz/2xudf9kZ3H/am13/2xudf97fYP/cHN9/3N1fP9ucXv/
    +dXiB/2xvef9ucHf/d3l//25wd/9zdn//d3l//3V4gf91d33/cHN9/3l7gf95e4H/dXiB/3l8hv9wcnn/
    +eXuB/3V4gf9wc33/cHN9/3N2f/91eIH/bnF7/3d5f/93eX//bnF7/3N1fP9tb3P/Z2px/25wd/9sbnX/
    +dXd9/25wd/9qbXf/c3V8/2xudf9wc33/c3V8/2ptd/9wcnn/bG51/2xvef9tb3P/b3F1/2xvef9sb3n/
    +bG95/25xe/9ucHf/bnF7/3N2f/9wcnn/d3l//2xvef9wc33/eXyG/3t+h/9zdn//d3qD/36Ahv93eoP/
    +d3qD/3V4gf9ucXv/bnF7/25xe/9vcXX/amxz/3R2ff9wcnr/c3V6/25wd/92eHz/c3Z//25xe/9ucXv/
    +bG95/29ye/9tb3f/bnB3/25wdP9sb3n/c3V8/25wd/9qbXf/dXd9/3V4gf9wc33/bG95/3N2f/91eIH/
    +d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/dXiB/3t+h/9zdn//dXiB/25xe/97fYP/
    +c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/bnB3/3Bzff9zdn//c3V8/29xeP9ucXn/
    +bW90/2xveP9qbXf/Z2px/3d5f/9tb3T/c3V8/3N2fv9ucHj/cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//
    +c3Z//2Rncf9maXP/Z2p0/2Zobv9qbXf/bG95/2psc/9nanT/am13/2dqcf9ucHf/ZGdx/2Zobv9maG7/
    +Z2p0/2Rncf9gY2z/Z2p0/2dqdP9qbXf/cHN9/2dqdP9sbnX/bnF7/2xvef9qbXf/bG95/25xe/9sbnX/
    +bG51/25wd/9wcnn/b3F1/3l7gf93eoP/c3Z//3N1fP95e4H/eXuB/25xe/93eX//bnB3/25xe/9sb3n/
    +dXd9/3Byef9zdXz/bG51/2xudf9wc33/bG95/2xudf9sbnX/bG51/2ptd/91eIH/bnF7/2dqdP9nanH/
    +Z2px/2Zpc/9maG7/Zmhu/2dqcf9qbHP/c3V8/2Zpc/9kZ3H/am13/25xe/9qbXf/bG95/2dqdP9qbXf/
    +cHN9/3Bzff9nanH/cHN9/2ptd/9zdn//cHJ5/29xdf9wcnn/cHJ5/3N1fP91d33/dXd9/3Bzff9ucXv/
    +bW9z/21vc/9ucHf/bnF7/3N2f/93eX//d3l//3d6g/9zdn//c3Z//3Bzff93eoP/foCG/3l8hv91d33/
    +dXiB/3N2f/9ucXv/cHJ5/2xvef9zdXz/bnB3/25wd/9sb3n/amxz/29xdf9wcnn/e36H/3V4gf9zdn//
    +cHN9/3N2f/9ucHf/bnB3/3Z4fP9tb3P/c3V8/3Z4fP9wc33/cHN9/25xe/93eX//d3l//3Bzff95fIb/
    +bnF7/3d5f/91eIH/cHN9/3N1fP9wcnn/bnF7/2xvef92eHz/dXiB/25xe/9ucXv/bG95/2ptd/9qbXf/
    +bG95/3V3ff9wcnn/b3F1/3Z4fP9ucHf/c3V8/3V3ff9ucHf/c3V8/2ptd/9sbnX/bW9z/21vc/9ucHf/
    +bG95/2xudf9ucHf/bW9z/21vc/9ucXv/am13/3V3ff9maG7/am13/2xvef92eHz/bnB3/29xdf91d33/
    +am13/3Bzff91d33/d3l//3t9g/93eX//d3l//3d5f/98fYL/dniA/3Z4gP9xc3r/d3l//3Bzff9ucXv/
    +bnF7/3Bzff9tcHr/b3J8/3F0ff9zdXz/cHN9/3l7gf9wc33/bnF7/3V3ff91eIH/bnF7/25xe/91d33/
    +bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/bnB3/25wd/93eX//cHJ5/3Byef9ucHf/
    +eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/bG95/2xudf9ucXv/cHJ5/3J0e/9sbnb/
    +bG52/2Vocv9maXP/Zmhu/2Rncf9zdn//Z2px/21wd/9rbXb/Zmhv/2Nmb/9qbXf/cHJ5/2xvef9ucXv/
    +bG95/3V4gf9qbHP/bG95/25xe/9ucXv/dXd9/3N1fP9vcXX/cHJ5/3N1fP9sbnX/c3V8/2ptd/9qbXf/
    +bG51/25wd/9nanT/Zmlz/2ptd/9sbnX/am13/3V3ff9qbXf/am13/3Bzff9qbXf/bG51/2ptd/9qbXf/
    +amxz/2Zpc/9kZ3H/bG95/2psc/9zdXz/cHN9/2xvef9qbHP/bG95/3N1fP9qbXf/dnh8/2ptd/9ucHf/
    +bG95/3N2f/9ucXv/dXd9/25wd/9wcnn/c3Z//3Bzff9wcnn/bnB3/3Byef9wc33/f4GH/3V4gf9zdn//
    +bnF7/3Bzff9zdn//cHJ5/3Byef9wc33/cHN9/3l7gf9sb3n/bG95/2xvef92eHz/bnB3/25wd/9ucHf/
    +b3F1/3Z4fP9wcnn/Zmlz/25xe/9qbHP/bG95/2xvef9qbXf/cHJ5/25wd/9wc33/dnh8/3Z4fP9zdn//
    +c3Z//25wd/9sb3n/Z2p0/2ptd/9ucXv/c3V8/3N1fP9wcnn/bW9z/2psc/9maG7/bG51/3V3ff9sb3n/
    +bG51/3Byef9ucHf/bG51/3Byef9sbnX/bnB3/25wd/9tb3P/cHJ5/2Rncf9sbnX/bG95/3V4gf9ucXv/
    +bG95/25xe/92eHz/bnB3/25wd/92eHz/bG51/3N1fP92eHz/dXd9/3Bzff9ucXv/c3Z//3Z4fP9vcXX/
    +d3l//25wd/9zdXz/cHJ5/3Byef9ucHf/cHJ5/3Bzff9ucXv/eXuB/3l8hv91eIH/cHN9/25xe/9qbXf/
    +bnF7/25xe/97fYP/dXiB/3N1fP95e4H/bG95/25xe/9wc33/bnB3/3N2f/9sb3n/cHJ5/3Byef9zdXz/
    +dXiB/3N2f/9zdXz/c3Z//3N1fP9zdXz/d3qD/3N2f/97fof/bnF7/3Bzff9wc33/eXuB/25wd/9ucXv/
    +dXiB/3Bzff95e4H/e32D/3V4gf91eIH/cHN9/3Byef9qbXf/dnh8/3Fzev9zdXz/cHJ5/3N2f/9zdn//
    +bnF7/2xvef9wc33/bG51/2xudv9rbXb/aWxz/2dpb/9ucXv/am13/2Rncf9qbXf/am13/2Zpc/9nanH/
    +am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/
    +cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/bnF7/25wd/9vcXX/c3V8/3Byef9vcnz/
    +b3F4/3N1ff9ucXv/dHeA/3N1fP9zdXz/foCG/25wd/91d33/c3V9/21vdP9sb3b/c3V8/3V3ff9wc33/
    +bG95/3Byef91d33/Z2px/2xvef9ucXv/cHN9/3N2f/9zdn//bG95/25xe/9wc33/bnF7/3V4gf9ucXv/
    +bnB3/2xudf9zdXz/bnB3/2psc/9ucHf/bG51/3N1fP92eHz/bnB3/2xvef91d33/bnB3/25wd/9wcnn/
    +cHJ5/2xudf9sbnX/bnB3/3V3ff9tb3P/eHl9/2xvef9ucXv/amxz/2xvef9zdXz/bG51/3N1fP9sbnX/
    +c3V8/2xudf9zdXz/cHJ5/25xe/9ucHf/bG95/3Bzff9wc33/b3F1/25wd/9vcXX/cHJ5/3t9g/9ucHf/
    +c3V8/2xudf9ucHf/bnF7/25wd/9ucHf/cHJ5/3Bzff93eX//bnB3/2xvef9ucHf/c3V8/25wd/9sbnX/
    +am13/2ptd/9wc33/bnF7/2Rncf9qbXf/Z2p0/2ptd/9qbXf/amxz/25wd/9sbnX/bG95/3V3ff9wc33/
    +cHN9/25xe/9sbnX/amxz/25wd/9wc33/cHN9/3d5f/91eIH/d3qD/3N2f/92eHz/bnB3/36Ahv9/gYf/
    +eXuB/3p7f/9+gIb/e36H/3d6g/97fof/d3l//3l7gf92eHz/c3Z//31+gf9zdXz/eHl9/3t9g/9/goz/
    +e32D/3d6g/9zdn//eXuB/2xvef9vcXX/dnh8/2ptd/9ucXv/c3V8/3Bzff9qbXf/am13/25xe/9ucXv/
    +Z2px/3Byef9maXP/bG95/2ptd/9sb3n/Zmlz/2Rncf9kZmz/Zmhu/25wd/9wcnn/Zmlz/2xudf9qbXf/
    +Zmlz/2dqdP9sbnX/dXd9/3Byef9ucHf/eHl9/25wd/9sbnX/c3V8/2xudf91d33/bG51/29xdf9wcnn/
    +bG95/3V3ff9ucXv/bG95/3Bzff9sb3n/b3F1/3Byef9ucHf/dnh8/2Rncf9ucHf/bG51/3d5f/9qbXf/
    +am13/3N1fP9sbnX/dnh8/3Z4fP9tb3P/bG95/25xe/9ucHf/amxz/3R2fP9tb3f/c3V6/2xudf9wcnn/
    +cHJ5/25xe/9qbXf/c3V8/29xeP9xdH7/cXR+/3F0ff9wc33/dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/
    +bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/
    +bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/b3F1/3Byef9sbnX/bG51/25xe/9sbnX/
    +cHJ5/25wd/9xc3r/bnB0/29xeP9ucHf/bG51/3t9g/9ucHX/dHd+/3N1e/9vcXX/b3F1/3N1fP91d33/
    +cHN9/25xe/9wc33/d3l//2Rncf9sbnX/cHJ5/2xvef9wc33/am13/2xudf9ucHf/bnF7/25xe/9wc33/
    +am13/2xvef9nanT/bG95/2psc/9kZ3H/am13/2xudf9ucXv/c3V8/2dqdP9qbHP/bG95/2ptd/9sb3n/
    +bG95/2ptd/9sbnX/am13/2ptd/9wc33/bG95/3V3ff9wc33/bnF7/2xudf9zdXz/dnh8/25wd/93eoP/
    +bG95/3V3ff9ucXv/c3Z//3Byef91d33/cHJ5/25xe/91eIH/dXiB/25wd/9ucXv/cHJ5/3V4gf97fof/
    +c3Z//3V4gf9zdn//bnF7/3N2f/9wc33/cHJ5/3Byef9ucXv/d3qD/3Byef9sb3n/cHN9/3V4gf9wc33/
    +bnF7/25wd/9sbnX/dnh8/3Byef9sbnX/cHJ5/2xudf9qbXf/bG51/2psc/9sb3n/bW9z/3Byef92eHz/
    +dXd9/3V3ff9wcnn/bG95/25xe/9ucHf/dXd9/3Bzff93eX//dnh8/3N2f/9wcnn/bG95/2Rncf9zdn//
    +dnh8/25xe/9qbXf/cHN9/25xe/9ucHf/cHN9/2dqdP9wcnn/bG95/25wd/91d33/Z2p0/2xvef9wc33/
    +eXyG/3Z4fP9wc33/c3V8/3d5f/9sb3n/bnB3/3Z4fP9sb3n/c3Z//3d6g/91eIH/cHN9/3N2f/95e4H/
    +d3l//25wd/95e4H/bnF7/3V3ff9zdn//c3Z//3Bzff9wcnn/cHN9/25xe/93eX//d3l//3N2f/9ucXv/
    +bnF7/2dqdP9sb3n/bnB3/3Z4fP9ucHf/bG95/3V4gf9ucHf/b3F1/3Bzff9ucHf/eXuB/2ptd/9ucHf/
    +bnB3/29xdf91d33/cHJ5/25wd/9zdXz/bnB3/29xdf9wcnn/b3F1/3Z4fP9kZ3H/am13/2xvef91eIH/
    +am13/2xudf9ucXv/Zmlz/3Bzff9zdXz/c3V8/3V4gf91eIH/bnF7/2ptd/9vcnz/bG95/3N1fP9naXD/
    +Z2p0/2ptd/9sb3n/am13/25xe/9tb3b/cXN7/3F0fP9vcnv/cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/
    +bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/c3V8/2xudf95e4H/bnB3/3N1fP93eX//
    +dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/am13/2Zpc/9nanT/bG51/2psc/9sb3n/
    +bG51/2xvef9qbXb/am13/2lsdf9rbnj/am13/2dqdP91eIH/a211/3N1ff9sb3n/am12/2xudf9wcnn/
    +dXd9/3N1fP9zdXz/dXd9/3Byef9dYGr/YmVu/2Zpc/9nanT/am13/2Rncf9maG7/ZGdx/2Zpc/9maXP/
    +Z2p0/2Zobv9nanT/ZGdx/2Rncf9iZW7/XF9o/2Zobv9maG7/am13/25wd/9kZ3H/Zmlz/25xe/9sb3n/
    +bnF7/2ptd/9sb3n/bnF7/2ptd/9tb3P/dXd9/3Byef95e4H/cHN9/3Bzff9vcXX/dXd9/3V3ff9ucXv/
    +dXiB/25wd/92eHz/bnB3/3Z4fP9wcnn/c3Z//25wd/9ucHf/cHJ5/3Byef9tb3P/bG51/21vc/9zdXz/
    +d3l//2xvef9sb3n/bG95/2xudf9qbXf/am13/2ptd/9nanT/bG51/3V3ff9ucHf/bnB3/25wd/9zdn//
    +cHJ5/25wd/9sbnX/bnB3/3N1fP9zdXz/bG51/3Byef9sbnX/bG51/25xe/9wcnn/cHN9/3Bzff9zdn//
    +e36H/3l7gf91eIH/cHN9/3Byef9ucXv/bG95/3Bzff91d33/d3qD/3d5f/93eoP/cHN9/25xe/9qbHP/
    +eXuB/36Ahv95fIb/dXd9/3d6g/91eIH/c3Z//3V4gf9wc33/d3qD/3Bzff9zdn//eXyG/2xvef9ucHf/
    +cHJ5/3l7gf9zdXz/cHJ5/3Byef92eHz/bnB3/3Byef9wc33/bG95/3N2f/91eIH/c3V8/2xvef9wcnn/
    +e32D/3l7gf9sb3n/dXiB/3Byef9zdn//cHN9/3N2f/9zdn//bnB3/3V4gf9wc33/d3l//3V4gf91eIH/
    +c3V8/3Bzff9qbXf/b3F1/21vc/91d33/bG95/2xudf91d33/am13/2xudf9qbXf/bG51/3V3ff9qbXf/
    +bW9z/2xudf9tb3P/dXd9/2ptd/9tb3P/cHJ5/2ptd/9sbnX/bG95/2xudf91d33/Zmhu/25wd/9sbnX/
    +dXd9/2xudf9vcXX/dnh8/2xudf92eHz/cHN9/21vc/9wcnn/c3V8/3Byef9nanT/bnF7/29ye/9wc33/
    +bG51/2xvef9qbXf/am13/2xvef9zdXz/bnB0/3J0ev9xdHv/bnB6/25xe/91eIH/cHN9/25wd/95fIb/
    +d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/
    +d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/dnh8/2xvef9qbXf/am13/2xudf9qbXf/
    +c3V8/2xudf9wcnn/bW92/3ByeP9vcXX/bnB3/2dqcf9nanH/d3l//25xdf90dnz/bW94/2tueP9nanT/
    +bnF7/3V3ff9sb3n/cHN9/25xe/92eHz/YmVu/29xdf9zdn//d3l//3V4gf9wc33/bG95/25xe/9zdn//
    +dXiB/3d6g/9ucXv/eXuB/3N2f/97fYP/cHN9/2xvef9zdn//cHJ5/3N2f/97fof/c3Z//3Bzff93eoP/
    +c3Z//3d6g/9wc33/cHN9/3Bzff9sb3n/bnB3/3V4gf9zdn//foGK/3N2f/9wc33/bnB3/3V3ff9zdn//
    +bnB3/3V4gf9sbnX/dnh8/25wd/92eHz/cHN9/3Z4fP9ucHf/bG95/25xe/91d33/b3F1/3Byef9wc33/
    +d3qD/36Biv91eIH/dXiB/25xe/9ucHf/cHN9/2xvef9ucXv/bG95/25wd/9wc33/bG95/2xvef9wcnn/
    +dXd9/3Byef9tb3P/bW9z/2dqdP9wc33/bG95/2dqdP9sb3n/ZGdx/2Zpc/9sb3n/Zmlz/2dqcf9maXP/
    +bG51/3V3ff9sb3n/c3V8/25wd/9ucHf/bG51/2tueP9vcnz/dXeA/3h7hf9ydX7/dXd9/25wd/9ucHf/
    +Zmds/3Byef9wcnn/c3V8/2dqdP9wcnn/cHJ5/2xudf9qbXf/Zmlz/2psc/9maXP/aGty/25xe/9nanT/
    +a210/2hrdf91eIH/bnF7/2xvef9qbXf/c3V8/2dqdP9qbXf/am13/2xudf9ydHv/dHZ8/2ptd/9sb3n/
    +bW92/3N1fP9ydHv/am12/3d4ff9wcnn/dXiA/3J1fv91eIH/cnR8/2xudf9wcnn/cHJ5/3V3ff9wcnn/
    +cHJ5/21vc/9ucHf/Z2px/25wd/9ucHf/dHZ8/29xeP9sb3b/dnh//29xdf9sb3n/bnF7/29xdf94eX3/
    +amxz/29xdf9tb3P/cHJ2/3V3ff9wcnn/b3F4/3R2fv9ucXj/bW93/3Fze/9vcXX/dXd+/2dpb/9sbnX/
    +bnB6/3d5f/9sb3b/a254/3V3e/9sbnT/dHZ6/3Bzff92eHz/e32D/36Ahv99foH/d3l//3l7gf91d3z/
    +c3Z+/2tudf9sb3n/am13/2Zpc/9nanT/bnF6/2ptdv9zdX7/c3V9/3V4gP9wc33/e32D/3V4gf9ucXv/
    +e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/am13/25wd/9wcnn/bG51/3l7gf9ucHf/
    +c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/
    +bG95/3Bzff9sbnX/cHJ5/25xeP9ucHn/bG52/2tudv9nanT/am12/3F0fv9pbHX/bXB6/2psdP9nanH/
    +Y2Zv/2Zpc/9ucHf/am13/25xe/9ucXv/b3J7/2Zpcv9rbnf/bW94/29yfP9ucXr/b3J6/21vdv9vcXj/
    +bG93/2lsdP9rbXb/bXB4/21wev9nanP/aGt0/2Fkbf9gY2z/amxz/2dqcf9oa3X/cnV8/2Zocf9qbXb/
    +a212/2xudf9sbnf/bW92/3Byef9ucHn/b3F4/2psdf9ucXv/bnF6/29ye/9sb3n/bW94/25wdf9xc3r/
    +bnF3/3F0e/9vcnv/bXB4/3J0fP9ucHf/cHJ5/21wev9ucXv/amx1/2ptc/9tcHj/b3F4/3J0ef9tb3b/
    +bXB4/3Bze/91d33/dHZ+/3Bze/9wcnn/b3F4/3h6gv93eH3/dHZ7/3Z4f/92eYL/d3qB/3d5gv90d3//
    +eXyF/3t+h/99f4f/e32G/31/hf98foX/fYCI/3p9hv9+gIb/e32E/3V3fv95e4P/enyD/3d5f/95e4H/
    +enyE/3l8g/97fYL/dnh//3V3fv92eYL/cnV9/3Fze/9sb3j/bnF5/3F0ff9zdXv/bXB5/3R2ff9rbXX/
    +amx1/2Rmbf9pbHX/aWx2/25wev9fYmz/Zmlz/2dqdP9kZ3H/Zmlz/2BjbP9maG7/XmFr/2Vocv9qbXf/
    +Y2Zw/2Zpc/9oa3T/b3F5/2dqdP9maXP/ZGdx/25wd/9kZ3H/Zmlz/2Zpc/9oa3T/cXN6/3N1fP9rbnj/
    +bnF6/2xvef90dn3/cHN7/2ttdf90dn3/b3J6/3V3ff9vcnv/dHd//3Byef9ucHf/cnV+/25xe/93eX//
    +cHJ5/3N1fP9ucHf/cHJ5/2dqcf9ucHf/bnB3/3R2ev9sbnb/a211/3N1fP9tb3T/bG51/25wd/9ucHf/
    +dXd9/2dqdP9sbnX/bW95/25weP9xdHz/bnF5/2xveP9xc3z/bnB3/2xudf9xdHz/bnB3/3F0ff9sbnf/
    +bnB5/29xeP92eH7/b3F4/3J0eP9xc3r/bG93/3Fzev9vcXr/am13/3N1fP9sb3n/cHN9/2xudf9zdX3/
    +dHZ9/3V4gP9ucXv/c3Z//3N2f/9sb3n/cHJ5/3R2fP9vcXr/dnh+/3FzfP9vcnz/bnF7/3N2f/9sb3n/
    +bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX//amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/
    +ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/bG95/2xudf9wc33/am13/2Zpc/9sb3n/
    +am13/25wd/9zdn//bnB3/25xe/9ucHj/b3F5/2hrc/9qbHT/Zmlz/2lsdv9rbnf/Z2py/25weP9xdHz/
    +bW90/2hrdf9sb3n/cHN9/2xvef9zdXz/c3V8/3Bzff9rbnf/b3J8/29yfP9ydX//dXd+/3R2ff9tb3b/
    +cnR6/2xveP9tcHr/bnB4/3J1ff9vcnz/bG52/3Fzff9oa3X/ZGdx/21vc/9tb3P/c3Z//3Z4f/9vcnr/
    +cXN7/3F0ff9wcnz/bnF6/3Bzff9ydX7/c3Z//3N2f/9sb3n/c3Z9/3J1fv9ydX//dnmC/3N2f/92eYH/
    +dXiB/3J1fv98foX/dHeB/3F0ff9ydX7/cHN8/3R3f/91d33/cHN8/29xef9vcXX/cHJ5/3Fzd/91d33/
    +bnB3/25xe/9ucXv/cnR6/3F0fP9xc3j/bG52/21wef90dn3/dXh+/21vd/90d3z/bnF4/29xef9wc3z/
    +bG95/3Bzff9xdH7/cnV+/25xev9wc3z/cnV+/3N2f/9wc3z/d3qE/3BzfP9rbnf/bnF6/3Byef9vcXn/
    +cnR7/29xef9ydHv/bW92/2hrcv9qbXf/am13/2xudf9tb3P/cnR8/3N1fP90dn7/c3V6/3N1fP91eH//
    +bXB4/3F0e/9rbXP/bXB6/2xvd/90dnz/aGt0/3J0e/9zdXz/bnB3/3N1fP9ucHf/bnB3/2ttdP9wc3n/
    +c3V7/3ByeP9wcnj/cXN5/3V3gP9ydHv/cHJ5/3Byef95e4H/bG51/2tud/9rbXb/bG95/25xe/9xc3r/
    +bG53/29xeP9zdXn/dHd+/3Fzef9sbnT/cnR9/3F0ff9ydHz/bW94/3V4f/9ucXn/bG94/21wev9wc33/
    +d3l//3Byef9wcnn/bW9z/25wd/9maG7/bG51/21veP90dnv/b3F6/21wev94eoH/cnV//3Fzev9sb3n/
    +cHJ5/3Z4fP9sbnX/bW92/25xe/9wc33/dnmA/3FzfP9wc3z/dnmD/3R2fv9vcnr/dniB/3Z4gf92eH3/
    +cnV+/3R3gf9ydHz/fH6E/3d5gP94eoD/c3Z+/2xveP9ucXr/bnF4/2Zpc/9sb3n/am13/25xe/9kZ3H/
    +cXN9/25xev91eID/bnF7/2xvef9zdXz/bW92/3Byef91d37/cXR9/3t9h/90d3//cXR9/3N2f/95e4H/
    +c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/f4GH/3d5f/93eoP/c3Z//3d6g/91d33/
    +foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn//am13/25xe/9ucXv/c3Z//3Bzff9qbXf/
    +c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bXB3/3V3ff9tb3j/bnF6/25xe/90dn3/cXN7/29yfP9vcnz/
    +cHN9/3Fzev9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9tcHn/aWx2/2xvef9rbXT/am13/21wef9vcnz/
    +am13/29yfP9nanT/bG95/2tueP9vcnv/bnF5/2tudv9ydHv/bG51/2Zpc/9vcXX/bnB3/3Bzff91eIH/
    +bG95/25xe/9ucXv/bG95/21vdv9ucHf/c3Z//3N2f/90d4D/bnF7/21wev9zdn//b3F4/3N2f/9ucXv/
    +c3V8/3N2f/9zdXz/eXuF/3Bzff9zdn//c3Z//3N2fv9zdn//eHqA/25xe/9tcHr/cnR8/3Byef9wcnn/
    +cHN8/3Byef9ucHf/bnB3/21vdv9wcnn/b3F1/2dqcf9qbXf/cHN9/3Bzff9qbXf/dHZ8/25wd/9ucHf/
    +cHJ5/21vd/9zdXz/bG95/3V4gf9ucXv/cHN8/3N2f/9ucXv/bnF7/3h7hf95fIX/dnh8/3x9gP99f4b/
    +foCG/3x9gf9+gIf/foCG/3d6g/93eoP/eXyG/3t9g/95e4H/dnh8/25wd/9ucXj/b3J7/3Fzev9ydHv/
    +eXt//3R2ff90dnz/bG94/3Byef9wcnr/dHd//3J0ff98foT/fX+F/3V3ff97fYP/dnh8/3Z4fv91dnv/
    +d3l+/3F0fP90d37/cHJ6/3V4f/90d4H/cHN7/3Byef9zdXz/dXiB/2ptd/9tb3b/bW92/29yev9xdH7/
    +b3F4/2lsdv9tb3f/c3V7/3N2f/9tcHr/bW92/3F0fv9ydX3/c3Z8/2xudf9ydX7/a210/2hrdf9maXP/
    +bXB5/3N1fP9wc33/am13/2xudf9sbnX/Z2px/2xudf9vcXX/cHJ4/2ttdv9ucXr/dHd+/29yd/9sbnb/
    +b3F1/3Bzff93eX//bnB4/2xvef9ucXr/cXN6/3Fzev9vcXj/bnB3/3h6gP9ydHv/bG51/29xeP9ydHv/
    +bW92/2tudf9ucHf/amxz/3N1fP9ydHv/bnF6/2dqdP9nanT/aGt1/2xvef9nanT/bG95/2ptd/9ucXv/
    +ZGdx/29xe/9xc3n/cnR9/2xvef9ucHf/c3V8/2xvef9tcHn/dHZ+/25xeP9zdn//a254/2ptdv9nanT/
    +bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/
    +Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/
    +Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/aWx1/2xudf9sb3n/cHN8/2tueP9ucHf/
    +bXB5/3J0fP9ucXb/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/cHN9/2ptd/9qbXf/Z2p0/2ptd/9sb3n/
    +bnF7/2Zpc/9qbXf/YmVu/2dqdP9laHL/aGt0/2lsdf9oanH/bW95/2dqdP9iZW7/bG51/2ptd/9rbnj/
    +bnF4/2Zpc/9naW//ZGdx/2Rncf9kZ3H/Zmhu/2ptd/9kZ3H/ZGdx/2BjbP9maG7/Z2p0/2Zpc/9nanT/
    +Z2p0/2dqdP9ucXv/bG51/3d6g/9qbXf/am13/2xudf9sbnX/cHJ5/3V3ff9ucHf/bnB3/25xe/9wcnn/
    +cHN9/3d6g/9zdXz/cHN9/3Byef9wc33/c3Z//3N1fP9sb3n/cHJ5/3d6g/91eIH/bnB3/3d5f/9ucXv/
    +bnB3/25xe/9ucXv/cHN9/3N2f/93eoP/dXiB/3d6g/9wc33/cHN9/2xvef94eX3/c3V8/25wd/91d33/
    +c3V8/3N2f/91eIH/c3Z//3Bzff9qbXf/Z2p0/2xvef9ucXv/bG95/25wd/9qbXf/bG51/2tud/9rbXT/
    +bG95/3V3ff9wc33/dHZ8/2tueP9sbnb/Z2p0/2ttdf9oanP/amxz/2ptd/9maG7/bG95/2dqdP9sbnX/
    +amx0/21weP9rbXb/bnF6/2xvef9zdXz/b3J8/25xe/9zdn//eXuB/36Biv9wcnn/cHN9/3F0fP9ydX3/
    +bnF6/2ptd/9laHL/bW92/3N1fP9xdH3/b3F4/3Bydv9tcHr/dXd9/3h5ff9vcXj/eHqB/25xev9ucHf/
    +am11/3Fzev91d33/cHJ5/29xdf9ucHf/bnF7/2dqdP9rbnj/b3F4/3Bze/9rbnf/b3J8/3Z5gv9xc3v/
    +a253/25wd/9ucHf/d3qD/29xd/9sb3n/bXB6/3J0e/9tcHr/am13/2ptd/95e4H/cHJ5/2psc/9ucXv/
    +cHJ5/25wd/9sbnX/bnB3/2dqcf9zdXz/c3V8/25xe/9qbXf/am13/2Zpc/9ucXv/YmVu/2Zpc/9kZ3H/
    +am13/11gaP9rbnj/bG93/21wd/9tcHr/am13/2xvef9sbnX/a253/3R2fP9tb3P/dXd+/2lsdv9pbHX/
    +Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/bG51/2xvef9zdn//amxz/2xudf9qbHP/
    +bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/bG95/25xe/9maXP/bG51/2xudf9ucXv/
    +bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/29xd/9zdXz/cnR7/2tudv9sb3n/bnF7/25xe/9qbXf/
    +c3V8/3J0e/9wc3v/b3F4/3N1fP9wc33/e32D/3t9g/9+gYr/eXuB/3N1fP9sbnX/bnB3/2xudf9wcnn/
    +bnF7/3Bzff9qbXf/bG95/2Zpc/9sb3n/bnF7/3R2e/9ucXn/bG51/3Fzev9ucHf/Z2p0/25xe/9zdn//
    +b3J8/3Byev9rbXT/aGtx/2dqcf9kZ3H/ZGdx/2Zobv9nanT/am13/2Zpc/9kZ3H/Zmhu/2xvef9nanT/
    +bG51/2Zpc/9qbXf/bnF7/2ptd/93eoP/bnF7/2xudf9ucHf/c3V8/3N1fP9zdXz/bnF7/3N2f/9zdn//
    +c3Z//3N1fP93eoP/bnF7/25xe/9sb3n/bnF7/2xvef9sb3n/Z2px/2xudf9zdXz/cHJ5/2xudf9zdXz/
    +bG51/2ptd/9sb3n/bG51/2ptd/9qbXf/am13/2dqdP9sb3n/ZGdx/2dqcf9nanH/bnB3/2ptd/9maXP/
    +bG95/2ptd/9qbXf/bnF7/2ptd/9qbXf/Z2p0/2Zpc/9qbXf/bG95/2xudf9sb3n/bnB3/25wd/9ucXv/
    +bnB3/3V3ff91eIH/dXd9/3Z4fP9ucHf/bG92/2hrcv9xc3r/a252/25wdv9ydX7/cHJ5/3Bzff9sb3n/
    +b3J5/2tudv9xc3r/bG51/3V3e/9ydHv/c3V8/3N1fP9ucHf/bW92/3V3ff91eIH/amxz/2xudf9tb3b/
    +b3F2/25weP9tb3b/amxz/29xdf91d33/c3V8/2xvef9wcnn/bnF7/3l7gf95e4H/cHJ5/3d5f/9ucHf/
    +bnB1/2lsdf9ucHr/bG95/25xe/9qbXf/am13/3N1fP9sbnX/bW93/2xvef9vcXj/ZWhy/2ptd/90dnz/
    +bnB1/2psc/9sbnX/bG51/3d5f/9tb3T/bW92/21vdv9rbnf/a254/2xudf9sbnX/eXyG/3Byef9sbnX/
    +bnB3/25wd/9sbnX/bG95/2xvef9nanH/dXd9/3Z4fP91d33/cHJ5/3Byef9ucHf/c3Z//2psc/9zdXz/
    +cHJ5/3N1fP9maG7/cHJ5/3Byev9wcnr/b3J7/2xudf9wcnn/bG51/2tud/9ydHv/bG52/3d5f/9tcHj/
    +cHN8/3N2fv91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/bG51/25wd/9zdXz/d3l//2ptd/9qbXf/
    +bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/
    +bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9tb3b/cHN9/3F0fP9xc3r/cnV+/3d6g/9zdn//
    +cHN9/3R3gP90dn7/b3J6/25wd/9ucXv/cHJ5/3l7gf93eX//e36H/3d5f/91d33/bG51/25wd/9sb3n/
    +cHN9/3N1fP9zdXz/bnB3/3V3ff9sbnX/cHJ5/3Byef9wc3r/aWx2/2VocP9kZ3H/ZGdx/11gav9kZ3H/
    +Zmlz/2dqc/9rbXb/ZWhy/2ZpcP9nanH/bG95/2ptd/9sbnX/c3V8/3Byef9zdXz/bG51/2psc/9qbXf/
    +Z2px/2psc/9maXP/Z2p0/2xvef9sbnX/eXuB/3Byef9ucHf/bG51/3Byef9wcnn/bnB3/2xudf9ucHf/
    +bG95/2xudf9nanH/bG95/2dqcf9nanT/ZGdx/2Zpc/9sbnX/bG51/2Rncf9nanT/bnF7/2xvef9qbHP/
    +dXd9/2ptd/9nanH/bG95/2dqcf9ucXv/bG95/25xe/9wcnn/bnF7/2xvef9qbXf/bnF7/3V3ff91d33/
    +b3F1/3Byef9wcnn/bnB3/25xe/9sbnX/am13/2psc/9qbHP/bnB3/25wd/9sbnX/bG51/3N1fP9sbnX/
    +bG95/21vc/9zdXz/dXd9/25xe/9wc33/am13/2dqdP9dYGn/aWx1/2ptdf9sbnP/b3F4/2xudf9ucXv/
    +bG51/29xeP9rbXX/bnF5/21wef9ydHv/dHZ8/3R2ff9wcnn/bW92/2xvef9wc33/d3qD/2xudf9rbXX/
    +a253/3Fzev9vcnv/b3F4/2xvef9vcXX/c3V8/3Byef9ucHf/bW9z/2xudf91d33/c3V8/21vc/94eX3/
    +b3F1/25wdf9qbHL/cnR7/3N1fP9zdn//bnF7/25wd/9zdn//bG95/3Byef9vcnr/cXN5/21vdv9ydHv/
    +dniB/3J0e/9wc3z/cHN9/3N1fP99gIn/b3F4/21wef9ucHf/bnB3/25wd/9nanT/bG51/3l7gf9ucXv/
    +bG51/25wd/9ucHf/Z2p0/2ptd/9qbXf/ZGdx/2xvef9ucXv/Zmlz/2Zpc/9nanT/Zmlz/2xvef9qbXf/
    +c3Z//3V3ff91d33/amxz/3Fze/93eX7/dXiC/3N2f/9wc33/eXuB/3J0e/9vcnz/cXR+/2ttd/91eH7/
    +bG92/3Byef90dnz/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/
    +bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/
    +bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/aGty/2hrdf9tb3b/Z2py/2lrcv9sb3n/
    +Z2p0/2Zobv9rbnj/bG95/2dqdP9jZm//ZWhy/2Rncf9sb3n/Zmlz/3Bzff9zdXz/dXiB/3Byef93eoP/
    +cHN9/3l8hv97fYP/e32D/3V3ff99foH/dXd9/3l8hv95fIb/e3yB/3l8g/9ydH3/b3J7/25wd/9qbXf/
    +bnB3/3Fzev92eH7/eXp//3p8gv92eH7/dXd9/3d6g/93eoP/dXd9/3d6g/9zdn//d3qD/3N1fP9wcnn/
    +c3Z//3N1fP9zdn//c3V8/3Bzff91eIH/bnB3/3d6g/9wc33/bnF7/3Byef9wc33/dXd9/2ptd/9sb3n/
    +bW9z/25wd/9ucHf/bnB3/3h5ff9ucHf/dXd9/2xvef9ucHf/bW9z/25wd/9nanH/bG51/3Z4fP91d33/
    +b3F1/3Z4fP9vcXX/bW9z/3N1fP9qbXf/cHN9/2xvef9wcnn/dXd9/3Byef9sb3n/amxz/25xe/9wc33/
    +bnF7/2psc/9qbXf/Z2p0/2Zobv9maXP/ZGdx/2dqcf9kZ3H/Zmlz/2psc/9qbXf/amxz/2psc/9zdXz/
    +bnB3/2xudf9sbnX/bnF7/3N1fP9zdXz/dXd9/3N1fP9sbnX/ZWdt/2psdv9rbnj/a252/29yfP9sb3n/
    +cHN9/2xvef9wcnn/aWxz/3Byef9tcHn/dHZ8/3R2fP9zdXz/cXN5/21wef9vcnv/dXiB/3t+h/9zdXz/
    +b3F4/21wef9xc3r/am12/2hrdf9maXP/am13/25xe/9sb3n/bG51/2ptd/9qbHP/cHN9/3Bzff9sbnX/
    +c3V8/21vdv9wcXf/c3V8/3t9g/97fYP/fX6B/3l7gf92eHz/foCG/3h5ff91d37/dHZ8/3Fzd/9ucHj/
    +cXN6/3d6gv9vcnv/bG95/3Bzff9wc33/en2G/3N1fP9xdH3/cXN5/25xeP9xc3n/bG51/29xdf91eIH/
    +bnF7/2dqdP9sbnX/bnB3/2psc/9sb3n/bnF7/2Zpc/9sb3n/c3V8/2xvef9wcnn/dXd9/2xudf9zdXz/
    +Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dHd//3N0e/9tcHT/bnB3/3N1fP9qbHP/bG95/3N1fv9rbXf/
    +dXd9/21vdf9zdXz/dXd8/3N1fP9sb3n/Z2p0/3V3ff91d33/bnB3/2xvef9sbnX/bnB3/25wd/91d33/
    +bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/
    +bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/bnB3/21vdP9wcnr/cXN5/21vdf9ucHf/
    +c3Z//3N1fP9sb3n/cnR7/3N1e/9rbXT/aWx2/2xudf9nanT/c3V8/2xvef91d33/dXd9/2Rncf9kZ3H/
    +Zmlz/2Jlbv9nanT/Z2p0/2Zpc/9kZ3H/Zmlz/2Rncf9qbXf/bG95/25wev9xdHz/bW93/29xef9sbnX/
    +am13/25wd/9vcXn/cnR7/3ByeP9ydHv/bnB3/2xvef9zdn//bG95/25wd/9wcnn/cHJ5/3Bzff9qbXf/
    +bW9z/25wd/9tb3P/bnB3/25wd/9sbnX/cHJ5/21vc/91eIH/cHN9/3N2f/93eoP/d3qD/3d5f/9wc33/
    +cHJ5/21vc/9ucHf/cHJ5/21vc/91d33/b3F1/3V3ff9sbnX/bnB3/29xdf9sbnX/Zmhu/2xudf91d33/
    +c3V8/29xdf93eX//b3F1/2xudf9ucXv/Z2p0/3Bzff9sb3n/bG95/25xe/9ucXv/bG95/2psc/9wc33/
    +cHN9/3N1fP9sbnX/cHJ5/3N1fP9sb3n/bnF7/25wd/9ucHf/bnB3/2xudf9vcXX/bnB3/2xvef9sbnX/
    +d3qD/3Bzff9zdn//c3Z//3d6g/95e4H/dXiB/3l7gf91eIH/am13/2ptd/9xc3r/bnB2/2xudf9ucHf/
    +bW9z/3V3ff9ucHf/cHJ5/2lsc/9ucXv/b3F6/3V3ff90dnz/b3J7/3Byev9vcXj/b3F4/3V3ff93eX//
    +bG51/2hrdf9rbnj/bXB4/2Zpc/9rbXT/ZGdx/2dqdP9wcnn/am13/2dqcf9nanT/ZGdx/2Zpc/9maXP/
    +Zmhu/2dqdP9jZm//aGpx/2hqcv9wcnr/cHJ5/3Byef9ucHf/bnB3/2xvef9ucHf/bW91/25xe/9qbXb/
    +Zmlz/2lrdP9wcnr/bXB0/2dqcf9sbnX/bW9z/3Z5gv9tb3b/a254/21vd/9tb3b/c3V8/2xudf9vcXX/
    +d3qD/3V3ff9ucHf/cHJ5/3Bzff9qbXf/bnF7/25wd/9qbHP/c3V8/3Z4fP9ucHf/cHN9/3Z4fP9ucHf/
    +bnB3/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/21wev9xdHr/bnB4/25wd/91d33/bXB3/29xef9ydX7/
    +a213/3h6fv9vcXf/cnV9/3h6gP93eoP/c3Z//25xe/9+gIb/foGK/3l7gf97fYP/d3l//3t9g/93eoP/
    +foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/e32D/3N1fP9wcnn/cHJ5/25xe/9zdn//
    +c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/dXiB/3Bzff9wcnn/bXB6/3Fze/9ucXr/
    +bnB3/3N2f/9ucXv/bG95/3BzfP9xdH3/bnF5/2xvef9ucHf/cHJ5/3h5ff9wcnn/foCG/3t9g/9qbXf/
    +am13/3Bzff9qbHP/bG95/2xvef9nanT/amxz/2xvef9maXP/bnF7/3Bzff9wc3z/cXR+/25xeP9vcnz/
    +c3V8/2ptd/9qbXf/b3F5/3J0ev9vcXf/am13/2dpc/9nanT/cHN9/2xudf9sbnX/cHN9/25xe/9wc33/
    +Zmlz/2xudf9qbXf/amxz/2dqcf9kZ3H/Zmhu/2dqcf9qbHP/cHJ5/2ptd/9qbHP/am13/2Zpc/9sb3n/
    +amxz/2ptd/9nanT/amxz/25xe/9qbXf/c3V8/2psc/9sb3n/Zmlz/2psc/9qbHP/amxz/2Jlbv9maXP/
    +bnF7/2xvef9sbnX/dXd9/2psc/9sbnX/cHJ5/2xudf91d33/bnB3/2xvef92eHz/bnB3/25wd/9tb3P/
    +eHl9/3N1fP9zdXz/cHJ5/3N1fP9zdXz/bnF7/25xe/9sb3n/bW9z/2xudf9ucHf/bG95/25wd/9wcnn/
    +b3F1/3Byef9qbXf/bG95/2ptd/9wc33/cHN9/2xvef9wc33/bG95/2Jlbv9hZG3/bG51/21wef9qbXf/
    +bnB6/3Byef91eIH/bnB3/2xvef9naXP/cHJ5/29xef91d37/dHZ9/25xev9vcXr/bnF4/3Byef91d33/
    +d3l//25wd/9vcXj/cHJ5/3F0e/9ucHf/b3F4/25wd/9wcnn/dXd9/25wd/9qbHP/bnF7/3Byef9sb3n/
    +bnF7/2xudf9wc33/b3F1/21vdv9sb3b/dXd9/25wd/9zdXz/bnB3/2xudf9sbnX/bW9z/2hrdP9wc3v/
    +bXB6/2ptdP9qbXT/c3V8/21vdf9iZW7/ZGdx/2dqcf9ydX7/a211/2tueP9rbnj/bXB3/3N1fP9sbnX/
    +bnB3/3t9g/91d33/bnB3/25xe/9zdn//am13/3Bzff9sb3n/bG95/3Bzff91d33/cHJ5/3N1fP91d33/
    +bG51/3Byef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9xdH7/dnh+/3F0fv9wcnn/dXd9/2xudf9vcXf/
    +dHZ8/21veP91d37/bW92/21wev90dnz/c3V8/21vc/9ucHf/dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/
    +bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/
    +cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/eXyG/36Biv91eIH/dHeA/3Fze/9wc3v/
    +a252/2hrcv9maXP/YmVu/2Zobv9nanP/bG94/2xudv9pbHb/cHJ5/2ptd/91d33/bG95/36Ahv97fYP/
    +am13/2xudf91d33/amxz/3V3ff9wc33/bG95/2xudf9zdn//Z2p0/3N2f/91d33/cnR7/3Byef9ucHf/
    +cHJ5/2xvef9maXP/amxz/29xef9vcXj/cHJ3/25wev9qbXf/Zmlz/3Bzff9sbnX/am13/3Bzff9ucXv/
    +cHN9/2ptd/9sbnX/bG51/2psc/9qbHP/Zmlz/2dqcf9nanH/bG51/3V3ff9wc33/bG51/3N1fP9sb3n/
    +c3V8/2xudf9wcnn/am13/21vc/9zdn//cHN9/3d5f/9vcXX/dXd9/2psc/9ucXv/bnF7/25xe/9nanH/
    +bG95/3V4gf97fYP/c3V8/3l8hv9wcnn/cHN9/3N2f/9ucHf/dXiB/3N2f/9wc33/eXuB/3Bzff9ucXv/
    +bG95/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/25wd/9qbXf/am13/21vc/9qbXf/am13/2xvef9sbnX/
    +cHJ5/25wd/9wcnn/cHJ5/25wd/9wc33/dXd9/3l7gf91d33/dXd9/3Bzff9sb3n/am13/3Bydv9tb3b/
    +am13/2ptd/9sbnX/dXd9/25wd/9wcnn/Z2px/3Byef9ucHn/dHd//3d4ff9vcXj/cXN5/2tud/9sb3n/
    +c3V8/3V3ff9sbnX/aGt1/21wev9tb3j/Zmlz/2hrdf9maXP/cHN9/3Bzff9qbXf/Z2p0/2xvef9ucXv/
    +bG51/25xe/9qbHP/bG95/2xudf9ucXr/aWx0/3J0e/9sbnX/cHN9/25xe/9nanT/bG95/2xudf9sbnX/
    +c3V9/3R2fv9tcHr/cHJ3/3R2fP9wcnn/am13/2dqdP9ucHf/dnmC/25xe/9ucXv/bnF7/25xe/91d33/
    +bnB3/29xdf93eX//cHN9/2ptd/9qbXf/cHN9/2Rncf9sbnX/Z2p0/2Rncf9nanT/bG95/2Zpc/9maXP/
    +bG95/2dqcf9qbXf/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/a212/3N1e/9zdXz/b3F1/3d5f/9tcHr/
    +cXR8/3Z4gP9ucXr/dnh//25wdf9ucHf/dXd9/2xvef9qbXf/bG51/3V3ff93eX//bG95/3Byef9ucHf/
    +bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX//am13/3Bzff9wc33/bW9z/2ptd/9nanT/
    +am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/Z2px/2ptd/9zdXz/bG95/2xvef9sbnb/
    +cHJ6/21wev9sb3n/bnF7/2xvef9ucXv/dHeA/3Z4f/9xdH3/am13/3Bzff9zdXz/e32D/3V4gf+Fh43/
    +f4KM/25xe/9sb3n/d3l//2xvef93eX//cHN9/3Bzff9zdXz/dXiB/2xvef94eoH/dnh+/25xev9ucXr/
    +aGp0/2dqcf9nanT/XWBq/2Rncf9qbXb/bG93/21vd/9ucXj/bG51/2psc/9zdXz/Z2p0/2xvef9sb3n/
    +bnB3/25wd/9qbXf/am13/2psc/9sb3n/bG51/2ptd/9sbnX/am13/2xudf93eX//eHl9/3Byef91eIH/
    +c3Z//3d5f/9ucHf/c3Z//25wd/9ucHf/c3Z//25wd/93eX//bnB3/3Z4fP9nanH/bnB3/29xdf9ucHf/
    +Z2px/2psc/91d33/c3V8/2psc/91d33/amxz/2psc/9sb3n/ZGdx/2dqdP9maXP/Zmlz/25wd/9qbXf/
    +Z2p0/2ptd/91d33/bnF7/25xe/9tb3P/dXd9/3Bzff9ucXv/cHJ5/25xe/9ucHf/bnB3/3Byef9zdn//
    +c3Z//3V4gf9wcnn/eXuB/3l8hv91eIH/e32D/3t+h/97fof/eXuB/3l7gf93eoP/bnF7/2ptd/9xc3r/
    +cnR7/2xvd/9tb3f/bnB3/3N1fP9sb3n/cHN9/2dqdP9wc3v/cXN8/3V3ff92eHz/bnB6/3Bye/9tcHj/
    +bnB3/3V3ff94eX3/b3F1/21vdv9tcHr/bnF5/2tueP9qbXf/Z2p0/3N1fP9sb3n/amxz/2dqdP9sb3n/
    +bG95/2psc/9nanT/Z2px/2xvef9maG7/Zmly/2Rncf9ucXr/bG51/3Bzff9ucXv/Z2p0/25xe/9sbnX/
    +Z2p0/2hrdf9oa3X/ZWhv/2Rmbv9maXP/a254/2dqdP9iZW7/Z2px/29xeP9maXP/aWx0/2ptd/9rbnj/
    +cHN9/2ptd/9qbXf/d3qD/3N1fP9sbnX/bnB3/3Byef9sb3n/bnF7/3Byef9ucHf/bG95/3V3ff9sb3n/
    +bnB3/3Z4fP9vcXX/dXd9/2BjbP9sb3n/cHN9/2xvef9tb3P/b3F4/21wev9xdH3/bnF7/2xvef93eX//
    +bG95/2xud/90dnz/bG94/3Bzff9rbnb/bG95/3V3fP9ucHf/bnB3/2psc/92eHz/dXd9/25xe/9ucXv/
    +bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/d3qD/2xvef9wc33/cHN9/25wd/9ucXv/
    +bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/
    +bG51/29xev9rbnj/cnV+/3Bzff9ucXv/bG95/3J1fv91dnv/cHN6/2hrdf9oa3X/Z2p0/3V3ff9ucHf/
    +fX6B/3d5f/9wcnn/bnF7/3Z4fP9ucHf/dnh8/2xvef9ucXv/Z2p0/2ptd/9kZ3H/bnF7/3Byef9pa3T/
    +bG95/2dqc/9sbnX/am13/2dqcf9qbHP/bnB3/21weP9tb3f/cnR7/25wd/9nanT/cHN9/2Zpc/9qbHP/
    +amxz/2ptd/9ucXv/Z2p0/2xvef9qbXf/bG95/2xudf9nanT/Z2p0/2xudf9maXP/bnB3/2xvef9maG7/
    +am13/2xvef9ucXv/Zmlz/2dqdP9maG7/Zmhu/2ptd/9nanH/c3V8/2psc/9zdXz/ZGdx/2ptd/9qbHP/
    +amxz/2Jlbv9maXP/bnF7/3N1fP9nanH/cHN9/2psc/9sbnX/bG95/2psc/9sb3n/am13/2xvef92eHz/
    +cHJ5/3Byef9ucHf/dXd9/25wd/9wcnn/bG51/3N1fP9wcnn/cHJ5/29xdf9vcXX/bG51/25wd/9sb3n/
    +bnF7/2xvef9ucHf/bG51/25wd/9zdXz/bG51/3Bzff93eX//d3l//3V4gf9wc33/c3Z//2dqdP9nanT/
    +b3J7/21wef9sb3f/bW91/25wd/9zdXz/bG95/3N1fP9qbHP/cHJ5/3Bzff91d37/eHl+/3V3ff9ydHn/
    +bnF6/3Byef91eIH/eXuB/3N1fP9xc3r/cnV+/25wef9ucHf/bG51/2xudf9wc33/dXd9/25wd/9sbnX/
    +c3V8/3V3ff9tb3P/bnB3/21vc/9ucXv/am13/21vdf9qbHH/cXN6/21vc/92eHz/c3V8/29xdf9ucXv/
    +am13/2xvef9xdHv/cHN8/21vdv9tb3j/b3J8/3R3gP9qbXf/am13/25wd/91d3v/cXN3/3Byd/9tb3j/
    +bG95/3h5ff9ucHf/bnB3/3l7gf9zdXz/amxz/2ptd/9wc33/Z2p0/2ptd/9qbXf/Zmlz/2xudf9wc33/
    +bG51/2psc/9wc33/amxz/25xe/9sb3n/dXiB/3t9g/91eIH/dXd9/3h6gP91eH//dnh+/25xev9qbXf/
    +cHN9/2hrc/9sb3f/dnh9/21wev90doD/cnV9/3V4gf96fIL/d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/
    +bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/
    +bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/
    +dHZ9/21vdv9xc3r/cXN7/3Byef9wc33/cHN9/29ye/9ydX7/cnR7/21vdv9sbnX/cHJ5/2dqcf94eX3/
    +bG95/3t9g/91d33/cHJ5/25wd/92eH7/bnB3/3h5ff9wc33/cnV+/21wd/9rbnj/bG95/29yfP91d33/
    +bnB4/21wef9rbXf/bG51/2ptd/9kZ3H/Z2p0/2xveP9tcHj/a253/3Fze/9sbnX/Z2px/3R2fP9qbHP/
    +bG51/25wd/9wc33/cHN9/2xudf9wc33/bG51/2ptd/9sbnX/Z2px/2xudf9qbXf/bnB3/3Z4fP9wc33/
    +bG95/3V3ff9zdn//c3Z//25wd/9ucXv/bnB3/25wd/9zdn//bG95/3V4gf9ucHf/dXd9/2ptd/9zdn//
    +bnB3/3Byef9nanT/bnB3/3V4gf93eoP/bG95/3V3ff9tb3P/bG51/3Byef9tb3P/bnF7/25xe/9ucHf/
    +dnh8/3N1fP9qbXf/amxz/3Bzff9ucXv/c3V8/2xudf9zdXz/bG95/2xudf9qbHP/am13/2ptd/9qbXf/
    +am13/25wd/9ucHf/c3V8/2xvef9sbnX/dXd9/25xe/91eIH/eXyG/3l8hv93eoP/c3Z//3V4gf9ucXv/
    +bnF7/3V4gf9wcnr/cHJ3/3BzeP9vcXX/dXd9/25wd/9wcnn/bG51/25weP91d3//dnmA/3h7hf9zdoD/
    +dnh+/29yfP9ucXv/c3Z//3d5f/9wcnn/bnB0/3Fze/9ucHj/bnB4/29xdf9vcXX/c3V8/3N1fP9ucHf/
    +amxz/3N2f/91d33/bG51/3Byef9sb3n/bG95/2xudf9sbnX/ZGdv/3Fzff9qbHP/dXd9/25xe/9nanT/
    +bG95/2ptd/9qbXf/bXB4/21wef9sb3j/am1z/25wd/9wc33/ZGdx/2dqcf9ucHf/dnd8/29xef9ucHn/
    +bG94/25wd/94eX3/bnB3/3Bzff97fof/dXd9/2psc/9sbnX/dXd9/2xudf9sbnX/bnB3/2xudf9sbnX/
    +dnh8/25wd/9ucHf/dXd9/25wd/9zdXz/YGNs/2xudf9sb3n/amxz/2psc/9rbnj/bG51/3Fzef9wcnn/
    +bG95/3l7gf9ucHf/bnB5/3d5gf9vcXj/c3Z//2xvdP9pbHX/am13/2dqdP9maG7/Zmlz/3Byef9zdXz/
    +bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/bG51/21vc/91d33/am13/2xvef9zdXz/
    +bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/
    +bnB3/3V3ff9tb3b/b3F5/25weP9vcXj/bnB3/3ByeP9ucHb/cHJ5/29yfP9vcnz/bG54/29ye/9qbXf/
    +dXiB/3N2f/9/gYf/eXyG/3h6gP93eX//fH6E/3J0e/95fIX/c3Z//3R3f/9wcnj/bXB5/25wd/9zdn//
    +dHeB/3F0fP9xdH7/bnB3/3Byef9zdXz/bG95/2xvef90dn//cnV//29yfP91d33/cHJ5/21vdv91d33/
    +bnB3/3Byef9vcXv/dnh9/3V3ff9ucXr/dnl//3N1fP9ydX//bG95/2xveP9vcXj/cXR9/29ye/94eoH/
    +d3qD/3N2f/96fIL/enyC/3t9g/91d3z/dnh//3Z4fv9zdn//enyC/3V3e/9+gIb/enyC/31+gv9zdXz/
    +eXuB/3h5ff91d33/cHJ5/3d4ff96fIP/gIKJ/3V4gf94eoH/d3mC/3V3ff93eYL/cHJ5/3Z5gv91eID/
    +cHN9/3p8gv91eID/cHN9/3N1fP93eoP/c3Z+/3Bzff9sb3n/c3Z//3Bzff9vcXX/bG51/25wd/9qbXf/
    +Z2pz/2xudf9wcnn/bnB3/3N1fP9sbnX/bG51/3V3ff9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9wc33/
    +bG95/2xudf9wcnn/b3F2/2xudf9rbnj/bG51/25xe/9qbXf/bG51/2Jlbv9pa3X/b3J6/3J1ev91d37/
    +cnV+/3Byef9sb3n/bG92/3Bzff91d33/Z2p0/2lsdf9tcHr/bG93/21wef9ucHf/b3F1/3V3ff91d33/
    +cHN9/2xvef91eIH/dXd9/25wd/9wcnn/cHJ5/3Byef9ucHf/cHJ5/2lrc/92eYD/bG95/3l7gf91d33/
    +bnB3/25xe/9sb3n/bG95/3J0e/9xc3j/bnF5/2lsdP9sbnX/bnF7/2Jlbv9maXP/bG51/3J0e/9sbnf/
    +a252/25wd/9ucHf/dnh8/2xudf9ucHf/dXiB/3Bzff9nanT/bnB3/3Z4fP9sbnX/bG51/25wd/9qbXf/
    +am13/3Bzff9qbXf/am13/3V4gf9tb3P/cHJ5/2dqdP9sb3n/c3V8/3Byef9ucHf/dHeA/3Bzff91d3//
    +dHeB/2xvef95fIb/cHJ5/25xev93eYD/bW92/3R3f/9vcXj/bW92/3N1fP9wcnn/bnB3/2xvef91d33/
    +dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/
    +cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/
    +cHN9/2dqdP9sb3n/aGt1/25weP9tcHf/cHN7/21vdv9ydXz/cHN7/3ByeP9ydHz/am12/2dqdP9rbXT/
    +ZGdx/2xvef9qbXf/c3Z//3N1fP9xdHz/b3F4/3Z4fv9ucHf/dnh9/29xeP9wcnv/bG51/2lsdP9sbnT/
    +bG93/3Byev9tb3b/cnR7/2xudf9ucHf/bG51/2dqcf9maG//bXB3/25wd/9tb3X/cnR6/29xev9rbnb/
    +cnR5/3J0ev9wcnv/cHN8/3N1fP92eID/cHN9/3J1fP9ucHj/cXR9/29xeP9vcXj/bnB4/29yef9ucHj/
    +d3h9/3BzfP9xc3r/dXd+/3J1fv91eID/bnF6/3N2gP9ucHf/b3F5/3J0e/9sbnb/dHZ7/2xvef9zdXz/
    +am12/3F0ff9sb3j/bG94/2Zobf9rbXT/cXN6/3l7gf9vcXb/cnV+/3Bze/9tcHn/cXN9/25wd/9wcnz/
    +cHJ5/2xvdv91d37/cHJ8/21vc/9ucHf/dHZ8/3J0e/9xdH3/bnB3/3J1fv9ydX3/bnB3/25wd/9ucHj/
    +bW93/2ttdP9sbnX/bG95/2xudf9pbHb/Zmlz/25xe/95e4H/c3V8/3V4gf97fof/e36H/3d5f/9wc33/
    +c3Z//25wd/9qbXf/dXd9/29xeP9sb3f/b3F3/25wd/91d33/bnF7/25xe/9sb3n/b3J7/3J1f/90d37/
    +dnh//3N2f/9ydH3/b3J7/25wd/9wc33/dXiB/25wd/9tcHr/dXd+/25xef9sb3n/bnB3/25wd/93eX//
    +dnh8/2xvef9qbXf/dXd9/3N1fP9ucHf/c3Z//3Bzff9wc33/cnV+/3N2f/9pbHT/dniA/25wd/91d33/
    +bnF7/21vc/9tb3P/bG51/2tueP9xdH7/cXN8/3Bze/9rbnj/a254/3N1fP9nanH/bG51/21vc/9zdnz/
    +b3J6/29xdv9ucHT/bnB3/3d5f/9vcXX/cHJ5/3V4gf9wc33/bG95/2xvef91d33/bG95/3Byef9wcnn/
    +bnB3/29xdf91d33/b3F1/25wd/97fYP/bnB3/3Byef9ucXv/c3Z//3d6g/9zdn//cHN9/3N2f/9wcnv/
    +cXR8/25xe/9kZ3H/dXiB/2psc/9laHL/c3V8/2hrdP90dn3/bnF5/2xvef9vcnz/bnF7/25wd/9sbnX/
    +bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/
    +dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/
    +cHJ5/3V3ff9sb3n/bW95/2hrdf9ucHf/bG52/21vd/9qbHP/bnB2/3J0e/9oanL/bG53/2hrcv9iZW7/
    +a210/2BjbP9nanT/am13/3V3ff9zdXz/cHN9/21vd/9wc33/a254/3h6gP9rbnf/bW95/2hrdf9iZW//
    +aWxz/2lsdP9tb3X/aWx2/25xe/9qbXf/bG51/2Zpc/9iZW7/YmVu/2ptd/9ucHf/bW94/29xeP9tcHr/
    +bnF7/25xef91d33/cnR7/3F0e/9wc3z/dHeB/3R3gP9ydHr/bnB2/3R2fP91d33/cXN7/3Fze/9zdn7/
    +b3J6/3J1fP9ydX3/dHZ9/3V3ff9xdH7/cnV//21weP9ydHz/bW92/29xeP9sb3f/bG51/25xef9sb3f/
    +cHN7/2ptdv9ucHn/a252/29xeP9kZ3H/aGt1/25xe/91eH//bG51/21wev9tb3b/bG53/29yfP9pbHb/
    +aWx2/2xud/9rbXX/cXR7/21wev9oa3P/a212/29yfP9vcXr/c3aA/25xe/9xdH7/bnB5/2xvdv9wcnr/
    +bnB4/2xvef9ucHj/bnB1/3Byef9vcXX/bnB4/2lsdf9wcnn/c3V8/2ptd/9sb3n/dXd9/3V3ff92eHz/
    +dXd9/25xe/9ucHf/bG95/3V4gf9zdXz/bW94/25xe/9ucHX/c3V8/25wd/9sb3n/Zmlz/21wdP9zdn3/
    +c3V7/3Z3fP9zdXz/cXN5/25wdv9sb3n/cHJ5/3V3ff9ucHf/b3F4/3R2e/9tb3b/a253/2hqdP9sbnX/
    +bnF7/2ptd/9nanH/ZGdx/25xe/9maXP/YmVu/2Rncf9nanH/Zmlz/2ptd/9oanT/Y2Zu/29ye/9nanT/
    +cHJ5/2dqdP9kZ3H/Zmhu/2Zobv9jZm//bG95/25xe/9sb3n/amxz/2ttdP9sb3n/ZGdx/2Zpc/9sbnX/
    +dHZ8/3Fzd/9tb3f/b3F2/29xdf95e4H/b3F1/3N1fP94eX3/c3V8/25wd/9ucHf/dXd9/2xudf9ucXv/
    +bnF7/25wd/9sb3n/c3V8/2xvef9wcnn/foCG/2xvef9wc3z/Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/
    +bnB3/3J0ev9ydHv/Z2px/3l7gf9ucHf/Z2p0/3l7gf9wcnn/eXuB/3J0ef9ydHv/cHJ5/25wd/9vcXX/
    +bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/
    +dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/dXiB/3d6g/9zdn//dXiB/25xe/9wc33/
    +dXiB/3V4gf9zdn//bG95/3N1fP9ucHj/cnV9/25xev9vcnv/a253/3Byef93eX//aGpu/3BzfP9tb3b/
    +aGt1/25wd/9nanT/cHN9/3N2f/91eIH/d3l//3R2fP9vcXj/d3mC/21wev93eoP/cnV+/25xe/9ydHv/
    +aGt0/3J1fv9wc33/dXiB/3V3ff97fYP/dnh8/3V4gf91d33/cHN9/2xvef9zdn//c3Z//3R3gf90dn//
    +eHqA/3p8gP92eH3/foCH/3x9gf90d4D/c3Z//3Z4gP93eoT/dHZ8/25wd/93eX//eHqA/3V4gP9zdn7/
    +dXeA/25wev9ucXr/cXR9/3R2ff9vcXr/bnF6/3J1ff9tb3b/cXN6/25wdv9ydHr/bnB3/21vdv9vcXf/
    +aWx1/3R2fP9vcnz/dHd+/3J0ff91eID/bXB6/3Fzev90d4D/eHuE/29yfP9vcnv/cHN9/3R3fv93eoL/
    +d3qC/3V4gP94eoD/d3l+/3l7gf93eX//cnV+/3N2gP93eYD/d3l+/3+Bh/93eYH/eHqA/3h6gv94e4L/
    +dXh//3l8g/91eH//dnh//3Fze/9ydHr/b3J6/3F0fv9wcnr/d3qD/3t9g/91eIH/d3qD/3t+h/97fof/
    +d3qD/3d6g/9wc33/bnF7/2xvef91d33/bG95/21wef9tcHr/bG51/3J1fP9ucHf/c3V8/25wd/9tb3f/
    +bXB6/29yev9xdH3/a253/21weP9tb3b/bG95/3N1fP93eX//bnB3/29xeP9ydHv/bW92/2tud/9qbXf/
    +bG95/3d5f/9wc33/am13/2Zpc/91d33/cHN9/2ptd/9ucXv/bG95/3Byef9ydHz/c3V7/2hqcv92eH//
    +am13/3V3ff9zdXz/bnB3/25wd/9ucXv/bW92/3Fze/9ydX3/cnR8/2xudv9vcXj/cHJ5/2dqcf9qbHP/
    +bG51/3N2f/90dnz/dHeA/3R2ff9ucXv/d3l//25wd/9zdXz/d3l//2xudf9qbXf/Z2p0/25xe/9nanT/
    +am13/2dqdP9qbHP/Z2p0/25xe/9qbXf/am13/3l7gf9tb3P/cHJ5/2BjbP9sbnX/cHJ5/2xudf9ucHf/
    +cHJ5/21wev9ydHv/dHeA/2Zpc/93eX//bnB3/2ptd/92eHz/bnB3/3p7gP9ydHr/cnV//25xe/9vcXX/
    +b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/
    +bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/
    +amxz/2ptd/9sb3n/bnF7/25wd/90dn3/bG92/25xe/9sb3n/aGt0/2Rncf9qbHT/c3V8/2RmbP9wc33/
    +cHN6/21wev9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/94eX3/bG95/3N2f/9wcnn/eXyG/3N2f/9wcnn/
    +bnB3/2ptd/9ucXv/c3Z//3Bzff9zdXz/d3qD/3Byef9ucXv/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/
    +bnF7/3N2f/96fIL/c3Z//32Aif95e4H/c3Z+/3Bzff9zdn//fYCJ/3d5f/92eH7/en2G/3p9hv92eYL/
    +dXiB/3V4gf90d4H/c3Z//3V4gf96fIL/b3F4/3Bzff9ydX7/cHJ5/3Bzff9wcnn/dHeA/25weP9ucHf/
    +bW92/2hrcf9xc3n/cHJ5/3Z4fP9ucXr/cHN8/2ptdv9qbXf/c3V8/3d5f/9qbXf/aGt1/2xudf9sb3n/
    +bG95/21wev9tb3b/a254/2hqcf9maXP/a210/2Vocf9nanT/a210/2hrcv9ucXv/a210/2Nmb/9naXP/
    +aGt0/2dqdP9maXL/Z2lw/2hrdf9kZ3D/ZGdw/2Zpc/9iZW//ZWhw/25xe/9wc33/bnB3/25wd/91d33/
    +d3l//3N2f/91d33/bnF7/2xvef9sb3n/dXd9/25wd/9ucHj/cHJ7/2xveP90dnz/bnF7/2dqdP9zdXz/
    +bG51/29xeP9ydH3/dHeA/3N1fv9maXP/a211/2xudv9qbXf/am13/3Bzff9vcnv/bXB6/2lsdP9sbnX/
    +bW92/2ptd/91d33/bnF7/2dqdP9nanT/cHN9/3N1fP9qbHP/bG95/2ptd/9qbXf/bnF6/25xe/9laHL/
    +bnF6/2Nmb/9qbXf/bG51/2Rncf9maXP/bG51/2xvef9qbXb/bG51/2ptdP9oa3P/c3V8/3Bzff91d33/
    +ZGdx/2psc/9tb3X/cXN5/29xef9sb3n/bG51/3d5f/9sbnX/cHN9/3d5f/9qbXf/Z2p0/2Zpc/9zdXz/
    +bW9z/29xdf9ucHf/amxz/21vc/9zdXz/cHJ5/3N1fP9+gIb/bnB3/3Bzff9kZ3H/bnB3/3N2f/9sb3n/
    +bnB3/29xeP9wcnn/cXN7/2xudf92eHz/cHJ5/2xudf9ucHf/eHl9/21vc/91d37/b3F4/29xeP9ucHf/
    +bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/c3Z//3+Bh/9zdn//d3qD/31+gf9zdn//
    +c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX//c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/
    +am13/25wd/9wcnn/bG51/25xe/9qbXf/bXB6/2ttdP9oa3P/aGty/2ttdf9nanT/c3V8/2dqdP9rbnj/
    +cXN7/2ttdP9kZ2//bW91/2dqdP9sb3n/cHJ5/3d5f/93eX//bG51/2xudf9wcnn/dXd9/2xudf9sbnX/
    +c3V8/25wd/9wcnn/bnF7/3Bzff9ucXv/bnB3/2ptd/9ucHf/bnB3/3Bzff9ucXv/eXyG/3V3ff93eX//
    +c3Z//3N2f/9wcnn/dXiB/3l7gf91eIH/cHJ5/3t9g/97fYP/foCG/3t9g/9ucXv/c3Z//3l7gf9wcnn/
    +eXuB/3Bzff9wc33/bG95/2Zpc/91d33/cHN9/2psc/9ucHf/bG95/3N1fP9vcXX/cHJ5/25wd/9zdXz/
    +am13/3V3ff9wcnn/bG95/2ptd/9kZ3H/bG51/25wd/9tb3P/cHJ5/25xe/9zdn//cHJ5/25xe/9zdXz/
    +c3V8/3d6g/9wc33/d3qD/3t9g/93eoP/d3qD/3t+h/97fYP/eHuF/31/hf96fIP/c3Z//3J1f/95e4H/
    +am13/3N1fP9wcnn/bG95/3R2fP9ydHv/dXd7/2dqcf9ucHX/bnB3/21vd/9ucXv/dnh8/2xudf9ucHf/
    +dXd9/3d5f/9zdXz/bnF7/2ptd/9qbXf/bG51/3N1fP9qbXf/bG95/2xvef9qbXf/dHZ8/2xvef9maXP/
    +dXd9/2ptd/9sb3j/cnR7/3F0ff9xdHz/Z2lx/21vdv9wcnn/bnB3/3N1fP92eHz/cHJ5/3Byef9sbnP/
    +am13/21vdv9wc33/dXd9/25xe/9qbXf/b3F1/3Z4fP9zdn//b3F1/3Byef9wc33/bnF7/3Bzff90dnz/
    +bG93/3R3gP9nanT/bnF7/25xe/9sb3n/bG95/3V4gf92eYL/c3V9/3N2fv9vcnr/b3F4/3d5f/91d33/
    +d3qD/2xvef9ucHf/b3F4/3J0ev9ucXv/cHN8/2xvef93eoP/bW9z/3Byef92eHz/am13/2dqdP9qbXf/
    +cHN9/2xudf9ucHf/bG95/2xudf9ucHf/dXd9/3Byef91d33/fn+D/25wd/9ydHz/Z2p0/25wd/9wc33/
    +bnB3/2xvef9sb3j/cXN5/21wev9nanT/bnF7/2psc/9nanT/bG51/3h5ff9vcXX/eXuB/3Byef9vcXn/
    +bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/
    +bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/c3V8/25xe/9zdXz/bG51/2xvef9sbnX/
    +cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/bW92/2ptd/9sbnX/Z2p0/3N1fP9nanH/
    +b3F5/3F0ff9sb3f/Zmhv/29xeP9sbnX/cHJ5/3V3ff97fYP/eHl9/21vc/9sb3n/c3Z//3N2f/9sb3n/
    +bnB3/25xe/9ucHf/bnB3/3N1fP91d33/bnF7/25wd/9ucHf/bG95/25wd/9ucXv/bnB3/3l7gf9zdXz/
    +eHl9/3N1fP9wc33/bG95/3N1fP9wcnn/cHJ5/2xudf9zdXz/dXd9/3V3ff9zdXz/Z2px/29xdf91d33/
    +b3F1/3V3ff9ucHf/c3V8/21vc/9maG7/cHN9/2xudf9nanT/Z2p0/2xudf9sb3n/am13/2dqdP9nanH/
    +am13/2Zobv9ucHf/Zmlz/2Zobv9gY2z/XWBq/2dqcf9nanT/YmVu/2Zpc/9kZ3H/ZGdx/2Jlbv9iZW7/
    +ZGdx/2Jlbv9maXP/Z2px/2dqdP9wcnn/Z2p0/2Rncf9qbXf/Z2p0/2Zpc/9maXP/Z2p0/2Zobv9qbHP/
    +am13/2Jlbv9maG7/ZGdx/2dqcf9sb3n/bG95/2xvef9nanT/bG95/2psc/9sbnX/bnF7/3N1fP9qbHP/
    +am13/25xe/91d33/bG95/2ptd/9nanH/amxz/2Rncf9qbXf/amxz/2tueP9rbnj/am11/3V3e/9wcnn/
    +amxz/3d5f/9sb3n/bnF6/3F0fv9xdH3/dHZ8/2dqcv9tb3b/cHJ5/2xudf9zdXz/dXd9/21wev9tcHr/
    +aWx2/2xvef9tb3n/dXiB/3d6g/9wcnn/bnB3/21vc/91d33/dXd9/2psc/9sb3n/bG95/3Byef9qbXf/
    +bnF6/2xudf9ydH3/am13/25wd/9ucHf/bG95/3Byef9zdn//dHeA/3J0fP9tcHj/bG53/3J0e/94eoH/
    +c3Z//3t+h/9sb3n/bG95/25xe/90dn3/bnB4/25wd/9tb3P/dXiB/2dqdP9nanT/cHN9/2xudf9nanT/
    +ZGdx/2xvef9qbHP/ZGdx/2dqcf9kZ3H/Z2p0/2xvef9sb3n/bG95/3t9g/9qbXf/c3V8/2Zpc/9sb3n/
    +cHN9/25wd/9wc33/bnB3/3ByeP9zdXr/bG95/3N2f/9wcnn/bG95/2xvef91d37/b3F2/3l7f/9xc3n/
    +bnB3/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/
    +bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/
    +b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/94eoD/cXN7/29xef9vcnf/bG95/2xveP9ydX7/
    +Z2p0/25xev9xdH3/a254/2RncP9rbnj/Z2p0/2xvef9wc33/c3Z//3N1fP9sb3n/cHJ5/3Fzff9ydX7/
    +b3J8/3Byef9ydX7/cHJ5/3Bzff90d4D/cHN9/3V3ff9vcXX/bG51/2xudf9tb3P/bnB3/2xudf95e4H/
    +cHN9/3R2fP91d3v/c3V8/2ptd/9sb3n/bG51/2xudf9qbXf/cnV8/3N1fP9wcnn/am13/2Fkbf9qbHP/
    +c3V8/2xudf9ydXz/am13/25xe/9sbnX/ZWhx/3N1fP9sbnX/bG51/2xudf9sbnX/bG95/2ptd/9ucHf/
    +b3F1/3N1fP9tb3P/dnh8/25xe/9sbnX/amxz/2Jlbv9qbHP/bG95/2Zpc/9qbXf/am13/2xudf9qbXf/
    +am13/2xudf9qbXf/cHN9/2xvef9ucXv/d3l//3V3ff92eHz/dnh8/3Byef9sb3n/bnF7/3Bzff9sbnX/
    +bW9z/3V3ff9qbHP/bnB3/2xudf9tb3P/c3V8/3Bzff9sb3n/Z2p0/2xvef9qbHP/bW9z/3N1fP92eHz/
    +cHJ5/25wd/91d33/c3V8/25xe/9wcnn/am13/25xe/9qbXf/cHN9/2xvef9tcHr/bXB4/21veP9zdoD/
    +bnF7/2xudf93eX//bG51/2tueP9wc3v/cnR7/3R2ev9naXD/bnB2/3N1fP9ucHf/dXd9/3V3ff9vcXj/
    +b3F5/2xuc/9ucHf/cHJ2/3N2f/93eX//cHN9/2xvef9sb3n/dXiB/3h5ff9ucHf/c3V8/3N1fP9wcnn/
    +bG95/3J1ff9sb3f/cnN5/2Vocv9qbHP/Z2p0/2BjbP9kZ3H/Zmlz/2dqc/9rbnT/aWtz/2Zob/9pa3L/
    +cHN9/2xvef91eIH/Z2lz/2xudf9sb3f/cXR7/2ptd/9sbnX/am13/3V4gf9kZ3H/am13/3Byef9maG7/
    +ZGdx/11gav9nanT/Zmhu/2Rncf9maG7/Zmhu/2Rncf9qbXf/ZGdx/2dqdP91eIH/YmVu/2dpc/9nanH/
    +cHN9/3V4gf9wcnn/bnF7/25xev9wcnn/c3V8/2ptd/9ucXv/am13/2dqdP9sbnP/dnd8/2tueP90d37/
    +cXN5/25xev9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/
    +cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/
    +c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/c3V8/2dqcP9sb3n/bW92/2xveP9sb3n/
    +dXd+/2ptd/9wc33/cnV+/2xvef9maHL/bXB6/2dqdP9ucXv/bnF7/3V3ff94eX3/cHJ5/21vdv90dnz/
    +bnF7/3F0fv9ydX7/cnV+/29xeP9vcnv/c3Z9/3N2gP91eIH/cHN9/3N1fP9zdn//d3qD/3d5f/91d33/
    +gIKJ/3p8gv92eYP/dXiB/3d6g/9zdX3/eHqB/3h7hP91d37/dHZ9/3p7gP97fYH/enyC/3R3f/9ucXr/
    +cnV+/3p8gv9ydHv/cnV9/3Byef90d4D/cnV9/29ye/94eoD/bnB3/29xeP9ucHf/bW92/21wev9rbnj/
    +bnB6/2tueP9xdHv/b3F4/3d4ff9vcXj/bnB3/2xuc/9iZW//bW92/2xvef9rbnj/dHeA/3J1fv9xdH7/
    +bW93/2xveP9ucHf/b3F4/3J1fv9vcnz/c3Z//3h7hf96fIL/eXyG/31+gv96fIL/enyC/3p8gv94e4X/
    +d3qC/3V3ff97fYP/d3l//3Z4f/92eHz/d3l//31+gv99foL/enyD/3d5f/96fIP/dXd9/3N2f/91d33/
    +eHl9/3Byef9wcnn/dXd9/3N1fP9wcnn/bnB3/2psc/9ucXv/bG51/2xvef9sb3n/aGt1/2lsdP9qbXX/
    +cnV+/25wd/9nanT/d3l//2xveP9rbnj/cnV9/2xvef9ucHf/X2Jr/2ttc/9tcHr/bnB3/3N2f/92eH//
    +bnF7/21wev9qbHX/bXB3/2ttdP9ucXv/d3l//2ptd/9maXP/bG51/3V4gf93eX//bG51/3N1fP9wcnn/
    +c3V8/2xvef9zdXz/am13/3J1ff9nanT/bG51/25xe/9kZmz/bG51/2xudf9ucHf/b3F1/21wd/9qbXX/
    +a253/3V3ff9ucXv/d3l//25wdP9tcHf/c3V9/3R3f/9wc33/b3F1/2xudf97fYP/bG51/25wd/92eHz/
    +b3F1/25wd/9qbHP/eHl9/3Byef9tb3P/b3F1/29xdf9sbnX/dXd9/3N1fP92eHz/f4GH/2dqdP9sb3n/
    +am13/3Bzff95e4H/dXd9/3V4gf9vcnz/c3V+/3V3ff9tcHr/bnF7/21wef9sb3j/cHJ5/3d6gP9xc3v/
    +dHd+/3R3gP9zdn//dnmC/3Bzff9zdn//c3V8/3N2f/91eIH/bnB3/3d5f/9sb3n/bnB3/25wd/93eX//
    +bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/
    +cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/bnF7/3V4gP9ucHf/cHN8/29xeP9ucXn/
    +a254/3V3ff9pbHb/cXR8/29yfP9wc3z/bG95/2xvef9qbXf/cHN9/3Byef91eIH/d3l//3Fze/9ucHj/
    +dHd+/2ptd/92eYD/cHJ6/3V3f/9tcHr/cXR8/3V3fv92eYD/dXiB/29xeP9tcHn/bnF7/3Bzff9wc33/
    +cHN9/3l8hf9ydX7/dHV7/3J0fP9ydX//cXN6/3Fzev9ydX3/b3J6/3Fzef9ydHz/dXiB/3Z4f/9vcnr/
    +bW94/25xef92eHz/b3F2/3Bze/9wc3v/c3Z//25xe/9vcXr/d3l//21vdv9xc3r/b3J6/21weP9vcXv/
    +bW94/25wef9rbnj/b3J8/21wef90dn3/cXN7/3Bze/9tb3X/ZWdu/2Zpc/9pa3P/Zmly/2tueP9rbnb/
    +bG92/2Vocf9sbnX/aWxz/2dpb/9oanT/a210/21veP90dn3/b3J5/3R2fP9zdXr/bnF4/29ye/9ucXv/
    +b3J8/3BzfP9xc3r/cXR9/3Bye/9ydHv/cXN9/3J1ff93eX//e32D/3R3f/9xdH3/c3Z//3F0ff9vcnz/
    +dXd9/3d5f/9ucHf/cHJ5/3Byef9wcnn/cHJ5/3V3ff9sbnX/cHJ5/21vc/9ucXv/bnF7/2xvef9sb3j/
    +bXB4/3V3fv9sb3n/Z2p0/3d5f/9sbnX/a210/29xd/9tcHr/cnR6/2Rmbv9sbnT/am13/2dqdP9ucXv/
    +c3V8/2xudP9tcHr/a252/2xvef9ucXv/cHN9/3d5f/9ucXv/bG95/25xe/97fof/d3qD/25wd/91d33/
    +cHJ5/3Byef9ucHf/cnR7/21vdv9ydXz/aGty/2xudf9ucXv/ZGZs/25wd/9ucHf/bW93/25weP9ucHf/
    +bnB2/2xveP9zdXz/c3V8/3V4gf9sbnX/bG51/21wev9zdXz/am13/2xudf9qbXf/dXiB/2psc/9sbnX/
    +dXd9/2xudf9tb3P/amxz/3Z4fP9vcXX/bnB3/2xvef9ucHf/am13/3d5f/91d33/c3V8/4GDiv9qbXf/
    +cHN9/2dqcf9vcXX/c3V8/2ptd/9ucHf/bW92/3Bye/9ydX7/cnR7/3V4gf91d4D/cHJ7/3d5gP96fYf/
    +eHqB/3R2fv9ydX3/bXB5/2xvef9sbnX/bG51/2ptd/9ucHf/c3V8/2xvef91d33/bnB3/3Byef9sb3n/
    +dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/
    +d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/c3V8/25wd/91d33/bG95/3F0ff9ydH3/
    +dHd//3Bzff95e4H/c3Z+/3d6gP9wc3z/b3F5/2xudf9sbnX/Zmlz/2xvef9sb3n/dXd9/3N1fP9rbnj/
    +bG52/3Z4f/9qbXb/dnh9/3Byd/9zdn3/bW93/25weP9ucXv/dHd//3V3f/90dnz/d3l//3d5f/9+gIb/
    +d3l//3R3gP96fYb/dXd+/25xe/9wc33/c3V9/29yfP9xc3r/dHZ+/29yef9zdX3/c3V9/3N2f/9xdH7/
    +bG95/3Bzev9ucHX/dHZ+/21vdv9qbXf/bG92/3Bze/9sb3f/bG94/3R2fP9tb3P/cnR5/3F0e/9ucHf/
    +bG95/2xvef9ucHn/bnB3/3Bye/9vcXr/c3V9/3V3f/9xdHz/b3F4/2ttc/9rbXT/bnF5/2ptdf9sbnX/
    +bG50/3F0fP9qbHP/bW92/2xvef9tb3b/cHJ3/2lsdv9wc3v/dXh//2tudv90dnv/cXN6/25xef9wcnn/
    +dHZ+/25xe/9tcHr/bnB5/3F0ff9vcnv/bW94/3Byev9sb3j/a252/3J1fP9vcXn/a210/21wev9vcnz/
    +bnB3/3N2f/93eoP/cHN9/3N2f/9zdn//c3Z//3V4gf91eIH/cHJ5/3d6g/9wc33/d3qD/3l8hv93eoP/
    +dnmB/3Bzff90d4D/dXiB/3N2f/97fYP/d3l//21wev94e4P/dXd//3V4gv9vcnz/a251/3N1fP9vcXX/
    +Z2px/2psc/97fYP/cXR7/2xudf9vcXj/bnF7/3N1fP93eX//bnF7/2dqdP9ucXv/d3qD/3d6g/9ucXv/
    +cHN9/3V3ff9wc33/bnF7/3Z4fv9kZ3H/dniA/2xvef9qbHP/dXd9/2Zpc/9nanH/ZGdx/2Rncf9pbHL/
    +a213/21wev9laHL/ZGdx/2Rncf9qbXf/Z2lv/2tud/9qbXb/c3V8/25wdf9sb3n/bnF7/3V4gf9qbXf/
    +bnF7/3l7gf9sb3n/bG95/2dqdP91d33/bG95/2xvef9ucXv/bnF7/2dqdP93eX//c3Z//3N2f/+Bg4r/
    +bG51/3Byef9maXP/bnB3/3Byef9sbnX/bnB3/25weP9ucHf/amxz/25wd/9vcXX/d3h9/3N1ev9tcHj/
    +dXd7/3V3ff9wc3z/c3V9/3Byev9sb3n/bG51/2ptd/9maXP/am13/2xvef9ucXv/cHJ5/2dqcf9nanT/
    +Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/
    +Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/Zmhu/2Zpc/9kZ3H/cHJ5/2dqdP9qbXX/
    +bnB4/29yfP9sbnX/c3V8/25xe/9xdHv/bXB5/3J1ff9pbHX/bW90/2ptd/9sb3n/am13/3Bzff9ucXv/
    +cnR8/3J0e/94e4X/bG95/3l7gf9ucHf/dXiB/3Byef9ucXv/b3J8/3N1e/9wc33/cHJ6/2ttdP9zdXz/
    +c3V8/21vc/9vcnz/bnF6/25xef9ucHf/cnR7/3R2fP9ydHv/bW92/3R3ff9vcXj/c3Z//25xe/9vcnz/
    +c3V+/3F0ff94eoD/cHJ3/3R2e/9vcXX/a21z/25wd/90dnv/b3F5/3Fzev9xc3r/b3F1/3V3ff9ydX7/
    +bnB1/2xudv9ucHf/bXB1/2tueP9tb3f/bG51/21wev9vcnz/b3J7/29ye/9qbXf/aWxz/29xef9nanH/
    +bG92/2xveP91eIH/a21z/2lsdv9vcXX/b3F4/25wd/9tb3b/dHZ7/3N2ff9pbHb/d3mA/3J0e/91d33/
    +cXR+/3R3gP9zdn7/dHeA/3R3gP97fof/d3qD/3d5gP91eH//cHN8/21wev9wc3z/dnmC/3N2f/9wc3v/
    +eXuC/3V4gf9zdXz/dXd9/25wd/91d33/cHJ5/3Byef9wcnn/cHJ5/21vc/9wc33/am13/2xvef9qbXf/
    +bnF7/2xueP9rbnX/bG52/29xef9ucHf/dXd9/3N1fP9rbnj/cXN6/3Byef9zdXr/bW5z/2hqcf9wc3z/
    +cHJ5/2dqdP9nanT/d3qD/25xe/9sb3n/bnF6/25xe/9zdn//d3qD/25xe/9qbXf/bnF7/3l7gf95e4H/
    +bW9z/3N1fP9zdXz/bG51/2xudf9zdXz/Zmhu/3R2fv9ydHv/am13/3d6g/9nanT/Z2p0/2dqdP9nanH/
    +a254/21wef90dn3/bG51/2ptd/9qbXf/bnF7/2xvef9ydHv/am13/3Fze/9sbnb/am13/2xudf91d33/
    +amxz/21vc/91d33/bnB3/25wd/9sbnX/cHN9/2xvef9ucHf/bG95/25wd/9qbHP/dnh8/3Bzff9wc33/
    +f4KM/25wd/9wc33/am13/2xvef91d33/bG51/3N1fP9tb3n/bG51/2dqcf9nanT/bW92/3V3ff9zdX3/
    +cXR8/3d6hP91eIH/cXR7/3J1ff9zdXz/am13/3Byef9wcnn/Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/
    +bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/
    +bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/cHJ5/29xdf9wc33/bnF7/3l8hv9ucXv/
    +cHN9/3R3gP94eoD/cHN9/3l7gf9zdn//dHeA/3Bzff9xc3r/am13/25wd/9vcXX/cHJ5/25wd/9zdXz/
    +c3V8/2ptd/9qbXf/d3l//25wd/94eX3/bnB3/3N1fP9qbXf/b3J8/29yfP90d37/d3mC/3Z4gf9zdn//
    +e32D/3l8hv9zdXz/dXd9/25xev9sb3j/aGt0/25xe/91d33/c3V8/2xudf9zdXz/bnB3/3V3ff9sbnX/
    +bG95/25xe/9vcXj/dXd9/21vdv9zdXz/a213/2dqdP9rbnj/cXR9/3Byef9wcnn/dXd9/21vdv91d3z/
    +c3Z//25wd/9sb3n/cHJ5/2xudv9sbnb/bnF4/25wd/9zdXz/c3V8/3Fzev9wc33/bG51/2dqdP9sb3n/
    +Y2Zu/2ptd/9wcnn/enyC/2xvef9sbnX/bW92/2tud/9ucHf/aGt1/3V3ff92eHz/aGt1/3Z4f/9wcnn/
    +bnB3/25xeP9zdn//bnB3/3Bzff9ucXv/eXuC/3Z5gv9ydHv/dnh//25xe/9sb3n/bG95/3Bzff9vcnv/
    +Zmly/3J1fv9vcnv/dXd9/3d5f/9wcnn/c3V8/3Byef9zdXz/cHJ5/3V3ff9tb3P/dXd9/25wd/9wcnn/
    +c3V8/25xe/9qbXf/a210/2tueP9qbXf/bG51/3d5f/9ucXv/bG51/29ye/9ucHf/cXR8/2ttdP9laG//
    +bnF6/2ptd/9maXP/Zmlz/3R3gf9tcHn/bG93/2xvdv9wcnn/c3V8/3d6g/9sbnX/amxz/25wd/93eX//
    +d3l//25wd/91d33/dXd9/25wd/9ucXv/dnh//2hrdP91d4D/a253/2psc/9zdXz/Zmlz/2Rncf9maXP/
    +Z2px/21wev9sb3n/c3V8/25xe/9wcnn/cHJ5/3Z4fP9wcnn/dHZ6/2xudf92eH7/bW91/29xdf9ucHf/
    +eHl9/2psc/9sbnX/dXd9/2xudf9qbXf/amxz/25xe/9sbnX/b3F1/29xdf9vcXX/Z2px/3V3ff91d33/
    +c3V8/3+Bh/9nanT/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/bG95/21veP9qbHP/ZWhy/2xudf9xdH3/
    +cXN5/21vdv90dnz/c3V8/21wef9wcnr/bnB6/21wd/9ucHf/cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn//
    +bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/am13/2xudf9ucHf/bG51/3V3ff99foH/
    +Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/am13/25xe/9ucHf/c3V8/3V3ff95e4H/
    +bnB3/3Fze/9wc3v/dHeA/3N2f/93eX//c3Z//3Z5gv9zdn7/cHJ4/2hrdP9qbXf/bG51/3N1fP9ucHf/
    +c3V8/3V3ff9qbXf/Z2p0/3d5f/9sbnX/eHl9/25wd/91d33/b3F1/3Byef9wcnr/cXR8/3R3f/91eIH/
    +cHJ5/3N2f/9zdn//bnB3/3Z4f/9ucXr/bnB4/21vc/9wcnn/dXd9/3h5ff9ucHf/dXd9/25wd/92eHz/
    +bG51/3Byef9zdXz/am13/3V3ff9sbnX/dnh8/29xdf9qbHP/bG95/3Bzff9ucXv/am13/3Bzff9qbXf/
    +dXd9/3V3ff9ucHf/bnB3/3Byef9vcXX/bnB3/25xe/9ucHf/c3Z//3V4gf9zdn//c3Z//2xvef9qbXf/
    +c3V8/2dqcf9sbnX/bnB3/3d5f/9ucHf/am13/3Byef9wcnn/bnB3/2ptd/91eIH/eXuB/2dqdP93eX//
    +bW9z/2xudf9sbnX/bG95/2ptd/9qbXf/bG95/3N1fP9ucXv/aGty/3Z4fP9qbHP/Z2px/2xudf9ucXv/
    +cHN9/2Zpc/9zdn//b3F1/2xvef9sb3n/Zmlz/2ptd/9nanT/bnF7/2ptd/9qbXf/bG51/3Bzff9sbnX/
    +bG95/2xvef9ucXv/b3F4/21vdv9sbnf/bG51/2dqcf9wcnn/am13/2hrcv9ucHr/bW91/3BzfP9oanP/
    +X2Jq/2hrdf9nanH/XWBq/2Rncf93eX//bnF6/29xev9sb3j/c3Z+/3d6g/95fIb/cHJ5/2xvef9wc33/
    +eXyG/3t+h/9wc33/e32D/3t9g/91d33/cHN9/3p8gv9pbHb/e32E/3N2f/9sb3n/d3l//25wd/9vcXX/
    +bG51/2xudf9vcXj/cHJ6/3R2fv9ucXv/bG95/3N1fP91d33/bnB3/3J0e/9tcHn/dniB/25xe/9ucHf/
    +bnB3/3Z4fP9sbnX/cHJ5/3h5ff9sbnX/bG95/2ptd/9ucXv/am13/2xudf9qbXf/bG51/2Zpc/9wc33/
    +cHN9/3N1fP9/gYf/am13/25xe/9sbnX/bnB3/3Bzff9nanT/bnF7/3Byef9wc3v/a253/2dqc/9wcnn/
    +cXR9/25xeP9pbHX/Z2pz/2dqdP9laHD/bnB2/2ptd/9rbXX/bG95/2xvef9nanT/am13/3N1fP9wc33/
    +d3qD/2xudf9wc33/bG51/3V3ff9nanT/amxz/2xudf9qbHP/bG95/2ptd/9qbXf/bG95/2xudf91d33/
    +e32D/2Jlbv9ucXv/bG95/3N2f/9qbHP/c3V8/3Bzff9nanH/amxz/2Jlbv9nanT/Z2px/2ptd/9sb3n/
    +dHeA/2lsdP9sb3j/b3F3/3Byef9wcnn/cHJ5/3Byef91d3v/b3J7/3Z4fv9ucHf/bnB3/2xvef9wc33/
    +bG95/25xe/95e4H/cHJ5/2ptd/91eIH/bnB3/3d5f/9ucHf/dXd9/2xvef9ucXv/cnR7/3Bze/9xdHv/
    +cHN9/2tueP9zdXz/dXd9/29xdf92eH//bXB6/21vd/9rbXf/bnB3/3V3ff94eX3/bG95/3l7gf9zdXz/
    +e32D/3Bzff91eIH/eXuB/3N2f/97fof/c3Z//3t9g/9wc33/c3Z//3d5f/95fIb/d3qD/3N2f/93eoP/
    +c3Z//3t9g/91eIH/c3V8/2xvef9sb3n/bG95/25wd/9wcnn/bW9z/3Byef91d33/c3Z//3V3ff9ucHf/
    +bG51/25xe/9iZW7/bG51/2xvef9zdn//Zmlz/2Rncf9nanH/Z2p0/2dqdP9kZ3H/bnF7/3N1fP9nanT/
    +d3l//2ptd/9nanT/bG51/3Byef9sbnX/am13/2xvef9ucXv/am13/2Zpc/9wc33/Z2p0/2BjbP9nanT/
    +cHN9/2xvef9iZGr/bnF7/2xudf91d33/dnh8/3N1fP9wcnn/bG95/25xe/9ucXv/am13/2psc/9ucXv/
    +am13/2psc/9qbXf/cHN9/29yfP9rbXb/bG93/2tueP9sbnX/dXd9/3Byef9tb3P/cXN6/21wef9ydHz/
    +a251/2dqcv9ydHv/cHJ5/2psc/9sbnX/dnh//3Byef9sbnX/aWx1/2xvef9ucXv/dXd9/2Zpc/9gY2z/
    +Z2px/3Byef9wcnn/Z2px/25xe/9sb3n/amxz/2Zobv9rbnj/Y2Zu/3Z5gv9vcnv/bG95/3d5f/9ucHf/
    +bnB3/2xudf9tb3P/bnB3/3Fzev90dnz/c3Z+/25xe/9wc33/d3qD/3J0fP9ydHr/a254/3N2f/9tb3b/
    +am13/2xudf92eHz/bnB3/3Byef9zdXz/bW9z/21vc/9tb3P/bnB3/3Byef9ucHf/bnB3/29xdf9nanH/
    +c3V8/3N2f/9zdn//f4GH/2xudf9xc3r/ZGdx/2ptd/9sb3n/Z2px/3Byef9vcXb/b3F4/2xudf9nanT/
    +cHN9/3V4gP90dnz/dHZ9/3N1fP91d33/bnB3/3N0eP9ydHr/cHJ5/3Byef9wcnn/amxz/2xudf92eHz/
    +cHJ5/3V4gf9sbnX/bnF7/2xudf9wcnn/Z2px/2Rncf9maXP/Z2px/2dqcf9maG7/YmVu/2Zobv9maG7/
    +am13/3N2f/9ZXGX/Zmlz/2dqdP9wcnn/ZGdx/2xvef9sb3n/amxz/2ptd/9maXP/am13/2xudf9sb3n/
    +cHN9/3R2ff9oa3X/bG95/3F0ff9vcnz/dXd9/3N1fP9wcnn/dHZ8/3N2f/91d37/b3J5/2xudv9sbnX/
    +cHN9/2xudf9sbnX/dXd9/2xvef9qbXf/e32D/3N1fP93eoP/bG95/3Z4fP9qbXf/c3Z//3J0e/9ucHn/
    +cXN6/3R2fP9tb3P/c3V8/3Bzff9ucHf/c3V8/29yfP9ucXv/bnB3/3Byef93eX//e32D/3Byef97fYP/
    +cHJ5/3t9g/9ucXv/cHN9/3V3ff9wc33/eXuB/3Byef9zdn//bG95/2ptd/9sb3n/c3V8/3N1fP9ucHf/
    +bnB3/25wd/9zdXz/bG95/2ptd/9qbHP/am13/2Rncf9nanH/am13/2dqcf9nanT/am13/25xe/9wc33/
    +amxz/2xudf9zdXz/amxz/25wd/9wc33/eXyG/2xvef9ucHf/cHJ5/3N1fP9ucXv/bG95/3N2f/97fYP/
    +c3Z//36Biv91eIH/c3Z//3Bzff93eoP/c3Z//3l8hv93eoP/e32D/3l7gf9wc33/d3qD/25wd/9maG7/
    +bG51/25wd/9sbnX/ZWZq/3N1fP9zdXz/c3Z//3V4gf9wc33/dXd9/3V3ff91d33/cHN9/3Bzff9wc33/
    +dnh8/3Bzff9wc33/c3Z//3Z5gv91eIH/bXB5/3Bze/9sb3n/bG51/3V3ff9sb3n/bG51/3F0ff9tcHn/
    +c3Z+/21vd/9naXP/am13/2xvef9iZW7/ZGdx/3V3ff9qbXX/Z2p0/2hrdf9xc3r/cnV8/3Z4f/9sbnX/
    +amxz/2tudf91eIH/dHZ8/25wdf9ydX7/cnV+/2xvef9ucHf/cXR9/2dqdP90dn7/Zmlz/2Zpb/9sb3n/
    +YmVu/2Zobv9kZ3H/Zmhu/2lsc/9sbnj/dHZ9/2xvef9sbnX/bG95/3V4gf9tcHn/cHN7/2tud/92eYH/
    +b3J7/25wd/9vcXX/d3l9/3Byef9wc33/dHZ8/25wd/9sb3n/b3F1/25wd/9ucHf/bW9z/2xudf9ucHf/
    +aGt1/25xev92eH7/dXeA/36Ahv9ucHf/dXiB/2Zobv9qbXf/bG95/2Zpc/9wcnn/bW90/2tueP9sbnX/
    +Z2pz/2xvef9vcnv/cHJ7/3N1e/92eYH/c3Z//29yfP9zdX3/cnV9/3J1fv91eIH/d3qD/3N2f/9zdn//
    +foGK/3l8hv+Bg4r/cHN9/3d6g/9zdXz/d3l//3Byef9wc33/cHN9/25xe/9ucXv/bnB3/29xdf9wcnn/
    +bnF7/3l7gf9+gIb/Z2p0/3N2f/9wcnn/d3l//21vc/92eHz/dXd9/25wd/9ucXv/Z2p0/2xvef9ucHf/
    +bnF7/3V4gf94e4X/bnB3/3Fze/90d4D/cHN8/3V3ff9wc33/bnF7/3N1fP9ydHr/cnR6/21wd/9sb3n/
    +bnF7/3d6g/9ucXv/cHJ5/3N2f/9ucHf/amxz/3V3ff9vcXX/dXd9/2xvef9zdn//bXB6/3V3fv9ydX7/
    +cHN9/3N2f/90dnz/bnB3/3N2f/9wc33/bG95/3Fze/9ucXv/bXB6/2xveP9ucXv/dHeA/3p8gv9ucHf/
    +dHd9/2xudf92eHz/cHJ5/3Byef9zdXz/bG95/3N1fP9sbnX/bnF7/2dqdP9nanT/bG51/2xvef9sb3n/
    +amxz/2xudf9sbnX/dXd9/3N1fP9ucHf/bW9z/2xvef9maXP/am13/2xvef9sbnX/c3V8/3N1fP9zdXz/
    +c3V8/29xdf9vcXX/cHN9/2ptd/9wcnn/c3V8/3d6g/9sbnX/bnB3/29xdf9vcXX/bG51/2psc/9ucXv/
    +cHN9/2ptd/93eX//am13/2psc/9qbXf/bnF7/2xudf9ucXv/am13/3Bzff9ucXv/ZGdx/25xe/9nanH/
    +YGNs/2Rncf9qbXf/bG51/2RmbP9ucXv/bnF7/3Bzff91eIH/c3Z+/3R2fP9zdXz/c3V8/3Fzef9ucHf/
    +cHJ5/3Z4fP9wcnn/bnB4/29xeP9ydHz/cnR7/2xudv9wc3r/dXiB/3N1fP91d33/bnF7/29xdf91d33/
    +bnF6/3F0fv9zdXz/aGt1/25xe/9ucXv/am13/25wd/95fIX/cnR6/2xvef9rbnj/cnV8/3V3ff93eX//
    +bnB3/21vdv9wcnb/d3l9/3d5gP9tcHX/cnR7/3N1fP9sb3n/bG94/3R2ff9qbHP/eHl+/25xe/9tb3P/
    +dnh8/2Zpc/9qbXf/bG51/21vc/9sbnX/cHJ5/3V3ff9ucHf/bW9z/25wd/97fYP/cXN6/3FzfP9rbnf/
    +dHeA/25xev9qbXb/bG92/3N2f/9tb3b/cnR7/21wev9sb3n/bG95/21wdf9tb3b/bnB4/2xudf9rbXP/
    +bnB3/2lsdf9sbnj/dXd+/3J0e/97fYL/bG90/3ByeP9gY2z/bG51/2xudf9kZ3H/bG95/2xudv9sb3j/
    +bG95/2ptdv9wcnn/dHZ9/25weP9ucHj/bnB5/3N1fP9tb3b/cXN7/29ye/9ucHf/bG95/2ptd/9maXP/
    +bG95/3V3ff9wc33/dXiB/21vc/9ucXv/bG51/3N1fP9tb3P/bG51/3Bzff9qbXf/am13/25xe/9qbXf/
    +bG51/2xudf9wcnn/d3l//2Rncf9sb3n/bnF7/3V3ff9sbnX/dnh8/3V3ff9ucHf/bG51/2psc/9sb3n/
    +b3F1/25wd/9wc33/dnmC/2tud/9sb3j/bXB6/2hrdf9xc3r/a254/21wef9vcnz/cnR9/3R2fP9vcnz/
    +bnB3/25xe/91d33/b3F1/29xdf9zdXz/ZWhx/2Zpcv9wcnr/bW92/3d5gP9rbnj/cXR+/21wd/90dn3/
    +c3Z9/3J1ff91eIH/enyC/3Byef9zdn//c3V8/2xvef9vcnv/cnR7/21wev9sb3j/bnB3/3BzfP92eH7/
    +bXB6/3R2fP9rbXT/eHl9/25weP9ucHf/cnR7/3Fzev92eH3/bG94/3N1fP9ucXv/bG51/25wdf9vcXj/
    +b3F4/21vdP9sbnb/bW92/3R3gP9ucXv/bG52/2xudf9wcnn/Z2p0/2xudf9tb3P/bG51/3Bzff9zdXz/
    +dXh8/3Z5f/9ucHf/a254/25xe/9qbXf/b3J8/29yfP94eoD/bG95/25wd/9ucXv/bnF7/2ptd/9oa3T/
    +c3Z//3V4gf9wcnn/eXuB/25xe/9sb3n/bnB3/3V4gf9ucXv/d3l//25wd/92eHz/c3V8/2ptdP9zdXz/
    +am13/2Zobv9sbnX/bnB3/2ptd/9gY2z/cHN9/25xe/9vcnz/cHJ8/3J1fv9ydX7/cHN8/3Byef91d33/
    +b3F4/25weP90d37/cHJ5/3Byev9xc3v/c3V8/3J0e/9wc3v/cHN8/3N2f/9wcnn/d3qD/3N2f/9ucHf/
    +d3l//25xe/91d4D/dHeA/2ptd/9wc33/cHN9/25xe/9wcnn/en2G/3N2fv9vcnz/b3J6/29yfP92eH7/
    +dnh//3BzfP9ydHv/cnR5/3p8gv94e4T/cHJ4/3J1fv9ucXv/cHN8/3Bze/92eH7/am13/3h6gP9ucXv/
    +c3V8/3l7gf9sb3n/bnB3/3Byef9ucHf/b3F1/3Byef91d33/cHJ5/29xdf9ucHf/eXyG/25xe/9vcnv/
    +am13/3J0ev9vcXr/aGt1/2tudv9ydHz/a252/21vdv9tb3f/bW92/2xudf9rbXT/bG51/25xef9rbXT/
    +aWx2/2xvef9qbXf/amx0/3F0ev9tb3b/cnR6/2hrcf9sbnf/am13/3Byef9wc33/bG95/3Bzff9tb3X/
    +a252/2dqc/9fYWv/ZGZt/2xveP9qbXb/bG95/3F0e/91d3//b3F3/3J1ff9zdXz/bG95/3N1fP9wcnn/
    +bG51/3N1fP91d33/bnF7/3N1fP9qbHP/bnF7/2ptd/9zdXz/bG51/2xudf91d33/bnB3/3Byef9wcnn/
    +bG95/25wd/9ucHf/dnh8/4CChv9ucHf/dXd9/3N1fP93eX//bnB3/3Z4fP92eHz/bnB3/2xudf9sbnX/
    +bG51/2xudf9qbXf/bG95/3V4gP9nanT/bW95/3F0ff9vcnn/dXd9/3N1e/90dnz/c3V7/21vdv9sb3j/
    +Zmlz/2FkbP9maXP/ZGdx/2Zobv9iZW7/am13/2lsdv9rbnb/dHZ7/3Byef9zdXv/bG51/2xvef9qbXf/
    +bnF5/21wev9rbnf/b3J8/2xvef9nanH/bnF7/2xvef9oa3T/a253/25xef9tb3j/bG51/21vdv9tb3f/
    +cHN6/2lsdv9qbXf/ZGdw/3N1fP9nanT/Zmlz/2ptdv9ucHf/b3J8/21vdv9vcnz/bXB6/2hrdf9tb3f/
    +bG95/29yfP9qbHP/aGtz/2ttdP9zdX7/bnB5/21vdv9sbnX/b3J8/2hrdf9sbnX/bnB3/21vdv9xc3r/
    +dHZ8/3V3fv91d37/bnB3/2ptd/9vcnv/am13/25wd/90dnz/dXd+/2xudf9tb3b/a254/29xeP9nanL/
    +aWt1/2ptd/9sb3n/amx0/25xe/9qbHP/Y2Zv/2hrdf9ucXv/bG94/29yfP9nanH/b3F4/2tueP9oa3X/
    +cnR7/2ptd/9jZm//Zmlz/2ptd/9qbXf/YGNs/25xe/9qbXf/bW94/25xe/9ydX//cnV//3N2gP91eIL/
    +dXd//29xeP9xc3v/dHd//29ye/9tcHn/cnR6/21wev9ucHn/a253/21wev9rbnj/amxz/3V3ff9wcnn/
    +bG51/3V3ff9qbXf/b3J8/3J1fv9maXP/bnB3/21vc/9qbXf/Z2p0/3R2ff9sbnX/bW91/3Fzev9rbnj/
    +dHZ9/3F0ff9vcnz/dXd9/3F0fP90d3//dXiB/21vdv90d3//b3J7/3R3f/9wcnv/cXR9/2dqdP94eX3/
    +cHJ5/29xdf94eX3/amxz/21vc/9tb3P/am13/2xudf9ucHf/dXd9/2xvef9sbnX/am13/3d6g/9nanT/
    +a253/2VocP9rbnT/bG93/2RncP9laHD/bG93/2hqcP9pbHP/ZGdx/2hqcP9maXP/amx0/2lsc/9rbnf/
    +a210/2ttdP9tcHr/bXB5/2hqc/9ucXn/bW95/3Fzef9rbXT/cHJ5/2xvef9wcnn/cHN9/2xvef9ucXv/
    +bnF6/3Byd/9ucHf/bnB3/3Byef94eX3/c3V8/3Byev9ydHv/dXd9/3Byd/9ydXr/dHZ9/2xudv9wcnn/
    +bG51/2psc/9zdXz/eHl9/3V3ff91eIH/bnB3/3Byef9wcnn/dnh8/2xvef9wc33/d3qD/3N2f/9zdn//
    +c3V8/25wd/9ucHf/c3V8/3h5ff9/gYf/bnB3/3Z4fP9wcnn/d3l//25wd/93eoP/eXuB/25wd/9wcnn/
    +bG51/25wd/9qbHP/am13/2ptd/94e4X/Z2pz/25xef9ydHv/a254/3Bzff9rbnj/dHd+/3J0ff9tb3f/
    +cnR8/21vd/9qbHP/cHN9/3Bzff9sbnX/Zmlz/3Bzff9nanT/am13/21vef9tcHr/bXB6/2ptdf9tb3f/
    +b3F5/3Byev9sb3n/cXN6/3J0fP91d33/bG51/3N1fP9wc33/bG51/25wd/9xdHv/cnR6/25wd/9wcnr/
    +a252/29xef9sb3n/bnB5/2ttdv91eH//a253/2ptd/9rbnb/b3F4/29yfP9wcnn/bnB5/21vdv9rbnX/
    +cnR6/29xev9ydXz/b3F4/21vdv9ydHv/c3V9/2ptd/9vcXj/bW92/25wd/9tb3b/bW92/25wd/9xc3r/
    +cHN6/3R2fP93eX7/dXd//3Bzff9tcHr/dHZ8/25wd/9vcXj/b3F6/3R1fP9xc3r/cnR6/3Bzff9wc3z/
    +aWx0/2xvdv9tb3X/cHJ6/25wdv93eH3/b3F3/2ttdP9tb3f/c3V7/3R3fP90d37/b3F4/3Z3ff91d33/
    +cXN6/3Z4f/9xdH3/bXB6/3Byev9vcnz/cXR+/2hrdf9ydX//cXR9/2lsdv9sb3n/cXN8/25wd/9sb3j/
    +bnB6/21wef9nanT/am12/3N1fP9vcXn/c3V7/3N1ev9qbXf/a210/21vdv9vcXj/bnB3/29xdf9zdXz/
    +cHJ5/25wd/9wcnn/bG51/3N2f/90d4D/am13/21vc/9ucHf/b3F1/2xvef93eX//b3F4/2xudf9wc33/
    +bG94/3R2ff9xc3r/bW92/3V3fP90d33/dHZ9/3Z4fv9wcnb/b3F4/3Fzev9xc3r/c3V8/3N2f/9oa3H/
    +eHl9/3Byef9sb3n/d3qD/25xe/9wcnn/bnB3/25wd/9wcnn/cHN9/3d6g/9zdn//cHN9/3N2f/9/gYf/
    +cHN9/3N2f/9qbXf/cHJ2/3R2ff9ucHf/cHJ5/3N2f/9ucXv/b3F4/21wev9sb3n/bG95/29xeP9vcnb/
    +cHJ5/2xudv9tb3P/dXd7/3R2fP9sbnX/cXR9/25xe/9tcHr/b3F1/25wd/9nanT/Z2p0/2ptd/9qbXf/
    +bnB3/3Byef9vcXj/bG51/29xdf9ucHf/dXd9/3Byef9wcnn/cHJ5/3N1fP9ydHr/c3V6/3J0fP9tb3T/
    +c3V8/21vc/9sbnX/c3Z//3d6g/91eIH/eXuB/25xe/9zdn//dXiB/3t9g/9wcnn/dXiB/3l7gf93eoP/
    +d3qD/3d6g/9wc33/cHN9/25xe/91eIH/gYOK/2xvef91d33/cHN9/3l7gf9ucXv/e36H/3l7gf9zdXz/
    +c3Z//2xvef91eIH/cHJ5/3d6g/91eIH/foCG/25xeP9zdn//dnh//25wd/9xc3n/a253/3Z4fv9zdXz/
    +b3F4/3Z5gf91eIH/c3V+/3t9g/95e4H/c3Z//3N1fP93eoP/bnB3/3F0ff9wcnn/cnV+/3d6gv9ydX7/
    +cHN9/3d5f/95fIL/dXiB/3h6gP95e4H/foCG/3V3ff97fYP/e32D/3N2f/92eYL/eHqA/3d5gP9ydX7/
    +dHeA/2ttd/9ucXr/cHJ8/3Fzev9xc3v/eXuC/3J0e/9ucHj/b3F5/3R2fP9xc3r/dHZ8/21veP9sbnX/
    +aGt1/3N2f/9sb3n/cXN7/2lsdv9qbXT/cnR7/25xe/9rbnj/b3J7/2xueP9tb3f/bXB6/29xev9tcHj/
    +cXN6/3J0e/9zdXz/dHZ9/3BzfP9xc3r/aGt0/21wef9qbHT/a210/2hrdf9sbnf/bG52/25xev9tcHr/
    +bW94/2hqc/9ucHf/aGty/2hrdf9pbHP/b3F6/2psdf9oanP/am13/25xe/9sb3f/bW94/2dqdP9ucXn/
    +bXB3/3FzeP9vcnj/bnF7/2hrdf9sbnX/bnB4/3F0e/9laG//bnB4/2xvef9sbnX/bG51/3N1fP9sbnX/
    +bG95/25xe/9wcnn/bW9z/2xudf9zdXz/bnF7/25xe/9wcnn/a253/2tud/9tb3P/c3V8/29xdf9sbnX/
    +bG95/3Bzff9sbnX/bnB3/2psc/9zdn//eXuB/25wd/9ucHf/cHN9/25xe/9ucHf/eXuB/2xvef9qbXf/
    +c3Z//25xe/91d33/cHN9/2xvef92eHz/c3Z//3Byef91d33/b3F1/3Byef91d33/cHJ5/25xe/9ucXv/
    +Zmhu/3N1fP9qbXf/bG51/3V3ff9nanT/Z2p0/2psc/9qbHP/amxz/3Bzff93eX//am13/25wd/9qbXf/
    +eXuB/2ptd/9wc33/am13/2xudf9ucXv/Z2p0/2dqcf9qbXf/amxz/2psc/9iZW7/bG51/2dqdP9sbnX/
    +bG51/25xe/9qbXf/am13/3Bzff9zdXz/Zmlz/2xvef9ucXv/amxz/2xudf9sbnX/ZGdx/2Rncf9kZ3H/
    +YmVu/2Zpc/9oanP/bG53/2ptd/9vcXj/c3Z//3N2f/9wc33/bnF7/25xe/9zdn//b3J7/3Fze/9tcHr/
    +bW91/3Bzff9tb3P/amxz/3V3ff91d33/dXd9/3h5ff9ucHf/b3F1/25wd/92eHz/bnB3/3N2f/92eHz/
    +dXd9/3Byef9zdXz/bnB3/25wd/9ucHf/dXd9/3+CjP9wcnn/c3Z//25xe/93eX//bG95/3t9g/94eX3/
    +bnB3/3Bzff9qbXf/c3Z//2xvef9wc33/cHJ5/3t+h/9ucHf/cHN7/3R3gP9ucHf/dXiB/25xe/95fIb/
    +cnV+/29ye/91eIH/cHN9/25wd/9zdn//c3Z//25wd/9sbnX/cHJ5/2xvef9ucHf/bG51/3Byef91d33/
    +bnB3/29xdf9zdXz/c3V8/2xvef91d33/cHN9/3Bzff9qbXf/cHJ5/3N1fP9ucHf/cHJ5/3Byef9zdn//
    +c3Z//3N2f/9qbXf/bXB5/3N2f/9wc33/cnV+/3d6g/90d4D/c3V8/3N2f/96fIL/enyC/31/hf90d4D/
    +cnV+/29yfP95fIX/dHeA/3h6gP9ydX7/cnV+/3Z4fv9tcHn/am13/3R2fP9ucHf/b3F1/3J1fv9zdX7/
    +bG95/3J1fv90dnz/d3l9/3h5ff9xc3r/dHZ9/2xudf9wcnr/bnB3/21wev9rbnj/b3F5/3Bzev9zdX7/
    +dnmC/3J1f/9sb3n/dnh+/3Byev91eIH/b3J8/3R3f/9ucXv/b3F5/3F0fv91eIH/cXN5/3J1fv9wcnr/
    +cXR9/3J0e/90d4D/cXN7/3V3ff9wc3v/cHJ5/3N1ff92eH//am11/3N1ff9ydHz/bG51/2xudf91d33/
    +bnB3/3Byef9ucXv/c3Z//25wd/9sb3n/dnh8/25xe/9wcnn/c3V8/2xudf9nanT/bW9z/3Byef9vcXX/
    +b3F1/3Bzff91d33/bnB3/25xe/9qbXf/c3Z//3h5ff9sbnX/bG51/2ptd/9sb3n/am13/3N1fP9sbnX/
    +Zmlz/2xvef9qbXf/bG95/2dqdP9kZ3H/bnB3/2ptd/9maXP/Z2p0/2Rncf9maXP/Z2p0/2Zpc/9nanT/
    +ZGdx/1xfaP9kZ3H/ZGdx/2Rncf9ucHf/YmVu/2Jlbv9maG7/ZGdx/2psc/9nanT/bnB3/2Zobv9kZ3H/
    +Z2px/3d6g/9nanT/cHN9/2psc/9qbXf/dXd9/2xudf9nanH/bG95/2xudf9tb3P/Z2px/25wd/9ucHf/
    +bG95/25wd/9zdn//c3V8/3Bzff93eoP/eXuB/25xe/93eoP/d3qD/3Byef9wc33/cHN9/2xudf9vcXX/
    +c3V8/21vc/9sbnX/cHJ5/29xeP9tb3b/cHJ5/3V4gf91eIH/c3Z//3N2f/9ucXv/d3l//3Bye/90dnz/
    +cXN9/2xvef9zdn//bnF7/25wd/93eX//eXuB/3d5f/93eX//bG95/3Byef9vcXX/dnh8/25wd/9zdXz/
    +dnh8/3V3ff9zdXz/cHJ5/29xdf9sbnX/cHN9/3V3ff+Agob/bW9z/25xe/9sbnX/dXd9/21vc/93eX//
    +dnh8/21vc/9sbnX/Z2px/3Bzff9sb3n/cHJ5/25wd/93eX//bW92/29yfP9xc3v/aGt1/2xvef9kZ3H/
    +dXd9/2xvef9pbHP/cXR7/25xe/9ucHf/cHN9/3Z4fP9sbnX/amxz/25wd/9ucHf/bG51/2psc/9ucHf/
    +c3V8/2xudf9qbXf/c3V8/3V3ff9sb3n/c3V8/3Bzff91d33/bG51/3V3ff9zdXz/b3F1/3N1fP9ucHf/
    +c3V8/3N1fP9zdXz/Zmlz/2ptd/9ucHf/bG95/3Bzff93eX//bnF7/29xdf9sbnX/c3V8/3V3ff91d33/
    +bnB3/25wd/9ucHf/dXd9/25wd/92eHz/bnB3/2xvef91d33/bW9z/2xudf92eHz/bG51/2xvef9ucXv/
    +am13/2ptd/9ucXv/c3V8/3V3ff94eX3/c3V8/3d5f/9vcXX/cHJ5/25wd/9sb3n/am13/2ptd/9wcnn/
    +cHN9/3J1fv9wc33/am13/3R2fP9vcXX/cHJ5/2xudf9ydHz/bnB3/2xvef9vcnz/dnmC/25xe/9zdn//
    +bnF6/3N2fv9qbXf/dnh8/21vdv90dnz/b3F4/2tueP9ucXr/cHN9/2Vocv9tcHr/cnR8/2Jlbv9nanH/
    +bnF7/2ptd/9qbXf/amxz/2Zpc/9maG7/Zmhu/2dqdP9maG7/Z2p0/2xvef9maXP/ZGdx/2Rncf9qbXf/
    +Z2p0/2dqdP9ucXv/cHN9/2ptd/9sb3n/Z2p0/3Bzff92eHz/bG51/29xdf9ucHf/bnB3/3Byef97fYP/
    +c3Z//25xe/91eIH/c3Z//3V4gf9zdn//bG95/3N2f/9wc33/bnF7/3N1fP9tb3P/bnB3/25wd/9sb3n/
    +bnF7/2xvef9nanT/bnF7/2xvef9sbnX/dXd9/2Rncf9maG7/ZGdx/2Rncf9maG7/am13/25wd/9nanH/
    +Z2p0/2ptd/95e4H/bG95/3N1fP9sbnX/amxz/3V3ff9sbnX/bG51/3Bzff9ucHf/bnB3/2ptd/9ucHf/
    +b3F1/29xdf9ucHf/c3V8/25wd/9tb3P/dXd9/3N1fP9nanT/dXd9/3N1fP9qbXf/am13/2psc/9nanT/
    +amxz/3Byef9nanH/Zmhv/2tueP9nanT/ZWhy/2ttdf9qbXf/am13/2ptd/9nanT/Z2px/3Bzff9sb3j/
    +b3J8/2xvef9sbnX/c3V8/2ptd/9nanT/bnF7/3N1fP91d33/dXd9/2xudf9ucXv/bG51/2xvef9qbXf/
    +bnF7/25xe/91d33/dnh8/3Byef9sbnX/bW9z/3N1fP93eX//gIKG/21vc/9sb3n/bG95/3h5ff9sbnX/
    +d3qD/3V3ff9qbXf/am13/2Zpc/9zdXz/cHJ5/3N2f/9wc33/en2G/21vd/9vcnz/cnV8/2hqdP9nanT/
    +ZGdx/3Byef9ucXv/aWxz/3F0fv9vcnz/bG95/3Bzff9zdn//bW9z/2xudf9zdXz/cHJ5/25wd/9qbXf/
    +cHN9/3l7gf9ucHf/bnB3/3l7gf97fof/c3Z//3t+h/97fYP/e32D/3N2f/95e4H/eXyG/3N2f/95fIb/
    +eXuB/36Ahv97fYP/foCG/3V3ff91d33/cHN9/3Bzff91eIH/eXyG/25xe/9qbXf/bnB3/3N2f/93eX//
    +dXiB/2ptd/9sb3n/bG95/3l7gf9wc33/eXuB/3Bzff9ucXv/dXd9/29xdf9sbnX/dnh8/2xudf9wcnn/
    +cHN9/25xe/9wc33/c3Z//3V3ff91eIH/eXuB/3V4gf93eX//bnB3/25xe/9ucHf/bnB3/2xudf9nanH/
    +bG51/3N1fP9wc33/c3V8/2psc/9zdXz/bG51/2xudf9qbXf/cHN9/3Byef9nanT/bG95/3l7gf9sbnX/
    +bW9z/2xudf9sb3n/Zmlz/3Bzff9qbHP/cHN9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/bG95/2xvef9nanT/
    +bnF7/3N2f/9wcnn/bnF7/3Bzff9ucXv/cHJ5/3Byef91eIH/cHJ5/3N2f/91d33/cHN9/2xvef9sb3n/
    +dXiB/3Byef9wcnn/c3Z//3Bzff9ucHf/bG51/2xudf91d33/c3V8/2psc/9qbHP/am13/2xudf9nanH/
    +c3V8/2psc/9maXP/bG95/2xudf9wc33/cHJ5/2xudf9wcnn/c3V8/2xudf9wc33/amxz/2xvef9sb3n/
    +bG51/3N1fP9wcnn/Z2p0/3Bzff9zdXz/bnB3/3d5f/9qbXf/bnB3/25wd/9sbnX/bG51/3V3ff94eX3/
    +b3F1/25wd/9zdXz/f4GH/2xvef9zdXz/bG95/2xudf92eHz/am13/2ptd/9ucXv/bG95/2psc/9maXP/
    +bG51/2dqcf9kZ3H/Zmlz/2xvef9maXP/Z2p0/25xe/9zdXz/Z2p0/3N1fP9ucXv/am13/2ptd/9vcXX/
    +b3F1/2xudf9zdXz/bG51/2tud/9ydHv/bXB6/29ye/9wc3z/d3qD/3l8hv95fIb/d3qD/3Bzff97fYP/
    +dHeA/3h7gv95e4H/dHZ9/3t9g/91eIH/c3V8/3d6g/97fYP/foCG/36Biv9zdn//e32D/3V4gf93eoP/
    +cHN9/3V4gf9zdn//dXiB/3N2f/9wc33/bnB3/25wd/9zdXz/dnh8/4CChv9sb3n/bnB3/25wd/92eHz/
    +am13/3N2f/9zdXz/amxz/2ptd/9gY2z/bnF7/2dqdP9ucXv/cHN9/3V4gf9rbXX/bnF7/3R3gP9ydHv/
    +c3Z//2ptd/93eX//cnV+/25weP9ydHz/bXB5/2dqcv9sb3n/bnF7/2psc/9maXP/bG95/2xvef9sb3n/
    +am13/25wd/91d33/bG95/2xvef91eIH/d3qD/3Bzff93eX//dXiB/3Bzff9ucHf/c3V8/3N1fP9sbnX/
    +bG95/2xvef9wc33/cHN9/3N1fP9qbHP/bW9z/2xudf9sbnX/c3V8/3d5f/9ucHf/am13/2xvef9zdn//
    +eXuB/3d6g/9ucXv/bnF7/3Byef95fIb/c3Z//3l8hv9wc33/dXiB/3l8hv91eIH/dXd9/3t+h/9ucXv/
    +dXiB/3V4gf9wc33/bnF7/3N1fP91d33/d3qD/3d5f/9wcnn/dXd9/2dqdP9nanT/amxz/2Zpc/9iZW7/
    +YmVu/2xudf9qbXf/cHN9/25xe/9nanT/cHN9/2ptd/9sbnX/am13/3N1fP9ucHf/Z2p0/25xe/93eoP/
    +bG51/2ptd/9qbXf/bG95/2ptd/91d33/Z2p0/3Bzff9sb3n/cHJ5/3Byef91d33/Zmhu/3V3ff9zdXz/
    +am13/25xe/9zdn//dXiB/3Bzff9ucHf/cHN9/25xe/9sb3n/dXd9/25wd/9wcnn/dnh8/3Byef9ucHf/
    +bG95/3d5f/9wc33/cHJ5/25xe/91eIH/bnF7/3N1fP9sb3n/eXuB/3l7gf9wc33/dXd9/3l7gf93eX//
    +dXiB/36Ahv9zdXz/bnF7/3N2f/9wc33/eXyG/3l8hv92eHz/eXuB/35/g/95e4H/fX6B/3Bzff91eIH/
    +dXiB/3Bzff93eoP/c3Z//25wd/93eoP/d3qD/3Bzff95e4H/am13/2xvef9ucHf/bG95/2xvef9zdn//
    +dXd9/2xvef9ucHf/c3V8/3+Bh/9sbnX/dXd9/2xudf9qbXf/eHl9/25wd/9sb3n/dXiB/3V4gf9zdXz/
    +bnB3/2xvef9ucHf/cHJ5/25wd/9zdn//c3Z//3N1fP9+gIb/e36H/3V3ff9+f4P/fX6B/3Z4fP91eIH/
    +c3Z//2xudf9sbnX/cHN9/2xvef9rbnj/dHZ8/3R2fP9ydHr/enyC/36Ahv97fYP/eXuB/3V4gf9wc33/
    +enyD/3N2fv90dn7/cXN6/21vdv91d33/bG51/2dqdP9wcnn/cHN9/3Z4fP93eX//bnB3/3N2f/9sb3n/
    +c3V8/2xvef9ucXv/bnB3/3N2f/9zdn//cHN9/25wd/9ucHf/c3Z//3l7gf+Bg4r/bnB3/25xe/9wc33/
    +eXuB/3Bzff93eoP/d3qD/3Byef9zdn//Zmlz/3V3ff9wc33/dXd9/3N2f/95fIX/bG51/29xeP90d37/
    +am13/3Bzff9sb3n/eHl9/3N1e/9rbnf/cXN7/25xe/9sb3n/dXiB/3V4gf9ucXv/bG95/3N2f/9ucXv/
    +c3V8/2ptd/9sb3n/dXd9/25wd/9ucXv/dXiB/3l8hv9wc33/dXd9/3Bzff9zdXz/bnB3/3V3ff9wcnn/
    +bG51/25wd/9ucHf/cHN9/3Bzff91d33/bW9z/2xudf9nanT/am13/25xe/9ucHf/Z2p0/2Rncf9qbHP/
    +ZGdx/2dqdP9maG7/YmVu/2dqcf9maXP/cHJ5/2dqcf9sb3n/Z2px/2psc/9sb3n/amxz/2dqdP9zdXz/
    +Z2p0/25xe/9zdXz/bG95/2xudf9ucHf/c3V8/3V3ff93eX//c3V8/3Z4fP9ucHf/cHJ5/3Byef9vcXX/
    +am13/25wd/9ucHf/cHJ5/3Z4fP9wcnn/bG51/3N1fP9ucHf/bnB3/25wd/9zdn//bnF7/2psc/9ucXv/
    +eXuB/29xdf9ucXv/bnB3/2xvef9qbXf/d3l//2xvef9zdn//dXiB/3Bzff9sb3n/cHN9/2Zpc/9zdn//
    +dXiB/2ptd/9wc33/dXiB/3N2f/9zdn//cHN9/3V4gf9zdn//c3Z//3t9g/95e4H/e32D/3t9g/95e4H/
    +c3V8/3N1fP95e4H/cHJ5/2xvef9ucHf/cHN9/25wd/9sb3n/amxz/3N2f/9zdn//b3F1/25wd/9wcnn/
    +bG95/25wd/9wc33/bG51/2psc/9ucXv/am13/3Bzff9ucXv/bG51/25wd/9zdXz/bnF7/3d6g/9zdXz/
    +c3Z//3V4gf91eIH/e32D/3V4gf9zdXz/e32D/3d6g/9wc33/e36H/3Z4fP91eIH/dXd9/3V4gf9zdXz/
    +eXuB/3t+h/9wc33/cHN9/3N2f/+Bg4r/bnB3/3V3ff9ucHf/bG51/3h5ff9vcXX/bG95/3V3ff91d33/
    +bG51/2xudf9sbnX/Z2p0/2psc/9maXP/bG95/2dqcf9maXP/cHN9/3d5f/9nanT/cHN9/3N1fP9qbXf/
    +bG51/2xudf9zdXz/c3V8/3l7gf9zdn//cHJ5/3Z4f/9wc3r/aGt1/2ptd/9wc33/amxz/2ptd/9qbXf/
    +am13/3N1fP9rbnX/cHN8/3Fzev9wcnn/dXd9/3Byef9ucHf/c3V8/3Bzff9zdXz/dXd9/2xvef9zdXz/
    +bnB3/3N1fP9ucHf/cHJ5/25wd/9zdn//dXiB/3N2f/9sb3n/bnF7/3N2f/91eIH/g4WM/3V3ff91d33/
    +e32D/3+Bh/97fYP/f4GH/4WHjf97fYP/eXyG/3N2f/9+gYr/foCG/36Ahv99foH/gIKJ/3N1ev9zdX3/
    +dXd+/2lrdf9ucXv/am13/3N1fP91d33/a254/3N1fP9xc3n/amxz/3Bzff9wc33/amxz/2Rncf9qbXf/
    +bG51/2ptd/9qbHP/bnB3/3V3ff9sbnX/amxz/3V3ff93eX//cHJ5/3V3ff9ucXv/cHN9/2xudf9qbXf/
    +bG95/2dqdP9sb3n/bG51/25xe/9wc33/cHN9/2dqdP9qbHP/am13/25wd/91d33/dXd9/3N1fP9ucHf/
    +bG95/3Bzff9zdn//bnF7/2xvef9sb3n/bG95/3d5f/9sb3n/dXd9/25xe/9wc33/c3Z//29xdf9ucHf/
    +dnh8/2psc/91d33/dXd9/25wd/9qbXf/bnB3/2xvef9wc33/bnF7/2dqdP9qbXf/Zmhu/2ptd/9sb3n/
    +bG51/2dqdP9qbXf/bW9z/25wd/92eHz/cHJ5/2Zpc/9wc33/bG95/2xudf9nanT/bnF7/25wd/9qbHP/
    +bnB3/3d5f/9tb3P/cHJ5/25wd/9ucHf/am13/3V3ff9qbXf/cHN9/3Bzff9ucHf/bnB3/3Bzff9maXP/
    +c3Z//3N1fP9sbnX/cHJ5/3N2f/9wcnn/bnB3/25wd/9wcnn/cHJ5/3Byef91d33/bnB3/25wd/92eHz/
    +c3V8/2xudf9qbXf/cHN9/2xudf9sbnX/bnB3/3Byef9qbXf/Z2p0/2Zpc/9ucXv/am13/2Zpc/9maXP/
    +Zmlz/2Jlbv9nanH/Z2p0/2Rncf9maXP/bG95/2psc/9ucXv/bG95/2Rncf9qbXf/bG95/2ptd/9wc33/
    +bW9z/2ptd/9ucXv/am13/25xe/9sb3n/bG51/3V3ff9sb3n/bG95/3N1fP9nanT/bG95/2ptd/9ucHf/
    +bnB3/3Byef91d33/bW9z/21vc/9wcnn/f4GH/21vc/9wc33/am13/25wd/91d33/bG95/2xudf9zdXz/
    +bnF7/2ptd/9tb3P/bnB3/2xvef9sb3n/bnB3/3d5f/9wcnn/bnB3/3h5ff93eX//bG51/3V3ff93eX//
    +bnB3/25wd/9ucHf/bnF7/3Bzff93eoP/eXyG/3N2f/97fYP/cnV//21wev9wc33/c3Z//2xvef9ucXv/
    +bnB3/25wd/91d33/cHJ3/3V4gP91eIH/c3Z//3d6g/9zdn//bG95/3N2f/9zdn//dXiB/3d6g/9wc33/
    +cHN9/3Bzff9ucXv/bnF7/3Bzff9wc33/dXiB/3N2f/9zdn//bnB3/21vc/9zdXz/dXd9/35/g/9ucHf/
    +bG95/3V4gf93eX//bnF7/3d5f/93eoP/c3Z//25xe/9qbHP/cHN9/3Byef91d33/c3V8/3l7gf9sbnb/
    +cXR8/3V4gv9wcnz/eXyG/3V3ff99foH/fH6F/3J1f/92eID/cXN6/2hrdf9wc33/dXd9/21vc/9nanH/
    +cHJ5/3l7gf93eX//dXd9/3V4gf95e4H/c3V8/25xe/91eIH/eXyG/3N2f/95fIb/c3Z//3d6g/9wc33/
    +cHN9/25xe/9sb3n/bG95/2xvef9zdn//c3Z//3d5f/9vcXX/bnB3/25wd/9wcnn/dXd9/3N1fP9ucXv/
    +b3F1/2xvef9wc33/d3l//3N2f/9wcnn/cHJ5/2xvef91d33/bnF7/3d5f/9wcnn/d3qD/3d6g/9zdn//
    +c3Z//35/g/91d33/fX6B/31+gf91eIH/dXiB/3l7gf9+gIb/f4GH/36Ahv97fYP/fX6B/3d5f/95e4H/
    +foCG/3d5f/93eX//dnh8/3N2f/91eIH/foCG/3t9g/9ucXv/d3qD/3N2f/9zdn//cHJ5/3V4gf9zdn//
    +cHN9/3V4gf95fIb/cHN9/25xe/9sb3n/bnF7/2ptd/92eHz/Z2p0/3Byef9ucXv/bG95/2xudf9zdXz/
    +amxz/3V3ff9zdXz/am13/25xe/91eIH/c3Z//25xe/9ucXv/cHJ5/25xe/9ucXv/dXd9/2xvef9sb3n/
    +c3V8/25wd/9sbnX/bG51/3Bzff9sbnX/bnB3/2psc/9wcnn/bW9z/2ptd/9nanT/cHN9/25xe/9nanT/
    +ZGdx/2ptd/9kZ3H/amxz/2ptd/9sbnX/am13/2xvef9sbnX/cHJ5/3N1fP9qbHP/bG51/25wd/9ucHf/
    +dXd9/2xudf9sb3n/cHN9/2ptd/9wc33/bG95/2xudf9wc33/bnB3/3Byef91d33/bG51/3N1fP9ucHf/
    +bnB3/2xudf9zdXz/d3l//2psc/9qbXf/cHJ5/3+Bh/9sbnX/bnF7/2ptd/9vcXX/dnh8/3Byef9vcXX/
    +dnh8/3N1fP9ucHf/b3F1/2xudf9tb3P/bG51/2xudf9wc33/bG51/21vc/94eX3/d3l//21vc/9zdXz/
    +c3V8/2ptd/9sbnX/bG51/25wd/9wcnn/d3l//3N2f/9ucHf/c3V7/3N1fP9vcXj/bG95/3N2f/9ucXv/
    +c3Z//2xvef9ucXv/c3Z//21wev92eYD/eHqB/3V3gP97fof/c3Z//3N2f/97fYP/eXuB/3d6g/97fYP/
    +cHN9/3V4gf95e4H/cHN9/3V4gf91eIH/c3V8/3d6g/95e4H/dXiB/25wd/9wcnn/cHN9/3Bzff97fYP/
    +b3F1/25wd/93eX//c3Z//25xe/93eX//dXiB/25xe/9ucXv/am13/3Bzff9ucXv/dXiB/3Bzff94e4X/
    +b3F4/25xev91d33/aGt0/2xvef9sbnX/c3V8/3N1fP9tcHr/dXd9/3J0ff9wcnn/d3l//3V3ff9sb3n/
    +am13/3Bzff9ucHf/bnF7/2xvef9ucXv/d3l//3Byef9sb3n/c3Z//3l8hv9wc33/eXyG/2xvef9wc33/
    +bG95/3Bzff9ucXv/bG51/2xvef9sbnX/c3V8/3N1fP93eX//b3F1/29xdf9sbnX/bG95/3V3ff9zdXz/
    +am13/2psc/9sbnX/bG95/25xe/9qbXf/Z2p0/2psc/9nanT/dXd9/2ptd/9zdXz/bG51/2xvef9qbXf/
    +bG51/2xudf9zdXz/Z2p0/25xe/9qbXf/amxz/2Zpc/9qbXf/am13/25xe/9sb3n/am13/25xe/9sb3n/
    +bG95/3Bzff9sbnX/bG51/2xudf9sbnX/bG95/3Bzff9sb3n/amxz/3Bzff9sbnX/bG51/2psc/9wc33/
    +cHJ5/25wd/9ucXv/d3qD/3Byef91eIH/bG95/25xe/9qbXf/dXd9/2xvef9wc33/cHJ5/3N1fP9ucXv/
    +cHN9/2xvef91eIH/dXiB/2psc/9sbnX/c3V8/2xvef9ucHf/cHJ5/25wd/9wcnn/bnB3/3V3ff9wcnn/
    +bnF7/3N1fP9zdXz/am13/2xudf9wc33/am13/2psc/9maXP/bnF7/21vc/9ucHf/bnB3/3V3ff9wcnn/
    +bG51/2psc/9ucHf/bG95/3Bzff91d33/bnB3/25wd/9wcnn/bG51/3Byef9ucHf/bnB3/2xvef9zdn//
    +bnF7/3V4gf9ucXv/cHN9/3V4gf9zdXz/dXiB/3Bzff9zdXz/dXiB/3Bzff93eoP/dXiB/25xe/9wc33/
    +bnB3/2xvef9sb3n/dXd9/3l8hv9ucHf/bnB3/3N2f/+BhI3/c3V8/3N2f/9sb3n/c3V8/3l7gf91eIH/
    +cHN9/3t9g/91eIH/c3V8/3Byef9ucXv/cHJ5/25xe/9ucHf/d3qD/3N2f/9wc33/e36H/36Biv9zdn//
    +eXyG/3l7gf9wc33/c3Z//25xe/9qbXf/bW9z/3V3ff9zdXz/bnB4/3N1fP9xc3j/bnB2/25wd/91d33/
    +cHJ5/25xe/9ucHf/bnF7/25xe/9tb3f/cXR9/3N1fP9vcXn/d3l//3N1fP9qbHP/eHl9/3Z4fP92eHz/
    +dXd9/2xudf9ucXv/cHN9/2xudf9ucXv/bG95/2xudf9ucXv/dXd9/2xudf9ucHf/b3F1/3N1fP9wcnn/
    +e32D/25wd/9tb3P/c3V8/3N1fP9ucHf/dXd9/3V3ff9wcnn/cHJ5/2psc/9sbnX/bG95/3Bzff9wc33/
    +dXd9/2xudf9tcHr/c3V8/2xvef9zdXz/b3F1/3Byef90dnz/bnB3/3J0ev9wc3v/bG95/3V4gf9zdn//
    +bG95/2xvef9ucXv/c3Z//25xe/9nanT/cHJ5/3d5f/9vcXX/Z2px/3V3ff94eX3/bnB3/3l7gf9sbnX/
    +bG51/21vc/9zdXz/bnF7/25wd/9ucHf/bG95/3Byef9wcnn/dXd9/25wd/9vcXX/b3F1/25wd/91d33/
    +bnF7/25xe/9sbnX/am13/25xe/9wc33/bG95/2dqdP9sbnX/amxz/3Z4fP9ucHf/bnF7/25wd/9wc33/
    +bnB3/25wd/9vcXX/dnh8/25wd/92eHz/cHJ5/21vc/9ucHf/bnB3/3Byef9zdn//dXiB/3N2f/93eoP/
    +cHN9/3Bzff9wc33/bG95/2xudf9sbnX/bG51/25wd/9wc33/bnF7/2Zpc/9sb3n/amxz/2dqdP9kZ3H/
    +bG95/2ptd/9maXP/bnB3/3V3ff9sbnX/bG95/2xudf9ucXv/Z2p0/3N1fP9nanT/bG95/2xvef9ucXv/
    +am13/2xvef9nanH/dXd9/3Byef9maXP/am13/25xe/9ucHf/am13/2xudf9tb3P/bG95/2psc/9ucXv/
    +bnF7/2ptd/9wc33/cHN9/2Zpc/9sbnX/cHN9/2ptd/9qbXf/Zmlz/2ptd/9sbnX/Z2p0/2ptd/91d33/
    +bnF7/21vc/9nanH/bG51/2dqdP9qbXf/bnF7/2psc/9nanT/bG95/2psc/9qbXf/bG95/2Jlbv9qbHP/
    +am13/2psc/9sb3n/bG51/2xvef9wc33/am13/3Z4fP9vcXX/bG51/3Byef9ucHf/c3V8/3Byef9sbnX/
    +c3Z//25wd/9qbXf/Z2p0/3Bzff95fIb/cHJ5/3N1fP9zdn//g4WM/3N1fP9wc33/am13/25wd/9zdXz/
    +cHJ5/2xudf94eX3/cHJ5/2xudf9qbXf/am13/2xudf9sbnX/am13/3N1fP9ucXv/b3F1/3d5f/91d33/
    +am13/3N1fP9wc33/Z2p0/2xvef9sbnX/bnB3/2ptd/94eX3/c3Z//25xe/92eYP/c3V8/21vdv9ucHf/
    +cHN9/2xvef9sbnX/bG51/2xvef9rbnj/bXB6/3J1fv9ydX7/dHeA/3d6g/91eIH/cHN9/3t+h/97fYP/
    +e36H/3l8hv9wc33/eXuB/3d6g/9ucHf/cHN9/25xe/9wcnn/dXiB/3d6g/9wc33/bnB3/25wd/9wc33/
    +cHN9/3t9g/9sb3n/bW9z/3V3ff91d33/cHJ5/3l7gf94eX3/cHJ5/25xe/9qbXf/bnB3/25wd/91eIH/
    +d3qD/3p8gv9xc3v/cHN9/3R3fv9ucHf/bnF7/25wd/9zdn//c3Z//25xe/9zdXv/bnF7/25wd/9zdn//
    +dXd9/25wd/9qbHP/bG51/3N2f/9sb3n/am13/2xvef93eX//bnB3/2ptd/9zdn//eXuB/3Byef95fIb/
    +bnF7/25xe/9wcnn/c3Z//3Bzff9ucHf/bnB3/3Bzff9wcnn/cHJ5/3V4gf9ucXv/bnB3/29xdf9ucXv/
    +dXd9/3N2f/9zdn//bnB3/2xvef9zdXz/dnh8/3V3ff9ucHf/cHJ5/25wd/92eHz/b3F1/3Byef9sbnX/
    +am13/2ptd/9sbnX/am13/3N1fP9nanT/cHJ5/2psc/9nanT/Z2p0/2dqdP9qbXf/bG95/25xe/9qbHP/
    +am13/2ptd/9nanT/Z2p0/2Zobv9kZ3H/Z2p0/2xudf9qbXf/cHN9/3N1fP9sbnX/bnB3/2xudf9ucHf/
    +Z2p0/3N2f/91eIH/bnB3/3Byef93eX//bnB3/3Byef9sbnX/cHJ5/2ptd/93eX//bG95/2xvef91eIH/
    +c3Z//29xdf9wcnn/amxz/3V3ff9ucXv/amxz/25wd/9ucXv/am13/3Byef9tb3P/bG51/2xvef9qbHP/
    +bnF7/25xe/9sbnX/dXd9/3Bzff9nanT/bG51/25xe/9sbnX/amxz/2Rncf9nanT/Z2p0/2Zpc/9maXP/
    +dXd9/25xe/9qbHP/YmVu/2xudf9qbXf/bG95/3N1fP9sbnX/bG51/25xe/9ucXv/bnF7/3N1fP9qbHP/
    +cHJ5/25xe/9wcnn/d3l//29xdf91eIH/dXiB/3V4gf95e4H/c3V8/25wd/91eIH/bnF7/3N2f/93eoP/
    +cHN9/3V4gf9ucXv/bG95/2ptd/9wc33/d3l//2xudf9ucHf/c3V8/35/g/9ucHf/bnB3/2dqdP9sbnX/
    +cHJ5/25xe/9sbnX/cHN9/3Byef9tb3P/bG95/2xudf9vcXX/bnB3/2xvef9zdn//bnF7/2xvef95fIb/
    +eXuB/25xe/95e4H/eXuB/3N1fP91eIH/d3qD/3N2f/9wc33/e32D/3N2f/9tcHn/d3qD/3N1ff9tcHr/
    +cHN9/3d6g/9zdn//bG95/25wd/9ucHf/c3V8/3Byev9xdH7/dnmC/3R3gP97fof/eXuB/25xe/95fIb/
    +d3l//3l7gf95e4H/bnB3/3d5f/93eoP/c3V8/3l7gf93eoP/c3Z//3l8hv93eoP/dXiB/3N1fP9zdXz/
    +c3Z//3V4gf95fIb/cHN9/2xvef91d33/dXd9/3Byef93eX//eHl9/3Byef9ucHf/Z2p0/2xvef9ucXv/
    +dXd9/3Z4fP91d33/a211/2ttdv9zdXv/a210/25xe/9tb3P/bnF7/25xe/9tb3f/cXR9/3J0ff9sb3n/
    +c3Z//3V3ff9ucXv/am13/25xe/9sb3n/amxz/2Zpc/9sb3n/dXd9/2ptd/9kZ3H/bG95/3Byef9nanH/
    +c3V8/2Zobv9sbnX/bG51/2ptd/9nanT/ZGdx/2Zpc/9maXP/ZGdx/2Zpc/9wcnn/Z2p0/2Jlbv9maXP/
    +Z2p0/3Bzff9sb3n/bnF7/2psc/9qbXf/bnF7/3V3ff9wc33/am13/25wd/9qbHP/dnh8/25wd/9wcnn/
    +bnF7/3Bzff9zdXz/cHN9/3N1fP95e4H/bnB3/3V3ff9ucXv/bG95/2xvef9ucXv/bG51/25wd/91d33/
    +bnB3/25xe/9ucXv/am13/25xe/9sbnX/Z2p0/2xudf9nanT/Z2p0/2dqdP9sb3n/YmVu/2dqcf9nanH/
    +ZGdx/2Jlbv9ucXv/Z2p0/2Zpc/9sbnX/c3V8/2xudf9sb3n/bG51/2xvef9kZ3H/c3V8/2xudf9sb3n/
    +c3Z//2xvef9vcXX/bnB3/2psc/91d33/bnB3/2xudf9qbXf/cHJ5/2ptd/9wc33/bG51/2xudf9ucHf/
    +bG51/25xe/9ucXv/am13/3N1fP9wc33/Zmlz/2dqcf9qbXf/Z2p0/2psc/9maXP/am13/2ptd/9sbnX/
    +bG51/3Z4fP9sbnX/bnB3/2dqdP9ucHf/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/bnF7/25xe/9zdn//
    +am13/3Bzff9zdXz/cHN9/3l7gf9wcnn/c3Z//3Z4fP9zdXz/eHl9/2xudf9sbnX/cHJ5/25wd/9wcnn/
    +c3V8/2psc/9wcnn/am13/2dqdP9qbHP/bnB3/3d5f/9tb3P/bG51/3V3ff9+f4P/bnB3/3Byef9ucHf/
    +b3F1/3V3ff9wc33/bG95/3Bzff9zdn//cHJ5/3N2f/9wc33/cHN9/3V4gf9zdXz/eXuB/3l7gf95e4H/
    +g4WM/36Ahv97fYP/foCG/36Ahv9zdn//dXiB/3V4gf9wcnn/bnB3/3h5ff91d33/a254/3x+hf9ydX7/
    +b3J6/3R3gP95e4H/cHN9/2xvef9vcXX/bnF7/3N2f/9tcHr/b3F4/3Fzev9sbnX/dnh8/3V3ff9nanT/
    +dXd9/25xe/9zdXz/bnF7/2dqdP9wc33/cHN9/2xudf9sb3n/amxz/2dqcf9nanT/Z2p0/2ptd/9qbHP/
    +Z2px/2xvef9nanT/c3Z//2Zpc/9kZ3H/Z2p0/2xvef9qbHP/cHJ5/3Byef9maXP/bG51/2dqdP9qbHP/
    +am13/3Bzff9wc33/dnh//2ttdf9qbXX/cXN6/2ptd/9ucXv/Z2px/2ptd/9rbXf/bnF4/3J1fv91eID/
    +bnF6/3l7gf91eIH/bnB3/2Rncf9sb3n/cHJ5/29xdf9qbHP/cHJ5/3Z4fP9nanT/Z2p0/2ptd/91d33/
    +b3F1/3d5f/9tb3P/bG51/2xvef9wcnn/bnB3/2ptd/9sb3n/am13/2ptd/9nanT/cHJ5/2dqdP9nanT/
    +Z2p0/25xe/91d33/bG95/2xvef9nanH/bG51/2xvef9zdXz/bnF7/2psc/9qbXf/Zmlz/3Bzff9qbXf/
    +am13/2xvef9nanT/Z2px/2xudf9nanH/bG95/2dqdP91d33/bG51/2Zpc/9maXP/am13/2Zpc/9qbXf/
    +cHJ5/2dqdP9sb3n/cHN9/2dqdP9qbXf/Z2px/2dqdP9qbXf/Zmlz/2dqdP9nanT/am13/2Rncf9qbHP/
    +amxz/2psc/9kZ3H/cHN9/2ptd/9qbHP/am13/3Byef9qbHP/am13/2psc/9maXP/YGNs/25xe/9nanH/
    +am13/3Bzff9sbnX/am13/2psc/9nanT/bnF7/2ptd/9zdn//c3Z//3l8hv93eX//fn+D/3N2f/9zdn//
    +eXyG/3V3ff93eoP/d3qD/25xe/95e4H/c3Z//2ptd/9ucHf/dXiB/3N2f/9wc33/bG95/25xe/9sb3n/
    +bnB3/3Byef97fYP/c3Z//25xe/9nanT/bnB3/2xudf9ucHf/dnh8/25wd/9qbXf/bnF7/25xe/9wc33/
    +bnF7/2xvef9ucXv/c3V8/25wd/9zdXz/bnB3/3V3ff92eHz/cHJ5/3V3ff9qbXf/bnB3/2xvef9ucHf/
    +cHJ5/3Byef9nanT/cHJ5/25xe/9qbXf/bG51/25xe/91d33/bW9z/2xudf9wcnn/fX6B/2xvef9qbXf/
    +Z2p0/2dqdP9ucXv/bnF7/2ptd/9sb3n/bG95/2xudf9nanT/Z2px/2Zpc/9maXP/Z2p0/25xe/9qbXf/
    +Z2p0/3Byef9wcnn/ZGdx/25wd/9sb3n/Zmhu/2xvef9maXP/cHJ5/21vc/91d33/dXd9/2xudf93eYD/
    +b3J5/2ptd/9sb3n/bnF7/2xvef9tb3P/bW9z/25wd/9zdXz/bnB3/3Bze/9zdn3/b3F1/3V3ff91d33/
    +Z2px/3d5f/9ucXv/dnh8/3Byef9ucHf/dnh8/3N1fP9sb3n/bnF7/2xvef9qbHP/bnF7/25xe/9sbnX/
    +b3F1/25wd/9zdn//bnB3/3t9g/9zdXz/bnB3/3V3ff9zdn//bnF7/3V4gf91d33/cHN9/25wd/9ucHf/
    +b3F1/2xudf9wcnn/dXd9/3h5ff9ucHf/bnF6/3V2fP9tb3T/cHN9/25wd/9wc33/cHJ5/29xeP9xdHz/
    +cnR6/2xudf9zdXz/bnF7/2ptd/9kZ3H/bG95/25xe/9ucHf/bG95/3Bzff95e4H/bnF7/25wd/9sb3n/
    +dnh8/2xudf93eX//bG51/2xudf9qbXf/am13/2xudf9maXP/am13/2ptd/9qbXf/am13/3N1fP9qbXf/
    +Zmlz/2psc/91d33/dnh8/3N1fP91d33/bG51/2dqcf9ucXv/cHN9/3Byef9sbnX/bnB3/2ptd/91d33/
    +bnB3/3V3ff9sb3n/cHN9/25wd/9ucHf/am13/25wd/9ucHf/d3l//29xdf9sbnX/bG51/2ptd/9wc33/
    +cHN9/3Bzff9sb3n/bG51/3Bzff9qbXf/bG95/2xudf9nanT/bG95/2xudf9nanH/Z2p0/2ptd/9nanT/
    +Z2p0/2dqdP9sbnX/Z2p0/25xe/9qbXf/amxz/3Bzff93eX//bnB3/3Byef9sb3n/c3Z//2ptd/9zdn//
    +cHJ5/3Bzff97fYP/c3Z//3d6g/9zdn//dXd9/3d6g/9zdn//bnB3/3Byef9ucHf/cHJ5/3N1fP9ucHf/
    +b3F1/3N1fP9tb3P/cHJ5/3N1fP9sbnX/bnF7/3N1fP9qbXf/bnB3/3V3ff9zdXz/c3V8/25wd/9vcXX/
    +cHJ5/2xudf9qbXf/c3V8/25wd/9ucHf/Z2px/25wd/9sbnX/bnB3/3N1fP9tb3P/Zmlz/2xvef9qbXf/
    +cHJ5/3Byef9ucHf/bG51/21vc/9sbnX/bnF7/2xudf9wc33/c3V8/2xvef92eHz/bG51/2ptd/9sbnX/
    +bnB3/3N1fP9ucHf/Z2p0/2xvef9ucHf/bG51/2psc/9wcnn/dnh8/21vc/9sbnX/cHJ5/3l8hv9ucHf/
    +dXd9/25wd/9sb3n/dXd9/3V3ff9sb3n/bnF7/3N1fP9sb3n/bnF7/2xvef9wcnn/c3V8/25wd/91eIH/
    +d3qD/3V4gf93eoP/d3qD/3V4gf93eoP/eXuB/3Byef91eIH/c3Z//3Byef9vcXX/eXuB/3Z4fP9tb3b/
    +d3qD/3N1fP9ucHf/bnF7/3N1fP9zdXz/b3F1/29xdf9vcXX/cHJ5/25wd/9tb3j/b3J5/21vc/91d33/
    +dXd9/2dqdP91eIH/bnF7/3N1fP9nanT/Zmlz/25wd/9qbXf/Z2p0/2dqdP9maXP/ZGZs/2Zobv9nanT/
    +Zmhu/2Rncf9maG7/Zmlz/2Rncf9wc33/Zmlz/2Rncf9sb3n/bG95/2psc/91d33/cHN9/25xe/9qbXf/
    +am13/2psc/9sbnX/bG95/3V3ff9ydHz/bG5z/21vdP9wc3z/amx0/2xvef9qbXf/am13/2ptd/9rbXT/
    +a252/21wef9sbnX/dnh8/3Byef9ucHf/amxz/25wd/9ucXv/bnB3/2xudf9ucHf/c3V8/2Zpc/9nanH/
    +bG51/3N1fP9ucHf/d3l//2xudf9vcXX/bG51/2xvef9wc33/bnF7/3l7gf93eoP/cHN9/25xe/94eX3/
    +bnB3/2xudf9qbHP/dXd9/3Z4fP91d33/eHl9/25wd/9vcXX/c3V8/3Byef9zdXz/bnB3/25wd/9sbnX/
    +eHl9/29xdf91d33/bG95/2ptd/9qbXf/bG51/2dqdP9sb3n/ZGdx/3d5f/9qbXf/ZGdx/2Rncf9sb3n/
    +cHJ5/3Byef9wcnn/cHJ5/25xe/9zdn//bnF7/3Bzff9ucHf/b3F1/3N1fP9sbnX/bG51/2xvef9zdXz/
    +b3F1/3Byef9sbnX/b3F1/2xudf9zdXz/bnF7/3Bzff91eIH/e32D/3N2f/9zdn//c3V8/3d6g/9qbXf/
    +cHN9/25wd/9ucHf/eHl9/3N1fP9ucHf/bnB3/25wd/9sb3n/cHJ5/2ptd/9sb3n/bG95/3Byef9zdXz/
    +am13/2xudf9wcnn/bW9z/25wd/9sb3n/amxz/3V3ff9zdXz/bG51/2xudf9zdXz/cHJ5/2xvef9tb3P/
    +am13/3N1fP9ucHf/bnB3/3V4gf9ucXv/c3V8/2ptd/9ucHf/bnB3/25xe/9zdn//bnB3/2xudf9wcnn/
    +cHN9/3N2f/9wc33/bnB3/25xe/9ucXv/cHJ5/3N2f/9wcnn/d3l//3V4gf9wc33/d3l//2ptd/9ucXv/
    +bnB3/3Bzff9wc33/cHJ5/25wd/9wc33/cHJ5/2xudf9ucHf/cHJ5/3h5ff9vcXX/bnB3/3Bzff97fof/
    +c3Z//3V4gf9ucHf/bnF7/3l7gf91eIH/am13/3Bzff9zdn//bnB3/25wd/9ucHf/cHJ5/3N1fP9ucHf/
    +c3V8/3N1fP9zdXz/dnh8/3Z4fP9zdXz/dXd9/3N1fP9sbnX/bnF7/2ptd/9wc33/bG95/3d6g/91d33/
    +bnB3/3l6gP9wc3v/bW91/3Bzff9ucXv/bnF7/2dqdP9sb3n/am13/3Byef9ucHj/bW94/3Byef9ucHf/
    +dXd9/3V3ff9sb3n/d3qD/3V4gf97fYP/c3Z//2xvef91eIH/c3Z//3N2f/9zdn//dXiB/2xvef9wc33/
    +dXd9/25wd/9vcXX/cHJ5/3N1fP9sbnX/e32D/25wd/9qbXf/dXd9/3V3ff9tb3P/dXd9/25xe/9sb3n/
    +Zmlz/2Rncf9maG7/amxz/2dqdP9ucHf/am13/2Zobv9pa3H/cHN5/21vdP9zdXz/bG51/3Byef9wcnn/
    +a211/2tudv9ucHn/aGt0/3V3ff9sb3n/Z2p0/2Zpc/9ucXv/am13/2xudf9maXP/bG95/3Bzff9kZ3H/
    +YmVu/2xudf9zdXz/bG51/3V3ff9ucHf/bnB3/25xe/9ucHf/bnB3/2psc/92eHz/cHJ5/25wd/9sb3n/
    +d3l//3Byef9sbnX/bG51/3Byef92eHz/c3V8/3h5ff9ucXv/bnB3/3V4gf91eIH/dXiB/3Bzff9zdn//
    +cHJ5/3d5f/9sb3n/dXd9/3Bzff9wcnn/cHJ5/21vc/9ucHf/cHN9/2ptd/93eoP/bnB3/2psc/9nanH/
    +b3F1/3N1fP9ucHf/cHJ5/3Byef9ucHf/dXd9/25xe/9ucXv/amxz/21vc/9wc33/bG51/29xdf9wcnn/
    +cHJ5/25wd/9ucHf/bnB3/21vc/9qbXf/bG95/25wd/9ucHf/c3V8/3h5ff9sbnX/c3V8/2dqdP91d33/
    +ZGdx/25xe/9qbXf/bnB3/3h5ff9wcnn/bG51/21vc/9qbXf/am13/2xudf9sbnX/bG95/2xvef9ucXv/
    +c3V8/2dqdP9sbnX/am13/2dqcf9nanT/Z2p0/2Zobv9qbXf/am13/2Rncf9qbHP/am13/2xvef9sb3n/
    +Z2px/2Zpc/9wc33/am13/2xudf91d33/cHJ5/3N1fP9sb3n/cHJ5/25xe/9zdn//bnF7/2xvef9sb3n/
    +cHN9/3Byef9wc33/c3Z//25xe/9ucHf/bnF7/3Bzff93eoP/c3V8/3t9g/97fYP/dXiB/3l7gf9zdn//
    +d3qD/3V4gf93eoP/c3Z//3Bzff9wcnn/d3qD/3d6g/9wc33/c3V8/3N1fP95fIb/cHN9/3Bzff9zdn//
    +e36H/3Bzff9zdn//bG95/2xudf91d33/c3Z//2dqdP9sb3n/c3Z//2xvef9sb3n/bG95/25xe/9wc33/
    +cHJ5/25xe/9zdn//dXiB/3d5f/95e4H/d3qD/3d6g/93eX//cHJ5/3N2f/93eoP/cHN9/2ptd/91d33/
    +cHN9/2hrcv91eID/b3J7/2xueP9zdn7/cHN9/3Byef9ucHf/bnF7/2xvef9ucXv/cHJ6/21wef9tb3f/
    +bG51/3N1fP9wc33/Zmlz/3V3ff9nanT/cHN9/25xe/9nanT/c3V8/25xe/9sb3n/bnF7/25xe/9qbXf/
    +bG51/25xe/9nanH/Zmhu/2dqcf9nanT/ZGdx/3V3ff9qbHP/Z2px/25wd/9sb3n/Zmhu/25xe/9qbXf/
    +bnF7/2Zpc/9qbHP/amxz/2xvef9sb3n/cHJ5/3Byef9oa3X/bG51/29ye/9tcHr/c3Z//25wd/9ucXv/
    +dHZ9/21vd/9tb3b/b3F6/2xudf92eHz/dXd9/25wd/9maXP/cHJ5/2ptd/9sbnX/bG51/25wd/9zdXz/
    +am13/2RmbP9tb3P/dXd9/2xudf92eHz/bW9z/2xudf9zdXz/bG51/2xudf9qbHP/dXd9/2xudf9ucHf/
    +bnF7/3V4gf9wc33/am13/2dqdP9zdn//dXd9/3Bzff92eHz/bnF7/2ptd/9zdn//c3V8/3Byef9sbnX/
    +cHJ5/2xudf91d33/am13/3Bzff9zdXz/cHJ5/3Byef9sbnX/amxz/25wd/9nanT/dXd9/2dqdP9kZ3H/
    +ZGdx/2dqcf9qbXf/amxz/25xe/9qbHP/am13/3N1fP9sb3n/bnF7/21vc/9sbnX/bnF7/2xudf9sbnX/
    +bG95/2xvef9qbXf/bG51/2xudf9vcXX/b3F1/25wd/9ucXv/bnF7/3V4gf95e4H/bnF7/3d5f/9wcnn/
    +d3l//2dqdP9zdn//cHJ5/3Byef93eX//bnF7/2xvef9qbXf/b3F1/29xdf9vcXX/bG51/29xdf9sbnX/
    +c3Z//3N2f/9ucXv/bnB3/3Bzff9zdn//c3Z//3N2f/9ucXv/dXiB/3V4gf9sb3n/bnB3/3Bzff9wc33/
    +cHN9/3Byef9wcnn/d3qD/25xe/9sb3n/eHl9/3Byef9zdXz/amxz/2ptd/9sbnX/am13/2ptd/9sbnX/
    +ZGdx/2xudf9nanT/bG51/2xudf9sbnX/Z2p0/2xudf9sbnX/cHJ5/2psc/9zdXz/cHN9/2ptd/93eX//
    +Z2p0/3Byef9ucHf/cHJ5/25xe/9qbXf/bnB3/3N1fP9zdn//Z2p0/29xdf9vcXX/dXd9/2xudf9ucHf/
    +dXd9/3t9g/9ucHf/cHJ5/2ptd/9nanT/bnF7/3Bzff9maXP/bG51/3Bzff9nanT/am13/2ptd/9sb3n/
    +am13/2psc/9nanH/am13/2xvef9wc33/cHJ5/2xvef9wc33/bnF7/2psc/9sb3n/bG95/3Bzff9qbXf/
    +d3l//3d5f/9oa3L/d3l//3N1e/9sb3n/b3J8/3d6g/91eIH/cHN9/3d6g/9zdn//dnmC/3J1fP9rbnf/
    +aWx2/2dpb/9qbXf/Z2p0/2Rncf9ucHf/Zmlz/2dqdP9nanT/ZGdx/25wd/9kZ3H/Zmhu/2dqdP9qbXf/
    +ZGdx/2Rncf9nanT/Z2p0/2dqcf9nanH/Z2p0/2Jlbv9wcnn/amxz/2psc/9zdXz/bnF7/2xudf92eHz/
    +bnF7/2xvef9maXP/amxz/2psc/9ucXv/bG95/3Z4fP91d33/bG95/2xveP9ydH3/cXN7/3V4gf9wcnn/
    +c3Z//3R3gP9ucHf/bG93/21wef9oa3X/dXd9/25xe/9sbnX/bG51/3Byef9sb3n/bnF7/3N1fP9wc33/
    +c3Z//2xvef9nanH/bnB3/3d5f/9sb3n/d3qD/2xvef9wc33/dXiB/25wd/9sb3n/bG51/3V3ff9ucHf/
    +bG51/2xvef91d33/bnF7/2ptd/9maXP/c3V8/3N1fP9wcnn/dnh8/2xudf9sbnX/c3V8/25xe/9wc33/
    +bnF7/3Bzff9zdXz/dXiB/25xe/91eIH/dXiB/3Bzff91eIH/dXiB/3Bzff97fYP/c3Z//36Biv91d33/
    +am13/2xvef9ucXv/cHN9/2xvef9zdXz/bnB3/3Bzff91d33/cHJ5/3Bzff9qbHP/amxz/25xe/9qbHP/
    +Z2px/2xvef9sb3n/bG51/2xudf9nanT/bG51/2psc/9sb3n/am13/2xvef91d33/dnh8/2ptd/9zdXz/
    +bG51/25xe/9kZ3H/bG95/2xudf9sbnX/dXd9/2xvef9qbXf/am13/29xdf9ucHf/b3F1/2xudf9ucHf/
    +b3F1/3N1fP9zdXz/cHJ5/3N1fP92eHz/cHJ5/3Byef9zdXz/bG51/3V3ff9zdXz/amxz/21vc/9ucXv/
    +bG95/2xvef9nanT/Z2px/2ptd/9nanH/Z2px/25xe/9nanT/ZGdx/11gav9gY2z/Zmhu/2Rncf9maXP/
    +ZGZs/1xfaP9maXP/YmVu/2Rncf9kZ3H/Zmlz/2psc/9qbHP/bG95/2ptd/9maXP/cHN9/3Bzff9qbXf/
    +dXd9/2Zpc/9ucXv/bG95/3N1fP9zdXz/bnB3/2xvef9wc33/c3Z//2xudf9sbnX/bW9z/3N1fP9qbXf/
    +bG51/3V3ff97fYP/b3F1/3N1fP9sbnX/bG51/25wd/9zdn//bG95/3Bzff91eIH/cHN9/3Bzff9zdn//
    +c3V8/21vc/9ucHf/bG51/3Byef9zdXz/dnh8/3Z4fP9zdXz/dnh8/3N1fP9ucHf/c3V8/3Byef9zdXz/
    +am13/3h5ff93eX//b3F1/3p9g/9vcnr/bW92/25xe/9zdXz/cHN9/2xudf9sb3n/am13/2xudf9qbXb/
    +a254/2tud/9sb3n/c3V8/3Byef9vcXX/d3l//3V3ff9zdXz/cHJ5/29xdf92eHz/cHJ5/25wd/9wcnn/
    +cHN9/25wd/9ucHf/c3V8/3N1fP9tb3P/bG51/2xvef9nanT/c3V8/2xudf9sb3n/dXd9/3Byef9ucHf/
    +d3l//3Byef9zdXz/amxz/25wd/9sb3n/dXd9/3N2f/93eX//dXd9/3J1fv9sb3j/bW94/2psc/9wc33/
    +amxz/2ptd/9sb3n/aGtz/2ttdf9vcnz/bW92/3h6gP9zdn//c3V8/25wd/9zdXz/Zmlz/2Rncf9gY2z/
    +Zmhu/2Zpc/9gY2z/XWBq/2Rncf9sb3n/ZGdx/3Byef9kZ3H/am13/2dqdP9iZW7/Zmhu/2Jlbv9nanT/
    +amxz/2psc/9sbnX/c3V8/25xe/9qbXf/Z2p0/2xvef9ucXv/c3V8/3V3ff9sbnX/bnB3/3N1fP9sb3n/
    +cHN9/25xe/9wc33/cHJ5/3V4gf9zdXz/c3Z//3V4gf9zdXz/c3Z//3N2f/9ucXv/d3qD/25wd/95e4H/
    +am13/2ptd/9qbXf/bnF7/25xe/9sb3n/c3Z//3N2f/91eIH/eXyG/3N2f/91eIH/bnB3/25wd/92eHz/
    +bnB3/29xdf91d33/c3Z//25xe/9wcnn/am13/2xvef9ucHf/bG95/2xvef9ucXv/dXd9/3Z4fP9vcXX/
    +dnh8/2ptd/9ucXv/YGJo/2psc/9qbXf/bG51/3d5f/9tb3P/bW9z/2xudf9vcXX/bG51/2xudf9ucHf/
    +bG51/29xdf91d33/dXd9/3N1fP9sbnX/dXd9/25xe/9qbXf/cHN9/2psc/9sb3n/Z2p0/2Rncf9maG7/
    +ZGdx/2Zpc/9nanT/Zmhu/2dqcf9sb3n/am13/21vc/92eHz/cHJ5/2xudf9sbnX/Zmlz/2psc/9nanT/
    +am13/2xudf9maXP/bnF7/2dqdP9tb3P/cHJ5/2xudf9sbnX/bG51/2xudf9wcnn/amxz/3N1fP9zdXz/
    +bG51/3Byef9iZW7/am13/2ptd/9sb3n/Z2p0/2xudf9nanT/bnF7/25xe/9maXP/Z2p0/2xudf9wc33/
    +Z2p0/2Zpc/9sb3n/c3Z//2ptd/9ucXv/am13/2psc/9ucXv/cHN9/2dqdP9sb3n/bnB3/25wd/9wcnn/
    +cHJ5/3N1fP9sbnX/am13/2ptd/9ucXv/c3V8/3h5ff9zdXz/cHJ5/3Bzff9ucXv/bnB3/3N1fP9ucXv/
    +d3l//2xvef92eHz/eXuB/2xudf96fIP/bnF5/2xudf9sb3n/c3V8/25xe/9nanT/Z2p0/2xudf9sbnX/
    +bW93/21veP9vcXn/am13/3Byef9wcnn/am13/3V4gf9wc33/c3V8/2xvef9sbnX/c3V8/3Byef9wcnn/
    +cHJ5/3V3ff9wcnn/bnB3/25wd/9sb3n/bG95/2ptd/9nanT/Z2p0/3Bzff9sbnX/amxz/3N2f/9sb3n/
    +Z2p0/25xe/9qbXf/bnF7/2dqcf9tb3P/bG51/3h5ff9wc33/c3Z//3d5f/9ucXv/a251/2lsdv9nanT/
    +bnF7/2psc/9qbXf/bnF7/21vd/9ucXv/cHN8/2xudf93eX//cHJ5/21vc/9tb3P/c3V8/3N1fP9wcnn/
    +bG95/2xvef9zdn//am13/2dqdP9wc33/eXuB/3Bzff97fYP/c3V8/3N2f/9zdn//bG95/2xvef9sbnX/
    +c3V8/25wd/9ucHf/bG51/3V3ff9ucXv/bG51/2psc/9wc33/cHN9/3N1fP93eoP/bnB3/29xdf9wc33/
    +bG95/2ptd/9qbHP/amxz/2Zpc/9sb3n/bG51/2xvef9ucXv/am13/2xvef9qbXf/bG51/3V3ff9sbnX/
    +d3l//2ptd/9maXP/Zmlz/2ptd/9qbXf/Zmlz/2psc/9maG7/Z2p0/3Byef9qbHP/bG95/2dqcf9nanT/
    +bG95/2Jlbv9gY2z/Zmlz/2Zpc/9maG7/Zmhu/2dqdP9kZ3H/Z2px/2dqcf9qbXf/am13/3Bzff9wc33/
    +bG51/3N1fP9sbnX/c3V8/2Vmav9ucHf/bG51/2xudf95e4H/b3F1/29xdf9qbHP/bW9z/21vc/9ucXv/
    +bnB3/3Byef9ucHf/d3l//3V4gf95e4H/dXiB/3l7gf9wc33/dXiB/3d6g/9wc33/eXuB/3l7gf9ucXv/
    +cHJ5/3Bzff9ucXv/cHN9/25wd/9ucHf/c3Z//25xe/9ucXv/eXuB/3V4gf9wc33/cHJ5/2xvef9wc33/
    +c3Z//3d6g/91eIH/cHN9/3d6g/9wc33/bnF7/3V4gf9zdn//cHN9/3Bzff9zdn//d3qD/3Bzff95fIb/
    +e36H/3N2f/97fYP/cHN9/3t9g/9zdn//c3Z//3N2f/9sb3n/bG95/3N2f/9wc33/bG95/2xudf9ucHf/
    +dXd9/2xudf9ucHf/cHN9/3t9g/9ucXv/cHN9/25wd/9sbnX/bnF7/25xe/9qbHP/bG51/25wd/9ucHf/
    +bG95/3V4gf9zdn//cHN9/3N1fP9ucHf/cHN9/3N2f/93eoP/c3Z//3V4gf91eIH/cHN9/25xe/9wc33/
    +cHJ5/3Z4fP9wcnn/d3l//3t+h/9ucXv/fX+G/3Fze/9rbnf/cHJ5/3N1fP9zdXz/bG95/2ptd/9qbHP/
    +aGpx/2ptdP9sb3n/cnV+/21wev91eIH/c3Z//3Byef9/gYf/d3qD/3l7gf9zdn//cHN9/3V4gf9zdn//
    +c3Z//3t9g/93eoP/eXuB/3V4gf9zdn//dXiB/3N2f/9sb3n/bnF7/2xvef95e4H/cHN9/3N2f/95fIb/
    +cHN9/29xdf9wc33/bG95/3N1fP9maXP/bW9z/3Byef92eHz/dnh8/3V4gf94eX3/cnR7/21veP9vcXj/
    +a21z/3Z4fP9sbnX/bnF7/2xvef9rbnX/b3J6/3F0ff9qbXf/dXiB/3N2f/9sb3n/cHJ5/3Bzff9zdn//
    +cHN9/2xvef9ucHf/dXd9/2psc/9qbHP/cHJ5/3N1fP9vcXX/dnh8/25wd/9wcnn/c3V8/2ptd/9wcnn/
    +cHJ5/3d6g/9wc33/bnF7/2xvef91d33/c3V8/21vc/9tb3P/dXd9/3Bzff9zdXz/c3Z//2xudf9nanT/
    +bnF7/2ptd/9qbXf/Z2p0/2psc/9qbHP/bG95/2xudf9wc33/bnF7/2ptd/9ucXv/bG51/2dqdP9ucXv/
    +Zmlz/3V4gf9qbXf/Zmlz/2psc/9tb3P/bG51/2psc/9sbnX/am13/25xe/91d33/b3F1/3Byef9vcXX/
    +cHJ5/3Z4fP9ucHf/am13/3Byef9wcnn/bG51/2ptd/9sbnX/am13/2ptd/9nanT/cHN9/25wd/91d33/
    +dXd9/2xudf91d33/bG51/3V3ff9nanH/cHJ5/2xvef9sb3n/eXuB/25wd/9ucHf/Z2px/21vc/9tb3P/
    +c3V8/2psc/9tb3P/bG51/3V3ff9wcnn/dnh8/3Bzff92eHz/cHJ5/25xe/91eIH/bnF7/3V4gf9wc33/
    +am13/25wd/9wc33/bnF7/3Bzff9vcXX/bnB3/3V4gf9ucXv/cHN9/3d5f/9wc33/cHJ5/2xvef9qbXf/
    +cHN9/25xe/9ucXv/c3V8/2ptd/9zdn//bnB3/2xudf91d33/bnF7/2xudf9sbnX/cHJ5/25xe/9sbnX/
    +cHJ5/3V3ff9tb3P/dXd9/2dqdP9zdXz/am13/2xvef9sb3n/am13/2Rncf9sb3n/am13/2Jlbv9qbHP/
    +am13/3N1fP9qbHP/bG51/3Byef9+gIb/cHJ5/3Byef9sbnX/bG51/25wd/9wc33/Zmlz/2ptd/9qbXf/
    +am13/2ptd/9ucXv/dXd9/3Byef9vcXX/b3F1/3N1fP9zdXz/eXuB/25wd/9zdXz/cHJ5/2xvef9sb3n/
    +cHJ5/2ptd/91d33/bG51/3V3ff95e4H/b3F1/36Bif9ydHv/bG52/3N1fP9zdXz/dnh8/3V3ff9ucHf/
    +bG51/25wd/9rbnj/cXN6/3V3gP9wcnn/cHN9/3N2f/9zdXz/f4GH/25xe/95e4H/cHN9/3N1fP95fIb/
    +d3qD/3Bzff93eoP/cHN9/3N2f/9ucXv/bnF7/3Bzff9wc33/bnF7/3Bzff9wcnn/d3qD/3Bzff9wc33/
    +d3qD/3V4gf9wc33/dXiB/3V4gf91eIH/am13/3Bzff9wc33/eXuB/3N2f/95e4H/eXuB/3Z4gf9vcnz/
    +b3J4/21wev91d33/bnB3/3Bzff91eIH/b3J5/3Bzff9xc3r/bnB3/3d5f/9zdn//bG95/2xvef9ucXv/
    +dXd9/3Byef9qbXf/bW9z/3V3ff9nanH/bG51/25xe/9ucXv/bW9z/3Z4fP9sbnX/bG95/25xe/9nanT/
    +bG51/2ptd/9wc33/bG51/25wd/9ucHf/cHJ5/25xe/9sbnX/bG51/3V3ff9zdXz/dXd9/3l7gf9wcnn/
    +bnB3/3V4gf9wc33/cHN9/2xvef9ucHf/am13/25xe/9sb3n/c3Z//3N2f/9sb3n/bnB3/25wd/9sbnX/
    +c3V8/2xudf97fYP/bnB3/2xudf9qbXf/am13/25wd/9nanT/am13/2dqdP9sb3n/dXd9/2psc/9qbXf/
    +Z2p0/2xudf91d33/bG51/2dqdP9wcnn/cHN9/2xudf9qbHP/am13/2ptd/9sb3n/Z2p0/2xvef9nanT/
    +bG95/2xvef9maXP/am13/2psc/9ucXv/YmVu/2xudf9nanT/am13/3V3ff9qbXf/am13/2Rncf9sbnX/
    +am13/2ptd/9ucHf/bnB3/2ptd/91d33/c3Z//3V3ff9wc33/dXd9/3Bzff9wc33/c3Z//25xe/91eIH/
    +cHN9/2xudf9ucHf/bnB3/25wd/9wcnn/bG51/2xudf9wcnn/bG51/3Byef94eX3/bG51/2xudf9nanT/
    +ZGdx/2xudf9sb3n/cHJ5/3Byef9tb3P/bnF7/2psc/9qbHP/cHN9/25xe/9sbnX/am13/25xe/9ucXv/
    +am13/2xvef9wc33/bW9z/3V3ff9nanH/c3V8/25xe/9wcnn/c3V8/3N1fP9qbHP/bnB3/25xe/9qbHP/
    +amxz/2psc/9ucXv/Zmlz/2psc/9sb3n/dXiB/2ptd/9ucXv/am13/2xudf9sbnX/c3V8/2Zpc/9qbXf/
    +bnB3/25wd/9zdXz/c3V8/3N1fP9sb3n/bG51/2ptd/9wcnn/cHJ5/3l7gf9ucHf/dXd9/25wd/9zdXz/
    +bG51/25xe/9sbnX/c3V8/2ptd/92eHz/dXiB/2xudf97fYT/cXN6/2dqc/9qbXf/am13/3Bzff91d33/
    +bnB3/2xvef9sb3n/bG94/21wd/91d3z/bG51/3Byef9ucHf/bG51/3l7gf9qbXf/dXd9/2xudf9nanH/
    +d3l//2ptd/9sb3n/bnF7/2ptd/9ucXv/amxz/2xudf9qbXf/bG95/3Byef9ucHf/bG51/3V3ff9sb3n/
    +bnB3/3d6g/9wc33/bnF7/3N2f/9ucXv/bnF7/2dqdP9sb3n/bnF7/3l7gf91eIH/d3qD/3Z4fP9ydHv/
    +a252/2xudP9qbHP/c3V8/21vc/9wcnn/cHJ5/25wd/9sbnX/a212/2Nmb/9sb3n/Z2p0/2Zpc/9sbnX/
    +bG95/3V3ff9ucXv/bG95/29xdf93eX//Zmlz/25wd/9wcnn/c3V8/3Byef97fYP/c3V8/3Bzff91eIH/
    +bG95/25xe/9wcnn/dXiB/3Bzff9wcnn/bnB3/25xe/91d33/bnB3/2xudf91d33/dXd9/3N1fP94eX3/
    +bnB3/29xdf92eHz/cHJ5/3Byef9qbHP/b3F1/2psc/9ucHf/bnB3/3N2f/91eIH/cHN9/3Bzff9ucHf/
    +cHJ5/3Bzff9sb3n/dXiB/25wd/9ucHf/b3F1/25wd/9wcnn/bG51/3Byef9sbnX/bnB3/3Z4fP9tb3P/
    +bG51/2psc/9qbXf/d3l//2xudf9kZ3H/am13/25xe/9qbXf/Z2px/2dqcf9maXP/bG95/2dqdP9ucXv/
    +bnF7/25xe/9wc33/bG51/25xe/9tb3P/dnh8/2Zpc/9ucXv/am13/2ptd/93eX//bG95/2xvef9qbHP/
    +bnB3/29xdf9zdXz/bG51/2ptd/9qbXf/cHN9/25wd/9wc33/bnF7/3N1fP9wcnn/bnB3/25xe/9qbXf/
    +bG95/25xe/9nanT/am13/2ptd/9qbHP/Z2p0/2psc/9nanT/bG95/2Zpc/9sb3n/dnh8/21vc/9sbnX/
    +bG51/2xudf9ucHf/bnB3/3Byef9wc33/bnB3/3V3ff9ucHf/bnB3/3V4gf91eIH/cHN9/25xe/91eIH/
    +d3qD/3Byef91eIH/c3Z//25wd/92eHz/amxz/3Z4fP9wcnn/c3V8/3N1fP9zdXz/amxz/25wd/9wcnn/
    +bG51/2ptd/9sbnX/c3V8/2psc/9vcXX/cHJ5/3V3ff9wcnn/cHJ5/25wd/9ucHf/bnB3/3V3ff9nanH/
    +bG95/2xvef9qbXf/c3Z//3N2f/95e4H/dXiB/3Bzff9zdn//dXiB/3d6g/+Bg4r/d3l//35/g/97fYP/
    +fn+D/3V3ff95fIb/c3Z//3l7gf9ucHf/dXiB/3V4gf9tcHr/fYCH/3V3fv9wc3v/dXeA/3Bzff97fYP/
    +e32D/25xe/9ucHf/cnR7/21wev9tb3f/a254/2Zobv9maXP/Z2px/2dqcf91d33/amxz/2xvef9sbnX/
    +Z2px/3Byef9sb3n/bG95/2xvef9sbnX/bnB3/29xdf9vcXX/bnF7/25xe/91eIH/bnF7/25wd/9ucXv/
    +cHN9/3Byef95e4H/cHN9/3N2f/91eIH/c3Z//25xe/9sb3n/c3Z//3d6g/97fYP/d3qD/3l8hv95e4H/
    +dXiB/3F0fv9ucHf/aGt0/2xvef9sbnX/bG95/2hrdf9rbXf/a254/3F0fP9ucXv/en2D/3l7gf9wc33/
    +cHN9/3Bzff9wc33/bnB3/29xdf9vcXX/dXd9/2Zobv9tb3P/bnF7/25xe/9sbnX/dXd9/25wd/9wcnn/
    +cHJ5/2dqdP9qbXf/bW9z/3Z4fP9sbnX/amxz/2dqdP9qbXf/bnF7/2Zpc/9maXP/cHN9/3N1fP9sb3n/
    +dXd9/2psc/9maXP/bG95/2xudf9qbHP/Zmlz/2dqdP9maXP/bG51/2dqdP9ucXv/bnF7/2ptd/9qbXf/
    +Zmlz/2dqcf9qbXf/Zmlz/3N1fP9nanT/amxz/2psc/9sbnX/am13/2dqdP9maXP/Zmlz/2psc/9zdXz/
    +bG51/2xudf9iZW7/Z2p0/3N1fP9qbXf/Zmlz/2ptd/9sb3n/am13/2dqcf9kZ3H/Zmlz/25xe/9nanT/
    +am13/2xvef9qbXf/cHN9/2Zpc/9nanT/Z2p0/25xe/9gY2z/Zmlz/2Rncf9iZW7/cHJ5/2xvef9nanT/
    +Z2px/2ptd/9qbHP/am13/21vc/9sbnX/Zmlz/3Bzff9nanT/bnF7/2xvef9ucXv/bG95/2ptd/9ucXv/
    +bG51/2xvef9sb3n/Zmlz/2dqdP9qbXf/Zmlz/2dqdP9maG7/Zmlz/2ptd/9nanH/am13/3Byef9kZ3H/
    +Z2px/2Zobv9iZW7/Zmlz/2xudf9qbXf/am13/2xudf9ucXv/amxz/2psc/9ucXv/bG95/2dqdP9nanH/
    +bG95/3Bzff9sbnX/Z2p0/2xvef9qbHP/c3V8/2dqdP91d33/bnB3/3Z4fP92eHz/bnF7/2psc/9sbnX/
    +cHJ5/21vc/9wcnn/cHJ5/3V3ff9ucHf/bW9z/3V3ff93eX//bnF7/25xe/9sbnX/bG51/3Byef9wc33/
    +Zmhu/25wd/9ucHf/Z2p0/2ptd/9wcnn/c3V8/2xudf9vcXX/bnB3/3Byef9zdXz/eXuB/2xudf91d33/
    +dXd9/3V3ff9ucHf/c3V8/25wd/91d33/bnB3/3d6g/91eIH/bnB3/3t9hP9wc33/a212/3Bzff9wc33/
    +dXiB/3l7gf9wc33/cHJ5/3N2f/9ucXv/b3F6/3V3ff9tb3P/dXd9/25wd/9ucHf/d3qD/25wd/9zdXz/
    +bnB3/21vc/92eHz/bnB3/3Byef9wcnn/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/25wd/9tb3P/
    +bG51/2ptd/9qbHP/cHN9/2xvef9qbXf/bnF7/2dqdP9qbHP/YmVu/2Zpc/9qbXf/Z2p0/2Zobv9qbXf/
    +Z2pz/2dqc/9pbHP/a21y/2ttdP90dnz/bnB3/2xvef9tcHr/bnF7/2ptd/9maXH/ZWhy/2xvef9sb3n/
    +YGNs/2Zobv9kZmz/d3l//3N2f/9ucXv/c3V8/3t+h/9sb3n/c3V8/3V4gf95fIb/eHl9/31+gf9zdXz/
    +dXiB/3d6g/9ucXv/cHN9/3Bzff93eX//bnB3/2xvef9ucHf/bG95/3Z4fP9qbXf/bG95/3V3ff94eX3/
    +cHJ5/3V3ff9wcnn/am13/3N1fP9tb3P/am13/2Zpc/9nanT/am13/21vc/9sbnX/c3V8/3V3ff9zdn//
    +c3Z//3Byef9zdXz/eXuB/3Bzff95fIb/c3V8/3N2f/9wc33/c3Z//3V4gf92eHz/e32D/3V3ff9zdn//
    +eXyG/3N2f/9zdn//bnF7/3V4gf93eoP/bnF7/2ptd/9zdXz/c3V8/3Byef9vcXX/bG51/2xvef91d33/
    +bG51/3Byef9ucXv/am13/25xe/9qbHP/am13/2dqdP9ucXv/XWBq/2ptd/9nanT/Zmlz/3N1fP9sb3n/
    +am13/2dqdP9sb3n/bG51/25wd/9tb3P/bW9z/2dqcf92eHz/cHJ5/3V3ff9zdXz/cHJ5/3Bzff9wc33/
    +c3Z//3Bzff9zdn//c3Z//2xvef9qbHP/bnB3/25wd/9zdXz/bW9z/2xudf9zdXz/b3F1/3N1fP94eX3/
    +bnB3/2xudf9vcXX/Z2px/2psc/9wcnn/bnB3/25wd/9ucHf/cHN9/2dqdP9sbnX/cHN9/3N1fP9sb3n/
    +amxz/25xe/9ucXv/bG51/2ptd/9ucXv/bG51/3Z4fP9qbHP/dnh8/25xe/9zdn//c3Z//3Bzff9qbHP/
    +bnB3/3N1fP9tb3P/bnF7/2ptd/91d33/bnB3/25wd/9wcnn/dnh8/3N1fP9wcnn/bnB3/25wd/9wc33/
    +dXiB/2dqdP9wcnn/c3V8/2xvef9wc33/cHN9/3N2f/9ucHf/b3F1/29xdf9zdXz/cHJ5/3l8hv9sb3n/
    +dXiB/3N1fP92eHz/bW9z/3Byef9ucHf/dXd9/25wd/95fIb/d3l//21vc/96e4H/b3F5/2Zpcv9sbnX/
    +am13/3Byef94eX3/bnB3/25wd/9zdXz/cHJ3/3Fzev91d3v/bW9z/3N1fP9zdXz/b3F1/3t9g/9ucHf/
    +cHJ5/25xe/9sbnX/c3V8/2ptd/9sb3n/am13/2ptd/9qbXf/bW9z/2xudf9sbnX/b3F1/3N2f/9ucXv/
    +bnB3/2xvef9sb3n/bnB3/3Z4fP9wcnn/bnB3/3Byef9ucHf/bnB3/2psc/9wcnn/c3Z//3V4gf9wc33/
    +e32D/3N2f/90d4D/bnF7/25xef9rbnf/c3Z//3Byef9wcnn/bnF7/3N2fv9xdHv/bG95/2hrdf9wc33/
    +bG95/2Rncf9qbXf/bG51/3h5ff9zdXz/cHJ5/25wd/93eoP/am13/25xe/9ucXv/cHN9/2xvef9zdn//
    +bG95/25xe/9zdXz/bG51/25wd/9wcnn/d3l//2dqdP9iZW7/Zmlz/2ptd/9zdXz/am13/2xudf9wcnn/
    +d3l//25wd/91d33/bnB3/2ptd/91d33/b3F1/2psc/9nanH/b3F1/2xudf9vcXX/b3F1/3Byef91d33/
    +bnB3/25wd/9sbnX/bW9z/3N1fP9nanT/d3l//2xudf9qbXf/amxz/2psc/9nanH/Zmhu/2dqdP9kZ3H/
    +YmVu/2xudf9gY2z/Zmhu/2BjbP9maXP/bG51/2Rncf9iZW7/Zmlz/2Rncf9maXP/Zmhu/2Rncf9nanT/
    +bnF7/2dqdP9sb3n/bnF7/2xvef9ucXv/Z2p0/25xe/9ucXv/c3V8/2Zobv9wcnn/bnB3/2Zpc/91d33/
    +bnF7/25wd/9qbHP/bnB3/2ptd/9sb3n/amxz/2dqdP9iZW7/bnF7/2dqdP9zdXz/bnF7/2xvef9wc33/
    +bG95/2xvef9sbnX/am13/2ptd/9maXP/YmVu/2xvef9ucHf/c3V8/21vc/9sbnX/cHJ5/2ptd/9wc33/
    +dXd9/25wd/9wcnn/bW9z/2Zobv9qbXf/dXiB/25xe/9sb3n/bG95/3N2f/9wcnn/cHN9/3V3ff91d33/
    +bnF7/2xvef91d33/bnF7/2xudf9qbXf/am13/2xudf91d33/am13/3N1fP9ucXv/bG95/2xvef9qbXf/
    +ZGdx/2dqcf9maXP/Z2p0/2xvef9qbXf/Z2p0/2dqcf9qbHP/bG95/3N1fP9wc33/bG95/2ptd/9tb3P/
    +bnB3/3Bzff9maG7/bG51/2xudf9sbnX/bnF7/25xe/91eIH/cHJ5/3N1fP9ucHf/dXiB/3N2f/95e4H/
    +c3Z//3d6g/9wc33/eXuB/25xe/9wcnn/c3Z//3Z4fP9ucHf/eXuB/3d5f/9wcnn/fH2C/3F0fP9wcnz/
    +c3Z//3N2f/93eoP/eXyG/3Bzff91d33/eHuF/3N1e/9ydHn/cHN9/2tud/9qbXf/am13/2dqcf9zdn//
    +bG51/25xe/9ucXv/bG51/3N1fP9sb3n/bG95/2xudf9vcXX/bG95/25wd/9sb3n/bnF7/25wd/9zdn//
    +bG95/25wd/9ucHf/cHJ5/29xdf92eHz/bnF7/2xvef9ucXv/cHN9/25xe/9sb3n/c3Z//3N2f/91eIH/
    +cHN9/3l7gf9zdn//c3Z//25weP9ucXn/bG51/3Byef9vcXX/bG95/25wd/9zdXz/cXN6/2lsdP9ucHf/
    +dnh8/25xe/9nanT/bG51/25wd/92eHz/c3V8/3N1fP9sbnX/dnh8/2xudf9ucHf/bnF7/3N1fP9ucHf/
    +dXd9/25wd/9wc33/dXiB/25xe/9sb3n/cHN9/3d6g/9ucHf/bG95/3Byef9wc33/eXuB/25xe/9wcnn/
    +cHN9/3V4gf9ucHf/dXd9/25wd/9wcnn/dXiB/25xe/9sb3n/Z2p0/2xvef9qbXf/bnB3/29xdf9ucHf/
    +dXd9/25wd/9ucHf/bnB3/25wd/9wc33/am13/3d5f/9ucHf/bnB3/25wd/9sb3n/cHJ5/3N1fP9wc33/
    +bnB3/25wd/93eX//bnB3/25wd/9ucHf/dXd9/3h5ff9zdXz/bG51/3Byef9wcnn/cHN9/3Byef9ucHf/
    +bnB3/3N1fP9sbnX/am13/2xvef9qbXf/c3V8/2Zpc/9ucXv/am13/2xvef9iZW7/am13/2dqdP9kZ3H/
    +cHN9/2xvef9sbnX/amxz/3Bzff9sbnX/am13/3N2f/9zdXz/bnF7/3l8hv9zdn//eXyG/3V4gf9zdn//
    +c3Z//25xe/9wc33/bnB3/3Byef9zdXz/bG51/2dqcf9wcnn/c3V8/3N1fP9sbnX/bG51/2xvef9qbXf/
    +c3V8/3V3ff9sb3n/bG95/2ptd/9iZW7/Zmlz/25xe/9qbXf/am13/2Zpc/9sb3n/amxz/2psc/9ucXv/
    +bnF7/2dqdP9maXP/bG95/2Zpc/9maG7/ZGdx/2dqcf9kZ3H/bG95/2Jlbv9qbXf/am13/2Zpc/9nanT/
    +Zmlz/2BjbP9kZmz/ZGdx/2Rncf9qbXf/Z2px/2Zpc/9kZ3H/Zmhu/2ptd/9wc33/c3V8/2xudf9nanT/
    +bG51/3Bzff9sb3n/Zmhu/25wd/9ucHf/bG51/25xe/9wc33/dXd9/29xdf9ucHf/bnB3/3N2f/9ucHf/
    +eHl9/3Byef91d33/b3F1/3V3ff9ucHf/bnB3/25wd/9zdXz/am13/3V4gf91d33/bG94/3d5gP9tcHj/
    +aGt1/2ptd/9qbXf/bG95/3N1fP9sbnX/am13/25xe/9vcXf/cHJ5/3V3e/9wcnn/cHN9/3V4gf9ucXv/
    +e36H/25xe/9wc33/cHN9/25xe/93eX//bnF7/3Byef9ucHf/cHJ5/25xe/9ucHf/bnB3/3Bzff9ucXv/
    +c3Z//3Bzff9zdXz/bnF7/2xvef9ucHf/d3l//2xvef9wcnn/am13/2xudf9ucXv/bW9z/3V3ff9ucHf/
    +bnF7/25wd/94eX3/cHJ5/3N1fP9qbXX/aGt1/2hrdP9ucXv/bG51/2ptd/9qbXf/bnF7/2tueP9kZ3D/
    +ZWhx/3J1fP9ucXv/am13/2xudf9ucHf/c3V8/3N1fP9ucXv/bG95/3Z4fP9qbHP/cHJ5/25wd/9zdXz/
    +bnB3/3d5f/9wcnn/bnF7/3Bzff9nanT/bnF7/25xe/93eoP/bnB3/2xvef9nanT/bnB3/3N1fP9qbHP/
    +amxz/2ptd/91d33/bG95/25xe/9sbnX/bG51/25xe/9nanH/Z2px/2Zpc/9maXP/YmVu/2dqdP9qbHP/
    +bG95/3N1fP9qbHP/am13/2dqdP9maXP/cHN9/2dqdP9zdXz/bG51/2xudf9wc33/bnB3/21vc/9tb3P/
    +c3V8/2xvef9sb3n/e36H/25wd/9zdXz/bnB3/3V4gf97fYP/cHN9/3Byef9zdn//c3Z//3d6g/9wcnn/
    +bnB3/3Byef95e4H/cHJ5/3V4gf95e4H/c3Z//3l7gf9zdXz/eXyG/3d6g/95fIb/bG95/3V4gf9zdXz/
    +cHN9/3l8hv95e4H/dnh8/3N2f/9+gIb/dXiB/3V4gf9tb3P/bW9z/2dqcf92eHz/bnB3/3d6g/9zdXz/
    +am13/2xvef9qbXf/Zmlz/2dqcf9nanH/am13/2dqdP9nanT/bG95/3Bzff9ucHf/bW9z/25wd/9tb3P/
    +am13/3N1fP91d33/bG95/2ptd/9ucXv/ZWZq/2dqcf9wcnn/bnB3/25wd/9vcXX/c3V8/25wd/9ucXv/
    +d3l//3V3ff9ucXv/bG95/3V3ff9wcnn/bnF7/2xvef9ucXv/cHJ5/3V3ff9sb3n/d3l//3d5f/91eIH/
    +eXuB/3d6g/9ucXv/c3Z//3t9g/97fYP/fX6B/3Bzff9zdn//c3V8/3Bzff93eoP/dXiB/3V4gf9sb3n/
    +Z2p0/25wd/9ucXv/cHJ5/2dqdP9ucXv/bnB3/25wd/9wcnn/cHN9/3Z4fP9sbnX/bG51/21vc/9wc33/
    +bG95/3N1fP9ucXv/dXd9/2xudf92eHz/bnF7/3Byef91eIH/c3Z//29xdf95e4H/d3l//3N1fP97foX/
    +dXd9/3J0e/9zdn//dXd9/31+gf97fof/dXiB/3V4gf91eIH/dHZ9/3J1f/92eH//bnF7/3N1fP9wcnn/
    +bW9z/3l7gf9sbnX/bnB3/3Byef9ucHf/c3V8/25wd/9ucHf/bG51/2ptd/9qbHP/Z2p0/2psc/9qbXf/
    +bG51/3N1fP9tb3P/amxz/2ptd/9sb3n/am13/3d5f/9sbnX/bG95/2ptd/9qbXf/cHN9/2ptd/9zdXz/
    +cHJ5/25wd/9ucHf/c3V8/2xvef91d37/cHN4/3R2ff9ydX3/eHqA/3V4gf9zdn//b3J8/29yfP9vcnj/
    +aGpy/2hrdP9zdXz/bG95/2Zpc/9sb3n/am13/3V3ff9wc33/cHN9/25xe/94eX3/am13/3Bzff91eIH/
    +c3Z//2xvef91d33/b3F1/2xvef9ucXv/Z2p0/25xe/9wc33/eXyG/3Byef9ucHf/am13/3N2f/93eoP/
    +bnF7/25wd/9wcnn/dnh8/25wd/9ucXv/bW9z/2xudf9zdXz/bG51/2psc/9qbXf/bG95/2ptd/9ucHf/
    +bG51/25wd/93eX//am13/25wd/9sbnX/am13/25xe/9nanT/c3V8/2ptd/9sbnX/cHJ5/2xudf9sbnX/
    +bG51/3N1fP9tb3P/bnB3/3V3ff9sbnX/am13/2dqdP9ucXv/dXd9/2xvef9nanT/am13/2xudf9wc33/
    +amxz/2psc/9nanT/c3V8/2xudf9zdXz/dXd9/3Byef9zdn//bG95/3N2f/9ucXv/cHN9/2dqdP9ucXv/
    +bnB3/2dqdP9wc33/bG95/25wd/9ucHf/d3l//3Byef9wcnn/Z2px/2xudf9iZW7/bnF7/2psc/91eIH/
    +bG95/2psc/9maXP/Z2p0/2Zobv9maG7/ZGdx/2Zobv9iZW7/YGNs/2Rncf9nanT/ZGdx/2Rncf9kZ3H/
    +YGNs/2Rncf9sb3n/bG95/2dqdP9maXP/Z2p0/11fZf9iZW7/bG95/2xvef9qbXf/bG51/2xvef9qbXf/
    +bnF7/3Z4fP94eX3/cHJ5/2xudf9zdn//cHN9/3N1fP9ucHf/bnF7/3Bzff93eX//bnB3/3Z4fP92eHz/
    +c3V8/3V3ff9wc33/b3F1/29xdf9zdXz/bnB3/3N1fP9tb3P/bG51/2xudf9sbnX/cHN9/2ptd/91d33/
    +Z2p0/2Rncf9sbnX/bG95/2xvef9nanT/bG51/2xudf9sbnX/bnB3/3Bzff91d33/b3F1/25wd/9ucHf/
    +c3V8/3Byef92eHz/cHJ5/3V3ff9qbHP/c3Z//3Bzff9wcnn/dXiB/3V3ff9sbnX/eHl9/3V3ff9wcnn/
    +dXiB/3Byef9sb3j/b3F1/2xvef9zdn//eHl9/2xvef9wcnn/cHN8/21wev9tb3j/cHJ5/2dqcv9maXP/
    +Zmlz/2Rncf9wc33/amxz/2psc/9sb3n/am13/2ptd/9qbXf/am13/2xudf9qbHP/bG51/2xudf9nanT/
    +am13/2ptd/9ucXv/amxz/2xudf9qbXf/cHN9/2ptd/9zdn//am13/3Bzff9qbXf/bnB3/3V3ff9ucHf/
    +dXd9/25wd/9wcnn/cHJ5/3Byef9tb3P/bnF7/21vd/9ucXn/bW93/3R2ff9sb3n/am13/2ptd/9ucXv/
    +b3F4/2hrc/9sb3n/d3l//3N2f/9sb3n/bnF7/25wd/9ucXv/Z2p0/2dqdP9qbXf/bnF7/2Zpc/9nanT/
    +Z2p0/2ptd/9nanT/bnF7/2xudf9qbXf/bG51/2psc/9tb3P/bnF7/3l7gf9tb3P/amxz/2psc/9ucXv/
    +cHN9/25xe/9ucXv/c3Z//3l7gf9zdn//dXiB/25xe/9wc33/d3qD/3N1fP9zdXz/bnB3/25xe/9ucXv/
    +c3Z//3N1fP9wc33/eXyG/3N2f/9wc33/c3V8/3N2f/93eoP/c3Z//3t9g/9zdn//cHJ5/3t9g/9zdn//
    +d3l//3V3ff93eoP/c3Z//3d6g/97fof/c3Z//3N1fP9zdn//eXuB/3l8hv9zdn//bG95/3N2f/9wcnn/
    +d3l//3Byef9ucHf/bnB3/3h5ff9sbnX/cHJ5/3Z4fP9wcnn/bnB3/2ptd/9ucXv/bG51/2xvef9nanH/
    +bnF7/2xudf9nanT/bnF7/2ptd/9qbXf/Z2p0/3N1fP9sbnX/Z2p0/2xudf9qbXf/Zmlz/3N1fP9qbXf/
    +fn+D/3Z4fP9wcnn/c3V8/3N2f/9sb3n/bnF7/25wd/9wcnn/bnB3/2xvef9wc33/d3l//25xe/9wcnn/
    +cHN9/25wd/9ucHf/d3l//3N2f/91d33/bnB3/3N1fP9lZmr/Zmlz/25xe/9sb3n/am13/2dqcf9qbXf/
    +amxz/2dqdP9ucHf/cHJ5/2dqdP9kZ3H/bnF7/2ptd/9nanT/amxz/2ptd/9qbXf/cHJ5/2psc/9zdXz/
    +c3V8/25wd/9zdXz/dXd9/29xdf9ucXv/dXiB/3Bzff91d33/bG95/25xe/9wcnn/bnF7/3Bzff9wcnn/
    +eXuB/25wd/9qbXf/bnF7/3V4gf9wc33/bnF7/3V4gf9ucXv/cHN9/3Bzff93eoP/eXyG/3N2f/9zdn//
    +cHN9/3d6g/9zdn//e32D/3d6g/95fIb/cHN9/3l7gf91eIH/c3V8/3d6g/91eIH/c3Z//3t+h/97fob/
    +d3qE/3p8g/90dn7/bXB6/25wd/9sb3n/cHN9/3d5f/9ucXv/bnB3/25xe/9xdH7/c3V9/3d5gP9wc33/
    +bnF7/2xvef9ucHf/eXyG/25xe/9ucXv/cHN9/25xe/9wc33/cHJ5/25xe/9zdXz/cHJ5/25xe/9sb3n/
    +bnB3/21vc/9ucHf/c3V8/25wd/9sb3n/bnF7/3d5f/9ucXv/d3qD/25xe/9zdn//cHN9/2xvef91d33/
    +bG95/3Z4fP9ucHf/c3V8/25wd/9ucXv/bnB3/3Bzff9tb3f/bnB3/21vc/9ydHz/bnB3/25wd/9wcnn/
    +cHJ5/3Fzef9oa3P/aGtx/3V3ff9wcnn/Z2px/2xvef9sbnX/dnh8/3N1fP91eIH/c3Z//3V4gf9sb3n/
    +bG95/3Bzff9ucXv/bG95/3N2f/9sb3n/cHN9/25wd/9sb3n/bnB3/25xe/93eoP/bnB3/2xudf9qbHP/
    +c3V8/3N1fP9ucHf/bnB3/3V3ff92eHz/c3V8/2xvef9qbXf/bnB3/3N1fP9sbnX/am13/2xudf9sbnX/
    +amxz/25wd/9tb3P/bnB3/3V3ff9ucHf/bG95/2ptd/9tb3P/bnB3/2psc/9zdXz/bnB3/2ptd/91eIH/
    +bnB3/25wd/9ucHf/bnF7/25wd/9zdXz/dXiB/25wd/9sb3n/bnB3/3N1fP91d33/bnB3/2psc/9tb3P/
    +bG51/3V3ff9sbnX/bG51/25wd/91d33/bG51/3Byef9zdXz/am13/2ptd/9nanT/bG95/2psc/9qbXf/
    +ZGdx/2ptd/9qbHP/Zmlz/2ptd/9qbXf/am13/2psc/9zdXz/bG51/2xudf9wcnn/bnF7/25xe/91eIH/
    +cHN9/3+Bh/93eX//bG95/3Bzff9zdn//bG95/25xe/9ucHf/cHJ5/25wd/9qbXf/bnF7/3V4gf9ucXv/
    +cHJ5/25xe/9ucHf/cHN9/3d5f/91eIH/c3V8/3Byef9ucXv/ZGdx/25wd/9wcnn/cHN9/2xvef9wcnn/
    +bnF7/2xvef9wc33/d3l//3d5f/9zdXz/bG51/3Z4fP9zdXz/cHJ5/25wd/9wcnn/bG51/3V3ff9qbXf/
    +cHN9/3N1fP9sb3n/bG95/2xvef9qbHP/Z2p0/25xe/9nanT/c3V8/2dqdP9qbXf/Z2px/2psc/9sb3n/
    +amxz/3Byef9maG7/YmVu/2ptd/9sb3n/amxz/2Zpc/9ucHf/Z2px/2xudf9tb3P/bnB3/3Bzff9ucHf/
    +dXiB/25wd/9zdXz/bnB3/3V3ff9zdXz/dXd9/2xudf91d33/bG95/25wd/9zdn//dXd9/29xdf92eHz/
    +eHl9/3J0e/92eH7/bXB4/2hrdP9qbHP/Zmlz/3Byef91d33/am13/21vc/9sb3n/bm92/21weP92eH//
    +bnB3/2xvef9wc33/bnF7/3d6g/9zdn//d3qD/3t9g/93eX//fn+D/3d5f/93eX//e32D/3p7f/97fof/
    +eXuB/3l7gf95e4H/e32D/3t9g/91eIH/d3l//31+gf9/gYf/d3l//3+CjP93eoP/d3qD/3Bzff9sb3n/
    +dXd9/25wd/91d33/am13/2xvef9qbXf/bnF7/2psc/9rbnj/aGty/2hqc/9maG//am13/2dqcf9qbXf/
    +bnF7/2xveP9tcHj/YmVu/19ibP9sb3n/Z2p0/2BjbP9maXP/bG95/3h5ff9wc33/c3Z//25wd/91d33/
    +bG95/2xvef9sb3n/bnB3/25wd/92eHz/cHJ5/3Byef9sb3n/bnB3/25wd/9ucHf/dXd9/2xudf9qbHP/
    +Z2px/3Byef9ucHf/am13/2xvef9wc33/c3V8/25xe/9ucXv/bG51/25xe/9wc33/bG51/25wd/9ucHf/
    +bnB3/2ptd/9wcnn/b3F1/25wd/93eX//cHJ5/25wd/9vcXX/bG51/25wd/9sbnX/cHN9/2xvef9ucXv/
    +eXuB/3Bzff9zdn//cHN9/3V4gf9ucXv/dXiB/3d6g/9ucHf/bG51/2xvef91d33/eHl9/3Bzff9sb3n/
    +bnB3/25wd/95e4H/bG51/2xvef9ucHf/d3l//25xe/9wc33/dXd9/2xvef9zdXz/bnB3/25xe/9ucXv/
    +bnF7/2dqdP9sb3n/bG95/2xudf9wc33/cHJ5/25wd/9sb3n/dXd9/25wd/9sb3n/bG51/2ptd/9nanT/
    +bnF7/2xudf99foH/dXd9/21vc/9wcnn/c3Z//25wd/9ucHf/b3F1/2xudf9sbnX/Z2px/3N1fP9zdXz/
    +bG51/21vc/9sb3n/am13/2xvef9zdXz/bG95/3Bzff91d33/cHJ5/2Rncf9ucHf/bnB3/3Bzff9ucHf/
    +bnF7/25xe/9wcnn/cHN9/3d6g/93eoP/c3Z//2xvef91eIH/c3Z//3N2f/9ucXv/cHN9/3N1fP93eoP/
    +bnF7/3d6g/91eIH/cHN9/3N2f/9wc33/bG95/2xvef91eIH/bnF7/3V3ff9sbnX/bG51/2xudf9sb3n/
    +bnF7/2ptd/93eX//bW9z/2psc/9zdn//cHJ5/25wd/9sbnX/cHJ5/2psc/9vcXX/bnB3/25wd/9zdXz/
    +bG51/3Byef9ucHf/dXd9/2xudf9zdXz/bnB3/3h5ff9sbnX/eHl9/25xe/9wcnn/c3Z//2xvef9qbHP/
    +cHN9/3V3ff9sb3j/dHeB/25wef9sb3n/bnF7/25wd/9zdn//dXiB/2xvef9ucHf/bnF7/3R2fP9vcnn/
    +dnh//25wd/9ucXv/bnF7/25wd/95e4H/bnF7/3N2f/91eIH/c3V8/3V4gf9wc33/cHJ5/25wd/9wcnn/
    +dXiB/3Byef9ucHf/bG95/2xvef9wc33/bnB3/21vc/91d33/eHl9/3Byef95e4H/cHJ5/2xvef9ucXv/
    +amxz/3N1fP9qbXf/cHN9/21vc/9wcnn/bnB3/3N1fP9vcXX/dHZ9/21wef9xc3z/bnB3/3N2f/9ucXv/
    +c3Z//3V4gf9wc33/dXd+/2xvef9ydX7/e36H/3t9g/9ucXv/d3qD/3l8hv94eX3/cHJ5/3V3ff9tb3P/
    +cHJ5/2xudf9ucHf/bG51/2ptd/9sbnX/dnh8/25wd/9qbXf/Z2p0/2dqdP9sbnX/bnF7/3V3ff9sbnX/
    +bG51/2Zpc/9sb3n/am13/2ptd/9sb3n/c3V8/3Bzff9wc33/bG95/2ptd/9ucXv/cHN9/3Byef9ucHf/
    +bG51/2xvef9nanT/bnB3/29xdf9zdXz/dnh8/25wd/9qbXf/amxz/2xudf9qbXf/Z2p0/2xvef9qbHP/
    +Zmlz/3Bzff9sbnX/bG95/2ptd/9zdXz/bG51/25xe/91d33/bG51/2psc/9ucHf/dXd9/3h5ff9wcnn/
    +Zmlz/2dqdP9sbnX/dnh8/2xudf9ucHf/b3F1/3d5f/9sbnX/cHJ5/3V3ff9qbXf/bG95/2xudf9sb3n/
    +bnB3/3N1fP9qbHP/bnB3/2xudf9nanT/am13/2xvef9sbnX/bW9z/3N1fP9sbnX/bG95/2psc/9sb3n/
    +Z2p0/25xe/9qbXf/eXuB/3d5f/9sbnX/bG51/3Bzff9sbnX/bW9z/2xudf9sbnX/bG51/2Zpc/9zdn//
    +cHN9/2xvef9vcXX/cHJ5/29xdf9wcnn/c3V8/25xe/92eHz/dnh8/3Byef9maG7/bnB3/3N1fP9zdXz/
    +bnB3/3Byef9wc33/dXiB/3V4gf97fof/eXyG/3d6g/9qbXf/dXiB/3Bzff9wc33/bnB3/29xdf9sbnX/
    +dXd9/25xe/9wc33/c3Z//3Byef9ucHf/bG51/25wd/9qbHP/dXd9/3Byef93eX//amxz/21vc/9sbnX/
    +bnF7/2xvef9ucHf/dXd9/21vc/9ucHf/c3V8/3Byef9ucHf/bG51/3Byef9sbnX/bG51/2ptd/9sbnX/
    +bnB3/2xudf9zdXz/bG51/3V3ff9qbXf/dXd9/25xe/91d33/Z2p0/3h5ff9ucHf/b3F1/3Byef93eoP/
    +c3V8/3l7gf96fIP/c3Z//3Z5g/9ucXr/bG51/2xudf9qbXf/bnF7/3d5f/9tb3P/bW9z/2xudf9ucHf/
    +b3F2/3d5gv9wcnn/bnF7/3Bzff9ucHf/d3qD/25wd/9ucHf/cHN9/25wd/92eHz/b3F1/25wd/9sb3n/
    +bnB3/3Bzff9sb3n/bG95/25wd/9ucHf/c3V8/29xdf9vcXX/dXd9/3V3ff9ucHf/eXuB/3Byef9sb3n/
    +bnF7/2dqdP9zdXz/am13/2xvef9qbHP/bG95/2xudf9wc33/amxz/3Bzff9qbXb/bG53/2hqdP9vcnz/
    +am13/3Byef9wcnj/cXN6/3JzeP9oanP/Z2pz/3N1fP9ucXv/Zmhu/3N1fP9ucHf/dnh8/3Byef94eX3/
    +bnB3/3V3ff9sbnX/bG51/25wd/9sbnX/bG51/3N1fP9wc33/am13/2dqdP9maXP/amxz/2ptd/9zdXz/
    +Z2px/2Zpc/9iZW7/Zmlz/2RmbP9iZW7/Zmhu/2Zpc/9nanT/ZGdx/2Rncf9iZW7/Z2p0/2Zpc/9maG7/
    +Zmlz/2Zpc/9qbXf/Zmlz/2xvef9sbnX/bnF7/3N1fP9qbXf/amxz/2psc/9qbXf/am13/2xudf91d33/
    +b3F1/2xvef91d33/bG95/3Byef9sbnX/dXd9/2ptd/9wc33/dXd9/21vc/9nanH/cHJ5/3Z4fP92eHz/
    +c3V8/2dqcf9sb3n/cHJ5/3t9g/9wc33/c3V8/25wd/93eoP/bnB3/3N1fP91d33/bG51/3Byef9sbnX/
    +cHJ5/3Byef91d33/b3F1/3Byef9sbnX/bnB3/3N1fP9ucHf/bW9z/29xdf9zdXz/b3F1/2xvef9ucHf/
    +cHN9/25wd/9wc33/bG95/3+Bh/93eX//bnB3/25xe/91eIH/cHN9/3N2f/9zdn//cHJ5/2ptd/9kZ3H/
    +dXiB/3Bzff9sb3n/cHJ5/3Bzff9wcnn/c3Z//3l7gf9zdn//c3Z//3l7gf9wc33/Z2p0/25wd/91eIH/
    +c3Z//3Byef9vcXX/bnB3/3Bzff9zdn//d3l//3h5ff9zdn//bG95/3d6g/9zdn//cHN9/25wd/9vcXX/
    +cHJ5/3N1fP9ucHf/dXd9/3N1fP9ucHf/bnB3/3Byef9sbnX/Zmlz/25xe/9ucXv/d3l//2ptd/9qbHP/
    +amxz/2ptd/9qbXf/am13/3N1fP9sbnX/Z2p0/2ptd/9sb3n/Z2px/2Zpc/9nanT/ZGdx/2Zpc/9kZ3H/
    +amxz/2ptd/9nanT/cHN9/2xudf9wcnn/bG51/3Z4fP91d33/dXd9/2xvef95e4H/bnB3/25wd/9wcnn/
    +c3Z//25wd/9zdn//dnh8/29yfP94eoH/bnB5/25wd/9ucXv/bnB3/3Byef93eX//bW9z/21vc/9sb3n/
    +a252/2xudf92eYL/cHJ5/3Bzff9wc33/c3V8/3d6g/9zdn//dXiB/3V4gf9ucHf/eHl9/25wd/9vcXX/
    +bG51/25wd/9wcnn/b3F1/2xudf9tb3P/bG51/3Byef9sbnX/bW9z/3Bzff9wc33/bG51/25wd/9qbXf/
    +am13/2xvef9kZ3H/am13/2Rncf9sb3n/am13/3Bzff9qbXf/dXd9/2ptd/9xc3v/bG53/2ttc/9lZ3D/
    +Z2p0/2Zpc/9maXP/ZGdx/2dqdP9tb3j/am13/21vdv90dn3/dXd9/2dqcf9zdXz/bnF7/3N1fP9qbXf/
    +dXd9/2xvef9ucXv/bW9z/3Byef9wcnn/b3F1/2xvef9ucXv/dXd9/25wd/9ucHf/bG95/25xe/9zdXz/
    +e32D/3Byef9vcXX/bnB3/25xe/9wcnn/b3F1/2xudf9wcnn/cHJ5/3Byef9wcnn/bG51/3Byef9ucXv/
    +am13/2ptd/9sbnX/bnF7/2dqdP9qbXf/am13/2xvef91d33/cHJ5/29xdf9vcXX/bG95/3Byef9ucHf/
    +c3V8/25wd/9sbnX/dnh8/3Byef9ucHf/bW9z/3V3ff9sb3n/d3l//3d6g/9zdXz/bG95/3d6g/97fYP/
    +d3l//3Bzff9sb3n/cHJ5/2xvef92eHz/am13/2xvef9ucHf/eXyG/25xe/93eX//cHN9/25xe/9wcnn/
    +bG95/2xvef9wc33/dXiB/25wd/9ucXv/am13/25wd/9wc33/bnF7/2xvef9sb3n/cHN9/25wd/9sb3n/
    +Z2p0/25xe/9nanT/bnF7/21vc/+Agob/d3l//25wd/9ucHf/dXiB/3Bzff9zdn//c3Z//25xe/9ucXv/
    +Zmlz/3N2f/9ucXv/bnB3/25wd/9ucXv/bW9z/25wd/91d33/bnB3/25xe/9zdXz/am13/2Rncf9qbXf/
    +bG95/2ptd/9nanT/Z2px/2Zpc/9nanT/Z2p0/3Byef9ucHf/bnB3/2dqcf9zdXz/bG95/2ptd/9qbHP/
    +bG51/2xvef9sb3n/bG51/3Bzff9ucXv/am13/2xudf9ucXv/bnB3/2dqdP91d33/c3V8/3d5f/9sbnX/
    +b3F1/3Byef9wcnn/bG95/2ptd/91d33/bG51/2ptd/9sb3n/cHN9/2Zpc/9qbHP/bG95/2xudf9sb3n/
    +Z2p0/2ptd/9qbXf/Z2p0/2ptd/9nanH/am13/2Zpc/9wcnn/c3V8/3V3ff9qbXf/cHN9/2dqdP9maXP/
    +am13/3N1fP9tb3P/c3V8/3N1fP9sb3n/d3qC/25wef9ucHX/bnB3/25wd/9ucXv/d3qD/3Byef9ucHf/
    +b3J8/29xef9sbnT/cHJ6/2dpb/9qbXf/Z2p0/2dqcf9wcnn/am13/2ptd/9ucXv/bG51/25xe/9qbXf/
    +am13/2Zpc/9sbnX/cHN9/25wd/9sb3n/b3F1/29xdf9zdXz/bnB3/29xdf91d33/bnB3/2ptd/91d33/
    +cHJ5/2xudf9ucXv/am13/2ptd/9maXP/bG95/2xvef9ucXv/am13/3Bzff9sb3n/cHN9/21wev9tcHr/
    +bG95/3h6gP91eIH/foCG/3Z5gv93eoP/dXiA/25weP9pbHb/bnF7/3Bzff9maXP/bnB3/2xvef95fIb/
    +dXiB/3t+h/93eoP/dXiB/3Byef9zdn//bG95/25xe/9sb3n/cHN9/3V4gf9wc33/bnB3/25wd/9wc33/
    +c3Z//36Ahv91eIH/c3V8/25wd/9wc33/bnB3/2xudf9ucHf/c3V8/3V3ff9zdn//bnF7/2xvef9zdn//
    +cHN9/3Bzff9ucXv/c3V8/3Bzff9sbnX/bG95/25wd/9zdXz/dXd9/3Byef9sbnX/b3F1/2ptd/9ucHf/
    +bG51/3N1fP9qbXf/bG51/3V3ff9ucXv/bnB3/2xudf9zdXz/bW9z/3Byef91d33/bG51/2ptd/9qbXf/
    +cHN9/2xvef9qbXf/Zmlz/2xudf9qbXf/c3V8/2Zpc/9maXP/Z2px/3Bzff9nanH/bnF7/2xvef9qbHP/
    +am13/2Zpc/9nanH/Zmhu/2Zpc/9kZ3H/Zmlz/2dqcf9kZ3H/Z2p0/2Zpc/9nanT/bG51/2xvef9sbnX/
    +am13/2dqcf9sb3n/Zmlz/25xe/9sbnX/f4GH/3V3ff9sbnX/bG95/3Bzff9sbnX/bnF7/2xvef9qbHP/
    +amxz/2RmbP9wc33/am13/2xudf9wcnn/cHJ5/2xudf9ucHf/c3V8/2ptd/9sb3n/bnF7/2xudf9iZW7/
    +Z2p0/2xvef9sb3n/Z2p0/2ptd/9qbXf/bG95/3Bzff91d33/dXd9/3V3ff9vcXX/d3l//3V3ff9zdXz/
    +bG51/2xudf9sb3n/bnF7/21vc/9zdXz/dXd9/25wd/9ucHf/bnB3/21vc/9nanH/c3V8/2xvef91d33/
    +Z2p0/21vc/9zdXz/bnB3/2xudf9wcnn/d3l//2ptd/9nanT/am13/3V3ff9sbnX/bG51/2xvef9sbnX/
    +am13/2Zpc/9sbnX/bG51/2xudf9ucHf/bW9z/3Byef9sb3n/dXd9/3V3ff93eX//bW9z/3V3ff9sbnX/
    +bG51/2xudf91d33/cHJ5/3d5f/91eIH/cXR+/3Z5gv9wc3r/aGt1/25wd/9ucHf/bnF7/3d5f/9sbnX/
    +bG95/2xvef9ydHv/bnF5/3V4gf9ucHf/cHN9/2xvef9ucHf/dnh8/3Byef9ucHf/bnB3/2xudf9wcnn/
    +bnB3/3Byef9nanT/bG95/3N2f/9vcXX/bnB3/21vc/9sb3n/c3Z//3Bzff9wcnn/dXiB/25wd/9tb3P/
    +eHl9/3V3ff9ucHf/c3V8/29xdf9ucHf/amxz/3N1fP9wcnn/c3Z//25xe/9zdXz/cHJ5/3V3ff9zdX3/
    +bnF7/29xeP90d4D/cHN9/3Bzff9sb3n/cXN7/3Bze/9tb3f/aGp0/2xvef9ucXv/Z2p0/25xe/9sb3n/
    +c3V8/25wd/94eX3/bnB3/3Bzff9wcnn/cHN9/25xe/9zdn//cHJ5/3N2f/91eIH/cHN9/3Byef9sb3n/
    +c3V8/3N1fP97fYP/c3V8/29xdf9vcXX/dXd9/21vc/9ucHf/cHJ5/3Byef9wcnn/dXd9/2xvef9nanT/
    +bG95/2ptd/9qbXf/amxz/2Zpc/9qbXf/Zmlz/2dqdP9sbnX/bG95/3N1fP9wc33/am13/2psc/9sbnX/
    +bnF7/2xudf9zdXz/bG95/25wd/91d33/cHN9/25xe/9ucHf/dXd9/29xdf9zdXz/c3V8/25wd/9ucHf/
    +bnF7/3V3ff9ucXv/d3qD/2xvef9ucHf/bG95/3d5f/9sb3n/bnB3/3Byef95fIb/bnB3/3N1fP9wcnn/
    +bW9z/25wd/9wcnn/bG51/21vc/9wcnn/bG51/25wd/9ucHf/bG51/2xvef9sb3n/amxz/25wd/9ucXv/
    +bW9z/2xudf9sb3n/bnF7/2xvef91eIH/bG95/4GDiv91d33/bW9z/3Byef9wc33/am13/25xe/9sb3n/
    +amxz/2xudf9maXP/dnh8/2xvef9ucHf/cHJ5/25wd/9sbnX/b3F1/3Z4fP9zdXz/c3V8/3N1fP9ucHf/
    +amxz/2xudf9wcnn/bnB3/29xdf9ucHf/bnB3/25xe/91eIH/d3l//3d6g/93eX//bG95/3d5f/9zdXz/
    +cHN9/2psc/9ucHf/cHN9/3Bzff9ucXv/c3Z//3N2f/9wcnn/cHJ5/3Bzff9wcnn/cHJ5/3d6g/95fIb/
    +eXyG/25xe/9zdn//c3Z//25xe/91eIH/e32D/3l8hv91eIH/c3V8/3d6g/97fYP/bnF7/25wd/9ucXv/
    +cHJ5/3Bzff9sb3n/cHN9/3Byef9sb3n/cHJ5/25wd/9wc33/bnB3/25xe/9wcnn/eHl9/29xdf91d33/
    +cHJ5/2xudf9vcXX/d3l//3Bzff97fYP/dXiB/29yfP91eIH/cHN9/21wev9wc33/cHJ5/2xvef93eX//
    +bnB3/2xvef9wcnn/cXR9/21weP91d33/bnB3/3N1fP9sbnX/b3F1/3Z4fP91d33/cHN9/25xe/91eIH/
    +cHN9/25wd/9wc33/am13/3Byef91eIH/c3Z//3N2f/9zdXz/dXd9/3l7gf93eX//c3Z//3t9g/91eIH/
    +c3V8/3l7gf9zdn//c3Z//3l8hv91d33/d3l//3Z4fP97fYP/e32D/3V4gf9wc33/dXiB/3N2f/92eYL/
    +c3Z+/3Bye/9vcXj/c3V8/25wd/9ucXv/bG95/2xvef9xdHz/bG95/2ptd/9wc33/cHN9/2dqdP9zdXz/
    +c3V8/25xe/9sb3n/c3V8/2xvef9qbXf/bG51/3V3ff9ucHf/c3V8/29xdf9wcnn/cHN9/2xvef9qbXf/
    +bG51/3N1fP92eHz/eXuB/3N1fP9sbnX/bW9z/3Z4fP9sbnX/am13/2xvef9sb3n/cHJ5/3Byef9ucHf/
    +amxz/3N1fP9ucXv/bG95/2ptd/9maXP/bnB3/2xudf9sb3n/bG51/2xvef9wc33/c3V8/2xvef9tb3P/
    +bW9z/3Byef9qbHP/c3V8/25wd/9sb3n/dXd9/3V3ff9ucHf/bW9z/3Byef9ucHf/cHJ5/3Byef9sbnX/
    +bG51/25xe/9wc33/am13/3Bzff9qbXf/bnB3/25wd/91d33/bG51/2psc/9ucHf/d3qD/2xvef9wc33/
    +cHJ5/25wd/9ucXv/c3Z//25wd/9wcnn/cHN9/25wd/9wc33/bnF7/3Byef9zdn//d3qD/3Byef9zdn//
    +dXiB/25xe/9wc33/bnF7/3Bzff9wcnn/dXiB/2ptd/+BhI3/eXuB/25xe/91eIH/c3Z//2xvef9wc33/
    +bnF7/2xudf9nanT/Z2p0/3V3ff9ucHf/bG95/3Byef9ucHf/bG51/25wd/91d33/c3V8/3V3ff9ucXv/
    +cHJ5/2xvef9wcnn/c3Z//3N2f/9wc33/cHJ5/25xe/9ucXv/dXd9/3Z4fP93eX//eHl9/25wd/94eX3/
    +cHJ5/3V3ff9qbHP/bW9z/25wd/9ucHf/bnB3/3N1fP9ucXv/bG51/2psc/9nanH/Z2px/2dqdP9sb3n/
    +am13/3N1fP9maXP/amxz/2ptd/9qbXf/am13/3Bzff9zdXz/am13/2ptd/9zdXz/dnh8/2dqdP9wcnn/
    +cHN9/2xvef9ucXv/Z2p0/25xe/9vcXX/amxz/3V3ff9vcXX/c3V8/2ptd/9wc33/cHN9/3l7gf9ucHf/
    +c3Z//2xvef9sb3n/cHJ5/3Z4fP9wcnn/eHl9/3Z4fP9ydHv/dXd8/25wd/9qbHP/bG51/2xudf9sbnX/
    +dnh8/2xudf9sbnX/bnB3/29xeP9tcHj/dHZ9/25xe/9zdn//bnB3/29xdf94eX3/cHN9/3N1fP9ucXv/
    +cHN9/3N2f/9ucHf/bnB3/2xvef9ucHf/c3Z//3N1fP9ucXv/cHN9/3Bzff95fIb/c3Z//3Bzff93eoP/
    +bnF7/25wd/97fYP/d3qD/3V4gf93eoP/cHN9/3N2f/9zdXz/cHN9/25xe/9wc33/cHJ5/3N2f/9zdn//
    +eHqA/3N2fv9vcnr/bnB3/3R2ff9wcnn/c3V8/3V3ff90dnz/c3Z9/29xef9tb3f/c3Z//3Byef9sbnX/
    +cHN9/25xe/9zdn//cHN9/3d5f/9ucXv/cHJ5/29xdf9wcnn/cHJ5/3V4gf9ucHf/c3Z//3V3ff91d33/
    +amxz/25wd/9wcnn/dnh8/3l7gf9zdXz/bW9z/2xudf9zdXz/bG51/2xudf9zdXz/bG95/3Byef9wcnn/
    +c3V8/25wd/9zdXz/cHJ5/3N1fP9ucHf/Z2p0/2xvef9sbnX/bnB3/21vc/9ucHf/cHJ5/3V3ff9qbXf/
    +bnB3/2ptd/9ucXv/Zmlz/3N1fP9vcXX/bnB3/3V3ff9wcnn/am13/2xudf9ucXv/am13/3Bzff9ucXv/
    +bG51/21vc/9ucXv/cHN9/2xudf91d33/bW9z/2xudf9sbnX/dXd9/2psc/9qbHP/bW9z/3V3ff9tb3P/
    +bG95/2xudf9qbXf/bG51/3V3ff9ucHf/bnB3/3Bzff9vcXX/bG95/2xvef9vcXX/cHN9/3V3ff9sb3n/
    +dXd9/25wd/9ucXv/c3Z//2ptd/9sb3n/bG51/3N1fP9nanT/gIKG/3Z4fP9vcXX/dXiB/25xe/9qbXf/
    +c3Z//3Bzff9sbnX/bG51/25wd/91eIH/c3V8/25xe/9sb3n/bnF7/2xvef9zdn//c3Z//3V4gf93eoP/
    +cHN9/3Byef9ucHf/cHN9/3d6g/9wc33/cHN9/3N1fP9ucXv/bnF7/3l7gf93eX//eXuB/3l7gf9ucXv/
    +dnh8/3Byef9zdXz/bnB3/25wd/9wcnn/bnF7/2xvef9wc33/bnF7/2xudf9ucHf/bnB3/25wd/9vcXX/
    +cHJ5/3V3ff95e4H/bnB3/25wd/9wc33/bnF7/3Bzff95e4H/foCG/3d5f/92eHz/fn+D/36Ahv9zdXz/
    +e32D/3+Bh/95fIb/e36H/3N2f/9+gIb/eHl9/3V3ff97fYP/d3l//3l7gf94eX3/e32D/3d6g/9+gIb/
    +c3V8/3d6g/9ucXv/Z2p0/29xdf93eX//c3Z//3l7gf94eoD/dXiB/3R2fv9qbXf/aGty/2dqcf9qbHP/
    +ZGdx/25wd/9nanH/Z2p0/2xvef9qbXT/aWty/3Fzev9qbHP/bnF7/21vc/9sbnX/dnh8/3N1fP9ucHf/
    +cHJ5/3Byef9zdXz/bnB3/25wd/9ucHf/b3F1/25xe/9sb3n/bG95/25xe/9ucXv/c3Z//3N2f/9wc33/
    +eXuB/3N2f/9wc33/fX6B/3l7gf9+gIb/e32D/3d5f/91d33/dXd9/3V4gf93eoP/d3qD/3N2f/93eoP/
    +d3qD/3t+h/97fof/eHuC/3R3gP93eoL/eXuB/3l7gf93eX//dXh+/3R2fP9ucXv/bnB3/25xe/9wcnn/
    +amxz/3Byef9sbnX/c3Z//3V4gf93eX//c3Z//3N2f/9ucXv/cHN9/25xe/93eX//bG95/3Byef9zdn//
    +dXiB/25xe/9wc33/dXiB/3t9g/9/gYf/d3qD/3Bzff91eIH/d3qD/3Bzff91eIH/d3qD/25xe/9sb3n/
    +cHN9/3Bzff9ucHf/cHN9/3N2f/91eIH/c3Z//3N1fP9zdn//cHJ5/3Bzff9sb3n/bnB3/3N1fP9zdXz/
    +b3F1/3Byef9wcnn/c3V8/2xudf91d33/cHJ5/25wd/93eX//c3V8/29xdf9ucHf/cHN9/2xvef91d33/
    +c3V8/2ptd/9sbnX/bnF7/3V3ff9sbnX/bnF7/2xudf9qbXf/bG51/3N1fP9kZ3H/am13/2xudf93eX//
    +amxz/2xvef9qbXf/ZGdx/2xudf9sb3n/Z2p0/2psc/9qbXf/amxz/2ptd/9sbnX/amxz/2xvef9zdXz/
    +amxz/25xe/9qbXf/am13/2xvef9wcnn/bnF7/25xe/93eX//cHJ5/4GEjf97fYP/d3qD/3l7gf91eIH/
    +bG95/3l8hv97fYP/cHN9/25xe/9sb3n/d3qD/3N1fP9ucXv/dXiB/3N2f/9wc33/c3Z//3V4gf93eoP/
    +eXuB/3Bzff9ucXv/bG95/2ptd/91d33/bnB3/3N1fP9ucHf/bG95/25xe/91eIH/d3l//3d5f/93eX//
    +bnF7/3d5f/9wc33/dXiB/2xvef9ucXv/dXiB/3N2f/91eIH/eXuB/3N2f/9ucXv/bnF7/3Bzff9zdXz/
    +cHJ5/3N2f/95e4H/d3qD/25wd/9ucHf/bnF7/3Bzff9wc33/dXd9/3d5f/9wcnn/bnB3/25xe/9zdn//
    +bG95/2xvef9wc33/bG95/3Byef9nanT/bnF7/25wd/9sb3n/dXd9/3Bzff9wcnn/am13/3Bzff9zdXz/
    +dnh8/29xdf9zdXz/am13/2Zpc/9qbXf/c3V8/3Byef9zdXz/dXd9/3J0e/92eH3/bW90/2xudv9tb3P/
    +bG95/2xvef93eX//c3Z//3d6g/90d4D/bXB6/25wef90dn3/b3F2/3V3ff9sbnX/amxz/3V3ff9zdXz/
    +cHJ5/3Bzff9sb3n/bnF7/25wd/9ucHf/b3F1/2xudf9sbnX/bG51/29xdf9sb3n/bnF7/3Bzff9ucXv/
    +cHJ5/3V4gf9zdn//c3V8/3V4gf9zdn//d3qD/3V4gf9wc33/cHN9/3Byef9wc33/c3Z//3N2f/9sb3n/
    +bnF7/3Bzff92eH7/c3Z//29yfP9ucXr/c3Z//3N2f/91d33/c3Z//3R2fP9zdoD/cHN9/3Bzff91eIH/
    +c3Z//3Byef9wc33/cHJ5/3N1fP9wc33/c3V8/3V3ff9wcnn/bnB3/3Byef9ucHf/dXd9/2ptd/9ucXv/
    +bG95/25xe/9maXP/amxz/2xvef9wc33/dXiB/2ptd/9sbnX/bG95/2xvef9sbnX/c3V8/3N1fP9sbnX/
    +am13/2xvef9sbnX/Z2p0/25xe/9wc33/dXd9/25wd/9vcXX/bnB3/2xvef9ucXv/cHN9/25xe/9zdn//
    +dXiB/25wd/9wc33/cHN9/3N2f/9sb3n/d3qD/3Bzff9sb3n/eXyG/3Bzff9vcXX/b3F1/3N1fP9qbHP/
    +cHN9/3Bzff9nanT/am13/2ptd/9wc33/amxz/2ptd/9nanH/Zmlz/2dqcf9maXP/YGNs/2Rncf9nanH/
    +c3V8/2xudf9sb3n/amxz/2Zpc/9qbXf/bnF7/2xudf9tb3P/cHJ5/25wd/9ucXv/bnF7/3Byef9ucHf/
    +cHN9/25wd/91eIH/bnF7/25xe/91eIH/dnh8/3N2f/91eIH/fn+D/3h5ff+Ji5H/fn+D/3l7gf9+f4P/
    +e32D/3N1fP9+f4P/foCG/3d5f/91d33/cHN9/3l7gf91d33/cHN9/3N2f/9wc33/bnF7/3V4gf9zdn//
    +dXiB/3V4gf9zdn//c3Z//3Byef9ucXv/c3Z//25xe/9ucXv/bnB3/25wd/9qbXf/dXd9/3d5f/91d33/
    +d3l//25wd/91d33/bnB3/3Z4fP9sbnX/c3V8/3V3ff9wcnn/cHJ5/3Z4fP9zdXz/b3F1/25wd/9wcnn/
    +b3F1/21vc/9zdXz/dXd9/3d5f/9qbXf/bG51/25xe/9sbnX/dXd9/3V3ff93eX//am13/2psc/9ucXv/
    +am13/2Jlbv9qbHP/am13/2dqcf9maXP/XWBq/2dqcf9kZ3H/Z2p0/3Bzff9qbXf/Z2px/2Rncf9sb3n/
    +bG95/3Bzff9qbHP/c3V8/2xudf9maXP/Z2p0/3Bzff9sbnX/c3V8/3V3ff9xdH3/cnV+/2xudv9tb3b/
    +bG51/2ptd/9ucHf/dnh8/25wd/9wcnn/bnB3/29xef9wcnn/dXh+/3Bzff95e4H/cHN9/2xvef95e4H/
    +c3Z//3V4gf9zdn//cHN9/3N1fP9ucHf/cHJ5/3Byef9wcnn/cHN9/3Byef9sb3n/cHN9/25xe/9wcnn/
    +bnB3/21vc/9wcnn/cHJ5/2xudf9zdXz/bG51/25xe/9wc33/bW9z/29xdf9ucHf/bnB3/3N1fP91d33/
    +bG95/3Byef9sb3n/dHZ9/3R3f/9ucXn/bnB3/25xe/91d33/dXd9/3N2f/91eID/eHqA/3J0e/93eYD/
    +foCG/3l8hv95e4H/e36H/3l7gf9zdn//c3Z//3V3ff93eX//bnF7/25xe/9wc33/dXiB/3V4gf9vcXX/
    +cHN9/3Bzff9zdn//bG51/29xdf9wcnn/dnh8/3l7gf9wcnn/bnF7/3N2f/91eIH/cHJ5/3V4gf93eoP/
    +bnF7/3N2f/9zdn//c3Z//3Bzff93eoP/eXyG/31+gf95e4H/c3Z//3V4gf9zdXz/c3Z//3N2f/9zdXz/
    +dXiB/3t9g/92eHz/eXuB/3d5f/95e4H/dXd9/3t9g/93eoP/c3Z//36Biv91eIH/bnF7/3Byef93eoP/
    +cHN9/3l7gf93eoP/bG95/2xvef9wc33/dXd9/2xvef9zdn//bG95/2xvef9zdXz/cHJ5/2dqcf9qbHP/
    +bW9z/3V3ff9qbXf/c3V8/25wd/9sb3n/cHN9/3V4gf9sb3n/bnF7/2xvef9ucXv/bnF7/3Byef9ucXv/
    +c3Z//3l7gf93eoP/eXyG/3d5f/93eX//fX6B/2ptd/9sbnX/am13/3Bzff9maXP/e32D/3Bzff9tb3P/
    +c3V8/2xvef9nanT/bnF7/25xe/9qbHP/bW9z/2psc/9ucXv/bG51/2Zpc/9sb3n/am13/2Rncf9qbXf/
    +am13/2dqdP9nanT/Z2px/2dqcf9nanH/ZGdx/2dqdP9maXP/Zmhu/2Jlbv9iZW7/ZGZs/25wd/9zdXz/
    +cHN9/3N1fP9nanH/bnF7/2dqcf9wc33/Z2p0/2ptd/93eX//bnF7/3Byef91d33/bnB3/25wd/9vcXX/
    +cHJ5/21vc/9ucHf/cHJ5/3Z4fP95e4H/bG51/25wd/9zdn//bG51/3h5ff91d33/d3l//3Byef9qbHP/
    +c3V8/25xe/9kZ3H/am13/2xvef9nanH/Z2p0/2BjbP9nanH/YmVu/2Jlbv9nanT/am13/2dqcf9kZ3H/
    +bnF7/3Byef94eX3/bW9z/3V3ff9ucHf/Zmlz/2Zpc/9zdn//cHJ5/3V4gf94eoD/c3Z//3J1f/9tcHj/
    +bW92/2xudf9sbnX/bG51/3N1fP9wcnn/cHJ5/25wd/9vcnz/bnB3/3N1fP9sbnX/c3V8/21vc/9sbnX/
    +eHl9/3N2f/91d33/bG95/2xvef9ucXv/b3F1/2xudf9vcXX/b3F1/21vc/9tb3P/b3F1/3N1fP9sbnX/
    +bG95/21vc/9ucHf/cHN9/3Byef9vcXX/eHl9/25wd/9zdn//dXd9/21vc/9sbnX/am13/2xudf9ucXv/
    +bnF7/21vc/9sbnX/bnB3/3V3ff9wc3v/bnB3/25wdP9sb3n/c3Z//3V4gf9ucXv/dHZ8/3V2ev9ucHf/
    +a253/3N2f/9zdXz/dXd9/3V4gf9zdXz/c3Z//3d5f/91eIH/d3l//3N1fP9ucHf/cHJ5/3Bzff9sb3n/
    +amxz/2ptd/9wcnn/bnF7/2Rncf9sbnX/bnF7/3Bzff91eIH/bG95/25xe/9wc33/bnF7/2ptd/9wc33/
    +cHN9/2ptd/9sb3n/am13/2xudf9maXP/cHN9/25xe/9wc33/bG95/2xudf9sbnX/amxz/2xudf9sbnX/
    +amxz/2ptd/9ucXv/Z2p0/2xudf9nanT/amxz/2BjbP9ucXv/am13/2xudf91d33/bnF7/2xudf9sbnX/
    +cHN9/2xudf9zdXz/c3V8/25wd/9ucHf/dXd9/3Z4fP9wcnn/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/
    +cHJ5/3N1fP97fYP/cHN9/3V4gf9wcnn/bG95/25xe/9zdXz/amxz/21vc/9ucHf/bnB3/2xudf9sbnX/
    +bnF7/2xudf9wc33/bG95/3Byef9sbnX/cHJ5/3V3ff9ucHf/cHJ5/25xe/91d33/am13/3+Bh/91d33/
    +bnB3/3Z4fP9ucHf/amxz/2xvef9wc33/Zmlz/2psc/9maXP/am13/2dqdP9nanT/am13/2Zobv9iZW7/
    +Z2px/2ptd/9maXP/ZGdx/2Zobv9kZ3H/Zmhu/2Zobv9maXP/ZGZs/2Rncf9iZW7/ZGdx/2Zobv9ucHf/
    +cHJ5/2Zpc/9wc33/Zmhu/25xe/9kZ3H/am13/2BjbP9kZ3H/bnB3/2ptd/9sb3n/bnF7/2ptd/9qbXf/
    +am13/2xvef9qbHP/bG51/21vc/91d33/dXd9/25wd/9vcXX/c3Z//2xvef91eIH/d3qD/3l8hv9wc33/
    +bnF7/3l7gf91eIH/bnF7/3N2f/97fYP/c3V8/3V4gf9sb3n/bnF7/2ptd/9ucHf/dXiB/3V4gf9ucXv/
    +am13/3V4gf95e4H/e32D/3Bzff93eX//cHJ5/25wd/9ucHf/dXiB/3N2f/95fIb/e32D/3l7gf9ydX//
    +bnF7/25wd/9sb3n/bnB3/2xvef9wc33/bnF7/3Byef9vcXn/c3V9/29yev91eH7/bG95/3V4gf9ucXv/
    +bG51/3Z4fP9wcnn/dXd9/2xudf9vcXX/bnB3/29xdf9qbHP/bG51/2xudf9tb3P/bG51/21vc/9wc33/
    +cHJ5/3Byef9wcnn/cHJ5/3V4gf9ucXv/bG95/3l7gf9ucXv/c3Z//25xe/9ucHf/cHJ5/25xe/9ucHf/
    +bnF7/3Bzff9ucHf/cHJ5/3Byef92eHz/c3V8/25wd/9sbnP/cHJ5/3Bzff9ucXv/am13/29yfP9xdHv/
    +a211/2psdP9wcnn/bG51/2xudf9sbnX/bW9z/3Z4fP92eHz/bnB3/3Z4fP9wcnn/am13/25xe/9zdXz/
    +bnF7/2xudf9qbXf/bnF7/3N1fP9nanH/cHJ5/3Byef91d33/e32D/3Byef91d33/c3V8/3Byef9tb3P/
    +cHJ5/3N1fP9ucHf/bnB3/25wd/9vcXX/amxz/3Bzff9wc33/cHN9/2ptd/9sbnX/bG95/2dqcf9wcnn/
    +bnB3/25xe/9wcnn/dXd9/2xudf9ucHf/c3Z//2xvef9sb3n/cHN9/25xe/9sb3n/d3qD/3Byef9ucHf/
    +bW9z/3Byef9sbnX/c3V8/3Bzff9ucHf/bnF7/3V4gf95e4H/c3Z//3d6g/9ucXv/b3F1/3N1fP9ucHf/
    +Zmhu/2ptd/9qbXf/d3l//2xudf9ucXv/bG51/2psc/9wcnn/c3V8/25wd/9ucHf/bG95/3Bzff9wcnn/
    +bG95/3N1fP9ucHf/dXd9/25wd/9wcnn/am13/2xudf91d33/d3l//3t9g/9+f4P/fn+D/3l7gf+IipD/
    +foGK/3l7gf9+gYr/foCG/3N1fP97fYP/e32D/3V3ff93eX//eHl9/3l7gf91d33/dXd9/3d6g/9zdXz/
    +bG95/25wd/91d33/cHJ5/2xvef9sb3n/Z2p0/2psc/9qbHP/am13/2dqcf9qbXf/Zmlz/2Rncf9maG7/
    +cHJ5/3V3ff9qbXf/c3V8/2Zobv9kZ3H/ZGdx/25wd/9kZ3H/Z2p0/3Bzff9ucXv/cHN9/3Bzff9ucHf/
    +amxz/29xdf9wcnn/bnB3/2xudf9tb3P/dnh8/3V3ff9wcnn/b3F1/3Byef9wcnn/c3Z//3N1fP91eIH/
    +bG95/2ptd/91d33/dXd9/2xudf9ucHf/dnh8/2xudf9wcnn/bG51/2xudf9maXP/am13/3N1fP9zdXz/
    +bG51/2dqcf9wcnn/c3V8/3Z4fP9qbXf/dXd9/2ptd/9maXP/bG51/2Zpc/9maG7/Zmlz/2ptd/9sb3j/
    +bW92/21vdv9tb3f/bnB3/2ptd/9nanT/cHN9/3Bzff9sb3n/b3F4/29yfP9rbnj/cXR9/2hrdf9ucXv/
    +bG95/2ptd/9zdXz/bnF7/3Bzff9qbXf/am13/2xvef9vcXX/bG51/2xudf9sbnX/bW9z/2xudf9ucHf/
    +cHJ5/21vc/9sb3n/am13/3Byef9zdXz/bG95/2ptd/9zdXz/bG95/3N1fP9sbnX/bnB3/25wd/9sb3n/
    +bnB3/25xe/9zdn//bnB3/3Byef9wcnn/c3V8/3Fzev9ucXn/bG95/3Bzff9zdn//cHN9/25wd/9wc33/
    +cXN6/2xud/9sbnX/cHN9/25wd/9wcnn/bnB3/25wd/91d33/c3V8/2xvef9zdXz/bnF7/25xe/9qbXf/
    +bnF7/25xe/9qbHP/bG51/2ptd/9qbXf/Zmlz/2xvef9sb3n/bG95/3N2f/9sb3n/bnF7/25xe/9sb3n/
    +bG95/25xe/9wc33/bG95/25xe/9sbnX/bG51/2dqdP9zdXz/dnh8/3Z4fP9wc33/bnB3/3Bzff9sb3n/
    +bG95/29xdf9wcnn/dXiB/3d5f/9ucXv/c3V8/3N2f/9ucXv/bG95/3V4gf9zdn//cHN9/3l8hv91eIH/
    +cHN9/3Byef93eoP/bnF7/3V4gf9zdn//cHJ5/3Byef91eIH/eXuB/3N2f/91eIH/c3Z//3Bzff92eHz/
    +dXd9/2Zobv9ucHf/cHJ5/3V3ff9sbnX/bnF7/2xudf9nanT/cHJ5/3N1fP9sbnX/bnB3/25wd/9zdXz/
    +bnB3/3Bzff9wc33/bnB3/3V4gf9wc33/dXiB/3N1fP91eIH/e32D/3l7gf95e4H/e32D/3t9g/91d33/
    +g4WM/3d6g/9wcnn/dXiB/3V4gf9nanT/dXiB/3d6g/9wc33/c3V8/3N1fP9zdn//bG95/25wd/9ucXv/
    +bG95/29xdf9sbnX/dXd9/3Bzff9sb3n/bnB3/25wd/9ucHf/b3F1/3N1fP9ucHf/dXd9/2ptd/9nanH/
    +bW9z/3d5f/95e4H/cHJ5/3t9g/9ucHf/c3V8/21vc/91d33/bG51/3Byef93eX//bnF7/3N1fP9wcnn/
    +bnB3/2dqcf9sbnX/bG95/2psc/9sbnX/Z2px/2xvef9zdXz/Z2px/2Zobv9qbXf/ZGdx/2xvef9sb3n/
    +dXd9/2ptd/9qbHP/bnF7/25xe/9maXP/bG51/3N1fP9qbHP/cHJ5/2psc/9qbHP/ZGdx/2psc/9wc33/
    +cHN9/2ptd/9nanT/bG95/25xe/91d33/bG51/3d5f/9ucHf/bG51/2psc/9wcnn/bG51/3Byef9wcnn/
    +dHZ8/21vdv9tcHn/bG51/25wd/9sbnX/Zmlz/2xvef9sb3n/am13/25xe/9vcnn/bXB3/3V3fv9ucHf/
    +cHN9/3Byef9sb3n/d3l//3N2f/93eX//bnF7/2xvef9wc33/bnF7/2xvef9ucXv/cHJ5/3N1fP91d33/
    +c3Z//3d6g/9zdXz/cHJ5/25xe/91eIH/foCG/3V4gf9wc33/d3qD/3N2f/95fIb/c3Z//2xvef9sb3n/
    +bnF7/3Byef9wc33/dXiB/25xe/9ucXv/cHJ5/3N2f/9ydX7/cHJ5/2xvef9ucXv/c3Z//3Bzff9wc33/
    +cnV+/3J0ev9ucHn/a254/3Bzff9vcXX/b3F1/25xe/9wc33/dnh8/3N1fP9ucHf/d3l//3Byef92eHz/
    +bnF7/3N2f/95e4H/cHJ5/25xe/9zdn//cHN9/25xe/91eIH/d3qD/3d6g/97fof/dXiB/3t9g/99foH/
    +e32D/3d6g/93eoP/eXuB/3V4gf91eIH/dXiB/3V3ff92eHz/eXuB/3t9g/9+f4P/eXuB/3Bzff95e4H/
    +cHN9/3Bzff9wcnn/bnF7/3V4gf95e4H/cHN9/3Bzff93eoP/bnB3/2ptd/9ucXv/bnB3/2xvef91eIH/
    +cHN9/2xvef9vcXX/c3V8/25wd/9ucHf/c3V8/2xudf9sbnX/dXd9/3V3ff9wc33/dXiB/3V4gf9zdn//
    +eXuB/3N2f/9maXP/bnB3/3Bzff95e4H/dXiB/3l7gf9zdn//c3Z//3t9g/97fYP/c3V8/3Z4fP93eoP/
    +eXyG/3d5f/97fYP/foCG/3h5ff9+f4P/e32D/35/g/91d33/eXuB/36Ahv9sb3n/am13/3Bzff92eHz/
    +bnB3/3l8hv9wc33/bnB3/25xe/9ucXv/Zmlz/3V4gf97fYP/c3V8/3Byef9zdXz/d3qD/3V3ff93eX//
    +foCG/3Z4fP91d33/c3Z//3t9g/97fYP/d3qD/3V4gf91d33/dXd9/3N2f/95e4H/d3qD/3d6g/9sb3n/
    +bG95/3Byef95e4H/e36H/3Bzff95fIb/cHJ5/3V4gf9zdXz/c3Z//29xdf9zdXz/dXiB/3Bzff93eX//
    +cHJ5/2xvef9qbHP/bnB3/25wd/9tb3P/bW9z/25wd/9zdXz/dXiB/2xvef9ucHf/c3Z//3Byef91d33/
    +c3V8/3d5f/9wcnn/bW9z/3N1fP9zdXz/bG51/25wd/91d33/bW9z/3Bzff9sb3n/bnB3/2psc/9ucHf/
    +dnh8/3N2f/9vcXX/amxz/2xvef9wc33/c3V8/2xudf93eX//bG51/2xudf9qbHP/dXiB/3N2f/9zdn//
    +cHN8/3N1fP9tb3b/cXN6/25wd/9ucHf/b3F1/25wd/9ucXv/c3Z//3Bzff92eYL/dHZ+/3Fzev93eX//
    +bW92/3V3ff9wcnn/bnB3/3N1fP9ucXv/cHN9/2xvef9sbnX/cHN9/2xudf9kZ3H/am13/2ptd/9nanT/
    +Zmlz/2ptd/9wcnn/bG51/21vc/9ucHf/bnF7/3V3ff9sb3n/bG95/3N1fP9vcXX/dnh8/25wd/9sbnX/
    +am13/25wd/9vcXX/b3F1/3Byef9vcXX/dXd9/3Byef90dn3/cXN9/25wd/9tcHn/bXB6/25xe/9ucHf/
    +bnB3/3Byef9wc3r/bW94/2ptd/9zdXz/b3F1/21vc/9ucHf/bnF7/3V3ff9sb3n/bnB3/3V3ff9sb3n/
    +c3V8/3Byef9zdXz/c3Z//25wd/9ucXv/bG95/25wd/9wcnn/cHN9/3N1fP9ucXv/d3l//25xe/9wc33/
    +dXd9/3N2f/9wcnn/d3qD/3d5f/9zdn//c3Z//3Byef9wcnn/bnB3/25xe/9wc33/dXd9/2xudf9tb3P/
    +c3V8/2dqdP9sbnX/bG51/21vc/9wcnn/c3V8/2Rncf9qbXf/bnF7/2xudf9tb3P/am13/2xudf9qbHP/
    +dXd9/25xe/9qbXf/bG95/25xe/9sbnX/cHJ5/3V3ff9ucHf/cHJ5/3d5f/93eX//c3Z//3V4gf91eIH/
    +bG95/3V3ff91d33/Zmhu/25wd/91d33/dnh8/3Byef9wcnn/b3F1/2xudf9wcnn/cHJ5/2Rncf9nanT/
    +am13/2ptd/9nanT/bG51/2Zpc/9maG7/bG95/2dqdP9qbXf/Z2px/2dqcf9qbXf/c3V8/3Byef9wcnn/
    +dnh8/2xudf93eoP/am13/21vc/9qbXf/bG51/2psc/9zdXz/d3l//25wd/9ucHf/b3F1/25wd/9qbXf/
    +bG51/3V3ff9qbHP/amxz/29xdf9wcnn/c3V8/2xvef9ucHf/bG51/2ptd/9sbnX/c3V8/3N1fP9wcnn/
    +amxz/2xudf9qbXf/c3V8/3V3ff9qbXf/d3l//2xudf9ucHf/bG51/2xvef9sbnX/cHJ5/3Z4fP9zdXz/
    +c3V8/2ptd/9sbnX/amxz/2xudf9sbnX/bW9z/21vc/9sbnX/cHJ5/3V3ff9sbnX/bG51/3Z4fP9sb3n/
    +dXd9/3Byef93eX//bnF7/29xdf91d33/cHN9/2xvef9wcnn/eHl9/3Byef95e4H/c3Z//25wd/9qbXf/
    +bnB3/3d5f/91eIH/bnF7/25wd/9wc33/dXiB/3d5f/9ucHf/dXiB/25wd/9sb3n/Z2p0/2ptd/9sb3n/
    +bnF7/25xe/9wc3z/bnB3/29yev9ucHf/b3F1/2xudf9qbXf/bnF7/3N2f/9wc33/bXB6/3F0ff9sbnf/
    +cXR9/2ttdP9qbXf/Z2p0/2psc/9sb3n/bnF7/2xvef9ucHf/bG51/25wd/9sbnX/amxz/25wd/9vcXX/
    +bnB3/2ptd/9ucHf/bnF7/2xvef9sb3n/cHN9/25xe/95e4H/cHN9/3Byef91eIH/cHN9/3l7gf9wc33/
    +bG95/3Byef9ucHf/bnB3/21vc/9wcnn/bW9z/3Byef9ucHf/c3V8/2xudv9sbnX/a211/25xev9ucXv/
    +bnB3/3Byef9ydHv/b3J7/25wef9ucHf/c3V8/25wd/9vcXX/b3F1/3Byef9zdXz/bG51/3N1fP94eX3/
    +bnB3/3V3ff9ucHf/bnB3/3d5f/9wcnn/c3Z//3V4gf91eIH/bG95/3N2f/9wcnn/bnB3/3d5f/9sbnX/
    +cHJ5/3V3ff91d33/b3F1/3N1fP92eHz/c3V8/3Byef9ucHf/bnB3/21vc/9sbnX/c3V8/3d5f/9ucHf/
    +am13/25xe/9kZ3H/bG51/2ptd/9sbnX/bG95/3N1fP9maXP/bG51/2xvef9sb3n/bW9z/2xudf9ucHf/
    +bnB3/3V4gf9ucXv/bnB3/25xe/9wcnn/bnB3/3Byef91d33/bG51/2xudf92eHz/d3l//3N1fP9zdXz/
    +c3V8/25wd/91d33/c3Z//2dqcf9ucHf/dXiB/3t9g/91eIH/d3qD/3Bzff9ucHf/c3Z//3N2f/9sb3n/
    +bnB3/3N1fP9ucHf/bnB3/3Bzff9ucXv/bnF7/3Z4fP91d33/c3V8/25wd/9tb3P/cHJ5/25wd/9sb3n/
    +bnF7/3Z4fP9vcXX/e32D/25wd/9qbXf/am13/25wd/9nanH/cHJ5/3d6g/9sb3n/cHJ5/3Byef9wc33/
    +bnB3/25xe/91eIH/am13/2xvef9ucHf/bnF7/3Bzff9sb3n/bnF7/29xdf9ucHf/bW9z/3N1fP9wcnn/
    +c3V8/2xudf9ucHf/am13/3N1fP92eHz/am13/3V3ff9qbHP/am13/2xudf9qbXf/amxz/2xvef91d33/
    +cHN9/3V3ff9sb3n/bG51/2dqdP9qbHP/bG51/2xudf9sbnX/bG51/2ptd/9wc33/amxz/2Rncf9ucXv/
    +Z2p0/25xe/9sb3n/dXd9/2ptd/9qbXf/cHN9/25xe/9nanT/bG95/3V3ff9sbnX/cHN9/2ptd/9nanT/
    +ZGdx/2xudf9zdXz/cHN9/25wd/9vcXX/bG95/3V3ff94eX3/bnB3/3l7gf9ucXv/bnB3/2dqdP91d33/
    +bnB3/25wd/9wcnn/bnF7/21veP9wcnn/b3J8/3Byef9ucXv/am13/3Bzff9zdn//bG95/3Byef9ydH3/
    +cHJ7/3V2e/9vcXf/cHJ5/25wd/9sbnX/cHJ5/3Bzff9wcnn/bnB3/25wd/9wcnn/bG51/2Rncf9sbnX/
    +bG51/2dqdP9nanT/bG51/25wd/9ucHf/b3F1/3Bzff9wcnn/eHl9/3Byef9sb3n/cHN9/3Bzff93eX//
    +bG95/2xvef9ucXv/bG95/25wd/9vcXX/cHJ5/2xudf9ucHf/cHJ5/3N2f/9vcnz/b3J8/25xev9wc33/
    +cHN9/3Byef9ucHf/bnB3/3Fzev9tb3b/bW91/25xe/9qbXf/bG51/2xudf9sb3n/c3V8/2ptd/9zdXz/
    +dXd9/25wd/91d33/b3F1/25xe/93eX//bnB3/3Bzff9ucXv/c3Z//2xvef91eIH/bnF7/3Bzff95fIb/
    +d3qD/3l8hv97fof/e32D/3V3ff95fIb/e32D/3N2f/9zdn//bnF7/3Bzff9wcnn/bG95/25xe/91eIH/
    +bnB3/3Byef91d33/bG95/3Byef9sb3n/bnB3/3Bzff91d33/amxz/25wd/9wcnn/bnB3/25wd/9ucXv/
    +bnF7/2ptd/95e4H/bnF7/25xe/9zdn//cHN9/3Byef9wc33/d3l//3N1fP9wcnn/dXd9/3V4gf9wcnn/
    +cHN9/25xe/9ucXv/dXd9/3V4gf9maXP/am13/3Bzff94eX3/c3V8/3N1fP9vcXX/b3F1/3Byef91d33/
    +bnB3/2ptd/9wcnn/cHJ5/21vc/9zdXz/bG95/2ptd/91d33/c3V8/3V3ff9qbXf/am13/2xudf91eIH/
    +d3qD/3l8hv9+gIb/c3Z//4GDiv9zdn//c3Z//3Bzff9ucXv/am13/3N1fP95fIb/bnB3/25wd/9ucHf/
    +cHJ5/2xudf9sbnX/c3V8/2dqcf9sbnX/bG95/25xe/9zdn//bG95/2xvef9ucHf/bnB3/25wd/9wc33/
    +cHN9/3N2f/9ucHf/amxz/29xdf91d33/eHl9/2xudf92eHz/bW9z/25wd/9ucHf/bnF7/25wd/91d33/
    +dXiB/3V3ff92eHz/bnB3/2xudf9nanH/bnB3/2xudf9vcXX/bG51/2xudf9qbXf/bnF7/2ptd/9qbXf/
    +c3V8/2psc/92eHz/c3V8/3V3ff9wcnn/bnB3/3N2f/9wc33/am13/2xvef95e4H/bnB3/3Z4fP9ucHf/
    +bG51/2psc/9vcXX/dXd9/3N1fP9sb3n/cHJ5/25xe/95e4H/eXuB/3Byef93eX//bnB3/29xdf9nanH/
    +am13/2Rncf9maG7/Zmlz/2tueP9oa3P/am11/2ptd/9qbXf/bG51/2Rncf9qbXf/c3V8/2xudf9qbHP/
    +b3F6/2xud/9zdXr/bnB3/3Byef9wcnn/bnB3/3N1fP91eIH/cHN9/3N1fP9sb3n/cHN9/25wd/9nanT/
    +b3F1/29xdf9ucHf/bG51/2xvef9ucHf/bG51/2ptd/9ucXv/am13/3Z4fP9sbnX/bW9z/3Byef9wcnn/
    +dXd9/2xudf9nanT/bG95/2ptd/9nanT/bG51/25xe/9ucHf/cHJ5/2ptd/9vcnz/bW92/2xvd/9sb3n/
    +bG95/2dqdP9nanT/Z2p0/2ttdP9sb3n/bXB4/2xveP9zdn//bG95/2xvef9ucHf/cHN9/3N1fP9qbXf/
    +dXd9/3d5f/9qbXf/c3V8/2xudf9tb3P/d3l//2ptd/9ucXv/bG95/3Bzff9qbXf/bnF7/2psc/9maXP/
    +cHJ5/2ptd/9qbXf/cHN9/25xe/9sbnX/cHJ5/3N1fP9ucHf/bnB3/2xvef9wcnn/bG51/2xvef9wc33/
    +dXiB/2xvef9ucXv/d3l//2xvef9ucXv/bnB3/3Bzff9zdn//dXiB/2xvef9wc33/c3Z//25wd/9ucHf/
    +cHJ5/25wd/9nanH/dXd9/25wd/9tb3P/bG51/25wd/9tb3P/bG51/2xvef9sbnX/bW9z/3h5ff91d33/
    +cHJ5/3N1fP9wcnn/cHJ5/3Z4fP9wcnn/Z2px/2xudf9zdn//dXd9/25xe/9zdn//cHN9/3Bzff91eIH/
    +eXuB/3N1fP9ucXv/d3qD/3t9g/92eHz/fn+D/3l7gf97fYP/fX6B/3t9g/97fYP/c3V8/3Bzff91eIH/
    +c3V8/3Byef9zdXz/dXd9/25wd/9+gYr/d3qD/3N1fP9zdXz/cHN9/2xvef95e4H/f4GH/3Bzff9zdXz/
    +cHN9/3Bzff9ucHf/bG95/3N2f/9nanT/bnB3/3Byef91eIH/dXiB/3N2f/9zdn//c3V8/3Bzff9zdXz/
    +c3Z//25xe/9zdn//bnB3/2xvef9ucXv/dnh8/3Z4fP9wcnn/dnh8/21vc/9zdXz/bG51/2xvef9tb3P/
    +c3V8/3V3ff9ucXv/cHN9/2ptd/9nanT/XF9o/2Zpc/9qbXf/amxz/2dqcf9sbnX/bG51/3Bzff9nanH/
    +Zmlz/25xe/9qbXf/c3V8/3V3ff91d33/bG51/2psc/9wc33/am13/2dqdP9qbXf/dXiB/25wd/92eHz/
    +bnF7/25wd/9sb3n/b3F1/3N1fP9wcnn/bnB3/21vc/9sbnX/dXd9/3N1fP9tb3P/eHl9/29xdf9vcXX/
    +Zmhu/3V3ff9ucHf/bG95/3Byef9xdH3/bnF7/3Fze/9ucHf/bnB3/29xdf9sbnX/c3V8/3N1fP9ucHf/
    +b3F1/3J0ev9zdn//dnmD/3N2f/91eIH/bnF7/25xe/91eIH/eXyG/3d6g/91eIH/c3Z//3d6g/9wc33/
    +bnF7/25wd/9sb3n/bG95/2xvef9zdn//dXiB/3Byef9sb3n/dXd9/3Bzff93eX//bnB3/2ptd/9wcnn/
    +cHJ5/3Z4fP9ucHf/bG95/3N1fP9vcXX/am13/2xvef9zdXz/cHJ5/3N2f/9zdn//d3qD/3Bzff9xdH7/
    +c3Z9/3J1fP9zdXz/bnB3/2xudf9sb3n/bnF6/21veP9tb3j/c3Z//2xvef9ucHf/bnB3/3N1fP94eX3/
    +b3F1/3V3ff93eX//bnB3/3V3ff9ucHf/cHJ5/3V3ff9ucHf/bnF7/2xudf9ucXv/Z2p0/3Bzff9qbXf/
    +am13/25xe/9sb3n/Z2p0/2xvef9qbXf/YmVu/2Rncf9maXP/Zmhu/2Zobv9maG7/Z2p0/2Rncf9maG7/
    +Zmlz/25wd/9maG7/Zmhu/2xvef9gY2z/Zmlz/2Rncf9nanH/Zmlz/2Rncf9cX2j/Zmlz/2Zpc/9kZ3H/
    +YmVu/2Zpc/9nanT/YmVu/3N1fP9nanH/Zmhu/2Zpc/9qbHP/Z2px/2xudf9sb3n/am13/2xudf9wc33/
    +c3V8/25xe/9sb3n/am13/2ptd/9zdXz/bnB3/2Zobv9nanT/bnF7/3Bzff9sb3n/bG95/2ptd/9sbnX/
    +bG95/2xvef9sbnX/Zmlz/2ptd/9ucXv/am13/3N1fP9sbnX/cHJ5/3Byef9zdXz/dXd9/2xudf9vcXX/
    +c3V8/25xe/9wc33/bnF7/3Bzff9sbnX/e32D/3V3ff9ucHf/cHJ5/2xvef9nanT/dXd9/3l8hv9sb3n/
    +b3F1/25wd/9ucHf/bnB3/25wd/9zdn//am13/25wd/9wcnn/c3Z//3N2f/9ucHf/cHN9/3Byef9wc33/
    +bnF7/3V4gf9ucXv/dXd9/25wd/9qbHP/bnB3/3V3ff91d33/bnB3/3Z4fP9sbnX/c3V8/25wd/9sbnX/
    +bG51/25xe/9zdXz/c3V8/3V3ff9zdXz/bG51/2RmbP9nanT/am13/2dqdP9sbnX/bG95/25wd/9ucXv/
    +bG51/2dqdP9zdXz/bG95/3V3ff91d33/dXd9/2xudf9sbnX/dXd9/25wd/9vcXX/c3V8/3l7gf9sbnX/
    +c3V8/2dqdP9nanT/Zmlz/2ptd/9ucXv/bG95/2xudf9qbXf/amxz/3Bzff9wc33/bG51/3N1fP9sbnX/
    +bG51/2Jlbv93eoP/c3Z//3V4gf94e4X/eXuC/3V3ff9ydX3/a254/3Byef9tb3P/bnB3/3Byef9zdXz/
    +bW9z/21vc/9xcnj/dHZ+/3l6f/94eoH/foCG/3d5f/95e4H/c3Z//3d6g/97fYP/dXiB/3V4gf9zdn//
    +c3V8/3N1fP9zdXz/cHN9/2xvef9zdXz/d3qD/3N2f/9zdXz/bG95/3Bzff9wc33/d3l//3Byef9qbXf/
    +cHJ5/2xvef91d33/bG51/25wd/91d33/bnB3/2psc/9ucHf/c3V8/2xvef9ucHf/bG51/3Byef9ucHf/
    +cnR6/3N1e/9wcnn/dXd9/2ptd/9sb3n/am13/2tudv9qbXf/am13/3Bzff9sbnX/cHJ5/2xudf9qbXf/
    +dnh8/21vc/9sb3n/c3V8/2xudf9wcnn/bW9z/3Byef93eX//bnB3/2xvef9sbnX/cHN9/2xudf94eX3/
    +bnB3/25wd/93eX//dXd9/25xe/91eIH/dnh8/25wd/9wc33/dXd9/3N1fP9ucHf/bnF7/3l7gf9wcnn/
    +bnF7/3N2f/93eoP/bnF7/25xe/93eX//cHJ5/25xe/9ucHf/bnF7/2xvef9ucXv/bG51/2xvef9wc33/
    +b3F1/25wd/9wc33/bnB3/2psc/94eX3/bnB3/29xdf9ucHf/bG51/25wd/9ucXv/cHN9/3Byef9ucXv/
    +dXiB/3l7gf95e4H/cHN9/3Bzff9ucXv/eHl9/3V3ff9nanH/bG51/3Byef91d33/b3F1/25wd/9tb3P/
    +bG51/25wd/9ucHf/bG51/2dqdP9sb3n/am13/2Rncf9qbXf/bG51/3Bzff9qbXf/bG95/2xvef9kZ3H/
    +Z2p0/3Bzff9zdXz/c3V8/3N1fP91d33/bnB3/3t9g/9zdn//cHJ5/3N1fP9wcnn/am13/3d6g/95fIb/
    +cHN9/3Bzff9zdn//cHN9/3Byef9wcnn/d3qD/2xvef9zdXz/cHJ5/3V4gf95e4H/c3V8/3Bzff91d33/
    +d3qD/3d6g/91eIH/d3qD/3d6g/91eIH/dXd9/3t9g/97fYP/e32D/3l8hv97fof/cHN9/3d6g/9wc33/
    +c3Z//3N2f/93eoP/eXuB/3V4gf95e4H/dXiB/2ptd/9qbXf/cHJ5/25wd/9sbnX/bG51/2xudf9ucHf/
    +c3V8/21vc/9nanT/cHN9/25xe/93eX//dXd9/3Bzff9qbXf/bG51/3N1fP9sb3n/bG51/25xe/91eIH/
    +am13/25xe/9kZ3H/amxz/2Rncf9nanT/cHJ5/2ptd/9nanH/Z2p0/2Rncf9maXP/Zmlz/2Zobv9nanT/
    +YmVu/2Zobv9cX2j/bnF7/2ptd/9ucHf/b3F4/2tueP9tb3f/am12/2dpb/9maXP/Zmlz/2Rncf9maXP/
    +Z2p0/2dqcf9sbnT/a254/2tueP9wc3r/a253/25xe/9tb3P/bnF7/2xudf9sb3n/bnF7/2xudf9qbHP/
    +am13/2Rncf9maXP/Z2px/2xudf9iZW7/Z2p0/2xvef9qbXf/amxz/2dqdP9sb3n/bnF7/3V3ff9wcnn/
    +bnB3/3Bzff9wc33/e32D/3Bzff9ucHf/d3qD/3Bzff9sb3n/dXd9/3l8hv9zdn//d3qD/3N2f/93eoP/
    +cXR9/3Z4fv9ydHv/dHZ9/3Z4fP9ucHf/cHJ5/3Bydv9wcnr/b3F4/25wd/91eIH/bnB3/25xe/9sb3n/
    +cHJ5/3Z4fP9tb3P/am13/3N1fP9qbXf/bnF7/2dqcf9ucXv/dXd9/2xvef9ucXv/bG51/2xvef9qbHP/
    +dXd9/2ptd/9sbnX/dnh8/3N1fP9sb3n/dXd9/25xe/9nanT/Z2p0/25xe/9sb3n/amxz/2psc/9wc33/
    +am13/2xudf9wc33/dXd9/2psc/9qbHP/bnF7/2dqcf9sbnX/bW9z/25wd/9sbnX/bnB3/2xudf9qbXf/
    +bnF7/21vc/9vcXX/dXd9/21vc/9qbHP/eXuB/25xe/9wc33/cHN9/2xvef9ucHf/cHJ5/2xvef9ucHf/
    +bG95/25xe/91d33/dnh8/25xe/9sbnX/am13/3N1fP9ucXv/YmVu/2ptd/9sb3n/bnF7/2psc/9qbHP/
    +Z2px/2dqcf9nanH/Z2px/2dqdP9maXP/am13/2dqdP9kZ3H/bG95/2psc/9wc33/bG95/3Bzff9zdXz/
    +Z2px/21vc/9zdn//cHN9/3Z4fP91d33/c3Z//25xe/95fIb/c3Z//25wd/9ucHf/bnB3/2ptd/9zdn//
    +e32D/25wd/9vcXX/cHN9/25xe/9ucHf/cHJ5/3V4gf9nanT/bnB3/25wd/93eoP/c3Z//2xvef9ucHf/
    +bG95/3Bzff9wcnn/cHN9/2xvef9ucXv/bG51/2xudf9ucHf/bnF7/3N1fP9zdXz/dXd9/25wd/9wcnn/
    +am13/2xvef9qbXf/cHN9/3Bzff9sb3n/cHN9/2xvef9iZW7/YGNs/2psc/9sb3n/Zmlz/2xudf9sbnX/
    +bW9z/3N1fP9tb3P/amxz/3N1fP9ucHf/d3l//3V3ff9ucXv/am13/2ptd/9wc33/am13/2ptd/9ucHf/
    +e32D/3Byef91d33/bG51/25wd/9ucHf/cHJ5/3V3ff9ucHf/amxz/25xe/9wcnn/bG95/25xe/9sbnX/
    +cHN9/29xdf9sbnX/Z2px/2xvef9qbHP/am13/2xvef9tb3b/b3F5/29yev9tb3P/cHJ5/2xvef9sbnX/
    +bG51/3N1fP9vcXX/a211/2xudv9vcXn/cnR7/25wd/9wcnn/bG51/2xvef9qbHP/am13/2xvef9sbnX/
    +Z2p0/25xe/9nanT/am13/2xudf9qbXf/Zmlz/2ptd/9sb3n/bG95/2ptd/9qbXf/c3V8/3Byef92eHz/
    +cHJ5/25wd/9sb3n/bG95/3N1fP9wcnn/bG51/3N1fP9qbHP/Z2px/2xudf9ucHf/bW9z/3Bzff9qbHP/
    +bG51/25weP9xdHv/cXR8/25xe/91d33/b3F1/3N1fP9ucHX/bnB3/21vdf9rbXP/c3V8/2ptd/9sb3n/
    +am13/2xudf91d33/bG51/2xvef91d33/bnB3/3Byef9sbnX/cHN9/3V4gf9wcnn/bG95/2ptd/9wcnn/
    +b3F1/3h5ff9tb3P/bG51/3N1fP91d33/bnB3/3l7gf9zdn//bnF7/3Byef93eX//d3l//25xe/9wcnn/
    +d3l//2xvef9sb3n/cHN9/3V3ff9ucHf/bnB3/3V3ff9ucHf/bG95/2xudf9wcnn/bnB3/3Byef9ucHf/
    +bnB3/25xe/9qbXf/bW9z/3Bzff9qbHP/ZGdx/3N1fP9qbHP/am13/2xvef9nanT/amxz/2xudf9qbXf/
    +bG51/2xudf9sb3n/dXd9/2xvef9ucXv/bG95/2xudf9zdXz/bG95/2BjbP9maXP/bG95/3Bzff9nanT/
    +am13/2dqdP9qbHP/am13/2ptd/9qbXf/Z2p0/25xe/9sb3n/Zmlz/2xvef9sbnX/cHN9/2ptd/9zdXz/
    +c3V8/2Rncf9sbnX/dXd9/3N2f/91d33/dXd9/3V4gf9ucXv/dXiB/3Bzff9ucHf/cHJ5/25wd/9sb3n/
    +c3Z//3t9g/9sb3n/b3F1/25wd/9ucHf/b3F1/29xdf9zdXz/Zmhu/25wd/9sbnX/c3V8/3Bzff9qbXf/
    +bnB3/2psc/9wcnn/am13/3Byef9sbnX/cHJ5/2xudf9tb3P/bG51/3Byef91d33/bnF7/3d5f/9ucHf/
    +cHJ5/3Byef9ucHf/cHN9/3V3ff95e4H/dXd9/3V3ff9wc33/bG95/2ptd/9vcXX/bnB3/2ptd/9sb3n/
    +bnB3/21vc/9zdXz/bW9z/2psc/91d33/am13/3V4gf94eX3/cHJ5/25wd/9ucHf/cHJ5/2xudf9qbXf/
    +bG95/3N2f/9qbXf/bG95/2Rncf9nanT/Zmlz/3Bzff9wc33/am13/2dqdP9sb3n/bnF7/2xudf9ucXv/
    +amxz/2xvef9sbnX/bnF7/2Rncf9zdXz/bG51/21vc/9sbnX/b3F4/3FzfP9vcnv/bnB3/3N2f/9zdn//
    +bnF7/3Byef9wc33/bnB3/25xe/9xc3v/cXR9/3d5gP9wc33/dXiB/3Bzff9ucXv/bnB3/25xe/9wc33/
    +bnF7/25wd/93eX//bG95/25xe/9wc33/cHN9/2xvef9wcnn/c3Z//3Bzff9wc33/c3V8/3d6g/91eIH/
    +e32D/3Byef9zdn//cHN9/3N2f/93eX//c3Z//3Byef91eIH/cHN9/3Bzff9zdn//d3qD/3V4gf97fYP/
    +c3V8/3Bzff9xdH3/cnR7/3F0fv9wc3r/cHJ5/2xudf9wc33/am13/25xev9tb3b/a210/3N1fv9wc33/
    +c3Z//2xvef9wcnn/dXd9/2xudf9zdXz/eHl9/3Bzff9zdXz/bnB3/3V3ff93eoP/c3Z//3N2f/91d33/
    +eXuB/3N1fP97fof/c3Z//3N2f/9+gIb/e32D/3l8hv9/gYf/d3qD/3N1fP9zdXz/foCG/3t9g/93eoP/
    +dXiB/36Ahv91d33/c3V8/3t9g/9+gIb/dXd9/3N1fP93eX//bG95/25wd/9vcXX/c3Z//25xe/91eIH/
    +bnB3/3Byef9zdXz/bnF7/3Byef91eIH/cHN9/3V3ff95fIb/cHN9/3V4gf95fIb/dXd9/3N1fP9zdn//
    +cHN9/3Byef9ucXv/cHN9/3d6g/91eIH/c3Z//3V4gf9ucXv/dXiB/3V4gf9nanT/bG51/3N2f/93eX//
    +cHN9/25wd/9sbnX/bG51/25wd/9sbnX/c3V8/2xudf91d33/bnB3/2psc/9zdXz/bG51/3V3ff9ucHf/
    +c3Z//3h5ff9qbHP/bnB3/3N2f/9wc33/c3V8/3N1fP9zdXz/cHN9/3h5ff9ucHf/bnB3/25wd/9nanT/
    +bG95/3V4gf9/gYf/cHN9/3Byef9ucXv/cHN9/3Byef9zdXz/dXiB/2dqdP9wc33/bnB3/3Bzff93eoP/
    +c3V8/3N2f/9ucXv/dXiB/3Bzff91eIH/c3V8/3t9g/91eIH/c3Z//3d6g/91eIH/e32D/3l8hv9+gYr/
    +eXuB/3l7gf95fIb/dXiB/3t9g/97fof/e36H/3l7gf95e4H/d3qD/25xe/9qbXf/cHJ5/3N1fP9sb3n/
    +bnF7/3Byef9wcnn/dXd9/29xdf9qbHP/dnh8/3N1fP93eX//dnh8/2xvef9qbXf/bG95/25xe/9sbnX/
    +bG95/2xvef93eX//bG95/25xe/9qbXf/am13/2dqdP9zdXz/bG95/2psc/9nanT/bG95/2xvef9qbHP/
    +Z2p0/2dqcf9sb3n/Zmhu/2Rncf9dYGr/cHJ5/2xudf9sb3n/a210/2ttdf9rbnj/aGpx/2Rncf9maXP/
    +Zmlz/2Zobv9iZW7/ZGdx/2Jlbv9maXP/aGpw/2xvd/9xc3r/bG51/3N1fP9qbXf/bnF7/2ptd/9sb3n/
    +bnF7/25wd/9sbnX/dXd9/2psc/9sbnX/bnB3/29xdf9nanH/bnB3/25wd/9ucXv/bnB3/2xvef9zdXz/
    +dnh8/3V3ff9sb3n/cHN9/3Byef9ucXv/c3Z//3Bzff9wcnn/dXiB/25xe/9ucXv/bG95/3V4gf91eIH/
    +foCG/3V3ff91eIH/dHeA/3R3fv90d4D/dHeA/3Bzff9ucXv/cHJ5/2xudf9vcXj/bW94/21vdv9zdn7/
    +cHN9/3Z4fP9ucHf/c3V8/3V3ff9ucHf/dXiB/3d5f/91d33/cHJ5/2xudf9sb3n/dXd9/25xe/9sb3n/
    +Zmlz/25xe/9qbHP/bnF7/2ptd/9qbHP/cHN9/2xvef9ucXv/dXiB/2xvef9tb3P/am13/3N1fP9ucXv/
    +Z2p0/2psc/9wcnn/Zmlz/2Zpc/9sb3n/bnF7/2dqdP9sbnX/c3V8/2ptd/9qbXf/amxz/25xe/9sb3n/
    +bG95/2dqdP9sbnX/bnB3/25wd/9tb3P/cHJ5/2xudf9qbXf/dXd9/3Byef9ucHf/bnB3/25wd/9ucHf/
    +bnF7/3Bzff9ucHf/bnF7/2xvef95fIb/bnF7/25xe/9wc33/bG95/3V4gf9zdXz/ZGdx/2Zpc/9wc33/
    +bnF7/2ptd/9sb3n/am13/2xvef9qbXf/amxz/2ptd/9maXP/bnF7/2Zpc/9gY2z/am13/2psc/91d33/
    +bG95/2xvef91d33/ZGdx/2psc/9ucXv/dXiB/3Z4fP91eIH/d3l//3d6g/97fYP/d3qD/3N2f/9zdn//
    +cHN9/3V3ff97fYP/g4WM/3Bzff9ucXv/cHN9/3Byef9ucHf/cHJ5/3V4gf9qbHP/dXiB/25wd/9ucXv/
    +dXiB/25wd/9wcnn/am13/3Bzff9ucXv/cHJ5/21vc/9zdXz/bnB3/21vc/9zdXz/bnB3/3h5ff9ucHf/
    +dXd9/25wd/9ucHf/c3V8/2xudf9wc33/d3l//3d5f/91eIH/cHN9/3N2f/9nanT/Z2p0/25xe/9sb3n/
    +bG95/2xvef9ucHf/bnF7/3V4gf9wcnn/Zmlz/3V3ff9wc33/d3l//3h5ff91d33/b3F1/25wd/9zdXz/
    +bnB3/3Byef9ucHf/d3l//25xe/9sb3n/bG51/2xudf9sbnX/cHN9/3V3ff9ucHf/bG51/3N1fP91d33/
    +bW9z/25wd/9tb3P/bnF7/2ptd/9sbnX/Zmhu/2xvef9qbHP/bnF7/2xudf9vcXb/cXN7/29xev9sb3n/
    +c3Z//25xe/9ucHf/bG95/2xvef9ucHf/cHJ5/21vdv9wcnj/dXd7/29xe/9wc33/bnF7/3Byef9ucHf/
    +cHJ5/3Bzff9ucHf/bnB3/3Z4fP9nanT/am13/2xudf9tb3P/ZGZs/29xdf9ucHf/c3V8/25wd/9ucHf/
    +bnB3/3N1fP91d33/bnB3/3N2f/9ucHf/bnB3/3N1fP9wc33/cHJ5/3N2f/9sb3n/Z2p0/2ptd/9zdn//
    +bnF7/3d5f/9wc33/cXN9/3R3f/91eH//dXiB/3V4gf9wc33/bnF7/3Bzff9ucXr/cnR9/3Bzff9ucXv/
    +dHZ9/3N2f/91d33/bG95/3Byef91d33/bG95/3Bzff91eIH/c3V8/2xvef9ucHf/c3V8/3V3ff9wcnn/
    +bnB3/25wd/92eHz/bG95/3d5f/9ucXv/bnB3/3l7gf9zdXz/c3V8/3l7gf9ucHf/bW9z/2xudf92eHz/
    +cHJ5/3Byef9sbnX/dnh8/2ptd/9qbXf/dXd9/3Z4fP9sbnX/bnB3/3d5f/9ucHf/amxz/2xudf9zdXz/
    +bnF7/3Bzff9qbXf/bG51/21vc/9wcnn/bnB3/3N2f/9ucHf/bG51/3Bzff9ucHf/bnB3/3Bzff9ucHf/
    +b3F1/29xdf9wc33/cHJ5/3N2f/91eIH/foGK/3V4gf95fIb/eXyG/3N2f/9+gYr/d3qD/3Bzff9wc33/
    +e32D/3d6g/91eIH/eXyG/3N2f/95fIb/dXiB/3V4gf95fIb/cHN9/3t9g/95fIb/cHN9/3V4gf9wcnn/
    +d3l//3V3ff92eHz/eXuB/2dqdP9ucHf/dXiB/2ptd/9ucXv/bG95/3Bzff9sb3n/dXd9/2xudf9qbXf/
    +am13/2dqdP9nanT/bnF7/3l7gf9sbnX/bG51/25wd/9sbnX/am13/2xudf9ucXv/ZGZs/2ptd/9maXP/
    +bG95/3N1fP9nanT/amxz/2Zpc/9qbXf/bG51/25wd/9tb3P/dXd9/3Byef9sbnX/dXd9/3Byef92eHz/
    +c3V8/3h5ff9ucHf/bG51/3V3ff9ucXv/dXiB/3l8hv95fIb/d3qD/3N2f/91eIH/bnF7/25xe/91eIH/
    +cHJ5/3Byef9zdn//bnB3/25wd/9wc33/bnF7/2dqdP91eIH/dXiB/3l7gf95fIb/dXiB/3N1fP9wc33/
    +c3Z//2xvef9zdn//bnF7/3l7gf9zdn//bnF7/25wd/9vcXX/b3F1/3N1fP9zdXz/bnB3/2psc/9zdn//
    +dXd9/2xudf9wcnn/bG95/2xvef9sbnX/bG51/1xfaP9ucXv/bG95/3N1fP9tcHr/bW91/3ByeP9tb3j/
    +aGp0/2xvef9qbXf/bG95/2dqdP9sbnX/bnB3/29xef9oa3X/bG93/3Byev9rbnj/bnF7/2xudf9sb3n/
    +bG95/2xvef9sb3n/bnB3/2ptd/9wc33/Z2p0/2ptd/9qbXf/bG51/2Jlbv9qbHP/Z2p0/2xvef9qbHP/
    +amxz/2ptd/9ucXv/bG95/2psc/9ucXv/am13/2xudf9ucXv/bG95/2xudf9sbnX/ZGdx/2dqdP9kZ3H/
    +bG95/3Byef9zdXz/bG95/21vdP9ucHf/cnR6/3Fzev9vcXj/bG95/2xudf9ucHf/bG51/2ptd/9rbnj/
    +a254/3J1fv91d33/dXd9/29xdf9wcnn/c3Z//25xe/91eIH/d3qD/3N2f/9ucHf/bnB3/3N1fP93eX//
    +bnF7/25xe/9qbXf/c3Z//3Bzff91d33/bnF7/2xudf94eX3/cHJ5/3V3ff91eIH/bnF7/25wd/9sb3n/
    +dXd9/25wd/91d33/bG51/3Z4fP9qbHP/Z2p0/3Bzff92eHz/bG51/3Byef92eHz/bW9z/2xudf9vcXX/
    +dnh8/3N1fP9zdXz/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/bG51/2ptd/9ucXv/am13/2psc/9wc33/
    +Zmlz/2ptd/9maXP/am13/2dqcf9maXP/Z2px/25wd/9kZ3H/Zmhu/2Zpc/9nanH/cHJ5/2Zpc/9gY2z/
    +YmVu/2Zpc/9qbXf/Zmhu/2dqdP9iZW7/Z2p0/2Zobv9maG7/am13/2Rncf9maXP/Zmhu/2BjbP9maXP/
    +ZGdx/2ptd/9nanT/bG95/3Byef9kZ3H/ZGdx/2ptd/91d33/dXd9/3V3ff94eX3/cHJ5/3N2f/9ucXv/
    +c3V8/3V4gf9zdXz/bnB3/3N2f/9+gIb/bnB3/29xdf9ucHf/bG51/2xudf9ucHf/dXd9/2ZobP9ucHf/
    +bG51/25wd/92eHz/bG51/2xudf9qbHP/bnB3/29xdf9ucHf/bG51/3Bzff9qbXf/bG51/25xe/9wc33/
    +bG95/3Bzff9zdXz/am13/2xudf91d33/bG51/3Byef91d33/d3l//3N2f/9ucXv/cHN9/2xvef9sbnX/
    +cHJ5/29xdf9sbnX/bG95/2ptd/9vcXX/c3V8/3Byef9maG7/c3V8/3N1fP92eHz/d3l//3V4gf9ucHf/
    +cHN9/3Bzff9wcnn/d3qD/3Bzff95e4H/cHN9/2xvef9sb3n/bnB3/29xdf91d33/dXd9/3Bzff9sb3n/
    +dXiB/3V3ff9ucHf/cHJ5/3Byef9wcnn/bnB3/3Byef9maG7/cHJ5/25wd/9wc33/bnB3/25weP9wcnn/
    +bXB5/25wd/9wcnn/b3F1/3N1fP9sbnX/bnB3/3Byef9vcXj/bG52/2xvef9vcnv/bXB5/2xvef9sbnX/
    +bG95/2Zpc/9nanT/Z2p0/2psc/9nanH/cHN9/2Zpc/9qbXf/am13/2ptd/9iZW7/bG51/2xvef91d33/
    +bnB3/25wd/9zdn//d3qD/3N2f/9wcnn/dXiB/3N2f/9zdXz/eXyG/3V4gf91d33/dXiB/3N1fP9zdn//
    +bnF7/3l8hv99foH/foCG/3V4gf91d33/dXiB/3V3fv90d4D/cXR+/25xe/9wcnn/c3Z//3Byef9wcnr/
    +cHJ5/2tueP90d4D/d3l//3V3ff9ucHf/cHN9/3V3ff9wc33/c3Z//3d6g/91d33/bG95/2xvef9zdn//
    +eXyG/25xe/9ucHf/bnB3/3Z4fP9wcnn/c3V8/2xudf9nanH/cHN9/2ptd/9ucXv/d3l//21vc/9tb3P/
    +b3F1/3Z4fP9ucHf/cHJ5/2ptd/94eX3/bnB3/2dqcf9ucHf/c3V8/2psc/9wcnn/dnh8/29xdf9qbHP/
    +bW9z/3N1fP9zdXz/cHJ5/2xudf9qbXf/am13/2xvef9qbHP/am13/2dqcf9kZ3H/am13/2psc/9maG7/
    +Z2p0/1xfaP9gY2z/YmVu/2dqdP9kZ3H/ZGdx/2Zobv9ucHf/Zmlz/2Rncf9nanT/Z2px/25xe/9qbXf/
    +ZGdx/2Zpc/9wc33/c3V8/2xudf9zdXz/bG51/2xvef9qbXf/am13/3N1fP9ucHf/cHJ5/25xe/9maXP/
    +cHN9/25wd/92eHz/cHJ5/25xe/9zdXz/amxz/2xudf91d33/dXd9/3N1fP92eHz/d3l//3N1fP91d33/
    +bG95/29xdf9wcnn/amxz/2xudf9wcnn/eXuB/3Byef9tb3P/bG51/2Zpc/9nanT/am13/3N1fP9gY2z/
    +am13/2dqdP9qbXf/bnF7/2dqcf9ucHf/bnB3/29xdf9ucHf/cHJ5/29xdf91d33/cHJ5/21vc/9wcnn/
    +dXd9/3Byef92eHz/dnh8/25xe/9ucXv/eXuB/3N1fP91eIH/e36H/3t+h/93eX//cHN9/3N2f/9ucHf/
    +am13/3V3ff9ucHf/bG95/3Byef9sb3n/bnF7/3N2f/9ucXv/am13/3N1fP9ucXv/dXd9/3d5f/91eIH/
    +bG95/25wd/9ucXv/bnB3/3N2f/9sb3n/d3l//3Bzff9ucXv/bG95/25wd/9ucHf/d3l//3Z4fP9sb3n/
    +am13/3V3ff9zdXz/bnB3/3N2f/9wc33/cHN9/3N2f/91eIH/Z2p0/25xe/9ucHf/dXd9/3R3gP9wcnv/
    +cnR8/3Bzff9ucXv/c3Z//25xe/9zdn//bG95/3Bzff9zdn//bnF7/3F0ff9zdn//cXR+/3F0ff9wcnn/
    +bW9z/3N1fP9ucHf/bG95/2ptd/9qbHP/amxz/2xvef9maXP/Z2p0/2ptd/9qbXf/ZGdx/2psc/9qbXf/
    +dXd9/2xudf9tb3P/cHJ5/3N1fP9wc33/Z2px/25xe/9sbnX/bW9z/3Byef9sbnX/am13/2xudf9ucHf/
    +bG51/2Zpc/9ucXv/dXd9/3N1fP9sbnX/bG92/29xef9wc3v/dHd//3F0ff9wcnn/cHJ5/3Byef9ydHz/
    +bnB4/21weP9tb3f/cHN9/3Bzff9wc33/amxz/2xvef95e4H/dXiB/3N2f/9+gYr/eXyG/3d5f/93eX//
    +foCG/4OFjP97fYP/dXiB/25xe/95fIb/c3Z//3t9g/9wc33/cHN9/3d5f/9wc33/c3Z//3d6g/9ucXv/
    +cHN9/29xdf93eX//bnB3/3N1fP9ucHf/eHl9/2psc/9maXP/bG95/25xe/9maXP/bG51/3N1fP9sbnX/
    +Zmlz/2xudf9zdXz/cHN9/25xe/9qbXf/am13/2Zpc/9ucXv/amxz/2dqdP9maXP/Zmlz/25xe/9qbHP/
    +Z2px/2dqdP9iZW7/Zmhu/2Jlbv9nanT/Zmhu/2Zpc/9maG7/bnB3/2dqdP9kZ3H/Z2p0/2Rncf9nanT/
    +ZGdx/11gav9gY2z/am13/2ptd/9maG7/am13/2dqcf9ucXv/bnF7/2ptd/9zdXz/am13/2ptd/9qbXf/
    +Z2px/3N1fP9ucHf/eHl9/3Bzff9wc33/d3l//2xudf9ucHf/c3Z//3l7gf91eIH/eXuB/3l8hv91eIH/
    +dXiB/3V4gf9wc33/dXiB/25xe/9ucHf/bnF7/3l8hv9zdn//cHJ5/3Bzff9ucXv/cHN9/3V4gf9+gIb/
    +bG95/3V4gf9zdXz/dXiB/3d6g/9qbXf/cHJ5/2xvef9wcnn/bG95/2xvef9sb3n/c3V8/3N1fP9ucHf/
    +c3V8/3N1fP9wc33/dXd9/3d5f/9sb3n/cHJ5/3N1fP9qbXf/bG95/3V3ff91d33/dnh8/3V3ff9ucXv/
    +bnB3/2xvef91eIH/c3V8/2xvef9wc33/am13/3Byef93eoP/cHN9/2dqdP9wc33/cHN9/3V3ff94eX3/
    +dXd9/2xudf9vcXX/bnB3/2dqcf9wcnn/bG51/3V3ff9wcnn/bG51/2ptd/9nanT/bG51/25xe/9qbXf/
    +Z2px/2Rncf9ucXv/Zmlz/2Jlbv9kZ3H/Z2px/2Zpc/9qbXf/Z2p0/11gav9nanT/amxz/25xe/9qbXf/
    +a211/2lrdP9oa3X/aWtz/2xvef9sb3n/cHN9/2psc/9wcnn/bnB3/2xuc/9sb3n/amx1/2hrdP9oam//
    +ZGdx/2Zobv9nanT/Zmlz/2Zpc/9nanH/ZGdx/2dqcf9ucXv/am13/2ptd/9sb3n/bG95/2Zpc/9qbXf/
    +bnB3/3V3ff9wcnn/bnB3/25xe/9zdn//c3V8/25wd/9wc33/bnF7/25wd/91d33/bnB3/25wd/9ucHf/
    +bnB3/2ptd/9maG7/c3V8/3N1fP9wcnn/bG51/21vc/9ucHT/bnB3/3Byef9wcnr/bG95/2xvef9ucHf/
    +cnR7/2xudv9rbXb/aWx2/25xe/9zdXz/dXd9/25wd/91d33/c3V8/2xvef9qbXf/d3l//2xvef9qbHP/
    +bG51/25xe/91eIH/bnF7/25wd/9kZ3H/dXd9/2ptd/9ucXv/am13/2xvef9sb3n/bG51/2xvef91d33/
    +am13/2ptd/9sbnX/dXd9/25wd/91d33/bG51/3Z4fP9nanT/am13/25wd/9zdXz/bG51/29xdf9zdXz/
    +b3F1/2psc/9ucHf/dXd9/3N1fP9ucXv/am13/2ptd/9qbXf/cHN9/2xudf9ucXv/bG51/25wd/92eHz/
    +bG51/21vc/9zdXz/bG51/29xdf9qbXf/cHN9/25xe/9zdXz/bnB3/3h5ff9zdXz/bnB3/25wd/9vcXX/
    +c3Z//25xe/9sb3n/bG95/3d5f/9zdn//cHN9/3d6g/9wcnn/dXiB/3V4gf9wcnn/e32D/3Bzff9zdn//
    +cHN9/2ptd/9ucXv/bG95/3d5f/9wc33/c3Z//3d6g/9sb3n/cHN9/3l7gf95e4H/cHN9/3V4gf91eIH/
    +c3V8/25wd/9wc33/bG95/3V4gf9qbXf/cHJ5/25xe/93eoP/cHN9/29xdf9zdXz/bnB3/21vc/9qbXf/
    +cHN9/2Rncf9ucXv/Z2p0/25wd/91d33/amxz/21vc/9tb3P/am13/25wd/9ucXv/bG95/3d5f/91eIH/
    +dXiB/3V4gf9zdn//dXiB/3V4gf95e4H/c3Z//3d6g/97fYP/dXiB/3d6g/97fof/e36H/3d6g/93eoP/
    +cHN9/25xe/9sb3n/dXd9/2xvef9ucXv/cHN9/2xudf9sb3n/bnF7/2dqdP9gY2z/Z2p0/2ptd/9wcnn/
    +cHN9/2ptd/9nanT/bG51/2xvef9kZ3H/bnF7/2ptd/93eX//bnB3/21vc/9qbXf/am13/2xvef93eX//
    +cHN9/2ptd/9maXP/dXd9/3Bzff9qbXf/bnF7/2xvef9wcnn/c3V8/3V3ff9maG7/amxz/2ptd/9wc33/
    +bnF7/25wd/9ucHb/bW93/3J0e/9zdn//cHN9/3V4gf9sb3n/dXiB/25xe/9sb3n/b3J8/21wev9tcHr/
    +b3J7/2xvef9sbnX/bnF7/2dqdP9sbnX/amxz/2ptd/9sbnX/cHJ5/2xudf9sbnX/cHJ5/2xvef9kZ3H/
    +bG51/25wd/91d33/cHJ5/29xdf9ucXv/dXiB/3N2f/9ucHf/cHN9/3Bzff9wcnn/c3Z//25xe/9qbXf/
    +bnF7/2xvef9ucHf/ZGdx/25xe/9ucXv/bG95/2dqdP9qbXf/bW92/2tudv9sb3n/bG95/2dqdP9maXP/
    +Zmlz/2xudf9laHH/Y2Zw/2Zpc/9ydHv/bnF7/2ptd/9sbnX/cHN9/25xe/9qbXf/am13/3Byef9qbXf/
    +Z2p0/2xudf9zdXz/d3l//3V3ff9ucHf/amxz/3l7gf9wc33/cHN9/25wd/9ucHf/cHN9/3Byef91eIH/
    +eXuB/3Byef9wc33/bnB3/3d6g/9wc33/dXiB/3N1fP95fIb/dXd9/3N1fP9zdn//c3Z//3Bzff9zdn//
    +d3qD/3Bzff9sb3n/c3Z//3l8hv97fYP/dXiB/3N2f/9zdn//c3V8/3t9g/9zdn//dXiB/25wd/9wcnn/
    +c3Z//25wd/9ucHf/dXd9/2psc/9ucHf/Z2p0/3Bzff9ucXv/cHN9/2xvef93eX//c3Z//3Bzff9wc33/
    +bnB3/3N2f/9wc33/cHJ5/2xvef95e4H/cHN9/3Byef93eX//cHJ5/3V4gf9zdn//bG95/3d5f/9zdXz/
    +cHN9/2xvef9sb3n/bnB3/3Byef93eX//c3V8/25xe/95e4H/bG95/2xvef95e4H/dnh8/25wd/93eX//
    +d3l//25xe/9sb3n/cHN9/25wd/9zdn//bG95/25wd/9ucXv/eXyG/3N1fP9tb3P/c3V8/25wd/9vcXX/
    +bG51/3Byef9maG7/cHJ5/25wd/9wc33/dXd9/2xudf9ucHf/bnB3/2xudf9ucHf/cHJ5/3Byef92eHz/
    +cHJ5/3N1fP9wc33/bnF7/2xvef9sb3n/bnF7/2ptd/9ucXv/cHN9/25wd/9ucHf/dXd9/3d5f/9zdn//
    +dXd9/25xe/9sb3n/bG95/3V3ff9ucHf/bnB3/3N1fP9sbnX/bnB3/3Z4fP9ucHf/Z2px/2xvef91eIH/
    +d3qD/3d6g/91eIH/am13/2xvef9ucXv/bnB3/3Byef9sbnX/dXd9/2xvef9sbnX/bG51/2xudf9qbXf/
    +dXd9/25xe/9nanT/Z2p0/3Bzff9zdXz/amxz/2xvef9qbXf/am13/25xe/9wc33/YmVu/2dqdP9sbnX/
    +bnF7/2xvef9pbHb/a254/2xuc/9rbnX/cHJ5/25wd/91d33/am13/3Bzff9wcnn/cHJ5/29xef9ucHn/
    +bnF5/29ye/9sb3n/amxz/25xe/9ucXv/am13/2dqdP9tb3P/bG51/25xe/9tb3P/bnB3/3Bzff9wcnn/
    +Zmhu/25wd/9wcnn/c3Z//3N2f/9sb3n/bG95/3Bzff9zdn//bnB3/3Bzff9zdXz/bnB3/3V4gf9wc33/
    +am13/3Bzff9ucHf/bnB3/2Zpc/91eIH/d3qD/3Bzff9sb3n/cHJ5/2xvef9rbnj/cHJ3/2xudv9qbXf/
    +Zmlz/2xudf9qbXf/aGp0/2dqdP9tb3X/dXd8/3V3ff9wcnn/bW9z/3d5f/9zdXz/bnF7/25wd/91d33/
    +c3V8/2xudf9vcXX/d3l//3l7gf92eHz/bnB3/2dqdP93eX//cHN9/25xe/9wcnn/cHJ5/3N2f/9wcnn/
    +d3qD/3l8hv9zdXz/cHN9/2xvef93eX//cHJ5/3N1fP9ucHf/dXd9/2xudf9tb3P/b3F1/25wd/9maG7/
    +bG51/3Byef9qbHP/YmVu/25wd/93eX//dXd9/25wd/9sbnX/cHJ5/29xdf91d33/b3F1/3Byef9ucHf/
    +b3F1/3N2f/9ucHf/bnB3/3V4gf9qbXf/c3Z//3Bzff95e4H/eXuB/3d6g/9zdn//foCG/31+gf97fYP/
    +d3l//3h5ff97fYP/d3qD/3N2f/9wc33/e32D/3d6g/9wc33/e32D/3N2f/95fIb/d3qD/25xe/95e4H/
    +dXiB/3V4gf9ucXv/bG95/25wd/9wcnn/d3qD/25xe/9wcnn/dnh8/2xudf9sbnX/dXd9/3N1fP9wcnn/
    +eHl9/3Z4fP9ucHf/am13/2xvef9nanT/bG95/2dqdP9sbnX/bG51/3N2f/9wc33/amxz/2ptd/9nanT/
    +am13/2xvef9sb3n/ZGdx/3Bzff9ucHf/c3V8/3N1fP9nanH/bG51/2ptd/9qbXf/am13/3N1fP9ucHf/
    +dXd9/3N1fP91d33/c3V8/25wd/9wcnn/bG95/2ptd/9nanT/bnF7/3Z4fP9sbnX/bnB3/3V3ff93eX//
    +c3V8/25xe/9qbXf/am13/2xudf9zdXz/am13/2xvef9ucXv/Zmlz/2xudf9zdXz/bnB3/2Vmav9ucHf/
    +c3V8/3l7gf9wc33/c3Z//2dqdP9wcnn/bG51/2psc/9zdXz/bG51/3V3ff9wcnn/bW9z/2ptd/9sbnX/
    +cHN9/3V3ff9ucXv/am13/29xdf92eHz/c3Z//29xdf9wcnn/cHN9/25xe/9wc33/dXd9/2dqcf9qbXf/
    +bnB3/3Bzff90d4D/cnR7/29yfP9sb3n/bnF7/3N2f/9zdn//eXuB/3N1fP91eIH/dXiB/3V4gP9ucXv/
    +b3J8/3BzfP9vcnv/bnF7/25wd/9zdn//bG95/29xdf9sb3n/b3F1/25wd/9zdn//bnB3/25wd/9wc33/
    +cHN9/2Zpc/9wcnn/c3V8/3V4gf91eIH/bnB3/2xvef9zdn//dXd9/2xvef9zdn//dXiB/25xe/93eX//
    +bnF7/2ptd/9wc33/bnB3/25wd/9qbXf/d3l//3V4gf9zdn//bG95/3Byef9tb3b/bW94/29ye/9wcnn/
    +bnB3/2xvef9sb3n/c3V8/2xvef9qbXf/b3F5/3V3ff94eX3/c3V8/25wd/94eX3/d3l//3V3ff9ucHf/
    +d3l//3V3ff9tb3P/bW9z/3V3ff95e4H/cHJ5/2ptd/9maXP/c3V8/2dqdP9nanT/Z2p0/2dqdP9qbXf/
    +Zmlz/2xvef91d33/Z2p0/2xudf9nanT/dXd9/2ptd/9ucXv/am13/3d5f/9ucHf/bnB3/3Byef9ucXv/
    +ZGdx/2xvef9wc33/bnB3/2psc/9wcnn/e32D/3V3ff9ucHf/bG95/25wd/9ucHf/eXuB/25wd/9ucXv/
    +bG95/2xvef93eX//bnB3/25xe/91eIH/bG95/3Byef9sbnX/dXd9/3Byef9ucHf/bG51/3Z4fP9zdXz/
    +am13/2xudf9sbnX/bnB3/25xe/9qbHP/Zmlz/3V3ff9ucXv/bG51/3V3ff9tb3P/am13/2ptd/9kZ3H/
    +dXd9/2xvef9ucHf/am13/2ptd/9qbXf/bG51/3V4gf9sb3n/bnB3/3V3ff9sbnX/bG95/3V3ff9zdn//
    +bnF7/3d5f/95e4H/cHN9/3Bzff91eIH/bnB3/3Bzff9ucHf/bnF7/29xdf95e4H/c3Z//2xvef9wcnn/
    +bG51/2xvef9ucXv/bnF7/2Zpc/9zdn//bnB3/3N1fP9zdXz/Zmhu/29xdf9ucHf/cHJ5/29xdf94eX3/
    +c3V8/3N1fP9ucXv/bnF7/3Bzff9sb3n/bnF7/2xvef9sb3n/Z2px/25xe/9zdXz/amxz/2ptd/9ucXv/
    +dXd9/2xvef9qbXf/Z2px/2psc/9kZ3H/am13/2psc/9qbXf/bG95/2Rncf9sbnX/cHJ5/2xudf9lZmr/
    +bnB3/3V3ff93eoP/cHN9/3d5f/9qbXf/cHJ5/29xdf9qbHP/dXd9/2psc/93eX//cHN9/2xvef9sb3n/
    +bG95/3V4gf93eoP/cHJ5/25wd/9tb3P/dXd9/3V3ff9qbHP/bG95/2xvef9wcnn/am13/25xe/9maG7/
    +bG95/2xvef9zdn//b3J8/3Fzev9vcnr/a253/2xudf9ucXv/am13/3N1fP9sbnX/cHN9/25xe/9qbXf/
    +bnF6/25xef9tcHr/bXB6/2ptd/9qbXf/bG95/2psc/9qbHP/Z2p0/2dqcf9sbnX/bnF7/2psc/9maXP/
    +bG95/2xvef9gY2z/Z2p0/21vc/9ucHf/bnB3/2psc/9sbnX/bG95/3N1fP9qbXf/bnF7/3Z4fP9wcnn/
    +d3l//3Bzff9qbXf/c3V8/2xudf9sbnX/amxz/3V3ff9zdXz/c3V8/2psc/9ucHf/b3F4/25wd/9xc3n/
    +bnB3/2ptd/9sbnX/bnB3/2xvef9qbXf/aWx2/29xeP91d33/dnh8/3N1fP9sbnX/dnh8/3d5f/9zdXz/
    +bnB3/3V3ff9zdXz/bW9z/2xudf92eHz/d3l//3Bzff9sb3n/Z2p0/3Bzff9ucXv/bG95/2ptd/9qbXf/
    +am13/21vc/91d33/eHl9/29xdf9ucHf/bG51/3Z4fP9sbnX/dXd9/2xudf93eX//bnB3/21vc/9tb3P/
    +c3V8/2Rncf9wcnn/dXiB/3Bzff9ucXv/dXiB/4GDiv91eIH/bnF7/25wd/9ucHf/bG95/3Z4fP9ucHf/
    +bG95/25wd/9qbXf/d3l//25wd/9sb3n/c3Z//25wd/9wc33/Zmlz/3N2f/9zdn//bnF7/2xvef93eX//
    +dXd9/3Bzff9ucHf/am13/3Bzff9wc33/bnB3/2ptd/92eHz/cHN9/29xdf91d33/bnF7/25xe/9wcnn/
    +Z2p0/3d6g/9zdn//c3Z//3Bzff9ucXv/cHJ5/3Byef91eIH/bnF7/2xvef91d33/bnB3/3N2f/95e4H/
    +bnB3/2xvef91d33/cHN9/2ptd/9nanT/bG95/2Zpc/9nanT/Zmhu/2dqcf9kZ3H/c3V8/25xe/9maXP/
    +am13/2Zpc/9qbHP/am13/2ptd/9kZ3H/cHN9/2dqdP9wcnn/bG95/2BjbP9qbHP/amxz/2ptd/9sbnX/
    +cHN9/25xe/9wc33/bnF7/25xe/9ucXv/am13/3N1fP9zdXz/c3V8/2xudf9zdXz/dnh8/3Byef9ucHf/
    +dXd9/3N1fP9ucXv/cHJ5/2ptd/9ucXv/am13/3Bzff9sb3n/bG95/25wd/9ucHf/bG95/3Bzff9ucXv/
    +Z2p0/3Bzff9wc33/eXuB/3V3ff92eHz/Z2px/2xvef9wcnn/Z2p0/3N2f/9nanT/d3l//3Bzff9tb3P/
    +bnB3/29xdf9zdn//d3l//3Bzff9sb3n/bG95/3V4gf94eX3/bnB3/3N1fP9zdXz/cHJ5/2xvef9zdn//
    +amxz/2psc/9nanT/bnF7/2hqdP9ucHb/bXB4/2xvdv9ucHf/dXd9/29xdf92eHz/b3F1/3Z4fP9zdXz/
    +bnB3/3Byef9wcnn/cXN6/3N1fP9wcnn/cHJ5/3Z4fP9ucXv/bG95/2xvef9sb3n/bG95/3V4gf9zdXz/
    +cHJ5/3V4gf9wc33/am13/25xe/9ucHf/bG95/25wd/9vcXX/bG51/3N1fP91d33/bG51/3Bzff9zdXz/
    +bnB3/3N1fP9sbnX/Z2px/2xvef9vcXX/bnB3/2Rncf9zdXz/bG95/2xvef9maXP/bG95/2hrdf9wcnn/
    +cHJ7/3J0fP9ucHf/Z2p0/25xe/9zdXz/b3J7/2ptdf9sb3n/c3V8/3V3ff9sb3n/bG51/3V3ff91eIH/
    +bnF7/3Byef92eHz/dXd9/2xudf9sbnX/dnh8/3d6g/91d33/cHN9/2ptd/91eIH/d3qD/3d6g/9ucHf/
    +bG95/25wd/9ucHf/dXiB/3l7gf9wc33/c3V8/3N2f/9+gYr/eXuB/35/g/92eHz/f4GH/3V3ff91eIH/
    +dXd9/35/g/9wcnn/eHl9/31+gf93eX//eHl9/3d5f/+Fh43/fn+D/3l7gf92eHz/dXd9/3Bzff9+gYr/
    +c3Z//3Bzff9sb3n/cHN9/3l7gf9wcnn/c3V8/3V4gf9zdXz/dXiB/2dqdP9zdn//c3Z//3Bzff9sb3n/
    +dXd9/3Z4fP9wc33/bG51/2Zpc/9wc33/cHJ5/29xdf9ucHf/dXd9/3Byef9ucHf/eHl9/2xvef9ucHf/
    +cHJ5/25wd/93eX//dXd9/3Byef9ucHf/bnB3/2xudf9vcXX/dXd9/2xudf9sbnX/c3V8/2ptd/9wcnn/
    +eHl9/3Bzff91eIH/dXiB/3V3ff9wcnn/bnB3/3V3ff9qbHP/cHN9/3Byef9ucXv/bG95/3V4gf93eX//
    +Z2p0/25xe/9sb3n/bnB3/3N1fP9ucHf/bG51/3Bzff9nanT/am13/25xe/9maXP/am13/2xudf9sbnX/
    +bG51/3V3ff9ucHf/cHJ5/3N1fP9ucXv/c3V8/25wd/9ucHf/cHJ5/3N1fP9vcXX/dXd9/3h5ff9wcnn/
    +cHJ5/3V3ff9zdXz/cHJ5/25wd/9qbHP/bnF7/2xudf9sb3n/bG95/2dqdP9nanT/Zmhu/2Rncf9nanT/
    +Z2px/1xfaP9maG7/ZGdx/3Byef9maXP/bnB3/1lcZf9iZW7/Zmhu/2Jlbv9nanT/XWBq/2xvef9nanT/
    +amxz/2xudf9qbHP/bnF7/3d5f/9qbXf/Zmlz/2xudf91eIH/d3l//2xudf9zdXz/cHJ5/3N1fP9sb3n/
    +dXd9/2Zpc/9maG7/Z2px/2ptd/9oanT/bnB5/29xeP9ucHj/bG51/3Z4fP9vcXX/dnh8/29xdf91d33/
    +bnF7/3Bzff91eIH/dHZ+/3N1ff9zdn3/bnF7/25xe/91d33/cHJ5/25wd/9ucHf/bnB3/25wd/9wc33/
    +b3F1/29xdf9ucHf/bG51/2Zobv9tb3P/bW9z/2xudf9sbnX/am13/2psc/9wc33/c3V8/2xudf9wc33/
    +cHN9/25xe/9wc33/bW9z/2xudf9zdXz/b3F1/25wd/9maG7/dnh8/3Byef9zdXz/Z2px/3Byef9ucHj/
    +cHJ6/25xef9tb3b/bG51/2RmbP9sbnX/bnF4/25wd/9sb3j/dHZ+/3V4gf95e4H/bnF7/3Byef91eIH/
    +dnh8/3Byef9ucXv/c3V8/3N1fP9ucHf/b3F1/3d5f/97fYP/dXd9/3Bzff9sb3n/d3l//3Z4fP9zdXz/
    +amxz/2xudf9qbXf/am13/2xvef9zdXz/amxz/2psc/9kZ3H/c3V8/2Zpc/9qbXf/ZGdx/3Byef9iZW7/
    +ZGZs/2Rncf9maXP/XV9l/2Rncf9nanT/ZGZs/2BjbP9iZW7/cHN9/2ptd/9maG7/YmVu/2Jlbv9iZW7/
    +cHJ5/2dqcf9kZ3H/YGNs/2Rncf9kZ3H/YmVu/2dqcf9qbXf/bG51/2ptd/9iZW7/bnF7/25xe/9qbXf/
    +bG51/3N1fP91d33/c3V8/25wd/9qbHP/cHN9/3Bzff9wcnn/cHJ5/3d6g/91eIH/cHJ5/3t9g/9wc33/
    +c3Z//3N2f/9wcnn/eXyG/3l7gf9ucXv/cHJ5/2xvef9wcnn/bnB3/3d6g/9ucXv/cHJ5/3t9g/9wc33/
    +d3qD/3d6g/9wc33/d3qD/3t9g/9zdn//cHN9/3Byef91d33/Z2p0/2xvef9ucHf/c3Z//25xe/93eoP/
    +eXuB/2xvef9zdn//cHJ5/25xe/9wc33/b3F1/2xudf9zdXz/am13/25wd/9wcnn/Zmlz/2ptd/9sbnX/
    +bG95/2ptd/9zdXz/bW9z/25xe/9zdXz/c3V8/3Bzff9sbnX/bnB3/3Bzff9sb3n/bG51/3V3ff93eX//
    +bnB3/3Byef9wcnn/cHJ5/3Byef91d33/bG51/3Byef9tb3P/bnF7/25xe/9sb3n/am13/2xudf9nanT/
    +am13/2dqdP9iZW7/am13/25xe/9zdn//bG95/3V3ff9kZmz/bW9z/21vc/9ucHf/dXd9/2dqdP95e4H/
    +cHN9/2xvef9sb3n/bnF7/3Bzff93eX//bnF7/2xvef9ucXv/e36H/3d6g/9ucHf/dXd9/3Byef9wcnn/
    +bnB3/3N1fP9qbHP/bG51/2xudf91d33/bW93/29xeP9tcHj/aGt1/2Vocf9ucXv/amxz/3d5f/9sbnX/
    +bnF7/3Byef9wcnn/cXN6/3F0ev9wc33/c3Z//3Byef9wc33/eXuB/3Bzff9wc33/bnF7/3Bzff9ucXv/
    +cHN9/25wd/9ucHf/cHJ5/21vc/9nanH/b3F1/25wd/9ucHf/bG51/2ptd/9sbnX/dXd9/3N1fP9qbXf/
    +cHN9/3Byef9wcnn/c3Z//2xudf9sbnX/c3Z//2ptd/9ucHf/ZGdx/3N2f/9zdn//c3Z//2ptd/9zdn//
    +cXN7/3N2gP91eIH/cnV//3N1fP9qbXf/cHJ5/29xeP9ucHj/bW94/3J0e/90d3//eXyG/3Bzff9ucXv/
    +d3l//3d5f/9ucXv/c3V8/25xe/9wcnn/bnB3/25wd/91d33/e36H/3Z4fP9wcnn/bnB3/3V4gf91d33/
    +dnh8/25wd/9wcnn/c3V8/3Byef9zdn//e32D/2xvef9sb3n/Z2p0/3d6g/9zdn//dXiB/25wd/93eX//
    +Z2p0/2xvef9ucHf/c3V8/2ZobP9sbnX/c3V8/2psc/9nanT/amxz/3l7gf9ucXv/Zmlz/2Zobv9sbnX/
    +ZGdx/3Bzff9maG7/amxz/2Zpc/9qbHP/bnB3/2xudf9ucHf/cHJ5/2xvef9wc33/Z2p0/3Bzff9wc33/
    +dXiB/3N2f/93eoP/d3qD/3l7gf91d33/c3Z//3V4gf95fIb/cHN9/3N1fP95fIb/d3qD/3V3ff95fIb/
    +cHN9/3V4gf9wc33/bnB3/3d5f/91d33/bnB3/2xudf9sbnX/bW9z/25wd/94eX3/bG95/2xvef93eX//
    +bnB3/3N1fP9zdn//bnF7/3d6g/93eX//cHN9/3Bzff9zdn//dXd9/2psc/9ucHf/bW9z/2xvef9qbXf/
    +c3V8/3V3ff9kZ3H/bG51/2dqcf9maG7/Z2p0/2Rncf9kZ3H/bG95/2dqcf9qbHP/Z2p0/2Rncf9qbHP/
    +Z2px/2psc/9qbHP/cHN9/2ptd/9zdXz/c3V8/3N1fP91d33/cHN9/3Bzff91eIH/bnF7/25wd/9zdn//
    +d3qD/3Bzff9zdn//c3Z//3N2f/91eIH/dXiB/3Byef93eoP/cHN9/3d6g/95fIb/d3qD/3d6g/9wc33/
    +c3Z//3V4gf9wc33/am13/3N1fP93eoP/e32D/3l7gf95fIb/am13/3N2f/9zdXz/c3V8/3l7gf9sb3n/
    +eXuB/3V4gf9ucHf/bnB3/25xe/9zdXz/d3l//25xe/9nanT/bnF7/3d6g/93eoP/bnF7/3Bzff91d33/
    +cHN9/25xe/93eX//Zmlz/2xvef9zdXz/e32D/3Bzff9zdXv/dHZ//3F0fv9sb3n/d3qD/3N1fP93eoP/
    +cHJ5/3N2f/9zdn//c3Z//3Bzff9zdX3/dHeA/3V4gf9zdn//cHN9/3d6g/9wc33/bnB3/2dqdP9ucHf/
    +cHJ5/3Byef9ucHf/b3F1/3Bzff9vcXX/Z2px/2xudf9sbnX/amxz/2ptd/9nanT/Z2p0/25xe/9sb3n/
    +amxz/2ptd/9ucXv/am13/3N1fP9qbXf/Z2p0/25xe/9nanT/bG51/2RmbP9wcnn/bnF7/2xvef9kZ3H/
    +bG95/2lsc/9ucXr/b3F5/2xvef9ucHf/Z2p0/2xvef9ucHf/bG52/2dqdP9tcHf/bG94/3Byef9nanH/
    +Zmlz/3Byef94eX3/bnB3/3N1fP9wcnn/c3V8/2xudf9ucHf/c3V8/3l7gf9zdXz/bG95/21vc/92eHz/
    +c3V8/3Bzff9sbnX/bG51/21vc/9sbnX/bnB3/3V3ff9tb3P/bG51/2dqdP91eIH/c3V8/3Byef9tb3P/
    +eHl9/2ptd/9sb3n/bnF7/3Bzff9kZ3H/am13/3V3ff9ucHf/bG51/25wd/9+gIb/cHN9/3Byef9tb3P/
    +bG51/2psc/97fYP/bG51/2ptd/9qbXf/b3F1/3N1fP9ucHf/bG51/3N1fP9ucHf/cHN9/2Zpc/9qbXf/
    +am13/2ptd/9qbHP/cHN9/2xvef9wc33/bG51/2Rncf9qbHP/am13/2ptd/9sbnX/c3V8/2ptd/9nanT/
    +d3l//2xudf9sb3n/bG51/2xudf94eX3/dXd9/3Byef9vcXX/bG95/25wd/9sb3n/eXuB/3Bzff9wcnn/
    +eXuB/3Byef9zdn//eXuB/3Bzff9ucXv/dXd9/3V3ff9wc33/c3Z//3N2f/9sb3n/cHJ5/3Byef9wc33/
    +cHJ5/3d5f/97fYP/cHJ5/25xe/9ucHf/b3F1/3Byef9sbnX/am13/3N1fP9tb3P/am13/25xe/9kZ3H/
    +am13/2ptd/9ucXv/bG51/3N1fP9ucHf/c3V8/3N1fP9ucHf/dXd9/25xe/9qbXf/cHN9/2xudf9sbnX/
    +c3V8/3V3ff9ucHf/dXd9/3Byef9wcnn/cHJ5/3Byef9tb3P/cHN9/2ptd/9sb3n/am13/25xe/9sb3n/
    +am13/2dqdP9qbXf/am13/2BjbP9qbHP/cHN9/3V3ff91d33/dnh8/2Vmav9ucHf/bnB3/2xvef91eIH/
    +Z2p0/3N2f/9zdn//bnF7/2xvef9ucXv/c3Z//3d6g/9ucXv/am13/25xe/95e4H/eXuB/21vc/9zdXz/
    +c3V8/2xudf9sbnX/c3V8/2Zobv9qbXf/bG51/3V3ff9rbXX/bG52/25vdf9sb3j/Zmlz/3Bzff9sbnX/
    +d3l//21vc/9sbnX/c3V8/3V3ff9vcnv/bnB3/29xef9zdn//bnF7/3N1fP91eIH/bnF7/25xe/9ucHf/
    +cHN9/3N2f/9zdn//cHJ5/3N1fP91eIH/cHJ5/2Zpc/9ucXv/bnB3/29xdf9ucHf/bG95/3Bzff91eIH/
    +cHN9/25xe/9ucXv/c3Z//29xdf92eHz/bW9z/2psc/9wcnn/amxz/25wd/9nanH/c3Z//3Bzff9ucXv/
    +Z2px/3N1fP9ucHf/cHJ7/3R2f/9xdH7/cHJ5/2dqdP9sb3n/cHJ5/29xeP9tb3j/cnR6/3R2ff93eX//
    +bnB3/3Byef93eX//dnh8/2ptd/9wcnn/cHJ5/3Byef9qbHP/cHJ5/3h5ff93eX//dXd9/25xe/9vcXX/
    +eHl9/3d5f/91eIH/c3V8/3N1fP9wc33/cHJ5/2xvef9zdn//bG95/2xvef9sb3n/d3qD/25xe/9wc33/
    +bG95/3d5f/9sbnX/b3F1/25wd/9ucHf/ZGZs/2Zpc/9wc33/amxz/2dqdP9sbnX/d3l//2dqdP9sb3n/
    +Z2px/2Zobv9gY2z/eXuB/2Zpc/9sbnX/amxz/2xudf9zdXz/bW9z/2xvef91d33/bG95/3V4gf9sb3n/
    +c3Z//3d6g/91eIH/cHN9/3l7gf93eoP/foCG/3N2f/9ucXv/c3V8/3N2f/91eIH/dXd9/36Ahv9zdn//
    +c3V8/36Biv9zdXz/cHN9/29xdf9vcXX/dnh8/3V3ff9wcnn/bW9z/25wd/9ucHf/am13/3d5f/9ucXv/
    +am13/3h5ff9sb3n/c3Z//3t+h/9sbnX/bG95/3N1fP9ucXv/cHN9/25xe/9ucXv/Z2p0/2ptd/9sbnX/
    +cHJ5/25wd/9zdn//dXd9/2xvef9vcXX/bW9z/2xudf9ucXv/am13/21vc/91d33/bnB3/25wd/91d33/
    +Z2px/25wd/9wcnn/c3Z//25wd/95e4H/d3qD/3d6g/93eX//cHN9/3Z4fP9wcnn/bnB3/3N1fP9sbnX/
    +bnB3/3V3ff93eX//cHJ5/3N1fP9wcnn/c3V8/3Byef91d33/bW9z/3V3ff9ucHf/cHJ5/3N1fP9ucXv/
    +am13/2xudf9qbXf/bG95/2xudf9iZW7/am13/3N1fP9zdXz/c3V8/3d5f/9lZmr/bW9z/2xudf9ucHf/
    +c3Z//2dqdP9wc33/c3Z//3Byef9sbnX/cHJ5/3N1fP93eoP/bG51/2psc/9ucHf/d3l//3d5f/9ucHf/
    +dXd9/3V3ff9ucHf/bnF7/3d5f/9qbXf/cHJ5/29xdf91eIH/bnF7/3Fze/9ydHz/bnF7/2ptd/91d33/
    +bnB3/3V3ff9vcXX/bnF7/3N2f/93eoP/cnV8/25wd/9tb3j/dnh8/25wd/9vcXX/bnB3/2xvef9qbXf/
    +Zmlz/25xe/9qbXf/am13/2dqcf9kZ3H/Z2p0/2Zobv9gY2z/Z2p0/2Zpc/9maXP/amxz/2Rncf9qbXf/
    +am13/2dqdP9sb3n/am13/3Bzff9sbnX/dnh8/29xdf9qbHP/cHN9/3Byef9zdn//Zmlz/3Bzff9wc33/
    +cHN9/2ptd/9zdn//bnB3/3FzfP9wcnr/a211/25wd/9sbnX/bG95/25weP9xc3r/cHN7/3J1fv94eoP/
    +fYCJ/3N2f/93eoP/eXyG/3d6g/9zdXz/dXiB/3d6g/9wc33/am13/25wd/93eoP/eXuB/3d5f/9zdn//
    +bnF7/3t9g/95e4H/c3Z//3Byef9wcnn/cHN9/2xvef9ucHf/dXd9/3Byef9qbHP/b3F1/3d6g/9wc33/
    +c3Z//2xvef91d33/am13/25wd/9sb3n/bnF7/2dqcf9sbnX/dnh8/29xdf9qbXf/bG51/3t9g/9qbXf/
    +bnF7/2xudf9sbnX/Z2px/3t9g/9qbHP/bnB3/2xudf9tb3P/bnF7/25wd/9ucHf/dXd9/3Byef91d33/
    +amxz/25wd/91d33/dXd9/25wd/9zdXz/bG51/3N1fP9sbnX/ZGZs/2dqdP9qbXf/am13/2dqdP9sb3n/
    +amxz/2Rncf9zdXz/Zmlz/2dqdP9kZ3H/ZGZs/2ptd/9sb3n/Z2p0/2Jlbv9kZmz/XWBq/2BjbP9qbXf/
    +Zmlz/2Jlbv9sb3n/am13/2xvef9zdXz/Z2p0/2xudf9ucXv/bnF7/3Byef9zdXz/c3V8/2psc/9ucHf/
    +bG95/2xvef9tb3P/c3V8/3h5ff9sbnX/bnB3/25wd/9wc33/cHN9/2xvef9ucHf/dXd9/3Bzff9ucHf/
    +cHN9/2dqdP9sb3n/c3Z//3Z4fP9qbXf/c3V8/2ptd/9sbnX/cHN9/2xvef9zdXz/bnF7/2xudf9sb3n/
    +amxz/2psc/9sb3n/bG95/2Zpc/9qbXf/Z2p0/25xe/9qbXf/am13/2xudf9wc33/bG51/2xvef9sb3n/
    +bnF7/3Byef9ucHf/bnB3/3N1fP9tb3P/Zmhu/29xdf91d33/dXd9/3d5f/93eoP/amxz/25wd/9ucXv/
    +c3Z//3d5f/9sb3n/c3Z//3l7gf9zdXz/am13/3N2f/93eoP/eXyG/3Byef9sb3n/cHN9/3l8hv97fof/
    +cHN9/3t9g/97fYP/dXd9/3Bzff97fYP/am13/25xe/9ucHf/eXuB/21wef90dnz/dXd//3R3gP9zdXz/
    +eXuB/3Bzff95fIb/c3Z//3Bzff91eIH/eXuB/3Z5gv9ydHz/c3aA/3p9g/9zdn//cHN9/3Bzff9ucXv/
    +c3Z//3Bzff93eoP/d3qD/3V4gf9zdXz/cHN9/3N2f/9sb3n/Zmlz/3Bzff9ucHf/c3V8/3N2f/9sb3n/
    +bG95/3Byef9ucXv/cHN9/25wd/9wc33/bnB3/3h5ff9vcXX/amxz/25xe/9vcXX/c3V8/2Zpc/9wc33/
    +c3V8/3Byef9sb3n/d3qD/3Byef9vcnv/cHJ6/29xef9ucHf/amxz/21vc/9sbnX/b3F1/25wd/9wcnr/
    +cXR9/3V3ff9sb3n/c3V8/3h5ff93eoP/cHN9/25xe/9zdn//cHN9/2dqdP9wc33/e32D/3l8hv93eoP/
    +c3Z//3Bzff93eX//dXd9/3Byef9ucHf/b3F1/3Bzff9ucXv/bnF7/3N2f/9ucHf/Z2p0/2ptd/93eX//
    +bnB3/25wd/9qbHP/dXd9/2xudf9vcXX/bnB3/2xvef9maXP/bG95/3Z4fP9vcXX/bG51/25xe/9/goz/
    +dXiB/3N2f/9ucHf/b3F1/2psc/9+f4P/bG51/29xdf9ucHf/b3F1/3Byef9sbnX/bnB3/3V3ff9wc33/
    +c3Z//2psc/9vcXX/dXd9/3N1fP9qbXf/bnF7/2xudf9wc33/amxz/2BjbP9kZ3H/amxz/2ptd/9maXP/
    +cHN9/2xudf9maXP/d3l//2xudf91d33/bG51/2ptd/91d33/bnF7/2ptd/9nanH/Zmlz/2Rncf9kZ3H/
    +cHN9/2xvef9nanT/dXd9/25xe/9ucXv/c3V8/25wd/9sb3n/dnh8/3Byef9ucXv/c3V8/3Bzff9maXP/
    +bnB3/3Byef9wcnn/bnB3/3N2f/95e4H/cHN9/3Byef9wc33/dXiB/3N2f/9wc33/cHN9/3t9g/93eoP/
    +dXiB/3t9g/9zdn//d3qD/3l8hv95fIb/cHN9/3l8hv9zdn//cHN9/3l7gf9ucXv/c3Z//3V3ff9vcXX/
    +c3V8/25wd/9wcnn/dXd9/3Z4fP9zdXz/cHJ5/2xvef9ucXv/bnF7/2ptd/9qbHP/bnF7/2ptd/9qbHP/
    +am13/3Bzff9wc33/am13/2xudf9ucXv/bG51/2Rncf9sbnX/c3V8/3V3ff9zdXz/c3V8/2BjbP9maXP/
    +am13/2xudf9wc33/Zmlz/25xe/91d33/bG51/2Zpc/9sb3n/bnF7/3V3ff9maXP/YGNs/2dqcf9wcnn/
    +cHJ5/2dqcf9ucXv/bG95/2psc/9maG7/am13/2BjbP9nanH/Z2px/3V3ff9qbHP/bnB3/29xd/9sbnX/
    +amxz/2xvef9maXP/cHJ5/2psc/9nanH/bG95/3Bzff9ucXr/aGtz/2ptd/9zdXz/bW9z/2xudf9sb3n/
    +bG95/2ptd/9maXP/bnF7/2ptd/9qbHP/ZGdx/2dqcf9qbXf/Z2p0/2Zpc/9qbXf/bG51/2xudf9tb3P/
    +bG51/25wd/9sb3n/cHJ5/3N1fP9sb3n/d3l//3Bzff93eX//bG95/2ptd/9ucXv/cHJ5/3N2f/9qbXf/
    +d3qD/3N2f/9zdn//bnB3/3N2f/9ucHf/bnB4/2ptdv9rbnf/bG51/2Rncf9sbnX/am13/2psc/9pbHT/
    +bXB4/2xueP9wc33/bG51/3Byef94eX3/cHN9/3Bzff9sb3n/c3Z//25xe/9nanT/bnF7/3d5f/91eIH/
    +c3Z//25xe/9zdn//eXuB/3Z4fP91d33/bG51/21vc/9ucHf/bG51/2xudf9zdXz/bG51/2Rncf9maXP/
    +cHJ5/2dqcf9maXP/YmVu/25xe/9nanT/bG51/2xudf9qbXf/Zmhu/21vc/9zdXz/bW9z/2ptd/9sb3n/
    +f4GH/25xe/9sb3n/bG51/2xudf9qbHP/fX6B/2psc/9sbnX/b3F1/29xdf9zdXz/bG95/2xvef9wc33/
    +cHN9/3Bzff9qbHP/cHJ5/3V3ff9zdn//bnF7/3V3ff9ucHf/dXiB/3Byef9nanH/bnF7/3Bzff93eoP/
    +bG95/3l7gf93eoP/d3l//3+Bh/9zdXz/d3qD/3Bzff9wc33/eXyG/3d6g/9ucXv/bnB3/2xvef9sbnX/
    +am13/3V3ff9wc33/Z2p0/3h5ff9zdXz/c3V8/3d5f/9sb3n/bG95/3h5ff9ucHf/c3V8/3V3ff91d33/
    +Z2px/25wd/9wc33/bG95/2xudf9sbnX/c3V8/2ptd/9maXP/amxz/2ptd/9ucXv/am13/2ptd/9zdXz/
    +cHN9/2ptd/9ucXv/ZGdx/2ptd/9nanT/cHJ5/2Rncf9zdXz/am13/2ptd/9ucXv/am13/3Bzff9wc33/
    +bG95/3V3ff9qbXf/bnB3/3N2f/91eIH/cHN9/3V3ff91d33/dXd9/3Bzff9wc33/cHN9/3Z4fP9wc33/
    +cHN9/3N2f/93eoP/d3qD/25xe/9zdXz/dXiB/3Byef9sb3n/cHN9/3l7gf91eIH/dXd9/3d5f/9kZ3H/
    +bnB3/2xudf9zdXz/eHl9/25wd/91d33/dnh8/2ptd/9maXP/c3V8/3N1fP93eX//bG51/2psc/9sbnX/
    +dXiB/3V3ff9vcXX/c3Z//3N2f/9sb3n/bnB3/3N2f/9sb3n/bG95/21vc/95e4H/b3F2/3J0ev90dn7/
    +dnmC/3V3ff95fIb/dXd9/3t+h/9wc33/c3V8/3V4gf93eoP/dnmB/3Fzev9vcXf/dXh+/29xdf9tb3P/
    +bG51/25wd/9ucHf/bnB3/3N1fP9ucHf/bnB3/25wd/9vcXX/dXd9/29xdf9maG7/cHJ5/2ptd/9nanT/
    +amxz/2Zpc/9sbnX/bG95/2xvef9qbXf/amxz/3Byef9maXP/bG95/2Zobv9dYGr/YmVu/2Zobv9maXP/
    +XWBq/2ptd/9nanT/Zmhu/2Jlbv9nanT/Zmhy/2hqcf9oa3P/aWtz/2ptd/9qbHP/bG51/25wd/9rbXL/
    +aGty/2ttc/9pbHX/Z2p0/2Vocv9maXP/bnF7/3Bzff9ucHf/bG51/3N1fP9sbnX/Zmlz/2xvef9zdXz/
    +c3V8/3N1fP9qbHP/bnF7/3N1fP9wc33/bnF7/2Zpc/9nanH/Zmlz/2Rncf9sbnX/cHN9/2psc/9kZ3H/
    +ZGdx/25wd/9iZW7/ZGdx/11gav9nanT/ZGdx/2Zobv9qbHP/Z2px/2Jlbv9nanT/cHN9/2dqdP9qbXf/
    +bG95/36Biv9ucXv/bG95/21vc/9tb3P/b3F1/4CChv9ucHf/cHJ5/3Byef9zdXz/c3Z//3Byef9wc33/
    +cHN9/3N2f/9wc33/am13/25wd/9wc33/dXd9/25wd/9ucHf/bG51/3Bzff9nanT/YmRq/2dqdP9qbXf/
    +bG95/2Zpc/9ucXv/Z2p0/2Jlbv9ucHf/YmVu/2dqdP9nanH/Z2px/3Byef9zdXz/amxz/2dqcf9nanT/
    +Zmlz/2dqdP9sb3n/am13/2Zpc/91d33/bG95/3Byef93eX//dXiB/3V4gf97fof/d3qD/3t9g/93eoP/
    +c3Z//2Zpc/9zdXz/c3V8/3V4gf9sb3n/cHJ5/3d5f/9ucXv/bG51/25xe/9wc33/dXiB/3N1fP91d33/
    +eXuB/3t9g/91eIH/foCG/3V3ff93eoP/dXiB/3V4gf9sb3n/d3qD/3N2f/9wcnn/dXiB/3V4gf95e4H/
    +dXiB/3Bzff93eX//c3Z//3Byef9wc33/dXiB/3N2f/91d33/c3V8/3N1fP9wcnn/bnB3/3Byef92eHz/
    +cHJ5/25wd/9ucHf/c3V8/3N1fP9sbnX/bW9z/3N2f/9wcnn/amxz/25xe/93eX//dXiB/3N2f/9zdn//
    +Z2p0/2ptd/9ucXv/cHN9/3V4gf9wcnn/c3Z//3d5f/9sb3n/Z2p0/3N2f/91d33/d3l//25wd/9sbnX/
    +b3F1/3h5ff95e4H/b3F1/3N1fP91d33/bG95/2ptd/91d33/amxz/2ttdP9sbnX/c3Z//2ptd/9vcXj/
    +cHJ3/25wd/9tb3P/cHJ5/2xudf93eX//am13/21vc/9zdXz/dXd9/3J0e/9sb3n/bXB6/3Bzff9sbnb/
    +amxz/2ptd/9rbnj/bG51/2tud/9wcnn/bG95/25wd/9ucHf/cHJ5/3V3ff9ucHf/Zmlz/3R3gP9tcHf/
    +bnB3/3Fzef9ucHf/cnR7/3Bzff9ydX7/cHJ8/3Bzff93eoP/cHN9/3h6gP9zdn7/bnF7/3Byef9vcXj/
    +bnF7/2hrdf91d33/bW92/25wd/9vcXj/eHl9/29xef9wcnn/cHN8/3Z3fP95e4H/dXd9/3d5f/96fIP/
    +cnV+/3F0e/91d37/dniA/3V3ff9wcnn/c3Z//3Z4f/93eoP/dXiB/3Bzff91eIH/bnF7/2ptd/91eIH/
    +e32D/3d5f/93eX//c3V8/3d6g/9zdn//dnh8/3N1fP9ucHf/bnF7/25xe/9vcXX/bG95/3V3ff9vcXX/
    +amxz/2xudf92eHz/bnB3/3Byef9nanT/cHN9/2ptd/9ucHf/c3Z//3Byef9qbHP/b3F1/3Z4fP9qbHP/
    +bG51/25wd/9/gYf/cHJ5/2ptd/9tb3P/bnB3/2ptd/9/gYf/bnB3/29xdf9ucHf/bG95/3Byef9tb3P/
    +am13/2ptd/9wc33/bnF7/2dqdP9sbnX/c3V8/3h5ff9wcnn/bnF7/2xvef9wcnn/am13/2Vmav9sbnX/
    +bnF7/3Byef9sbnX/dnh8/3Bzff9ucHf/eXuB/3V3ff93eoP/cHN9/3N2f/97fof/e36H/3V4gf91d33/
    +dXd9/25xe/9zdXz/dXiB/3V4gf9wc33/e32D/3d6g/95fIb/e36H/2xvef9ucXv/d3l//25xe/9zdn//
    +c3Z//3N2f/9maG7/bnB3/3N1fP9wcnn/b3F1/21vc/9zdXz/bG51/2dqcf9wcnn/bnF7/3N1fP9ucHf/
    +bG95/3V3ff9zdXz/bG51/3Byef9ucHf/c3V8/25wd/91d33/am13/3V4gf9ucXv/amxz/2xvef9ucXv/
    +cHN9/3Bzff9wcnn/c3V8/3Byef9wcnn/cHN9/3Bzff9zdn//c3Z//3Bzff9wcnn/dXd9/3Byef9ucHf/
    +d3l//25wd/9wcnn/bnB3/3V3ff91d33/bnF7/3Byef91eIH/bnF7/2ptd/9sb3n/c3Z//3Z4fP9wcnn/
    +c3V8/2Zobv9nanT/bnF7/2xvef91d33/bG51/2ptd/9zdXz/Z2p0/2Rncf9ucXv/c3V8/3N1fP9qbXf/
    +am13/2psc/93eX//d3qD/2xudf9ucXv/bG95/2ptd/9qbXf/c3V8/2ptd/9xc3r/bnB3/3d5f/9ucHf/
    +cHJ5/29xd/9ucXv/amxz/25wd/9ucHf/d3l//25wd/9vcXX/dXd9/3d5f/9wcnn/bG52/25xe/9xdHz/
    +am13/2ttdf9qbXf/bG51/2xudf9rbnf/bXB6/2xudf9qbXf/bG51/3Byef90dnz/cHJ5/2hrc/9ydX7/
    +aGt1/25wd/9wcnn/bnB4/25weP9ydHv/b3J7/29ye/9vcXj/dXiB/3F0ff9zdn//bG95/2xvef9ucHf/
    +cXN3/3Byef9oa3P/cnR8/2xveP9qbXf/aWx1/3R2ff9pbHP/am13/2dqc/9pbHb/bG51/2Rncf9maG7/
    +bG95/2psc/9maXP/bG94/29xef9sb3f/am12/2ttdv9ydHr/c3V8/3Bzff9vcXX/cHJ5/2xvef9qbXf/
    +cHN9/3d5f/93eX//d3l//3Byef91eIH/c3Z//3d6g/93eoP/cHN9/3N2f/9wc33/bG95/29xdf91d33/
    +b3F1/2psc/9sbnX/dnh8/25wd/9sbnX/bG51/25wd/9qbHP/bG51/2xvef9wcnn/amxz/2xudf92eHz/
    +Z2px/25wd/9ucHf/f4GH/3Z4fP9zdXz/cHJ5/25wd/9qbXf/gYOK/2xvef9ucXv/bnB3/3V4gf9zdn//
    +c3Z//3N2f/91eIH/e32D/3t9g/92eHz/eXuB/31+gf9/gYf/eXuB/3V4gf9zdn//dXiB/3Bzff9qbXf/
    +c3V8/3d6g/93eoP/c3Z//3t9g/93eoP/bnF7/3t9g/9ucXv/dXiB/25xe/9vcXX/eXuB/3d6g/9sb3n/
    +bnB3/25wd/9nanH/bW9z/25wd/9sbnX/Z2px/3N2f/9ucXv/c3Z//3V3ff91d33/d3qD/36Ahv91eIH/
    +eXuB/3d6g/93eoP/bG95/3t9g/97fYP/d3qD/3V3ff91d33/dXiB/3V4gf9ucXv/d3qD/3V4gf9zdn//
    +bnB3/3Byef95e4H/dXiB/3Byef9zdn//bnB3/3N1fP9zdXz/bnB3/21vc/95e4H/dnh8/21vc/9sb3n/
    +bnF7/3Bzff9wc33/c3V8/25xe/9ucXv/bG95/2xvef9sb3n/cHN9/3Bzff9ucXv/cHN9/25xe/9qbHP/
    +bG51/3N1fP9nanT/amxz/2psc/9ucXv/cHJ5/2Zobv9kZ3H/Zmlz/2Zpc/9dYGr/Zmlz/2dqdP9sb3n/
    +ZGdx/2dqdP9cX2j/YGNs/2Zpc/9maXP/bG95/2Rncf9kZ3H/cHJ5/2Zobv9kZ3H/am13/2xvef9zdXz/
    +bG95/2xudf9sbnX/d3l//3l8hv9sbnX/c3V8/3N1fP9zdXz/b3F1/3V3ff9sb3n/cnR6/3Fzev90dn7/
    +bnF5/3J0e/9wcnf/cHJ5/2xudf9ucHf/bnB3/3d5f/9sbnX/b3F1/3V3ff91d33/cnR7/2xudv9sbnb/
    +cXN7/2ttc/9qbHX/bG93/3Fzef9rbXb/bG53/29yev9tcHj/a254/2xvef9ucXn/c3V7/29yev9rbXb/
    +cnV//25xef9wcnn/c3V8/3V3ff9ydHn/eXuA/3V3fv90dn3/c3V9/3h7hf91eID/dXd+/3N1fP90dnz/
    +cHJ5/3R2fv9xdH3/b3J8/3J1fP9wc3v/a252/29xeP9ydX//bW94/2xveP9nanT/a253/2xudf9qbXf/
    +bW9z/3Bzff9qbXf/aGt0/2xvef9zdn3/am11/21veP9sbnb/bW94/2xvef9qbXf/am13/3Bzff9sbnX/
    +Z2p0/2xvef9ucXv/c3V8/2xvef9sbnX/c3V8/3N1fP9zdXz/cHJ5/21vc/9qbXf/bnF7/21vc/9ucHf/
    +dnh8/21vc/9qbHP/cHJ5/3l7gf9wcnn/bG95/2xvef9ucXv/bnB3/2xvef9zdn//cHN9/2xvef9qbXf/
    +eHl9/2dqdP9nanT/bG51/3t9g/9sb3n/cHN9/2xvef9qbXf/Z2p0/3t9g/9qbHP/Z2px/2dqcf9maXP/
    +Z2px/2dqcf9qbHP/am13/25xe/9qbXf/Z2p0/2xudf9wc33/c3V8/2xvef9qbXf/bW9z/25wd/9ucHf/
    +Zmhu/2xudf9sbnX/c3V8/2dqdP9zdn//c3Z//25wd/95e4H/am13/3V4gf9zdn//cHJ5/3l7gf97fYP/
    +cHJ5/3N2f/9wcnn/bG95/3Byef9zdn//dXiB/2xvef91eIH/c3Z//3d6g/91eIH/c3V8/3N2f/97fYP/
    +bnF7/3N2f/9zdn//c3Z//2dqdP95e4H/c3Z//25xe/9ucHf/bG95/25xe/9zdXz/Zmlz/3N1fP9zdXz/
    +c3V8/25wd/9wcnn/dnh8/3Z4fP9ucHf/cHN9/25wd/9wcnn/dXiB/3Bzff9wcnn/eXyG/3l8hv9zdXz/
    +bnF7/3V3ff9zdn//c3Z//3d5f/9wc33/cHN9/25xe/9wc33/cHN9/3h5ff91d33/c3V8/3N1fP9wcnn/
    +am13/2psc/91d33/am13/2xudf9maXP/bG95/3N1fP9nanH/Z2px/2ptd/9qbXf/Zmlz/2xudf9zdXz/
    +dnh8/3Byef9zdXz/Zmlz/2xvef9wc33/dXiB/3d5f/9wc33/cHN9/36Biv9wcnn/c3V8/3t9g/9+gIb/
    +e32D/3d6g/9wc33/cHN9/3l8hv+Bg4r/dXiB/3t9g/93eoP/eXuB/3N2f/91d33/b3F1/3R2fP9vcXn/
    +cnR8/21vdv90dnv/bnB3/3Byef9qbXf/bG95/2xvef93eX//bG51/25wd/93eX//e36H/3Z5gv9tcHr/
    +b3J7/3Z3ff9rbnf/bG94/2xveP90dn//bW92/3J1ff9wc33/bW92/21wev9ydX//cHN9/3F0ff9tcHn/
    +aWty/21vdv9qbHP/bG94/3V3fv9tcHn/a210/3Z4fv9tb3b/bW92/21veP9ucXr/b3F6/21wef9tb3b/
    +cXN6/2xudP9ydHv/b3F5/2xvd/9ydHz/bW93/2tueP90dnz/cXN6/29xeP9sbnX/amxz/2xudf9qbHP/
    +bG51/2xudf9wc33/bG51/2ptd/9wc3z/c3V8/21vdv9zdXz/bnB3/25xev9ucHf/cHJ5/25xe/9zdn//
    +cHJ5/2ptd/9zdXz/cHN9/3V3ff93eX//cHJ5/3V4gf9zdn//dXd9/3Bzff9ucHf/c3V8/3Bzff9zdXz/
    +cHN9/3l7gf9wc33/am13/3Byef93eX//am13/2xvef9sb3n/bG95/2ptd/9sbnX/dXd9/3Byef9qbXf/
    +Z2p0/3V3ff9nanT/bG51/29xdf9+gIb/dXd9/3V3ff9ucHf/bnB3/25wd/+Bg4r/bnB3/29xdf9vcXX/
    +bG51/2xudf9ucHf/bnB3/21vc/91d33/bnB3/25wd/9vcXX/dnh8/3l7gf9zdn//cHN9/25wd/9ucXv/
    +bnB3/2dqcf9vcXX/bG51/3N1fP9qbXf/dXiB/3N2f/9ucHf/d3l//2dqdP91eIH/c3Z//3N1fP9zdn//
    +eXyG/3N1fP93eoP/cHN9/3Bzff9zdXz/bnF7/3V4gf9wc33/eXyG/3V4gf95e4H/d3qD/2xudf9sbnX/
    +dnh8/3Byef9zdXz/bnB3/25xe/9gY2z/bnF7/25xe/9ucHf/bG51/2xudf9sb3n/bG95/2dqcf9zdXz/
    +bG95/3N2f/9ucHf/bnB3/3N1fP92eHz/b3F1/3Byef9ucHf/cHJ5/3N1fP9sb3n/bG51/3d5f/91d33/
    +am13/2xudf9ucXv/bG95/25xe/9wc33/bG51/2xvef9sbnX/Z2p0/2xvef9wcnn/bG95/2dqdP9wc33/
    +bG95/2xvef9qbXf/dXd9/2ptd/9qbXf/am13/3Z4fP92eHz/bnB3/25xe/95e4H/cHN9/3Byef9zdn//
    +d3qD/3l7gf93eoP/e32D/3Bzff9zdn//d3qD/36Ahv97fof/dXiB/3d5f/+DhYz/dXiB/3V3ff97fYP/
    +foCG/3t9g/9zdn//cHJ5/3N1fP93eX//d3qD/2xvef93eX//c3Z//3N2f/9ucXv/dXd9/25wd/94eoD/
    +dHeA/3N2f/9ucXv/dnh//2xvef9wcnn/bG51/2xudf9qbHP/eHl9/2xvef9sb3n/d3l//3d6g/91d33/
    +bnF7/3Bzff96fIP/bnB3/29xdf9ucXr/d3h8/2xudf9ydHv/bnB3/2ptd/9vcXj/bnF7/2xudf9wcnn/
    +b3F4/2Zpc/9rbnX/am13/29yfP93eoD/b3J8/2xvef95e4H/b3F1/2xvef9ucXv/b3J8/3F0ff9vcnv/
    +bnF7/3Z4fv9wcnn/dnh+/3J0fP9ydHv/dXd9/2xudv9nanT/dnh+/25xe/9ucXv/am13/2ptdP9qbHP/
    +bW9z/2xudf9qbHP/cHN9/2xudf9sb3n/dXd9/3d5f/9wc33/eHqA/3N2f/9sb3n/c3Z//3d6g/91eIH/
    +e32D/3N2f/9wc33/e32D/3l8hv9+gIb/e32D/3Bzff95e4H/d3l//3d5f/9ucXv/bnB3/25wd/9ucXv/
    +bG95/2xudf9wc33/amxz/2BjbP9nanH/bG95/2Zpc/9nanH/Zmlz/2ptd/9nanT/am13/3V3ff9ucXv/
    +am13/2ptd/9zdXz/bG51/2xudf9qbXf/e32D/25xe/9wc33/am13/2ptd/9qbXf/f4GH/2ptd/9qbXf/
    +bG95/2ptd/9wcnn/bnB3/25wd/9sbnX/dnh8/25wd/9sb3n/bG95/3V3ff93eX//cHN9/3N2f/9wcnn/
    +cHN9/3Byef9nanT/cHJ5/3Byef9wc33/am13/3N2f/9zdn//cHJ5/3l8hv9ucXv/dXiB/3Bzff9vcXX/
    +bnB3/3h5ff9tb3P/bG95/2psc/9qbHP/Z2p0/2ptd/9ucXv/Zmlz/2xvef9sbnX/am13/25xe/9sbnX/
    +bW9z/3h5ff9wc33/c3V8/3N1fP9wc33/amxz/3Byef9ucHf/bnB3/29xdf9sbnX/bnB3/3Byef9maXP/
    +bnF7/2xudf9ucXv/am13/2xvef9zdXz/cHN9/2xudf9wcnn/bG51/3Byef9ucXv/bG95/2ptd/93eX//
    +dXd9/3Byef9ucHf/c3V8/3N1fP91d33/c3V8/25wd/9wcnn/bnB3/3Bzff9zdn//eXuB/3N2f/9wc33/
    +eXuB/3Bzff9wc33/cHJ5/3Z4fP9zdXz/bG51/2xvef91d33/c3V8/2xudf9qbHP/bG95/2ptd/9qbHP/
    +bG95/2xvef9wcnn/am13/3Bzff9nanT/Z2p0/25xe/9zdXz/dXd9/2xudf9sbnX/c3V8/2xudf9qbXf/
    +cHN9/3Z4fP9wcnn/bnB3/2xudf9tb3P/dXd9/3V4gf9sbnX/dXd9/3V3ff91d33/c3V8/3Z4fP9vcXX/
    +c3Z//3V3ff9sbnX/Z2p0/3V3ff9qbXf/bnF7/2dqdP9qbHP/Z2p0/3V3ff9ucHf/bnB3/3N1fP92eHz/
    +dXd9/3Byef9wcnn/eXuB/25wd/9sb3n/c3V8/3Z4fP9ucHf/cHJ5/21vc/9sbnX/cHJ5/3N2f/9wcnn/
    +c3Z//3N2f/9qbXf/c3V8/3N1fP93eoP/eXyG/25xe/9qbXf/fX6B/21vc/9nanT/bnF7/2xvef9sb3n/
    +bG95/2xvef9wc33/amxz/2xvef9sb3n/bG95/25xe/9nanT/ZGdx/3V3ff9wcnn/bnB3/21vc/9vcXX/
    +am13/29xdf9ucHf/bG95/3N2f/9sb3n/bG95/3N2f/93eX//bnF7/3d5f/9wc33/cHJ5/3N2f/91eIH/
    +c3Z//3l7gf9sb3n/bnB3/3N1fP91d33/dXd9/3N1fP9sbnX/dnh8/3Z4fP91d33/bnB3/21vc/9qbHP/
    +am13/2xudf9tb3P/cHJ5/2xudf9kZmz/bnB3/3V3ff9sbnX/b3F1/2psc/9wcnn/bG51/2xvef91d33/
    +c3Z//3Byef9ucHf/e32D/3N1fP9zdXz/c3V8/4OFjP91eIH/fX6B/3d5f/97fYP/dXd9/4mLkf93eX//
    +dXiB/3d6g/9zdn//dXiB/3Bzff9zdn//dXd9/3t+h/97fYP/dXd9/3Bzff95e4H/f4GH/3d6g/9ucXv/
    +bnB3/3Byef9wcnn/Z2p0/25wd/9vcXX/cHJ5/2psc/9ucHf/bnB3/2xudf93eX//am13/3N2f/9sb3n/
    +bnB3/25xe/91eIH/am13/3Bzff9ucHf/bG95/3Byef9wcnn/c3V8/2xudf9wcnn/bnB3/25wd/9zdXz/
    +cHN9/3N1fP91eIH/c3Z//3N2f/95e4H/dXiB/25wd/9ucXv/bnF7/25xe/9vcXX/amxz/3V3ff9zdXz/
    +amxz/3N1fP9tb3P/cHN9/2ptd/9ucHf/c3V8/3d5f/9qbXf/cHJ5/21vc/9sb3n/c3V8/25wd/9qbXf/
    +dXd9/3V4gf9wc33/bG95/3N2f/91eIH/d3l//3N2f/9zdXz/dXiB/3V4gf95fIb/dXiB/3t+h/93eoP/
    +dXiB/3t+h/9zdn//dXiB/25xe/97fYP/c3Z//2xvef9wc33/c3Z//3d5f/9vcXX/b3F1/3Bzff9wc33/
    +bnB3/3Bzff9zdn//c3V8/3Byef91d33/bG51/21vc/91d33/dXd9/3d5f/9sb3n/bnF7/3l7gf9wcnn/
    +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//cHJ5/3d5f/95fIb/bnB3/3N2f/91d33/dXd9/25xe/95e4H/
    +am13/3V4gf9wc33/bnB3/25wd/94eX3/b3F1/3V3ff9vcXX/b3F1/2xudf9ucXv/bG51/25wd/91d33/
    +dnh8/3N1fP9sb3n/bnB3/3Z4fP9tb3P/bG51/25xe/91d33/amxz/2xvef9qbXf/bW9z/3Byef91d33/
    +bW9z/25xe/9ucXv/Z2px/21vc/9sbnX/c3Z//36Ahv9sb3n/ZGdx/3d6g/9kZ3H/YGNs/2Zpc/9kZ3H/
    +ZGdx/2Zpc/9nanT/bG95/2psc/9qbXf/bnF7/25xe/9ucXv/Z2p0/2Zpc/91d33/cHN9/25xe/9sbnX/
    +amxz/2psc/9ucHf/bnB3/2xudf91eIH/bnF7/3Bzff93eoP/eXuB/3Bzff91eIH/cHN9/2ptd/9ucXv/
    +cHN9/25wd/91d33/bW9z/2xudf9ucHf/cHN9/3N1fP9wc33/bG95/3V3ff9ucXv/cHN9/2ptd/9nanH/
    +ZGdx/2Zpc/9iZW7/ZGdx/2Zpc/9nanH/XWBq/2psc/9ucXv/ZGdx/2xudf9kZ3H/bG95/2Zpc/9qbXf/
    +cHN9/3Bzff9sbnX/bW9z/3N2f/9sb3n/bnB3/29xdf9+gIb/cHJ5/3Byef9ucHf/cHJ5/21vc/9+gIb/
    +bG95/2xudf9wcnn/bG51/25xe/9qbHP/amxz/2dqdP93eX//cHN9/2ptd/9sbnX/c3V8/3N2f/9ucXv/
    +Z2px/2dqcf9nanT/Z2px/2BjbP9nanT/bG51/2xvef9qbHP/am13/2ptd/9qbXf/dXiB/2psc/9ucXv/
    +bW9z/2xvef9ucXv/d3qD/25wd/9wcnn/bnB3/2ptd/9wcnn/c3Z//3V3ff9sb3n/cHN9/3N1fP9wc33/
    +eXuB/3d5f/91d33/e32D/3t9g/97fYP/f4GH/36Ahv9zdXz/d3l//3t9g/93eX//d3l//3d5f/9+f4P/
    +e32D/3Bzff93eoP/c3Z//36Ahv9zdn//dXiB/3t9g/97fof/c3Z//3V4gf9zdXz/cHN9/3l7gf9wc33/
    +bnF7/3V3ff91eIH/bnF7/25xe/91d33/bnF7/3N1fP9ucXv/am13/3Byef9ucHf/dnh8/29xdf94eX3/
    +bnB3/25wd/93eX//cHJ5/3Byef9ucHf/eHl9/3Byef9ucHf/dXd9/3N1fP95e4H/b3F1/21vc/9wcnn/
    +bG95/2xudf9ucXv/cHJ5/3N1fP9ucHf/c3V8/2dqdP9maXP/bnF7/25xe/9ucXv/ZGdx/2dqcf9ucHf/
    +Zmhu/2Jlbv9qbXf/cHJ5/2xvef9ucXv/bG95/2dqdP9wc33/c3Z//2xudf9wc33/cHN9/3Byef9sbnX/
    +cHN9/2dqdP9qbXf/bG95/2xvef9qbXf/c3V8/2xudf9wc33/am13/2ptd/9qbXf/cHJ5/25wd/9ucHf/
    +dXd9/3V3ff9zdXz/bnB3/25wd/92eHz/bG95/2dqdP91d33/dXd9/2xudf9qbXf/bG51/2xudf9qbXf/
    +c3V8/25wd/9sb3n/cHN9/2ptd/9wcnn/bnB3/3Bzff9+gIb/bnB3/2psc/9/gYf/b3F1/2psc/9zdXz/
    +bnB3/3Byef9wcnn/bnF7/3Z4fP9wcnn/c3V8/3Byef91d33/cHJ5/2xudf9maG7/d3l//3l7gf9zdn//
    +bnB3/2xudf9nanT/bnB3/25wd/9qbXf/c3Z//2ptd/9sb3n/c3Z//3d5f/9ucXv/dHeA/3N2f/9rbnf/
    +bnF7/25xe/9ucHf/eXuB/2xvef9sb3n/cHN9/3d5f/95e4H/dXd9/3Bzff91d33/cHN9/3Z4fP9ucHf/
    +bG51/29xdf9ucHf/bnB3/2xvef9zdn//c3Z//2Zpc/9zdn//d3qD/25wd/9wc33/am13/3V4gf9wc33/
    +dXiB/36Ahv9+f4P/dXd9/3V3ff97fYP/c3Z//3N1fP9wc33/foGK/3V4gf91eIH/eXuB/3t9g/91d33/
    +g4WM/3t9g/9zdn//eXuB/3Bzff91eIH/cHJ5/25xe/9ucHf/eXyG/3l7gf9wc33/cHN9/3N2f/93eX//
    +c3Z//25wd/9sb3n/bnF7/25wd/9nanT/b3F1/25wd/9wcnn/bW9z/2xudf9ucHf/am13/3l7gf9nanT/
    +bnF7/25xe/9wc33/cHN9/3t+h/9qbXf/bnF7/3Byef9ucHf/bnF7/3V4gf91eIH/dXd9/3l8hv91d33/
    +d3l//36Ahv95e4H/d3l//3l8hv95e4H/d3l//36Ahv97fYP/cHN9/3V4gf91eIH/cHN9/3Byef9qbXf/
    +dnh8/3Byef9nanT/bnF7/2psc/9zdXz/bG51/2ptd/9ucXv/c3V8/2dqdP9qbXf/Z2px/2Zobv9ucXv/
    +am13/2Rncf9qbXf/am13/2Zpc/9nanH/am13/2dqdP9sb3n/cHN9/2ptd/9ucXv/bW9z/3Byef9ucHf/
    +eHl9/25wd/9sbnX/dnh8/3N1fP9wcnn/cHJ5/3d5f/9wcnn/bnB3/3N2f/9wcnn/d3qD/25wd/9sb3n/
    +bnF7/25wd/9vcXX/c3V8/3Byef9ucXv/bnB3/3N1fP9qbXf/Z2p0/3Bzff92eHz/dXd9/2psc/9wcnn/
    +dXd9/21vc/9sbnX/c3V8/3V3ff9wc33/bG95/3Byef9sb3n/c3V8/3l7gf9sb3n/cHN9/3V3ff9zdXz/
    +cHN9/3V4gf9sb3n/bnB3/29yfP9wc33/bG95/3d5ff9sb3n/dXd9/2ptd/9sb3n/am13/25xe/9wcnn/
    +c3Z//3V4gf95e4H/d3l//25xe/9ucXv/d3l//25xev9qbXf/cHJ5/3J0e/9sbnX/bG52/2xudf9sbnX/
    +bnB3/3N1fP9tb3P/a254/2tueP9oa3T/a253/2xudf9vcXn/eXuC/29xeP9qbHP/fH6F/25wdf9nanL/
    +cnR7/29xeP9xc3r/cHJ5/21vd/9zdXz/b3F4/25xev9ucXv/b3J8/25xe/9sbnX/Zmlz/3N2fP9xdH7/
    +cnR7/21vc/9nanT/ZGdx/2xudf9sbnX/amxz/25xe/9qbXf/am13/25xev90dnz/a211/2ptd/9sb3n/
    +Z2pz/2xvef9sbnX/amxz/3N1fP9nanT/Z2p0/2xvef9zdXz/c3V8/3Bzff9sb3n/cHN9/2xvef9zdXz/
    +bG95/2xudf9qbXf/bG95/2xudf9qbXf/cHJ5/25wd/9nanH/cHN9/3N2f/9sb3n/cHJ5/2Zpc/9wcnn/
    +bG51/3Bzff93eX//d3qD/3Byef9qbXf/dXiB/25xe/9zdXz/cHN9/36Biv9zdn//c3Z//25xe/9zdn//
    +c3Z//4GDiv9zdn//cHJ5/3l7gf9wcnn/c3Z//3N1fP9wc33/bG95/3d6g/91eIH/b3F1/29xdf9zdXz/
    +eHl9/3h5ff9tb3P/bG51/2xudf9qbHP/Z2p0/21vc/9wcnn/cHJ5/25wd/9wcnn/cHJ5/25wd/95fIb/
    +Z2p0/25xe/9wc33/bnF7/25xe/97fof/c3Z//3d5f/91d33/eHl9/3d5f/95e4H/e32D/3l7gf9+gYr/
    +eXyG/3l8hv+Agob/cHJ5/25wd/9wc33/bG95/2xvef92eHz/dXd9/2xudf9tb3P/bG95/25xe/9ucHf/
    +amxz/3V3ff9wcnn/bnB3/3Byef9vcXX/d3l//25xe/9zdn//eXuB/3l8hv9zdn//dXiB/3Bzff9wc33/
    +dXd9/25xe/9sb3n/eHl9/3d5f/9ucHf/bnB3/3V4gf9sb3n/c3Z//3V3ff9vcXX/c3V8/25wd/9zdXz/
    +bG51/3l7gf9ucHf/bnB3/3Z4fP9ucXv/bnF7/2ptd/91d33/bG95/2psc/92eHz/cHJ5/3h5ff9vcXX/
    +b3F1/3Byef9sbnX/bG51/25xe/9sbnX/cHJ5/25wd/9zdXz/bW9z/2psc/9wc33/dXd9/3N1fP9nanT/
    +bnF7/3Z4fP9vcXX/b3F1/3N1fP91d33/cHN9/25xe/9wc33/bG95/3Bzff93eoP/bG51/3Byef9ucXv/
    +bnF7/3Byef91d33/bG51/21vd/9tcHr/c3V9/2xvdv92eH3/b3F4/3Byef9sbnX/bG51/2xudf9qbXf/
    +bW9z/3N1fP91d33/dXiB/3V3ff9ucHf/bXB6/3J1fv9vcXj/a212/25xe/9ucXv/bnB4/29yd/9ucXr/
    +cnR7/3F0ff92eH7/b3F4/3N1fv9xdH3/bnB2/3BzfP9vcXj/cnV8/3x+hP9tb3b/a210/3p8gv9vcXb/
    +aGp0/2xveP9vcXf/bnF5/25xef9tb3b/bXB6/25weP9tb3f/bnB4/3Bzev9ucHj/bW91/2dqc/9ydXr/
    +eHl//3N1fP9tb3b/bnB3/2xudf9vcXX/b3F1/2xudf9wcnn/bG51/2xudf9xc3r/d3mA/29xd/9ucXv/
    +c3V+/3BzfP9sb3n/amxz/2psc/9ucHf/YmVu/2Zpc/9nanT/Z2p0/2dqdP9maXP/Zmlz/25wd/9maXP/
    +Z2p0/2Zobv9kZ3H/YmVu/2Rncf9kZ3H/Zmhu/2ptd/9sbnX/ZGdx/2xudf9wc33/am13/2ptd/9iZW7/
    +bG51/2Zpc/9ucXv/dXd9/3N1fP9ucHf/bnB3/3N2f/9sb3n/bnB3/25wd/95e4H/bnB3/2xvef9qbXf/
    +bnB3/2xudf99foH/cHJ5/25wd/9zdXz/bnB3/3Byef9ucHf/cHN9/3Byef97fof/eXuB/25xe/9wcnn/
    +eHl9/3Z4fP94eX3/bW9z/2xudf9sbnX/b3F1/25wd/9vcXX/cHJ5/3Byef9sbnX/cHJ5/25wd/9tb3P/
    +d3l//2dqcf9ucHf/c3V8/2ptd/9sbnX/dXd9/2ptd/9sb3n/bG51/2dqdP9qbXf/am13/2ptd/9maXP/
    +bnF7/2xudf9sbnX/cHJ5/25xe/9sb3n/c3V8/25wd/9ucXv/eXuB/3V4gf9ucXv/c3V8/3V4gf91eIH/
    +bnF7/2ptd/9wc33/cHN9/3Byef9wc33/bnB3/3d5f/9wcnn/cHN9/3d6g/95e4H/c3Z//3V4gf9ucXv/
    +cHN9/3V3ff9wc33/b3F1/3V3ff91eIH/bnF7/25wd/91d33/bG95/25xe/91eIH/bnB3/3N2f/9sb3n/
    +c3V8/2xudf95e4H/bnB3/3N1fP93eX//dXd9/3Byef9wcnn/dnh8/2xvef9qbXf/cHN9/2xvef91d33/
    +am13/2Zpc/9nanT/bG51/2psc/9sb3n/bG51/2xvef9qbXf/bG95/2dqcf9maXP/bnF7/3Byef9sb3n/
    +Zmlz/2ptd/9ucXv/am13/2xudf9wcnn/dXd9/3N1fP9zdXz/dXd9/25xe/9zdn//e36H/2xvef9zdXz/
    +cHJ5/3V3ff91d33/dXd9/25wd/9sbnf/b3J6/3N2f/9sb3f/dniA/3F0ff90dnz/bnB3/21vc/9sbnX/
    +am13/2psc/9ucXv/bnF7/3V3ff9wc33/Z2p0/3Byef9ucXv/a252/2lsdv9sb3n/a254/2tueP9tcHj/
    +bG95/2hrdf9maXP/bnF5/2lrcf9tcHj/am13/2dqcv9pbHb/aWt0/2psdP9wcnv/ZWhy/2Zpc/9vcnr/
    +a252/2dqc/9nanT/cXR8/25wef9ucHj/ZWhx/2Vocv9kZ3H/Zmlx/2dpcP9nanT/aWx0/2Vocf9gY2z/
    +Z2p0/3N1ff9qbXf/Zmly/2Zocf9jZm7/ZWhy/2dqcf9kZ3H/Z2p0/2Rncf9nanP/b3J7/3R3f/9rbnb/
    +a211/3R2fP9ydHv/bnF7/21vc/9ucHf/d3l//2psc/9ucHf/cHN9/3N1fP9zdXz/c3Z//2xvef91eIH/
    +c3V8/3Z4fP9zdXz/cHJ5/25wd/9ucXv/b3F1/25wd/9ucHf/bnB3/2xudf9sbnX/c3V8/2xudf9sbnX/
    +Zmlz/2psc/9qbXf/bnF7/3N1fP9wc33/am13/2ptd/9ucXv/bG51/25wd/9ucHf/foCG/25xe/9wcnn/
    +b3F1/2xudf9zdXz/e32D/3N1fP9ucHf/c3V8/25wd/9zdXz/bnF7/3N2f/9wcnn/eXyG/3d6g/9zdn//
    +c3Z//3d5f/93eX//eXuB/25xe/9ucXv/bnB3/2xvef9sb3n/bnB3/25xe/9zdn//bnB3/2xvef9ucXv/
    +cHJ5/3d5f/9kZ3H/bnF7/3Bzff9sb3n/bnF7/3V4gf9ucHf/bG95/25xe/9ucHf/cHN9/25wd/9ucXv/
    +bG95/3N1fP9ucHf/bnB3/25xe/91eIH/dXiB/3N2f/9sb3n/bnB3/3h5ff9ucHf/bG51/21vc/9wcnn/
    +c3V8/3Byef9nanT/bnF7/3N2f/9sb3n/cHJ5/2xvef95e4H/cHN9/3Bzff91eIH/dXiB/3Z4fP9zdn//
    +bG95/25xe/91eIH/cHN9/25wd/95fIb/d3qD/3Bzff9wc33/d3qD/25xe/9wc33/eHl9/2xudf9ucHf/
    +bG95/25wd/9qbHP/d3qD/2ptd/9sb3n/d3l//25xe/9qbXf/bnB3/3V3ff9ucHf/amxz/3Bzff9sbnX/
    +dnh8/2xvef9qbXf/am13/2xudf9qbXf/c3V8/2xudf9wcnn/bnB3/3N1fP9vcXX/bG51/3V3ff91d33/
    +dXd9/2ptd/9sb3n/am13/2ptd/9maXP/bnF7/3V3ff9sb3n/cHN9/25xe/9qbXf/cHN9/3V4gf9sbnX/
    +cHJ5/2xudf92eHz/cHN9/3d5f/9wc33/bnB4/29xef95e4L/bnB2/3N2fv9ucXr/c3V+/2xvef9ucHf/
    +cHJ5/25xe/9ucHf/dXd9/3Byef91d33/c3V8/21vc/9ydHz/b3F6/2ttdv9rbXX/am13/2Zpc/9rbnf/
    +bG94/2tueP9naXD/Zmlz/2xveP9oa3X/cnR7/2ptd/9oa3T/cnR7/2xudf9sb3b/dHZ+/3Bydv9sb3n/
    +cHN8/3J1ff9tcHn/b3F1/3l7gf92eH7/dXd9/25wd/9tb3f/aGt1/25wd/9ucHf/bG95/3R2f/9ucHf/
    +bW92/25wd/97fIH/cHJ5/21wef9ucHf/am13/21wev9ucXv/bnB3/3N2f/9ucHf/b3F4/3F0fv90d4H/
    +a254/2lsdv9xdH7/c3V8/3N2f/9wc33/d3qD/3t+h/9ucXv/cHN9/3d6g/91eIH/dXiB/25xe/9ucHf/
    +e36H/3Bzff95fIb/d3qD/3Bzff9nanT/bnB3/2xvef9sb3n/c3V8/2ptd/9nanH/cHJ5/3Byef9vcXX/
    +bG95/2xudf9ucHf/bG95/3Bzff94eX3/dXd9/3Byef9wcnn/eXuB/3N2f/9zdXz/c3Z//3l8hv9ucXv/
    +bnF7/25wd/9ucXv/cHN9/3l8hv9wc33/bG95/3V3ff9wcnn/cHJ5/3Byef9wcnn/bG51/3N1fP9sb3n/
    +bG51/2xudf9wc33/bG95/25wd/9qbHP/Z2px/2dqcf9kZ3H/Z2p0/2xudf9sb3n/bnB3/2xudf9vcXX/
    +bnB3/25xe/93eX//ZGdx/25xe/9wc33/c3Z//3N2f/95fIb/cHJ5/3V4gf93eoP/c3Z//3t9g/91d33/
    +dXiB/3Bzff93eoP/c3Z//3N2f/93eoP/eXuB/3l7gf93eoP/dXiB/3d5f/9/gYf/foCG/3d5f/92eHz/
    +e32D/36Ahv99foH/d3l//3t9g/9+f4P/eXuB/3d6g/9wc33/foGK/3N2f/9zdn//eXyG/3l8hv97fYP/
    +d3qD/3V4gf9wc33/e32D/3V4gf9ucXv/e36H/3d5f/9ucXv/bG95/3Bzff9vcXX/bnF7/3Z4fP9sbnX/
    +am13/25wd/9wcnn/bG51/3l7gf9ucHf/c3V8/3h5ff9zdn//bG51/25wd/94eX3/bnB3/2psc/9zdXz/
    +bnB3/3Z4fP9ucHf/bnB3/21vc/9tb3P/bG95/3Bzff9sbnX/cHJ5/3Byef9ucHf/am13/2psc/91d33/
    +dXd9/3Byef9maXP/am13/2dqdP9nanH/YmVu/2Zpc/9ucHf/am13/25xe/9ucXv/am13/25xe/91d33/
    +amxz/25xe/9qbXf/bnF7/25wd/9zdXz/am13/25xe/9zdn//fH+I/3Byev90d4D/b3J6/3Bzff9nanT/
    +bG51/2ptd/9qbXf/bnB3/3N1fP9wcnn/dXd9/3N1fP9sbnb/dXd+/3R3f/9vcnr/bnF6/3Bzff9vcXv/
    +dnmC/3p8gv94eoD/cnV//3Byef9zdn//cHJ5/3h6gP9wc33/bnB3/3Z5gv9zdXz/c3V8/3l8hv91d33/
    +dHZ8/3R2ff92eYL/dHeA/3N1fP95fIX/d3qD/3Z4f/9wc33/bG95/2dpc/9ucHf/bG51/29xdf9wcnn/
    +bnB3/25wd/9sb3n/e32D/29ye/9ucXr/bnB3/21vdv9tcHr/bnB3/29xdf9ucXv/cHJ5/25wd/9tcHr/
    +dnmC/2tueP9sb3n/d3qD/3N2f/9ucXv/bnB3/25xe/93eX//bG95/25wd/9wc33/cHN9/3N2f/9wc33/
    +bnB3/3t+h/9ucHf/dXiB/3N1fP9wcnn/Z2px/3Byef9sbnX/bnB3/25xe/9ucXv/bnF7/3N2f/9wc33/
    +c3V8/2ptd/9sb3n/cHJ5/3N1fP93eoP/eXyG/36Ahv91d33/dnh8/36Ahv95fIb/cHN9/3N1fP9/gYf/
    +c3Z//3V4gf93eoP/d3l//3d5f/+Cg4f/e32D/3Z4fP95fIb/c3Z//3V4gf9zdn//c3Z//25wd/95e4H/
    +d3qD/3N2f/9zdn//d3qD/3N2f/93eX//bnB3/2xvef9sb3n/bG95/25wd/9ucHf/dnh8/3Byef9vcXX/
    +bG51/25wd/9wcnn/dXd9/2Zobv9sb3n/bnF7/3Bzff91eIH/e32D/25wd/9ucXv/bG95/3Byef9zdn//
    +bnB3/3V4gf9wc33/eXyG/3V3ff93eX//e32D/2Zpc/9nanT/Z2p0/2xudf9sbnX/c3V8/2ptd/9sbnX/
    +am13/3N1fP9sb3n/cHN9/2xudf9zdXz/dXd9/25wd/9wcnn/bnF7/36Biv9zdXz/c3V8/3t9g/95fIb/
    +d3l//3Bzff9ucXv/bnF7/3N2f/9sb3n/bG51/3d5f/92eHz/bnB3/2ptd/9qbXf/amxz/25xe/93eX//
    +amxz/2ptd/9sbnX/Z2p0/2Jlbv9wc33/ZGdx/2ptd/9ucHf/am13/2psc/9qbHP/bnF7/2psc/9kZ3H/
    +bG95/2xudf9wc33/am13/2Zpc/9sb3n/am13/25wd/9zdn//bnB3/25xe/9wcnn/c3V8/25wd/9ucHf/
    +d3l//3Z4fP92eHz/am13/25xe/9wcnn/bW9z/2dqdP9sb3n/cHN9/2xvef9zdXz/c3V8/2xvef9wc33/
    +dXd9/2xudf9sb3n/bG51/2xvef9qbXf/bnF7/2ptd/9wc33/bnF7/3h7hf9sb3b/cHJ7/25wdv9ucXv/
    +am13/2xudf9sbnX/bG95/2xudf9ucXv/dXiB/3V4gf9zdXz/b3F1/3R2fP9xc3v/bnB1/25wd/9ucHf/
    +am13/3Bzff91d33/dnh8/3Byef9sbnX/cHN9/3Byef95e4H/cHN9/25xe/91d33/bW9z/25wd/9wcnn/
    +bnB3/29xdf9ucHf/c3V8/3Byef9vcXX/eXuB/3V4gf95e4H/bnB3/25wd/9kZmz/bG51/2dqdP9qbHP/
    +bG51/2ptd/9maXP/amxz/3N2f/9qbXf/am13/2ttdv9rbnX/cHJ6/2xvef9wcnn/cHN9/3Byef9vcnn/
    +bXB6/3N2gP9oa3X/Z2p0/2xvef9qbXf/dXiB/3N1fP93eoP/eXyG/3N2f/93eX//fn+D/3l8hv95fIb/
    +dXiB/3d6g/9+gYr/cHN9/3d6g/91eIH/bnF7/2dqdP9sb3n/bnF7/25wd/9wc33/bG95/2ptd/9wc33/
    +bnF7/3Byef9sb3n/bnF7/2xvef9sb3n/c3V8/3V3ff9zdXz/bnB3/25wd/93eX//bnF7/3Byef9ucHf/
    +e32D/25wd/9wc33/c3V8/25xe/9ucHf/eXyG/3N1fP9ucHf/dnh8/21vc/9sb3n/cHJ5/25xe/9sbnX/
    +dXd9/3V3ff9ucXv/bG51/3N1fP9ucXv/dnh8/2xudf9qbXf/bG51/21vc/9tb3P/bW9z/3N1fP9sbnX/
    +amxz/2dqdP9sbnX/bnF7/3N1fP9kZ3H/bG51/2xvef9nanT/am13/2xvef9maG7/bG51/2xudf9qbHP/
    +Z2p0/2Rncf9maXP/Zmhu/2Zpc/9iZW7/ZGdx/2dqdP9qbXf/am13/2xvef9qbXf/amxz/3N1fP9maXP/
    +Z2px/2Zpc/9sb3n/am13/25xe/9kZ3H/cHN9/25xe/9sbnX/bG95/2xvef91eIH/bnB3/29xdf93eX//
    +eXyG/3d6g/9wc33/cHN9/3N2f/95e4H/c3Z//3V3ff9/goz/foCG/3d6g/9zdn//d3qD/3Bzff95fIb/
    +f4GH/3d5f/93eoP/c3Z//3d6g/91d33/foGK/3Bzff91eIH/d3qD/3N2f/9ucHf/bG95/3N2f/9zdn//
    +am13/25xe/9ucXv/c3Z//3Bzff9qbXf/c3V8/3Bzff9ucXv/dXd9/29xdf9ucHf/bnB3/3V3ff9ucHf/
    +am13/3V4gf95e4H/eXuB/2xvef9wc33/cHN9/3N1fP9ucHf/cHJ5/3V3ff91d33/d3l//3Z4fP9sbnX/
    +cHN9/3d5f/9qbXf/bnB3/21vc/9wcnn/bnF7/3V3ff9ucXv/bG51/25wd/94eoH/bnB4/3J0fP9vcXn/
    +dHZ9/2xudf9qbXf/Z2p0/2ptd/9nanP/bG95/2xvef93eX//bnF7/2psc/9tcHn/bnB5/21vdP9rbXT/
    +bnB3/2dqcf9sb3n/cHN9/25xe/9sb3n/amxz/2xvef9maG7/bG95/2dqcf9nanH/am13/2dqdP9maXP/
    +bG95/2ptd/9qbXf/am13/2xudf91d33/bG95/3l8hv95e4H/eXuB/3Bzff9ucHf/am13/3N2f/9zdXz/
    +c3V8/3V4gf91d33/dXiB/3d5f/+DhYz/e32D/3h6gP9zdn7/b3F5/2xvef9rbnj/Z2px/2dqdP9qbHP/
    +a210/2xvef93eX//c3V8/25xev91eIH/cHN9/2xudf9sbnX/cHJ5/3Bzff9kZ3H/bnF7/3N1fP9sb3n/
    +bG95/2xvef9ucXv/dXiB/2xvef91d33/bnF7/3N1fP9sbnX/bnB3/2xudf9ucHf/bG51/25wd/9qbXf/
    +c3Z//25wd/9sb3n/bnF7/2ptd/9sb3n/bnB3/3Bzff93eoP/c3Z//25xe/9sb3n/dXiB/25xe/9wc33/
    +cHJ5/3t+h/9ucXv/bG95/29xdf9sbnX/cHJ5/3t9g/9ucXv/amxz/3V3ff9qbHP/am13/2ptd/9sb3n/
    +Z2p0/3V3ff9sb3n/am13/2psc/9zdXz/cHJ5/3d5f/9tb3P/bW9z/2xudf9nanH/bG51/2xudf91d33/
    +bG51/21vc/9sbnX/bG51/3Z4fP92eHz/Z2p0/2xvef91d33/c3V8/25xe/9zdXz/b3F1/25wd/9ucHf/
    +bnB3/25wd/9nanT/bG95/2ptd/9ucXv/am13/2xudf9sbnX/bG95/25wd/9wcnn/bG95/2xudf9zdXz/
    +Z2p0/2dqcf9nanT/bG95/2ptd/9ucXv/ZGdx/25xe/9zdXz/bG51/2xvef9qbXf/cHJ5/2dqcf9nanH/
    +bG95/3Bzff9ucXv/Z2p0/2dqdP9nanT/bG95/2Zpc/9kZ3H/dXd9/3Byef9qbXf/bG51/2xudf9qbHP/
    +cHN9/3N2f/9qbHP/Z2p0/2dqcf9nanT/Zmlz/3V3ff9qbXf/bnF7/2xvef9sb3n/bG51/2xudf9sb3n/
    +c3V8/2dqcf9ucHf/bnB3/25xe/9ucHf/Z2px/2xudf9ucHf/c3V8/3Z4fP9vcXX/cHJ5/25wd/91d33/
    +bnB3/2xvef91eIH/dnh8/3V3ff9ucHf/cHN9/3N1fP9vcXX/b3F1/2xvef9zdXz/c3V8/3d5f/92eHz/
    +bnB3/3Z4fP93eX//bG51/3N1fP9sbnX/cHJ5/3V3ff93eX//c3Z//25xe/9ucXv/d3qD/29yfP9zdn//
    +c3V9/3l7gf9qbXf/bnF7/3Byef9zdn//a254/3N2f/91eIH/e32D/3d6g/9wcnn/cXR+/3J1fv9ucXn/
    +bnB3/3Byef9qbHT/c3Z//3h6gP9zdn//bnF7/2xvef9zdXz/b3F1/3N1e/9sbnX/bG51/3R2fP9ucXv/
    +bnB3/3F0ff9vcXj/b3F4/25xe/9zdXz/dXiB/25xe/95fIb/eXuB/3l7gf9ucXv/am13/2Zpc/9wcnn/
    +bnB3/2ptd/9wc33/bG95/3Bzff9ucHf/d3qD/3N2f/9wcnn/bnB3/29xdv9ucHf/cHJ5/25wd/9ucXv/
    +bG95/25wd/9sb3j/dXd8/29xd/9sbnX/cHN9/2xvef9ucHf/bG95/3d5f/91eIH/Zmlz/3V4gf95e4H/
    +cHN9/3N1fP91eIH/d3qD/4GDiv95e4H/eXyG/3V4gf93eoP/bnF7/3N1fP9ucXv/bG95/2xvef9ucHf/
    +bnB3/3N2f/9wcnn/bnB3/2ptd/9ucHf/bG51/25wd/9ucXv/d3l//25xe/9ucHf/amxz/3d5f/9ucXv/
    +am13/2ptd/91d33/bG51/3Byef9ucHf/cHN9/3V4gf9+gYr/d3qD/3Bzff97fof/cHN9/3N2f/93eoP/
    +dXiB/3N2f/97fof/e32D/3d6g/91d33/e32D/3d6g/9+gYr/cHN9/3N1fP9zdXz/cHJ5/2xvef9ucHf/
    +dXd9/25wd/9tb3P/bnB3/25wd/9zdn//dXd9/25wd/9tb3P/c3V8/2xvef9sb3n/cHN9/2dqcf9qbHP/
    +amxz/2ptd/9qbXf/Z2p0/2ptd/9sb3n/cHN9/2xudf9nanT/am13/2dqdP9maXP/Z2p0/2dqdP9kZ3H/
    +am13/2Rncf9maG7/YmVu/2Zpc/9kZ3H/am13/1xfaP9qbXf/bG95/2BjbP9kZ3H/Z2px/2xvef9maG7/
    +Zmhu/25wd/9zdXz/bnF7/2dqdP9maXP/Z2p0/25wd/9qbHP/Zmlz/3N1fP91d33/am13/25wd/9qbXf/
    +bG51/2xvef9zdn//amxz/2xudf9qbHP/bnB3/21vc/93eX//am13/3N1fP9wc33/bG95/2ptd/9qbXf/
    +bG95/25xe/9maXP/bG51/2xudf9ucXv/bG95/2psc/9sbnX/bnB3/3Byef91d33/bnB3/25wd/9zdXz/
    +cHJ5/29xdf9sbnX/dXd9/3V4gf95e4H/cHN9/3V4gf9zdn//cHJ5/3N1fP9wc33/e32D/3t9g/9+gYr/
    +eXuB/3Bzff95e4H/eXuB/25wd/9zdn//bG95/3N2f/91eIH/eXyG/3d5f/9wcnb/b3F2/3Z4ff9vcXj/
    +cHN7/21veP90dn3/am13/3Byef9wcnn/cHN8/2psc/9ucHf/bnB3/3V3ff9wcnn/bW9z/29xeP9sb3n/
    +amxy/2Zpcv9oa3T/X2Js/2hrdf9xc3v/bG95/2xudf9pbHb/bXB6/2ttdf9rbnf/a252/2lsdv9tb3j/
    +bW93/2psdP9vcnz/amx0/2dqdP9tb3b/bG51/3N1fP9qbXf/d3qD/3Bzff9wc33/bG95/2ptd/9qbHP/
    +bnB3/21vc/9sbnX/bnB3/2xudf9wcnn/bW9z/3d5f/9wc33/bG95/29xef9sbnX/aWx2/2ptd/9nanT/
    +am13/2xudf9nanT/a210/3N1ff9vcXn/bW93/3V4gf91eIH/am13/2ptd/9wc33/cHN9/2Jlbv9ucXv/
    +dXd9/25wd/9sbnX/bG51/25wd/91d33/cHJ5/3V3ff9sbnX/cHN9/2dqdP9vcXX/bG51/2xudf9qbXf/
    +am13/2xudf9zdXz/bnB3/29xdf9maXP/bG95/2xvef9sb3n/c3Z//3V4gf9wcnn/c3V8/2psc/91d33/
    +cHN9/25xe/9sb3n/d3l//2xvef9ucXv/bnB3/2xudf9zdXz/foCG/3N2f/9sb3n/d3qD/2xvef9sb3n/
    +c3Z//3N1fP9ucHf/dnh8/3Byef9ucHf/bG95/3V3ff9wcnn/e32D/29xdf9tb3P/bG51/29xdf9ucHf/
    +b3F1/3Z4fP9ucHf/bnB3/3Byef9zdXz/dXd9/3V3ff9nanH/bG51/3d5f/9sb3n/am13/2xvef9sbnX/
    +bnF7/2xvef9nanT/am13/2Rncf9maXP/Zmlz/2dqdP9iZW7/XF9o/2Rncf9ucXv/am13/3Byef9zdXz/
    +bG51/3V3ff9ucHf/bG51/2psc/9zdXz/cHJ5/3N1fP9maG7/cHJ5/3N1fP9nanT/dXd9/2xudf92eHz/
    +b3F1/2xvef91eIH/d3qD/3V4gf9sb3n/bnF7/3N2f/91d33/bnB3/2xvef93eX//dXiB/25wd/9sbnX/
    +bG51/25wd/9zdXz/d3l//2ptd/9qbXf/bnB3/3Byef9vcXX/dnh8/21vc/9zdXz/cHN9/2xvef9qbXf/
    +bG51/2xudf9qbXf/Zmlz/2xudf9qbXf/bG95/2xudf9maXP/bG51/2ptd/9ucHf/d3l//2ptd/9sbnX/
    +bnF7/2ptd/9sbnX/am13/3d5f/93eX//eHl9/25wd/91d33/cHN9/25wd/9ucXv/cHJ5/3l7gf93eX//
    +e36H/3d5f/9ucHf/dXiB/3d5f/9wcnn/c3Z//2xvef9ucXv/c3Z//3l7gf92eHz/Z2pz/2Zpcv9ucHj/
    +Zmlz/2hrc/9pbHb/bXB6/2dqdP9maXP/Zmlz/2dqdP9hZGz/Z2px/2dqcf9zdXz/am13/2dqdP9oa3X/
    +a254/2hrdP9oa3P/am13/2hqcf9tcHj/cHJ5/3Byef90dnz/bnB5/3V4gf9ydHz/cXR+/29ye/9vcnv/
    +b3J8/3N2f/9xc3r/eXyF/29ye/9tb3f/cnR+/3N1fP93eX//bnF7/3l8hv95e4H/dXiB/3N2f/9ucHf/
    +am13/3N1fP9wc33/cHN9/3N2f/9ucHf/bnF7/2xvef95e4H/dXd9/25wd/9wc3r/cHN6/29ye/9ydX7/
    +c3Z//3V4gf9zdXz/c3Z//3J1fv94eoL/cXN6/25weP9zdXz/c3V8/3V4gf91d33/foCG/3t9g/9wc33/
    +d3qD/3l7gf93eoP/c3Z//3N2f/9zdn//d3qD/3N2f/93eX//bnB3/3V4gf9nanT/cHJ5/3Byef9wcnn/
    +cHJ5/2xvef9wcnn/d3qD/3N2f/91d33/am13/3N1fP9wc33/cHN9/3l8hv97fYP/d3qD/3N2f/9ucHf/
    +eXuB/3N2f/9ucXv/cHN9/3l7gf9wc33/c3Z//25wd/9wcnn/dXiB/36Ahv9zdn//bnB3/3d6g/9vcXX/
    +bnB3/3N1fP9wcnn/bG51/3h5ff9wcnn/cHJ5/2xudf9zdXz/cHJ5/3d5f/9tb3P/bG51/2dqdP9ucHf/
    +bnB3/3Byef93eX//bnF7/25wd/9ucXv/c3Z//3V3ff91d33/Z2p0/25xe/95e4H/c3Z//3N2f/9wc33/
    +bnB3/3N2f/9ucHf/bnB3/3V3ff9sbnX/cHJ5/3V3ff91d33/b3F1/2dqcf9wcnn/c3Z//3Byef9zdn//
    +dXiB/3Bzff95e4H/c3Z//25xe/9qbXf/c3Z//3V3ff91d33/amxz/3Byef94eX3/bG95/3N2f/9ucXv/
    +dXd9/25wd/9ucXv/d3qD/3V4gf93eoP/b3F1/3Byef91d33/dXd9/2xvef9nanT/cHJ5/3V3ff9sb3n/
    +am13/2ptd/9wcnn/cHJ5/3l7gf9wcnn/bG51/21vc/9sb3n/b3F1/3h5ff9sbnX/c3V8/3V3ff9wcnn/
    +bnB3/25wd/9ucHf/bnB3/2xudf9tb3P/bG51/25wd/9sbnX/Z2p0/2xudf9qbHP/am13/3N1fP9qbXf/
    +Z2px/2dqdP9qbHP/Zmlz/2Jlbv9qbXf/am13/2xvef9maG7/Z2p0/2Rncf9gY2z/ZGdx/2Rncf9sb3n/
    +Zmlz/3Bzff9zdXz/amxz/2ptd/9zdXz/bG51/25xe/9qbXf/am13/2xvef91d33/c3V8/21wev9vcXb/
    +dHZ8/25wd/9vcnz/bXB5/3N2f/9sbnX/bG51/25wd/9ucXv/Zmlz/21vc/9sbnX/dXd9/25wd/9ucHf/
    +cXN6/29xeP9ucHj/bnF6/3Bzff9vcnz/dHeA/3J1f/9wc33/dnmC/3J0fP93eYD/dHZ9/29xeP9wcnr/
    +bnB4/3Byef9ydHv/b3F5/3h7gv9vcnz/bG93/3Fzev9sb3n/dnh8/29xdf95e4H/d3l//3N1fP9zdn//
    +bnB3/2dqcf9tb3P/bG51/2xudf9sb3n/amxz/2ptd/9nanH/c3Z//2xvef9qbHP/bG94/21vdv9rbnb/
    +bG95/2ptd/9qbXf/Z2p0/2xudf9sbnX/cnR7/29xeP9oa3T/bG95/2xvef9ucXv/bG95/3V4gf9zdn//
    +amxz/25xe/91d33/bnB3/21vc/9qbXf/cHJ5/3d5f/9wcnn/d3l//2xvef91d33/Z2p0/25xe/9sb3n/
    +bG95/3Byef9tb3P/bW9z/3Bzff9sbnX/Z2p0/2BjbP9nanT/Z2p0/2Zpc/9sb3n/bnF7/2dqdP9nanT/
    +YmVu/25wd/9maXP/ZGZs/2Rncf9sb3n/Zmhu/2ptd/9kZ3H/YmVu/2Zpc/9ucHf/Z2p0/2BjbP9sb3n/
    +YmVu/2Rncf9qbXf/Zmlz/2psc/9qbXf/Zmlz/2Rncf9iZW7/am13/2dqdP9zdn//amxz/2psc/9nanT/
    +am13/2xudf9nanH/dXd9/2xudf9tb3P/bnB3/3Byef94eX3/d3l//2ptd/9ucXv/eXuB/3V4gf93eoP/
    +dXiB/3N1fP95e4H/cHN9/3Bzff93eoP/cHJ5/3V4gf91eIH/c3Z//25wd/9qbXf/cHN9/3V3ff9vcXX/
    +c3Z//3V4gf9ucHf/c3Z//25wd/9wc33/Z2p0/3N2f/9wc33/cHN9/2ptd/9wc33/dXiB/2ptd/9wc33/
    +bnF7/3Z4fP9wcnn/cHJ5/3l7gf93eX//e32D/29xdf91d33/dXd9/3N1fP9sb3n/Z2p0/3V3ff91d33/
    +bnB3/2xvef9sbnX/bnB3/25wd/91d33/bW9z/2xudf9tb3P/bW9z/2ptd/91d33/bG51/3N1fP91d33/
    +bnB3/25wd/9ucHf/bnF7/3Bzff9ucHf/bnB3/2xvef9wc33/bnB3/2dqdP9sb3n/bnB3/3N1fP91d33/
    +bnB3/21vc/9wcnn/bG51/2xvef9qbXf/dnh8/3h5ff91d33/bG51/25wd/9ucHf/am13/2xudf9nanT/
    +c3V8/2xvef91d33/dXd9/2xudf9sb3n/c3V8/2dqdP9ucXv/Zmlz/2xvef9wcnn/d3l//3Bzff9wc3v/
    +bXB5/3J1fv9qbXf/bnF7/2ptd/9zdXz/bG51/25wd/9zdXz/bnF7/2ptd/9ucXv/cHJ5/3d5f/9ucXv/
    +cHN9/3V4gf9ucXv/bnF7/25wd/9vcnz/bXB6/21wev9oa3X/bXB6/3R2fP9ucHX/eHqA/29xef9sb3n/
    +bG95/2dqdP9qbXf/Z2p0/2Zpc/9ydHz/bXB4/2lsc/9tb3j/a253/3V3ff9ucHf/d3qD/3V4gf91d33/
    +dXd9/29xdf9maG7/bnB3/21vc/9sbnX/bnF7/2xudf9wcnn/bW9z/3V4gf9wc33/amxz/2ptd/9qbXb/
    +bnB3/29xeP9qbXf/bnB3/2dqcf9sbnX/bG51/21wev9rbnf/Z2p0/2psc/9sb3n/cHJ5/2psc/91d33/
    +dXd9/2psc/9sb3n/c3V8/3Byef9sb3n/bnB3/3V3ff94eX3/bnF7/3l8hv9zdXz/e32D/2xvef9zdn//
    +d3qD/3N2f/93eoP/dXd9/3N2f/9+gIb/cHN9/3N1fP9sb3n/cHN9/3N2f/9zdn//d3qD/3t9g/95fIb/
    +d3qD/3Bzff97fof/eXyG/3V4gf9zdXz/dXiB/25wd/9wcnn/bnB3/3Byef91d33/d3qD/3d5f/9sb3n/
    +d3l//25wd/9ucXv/d3qD/3V4gf91eIH/d3qD/3V4gf91eIH/dXd9/3t9g/93eoP/foGK/3Byef9ucXv/
    +bnB3/25xe/9wcnn/c3V8/3t+h/9wc33/cHJ5/25xe/9wc33/d3l//3h5ff9qbXf/cHJ5/3d6g/9wcnn/
    +dnh8/3N1fP9sbnX/dnh8/29xdf9ucHf/cHJ5/21vc/9zdXz/c3V8/3N1fP9tb3P/bG51/3N2f/9ucXv/
    +bG51/2xvef9wc33/Zmlz/2xvef9nanH/Zmlz/2BjbP9qbXf/Z2p0/2ptd/9iZW7/am13/25xe/9qbXf/
    +bnF7/25wd/91d33/bnF7/2xvef93eoP/eXuB/36Ahv9wcnn/c3Z//3l7gf93eoP/c3Z//25xe/9+gIb/
    +foGK/3l7gf97fYP/d3l//3t9g/93eoP/foGK/3V4gf93eoP/c3Z//3V4gf9zdn//eXyG/3N2f/95e4H/
    +e32D/3N1fP9wcnn/cHJ5/25xe/9zdn//c3V8/25wd/9ucHf/c3Z//3Byef9qbXf/b3F1/29xdf9wc33/
    +dXiB/3Bzff9wcnn/bG95/25wd/9zdXz/bG51/3V3ff92eHz/dXd9/25wd/9sb3n/bnF7/2xvef9ucHf/
    +cHJ5/3h5ff9wcnn/foCG/3t9g/9tb3P/cHJ5/3Z4fP9ucHf/dXd9/2ptd/9ucHf/c3Z//3V4gf92eHz/
    +c3V7/21wd/9wcnr/am13/3N1fP9sbnX/bnF7/2ptd/9sbnX/cHN9/25xe/9qbHP/bnB3/29xdf91d33/
    +bG95/25xe/9wcnn/bG95/21vc/9ucHf/bG95/25wd/91d33/amxz/25xe/9zdn//c3V8/36Biv93eoP/
    +c3Z//3d6g/91d33/cHN9/3d6g/91d33/foCJ/2Zpcv9jZnD/bnB3/2ptdv9vcnz/amxz/3d5f/93eX//
    +c3V8/3V3ff9ucHf/ZGZs/2xvef9sb3n/cHN9/3N2f/9vcXX/cHN9/25wd/93eoP/dXiB/25xe/9ucXv/
    +bXB6/3Byef9vcXr/bnB3/2xvef9nanT/cHJ5/25weP90d37/c3V6/25weP9ucXr/c3Z//25xe/9maXP/
    +c3V8/3V3ff9nanH/bnB3/3N1fP9zdXz/bnB3/21vc/9zdXz/d3l//25xe/9zdn//bG51/3Bzff9kZmz/
    +bG51/2xvef9sbnX/c3V8/29xdf9sb3n/c3Z//25wd/9qbXf/Z2p0/3Byef9ucHf/bG51/3Bzff9zdn//
    +cHN9/2xvef9sb3n/dXd9/3V4gf9zdn//cHJ5/3V4gf9ucXv/cHN9/3Bzff9ucHf/c3Z//3d5f/91d33/
    +Z2px/3Z4fP9sbnX/bG51/3Bzff9ucHf/bW9z/25wd/9sbnX/bnF7/2xudf9wc33/cHJ5/3V3ff9nanT/
    +bG51/2dqdP9nanT/am13/2xudf93eoP/bG51/2xudf9wcnn/cHJ5/3d6g/93eX//bnB3/25wd/93eoP/
    +cHN9/3d5f/9zdn//am13/3V3ff9ucHf/c3V8/3V3ff9tb3P/cHJ5/3N1fP91d33/bG51/2xudf9ucHf/
    +dnh8/2xvef91eIH/cHN9/25wd/9zdXz/bnB3/2xvef9qbXf/dXiB/3N1fP9zdn//bnB3/3N2f/9zdn//
    +cHJ5/3V4gf93eoP/c3Z//3N2f/9zdn//e36H/3l7gf9/gYf/bnB3/25xe/91d33/c3V8/21vc/9ucHf/
    +dXd9/3d5f/9ucHf/bnB3/2xudf9sb3n/bnB3/3V4gf9qbXf/bnF7/25wd/9sbnX/bnB3/3V3ff9vcXX/
    +dXd9/3V3ff9ucHf/bnB3/2xvef9wc33/cHN9/3Byef9wcnn/cHN9/3V4gf9zdn//bnF7/3N2f/91d33/
    +eXyG/36Biv91eIH/dXiB/3N1fP9wc33/dXiB/25xe/9zdn//dXd9/3Bzff9ucHf/cHJ5/3Byef9qbXf/
    +cHJ5/2ptd/91d33/bG95/36Ahv97fYP/bW9z/3Byef91d33/b3F1/3Bzff9sb3n/bG95/3V4gf95e4H/
    +d3l//3d5gv9ucXv/cHN9/25wd/9zdn//c3V8/3Bzff9sb3n/bnB3/3Z4fP9zdn//am13/25xe/9ucHf/
    +dXiB/25wd/9wc33/cHN9/3Byef9vcXX/bG51/25wd/9zdXz/dXd9/2psc/9wcnn/bnF7/2xudf91d33/
    +c3V8/25wd/9ucXv/am13/2psc/9sbnX/bW9z/3V3ff9ucHf/aWxz/3Fzef9sbnX/c3V+/25wd/93eX//
    +d3l//3Bzff93eoP/bnF7/2Zpc/9wcnn/bnB3/3Bzff9zdn//bG95/3N2f/9ucXv/dXiB/3V4gf9wc33/
    +cnV+/25weP9rbXX/bXB4/2hqcf9maXP/YGNs/2ptd/9qbXf/b3J7/25wd/9pa3P/amxz/2ptd/9wc33/
    +Zmlz/3V3ff91d33/amxz/3Byef9zdXz/cHN9/3N2f/9wc33/eXyG/3l8hv91eIH/d3qD/25xe/9zdn//
    +ZGdx/25wd/9ucXv/bW9z/3Byef9sbnX/bG51/3N1fP9qbHP/Zmlz/2dqdP9sbnX/amxz/2Rncf9ucXv/
    +am13/2xvef9nanH/YmVu/2ptd/9qbXf/Z2px/2Zpc/9nanT/amxz/2psc/9sb3n/Z2p0/25xe/9wc33/
    +cHN9/2Zpc/93eX//Z2p0/2xudf9zdn//c3Z//2ptd/9wcnn/b3F1/3Byef9vcXX/cHJ5/25wd/91d33/
    +Z2p0/2ptd/9qbHP/bG51/2xvef9sbnX/d3qD/2dqdP9sbnX/bnF7/2xvef93eX//bnF7/2xudf9nanT/
    +c3V8/2ptd/9qbXf/bG95/2Zpc/9wcnn/am13/2xvef9wc33/amxz/2ptd/9sb3n/cHN9/2ptd/9tb3P/
    +bG95/3Z4fP9ucHf/c3V8/25xe/9qbHP/bnF7/2xudf9sbnX/YGNs/2xvef9sb3n/bG95/2psc/9sbnX/
    +am13/2xudf9zdXz/cHJ5/3Byef9wcnn/am13/3N1fP9wc33/eXyG/21vc/9ucHf/dXd9/2xvef9qbXf/
    +bG51/3V3ff93eX//bG95/3Byef9ucHf/bG95/25wd/97fYP/b3F1/3Byef9wcnn/bG51/2xudf93eX//
    +am13/3Bzff9wc33/bW9z/2ptd/9nanT/am13/2xvef9sbnX/Z2p0/2xudf9nanT/amxz/11gav9sbnX/
    +Z2px/2ptd/9zdXz/bG95/2xvef9qbHP/bG51/25xe/9nanT/dnh8/3N1fP9wc33/bnF7/3N2f/9zdn//
    +am13/3Bzff9zdXz/e32D/3V4gf+Fh43/f4KM/3N2f/93eoP/foCG/3N1fP95fIb/dnh8/3l7gf9+gIb/
    +e36H/36Ahv95fIb/c3Z//3N2f/9sb3n/dXiB/2xvef9ucXv/bG95/3Byef91eIH/eXuB/2ptd/9ucXv/
    +bnB3/3Bzff9wcnn/c3Z//3V4gf9sb3n/bG95/2xudf9sbnX/cHJ5/3V3ff9nanH/bnF7/3Bzff9ucXv/
    +d3qD/3N2f/9ucXv/dXiB/3Byef9qbXf/b3F4/25wd/92eHz/cXR9/25wd/9vcnv/bG95/3N2f/9wcnn/
    +d3qD/3d6g/9zdn//dXiB/3Bzff9nanT/bnB3/25xe/9zdn//cHN9/25wd/9zdn//cHJ5/3h5ff91d33/
    +bG51/2xvef9tb3f/bnB4/29xev9rbnj/bnB3/2psc/9ucHf/b3F5/3J0ev9ucHb/Zmhv/2ptdP9sb3n/
    +cHJ5/2dqcf93eX//c3V8/2dqcf9qbXf/cHJ5/25xe/9ucXv/cHN9/3t9g/95fIb/c3Z//3d6g/9zdn//
    +d3qD/2ptd/9zdXz/dXiB/3Bzff95fIb/dXd9/3V4gf9+gIb/cHN9/25xe/9qbXf/cHJ5/25wd/9sbnX/
    +c3Z//3Bzff9wc33/bW9z/2ptd/9ucXv/bG95/2psc/9nanH/Z2px/2psc/9sbnX/bG95/2xudf9zdXz/
    +dXd9/3N1fP9qbXf/dXiB/2dqdP9wcnn/c3V8/3N1fP9sbnX/am13/2xudf9sb3n/am13/2xvef9sb3n/
    +dXd9/2ptd/9qbXf/Z2p0/2xudf9wcnn/b3F1/31+gf9vcXX/bW9z/3N2f/9wc33/dXiB/3N1fP9ucHf/
    +cHN9/3d6g/9zdn//c3Z//3N2f/9sb3n/eXuB/25wd/9zdn//dXd9/25wd/9ucXv/dXiB/3l7gf9sb3n/
    +bnB3/3N1fP9wcnn/Z2p0/2xvef9sb3n/bG51/25xe/9qbXf/bG95/2BjbP9sb3n/cHN9/2xvef9tb3P/
    +bnB3/2xvef9qbXf/cHN9/25xe/9ucXv/bG95/25xe/91d33/c3V8/3t9g/9qbXf/bG95/3Z4fP9ucHf/
    +bnB3/2psc/92eHz/dXd9/25xe/9ucXv/bnF7/3Byef9ucXv/f4GH/3Byef9wc33/c3Z//25xe/9ucXv/
    +d3qD/2xvef9wc33/cHN9/25wd/9ucXv/bnF7/3V4gf91eIH/bnF7/25wd/9ucHf/cHJ5/21vc/9iZW7/
    +amxz/2psc/9qbXf/cHN9/2dqdP9ucXv/amxz/2ptd/9qbXf/Z2p0/3Bzff9ucHf/cHJ5/21vc/9ucHf/
    +bnB3/2Zpc/9nanT/Z2p0/3V3ff9ucHf/fX6B/3d5f/9sbnX/bG95/3h5ff9ucHf/cHN9/2xvef9ucHf/
    +dnh8/3V3ff91d33/dXd9/29xdf9ucHf/bG51/3Byef9sbnX/bG95/2ptd/9sbnX/cHN9/3V3ff9maXP/
    +bG95/2xudf9qbXf/amxz/2ptd/9sb3n/Zmhu/2psc/9maXP/amx0/2ptd/9sb3n/YmVu/2xvef9tcHn/
    +bW92/3V3ff9xdH3/bXB6/3V3ff9vcXj/bXB5/3Fzev9ydHr/dXh//3J0fP9vcXn/b3J7/29xdv9wcnn/
    +bW9z/3V3ff93eX//bnB3/3Byef9wcnn/ZGdx/2ptd/9maXP/bG95/25xe/9qbXf/c3V8/2xudf91d33/
    +c3V8/25wd/9zdXz/bXB6/21wev9ucXn/bG95/2xvef9sbnX/bnB3/25xe/92eH3/c3V8/2ptdf9vcXb/
    +c3V8/3N2f/9maXP/e36H/3N2f/9sb3n/bG95/25xe/9zdn//cHN9/3N2f/93eX//eXuB/3Bzff93eoP/
    +cHN9/3d6g/9nanT/bnB3/3N2f/9wcnn/c3Z//25wd/9ucXv/d3l//25wd/9sbnX/Z2p0/3Byef9ucHf/
    +am13/3V4gf91eIH/c3Z//25wd/9sb3n/c3V8/3N2f/9ucHf/bnB3/25xe/9ucHf/bnB3/3V4gf9wc33/
    +c3Z//3V3ff91d33/bnB3/3l7gf9nanT/bnF7/3Bzff9zdXz/bG51/2xudf9sbnX/bnB3/2xudf9sbnX/
    +bG95/3Z4fP9qbXf/bG95/2xvef9wcnn/d3qD/3N1fP9+gIb/c3V8/3N1fP93eoP/dXiB/3t+h/93eoP/
    +c3Z//3N2f/9+gYr/eXyG/3N2f/91eIH/bG95/3V4gf9ucHf/dXd9/3V3ff9wcnn/bG95/3N1fP9wc33/
    +Zmlz/2dqcf9qbXf/eHl9/2xvef9wc33/c3Z//25xe/9zdn//cHN9/3V4gf9sb3n/dXiB/3t9g/91eIH/
    +dXd9/3l7gf95e4H/d3l//35/g/95e4H/d3qD/3d6g/95e4H/eXyG/3d6g/+DhYz/dXiB/3d6g/97fYP/
    +d3qD/3Bzff9wcnn/eXyG/3t+h/9wc33/bnF7/25wd/9wc33/cHN9/3l8hv9vcXX/c3V8/25wd/9tb3P/
    +bG51/3V3ff9sbnX/cHN9/3N2f/9ucHf/bnF7/2ptd/9wc33/cHN9/3Bzff9sb3n/bnF7/3Bzff9vcXX/
    +ZGZs/29xdf9ucHf/cHJ5/3V3ff9ucHf/dXd9/2xudf9ucHf/bG95/2xudf9zdXz/bnF7/3Byef9sbnX/
    +bG51/21vc/9sbnX/cHJ5/2dqcf94eX3/bG95/3t9g/91d33/am13/25xe/91d33/am13/2ptd/9sbnX/
    +bW9z/3V3ff94eX3/dXd9/29yfP9ucHf/bnB3/2ptd/9ydHz/b3F1/3V3ff9ucHf/bnB3/3V3ff9zdXz/
    +Z2px/3Byef9ucXv/dXiB/3Byef9zdn//dXiB/3Byef9sb3n/a254/3Byd/9vcXn/cHJ5/2ttc/9tb3j/
    +bnF7/25xev91d37/cHN8/25weP90dn//cXN5/29yev9ydH3/bnB3/3V3fv9ydX7/b3J8/3F0fv9zdn//
    +dXiB/25xe/93eX//d3l//25xe/9zdXz/bW9z/2dqcf9ucHf/bG51/3V3ff9ucHf/am13/3N1fP9sbnX/
    +cHN9/3N1fP9qbXf/cHJ5/2xudf9rbnf/amx0/2ttc/9kZ3H/Zmlz/2psc/9qbXf/bnF6/3F0fP9rbnf/
    +bXB4/3R2fP9wc33/YGNs/3d6g/9ucXv/Zmlz/2psc/9qbHP/Z2p0/2dqdP9nanT/c3V8/25wd/9sb3n/
    +cHJ5/2dqcf9wc33/Zmlz/2xudf9qbXf/amxz/2ptd/9qbXf/bG95/3N1fP9sbnX/bG51/2Zpc/9qbXf/
    +bG51/2psc/91d33/cHN9/25xe/9qbXf/am13/3Bzff9zdXz/amxz/2psc/9nanH/Z2px/2Zpc/9ucXv/
    +am13/3Bzff9zdXz/cHJ5/2psc/91d33/bnB3/25xe/91d33/dXd9/2xvef9sb3n/bG95/25xe/9qbXf/
    +cHN9/3N2f/95e4H/bG95/3N2f/9wcnn/cHJ5/3d6g/9wc33/foCG/25wd/9vcXX/c3V8/2xudf92eHz/
    +cHJ5/29xdf9sbnX/dXd9/25wd/9wcnn/bG95/2Zpc/9zdXz/bW9z/3Z4fP91d33/bW9z/25wd/91d33/
    +dXd9/2xudf9ucHf/cHJ5/25wd/9qbHP/bG95/25xe/9sbnX/bnF7/2dqcf9nanT/YGNs/2xudf9sb3n/
    +amxz/2psc/9qbXf/amxz/2psc/9sb3n/am13/2xvef9qbHP/cHN9/3N1fP9sb3n/eXuB/2dqcf9nanT/
    +am13/2dqdP9maG7/Zmlz/3Byef9zdXz/bG95/2xvef9tb3P/am13/2ptd/9zdn//am13/2xvef9sb3n/
    +bG51/21vc/91d33/am13/2xvef9zdXz/bG51/2xvef9maXP/bnF7/25xe/9ucXv/am13/2xudf9nanT/
    +Zmhu/2BjbP9qbHP/am13/2ptd/9ucXv/bnB3/3V3ff9sbnX/bG51/25wd/9qbXf/c3V8/25wd/9ucXv/
    +am13/2xvef9sb3n/am13/25xe/9qbXf/dXiB/3N2f/9/gYf/eXyG/3Bzff91eIH/d3l//25wd/9zdXz/
    +bnB3/29xdf9zdXz/dnh8/3V3ff9wcnr/b3F4/3J0ev9tb3f/cXN6/2ttdP9ucXv/bG51/25wd/94eX3/
    +cHJ5/2dqcf9zdXz/c3V8/3N1fP9ucHf/bnB3/3Z4fP9vcXb/bXB6/2xvef9wc3z/cXN7/3Fze/9xdHv/
    +cHJ5/3R2fv92eH7/dHeB/3R3f/9xdHz/eXuA/3d5f/9ydX3/eXyF/3BzfP93eYD/dHd//3Bzff90dn3/
    +cHJ5/25xe/9tcHn/dnh8/3V3gP9ucXr/bnF6/2xvef9rbnj/aWx2/2tueP90dnz/b3F4/25wdP90dnv/
    +bW93/3J0fP9zdXz/bW92/3J0fP9qbXf/bG51/25wdf9ucHb/bG51/2psc/9sbnX/am13/2ptd/9ydHr/
    +Z2pz/2ptd/9xc3n/bG95/2Jlbv99foH/c3V8/2xudf9tb3P/bG51/25wd/9ucHf/bnB3/3V3ff91d33/
    +cHN9/3Byef9maG7/bG95/2Rncf9iZW7/Z2p0/2xudf9qbXf/Z2p0/2xudf9ucXv/amxz/2dqdP9nanT/
    +am13/2dqcf9nanH/cHJ5/25xe/9sb3n/am13/2xudf9ucXv/c3V8/2xvef9qbXf/bnB3/29xdf9ucHf/
    +c3V8/3Byef91d33/bG95/2xvef9nanT/dXd9/29xdf9wcnn/dXd9/3Bzff9qbXf/bG51/2xudf9sb3n/
    +Zmlz/2ptd/9qbXf/cHJ5/2Rncf9qbHP/Z2p0/2ptd/9sb3n/bG95/3d6g/9nanH/Z2px/25xe/9qbHP/
    +d3l//2xvef9qbHP/bG51/3N1fP9sb3n/bG95/25xe/9maXP/bG95/2dqcf9ucXv/bG95/2dqcf9nanT/
    +bnF7/25xe/9maXP/bG51/2ptd/95e4H/cHJ5/3V4gf93eoP/cHJ5/3l7gf9wc33/bnF7/2dqdP9sb3n/
    +c3V8/3Byef9ucHf/c3Z//25xe/9ucXv/cHN9/25xe/9ucXv/bG95/3h5ff94eX3/cHJ5/4CChv9sbnX/
    +bG51/3N1fP9wcnn/bnB3/2xvef91d33/dnh8/3V3ff9wcnn/bG95/3Bzff9zdn//eXyG/3Byef9ucHf/
    +bnB3/25wd/9vcXX/dnh8/25wd/9zdXz/cHJ5/2xudf9wcnn/amxz/3Bzff9zdn//dXd9/25wd/9ucHf/
    +cHJ5/2psc/9kZ3H/bG51/2xvef9nanT/cHN9/2dqdP9sb3n/Z2p0/2xudf9qbHP/Z2p0/25xe/9qbXf/
    +bnF7/2dqcf9qbXf/am13/2Zpc/9qbHP/ZGdx/2xvef9qbXf/c3Z//3N1fP9qbXf/am13/3N1fP9qbXf/
    +bnF7/2ptd/9sbnX/bnF7/3Bzff9ucXv/am11/2xudf9xc3j/a211/3Fzev9tb3T/cHN9/2Zpc/9ucHf/
    +dnh8/3Byef9rbXT/dHZ7/3Bzff90d4D/cHN9/2xvef9zdn//bnB3/25wd/9tcHr/cnV8/29xef9wcnr/
    +cnR6/21vdv9wc3v/c3V7/3V3ff9wc33/bXB6/3N2fv90dnr/bnB1/3V3ff9tb3b/cXN6/3Byef9vcXn/
    +cHJ5/3Byef9xc33/cHN8/3d5f/93eoL/cnV+/3BzfP9ucXr/bXB5/2tueP9tcHn/dnh+/3J0ff9vcnn/
    +dHZ+/21wef9vcXr/b3J8/21vdv9ydX7/bG95/25wd/9tcHn/bW92/2dqdP9nanT/bnB3/25wd/9ucXv/
    +dXd9/2ptdv9rbnf/bnF5/2xvef9iZW7/d3qD/2ptd/9qbXf/am13/2ptd/9qbXf/bG95/2ptd/9wcnn/
    +bG95/2xvef9ucHf/Zmhu/2xvef9iZW7/ZGdx/2psc/9nanH/Zmlz/2Rncf9qbHP/bG95/2psc/9qbHP/
    +Zmlz/2ptd/9qbHP/amxz/3Byef9qbHP/Z2p0/2psc/9iZW7/bG95/3Bzff9qbHP/amxz/2ptd/9sbnX/
    +amxz/25xe/9ucHf/dXd9/29xdf9wcnn/Zmlz/3V3ff9sbnX/bnB3/3N1fP91d33/bnB3/3Byef9vcXX/
    +bnB3/2psc/9sb3n/bnB3/3V4gf9qbHP/bG51/29xdf9sb3n/cHJ5/3Byef+Agob/bG51/2xudf9zdXz/
    +bW9z/3Z4fP9zdXz/bnB3/25wd/94eX3/dXd9/3Byef9zdXz/bnB3/3V3ff9ucHf/dXd9/3Z4fP9vcXX/
    +bG95/3V4gf93eoP/bnF7/2xvef91eIH/eXyG/25xe/93eoP/d3qD/3N1fP97fof/dXiB/3V4gf9ucXv/
    +c3Z//3d6g/9zdn//cHN9/3N2f/9ucXv/bnF7/25xe/9sb3n/cHN9/25wd/94eX3/eHl9/3V3ff9/gYf/
    +bG95/2xvef9wc33/bnF7/25wd/9sbnX/bnF7/25xe/9zdXz/cHJ5/25wd/9wcnn/bnB3/3t+h/9sb3n/
    +bnF7/3V4gf9sb3n/bnB3/3d5f/9ucHf/dXiB/3N2f/9ucXv/cHN9/2ptd/9ucXv/c3V8/3V3ff9ucHf/
    +cHJ5/25wd/9ucHf/bG51/2ptd/9ucXv/cHJ5/3V3ff9sb3n/bG95/2dqdP9qbHP/Zmhu/2Rncf9nanT/
    +amxz/2Zpc/9cX2j/ZGZs/2Zobv9gY2z/amxz/2BjbP9nanT/am13/3V3ff9zdXz/am13/2xudf9sb3n/
    +bG51/2xvef9sbnX/am13/3N1fP9zdXz/c3V8/3Byef94eoD/eHuC/3N1fP93eX7/cnR5/3R2ff9sbnX/
    +dXd9/3d6g/9zdXz/bnB2/3N1ff91d33/dXd9/3N1fP9sbnX/cHJ5/21wev9wc33/b3J7/3R3fv9ucXr/
    +b3J3/3N1ef9rbnf/bnF7/3J0fP9ydX7/bnF6/2tueP9wc3z/b3F6/2lsdP9wcnn/aWx2/21veP9rbnj/
    +bG95/21veP9pa3T/amxz/25wdv9ucHf/b3F2/2hqc/9tb3b/bG92/29xef9nanT/bnB3/3J1ff9vcXr/
    +b3F4/3J0fP9ydHv/c3V7/3N1fP9tb3T/dHZ8/2ttdv9tb3X/a253/2xudf9laHL/ZGdx/2xudf9qbXf/
    +bG95/3V3ff9qbHP/a213/2xudP9ucXv/ZGdx/3t9g/9ucXv/Z2p0/2xudf9qbHP/bnF7/2ptd/9ucXv/
    +d3l//3N1fP91d33/dnh8/2xudf9wcnn/Zmlz/2dqdP9sbnX/bnB3/3Byef9vcXX/cHJ5/3Z4fP9vcXX/
    +bnB3/2xudf9ucHf/am13/2ptd/9zdXz/bG51/2ptd/9qbXf/Z2p0/3Byef94eX3/b3F1/2xudf9sbnX/
    +bW9z/2xudf9wcnn/bnF7/3V3ff9sb3n/cHJ5/2psc/93eX//bW9z/25wd/9wcnn/dXd9/25wd/9wc33/
    +bnF7/25xe/9qbXf/c3V8/3N2f/95fIb/bG95/3Bzff9zdXz/bnF7/3N2f/9zdn//gYSN/3N1fP9ucHf/
    +c3Z//25wd/91eIH/cHN9/25xe/9ucHf/d3l//3d6g/93eoP/eXuB/3Byef9zdn//c3V8/3l7gf95e4H/
    +c3Z//3Bzff95e4H/eXuB/25wd/9ucXv/d3l//3t+h/9zdXz/e32D/3N2f/9sb3n/dnh8/25wd/9zdXz/
    +Zmhu/2xudf9wcnn/cHJ5/25wd/9wcnn/bG51/2xudf9qbXf/bG51/3Byef9ucHf/dXd9/3V3ff9zdXz/
    +f4GH/29xdf9zdXz/cHJ5/25wd/9vcXX/bnB3/3Bzff9wc33/c3Z//3N2f/9ucXv/c3Z//3N2f/9+gYr/
    +c3Z//3N2f/93eoP/d3l//3V3ff9/gYf/dXd9/36Ahv99foH/dXiB/36Ahv9ucXv/d3qD/3l7gf95e4H/
    +dXiB/3d6g/9zdn//dXiB/25xe/9wc33/dXiB/3V4gf9zdn//bG95/3N1fP9ucHf/bnF7/2xvef9ucHf/
    +cHJ5/2xudf9wcnn/Z2px/25wd/9tb3P/Z2p0/25wd/9nanT/cHN9/3N2f/91eIH/d3l//25xe/9sb3n/
    +c3Z//25xe/91d33/bG51/29xdf91d33/dXd9/3N1fP9oa3T/cXR8/3N1ev9tcHn/b3J8/29xd/9zdXz/
    +am13/3V3ff91d33/cHJ5/2xudv9ydHv/cXN6/3J0e/9wcnn/am13/25xe/9rbXP/bW92/21veP9vcnr/
    +bXB6/21weP9ucHX/bG93/3Fze/9zdn7/dnmA/3N2f/9xdH7/d3l//3FzfP9tb3b/c3V6/25wef9xc3j/
    +b3J3/25xef9zdn3/bG94/29xef91d3z/cXN4/3Bydv9qbXb/bXB6/21vd/9ydHv/Z2p0/2ttdP9ucHb/
    +bG51/2hrc/9qbXb/a253/3J1ff9wc33/a210/3R2ff9nanT/aGty/2psc/9sbnX/ZGdx/2Zpc/9sbnX/
    +Z2p0/2xvef9wc33/Zmlz/2xvef9qbXf/bnF7/2Jlbv93eoP/bnF7/2Zpc/9nanH/amxz/3Bzff9sbnX/
    +bnF7/3V3ff9ucXv/bG95/3Byef9qbHP/am13/2Zpc/9kZ3H/Z2px/2dqcf9qbHP/bG51/2dqdP9ucXv/
    +Z2px/2dqcf9maXP/Z2p0/2psc/9nanT/c3V8/2dqdP9qbXf/am13/2Zpc/9qbHP/am13/2dqcf9nanT/
    +Z2p0/2Zobv9maXP/Z2p0/2ptd/9wc33/am13/2xudf9iZW7/c3V8/2Zpc/9ucXv/bnF7/3Bzff9sbnX/
    +cHJ5/2xvef9qbXf/am13/2xudf9sbnX/d3l//2dqdP9sbnX/bG51/2dqdP9qbXf/am13/3t9g/9kZ3H/
    +Zmlz/3Byef9qbHP/c3Z//2xvef9ucHf/bG51/3Z4fP9zdXz/dXd9/3V3ff9vcXX/cHJ5/2xvef9zdn//
    +c3Z//2xvef9qbXf/dXiB/3d5f/9ucHf/cHJ5/3l7gf91eIH/amxz/2xvef9sb3n/amxz/3Bzff9qbHP/
    +bG95/2BjbP9sbnX/cHJ5/2xudf9ucHf/cHJ5/2ptd/9qbHP/am13/2ptd/9ucHf/bnB3/3N1fP9wc33/
    +cHN9/4GDiv9ucHf/c3Z//25xe/9vcXX/b3F1/2ptd/9wcnn/cHJ5/3V3ff91d33/b3F1/2xudf9qbXf/
    +d3qD/2ptd/9sb3n/bnF7/21vc/9sbnX/bnF7/2psc/9sb3n/bnF7/2xudf9wc33/XWBq/2xvef9ucXv/
    +bnF7/2Zpc/9qbXf/bG51/2xvef9kZ3H/amxz/2ptd/9sb3n/bnF7/25wd/91d33/bnB3/25xe/9wc33/
    +bnB3/3Bzff9zdn//d3qD/2xvef95fIb/dXd9/25xe/9zdn//cHN9/3l8hv93eoP/f4KM/3+Bh/97fYP/
    +dXiB/3l8hv93eoP/eXyG/3N2f/9wcnn/dXiB/3l7gf9wc33/bnB3/3R2fv93eYH/c3V+/3R2fv9vcnn/
    +cHN9/2ptd/91eIH/d3qD/3V4gf9wcnn/b3J8/29yfP9wcnn/cHJ5/21vc/9zdXz/b3F1/2xvef9tb3n/
    +cHN7/3J0ff9wc3z/Z2p0/29xef9zdn//bnF7/3d4ff9zdn//cHJ5/3Z4fv9xc3f/am10/2xvef9ucHf/
    +a254/21wev9wcnb/dXd9/25xev9vcnz/dnh//3Fzev9zdX3/Z2p0/25xe/9sb3n/dnh+/2hrdP9ucHf/
    +bXB5/25xe/9sb3n/cHN9/3N2f/94e4X/c3Z//29xdf91d33/c3V8/2xudf9qbXf/bG95/2Zpc/9maXP/
    +bG51/25wd/9wcnn/dXd9/2psc/9ucHf/bG95/3V3ff9maXP/f4GH/3V4gf9wcnn/cHN9/3Bzff93eX//
    +c3Z//3V4gf97fof/eXuB/3t9g/97fYP/d3qD/3l8hv9zdn//cHN9/3N1fP9zdXz/bnF7/25xe/9ucXv/
    +dnh8/25wd/9wcnn/bG95/3N1fP9sbnX/Z2p0/3N1fP9kZ3H/Z2p0/2psc/9kZ3H/am13/2xvef9sbnX/
    +bnF7/3Bzff9sbnX/Z2p0/2ptd/9ucXv/c3V8/25wd/9qbXf/ZGdx/3N1fP9nanT/bG95/25xe/9wc33/
    +bG95/25xe/9qbXf/bnF7/2ptd/9ucHf/b3F1/3d5f/9maG7/b3F1/2xudf9nanT/bnB3/2xvef9/gYf/
    +bG95/25xe/93eoP/cHJ5/3t+h/9wc33/cHN9/25wd/91eIH/dXd9/3N2f/9wc33/cHJ5/3V4gf9zdn//
    +d3l//3V3ff9vcXX/bG51/3V3ff9zdXz/bG51/2psc/9wc33/foGK/3N1fP93eoP/c3Z//25wd/91d33/
    +bnB3/25wd/9kZ3H/bnB3/3N2f/9sb3n/bnB3/3Byef9ucHf/bG95/25wd/9sb3n/bnB3/25wd/9sb3n/
    +cHN9/2xvef9/gYf/cHJ5/3Byef9ucHf/bnB3/3Byef9sb3n/dXiB/3N2f/93eoP/eXuB/3Bzff91eIH/
    +c3Z//3+Bh/9zdn//d3qD/31+gf9zdn//c3Z//3l8hv9zdn//e32D/3V4gf9zdXz/eXuB/2Zpc/93eX//
    +c3Z//3Z4fP9ucHf/bnB3/25wd/9wcnn/am13/25wd/9wcnn/bG51/25xe/9qbXf/bnF7/2xudf9qbXf/
    +amxz/2Zpc/9sb3n/am13/25xe/9maXP/bG95/2xudf9iZW7/bG51/2dqdP9sb3n/cHJ5/3d5f/93eX//
    +am13/2ptd/9qbXf/am13/25xe/9sbnX/Z2p0/25xe/9wc33/cHN9/25vdf9qbHX/bG51/2ptdv9rbnj/
    +Z2pz/2dqdP9kZ3H/am13/3N1fP9sb3n/Zmlz/2psc/9maXP/am13/2Zpc/9qbHP/am13/2psc/9sbnX/
    +Z2p0/21vdv9tcHr/bG95/15ha/9nanH/a210/2ttdP9wcnn/dHZ9/2ptd/9sb3n/aGty/2dqdP9oa3T/
    +amxz/2ptd/9wcnn/bW9z/3Z4fP9qbXf/bnB3/3Z4fP9sbnX/am13/2Rncf9qbXf/am13/3d5f/9nanH/
    +bG51/2xudf9ucHf/bG95/25wd/9ucHf/dXiB/25xe/9sbnX/dXd9/25xe/9tb3P/cHJ5/25wd/9nanH/
    +amxz/29xdf9ucHf/cHJ5/3N1fP9qbXf/am13/2ptd/9sb3n/YmVu/36Ahv9sb3n/Z2p0/2dqdP9qbXf/
    +cHN9/2ptd/9sb3n/dXd9/3V3ff9wcnn/c3V8/3Byef9ucXv/bG95/2ptd/9ucHf/bG95/25xe/9sb3n/
    +bG95/3V3ff9ucHf/bG95/25wd/93eX//bnB3/25wd/97fYP/amxz/25wd/9ucHf/bG51/25wd/9sb3n/
    +bW9z/2xvef9ucXv/Z2p0/2Jlbv9nanH/am13/3Bzff9qbXf/am13/2Rncf9wc33/amxz/2xudf9ucHf/
    +c3V8/2xvef9ucXv/am13/3Bzff9nanT/bG51/21vc/92eHz/Zmhu/2xudf9tb3P/bG51/29xdf9zdXz/
    +f4KM/25xe/9nanT/d3qD/2xvef93eX//cHJ5/2xvef9ucHf/dXiB/3h5ff9zdn//c3Z//3Byef9zdn//
    +dXiB/3t9g/95fIb/cHJ5/3Bzff97fYP/fn+D/3Z4fP9wc33/e32D/3t+h/9wc33/dXiB/3Bzff9ucXv/
    +dXiB/25wd/9wc33/Z2p0/25wd/9wc33/bnB3/2xvef9sb3n/bnB3/2ptd/9qbXf/bnF7/25wd/9sbnX/
    +bG51/3N1fP9wcnn/f4GH/3Byef9wcnn/bnB3/2ptd/9qbXf/Zmlz/2xvef9ucXv/am13/3N1fP9qbHP/
    +Z2p0/2dqcf91eIH/am13/2ptd/9wcnn/bW9z/21vc/9wcnn/bW9z/3Byef9sbnX/bG51/3N1fP9iZW7/
    +c3V8/25xe/9zdXz/bG51/2xvef9sbnX/cHJ5/2xudf9ucHf/c3V8/25wd/9wcnn/cHJ5/3N1fP9tb3P/
    +bnB3/2ptd/9qbXf/c3V8/25xe/9ucXv/am13/2xvef9ucHf/ZGZs/25wd/9sbnX/cHJ5/3V3ff97fYP/
    +eHl9/25wd/9ucHf/bnB3/3Byef9wc33/bW9z/2psc/9zdXz/dXd9/3N1fP9ydHr/Zmlz/2ptd/9oa3X/
    +b3J8/2xvef9ucHf/bnB3/3V3ff93eX//dXd9/25wd/9ucHf/bnF7/3N2f/9ucXv/bnF7/3N2f/9ucHf/
    +bG95/2xvef9vcXX/dXd9/3Byef9kZmz/bW9z/25wd/9ucXv/d3l//3d6g/9wc33/dXiB/3N1fP9wcnn/
    +bG95/3Byef9sbnX/cHJ5/25wd/9zdn//bnB3/25xe/95e4H/bG95/25wd/9qbXf/b3F1/29xdf94eX3/
    +bnB3/25wd/9ucHf/b3F1/3Byef9sb3n/cHJ5/3d5f/9zdXz/bG51/3N1fP9ucXv/bG51/3N1fP9sbnX/
    +Z2p0/2dqdP9sb3n/bnB3/25xe/9wc33/amxz/29xdf9wcnn/c3V8/2Jlbv9/gYf/bnB3/21vc/9sbnX/
    +bG95/3d5f/9wc33/dXiB/3l7gf93eX//c3Z//3V4gf9ucXv/bnF7/25wd/9maXP/bnB3/25xe/9ucXv/
    +cHJ5/2xvef91d33/b3F1/2xudf9ucHf/dnh8/25wd/9sbnX/dXiB/2psc/9sb3n/bG51/2dqdP9qbXf/
    +am13/2psc/9sb3n/bnF7/2ptd/9qbXf/bnF7/25xe/91d33/am13/2ptd/9kZ3H/c3V8/2ptd/9qbHP/
    +am13/25xe/9qbXf/am13/2psc/9sb3n/ZGdx/2xudf9nanT/cHN9/2Rncf9nanT/bG51/2dqdP9qbXf/
    +bnF7/36Ahv9qbXf/Z2p0/3N2f/9sbnX/dXd9/2xvef9qbXf/bW9z/3d5f/93eX//dXd9/3Byef9ucHf/
    +cHN9/3N2f/93eX//dXd9/2xvef9qbXf/dXd9/3V3ff9sb3n/b3F1/3Z4fP93eX//bnB3/3N2f/9ucXv/
    +bnB3/3Bzff9sb3n/bnF7/2Zpc/9sb3n/cHN9/25wd/9wc33/bnB3/2xudf9ucHf/bnB3/3V3ff9wcnn/
    +bW9z/25wd/9zdXz/c3V8/3+Bh/91d33/cHJ5/3N2f/9vcXX/bW9z/2psc/9wcnn/c3V8/3Byef92eHz/
    +bnB3/2ptd/9sbnX/c3Z//2ptd/9sb3n/bnF7/2ptd/9qbHP/c3V8/21vc/9zdXz/bnB3/3Bzff91d33/
    +Zmhu/3Bzff9wc33/eHl9/25wd/9wcnn/b3F1/3Byef9sbnX/bnB3/3Byef9ucHf/bnF7/25xe/95e4H/
    +c3V8/3Bzff9wc33/Z2p0/3Bzff9zdXz/cHJ5/2xudf9wcnn/am13/2Jlbv9qbXf/Z2p0/2xvef9wc33/
    +c3Z//3N1fP9sbnX/bG95/21vc/9ucXv/bnF7/2dqdP9kZ3H/bnF7/3Bzff9ucXv/cnR7/2Rncf9qbHP/
    +am13/3Bzff9sb3n/bnB3/2psc/9zdXz/dXd9/3N1fP9qbXf/bG51/25wd/92eHz/cHJ5/3Byef9zdXz/
    +b3F1/25wd/9nanT/bW9z/25wd/9sb3n/ZGdx/2ptd/9qbXf/am13/25xe/93eX//cHJ5/3N1fP9wcnn/
    +bW9z/21vc/9ucHf/bG51/2Zpc/9nanH/bG95/2dqcf9maXP/bnF7/2psc/9maXP/am13/2xudf9sbnX/
    +c3V8/2psc/9nanT/a253/2xudf9wc33/a254/3Byef91eID/bG95/2xvef91d33/cHJ5/2ptd/9ucXv/
    +bG95/2hrdf9qbXf/bG51/2xudf9qbXf/Z2p0/2Rncf9nanH/a254/2xvef9gY2z/gIKG/2xudf9tb3P/
    +bG51/29xdf91d33/cHJ5/3V3ff91d33/c3Z//3Bzff91d33/cHN9/3Bzff9wcnn/am13/25wd/9zdn//
    +cHN9/3V4gf93eoP/d3l//2ptd/9ucHf/bnB3/3Z4fP9qbHP/bW9z/3Z4fP9sbnX/bnB3/3Byef9qbHP/
    +bnB3/2ptd/9sbnX/bnB3/3N1fP9ucHf/bG51/3N1fP9wcnn/dnh8/3Byef9ucHf/bG51/3N1fP9ucHf/
    +bnB3/25xe/9zdn//c3Z//3Bzff9wc33/d3qD/25xe/91eIH/cHN9/3l8hv9zdXz/dXd9/3l7gf92eHz/
    +eXuB/3t9g/+FiJH/d3qD/3Bzff9/gYf/dXiB/3t+h/91eIH/d3qD/3V4gf9+gYr/e32D/3d6g/9zdn//
    +c3V8/3N2f/9zdn//dnh8/3V4gf9sb3n/bG95/3Z4fP91d33/bG51/21vc/9wcnn/d3l//25xe/91d33/
    +cHJ5/25wd/9ucXv/bnB3/3Byef9nanH/cHN9/3V4gf9wcnn/bnF7/25xe/9ucHf/cHJ5/25xe/91eIH/
    +cHN9/3Byef9ucXv/c3Z//3N2f/9+gIb/dnh8/3Bzff9wc33/b3F1/25wd/9qbXf/c3V8/3V3ff9wcnn/
    +eHl9/25wd/9ucHf/bW9z/3V4gf9ucXv/cHJ5/3N2f/9wcnn/c3V8/3V4gf9wcnn/c3Z//25xe/9wc33/
    +dnh8/2ZobP9zdXz/c3V8/3Z4fP9vcXX/c3V8/2xudf9ucHf/bW9z/2xudf9wcnn/bG51/2xvef9qbXf/
    +c3V8/2Zobv9sb3n/bG51/2Zpc/9qbXf/am13/2ptd/9nanT/am13/2xvef9kZ3H/bG95/2dqdP9ucXv/
    +bnF7/3V3ff94eX3/bG95/3N2f/9sb3n/cHN9/3Bzff9ucHf/Z2p0/3V3ff91d33/dXd9/3h5ff9sbnX/
    +bnB3/2xvef91d33/c3Z//2xvef9qbXf/c3Z//3l7gf91eIH/bnB3/3Byef9wc33/d3l//3Byef9wcnn/
    +cHJ5/21vc/9sbnX/amxz/2xudf9sbnX/bG51/2Zobv9wcnn/bG51/25xe/9ucXv/c3V8/3J0e/9sb3n/
    +bnB3/2xudf9ucHT/bG51/2Zpc/9vcXj/bG51/21vdv9tb3b/bW93/3R2ff9rbnf/aGt1/2dqdP9sbnX/
    +am13/3Fzev9qbHP/a253/2xveP9qbHP/bG95/2xveP9wcnj/dHZ7/21vdf9ydXz/dXd9/3J0ff9sb3n/
    +b3J8/3N1fP9vcXj/b3F4/21vc/9qbXf/bG95/3Byef9ucHf/b3F1/29xeP9zdXz/Z2px/4GDiv9sb3n/
    +bnF7/3Byef9wcnn/dXiB/3N2f/93eoP/e32D/3V4gf9wc33/c3Z//3V3ff9ucHf/b3F1/2psc/9ucHf/
    +bnF7/25wd/9zdn//c3V8/3Z4fP9qbHP/bG51/21vc/92eHz/bG51/29xdf92eHz/amxz/2xudf9wc33/
    +Zmlz/3Byef9qbXf/bnB3/25wd/92eHz/b3F1/25wd/9zdXz/c3V8/3V3ff9wc33/am13/2dqcf9wcnn/
    +bW9z/29xdf9sbnX/cHJ5/2xvef9wcnn/bG51/2xvef9maXP/cHJ5/25wd/94eX3/Zmhu/2xudf9sb3n/
    +Z2p0/2ptd/9sb3n/foCG/25xe/9sbnX/eXuB/2xvef93eX//bG51/25wd/9tb3P/dXd9/3N1fP91d33/
    +bG51/2psc/9zdXz/c3V8/3N1fP9sb3n/amxz/2ptd/92eHz/c3V8/29xdf9ucHf/cHN9/3d6g/9ucXv/
    +d3l//3Bzff9zdXz/cHN9/3Byef9wc33/am13/3Bzff95e4H/dXd9/3V4gf9wc33/cHN9/3V3ff91eIH/
    +eXuB/3N1fP9zdXz/cHN9/3d6g/95e4H/g4WM/3l8hv91eIH/d3qD/3Bzff9zdn//c3V8/3N2f/91eIH/
    +bnB3/3d5f/9sb3n/bnB3/25wd/93eX//bG95/25wd/9wc33/bnB3/25wd/9wc33/bnB3/3Bzff9ucXv/
    +dXiB/3V4gf9nanH/cHN9/3N2f/95e4H/cHJ5/3N2f/9wcnn/cHN9/3N1fP9wcnn/dXiB/25xe/93eoP/
    +bnF7/3V4gf9ucHf/c3Z//3Bzff9qbXf/c3V8/3Bzff91eIH/bG95/2xvef9zdn//bG95/2xvef9qbXf/
    +cHN9/3Byef91eIH/d3l//2xvef9zdn//bnB3/3N2f/9wc33/cHJ5/2ptd/9zdXz/cHJ5/3V3ff92eHz/
    +Z2p0/2ptd/9qbXf/cHN9/2ptd/9sbnX/amxz/3Byef91d33/c3V8/2dqdP9tb3P/bnF7/3V4gf9wc33/
    +cHN9/3d6g/9zdXz/bnF7/25xe/9xc3r/dXiA/3N1fP9tcHr/c3Z//3Z4fv94e4T/enyC/31/hv94eoD/
    +dHeA/3Bzff9ucXv/cHN6/29xef9tcHn/cnR7/25wd/9vcXX/aWx1/2ttdv9wcnn/b3F3/21vdv9sbnb/
    +bW92/21wdv9xc3n/bG50/21vdP9wcnj/bW91/25xef9xdHz/cXR9/3Fzev9vcXj/b3F4/3Z4gP9wc3v/
    +bG95/29yfP9ydHz/cXN7/21wev9ucHf/bnF7/3Byef9wc33/bnB3/25wd/9xc3r/cHJ5/2Zobv+Agob/
    +bG51/2xudf9sbnX/bG51/3N1fP9wcnn/eHl9/3V3ff91d33/c3V8/3Bzff9zdXz/amxz/2psc/9nanT/
    +Z2px/2xudf9sbnX/cHN9/2xudf9wc33/Z2p0/2psc/9sbnX/dXd9/2ptd/9qbHP/c3V8/2ptd/9qbXf/
    +cHN9/2dqdP9ucXv/bnB3/3N1fP9ucHf/dXd9/25wd/9sb3n/c3Z//3N2f/93eX//dXiB/25xe/9sb3n/
    +c3Z//25wd/9wcnn/c3V8/3N2f/9ucXv/c3Z//2xvef9zdXz/Z2px/3Byef9sbnX/cHN9/2Rncf9qbHP/
    +bnF7/2dqcf9qbXf/am13/3V4gf9maXP/ZGdx/3N1fP9nanT/cHJ5/2psc/9nanT/Z2px/3V3ff9zdXz/
    +bnF7/2ptd/9qbXf/cHN9/3N1fP9zdXz/c3V8/25wd/9ucHf/d3qD/3N2f/9ucHf/bG95/3Bzff95e4H/
    +bG95/3V3ff9sb3n/bnB3/25xe/9sb3n/bnB3/2dqcf9vcXX/c3V8/2ptd/9ucHf/bG51/2ptd/9nanT/
    +bG51/3N1fP9sbnX/bW9z/2xudf9zdXz/dXd9/31+gf9zdXz/bG95/2xvef9sbnX/bG51/2ptd/9ucHf/
    +c3V8/2xvef91d33/bnB3/3Byef9sb3n/dXiB/2xvef9sb3n/bnF7/25xe/9ucHf/cHJ5/25wd/9ucXv/
    +bnF7/3V3ff93eoP/ZGdx/3N2f/93eoP/d3qD/25wd/9zdn//bnF7/25xe/9wcnn/bnB3/3Bzff9sbnX/
    +c3V8/25wd/91d33/am13/3Bzff9sbnX/amxz/25wd/9sb3n/bnF7/2ptd/9qbXf/dXd9/2xudf9sbnX/
    +Zmlz/2xvef9sb3n/dXd9/3N1fP9qbXf/bnF7/21vc/9zdXz/cHJ5/25xe/9sb3n/c3Z//3Bzff93eX//
    +eHqA/2hrdf9ucHf/a254/3N2f/9ucHf/bnB3/25wd/9wcnn/eXuB/3V3ff9sbnX/bG51/21vdv91d3z/
    +am13/2psc/9ucXv/amxz/2dqcf9nanT/Z2pz/2dqc/9maHL/YmRt/2Zobv9pbHb/bG53/25wef9wcnr/
    +cHJ5/2tueP9tb3f/bG51/3Fzev9sb3f/bG95/21wev9vcnr/bG53/2xudf9rbnX/b3J6/25wef9ucXn/
    +am13/2tueP9ydHv/cHJ6/25wd/9ucXn/dHZ9/29xdv9wcnr/dHZ9/3BzeP9ucHf/bnB4/29xef93eYD/
    +bnF2/25wd/9xc3v/cXN4/3N1e/9xc3r/cXN6/3N2f/9wc33/d3qD/3Byef9wcnn/cXR9/3Bzff9nanT/
    +f4KM/3Bzff9ucHf/b3F1/21vc/9zdXz/bnB3/3V3ff93eX//cHN9/25xe/9wc33/dXd9/29xdf9ucHf/
    +bnB3/25wd/9vcXX/cHN9/3N2f/9ucXv/dXiB/2xvef9ucXv/bnF7/3l7gf91d33/d3l//35/g/94eX3/
    +eXuB/36Ahv96e3//f4GH/3l8hv9+gYr/eXyG/4CChv97fYP/dXd9/3l8hv99foH/fn+D/35/g/93eX//
    +cHN9/3t9g/9wc33/c3V8/3Byef9wc33/b3F1/3Z4fP9qbXf/bG95/2Jlbv9qbXf/am13/2ptd/9gY2z/
    +Zmlz/2xvef9kZ3H/Zmlz/2xvef93eoP/am13/2Rncf9wc33/ZGdx/2ptd/9maG7/Z2px/2Zobv9zdXz/
    +d3qD/3Bzff9sb3n/amxz/3Byef9zdXz/dnh8/3N1fP9sbnX/bG51/3h5ff9wcnn/bnB3/25wd/9zdXz/
    +d3l//25wd/91d33/bnB3/21vc/9wcnn/bnB3/2xvef9maXP/bnB3/3Byef9sbnX/bnB3/25wd/9wcnn/
    +amxz/25wd/92eHz/bnB3/29xdf9wcnn/cHJ5/3Z4fP9+gIb/c3V8/3Byef9sb3n/bG51/2ptd/9maXP/
    +am13/2xvef9ucXv/cHJ5/2dqcf9nanT/Z2px/3Byef9kZ3H/YGNs/2Zobv9kZ3H/Zmhu/2Zpc/9maG7/
    +Zmlz/2Zobv9sb3n/c3V8/1lcZf9maXP/Zmlz/25wd/9kZ3H/am13/2dqcf9nanH/YmVu/2Jlbv9nanT/
    +Zmhu/2Zpc/9kZ3H/cHJ5/2Zpc/9qbXf/am13/2Rncf9maXP/Z2p0/2xvef9maXP/bG51/3Bzff9maXP/
    +bW9z/2ptd/9sb3n/am13/3Bzff9ucXv/amxz/25xe/9sbnX/cHJ5/2xvef9qbXf/ZGdx/2ptd/9qbXf/
    +c3V8/3F0e/9laHH/bG51/2dqc/9tcHr/amxz/2ptd/9nanT/cHJ5/3l7gf91d33/amxz/2xudf9vcXj/
    +d3h8/3Byef9vcXX/dXd9/21vc/9sbnX/bG95/29yfP9wc3v/bW92/2ptd/9sb3j/c3V7/3V4f/90dnr/
    +c3V8/3Byev9xc3v/c3Z9/29xeP91d4D/bnB4/21wev91d37/dnh//3Fze/9tb3b/bW93/3J0e/9zdn3/
    +cnV+/25xe/9vcnn/cnV//25xe/9wcnr/cHN8/3Z4gf9wcnn/cHJ6/3d6hP9zdXz/cXN9/3Bzff9zdXz/
    +fYCJ/25wd/9sb3n/bG95/29xeP90dnv/b3J7/25wd/9ucHf/bW92/3N1fP9ucHf/bnB3/29yef9wcnn/
    +Z2px/35/g/9ucHf/bG51/21vc/9qbXf/bnF7/2xvef93eX//d3l//3N1fP9ucXv/bnF7/25xe/9nanT/
    +amxz/2Zpc/9nanT/ZGdx/2dqdP9nanT/ZGdx/3Byef9kZ3H/bG51/2xudf9sb3n/Zmlz/2psc/9wc33/
    +amxz/2xudf9zdXz/amxz/2xvef9qbXf/bnF7/2ptd/9sb3n/am13/2xudf9ucXv/cHN9/3Bzff9wc33/
    +am13/2ptd/91d33/bnB3/2xudf9sbnX/bnB3/2xudf92eHz/bG51/25wd/9kZ3H/bG95/3N1fP9sb3n/
    +ZGZs/2ptd/9ucXv/bG51/2ptd/9zdXz/fn+D/2xvef9sb3n/foCG/25xe/91eIH/bnF7/25wd/9vcXX/
    +dXd9/3d5f/9wc33/c3Z//25wd/9zdn//bnF7/3V3ff9ucXv/bG51/29xdf94eX3/c3Z//25wd/9ucXv/
    +c3Z//3l7gf9wcnn/d3l//25xe/9wcnn/cHN9/3N2f/9zdXz/am13/2xvef91d33/bG51/3N1fP9sb3n/
    +bG51/2dqcf9sb3n/dXd9/2psc/9qbXf/bG95/2xvef9wcnn/d3qD/3V3ff91d33/am13/3Byef9wcnn/
    +Z2p0/2xvef9wc33/c3V8/3V4gf9tb3P/bnB3/21vc/92eHz/bW9z/29xdf9sbnX/bnB3/25wd/9qbXf/
    +am13/2ptd/9nanT/c3V8/3d6g/9kZ3H/bG95/2xvef93eoP/Z2p0/25xe/9qbXf/am13/2xudf9sbnX/
    +cHJ5/29xdf9wc33/bnF7/3l8hv9sb3n/cHN9/3N2f/9sb3n/bG95/3N2f/9wc33/bG95/3Bzff93eX//
    +am13/25wd/9vcXX/cHJ5/25wd/9zdXz/c3V8/2xudf9sb3n/bnB3/2xvef9sbnX/amxz/1xfaP9nanH/
    +Z2px/3Bzff9ucXv/a253/2xud/9tb3j/cXR7/21vc/9ucHf/amxz/25xe/93eX//c3V8/2hqdP9rbnf/
    +bXB5/3R2ev9sbnX/bW9z/25wd/9qbHP/cHJ5/29xef9zdX3/cHJ7/21weP9sb3n/bnB3/3N2f/94eoD/
    +b3J7/3N2f/9zdn//eHuF/3l7gf92eH7/fX+F/3R2ff91eH7/enyC/3p8gv94eoH/d3h9/31/hv97fYP/
    +e32D/3x9gf94eoD/dnh8/31/hf94eX7/d3l//3d5f/97fYP/cHN9/3V3ff97fof/cHN9/2xvef9wc33/
    +cHN9/3t+h/9zdXz/c3Z//3d6g/9wc33/d3mA/3J1f/9ucHb/bXB5/21vdv9ucHf/bnB3/25wd/9vcnv/
    +cHJ5/2dqcf9+gIb/bnF7/3N1fP9vcXX/bnF7/3d6g/9wc33/e36H/3l8hv9zdn//cHN9/25xe/91d33/
    +bnB3/25xe/9sb3n/bnF7/2xvef9ucXv/cHN9/3Byef93eX//bG51/2xudf9sbnX/bG95/2dqdP9qbHP/
    +bnF7/2psc/9nanH/am13/2Zpc/9nanT/Z2px/2ptd/9sbnX/bnF7/2xudf9tb3P/cHJ5/3V3ff91d33/
    +dXd9/2xvef9sb3n/dXiB/25wd/9wc33/c3V8/3V4gf9zdn//d3qD/3N2f/95fIb/cHN9/3l8hv97fYP/
    +eXuB/2dqdP9zdn//eXyG/3Bzff91eIH/eXuB/3+Bh/9ucXv/bnB3/35/g/9tb3P/dXd9/3Byef9wcnn/
    +b3F1/3d5f/93eX//bnF7/3Bzff9sb3n/cHJ5/25xe/93eX//c3Z//3Byef9ucHf/dXd9/3N1fP9sb3n/
    +bG95/3N2f/93eX//bnB3/3V3ff9vcXX/bnF7/3Bzff9ucXv/bnB3/2dqdP9ucXv/cHN9/2ptd/91eIH/
    +bG95/2xvef9qbHP/bG95/3V3ff9vcXX/bG51/2xvef9qbXf/cHJ5/3l7gf91d33/bnF7/25wd/9ucHf/
    +cHJ5/2psc/9sbnX/cHN9/3Bzff9zdn//bG51/25xe/9nanH/cHN9/2Zpc/9nanH/Z2px/2xudf9sb3n/
    +am13/2xudf9ucHf/bG51/3V3ff99foH/Zmhu/3N1fP9wcnn/eXuB/2ptd/91d33/bnF7/2ptd/9qbXf/
    +am13/25xe/9ucHf/c3V8/3V3ff95e4H/bnB3/3V3ff92eHz/amxz/2xudf92eHz/bnF7/2xudf9ucHf/
    +c3V8/2dqdP9qbXf/bG51/3N1fP9ucHf/c3V8/3V3ff9ucHf/cHJ5/3Byef9zdXz/bW9z/21vc/9kZmz/
    +bG51/2xvef91d33/bG50/3Byef9vcXb/cXN5/3Fzef9qbXf/bG95/2Zpc/9sb3n/d3l//3N1fP9rbXT/
    +bXB4/29yev9zdXz/bnB3/25wd/9zdn//am13/25xe/9ucHr/cHN7/2xudv9oa3X/a254/2xudf9wc33/
    +dXd9/2xudf9ucHf/bnB3/3Byef91d33/bnB3/3d5f/9ucHf/bG95/3N2f/92eHz/cHJ5/25wd/9wcnn/
    +cHJ5/3Byef9wcnn/bnB3/25wd/9sb3n/bnB3/25wd/91eIH/c3Z//3Byef9ucHf/d3l//29xdf9nanH/
    +bG51/21vc/93eoP/bG51/2ptd/9ucXv/amxz/3N1fP9qbXb/aWt0/29xeP9sb3j/bG51/2xvef9ucHf/
    +bG95/2xvef9nanH/fn+D/25wd/9ucHf/am13/2xudf91d33/bG51/3l7gf91eIH/cHN9/3N2f/9wc33/
    +d3l//2xvef9wc33/bnB3/2xvef9sb3n/bnF7/3Bzff9ucXv/d3l//2ptd/9ucHf/bG95/3Byef9vcXX/
    +b3F1/3N1fP9vcXX/b3F1/3Bzff9nanT/bG51/2ptd/9ucXv/bG51/2xvef9sb3n/bG51/2xudf9sb3n/
    +dXd9/3Bzff9qbXf/am13/3Byef9qbXf/am13/2Zpc/9ucXv/bG95/2xvef9nanT/bnF7/2Rncf9sb3n/
    +bnF7/25xe/9gY2z/Z2p0/2xvef9qbXf/am13/3Bzff93eoP/am13/2ptd/97fYP/bG51/2xvef9ucXv/
    +bG95/2psc/91d33/dXd9/2ptd/9zdXz/bnB3/3Bzff9ucHf/dnh8/25xe/9wcnn/cHJ5/3d6g/9ucXv/
    +cHN9/2xvef9wc33/AA0BAAADAAAAAQEAAAABAQADAAAAAQEAAAABAgADAAAABAAEAKoBAwADAAAAAQAB
    +AAABBgADAAAAAQACAAABEQAEAAAAAgAEALIBEgADAAAAAQABAAABFQADAAAAAQAEAAABFgADAAAAAQCA
    +AAABFwAEAAAAAgAEALoBHAADAAAAAQABAAABUgADAAAAAQABAAABUwADAAAABAAEAMIAAAAAAAgACAAI
    +AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
    +													
    +												
    +											
    +										
    +										
    +									
    +									scrollViewTexturedBackgroundColor
    +								
    +								
    +								0
    +								10
    +								
    +									1
    +									30
    +								
    +								
    +									Helvetica
    +									30
    +									16
    +								
    +							
    +							
    +								
    +								289
    +								{{224, 14}, {25, 25}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Call state
    +									
    +									
    +								
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								-2147483359
    +								{{216, 6}, {41, 41}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Remove
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								8
    +								8
    +								8
    +								8
    +								
    +								
    +									NSImage
    +									call_state_delete_over.png
    +								
    +								
    +									NSImage
    +									call_state_delete_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483359
    +								{{216, 6}, {41, 41}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Pause
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								8
    +								8
    +								8
    +								8
    +								
    +								
    +									NSImage
    +									call_state_play_over.png
    +								
    +								
    +									NSImage
    +									call_state_pause_default.png
    +								
    +								
    +									NSImage
    +									call_state_play_default.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								289
    +								{{262, 12}, {50, 29}}
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Call state
    +									
    +								
    +								IBCocoaTouchFramework
    +								12:34
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +									1
    +									15
    +								
    +								
    +									Helvetica
    +									15
    +									16
    +								
    +							
    +							
    +								
    +								290
    +								{{0, 5}, {200, 40}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Expand
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +								
    +								
    +								
    +								
    +							
    +						
    +						{320, 63}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 300}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				{320, 460}
    +				
    +				
    +				_NS:9
    +				
    +				NO
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						avatarImage
    +						
    +						
    +					
    +					34
    +				
    +				
    +					
    +						addressLabel
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						stateImage
    +						
    +						
    +					
    +					33
    +				
    +				
    +					
    +						stateLabel
    +						
    +						
    +					
    +					32
    +				
    +				
    +					
    +						avatarView
    +						
    +						
    +					
    +					41
    +				
    +				
    +					
    +						headerView
    +						
    +						
    +					
    +					42
    +				
    +				
    +					
    +						backgroundView
    +						
    +						
    +					
    +					46
    +				
    +				
    +					
    +						pauseButton
    +						
    +						
    +					
    +					48
    +				
    +				
    +					
    +						removeButton
    +						
    +						
    +					
    +					50
    +				
    +				
    +					
    +						headerBackgroundImage
    +						
    +						
    +					
    +					54
    +				
    +				
    +					
    +						selectedBackgroundView
    +						
    +						
    +					
    +					58
    +				
    +				
    +					
    +						headerBackgroundHighlightImage
    +						
    +						
    +					
    +					59
    +				
    +				
    +					
    +						doHeaderClick:
    +						
    +						
    +						7
    +					
    +					39
    +				
    +				
    +					
    +						doRemoveClick:
    +						
    +						
    +						7
    +					
    +					51
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						16
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						31
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						avatarView
    +					
    +					
    +						29
    +						
    +						
    +						avatarImage
    +					
    +					
    +						36
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						headerView
    +					
    +					
    +						17
    +						
    +						
    +						addressLabel
    +					
    +					
    +						18
    +						
    +						
    +						stateImage
    +					
    +					
    +						19
    +						
    +						
    +						stateLabel
    +					
    +					
    +						30
    +						
    +						
    +						avatarShadowImage
    +					
    +					
    +						44
    +						
    +						
    +					
    +					
    +						45
    +						
    +						
    +						background
    +					
    +					
    +						47
    +						
    +						
    +						pauseButton
    +					
    +					
    +						49
    +						
    +						
    +						removeButton
    +					
    +					
    +						38
    +						
    +						
    +						toggleButton
    +					
    +					
    +						52
    +						
    +						
    +						headerBackgroundImage
    +					
    +					
    +						56
    +						
    +						
    +						headerBackgroundHighlightImage
    +					
    +				
    +			
    +			
    +				UICallCell
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			75
    +		
    +		
    +			
    +				
    +					UICallCell
    +					UITableViewCell
    +					
    +						id
    +						id
    +					
    +					
    +						
    +							doHeaderClick:
    +							id
    +						
    +						
    +							doRemoveClick:
    +							id
    +						
    +					
    +					
    +						UILabel
    +						UIImageView
    +						UIView
    +						UIImageView
    +						UIImageView
    +						UIView
    +						UIPauseButton
    +						UIButton
    +						UIImageView
    +						UILabel
    +					
    +					
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +						
    +							avatarView
    +							UIView
    +						
    +						
    +							headerBackgroundHighlightImage
    +							UIImageView
    +						
    +						
    +							headerBackgroundImage
    +							UIImageView
    +						
    +						
    +							headerView
    +							UIView
    +						
    +						
    +							pauseButton
    +							UIPauseButton
    +						
    +						
    +							removeButton
    +							UIButton
    +						
    +						
    +							stateImage
    +							UIImageView
    +						
    +						
    +							stateLabel
    +							UILabel
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICallCell.h
    +					
    +				
    +				
    +					UIPauseButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIPauseButton.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{640, 523}
    +			{320, 339}
    +			{43, 43}
    +			{43, 43}
    +			{43, 50}
    +			{43, 46}
    +			{43, 46}
    +			{640, 125}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/LinphoneUI/UIConferenceHeader/1/UIConferenceHeader.xib b/linphone.ldb/Resources/LinphoneUI/UIConferenceHeader/1/UIConferenceHeader.xib
    new file mode 100644
    index 000000000..3fa734501
    --- /dev/null
    +++ b/linphone.ldb/Resources/LinphoneUI/UIConferenceHeader/1/UIConferenceHeader.xib
    @@ -0,0 +1,286 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						292
    +						{320, 68}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Conference
    +							
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							header_conference.png
    +						
    +					
    +					
    +						
    +						292
    +						{{224, 14}, {25, 25}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						{{216, 6}, {41, 41}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Pause
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						NO
    +						8
    +						8
    +						8
    +						8
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							call_state_play_over.png
    +						
    +						
    +							NSImage
    +							call_state_pause_default.png
    +						
    +						
    +							NSImage
    +							call_state_play_default.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +				
    +				{320, 68}
    +				
    +				
    +				
    +				_NS:9
    +				
    +					3
    +					MQA
    +					
    +						2
    +					
    +				
    +				NO
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					5
    +				
    +				
    +					
    +						stateImage
    +						
    +						
    +					
    +					9
    +				
    +				
    +					
    +						pauseButton
    +						
    +						
    +					
    +					14
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						7
    +						
    +						
    +						backgroundImage
    +					
    +					
    +						8
    +						
    +						
    +						stateImage
    +					
    +					
    +						13
    +						
    +						
    +						pauseButton
    +					
    +				
    +			
    +			
    +				UIConferenceHeader
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIPauseButton
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			14
    +		
    +		
    +			
    +				
    +					UIConferenceHeader
    +					UIViewController
    +					
    +						UIPauseButton
    +						UIImageView
    +					
    +					
    +						
    +							pauseButton
    +							UIPauseButton
    +						
    +						
    +							stateImage
    +							UIImageView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIConferenceHeader.h
    +					
    +				
    +				
    +					UIPauseButton
    +					UIToggleButton
    +					
    +						IBProjectSource
    +						./Classes/UIPauseButton.h
    +					
    +				
    +				
    +					UIToggleButton
    +					UIButton
    +					
    +						IBProjectSource
    +						./Classes/UIToggleButton.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{43, 50}
    +			{43, 46}
    +			{43, 46}
    +			{640, 135}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/LinphoneUI/UIContactDetailsFooter/1/UIContactDetailsFooter.xib b/linphone.ldb/Resources/LinphoneUI/UIContactDetailsFooter/1/UIContactDetailsFooter.xib
    new file mode 100644
    index 000000000..57c5e91bd
    --- /dev/null
    +++ b/linphone.ldb/Resources/LinphoneUI/UIContactDetailsFooter/1/UIContactDetailsFooter.xib
    @@ -0,0 +1,220 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						301
    +						{{23, 25}, {275, 50}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						NO
    +						
    +							Remove
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						Remove Contact
    +						
    +							3
    +							MQA
    +						
    +						
    +							NSImage
    +							button_alert_background_over.png
    +						
    +						
    +							NSImage
    +							button_alert_background_default.png
    +						
    +						
    +							2
    +							26
    +						
    +						
    +							Helvetica-Bold
    +							26
    +							16
    +						
    +					
    +				
    +				{320, 80}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				YES
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						removeButton
    +						
    +						
    +					
    +					6
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					7
    +				
    +				
    +					
    +						onRemoveClick:
    +						
    +						
    +						7
    +					
    +					10
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +						
    +						
    +					
    +					
    +						5
    +						
    +						
    +						removeButton
    +					
    +				
    +			
    +			
    +				UIContactDetailsFooter
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			10
    +		
    +		
    +			
    +				
    +					UIContactDetailsFooter
    +					UIViewController
    +					
    +						onRemoveClick:
    +						id
    +					
    +					
    +						onRemoveClick:
    +						
    +							onRemoveClick:
    +							id
    +						
    +					
    +					
    +						id
    +						UIButton
    +					
    +					
    +						
    +							contactDetailsDelegate
    +							id
    +						
    +						
    +							removeButton
    +							UIButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIContactDetailsFooter.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{550, 101}
    +			{550, 101}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/LinphoneUI/UIContactDetailsHeader/1/UIContactDetailsHeader.xib b/linphone.ldb/Resources/LinphoneUI/UIContactDetailsHeader/1/UIContactDetailsHeader.xib
    new file mode 100644
    index 000000000..6e7ff2aca
    --- /dev/null
    +++ b/linphone.ldb/Resources/LinphoneUI/UIContactDetailsHeader/1/UIContactDetailsHeader.xib
    @@ -0,0 +1,504 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUILabel
    +			IBUITableView
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						292
    +						{{-13, -5}, {131, 107}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							avatar_shadow_small.png
    +						
    +					
    +					
    +						
    +						292
    +						{{20, 6}, {65, 65}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							avatar_unknown_small.png
    +						
    +					
    +					
    +						
    +						292
    +						{{20, 6}, {65, 65}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Contact's avatar
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						
    +							3
    +							MQA
    +						
    +						
    +							1
    +							MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +						
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								290
    +								{{0, 37}, {199, 43}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Contact's name
    +								
    +								IBCocoaTouchFramework
    +								Contact1
    +								
    +									3
    +									MC4zMzMzMzMzMzMzAA
    +								
    +								
    +								0
    +								10
    +								
    +									1
    +									22
    +								
    +								
    +									Helvetica
    +									22
    +									16
    +								
    +							
    +						
    +						{{101, 0}, {219, 80}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								274
    +								{219, 130}
    +								
    +								
    +								
    +								_NS:9
    +								
    +									10
    +									
    +										549453824
    +										{512, 1}
    +										
    +											
    +												
    +												
    +													
    +														TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    +y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    +y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    +xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    +xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    +xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    +xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    +xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA
    +AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA
    +AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI
    +AAgACAAIAAEAAQABAAE
    +													
    +												
    +											
    +										
    +										
    +									
    +									groupTableViewBackgroundColor
    +								
    +								YES
    +								IBCocoaTouchFramework
    +								YES
    +								1
    +								2
    +								0
    +								YES
    +								44
    +								10
    +								10
    +							
    +						
    +						{{101, 0}, {219, 130}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 130}
    +				
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					5
    +				
    +				
    +					
    +						avatarImage
    +						
    +						
    +					
    +					9
    +				
    +				
    +					
    +						editView
    +						
    +						
    +					
    +					16
    +				
    +				
    +					
    +						normalView
    +						
    +						
    +					
    +					17
    +				
    +				
    +					
    +						tableView
    +						
    +						
    +					
    +					20
    +				
    +				
    +					
    +						addressLabel
    +						
    +						
    +					
    +					21
    +				
    +				
    +					
    +						dataSource
    +						
    +						
    +					
    +					18
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					19
    +				
    +				
    +					
    +						onAvatarClick:
    +						
    +						
    +						7
    +					
    +					23
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						6
    +						
    +						
    +						avatarImage
    +					
    +					
    +						7
    +						
    +						
    +						avatarShadowBackground
    +					
    +					
    +						13
    +						
    +						
    +							
    +						
    +						
    +						editView
    +					
    +					
    +						12
    +						
    +						
    +							
    +						
    +						
    +						normalView
    +					
    +					
    +						8
    +						
    +						
    +						addressLabel
    +					
    +					
    +						15
    +						
    +						
    +					
    +					
    +						22
    +						
    +						
    +						avatarButton
    +					
    +				
    +			
    +			
    +				UIContactDetailsHeader
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			23
    +		
    +		
    +			
    +				
    +					UIContactDetailsHeader
    +					UIViewController
    +					
    +						onAvatarClick:
    +						id
    +					
    +					
    +						onAvatarClick:
    +						
    +							onAvatarClick:
    +							id
    +						
    +					
    +					
    +						UILabel
    +						UIImageView
    +						id
    +						UIView
    +						UIView
    +						UITableView
    +					
    +					
    +						
    +							addressLabel
    +							UILabel
    +						
    +						
    +							avatarImage
    +							UIImageView
    +						
    +						
    +							contactDetailsDelegate
    +							id
    +						
    +						
    +							editView
    +							UIView
    +						
    +						
    +							normalView
    +							UIView
    +						
    +						
    +							tableView
    +							UITableView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIContactDetailsHeader.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{262, 214}
    +			{131, 131}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/LinphoneUI/UIMainBar/1/UIMainBar.xib b/linphone.ldb/Resources/LinphoneUI/UIMainBar/1/UIMainBar.xib
    new file mode 100644
    index 000000000..6fb85e091
    --- /dev/null
    +++ b/linphone.ldb/Resources/LinphoneUI/UIMainBar/1/UIMainBar.xib
    @@ -0,0 +1,812 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUILabel
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 11}, {320, 66}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMDkwOTI0NTczOTEAA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						290
    +						{{0, 77}, {320, 2000}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +						
    +						28
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						{64, 77}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							History
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							history_over.png
    +						
    +						
    +							NSImage
    +							history_selected.png
    +						
    +						
    +							NSImage
    +							history_default.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									history_notification.png
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									History missed
    +									
    +								
    +								IBCocoaTouchFramework
    +								99
    +								
    +									3
    +									MQA
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +									1
    +									14
    +								
    +								
    +									Helvetica
    +									14
    +									16
    +								
    +							
    +						
    +						{{38, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						NO
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						{{64, 0}, {64, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Contacts
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							contacts_over.png
    +						
    +						
    +							NSImage
    +							contacts_selected.png
    +						
    +						
    +							NSImage
    +							contacts_default.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{192, 0}, {64, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Settings
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							settings_over.png
    +						
    +						
    +							NSImage
    +							settings_selected.png
    +						
    +						
    +							NSImage
    +							settings_default.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{128, 0}, {64, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Dialer
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							dialer_over.png
    +						
    +						
    +							NSImage
    +							dialer_selected.png
    +						
    +						
    +							NSImage
    +							dialer_default.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{256, 0}, {64, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Chat
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							chat_over.png
    +						
    +						
    +							NSImage
    +							chat_selected.png
    +						
    +						
    +							NSImage
    +							chat_default.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Chat missed
    +									
    +								
    +								IBCocoaTouchFramework
    +								99
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +								
    +							
    +						
    +						{{261, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						NO
    +						NO
    +						IBCocoaTouchFramework
    +					
    +				
    +				{320, 77}
    +				
    +				
    +				
    +				_NS:9
    +				
    +					1
    +					MCAxIDAuMTkxOTQ1NDc1NSAwAA
    +				
    +				NO
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						historyButton
    +						
    +						
    +					
    +					13
    +				
    +				
    +					
    +						view
    +						
    +						
    +					
    +					14
    +				
    +				
    +					
    +						contactsButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						chatButton
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						settingsButton
    +						
    +						
    +					
    +					29
    +				
    +				
    +					
    +						dialerButton
    +						
    +						
    +					
    +					12
    +				
    +				
    +					
    +						historyNotificationLabel
    +						
    +						
    +					
    +					35
    +				
    +				
    +					
    +						historyNotificationView
    +						
    +						
    +					
    +					36
    +				
    +				
    +					
    +						chatNotificationLabel
    +						
    +						
    +					
    +					40
    +				
    +				
    +					
    +						chatNotificationView
    +						
    +						
    +					
    +					41
    +				
    +				
    +					
    +						portraitView
    +						
    +						
    +					
    +					43
    +				
    +				
    +					
    +						onChatClick:
    +						
    +						
    +						7
    +					
    +					26
    +				
    +				
    +					
    +						onHistoryClick:
    +						
    +						
    +						7
    +					
    +					22
    +				
    +				
    +					
    +						onDialerClick:
    +						
    +						
    +						7
    +					
    +					24
    +				
    +				
    +					
    +						onContactsClick:
    +						
    +						
    +						7
    +					
    +					23
    +				
    +				
    +					
    +						onSettingsClick:
    +						
    +						
    +						7
    +					
    +					25
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +						
    +						mask
    +					
    +					
    +						5
    +						
    +						
    +						chat
    +					
    +					
    +						6
    +						
    +						
    +						history
    +					
    +					
    +						8
    +						
    +						
    +						contacts
    +					
    +					
    +						9
    +						
    +						
    +						settings
    +					
    +					
    +						7
    +						
    +						
    +						dialer
    +					
    +					
    +						32
    +						
    +						
    +							
    +							
    +						
    +						
    +						historyNotificationView
    +					
    +					
    +						33
    +						
    +						
    +						historyNotificationImage
    +					
    +					
    +						34
    +						
    +						
    +						historyNotificationLabel
    +					
    +					
    +						37
    +						
    +						
    +							
    +							
    +						
    +						
    +						chatNotificationView
    +					
    +					
    +						38
    +						
    +						
    +						chatNotificationLabel
    +					
    +					
    +						39
    +						
    +						
    +						chatNotificationImage
    +					
    +					
    +						45
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				UIMainBar
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			45
    +		
    +		
    +			
    +				
    +					TPMultiLayoutViewController
    +					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					UIMainBar
    +					TPMultiLayoutViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onChatClick:
    +							id
    +						
    +						
    +							onContactsClick:
    +							id
    +						
    +						
    +							onDialerClick:
    +							id
    +						
    +						
    +							onHistoryClick:
    +							id
    +						
    +						
    +							onSettingsClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +						UIButton
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +					
    +					
    +						
    +							chatButton
    +							UIButton
    +						
    +						
    +							chatNotificationLabel
    +							UILabel
    +						
    +						
    +							chatNotificationView
    +							UIView
    +						
    +						
    +							contactsButton
    +							UIButton
    +						
    +						
    +							dialerButton
    +							UIButton
    +						
    +						
    +							historyButton
    +							UIButton
    +						
    +						
    +							historyNotificationLabel
    +							UILabel
    +						
    +						
    +							historyNotificationView
    +							UIView
    +						
    +						
    +							settingsButton
    +							UIButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIMainBar.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{43, 43}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +			{128, 154}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/1/UIMainBar~ipad.xib b/linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/1/UIMainBar~ipad.xib
    new file mode 100644
    index 000000000..430d80158
    --- /dev/null
    +++ b/linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/1/UIMainBar~ipad.xib
    @@ -0,0 +1,1271 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUILabel
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBIPadFramework
    +			
    +			
    +				IBFirstResponder
    +				IBIPadFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 11}, {768, 66}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMDkwOTI0NTczOTEAA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						290
    +						{{0, 77}, {768, 2000}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +						
    +						28
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						{175, 77}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						1
    +						
    +							History
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							history_over~ipad.png
    +						
    +						
    +							NSImage
    +							history_selected~ipad.png
    +						
    +						
    +							NSImage
    +							history_default~ipad.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBIPadFramework
    +								
    +									NSImage
    +									history_notification.png
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									History missed
    +									
    +								
    +								IBIPadFramework
    +								99
    +								
    +									3
    +									MQA
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +									1
    +									14
    +								
    +								
    +									Helvetica
    +									14
    +									16
    +								
    +							
    +						
    +						{{140, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						NO
    +						2
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						{{175, 0}, {175, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						3
    +						
    +							Contacts
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							contacts_over~ipad.png
    +						
    +						
    +							NSImage
    +							contacts_selected~ipad.png
    +						
    +						
    +							NSImage
    +							contacts_default~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						288
    +						{{350, -1}, {68, 80}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						4
    +						
    +							Dialer
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							dialer_over.png
    +						
    +						
    +							NSImage
    +							dialer_selected
    +						
    +						
    +							NSImage
    +							dialer_default.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{418, 0}, {175, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						5
    +						
    +							Settings
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							settings_over~ipad.png
    +						
    +						
    +							NSImage
    +							settings_selected~ipad.png
    +						
    +						
    +							NSImage
    +							settings_default~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{593, 0}, {175, 77}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						6
    +						
    +							Chat
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							chat_over~ipad.png
    +						
    +						
    +							NSImage
    +							chat_selected~ipad.png
    +						
    +						
    +							NSImage
    +							chat_default~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBIPadFramework
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								
    +									Chat missed
    +									
    +								
    +								IBIPadFramework
    +								99
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +								
    +							
    +						
    +						{{605, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						NO
    +						7
    +						NO
    +						IBIPadFramework
    +					
    +				
    +				{768, 77}
    +				
    +				
    +				
    +				_NS:9
    +				
    +					1
    +					MCAxIDAuMTkxOTQ1NDc1NSAwAA
    +				
    +				NO
    +				IBIPadFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						-2147483356
    +						{{0, 19}, {1024, 67}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MCAxIDAuMDkwOTI0NTczOTEAA
    +						
    +						NO
    +						NO
    +						NO
    +						-1
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						290
    +						{{0, 86}, {1024, 2000}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							1
    +							MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +						
    +						28
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						{240, 86}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						1
    +						
    +							History
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							history_over_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							history_selected_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							history_default_landscape~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBIPadFramework
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								IBIPadFramework
    +								99
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +								
    +							
    +						
    +						{{208, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						NO
    +						2
    +						NO
    +						IBIPadFramework
    +					
    +					
    +						
    +						292
    +						{{240, 0}, {240, 86}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						3
    +						
    +							Contacts
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							contacts_over_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							contacts_selected_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							contacts_default_landscape~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						288
    +						{{480, 8}, {68, 80}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						4
    +						
    +							Dialer
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{544, 0}, {240, 86}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						5
    +						
    +							Settings
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							settings_over_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							settings_selected_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							settings_default_landscape~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						292
    +						{{784, 0}, {240, 86}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						6
    +						
    +							Chat
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						
    +						
    +							NSImage
    +							chat_over_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							chat_selected_landscape~ipad.png
    +						
    +						
    +							NSImage
    +							chat_default_landscape~ipad.png
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483356
    +						
    +							
    +								
    +								274
    +								{21, 21}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBIPadFramework
    +								
    +							
    +							
    +								
    +								256
    +								{{2, 2}, {17, 17}}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								YES
    +								7
    +								NO
    +								IBIPadFramework
    +								99
    +								
    +								
    +								0
    +								10
    +								1
    +								
    +								
    +							
    +						
    +						{{792, 1}, {21, 21}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						NO
    +						7
    +						NO
    +						IBIPadFramework
    +					
    +				
    +				{1024, 86}
    +				
    +				
    +				
    +				_NS:9
    +				
    +					1
    +					MCAxIDAuMTkxOTQ1NDc1NSAwAA
    +				
    +				NO
    +				IBIPadFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					41
    +				
    +				
    +					
    +						portraitView
    +						
    +						
    +					
    +					42
    +				
    +				
    +					
    +						landscapeView
    +						
    +						
    +					
    +					43
    +				
    +				
    +					
    +						chatButton
    +						
    +						
    +					
    +					44
    +				
    +				
    +					
    +						chatNotificationView
    +						
    +						
    +					
    +					45
    +				
    +				
    +					
    +						chatNotificationLabel
    +						
    +						
    +					
    +					46
    +				
    +				
    +					
    +						contactsButton
    +						
    +						
    +					
    +					47
    +				
    +				
    +					
    +						dialerButton
    +						
    +						
    +					
    +					48
    +				
    +				
    +					
    +						historyButton
    +						
    +						
    +					
    +					49
    +				
    +				
    +					
    +						historyNotificationLabel
    +						
    +						
    +					
    +					50
    +				
    +				
    +					
    +						historyNotificationView
    +						
    +						
    +					
    +					51
    +				
    +				
    +					
    +						settingsButton
    +						
    +						
    +					
    +					52
    +				
    +				
    +					
    +						onDialerClick:
    +						
    +						
    +						7
    +					
    +					60
    +				
    +				
    +					
    +						onChatClick:
    +						
    +						
    +						7
    +					
    +					56
    +				
    +				
    +					
    +						onHistoryClick:
    +						
    +						
    +						7
    +					
    +					58
    +				
    +				
    +					
    +						onContactsClick:
    +						
    +						
    +						7
    +					
    +					57
    +				
    +				
    +					
    +						onSettingsClick:
    +						
    +						
    +						7
    +					
    +					59
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						2
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						Portrait View
    +					
    +					
    +						3
    +						
    +						
    +							
    +							
    +						
    +						
    +						chatNotificationView
    +					
    +					
    +						4
    +						
    +						
    +							
    +							
    +						
    +						
    +						historyNotificationView
    +					
    +					
    +						5
    +						
    +						
    +						dialer
    +					
    +					
    +						6
    +						
    +						
    +						
    +						mask
    +					
    +					
    +						7
    +						
    +						
    +						chat
    +					
    +					
    +						8
    +						
    +						
    +						history
    +					
    +					
    +						9
    +						
    +						
    +						contacts
    +					
    +					
    +						11
    +						
    +						
    +						historyNotificationLabel
    +					
    +					
    +						12
    +						
    +						
    +						historyNotificationImage
    +					
    +					
    +						13
    +						
    +						
    +						chatNotificationImage
    +					
    +					
    +						14
    +						
    +						
    +						chatNotificationLabel
    +					
    +					
    +						10
    +						
    +						
    +						settings
    +					
    +					
    +						28
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						Landscape View
    +					
    +					
    +						29
    +						
    +						
    +							
    +							
    +						
    +						
    +						chatNotificationView
    +					
    +					
    +						30
    +						
    +						
    +						settings
    +					
    +					
    +						31
    +						
    +						
    +						contacts
    +					
    +					
    +						32
    +						
    +						
    +						history
    +					
    +					
    +						33
    +						
    +						
    +						chat
    +					
    +					
    +						34
    +						
    +						
    +						
    +						mask
    +					
    +					
    +						36
    +						
    +						
    +							
    +							
    +						
    +						
    +						historyNotificationView
    +					
    +					
    +						37
    +						
    +						
    +						historyNotificationImage
    +					
    +					
    +						38
    +						
    +						
    +						historyNotificationLabel
    +					
    +					
    +						39
    +						
    +						
    +						chatNotificationLabel
    +					
    +					
    +						40
    +						
    +						
    +						chatNotificationImage
    +					
    +					
    +						35
    +						
    +						
    +						dialer
    +					
    +					
    +						61
    +						
    +						
    +						background
    +					
    +					
    +						62
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				UIMainBar
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +			
    +			
    +			
    +			
    +			
    +			62
    +		
    +		
    +			
    +				
    +					TPMultiLayoutViewController
    +					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					UIMainBar
    +					TPMultiLayoutViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onChatClick:
    +							id
    +						
    +						
    +							onContactsClick:
    +							id
    +						
    +						
    +							onDialerClick:
    +							id
    +						
    +						
    +							onHistoryClick:
    +							id
    +						
    +						
    +							onSettingsClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +						UIButton
    +						UIButton
    +						UILabel
    +						UIView
    +						UIButton
    +					
    +					
    +						
    +							chatButton
    +							UIButton
    +						
    +						
    +							chatNotificationLabel
    +							UILabel
    +						
    +						
    +							chatNotificationView
    +							UIView
    +						
    +						
    +							contactsButton
    +							UIButton
    +						
    +						
    +							dialerButton
    +							UIButton
    +						
    +						
    +							historyButton
    +							UIButton
    +						
    +						
    +							historyNotificationLabel
    +							UILabel
    +						
    +						
    +							historyNotificationView
    +							UIView
    +						
    +						
    +							settingsButton
    +							UIButton
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UIMainBar.h
    +					
    +				
    +			
    +		
    +		0
    +		IBIPadFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{480, 170}
    +			{353, 153}
    +			{480, 170}
    +			{353, 153}
    +			{480, 170}
    +			{353, 153}
    +			{480, 171}
    +			{352, 153}
    +			{480, 171}
    +			{352, 153}
    +			{480, 171}
    +			{352, 153}
    +			{128, 154}
    +			{128, 154}
    +			{16, 16}
    +			{480, 171}
    +			{353, 153}
    +			{43, 43}
    +			{480, 171}
    +			{353, 153}
    +			{480, 171}
    +			{353, 153}
    +			{480, 171}
    +			{350, 153}
    +			{480, 171}
    +			{350, 153}
    +			{480, 171}
    +			{350, 153}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings b/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings
    new file mode 100644
    index 0000000000000000000000000000000000000000..3b8e89a40903c581ae655e5f4f8debcc5bb8b95c
    GIT binary patch
    literal 12704
    zcmd^FYikoh6rIog6+x7$NJT$ZL~E^5u(eo41VLi9k7%+fo5a*VubwkElX+y;Y}LCh
    zme6!FkDW93eecZAANS2&(=q#Igzp}{hxixqdw~
    zd%!WqhqO$QqC_8y(xZ9(tIgEMf(^C524T$vOVE7r3T(*=(HT;4?sr;&sRvZk}z
    zLH-S#r#uw+e=+o{XKL+$a!Sh|^4zy+ty;nw%Z}~Ph
    z_iWE8T6@sx4tyu&tHM*)YKNCL`hKbh}wXwu6?vGY(
    z1b#7YIKY?3Fo@t6!%ktPhP9I8;$pCQo}_Ky#=S@I7jwWH>wR}Lm(5c?=Yqm
    zcj$5>wGevCMQvs-P(_lE@7G6@^WWRXqY3-9&`734tJa4tU*(^-K|5wvtHxg@T4rw4
    zi!d{3hC7_8w*&F4C1@B%_Cy%>w1Xh@SD~)PXyQ>i$l@H%TQCG>U76!}fhP3tzqQyPiMEM^WI
    zCt2nh{3Rne_kL%yJM&Rf`xbgy^54bq9tUH_0`EJrG^6(H!pH8|)%%ErHq95j=@ff;
    ziZSPS!w{{EqBqdSNHNsW>r8|HNvbG$rOhTNH>|=@qZoxz&P4vMgJfMDI%r83{gv1q
    zpAnvc)8sd6I2EM8Thbj!MU(Muq7^x;fQ+^&^v8L$%j0#>zJTqoKt*Oh%h>Y0I!JcS
    zw)tfC;Co&Myo_75R^H359JXq$Tv{K@Xh8CO=NY{;@1lo(IyXiS)oL#sBWyBW2kk3s
    z2lDcp>(fE851pROZ4oP11voYX=RB3_N3?@z2YQ}nq$#Fwj20?Zt0>E?0J4sCif_hf
    zA*JfaXrgjaZ(3_yj*>%fvk&}Xq{=G3uT$pdUdAq1Yh|QQS~tg^&eB6(cTyG0Mg1rp
    zWUoPTlN*!{G_7Wa~T^a8WHsQ4d&G=2;4T&2(|%
    z*|XVwdVbQ>w#9Who^`wR(>y<{amV%W>$3YcBuVlZiT&KU#7o4;dsb#xDH#OzDdt17
    zxjMUe0~t;49C$mL@6|_AL1+BAaQ^fu#P+-KmxWg9ba`6l@wyppBc{c2HN+G645`mF
    zL0&ggX9tJY$ISvg@-12`N_{o1YkJCfYaP}-wR~58HF9eeA{nDgBl;a*cjkEzC5bWm
    zDZb^N&oa(tv$T*epU{U0bGfprFBt#S~T#sgeqX%RJnTzpk|ov>49D
    z@@^L8#r^J>_c(=nfj@WF@*XW)xEXzs6TnpWu0CEJZoLC#zv3^g8m8@9tBb#MCjhh-
    zgSnqA<~P{SVK;bA5Jm;>@QZe&={z0uA3(L~T(ZN=nJ2(gWFc~{oU1vy^XaEmQ07-X**I1@vMixBvhE
    
    literal 0
    HcmV?d00001
    
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index a5abaaa91..39909ec2c 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -25,7 +25,6 @@
     		2214EB8912F84EBB002A5394 /* UIHangUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */; };
     		2214EBF312F86360002A5394 /* UIMicroButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EBF212F86360002A5394 /* UIMicroButton.m */; };
     		2218A92512FBE1340088A667 /* FirstLoginViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 2218A92312FBE1340088A667 /* FirstLoginViewController.m */; };
    -		2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; };
     		22276E8313C73D3100210156 /* libavcodec.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8013C73D3100210156 /* libavcodec.a */; };
     		22276E8413C73D3100210156 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8113C73D3100210156 /* libavutil.a */; };
     		22276E8513C73D3100210156 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8213C73D3100210156 /* libswscale.a */; };
    @@ -33,8 +32,6 @@
     		22276E8913C73DC000210156 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22276E8813C73DC000210156 /* CoreMedia.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
     		223148E41178A08200637D6A /* libilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E31178A08200637D6A /* libilbc.a */; };
     		223148E61178A09900637D6A /* libmsilbc.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 223148E51178A09900637D6A /* libmsilbc.a */; };
    -		2234C8CA15ED049A00E18E83 /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8C715ED049A00E18E83 /* DialerViewController.xib */; };
    -		2234C8CB15ED049A00E18E83 /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8C715ED049A00E18E83 /* DialerViewController.xib */; };
     		2234C8E915EE2F7F00E18E83 /* chat_message_delivered.png in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8E715EE2F7F00E18E83 /* chat_message_delivered.png */; };
     		2234C8EA15EE2F7F00E18E83 /* chat_message_delivered.png in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8E715EE2F7F00E18E83 /* chat_message_delivered.png */; };
     		2234C8EB15EE2F7F00E18E83 /* chat_message_not_delivered.png in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8E815EE2F7F00E18E83 /* chat_message_not_delivered.png */; };
    @@ -147,7 +144,6 @@
     		70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; };
     		C90FAA7915AF54E6002091CB /* HistoryDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C90FAA7715AF54E6002091CB /* HistoryDetailsViewController.m */; };
     		C90FAA7A15AF54E6002091CB /* HistoryDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = C90FAA7715AF54E6002091CB /* HistoryDetailsViewController.m */; };
    -		C90FAA7B15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */; };
     		C9C8254315AE204D00D493FA /* options_add_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8253F15AE204D00D493FA /* options_add_disabled.png */; };
     		C9C8254515AE204D00D493FA /* options_transfer_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254015AE204D00D493FA /* options_transfer_disabled.png */; };
     		C9C8254715AE204D00D493FA /* transfer_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = C9C8254115AE204D00D493FA /* transfer_call_default.png */; };
    @@ -160,7 +156,6 @@
     		D3119E7415B6A4710005D4A4 /* contacts_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3119E7115B6A4710005D4A4 /* contacts_back_over.png */; };
     		D3128FE115AABC7E00A2147A /* ContactDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */; };
     		D3128FE215AABC7E00A2147A /* ContactDetailsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */; };
    -		D3128FE315AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */; };
     		D3128FEF15AABE4E00A2147A /* contact_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE715AABE4E00A2147A /* contact_back_default.png */; };
     		D3128FF115AABE4E00A2147A /* contact_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE815AABE4E00A2147A /* contact_back_over.png */; };
     		D3128FF315AABE4E00A2147A /* contact_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE915AABE4E00A2147A /* contact_edit_default.png */; };
    @@ -194,7 +189,6 @@
     		D3211BA6159C3D410098460B /* call_state_outgoing_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BA5159C3D410098460B /* call_state_outgoing_default.png */; };
     		D3211BB0159C4EF10098460B /* UIConferenceHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3211BAE159C4EF00098460B /* UIConferenceHeader.m */; };
     		D3211BB1159C4EF10098460B /* UIConferenceHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3211BAE159C4EF00098460B /* UIConferenceHeader.m */; };
    -		D3211BB2159C4EF10098460B /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */; };
     		D3211BB9159C8A820098460B /* cell_call_first.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BB8159C8A820098460B /* cell_call_first.png */; };
     		D3211BBE159CBFD60098460B /* back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBB159CBFD60098460B /* back_default.png */; };
     		D3211BC0159CBFD70098460B /* back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3211BBC159CBFD60098460B /* back_disabled.png */; };
    @@ -209,7 +203,6 @@
     		D326483915887D5200930C67 /* OrderedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483715887D5200930C67 /* OrderedDictionary.m */; };
     		D326483E1588950F00930C67 /* UICallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* UICallBar.m */; };
     		D326483F1588950F00930C67 /* UICallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* UICallBar.m */; };
    -		D32648401588950F00930C67 /* UICallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D326483D1588950F00930C67 /* UICallBar.xib */; };
     		D32648441588F6FC00930C67 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32648431588F6FB00930C67 /* UIToggleButton.m */; };
     		D32648451588F6FC00930C67 /* UIToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D32648431588F6FB00930C67 /* UIToggleButton.m */; };
     		D32942A41594C94300556A1C /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D32942A31594C94200556A1C /* SettingsViewController.xib */; };
    @@ -585,40 +578,22 @@
     		D34BD72015C13DB70070C209 /* video_on_disabled_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3015BD8DED008ED271 /* video_on_disabled_landscape.png */; };
     		D34BD72115C13DB70070C209 /* video_on_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F03158205A100336684 /* video_on_over.png */; };
     		D34BD72215C13DB70070C209 /* video_on_over_landscape.png in Resources */ = {isa = PBXBuildFile; fileRef = D3C31A3115BD8DED008ED271 /* video_on_over_landscape.png */; };
    -		D34BD72315C13DD40070C209 /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F795D515A582800077328B /* ChatRoomViewController.xib */; };
    -		D34BD72415C13DD40070C209 /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35E7596159460570066B1C1 /* ChatViewController.xib */; };
     		D34BD72515C13DD40070C209 /* ConsoleViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81E111C44E100B04932 /* ConsoleViewController.xib */; };
    -		D34BD72615C13DD40070C209 /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */; };
    -		D34BD72715C13DD40070C209 /* ContactDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */; };
    -		D34BD72815C13DD40070C209 /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsViewController.xib */; };
    -		D34BD72915C13DD40070C209 /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2218A92412FBE1340088A667 /* FirstLoginViewController.xib */; };
    -		D34BD72A15C13DD40070C209 /* HistoryDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */; };
    -		D34BD72B15C13DD40070C209 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; };
    -		D34BD72D15C13DD40070C209 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; };
    -		D34BD72E15C13DD40070C209 /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; };
     		D34BD72F15C13DD40070C209 /* LinphoneApp.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F9115824D3500336684 /* LinphoneApp.xib */; };
     		D34BD73015C13DD40070C209 /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; };
     		D34BD73115C13DD40070C209 /* PhoneMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = D34734791580DDF1003C7B8C /* PhoneMainView.xib */; };
     		D34BD73215C13DD40070C209 /* SettingsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D32942A31594C94200556A1C /* SettingsViewController.xib */; };
    -		D34BD73315C13DD40070C209 /* WizardViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D350F20D15A43BB100149E54 /* WizardViewController.xib */; };
    -		D34BD73415C13DF40070C209 /* UICallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D326483D1588950F00930C67 /* UICallBar.xib */; };
    -		D34BD73515C13DF40070C209 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; };
     		D34BD73615C13DF40070C209 /* UIChatCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5413159853C90037DC6B /* UIChatCell.xib */; };
     		D34BD73715C13DF40070C209 /* UIChatRoomCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7315A6C81A00F96BE5 /* UIChatRoomCell.xib */; };
     		D34BD73815C13DF40070C209 /* UICompositeViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */; };
    -		D34BD73915C13DF40070C209 /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */; };
     		D34BD73A15C13DF40070C209 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; };
    -		D34BD73B15C13DF40070C209 /* UIContactDetailsFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3E8F68515ADE05A0065A226 /* UIContactDetailsFooter.xib */; };
    -		D34BD73C15C13DF40070C209 /* UIContactDetailsHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */; };
     		D34BD73D15C13DF40070C209 /* UIHistoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D31AC4AF158A29C600C2638B /* UIHistoryCell.xib */; };
    -		D34BD73E15C13DF40070C209 /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* UIMainBar.xib */; };
     		D34BD73F15C13DF40070C209 /* UIStateBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35498201587716B000081D8 /* UIStateBar.xib */; };
     		D34BD74015C13E110070C209 /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; };
     		D34BD74115C13E250070C209 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; };
     		D34F6F9E1594D3FB0095705B /* InAppSettings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */; };
     		D350F20E15A43BB100149E54 /* WizardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D350F20C15A43BB100149E54 /* WizardViewController.m */; };
     		D350F20F15A43BB100149E54 /* WizardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D350F20C15A43BB100149E54 /* WizardViewController.m */; };
    -		D350F21015A43BB100149E54 /* WizardViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D350F20D15A43BB100149E54 /* WizardViewController.xib */; };
     		D350F21C15A43D3400149E54 /* setup_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21315A43D3400149E54 /* setup_back_default.png */; };
     		D350F21E15A43D3400149E54 /* setup_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21415A43D3400149E54 /* setup_back_over.png */; };
     		D350F22015A43D3400149E54 /* setup_cancel_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D350F21515A43D3400149E54 /* setup_cancel_default.png */; };
    @@ -632,7 +607,6 @@
     		D35406F915A47E9E007E7E81 /* button_background_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D35406F615A47E9E007E7E81 /* button_background_over.png */; };
     		D35497FE15875372000081D8 /* ContactsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsViewController.m */; };
     		D35497FF15875372000081D8 /* ContactsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35497FC15875372000081D8 /* ContactsViewController.m */; };
    -		D354980015875372000081D8 /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35497FD15875372000081D8 /* ContactsViewController.xib */; };
     		D354980615875534000081D8 /* contacts_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980215875534000081D8 /* contacts_all_selected.png */; };
     		D354980815875534000081D8 /* contacts_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980315875534000081D8 /* contacts_all_default.png */; };
     		D354980A15875534000081D8 /* contacts_linphone_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D354980415875534000081D8 /* contacts_linphone_selected.png */; };
    @@ -656,7 +630,6 @@
     		D35E758D15934F360066B1C1 /* call_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35E758C15934F360066B1C1 /* call_disabled.png */; };
     		D35E7597159460580066B1C1 /* ChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7595159460560066B1C1 /* ChatViewController.m */; };
     		D35E7598159460580066B1C1 /* ChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7595159460560066B1C1 /* ChatViewController.m */; };
    -		D35E7599159460580066B1C1 /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D35E7596159460570066B1C1 /* ChatViewController.xib */; };
     		D35E759F159460B70066B1C1 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E759D159460B50066B1C1 /* SettingsViewController.m */; };
     		D35E75A0159460B70066B1C1 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E759D159460B50066B1C1 /* SettingsViewController.m */; };
     		D35EA76315A2DF8D003E025D /* micro_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D35EA76115A2DF8D003E025D /* micro_off_disabled.png */; };
    @@ -665,7 +638,6 @@
     		D365AA7D15A2DE7500CAFE3F /* speaker_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */; };
     		D36C43C6158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; };
     		D36C43C7158F2E5A0048BA40 /* UICallCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D36C43C5158F2E5A0048BA40 /* UICallCell.m */; };
    -		D36C43CA158F2EE50048BA40 /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D36C43C9158F2EE50048BA40 /* UICallCell.xib */; };
     		D36C43D1158F2F370048BA40 /* cell_call.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CC158F2F370048BA40 /* cell_call.png */; };
     		D36C43D3158F2F370048BA40 /* cell_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CD158F2F370048BA40 /* cell_conference.png */; };
     		D36C43D5158F2F370048BA40 /* header_conference.png in Resources */ = {isa = PBXBuildFile; fileRef = D36C43CE158F2F370048BA40 /* header_conference.png */; };
    @@ -683,7 +655,6 @@
     		D377BBFA15A19DA6002B696B /* video_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D377BBF915A19DA6002B696B /* video_on_disabled.png */; };
     		D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; };
     		D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; };
    -		D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */; };
     		D378AB2A15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */; };
     		D378AB2B15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */; };
     		D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; };
    @@ -692,7 +663,6 @@
     		D37C639015AAD251009D0BAC /* contact_number.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638D15AAD251009D0BAC /* contact_number.png */; };
     		D37C639515AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639315AADDAE009D0BAC /* UIContactDetailsHeader.m */; };
     		D37C639615AADDAF009D0BAC /* UIContactDetailsHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639315AADDAE009D0BAC /* UIContactDetailsHeader.m */; };
    -		D37C639715AADDAF009D0BAC /* UIContactDetailsHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */; };
     		D37C639B15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */; };
     		D37C639C15AADEF6009D0BAC /* ContactDetailsTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */; };
     		D37DC6C11594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; };
    @@ -743,6 +713,74 @@
     		D380800615C28A7A005BE9BC /* UILinphone.m in Sources */ = {isa = PBXBuildFile; fileRef = D380800415C28A7A005BE9BC /* UILinphone.m */; };
     		D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */ = {isa = PBXBuildFile; fileRef = D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */; };
     		D380801415C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */ = {isa = PBXBuildFile; fileRef = D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */; };
    +		D38187AD15FE340100C3EDCA /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B015FE340100C3EDCA /* ChatRoomViewController.xib */; };
    +		D38187AE15FE340100C3EDCA /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B015FE340100C3EDCA /* ChatRoomViewController.xib */; };
    +		D38187B115FE340500C3EDCA /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B415FE340500C3EDCA /* ChatViewController.xib */; };
    +		D38187B215FE340500C3EDCA /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B415FE340500C3EDCA /* ChatViewController.xib */; };
    +		D38187B515FE341B00C3EDCA /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B815FE341B00C3EDCA /* ContactDetailsLabelViewController.xib */; };
    +		D38187B615FE341B00C3EDCA /* ContactDetailsLabelViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B815FE341B00C3EDCA /* ContactDetailsLabelViewController.xib */; };
    +		D38187B915FE342200C3EDCA /* ContactDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187BC15FE342200C3EDCA /* ContactDetailsViewController.xib */; };
    +		D38187BA15FE342200C3EDCA /* ContactDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187BC15FE342200C3EDCA /* ContactDetailsViewController.xib */; };
    +		D38187BD15FE342800C3EDCA /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187C015FE342800C3EDCA /* ContactsViewController.xib */; };
    +		D38187BE15FE342800C3EDCA /* ContactsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187C015FE342800C3EDCA /* ContactsViewController.xib */; };
    +		D38187C115FE345B00C3EDCA /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187C415FE345B00C3EDCA /* DialerViewController.xib */; };
    +		D38187C215FE345B00C3EDCA /* DialerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187C415FE345B00C3EDCA /* DialerViewController.xib */; };
    +		D38187C515FE345F00C3EDCA /* DialerViewController~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187C815FE345F00C3EDCA /* DialerViewController~ipad.xib */; };
    +		D38187C615FE345F00C3EDCA /* DialerViewController~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187C815FE345F00C3EDCA /* DialerViewController~ipad.xib */; };
    +		D38187C915FE346400C3EDCA /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187CC15FE346400C3EDCA /* FirstLoginViewController.xib */; };
    +		D38187CA15FE346400C3EDCA /* FirstLoginViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187CC15FE346400C3EDCA /* FirstLoginViewController.xib */; };
    +		D38187CD15FE346700C3EDCA /* HistoryDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187D015FE346700C3EDCA /* HistoryDetailsViewController.xib */; };
    +		D38187CE15FE346700C3EDCA /* HistoryDetailsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187D015FE346700C3EDCA /* HistoryDetailsViewController.xib */; };
    +		D38187D115FE346B00C3EDCA /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187D415FE346B00C3EDCA /* HistoryViewController.xib */; };
    +		D38187D215FE346B00C3EDCA /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187D415FE346B00C3EDCA /* HistoryViewController.xib */; };
    +		D38187D915FE347700C3EDCA /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187DC15FE347700C3EDCA /* IncomingCallViewController.xib */; };
    +		D38187DA15FE347700C3EDCA /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187DC15FE347700C3EDCA /* IncomingCallViewController.xib */; };
    +		D38187DD15FE348A00C3EDCA /* WizardViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187E015FE348A00C3EDCA /* WizardViewController.xib */; };
    +		D38187DE15FE348A00C3EDCA /* WizardViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187E015FE348A00C3EDCA /* WizardViewController.xib */; };
    +		D38187E115FE349700C3EDCA /* UICallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187E415FE349700C3EDCA /* UICallBar.xib */; };
    +		D38187E215FE349700C3EDCA /* UICallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187E415FE349700C3EDCA /* UICallBar.xib */; };
    +		D38187E515FE349D00C3EDCA /* UICallBar~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187E815FE349D00C3EDCA /* UICallBar~ipad.xib */; };
    +		D38187E615FE349D00C3EDCA /* UICallBar~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187E815FE349D00C3EDCA /* UICallBar~ipad.xib */; };
    +		D38187F015FE354000C3EDCA /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187F315FE354000C3EDCA /* UIConferenceHeader.xib */; };
    +		D38187F115FE354000C3EDCA /* UIConferenceHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187F315FE354000C3EDCA /* UIConferenceHeader.xib */; };
    +		D38187F415FE354700C3EDCA /* UIContactDetailsFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187F715FE354700C3EDCA /* UIContactDetailsFooter.xib */; };
    +		D38187F515FE354700C3EDCA /* UIContactDetailsFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187F715FE354700C3EDCA /* UIContactDetailsFooter.xib */; };
    +		D38187F815FE355D00C3EDCA /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187FB15FE355D00C3EDCA /* UIMainBar.xib */; };
    +		D38187F915FE355D00C3EDCA /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187FB15FE355D00C3EDCA /* UIMainBar.xib */; };
    +		D38187FC15FE356100C3EDCA /* UIMainBar~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187FF15FE356100C3EDCA /* UIMainBar~ipad.xib */; };
    +		D38187FD15FE356100C3EDCA /* UIMainBar~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187FF15FE356100C3EDCA /* UIMainBar~ipad.xib */; };
    +		D381881115FE3F0B00C3EDCA /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D381881415FE3F0B00C3EDCA /* UICallCell.xib */; };
    +		D381881215FE3F0B00C3EDCA /* UICallCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D381881415FE3F0B00C3EDCA /* UICallCell.xib */; };
    +		D381881515FE3F7F00C3EDCA /* UIContactDetailsHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D381881815FE3F7F00C3EDCA /* UIContactDetailsHeader.xib */; };
    +		D381881615FE3F7F00C3EDCA /* UIContactDetailsHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = D381881815FE3F7F00C3EDCA /* UIContactDetailsHeader.xib */; };
    +		D381881915FE3FCA00C3EDCA /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D381881C15FE3FCA00C3EDCA /* InCallViewController.xib */; };
    +		D381881A15FE3FCA00C3EDCA /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D381881C15FE3FCA00C3EDCA /* InCallViewController.xib */; };
    +		D381883815FE447200C3EDCA /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; };
    +		D381883915FE447200C3EDCA /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; };
    +		D381883A15FE447200C3EDCA /* ChatRoomTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B6E2815A5BC430033019F /* ChatRoomTableViewController.m */; };
    +		D381883B15FE447200C3EDCA /* ChatRoomTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D32B6E2815A5BC430033019F /* ChatRoomTableViewController.m */; };
    +		D381883C15FE447200C3EDCA /* ChatRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F795D415A582800077328B /* ChatRoomViewController.m */; };
    +		D381883D15FE447200C3EDCA /* ChatRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F795D415A582800077328B /* ChatRoomViewController.m */; };
    +		D381883E15FE447200C3EDCA /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B015FE340100C3EDCA /* ChatRoomViewController.xib */; };
    +		D381883F15FE447200C3EDCA /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B015FE340100C3EDCA /* ChatRoomViewController.xib */; };
    +		D381884015FE447200C3EDCA /* ChatTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA540C1598528B0037DC6B /* ChatTableViewController.m */; };
    +		D381884115FE447200C3EDCA /* ChatTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA540C1598528B0037DC6B /* ChatTableViewController.m */; };
    +		D381884215FE447200C3EDCA /* ChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7595159460560066B1C1 /* ChatViewController.m */; };
    +		D381884315FE447200C3EDCA /* ChatViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7595159460560066B1C1 /* ChatViewController.m */; };
    +		D381884415FE447200C3EDCA /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B415FE340500C3EDCA /* ChatViewController.xib */; };
    +		D381884515FE447200C3EDCA /* ChatViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187B415FE340500C3EDCA /* ChatViewController.xib */; };
    +		D381884E15FE448400C3EDCA /* UIAddressTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7580159328EB0066B1C1 /* UIAddressTextField.m */; };
    +		D381884F15FE448400C3EDCA /* UIAddressTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = D35E7580159328EB0066B1C1 /* UIAddressTextField.m */; };
    +		D381885015FE448400C3EDCA /* UIBluetoothButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */; };
    +		D381885115FE448400C3EDCA /* UIBluetoothButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 22C7555F1317E59C007BC101 /* UIBluetoothButton.m */; };
    +		D381885215FE448400C3EDCA /* UICallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* UICallBar.m */; };
    +		D381885315FE448400C3EDCA /* UICallBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D326483C1588950F00930C67 /* UICallBar.m */; };
    +		D381885415FE448400C3EDCA /* UICallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187E415FE349700C3EDCA /* UICallBar.xib */; };
    +		D381885515FE448400C3EDCA /* UICallBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187E415FE349700C3EDCA /* UICallBar.xib */; };
    +		D381885615FE448400C3EDCA /* UICallBar~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187E815FE349D00C3EDCA /* UICallBar~ipad.xib */; };
    +		D381885715FE448400C3EDCA /* UICallBar~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D38187E815FE349D00C3EDCA /* UICallBar~ipad.xib */; };
    +		D381885915FE44A700C3EDCA /* accept_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* accept_default.png */; };
    +		D381885A15FE44A700C3EDCA /* accept_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* accept_default.png */; };
     		D38327F31580FE3A00FA0D23 /* contacts_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EB1580FE3A00FA0D23 /* contacts_default.png */; };
     		D38327F41580FE3A00FA0D23 /* contacts_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327EC1580FE3A00FA0D23 /* contacts_selected.png */; };
     		D38327F51580FE3A00FA0D23 /* dialer_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327ED1580FE3A00FA0D23 /* dialer_default.png */; };
    @@ -764,8 +802,6 @@
     		D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; };
     		D3A74E5915C68162001500B9 /* toolsbar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E5815C68162001500B9 /* toolsbar_background.png */; };
     		D3A74E5A15C68162001500B9 /* toolsbar_background.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E5815C68162001500B9 /* toolsbar_background.png */; };
    -		D3A74E5C15C6922A001500B9 /* UIMainBar~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E5B15C6922A001500B9 /* UIMainBar~ipad.xib */; };
    -		D3A74E5D15C6922A001500B9 /* UIMainBar~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E5B15C6922A001500B9 /* UIMainBar~ipad.xib */; };
     		D3A74EB215C69392001500B9 /* add_call_default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E5E15C69391001500B9 /* add_call_default~ipad.png */; };
     		D3A74EB315C69392001500B9 /* add_call_default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E5E15C69391001500B9 /* add_call_default~ipad.png */; };
     		D3A74EB415C69392001500B9 /* add_call_disabled~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74E5F15C69391001500B9 /* add_call_disabled~ipad.png */; };
    @@ -938,8 +974,6 @@
     		D3A74F5C15C6AA0B001500B9 /* chat_field.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5A15C6AA0B001500B9 /* chat_field.9.png */; };
     		D3A74F5E15C6ADA9001500B9 /* chat_field.9@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5D15C6ADA9001500B9 /* chat_field.9@2x.png */; };
     		D3A74F5F15C6ADA9001500B9 /* chat_field.9@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F5D15C6ADA9001500B9 /* chat_field.9@2x.png */; };
    -		D3A74F6115C6B03C001500B9 /* DialerViewController~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F6015C6B03B001500B9 /* DialerViewController~ipad.xib */; };
    -		D3A74F6215C6B03C001500B9 /* DialerViewController~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A74F6015C6B03B001500B9 /* DialerViewController~ipad.xib */; };
     		D3A8BB7015A6C7D500F96BE5 /* UIChatRoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */; };
     		D3A8BB7115A6C7D500F96BE5 /* UIChatRoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */; };
     		D3A8BB7415A6C81A00F96BE5 /* UIChatRoomCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7315A6C81A00F96BE5 /* UIChatRoomCell.xib */; };
    @@ -948,8 +982,6 @@
     		D3A8BB7F15A6CC3200F96BE5 /* setup_back_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */; };
     		D3A8BB8115A6CC3200F96BE5 /* setup_cancel_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */; };
     		D3A8BB8315A6CC3200F96BE5 /* setup_start_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */; };
    -		D3ACB09715C6D0F700E15894 /* UICallBar~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ACB09615C6D0F700E15894 /* UICallBar~ipad.xib */; };
    -		D3ACB09815C6D0F700E15894 /* UICallBar~ipad.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ACB09615C6D0F700E15894 /* UICallBar~ipad.xib */; };
     		D3ACB09B15C6D59500E15894 /* dialer_alt_back_default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ACB09915C6D59500E15894 /* dialer_alt_back_default~ipad.png */; };
     		D3ACB09C15C6D59500E15894 /* dialer_alt_back_default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ACB09915C6D59500E15894 /* dialer_alt_back_default~ipad.png */; };
     		D3ACB09D15C6D59500E15894 /* dialer_alt_back_over~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ACB09A15C6D59500E15894 /* dialer_alt_back_over~ipad.png */; };
    @@ -1030,7 +1062,6 @@
     		D3E84F3A15B011AF00420DAC /* contact_cancel_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3E84F3715B011AF00420DAC /* contact_cancel_over.png */; };
     		D3E8F68615ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = D3E8F68415ADE0580065A226 /* UIContactDetailsFooter.m */; };
     		D3E8F68715ADE05B0065A226 /* UIContactDetailsFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = D3E8F68415ADE0580065A226 /* UIContactDetailsFooter.m */; };
    -		D3E8F68815ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3E8F68515ADE05A0065A226 /* UIContactDetailsFooter.xib */; };
     		D3EA53FD159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; };
     		D3EA53FE159850E80037DC6B /* LinphoneManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D3EA53FC159850E80037DC6B /* LinphoneManager.m */; };
     		D3EA5403159852080037DC6B /* chat_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* chat_edit_default.png */; };
    @@ -1056,7 +1087,6 @@
     		D3ED3E7A15861B1B006C0DE4 /* backspace_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E7715861B1B006C0DE4 /* backspace_over.png */; };
     		D3ED3E871586291E006C0DE4 /* UIMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* UIMainBar.m */; };
     		D3ED3E881586291E006C0DE4 /* UIMainBar.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3E851586291B006C0DE4 /* UIMainBar.m */; };
    -		D3ED3E891586291E006C0DE4 /* UIMainBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E861586291C006C0DE4 /* UIMainBar.xib */; };
     		D3ED3E9815872EF1006C0DE4 /* history_all_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */; };
     		D3ED3E9A15872EF1006C0DE4 /* history_all_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9315872EF1006C0DE4 /* history_all_default.png */; };
     		D3ED3E9C15872EF1006C0DE4 /* history_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */; };
    @@ -1065,26 +1095,22 @@
     		D3ED3EA215872EF1006C0DE4 /* history_missed_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */; };
     		D3ED3EA71587334E006C0DE4 /* HistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */; };
     		D3ED3EA81587334E006C0DE4 /* HistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */; };
    -		D3ED3EB3158738FB006C0DE4 /* HistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */; };
     		D3ED3EB81587392C006C0DE4 /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryViewController.m */; };
     		D3ED3EB91587392C006C0DE4 /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryViewController.m */; };
     		D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */; };
     		D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */; };
    -		D3F26BF315986B73005F9CAB /* IncomingCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */; };
     		D3F26BF715986DAD005F9CAB /* history_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF515986DAD005F9CAB /* history_ok_default.png */; };
     		D3F26BF915986DAD005F9CAB /* history_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF615986DAD005F9CAB /* history_ok_over.png */; };
     		D3F26BFC15987083005F9CAB /* header_incoming.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BFB15987083005F9CAB /* header_incoming.png */; };
     		D3F34F301599B008005BE94F /* avatar_shadow.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F34F2F1599B008005BE94F /* avatar_shadow.png */; };
     		D3F795D615A582810077328B /* ChatRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F795D415A582800077328B /* ChatRoomViewController.m */; };
     		D3F795D715A582810077328B /* ChatRoomViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F795D415A582800077328B /* ChatRoomViewController.m */; };
    -		D3F795D815A582810077328B /* ChatRoomViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F795D515A582800077328B /* ChatRoomViewController.xib */; };
     		D3F795DD15A5831C0077328B /* chat_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DB15A5831C0077328B /* chat_back_default.png */; };
     		D3F795DF15A5831C0077328B /* chat_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F795DC15A5831C0077328B /* chat_back_over.png */; };
     		D3F7998115BD32370018C273 /* TPMultiLayoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */; };
     		D3F7998215BD32370018C273 /* TPMultiLayoutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */; };
     		D3F83EEC1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; };
     		D3F83EED1582021700336684 /* InCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F83EEA1582021700336684 /* InCallViewController.m */; };
    -		D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EEB1582021700336684 /* InCallViewController.xib */; };
     		D3F83F0C158205A100336684 /* micro_off_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF4158205A100336684 /* micro_off_default.png */; };
     		D3F83F0E158205A100336684 /* micro_off_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF5158205A100336684 /* micro_off_over.png */; };
     		D3F83F10158205A100336684 /* micro_on_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83EF6158205A100336684 /* micro_on_default.png */; };
    @@ -1336,7 +1362,6 @@
     		2214EBF212F86360002A5394 /* UIMicroButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMicroButton.m; sourceTree = ""; };
     		2218A92212FBE1340088A667 /* FirstLoginViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FirstLoginViewController.h; sourceTree = ""; };
     		2218A92312FBE1340088A667 /* FirstLoginViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = FirstLoginViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
    -		2218A92412FBE1340088A667 /* FirstLoginViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = FirstLoginViewController.xib; sourceTree = ""; };
     		22276E8013C73D3100210156 /* libavcodec.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavcodec.a; path = "liblinphone-sdk/apple-darwin/lib/libavcodec.a"; sourceTree = ""; };
     		22276E8113C73D3100210156 /* libavutil.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libavutil.a; path = "liblinphone-sdk/apple-darwin/lib/libavutil.a"; sourceTree = ""; };
     		22276E8213C73D3100210156 /* libswscale.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libswscale.a; path = "liblinphone-sdk/apple-darwin/lib/libswscale.a"; sourceTree = ""; };
    @@ -1344,7 +1369,6 @@
     		22276E8813C73DC000210156 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
     		223148E31178A08200637D6A /* libilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libilbc.a; path = "liblinphone-sdk/apple-darwin/lib/libilbc.a"; sourceTree = ""; };
     		223148E51178A09900637D6A /* libmsilbc.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsilbc.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsilbc.a"; sourceTree = ""; };
    -		2234C8C715ED049A00E18E83 /* DialerViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = DialerViewController.xib; sourceTree = ""; };
     		2234C8E715EE2F7F00E18E83 /* chat_message_delivered.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_message_delivered.png; path = Resources/chat_message_delivered.png; sourceTree = ""; };
     		2234C8E815EE2F7F00E18E83 /* chat_message_not_delivered.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_message_not_delivered.png; path = Resources/chat_message_not_delivered.png; sourceTree = ""; };
     		2234C8ED15EE744200E18E83 /* chat_message_inprogress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_message_inprogress.png; path = Resources/chat_message_inprogress.png; sourceTree = ""; };
    @@ -1490,7 +1514,6 @@
     		8D1107310486CEB800E47090 /* linphone-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "linphone-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; };
     		C90FAA7615AF54E6002091CB /* HistoryDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryDetailsViewController.h; sourceTree = ""; };
     		C90FAA7715AF54E6002091CB /* HistoryDetailsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryDetailsViewController.m; sourceTree = ""; };
    -		C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryDetailsViewController.xib; sourceTree = ""; };
     		C9B3A6FD15B485DB006F52EE /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = Utils/Utils.h; sourceTree = ""; };
     		C9C8253F15AE204D00D493FA /* options_add_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_add_disabled.png; path = Resources/options_add_disabled.png; sourceTree = ""; };
     		C9C8254015AE204D00D493FA /* options_transfer_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = options_transfer_disabled.png; path = Resources/options_transfer_disabled.png; sourceTree = ""; };
    @@ -1504,7 +1527,6 @@
     		D3119E7115B6A4710005D4A4 /* contacts_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_back_over.png; path = Resources/contacts_back_over.png; sourceTree = ""; };
     		D3128FDE15AABC7E00A2147A /* ContactDetailsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsViewController.h; sourceTree = ""; };
     		D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsViewController.m; sourceTree = ""; };
    -		D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactDetailsViewController.xib; sourceTree = ""; };
     		D3128FE715AABE4E00A2147A /* contact_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_back_default.png; path = Resources/contact_back_default.png; sourceTree = ""; };
     		D3128FE815AABE4E00A2147A /* contact_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_back_over.png; path = Resources/contact_back_over.png; sourceTree = ""; };
     		D3128FE915AABE4E00A2147A /* contact_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_edit_default.png; path = Resources/contact_edit_default.png; sourceTree = ""; };
    @@ -1538,7 +1560,6 @@
     		D3211BA5159C3D410098460B /* call_state_outgoing_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_outgoing_default.png; path = Resources/call_state_outgoing_default.png; sourceTree = ""; };
     		D3211BAD159C4EF00098460B /* UIConferenceHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIConferenceHeader.h; sourceTree = ""; };
     		D3211BAE159C4EF00098460B /* UIConferenceHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIConferenceHeader.m; sourceTree = ""; };
    -		D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIConferenceHeader.xib; sourceTree = ""; };
     		D3211BB8159C8A820098460B /* cell_call_first.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_first.png; path = Resources/cell_call_first.png; sourceTree = ""; };
     		D3211BBB159CBFD60098460B /* back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_default.png; path = Resources/back_default.png; sourceTree = ""; };
     		D3211BBC159CBFD60098460B /* back_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = back_disabled.png; path = Resources/back_disabled.png; sourceTree = ""; };
    @@ -1552,7 +1573,6 @@
     		D326483715887D5200930C67 /* OrderedDictionary.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OrderedDictionary.m; path = Utils/OrderedDictionary.m; sourceTree = ""; };
     		D326483B1588950F00930C67 /* UICallBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallBar.h; sourceTree = ""; };
     		D326483C1588950F00930C67 /* UICallBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICallBar.m; sourceTree = ""; };
    -		D326483D1588950F00930C67 /* UICallBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UICallBar.xib; sourceTree = ""; };
     		D32648421588F6FA00930C67 /* UIToggleButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIToggleButton.h; sourceTree = ""; };
     		D32648431588F6FB00930C67 /* UIToggleButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIToggleButton.m; sourceTree = ""; };
     		D32942A31594C94200556A1C /* SettingsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SettingsViewController.xib; sourceTree = ""; };
    @@ -1624,7 +1644,6 @@
     		D34F6F9D1594D3FB0095705B /* InAppSettings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = InAppSettings.bundle; sourceTree = ""; };
     		D350F20B15A43BB100149E54 /* WizardViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WizardViewController.h; sourceTree = ""; };
     		D350F20C15A43BB100149E54 /* WizardViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WizardViewController.m; sourceTree = ""; };
    -		D350F20D15A43BB100149E54 /* WizardViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = WizardViewController.xib; sourceTree = ""; };
     		D350F21315A43D3400149E54 /* setup_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_back_default.png; path = Resources/setup_back_default.png; sourceTree = ""; };
     		D350F21415A43D3400149E54 /* setup_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_back_over.png; path = Resources/setup_back_over.png; sourceTree = ""; };
     		D350F21515A43D3400149E54 /* setup_cancel_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_cancel_default.png; path = Resources/setup_cancel_default.png; sourceTree = ""; };
    @@ -1638,7 +1657,6 @@
     		D35406F615A47E9E007E7E81 /* button_background_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = button_background_over.png; path = Resources/button_background_over.png; sourceTree = ""; };
     		D35497FB15875372000081D8 /* ContactsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactsViewController.h; sourceTree = ""; };
     		D35497FC15875372000081D8 /* ContactsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = ContactsViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
    -		D35497FD15875372000081D8 /* ContactsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactsViewController.xib; sourceTree = ""; };
     		D354980215875534000081D8 /* contacts_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_selected.png; path = Resources/contacts_all_selected.png; sourceTree = ""; };
     		D354980315875534000081D8 /* contacts_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_all_default.png; path = Resources/contacts_all_default.png; sourceTree = ""; };
     		D354980415875534000081D8 /* contacts_linphone_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_linphone_selected.png; path = Resources/contacts_linphone_selected.png; sourceTree = ""; };
    @@ -1662,7 +1680,6 @@
     		D35E758C15934F360066B1C1 /* call_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_disabled.png; path = Resources/call_disabled.png; sourceTree = ""; };
     		D35E7594159460560066B1C1 /* ChatViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatViewController.h; sourceTree = ""; };
     		D35E7595159460560066B1C1 /* ChatViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatViewController.m; sourceTree = ""; };
    -		D35E7596159460570066B1C1 /* ChatViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ChatViewController.xib; sourceTree = ""; };
     		D35E759C159460B50066B1C1 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = ""; };
     		D35E759D159460B50066B1C1 /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = ""; };
     		D35EA76115A2DF8D003E025D /* micro_off_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_disabled.png; path = Resources/micro_off_disabled.png; sourceTree = ""; };
    @@ -1671,7 +1688,6 @@
     		D365AA7A15A2DE7500CAFE3F /* speaker_on_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = speaker_on_disabled.png; path = Resources/speaker_on_disabled.png; sourceTree = ""; };
     		D36C43C4158F2E5A0048BA40 /* UICallCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallCell.h; sourceTree = ""; };
     		D36C43C5158F2E5A0048BA40 /* UICallCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICallCell.m; sourceTree = ""; };
    -		D36C43C9158F2EE50048BA40 /* UICallCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UICallCell.xib; sourceTree = ""; };
     		D36C43CC158F2F370048BA40 /* cell_call.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call.png; path = Resources/cell_call.png; sourceTree = ""; };
     		D36C43CD158F2F370048BA40 /* cell_conference.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_conference.png; path = Resources/cell_conference.png; sourceTree = ""; };
     		D36C43CE158F2F370048BA40 /* header_conference.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = header_conference.png; path = Resources/header_conference.png; sourceTree = ""; };
    @@ -1689,7 +1705,6 @@
     		D377BBF915A19DA6002B696B /* video_on_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_disabled.png; path = Resources/video_on_disabled.png; sourceTree = ""; };
     		D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsLabelViewController.h; sourceTree = ""; };
     		D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsLabelViewController.m; sourceTree = ""; };
    -		D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ContactDetailsLabelViewController.xib; sourceTree = ""; };
     		D378AB2815DCDB480098505D /* ContactDetailsImagePickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsImagePickerController.h; sourceTree = ""; };
     		D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsImagePickerController.m; sourceTree = ""; };
     		D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_default.png; path = Resources/call_state_delete_default.png; sourceTree = ""; };
    @@ -1698,7 +1713,6 @@
     		D37C638D15AAD251009D0BAC /* contact_number.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_number.png; path = Resources/contact_number.png; sourceTree = ""; };
     		D37C639215AADDAE009D0BAC /* UIContactDetailsHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactDetailsHeader.h; sourceTree = ""; };
     		D37C639315AADDAE009D0BAC /* UIContactDetailsHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactDetailsHeader.m; sourceTree = ""; };
    -		D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactDetailsHeader.xib; sourceTree = ""; };
     		D37C639915AADEF4009D0BAC /* ContactDetailsTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsTableViewController.h; sourceTree = ""; };
     		D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsTableViewController.m; sourceTree = ""; };
     		D37DC6BF1594AE1800B2A5EB /* LinphoneCoreSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCoreSettingsStore.h; sourceTree = ""; };
    @@ -1746,6 +1760,49 @@
     		D380800415C28A7A005BE9BC /* UILinphone.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UILinphone.m; sourceTree = ""; };
     		D380801115C29984005BE9BC /* ColorSpaceUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ColorSpaceUtilities.h; path = Utils/ColorSpaceUtilities.h; sourceTree = ""; };
     		D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ColorSpaceUtilites.m; path = Utils/ColorSpaceUtilites.m; sourceTree = ""; };
    +		D38187AF15FE340100C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ChatRoomViewController.xib; sourceTree = ""; };
    +		D38187B315FE340500C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ChatViewController.xib; sourceTree = ""; };
    +		D38187B715FE341B00C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ContactDetailsLabelViewController.xib; sourceTree = ""; };
    +		D38187BB15FE342200C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ContactDetailsViewController.xib; sourceTree = ""; };
    +		D38187BF15FE342800C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ContactsViewController.xib; sourceTree = ""; };
    +		D38187C315FE345B00C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/DialerViewController.xib; sourceTree = ""; };
    +		D38187C715FE345F00C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = "en.lproj/DialerViewController~ipad.xib"; sourceTree = ""; };
    +		D38187CB15FE346400C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/FirstLoginViewController.xib; sourceTree = ""; };
    +		D38187CF15FE346700C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/HistoryDetailsViewController.xib; sourceTree = ""; };
    +		D38187D315FE346B00C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/HistoryViewController.xib; sourceTree = ""; };
    +		D38187DB15FE347700C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/IncomingCallViewController.xib; sourceTree = ""; };
    +		D38187DF15FE348A00C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/WizardViewController.xib; sourceTree = ""; };
    +		D38187E315FE349700C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UICallBar.xib; sourceTree = ""; };
    +		D38187E715FE349D00C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = "en.lproj/UICallBar~ipad.xib"; sourceTree = ""; };
    +		D38187F215FE354000C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UIConferenceHeader.xib; sourceTree = ""; };
    +		D38187F615FE354700C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UIContactDetailsFooter.xib; sourceTree = ""; };
    +		D38187FA15FE355D00C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UIMainBar.xib; sourceTree = ""; };
    +		D38187FE15FE356100C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = "en.lproj/UIMainBar~ipad.xib"; sourceTree = ""; };
    +		D381881315FE3F0B00C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UICallCell.xib; sourceTree = ""; };
    +		D381881715FE3F7F00C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/UIContactDetailsHeader.xib; sourceTree = ""; };
    +		D381881B15FE3FCA00C3EDCA /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/InCallViewController.xib; sourceTree = ""; };
    +		D381882B15FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/ChatRoomViewController.xib; sourceTree = ""; };
    +		D381882C15FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/ChatViewController.xib; sourceTree = ""; };
    +		D381882D15FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/ContactDetailsLabelViewController.xib; sourceTree = ""; };
    +		D381882E15FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/ContactDetailsViewController.xib; sourceTree = ""; };
    +		D381882F15FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/ContactsViewController.xib; sourceTree = ""; };
    +		D381883015FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/DialerViewController.xib; sourceTree = ""; };
    +		D381883115FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = "fr.lproj/DialerViewController~ipad.xib"; sourceTree = ""; };
    +		D381883215FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/FirstLoginViewController.xib; sourceTree = ""; };
    +		D381883315FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/HistoryDetailsViewController.xib; sourceTree = ""; };
    +		D381883415FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/HistoryViewController.xib; sourceTree = ""; };
    +		D381883515FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/InCallViewController.xib; sourceTree = ""; };
    +		D381883615FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/IncomingCallViewController.xib; sourceTree = ""; };
    +		D381883715FE447200C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/WizardViewController.xib; sourceTree = ""; };
    +		D381884615FE448400C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/UICallBar.xib; sourceTree = ""; };
    +		D381884715FE448400C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = "fr.lproj/UICallBar~ipad.xib"; sourceTree = ""; };
    +		D381884815FE448400C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/UICallCell.xib; sourceTree = ""; };
    +		D381884915FE448400C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/UIConferenceHeader.xib; sourceTree = ""; };
    +		D381884A15FE448400C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/UIContactDetailsFooter.xib; sourceTree = ""; };
    +		D381884B15FE448400C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/UIContactDetailsHeader.xib; sourceTree = ""; };
    +		D381884C15FE448400C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/UIMainBar.xib; sourceTree = ""; };
    +		D381884D15FE448400C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = "fr.lproj/UIMainBar~ipad.xib"; sourceTree = ""; };
    +		D381885815FE44A700C3EDCA /* fr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = fr; path = Resources/fr.lproj/Localizable.strings; sourceTree = ""; };
     		D38327EB1580FE3A00FA0D23 /* contacts_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_default.png; path = Resources/contacts_default.png; sourceTree = ""; };
     		D38327EC1580FE3A00FA0D23 /* contacts_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contacts_selected.png; path = Resources/contacts_selected.png; sourceTree = ""; };
     		D38327ED1580FE3A00FA0D23 /* dialer_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = dialer_default.png; path = Resources/dialer_default.png; sourceTree = ""; };
    @@ -1766,7 +1823,6 @@
     		D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = ""; };
     		D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = ""; };
     		D3A74E5815C68162001500B9 /* toolsbar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = toolsbar_background.png; path = Resources/toolsbar_background.png; sourceTree = ""; };
    -		D3A74E5B15C6922A001500B9 /* UIMainBar~ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "UIMainBar~ipad.xib"; sourceTree = ""; };
     		D3A74E5E15C69391001500B9 /* add_call_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add_call_default~ipad.png"; path = "Resources/add_call_default~ipad.png"; sourceTree = ""; };
     		D3A74E5F15C69391001500B9 /* add_call_disabled~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add_call_disabled~ipad.png"; path = "Resources/add_call_disabled~ipad.png"; sourceTree = ""; };
     		D3A74E6015C69391001500B9 /* add_call_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "add_call_over~ipad.png"; path = "Resources/add_call_over~ipad.png"; sourceTree = ""; };
    @@ -1853,7 +1909,6 @@
     		D3A74EB115C69392001500B9 /* video_on_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "video_on_over~ipad.png"; path = "Resources/video_on_over~ipad.png"; sourceTree = ""; };
     		D3A74F5A15C6AA0B001500B9 /* chat_field.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_field.9.png; path = Resources/chat_field.9.png; sourceTree = ""; };
     		D3A74F5D15C6ADA9001500B9 /* chat_field.9@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "chat_field.9@2x.png"; path = "Resources/chat_field.9@2x.png"; sourceTree = ""; };
    -		D3A74F6015C6B03B001500B9 /* DialerViewController~ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "DialerViewController~ipad.xib"; sourceTree = ""; };
     		D3A8BB6E15A6C7D500F96BE5 /* UIChatRoomCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIChatRoomCell.h; sourceTree = ""; };
     		D3A8BB6F15A6C7D500F96BE5 /* UIChatRoomCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIChatRoomCell.m; sourceTree = ""; };
     		D3A8BB7315A6C81A00F96BE5 /* UIChatRoomCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIChatRoomCell.xib; sourceTree = ""; };
    @@ -1862,7 +1917,6 @@
     		D3A8BB7815A6CC3200F96BE5 /* setup_back_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_back_disabled.png; path = Resources/setup_back_disabled.png; sourceTree = ""; };
     		D3A8BB7915A6CC3200F96BE5 /* setup_cancel_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_cancel_disabled.png; path = Resources/setup_cancel_disabled.png; sourceTree = ""; };
     		D3A8BB7A15A6CC3200F96BE5 /* setup_start_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = setup_start_disabled.png; path = Resources/setup_start_disabled.png; sourceTree = ""; };
    -		D3ACB09615C6D0F700E15894 /* UICallBar~ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = "UICallBar~ipad.xib"; sourceTree = ""; };
     		D3ACB09915C6D59500E15894 /* dialer_alt_back_default~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_back_default~ipad.png"; path = "Resources/dialer_alt_back_default~ipad.png"; sourceTree = ""; };
     		D3ACB09A15C6D59500E15894 /* dialer_alt_back_over~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "dialer_alt_back_over~ipad.png"; path = "Resources/dialer_alt_back_over~ipad.png"; sourceTree = ""; };
     		D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = NinePatch.xcodeproj; path = Utils/NinePatch/NinePatch.xcodeproj; sourceTree = ""; };
    @@ -1942,7 +1996,6 @@
     		D3E84F3C15B018A600420DAC /* UILinphone.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UILinphone.h; sourceTree = ""; };
     		D3E8F68315ADE0570065A226 /* UIContactDetailsFooter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactDetailsFooter.h; sourceTree = ""; };
     		D3E8F68415ADE0580065A226 /* UIContactDetailsFooter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactDetailsFooter.m; sourceTree = ""; };
    -		D3E8F68515ADE05A0065A226 /* UIContactDetailsFooter.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactDetailsFooter.xib; sourceTree = ""; };
     		D3EA53FB159850E80037DC6B /* LinphoneManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneManager.h; sourceTree = ""; };
     		D3EA53FC159850E80037DC6B /* LinphoneManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneManager.m; sourceTree = ""; };
     		D3EA53FF159852080037DC6B /* chat_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_edit_default.png; path = Resources/chat_edit_default.png; sourceTree = ""; };
    @@ -1968,7 +2021,6 @@
     		D3ED3E7715861B1B006C0DE4 /* backspace_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = backspace_over.png; path = Resources/backspace_over.png; sourceTree = ""; };
     		D3ED3E841586291B006C0DE4 /* UIMainBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIMainBar.h; sourceTree = ""; };
     		D3ED3E851586291B006C0DE4 /* UIMainBar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIMainBar.m; sourceTree = ""; };
    -		D3ED3E861586291C006C0DE4 /* UIMainBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIMainBar.xib; sourceTree = ""; };
     		D3ED3E9215872EF1006C0DE4 /* history_all_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_selected.png; path = Resources/history_all_selected.png; sourceTree = ""; };
     		D3ED3E9315872EF1006C0DE4 /* history_all_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_all_default.png; path = Resources/history_all_default.png; sourceTree = ""; };
     		D3ED3E9415872EF1006C0DE4 /* history_edit_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_edit_default.png; path = Resources/history_edit_default.png; sourceTree = ""; };
    @@ -1977,26 +2029,22 @@
     		D3ED3E9715872EF1006C0DE4 /* history_missed_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_missed_default.png; path = Resources/history_missed_default.png; sourceTree = ""; };
     		D3ED3EA41587334B006C0DE4 /* HistoryTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryTableViewController.h; sourceTree = ""; };
     		D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = HistoryTableViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
    -		D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = HistoryViewController.xib; sourceTree = ""; };
     		D3ED3EB515873928006C0DE4 /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = ""; };
     		D3ED3EB615873929006C0DE4 /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = HistoryViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
     		D3F26BEE15986B71005F9CAB /* IncomingCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IncomingCallViewController.h; sourceTree = ""; };
     		D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IncomingCallViewController.m; sourceTree = ""; };
    -		D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IncomingCallViewController.xib; sourceTree = ""; };
     		D3F26BF515986DAD005F9CAB /* history_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_ok_default.png; path = Resources/history_ok_default.png; sourceTree = ""; };
     		D3F26BF615986DAD005F9CAB /* history_ok_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_ok_over.png; path = Resources/history_ok_over.png; sourceTree = ""; };
     		D3F26BFB15987083005F9CAB /* header_incoming.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = header_incoming.png; path = Resources/header_incoming.png; sourceTree = ""; };
     		D3F34F2F1599B008005BE94F /* avatar_shadow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = avatar_shadow.png; path = Resources/avatar_shadow.png; sourceTree = ""; };
     		D3F795D315A582800077328B /* ChatRoomViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChatRoomViewController.h; sourceTree = ""; };
     		D3F795D415A582800077328B /* ChatRoomViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChatRoomViewController.m; sourceTree = ""; };
    -		D3F795D515A582800077328B /* ChatRoomViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ChatRoomViewController.xib; sourceTree = ""; };
     		D3F795DB15A5831C0077328B /* chat_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_back_default.png; path = Resources/chat_back_default.png; sourceTree = ""; };
     		D3F795DC15A5831C0077328B /* chat_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_back_over.png; path = Resources/chat_back_over.png; sourceTree = ""; };
     		D3F7997F15BD32370018C273 /* TPMultiLayoutViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TPMultiLayoutViewController.h; path = Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.h; sourceTree = ""; };
     		D3F7998015BD32370018C273 /* TPMultiLayoutViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = TPMultiLayoutViewController.m; path = Utils/TPMultiLayoutViewController/TPMultiLayoutViewController.m; sourceTree = ""; };
     		D3F83EE91582021700336684 /* InCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InCallViewController.h; sourceTree = ""; };
     		D3F83EEA1582021700336684 /* InCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InCallViewController.m; sourceTree = ""; };
    -		D3F83EEB1582021700336684 /* InCallViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = InCallViewController.xib; sourceTree = ""; };
     		D3F83EF4158205A100336684 /* micro_off_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_default.png; path = Resources/micro_off_default.png; sourceTree = ""; };
     		D3F83EF5158205A100336684 /* micro_off_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_off_over.png; path = Resources/micro_off_over.png; sourceTree = ""; };
     		D3F83EF6158205A100336684 /* micro_on_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = micro_on_default.png; path = Resources/micro_on_default.png; sourceTree = ""; };
    @@ -2155,19 +2203,18 @@
     		080E96DDFE201D6D7F000001 /* Classes */ = {
     			isa = PBXGroup;
     			children = (
    -				2234C8C715ED049A00E18E83 /* DialerViewController.xib */,
     				340751E4150E4D0200B89C47 /* CallDelegate.h */,
     				2211DBBB14769C8200DEE054 /* CallDelegate.m */,
     				D32B6E2715A5BC430033019F /* ChatRoomTableViewController.h */,
     				D32B6E2815A5BC430033019F /* ChatRoomTableViewController.m */,
     				D3F795D315A582800077328B /* ChatRoomViewController.h */,
     				D3F795D415A582800077328B /* ChatRoomViewController.m */,
    -				D3F795D515A582800077328B /* ChatRoomViewController.xib */,
    +				D38187B015FE340100C3EDCA /* ChatRoomViewController.xib */,
     				D3EA540B1598528B0037DC6B /* ChatTableViewController.h */,
     				D3EA540C1598528B0037DC6B /* ChatTableViewController.m */,
     				D35E7594159460560066B1C1 /* ChatViewController.h */,
     				D35E7595159460560066B1C1 /* ChatViewController.m */,
    -				D35E7596159460570066B1C1 /* ChatViewController.xib */,
    +				D38187B415FE340500C3EDCA /* ChatViewController.xib */,
     				22E0A820111C44E100B04932 /* ConsoleViewController.h */,
     				22E0A81F111C44E100B04932 /* ConsoleViewController.m */,
     				22E0A81E111C44E100B04932 /* ConsoleViewController.xib */,
    @@ -2176,39 +2223,40 @@
     				D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */,
     				D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */,
     				D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */,
    -				D378906415AC373B00BD776C /* ContactDetailsLabelViewController.xib */,
    +				D38187B815FE341B00C3EDCA /* ContactDetailsLabelViewController.xib */,
     				D37C639915AADEF4009D0BAC /* ContactDetailsTableViewController.h */,
     				D37C639A15AADEF5009D0BAC /* ContactDetailsTableViewController.m */,
     				D3128FDE15AABC7E00A2147A /* ContactDetailsViewController.h */,
     				D3128FDF15AABC7E00A2147A /* ContactDetailsViewController.m */,
    -				D3128FE015AABC7E00A2147A /* ContactDetailsViewController.xib */,
    +				D38187BC15FE342200C3EDCA /* ContactDetailsViewController.xib */,
     				D3549814158761CF000081D8 /* ContactsTableViewController.h */,
     				D3549815158761D0000081D8 /* ContactsTableViewController.m */,
     				D35497FB15875372000081D8 /* ContactsViewController.h */,
     				D35497FC15875372000081D8 /* ContactsViewController.m */,
    -				D35497FD15875372000081D8 /* ContactsViewController.xib */,
    +				D38187C015FE342800C3EDCA /* ContactsViewController.xib */,
     				22F2508B107141E100AC9B3F /* DialerViewController.h */,
     				22F2508C107141E100AC9B3F /* DialerViewController.m */,
    -				D3A74F6015C6B03B001500B9 /* DialerViewController~ipad.xib */,
    +				D38187C415FE345B00C3EDCA /* DialerViewController.xib */,
    +				D38187C815FE345F00C3EDCA /* DialerViewController~ipad.xib */,
     				2218A92212FBE1340088A667 /* FirstLoginViewController.h */,
     				2218A92312FBE1340088A667 /* FirstLoginViewController.m */,
    -				2218A92412FBE1340088A667 /* FirstLoginViewController.xib */,
    +				D38187CC15FE346400C3EDCA /* FirstLoginViewController.xib */,
     				C90FAA7615AF54E6002091CB /* HistoryDetailsViewController.h */,
     				C90FAA7715AF54E6002091CB /* HistoryDetailsViewController.m */,
    -				C90FAA7815AF54E6002091CB /* HistoryDetailsViewController.xib */,
    +				D38187D015FE346700C3EDCA /* HistoryDetailsViewController.xib */,
     				D3ED3EA41587334B006C0DE4 /* HistoryTableViewController.h */,
     				D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */,
     				D3ED3EB515873928006C0DE4 /* HistoryViewController.h */,
     				D3ED3EB615873929006C0DE4 /* HistoryViewController.m */,
    -				D3ED3EB2158738FA006C0DE4 /* HistoryViewController.xib */,
    +				D38187D415FE346B00C3EDCA /* HistoryViewController.xib */,
     				D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */,
     				D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */,
     				D3F83EE91582021700336684 /* InCallViewController.h */,
     				D3F83EEA1582021700336684 /* InCallViewController.m */,
    -				D3F83EEB1582021700336684 /* InCallViewController.xib */,
    +				D381881C15FE3FCA00C3EDCA /* InCallViewController.xib */,
     				D3F26BEE15986B71005F9CAB /* IncomingCallViewController.h */,
     				D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */,
    -				D3F26BF015986B72005F9CAB /* IncomingCallViewController.xib */,
    +				D38187DC15FE347700C3EDCA /* IncomingCallViewController.xib */,
     				D3F83F9115824D3500336684 /* LinphoneApp.xib */,
     				1D3623240D0F684500981E51 /* LinphoneAppDelegate.h */,
     				1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */,
    @@ -2232,7 +2280,7 @@
     				34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */,
     				D350F20B15A43BB100149E54 /* WizardViewController.h */,
     				D350F20C15A43BB100149E54 /* WizardViewController.m */,
    -				D350F20D15A43BB100149E54 /* WizardViewController.xib */,
    +				D38187E015FE348A00C3EDCA /* WizardViewController.xib */,
     			);
     			path = Classes;
     			sourceTree = "";
    @@ -2443,13 +2491,13 @@
     				22C7555F1317E59C007BC101 /* UIBluetoothButton.m */,
     				D326483B1588950F00930C67 /* UICallBar.h */,
     				D326483C1588950F00930C67 /* UICallBar.m */,
    -				D326483D1588950F00930C67 /* UICallBar.xib */,
    -				D3ACB09615C6D0F700E15894 /* UICallBar~ipad.xib */,
    +				D38187E415FE349700C3EDCA /* UICallBar.xib */,
    +				D38187E815FE349D00C3EDCA /* UICallBar~ipad.xib */,
     				2214EB7812F846B1002A5394 /* UICallButton.h */,
     				2214EB7912F846B1002A5394 /* UICallButton.m */,
     				D36C43C4158F2E5A0048BA40 /* UICallCell.h */,
     				D36C43C5158F2E5A0048BA40 /* UICallCell.m */,
    -				D36C43C9158F2EE50048BA40 /* UICallCell.xib */,
    +				D381881415FE3F0B00C3EDCA /* UICallCell.xib */,
     				22AA8AFF13D83F6300B30535 /* UICamSwitch.h */,
     				22AA8B0013D83F6300B30535 /* UICamSwitch.m */,
     				D3EA540F159853750037DC6B /* UIChatCell.h */,
    @@ -2463,16 +2511,16 @@
     				D31B4B20159876C0002E6C72 /* UICompositeViewController.xib */,
     				D3211BAD159C4EF00098460B /* UIConferenceHeader.h */,
     				D3211BAE159C4EF00098460B /* UIConferenceHeader.m */,
    -				D3211BAF159C4EF10098460B /* UIConferenceHeader.xib */,
    +				D38187F315FE354000C3EDCA /* UIConferenceHeader.xib */,
     				D3A55FBA15877E5E003FD403 /* UIContactCell.h */,
     				D3A55FBB15877E5E003FD403 /* UIContactCell.m */,
     				D3A55FBE15877E69003FD403 /* UIContactCell.xib */,
     				D3E8F68315ADE0570065A226 /* UIContactDetailsFooter.h */,
     				D3E8F68415ADE0580065A226 /* UIContactDetailsFooter.m */,
    -				D3E8F68515ADE05A0065A226 /* UIContactDetailsFooter.xib */,
    +				D38187F715FE354700C3EDCA /* UIContactDetailsFooter.xib */,
     				D37C639215AADDAE009D0BAC /* UIContactDetailsHeader.h */,
     				D37C639315AADDAE009D0BAC /* UIContactDetailsHeader.m */,
    -				D37C639415AADDAF009D0BAC /* UIContactDetailsHeader.xib */,
    +				D381881815FE3F7F00C3EDCA /* UIContactDetailsHeader.xib */,
     				2248E90C12F7E4CF00220D9C /* UIDigitButton.h */,
     				2248E90D12F7E4CF00220D9C /* UIDigitButton.m */,
     				D3C6526515AC1A8F0092A874 /* UIEditableTableViewCell.h */,
    @@ -2490,8 +2538,8 @@
     				D32409C2158B49A600C8C119 /* UILongTouchButton.m */,
     				D3ED3E841586291B006C0DE4 /* UIMainBar.h */,
     				D3ED3E851586291B006C0DE4 /* UIMainBar.m */,
    -				D3ED3E861586291C006C0DE4 /* UIMainBar.xib */,
    -				D3A74E5B15C6922A001500B9 /* UIMainBar~ipad.xib */,
    +				D38187FB15FE355D00C3EDCA /* UIMainBar.xib */,
    +				D38187FF15FE356100C3EDCA /* UIMainBar~ipad.xib */,
     				2214EBF112F86360002A5394 /* UIMicroButton.h */,
     				2214EBF212F86360002A5394 /* UIMicroButton.m */,
     				D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */,
    @@ -2647,7 +2695,6 @@
     				080E96DDFE201D6D7F000001 /* Classes */,
     				29B97323FDCFA39411CA2CEA /* Frameworks */,
     				220FAC77107654FC0068D98F /* include */,
    -				2214783B1386A2030020F8B8 /* Localizable.strings */,
     				29B97315FDCFA39411CA2CEA /* Other Sources */,
     				19C28FACFE9D520D11CA2CBB /* Products */,
     				29B97317FDCFA39411CA2CEA /* Resources */,
    @@ -2875,6 +2922,7 @@
     				D3EA5417159858A80037DC6B /* list_delete_over.png */,
     				D354981815876FE7000081D8 /* list_details_default.png */,
     				D354981915876FE7000081D8 /* list_details_over.png */,
    +				2214783B1386A2030020F8B8 /* Localizable.strings */,
     				D3F83EF4158205A100336684 /* micro_off_default.png */,
     				D3C31A0F15BD8DED008ED271 /* micro_off_default_landscape.png */,
     				D339889215C6DD1600CAF1E4 /* micro_off_default_landscape~ipad.png */,
    @@ -3350,7 +3398,7 @@
     				225CB2FA11ABB76400628906 /* linphone-banner.png in Resources */,
     				2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */,
     				2242E313125235120061DDCE /* ring.caf in Resources */,
    -				2218A92612FBE1340088A667 /* FirstLoginViewController.xib in Resources */,
    +				D38187C915FE346400C3EDCA /* FirstLoginViewController.xib in Resources */,
     				2214783D1386A2030020F8B8 /* Localizable.strings in Resources */,
     				70571E1A13FABCB000CDD3C2 /* rootca.pem in Resources */,
     				34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */,
    @@ -3369,7 +3417,6 @@
     				D3832801158100E400FA0D23 /* history_over.png in Resources */,
     				D3832802158100E400FA0D23 /* settings_over.png in Resources */,
     				D3832803158100E400FA0D23 /* chat_over.png in Resources */,
    -				D3F83EEE1582021700336684 /* InCallViewController.xib in Resources */,
     				D3F83F0C158205A100336684 /* micro_off_default.png in Resources */,
     				D3F83F0E158205A100336684 /* micro_off_over.png in Resources */,
     				D3F83F10158205A100336684 /* micro_on_default.png in Resources */,
    @@ -3424,15 +3471,15 @@
     				D3ED3E7415861ABD006C0DE4 /* call_over.png in Resources */,
     				D3ED3E7815861B1B006C0DE4 /* backspace_default.png in Resources */,
     				D3ED3E7A15861B1B006C0DE4 /* backspace_over.png in Resources */,
    -				D3ED3E891586291E006C0DE4 /* UIMainBar.xib in Resources */,
    +				D38187F815FE355D00C3EDCA /* UIMainBar.xib in Resources */,
     				D3ED3E9815872EF1006C0DE4 /* history_all_selected.png in Resources */,
     				D3ED3E9A15872EF1006C0DE4 /* history_all_default.png in Resources */,
     				D3ED3E9C15872EF1006C0DE4 /* history_edit_default.png in Resources */,
     				D3ED3E9E15872EF1006C0DE4 /* history_edit_over.png in Resources */,
     				D3ED3EA015872EF1006C0DE4 /* history_missed_selected.png in Resources */,
     				D3ED3EA215872EF1006C0DE4 /* history_missed_default.png in Resources */,
    -				D3ED3EB3158738FB006C0DE4 /* HistoryViewController.xib in Resources */,
    -				D354980015875372000081D8 /* ContactsViewController.xib in Resources */,
    +				D38187D115FE346B00C3EDCA /* HistoryViewController.xib in Resources */,
    +				D38187BD15FE342800C3EDCA /* ContactsViewController.xib in Resources */,
     				D354980615875534000081D8 /* contacts_all_selected.png in Resources */,
     				D354980815875534000081D8 /* contacts_all_default.png in Resources */,
     				D354980A15875534000081D8 /* contacts_linphone_selected.png in Resources */,
    @@ -3443,7 +3490,7 @@
     				D354981C15876FE7000081D8 /* list_details_over.png in Resources */,
     				D35498231587716B000081D8 /* UIStateBar.xib in Resources */,
     				D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */,
    -				D32648401588950F00930C67 /* UICallBar.xib in Resources */,
    +				D38187E115FE349700C3EDCA /* UICallBar.xib in Resources */,
     				D31C9C90158A1C1000756B45 /* call_status_incoming.png in Resources */,
     				D31C9C92158A1C1000756B45 /* call_status_missed.png in Resources */,
     				D31C9C94158A1C1000756B45 /* call_status_outgoing.png in Resources */,
    @@ -3457,7 +3504,6 @@
     				D3432A71158A45AF001C6B0B /* led_inprogress.png in Resources */,
     				D3432A73158A45AF001C6B0B /* led_disconnected.png in Resources */,
     				D37295DB158B3C9600D2C0C7 /* video_off_disabled.png in Resources */,
    -				D36C43CA158F2EE50048BA40 /* UICallCell.xib in Resources */,
     				D36C43D1158F2F370048BA40 /* cell_call.png in Resources */,
     				D36C43D3158F2F370048BA40 /* cell_conference.png in Resources */,
     				D36C43D5158F2F370048BA40 /* header_conference.png in Resources */,
    @@ -3473,7 +3519,7 @@
     				D35E757A15931E5D0066B1C1 /* switch_camera_over.png in Resources */,
     				D35E758915932DE60066B1C1 /* backspace_disabled.png in Resources */,
     				D35E758D15934F360066B1C1 /* call_disabled.png in Resources */,
    -				D35E7599159460580066B1C1 /* ChatViewController.xib in Resources */,
    +				D38187B115FE340500C3EDCA /* ChatViewController.xib in Resources */,
     				D32942A41594C94300556A1C /* SettingsViewController.xib in Resources */,
     				D34F6F9E1594D3FB0095705B /* InAppSettings.bundle in Resources */,
     				D3EA5403159852080037DC6B /* chat_edit_default.png in Resources */,
    @@ -3483,7 +3529,7 @@
     				D3EA5414159853C90037DC6B /* UIChatCell.xib in Resources */,
     				D3EA5418159858A80037DC6B /* list_delete_default.png in Resources */,
     				D3EA541A159858A80037DC6B /* list_delete_over.png in Resources */,
    -				D3F26BF315986B73005F9CAB /* IncomingCallViewController.xib in Resources */,
    +				D38187D915FE347700C3EDCA /* IncomingCallViewController.xib in Resources */,
     				D3F26BF715986DAD005F9CAB /* history_ok_default.png in Resources */,
     				D3F26BF915986DAD005F9CAB /* history_ok_over.png in Resources */,
     				D3F26BFC15987083005F9CAB /* header_incoming.png in Resources */,
    @@ -3504,7 +3550,7 @@
     				D31AAF65159B5B6F002C6B02 /* conference_over.png in Resources */,
     				D31AAF6E159B65E1002C6B02 /* call_state_ringing_default.png in Resources */,
     				D3211BA6159C3D410098460B /* call_state_outgoing_default.png in Resources */,
    -				D3211BB2159C4EF10098460B /* UIConferenceHeader.xib in Resources */,
    +				D38187F015FE354000C3EDCA /* UIConferenceHeader.xib in Resources */,
     				D3211BB9159C8A820098460B /* cell_call_first.png in Resources */,
     				D3211BBE159CBFD60098460B /* back_default.png in Resources */,
     				D3211BC0159CBFD70098460B /* back_disabled.png in Resources */,
    @@ -3525,7 +3571,7 @@
     				D3196D3615A321E3007FEEBA /* options_add_over.png in Resources */,
     				D3196D3815A321E3007FEEBA /* options_transfer_default.png in Resources */,
     				D3196D3A15A321E3007FEEBA /* options_transfer_over.png in Resources */,
    -				D350F21015A43BB100149E54 /* WizardViewController.xib in Resources */,
    +				D38187DD15FE348A00C3EDCA /* WizardViewController.xib in Resources */,
     				D350F21C15A43D3400149E54 /* setup_back_default.png in Resources */,
     				D350F21E15A43D3400149E54 /* setup_back_over.png in Resources */,
     				D350F22015A43D3400149E54 /* setup_cancel_default.png in Resources */,
    @@ -3537,7 +3583,7 @@
     				D350F22C15A43D3400149E54 /* setup_welcome_logo.png in Resources */,
     				D35406F715A47E9E007E7E81 /* button_background_default.png in Resources */,
     				D35406F915A47E9E007E7E81 /* button_background_over.png in Resources */,
    -				D3F795D815A582810077328B /* ChatRoomViewController.xib in Resources */,
    +				D38187AD15FE340100C3EDCA /* ChatRoomViewController.xib in Resources */,
     				D3F795DD15A5831C0077328B /* chat_back_default.png in Resources */,
     				D3F795DF15A5831C0077328B /* chat_back_over.png in Resources */,
     				D3B9A3DF15A58C450096EA4E /* chat_field.png in Resources */,
    @@ -3555,18 +3601,18 @@
     				D389363915A6D53200A3A3AA /* chat_bubble_incoming.9.png in Resources */,
     				D389363B15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */,
     				D3D14E7C15A711700074A527 /* avatar_shadow_small.png in Resources */,
    -				D3128FE315AABC7E00A2147A /* ContactDetailsViewController.xib in Resources */,
    +				D38187B915FE342200C3EDCA /* ContactDetailsViewController.xib in Resources */,
     				D3128FEF15AABE4E00A2147A /* contact_back_default.png in Resources */,
     				D3128FF115AABE4E00A2147A /* contact_back_over.png in Resources */,
     				D3128FF315AABE4E00A2147A /* contact_edit_default.png in Resources */,
     				D3128FF515AABE4E00A2147A /* contact_edit_over.png in Resources */,
     				D37C638E15AAD251009D0BAC /* contact_number_over.png in Resources */,
     				D37C639015AAD251009D0BAC /* contact_number.png in Resources */,
    -				D37C639715AADDAF009D0BAC /* UIContactDetailsHeader.xib in Resources */,
    +				D381881515FE3F7F00C3EDCA /* UIContactDetailsHeader.xib in Resources */,
     				D3C6526B15AC228A0092A874 /* contact_ok_default.png in Resources */,
     				D3C6526D15AC228A0092A874 /* contact_ok_over.png in Resources */,
    -				D378906715AC373B00BD776C /* ContactDetailsLabelViewController.xib in Resources */,
    -				D3E8F68815ADE05B0065A226 /* UIContactDetailsFooter.xib in Resources */,
    +				D38187B515FE341B00C3EDCA /* ContactDetailsLabelViewController.xib in Resources */,
    +				D38187F415FE354700C3EDCA /* UIContactDetailsFooter.xib in Resources */,
     				D32D5AA715ADE5D9008593F3 /* button_alert_background_default.png in Resources */,
     				D32D5AA915ADE5D9008593F3 /* button_alert_background_over.png in Resources */,
     				C9C8254315AE204D00D493FA /* options_add_disabled.png in Resources */,
    @@ -3575,7 +3621,7 @@
     				C9C8254915AE204D00D493FA /* transfer_call_over.png in Resources */,
     				C9C8254C15AE207B00D493FA /* options_selected.png in Resources */,
     				C9C8254F15AE256100D493FA /* transfer_call_disabled.png in Resources */,
    -				C90FAA7B15AF54E6002091CB /* HistoryDetailsViewController.xib in Resources */,
    +				D38187CD15FE346700C3EDCA /* HistoryDetailsViewController.xib in Resources */,
     				D3F9A9DB15AEEB940045320F /* history_notification.png in Resources */,
     				D3E84F1E15B00F4100420DAC /* cancel_default.png in Resources */,
     				D3E84F2015B00F4100420DAC /* cancel_over.png in Resources */,
    @@ -3634,7 +3680,7 @@
     				D3C31A8415BD8DED008ED271 /* video_on_disabled_landscape.png in Resources */,
     				D3C31A8615BD8DED008ED271 /* video_on_over_landscape.png in Resources */,
     				D3A74E5915C68162001500B9 /* toolsbar_background.png in Resources */,
    -				D3A74E5C15C6922A001500B9 /* UIMainBar~ipad.xib in Resources */,
    +				D38187FC15FE356100C3EDCA /* UIMainBar~ipad.xib in Resources */,
     				D3A74EB215C69392001500B9 /* add_call_default~ipad.png in Resources */,
     				D3A74EB415C69392001500B9 /* add_call_disabled~ipad.png in Resources */,
     				D3A74EB615C69392001500B9 /* add_call_over~ipad.png in Resources */,
    @@ -3721,9 +3767,9 @@
     				D3A74F5815C69392001500B9 /* video_on_over~ipad.png in Resources */,
     				D3A74F5B15C6AA0B001500B9 /* chat_field.9.png in Resources */,
     				D3A74F5E15C6ADA9001500B9 /* chat_field.9@2x.png in Resources */,
    -				D3A74F6115C6B03C001500B9 /* DialerViewController~ipad.xib in Resources */,
    +				D38187C515FE345F00C3EDCA /* DialerViewController~ipad.xib in Resources */,
     				D3BDB9B915C6B5B1007BEAC1 /* transfer_call_disabled~ipad.png in Resources */,
    -				D3ACB09715C6D0F700E15894 /* UICallBar~ipad.xib in Resources */,
    +				D38187E515FE349D00C3EDCA /* UICallBar~ipad.xib in Resources */,
     				D3ACB09B15C6D59500E15894 /* dialer_alt_back_default~ipad.png in Resources */,
     				D3ACB09D15C6D59500E15894 /* dialer_alt_back_over~ipad.png in Resources */,
     				D33988B415C6DD1600CAF1E4 /* conference_default_landscape~ipad.png in Resources */,
    @@ -3774,13 +3820,20 @@
     				D3804E6015D92A57008072A5 /* msg.caf in Resources */,
     				D3804E6215D92A57008072A5 /* msg.wav in Resources */,
     				D321FF9915E628CB0098B5F4 /* linphonerc~ipad in Resources */,
    -				2234C8CA15ED049A00E18E83 /* DialerViewController.xib in Resources */,
    +				D38187C115FE345B00C3EDCA /* DialerViewController.xib in Resources */,
     				57F005C415EE2CCF00914747 /* linphonerc in Resources */,
     				57F005C815EE2D9200914747 /* linphonerc-factory in Resources */,
     				57F005CA15EE2D9200914747 /* linphonerc-factory~ipad in Resources */,
     				2234C8E915EE2F7F00E18E83 /* chat_message_delivered.png in Resources */,
     				2234C8EB15EE2F7F00E18E83 /* chat_message_not_delivered.png in Resources */,
     				2234C8EE15EE744200E18E83 /* chat_message_inprogress.png in Resources */,
    +				D381881115FE3F0B00C3EDCA /* UICallCell.xib in Resources */,
    +				D381881915FE3FCA00C3EDCA /* InCallViewController.xib in Resources */,
    +				D381883E15FE447200C3EDCA /* ChatRoomViewController.xib in Resources */,
    +				D381884415FE447200C3EDCA /* ChatViewController.xib in Resources */,
    +				D381885415FE448400C3EDCA /* UICallBar.xib in Resources */,
    +				D381885615FE448400C3EDCA /* UICallBar~ipad.xib in Resources */,
    +				D381885915FE44A700C3EDCA /* accept_default.png in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -3788,17 +3841,16 @@
     			isa = PBXResourcesBuildPhase;
     			buildActionMask = 2147483647;
     			files = (
    -				D34BD73415C13DF40070C209 /* UICallBar.xib in Resources */,
    -				D34BD73515C13DF40070C209 /* UICallCell.xib in Resources */,
    +				D38187E215FE349700C3EDCA /* UICallBar.xib in Resources */,
     				D34BD73615C13DF40070C209 /* UIChatCell.xib in Resources */,
     				D34BD73715C13DF40070C209 /* UIChatRoomCell.xib in Resources */,
     				D34BD73815C13DF40070C209 /* UICompositeViewController.xib in Resources */,
    -				D34BD73915C13DF40070C209 /* UIConferenceHeader.xib in Resources */,
    +				D38187F115FE354000C3EDCA /* UIConferenceHeader.xib in Resources */,
     				D34BD73A15C13DF40070C209 /* UIContactCell.xib in Resources */,
    -				D34BD73B15C13DF40070C209 /* UIContactDetailsFooter.xib in Resources */,
    -				D34BD73C15C13DF40070C209 /* UIContactDetailsHeader.xib in Resources */,
    +				D38187F515FE354700C3EDCA /* UIContactDetailsFooter.xib in Resources */,
    +				D381881615FE3F7F00C3EDCA /* UIContactDetailsHeader.xib in Resources */,
     				D34BD73D15C13DF40070C209 /* UIHistoryCell.xib in Resources */,
    -				D34BD73E15C13DF40070C209 /* UIMainBar.xib in Resources */,
    +				D38187F915FE355D00C3EDCA /* UIMainBar.xib in Resources */,
     				D34BD73F15C13DF40070C209 /* UIStateBar.xib in Resources */,
     				D34BD61A15C13DB60070C209 /* accept_default.png in Resources */,
     				D34BD61B15C13DB60070C209 /* accept_over.png in Resources */,
    @@ -3814,22 +3866,21 @@
     				D34BD62515C13DB60070C209 /* avatar_unknown_small.png in Resources */,
     				D34BD62615C13DB60070C209 /* back_default.png in Resources */,
     				D34BD62715C13DB60070C209 /* back_disabled.png in Resources */,
    -				D34BD72315C13DD40070C209 /* ChatRoomViewController.xib in Resources */,
    -				D34BD72415C13DD40070C209 /* ChatViewController.xib in Resources */,
    +				D38187AE15FE340100C3EDCA /* ChatRoomViewController.xib in Resources */,
    +				D38187B215FE340500C3EDCA /* ChatViewController.xib in Resources */,
     				D34BD72515C13DD40070C209 /* ConsoleViewController.xib in Resources */,
    -				D34BD72615C13DD40070C209 /* ContactDetailsLabelViewController.xib in Resources */,
    -				D34BD72715C13DD40070C209 /* ContactDetailsViewController.xib in Resources */,
    -				D34BD72815C13DD40070C209 /* ContactsViewController.xib in Resources */,
    -				D34BD72915C13DD40070C209 /* FirstLoginViewController.xib in Resources */,
    -				D34BD72A15C13DD40070C209 /* HistoryDetailsViewController.xib in Resources */,
    -				D34BD72B15C13DD40070C209 /* HistoryViewController.xib in Resources */,
    -				D34BD72D15C13DD40070C209 /* InCallViewController.xib in Resources */,
    -				D34BD72E15C13DD40070C209 /* IncomingCallViewController.xib in Resources */,
    +				D38187B615FE341B00C3EDCA /* ContactDetailsLabelViewController.xib in Resources */,
    +				D38187BA15FE342200C3EDCA /* ContactDetailsViewController.xib in Resources */,
    +				D38187BE15FE342800C3EDCA /* ContactsViewController.xib in Resources */,
    +				D38187CA15FE346400C3EDCA /* FirstLoginViewController.xib in Resources */,
    +				D38187CE15FE346700C3EDCA /* HistoryDetailsViewController.xib in Resources */,
    +				D38187D215FE346B00C3EDCA /* HistoryViewController.xib in Resources */,
    +				D38187DA15FE347700C3EDCA /* IncomingCallViewController.xib in Resources */,
     				D34BD72F15C13DD40070C209 /* LinphoneApp.xib in Resources */,
     				D34BD73015C13DD40070C209 /* MoreViewController.xib in Resources */,
     				D34BD73115C13DD40070C209 /* PhoneMainView.xib in Resources */,
     				D34BD73215C13DD40070C209 /* SettingsViewController.xib in Resources */,
    -				D34BD73315C13DD40070C209 /* WizardViewController.xib in Resources */,
    +				D38187DE15FE348A00C3EDCA /* WizardViewController.xib in Resources */,
     				D34BD62815C13DB60070C209 /* back_over.png in Resources */,
     				D34BD62915C13DB60070C209 /* background.png in Resources */,
     				D34BD62A15C13DB60070C209 /* backspace_default.png in Resources */,
    @@ -4079,7 +4130,7 @@
     				D34BD74015C13E110070C209 /* InAppSettings.bundle in Resources */,
     				D34BD74115C13E250070C209 /* Localizable.strings in Resources */,
     				D3A74E5A15C68162001500B9 /* toolsbar_background.png in Resources */,
    -				D3A74E5D15C6922A001500B9 /* UIMainBar~ipad.xib in Resources */,
    +				D38187FD15FE356100C3EDCA /* UIMainBar~ipad.xib in Resources */,
     				D3A74EB315C69392001500B9 /* add_call_default~ipad.png in Resources */,
     				D3A74EB515C69392001500B9 /* add_call_disabled~ipad.png in Resources */,
     				D3A74EB715C69392001500B9 /* add_call_over~ipad.png in Resources */,
    @@ -4166,9 +4217,9 @@
     				D3A74F5915C69392001500B9 /* video_on_over~ipad.png in Resources */,
     				D3A74F5C15C6AA0B001500B9 /* chat_field.9.png in Resources */,
     				D3A74F5F15C6ADA9001500B9 /* chat_field.9@2x.png in Resources */,
    -				D3A74F6215C6B03C001500B9 /* DialerViewController~ipad.xib in Resources */,
    +				D38187C615FE345F00C3EDCA /* DialerViewController~ipad.xib in Resources */,
     				D3BDB9BA15C6B5B1007BEAC1 /* transfer_call_disabled~ipad.png in Resources */,
    -				D3ACB09815C6D0F700E15894 /* UICallBar~ipad.xib in Resources */,
    +				D38187E615FE349D00C3EDCA /* UICallBar~ipad.xib in Resources */,
     				D3ACB09C15C6D59500E15894 /* dialer_alt_back_default~ipad.png in Resources */,
     				D3ACB09E15C6D59500E15894 /* dialer_alt_back_over~ipad.png in Resources */,
     				D33988B515C6DD1600CAF1E4 /* conference_default_landscape~ipad.png in Resources */,
    @@ -4219,13 +4270,20 @@
     				D3804E6115D92A57008072A5 /* msg.caf in Resources */,
     				D3804E6315D92A57008072A5 /* msg.wav in Resources */,
     				D321FF9A15E628CB0098B5F4 /* linphonerc~ipad in Resources */,
    -				2234C8CB15ED049A00E18E83 /* DialerViewController.xib in Resources */,
    +				D38187C215FE345B00C3EDCA /* DialerViewController.xib in Resources */,
     				57F005C515EE2CCF00914747 /* linphonerc in Resources */,
     				57F005C915EE2D9200914747 /* linphonerc-factory in Resources */,
     				57F005CB15EE2D9200914747 /* linphonerc-factory~ipad in Resources */,
     				2234C8EA15EE2F7F00E18E83 /* chat_message_delivered.png in Resources */,
     				2234C8EC15EE2F7F00E18E83 /* chat_message_not_delivered.png in Resources */,
     				2234C8EF15EE744200E18E83 /* chat_message_inprogress.png in Resources */,
    +				D381881215FE3F0B00C3EDCA /* UICallCell.xib in Resources */,
    +				D381881A15FE3FCA00C3EDCA /* InCallViewController.xib in Resources */,
    +				D381883F15FE447200C3EDCA /* ChatRoomViewController.xib in Resources */,
    +				D381884515FE447200C3EDCA /* ChatViewController.xib in Resources */,
    +				D381885515FE448400C3EDCA /* UICallBar.xib in Resources */,
    +				D381885715FE448400C3EDCA /* UICallBar~ipad.xib in Resources */,
    +				D381885A15FE44A700C3EDCA /* accept_default.png in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4348,6 +4406,14 @@
     				D380800515C28A7A005BE9BC /* UILinphone.m in Sources */,
     				D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
     				D378AB2A15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
    +				D381883815FE447200C3EDCA /* CallDelegate.m in Sources */,
    +				D381883A15FE447200C3EDCA /* ChatRoomTableViewController.m in Sources */,
    +				D381883C15FE447200C3EDCA /* ChatRoomViewController.m in Sources */,
    +				D381884015FE447200C3EDCA /* ChatTableViewController.m in Sources */,
    +				D381884215FE447200C3EDCA /* ChatViewController.m in Sources */,
    +				D381884E15FE448400C3EDCA /* UIAddressTextField.m in Sources */,
    +				D381885015FE448400C3EDCA /* UIBluetoothButton.m in Sources */,
    +				D381885215FE448400C3EDCA /* UICallBar.m in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4438,6 +4504,14 @@
     				D380800615C28A7A005BE9BC /* UILinphone.m in Sources */,
     				D380801415C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
     				D378AB2B15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
    +				D381883915FE447200C3EDCA /* CallDelegate.m in Sources */,
    +				D381883B15FE447200C3EDCA /* ChatRoomTableViewController.m in Sources */,
    +				D381883D15FE447200C3EDCA /* ChatRoomViewController.m in Sources */,
    +				D381884115FE447200C3EDCA /* ChatTableViewController.m in Sources */,
    +				D381884315FE447200C3EDCA /* ChatViewController.m in Sources */,
    +				D381884F15FE448400C3EDCA /* UIAddressTextField.m in Sources */,
    +				D381885115FE448400C3EDCA /* UIBluetoothButton.m in Sources */,
    +				D381885315FE448400C3EDCA /* UICallBar.m in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4471,10 +4545,200 @@
     			isa = PBXVariantGroup;
     			children = (
     				2214783C1386A2030020F8B8 /* en */,
    +				D381885815FE44A700C3EDCA /* fr */,
     			);
     			name = Localizable.strings;
     			sourceTree = "";
     		};
    +		D38187B015FE340100C3EDCA /* ChatRoomViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187AF15FE340100C3EDCA /* en */,
    +				D381882B15FE447200C3EDCA /* fr */,
    +			);
    +			name = ChatRoomViewController.xib;
    +			sourceTree = "";
    +		};
    +		D38187B415FE340500C3EDCA /* ChatViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187B315FE340500C3EDCA /* en */,
    +				D381882C15FE447200C3EDCA /* fr */,
    +			);
    +			name = ChatViewController.xib;
    +			sourceTree = "";
    +		};
    +		D38187B815FE341B00C3EDCA /* ContactDetailsLabelViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187B715FE341B00C3EDCA /* en */,
    +				D381882D15FE447200C3EDCA /* fr */,
    +			);
    +			name = ContactDetailsLabelViewController.xib;
    +			sourceTree = "";
    +		};
    +		D38187BC15FE342200C3EDCA /* ContactDetailsViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187BB15FE342200C3EDCA /* en */,
    +				D381882E15FE447200C3EDCA /* fr */,
    +			);
    +			name = ContactDetailsViewController.xib;
    +			sourceTree = "";
    +		};
    +		D38187C015FE342800C3EDCA /* ContactsViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187BF15FE342800C3EDCA /* en */,
    +				D381882F15FE447200C3EDCA /* fr */,
    +			);
    +			name = ContactsViewController.xib;
    +			sourceTree = "";
    +		};
    +		D38187C415FE345B00C3EDCA /* DialerViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187C315FE345B00C3EDCA /* en */,
    +				D381883015FE447200C3EDCA /* fr */,
    +			);
    +			name = DialerViewController.xib;
    +			sourceTree = "";
    +		};
    +		D38187C815FE345F00C3EDCA /* DialerViewController~ipad.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187C715FE345F00C3EDCA /* en */,
    +				D381883115FE447200C3EDCA /* fr */,
    +			);
    +			name = "DialerViewController~ipad.xib";
    +			sourceTree = "";
    +		};
    +		D38187CC15FE346400C3EDCA /* FirstLoginViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187CB15FE346400C3EDCA /* en */,
    +				D381883215FE447200C3EDCA /* fr */,
    +			);
    +			name = FirstLoginViewController.xib;
    +			sourceTree = "";
    +		};
    +		D38187D015FE346700C3EDCA /* HistoryDetailsViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187CF15FE346700C3EDCA /* en */,
    +				D381883315FE447200C3EDCA /* fr */,
    +			);
    +			name = HistoryDetailsViewController.xib;
    +			sourceTree = "";
    +		};
    +		D38187D415FE346B00C3EDCA /* HistoryViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187D315FE346B00C3EDCA /* en */,
    +				D381883415FE447200C3EDCA /* fr */,
    +			);
    +			name = HistoryViewController.xib;
    +			sourceTree = "";
    +		};
    +		D38187DC15FE347700C3EDCA /* IncomingCallViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187DB15FE347700C3EDCA /* en */,
    +				D381883615FE447200C3EDCA /* fr */,
    +			);
    +			name = IncomingCallViewController.xib;
    +			sourceTree = "";
    +		};
    +		D38187E015FE348A00C3EDCA /* WizardViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187DF15FE348A00C3EDCA /* en */,
    +				D381883715FE447200C3EDCA /* fr */,
    +			);
    +			name = WizardViewController.xib;
    +			sourceTree = "";
    +		};
    +		D38187E415FE349700C3EDCA /* UICallBar.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187E315FE349700C3EDCA /* en */,
    +				D381884615FE448400C3EDCA /* fr */,
    +			);
    +			name = UICallBar.xib;
    +			sourceTree = "";
    +		};
    +		D38187E815FE349D00C3EDCA /* UICallBar~ipad.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187E715FE349D00C3EDCA /* en */,
    +				D381884715FE448400C3EDCA /* fr */,
    +			);
    +			name = "UICallBar~ipad.xib";
    +			sourceTree = "";
    +		};
    +		D38187F315FE354000C3EDCA /* UIConferenceHeader.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187F215FE354000C3EDCA /* en */,
    +				D381884915FE448400C3EDCA /* fr */,
    +			);
    +			name = UIConferenceHeader.xib;
    +			sourceTree = "";
    +		};
    +		D38187F715FE354700C3EDCA /* UIContactDetailsFooter.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187F615FE354700C3EDCA /* en */,
    +				D381884A15FE448400C3EDCA /* fr */,
    +			);
    +			name = UIContactDetailsFooter.xib;
    +			sourceTree = "";
    +		};
    +		D38187FB15FE355D00C3EDCA /* UIMainBar.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187FA15FE355D00C3EDCA /* en */,
    +				D381884C15FE448400C3EDCA /* fr */,
    +			);
    +			name = UIMainBar.xib;
    +			sourceTree = "";
    +		};
    +		D38187FF15FE356100C3EDCA /* UIMainBar~ipad.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D38187FE15FE356100C3EDCA /* en */,
    +				D381884D15FE448400C3EDCA /* fr */,
    +			);
    +			name = "UIMainBar~ipad.xib";
    +			sourceTree = "";
    +		};
    +		D381881415FE3F0B00C3EDCA /* UICallCell.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D381881315FE3F0B00C3EDCA /* en */,
    +				D381884815FE448400C3EDCA /* fr */,
    +			);
    +			name = UICallCell.xib;
    +			sourceTree = "";
    +		};
    +		D381881815FE3F7F00C3EDCA /* UIContactDetailsHeader.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D381881715FE3F7F00C3EDCA /* en */,
    +				D381884B15FE448400C3EDCA /* fr */,
    +			);
    +			name = UIContactDetailsHeader.xib;
    +			sourceTree = "";
    +		};
    +		D381881C15FE3FCA00C3EDCA /* InCallViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D381881B15FE3FCA00C3EDCA /* en */,
    +				D381883515FE447200C3EDCA /* fr */,
    +			);
    +			name = InCallViewController.xib;
    +			sourceTree = "";
    +		};
     /* End PBXVariantGroup section */
     
     /* Begin XCBuildConfiguration section */
    
    From 179fc7ab1824cbc1852e0367ce208dd5a0a5832c Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Tue, 11 Sep 2012 12:33:07 +0200
    Subject: [PATCH 200/397] Add French translation
    
    ---
     Classes/LinphoneUI/UIContactDetailsHeader.m   |    7 +
     Classes/LinphoneUI/en.lproj/UICallBar.xib     |   22 +-
     .../LinphoneUI/en.lproj/UICallBar~ipad.xib    |   22 +-
     Classes/LinphoneUI/en.lproj/UICallCell.xib    |    4 +-
     Classes/LinphoneUI/en.lproj/UIMainBar.xib     |    4 +-
     .../LinphoneUI/en.lproj/UIMainBar~ipad.xib    |   14 +-
     Classes/LinphoneUI/fr.lproj/UICallBar.xib     |   38 +-
     .../LinphoneUI/fr.lproj/UICallBar~ipad.xib    |   38 +-
     Classes/LinphoneUI/fr.lproj/UICallCell.xib    |   12 +-
     .../fr.lproj/UIConferenceHeader.xib           |    2 +-
     .../fr.lproj/UIContactDetailsFooter.xib       |    4 +-
     .../fr.lproj/UIContactDetailsHeader.xib       |    4 +-
     Classes/LinphoneUI/fr.lproj/UIMainBar.xib     |   10 +-
     .../LinphoneUI/fr.lproj/UIMainBar~ipad.xib    |   20 +-
     Classes/PhoneMainView.m                       |    2 +-
     Classes/WizardViewController.m                |    2 +-
     Classes/en.lproj/DialerViewController.xib     |    3 +-
     .../en.lproj/DialerViewController~ipad.xib    |    3 +-
     Classes/en.lproj/WizardViewController.xib     |    8 +-
     Classes/fr.lproj/ChatRoomViewController.xib   |   12 +-
     Classes/fr.lproj/ChatViewController.xib       |    8 +-
     .../ContactDetailsLabelViewController.xib     |    2 +-
     .../fr.lproj/ContactDetailsViewController.xib |    6 +-
     Classes/fr.lproj/ContactsViewController.xib   |    8 +-
     Classes/fr.lproj/DialerViewController.xib     |   20 +-
     .../fr.lproj/DialerViewController~ipad.xib    |   20 +-
     Classes/fr.lproj/FirstLoginViewController.xib |   12 +-
     .../fr.lproj/HistoryDetailsViewController.xib |   18 +-
     Classes/fr.lproj/HistoryViewController.xib    |    8 +-
     Classes/fr.lproj/InCallViewController.xib     |    2 +-
     .../fr.lproj/IncomingCallViewController.xib   |   10 +-
     Classes/fr.lproj/WizardViewController.xib     |   92 +-
     Resources/en.lproj/Localizable.strings        |  Bin 12704 -> 13566 bytes
     Resources/fr.lproj/Localizable.strings        |  Bin 12704 -> 14018 bytes
     Settings/InAppSettings.bundle/Video.plist     |    4 +-
     .../en.lproj/Advanced.strings                 |   51 +
     .../en.lproj/Audio.strings                    |   30 +
     .../en.lproj/Call.strings                     |   12 +
     .../en.lproj/Root.strings                     |  Bin 546 -> 693 bytes
     .../en.lproj/Video.strings                    |   21 +
     .../fr.lproj/Advanced.strings                 |   51 +
     .../fr.lproj/Audio.strings                    |  Bin 0 -> 66 bytes
     .../fr.lproj/Call.strings                     |  Bin 0 -> 518 bytes
     .../fr.lproj/Root.strings                     |   54 +
     .../fr.lproj/Video.strings                    |  Bin 0 -> 488 bytes
     linphone-Info.plist                           |   31 +-
     linphone.ldb/Contents.plist                   | 2853 +++++++++++++++--
     .../{1 => 2}/DialerViewController.xib         |    3 +-
     .../{1 => 2}/DialerViewController~ipad.xib    |    3 +-
     .../{1 => 2}/WizardViewController.xib         |    8 +-
     .../Advanced/1/Advanced.strings               |   51 +
     .../Audio/1/Audio.strings                     |   30 +
     .../InAppSettings.bundle/Call/1/Call.strings  |   12 +
     .../InAppSettings.bundle/Root/1/Root.strings  |   54 +
     .../Video/1/Video.strings                     |   21 +
     .../UICallBar/{1 => 2}/UICallBar.xib          |   22 +-
     .../{1 => 2}/UICallBar~ipad.xib               |   22 +-
     .../UICallCell/{1 => 2}/UICallCell.xib        |    4 +-
     .../UIMainBar/{1 => 2}/UIMainBar.xib          |    4 +-
     .../{1 => 2}/UIMainBar~ipad.xib               |   14 +-
     .../Localizable/1/Localizable.strings         |  Bin 12704 -> 13566 bytes
     linphone.xcodeproj/project.pbxproj            |   36 -
     62 files changed, 3318 insertions(+), 510 deletions(-)
     create mode 100644 Settings/InAppSettings.bundle/en.lproj/Advanced.strings
     create mode 100644 Settings/InAppSettings.bundle/en.lproj/Audio.strings
     create mode 100644 Settings/InAppSettings.bundle/en.lproj/Call.strings
     create mode 100644 Settings/InAppSettings.bundle/en.lproj/Video.strings
     create mode 100644 Settings/InAppSettings.bundle/fr.lproj/Advanced.strings
     create mode 100644 Settings/InAppSettings.bundle/fr.lproj/Audio.strings
     create mode 100644 Settings/InAppSettings.bundle/fr.lproj/Call.strings
     create mode 100644 Settings/InAppSettings.bundle/fr.lproj/Root.strings
     create mode 100644 Settings/InAppSettings.bundle/fr.lproj/Video.strings
     rename linphone.ldb/Resources/Classes/DialerViewController/{1 => 2}/DialerViewController.xib (99%)
     rename linphone.ldb/Resources/Classes/DialerViewController~ipad/{1 => 2}/DialerViewController~ipad.xib (99%)
     rename linphone.ldb/Resources/Classes/WizardViewController/{1 => 2}/WizardViewController.xib (99%)
     create mode 100644 linphone.ldb/Resources/InAppSettings.bundle/Advanced/1/Advanced.strings
     create mode 100644 linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings
     create mode 100644 linphone.ldb/Resources/InAppSettings.bundle/Call/1/Call.strings
     create mode 100644 linphone.ldb/Resources/InAppSettings.bundle/Root/1/Root.strings
     create mode 100644 linphone.ldb/Resources/InAppSettings.bundle/Video/1/Video.strings
     rename linphone.ldb/Resources/LinphoneUI/UICallBar/{1 => 2}/UICallBar.xib (99%)
     rename linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/{1 => 2}/UICallBar~ipad.xib (99%)
     rename linphone.ldb/Resources/LinphoneUI/UICallCell/{1 => 2}/UICallCell.xib (99%)
     rename linphone.ldb/Resources/LinphoneUI/UIMainBar/{1 => 2}/UIMainBar.xib (99%)
     rename linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/{1 => 2}/UIMainBar~ipad.xib (99%)
    
    diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m
    index c7e0dce04..24221d60a 100644
    --- a/Classes/LinphoneUI/UIContactDetailsHeader.m
    +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m
    @@ -188,6 +188,13 @@
         [contactDetailsDelegate onModification:nil];
     }
     
    ++ (NSString*)localizeLabel:(NSString*)str {
    +    CFStringRef lLocalizedLabel = ABAddressBookCopyLocalizedLabel((CFStringRef) str);
    +    NSString * retStr = [NSString stringWithString:(NSString*) lLocalizedLabel];
    +    CFRelease(lLocalizedLabel);
    +    return retStr;
    +}
    +
     #pragma mark - UITableViewDataSource Functions
     
     - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    diff --git a/Classes/LinphoneUI/en.lproj/UICallBar.xib b/Classes/LinphoneUI/en.lproj/UICallBar.xib
    index d3cebcc76..dba37abd8 100644
    --- a/Classes/LinphoneUI/en.lproj/UICallBar.xib
    +++ b/Classes/LinphoneUI/en.lproj/UICallBar.xib
    @@ -755,7 +755,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									Start conference
     								
     								IBCocoaTouchFramework
     								0
    @@ -1155,7 +1155,7 @@
     								NO
     								16
     								
    -									Add call
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1189,7 +1189,7 @@
     								NO
     								17
     								
    -									Add call
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1252,7 +1252,7 @@
     								NO
     								19
     								
    -									Video
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1303,7 +1303,7 @@
     								NO
     								21
     								
    -									Micro
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1341,7 +1341,7 @@
     								NO
     								22
     								
    -									Speaker
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1379,7 +1379,7 @@
     								NO
     								23
     								
    -									Add call
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1417,7 +1417,7 @@
     								NO
     								24
     								
    -									Pause
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1451,7 +1451,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1481,7 +1481,7 @@
     								NO
     								26
     								
    -									Hangup
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1511,7 +1511,7 @@
     								NO
     								27
     								
    -									Back
    +									
     								
     								IBCocoaTouchFramework
     								0
    diff --git a/Classes/LinphoneUI/en.lproj/UICallBar~ipad.xib b/Classes/LinphoneUI/en.lproj/UICallBar~ipad.xib
    index 4b3c2fdd3..001250eae 100644
    --- a/Classes/LinphoneUI/en.lproj/UICallBar~ipad.xib
    +++ b/Classes/LinphoneUI/en.lproj/UICallBar~ipad.xib
    @@ -420,7 +420,7 @@
     								NO
     								16
     								
    -									Add call
    +									
     								
     								IBIPadFramework
     								0
    @@ -457,7 +457,7 @@
     								NO
     								17
     								
    -									Add call
    +									
     								
     								IBIPadFramework
     								0
    @@ -520,7 +520,7 @@
     								NO
     								19
     								
    -									Video
    +									
     								
     								IBIPadFramework
     								0
    @@ -571,7 +571,7 @@
     								NO
     								21
     								
    -									Micro
    +									
     								
     								IBIPadFramework
     								0
    @@ -609,7 +609,7 @@
     								NO
     								22
     								
    -									Speaker
    +									
     								
     								IBIPadFramework
     								0
    @@ -647,7 +647,7 @@
     								NO
     								23
     								
    -									Add call
    +									
     								
     								IBIPadFramework
     								0
    @@ -685,7 +685,7 @@
     								NO
     								24
     								
    -									Pause
    +									
     								
     								IBIPadFramework
     								0
    @@ -719,7 +719,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									
     								
     								IBIPadFramework
     								0
    @@ -749,7 +749,7 @@
     								NO
     								26
     								
    -									Hangup
    +									
     								
     								IBIPadFramework
     								0
    @@ -779,7 +779,7 @@
     								NO
     								27
     								
    -									Back
    +									
     								
     								IBIPadFramework
     								0
    @@ -1455,7 +1455,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									Start conference
     								
     								IBIPadFramework
     								0
    diff --git a/Classes/LinphoneUI/en.lproj/UICallCell.xib b/Classes/LinphoneUI/en.lproj/UICallCell.xib
    index e17f7df5b..a41e70d36 100644
    --- a/Classes/LinphoneUI/en.lproj/UICallCell.xib
    +++ b/Classes/LinphoneUI/en.lproj/UICallCell.xib
    @@ -4674,13 +4674,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								{{262, 12}, {50, 29}}
     								
     								
    +								
     								_NS:9
     								NO
     								YES
     								7
     								NO
     								
    -									Call state
    +									Duration
     									
     								
     								IBCocoaTouchFramework
    @@ -4745,6 +4746,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     				{320, 460}
     				
     				
    +				
     				_NS:9
     				
     				NO
    diff --git a/Classes/LinphoneUI/en.lproj/UIMainBar.xib b/Classes/LinphoneUI/en.lproj/UIMainBar.xib
    index 6fb85e091..ea6cfc924 100644
    --- a/Classes/LinphoneUI/en.lproj/UIMainBar.xib
    +++ b/Classes/LinphoneUI/en.lproj/UIMainBar.xib
    @@ -145,7 +145,7 @@
     								7
     								NO
     								
    -									History missed
    +									Missed call(s)
     									
     								
     								IBCocoaTouchFramework
    @@ -339,7 +339,7 @@
     								7
     								NO
     								
    -									Chat missed
    +									Missed message(s)
     									
     								
     								IBCocoaTouchFramework
    diff --git a/Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib b/Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib
    index 430d80158..b3907761d 100644
    --- a/Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib
    +++ b/Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib
    @@ -146,7 +146,7 @@
     								7
     								NO
     								
    -									History missed
    +									Missed call(s)
     									
     								
     								IBIPadFramework
    @@ -345,7 +345,7 @@
     								7
     								NO
     								
    -									Chat missed
    +									Missed message(s)
     									
     								
     								IBIPadFramework
    @@ -432,7 +432,7 @@
     						NO
     						1
     						
    -							History
    +							
     						
     						IBIPadFramework
     						0
    @@ -515,7 +515,7 @@
     						NO
     						3
     						
    -							Contacts
    +							
     						
     						IBIPadFramework
     						0
    @@ -548,7 +548,7 @@
     						NO
     						4
     						
    -							Dialer
    +							
     						
     						IBIPadFramework
     						0
    @@ -572,7 +572,7 @@
     						NO
     						5
     						
    -							Settings
    +							
     						
     						IBIPadFramework
     						0
    @@ -605,7 +605,7 @@
     						NO
     						6
     						
    -							Chat
    +							
     						
     						IBIPadFramework
     						0
    diff --git a/Classes/LinphoneUI/fr.lproj/UICallBar.xib b/Classes/LinphoneUI/fr.lproj/UICallBar.xib
    index f10fb754a..bb58b859a 100644
    --- a/Classes/LinphoneUI/fr.lproj/UICallBar.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UICallBar.xib
    @@ -342,7 +342,7 @@
     								NO
     								12
     								
    -									Star
    +									Étoile
     								
     								IBCocoaTouchFramework
     								0
    @@ -396,7 +396,7 @@
     								NO
     								14
     								
    -									Sharp
    +									Dièse
     								
     								IBCocoaTouchFramework
     								0
    @@ -439,7 +439,7 @@
     								NO
     								16
     								
    -									Transfer call
    +									Transferer l'appel
     								
     								IBCocoaTouchFramework
     								0
    @@ -475,7 +475,7 @@
     								NO
     								17
     								
    -									Add call
    +									Ajouter un appel
     								
     								IBCocoaTouchFramework
     								0
    @@ -535,7 +535,7 @@
     								NO
     								19
     								
    -									Video
    +									Vidéo
     								
     								IBCocoaTouchFramework
     								0
    @@ -621,7 +621,7 @@
     								NO
     								22
     								
    -									Speaker
    +									Haut parleur
     								
     								IBCocoaTouchFramework
     								0
    @@ -728,7 +728,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									Démarrer une conférence
     								
     								IBCocoaTouchFramework
     								0
    @@ -757,7 +757,7 @@
     								NO
     								26
     								
    -									Hangup
    +									Raccrocher
     								
     								IBCocoaTouchFramework
     								0
    @@ -786,7 +786,7 @@
     								NO
     								27
     								
    -									Back
    +									Retour
     								
     								IBCocoaTouchFramework
     								0
    @@ -1106,7 +1106,7 @@
     								NO
     								16
     								
    -									Add call
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1139,7 +1139,7 @@
     								NO
     								17
     								
    -									Add call
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1199,7 +1199,7 @@
     								NO
     								19
     								
    -									Video
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1248,7 +1248,7 @@
     								NO
     								21
     								
    -									Micro
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1285,7 +1285,7 @@
     								NO
     								22
     								
    -									Speaker
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1322,7 +1322,7 @@
     								NO
     								23
     								
    -									Add call
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1359,7 +1359,7 @@
     								NO
     								24
     								
    -									Pause
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1392,7 +1392,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1421,7 +1421,7 @@
     								NO
     								26
     								
    -									Hangup
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1450,7 +1450,7 @@
     								NO
     								27
     								
    -									Back
    +									
     								
     								IBCocoaTouchFramework
     								0
    diff --git a/Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib b/Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib
    index 8d9e850f1..297903251 100644
    --- a/Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib
    @@ -404,7 +404,7 @@
     								NO
     								16
     								
    -									Add call
    +									
     								
     								IBIPadFramework
     								0
    @@ -439,7 +439,7 @@
     								NO
     								17
     								
    -									Add call
    +									
     								
     								IBIPadFramework
     								0
    @@ -499,7 +499,7 @@
     								NO
     								19
     								
    -									Video
    +									
     								
     								IBIPadFramework
     								0
    @@ -548,7 +548,7 @@
     								NO
     								21
     								
    -									Micro
    +									
     								
     								IBIPadFramework
     								0
    @@ -585,7 +585,7 @@
     								NO
     								22
     								
    -									Speaker
    +									
     								
     								IBIPadFramework
     								0
    @@ -622,7 +622,7 @@
     								NO
     								23
     								
    -									Add call
    +									
     								
     								IBIPadFramework
     								0
    @@ -659,7 +659,7 @@
     								NO
     								24
     								
    -									Pause
    +									
     								
     								IBIPadFramework
     								0
    @@ -692,7 +692,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									
     								
     								IBIPadFramework
     								0
    @@ -721,7 +721,7 @@
     								NO
     								26
     								
    -									Hangup
    +									
     								
     								IBIPadFramework
     								0
    @@ -750,7 +750,7 @@
     								NO
     								27
     								
    -									Back
    +									
     								
     								IBIPadFramework
     								0
    @@ -1035,7 +1035,7 @@
     								NO
     								12
     								
    -									Star
    +									Étoile
     								
     								IBIPadFramework
     								0
    @@ -1077,7 +1077,7 @@
     								NO
     								14
     								
    -									Sharp
    +									Dièse
     								
     								IBIPadFramework
     								0
    @@ -1111,7 +1111,7 @@
     								NO
     								16
     								
    -									Transfer call
    +									Transferer l'appel
     								
     								IBIPadFramework
     								0
    @@ -1143,7 +1143,7 @@
     								NO
     								17
     								
    -									Add call
    +									Ajouter un appel
     								
     								IBIPadFramework
     								0
    @@ -1203,7 +1203,7 @@
     								NO
     								19
     								
    -									Video
    +									Vidéo
     								
     								IBIPadFramework
     								0
    @@ -1289,7 +1289,7 @@
     								NO
     								22
     								
    -									Speaker
    +									Haut parleur
     								
     								IBIPadFramework
     								0
    @@ -1396,7 +1396,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									Démarrer une conférence
     								
     								IBIPadFramework
     								0
    @@ -1425,7 +1425,7 @@
     								NO
     								26
     								
    -									Hangup
    +									Raccrocher
     								
     								IBIPadFramework
     								0
    @@ -1454,7 +1454,7 @@
     								NO
     								27
     								
    -									Back
    +									Retour
     								
     								IBIPadFramework
     								0
    diff --git a/Classes/LinphoneUI/fr.lproj/UICallCell.xib b/Classes/LinphoneUI/fr.lproj/UICallCell.xib
    index addf5cec1..96798df7e 100644
    --- a/Classes/LinphoneUI/fr.lproj/UICallCell.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UICallCell.xib
    @@ -106,7 +106,7 @@
     								
     								NO
     								
    -									Contact's avatar
    +									Avatar du contact
     									
     									
     								
    @@ -166,7 +166,7 @@
     								7
     								NO
     								
    -									Contact's name
    +									Nom du contact
     									
     								
     								IBCocoaTouchFramework
    @@ -4584,7 +4584,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								_NS:9
     								NO
     								
    -									Call state
    +									État de l'appel
     									
     									
     								
    @@ -4599,7 +4599,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								_NS:9
     								NO
     								
    -									Remove
    +									Supprimer
     								
     								IBCocoaTouchFramework
     								0
    @@ -4669,7 +4669,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								7
     								NO
     								
    -									Call state
    +									Durée
     									
     								
     								IBCocoaTouchFramework
    @@ -4698,7 +4698,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								_NS:9
     								NO
     								
    -									Expand
    +									Agrandir
     								
     								IBCocoaTouchFramework
     								0
    diff --git a/Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib b/Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib
    index 1cc468c15..de81b0289 100644
    --- a/Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib
    @@ -45,7 +45,7 @@
     						_NS:9
     						NO
     						
    -							Conference
    +							Conférence
     							
     							
     						
    diff --git a/Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib b/Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib
    index 94b242680..582a7e738 100644
    --- a/Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib
    @@ -47,12 +47,12 @@
     						
     						NO
     						
    -							Remove
    +							Supprimer
     						
     						IBCocoaTouchFramework
     						0
     						0
    -						Remove Contact
    +						Supprimer le Contact
     						
     							3
     							MQA
    diff --git a/Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib b/Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib
    index 6a50359fc..16e92f7d8 100644
    --- a/Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib
    @@ -75,7 +75,7 @@
     						_NS:9
     						NO
     						
    -							Contact's avatar
    +							Avatar du contact
     							
     						
     						IBCocoaTouchFramework
    @@ -119,7 +119,7 @@
     								7
     								NO
     								
    -									Contact's name
    +									Nom du contact
     								
     								IBCocoaTouchFramework
     								Contact1
    diff --git a/Classes/LinphoneUI/fr.lproj/UIMainBar.xib b/Classes/LinphoneUI/fr.lproj/UIMainBar.xib
    index fd25101a8..1cf955ebf 100644
    --- a/Classes/LinphoneUI/fr.lproj/UIMainBar.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIMainBar.xib
    @@ -77,7 +77,7 @@
     						_NS:9
     						NO
     						
    -							History
    +							Historique
     						
     						IBCocoaTouchFramework
     						0
    @@ -139,7 +139,7 @@
     								7
     								NO
     								
    -									History missed
    +									Appel(s) manqué(s)
     									
     								
     								IBCocoaTouchFramework
    @@ -215,7 +215,7 @@
     						_NS:9
     						NO
     						
    -							Settings
    +							Options
     						
     						IBCocoaTouchFramework
     						0
    @@ -246,7 +246,7 @@
     						_NS:9
     						NO
     						
    -							Dialer
    +							Clavier
     						
     						IBCocoaTouchFramework
     						0
    @@ -326,7 +326,7 @@
     								7
     								NO
     								
    -									Chat missed
    +									Message(s) manqué(s)
     									
     								
     								IBCocoaTouchFramework
    diff --git a/Classes/LinphoneUI/fr.lproj/UIMainBar~ipad.xib b/Classes/LinphoneUI/fr.lproj/UIMainBar~ipad.xib
    index 74780b34d..620a1143a 100644
    --- a/Classes/LinphoneUI/fr.lproj/UIMainBar~ipad.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIMainBar~ipad.xib
    @@ -79,7 +79,7 @@
     						NO
     						1
     						
    -							History
    +							Historique
     						
     						IBIPadFramework
     						0
    @@ -141,7 +141,7 @@
     								7
     								NO
     								
    -									History missed
    +									Appel(s) manqué(s)
     									
     								
     								IBIPadFramework
    @@ -220,7 +220,7 @@
     						NO
     						4
     						
    -							Dialer
    +							Clavier
     						
     						IBIPadFramework
     						0
    @@ -252,7 +252,7 @@
     						NO
     						5
     						
    -							Settings
    +							Options
     						
     						IBIPadFramework
     						0
    @@ -332,7 +332,7 @@
     								7
     								NO
     								
    -									Chat missed
    +									Message(s) manqué(s)
     									
     								
     								IBIPadFramework
    @@ -413,7 +413,7 @@
     						NO
     						1
     						
    -							History
    +							
     						
     						IBIPadFramework
     						0
    @@ -492,7 +492,7 @@
     						NO
     						3
     						
    -							Contacts
    +							
     						
     						IBIPadFramework
     						0
    @@ -524,7 +524,7 @@
     						NO
     						4
     						
    -							Dialer
    +							
     						
     						IBIPadFramework
     						0
    @@ -547,7 +547,7 @@
     						NO
     						5
     						
    -							Settings
    +							
     						
     						IBIPadFramework
     						0
    @@ -579,7 +579,7 @@
     						NO
     						6
     						
    -							Chat
    +							
     						
     						IBIPadFramework
     						0
    diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m
    index ecc7859fb..95f08976c 100644
    --- a/Classes/PhoneMainView.m
    +++ b/Classes/PhoneMainView.m
    @@ -540,7 +540,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
         }
         
         if (linphone_call_get_reason(call) == LinphoneReasonNotFound) {
    -        lMessage = [NSString stringWithFormat : NSLocalizedString(@"'%@' not registered to Service", nil), lUserName];
    +        lMessage = [NSString stringWithFormat : NSLocalizedString(@"'%@' not registered", nil), lUserName];
         } else {
             if (message != nil) {
                 lMessage = [NSString stringWithFormat : NSLocalizedString(@"%@\nReason was: %@", nil), lMessage, message];
    diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m
    index e1cdf533f..b42ccd397 100644
    --- a/Classes/WizardViewController.m
    +++ b/Classes/WizardViewController.m
    @@ -428,7 +428,7 @@ static UICompositeViewDescription *compositeDescription = nil;
         }
         
         if([errors length]) {
    -        UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Check error",nil)
    +        UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Check error(s)",nil)
                                                             message:[errors substringWithRange:NSMakeRange(0, [errors length] - 1)]
                                                            delegate:nil
                                                   cancelButtonTitle:NSLocalizedString(@"Continue",nil)
    diff --git a/Classes/en.lproj/DialerViewController.xib b/Classes/en.lproj/DialerViewController.xib
    index 4e797df2a..00b0844df 100644
    --- a/Classes/en.lproj/DialerViewController.xib
    +++ b/Classes/en.lproj/DialerViewController.xib
    @@ -80,7 +80,7 @@
     								IBCocoaTouchFramework
     								0
     								
    -								Enter sip address or phone number...
    +								Enter SIP address or phone number...
     								
     									3
     									MQA
    @@ -659,6 +659,7 @@
     								{{214, 0}, {106, 69}}
     								
     								
    +								
     								_NS:9
     								NO
     								
    diff --git a/Classes/en.lproj/DialerViewController~ipad.xib b/Classes/en.lproj/DialerViewController~ipad.xib
    index 526b49aca..c4844b21a 100644
    --- a/Classes/en.lproj/DialerViewController~ipad.xib
    +++ b/Classes/en.lproj/DialerViewController~ipad.xib
    @@ -75,7 +75,7 @@
     								IBIPadFramework
     								0
     								
    -								Enter sip address or phone number...
    +								Enter SIP address or phone number...
     								
     									3
     									MQA
    @@ -656,6 +656,7 @@
     								{{126, 0}, {186, 85}}
     								
     								
    +								
     								_NS:9
     								NO
     								
    diff --git a/Classes/en.lproj/WizardViewController.xib b/Classes/en.lproj/WizardViewController.xib
    index 70b4ee8eb..cb745509c 100644
    --- a/Classes/en.lproj/WizardViewController.xib
    +++ b/Classes/en.lproj/WizardViewController.xib
    @@ -250,7 +250,7 @@
     						7
     						NO
     						IBCocoaTouchFramework
    -						This assistant will help you  to use a SIP account for your calls.
    +						This assistant will help you to use a SIP account for your calls.
     						
     							3
     							MC4zMzMzMzMzMzMzAA
    @@ -434,7 +434,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter you username and password with your email address
    +						Enter your username and password with your email address
     						
     						
     						0
    @@ -661,7 +661,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter you username and password of your linphone.org account
    +						Enter your username and password of your linphone.org account
     						
     						
     						0
    @@ -804,7 +804,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter you username and password with your SIP domain
    +						Enter your username and password with your SIP domain
     						
     						
     						0
    diff --git a/Classes/fr.lproj/ChatRoomViewController.xib b/Classes/fr.lproj/ChatRoomViewController.xib
    index 9336cdb48..86e584f55 100644
    --- a/Classes/fr.lproj/ChatRoomViewController.xib
    +++ b/Classes/fr.lproj/ChatRoomViewController.xib
    @@ -71,7 +71,7 @@
     										_NS:9
     										NO
     										
    -											Contact's avatar
    +											Avatar du contact
     											
     											
     										
    @@ -93,7 +93,7 @@
     										7
     										NO
     										
    -											Contact's name
    +											Nom du contact
     											
     										
     										IBCocoaTouchFramework
    @@ -159,7 +159,7 @@
     										_NS:9
     										NO
     										
    -											Send
    +											Envoyez
     										
     										IBCocoaTouchFramework
     										NO
    @@ -217,7 +217,7 @@
     										YES
     										YES
     										
    -											Enter your message here
    +											Entrez votre message ici
     										
     										IBCocoaTouchFramework
     										YES
    @@ -280,7 +280,7 @@
     								_NS:9
     								NO
     								
    -									Back
    +									Retour
     								
     								IBCocoaTouchFramework
     								0
    @@ -307,7 +307,7 @@
     								_NS:9
     								NO
     								
    -									Edit
    +									Éditer
     								
     								IBCocoaTouchFramework
     								0
    diff --git a/Classes/fr.lproj/ChatViewController.xib b/Classes/fr.lproj/ChatViewController.xib
    index 4986fe592..e9f8e254d 100644
    --- a/Classes/fr.lproj/ChatViewController.xib
    +++ b/Classes/fr.lproj/ChatViewController.xib
    @@ -67,7 +67,7 @@
     								_NS:9
     								NO
     								
    -									New Discussion
    +									Nouvelle discussion
     								
     								IBCocoaTouchFramework
     								0
    @@ -104,7 +104,7 @@
     								_NS:9
     								NO
     								
    -									Edit
    +									Éditer
     								
     								IBCocoaTouchFramework
     								0
    @@ -178,7 +178,7 @@
     						NO
     						YES
     						
    -							Enter a address
    +							Entrez une addresse
     						
     						IBCocoaTouchFramework
     						0
    @@ -216,7 +216,7 @@
     						7
     						NO
     						IBCocoaTouchFramework
    -						To:
    +						À:
     						
     							1
     							MCAwIDAAA
    diff --git a/Classes/fr.lproj/ContactDetailsLabelViewController.xib b/Classes/fr.lproj/ContactDetailsLabelViewController.xib
    index 670156316..15c4fce44 100644
    --- a/Classes/fr.lproj/ContactDetailsLabelViewController.xib
    +++ b/Classes/fr.lproj/ContactDetailsLabelViewController.xib
    @@ -81,7 +81,7 @@
     								_NS:9
     								NO
     								
    -									Back
    +									Retour
     								
     								IBCocoaTouchFramework
     								0
    diff --git a/Classes/fr.lproj/ContactDetailsViewController.xib b/Classes/fr.lproj/ContactDetailsViewController.xib
    index c83ace1ee..6bfa7f648 100644
    --- a/Classes/fr.lproj/ContactDetailsViewController.xib
    +++ b/Classes/fr.lproj/ContactDetailsViewController.xib
    @@ -66,7 +66,7 @@
     								_NS:9
     								NO
     								
    -									Back
    +									Retour
     								
     								IBCocoaTouchFramework
     								0
    @@ -103,7 +103,7 @@
     								_NS:9
     								NO
     								
    -									Cancel
    +									Annuler
     								
     								IBCocoaTouchFramework
     								0
    @@ -130,7 +130,7 @@
     								_NS:9
     								NO
     								
    -									Edit
    +									Éditer
     								
     								IBCocoaTouchFramework
     								0
    diff --git a/Classes/fr.lproj/ContactsViewController.xib b/Classes/fr.lproj/ContactsViewController.xib
    index 66f95d6d9..cc6c3a6dd 100644
    --- a/Classes/fr.lproj/ContactsViewController.xib
    +++ b/Classes/fr.lproj/ContactsViewController.xib
    @@ -65,7 +65,7 @@
     								_NS:9
     								NO
     								
    -									All contacts filter
    +									Afficher tout les contacts
     								
     								IBCocoaTouchFramework
     								0
    @@ -103,7 +103,7 @@
     								_NS:9
     								NO
     								
    -									Linphone contacts filter
    +									Afficher les contacts Linphone
     								
     								IBCocoaTouchFramework
     								0
    @@ -131,7 +131,7 @@
     								_NS:9
     								NO
     								
    -									Add contact
    +									Ajouter un contact
     								
     								IBCocoaTouchFramework
     								0
    @@ -158,7 +158,7 @@
     								_NS:9
     								NO
     								
    -									Back
    +									Retour
     								
     								IBCocoaTouchFramework
     								0
    diff --git a/Classes/fr.lproj/DialerViewController.xib b/Classes/fr.lproj/DialerViewController.xib
    index 2efa9450d..f112f691d 100644
    --- a/Classes/fr.lproj/DialerViewController.xib
    +++ b/Classes/fr.lproj/DialerViewController.xib
    @@ -73,12 +73,12 @@
     								NO
     								NO
     								
    -									Enter a address
    +									Entrez une addresse
     								
     								IBCocoaTouchFramework
     								0
     								
    -								Enter sip address or phone number...
    +								Entrez une addresse SIP ou un numéro de téléphone...
     								
     									3
     									MQA
    @@ -380,7 +380,7 @@
     								NO
     								NO
     								
    -									Star
    +									Étoile
     								
     								IBCocoaTouchFramework
     								0
    @@ -432,7 +432,7 @@
     								NO
     								NO
     								
    -									Sharp
    +									Dièse
     								
     								IBCocoaTouchFramework
     								0
    @@ -474,7 +474,7 @@
     								_NS:9
     								NO
     								
    -									Add to contact
    +									Ajouter au contact
     								
     								IBCocoaTouchFramework
     								NO
    @@ -510,7 +510,7 @@
     								_NS:9
     								NO
     								
    -									Back
    +									Retour
     								
     								IBCocoaTouchFramework
     								0
    @@ -542,7 +542,7 @@
     								_NS:9
     								NO
     								
    -									Call
    +									Appeler
     								
     								IBCocoaTouchFramework
     								NO
    @@ -575,7 +575,7 @@
     								_NS:9
     								NO
     								
    -									Add call
    +									Ajouter un appel
     								
     								IBCocoaTouchFramework
     								NO
    @@ -608,7 +608,7 @@
     								_NS:9
     								NO
     								
    -									Transfer call
    +									Transférer l'appel
     								
     								IBCocoaTouchFramework
     								NO
    @@ -640,7 +640,7 @@
     								_NS:9
     								NO
     								
    -									Backspace
    +									Effacer
     								
     								IBCocoaTouchFramework
     								NO
    diff --git a/Classes/fr.lproj/DialerViewController~ipad.xib b/Classes/fr.lproj/DialerViewController~ipad.xib
    index 42f029282..b9b6c98fd 100644
    --- a/Classes/fr.lproj/DialerViewController~ipad.xib
    +++ b/Classes/fr.lproj/DialerViewController~ipad.xib
    @@ -68,12 +68,12 @@
     								NO
     								NO
     								
    -									Enter a address
    +									Entrez une addresse
     								
     								IBIPadFramework
     								0
     								
    -								Enter sip address or phone number...
    +								Entrez une addresse SIP ou un numéro de téléphone...
     								
     									3
     									MQA
    @@ -105,7 +105,7 @@
     								_NS:9
     								NO
     								
    -									Backscape
    +									Effacer
     								
     								IBIPadFramework
     								NO
    @@ -414,7 +414,7 @@
     								NO
     								NO
     								
    -									Star
    +									Étoile
     								
     								IBIPadFramework
     								0
    @@ -466,7 +466,7 @@
     								NO
     								NO
     								
    -									Sharp
    +									Dièse
     								
     								IBIPadFramework
     								0
    @@ -507,7 +507,7 @@
     								_NS:9
     								NO
     								
    -									Add to Contact
    +									Ajouter au contact
     								
     								IBIPadFramework
     								NO
    @@ -540,7 +540,7 @@
     								_NS:9
     								NO
     								
    -									Back
    +									Retour
     								
     								IBIPadFramework
     								0
    @@ -572,7 +572,7 @@
     								_NS:9
     								NO
     								
    -									Call
    +									Appeler
     								
     								IBIPadFramework
     								NO
    @@ -605,7 +605,7 @@
     								_NS:9
     								NO
     								
    -									Add call
    +									Ajouter un appel
     								
     								IBIPadFramework
     								NO
    @@ -637,7 +637,7 @@
     								_NS:9
     								NO
     								
    -									Transfer Call
    +									Transférer l'appel
     								
     								IBIPadFramework
     								NO
    diff --git a/Classes/fr.lproj/FirstLoginViewController.xib b/Classes/fr.lproj/FirstLoginViewController.xib
    index 097fbb335..b39ab6eb2 100644
    --- a/Classes/fr.lproj/FirstLoginViewController.xib
    +++ b/Classes/fr.lproj/FirstLoginViewController.xib
    @@ -50,13 +50,13 @@
     						_NS:9
     						NO
     						
    -							Login
    +							S'enregistrer
     						
     						IBCocoaTouchFramework
     						0
     						0
     						NO
    -						Login
    +						S'enregistrer
     						
     							3
     							MC4zMzMzMzMzMzMzAA
    @@ -123,12 +123,12 @@
     						NO
     						NO
     						
    -							Username
    +							Nom d'utilisateur
     						
     						IBCocoaTouchFramework
     						0
     						
    -						Username
    +						Nom d'utilisateur
     						
     							3
     							MAA
    @@ -165,13 +165,13 @@
     						NO
     						NO
     						
    -							Password
    +							Mot de passe
     						
     						IBCocoaTouchFramework
     						0
     						0
     						
    -						Password
    +						Mot de passe
     						
     							3
     							MAA
    diff --git a/Classes/fr.lproj/HistoryDetailsViewController.xib b/Classes/fr.lproj/HistoryDetailsViewController.xib
    index 1c58703c5..90142d952 100644
    --- a/Classes/fr.lproj/HistoryDetailsViewController.xib
    +++ b/Classes/fr.lproj/HistoryDetailsViewController.xib
    @@ -64,7 +64,7 @@
     								_NS:9
     								NO
     								
    -									Back
    +									Retour
     								
     								IBCocoaTouchFramework
     								0
    @@ -101,7 +101,7 @@
     								_NS:9
     								NO
     								
    -									Add to contact
    +									Ajouter au contact
     								
     								IBCocoaTouchFramework
     								0
    @@ -186,7 +186,7 @@
     								_NS:9
     								NO
     								
    -									Contact's avatar
    +									Avatar du contact
     									
     									
     								
    @@ -208,7 +208,7 @@
     								7
     								NO
     								
    -									Contact's name
    +									Nom du contact
     								
     								IBCocoaTouchFramework
     								Contact1
    @@ -285,7 +285,7 @@
     								7
     								NO
     								
    -									Call date
    +									Date de l'appel
     									
     								
     								IBCocoaTouchFramework
    @@ -330,7 +330,7 @@
     									
     								
     								IBCocoaTouchFramework
    -								Duration:
    +								Durée:
     								
     								0
     								10
    @@ -349,7 +349,7 @@
     								7
     								NO
     								
    -									Call duration
    +									Durée de l'appel
     									
     								
     								IBCocoaTouchFramework
    @@ -406,7 +406,7 @@
     								7
     								NO
     								
    -									Call type
    +									Type d'appel
     									
     								
     								IBCocoaTouchFramework
    @@ -433,7 +433,7 @@
     						_NS:9
     						NO
     						
    -							Callback
    +							Rappeler
     						
     						IBCocoaTouchFramework
     						0
    diff --git a/Classes/fr.lproj/HistoryViewController.xib b/Classes/fr.lproj/HistoryViewController.xib
    index 28d489ce8..f16aac91b 100644
    --- a/Classes/fr.lproj/HistoryViewController.xib
    +++ b/Classes/fr.lproj/HistoryViewController.xib
    @@ -65,7 +65,7 @@
     								_NS:9
     								NO
     								
    -									Delete all
    +									Supprimer tout
     								
     								IBCocoaTouchFramework
     								0
    @@ -102,7 +102,7 @@
     								_NS:9
     								NO
     								
    -									All contacts filter
    +									Afficher tout les contacts
     								
     								IBCocoaTouchFramework
     								0
    @@ -130,7 +130,7 @@
     								_NS:9
     								NO
     								
    -									Missed contacts filter
    +									Afficher les contacts Linphone
     								
     								IBCocoaTouchFramework
     								0
    @@ -158,7 +158,7 @@
     								_NS:9
     								NO
     								
    -									Edit
    +									Éditer
     								
     								IBCocoaTouchFramework
     								0
    diff --git a/Classes/fr.lproj/InCallViewController.xib b/Classes/fr.lproj/InCallViewController.xib
    index 06a646eea..774bd64f0 100644
    --- a/Classes/fr.lproj/InCallViewController.xib
    +++ b/Classes/fr.lproj/InCallViewController.xib
    @@ -142,7 +142,7 @@
     						_NS:9
     						NO
     						
    -							Switch camera
    +							Changer de camera
     						
     						IBCocoaTouchFramework
     						0
    diff --git a/Classes/fr.lproj/IncomingCallViewController.xib b/Classes/fr.lproj/IncomingCallViewController.xib
    index a58703eda..fe841cbf7 100644
    --- a/Classes/fr.lproj/IncomingCallViewController.xib
    +++ b/Classes/fr.lproj/IncomingCallViewController.xib
    @@ -81,7 +81,7 @@
     								_NS:9
     								NO
     								
    -									Incoming call
    +									Appel entrant
     									
     								
     								IBCocoaTouchFramework
    @@ -102,7 +102,7 @@
     								7
     								NO
     								
    -									Contact's name
    +									Nom du contact
     								
     								IBCocoaTouchFramework
     								0102030405
    @@ -4536,7 +4536,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								_NS:9
     								NO
     								
    -									Contact's avatar
    +									Avatar du contact
     									
     									
     								
    @@ -4585,7 +4585,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								_NS:9
     								NO
     								
    -									Accept
    +									Accepter
     								
     								IBCocoaTouchFramework
     								0
    @@ -4620,7 +4620,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								_NS:9
     								NO
     								
    -									Decline
    +									Refuser
     								
     								IBCocoaTouchFramework
     								0
    diff --git a/Classes/fr.lproj/WizardViewController.xib b/Classes/fr.lproj/WizardViewController.xib
    index fc0a9fc96..58ef418ab 100644
    --- a/Classes/fr.lproj/WizardViewController.xib
    +++ b/Classes/fr.lproj/WizardViewController.xib
    @@ -66,7 +66,7 @@
     								_NS:9
     								NO
     								
    -									Cancel
    +									Annuler
     								
     								IBCocoaTouchFramework
     								0
    @@ -108,7 +108,7 @@
     								_NS:9
     								NO
     								
    -									Start
    +									Démarrer
     								
     								IBCocoaTouchFramework
     								0
    @@ -135,7 +135,7 @@
     								_NS:9
     								NO
     								
    -									Back
    +									Retour
     								
     								IBCocoaTouchFramework
     								0
    @@ -217,7 +217,7 @@
     						_NS:9
     						NO
     						
    -							Linphone setup assistant icon
    +							Icône de l'assistant de configuration de compte
     							
     						
     						IBCocoaTouchFramework
    @@ -237,7 +237,7 @@
     						7
     						NO
     						IBCocoaTouchFramework
    -						This assistant will help you  to use a SIP account for your calls.
    +						Cet assistant va vous aider à utiliser votre compte SIP pour vos appels.
     						
     							3
     							MC4zMzMzMzMzMzMzAA
    @@ -278,7 +278,7 @@
     						_NS:9
     						NO
     						
    -							Account setup assistant
    +							Assistant de configuration de compte
     							
     						
     						IBCocoaTouchFramework
    @@ -296,14 +296,14 @@
     						_NS:9
     						NO
     						
    -							Create linphone.org account
    +							Créer un compte linphone.org
     							
     						
     						IBCocoaTouchFramework
     						0
     						0
     						NO
    -						Create an account on linphone.org
    +						Crée un compte linphone.org
     						
     						
     						
    @@ -333,14 +333,14 @@
     						_NS:9
     						NO
     						
    -							Sign in linphone.org account
    +							S'enregistrer sur un compte linphone.org
     							
     						
     						IBCocoaTouchFramework
     						0
     						0
     						NO
    -						I have already a linphone.org account
    +						J'ai déjà un compte linphone.org
     						
     						
     						
    @@ -356,14 +356,14 @@
     						_NS:9
     						NO
     						
    -							Sign in SIP account
    +							S'enregistrer sur un compte SIP
     							
     						
     						IBCocoaTouchFramework
     						0
     						0
     						NO
    -						I have already a SIP account
    +						J'ai déjà un compte SIP
     						
     						
     						
    @@ -391,7 +391,7 @@
     						_NS:9
     						NO
     						
    -							Account setup assistant
    +							Assistant de configuration de compte
     							
     						
     						IBCocoaTouchFramework
    @@ -410,7 +410,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter you username and password with your email address
    +						Entrer votre nom d'utilisateur, votre mot de passe ainsi que votre addresse email
     						
     						
     						0
    @@ -432,12 +432,12 @@
     						YES
     						100
     						
    -							Username
    +							Nom d'utilisateur
     						
     						IBCocoaTouchFramework
     						0
     						
    -						Username
    +						Nom d'utilisateur
     						
     							3
     							MAA
    @@ -475,12 +475,12 @@
     						YES
     						101
     						
    -							Password
    +							Mot de passe
     						
     						IBCocoaTouchFramework
     						0
     						
    -						Password
    +						Mot de passe
     						
     							3
     							MAA
    @@ -507,12 +507,12 @@
     						YES
     						102
     						
    -							Password again
    +							Mot de passe à nouveau
     						
     						IBCocoaTouchFramework
     						0
     						
    -						Password
    +						Mot de passe
     						
     							3
     							MAA
    @@ -567,13 +567,13 @@
     						_NS:9
     						NO
     						
    -							Register
    +							Créer
     						
     						IBCocoaTouchFramework
     						0
     						0
     						NO
    -						Register
    +						S'enregistrer
     						
     						
     						
    @@ -608,7 +608,7 @@
     						_NS:9
     						NO
     						
    -							Account setup assistant
    +							Assistant de configuration de compte
     							
     						
     						IBCocoaTouchFramework
    @@ -627,7 +627,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter you username and password of your linphone.org account
    +						Entrez le nom d'utilisateur et le mot de passe de votre compte linphone.org
     						
     						
     						0
    @@ -646,13 +646,13 @@
     						_NS:9
     						NO
     						
    -							Sign in
    +							S'enregistrer
     						
     						IBCocoaTouchFramework
     						0
     						0
     						NO
    -						Sign in
    +						S'enregistrer
     						
     						
     						
    @@ -671,12 +671,12 @@
     						YES
     						101
     						
    -							Password
    +							Mot de passe
     						
     						IBCocoaTouchFramework
     						0
     						
    -						Password
    +						Mot de passe
     						
     							3
     							MAA
    @@ -703,12 +703,12 @@
     						YES
     						100
     						
    -							Username
    +							Nom d'utilisateur
     						
     						IBCocoaTouchFramework
     						0
     						
    -						Username
    +						Nom d'utilisateur
     						
     							3
     							MAA
    @@ -743,7 +743,7 @@
     						_NS:9
     						NO
     						
    -							Account setup assistant
    +							Assistant de configuration de compte
     							
     						
     						IBCocoaTouchFramework
    @@ -762,7 +762,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter you username and password with your SIP domain
    +						Entrez votre nom d'utilisateur, votre mot de passe ainsi que votre domaine SIP
     						
     						
     						0
    @@ -784,12 +784,12 @@
     						YES
     						100
     						
    -							Username
    +							Nom d'utilisateur
     						
     						IBCocoaTouchFramework
     						0
     						
    -						Username
    +						Nom d'utilisateur
     						
     							3
     							MAA
    @@ -815,12 +815,12 @@
     						YES
     						101
     						
    -							Password
    +							Mot de passe
     						
     						IBCocoaTouchFramework
     						0
     						
    -						Password
    +						Mot de passe
     						
     							3
     							MAA
    @@ -847,12 +847,12 @@
     						YES
     						104
     						
    -							Domain
    +							Domaine
     						
     						IBCocoaTouchFramework
     						0
     						
    -						Domain
    +						Domaine
     						
     							3
     							MAA
    @@ -875,13 +875,13 @@
     						_NS:9
     						NO
     						
    -							Sign in
    +							S'enregistrer
     						
     						IBCocoaTouchFramework
     						0
     						0
     						NO
    -						Sign in
    +						S'enregistrer
     						
     						
     						
    @@ -909,7 +909,7 @@
     						_NS:9
     						NO
     						
    -							Account setup assistant
    +							Assistant de configuration de compte
     							
     						
     						IBCocoaTouchFramework
    @@ -928,7 +928,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Your account is created. Please check your mails in order to validate your account.
    +						Votre compte est crée. Vérifier vos emails pour valider votre compte.
     						
     						
     						0
    @@ -947,13 +947,13 @@
     						_NS:9
     						NO
     						
    -							Check validation
    +							Vérifier la validation
     						
     						IBCocoaTouchFramework
     						0
     						0
     						NO
    -						Check validation
    +						Verifiez la validation
     						
     						
     						
    @@ -977,7 +977,7 @@
     						IBCocoaTouchFramework
     						0
     						
    -						Password
    +						Mot de passe
     						
     							3
     							MAA
    @@ -1009,7 +1009,7 @@
     						IBCocoaTouchFramework
     						0
     						
    -						Username
    +						Nom d'utilisateur
     						
     							3
     							MAA
    diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings
    index 3b8e89a40903c581ae655e5f4f8debcc5bb8b95c..7bb5ecb9f7486359e18aa4a353367318225cc2b2 100644
    GIT binary patch
    delta 629
    zcmZ3G{4aCE38u+5%3PCQFsV(BQjXYM!@P}yRfD0JL36Spk0LXWHL)>zvJ4N;=50KC
    zxF(lKNboB#q%jmRjwrG3YaJF(@(k0*%UK$N`GvG2~BvFRjdr
    zE+Rd7mTcJMRZ;?zy`;D{8%dQgTN7`*KhQ!Ypy9Sati%B1O=gsf-uy}S3A-e!yAXYio=k2dqNm8fZiyc?5H5l4DpDhGAMNNfgz~?^mZ!HdnwRBP+)KchAr6J
    zlNq^$C#wjH@RtDfgTfQ)`N{l(qL!c_Qve1QL8A~I+3oJEXWwS
    JIYQ5a833@dg^>UN
    
    delta 179
    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
    AX#fBK
    
    diff --git a/Settings/InAppSettings.bundle/Video.plist b/Settings/InAppSettings.bundle/Video.plist
    index 3cc5566b7..2cc185b15 100644
    --- a/Settings/InAppSettings.bundle/Video.plist
    +++ b/Settings/InAppSettings.bundle/Video.plist
    @@ -8,7 +8,7 @@
     			Type
     			PSToggleSwitchSpecifier
     			Title
    -			Automatically start video
    +			Automatically start
     			Key
     			start_video_preference
     			DefaultValue
    @@ -18,7 +18,7 @@
     			Type
     			PSToggleSwitchSpecifier
     			Title
    -			Automatically accept video
    +			Automatically accept
     			Key
     			accept_video_preference
     			DefaultValue
    diff --git a/Settings/InAppSettings.bundle/en.lproj/Advanced.strings b/Settings/InAppSettings.bundle/en.lproj/Advanced.strings
    new file mode 100644
    index 000000000..c7b00a51f
    --- /dev/null
    +++ b/Settings/InAppSettings.bundle/en.lproj/Advanced.strings
    @@ -0,0 +1,51 @@
    +/* Debug */
    +"Debug" = "Debug";
    +
    +/* Debug */
    +"Debug" = "Debug";
    +
    +/* Console */
    +"Console" = "Console";
    +
    +/*  */
    +"" = "";
    +
    +/* Animations */
    +"Animations" = "Animations";
    +
    +/* Rotation */
    +"Rotation" = "Rotation";
    +
    +/* Background mode */
    +"Background mode" = "Background mode";
    +
    +/* Start at boot */
    +"Start at boot" = "Start at boot";
    +
    +/* First login view */
    +"First login view" = "First login view";
    +
    +/* Expire */
    +"Expire" = "Expire";
    +
    +/* Primary account */
    +"Primary account" = "Primary account";
    +
    +/* Display name */
    +"Display name" = "Display name";
    +
    +/* Username */
    +"Username" = "Username";
    +
    +/* Rotation */
    +"Rotation" = "Rotation";
    +
    +/* Automatic */
    +"Automatic" = "Automatic";
    +
    +/* Portrait */
    +"Portrait" = "Portrait";
    +
    +/* Landscape */
    +"Landscape" = "Landscape";
    +
    diff --git a/Settings/InAppSettings.bundle/en.lproj/Audio.strings b/Settings/InAppSettings.bundle/en.lproj/Audio.strings
    new file mode 100644
    index 000000000..9ac131e7f
    --- /dev/null
    +++ b/Settings/InAppSettings.bundle/en.lproj/Audio.strings
    @@ -0,0 +1,30 @@
    +/* Codecs */
    +"Codecs" = "Codecs";
    +
    +/* Speex 16Khz */
    +"Speex 16Khz" = "Speex 16Khz";
    +
    +/* Speex 8Khz */
    +"Speex 8Khz" = "Speex 8Khz";
    +
    +/* Silk 24Khz */
    +"Silk 24Khz" = "Silk 24Khz";
    +
    +/* Silk 16Khz */
    +"Silk 16Khz" = "Silk 16Khz";
    +
    +/* G722 */
    +"G722" = "G722";
    +
    +/* GSM */
    +"GSM" = "GSM";
    +
    +/* ILBC */
    +"ILBC" = "ILBC";
    +
    +/* PCMU */
    +"PCMU" = "PCMU";
    +
    +/* PCMA */
    +"PCMA" = "PCMA";
    +
    diff --git a/Settings/InAppSettings.bundle/en.lproj/Call.strings b/Settings/InAppSettings.bundle/en.lproj/Call.strings
    new file mode 100644
    index 000000000..68876b8cc
    --- /dev/null
    +++ b/Settings/InAppSettings.bundle/en.lproj/Call.strings
    @@ -0,0 +1,12 @@
    +/* Prefix */
    +"Prefix" = "Prefix";
    +
    +/* Substitue + by 00 */
    +"Substitue + by 00" = "Substitue + by 00";
    +
    +/* Send inband DTMFs */
    +"Send inband DTMFs" = "Send inband DTMFs";
    +
    +/* Send SIP INFO DTMFs */
    +"Send SIP INFO DTMFs" = "Send SIP INFO DTMFs";
    +
    diff --git a/Settings/InAppSettings.bundle/en.lproj/Root.strings b/Settings/InAppSettings.bundle/en.lproj/Root.strings
    index 8cd87b9d6b20c1fbf87bd4db3db267fca5ad4df9..ebc359c287dddc5bd84c234552385a462387223d 100644
    GIT binary patch
    literal 693
    zcmZ9KyHdk26hwP}g~p{De*i<_2^2JtkRiPyX+VP`F_s*{-y`oz!lpZ`J@@+AcjEZ8
    z7g8xdyC}N8X;--w_hOUpnx^l>TQHMw@?zlE1p6=1-OCWZ{iLCm0J8>)5B?&pgGPju
    zG4GoE?T3pN;uaA5mpPu(V`%YJ#qAL${vC1jXkxVPJz#qY&}*Rh=;V1c;%c?=kkKmh}Q?0W4q5Xk_4zk{L>2TDv4oLP_;ObCqGQbDH=CUp>In
    
    literal 546
    zcmaixOHRW;5JYRuDMndFh#Ua1V1d}N;sVAV2TO?uC3a9aJn*VxFrY}tnon0(S66#J
    z-d9>G>6W!ur(SDqlp`9nn~*(m%iWnv?yq`Qfp6XbK1?+om~~#r)ZnhkYQU_VbfjuT
    zHNn`CX<0sd*m1A}>&5sU$akD=GTXJ1e
    
    diff --git a/Settings/InAppSettings.bundle/en.lproj/Video.strings b/Settings/InAppSettings.bundle/en.lproj/Video.strings
    new file mode 100644
    index 000000000..1072b20c8
    --- /dev/null
    +++ b/Settings/InAppSettings.bundle/en.lproj/Video.strings
    @@ -0,0 +1,21 @@
    +/* Automatically start video */
    +"Automatically start" = "Automatically start";
    +
    +/* Automatically accept video */
    +"Automatically accept" = "Automatically accept";
    +
    +/* Show self view */
    +"Show self view" = "Show self view";
    +
    +/* Codecs */
    +"Codecs" = "Codecs";
    +
    +/* mpeg4 */
    +"mpeg4" = "mpeg4";
    +
    +/* h264 */
    +"h264" = "h264";
    +
    +/* VP8 */
    +"VP8" = "VP8";
    +
    diff --git a/Settings/InAppSettings.bundle/fr.lproj/Advanced.strings b/Settings/InAppSettings.bundle/fr.lproj/Advanced.strings
    new file mode 100644
    index 000000000..cf45cf575
    --- /dev/null
    +++ b/Settings/InAppSettings.bundle/fr.lproj/Advanced.strings
    @@ -0,0 +1,51 @@
    +/* Debug */
    +"Debug" = "Debogue";
    +
    +/* Debug */
    +"Debug" = "Debogue";
    +
    +/* Console */
    +"Console" = "Console";
    +
    +/*  */
    +"" = "";
    +
    +/* Animations */
    +"Animations" = "Animations";
    +
    +/* Rotation */
    +"Rotation" = "Rotation";
    +
    +/* Background mode */
    +"Background mode" = "Mode tâche de fond";
    +
    +/* Start at boot */
    +"Start at boot" = "Démarrage automatique";
    +
    +/* First login view */
    +"First login view" = "First login view";
    +
    +/* Expire */
    +"Expire" = "Expiration";
    +
    +/* Primary account */
    +"Primary account" = "Compte principal";
    +
    +/* Display name */
    +"Display name" = "Nom d'affichage";
    +
    +/* Username */
    +"Username" = "Nom d'utilisateur";
    +
    +/* Rotation */
    +"Rotation" = "Rotation";
    +
    +/* Automatic */
    +"Automatic" = "Automatique";
    +
    +/* Portrait */
    +"Portrait" = "Portrait";
    +
    +/* Landscape */
    +"Landscape" = "Paysage";
    +
    diff --git a/Settings/InAppSettings.bundle/fr.lproj/Audio.strings b/Settings/InAppSettings.bundle/fr.lproj/Audio.strings
    new file mode 100644
    index 0000000000000000000000000000000000000000..975efd03a087939b9697dbb2aae2a740ec6defa3
    GIT binary patch
    literal 66
    rcmezWkBdPc2o)Hd8S)uY7*ZLM8HyRW7?e=>NRL~+J$!>NsGrP}6
    zpgzlJrCe5f9aJe$*vdodBes9N*C&7`?Io@tmqqc_Q
    zs7$H0+7ah9V@B>`$NA~O>ZF9)fjb80v#~asYl=JXp$pY`n80w=nI61;!d<}MFdFon
    pj(bh18s?MIfA!T{q#5%yoC`cHTWoEAzmWfVbR8R}-&Xe1djb9AO;Z2>
    
    literal 0
    HcmV?d00001
    
    diff --git a/Settings/InAppSettings.bundle/fr.lproj/Root.strings b/Settings/InAppSettings.bundle/fr.lproj/Root.strings
    new file mode 100644
    index 000000000..5ac83fabf
    --- /dev/null
    +++ b/Settings/InAppSettings.bundle/fr.lproj/Root.strings
    @@ -0,0 +1,54 @@
    +/* SIP account */
    +"SIP account" = "Compte SIP";
    +
    +/* User name */
    +"User name" = "Nom d'utilisateur";
    +
    +/* Password */
    +"Password" = "Mot de passe";
    +
    +/* Domain */
    +"Domain" = "Domaine";
    +
    +/* Proxy */
    +"Proxy" = "Proxy";
    +
    +/* Outbound proxy */
    +"Outbound proxy" = "Proxy de sortie";
    +
    +/* Settings */
    +"Settings" = "Options";
    +
    +/* Enable video */
    +"Enable video" = "Activer vidéo";
    +
    +/* Audio */
    +"Audio" = "Audio";
    +
    +/* Video */
    +"Video" = "Vidéo";
    +
    +/* Call */
    +"Call" = "Appel";
    +
    +/* Network */
    +"Network" = "Réseau";
    +
    +/* Advanced */
    +"Advanced" = "Avancées";
    +
    +/*  */
    +"" = "";
    +
    +/* About */
    +"About" = "À Propos";
    +
    +/* Quit */
    +"Quit" = "Quitter";
    +
    +/* Release */
    +"Release" = "Release";
    +
    +/* Clear cache */
    +"Clear cache" = "Clear cache";
    +
    diff --git a/Settings/InAppSettings.bundle/fr.lproj/Video.strings b/Settings/InAppSettings.bundle/fr.lproj/Video.strings
    new file mode 100644
    index 0000000000000000000000000000000000000000..a94d95b183680b330fb818248b5bb3a140580959
    GIT binary patch
    literal 488
    zcmb7=$qm9V6h!BoDl9iZ0f<8c9i#%wghdJ%92QYBO#shuu)_fbS@!o|X8vfNk4h7c
    zQLVF13fjpLxAMe}bEDT&af-Y~7kW#zOjfcZQ5M{cYqik*y&=Npw1&qJhntV&EwfWL
    zj8W&%>Oma-)K}uN!n$DlI1#iTsj|@qU#?8|=;^fLm;7p}CAWU{vx0{CgbN_!mk)EQ
    R$$ig;#8~E;VOUK*z5sI`Qz!rc
    
    literal 0
    HcmV?d00001
    
    diff --git a/linphone-Info.plist b/linphone-Info.plist
    index 7b5fcad31..029fc86db 100644
    --- a/linphone-Info.plist
    +++ b/linphone-Info.plist
    @@ -2,17 +2,6 @@
     
     
     
    -	CFBundleURLTypes
    -	
    -		
    -			CFBundleURLName
    -			org.linphone.phone
    -			CFBundleURLSchemes
    -			
    -				sip
    -			
    -		
    -	
     	CFBundleDevelopmentRegion
     	English
     	CFBundleDisplayName
    @@ -43,12 +32,32 @@
     	org.linphone.phone
     	CFBundleInfoDictionaryVersion
     	6.0
    +	CFBundleLocalizations
    +	
    +		en
    +		fr
    +	
     	CFBundleName
     	${PRODUCT_NAME}
     	CFBundlePackageType
     	APPL
     	CFBundleShortVersionString
     	3.5.2
    +	CFBundleURLTypes
    +	
    +		
    +			CFBundleTypeRole
    +			Editor
    +			CFBundleURLIconFile
    +			linphone_icon_72@2x
    +			CFBundleURLName
    +			org.linphone.phone
    +			CFBundleURLSchemes
    +			
    +				sip
    +			
    +		
    +	
     	CFBundleVersion
     	1.3
     	NSMainNibFile
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index d4bac3ea5..f587e1cf2 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -69,6 +69,8 @@
     							
     								en
     								Edit
    +								fr
    +								Éditer
     							
     							snapshots
     							
    @@ -92,6 +94,8 @@
     							
     								en
     								Back
    +								fr
    +								Retour
     							
     							snapshots
     							
    @@ -115,6 +119,8 @@
     							
     								en
     								Cancel
    +								fr
    +								Annuler
     							
     							snapshots
     							
    @@ -182,6 +188,8 @@
     							
     								en
     								Back
    +								fr
    +								Retour
     							
     							snapshots
     							
    @@ -249,6 +257,8 @@
     							
     								en
     								Back
    +								fr
    +								Retour
     							
     							snapshots
     							
    @@ -272,6 +282,8 @@
     							
     								en
     								Edit
    +								fr
    +								Éditer
     							
     							snapshots
     							
    @@ -295,6 +307,8 @@
     							
     								en
     								Send
    +								fr
    +								Envoyez
     							
     							snapshots
     							
    @@ -318,6 +332,8 @@
     							
     								en
     								Contact's name
    +								fr
    +								Nom du contact
     							
     							snapshots
     							
    @@ -364,6 +380,8 @@
     							
     								en
     								Contact's avatar
    +								fr
    +								Avatar du contact
     							
     							snapshots
     							
    @@ -387,6 +405,8 @@
     							
     								en
     								Enter your message here
    +								fr
    +								Entrez votre message ici
     							
     							snapshots
     							
    @@ -477,6 +497,8 @@
     							
     								en
     								Edit
    +								fr
    +								Éditer
     							
     							snapshots
     							
    @@ -500,6 +522,8 @@
     							
     								en
     								New Discussion
    +								fr
    +								Nouvelle discussion
     							
     							snapshots
     							
    @@ -523,6 +547,8 @@
     							
     								en
     								Enter a address
    +								fr
    +								Entrez une addresse
     							
     							snapshots
     							
    @@ -546,6 +572,8 @@
     							
     								en
     								To:
    +								fr
    +								À:
     							
     							snapshots
     							
    @@ -613,6 +641,8 @@
     							
     								en
     								All contacts filter
    +								fr
    +								Afficher tout les contacts
     							
     							snapshots
     							
    @@ -636,6 +666,8 @@
     							
     								en
     								Linphone contacts filter
    +								fr
    +								Afficher les contacts Linphone
     							
     							snapshots
     							
    @@ -659,6 +691,8 @@
     							
     								en
     								Add contact
    +								fr
    +								Ajouter un contact
     							
     							snapshots
     							
    @@ -682,6 +716,8 @@
     							
     								en
     								Back
    +								fr
    +								Retour
     							
     							snapshots
     							
    @@ -704,17 +740,17 @@
     					
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/DialerViewController/1/DialerViewController.xib
    +								Classes/DialerViewController/2/DialerViewController.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:13:02Z
    +					2012-09-11T07:20:07Z
     					changed values
     					
     					class
    @@ -724,7 +760,7 @@
     					flags
     					0
     					hash
    -					13c159c763c7583463ca5f1586ae1974
    +					1061080157a1d2f471718344fb1449a0
     
     					name
     					DialerViewController.xib
    @@ -749,6 +785,8 @@
     							
     								en
     								Enter a address
    +								fr
    +								Entrez une addresse
     							
     							snapshots
     							
    @@ -761,7 +799,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUITextField"; placeholder = "Enter sip address or phone number..."; ObjectID = "4";
    +							Class = "IBUITextField"; placeholder = "Enter SIP address or phone number..."; ObjectID = "4";
     							errors
     							
     							flags
    @@ -771,7 +809,9 @@
     							localizations
     							
     								en
    -								Enter sip address or phone number...
    +								Enter SIP address or phone number...
    +								fr
    +								Entrez une addresse SIP ou un numéro de téléphone...
     							
     							snapshots
     							
    @@ -795,6 +835,8 @@
     							
     								en
     								3
    +								fr
    +								3
     							
     							snapshots
     							
    @@ -818,6 +860,8 @@
     							
     								en
     								4
    +								fr
    +								4
     							
     							snapshots
     							
    @@ -841,6 +885,8 @@
     							
     								en
     								5
    +								fr
    +								5
     							
     							snapshots
     							
    @@ -864,6 +910,8 @@
     							
     								en
     								6
    +								fr
    +								6
     							
     							snapshots
     							
    @@ -887,6 +935,8 @@
     							
     								en
     								7
    +								fr
    +								7
     							
     							snapshots
     							
    @@ -910,6 +960,8 @@
     							
     								en
     								8
    +								fr
    +								8
     							
     							snapshots
     							
    @@ -933,6 +985,8 @@
     							
     								en
     								9
    +								fr
    +								9
     							
     							snapshots
     							
    @@ -956,6 +1010,8 @@
     							
     								en
     								2
    +								fr
    +								2
     							
     							snapshots
     							
    @@ -979,6 +1035,8 @@
     							
     								en
     								1
    +								fr
    +								1
     							
     							snapshots
     							
    @@ -1002,6 +1060,8 @@
     							
     								en
     								Star
    +								fr
    +								Étoile
     							
     							snapshots
     							
    @@ -1025,6 +1085,8 @@
     							
     								en
     								0
    +								fr
    +								0
     							
     							snapshots
     							
    @@ -1048,6 +1110,8 @@
     							
     								en
     								Sharp
    +								fr
    +								Dièse
     							
     							snapshots
     							
    @@ -1071,6 +1135,8 @@
     							
     								en
     								Back
    +								fr
    +								Retour
     							
     							snapshots
     							
    @@ -1094,6 +1160,8 @@
     							
     								en
     								Add call
    +								fr
    +								Ajouter un appel
     							
     							snapshots
     							
    @@ -1117,6 +1185,8 @@
     							
     								en
     								Backspace
    +								fr
    +								Effacer
     							
     							snapshots
     							
    @@ -1140,6 +1210,8 @@
     							
     								en
     								Add to contact
    +								fr
    +								Ajouter au contact
     							
     							snapshots
     							
    @@ -1163,6 +1235,8 @@
     							
     								en
     								Call
    +								fr
    +								Appeler
     							
     							snapshots
     							
    @@ -1186,6 +1260,8 @@
     							
     								en
     								Transfer call
    +								fr
    +								Transférer l'appel
     							
     							snapshots
     							
    @@ -1198,9 +1274,9 @@
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     				
    @@ -1208,17 +1284,17 @@
     					
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/DialerViewController~ipad/1/DialerViewController~ipad.xib
    +								Classes/DialerViewController~ipad/2/DialerViewController~ipad.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:13:22Z
    +					2012-09-11T07:20:16Z
     					changed values
     					
     					class
    @@ -1228,7 +1304,7 @@
     					flags
     					0
     					hash
    -					1ed22f3f31bb5198ca991b340a165b4c
    +					fc4e4cbece826acf96d8cbb7d692bf2f
     
     					name
     					DialerViewController~ipad.xib
    @@ -1253,6 +1329,8 @@
     							
     								en
     								Enter a address
    +								fr
    +								Entrez une addresse
     							
     							snapshots
     							
    @@ -1265,7 +1343,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUITextField"; placeholder = "Enter sip address or phone number..."; ObjectID = "6";
    +							Class = "IBUITextField"; placeholder = "Enter SIP address or phone number..."; ObjectID = "6";
     							errors
     							
     							flags
    @@ -1275,7 +1353,9 @@
     							localizations
     							
     								en
    -								Enter sip address or phone number...
    +								Enter SIP address or phone number...
    +								fr
    +								Entrez une addresse SIP ou un numéro de téléphone...
     							
     							snapshots
     							
    @@ -1299,6 +1379,8 @@
     							
     								en
     								Star
    +								fr
    +								Étoile
     							
     							snapshots
     							
    @@ -1322,6 +1404,8 @@
     							
     								en
     								6
    +								fr
    +								6
     							
     							snapshots
     							
    @@ -1345,6 +1429,8 @@
     							
     								en
     								0
    +								fr
    +								0
     							
     							snapshots
     							
    @@ -1368,6 +1454,8 @@
     							
     								en
     								Sharp
    +								fr
    +								Dièse
     							
     							snapshots
     							
    @@ -1391,6 +1479,8 @@
     							
     								en
     								9
    +								fr
    +								9
     							
     							snapshots
     							
    @@ -1414,6 +1504,8 @@
     							
     								en
     								8
    +								fr
    +								8
     							
     							snapshots
     							
    @@ -1437,6 +1529,8 @@
     							
     								en
     								7
    +								fr
    +								7
     							
     							snapshots
     							
    @@ -1460,6 +1554,8 @@
     							
     								en
     								4
    +								fr
    +								4
     							
     							snapshots
     							
    @@ -1483,6 +1579,8 @@
     							
     								en
     								5
    +								fr
    +								5
     							
     							snapshots
     							
    @@ -1506,6 +1604,8 @@
     							
     								en
     								3
    +								fr
    +								3
     							
     							snapshots
     							
    @@ -1529,6 +1629,8 @@
     							
     								en
     								2
    +								fr
    +								2
     							
     							snapshots
     							
    @@ -1552,6 +1654,8 @@
     							
     								en
     								1
    +								fr
    +								1
     							
     							snapshots
     							
    @@ -1575,6 +1679,8 @@
     							
     								en
     								Transfer Call
    +								fr
    +								Transférer l'appel
     							
     							snapshots
     							
    @@ -1598,6 +1704,8 @@
     							
     								en
     								Call
    +								fr
    +								Appeler
     							
     							snapshots
     							
    @@ -1621,6 +1729,8 @@
     							
     								en
     								Back
    +								fr
    +								Retour
     							
     							snapshots
     							
    @@ -1644,6 +1754,8 @@
     							
     								en
     								Add call
    +								fr
    +								Ajouter un appel
     							
     							snapshots
     							
    @@ -1667,6 +1779,8 @@
     							
     								en
     								Add to Contact
    +								fr
    +								Ajouter au contact
     							
     							snapshots
     							
    @@ -1690,6 +1804,8 @@
     							
     								en
     								Backscape
    +								fr
    +								Effacer
     							
     							snapshots
     							
    @@ -1702,9 +1818,9 @@
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     				
    @@ -1757,6 +1873,8 @@
     							
     								en
     								Username
    +								fr
    +								Nom d'utilisateur
     							
     							snapshots
     							
    @@ -1780,6 +1898,8 @@
     							
     								en
     								Username
    +								fr
    +								Nom d'utilisateur
     							
     							snapshots
     							
    @@ -1803,6 +1923,8 @@
     							
     								en
     								Password
    +								fr
    +								Mot de passe
     							
     							snapshots
     							
    @@ -1826,6 +1948,8 @@
     							
     								en
     								Password
    +								fr
    +								Mot de passe
     							
     							snapshots
     							
    @@ -1849,6 +1973,8 @@
     							
     								en
     								Login
    +								fr
    +								S'enregistrer
     							
     							snapshots
     							
    @@ -1872,6 +1998,8 @@
     							
     								en
     								Login
    +								fr
    +								S'enregistrer
     							
     							snapshots
     							
    @@ -1939,6 +2067,8 @@
     							
     								en
     								Back
    +								fr
    +								Retour
     							
     							snapshots
     							
    @@ -1962,6 +2092,8 @@
     							
     								en
     								Contact's avatar
    +								fr
    +								Avatar du contact
     							
     							snapshots
     							
    @@ -1985,6 +2117,8 @@
     							
     								en
     								Contact's name
    +								fr
    +								Nom du contact
     							
     							snapshots
     							
    @@ -2031,6 +2165,8 @@
     							
     								en
     								Date:
    +								fr
    +								Date:
     							
     							snapshots
     							
    @@ -2054,6 +2190,8 @@
     							
     								en
     								Call date
    +								fr
    +								Date de l'appel
     							
     							snapshots
     							
    @@ -2100,6 +2238,8 @@
     							
     								en
     								Duration:
    +								fr
    +								Durée:
     							
     							snapshots
     							
    @@ -2123,6 +2263,8 @@
     							
     								en
     								Call duration
    +								fr
    +								Durée de l'appel
     							
     							snapshots
     							
    @@ -2169,6 +2311,8 @@
     							
     								en
     								Call type
    +								fr
    +								Type d'appel
     							
     							snapshots
     							
    @@ -2215,6 +2359,8 @@
     							
     								en
     								Type:
    +								fr
    +								Type:
     							
     							snapshots
     							
    @@ -2238,6 +2384,8 @@
     							
     								en
     								Callback
    +								fr
    +								Rappeler
     							
     							snapshots
     							
    @@ -2284,6 +2432,8 @@
     							
     								en
     								Add to contact
    +								fr
    +								Ajouter au contact
     							
     							snapshots
     							
    @@ -2351,6 +2501,8 @@
     							
     								en
     								All contacts filter
    +								fr
    +								Afficher tout les contacts
     							
     							snapshots
     							
    @@ -2374,6 +2526,8 @@
     							
     								en
     								Missed contacts filter
    +								fr
    +								Afficher les contacts Linphone
     							
     							snapshots
     							
    @@ -2397,6 +2551,8 @@
     							
     								en
     								Edit
    +								fr
    +								Éditer
     							
     							snapshots
     							
    @@ -2420,6 +2576,8 @@
     							
     								en
     								Delete all
    +								fr
    +								Supprimer tout
     							
     							snapshots
     							
    @@ -2443,6 +2601,8 @@
     							
     								en
     								Del
    +								fr
    +								Del
     							
     							snapshots
     							
    @@ -2510,6 +2670,8 @@
     							
     								en
     								Switch camera
    +								fr
    +								Changer de camera
     							
     							snapshots
     							
    @@ -2577,6 +2739,8 @@
     							
     								en
     								Decline
    +								fr
    +								Refuser
     							
     							snapshots
     							
    @@ -2600,6 +2764,8 @@
     							
     								en
     								Accept
    +								fr
    +								Accepter
     							
     							snapshots
     							
    @@ -2623,6 +2789,8 @@
     							
     								en
     								Contact's name
    +								fr
    +								Nom du contact
     							
     							snapshots
     							
    @@ -2669,6 +2837,8 @@
     							
     								en
     								Incoming call
    +								fr
    +								Appel entrant
     							
     							snapshots
     							
    @@ -2692,6 +2862,8 @@
     							
     								en
     								Contact's avatar
    +								fr
    +								Avatar du contact
     							
     							snapshots
     							
    @@ -2714,17 +2886,17 @@
     					
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/WizardViewController/1/WizardViewController.xib
    +								Classes/WizardViewController/2/WizardViewController.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:50:00Z
    +					2012-09-11T07:32:37Z
     					changed values
     					
     					class
    @@ -2734,7 +2906,7 @@
     					flags
     					0
     					hash
    -					42816e9f5499a89abc8b9520051622f6
    +					6feda2909660b9c654e2bde3ba932af7
     
     					name
     					WizardViewController.xib
    @@ -2759,6 +2931,8 @@
     							
     								en
     								Start
    +								fr
    +								Démarrer
     							
     							snapshots
     							
    @@ -2782,6 +2956,8 @@
     							
     								en
     								Back
    +								fr
    +								Retour
     							
     							snapshots
     							
    @@ -2805,6 +2981,8 @@
     							
     								en
     								Cancel
    +								fr
    +								Annuler
     							
     							snapshots
     							
    @@ -2828,6 +3006,8 @@
     							
     								en
     								Linphone setup assistant icon
    +								fr
    +								Icône de l'assistant de configuration de compte
     							
     							snapshots
     							
    @@ -2840,7 +3020,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUILabel"; text = "This assistant will help you  to use a SIP account for your calls."; ObjectID = "22";
    +							Class = "IBUILabel"; text = "This assistant will help you to use a SIP account for your calls."; ObjectID = "22";
     							errors
     							
     							flags
    @@ -2850,7 +3030,9 @@
     							localizations
     							
     								en
    -								This assistant will help you  to use a SIP account for your calls.
    +								This assistant will help you to use a SIP account for your calls.
    +								fr
    +								Cet assistant va vous aider à utiliser votre compte SIP pour vos appels.
     							
     							snapshots
     							
    @@ -2874,6 +3056,8 @@
     							
     								en
     								Create linphone.org account
    +								fr
    +								Créer un compte linphone.org
     							
     							snapshots
     							
    @@ -2897,6 +3081,8 @@
     							
     								en
     								Create an account on linphone.org
    +								fr
    +								Crée un compte linphone.org
     							
     							snapshots
     							
    @@ -2920,6 +3106,8 @@
     							
     								en
     								Account setup assistant
    +								fr
    +								Assistant de configuration de compte
     							
     							snapshots
     							
    @@ -2943,6 +3131,8 @@
     							
     								en
     								Sign in linphone.org account
    +								fr
    +								S'enregistrer sur un compte linphone.org
     							
     							snapshots
     							
    @@ -2966,6 +3156,8 @@
     							
     								en
     								I have already a linphone.org account
    +								fr
    +								J'ai déjà un compte linphone.org
     							
     							snapshots
     							
    @@ -2989,6 +3181,8 @@
     							
     								en
     								Sign in SIP account
    +								fr
    +								S'enregistrer sur un compte SIP
     							
     							snapshots
     							
    @@ -3012,6 +3206,8 @@
     							
     								en
     								I have already a SIP account
    +								fr
    +								J'ai déjà un compte SIP
     							
     							snapshots
     							
    @@ -3035,6 +3231,8 @@
     							
     								en
     								Account setup assistant
    +								fr
    +								Assistant de configuration de compte
     							
     							snapshots
     							
    @@ -3058,6 +3256,8 @@
     							
     								en
     								Account setup assistant
    +								fr
    +								Assistant de configuration de compte
     							
     							snapshots
     							
    @@ -3081,6 +3281,8 @@
     							
     								en
     								Account setup assistant
    +								fr
    +								Assistant de configuration de compte
     							
     							snapshots
     							
    @@ -3093,7 +3295,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUILabel"; text = "Enter you username and password with your SIP domain"; ObjectID = "58";
    +							Class = "IBUILabel"; text = "Enter your username and password with your SIP domain"; ObjectID = "58";
     							errors
     							
     							flags
    @@ -3103,7 +3305,9 @@
     							localizations
     							
     								en
    -								Enter you username and password with your SIP domain
    +								Enter your username and password with your SIP domain
    +								fr
    +								Entrez votre nom d'utilisateur, votre mot de passe ainsi que votre domaine SIP
     							
     							snapshots
     							
    @@ -3127,6 +3331,8 @@
     							
     								en
     								Username
    +								fr
    +								Nom d'utilisateur
     							
     							snapshots
     							
    @@ -3150,6 +3356,8 @@
     							
     								en
     								Username
    +								fr
    +								Nom d'utilisateur
     							
     							snapshots
     							
    @@ -3173,6 +3381,8 @@
     							
     								en
     								Password
    +								fr
    +								Mot de passe
     							
     							snapshots
     							
    @@ -3196,6 +3406,8 @@
     							
     								en
     								Password
    +								fr
    +								Mot de passe
     							
     							snapshots
     							
    @@ -3219,6 +3431,8 @@
     							
     								en
     								Domain
    +								fr
    +								Domaine
     							
     							snapshots
     							
    @@ -3242,6 +3456,8 @@
     							
     								en
     								Domain
    +								fr
    +								Domaine
     							
     							snapshots
     							
    @@ -3265,6 +3481,8 @@
     							
     								en
     								Sign in
    +								fr
    +								S'enregistrer
     							
     							snapshots
     							
    @@ -3288,6 +3506,8 @@
     							
     								en
     								Sign in
    +								fr
    +								S'enregistrer
     							
     							snapshots
     							
    @@ -3311,6 +3531,8 @@
     							
     								en
     								Sign in
    +								fr
    +								S'enregistrer
     							
     							snapshots
     							
    @@ -3334,6 +3556,8 @@
     							
     								en
     								Sign in
    +								fr
    +								S'enregistrer
     							
     							snapshots
     							
    @@ -3357,6 +3581,8 @@
     							
     								en
     								Password
    +								fr
    +								Mot de passe
     							
     							snapshots
     							
    @@ -3380,6 +3606,8 @@
     							
     								en
     								Password
    +								fr
    +								Mot de passe
     							
     							snapshots
     							
    @@ -3392,7 +3620,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUILabel"; text = "Enter you username and password of your linphone.org account"; ObjectID = "67";
    +							Class = "IBUILabel"; text = "Enter your username and password of your linphone.org account"; ObjectID = "67";
     							errors
     							
     							flags
    @@ -3402,7 +3630,9 @@
     							localizations
     							
     								en
    -								Enter you username and password of your linphone.org account
    +								Enter your username and password of your linphone.org account
    +								fr
    +								Entrez le nom d'utilisateur et le mot de passe de votre compte linphone.org
     							
     							snapshots
     							
    @@ -3426,6 +3656,8 @@
     							
     								en
     								Username
    +								fr
    +								Nom d'utilisateur
     							
     							snapshots
     							
    @@ -3449,6 +3681,8 @@
     							
     								en
     								Username
    +								fr
    +								Nom d'utilisateur
     							
     							snapshots
     							
    @@ -3461,7 +3695,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUILabel"; text = "Enter you username and password with your email address"; ObjectID = "73";
    +							Class = "IBUILabel"; text = "Enter your username and password with your email address"; ObjectID = "73";
     							errors
     							
     							flags
    @@ -3471,7 +3705,9 @@
     							localizations
     							
     								en
    -								Enter you username and password with your email address
    +								Enter your username and password with your email address
    +								fr
    +								Entrer votre nom d'utilisateur, votre mot de passe ainsi que votre addresse email
     							
     							snapshots
     							
    @@ -3495,6 +3731,8 @@
     							
     								en
     								Username
    +								fr
    +								Nom d'utilisateur
     							
     							snapshots
     							
    @@ -3518,6 +3756,8 @@
     							
     								en
     								Username
    +								fr
    +								Nom d'utilisateur
     							
     							snapshots
     							
    @@ -3541,6 +3781,8 @@
     							
     								en
     								Password
    +								fr
    +								Mot de passe
     							
     							snapshots
     							
    @@ -3564,6 +3806,8 @@
     							
     								en
     								Password
    +								fr
    +								Mot de passe
     							
     							snapshots
     							
    @@ -3587,6 +3831,8 @@
     							
     								en
     								Password again
    +								fr
    +								Mot de passe à nouveau
     							
     							snapshots
     							
    @@ -3610,6 +3856,8 @@
     							
     								en
     								Password
    +								fr
    +								Mot de passe
     							
     							snapshots
     							
    @@ -3633,6 +3881,8 @@
     							
     								en
     								Register
    +								fr
    +								Créer
     							
     							snapshots
     							
    @@ -3656,6 +3906,8 @@
     							
     								en
     								Register
    +								fr
    +								S'enregistrer
     							
     							snapshots
     							
    @@ -3679,6 +3931,8 @@
     							
     								en
     								Email
    +								fr
    +								Email
     							
     							snapshots
     							
    @@ -3702,6 +3956,8 @@
     							
     								en
     								Email
    +								fr
    +								Email
     							
     							snapshots
     							
    @@ -3725,6 +3981,8 @@
     							
     								en
     								Check validation
    +								fr
    +								Vérifier la validation
     							
     							snapshots
     							
    @@ -3748,6 +4006,8 @@
     							
     								en
     								Check validation
    +								fr
    +								Verifiez la validation
     							
     							snapshots
     							
    @@ -3771,6 +4031,8 @@
     							
     								en
     								Username
    +								fr
    +								Nom d'utilisateur
     							
     							snapshots
     							
    @@ -3794,6 +4056,8 @@
     							
     								en
     								Your account is created. Please check your mails in order to validate your account.
    +								fr
    +								Votre compte est crée. Vérifier vos emails pour valider votre compte.
     							
     							snapshots
     							
    @@ -3817,6 +4081,8 @@
     							
     								en
     								Password
    +								fr
    +								Mot de passe
     							
     							snapshots
     							
    @@ -3840,6 +4106,8 @@
     							
     								en
     								Account setup assistant
    +								fr
    +								Assistant de configuration de compte
     							
     							snapshots
     							
    @@ -3852,9 +4120,9 @@
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     			
    @@ -3889,17 +4157,17 @@
     					
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								LinphoneUI/UICallBar/1/UICallBar.xib
    +								LinphoneUI/UICallBar/2/UICallBar.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:23:27Z
    +					2012-09-11T07:54:30Z
     					changed values
     					
     					class
    @@ -3909,7 +4177,7 @@
     					flags
     					0
     					hash
    -					21217614bd20aef77a46e2656ec50428
    +					29c97d00d72b5ceb34645a57ea2f296f
     
     					name
     					UICallBar.xib
    @@ -3934,6 +4202,8 @@
     							
     								en
     								Back
    +								fr
    +								Retour
     							
     							snapshots
     							
    @@ -3957,6 +4227,8 @@
     							
     								en
     								Hangup
    +								fr
    +								Raccrocher
     							
     							snapshots
     							
    @@ -3980,6 +4252,8 @@
     							
     								en
     								Pause
    +								fr
    +								Pause
     							
     							snapshots
     							
    @@ -4003,6 +4277,8 @@
     							
     								en
     								Speaker
    +								fr
    +								Haut parleur
     							
     							snapshots
     							
    @@ -4026,6 +4302,8 @@
     							
     								en
     								Options
    +								fr
    +								Options
     							
     							snapshots
     							
    @@ -4049,6 +4327,8 @@
     							
     								en
     								Micro
    +								fr
    +								Micro
     							
     							snapshots
     							
    @@ -4072,6 +4352,8 @@
     							
     								en
     								Video
    +								fr
    +								Vidéo
     							
     							snapshots
     							
    @@ -4084,7 +4366,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUIButton"; accessibilityLabel = "Start Conference"; ObjectID = "21";
    +							Class = "IBUIButton"; accessibilityLabel = "Start conference"; ObjectID = "21";
     							errors
     							
     							flags
    @@ -4094,7 +4376,9 @@
     							localizations
     							
     								en
    -								Start Conference
    +								Start conference
    +								fr
    +								Démarrer une conférence
     							
     							snapshots
     							
    @@ -4118,6 +4402,8 @@
     							
     								en
     								Star
    +								fr
    +								Étoile
     							
     							snapshots
     							
    @@ -4141,6 +4427,8 @@
     							
     								en
     								6
    +								fr
    +								6
     							
     							snapshots
     							
    @@ -4164,6 +4452,8 @@
     							
     								en
     								0
    +								fr
    +								0
     							
     							snapshots
     							
    @@ -4187,6 +4477,8 @@
     							
     								en
     								Sharp
    +								fr
    +								Dièse
     							
     							snapshots
     							
    @@ -4210,6 +4502,8 @@
     							
     								en
     								9
    +								fr
    +								9
     							
     							snapshots
     							
    @@ -4233,6 +4527,8 @@
     							
     								en
     								8
    +								fr
    +								8
     							
     							snapshots
     							
    @@ -4256,6 +4552,8 @@
     							
     								en
     								7
    +								fr
    +								7
     							
     							snapshots
     							
    @@ -4279,6 +4577,8 @@
     							
     								en
     								4
    +								fr
    +								4
     							
     							snapshots
     							
    @@ -4302,6 +4602,8 @@
     							
     								en
     								5
    +								fr
    +								5
     							
     							snapshots
     							
    @@ -4325,6 +4627,8 @@
     							
     								en
     								3
    +								fr
    +								3
     							
     							snapshots
     							
    @@ -4348,6 +4652,8 @@
     							
     								en
     								2
    +								fr
    +								2
     							
     							snapshots
     							
    @@ -4371,6 +4677,8 @@
     							
     								en
     								1
    +								fr
    +								1
     							
     							snapshots
     							
    @@ -4394,6 +4702,8 @@
     							
     								en
     								Add call
    +								fr
    +								Ajouter un appel
     							
     							snapshots
     							
    @@ -4417,10 +4727,15 @@
     							
     								en
     								Transfer call
    +								fr
    +								Transferer l'appel
     							
     							snapshots
     							
     						
    +					
    +					old objects
    +					
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -4609,7 +4924,9 @@
     							change date
     							2001-01-01T00:00:00Z
     							changed values
    -							
    +							
    +								<reference>
    +							
     							class
     							BLStringKeyObject
     							comment
    @@ -4632,7 +4949,10 @@
     							change date
     							2001-01-01T00:00:00Z
     							changed values
    -							
    +							
    +								<reference>
    +								fr
    +							
     							class
     							BLStringKeyObject
     							comment
    @@ -4647,21 +4967,21 @@
     							
     								en
     								Add call
    +								fr
    +								Ajouter un appel
     							
     							snapshots
     							
     						
     					
    -					old objects
    -					
     					snapshots
     					
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     				
    @@ -4669,17 +4989,17 @@
     					
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								LinphoneUI/UICallBar~ipad/1/UICallBar~ipad.xib
    +								LinphoneUI/UICallBar~ipad/2/UICallBar~ipad.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:24:52Z
    +					2012-09-11T07:54:16Z
     					changed values
     					
     					class
    @@ -4689,7 +5009,7 @@
     					flags
     					0
     					hash
    -					5f071ae1683c558236da3e9e81c4f310
    +					8c4903cac7f135d809c9b2c0b019ecef
     
     					name
     					UICallBar~ipad.xib
    @@ -4714,6 +5034,8 @@
     							
     								en
     								Back
    +								fr
    +								Retour
     							
     							snapshots
     							
    @@ -4737,6 +5059,8 @@
     							
     								en
     								Hangup
    +								fr
    +								Raccrocher
     							
     							snapshots
     							
    @@ -4749,7 +5073,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUIButton"; accessibilityLabel = "Start Conference"; ObjectID = "12";
    +							Class = "IBUIButton"; accessibilityLabel = "Start conference"; ObjectID = "12";
     							errors
     							
     							flags
    @@ -4759,7 +5083,9 @@
     							localizations
     							
     								en
    -								Start Conference
    +								Start conference
    +								fr
    +								Démarrer une conférence
     							
     							snapshots
     							
    @@ -4783,6 +5109,8 @@
     							
     								en
     								Pause
    +								fr
    +								Pause
     							
     							snapshots
     							
    @@ -4806,6 +5134,8 @@
     							
     								en
     								Options
    +								fr
    +								Options
     							
     							snapshots
     							
    @@ -4829,6 +5159,8 @@
     							
     								en
     								Speaker
    +								fr
    +								Haut parleur
     							
     							snapshots
     							
    @@ -4852,6 +5184,8 @@
     							
     								en
     								Micro
    +								fr
    +								Micro
     							
     							snapshots
     							
    @@ -4875,6 +5209,8 @@
     							
     								en
     								Video
    +								fr
    +								Vidéo
     							
     							snapshots
     							
    @@ -4898,6 +5234,8 @@
     							
     								en
     								1
    +								fr
    +								1
     							
     							snapshots
     							
    @@ -4921,6 +5259,8 @@
     							
     								en
     								2
    +								fr
    +								2
     							
     							snapshots
     							
    @@ -4944,6 +5284,8 @@
     							
     								en
     								3
    +								fr
    +								3
     							
     							snapshots
     							
    @@ -4967,6 +5309,8 @@
     							
     								en
     								4
    +								fr
    +								4
     							
     							snapshots
     							
    @@ -4990,6 +5334,8 @@
     							
     								en
     								5
    +								fr
    +								5
     							
     							snapshots
     							
    @@ -5013,6 +5359,8 @@
     							
     								en
     								6
    +								fr
    +								6
     							
     							snapshots
     							
    @@ -5036,6 +5384,8 @@
     							
     								en
     								7
    +								fr
    +								7
     							
     							snapshots
     							
    @@ -5059,6 +5409,8 @@
     							
     								en
     								8
    +								fr
    +								8
     							
     							snapshots
     							
    @@ -5082,6 +5434,8 @@
     							
     								en
     								9
    +								fr
    +								9
     							
     							snapshots
     							
    @@ -5105,6 +5459,8 @@
     							
     								en
     								Star
    +								fr
    +								Étoile
     							
     							snapshots
     							
    @@ -5128,6 +5484,8 @@
     							
     								en
     								0
    +								fr
    +								0
     							
     							snapshots
     							
    @@ -5151,6 +5509,8 @@
     							
     								en
     								Sharp
    +								fr
    +								Dièse
     							
     							snapshots
     							
    @@ -5174,6 +5534,8 @@
     							
     								en
     								Add call
    +								fr
    +								Ajouter un appel
     							
     							snapshots
     							
    @@ -5197,10 +5559,15 @@
     							
     								en
     								Transfer call
    +								fr
    +								Transferer l'appel
     							
     							snapshots
     							
     						
    +					
    +					old objects
    +					
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -5432,16 +5799,14 @@
     							
     						
     					
    -					old objects
    -					
     					snapshots
     					
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     				
    @@ -5494,6 +5859,8 @@
     							
     								en
     								Conference
    +								fr
    +								Conférence
     							
     							snapshots
     							
    @@ -5517,6 +5884,8 @@
     							
     								en
     								Pause
    +								fr
    +								Pause
     							
     							snapshots
     							
    @@ -5586,6 +5955,8 @@
     							
     								en
     								Remove
    +								fr
    +								Supprimer
     							
     							snapshots
     							
    @@ -5609,6 +5980,8 @@
     							
     								en
     								Remove Contact
    +								fr
    +								Supprimer le Contact
     							
     							snapshots
     							
    @@ -5631,17 +6004,17 @@
     					
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								LinphoneUI/UIMainBar/1/UIMainBar.xib
    +								LinphoneUI/UIMainBar/2/UIMainBar.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:26:19Z
    +					2012-09-11T08:02:48Z
     					changed values
     					
     					class
    @@ -5651,7 +6024,7 @@
     					flags
     					0
     					hash
    -					5cec6bcd22057df549ea6ed9d5dcf3bc
    +					8bc9a094a2fba0f004e847ed8f520c9f
     
     					name
     					UIMainBar.xib
    @@ -5676,6 +6049,8 @@
     							
     								en
     								Chat
    +								fr
    +								Chat
     							
     							snapshots
     							
    @@ -5699,6 +6074,8 @@
     							
     								en
     								History
    +								fr
    +								Historique
     							
     							snapshots
     							
    @@ -5722,6 +6099,8 @@
     							
     								en
     								Dialer
    +								fr
    +								Clavier
     							
     							snapshots
     							
    @@ -5745,6 +6124,8 @@
     							
     								en
     								Contacts
    +								fr
    +								Contacts
     							
     							snapshots
     							
    @@ -5768,6 +6149,8 @@
     							
     								en
     								Settings
    +								fr
    +								Options
     							
     							snapshots
     							
    @@ -5780,7 +6163,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUILabel"; accessibilityLabel = "History missed"; ObjectID = "34";
    +							Class = "IBUILabel"; accessibilityLabel = "Missed call(s)"; ObjectID = "34";
     							errors
     							
     							flags
    @@ -5790,7 +6173,9 @@
     							localizations
     							
     								en
    -								History missed
    +								Missed call(s)
    +								fr
    +								Appel(s) manqué(s)
     							
     							snapshots
     							
    @@ -5807,7 +6192,7 @@
     							errors
     							
     							flags
    -							0
    +							2
     							key
     							34.text
     							localizations
    @@ -5826,7 +6211,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUILabel"; accessibilityLabel = "Chat missed"; ObjectID = "38";
    +							Class = "IBUILabel"; accessibilityLabel = "Missed message(s)"; ObjectID = "38";
     							errors
     							
     							flags
    @@ -5836,7 +6221,9 @@
     							localizations
     							
     								en
    -								Chat missed
    +								Missed message(s)
    +								fr
    +								Message(s) manqué(s)
     							
     							snapshots
     							
    @@ -5853,7 +6240,7 @@
     							errors
     							
     							flags
    -							0
    +							2
     							key
     							38.text
     							localizations
    @@ -5872,9 +6259,9 @@
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     				
    @@ -5882,17 +6269,17 @@
     					
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								LinphoneUI/UIMainBar~ipad/1/UIMainBar~ipad.xib
    +								LinphoneUI/UIMainBar~ipad/2/UIMainBar~ipad.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:27:06Z
    +					2012-09-11T08:04:14Z
     					changed values
     					
     					class
    @@ -5902,7 +6289,7 @@
     					flags
     					0
     					hash
    -					2a8f1a9fc65ae4366e6ae727c36ca4f9
    +					970b92610d2a68797043e496662a777d
     
     					name
     					UIMainBar~ipad.xib
    @@ -5927,6 +6314,8 @@
     							
     								en
     								Dialer
    +								fr
    +								Clavier
     							
     							snapshots
     							
    @@ -5950,6 +6339,8 @@
     							
     								en
     								Chat
    +								fr
    +								Chat
     							
     							snapshots
     							
    @@ -5973,6 +6364,8 @@
     							
     								en
     								History
    +								fr
    +								Historique
     							
     							snapshots
     							
    @@ -5996,6 +6389,8 @@
     							
     								en
     								Contacts
    +								fr
    +								Contacts
     							
     							snapshots
     							
    @@ -6019,6 +6414,8 @@
     							
     								en
     								Settings
    +								fr
    +								Options
     							
     							snapshots
     							
    @@ -6031,7 +6428,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUILabel"; accessibilityLabel = "History missed"; ObjectID = "11";
    +							Class = "IBUILabel"; accessibilityLabel = "Missed call(s)"; ObjectID = "11";
     							errors
     							
     							flags
    @@ -6041,7 +6438,9 @@
     							localizations
     							
     								en
    -								History missed
    +								Missed call(s)
    +								fr
    +								Appel(s) manqué(s)
     							
     							snapshots
     							
    @@ -6077,7 +6476,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUILabel"; accessibilityLabel = "Chat missed"; ObjectID = "14";
    +							Class = "IBUILabel"; accessibilityLabel = "Missed message(s)"; ObjectID = "14";
     							errors
     							
     							flags
    @@ -6087,7 +6486,9 @@
     							localizations
     							
     								en
    -								Chat missed
    +								Missed message(s)
    +								fr
    +								Message(s) manqué(s)
     							
     							snapshots
     							
    @@ -6115,121 +6516,6 @@
     							snapshots
     							
     						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							Class = "IBUIButton"; accessibilityLabel = "Settings"; ObjectID = "30";
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							30.accessibilityLabel
    -							localizations
    -							
    -								en
    -								Settings
    -							
    -							snapshots
    -							
    -						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							Class = "IBUIButton"; accessibilityLabel = "Contacts"; ObjectID = "31";
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							31.accessibilityLabel
    -							localizations
    -							
    -								en
    -								Contacts
    -							
    -							snapshots
    -							
    -						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							Class = "IBUIButton"; accessibilityLabel = "History"; ObjectID = "32";
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							32.accessibilityLabel
    -							localizations
    -							
    -								en
    -								History
    -							
    -							snapshots
    -							
    -						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							Class = "IBUIButton"; accessibilityLabel = "Chat"; ObjectID = "33";
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							33.accessibilityLabel
    -							localizations
    -							
    -								en
    -								Chat
    -							
    -							snapshots
    -							
    -						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							Class = "IBUIButton"; accessibilityLabel = "Dialer"; ObjectID = "35";
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							35.accessibilityLabel
    -							localizations
    -							
    -								en
    -								Dialer
    -							
    -							snapshots
    -							
    -						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -6278,15 +6564,150 @@
     						
     					
     					old objects
    -					
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +								fr
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Settings"; ObjectID = "30";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							30.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Settings
    +								fr
    +								Options
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +								fr
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Contacts"; ObjectID = "31";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							31.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Contacts
    +								fr
    +								Contacts
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "History"; ObjectID = "32";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							32.accessibilityLabel
    +							localizations
    +							
    +								en
    +								History
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Chat"; ObjectID = "33";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							33.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Chat
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +								fr
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Dialer"; ObjectID = "35";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							35.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Dialer
    +								fr
    +								Clavier
    +							
    +							snapshots
    +							
    +						
    +					
     					snapshots
     					
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     				
    @@ -6339,6 +6760,8 @@
     							
     								en
     								Contact's name
    +								fr
    +								Nom du contact
     							
     							snapshots
     							
    @@ -6355,7 +6778,7 @@
     							errors
     							
     							flags
    -							0
    +							2
     							key
     							8.text
     							localizations
    @@ -6385,6 +6808,8 @@
     							
     								en
     								Contact's avatar
    +								fr
    +								Avatar du contact
     							
     							snapshots
     							
    @@ -6407,17 +6832,17 @@
     					
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								LinphoneUI/UICallCell/1/UICallCell.xib
    +								LinphoneUI/UICallCell/2/UICallCell.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:32:07Z
    +					2012-09-11T07:57:05Z
     					changed values
     					
     					class
    @@ -6427,7 +6852,7 @@
     					flags
     					0
     					hash
    -					cc6d2f3f532fa2140d7fad349cfeb4c5
    +					b4d5d9456e9ba50e6f6232c1b27a3ef2
     
     					name
     					UICallCell.xib
    @@ -6452,6 +6877,8 @@
     							
     								en
     								Contact's name
    +								fr
    +								Nom du contact
     							
     							snapshots
     							
    @@ -6468,7 +6895,7 @@
     							errors
     							
     							flags
    -							0
    +							2
     							key
     							17.text
     							localizations
    @@ -6498,6 +6925,8 @@
     							
     								en
     								Call state
    +								fr
    +								État de l'appel
     							
     							snapshots
     							
    @@ -6510,7 +6939,7 @@
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUILabel"; accessibilityLabel = "Call state"; ObjectID = "19";
    +							Class = "IBUILabel"; accessibilityLabel = "Duration"; ObjectID = "19";
     							errors
     							
     							flags
    @@ -6520,7 +6949,9 @@
     							localizations
     							
     								en
    -								Call state
    +								Duration
    +								fr
    +								Durée
     							
     							snapshots
     							
    @@ -6537,7 +6968,7 @@
     							errors
     							
     							flags
    -							0
    +							2
     							key
     							19.text
     							localizations
    @@ -6567,6 +6998,8 @@
     							
     								en
     								Contact's avatar
    +								fr
    +								Avatar du contact
     							
     							snapshots
     							
    @@ -6590,6 +7023,8 @@
     							
     								en
     								Expand
    +								fr
    +								Agrandir
     							
     							snapshots
     							
    @@ -6613,6 +7048,8 @@
     							
     								en
     								Pause
    +								fr
    +								Pause
     							
     							snapshots
     							
    @@ -6636,6 +7073,8 @@
     							
     								en
     								Remove
    +								fr
    +								Supprimer
     							
     							snapshots
     							
    @@ -6648,9 +7087,9 @@
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     			
    @@ -6695,7 +7134,7 @@
     						
     					
     					change date
    -					2012-09-10T14:42:01Z
    +					2012-09-11T10:28:55Z
     					changed values
     					
     					class
    @@ -6705,7 +7144,7 @@
     					flags
     					0
     					hash
    -					69120e517d5f8a0ef7d82d62c184845e
    +					e6f2d74fc56bbbdbcee0adb3a997cc4c
     
     					name
     					Localizable.strings
    @@ -6730,6 +7169,8 @@
     							
     								en
     								 (Aborted)
    +								fr
    +								 (Annulé)
     							
     							snapshots
     							
    @@ -6753,6 +7194,8 @@
     							
     								en
     								 (Declined)
    +								fr
    +								 (Refusé)
     							
     							snapshots
     							
    @@ -6776,6 +7219,8 @@
     							
     								en
     								 (Missed)
    +								fr
    +								 (Manqué)
     							
     							snapshots
     							
    @@ -6801,6 +7246,9 @@ Reason was: %@
     								en
     								%1$@
     Reason was: %2$@
    +								fr
    +								%1$@
    +La cause était: %2$@
     							
     							snapshots
     							
    @@ -6819,11 +7267,13 @@ Reason was: %2$@
     							flags
     							0
     							key
    -							'%@' not registered to Service
    +							'%@' not registered
     							localizations
     							
     								en
    -								'%@' not registered to Service
    +								'%@' not registered
    +								fr
    +								'%' n'est pas enregistré
     							
     							snapshots
     							
    @@ -6847,6 +7297,8 @@ Reason was: %2$@
     							
     								en
     								'%@' would like to enable video
    +								fr
    +								'%@' voudrait activer la video
     							
     							snapshots
     							
    @@ -6870,6 +7322,8 @@ Reason was: %2$@
     							
     								en
     								Accept
    +								fr
    +								Accepter
     							
     							snapshots
     							
    @@ -6893,6 +7347,8 @@ Reason was: %2$@
     							
     								en
     								Account creation issue
    +								fr
    +								Problème de création de compte
     							
     							snapshots
     							
    @@ -6916,6 +7372,8 @@ Reason was: %2$@
     							
     								en
     								Account validation issue
    +								fr
    +								Problème de validation du compte
     							
     							snapshots
     							
    @@ -6939,6 +7397,8 @@ Reason was: %2$@
     							
     								en
     								Alert
    +								fr
    +								Alerte
     							
     							snapshots
     							
    @@ -6962,6 +7422,8 @@ Reason was: %2$@
     							
     								en
     								Answer
    +								fr
    +								Répondre
     							
     							snapshots
     							
    @@ -6985,6 +7447,8 @@ Reason was: %2$@
     							
     								en
     								Bad credentials, check your account settings
    +								fr
    +								Erreur d'authenfication, vérifiez la configuration du compte
     							
     							snapshots
     							
    @@ -7008,6 +7472,8 @@ Reason was: %2$@
     							
     								en
     								Battery is running low. Stop video ?
    +								fr
    +								La batterie est faible. Voulez vous stoppez la vidéo?
     							
     							snapshots
     							
    @@ -7031,6 +7497,8 @@ Reason was: %2$@
     							
     								en
     								Call failed
    +								fr
    +								Échec de l'appel
     							
     							snapshots
     							
    @@ -7054,6 +7522,8 @@ Reason was: %2$@
     							
     								en
     								Can't create the account. Please try again.
    +								fr
    +								Ne peux pas créer le compte. Veuillez réessayer.
     							
     							snapshots
     							
    @@ -7077,6 +7547,8 @@ Reason was: %2$@
     							
     								en
     								Cannot call %@
    +								fr
    +								Ne peux pas appeler %@
     							
     							snapshots
     							
    @@ -7100,6 +7572,8 @@ Reason was: %2$@
     							
     								en
     								Cannot make call
    +								fr
    +								Appel impossible
     							
     							snapshots
     							
    @@ -7118,11 +7592,13 @@ Reason was: %2$@
     							flags
     							0
     							key
    -							Check error
    +							Check error(s)
     							localizations
     							
     								en
    -								Check error
    +								Check error(s)
    +								fr
    +								Vérification erreur(s)
     							
     							snapshots
     							
    @@ -7146,6 +7622,8 @@ Reason was: %2$@
     							
     								en
     								Check issue
    +								fr
    +								Problème de vérification
     							
     							snapshots
     							
    @@ -7169,6 +7647,8 @@ Reason was: %2$@
     							
     								en
     								Communication issue
    +								fr
    +								Problème de communication
     							
     							snapshots
     							
    @@ -7192,6 +7672,8 @@ Reason was: %2$@
     							
     								en
     								Communication issue (%@)
    +								fr
    +								Problème de communication (%@)
     							
     							snapshots
     							
    @@ -7215,6 +7697,8 @@ Reason was: %2$@
     							
     								en
     								Continue
    +								fr
    +								Continuer
     							
     							snapshots
     							
    @@ -7238,6 +7722,8 @@ Reason was: %2$@
     							
     								en
     								Continue video
    +								fr
    +								Continuer la vidéo
     							
     							snapshots
     							
    @@ -7261,6 +7747,8 @@ Reason was: %2$@
     							
     								en
     								Decline
    +								fr
    +								Refuser
     							
     							snapshots
     							
    @@ -7284,6 +7772,8 @@ Reason was: %2$@
     							
     								en
     								Dismiss
    +								fr
    +								Valider
     							
     							snapshots
     							
    @@ -7307,6 +7797,8 @@ Reason was: %2$@
     							
     								en
     								Either configure a SIP proxy server from settings prior to place a call or use a valid SIP address (I.E sip:john@example.net)
    +								fr
    +								Veuillez configurer un serveur proxy SIP dans les options ou entrez une addresse SIP avant de faire un appel (I.E sip:john@example.net)
     							
     							snapshots
     							
    @@ -7330,6 +7822,8 @@ Reason was: %2$@
     							
     								en
     								Either configure a SIP proxy server from settings prior to send a message or use a valid SIP address (I.E sip:john@example.net)
    +								fr
    +								Veuillez configurer un serveur proxy SIP dans les options ou entrez une addresse SIP avant d'envoyer un message (I.E sip:john@example.net)
     							
     							snapshots
     							
    @@ -7353,6 +7847,8 @@ Reason was: %2$@
     							
     								en
     								Enter your password
    +								fr
    +								Entre votre mot de passe
     							
     							snapshots
     							
    @@ -7376,6 +7872,8 @@ Reason was: %2$@
     							
     								en
     								Enter your username
    +								fr
    +								Entrez votre nom d'utilisateur
     							
     							snapshots
     							
    @@ -7399,6 +7897,8 @@ Reason was: %2$@
     							
     								en
     								First name
    +								fr
    +								Prénom
     							
     							snapshots
     							
    @@ -7421,7 +7921,9 @@ Reason was: %2$@
     							localizations
     							
     								en
    -								IC_MSG
    +								Incoming call from %@
    +								fr
    +								Appel entrant de %@
     							
     							snapshots
     							
    @@ -7444,7 +7946,9 @@ Reason was: %2$@
     							localizations
     							
     								en
    -								IM_MSG
    +								Incoming message from %@
    +								fr
    +								Message entrant de %@
     							
     							snapshots
     							
    @@ -7468,6 +7972,8 @@ Reason was: %2$@
     							
     								en
     								Incoming call
    +								fr
    +								Appel entrant
     							
     							snapshots
     							
    @@ -7491,6 +7997,8 @@ Reason was: %2$@
     							
     								en
     								Invalid SIP address
    +								fr
    +								Adresse SIP invalide
     							
     							snapshots
     							
    @@ -7514,6 +8022,31 @@ Reason was: %2$@
     							
     								en
     								Last name
    +								fr
    +								Nom
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							InAppSettingsKit
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							Mail not configured
    +							localizations
    +							
    +								en
    +								Mail not configured
     							
     							snapshots
     							
    @@ -7537,6 +8070,8 @@ Reason was: %2$@
     							
     								en
     								Network down
    +								fr
    +								Aucun réseau
     							
     							snapshots
     							
    @@ -7560,6 +8095,8 @@ Reason was: %2$@
     							
     								en
     								Network Error
    +								fr
    +								Erreur réseau
     							
     							snapshots
     							
    @@ -7583,6 +8120,8 @@ Reason was: %2$@
     							
     								en
     								No microphone
    +								fr
    +								Aucun microphone
     							
     							snapshots
     							
    @@ -7606,6 +8145,8 @@ Reason was: %2$@
     							
     								en
     								No SIP account configured
    +								fr
    +								Aucun compte SIP configuré
     							
     							snapshots
     							
    @@ -7629,6 +8170,8 @@ Reason was: %2$@
     							
     								en
     								No SIP account defined
    +								fr
    +								Aucun compte SIP défini
     							
     							snapshots
     							
    @@ -7652,6 +8195,33 @@ Reason was: %2$@
     							
     								en
     								Not registered
    +								fr
    +								Non enregistré
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							InAppSettingsKit
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							OK
    +							localizations
    +							
    +								en
    +								OK
    +								fr
    +								OK
     							
     							snapshots
     							
    @@ -7675,6 +8245,8 @@ Reason was: %2$@
     							
     								en
     								Ok
    +								fr
    +								Ok
     							
     							snapshots
     							
    @@ -7698,6 +8270,8 @@ Reason was: %2$@
     							
     								en
     								Outgoing call
    +								fr
    +								Appel sortant
     							
     							snapshots
     							
    @@ -7721,6 +8295,8 @@ Reason was: %2$@
     							
     								en
     								Phone number
    +								fr
    +								Numéro de téléphone
     							
     							snapshots
     							
    @@ -7744,6 +8320,8 @@ Reason was: %2$@
     							
     								en
     								Phone numbers
    +								fr
    +								Numéros de téléphone
     							
     							snapshots
     							
    @@ -7767,6 +8345,8 @@ Reason was: %2$@
     							
     								en
     								Please make sure your device is connected to the internet and double check your SIP account configuration in the settings.
    +								fr
    +								Veuillez vérifier que votre appareil est connecté à internet et revérifier la configuration de votre compte dans les options.
     							
     							snapshots
     							
    @@ -7790,6 +8370,8 @@ Reason was: %2$@
     							
     								en
     								Please terminate GSM call
    +								fr
    +								Veuillez terminer l'appel GSM
     							
     							snapshots
     							
    @@ -7813,6 +8395,8 @@ Reason was: %2$@
     							
     								en
     								Registered
    +								fr
    +								Enregistré
     							
     							snapshots
     							
    @@ -7836,6 +8420,8 @@ Reason was: %2$@
     							
     								en
     								Registration failed
    +								fr
    +								Enregistrement échoué
     							
     							snapshots
     							
    @@ -7859,6 +8445,8 @@ Reason was: %2$@
     							
     								en
     								Registration failure
    +								fr
    +								Échec de l'enregistrement
     							
     							snapshots
     							
    @@ -7882,6 +8470,33 @@ Reason was: %2$@
     							
     								en
     								Registration in progress
    +								fr
    +								Enregistrement en cours
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Settings
    +							localizations
    +							
    +								en
    +								Settings
    +								fr
    +								Options
     							
     							snapshots
     							
    @@ -7905,6 +8520,8 @@ Reason was: %2$@
     							
     								en
     								Show
    +								fr
    +								Afficher
     							
     							snapshots
     							
    @@ -7928,6 +8545,8 @@ Reason was: %2$@
     							
     								en
     								SIP address
    +								fr
    +								Adresse SIP
     							
     							snapshots
     							
    @@ -7951,6 +8570,8 @@ Reason was: %2$@
     							
     								en
     								SIP addresses
    +								fr
    +								Adresses SIP
     							
     							snapshots
     							
    @@ -7974,6 +8595,8 @@ Reason was: %2$@
     							
     								en
     								SIP server unreachable
    +								fr
    +								Le serveur SIP est injoignable
     							
     							snapshots
     							
    @@ -7997,6 +8620,8 @@ Reason was: %2$@
     							
     								en
     								Stop video
    +								fr
    +								Arrêter la video
     							
     							snapshots
     							
    @@ -8022,6 +8647,8 @@ Reason was: %2$@
     								en
     								The email is invalid.
     
    +								fr
    +								Cet email est invalide.
     							
     							snapshots
     							
    @@ -8047,6 +8674,8 @@ Reason was: %2$@
     								en
     								The password is too short (minimum %d characters).
     
    +								fr
    +								Le mode de passe est trop court (minimum %d caractères).
     							
     							snapshots
     							
    @@ -8072,6 +8701,8 @@ Reason was: %2$@
     								en
     								The passwords are different.
     
    +								fr
    +								Les mots de passe sont différents.
     							
     							snapshots
     							
    @@ -8097,6 +8728,8 @@ Reason was: %2$@
     								en
     								The username is too short (minimum %d characters).
     
    +								fr
    +								Le nom d'utilisateur est trop court (minimum %d caractères).
     							
     							snapshots
     							
    @@ -8120,6 +8753,31 @@ Reason was: %2$@
     							
     								en
     								There is no network connection available, enable WIFI or WWAN prior to place a call
    +								fr
    +								Il n'y a aucune connexion réseau disponible, activer le WIFI ou le WWAN avant de faire un appel
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							InAppSettingsKit
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							This device is not configured for sending Email. Please configure the Mail settings in the Settings app.
    +							localizations
    +							
    +								en
    +								This device is not configured for sending Email. Please configure the Mail settings in the Settings app.
     							
     							snapshots
     							
    @@ -8143,6 +8801,8 @@ Reason was: %2$@
     							
     								en
     								Unknown
    +								fr
    +								Inconnu
     							
     							snapshots
     							
    @@ -8166,6 +8826,8 @@ Reason was: %2$@
     							
     								en
     								Username already exists
    +								fr
    +								Le nom d'utilisateur existe déjà
     							
     							snapshots
     							
    @@ -8189,6 +8851,8 @@ Reason was: %2$@
     							
     								en
     								You need to plug a microphone to your device to use this application.
    +								fr
    +								Vous devez brancher votre micro pour pouvoir utiliser l'application.
     							
     							snapshots
     							
    @@ -8212,13 +8876,69 @@ Reason was: %2$@
     							
     								en
     								Your account is not validate yet.
    +								fr
    +								Votre compte n'est pas encore validé.
     							
     							snapshots
     							
     						
     					
     					old objects
    -					
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Check error
    +							localizations
    +							
    +								en
    +								Check error
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +								fr
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							'%@' not registered to Service
    +							localizations
    +							
    +								en
    +								'%@' not registered to Service
    +								fr
    +								'%@' n'est pas enregistré
    +							
    +							snapshots
    +							
    +						
    +					
     					plist file
     					
     					snapshots
    @@ -8241,6 +8961,1719 @@ Reason was: %2$@
     			user name
     			Resources
     		
    +		
    +			associated Xcode projects
    +			
    +			change date
    +			2001-01-01T00:00:00Z
    +			changed values
    +			
    +			class
    +			BLBundleObject
    +			errors
    +			
    +			files
    +			
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								InAppSettings.bundle/Root/1/Root.strings
    +							
    +						
    +					
    +					change date
    +					2012-09-11T10:05:48Z
    +					changed values
    +					
    +					class
    +					BLStringsFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					0a4db385ce9aee1237f3af978c3a98cf
    +
    +					name
    +					Root.strings
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							SIP account
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							SIP account
    +							localizations
    +							
    +								en
    +								SIP account
    +								fr
    +								Compte SIP
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							User name
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							User name
    +							localizations
    +							
    +								en
    +								User name
    +								fr
    +								Nom d'utilisateur
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Password
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Password
    +							localizations
    +							
    +								en
    +								Password
    +								fr
    +								Mot de passe
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Domain
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Domain
    +							localizations
    +							
    +								en
    +								Domain
    +								fr
    +								Domaine
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Proxy
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Proxy
    +							localizations
    +							
    +								en
    +								Proxy
    +								fr
    +								Proxy
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Outbound proxy
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Outbound proxy
    +							localizations
    +							
    +								en
    +								Outbound proxy
    +								fr
    +								Proxy de sortie
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Settings
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Settings
    +							localizations
    +							
    +								en
    +								Settings
    +								fr
    +								Options
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Enable video
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Enable video
    +							localizations
    +							
    +								en
    +								Enable video
    +								fr
    +								Activer vidéo
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Audio
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Audio
    +							localizations
    +							
    +								en
    +								Audio
    +								fr
    +								Audio
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Video
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Video
    +							localizations
    +							
    +								en
    +								Video
    +								fr
    +								Vidéo
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Call
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Call
    +							localizations
    +							
    +								en
    +								Call
    +								fr
    +								Appel
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Network
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Network
    +							localizations
    +							
    +								en
    +								Network
    +								fr
    +								Réseau
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Advanced
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Advanced
    +							localizations
    +							
    +								en
    +								Advanced
    +								fr
    +								Avancées
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Advanced
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							
    +							localizations
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							About
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							About
    +							localizations
    +							
    +								en
    +								About
    +								fr
    +								À Propos
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Quit
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Quit
    +							localizations
    +							
    +								en
    +								Quit
    +								fr
    +								Quitter
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Release
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							Release
    +							localizations
    +							
    +								en
    +								Release
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Clear cache
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							Clear cache
    +							localizations
    +							
    +								en
    +								Clear cache
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Group
    +							localizations
    +							
    +								en
    +								Group
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Name
    +							localizations
    +							
    +								en
    +								Name
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							none given
    +							localizations
    +							
    +								en
    +								none given
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Enabled
    +							localizations
    +							
    +								en
    +								Enabled
    +							
    +							snapshots
    +							
    +						
    +					
    +					plist file
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								InAppSettings.bundle/Advanced/1/Advanced.strings
    +							
    +						
    +					
    +					change date
    +					2012-09-11T10:05:14Z
    +					changed values
    +					
    +					class
    +					BLStringsFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					f72b15c7c0f7f2cba6c1df114414e788
    +
    +					name
    +					Advanced.strings
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Debug
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Debug
    +							localizations
    +							
    +								en
    +								Debug
    +								fr
    +								Debogue
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Console
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Console
    +							localizations
    +							
    +								en
    +								Console
    +								fr
    +								Console
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Console
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							
    +							localizations
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Animations
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Animations
    +							localizations
    +							
    +								en
    +								Animations
    +								fr
    +								Animations
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Rotation
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Rotation
    +							localizations
    +							
    +								en
    +								Rotation
    +								fr
    +								Rotation
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Background mode
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Background mode
    +							localizations
    +							
    +								en
    +								Background mode
    +								fr
    +								Mode tâche de fond
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Start at boot
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Start at boot
    +							localizations
    +							
    +								en
    +								Start at boot
    +								fr
    +								Démarrage automatique
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							First login view
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							First login view
    +							localizations
    +							
    +								en
    +								First login view
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Expire
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Expire
    +							localizations
    +							
    +								en
    +								Expire
    +								fr
    +								Expiration
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Primary account
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Primary account
    +							localizations
    +							
    +								en
    +								Primary account
    +								fr
    +								Compte principal
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Display name
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Display name
    +							localizations
    +							
    +								en
    +								Display name
    +								fr
    +								Nom d'affichage
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Username
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Username
    +							localizations
    +							
    +								en
    +								Username
    +								fr
    +								Nom d'utilisateur
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Automatic
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Automatic
    +							localizations
    +							
    +								en
    +								Automatic
    +								fr
    +								Automatique
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Portrait
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Portrait
    +							localizations
    +							
    +								en
    +								Portrait
    +								fr
    +								Portrait
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Landscape
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Landscape
    +							localizations
    +							
    +								en
    +								Landscape
    +								fr
    +								Paysage
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					plist file
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								InAppSettings.bundle/Audio/1/Audio.strings
    +							
    +						
    +					
    +					change date
    +					2012-09-11T10:05:26Z
    +					changed values
    +					
    +					class
    +					BLStringsFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					e3ec0c0a4b3e250fec1852916b6b69ac
    +
    +					name
    +					Audio.strings
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Codecs
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Codecs
    +							localizations
    +							
    +								en
    +								Codecs
    +								fr
    +								Codecs
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Speex 16Khz
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							Speex 16Khz
    +							localizations
    +							
    +								en
    +								Speex 16Khz
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Speex 8Khz
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							Speex 8Khz
    +							localizations
    +							
    +								en
    +								Speex 8Khz
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Silk 24Khz
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							Silk 24Khz
    +							localizations
    +							
    +								en
    +								Silk 24Khz
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Silk 16Khz
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							Silk 16Khz
    +							localizations
    +							
    +								en
    +								Silk 16Khz
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							G722
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							G722
    +							localizations
    +							
    +								en
    +								G722
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							GSM
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							GSM
    +							localizations
    +							
    +								en
    +								GSM
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							ILBC
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							ILBC
    +							localizations
    +							
    +								en
    +								ILBC
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							PCMU
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							PCMU
    +							localizations
    +							
    +								en
    +								PCMU
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							PCMA
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							PCMA
    +							localizations
    +							
    +								en
    +								PCMA
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					plist file
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								InAppSettings.bundle/Call/1/Call.strings
    +							
    +						
    +					
    +					change date
    +					2012-09-11T10:05:39Z
    +					changed values
    +					
    +					class
    +					BLStringsFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					3cc5ec7e298d1a3aa4449641876f5960
    +
    +					name
    +					Call.strings
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Prefix
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Prefix
    +							localizations
    +							
    +								en
    +								Prefix
    +								fr
    +								Préfixe
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Substitue + by 00
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Substitue + by 00
    +							localizations
    +							
    +								en
    +								Substitue + by 00
    +								fr
    +								Remplacer + par 00
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Send inband DTMFs
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Send inband DTMFs
    +							localizations
    +							
    +								en
    +								Send inband DTMFs
    +								fr
    +								Envoyer des DTMFs dans le flux
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Send SIP INFO DTMFs
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Send SIP INFO DTMFs
    +							localizations
    +							
    +								en
    +								Send SIP INFO DTMFs
    +								fr
    +								Envoyer des DTMFs en SIP INFO
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					plist file
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +					
    +				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								InAppSettings.bundle/Video/1/Video.strings
    +							
    +						
    +					
    +					change date
    +					2012-09-11T10:16:55Z
    +					changed values
    +					
    +					class
    +					BLStringsFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					ab1400cd24f02dacc6b2b98b0ce939b5
    +
    +					name
    +					Video.strings
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Automatically start video
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Automatically start
    +							localizations
    +							
    +								en
    +								Automatically start
    +								fr
    +								Démarrage automatique
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Automatically accept video
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Automatically accept
    +							localizations
    +							
    +								en
    +								Automatically accept
    +								fr
    +								Acceptation automatique
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Show self view
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Show self view
    +							localizations
    +							
    +								en
    +								Show self view
    +								fr
    +								Se voir
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Codecs
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Codecs
    +							localizations
    +							
    +								en
    +								Codecs
    +								fr
    +								Codecs
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							mpeg4
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							mpeg4
    +							localizations
    +							
    +								en
    +								mpeg4
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							h264
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							h264
    +							localizations
    +							
    +								en
    +								h264
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							VP8
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							VP8
    +							localizations
    +							
    +								en
    +								VP8
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +								fr
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Automatically start video
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Automatically start video
    +							localizations
    +							
    +								en
    +								Automatically start video
    +								fr
    +								Démarrage automatique de la vidéo
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								<reference>
    +								fr
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Automatically accept video
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Automatically accept video
    +							localizations
    +							
    +								en
    +								Automatically accept video
    +								fr
    +								Acceptation automatique
    +							
    +							snapshots
    +							
    +						
    +					
    +					plist file
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +					
    +				
    +			
    +			flags
    +			0
    +			name
    +			Settings/InAppSettings.bundle
    +			naming style
    +			1
    +			referencing style
    +			1
    +			user name
    +			InAppSettings.bundle
    +		
     	
     	languages
     	
    diff --git a/linphone.ldb/Resources/Classes/DialerViewController/1/DialerViewController.xib b/linphone.ldb/Resources/Classes/DialerViewController/2/DialerViewController.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/DialerViewController/1/DialerViewController.xib
    rename to linphone.ldb/Resources/Classes/DialerViewController/2/DialerViewController.xib
    index 4e797df2a..00b0844df 100644
    --- a/linphone.ldb/Resources/Classes/DialerViewController/1/DialerViewController.xib
    +++ b/linphone.ldb/Resources/Classes/DialerViewController/2/DialerViewController.xib
    @@ -80,7 +80,7 @@
     								IBCocoaTouchFramework
     								0
     								
    -								Enter sip address or phone number...
    +								Enter SIP address or phone number...
     								
     									3
     									MQA
    @@ -659,6 +659,7 @@
     								{{214, 0}, {106, 69}}
     								
     								
    +								
     								_NS:9
     								NO
     								
    diff --git a/linphone.ldb/Resources/Classes/DialerViewController~ipad/1/DialerViewController~ipad.xib b/linphone.ldb/Resources/Classes/DialerViewController~ipad/2/DialerViewController~ipad.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/DialerViewController~ipad/1/DialerViewController~ipad.xib
    rename to linphone.ldb/Resources/Classes/DialerViewController~ipad/2/DialerViewController~ipad.xib
    index 526b49aca..c4844b21a 100644
    --- a/linphone.ldb/Resources/Classes/DialerViewController~ipad/1/DialerViewController~ipad.xib
    +++ b/linphone.ldb/Resources/Classes/DialerViewController~ipad/2/DialerViewController~ipad.xib
    @@ -75,7 +75,7 @@
     								IBIPadFramework
     								0
     								
    -								Enter sip address or phone number...
    +								Enter SIP address or phone number...
     								
     									3
     									MQA
    @@ -656,6 +656,7 @@
     								{{126, 0}, {186, 85}}
     								
     								
    +								
     								_NS:9
     								NO
     								
    diff --git a/linphone.ldb/Resources/Classes/WizardViewController/1/WizardViewController.xib b/linphone.ldb/Resources/Classes/WizardViewController/2/WizardViewController.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/WizardViewController/1/WizardViewController.xib
    rename to linphone.ldb/Resources/Classes/WizardViewController/2/WizardViewController.xib
    index 70b4ee8eb..cb745509c 100644
    --- a/linphone.ldb/Resources/Classes/WizardViewController/1/WizardViewController.xib
    +++ b/linphone.ldb/Resources/Classes/WizardViewController/2/WizardViewController.xib
    @@ -250,7 +250,7 @@
     						7
     						NO
     						IBCocoaTouchFramework
    -						This assistant will help you  to use a SIP account for your calls.
    +						This assistant will help you to use a SIP account for your calls.
     						
     							3
     							MC4zMzMzMzMzMzMzAA
    @@ -434,7 +434,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter you username and password with your email address
    +						Enter your username and password with your email address
     						
     						
     						0
    @@ -661,7 +661,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter you username and password of your linphone.org account
    +						Enter your username and password of your linphone.org account
     						
     						
     						0
    @@ -804,7 +804,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter you username and password with your SIP domain
    +						Enter your username and password with your SIP domain
     						
     						
     						0
    diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Advanced/1/Advanced.strings b/linphone.ldb/Resources/InAppSettings.bundle/Advanced/1/Advanced.strings
    new file mode 100644
    index 000000000..c7b00a51f
    --- /dev/null
    +++ b/linphone.ldb/Resources/InAppSettings.bundle/Advanced/1/Advanced.strings
    @@ -0,0 +1,51 @@
    +/* Debug */
    +"Debug" = "Debug";
    +
    +/* Debug */
    +"Debug" = "Debug";
    +
    +/* Console */
    +"Console" = "Console";
    +
    +/*  */
    +"" = "";
    +
    +/* Animations */
    +"Animations" = "Animations";
    +
    +/* Rotation */
    +"Rotation" = "Rotation";
    +
    +/* Background mode */
    +"Background mode" = "Background mode";
    +
    +/* Start at boot */
    +"Start at boot" = "Start at boot";
    +
    +/* First login view */
    +"First login view" = "First login view";
    +
    +/* Expire */
    +"Expire" = "Expire";
    +
    +/* Primary account */
    +"Primary account" = "Primary account";
    +
    +/* Display name */
    +"Display name" = "Display name";
    +
    +/* Username */
    +"Username" = "Username";
    +
    +/* Rotation */
    +"Rotation" = "Rotation";
    +
    +/* Automatic */
    +"Automatic" = "Automatic";
    +
    +/* Portrait */
    +"Portrait" = "Portrait";
    +
    +/* Landscape */
    +"Landscape" = "Landscape";
    +
    diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings b/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings
    new file mode 100644
    index 000000000..9ac131e7f
    --- /dev/null
    +++ b/linphone.ldb/Resources/InAppSettings.bundle/Audio/1/Audio.strings
    @@ -0,0 +1,30 @@
    +/* Codecs */
    +"Codecs" = "Codecs";
    +
    +/* Speex 16Khz */
    +"Speex 16Khz" = "Speex 16Khz";
    +
    +/* Speex 8Khz */
    +"Speex 8Khz" = "Speex 8Khz";
    +
    +/* Silk 24Khz */
    +"Silk 24Khz" = "Silk 24Khz";
    +
    +/* Silk 16Khz */
    +"Silk 16Khz" = "Silk 16Khz";
    +
    +/* G722 */
    +"G722" = "G722";
    +
    +/* GSM */
    +"GSM" = "GSM";
    +
    +/* ILBC */
    +"ILBC" = "ILBC";
    +
    +/* PCMU */
    +"PCMU" = "PCMU";
    +
    +/* PCMA */
    +"PCMA" = "PCMA";
    +
    diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Call/1/Call.strings b/linphone.ldb/Resources/InAppSettings.bundle/Call/1/Call.strings
    new file mode 100644
    index 000000000..68876b8cc
    --- /dev/null
    +++ b/linphone.ldb/Resources/InAppSettings.bundle/Call/1/Call.strings
    @@ -0,0 +1,12 @@
    +/* Prefix */
    +"Prefix" = "Prefix";
    +
    +/* Substitue + by 00 */
    +"Substitue + by 00" = "Substitue + by 00";
    +
    +/* Send inband DTMFs */
    +"Send inband DTMFs" = "Send inband DTMFs";
    +
    +/* Send SIP INFO DTMFs */
    +"Send SIP INFO DTMFs" = "Send SIP INFO DTMFs";
    +
    diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Root/1/Root.strings b/linphone.ldb/Resources/InAppSettings.bundle/Root/1/Root.strings
    new file mode 100644
    index 000000000..ebc359c28
    --- /dev/null
    +++ b/linphone.ldb/Resources/InAppSettings.bundle/Root/1/Root.strings
    @@ -0,0 +1,54 @@
    +/* SIP account */
    +"SIP account" = "SIP account";
    +
    +/* User name */
    +"User name" = "User name";
    +
    +/* Password */
    +"Password" = "Password";
    +
    +/* Domain */
    +"Domain" = "Domain";
    +
    +/* Proxy */
    +"Proxy" = "Proxy";
    +
    +/* Outbound proxy */
    +"Outbound proxy" = "Outbound proxy";
    +
    +/* Settings */
    +"Settings" = "Settings";
    +
    +/* Enable video */
    +"Enable video" = "Enable video";
    +
    +/* Audio */
    +"Audio" = "Audio";
    +
    +/* Video */
    +"Video" = "Video";
    +
    +/* Call */
    +"Call" = "Call";
    +
    +/* Network */
    +"Network" = "Network";
    +
    +/* Advanced */
    +"Advanced" = "Advanced";
    +
    +/*  */
    +"" = "";
    +
    +/* About */
    +"About" = "About";
    +
    +/* Quit */
    +"Quit" = "Quit";
    +
    +/* Release */
    +"Release" = "Release";
    +
    +/* Clear cache */
    +"Clear cache" = "Clear cache";
    +
    diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Video/1/Video.strings b/linphone.ldb/Resources/InAppSettings.bundle/Video/1/Video.strings
    new file mode 100644
    index 000000000..1072b20c8
    --- /dev/null
    +++ b/linphone.ldb/Resources/InAppSettings.bundle/Video/1/Video.strings
    @@ -0,0 +1,21 @@
    +/* Automatically start video */
    +"Automatically start" = "Automatically start";
    +
    +/* Automatically accept video */
    +"Automatically accept" = "Automatically accept";
    +
    +/* Show self view */
    +"Show self view" = "Show self view";
    +
    +/* Codecs */
    +"Codecs" = "Codecs";
    +
    +/* mpeg4 */
    +"mpeg4" = "mpeg4";
    +
    +/* h264 */
    +"h264" = "h264";
    +
    +/* VP8 */
    +"VP8" = "VP8";
    +
    diff --git a/linphone.ldb/Resources/LinphoneUI/UICallBar/1/UICallBar.xib b/linphone.ldb/Resources/LinphoneUI/UICallBar/2/UICallBar.xib
    similarity index 99%
    rename from linphone.ldb/Resources/LinphoneUI/UICallBar/1/UICallBar.xib
    rename to linphone.ldb/Resources/LinphoneUI/UICallBar/2/UICallBar.xib
    index d3cebcc76..dba37abd8 100644
    --- a/linphone.ldb/Resources/LinphoneUI/UICallBar/1/UICallBar.xib
    +++ b/linphone.ldb/Resources/LinphoneUI/UICallBar/2/UICallBar.xib
    @@ -755,7 +755,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									Start conference
     								
     								IBCocoaTouchFramework
     								0
    @@ -1155,7 +1155,7 @@
     								NO
     								16
     								
    -									Add call
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1189,7 +1189,7 @@
     								NO
     								17
     								
    -									Add call
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1252,7 +1252,7 @@
     								NO
     								19
     								
    -									Video
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1303,7 +1303,7 @@
     								NO
     								21
     								
    -									Micro
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1341,7 +1341,7 @@
     								NO
     								22
     								
    -									Speaker
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1379,7 +1379,7 @@
     								NO
     								23
     								
    -									Add call
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1417,7 +1417,7 @@
     								NO
     								24
     								
    -									Pause
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1451,7 +1451,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1481,7 +1481,7 @@
     								NO
     								26
     								
    -									Hangup
    +									
     								
     								IBCocoaTouchFramework
     								0
    @@ -1511,7 +1511,7 @@
     								NO
     								27
     								
    -									Back
    +									
     								
     								IBCocoaTouchFramework
     								0
    diff --git a/linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/1/UICallBar~ipad.xib b/linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/2/UICallBar~ipad.xib
    similarity index 99%
    rename from linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/1/UICallBar~ipad.xib
    rename to linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/2/UICallBar~ipad.xib
    index 4b3c2fdd3..001250eae 100644
    --- a/linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/1/UICallBar~ipad.xib
    +++ b/linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/2/UICallBar~ipad.xib
    @@ -420,7 +420,7 @@
     								NO
     								16
     								
    -									Add call
    +									
     								
     								IBIPadFramework
     								0
    @@ -457,7 +457,7 @@
     								NO
     								17
     								
    -									Add call
    +									
     								
     								IBIPadFramework
     								0
    @@ -520,7 +520,7 @@
     								NO
     								19
     								
    -									Video
    +									
     								
     								IBIPadFramework
     								0
    @@ -571,7 +571,7 @@
     								NO
     								21
     								
    -									Micro
    +									
     								
     								IBIPadFramework
     								0
    @@ -609,7 +609,7 @@
     								NO
     								22
     								
    -									Speaker
    +									
     								
     								IBIPadFramework
     								0
    @@ -647,7 +647,7 @@
     								NO
     								23
     								
    -									Add call
    +									
     								
     								IBIPadFramework
     								0
    @@ -685,7 +685,7 @@
     								NO
     								24
     								
    -									Pause
    +									
     								
     								IBIPadFramework
     								0
    @@ -719,7 +719,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									
     								
     								IBIPadFramework
     								0
    @@ -749,7 +749,7 @@
     								NO
     								26
     								
    -									Hangup
    +									
     								
     								IBIPadFramework
     								0
    @@ -779,7 +779,7 @@
     								NO
     								27
     								
    -									Back
    +									
     								
     								IBIPadFramework
     								0
    @@ -1455,7 +1455,7 @@
     								NO
     								25
     								
    -									Start Conference
    +									Start conference
     								
     								IBIPadFramework
     								0
    diff --git a/linphone.ldb/Resources/LinphoneUI/UICallCell/1/UICallCell.xib b/linphone.ldb/Resources/LinphoneUI/UICallCell/2/UICallCell.xib
    similarity index 99%
    rename from linphone.ldb/Resources/LinphoneUI/UICallCell/1/UICallCell.xib
    rename to linphone.ldb/Resources/LinphoneUI/UICallCell/2/UICallCell.xib
    index e17f7df5b..a41e70d36 100644
    --- a/linphone.ldb/Resources/LinphoneUI/UICallCell/1/UICallCell.xib
    +++ b/linphone.ldb/Resources/LinphoneUI/UICallCell/2/UICallCell.xib
    @@ -4674,13 +4674,14 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								{{262, 12}, {50, 29}}
     								
     								
    +								
     								_NS:9
     								NO
     								YES
     								7
     								NO
     								
    -									Call state
    +									Duration
     									
     								
     								IBCocoaTouchFramework
    @@ -4745,6 +4746,7 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     				{320, 460}
     				
     				
    +				
     				_NS:9
     				
     				NO
    diff --git a/linphone.ldb/Resources/LinphoneUI/UIMainBar/1/UIMainBar.xib b/linphone.ldb/Resources/LinphoneUI/UIMainBar/2/UIMainBar.xib
    similarity index 99%
    rename from linphone.ldb/Resources/LinphoneUI/UIMainBar/1/UIMainBar.xib
    rename to linphone.ldb/Resources/LinphoneUI/UIMainBar/2/UIMainBar.xib
    index 6fb85e091..ea6cfc924 100644
    --- a/linphone.ldb/Resources/LinphoneUI/UIMainBar/1/UIMainBar.xib
    +++ b/linphone.ldb/Resources/LinphoneUI/UIMainBar/2/UIMainBar.xib
    @@ -145,7 +145,7 @@
     								7
     								NO
     								
    -									History missed
    +									Missed call(s)
     									
     								
     								IBCocoaTouchFramework
    @@ -339,7 +339,7 @@
     								7
     								NO
     								
    -									Chat missed
    +									Missed message(s)
     									
     								
     								IBCocoaTouchFramework
    diff --git a/linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/1/UIMainBar~ipad.xib b/linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/2/UIMainBar~ipad.xib
    similarity index 99%
    rename from linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/1/UIMainBar~ipad.xib
    rename to linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/2/UIMainBar~ipad.xib
    index 430d80158..b3907761d 100644
    --- a/linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/1/UIMainBar~ipad.xib
    +++ b/linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/2/UIMainBar~ipad.xib
    @@ -146,7 +146,7 @@
     								7
     								NO
     								
    -									History missed
    +									Missed call(s)
     									
     								
     								IBIPadFramework
    @@ -345,7 +345,7 @@
     								7
     								NO
     								
    -									Chat missed
    +									Missed message(s)
     									
     								
     								IBIPadFramework
    @@ -432,7 +432,7 @@
     						NO
     						1
     						
    -							History
    +							
     						
     						IBIPadFramework
     						0
    @@ -515,7 +515,7 @@
     						NO
     						3
     						
    -							Contacts
    +							
     						
     						IBIPadFramework
     						0
    @@ -548,7 +548,7 @@
     						NO
     						4
     						
    -							Dialer
    +							
     						
     						IBIPadFramework
     						0
    @@ -572,7 +572,7 @@
     						NO
     						5
     						
    -							Settings
    +							
     						
     						IBIPadFramework
     						0
    @@ -605,7 +605,7 @@
     						NO
     						6
     						
    -							Chat
    +							
     						
     						IBIPadFramework
     						0
    diff --git a/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings b/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings
    index 3b8e89a40903c581ae655e5f4f8debcc5bb8b95c..7bb5ecb9f7486359e18aa4a353367318225cc2b2 100644
    GIT binary patch
    delta 629
    zcmZ3G{4aCE38u+5%3PCQFsV(BQjXYM!@P}yRfD0JL36Spk0LXWHL)>zvJ4N;=50KC
    zxF(lKNboB#q%jmRjwrG3YaJF(@(k0*%UK$N`GvG2~BvFRjdr
    zE+Rd7mTcJMRZ;?zy`;D{8%dQgTN7`*KhQ!Ypy9Sati%B1O=gsf-uy}S3A-e!yAXYio=k2dqNm8fZiyc?5H5l4DpDhGAMNNfgz~?^mZ!HdnwRBP+)KchAr6J
    zlNq^$C#wjH@RtDfgTfQ)`N{l(qL!c_Qve1QL8A~I+3oJEXWwS
    JIYQ5a833@dg^>UN
    
    delta 179
    zcmeyDxgdGN2_{(uh7yK+1_g#-hE#?khBAgshGZa12`FOApfGtplcq2h6_YorMsE&a
    z-o`O`0gu?^KipiCXGlj({=m(%c^c0iE>35Lcm`jfiSCmhibYSpA}+@1iy|^jLTYk>
    zJjdi0;zE
    Date: Tue, 11 Sep 2012 14:12:43 +0200
    Subject: [PATCH 201/397] Fix History details view
    
    ---
     .gitignore                                    |   1 +
     Classes/HistoryDetailsViewController.m        |   1 +
     .../en.lproj/HistoryDetailsViewController.xib |   2 +-
     .../fr.lproj/HistoryDetailsViewController.xib |   2 +-
     Resources/fr.lproj/Localizable.strings        | Bin 14018 -> 14020 bytes
     linphone.ldb/Contents.plist                   |  14 +++++++-------
     .../{1 => 2}/HistoryDetailsViewController.xib |   2 +-
     7 files changed, 12 insertions(+), 10 deletions(-)
     rename linphone.ldb/Resources/Classes/HistoryDetailsViewController/{1 => 2}/HistoryDetailsViewController.xib (99%)
    
    diff --git a/.gitignore b/.gitignore
    index dd07bff2c..9c6145750 100644
    --- a/.gitignore
    +++ b/.gitignore
    @@ -1 +1,2 @@
     build-*
    +*.locuser
    diff --git a/Classes/HistoryDetailsViewController.m b/Classes/HistoryDetailsViewController.m
    index 8b5f2a169..eefed13c2 100644
    --- a/Classes/HistoryDetailsViewController.m
    +++ b/Classes/HistoryDetailsViewController.m
    @@ -268,6 +268,7 @@ static UICompositeViewDescription *compositeDescription = nil;
         if(contact) {
             ContactDetailsViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactDetailsViewController compositeViewDescription] push:TRUE], ContactDetailsViewController);
             if(controller != nil) {
    +            [ContactSelection setSelectionMode:ContactSelectionModeNone];
                 [controller setContact:contact];
             }
         }
    diff --git a/Classes/en.lproj/HistoryDetailsViewController.xib b/Classes/en.lproj/HistoryDetailsViewController.xib
    index 75f2fc588..afce0f1a5 100644
    --- a/Classes/en.lproj/HistoryDetailsViewController.xib
    +++ b/Classes/en.lproj/HistoryDetailsViewController.xib
    @@ -123,7 +123,7 @@
     								
     							
     						
    -						{320, 58}
    +						{320, 44}
     						
     						
     						
    diff --git a/Classes/fr.lproj/HistoryDetailsViewController.xib b/Classes/fr.lproj/HistoryDetailsViewController.xib
    index 90142d952..a34626363 100644
    --- a/Classes/fr.lproj/HistoryDetailsViewController.xib
    +++ b/Classes/fr.lproj/HistoryDetailsViewController.xib
    @@ -120,7 +120,7 @@
     								
     							
     						
    -						{320, 58}
    +						{320, 44}
     						
     						
     						_NS:9
    diff --git a/Resources/fr.lproj/Localizable.strings b/Resources/fr.lproj/Localizable.strings
    index 5a905d5179a2c24044796e7f2db56d31fb95e240..c364fc42d57079fb1f1e2d18d93c8a57e17ef9e5 100644
    GIT binary patch
    delta 14
    WcmX?
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/HistoryDetailsViewController/1/HistoryDetailsViewController.xib
    +								Classes/HistoryDetailsViewController/2/HistoryDetailsViewController.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:21:27Z
    +					2012-09-11T12:08:15Z
     					changed values
     					
     					class
    @@ -2042,7 +2042,7 @@
     					flags
     					0
     					hash
    -					8e3f7756f219a2bd1a73da657abf7f25
    +					5772e41dc8ea1406d99370f79cb51bce
     
     					name
     					HistoryDetailsViewController.xib
    @@ -2446,9 +2446,9 @@
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     				
    @@ -7273,7 +7273,7 @@ La cause était: %2$@
     								en
     								'%@' not registered
     								fr
    -								'%' n'est pas enregistré
    +								'%@' n'est pas enregistré
     							
     							snapshots
     							
    diff --git a/linphone.ldb/Resources/Classes/HistoryDetailsViewController/1/HistoryDetailsViewController.xib b/linphone.ldb/Resources/Classes/HistoryDetailsViewController/2/HistoryDetailsViewController.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/HistoryDetailsViewController/1/HistoryDetailsViewController.xib
    rename to linphone.ldb/Resources/Classes/HistoryDetailsViewController/2/HistoryDetailsViewController.xib
    index 75f2fc588..afce0f1a5 100644
    --- a/linphone.ldb/Resources/Classes/HistoryDetailsViewController/1/HistoryDetailsViewController.xib
    +++ b/linphone.ldb/Resources/Classes/HistoryDetailsViewController/2/HistoryDetailsViewController.xib
    @@ -123,7 +123,7 @@
     								
     							
     						
    -						{320, 58}
    +						{320, 44}
     						
     						
     						
    
    From a96864a10cc1c9448756b2780a4dc30b07644a97 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Tue, 11 Sep 2012 17:24:42 +0200
    Subject: [PATCH 202/397] Split Speaker fix in linphone manager
    
    ---
     Classes/LinphoneManager.h            |  7 +--
     Classes/LinphoneManager.m            | 64 +++++++++++++++++++---------
     Classes/LinphoneUI/UISpeakerButton.m | 33 ++++----------
     3 files changed, 54 insertions(+), 50 deletions(-)
    
    diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
    index ee87cf12a..c63a76ca6 100644
    --- a/Classes/LinphoneManager.h
    +++ b/Classes/LinphoneManager.h
    @@ -80,7 +80,6 @@ typedef struct _LinphoneManagerSounds {
     	Connectivity connectivity;
         BOOL stopWaitingRegisters;
         NSMutableArray *inhibitedEvent;
    -	
         
     @public
         CallContext currentCallContextBeforeGoingBackground;
    @@ -112,9 +111,6 @@ typedef struct _LinphoneManagerSounds {
     
     - (void)refreshRegisters;
     
    -- (void)enableSpeaker:(BOOL)enable;
    -- (BOOL)isSpeakerEnabled;
    -
     - (void)addInhibitedEvent:(NSString*)event;
     - (BOOL)removeInhibitedEvent:(NSString*)event;
     
    @@ -133,8 +129,6 @@ typedef struct _LinphoneManagerSounds {
     -(void)lpConfigSetBool:(BOOL) value forKey:(NSString*) key; 
     -(BOOL)lpConfigBoolForKey:(NSString*) key;
     
    -
    -
     @property (readonly) FastAddressBook* fastAddressBook;
     @property Connectivity connectivity;
     @property (readonly) const char*  frontCamId;
    @@ -143,6 +137,7 @@ typedef struct _LinphoneManagerSounds {
     @property (nonatomic, retain) NSData *pushNotificationToken;
     @property (readonly) LinphoneManagerSounds sounds;
     @property (readonly) NSMutableArray *logs;
    +@property (nonatomic, assign) BOOL speakerEnabled;
     
     @end
     
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index 6cc0405f3..8917def89 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -78,6 +78,7 @@ extern  void libmsbcg729_init();
     @synthesize pushNotificationToken;
     @synthesize sounds;
     @synthesize logs;
    +@synthesize speakerEnabled;
     
     struct codec_name_pref_table{
         const char *name;
    @@ -179,8 +180,13 @@ struct codec_name_pref_table codec_pref_table[]={
     
     - (id)init {
         if ((self = [super init])) {
    +        AudioSessionInitialize(NULL, NULL, NULL, NULL);
    +        OSStatus lStatus = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, audioRouteChangeListenerCallback, self);
    +        if (lStatus) {
    +            [LinphoneLogger logc:LinphoneLoggerError format:"cannot register route change handler [%ld]",lStatus];
    +        }
             
    -        
    +        // Sounds
             {
                 NSString *path = [[NSBundle mainBundle] pathForResource:@"ring" ofType:@"wav"];
                 sounds.call = 0;
    @@ -197,9 +203,11 @@ struct codec_name_pref_table codec_pref_table[]={
                     [LinphoneLogger log:LinphoneLoggerWarning format:@"Can't set \"message\" system sound"];
                 }
             }
    +        
             inhibitedEvent = [[NSMutableArray alloc] init];
             logs = [[NSMutableArray alloc] init];
             database = NULL;
    +        speakerEnabled = FALSE;
             [self openDatabase];
             [self copyDefaultSettings];
     		lastRemoteNotificationTime=0;
    @@ -220,6 +228,11 @@ struct codec_name_pref_table codec_pref_table[]={
         [self closeDatabase];
         [logs release];
         
    +    OSStatus lStatus = AudioSessionRemovePropertyListenerWithUserData(kAudioSessionProperty_AudioRouteChange, audioRouteChangeListenerCallback, self);
    +	if (lStatus) {
    +		[LinphoneLogger logc:LinphoneLoggerError format:"cannot un register route change handler [%ld]", lStatus];
    +	}
    +    
         [super dealloc];
     }
     
    @@ -347,7 +360,7 @@ static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char
         // Disable speaker when no more call
         if ((state == LinphoneCallEnd || state == LinphoneCallError)) {
             if(linphone_core_get_calls_nb([LinphoneManager getLc]) == 0)
    -            [self enableSpeaker:FALSE];
    +            [self setSpeakerEnabled:FALSE];
         }
         
         // Enable speaker when video
    @@ -357,7 +370,7 @@ static void linphone_iphone_display_status(struct _LinphoneCore * lc, const char
            state == LinphoneCallStreamsRunning ||
            state == LinphoneCallUpdated) {
             if (linphone_call_params_video_enabled(linphone_call_get_current_params(call))) {
    -            [self enableSpeaker:TRUE];
    +            [self setSpeakerEnabled:TRUE];
             }
         }
         
    @@ -835,10 +848,36 @@ static LinphoneCoreVTable linphonec_vtable = {
         [LinphoneManager copyFile:src destination:dst override:FALSE];
     }
     
    +
     #pragma mark - Speaker Functions
     
    -- (void)enableSpeaker:(BOOL)enable {
    -    //redirect audio to speaker
    +static void audioRouteChangeListenerCallback (
    +                                              void                   *inUserData,                                 // 1
    +                                              AudioSessionPropertyID inPropertyID,                                // 2
    +                                              UInt32                 inPropertyValueSize,                         // 3
    +                                              const void             *inPropertyValue                             // 4
    +                                              ) {
    +    if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return; // 5
    +    LinphoneManager* lm = (LinphoneManager*)inUserData;
    +    
    +    bool enabled = false;
    +    CFStringRef lNewRoute = CFSTR("Unknown");
    +    UInt32 lNewRouteSize = sizeof(lNewRoute);
    +    OSStatus lStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &lNewRouteSize, &lNewRoute);
    +    if (!lStatus && lNewRouteSize > 0) {
    +        NSString *route = (NSString *) lNewRoute;
    +        [LinphoneLogger logc:LinphoneLoggerLog format:"Current audio route is [%s]", [route cStringUsingEncoding:[NSString defaultCStringEncoding]]];
    +        enabled = [route isEqualToString: @"Speaker"] || [route isEqualToString: @"SpeakerAndMicrophone"];
    +        CFRelease(lNewRoute);
    +    }
    +    
    +    if(enabled != lm.speakerEnabled) { // Reforce value
    +        lm.speakerEnabled = lm.speakerEnabled;
    +    }
    +}
    +
    +- (void)setSpeakerEnabled:(BOOL)enable {
    +    speakerEnabled = enable;
         if(enable) {
             UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;  
             AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute
    @@ -852,21 +891,6 @@ static LinphoneCoreVTable linphonec_vtable = {
         }
     }
     
    -- (BOOL)isSpeakerEnabled {
    -    bool enabled = false;
    -    CFStringRef lNewRoute = CFSTR("Unknown");
    -    UInt32 lNewRouteSize = sizeof(lNewRoute);
    -    OSStatus lStatus = AudioSessionGetProperty(kAudioSessionProperty_AudioRoute, &lNewRouteSize, &lNewRoute);
    -    if (!lStatus && lNewRouteSize > 0) {
    -        NSString *route = (NSString *) lNewRoute;
    -        [LinphoneLogger logc:LinphoneLoggerLog format:"Current audio route is [%s]", [route cStringUsingEncoding:[NSString defaultCStringEncoding]]];
    -        enabled = [route isEqualToString: @"Speaker"] || [route isEqualToString: @"SpeakerAndMicrophone"];
    -        CFRelease(lNewRoute);
    -    }
    -    return enabled;
    -}
    -
    -
     #pragma mark - Call Functions
     
     - (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer {
    diff --git a/Classes/LinphoneUI/UISpeakerButton.m b/Classes/LinphoneUI/UISpeakerButton.m
    index faeba9ad7..474bd6f8c 100644
    --- a/Classes/LinphoneUI/UISpeakerButton.m
    +++ b/Classes/LinphoneUI/UISpeakerButton.m
    @@ -29,8 +29,6 @@
     
     #pragma mark - Static Functions
     
    -static AudioSessionPropertyID routeChangeID = kAudioSessionProperty_AudioRouteChange;
    -
     static void audioRouteChangeListenerCallback (
                                            void                   *inUserData,                                 // 1
                                            AudioSessionPropertyID inPropertyID,                                // 2
    @@ -38,27 +36,13 @@ static void audioRouteChangeListenerCallback (
                                            const void             *inPropertyValue                             // 4
                                            ) {
         if (inPropertyID != kAudioSessionProperty_AudioRouteChange) return; // 5
    -    UISpeakerButton* button=(UISpeakerButton*)inUserData;
    -	UInt32 routeSize = sizeof (CFStringRef);
    -	CFStringRef route;
    -	AudioSessionGetProperty (kAudioSessionProperty_AudioRoute,
    -										  &routeSize,
    -										  &route);
    -	
    -	if (route &&
    -		button.selected  && 
    -		!( [(NSString*)route isEqualToString: @"Speaker"] || [(NSString*)route isEqualToString: @"SpeakerAndMicrophone"])) {
    -		[LinphoneLogger logc:LinphoneLoggerLog format:"Audio route change to [%s] rejected by speaker button", [(NSString*)route cStringUsingEncoding:[NSString defaultCStringEncoding]]];
    -		// reject change
    -		[button onOn];
    -	} else
    -		[(UISpeakerButton*)inUserData update];  
    -   
    +    UISpeakerButton* button = (UISpeakerButton*)inUserData;
    +    [button update];
     }
     
     - (void)initUISpeakerButton {
         AudioSessionInitialize(NULL, NULL, NULL, NULL);
    -    OSStatus lStatus = AudioSessionAddPropertyListener(routeChangeID, audioRouteChangeListenerCallback, self);
    +    OSStatus lStatus = AudioSessionAddPropertyListener(kAudioSessionProperty_AudioRouteChange, audioRouteChangeListenerCallback, self);
         if (lStatus) {
             [LinphoneLogger logc:LinphoneLoggerError format:"cannot register route change handler [%ld]",lStatus];
         }
    @@ -89,25 +73,26 @@ static void audioRouteChangeListenerCallback (
     }	
     
     - (void)dealloc {
    -    OSStatus lStatus = AudioSessionRemovePropertyListenerWithUserData(routeChangeID, audioRouteChangeListenerCallback, self);
    +    OSStatus lStatus = AudioSessionRemovePropertyListenerWithUserData(kAudioSessionProperty_AudioRouteChange, audioRouteChangeListenerCallback, self);
     	if (lStatus) {
    -		[LinphoneLogger logc:LinphoneLoggerError format:"cannot un register route change handler [%ld]",lStatus];
    +		[LinphoneLogger logc:LinphoneLoggerError format:"cannot un register route change handler [%ld]", lStatus];
     	}
     	[super dealloc];
     }
     
    +
     #pragma mark - UIToggleButtonDelegate Functions
     
     - (void)onOn {
    -	[[LinphoneManager instance] enableSpeaker:TRUE];
    +	[[LinphoneManager instance] setSpeakerEnabled:TRUE];
     }
     
     - (void)onOff {
    -    [[LinphoneManager instance] enableSpeaker:FALSE];
    +    [[LinphoneManager instance] setSpeakerEnabled:FALSE];
     }
     
     - (bool)onUpdate {
    -    return [[LinphoneManager instance] isSpeakerEnabled];
    +    return [[LinphoneManager instance] speakerEnabled];
     }
     
     @end
    
    From 1f028da67990305bf40755ff9d4213abb8982fe0 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Tue, 11 Sep 2012 17:58:57 +0200
    Subject: [PATCH 203/397] Add files to .gitignore
    
    ---
     .gitignore                    | 2 ++
     linphone.xcodeproj/.gitignore | 2 ++
     2 files changed, 4 insertions(+)
     create mode 100644 linphone.xcodeproj/.gitignore
    
    diff --git a/.gitignore b/.gitignore
    index 9c6145750..e2f3c65b2 100644
    --- a/.gitignore
    +++ b/.gitignore
    @@ -1,2 +1,4 @@
     build-*
     *.locuser
    +.DS_Store
    +liblinphone-sdk
    diff --git a/linphone.xcodeproj/.gitignore b/linphone.xcodeproj/.gitignore
    new file mode 100644
    index 000000000..7f42cdded
    --- /dev/null
    +++ b/linphone.xcodeproj/.gitignore
    @@ -0,0 +1,2 @@
    +project.xcworkspace
    +xcuserdata
    
    From 3d3e7257dadc6239308a4d422bc8d707d4c58da9 Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Wed, 12 Sep 2012 15:54:05 +0200
    Subject: [PATCH 204/397] fix configuration issue
    
    ---
     Classes/LinphoneCoreSettingsStore.m | 13 ++++++++++---
     Classes/LinphoneManager.m           |  2 +-
     2 files changed, 11 insertions(+), 4 deletions(-)
    
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index 655f6859e..6a820991e 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -102,7 +102,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     			
     			[self setString: linphone_address_get_username(addr) forKey:@"username_preference"];
     			[self setString: linphone_address_get_domain(addr) forKey:@"domain_preference"];
    -            [self setInteger: lp_config_get_int(linphone_core_get_config(lc),"default_values","reg_expires",600) forKey:@"expire_preference"];
    +            [self setInteger: linphone_proxy_config_get_expires(cfg) forKey:@"expire_preference"];
     			[self setString:linphone_proxy_config_get_dial_prefix(cfg) forKey:@"prefix_preference"];
     			if (strcmp(linphone_address_get_domain(addr),linphone_address_get_domain(proxy_addr))!=0
     				|| port!=NULL){
    @@ -119,6 +119,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     			[self setBool:linphone_proxy_config_get_dial_escape_plus(cfg) forKey:@"substitute_+_by_00_preference"];
     			
     		}
    +	} else {
    +		[self setInteger: lp_config_get_int(linphone_core_get_config(lc),"default_values","reg_expires",600) forKey:@"expire_preference"];
     	}
         {
             LinphoneAddress *parsed = linphone_core_get_primary_contact_parsed(lc);
    @@ -191,7 +193,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","animations_preference", 1) forKey:@"animations_preference"];
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference", 0) forKey:@"check_config_disable_preference"];
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","wifi_only_preference", 0) forKey:@"wifi_only_preference"];
    -    
    +	[self setString: lp_config_get_string(linphone_core_get_config(lc),"app","file_upload_url_preference",NULL) forKey:@"file_upload_url_preference"];
    +	
     	/*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/
     	BOOL start_at_boot = TRUE;
     	if ([[NSUserDefaults standardUserDefaults] objectForKey:@"start_at_boot_preference"]!=Nil)
    @@ -355,7 +358,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		
     
     		int expire = [self integerForKey:@"expire_preference"];
    -		lp_config_set_int(linphone_core_get_config(lc),"default_values","reg_expires",expire);
    +		linphone_proxy_config_expires(proxyCfg,expire);
     		
     		BOOL isWifiOnly = [self boolForKey:@"wifi_only_preference"];
     		
    @@ -505,6 +508,10 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
         
         BOOL animations = [self boolForKey:@"animations_preference"];
     	lp_config_set_int(linphone_core_get_config(lc),"app","animations_preference", animations);
    +	NSString*  file_upload_url= [self stringForKey:@"file_upload_url_preference"];
    +	[[LinphoneManager instance] lpConfigSetString:file_upload_url forKey:@"file_upload_url_preference"];
    +	
    +
     	
     	/*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/
     	BOOL start_at_boot = [self boolForKey:@"start_at_boot_preference"];
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index 8917def89..c1be9d34e 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -1067,7 +1067,7 @@ static void audioRouteChangeListenerCallback (
     
     
     -(void)lpConfigSetString:(NSString*) value forKey:(NSString*) key {
    -	lp_config_set_string(linphone_core_get_config(theLinphoneCore),"app",value?[key UTF8String]:NULL, [value UTF8String]);
    +	lp_config_set_string(linphone_core_get_config(theLinphoneCore),"app",[key UTF8String], value?[value UTF8String]:NULL);
     }
     -(NSString*)lpConfigStringForKey:(NSString*) key {
     	if (!theLinphoneCore) {
    
    From 5e97c0c7e796ff7da3ace1fb947e149c1ee1ed43 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Wed, 12 Sep 2012 17:36:09 +0200
    Subject: [PATCH 205/397] Small fixes
    
    ---
     Classes/LinphoneAppDelegate.m   | 16 ++++++++--------
     Classes/LinphoneManager.h       |  5 -----
     Classes/LinphoneManager.m       | 33 ++++++++-------------------------
     Classes/LinphoneUI/UIStateBar.m |  8 +-------
     Classes/PhoneMainView.h         |  4 ++++
     Classes/PhoneMainView.m         | 19 ++++++++++++++++---
     Classes/Utils/FastAddressBook.m |  3 +++
     7 files changed, 40 insertions(+), 48 deletions(-)
    
    diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m
    index 5f75c7652..ee31bfbf9 100644
    --- a/Classes/LinphoneAppDelegate.m
    +++ b/Classes/LinphoneAppDelegate.m
    @@ -209,17 +209,17 @@
                 NSString *loc_key = [alert objectForKey:@"loc-key"];
     			/*if we receive a remote notification, it is because our TCP background socket was no more working.
     			 As a result, break it and refresh registers in order to make sure to receive incoming INVITE or MESSAGE*/
    -			LinphoneCore *lc=[LinphoneManager getLc];
    -			linphone_core_set_network_reachable(lc,FALSE);
    -			linphone_core_set_network_reachable(lc,TRUE);
    +			LinphoneCore *lc = [LinphoneManager getLc];
    +			linphone_core_set_network_reachable(lc, FALSE);
    +			linphone_core_set_network_reachable(lc, TRUE);
                 if(loc_key != nil) {
                     if([loc_key isEqualToString:@"IM_MSG"]) {
    -                    [[LinphoneManager instance] addInhibitedEvent:kLinphoneTextReceivedSound];
    +                    [[PhoneMainView instance] addInhibitedEvent:kLinphoneTextReceived];
                         [[PhoneMainView instance] changeCurrentView:[ChatViewController compositeViewDescription]];
    -                }else{
    -					//it's a call
    -					[[LinphoneManager instance] didReceiveRemoteNotification];
    -				}
    +                } else if([loc_key isEqualToString:@"IC_MSG"]) {
    +                    //it's a call
    +                    [[LinphoneManager instance] didReceiveRemoteNotification];
    +                }
                 }
             }
         }
    diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
    index c63a76ca6..1ab4f74d1 100644
    --- a/Classes/LinphoneManager.h
    +++ b/Classes/LinphoneManager.h
    @@ -33,7 +33,6 @@
     
     extern NSString *const kLinphoneDisplayStatusUpdate;
     extern NSString *const kLinphoneTextReceived;
    -extern NSString *const kLinphoneTextReceivedSound;
     extern NSString *const kLinphoneCallUpdate;
     extern NSString *const kLinphoneRegistrationUpdate;
     extern NSString *const kLinphoneMainViewChange;
    @@ -79,7 +78,6 @@ typedef struct _LinphoneManagerSounds {
         time_t lastRemoteNotificationTime;
     	Connectivity connectivity;
         BOOL stopWaitingRegisters;
    -    NSMutableArray *inhibitedEvent;
         
     @public
         CallContext currentCallContextBeforeGoingBackground;
    @@ -111,9 +109,6 @@ typedef struct _LinphoneManagerSounds {
     
     - (void)refreshRegisters;
     
    -- (void)addInhibitedEvent:(NSString*)event;
    -- (BOOL)removeInhibitedEvent:(NSString*)event;
    -
     + (BOOL)copyFile:(NSString*)src destination:(NSString*)dst override:(BOOL)override;
     + (NSString*)bundleFile:(NSString*)file;
     + (NSString*)documentFile:(NSString*)file;
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index c1be9d34e..ea7670878 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -40,7 +40,6 @@ static LinphoneManager* theLinphoneManager = nil;
     
     NSString *const kLinphoneDisplayStatusUpdate = @"LinphoneDisplayStatusUpdate";
     NSString *const kLinphoneTextReceived = @"LinphoneTextReceived";
    -NSString *const kLinphoneTextReceivedSound = @"LinphoneTextReceivedSound";
     NSString *const kLinphoneCallUpdate = @"LinphoneCallUpdate";
     NSString *const kLinphoneRegistrationUpdate = @"LinphoneRegistrationUpdate";
     NSString *const kLinphoneAddressBookUpdate = @"LinphoneAddressBookUpdate";
    @@ -204,13 +203,12 @@ struct codec_name_pref_table codec_pref_table[]={
                 }
             }
             
    -        inhibitedEvent = [[NSMutableArray alloc] init];
             logs = [[NSMutableArray alloc] init];
             database = NULL;
             speakerEnabled = FALSE;
             [self openDatabase];
             [self copyDefaultSettings];
    -		lastRemoteNotificationTime=0;
    +        lastRemoteNotificationTime=0;
         }
         return self;
     }
    @@ -223,7 +221,6 @@ struct codec_name_pref_table codec_pref_table[]={
             AudioServicesDisposeSystemSoundID(sounds.message);
         }
         
    -    [inhibitedEvent release];
         [fastAddressBook release];
         [self closeDatabase];
         [logs release];
    @@ -713,7 +710,6 @@ static LinphoneCoreVTable linphonec_vtable = {
     	}	
     }
     
    -
     - (void)destroyLibLinphone {
     	[mIterateTimer invalidate]; 
     	AVAudioSession *audioSession = [AVAudioSession sharedInstance];
    @@ -732,16 +728,16 @@ static LinphoneCoreVTable linphonec_vtable = {
     }
     
     - (void)didReceiveRemoteNotification{
    -	lastRemoteNotificationTime=time(NULL);
    +    lastRemoteNotificationTime=time(NULL);
     }
     
     - (BOOL)shouldAutoAcceptCall{
    -	if (lastRemoteNotificationTime!=0){
    -		if ((time(NULL)-lastRemoteNotificationTime)<15)
    -			return TRUE;
    -		lastRemoteNotificationTime=0;
    -	}
    -	return FALSE;
    +    if (lastRemoteNotificationTime!=0){
    +        if ((time(NULL)-lastRemoteNotificationTime)<15)
    +            return TRUE;
    +        lastRemoteNotificationTime=0;
    +    }
    +    return FALSE;
     }
     
     - (BOOL)resignActive {
    @@ -1009,19 +1005,6 @@ static void audioRouteChangeListenerCallback (
     	}
     }
     
    -- (void)addInhibitedEvent:(NSString*)event {
    -    [inhibitedEvent addObject:event];
    -}
    -
    -- (BOOL)removeInhibitedEvent:(NSString*)event {
    -    NSUInteger index = [inhibitedEvent indexOfObject:kLinphoneTextReceivedSound];
    -    if(index != NSNotFound) {
    -        [inhibitedEvent removeObjectAtIndex:index];
    -        return TRUE;
    -    }
    -    return FALSE;
    -}
    -
     
     #pragma mark - Misc Functions
     
    diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m
    index 25877646e..0ef68f27a 100644
    --- a/Classes/LinphoneUI/UIStateBar.m
    +++ b/Classes/LinphoneUI/UIStateBar.m
    @@ -142,23 +142,17 @@ NSTimer *callSecurityTimer;
                     message =  NSLocalizedString(@"Registration failed", nil); break;
                 case LinphoneRegistrationProgress: 
                     message =  NSLocalizedString(@"Registration in progress", nil); break;
    -                //case LinphoneRegistrationCleared: m= @"No SIP account"; break;
                 default: break;
             }
         }
     
         registrationStateLabel.hidden = NO;
         switch(state) {
    -        case LinphoneRegistrationCleared:
    -            /*            image.hidden = NO;
    -             [image setImage:[UIImage imageNamed:@"status_orange.png"]];
    -             [spinner stopAnimating];
    -             [label setText:message != nil ? message : NSLocalizedString(@"No SIP account defined", nil)];*/
    -            break;
             case LinphoneRegistrationFailed:
                 registrationStateImage.hidden = NO;
                 image = [UIImage imageNamed:@"led_error.png"];
                 break;
    +        case LinphoneRegistrationCleared:
             case LinphoneRegistrationNone:
                 registrationStateImage.hidden = NO;
                 image = [UIImage imageNamed:@"led_disconnected.png"];
    diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h
    index c3aee2c38..4d6c91ede 100644
    --- a/Classes/PhoneMainView.h
    +++ b/Classes/PhoneMainView.h
    @@ -45,6 +45,7 @@
         UIActionSheet *batteryActionSheet;
         int loadCount;
         NSMutableArray *viewStack;
    +    NSMutableArray *inhibitedEvents;
     }
     
     @property (nonatomic, retain) IBOutlet UICompositeViewController *mainViewController;
    @@ -61,6 +62,9 @@
     
     + (void)setOrientation:(UIInterfaceOrientation)orientation animated:(BOOL)animated;
     
    +- (void)addInhibitedEvent:(id)event;
    +- (BOOL)removeInhibitedEvent:(id)event;
    +
     + (PhoneMainView*) instance;
     
     @end
    diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m
    index 95f08976c..9817aaa1c 100644
    --- a/Classes/PhoneMainView.m
    +++ b/Classes/PhoneMainView.m
    @@ -43,6 +43,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
         currentView = nil;
         viewStack = [[NSMutableArray alloc] init];
         loadCount = 0; // For avoiding IOS 4 bug
    +    inhibitedEvents = [[NSMutableArray alloc] init];
     }
     
     - (id)init {
    @@ -73,7 +74,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
         [[NSNotificationCenter defaultCenter] removeObserver:self];
         
         [mainViewController release];
    -    
    +    [inhibitedEvents release];
         [viewStack release];
     
         [super dealloc];
    @@ -566,6 +567,18 @@ static PhoneMainView* phoneMainViewInstance=nil;
         }
     }
     
    +- (void)addInhibitedEvent:(id)event {
    +    [inhibitedEvents addObject:event];
    +}
    +
    +- (BOOL)removeInhibitedEvent:(id)event {
    +    NSUInteger index = [inhibitedEvents indexOfObject:event];
    +    if(index != NSNotFound) {
    +        [inhibitedEvents removeObjectAtIndex:index];
    +        return TRUE;
    +    }
    +    return FALSE;
    +}
     
     #pragma mark - ActionSheet Functions
     
    @@ -595,7 +608,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
     			[[UIApplication sharedApplication] presentLocalNotificationNow:notif];
     		}
     	} else {
    -        if(![[LinphoneManager instance] removeInhibitedEvent:kLinphoneTextReceivedSound]) {
    +        if(![self removeInhibitedEvent:kLinphoneTextReceived]) {
                 AudioServicesPlaySystemSound([LinphoneManager instance].sounds.message);
             }
         }
    @@ -634,7 +647,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
                 address = @"Unknown";
             }
             if (![[LinphoneManager instance] shouldAutoAcceptCall]){
    -			// case where a remote notification is already received
    +			// case where a remote notification is not already received
     			// Create a new local notification
     			appData->notification = [[UILocalNotification alloc] init];
     			if (appData->notification) {
    diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m
    index 3994fb536..ee5d2ffeb 100644
    --- a/Classes/Utils/FastAddressBook.m
    +++ b/Classes/Utils/FastAddressBook.m
    @@ -74,6 +74,9 @@
                 ret = [ret substringFromIndex:4];
             }
             ret = [@"sip:" stringByAppendingString:ret];
    +        if([ret hasSuffix:@":5060"]) {
    +            ret = [ret substringToIndex:[ret length] - 5];
    +        }
         }
         return ret;
     }
    
    From ecc70d6ecbf434a1f6132a11c8cf979dcca70113 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Thu, 13 Sep 2012 14:39:03 +0200
    Subject: [PATCH 206/397] Declare functions before usage
    
    ---
     Classes/ContactDetailsViewController.m | 2 ++
     Classes/LinphoneManager.m              | 6 ++++++
     2 files changed, 8 insertions(+)
    
    diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m
    index d8cac2053..071f038d3 100644
    --- a/Classes/ContactDetailsViewController.m
    +++ b/Classes/ContactDetailsViewController.m
    @@ -29,6 +29,8 @@
     @synthesize cancelButton;
     
     
    +static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context);
    +
     #pragma mark - Lifecycle Functions
     
     - (id)init  {
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index ea7670878..744ec7528 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -35,6 +35,12 @@
     #include "lpconfig.h"
     
     
    +static void audioRouteChangeListenerCallback (
    +                                              void                   *inUserData,                                 // 1
    +                                              AudioSessionPropertyID inPropertyID,                                // 2
    +                                              UInt32                 inPropertyValueSize,                         // 3
    +                                              const void             *inPropertyValue                             // 4
    +                                              );
     static LinphoneCore* theLinphoneCore = nil;
     static LinphoneManager* theLinphoneManager = nil;
     
    
    From 8b850f0eb1cb881e23e60eecd5d0d7a2dc3cda35 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Thu, 13 Sep 2012 14:48:05 +0200
    Subject: [PATCH 207/397] Declare functions before usage
    
    ---
     Classes/ContactsTableViewController.m | 3 +++
     Classes/Utils/FastAddressBook.m       | 2 ++
     2 files changed, 5 insertions(+)
    
    diff --git a/Classes/ContactsTableViewController.m b/Classes/ContactsTableViewController.m
    index 2dd00fc26..791aac85e 100644
    --- a/Classes/ContactsTableViewController.m
    +++ b/Classes/ContactsTableViewController.m
    @@ -27,6 +27,9 @@
     
     @implementation ContactsTableViewController
     
    +static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context);
    +
    +
     #pragma mark - Lifecycle Functions
     
     - (void)initContactsTableViewController {
    diff --git a/Classes/Utils/FastAddressBook.m b/Classes/Utils/FastAddressBook.m
    index ee5d2ffeb..d8d9f7716 100644
    --- a/Classes/Utils/FastAddressBook.m
    +++ b/Classes/Utils/FastAddressBook.m
    @@ -22,6 +22,8 @@
     
     @implementation FastAddressBook
     
    +static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef info, void *context);
    +
     + (NSString*)getContactDisplayName:(ABRecordRef)contact {
         NSString *retString = nil;
         if (contact) {
    
    From 280fd1376fb9da06a7f80139cbb2a77c4b971928 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Thu, 13 Sep 2012 15:15:56 +0200
    Subject: [PATCH 208/397] ChatRoomView: hide keyboard on list tap
    
    ---
     Classes/ChatRoomViewController.h              |  1 +
     Classes/ChatRoomViewController.m              |  5 +++
     Classes/en.lproj/ChatRoomViewController.xib   | 40 ++++++++++++++++++-
     Classes/fr.lproj/ChatRoomViewController.xib   | 39 +++++++++++++++++-
     linphone.ldb/Contents.plist                   | 12 +++---
     .../{1 => 3}/ChatRoomViewController.xib       | 40 ++++++++++++++++++-
     6 files changed, 125 insertions(+), 12 deletions(-)
     rename linphone.ldb/Resources/Classes/ChatRoomViewController/{1 => 3}/ChatRoomViewController.xib (95%)
    
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index 82a8a2a75..a93f3275e 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -49,5 +49,6 @@
     - (IBAction)onEditClick:(id)event;
     - (IBAction)onMessageChange:(id)sender;
     - (IBAction)onSendClick:(id)event;
    +- (IBAction)onListTap:(id)sender;
     
     @end
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index 154b670d2..8fe55b620 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -292,6 +292,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     
     - (IBAction)onEditClick:(id)event {
         [tableController setEditing:![tableController isEditing] animated:TRUE];
    +    [messageField resignFirstResponder];
     }
     
     - (IBAction)onSendClick:(id)event {
    @@ -300,6 +301,10 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         }
     }
     
    +- (IBAction)onListTap:(id)sender {
    +    [messageField resignFirstResponder];
    +}
    +
     - (IBAction)onMessageChange:(id)sender {
         if([[messageField text] length] > 0) {
             [sendButton setEnabled:TRUE];
    diff --git a/Classes/en.lproj/ChatRoomViewController.xib b/Classes/en.lproj/ChatRoomViewController.xib
    index 3b1a431c4..5bae93e66 100644
    --- a/Classes/en.lproj/ChatRoomViewController.xib
    +++ b/Classes/en.lproj/ChatRoomViewController.xib
    @@ -17,6 +17,7 @@
     			IBUILabel
     			IBUITableView
     			IBUITableViewController
    +			IBUITapGestureRecognizer
     			IBUITextView
     			IBUIView
     		
    @@ -144,6 +145,7 @@
     									MQA
     								
     								YES
    +								
     								IBCocoaTouchFramework
     								YES
     								0
    @@ -162,6 +164,7 @@
     										{{250, 0}, {70, 59}}
     										
     										
    +										
     										_NS:9
     										NO
     										
    @@ -358,6 +361,7 @@
     				
     				_NS:9
     				
    +				
     				IBCocoaTouchFramework
     			
     			
    @@ -370,6 +374,7 @@
     				IBCocoaTouchFramework
     				NO
     			
    +			
     		
     		
     			
    @@ -477,6 +482,16 @@
     					
     					31
     				
    +				
    +					
    +						gestureRecognizers
    +						
    +						
    +						NSArray
    +						YES
    +					
    +					61
    +				
     				
     					
     						onBackClick:
    @@ -512,12 +527,20 @@
     					
     					33
     				
    +				
    +					
    +						onListTap:
    +						
    +						
    +					
    +					62
    +				
     			
     			
     				
     					
     						0
    -						
    +						
     						
     						
     					
    @@ -619,6 +642,7 @@
     					
     						8
     						
    +						
     						
     						tableView
     					
    @@ -651,6 +675,12 @@
     						
     						messageField
     					
    +					
    +						58
    +						
    +						
    +						listTapGestureRecognizer
    +					
     				
     			
     			
    @@ -674,6 +704,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -685,7 +716,7 @@
     			
     			
     			
    -			57
    +			62
     		
     		
     			
    @@ -703,6 +734,7 @@
     					
     						id
     						id
    +						id
     						id
     						id
     					
    @@ -715,6 +747,10 @@
     							onEditClick:
     							id
     						
    +						
    +							onListTap:
    +							id
    +						
     						
     							onMessageChange:
     							id
    diff --git a/Classes/fr.lproj/ChatRoomViewController.xib b/Classes/fr.lproj/ChatRoomViewController.xib
    index 86e584f55..4998f284e 100644
    --- a/Classes/fr.lproj/ChatRoomViewController.xib
    +++ b/Classes/fr.lproj/ChatRoomViewController.xib
    @@ -15,6 +15,7 @@
     			IBUIImageView
     			IBUILabel
     			IBProxyObject
    +			IBUITapGestureRecognizer
     			IBUITableViewController
     			IBUITableView
     			IBUITextView
    @@ -139,6 +140,7 @@
     									MQA
     								
     								YES
    +								
     								IBCocoaTouchFramework
     								YES
     								0
    @@ -342,6 +344,7 @@
     				
     				_NS:9
     				
    +				
     				IBCocoaTouchFramework
     			
     			
    @@ -354,6 +357,7 @@
     				IBCocoaTouchFramework
     				NO
     			
    +			
     		
     		
     			
    @@ -461,6 +465,16 @@
     					
     					31
     				
    +				
    +					
    +						gestureRecognizers
    +						
    +						
    +						NSArray
    +						YES
    +					
    +					61
    +				
     				
     					
     						onBackClick:
    @@ -496,12 +510,20 @@
     					
     					33
     				
    +				
    +					
    +						onListTap:
    +						
    +						
    +					
    +					62
    +				
     			
     			
     				
     					
     						0
    -						
    +						
     						
     						
     					
    @@ -603,6 +625,7 @@
     					
     						8
     						
    +						
     						
     						tableView
     					
    @@ -635,6 +658,12 @@
     						
     						messageField
     					
    +					
    +						58
    +						
    +						
    +						listTapGestureRecognizer
    +					
     				
     			
     			
    @@ -658,6 +687,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -669,7 +699,7 @@
     			
     			
     			
    -			57
    +			62
     		
     		
     			
    @@ -687,6 +717,7 @@
     					
     						id
     						id
    +						id
     						id
     						id
     					
    @@ -699,6 +730,10 @@
     							onEditClick:
     							id
     						
    +						
    +							onListTap:
    +							id
    +						
     						
     							onMessageChange:
     							id
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index d4220eca9..15280059c 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -212,17 +212,17 @@
     					
     						backup
     						
    -							1
    +							3
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ChatRoomViewController/1/ChatRoomViewController.xib
    +								Classes/ChatRoomViewController/3/ChatRoomViewController.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:21:35Z
    +					2012-09-13T13:08:20Z
     					changed values
     					
     					class
    @@ -232,7 +232,7 @@
     					flags
     					0
     					hash
    -					73bafe5878db223f8ccca7a749e21d89
    +					c2184e590274d82e838a91d16b383b3d
     
     					name
     					ChatRoomViewController.xib
    @@ -442,9 +442,9 @@
     					versions
     					
     						en
    -						1
    +						3
     						fr
    -						1
    +						3
     					
     				
     				
    diff --git a/linphone.ldb/Resources/Classes/ChatRoomViewController/1/ChatRoomViewController.xib b/linphone.ldb/Resources/Classes/ChatRoomViewController/3/ChatRoomViewController.xib
    similarity index 95%
    rename from linphone.ldb/Resources/Classes/ChatRoomViewController/1/ChatRoomViewController.xib
    rename to linphone.ldb/Resources/Classes/ChatRoomViewController/3/ChatRoomViewController.xib
    index 3b1a431c4..5bae93e66 100644
    --- a/linphone.ldb/Resources/Classes/ChatRoomViewController/1/ChatRoomViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ChatRoomViewController/3/ChatRoomViewController.xib
    @@ -17,6 +17,7 @@
     			IBUILabel
     			IBUITableView
     			IBUITableViewController
    +			IBUITapGestureRecognizer
     			IBUITextView
     			IBUIView
     		
    @@ -144,6 +145,7 @@
     									MQA
     								
     								YES
    +								
     								IBCocoaTouchFramework
     								YES
     								0
    @@ -162,6 +164,7 @@
     										{{250, 0}, {70, 59}}
     										
     										
    +										
     										_NS:9
     										NO
     										
    @@ -358,6 +361,7 @@
     				
     				_NS:9
     				
    +				
     				IBCocoaTouchFramework
     			
     			
    @@ -370,6 +374,7 @@
     				IBCocoaTouchFramework
     				NO
     			
    +			
     		
     		
     			
    @@ -477,6 +482,16 @@
     					
     					31
     				
    +				
    +					
    +						gestureRecognizers
    +						
    +						
    +						NSArray
    +						YES
    +					
    +					61
    +				
     				
     					
     						onBackClick:
    @@ -512,12 +527,20 @@
     					
     					33
     				
    +				
    +					
    +						onListTap:
    +						
    +						
    +					
    +					62
    +				
     			
     			
     				
     					
     						0
    -						
    +						
     						
     						
     					
    @@ -619,6 +642,7 @@
     					
     						8
     						
    +						
     						
     						tableView
     					
    @@ -651,6 +675,12 @@
     						
     						messageField
     					
    +					
    +						58
    +						
    +						
    +						listTapGestureRecognizer
    +					
     				
     			
     			
    @@ -674,6 +704,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -685,7 +716,7 @@
     			
     			
     			
    -			57
    +			62
     		
     		
     			
    @@ -703,6 +734,7 @@
     					
     						id
     						id
    +						id
     						id
     						id
     					
    @@ -715,6 +747,10 @@
     							onEditClick:
     							id
     						
    +						
    +							onListTap:
    +							id
    +						
     						
     							onMessageChange:
     							id
    
    From 19f26f2780edbcf106acfdd714735be2f135a706 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Thu, 13 Sep 2012 16:36:09 +0200
    Subject: [PATCH 209/397] update linphone and exosip for important bugfixes -
     don't block too long in refresh_register() in order be below 10s in keep
     alive handler - fix TLS support bug (SYSCALL ERROR)
    
    ---
     submodules/externals/exosip | 2 +-
     submodules/linphone         | 2 +-
     2 files changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/submodules/externals/exosip b/submodules/externals/exosip
    index 1195a20a0..972e9d009 160000
    --- a/submodules/externals/exosip
    +++ b/submodules/externals/exosip
    @@ -1 +1 @@
    -Subproject commit 1195a20a0c61bb90b9b580ca6f394c742236dda8
    +Subproject commit 972e9d009e1fe9dc3e2e1d672e39c98de0affa37
    diff --git a/submodules/linphone b/submodules/linphone
    index e45053170..cb0fe631e 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit e4505317065b76a89665bd1bf07a66ee3972d771
    +Subproject commit cb0fe631e18ad86f37739afeef5c2d6c60231421
    
    From b870faed794496830ff8d77e45970542e766d17e Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Thu, 13 Sep 2012 16:58:18 +0200
    Subject: [PATCH 210/397] Add growning multiline in chatroom
    
    ---
     .../Utils/GrowingTextView/HPGrowingTextView.h | 104 ++++
     .../Utils/GrowingTextView/HPGrowingTextView.m | 539 ++++++++++++++++++
     .../GrowingTextView/HPTextViewInternal.h      |  34 ++
     .../GrowingTextView/HPTextViewInternal.m      |  95 +++
     Resources/chat_background.9.png               | Bin 0 -> 592 bytes
     Resources/chat_background.9@2x.png            | Bin 0 -> 1030 bytes
     Resources/chat_background.png                 | Bin 0 -> 969 bytes
     7 files changed, 772 insertions(+)
     create mode 100755 Classes/Utils/GrowingTextView/HPGrowingTextView.h
     create mode 100755 Classes/Utils/GrowingTextView/HPGrowingTextView.m
     create mode 100755 Classes/Utils/GrowingTextView/HPTextViewInternal.h
     create mode 100755 Classes/Utils/GrowingTextView/HPTextViewInternal.m
     create mode 100644 Resources/chat_background.9.png
     create mode 100644 Resources/chat_background.9@2x.png
     create mode 100644 Resources/chat_background.png
    
    diff --git a/Classes/Utils/GrowingTextView/HPGrowingTextView.h b/Classes/Utils/GrowingTextView/HPGrowingTextView.h
    new file mode 100755
    index 000000000..56fc70ca5
    --- /dev/null
    +++ b/Classes/Utils/GrowingTextView/HPGrowingTextView.h
    @@ -0,0 +1,104 @@
    +//
    +//  HPTextView.h
    +//
    +//  Created by Hans Pinckaers on 29-06-10.
    +//
    +//	MIT License
    +//
    +//	Copyright (c) 2011 Hans Pinckaers
    +//
    +//	Permission is hereby granted, free of charge, to any person obtaining a copy
    +//	of this software and associated documentation files (the "Software"), to deal
    +//	in the Software without restriction, including without limitation the rights
    +//	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    +//	copies of the Software, and to permit persons to whom the Software is
    +//	furnished to do so, subject to the following conditions:
    +//
    +//	The above copyright notice and this permission notice shall be included in
    +//	all copies or substantial portions of the Software.
    +//
    +//	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +//	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +//	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +//	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +//	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +//	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    +//	THE SOFTWARE.
    +
    +#import 
    +
    +@class HPGrowingTextView;
    +@class HPTextViewInternal;
    +
    +@protocol HPGrowingTextViewDelegate
    +
    +@optional
    +- (BOOL)growingTextViewShouldBeginEditing:(HPGrowingTextView *)growingTextView;
    +- (BOOL)growingTextViewShouldEndEditing:(HPGrowingTextView *)growingTextView;
    +
    +- (void)growingTextViewDidBeginEditing:(HPGrowingTextView *)growingTextView;
    +- (void)growingTextViewDidEndEditing:(HPGrowingTextView *)growingTextView;
    +
    +- (BOOL)growingTextView:(HPGrowingTextView *)growingTextView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
    +- (void)growingTextViewDidChange:(HPGrowingTextView *)growingTextView;
    +
    +- (void)growingTextView:(HPGrowingTextView *)growingTextView willChangeHeight:(float)height;
    +- (void)growingTextView:(HPGrowingTextView *)growingTextView didChangeHeight:(float)height;
    +
    +- (void)growingTextViewDidChangeSelection:(HPGrowingTextView *)growingTextView;
    +- (BOOL)growingTextViewShouldReturn:(HPGrowingTextView *)growingTextView;
    +@end
    +
    +@interface HPGrowingTextView : UIView  {
    +	HPTextViewInternal *internalTextView;	
    +	
    +	int minHeight;
    +	int maxHeight;
    +	
    +	//class properties
    +	int maxNumberOfLines;
    +	int minNumberOfLines;
    +	
    +	BOOL animateHeightChange;
    +	
    +	//uitextview properties
    +	NSObject  *__unsafe_unretained delegate;
    +	UITextAlignment textAlignment; 
    +	NSRange selectedRange;
    +	BOOL editable;
    +	UIDataDetectorTypes dataDetectorTypes;
    +	UIReturnKeyType returnKeyType;
    +    
    +    UIEdgeInsets contentInset;
    +}
    +
    +//real class properties
    +@property int maxNumberOfLines;
    +@property int minNumberOfLines;
    +@property BOOL animateHeightChange;
    +@property (nonatomic, strong) UITextView *internalTextView;	
    +
    +
    +//uitextview properties
    +@property(unsafe_unretained) NSObject *delegate;
    +@property(nonatomic,strong) NSString *text;
    +@property(nonatomic,strong) UIFont *font;
    +@property(nonatomic,strong) UIColor *textColor;
    +@property(nonatomic) UITextAlignment textAlignment;    // default is UITextAlignmentLeft
    +@property(nonatomic) NSRange selectedRange;            // only ranges of length 0 are supported
    +@property(nonatomic,getter=isEditable) BOOL editable;
    +@property(nonatomic) UIDataDetectorTypes dataDetectorTypes __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0);
    +@property (nonatomic) UIReturnKeyType returnKeyType;
    +@property (assign) UIEdgeInsets contentInset;
    +@property(nonatomic) BOOL enablesReturnKeyAutomatically;
    +
    +//uitextview methods
    +//need others? use .internalTextView
    +- (BOOL)becomeFirstResponder;
    +- (BOOL)resignFirstResponder;
    +- (BOOL)isFirstResponder;
    +
    +- (BOOL)hasText;
    +- (void)scrollRangeToVisible:(NSRange)range;
    +
    +@end
    diff --git a/Classes/Utils/GrowingTextView/HPGrowingTextView.m b/Classes/Utils/GrowingTextView/HPGrowingTextView.m
    new file mode 100755
    index 000000000..5094a59a6
    --- /dev/null
    +++ b/Classes/Utils/GrowingTextView/HPGrowingTextView.m
    @@ -0,0 +1,539 @@
    +//
    +//  HPTextView.m
    +//
    +//  Created by Hans Pinckaers on 29-06-10.
    +//
    +//	MIT License
    +//
    +//	Copyright (c) 2011 Hans Pinckaers
    +//
    +//	Permission is hereby granted, free of charge, to any person obtaining a copy
    +//	of this software and associated documentation files (the "Software"), to deal
    +//	in the Software without restriction, including without limitation the rights
    +//	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    +//	copies of the Software, and to permit persons to whom the Software is
    +//	furnished to do so, subject to the following conditions:
    +//
    +//	The above copyright notice and this permission notice shall be included in
    +//	all copies or substantial portions of the Software.
    +//
    +//	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +//	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +//	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +//	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +//	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +//	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    +//	THE SOFTWARE.
    +
    +#import "HPGrowingTextView.h"
    +#import "HPTextViewInternal.h"
    +
    +@interface HPGrowingTextView(private)
    +-(void)commonInitialiser;
    +-(void)resizeTextView:(NSInteger)newSizeH;
    +-(void)growDidStop;
    +@end
    +
    +@implementation HPGrowingTextView
    +@synthesize internalTextView;
    +@synthesize delegate;
    +
    +@synthesize font;
    +@synthesize textColor;
    +@synthesize textAlignment; 
    +@synthesize selectedRange;
    +@synthesize editable;
    +@synthesize dataDetectorTypes; 
    +@synthesize animateHeightChange;
    +@synthesize returnKeyType;
    +
    +// having initwithcoder allows us to use HPGrowingTextView in a Nib. -- aob, 9/2011
    +- (id)initWithCoder:(NSCoder *)aDecoder
    +{
    +    if ((self = [super initWithCoder:aDecoder])) {
    +        [self commonInitialiser];
    +    }
    +    return self;
    +}
    +
    +- (id)initWithFrame:(CGRect)frame {
    +    if ((self = [super initWithFrame:frame])) {
    +        [self commonInitialiser];
    +    }
    +    return self;
    +}
    +
    +-(void)commonInitialiser
    +{
    +    // Initialization code
    +    CGRect r = self.frame;
    +    r.origin.y = 0;
    +    r.origin.x = 0;
    +    internalTextView = [[HPTextViewInternal alloc] initWithFrame:r];
    +    internalTextView.delegate = self;
    +    internalTextView.scrollEnabled = NO;
    +    internalTextView.font = [UIFont fontWithName:@"Helvetica" size:13]; 
    +    internalTextView.contentInset = UIEdgeInsetsZero;		
    +    internalTextView.showsHorizontalScrollIndicator = NO;
    +    internalTextView.text = @"-";
    +    [self addSubview:internalTextView];
    +    
    +    minHeight = internalTextView.frame.size.height;
    +    minNumberOfLines = 1;
    +    
    +    animateHeightChange = YES;
    +    
    +    internalTextView.text = @"";
    +    
    +    [self setMaxNumberOfLines:3];
    +}
    +
    +-(CGSize)sizeThatFits:(CGSize)size
    +{
    +    if (self.text.length == 0) {
    +        size.height = minHeight;
    +    }
    +    return size;
    +}
    +
    +-(void)layoutSubviews
    +{
    +    [super layoutSubviews];
    +    
    +	CGRect r = self.bounds;
    +	r.origin.y = 0;
    +	r.origin.x = contentInset.left;
    +    r.size.width -= contentInset.left + contentInset.right;
    +    
    +    internalTextView.frame = r;
    +}
    +
    +-(void)setContentInset:(UIEdgeInsets)inset
    +{
    +    contentInset = inset;
    +    
    +    CGRect r = self.frame;
    +    r.origin.y = inset.top - inset.bottom;
    +    r.origin.x = inset.left;
    +    r.size.width -= inset.left + inset.right;
    +    
    +    internalTextView.frame = r;
    +    
    +    [self setMaxNumberOfLines:maxNumberOfLines];
    +    [self setMinNumberOfLines:minNumberOfLines];
    +}
    +
    +-(UIEdgeInsets)contentInset
    +{
    +    return contentInset;
    +}
    +
    +-(void)setMaxNumberOfLines:(int)n
    +{
    +    // Use internalTextView for height calculations, thanks to Gwynne 
    +    NSString *saveText = internalTextView.text, *newText = @"-";
    +    
    +    internalTextView.delegate = nil;
    +    internalTextView.hidden = YES;
    +    
    +    for (int i = 1; i < n; ++i)
    +        newText = [newText stringByAppendingString:@"\n|W|"];
    +    
    +    internalTextView.text = newText;
    +    
    +    maxHeight = internalTextView.contentSize.height;
    +    
    +    internalTextView.text = saveText;
    +    internalTextView.hidden = NO;
    +    internalTextView.delegate = self;
    +    
    +    [self sizeToFit];
    +    
    +    maxNumberOfLines = n;
    +}
    +
    +-(int)maxNumberOfLines
    +{
    +    return maxNumberOfLines;
    +}
    +
    +-(void)setMinNumberOfLines:(int)m
    +{
    +	// Use internalTextView for height calculations, thanks to Gwynne 
    +    NSString *saveText = internalTextView.text, *newText = @"-";
    +    
    +    internalTextView.delegate = nil;
    +    internalTextView.hidden = YES;
    +    
    +    for (int i = 1; i < m; ++i)
    +        newText = [newText stringByAppendingString:@"\n|W|"];
    +    
    +    internalTextView.text = newText;
    +    
    +    minHeight = internalTextView.contentSize.height;
    +    
    +    internalTextView.text = saveText;
    +    internalTextView.hidden = NO;
    +    internalTextView.delegate = self;
    +    
    +    [self sizeToFit];
    +    
    +    minNumberOfLines = m;
    +}
    +
    +-(int)minNumberOfLines
    +{
    +    return minNumberOfLines;
    +}
    +
    +
    +- (void)textViewDidChange:(UITextView *)textView
    +{	
    +	//size of content, so we can set the frame of self
    +	NSInteger newSizeH = internalTextView.contentSize.height;
    +	if(newSizeH < minHeight || !internalTextView.hasText) newSizeH = minHeight; //not smalles than minHeight
    +  if (internalTextView.frame.size.height > maxHeight) newSizeH = maxHeight; // not taller than maxHeight
    +
    +	if (internalTextView.frame.size.height != newSizeH)
    +	{
    +        // [fixed] Pasting too much text into the view failed to fire the height change, 
    +        // thanks to Gwynne 
    +        
    +        if (newSizeH > maxHeight && internalTextView.frame.size.height <= maxHeight)
    +        {
    +            newSizeH = maxHeight;
    +        }
    +        
    +		if (newSizeH <= maxHeight)
    +		{
    +            if(animateHeightChange) {
    +                
    +                if ([UIView resolveClassMethod:@selector(animateWithDuration:animations:)]) {
    +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 40000
    +                    [UIView animateWithDuration:0.1f 
    +                                          delay:0 
    +                                        options:(UIViewAnimationOptionAllowUserInteraction|
    +                                                 UIViewAnimationOptionBeginFromCurrentState)                                 
    +                                     animations:^(void) {
    +                                         [self resizeTextView:newSizeH];
    +                                     } 
    +                                     completion:^(BOOL finished) {
    +                                         if ([delegate respondsToSelector:@selector(growingTextView:didChangeHeight:)]) {
    +                                             [delegate growingTextView:self didChangeHeight:newSizeH];
    +                                         }
    +                                     }];
    +#endif
    +                } else {
    +                    [UIView beginAnimations:@"" context:nil];
    +                    [UIView setAnimationDuration:0.1f];
    +                    [UIView setAnimationDelegate:self];
    +                    [UIView setAnimationDidStopSelector:@selector(growDidStop)];
    +                    [UIView setAnimationBeginsFromCurrentState:YES];
    +                    [self resizeTextView:newSizeH];
    +                    [UIView commitAnimations];
    +                }
    +            } else {
    +                [self resizeTextView:newSizeH];                
    +                // [fixed] The growingTextView:didChangeHeight: delegate method was not called at all when not animating height changes.
    +                // thanks to Gwynne 
    +                
    +                if ([delegate respondsToSelector:@selector(growingTextView:didChangeHeight:)]) {
    +                    [delegate growingTextView:self didChangeHeight:newSizeH];
    +                }	
    +            }
    +		}
    +		
    +        
    +        // if our new height is greater than the maxHeight
    +        // sets not set the height or move things
    +        // around and enable scrolling
    +		if (newSizeH >= maxHeight)
    +		{
    +			if(!internalTextView.scrollEnabled){
    +				internalTextView.scrollEnabled = YES;
    +				[internalTextView flashScrollIndicators];
    +			}
    +			
    +		} else {
    +			internalTextView.scrollEnabled = NO;
    +		}
    +		
    +	}
    +	
    +	
    +	if ([delegate respondsToSelector:@selector(growingTextViewDidChange:)]) {
    +		[delegate growingTextViewDidChange:self];
    +	}
    +	
    +}
    +
    +-(void)resizeTextView:(NSInteger)newSizeH
    +{
    +    if ([delegate respondsToSelector:@selector(growingTextView:willChangeHeight:)]) {
    +        [delegate growingTextView:self willChangeHeight:newSizeH];
    +    }
    +    
    +    CGRect internalTextViewFrame = self.frame;
    +    internalTextViewFrame.size.height = newSizeH; // + padding
    +    self.frame = internalTextViewFrame;
    +    
    +    internalTextViewFrame.origin.y = contentInset.top - contentInset.bottom;
    +    internalTextViewFrame.origin.x = contentInset.left;
    +    internalTextViewFrame.size.width = internalTextView.contentSize.width;
    +    
    +    internalTextView.frame = internalTextViewFrame;
    +}
    +
    +-(void)growDidStop
    +{
    +	if ([delegate respondsToSelector:@selector(growingTextView:didChangeHeight:)]) {
    +		[delegate growingTextView:self didChangeHeight:self.frame.size.height];
    +	}
    +	
    +}
    +
    +-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    +{
    +    [internalTextView becomeFirstResponder];
    +}
    +
    +- (BOOL)becomeFirstResponder
    +{
    +    [super becomeFirstResponder];
    +    return [self.internalTextView becomeFirstResponder];
    +}
    +
    +-(BOOL)resignFirstResponder
    +{
    +	[super resignFirstResponder];
    +	return [internalTextView resignFirstResponder];
    +}
    +
    +-(BOOL)isFirstResponder
    +{
    +  return [self.internalTextView isFirstResponder];
    +}
    +
    +
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +#pragma mark UITextView properties
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +
    +-(void)setText:(NSString *)newText
    +{
    +    internalTextView.text = newText;
    +    
    +    // include this line to analyze the height of the textview.
    +    // fix from Ankit Thakur
    +    [self performSelector:@selector(textViewDidChange:) withObject:internalTextView];
    +}
    +
    +-(NSString*) text
    +{
    +    return internalTextView.text;
    +}
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +
    +-(void)setFont:(UIFont *)afont
    +{
    +	internalTextView.font= afont;
    +	
    +	[self setMaxNumberOfLines:maxNumberOfLines];
    +	[self setMinNumberOfLines:minNumberOfLines];
    +}
    +
    +-(UIFont *)font
    +{
    +	return internalTextView.font;
    +}	
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +
    +-(void)setTextColor:(UIColor *)color
    +{
    +	internalTextView.textColor = color;
    +}
    +
    +-(UIColor*)textColor{
    +	return internalTextView.textColor;
    +}
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +
    +-(void)setBackgroundColor:(UIColor *)backgroundColor
    +{
    +  [super setBackgroundColor:backgroundColor];
    +	internalTextView.backgroundColor = backgroundColor;
    +}
    +
    +-(UIColor*)backgroundColor
    +{
    +  return internalTextView.backgroundColor;
    +}
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +
    +-(void)setTextAlignment:(UITextAlignment)aligment
    +{
    +	internalTextView.textAlignment = aligment;
    +}
    +
    +-(UITextAlignment)textAlignment
    +{
    +	return internalTextView.textAlignment;
    +}
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +
    +-(void)setSelectedRange:(NSRange)range
    +{
    +	internalTextView.selectedRange = range;
    +}
    +
    +-(NSRange)selectedRange
    +{
    +	return internalTextView.selectedRange;
    +}
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +
    +-(void)setEditable:(BOOL)beditable
    +{
    +	internalTextView.editable = beditable;
    +}
    +
    +-(BOOL)isEditable
    +{
    +	return internalTextView.editable;
    +}
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +
    +-(void)setReturnKeyType:(UIReturnKeyType)keyType
    +{
    +	internalTextView.returnKeyType = keyType;
    +}
    +
    +-(UIReturnKeyType)returnKeyType
    +{
    +	return internalTextView.returnKeyType;
    +}
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +
    +- (void)setEnablesReturnKeyAutomatically:(BOOL)enablesReturnKeyAutomatically
    +{
    +  internalTextView.enablesReturnKeyAutomatically = enablesReturnKeyAutomatically;
    +}
    +
    +- (BOOL)enablesReturnKeyAutomatically
    +{
    +  return internalTextView.enablesReturnKeyAutomatically;
    +}
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +
    +-(void)setDataDetectorTypes:(UIDataDetectorTypes)datadetector
    +{
    +	internalTextView.dataDetectorTypes = datadetector;
    +}
    +
    +-(UIDataDetectorTypes)dataDetectorTypes
    +{
    +	return internalTextView.dataDetectorTypes;
    +}
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +
    +- (BOOL)hasText{
    +	return [internalTextView hasText];
    +}
    +
    +- (void)scrollRangeToVisible:(NSRange)range
    +{
    +	[internalTextView scrollRangeToVisible:range];
    +}
    +
    +/////////////////////////////////////////////////////////////////////////////////////////////////////
    +/////////////////////////////////////////////////////////////////////////////////////////////////////
    +#pragma mark -
    +#pragma mark UITextViewDelegate
    +
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +- (BOOL)textViewShouldBeginEditing:(UITextView *)textView {
    +	if ([delegate respondsToSelector:@selector(growingTextViewShouldBeginEditing:)]) {
    +		return [delegate growingTextViewShouldBeginEditing:self];
    +		
    +	} else {
    +		return YES;
    +	}
    +}
    +
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +- (BOOL)textViewShouldEndEditing:(UITextView *)textView {
    +	if ([delegate respondsToSelector:@selector(growingTextViewShouldEndEditing:)]) {
    +		return [delegate growingTextViewShouldEndEditing:self];
    +		
    +	} else {
    +		return YES;
    +	}
    +}
    +
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +- (void)textViewDidBeginEditing:(UITextView *)textView {
    +	if ([delegate respondsToSelector:@selector(growingTextViewDidBeginEditing:)]) {
    +		[delegate growingTextViewDidBeginEditing:self];
    +	}
    +}
    +
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +- (void)textViewDidEndEditing:(UITextView *)textView {		
    +	if ([delegate respondsToSelector:@selector(growingTextViewDidEndEditing:)]) {
    +		[delegate growingTextViewDidEndEditing:self];
    +	}
    +}
    +
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
    + replacementText:(NSString *)atext {
    +	
    +	//weird 1 pixel bug when clicking backspace when textView is empty
    +	if(![textView hasText] && [atext isEqualToString:@""]) return NO;
    +	
    +	//Added by bretdabaker: sometimes we want to handle this ourselves
    +    	if ([delegate respondsToSelector:@selector(growingTextView:shouldChangeTextInRange:replacementText:)])
    +        	return [delegate growingTextView:self shouldChangeTextInRange:range replacementText:atext];
    +	
    +	if ([atext isEqualToString:@"\n"]) {
    +		if ([delegate respondsToSelector:@selector(growingTextViewShouldReturn:)]) {
    +			if (![delegate performSelector:@selector(growingTextViewShouldReturn:) withObject:self]) {
    +				return YES;
    +			} else {
    +				[textView resignFirstResponder];
    +				return NO;
    +			}
    +		}
    +	}
    +	
    +	return YES;
    +	
    +    
    +}
    +
    +///////////////////////////////////////////////////////////////////////////////////////////////////
    +- (void)textViewDidChangeSelection:(UITextView *)textView {
    +	if ([delegate respondsToSelector:@selector(growingTextViewDidChangeSelection:)]) {
    +		[delegate growingTextViewDidChangeSelection:self];
    +	}
    +}
    +
    +
    +
    +@end
    diff --git a/Classes/Utils/GrowingTextView/HPTextViewInternal.h b/Classes/Utils/GrowingTextView/HPTextViewInternal.h
    new file mode 100755
    index 000000000..c44ac63dc
    --- /dev/null
    +++ b/Classes/Utils/GrowingTextView/HPTextViewInternal.h
    @@ -0,0 +1,34 @@
    +//
    +//  HPTextViewInternal.h
    +//
    +//  Created by Hans Pinckaers on 29-06-10.
    +//
    +//	MIT License
    +//
    +//	Copyright (c) 2011 Hans Pinckaers
    +//
    +//	Permission is hereby granted, free of charge, to any person obtaining a copy
    +//	of this software and associated documentation files (the "Software"), to deal
    +//	in the Software without restriction, including without limitation the rights
    +//	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    +//	copies of the Software, and to permit persons to whom the Software is
    +//	furnished to do so, subject to the following conditions:
    +//
    +//	The above copyright notice and this permission notice shall be included in
    +//	all copies or substantial portions of the Software.
    +//
    +//	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +//	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +//	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +//	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +//	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +//	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    +//	THE SOFTWARE.
    +
    +#import 
    +
    +
    +@interface HPTextViewInternal : UITextView {
    +}
    +
    +@end
    diff --git a/Classes/Utils/GrowingTextView/HPTextViewInternal.m b/Classes/Utils/GrowingTextView/HPTextViewInternal.m
    new file mode 100755
    index 000000000..060081b22
    --- /dev/null
    +++ b/Classes/Utils/GrowingTextView/HPTextViewInternal.m
    @@ -0,0 +1,95 @@
    +//
    +//  HPTextViewInternal.m
    +//
    +//  Created by Hans Pinckaers on 29-06-10.
    +//
    +//	MIT License
    +//
    +//	Copyright (c) 2011 Hans Pinckaers
    +//
    +//	Permission is hereby granted, free of charge, to any person obtaining a copy
    +//	of this software and associated documentation files (the "Software"), to deal
    +//	in the Software without restriction, including without limitation the rights
    +//	to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    +//	copies of the Software, and to permit persons to whom the Software is
    +//	furnished to do so, subject to the following conditions:
    +//
    +//	The above copyright notice and this permission notice shall be included in
    +//	all copies or substantial portions of the Software.
    +//
    +//	THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    +//	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    +//	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
    +//	AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
    +//	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
    +//	OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
    +//	THE SOFTWARE.
    +
    +#import "HPTextViewInternal.h"
    +
    +
    +@implementation HPTextViewInternal
    +
    +-(void)setText:(NSString *)text
    +{
    +    BOOL originalValue = self.scrollEnabled;
    +    //If one of GrowingTextView's superviews is a scrollView, and self.scrollEnabled == NO,
    +    //setting the text programatically will cause UIKit to search upwards until it finds a scrollView with scrollEnabled==yes
    +    //then scroll it erratically. Setting scrollEnabled temporarily to YES prevents this.
    +    [self setScrollEnabled:YES];
    +    [super setText:text];
    +    [self setScrollEnabled:originalValue];
    +}
    +
    +-(void)setContentOffset:(CGPoint)s
    +{
    +	if(self.tracking || self.decelerating){
    +		//initiated by user...
    +        
    +        UIEdgeInsets insets = self.contentInset;
    +        insets.bottom = 0;
    +        insets.top = 0;
    +        self.contentInset = insets;
    +        
    +	} else {
    +
    +		float bottomOffset = (self.contentSize.height - self.frame.size.height + self.contentInset.bottom);
    +		if(s.y < bottomOffset && self.scrollEnabled){            
    +            UIEdgeInsets insets = self.contentInset;
    +            insets.bottom = 8;
    +            insets.top = 0;
    +            self.contentInset = insets;            
    +        }
    +	}
    +    	
    +	[super setContentOffset:s];
    +}
    +
    +-(void)setContentInset:(UIEdgeInsets)s
    +{
    +	UIEdgeInsets insets = s;
    +	
    +	if(s.bottom>8) insets.bottom = 0;
    +	insets.top = 0;
    +
    +	[super setContentInset:insets];
    +}
    +
    +-(void)setContentSize:(CGSize)contentSize
    +{
    +    // is this an iOS5 bug? Need testing!
    +    if(self.contentSize.height > contentSize.height)
    +    {
    +        UIEdgeInsets insets = self.contentInset;
    +        insets.bottom = 0;
    +        insets.top = 0;
    +        self.contentInset = insets;
    +    }
    +    
    +    [super setContentSize:contentSize];
    +}
    +
    +
    +
    +
    +@end
    diff --git a/Resources/chat_background.9.png b/Resources/chat_background.9.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..9119454eba06f4b87f3b0bf6efdba1dfe8efea30
    GIT binary patch
    literal 592
    zcmeAS@N?(olHy`uVBq!ia0y~yU~~eqZ8_M0i(P=vF<
    zBeIx*fm;}a85w5HkpK#^mw5WRvftt4`>cFJ!*QXbGOnScjxa_{aM^nzNW7M(cTN^d|SAdw}2CJr}
    zDFxCE_c#?5TJjhbS{R%-2oiTKRgTZ!mhYK8pIyL7k)q+u^<-Q>@;hpViwr7`rbhvFJE;3%tk>jEkxl
    zQ@n6hY0s8_I!*_aws16F6MuOAMP!RZdH09)U(A(P#AzZGC-S31}xrV_5&O
    z?EZs&#~gyY3r_#q%+a_^?BO(!BC&<899uSUJU0Z2k
    z>lN>OO6GFnFcAmZ4)Q>r$Nn
    o_9?TxI}oXRMq`1w^Q2#_saZ#KnnQj}07f)}r>mdKI;Vst03egzWB>pF
    
    literal 0
    HcmV?d00001
    
    diff --git a/Resources/chat_background.9@2x.png b/Resources/chat_background.9@2x.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..2094325bf0e6b400a4354e4d637f0b9b7550ee05
    GIT binary patch
    literal 1030
    zcmbtTYe-XJ7=AYodYrCiiY>dHEh7=Bkw(^5?b@8;CF_TyFjt$GLR~i4DwTE8qzt<#
    zRyt~wp3
    zya*lu@O265bO0`mb1UhO-?I`?Ee`&>lC)~@F^|*LSdEcDbAo<9Ku{?2a-hy3#9)9$
    zm#hgG3*^sP9e=))@4}GSqRFtR3iI<#1r|^hnG6<_k+SAlaw)AYIgKhTpbS*9VRuE7
    zRR!Q@(y0~OY@=_-t`~$Vgyloh+Mu$s8Xhrn$LF_2n;;`pAV2tWWJ&zhl2Yv<{vu+_|ZAop%vHpVuMl
    zM}c9MlryPwmln^H9+=fXc_@Ka*VKrxQygC+;VB@?NZfvrCj@7-hy;q@fB=t>3V<>S
    zKq&yguw6iaoaFw;^1p%FU5@I8FB8@098xZ9zKNN`Od>O2CQi5Q1g6?RnlbH5LMr
    zI*kCFQI#G=`!dLitE51_CA{Z|Sqt5{;R>){ilIYayBcpzxfh^}7y;d~&JQwr(FJB-
    zpq}8^x3~UG;5da)0$Q1dzx5yDf+4L&W6o*$?v`U>vPT-+b0r60uPwqKqWZ+`v6zb@
    z%AM#@yC%q9=55Fo1Ek+&|Fd>
    zibC5(HtW#Z$@zCDND%g))Bqg6K^7Q4eSKMlC15sS5&|*?tT<(s?uqeek9er<^UnJy
    zT~4M%(1#ox29AXH*`+aDmOrp8E7jvmHU;m~A}a?)R^vj_}xi>j=vJ
    z+AL(nFRbu9_)GjW_mB9Aszw9r^Zc7W#w?7ml)AGc(ZTJ?IH&^u#J0
    zMp|OzuSB9My{^ZD+5T3U;e6#GfZBsPtQ~@#_I_>O^W)OGK>BJ
    D6}UKb
    
    literal 0
    HcmV?d00001
    
    diff --git a/Resources/chat_background.png b/Resources/chat_background.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..c438371b0f99158d7b243c4239a1491b3a060ba0
    GIT binary patch
    literal 969
    zcmeAS@N?(olHy`uVBq!ia0y~yU}^xeOF7tpi(P=vF<
    zBeIx*fm;}a85w5HkpK#^mw5WRvftt4&&^HED`9XhN=+zkyx`DpUX}0IFg*{(}$VRAI1FfmY1@J6-=B2Qa24vp(oB21bzv&{=#R
    zl?A}A=idahkg4GF4e5`~{9s=+GFqGlrU~u)j4Yr4_`wehJqHFZ2Vl%|IDj-a?EDF}
    z!#eHPX>qV7b=C)G(is@m+AuPMoWJKV6I``!1tcUTKK};R28qU?Vsj
    v7#PaRcJA4?^uGWwoxk2}T`yq^^3Lk`pM@*;XuX!`V*mnAS3j3^P6
    Date: Thu, 13 Sep 2012 17:19:31 +0200
    Subject: [PATCH 211/397] Add image in chat message
    
    ---
     Classes/ChatRoomViewController.h              |   9 +-
     Classes/ChatRoomViewController.m              |  41 +++-
     Classes/LinphoneUI/UIChatRoomCell.h           |   3 +-
     Classes/LinphoneUI/UIChatRoomCell.m           |  46 ++--
     Classes/LinphoneUI/UIChatRoomCell.xib         | 178 ++++++++++-----
     Classes/en.lproj/ChatRoomViewController.xib   | 212 +++++++++++------
     Classes/fr.lproj/ChatRoomViewController.xib   | 211 +++++++++++------
     Resources/chat_field.9.png                    | Bin 1801 -> 1553 bytes
     Resources/chat_field.9@2x.png                 | Bin 3047 -> 2510 bytes
     Resources/chat_send_default.png               | Bin 5101 -> 2087 bytes
     Resources/chat_send_disabled.png              | Bin 2879 -> 1954 bytes
     Resources/chat_send_over.png                  | Bin 4533 -> 1349 bytes
     linphone.ldb/Contents.plist                   |  17 +-
     .../{3 => 9}/ChatRoomViewController.xib       | 216 ++++++++++++------
     linphone.xcodeproj/project.pbxproj            |  43 +++-
     15 files changed, 659 insertions(+), 317 deletions(-)
     rename linphone.ldb/Resources/Classes/ChatRoomViewController/{3 => 9}/ChatRoomViewController.xib (86%)
    
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index a93f3275e..c1a10d0b7 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -22,11 +22,12 @@
     #import "UIToggleButton.h"
     #import "UICompositeViewController.h"
     #import "ChatRoomTableViewController.h"
    +#import "HPGrowingTextView.h"
     #import "ChatModel.h"
     
     #include "linphonecore.h"
     
    -@interface ChatRoomViewController : UIViewController {
    +@interface ChatRoomViewController : UIViewController {
         @private
         LinphoneChatRoom *chatRoom;
     	NSString *_remoteAddress;
    @@ -35,14 +36,16 @@
     
     @property (nonatomic, retain) IBOutlet ChatRoomTableViewController* tableController;
     @property (nonatomic, retain) IBOutlet UIToggleButton *editButton;
    -@property (nonatomic, retain) IBOutlet UITextView* messageField;
    +@property (nonatomic, retain) IBOutlet HPGrowingTextView* messageField;
     @property (nonatomic, retain) IBOutlet UIButton* sendButton;
     @property (nonatomic, retain) IBOutlet UILabel *addressLabel;
     @property (nonatomic, retain) IBOutlet UIImageView *avatarImage;
     @property (nonatomic, retain) IBOutlet UIView *headerView;
     @property (nonatomic, retain) IBOutlet UIView *footerView;
     @property (nonatomic, retain) IBOutlet UIView *chatView;
    -@property (nonatomic, retain) IBOutlet UIImageView *fieldBackgroundImage;
    +@property (nonatomic, retain) IBOutlet UIView *messageView;
    +@property (nonatomic, retain) IBOutlet UIImageView *messageBackgroundImage;
    +@property (nonatomic, retain) IBOutlet UIImageView *footerBackgroundImage;
     @property (nonatomic, copy) NSString *remoteAddress;
     
     - (IBAction)onBackClick:(id)event;
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index 8fe55b620..399230f5f 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -34,7 +34,9 @@
     @synthesize headerView;
     @synthesize footerView;
     @synthesize chatView;
    -@synthesize fieldBackgroundImage;
    +@synthesize messageView;
    +@synthesize messageBackgroundImage;
    +@synthesize footerBackgroundImage;
     
     
     #pragma mark - Lifecycle Functions
    @@ -58,7 +60,9 @@
         [avatarImage release];
         [headerView release];
         [footerView release];
    -    [fieldBackgroundImage release];
    +    [messageView release];
    +    [messageBackgroundImage release];
    +    [footerBackgroundImage release];
         [super dealloc];
     }
     
    @@ -92,6 +96,13 @@ static UICompositeViewDescription *compositeDescription = nil;
         // Set selected+over background: IB lack !
         [editButton setImage:[UIImage imageNamed:@"chat_ok_over.png"] 
                     forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    
    +    messageField.minNumberOfLines = 1;
    +	messageField.maxNumberOfLines = ([LinphoneManager runningOnIpad])?10:3;
    +    messageField.delegate = self;
    +	messageField.font = [UIFont systemFontOfSize:18.0f];
    +    messageField.contentInset = UIEdgeInsetsZero;
    +    messageField.backgroundColor = [UIColor clearColor];
     }
     
     
    @@ -118,8 +129,11 @@ static UICompositeViewDescription *compositeDescription = nil;
         [editButton setOff];
         [[tableController tableView] reloadData];
         
    -    [fieldBackgroundImage setImage:[TUNinePatchCache imageOfSize:[fieldBackgroundImage bounds].size
    +    [messageBackgroundImage setImage:[TUNinePatchCache imageOfSize:[messageBackgroundImage bounds].size
                                                    forNinePatchNamed:@"chat_field"]];
    +    
    +    [footerBackgroundImage setImage:[TUNinePatchCache imageOfSize:[footerBackgroundImage bounds].size
    +                                               forNinePatchNamed:@"chat_background"]];
     }
     
     - (void)viewWillDisappear:(BOOL)animated {
    @@ -278,12 +292,25 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     
     #pragma mark - UITextFieldDelegate Functions
     
    -- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    -    [textField resignFirstResponder];
    -    return YES;
    +- (void)growingTextView:(HPGrowingTextView *)growingTextView willChangeHeight:(float)height {
    +    int diff = height - growingTextView.bounds.size.height;
    +    
    +    CGRect footerRect = [footerView frame];
    +    footerRect.origin.y -= diff;
    +    footerRect.size.height += diff;
    +    [footerView setFrame:footerRect];
    +    
    +    CGRect tableRect = [tableController.view frame];
    +    tableRect.size.height -= diff;
    +    [tableController.view setFrame:tableRect];
    +    
    +    [messageBackgroundImage setImage:[TUNinePatchCache imageOfSize:[messageBackgroundImage bounds].size
    +                                               forNinePatchNamed:@"chat_field"]];
    +    
    +    [footerBackgroundImage setImage:[TUNinePatchCache imageOfSize:[footerBackgroundImage bounds].size
    +                                                forNinePatchNamed:@"chat_background"]];
     }
     
    -
     #pragma mark - Action Functions
     
     - (IBAction)onBackClick:(id)event {
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h
    index bb76a3c5d..3350c8718 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.h
    +++ b/Classes/LinphoneUI/UIChatRoomCell.h
    @@ -26,9 +26,10 @@
     
     @property (nonatomic, retain) ChatModel *chat;
     @property (nonatomic, retain) IBOutlet UIView *innerView;
    -@property (nonatomic, retain) IBOutlet UIView *messageView;
    +@property (nonatomic, retain) IBOutlet UIView *bubbleView;
     @property (nonatomic, retain) IBOutlet UIImageView* backgroundImage;
     @property (nonatomic, retain) IBOutlet UILabel *messageLabel;
    +@property (nonatomic, retain) IBOutlet UIImageView *messageImageView;
     @property (nonatomic, retain) IBOutlet UIButton *deleteButton;
     @property (nonatomic, retain) IBOutlet UILabel *dateLabel;
     @property (nonatomic, retain) IBOutlet UIImageView* statusImage;
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m
    index d432f37f8..e0bc54616 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.m
    +++ b/Classes/LinphoneUI/UIChatRoomCell.m
    @@ -26,8 +26,9 @@
     @implementation UIChatRoomCell
     
     @synthesize innerView;
    -@synthesize messageView;
    +@synthesize bubbleView;
     @synthesize backgroundImage;
    +@synthesize messageImageView;
     @synthesize messageLabel;
     @synthesize deleteButton;
     @synthesize dateLabel;
    @@ -40,6 +41,8 @@ static const CGFloat CELL_MAX_WIDTH = 320.0f;
     static const CGFloat CELL_MESSAGE_X_MARGIN = 26.0f;
     static const CGFloat CELL_MESSAGE_Y_MARGIN = 36.0f;
     static const CGFloat CELL_FONT_SIZE = 17.0f;
    +static const CGFloat CELL_IMAGE_HEIGHT = 50.0f;
    +static const CGFloat CELL_IMAGE_WIDTH = 50.0f;
     static UIFont *CELL_FONT = nil;
     
     #pragma mark - Lifecycle Functions
    @@ -57,8 +60,9 @@ static UIFont *CELL_FONT = nil;
     - (void)dealloc {
         [backgroundImage release];
         [innerView release];
    -    [messageView release];
    +    [bubbleView release];
         [messageLabel release];
    +    [messageImageView release];
         [deleteButton release];
         [dateLabel release];
         [statusImage release];
    @@ -88,7 +92,16 @@ static UIFont *CELL_FONT = nil;
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat room cell: null chat"];
             return;
         }
    -    [messageLabel setText:[chat message]];
    +    if(true/*Change when image will be supported */) {
    +        [messageLabel setHidden:FALSE];
    +        [messageLabel setText:[chat message]];
    +        
    +        [messageImageView setHidden:TRUE];
    +    } else {
    +        [messageLabel setHidden:TRUE];
    +        
    +        [messageImageView setHidden:FALSE];
    +    }
         
         // Date
         NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    @@ -131,16 +144,21 @@ static UIFont *CELL_FONT = nil;
         }
     }
     
    -+ (CGSize)viewSize:(NSString*)message width:(int)width {
    -    if(CELL_FONT == nil) {
    -        CELL_FONT = [UIFont systemFontOfSize:CELL_FONT_SIZE];
    ++ (CGSize)viewSize:(ChatModel*)chat width:(int)width {
    +    CGSize messageSize;
    +    if(true/*Change when image will be supported */) {
    +        if(CELL_FONT == nil) {
    +            CELL_FONT = [UIFont systemFontOfSize:CELL_FONT_SIZE];
    +        }
    +        messageSize = [[chat message] sizeWithFont: CELL_FONT
    +                                        constrainedToSize: CGSizeMake(width - CELL_MESSAGE_X_MARGIN, 10000.0f)
    +                                            lineBreakMode: UILineBreakModeTailTruncation];
    +    } else {
    +        messageSize = CGSizeMake(CELL_IMAGE_WIDTH, CELL_IMAGE_HEIGHT);
         }
    -    CGSize messageSize = [message sizeWithFont: CELL_FONT
    -                           constrainedToSize: CGSizeMake(width - CELL_MESSAGE_X_MARGIN, 10000.0f) 
    -                               lineBreakMode: UILineBreakModeTailTruncation]; 
         messageSize.height += CELL_MESSAGE_Y_MARGIN;
         if(messageSize.height < CELL_MIN_HEIGHT)
    -         messageSize.height = CELL_MIN_HEIGHT;
    +        messageSize.height = CELL_MIN_HEIGHT;
         messageSize.width += CELL_MESSAGE_X_MARGIN;
         if(messageSize.width < CELL_MIN_WIDTH)
             messageSize.width = CELL_MIN_WIDTH;
    @@ -148,7 +166,7 @@ static UIFont *CELL_FONT = nil;
     }
     
     + (CGFloat)height:(ChatModel*)chat width:(int)width {
    -    return [UIChatRoomCell viewSize:[chat message] width:width].height;
    +    return [UIChatRoomCell viewSize:chat width:width].height;
     }
     
     
    @@ -159,7 +177,7 @@ static UIFont *CELL_FONT = nil;
         if(chat != nil) {
             // Resize inner
             CGRect innerFrame;
    -        innerFrame.size = [UIChatRoomCell viewSize:[chat message] width:[self frame].size.width];
    +        innerFrame.size = [UIChatRoomCell viewSize:chat width:[self frame].size.width];
             if([[chat direction] intValue]) { // Inverted
                 innerFrame.origin.x = 0.0f;
                 innerFrame.origin.y = 0.0f;
    @@ -169,7 +187,7 @@ static UIFont *CELL_FONT = nil;
             }
             [innerView setFrame:innerFrame];
     
    -        CGRect messageFrame = [messageView frame];
    +        CGRect messageFrame = [bubbleView frame];
             messageFrame.origin.y = ([innerView frame].size.height - messageFrame.size.height)/2;
             if([[chat direction] intValue]) { // Inverted
                 [backgroundImage setImage:[TUNinePatchCache imageOfSize:[backgroundImage bounds].size
    @@ -180,7 +198,7 @@ static UIFont *CELL_FONT = nil;
                                                       forNinePatchNamed:@"chat_bubble_outgoing"]];
                 messageFrame.origin.y -= 5;
             }
    -        [messageView setFrame:messageFrame];
    +        [bubbleView setFrame:messageFrame];
         }
     }
     
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib
    index 647825af5..cda2cfccd 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.xib
    +++ b/Classes/LinphoneUI/UIChatRoomCell.xib
    @@ -56,42 +56,68 @@
     						
     						274
     						
    -							
    +							
     								
     								274
    +								
    +									
    +										
    +										274
    +										{294, 104}
    +										
    +										
    +										
    +										_NS:9
    +										1
    +										NO
    +										IBCocoaTouchFramework
    +									
    +									
    +										
    +										274
    +										{294, 104}
    +										
    +										
    +										
    +										_NS:9
    +										
    +											3
    +											MCAwAA
    +										
    +										NO
    +										YES
    +										7
    +										NO
    +										IBCocoaTouchFramework
    +										They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety.
    +										
    +											3
    +											MC4zMzMzMzMzMzMzAA
    +										
    +										
    +										0
    +										10
    +										0
    +										
    +											1
    +											17
    +										
    +										
    +											Helvetica
    +											17
    +											16
    +										
    +										NO
    +									
    +								
     								{294, 104}
     								
     								
    -								
    +								
     								_NS:9
    -								
    -									3
    -									MCAwAA
    -								
    -								NO
    +								
     								YES
    -								7
    -								NO
     								IBCocoaTouchFramework
    -								They who can give up essential liberty to obtain a little temporary safety, deserve neither liberty nor safety.
    -								
    -									3
    -									MC4zMzMzMzMzMzMzAA
    -								
    -								
    -								0
    -								10
    -								0
    -								
    -									1
    -									17
    -								
    -								
    -									Helvetica
    -									17
    -									16
    -								
    -								NO
     							
     							
     								
    @@ -133,7 +159,6 @@
     								{{284, 104}, {10, 10}}
     								
     								
    -								
     								_NS:9
     								NO
     								IBCocoaTouchFramework
    @@ -182,7 +207,7 @@
     						{{13, 13}, {294, 114}}
     						
     						
    -						
    +						
     						_NS:9
     						
     						YES
    @@ -205,7 +230,6 @@
     				{100, 100}
     				
     				
    -				
     				_NS:9
     				
     				IBCocoaTouchFramework
    @@ -216,7 +240,6 @@
     				{100, 100}
     				
     				
    -				
     				_NS:9
     				
     				IBCocoaTouchFramework
    @@ -248,14 +271,6 @@
     					
     					13
     				
    -				
    -					
    -						messageLabel
    -						
    -						
    -					
    -					17
    -				
     				
     					
     						deleteButton
    @@ -264,14 +279,6 @@
     					
     					19
     				
    -				
    -					
    -						messageView
    -						
    -						
    -					
    -					21
    -				
     				
     					
     						dateLabel
    @@ -296,6 +303,30 @@
     					
     					27
     				
    +				
    +					
    +						messageLabel
    +						
    +						
    +					
    +					17
    +				
    +				
    +					
    +						bubbleView
    +						
    +						
    +					
    +					30
    +				
    +				
    +					
    +						messageImageView
    +						
    +						
    +					
    +					31
    +				
     				
     					
     						onDeleteClick:
    @@ -357,19 +388,13 @@
     						16
     						
     						
    -							
     							
     							
     							
    +							
     						
     						
    -						messageView
    -					
    -					
    -						15
    -						
    -						
    -						messageLabel
    +						bubbleView
     					
     					
     						18
    @@ -389,6 +414,28 @@
     						
     						status
     					
    +					
    +						29
    +						
    +						
    +							
    +							
    +						
    +						
    +						messageView
    +					
    +					
    +						28
    +						
    +						
    +						messageImageView
    +					
    +					
    +						15
    +						
    +						
    +						messageLabel
    +					
     				
     			
     			
    @@ -404,6 +451,8 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -412,7 +461,7 @@
     			
     			
     			
    -			27
    +			31
     		
     		
     			
    @@ -432,11 +481,12 @@
     					
     					
     						UIImageView
    +						UIView
     						UILabel
     						UIButton
     						UIView
    +						UIImageView
     						UILabel
    -						UIView
     						UIImageView
     					
     					
    @@ -444,6 +494,10 @@
     							backgroundImage
     							UIImageView
     						
    +						
    +							bubbleView
    +							UIView
    +						
     						
     							dateLabel
     							UILabel
    @@ -456,14 +510,14 @@
     							innerView
     							UIView
     						
    +						
    +							messageImageView
    +							UIImageView
    +						
     						
     							messageLabel
     							UILabel
     						
    -						
    -							messageView
    -							UIView
    -						
     						
     							statusImage
     							UIImageView
    diff --git a/Classes/en.lproj/ChatRoomViewController.xib b/Classes/en.lproj/ChatRoomViewController.xib
    index 5bae93e66..3bde993df 100644
    --- a/Classes/en.lproj/ChatRoomViewController.xib
    +++ b/Classes/en.lproj/ChatRoomViewController.xib
    @@ -18,7 +18,6 @@
     			IBUITableView
     			IBUITableViewController
     			IBUITapGestureRecognizer
    -			IBUITextView
     			IBUIView
     		
     		
    @@ -158,13 +157,31 @@
     								
     								266
     								
    +									
    +										
    +										274
    +										{320, 59}
    +										
    +										
    +										
    +										_NS:9
    +										
    +											1
    +											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    +										
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											chat_background.png
    +										
    +									
     									
     										
    -										257
    +										297
     										{{250, 0}, {70, 59}}
     										
     										
    -										
     										_NS:9
     										NO
     										
    @@ -202,57 +219,50 @@
     											16
     										
     									
    -									
    +									
     										
    -										258
    +										274
    +										
    +											
    +												
    +												274
    +												{250, 59}
    +												
    +												
    +												
    +												_NS:9
    +												NO
    +												IBCocoaTouchFramework
    +												
    +													NSImage
    +													chat_field.png
    +												
    +											
    +											
    +												
    +												274
    +												{{10, 10}, {230, 39}}
    +												
    +												
    +												
    +												_NS:9
    +												
    +												IBCocoaTouchFramework
    +											
    +										
     										{250, 59}
     										
     										
    -										
    +										
     										_NS:9
    -										NO
    +										
     										IBCocoaTouchFramework
    -										
    -											NSImage
    -											chat_field.png
    -										
    -									
    -									
    -										
    -										258
    -										{{10, 10}, {230, 39}}
    -										
    -										
    -										
    -										_NS:9
    -										YES
    -										YES
    -										
    -											Enter your message here
    -										
    -										IBCocoaTouchFramework
    -										YES
    -										NO
    -										This is a message
    -										
    -											2
    -											IBCocoaTouchFramework
    -										
    -										
    -											1
    -											18
    -										
    -										
    -											Helvetica
    -											18
    -											16
    -										
     									
     								
     								{{0, 357}, {320, 59}}
     								
     								
    -								
    +								
     								_NS:9
     								
     								IBCocoaTouchFramework
    @@ -426,14 +436,6 @@
     					
     					44
     				
    -				
    -					
    -						fieldBackgroundImage
    -						
    -						
    -					
    -					48
    -				
     				
     					
     						footerView
    @@ -458,13 +460,37 @@
     					
     					54
     				
    +				
    +					
    +						footerBackgroundImage
    +						
    +						
    +					
    +					67
    +				
     				
     					
     						messageField
     						
    -						
    +						
     					
    -					57
    +					64
    +				
    +				
    +					
    +						messageBackgroundImage
    +						
    +						
    +					
    +					69
    +				
    +				
    +					
    +						messageView
    +						
    +						
    +					
    +					70
     				
     				
     					
    @@ -650,37 +676,53 @@
     						14
     						
     						
    -							
     							
    -							
    +							
    +							
     						
     						
     						footerView
     					
    -					
    -						21
    -						
    -						
    -						fieldBackgroundImage
    -					
     					
     						15
     						
     						
     						sendButton
     					
    -					
    -						55
    -						
    -						
    -						messageField
    -					
     					
     						58
     						
     						
     						listTapGestureRecognizer
     					
    +					
    +						66
    +						
    +						
    +						footerBackgroundImage
    +					
    +					
    +						68
    +						
    +						
    +							
    +							
    +						
    +						
    +						messageView
    +					
    +					
    +						21
    +						
    +						
    +						messageBackgroundImage
    +					
    +					
    +						63
    +						
    +						
    +						messageField
    +					
     				
     			
     			
    @@ -703,9 +745,12 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				HPGrowingTextView
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -716,7 +761,7 @@
     			
     			
     			
    -			62
    +			70
     		
     		
     			
    @@ -765,10 +810,12 @@
     						UIImageView
     						UIView
     						UIToggleButton
    -						UIImageView
    +						UIImageView
     						UIView
     						UIView
    -						UITextView
    +						UIImageView
    +						HPGrowingTextView
    +						UIView
     						UIButton
     						ChatRoomTableViewController
     					
    @@ -789,8 +836,8 @@
     							editButton
     							UIToggleButton
     						
    -						
    -							fieldBackgroundImage
    +						
    +							footerBackgroundImage
     							UIImageView
     						
     						
    @@ -801,9 +848,17 @@
     							headerView
     							UIView
     						
    +						
    +							messageBackgroundImage
    +							UIImageView
    +						
     						
     							messageField
    -							UITextView
    +							HPGrowingTextView
    +						
    +						
    +							messageView
    +							UIView
     						
     						
     							sendButton
    @@ -819,6 +874,14 @@
     						./Classes/ChatRoomViewController.h
     					
     				
    +				
    +					HPGrowingTextView
    +					UIView
    +					
    +						IBProjectSource
    +						./Classes/HPGrowingTextView.h
    +					
    +				
     				
     					UIToggleButton
     					UIButton
    @@ -842,6 +905,7 @@
     			{131, 131}
     			{320, 88}
     			{320, 88}
    +			{640, 117}
     			{320, 88}
     			{320, 88}
     			{500, 117}
    diff --git a/Classes/fr.lproj/ChatRoomViewController.xib b/Classes/fr.lproj/ChatRoomViewController.xib
    index 4998f284e..29e39e959 100644
    --- a/Classes/fr.lproj/ChatRoomViewController.xib
    +++ b/Classes/fr.lproj/ChatRoomViewController.xib
    @@ -18,7 +18,6 @@
     			IBUITapGestureRecognizer
     			IBUITableViewController
     			IBUITableView
    -			IBUITextView
     			IBUIButton
     		
     		
    @@ -153,9 +152,27 @@
     								
     								266
     								
    +									
    +										
    +										274
    +										{320, 59}
    +										
    +										
    +										_NS:9
    +										
    +											1
    +											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    +										
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											chat_background.png
    +										
    +									
     									
     										
    -										257
    +										297
     										{{250, 0}, {70, 59}}
     										
     										_NS:9
    @@ -195,54 +212,52 @@
     											16
     										
     									
    -									
    +									
     										
    -										258
    +										274
    +										
    +											
    +												
    +												274
    +												{250, 59}
    +												
    +												
    +												_NS:9
    +												NO
    +												IBCocoaTouchFramework
    +												
    +													NSImage
    +													chat_field.png
    +												
    +											
    +											
    +												
    +												274
    +												{{10, 10}, {230, 39}}
    +												
    +												
    +												_NS:9
    +												
    +												IBCocoaTouchFramework
    +											
    +										
     										{250, 59}
     										
    -										
    +										
     										_NS:9
    -										NO
    -										IBCocoaTouchFramework
    -										
    -											NSImage
    -											chat_field.png
    -										
    -									
    -									
    -										
    -										258
    -										{{10, 10}, {230, 39}}
    -										
    -										
    -										_NS:9
    -										YES
    -										YES
    -										
    -											Entrez votre message ici
    +										
    +											3
    +											MQA
    +											
    +												2
    +											
     										
     										IBCocoaTouchFramework
    -										YES
    -										NO
    -										This is a message
    -										
    -											2
    -											IBCocoaTouchFramework
    -										
    -										
    -											1
    -											18
    -										
    -										
    -											Helvetica
    -											18
    -											16
    -										
     									
     								
     								{{0, 357}, {320, 59}}
     								
    -								
    +								
     								_NS:9
     								
     								IBCocoaTouchFramework
    @@ -409,14 +424,6 @@
     					
     					44
     				
    -				
    -					
    -						fieldBackgroundImage
    -						
    -						
    -					
    -					48
    -				
     				
     					
     						footerView
    @@ -441,13 +448,37 @@
     					
     					54
     				
    +				
    +					
    +						footerBackgroundImage
    +						
    +						
    +					
    +					67
    +				
     				
     					
     						messageField
     						
    -						
    +						
     					
    -					57
    +					64
    +				
    +				
    +					
    +						messageBackgroundImage
    +						
    +						
    +					
    +					69
    +				
    +				
    +					
    +						messageView
    +						
    +						
    +					
    +					70
     				
     				
     					
    @@ -633,37 +664,53 @@
     						14
     						
     						
    -							
     							
    -							
    +							
    +							
     						
     						
     						footerView
     					
    -					
    -						21
    -						
    -						
    -						fieldBackgroundImage
    -					
     					
     						15
     						
     						
     						sendButton
     					
    -					
    -						55
    -						
    -						
    -						messageField
    -					
     					
     						58
     						
     						
     						listTapGestureRecognizer
     					
    +					
    +						66
    +						
    +						
    +						footerBackgroundImage
    +					
    +					
    +						68
    +						
    +						
    +							
    +							
    +						
    +						
    +						messageView
    +					
    +					
    +						21
    +						
    +						
    +						messageBackgroundImage
    +					
    +					
    +						63
    +						
    +						
    +						messageField
    +					
     				
     			
     			
    @@ -686,9 +733,12 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				HPGrowingTextView
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -699,7 +749,7 @@
     			
     			
     			
    -			62
    +			70
     		
     		
     			
    @@ -748,10 +798,12 @@
     						UIImageView
     						UIView
     						UIToggleButton
    -						UIImageView
    +						UIImageView
     						UIView
     						UIView
    -						UITextView
    +						UIImageView
    +						HPGrowingTextView
    +						UIView
     						UIButton
     						ChatRoomTableViewController
     					
    @@ -772,8 +824,8 @@
     							editButton
     							UIToggleButton
     						
    -						
    -							fieldBackgroundImage
    +						
    +							footerBackgroundImage
     							UIImageView
     						
     						
    @@ -784,9 +836,17 @@
     							headerView
     							UIView
     						
    +						
    +							messageBackgroundImage
    +							UIImageView
    +						
     						
     							messageField
    -							UITextView
    +							HPGrowingTextView
    +						
    +						
    +							messageView
    +							UIView
     						
     						
     							sendButton
    @@ -802,6 +862,14 @@
     						./Classes/ChatRoomViewController.h
     					
     				
    +				
    +					HPGrowingTextView
    +					UIView
    +					
    +						IBProjectSource
    +						./Classes/HPGrowingTextView.h
    +					
    +				
     				
     					UIToggleButton
     					UIButton
    @@ -825,6 +893,7 @@
     			{131, 131}
     			{320, 88}
     			{320, 88}
    +			{640, 117}
     			{320, 88}
     			{320, 88}
     			{500, 117}
    diff --git a/Resources/chat_field.9.png b/Resources/chat_field.9.png
    index 3303c1d284fa33feea759391fddbed2b1d8938e7..0b8b3e91f962dd11f8758dbdb04b174ced084cd5 100644
    GIT binary patch
    delta 1536
    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
    
    diff --git a/Resources/chat_field.9@2x.png b/Resources/chat_field.9@2x.png
    index 614626e89f8d76a8a0f03afcb230095b4ae785fb..d852551142db93c3998176bbc4a2dc9c555b41c0 100644
    GIT binary patch
    literal 2510
    zcmZ9O2~<f{4}$_gx#)KuYp;aq4Oe5i(=aB%`_%7eyXlp$dr^OfQ?_7wi(PXKK1MA2g+o!VS`Nu4ZooXbh%#MF@F>H~aw6l3Cj
    z>yRzmZ_uaXma~R_rtZOm2Rp(}#@tw-+ynq+l`Ona>ANILuc&yRc^jS{xJYt{hbQ&N
    zr?+YPr>l00&H19i>1xsYxgQ+AAzeSd6WREBPA_Ji7C;TqWb!1bJcsCFf_E8`zv}6A
    zq4rF?`RJ9Zn;EAuvhK9u2R`8_@Vc8iIVD%a)Hg+nda&5+=Ycu
    zLe^Ov^m?uvB`8ls5Seu)#PYH`wqJ572RvI4mkVzyMG0J*v{7EW;@kec$JZLM#W*Uu
    zEp2J?34u4T8Wnb8lhi2(NoSZzHp{~39&c4ZGfNVPKk!sl1B7o)z_(4KL5}_;8f+1m7m4Cc*-j2#C-u<=4MbYmL&59T~
    zr*OYst~(>CSwvt45o?ho&{X3@@e*(>q^crWc-^~S9(Epsnvm2__R=#q5%O`~m1OcE
    zlEHaGkNI^rdSt^kpj|Q+bV0q5J;34e;{t{3fLHZs!-UnP@%eo#vr)X;&N0Us*$gw2
    ztt%$hMp~fhK-Hg)jMwsH0@fxM6S;#?>6u78o3Q=n{6^iC!YKEN){!SW=Q2Oh`ny9B
    zpe3@Fgk_N`NqMXW>O|{3;v-9*yQd~Uw3aPDi{TX)OCR;e`i{!Cws5b}yMT!3Qs=4^Z?&y;2^w`&pQG#?^V0zqJ
    zVl`72B2nnSIDe+nch8-k1vlHCngIEl&f8=yejFurj>Hq1&uuUQ+LoeH5|_!7{S*%e
    zGw>v7+ca*B!yltc_y+AXtsY5hL={Vrei)dlGaz1Y9(#2mOi+uh-R~ex
    zt3+MJKZ;u*q6#8+@*#Fm>n=7v*b67Isd313JEUrhno_3J1lO(yDPDTE%0}mqY0O~=
    zv*&Q!O`S6ep?|gMHL-h)A?re5oHo7H-7^e9*>k
    ze?jB?n3@e3`&G43I$cnC`c3`2*NKZbi#%`6AHOhHJ`5xRxkwe5R(VSkhle{7=w+e%
    zk%AY*gdtgP0_G|=UUm4NcfAme>s-Ew_-ew%d`-D$ho>8^LOw*1}z
    zZb^3n#FyDP=fu;**g$O6OoxBD2P1YhnbG@4Jyz$Nr#+jz
    z^6yUFrBghQ+rLwm#}8%U_;w9L9IY*Q=-HC~InodZ{dT~gGGf=Wdi9ZF@r)>K#ec!E
    z^FemP;{zp9+oJx6UmwGaANVY9NuZcx5nicW3dr12k|!6!b6IM_B%LdD(KuNw%3r@}j^Fw>eQ
    zzRAGNKOjJ3xv9b4WT=qC(w*A1{G#Y#F7Ltb$0$8HZvnXW%3mUCY{*(3)hfaau2u}D
    zd-L3HAI%(DTwGjE3(U4L!rC%fm2)PMkMsF`h1qkrPsH5#BfiWP&ih+hvS+Vv;qXj0
    zwKQthYne{CyGJjM8YA`}CmO8u_xIx|+Hl>K$Mj)13xR$Be&Q2I}~-3V4Y2Mzp>*FT$a|J8pq(6^xY_;H_u1=F{nK($MI1hId9J&3?NC=gP5
    W`3Cwn%iVD21>BB#I8_}DzVsL3=BS+j
    
    literal 3047
    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
    
    diff --git a/Resources/chat_send_default.png b/Resources/chat_send_default.png
    index 1bee48a2f35c00afa3662d87d143bce80cf9948a..c4f4dfd1fb1aa0b829762836545019c441ff7a8d 100644
    GIT binary patch
    literal 2087
    zcmaJ?c{CgN7FN$vTZ@LqP8UlX#@LE!s5UA=NJ(p{*n%LjC2FfQWooU~&>)u9Oxuxa
    z?1ZA$6r%}BtF@~V8BtX2Lt@f@-#PEyd%kOl|^k~;ANM}&$>fC5rH8V0u&
    zpOTO{c1*+Bu1inAG{7J>$he7>X%g;4AW;09xN#m9V}kVqn)#|_)>)+ge9r$3(?2GC
    z!zk656Mw8*o>qZOd7mRNgEQ0=
    zbYZU5-tuu3?&4`*lT7xmoW6R&&~oA3yEZj{n*~>mY^2682qH3>)
    zTmmQ}n3Tf&iYBfXT_I!8p!_PjhTc3(VePoM<7A{og~h-DN+=8^5;YCRKFZNg6+Xg9
    z9Wb@%w_KGe#^O(j-p|h}zMEsPYP#-p&Hk8LxOGshd6Ra6S1Y5L_ik<*onYD5A_JrY
    zz<{H`FM9r*MYe&nsq(M(N;rXXUt#JWQi9IT=N*$sgAD;~m7^O~``1T;H%KNM?H6BN
    zCVuFJn<^jT!opvhDfOvZHBLlnG2WC56q=tUes>G)l3hlQOiTrrg!CskgiPGm`L$Nn
    z`Y8ZptnU%=MkW0yMVB~+D5#E(y5b6}uyN(QtfUkd+*D+8x%hur15AAyVbqG6MgXsd
    zPnDwpbaqrjxlh|!*SC4*gQZs>-S*0`%4wBJ?^5~LO3qFDq~
    z-u0iDd&pFB(2#y
    zFIzE0zuH@uJS9-_pz-{QqK}KcDw|%XLqqM02sc-sp>wq48;s8X)fmwB2jYAodArnl
    zt!k;&i+(-92k8Z)o#_}s{+2!pecqxghyK!wO0LA4U!b90ZEp65^;f7|ZKWjWhxgs;
    zB$Fq09&=a6Uwp_9E4(%z{^E8psH_FY%qqAtwAQ>o_;pE48*dw(a?P{vr~$
    z(mz-fuJe=@2xs_BE@U%M`q+ZCXCLkiQ|z*NH5#@N@)cev@A$>9%{n_hIoEGg8Iamr
    zIUG0ofz<{cV_mZ{;MM`@41TRXBB?(ba1{7J{J}@bU7GByT`Otkx?Kj8{G{xjx{5TbztMS$8I31&AyQ$nX*pi`hN>WtHhz0Zz3^WxCWHY%T
    zg-R+a0ZNw@L8T|IWqMvkgvOHHoDS9(oWnv3A>1og)znLkyt_$$?Ge~0H{DGOS-oGh
    z7-tYS@3(eywib%vAsQ(W*3+L3jhO4=iVAtS?7%66SR~o4?Cm70tU>!vtM^96X5OCI
    z@h8%1R2Pjlk^Wajx#{WKtL3C2&K3Zw*U{N&I4hqc3lNcFuJ3p6pitfxIq4$xdhjhB
    zZ##a!`{lJIzRdTqpn6zsX;){W9VFSrN={B@S6nIsnjX1(8L;o0M_ypLo`rji+SvRR
    zAJ81OGy~p(kK~=qfU15wZV+T~r`Bco_Ll|cQ*s$LHWUSALSN$r+x&Uk^24*piDw=L
    z_Y*9eTBIqXL&)c{aw}u)*RufTpgxl2XALiV2z;)GHctN75bI2ow%)Ro$F#OD;q5Jl
    z$Jtf_JjBQ5bl(ZTB3U;Fv>x}rr>T}tw*GClN~I
    z@w-w4%nX~0&_&o0yvtwY^}2$s0BvYZV>I_Xk=OD1vxce{3xB|v+wtq3Ego9-&{}Kl
    z=;0|d*EOKTlWE)WHGdBmh|C>;PRSb^m$m2q{@J?=p9p5IZ;cR&H_b(rf}~dj{Ws&m
    zW~qg7UN2#(3~rv^Kb%sT8(A@0@Q@HVAv$0PRcauV0zum>+EC2ui
    
    literal 5101
    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
    
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index 15280059c..dc3f49742 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -212,17 +212,17 @@
     					
     						backup
     						
    -							3
    +							9
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ChatRoomViewController/3/ChatRoomViewController.xib
    +								Classes/ChatRoomViewController/9/ChatRoomViewController.xib
     							
     						
     					
     					change date
    -					2012-09-13T13:08:20Z
    +					2012-09-13T15:15:40Z
     					changed values
     					
     					class
    @@ -232,7 +232,7 @@
     					flags
     					0
     					hash
    -					c2184e590274d82e838a91d16b383b3d
    +					1d0ac99cbad123783bcb35b0d4031cdb
     
     					name
     					ChatRoomViewController.xib
    @@ -386,6 +386,9 @@
     							snapshots
     							
     						
    +					
    +					old objects
    +					
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -435,16 +438,14 @@
     							
     						
     					
    -					old objects
    -					
     					snapshots
     					
     					versions
     					
     						en
    -						3
    +						9
     						fr
    -						3
    +						9
     					
     				
     				
    diff --git a/linphone.ldb/Resources/Classes/ChatRoomViewController/3/ChatRoomViewController.xib b/linphone.ldb/Resources/Classes/ChatRoomViewController/9/ChatRoomViewController.xib
    similarity index 86%
    rename from linphone.ldb/Resources/Classes/ChatRoomViewController/3/ChatRoomViewController.xib
    rename to linphone.ldb/Resources/Classes/ChatRoomViewController/9/ChatRoomViewController.xib
    index 5bae93e66..7ab91d369 100644
    --- a/linphone.ldb/Resources/Classes/ChatRoomViewController/3/ChatRoomViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ChatRoomViewController/9/ChatRoomViewController.xib
    @@ -18,7 +18,6 @@
     			IBUITableView
     			IBUITableViewController
     			IBUITapGestureRecognizer
    -			IBUITextView
     			IBUIView
     		
     		
    @@ -158,13 +157,31 @@
     								
     								266
     								
    +									
    +										
    +										274
    +										{320, 59}
    +										
    +										
    +										
    +										_NS:9
    +										
    +											1
    +											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    +										
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											chat_background.png
    +										
    +									
     									
     										
    -										257
    +										297
     										{{250, 0}, {70, 59}}
     										
     										
    -										
     										_NS:9
     										NO
     										
    @@ -202,57 +219,56 @@
     											16
     										
     									
    -									
    +									
     										
    -										258
    +										274
    +										
    +											
    +												
    +												274
    +												{250, 59}
    +												
    +												
    +												
    +												_NS:9
    +												NO
    +												IBCocoaTouchFramework
    +												
    +													NSImage
    +													chat_field.png
    +												
    +											
    +											
    +												
    +												274
    +												{{10, 10}, {230, 39}}
    +												
    +												
    +												
    +												_NS:9
    +												
    +												IBCocoaTouchFramework
    +											
    +										
     										{250, 59}
     										
     										
    -										
    +										
     										_NS:9
    -										NO
    -										IBCocoaTouchFramework
    -										
    -											NSImage
    -											chat_field.png
    -										
    -									
    -									
    -										
    -										258
    -										{{10, 10}, {230, 39}}
    -										
    -										
    -										
    -										_NS:9
    -										YES
    -										YES
    -										
    -											Enter your message here
    +										
    +											3
    +											MQA
    +											
    +												2
    +											
     										
     										IBCocoaTouchFramework
    -										YES
    -										NO
    -										This is a message
    -										
    -											2
    -											IBCocoaTouchFramework
    -										
    -										
    -											1
    -											18
    -										
    -										
    -											Helvetica
    -											18
    -											16
    -										
     									
     								
     								{{0, 357}, {320, 59}}
     								
     								
    -								
    +								
     								_NS:9
     								
     								IBCocoaTouchFramework
    @@ -426,14 +442,6 @@
     					
     					44
     				
    -				
    -					
    -						fieldBackgroundImage
    -						
    -						
    -					
    -					48
    -				
     				
     					
     						footerView
    @@ -458,13 +466,37 @@
     					
     					54
     				
    +				
    +					
    +						footerBackgroundImage
    +						
    +						
    +					
    +					67
    +				
     				
     					
     						messageField
     						
    -						
    +						
     					
    -					57
    +					64
    +				
    +				
    +					
    +						messageBackgroundImage
    +						
    +						
    +					
    +					69
    +				
    +				
    +					
    +						messageView
    +						
    +						
    +					
    +					70
     				
     				
     					
    @@ -650,37 +682,53 @@
     						14
     						
     						
    -							
     							
    -							
    +							
    +							
     						
     						
     						footerView
     					
    -					
    -						21
    -						
    -						
    -						fieldBackgroundImage
    -					
     					
     						15
     						
     						
     						sendButton
     					
    -					
    -						55
    -						
    -						
    -						messageField
    -					
     					
     						58
     						
     						
     						listTapGestureRecognizer
     					
    +					
    +						66
    +						
    +						
    +						footerBackgroundImage
    +					
    +					
    +						68
    +						
    +						
    +							
    +							
    +						
    +						
    +						messageView
    +					
    +					
    +						21
    +						
    +						
    +						messageBackgroundImage
    +					
    +					
    +						63
    +						
    +						
    +						messageField
    +					
     				
     			
     			
    @@ -703,9 +751,12 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				HPGrowingTextView
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -716,7 +767,7 @@
     			
     			
     			
    -			62
    +			70
     		
     		
     			
    @@ -765,10 +816,12 @@
     						UIImageView
     						UIView
     						UIToggleButton
    -						UIImageView
    +						UIImageView
     						UIView
     						UIView
    -						UITextView
    +						UIImageView
    +						HPGrowingTextView
    +						UIView
     						UIButton
     						ChatRoomTableViewController
     					
    @@ -789,8 +842,8 @@
     							editButton
     							UIToggleButton
     						
    -						
    -							fieldBackgroundImage
    +						
    +							footerBackgroundImage
     							UIImageView
     						
     						
    @@ -801,9 +854,17 @@
     							headerView
     							UIView
     						
    +						
    +							messageBackgroundImage
    +							UIImageView
    +						
     						
     							messageField
    -							UITextView
    +							HPGrowingTextView
    +						
    +						
    +							messageView
    +							UIView
     						
     						
     							sendButton
    @@ -819,6 +880,14 @@
     						./Classes/ChatRoomViewController.h
     					
     				
    +				
    +					HPGrowingTextView
    +					UIView
    +					
    +						IBProjectSource
    +						./Classes/HPGrowingTextView.h
    +					
    +				
     				
     					UIToggleButton
     					UIButton
    @@ -842,6 +911,7 @@
     			{131, 131}
     			{320, 88}
     			{320, 88}
    +			{640, 117}
     			{320, 88}
     			{320, 88}
     			{500, 117}
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index 889b7ff35..60e1d94c3 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -377,7 +377,6 @@
     		D34BD65215C13DB60070C209 /* chat_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327F11580FE3A00FA0D23 /* chat_default.png */; };
     		D34BD65315C13DB60070C209 /* chat_edit_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA53FF159852080037DC6B /* chat_edit_default.png */; };
     		D34BD65415C13DB60070C209 /* chat_edit_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3EA5400159852080037DC6B /* chat_edit_over.png */; };
    -		D34BD65515C13DB60070C209 /* chat_field.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DA15A58C440096EA4E /* chat_field.png */; };
     		D34BD65615C13DB60070C209 /* chat_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */; };
     		D34BD65715C13DB60070C209 /* chat_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */; };
     		D34BD65815C13DB60070C209 /* chat_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* chat_over.png */; };
    @@ -968,7 +967,6 @@
     		D3ACB09C15C6D59500E15894 /* dialer_alt_back_default~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ACB09915C6D59500E15894 /* dialer_alt_back_default~ipad.png */; };
     		D3ACB09D15C6D59500E15894 /* dialer_alt_back_over~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ACB09A15C6D59500E15894 /* dialer_alt_back_over~ipad.png */; };
     		D3ACB09E15C6D59500E15894 /* dialer_alt_back_over~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ACB09A15C6D59500E15894 /* dialer_alt_back_over~ipad.png */; };
    -		D3B9A3DF15A58C450096EA4E /* chat_field.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DA15A58C440096EA4E /* chat_field.png */; };
     		D3B9A3E115A58C450096EA4E /* chat_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DB15A58C440096EA4E /* chat_ok_default.png */; };
     		D3B9A3E315A58C450096EA4E /* chat_ok_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DC15A58C440096EA4E /* chat_ok_over.png */; };
     		D3B9A3E515A58C450096EA4E /* chat_send_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3B9A3DD15A58C440096EA4E /* chat_send_default.png */; };
    @@ -1079,6 +1077,14 @@
     		D3ED3EA81587334E006C0DE4 /* HistoryTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */; };
     		D3ED3EB81587392C006C0DE4 /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryViewController.m */; };
     		D3ED3EB91587392C006C0DE4 /* HistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED3EB615873929006C0DE4 /* HistoryViewController.m */; };
    +		D3ED40191602172200BF332B /* HPGrowingTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED40161602172200BF332B /* HPGrowingTextView.m */; };
    +		D3ED401A1602172200BF332B /* HPGrowingTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED40161602172200BF332B /* HPGrowingTextView.m */; };
    +		D3ED401B1602172200BF332B /* HPTextViewInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED40181602172200BF332B /* HPTextViewInternal.m */; };
    +		D3ED401C1602172200BF332B /* HPTextViewInternal.m in Sources */ = {isa = PBXBuildFile; fileRef = D3ED40181602172200BF332B /* HPTextViewInternal.m */; };
    +		D3ED40241602257400BF332B /* chat_background.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED40221602257400BF332B /* chat_background.9.png */; };
    +		D3ED40251602257400BF332B /* chat_background.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED40221602257400BF332B /* chat_background.9.png */; };
    +		D3ED40261602257400BF332B /* chat_background.9@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED40231602257400BF332B /* chat_background.9@2x.png */; };
    +		D3ED40271602257400BF332B /* chat_background.9@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = D3ED40231602257400BF332B /* chat_background.9@2x.png */; };
     		D3F26BF115986B73005F9CAB /* IncomingCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */; };
     		D3F26BF215986B73005F9CAB /* IncomingCallViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */; };
     		D3F26BF715986DAD005F9CAB /* history_ok_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F26BF515986DAD005F9CAB /* history_ok_default.png */; };
    @@ -2013,6 +2019,13 @@
     		D3ED3EA51587334C006C0DE4 /* HistoryTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = HistoryTableViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
     		D3ED3EB515873928006C0DE4 /* HistoryViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryViewController.h; sourceTree = ""; };
     		D3ED3EB615873929006C0DE4 /* HistoryViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = HistoryViewController.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; };
    +		D3ED40151602172200BF332B /* HPGrowingTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HPGrowingTextView.h; sourceTree = ""; };
    +		D3ED40161602172200BF332B /* HPGrowingTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HPGrowingTextView.m; sourceTree = ""; };
    +		D3ED40171602172200BF332B /* HPTextViewInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HPTextViewInternal.h; sourceTree = ""; };
    +		D3ED40181602172200BF332B /* HPTextViewInternal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HPTextViewInternal.m; sourceTree = ""; };
    +		D3ED401D1602223B00BF332B /* chat_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_background.png; path = Resources/chat_background.png; sourceTree = ""; };
    +		D3ED40221602257400BF332B /* chat_background.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_background.9.png; path = Resources/chat_background.9.png; sourceTree = ""; };
    +		D3ED40231602257400BF332B /* chat_background.9@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "chat_background.9@2x.png"; path = "Resources/chat_background.9@2x.png"; sourceTree = ""; };
     		D3F26BEE15986B71005F9CAB /* IncomingCallViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IncomingCallViewController.h; sourceTree = ""; };
     		D3F26BEF15986B71005F9CAB /* IncomingCallViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IncomingCallViewController.m; sourceTree = ""; };
     		D3F26BF515986DAD005F9CAB /* history_ok_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_ok_default.png; path = Resources/history_ok_default.png; sourceTree = ""; };
    @@ -2765,6 +2778,9 @@
     				D3EA5402159852080037DC6B /* chat_add_over.png */,
     				D3F795DB15A5831C0077328B /* chat_back_default.png */,
     				D3F795DC15A5831C0077328B /* chat_back_over.png */,
    +				D3ED40221602257400BF332B /* chat_background.9.png */,
    +				D3ED40231602257400BF332B /* chat_background.9@2x.png */,
    +				D3ED401D1602223B00BF332B /* chat_background.png */,
     				D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */,
     				D3A8BB7715A6CC3200F96BE5 /* chat_bubble_incoming.png */,
     				D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */,
    @@ -3125,6 +3141,7 @@
     				D3807FB615C28940005BE9BC /* DCRoundSwitch */,
     				D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */,
     				D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */,
    +				D3ED40141602172200BF332B /* GrowingTextView */,
     				D3807FC715C2894A005BE9BC /* InAppSettingsKit */,
     				D3B90E1115C2CB5700F64F8C /* NinePatch.xcodeproj */,
     				D326483615887D5200930C67 /* OrderedDictionary.h */,
    @@ -3248,6 +3265,18 @@
     			name = Products;
     			sourceTree = "";
     		};
    +		D3ED40141602172200BF332B /* GrowingTextView */ = {
    +			isa = PBXGroup;
    +			children = (
    +				D3ED40151602172200BF332B /* HPGrowingTextView.h */,
    +				D3ED40161602172200BF332B /* HPGrowingTextView.m */,
    +				D3ED40171602172200BF332B /* HPTextViewInternal.h */,
    +				D3ED40181602172200BF332B /* HPTextViewInternal.m */,
    +			);
    +			name = GrowingTextView;
    +			path = Utils/GrowingTextView;
    +			sourceTree = "";
    +		};
     		D3F7997E15BD31EC0018C273 /* TPMultiLayoutViewController */ = {
     			isa = PBXGroup;
     			children = (
    @@ -3568,7 +3597,6 @@
     				D38187AD15FE340100C3EDCA /* ChatRoomViewController.xib in Resources */,
     				D3F795DD15A5831C0077328B /* chat_back_default.png in Resources */,
     				D3F795DF15A5831C0077328B /* chat_back_over.png in Resources */,
    -				D3B9A3DF15A58C450096EA4E /* chat_field.png in Resources */,
     				D3B9A3E115A58C450096EA4E /* chat_ok_default.png in Resources */,
     				D3B9A3E315A58C450096EA4E /* chat_ok_over.png in Resources */,
     				D3B9A3E515A58C450096EA4E /* chat_send_default.png in Resources */,
    @@ -3815,6 +3843,8 @@
     				D381884415FE447200C3EDCA /* ChatViewController.xib in Resources */,
     				D381885415FE448400C3EDCA /* UICallBar.xib in Resources */,
     				D381885615FE448400C3EDCA /* UICallBar~ipad.xib in Resources */,
    +				D3ED40241602257400BF332B /* chat_background.9.png in Resources */,
    +				D3ED40261602257400BF332B /* chat_background.9@2x.png in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -3907,7 +3937,6 @@
     				D34BD65215C13DB60070C209 /* chat_default.png in Resources */,
     				D34BD65315C13DB60070C209 /* chat_edit_default.png in Resources */,
     				D34BD65415C13DB60070C209 /* chat_edit_over.png in Resources */,
    -				D34BD65515C13DB60070C209 /* chat_field.png in Resources */,
     				D34BD65615C13DB60070C209 /* chat_ok_default.png in Resources */,
     				D34BD65715C13DB60070C209 /* chat_ok_over.png in Resources */,
     				D34BD65815C13DB60070C209 /* chat_over.png in Resources */,
    @@ -4264,6 +4293,8 @@
     				D381884515FE447200C3EDCA /* ChatViewController.xib in Resources */,
     				D381885515FE448400C3EDCA /* UICallBar.xib in Resources */,
     				D381885715FE448400C3EDCA /* UICallBar~ipad.xib in Resources */,
    +				D3ED40251602257400BF332B /* chat_background.9.png in Resources */,
    +				D3ED40271602257400BF332B /* chat_background.9@2x.png in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4386,6 +4417,8 @@
     				D380800515C28A7A005BE9BC /* UILinphone.m in Sources */,
     				D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
     				D378AB2A15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
    +				D3ED40191602172200BF332B /* HPGrowingTextView.m in Sources */,
    +				D3ED401B1602172200BF332B /* HPTextViewInternal.m in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4476,6 +4509,8 @@
     				D380800615C28A7A005BE9BC /* UILinphone.m in Sources */,
     				D380801415C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
     				D378AB2B15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
    +				D3ED401A1602172200BF332B /* HPGrowingTextView.m in Sources */,
    +				D3ED401C1602172200BF332B /* HPTextViewInternal.m in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    
    From 349592cf24afdc9b94faaa314b5763dbc3fd5f06 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Thu, 13 Sep 2012 17:23:02 +0200
    Subject: [PATCH 212/397] Add CharRoomViewController(fr) synchronized xib
    
    ---
     Classes/fr.lproj/ChatRoomViewController.xib          |  8 +-------
     linphone.ldb/Contents.plist                          | 12 ++++++------
     .../{9 => 10}/ChatRoomViewController.xib             |  8 +-------
     3 files changed, 8 insertions(+), 20 deletions(-)
     rename linphone.ldb/Resources/Classes/ChatRoomViewController/{9 => 10}/ChatRoomViewController.xib (99%)
    
    diff --git a/Classes/fr.lproj/ChatRoomViewController.xib b/Classes/fr.lproj/ChatRoomViewController.xib
    index 29e39e959..00108b6b3 100644
    --- a/Classes/fr.lproj/ChatRoomViewController.xib
    +++ b/Classes/fr.lproj/ChatRoomViewController.xib
    @@ -245,13 +245,7 @@
     										
     										
     										_NS:9
    -										
    -											3
    -											MQA
    -											
    -												2
    -											
    -										
    +										
     										IBCocoaTouchFramework
     									
     								
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index dc3f49742..f37155e1a 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -212,17 +212,17 @@
     					
     						backup
     						
    -							9
    +							10
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ChatRoomViewController/9/ChatRoomViewController.xib
    +								Classes/ChatRoomViewController/10/ChatRoomViewController.xib
     							
     						
     					
     					change date
    -					2012-09-13T15:15:40Z
    +					2012-09-13T15:16:23Z
     					changed values
     					
     					class
    @@ -232,7 +232,7 @@
     					flags
     					0
     					hash
    -					1d0ac99cbad123783bcb35b0d4031cdb
    +					17cff3d2e83eebab4ab29a3d6e6361ce
     
     					name
     					ChatRoomViewController.xib
    @@ -443,9 +443,9 @@
     					versions
     					
     						en
    -						9
    +						10
     						fr
    -						9
    +						10
     					
     				
     				
    diff --git a/linphone.ldb/Resources/Classes/ChatRoomViewController/9/ChatRoomViewController.xib b/linphone.ldb/Resources/Classes/ChatRoomViewController/10/ChatRoomViewController.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/ChatRoomViewController/9/ChatRoomViewController.xib
    rename to linphone.ldb/Resources/Classes/ChatRoomViewController/10/ChatRoomViewController.xib
    index 7ab91d369..3bde993df 100644
    --- a/linphone.ldb/Resources/Classes/ChatRoomViewController/9/ChatRoomViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ChatRoomViewController/10/ChatRoomViewController.xib
    @@ -255,13 +255,7 @@
     										
     										
     										_NS:9
    -										
    -											3
    -											MQA
    -											
    -												2
    -											
    -										
    +										
     										IBCocoaTouchFramework
     									
     								
    
    From 9912c46e356800117aa56cd15bbed1fe37ab1bff Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Thu, 13 Sep 2012 17:39:40 +0200
    Subject: [PATCH 213/397] Fix chat views
    
    ---
     Classes/ChatRoomViewController.m                     | 12 ++++++++++++
     Classes/en.lproj/ChatViewController.xib              |  5 ++---
     Classes/fr.lproj/ChatViewController.xib              |  4 ++--
     linphone.ldb/Contents.plist                          | 12 ++++++------
     .../{1 => 2}/ChatViewController.xib                  |  5 ++---
     5 files changed, 24 insertions(+), 14 deletions(-)
     rename linphone.ldb/Resources/Classes/ChatViewController/{1 => 2}/ChatViewController.xib (99%)
    
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index 399230f5f..b82d0215c 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -300,6 +300,11 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         footerRect.size.height += diff;
         [footerView setFrame:footerRect];
         
    +    // Always stay at bottom
    +    CGPoint contentPt = [tableController.tableView contentOffset];
    +    contentPt.y += diff;
    +    [tableController.tableView setContentOffset:contentPt animated:FALSE];
    +    
         CGRect tableRect = [tableController.view frame];
         tableRect.size.height -= diff;
         [tableController.view setFrame:tableRect];
    @@ -371,8 +376,15 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         {
             CGRect tableFrame = [tableController.view frame];
             tableFrame.origin.y = [headerView frame].origin.y + [headerView frame].size.height;
    +        double diff = tableFrame.size.height;
             tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y;
    +        diff = tableFrame.size.height - diff;
             [tableController.view setFrame:tableFrame];
    +        
    +        // Always stay at bottom
    +        CGPoint contentPt = [tableController.tableView contentOffset];
    +        contentPt.y -= diff;
    +        [tableController.tableView setContentOffset:contentPt animated:FALSE];
         }
         
         [UIView commitAnimations];
    diff --git a/Classes/en.lproj/ChatViewController.xib b/Classes/en.lproj/ChatViewController.xib
    index 5a413935c..69cc378e4 100644
    --- a/Classes/en.lproj/ChatViewController.xib
    +++ b/Classes/en.lproj/ChatViewController.xib
    @@ -61,7 +61,7 @@
     							
     							
     								
    -								292
    +								289
     								{{160, 0}, {160, 44}}
     								
     								
    @@ -99,7 +99,7 @@
     							
     							
     								
    -								289
    +								292
     								{160, 44}
     								
     								
    @@ -150,7 +150,6 @@
     						{{0, 74}, {320, 378}}
     						
     						
    -						
     						_NS:9
     						
     							1
    diff --git a/Classes/fr.lproj/ChatViewController.xib b/Classes/fr.lproj/ChatViewController.xib
    index e9f8e254d..c19606afd 100644
    --- a/Classes/fr.lproj/ChatViewController.xib
    +++ b/Classes/fr.lproj/ChatViewController.xib
    @@ -60,7 +60,7 @@
     							
     							
     								
    -								292
    +								289
     								{{160, 0}, {160, 44}}
     								
     								
    @@ -97,7 +97,7 @@
     							
     							
     								
    -								289
    +								292
     								{160, 44}
     								
     								
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index f37155e1a..e446bc3c4 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -453,17 +453,17 @@
     					
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ChatViewController/1/ChatViewController.xib
    +								Classes/ChatViewController/2/ChatViewController.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:08:28Z
    +					2012-09-13T15:35:03Z
     					changed values
     					
     					class
    @@ -473,7 +473,7 @@
     					flags
     					0
     					hash
    -					5899ee290abaa696222088258d0de490
    +					d02ecf8f1bacbfa8e5793231b6735940
     
     					name
     					ChatViewController.xib
    @@ -587,9 +587,9 @@
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     				
    diff --git a/linphone.ldb/Resources/Classes/ChatViewController/1/ChatViewController.xib b/linphone.ldb/Resources/Classes/ChatViewController/2/ChatViewController.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/ChatViewController/1/ChatViewController.xib
    rename to linphone.ldb/Resources/Classes/ChatViewController/2/ChatViewController.xib
    index 5a413935c..69cc378e4 100644
    --- a/linphone.ldb/Resources/Classes/ChatViewController/1/ChatViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ChatViewController/2/ChatViewController.xib
    @@ -61,7 +61,7 @@
     							
     							
     								
    -								292
    +								289
     								{{160, 0}, {160, 44}}
     								
     								
    @@ -99,7 +99,7 @@
     							
     							
     								
    -								289
    +								292
     								{160, 44}
     								
     								
    @@ -150,7 +150,6 @@
     						{{0, 74}, {320, 378}}
     						
     						
    -						
     						_NS:9
     						
     							1
    
    From 6d4c6c6ffaf4087a9d032bf9f1c5febc3d797c4a Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Thu, 13 Sep 2012 17:54:48 +0200
    Subject: [PATCH 214/397] add file sharing
    
    ---
     Classes/ChatRoomTableViewController.m         |   6 +-
     Classes/ChatRoomViewController.h              |  13 +-
     Classes/ChatRoomViewController.m              | 379 +++++++++++++++++-
     Classes/ChatRoomViewController.xib            | 262 ++++++------
     Classes/ContactDetailsViewController.xib      |  11 +-
     Classes/ImageViewerViewController.h           |  34 ++
     Classes/ImageViewerViewController.m           |  62 +++
     Classes/ImageViewerViewController.xib         | 233 +++++++++++
     Classes/LinphoneAppDelegate.h                 |   4 +-
     Classes/LinphoneAppDelegate.m                 |   4 +-
     Classes/LinphoneCoreSettingsStore.m           |  13 +-
     Classes/LinphoneManager.m                     |  36 +-
     Resources/linphonerc                          |   2 +-
     Settings/InAppSettings.bundle/Advanced.plist  |  14 +
     linphone.xcodeproj/project.pbxproj            |  36 +-
     .../liblinphone.xcodeproj/project.pbxproj     |  32 +-
     submodules/linphone                           |   2 +-
     submodules/mssilk                             |   2 +-
     18 files changed, 958 insertions(+), 187 deletions(-)
     create mode 100644 Classes/ImageViewerViewController.h
     create mode 100644 Classes/ImageViewerViewController.m
     create mode 100644 Classes/ImageViewerViewController.xib
    
    diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m
    index d06ade197..8182eca56 100644
    --- a/Classes/ChatRoomTableViewController.m
    +++ b/Classes/ChatRoomTableViewController.m
    @@ -45,7 +45,9 @@
             data = nil;
         }
     }
    -
    +- (void)viewWillAppear:(BOOL)animated {
    +	[self loadData];
    +}
     
     #pragma mark -
     
    @@ -81,7 +83,7 @@
     		[LinphoneLogger logc:LinphoneLoggerWarning format:"chat entries diesn not exixt"];
     		return;
     	}
    -	[[self tableView] reloadData]; //just reload
    +	[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:FALSE];; //just reload
     	return;
     }
     - (void)scrollToLastUnread:(BOOL)animated {
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index 82a8a2a75..edbdcd390 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -26,10 +26,16 @@
     
     #include "linphonecore.h"
     
    -@interface ChatRoomViewController : UIViewController {
    +@interface ChatRoomViewController : UIViewController {
         @private
         LinphoneChatRoom *chatRoom;
     	NSString *_remoteAddress;
    +	UIActionSheet* photoSourceSelector;
    +	NSURLConnection* uploadCnx;
    +	NSURLConnection* downloadCnx;
    +	NSString* pendingFileUrl; /*Url received from the remote party to be downloaded*/
    +	NSMutableData* downloadedData;
    +	NSInteger totalBytesExpectedToRead;
     }
     
     
    @@ -44,10 +50,15 @@
     @property (nonatomic, retain) IBOutlet UIView *chatView;
     @property (nonatomic, retain) IBOutlet UIImageView *fieldBackgroundImage;
     @property (nonatomic, copy) NSString *remoteAddress;
    +@property (nonatomic, retain) IBOutlet UIButton* pictButton;
    +@property (nonatomic, retain) IBOutlet UIButton* cancelTransfertButton;
    +@property (nonatomic, retain) IBOutlet UIProgressView* imageTransferProgressBar;
     
     - (IBAction)onBackClick:(id)event;
     - (IBAction)onEditClick:(id)event;
     - (IBAction)onMessageChange:(id)sender;
     - (IBAction)onSendClick:(id)event;
    +- (IBAction)onPictClick:(id)event;
    +- (IBAction)onTransferCancelClick:(id)event;
     
     @end
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index a144d846c..4733fca09 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -19,8 +19,13 @@
     
     #import "ChatRoomViewController.h"
     #import "PhoneMainView.h"
    -
    +#import 
     #import 
    +#import 
    +#import "ImageViewerViewController.h"
    +
    +#define FILE_DOWNLOAD_ACTION_SHEET 1
    +#define FILE_CHOOSER_ACTION_SHEET 2
     
     @implementation ChatRoomViewController
     
    @@ -35,7 +40,9 @@
     @synthesize footerView;
     @synthesize chatView;
     @synthesize fieldBackgroundImage;
    -
    +@synthesize pictButton;
    +@synthesize imageTransferProgressBar;
    +@synthesize cancelTransfertButton;
     
     #pragma mark - Lifecycle Functions
     
    @@ -63,6 +70,7 @@
     }
     
     
    +
     #pragma mark - UICompositeViewDelegate Functions
     
     static UICompositeViewDescription *compositeDescription = nil;
    @@ -92,6 +100,7 @@ static UICompositeViewDescription *compositeDescription = nil;
         // Set selected+over background: IB lack !
         [editButton setImage:[UIImage imageNamed:@"chat_ok_over.png"] 
                     forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +	[self enableTransfertView:FALSE];
     }
     
     
    @@ -120,6 +129,19 @@ static UICompositeViewDescription *compositeDescription = nil;
         
         [fieldBackgroundImage setImage:[TUNinePatchCache imageOfSize:[fieldBackgroundImage bounds].size
                                                    forNinePatchNamed:@"chat_field"]];
    +	BOOL fileSharingEnabled = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"] != NULL 
    +								&& [[[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"] length]>0 ;
    +	[pictButton setHidden:!fileSharingEnabled];
    +	
    +/*	CGRect frame = messageField.frame;
    +	if (fileSharingEnabled) {
    +		frame.origin.x=61;
    +		frame.size.width=175;
    +	} else {
    +		frame.origin.x=0;
    +		frame.size.width=175+61;
    +	}
    +	[messageField setFrame:frame];*/
     }
     
     - (void)viewWillDisappear:(BOOL)animated {
    @@ -199,13 +221,13 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     	ChatRoomViewController* thiz=(ChatRoomViewController*)ud;
     	ChatModel *chat = (ChatModel *)linphone_chat_message_get_user_data(msg); 
     	[LinphoneLogger log:LinphoneLoggerLog 
    -				 format:@"Delivery status for [%@] is [%s]",chat.message,linphone_chat_message_state_to_string(state)];
    +				 format:@"Delivery status for [%@] is [%s]",(chat.message?chat.message:@""),linphone_chat_message_state_to_string(state)];
     	[chat setState:[NSNumber numberWithInt:state]];
     	[chat update];
     	[thiz.tableController updateChatEntry:chat];
     }
     
    -- (BOOL)sendMessage:(NSString *)message {
    +- (BOOL)sendMessage:(NSString *)message withExterlBodyUrl:(NSString*) url{
         if(![LinphoneManager isLcReady]) {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot send message: Linphone core not ready"];
             return FALSE;
    @@ -215,10 +237,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
             return FALSE;
         }
         if(chatRoom == NULL) {
    -		
    -
     		chatRoom = linphone_core_create_chat_room([LinphoneManager getLc], [_remoteAddress UTF8String]);
    -		
         }
         
         // Save message in database
    @@ -232,10 +251,13 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     	[chat setState:[NSNumber numberWithInt:1]]; //INPROGRESS
         [chat create];
         [tableController addChatEntry:chat];
    -    [chat release];
    +   // [chat release]; commenting this line avoid a crash on first message sent, specially when picture
         LinphoneChatMessage* msg = linphone_chat_room_create_message(chatRoom,[message UTF8String]);
     	linphone_chat_message_set_user_data(msg,chat);
    -    linphone_chat_room_send_message2(chatRoom, msg,message_status,self);
    +    if (url) {
    +		linphone_chat_message_set_external_body_url(msg, [url UTF8String]);
    +	} 
    +	linphone_chat_room_send_message2(chatRoom, msg,message_status,self);
         return TRUE;
     }
     
    @@ -246,7 +268,8 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         //LinphoneChatRoom *room = [[[notif userInfo] objectForKey:@"room"] pointerValue];
         //NSString *message = [[notif userInfo] objectForKey:@"message"];
         LinphoneAddress *from = [[[notif userInfo] objectForKey:@"from"] pointerValue];
    -    ChatModel *chat = [[notif userInfo] objectForKey:@"chat"];
    +    
    +	ChatModel *chat = [[notif userInfo] objectForKey:@"chat"];
         if(from != NULL && chat != NULL) {
             char *fromStr = linphone_address_as_string_uri_only(from);
             if(fromStr != NULL) {
    @@ -259,7 +282,18 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
                 }
                 ms_free(fromStr);
             }
    -    } else {
    +		if ([[notif userInfo] objectForKey:@"external_body_url"]) {
    +			pendingFileUrl=[[[notif userInfo] objectForKey:@"external_body_url"] retain];
    +			UIActionSheet* new_incoming_file = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Incoming file stored to your photo library",nil)
    +																		   delegate:self 
    +																  cancelButtonTitle:NSLocalizedString(@"Ignore",nil) 
    +															 destructiveButtonTitle:nil
    +																  otherButtonTitles:NSLocalizedString(@"Accept",nil),nil]; 
    +			[new_incoming_file setTag:FILE_DOWNLOAD_ACTION_SHEET];
    +			[new_incoming_file showInView:self.view];
    +			[new_incoming_file release];
    +		}
    +	} else {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Invalid textReceivedEvent"];
         }
     }
    @@ -284,7 +318,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     }
     
     - (IBAction)onSendClick:(id)event {
    -    if([self sendMessage:[messageField text]]) {
    +    if([self sendMessage:[messageField text] withExterlBodyUrl:nil]) {
             [messageField setText:@""];
         }
     }
    @@ -297,7 +331,328 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         }
     }
     
    +- (IBAction)onPictClick:(id)event {
    +	
    +    photoSourceSelector = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Select picture source",nil)
    +													 delegate:self 
    +											cancelButtonTitle:NSLocalizedString(@"Cancel",nil) 
    +									   destructiveButtonTitle:nil
    +											otherButtonTitles:NSLocalizedString(@"Camera",nil),NSLocalizedString(@"Photo library",nil), nil];
    +    
    +    photoSourceSelector.actionSheetStyle = UIActionSheetStyleDefault;
    +	[photoSourceSelector setTag:FILE_CHOOSER_ACTION_SHEET];
    +    [photoSourceSelector showInView:self.view];
    +    [photoSourceSelector release];
     
    +	
    +}
    +- (IBAction)onTransferCancelClick:(id)event {
    +	[uploadCnx cancel];
    +	[downloadCnx cancel];
    +	[self stopUpload];
    +	[self stopDownload];
    +	[LinphoneLogger log:LinphoneLoggerLog format:@"File transfert interrupted by user "];
    +}
    +
    +-(void) enableTransfertView:(BOOL) isTranfer {
    +	if (isTranfer) {
    +		[imageTransferProgressBar setProgress:0.0];
    +	} else {
    +		//[uploadCnx cancel];
    +		
    +	}
    +	[imageTransferProgressBar setHidden:!isTranfer];
    +	[cancelTransfertButton setHidden:!isTranfer];
    +	[pictButton setEnabled:!isTranfer];
    +	[sendButton setEnabled:!isTranfer];
    +}
    +
    +-(void) startUpload {
    +	[self enableTransfertView:TRUE];
    +}
    +-(void) stopUpload {
    +	[self enableTransfertView:FALSE];
    +}
    +-(void) startDownload {
    +	[self enableTransfertView:TRUE];
    +}
    +-(void) stopDownload {
    +	[self enableTransfertView:FALSE];
    +}
    +
    +-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    +	
    +	switch (actionSheet.tag) {
    +		case FILE_CHOOSER_ACTION_SHEET: {
    +			UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
    +			switch (buttonIndex) {
    +				case 0: {
    +					if ([UIImagePickerController isSourceTypeAvailable:
    +						 UIImagePickerControllerSourceTypeCamera] == NO) {
    +						[LinphoneLogger log:LinphoneLoggerLog format:@"no camera found, using image library"];
    +					} else {
    +						mediaUI.sourceType = UIImagePickerControllerSourceTypeCamera;
    +						
    +						// Displays a control that allows the user to choose picture or
    +						// movie capture, if both are available:
    +						mediaUI.mediaTypes =
    +						[UIImagePickerController availableMediaTypesForSourceType:
    +						 UIImagePickerControllerSourceTypeCamera];
    +						
    +						// Hides the controls for moving & scaling pictures, or for
    +						// trimming movies. To instead show the controls, use YES.
    +						mediaUI.allowsEditing = NO;
    +						break;
    +					}
    +				}
    +				case 1: {
    +					
    +					mediaUI.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    +					
    +					// Displays saved pictures and movies, if both are available, from the
    +					// Camera Roll album.
    +					mediaUI.mediaTypes =
    +					[UIImagePickerController availableMediaTypesForSourceType:
    +					 UIImagePickerControllerSourceTypePhotoLibrary];
    +					
    +					// Hides the controls for moving & scaling pictures, or for
    +					// trimming movies. To instead show the controls, use YES.
    +					mediaUI.allowsEditing = NO;
    +					
    +					break;
    +				}
    +				default: 
    +					[mediaUI release];
    +					return ;break;
    +					
    +			}
    +			mediaUI.delegate = self;
    +			[self presentModalViewController: mediaUI animated: YES];
    +			break;
    +		}
    +		case FILE_DOWNLOAD_ACTION_SHEET: {
    +			switch (buttonIndex) {
    +				case 0: 
    +					[downloadCnx release];
    +					downloadCnx= [self downloadImageFrom:pendingFileUrl];
    +					[self startDownload];
    +					break;
    +				case 1: 
    +				default: {
    +					//nop
    +				}
    +			break;
    +		}
    +			break;
    +		}
    +			default: 
    +			[LinphoneLogger log:LinphoneLoggerError format:@"Unexpected action sheet result for tag [%i]",actionSheet.tag];
    +			
    +	}
    +	
    +}
    +#pragma mark - NSURLConnectionDelegate
    +- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    +	UIAlertView* errorAlert = [UIAlertView alloc];
    +	if (connection == uploadCnx) {
    +		[self stopUpload];
    +		[LinphoneLogger log:LinphoneLoggerError format:@"Cannot upload file to server [%@] because [%@]",[[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url"],[error localizedDescription]];
    +		[errorAlert	initWithTitle:NSLocalizedString(@"Tranfer error",nil)
    +						  message:NSLocalizedString(@"Cannot transfert file to remote pary",nil) 
    +						 delegate:nil 
    +				cancelButtonTitle:NSLocalizedString(@"Ok",nil) 
    +				otherButtonTitles:nil ,nil];
    +		[errorAlert show];
    +	}else if (connection == downloadCnx) {
    +		[LinphoneLogger log:LinphoneLoggerError format:@"Cannot dowanlod file from [%@] because [%@]",pendingFileUrl,[error localizedDescription]];
    +		[errorAlert	initWithTitle:NSLocalizedString(@"Tranfer error",nil)
    +						  message:NSLocalizedString(@"Cannot transfert file from remote pary",nil) 
    +						 delegate:nil 
    +				cancelButtonTitle:NSLocalizedString(@"Continue",nil) 
    +				otherButtonTitles:nil ,nil];		
    +		[errorAlert show];
    +	} else {
    +		[LinphoneLogger log:LinphoneLoggerError format:@"Unknown connection error [%@]",[error localizedDescription]];
    +	}
    +	[errorAlert release];
    +	
    +}
    +
    +-(void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite {
    +	[imageTransferProgressBar setProgress:(float)((float)totalBytesWritten/(float)totalBytesExpectedToWrite) animated:FALSE];
    +	
    +}
    +- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    +	if (connection == uploadCnx) {
    +		NSString* imageRemoteUrl=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    +		[LinphoneLogger log:LinphoneLoggerLog format:@"File can be downloaded from [%@]",imageRemoteUrl];
    +		[self sendMessage:NSLocalizedString(@"Image sent",nil) withExterlBodyUrl:imageRemoteUrl];
    +	} else if (connection == downloadCnx) {
    +		if (downloadedData == nil) downloadedData = [[NSMutableData alloc] initWithCapacity:4096];
    +		[downloadedData appendData:data];
    +		[imageTransferProgressBar setProgress:(float)((float)downloadedData.length/(float)totalBytesExpectedToRead) animated:FALSE];
    +	} else {
    +		[LinphoneLogger log:LinphoneLoggerError format:@"Unknown received value error"];
    +	}
    +}
    +- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    +	NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse *) response;
    +	int statusCode = httpResponse.statusCode;;	
    +	[LinphoneLogger log:LinphoneLoggerLog format:@"File transfert status code [%i]",statusCode];
    +	UIAlertView* errorAlert = [UIAlertView alloc];
    +	if (connection == uploadCnx) {
    +		if (statusCode == 200) {
    +			//nop
    +		} else if (statusCode >= 400) {
    +			
    +			[errorAlert 	initWithTitle:NSLocalizedString(@"Transfer error",nil)
    +													message:NSLocalizedString(@"Cannot transfert file to remote pary",nil) 
    +												   delegate:nil 
    +										  cancelButtonTitle:NSLocalizedString(@"Continue",nil) 
    +										  otherButtonTitles:nil ,nil];
    +			[errorAlert show];
    +			
    +		}
    +		
    +	} else if (connection == downloadCnx) {
    +		if (statusCode == 200) {
    +			totalBytesExpectedToRead=[response expectedContentLength];
    +		} else if (statusCode >= 400) {
    +			[errorAlert	initWithTitle:NSLocalizedString(@"Transfer error",nil)
    +													message:NSLocalizedString(@"Cannot transfert  file from remote pary",nil) 
    +												   delegate:nil 
    +										  cancelButtonTitle:NSLocalizedString(@"Continue",nil) 
    +										  otherButtonTitles:nil ,nil];	
    +			[errorAlert show];
    +		} else {
    +			//TODO
    +		}
    +		
    +	} else {
    +		//FIXE
    +	}
    +	
    +	[errorAlert release];
    +	
    +	
    +}
    +
    +- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    +	if (connection == uploadCnx) {
    +		//nothing to do [self enableTransfert:FALSE];
    +		[self stopUpload];
    +		//[uploadCnx release];
    +		uploadCnx=nil;
    +	} else if (connection == downloadCnx) {
    +		ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    +		[library writeImageDataToSavedPhotosAlbum:downloadedData 
    +										 metadata:nil
    +								  completionBlock:^(NSURL *assetURL, NSError *error){
    +									  if (error) {
    +										  [LinphoneLogger log:LinphoneLoggerError format:@"Cannot save image data downloaded  because [%@]",[error localizedDescription]];
    +									  } else {
    +										  [LinphoneLogger log:LinphoneLoggerLog format:@"Image saved to [%@]",[assetURL absoluteString]];
    +									  }
    +									  
    +									  ImageViewerViewController* imageView = [[ImageViewerViewController alloc ]initWithNibName:@"ImageViewerViewController" bundle:[NSBundle mainBundle]];
    +									  [imageView setImageToDisplay:[UIImage imageWithData:downloadedData]];
    +									  [self presentModalViewController: imageView animated: YES];
    +									  [downloadedData release];
    +									  downloadedData=nil;
    +								  }];
    +		
    +		
    +		[library release];
    +		[self stopDownload];
    +		//[downloadCnx release];
    +		downloadCnx=nil;
    +	}
    +}
    +-(NSURLConnection*) downloadImageFrom:(NSString*) address {
    +	[LinphoneLogger log:LinphoneLoggerLog format:@"downloading  [%@]",address];
    +	NSURL* url = [NSURL URLWithString: address ];
    +	NSURLRequest* request = [NSURLRequest requestWithURL:url
    +											 cachePolicy:NSURLRequestUseProtocolCachePolicy
    +										 timeoutInterval:60.0];
    +	
    +	return [[NSURLConnection alloc] initWithRequest:request delegate: self];
    +}
    +
    +
    +-(NSURLConnection*) uploadImage:(UIImage*) image Named:(NSString*) name {
    +	/*
    +	 turning the image into a NSData object
    +	 getting the image back out of the UIImageView
    +	 setting the quality to 90
    +	 */
    +	NSData *imageData = UIImageJPEGRepresentation(image, 80);
    +	// setting up the URL to post to
    +	NSString *urlString = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"];
    +	
    +	// setting up the request object now
    +	NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    +	[request setURL:[NSURL URLWithString:urlString]];
    +	[request setHTTPMethod:@"POST"];
    +	
    +	/*
    +	 add some header info now
    +	 we always need a boundary when we post a file
    +	 also we need to set the content type
    +	 
    +	 You might want to generate a random boundary.. this is just the same 
    +	 as my output from wireshark on a valid html post
    +	 */
    +	NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
    +	NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
    +	[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
    +	
    +	/*
    +	 now lets create the body of the post
    +	 */
    +	NSMutableData *body = [NSMutableData data];
    +	[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];	
    +	[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n",name] dataUsingEncoding:NSUTF8StringEncoding]];
    +	[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
    +	[body appendData:[NSData dataWithData:imageData]];
    +	[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    +	// setting the body of the post to the reqeust
    +	[request setHTTPBody:body];
    +	
    +	return [NSURLConnection connectionWithRequest:(NSURLRequest *)request 
    +										 delegate:self];
    +}
    +
    +#pragma mark UIImagePickerControllerDelegate
    +// For responding to the user tapping Cancel.
    +- (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker {
    +    [self dismissModalViewControllerAnimated: YES];
    +    [picker release];
    +}
    +
    +- (void) imagePickerController: (UIImagePickerController *) picker
    + didFinishPickingMediaWithInfo: (NSDictionary *) info {
    +	
    +    NSURL *imageURL = [info valueForKey: UIImagePickerControllerReferenceURL];
    +	UIImage* imageToUse = (UIImage *) [info objectForKey: UIImagePickerControllerOriginalImage];
    +	NSString* imageName;
    +	if (imageURL) {
    +		// extract id from asset-url ex: assets-library://asset/asset.JPG?id=1645156-6151-1513&ext=JPG
    +		NSArray *parameters = [[imageURL query] componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"=&"]];
    +		for (int i = 0; i < [parameters count]; i=i+2) {
    +			if ([(NSString*)[parameters objectAtIndex:i] isEqualToString:@"id"]) {
    +				imageName=[NSString stringWithFormat:@"%@.jpg",(NSString*)[parameters objectAtIndex:i+1]];
    +			}
    +		}
    +	} else {
    +		// must be "unique"
    +		imageName=[NSString stringWithFormat:@"%i.jpg",[imageToUse hash]];
    +	}
    +	uploadCnx =[self uploadImage:imageToUse Named: imageName];
    +	[self startUpload];
    +		
    +    [picker.presentingViewController dismissModalViewControllerAnimated: YES];
    +    [picker release];
    +}
     #pragma mark - Keyboard Event Functions
     
     - (void)keyboardWillHide:(NSNotification *)notif {
    diff --git a/Classes/ChatRoomViewController.xib b/Classes/ChatRoomViewController.xib
    index fa18a7f31..8bfc3abc7 100644
    --- a/Classes/ChatRoomViewController.xib
    +++ b/Classes/ChatRoomViewController.xib
    @@ -15,6 +15,7 @@
     			IBUIImageView
     			IBUILabel
     			IBProxyObject
    +			IBUIProgressView
     			IBUITextField
     			IBUITableViewController
     			IBUITableView
    @@ -54,7 +55,6 @@
     										292
     										{{-13, -5}, {131, 107}}
     										
    -										
     										
     										_NS:9
     										NO
    @@ -69,7 +69,6 @@
     										292
     										{{20, 6}, {65, 65}}
     										
    -										
     										
     										_NS:9
     										NO
    @@ -84,7 +83,6 @@
     										290
     										{{101, 37}, {199, 43}}
     										
    -										
     										
     										_NS:9
     										NO
    @@ -113,7 +111,6 @@
     								
     								{320, 80}
     								
    -								
     								
     								_NS:9
     								
    @@ -128,10 +125,9 @@
     								274
     								{{0, 80}, {320, 277}}
     								
    -								
     								
     								_NS:9
    -								
    +								
     									3
     									MQA
     								
    @@ -153,8 +149,7 @@
     										257
     										{{250, 0}, {70, 59}}
     										
    -										
    -										
    +										
     										_NS:9
     										NO
     										
    @@ -195,9 +190,8 @@
     									
     										
     										258
    -										{250, 59}
    +										{{56, 0}, {194, 59}}
     										
    -										
     										
     										_NS:9
     										NO
    @@ -210,9 +204,8 @@
     									
     										
     										-2147483390
    -										{{10, 10}, {230, 39}}
    +										{{61, 10}, {189, 39}}
     										
    -										
     										
     										_NS:9
     										NO
    @@ -247,10 +240,9 @@
     									
     										
     										292
    -										{{10, 10}, {230, 39}}
    +										{{61, 10}, {175, 39}}
     										
    -										
    -										
    +										
     										_NS:9
     										YES
     										YES
    @@ -267,11 +259,68 @@
     										
     										
     									
    +									
    +										
    +										292
    +										{{2, 12}, {53, 37}}
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										Pict
    +										
    +										
    +											1
    +											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +										
    +										
    +										
    +											NSImage
    +											background.png
    +										
    +										
    +										
    +									
    +									
    +										
    +										-2147483356
    +										{{72, 25}, {163, 9}}
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +									
    +									
    +										
    +										292
    +										{{258, 11}, {59, 37}}
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										1
    +										Cancel
    +										
    +										
    +											1
    +											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +										
    +										
    +										
    +										
    +										
    +									
     								
     								{{0, 357}, {320, 59}}
     								
    -								
    -								
    +								
     								_NS:9
     								
     									3
    @@ -283,7 +332,6 @@
     						
     						{{0, 44}, {320, 416}}
     						
    -						
     						
     						_NS:9
     						
    @@ -302,7 +350,6 @@
     								290
     								{320, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -317,7 +364,6 @@
     								292
     								{160, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -345,7 +391,6 @@
     								289
     								{{160, 0}, {160, 44}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -375,7 +420,6 @@
     						
     						{320, 44}
     						
    -						
     						
     						_NS:9
     						
    @@ -388,7 +432,6 @@
     				
     				{320, 460}
     				
    -				
     				
     				_NS:9
     				
    @@ -495,6 +538,30 @@
     					
     					57
     				
    +				
    +					
    +						pictButton
    +						
    +						
    +					
    +					59
    +				
    +				
    +					
    +						cancelTransfertButton
    +						
    +						
    +					
    +					66
    +				
    +				
    +					
    +						imageTransferProgressBar
    +						
    +						
    +					
    +					68
    +				
     				
     					
     						dataSource
    @@ -546,6 +613,24 @@
     					
     					33
     				
    +				
    +					
    +						onPictClick:
    +						
    +						
    +						7
    +					
    +					60
    +				
    +				
    +					
    +						onTransferCancelClick:
    +						
    +						
    +						7
    +					
    +					69
    +				
     			
     			
     				
    @@ -664,6 +749,9 @@
     							
     							
     							
    +							
    +							
    +							
     						
     						
     						footerView
    @@ -692,6 +780,21 @@
     						
     						messageFieldOld
     					
    +					
    +						58
    +						
    +						
    +					
    +					
    +						62
    +						
    +						
    +					
    +					
    +						64
    +						
    +						
    +					
     				
     			
     			
    @@ -716,7 +819,10 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -726,114 +832,9 @@
     			
     			
     			
    -			57
    -		
    -		
    -			
    -				
    -					ChatRoomTableViewController
    -					UITableViewController
    -					
    -						IBProjectSource
    -						./Classes/ChatRoomTableViewController.h
    -					
    -				
    -				
    -					ChatRoomViewController
    -					UIViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onBackClick:
    -							id
    -						
    -						
    -							onEditClick:
    -							id
    -						
    -						
    -							onMessageChange:
    -							id
    -						
    -						
    -							onSendClick:
    -							id
    -						
    -					
    -					
    -						UILabel
    -						UIImageView
    -						UIView
    -						UIToggleButton
    -						UIImageView
    -						UIView
    -						UIView
    -						UITextView
    -						UIButton
    -						ChatRoomTableViewController
    -					
    -					
    -						
    -							addressLabel
    -							UILabel
    -						
    -						
    -							avatarImage
    -							UIImageView
    -						
    -						
    -							chatView
    -							UIView
    -						
    -						
    -							editButton
    -							UIToggleButton
    -						
    -						
    -							fieldBackgroundImage
    -							UIImageView
    -						
    -						
    -							footerView
    -							UIView
    -						
    -						
    -							headerView
    -							UIView
    -						
    -						
    -							messageField
    -							UITextView
    -						
    -						
    -							sendButton
    -							UIButton
    -						
    -						
    -							tableController
    -							ChatRoomTableViewController
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/ChatRoomViewController.h
    -					
    -				
    -				
    -					UIToggleButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UIToggleButton.h
    -					
    -				
    -			
    +			69
     		
    +		
     		0
     		IBCocoaTouchFramework
     		
    @@ -845,6 +846,7 @@
     		
     			{262, 214}
     			{131, 131}
    +			{640, 523}
     			{320, 88}
     			{320, 88}
     			{320, 88}
    diff --git a/Classes/ContactDetailsViewController.xib b/Classes/ContactDetailsViewController.xib
    index 6bb560020..56649427c 100644
    --- a/Classes/ContactDetailsViewController.xib
    +++ b/Classes/ContactDetailsViewController.xib
    @@ -36,7 +36,7 @@
     				IBCocoaTouchFramework
     			
     			
    -				
    +				
     				274
     				
     					
    @@ -48,7 +48,6 @@
     								290
     								{320, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -63,7 +62,6 @@
     								292
     								{160, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -101,7 +99,6 @@
     								-2147483356
     								{160, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -129,7 +126,6 @@
     								289
     								{{160, 0}, {160, 44}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -159,7 +155,6 @@
     						
     						{320, 44}
     						
    -						
     						
     						_NS:9
     						
    @@ -176,8 +171,6 @@
     						306
     						{{0, 44}, {320, 416}}
     						
    -						
    -						
     						_NS:9
     						
     							10
    @@ -260,8 +253,6 @@ AAgACAAIAAEAAQABAAE
     					
     				
     				{320, 460}
    -				
    -				
     				
     				
     				IBCocoaTouchFramework
    diff --git a/Classes/ImageViewerViewController.h b/Classes/ImageViewerViewController.h
    new file mode 100644
    index 000000000..24d29ac0e
    --- /dev/null
    +++ b/Classes/ImageViewerViewController.h
    @@ -0,0 +1,34 @@
    +/* ImageViewerViewController.h
    + *
    + * Copyright (C) 2012  Belledonne Comunications, Grenoble, France
    + *
    + *  This program is free software; you can redistribute it and/or modify
    + *  it under the terms of the GNU General Public License as published by
    + *  the Free Software Foundation; either version 2 of the License, or   
    + *  (at your option) any later version.                                 
    + *                                                                      
    + *  This program is distributed in the hope that it will be useful,     
    + *  but WITHOUT ANY WARRANTY; without even the implied warranty of      
    + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       
    + *  GNU Library General Public License for more details.                
    + *                                                                      
    + *  You should have received a copy of the GNU General Public License   
    + *  along with this program; if not, write to the Free Software         
    + *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    + */ 
    +
    +#import 
    +
    +@interface ImageViewerViewController : UIViewController {
    +	
    +}
    +
    +
    +
    +@property (nonatomic, retain) IBOutlet UIImageView *imageView;
    +@property (nonatomic, retain) UIImage  *imageToDisplay;
    +@property (nonatomic, retain) IBOutlet UIButton *backButton;
    +
    +
    +- (IBAction)onBackClick:(id)sender;
    +@end
    \ No newline at end of file
    diff --git a/Classes/ImageViewerViewController.m b/Classes/ImageViewerViewController.m
    new file mode 100644
    index 000000000..eb3bcd0ce
    --- /dev/null
    +++ b/Classes/ImageViewerViewController.m
    @@ -0,0 +1,62 @@
    +/* ImageViewerViewController.h
    + *
    + * Copyright (C) 2012  Belledonne Comunications, Grenoble, France
    + *
    + *  This program is free software; you can redistribute it and/or modify
    + *  it under the terms of the GNU General Public License as published by
    + *  the Free Software Foundation; either version 2 of the License, or   
    + *  (at your option) any later version.                                 
    + *                                                                      
    + *  This program is distributed in the hope that it will be useful,     
    + *  but WITHOUT ANY WARRANTY; without even the implied warranty of      
    + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       
    + *  GNU Library General Public License for more details.                
    + *                                                                      
    + *  You should have received a copy of the GNU General Public License   
    + *  along with this program; if not, write to the Free Software         
    + *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    + */ 
    +
    +
    +#import "ImageViewerViewController.h"
    +
    +@interface ImageViewerViewController ()
    +
    +@end
    +
    +@implementation ImageViewerViewController
    +@synthesize imageView;
    +@synthesize backButton;
    +@synthesize imageToDisplay;
    +
    +- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    +{
    +    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    +    if (self) {
    +        // Custom initialization
    +    }
    +    return self;
    +}
    +
    +- (void)viewDidLoad
    +{
    +    [super viewDidLoad];
    +    [imageView setImage:imageToDisplay];
    +}
    +
    +- (void)viewDidUnload
    +{
    +    [super viewDidUnload];
    +    // Release any retained subviews of the main view.
    +    // e.g. self.myOutlet = nil;
    +}
    +
    +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    +{
    +    return (interfaceOrientation == UIInterfaceOrientationPortrait);
    +}
    +
    +- (IBAction)onBackClick:(id)sender {
    +	[self.presentingViewController dismissModalViewControllerAnimated: YES];
    +}
    +@end
    diff --git a/Classes/ImageViewerViewController.xib b/Classes/ImageViewerViewController.xib
    new file mode 100644
    index 000000000..488929954
    --- /dev/null
    +++ b/Classes/ImageViewerViewController.xib
    @@ -0,0 +1,233 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2182
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1181
    +		
    +		
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						274
    +						{{0, 44}, {320, 416}}
    +						
    +						_NS:9
    +						4
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						292
    +						{320, 44}
    +						
    +						
    +						_NS:9
    +						NO
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							background.png
    +						
    +					
    +					
    +						
    +						292
    +						{{235, 0}, {80, 44}}
    +						
    +						
    +						_NS:9
    +						NO
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						
    +							3
    +							MQA
    +						
    +						
    +							1
    +							MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +						
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							chat_back_default.png
    +						
    +						
    +							NSImage
    +							chat_back_over.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
    +				
    +				{{0, 20}, {320, 460}}
    +				
    +				
    +				
    +					3
    +					MQA
    +					
    +						2
    +					
    +				
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					3
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					8
    +				
    +				
    +					
    +						imageView
    +						
    +						
    +					
    +					9
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					10
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						1
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +					
    +					
    +						6
    +						
    +						
    +					
    +					
    +						7
    +						
    +						
    +					
    +				
    +			
    +			
    +				ImageViewerViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			10
    +		
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{640, 523}
    +			{320, 88}
    +			{320, 88}
    +		
    +		1181
    +	
    +
    diff --git a/Classes/LinphoneAppDelegate.h b/Classes/LinphoneAppDelegate.h
    index 2983bccb0..6ab450445 100644
    --- a/Classes/LinphoneAppDelegate.h
    +++ b/Classes/LinphoneAppDelegate.h
    @@ -28,9 +28,11 @@
     @end
     
     @interface LinphoneAppDelegate : NSObject  {
    -    UIWindow *window;
    +    @private
    +	UIWindow *window;
         CTCallCenter* callCenter;
         BOOL started;
    +	int savedMaxCall;
     }
     
     @property (assign) BOOL started;
    diff --git a/Classes/LinphoneAppDelegate.m b/Classes/LinphoneAppDelegate.m
    index 5f75c7652..3e8cc1758 100644
    --- a/Classes/LinphoneAppDelegate.m
    +++ b/Classes/LinphoneAppDelegate.m
    @@ -248,12 +248,12 @@
     #pragma mark - PushNotification Functions
     
     - (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {
    -    [LinphoneLogger log:LinphoneLoggerDebug format:@"PushNotification: Token %@", deviceToken];
    +    [LinphoneLogger log:LinphoneLoggerLog format:@"PushNotification: Token %@", deviceToken];
         [[LinphoneManager instance] setPushNotificationToken:deviceToken];
     }
     
     - (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error {
    -    [LinphoneLogger log:LinphoneLoggerDebug format:@"PushNotification: Error %@", error];
    +    [LinphoneLogger log:LinphoneLoggerError format:@"PushNotification: Error %@", [error localizedDescription]];
         [[LinphoneManager instance] setPushNotificationToken:nil];
     }
     
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index 655f6859e..6a820991e 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -102,7 +102,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     			
     			[self setString: linphone_address_get_username(addr) forKey:@"username_preference"];
     			[self setString: linphone_address_get_domain(addr) forKey:@"domain_preference"];
    -            [self setInteger: lp_config_get_int(linphone_core_get_config(lc),"default_values","reg_expires",600) forKey:@"expire_preference"];
    +            [self setInteger: linphone_proxy_config_get_expires(cfg) forKey:@"expire_preference"];
     			[self setString:linphone_proxy_config_get_dial_prefix(cfg) forKey:@"prefix_preference"];
     			if (strcmp(linphone_address_get_domain(addr),linphone_address_get_domain(proxy_addr))!=0
     				|| port!=NULL){
    @@ -119,6 +119,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     			[self setBool:linphone_proxy_config_get_dial_escape_plus(cfg) forKey:@"substitute_+_by_00_preference"];
     			
     		}
    +	} else {
    +		[self setInteger: lp_config_get_int(linphone_core_get_config(lc),"default_values","reg_expires",600) forKey:@"expire_preference"];
     	}
         {
             LinphoneAddress *parsed = linphone_core_get_primary_contact_parsed(lc);
    @@ -191,7 +193,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","animations_preference", 1) forKey:@"animations_preference"];
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference", 0) forKey:@"check_config_disable_preference"];
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","wifi_only_preference", 0) forKey:@"wifi_only_preference"];
    -    
    +	[self setString: lp_config_get_string(linphone_core_get_config(lc),"app","file_upload_url_preference",NULL) forKey:@"file_upload_url_preference"];
    +	
     	/*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/
     	BOOL start_at_boot = TRUE;
     	if ([[NSUserDefaults standardUserDefaults] objectForKey:@"start_at_boot_preference"]!=Nil)
    @@ -355,7 +358,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		
     
     		int expire = [self integerForKey:@"expire_preference"];
    -		lp_config_set_int(linphone_core_get_config(lc),"default_values","reg_expires",expire);
    +		linphone_proxy_config_expires(proxyCfg,expire);
     		
     		BOOL isWifiOnly = [self boolForKey:@"wifi_only_preference"];
     		
    @@ -505,6 +508,10 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
         
         BOOL animations = [self boolForKey:@"animations_preference"];
     	lp_config_set_int(linphone_core_get_config(lc),"app","animations_preference", animations);
    +	NSString*  file_upload_url= [self stringForKey:@"file_upload_url_preference"];
    +	[[LinphoneManager instance] lpConfigSetString:file_upload_url forKey:@"file_upload_url_preference"];
    +	
    +
     	
     	/*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/
     	BOOL start_at_boot = [self boolForKey:@"start_at_boot_preference"];
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index a2140d4ad..37782fdcc 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -403,9 +403,9 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo
     
     #pragma mark - Text Received Functions
     
    -- (void)onTextReceived:(LinphoneCore *)lc room:(LinphoneChatRoom *)room from:(const LinphoneAddress *)from message:(const char *)message {
    +- (void)onMessageReceived:(LinphoneCore *)lc room:(LinphoneChatRoom *)room  message:(LinphoneChatMessage*)msg {
         
    -    char *fromStr = linphone_address_as_string_uri_only(from);
    +    char *fromStr = linphone_address_as_string_uri_only(linphone_chat_message_get_from(msg));
         if(fromStr == NULL)
             return;
         
    @@ -413,27 +413,35 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo
         ChatModel *chat = [[ChatModel alloc] init];
         [chat setLocalContact:@""];
         [chat setRemoteContact:[NSString stringWithUTF8String:fromStr]];
    -    [chat setMessage:[NSString stringWithUTF8String:message]];
    -    [chat setDirection:[NSNumber numberWithInt:1]];
    +    if (linphone_chat_message_get_external_body_url(msg)) {
    +		[chat setMessage:NSLocalizedString(@"Incoming file",nil)];
    +	} else {
    +		[chat setMessage:[NSString stringWithUTF8String:linphone_chat_message_get_text(msg)]];
    +    }
    +	[chat setDirection:[NSNumber numberWithInt:1]];
         [chat setTime:[NSDate date]];
         [chat setRead:[NSNumber numberWithInt:0]];
         [chat create];
         
         ms_free(fromStr);
    -    
    +    NSString* ext_body_url=nil;
    +	if (linphone_chat_message_get_external_body_url(msg)) {
    +		ext_body_url=[NSString stringWithUTF8String:linphone_chat_message_get_external_body_url(msg)];
    +	}
         // Post event
         NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
    -                           [NSValue valueWithPointer:room], @"room", 
    -                           [NSValue valueWithPointer:from], @"from",
    -                           [NSString stringWithUTF8String:message], @"message", 
    -                           chat, @"chat", 
    +							[NSValue valueWithPointer:room], @"room", 
    +							[NSValue valueWithPointer:linphone_chat_message_get_from(msg)], @"from",
    +							chat.message, @"message", 
    +							chat, @"chat",
    +							ext_body_url,@"external_body_url",
                                nil];
         [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneTextReceived object:self userInfo:dict];
         [chat release];
     }
     
    -static void linphone_iphone_text_received(LinphoneCore *lc, LinphoneChatRoom *room, const LinphoneAddress *from, const char *message) {
    -    [(LinphoneManager*)linphone_core_get_user_data(lc) onTextReceived:lc room:room from:from message:message];
    +static void linphone_iphone_message_received(LinphoneCore *lc, LinphoneChatRoom *room, LinphoneChatMessage *message) {
    +    [(LinphoneManager*)linphone_core_get_user_data(lc) onMessageReceived:lc room:room message:message];
     }
     
     
    @@ -570,7 +578,8 @@ static LinphoneCoreVTable linphonec_vtable = {
     	.display_message=linphone_iphone_log,
     	.display_warning=linphone_iphone_log,
     	.display_url=NULL,
    -	.text_received=linphone_iphone_text_received,
    +	.text_received=NULL,
    +	.message_received=linphone_iphone_message_received,
     	.dtmf_received=NULL,
         .transfer_state_changed=linphone_iphone_transfer_state_changed
     };
    @@ -1066,7 +1075,8 @@ static LinphoneCoreVTable linphonec_vtable = {
     
     
     -(void)lpConfigSetString:(NSString*) value forKey:(NSString*) key {
    -	lp_config_set_string(linphone_core_get_config(theLinphoneCore),"app",value?[key UTF8String]:NULL, [value UTF8String]);
    +	if (!key) return;
    +	lp_config_set_string(linphone_core_get_config(theLinphoneCore),"app",[key UTF8String], value?[value UTF8String]:NULL);
     }
     -(NSString*)lpConfigStringForKey:(NSString*) key {
     	if (!theLinphoneCore) {
    diff --git a/Resources/linphonerc b/Resources/linphonerc
    index 5057f2f02..26241fa72 100644
    --- a/Resources/linphonerc
    +++ b/Resources/linphonerc
    @@ -21,4 +21,4 @@ display_filter_auto_rotate=1
     
     
     [default_values]
    -reg_expires=600
    \ No newline at end of file
    +reg_expires=610
    \ No newline at end of file
    diff --git a/Settings/InAppSettings.bundle/Advanced.plist b/Settings/InAppSettings.bundle/Advanced.plist
    index 5daa482cb..fbab84642 100644
    --- a/Settings/InAppSettings.bundle/Advanced.plist
    +++ b/Settings/InAppSettings.bundle/Advanced.plist
    @@ -156,6 +156,20 @@
     			Type
     			PSTextFieldSpecifier
     		
    +		
    +			Type
    +			PSGroupSpecifier
    +			Title
    +			
    +		
    +		
    +			Type
    +			PSTextFieldSpecifier
    +			Title
    +			sharing server
    +			Key
    +			file_upload_url_preference
    +		
     	
     
     
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index 6a3eca7ba..376690237 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -42,6 +42,13 @@
     		2234C8EE15EE744200E18E83 /* chat_message_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8ED15EE744200E18E83 /* chat_message_inprogress.png */; };
     		2234C8EF15EE744200E18E83 /* chat_message_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8ED15EE744200E18E83 /* chat_message_inprogress.png */; };
     		2237D4091084D7A9001383EE /* ring.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* ring.wav */; };
    +		22405EEB16006F0800B92522 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EE916006F0700B92522 /* libmediastreamer_base.a */; };
    +		22405EEC16006F0800B92522 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EEA16006F0700B92522 /* libmediastreamer_voip.a */; };
    +		22405EEE1600B4E400B92522 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EED1600B4E400B92522 /* AssetsLibrary.framework */; };
    +		22405F001601C19200B92522 /* ImageViewerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22405EFE1601C19100B92522 /* ImageViewerViewController.m */; };
    +		22405F011601C19200B92522 /* ImageViewerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22405EFE1601C19100B92522 /* ImageViewerViewController.m */; };
    +		22405F021601C19200B92522 /* ImageViewerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22405EFF1601C19100B92522 /* ImageViewerViewController.xib */; };
    +		22405F031601C19200B92522 /* ImageViewerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22405EFF1601C19100B92522 /* ImageViewerViewController.xib */; };
     		2242E313125235120061DDCE /* ring.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* ring.caf */; };
     		224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
     		2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; };
    @@ -53,6 +60,7 @@
     		2264B6D211200342002C2C53 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2264B6D111200342002C2C53 /* SystemConfiguration.framework */; };
     		226CDADF14E2D0B800513B67 /* libbcg729.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226CDADD14E2D0B800513B67 /* libbcg729.a */; };
     		226CDAE014E2D0B800513B67 /* libmsbcg729.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226CDADE14E2D0B800513B67 /* libmsbcg729.a */; };
    +		226EF06C15FA256B005865C7 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 226EF06B15FA256B005865C7 /* MobileCoreServices.framework */; };
     		226F2ED61344B0EF00F6EF27 /* libopencore-amrwb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED31344B0EF00F6EF27 /* libopencore-amrwb.a */; };
     		226F2ED71344B0EF00F6EF27 /* libopencore-amrnb.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED41344B0EF00F6EF27 /* libopencore-amrnb.a */; };
     		226F2ED81344B0EF00F6EF27 /* libmsamr.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 226F2ED51344B0EF00F6EF27 /* libmsamr.a */; };
    @@ -1133,7 +1141,6 @@
     		D3F9A9EE15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; };
     		D3F9A9EF15AF277E0045320F /* UACellBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D3F9A9ED15AF277D0045320F /* UACellBackgroundView.m */; };
     		F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; };
    -		F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; };
     /* End PBXBuildFile section */
     
     /* Begin PBXContainerItemProxy section */
    @@ -1348,6 +1355,12 @@
     		2234C8E815EE2F7F00E18E83 /* chat_message_not_delivered.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_message_not_delivered.png; path = Resources/chat_message_not_delivered.png; sourceTree = ""; };
     		2234C8ED15EE744200E18E83 /* chat_message_inprogress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_message_inprogress.png; path = Resources/chat_message_inprogress.png; sourceTree = ""; };
     		2237D4081084D7A9001383EE /* ring.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = ring.wav; path = Resources/ring.wav; sourceTree = ""; };
    +		22405EE916006F0700B92522 /* libmediastreamer_base.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_base.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_base.a"; sourceTree = ""; };
    +		22405EEA16006F0700B92522 /* libmediastreamer_voip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_voip.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_voip.a"; sourceTree = ""; };
    +		22405EED1600B4E400B92522 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; };
    +		22405EFD1601C19000B92522 /* ImageViewerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageViewerViewController.h; sourceTree = ""; };
    +		22405EFE1601C19100B92522 /* ImageViewerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageViewerViewController.m; sourceTree = ""; };
    +		22405EFF1601C19100B92522 /* ImageViewerViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ImageViewerViewController.xib; sourceTree = ""; };
     		2242E312125235120061DDCE /* ring.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = ring.caf; path = Resources/ring.caf; sourceTree = ""; };
     		224567C1107B968500F10948 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
     		2248E90C12F7E4CF00220D9C /* UIDigitButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDigitButton.h; sourceTree = ""; };
    @@ -1360,6 +1373,7 @@
     		2264B6D111200342002C2C53 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
     		226CDADD14E2D0B800513B67 /* libbcg729.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libbcg729.a; path = "liblinphone-sdk/apple-darwin/lib/libbcg729.a"; sourceTree = ""; };
     		226CDADE14E2D0B800513B67 /* libmsbcg729.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsbcg729.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsbcg729.a"; sourceTree = ""; };
    +		226EF06B15FA256B005865C7 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
     		226F2ED31344B0EF00F6EF27 /* libopencore-amrwb.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libopencore-amrwb.a"; path = "liblinphone-sdk/apple-darwin/lib/libopencore-amrwb.a"; sourceTree = ""; };
     		226F2ED41344B0EF00F6EF27 /* libopencore-amrnb.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libopencore-amrnb.a"; path = "liblinphone-sdk/apple-darwin/lib/libopencore-amrnb.a"; sourceTree = ""; };
     		226F2ED51344B0EF00F6EF27 /* libmsamr.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmsamr.a; path = "liblinphone-sdk/apple-darwin/lib/mediastreamer/plugins/libmsamr.a"; sourceTree = ""; };
    @@ -2050,6 +2064,10 @@
     			isa = PBXFrameworksBuildPhase;
     			buildActionMask = 2147483647;
     			files = (
    +				22405EEE1600B4E400B92522 /* AssetsLibrary.framework in Frameworks */,
    +				22405EEB16006F0800B92522 /* libmediastreamer_base.a in Frameworks */,
    +				22405EEC16006F0800B92522 /* libmediastreamer_voip.a in Frameworks */,
    +				226EF06C15FA256B005865C7 /* MobileCoreServices.framework in Frameworks */,
     				22B5F03510CE6B2F00777D97 /* AddressBook.framework in Frameworks */,
     				22B5EFA310CE50BD00777D97 /* AddressBookUI.framework in Frameworks */,
     				2274402F106F335E006EC466 /* AudioToolbox.framework in Frameworks */,
    @@ -2078,7 +2096,6 @@
     				220FAD3210765B400068D98F /* libgsm.a in Frameworks */,
     				223148E41178A08200637D6A /* libilbc.a in Frameworks */,
     				F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */,
    -				F476004C147AAF4600FFF19B /* libmediastreamer.a in Frameworks */,
     				226F2ED81344B0EF00F6EF27 /* libmsamr.a in Frameworks */,
     				223148E61178A09900637D6A /* libmsilbc.a in Frameworks */,
     				226183B0147259670037138E /* libmssilk.a in Frameworks */,
    @@ -2229,6 +2246,9 @@
     				D350F20B15A43BB100149E54 /* WizardViewController.h */,
     				D350F20C15A43BB100149E54 /* WizardViewController.m */,
     				D350F20D15A43BB100149E54 /* WizardViewController.xib */,
    +				22405EFD1601C19000B92522 /* ImageViewerViewController.h */,
    +				22405EFE1601C19100B92522 /* ImageViewerViewController.m */,
    +				22405EFF1601C19100B92522 /* ImageViewerViewController.xib */,
     			);
     			path = Classes;
     			sourceTree = "";
    @@ -2590,6 +2610,10 @@
     		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
     			isa = PBXGroup;
     			children = (
    +				22405EED1600B4E400B92522 /* AssetsLibrary.framework */,
    +				22405EE916006F0700B92522 /* libmediastreamer_base.a */,
    +				22405EEA16006F0700B92522 /* libmediastreamer_voip.a */,
    +				226EF06B15FA256B005865C7 /* MobileCoreServices.framework */,
     				2258633C11410BAC00C5A737 /* README */,
     				22276E8013C73D3100210156 /* libavcodec.a */,
     				22276E8113C73D3100210156 /* libavutil.a */,
    @@ -3775,6 +3799,7 @@
     				2234C8E915EE2F7F00E18E83 /* chat_message_delivered.png in Resources */,
     				2234C8EB15EE2F7F00E18E83 /* chat_message_not_delivered.png in Resources */,
     				2234C8EE15EE744200E18E83 /* chat_message_inprogress.png in Resources */,
    +				22405F021601C19200B92522 /* ImageViewerViewController.xib in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4220,6 +4245,7 @@
     				2234C8EA15EE2F7F00E18E83 /* chat_message_delivered.png in Resources */,
     				2234C8EC15EE2F7F00E18E83 /* chat_message_not_delivered.png in Resources */,
     				2234C8EF15EE744200E18E83 /* chat_message_inprogress.png in Resources */,
    +				22405F031601C19200B92522 /* ImageViewerViewController.xib in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4342,6 +4368,7 @@
     				D380800515C28A7A005BE9BC /* UILinphone.m in Sources */,
     				D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
     				D378AB2A15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
    +				22405F001601C19200B92522 /* ImageViewerViewController.m in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4432,6 +4459,7 @@
     				D380800615C28A7A005BE9BC /* UILinphone.m in Sources */,
     				D380801415C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
     				D378AB2B15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
    +				22405F011601C19200B92522 /* ImageViewerViewController.m in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4491,6 +4519,7 @@
     					HAVE_SILK,
     					DEBUG,
     				);
    +				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
     				HEADER_SEARCH_PATHS = (
     					submodules/linphone/coreapi,
     					submodules/linphone/mediastreamer2/include,
    @@ -4564,6 +4593,7 @@
     					HAVE_X264,
     					HAVE_SILK,
     				);
    +				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
     				HEADER_SEARCH_PATHS = (
     					submodules/linphone/coreapi,
     					submodules/linphone/mediastreamer2/include,
    @@ -4831,6 +4861,7 @@
     					HAVE_X264,
     					HAVE_SILK,
     				);
    +				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
     				HEADER_SEARCH_PATHS = (
     					submodules/linphone/coreapi,
     					submodules/linphone/mediastreamer2/include,
    @@ -4904,6 +4935,7 @@
     					HAVE_X264,
     					HAVE_SILK,
     				);
    +				GCC_TREAT_WARNINGS_AS_ERRORS = YES;
     				HEADER_SEARCH_PATHS = (
     					submodules/linphone/coreapi,
     					submodules/linphone/mediastreamer2/include,
    diff --git a/submodules/liblinphone.xcodeproj/project.pbxproj b/submodules/liblinphone.xcodeproj/project.pbxproj
    index 6b9fe6cde..52ba9c37e 100644
    --- a/submodules/liblinphone.xcodeproj/project.pbxproj
    +++ b/submodules/liblinphone.xcodeproj/project.pbxproj
    @@ -29,7 +29,6 @@
     		221DCB6E153584410025E54D /* yuv2rgb.vs in Sources */ = {isa = PBXBuildFile; fileRef = 221DCB6B153584410025E54D /* yuv2rgb.vs */; };
     		221DCB6F153584410025E54D /* yuv2rgb.vs in Sources */ = {isa = PBXBuildFile; fileRef = 221DCB6B153584410025E54D /* yuv2rgb.vs */; };
     		221F58A013AB50F800D603C9 /* CoreMedia.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 221F589F13AB50F800D603C9 /* CoreMedia.framework */; };
    -		221F58A413AB708C00D603C9 /* alldescs.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58A313AB708C00D603C9 /* alldescs.h */; };
     		221F58E413AF44B300D603C9 /* scaler.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58E313AF44B300D603C9 /* scaler.h */; };
     		222CA63211F6CF7600621220 /* allfilters.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5BE11F6CF7600621220 /* allfilters.h */; };
     		222CA63311F6CF7600621220 /* dsptools.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA5BF11F6CF7600621220 /* dsptools.h */; };
    @@ -113,6 +112,12 @@
     		222CA78411F6CFB100621220 /* siplogin.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA76211F6CFB100621220 /* siplogin.c */; };
     		222CA78511F6CFB100621220 /* sipsetup.c in Sources */ = {isa = PBXBuildFile; fileRef = 222CA76311F6CFB100621220 /* sipsetup.c */; };
     		222CA78611F6CFB100621220 /* sipsetup.h in Headers */ = {isa = PBXBuildFile; fileRef = 222CA76411F6CFB100621220 /* sipsetup.h */; };
    +		22405EDD160065C200B92522 /* basedescs.h in Headers */ = {isa = PBXBuildFile; fileRef = 22405EDC160065C200B92522 /* basedescs.h */; };
    +		22405EE01600668800B92522 /* msvoip.c in Sources */ = {isa = PBXBuildFile; fileRef = 22405EDF1600668800B92522 /* msvoip.c */; };
    +		22405EE2160066C700B92522 /* voipdescs.h in Headers */ = {isa = PBXBuildFile; fileRef = 22405EE1160066C700B92522 /* voipdescs.h */; };
    +		22405EE51600671D00B92522 /* logging.c in Sources */ = {isa = PBXBuildFile; fileRef = 22405EE31600671D00B92522 /* logging.c */; };
    +		22405EE61600671D00B92522 /* rtpprofile.c in Sources */ = {isa = PBXBuildFile; fileRef = 22405EE41600671D00B92522 /* rtpprofile.c */; };
    +		22405EE81600675C00B92522 /* genericplc.c in Sources */ = {isa = PBXBuildFile; fileRef = 22405EE71600675C00B92522 /* genericplc.c */; };
     		2258C44113A9377B0087A596 /* swscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 2258C44013A9377B0087A596 /* swscale.h */; };
     		2258C44513A945520087A596 /* libswscale.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2258C44213A945520087A596 /* libswscale.a */; };
     		2258C44613A945520087A596 /* libavutil.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2258C44313A945520087A596 /* libavutil.a */; };
    @@ -191,7 +196,6 @@
     		225D64761521BFA6008B2E81 /* linphonecore_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */; };
     		225D64781521BFA6008B2E81 /* nowebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 220ED1AA13A9062500AC21E0 /* nowebcam.h */; };
     		225D64791521BFA6008B2E81 /* swscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 2258C44013A9377B0087A596 /* swscale.h */; };
    -		225D647A1521BFA6008B2E81 /* alldescs.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58A313AB708C00D603C9 /* alldescs.h */; };
     		225D647B1521BFA6008B2E81 /* scaler.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58E313AF44B300D603C9 /* scaler.h */; };
     		225D647C1521BFA6008B2E81 /* g722.h in Headers */ = {isa = PBXBuildFile; fileRef = 229A614B13DDFE3500090183 /* g722.h */; };
     		225D647D1521BFA6008B2E81 /* shaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 70E542F613E14816002BA2C0 /* shaders.h */; };
    @@ -339,7 +343,6 @@
     		225D65431521C009008B2E81 /* linphonecore_utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 229B9D5813043EAB00EFCD1C /* linphonecore_utils.h */; };
     		225D65451521C009008B2E81 /* nowebcam.h in Headers */ = {isa = PBXBuildFile; fileRef = 220ED1AA13A9062500AC21E0 /* nowebcam.h */; };
     		225D65461521C009008B2E81 /* swscale.h in Headers */ = {isa = PBXBuildFile; fileRef = 2258C44013A9377B0087A596 /* swscale.h */; };
    -		225D65471521C009008B2E81 /* alldescs.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58A313AB708C00D603C9 /* alldescs.h */; };
     		225D65481521C009008B2E81 /* scaler.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F58E313AF44B300D603C9 /* scaler.h */; };
     		225D65491521C009008B2E81 /* g722.h in Headers */ = {isa = PBXBuildFile; fileRef = 229A614B13DDFE3500090183 /* g722.h */; };
     		225D654A1521C009008B2E81 /* shaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 70E542F613E14816002BA2C0 /* shaders.h */; };
    @@ -466,7 +469,6 @@
     		221F589D13AB503F00D603C9 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = System/Library/Frameworks/CoreVideo.framework; sourceTree = SDKROOT; };
     		221F589F13AB50F800D603C9 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; };
     		221F58A113AB6F8000D603C9 /* pixconv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pixconv.c; sourceTree = ""; };
    -		221F58A313AB708C00D603C9 /* alldescs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = alldescs.h; path = build/iphone/alldescs.h; sourceTree = ""; };
     		221F58A513AB716300D603C9 /* tonedetector.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = tonedetector.c; sourceTree = ""; };
     		221F58A613AB716300D603C9 /* jpegwriter.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = jpegwriter.c; sourceTree = ""; };
     		221F58A713AB716300D603C9 /* h264dec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = h264dec.c; sourceTree = ""; };
    @@ -639,6 +641,12 @@
     		222CA76311F6CFB100621220 /* sipsetup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sipsetup.c; sourceTree = ""; };
     		222CA76411F6CFB100621220 /* sipsetup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sipsetup.h; sourceTree = ""; };
     		22313679143DED490035C1F4 /* msandroidvideo.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = msandroidvideo.cpp; sourceTree = ""; };
    +		22405EDC160065C200B92522 /* basedescs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = basedescs.h; path = build/iphone/basedescs.h; sourceTree = ""; };
    +		22405EDF1600668800B92522 /* msvoip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msvoip.c; sourceTree = ""; };
    +		22405EE1160066C700B92522 /* voipdescs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = voipdescs.h; path = build/iphone/voipdescs.h; sourceTree = ""; };
    +		22405EE31600671D00B92522 /* logging.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = logging.c; sourceTree = ""; };
    +		22405EE41600671D00B92522 /* rtpprofile.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rtpprofile.c; sourceTree = ""; };
    +		22405EE71600675C00B92522 /* genericplc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = genericplc.c; sourceTree = ""; };
     		224AD571143208BB00510FF3 /* android-display.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = "android-display.c"; path = "../../../../../../workspace-android/linphone-android/submodules/linphone/mediastreamer2/src/android-display.c"; sourceTree = ""; };
     		224AD57314320EB400510FF3 /* scaler_arm.S */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; name = scaler_arm.S; path = "../../../../../../workspace-android/linphone-android/submodules/linphone/mediastreamer2/src/scaler_arm.S"; sourceTree = ""; };
     		22512698145F13CE0041FBF2 /* aqsnd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = aqsnd.c; sourceTree = ""; };
    @@ -846,8 +854,9 @@
     		222CA4CF11F6CF2000621220 /* mediastreamer2 */ = {
     			isa = PBXGroup;
     			children = (
    +				22405EE1160066C700B92522 /* voipdescs.h */,
    +				22405EDC160065C200B92522 /* basedescs.h */,
     				22B5106813AFD37B00CD87DA /* nowebcamCIF.jpg */,
    -				221F58A313AB708C00D603C9 /* alldescs.h */,
     				22DD19E013A8D82C0018ECD4 /* tests */,
     				222CA5B811F6CF7600621220 /* include */,
     				222CA5DC11F6CF7600621220 /* src */,
    @@ -916,6 +925,8 @@
     		222CA5DC11F6CF7600621220 /* src */ = {
     			isa = PBXGroup;
     			children = (
    +				22405EE71600675C00B92522 /* genericplc.c */,
    +				22405EDF1600668800B92522 /* msvoip.c */,
     				221DCB6A153584410025E54D /* yuv2rgb.fs */,
     				221DCB6B153584410025E54D /* yuv2rgb.vs */,
     				221DCB6715347EF80025E54D /* opengles_display.c */,
    @@ -1045,6 +1056,8 @@
     		222CA6B611F6CF9F00621220 /* src */ = {
     			isa = PBXGroup;
     			children = (
    +				22405EE31600671D00B92522 /* logging.c */,
    +				22405EE41600671D00B92522 /* rtpprofile.c */,
     				F4D9F23D145710540035B0D0 /* netsim.c */,
     				F4D9F23E145710540035B0D0 /* ortp_srtp.c */,
     				7014533D13FA841E00A01D86 /* zrtp.c */,
    @@ -1281,11 +1294,12 @@
     				225D64761521BFA6008B2E81 /* linphonecore_utils.h in Headers */,
     				225D64781521BFA6008B2E81 /* nowebcam.h in Headers */,
     				225D64791521BFA6008B2E81 /* swscale.h in Headers */,
    -				225D647A1521BFA6008B2E81 /* alldescs.h in Headers */,
     				225D647B1521BFA6008B2E81 /* scaler.h in Headers */,
     				225D647C1521BFA6008B2E81 /* g722.h in Headers */,
     				225D647D1521BFA6008B2E81 /* shaders.h in Headers */,
     				225D64811521BFA6008B2E81 /* zrtp.h in Headers */,
    +				22405EDD160065C200B92522 /* basedescs.h in Headers */,
    +				22405EE2160066C700B92522 /* voipdescs.h in Headers */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -1367,7 +1381,6 @@
     				225D65431521C009008B2E81 /* linphonecore_utils.h in Headers */,
     				225D65451521C009008B2E81 /* nowebcam.h in Headers */,
     				225D65461521C009008B2E81 /* swscale.h in Headers */,
    -				225D65471521C009008B2E81 /* alldescs.h in Headers */,
     				225D65481521C009008B2E81 /* scaler.h in Headers */,
     				225D65491521C009008B2E81 /* g722.h in Headers */,
     				225D654A1521C009008B2E81 /* shaders.h in Headers */,
    @@ -1453,7 +1466,6 @@
     				229B9D5913043EAB00EFCD1C /* linphonecore_utils.h in Headers */,
     				220ED1AC13A9062600AC21E0 /* nowebcam.h in Headers */,
     				2258C44113A9377B0087A596 /* swscale.h in Headers */,
    -				221F58A413AB708C00D603C9 /* alldescs.h in Headers */,
     				221F58E413AF44B300D603C9 /* scaler.h in Headers */,
     				229A614F13DDFE3500090183 /* g722.h in Headers */,
     				70E542FA13E14816002BA2C0 /* shaders.h in Headers */,
    @@ -1658,6 +1670,8 @@
     				221DCB6915347EF80025E54D /* opengles_display.c in Sources */,
     				221DCB6D153584410025E54D /* yuv2rgb.fs in Sources */,
     				221DCB6F153584410025E54D /* yuv2rgb.vs in Sources */,
    +				22405EE01600668800B92522 /* msvoip.c in Sources */,
    +				22405EE81600675C00B92522 /* genericplc.c in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -1690,6 +1704,8 @@
     				225D65B41521C009008B2E81 /* zrtp.c in Sources */,
     				225D65B81521C009008B2E81 /* netsim.c in Sources */,
     				225D65B91521C009008B2E81 /* ortp_srtp.c in Sources */,
    +				22405EE51600671D00B92522 /* logging.c in Sources */,
    +				22405EE61600671D00B92522 /* rtpprofile.c in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    diff --git a/submodules/linphone b/submodules/linphone
    index 88703bcc1..800460760 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit 88703bcc139e124598732b0babc762fddff0309c
    +Subproject commit 8004607607c344a0f1dd09d1854848fca0e52d59
    diff --git a/submodules/mssilk b/submodules/mssilk
    index d3a6a0a13..f9015a91c 160000
    --- a/submodules/mssilk
    +++ b/submodules/mssilk
    @@ -1 +1 @@
    -Subproject commit d3a6a0a130730c0eaf9a0b6ed2fc466432852684
    +Subproject commit f9015a91ca056cc5be577dfb78c7c224f1fd77b2
    
    From 840942ca3aad081696d12d868c16e341b760080f Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Thu, 13 Sep 2012 18:06:29 +0200
    Subject: [PATCH 215/397] ChatRoom: Fix delete
    
    ---
     Classes/ChatRoomViewController.h                  |  2 ++
     Classes/ChatRoomViewController.m                  | 12 ++++++++++++
     Classes/LinphoneUI/UIChatRoomCell.m               |  2 +-
     Classes/LinphoneUI/UIChatRoomCell.xib             |  7 ++++---
     Classes/en.lproj/ChatRoomViewController.xib       | 15 ++++++++++++++-
     Classes/fr.lproj/ChatRoomViewController.xib       | 15 ++++++++++++++-
     linphone.ldb/Contents.plist                       | 12 ++++++------
     .../{10 => 11}/ChatRoomViewController.xib         | 15 ++++++++++++++-
     8 files changed, 67 insertions(+), 13 deletions(-)
     rename linphone.ldb/Resources/Classes/ChatRoomViewController/{10 => 11}/ChatRoomViewController.xib (98%)
    
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index c1a10d0b7..c83364ae2 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -46,6 +46,8 @@
     @property (nonatomic, retain) IBOutlet UIView *messageView;
     @property (nonatomic, retain) IBOutlet UIImageView *messageBackgroundImage;
     @property (nonatomic, retain) IBOutlet UIImageView *footerBackgroundImage;
    +@property (nonatomic, retain) IBOutlet UITapGestureRecognizer *listTapGestureRecognizer;
    +
     @property (nonatomic, copy) NSString *remoteAddress;
     
     - (IBAction)onBackClick:(id)event;
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index b82d0215c..180017b5e 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -37,6 +37,7 @@
     @synthesize messageView;
     @synthesize messageBackgroundImage;
     @synthesize footerBackgroundImage;
    +@synthesize listTapGestureRecognizer;
     
     
     #pragma mark - Lifecycle Functions
    @@ -63,6 +64,7 @@
         [messageView release];
         [messageBackgroundImage release];
         [footerBackgroundImage release];
    +    [listTapGestureRecognizer release];
         [super dealloc];
     }
     
    @@ -292,6 +294,15 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     
     #pragma mark - UITextFieldDelegate Functions
     
    +- (BOOL)growingTextViewShouldBeginEditing:(HPGrowingTextView *)growingTextView {
    +    if(editButton.selected) {
    +        [tableController setEditing:FALSE animated:TRUE];
    +        [editButton setOff];
    +        [listTapGestureRecognizer setEnabled:TRUE];
    +    }
    +    return TRUE;
    +}
    +
     - (void)growingTextView:(HPGrowingTextView *)growingTextView willChangeHeight:(float)height {
         int diff = height - growingTextView.bounds.size.height;
         
    @@ -323,6 +334,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     }
     
     - (IBAction)onEditClick:(id)event {
    +    [listTapGestureRecognizer setEnabled:[tableController isEditing]];
         [tableController setEditing:![tableController isEditing] animated:TRUE];
         [messageField resignFirstResponder];
     }
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m
    index e0bc54616..0ccfcce18 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.m
    +++ b/Classes/LinphoneUI/UIChatRoomCell.m
    @@ -205,7 +205,7 @@ static UIFont *CELL_FONT = nil;
     
     #pragma mark - Action Functions
     
    -- (IBAction)onDeleteClick: (id) event {
    +- (IBAction)onDeleteClick:(id)event {
         if(chat != NULL) {
             UIView *view = [self superview]; 
             // Find TableViewCell
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib
    index cda2cfccd..7710f22af 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.xib
    +++ b/Classes/LinphoneUI/UIChatRoomCell.xib
    @@ -117,6 +117,7 @@
     								_NS:9
     								
     								YES
    +								NO
     								IBCocoaTouchFramework
     							
     							
    @@ -334,7 +335,7 @@
     						
     						7
     					
    -					20
    +					32
     				
     			
     			
    @@ -447,7 +448,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    -				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -461,7 +462,7 @@
     			
     			
     			
    -			31
    +			32
     		
     		
     			
    diff --git a/Classes/en.lproj/ChatRoomViewController.xib b/Classes/en.lproj/ChatRoomViewController.xib
    index 3bde993df..76a72edf1 100644
    --- a/Classes/en.lproj/ChatRoomViewController.xib
    +++ b/Classes/en.lproj/ChatRoomViewController.xib
    @@ -492,6 +492,14 @@
     					
     					70
     				
    +				
    +					
    +						listTapGestureRecognizer
    +						
    +						
    +					
    +					71
    +				
     				
     					
     						dataSource
    @@ -761,7 +769,7 @@
     			
     			
     			
    -			70
    +			71
     		
     		
     			
    @@ -813,6 +821,7 @@
     						UIImageView
     						UIView
     						UIView
    +						UITapGestureRecognizer
     						UIImageView
     						HPGrowingTextView
     						UIView
    @@ -848,6 +857,10 @@
     							headerView
     							UIView
     						
    +						
    +							listTapGestureRecognizer
    +							UITapGestureRecognizer
    +						
     						
     							messageBackgroundImage
     							UIImageView
    diff --git a/Classes/fr.lproj/ChatRoomViewController.xib b/Classes/fr.lproj/ChatRoomViewController.xib
    index 00108b6b3..d529292f6 100644
    --- a/Classes/fr.lproj/ChatRoomViewController.xib
    +++ b/Classes/fr.lproj/ChatRoomViewController.xib
    @@ -474,6 +474,14 @@
     					
     					70
     				
    +				
    +					
    +						listTapGestureRecognizer
    +						
    +						
    +					
    +					71
    +				
     				
     					
     						dataSource
    @@ -743,7 +751,7 @@
     			
     			
     			
    -			70
    +			71
     		
     		
     			
    @@ -795,6 +803,7 @@
     						UIImageView
     						UIView
     						UIView
    +						UITapGestureRecognizer
     						UIImageView
     						HPGrowingTextView
     						UIView
    @@ -830,6 +839,10 @@
     							headerView
     							UIView
     						
    +						
    +							listTapGestureRecognizer
    +							UITapGestureRecognizer
    +						
     						
     							messageBackgroundImage
     							UIImageView
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index e446bc3c4..70072ae50 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -212,17 +212,17 @@
     					
     						backup
     						
    -							10
    +							11
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ChatRoomViewController/10/ChatRoomViewController.xib
    +								Classes/ChatRoomViewController/11/ChatRoomViewController.xib
     							
     						
     					
     					change date
    -					2012-09-13T15:16:23Z
    +					2012-09-13T16:01:39Z
     					changed values
     					
     					class
    @@ -232,7 +232,7 @@
     					flags
     					0
     					hash
    -					17cff3d2e83eebab4ab29a3d6e6361ce
    +					1017e47ad2fcb46b91d384f53e88bb41
     
     					name
     					ChatRoomViewController.xib
    @@ -443,9 +443,9 @@
     					versions
     					
     						en
    -						10
    +						11
     						fr
    -						10
    +						11
     					
     				
     				
    diff --git a/linphone.ldb/Resources/Classes/ChatRoomViewController/10/ChatRoomViewController.xib b/linphone.ldb/Resources/Classes/ChatRoomViewController/11/ChatRoomViewController.xib
    similarity index 98%
    rename from linphone.ldb/Resources/Classes/ChatRoomViewController/10/ChatRoomViewController.xib
    rename to linphone.ldb/Resources/Classes/ChatRoomViewController/11/ChatRoomViewController.xib
    index 3bde993df..76a72edf1 100644
    --- a/linphone.ldb/Resources/Classes/ChatRoomViewController/10/ChatRoomViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ChatRoomViewController/11/ChatRoomViewController.xib
    @@ -492,6 +492,14 @@
     					
     					70
     				
    +				
    +					
    +						listTapGestureRecognizer
    +						
    +						
    +					
    +					71
    +				
     				
     					
     						dataSource
    @@ -761,7 +769,7 @@
     			
     			
     			
    -			70
    +			71
     		
     		
     			
    @@ -813,6 +821,7 @@
     						UIImageView
     						UIView
     						UIView
    +						UITapGestureRecognizer
     						UIImageView
     						HPGrowingTextView
     						UIView
    @@ -848,6 +857,10 @@
     							headerView
     							UIView
     						
    +						
    +							listTapGestureRecognizer
    +							UITapGestureRecognizer
    +						
     						
     							messageBackgroundImage
     							UIImageView
    
    From 5d75afcec8d824584255fce50ee933edcb01e045 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Fri, 14 Sep 2012 11:12:47 +0200
    Subject: [PATCH 216/397] Add preview in dialer view on iPad
    
    ---
     Classes/ChatViewController.m                  |   1 +
     Classes/DialerViewController.h                |   3 +
     Classes/DialerViewController.m                |  49 ++++
     Classes/InCallViewController.m                |  55 +---
     Classes/LinphoneUI/UICamSwitch.m              |  13 +-
     Classes/LinphoneUI/UIChatCell.m               |   9 +-
     Classes/PhoneMainView.m                       |  30 +++
     .../en.lproj/DialerViewController~ipad.xib    | 236 +++++++++++++++---
     .../fr.lproj/DialerViewController~ipad.xib    | 231 ++++++++++++++---
     Resources/background_alt.png                  | Bin 0 -> 5336 bytes
     linphone.ldb/Contents.plist                   |  37 ++-
     .../{2 => 3}/DialerViewController~ipad.xib    | 236 +++++++++++++++---
     linphone.xcodeproj/project.pbxproj            |   6 +
     13 files changed, 734 insertions(+), 172 deletions(-)
     create mode 100644 Resources/background_alt.png
     rename linphone.ldb/Resources/Classes/DialerViewController~ipad/{2 => 3}/DialerViewController~ipad.xib (89%)
    
    diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m
    index 3c1a294a5..ffd9008de 100644
    --- a/Classes/ChatViewController.m
    +++ b/Classes/ChatViewController.m
    @@ -39,6 +39,7 @@
         
         [tableController release];
         [editButton release];
    +    [addressField release];
         
         [super dealloc];
     }
    diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h
    index ef088b355..c23b7218f 100644
    --- a/Classes/DialerViewController.h
    +++ b/Classes/DialerViewController.h
    @@ -22,6 +22,7 @@
     #import "UICompositeViewController.h"
     
     #import "UIEraseButton.h"
    +#import "UICamSwitch.h"
     #import "UICallButton.h"
     #import "UITransferButton.h"
     #import "UIDigitButton.h"
    @@ -55,6 +56,8 @@
     @property (nonatomic, retain) IBOutlet UIDigitButton* starButton;
     @property (nonatomic, retain) IBOutlet UIDigitButton* zeroButton;
     @property (nonatomic, retain) IBOutlet UIDigitButton* sharpButton;
    +@property (nonatomic, retain) IBOutlet UIView* videoPreview;
    +@property (nonatomic, retain) IBOutlet UICamSwitch* videoCameraSwitch;
     
     - (IBAction)onAddContactClick: (id) event;
     - (IBAction)onBackClick: (id) event;
    diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m
    index 707d4a829..9abd60d74 100644
    --- a/Classes/DialerViewController.m
    +++ b/Classes/DialerViewController.m
    @@ -54,6 +54,9 @@
     @synthesize zeroButton;
     @synthesize sharpButton;
     
    +@synthesize videoPreview;
    +@synthesize videoCameraSwitch;
    +
     #pragma mark - Lifecycle Functions
     
     - (id)init {
    @@ -86,6 +89,8 @@
     	[zeroButton release];
     	[sharpButton release];
         
    +    [videoPreview release];
    +    [videoCameraSwitch release];
         
         // Remove all observers
         [[NSNotificationCenter defaultCenter] removeObserver:self];
    @@ -130,6 +135,10 @@ static UICompositeViewDescription *compositeDescription = nil;
             LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0;
             [self callUpdate:call state:state];
         }
    +    
    +    if(videoPreview) {
    +        linphone_core_set_native_preview_window_id([LinphoneManager getLc], (unsigned long)videoPreview);
    +    }
     } 
     
     - (void)viewWillDisappear:(BOOL)animated {
    @@ -158,8 +167,48 @@ static UICompositeViewDescription *compositeDescription = nil;
     	[sharpButton   setDigit:'#'];
         
         [addressField setAdjustsFontSizeToFitWidth:TRUE]; // Not put it in IB: issue with placeholder size
    +    
    +    if([LinphoneManager runningOnIpad]) {
    +        linphone_core_enable_video_preview([LinphoneManager getLc], TRUE);
    +        
    +        if ([LinphoneManager instance].frontCamId != nil) {
    +            // only show camera switch button if we have more than 1 camera
    +            [videoCameraSwitch setHidden:FALSE];
    +        }
    +    }
     }
     
    +- (void)viewDidUnload {
    +    [super viewDidUnload];
    +    
    +    if([LinphoneManager runningOnIpad]) {
    +        linphone_core_enable_video_preview([LinphoneManager getLc], FALSE);
    +    }
    +}
    +
    +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    +    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
    +    CGRect frame = [videoPreview frame];
    +    switch (toInterfaceOrientation) {
    +        case UIInterfaceOrientationPortrait:
    +            [videoPreview setTransform: CGAffineTransformMakeRotation(0)];
    +            break;
    +        case UIInterfaceOrientationPortraitUpsideDown:
    +            [videoPreview setTransform: CGAffineTransformMakeRotation(M_PI)];
    +            break;
    +        case UIInterfaceOrientationLandscapeLeft:
    +            [videoPreview setTransform: CGAffineTransformMakeRotation(-M_PI / 2)];
    +            break;
    +        case UIInterfaceOrientationLandscapeRight:
    +            [videoPreview setTransform: CGAffineTransformMakeRotation(M_PI / 2)];
    +            break;
    +        default:
    +            break;
    +    }
    +    [videoPreview setFrame:frame];
    +}
    +
    +
     #pragma mark - Event Functions
     
     - (void)callUpdateEvent:(NSNotification*)notif { 
    diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m
    index a3a6c0a11..26063c382 100644
    --- a/Classes/InCallViewController.m
    +++ b/Classes/InCallViewController.m
    @@ -153,11 +153,17 @@ static UICompositeViewDescription *compositeDescription = nil;
         LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]);
         LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0;
         [self callUpdate:call state:state animated:FALSE];
    -    [self orientationUpdate:[PhoneMainView instance].interfaceOrientation];
         
         if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) {
             [callTableController viewDidAppear:animated];
    -    }  
    +    }
    +    
    +    // Set windows (warn memory leaks)
    +    linphone_core_set_native_video_window_id([LinphoneManager getLc], (unsigned long)videoView);
    +    linphone_core_set_native_preview_window_id([LinphoneManager getLc], (unsigned long)videoPreview);
    +    
    +    // Enable tap
    +    [singleFingerTap setEnabled:TRUE];
     }
     
     - (void)viewDidDisappear:(BOOL)animated {
    @@ -169,16 +175,15 @@ static UICompositeViewDescription *compositeDescription = nil;
         
         if ([[UIDevice currentDevice].systemVersion doubleValue] < 5.0) {
             [callTableController viewDidDisappear:animated];
    -    }  
    +    }
    +    
    +    // Disable tap
    +    [singleFingerTap setEnabled:FALSE];
     }
     
     - (void)viewDidLoad {
         [super viewDidLoad];
         
    -    // Set windows (warn memory leaks)
    -    linphone_core_set_native_video_window_id([LinphoneManager getLc],(unsigned long)videoView);	
    -    linphone_core_set_native_preview_window_id([LinphoneManager getLc],(unsigned long)videoPreview);
    -    
         [singleFingerTap setNumberOfTapsRequired:1];
         [singleFingerTap setCancelsTouchesInView: FALSE];
         [[PhoneMainView instance].view addGestureRecognizer:singleFingerTap];
    @@ -196,11 +201,6 @@ static UICompositeViewDescription *compositeDescription = nil;
         [[PhoneMainView instance].view removeGestureRecognizer:singleFingerTap];
     }
     
    -- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    -    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    -    [self orientationUpdate:toInterfaceOrientation];
    -}
    -
     - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
         [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
         CGRect frame = [videoPreview frame];
    @@ -226,35 +226,6 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     #pragma mark -
     
    -- (void)orientationUpdate:(UIInterfaceOrientation)orientation {
    -    int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]);
    -    int newRotation = 0;
    -    switch (orientation) {
    -        case UIInterfaceOrientationPortrait:
    -            newRotation = 0;
    -            break;
    -        case UIInterfaceOrientationPortraitUpsideDown:
    -            newRotation = 180;
    -            break;
    -        case UIInterfaceOrientationLandscapeRight:
    -            newRotation = 270;
    -            break;
    -        case UIInterfaceOrientationLandscapeLeft:
    -            newRotation = 90;
    -            break;
    -        default:
    -            newRotation = oldLinphoneOrientation;
    -    }
    -    if (oldLinphoneOrientation != newRotation) {
    -        linphone_core_set_device_rotation([LinphoneManager getLc], newRotation);
    -        LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]);
    -        if (call && linphone_call_params_video_enabled(linphone_call_get_current_params(call))) {
    -            //Orientation has changed, must call update call
    -            linphone_core_update_call([LinphoneManager getLc], call, NULL);
    -        }
    -    }
    -}
    -
     - (void)callUpdate:(LinphoneCall *)call state:(LinphoneCallState)state animated:(BOOL)animated {
         // Update table
         [callTableView reloadData];  
    @@ -409,7 +380,7 @@ static UICompositeViewDescription *compositeDescription = nil;
             [videoPreview setHidden:TRUE];
         }
         
    -    if ([LinphoneManager instance].frontCamId !=nil) {
    +    if ([LinphoneManager instance].frontCamId != nil) {
             // only show camera switch button if we have more than 1 camera
             [videoCameraSwitch setHidden:FALSE];
         }
    diff --git a/Classes/LinphoneUI/UICamSwitch.m b/Classes/LinphoneUI/UICamSwitch.m
    index bc4a621c3..8dba965ed 100644
    --- a/Classes/LinphoneUI/UICamSwitch.m
    +++ b/Classes/LinphoneUI/UICamSwitch.m
    @@ -82,15 +82,14 @@
             return;
         }
     	if (nextCamId != currentCamId) {
    -		[LinphoneLogger logc:LinphoneLoggerLog format:"Switching from [%s] to [%s]",currentCamId,nextCamId];
    +		[LinphoneLogger logc:LinphoneLoggerLog format:"Switching from [%s] to [%s]", currentCamId, nextCamId];
     		linphone_core_set_video_device([LinphoneManager getLc], nextCamId);
    -		nextCamId=currentCamId;
    +		nextCamId = currentCamId;
     		currentCamId = linphone_core_get_video_device([LinphoneManager getLc]);
    -		linphone_core_update_call([LinphoneManager getLc]
    -								  , linphone_core_get_current_call([LinphoneManager getLc])
    -								  , NULL);
    -		/*linphone_core_set_native_preview_window_id([LinphoneManager getLc],
    -                                                   (unsigned long)preview);*/
    +        LinphoneCall *call = linphone_core_get_current_call([LinphoneManager getLc]);
    +        if(call != NULL) {
    +            linphone_core_update_call([LinphoneManager getLc], call, NULL);
    +        }
     	}
     }
     
    diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m
    index dc6100161..3e1057014 100644
    --- a/Classes/LinphoneUI/UIChatCell.m
    +++ b/Classes/LinphoneUI/UIChatCell.m
    @@ -63,7 +63,14 @@
     #pragma mark - Property Funcitons
     
     - (void)setChat:(ChatModel *)achat {
    -    chat = achat;
    +    if(chat == achat)
    +        return;
    +    if(chat != nil) {
    +        [chat release];
    +    }
    +    if(achat) {
    +        chat = [achat retain];
    +    }
         [self update];
     }
     
    diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m
    index 9817aaa1c..c451292b0 100644
    --- a/Classes/PhoneMainView.m
    +++ b/Classes/PhoneMainView.m
    @@ -247,6 +247,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
     - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
         [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
         [mainViewController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    +    [self orientationUpdate:toInterfaceOrientation];
     }
     
     - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    @@ -371,6 +372,35 @@ static PhoneMainView* phoneMainViewInstance=nil;
     
     #pragma mark - 
     
    +- (void)orientationUpdate:(UIInterfaceOrientation)orientation {
    +    int oldLinphoneOrientation = linphone_core_get_device_rotation([LinphoneManager getLc]);
    +    int newRotation = 0;
    +    switch (orientation) {
    +        case UIInterfaceOrientationPortrait:
    +            newRotation = 0;
    +            break;
    +        case UIInterfaceOrientationPortraitUpsideDown:
    +            newRotation = 180;
    +            break;
    +        case UIInterfaceOrientationLandscapeRight:
    +            newRotation = 270;
    +            break;
    +        case UIInterfaceOrientationLandscapeLeft:
    +            newRotation = 90;
    +            break;
    +        default:
    +            newRotation = oldLinphoneOrientation;
    +    }
    +    if (oldLinphoneOrientation != newRotation) {
    +        linphone_core_set_device_rotation([LinphoneManager getLc], newRotation);
    +        LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]);
    +        if (call && linphone_call_params_video_enabled(linphone_call_get_current_params(call))) {
    +            //Orientation has changed, must call update call
    +            linphone_core_update_call([LinphoneManager getLc], call, NULL);
    +        }
    +    }
    +}
    +
     - (void)startUp {   
         if ([[LinphoneManager instance] lpConfigBoolForKey:@"enable_first_login_view_preference"]  == true) {
             // Change to fist login view
    diff --git a/Classes/en.lproj/DialerViewController~ipad.xib b/Classes/en.lproj/DialerViewController~ipad.xib
    index c4844b21a..26bc622af 100644
    --- a/Classes/en.lproj/DialerViewController~ipad.xib
    +++ b/Classes/en.lproj/DialerViewController~ipad.xib
    @@ -37,6 +37,73 @@
     				
     				292
     				
    +					
    +						
    +						301
    +						{{-1000, -1000}, {2768, 2900}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MAA
    +						
    +						IBIPadFramework
    +					
    +					
    +						
    +						274
    +						{{0, 58}, {768, 842}}
    +						
    +						
    +						
    +						
    +							3
    +							MCAwAA
    +						
    +						1
    +						IBIPadFramework
    +					
    +					
    +						
    +						-2147483356
    +						{{0, 77}, {85, 33}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Switch camera
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						NO
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							switch_camera_over.png
    +						
    +						
    +							NSImage
    +							switch_camera_default.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
     					
     						
     						290
    @@ -104,7 +171,7 @@
     								{{698, 4}, {70, 51}}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -120,10 +187,7 @@
     								15
     								15
     								15
    -								
    -									3
    -									MC41AA
    -								
    +								
     								
     									NSImage
     									backspace_over~ipad.png
    @@ -136,15 +200,8 @@
     									NSImage
     									backspace_default~ipad.png
     								
    -								
    -									2
    -									15
    -								
    -								
    -									Helvetica-Bold
    -									15
    -									16
    -								
    +								
    +								
     							
     						
     						{768, 80}
    @@ -166,6 +223,22 @@
     						
     						268
     						
    +							
    +								
    +								274
    +								{320, 280}
    +								
    +								
    +								
    +								_NS:9
    +								2
    +								NO
    +								IBIPadFramework
    +								
    +									NSImage
    +									background_alt.png
    +								
    +							
     							
     								
     								292
    @@ -200,7 +273,7 @@
     									2
     									15
     								
    -								
    +								
     							
     							
     								
    @@ -227,7 +300,7 @@
     									numpad_two_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -254,7 +327,7 @@
     									numpad_three_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -281,7 +354,7 @@
     									numpad_four_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -308,7 +381,7 @@
     									numpad_five_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -335,7 +408,7 @@
     									numpad_six_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -362,7 +435,7 @@
     									numpad_seven_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -389,7 +462,7 @@
     									numpad_eight_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -416,7 +489,7 @@
     									numpad_nine_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -443,7 +516,7 @@
     									numpad_star_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -470,7 +543,7 @@
     									numpad_zero_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -497,18 +570,15 @@
     									numpad_sharp_default.png
     								
     								
    -								
    +								
     							
     						
     						{{0, 640}, {320, 260}}
     						
     						
    -						
    +						
     						_NS:9
    -						
    -							3
    -							MCAwAA
    -						
    +						
     						IBIPadFramework
     					
     					
    @@ -547,7 +617,7 @@
     									add_contact_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -580,7 +650,7 @@
     									back_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -614,7 +684,7 @@
     									call_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -648,7 +718,7 @@
     									add_call_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -656,7 +726,6 @@
     								{{126, 0}, {186, 85}}
     								
     								
    -								
     								_NS:9
     								NO
     								
    @@ -682,7 +751,7 @@
     									transfer_call_default~ipad.png
     								
     								
    -								
    +								
     							
     						
     						{{456, 815}, {312, 85}}
    @@ -701,7 +770,7 @@
     				{768, 900}
     				
     				
    -				
    +				
     				_NS:9
     				
     				IBIPadFramework
    @@ -869,6 +938,22 @@
     					
     					69
     				
    +				
    +					
    +						videoCameraSwitch
    +						
    +						
    +					
    +					74
    +				
    +				
    +					
    +						videoPreview
    +						
    +						
    +					
    +					75
    +				
     				
     					
     						onAddressChange:
    @@ -1024,6 +1109,14 @@
     					
     					39
     				
    +				
    +					
    +						preview
    +						
    +						
    +					
    +					72
    +				
     			
     			
     				
    @@ -1051,6 +1144,9 @@
     							
     							
     							
    +							
    +							
    +							
     						
     						
     					
    @@ -1083,6 +1179,7 @@
     							
     							
     							
    +							
     						
     						
     						pad
    @@ -1218,6 +1315,29 @@
     						
     						backspaceButton
     					
    +					
    +						70
    +						
    +						
    +						preview
    +					
    +					
    +						71
    +						
    +						
    +						videoCameraSwitch
    +					
    +					
    +						73
    +						
    +						
    +						background
    +					
    +					
    +						76
    +						
    +						
    +					
     				
     			
     			
    @@ -1279,6 +1399,12 @@
     				UIAddressTextField
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UICamSwitch
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -1290,7 +1416,7 @@
     			
     			
     			
    -			69
    +			76
     		
     		
     			
    @@ -1335,6 +1461,8 @@
     						UIDigitButton
     						UITransferButton
     						UIDigitButton
    +						UICamSwitch
    +						UIView
     						UIDigitButton
     					
     					
    @@ -1410,6 +1538,14 @@
     							twoButton
     							UIDigitButton
     						
    +						
    +							videoCameraSwitch
    +							UICamSwitch
    +						
    +						
    +							videoPreview
    +							UIView
    +						
     						
     							zeroButton
     							UIDigitButton
    @@ -1447,6 +1583,25 @@
     						./Classes/UICallButton.h
     					
     				
    +				
    +					UICamSwitch
    +					UIButton
    +					
    +						preview
    +						UIView
    +					
    +					
    +						preview
    +						
    +							preview
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICamSwitch.h
    +					
    +				
     				
     					UIDigitButton
     					UILongTouchButton
    @@ -1532,6 +1687,7 @@
     			{251, 170}
     			{251, 170}
     			{251, 170}
    +			{640, 561}
     			{81, 43}
     			{81, 43}
     			{81, 43}
    @@ -1563,6 +1719,8 @@
     			{220, 113}
     			{220, 113}
     			{220, 113}
    +			{170, 65}
    +			{170, 65}
     			{371, 170}
     			{371, 170}
     			{371, 170}
    diff --git a/Classes/fr.lproj/DialerViewController~ipad.xib b/Classes/fr.lproj/DialerViewController~ipad.xib
    index b9b6c98fd..58f381dce 100644
    --- a/Classes/fr.lproj/DialerViewController~ipad.xib
    +++ b/Classes/fr.lproj/DialerViewController~ipad.xib
    @@ -37,6 +37,70 @@
     				
     				292
     				
    +					
    +						
    +						301
    +						{{-1000, -1000}, {2768, 2900}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MAA
    +						
    +						IBIPadFramework
    +					
    +					
    +						
    +						274
    +						{{0, 58}, {768, 842}}
    +						
    +						
    +						
    +							3
    +							MCAwAA
    +						
    +						1
    +						IBIPadFramework
    +					
    +					
    +						
    +						-2147483356
    +						{{0, 77}, {85, 33}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Changer de camera
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						NO
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							switch_camera_over.png
    +						
    +						
    +							NSImage
    +							switch_camera_default.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
     					
     						
     						290
    @@ -101,7 +165,7 @@
     								289
     								{{698, 4}, {70, 51}}
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -117,10 +181,7 @@
     								15
     								15
     								15
    -								
    -									3
    -									MC41AA
    -								
    +								
     								
     									NSImage
     									backspace_over~ipad.png
    @@ -133,15 +194,8 @@
     									NSImage
     									backspace_default~ipad.png
     								
    -								
    -									2
    -									15
    -								
    -								
    -									Helvetica-Bold
    -									15
    -									16
    -								
    +								
    +								
     							
     						
     						{768, 80}
    @@ -162,6 +216,21 @@
     						
     						268
     						
    +							
    +								
    +								274
    +								{320, 280}
    +								
    +								
    +								_NS:9
    +								2
    +								NO
    +								IBIPadFramework
    +								
    +									NSImage
    +									background_alt.png
    +								
    +							
     							
     								
     								292
    @@ -195,7 +264,7 @@
     									2
     									15
     								
    -								
    +								
     							
     							
     								
    @@ -221,7 +290,7 @@
     									numpad_two_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -247,7 +316,7 @@
     									numpad_three_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -273,7 +342,7 @@
     									numpad_four_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -299,7 +368,7 @@
     									numpad_five_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -325,7 +394,7 @@
     									numpad_six_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -351,7 +420,7 @@
     									numpad_seven_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -377,7 +446,7 @@
     									numpad_eight_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -403,7 +472,7 @@
     									numpad_nine_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -429,7 +498,7 @@
     									numpad_star_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -455,7 +524,7 @@
     									numpad_zero_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -481,17 +550,14 @@
     									numpad_sharp_default.png
     								
     								
    -								
    +								
     							
     						
     						{{0, 640}, {320, 260}}
     						
    -						
    +						
     						_NS:9
    -						
    -							3
    -							MCAwAA
    -						
    +						
     						IBIPadFramework
     					
     					
    @@ -529,7 +595,7 @@
     									add_contact_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -561,7 +627,7 @@
     									back_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -594,7 +660,7 @@
     									call_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -627,7 +693,7 @@
     									add_call_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -659,7 +725,7 @@
     									transfer_call_default~ipad.png
     								
     								
    -								
    +								
     							
     						
     						{{456, 815}, {312, 85}}
    @@ -675,7 +741,7 @@
     					
     				
     				{768, 900}
    -				
    +				
     				_NS:9
     				
     				IBIPadFramework
    @@ -843,6 +909,22 @@
     					
     					69
     				
    +				
    +					
    +						videoCameraSwitch
    +						
    +						
    +					
    +					74
    +				
    +				
    +					
    +						videoPreview
    +						
    +						
    +					
    +					75
    +				
     				
     					
     						onAddressChange:
    @@ -998,6 +1080,14 @@
     					
     					39
     				
    +				
    +					
    +						preview
    +						
    +						
    +					
    +					72
    +				
     			
     			
     				
    @@ -1025,6 +1115,9 @@
     							
     							
     							
    +							
    +							
    +							
     						
     						
     					
    @@ -1057,6 +1150,7 @@
     							
     							
     							
    +							
     						
     						
     						pad
    @@ -1192,6 +1286,29 @@
     						
     						backspaceButton
     					
    +					
    +						70
    +						
    +						
    +						preview
    +					
    +					
    +						71
    +						
    +						
    +						videoCameraSwitch
    +					
    +					
    +						73
    +						
    +						
    +						background
    +					
    +					
    +						76
    +						
    +						
    +					
     				
     			
     			
    @@ -1253,6 +1370,12 @@
     				UIAddressTextField
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UICamSwitch
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -1264,7 +1387,7 @@
     			
     			
     			
    -			69
    +			76
     		
     		
     			
    @@ -1309,6 +1432,8 @@
     						UIDigitButton
     						UITransferButton
     						UIDigitButton
    +						UICamSwitch
    +						UIView
     						UIDigitButton
     					
     					
    @@ -1384,6 +1509,14 @@
     							twoButton
     							UIDigitButton
     						
    +						
    +							videoCameraSwitch
    +							UICamSwitch
    +						
    +						
    +							videoPreview
    +							UIView
    +						
     						
     							zeroButton
     							UIDigitButton
    @@ -1421,6 +1554,25 @@
     						./Classes/UICallButton.h
     					
     				
    +				
    +					UICamSwitch
    +					UIButton
    +					
    +						preview
    +						UIView
    +					
    +					
    +						preview
    +						
    +							preview
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICamSwitch.h
    +					
    +				
     				
     					UIDigitButton
     					UILongTouchButton
    @@ -1506,6 +1658,7 @@
     			{251, 170}
     			{251, 170}
     			{251, 170}
    +			{640, 561}
     			{81, 43}
     			{81, 43}
     			{81, 43}
    @@ -1537,6 +1690,8 @@
     			{220, 113}
     			{220, 113}
     			{220, 113}
    +			{170, 65}
    +			{170, 65}
     			{371, 170}
     			{371, 170}
     			{371, 170}
    diff --git a/Resources/background_alt.png b/Resources/background_alt.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..3e178844a6e8cbf6dea249d686ec771d9c70fa91
    GIT binary patch
    literal 5336
    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
    D!QF&i
    
    literal 0
    HcmV?d00001
    
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index 70072ae50..3e1f5e832 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -1285,17 +1285,17 @@
     					
     						backup
     						
    -							2
    +							3
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/DialerViewController~ipad/2/DialerViewController~ipad.xib
    +								Classes/DialerViewController~ipad/3/DialerViewController~ipad.xib
     							
     						
     					
     					change date
    -					2012-09-11T07:20:16Z
    +					2012-09-14T08:21:20Z
     					changed values
     					
     					class
    @@ -1305,7 +1305,7 @@
     					flags
     					0
     					hash
    -					fc4e4cbece826acf96d8cbb7d692bf2f
    +					199b213a86204679336e2f627d919b3d
     
     					name
     					DialerViewController~ipad.xib
    @@ -1811,6 +1811,31 @@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Switch camera"; ObjectID = "71";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							71.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Switch camera
    +								fr
    +								Changer de camera
    +							
    +							snapshots
    +							
    +						
     					
     					old objects
     					
    @@ -1819,9 +1844,9 @@
     					versions
     					
     						en
    -						2
    +						3
     						fr
    -						2
    +						3
     					
     				
     				
    diff --git a/linphone.ldb/Resources/Classes/DialerViewController~ipad/2/DialerViewController~ipad.xib b/linphone.ldb/Resources/Classes/DialerViewController~ipad/3/DialerViewController~ipad.xib
    similarity index 89%
    rename from linphone.ldb/Resources/Classes/DialerViewController~ipad/2/DialerViewController~ipad.xib
    rename to linphone.ldb/Resources/Classes/DialerViewController~ipad/3/DialerViewController~ipad.xib
    index c4844b21a..26bc622af 100644
    --- a/linphone.ldb/Resources/Classes/DialerViewController~ipad/2/DialerViewController~ipad.xib
    +++ b/linphone.ldb/Resources/Classes/DialerViewController~ipad/3/DialerViewController~ipad.xib
    @@ -37,6 +37,73 @@
     				
     				292
     				
    +					
    +						
    +						301
    +						{{-1000, -1000}, {2768, 2900}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MAA
    +						
    +						IBIPadFramework
    +					
    +					
    +						
    +						274
    +						{{0, 58}, {768, 842}}
    +						
    +						
    +						
    +						
    +							3
    +							MCAwAA
    +						
    +						1
    +						IBIPadFramework
    +					
    +					
    +						
    +						-2147483356
    +						{{0, 77}, {85, 33}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Switch camera
    +						
    +						IBIPadFramework
    +						0
    +						0
    +						NO
    +						NO
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							switch_camera_over.png
    +						
    +						
    +							NSImage
    +							switch_camera_default.png
    +						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
    +					
     					
     						
     						290
    @@ -104,7 +171,7 @@
     								{{698, 4}, {70, 51}}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -120,10 +187,7 @@
     								15
     								15
     								15
    -								
    -									3
    -									MC41AA
    -								
    +								
     								
     									NSImage
     									backspace_over~ipad.png
    @@ -136,15 +200,8 @@
     									NSImage
     									backspace_default~ipad.png
     								
    -								
    -									2
    -									15
    -								
    -								
    -									Helvetica-Bold
    -									15
    -									16
    -								
    +								
    +								
     							
     						
     						{768, 80}
    @@ -166,6 +223,22 @@
     						
     						268
     						
    +							
    +								
    +								274
    +								{320, 280}
    +								
    +								
    +								
    +								_NS:9
    +								2
    +								NO
    +								IBIPadFramework
    +								
    +									NSImage
    +									background_alt.png
    +								
    +							
     							
     								
     								292
    @@ -200,7 +273,7 @@
     									2
     									15
     								
    -								
    +								
     							
     							
     								
    @@ -227,7 +300,7 @@
     									numpad_two_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -254,7 +327,7 @@
     									numpad_three_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -281,7 +354,7 @@
     									numpad_four_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -308,7 +381,7 @@
     									numpad_five_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -335,7 +408,7 @@
     									numpad_six_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -362,7 +435,7 @@
     									numpad_seven_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -389,7 +462,7 @@
     									numpad_eight_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -416,7 +489,7 @@
     									numpad_nine_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -443,7 +516,7 @@
     									numpad_star_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -470,7 +543,7 @@
     									numpad_zero_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -497,18 +570,15 @@
     									numpad_sharp_default.png
     								
     								
    -								
    +								
     							
     						
     						{{0, 640}, {320, 260}}
     						
     						
    -						
    +						
     						_NS:9
    -						
    -							3
    -							MCAwAA
    -						
    +						
     						IBIPadFramework
     					
     					
    @@ -547,7 +617,7 @@
     									add_contact_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -580,7 +650,7 @@
     									back_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -614,7 +684,7 @@
     									call_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -648,7 +718,7 @@
     									add_call_default~ipad.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -656,7 +726,6 @@
     								{{126, 0}, {186, 85}}
     								
     								
    -								
     								_NS:9
     								NO
     								
    @@ -682,7 +751,7 @@
     									transfer_call_default~ipad.png
     								
     								
    -								
    +								
     							
     						
     						{{456, 815}, {312, 85}}
    @@ -701,7 +770,7 @@
     				{768, 900}
     				
     				
    -				
    +				
     				_NS:9
     				
     				IBIPadFramework
    @@ -869,6 +938,22 @@
     					
     					69
     				
    +				
    +					
    +						videoCameraSwitch
    +						
    +						
    +					
    +					74
    +				
    +				
    +					
    +						videoPreview
    +						
    +						
    +					
    +					75
    +				
     				
     					
     						onAddressChange:
    @@ -1024,6 +1109,14 @@
     					
     					39
     				
    +				
    +					
    +						preview
    +						
    +						
    +					
    +					72
    +				
     			
     			
     				
    @@ -1051,6 +1144,9 @@
     							
     							
     							
    +							
    +							
    +							
     						
     						
     					
    @@ -1083,6 +1179,7 @@
     							
     							
     							
    +							
     						
     						
     						pad
    @@ -1218,6 +1315,29 @@
     						
     						backspaceButton
     					
    +					
    +						70
    +						
    +						
    +						preview
    +					
    +					
    +						71
    +						
    +						
    +						videoCameraSwitch
    +					
    +					
    +						73
    +						
    +						
    +						background
    +					
    +					
    +						76
    +						
    +						
    +					
     				
     			
     			
    @@ -1279,6 +1399,12 @@
     				UIAddressTextField
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UICamSwitch
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -1290,7 +1416,7 @@
     			
     			
     			
    -			69
    +			76
     		
     		
     			
    @@ -1335,6 +1461,8 @@
     						UIDigitButton
     						UITransferButton
     						UIDigitButton
    +						UICamSwitch
    +						UIView
     						UIDigitButton
     					
     					
    @@ -1410,6 +1538,14 @@
     							twoButton
     							UIDigitButton
     						
    +						
    +							videoCameraSwitch
    +							UICamSwitch
    +						
    +						
    +							videoPreview
    +							UIView
    +						
     						
     							zeroButton
     							UIDigitButton
    @@ -1447,6 +1583,25 @@
     						./Classes/UICallButton.h
     					
     				
    +				
    +					UICamSwitch
    +					UIButton
    +					
    +						preview
    +						UIView
    +					
    +					
    +						preview
    +						
    +							preview
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/UICamSwitch.h
    +					
    +				
     				
     					UIDigitButton
     					UILongTouchButton
    @@ -1532,6 +1687,7 @@
     			{251, 170}
     			{251, 170}
     			{251, 170}
    +			{640, 561}
     			{81, 43}
     			{81, 43}
     			{81, 43}
    @@ -1563,6 +1719,8 @@
     			{220, 113}
     			{220, 113}
     			{220, 113}
    +			{170, 65}
    +			{170, 65}
     			{371, 170}
     			{371, 170}
     			{371, 170}
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index 60e1d94c3..224701b1c 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -778,6 +778,8 @@
     		D389363B15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */; };
     		D38D14AF15A30B3D008497E8 /* cell_call_first_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */; };
     		D38D14B115A30B3D008497E8 /* cell_call_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AE15A30B3D008497E8 /* cell_call_highlight.png */; };
    +		D3998D0416031937009DD22C /* background_alt.png in Resources */ = {isa = PBXBuildFile; fileRef = D3998D0316031937009DD22C /* background_alt.png */; };
    +		D3998D0516031937009DD22C /* background_alt.png in Resources */ = {isa = PBXBuildFile; fileRef = D3998D0316031937009DD22C /* background_alt.png */; };
     		D3A55FBC15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; };
     		D3A55FBD15877E5E003FD403 /* UIContactCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A55FBB15877E5E003FD403 /* UIContactCell.m */; };
     		D3A55FBF15877E69003FD403 /* UIContactCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D3A55FBE15877E69003FD403 /* UIContactCell.xib */; };
    @@ -1807,6 +1809,7 @@
     		D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_bubble_outgoing.9.png; path = Resources/chat_bubble_outgoing.9.png; sourceTree = ""; };
     		D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_first_highlight.png; path = Resources/cell_call_first_highlight.png; sourceTree = ""; };
     		D38D14AE15A30B3D008497E8 /* cell_call_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_highlight.png; path = Resources/cell_call_highlight.png; sourceTree = ""; };
    +		D3998D0316031937009DD22C /* background_alt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = background_alt.png; path = Resources/background_alt.png; sourceTree = ""; };
     		D3A55FBA15877E5E003FD403 /* UIContactCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIContactCell.h; sourceTree = ""; };
     		D3A55FBB15877E5E003FD403 /* UIContactCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIContactCell.m; sourceTree = ""; };
     		D3A55FBE15877E69003FD403 /* UIContactCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UIContactCell.xib; sourceTree = ""; };
    @@ -2735,6 +2738,7 @@
     				D3211BBD159CBFD60098460B /* back_over.png */,
     				D3A74E6615C69392001500B9 /* back_over~ipad.png */,
     				D3ED3E401585FB4A006C0DE4 /* background.png */,
    +				D3998D0316031937009DD22C /* background_alt.png */,
     				D3A74E6715C69392001500B9 /* background_top~ipad.png */,
     				D3ED3E7615861B1B006C0DE4 /* backspace_default.png */,
     				D3A74E6815C69392001500B9 /* backspace_default~ipad.png */,
    @@ -3845,6 +3849,7 @@
     				D381885615FE448400C3EDCA /* UICallBar~ipad.xib in Resources */,
     				D3ED40241602257400BF332B /* chat_background.9.png in Resources */,
     				D3ED40261602257400BF332B /* chat_background.9@2x.png in Resources */,
    +				D3998D0416031937009DD22C /* background_alt.png in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4295,6 +4300,7 @@
     				D381885715FE448400C3EDCA /* UICallBar~ipad.xib in Resources */,
     				D3ED40251602257400BF332B /* chat_background.9.png in Resources */,
     				D3ED40271602257400BF332B /* chat_background.9@2x.png in Resources */,
    +				D3998D0516031937009DD22C /* background_alt.png in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    
    From e4b6d3bc00a835278c363b5ba9733d406f68f127 Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Fri, 14 Sep 2012 11:58:26 +0200
    Subject: [PATCH 217/397] fix localization
    
    ---
     Classes/fr.lproj/ChatRoomViewController.xib   | 190 +++++-
     Resources/en.lproj/Localizable.strings        | Bin 13566 -> 16702 bytes
     Resources/fr.lproj/Localizable.strings        | Bin 14020 -> 17176 bytes
     linphone.ldb/Contents.plist                   | 631 ++++++++++++++++--
     .../{11 => 12}/ChatRoomViewController.xib     | 194 +++++-
     .../Localizable/1/Localizable.strings         | Bin 13566 -> 16702 bytes
     6 files changed, 951 insertions(+), 64 deletions(-)
     rename linphone.ldb/Resources/Classes/ChatRoomViewController/{11 => 12}/ChatRoomViewController.xib (82%)
    
    diff --git a/Classes/fr.lproj/ChatRoomViewController.xib b/Classes/fr.lproj/ChatRoomViewController.xib
    index d529292f6..925eb238d 100644
    --- a/Classes/fr.lproj/ChatRoomViewController.xib
    +++ b/Classes/fr.lproj/ChatRoomViewController.xib
    @@ -15,6 +15,7 @@
     			IBUIImageView
     			IBUILabel
     			IBProxyObject
    +			IBUIProgressView
     			IBUITapGestureRecognizer
     			IBUITableViewController
     			IBUITableView
    @@ -134,7 +135,7 @@
     								
     								
     								_NS:9
    -								
    +								
     									3
     									MQA
     								
    @@ -248,6 +249,77 @@
     										
     										IBCocoaTouchFramework
     									
    +									
    +										
    +										292
    +										
    +											
    +												
    +												292
    +												{{238, 11}, {62, 37}}
    +												
    +												_NS:9
    +												NO
    +												IBCocoaTouchFramework
    +												0
    +												0
    +												1
    +												cancel
    +												
    +												
    +													1
    +													MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +												
    +												
    +												
    +												
    +											
    +											
    +												
    +												292
    +												{{7, 25}, {213, 9}}
    +												
    +												
    +												_NS:9
    +												NO
    +												IBCocoaTouchFramework
    +												0.5
    +											
    +										
    +										{320, 59}
    +										
    +										
    +										_NS:9
    +										
    +											3
    +											MQA
    +											
    +												2
    +											
    +										
    +										IBCocoaTouchFramework
    +									
    +									
    +										
    +										292
    +										{{6, 11}, {50, 37}}
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										1
    +										Pict
    +										
    +										
    +											1
    +											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +										
    +										
    +										
    +										
    +									
     								
     								{{0, 357}, {320, 59}}
     								
    @@ -482,6 +554,38 @@
     					
     					71
     				
    +				
    +					
    +						transfertView
    +						
    +						
    +					
    +					76
    +				
    +				
    +					
    +						cancelTransfertButton
    +						
    +						
    +					
    +					77
    +				
    +				
    +					
    +						imageTransferProgressBar
    +						
    +						
    +					
    +					79
    +				
    +				
    +					
    +						pictButton
    +						
    +						
    +					
    +					80
    +				
     				
     					
     						dataSource
    @@ -551,6 +655,24 @@
     					
     					62
     				
    +				
    +					
    +						onPictClick:
    +						
    +						
    +						7
    +					
    +					81
    +				
    +				
    +					
    +						onTransferCancelClick:
    +						
    +						
    +						7
    +					
    +					78
    +				
     			
     			
     				
    @@ -669,6 +791,8 @@
     							
     							
     							
    +							
    +							
     						
     						
     						footerView
    @@ -713,6 +837,34 @@
     						
     						messageField
     					
    +					
    +						72
    +						
    +						
    +							
    +							
    +						
    +						
    +						transferView
    +					
    +					
    +						75
    +						
    +						
    +						cancel
    +					
    +					
    +						74
    +						
    +						
    +						progressBar
    +					
    +					
    +						73
    +						
    +						
    +						pictureButton
    +					
     				
     			
     			
    @@ -742,6 +894,10 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -751,7 +907,7 @@
     			
     			
     			
    -			71
    +			81
     		
     		
     			
    @@ -771,7 +927,9 @@
     						id
     						id
     						id
    +						id
     						id
    +						id
     					
     					
     						
    @@ -790,25 +948,37 @@
     							onMessageChange:
     							id
     						
    +						
    +							onPictClick:
    +							id
    +						
     						
     							onSendClick:
     							id
     						
    +						
    +							onTransferCancelClick:
    +							id
    +						
     					
     					
     						UILabel
     						UIImageView
    +						UIButton
     						UIView
     						UIToggleButton
     						UIImageView
     						UIView
     						UIView
    +						UIProgressView
     						UITapGestureRecognizer
     						UIImageView
     						HPGrowingTextView
     						UIView
    +						UIButton
     						UIButton
     						ChatRoomTableViewController
    +						UIView
     					
     					
     						
    @@ -819,6 +989,10 @@
     							avatarImage
     							UIImageView
     						
    +						
    +							cancelTransfertButton
    +							UIButton
    +						
     						
     							chatView
     							UIView
    @@ -839,6 +1013,10 @@
     							headerView
     							UIView
     						
    +						
    +							imageTransferProgressBar
    +							UIProgressView
    +						
     						
     							listTapGestureRecognizer
     							UITapGestureRecognizer
    @@ -855,6 +1033,10 @@
     							messageView
     							UIView
     						
    +						
    +							pictButton
    +							UIButton
    +						
     						
     							sendButton
     							UIButton
    @@ -863,6 +1045,10 @@
     							tableController
     							ChatRoomTableViewController
     						
    +						
    +							transfertView
    +							UIView
    +						
     					
     					
     						IBProjectSource
    diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings
    index 7bb5ecb9f7486359e18aa4a353367318225cc2b2..d2123bd9c9fbc02cbcbd192765c91a1d87243990 100644
    GIT binary patch
    delta 1421
    zcmb_cO=}ZT6n!(brcMUY2Ac28OC<%}NQ59&>j%0ihy*NF4Hd_BtdY!gn2ADn;?j-C
    z1-FXp;MWwF{RtJ^E4Yy?t7{R@dov-UX^I*dGIMj^z4x7W&w2MpbMv9{`h`l{%CzEB
    zO0D62P`O6+F^xLvOZ*B&&f08^adw$m%wzXilP$xVhG&j(dZr#u?GQn4Dvh8%c71Qr
    zmT6`$0pIh?WRaJudV}i8Jwa#RekCvJwtfqAL9l1t$0)1{LEPsV$#0n9P+1+u3R1WRN
    z2-#KL3ce@LCiANxWKA|a(g+xxXVOcrDob=C{e?C%3rB5`uqx^B@peE>Jbqx6K2J61
    zX(mUmF+tt*Bt0^2lAD=KL`|lT>EgJwh4#eCxqkb7sbO*K6^J2h!a7ji15VCdc1KD>
    zsJsR7+=4e02x|U^DgyaLwo{(R&KzR3@Ywir7GmJo-^9(bsGKtr9JT{-mQ%;+(~R~H
    zSzC##!AAD9TC+q^dBl+MCJL{_+I$JC0}=GKU{bCy73hTv3TdT_^t^PJwzEg*L8%p7
    zF*cQxL)sOqTp!xfCq{#A9MS_`emlM>uIaMuii^GrOE4m?t{<@zn>8peX3!tx$mz2+
    z)75GVl1e9<4;<+p9wE=Z*al+gao(Kmd3&>E_uN>N$PV6BPbrl}sUim_bD;G8hQIj5
    KybZn`)77676E(>I
    
    delta 147
    zcmdnj#P~0B!y=~1cUZV4$1$&)tjB7$S%y`LZSw|h0mjLB0vwYwcm*~G@hUKGjuG_Y
    zo~$7IWO5yEz~l#VvnER^uG*}mY{xWNOigMtkD3eP1JhBSsuhP=s})pU_~
    u@72~$j#Ji}Y@m@d`GvaN<^T;Yrp+I;_OWhGF?_g@-KN@R7T>9(CbjXzq#NW=i@I>Bk`sK2
    zR1chV)s;nAm@nX)r6M))vGCBr!v^k}v;y}w=MPr65Q_$LqZ39F5n$|h^8lhl4gN5*
    z928<@gMY>1SKEkV!Qj(fm8p$*Ce9MsQKuGSyEsWcSMsQPjiA?;pv0N@;i5^lvhR*7
    zg=t$8AcPbB%SXIA@>}>XT(vkKUlwGg-4O)Ye}L=qa9p~P|HRd~;apkZ=?@$Q`S|I0
    zss`HDRa?R?mq_1w(q*
    z!aH4x)~~2TWrzaK+7ABxoSS@+DIuF!9eiA+Je}7BZVLrFyqV98$Q1NAb>z&Yu)30(
    zFY$DNNKeED5T5`-nLH1toHpmGQyt^cN3^Hn11UM&_o{jt2mu+pvft%9Q=(@#dHnyg79!
    F@*6|uFUtS`
    
    delta 156
    zcmbQy#&{%m!xE;+e#}QUKVmt;w%LG3ig9uQAIIi%ybg?$4+wE>RuDSJJvmG6*5oyE
    zL6i3=2uwCp=$LG!v}UuOiV@T1e`;xrljo>Q@uo1OGNdtNGUNg2l*zuT;*%e!i*ctg
    zyo8EoPHc>voS+dfIZj1uvWsTUYpa
    H6k-AZEnYS>
    
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index 70072ae50..7cb75514b 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -12,7 +12,9 @@
     			change date
     			2001-01-01T00:00:00Z
     			changed values
    -			
    +			
    +				fr
    +			
     			class
     			BLBundleObject
     			errors
    @@ -212,19 +214,21 @@
     					
     						backup
     						
    -							11
    +							12
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ChatRoomViewController/11/ChatRoomViewController.xib
    +								Classes/ChatRoomViewController/12/ChatRoomViewController.xib
     							
     						
     					
     					change date
    -					2012-09-13T16:01:39Z
    +					2012-09-14T08:42:01Z
     					changed values
    -					
    +					
    +						fr
    +					
     					class
     					BLNibFileObject
     					errors
    @@ -232,7 +236,7 @@
     					flags
     					0
     					hash
    -					1017e47ad2fcb46b91d384f53e88bb41
    +					fe17a7cc443845e0f73af8ee35e892e5
     
     					name
     					ChatRoomViewController.xib
    @@ -386,6 +390,60 @@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								fr
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "Pict"; ObjectID = "73";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							73.normalTitle
    +							localizations
    +							
    +								en
    +								Pict
    +								fr
    +								Img
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +								fr
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "cancel"; ObjectID = "75";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							75.normalTitle
    +							localizations
    +							
    +								en
    +								cancel
    +								fr
    +								Annuler
    +							
    +							snapshots
    +							
    +						
     					
     					old objects
     					
    @@ -443,9 +501,9 @@
     					versions
     					
     						en
    -						11
    +						12
     						fr
    -						11
    +						12
     					
     				
     				
    @@ -7135,7 +7193,7 @@
     						
     					
     					change date
    -					2012-09-11T10:28:55Z
    +					2012-09-14T09:51:58Z
     					changed values
     					
     					class
    @@ -7145,7 +7203,7 @@
     					flags
     					0
     					hash
    -					e6f2d74fc56bbbdbcee0adb3a997cc4c
    +					7fcce4bdc516e1d8f77ce093860a38dd
     
     					name
     					Localizable.strings
    @@ -7254,6 +7312,34 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							%@
    +Reason was: %s
    +							localizations
    +							
    +								en
    +								%1$@
    +Reason was: %2$s
    +								fr
    +								%1$@
    +Raison: %2$s
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -7279,6 +7365,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							'%@' not registered to Service
    +							localizations
    +							
    +								en
    +								'%@' not registered to Service
    +								fr
    +								'%@' n'est pas enregistré
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -7504,6 +7615,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Camera
    +							localizations
    +							
    +								en
    +								Camera
    +								fr
    +								Appareil photo
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -7529,6 +7665,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Cancel
    +							localizations
    +							
    +								en
    +								Cancel
    +								fr
    +								Annuler
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -7579,6 +7740,81 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Cannot transfert  file from remote pary
    +							localizations
    +							
    +								en
    +								Cannot transfert  file from remote pary
    +								fr
    +								Impossible de transferer depuis destinataire
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Cannot transfert file from remote pary
    +							localizations
    +							
    +								en
    +								Cannot transfert file from remote pary
    +								fr
    +								Impossible de transferer depuis destinataire
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Cannot transfert file to remote pary
    +							localizations
    +							
    +								en
    +								Cannot transfert file to remote pary
    +								fr
    +								Impossible de transferer au destinataire
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -7904,6 +8140,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Ignore
    +							localizations
    +							
    +								en
    +								Ignore
    +								fr
    +								Ignoner
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -7954,6 +8215,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Image sent
    +							localizations
    +							
    +								en
    +								Image sent
    +								fr
    +								Image envoyé
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -7979,6 +8265,56 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Incoming file
    +							localizations
    +							
    +								en
    +								Incoming file
    +								fr
    +								Fichier entrant
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Incoming file stored to your photo library
    +							localizations
    +							
    +								en
    +								Incoming file stored to your photo library
    +								fr
    +								Fichier entrant stocké
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8004,6 +8340,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							It seems you have not configured any proxy server from settings
    +							localizations
    +							
    +								en
    +								It seems you have not configured any proxy server from settings
    +								fr
    +								Il semble qu'il n'y est pas de serveur SIP configuré
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8102,6 +8463,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Never remind
    +							localizations
    +							
    +								en
    +								Never remind
    +								fr
    +								Ne pas me rappeler
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8152,31 +8538,6 @@ La cause était: %2$@
     							snapshots
     							
     						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							No comment provided by engineer.
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							No SIP account defined
    -							localizations
    -							
    -								en
    -								No SIP account defined
    -								fr
    -								Aucun compte SIP défini
    -							
    -							snapshots
    -							
    -						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8202,31 +8563,6 @@ La cause était: %2$@
     							snapshots
     							
     						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							InAppSettingsKit
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							OK
    -							localizations
    -							
    -								en
    -								OK
    -								fr
    -								OK
    -							
    -							snapshots
    -							
    -						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8252,6 +8588,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							InAppSettingsKit
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							OK
    +							localizations
    +							
    +								en
    +								OK
    +								fr
    +								OK
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8327,6 +8688,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Photo library
    +							localizations
    +							
    +								en
    +								Photo library
    +								fr
    +								Photos
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8477,6 +8863,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Select picture source
    +							localizations
    +							
    +								en
    +								Select picture source
    +								fr
    +								Selectionner une source d'image
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8783,6 +9194,56 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Tranfer error
    +							localizations
    +							
    +								en
    +								Tranfer error
    +								fr
    +								Erreur de transfert
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Transfer error
    +							localizations
    +							
    +								en
    +								Transfer error
    +								fr
    +								Erreur de transfert
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8833,6 +9294,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Warning
    +							localizations
    +							
    +								en
    +								Warning
    +								fr
    +								Attention
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8939,6 +9425,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							No SIP account defined
    +							localizations
    +							
    +								en
    +								No SIP account defined
    +								fr
    +								Aucun compte SIP défini
    +							
    +							snapshots
    +							
    +						
     					
     					plist file
     					
    diff --git a/linphone.ldb/Resources/Classes/ChatRoomViewController/11/ChatRoomViewController.xib b/linphone.ldb/Resources/Classes/ChatRoomViewController/12/ChatRoomViewController.xib
    similarity index 82%
    rename from linphone.ldb/Resources/Classes/ChatRoomViewController/11/ChatRoomViewController.xib
    rename to linphone.ldb/Resources/Classes/ChatRoomViewController/12/ChatRoomViewController.xib
    index 76a72edf1..dd7c2c6ba 100644
    --- a/linphone.ldb/Resources/Classes/ChatRoomViewController/11/ChatRoomViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ChatRoomViewController/12/ChatRoomViewController.xib
    @@ -15,6 +15,7 @@
     			IBUIButton
     			IBUIImageView
     			IBUILabel
    +			IBUIProgressView
     			IBUITableView
     			IBUITableViewController
     			IBUITapGestureRecognizer
    @@ -139,7 +140,7 @@
     								
     								
     								_NS:9
    -								
    +								
     									3
     									MQA
     								
    @@ -258,6 +259,81 @@
     										
     										IBCocoaTouchFramework
     									
    +									
    +										
    +										292
    +										
    +											
    +												
    +												292
    +												{{238, 11}, {62, 37}}
    +												
    +												
    +												_NS:9
    +												NO
    +												IBCocoaTouchFramework
    +												0
    +												0
    +												1
    +												cancel
    +												
    +												
    +													1
    +													MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +												
    +												
    +												
    +												
    +											
    +											
    +												
    +												292
    +												{{7, 25}, {213, 9}}
    +												
    +												
    +												
    +												_NS:9
    +												NO
    +												IBCocoaTouchFramework
    +												0.5
    +											
    +										
    +										{320, 59}
    +										
    +										
    +										
    +										_NS:9
    +										
    +											3
    +											MQA
    +											
    +												2
    +											
    +										
    +										IBCocoaTouchFramework
    +									
    +									
    +										
    +										292
    +										{{6, 11}, {50, 37}}
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										1
    +										Pict
    +										
    +										
    +											1
    +											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +										
    +										
    +										
    +										
    +									
     								
     								{{0, 357}, {320, 59}}
     								
    @@ -500,6 +576,38 @@
     					
     					71
     				
    +				
    +					
    +						transfertView
    +						
    +						
    +					
    +					76
    +				
    +				
    +					
    +						cancelTransfertButton
    +						
    +						
    +					
    +					77
    +				
    +				
    +					
    +						imageTransferProgressBar
    +						
    +						
    +					
    +					79
    +				
    +				
    +					
    +						pictButton
    +						
    +						
    +					
    +					80
    +				
     				
     					
     						dataSource
    @@ -569,6 +677,24 @@
     					
     					62
     				
    +				
    +					
    +						onPictClick:
    +						
    +						
    +						7
    +					
    +					81
    +				
    +				
    +					
    +						onTransferCancelClick:
    +						
    +						
    +						7
    +					
    +					78
    +				
     			
     			
     				
    @@ -687,6 +813,8 @@
     							
     							
     							
    +							
    +							
     						
     						
     						footerView
    @@ -731,6 +859,34 @@
     						
     						messageField
     					
    +					
    +						72
    +						
    +						
    +							
    +							
    +						
    +						
    +						transferView
    +					
    +					
    +						75
    +						
    +						
    +						cancel
    +					
    +					
    +						74
    +						
    +						
    +						progressBar
    +					
    +					
    +						73
    +						
    +						
    +						pictureButton
    +					
     				
     			
     			
    @@ -760,6 +916,10 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -769,7 +929,7 @@
     			
     			
     			
    -			71
    +			81
     		
     		
     			
    @@ -789,7 +949,9 @@
     						id
     						id
     						id
    +						id
     						id
    +						id
     					
     					
     						
    @@ -808,25 +970,37 @@
     							onMessageChange:
     							id
     						
    +						
    +							onPictClick:
    +							id
    +						
     						
     							onSendClick:
     							id
     						
    +						
    +							onTransferCancelClick:
    +							id
    +						
     					
     					
     						UILabel
     						UIImageView
    +						UIButton
     						UIView
     						UIToggleButton
     						UIImageView
     						UIView
     						UIView
    +						UIProgressView
     						UITapGestureRecognizer
     						UIImageView
     						HPGrowingTextView
     						UIView
    +						UIButton
     						UIButton
     						ChatRoomTableViewController
    +						UIView
     					
     					
     						
    @@ -837,6 +1011,10 @@
     							avatarImage
     							UIImageView
     						
    +						
    +							cancelTransfertButton
    +							UIButton
    +						
     						
     							chatView
     							UIView
    @@ -857,6 +1035,10 @@
     							headerView
     							UIView
     						
    +						
    +							imageTransferProgressBar
    +							UIProgressView
    +						
     						
     							listTapGestureRecognizer
     							UITapGestureRecognizer
    @@ -873,6 +1055,10 @@
     							messageView
     							UIView
     						
    +						
    +							pictButton
    +							UIButton
    +						
     						
     							sendButton
     							UIButton
    @@ -881,6 +1067,10 @@
     							tableController
     							ChatRoomTableViewController
     						
    +						
    +							transfertView
    +							UIView
    +						
     					
     					
     						IBProjectSource
    diff --git a/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings b/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings
    index 7bb5ecb9f7486359e18aa4a353367318225cc2b2..d2123bd9c9fbc02cbcbd192765c91a1d87243990 100644
    GIT binary patch
    delta 1421
    zcmb_cO=}ZT6n!(brcMUY2Ac28OC<%}NQ59&>j%0ihy*NF4Hd_BtdY!gn2ADn;?j-C
    z1-FXp;MWwF{RtJ^E4Yy?t7{R@dov-UX^I*dGIMj^z4x7W&w2MpbMv9{`h`l{%CzEB
    zO0D62P`O6+F^xLvOZ*B&&f08^adw$m%wzXilP$xVhG&j(dZr#u?GQn4Dvh8%c71Qr
    zmT6`$0pIh?WRaJudV}i8Jwa#RekCvJwtfqAL9l1t$0)1{LEPsV$#0n9P+1+u3R1WRN
    z2-#KL3ce@LCiANxWKA|a(g+xxXVOcrDob=C{e?C%3rB5`uqx^B@peE>Jbqx6K2J61
    zX(mUmF+tt*Bt0^2lAD=KL`|lT>EgJwh4#eCxqkb7sbO*K6^J2h!a7ji15VCdc1KD>
    zsJsR7+=4e02x|U^DgyaLwo{(R&KzR3@Ywir7GmJo-^9(bsGKtr9JT{-mQ%;+(~R~H
    zSzC##!AAD9TC+q^dBl+MCJL{_+I$JC0}=GKU{bCy73hTv3TdT_^t^PJwzEg*L8%p7
    zF*cQxL)sOqTp!xfCq{#A9MS_`emlM>uIaMuii^GrOE4m?t{<@zn>8peX3!tx$mz2+
    z)75GVl1e9<4;<+p9wE=Z*al+gao(Kmd3&>E_uN>N$PV6BPbrl}sUim_bD;G8hQIj5
    KybZn`)77676E(>I
    
    delta 147
    zcmdnj#P~0B!y=~1cUZV4$1$&)tjB7$S%y`LZSw|h0mjLB0vwYwcm*~G@hUKGjuG_Y
    zo~$7IWO5yEz~l#VvnER^uG*}mY{xWNOigMtkD3eP1JhBSsuhP=s})pU_~
    u@72~$j#Ji}Y@m@d`GvaN<^T;Yrp+I;_OWhGF?_
    Date: Fri, 14 Sep 2012 16:51:41 +0200
    Subject: [PATCH 218/397] Improve ChatRoomView
    
    ---
     Classes/ChatRoomViewController.h              |  17 +-
     Classes/ChatRoomViewController.m              | 435 ++++++------
     ...ViewController.h => ImageViewController.h} |  12 +-
     Classes/ImageViewController.m                 |  71 ++
     Classes/ImageViewerViewController.m           |  62 --
     Classes/PhoneMainView.h                       |   1 +
     Classes/Utils/DTFoundation/DTActionSheet.h    |  49 ++
     Classes/Utils/DTFoundation/DTActionSheet.m    | 191 ++++++
     Classes/en.lproj/ChatRoomViewController.xib   | 335 +++++----
     Classes/en.lproj/ChatViewController.xib       |  10 +-
     Classes/en.lproj/HistoryViewController.xib    |   2 +-
     Classes/en.lproj/ImageViewController.xib      | 299 ++++++++
     Classes/fr.lproj/ChatRoomViewController.xib   | 325 +++++----
     Classes/fr.lproj/ChatViewController.xib       |  10 +-
     Classes/fr.lproj/HistoryViewController.xib    |   5 +-
     .../ImageViewController.xib}                  | 217 +++---
     Resources/en.lproj/Localizable.strings        | Bin 16702 -> 15680 bytes
     Resources/fr.lproj/Localizable.strings        | Bin 17176 -> 16172 bytes
     Settings/InAppSettings.bundle/Advanced.plist  |   2 +-
     .../en.lproj/Advanced.strings                 |   3 +
     .../fr.lproj/Advanced.strings                 |   3 +
     linphone.ldb/Contents.plist                   | 649 ++++++++++++------
     .../{12 => 15}/ChatRoomViewController.xib     | 335 +++++----
     .../{2 => 3}/ChatViewController.xib           |  10 +-
     .../{1 => 2}/HistoryViewController.xib        |   2 +-
     .../3/ImageViewController.xib                 | 299 ++++++++
     .../Advanced/1/Advanced.strings               |   3 +
     .../Localizable/1/Localizable.strings         | Bin 16702 -> 15680 bytes
     linphone.xcodeproj/project.pbxproj            |  89 ++-
     29 files changed, 2345 insertions(+), 1091 deletions(-)
     rename Classes/{ImageViewerViewController.h => ImageViewController.h} (86%)
     create mode 100644 Classes/ImageViewController.m
     delete mode 100644 Classes/ImageViewerViewController.m
     create mode 100755 Classes/Utils/DTFoundation/DTActionSheet.h
     create mode 100755 Classes/Utils/DTFoundation/DTActionSheet.m
     create mode 100644 Classes/en.lproj/ImageViewController.xib
     rename Classes/{ImageViewerViewController.xib => fr.lproj/ImageViewController.xib} (56%)
     rename linphone.ldb/Resources/Classes/ChatRoomViewController/{12 => 15}/ChatRoomViewController.xib (88%)
     rename linphone.ldb/Resources/Classes/ChatViewController/{2 => 3}/ChatViewController.xib (100%)
     rename linphone.ldb/Resources/Classes/HistoryViewController/{1 => 2}/HistoryViewController.xib (99%)
     create mode 100644 linphone.ldb/Resources/Classes/ImageViewController/3/ImageViewController.xib
    
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index 578301aab..282d2087e 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -27,14 +27,11 @@
     
     #include "linphonecore.h"
     
    -@interface ChatRoomViewController : UIViewController {
    +@interface ChatRoomViewController : UIViewController {
         @private
         LinphoneChatRoom *chatRoom;
    -	NSString *_remoteAddress;
    -	UIActionSheet* photoSourceSelector;
    -	NSURLConnection* uploadCnx;
    -	NSURLConnection* downloadCnx;
    -	NSString* pendingFileUrl; /*Url received from the remote party to be downloaded*/
    +	NSURLConnection* uploadContext;
    +	NSURLConnection* downloadContext;
     	NSMutableData* downloadedData;
     	NSInteger totalBytesExpectedToRead;
     }
    @@ -55,17 +52,17 @@
     @property (nonatomic, retain) IBOutlet UITapGestureRecognizer *listTapGestureRecognizer;
     
     @property (nonatomic, copy) NSString *remoteAddress;
    -@property (nonatomic, retain) IBOutlet UIButton* pictButton;
    -@property (nonatomic, retain) IBOutlet UIButton* cancelTransfertButton;
    +@property (nonatomic, retain) IBOutlet UIButton* pictureButton;
    +@property (nonatomic, retain) IBOutlet UIButton* cancelTransferButton;
     @property (nonatomic, retain) IBOutlet UIProgressView* imageTransferProgressBar;
    -@property (nonatomic, retain) IBOutlet UIView* transfertView;
    +@property (nonatomic, retain) IBOutlet UIView* transferView;
     
     
     - (IBAction)onBackClick:(id)event;
     - (IBAction)onEditClick:(id)event;
     - (IBAction)onMessageChange:(id)sender;
     - (IBAction)onSendClick:(id)event;
    -- (IBAction)onPictClick:(id)event;
    +- (IBAction)onPictureClick:(id)event;
     - (IBAction)onTransferCancelClick:(id)event;
     - (IBAction)onListTap:(id)sender;
     
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index ffd1b36fb..746adb0c3 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -22,10 +22,7 @@
     #import 
     #import 
     #import 
    -#import "ImageViewerViewController.h"
    -
    -#define FILE_DOWNLOAD_ACTION_SHEET 1
    -#define FILE_CHOOSER_ACTION_SHEET 2
    +#import "DTActionSheet.h"
     
     @implementation ChatRoomViewController
     
    @@ -33,7 +30,7 @@
     @synthesize sendButton;
     @synthesize messageField;
     @synthesize editButton;
    -@synthesize remoteAddress = _remoteAddress;
    +@synthesize remoteAddress;
     @synthesize addressLabel;
     @synthesize avatarImage;
     @synthesize headerView;
    @@ -43,10 +40,12 @@
     @synthesize messageBackgroundImage;
     @synthesize footerBackgroundImage;
     @synthesize listTapGestureRecognizer;
    -@synthesize pictButton;
    +@synthesize pictureButton;
     @synthesize imageTransferProgressBar;
    -@synthesize cancelTransfertButton;
    -@synthesize transfertView;
    +@synthesize cancelTransferButton;
    +@synthesize transferView;
    +
    +
     #pragma mark - Lifecycle Functions
     
     - (id)init {
    @@ -63,7 +62,7 @@
         [messageField release];
         [sendButton release];
         [editButton release];
    -    [_remoteAddress release];
    +    [remoteAddress release];
         [addressLabel release];
         [avatarImage release];
         [headerView release];
    @@ -71,11 +70,13 @@
         [messageView release];
         [messageBackgroundImage release];
         [footerBackgroundImage release];
    +    
         [listTapGestureRecognizer release];
    -	[transfertView release];
    -	[pictButton release];
    +    
    +	[transferView release];
    +	[pictureButton release];
     	[imageTransferProgressBar release];
    -	[cancelTransfertButton release];
    +	[cancelTransferButton release];
         [super dealloc];
     }
     
    @@ -117,7 +118,8 @@ static UICompositeViewDescription *compositeDescription = nil;
     	messageField.font = [UIFont systemFontOfSize:18.0f];
         messageField.contentInset = UIEdgeInsetsZero;
         messageField.backgroundColor = [UIColor clearColor];
    -	[self enableTransfertView:FALSE];
    +	[self enableTransferView:FALSE];
    +    [sendButton setEnabled:FALSE];
     }
     
     
    @@ -150,18 +152,21 @@ static UICompositeViewDescription *compositeDescription = nil;
         [footerBackgroundImage setImage:[TUNinePatchCache imageOfSize:[footerBackgroundImage bounds].size
                                                    forNinePatchNamed:@"chat_background"]];
     	BOOL fileSharingEnabled = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"] != NULL 
    -								&& [[[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"] length]>0 ;
    -	[pictButton setHidden:!fileSharingEnabled];
    -	
    -	CGRect frame = messageView.frame;
    +								&& [[[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"] length]>0;
    +    
    +    CGRect pictureFrame = pictureButton.frame;
    +	CGRect messageframe = messageView.frame;
    +    CGRect sendFrame = sendButton.frame;
     	if (fileSharingEnabled) {
    -		frame.origin.x=61;
    -		frame.size.width=175;
    +        [pictureButton setHidden:FALSE];
    +        messageframe.origin.x = pictureFrame.origin.x + pictureFrame.size.width;
    +        messageframe.size.width = sendFrame.origin.x - messageframe.origin.x;
     	} else {
    -		frame.origin.x=0;
    -		frame.size.width=175+61;
    +        [pictureButton setHidden:TRUE];
    +        messageframe.origin.x = pictureFrame.origin.x;
    +        messageframe.size.width = sendFrame.origin.x - messageframe.origin.x;
     	}
    -	[messageView setFrame:frame];
    +	[messageView setFrame:messageframe];
     	
     }
     
    @@ -196,24 +201,24 @@ static UICompositeViewDescription *compositeDescription = nil;
     #pragma mark - 
     
     - (void)setRemoteAddress:(NSString*)aRemoteAddress {
    -    if(_remoteAddress != nil) {
    -        [_remoteAddress release];
    +    if(remoteAddress != nil) {
    +        [remoteAddress release];
         }
    -    _remoteAddress = [aRemoteAddress copy];
    +    remoteAddress = [aRemoteAddress copy];
         [messageField setText:@""];
         [self update];
    -	[tableController setRemoteAddress: _remoteAddress];
    +	[tableController setRemoteAddress: remoteAddress];
     }
     
     - (void)update {
    -    if(_remoteAddress == NULL) {
    +    if(remoteAddress == NULL) {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat room header: null contact"];
             return;
         }
         
         NSString *displayName = nil;
         UIImage *image = nil;
    -	LinphoneAddress* linphoneAddress = linphone_core_interpret_url([LinphoneManager getLc], [_remoteAddress UTF8String]);
    +	LinphoneAddress* linphoneAddress = linphone_core_interpret_url([LinphoneManager getLc], [remoteAddress UTF8String]);
     	if (linphoneAddress == NULL) {
             [[PhoneMainView instance] popCurrentView];
     		UIAlertView* error = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Invalid SIP address",nil)
    @@ -234,8 +239,8 @@ static UICompositeViewDescription *compositeDescription = nil;
             displayName = [FastAddressBook getContactDisplayName:acontact];
             image = [FastAddressBook getContactImage:acontact thumbnail:true];
         }
    -	[_remoteAddress release];
    -    _remoteAddress = [normalizedSipAddress retain];
    +	[remoteAddress release];
    +    remoteAddress = [normalizedSipAddress retain];
         
         // Display name
         if(displayName == nil) {
    @@ -267,17 +272,17 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot send message: Linphone core not ready"];
             return FALSE;
         }
    -    if(_remoteAddress == nil) {
    +    if(remoteAddress == nil) {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot send message: Null remoteAddress"];
             return FALSE;
         }
         if(chatRoom == NULL) {
    -		chatRoom = linphone_core_create_chat_room([LinphoneManager getLc], [_remoteAddress UTF8String]);
    +		chatRoom = linphone_core_create_chat_room([LinphoneManager getLc], [remoteAddress UTF8String]);
         }
         
         // Save message in database
         ChatModel *chat = [[ChatModel alloc] init];
    -    [chat setRemoteContact:_remoteAddress];
    +    [chat setRemoteContact:remoteAddress];
         [chat setLocalContact:@""];
         [chat setMessage:message];
         [chat setDirection:[NSNumber numberWithInt:0]];
    @@ -286,7 +291,8 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     	[chat setState:[NSNumber numberWithInt:1]]; //INPROGRESS
         [chat create];
         [tableController addChatEntry:chat];
    -   // [chat release]; commenting this line avoid a crash on first message sent, specially when picture
    +    [chat release];
    +    
         LinphoneChatMessage* msg = linphone_chat_room_create_message(chatRoom, [message UTF8String]);
     	linphone_chat_message_set_user_data(msg, chat);
         if (url) {
    @@ -309,7 +315,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
             char *fromStr = linphone_address_as_string_uri_only(from);
             if(fromStr != NULL) {
                 if([[NSString stringWithUTF8String:fromStr] 
    -                caseInsensitiveCompare:_remoteAddress] == NSOrderedSame) {
    +                caseInsensitiveCompare:remoteAddress] == NSOrderedSame) {
                     [chat setRead:[NSNumber numberWithInt:1]];
                     [chat update];
                     [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneTextReceived object:self];
    @@ -317,16 +323,18 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
                 }
                 ms_free(fromStr);
             }
    +
     		if ([[notif userInfo] objectForKey:@"external_body_url"]) {
    -			pendingFileUrl=[[[notif userInfo] objectForKey:@"external_body_url"] retain];
    -			UIActionSheet* new_incoming_file = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Incoming file stored to your photo library",nil)
    -																		   delegate:self 
    -																  cancelButtonTitle:NSLocalizedString(@"Ignore",nil) 
    -															 destructiveButtonTitle:nil
    -																  otherButtonTitles:NSLocalizedString(@"Accept",nil),nil]; 
    -			[new_incoming_file setTag:FILE_DOWNLOAD_ACTION_SHEET];
    -			[new_incoming_file showInView:self.view];
    -			[new_incoming_file release];
    +			NSString *pendingFileUrl = [[[notif userInfo] objectForKey:@"external_body_url"] retain];
    +            
    +			DTActionSheet *sheet = [[[DTActionSheet alloc] initWithTitle:NSLocalizedString(@"Incoming file stored to your photo library",nil)] autorelease];
    +            [sheet addButtonWithTitle:NSLocalizedString(@"Accept",nil) block:^(){
    +                [downloadContext release];
    +                downloadContext = [self downloadImageFrom:pendingFileUrl];
    +                [self startDownload];
    +            }];
    +            [sheet addCancelButtonWithTitle:NSLocalizedString(@"Ignore",nil)];
    +            [sheet showInView:self.view];
     		}
     	} else {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Invalid textReceivedEvent"];
    @@ -384,6 +392,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     - (IBAction)onSendClick:(id)event {
         if([self sendMessage:[messageField text] withExterlBodyUrl:nil]) {
             [messageField setText:@""];
    +        [self onMessageChange:nil];
         }
     }
     
    @@ -399,246 +408,210 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         }
     }
     
    -- (IBAction)onPictClick:(id)event {
    -	
    -    photoSourceSelector = [[UIActionSheet alloc] initWithTitle:NSLocalizedString(@"Select picture source",nil)
    -													 delegate:self 
    -											cancelButtonTitle:NSLocalizedString(@"Cancel",nil) 
    -									   destructiveButtonTitle:nil
    -											otherButtonTitles:NSLocalizedString(@"Camera",nil),NSLocalizedString(@"Photo library",nil), nil];
    +- (IBAction)onPictureClick:(id)event {
    +	[messageField resignFirstResponder];
         
    -    photoSourceSelector.actionSheetStyle = UIActionSheetStyleDefault;
    -	[photoSourceSelector setTag:FILE_CHOOSER_ACTION_SHEET];
    -    [photoSourceSelector showInView:self.view];
    -    [photoSourceSelector release];
    -
    -	
    +    DTActionSheet *sheet = [[[DTActionSheet alloc] initWithTitle:NSLocalizedString(@"Select picture source",nil)] autorelease];
    +    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
    +	    [sheet addButtonWithTitle:NSLocalizedString(@"Camera",nil) block:^(){
    +            UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
    +            mediaUI.sourceType = UIImagePickerControllerSourceTypeCamera;
    +            
    +            // Displays a control that allows the user to choose picture or
    +            // movie capture, if both are available:
    +            mediaUI.mediaTypes =
    +            [UIImagePickerController availableMediaTypesForSourceType:
    +             UIImagePickerControllerSourceTypeCamera];
    +            
    +            // Hides the controls for moving & scaling pictures, or for
    +            // trimming movies. To instead show the controls, use YES.
    +            mediaUI.allowsEditing = NO;
    +            mediaUI.delegate = self;
    +            [self presentModalViewController: mediaUI animated: YES];
    +        }];
    +	}
    +	if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
    +	    [sheet addButtonWithTitle:NSLocalizedString(@"Photo library",nil) block:^(){
    +            UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
    +            mediaUI.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    +            
    +            // Displays saved pictures and movies, if both are available, from the
    +            // Camera Roll album.
    +            mediaUI.mediaTypes =
    +            [UIImagePickerController availableMediaTypesForSourceType:
    +             UIImagePickerControllerSourceTypePhotoLibrary];
    +            
    +            // Hides the controls for moving & scaling pictures, or for
    +            // trimming movies. To instead show the controls, use YES.
    +            mediaUI.allowsEditing = NO;
    +            mediaUI.delegate = self;
    +            [self presentModalViewController: mediaUI animated: YES];
    +        }];
    +	}
    +    [sheet addCancelButtonWithTitle:NSLocalizedString(@"Cancel",nil)];
    +    [sheet showInView:self.view];
     }
    +
     - (IBAction)onTransferCancelClick:(id)event {
    -	[uploadCnx cancel];
    -	[downloadCnx cancel];
    -	[self stopUpload];
    -	[self stopDownload];
    -	[LinphoneLogger log:LinphoneLoggerLog format:@"File transfert interrupted by user "];
    +    if(uploadContext) {
    +        [uploadContext cancel];
    +        [self stopUpload];
    +    }
    +    if(downloadContext) {
    +    	[downloadContext cancel];
    +        [self stopDownload];
    +    }
    +	[LinphoneLogger log:LinphoneLoggerLog format:@"File transfer interrupted by user"];
     }
     
    --(void) enableTransfertView:(BOOL) isTranfer {
    +- (void)enableTransferView:(BOOL)isTranfer {
     	if (isTranfer) {
     		[imageTransferProgressBar setProgress:0.0];
     	} else {
    -		//[uploadCnx cancel];
    -		
    +		//[uploadContext cancel];
     	}
    -	[transfertView setHidden:!isTranfer];
    +    [footerView setHidden:isTranfer];
    +	[transferView setHidden:!isTranfer];
     	[imageTransferProgressBar setHidden:!isTranfer];
    -	[cancelTransfertButton setHidden:!isTranfer];
    -	[pictButton setHidden:isTranfer];
    +	[cancelTransferButton setHidden:!isTranfer];
     	[sendButton setEnabled:!isTranfer];
     }
     
    --(void) startUpload {
    -	[self enableTransfertView:TRUE];
    -}
    --(void) stopUpload {
    -	[self enableTransfertView:FALSE];
    -}
    --(void) startDownload {
    -	[self enableTransfertView:TRUE];
    -}
    --(void) stopDownload {
    -	[self enableTransfertView:FALSE];
    +- (void)startUpload {
    +	[self enableTransferView:TRUE];
     }
     
    --(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    -	
    -	switch (actionSheet.tag) {
    -		case FILE_CHOOSER_ACTION_SHEET: {
    -			UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
    -			switch (buttonIndex) {
    -				case 0: {
    -					if ([UIImagePickerController isSourceTypeAvailable:
    -						 UIImagePickerControllerSourceTypeCamera] == NO) {
    -						[LinphoneLogger log:LinphoneLoggerLog format:@"no camera found, using image library"];
    -					} else {
    -						mediaUI.sourceType = UIImagePickerControllerSourceTypeCamera;
    -						
    -						// Displays a control that allows the user to choose picture or
    -						// movie capture, if both are available:
    -						mediaUI.mediaTypes =
    -						[UIImagePickerController availableMediaTypesForSourceType:
    -						 UIImagePickerControllerSourceTypeCamera];
    -						
    -						// Hides the controls for moving & scaling pictures, or for
    -						// trimming movies. To instead show the controls, use YES.
    -						mediaUI.allowsEditing = NO;
    -						break;
    -					}
    -				}
    -				case 1: {
    -					
    -					mediaUI.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    -					
    -					// Displays saved pictures and movies, if both are available, from the
    -					// Camera Roll album.
    -					mediaUI.mediaTypes =
    -					[UIImagePickerController availableMediaTypesForSourceType:
    -					 UIImagePickerControllerSourceTypePhotoLibrary];
    -					
    -					// Hides the controls for moving & scaling pictures, or for
    -					// trimming movies. To instead show the controls, use YES.
    -					mediaUI.allowsEditing = NO;
    -					
    -					break;
    -				}
    -				default: 
    -					[mediaUI release];
    -					return ;break;
    -					
    -			}
    -			mediaUI.delegate = self;
    -			[self presentModalViewController: mediaUI animated: YES];
    -			break;
    -		}
    -		case FILE_DOWNLOAD_ACTION_SHEET: {
    -			switch (buttonIndex) {
    -				case 0: 
    -					[downloadCnx release];
    -					downloadCnx= [self downloadImageFrom:pendingFileUrl];
    -					[self startDownload];
    -					break;
    -				case 1: 
    -				default: {
    -					//nop
    -				}
    -			break;
    -		}
    -			break;
    -		}
    -			default: 
    -			[LinphoneLogger log:LinphoneLoggerError format:@"Unexpected action sheet result for tag [%i]",actionSheet.tag];
    -			
    -	}
    -	
    +- (void)stopUpload {
    +	[self enableTransferView:FALSE];
     }
    +
    +- (void)startDownload {
    +	[self enableTransferView:TRUE];
    +}
    +
    +- (void)stopDownload {
    +	[self enableTransferView:FALSE];
    +}
    +
    +
     #pragma mark - NSURLConnectionDelegate
    +
     - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    -	UIAlertView* errorAlert = [UIAlertView alloc];
    -	if (connection == uploadCnx) {
    +	if (connection == uploadContext) {
     		[self stopUpload];
    -		[LinphoneLogger log:LinphoneLoggerError format:@"Cannot upload file to server [%@] because [%@]",[[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url"],[error localizedDescription]];
    -		[errorAlert	initWithTitle:NSLocalizedString(@"Tranfer error",nil)
    -						  message:NSLocalizedString(@"Cannot transfert file to remote pary",nil) 
    +        NSString *serverUrl = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url"];
    +		[LinphoneLogger log:LinphoneLoggerError format:@"Cannot upload file to server [%@] because [%@]", serverUrl, [error localizedDescription]];
    +        	UIAlertView* errorAlert = [UIAlertView alloc];
    +		[errorAlert	initWithTitle:NSLocalizedString(@"Transfer error", nil)
    +						  message:NSLocalizedString(@"Cannot transfer file to remote contact", nil) 
     						 delegate:nil 
     				cancelButtonTitle:NSLocalizedString(@"Ok",nil) 
     				otherButtonTitles:nil ,nil];
     		[errorAlert show];
    -	}else if (connection == downloadCnx) {
    -		[LinphoneLogger log:LinphoneLoggerError format:@"Cannot dowanlod file from [%@] because [%@]",pendingFileUrl,[error localizedDescription]];
    -		[errorAlert	initWithTitle:NSLocalizedString(@"Tranfer error",nil)
    -						  message:NSLocalizedString(@"Cannot transfert file from remote pary",nil) 
    +        [errorAlert release];
    +	}else if (connection == downloadContext) {
    +		[LinphoneLogger log:LinphoneLoggerError format:@"Cannot dowanlod file from [%@] because [%@]", [connection.currentRequest.URL absoluteString], [error localizedDescription]];
    +        	UIAlertView* errorAlert = [UIAlertView alloc];
    +		[errorAlert	initWithTitle:NSLocalizedString(@"Transfer error", nil)
    +						  message:NSLocalizedString(@"Cannot transfer file from remote contact", nil)
     						 delegate:nil 
    -				cancelButtonTitle:NSLocalizedString(@"Continue",nil) 
    -				otherButtonTitles:nil ,nil];		
    +				cancelButtonTitle:NSLocalizedString(@"Continue", nil) 
    +				otherButtonTitles:nil, nil];		
     		[errorAlert show];
    +        [errorAlert release];
     	} else {
    -		[LinphoneLogger log:LinphoneLoggerError format:@"Unknown connection error [%@]",[error localizedDescription]];
    +        [LinphoneLogger log:LinphoneLoggerError format:@"Invalid file transfer connection", connection];
     	}
    -	[errorAlert release];
    -	
     }
     
    --(void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite {
    +- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite {
     	[imageTransferProgressBar setProgress:(float)((float)totalBytesWritten/(float)totalBytesExpectedToWrite) animated:FALSE];
     	
     }
    +
     - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    -	if (connection == uploadCnx) {
    +	if (connection == uploadContext) {
     		NSString* imageRemoteUrl=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    -		[LinphoneLogger log:LinphoneLoggerLog format:@"File can be downloaded from [%@]",imageRemoteUrl];
    +		[LinphoneLogger log:LinphoneLoggerLog format:@"File can be downloaded from [%@]", imageRemoteUrl];
     		[self sendMessage:NSLocalizedString(@"Image sent",nil) withExterlBodyUrl:imageRemoteUrl];
    -	} else if (connection == downloadCnx) {
    -		if (downloadedData == nil) downloadedData = [[NSMutableData alloc] initWithCapacity:4096];
    +	} else if (connection == downloadContext) {
    +		if (downloadedData == nil) downloadedData = [[NSMutableData alloc] initWithCapacity:[data length]];
     		[downloadedData appendData:data];
    -		[imageTransferProgressBar setProgress:(float)((float)downloadedData.length/(float)totalBytesExpectedToRead) animated:FALSE];
    +		[imageTransferProgressBar setProgress:((float)downloadedData.length/(float)totalBytesExpectedToRead) animated:FALSE];
     	} else {
    -		[LinphoneLogger log:LinphoneLoggerError format:@"Unknown received value error"];
    +        [LinphoneLogger log:LinphoneLoggerError format:@"Invalid file transfer connection", connection];
     	}
     }
    +
     - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
     	NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse *) response;
     	int statusCode = httpResponse.statusCode;;	
    -	[LinphoneLogger log:LinphoneLoggerLog format:@"File transfert status code [%i]",statusCode];
    -	UIAlertView* errorAlert = [UIAlertView alloc];
    -	if (connection == uploadCnx) {
    +	[LinphoneLogger log:LinphoneLoggerLog format:@"File transfer status code [%i]",statusCode];
    +    
    +	if (connection == uploadContext) {
     		if (statusCode == 200) {
     			//nop
     		} else if (statusCode >= 400) {
    -			
    -			[errorAlert 	initWithTitle:NSLocalizedString(@"Transfer error",nil)
    -													message:NSLocalizedString(@"Cannot transfert file to remote pary",nil) 
    +            UIAlertView* errorAlert = [UIAlertView alloc];
    +			[errorAlert initWithTitle:NSLocalizedString(@"Transfer error",nil)
    +													message:NSLocalizedString(@"Cannot transfer file to remote contact",nil) 
     												   delegate:nil 
     										  cancelButtonTitle:NSLocalizedString(@"Continue",nil) 
     										  otherButtonTitles:nil ,nil];
     			[errorAlert show];
    -			
    +            [errorAlert release];
     		}
    -		
    -	} else if (connection == downloadCnx) {
    +	} else if (connection == downloadContext) {
     		if (statusCode == 200) {
    -			totalBytesExpectedToRead=[response expectedContentLength];
    +			totalBytesExpectedToRead = [response expectedContentLength];
     		} else if (statusCode >= 400) {
    +            UIAlertView* errorAlert = [UIAlertView alloc];
     			[errorAlert	initWithTitle:NSLocalizedString(@"Transfer error",nil)
    -													message:NSLocalizedString(@"Cannot transfert  file from remote pary",nil) 
    +													message:NSLocalizedString(@"Cannot transfer file from remote contact",nil)
     												   delegate:nil 
     										  cancelButtonTitle:NSLocalizedString(@"Continue",nil) 
     										  otherButtonTitles:nil ,nil];	
     			[errorAlert show];
    -		} else {
    -			//TODO
    -		}
    -		
    +            [errorAlert release];
    +		} 
     	} else {
    -		//FIXE
    +        [LinphoneLogger log:LinphoneLoggerError format:@"Invalid file transfer connection", connection];
     	}
    -	
    -	[errorAlert release];
    -	
    -	
     }
     
     - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    -	if (connection == uploadCnx) {
    -		//nothing to do [self enableTransfert:FALSE];
    +	if (connection == uploadContext) {
     		[self stopUpload];
    -		//[uploadCnx release];
    -		uploadCnx=nil;
    -	} else if (connection == downloadCnx) {
    +		uploadContext = nil;
    +	} else if (connection == downloadContext) {
     		ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    -		[library writeImageDataToSavedPhotosAlbum:downloadedData 
    +		[library writeImageDataToSavedPhotosAlbum:downloadedData
     										 metadata:nil
     								  completionBlock:^(NSURL *assetURL, NSError *error){
     									  if (error) {
    -										  [LinphoneLogger log:LinphoneLoggerError format:@"Cannot save image data downloaded  because [%@]",[error localizedDescription]];
    +										  [LinphoneLogger log:LinphoneLoggerError format:@"Cannot save image data downloaded [%@]",[error localizedDescription]];
     									  } else {
     										  [LinphoneLogger log:LinphoneLoggerLog format:@"Image saved to [%@]",[assetURL absoluteString]];
     									  }
    -									  
    -									  ImageViewerViewController* imageView = [[ImageViewerViewController alloc ]initWithNibName:@"ImageViewerViewController" bundle:[NSBundle mainBundle]];
    -									  [imageView setImageToDisplay:[UIImage imageWithData:downloadedData]];
    -									  [self presentModalViewController: imageView animated: YES];
    +                                      ImageViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ImageViewController compositeViewDescription] push:TRUE], ImageViewController);
    +                                      if(controller != nil) {
    +                                          [controller setImage:[UIImage imageWithData:downloadedData]];
    +                                      }
     									  [downloadedData release];
    -									  downloadedData=nil;
    +									  downloadedData = nil;
     								  }];
     		
     		
     		[library release];
     		[self stopDownload];
    -		//[downloadCnx release];
    -		downloadCnx=nil;
    +		downloadContext = nil;
    +	} else {
    +        [LinphoneLogger log:LinphoneLoggerError format:@"Invalid file transfer connection", connection];
     	}
     }
    --(NSURLConnection*) downloadImageFrom:(NSString*) address {
    -	[LinphoneLogger log:LinphoneLoggerLog format:@"downloading  [%@]",address];
    +
    +- (NSURLConnection*)downloadImageFrom:(NSString*)address {
    +	[LinphoneLogger log:LinphoneLoggerLog format:@"downloading [%@]", address];
     	NSURL* url = [NSURL URLWithString: address ];
     	NSURLRequest* request = [NSURLRequest requestWithURL:url
     											 cachePolicy:NSURLRequestUseProtocolCachePolicy
    @@ -648,7 +621,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     }
     
     
    --(NSURLConnection*) uploadImage:(UIImage*) image Named:(NSString*) name {
    +- (NSURLConnection*)uploadImage:(UIImage*)image Named:(NSString*)name {
     	/*
     	 turning the image into a NSData object
     	 getting the image back out of the UIImageView
    @@ -671,7 +644,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     	 You might want to generate a random boundary.. this is just the same 
     	 as my output from wireshark on a valid html post
     	 */
    -	NSString *boundary =@"---------------------------14737809831466499882746641449";
    +	NSString *boundary = @"---------------------------14737809831466499882746641449";
     	NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
     	[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
     	
    @@ -687,41 +660,39 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     	// setting the body of the post to the reqeust
     	[request setHTTPBody:body];
     	
    -	return [NSURLConnection connectionWithRequest:(NSURLRequest *)request 
    -										 delegate:self];
    +	return [NSURLConnection connectionWithRequest:(NSURLRequest *)request delegate:self];
     }
     
     #pragma mark UIImagePickerControllerDelegate
    -// For responding to the user tapping Cancel.
    -- (void) imagePickerControllerDidCancel: (UIImagePickerController *) picker {
    +
    +- (void)imagePickerControllerDidCancel:(UIImagePickerController *) picker {
         [self dismissModalViewControllerAnimated: YES];
         [picker release];
     }
     
    -- (void) imagePickerController: (UIImagePickerController *) picker
    - didFinishPickingMediaWithInfo: (NSDictionary *) info {
    -	
    +- (void)imagePickerController: (UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info {
         NSURL *imageURL = [info valueForKey: UIImagePickerControllerReferenceURL];
    -	UIImage* imageToUse = (UIImage *) [info objectForKey: UIImagePickerControllerOriginalImage];
    -	NSString* imageName;
    -	if (imageURL) {
    -		// extract id from asset-url ex: assets-library://asset/asset.JPG?id=1645156-6151-1513&ext=JPG
    -		NSArray *parameters = [[imageURL query] componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"=&"]];
    -		for (int i = 0; i < [parameters count]; i=i+2) {
    -			if ([(NSString*)[parameters objectAtIndex:i] isEqualToString:@"id"]) {
    -				imageName=[NSString stringWithFormat:@"%@.jpg",(NSString*)[parameters objectAtIndex:i+1]];
    -			}
    -		}
    -	} else {
    -		// must be "unique"
    -		imageName=[NSString stringWithFormat:@"%i.jpg",[imageToUse hash]];
    -	}
    -	uploadCnx =[self uploadImage:imageToUse Named: imageName];
    -	[self startUpload];
    -		
    +    UIImage* imageToUse = (UIImage *) [info objectForKey: UIImagePickerControllerOriginalImage];
    +    NSString* imageName;
    +    if (imageURL) {
    +        // extract id from asset-url ex: assets-library://asset/asset.JPG?id=1645156-6151-1513&ext=JPG
    +        NSArray *parameters = [[imageURL query] componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"=&"]];
    +        for (int i = 0; i < [parameters count]; i=i+2) {
    +            if ([(NSString*)[parameters objectAtIndex:i] isEqualToString:@"id"]) {
    +                imageName=[NSString stringWithFormat:@"%@.jpg",(NSString*)[parameters objectAtIndex:i+1]];
    +            }
    +        }
    +    } else {
    +        // must be "unique"
    +        imageName=[NSString stringWithFormat:@"%i.jpg",[imageToUse hash]];
    +    }
    +    uploadContext = [self uploadImage:imageToUse Named: imageName];
    +    [self startUpload];
    +    
         [picker.presentingViewController dismissModalViewControllerAnimated: YES];
         [picker release];
     }
    +
     #pragma mark - Keyboard Event Functions
     
     - (void)keyboardWillHide:(NSNotification *)notif {
    diff --git a/Classes/ImageViewerViewController.h b/Classes/ImageViewController.h
    similarity index 86%
    rename from Classes/ImageViewerViewController.h
    rename to Classes/ImageViewController.h
    index 24d29ac0e..7befe1552 100644
    --- a/Classes/ImageViewerViewController.h
    +++ b/Classes/ImageViewController.h
    @@ -1,4 +1,4 @@
    -/* ImageViewerViewController.h
    +/* ImageViewController.h
      *
      * Copyright (C) 2012  Belledonne Comunications, Grenoble, France
      *
    @@ -19,16 +19,16 @@
     
     #import 
     
    -@interface ImageViewerViewController : UIViewController {
    +#import "UICompositeViewController.h"
    +
    +@interface ImageViewController : UIViewController {
     	
     }
     
    -
    -
     @property (nonatomic, retain) IBOutlet UIImageView *imageView;
    -@property (nonatomic, retain) UIImage  *imageToDisplay;
    +@property (nonatomic, retain) UIImage  *image;
     @property (nonatomic, retain) IBOutlet UIButton *backButton;
     
    -
     - (IBAction)onBackClick:(id)sender;
    +
     @end
    \ No newline at end of file
    diff --git a/Classes/ImageViewController.m b/Classes/ImageViewController.m
    new file mode 100644
    index 000000000..e71d91e89
    --- /dev/null
    +++ b/Classes/ImageViewController.m
    @@ -0,0 +1,71 @@
    +/* ImageViewController.m
    + *
    + * Copyright (C) 2012  Belledonne Comunications, Grenoble, France
    + *
    + *  This program is free software; you can redistribute it and/or modify
    + *  it under the terms of the GNU General Public License as published by
    + *  the Free Software Foundation; either version 2 of the License, or   
    + *  (at your option) any later version.                                 
    + *                                                                      
    + *  This program is distributed in the hope that it will be useful,     
    + *  but WITHOUT ANY WARRANTY; without even the implied warranty of      
    + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       
    + *  GNU Library General Public License for more details.                
    + *                                                                      
    + *  You should have received a copy of the GNU General Public License   
    + *  along with this program; if not, write to the Free Software         
    + *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    + */ 
    +
    +#import "ImageViewController.h"
    +#import "PhoneMainView.h"
    +
    +@interface ImageViewController ()
    +
    +@end
    +
    +@implementation ImageViewController
    +
    +@synthesize imageView;
    +@synthesize backButton;
    +@synthesize image;
    +
    +#pragma mark - UICompositeViewDelegate Functions
    +
    +static UICompositeViewDescription *compositeDescription = nil;
    +
    ++ (UICompositeViewDescription *)compositeViewDescription {
    +    if(compositeDescription == nil) {
    +        compositeDescription = [[UICompositeViewDescription alloc] init:@"ImageView"
    +                                                                content:@"ImageViewController"
    +                                                               stateBar:nil
    +                                                        stateBarEnabled:false
    +                                                                 tabBar:nil
    +                                                          tabBarEnabled:false
    +                                                             fullscreen:false
    +                                                          landscapeMode:[LinphoneManager runningOnIpad]
    +                                                           portraitMode:true];
    +    }
    +    return compositeDescription;
    +}
    +
    +#pragma mark - Property Functions
    +
    +- (void)setImage:(UIImage *)aimage {
    +    imageView.image = aimage;
    +}
    +
    +- (UIImage *)image {
    +    return imageView.image;
    +}
    +
    +
    +#pragma mark - Action Functions
    +
    +- (IBAction)onBackClick:(id)sender {
    +    if([[[PhoneMainView instance] currentView] equal:[ImageViewController compositeViewDescription]]) {
    +        [[PhoneMainView instance] popCurrentView];
    +    }
    +}
    +
    +@end
    diff --git a/Classes/ImageViewerViewController.m b/Classes/ImageViewerViewController.m
    deleted file mode 100644
    index eb3bcd0ce..000000000
    --- a/Classes/ImageViewerViewController.m
    +++ /dev/null
    @@ -1,62 +0,0 @@
    -/* ImageViewerViewController.h
    - *
    - * Copyright (C) 2012  Belledonne Comunications, Grenoble, France
    - *
    - *  This program is free software; you can redistribute it and/or modify
    - *  it under the terms of the GNU General Public License as published by
    - *  the Free Software Foundation; either version 2 of the License, or   
    - *  (at your option) any later version.                                 
    - *                                                                      
    - *  This program is distributed in the hope that it will be useful,     
    - *  but WITHOUT ANY WARRANTY; without even the implied warranty of      
    - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       
    - *  GNU Library General Public License for more details.                
    - *                                                                      
    - *  You should have received a copy of the GNU General Public License   
    - *  along with this program; if not, write to the Free Software         
    - *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    - */ 
    -
    -
    -#import "ImageViewerViewController.h"
    -
    -@interface ImageViewerViewController ()
    -
    -@end
    -
    -@implementation ImageViewerViewController
    -@synthesize imageView;
    -@synthesize backButton;
    -@synthesize imageToDisplay;
    -
    -- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    -{
    -    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    -    if (self) {
    -        // Custom initialization
    -    }
    -    return self;
    -}
    -
    -- (void)viewDidLoad
    -{
    -    [super viewDidLoad];
    -    [imageView setImage:imageToDisplay];
    -}
    -
    -- (void)viewDidUnload
    -{
    -    [super viewDidUnload];
    -    // Release any retained subviews of the main view.
    -    // e.g. self.myOutlet = nil;
    -}
    -
    -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
    -{
    -    return (interfaceOrientation == UIInterfaceOrientationPortrait);
    -}
    -
    -- (IBAction)onBackClick:(id)sender {
    -	[self.presentingViewController dismissModalViewControllerAnimated: YES];
    -}
    -@end
    diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h
    index 4d6c91ede..e92f28834 100644
    --- a/Classes/PhoneMainView.h
    +++ b/Classes/PhoneMainView.h
    @@ -39,6 +39,7 @@
     #import "WizardViewController.h"
     #import "IncomingCallViewController.h"
     #import "ConsoleViewController.h"
    +#import "ImageViewController.h"
     
     @interface PhoneMainView : UIViewController {
         @private
    diff --git a/Classes/Utils/DTFoundation/DTActionSheet.h b/Classes/Utils/DTFoundation/DTActionSheet.h
    new file mode 100755
    index 000000000..2c2a8b23d
    --- /dev/null
    +++ b/Classes/Utils/DTFoundation/DTActionSheet.h
    @@ -0,0 +1,49 @@
    +//
    +//  DTActionSheet.h
    +//  DTFoundation
    +//
    +//  Created by Oliver Drobnik on 08.06.12.
    +//  Copyright (c) 2012 Cocoanetics. All rights reserved.
    +//
    +
    +typedef void (^DTActionSheetBlock)(void);
    +
    +/**
    + Extends UIActionSheet with support for blocks
    + */
    +
    +@interface DTActionSheet : UIActionSheet
    +
    +/**
    + Initializes the action sheet using the specified title. 
    + */
    +- (id)initWithTitle:(NSString *)title;
    +
    +/**
    + Adds a custom button to the action sheet.
    + @param title The title of the new button.
    + @param block The block to execute when the button is tapped.
    + @returns The index of the new button. Button indices start at 0 and increase in the order they are added.
    +*/ 
    +- (NSInteger)addButtonWithTitle:(NSString *)title block:(DTActionSheetBlock)block;
    +
    +/**
    + Adds a custom destructive button to the action sheet.
    + 
    + Since there can only be one destructive button a previously marked destructive button becomes a normal button.
    + @param title The title of the new button.
    + @param block The block to execute when the button is tapped.
    + @returns The index of the new button. Button indices start at 0 and increase in the order they are added.
    + */ 
    +- (NSInteger)addDestructiveButtonWithTitle:(NSString *)title block:(DTActionSheetBlock)block;
    +
    +/**
    + Adds a custom cancel button to the action sheet.
    + 
    + Since there can only be one cancel button a previously marked cancel button becomes a normal button.
    + @param title The title of the new button.
    + @returns The index of the new button. Button indices start at 0 and increase in the order they are added.
    + */ 
    +- (NSInteger)addCancelButtonWithTitle:(NSString *)title;
    +
    +@end
    diff --git a/Classes/Utils/DTFoundation/DTActionSheet.m b/Classes/Utils/DTFoundation/DTActionSheet.m
    new file mode 100755
    index 000000000..eeb2161bc
    --- /dev/null
    +++ b/Classes/Utils/DTFoundation/DTActionSheet.m
    @@ -0,0 +1,191 @@
    +//
    +//  DTActionSheet.m
    +//  DTFoundation
    +//
    +//  Created by Oliver Drobnik on 08.06.12.
    +//  Copyright (c) 2012 Cocoanetics. All rights reserved.
    +//
    +
    +#import "DTActionSheet.h"
    +
    +@interface DTActionSheet () 
    +
    +@end
    +
    +@implementation DTActionSheet
    +{
    +	id  _externalDelegate;
    +	
    +	NSMutableDictionary *_actionsPerIndex;
    +	
    +	// lookup bitmask what delegate methods are implemented
    +	struct 
    +	{
    +		unsigned int delegateSupportsActionSheetCancel:1;
    +		unsigned int delegateSupportsWillPresentActionSheet:1;
    +		unsigned int delegateSupportsDidPresentActionSheet:1;
    +		unsigned int delegateSupportsWillDismissWithButtonIndex:1;
    +		unsigned int delegateSupportsDidDismissWithButtonIndex:1;
    +	} _delegateFlags;
    +}
    +
    +- (id)init 
    +{
    +	self = [super init];
    +	if (self)
    +	{
    +		_actionsPerIndex = [[NSMutableDictionary alloc] init];
    +		self.delegate = self;
    +	}
    +	
    +	return self;
    +}
    +
    +// designated initializer
    +- (id)initWithTitle:(NSString *)title
    +{
    +	self = [self init];
    +	if (self) 
    +	{
    +		self.title = title;
    +	}
    +	
    +	return self;
    +}
    +
    +- (NSInteger)addButtonWithTitle:(NSString *)title block:(DTActionSheetBlock)block
    +{
    +	NSInteger retIndex = [self addButtonWithTitle:title];
    +	
    +	if (block)
    +	{
    +		NSNumber *key = [NSNumber numberWithInt:retIndex];
    +		[_actionsPerIndex setObject:[block copy] forKey:key];
    +	}
    +	
    +	return retIndex;
    +}
    +
    +- (NSInteger)addDestructiveButtonWithTitle:(NSString *)title block:(DTActionSheetBlock)block
    +{
    +	NSInteger retIndex = [self addButtonWithTitle:title block:block];
    +	[self setDestructiveButtonIndex:retIndex];
    +	
    +	return retIndex;
    +}
    +
    +- (NSInteger)addCancelButtonWithTitle:(NSString *)title
    +{
    +	NSInteger retIndex = [self addButtonWithTitle:title];
    +	[self setCancelButtonIndex:retIndex];
    +	
    +	return retIndex;
    +}
    +
    +#pragma UIActionSheetDelegate (forwarded)
    +
    +- (void)actionSheetCancel:(UIActionSheet *)actionSheet
    +{
    +	if (_delegateFlags.delegateSupportsActionSheetCancel)
    +	{
    +		[_externalDelegate actionSheetCancel:actionSheet];
    +	}
    +}
    +
    +- (void)willPresentActionSheet:(UIActionSheet *)actionSheet
    +{
    +	if (_delegateFlags.delegateSupportsWillPresentActionSheet)
    +	{
    +		[_externalDelegate willPresentActionSheet:actionSheet];	
    +	}
    +}
    +
    +- (void)didPresentActionSheet:(UIActionSheet *)actionSheet
    +{
    +	if (_delegateFlags.delegateSupportsDidPresentActionSheet)
    +	{
    +		[_externalDelegate didPresentActionSheet:actionSheet];
    +	}
    +}
    +
    +- (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex
    +{
    +	if (_delegateFlags.delegateSupportsWillDismissWithButtonIndex)
    +	{
    +		[_externalDelegate actionSheet:actionSheet willDismissWithButtonIndex:buttonIndex];
    +	}
    +}
    +
    +
    +- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex
    +{
    +	NSNumber *key = [NSNumber numberWithInt:buttonIndex];
    +	
    +	DTActionSheetBlock block = [_actionsPerIndex objectForKey:key];
    +	
    +	if (block)
    +	{
    +		block();
    +	}
    +
    +	if (_delegateFlags.delegateSupportsDidDismissWithButtonIndex)
    +	{
    +		[_externalDelegate actionSheet:actionSheet didDismissWithButtonIndex:buttonIndex];
    +	}
    +}
    +
    +
    +#pragma mark Properties
    +
    +- (id )delegate
    +{
    +	return _externalDelegate;
    +}
    +
    +- (void)setDelegate:(id )delegate
    +{
    +	if (delegate == self)
    +	{
    +		[super setDelegate:self];
    +	}
    +	else if (delegate == nil)
    +	{
    +		[super setDelegate:nil];
    +		_externalDelegate = nil;
    +	}
    +	else 
    +	{
    +		_externalDelegate = delegate;
    +	}
    +	
    +	// wipe
    +	memset(&_delegateFlags, 0, sizeof(_delegateFlags));
    +	
    +	// set flags according to available methods in delegate
    +	if ([_externalDelegate respondsToSelector:@selector(actionSheetCancel:)])
    +	{
    +		_delegateFlags.delegateSupportsActionSheetCancel = YES;
    +	}
    +
    +	if ([_externalDelegate respondsToSelector:@selector(willPresentActionSheet:)])
    +	{
    +		_delegateFlags.delegateSupportsWillPresentActionSheet = YES;
    +	}
    +
    +	if ([_externalDelegate respondsToSelector:@selector(didPresentActionSheet:)])
    +	{
    +		_delegateFlags.delegateSupportsDidPresentActionSheet = YES;
    +	}
    +
    +	if ([_externalDelegate respondsToSelector:@selector(actionSheet:willDismissWithButtonIndex:)])
    +	{
    +		_delegateFlags.delegateSupportsWillDismissWithButtonIndex = YES;
    +	}
    +
    +	if ([_externalDelegate respondsToSelector:@selector(actionSheet:didDismissWithButtonIndex:)])
    +	{
    +		_delegateFlags.delegateSupportsDidDismissWithButtonIndex = YES;
    +	}
    +}
    +
    +@end
    diff --git a/Classes/en.lproj/ChatRoomViewController.xib b/Classes/en.lproj/ChatRoomViewController.xib
    index dd7c2c6ba..dfb378fa5 100644
    --- a/Classes/en.lproj/ChatRoomViewController.xib
    +++ b/Classes/en.lproj/ChatRoomViewController.xib
    @@ -138,7 +138,7 @@
     								{{0, 80}, {320, 277}}
     								
     								
    -								
    +								
     								_NS:9
     								
     									3
    @@ -154,6 +154,89 @@
     								22
     								22
     							
    +							
    +								
    +								-2147483356
    +								
    +									
    +										
    +										274
    +										{320, 59}
    +										
    +										
    +										
    +										_NS:9
    +										
    +											1
    +											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    +										
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											chat_background.png
    +										
    +									
    +									
    +										
    +										292
    +										{{250, 0}, {70, 59}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Cancel
    +										
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										Cancel
    +										
    +										
    +											1
    +											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +										
    +										
    +											3
    +											MC41AA
    +										
    +										
    +											2
    +											15
    +										
    +										
    +											Helvetica-Bold
    +											15
    +											16
    +										
    +									
    +									
    +										
    +										292
    +										{{20, 25}, {213, 9}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Upload or download progression
    +											
    +										
    +										IBCocoaTouchFramework
    +										0.5
    +									
    +								
    +								{{0, 357}, {320, 59}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +								IBCocoaTouchFramework
    +							
     							
     								
     								266
    @@ -164,7 +247,7 @@
     										{320, 59}
     										
     										
    -										
    +										
     										_NS:9
     										
     											1
    @@ -172,10 +255,18 @@
     										
     										NO
     										IBCocoaTouchFramework
    -										
    -											NSImage
    -											chat_background.png
    -										
    +										
    +									
    +									
    +										
    +										274
    +										{320, 59}
    +										
    +										
    +										
    +										_NS:9
    +										
    +										IBCocoaTouchFramework
     									
     									
     										
    @@ -194,10 +285,7 @@
     										0
     										NO
     										NO
    -										
    -											3
    -											MC41AA
    -										
    +										
     										
     											NSImage
     											chat_send_over.png
    @@ -210,15 +298,33 @@
     											NSImage
     											chat_send_default.png
     										
    -										
    -											2
    -											15
    +										
    +										
    +									
    +									
    +										
    +										300
    +										{40, 59}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Send picture
     										
    -										
    -											Helvetica-Bold
    -											15
    -											16
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										Pict
    +										
    +										
    +											1
    +											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
     										
    +										
    +										
    +										
     									
     									
     										
    @@ -227,7 +333,7 @@
     											
     												
     												274
    -												{250, 59}
    +												{210, 59}
     												
     												
     												
    @@ -242,7 +348,7 @@
     											
     												
     												274
    -												{{10, 10}, {230, 39}}
    +												{{10, 10}, {190, 39}}
     												
     												
     												
    @@ -251,7 +357,7 @@
     												IBCocoaTouchFramework
     											
     										
    -										{250, 59}
    +										{{40, 0}, {210, 59}}
     										
     										
     										
    @@ -259,81 +365,6 @@
     										
     										IBCocoaTouchFramework
     									
    -									
    -										
    -										292
    -										
    -											
    -												
    -												292
    -												{{238, 11}, {62, 37}}
    -												
    -												
    -												_NS:9
    -												NO
    -												IBCocoaTouchFramework
    -												0
    -												0
    -												1
    -												cancel
    -												
    -												
    -													1
    -													MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    -												
    -												
    -												
    -												
    -											
    -											
    -												
    -												292
    -												{{7, 25}, {213, 9}}
    -												
    -												
    -												
    -												_NS:9
    -												NO
    -												IBCocoaTouchFramework
    -												0.5
    -											
    -										
    -										{320, 59}
    -										
    -										
    -										
    -										_NS:9
    -										
    -											3
    -											MQA
    -											
    -												2
    -											
    -										
    -										IBCocoaTouchFramework
    -									
    -									
    -										
    -										292
    -										{{6, 11}, {50, 37}}
    -										
    -										
    -										_NS:9
    -										NO
    -										IBCocoaTouchFramework
    -										0
    -										0
    -										1
    -										Pict
    -										
    -										
    -											1
    -											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    -										
    -										
    -										
    -										
    -									
     								
     								{{0, 357}, {320, 59}}
     								
    @@ -397,7 +428,7 @@
     									chat_back_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -429,7 +460,7 @@
     									chat_edit_default.png
     								
     								
    -								
    +								
     							
     						
     						{320, 44}
    @@ -576,22 +607,6 @@
     					
     					71
     				
    -				
    -					
    -						transfertView
    -						
    -						
    -					
    -					76
    -				
    -				
    -					
    -						cancelTransfertButton
    -						
    -						
    -					
    -					77
    -				
     				
     					
     						imageTransferProgressBar
    @@ -602,11 +617,27 @@
     				
     				
     					
    -						pictButton
    +						pictureButton
     						
     						
     					
    -					80
    +					84
    +				
    +				
    +					
    +						cancelTransferButton
    +						
    +						
    +					
    +					85
    +				
    +				
    +					
    +						transferView
    +						
    +						
    +					
    +					86
     				
     				
     					
    @@ -679,12 +710,12 @@
     				
     				
     					
    -						onPictClick:
    +						onPictureClick:
     						
     						
     						7
     					
    -					81
    +					87
     				
     				
     					
    @@ -766,6 +797,7 @@
     							
     							
     							
    +							
     						
     						
     						chatView
    @@ -813,8 +845,8 @@
     							
     							
     							
    -							
     							
    +							
     						
     						
     						footerView
    @@ -859,33 +891,46 @@
     						
     						messageField
     					
    +					
    +						73
    +						
    +						
    +						pictureButton
    +					
    +					
    +						82
    +						
    +						
    +						normalView
    +					
     					
     						72
     						
     						
    -							
     							
    +							
    +							
     						
    -						
    +						
     						transferView
     					
    -					
    -						75
    -						
    -						
    -						cancel
    -					
     					
     						74
     						
     						
    -						progressBar
    +						transferProgressBar
     					
     					
    -						73
    -						
    -						
    -						pictureButton
    +						75
    +						
    +						
    +						cancelTransferButton
    +					
    +					
    +						83
    +						
    +						
    +						footerBackgroundImage
     					
     				
     			
    @@ -921,6 +966,8 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				
    @@ -929,7 +976,7 @@
     			
     			
     			
    -			81
    +			87
     		
     		
     			
    @@ -949,7 +996,7 @@
     						id
     						id
     						id
    -						id
    +						id
     						id
     						id
     					
    @@ -970,8 +1017,8 @@
     							onMessageChange:
     							id
     						
    -						
    -							onPictClick:
    +						
    +							onPictureClick:
     							id
     						
     						
    @@ -986,7 +1033,7 @@
     					
     						UILabel
     						UIImageView
    -						UIButton
    +						UIButton
     						UIView
     						UIToggleButton
     						UIImageView
    @@ -997,10 +1044,10 @@
     						UIImageView
     						HPGrowingTextView
     						UIView
    -						UIButton
    +						UIButton
     						UIButton
     						ChatRoomTableViewController
    -						UIView
    +						UIView
     					
     					
     						
    @@ -1011,8 +1058,8 @@
     							avatarImage
     							UIImageView
     						
    -						
    -							cancelTransfertButton
    +						
    +							cancelTransferButton
     							UIButton
     						
     						
    @@ -1055,8 +1102,8 @@
     							messageView
     							UIView
     						
    -						
    -							pictButton
    +						
    +							pictureButton
     							UIButton
     						
     						
    @@ -1067,8 +1114,8 @@
     							tableController
     							ChatRoomTableViewController
     						
    -						
    -							transfertView
    +						
    +							transferView
     							UIView
     						
     					
    diff --git a/Classes/en.lproj/ChatViewController.xib b/Classes/en.lproj/ChatViewController.xib
    index 69cc378e4..20eedaf14 100644
    --- a/Classes/en.lproj/ChatViewController.xib
    +++ b/Classes/en.lproj/ChatViewController.xib
    @@ -61,8 +61,8 @@
     							
     							
     								
    -								289
    -								{{160, 0}, {160, 44}}
    +								292
    +								{160, 44}
     								
     								
     								
    @@ -99,8 +99,8 @@
     							
     							
     								
    -								292
    -								{160, 44}
    +								289
    +								{{160, 0}, {160, 44}}
     								
     								
     								
    @@ -389,8 +389,8 @@
     						7
     						
     						
    -							
     							
    +							
     							
     						
     						
    diff --git a/Classes/en.lproj/HistoryViewController.xib b/Classes/en.lproj/HistoryViewController.xib
    index 2e9e1f3ed..8761a2255 100644
    --- a/Classes/en.lproj/HistoryViewController.xib
    +++ b/Classes/en.lproj/HistoryViewController.xib
    @@ -186,7 +186,7 @@
     								
     							
     						
    -						{320, 58}
    +						{320, 44}
     						
     						
     						
    diff --git a/Classes/en.lproj/ImageViewController.xib b/Classes/en.lproj/ImageViewController.xib
    new file mode 100644
    index 000000000..0e9bb3507
    --- /dev/null
    +++ b/Classes/en.lproj/ImageViewController.xib
    @@ -0,0 +1,299 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						274
    +						{{0, 44}, {320, 416}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						4
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								292
    +								{320, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{80, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MQA
    +								
    +								
    +									1
    +									MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +								
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									chat_back_default.png
    +								
    +								
    +									NSImage
    +									chat_back_over.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{{0, 20}, {320, 460}}
    +				
    +				
    +				
    +				
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					3
    +				
    +				
    +					
    +						imageView
    +						
    +						
    +					
    +					9
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					8
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					10
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						1
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +						imageView
    +					
    +					
    +						11
    +						
    +						
    +							
    +							
    +						
    +						
    +						toolbar
    +					
    +					
    +						7
    +						
    +						
    +					
    +					
    +						6
    +						
    +						
    +					
    +				
    +			
    +			
    +				ImageViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			11
    +		
    +		
    +			
    +				
    +					ImageViewController
    +					UIViewController
    +					
    +						onBackClick:
    +						id
    +					
    +					
    +						onBackClick:
    +						
    +							onBackClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIImageView
    +					
    +					
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							imageView
    +							UIImageView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ImageViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{320, 88}
    +			{320, 88}
    +			{5, 117}
    +		
    +		1498
    +	
    +
    diff --git a/Classes/fr.lproj/ChatRoomViewController.xib b/Classes/fr.lproj/ChatRoomViewController.xib
    index 925eb238d..effff9788 100644
    --- a/Classes/fr.lproj/ChatRoomViewController.xib
    +++ b/Classes/fr.lproj/ChatRoomViewController.xib
    @@ -133,7 +133,7 @@
     								274
     								{{0, 80}, {320, 277}}
     								
    -								
    +								
     								_NS:9
     								
     									3
    @@ -149,6 +149,85 @@
     								22
     								22
     							
    +							
    +								
    +								-2147483356
    +								
    +									
    +										
    +										274
    +										{320, 59}
    +										
    +										
    +										_NS:9
    +										
    +											1
    +											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    +										
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											chat_background.png
    +										
    +									
    +									
    +										
    +										292
    +										{{250, 0}, {70, 59}}
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Annuler
    +										
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										Annuler
    +										
    +										
    +											1
    +											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +										
    +										
    +											3
    +											MC41AA
    +										
    +										
    +											2
    +											15
    +										
    +										
    +											Helvetica-Bold
    +											15
    +											16
    +										
    +									
    +									
    +										
    +										292
    +										{{20, 25}, {213, 9}}
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Progression du téléversement/téléchargement
    +											
    +										
    +										IBCocoaTouchFramework
    +										0.5
    +									
    +								
    +								{{0, 357}, {320, 59}}
    +								
    +								
    +								_NS:9
    +								
    +								IBCocoaTouchFramework
    +							
     							
     								
     								266
    @@ -158,7 +237,7 @@
     										274
     										{320, 59}
     										
    -										
    +										
     										_NS:9
     										
     											1
    @@ -166,10 +245,17 @@
     										
     										NO
     										IBCocoaTouchFramework
    -										
    -											NSImage
    -											chat_background.png
    -										
    +										
    +									
    +									
    +										
    +										274
    +										{320, 59}
    +										
    +										
    +										_NS:9
    +										
    +										IBCocoaTouchFramework
     									
     									
     										
    @@ -187,10 +273,7 @@
     										0
     										NO
     										NO
    -										
    -											3
    -											MC41AA
    -										
    +										
     										
     											NSImage
     											chat_send_over.png
    @@ -203,15 +286,32 @@
     											NSImage
     											chat_send_default.png
     										
    -										
    -											2
    -											15
    +										
    +										
    +									
    +									
    +										
    +										300
    +										{40, 59}
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Envoyer l'image
     										
    -										
    -											Helvetica-Bold
    -											15
    -											16
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										Img
    +										
    +										
    +											1
    +											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
     										
    +										
    +										
    +										
     									
     									
     										
    @@ -220,7 +320,7 @@
     											
     												
     												274
    -												{250, 59}
    +												{210, 59}
     												
     												
     												_NS:9
    @@ -234,7 +334,7 @@
     											
     												
     												274
    -												{{10, 10}, {230, 39}}
    +												{{10, 10}, {190, 39}}
     												
     												
     												_NS:9
    @@ -242,84 +342,13 @@
     												IBCocoaTouchFramework
     											
     										
    -										{250, 59}
    +										{{40, 0}, {210, 59}}
     										
     										
     										_NS:9
     										
     										IBCocoaTouchFramework
     									
    -									
    -										
    -										292
    -										
    -											
    -												
    -												292
    -												{{238, 11}, {62, 37}}
    -												
    -												_NS:9
    -												NO
    -												IBCocoaTouchFramework
    -												0
    -												0
    -												1
    -												cancel
    -												
    -												
    -													1
    -													MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    -												
    -												
    -												
    -												
    -											
    -											
    -												
    -												292
    -												{{7, 25}, {213, 9}}
    -												
    -												
    -												_NS:9
    -												NO
    -												IBCocoaTouchFramework
    -												0.5
    -											
    -										
    -										{320, 59}
    -										
    -										
    -										_NS:9
    -										
    -											3
    -											MQA
    -											
    -												2
    -											
    -										
    -										IBCocoaTouchFramework
    -									
    -									
    -										
    -										292
    -										{{6, 11}, {50, 37}}
    -										
    -										_NS:9
    -										NO
    -										IBCocoaTouchFramework
    -										0
    -										0
    -										1
    -										Pict
    -										
    -										
    -											1
    -											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    -										
    -										
    -										
    -										
    -									
     								
     								{{0, 357}, {320, 59}}
     								
    @@ -379,7 +408,7 @@
     									chat_back_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -410,7 +439,7 @@
     									chat_edit_default.png
     								
     								
    -								
    +								
     							
     						
     						{320, 44}
    @@ -554,22 +583,6 @@
     					
     					71
     				
    -				
    -					
    -						transfertView
    -						
    -						
    -					
    -					76
    -				
    -				
    -					
    -						cancelTransfertButton
    -						
    -						
    -					
    -					77
    -				
     				
     					
     						imageTransferProgressBar
    @@ -580,11 +593,27 @@
     				
     				
     					
    -						pictButton
    +						pictureButton
     						
     						
     					
    -					80
    +					84
    +				
    +				
    +					
    +						cancelTransferButton
    +						
    +						
    +					
    +					85
    +				
    +				
    +					
    +						transferView
    +						
    +						
    +					
    +					86
     				
     				
     					
    @@ -657,12 +686,12 @@
     				
     				
     					
    -						onPictClick:
    +						onPictureClick:
     						
     						
     						7
     					
    -					81
    +					87
     				
     				
     					
    @@ -744,6 +773,7 @@
     							
     							
     							
    +							
     						
     						
     						chatView
    @@ -791,8 +821,8 @@
     							
     							
     							
    -							
     							
    +							
     						
     						
     						footerView
    @@ -837,33 +867,46 @@
     						
     						messageField
     					
    +					
    +						73
    +						
    +						
    +						pictureButton
    +					
    +					
    +						82
    +						
    +						
    +						normalView
    +					
     					
     						72
     						
     						
    -							
     							
    +							
    +							
     						
    -						
    +						
     						transferView
     					
    -					
    -						75
    -						
    -						
    -						cancel
    -					
     					
     						74
     						
     						
    -						progressBar
    +						transferProgressBar
     					
     					
    -						73
    -						
    -						
    -						pictureButton
    +						75
    +						
    +						
    +						cancelTransferButton
    +					
    +					
    +						83
    +						
    +						
    +						footerBackgroundImage
     					
     				
     			
    @@ -899,6 +942,8 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				
    @@ -907,7 +952,7 @@
     			
     			
     			
    -			81
    +			87
     		
     		
     			
    @@ -927,7 +972,7 @@
     						id
     						id
     						id
    -						id
    +						id
     						id
     						id
     					
    @@ -948,8 +993,8 @@
     							onMessageChange:
     							id
     						
    -						
    -							onPictClick:
    +						
    +							onPictureClick:
     							id
     						
     						
    @@ -964,7 +1009,7 @@
     					
     						UILabel
     						UIImageView
    -						UIButton
    +						UIButton
     						UIView
     						UIToggleButton
     						UIImageView
    @@ -975,10 +1020,10 @@
     						UIImageView
     						HPGrowingTextView
     						UIView
    -						UIButton
    +						UIButton
     						UIButton
     						ChatRoomTableViewController
    -						UIView
    +						UIView
     					
     					
     						
    @@ -989,8 +1034,8 @@
     							avatarImage
     							UIImageView
     						
    -						
    -							cancelTransfertButton
    +						
    +							cancelTransferButton
     							UIButton
     						
     						
    @@ -1033,8 +1078,8 @@
     							messageView
     							UIView
     						
    -						
    -							pictButton
    +						
    +							pictureButton
     							UIButton
     						
     						
    @@ -1045,8 +1090,8 @@
     							tableController
     							ChatRoomTableViewController
     						
    -						
    -							transfertView
    +						
    +							transferView
     							UIView
     						
     					
    diff --git a/Classes/fr.lproj/ChatViewController.xib b/Classes/fr.lproj/ChatViewController.xib
    index c19606afd..ba35e017a 100644
    --- a/Classes/fr.lproj/ChatViewController.xib
    +++ b/Classes/fr.lproj/ChatViewController.xib
    @@ -60,8 +60,8 @@
     							
     							
     								
    -								289
    -								{{160, 0}, {160, 44}}
    +								292
    +								{160, 44}
     								
     								
     								_NS:9
    @@ -97,8 +97,8 @@
     							
     							
     								
    -								292
    -								{160, 44}
    +								289
    +								{{160, 0}, {160, 44}}
     								
     								
     								_NS:9
    @@ -380,8 +380,8 @@
     						7
     						
     						
    -							
     							
    +							
     							
     						
     						
    diff --git a/Classes/fr.lproj/HistoryViewController.xib b/Classes/fr.lproj/HistoryViewController.xib
    index f16aac91b..a226f3825 100644
    --- a/Classes/fr.lproj/HistoryViewController.xib
    +++ b/Classes/fr.lproj/HistoryViewController.xib
    @@ -109,11 +109,10 @@
     								0
     								NO
     								
    -								
    +								
     									NSImage
     									history_all_selected.png
     								
    -								
     								
     									NSImage
     									history_all_default.png
    @@ -181,7 +180,7 @@
     								
     							
     						
    -						{320, 58}
    +						{320, 44}
     						
     						
     						_NS:9
    diff --git a/Classes/ImageViewerViewController.xib b/Classes/fr.lproj/ImageViewController.xib
    similarity index 56%
    rename from Classes/ImageViewerViewController.xib
    rename to Classes/fr.lproj/ImageViewController.xib
    index 488929954..2cd6fe824 100644
    --- a/Classes/ImageViewerViewController.xib
    +++ b/Classes/fr.lproj/ImageViewController.xib
    @@ -3,12 +3,12 @@
     	
     		1296
     		11E53
    -		2182
    +		1938
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1181
    +			933
     		
     		
     			IBUIButton
    @@ -33,7 +33,7 @@
     				IBCocoaTouchFramework
     			
     			
    -				
    +				
     				274
     				
     					
    @@ -42,76 +42,88 @@
     						{{0, 44}, {320, 416}}
     						
     						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
     						4
     						NO
     						IBCocoaTouchFramework
     					
    -					
    +					
     						
    -						292
    +						290
    +						
    +							
    +								
    +								292
    +								{320, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{80, 44}
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Retour
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MQA
    +								
    +								
    +									1
    +									MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +								
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									chat_back_default.png
    +								
    +								
    +									NSImage
    +									chat_back_over.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +						
     						{320, 44}
     						
    -						
    +						
     						_NS:9
    -						NO
    +						
     						IBCocoaTouchFramework
    -						
    -							NSImage
    -							background.png
    -						
    -					
    -					
    -						
    -						292
    -						{{235, 0}, {80, 44}}
    -						
    -						
    -						_NS:9
    -						NO
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						
    -							3
    -							MQA
    -						
    -						
    -							1
    -							MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    -						
    -						
    -							3
    -							MC41AA
    -						
    -						
    -							NSImage
    -							chat_back_default.png
    -						
    -						
    -							NSImage
    -							chat_back_over.png
    -						
    -						
    -							2
    -							15
    -						
    -						
    -							Helvetica-Bold
    -							15
    -							16
    -						
     					
     				
     				{{0, 20}, {320, 460}}
    -				
    -				
    -				
    -					3
    -					MQA
    -					
    -						2
    -					
    -				
    +				
    +				
     				
     				IBCocoaTouchFramework
     			
    @@ -126,14 +138,6 @@
     					
     					3
     				
    -				
    -					
    -						backButton
    -						
    -						
    -					
    -					8
    -				
     				
     					
     						imageView
    @@ -142,6 +146,14 @@
     					
     					9
     				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					8
    +				
     				
     					
     						onBackClick:
    @@ -165,8 +177,7 @@
     						
     						
     							
    -							
    -							
    +							
     						
     						
     					
    @@ -185,25 +196,37 @@
     						4
     						
     						
    +						imageView
     					
     					
    -						6
    -						
    +						11
    +						
    +						
    +							
    +							
    +						
     						
    +						toolbar
     					
     					
     						7
     						
    -						
    +						
    +					
    +					
    +						6
    +						
    +						
     					
     				
     			
     			
    -				ImageViewerViewController
    +				ImageViewController
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIResponder
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -212,9 +235,45 @@
     			
     			
     			
    -			10
    +			11
    +		
    +		
    +			
    +				
    +					ImageViewController
    +					UIViewController
    +					
    +						onBackClick:
    +						id
    +					
    +					
    +						onBackClick:
    +						
    +							onBackClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIImageView
    +					
    +					
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							imageView
    +							UIImageView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ImageViewController.h
    +					
    +				
    +			
     		
    -		
     		0
     		IBCocoaTouchFramework
     		
    @@ -224,10 +283,10 @@
     		YES
     		3
     		
    -			{640, 523}
     			{320, 88}
     			{320, 88}
    +			{5, 117}
     		
    -		1181
    +		933
     	
     
    diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings
    index d2123bd9c9fbc02cbcbd192765c91a1d87243990..77e98c0aebfadcfe5429948995256911fe4b7664 100644
    GIT binary patch
    delta 213
    zcmdnj#CV{J>EHj!flPrLg94Z)-(lgJ9LKzFvL371W*OEZ&dHPbRCtpa@)`0NN*EFu
    zk{L=SuNTn7BAUn(KRHi80*efO^|u5Ru$Ye_x|vb%u)t;|Wjm(HVro*GdDJE_PL5O7
    bnrxtvGx>$O+~NQYk;y!^Vw?ZiII;i$ts6cw
    
    delta 426
    zcmX?5wXcbh>HojU3mF481_v-r{>Z4rSUg#T$#k-!Uex5pOgkp8Ws;FqU?^e8XHZ}W
    zW=LfyVkl$CWJm_Glz<|(3<{GMFlh>7Q89UgK=kH7=1rW;B|t@Se5&jP42eMPm6Of*
    zG+|p9OJvDsI_j>$X~
    zWFXLY3P239E)!^M3M`0#v>#9ui;B$#N~}zi>s7KQcPeO2j#tUqY^u6Nc(S0S$mIVP
    P0zf)z^Fxbx7DfgDY_n~z
    
    diff --git a/Resources/fr.lproj/Localizable.strings b/Resources/fr.lproj/Localizable.strings
    index bddbaa5c2b85cb5e0e47c428c1b49cfbaae0aa4a..4afcd5a69212f0f77d901698fe28ad2f97fa0ba2 100644
    GIT binary patch
    delta 144
    zcmbQy#<-?#!xE;+e#}QUKVtFVnykmK!kf&H&ydGZ!jQ<2%uq5pQP6hs905M&9EQ}%
    z3;8D!p~6Z~0o9DniGr5qP+$mVNM$HuC;*uBiWn*{jozfUZad!dxJ&z)%UauM|jU0F5nUNS(ajLXkBQ
    z=*G&)juPh1NType
     			PSTextFieldSpecifier
     			Title
    -			sharing server
    +			Sharing server
     			Key
     			file_upload_url_preference
     		
    diff --git a/Settings/InAppSettings.bundle/en.lproj/Advanced.strings b/Settings/InAppSettings.bundle/en.lproj/Advanced.strings
    index c7b00a51f..0cc1bcac5 100644
    --- a/Settings/InAppSettings.bundle/en.lproj/Advanced.strings
    +++ b/Settings/InAppSettings.bundle/en.lproj/Advanced.strings
    @@ -34,6 +34,9 @@
     /* Display name */
     "Display name" = "Display name";
     
    +/* Sharing server */
    +"Sharing server" = "Sharing server";
    +
     /* Username */
     "Username" = "Username";
     
    diff --git a/Settings/InAppSettings.bundle/fr.lproj/Advanced.strings b/Settings/InAppSettings.bundle/fr.lproj/Advanced.strings
    index cf45cf575..ffe163ea2 100644
    --- a/Settings/InAppSettings.bundle/fr.lproj/Advanced.strings
    +++ b/Settings/InAppSettings.bundle/fr.lproj/Advanced.strings
    @@ -34,6 +34,9 @@
     /* Display name */
     "Display name" = "Nom d'affichage";
     
    +/* Sharing server */
    +"Sharing server" = "Serveur de partage";
    +
     /* Username */
     "Username" = "Nom d'utilisateur";
     
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index c98111ad5..47e4dc01c 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -12,9 +12,7 @@
     			change date
     			2001-01-01T00:00:00Z
     			changed values
    -			
    -				fr
    -			
    +			
     			class
     			BLBundleObject
     			errors
    @@ -214,21 +212,19 @@
     					
     						backup
     						
    -							12
    +							15
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ChatRoomViewController/12/ChatRoomViewController.xib
    +								Classes/ChatRoomViewController/15/ChatRoomViewController.xib
     							
     						
     					
     					change date
    -					2012-09-14T08:42:01Z
    +					2012-09-14T14:45:49Z
     					changed values
    -					
    -						fr
    -					
    +					
     					class
     					BLNibFileObject
     					errors
    @@ -236,7 +232,7 @@
     					flags
     					0
     					hash
    -					fe17a7cc443845e0f73af8ee35e892e5
    +					1f8683826a86cb2ad7e55cc5c9dcafaf
     
     					name
     					ChatRoomViewController.xib
    @@ -394,9 +390,32 @@
     							change date
     							2001-01-01T00:00:00Z
     							changed values
    -							
    -								fr
    -							
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Send picture"; ObjectID = "73";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							73.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Send picture
    +								fr
    +								Envoyer l'image
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
     							class
     							BLStringKeyObject
     							comment
    @@ -421,13 +440,61 @@
     							change date
     							2001-01-01T00:00:00Z
     							changed values
    -							
    -								fr
    -							
    +							
     							class
     							BLStringKeyObject
     							comment
    -							Class = "IBUIButton"; normalTitle = "cancel"; ObjectID = "75";
    +							Class = "IBUIProgressView"; accessibilityLabel = "Upload or download progression"; ObjectID = "74";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							74.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Upload or download progression
    +								fr
    +								Progression du téléversement/téléchargement
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Cancel"; ObjectID = "75";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							75.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Cancel
    +								fr
    +								Annuler
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; normalTitle = "Cancel"; ObjectID = "75";
     							errors
     							
     							flags
    @@ -437,7 +504,7 @@
     							localizations
     							
     								en
    -								cancel
    +								Cancel
     								fr
     								Annuler
     							
    @@ -501,9 +568,9 @@
     					versions
     					
     						en
    -						12
    +						15
     						fr
    -						12
    +						15
     					
     				
     				
    @@ -511,17 +578,17 @@
     					
     						backup
     						
    -							2
    +							3
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ChatViewController/2/ChatViewController.xib
    +								Classes/ChatViewController/3/ChatViewController.xib
     							
     						
     					
     					change date
    -					2012-09-13T15:35:03Z
    +					2012-09-14T12:06:16Z
     					changed values
     					
     					class
    @@ -531,7 +598,7 @@
     					flags
     					0
     					hash
    -					d02ecf8f1bacbfa8e5793231b6735940
    +					e5821f865fd72c1ed8f4c7762f6f37ea
     
     					name
     					ChatViewController.xib
    @@ -645,9 +712,9 @@
     					versions
     					
     						en
    -						2
    +						3
     						fr
    -						2
    +						3
     					
     				
     				
    @@ -2540,17 +2607,17 @@
     					
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/HistoryViewController/1/HistoryViewController.xib
    +								Classes/HistoryViewController/2/HistoryViewController.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:18:57Z
    +					2012-09-14T12:14:28Z
     					changed values
     					
     					class
    @@ -2560,7 +2627,7 @@
     					flags
     					0
     					hash
    -					298b795268cf5c06a0f890835be7ddb3
    +					186d9f6cd76ac4df197bc2a1eb51921e
     
     					name
     					HistoryViewController.xib
    @@ -2699,9 +2766,9 @@
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     				
    @@ -4209,6 +4276,75 @@
     						2
     					
     				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							3
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								Classes/ImageViewController/3/ImageViewController.xib
    +							
    +						
    +					
    +					change date
    +					2012-09-14T13:00:17Z
    +					changed values
    +					
    +					class
    +					BLNibFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					724a8c5069c0fbde9b1e56ef37a42cba
    +
    +					name
    +					ImageViewController.xib
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Class = "IBUIButton"; accessibilityLabel = "Back"; ObjectID = "7";
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							7.accessibilityLabel
    +							localizations
    +							
    +								en
    +								Back
    +								fr
    +								Retour
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						3
    +						fr
    +						3
    +					
    +				
     			
     			flags
     			0
    @@ -7218,7 +7354,7 @@
     						
     					
     					change date
    -					2012-09-14T09:51:58Z
    +					2012-09-14T11:57:58Z
     					changed values
     					
     					class
    @@ -7228,7 +7364,7 @@
     					flags
     					0
     					hash
    -					7fcce4bdc516e1d8f77ce093860a38dd
    +					dcecc0eedf9132813ef8a938d07d7917
     
     					name
     					Localizable.strings
    @@ -7337,34 +7473,6 @@ La cause était: %2$@
     							snapshots
     							
     						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							No comment provided by engineer.
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							%@
    -Reason was: %s
    -							localizations
    -							
    -								en
    -								%1$@
    -Reason was: %2$s
    -								fr
    -								%1$@
    -Raison: %2$s
    -							
    -							snapshots
    -							
    -						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -7390,31 +7498,6 @@ Raison: %2$s
     							snapshots
     							
     						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							No comment provided by engineer.
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							'%@' not registered to Service
    -							localizations
    -							
    -								en
    -								'%@' not registered to Service
    -								fr
    -								'%@' n'est pas enregistré
    -							
    -							snapshots
    -							
    -						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -7779,13 +7862,13 @@ Raison: %2$s
     							flags
     							0
     							key
    -							Cannot transfert  file from remote pary
    +							Cannot transfer file from remote contact
     							localizations
     							
     								en
    -								Cannot transfert  file from remote pary
    +								Cannot transfer file from remote contact
     								fr
    -								Impossible de transferer depuis destinataire
    +								Impossible de transferer depuis le destinataire
     							
     							snapshots
     							
    @@ -7804,36 +7887,11 @@ Raison: %2$s
     							flags
     							0
     							key
    -							Cannot transfert file from remote pary
    +							Cannot transfer file to remote contact
     							localizations
     							
     								en
    -								Cannot transfert file from remote pary
    -								fr
    -								Impossible de transferer depuis destinataire
    -							
    -							snapshots
    -							
    -						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							No comment provided by engineer.
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							Cannot transfert file to remote pary
    -							localizations
    -							
    -								en
    -								Cannot transfert file to remote pary
    +								Cannot transfer file to remote contact
     								fr
     								Impossible de transferer au destinataire
     							
    @@ -8365,31 +8423,6 @@ Raison: %2$s
     							snapshots
     							
     						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							No comment provided by engineer.
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							It seems you have not configured any proxy server from settings
    -							localizations
    -							
    -								en
    -								It seems you have not configured any proxy server from settings
    -								fr
    -								Il semble qu'il n'y est pas de serveur SIP configuré
    -							
    -							snapshots
    -							
    -						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8488,31 +8521,6 @@ Raison: %2$s
     							snapshots
     							
     						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							No comment provided by engineer.
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							Never remind
    -							localizations
    -							
    -								en
    -								Never remind
    -								fr
    -								Ne pas me rappeler
    -							
    -							snapshots
    -							
    -						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8588,31 +8596,6 @@ Raison: %2$s
     							snapshots
     							
     						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							No comment provided by engineer.
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							Ok
    -							localizations
    -							
    -								en
    -								Ok
    -								fr
    -								Ok
    -							
    -							snapshots
    -							
    -						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8638,6 +8621,31 @@ Raison: %2$s
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Ok
    +							localizations
    +							
    +								en
    +								Ok
    +								fr
    +								Ok
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -9219,31 +9227,6 @@ Raison: %2$s
     							snapshots
     							
     						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							No comment provided by engineer.
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							Tranfer error
    -							localizations
    -							
    -								en
    -								Tranfer error
    -								fr
    -								Erreur de transfert
    -							
    -							snapshots
    -							
    -						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -9475,6 +9458,209 @@ Raison: %2$s
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							%@
    +Reason was: %s
    +							localizations
    +							
    +								en
    +								%1$@
    +Reason was: %2$s
    +								fr
    +								%1$@
    +Raison: %2$s
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							'%@' not registered to Service
    +							localizations
    +							
    +								en
    +								'%@' not registered to Service
    +								fr
    +								'%@' n'est pas enregistré
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Cannot transfert  file from remote pary
    +							localizations
    +							
    +								en
    +								Cannot transfert  file from remote pary
    +								fr
    +								Impossible de transferer depuis destinataire
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Cannot transfert file from remote pary
    +							localizations
    +							
    +								en
    +								Cannot transfert file from remote pary
    +								fr
    +								Impossible de transferer depuis destinataire
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Cannot transfert file to remote pary
    +							localizations
    +							
    +								en
    +								Cannot transfert file to remote pary
    +								fr
    +								Impossible de transferer au destinataire
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							It seems you have not configured any proxy server from settings
    +							localizations
    +							
    +								en
    +								It seems you have not configured any proxy server from settings
    +								fr
    +								Il semble qu'il n'y est pas de serveur SIP configuré
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Never remind
    +							localizations
    +							
    +								en
    +								Never remind
    +								fr
    +								Ne pas me rappeler
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Tranfer error
    +							localizations
    +							
    +								en
    +								Tranfer error
    +								fr
    +								Erreur de transfert
    +							
    +							snapshots
    +							
    +						
     					
     					plist file
     					
    @@ -10112,7 +10298,7 @@ Raison: %2$s
     						
     					
     					change date
    -					2012-09-11T10:05:14Z
    +					2012-09-14T09:59:52Z
     					changed values
     					
     					class
    @@ -10122,7 +10308,7 @@ Raison: %2$s
     					flags
     					0
     					hash
    -					f72b15c7c0f7f2cba6c1df114414e788
    +					04783f5ae79079b4d782aa4842c5a054
     
     					name
     					Advanced.strings
    @@ -10396,6 +10582,31 @@ Raison: %2$s
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Sharing server
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Sharing server
    +							localizations
    +							
    +								en
    +								Sharing server
    +								fr
    +								Serveur de partage
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    diff --git a/linphone.ldb/Resources/Classes/ChatRoomViewController/12/ChatRoomViewController.xib b/linphone.ldb/Resources/Classes/ChatRoomViewController/15/ChatRoomViewController.xib
    similarity index 88%
    rename from linphone.ldb/Resources/Classes/ChatRoomViewController/12/ChatRoomViewController.xib
    rename to linphone.ldb/Resources/Classes/ChatRoomViewController/15/ChatRoomViewController.xib
    index dd7c2c6ba..dfb378fa5 100644
    --- a/linphone.ldb/Resources/Classes/ChatRoomViewController/12/ChatRoomViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ChatRoomViewController/15/ChatRoomViewController.xib
    @@ -138,7 +138,7 @@
     								{{0, 80}, {320, 277}}
     								
     								
    -								
    +								
     								_NS:9
     								
     									3
    @@ -154,6 +154,89 @@
     								22
     								22
     							
    +							
    +								
    +								-2147483356
    +								
    +									
    +										
    +										274
    +										{320, 59}
    +										
    +										
    +										
    +										_NS:9
    +										
    +											1
    +											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    +										
    +										NO
    +										IBCocoaTouchFramework
    +										
    +											NSImage
    +											chat_background.png
    +										
    +									
    +									
    +										
    +										292
    +										{{250, 0}, {70, 59}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Cancel
    +										
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										Cancel
    +										
    +										
    +											1
    +											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +										
    +										
    +											3
    +											MC41AA
    +										
    +										
    +											2
    +											15
    +										
    +										
    +											Helvetica-Bold
    +											15
    +											16
    +										
    +									
    +									
    +										
    +										292
    +										{{20, 25}, {213, 9}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Upload or download progression
    +											
    +										
    +										IBCocoaTouchFramework
    +										0.5
    +									
    +								
    +								{{0, 357}, {320, 59}}
    +								
    +								
    +								
    +								_NS:9
    +								
    +								IBCocoaTouchFramework
    +							
     							
     								
     								266
    @@ -164,7 +247,7 @@
     										{320, 59}
     										
     										
    -										
    +										
     										_NS:9
     										
     											1
    @@ -172,10 +255,18 @@
     										
     										NO
     										IBCocoaTouchFramework
    -										
    -											NSImage
    -											chat_background.png
    -										
    +										
    +									
    +									
    +										
    +										274
    +										{320, 59}
    +										
    +										
    +										
    +										_NS:9
    +										
    +										IBCocoaTouchFramework
     									
     									
     										
    @@ -194,10 +285,7 @@
     										0
     										NO
     										NO
    -										
    -											3
    -											MC41AA
    -										
    +										
     										
     											NSImage
     											chat_send_over.png
    @@ -210,15 +298,33 @@
     											NSImage
     											chat_send_default.png
     										
    -										
    -											2
    -											15
    +										
    +										
    +									
    +									
    +										
    +										300
    +										{40, 59}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Send picture
     										
    -										
    -											Helvetica-Bold
    -											15
    -											16
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										Pict
    +										
    +										
    +											1
    +											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
     										
    +										
    +										
    +										
     									
     									
     										
    @@ -227,7 +333,7 @@
     											
     												
     												274
    -												{250, 59}
    +												{210, 59}
     												
     												
     												
    @@ -242,7 +348,7 @@
     											
     												
     												274
    -												{{10, 10}, {230, 39}}
    +												{{10, 10}, {190, 39}}
     												
     												
     												
    @@ -251,7 +357,7 @@
     												IBCocoaTouchFramework
     											
     										
    -										{250, 59}
    +										{{40, 0}, {210, 59}}
     										
     										
     										
    @@ -259,81 +365,6 @@
     										
     										IBCocoaTouchFramework
     									
    -									
    -										
    -										292
    -										
    -											
    -												
    -												292
    -												{{238, 11}, {62, 37}}
    -												
    -												
    -												_NS:9
    -												NO
    -												IBCocoaTouchFramework
    -												0
    -												0
    -												1
    -												cancel
    -												
    -												
    -													1
    -													MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    -												
    -												
    -												
    -												
    -											
    -											
    -												
    -												292
    -												{{7, 25}, {213, 9}}
    -												
    -												
    -												
    -												_NS:9
    -												NO
    -												IBCocoaTouchFramework
    -												0.5
    -											
    -										
    -										{320, 59}
    -										
    -										
    -										
    -										_NS:9
    -										
    -											3
    -											MQA
    -											
    -												2
    -											
    -										
    -										IBCocoaTouchFramework
    -									
    -									
    -										
    -										292
    -										{{6, 11}, {50, 37}}
    -										
    -										
    -										_NS:9
    -										NO
    -										IBCocoaTouchFramework
    -										0
    -										0
    -										1
    -										Pict
    -										
    -										
    -											1
    -											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    -										
    -										
    -										
    -										
    -									
     								
     								{{0, 357}, {320, 59}}
     								
    @@ -397,7 +428,7 @@
     									chat_back_default.png
     								
     								
    -								
    +								
     							
     							
     								
    @@ -429,7 +460,7 @@
     									chat_edit_default.png
     								
     								
    -								
    +								
     							
     						
     						{320, 44}
    @@ -576,22 +607,6 @@
     					
     					71
     				
    -				
    -					
    -						transfertView
    -						
    -						
    -					
    -					76
    -				
    -				
    -					
    -						cancelTransfertButton
    -						
    -						
    -					
    -					77
    -				
     				
     					
     						imageTransferProgressBar
    @@ -602,11 +617,27 @@
     				
     				
     					
    -						pictButton
    +						pictureButton
     						
     						
     					
    -					80
    +					84
    +				
    +				
    +					
    +						cancelTransferButton
    +						
    +						
    +					
    +					85
    +				
    +				
    +					
    +						transferView
    +						
    +						
    +					
    +					86
     				
     				
     					
    @@ -679,12 +710,12 @@
     				
     				
     					
    -						onPictClick:
    +						onPictureClick:
     						
     						
     						7
     					
    -					81
    +					87
     				
     				
     					
    @@ -766,6 +797,7 @@
     							
     							
     							
    +							
     						
     						
     						chatView
    @@ -813,8 +845,8 @@
     							
     							
     							
    -							
     							
    +							
     						
     						
     						footerView
    @@ -859,33 +891,46 @@
     						
     						messageField
     					
    +					
    +						73
    +						
    +						
    +						pictureButton
    +					
    +					
    +						82
    +						
    +						
    +						normalView
    +					
     					
     						72
     						
     						
    -							
     							
    +							
    +							
     						
    -						
    +						
     						transferView
     					
    -					
    -						75
    -						
    -						
    -						cancel
    -					
     					
     						74
     						
     						
    -						progressBar
    +						transferProgressBar
     					
     					
    -						73
    -						
    -						
    -						pictureButton
    +						75
    +						
    +						
    +						cancelTransferButton
    +					
    +					
    +						83
    +						
    +						
    +						footerBackgroundImage
     					
     				
     			
    @@ -921,6 +966,8 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				
    @@ -929,7 +976,7 @@
     			
     			
     			
    -			81
    +			87
     		
     		
     			
    @@ -949,7 +996,7 @@
     						id
     						id
     						id
    -						id
    +						id
     						id
     						id
     					
    @@ -970,8 +1017,8 @@
     							onMessageChange:
     							id
     						
    -						
    -							onPictClick:
    +						
    +							onPictureClick:
     							id
     						
     						
    @@ -986,7 +1033,7 @@
     					
     						UILabel
     						UIImageView
    -						UIButton
    +						UIButton
     						UIView
     						UIToggleButton
     						UIImageView
    @@ -997,10 +1044,10 @@
     						UIImageView
     						HPGrowingTextView
     						UIView
    -						UIButton
    +						UIButton
     						UIButton
     						ChatRoomTableViewController
    -						UIView
    +						UIView
     					
     					
     						
    @@ -1011,8 +1058,8 @@
     							avatarImage
     							UIImageView
     						
    -						
    -							cancelTransfertButton
    +						
    +							cancelTransferButton
     							UIButton
     						
     						
    @@ -1055,8 +1102,8 @@
     							messageView
     							UIView
     						
    -						
    -							pictButton
    +						
    +							pictureButton
     							UIButton
     						
     						
    @@ -1067,8 +1114,8 @@
     							tableController
     							ChatRoomTableViewController
     						
    -						
    -							transfertView
    +						
    +							transferView
     							UIView
     						
     					
    diff --git a/linphone.ldb/Resources/Classes/ChatViewController/2/ChatViewController.xib b/linphone.ldb/Resources/Classes/ChatViewController/3/ChatViewController.xib
    similarity index 100%
    rename from linphone.ldb/Resources/Classes/ChatViewController/2/ChatViewController.xib
    rename to linphone.ldb/Resources/Classes/ChatViewController/3/ChatViewController.xib
    index 69cc378e4..20eedaf14 100644
    --- a/linphone.ldb/Resources/Classes/ChatViewController/2/ChatViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ChatViewController/3/ChatViewController.xib
    @@ -61,8 +61,8 @@
     							
     							
     								
    -								289
    -								{{160, 0}, {160, 44}}
    +								292
    +								{160, 44}
     								
     								
     								
    @@ -99,8 +99,8 @@
     							
     							
     								
    -								292
    -								{160, 44}
    +								289
    +								{{160, 0}, {160, 44}}
     								
     								
     								
    @@ -389,8 +389,8 @@
     						7
     						
     						
    -							
     							
    +							
     							
     						
     						
    diff --git a/linphone.ldb/Resources/Classes/HistoryViewController/1/HistoryViewController.xib b/linphone.ldb/Resources/Classes/HistoryViewController/2/HistoryViewController.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/HistoryViewController/1/HistoryViewController.xib
    rename to linphone.ldb/Resources/Classes/HistoryViewController/2/HistoryViewController.xib
    index 2e9e1f3ed..8761a2255 100644
    --- a/linphone.ldb/Resources/Classes/HistoryViewController/1/HistoryViewController.xib
    +++ b/linphone.ldb/Resources/Classes/HistoryViewController/2/HistoryViewController.xib
    @@ -186,7 +186,7 @@
     								
     							
     						
    -						{320, 58}
    +						{320, 44}
     						
     						
     						
    diff --git a/linphone.ldb/Resources/Classes/ImageViewController/3/ImageViewController.xib b/linphone.ldb/Resources/Classes/ImageViewController/3/ImageViewController.xib
    new file mode 100644
    index 000000000..0e9bb3507
    --- /dev/null
    +++ b/linphone.ldb/Resources/Classes/ImageViewController/3/ImageViewController.xib
    @@ -0,0 +1,299 @@
    +
    +
    +	
    +		1296
    +		11E53
    +		2549
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1498
    +		
    +		
    +			IBProxyObject
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						274
    +						{{0, 44}, {320, 416}}
    +						
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						4
    +						NO
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						290
    +						
    +							
    +								
    +								292
    +								{320, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								IBCocoaTouchFramework
    +								
    +									NSImage
    +									toolsbar_background.png
    +								
    +							
    +							
    +								
    +								292
    +								{80, 44}
    +								
    +								
    +								
    +								_NS:9
    +								NO
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								
    +									3
    +									MQA
    +								
    +								
    +									1
    +									MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +								
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									chat_back_default.png
    +								
    +								
    +									NSImage
    +									chat_back_over.png
    +								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
    +							
    +						
    +						{320, 44}
    +						
    +						
    +						
    +						_NS:9
    +						
    +						IBCocoaTouchFramework
    +					
    +				
    +				{{0, 20}, {320, 460}}
    +				
    +				
    +				
    +				
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					3
    +				
    +				
    +					
    +						imageView
    +						
    +						
    +					
    +					9
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					8
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					10
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						1
    +						
    +						
    +							
    +							
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						4
    +						
    +						
    +						imageView
    +					
    +					
    +						11
    +						
    +						
    +							
    +							
    +						
    +						
    +						toolbar
    +					
    +					
    +						7
    +						
    +						
    +					
    +					
    +						6
    +						
    +						
    +					
    +				
    +			
    +			
    +				ImageViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			11
    +		
    +		
    +			
    +				
    +					ImageViewController
    +					UIViewController
    +					
    +						onBackClick:
    +						id
    +					
    +					
    +						onBackClick:
    +						
    +							onBackClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIImageView
    +					
    +					
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							imageView
    +							UIImageView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/ImageViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{320, 88}
    +			{320, 88}
    +			{5, 117}
    +		
    +		1498
    +	
    +
    diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Advanced/1/Advanced.strings b/linphone.ldb/Resources/InAppSettings.bundle/Advanced/1/Advanced.strings
    index c7b00a51f..0cc1bcac5 100644
    --- a/linphone.ldb/Resources/InAppSettings.bundle/Advanced/1/Advanced.strings
    +++ b/linphone.ldb/Resources/InAppSettings.bundle/Advanced/1/Advanced.strings
    @@ -34,6 +34,9 @@
     /* Display name */
     "Display name" = "Display name";
     
    +/* Sharing server */
    +"Sharing server" = "Sharing server";
    +
     /* Username */
     "Username" = "Username";
     
    diff --git a/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings b/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings
    index d2123bd9c9fbc02cbcbd192765c91a1d87243990..77e98c0aebfadcfe5429948995256911fe4b7664 100644
    GIT binary patch
    delta 213
    zcmdnj#CV{J>EHj!flPrLg94Z)-(lgJ9LKzFvL371W*OEZ&dHPbRCtpa@)`0NN*EFu
    zk{L=SuNTn7BAUn(KRHi80*efO^|u5Ru$Ye_x|vb%u)t;|Wjm(HVro*GdDJE_PL5O7
    bnrxtvGx>$O+~NQYk;y!^Vw?ZiII;i$ts6cw
    
    delta 426
    zcmX?5wXcbh>HojU3mF481_v-r{>Z4rSUg#T$#k-!Uex5pOgkp8Ws;FqU?^e8XHZ}W
    zW=LfyVkl$CWJm_Glz<|(3<{GMFlh>7Q89UgK=kH7=1rW;B|t@Se5&jP42eMPm6Of*
    zG+|p9OJvDsI_j>$X~
    zWFXLY3P239E)!^M3M`0#v>#9ui;B$#N~}zi>s7KQcPeO2j#tUqY^u6Nc(S0S$mIVP
    P0zf)z^Fxbx7DfgDY_n~z
    
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index 23a93a274..15ef38c86 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -39,13 +39,9 @@
     		2234C8EE15EE744200E18E83 /* chat_message_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8ED15EE744200E18E83 /* chat_message_inprogress.png */; };
     		2234C8EF15EE744200E18E83 /* chat_message_inprogress.png in Resources */ = {isa = PBXBuildFile; fileRef = 2234C8ED15EE744200E18E83 /* chat_message_inprogress.png */; };
     		2237D4091084D7A9001383EE /* ring.wav in Resources */ = {isa = PBXBuildFile; fileRef = 2237D4081084D7A9001383EE /* ring.wav */; };
    -		22405EEB16006F0800B92522 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EE916006F0700B92522 /* libmediastreamer_base.a */; };
    -		22405EEC16006F0800B92522 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EEA16006F0700B92522 /* libmediastreamer_voip.a */; };
     		22405EEE1600B4E400B92522 /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EED1600B4E400B92522 /* AssetsLibrary.framework */; };
    -		22405F001601C19200B92522 /* ImageViewerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22405EFE1601C19100B92522 /* ImageViewerViewController.m */; };
    -		22405F011601C19200B92522 /* ImageViewerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22405EFE1601C19100B92522 /* ImageViewerViewController.m */; };
    -		22405F021601C19200B92522 /* ImageViewerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22405EFF1601C19100B92522 /* ImageViewerViewController.xib */; };
    -		22405F031601C19200B92522 /* ImageViewerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22405EFF1601C19100B92522 /* ImageViewerViewController.xib */; };
    +		22405F001601C19200B92522 /* ImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22405EFE1601C19100B92522 /* ImageViewController.m */; };
    +		22405F011601C19200B92522 /* ImageViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 22405EFE1601C19100B92522 /* ImageViewController.m */; };
     		2242E313125235120061DDCE /* ring.caf in Resources */ = {isa = PBXBuildFile; fileRef = 2242E312125235120061DDCE /* ring.caf */; };
     		224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 224567C1107B968500F10948 /* AVFoundation.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
     		2245F78A1201D38000C4179D /* MoreViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 22E0A81B111C44E100B04932 /* MoreViewController.xib */; };
    @@ -138,8 +134,6 @@
     		344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
     		344ABDF214850AE9007420B6 /* libstdc++.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDF014850AE9007420B6 /* libstdc++.6.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
     		34A6ECEB14CF13CB00460C04 /* linphone_icon_72.png in Resources */ = {isa = PBXBuildFile; fileRef = 34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */; };
    -		570B130115FE44AF00DE62B6 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 570B130015FE44AF00DE62B6 /* libmediastreamer_voip.a */; };
    -		570B130315FE44ED00DE62B6 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 570B130215FE44ED00DE62B6 /* libmediastreamer_base.a */; };
     		57F005C415EE2CCF00914747 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C315EE2CCF00914747 /* linphonerc */; };
     		57F005C515EE2CCF00914747 /* linphonerc in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C315EE2CCF00914747 /* linphonerc */; };
     		57F005C815EE2D9200914747 /* linphonerc-factory in Resources */ = {isa = PBXBuildFile; fileRef = 57F005C615EE2D9200914747 /* linphonerc-factory */; };
    @@ -325,7 +319,6 @@
     		D347347F1580E5F8003C7B8C /* history_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = D347347D1580E5F8003C7B8C /* history_selected.png */; };
     		D34BD61515C13B7B0070C209 /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D32B6E2E15A5C0AC0033019F /* libsqlite3.dylib */; };
     		D34BD61815C13D0B0070C209 /* liblinphone.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB911475562600DEE054 /* liblinphone.a */; };
    -		D34BD61915C13D0B0070C209 /* libmediastreamer.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2211DB8F147555C800DEE054 /* libmediastreamer.a */; };
     		D34BD61A15C13DB60070C209 /* accept_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F741582253100336684 /* accept_default.png */; };
     		D34BD61B15C13DB60070C209 /* accept_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3F83F751582253100336684 /* accept_over.png */; };
     		D34BD61C15C13DB60070C209 /* add_call_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3D6A39B159B0EEF005F692C /* add_call_default.png */; };
    @@ -676,6 +669,14 @@
     		D37DC6C21594AE1800B2A5EB /* LinphoneCoreSettingsStore.m in Sources */ = {isa = PBXBuildFile; fileRef = D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */; };
     		D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; };
     		D37DC7191594AF3F00B2A5EB /* MessageUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D37DC7171594AF3400B2A5EB /* MessageUI.framework */; };
    +		D37EE10916032DA4003608A6 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EE916006F0700B92522 /* libmediastreamer_base.a */; };
    +		D37EE10A16032DA4003608A6 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EEA16006F0700B92522 /* libmediastreamer_voip.a */; };
    +		D37EE10B16032DC2003608A6 /* libmediastreamer_base.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EE916006F0700B92522 /* libmediastreamer_base.a */; };
    +		D37EE10C16032DC2003608A6 /* libmediastreamer_voip.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 22405EEA16006F0700B92522 /* libmediastreamer_voip.a */; };
    +		D37EE10D16035793003608A6 /* ImageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37EE11016035793003608A6 /* ImageViewController.xib */; };
    +		D37EE10E16035793003608A6 /* ImageViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = D37EE11016035793003608A6 /* ImageViewController.xib */; };
    +		D37EE162160377D7003608A6 /* DTActionSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = D37EE161160377D7003608A6 /* DTActionSheet.m */; };
    +		D37EE163160377D7003608A6 /* DTActionSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = D37EE161160377D7003608A6 /* DTActionSheet.m */; };
     		D3804E6015D92A57008072A5 /* msg.caf in Resources */ = {isa = PBXBuildFile; fileRef = D3804E5E15D92A57008072A5 /* msg.caf */; };
     		D3804E6115D92A57008072A5 /* msg.caf in Resources */ = {isa = PBXBuildFile; fileRef = D3804E5E15D92A57008072A5 /* msg.caf */; };
     		D3804E6215D92A57008072A5 /* msg.wav in Resources */ = {isa = PBXBuildFile; fileRef = D3804E5F15D92A57008072A5 /* msg.wav */; };
    @@ -1348,7 +1349,6 @@
     		220FAD2E10765B400068D98F /* libosipparser2.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libosipparser2.a; path = "liblinphone-sdk/apple-darwin/lib/libosipparser2.a"; sourceTree = ""; };
     		220FAD2F10765B400068D98F /* libspeex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeex.a; path = "liblinphone-sdk/apple-darwin/lib/libspeex.a"; sourceTree = ""; };
     		220FAD3010765B400068D98F /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = ""; };
    -		2211DB8F147555C800DEE054 /* libmediastreamer.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer.a"; sourceTree = ""; };
     		2211DB911475562600DEE054 /* liblinphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphone.a; path = "liblinphone-sdk/apple-darwin/lib/liblinphone.a"; sourceTree = ""; };
     		2211DBBB14769C8200DEE054 /* CallDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CallDelegate.m; sourceTree = ""; };
     		2214783C1386A2030020F8B8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Resources/en.lproj/Localizable.strings; sourceTree = ""; };
    @@ -1374,9 +1374,8 @@
     		22405EE916006F0700B92522 /* libmediastreamer_base.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_base.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_base.a"; sourceTree = ""; };
     		22405EEA16006F0700B92522 /* libmediastreamer_voip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_voip.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_voip.a"; sourceTree = ""; };
     		22405EED1600B4E400B92522 /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = System/Library/Frameworks/AssetsLibrary.framework; sourceTree = SDKROOT; };
    -		22405EFD1601C19000B92522 /* ImageViewerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageViewerViewController.h; sourceTree = ""; };
    -		22405EFE1601C19100B92522 /* ImageViewerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageViewerViewController.m; sourceTree = ""; };
    -		22405EFF1601C19100B92522 /* ImageViewerViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = ImageViewerViewController.xib; sourceTree = ""; };
    +		22405EFD1601C19000B92522 /* ImageViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageViewController.h; sourceTree = ""; };
    +		22405EFE1601C19100B92522 /* ImageViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageViewController.m; sourceTree = ""; };
     		2242E312125235120061DDCE /* ring.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = ring.caf; path = Resources/ring.caf; sourceTree = ""; };
     		224567C1107B968500F10948 /* AVFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AVFoundation.framework; path = System/Library/Frameworks/AVFoundation.framework; sourceTree = SDKROOT; };
     		2248E90C12F7E4CF00220D9C /* UIDigitButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIDigitButton.h; sourceTree = ""; };
    @@ -1507,8 +1506,6 @@
     		344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; };
     		344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; };
     		34A6ECEA14CF13CB00460C04 /* linphone_icon_72.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = linphone_icon_72.png; path = Resources/linphone_icon_72.png; sourceTree = ""; };
    -		570B130015FE44AF00DE62B6 /* libmediastreamer_voip.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_voip.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_voip.a"; sourceTree = ""; };
    -		570B130215FE44ED00DE62B6 /* libmediastreamer_base.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libmediastreamer_base.a; path = "liblinphone-sdk/apple-darwin/lib/libmediastreamer_base.a"; sourceTree = ""; };
     		57F005C315EE2CCF00914747 /* linphonerc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = linphonerc; path = Resources/linphonerc; sourceTree = ""; };
     		57F005C615EE2D9200914747 /* linphonerc-factory */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc-factory"; path = "Resources/linphonerc-factory"; sourceTree = ""; };
     		57F005C715EE2D9200914747 /* linphonerc-factory~ipad */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = "linphonerc-factory~ipad"; path = "Resources/linphonerc-factory~ipad"; sourceTree = ""; };
    @@ -1723,6 +1720,10 @@
     		D37DC6BF1594AE1800B2A5EB /* LinphoneCoreSettingsStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneCoreSettingsStore.h; sourceTree = ""; };
     		D37DC6C01594AE1800B2A5EB /* LinphoneCoreSettingsStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneCoreSettingsStore.m; sourceTree = ""; };
     		D37DC7171594AF3400B2A5EB /* MessageUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MessageUI.framework; path = System/Library/Frameworks/MessageUI.framework; sourceTree = SDKROOT; };
    +		D37EE10F16035793003608A6 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/ImageViewController.xib; sourceTree = ""; };
    +		D37EE11116036197003608A6 /* fr */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = fr; path = fr.lproj/ImageViewController.xib; sourceTree = ""; };
    +		D37EE160160377D7003608A6 /* DTActionSheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DTActionSheet.h; sourceTree = ""; };
    +		D37EE161160377D7003608A6 /* DTActionSheet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DTActionSheet.m; sourceTree = ""; };
     		D3804E5E15D92A57008072A5 /* msg.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = msg.caf; path = Resources/msg.caf; sourceTree = ""; };
     		D3804E5F15D92A57008072A5 /* msg.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; name = msg.wav; path = Resources/msg.wav; sourceTree = ""; };
     		D3807FB715C28940005BE9BC /* DCRoundSwitch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DCRoundSwitch.h; sourceTree = ""; };
    @@ -2114,12 +2115,9 @@
     			isa = PBXFrameworksBuildPhase;
     			buildActionMask = 2147483647;
     			files = (
    -				22405EEE1600B4E400B92522 /* AssetsLibrary.framework in Frameworks */,
    -				22405EEB16006F0800B92522 /* libmediastreamer_base.a in Frameworks */,
    -				22405EEC16006F0800B92522 /* libmediastreamer_voip.a in Frameworks */,
    -				226EF06C15FA256B005865C7 /* MobileCoreServices.framework in Frameworks */,
     				22B5F03510CE6B2F00777D97 /* AddressBook.framework in Frameworks */,
     				22B5EFA310CE50BD00777D97 /* AddressBookUI.framework in Frameworks */,
    +				22405EEE1600B4E400B92522 /* AssetsLibrary.framework in Frameworks */,
     				2274402F106F335E006EC466 /* AudioToolbox.framework in Frameworks */,
     				224567C2107B968500F10948 /* AVFoundation.framework in Frameworks */,
     				228697C411AC29B800E9E0CA /* CFNetwork.framework in Frameworks */,
    @@ -2130,6 +2128,7 @@
     				22276E8713C73D8A00210156 /* CoreVideo.framework in Frameworks */,
     				1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
     				D37DC7181594AF3400B2A5EB /* MessageUI.framework in Frameworks */,
    +				226EF06C15FA256B005865C7 /* MobileCoreServices.framework in Frameworks */,
     				70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */,
     				70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */,
     				2264B6D211200342002C2C53 /* SystemConfiguration.framework in Frameworks */,
    @@ -2145,9 +2144,9 @@
     				220FAD3110765B400068D98F /* libeXosip2.a in Frameworks */,
     				220FAD3210765B400068D98F /* libgsm.a in Frameworks */,
     				223148E41178A08200637D6A /* libilbc.a in Frameworks */,
    -				570B130315FE44ED00DE62B6 /* libmediastreamer_base.a in Frameworks */,
    -				570B130115FE44AF00DE62B6 /* libmediastreamer_voip.a in Frameworks */,
     				F476004B147AAF2800FFF19B /* liblinphone.a in Frameworks */,
    +				D37EE10916032DA4003608A6 /* libmediastreamer_base.a in Frameworks */,
    +				D37EE10A16032DA4003608A6 /* libmediastreamer_voip.a in Frameworks */,
     				226F2ED81344B0EF00F6EF27 /* libmsamr.a in Frameworks */,
     				223148E61178A09900637D6A /* libmsilbc.a in Frameworks */,
     				226183B0147259670037138E /* libmssilk.a in Frameworks */,
    @@ -2197,7 +2196,8 @@
     				22D8F174147548E2008C97DB /* libilbc.a in Frameworks */,
     				22D8F16B147548E2008C97DB /* libgsm.a in Frameworks */,
     				D34BD61815C13D0B0070C209 /* liblinphone.a in Frameworks */,
    -				D34BD61915C13D0B0070C209 /* libmediastreamer.a in Frameworks */,
    +				D37EE10B16032DC2003608A6 /* libmediastreamer_base.a in Frameworks */,
    +				D37EE10C16032DC2003608A6 /* libmediastreamer_voip.a in Frameworks */,
     				22D8F17B147548E2008C97DB /* libmsamr.a in Frameworks */,
     				22D8F175147548E2008C97DB /* libmsilbc.a in Frameworks */,
     				22D8F179147548E2008C97DB /* libopencore-amrwb.a in Frameworks */,
    @@ -2266,6 +2266,9 @@
     				D3ED3EB515873928006C0DE4 /* HistoryViewController.h */,
     				D3ED3EB615873929006C0DE4 /* HistoryViewController.m */,
     				D38187D415FE346B00C3EDCA /* HistoryViewController.xib */,
    +				22405EFD1601C19000B92522 /* ImageViewController.h */,
    +				22405EFE1601C19100B92522 /* ImageViewController.m */,
    +				D37EE11016035793003608A6 /* ImageViewController.xib */,
     				D31AAF5C159B3919002C6B02 /* InCallTableViewController.h */,
     				D31AAF5D159B3919002C6B02 /* InCallTableViewController.m */,
     				D3F83EE91582021700336684 /* InCallViewController.h */,
    @@ -2297,9 +2300,6 @@
     				34216F3F1547EBCD00EA9777 /* VideoZoomHandler.m */,
     				D350F20B15A43BB100149E54 /* WizardViewController.h */,
     				D350F20C15A43BB100149E54 /* WizardViewController.m */,
    -				22405EFD1601C19000B92522 /* ImageViewerViewController.h */,
    -				22405EFE1601C19100B92522 /* ImageViewerViewController.m */,
    -				22405EFF1601C19100B92522 /* ImageViewerViewController.xib */,
     				D38187E015FE348A00C3EDCA /* WizardViewController.xib */,
     			);
     			path = Classes;
    @@ -2662,10 +2662,6 @@
     		29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
     			isa = PBXGroup;
     			children = (
    -				22405EED1600B4E400B92522 /* AssetsLibrary.framework */,
    -				22405EE916006F0700B92522 /* libmediastreamer_base.a */,
    -				22405EEA16006F0700B92522 /* libmediastreamer_voip.a */,
    -				226EF06B15FA256B005865C7 /* MobileCoreServices.framework */,
     				2258633C11410BAC00C5A737 /* README */,
     				22276E8013C73D3100210156 /* libavcodec.a */,
     				22276E8113C73D3100210156 /* libavutil.a */,
    @@ -2675,7 +2671,8 @@
     				220FAD2910765B400068D98F /* libgsm.a */,
     				223148E31178A08200637D6A /* libilbc.a */,
     				2211DB911475562600DEE054 /* liblinphone.a */,
    -				2211DB8F147555C800DEE054 /* libmediastreamer.a */,
    +				22405EE916006F0700B92522 /* libmediastreamer_base.a */,
    +				22405EEA16006F0700B92522 /* libmediastreamer_voip.a */,
     				226F2ED51344B0EF00F6EF27 /* libmsamr.a */,
     				226CDADE14E2D0B800513B67 /* libmsbcg729.a */,
     				223148E51178A09900637D6A /* libmsilbc.a */,
    @@ -2701,6 +2698,7 @@
     				344ABDF014850AE9007420B6 /* libstdc++.6.dylib */,
     				22B5F03410CE6B2F00777D97 /* AddressBook.framework */,
     				22B5EFA210CE50BD00777D97 /* AddressBookUI.framework */,
    +				22405EED1600B4E400B92522 /* AssetsLibrary.framework */,
     				2274402E106F335E006EC466 /* AudioToolbox.framework */,
     				224567C1107B968500F10948 /* AVFoundation.framework */,
     				228697C311AC29B800E9E0CA /* CFNetwork.framework */,
    @@ -2710,6 +2708,7 @@
     				340751961506459A00B89C47 /* CoreTelephony.framework */,
     				22276E8613C73D8A00210156 /* CoreVideo.framework */,
     				D37DC7171594AF3400B2A5EB /* MessageUI.framework */,
    +				226EF06B15FA256B005865C7 /* MobileCoreServices.framework */,
     				70E542F213E147E3002BA2C0 /* OpenGLES.framework */,
     				70E542F413E147EB002BA2C0 /* QuartzCore.framework */,
     				22744043106F33FC006EC466 /* Security.framework */,
    @@ -3167,6 +3166,7 @@
     				D380801215C299D0005BE9BC /* ColorSpaceUtilites.m */,
     				D380801115C29984005BE9BC /* ColorSpaceUtilities.h */,
     				D3807FB615C28940005BE9BC /* DCRoundSwitch */,
    +				D37EE15F160377D7003608A6 /* DTFoundation */,
     				D32B9DFA15A2F131000B6DEC /* FastAddressBook.h */,
     				D32B9DFB15A2F131000B6DEC /* FastAddressBook.m */,
     				D3ED40141602172200BF332B /* GrowingTextView */,
    @@ -3200,6 +3200,16 @@
     			name = Products;
     			sourceTree = "";
     		};
    +		D37EE15F160377D7003608A6 /* DTFoundation */ = {
    +			isa = PBXGroup;
    +			children = (
    +				D37EE160160377D7003608A6 /* DTActionSheet.h */,
    +				D37EE161160377D7003608A6 /* DTActionSheet.m */,
    +			);
    +			name = DTFoundation;
    +			path = Utils/DTFoundation;
    +			sourceTree = "";
    +		};
     		D3807FB615C28940005BE9BC /* DCRoundSwitch */ = {
     			isa = PBXGroup;
     			children = (
    @@ -3865,7 +3875,7 @@
     				2234C8E915EE2F7F00E18E83 /* chat_message_delivered.png in Resources */,
     				2234C8EB15EE2F7F00E18E83 /* chat_message_not_delivered.png in Resources */,
     				2234C8EE15EE744200E18E83 /* chat_message_inprogress.png in Resources */,
    -				22405F021601C19200B92522 /* ImageViewerViewController.xib in Resources */,
    +				D37EE10D16035793003608A6 /* ImageViewController.xib in Resources */,
     				D381881115FE3F0B00C3EDCA /* UICallCell.xib in Resources */,
     				D381881915FE3FCA00C3EDCA /* InCallViewController.xib in Resources */,
     				D381883E15FE447200C3EDCA /* ChatRoomViewController.xib in Resources */,
    @@ -4317,7 +4327,7 @@
     				2234C8EA15EE2F7F00E18E83 /* chat_message_delivered.png in Resources */,
     				2234C8EC15EE2F7F00E18E83 /* chat_message_not_delivered.png in Resources */,
     				2234C8EF15EE744200E18E83 /* chat_message_inprogress.png in Resources */,
    -				22405F031601C19200B92522 /* ImageViewerViewController.xib in Resources */,
    +				D37EE10E16035793003608A6 /* ImageViewController.xib in Resources */,
     				D381881215FE3F0B00C3EDCA /* UICallCell.xib in Resources */,
     				D381881A15FE3FCA00C3EDCA /* InCallViewController.xib in Resources */,
     				D381883F15FE447200C3EDCA /* ChatRoomViewController.xib in Resources */,
    @@ -4449,9 +4459,10 @@
     				D380800515C28A7A005BE9BC /* UILinphone.m in Sources */,
     				D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
     				D378AB2A15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
    -				22405F001601C19200B92522 /* ImageViewerViewController.m in Sources */,
    +				22405F001601C19200B92522 /* ImageViewController.m in Sources */,
     				D3ED40191602172200BF332B /* HPGrowingTextView.m in Sources */,
     				D3ED401B1602172200BF332B /* HPTextViewInternal.m in Sources */,
    +				D37EE162160377D7003608A6 /* DTActionSheet.m in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4542,9 +4553,10 @@
     				D380800615C28A7A005BE9BC /* UILinphone.m in Sources */,
     				D380801415C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
     				D378AB2B15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
    -				22405F011601C19200B92522 /* ImageViewerViewController.m in Sources */,
    +				22405F011601C19200B92522 /* ImageViewController.m in Sources */,
     				D3ED401A1602172200BF332B /* HPGrowingTextView.m in Sources */,
     				D3ED401C1602172200BF332B /* HPTextViewInternal.m in Sources */,
    +				D37EE163160377D7003608A6 /* DTActionSheet.m in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4583,6 +4595,15 @@
     			name = Localizable.strings;
     			sourceTree = "";
     		};
    +		D37EE11016035793003608A6 /* ImageViewController.xib */ = {
    +			isa = PBXVariantGroup;
    +			children = (
    +				D37EE10F16035793003608A6 /* en */,
    +				D37EE11116036197003608A6 /* fr */,
    +			);
    +			name = ImageViewController.xib;
    +			sourceTree = "";
    +		};
     		D38187B015FE340100C3EDCA /* ChatRoomViewController.xib */ = {
     			isa = PBXVariantGroup;
     			children = (
    
    From 942c0c44e61728696e42453a8b85a0302deb0abc Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Fri, 14 Sep 2012 17:55:07 +0200
    Subject: [PATCH 219/397] activate edge mode
    
    ---
     Resources/linphonerc              | 2 +-
     Resources/linphonerc-factory      | 3 +++
     Resources/linphonerc-factory~ipad | 3 +++
     submodules/mssilk                 | 2 +-
     4 files changed, 8 insertions(+), 2 deletions(-)
    
    diff --git a/Resources/linphonerc b/Resources/linphonerc
    index 26241fa72..5057f2f02 100644
    --- a/Resources/linphonerc
    +++ b/Resources/linphonerc
    @@ -21,4 +21,4 @@ display_filter_auto_rotate=1
     
     
     [default_values]
    -reg_expires=610
    \ No newline at end of file
    +reg_expires=600
    \ No newline at end of file
    diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory
    index 488ee816c..9f430caa8 100644
    --- a/Resources/linphonerc-factory
    +++ b/Resources/linphonerc-factory
    @@ -3,6 +3,9 @@ download_bw=380
     upload_bw=380
     firewall_policy=0
     mtu=1300
    +activate_edge_workarounds=1
    +edge_ping_time=200
    +edge_bw=10
     
     [sip]
     guess_hostname=1
    diff --git a/Resources/linphonerc-factory~ipad b/Resources/linphonerc-factory~ipad
    index ca50942ac..68428263e 100644
    --- a/Resources/linphonerc-factory~ipad
    +++ b/Resources/linphonerc-factory~ipad
    @@ -3,6 +3,9 @@ download_bw=512
     upload_bw=512
     firewall_policy=0
     mtu=1300
    +activate_edge_workarounds=1
    +edge_ping_time=200
    +edge_bw=10
     
     [sip]
     guess_hostname=1
    diff --git a/submodules/mssilk b/submodules/mssilk
    index f9015a91c..1d81e34d6 160000
    --- a/submodules/mssilk
    +++ b/submodules/mssilk
    @@ -1 +1 @@
    -Subproject commit f9015a91ca056cc5be577dfb78c7c224f1fd77b2
    +Subproject commit 1d81e34d6e3234797a726f9e66fc02ac5f28a637
    
    From 3e78c72b6ba2b29babbbe923f9401dcd0f7a9858 Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Fri, 14 Sep 2012 18:16:55 +0200
    Subject: [PATCH 220/397] update liblinphone
    
    ---
     submodules/linphone | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/submodules/linphone b/submodules/linphone
    index 800460760..efe7222f2 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit 8004607607c344a0f1dd09d1854848fca0e52d59
    +Subproject commit efe7222f2efb7eae906b7337925fc080ce9d6b0e
    
    From 40b735ef5acf37363402c7228a95309b3a9d6fc6 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Sun, 16 Sep 2012 11:02:17 +0200
    Subject: [PATCH 221/397] change default values for video policiy.
    
    ---
     Resources/linphonerc | 3 ++-
     1 file changed, 2 insertions(+), 1 deletion(-)
    
    diff --git a/Resources/linphonerc b/Resources/linphonerc
    index 5057f2f02..d5d14881f 100644
    --- a/Resources/linphonerc
    +++ b/Resources/linphonerc
    @@ -17,7 +17,8 @@ show_local=0
     enabled=1
     size=qvga
     display_filter_auto_rotate=1
    -
    +automatically_initiate=0
    +automatically_accept=0
     
     
     [default_values]
    
    From 93e61518b5c1b1b377a65ac7d33f0a8653b3e349 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Mon, 17 Sep 2012 09:48:27 +0200
    Subject: [PATCH 222/397] Factorize ImagePicker code
    
    ---
     Classes/ChatRoomViewController.h              |  3 +-
     Classes/ChatRoomViewController.m              | 79 +++++--------------
     ...ntroller.h => ImagePickerViewController.h} | 10 ++-
     ...ntroller.m => ImagePickerViewController.m} | 32 ++++++--
     Classes/ImageViewController.m                 |  2 +
     Classes/LinphoneUI/UIContactDetailsHeader.h   |  4 +-
     Classes/LinphoneUI/UIContactDetailsHeader.m   | 23 ++++--
     Classes/PhoneMainView.h                       |  2 +-
     linphone.xcodeproj/project.pbxproj            | 16 ++--
     9 files changed, 82 insertions(+), 89 deletions(-)
     rename Classes/{ContactDetailsImagePickerController.h => ImagePickerViewController.h} (69%)
     rename Classes/{ContactDetailsImagePickerController.m => ImagePickerViewController.m} (67%)
    
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index 282d2087e..47f44bfc5 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -24,10 +24,11 @@
     #import "ChatRoomTableViewController.h"
     #import "HPGrowingTextView.h"
     #import "ChatModel.h"
    +#import "ImagePickerViewController.h"
     
     #include "linphonecore.h"
     
    -@interface ChatRoomViewController : UIViewController {
    +@interface ChatRoomViewController : UIViewController {
         @private
         LinphoneChatRoom *chatRoom;
     	NSURLConnection* uploadContext;
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index 746adb0c3..e72461314 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -19,10 +19,12 @@
     
     #import "ChatRoomViewController.h"
     #import "PhoneMainView.h"
    +#import "DTActionSheet.h"
    +
     #import 
     #import 
     #import 
    -#import "DTActionSheet.h"
    +
     
     @implementation ChatRoomViewController
     
    @@ -411,45 +413,24 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     - (IBAction)onPictureClick:(id)event {
     	[messageField resignFirstResponder];
         
    -    DTActionSheet *sheet = [[[DTActionSheet alloc] initWithTitle:NSLocalizedString(@"Select picture source",nil)] autorelease];
    -    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
    -	    [sheet addButtonWithTitle:NSLocalizedString(@"Camera",nil) block:^(){
    -            UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
    -            mediaUI.sourceType = UIImagePickerControllerSourceTypeCamera;
    +    [ImagePickerViewController promptSelectSource:^(UIImagePickerControllerSourceType type) {
    +        UICompositeViewDescription *description = [[[ImagePickerViewController compositeViewDescription] copy] autorelease];
    +        description.tabBar = nil; // Disable default tarbar
    +        description.tabBarEnabled = false;
    +        ImagePickerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:description push:TRUE], ImagePickerViewController);
    +        if(controller != nil) {
    +            controller.sourceType = type;
                 
                 // Displays a control that allows the user to choose picture or
                 // movie capture, if both are available:
    -            mediaUI.mediaTypes =
    -            [UIImagePickerController availableMediaTypesForSourceType:
    -             UIImagePickerControllerSourceTypeCamera];
    +            controller.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:type];
                 
                 // Hides the controls for moving & scaling pictures, or for
                 // trimming movies. To instead show the controls, use YES.
    -            mediaUI.allowsEditing = NO;
    -            mediaUI.delegate = self;
    -            [self presentModalViewController: mediaUI animated: YES];
    -        }];
    -	}
    -	if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
    -	    [sheet addButtonWithTitle:NSLocalizedString(@"Photo library",nil) block:^(){
    -            UIImagePickerController *mediaUI = [[UIImagePickerController alloc] init];
    -            mediaUI.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    -            
    -            // Displays saved pictures and movies, if both are available, from the
    -            // Camera Roll album.
    -            mediaUI.mediaTypes =
    -            [UIImagePickerController availableMediaTypesForSourceType:
    -             UIImagePickerControllerSourceTypePhotoLibrary];
    -            
    -            // Hides the controls for moving & scaling pictures, or for
    -            // trimming movies. To instead show the controls, use YES.
    -            mediaUI.allowsEditing = NO;
    -            mediaUI.delegate = self;
    -            [self presentModalViewController: mediaUI animated: YES];
    -        }];
    -	}
    -    [sheet addCancelButtonWithTitle:NSLocalizedString(@"Cancel",nil)];
    -    [sheet showInView:self.view];
    +            controller.allowsEditing = NO;
    +            controller.imagePickerDelegate = self;
    +        }
    +    }];
     }
     
     - (IBAction)onTransferCancelClick:(id)event {
    @@ -663,36 +644,16 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     	return [NSURLConnection connectionWithRequest:(NSURLRequest *)request delegate:self];
     }
     
    -#pragma mark UIImagePickerControllerDelegate
     
    -- (void)imagePickerControllerDidCancel:(UIImagePickerController *) picker {
    -    [self dismissModalViewControllerAnimated: YES];
    -    [picker release];
    -}
    +#pragma mark ImpagePickerDelegate
     
    -- (void)imagePickerController: (UIImagePickerController *) picker didFinishPickingMediaWithInfo: (NSDictionary *) info {
    -    NSURL *imageURL = [info valueForKey: UIImagePickerControllerReferenceURL];
    -    UIImage* imageToUse = (UIImage *) [info objectForKey: UIImagePickerControllerOriginalImage];
    -    NSString* imageName;
    -    if (imageURL) {
    -        // extract id from asset-url ex: assets-library://asset/asset.JPG?id=1645156-6151-1513&ext=JPG
    -        NSArray *parameters = [[imageURL query] componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"=&"]];
    -        for (int i = 0; i < [parameters count]; i=i+2) {
    -            if ([(NSString*)[parameters objectAtIndex:i] isEqualToString:@"id"]) {
    -                imageName=[NSString stringWithFormat:@"%@.jpg",(NSString*)[parameters objectAtIndex:i+1]];
    -            }
    -        }
    -    } else {
    -        // must be "unique"
    -        imageName=[NSString stringWithFormat:@"%i.jpg",[imageToUse hash]];
    -    }
    -    uploadContext = [self uploadImage:imageToUse Named: imageName];
    +- (void)imagePickerDelegateImage:(UIImage*)image {
    +    NSString *imageName = [NSString stringWithFormat:@"%i.jpg", [image hash]];
    +    uploadContext = [self uploadImage:image Named: imageName];
         [self startUpload];
    -    
    -    [picker.presentingViewController dismissModalViewControllerAnimated: YES];
    -    [picker release];
     }
     
    +
     #pragma mark - Keyboard Event Functions
     
     - (void)keyboardWillHide:(NSNotification *)notif {
    diff --git a/Classes/ContactDetailsImagePickerController.h b/Classes/ImagePickerViewController.h
    similarity index 69%
    rename from Classes/ContactDetailsImagePickerController.h
    rename to Classes/ImagePickerViewController.h
    index 3e0fcff72..91eb9c07d 100644
    --- a/Classes/ContactDetailsImagePickerController.h
    +++ b/Classes/ImagePickerViewController.h
    @@ -19,15 +19,17 @@
     
     #import "UICompositeViewController.h"
     
    -@protocol ContactDetailsImagePickerDelegate 
    +@protocol ImagePickerDelegate 
     
    -- (void)changeContactImage:(UIImage*)image;
    +- (void)imagePickerDelegateImage:(UIImage*)image;
     
     @end
     
    -@interface ContactDetailsImagePickerController : UIImagePickerController  {
    +@interface ImagePickerViewController : UIImagePickerController  {
     }
     
    -@property (nonatomic, retain) id imagePickerDelegate;
    +@property (nonatomic, retain) id imagePickerDelegate;
    +
    ++ (void)promptSelectSource:(void (^)(UIImagePickerControllerSourceType))block;
     
     @end
    diff --git a/Classes/ContactDetailsImagePickerController.m b/Classes/ImagePickerViewController.m
    similarity index 67%
    rename from Classes/ContactDetailsImagePickerController.m
    rename to Classes/ImagePickerViewController.m
    index 0b68fcf1b..dad0a57a1 100644
    --- a/Classes/ContactDetailsImagePickerController.m
    +++ b/Classes/ImagePickerViewController.m
    @@ -17,10 +17,11 @@
      *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
      */
     
    -#import "ContactDetailsImagePickerController.h"
    +#import "ImagePickerViewController.h"
     #import "PhoneMainView.h"
    +#import "DTActionSheet.h"
     
    -@implementation ContactDetailsImagePickerController
    +@implementation ImagePickerViewController
     
     @synthesize imagePickerDelegate;
     
    @@ -31,8 +32,8 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     + (UICompositeViewDescription *)compositeViewDescription {
         if(compositeDescription == nil) {
    -        compositeDescription = [[UICompositeViewDescription alloc] init:@"ContactDetailsImage"
    -                                                                content:@"ContactDetailsImagePickerController"
    +        compositeDescription = [[UICompositeViewDescription alloc] init:@"ImagePicker"
    +                                                                content:@"ImagePickerViewController"
                                                                    stateBar:nil
                                                             stateBarEnabled:false
                                                                      tabBar:@"UIMainBar"
    @@ -56,11 +57,28 @@ static UICompositeViewDescription *compositeDescription = nil;
     #pragma mark -
     
     - (void)dismiss {
    -    if([[[PhoneMainView instance] currentView] equal:[ContactDetailsImagePickerController compositeViewDescription]]) {
    +    if([[[PhoneMainView instance] currentView] equal:[ImagePickerViewController compositeViewDescription]]) {
             [[PhoneMainView instance] popCurrentView];
         }
     }
     
    ++ (void)promptSelectSource:(void (^)(UIImagePickerControllerSourceType))block {
    +    DTActionSheet *sheet = [[[DTActionSheet alloc] initWithTitle:NSLocalizedString(@"Select picture source",nil)] autorelease];
    +    if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
    +	    [sheet addButtonWithTitle:NSLocalizedString(@"Camera",nil) block:^(){
    +            block(UIImagePickerControllerSourceTypeCamera);
    +        }];
    +	}
    +	if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
    +	    [sheet addButtonWithTitle:NSLocalizedString(@"Photo library",nil) block:^(){
    +            block(UIImagePickerControllerSourceTypePhotoLibrary);
    +        }];
    +	}
    +    [sheet addCancelButtonWithTitle:NSLocalizedString(@"Cancel",nil)];
    +    
    +    [sheet showInView:[PhoneMainView instance].view];
    +}
    +
     
     #pragma mark - UIImagePickerControllerDelegate Functions
     
    @@ -69,8 +87,8 @@ static UICompositeViewDescription *compositeDescription = nil;
         if(image == nil) {
             image = [info objectForKey:UIImagePickerControllerOriginalImage];
         }
    -    if(image != nil) {
    -        [imagePickerDelegate changeContactImage:image];
    +    if(image != nil && imagePickerDelegate != nil) {
    +        [imagePickerDelegate imagePickerDelegateImage:image];
         }
         [self dismiss];
     }
    diff --git a/Classes/ImageViewController.m b/Classes/ImageViewController.m
    index e71d91e89..225ca9a4f 100644
    --- a/Classes/ImageViewController.m
    +++ b/Classes/ImageViewController.m
    @@ -30,6 +30,7 @@
     @synthesize backButton;
     @synthesize image;
     
    +
     #pragma mark - UICompositeViewDelegate Functions
     
     static UICompositeViewDescription *compositeDescription = nil;
    @@ -49,6 +50,7 @@ static UICompositeViewDescription *compositeDescription = nil;
         return compositeDescription;
     }
     
    +
     #pragma mark - Property Functions
     
     - (void)setImage:(UIImage *)aimage {
    diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.h b/Classes/LinphoneUI/UIContactDetailsHeader.h
    index a9279f002..af82ed75a 100644
    --- a/Classes/LinphoneUI/UIContactDetailsHeader.h
    +++ b/Classes/LinphoneUI/UIContactDetailsHeader.h
    @@ -20,10 +20,10 @@
     #import 
     #import 
     
    -#import "ContactDetailsImagePickerController.h"
    +#import "ImagePickerViewController.h"
     #import "ContactDetailsDelegate.h"
     
    -@interface UIContactDetailsHeader : UIViewController {
    +@interface UIContactDetailsHeader : UIViewController {
         @private
         NSArray *propertyList;
         BOOL editing;
    diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m
    index 24221d60a..3a2544958 100644
    --- a/Classes/LinphoneUI/UIContactDetailsHeader.m
    +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m
    @@ -243,19 +243,28 @@
     
     - (IBAction)onAvatarClick:(id)event {
         if(self.isEditing) {
    -        ContactDetailsImagePickerController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ContactDetailsImagePickerController compositeViewDescription] push:TRUE], ContactDetailsImagePickerController);
    -        if(controller != nil) {
    -            [controller setAllowsEditing:TRUE];
    -            [controller setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
    -            [controller setImagePickerDelegate:self];
    -        }
    +        [ImagePickerViewController promptSelectSource:^(UIImagePickerControllerSourceType type) {
    +            ImagePickerViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ImagePickerViewController compositeViewDescription] push:TRUE], ImagePickerViewController);
    +            if(controller != nil) {
    +                controller.sourceType = type;
    +                
    +                // Displays a control that allows the user to choose picture or
    +                // movie capture, if both are available:
    +                controller.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:type];
    +                
    +                // Hides the controls for moving & scaling pictures, or for
    +                // trimming movies. To instead show the controls, use YES.
    +                controller.allowsEditing = NO;
    +                controller.imagePickerDelegate = self;
    +            }
    +        }];
         }
     }
     
     
     #pragma mark - ContactDetailsImagePickerDelegate Functions
     
    -- (void)changeContactImage:(UIImage*)image {
    +- (void)imagePickerDelegateImage:(UIImage*)image {
         NSError* error = NULL;
         if(!ABPersonRemoveImageData(contact, (CFErrorRef*)error)) {
             [LinphoneLogger log:LinphoneLoggerLog format:@"Can't add entry: %@", [error localizedDescription]];
    diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h
    index e92f28834..f76e3cb6a 100644
    --- a/Classes/PhoneMainView.h
    +++ b/Classes/PhoneMainView.h
    @@ -30,7 +30,7 @@
     #import "ContactsViewController.h"
     #import "ContactDetailsViewController.h"
     #import "ContactDetailsLabelViewController.h"
    -#import "ContactDetailsImagePickerController.h"
    +#import "ImagePickerViewController.h"
     #import "HistoryViewController.h"
     #import "HistoryDetailsViewController.h"
     #import "InCallViewController.h"
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index 15ef38c86..1906d3515 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -655,8 +655,8 @@
     		D377BBFA15A19DA6002B696B /* video_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D377BBF915A19DA6002B696B /* video_on_disabled.png */; };
     		D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; };
     		D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; };
    -		D378AB2A15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */; };
    -		D378AB2B15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */; };
    +		D378AB2A15DCDB4A0098505D /* ImagePickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378AB2915DCDB490098505D /* ImagePickerViewController.m */; };
    +		D378AB2B15DCDB4A0098505D /* ImagePickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378AB2915DCDB490098505D /* ImagePickerViewController.m */; };
     		D37B96B715A1A6F20005CCD2 /* call_state_delete_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */; };
     		D37B96B915A1A6F20005CCD2 /* call_state_delete_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */; };
     		D37C638E15AAD251009D0BAC /* contact_number_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D37C638C15AAD251009D0BAC /* contact_number_over.png */; };
    @@ -1707,8 +1707,8 @@
     		D377BBF915A19DA6002B696B /* video_on_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_disabled.png; path = Resources/video_on_disabled.png; sourceTree = ""; };
     		D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsLabelViewController.h; sourceTree = ""; };
     		D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsLabelViewController.m; sourceTree = ""; };
    -		D378AB2815DCDB480098505D /* ContactDetailsImagePickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsImagePickerController.h; sourceTree = ""; };
    -		D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsImagePickerController.m; sourceTree = ""; };
    +		D378AB2815DCDB480098505D /* ImagePickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImagePickerViewController.h; sourceTree = ""; };
    +		D378AB2915DCDB490098505D /* ImagePickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImagePickerViewController.m; sourceTree = ""; };
     		D37B96B515A1A6F20005CCD2 /* call_state_delete_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_default.png; path = Resources/call_state_delete_default.png; sourceTree = ""; };
     		D37B96B615A1A6F20005CCD2 /* call_state_delete_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = call_state_delete_over.png; path = Resources/call_state_delete_over.png; sourceTree = ""; };
     		D37C638C15AAD251009D0BAC /* contact_number_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = contact_number_over.png; path = Resources/contact_number_over.png; sourceTree = ""; };
    @@ -2236,8 +2236,6 @@
     				22E0A81F111C44E100B04932 /* ConsoleViewController.m */,
     				22E0A81E111C44E100B04932 /* ConsoleViewController.xib */,
     				D30BBD1215D3EFEB000F93DD /* ContactDetailsDelegate.h */,
    -				D378AB2815DCDB480098505D /* ContactDetailsImagePickerController.h */,
    -				D378AB2915DCDB490098505D /* ContactDetailsImagePickerController.m */,
     				D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */,
     				D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */,
     				D38187B815FE341B00C3EDCA /* ContactDetailsLabelViewController.xib */,
    @@ -2266,6 +2264,8 @@
     				D3ED3EB515873928006C0DE4 /* HistoryViewController.h */,
     				D3ED3EB615873929006C0DE4 /* HistoryViewController.m */,
     				D38187D415FE346B00C3EDCA /* HistoryViewController.xib */,
    +				D378AB2815DCDB480098505D /* ImagePickerViewController.h */,
    +				D378AB2915DCDB490098505D /* ImagePickerViewController.m */,
     				22405EFD1601C19000B92522 /* ImageViewController.h */,
     				22405EFE1601C19100B92522 /* ImageViewController.m */,
     				D37EE11016035793003608A6 /* ImageViewController.xib */,
    @@ -4458,7 +4458,7 @@
     				D380800215C2894A005BE9BC /* IASKTextField.m in Sources */,
     				D380800515C28A7A005BE9BC /* UILinphone.m in Sources */,
     				D380801315C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
    -				D378AB2A15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
    +				D378AB2A15DCDB4A0098505D /* ImagePickerViewController.m in Sources */,
     				22405F001601C19200B92522 /* ImageViewController.m in Sources */,
     				D3ED40191602172200BF332B /* HPGrowingTextView.m in Sources */,
     				D3ED401B1602172200BF332B /* HPTextViewInternal.m in Sources */,
    @@ -4552,7 +4552,7 @@
     				D380800315C2894A005BE9BC /* IASKTextField.m in Sources */,
     				D380800615C28A7A005BE9BC /* UILinphone.m in Sources */,
     				D380801415C299D0005BE9BC /* ColorSpaceUtilites.m in Sources */,
    -				D378AB2B15DCDB4A0098505D /* ContactDetailsImagePickerController.m in Sources */,
    +				D378AB2B15DCDB4A0098505D /* ImagePickerViewController.m in Sources */,
     				22405F011601C19200B92522 /* ImageViewController.m in Sources */,
     				D3ED401A1602172200BF332B /* HPGrowingTextView.m in Sources */,
     				D3ED401C1602172200BF332B /* HPTextViewInternal.m in Sources */,
    
    From f118e62af74717438e8229a541c4d52c5b2ab7ba Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Mon, 17 Sep 2012 11:22:16 +0200
    Subject: [PATCH 223/397] move default firewall policy from linphonerc-factory
     to linphonerc
    
    ---
     Resources/linphonerc              | 2 ++
     Resources/linphonerc-factory      | 1 -
     Resources/linphonerc-factory~ipad | 1 -
     Resources/linphonerc~ipad         | 5 ++++-
     4 files changed, 6 insertions(+), 3 deletions(-)
    
    diff --git a/Resources/linphonerc b/Resources/linphonerc
    index 5057f2f02..b2e2d04a0 100644
    --- a/Resources/linphonerc
    +++ b/Resources/linphonerc
    @@ -19,6 +19,8 @@ size=qvga
     display_filter_auto_rotate=1
     
     
    +[net]
    +firewall_policy=0
     
     [default_values]
     reg_expires=600
    \ No newline at end of file
    diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory
    index 9f430caa8..6364d3100 100644
    --- a/Resources/linphonerc-factory
    +++ b/Resources/linphonerc-factory
    @@ -1,7 +1,6 @@
     [net]
     download_bw=380
     upload_bw=380
    -firewall_policy=0
     mtu=1300
     activate_edge_workarounds=1
     edge_ping_time=200
    diff --git a/Resources/linphonerc-factory~ipad b/Resources/linphonerc-factory~ipad
    index 68428263e..121edc3e6 100644
    --- a/Resources/linphonerc-factory~ipad
    +++ b/Resources/linphonerc-factory~ipad
    @@ -1,7 +1,6 @@
     [net]
     download_bw=512
     upload_bw=512
    -firewall_policy=0
     mtu=1300
     activate_edge_workarounds=1
     edge_ping_time=200
    diff --git a/Resources/linphonerc~ipad b/Resources/linphonerc~ipad
    index 2b37b20f2..768e62443 100644
    --- a/Resources/linphonerc~ipad
    +++ b/Resources/linphonerc~ipad
    @@ -7,4 +7,7 @@ keepalive_period=30000
     
     [rtp]
     audio_rtp_port=7076
    -video_rtp_port=9078
    \ No newline at end of file
    +video_rtp_port=9078
    +
    +[net]
    +firewall_policy=0
    \ No newline at end of file
    
    From 515921039482467e75e261b44245ff1e3c077392 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Mon, 17 Sep 2012 11:55:33 +0200
    Subject: [PATCH 224/397] Split Image sharing code
    
    ---
     Classes/ChatRoomViewController.h    |   8 +-
     Classes/ChatRoomViewController.m    | 266 +++++++---------------------
     Classes/ImagePickerViewController.h |   2 +-
     Classes/ImagePickerViewController.m |   2 +-
     Classes/ImageSharing.h              |  50 ++++++
     Classes/ImageSharing.m              | 182 +++++++++++++++++++
     linphone.xcodeproj/project.pbxproj  |   8 +
     7 files changed, 312 insertions(+), 206 deletions(-)
     create mode 100644 Classes/ImageSharing.h
     create mode 100644 Classes/ImageSharing.m
    
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index 47f44bfc5..730342317 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -25,16 +25,14 @@
     #import "HPGrowingTextView.h"
     #import "ChatModel.h"
     #import "ImagePickerViewController.h"
    +#import "ImageSharing.h"
     
     #include "linphonecore.h"
     
    -@interface ChatRoomViewController : UIViewController {
    +@interface ChatRoomViewController : UIViewController {
         @private
         LinphoneChatRoom *chatRoom;
    -	NSURLConnection* uploadContext;
    -	NSURLConnection* downloadContext;
    -	NSMutableData* downloadedData;
    -	NSInteger totalBytesExpectedToRead;
    +    ImageSharing *imageSharing;
     }
     
     
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index e72461314..a412da064 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -54,6 +54,7 @@
         self = [super initWithNibName:@"ChatRoomViewController" bundle:[NSBundle mainBundle]];
         if (self != nil) {
             self->chatRoom = NULL;
    +        self->imageSharing = NULL;
         }
         return self;
     }
    @@ -83,7 +84,6 @@
     }
     
     
    -
     #pragma mark - UICompositeViewDelegate Functions
     
     static UICompositeViewDescription *compositeDescription = nil;
    @@ -106,7 +106,6 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     #pragma mark - ViewController Functions
     
    -
     - (void)viewDidLoad {
         [super viewDidLoad];
         
    @@ -120,7 +119,6 @@ static UICompositeViewDescription *compositeDescription = nil;
     	messageField.font = [UIFont systemFontOfSize:18.0f];
         messageField.contentInset = UIEdgeInsetsZero;
         messageField.backgroundColor = [UIColor clearColor];
    -	[self enableTransferView:FALSE];
         [sendButton setEnabled:FALSE];
     }
     
    @@ -331,9 +329,9 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
                 
     			DTActionSheet *sheet = [[[DTActionSheet alloc] initWithTitle:NSLocalizedString(@"Incoming file stored to your photo library",nil)] autorelease];
                 [sheet addButtonWithTitle:NSLocalizedString(@"Accept",nil) block:^(){
    -                [downloadContext release];
    -                downloadContext = [self downloadImageFrom:pendingFileUrl];
    -                [self startDownload];
    +                imageSharing = [ImageSharing imageSharingDownload:[NSURL URLWithString:pendingFileUrl] delegate:self];
    +                [footerView setHidden:TRUE];
    +                [transferView setHidden:FALSE];
                 }];
                 [sheet addCancelButtonWithTitle:NSLocalizedString(@"Ignore",nil)];
                 [sheet showInView:self.view];
    @@ -379,6 +377,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
                                                     forNinePatchNamed:@"chat_background"]];
     }
     
    +
     #pragma mark - Action Functions
     
     - (IBAction)onBackClick:(id)event {
    @@ -434,223 +433,92 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     }
     
     - (IBAction)onTransferCancelClick:(id)event {
    -    if(uploadContext) {
    -        [uploadContext cancel];
    -        [self stopUpload];
    +    if(imageSharing) {
    +        [imageSharing cancel];
         }
    -    if(downloadContext) {
    -    	[downloadContext cancel];
    -        [self stopDownload];
    -    }
    -	[LinphoneLogger log:LinphoneLoggerLog format:@"File transfer interrupted by user"];
    -}
    -
    -- (void)enableTransferView:(BOOL)isTranfer {
    -	if (isTranfer) {
    -		[imageTransferProgressBar setProgress:0.0];
    -	} else {
    -		//[uploadContext cancel];
    -	}
    -    [footerView setHidden:isTranfer];
    -	[transferView setHidden:!isTranfer];
    -	[imageTransferProgressBar setHidden:!isTranfer];
    -	[cancelTransferButton setHidden:!isTranfer];
    -	[sendButton setEnabled:!isTranfer];
    -}
    -
    -- (void)startUpload {
    -	[self enableTransferView:TRUE];
    -}
    -
    -- (void)stopUpload {
    -	[self enableTransferView:FALSE];
    -}
    -
    -- (void)startDownload {
    -	[self enableTransferView:TRUE];
    -}
    -
    -- (void)stopDownload {
    -	[self enableTransferView:FALSE];
     }
     
     
    -#pragma mark - NSURLConnectionDelegate
    +#pragma mark ImageSharingDelegate
     
    -- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    -	if (connection == uploadContext) {
    -		[self stopUpload];
    -        NSString *serverUrl = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url"];
    -		[LinphoneLogger log:LinphoneLoggerError format:@"Cannot upload file to server [%@] because [%@]", serverUrl, [error localizedDescription]];
    -        	UIAlertView* errorAlert = [UIAlertView alloc];
    +- (void)imageSharingProgress:(ImageSharing*)aimageSharing progress:(float)progress {
    +    [imageTransferProgressBar setProgress:progress animated:FALSE];
    +}
    +
    +- (void)imageSharingAborted:(ImageSharing*)aimageSharing {
    +    [footerView setHidden:FALSE];
    +	[transferView setHidden:TRUE];
    +    imageSharing = NULL;
    +}
    +
    +- (void)imageSharingError:(ImageSharing*)aimageSharing error:(NSError *)error {
    +    [footerView setHidden:FALSE];
    +	[transferView setHidden:TRUE];
    +    NSString *url = [aimageSharing.connection.currentRequest.URL absoluteString];
    +    if (aimageSharing.upload) {
    +		[LinphoneLogger log:LinphoneLoggerError format:@"Cannot upload file to server [%@] because [%@]", url, [error localizedDescription]];
    +        UIAlertView* errorAlert = [UIAlertView alloc];
     		[errorAlert	initWithTitle:NSLocalizedString(@"Transfer error", nil)
    -						  message:NSLocalizedString(@"Cannot transfer file to remote contact", nil) 
    -						 delegate:nil 
    -				cancelButtonTitle:NSLocalizedString(@"Ok",nil) 
    +						  message:NSLocalizedString(@"Cannot transfer file to remote contact", nil)
    +						 delegate:nil
    +				cancelButtonTitle:NSLocalizedString(@"Ok",nil)
     				otherButtonTitles:nil ,nil];
     		[errorAlert show];
             [errorAlert release];
    -	}else if (connection == downloadContext) {
    -		[LinphoneLogger log:LinphoneLoggerError format:@"Cannot dowanlod file from [%@] because [%@]", [connection.currentRequest.URL absoluteString], [error localizedDescription]];
    -        	UIAlertView* errorAlert = [UIAlertView alloc];
    +	} else {
    +		[LinphoneLogger log:LinphoneLoggerError format:@"Cannot dowanlod file from [%@] because [%@]", url, [error localizedDescription]];
    +        UIAlertView* errorAlert = [UIAlertView alloc];
     		[errorAlert	initWithTitle:NSLocalizedString(@"Transfer error", nil)
     						  message:NSLocalizedString(@"Cannot transfer file from remote contact", nil)
    -						 delegate:nil 
    -				cancelButtonTitle:NSLocalizedString(@"Continue", nil) 
    -				otherButtonTitles:nil, nil];		
    +						 delegate:nil
    +				cancelButtonTitle:NSLocalizedString(@"Continue", nil)
    +				otherButtonTitles:nil, nil];
     		[errorAlert show];
             [errorAlert release];
    -	} else {
    -        [LinphoneLogger log:LinphoneLoggerError format:@"Invalid file transfer connection", connection];
     	}
    +    imageSharing = NULL;
     }
     
    -- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite {
    -	[imageTransferProgressBar setProgress:(float)((float)totalBytesWritten/(float)totalBytesExpectedToWrite) animated:FALSE];
    -	
    -}
    -
    -- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    -	if (connection == uploadContext) {
    -		NSString* imageRemoteUrl=[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    -		[LinphoneLogger log:LinphoneLoggerLog format:@"File can be downloaded from [%@]", imageRemoteUrl];
    -		[self sendMessage:NSLocalizedString(@"Image sent",nil) withExterlBodyUrl:imageRemoteUrl];
    -	} else if (connection == downloadContext) {
    -		if (downloadedData == nil) downloadedData = [[NSMutableData alloc] initWithCapacity:[data length]];
    -		[downloadedData appendData:data];
    -		[imageTransferProgressBar setProgress:((float)downloadedData.length/(float)totalBytesExpectedToRead) animated:FALSE];
    -	} else {
    -        [LinphoneLogger log:LinphoneLoggerError format:@"Invalid file transfer connection", connection];
    -	}
    -}
    -
    -- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    -	NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse *) response;
    -	int statusCode = httpResponse.statusCode;;	
    -	[LinphoneLogger log:LinphoneLoggerLog format:@"File transfer status code [%i]",statusCode];
    +- (void)imageSharingUploadDone:(ImageSharing*)aimageSharing url:(NSURL*)url{
    +    [self sendMessage:NSLocalizedString(@"Image sent", nil) withExterlBodyUrl:[url absoluteString]];
         
    -	if (connection == uploadContext) {
    -		if (statusCode == 200) {
    -			//nop
    -		} else if (statusCode >= 400) {
    -            UIAlertView* errorAlert = [UIAlertView alloc];
    -			[errorAlert initWithTitle:NSLocalizedString(@"Transfer error",nil)
    -													message:NSLocalizedString(@"Cannot transfer file to remote contact",nil) 
    -												   delegate:nil 
    -										  cancelButtonTitle:NSLocalizedString(@"Continue",nil) 
    -										  otherButtonTitles:nil ,nil];
    -			[errorAlert show];
    -            [errorAlert release];
    -		}
    -	} else if (connection == downloadContext) {
    -		if (statusCode == 200) {
    -			totalBytesExpectedToRead = [response expectedContentLength];
    -		} else if (statusCode >= 400) {
    -            UIAlertView* errorAlert = [UIAlertView alloc];
    -			[errorAlert	initWithTitle:NSLocalizedString(@"Transfer error",nil)
    -													message:NSLocalizedString(@"Cannot transfer file from remote contact",nil)
    -												   delegate:nil 
    -										  cancelButtonTitle:NSLocalizedString(@"Continue",nil) 
    -										  otherButtonTitles:nil ,nil];	
    -			[errorAlert show];
    -            [errorAlert release];
    -		} 
    -	} else {
    -        [LinphoneLogger log:LinphoneLoggerError format:@"Invalid file transfer connection", connection];
    -	}
    +    [footerView setHidden:FALSE];
    +	[transferView setHidden:TRUE];
    +    imageSharing = NULL;
     }
     
    -- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    -	if (connection == uploadContext) {
    -		[self stopUpload];
    -		uploadContext = nil;
    -	} else if (connection == downloadContext) {
    -		ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    -		[library writeImageDataToSavedPhotosAlbum:downloadedData
    -										 metadata:nil
    -								  completionBlock:^(NSURL *assetURL, NSError *error){
    -									  if (error) {
    -										  [LinphoneLogger log:LinphoneLoggerError format:@"Cannot save image data downloaded [%@]",[error localizedDescription]];
    -									  } else {
    -										  [LinphoneLogger log:LinphoneLoggerLog format:@"Image saved to [%@]",[assetURL absoluteString]];
    -									  }
    -                                      ImageViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ImageViewController compositeViewDescription] push:TRUE], ImageViewController);
    -                                      if(controller != nil) {
    -                                          [controller setImage:[UIImage imageWithData:downloadedData]];
    -                                      }
    -									  [downloadedData release];
    -									  downloadedData = nil;
    -								  }];
    -		
    -		
    -		[library release];
    -		[self stopDownload];
    -		downloadContext = nil;
    -	} else {
    -        [LinphoneLogger log:LinphoneLoggerError format:@"Invalid file transfer connection", connection];
    -	}
    -}
    -
    -- (NSURLConnection*)downloadImageFrom:(NSString*)address {
    -	[LinphoneLogger log:LinphoneLoggerLog format:@"downloading [%@]", address];
    -	NSURL* url = [NSURL URLWithString: address ];
    -	NSURLRequest* request = [NSURLRequest requestWithURL:url
    -											 cachePolicy:NSURLRequestUseProtocolCachePolicy
    -										 timeoutInterval:60.0];
    -	
    -	return [[NSURLConnection alloc] initWithRequest:request delegate: self];
    +- (void)imageSharingDownloadDone:(ImageSharing*)aimageSharing image:(UIImage *)image {
    +    [footerView setHidden:FALSE];
    +	[transferView setHidden:TRUE];
    +    
    +    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    +    [library writeImageToSavedPhotosAlbum:(CGImageRef)image
    +                                 metadata:nil
    +                          completionBlock:^(NSURL *assetURL, NSError *error){
    +                              if (error) {
    +                                  [LinphoneLogger log:LinphoneLoggerError format:@"Cannot save image data downloaded [%@]",[error localizedDescription]];
    +                              } else {
    +                                  [LinphoneLogger log:LinphoneLoggerLog format:@"Image saved to [%@]",[assetURL absoluteString]];
    +                              }
    +                              ImageViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ImageViewController compositeViewDescription] push:TRUE], ImageViewController);
    +                              if(controller != nil) {
    +                                  [controller setImage:image];
    +                              }
    +                          }];
    +    
    +    
    +    [library release];
    +    imageSharing = NULL;
     }
     
     
    -- (NSURLConnection*)uploadImage:(UIImage*)image Named:(NSString*)name {
    -	/*
    -	 turning the image into a NSData object
    -	 getting the image back out of the UIImageView
    -	 setting the quality to 90
    -	 */
    -	NSData *imageData = UIImageJPEGRepresentation(image, 80);
    -	// setting up the URL to post to
    -	NSString *urlString = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"];
    -	
    -	// setting up the request object now
    -	NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    -	[request setURL:[NSURL URLWithString:urlString]];
    -	[request setHTTPMethod:@"POST"];
    -	
    -	/*
    -	 add some header info now
    -	 we always need a boundary when we post a file
    -	 also we need to set the content type
    -	 
    -	 You might want to generate a random boundary.. this is just the same 
    -	 as my output from wireshark on a valid html post
    -	 */
    -	NSString *boundary = @"---------------------------14737809831466499882746641449";
    -	NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
    -	[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
    -	
    -	/*
    -	 now lets create the body of the post
    -	 */
    -	NSMutableData *body = [NSMutableData data];
    -	[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];	
    -	[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n",name] dataUsingEncoding:NSUTF8StringEncoding]];
    -	[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    -	[body appendData:[NSData dataWithData:imageData]];
    -	[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    -	// setting the body of the post to the reqeust
    -	[request setHTTPBody:body];
    -	
    -	return [NSURLConnection connectionWithRequest:(NSURLRequest *)request delegate:self];
    -}
    -
    -
    -#pragma mark ImpagePickerDelegate
    +#pragma mark ImagePickerDelegate
     
     - (void)imagePickerDelegateImage:(UIImage*)image {
    -    NSString *imageName = [NSString stringWithFormat:@"%i.jpg", [image hash]];
    -    uploadContext = [self uploadImage:image Named: imageName];
    -    [self startUpload];
    +    NSString *urlString = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"];
    +    imageSharing = [ImageSharing imageSharingUpload:[NSURL URLWithString:urlString] image:image delegate:self];
    +    [footerView setHidden:TRUE];
    +	[transferView setHidden:FALSE];
     }
     
     
    diff --git a/Classes/ImagePickerViewController.h b/Classes/ImagePickerViewController.h
    index 91eb9c07d..4acdebf21 100644
    --- a/Classes/ImagePickerViewController.h
    +++ b/Classes/ImagePickerViewController.h
    @@ -1,4 +1,4 @@
    -/* ContactDetailsImagePickerController.h
    +/* ImagePickerViewController.h
      *
      * Copyright (C) 2012  Belledonne Comunications, Grenoble, France
      *
    diff --git a/Classes/ImagePickerViewController.m b/Classes/ImagePickerViewController.m
    index dad0a57a1..46be9914b 100644
    --- a/Classes/ImagePickerViewController.m
    +++ b/Classes/ImagePickerViewController.m
    @@ -1,4 +1,4 @@
    -/* ContactDetailsImagePickerController.m
    +/* ImagePickerViewController.m
      *
      * Copyright (C) 2012  Belledonne Comunications, Grenoble, France
      *
    diff --git a/Classes/ImageSharing.h b/Classes/ImageSharing.h
    new file mode 100644
    index 000000000..13cf22fc0
    --- /dev/null
    +++ b/Classes/ImageSharing.h
    @@ -0,0 +1,50 @@
    +/* ImageSharing.h
    + *
    + * Copyright (C) 2012  Belledonne Comunications, Grenoble, France
    + *
    + *  This program is free software; you can redistribute it and/or modify
    + *  it under the terms of the GNU General Public License as published by
    + *  the Free Software Foundation; either version 2 of the License, or
    + *  (at your option) any later version.
    + *
    + *  This program is distributed in the hope that it will be useful,
    + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    + *  GNU General Public License for more details.
    + *
    + *  You should have received a copy of the GNU General Public License
    + *  along with this program; if not, write to the Free Software
    + *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    + */
    +
    +#import 
    +
    +@class ImageSharing;
    +
    +@protocol ImageSharingDelegate 
    +
    +- (void)imageSharingProgress:(ImageSharing*)imageSharing progress:(float)progress;
    +- (void)imageSharingAborted:(ImageSharing*)imageSharing;
    +- (void)imageSharingError:(ImageSharing*)imageSharing error:(NSError *)error;
    +- (void)imageSharingUploadDone:(ImageSharing*)imageSharing url:(NSURL*)url;
    +- (void)imageSharingDownloadDone:(ImageSharing*)imageSharing image:(UIImage *)image;
    +
    +@end
    +
    +@interface ImageSharing : NSObject {
    +@private
    +    NSInteger totalBytesExpectedToRead;
    +    id delegate;
    +    int statusCode;
    +}
    +
    ++ (id)imageSharingUpload:(NSURL*)url image:(UIImage*)image delegate:(id)delegate;
    ++ (id)imageSharingDownload:(NSURL*)url delegate:(id)delegate;
    +
    +- (void)cancel;
    +
    +@property (nonatomic, readonly) BOOL upload;
    +@property (nonatomic, readonly) NSMutableData* data;
    +@property (nonatomic, readonly) NSURLConnection* connection;
    +
    +@end
    diff --git a/Classes/ImageSharing.m b/Classes/ImageSharing.m
    new file mode 100644
    index 000000000..d2c5db458
    --- /dev/null
    +++ b/Classes/ImageSharing.m
    @@ -0,0 +1,182 @@
    +/* ImageSharing.m
    + *
    + * Copyright (C) 2012  Belledonne Comunications, Grenoble, France
    + *
    + *  This program is free software; you can redistribute it and/or modify
    + *  it under the terms of the GNU General Public License as published by
    + *  the Free Software Foundation; either version 2 of the License, or
    + *  (at your option) any later version.
    + *
    + *  This program is distributed in the hope that it will be useful,
    + *  but WITHOUT ANY WARRANTY; without even the implied warranty of
    + *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    + *  GNU General Public License for more details.
    + *
    + *  You should have received a copy of the GNU General Public License
    + *  along with this program; if not, write to the Free Software
    + *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    + */
    +
    +#import "ImageSharing.h"
    +#import "Utils.h"
    +#import "LinphoneManager.h"
    +
    +@implementation ImageSharing
    +
    +@synthesize connection;
    +@synthesize data;
    +@synthesize upload;
    +
    +
    +#pragma mark - Lifecycle Functions
    +
    ++ (id)imageSharingUpload:(NSURL*)url image:(UIImage*)image delegate:(id)delegate {
    +    ImageSharing *imgs = [[ImageSharing alloc] init];
    +    if(imgs != nil) {
    +        imgs->upload = TRUE;
    +        imgs->delegate = delegate;
    +        imgs->data = [[NSMutableData alloc] init];
    +        if(delegate) {
    +            [delegate imageSharingProgress:imgs progress:0];
    +        }
    +        [imgs uploadImageTo:url image:image];
    +    }
    +    return imgs;
    +}
    +
    ++ (id)imageSharingDownload:(NSURL*)url delegate:(id)delegate {
    +    ImageSharing *imgs = [[ImageSharing alloc] init];
    +    if(imgs != nil) {
    +        imgs->upload = FALSE;
    +        imgs->delegate = delegate;
    +        imgs->data = [[NSMutableData alloc] init];
    +        if(delegate) {
    +            [delegate imageSharingProgress:imgs progress:0];
    +        }
    +        [imgs downloadImageFrom:url];
    +    }
    +    return imgs;
    +}
    +
    +- (void)dealloc {
    +    [connection release];
    +    [data release];
    +    [super dealloc];
    +}
    +
    +
    +#pragma mark -
    +
    +- (void)cancel {
    +    [connection cancel];
    +    [LinphoneLogger log:LinphoneLoggerLog format:@"File transfer [%@] interrupted by user", [connection.currentRequest.URL absoluteString]];
    +    if(delegate) {
    +        [delegate imageSharingAborted:self];
    +    }
    +}
    +
    +
    +- (void)downloadImageFrom:(NSURL*)url {
    +	[LinphoneLogger log:LinphoneLoggerLog format:@"downloading [%@]", [url absoluteString]];
    +    
    +	NSURLRequest* request = [NSURLRequest requestWithURL:url
    +											 cachePolicy:NSURLRequestUseProtocolCachePolicy
    +										 timeoutInterval:60.0];
    +    
    +	connection = [[NSURLConnection alloc] initWithRequest:request delegate: self];
    +}
    +
    +
    +- (void)uploadImageTo:(NSURL*)url image:(UIImage*)image {
    +    [LinphoneLogger log:LinphoneLoggerLog format:@"downloading [%@]", [url absoluteString]];
    +	
    +	// setting up the request object now
    +	NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
    +	[request setURL:url];
    +	[request setHTTPMethod:@"POST"];
    +	
    +	/*
    +	 add some header info now
    +	 we always need a boundary when we post a file
    +	 also we need to set the content type
    +	 
    +	 You might want to generate a random boundary.. this is just the same
    +	 as my output from wireshark on a valid html post
    +	 */
    +	NSString *boundary = @"---------------------------14737809831466499882746641449";
    +	NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
    +	[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
    +	
    +	/*
    +	 now lets create the body of the post
    +	 */
    +	NSMutableData *body = [NSMutableData data];
    +    NSString *imageName = [NSString stringWithFormat:@"%i.jpg", [image hash]];
    +	[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    +	[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"%@\"\r\n",imageName] dataUsingEncoding:NSUTF8StringEncoding]];
    +	[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    +	[body appendData:[NSData dataWithData:UIImageJPEGRepresentation(image, 1.0)]];
    +	[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
    +	[request setHTTPBody:body];
    +	
    +	connection = [[NSURLConnection alloc] initWithRequest:(NSURLRequest *)request delegate:self];
    +}
    +
    +
    +#pragma mark - NSURLConnectionDelegate
    +
    +- (void)connection:(NSURLConnection *)aconnection didFailWithError:(NSError *)error {
    +    if(delegate) {
    +        [delegate imageSharingError:self error:error];
    +    }
    +    [self release];
    +}
    +
    +- (void)connection:(NSURLConnection *)connection didSendBodyData:(NSInteger)bytesWritten totalBytesWritten:(NSInteger)totalBytesWritten totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite {
    +    if(upload && delegate) {
    +        [delegate imageSharingProgress:self progress:(float)totalBytesWritten/(float)totalBytesExpectedToWrite];
    +    }
    +}
    +
    +- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)adata {
    +    [data appendData:adata];
    +    if(!upload && delegate) {
    +        [delegate imageSharingProgress:self progress:(float)data.length/(float)totalBytesExpectedToRead];
    +    }
    +}
    +
    +- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
    +	NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse *) response;
    +	statusCode = httpResponse.statusCode;
    +	[LinphoneLogger log:LinphoneLoggerLog format:@"File transfer status code [%i]",statusCode];
    +    
    +    if (statusCode == 200 && !upload) {
    +        totalBytesExpectedToRead = [response expectedContentLength];
    +    }
    +}
    +
    +- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
    +    if(statusCode >= 400) {
    +        NSError *error = [NSError errorWithDomain:@"ImageSharing" code:statusCode userInfo:nil];
    +        if(delegate) {
    +            [delegate imageSharingError:self error:error];
    +        }
    +        return;
    +    }
    +	if (upload) {
    +        NSString* imageRemoteUrl = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    +        [LinphoneLogger log:LinphoneLoggerLog format:@"File can be downloaded from [%@]", imageRemoteUrl];
    +        if(delegate) {
    +            [delegate imageSharingUploadDone:self url:[NSURL URLWithString:imageRemoteUrl]];
    +        }
    +	} else {
    +		UIImage* image = [UIImage imageWithData:data];
    +        [LinphoneLogger log:LinphoneLoggerLog format:@"File downloaded"];
    +        if(delegate) {
    +            [delegate imageSharingDownloadDone:self image:image];
    +        }
    +	}
    +    [self release];
    +}
    +
    +@end
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index 1906d3515..7964e2951 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -652,6 +652,8 @@
     		D36FB2D51589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; };
     		D36FB2D61589EF7C0036F6F2 /* UIPauseButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */; };
     		D37295DB158B3C9600D2C0C7 /* video_off_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */; };
    +		D374D3FD16071762003D25FF /* ImageSharing.m in Sources */ = {isa = PBXBuildFile; fileRef = D374D3FC16071762003D25FF /* ImageSharing.m */; };
    +		D374D3FE16071762003D25FF /* ImageSharing.m in Sources */ = {isa = PBXBuildFile; fileRef = D374D3FC16071762003D25FF /* ImageSharing.m */; };
     		D377BBFA15A19DA6002B696B /* video_on_disabled.png in Resources */ = {isa = PBXBuildFile; fileRef = D377BBF915A19DA6002B696B /* video_on_disabled.png */; };
     		D378906515AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; };
     		D378906615AC373B00BD776C /* ContactDetailsLabelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */; };
    @@ -1704,6 +1706,8 @@
     		D36FB2D31589EF7C0036F6F2 /* UIPauseButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPauseButton.h; sourceTree = ""; };
     		D36FB2D41589EF7C0036F6F2 /* UIPauseButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPauseButton.m; sourceTree = ""; };
     		D37295DA158B3C9600D2C0C7 /* video_off_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_off_disabled.png; path = Resources/video_off_disabled.png; sourceTree = ""; };
    +		D374D3FB16071762003D25FF /* ImageSharing.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ImageSharing.h; sourceTree = ""; };
    +		D374D3FC16071762003D25FF /* ImageSharing.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ImageSharing.m; sourceTree = ""; };
     		D377BBF915A19DA6002B696B /* video_on_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = video_on_disabled.png; path = Resources/video_on_disabled.png; sourceTree = ""; };
     		D378906215AC373B00BD776C /* ContactDetailsLabelViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContactDetailsLabelViewController.h; sourceTree = ""; };
     		D378906315AC373B00BD776C /* ContactDetailsLabelViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ContactDetailsLabelViewController.m; sourceTree = ""; };
    @@ -2266,6 +2270,8 @@
     				D38187D415FE346B00C3EDCA /* HistoryViewController.xib */,
     				D378AB2815DCDB480098505D /* ImagePickerViewController.h */,
     				D378AB2915DCDB490098505D /* ImagePickerViewController.m */,
    +				D374D3FB16071762003D25FF /* ImageSharing.h */,
    +				D374D3FC16071762003D25FF /* ImageSharing.m */,
     				22405EFD1601C19000B92522 /* ImageViewController.h */,
     				22405EFE1601C19100B92522 /* ImageViewController.m */,
     				D37EE11016035793003608A6 /* ImageViewController.xib */,
    @@ -4463,6 +4469,7 @@
     				D3ED40191602172200BF332B /* HPGrowingTextView.m in Sources */,
     				D3ED401B1602172200BF332B /* HPTextViewInternal.m in Sources */,
     				D37EE162160377D7003608A6 /* DTActionSheet.m in Sources */,
    +				D374D3FD16071762003D25FF /* ImageSharing.m in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4557,6 +4564,7 @@
     				D3ED401A1602172200BF332B /* HPGrowingTextView.m in Sources */,
     				D3ED401C1602172200BF332B /* HPTextViewInternal.m in Sources */,
     				D37EE163160377D7003608A6 /* DTActionSheet.m in Sources */,
    +				D374D3FE16071762003D25FF /* ImageSharing.m in Sources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    
    From 63fb1b2cceda8e7a19884327a5f6bdaf2ca6b60d Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Mon, 17 Sep 2012 12:02:01 +0200
    Subject: [PATCH 225/397] Disable correction in Wizard fields Add notices in
     README
    
    ---
     Classes/en.lproj/WizardViewController.xib      | 18 +++++++++++-------
     Classes/fr.lproj/WizardViewController.xib      | 11 +++++++++++
     README                                         |  8 ++++++++
     linphone.ldb/Contents.plist                    | 12 ++++++------
     .../{2 => 3}/WizardViewController.xib          | 18 +++++++++++-------
     5 files changed, 47 insertions(+), 20 deletions(-)
     rename linphone.ldb/Resources/Classes/WizardViewController/{2 => 3}/WizardViewController.xib (99%)
    
    diff --git a/Classes/en.lproj/WizardViewController.xib b/Classes/en.lproj/WizardViewController.xib
    index cb745509c..ab9756a64 100644
    --- a/Classes/en.lproj/WizardViewController.xib
    +++ b/Classes/en.lproj/WizardViewController.xib
    @@ -136,7 +136,6 @@
     								{{160, 0}, {160, 77}}
     								
     								
    -								
     								_NS:9
     								NO
     								
    @@ -243,7 +242,6 @@
     						{{40, 290}, {240, 44}}
     						
     						
    -						
     						_NS:9
     						NO
     						YES
    @@ -372,7 +370,6 @@
     						{{33, 269}, {255, 50}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    @@ -473,6 +470,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -515,6 +513,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -548,6 +547,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -581,6 +581,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -593,7 +594,6 @@
     						{{33, 330}, {255, 50}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    @@ -678,7 +678,6 @@
     						{{32, 330}, {255, 50}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    @@ -722,6 +721,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -755,6 +755,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -841,6 +842,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -873,6 +875,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -906,6 +909,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -918,7 +922,6 @@
     						{{34, 330}, {255, 50}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    @@ -996,7 +999,6 @@
     						{{32, 330}, {255, 50}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    @@ -1040,6 +1042,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -1073,6 +1076,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    diff --git a/Classes/fr.lproj/WizardViewController.xib b/Classes/fr.lproj/WizardViewController.xib
    index 58ef418ab..93e61e955 100644
    --- a/Classes/fr.lproj/WizardViewController.xib
    +++ b/Classes/fr.lproj/WizardViewController.xib
    @@ -448,6 +448,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -489,6 +490,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -521,6 +523,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -553,6 +556,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -685,6 +689,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -717,6 +722,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -798,6 +804,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -829,6 +836,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -861,6 +869,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -986,6 +995,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -1018,6 +1028,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    diff --git a/README b/README
    index 7bb193edd..bf685d608 100644
    --- a/README
    +++ b/README
    @@ -32,6 +32,8 @@ Link host's strings to simulator SDK
     	For newer XCode:
     	$ sudo ln -s  /usr/bin/strings /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/strings
     
    +ImageMagick & Optipng
    +	sudo port install ImageMagick optipng
     
     BUILDING THE SDK
     ****************
    @@ -76,6 +78,12 @@ The liblinphone-sdk is compiled with third parties code that are subject to pate
     Linphone controls the embedding of these codecs thanks to the preprocessor macros HAVE_SILK, HAVE_AMR, HAVE_G729 HAVE_X264 positioned in xcode project.
     Before embeding these 4 codecs in the final application, make sure to have the right to do so.
     
    +TRANSLATER THE APPLICATION
    +**************************
    +
    +You have to download the application Localization Suite(http://www.loc-suite.org/)
    +Each modification in a xib have to be scanned and synchronized
    +
     
     LIMITATIONS, KNOWN BUGS
     ***********************
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index 47e4dc01c..83ccf3060 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -3037,17 +3037,17 @@
     					
     						backup
     						
    -							2
    +							3
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/WizardViewController/2/WizardViewController.xib
    +								Classes/WizardViewController/3/WizardViewController.xib
     							
     						
     					
     					change date
    -					2012-09-11T07:32:37Z
    +					2012-09-17T09:57:03Z
     					changed values
     					
     					class
    @@ -3057,7 +3057,7 @@
     					flags
     					0
     					hash
    -					6feda2909660b9c654e2bde3ba932af7
    +					ae1a75bdceef90126c40e63243b77c0c
     
     					name
     					WizardViewController.xib
    @@ -4271,9 +4271,9 @@
     					versions
     					
     						en
    -						2
    +						3
     						fr
    -						2
    +						3
     					
     				
     				
    diff --git a/linphone.ldb/Resources/Classes/WizardViewController/2/WizardViewController.xib b/linphone.ldb/Resources/Classes/WizardViewController/3/WizardViewController.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/WizardViewController/2/WizardViewController.xib
    rename to linphone.ldb/Resources/Classes/WizardViewController/3/WizardViewController.xib
    index cb745509c..ab9756a64 100644
    --- a/linphone.ldb/Resources/Classes/WizardViewController/2/WizardViewController.xib
    +++ b/linphone.ldb/Resources/Classes/WizardViewController/3/WizardViewController.xib
    @@ -136,7 +136,6 @@
     								{{160, 0}, {160, 77}}
     								
     								
    -								
     								_NS:9
     								NO
     								
    @@ -243,7 +242,6 @@
     						{{40, 290}, {240, 44}}
     						
     						
    -						
     						_NS:9
     						NO
     						YES
    @@ -372,7 +370,6 @@
     						{{33, 269}, {255, 50}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    @@ -473,6 +470,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -515,6 +513,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -548,6 +547,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -581,6 +581,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -593,7 +594,6 @@
     						{{33, 330}, {255, 50}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    @@ -678,7 +678,6 @@
     						{{32, 330}, {255, 50}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    @@ -722,6 +721,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -755,6 +755,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -841,6 +842,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -873,6 +875,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -906,6 +909,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    @@ -918,7 +922,6 @@
     						{{34, 330}, {255, 50}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    @@ -996,7 +999,6 @@
     						{{32, 330}, {255, 50}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    @@ -1040,6 +1042,7 @@
     						YES
     						17
     						
    +							1
     							YES
     							IBCocoaTouchFramework
     						
    @@ -1073,6 +1076,7 @@
     						YES
     						17
     						
    +							1
     							IBCocoaTouchFramework
     						
     						
    
    From 1efcaaa03db0270c449ecc72c29b9f0f06da24af Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Mon, 17 Sep 2012 13:58:28 +0200
    Subject: [PATCH 226/397] Remplace UIActionSheet by DTActionSheet
    
    ---
     Classes/CallDelegate.h                   | 46 -------------
     Classes/CallDelegate.m                   | 68 -------------------
     Classes/ChatRoomViewController.h         |  2 +
     Classes/ChatRoomViewController.m         | 14 ++--
     Classes/InCallViewController.h           |  4 +-
     Classes/InCallViewController.m           | 84 ++++++------------------
     Classes/LinphoneUI/UIStateBar.m          | 10 +--
     Classes/PhoneMainView.h                  |  3 +-
     Classes/PhoneMainView.m                  | 48 +++-----------
     Classes/SettingsViewController.m         | 15 ++++-
     Settings/InAppSettings.bundle/Root.plist |  8 +++
     linphone.xcodeproj/project.pbxproj       |  8 ---
     12 files changed, 67 insertions(+), 243 deletions(-)
     delete mode 100644 Classes/CallDelegate.h
     delete mode 100644 Classes/CallDelegate.m
    
    diff --git a/Classes/CallDelegate.h b/Classes/CallDelegate.h
    deleted file mode 100644
    index df2bf75e0..000000000
    --- a/Classes/CallDelegate.h
    +++ /dev/null
    @@ -1,46 +0,0 @@
    -/* LinphoneManager.h
    - *
    - * Copyright (C) 2011  Belledonne Comunications, Grenoble, France
    - *
    - *  This program is free software; you can redistribute it and/or modify
    - *  it under the terms of the GNU General Public License as published by
    - *  the Free Software Foundation; either version 2 of the License, or   
    - *  (at your option) any later version.                                 
    - *                                                                      
    - *  This program is distributed in the hope that it will be useful,     
    - *  but WITHOUT ANY WARRANTY; without even the implied warranty of      
    - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       
    - *  GNU General Public License for more details.                
    - *                                                                      
    - *  You should have received a copy of the GNU General Public License   
    - *  along with this program; if not, write to the Free Software         
    - *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    - */ 
    -
    -#import 
    -#include "linphonecore.h"
    -
    -enum CallDelegateType {
    -    CD_UNDEFINED = 0,
    -    CD_ZRTP,
    -    CD_VIDEO_UPDATE,
    -    CD_STOP_VIDEO_ON_LOW_BATTERY
    -};
    -
    -@protocol CallActionSheetDelegate
    -- (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType) type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void*) datas;
    -@end
    -
    -@interface CallDelegate : NSObject {
    -    enum CallDelegateType eventType;
    -    LinphoneCall* call;
    -    id delegate;
    -    NSTimer* timeout;
    -}
    -
    -@property (nonatomic) enum CallDelegateType eventType;
    -@property (nonatomic) LinphoneCall* call;
    -@property (nonatomic, retain) id delegate;
    -@property (nonatomic, retain) NSTimer* timeout;
    -
    -@end
    diff --git a/Classes/CallDelegate.m b/Classes/CallDelegate.m
    deleted file mode 100644
    index 982a99ff1..000000000
    --- a/Classes/CallDelegate.m
    +++ /dev/null
    @@ -1,68 +0,0 @@
    -/* LinphoneManager.h
    - *
    - * Copyright (C) 2011  Belledonne Comunications, Grenoble, France
    - *
    - *  This program is free software; you can redistribute it and/or modify
    - *  it under the terms of the GNU General Public License as published by
    - *  the Free Software Foundation; either version 2 of the License, or   
    - *  (at your option) any later version.                                 
    - *                                                                      
    - *  This program is distributed in the hope that it will be useful,     
    - *  but WITHOUT ANY WARRANTY; without even the implied warranty of      
    - *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the       
    - *  GNU General Public License for more details.                
    - *                                                                      
    - *  You should have received a copy of the GNU General Public License   
    - *  along with this program; if not, write to the Free Software         
    - *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
    - */
    -
    -#import "CallDelegate.h"
    -#import "Utils.h"
    -
    -@implementation CallDelegate
    -
    -@synthesize eventType;
    -@synthesize call;
    -@synthesize delegate;
    -@synthesize timeout;
    -
    --(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
    -    if (timeout) {
    -        [timeout invalidate];
    -        timeout = nil;
    -    }
    -    if (eventType == CD_UNDEFINED) {
    -        [LinphoneLogger logc:LinphoneLoggerError format:"Incorrect usage of CallDelegate/ActionSheet: eventType must be set"];
    -    }
    -    [delegate actionSheet:actionSheet ofType:eventType clickedButtonAtIndex:buttonIndex withUserDatas:call];
    -}
    -
    --(void) actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {
    -	
    -		
    -    if (timeout) {
    -        [timeout invalidate];
    -        timeout = nil;
    -    }
    -	if (buttonIndex != actionSheet.cancelButtonIndex) return;
    -	
    -    if (eventType == CD_UNDEFINED) {
    -        [LinphoneLogger logc:LinphoneLoggerError format:"Incorrect usage of CallDelegate/ActionSheet: eventType must be set"];
    -    }
    -	
    -    [delegate actionSheet:actionSheet ofType:eventType clickedButtonAtIndex:buttonIndex withUserDatas:call];    
    -}
    -
    --(void) actionSheetCancel:(UIActionSheet *)actionSheet {
    -    if (timeout) {
    -        [timeout invalidate];
    -        timeout = nil;
    -    }
    -    if (eventType == CD_UNDEFINED) {
    -        [LinphoneLogger logc:LinphoneLoggerError format:"Incorrect usage of CallDelegate/ActionSheet: eventType must be set"];
    -    }
    -    [delegate actionSheet:actionSheet ofType:eventType clickedButtonAtIndex:actionSheet.cancelButtonIndex withUserDatas:call];
    -}
    -
    -@end
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index 730342317..3abc96ce3 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -18,6 +18,7 @@
      */ 
     
     #import 
    +#import 
     
     #import "UIToggleButton.h"
     #import "UICompositeViewController.h"
    @@ -33,6 +34,7 @@
         @private
         LinphoneChatRoom *chatRoom;
         ImageSharing *imageSharing;
    +    ALAssetsLibrary *photoLibrary;
     }
     
     
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index a412da064..4399b4845 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -21,9 +21,7 @@
     #import "PhoneMainView.h"
     #import "DTActionSheet.h"
     
    -#import 
     #import 
    -#import 
     
     
     @implementation ChatRoomViewController
    @@ -55,6 +53,7 @@
         if (self != nil) {
             self->chatRoom = NULL;
             self->imageSharing = NULL;
    +        self->photoLibrary = [[ALAssetsLibrary alloc] init];
         }
         return self;
     }
    @@ -80,6 +79,9 @@
     	[pictureButton release];
     	[imageTransferProgressBar release];
     	[cancelTransferButton release];
    +    
    +    [photoLibrary release];
    +    
         [super dealloc];
     }
     
    @@ -334,7 +336,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
                     [transferView setHidden:FALSE];
                 }];
                 [sheet addCancelButtonWithTitle:NSLocalizedString(@"Ignore",nil)];
    -            [sheet showInView:self.view];
    +            [sheet showInView:[PhoneMainView instance].view];
     		}
     	} else {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Invalid textReceivedEvent"];
    @@ -491,8 +493,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         [footerView setHidden:FALSE];
     	[transferView setHidden:TRUE];
         
    -    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    -    [library writeImageToSavedPhotosAlbum:(CGImageRef)image
    +    [photoLibrary writeImageToSavedPhotosAlbum:(CGImageRef)image
                                      metadata:nil
                               completionBlock:^(NSURL *assetURL, NSError *error){
                                   if (error) {
    @@ -505,9 +506,6 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
                                       [controller setImage:image];
                                   }
                               }];
    -    
    -    
    -    [library release];
         imageSharing = NULL;
     }
     
    diff --git a/Classes/InCallViewController.h b/Classes/InCallViewController.h
    index d9df2a3b7..d349c9ea8 100644
    --- a/Classes/InCallViewController.h
    +++ b/Classes/InCallViewController.h
    @@ -21,20 +21,18 @@
     
     #import "VideoZoomHandler.h"
     #import "UICamSwitch.h"
    -#import "CallDelegate.h"
     
     #import "UICompositeViewController.h"
     #import "InCallTableViewController.h"
     
     @class VideoViewController;
     
    -@interface InCallViewController : UIViewController  {
    +@interface InCallViewController : UIViewController  {
         @private
         UITapGestureRecognizer* singleFingerTap;
         NSTimer* hideControlsTimer;
         BOOL videoShown;
         VideoZoomHandler* videoZoomHandler;
    -    UIActionSheet* visibleActionSheet;
     }
     
     @property (nonatomic, retain) IBOutlet InCallTableViewController* callTableController;
    diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m
    index 26063c382..7d991642f 100644
    --- a/Classes/InCallViewController.m
    +++ b/Classes/InCallViewController.m
    @@ -29,6 +29,7 @@
     #import "LinphoneManager.h"
     #import "PhoneMainView.h"
     #import "UILinphone.h"
    +#import "DTActionSheet.h"
     
     #include "linphonecore.h"
     
    @@ -119,9 +120,6 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     - (void)viewWillDisappear:(BOOL)animated {
         [super viewWillDisappear:animated];
    -    if (visibleActionSheet != nil) {
    -        [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:NO];
    -    }
         if (hideControlsTimer != nil) {
             [hideControlsTimer invalidate];
             hideControlsTimer = nil;
    @@ -464,13 +462,6 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
     
     #pragma mark - ActionSheet Functions
     
    -- (void)dismissActionSheet: (id)o {
    -    if (visibleActionSheet != nil) {
    -        [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE];
    -        visibleActionSheet = nil;
    -    }
    -}
    -
     - (void)displayAskToEnableVideoCall:(LinphoneCall*) call {
         if (linphone_core_get_video_policy([LinphoneManager getLc])->automatically_accept)
             return;
    @@ -480,62 +471,29 @@ static void hideSpinner(LinphoneCall* call, void* user_data) {
         const char* lDisplayNameChars =  linphone_address_get_display_name(linphone_call_get_remote_address(call));        
     	NSString* lDisplayName = [lDisplayNameChars?[[NSString alloc] initWithUTF8String:lDisplayNameChars]:@"" autorelease];
         
    -    // ask the user if he agrees
    -    CallDelegate* cd = [[CallDelegate alloc] init];
    -    cd.eventType = CD_VIDEO_UPDATE;
    -    cd.delegate = self;
    -    cd.call = call;
    -    
    -    if (visibleActionSheet != nil) {
    -        [visibleActionSheet dismissWithClickedButtonIndex:visibleActionSheet.cancelButtonIndex animated:TRUE];
    -    }
         NSString* title = [NSString stringWithFormat : NSLocalizedString(@"'%@' would like to enable video",nil), ([lDisplayName length] > 0)?lDisplayName:lUserName];
    -    visibleActionSheet = [[UIActionSheet alloc] initWithTitle:title
    -                                                    delegate:cd 
    -                                           cancelButtonTitle:NSLocalizedString(@"Decline",nil) 
    -                                      destructiveButtonTitle:NSLocalizedString(@"Accept",nil) 
    -                                           otherButtonTitles:nil];
    -    
    -    visibleActionSheet.actionSheetStyle = UIActionSheetStyleDefault;
    -    [visibleActionSheet showInView:[PhoneMainView instance].view];
    -    
    -    /* start cancel timer */
    -    cd.timeout = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(dismissActionSheet:) userInfo:nil repeats:NO];
    -    [visibleActionSheet release];
    +    DTActionSheet *sheet = [[[DTActionSheet alloc] initWithTitle:title] autorelease];
    +    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:30 target:self selector:@selector(dismissVideoActionSheet:) userInfo:sheet repeats:NO];
    +    [sheet addButtonWithTitle:NSLocalizedString(@"Accept", nil)  block:^() {
    +        [LinphoneLogger logc:LinphoneLoggerLog format:"User accept video proposal"];
    +        LinphoneCallParams* paramsCopy = linphone_call_params_copy(linphone_call_get_current_params(call));
    +        linphone_call_params_enable_video(paramsCopy, TRUE);
    +        linphone_core_accept_call_update([LinphoneManager getLc], call, paramsCopy);
    +        linphone_call_params_destroy(paramsCopy);
    +        [timer invalidate];
    +    }];
    +    [sheet addDestructiveButtonWithTitle:NSLocalizedString(@"Decline", nil)  block:^() {
    +        [LinphoneLogger logc:LinphoneLoggerLog format:"User declined video proposal"];
    +        linphone_core_accept_call_update([LinphoneManager getLc], call, NULL);
    +        [timer invalidate];
    +    }];
    +    [sheet showInView:[PhoneMainView instance].view];
     }
     
    -- (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type clickedButtonAtIndex:(NSInteger)buttonIndex withUserDatas:(void *)datas {
    -    LinphoneCall* call = (LinphoneCall*)datas;
    -    // maybe we could verify call validity
    -
    -    switch (type) {
    -        case CD_ZRTP: {
    -            if (buttonIndex == 0)
    -                linphone_call_set_authentication_token_verified(call, YES);
    -            else if (buttonIndex == 1)
    -                linphone_call_set_authentication_token_verified(call, NO);
    -            visibleActionSheet = nil;
    -            break;
    -        }
    -        case CD_VIDEO_UPDATE: {
    -            LinphoneCall* call = (LinphoneCall*)datas;
    -            LinphoneCallParams* paramsCopy = linphone_call_params_copy(linphone_call_get_current_params(call));
    -            if ([visibleActionSheet destructiveButtonIndex] == buttonIndex) {
    -                // accept video
    -                linphone_call_params_enable_video(paramsCopy, TRUE);
    -                linphone_core_accept_call_update([LinphoneManager getLc], call, paramsCopy);
    -            } else {
    -                // decline video
    -                [LinphoneLogger logc:LinphoneLoggerLog format:"User declined video proposal"];
    -                linphone_core_accept_call_update([LinphoneManager getLc], call, NULL);
    -            }
    -            linphone_call_params_destroy(paramsCopy);
    -            visibleActionSheet = nil;
    -            break;
    -        }
    -        default:
    -            [LinphoneLogger logc:LinphoneLoggerError format:"Unhandled CallDelegate event of type: %d received - ignoring", type];
    -    }
    +- (void)dismissVideoActionSheet:(NSTimer*)timer {
    +     DTActionSheet *sheet = (DTActionSheet *)timer.userInfo;
    +    [sheet dismissWithClickedButtonIndex:sheet.destructiveButtonIndex animated:TRUE];
     }
     
    +
     @end
    diff --git a/Classes/LinphoneUI/UIStateBar.m b/Classes/LinphoneUI/UIStateBar.m
    index 0ef68f27a..1d7913855 100644
    --- a/Classes/LinphoneUI/UIStateBar.m
    +++ b/Classes/LinphoneUI/UIStateBar.m
    @@ -178,12 +178,12 @@ NSTimer *callSecurityTimer;
         BOOL security = true;
         
         if(![LinphoneManager isLcReady]) {
    -        [callSecurityImage setHidden: true];
    +        [callSecurityImage setHidden:true];
             return;
         }
         const MSList *list = linphone_core_get_calls([LinphoneManager getLc]);
         if(list == NULL) {
    -        [callSecurityImage setHidden: true];
    +        [callSecurityImage setHidden:true];
             return;
         }
         while(list != NULL) {
    @@ -229,10 +229,10 @@ NSTimer *callSecurityTimer;
             }
         }
         if(image != nil) {
    -        [callQualityImage setHidden: false];
    -        [callQualityImage setImage: image];
    +        [callQualityImage setHidden:false];
    +        [callQualityImage setImage:image];
         } else {
    -        [callQualityImage setHidden: true];
    +        [callQualityImage setHidden:true];
         }
     }
     
    diff --git a/Classes/PhoneMainView.h b/Classes/PhoneMainView.h
    index f76e3cb6a..44a5084df 100644
    --- a/Classes/PhoneMainView.h
    +++ b/Classes/PhoneMainView.h
    @@ -41,9 +41,8 @@
     #import "ConsoleViewController.h"
     #import "ImageViewController.h"
     
    -@interface PhoneMainView : UIViewController {
    +@interface PhoneMainView : UIViewController {
         @private
    -    UIActionSheet *batteryActionSheet;
         int loadCount;
         NSMutableArray *viewStack;
         NSMutableArray *inhibitedEvents;
    diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m
    index c451292b0..87a7f11c6 100644
    --- a/Classes/PhoneMainView.m
    +++ b/Classes/PhoneMainView.m
    @@ -23,6 +23,7 @@
     #import "LinphoneAppDelegate.h"
     #import "PhoneMainView.h"
     #import "Utils.h"
    +#import "DTActionSheet.h"
     
     static PhoneMainView* phoneMainViewInstance=nil;
     
    @@ -704,7 +705,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
     }
     
     - (void)batteryLevelChanged:(NSNotification*)notif {
    -	if (! [LinphoneManager isLcReady]) return;
    +	if (![LinphoneManager isLcReady]) return;
         LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]);
         if (!call || !linphone_call_params_video_enabled(linphone_call_get_current_params(call)))
             return;
    @@ -713,48 +714,17 @@ static PhoneMainView* phoneMainViewInstance=nil;
             float level = [UIDevice currentDevice].batteryLevel;
             [LinphoneLogger logc:LinphoneLoggerLog format:"Video call is running. Battery level: %.2f", level];
             if (level < 0.1 && !appData->batteryWarningShown) {
    -            // notify user
    -            CallDelegate* cd = [[CallDelegate alloc] init];
    -            cd.eventType = CD_STOP_VIDEO_ON_LOW_BATTERY;
    -            cd.delegate = self;
    -            cd.call = call;
    -            
    -            if (batteryActionSheet != nil) {
    -                [batteryActionSheet dismissWithClickedButtonIndex:batteryActionSheet.cancelButtonIndex animated:TRUE];
    -            }
    -            NSString* title = NSLocalizedString(@"Battery is running low. Stop video ?",nil);
    -            batteryActionSheet = [[UIActionSheet alloc] initWithTitle:title
    -                                                             delegate:cd 
    -                                                    cancelButtonTitle:NSLocalizedString(@"Continue video",nil) 
    -                                               destructiveButtonTitle:NSLocalizedString(@"Stop video",nil) 
    -                                                    otherButtonTitles:nil];
    -            
    -            batteryActionSheet.actionSheetStyle = UIActionSheetStyleDefault;
    -            [batteryActionSheet showInView: self.view];
    -            [batteryActionSheet release];
    -            appData->batteryWarningShown = TRUE;
    -        }
    -    }
    -}
    -
    -- (void)actionSheet:(UIActionSheet *)actionSheet ofType:(enum CallDelegateType)type 
    -                                   clickedButtonAtIndex:(NSInteger)buttonIndex 
    -                                          withUserDatas:(void *)datas {
    -    switch(type) {
    -        case CD_STOP_VIDEO_ON_LOW_BATTERY: 
    -        {
    -            LinphoneCall* call = (LinphoneCall*)datas;
    -            LinphoneCallParams* paramsCopy = linphone_call_params_copy(linphone_call_get_current_params(call));
    -            if (buttonIndex == [batteryActionSheet destructiveButtonIndex]) {
    +            DTActionSheet *sheet = [[[DTActionSheet alloc] initWithTitle:NSLocalizedString(@"Battery is running low. Stop video ?",nil)] autorelease];
    +            [sheet addCancelButtonWithTitle:NSLocalizedString(@"Continue video", nil)];
    +            [sheet addDestructiveButtonWithTitle:NSLocalizedString(@"Stop video", nil)  block:^() {
    +                LinphoneCallParams* paramsCopy = linphone_call_params_copy(linphone_call_get_current_params(call));
                     // stop video
                     linphone_call_params_enable_video(paramsCopy, FALSE);
                     linphone_core_update_call([LinphoneManager getLc], call, paramsCopy);
    -            }
    -            batteryActionSheet = nil;
    -            break;
    +            }];
    +            [sheet showInView:self.view];
    +            appData->batteryWarningShown = TRUE;
             }
    -        default:
    -            break;
         }
     }
     
    diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
    index f175f609f..573842b47 100644
    --- a/Classes/SettingsViewController.m
    +++ b/Classes/SettingsViewController.m
    @@ -31,6 +31,15 @@
     #import "IASKTextField.h"
     #include "lpconfig.h"
     
    +#ifdef DEBUG
    +@interface UIDevice (debug)
    +
    +- (void)_setBatteryLevel:(float)level;
    +- (void)_setBatteryState:(int)state;
    +
    +@end
    +#endif
    +
     #pragma mark - IASKSwitchEx Class
     
     @interface IASKSwitchEx : DCRoundSwitch {
    @@ -478,6 +487,7 @@ static UICompositeViewDescription *compositeDescription = nil;
     #ifndef DEBUG
         [hiddenKeys addObject:@"release_button"];
         [hiddenKeys addObject:@"clear_cache_button"];
    +    [hiddenKeys addObject:@"battery_alert_button"];
     #endif
         
         [hiddenKeys addObject:@"quit_button"]; // Hide for the moment
    @@ -523,7 +533,6 @@ static UICompositeViewDescription *compositeDescription = nil;
         return hiddenKeys;
     }
     
    -
     #pragma mark - IASKSettingsDelegate Functions
     
     - (void)settingsViewControllerDidEnd:(IASKAppSettingsViewController *)sender {
    @@ -539,6 +548,10 @@ static UICompositeViewDescription *compositeDescription = nil;
             [LinphoneManager instanceRelease];
         } else  if([key isEqual:@"clear_cache_button"]) {
             [[PhoneMainView instance].mainViewController clearCache];
    +    } else  if([key isEqual:@"battery_alert_button"]) {
    +        [[UIDevice currentDevice] _setBatteryState:UIDeviceBatteryStateUnplugged];
    +        [[UIDevice currentDevice] _setBatteryLevel:0.09f];
    +        [[NSNotificationCenter defaultCenter] postNotificationName:UIDeviceBatteryLevelDidChangeNotification object:self];
         }
     #endif
         if([key isEqual:@"console_button"]) {
    diff --git a/Settings/InAppSettings.bundle/Root.plist b/Settings/InAppSettings.bundle/Root.plist
    index 0d496d742..a58e3ff20 100644
    --- a/Settings/InAppSettings.bundle/Root.plist
    +++ b/Settings/InAppSettings.bundle/Root.plist
    @@ -192,6 +192,14 @@
     			Type
     			IASKButtonSpecifier
     		
    +		
    +			Key
    +			battery_alert_button
    +			Title
    +			Battery alert
    +			Type
    +			IASKButtonSpecifier
    +		
     	
     	StringsTable
     	Root
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index 7964e2951..c7a5532b8 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -18,8 +18,6 @@
     		220FAD3710765B400068D98F /* libosipparser2.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2E10765B400068D98F /* libosipparser2.a */; };
     		220FAD3810765B400068D98F /* libspeex.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD2F10765B400068D98F /* libspeex.a */; };
     		220FAD3910765B400068D98F /* libspeexdsp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 220FAD3010765B400068D98F /* libspeexdsp.a */; };
    -		2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; };
    -		2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2211DBBB14769C8200DEE054 /* CallDelegate.m */; };
     		2214783D1386A2030020F8B8 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 2214783B1386A2030020F8B8 /* Localizable.strings */; };
     		2214EB7A12F846B1002A5394 /* UICallButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB7912F846B1002A5394 /* UICallButton.m */; };
     		2214EB8912F84EBB002A5394 /* UIHangUpButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 2214EB8812F84EBB002A5394 /* UIHangUpButton.m */; };
    @@ -1352,7 +1350,6 @@
     		220FAD2F10765B400068D98F /* libspeex.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeex.a; path = "liblinphone-sdk/apple-darwin/lib/libspeex.a"; sourceTree = ""; };
     		220FAD3010765B400068D98F /* libspeexdsp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libspeexdsp.a; path = "liblinphone-sdk/apple-darwin/lib/libspeexdsp.a"; sourceTree = ""; };
     		2211DB911475562600DEE054 /* liblinphone.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = liblinphone.a; path = "liblinphone-sdk/apple-darwin/lib/liblinphone.a"; sourceTree = ""; };
    -		2211DBBB14769C8200DEE054 /* CallDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CallDelegate.m; sourceTree = ""; };
     		2214783C1386A2030020F8B8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = Resources/en.lproj/Localizable.strings; sourceTree = ""; };
     		2214EB7812F846B1002A5394 /* UICallButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallButton.h; sourceTree = ""; };
     		2214EB7912F846B1002A5394 /* UICallButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICallButton.m; sourceTree = ""; };
    @@ -1499,7 +1496,6 @@
     		29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
     		32CA4F630368D1EE00C91783 /* linphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphone_Prefix.pch; sourceTree = ""; };
     		340751961506459A00B89C47 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; };
    -		340751E4150E4D0200B89C47 /* CallDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CallDelegate.h; sourceTree = ""; };
     		340751E5150F38FC00B89C47 /* UIVideoButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIVideoButton.h; sourceTree = ""; };
     		340751E6150F38FD00B89C47 /* UIVideoButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIVideoButton.m; sourceTree = ""; };
     		34216F3E1547EBCD00EA9777 /* VideoZoomHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoZoomHandler.h; path = LinphoneUI/VideoZoomHandler.h; sourceTree = ""; };
    @@ -2224,8 +2220,6 @@
     		080E96DDFE201D6D7F000001 /* Classes */ = {
     			isa = PBXGroup;
     			children = (
    -				340751E4150E4D0200B89C47 /* CallDelegate.h */,
    -				2211DBBB14769C8200DEE054 /* CallDelegate.m */,
     				D32B6E2715A5BC430033019F /* ChatRoomTableViewController.h */,
     				D32B6E2815A5BC430033019F /* ChatRoomTableViewController.m */,
     				D3F795D315A582800077328B /* ChatRoomViewController.h */,
    @@ -4396,7 +4390,6 @@
     				22C755601317E59C007BC101 /* UIBluetoothButton.m in Sources */,
     				22BB1A69132FF16A005CD7AA /* UIEraseButton.m in Sources */,
     				22AA8B0113D83F6300B30535 /* UICamSwitch.m in Sources */,
    -				2211DBBE14769C8300DEE054 /* CallDelegate.m in Sources */,
     				340751E7150F38FD00B89C47 /* UIVideoButton.m in Sources */,
     				34216F401547EBCD00EA9777 /* VideoZoomHandler.m in Sources */,
     				D3F83EEC1582021700336684 /* InCallViewController.m in Sources */,
    @@ -4491,7 +4484,6 @@
     				22D8F155147548E2008C97DB /* UIBluetoothButton.m in Sources */,
     				22D8F156147548E2008C97DB /* UIEraseButton.m in Sources */,
     				22D8F159147548E2008C97DB /* UICamSwitch.m in Sources */,
    -				2211DBBF14769C8300DEE054 /* CallDelegate.m in Sources */,
     				340751E8150F38FD00B89C47 /* UIVideoButton.m in Sources */,
     				34216F411547EBCD00EA9777 /* VideoZoomHandler.m in Sources */,
     				D3F83EED1582021700336684 /* InCallViewController.m in Sources */,
    
    From 3d61162f9024f13e3f41d9b636f72992c7aaba57 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Mon, 17 Sep 2012 17:44:58 +0200
    Subject: [PATCH 227/397] Fix iPad dialer preview
    
    ---
     Classes/ChatRoomTableViewController.m         |   1 -
     Classes/DialerViewController.h                |   1 +
     Classes/DialerViewController.m                |  50 ++++++++++++-----
     Classes/InCallViewController.m                |   2 +-
     Classes/LinphoneCoreSettingsStore.m           |   7 ++-
     Classes/LinphoneManager.h                     |   1 +
     Classes/LinphoneManager.m                     |  37 +++++++-----
     .../LinphoneUI/UICompositeViewController.m    |  10 ++--
     Classes/PhoneMainView.m                       |   5 +-
     Classes/SettingsViewController.m              |   4 ++
     .../en.lproj/DialerViewController~ipad.xib    |  19 ++++++-
     Classes/en.lproj/InCallViewController.xib     |   1 -
     .../fr.lproj/DialerViewController~ipad.xib    |  18 +++++-
     Resources/linphonerc-factory~ipad             |   9 ---
     Resources/linphonerc~ipad                     |  10 +++-
     Settings/InAppSettings.bundle/Video.plist     |   8 +++
     .../en.lproj/Video.strings                    |   3 +
     .../fr.lproj/Video.strings                    | Bin 488 -> 409 bytes
     linphone.ldb/Contents.plist                   |  53 +++++++++++++-----
     .../{3 => 7}/DialerViewController~ipad.xib    |  19 ++++++-
     .../{1 => 2}/InCallViewController.xib         |   1 -
     .../Video/1/Video.strings                     |   3 +
     submodules/linphone                           |   2 +-
     23 files changed, 190 insertions(+), 74 deletions(-)
     rename linphone.ldb/Resources/Classes/DialerViewController~ipad/{3 => 7}/DialerViewController~ipad.xib (99%)
     rename linphone.ldb/Resources/Classes/InCallViewController/{1 => 2}/InCallViewController.xib (99%)
    
    diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m
    index 8182eca56..608316be5 100644
    --- a/Classes/ChatRoomTableViewController.m
    +++ b/Classes/ChatRoomTableViewController.m
    @@ -149,7 +149,6 @@
         return cell;
     }
     
    -
     - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath  {
         if(editingStyle == UITableViewCellEditingStyleDelete) {
             [tableView beginUpdates];
    diff --git a/Classes/DialerViewController.h b/Classes/DialerViewController.h
    index c23b7218f..49e6d857c 100644
    --- a/Classes/DialerViewController.h
    +++ b/Classes/DialerViewController.h
    @@ -56,6 +56,7 @@
     @property (nonatomic, retain) IBOutlet UIDigitButton* starButton;
     @property (nonatomic, retain) IBOutlet UIDigitButton* zeroButton;
     @property (nonatomic, retain) IBOutlet UIDigitButton* sharpButton;
    +@property (nonatomic, retain) IBOutlet UIView* backgroundView;
     @property (nonatomic, retain) IBOutlet UIView* videoPreview;
     @property (nonatomic, retain) IBOutlet UICamSwitch* videoCameraSwitch;
     
    diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m
    index 9abd60d74..68fe4ed06 100644
    --- a/Classes/DialerViewController.m
    +++ b/Classes/DialerViewController.m
    @@ -54,6 +54,7 @@
     @synthesize zeroButton;
     @synthesize sharpButton;
     
    +@synthesize backgroundView;
     @synthesize videoPreview;
     @synthesize videoCameraSwitch;
     
    @@ -129,15 +130,27 @@ static UICompositeViewDescription *compositeDescription = nil;
                                                  selector:@selector(callUpdateEvent:) 
                                                      name:kLinphoneCallUpdate
                                                    object:nil];
    +    
    +    [[NSNotificationCenter defaultCenter] addObserver:self
    +                                             selector:@selector(coreUpdateEvent:)
    +                                                 name:kLinphoneCoreUpdate
    +                                               object:nil];
         // Update on show
         if([LinphoneManager isLcReady]) {
    -        LinphoneCall* call = linphone_core_get_current_call([LinphoneManager getLc]);
    +        LinphoneCore* lc = [LinphoneManager getLc];
    +        LinphoneCall* call = linphone_core_get_current_call(lc);
             LinphoneCallState state = (call != NULL)?linphone_call_get_state(call): 0;
             [self callUpdate:call state:state];
    -    }
    -    
    -    if(videoPreview) {
    -        linphone_core_set_native_preview_window_id([LinphoneManager getLc], (unsigned long)videoPreview);
    +        
    +        if([LinphoneManager runningOnIpad]) {
    +            if(linphone_core_video_enabled(lc) && linphone_core_video_preview_enabled(lc)) {
    +                linphone_core_set_native_preview_window_id(lc, (unsigned long)videoPreview);
    +                [backgroundView setHidden:FALSE];
    +            } else {
    +                linphone_core_set_native_preview_window_id(lc, (unsigned long)NULL);
    +                [backgroundView setHidden:TRUE];
    +            }
    +        }
         }
     } 
     
    @@ -148,6 +161,11 @@ static UICompositeViewDescription *compositeDescription = nil;
         [[NSNotificationCenter defaultCenter] removeObserver:self 
                                                         name:kLinphoneCallUpdate
                                                       object:nil];
    +    
    +    [[NSNotificationCenter defaultCenter] removeObserver:self
    +                                                    name:kLinphoneCoreUpdate
    +                                                  object:nil];
    +    
     }
     
     - (void)viewDidLoad {
    @@ -169,8 +187,6 @@ static UICompositeViewDescription *compositeDescription = nil;
         [addressField setAdjustsFontSizeToFitWidth:TRUE]; // Not put it in IB: issue with placeholder size
         
         if([LinphoneManager runningOnIpad]) {
    -        linphone_core_enable_video_preview([LinphoneManager getLc], TRUE);
    -        
             if ([LinphoneManager instance].frontCamId != nil) {
                 // only show camera switch button if we have more than 1 camera
                 [videoCameraSwitch setHidden:FALSE];
    @@ -180,10 +196,6 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     - (void)viewDidUnload {
         [super viewDidUnload];
    -    
    -    if([LinphoneManager runningOnIpad]) {
    -        linphone_core_enable_video_preview([LinphoneManager getLc], FALSE);
    -    }
     }
     
     - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    @@ -197,10 +209,10 @@ static UICompositeViewDescription *compositeDescription = nil;
                 [videoPreview setTransform: CGAffineTransformMakeRotation(M_PI)];
                 break;
             case UIInterfaceOrientationLandscapeLeft:
    -            [videoPreview setTransform: CGAffineTransformMakeRotation(-M_PI / 2)];
    +            [videoPreview setTransform: CGAffineTransformMakeRotation(M_PI / 2)];
                 break;
             case UIInterfaceOrientationLandscapeRight:
    -            [videoPreview setTransform: CGAffineTransformMakeRotation(M_PI / 2)];
    +            [videoPreview setTransform: CGAffineTransformMakeRotation(-M_PI / 2)];
                 break;
             default:
                 break;
    @@ -217,6 +229,18 @@ static UICompositeViewDescription *compositeDescription = nil;
         [self callUpdate:call state:state];
     }
     
    +- (void)coreUpdateEvent:(NSNotification*)notif {
    +    if([LinphoneManager isLcReady] && [LinphoneManager runningOnIpad]) {
    +        LinphoneCore* lc = [LinphoneManager getLc];
    +        if(linphone_core_video_enabled(lc) && linphone_core_video_preview_enabled(lc)) {
    +            linphone_core_set_native_preview_window_id(lc, (unsigned long)videoPreview);
    +            [backgroundView setHidden:FALSE];
    +        } else {
    +            linphone_core_set_native_preview_window_id(lc, (unsigned long)NULL);
    +            [backgroundView setHidden:TRUE];
    +        }
    +    }
    +}
     
     #pragma mark -
     
    diff --git a/Classes/InCallViewController.m b/Classes/InCallViewController.m
    index 7d991642f..d094e4ffe 100644
    --- a/Classes/InCallViewController.m
    +++ b/Classes/InCallViewController.m
    @@ -372,7 +372,7 @@ static UICompositeViewDescription *compositeDescription = nil;
             [UIView commitAnimations];
         }
         
    -    if([[LinphoneManager instance] lpConfigBoolForKey:@"self_video_preference"]) {
    +    if(linphone_core_self_view_enabled([LinphoneManager getLc])) {
             [videoPreview setHidden:FALSE];
         } else {
             [videoPreview setHidden:TRUE];
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index 6a820991e..31c2c50a8 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -218,7 +218,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		pol=linphone_core_get_video_policy(lc);
     		[self setBool:(pol->automatically_initiate) forKey:@"start_video_preference"];
             [self setBool:(pol->automatically_accept) forKey:@"accept_video_preference"];
    -        [self setBool:lp_config_get_int(linphone_core_get_config(lc),"app","self_video_preference", 1) forKey:@"self_video_preference"];
    +        [self setBool:linphone_core_self_view_enabled(lc) forKey:@"self_video_preference"];
    +        [self setBool:linphone_core_video_preview_enabled(lc) forKey:@"preview_preference"];
     	}
         {
             [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","sipinfo_dtmf_preference", 0) forKey:@"sipinfo_dtmf_preference"];
    @@ -460,8 +461,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
         policy.automatically_accept = [self boolForKey:@"accept_video_preference"];
         policy.automatically_initiate = [self boolForKey:@"start_video_preference"];
         linphone_core_set_video_policy(lc, &policy);
    -    lp_config_set_int(linphone_core_get_config(lc),"app","self_video_preference", [self boolForKey:@"self_video_preference"]);
    -    
    +    linphone_core_enable_self_view(lc, [self boolForKey:@"self_video_preference"]);
    +    linphone_core_enable_video_preview(lc, [self boolForKey:@"preview_preference"]);
         
         // Primary contact
         NSString* displayname = [self stringForKey:@"primary_displayname_preference"];
    diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
    index 1ab4f74d1..cd288e3f1 100644
    --- a/Classes/LinphoneManager.h
    +++ b/Classes/LinphoneManager.h
    @@ -31,6 +31,7 @@
     
     #include "linphonecore.h"
     
    +extern NSString *const kLinphoneCoreUpdate;
     extern NSString *const kLinphoneDisplayStatusUpdate;
     extern NSString *const kLinphoneTextReceived;
     extern NSString *const kLinphoneCallUpdate;
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index 5da9bc990..a16ae335d 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -44,6 +44,7 @@ static void audioRouteChangeListenerCallback (
     static LinphoneCore* theLinphoneCore = nil;
     static LinphoneManager* theLinphoneManager = nil;
     
    +NSString *const kLinphoneCoreUpdate = @"kLinphoneCoreUpdate";
     NSString *const kLinphoneDisplayStatusUpdate = @"LinphoneDisplayStatusUpdate";
     NSString *const kLinphoneTextReceived = @"LinphoneTextReceived";
     NSString *const kLinphoneCallUpdate = @"LinphoneCallUpdate";
    @@ -601,13 +602,11 @@ static LinphoneCoreVTable linphonec_vtable = {
     - (void)startLibLinphone {
     	
     	//get default config from bundle
    -	NSBundle* myBundle = [NSBundle mainBundle];
    -	NSString* factoryConfig = [myBundle pathForResource:[LinphoneManager runningOnIpad]?@"linphonerc-factory~ipad":@"linphonerc-factory" ofType:nil] ;
    -	NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    -	NSString *confiFileName = [[paths objectAtIndex:0] stringByAppendingString:@"/.linphonerc"];
    -	NSString *zrtpSecretsFileName = [[paths objectAtIndex:0] stringByAppendingString:@"/zrtp_secrets"];
    -	const char* lRootCa = [[myBundle pathForResource:@"rootca"ofType:@"pem"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
    -	connectivity=none;
    +	NSString* factoryConfig = [LinphoneManager bundleFile:[LinphoneManager runningOnIpad]?@"linphonerc-factory~ipad":@"linphonerc-factory"];
    +	NSString *confiFileName = [LinphoneManager documentFile:@".linphonerc"];
    +	NSString *zrtpSecretsFileName = [LinphoneManager documentFile:@"zrtp_secrets"];
    +	const char* lRootCa = [[LinphoneManager bundleFile:@"rootca.pem"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
    +	connectivity = none;
     	signal(SIGPIPE, SIG_IGN);
     	//log management	
     	
    @@ -633,17 +632,16 @@ static LinphoneCoreVTable linphonec_vtable = {
     										 , [confiFileName cStringUsingEncoding:[NSString defaultCStringEncoding]]
     										 , [factoryConfig cStringUsingEncoding:[NSString defaultCStringEncoding]]
     										 ,self);
    -    
    -	
    +
     	fastAddressBook = [[FastAddressBook alloc] init];
     	
         linphone_core_set_root_ca(theLinphoneCore, lRootCa);
     	// Set audio assets
    -	const char* lRing = [[myBundle pathForResource:@"ring"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
    -	linphone_core_set_ring(theLinphoneCore, lRing );
    -	const char* lRingBack = [[myBundle pathForResource:@"ringback"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
    +	const char* lRing = [[LinphoneManager bundleFile:@"ring.wab"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
    +	linphone_core_set_ring(theLinphoneCore, lRing);
    +	const char* lRingBack = [[LinphoneManager bundleFile:@"ringback.wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
     	linphone_core_set_ringback(theLinphoneCore, lRingBack);
    -    const char* lPlay = [[myBundle pathForResource:@"hold"ofType:@"wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
    +    const char* lPlay = [[LinphoneManager bundleFile:@"hold.wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
     	linphone_core_set_play_file(theLinphoneCore, lPlay);
     	
     	linphone_core_set_zrtp_secrets_file(theLinphoneCore, [zrtpSecretsFileName cStringUsingEncoding:[NSString defaultCStringEncoding]]);
    @@ -673,7 +671,7 @@ static LinphoneCoreVTable linphonec_vtable = {
             [error release];
     	}
         
    -    NSString* path = [myBundle pathForResource:@"nowebcamCIF" ofType:@"jpg"];
    +    NSString* path = [LinphoneManager bundleFile:@"nowebcamCIF.jpg"];
         if (path) {
             const char* imagePath = [path cStringUsingEncoding:[NSString defaultCStringEncoding]];
             [LinphoneLogger logc:LinphoneLoggerLog format:"Using '%s' as source image for no webcam", imagePath];
    @@ -722,7 +720,11 @@ static LinphoneCoreVTable linphonec_vtable = {
     		&& [UIApplication sharedApplication].applicationState ==  UIApplicationStateBackground) {
     		//go directly to bg mode
     		[self resignActive];
    -	}	
    +	}
    +    
    +    // Post event
    +    NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSValue valueWithPointer:theLinphoneCore] forKey:@"core"];
    +    [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneCoreUpdate object:[LinphoneManager instance] userInfo:dict];
     }
     
     - (void)destroyLibLinphone {
    @@ -734,6 +736,11 @@ static LinphoneCoreVTable linphonec_vtable = {
             [LinphoneLogger logc:LinphoneLoggerLog format:"Destroy linphonecore"];
     		linphone_core_destroy(theLinphoneCore);
     		theLinphoneCore = nil;
    +        
    +        // Post event
    +        NSDictionary *dict = [NSDictionary dictionaryWithObject:[NSValue valueWithPointer:theLinphoneCore] forKey:@"core"];
    +        [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneCoreUpdate object:[LinphoneManager instance] userInfo:dict];
    +        
             SCNetworkReachabilityUnscheduleFromRunLoop(proxyReachability, CFRunLoopGetCurrent(), kCFRunLoopDefaultMode);
             if (proxyReachability)
                 CFRelease(proxyReachability);
    diff --git a/Classes/LinphoneUI/UICompositeViewController.m b/Classes/LinphoneUI/UICompositeViewController.m
    index ea0953c9a..7bbf7f4dc 100644
    --- a/Classes/LinphoneUI/UICompositeViewController.m
    +++ b/Classes/LinphoneUI/UICompositeViewController.m
    @@ -253,10 +253,12 @@
     #pragma mark - Event Functions
     
     - (void)orientationDidChange:(NSNotification*)notif {
    -    // Update rotation
    -    UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]];
    -    if(currentOrientation != correctOrientation) {
    -        [PhoneMainView setOrientation:correctOrientation animated:currentOrientation!=UIDeviceOrientationUnknown];
    +    if([LinphoneManager isLcReady]) {
    +        // Update rotation
    +        UIInterfaceOrientation correctOrientation = [self getCorrectInterfaceOrientation:[[UIDevice currentDevice] orientation]];
    +        if(currentOrientation != correctOrientation) {
    +            [PhoneMainView setOrientation:correctOrientation animated:currentOrientation != UIDeviceOrientationUnknown];
    +        }
         }
     }
     
    diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m
    index 87a7f11c6..f2e04f05e 100644
    --- a/Classes/PhoneMainView.m
    +++ b/Classes/PhoneMainView.m
    @@ -32,9 +32,6 @@ static PhoneMainView* phoneMainViewInstance=nil;
     @synthesize mainViewController;
     @synthesize currentView;
     
    -// TO READ
    -// If a Controller set wantFullScreenLayout then DON'T set the autoresize!
    -// So DON'T set autoresize for PhoneMainView
     
     #pragma mark - Lifecycle Functions
     
    @@ -716,7 +713,7 @@ static PhoneMainView* phoneMainViewInstance=nil;
             if (level < 0.1 && !appData->batteryWarningShown) {
                 DTActionSheet *sheet = [[[DTActionSheet alloc] initWithTitle:NSLocalizedString(@"Battery is running low. Stop video ?",nil)] autorelease];
                 [sheet addCancelButtonWithTitle:NSLocalizedString(@"Continue video", nil)];
    -            [sheet addDestructiveButtonWithTitle:NSLocalizedString(@"Stop video", nil)  block:^() {
    +            [sheet addDestructiveButtonWithTitle:NSLocalizedString(@"Stop video", nil) block:^() {
                     LinphoneCallParams* paramsCopy = linphone_call_params_copy(linphone_call_get_current_params(call));
                     // stop video
                     linphone_call_params_enable_video(paramsCopy, FALSE);
    diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
    index 573842b47..4ab119257 100644
    --- a/Classes/SettingsViewController.m
    +++ b/Classes/SettingsViewController.m
    @@ -530,6 +530,10 @@ static UICompositeViewDescription *compositeDescription = nil;
             [hiddenKeys addObject:@"console_button"];
         }
         
    +    if(![LinphoneManager runningOnIpad]) {
    +        [hiddenKeys addObject:@"preview_preference"];
    +    }
    +    
         return hiddenKeys;
     }
     
    diff --git a/Classes/en.lproj/DialerViewController~ipad.xib b/Classes/en.lproj/DialerViewController~ipad.xib
    index 26bc622af..60f9db3be 100644
    --- a/Classes/en.lproj/DialerViewController~ipad.xib
    +++ b/Classes/en.lproj/DialerViewController~ipad.xib
    @@ -62,7 +62,7 @@
     							3
     							MCAwAA
     						
    -						1
    +						2
     						IBIPadFramework
     					
     					
    @@ -726,6 +726,7 @@
     								{{126, 0}, {186, 85}}
     								
     								
    +								
     								_NS:9
     								NO
     								
    @@ -954,6 +955,14 @@
     					
     					75
     				
    +				
    +					
    +						backgroundView
    +						
    +						
    +					
    +					77
    +				
     				
     					
     						onAddressChange:
    @@ -1337,6 +1346,7 @@
     						76
     						
     						
    +						backgroundView
     					
     				
     			
    @@ -1416,7 +1426,7 @@
     			
     			
     			
    -			76
    +			77
     		
     		
     			
    @@ -1447,6 +1457,7 @@
     						UIButton
     						UITextField
     						UIButton
    +						UIView
     						UICallButton
     						UIDigitButton
     						UIEraseButton
    @@ -1482,6 +1493,10 @@
     							backButton
     							UIButton
     						
    +						
    +							backgroundView
    +							UIView
    +						
     						
     							callButton
     							UICallButton
    diff --git a/Classes/en.lproj/InCallViewController.xib b/Classes/en.lproj/InCallViewController.xib
    index d849e1ca3..87f56054e 100644
    --- a/Classes/en.lproj/InCallViewController.xib
    +++ b/Classes/en.lproj/InCallViewController.xib
    @@ -146,7 +146,6 @@
     						{{0, 23}, {85, 33}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    diff --git a/Classes/fr.lproj/DialerViewController~ipad.xib b/Classes/fr.lproj/DialerViewController~ipad.xib
    index 58f381dce..90e271b5c 100644
    --- a/Classes/fr.lproj/DialerViewController~ipad.xib
    +++ b/Classes/fr.lproj/DialerViewController~ipad.xib
    @@ -60,7 +60,7 @@
     							3
     							MCAwAA
     						
    -						1
    +						2
     						IBIPadFramework
     					
     					
    @@ -925,6 +925,14 @@
     					
     					75
     				
    +				
    +					
    +						backgroundView
    +						
    +						
    +					
    +					77
    +				
     				
     					
     						onAddressChange:
    @@ -1308,6 +1316,7 @@
     						76
     						
     						
    +						backgroundView
     					
     				
     			
    @@ -1387,7 +1396,7 @@
     			
     			
     			
    -			76
    +			77
     		
     		
     			
    @@ -1418,6 +1427,7 @@
     						UIButton
     						UITextField
     						UIButton
    +						UIView
     						UICallButton
     						UIDigitButton
     						UIEraseButton
    @@ -1453,6 +1463,10 @@
     							backButton
     							UIButton
     						
    +						
    +							backgroundView
    +							UIView
    +						
     						
     							callButton
     							UICallButton
    diff --git a/Resources/linphonerc-factory~ipad b/Resources/linphonerc-factory~ipad
    index 121edc3e6..35826eef3 100644
    --- a/Resources/linphonerc-factory~ipad
    +++ b/Resources/linphonerc-factory~ipad
    @@ -30,12 +30,3 @@ dtmf_player_amp=0.007
     [misc]
     history_max_size=30
     max_calls=3
    -
    -[video]
    -display=1
    -capture=1
    -show_local=0
    -enabled=1
    -size=vga
    -display_filter_auto_rotate=1
    -
    diff --git a/Resources/linphonerc~ipad b/Resources/linphonerc~ipad
    index 768e62443..7275d321e 100644
    --- a/Resources/linphonerc~ipad
    +++ b/Resources/linphonerc~ipad
    @@ -10,4 +10,12 @@ audio_rtp_port=7076
     video_rtp_port=9078
     
     [net]
    -firewall_policy=0
    \ No newline at end of file
    +firewall_policy=0
    +
    +[video]
    +display=1
    +capture=1
    +show_local=1
    +enabled=1
    +size=vga
    +display_filter_auto_rotate=1
    \ No newline at end of file
    diff --git a/Settings/InAppSettings.bundle/Video.plist b/Settings/InAppSettings.bundle/Video.plist
    index 2cc185b15..77aa2e894 100644
    --- a/Settings/InAppSettings.bundle/Video.plist
    +++ b/Settings/InAppSettings.bundle/Video.plist
    @@ -32,6 +32,14 @@
     			Key
     			self_video_preference
     		
    +		
    +			Type
    +			PSToggleSwitchSpecifier
    +			Title
    +			Show preview
    +			Key
    +			preview_preference
    +		
     		
     			Title
     			Codecs
    diff --git a/Settings/InAppSettings.bundle/en.lproj/Video.strings b/Settings/InAppSettings.bundle/en.lproj/Video.strings
    index 1072b20c8..9ef83a74b 100644
    --- a/Settings/InAppSettings.bundle/en.lproj/Video.strings
    +++ b/Settings/InAppSettings.bundle/en.lproj/Video.strings
    @@ -7,6 +7,9 @@
     /* Show self view */
     "Show self view" = "Show self view";
     
    +/* Show preview */
    +"Show preview" = "Show preview";
    +
     /* Codecs */
     "Codecs" = "Codecs";
     
    diff --git a/Settings/InAppSettings.bundle/fr.lproj/Video.strings b/Settings/InAppSettings.bundle/fr.lproj/Video.strings
    index a94d95b183680b330fb818248b5bb3a140580959..66d51eea6d9cf016b9682095842b9477c0a16402 100644
    GIT binary patch
    literal 409
    zcmZ{fK?=e!5JmSr#gJt;1rZU%MbQHY1@|Ex+dyh!lBRg1o}(8ton%wd)qL{){Q0R$
    zs7J2{?xo;Ly}@~IJp|dJhO#Qy56a*S?7GYYx0ZJZJO{i+WT&F2z9YF1X#Qs=OrbS7
    zV;BAWk=pcn0*C4m>)}N0wojDNAOtOKZbAlQal4Tp@=Y%TS}=B*gLETT(out)aM3La
    oN7s_1tt``b2ZP<79HhvQRO0>aknk#ql1T7=JJM>Lgw`3!2clMdNB{r;
    
    literal 488
    zcmb7=$qm9V6h!BoDl9iZ0f<8c9i#%wghdJ%92QYBO#shuu)_fbS@!o|X8vfNk4h7c
    zQLVF13fjpLxAMe}bEDT&af-Y~7kW#zOjfcZQ5M{cYqik*y&=Npw1&qJhntV&EwfWL
    zj8W&%>Oma-)K}uN!n$DlI1#iTsj|@qU#?8|=;^fLm;7p}CAWU{vx0{CgbN_!mk)EQ
    R$$ig;#8~E;VOUK*z5sI`Qz!rc
    
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index 83ccf3060..09f16f942 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -1410,17 +1410,17 @@
     					
     						backup
     						
    -							3
    +							7
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/DialerViewController~ipad/3/DialerViewController~ipad.xib
    +								Classes/DialerViewController~ipad/7/DialerViewController~ipad.xib
     							
     						
     					
     					change date
    -					2012-09-14T08:21:20Z
    +					2012-09-17T15:00:19Z
     					changed values
     					
     					class
    @@ -1430,7 +1430,7 @@
     					flags
     					0
     					hash
    -					199b213a86204679336e2f627d919b3d
    +					2ba8580f9c2559276f0f27f8ec043517
     
     					name
     					DialerViewController~ipad.xib
    @@ -1969,9 +1969,9 @@
     					versions
     					
     						en
    -						3
    +						7
     						fr
    -						3
    +						7
     					
     				
     				
    @@ -2776,17 +2776,17 @@
     					
     						backup
     						
    -							1
    +							2
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/InCallViewController/1/InCallViewController.xib
    +								Classes/InCallViewController/2/InCallViewController.xib
     							
     						
     					
     					change date
    -					2012-09-10T15:34:47Z
    +					2012-09-17T15:00:02Z
     					changed values
     					
     					class
    @@ -2796,7 +2796,7 @@
     					flags
     					0
     					hash
    -					ef39c975bbcbb80f09bc1b599428075d
    +					43dc274f749d7ce59719b7aff1ab2889
     
     					name
     					InCallViewController.xib
    @@ -2835,9 +2835,9 @@
     					versions
     					
     						en
    -						1
    +						2
     						fr
    -						1
    +						2
     					
     				
     				
    @@ -11155,7 +11155,7 @@ Raison: %2$s
     						
     					
     					change date
    -					2012-09-11T10:16:55Z
    +					2012-09-17T13:29:57Z
     					changed values
     					
     					class
    @@ -11165,7 +11165,7 @@ Raison: %2$s
     					flags
     					0
     					hash
    -					ab1400cd24f02dacc6b2b98b0ce939b5
    +					b7297749603f255583f59fcea3174690
     
     					name
     					Video.strings
    @@ -11246,6 +11246,31 @@ Raison: %2$s
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Show preview
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Show preview
    +							localizations
    +							
    +								en
    +								Show preview
    +								fr
    +								Activer prévisualisation
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    diff --git a/linphone.ldb/Resources/Classes/DialerViewController~ipad/3/DialerViewController~ipad.xib b/linphone.ldb/Resources/Classes/DialerViewController~ipad/7/DialerViewController~ipad.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/DialerViewController~ipad/3/DialerViewController~ipad.xib
    rename to linphone.ldb/Resources/Classes/DialerViewController~ipad/7/DialerViewController~ipad.xib
    index 26bc622af..60f9db3be 100644
    --- a/linphone.ldb/Resources/Classes/DialerViewController~ipad/3/DialerViewController~ipad.xib
    +++ b/linphone.ldb/Resources/Classes/DialerViewController~ipad/7/DialerViewController~ipad.xib
    @@ -62,7 +62,7 @@
     							3
     							MCAwAA
     						
    -						1
    +						2
     						IBIPadFramework
     					
     					
    @@ -726,6 +726,7 @@
     								{{126, 0}, {186, 85}}
     								
     								
    +								
     								_NS:9
     								NO
     								
    @@ -954,6 +955,14 @@
     					
     					75
     				
    +				
    +					
    +						backgroundView
    +						
    +						
    +					
    +					77
    +				
     				
     					
     						onAddressChange:
    @@ -1337,6 +1346,7 @@
     						76
     						
     						
    +						backgroundView
     					
     				
     			
    @@ -1416,7 +1426,7 @@
     			
     			
     			
    -			76
    +			77
     		
     		
     			
    @@ -1447,6 +1457,7 @@
     						UIButton
     						UITextField
     						UIButton
    +						UIView
     						UICallButton
     						UIDigitButton
     						UIEraseButton
    @@ -1482,6 +1493,10 @@
     							backButton
     							UIButton
     						
    +						
    +							backgroundView
    +							UIView
    +						
     						
     							callButton
     							UICallButton
    diff --git a/linphone.ldb/Resources/Classes/InCallViewController/1/InCallViewController.xib b/linphone.ldb/Resources/Classes/InCallViewController/2/InCallViewController.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/InCallViewController/1/InCallViewController.xib
    rename to linphone.ldb/Resources/Classes/InCallViewController/2/InCallViewController.xib
    index d849e1ca3..87f56054e 100644
    --- a/linphone.ldb/Resources/Classes/InCallViewController/1/InCallViewController.xib
    +++ b/linphone.ldb/Resources/Classes/InCallViewController/2/InCallViewController.xib
    @@ -146,7 +146,6 @@
     						{{0, 23}, {85, 33}}
     						
     						
    -						
     						_NS:9
     						NO
     						
    diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Video/1/Video.strings b/linphone.ldb/Resources/InAppSettings.bundle/Video/1/Video.strings
    index 1072b20c8..9ef83a74b 100644
    --- a/linphone.ldb/Resources/InAppSettings.bundle/Video/1/Video.strings
    +++ b/linphone.ldb/Resources/InAppSettings.bundle/Video/1/Video.strings
    @@ -7,6 +7,9 @@
     /* Show self view */
     "Show self view" = "Show self view";
     
    +/* Show preview */
    +"Show preview" = "Show preview";
    +
     /* Codecs */
     "Codecs" = "Codecs";
     
    diff --git a/submodules/linphone b/submodules/linphone
    index efe7222f2..e683675e5 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit efe7222f2efb7eae906b7337925fc080ce9d6b0e
    +Subproject commit e683675e57e22cf07744dbf6f6c40e8dd374ef78
    
    From d850800fcd5c193127a8e128437235150572c474 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Tue, 18 Sep 2012 12:14:49 +0200
    Subject: [PATCH 228/397] Add push notification setting add default settings
     for wizard
    
    ---
     Classes/ChatRoomViewController.m              |   4 +
     Classes/ImageSharing.m                        |   5 +-
     Classes/LinphoneCoreSettingsStore.m           |  58 ++-
     Classes/LinphoneManager.h                     |  22 +-
     Classes/LinphoneManager.m                     |  79 ++-
     Classes/SettingsViewController.m              |   7 +-
     Classes/WizardViewController.m                | 101 +++-
     Resources/linphonerc-factory                  |   9 +
     Resources/linphonerc-factory~ipad             |  10 +
     Settings/InAppSettings.bundle/Network.plist   |  10 +
     Settings/InAppSettings.bundle/Root.plist      |   8 +
     .../en.lproj/Network.strings                  |  51 ++
     .../en.lproj/Root.strings                     |   3 +
     .../fr.lproj/Network.strings                  |  51 ++
     .../fr.lproj/Root.strings                     |   3 +
     linphone.ldb/Contents.plist                   | 473 +++++++++++++++++-
     .../Network/1/Network.strings                 |  51 ++
     .../InAppSettings.bundle/Root/1/Root.strings  |   3 +
     18 files changed, 852 insertions(+), 96 deletions(-)
     create mode 100644 Settings/InAppSettings.bundle/en.lproj/Network.strings
     create mode 100644 Settings/InAppSettings.bundle/fr.lproj/Network.strings
     create mode 100644 linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings
    
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index 4399b4845..a8d863cee 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -175,6 +175,10 @@ static UICompositeViewDescription *compositeDescription = nil;
     - (void)viewWillDisappear:(BOOL)animated {
         [super viewWillDisappear:animated];
         
    +    if(imageSharing) {
    +        [imageSharing cancel];
    +    }
    +    
         [messageField resignFirstResponder];
         
         if(chatRoom != NULL) {
    diff --git a/Classes/ImageSharing.m b/Classes/ImageSharing.m
    index d2c5db458..b0aee4b06 100644
    --- a/Classes/ImageSharing.m
    +++ b/Classes/ImageSharing.m
    @@ -34,7 +34,7 @@
         ImageSharing *imgs = [[ImageSharing alloc] init];
         if(imgs != nil) {
             imgs->upload = TRUE;
    -        imgs->delegate = delegate;
    +        imgs->delegate = [delegate retain];
             imgs->data = [[NSMutableData alloc] init];
             if(delegate) {
                 [delegate imageSharingProgress:imgs progress:0];
    @@ -48,7 +48,7 @@
         ImageSharing *imgs = [[ImageSharing alloc] init];
         if(imgs != nil) {
             imgs->upload = FALSE;
    -        imgs->delegate = delegate;
    +        imgs->delegate = [delegate retain];
             imgs->data = [[NSMutableData alloc] init];
             if(delegate) {
                 [delegate imageSharingProgress:imgs progress:0];
    @@ -61,6 +61,7 @@
     - (void)dealloc {
         [connection release];
         [data release];
    +    [delegate release];
         [super dealloc];
     }
     
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index 31c2c50a8..1ab80c019 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -43,9 +43,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		changedDict=[[NSMutableDictionary alloc] init];
     		[self transformLinphoneCoreToKeys];
             LinphoneCore *lc=[LinphoneManager getLc];
    -		if (lp_config_get_int(linphone_core_get_config(lc),"app","config_migrated",0) == 0) {
    +		if (lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY,"config_migrated",0) == 0) {
     			[self handleMigration];
    -			lp_config_set_int(linphone_core_get_config(lc),"app","config_migrated",1);
    +			lp_config_set_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY,"config_migrated",1);
     		}
     	}
     	return self;
    @@ -103,7 +103,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     			[self setString: linphone_address_get_username(addr) forKey:@"username_preference"];
     			[self setString: linphone_address_get_domain(addr) forKey:@"domain_preference"];
                 [self setInteger: linphone_proxy_config_get_expires(cfg) forKey:@"expire_preference"];
    -			[self setString:linphone_proxy_config_get_dial_prefix(cfg) forKey:@"prefix_preference"];
    +			[self setString: linphone_proxy_config_get_dial_prefix(cfg) forKey:@"prefix_preference"];
     			if (strcmp(linphone_address_get_domain(addr),linphone_address_get_domain(proxy_addr))!=0
     				|| port!=NULL){
     				char tmp[256]={0};
    @@ -120,8 +120,10 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     			
     		}
     	} else {
    -		[self setInteger: lp_config_get_int(linphone_core_get_config(lc),"default_values","reg_expires",600) forKey:@"expire_preference"];
    +		[self setInteger: lp_config_get_int(linphone_core_get_config(lc),"default_values","reg_expires", 600) forKey:@"expire_preference"];
     	}
    +    
    +    [self setBool:lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "pushnotification_preference", 0) forKey:@"pushnotification_preference"];
         {
             LinphoneAddress *parsed = linphone_core_get_primary_contact_parsed(lc);
             if(parsed != NULL) {
    @@ -187,21 +189,21 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		}
     		[self setString:val forKey:@"media_encryption_preference"];
     	}
    -    [self setString: lp_config_get_string(linphone_core_get_config(lc),"app","rotation_preference", "auto") forKey:@"rotation_preference"];
    -	[self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","enable_first_login_view_preference", 0) forKey:@"enable_first_login_view_preference"];
    -	[self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference", 0) forKey:@"debugenable_preference"];
    -	[self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","animations_preference", 1) forKey:@"animations_preference"];
    -	[self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","check_config_disable_preference", 0) forKey:@"check_config_disable_preference"];
    -	[self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","wifi_only_preference", 0) forKey:@"wifi_only_preference"];
    -	[self setString: lp_config_get_string(linphone_core_get_config(lc),"app","file_upload_url_preference",NULL) forKey:@"file_upload_url_preference"];
    +    [self setString: lp_config_get_string(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "rotation_preference", "auto") forKey:@"rotation_preference"];
    +	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "enable_first_login_view_preference", 0) forKey:@"enable_first_login_view_preference"];
    +	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "debugenable_preference", 0) forKey:@"debugenable_preference"];
    +	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "animations_preference", 1) forKey:@"animations_preference"];
    +	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "check_config_disable_preference", 0) forKey:@"check_config_disable_preference"];
    +	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "wifi_only_preference", 0) forKey:@"wifi_only_preference"];
    +	[self setString: lp_config_get_string(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "file_upload_url_preference",NULL) forKey:@"file_upload_url_preference"];
     	
     	/*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/
     	BOOL start_at_boot = TRUE;
    -	if ([[NSUserDefaults standardUserDefaults] objectForKey:@"start_at_boot_preference"]!=Nil)
    +	if ([[NSUserDefaults standardUserDefaults] objectForKey:@"start_at_boot_preference"] != Nil)
             start_at_boot = [[NSUserDefaults standardUserDefaults]  boolForKey:@"start_at_boot_preference"];
     	[self setBool: start_at_boot forKey:@"start_at_boot_preference"];
     	BOOL background_mode = TRUE;
    -	if ([[NSUserDefaults standardUserDefaults] objectForKey:@"backgroundmode_preference"]!=Nil)
    +	if ([[NSUserDefaults standardUserDefaults] objectForKey:@"backgroundmode_preference"] != Nil)
             background_mode =[[NSUserDefaults standardUserDefaults]  boolForKey:@"backgroundmode_preference"];
     	[self setBool: background_mode forKey:@"backgroundmode_preference"];
     	
    @@ -222,11 +224,11 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
             [self setBool:linphone_core_video_preview_enabled(lc) forKey:@"preview_preference"];
     	}
         {
    -        [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","sipinfo_dtmf_preference", 0) forKey:@"sipinfo_dtmf_preference"];
    -        [self setBool: lp_config_get_int(linphone_core_get_config(lc),"app","rfc_dtmf_preference", 1) forKey:@"rfc_dtmf_preference"];
    +        [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "sipinfo_dtmf_preference", 0) forKey:@"sipinfo_dtmf_preference"];
    +        [self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "rfc_dtmf_preference", 1) forKey:@"rfc_dtmf_preference"];
         }
         
    -	if (lp_config_get_int(linphone_core_get_config(lc),"app","debugenable_preference",0))
    +	if (lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "debugenable_preference",0))
     		linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler);
     	
     	[changedDict release];
    @@ -353,9 +355,9 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		}
     		
     		// configure proxy entries
    -		linphone_proxy_config_set_identity(proxyCfg,identity);
    -		linphone_proxy_config_set_server_addr(proxyCfg,proxy);
    -		linphone_proxy_config_enable_register(proxyCfg,true);
    +		linphone_proxy_config_set_identity(proxyCfg, identity);
    +		linphone_proxy_config_set_server_addr(proxyCfg, proxy);
    +		linphone_proxy_config_enable_register(proxyCfg, true);
     		
     
     		int expire = [self integerForKey:@"expire_preference"];
    @@ -366,11 +368,11 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     		if (isWifiOnly && lLinphoneMgr.connectivity == wwan) {
     			linphone_proxy_config_expires(proxyCfg, 0);
     		} else {
    -            linphone_proxy_config_expires(proxyCfg,expire);
    +            linphone_proxy_config_expires(proxyCfg, expire);
     		}
     		
     		if (isOutboundProxy)
    -			linphone_proxy_config_set_route(proxyCfg,proxy);
    +			linphone_proxy_config_set_route(proxyCfg, proxy);
     		
     		if ([self objectForKey:@"prefix_preference"]) {		
     			NSString* prefix = [self stringForKey:@"prefix_preference"];
    @@ -383,8 +385,10 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     			linphone_proxy_config_set_dial_escape_plus(proxyCfg,substitute_plus_by_00);
     		}
     		
    +        BOOL pushnotification = [self boolForKey:@"pushnotification_preference"];
    +        lp_config_set_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "pushnotification_preference", pushnotification);
             
    -        [[LinphoneManager instance ]addPushTokenToProxyConfig : proxyCfg ];
    +        [[LinphoneManager instance] addPushTokenToProxyConfig:proxyCfg];
             
     		linphone_core_add_proxy_config(lc,proxyCfg);
     		//set to default proxy
    @@ -494,21 +498,21 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     	} else {
     		isbackgroundModeEnabled = false;
     	}
    -	lp_config_set_int(linphone_core_get_config(lc),"app","backgroundmode_preference", isbackgroundModeEnabled);
    +	lp_config_set_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "backgroundmode_preference", isbackgroundModeEnabled);
     	
         BOOL firstloginview = [self boolForKey:@"enable_first_login_view_preference"];
    -    lp_config_set_int(linphone_core_get_config(lc),"app","enable_first_login_view_preference", firstloginview);
    +    lp_config_set_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "enable_first_login_view_preference", firstloginview);
         
         NSString *landscape = [self stringForKey:@"rotation_preference"];
    -    lp_config_set_string(linphone_core_get_config(lc),"app","rotation_preference", [landscape UTF8String]);
    +    lp_config_set_string(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "rotation_preference", [landscape UTF8String]);
         
     	BOOL debugmode = [self boolForKey:@"debugenable_preference"];
    -	lp_config_set_int(linphone_core_get_config(lc),"app","debugenable_preference", debugmode);
    +	lp_config_set_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "debugenable_preference", debugmode);
     	if (debugmode) linphone_core_enable_logs_with_cb((OrtpLogFunc)linphone_iphone_log_handler);
     	else linphone_core_disable_logs();
         
         BOOL animations = [self boolForKey:@"animations_preference"];
    -	lp_config_set_int(linphone_core_get_config(lc),"app","animations_preference", animations);
    +	lp_config_set_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "animations_preference", animations);
     	NSString*  file_upload_url= [self stringForKey:@"file_upload_url_preference"];
     	[[LinphoneManager instance] lpConfigSetString:file_upload_url forKey:@"file_upload_url_preference"];
     	
    diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
    index cd288e3f1..799d4bba0 100644
    --- a/Classes/LinphoneManager.h
    +++ b/Classes/LinphoneManager.h
    @@ -31,6 +31,8 @@
     
     #include "linphonecore.h"
     
    +extern const char *const LINPHONERC_APPLICATION_KEY;
    +
     extern NSString *const kLinphoneCoreUpdate;
     extern NSString *const kLinphoneDisplayStatusUpdate;
     extern NSString *const kLinphoneTextReceived;
    @@ -116,14 +118,18 @@ typedef struct _LinphoneManagerSounds {
     
     - (void)call:(NSString *)address displayName:(NSString*)displayName transfer:(BOOL)transfer;
     
    --(void)lpConfigSetString:(NSString*) value forKey:(NSString*) key; 
    --(NSString*)lpConfigStringForKey:(NSString*) key;
    -
    --(void)lpConfigSetInt:(NSInteger) value forKey:(NSString*) key; 
    --(NSInteger)lpConfigIntForKey:(NSString*) key;
    -
    --(void)lpConfigSetBool:(BOOL) value forKey:(NSString*) key; 
    --(BOOL)lpConfigBoolForKey:(NSString*) key;
    +- (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key;
    +- (NSString*)lpConfigStringForKey:(NSString*)key;
    +- (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key forSection:(NSString*)section;
    +- (NSString*)lpConfigStringForKey:(NSString*)key forSection:(NSString*)section;
    +- (void)lpConfigSetInt:(NSInteger)value forKey:(NSString*)key;
    +- (NSInteger)lpConfigIntForKey:(NSString*)key;
    +- (void)lpConfigSetInt:(NSInteger)value forKey:(NSString*)key forSection:(NSString*)section;
    +- (NSInteger)lpConfigIntForKey:(NSString*)key forSection:(NSString*)section;
    +- (void)lpConfigSetBool:(BOOL)value forKey:(NSString*)key; 
    +- (BOOL)lpConfigBoolForKey:(NSString*)key;
    +- (void)lpConfigSetBool:(BOOL)value forKey:(NSString*)key forSection:(NSString*)section;
    +- (BOOL)lpConfigBoolForKey:(NSString*)key forSection:(NSString*)section;
     
     @property (readonly) FastAddressBook* fastAddressBook;
     @property Connectivity connectivity;
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index a16ae335d..db073f120 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -44,6 +44,8 @@ static void audioRouteChangeListenerCallback (
     static LinphoneCore* theLinphoneCore = nil;
     static LinphoneManager* theLinphoneManager = nil;
     
    +const char *const LINPHONERC_APPLICATION_KEY = "app";
    +
     NSString *const kLinphoneCoreUpdate = @"kLinphoneCoreUpdate";
     NSString *const kLinphoneDisplayStatusUpdate = @"LinphoneDisplayStatusUpdate";
     NSString *const kLinphoneTextReceived = @"LinphoneTextReceived";
    @@ -514,7 +516,7 @@ void networkReachabilityCallBack(SCNetworkReachabilityRef target, SCNetworkReach
     			[LinphoneManager kickOffNetworkConnection];
     		} else {
     			Connectivity  newConnectivity;
    -			BOOL isWifiOnly = lp_config_get_int(linphone_core_get_config([LinphoneManager getLc]),"app","wifi_only_preference",FALSE);
    +			BOOL isWifiOnly = lp_config_get_int(linphone_core_get_config([LinphoneManager getLc]), LINPHONERC_APPLICATION_KEY, "wifi_only_preference",FALSE);
                 if (!ctx || ctx->testWWan)
                     newConnectivity = flags & kSCNetworkReachabilityFlagsIsWWAN ? wwan:wifi;
                 else
    @@ -1007,9 +1009,9 @@ static void audioRouteChangeListenerCallback (
         }
     }
     
    -- (void)addPushTokenToProxyConfig: (LinphoneProxyConfig*)proxyCfg{
    +- (void)addPushTokenToProxyConfig:(LinphoneProxyConfig*)proxyCfg{
     	NSData *tokenData =  pushNotificationToken;
    -	if(tokenData != nil) {
    +	if(tokenData != nil && [self lpConfigBoolForKey:@"pusnotification_preference"]) {
     		const unsigned char *tokenBuffer = [tokenData bytes];
     		NSMutableString *tokenString = [NSMutableString stringWithCapacity:[tokenData length]*2];
     		for(int i = 0; i < [tokenData length]; ++i) {
    @@ -1068,35 +1070,62 @@ static void audioRouteChangeListenerCallback (
     }
     
     
    +#pragma mark - LPConfig Functions
     
    -
    -
    --(void)lpConfigSetString:(NSString*) value forKey:(NSString*) key {
    -	if (!key) return;
    -	lp_config_set_string(linphone_core_get_config(theLinphoneCore),"app",[key UTF8String], value?[value UTF8String]:NULL);
    +- (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key {
    +    [self lpConfigSetString:value forKey:key forSection:[NSString stringWithUTF8String:LINPHONERC_APPLICATION_KEY]];
     }
    --(NSString*)lpConfigStringForKey:(NSString*) key {
    -	if (!theLinphoneCore) {
    -		[LinphoneLogger log:LinphoneLoggerError format:@"cannot read configuration because linphone core not ready yet"];
    -		return nil;
    -	};
    -	const char* value=lp_config_get_string(linphone_core_get_config(theLinphoneCore),"app",[key UTF8String],NULL);	
    -	if (value) 
    -		return [NSString stringWithCString:value encoding:[NSString defaultCStringEncoding]];
    +
    +- (void)lpConfigSetString:(NSString*)value forKey:(NSString*)key forSection:(NSString *)section {
    +	if (!key) return;
    +	lp_config_set_string(linphone_core_get_config(theLinphoneCore), [section UTF8String], [key UTF8String], value?[value UTF8String]:NULL);
    +}
    +
    +- (NSString*)lpConfigStringForKey:(NSString*)key {
    +    return [self lpConfigStringForKey:key forSection:[NSString stringWithUTF8String:LINPHONERC_APPLICATION_KEY]];
    +}
    +
    +- (NSString*)lpConfigStringForKey:(NSString*)key forSection:(NSString *)section {
    +    if (!key) return nil;
    +	const char* value = lp_config_get_string(linphone_core_get_config(theLinphoneCore), [section UTF8String], [key UTF8String], NULL);
    +	if (value)
    +		return [NSString stringWithUTF8String:value];
     	else
     		return nil;
     }
    --(void)lpConfigSetInt:(NSInteger) value forKey:(NSString*) key {
    -	lp_config_set_int(linphone_core_get_config(theLinphoneCore),"app",[key UTF8String], value );
    -}
    --(NSInteger)lpConfigIntForKey:(NSString*) key {
    -	return lp_config_get_int(linphone_core_get_config(theLinphoneCore),"app",[key UTF8String],-1);
    +
    +- (void)lpConfigSetInt:(NSInteger)value forKey:(NSString*)key {
    +    [self lpConfigSetInt:value forKey:key forSection:[NSString stringWithUTF8String:LINPHONERC_APPLICATION_KEY]];
     }
     
    --(void)lpConfigSetBool:(BOOL) value forKey:(NSString*) key {
    -	return [self lpConfigSetInt:(NSInteger)(value==TRUE) forKey:key];
    +- (void)lpConfigSetInt:(NSInteger)value forKey:(NSString*)key forSection:(NSString *)section {
    +    if (!key) return;
    +	lp_config_set_int(linphone_core_get_config(theLinphoneCore), [section UTF8String], [key UTF8String], value );
     }
    --(BOOL)lpConfigBoolForKey:(NSString*) key {
    -	return [self lpConfigIntForKey:key] == 1;		
    +
    +- (NSInteger)lpConfigIntForKey:(NSString*)key {
    +    return [self lpConfigIntForKey:key forSection:[NSString stringWithUTF8String:LINPHONERC_APPLICATION_KEY]];
     }
    +
    +- (NSInteger)lpConfigIntForKey:(NSString*)key forSection:(NSString *)section {
    +    if (!key) return -1;
    +	return lp_config_get_int(linphone_core_get_config(theLinphoneCore), [section UTF8String], [key UTF8String], -1);
    +}
    +
    +- (void)lpConfigSetBool:(BOOL)value forKey:(NSString*)key {
    +    [self lpConfigSetBool:value forKey:key forSection:[NSString stringWithUTF8String:LINPHONERC_APPLICATION_KEY]];
    +}
    +
    +- (void)lpConfigSetBool:(BOOL)value forKey:(NSString*)key forSection:(NSString *)section {
    +	return [self lpConfigSetInt:(NSInteger)(value == TRUE) forKey:key forSection:section];
    +}
    +
    +- (BOOL)lpConfigBoolForKey:(NSString*)key {
    +    return [self lpConfigBoolForKey:key forSection:[NSString stringWithUTF8String:LINPHONERC_APPLICATION_KEY]];
    +}
    +
    +- (BOOL)lpConfigBoolForKey:(NSString*)key forSection:(NSString *)section {
    +	return [self lpConfigIntForKey:key forSection:section] == 1;
    +}
    +
     @end
    diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
    index 4ab119257..8143f129a 100644
    --- a/Classes/SettingsViewController.m
    +++ b/Classes/SettingsViewController.m
    @@ -390,7 +390,6 @@ static UICompositeViewDescription *compositeDescription = nil;
         [super viewDidLoad];
     	
     	settingsStore = [[LinphoneCoreSettingsStore alloc] init];
    -	[settingsStore transformLinphoneCoreToKeys];
     	
         settingsController.showDoneButton = FALSE;
         settingsController.delegate = self;
    @@ -416,6 +415,10 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     - (void)viewWillAppear:(BOOL)animated {
         [super viewWillAppear:animated];
    +    
    +    [settingsStore transformLinphoneCoreToKeys]; // Sync settings with linphone core settings
    +    [settingsController.tableView reloadData];	
    +    
         // Set observer
         [[NSNotificationCenter defaultCenter] addObserver:self 
                                                  selector:@selector(appSettingChanged:) 
    @@ -560,6 +563,8 @@ static UICompositeViewDescription *compositeDescription = nil;
     #endif
         if([key isEqual:@"console_button"]) {
             [[PhoneMainView instance] changeCurrentView:[ConsoleViewController compositeViewDescription] push:TRUE];
    +    } else if([key isEqual:@"wizard_button"]) {
    +        [[PhoneMainView instance] changeCurrentView:[WizardViewController compositeViewDescription]];
         }
     }
     @end
    diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m
    index b42ccd397..c99fba0b5 100644
    --- a/Classes/WizardViewController.m
    +++ b/Classes/WizardViewController.m
    @@ -52,11 +52,6 @@ typedef enum _ViewElement {
     @synthesize backButton;
     @synthesize startButton;
     
    -static int LINPHONE_WIZARD_MIN_PASSWORD_LENGTH = 6;
    -static int LINPHONE_WIZARD_MIN_USERNAME_LENGTH = 4;
    -static NSString *LINPHONE_WIZARD_URL = @"https://www.linphone.org/wizard.php";
    -static NSString *LINPHONE_WIZARD_DOMAIN = @"sip.linphone.org";
    -
     
     #pragma mark - Lifecycle Functions
     
    @@ -258,23 +253,69 @@ static UICompositeViewDescription *compositeDescription = nil;
     	linphone_core_clear_all_auth_info([LinphoneManager getLc]);
     }
     
    -- (void)addProxyConfig:(NSString*)username password:(NSString*)password domain:(NSString*)domain {
    -	const char* identity = [[NSString stringWithFormat:@"sip:%@@%@",username,domain] UTF8String];
    +- (void)setDefaultSettings:(LinphoneProxyConfig*)proxyCfg {
    +    BOOL pushnotification = [[LinphoneManager instance] lpConfigBoolForKey:@"push_notification" forSection:@"wizard"];
    +    [[LinphoneManager instance] lpConfigSetBool:pushnotification forKey:@"pushnotification_preference"];
    +    if(pushnotification) {
    +        [[LinphoneManager instance] addPushTokenToProxyConfig:proxyCfg];
    +    }
    +    int expires = [[LinphoneManager instance] lpConfigIntForKey:@"expires" forSection:@"wizard"];
    +    linphone_proxy_config_expires(proxyCfg, expires);
    +    
    +    NSString* transport = [[LinphoneManager instance] lpConfigStringForKey:@"transport" forSection:@"wizard"];
    +    LinphoneCore *lc = [LinphoneManager getLc];
    +    LCSipTransports transportValue={0};
    +	if (transport!=nil) {
    +		if (linphone_core_get_sip_transports(lc, &transportValue)) {
    +			[LinphoneLogger logc:LinphoneLoggerError format:"cannot get current transport"];
    +		}
    +		// Only one port can be set at one time, the others's value is 0
    +		if ([transport isEqualToString:@"tcp"]) {
    +			transportValue.tcp_port=transportValue.tcp_port|transportValue.udp_port|transportValue.tls_port;
    +			transportValue.udp_port=0;
    +            transportValue.tls_port=0;
    +		} else if ([transport isEqualToString:@"udp"]){
    +			transportValue.udp_port=transportValue.tcp_port|transportValue.udp_port|transportValue.tls_port;
    +			transportValue.tcp_port=0;
    +            transportValue.tls_port=0;
    +		} else if ([transport isEqualToString:@"tls"]){
    +			transportValue.tls_port=transportValue.tcp_port|transportValue.udp_port|transportValue.tls_port;
    +			transportValue.tcp_port=0;
    +            transportValue.udp_port=0;
    +		} else {
    +			[LinphoneLogger logc:LinphoneLoggerError format:"unexpected transport [%s]",[transport cStringUsingEncoding:[NSString defaultCStringEncoding]]];
    +		}
    +		if (linphone_core_set_sip_transports(lc, &transportValue)) {
    +			[LinphoneLogger logc:LinphoneLoggerError format:"cannot set transport"];
    +		}
    +	}
    +}
    +
    +- (void)addProxyConfig:(NSString*)username password:(NSString*)password domain:(NSString*)domain server:(NSString*)server {
    +    if(server == nil) {
    +        server = domain;
    +    }
    +	const char* identity = [[NSString stringWithFormat:@"sip:%@@%@", username, domain] UTF8String];
     	LinphoneProxyConfig* proxyCfg = linphone_core_create_proxy_config([LinphoneManager getLc]);
    -	LinphoneAuthInfo* info=linphone_auth_info_new([username UTF8String],NULL,[password UTF8String],NULL,NULL);
    -	linphone_proxy_config_set_identity(proxyCfg,identity);
    -	linphone_proxy_config_set_server_addr(proxyCfg,[domain UTF8String]);
    -	linphone_proxy_config_enable_register(proxyCfg,true);
    -	linphone_core_add_proxy_config([LinphoneManager getLc], proxyCfg);
    +	LinphoneAuthInfo* info = linphone_auth_info_new([username UTF8String], NULL, [password UTF8String], NULL, NULL);
    +	linphone_proxy_config_set_identity(proxyCfg, identity);
    +	linphone_proxy_config_set_server_addr(proxyCfg, [server UTF8String]);
    +    if([server compare:domain options:NSCaseInsensitiveSearch] != 0) {
    +        linphone_proxy_config_set_route(proxyCfg, [server UTF8String]);
    +    }
    +	linphone_proxy_config_enable_register(proxyCfg, true);
    +    if([domain compare:[[LinphoneManager instance] lpConfigStringForKey:@"domain" forSection:@"wizard"] options:NSCaseInsensitiveSearch] == 0) {
    +        [self setDefaultSettings:proxyCfg];
    +    }
    +    linphone_core_add_proxy_config([LinphoneManager getLc], proxyCfg);
     	linphone_core_set_default_proxy([LinphoneManager getLc], proxyCfg);
    -	linphone_core_add_auth_info([LinphoneManager getLc],info)
    -	;
    +	linphone_core_add_auth_info([LinphoneManager getLc], info);
     }
     
     - (void)checkUserExist:(NSString*)username {
         [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC check_account %@", username];
         
    -    NSURL *URL = [NSURL URLWithString: LINPHONE_WIZARD_URL];
    +    NSURL *URL = [NSURL URLWithString:[[LinphoneManager instance] lpConfigStringForKey:@"service_url" forSection:@"wizard"]];
         XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL];
         [request setMethod: @"check_account" withParameters:[NSArray arrayWithObjects:username, nil]];
         
    @@ -289,7 +330,7 @@ static UICompositeViewDescription *compositeDescription = nil;
         NSString *useragent = [LinphoneManager getUserAgent];
         [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC create_account_with_useragent %@ %@ %@ %@", identity, password, email, useragent];
         
    -    NSURL *URL = [NSURL URLWithString: LINPHONE_WIZARD_URL];
    +    NSURL *URL = [NSURL URLWithString: [[LinphoneManager instance] lpConfigStringForKey:@"service_url" forSection:@"wizard"]];
         XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL];
         [request setMethod: @"create_account_with_useragent" withParameters:[NSArray arrayWithObjects:identity, password, email, useragent, nil]];
         
    @@ -303,7 +344,7 @@ static UICompositeViewDescription *compositeDescription = nil;
     - (void)checkAccountValidation:(NSString*)identity {
         [LinphoneLogger log:LinphoneLoggerDebug format:@"XMLRPC check_account_validated %@", identity];
         
    -    NSURL *URL = [NSURL URLWithString: LINPHONE_WIZARD_URL];
    +    NSURL *URL = [NSURL URLWithString: [[LinphoneManager instance] lpConfigStringForKey:@"service_url" forSection:@"wizard"]];
         XMLRPCRequest *request = [[XMLRPCRequest alloc] initWithURL: URL];
         [request setMethod: @"check_account_validated" withParameters:[NSArray arrayWithObjects:identity, nil]];
         
    @@ -384,7 +425,7 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     - (IBAction)onCheckValidationClick:(id)sender {
         NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text;
    -    [self checkAccountValidation:[NSString stringWithFormat:@"%@@%@", username, LINPHONE_WIZARD_DOMAIN]];
    +    [self checkAccountValidation:[NSString stringWithFormat:@"%@@%@", username, [[LinphoneManager instance] lpConfigStringForKey:@"domain" forSection:@"wizard"]]];
     }
     
     - (IBAction)onSignInExternalClick:(id)sender {
    @@ -392,14 +433,16 @@ static UICompositeViewDescription *compositeDescription = nil;
         NSString *username = [WizardViewController findTextField:ViewElement_Username  view:contentView].text;
         NSString *password = [WizardViewController findTextField:ViewElement_Password  view:contentView].text;
         NSString *domain = [WizardViewController findTextField:ViewElement_Domain  view:contentView].text;
    -    [self addProxyConfig:username password:password domain:domain];
    +    [self addProxyConfig:username password:password domain:domain server:nil];
     }
     
     - (IBAction)onSignInClick:(id)sender {
         [self.waitView setHidden:false];
         NSString *username = [WizardViewController findTextField:ViewElement_Username  view:contentView].text;
         NSString *password = [WizardViewController findTextField:ViewElement_Password  view:contentView].text;
    -    [self addProxyConfig:username password:password domain:LINPHONE_WIZARD_DOMAIN];
    +    [self addProxyConfig:username password:password
    +                  domain:[[LinphoneManager instance] lpConfigStringForKey:@"domain" forSection:@"wizard"]
    +                  server:[[LinphoneManager instance] lpConfigStringForKey:@"proxy" forSection:@"wizard"]];
     }
     
     - (IBAction)onRegisterClick:(id)sender {
    @@ -409,13 +452,16 @@ static UICompositeViewDescription *compositeDescription = nil;
         NSString *email = [WizardViewController findTextField:ViewElement_Email view:contentView].text;
         NSMutableString *errors = [NSMutableString string];
         
    -    if ([username length] < LINPHONE_WIZARD_MIN_USERNAME_LENGTH) {
    +    int username_length = [[LinphoneManager instance] lpConfigIntForKey:@"username_length" forSection:@"wizard"];
    +    int password_length = [[LinphoneManager instance] lpConfigIntForKey:@"password_length" forSection:@"wizard"];
    +    
    +    if ([username length] < username_length) {
             
    -        [errors appendString:[NSString stringWithFormat:NSLocalizedString(@"The username is too short (minimum %d characters).\n", nil), LINPHONE_WIZARD_MIN_USERNAME_LENGTH]];
    +        [errors appendString:[NSString stringWithFormat:NSLocalizedString(@"The username is too short (minimum %d characters).\n", nil), username_length]];
         }
         
    -    if ([password length] < LINPHONE_WIZARD_MIN_PASSWORD_LENGTH) {
    -        [errors appendString:[NSString stringWithFormat:NSLocalizedString(@"The password is too short (minimum %d characters).\n", nil), LINPHONE_WIZARD_MIN_PASSWORD_LENGTH]];
    +    if ([password length] < password_length) {
    +        [errors appendString:[NSString stringWithFormat:NSLocalizedString(@"The password is too short (minimum %d characters).\n", nil), password_length]];
         }
         
         if (![password2 isEqualToString:password]) {
    @@ -447,6 +493,7 @@ static UICompositeViewDescription *compositeDescription = nil;
         [self registrationUpdate:[[notif.userInfo objectForKey: @"state"] intValue]];
     }
     
    +
     #pragma mark - Keyboard Event Functions
     
     - (void)keyboardWillHide:(NSNotification *)notif {
    @@ -533,7 +580,7 @@ static UICompositeViewDescription *compositeDescription = nil;
                     NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text;
                     NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text;
                     NSString *email = [WizardViewController findTextField:ViewElement_Email view:contentView].text;
    -                [self createAccount:[NSString stringWithFormat:@"%@@%@", username, LINPHONE_WIZARD_DOMAIN] password:password email:email];
    +                [self createAccount:[NSString stringWithFormat:@"%@@%@", username, [[LinphoneManager instance] lpConfigStringForKey:@"domain" forSection:@"wizard"]] password:password email:email];
                 }
             } else if([[request method] isEqualToString:@"create_account_with_useragent"]) {
                 if([response object] == [NSNumber numberWithInt:0]) {
    @@ -555,7 +602,9 @@ static UICompositeViewDescription *compositeDescription = nil;
                  if([response object] == [NSNumber numberWithInt:1]) {
                      NSString *username = [WizardViewController findTextField:ViewElement_Username view:contentView].text;
                      NSString *password = [WizardViewController findTextField:ViewElement_Password view:contentView].text;
    -                [self addProxyConfig:username password:password domain:LINPHONE_WIZARD_DOMAIN];
    +                [self addProxyConfig:username password:password
    +                              domain:[[LinphoneManager instance] lpConfigStringForKey:@"domain" forSection:@"wizard"]
    +                              server:[[LinphoneManager instance] lpConfigStringForKey:@"proxy" forSection:@"wizard"]];
                  } else {
                      UIAlertView* errorView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Account validation issue",nil)
                                                                          message:NSLocalizedString(@"Your account is not validate yet.", nil)
    diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory
    index 6364d3100..a38a81b51 100644
    --- a/Resources/linphonerc-factory
    +++ b/Resources/linphonerc-factory
    @@ -31,4 +31,13 @@ dtmf_player_amp=0.007
     history_max_size=30
     max_calls=3
     
    +[wizard]
    +service_url=https://www.linphone.org/wizard.php
    +domain=sip.linphone.org
    +proxy=sip.linphone.org:5223
    +password_length=6
    +username_length=4
    +expires=600
    +push_notification=1
    +transport=tls
     
    diff --git a/Resources/linphonerc-factory~ipad b/Resources/linphonerc-factory~ipad
    index 35826eef3..845a67bba 100644
    --- a/Resources/linphonerc-factory~ipad
    +++ b/Resources/linphonerc-factory~ipad
    @@ -30,3 +30,13 @@ dtmf_player_amp=0.007
     [misc]
     history_max_size=30
     max_calls=3
    +
    +[wizard]
    +service_url=https://www.linphone.org/wizard.php
    +domain=sip.linphone.org
    +proxy=sip.linphone.org:5223
    +password_length=6
    +username_length=4
    +expires=600
    +push_notification=1
    +transport=tls
    diff --git a/Settings/InAppSettings.bundle/Network.plist b/Settings/InAppSettings.bundle/Network.plist
    index d4b181699..51104118c 100644
    --- a/Settings/InAppSettings.bundle/Network.plist
    +++ b/Settings/InAppSettings.bundle/Network.plist
    @@ -140,6 +140,16 @@
     				ZRTP
     			
     		
    +		
    +			Title
    +			Push Notification
    +			Key
    +			pushnotification_preference
    +			Type
    +			PSToggleSwitchSpecifier
    +			DefaultValue
    +			
    +		
     	
     
     
    diff --git a/Settings/InAppSettings.bundle/Root.plist b/Settings/InAppSettings.bundle/Root.plist
    index a58e3ff20..1b5da02b0 100644
    --- a/Settings/InAppSettings.bundle/Root.plist
    +++ b/Settings/InAppSettings.bundle/Root.plist
    @@ -10,6 +10,14 @@
     			Type
     			PSGroupSpecifier
     		
    +		
    +			Key
    +			wizard_button
    +			Title
    +			Wizard
    +			Type
    +			IASKButtonSpecifier
    +		
     		
     			AutocapitalizationType
     			None
    diff --git a/Settings/InAppSettings.bundle/en.lproj/Network.strings b/Settings/InAppSettings.bundle/en.lproj/Network.strings
    new file mode 100644
    index 000000000..481b7d438
    --- /dev/null
    +++ b/Settings/InAppSettings.bundle/en.lproj/Network.strings
    @@ -0,0 +1,51 @@
    +/* Wifi only */
    +"Wifi only" = "Wifi only";
    +
    +/* Stun server */
    +"Stun server" = "Stun server";
    +
    +/* ICE */
    +"ICE" = "ICE";
    +
    +/* Random Port */
    +"Random Port" = "Random Port";
    +
    +/* Port */
    +"Port" = "Port";
    +
    +/* Audio Port */
    +"Audio Port" = "Audio Port";
    +
    +/* Video Port */
    +"Video Port" = "Video Port";
    +
    +/* Transport */
    +"Transport" = "Transport";
    +
    +/* Media Encryption */
    +"Media Encryption" = "Media Encryption";
    +
    +/* Push Notifications */
    +"Push Notification" = "Push Notification";
    +
    +/* Transport */
    +"Transport" = "Transport";
    +
    +/* udp */
    +"udp" = "udp";
    +
    +/* tcp */
    +"tcp" = "tcp";
    +
    +/* tls */
    +"tls" = "tls";
    +
    +/* None */
    +"None" = "None";
    +
    +/* SRTP */
    +"SRTP" = "SRTP";
    +
    +/* ZRTP */
    +"ZRTP" = "ZRTP";
    +
    diff --git a/Settings/InAppSettings.bundle/en.lproj/Root.strings b/Settings/InAppSettings.bundle/en.lproj/Root.strings
    index ebc359c28..3c249d05c 100644
    --- a/Settings/InAppSettings.bundle/en.lproj/Root.strings
    +++ b/Settings/InAppSettings.bundle/en.lproj/Root.strings
    @@ -1,6 +1,9 @@
     /* SIP account */
     "SIP account" = "SIP account";
     
    +/* Wizard */
    +"Wizard" = "Wizard";
    +
     /* User name */
     "User name" = "User name";
     
    diff --git a/Settings/InAppSettings.bundle/fr.lproj/Network.strings b/Settings/InAppSettings.bundle/fr.lproj/Network.strings
    new file mode 100644
    index 000000000..95cd15fb4
    --- /dev/null
    +++ b/Settings/InAppSettings.bundle/fr.lproj/Network.strings
    @@ -0,0 +1,51 @@
    +/* Wifi only */
    +"Wifi only" = "Uniquement Wifi";
    +
    +/* Stun server */
    +"Stun server" = "Serveur Stun";
    +
    +/* ICE */
    +"ICE" = "ICE";
    +
    +/* Random Port */
    +"Random Port" = "Port Aléatoire";
    +
    +/* Port */
    +"Port" = "Port";
    +
    +/* Audio Port */
    +"Audio Port" = "Port Audio";
    +
    +/* Video Port */
    +"Video Port" = "Port Vidéo";
    +
    +/* Transport */
    +"Transport" = "Transport";
    +
    +/* Media Encryption */
    +"Media Encryption" = "Chiffrement";
    +
    +/* Push Notifications */
    +"Push Notification" = "Push Notification";
    +
    +/* Transport */
    +"Transport" = "Transport";
    +
    +/* udp */
    +"udp" = "udp";
    +
    +/* tcp */
    +"tcp" = "tcp";
    +
    +/* tls */
    +"tls" = "tls";
    +
    +/* None */
    +"None" = "Aucun";
    +
    +/* SRTP */
    +"SRTP" = "SRTP";
    +
    +/* ZRTP */
    +"ZRTP" = "ZRTP";
    +
    diff --git a/Settings/InAppSettings.bundle/fr.lproj/Root.strings b/Settings/InAppSettings.bundle/fr.lproj/Root.strings
    index 5ac83fabf..e075895e0 100644
    --- a/Settings/InAppSettings.bundle/fr.lproj/Root.strings
    +++ b/Settings/InAppSettings.bundle/fr.lproj/Root.strings
    @@ -1,6 +1,9 @@
     /* SIP account */
     "SIP account" = "Compte SIP";
     
    +/* Wizard */
    +"Wizard" = "Assistant";
    +
     /* User name */
     "User name" = "Nom d'utilisateur";
     
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index 09f16f942..fe6bc31b8 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -9712,7 +9712,7 @@ Raison: %2$s
     						
     					
     					change date
    -					2012-09-11T10:05:48Z
    +					2012-09-18T09:26:35Z
     					changed values
     					
     					class
    @@ -9722,7 +9722,7 @@ Raison: %2$s
     					flags
     					0
     					hash
    -					0a4db385ce9aee1237f3af978c3a98cf
    +					dc9f190a8a2dcdf8026518ff11e1d480
     
     					name
     					Root.strings
    @@ -9753,6 +9753,31 @@ Raison: %2$s
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Wizard
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Wizard
    +							localizations
    +							
    +								en
    +								Wizard
    +								fr
    +								Assistant
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -10065,7 +10090,7 @@ Raison: %2$s
     							errors
     							
     							flags
    -							2
    +							3
     							key
     							
     							localizations
    @@ -10306,7 +10331,7 @@ Raison: %2$s
     					errors
     					
     					flags
    -					0
    +					1
     					hash
     					04783f5ae79079b4d782aa4842c5a054
     
    @@ -10743,7 +10768,7 @@ Raison: %2$s
     					errors
     					
     					flags
    -					0
    +					1
     					hash
     					e3ec0c0a4b3e250fec1852916b6b69ac
     
    @@ -11019,7 +11044,7 @@ Raison: %2$s
     					errors
     					
     					flags
    -					0
    +					1
     					hash
     					3cc5ec7e298d1a3aa4449641876f5960
     
    @@ -11163,7 +11188,7 @@ Raison: %2$s
     					errors
     					
     					flags
    -					0
    +					1
     					hash
     					b7297749603f255583f59fcea3174690
     
    @@ -11435,6 +11460,440 @@ Raison: %2$s
     						1
     					
     				
    +				
    +					attachments
    +					
    +						backup
    +						
    +							1
    +							
    +								class
    +								BLWrapperHandle
    +								name
    +								InAppSettings.bundle/Network/1/Network.strings
    +							
    +						
    +					
    +					change date
    +					2012-09-18T09:18:41Z
    +					changed values
    +					
    +					class
    +					BLStringsFileObject
    +					errors
    +					
    +					flags
    +					0
    +					hash
    +					3c3bd8331f174699330a8cffb2875fa5
    +
    +					name
    +					Network.strings
    +					objects
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Wifi only
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Wifi only
    +							localizations
    +							
    +								en
    +								Wifi only
    +								fr
    +								Uniquement Wifi
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Stun server
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Stun server
    +							localizations
    +							
    +								en
    +								Stun server
    +								fr
    +								Serveur Stun
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							ICE
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							ICE
    +							localizations
    +							
    +								en
    +								ICE
    +								fr
    +								ICE
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Random Port
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Random Port
    +							localizations
    +							
    +								en
    +								Random Port
    +								fr
    +								Port Aléatoire
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Port
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Port
    +							localizations
    +							
    +								en
    +								Port
    +								fr
    +								Port
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Audio Port
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Audio Port
    +							localizations
    +							
    +								en
    +								Audio Port
    +								fr
    +								Port Audio
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Video Port
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Video Port
    +							localizations
    +							
    +								en
    +								Video Port
    +								fr
    +								Port Vidéo
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Transport
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Transport
    +							localizations
    +							
    +								en
    +								Transport
    +								fr
    +								Transport
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Media Encryption
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Media Encryption
    +							localizations
    +							
    +								en
    +								Media Encryption
    +								fr
    +								Chiffrement
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Push Notifications
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Push Notification
    +							localizations
    +							
    +								en
    +								Push Notification
    +								fr
    +								Push Notification
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							udp
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							udp
    +							localizations
    +							
    +								en
    +								udp
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							tcp
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							tcp
    +							localizations
    +							
    +								en
    +								tcp
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							tls
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							tls
    +							localizations
    +							
    +								en
    +								tls
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							None
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							None
    +							localizations
    +							
    +								en
    +								None
    +								fr
    +								Aucun
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							SRTP
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							SRTP
    +							localizations
    +							
    +								en
    +								SRTP
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							ZRTP
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							ZRTP
    +							localizations
    +							
    +								en
    +								ZRTP
    +							
    +							snapshots
    +							
    +						
    +					
    +					old objects
    +					
    +					plist file
    +					
    +					snapshots
    +					
    +					versions
    +					
    +						en
    +						1
    +					
    +				
     			
     			flags
     			0
    diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings b/linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings
    new file mode 100644
    index 000000000..481b7d438
    --- /dev/null
    +++ b/linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings
    @@ -0,0 +1,51 @@
    +/* Wifi only */
    +"Wifi only" = "Wifi only";
    +
    +/* Stun server */
    +"Stun server" = "Stun server";
    +
    +/* ICE */
    +"ICE" = "ICE";
    +
    +/* Random Port */
    +"Random Port" = "Random Port";
    +
    +/* Port */
    +"Port" = "Port";
    +
    +/* Audio Port */
    +"Audio Port" = "Audio Port";
    +
    +/* Video Port */
    +"Video Port" = "Video Port";
    +
    +/* Transport */
    +"Transport" = "Transport";
    +
    +/* Media Encryption */
    +"Media Encryption" = "Media Encryption";
    +
    +/* Push Notifications */
    +"Push Notification" = "Push Notification";
    +
    +/* Transport */
    +"Transport" = "Transport";
    +
    +/* udp */
    +"udp" = "udp";
    +
    +/* tcp */
    +"tcp" = "tcp";
    +
    +/* tls */
    +"tls" = "tls";
    +
    +/* None */
    +"None" = "None";
    +
    +/* SRTP */
    +"SRTP" = "SRTP";
    +
    +/* ZRTP */
    +"ZRTP" = "ZRTP";
    +
    diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Root/1/Root.strings b/linphone.ldb/Resources/InAppSettings.bundle/Root/1/Root.strings
    index ebc359c28..3c249d05c 100644
    --- a/linphone.ldb/Resources/InAppSettings.bundle/Root/1/Root.strings
    +++ b/linphone.ldb/Resources/InAppSettings.bundle/Root/1/Root.strings
    @@ -1,6 +1,9 @@
     /* SIP account */
     "SIP account" = "SIP account";
     
    +/* Wizard */
    +"Wizard" = "Wizard";
    +
     /* User name */
     "User name" = "User name";
     
    
    From 88119892209a5f6b3a203c388b4511b32135e037 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Tue, 18 Sep 2012 12:25:06 +0200
    Subject: [PATCH 229/397] Improve settings
    
    ---
     Classes/LinphoneCoreSettingsStore.m          |  3 +--
     Resources/linphonerc                         |  4 ++++
     Resources/linphonerc~ipad                    | 18 ++++++++++++++----
     Settings/InAppSettings.bundle/Advanced.plist |  8 ++++++++
     Settings/InAppSettings.bundle/Call.plist     |  2 ++
     Settings/InAppSettings.bundle/Network.plist  |  8 ++++++++
     6 files changed, 37 insertions(+), 6 deletions(-)
    
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index 1ab80c019..b3e21bddd 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -193,9 +193,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "enable_first_login_view_preference", 0) forKey:@"enable_first_login_view_preference"];
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "debugenable_preference", 0) forKey:@"debugenable_preference"];
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "animations_preference", 1) forKey:@"animations_preference"];
    -	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "check_config_disable_preference", 0) forKey:@"check_config_disable_preference"];
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "wifi_only_preference", 0) forKey:@"wifi_only_preference"];
    -	[self setString: lp_config_get_string(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "file_upload_url_preference",NULL) forKey:@"file_upload_url_preference"];
    +	[self setString: lp_config_get_string(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "file_upload_url_preference", NULL) forKey:@"file_upload_url_preference"];
     	
     	/*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/
     	BOOL start_at_boot = TRUE;
    diff --git a/Resources/linphonerc b/Resources/linphonerc
    index 7c40f420f..b119f76f0 100644
    --- a/Resources/linphonerc
    +++ b/Resources/linphonerc
    @@ -23,5 +23,9 @@ automatically_accept=0
     [net]
     firewall_policy=0
     
    +[app]
    +rotation_preference=auto
    +animations_preference=1
    +
     [default_values]
     reg_expires=600
    \ No newline at end of file
    diff --git a/Resources/linphonerc~ipad b/Resources/linphonerc~ipad
    index 7275d321e..f31880409 100644
    --- a/Resources/linphonerc~ipad
    +++ b/Resources/linphonerc~ipad
    @@ -4,18 +4,28 @@ sip_tcp_random_port=1
     sip_tls_random_port=1
     contact="Linphone iPhone" 
     keepalive_period=30000
    +default_proxy=0
     
     [rtp]
     audio_rtp_port=7076
     video_rtp_port=9078
     
    -[net]
    -firewall_policy=0
    -
     [video]
     display=1
     capture=1
     show_local=1
     enabled=1
     size=vga
    -display_filter_auto_rotate=1
    \ No newline at end of file
    +display_filter_auto_rotate=1
    +automatically_initiate=0
    +automatically_accept=0
    +
    +[net]
    +firewall_policy=0
    +
    +[app]
    +rotation_preference=auto
    +animations_preference=1
    +
    +[default_values]
    +reg_expires=600
    \ No newline at end of file
    diff --git a/Settings/InAppSettings.bundle/Advanced.plist b/Settings/InAppSettings.bundle/Advanced.plist
    index d7dab7bc3..9edd14072 100644
    --- a/Settings/InAppSettings.bundle/Advanced.plist
    +++ b/Settings/InAppSettings.bundle/Advanced.plist
    @@ -111,6 +111,8 @@
     			NumberPad
     			DefaultValue
     			600
    +			IASKTextAlignment
    +			IASKUITextAlignmentRight
     		
     		
     			Title
    @@ -137,6 +139,8 @@
     			Display name
     			Type
     			PSTextFieldSpecifier
    +			IASKTextAlignment
    +			IASKUITextAlignmentRight
     		
     		
     			AutocapitalizationType
    @@ -155,6 +159,8 @@
     			Username
     			Type
     			PSTextFieldSpecifier
    +			IASKTextAlignment
    +			IASKUITextAlignmentRight
     		
     		
     			Type
    @@ -169,6 +175,8 @@
     			Sharing server
     			Key
     			file_upload_url_preference
    +			IASKTextAlignment
    +			IASKUITextAlignmentRight
     		
     	
     
    diff --git a/Settings/InAppSettings.bundle/Call.plist b/Settings/InAppSettings.bundle/Call.plist
    index 378b6b856..6996221ff 100644
    --- a/Settings/InAppSettings.bundle/Call.plist
    +++ b/Settings/InAppSettings.bundle/Call.plist
    @@ -19,6 +19,8 @@
     			Prefix
     			Type
     			PSTextFieldSpecifier
    +			IASKTextAlignment
    +			IASKUITextAlignmentRight
     		
     		
     			DefaultValue
    diff --git a/Settings/InAppSettings.bundle/Network.plist b/Settings/InAppSettings.bundle/Network.plist
    index 51104118c..8d8e1a082 100644
    --- a/Settings/InAppSettings.bundle/Network.plist
    +++ b/Settings/InAppSettings.bundle/Network.plist
    @@ -27,6 +27,8 @@
     			No
     			DefaultValue
     			
    +			IASKTextAlignment
    +			IASKUITextAlignmentRight
     		
     		
     			Title
    @@ -63,6 +65,8 @@
     			NumberPad
     			DefaultValue
     			5060
    +			IASKTextAlignment
    +			IASKUITextAlignmentRight
     		
     		
     			Key
    @@ -79,6 +83,8 @@
     			NumberPad
     			DefaultValue
     			7076
    +			IASKTextAlignment
    +			IASKUITextAlignmentRight
     		
     		
     			Key
    @@ -95,6 +101,8 @@
     			NumberPad
     			DefaultValue
     			9078
    +			IASKTextAlignment
    +			IASKUITextAlignmentRight
     		
     		
     			DefaultValue
    
    From c83b75f4ba60661a9dee2818344dff3d67e2d23a Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Tue, 18 Sep 2012 12:30:30 +0200
    Subject: [PATCH 230/397] Fix wizard
    
    ---
     Classes/PhoneMainView.m          | 5 ++++-
     Classes/SettingsViewController.m | 5 ++++-
     Classes/WizardViewController.h   | 2 ++
     Classes/WizardViewController.m   | 8 +-------
     4 files changed, 11 insertions(+), 9 deletions(-)
    
    diff --git a/Classes/PhoneMainView.m b/Classes/PhoneMainView.m
    index f2e04f05e..fdbb966d1 100644
    --- a/Classes/PhoneMainView.m
    +++ b/Classes/PhoneMainView.m
    @@ -409,7 +409,10 @@ static PhoneMainView* phoneMainViewInstance=nil;
             if(list != NULL) {
                 [self changeCurrentView: [DialerViewController compositeViewDescription]];
             } else {
    -            [self changeCurrentView: [WizardViewController compositeViewDescription]];
    +            WizardViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[WizardViewController compositeViewDescription]], WizardViewController);
    +            if(controller != nil) {
    +                [controller reset];
    +            }
             }
         }
         
    diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
    index 8143f129a..ec63fea7e 100644
    --- a/Classes/SettingsViewController.m
    +++ b/Classes/SettingsViewController.m
    @@ -564,7 +564,10 @@ static UICompositeViewDescription *compositeDescription = nil;
         if([key isEqual:@"console_button"]) {
             [[PhoneMainView instance] changeCurrentView:[ConsoleViewController compositeViewDescription] push:TRUE];
         } else if([key isEqual:@"wizard_button"]) {
    -        [[PhoneMainView instance] changeCurrentView:[WizardViewController compositeViewDescription]];
    +        WizardViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[WizardViewController compositeViewDescription]], WizardViewController);
    +        if(controller != nil) {
    +            [controller reset];
    +        }
         }
     }
     @end
    diff --git a/Classes/WizardViewController.h b/Classes/WizardViewController.h
    index f0e8f2b99..6140edc44 100644
    --- a/Classes/WizardViewController.h
    +++ b/Classes/WizardViewController.h
    @@ -42,6 +42,8 @@
     @property (nonatomic, retain) IBOutlet UIButton *backButton;
     @property (nonatomic, retain) IBOutlet UIButton *startButton;
     
    +- (void)reset;
    +
     - (IBAction)onStartClick:(id)sender;
     - (IBAction)onBackClick:(id)sender;
     - (IBAction)onCancelClick:(id)sender;
    diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m
    index c99fba0b5..ba97c98a1 100644
    --- a/Classes/WizardViewController.m
    +++ b/Classes/WizardViewController.m
    @@ -109,12 +109,6 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     #pragma mark - ViewController Functions
     
    -- (void)viewDidLoad {
    -    [super viewDidLoad];
    -    [self resetWizard];
    -}
    -
    -
     - (void)viewWillAppear:(BOOL)animated {
         [super viewWillAppear:animated];
         
    @@ -161,7 +155,7 @@ static UICompositeViewDescription *compositeDescription = nil;
         }
     }
     
    -- (void)resetWizard {
    +- (void)reset {
         [self clearProxyConfig];
         [WizardViewController cleanTextField:welcomeView];
         [WizardViewController cleanTextField:choiceView];
    
    From 20ef4a246946d0d89a1522f8eb1802361d227176 Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Tue, 18 Sep 2012 10:32:00 +0200
    Subject: [PATCH 231/397] xcode 4.6/ios6 support
    
    Conflicts:
    
    	submodules/linphone
    ---
     README                                   |  2 +
     submodules/build/Makefile                | 10 +--
     submodules/build/Makefile.ios6-beta      | 81 ++++++++++++++++++++++++
     submodules/build/builder-iphone-os.mk    | 16 +++--
     submodules/build/builders.d/libvpx.mk    |  2 +
     submodules/build/builders.d/libvpx.patch | 37 +++++++++--
     submodules/build/iphone-config.site      | 13 ++--
     submodules/linphone                      |  2 +-
     8 files changed, 141 insertions(+), 22 deletions(-)
     create mode 100644 submodules/build/Makefile.ios6-beta
    
    diff --git a/README b/README
    index 7bb193edd..803267e04 100644
    --- a/README
    +++ b/README
    @@ -52,6 +52,8 @@ BUILDING THE SDK
     	$ cd submodules/build
     	$ make all enable_gpl_third_parties=no
     
    +xcode 4.5i/ios6 beta do:
    +	$ make -f Makefile.ios6-beta
      * ZRTP support
     
      You can enable ZRTP support in GPL mode only, by adding "enable_zrtp=yes" to the make command, for example:
    diff --git a/submodules/build/Makefile b/submodules/build/Makefile
    index 72b7b1d5e..276688bb4 100644
    --- a/submodules/build/Makefile
    +++ b/submodules/build/Makefile
    @@ -54,28 +54,28 @@ endif
     LINPHONE_OPTIONS=enable_gpl_third_parties=$(enable_gpl_third_parties) enable_zrtp=$(enable_zrtp)
     
     build:
    -	make -f  builder-iphone-os.mk  $(LINPHONE_OPTIONS) all  \
    +	make -f  builder-iphone-os.mk  host=armv6-apple-darwin $(LINPHONE_OPTIONS) all  \
     	&& make -f  builder-iphone-simulator.mk $(LINPHONE_OPTIONS) all  \
     	&& make -f  builder-iphone-os.mk   host=armv7-apple-darwin $(LINPHONE_OPTIONS) all \
     	&& make -f builder-iphone-os.mk delivery-sdk 
     
     ipa: build
     	make -f  builder-iphone-simulator.mk  ipa \
    -	&&  make -f  builder-iphone-os.mk  ipa \
    +	&&  make -f  builder-iphone-os.mk  host=armv6-apple-darwin ipa \
     	&&  make -f  builder-iphone-os.mk   host=armv7-apple-darwin ipa
     
     clean:
     	make -f  builder-iphone-simulator.mk  clean \
    -	&&  make -f  builder-iphone-os.mk  clean \
    +	&&  make -f  builder-iphone-os.mk  host=armv6-apple-darwin clean \
     	&&  make -f  builder-iphone-os.mk   host=armv7-apple-darwin clean
     
     clean-makefile:
     	make -f  builder-iphone-simulator.mk  clean-makefile \
    -	&&  make -f  builder-iphone-os.mk  clean-makefile \
    +	&&  make -f  builder-iphone-os.mk  host=armv6-apple-darwin clean-makefile \
     	&&  make -f  builder-iphone-os.mk   host=armv7-apple-darwin clean-makefile
     
     veryclean:
     	make -f  builder-iphone-simulator.mk  veryclean \
    -	&&  make -f  builder-iphone-os.mk  veryclean \
    +	&&  make -f  builder-iphone-os.mk  host=armv6-apple-darwin veryclean \
     	&&  make -f  builder-iphone-os.mk  host=armv7-apple-darwin veryclean 
     
    diff --git a/submodules/build/Makefile.ios6-beta b/submodules/build/Makefile.ios6-beta
    new file mode 100644
    index 000000000..bb1fd7a6c
    --- /dev/null
    +++ b/submodules/build/Makefile.ios6-beta
    @@ -0,0 +1,81 @@
    +############################################################################
    +# Makefile 
    +# Copyright (C) 2009  Belledonne Communications,Grenoble France
    +#
    +############################################################################
    +#
    +# This program is free software; you can redistribute it and/or
    +# modify it under the terms of the GNU General Public License
    +# as published by the Free Software Foundation; either version 2
    +# of the License, or (at your option) any later version.
    +#
    +# This program is distributed in the hope that it will be useful,
    +# but WITHOUT ANY WARRANTY; without even the implied warranty of
    +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    +# GNU General Public License for more details.
    +#
    +# You should have received a copy of the GNU General Public License
    +# along with this program; if not, write to the Free Software
    +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
    +#
    +############################################################################
    +enable_gpl_third_parties=yes
    +enable_zrtp=no
    +
    +.NOTPARALLEL all: check_options build warning
    +ifeq ($(enable_gpl_third_parties)$(enable_zrtp),noyes)
    +check_options:
    +	@echo "ZRTP is not available in non-gpl build."
    +	@exit -1
    +else
    +check_options:
    +
    +endif
    +
    +ifeq ($(enable_gpl_third_parties),yes)
    +warning:
    +	@echo 
    +	@echo "*****************************************************************"
    +	@echo "*****************************************************************"
    +	@echo "*****CAUTION, this liblinphone SDK is built using GPL code ******"
    +	@echo "*****To disable gpl code, use make enable_gpl_third_parties=no***"
    +	@echo "*****************************************************************"
    +	@echo "*****************************************************************"
    +else
    +warning:
    +	@echo 
    +	@echo "*****************************************************************"
    +	@echo "*****************************************************************"
    +	@echo "*****linphone SDK without GPL code                         ******"
    +	@echo "*****************************************************************"
    +	@echo "*****************************************************************"
    +endif
    +
    +LINPHONE_OPTIONS=enable_gpl_third_parties=$(enable_gpl_third_parties) enable_zrtp=$(enable_zrtp)
    +
    +build:
    +	make -f  builder-iphone-simulator.mk $(LINPHONE_OPTIONS) all  \
    +	&& make -f  builder-iphone-os.mk  $(LINPHONE_OPTIONS) all  \
    +	&& make -f  builder-iphone-os.mk  host=armv7s-apple-darwin $(LINPHONE_OPTIONS) all  \
    +	&& make -f builder-iphone-os.mk delivery-sdk 
    +
    +ipa: build
    +	make -f  builder-iphone-simulator.mk  ipa \
    +	&&  make -f  builder-iphone-os.mk  ipa \
    +	&&  make -f  builder-iphone-os.mk  host=armv7s-apple-darwin ipa \
    +
    +clean:
    +	make -f  builder-iphone-simulator.mk  clean \
    +	&&  make -f  builder-iphone-os.mk  clean \
    +	&&  make -f  builder-iphone-os.mk  host=armv7s-apple-darwin clean \
    +
    +clean-makefile:
    +	make -f  builder-iphone-simulator.mk  clean-makefile \
    +	&&  make -f  builder-iphone-os.mk  clean-makefile \
    +	&&  make -f  builder-iphone-os.mk  host=armv7s-apple-darwin clean-makefile \
    +
    +veryclean:
    +	make -f  builder-iphone-simulator.mk  veryclean \
    +	&&  make -f  builder-iphone-os.mk  veryclean \
    +	&&  make -f  builder-iphone-os.mk  host=armv7s-apple-darwin veryclean \
    +
    diff --git a/submodules/build/builder-iphone-os.mk b/submodules/build/builder-iphone-os.mk
    index 93c5571d1..48b54121a 100644
    --- a/submodules/build/builder-iphone-os.mk
    +++ b/submodules/build/builder-iphone-os.mk
    @@ -20,7 +20,7 @@
     #
     ############################################################################
      
    -host?=armv6-apple-darwin
    +host?=armv7-apple-darwin
     config_site:=iphone-config.site
     library_mode:= --disable-shared --enable-static
     linphone_configure_controls=  \
    @@ -301,13 +301,17 @@ multi-arch:
     	cp -rf $(prefix)/include  $(prefix)/../apple-darwin/. ; \
     	cp -rf $(prefix)/share  $(prefix)/../apple-darwin/. ; \
     	for archive in $$arm_archives ; do \
    -	        i386_path=`echo $$archive | sed -e "s/armv6/i386/"` ;\
    -	        armv7_path=`echo $$archive | sed -e "s/armv6/armv7/"` ;\
    -        	destpath=`echo $$archive | sed -e "s/armv6-//"` ;\
    +	        i386_path=`echo $$archive | sed -e "s/armv7/i386/"` ;\
    +	        armv6_path=`echo $$archive | sed -e "s/armv7/armv6/"` ;\
    +        	if  test ! -f "$$armv6_path"; then \
    +			armv6_path= ; \
    +		fi; \
    +	        armv7s_path=`echo $$archive | sed -e "s/armv7/armv7s/"` ;\
    +        	destpath=`echo $$archive | sed -e "s/armv7-//"` ;\
             	if test -f "$$i386_path"; then \
    -                	echo "Mixing $$archive and $$i386_path into $$destpath"; \
    +                	echo "Mixing $$archive into $$destpath"; \
                     	mkdir -p `dirname $$destpath` ; \
    -                	lipo -create $$archive $$armv7_path $$i386_path -output $$destpath; \
    +                	lipo -create $$archive $$armv7s_path $$armv6_path $$i386_path -output $$destpath; \
             	else \
                     	echo "WARNING: archive `basename $$archive` exists in arm tree but does not exists in i386 tree."; \
             	fi \
    diff --git a/submodules/build/builders.d/libvpx.mk b/submodules/build/builders.d/libvpx.mk
    index 13e0aa62b..8b65258a9 100644
    --- a/submodules/build/builders.d/libvpx.mk
    +++ b/submodules/build/builders.d/libvpx.mk
    @@ -6,6 +6,8 @@ libvpx_configure_options=\
     
     ifneq (,$(findstring armv6,$(host)))
     	libvpx_configure_options+= --target=armv6-darwin-gcc --cpu=arm1176jzf-s
    +else ifneq (,$(findstring armv7s,$(host)))
    +	libvpx_configure_options+= --target=armv7s-darwin-gcc --cpu=cortex-a8  
     else ifneq (,$(findstring armv7,$(host)))
     	libvpx_configure_options+= --target=armv7-darwin-gcc --cpu=cortex-a8 
     else
    diff --git a/submodules/build/builders.d/libvpx.patch b/submodules/build/builders.d/libvpx.patch
    index 390ec4ecf..6d77453c3 100644
    --- a/submodules/build/builders.d/libvpx.patch
    +++ b/submodules/build/builders.d/libvpx.patch
    @@ -1,5 +1,5 @@
     diff --git a/build/make/configure.sh b/build/make/configure.sh
    -index 0426f92..24fa04e 100755
    +index 0426f92..d1f4760 100755
     --- a/build/make/configure.sh
     +++ b/build/make/configure.sh
     @@ -624,6 +624,9 @@ process_common_toolchain() {
    @@ -12,7 +12,7 @@ index 0426f92..24fa04e 100755
      
          case ${toolchain} in
              *-darwin8-*)
    -@@ -743,6 +746,14 @@ process_common_toolchain() {
    +@@ -743,9 +746,17 @@ process_common_toolchain() {
              darwin*)
                  SDK_PATH=/Developer/Platforms/iPhoneOS.platform/Developer
                  TOOLCHAIN_PATH=${SDK_PATH}/usr/bin
    @@ -26,10 +26,17 @@ index 0426f92..24fa04e 100755
     +            fi
                  CC=${TOOLCHAIN_PATH}/gcc
                  AR=${TOOLCHAIN_PATH}/ar
    -             LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-llvm-gcc-4.2
    -@@ -759,10 +770,10 @@ process_common_toolchain() {
    +-            LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-llvm-gcc-4.2
    ++            LD=${TOOLCHAIN_PATH}/ld
    +             AS=${TOOLCHAIN_PATH}/as
    +             STRIP=${TOOLCHAIN_PATH}/strip
    +             NM=${TOOLCHAIN_PATH}/nm
    +@@ -757,12 +768,12 @@ process_common_toolchain() {
    +             ASFLAGS="-version -arch ${tgt_isa} -g"
    + 
                  add_cflags -arch ${tgt_isa}
    -             add_ldflags -arch_only ${tgt_isa}
    +-            add_ldflags -arch_only ${tgt_isa}
    ++            add_ldflags -arch ${tgt_isa}
      
     -            add_cflags  "-isysroot ${SDK_PATH}/SDKs/iPhoneOS5.0.sdk"
     +            add_cflags  "-isysroot $SDK_FULL_PATH"
    @@ -40,3 +47,23 @@ index 0426f92..24fa04e 100755
      
                  # Add the paths for the alternate libc
                  for d in usr/include; do
    +diff --git a/configure b/configure
    +index 6f20c6b..4638ea2 100755
    +--- a/configure
    ++++ b/configure
    +@@ -94,6 +94,7 @@ all_platforms="${all_platforms} iwmmxt-linux-gcc"
    + all_platforms="${all_platforms} iwmmxt2-linux-rvct"
    + all_platforms="${all_platforms} iwmmxt2-linux-gcc"
    + all_platforms="${all_platforms} armv7-darwin-gcc"    #neon Cortex-A8
    ++all_platforms="${all_platforms} armv7s-darwin-gcc"    #neon Cortex-A8
    + all_platforms="${all_platforms} armv7-linux-rvct"    #neon Cortex-A8
    + all_platforms="${all_platforms} armv7-linux-gcc"     #neon Cortex-A8
    + all_platforms="${all_platforms} armv7-none-rvct"     #neon Cortex-A8
    +@@ -198,6 +199,7 @@ ARCH_EXT_LIST="
    +     armv5te
    +     armv6
    +     armv7
    ++    armv7s
    +     iwmmxt
    +     iwmmxt2
    + 
    diff --git a/submodules/build/iphone-config.site b/submodules/build/iphone-config.site
    index 4256d17ed..ea15aad82 100644
    --- a/submodules/build/iphone-config.site
    +++ b/submodules/build/iphone-config.site
    @@ -18,16 +18,20 @@ elif test "${host_alias}" = "armv7-apple-darwin" ; then
     	PLATFORM=OS
     	CMAKE_OPTS="-DCMAKE_SYSTEM_PROCESSOR=arm"
     	MCPU="-mcpu=cortex-a8"
    +elif test "${host_alias}" = "armv7s-apple-darwin" ; then 
    +	ARCH=armv7s
    +	PLATFORM=OS
    +	CMAKE_OPTS="-DCMAKE_SYSTEM_PROCESSOR=arm"
     else 
     	echo "bad host ${host_alias} must be either i386-apple-darwin or armv6-apple-darwin"
     	exit
     fi
     echo "Loading config.site for iPhone platform=${PLATFORM} version=${SDK_VERSION}"
    -
    +XCODE_ROOT=/Applications/Xcode.app
     #new path with Xcode 4.3:
    -if test -d /Applications/Xcode.app/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs ; then
    -	SDK_PATH_LIST=`ls -drt /Applications/Xcode.app/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*`
    -	SDK_BIN_PATH=/Applications/Xcode.app/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin  
    +if test -d ${XCODE_ROOT}/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs ; then
    +	SDK_PATH_LIST=`ls -drt ${XCODE_ROOT}/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*`
    +	SDK_BIN_PATH=${XCODE_ROOT}/Contents/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin  
     else
     	SDK_PATH_LIST=`ls -drt /Developer/Platforms/iPhone${PLATFORM}.platform/Developer/SDKs/iPhone${PLATFORM}*`
     	SDK_BIN_PATH=/Developer/Platforms/iPhone${PLATFORM}.platform/Developer/usr/bin  
    @@ -44,5 +48,4 @@ AR=${SDK_BIN_PATH}/ar
     RANLIB=${SDK_BIN_PATH}/ranlib
     
     CPPFLAGS="-Dasm=__asm"
    -LDFLAGS="-Wl,-syslibroot,${SYSROOT_PATH} -framework CFNetwork" 
     OBJCFLAGS="-x objective-c -fexceptions -gdwarf-2 -fobjc-abi-version=2 -fobjc-legacy-dispatch"
    diff --git a/submodules/linphone b/submodules/linphone
    index cb0fe631e..296b5671a 160000
    --- a/submodules/linphone
    +++ b/submodules/linphone
    @@ -1 +1 @@
    -Subproject commit cb0fe631e18ad86f37739afeef5c2d6c60231421
    +Subproject commit 296b5671ae42dbfbb28e1c30e8c79ecdbe60ebc5
    
    From 8a50dae15ab1b7fe730daeab192e0da8d50acb44 Mon Sep 17 00:00:00 2001
    From: Jehan Monnier 
    Date: Tue, 18 Sep 2012 15:04:47 +0200
    Subject: [PATCH 232/397] fix build for xcode4.4
    
    ---
     submodules/build/builder-iphone-os.mk    | 3 +++
     submodules/build/builders.d/libvpx.patch | 4 ++--
     2 files changed, 5 insertions(+), 2 deletions(-)
    
    diff --git a/submodules/build/builder-iphone-os.mk b/submodules/build/builder-iphone-os.mk
    index 48b54121a..35e345620 100644
    --- a/submodules/build/builder-iphone-os.mk
    +++ b/submodules/build/builder-iphone-os.mk
    @@ -307,6 +307,9 @@ multi-arch:
     			armv6_path= ; \
     		fi; \
     	        armv7s_path=`echo $$archive | sed -e "s/armv7/armv7s/"` ;\
    +        	if  test ! -f "$$armv7s_path"; then \
    +			armv7s_path= ; \
    +		fi; \
             	destpath=`echo $$archive | sed -e "s/armv7-//"` ;\
             	if test -f "$$i386_path"; then \
                     	echo "Mixing $$archive into $$destpath"; \
    diff --git a/submodules/build/builders.d/libvpx.patch b/submodules/build/builders.d/libvpx.patch
    index 6d77453c3..d651ccfc8 100644
    --- a/submodules/build/builders.d/libvpx.patch
    +++ b/submodules/build/builders.d/libvpx.patch
    @@ -1,5 +1,5 @@
     diff --git a/build/make/configure.sh b/build/make/configure.sh
    -index 0426f92..d1f4760 100755
    +index 0426f92..38fdcb2 100755
     --- a/build/make/configure.sh
     +++ b/build/make/configure.sh
     @@ -624,6 +624,9 @@ process_common_toolchain() {
    @@ -27,7 +27,7 @@ index 0426f92..d1f4760 100755
                  CC=${TOOLCHAIN_PATH}/gcc
                  AR=${TOOLCHAIN_PATH}/ar
     -            LD=${TOOLCHAIN_PATH}/arm-apple-darwin10-llvm-gcc-4.2
    -+            LD=${TOOLCHAIN_PATH}/ld
    ++            LD=${TOOLCHAIN_PATH}/gcc
                  AS=${TOOLCHAIN_PATH}/as
                  STRIP=${TOOLCHAIN_PATH}/strip
                  NM=${TOOLCHAIN_PATH}/nm
    
    From 4accca8b3a4f6ae43268ba4d3e5e98a231021be7 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Tue, 18 Sep 2012 16:52:52 +0200
    Subject: [PATCH 233/397] Add Image in chat
    
    ---
     Classes/ChatRoomTableViewController.h         |   8 +
     Classes/ChatRoomTableViewController.m         |  16 +-
     Classes/ChatRoomViewController.h              |   7 +-
     Classes/ChatRoomViewController.m              | 145 +++++++++++------
     Classes/ImagePickerViewController.h           |  12 +-
     Classes/ImagePickerViewController.m           |  81 +++++++++-
     Classes/ImageSharing.h                        |   6 +-
     Classes/ImageSharing.m                        |   9 +-
     Classes/LinphoneManager.h                     |   3 +
     Classes/LinphoneManager.m                     |  10 +-
     Classes/LinphoneUI/UIChatRoomCell.h           |   7 +
     Classes/LinphoneUI/UIChatRoomCell.m           |  73 +++++++--
     Classes/LinphoneUI/UIChatRoomCell.xib         | 141 +++++++++++++---
     Classes/LinphoneUI/UIContactDetailsHeader.m   |   2 +-
     Classes/en.lproj/ChatRoomViewController.xib   |  29 ++--
     Classes/en.lproj/ImageViewController.xib      |   3 +-
     Classes/fr.lproj/ChatRoomViewController.xib   |  28 ++--
     Classes/fr.lproj/ImageViewController.xib      |   2 +-
     Resources/en.lproj/Localizable.strings        | Bin 15680 -> 15502 bytes
     Resources/fr.lproj/Localizable.strings        | Bin 16172 -> 16080 bytes
     linphone.ldb/Contents.plist                   | 153 ++++++++++--------
     .../{15 => 16}/ChatRoomViewController.xib     |  29 ++--
     .../{3 => 4}/ImageViewController.xib          |   3 +-
     .../Localizable/1/Localizable.strings         | Bin 15680 -> 15502 bytes
     24 files changed, 564 insertions(+), 203 deletions(-)
     rename linphone.ldb/Resources/Classes/ChatRoomViewController/{15 => 16}/ChatRoomViewController.xib (98%)
     rename linphone.ldb/Resources/Classes/ImageViewController/{3 => 4}/ImageViewController.xib (99%)
    
    diff --git a/Classes/ChatRoomTableViewController.h b/Classes/ChatRoomTableViewController.h
    index c29786f6b..aa91671ad 100644
    --- a/Classes/ChatRoomTableViewController.h
    +++ b/Classes/ChatRoomTableViewController.h
    @@ -21,12 +21,20 @@
     #import 
     #import "ChatModel.h"
     
    +@protocol ChatRoomDelegate 
    +
    +- (BOOL)chatRoomStartImageDownload:(NSURL*)url userInfo:(id)userInfo;
    +- (BOOL)chatRoomStartImageUpload:(UIImage*)image url:(NSURL*)url;
    +
    +@end
    +
     @interface ChatRoomTableViewController : UITableViewController {
     @private
         NSMutableArray *data;
     }
     
     @property (nonatomic, copy) NSString *remoteAddress;
    +@property (nonatomic, retain) id chatRoomDelegate;
     
     - (void)addChatEntry:(ChatModel*)chat;
     - (void)updateChatEntry:(ChatModel*)chat;
    diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m
    index 608316be5..9dea07a78 100644
    --- a/Classes/ChatRoomTableViewController.m
    +++ b/Classes/ChatRoomTableViewController.m
    @@ -21,15 +21,25 @@
     #import "ChatRoomTableViewController.h"
     #import "UIChatRoomCell.h"
     #import "Utils.h"
    +#import "PhoneMainView.h"
     
     #import 
     
     @implementation ChatRoomTableViewController
     
     @synthesize remoteAddress;
    +@synthesize chatRoomDelegate;
     
    +#pragma mark - Lifecycle Functions
     
    -#pragma mark - ViewController
    +- (void)dealloc {
    +    [remoteAddress release];
    +    [chatRoomDelegate release];
    +    
    +    [super dealloc];
    +}
    +
    +#pragma mark - ViewController Functions
     
     - (void)viewDidLoad {
         [super viewDidLoad];
    @@ -73,6 +83,7 @@
         [self.tableView endUpdates];
         [self scrollToLastUnread:true];
     }
    +
     - (void)updateChatEntry:(ChatModel*)chat {
         if(data == nil) {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update entry: null data"];
    @@ -86,6 +97,7 @@
     	[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:index inSection:0]] withRowAnimation:FALSE];; //just reload
     	return;
     }
    +
     - (void)scrollToLastUnread:(BOOL)animated {
         if(data == nil) {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot add entry: null data"];
    @@ -145,7 +157,7 @@
         }
         
         [cell setChat:[data objectAtIndex:[indexPath row]]];
    -    
    +    [cell setChatRoomDelegate:chatRoomDelegate];
         return cell;
     }
     
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index 3abc96ce3..aeb721217 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -18,7 +18,6 @@
      */ 
     
     #import 
    -#import 
     
     #import "UIToggleButton.h"
     #import "UICompositeViewController.h"
    @@ -30,14 +29,11 @@
     
     #include "linphonecore.h"
     
    -@interface ChatRoomViewController : UIViewController {
    -    @private
    +@interface ChatRoomViewController : UIViewController {
         LinphoneChatRoom *chatRoom;
         ImageSharing *imageSharing;
    -    ALAssetsLibrary *photoLibrary;
     }
     
    -
     @property (nonatomic, retain) IBOutlet ChatRoomTableViewController* tableController;
     @property (nonatomic, retain) IBOutlet UIToggleButton *editButton;
     @property (nonatomic, retain) IBOutlet HPGrowingTextView* messageField;
    @@ -50,6 +46,7 @@
     @property (nonatomic, retain) IBOutlet UIView *messageView;
     @property (nonatomic, retain) IBOutlet UIImageView *messageBackgroundImage;
     @property (nonatomic, retain) IBOutlet UIImageView *footerBackgroundImage;
    +@property (nonatomic, retain) IBOutlet UIImageView *transferBackgroundImage;
     @property (nonatomic, retain) IBOutlet UITapGestureRecognizer *listTapGestureRecognizer;
     
     @property (nonatomic, copy) NSString *remoteAddress;
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index a8d863cee..4b7702131 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -22,7 +22,7 @@
     #import "DTActionSheet.h"
     
     #import 
    -
    +#import 
     
     @implementation ChatRoomViewController
     
    @@ -39,6 +39,7 @@
     @synthesize messageView;
     @synthesize messageBackgroundImage;
     @synthesize footerBackgroundImage;
    +@synthesize transferBackgroundImage;
     @synthesize listTapGestureRecognizer;
     @synthesize pictureButton;
     @synthesize imageTransferProgressBar;
    @@ -53,7 +54,6 @@
         if (self != nil) {
             self->chatRoom = NULL;
             self->imageSharing = NULL;
    -        self->photoLibrary = [[ALAssetsLibrary alloc] init];
         }
         return self;
     }
    @@ -72,6 +72,7 @@
         [messageView release];
         [messageBackgroundImage release];
         [footerBackgroundImage release];
    +    [transferBackgroundImage release];
         
         [listTapGestureRecognizer release];
         
    @@ -80,8 +81,6 @@
     	[imageTransferProgressBar release];
     	[cancelTransferButton release];
         
    -    [photoLibrary release];
    -    
         [super dealloc];
     }
     
    @@ -110,6 +109,7 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     - (void)viewDidLoad {
         [super viewDidLoad];
    +    [tableController setChatRoomDelegate:self];
         
         // Set selected+over background: IB lack !
         [editButton setImage:[UIImage imageNamed:@"chat_ok_over.png"] 
    @@ -122,6 +122,7 @@ static UICompositeViewDescription *compositeDescription = nil;
         messageField.contentInset = UIEdgeInsetsZero;
         messageField.backgroundColor = [UIColor clearColor];
         [sendButton setEnabled:FALSE];
    +    [listTapGestureRecognizer setEnabled:FALSE];
     }
     
     
    @@ -150,9 +151,11 @@ static UICompositeViewDescription *compositeDescription = nil;
         
         [messageBackgroundImage setImage:[TUNinePatchCache imageOfSize:[messageBackgroundImage bounds].size
                                                    forNinePatchNamed:@"chat_field"]];
    -    
         [footerBackgroundImage setImage:[TUNinePatchCache imageOfSize:[footerBackgroundImage bounds].size
                                                    forNinePatchNamed:@"chat_background"]];
    +    [transferBackgroundImage setImage:[TUNinePatchCache imageOfSize:[transferBackgroundImage bounds].size
    +                                                   forNinePatchNamed:@"chat_background"]];
    +    
     	BOOL fileSharingEnabled = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"] != NULL 
     								&& [[[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"] length]>0;
         
    @@ -273,7 +276,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     	[thiz.tableController updateChatEntry:chat];
     }
     
    -- (BOOL)sendMessage:(NSString *)message withExterlBodyUrl:(NSString*) url{
    +- (BOOL)sendMessage:(NSString *)message withExterlBodyUrl:(NSURL*)externalUrl withInternalUrl:(NSURL*)internalUrl {
         if(![LinphoneManager isLcReady]) {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot send message: Linphone core not ready"];
             return FALSE;
    @@ -290,7 +293,11 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         ChatModel *chat = [[ChatModel alloc] init];
         [chat setRemoteContact:remoteAddress];
         [chat setLocalContact:@""];
    -    [chat setMessage:message];
    +    if(internalUrl == nil) {
    +        [chat setMessage:message];
    +    } else {
    +        [chat setMessage:[internalUrl absoluteString]];
    +    }
         [chat setDirection:[NSNumber numberWithInt:0]];
         [chat setTime:[NSDate date]];
         [chat setRead:[NSNumber numberWithInt:1]];
    @@ -301,9 +308,9 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         
         LinphoneChatMessage* msg = linphone_chat_room_create_message(chatRoom, [message UTF8String]);
     	linphone_chat_message_set_user_data(msg, chat);
    -    if (url) {
    -		linphone_chat_message_set_external_body_url(msg, [url UTF8String]);
    -	} 
    +    if(externalUrl) {
    +        linphone_chat_message_set_external_body_url(msg, [[externalUrl absoluteString] UTF8String]);
    +    }
     	linphone_chat_room_send_message2(chatRoom, msg, message_status, self);
         return TRUE;
     }
    @@ -329,19 +336,6 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
                 }
                 ms_free(fromStr);
             }
    -
    -		if ([[notif userInfo] objectForKey:@"external_body_url"]) {
    -			NSString *pendingFileUrl = [[[notif userInfo] objectForKey:@"external_body_url"] retain];
    -            
    -			DTActionSheet *sheet = [[[DTActionSheet alloc] initWithTitle:NSLocalizedString(@"Incoming file stored to your photo library",nil)] autorelease];
    -            [sheet addButtonWithTitle:NSLocalizedString(@"Accept",nil) block:^(){
    -                imageSharing = [ImageSharing imageSharingDownload:[NSURL URLWithString:pendingFileUrl] delegate:self];
    -                [footerView setHidden:TRUE];
    -                [transferView setHidden:FALSE];
    -            }];
    -            [sheet addCancelButtonWithTitle:NSLocalizedString(@"Ignore",nil)];
    -            [sheet showInView:[PhoneMainView instance].view];
    -		}
     	} else {
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Invalid textReceivedEvent"];
         }
    @@ -354,8 +348,13 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         if(editButton.selected) {
             [tableController setEditing:FALSE animated:TRUE];
             [editButton setOff];
    -        [listTapGestureRecognizer setEnabled:TRUE];
         }
    +    [listTapGestureRecognizer setEnabled:TRUE];
    +    return TRUE;
    +}
    +
    +- (BOOL)growingTextViewShouldEndEditing:(HPGrowingTextView *)growingTextView {
    +    [listTapGestureRecognizer setEnabled:FALSE];
         return TRUE;
     }
     
    @@ -391,13 +390,12 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     }
     
     - (IBAction)onEditClick:(id)event {
    -    [listTapGestureRecognizer setEnabled:[tableController isEditing]];
         [tableController setEditing:![tableController isEditing] animated:TRUE];
         [messageField resignFirstResponder];
     }
     
     - (IBAction)onSendClick:(id)event {
    -    if([self sendMessage:[messageField text] withExterlBodyUrl:nil]) {
    +    if([self sendMessage:[messageField text] withExterlBodyUrl:nil withInternalUrl:nil]) {
             [messageField setText:@""];
             [self onMessageChange:nil];
         }
    @@ -428,7 +426,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
                 
                 // Displays a control that allows the user to choose picture or
                 // movie capture, if both are available:
    -            controller.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:type];
    +            controller.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
                 
                 // Hides the controls for moving & scaling pictures, or for
                 // trimming movies. To instead show the controls, use YES.
    @@ -445,6 +443,30 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     }
     
     
    +#pragma mark ChatRoomDelegate
    +
    +- (BOOL)chatRoomStartImageDownload:(NSURL*)url userInfo:(id)userInfo {
    +    if(imageSharing == nil) {
    +        imageSharing = [ImageSharing imageSharingDownload:url delegate:self userInfo:userInfo];
    +        [footerView setHidden:TRUE];
    +        [transferView setHidden:FALSE];
    +        return TRUE;
    +    }
    +    return FALSE;
    +}
    +
    +- (BOOL)chatRoomStartImageUpload:(UIImage*)image url:(NSURL*)url{
    +    if(imageSharing == nil) {
    +        NSString *urlString = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"];
    +        imageSharing = [ImageSharing imageSharingUpload:[NSURL URLWithString:urlString] image:image delegate:self userInfo:url];
    +        [footerView setHidden:TRUE];
    +        [transferView setHidden:FALSE];
    +        return TRUE;
    +    }
    +    return FALSE;
    +}
    +
    +
     #pragma mark ImageSharingDelegate
     
     - (void)imageSharingProgress:(ImageSharing*)aimageSharing progress:(float)progress {
    @@ -486,7 +508,9 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     }
     
     - (void)imageSharingUploadDone:(ImageSharing*)aimageSharing url:(NSURL*)url{
    -    [self sendMessage:NSLocalizedString(@"Image sent", nil) withExterlBodyUrl:[url absoluteString]];
    +    NSURL *imageURL = [aimageSharing userInfo];
    +    
    +    [self sendMessage:nil withExterlBodyUrl:url withInternalUrl:imageURL];
         
         [footerView setHidden:FALSE];
     	[transferView setHidden:TRUE];
    @@ -497,30 +521,59 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         [footerView setHidden:FALSE];
     	[transferView setHidden:TRUE];
         
    -    [photoLibrary writeImageToSavedPhotosAlbum:(CGImageRef)image
    -                                 metadata:nil
    -                          completionBlock:^(NSURL *assetURL, NSError *error){
    -                              if (error) {
    -                                  [LinphoneLogger log:LinphoneLoggerError format:@"Cannot save image data downloaded [%@]",[error localizedDescription]];
    -                              } else {
    -                                  [LinphoneLogger log:LinphoneLoggerLog format:@"Image saved to [%@]",[assetURL absoluteString]];
    -                              }
    -                              ImageViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ImageViewController compositeViewDescription] push:TRUE], ImageViewController);
    -                              if(controller != nil) {
    -                                  [controller setImage:image];
    -                              }
    -                          }];
    +    ChatModel *chat = (ChatModel *)[imageSharing userInfo];
    +    [[LinphoneManager instance].photoLibrary writeImageToSavedPhotosAlbum:image.CGImage
    +                                                                 metadata:nil
    +                                                          completionBlock:^(NSURL *assetURL, NSError *error){
    +                                                              if (error) {
    +                                                                  [LinphoneLogger log:LinphoneLoggerError format:@"Cannot save image data downloaded [%@]", [error localizedDescription]];
    +                                                                  
    +                                                                  UIAlertView* errorAlert = [UIAlertView alloc];
    +                                                                  [errorAlert	initWithTitle:NSLocalizedString(@"Transfer error", nil)
    +                                                                                    message:NSLocalizedString(@"Cannot write image to photo library", nil)
    +                                                                                   delegate:nil
    +                                                                          cancelButtonTitle:NSLocalizedString(@"Ok",nil)
    +                                                                          otherButtonTitles:nil ,nil];
    +                                                                  [errorAlert show];
    +                                                                  [errorAlert release];
    +                                                                  return;
    +                                                              }
    +                                                              [LinphoneLogger log:LinphoneLoggerLog format:@"Image saved to [%@]", [assetURL absoluteString]];
    +                                                              [chat setMessage:[assetURL absoluteString]];
    +                                                              [chat update];
    +                                                              [tableController updateChatEntry:chat];
    +                                                          }];
         imageSharing = NULL;
     }
     
     
     #pragma mark ImagePickerDelegate
     
    -- (void)imagePickerDelegateImage:(UIImage*)image {
    -    NSString *urlString = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"];
    -    imageSharing = [ImageSharing imageSharingUpload:[NSURL URLWithString:urlString] image:image delegate:self];
    -    [footerView setHidden:TRUE];
    -	[transferView setHidden:FALSE];
    +- (void)imagePickerDelegateImage:(UIImage*)image info:(NSDictionary *)info {
    +    NSURL *url = [info valueForKey:UIImagePickerControllerReferenceURL];
    +    if(url != nil) {
    +        [self chatRoomStartImageUpload:image url:url];
    +    } else {
    +        [[LinphoneManager instance].photoLibrary writeImageToSavedPhotosAlbum:image.CGImage
    +                                                                     metadata:nil
    +                                                              completionBlock:^(NSURL *assetURL, NSError *error){
    +                                                                  if (error) {
    +                                                                      [LinphoneLogger log:LinphoneLoggerError format:@"Cannot save image data downloaded [%@]", [error localizedDescription]];
    +                                                                      
    +                                                                      UIAlertView* errorAlert = [UIAlertView alloc];
    +                                                                      [errorAlert	initWithTitle:NSLocalizedString(@"Transfer error", nil)
    +                                                                                        message:NSLocalizedString(@"Cannot write image to photo library", nil)
    +                                                                                       delegate:nil
    +                                                                              cancelButtonTitle:NSLocalizedString(@"Ok",nil)
    +                                                                              otherButtonTitles:nil ,nil];
    +                                                                      [errorAlert show];
    +                                                                      [errorAlert release];
    +                                                                      return;
    +                                                                  }
    +                                                                  [LinphoneLogger log:LinphoneLoggerLog format:@"Image saved to [%@]", [assetURL absoluteString]];
    +                                                                  [self chatRoomStartImageUpload:image url:assetURL];
    +                                                              }];
    +    }
     }
     
     
    diff --git a/Classes/ImagePickerViewController.h b/Classes/ImagePickerViewController.h
    index 4acdebf21..fd15af4bc 100644
    --- a/Classes/ImagePickerViewController.h
    +++ b/Classes/ImagePickerViewController.h
    @@ -21,14 +21,20 @@
     
     @protocol ImagePickerDelegate 
     
    -- (void)imagePickerDelegateImage:(UIImage*)image;
    +- (void)imagePickerDelegateImage:(UIImage*)image info:(NSDictionary *)info;
     
     @end
     
    -@interface ImagePickerViewController : UIImagePickerController  {
    +@interface ImagePickerViewController : UIViewController  {
    +    @private
    +    UIImagePickerController *pickerController;
    +    UIPopoverController *popoverController;
     }
     
    -@property (nonatomic, retain) id imagePickerDelegate;
    +@property(nonatomic, retain) id imagePickerDelegate;
    +@property(nonatomic)           UIImagePickerControllerSourceType     sourceType;
    +@property(nonatomic,copy)      NSArray                              *mediaTypes;
    +@property(nonatomic)           BOOL                                  allowsEditing;
     
     + (void)promptSelectSource:(void (^)(UIImagePickerControllerSourceType))block;
     
    diff --git a/Classes/ImagePickerViewController.m b/Classes/ImagePickerViewController.m
    index 46be9914b..c31e48906 100644
    --- a/Classes/ImagePickerViewController.m
    +++ b/Classes/ImagePickerViewController.m
    @@ -24,6 +24,30 @@
     @implementation ImagePickerViewController
     
     @synthesize imagePickerDelegate;
    +@synthesize sourceType;
    +@synthesize mediaTypes;
    +@synthesize allowsEditing;
    +
    +
    +#pragma mark - Lifecycle Functions
    +
    +- (id)init {
    +    self = [super init];
    +    if (self != nil) {
    +        pickerController = [[UIImagePickerController alloc] init];
    +        if([LinphoneManager runningOnIpad]) {
    +            popoverController = [[UIPopoverController alloc] initWithContentViewController:pickerController];
    +        }
    +    }
    +    return self;
    +}
    +
    +- (void)dealloc {
    +    [pickerController release];
    +    [popoverController release];
    +    
    +    [super dealloc];
    +}
     
     
     #pragma mark - UICompositeViewDelegate Functions
    @@ -50,7 +74,55 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     - (void)viewDidLoad {
         [super viewDidLoad];
    -    [self setDelegate:self];
    +    
    +    [self.view setAutoresizingMask: UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];
    +    if(popoverController == nil) {
    +        [pickerController.view setFrame:[self.view bounds]];
    +        [self.view addSubview:[pickerController view]];
    +    } else {
    +        [popoverController setDelegate:self];
    +    }
    +    [pickerController setDelegate:self];
    +}
    +
    +- (void)viewDidAppear:(BOOL)animated {
    +    [super viewDidAppear:animated];
    +    if(popoverController != nil) {
    +        [popoverController presentPopoverFromRect:CGRectZero inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:FALSE];
    +    }
    +}
    +
    +- (void)viewWillDisappear:(BOOL)animated {
    +    [super viewWillDisappear:animated];
    +    if(popoverController != nil) {
    +        [popoverController dismissPopoverAnimated: NO];
    +    }
    +}
    +
    +#pragma mark - Property Functions
    +
    +- (BOOL)allowsEditing {
    +    return pickerController.allowsEditing;
    +}
    +
    +- (void)setAllowsEditing:(BOOL)aallowsEditing {
    +    pickerController.allowsEditing = aallowsEditing;
    +}
    +
    +- (UIImagePickerControllerSourceType)sourceType {
    +    return pickerController.sourceType;
    +}
    +
    +- (void)setSourceType:(UIImagePickerControllerSourceType)asourceType {
    +    pickerController.sourceType = asourceType;
    +}
    +
    +- (NSArray *)mediaTypes {
    +    return pickerController.mediaTypes;
    +}
    +
    +- (void)setMediaTypes:(NSArray *)amediaTypes {
    +    pickerController.mediaTypes = amediaTypes;
     }
     
     
    @@ -88,7 +160,7 @@ static UICompositeViewDescription *compositeDescription = nil;
             image = [info objectForKey:UIImagePickerControllerOriginalImage];
         }
         if(image != nil && imagePickerDelegate != nil) {
    -        [imagePickerDelegate imagePickerDelegateImage:image];
    +        [imagePickerDelegate imagePickerDelegateImage:image info:info];
         }
         [self dismiss];
     }
    @@ -97,4 +169,9 @@ static UICompositeViewDescription *compositeDescription = nil;
         [self dismiss];
     }
     
    +- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)apopoverController {
    +    [self dismiss];
    +    return TRUE;
    +}
    +
     @end
    diff --git a/Classes/ImageSharing.h b/Classes/ImageSharing.h
    index 13cf22fc0..5949cc8a6 100644
    --- a/Classes/ImageSharing.h
    +++ b/Classes/ImageSharing.h
    @@ -38,11 +38,13 @@
         int statusCode;
     }
     
    -+ (id)imageSharingUpload:(NSURL*)url image:(UIImage*)image delegate:(id)delegate;
    -+ (id)imageSharingDownload:(NSURL*)url delegate:(id)delegate;
    ++ (id)imageSharingUpload:(NSURL*)url image:(UIImage*)image delegate:(id)delegate userInfo:(id)userInfo;
    ++ (id)imageSharingDownload:(NSURL*)url delegate:(id)delegate userInfo:(id)userInfo;
     
     - (void)cancel;
     
    +@property (nonatomic, retain) id userInfo;
    +
     @property (nonatomic, readonly) BOOL upload;
     @property (nonatomic, readonly) NSMutableData* data;
     @property (nonatomic, readonly) NSURLConnection* connection;
    diff --git a/Classes/ImageSharing.m b/Classes/ImageSharing.m
    index b0aee4b06..403addd20 100644
    --- a/Classes/ImageSharing.m
    +++ b/Classes/ImageSharing.m
    @@ -26,13 +26,14 @@
     @synthesize connection;
     @synthesize data;
     @synthesize upload;
    -
    +@synthesize userInfo;
     
     #pragma mark - Lifecycle Functions
     
    -+ (id)imageSharingUpload:(NSURL*)url image:(UIImage*)image delegate:(id)delegate {
    ++ (id)imageSharingUpload:(NSURL*)url image:(UIImage*)image delegate:(id)delegate userInfo:(id)auserInfo{
         ImageSharing *imgs = [[ImageSharing alloc] init];
         if(imgs != nil) {
    +        imgs.userInfo = auserInfo;
             imgs->upload = TRUE;
             imgs->delegate = [delegate retain];
             imgs->data = [[NSMutableData alloc] init];
    @@ -44,9 +45,10 @@
         return imgs;
     }
     
    -+ (id)imageSharingDownload:(NSURL*)url delegate:(id)delegate {
    ++ (id)imageSharingDownload:(NSURL*)url delegate:(id)delegate userInfo:(id)auserInfo{
         ImageSharing *imgs = [[ImageSharing alloc] init];
         if(imgs != nil) {
    +        imgs.userInfo = auserInfo;
             imgs->upload = FALSE;
             imgs->delegate = [delegate retain];
             imgs->data = [[NSMutableData alloc] init];
    @@ -62,6 +64,7 @@
         [connection release];
         [data release];
         [delegate release];
    +    [userInfo release];
         [super dealloc];
     }
     
    diff --git a/Classes/LinphoneManager.h b/Classes/LinphoneManager.h
    index 799d4bba0..7ba9318ce 100644
    --- a/Classes/LinphoneManager.h
    +++ b/Classes/LinphoneManager.h
    @@ -21,6 +21,8 @@
     #import 
     #import 
     #import 
    +#import 
    +
     #import 
     
     #import "IASKSettingsReader.h"
    @@ -140,6 +142,7 @@ typedef struct _LinphoneManagerSounds {
     @property (readonly) LinphoneManagerSounds sounds;
     @property (readonly) NSMutableArray *logs;
     @property (nonatomic, assign) BOOL speakerEnabled;
    +@property (readonly) ALAssetsLibrary *photoLibrary;
     
     @end
     
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index db073f120..f376f9956 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -87,6 +87,7 @@ extern  void libmsbcg729_init();
     @synthesize sounds;
     @synthesize logs;
     @synthesize speakerEnabled;
    +@synthesize photoLibrary;
     
     struct codec_name_pref_table{
         const char *name;
    @@ -218,6 +219,7 @@ struct codec_name_pref_table codec_pref_table[]={
             [self openDatabase];
             [self copyDefaultSettings];
             lastRemoteNotificationTime=0;
    +        photoLibrary = [[ALAssetsLibrary alloc] init];
         }
         return self;
     }
    @@ -239,6 +241,7 @@ struct codec_name_pref_table codec_pref_table[]={
     		[LinphoneLogger logc:LinphoneLoggerError format:"cannot un register route change handler [%ld]", lStatus];
     	}
         
    +    [photoLibrary release];
         [super dealloc];
     }
     
    @@ -433,7 +436,7 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo
         [chat setLocalContact:@""];
         [chat setRemoteContact:[NSString stringWithUTF8String:fromStr]];
         if (linphone_chat_message_get_external_body_url(msg)) {
    -		[chat setMessage:NSLocalizedString(@"Incoming file",nil)];
    +		[chat setMessage:[NSString stringWithUTF8String:linphone_chat_message_get_external_body_url(msg)]];
     	} else {
     		[chat setMessage:[NSString stringWithUTF8String:linphone_chat_message_get_text(msg)]];
         }
    @@ -443,17 +446,12 @@ static void linphone_iphone_registration_state(LinphoneCore *lc, LinphoneProxyCo
         [chat create];
         
         ms_free(fromStr);
    -    NSString* ext_body_url=nil;
    -	if (linphone_chat_message_get_external_body_url(msg)) {
    -		ext_body_url=[NSString stringWithUTF8String:linphone_chat_message_get_external_body_url(msg)];
    -	}
         // Post event
         NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:
     							[NSValue valueWithPointer:room], @"room", 
     							[NSValue valueWithPointer:linphone_chat_message_get_from(msg)], @"from",
     							chat.message, @"message", 
     							chat, @"chat",
    -							ext_body_url,@"external_body_url",
                                nil];
         [[NSNotificationCenter defaultCenter] postNotificationName:kLinphoneTextReceived object:self userInfo:dict];
         [chat release];
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h
    index 3350c8718..94a6303b1 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.h
    +++ b/Classes/LinphoneUI/UIChatRoomCell.h
    @@ -20,6 +20,8 @@
     #import 
     
     #import "ChatModel.h"
    +#import "ChatRoomTableViewController.h"
    +
     
     @interface UIChatRoomCell : UITableViewCell {
     }
    @@ -33,10 +35,15 @@
     @property (nonatomic, retain) IBOutlet UIButton *deleteButton;
     @property (nonatomic, retain) IBOutlet UILabel *dateLabel;
     @property (nonatomic, retain) IBOutlet UIImageView* statusImage;
    +@property (nonatomic, retain) IBOutlet UIButton* downloadButton;
    +
     - (id)initWithIdentifier:(NSString*)identifier;
     + (CGFloat)height:(ChatModel*)chat width:(int)width;
     
    +@property (nonatomic, retain) id chatRoomDelegate;
     
     - (IBAction)onDeleteClick:(id)event;
    +- (IBAction)onDownloadClick:(id)event;
    +- (IBAction)onImageClick:(id)event;
     
     @end
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m
    index 0ccfcce18..22862ed2e 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.m
    +++ b/Classes/LinphoneUI/UIChatRoomCell.m
    @@ -19,7 +19,11 @@
     
     #import "UIChatRoomCell.h"
     #import "Utils.h"
    +#import "LinphoneManager.h"
    +#import "PhoneMainView.h"
     
    +#import 
    +#import 
     #import 
     #include "linphonecore.h"
     
    @@ -34,6 +38,8 @@
     @synthesize dateLabel;
     @synthesize chat;
     @synthesize statusImage;
    +@synthesize downloadButton;
    +@synthesize chatRoomDelegate;
     
     static const CGFloat CELL_MIN_HEIGHT = 40.0f;
     static const CGFloat CELL_MIN_WIDTH = 150.0f;
    @@ -58,6 +64,7 @@ static UIFont *CELL_FONT = nil;
     }
     
     - (void)dealloc {
    +    [chatRoomDelegate release];
         [backgroundImage release];
         [innerView release];
         [bubbleView release];
    @@ -67,6 +74,7 @@ static UIFont *CELL_FONT = nil;
         [dateLabel release];
         [statusImage release];
         [chat release];
    +    [downloadButton release];
         
         [super dealloc];
     }
    @@ -92,15 +100,39 @@ static UIFont *CELL_FONT = nil;
             [LinphoneLogger logc:LinphoneLoggerWarning format:"Cannot update chat room cell: null chat"];
             return;
         }
    -    if(true/*Change when image will be supported */) {
    +    
    +    if([UIChatRoomCell isExternalImage:[chat message]]) {
    +        [messageLabel setHidden:TRUE];
    +        
    +        [messageImageView setImage:nil];
    +        [messageImageView setHidden:TRUE];
    +        
    +        [downloadButton setHidden:FALSE];
    +    } else if([UIChatRoomCell isInternalImage:[chat message]]) {
    +        [messageLabel setHidden:TRUE];
    +        
    +        [[LinphoneManager instance].photoLibrary assetForURL:[NSURL URLWithString:[chat message]] resultBlock:^(ALAsset *asset) {
    +            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, (unsigned long)NULL), ^(void) {
    +                ALAssetRepresentation* representation = [asset defaultRepresentation];
    +                UIImage *image = [UIImage imageWithCGImage:[representation fullResolutionImage]];
    +                dispatch_async(dispatch_get_main_queue(), ^{
    +                    [messageImageView setImage:image];
    +                });
    +            });
    +        } failureBlock:^(NSError *error) {
    +            [LinphoneLogger log:LinphoneLoggerError format:@"Can't read image"];
    +        }];
    +        
    +        [messageImageView setHidden:FALSE];
    +        [downloadButton setHidden:TRUE];
    +    } else {
             [messageLabel setHidden:FALSE];
             [messageLabel setText:[chat message]];
             
    +        [messageImageView setImage:nil];
             [messageImageView setHidden:TRUE];
    -    } else {
    -        [messageLabel setHidden:TRUE];
             
    -        [messageImageView setHidden:FALSE];
    +        [downloadButton setHidden:TRUE];
         }
         
         // Date
    @@ -112,16 +144,16 @@ static UIFont *CELL_FONT = nil;
         [dateLabel setText:[dateFormatter stringFromDate:[chat time]]];
         [dateFormatter release];
     	if ([chat.state intValue] == LinphoneChatMessageStateInProgress) {
    -		[statusImage setImage:[UIImage imageNamed:@"chat_message_inprogress.png"] ];
    -		statusImage.hidden=FALSE;
    +		[statusImage setImage:[UIImage imageNamed:@"chat_message_inprogress.png"]];
    +		statusImage.hidden = FALSE;
     	} else if ([chat.state intValue] == LinphoneChatMessageStateDelivered) {
    -		[statusImage setImage:[UIImage imageNamed:@"chat_message_delivered.png"] ];
    -		statusImage.hidden=FALSE;
    +		[statusImage setImage:[UIImage imageNamed:@"chat_message_delivered.png"]];
    +		statusImage.hidden = FALSE;
     	} else if ([chat.state intValue] == LinphoneChatMessageStateNotDelivered) {
     		[statusImage setImage:[UIImage imageNamed:@"chat_message_not_delivered.png"]];
    -		statusImage.hidden=FALSE;
    +		statusImage.hidden = FALSE;
     	} else {
    -		statusImage.hidden=TRUE;
    +		statusImage.hidden = TRUE;
     	}
     }
     
    @@ -144,9 +176,17 @@ static UIFont *CELL_FONT = nil;
         }
     }
     
    ++ (BOOL)isExternalImage:(NSString *)message {
    +    return [message hasPrefix:@"http:"] || [message hasPrefix:@"https:"];
    +}
    +
    ++ (BOOL)isInternalImage:(NSString *)message {
    +    return [message hasPrefix:@"assets-library:"];
    +}
    +
     + (CGSize)viewSize:(ChatModel*)chat width:(int)width {
         CGSize messageSize;
    -    if(true/*Change when image will be supported */) {
    +    if(!([UIChatRoomCell isExternalImage:[chat message]] || [UIChatRoomCell isInternalImage:[chat message]])) {
             if(CELL_FONT == nil) {
                 CELL_FONT = [UIFont systemFontOfSize:CELL_FONT_SIZE];
             }
    @@ -218,4 +258,15 @@ static UIFont *CELL_FONT = nil;
         }
     }
     
    +- (IBAction)onDownloadClick:(id)event {
    +    [chatRoomDelegate chatRoomStartImageDownload:[NSURL URLWithString:chat.message] userInfo:chat];
    +}
    +
    +- (IBAction)onImageClick:(id)event {
    +    ImageViewController *controller = DYNAMIC_CAST([[PhoneMainView instance] changeCurrentView:[ImageViewController compositeViewDescription] push:TRUE], ImageViewController);
    +    if(controller != nil) {
    +        [controller setImage:messageImageView.image];
    +    }
    +}
    +
     @end
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib
    index 7710f22af..1faf62b94 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.xib
    +++ b/Classes/LinphoneUI/UIChatRoomCell.xib
    @@ -15,6 +15,7 @@
     			IBUIButton
     			IBUIImageView
     			IBUILabel
    +			IBUITapGestureRecognizer
     			IBUIView
     		
     		
    @@ -69,7 +70,7 @@
     										
     										_NS:9
     										1
    -										NO
    +										
     										IBCocoaTouchFramework
     									
     									
    @@ -78,7 +79,7 @@
     										{294, 104}
     										
     										
    -										
    +										
     										_NS:9
     										
     											3
    @@ -109,6 +110,41 @@
     										
     										NO
     									
    +									
    +										
    +										301
    +										{{81, 33}, {132, 37}}
    +										
    +										
    +										
    +										_NS:9
    +										NO
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										Download image
    +										
    +											3
    +											MQA
    +										
    +										
    +											1
    +											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +										
    +										
    +											3
    +											MC41AA
    +										
    +										
    +											2
    +											15
    +										
    +										
    +											Helvetica-Bold
    +											15
    +											16
    +										
    +									
     								
     								{294, 104}
     								
    @@ -117,7 +153,6 @@
     								_NS:9
     								
     								YES
    -								NO
     								IBCocoaTouchFramework
     							
     							
    @@ -135,10 +170,7 @@
     								NO
     								IBCocoaTouchFramework
     								09/09/2009 at 09:09
    -								
    -									3
    -									MC41AA
    -								
    +								
     								
     								0
     								8
    @@ -194,15 +226,8 @@
     									NSImage
     									list_delete_default.png
     								
    -								
    -									2
    -									15
    -								
    -								
    -									Helvetica-Bold
    -									15
    -									16
    -								
    +								
    +								
     							
     						
     						{{13, 13}, {294, 114}}
    @@ -245,6 +270,7 @@
     				
     				IBCocoaTouchFramework
     			
    +			
     		
     		
     			
    @@ -328,6 +354,14 @@
     					
     					31
     				
    +				
    +					
    +						downloadButton
    +						
    +						
    +					
    +					34
    +				
     				
     					
     						onDeleteClick:
    @@ -337,12 +371,39 @@
     					
     					32
     				
    +				
    +					
    +						gestureRecognizers
    +						
    +						
    +						NSArray
    +						YES
    +					
    +					41
    +				
    +				
    +					
    +						onDownloadClick:
    +						
    +						
    +						7
    +					
    +					39
    +				
    +				
    +					
    +						onImageClick:
    +						
    +						
    +					
    +					42
    +				
     			
     			
     				
     					
     						0
    -						
    +						
     						
     						
     					
    @@ -421,6 +482,7 @@
     						
     							
     							
    +							
     						
     						
     						messageView
    @@ -428,6 +490,7 @@
     					
     						28
     						
    +						
     						
     						messageImageView
     					
    @@ -437,6 +500,17 @@
     						
     						messageLabel
     					
    +					
    +						33
    +						
    +						
    +						downloadButton
    +					
    +					
    +						40
    +						
    +						
    +					
     				
     			
     			
    @@ -455,6 +529,8 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     			
    @@ -462,29 +538,38 @@
     			
     			
     			
    -			32
    +			42
     		
     		
     			
     				
     					UIChatRoomCell
     					UITableViewCell
    -					
    -						onDeleteClick:
    -						id
    -					
    -					
    -						onDeleteClick:
    -						
    +					
    +						id
    +						id
    +						id
    +					
    +					
    +						
     							onDeleteClick:
     							id
     						
    -					
    +						
    +							onDownloadClick:
    +							id
    +						
    +						
    +							onImageClick:
    +							id
    +						
    +					
     					
     						UIImageView
     						UIView
     						UILabel
     						UIButton
    +						UIButton
     						UIView
     						UIImageView
     						UILabel
    @@ -507,6 +592,10 @@
     							deleteButton
     							UIButton
     						
    +						
    +							downloadButton
    +							UIButton
    +						
     						
     							innerView
     							UIView
    diff --git a/Classes/LinphoneUI/UIContactDetailsHeader.m b/Classes/LinphoneUI/UIContactDetailsHeader.m
    index 3a2544958..96a1a95e9 100644
    --- a/Classes/LinphoneUI/UIContactDetailsHeader.m
    +++ b/Classes/LinphoneUI/UIContactDetailsHeader.m
    @@ -264,7 +264,7 @@
     
     #pragma mark - ContactDetailsImagePickerDelegate Functions
     
    -- (void)imagePickerDelegateImage:(UIImage*)image {
    +- (void)imagePickerDelegateImage:(UIImage*)image info:(NSDictionary *)info{
         NSError* error = NULL;
         if(!ABPersonRemoveImageData(contact, (CFErrorRef*)error)) {
             [LinphoneLogger log:LinphoneLoggerLog format:@"Can't add entry: %@", [error localizedDescription]];
    diff --git a/Classes/en.lproj/ChatRoomViewController.xib b/Classes/en.lproj/ChatRoomViewController.xib
    index dfb378fa5..1972001d5 100644
    --- a/Classes/en.lproj/ChatRoomViewController.xib
    +++ b/Classes/en.lproj/ChatRoomViewController.xib
    @@ -156,7 +156,7 @@
     							
     							
     								
    -								-2147483356
    +								-2147483382
     								
     									
     										
    @@ -166,10 +166,7 @@
     										
     										
     										_NS:9
    -										
    -											1
    -											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    -										
    +										
     										NO
     										IBCocoaTouchFramework
     										
    @@ -179,7 +176,7 @@
     									
     									
     										
    -										292
    +										297
     										{{250, 0}, {70, 59}}
     										
     										
    @@ -214,7 +211,7 @@
     									
     									
     										
    -										292
    +										298
     										{{20, 25}, {213, 9}}
     										
     										
    @@ -274,6 +271,7 @@
     										{{250, 0}, {70, 59}}
     										
     										
    +										
     										_NS:9
     										NO
     										
    @@ -639,6 +637,14 @@
     					
     					86
     				
    +				
    +					
    +						transferBackgroundImage
    +						
    +						
    +					
    +					88
    +				
     				
     					
     						dataSource
    @@ -930,7 +936,7 @@
     						83
     						
     						
    -						footerBackgroundImage
    +						transfertBackgroundImage
     					
     				
     			
    @@ -976,7 +982,7 @@
     			
     			
     			
    -			87
    +			88
     		
     		
     			
    @@ -1047,6 +1053,7 @@
     						UIButton
     						UIButton
     						ChatRoomTableViewController
    +						UIImageView
     						UIView
     					
     					
    @@ -1114,6 +1121,10 @@
     							tableController
     							ChatRoomTableViewController
     						
    +						
    +							transferBackgroundImage
    +							UIImageView
    +						
     						
     							transferView
     							UIView
    diff --git a/Classes/en.lproj/ImageViewController.xib b/Classes/en.lproj/ImageViewController.xib
    index 0e9bb3507..7e003d3c6 100644
    --- a/Classes/en.lproj/ImageViewController.xib
    +++ b/Classes/en.lproj/ImageViewController.xib
    @@ -42,7 +42,6 @@
     						{{0, 44}, {320, 416}}
     						
     						
    -						
     						_NS:9
     						
     							3
    @@ -58,7 +57,7 @@
     						
     							
     								
    -								292
    +								290
     								{320, 44}
     								
     								
    diff --git a/Classes/fr.lproj/ChatRoomViewController.xib b/Classes/fr.lproj/ChatRoomViewController.xib
    index effff9788..a07b5d6da 100644
    --- a/Classes/fr.lproj/ChatRoomViewController.xib
    +++ b/Classes/fr.lproj/ChatRoomViewController.xib
    @@ -151,7 +151,7 @@
     							
     							
     								
    -								-2147483356
    +								-2147483382
     								
     									
     										
    @@ -160,10 +160,7 @@
     										
     										
     										_NS:9
    -										
    -											1
    -											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    -										
    +										
     										NO
     										IBCocoaTouchFramework
     										
    @@ -173,7 +170,7 @@
     									
     									
     										
    -										292
    +										297
     										{{250, 0}, {70, 59}}
     										
     										
    @@ -207,7 +204,7 @@
     									
     									
     										
    -										292
    +										298
     										{{20, 25}, {213, 9}}
     										
     										
    @@ -615,6 +612,14 @@
     					
     					86
     				
    +				
    +					
    +						transferBackgroundImage
    +						
    +						
    +					
    +					88
    +				
     				
     					
     						dataSource
    @@ -906,7 +911,7 @@
     						83
     						
     						
    -						footerBackgroundImage
    +						transfertBackgroundImage
     					
     				
     			
    @@ -952,7 +957,7 @@
     			
     			
     			
    -			87
    +			88
     		
     		
     			
    @@ -1023,6 +1028,7 @@
     						UIButton
     						UIButton
     						ChatRoomTableViewController
    +						UIImageView
     						UIView
     					
     					
    @@ -1090,6 +1096,10 @@
     							tableController
     							ChatRoomTableViewController
     						
    +						
    +							transferBackgroundImage
    +							UIImageView
    +						
     						
     							transferView
     							UIView
    diff --git a/Classes/fr.lproj/ImageViewController.xib b/Classes/fr.lproj/ImageViewController.xib
    index 2cd6fe824..071b3cda5 100644
    --- a/Classes/fr.lproj/ImageViewController.xib
    +++ b/Classes/fr.lproj/ImageViewController.xib
    @@ -56,7 +56,7 @@
     						
     							
     								
    -								292
    +								290
     								{320, 44}
     								
     								
    diff --git a/Resources/en.lproj/Localizable.strings b/Resources/en.lproj/Localizable.strings
    index 77e98c0aebfadcfe5429948995256911fe4b7664..d1ab447f8b2aa74569ea31a4e87ceb1964227673 100644
    GIT binary patch
    delta 112
    zcmX?5)mORUDgWfv+&t3d3`Go?3?&Sy3<^Lxmm!fM9n3Ca$e(;hPF>R(D3S++`9L)a
    h4ER;cPxh1#n_Mfvv-v&$D!$E&o9v
    
    delta 124
    zcmeCHJW#daDgWeLL9Wer1y=D*j+Wz_{9lekR)L|Ip@boyp@<=sA%#H!%vNBi1d5b0
    s6iwz4P@lY7Mu-TNF#@HVo8?2;CkqNFF$PRd5Gb51ugSOhvD#`;0OrRc$p8QV
    
    diff --git a/Resources/fr.lproj/Localizable.strings b/Resources/fr.lproj/Localizable.strings
    index 4afcd5a69212f0f77d901698fe28ad2f97fa0ba2..065a3917454298f960d0283f0304588d3bee423a 100644
    GIT binary patch
    delta 126
    zcmZ2eccFH}CV|NwJUsH{3`Go?3?&Sy3<^Lxmm!fM9n3Ca$OnoPOt#lhp8SSaf>C|)
    zMuJp+iSRAQOr=3u^2a0|1s-9D@J=
    
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index fe6bc31b8..6a88a91eb 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -212,17 +212,17 @@
     					
     						backup
     						
    -							15
    +							16
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ChatRoomViewController/15/ChatRoomViewController.xib
    +								Classes/ChatRoomViewController/16/ChatRoomViewController.xib
     							
     						
     					
     					change date
    -					2012-09-14T14:45:49Z
    +					2012-09-18T13:03:28Z
     					changed values
     					
     					class
    @@ -232,7 +232,7 @@
     					flags
     					0
     					hash
    -					1f8683826a86cb2ad7e55cc5c9dcafaf
    +					fb9acb898a88e8d219dfd663e9b8eb19
     
     					name
     					ChatRoomViewController.xib
    @@ -568,9 +568,9 @@
     					versions
     					
     						en
    -						15
    +						16
     						fr
    -						15
    +						16
     					
     				
     				
    @@ -4281,17 +4281,17 @@
     					
     						backup
     						
    -							3
    +							4
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ImageViewController/3/ImageViewController.xib
    +								Classes/ImageViewController/4/ImageViewController.xib
     							
     						
     					
     					change date
    -					2012-09-14T13:00:17Z
    +					2012-09-18T12:55:28Z
     					changed values
     					
     					class
    @@ -4301,7 +4301,7 @@
     					flags
     					0
     					hash
    -					724a8c5069c0fbde9b1e56ef37a42cba
    +					cf8736251f03474edd9a8c46b942ae63
     
     					name
     					ImageViewController.xib
    @@ -4340,9 +4340,9 @@
     					versions
     					
     						en
    -						3
    +						4
     						fr
    -						3
    +						4
     					
     				
     			
    @@ -7354,7 +7354,7 @@
     						
     					
     					change date
    -					2012-09-14T11:57:58Z
    +					2012-09-18T14:20:34Z
     					changed values
     					
     					class
    @@ -7364,7 +7364,7 @@
     					flags
     					0
     					hash
    -					dcecc0eedf9132813ef8a938d07d7917
    +					9801969515d6fafb3f05d8b036f9e80d
     
     					name
     					Localizable.strings
    @@ -7898,6 +7898,31 @@ La cause était: %2$@
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Cannot write image to photo library
    +							localizations
    +							
    +								en
    +								Cannot write image to photo library
    +								fr
    +								Impossible d'enregistrer l'image dans l'album photo
    +							
    +							snapshots
    +							
    +						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8373,31 +8398,6 @@ La cause était: %2$@
     							snapshots
     							
     						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							No comment provided by engineer.
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							Incoming file stored to your photo library
    -							localizations
    -							
    -								en
    -								Incoming file stored to your photo library
    -								fr
    -								Fichier entrant stocké
    -							
    -							snapshots
    -							
    -						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -8721,31 +8721,6 @@ La cause était: %2$@
     							snapshots
     							
     						
    -						
    -							change date
    -							2001-01-01T00:00:00Z
    -							changed values
    -							
    -							class
    -							BLStringKeyObject
    -							comment
    -							No comment provided by engineer.
    -							errors
    -							
    -							flags
    -							0
    -							key
    -							Photo library
    -							localizations
    -							
    -								en
    -								Photo library
    -								fr
    -								Photos
    -							
    -							snapshots
    -							
    -						
     						
     							change date
     							2001-01-01T00:00:00Z
    @@ -9661,6 +9636,56 @@ Raison: %2$s
     							snapshots
     							
     						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Incoming file stored to your photo library
    +							localizations
    +							
    +								en
    +								Incoming file stored to your photo library
    +								fr
    +								Fichier entrant stocké
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							No comment provided by engineer.
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Photo library
    +							localizations
    +							
    +								en
    +								Photo library
    +								fr
    +								Photos
    +							
    +							snapshots
    +							
    +						
     					
     					plist file
     					
    diff --git a/linphone.ldb/Resources/Classes/ChatRoomViewController/15/ChatRoomViewController.xib b/linphone.ldb/Resources/Classes/ChatRoomViewController/16/ChatRoomViewController.xib
    similarity index 98%
    rename from linphone.ldb/Resources/Classes/ChatRoomViewController/15/ChatRoomViewController.xib
    rename to linphone.ldb/Resources/Classes/ChatRoomViewController/16/ChatRoomViewController.xib
    index dfb378fa5..1972001d5 100644
    --- a/linphone.ldb/Resources/Classes/ChatRoomViewController/15/ChatRoomViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ChatRoomViewController/16/ChatRoomViewController.xib
    @@ -156,7 +156,7 @@
     							
     							
     								
    -								-2147483356
    +								-2147483382
     								
     									
     										
    @@ -166,10 +166,7 @@
     										
     										
     										_NS:9
    -										
    -											1
    -											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    -										
    +										
     										NO
     										IBCocoaTouchFramework
     										
    @@ -179,7 +176,7 @@
     									
     									
     										
    -										292
    +										297
     										{{250, 0}, {70, 59}}
     										
     										
    @@ -214,7 +211,7 @@
     									
     									
     										
    -										292
    +										298
     										{{20, 25}, {213, 9}}
     										
     										
    @@ -274,6 +271,7 @@
     										{{250, 0}, {70, 59}}
     										
     										
    +										
     										_NS:9
     										NO
     										
    @@ -639,6 +637,14 @@
     					
     					86
     				
    +				
    +					
    +						transferBackgroundImage
    +						
    +						
    +					
    +					88
    +				
     				
     					
     						dataSource
    @@ -930,7 +936,7 @@
     						83
     						
     						
    -						footerBackgroundImage
    +						transfertBackgroundImage
     					
     				
     			
    @@ -976,7 +982,7 @@
     			
     			
     			
    -			87
    +			88
     		
     		
     			
    @@ -1047,6 +1053,7 @@
     						UIButton
     						UIButton
     						ChatRoomTableViewController
    +						UIImageView
     						UIView
     					
     					
    @@ -1114,6 +1121,10 @@
     							tableController
     							ChatRoomTableViewController
     						
    +						
    +							transferBackgroundImage
    +							UIImageView
    +						
     						
     							transferView
     							UIView
    diff --git a/linphone.ldb/Resources/Classes/ImageViewController/3/ImageViewController.xib b/linphone.ldb/Resources/Classes/ImageViewController/4/ImageViewController.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/ImageViewController/3/ImageViewController.xib
    rename to linphone.ldb/Resources/Classes/ImageViewController/4/ImageViewController.xib
    index 0e9bb3507..7e003d3c6 100644
    --- a/linphone.ldb/Resources/Classes/ImageViewController/3/ImageViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ImageViewController/4/ImageViewController.xib
    @@ -42,7 +42,6 @@
     						{{0, 44}, {320, 416}}
     						
     						
    -						
     						_NS:9
     						
     							3
    @@ -58,7 +57,7 @@
     						
     							
     								
    -								292
    +								290
     								{320, 44}
     								
     								
    diff --git a/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings b/linphone.ldb/Resources/Resources/Localizable/1/Localizable.strings
    index 77e98c0aebfadcfe5429948995256911fe4b7664..d1ab447f8b2aa74569ea31a4e87ceb1964227673 100644
    GIT binary patch
    delta 112
    zcmX?5)mORUDgWfv+&t3d3`Go?3?&Sy3<^Lxmm!fM9n3Ca$e(;hPF>R(D3S++`9L)a
    h4ER;cPxh1#n_Mfvv-v&$D!$E&o9v
    
    delta 124
    zcmeCHJW#daDgWeLL9Wer1y=D*j+Wz_{9lekR)L|Ip@boyp@<=sA%#H!%vNBi1d5b0
    s6iwz4P@lY7Mu-TNF#@HVo8?2;CkqNFF$PRd5Gb51ugSOhvD#`;0OrRc$p8QV
    
    
    From e7d3c6a0d9335ed3bd338888d8504faf0d12ff07 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Tue, 18 Sep 2012 17:27:34 +0200
    Subject: [PATCH 234/397] Add settings for wizard Fix xibs
    
    ---
     Classes/ChatRoomViewController.m              |   8 +-
     Classes/LinphoneCoreSettingsStore.m           |   8 +-
     Classes/LinphoneUI/UIChatRoomCell.m           |   4 +-
     Classes/SettingsViewController.m              |   2 +-
     Classes/WizardViewController.m                |  21 +++
     Classes/en.lproj/ImageViewController.xib      |  20 ++-
     Classes/fr.lproj/ImageViewController.xib      |  19 ++-
     Resources/image_back_default.png              | Bin 0 -> 2613 bytes
     Resources/image_back_over.png                 | Bin 0 -> 2345 bytes
     Resources/linphonerc-factory                  |   3 +
     Resources/linphonerc-factory~ipad             |   3 +
     Settings/InAppSettings.bundle/Advanced.plist  |   2 +-
     Settings/InAppSettings.bundle/Network.plist   |   8 +-
     .../en.lproj/Network.strings                  |  16 +-
     .../fr.lproj/Network.strings                  |  16 +-
     linphone.ldb/Contents.plist                   | 137 +++++++++++++++---
     .../{4 => 6}/ImageViewController.xib          |  20 ++-
     .../Network/1/Network.strings                 |  16 +-
     linphone.xcodeproj/project.pbxproj            |  12 ++
     19 files changed, 234 insertions(+), 81 deletions(-)
     create mode 100644 Resources/image_back_default.png
     create mode 100644 Resources/image_back_over.png
     rename linphone.ldb/Resources/Classes/ImageViewController/{4 => 6}/ImageViewController.xib (94%)
    
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index 4b7702131..7e113f581 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -156,8 +156,8 @@ static UICompositeViewDescription *compositeDescription = nil;
         [transferBackgroundImage setImage:[TUNinePatchCache imageOfSize:[transferBackgroundImage bounds].size
                                                        forNinePatchNamed:@"chat_background"]];
         
    -	BOOL fileSharingEnabled = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"] != NULL 
    -								&& [[[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"] length]>0;
    +	BOOL fileSharingEnabled = [[LinphoneManager instance] lpConfigStringForKey:@"sharing_server_preference"] != NULL 
    +								&& [[[LinphoneManager instance] lpConfigStringForKey:@"sharing_server_preference"] length]>0;
         
         CGRect pictureFrame = pictureButton.frame;
     	CGRect messageframe = messageView.frame;
    @@ -457,7 +457,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     
     - (BOOL)chatRoomStartImageUpload:(UIImage*)image url:(NSURL*)url{
         if(imageSharing == nil) {
    -        NSString *urlString = [[LinphoneManager instance] lpConfigStringForKey:@"file_upload_url_preference"];
    +        NSString *urlString = [[LinphoneManager instance] lpConfigStringForKey:@"sharing_server_preference"];
             imageSharing = [ImageSharing imageSharingUpload:[NSURL URLWithString:urlString] image:image delegate:self userInfo:url];
             [footerView setHidden:TRUE];
             [transferView setHidden:FALSE];
    @@ -615,6 +615,8 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
             // Always stay at bottom
             CGPoint contentPt = [tableController.tableView contentOffset];
             contentPt.y -= diff;
    +        if(contentPt.y + tableFrame.size.height > tableController.tableView.contentSize.height)
    +             contentPt.y += diff;
             [tableController.tableView setContentOffset:contentPt animated:FALSE];
         }
         
    diff --git a/Classes/LinphoneCoreSettingsStore.m b/Classes/LinphoneCoreSettingsStore.m
    index b3e21bddd..853dd5d19 100644
    --- a/Classes/LinphoneCoreSettingsStore.m
    +++ b/Classes/LinphoneCoreSettingsStore.m
    @@ -194,7 +194,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "debugenable_preference", 0) forKey:@"debugenable_preference"];
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "animations_preference", 1) forKey:@"animations_preference"];
     	[self setBool: lp_config_get_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "wifi_only_preference", 0) forKey:@"wifi_only_preference"];
    -	[self setString: lp_config_get_string(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "file_upload_url_preference", NULL) forKey:@"file_upload_url_preference"];
    +	[self setString: lp_config_get_string(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "sharing_server_preference", NULL) forKey:@"sharing_server_preference"];
     	
     	/*keep this one also in the standardUserDefaults so that it can be read before starting liblinphone*/
     	BOOL start_at_boot = TRUE;
    @@ -448,7 +448,7 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
     	
         NSString* stun_server = [self stringForKey:@"stun_preference"];
         if ([stun_server length] > 0){
    -        linphone_core_set_stun_server(lc,[stun_server cStringUsingEncoding:[NSString defaultCStringEncoding]]);
    +        linphone_core_set_stun_server(lc, [stun_server UTF8String]);
             BOOL ice_preference = [self boolForKey:@"ice_preference"];
             if(ice_preference) {
                 linphone_core_set_firewall_policy(lc, LinphonePolicyUseIce);
    @@ -512,8 +512,8 @@ extern void linphone_iphone_log_handler(int lev, const char *fmt, va_list args);
         
         BOOL animations = [self boolForKey:@"animations_preference"];
     	lp_config_set_int(linphone_core_get_config(lc), LINPHONERC_APPLICATION_KEY, "animations_preference", animations);
    -	NSString*  file_upload_url= [self stringForKey:@"file_upload_url_preference"];
    -	[[LinphoneManager instance] lpConfigSetString:file_upload_url forKey:@"file_upload_url_preference"];
    +	NSString*  sharing_server = [self stringForKey:@"sharing_server_preference"];
    +	[[LinphoneManager instance] lpConfigSetString:sharing_server forKey:@"sharing_server_preference"];
     	
     
     	
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m
    index 22862ed2e..8b9ac0d82 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.m
    +++ b/Classes/LinphoneUI/UIChatRoomCell.m
    @@ -47,8 +47,8 @@ static const CGFloat CELL_MAX_WIDTH = 320.0f;
     static const CGFloat CELL_MESSAGE_X_MARGIN = 26.0f;
     static const CGFloat CELL_MESSAGE_Y_MARGIN = 36.0f;
     static const CGFloat CELL_FONT_SIZE = 17.0f;
    -static const CGFloat CELL_IMAGE_HEIGHT = 50.0f;
    -static const CGFloat CELL_IMAGE_WIDTH = 50.0f;
    +static const CGFloat CELL_IMAGE_HEIGHT = 100.0f;
    +static const CGFloat CELL_IMAGE_WIDTH = 100.0f;
     static UIFont *CELL_FONT = nil;
     
     #pragma mark - Lifecycle Functions
    diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
    index ec63fea7e..a2629cdd5 100644
    --- a/Classes/SettingsViewController.m
    +++ b/Classes/SettingsViewController.m
    @@ -394,7 +394,6 @@ static UICompositeViewDescription *compositeDescription = nil;
         settingsController.showDoneButton = FALSE;
         settingsController.delegate = self;
         settingsController.showCreditsFooter = FALSE;
    -    settingsController.hiddenKeys = [self findHiddenKeys];
         settingsController.settingsStore = settingsStore;
         
         [navigationController.view setBackgroundColor:[UIColor clearColor]];
    @@ -417,6 +416,7 @@ static UICompositeViewDescription *compositeDescription = nil;
         [super viewWillAppear:animated];
         
         [settingsStore transformLinphoneCoreToKeys]; // Sync settings with linphone core settings
    +    settingsController.hiddenKeys = [self findHiddenKeys];
         [settingsController.tableView reloadData];	
         
         // Set observer
    diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m
    index ba97c98a1..f68b5de17 100644
    --- a/Classes/WizardViewController.m
    +++ b/Classes/WizardViewController.m
    @@ -283,6 +283,27 @@ static UICompositeViewDescription *compositeDescription = nil;
     			[LinphoneLogger logc:LinphoneLoggerError format:"cannot set transport"];
     		}
     	}
    +    
    +    NSString* sharing_server = [[LinphoneManager instance] lpConfigStringForKey:@"sharing_server" forSection:@"wizard"];
    +    [[LinphoneManager instance] lpConfigSetString:sharing_server forKey:@"sharing_server_preference"];
    +    
    +    BOOL ice = [[LinphoneManager instance] lpConfigBoolForKey:@"ice" forSection:@"wizard"];
    +    [[LinphoneManager instance] lpConfigSetBool:ice forKey:@"ice_preference"];
    +    
    +    NSString* stun = [[LinphoneManager instance] lpConfigStringForKey:@"stun" forSection:@"wizard"];
    +    [[LinphoneManager instance] lpConfigSetString:stun forKey:@"stun_preference"];
    +    
    +    if ([stun length] > 0){
    +        linphone_core_set_stun_server(lc, [stun UTF8String]);
    +        if(ice) {
    +            linphone_core_set_firewall_policy(lc, LinphonePolicyUseIce);
    +        } else {
    +            linphone_core_set_firewall_policy(lc, LinphonePolicyUseStun);
    +        }
    +    } else {
    +        linphone_core_set_stun_server(lc, NULL);
    +        linphone_core_set_firewall_policy(lc, LinphonePolicyNoFirewall);
    +    }
     }
     
     - (void)addProxyConfig:(NSString*)username password:(NSString*)password domain:(NSString*)domain server:(NSString*)server {
    diff --git a/Classes/en.lproj/ImageViewController.xib b/Classes/en.lproj/ImageViewController.xib
    index 7e003d3c6..6db298265 100644
    --- a/Classes/en.lproj/ImageViewController.xib
    +++ b/Classes/en.lproj/ImageViewController.xib
    @@ -42,12 +42,13 @@
     						{{0, 44}, {320, 416}}
     						
     						
    +						
     						_NS:9
     						
     							3
     							MCAwAA
     						
    -						4
    +						1
     						NO
     						IBCocoaTouchFramework
     					
    @@ -73,7 +74,7 @@
     							
     								
     								292
    -								{80, 44}
    +								{160, 44}
     								
     								
     								
    @@ -85,6 +86,8 @@
     								IBCocoaTouchFramework
     								0
     								0
    +								NO
    +								NO
     								
     									3
     									MQA
    @@ -97,13 +100,13 @@
     									3
     									MC41AA
     								
    -								
    +								
     									NSImage
    -									chat_back_default.png
    +									image_back_over.png
     								
     								
     									NSImage
    -									chat_back_over.png
    +									image_back_default.png
     								
     								
     									2
    @@ -218,11 +221,13 @@
     						7
     						
     						
    +						backButton
     					
     					
     						6
     						
     						
    +						background
     					
     				
     			
    @@ -236,6 +241,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     			
     			
     			
    @@ -289,8 +295,8 @@
     		YES
     		3
     		
    -			{320, 88}
    -			{320, 88}
    +			{320, 88}
    +			{320, 88}
     			{5, 117}
     		
     		1498
    diff --git a/Classes/fr.lproj/ImageViewController.xib b/Classes/fr.lproj/ImageViewController.xib
    index 071b3cda5..ad5e29808 100644
    --- a/Classes/fr.lproj/ImageViewController.xib
    +++ b/Classes/fr.lproj/ImageViewController.xib
    @@ -46,7 +46,7 @@
     							3
     							MCAwAA
     						
    -						4
    +						1
     						NO
     						IBCocoaTouchFramework
     					
    @@ -71,7 +71,7 @@
     							
     								
     								292
    -								{80, 44}
    +								{160, 44}
     								
     								
     								_NS:9
    @@ -82,6 +82,8 @@
     								IBCocoaTouchFramework
     								0
     								0
    +								NO
    +								NO
     								
     									3
     									MQA
    @@ -94,13 +96,13 @@
     									3
     									MC41AA
     								
    -								
    +								
     									NSImage
    -									chat_back_default.png
    +									image_back_over.png
     								
     								
     									NSImage
    -									chat_back_over.png
    +									image_back_default.png
     								
     								
     									2
    @@ -212,11 +214,13 @@
     						7
     						
     						
    +						backButton
     					
     					
     						6
     						
     						
    +						background
     					
     				
     			
    @@ -230,6 +234,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     			
     			
     			
    @@ -283,8 +288,8 @@
     		YES
     		3
     		
    -			{320, 88}
    -			{320, 88}
    +			{320, 88}
    +			{320, 88}
     			{5, 117}
     		
     		933
    diff --git a/Resources/image_back_default.png b/Resources/image_back_default.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..60412bd95fd36b2c7fedbb86d83d9e7680b1cba9
    GIT binary patch
    literal 2613
    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
    P00000NkvXXu0mjfIX+xA
    
    literal 0
    HcmV?d00001
    
    diff --git a/Resources/linphonerc-factory b/Resources/linphonerc-factory
    index a38a81b51..3d7bde8c8 100644
    --- a/Resources/linphonerc-factory
    +++ b/Resources/linphonerc-factory
    @@ -40,4 +40,7 @@ username_length=4
     expires=600
     push_notification=1
     transport=tls
    +sharing_server=https://www.linphone.org:444/upload.php
    +ice=1
    +stun=stun.linphone.org
     
    diff --git a/Resources/linphonerc-factory~ipad b/Resources/linphonerc-factory~ipad
    index 845a67bba..655493f65 100644
    --- a/Resources/linphonerc-factory~ipad
    +++ b/Resources/linphonerc-factory~ipad
    @@ -40,3 +40,6 @@ username_length=4
     expires=600
     push_notification=1
     transport=tls
    +sharing_server=https://www.linphone.org:444/upload.php
    +ice=1
    +stun=stun.linphone.org
    diff --git a/Settings/InAppSettings.bundle/Advanced.plist b/Settings/InAppSettings.bundle/Advanced.plist
    index 9edd14072..1a87b88a5 100644
    --- a/Settings/InAppSettings.bundle/Advanced.plist
    +++ b/Settings/InAppSettings.bundle/Advanced.plist
    @@ -174,7 +174,7 @@
     			Title
     			Sharing server
     			Key
    -			file_upload_url_preference
    +			sharing_server_preference
     			IASKTextAlignment
     			IASKUITextAlignmentRight
     		
    diff --git a/Settings/InAppSettings.bundle/Network.plist b/Settings/InAppSettings.bundle/Network.plist
    index 8d8e1a082..1bc2d7cf5 100644
    --- a/Settings/InAppSettings.bundle/Network.plist
    +++ b/Settings/InAppSettings.bundle/Network.plist
    @@ -18,7 +18,7 @@
     			Key
     			stun_preference
     			Title
    -			Stun server
    +			Stun Server
     			Type
     			PSTextFieldSpecifier
     			AutocapitalizationType
    @@ -113,9 +113,9 @@
     			Transport
     			Titles
     			
    -				udp
    -				tcp
    -				tls
    +				UDP
    +				TCP
    +				TLS
     			
     			Type
     			PSMultiValueSpecifier
    diff --git a/Settings/InAppSettings.bundle/en.lproj/Network.strings b/Settings/InAppSettings.bundle/en.lproj/Network.strings
    index 481b7d438..299b28fbd 100644
    --- a/Settings/InAppSettings.bundle/en.lproj/Network.strings
    +++ b/Settings/InAppSettings.bundle/en.lproj/Network.strings
    @@ -1,8 +1,8 @@
     /* Wifi only */
     "Wifi only" = "Wifi only";
     
    -/* Stun server */
    -"Stun server" = "Stun server";
    +/* Stun Server */
    +"Stun Server" = "Stun Server";
     
     /* ICE */
     "ICE" = "ICE";
    @@ -31,14 +31,14 @@
     /* Transport */
     "Transport" = "Transport";
     
    -/* udp */
    -"udp" = "udp";
    +/* UDP */
    +"UDP" = "UDP";
     
    -/* tcp */
    -"tcp" = "tcp";
    +/* TCP */
    +"TCP" = "TCP";
     
    -/* tls */
    -"tls" = "tls";
    +/* TLS */
    +"TLS" = "TLS";
     
     /* None */
     "None" = "None";
    diff --git a/Settings/InAppSettings.bundle/fr.lproj/Network.strings b/Settings/InAppSettings.bundle/fr.lproj/Network.strings
    index 95cd15fb4..e8b26e761 100644
    --- a/Settings/InAppSettings.bundle/fr.lproj/Network.strings
    +++ b/Settings/InAppSettings.bundle/fr.lproj/Network.strings
    @@ -1,8 +1,8 @@
     /* Wifi only */
     "Wifi only" = "Uniquement Wifi";
     
    -/* Stun server */
    -"Stun server" = "Serveur Stun";
    +/* Stun Server */
    +"Stun Server" = "Serveur Stun";
     
     /* ICE */
     "ICE" = "ICE";
    @@ -31,14 +31,14 @@
     /* Transport */
     "Transport" = "Transport";
     
    -/* udp */
    -"udp" = "udp";
    +/* UDP */
    +"UDP" = "UDP";
     
    -/* tcp */
    -"tcp" = "tcp";
    +/* TCP */
    +"TCP" = "TCP";
     
    -/* tls */
    -"tls" = "tls";
    +/* TLS */
    +"TLS" = "TLS";
     
     /* None */
     "None" = "Aucun";
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index 6a88a91eb..febee5e56 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -4281,17 +4281,17 @@
     					
     						backup
     						
    -							4
    +							6
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ImageViewController/4/ImageViewController.xib
    +								Classes/ImageViewController/6/ImageViewController.xib
     							
     						
     					
     					change date
    -					2012-09-18T12:55:28Z
    +					2012-09-18T15:26:33Z
     					changed values
     					
     					class
    @@ -4301,7 +4301,7 @@
     					flags
     					0
     					hash
    -					cf8736251f03474edd9a8c46b942ae63
    +					b3e155c6a9c76213208e70d8dc9bd3df
     
     					name
     					ImageViewController.xib
    @@ -4340,9 +4340,9 @@
     					versions
     					
     						en
    -						4
    +						6
     						fr
    -						4
    +						6
     					
     				
     			
    @@ -11500,7 +11500,7 @@ Raison: %2$s
     						
     					
     					change date
    -					2012-09-18T09:18:41Z
    +					2012-09-18T15:13:17Z
     					changed values
     					
     					class
    @@ -11510,7 +11510,7 @@ Raison: %2$s
     					flags
     					0
     					hash
    -					3c3bd8331f174699330a8cffb2875fa5
    +					f5919fdebddf11e613578ee7ff05f05e
     
     					name
     					Network.strings
    @@ -11549,17 +11549,17 @@ Raison: %2$s
     							class
     							BLStringKeyObject
     							comment
    -							Stun server
    +							Stun Server
     							errors
     							
     							flags
     							0
     							key
    -							Stun server
    +							Stun Server
     							localizations
     							
     								en
    -								Stun server
    +								Stun Server
     								fr
     								Serveur Stun
     							
    @@ -11774,17 +11774,17 @@ Raison: %2$s
     							class
     							BLStringKeyObject
     							comment
    -							udp
    +							UDP
     							errors
     							
     							flags
     							2
     							key
    -							udp
    +							UDP
     							localizations
     							
     								en
    -								udp
    +								UDP
     							
     							snapshots
     							
    @@ -11797,17 +11797,17 @@ Raison: %2$s
     							class
     							BLStringKeyObject
     							comment
    -							tcp
    +							TCP
     							errors
     							
     							flags
     							2
     							key
    -							tcp
    +							TCP
     							localizations
     							
     								en
    -								tcp
    +								TCP
     							
     							snapshots
     							
    @@ -11820,17 +11820,17 @@ Raison: %2$s
     							class
     							BLStringKeyObject
     							comment
    -							tls
    +							TLS
     							errors
     							
     							flags
     							2
     							key
    -							tls
    +							TLS
     							localizations
     							
     								en
    -								tls
    +								TLS
     							
     							snapshots
     							
    @@ -11908,7 +11908,102 @@ Raison: %2$s
     						
     					
     					old objects
    -					
    +					
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							udp
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							udp
    +							localizations
    +							
    +								en
    +								udp
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							tcp
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							tcp
    +							localizations
    +							
    +								en
    +								tcp
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							tls
    +							errors
    +							
    +							flags
    +							2
    +							key
    +							tls
    +							localizations
    +							
    +								en
    +								tls
    +							
    +							snapshots
    +							
    +						
    +						
    +							change date
    +							2001-01-01T00:00:00Z
    +							changed values
    +							
    +							class
    +							BLStringKeyObject
    +							comment
    +							Stun server
    +							errors
    +							
    +							flags
    +							0
    +							key
    +							Stun server
    +							localizations
    +							
    +								en
    +								Stun server
    +								fr
    +								Serveur Stun
    +							
    +							snapshots
    +							
    +						
    +					
     					plist file
     					
     					snapshots
    diff --git a/linphone.ldb/Resources/Classes/ImageViewController/4/ImageViewController.xib b/linphone.ldb/Resources/Classes/ImageViewController/6/ImageViewController.xib
    similarity index 94%
    rename from linphone.ldb/Resources/Classes/ImageViewController/4/ImageViewController.xib
    rename to linphone.ldb/Resources/Classes/ImageViewController/6/ImageViewController.xib
    index 7e003d3c6..6db298265 100644
    --- a/linphone.ldb/Resources/Classes/ImageViewController/4/ImageViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ImageViewController/6/ImageViewController.xib
    @@ -42,12 +42,13 @@
     						{{0, 44}, {320, 416}}
     						
     						
    +						
     						_NS:9
     						
     							3
     							MCAwAA
     						
    -						4
    +						1
     						NO
     						IBCocoaTouchFramework
     					
    @@ -73,7 +74,7 @@
     							
     								
     								292
    -								{80, 44}
    +								{160, 44}
     								
     								
     								
    @@ -85,6 +86,8 @@
     								IBCocoaTouchFramework
     								0
     								0
    +								NO
    +								NO
     								
     									3
     									MQA
    @@ -97,13 +100,13 @@
     									3
     									MC41AA
     								
    -								
    +								
     									NSImage
    -									chat_back_default.png
    +									image_back_over.png
     								
     								
     									NSImage
    -									chat_back_over.png
    +									image_back_default.png
     								
     								
     									2
    @@ -218,11 +221,13 @@
     						7
     						
     						
    +						backButton
     					
     					
     						6
     						
     						
    +						background
     					
     				
     			
    @@ -236,6 +241,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     			
     			
     			
    @@ -289,8 +295,8 @@
     		YES
     		3
     		
    -			{320, 88}
    -			{320, 88}
    +			{320, 88}
    +			{320, 88}
     			{5, 117}
     		
     		1498
    diff --git a/linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings b/linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings
    index 481b7d438..299b28fbd 100644
    --- a/linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings
    +++ b/linphone.ldb/Resources/InAppSettings.bundle/Network/1/Network.strings
    @@ -1,8 +1,8 @@
     /* Wifi only */
     "Wifi only" = "Wifi only";
     
    -/* Stun server */
    -"Stun server" = "Stun server";
    +/* Stun Server */
    +"Stun Server" = "Stun Server";
     
     /* ICE */
     "ICE" = "ICE";
    @@ -31,14 +31,14 @@
     /* Transport */
     "Transport" = "Transport";
     
    -/* udp */
    -"udp" = "udp";
    +/* UDP */
    +"UDP" = "UDP";
     
    -/* tcp */
    -"tcp" = "tcp";
    +/* TCP */
    +"TCP" = "TCP";
     
    -/* tls */
    -"tls" = "tls";
    +/* TLS */
    +"TLS" = "TLS";
     
     /* None */
     "None" = "None";
    diff --git a/linphone.xcodeproj/project.pbxproj b/linphone.xcodeproj/project.pbxproj
    index c7a5532b8..46ef8db41 100755
    --- a/linphone.xcodeproj/project.pbxproj
    +++ b/linphone.xcodeproj/project.pbxproj
    @@ -783,6 +783,10 @@
     		D3832801158100E400FA0D23 /* history_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FD158100E400FA0D23 /* history_over.png */; };
     		D3832802158100E400FA0D23 /* settings_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FE158100E400FA0D23 /* settings_over.png */; };
     		D3832803158100E400FA0D23 /* chat_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D38327FF158100E400FA0D23 /* chat_over.png */; };
    +		D3866C281608CA1600830F95 /* image_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3866C261608CA1600830F95 /* image_back_default.png */; };
    +		D3866C291608CA1600830F95 /* image_back_default.png in Resources */ = {isa = PBXBuildFile; fileRef = D3866C261608CA1600830F95 /* image_back_default.png */; };
    +		D3866C2A1608CA1600830F95 /* image_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3866C271608CA1600830F95 /* image_back_over.png */; };
    +		D3866C2B1608CA1600830F95 /* image_back_over.png in Resources */ = {isa = PBXBuildFile; fileRef = D3866C271608CA1600830F95 /* image_back_over.png */; };
     		D389363915A6D53200A3A3AA /* chat_bubble_incoming.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */; };
     		D389363B15A6D53200A3A3AA /* chat_bubble_outgoing.9.png in Resources */ = {isa = PBXBuildFile; fileRef = D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */; };
     		D38D14AF15A30B3D008497E8 /* cell_call_first_highlight.png in Resources */ = {isa = PBXBuildFile; fileRef = D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */; };
    @@ -1821,6 +1825,8 @@
     		D38327FD158100E400FA0D23 /* history_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = history_over.png; path = Resources/history_over.png; sourceTree = ""; };
     		D38327FE158100E400FA0D23 /* settings_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = settings_over.png; path = Resources/settings_over.png; sourceTree = ""; };
     		D38327FF158100E400FA0D23 /* chat_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_over.png; path = Resources/chat_over.png; sourceTree = ""; };
    +		D3866C261608CA1600830F95 /* image_back_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = image_back_default.png; path = Resources/image_back_default.png; sourceTree = ""; };
    +		D3866C271608CA1600830F95 /* image_back_over.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = image_back_over.png; path = Resources/image_back_over.png; sourceTree = ""; };
     		D389363715A6D53200A3A3AA /* chat_bubble_incoming.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_bubble_incoming.9.png; path = Resources/chat_bubble_incoming.9.png; sourceTree = ""; };
     		D389363815A6D53200A3A3AA /* chat_bubble_outgoing.9.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = chat_bubble_outgoing.9.png; path = Resources/chat_bubble_outgoing.9.png; sourceTree = ""; };
     		D38D14AD15A30B3D008497E8 /* cell_call_first_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = cell_call_first_highlight.png; path = Resources/cell_call_first_highlight.png; sourceTree = ""; };
    @@ -2929,6 +2935,8 @@
     				D3A74E8615C69392001500B9 /* history_selected_landscape~ipad.png */,
     				D3A74E8715C69392001500B9 /* history_selected~ipad.png */,
     				D3C714B2159DB84400705B8E /* hold.wav */,
    +				D3866C261608CA1600830F95 /* image_back_default.png */,
    +				D3866C271608CA1600830F95 /* image_back_over.png */,
     				D3432A5C158A4446001C6B0B /* led_connected.png */,
     				D3432A70158A45AF001C6B0B /* led_disconnected.png */,
     				D3432A5D158A4446001C6B0B /* led_error.png */,
    @@ -3885,6 +3893,8 @@
     				D3ED40241602257400BF332B /* chat_background.9.png in Resources */,
     				D3ED40261602257400BF332B /* chat_background.9@2x.png in Resources */,
     				D3998D0416031937009DD22C /* background_alt.png in Resources */,
    +				D3866C281608CA1600830F95 /* image_back_default.png in Resources */,
    +				D3866C2A1608CA1600830F95 /* image_back_over.png in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    @@ -4337,6 +4347,8 @@
     				D3ED40251602257400BF332B /* chat_background.9.png in Resources */,
     				D3ED40271602257400BF332B /* chat_background.9@2x.png in Resources */,
     				D3998D0516031937009DD22C /* background_alt.png in Resources */,
    +				D3866C291608CA1600830F95 /* image_back_default.png in Resources */,
    +				D3866C2B1608CA1600830F95 /* image_back_over.png in Resources */,
     			);
     			runOnlyForDeploymentPostprocessing = 0;
     		};
    
    From 29ea5d04fb0c93d6470485cd3825b38df268ac01 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Tue, 18 Sep 2012 17:49:53 +0200
    Subject: [PATCH 235/397] Fix Chat room
    
    ---
     Classes/LinphoneUI/UIChatCell.m                   |  6 +++++-
     Classes/LinphoneUI/UIChatRoomCell.m               | 15 ++++-----------
     Classes/Model/ChatModel.h                         |  3 +++
     Classes/Model/ChatModel.m                         |  9 +++++++++
     Classes/en.lproj/ChatRoomViewController.xib       |  6 +-----
     Classes/fr.lproj/ChatRoomViewController.xib       |  5 +----
     linphone.ldb/Contents.plist                       | 12 ++++++------
     .../{16 => 17}/ChatRoomViewController.xib         |  6 +-----
     8 files changed, 30 insertions(+), 32 deletions(-)
     rename linphone.ldb/Resources/Classes/ChatRoomViewController/{16 => 17}/ChatRoomViewController.xib (99%)
    
    diff --git a/Classes/LinphoneUI/UIChatCell.m b/Classes/LinphoneUI/UIChatCell.m
    index 3e1057014..04b1e63c7 100644
    --- a/Classes/LinphoneUI/UIChatCell.m
    +++ b/Classes/LinphoneUI/UIChatCell.m
    @@ -110,7 +110,11 @@
         [avatarImage setImage:image];
         
         // Message
    -    [chatContentLabel setText:[chat message]];
    +    if([chat isExternalImage] || [chat isInternalImage]) {
    +        [chatContentLabel setText:@""];
    +    } else {
    +        [chatContentLabel setText:[chat message]];
    +    }
         
         linphone_address_destroy(linphoneAddress);
     }
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m
    index 8b9ac0d82..1ea21b7fc 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.m
    +++ b/Classes/LinphoneUI/UIChatRoomCell.m
    @@ -59,6 +59,7 @@ static UIFont *CELL_FONT = nil;
                                           owner:self
                                         options:nil];
             [self addSubview:innerView];
    +        [deleteButton setAlpha:0.0f];
         }
         return self;
     }
    @@ -101,14 +102,14 @@ static UIFont *CELL_FONT = nil;
             return;
         }
         
    -    if([UIChatRoomCell isExternalImage:[chat message]]) {
    +    if([chat isExternalImage]) {
             [messageLabel setHidden:TRUE];
             
             [messageImageView setImage:nil];
             [messageImageView setHidden:TRUE];
             
             [downloadButton setHidden:FALSE];
    -    } else if([UIChatRoomCell isInternalImage:[chat message]]) {
    +    } else if([chat isInternalImage]) {
             [messageLabel setHidden:TRUE];
             
             [[LinphoneManager instance].photoLibrary assetForURL:[NSURL URLWithString:[chat message]] resultBlock:^(ALAsset *asset) {
    @@ -176,17 +177,9 @@ static UIFont *CELL_FONT = nil;
         }
     }
     
    -+ (BOOL)isExternalImage:(NSString *)message {
    -    return [message hasPrefix:@"http:"] || [message hasPrefix:@"https:"];
    -}
    -
    -+ (BOOL)isInternalImage:(NSString *)message {
    -    return [message hasPrefix:@"assets-library:"];
    -}
    -
     + (CGSize)viewSize:(ChatModel*)chat width:(int)width {
         CGSize messageSize;
    -    if(!([UIChatRoomCell isExternalImage:[chat message]] || [UIChatRoomCell isInternalImage:[chat message]])) {
    +    if(!([chat isExternalImage] || [chat isInternalImage])) {
             if(CELL_FONT == nil) {
                 CELL_FONT = [UIFont systemFontOfSize:CELL_FONT_SIZE];
             }
    diff --git a/Classes/Model/ChatModel.h b/Classes/Model/ChatModel.h
    index f8607fe9b..90d9b566e 100644
    --- a/Classes/Model/ChatModel.h
    +++ b/Classes/Model/ChatModel.h
    @@ -41,6 +41,9 @@
     @property (copy) NSNumber *read;
     @property (copy) NSNumber *state;
     
    +- (BOOL)isExternalImage;
    +- (BOOL)isInternalImage;
    +
     - (void)create;
     + (ChatModel*)read:(NSNumber*)id;
     - (void)update;
    diff --git a/Classes/Model/ChatModel.m b/Classes/Model/ChatModel.m
    index 291149373..b952df9de 100644
    --- a/Classes/Model/ChatModel.m
    +++ b/Classes/Model/ChatModel.m
    @@ -61,6 +61,15 @@
     }
     
     
    +- (BOOL)isExternalImage {
    +    return [message hasPrefix:@"http:"] || [message hasPrefix:@"https:"];
    +}
    +
    +- (BOOL)isInternalImage {
    +    return [message hasPrefix:@"assets-library:"];
    +}
    +
    +
     #pragma mark - CRUD Functions
     
     - (void)create {
    diff --git a/Classes/en.lproj/ChatRoomViewController.xib b/Classes/en.lproj/ChatRoomViewController.xib
    index 1972001d5..b121e1665 100644
    --- a/Classes/en.lproj/ChatRoomViewController.xib
    +++ b/Classes/en.lproj/ChatRoomViewController.xib
    @@ -246,10 +246,7 @@
     										
     										
     										_NS:9
    -										
    -											1
    -											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    -										
    +										
     										NO
     										IBCocoaTouchFramework
     										
    @@ -271,7 +268,6 @@
     										{{250, 0}, {70, 59}}
     										
     										
    -										
     										_NS:9
     										NO
     										
    diff --git a/Classes/fr.lproj/ChatRoomViewController.xib b/Classes/fr.lproj/ChatRoomViewController.xib
    index a07b5d6da..43ba72799 100644
    --- a/Classes/fr.lproj/ChatRoomViewController.xib
    +++ b/Classes/fr.lproj/ChatRoomViewController.xib
    @@ -236,10 +236,7 @@
     										
     										
     										_NS:9
    -										
    -											1
    -											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    -										
    +										
     										NO
     										IBCocoaTouchFramework
     										
    diff --git a/linphone.ldb/Contents.plist b/linphone.ldb/Contents.plist
    index febee5e56..a624c3930 100644
    --- a/linphone.ldb/Contents.plist
    +++ b/linphone.ldb/Contents.plist
    @@ -212,17 +212,17 @@
     					
     						backup
     						
    -							16
    +							17
     							
     								class
     								BLWrapperHandle
     								name
    -								Classes/ChatRoomViewController/16/ChatRoomViewController.xib
    +								Classes/ChatRoomViewController/17/ChatRoomViewController.xib
     							
     						
     					
     					change date
    -					2012-09-18T13:03:28Z
    +					2012-09-18T15:40:57Z
     					changed values
     					
     					class
    @@ -232,7 +232,7 @@
     					flags
     					0
     					hash
    -					fb9acb898a88e8d219dfd663e9b8eb19
    +					0d54842000213c11a77cc9d1e2698245
     
     					name
     					ChatRoomViewController.xib
    @@ -568,9 +568,9 @@
     					versions
     					
     						en
    -						16
    +						17
     						fr
    -						16
    +						17
     					
     				
     				
    diff --git a/linphone.ldb/Resources/Classes/ChatRoomViewController/16/ChatRoomViewController.xib b/linphone.ldb/Resources/Classes/ChatRoomViewController/17/ChatRoomViewController.xib
    similarity index 99%
    rename from linphone.ldb/Resources/Classes/ChatRoomViewController/16/ChatRoomViewController.xib
    rename to linphone.ldb/Resources/Classes/ChatRoomViewController/17/ChatRoomViewController.xib
    index 1972001d5..b121e1665 100644
    --- a/linphone.ldb/Resources/Classes/ChatRoomViewController/16/ChatRoomViewController.xib
    +++ b/linphone.ldb/Resources/Classes/ChatRoomViewController/17/ChatRoomViewController.xib
    @@ -246,10 +246,7 @@
     										
     										
     										_NS:9
    -										
    -											1
    -											MSAwLjI4MzE1ODM3MjYgMC4wNTY3ODY4OTE2MQA
    -										
    +										
     										NO
     										IBCocoaTouchFramework
     										
    @@ -271,7 +268,6 @@
     										{{250, 0}, {70, 59}}
     										
     										
    -										
     										_NS:9
     										NO
     										
    
    From 86e3e31ec2636fe3d00a9ecedf13af40fb5d9311 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Wed, 19 Sep 2012 16:13:38 +0200
    Subject: [PATCH 236/397] fix ring.wab
    
    ---
     Classes/LinphoneManager.m | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/Classes/LinphoneManager.m b/Classes/LinphoneManager.m
    index f376f9956..e7b0d0af4 100644
    --- a/Classes/LinphoneManager.m
    +++ b/Classes/LinphoneManager.m
    @@ -637,7 +637,7 @@ static LinphoneCoreVTable linphonec_vtable = {
     	
         linphone_core_set_root_ca(theLinphoneCore, lRootCa);
     	// Set audio assets
    -	const char* lRing = [[LinphoneManager bundleFile:@"ring.wab"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
    +	const char* lRing = [[LinphoneManager bundleFile:@"ring.wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
     	linphone_core_set_ring(theLinphoneCore, lRing);
     	const char* lRingBack = [[LinphoneManager bundleFile:@"ringback.wav"] cStringUsingEncoding:[NSString defaultCStringEncoding]];
     	linphone_core_set_ringback(theLinphoneCore, lRingBack);
    
    From 1b8912ae87f2c2ee8c9d8f1c227c0bd9b8410486 Mon Sep 17 00:00:00 2001
    From: Simon Morlat 
    Date: Wed, 19 Sep 2012 21:52:24 +0200
    Subject: [PATCH 237/397] update exosip (for expire limit)
    
    ---
     submodules/externals/exosip | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/submodules/externals/exosip b/submodules/externals/exosip
    index 972e9d009..3403f378b 160000
    --- a/submodules/externals/exosip
    +++ b/submodules/externals/exosip
    @@ -1 +1 @@
    -Subproject commit 972e9d009e1fe9dc3e2e1d672e39c98de0affa37
    +Subproject commit 3403f378bab82b67d569b029f466a2f1dee499bb
    
    From 63a4c8a38cc7325c7373b05def8e289bdc2e9068 Mon Sep 17 00:00:00 2001
    From: Yann Diorcet 
    Date: Thu, 20 Sep 2012 18:43:39 +0200
    Subject: [PATCH 238/397] Improve UI
    
    ---
     Classes/ChatRoomTableViewController.m         |    5 -
     Classes/ChatRoomViewController.h              |    2 -
     Classes/ChatRoomViewController.m              |   80 +-
     Classes/ChatViewController.m                  |    6 +-
     Classes/ConsoleViewController.m               |   22 +-
     Classes/ConsoleViewController.xib             |   17 +-
     Classes/ContactDetailsTableViewController.m   |    1 -
     Classes/ContactDetailsViewController.m        |    8 +-
     Classes/ContactsViewController.m              |   10 +-
     Classes/DialerViewController.m                |    4 +
     Classes/HistoryViewController.m               |   22 +-
     Classes/LinphoneUI/UICallBar.m                |  191 +-
     Classes/LinphoneUI/UIChatCell.xib             |   73 +-
     Classes/LinphoneUI/UIChatRoomCell.h           |    1 +
     Classes/LinphoneUI/UIChatRoomCell.m           |    4 +
     Classes/LinphoneUI/UIChatRoomCell.xib         |   41 +-
     Classes/LinphoneUI/UIHistoryCell.xib          |   16 +-
     Classes/LinphoneUI/UIMainBar.m                |  128 +-
     Classes/LinphoneUI/UIStateBar.xib             |   24 +-
     Classes/LinphoneUI/en.lproj/UICallBar.xib     |  662 +--
     .../LinphoneUI/en.lproj/UICallBar~ipad.xib    |  396 +-
     Classes/LinphoneUI/en.lproj/UICallCell.xib    |  124 +-
     .../en.lproj/UIConferenceHeader.xib           |    9 +-
     .../en.lproj/UIContactDetailsFooter.xib       |   13 +-
     .../en.lproj/UIContactDetailsHeader.xib       |   74 +-
     Classes/LinphoneUI/en.lproj/UIMainBar.xib     |  156 +-
     .../LinphoneUI/en.lproj/UIMainBar~ipad.xib    |  295 +-
     Classes/LinphoneUI/fr.lproj/UICallBar.xib     |  594 +--
     .../LinphoneUI/fr.lproj/UICallBar~ipad.xib    |  328 +-
     Classes/LinphoneUI/fr.lproj/UICallCell.xib    |  101 +-
     .../fr.lproj/UIConferenceHeader.xib           |    8 +-
     .../fr.lproj/UIContactDetailsFooter.xib       |    4 +-
     .../fr.lproj/UIContactDetailsHeader.xib       |    4 +-
     Classes/LinphoneUI/fr.lproj/UIMainBar.xib     |  149 +-
     .../LinphoneUI/fr.lproj/UIMainBar~ipad.xib    |  287 +-
     Classes/MoreViewController.xib                |  155 +-
     Classes/PhoneMainView.xib                     |  122 +-
     Classes/SettingsViewController.m              |    9 +
     .../Utils/GrowingTextView/HPGrowingTextView.m |   12 +-
     .../NinePatch.xcodeproj/project.pbxproj       |    6 +-
     Classes/Utils/Utils.h                         |   10 +
     Classes/Utils/Utils.m                         |  127 +
     .../XMLRPC/XMLRPC.xcodeproj/project.pbxproj   |    8 +-
     Classes/WizardViewController.h                |    2 +-
     Classes/WizardViewController.m                |   47 +-
     Classes/en.lproj/ChatRoomViewController.xib   |  400 +-
     Classes/en.lproj/ChatViewController.xib       |  138 +-
     .../ContactDetailsLabelViewController.xib     |  101 +-
     .../en.lproj/ContactDetailsViewController.xib |  145 +-
     Classes/en.lproj/ContactsViewController.xib   |  420 +-
     Classes/en.lproj/DialerViewController.xib     |  329 +-
     .../en.lproj/DialerViewController~ipad.xib    |   86 +-
     Classes/en.lproj/FirstLoginViewController.xib |  125 +-
     .../en.lproj/HistoryDetailsViewController.xib |  182 +-
     Classes/en.lproj/HistoryViewController.xib    |  423 +-
     Classes/en.lproj/ImageViewController.xib      |   80 +-
     Classes/en.lproj/InCallViewController.xib     |  137 +-
     .../en.lproj/IncomingCallViewController.xib   |   64 +-
     Classes/en.lproj/WizardViewController.xib     | 1617 +------
     .../en.lproj/WizardViewController~ipad.xib    |  799 ++++
     .../en.lproj/WizardViews.xib                  |  826 ++--
     Classes/fr.lproj/ChatRoomViewController.xib   |  390 +-
     Classes/fr.lproj/ChatViewController.xib       |  130 +-
     .../ContactDetailsLabelViewController.xib     |   36 +-
     .../fr.lproj/ContactDetailsViewController.xib |   79 +-
     Classes/fr.lproj/ContactsViewController.xib   |  405 +-
     Classes/fr.lproj/DialerViewController.xib     |  298 +-
     .../fr.lproj/DialerViewController~ipad.xib    |   51 +-
     Classes/fr.lproj/FirstLoginViewController.xib |  111 +-
     .../fr.lproj/HistoryDetailsViewController.xib |  156 +-
     Classes/fr.lproj/HistoryViewController.xib    |  407 +-
     Classes/fr.lproj/ImageViewController.xib      |   68 +-
     Classes/fr.lproj/InCallViewController.xib     |  123 +-
     .../fr.lproj/IncomingCallViewController.xib   |   45 +-
     Classes/fr.lproj/WizardViewController.xib     | 1570 +-----
     .../fr.lproj/WizardViewController~ipad.xib    |  797 ++++
     Classes/fr.lproj/WizardViews.xib              | 1667 +++++++
     Resources/accept_default.png                  |  Bin 8288 -> 7667 bytes
     Resources/accept_over.png                     |  Bin 5127 -> 6391 bytes
     Resources/bubble.png                          |  Bin 0 -> 1457 bytes
     Resources/cancel_default.png                  |  Bin 4152 -> 3290 bytes
     Resources/cancel_over.png                     |  Bin 4384 -> 3456 bytes
     Resources/chat_add_default.png                |  Bin 4819 -> 2492 bytes
     Resources/chat_add_over.png                   |  Bin 4255 -> 2358 bytes
     Resources/chat_address.png                    |  Bin 0 -> 4242 bytes
     Resources/chat_back_default.png               |  Bin 2613 -> 2249 bytes
     Resources/chat_back_over.png                  |  Bin 2345 -> 2190 bytes
     Resources/chat_background.9.png               |  Bin 592 -> 0 bytes
     Resources/chat_background.9@2x.png            |  Bin 1030 -> 0 bytes
     Resources/chat_cancel_default.png             |  Bin 0 -> 3635 bytes
     Resources/chat_cancel_over.png                |  Bin 0 -> 3146 bytes
     Resources/chat_default.png                    |  Bin 4313 -> 3342 bytes
     Resources/chat_default_landscape~ipad.png     |  Bin 6366 -> 4166 bytes
     Resources/chat_default~ipad.png               |  Bin 5035 -> 3765 bytes
     Resources/chat_edit_default.png               |  Bin 2452 -> 2671 bytes
     Resources/chat_edit_over.png                  |  Bin 2179 -> 2600 bytes
     Resources/chat_field.9.png                    |  Bin 1553 -> 0 bytes
     Resources/chat_field.9@2x.png                 |  Bin 2510 -> 0 bytes
     Resources/chat_field.png                      |  Bin 4375 -> 0 bytes
     Resources/chat_message_background.9.png       |  Bin 0 -> 4151 bytes
     Resources/chat_message_background.9@2x.png    |  Bin 0 -> 8766 bytes
     ...ground.png => chat_message_background.png} |  Bin
     Resources/chat_message_delivered.png          |  Bin 1701 -> 1172 bytes
     Resources/chat_message_inprogress.png         |  Bin 684 -> 1182 bytes
     Resources/chat_message_not_delivered.png      |  Bin 1488 -> 1209 bytes
     Resources/chat_ok_default.png                 |  Bin 2151 -> 2246 bytes
     Resources/chat_ok_over.png                    |  Bin 2003 -> 2148 bytes
     Resources/chat_over.png                       |  Bin 4430 -> 3365 bytes
     Resources/chat_over_landscape~ipad.png        |  Bin 6384 -> 4368 bytes
     Resources/chat_over~ipad.png                  |  Bin 5161 -> 3877 bytes
     Resources/chat_photo_default.png              |  Bin 0 -> 1784 bytes
     Resources/chat_photo_disabled.png             |  Bin 0 -> 1783 bytes
     Resources/chat_photo_over.png                 |  Bin 0 -> 1779 bytes
     Resources/chat_progressbar_background.png     |  Bin 0 -> 3046 bytes
     Resources/chat_selected.png                   |  Bin 4355 -> 3334 bytes
     Resources/chat_selected_landscape~ipad.png    |  Bin 6351 -> 4163 bytes
     Resources/chat_selected~ipad.png              |  Bin 5071 -> 3751 bytes
     Resources/chat_send_default.png               |  Bin 2087 -> 2139 bytes
     Resources/chat_send_disabled.png              |  Bin 1954 -> 2139 bytes
     Resources/chat_send_over.png                  |  Bin 1349 -> 2065 bytes
     Resources/contact_back_default.png            |  Bin 2595 -> 2249 bytes
     Resources/contact_back_over.png               |  Bin 2327 -> 2190 bytes
     Resources/contact_cancel_default.png          |  Bin 6430 -> 2276 bytes
     Resources/contact_cancel_over.png             |  Bin 4386 -> 2154 bytes
     Resources/contact_edit_default.png            |  Bin 2434 -> 2671 bytes
     Resources/contact_edit_over.png               |  Bin 2161 -> 2600 bytes
     Resources/contact_ok_default.png              |  Bin 2133 -> 2246 bytes
     Resources/contact_ok_disabled.png             |  Bin 2045 -> 1870 bytes
     Resources/contact_ok_over.png                 |  Bin 4006 -> 2148 bytes
     Resources/contacts_add_default.png            |  Bin 3372 -> 1889 bytes
     Resources/contacts_add_over.png               |  Bin 2974 -> 1845 bytes
     Resources/contacts_all_default.png            |  Bin 7073 -> 3663 bytes
     Resources/contacts_all_selected.png           |  Bin 6459 -> 3354 bytes
     Resources/contacts_back_default.png           |  Bin 2800 -> 2118 bytes
     Resources/contacts_back_over.png              |  Bin 2521 -> 2100 bytes
     Resources/contacts_default.png                |  Bin 5070 -> 2421 bytes
     Resources/contacts_default_landscape~ipad.png |  Bin 6776 -> 2932 bytes
     Resources/contacts_default~ipad.png           |  Bin 6207 -> 2626 bytes
     Resources/contacts_linphone_default.png       |  Bin 9428 -> 4763 bytes
     Resources/contacts_linphone_selected.png      |  Bin 8575 -> 4263 bytes
     Resources/contacts_over.png                   |  Bin 5160 -> 2464 bytes
     Resources/contacts_over_landscape~ipad.png    |  Bin 6821 -> 2945 bytes
     Resources/contacts_over~ipad.png              |  Bin 6407 -> 2685 bytes
     Resources/contacts_selected.png               |  Bin 3291 -> 2455 bytes
     .../contacts_selected_landscape~ipad.png      |  Bin 6827 -> 2929 bytes
     Resources/contacts_selected~ipad.png          |  Bin 6207 -> 2612 bytes
     Resources/decline_default.png                 |  Bin 4368 -> 2900 bytes
     Resources/decline_over.png                    |  Bin 4507 -> 3038 bytes
     ...aler_address_background_landscape~ipad.png |  Bin 9184 -> 9128 bytes
     Resources/dialer_address_background~ipad.png  |  Bin 9825 -> 9793 bytes
     Resources/dialer_alt_disabled.png             |  Bin 0 -> 3510 bytes
     Resources/dialer_alt_disabled_landscape.png   |  Bin 0 -> 4329 bytes
     .../dialer_alt_disabled_landscape~ipad.png    |  Bin 0 -> 3544 bytes
     Resources/dialer_alt_disabled~ipad.png        |  Bin 0 -> 3529 bytes
     Resources/dialer_default.png                  |  Bin 16594 -> 11726 bytes
     Resources/dialer_over.png                     |  Bin 16688 -> 11990 bytes
     Resources/dialer_selected.png                 |  Bin 20158 -> 14150 bytes
     Resources/form_invalid.png                    |  Bin 0 -> 1209 bytes
     Resources/form_valid.png                      |  Bin 0 -> 1172 bytes
     Resources/header_conference.png               |  Bin 14741 -> 3251 bytes
     Resources/header_incoming.png                 |  Bin 14028 -> 3251 bytes
     Resources/history_all_default.png             |  Bin 6620 -> 3688 bytes
     Resources/history_all_selected.png            |  Bin 6040 -> 3357 bytes
     Resources/history_default.png                 |  Bin 5113 -> 2843 bytes
     Resources/history_default_landscape~ipad.png  |  Bin 7466 -> 3941 bytes
     Resources/history_default~ipad.png            |  Bin 6095 -> 3029 bytes
     Resources/history_delete_default.png          |  Bin 0 -> 2092 bytes
     Resources/history_delete_over.png             |  Bin 0 -> 1961 bytes
     Resources/history_details_add_default.png     |  Bin 3987 -> 1957 bytes
     Resources/history_details_add_over.png        |  Bin 3618 -> 1899 bytes
     Resources/history_details_back_default.png    |  Bin 2613 -> 2249 bytes
     Resources/history_details_back_over.png       |  Bin 2447 -> 2190 bytes
     Resources/history_edit_default.png            |  Bin 2457 -> 2559 bytes
     Resources/history_edit_over.png               |  Bin 2264 -> 2467 bytes
     Resources/history_missed_default.png          |  Bin 8649 -> 4118 bytes
     Resources/history_missed_selected.png         |  Bin 8044 -> 3786 bytes
     Resources/history_ok_default.png              |  Bin 1953 -> 2134 bytes
     Resources/history_ok_over.png                 |  Bin 1916 -> 2033 bytes
     Resources/history_over.png                    |  Bin 5186 -> 2862 bytes
     Resources/history_over_landscape~ipad.png     |  Bin 7390 -> 3948 bytes
     Resources/history_over~ipad.png               |  Bin 6238 -> 3142 bytes
     Resources/history_selected.png                |  Bin 5108 -> 2808 bytes
     Resources/history_selected_landscape~ipad.png |  Bin 7496 -> 3730 bytes
     Resources/history_selected~ipad.png           |  Bin 6146 -> 3148 bytes
     Resources/image_back_default.png              |  Bin 2613 -> 2249 bytes
     Resources/image_back_over.png                 |  Bin 2345 -> 2190 bytes
     Resources/linphone-splashscreen.png           |  Bin 0 -> 35937 bytes
     Resources/linphone-splashscreen@2x.png        |  Bin 0 -> 84781 bytes
     Resources/logo_linphone_trame_background.png  |  Bin 0 -> 25740 bytes
     Resources/micro_off_default.png               |  Bin 7257 -> 3619 bytes
     Resources/micro_off_default_landscape.png     |  Bin 7848 -> 4061 bytes
     .../micro_off_default_landscape~ipad.png      |  Bin 5107 -> 3855 bytes
     Resources/micro_off_default~ipad.png          |  Bin 5107 -> 3855 bytes
     Resources/micro_off_disabled.png              |  Bin 6858 -> 3359 bytes
     Resources/micro_off_disabled_landscape.png    |  Bin 7529 -> 3835 bytes
     .../micro_off_disabled_landscape~ipad.png     |  Bin 4820 -> 3678 bytes
     Resources/micro_off_disabled~ipad.png         |  Bin 4820 -> 3660 bytes
     Resources/micro_off_over.png                  |  Bin 7314 -> 3575 bytes
     Resources/micro_off_over_landscape.png        |  Bin 7924 -> 4027 bytes
     Resources/micro_off_over_landscape~ipad.png   |  Bin 5057 -> 3838 bytes
     Resources/micro_off_over~ipad.png             |  Bin 5057 -> 3853 bytes
     Resources/micro_on_default.png                |  Bin 5999 -> 2831 bytes
     Resources/micro_on_default_landscape.png      |  Bin 6788 -> 3353 bytes
     Resources/micro_on_default_landscape~ipad.png |  Bin 4299 -> 3047 bytes
     Resources/micro_on_default~ipad.png           |  Bin 4299 -> 3047 bytes
     Resources/micro_on_disabled.png               |  Bin 5779 -> 2726 bytes
     Resources/micro_on_disabled_landscape.png     |  Bin 6572 -> 3223 bytes
     .../micro_on_disabled_landscape~ipad.png      |  Bin 4099 -> 2928 bytes
     Resources/micro_on_disabled~ipad.png          |  Bin 4099 -> 2936 bytes
     Resources/micro_on_over.png                   |  Bin 6005 -> 2788 bytes
     Resources/micro_on_over_landscape.png         |  Bin 6808 -> 3353 bytes
     Resources/micro_on_over_landscape~ipad.png    |  Bin 4287 -> 3030 bytes
     Resources/micro_on_over~ipad.png              |  Bin 4287 -> 3030 bytes
     Resources/options_add_default.png             |  Bin 5935 -> 3114 bytes
     Resources/options_add_default_landscape.png   |  Bin 7294 -> 3711 bytes
     .../options_add_default_landscape~ipad.png    |  Bin 4899 -> 3181 bytes
     Resources/options_add_default~ipad.png        |  Bin 4899 -> 3174 bytes
     Resources/options_add_disabled.png            |  Bin 5764 -> 2974 bytes
     Resources/options_add_disabled_landscape.png  |  Bin 7120 -> 3530 bytes
     .../options_add_disabled_landscape~ipad.png   |  Bin 4568 -> 2986 bytes
     Resources/options_add_disabled~ipad.png       |  Bin 4568 -> 2981 bytes
     Resources/options_add_over.png                |  Bin 6013 -> 3082 bytes
     Resources/options_add_over_landscape.png      |  Bin 7393 -> 3724 bytes
     Resources/options_add_over_landscape~ipad.png |  Bin 4847 -> 3144 bytes
     Resources/options_add_over~ipad.png           |  Bin 4847 -> 3159 bytes
     Resources/options_default.png                 |  Bin 7933 -> 3896 bytes
     Resources/options_default_landscape.png       |  Bin 8466 -> 4150 bytes
     Resources/options_default_landscape~ipad.png  |  Bin 5466 -> 3669 bytes
     Resources/options_default~ipad.png            |  Bin 5466 -> 3725 bytes
     Resources/options_disabled.png                |  Bin 7683 -> 3628 bytes
     Resources/options_disabled_landscape.png      |  Bin 8225 -> 3985 bytes
     Resources/options_disabled_landscape~ipad.png |  Bin 5177 -> 3503 bytes
     Resources/options_disabled~ipad.png           |  Bin 5177 -> 3515 bytes
     Resources/options_over.png                    |  Bin 7955 -> 3821 bytes
     Resources/options_over_landscape.png          |  Bin 8495 -> 4178 bytes
     Resources/options_over_landscape~ipad.png     |  Bin 5416 -> 3680 bytes
     Resources/options_over~ipad.png               |  Bin 5416 -> 3680 bytes
     Resources/options_selected.png                |  Bin 8224 -> 4359 bytes
     Resources/options_selected_landscape.png      |  Bin 8649 -> 4267 bytes
     Resources/options_selected_landscape~ipad.png |  Bin 5554 -> 3757 bytes
     Resources/options_selected~ipad.png           |  Bin 5554 -> 3768 bytes
     Resources/options_transfer_default.png        |  Bin 6010 -> 3286 bytes
     .../options_transfer_default_landscape.png    |  Bin 7392 -> 3864 bytes
     ...ptions_transfer_default_landscape~ipad.png |  Bin 4950 -> 3308 bytes
     Resources/options_transfer_default~ipad.png   |  Bin 4950 -> 3308 bytes
     Resources/options_transfer_disabled.png       |  Bin 5899 -> 3153 bytes
     .../options_transfer_disabled_landscape.png   |  Bin 7194 -> 3715 bytes
     ...tions_transfer_disabled_landscape~ipad.png |  Bin 4649 -> 3106 bytes
     Resources/options_transfer_disabled~ipad.png  |  Bin 4649 -> 3106 bytes
     Resources/options_transfer_over.png           |  Bin 6138 -> 3249 bytes
     Resources/options_transfer_over_landscape.png |  Bin 7499 -> 3865 bytes
     .../options_transfer_over_landscape~ipad.png  |  Bin 4901 -> 3207 bytes
     Resources/options_transfer_over~ipad.png      |  Bin 4901 -> 3207 bytes
     Resources/settings_default.png                |  Bin 5860 -> 4166 bytes
     Resources/settings_default_landscape~ipad.png |  Bin 7759 -> 6041 bytes
     Resources/settings_default~ipad.png           |  Bin 7145 -> 4771 bytes
     Resources/settings_over.png                   |  Bin 6003 -> 4120 bytes
     Resources/settings_over_landscape~ipad.png    |  Bin 7739 -> 6198 bytes
     Resources/settings_over~ipad.png              |  Bin 7310 -> 5000 bytes
     Resources/settings_selected.png               |  Bin 5832 -> 4070 bytes
     .../settings_selected_landscape~ipad.png      |  Bin 7735 -> 6045 bytes
     Resources/settings_selected~ipad.png          |  Bin 7147 -> 4817 bytes
     Resources/setup_back_default.png              |  Bin 5052 -> 2693 bytes
     .../setup_back_default_landscape~ipad.png     |  Bin 0 -> 4503 bytes
     Resources/setup_back_default~ipad.png         |  Bin 0 -> 5053 bytes
     Resources/setup_back_disabled.png             |  Bin 5050 -> 2683 bytes
     .../setup_back_disabled_landscape~ipad.png    |  Bin 0 -> 4378 bytes
     Resources/setup_back_disabled~ipad.png        |  Bin 0 -> 4928 bytes
     Resources/setup_back_over.png                 |  Bin 5122 -> 3788 bytes
     Resources/setup_back_over_landscape~ipad.png  |  Bin 0 -> 4748 bytes
     Resources/setup_back_over~ipad.png            |  Bin 0 -> 5202 bytes
     Resources/setup_cancel_default.png            |  Bin 5933 -> 3194 bytes
     .../setup_cancel_default_landscape~ipad.png   |  Bin 0 -> 5239 bytes
     Resources/setup_cancel_default~ipad.png       |  Bin 0 -> 6066 bytes
     Resources/setup_cancel_disabled.png           |  Bin 5924 -> 3130 bytes
     .../setup_cancel_disabled_landscape~ipad.png  |  Bin 0 -> 5181 bytes
     Resources/setup_cancel_disabled~ipad.png      |  Bin 0 -> 5900 bytes
     Resources/setup_cancel_over.png               |  Bin 5840 -> 4082 bytes
     .../setup_cancel_over_landscape~ipad.png      |  Bin 0 -> 5650 bytes
     Resources/setup_cancel_over~ipad.png          |  Bin 0 -> 6315 bytes
     Resources/setup_start_default.png             |  Bin 9482 -> 3072 bytes
     .../setup_start_default_landscape~ipad.png    |  Bin 0 -> 4906 bytes
     Resources/setup_start_default~ipad.png        |  Bin 0 -> 5521 bytes
     Resources/setup_start_disabled.png            |  Bin 5620 -> 2637 bytes
     .../setup_start_disabled_landscape~ipad.png   |  Bin 0 -> 4686 bytes
     Resources/setup_start_disabled~ipad.png       |  Bin 0 -> 5449 bytes
     Resources/setup_start_over.png                |  Bin 7832 -> 4093 bytes
     Resources/setup_start_over_landscape~ipad.png |  Bin 0 -> 5210 bytes
     Resources/setup_start_over~ipad.png           |  Bin 0 -> 5748 bytes
     Resources/setup_title_assistant.png           |  Bin 7973 -> 0 bytes
     Resources/setup_welcome_logo.png              |  Bin 17379 -> 6653 bytes
     Resources/setup_welcome_logo~ipad.png         |  Bin 0 -> 26556 bytes
     Resources/speaker_off_default.png             |  Bin 7302 -> 2956 bytes
     Resources/speaker_off_default_landscape.png   |  Bin 7927 -> 3394 bytes
     .../speaker_off_default_landscape~ipad.png    |  Bin 5522 -> 3452 bytes
     Resources/speaker_off_default~ipad.png        |  Bin 5522 -> 3437 bytes
     Resources/speaker_off_disabled.png            |  Bin 6889 -> 2789 bytes
     Resources/speaker_off_disabled_landscape.png  |  Bin 7531 -> 3214 bytes
     .../speaker_off_disabled_landscape~ipad.png   |  Bin 5126 -> 3303 bytes
     Resources/speaker_off_disabled~ipad.png       |  Bin 5126 -> 3273 bytes
     Resources/speaker_off_over.png                |  Bin 7394 -> 2937 bytes
     Resources/speaker_off_over_landscape.png      |  Bin 7878 -> 3382 bytes
     Resources/speaker_off_over_landscape~ipad.png |  Bin 5452 -> 3435 bytes
     Resources/speaker_off_over~ipad.png           |  Bin 5452 -> 3469 bytes
     Resources/speaker_on_default.png              |  Bin 5857 -> 2105 bytes
     Resources/speaker_on_default_landscape.png    |  Bin 6524 -> 2572 bytes
     .../speaker_on_default_landscape~ipad.png     |  Bin 4610 -> 2509 bytes
     Resources/speaker_on_default~ipad.png         |  Bin 4610 -> 2509 bytes
     Resources/speaker_on_disabled.png             |  Bin 5547 -> 2038 bytes
     Resources/speaker_on_disabled_landscape.png   |  Bin 6204 -> 2493 bytes
     .../speaker_on_disabled_landscape~ipad.png    |  Bin 4312 -> 2408 bytes
     Resources/speaker_on_disabled~ipad.png        |  Bin 4312 -> 2421 bytes
     Resources/speaker_on_over.png                 |  Bin 5859 -> 2080 bytes
     Resources/speaker_on_over_landscape.png       |  Bin 6464 -> 2541 bytes
     Resources/speaker_on_over_landscape~ipad.png  |  Bin 4532 -> 2497 bytes
     Resources/speaker_on_over~ipad.png            |  Bin 4532 -> 2500 bytes
     Resources/switch_camera_default.png           |  Bin 4067 -> 2806 bytes
     Resources/switch_camera_over.png              |  Bin 4163 -> 2840 bytes
     Resources/toolsbar_background.png             |  Bin 161 -> 971 bytes
     Resources/video_off_default.png               |  Bin 7625 -> 3769 bytes
     Resources/video_off_default_landscape.png     |  Bin 7924 -> 3937 bytes
     .../video_off_default_landscape~ipad.png      |  Bin 5129 -> 3580 bytes
     Resources/video_off_default~ipad.png          |  Bin 5129 -> 3587 bytes
     Resources/video_off_disabled.png              |  Bin 7340 -> 3632 bytes
     Resources/video_off_disabled_landscape.png    |  Bin 7520 -> 3846 bytes
     .../video_off_disabled_landscape~ipad.png     |  Bin 4815 -> 3437 bytes
     Resources/video_off_disabled~ipad.png         |  Bin 4815 -> 3456 bytes
     Resources/video_off_over.png                  |  Bin 7602 -> 3614 bytes
     Resources/video_off_over_landscape.png        |  Bin 7915 -> 3925 bytes
     Resources/video_off_over_landscape~ipad.png   |  Bin 5108 -> 3571 bytes
     Resources/video_off_over~ipad.png             |  Bin 5108 -> 3590 bytes
     Resources/video_on_default.png                |  Bin 6063 -> 2852 bytes
     Resources/video_on_default_landscape.png      |  Bin 6535 -> 3064 bytes
     Resources/video_on_default_landscape~ipad.png |  Bin 4151 -> 2584 bytes
     Resources/video_on_default~ipad.png           |  Bin 4151 -> 2584 bytes
     Resources/video_on_disabled.png               |  Bin 5973 -> 2865 bytes
     Resources/video_on_disabled_landscape.png     |  Bin 6229 -> 3051 bytes
     .../video_on_disabled_landscape~ipad.png      |  Bin 3987 -> 2551 bytes
     Resources/video_on_disabled~ipad.png          |  Bin 3987 -> 2512 bytes
     Resources/video_on_over.png                   |  Bin 6074 -> 2831 bytes
     Resources/video_on_over_landscape.png         |  Bin 6458 -> 3111 bytes
     Resources/video_on_over_landscape~ipad.png    |  Bin 4127 -> 2542 bytes
     Resources/video_on_over~ipad.png              |  Bin 4127 -> 2577 bytes
     linphone-Info.plist                           |    2 +
     linphone.ldb/Contents.plist                   | 4194 ++++++++++++++++-
     .../{17 => 27}/ChatRoomViewController.xib     |  400 +-
     .../{3 => 10}/ChatViewController.xib          |  138 +-
     .../ContactDetailsLabelViewController.xib     |  101 +-
     .../{1 => 3}/ContactDetailsViewController.xib |  154 +-
     .../{1 => 11}/ContactsViewController.xib      |  420 +-
     .../{2 => 3}/DialerViewController.xib         |  329 +-
     .../{7 => 9}/DialerViewController~ipad.xib    |   86 +-
     .../{1 => 3}/FirstLoginViewController.xib     |  125 +-
     .../{2 => 4}/HistoryDetailsViewController.xib |  182 +-
     .../{2 => 11}/HistoryViewController.xib       |  423 +-
     .../{6 => 8}/ImageViewController.xib          |   80 +-
     .../{2 => 4}/InCallViewController.xib         |  137 +-
     .../{1 => 3}/IncomingCallViewController.xib   |   64 +-
     .../12/WizardViewController.xib               |  446 ++
     .../8/WizardViewController~ipad.xib           |  799 ++++
     .../Classes/WizardViews/10/WizardViews.xib    | 1721 +++++++
     .../UICallBar/{2 => 7}/UICallBar.xib          |  662 +--
     .../{2 => 6}/UICallBar~ipad.xib               |  396 +-
     .../UICallCell/{2 => 3}/UICallCell.xib        |  124 +-
     .../2/UIConferenceHeader.xib                  |  285 ++
     .../{1 => 2}/UIContactDetailsFooter.xib       |   13 +-
     .../{1 => 2}/UIContactDetailsHeader.xib       |   74 +-
     .../UIMainBar/{2 => 6}/UIMainBar.xib          |  156 +-
     .../{2 => 6}/UIMainBar~ipad.xib               |  295 +-
     linphone.xcodeproj/project.pbxproj            |  300 +-
     370 files changed, 16730 insertions(+), 11938 deletions(-)
     create mode 100644 Classes/en.lproj/WizardViewController~ipad.xib
     rename linphone.ldb/Resources/Classes/WizardViewController/3/WizardViewController.xib => Classes/en.lproj/WizardViews.xib (76%)
     create mode 100644 Classes/fr.lproj/WizardViewController~ipad.xib
     create mode 100644 Classes/fr.lproj/WizardViews.xib
     create mode 100644 Resources/bubble.png
     create mode 100644 Resources/chat_address.png
     delete mode 100644 Resources/chat_background.9.png
     delete mode 100644 Resources/chat_background.9@2x.png
     create mode 100644 Resources/chat_cancel_default.png
     create mode 100644 Resources/chat_cancel_over.png
     delete mode 100644 Resources/chat_field.9.png
     delete mode 100644 Resources/chat_field.9@2x.png
     delete mode 100644 Resources/chat_field.png
     create mode 100644 Resources/chat_message_background.9.png
     create mode 100644 Resources/chat_message_background.9@2x.png
     rename Resources/{chat_background.png => chat_message_background.png} (100%)
     create mode 100644 Resources/chat_photo_default.png
     create mode 100644 Resources/chat_photo_disabled.png
     create mode 100644 Resources/chat_photo_over.png
     create mode 100644 Resources/chat_progressbar_background.png
     create mode 100644 Resources/dialer_alt_disabled.png
     create mode 100644 Resources/dialer_alt_disabled_landscape.png
     create mode 100644 Resources/dialer_alt_disabled_landscape~ipad.png
     create mode 100644 Resources/dialer_alt_disabled~ipad.png
     create mode 100644 Resources/form_invalid.png
     create mode 100644 Resources/form_valid.png
     create mode 100644 Resources/history_delete_default.png
     create mode 100644 Resources/history_delete_over.png
     create mode 100644 Resources/linphone-splashscreen.png
     create mode 100644 Resources/linphone-splashscreen@2x.png
     create mode 100644 Resources/logo_linphone_trame_background.png
     create mode 100644 Resources/setup_back_default_landscape~ipad.png
     create mode 100644 Resources/setup_back_default~ipad.png
     create mode 100644 Resources/setup_back_disabled_landscape~ipad.png
     create mode 100644 Resources/setup_back_disabled~ipad.png
     create mode 100644 Resources/setup_back_over_landscape~ipad.png
     create mode 100644 Resources/setup_back_over~ipad.png
     create mode 100644 Resources/setup_cancel_default_landscape~ipad.png
     create mode 100644 Resources/setup_cancel_default~ipad.png
     create mode 100644 Resources/setup_cancel_disabled_landscape~ipad.png
     create mode 100644 Resources/setup_cancel_disabled~ipad.png
     create mode 100644 Resources/setup_cancel_over_landscape~ipad.png
     create mode 100644 Resources/setup_cancel_over~ipad.png
     create mode 100644 Resources/setup_start_default_landscape~ipad.png
     create mode 100644 Resources/setup_start_default~ipad.png
     create mode 100644 Resources/setup_start_disabled_landscape~ipad.png
     create mode 100644 Resources/setup_start_disabled~ipad.png
     create mode 100644 Resources/setup_start_over_landscape~ipad.png
     create mode 100644 Resources/setup_start_over~ipad.png
     delete mode 100644 Resources/setup_title_assistant.png
     create mode 100644 Resources/setup_welcome_logo~ipad.png
     rename linphone.ldb/Resources/Classes/ChatRoomViewController/{17 => 27}/ChatRoomViewController.xib (83%)
     rename linphone.ldb/Resources/Classes/ChatViewController/{3 => 10}/ChatViewController.xib (85%)
     rename linphone.ldb/Resources/Classes/ContactDetailsLabelViewController/{1 => 3}/ContactDetailsLabelViewController.xib (77%)
     rename linphone.ldb/Resources/Classes/ContactDetailsViewController/{1 => 3}/ContactDetailsViewController.xib (85%)
     rename linphone.ldb/Resources/Classes/ContactsViewController/{1 => 11}/ContactsViewController.xib (65%)
     rename linphone.ldb/Resources/Classes/DialerViewController/{2 => 3}/DialerViewController.xib (83%)
     rename linphone.ldb/Resources/Classes/DialerViewController~ipad/{7 => 9}/DialerViewController~ipad.xib (97%)
     rename linphone.ldb/Resources/Classes/FirstLoginViewController/{1 => 3}/FirstLoginViewController.xib (82%)
     rename linphone.ldb/Resources/Classes/HistoryDetailsViewController/{2 => 4}/HistoryDetailsViewController.xib (86%)
     rename linphone.ldb/Resources/Classes/HistoryViewController/{2 => 11}/HistoryViewController.xib (66%)
     rename linphone.ldb/Resources/Classes/ImageViewController/{6 => 8}/ImageViewController.xib (80%)
     rename linphone.ldb/Resources/Classes/InCallViewController/{2 => 4}/InCallViewController.xib (79%)
     rename linphone.ldb/Resources/Classes/IncomingCallViewController/{1 => 3}/IncomingCallViewController.xib (99%)
     create mode 100644 linphone.ldb/Resources/Classes/WizardViewController/12/WizardViewController.xib
     create mode 100644 linphone.ldb/Resources/Classes/WizardViewController~ipad/8/WizardViewController~ipad.xib
     create mode 100644 linphone.ldb/Resources/Classes/WizardViews/10/WizardViews.xib
     rename linphone.ldb/Resources/LinphoneUI/UICallBar/{2 => 7}/UICallBar.xib (85%)
     rename linphone.ldb/Resources/LinphoneUI/UICallBar~ipad/{2 => 6}/UICallBar~ipad.xib (90%)
     rename linphone.ldb/Resources/LinphoneUI/UICallCell/{2 => 3}/UICallCell.xib (98%)
     create mode 100644 linphone.ldb/Resources/LinphoneUI/UIConferenceHeader/2/UIConferenceHeader.xib
     rename linphone.ldb/Resources/LinphoneUI/UIContactDetailsFooter/{1 => 2}/UIContactDetailsFooter.xib (96%)
     rename linphone.ldb/Resources/LinphoneUI/UIContactDetailsHeader/{1 => 2}/UIContactDetailsHeader.xib (82%)
     rename linphone.ldb/Resources/LinphoneUI/UIMainBar/{2 => 6}/UIMainBar.xib (87%)
     rename linphone.ldb/Resources/LinphoneUI/UIMainBar~ipad/{2 => 6}/UIMainBar~ipad.xib (85%)
    
    diff --git a/Classes/ChatRoomTableViewController.m b/Classes/ChatRoomTableViewController.m
    index 9dea07a78..349b80f8f 100644
    --- a/Classes/ChatRoomTableViewController.m
    +++ b/Classes/ChatRoomTableViewController.m
    @@ -41,11 +41,6 @@
     
     #pragma mark - ViewController Functions
     
    -- (void)viewDidLoad {
    -    [super viewDidLoad];
    -    [self.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4
    -}
    -
     - (void)viewWillDisappear:(BOOL)animated {
         [super viewWillDisappear:animated];
         [TUNinePatchCache flushCache]; // Clear cache
    diff --git a/Classes/ChatRoomViewController.h b/Classes/ChatRoomViewController.h
    index aeb721217..b79d4102a 100644
    --- a/Classes/ChatRoomViewController.h
    +++ b/Classes/ChatRoomViewController.h
    @@ -41,11 +41,9 @@
     @property (nonatomic, retain) IBOutlet UILabel *addressLabel;
     @property (nonatomic, retain) IBOutlet UIImageView *avatarImage;
     @property (nonatomic, retain) IBOutlet UIView *headerView;
    -@property (nonatomic, retain) IBOutlet UIView *footerView;
     @property (nonatomic, retain) IBOutlet UIView *chatView;
     @property (nonatomic, retain) IBOutlet UIView *messageView;
     @property (nonatomic, retain) IBOutlet UIImageView *messageBackgroundImage;
    -@property (nonatomic, retain) IBOutlet UIImageView *footerBackgroundImage;
     @property (nonatomic, retain) IBOutlet UIImageView *transferBackgroundImage;
     @property (nonatomic, retain) IBOutlet UITapGestureRecognizer *listTapGestureRecognizer;
     
    diff --git a/Classes/ChatRoomViewController.m b/Classes/ChatRoomViewController.m
    index 7e113f581..fcbbaa54b 100644
    --- a/Classes/ChatRoomViewController.m
    +++ b/Classes/ChatRoomViewController.m
    @@ -34,11 +34,9 @@
     @synthesize addressLabel;
     @synthesize avatarImage;
     @synthesize headerView;
    -@synthesize footerView;
     @synthesize chatView;
     @synthesize messageView;
     @synthesize messageBackgroundImage;
    -@synthesize footerBackgroundImage;
     @synthesize transferBackgroundImage;
     @synthesize listTapGestureRecognizer;
     @synthesize pictureButton;
    @@ -54,6 +52,7 @@
         if (self != nil) {
             self->chatRoom = NULL;
             self->imageSharing = NULL;
    +        self->listTapGestureRecognizer = [[UITapGestureRecognizer alloc] init];
         }
         return self;
     }
    @@ -68,10 +67,8 @@
         [addressLabel release];
         [avatarImage release];
         [headerView release];
    -    [footerView release];
         [messageView release];
         [messageBackgroundImage release];
    -    [footerBackgroundImage release];
         [transferBackgroundImage release];
         
         [listTapGestureRecognizer release];
    @@ -98,7 +95,7 @@ static UICompositeViewDescription *compositeDescription = nil;
                                                                      tabBar:/*@"UIMainBar"*/nil
                                                               tabBarEnabled:false /*to keep room for chat*/
                                                                  fullscreen:false
    -                                                          landscapeMode:[LinphoneManager runningOnIpad]
    +                                                          landscapeMode:true
                                                                portraitMode:true];
         }
         return compositeDescription;
    @@ -112,17 +109,24 @@ static UICompositeViewDescription *compositeDescription = nil;
         [tableController setChatRoomDelegate:self];
         
         // Set selected+over background: IB lack !
    -    [editButton setImage:[UIImage imageNamed:@"chat_ok_over.png"] 
    +    [editButton setBackgroundImage:[UIImage imageNamed:@"chat_ok_over.png"]
                     forState:(UIControlStateHighlighted | UIControlStateSelected)];
         
    +    [LinphoneUtils buttonFixStates:editButton];
    +    
         messageField.minNumberOfLines = 1;
     	messageField.maxNumberOfLines = ([LinphoneManager runningOnIpad])?10:3;
         messageField.delegate = self;
     	messageField.font = [UIFont systemFontOfSize:18.0f];
    -    messageField.contentInset = UIEdgeInsetsZero;
    +    messageField.contentInset = UIEdgeInsetsMake(1, 1, 0, 0);
         messageField.backgroundColor = [UIColor clearColor];
         [sendButton setEnabled:FALSE];
    +    
    +    [listTapGestureRecognizer addTarget:self action:@selector(onListTap:)];
    +    [tableController.tableView addGestureRecognizer:listTapGestureRecognizer];
         [listTapGestureRecognizer setEnabled:FALSE];
    +    
    +    [tableController.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4
     }
     
     
    @@ -150,29 +154,11 @@ static UICompositeViewDescription *compositeDescription = nil;
         [[tableController tableView] reloadData];
         
         [messageBackgroundImage setImage:[TUNinePatchCache imageOfSize:[messageBackgroundImage bounds].size
    -                                               forNinePatchNamed:@"chat_field"]];
    -    [footerBackgroundImage setImage:[TUNinePatchCache imageOfSize:[footerBackgroundImage bounds].size
    -                                               forNinePatchNamed:@"chat_background"]];
    -    [transferBackgroundImage setImage:[TUNinePatchCache imageOfSize:[transferBackgroundImage bounds].size
    -                                                   forNinePatchNamed:@"chat_background"]];
    +                                               forNinePatchNamed:@"chat_message_background"]];
         
     	BOOL fileSharingEnabled = [[LinphoneManager instance] lpConfigStringForKey:@"sharing_server_preference"] != NULL 
     								&& [[[LinphoneManager instance] lpConfigStringForKey:@"sharing_server_preference"] length]>0;
    -    
    -    CGRect pictureFrame = pictureButton.frame;
    -	CGRect messageframe = messageView.frame;
    -    CGRect sendFrame = sendButton.frame;
    -	if (fileSharingEnabled) {
    -        [pictureButton setHidden:FALSE];
    -        messageframe.origin.x = pictureFrame.origin.x + pictureFrame.size.width;
    -        messageframe.size.width = sendFrame.origin.x - messageframe.origin.x;
    -	} else {
    -        [pictureButton setHidden:TRUE];
    -        messageframe.origin.x = pictureFrame.origin.x;
    -        messageframe.size.width = sendFrame.origin.x - messageframe.origin.x;
    -	}
    -	[messageView setFrame:messageframe];
    -	
    +    [pictureButton setEnabled:fileSharingEnabled];
     }
     
     - (void)viewWillDisappear:(BOOL)animated {
    @@ -202,6 +188,17 @@ static UICompositeViewDescription *compositeDescription = nil;
     												  object:nil];
     }
     
    +- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
    +    [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
    +    [messageBackgroundImage setImage:[TUNinePatchCache imageOfSize:[messageBackgroundImage bounds].size
    +                                                 forNinePatchNamed:@"chat_message_background"]];
    +}
    +
    +- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    +    [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
    +
    +}
    +
     -(void)didReceiveMemoryWarning {
         [TUNinePatchCache flushCache]; // will remove any images cache (freeing any cached but unused images)
     }
    @@ -361,10 +358,10 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     - (void)growingTextView:(HPGrowingTextView *)growingTextView willChangeHeight:(float)height {
         int diff = height - growingTextView.bounds.size.height;
         
    -    CGRect footerRect = [footerView frame];
    -    footerRect.origin.y -= diff;
    -    footerRect.size.height += diff;
    -    [footerView setFrame:footerRect];
    +    CGRect messageRect = [messageView frame];
    +    messageRect.origin.y -= diff;
    +    messageRect.size.height += diff;
    +    [messageView setFrame:messageRect];
         
         // Always stay at bottom
         CGPoint contentPt = [tableController.tableView contentOffset];
    @@ -376,10 +373,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         [tableController.view setFrame:tableRect];
         
         [messageBackgroundImage setImage:[TUNinePatchCache imageOfSize:[messageBackgroundImage bounds].size
    -                                               forNinePatchNamed:@"chat_field"]];
    -    
    -    [footerBackgroundImage setImage:[TUNinePatchCache imageOfSize:[footerBackgroundImage bounds].size
    -                                                forNinePatchNamed:@"chat_background"]];
    +                                               forNinePatchNamed:@"chat_message_background"]];
     }
     
     
    @@ -448,7 +442,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     - (BOOL)chatRoomStartImageDownload:(NSURL*)url userInfo:(id)userInfo {
         if(imageSharing == nil) {
             imageSharing = [ImageSharing imageSharingDownload:url delegate:self userInfo:userInfo];
    -        [footerView setHidden:TRUE];
    +        [messageView setHidden:TRUE];
             [transferView setHidden:FALSE];
             return TRUE;
         }
    @@ -459,7 +453,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         if(imageSharing == nil) {
             NSString *urlString = [[LinphoneManager instance] lpConfigStringForKey:@"sharing_server_preference"];
             imageSharing = [ImageSharing imageSharingUpload:[NSURL URLWithString:urlString] image:image delegate:self userInfo:url];
    -        [footerView setHidden:TRUE];
    +        [messageView setHidden:TRUE];
             [transferView setHidden:FALSE];
             return TRUE;
         }
    @@ -474,13 +468,13 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
     }
     
     - (void)imageSharingAborted:(ImageSharing*)aimageSharing {
    -    [footerView setHidden:FALSE];
    +    [messageView setHidden:FALSE];
     	[transferView setHidden:TRUE];
         imageSharing = NULL;
     }
     
     - (void)imageSharingError:(ImageSharing*)aimageSharing error:(NSError *)error {
    -    [footerView setHidden:FALSE];
    +    [messageView setHidden:FALSE];
     	[transferView setHidden:TRUE];
         NSString *url = [aimageSharing.connection.currentRequest.URL absoluteString];
         if (aimageSharing.upload) {
    @@ -512,13 +506,13 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         
         [self sendMessage:nil withExterlBodyUrl:url withInternalUrl:imageURL];
         
    -    [footerView setHidden:FALSE];
    +    [messageView setHidden:FALSE];
     	[transferView setHidden:TRUE];
         imageSharing = NULL;
     }
     
     - (void)imageSharingDownloadDone:(ImageSharing*)aimageSharing image:(UIImage *)image {
    -    [footerView setHidden:FALSE];
    +    [messageView setHidden:FALSE];
     	[transferView setHidden:TRUE];
         
         ChatModel *chat = (ChatModel *)[imageSharing userInfo];
    @@ -608,7 +602,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
             CGRect tableFrame = [tableController.view frame];
             tableFrame.origin.y = [headerView frame].origin.y + [headerView frame].size.height;
             double diff = tableFrame.size.height;
    -        tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y;
    +        tableFrame.size.height = [messageView frame].origin.y - tableFrame.origin.y;
             diff = tableFrame.size.height - diff;
             [tableController.view setFrame:tableFrame];
             
    @@ -663,7 +657,7 @@ static void message_status(LinphoneChatMessage* msg,LinphoneChatMessageState sta
         {
             CGRect tableFrame = [tableController.view frame];
             tableFrame.origin.y = [headerView frame].origin.y + [headerView frame].size.height;
    -        tableFrame.size.height = [footerView frame].origin.y - tableFrame.origin.y;
    +        tableFrame.size.height = [messageView frame].origin.y - tableFrame.origin.y;
             [tableController.view setFrame:tableFrame];
         }
         
    diff --git a/Classes/ChatViewController.m b/Classes/ChatViewController.m
    index ffd9008de..264c7b47f 100644
    --- a/Classes/ChatViewController.m
    +++ b/Classes/ChatViewController.m
    @@ -50,8 +50,12 @@
         [super viewDidLoad];
         
         // Set selected+over background: IB lack !
    -    [editButton setImage:[UIImage imageNamed:@"chat_ok_over.png"] 
    +    [editButton setBackgroundImage:[UIImage imageNamed:@"chat_ok_over.png"]
                     forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    
    +    [LinphoneUtils buttonFixStates:editButton];
    +
    +    [tableController.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4
     }
     
     - (void)viewWillAppear:(BOOL)animated {
    diff --git a/Classes/ConsoleViewController.m b/Classes/ConsoleViewController.m
    index 6e289805b..fe6a09f4c 100644
    --- a/Classes/ConsoleViewController.m
    +++ b/Classes/ConsoleViewController.m
    @@ -83,11 +83,12 @@ static UICompositeViewDescription *compositeDescription = nil;
         
         [logsView setDelegate:self];
         
    +    UIScrollView *scrollView = [ConsoleViewController defaultScrollView:logsView];
         UIEdgeInsets inset = {0, 0, 10, 0};
    -    [logsView.scrollView setContentInset:inset];
    -    [logsView.scrollView setScrollIndicatorInsets:inset];
    +    [scrollView setContentInset:inset];
    +    [scrollView setScrollIndicatorInsets:inset];
         
    -    [logsView.scrollView setBounces:FALSE];
    +    [scrollView setBounces:FALSE];
     }
     
     
    @@ -115,6 +116,21 @@ static UICompositeViewDescription *compositeDescription = nil;
     
     #pragma mark - 
     
    ++ (UIScrollView *)defaultScrollView:(UIWebView *)webView {
    +    UIScrollView *scrollView = nil;
    +    
    +    if ([[UIDevice currentDevice].systemVersion doubleValue] >= 5.0) {
    +        return webView.scrollView;
    +    }  else {
    +        for (UIView *subview in [webView subviews]) {
    +            if ([subview isKindOfClass:[UIScrollView class]]) {
    +                scrollView = (UIScrollView *)subview;
    +            }
    +        }
    +    }
    +    return scrollView;
    +}
    +
     - (void)clear {
         NSString *js = @"document.getElementById('content').innerHTML += ''";
         [logsView stringByEvaluatingJavaScriptFromString:js];
    diff --git a/Classes/ConsoleViewController.xib b/Classes/ConsoleViewController.xib
    index 2276a8ec7..85f825ff3 100644
    --- a/Classes/ConsoleViewController.xib
    +++ b/Classes/ConsoleViewController.xib
    @@ -3,12 +3,12 @@
     	
     		784
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			YES
    @@ -46,9 +46,9 @@
     						
     						
     						_NS:9
    -						
    +						
     							3
    -							MQA
    +							MCAwAA
     						
     						IBCocoaTouchFramework
     					
    @@ -57,10 +57,7 @@
     				
     				
     				
    -				
    -					3
    -					MCAwAA
    -				
    +				
     				NO
     				IBCocoaTouchFramework
     			
    @@ -191,7 +188,7 @@
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    @@ -199,6 +196,6 @@
     		
     		YES
     		3
    -		1498
    +		1926
     	
     
    diff --git a/Classes/ContactDetailsTableViewController.m b/Classes/ContactDetailsTableViewController.m
    index 4ee53e10b..762d8cc0e 100644
    --- a/Classes/ContactDetailsTableViewController.m
    +++ b/Classes/ContactDetailsTableViewController.m
    @@ -117,7 +117,6 @@ static const int contactSections[ContactSections_MAX] = {ContactSections_None, C
         [super viewDidLoad];
         [headerController view]; // Force view load
         [footerController view]; // Force view load
    -    [self.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4
     }
     
     - (void)viewDidDisappear:(BOOL)animated {
    diff --git a/Classes/ContactDetailsViewController.m b/Classes/ContactDetailsViewController.m
    index 071f038d3..8f00b37b4 100644
    --- a/Classes/ContactDetailsViewController.m
    +++ b/Classes/ContactDetailsViewController.m
    @@ -202,12 +202,16 @@ static void sync_address_book (ABAddressBookRef addressBook, CFDictionaryRef inf
         [super viewDidLoad];
         
         // Set selected+over background: IB lack !
    -    [editButton setImage:[UIImage imageNamed:@"contact_ok_over.png"] 
    +    [editButton setBackgroundImage:[UIImage imageNamed:@"contact_ok_over.png"]
                     forState:(UIControlStateHighlighted | UIControlStateSelected)];
         
         // Set selected+disabled background: IB lack !
    -    [editButton setImage:[UIImage imageNamed:@"contact_ok_disabled.png"]
    +    [editButton setBackgroundImage:[UIImage imageNamed:@"contact_ok_disabled.png"]
                     forState:(UIControlStateDisabled | UIControlStateSelected)];
    +    
    +    [LinphoneUtils buttonFixStates:editButton];
    +
    +    [tableController.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4
     }
     
     - (void)viewWillDisappear:(BOOL)animated {
    diff --git a/Classes/ContactsViewController.m b/Classes/ContactsViewController.m
    index 287b4148b..f4c6b8157 100644
    --- a/Classes/ContactsViewController.m
    +++ b/Classes/ContactsViewController.m
    @@ -154,12 +154,18 @@ static UICompositeViewDescription *compositeDescription = nil;
         [self changeView:History_All];
         
         // Set selected+over background: IB lack !
    -    [linphoneButton setImage:[UIImage imageNamed:@"contacts_linphone_selected.png"] 
    +    [linphoneButton setBackgroundImage:[UIImage imageNamed:@"contacts_linphone_selected.png"]
                      forState:(UIControlStateHighlighted | UIControlStateSelected)];
         
    +    [LinphoneUtils buttonFixStates:linphoneButton];
    +    
         // Set selected+over background: IB lack !
    -    [allButton setImage:[UIImage imageNamed:@"contacts_all_selected.png"] 
    +    [allButton setBackgroundImage:[UIImage imageNamed:@"contacts_all_selected.png"] 
                         forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    
    +    [LinphoneUtils buttonFixStates:allButton];
    +    
    +    [tableController.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4
     }
     
     
    diff --git a/Classes/DialerViewController.m b/Classes/DialerViewController.m
    index 68fe4ed06..b16c175f1 100644
    --- a/Classes/DialerViewController.m
    +++ b/Classes/DialerViewController.m
    @@ -146,9 +146,11 @@ static UICompositeViewDescription *compositeDescription = nil;
                 if(linphone_core_video_enabled(lc) && linphone_core_video_preview_enabled(lc)) {
                     linphone_core_set_native_preview_window_id(lc, (unsigned long)videoPreview);
                     [backgroundView setHidden:FALSE];
    +                [videoCameraSwitch setHidden:FALSE];
                 } else {
                     linphone_core_set_native_preview_window_id(lc, (unsigned long)NULL);
                     [backgroundView setHidden:TRUE];
    +                [videoCameraSwitch setHidden:TRUE];
                 }
             }
         }
    @@ -235,9 +237,11 @@ static UICompositeViewDescription *compositeDescription = nil;
             if(linphone_core_video_enabled(lc) && linphone_core_video_preview_enabled(lc)) {
                 linphone_core_set_native_preview_window_id(lc, (unsigned long)videoPreview);
                 [backgroundView setHidden:FALSE];
    +            [videoCameraSwitch setHidden:FALSE];
             } else {
                 linphone_core_set_native_preview_window_id(lc, (unsigned long)NULL);
                 [backgroundView setHidden:TRUE];
    +            [videoCameraSwitch setHidden:TRUE];
             }
         }
     }
    diff --git a/Classes/HistoryViewController.m b/Classes/HistoryViewController.m
    index 0883b41aa..0f5410f44 100644
    --- a/Classes/HistoryViewController.m
    +++ b/Classes/HistoryViewController.m
    @@ -83,8 +83,10 @@ static UICompositeViewDescription *compositeDescription = nil;
             [tableController viewWillAppear:animated];
         }
         
    -    if([tableController isEditing])
    +    if([tableController isEditing]) {
             [tableController setEditing:FALSE animated:FALSE];
    +    }
    +    [deleteButton setHidden:TRUE];
         [editButton setOff];
         [self changeView: History_All];
         
    @@ -120,16 +122,24 @@ static UICompositeViewDescription *compositeDescription = nil;
         [self changeView: History_All];
         
         // Set selected+over background: IB lack !
    -    [editButton setImage:[UIImage imageNamed:@"history_ok_over.png"] 
    +    [editButton setBackgroundImage:[UIImage imageNamed:@"history_ok_over.png"]
                               forState:(UIControlStateHighlighted | UIControlStateSelected)];
         
    -    // Set selected+over background: IB lack !
    -    [allButton setImage:[UIImage imageNamed:@"history_all_selected.png"] 
    -                    forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    [LinphoneUtils buttonFixStates:editButton];
         
         // Set selected+over background: IB lack !
    -    [missedButton setImage:[UIImage imageNamed:@"history_missed_selected.png"] 
    +    [allButton setBackgroundImage:[UIImage imageNamed:@"history_all_selected.png"] 
    +                    forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    
    +    [LinphoneUtils buttonFixStatesForTabs:allButton];
    +    
    +    // Set selected+over background: IB lack !
    +    [missedButton setBackgroundImage:[UIImage imageNamed:@"history_missed_selected.png"] 
                    forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    
    +    [LinphoneUtils buttonFixStatesForTabs:missedButton];
    +    
    +    [tableController.tableView setBackgroundColor:[UIColor clearColor]]; // Can't do it in Xib: issue with ios4
     }
     
     
    diff --git a/Classes/LinphoneUI/UICallBar.m b/Classes/LinphoneUI/UICallBar.m
    index b6a02a307..553291178 100644
    --- a/Classes/LinphoneUI/UICallBar.m
    +++ b/Classes/LinphoneUI/UICallBar.m
    @@ -125,73 +125,95 @@
     	[sharpButton  setDigit:'#'];
         [sharpButton setDtmf:true];
         
    -    // Set selected+disabled background: IB lack !
    -    [videoButton setImage:[UIImage imageNamed:@"video_on_disabled.png"] 
    -                           forState:(UIControlStateDisabled | UIControlStateSelected)];
    -    [(UIButton*) [landscapeView viewWithTag:[videoButton tag]] 
    -                 setImage:[UIImage imageNamed:@"video_on_disabled_landscape.png"] 
    -                           forState:(UIControlStateDisabled | UIControlStateSelected)];
    +    {
    +        UIButton *videoButtonLandscape = (UIButton*)[landscapeView viewWithTag:[videoButton tag]];
    +        // Set selected+disabled background: IB lack !
    +        [videoButton setBackgroundImage:[UIImage imageNamed:@"video_on_disabled.png"]
    +                               forState:(UIControlStateDisabled | UIControlStateSelected)];
    +        [videoButtonLandscape setBackgroundImage:[UIImage imageNamed:@"video_on_disabled_landscape.png"]
    +                                        forState:(UIControlStateDisabled | UIControlStateSelected)];
    +        
    +        // Set selected+over background: IB lack !
    +        [videoButton setBackgroundImage:[UIImage imageNamed:@"video_on_over.png"]
    +                               forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        [videoButtonLandscape setBackgroundImage:[UIImage imageNamed:@"video_on_over_landscape.png"]
    +                                        forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        [LinphoneUtils buttonFixStates:videoButton];
    +        [LinphoneUtils buttonFixStates:videoButtonLandscape];
    +    }
         
    -    // Set selected+over background: IB lack !
    -    [videoButton setImage:[UIImage imageNamed:@"video_on_over.png"] 
    -                           forState:(UIControlStateHighlighted | UIControlStateSelected)];
    -    [(UIButton*) [landscapeView viewWithTag:[videoButton tag]] 
    -                 setImage:[UIImage imageNamed:@"video_on_over_landscape.png"] 
    -                           forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    {
    +        UIButton *speakerButtonLandscape = (UIButton*) [landscapeView viewWithTag:[speakerButton tag]];
    +        // Set selected+disabled background: IB lack !
    +        [speakerButton setBackgroundImage:[UIImage imageNamed:@"speaker_on_disabled.png"]
    +                                 forState:(UIControlStateDisabled | UIControlStateSelected)];
    +        [speakerButtonLandscape setBackgroundImage:[UIImage imageNamed:@"speaker_on_disabled_landscape.png"]
    +                                          forState:(UIControlStateDisabled | UIControlStateSelected)];
    +        
    +        // Set selected+over background: IB lack !
    +        [speakerButton setBackgroundImage:[UIImage imageNamed:@"speaker_on_over.png"]
    +                                 forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        [speakerButtonLandscape setBackgroundImage:[UIImage imageNamed:@"sspeaker_on_over_landscape.png"]
    +                                          forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        [LinphoneUtils buttonFixStates:speakerButton];
    +        [LinphoneUtils buttonFixStates:speakerButtonLandscape];
    +    }
         
    +    {
    +        UIButton *microButtonLandscape = (UIButton*) [landscapeView viewWithTag:[microButton tag]];
    +        // Set selected+disabled background: IB lack !
    +        [microButton setBackgroundImage:[UIImage imageNamed:@"micro_on_disabled.png"]
    +                               forState:(UIControlStateDisabled | UIControlStateSelected)];
    +        [microButtonLandscape setBackgroundImage:[UIImage imageNamed:@"micro_on_disabled_landscape.png"]
    +                                        forState:(UIControlStateDisabled | UIControlStateSelected)];
    +        
    +        // Set selected+over background: IB lack !
    +        [microButton setBackgroundImage:[UIImage imageNamed:@"micro_on_over.png"]
    +                               forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        [microButtonLandscape setBackgroundImage:[UIImage imageNamed:@"micro_on_over_landscape.png"]
    +                                        forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        [LinphoneUtils buttonFixStates:microButton];
    +        [LinphoneUtils buttonFixStates:microButtonLandscape];
    +    }
         
    -    // Set selected+disabled background: IB lack !
    -    [speakerButton setImage:[UIImage imageNamed:@"speaker_on_disabled.png"] 
    -                   forState:(UIControlStateDisabled | UIControlStateSelected)];
    -    [(UIButton*) [landscapeView viewWithTag:[speakerButton tag]] 
    -                   setImage:[UIImage imageNamed:@"speaker_on_disabled_landscape.png"] 
    -                   forState:(UIControlStateDisabled | UIControlStateSelected)];
    +    {
    +        UIButton *optionsButtonLandscape = (UIButton*) [landscapeView viewWithTag:[optionsButton tag]];
    +        // Set selected+over background: IB lack !
    +        [optionsButton setBackgroundImage:[UIImage imageNamed:@"options_over.png"]
    +                                 forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        [optionsButtonLandscape setBackgroundImage:[UIImage imageNamed:@"options_over_landscape.png"]
    +                                          forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        [LinphoneUtils buttonFixStates:optionsButton];
    +        [LinphoneUtils buttonFixStates:optionsButtonLandscape];
    +    }
         
    -    // Set selected+over background: IB lack !
    -    [speakerButton setImage:[UIImage imageNamed:@"speaker_on_over.png"] 
    -                   forState:(UIControlStateHighlighted | UIControlStateSelected)];
    -    [(UIButton*) [landscapeView viewWithTag:[speakerButton tag]] 
    -                   setImage:[UIImage imageNamed:@"sspeaker_on_over_landscape.png"] 
    -                   forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    {
    +        UIButton *pauseButtonLandscape = (UIButton*) [landscapeView viewWithTag:[pauseButton tag]];
    +        // Set selected+over background: IB lack !
    +        [pauseButton setBackgroundImage:[UIImage imageNamed:@"pause_on_over.png"]
    +                               forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        [pauseButtonLandscape setBackgroundImage:[UIImage imageNamed:@"pause_on_over_landscape.png"]
    +                                        forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        [LinphoneUtils buttonFixStates:pauseButton];
    +        [LinphoneUtils buttonFixStates:pauseButtonLandscape];
    +    }
         
    -    
    -    // Set selected+disabled background: IB lack !
    -    [microButton setImage:[UIImage imageNamed:@"micro_on_disabled.png"] 
    -                 forState:(UIControlStateDisabled | UIControlStateSelected)];
    -    [(UIButton*) [landscapeView viewWithTag:[microButton tag]] 
    -                 setImage:[UIImage imageNamed:@"micro_on_disabled_landscape.png"] 
    -                 forState:(UIControlStateDisabled | UIControlStateSelected)];
    -    
    -    // Set selected+over background: IB lack !
    -    [microButton setImage:[UIImage imageNamed:@"micro_on_over.png"] 
    -                 forState:(UIControlStateHighlighted | UIControlStateSelected)];
    -    [(UIButton*) [landscapeView viewWithTag:[microButton tag]] 
    -                 setImage:[UIImage imageNamed:@"micro_on_over_landscape.png"] 
    -                 forState:(UIControlStateHighlighted | UIControlStateSelected)];
    -    
    -    
    -    // Set selected+over background: IB lack !
    -    [pauseButton setImage:[UIImage imageNamed:@"pause_on_over.png"] 
    -                 forState:(UIControlStateHighlighted | UIControlStateSelected)];
    -    [(UIButton*) [landscapeView viewWithTag:[pauseButton tag]] 
    -                 setImage:[UIImage imageNamed:@"pause_on_over_landscape.png"] 
    -                 forState:(UIControlStateHighlighted | UIControlStateSelected)];
    -    
    -    
    -    // Set selected+over background: IB lack !
    -    [optionsButton setImage:[UIImage imageNamed:@"options_over.png"] 
    -                   forState:(UIControlStateHighlighted | UIControlStateSelected)];
    -    [(UIButton*) [landscapeView viewWithTag:[optionsButton tag]] 
    -                   setImage:[UIImage imageNamed:@"options_over_landscape.png"] 
    -                   forState:(UIControlStateHighlighted | UIControlStateSelected)];
    -    
    -    
    -    // Set selected+over background: IB lack !
    -    [dialerButton setImage:[UIImage imageNamed:@"dialer_alt_back_over.png"] 
    -                  forState:(UIControlStateHighlighted | UIControlStateSelected)];
    -    [(UIButton*) [landscapeView viewWithTag:[dialerButton tag]] 
    -                  setImage:[UIImage imageNamed:@"dialer_alt_back_over_landscape.png"] 
    -                  forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    {
    +        UIButton *dialerButtonLandscape = (UIButton*) [landscapeView viewWithTag:[dialerButton tag]] ;
    +        // Set selected+over background: IB lack !
    +        [dialerButton setBackgroundImage:[UIImage imageNamed:@"dialer_alt_back_over.png"]
    +                                forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        [dialerButtonLandscape setBackgroundImage:[UIImage imageNamed:@"dialer_alt_back_over_landscape.png"] 
    +                                        forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        [LinphoneUtils buttonFixStates:dialerButton];
    +        [LinphoneUtils buttonFixStates:dialerButtonLandscape];
    +    }
         
         [super viewDidLoad];
     }
    @@ -422,21 +444,7 @@
         [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"];
         if([view isKindOfClass:[UIButton class]]) {
             UIButton *button = (UIButton *)view;    
    -        [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateNormal] key:@"image-normal"];
    -        [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateHighlighted] key:@"image-highlighted"];
    -        [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateDisabled] key:@"image-disabled"];
    -        [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected] key:@"image-selected"];
    -        [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"image-disabled-highlighted"];
    -        [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"image-selected-highlighted"];
    -        [UICallBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateDisabled] key:@"image-selected-disabled"];
    -        
    -        [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateNormal] key:@"background-normal"];
    -        [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateHighlighted] key:@"background-highlighted"];
    -        [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled] key:@"background-disabled"];
    -        [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected] key:@"background-selected"];
    -        [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"background-disabled-highlighted"];
    -        [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"background-selected-highlighted"];
    -        [UICallBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateDisabled] key:@"background-selected-disabled"];
    +        [LinphoneUtils buttonMultiViewAddAttributes:attributes button:button];
         }
         [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"];
     
    @@ -448,36 +456,9 @@
         view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue];
         if([view isKindOfClass:[UIButton class]]) {
             UIButton *button = (UIButton *)view;
    -        [button setImage:[UICallBar getDictEntry:attributes key:@"image-normal"] forState:UIControlStateNormal];
    -        [button setImage:[UICallBar getDictEntry:attributes key:@"image-highlighted"] forState:UIControlStateHighlighted];
    -        [button setImage:[UICallBar getDictEntry:attributes key:@"image-disabled"] forState:UIControlStateDisabled];
    -        [button setImage:[UICallBar getDictEntry:attributes key:@"image-selected"] forState:UIControlStateSelected];
    -        [button setImage:[UICallBar getDictEntry:attributes key:@"image-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted];
    -        [button setImage:[UICallBar getDictEntry:attributes key:@"image-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted];
    -        [button setImage:[UICallBar getDictEntry:attributes key:@"image-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled];
    -        
    -        [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-normal"] forState:UIControlStateNormal];
    -        [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-highlighted"] forState:UIControlStateHighlighted];
    -        [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-disabled"] forState:UIControlStateDisabled];
    -        [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-selected"] forState:UIControlStateSelected];
    -        [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted];
    -        [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted];
    -        [button setBackgroundImage:[UICallBar getDictEntry:attributes key:@"background-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled];
    +        [LinphoneUtils buttonMultiViewApplyAttributes:attributes button:button];
         }
         view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue];
     }
     
    -+ (void)addDictEntry:(NSMutableDictionary*)dict item:(id)item key:(id)key {
    -    if(item != nil && key != nil) {
    -        [dict setObject:item forKey:key];
    -    }
    -}
    -
    -+ (id)getDictEntry:(NSDictionary*)dict key:(id)key {
    -    if(key != nil) {
    -        return [dict objectForKey:key];
    -    }
    -    return nil;
    -}
    -
     @end
    diff --git a/Classes/LinphoneUI/UIChatCell.xib b/Classes/LinphoneUI/UIChatCell.xib
    index 7bf9dcf3c..1dc63ea7f 100644
    --- a/Classes/LinphoneUI/UIChatCell.xib
    +++ b/Classes/LinphoneUI/UIChatCell.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -42,7 +42,6 @@
     						292
     						{{10, 8}, {27, 27}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -57,7 +56,6 @@
     						274
     						{{45, 0}, {60, 44}}
     						
    -						
     						
     						_NS:328
     						NO
    @@ -73,6 +71,7 @@
     						
     							1
     							MCAwIDAAA
    +							darkTextColor
     						
     						
     						1
    @@ -93,7 +92,6 @@
     						274
     						{{110, 0}, {170, 44}}
     						
    -						
     						
     						_NS:328
     						NO
    @@ -126,7 +124,6 @@
     						257
     						{{276, 0}, {44, 44}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -165,7 +162,6 @@
     						257
     						{{276, 0}, {44, 44}}
     						
    -						
     						_NS:9
     						NO
     						IBCocoaTouchFramework
    @@ -191,7 +187,6 @@
     				
     				{320, 44}
     				
    -				
     				
     				_NS:9
     				
    @@ -347,66 +342,12 @@
     			
     			38
     		
    -		
    -			
    -				
    -					UIChatCell
    -					UITableViewCell
    -					
    -						id
    -						id
    -					
    -					
    -						
    -							onDeleteClick:
    -							id
    -						
    -						
    -							onDetailsClick:
    -							id
    -						
    -					
    -					
    -						UILabel
    -						UIImageView
    -						UILabel
    -						UIButton
    -						UIButton
    -					
    -					
    -						
    -							addressLabel
    -							UILabel
    -						
    -						
    -							avatarImage
    -							UIImageView
    -						
    -						
    -							chatContentLabel
    -							UILabel
    -						
    -						
    -							deleteButton
    -							UIButton
    -						
    -						
    -							detailsButton
    -							UIButton
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UIChatCell.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -417,6 +358,6 @@
     			{45, 45}
     			{45, 45}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.h b/Classes/LinphoneUI/UIChatRoomCell.h
    index 94a6303b1..94261b982 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.h
    +++ b/Classes/LinphoneUI/UIChatRoomCell.h
    @@ -36,6 +36,7 @@
     @property (nonatomic, retain) IBOutlet UILabel *dateLabel;
     @property (nonatomic, retain) IBOutlet UIImageView* statusImage;
     @property (nonatomic, retain) IBOutlet UIButton* downloadButton;
    +@property (nonatomic, retain) IBOutlet UITapGestureRecognizer* imageTapGestureRecognizer;
     
     - (id)initWithIdentifier:(NSString*)identifier;
     + (CGFloat)height:(ChatModel*)chat width:(int)width;
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.m b/Classes/LinphoneUI/UIChatRoomCell.m
    index 1ea21b7fc..cb6027ad5 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.m
    +++ b/Classes/LinphoneUI/UIChatRoomCell.m
    @@ -40,6 +40,7 @@
     @synthesize statusImage;
     @synthesize downloadButton;
     @synthesize chatRoomDelegate;
    +@synthesize imageTapGestureRecognizer;
     
     static const CGFloat CELL_MIN_HEIGHT = 40.0f;
     static const CGFloat CELL_MIN_WIDTH = 150.0f;
    @@ -58,6 +59,8 @@ static UIFont *CELL_FONT = nil;
             [[NSBundle mainBundle] loadNibNamed:@"UIChatRoomCell"
                                           owner:self
                                         options:nil];
    +        imageTapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onImageClick:)];
    +        [messageImageView addGestureRecognizer:imageTapGestureRecognizer];
             [self addSubview:innerView];
             [deleteButton setAlpha:0.0f];
         }
    @@ -76,6 +79,7 @@ static UIFont *CELL_FONT = nil;
         [statusImage release];
         [chat release];
         [downloadButton release];
    +    [imageTapGestureRecognizer release];
         
         [super dealloc];
     }
    diff --git a/Classes/LinphoneUI/UIChatRoomCell.xib b/Classes/LinphoneUI/UIChatRoomCell.xib
    index 1faf62b94..6014ce950 100644
    --- a/Classes/LinphoneUI/UIChatRoomCell.xib
    +++ b/Classes/LinphoneUI/UIChatRoomCell.xib
    @@ -1,21 +1,20 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
     			IBUIButton
     			IBUIImageView
     			IBUILabel
    -			IBUITapGestureRecognizer
     			IBUIView
     		
     		
    @@ -109,6 +108,7 @@
     											16
     										
     										NO
    +										294
     									
     									
     										
    @@ -270,7 +270,6 @@
     				
     				IBCocoaTouchFramework
     			
    -			
     		
     		
     			
    @@ -371,16 +370,6 @@
     					
     					32
     				
    -				
    -					
    -						gestureRecognizers
    -						
    -						
    -						NSArray
    -						YES
    -					
    -					41
    -				
     				
     					
     						onDownloadClick:
    @@ -390,14 +379,6 @@
     					
     					39
     				
    -				
    -					
    -						onImageClick:
    -						
    -						
    -					
    -					42
    -				
     			
     			
     				
    @@ -506,11 +487,6 @@
     						
     						downloadButton
     					
    -					
    -						40
    -						
    -						
    -					
     				
     			
     			
    @@ -530,7 +506,6 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     			
    @@ -569,7 +544,7 @@
     						UIView
     						UILabel
     						UIButton
    -						UIButton
    +						UITapGestureRecognizer
     						UIView
     						UIImageView
     						UILabel
    @@ -594,7 +569,7 @@
     						
     						
     							downloadButton
    -							UIButton
    +							UITapGestureRecognizer
     						
     						
     							innerView
    @@ -624,7 +599,7 @@
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -634,6 +609,6 @@
     			{45, 45}
     			{45, 45}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/LinphoneUI/UIHistoryCell.xib b/Classes/LinphoneUI/UIHistoryCell.xib
    index e2fe52aa4..2c6aae6c4 100644
    --- a/Classes/LinphoneUI/UIHistoryCell.xib
    +++ b/Classes/LinphoneUI/UIHistoryCell.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -42,7 +42,6 @@
     						292
     						{{10, 8}, {27, 27}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -53,7 +52,6 @@
     						274
     						{{45, 0}, {236, 44}}
     						
    -						
     						
     						_NS:328
     						NO
    @@ -69,6 +67,7 @@
     						
     							1
     							MCAwIDAAA
    +							darkTextColor
     						
     						
     						1
    @@ -89,7 +88,6 @@
     						257
     						{{276, 0}, {44, 44}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -128,7 +126,6 @@
     						257
     						{{276, 0}, {44, 44}}
     						
    -						
     						_NS:9
     						NO
     						IBCocoaTouchFramework
    @@ -154,7 +151,6 @@
     				
     				{320, 44}
     				
    -				
     				
     				_NS:9
     				
    @@ -348,7 +344,7 @@
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -358,6 +354,6 @@
     			{45, 45}
     			{45, 45}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/LinphoneUI/UIMainBar.m b/Classes/LinphoneUI/UIMainBar.m
    index 7e868a9f3..fd2929318 100644
    --- a/Classes/LinphoneUI/UIMainBar.m
    +++ b/Classes/LinphoneUI/UIMainBar.m
    @@ -96,25 +96,73 @@
                                                      name:UIApplicationWillEnterForegroundNotification 
                                                    object:nil];
         
    -    // Set selected+over background: IB lack !
    -    [historyButton setImage:[UIImage imageNamed:@"history_selected.png"]
    -                    forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    {
    +        UIButton *historyButtonLandscape = (UIButton*) [landscapeView viewWithTag:[historyButton tag]];
    +        // Set selected+over background: IB lack !
    +        [historyButton setBackgroundImage:[UIImage imageNamed:@"history_selected.png"]
    +                                 forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        // Set selected+over background: IB lack !
    +        [historyButtonLandscape setBackgroundImage:[UIImage imageNamed:@"history_selected_landscape.png"]
    +                                           forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        [LinphoneUtils buttonFixStatesForTabs:historyButton];
    +        [LinphoneUtils buttonFixStatesForTabs:historyButtonLandscape];
    +    }
         
    -    // Set selected+over background: IB lack !
    -    [contactsButton setImage:[UIImage imageNamed:@"contacts_selected.png"]
    -                   forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    {
    +        UIButton *contactsButtonLandscape = (UIButton*) [landscapeView viewWithTag:[contactsButton tag]];
    +        // Set selected+over background: IB lack !
    +        [contactsButton setBackgroundImage:[UIImage imageNamed:@"contacts_selected.png"]
    +                                  forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        // Set selected+over background: IB lack !
    +        [contactsButtonLandscape setBackgroundImage:[UIImage imageNamed:@"contacts_selected_landscape.png"]
    +                                         forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        [LinphoneUtils buttonFixStatesForTabs:contactsButton];
    +        [LinphoneUtils buttonFixStatesForTabs:contactsButtonLandscape];
    +    }
    +    {
    +        UIButton *dialerButtonLandscape = (UIButton*) [landscapeView viewWithTag:[dialerButton tag]];
    +        // Set selected+over background: IB lack !
    +        [dialerButton setBackgroundImage:[UIImage imageNamed:@"dialer_selected.png"]
    +                                forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        // Set selected+over background: IB lack !
    +        [dialerButtonLandscape setBackgroundImage:[UIImage imageNamed:@"dialer_selected_landscape.png"]
    +                                           forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        [LinphoneUtils buttonFixStatesForTabs:dialerButton];
    +        [LinphoneUtils buttonFixStatesForTabs:dialerButtonLandscape];
    +    }
    +    {
    +        UIButton *settingsButtonLandscape = (UIButton*) [landscapeView viewWithTag:[settingsButton tag]];
    +        // Set selected+over background: IB lack !
    +        [settingsButton setBackgroundImage:[UIImage imageNamed:@"settings_selected.png"]
    +                                  forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        // Set selected+over background: IB lack !
    +        [settingsButtonLandscape setBackgroundImage:[UIImage imageNamed:@"settings_selected_landscape.png"]
    +                                       forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        [LinphoneUtils buttonFixStatesForTabs:settingsButton];
    +        [LinphoneUtils buttonFixStatesForTabs:settingsButtonLandscape];
    +    }
         
    -    // Set selected+over background: IB lack !
    -    [dialerButton setImage:[UIImage imageNamed:@"dialer_selected.png"]
    -                   forState:(UIControlStateHighlighted | UIControlStateSelected)];
    -    
    -    // Set selected+over background: IB lack !
    -    [settingsButton setImage:[UIImage imageNamed:@"settings_selected.png"]
    -                   forState:(UIControlStateHighlighted | UIControlStateSelected)];
    -    
    -    // Set selected+over background: IB lack !
    -    [chatButton setImage:[UIImage imageNamed:@"chat_selected.png"]
    -                   forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    {
    +        UIButton *chatButtonLandscape = (UIButton*) [landscapeView viewWithTag:[chatButton tag]];
    +        // Set selected+over background: IB lack !
    +        [chatButton setBackgroundImage:[UIImage imageNamed:@"chat_selected.png"]
    +                              forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        // Set selected+over background: IB lack !
    +        [chatButtonLandscape setBackgroundImage:[UIImage imageNamed:@"chat_selected_landscape.png"]
    +                              forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +        
    +        [LinphoneUtils buttonFixStatesForTabs:chatButton];
    +        [LinphoneUtils buttonFixStatesForTabs:chatButtonLandscape];
    +    }
         
         [super viewDidLoad]; // Have to be after due to TPMultiLayoutViewController
     }
    @@ -333,6 +381,7 @@
         [[PhoneMainView instance] changeCurrentView:[ChatViewController compositeViewDescription]];
     }
     
    +
     #pragma mark - TPMultiLayoutViewController Functions
     
     - (NSDictionary*)attributesForView:(UIView*)view {
    @@ -342,21 +391,7 @@
         [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"];
         if([view isKindOfClass:[UIButton class]]) {
             UIButton *button = (UIButton *)view;
    -        [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateNormal] key:@"image-normal"];
    -        [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateHighlighted] key:@"image-highlighted"];
    -        [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateDisabled] key:@"image-disabled"];
    -        [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected] key:@"image-selected"];
    -        [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"image-disabled-highlighted"];
    -        [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"image-selected-highlighted"];
    -        [UIMainBar addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateDisabled] key:@"image-selected-disabled"];
    -        
    -        [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateNormal] key:@"background-normal"];
    -        [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateHighlighted] key:@"background-highlighted"];
    -        [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled] key:@"background-disabled"];
    -        [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected] key:@"background-selected"];
    -        [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"background-disabled-highlighted"];
    -        [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"background-selected-highlighted"];
    -        [UIMainBar addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateDisabled] key:@"background-selected-disabled"];
    +        [LinphoneUtils buttonMultiViewAddAttributes:attributes button:button];
         }
         [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"];
         
    @@ -368,36 +403,9 @@
         view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue];
         if([view isKindOfClass:[UIButton class]]) {
             UIButton *button = (UIButton *)view;
    -        [button setImage:[UIMainBar getDictEntry:attributes key:@"image-normal"] forState:UIControlStateNormal];
    -        [button setImage:[UIMainBar getDictEntry:attributes key:@"image-highlighted"] forState:UIControlStateHighlighted];
    -        [button setImage:[UIMainBar getDictEntry:attributes key:@"image-disabled"] forState:UIControlStateDisabled];
    -        [button setImage:[UIMainBar getDictEntry:attributes key:@"image-selected"] forState:UIControlStateSelected];
    -        [button setImage:[UIMainBar getDictEntry:attributes key:@"image-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted];
    -        [button setImage:[UIMainBar getDictEntry:attributes key:@"image-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted];
    -        [button setImage:[UIMainBar getDictEntry:attributes key:@"image-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled];
    -        
    -        [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-normal"] forState:UIControlStateNormal];
    -        [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-highlighted"] forState:UIControlStateHighlighted];
    -        [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-disabled"] forState:UIControlStateDisabled];
    -        [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-selected"] forState:UIControlStateSelected];
    -        [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted];
    -        [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted];
    -        [button setBackgroundImage:[UIMainBar getDictEntry:attributes key:@"background-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled];
    +        [LinphoneUtils buttonMultiViewApplyAttributes:attributes button:button];
         }
         view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue];
     }
     
    -+ (void)addDictEntry:(NSMutableDictionary*)dict item:(id)item key:(id)key {
    -    if(item != nil && key != nil) {
    -        [dict setObject:item forKey:key];
    -    }
    -}
    -
    -+ (id)getDictEntry:(NSDictionary*)dict key:(id)key {
    -    if(key != nil) {
    -        return [dict objectForKey:key];
    -    }
    -    return nil;
    -}
    -
     @end
    diff --git a/Classes/LinphoneUI/UIStateBar.xib b/Classes/LinphoneUI/UIStateBar.xib
    index 45a65aa71..2b45cc5cc 100644
    --- a/Classes/LinphoneUI/UIStateBar.xib
    +++ b/Classes/LinphoneUI/UIStateBar.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -41,7 +41,6 @@
     						274
     						{320, 23}
     						
    -						
     						
     						_NS:9
     						1
    @@ -57,7 +56,6 @@
     						292
     						{{6, 6}, {10, 10}}
     						
    -						
     						
     						_NS:567
     						2
    @@ -77,7 +75,6 @@
     						290
     						{{22, 0}, {222, 20}}
     						
    -						
     						
     						_NS:328
     						NO
    @@ -112,7 +109,6 @@
     						289
     						{{252, 3}, {27, 17}}
     						
    -						
     						
     						_NS:567
     						4
    @@ -127,8 +123,6 @@
     						289
     						{{287, 3}, {27, 17}}
     						
    -						
    -						
     						_NS:567
     						1
     						5
    @@ -141,7 +135,6 @@
     				
     				{320, 23}
     				
    -				
     				
     				_NS:196
     				
    @@ -159,7 +152,6 @@
     						274
     						{480, 23}
     						
    -						
     						
     						_NS:9
     						1
    @@ -172,7 +164,6 @@
     						292
     						{{6, 6}, {10, 10}}
     						
    -						
     						
     						_NS:567
     						2
    @@ -185,7 +176,6 @@
     						290
     						{{22, 0}, {382, 20}}
     						
    -						
     						
     						_NS:328
     						NO
    @@ -207,7 +197,6 @@
     						289
     						{{412, 3}, {27, 17}}
     						
    -						
     						
     						_NS:567
     						4
    @@ -219,8 +208,6 @@
     						289
     						{{447, 3}, {27, 17}}
     						
    -						
    -						
     						_NS:567
     						1
     						5
    @@ -230,7 +217,6 @@
     				
     				{480, 23}
     				
    -				
     				
     				_NS:196
     				
    @@ -489,7 +475,7 @@
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -497,6 +483,6 @@
     			{18, 17}
     			{640, 46}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/LinphoneUI/en.lproj/UICallBar.xib b/Classes/LinphoneUI/en.lproj/UICallBar.xib
    index dba37abd8..7454c922c 100644
    --- a/Classes/LinphoneUI/en.lproj/UICallBar.xib
    +++ b/Classes/LinphoneUI/en.lproj/UICallBar.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -42,8 +42,6 @@
     						-2147483356
     						{{0, 335}, {320, 125}}
     						
    -						
    -						
     						_NS:9
     						
     							1
    @@ -65,7 +63,6 @@
     								274
     								{281, 260}
     								
    -								
     								
     								_NS:9
     								2
    @@ -81,7 +78,6 @@
     								292
     								{{-20, 10}, {107, 54}}
     								
    -								
     								
     								
     									1
    @@ -125,7 +121,6 @@
     								292
     								{{87, 10}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -153,7 +148,6 @@
     								292
     								{{193, 10}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -181,7 +175,6 @@
     								292
     								{{-20, 72}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -209,7 +202,6 @@
     								292
     								{{87, 72}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -237,7 +229,6 @@
     								292
     								{{193, 72}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -265,7 +256,6 @@
     								292
     								{{-20, 134}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -293,7 +283,6 @@
     								292
     								{{87, 134}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -321,7 +310,6 @@
     								292
     								{{193, 134}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -349,7 +337,6 @@
     								292
     								{{-20, 196}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -377,7 +364,6 @@
     								292
     								{{87, 196}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -405,7 +391,6 @@
     								292
     								{{193, 196}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -431,7 +416,6 @@
     						
     						{{20, 57}, {281, 260}}
     						
    -						
     						
     						_NS:9
     						
    @@ -450,7 +434,6 @@
     								292
     								{{3, 0}, {77, 68}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -463,31 +446,51 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Transfer
    +								
    +									2
    +									MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA
    +								
    +								
    +									2
    +									MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA
    +								
    +								
    +									2
    +									MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA
    +								
     								
    -								
    +								
     									NSImage
     									options_transfer_over.png
     								
    -								
    +								
     									NSImage
     									options_transfer_disabled.png
     								
    -								
    +								
     									NSImage
     									options_transfer_default.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									13
    +								
    +								
    +									Helvetica
    +									13
    +									16
     								
    -								
     							
     							
     								
     								292
     								{{3, 61}, {77, 68}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -500,26 +503,33 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Add call
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_add_over.png
     								
    -								
    +								
     									NSImage
     									options_add_disabled.png
     								
    -								
    +								
     									NSImage
     									options_add_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{{240, 205}, {80, 129}}
     						
    -						
     						
     						_NS:9
     						
    @@ -535,7 +545,6 @@
     								290
     								{{0, 135}, {320, 2000}}
     								
    -								
     								
     								_NS:9
     								
    @@ -550,7 +559,6 @@
     								292
     								{80, 67}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -563,32 +571,40 @@
     								0
     								NO
     								NO
    +								38
    +								0.0
    +								0.0
    +								0.0
    +								Video
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									video_off_over.png
     								
    -								
    +								
     									NSImage
     									video_off_disabled.png
     								
    -								
    +								
     									NSImage
     									video_on_default.png
     								
    -								
    +								
     									NSImage
     									video_off_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								-2147483356
     								{{20, 20}, {37, 37}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -601,7 +617,6 @@
     								292
     								{{80, 0}, {80, 67}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -614,32 +629,40 @@
     								0
     								NO
     								NO
    +								38
    +								0.0
    +								0.0
    +								0.0
    +								Micro
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									micro_off_over.png
     								
    -								
    +								
     									NSImage
     									micro_off_disabled.png
     								
    -								
    +								
     									NSImage
     									micro_on_default.png
     								
    -								
    +								
     									NSImage
     									micro_off_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								292
     								{{160, 0}, {80, 67}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -652,32 +675,40 @@
     								0
     								NO
     								NO
    +								38
    +								0.0
    +								0.0
    +								0.0
    +								Speaker
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									speaker_off_over.png
     								
    -								
    +								
     									NSImage
     									speaker_off_disabled.png
     								
    -								
    +								
     									NSImage
     									speaker_on_default.png
     								
    -								
    +								
     									NSImage
     									speaker_off_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								292
     								{{240, 0}, {80, 67}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -690,32 +721,40 @@
     								0
     								NO
     								NO
    +								38
    +								0.0
    +								0.0
    +								0.0
    +								Options
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_over.png
     								
    -								
    +								
     									NSImage
     									options_disabled.png
     								
    -								
    +								
     									NSImage
     									options_selected.png
     								
    -								
    +								
     									NSImage
     									options_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								264
     								{{0, 67}, {105, 68}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -741,7 +780,10 @@
     									NSImage
     									pause_off_default.png
     								
    -								
    +								
    +									2
    +									15
    +								
     								
     							
     							
    @@ -749,7 +791,6 @@
     								-2147483384
     								{{0, 67}, {105, 68}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -779,7 +820,6 @@
     								264
     								{{105, 67}, {111, 68}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -809,7 +849,6 @@
     								264
     								{{215, 67}, {105, 68}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -827,6 +866,10 @@
     									NSImage
     									dialer_alt_over.png
     								
    +								
    +									NSImage
    +									dialer_alt_disabled.png
    +								
     								
     									NSImage
     									dialer_alt_back_default.png
    @@ -841,7 +884,6 @@
     						
     						{{0, 325}, {320, 135}}
     						
    -						
     						
     						_NS:9
     						
    @@ -851,7 +893,6 @@
     				
     				{320, 460}
     				
    -				
     				
     				_NS:9
     				
    @@ -867,7 +908,6 @@
     						-2147483356
     						{{0, 248}, {480, 72}}
     						
    -						
     						
     						_NS:9
     						
    @@ -890,7 +930,6 @@
     								274
     								{281, 260}
     								
    -								
     								
     								_NS:9
     								2
    @@ -903,7 +942,6 @@
     								292
     								{{-20, 10}, {107, 54}}
     								
    -								
     								
     								
     									1
    @@ -926,7 +964,6 @@
     								292
     								{{87, 10}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -945,7 +982,6 @@
     								292
     								{{193, 10}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -964,7 +1000,6 @@
     								292
     								{{-20, 72}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -983,7 +1018,6 @@
     								292
     								{{87, 72}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1002,7 +1036,6 @@
     								292
     								{{193, 72}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1021,7 +1054,6 @@
     								292
     								{{-20, 134}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1040,7 +1072,6 @@
     								292
     								{{87, 134}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1059,7 +1090,6 @@
     								292
     								{{193, 134}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1078,7 +1108,6 @@
     								292
     								{{-20, 196}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1097,7 +1126,6 @@
     								292
     								{{87, 196}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1116,8 +1144,6 @@
     								292
     								{{193, 196}, {107, 54}}
     								
    -								
    -								
     								NO
     								NO
     								14
    @@ -1133,7 +1159,6 @@
     						
     						{{91, 0}, {281, 260}}
     						
    -						
     						
     						_NS:9
     						
    @@ -1149,7 +1174,6 @@
     								292
     								{65, 55}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1162,28 +1186,35 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Transfer
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_transfer_over_landscape.png
     								
    -								
    +								
     									NSImage
     									options_transfer_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									options_transfer_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								292
     								{{0, 51}, {65, 55}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1196,26 +1227,33 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Add call
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_add_over_landscape.png
     								
    -								
    +								
     									NSImage
     									options_add_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									options_add_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{{415, 140}, {65, 105}}
     						
    -						
     						
     						_NS:9
     						
    @@ -1231,7 +1269,6 @@
     								290
     								{{0, 82}, {480, 2000}}
     								
    -								
     								
     								_NS:9
     								
    @@ -1246,7 +1283,6 @@
     								292
     								{{65, 0}, {65, 82}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1259,32 +1295,40 @@
     								0
     								NO
     								NO
    +								24
    +								0.0
    +								0.0
    +								0.0
    +								Video
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									video_off_over_landscape.png
     								
    -								
    +								
     									NSImage
     									video_off_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									video_on_default_landscape.png
     								
    -								
    +								
     									NSImage
     									video_off_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								-2147483356
     								{{79, 20}, {37, 37}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1297,7 +1341,6 @@
     								292
     								{{130, 0}, {65, 82}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1310,32 +1353,40 @@
     								0
     								NO
     								NO
    +								24
    +								0.0
    +								0.0
    +								0.0
    +								Micro
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									micro_off_over_landscape.png
     								
    -								
    +								
     									NSImage
     									micro_off_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									micro_on_default_landscape.png
     								
    -								
    +								
     									NSImage
     									micro_off_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								292
     								{{285, 0}, {65, 82}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1348,32 +1399,40 @@
     								0
     								NO
     								NO
    +								24
    +								0.0
    +								0.0
    +								0.0
    +								Speaker
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									speaker_off_over_landscape.png
     								
    -								
    +								
     									NSImage
     									speaker_off_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									speaker_on_default_landscape.png
     								
    -								
    +								
     									NSImage
     									speaker_off_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								292
     								{{350, 0}, {65, 82}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1386,32 +1445,40 @@
     								0
     								NO
     								NO
    +								24
    +								0.0
    +								0.0
    +								0.0
    +								Options
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_over_landscape.png
     								
    -								
    +								
     									NSImage
     									options_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									options_selected_landscape.png
     								
    -								
    +								
     									NSImage
     									options_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								264
     								{65, 82}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1445,7 +1512,6 @@
     								-2147483384
     								{65, 82}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1475,7 +1541,6 @@
     								264
     								{{195, 0}, {90, 82}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1505,7 +1570,6 @@
     								264
     								{{415, 0}, {65, 82}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1523,21 +1587,21 @@
     									NSImage
     									dialer_alt_over_landscape.png
     								
    +								
    +									NSImage
    +									dialer_alt_default_landscape.png
    +								
     								
     									NSImage
     									dialer_alt_back_default_landscape.png
     								
    -								
    -									NSImage
    -									dialer_alt_default_landscape.png
    -								
    +								
     								
     								
     							
     						
     						{{0, 238}, {480, 82}}
     						
    -						
     						
     						_NS:9
     						
    @@ -1547,7 +1611,6 @@
     				
     				{480, 320}
     				
    -				
     				
     				_NS:9
     				
    @@ -2383,7 +2446,8 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UITransparentView
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -2393,10 +2457,10 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				UIHangUpButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				UIPauseButton
    @@ -2404,18 +2468,23 @@
     				
     				UIMicroButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UISpeakerButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UIMicroButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UIVideoButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIDigitButton
    @@ -2435,7 +2504,8 @@
     				
     				UIVideoButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -2458,8 +2528,10 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -2473,7 +2545,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -2500,7 +2572,7 @@
     				
     				UIHangUpButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -2515,14 +2587,17 @@
     				
     				UIPauseButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UISpeakerButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     			
    @@ -2532,292 +2607,12 @@
     			
     			142
     		
    -		
    -			
    -				
    -					TPMultiLayoutViewController
    -					UIViewController
    -					
    -						UIView
    -						UIView
    -					
    -					
    -						
    -							landscapeView
    -							UIView
    -						
    -						
    -							portraitView
    -							UIView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/TPMultiLayoutViewController.h
    -					
    -				
    -				
    -					UICallBar
    -					TPMultiLayoutViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onConferenceClick:
    -							id
    -						
    -						
    -							onOptionsAddClick:
    -							id
    -						
    -						
    -							onOptionsClick:
    -							id
    -						
    -						
    -							onOptionsTransferClick:
    -							id
    -						
    -						
    -							onPadClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIToggleButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIHangUpButton
    -						UIMicroButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIButton
    -						UIToggleButton
    -						UIButton
    -						UIView
    -						UIView
    -						UIPauseButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIDigitButton
    -						UISpeakerButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIVideoButton
    -						UIDigitButton
    -					
    -					
    -						
    -							conferenceButton
    -							UIButton
    -						
    -						
    -							dialerButton
    -							UIToggleButton
    -						
    -						
    -							eightButton
    -							UIDigitButton
    -						
    -						
    -							fiveButton
    -							UIDigitButton
    -						
    -						
    -							fourButton
    -							UIDigitButton
    -						
    -						
    -							hangupButton
    -							UIHangUpButton
    -						
    -						
    -							microButton
    -							UIMicroButton
    -						
    -						
    -							nineButton
    -							UIDigitButton
    -						
    -						
    -							oneButton
    -							UIDigitButton
    -						
    -						
    -							optionsAddButton
    -							UIButton
    -						
    -						
    -							optionsButton
    -							UIToggleButton
    -						
    -						
    -							optionsTransferButton
    -							UIButton
    -						
    -						
    -							optionsView
    -							UIView
    -						
    -						
    -							padView
    -							UIView
    -						
    -						
    -							pauseButton
    -							UIPauseButton
    -						
    -						
    -							sevenButton
    -							UIDigitButton
    -						
    -						
    -							sharpButton
    -							UIDigitButton
    -						
    -						
    -							sixButton
    -							UIDigitButton
    -						
    -						
    -							speakerButton
    -							UISpeakerButton
    -						
    -						
    -							starButton
    -							UIDigitButton
    -						
    -						
    -							threeButton
    -							UIDigitButton
    -						
    -						
    -							twoButton
    -							UIDigitButton
    -						
    -						
    -							videoButton
    -							UIVideoButton
    -						
    -						
    -							zeroButton
    -							UIDigitButton
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UICallBar.h
    -					
    -				
    -				
    -					UIDigitButton
    -					UILongTouchButton
    -					
    -						addressField
    -						UITextField
    -					
    -					
    -						addressField
    -						
    -							addressField
    -							UITextField
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UIDigitButton.h
    -					
    -				
    -				
    -					UIHangUpButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UIHangUpButton.h
    -					
    -				
    -				
    -					UILongTouchButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UILongTouchButton.h
    -					
    -				
    -				
    -					UIMicroButton
    -					UIToggleButton
    -					
    -						IBProjectSource
    -						./Classes/UIMicroButton.h
    -					
    -				
    -				
    -					UIPauseButton
    -					UIToggleButton
    -					
    -						IBProjectSource
    -						./Classes/UIPauseButton.h
    -					
    -				
    -				
    -					UISpeakerButton
    -					UIToggleButton
    -					
    -						IBProjectSource
    -						./Classes/UISpeakerButton.h
    -					
    -				
    -				
    -					UIToggleButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UIToggleButton.h
    -					
    -				
    -				
    -					UITransparentView
    -					UIView
    -					
    -						IBProjectSource
    -						./Classes/UITransparentView.h
    -					
    -				
    -				
    -					UIVideoButton
    -					UIToggleButton
    -					
    -						waitView
    -						UIActivityIndicatorView
    -					
    -					
    -						waitView
    -						
    -							waitView
    -							UIActivityIndicatorView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UIVideoButton.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -2831,6 +2626,7 @@
     			{530, 526}
     			{209, 136}
     			{130, 163}
    +			{209, 136}
     			{209, 136}
     			{130, 163}
     			{222, 136}
    @@ -2912,6 +2708,6 @@
     			{160, 134}
     			{130, 163}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/LinphoneUI/en.lproj/UICallBar~ipad.xib b/Classes/LinphoneUI/en.lproj/UICallBar~ipad.xib
    index 001250eae..a213bd86a 100644
    --- a/Classes/LinphoneUI/en.lproj/UICallBar~ipad.xib
    +++ b/Classes/LinphoneUI/en.lproj/UICallBar~ipad.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -42,7 +42,6 @@
     						-2147483356
     						{{0, 680}, {1024, 68}}
     						
    -						
     						
     						_NS:9
     						
    @@ -65,7 +64,6 @@
     								274
     								{281, 260}
     								
    -								
     								
     								_NS:9
     								2
    @@ -81,7 +79,6 @@
     								292
     								{{-20, 10}, {107, 54}}
     								
    -								
     								
     								
     									1
    @@ -122,7 +119,6 @@
     								292
     								{{87, 10}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -147,7 +143,6 @@
     								292
     								{{193, 10}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -172,7 +167,6 @@
     								292
     								{{-20, 72}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -197,7 +191,6 @@
     								292
     								{{87, 72}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -222,7 +215,6 @@
     								292
     								{{193, 72}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -247,7 +239,6 @@
     								292
     								{{-20, 134}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -272,7 +263,6 @@
     								292
     								{{87, 134}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -297,7 +287,6 @@
     								292
     								{{193, 134}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -322,7 +311,6 @@
     								292
     								{{-20, 196}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -347,7 +335,6 @@
     								292
     								{{87, 196}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -372,7 +359,6 @@
     								292
     								{{193, 196}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -395,7 +381,6 @@
     						
     						{{372, 244}, {281, 260}}
     						
    -						
     						
     						_NS:9
     						
    @@ -414,7 +399,6 @@
     								292
     								{81, 69}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -427,32 +411,52 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Transfer
    +								
    +									2
    +									MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA
    +								
    +								
    +									2
    +									MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA
    +								
    +								
    +									2
    +									MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_transfer_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_transfer_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_transfer_default_landscape~ipad.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									13
    +								
    +								
    +									Helvetica
    +									13
    +									16
     								
    -								
     							
     							
     								
     								292
     								{{0, 65}, {81, 69}}
     								
    -								
    -								
     								_NS:9
     								NO
     								17
    @@ -464,26 +468,34 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Add call
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_add_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_add_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_add_default_landscape~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{{239, 552}, {81, 133}}
     						
    -						
     						
     						_NS:9
     						
    @@ -499,7 +511,6 @@
     								290
     								{{0, 85}, {1024, 2000}}
     								
    -								
     								
     								_NS:9
     								
    @@ -514,7 +525,6 @@
     								292
     								{80, 85}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -527,32 +537,40 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Video
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									video_off_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									video_off_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									video_on_default_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									video_off_default_landscape~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								-2147483356
     								{{20, 20}, {37, 37}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -565,7 +583,6 @@
     								292
     								{{80, 0}, {80, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -578,32 +595,40 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Micro
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									micro_off_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									micro_off_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									micro_on_default_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									micro_off_default_landscape~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								292
     								{{160, 0}, {80, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -616,32 +641,41 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Speaker
    +								Speaker
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									speaker_off_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_off_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_on_default_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_off_default_landscape~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								292
     								{{240, 0}, {80, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -654,32 +688,40 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Options
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_selected_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_default_landscape~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								264
     								{{701, 0}, {87, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -705,7 +747,10 @@
     									NSImage
     									pause_off_default_landscape~ipad.png
     								
    -								
    +								
    +									2
    +									15
    +								
     								
     							
     							
    @@ -713,7 +758,6 @@
     								-2147483384
     								{{701, 0}, {87, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -743,7 +787,6 @@
     								264
     								{{875, 0}, {149, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -773,7 +816,6 @@
     								264
     								{{788, 0}, {87, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -791,21 +833,21 @@
     									NSImage
     									dialer_alt_over_landscape~ipad.png
     								
    +								
    +									NSImage
    +									dialer_alt_default_landscape~ipad.png
    +								
     								
     									NSImage
     									dialer_alt_back_default_landscape~ipad.png
     								
    -								
    -									NSImage
    -									dialer_alt_default_landscape~ipad.png
    -								
    +								
     								
     								
     							
     						
     						{{0, 663}, {1024, 85}}
     						
    -						
     						
     						_NS:9
     						
    @@ -815,7 +857,6 @@
     				
     				{1024, 748}
     				
    -				
     				
     				_NS:9
     				
    @@ -835,7 +876,6 @@
     						-2147483356
     						{{0, 936}, {768, 68}}
     						
    -						
     						
     						_NS:9
     						
    @@ -858,7 +898,6 @@
     								274
     								{281, 260}
     								
    -								
     								
     								_NS:9
     								2
    @@ -871,7 +910,6 @@
     								292
     								{{-20, 10}, {107, 54}}
     								
    -								
     								
     								
     									1
    @@ -897,7 +935,6 @@
     								292
     								{{87, 10}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -919,7 +956,6 @@
     								292
     								{{193, 10}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -941,7 +977,6 @@
     								292
     								{{-20, 72}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -963,7 +998,6 @@
     								292
     								{{87, 72}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -985,7 +1019,6 @@
     								292
     								{{193, 72}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1007,7 +1040,6 @@
     								292
     								{{-20, 134}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1029,7 +1061,6 @@
     								292
     								{{87, 134}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1051,7 +1082,6 @@
     								292
     								{{193, 134}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1073,7 +1103,6 @@
     								292
     								{{-20, 196}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1095,7 +1124,6 @@
     								292
     								{{87, 196}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1117,7 +1145,6 @@
     								292
     								{{193, 196}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -1137,7 +1164,6 @@
     						
     						{{244, 372}, {281, 260}}
     						
    -						
     						
     						_NS:9
     						
    @@ -1153,7 +1179,6 @@
     								292
     								{81, 69}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1166,29 +1191,36 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Transfer
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_transfer_over~ipad.png
     								
    -								
    +								
     									NSImage
     									options_transfer_disabled~ipad.png
     								
    -								
    +								
     									NSImage
     									options_transfer_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								292
     								{{0, 64}, {81, 69}}
     								
    -								
    -								
     								_NS:9
     								NO
     								17
    @@ -1200,26 +1232,30 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Add call
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_add_over~ipad.png
     								
    -								
    -									NSImage
    -									options_add_disabled~ipad.png
    -								
    -								
    +								
     									NSImage
     									options_add_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{{239, 809}, {81, 133}}
     						
    -						
     						
     						_NS:9
     						
    @@ -1235,7 +1271,6 @@
     								290
     								{{0, 85}, {768, 2000}}
     								
    -								
     								
     								_NS:9
     								
    @@ -1250,7 +1285,6 @@
     								292
     								{80, 85}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1263,32 +1297,40 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Video
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									video_off_over~ipad.png
     								
    -								
    +								
     									NSImage
     									video_off_disabled~ipad.png
     								
    -								
    +								
     									NSImage
     									video_on_default~ipad.png
     								
    -								
    +								
     									NSImage
     									video_off_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								-2147483356
     								{{20, 20}, {37, 37}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1301,7 +1343,6 @@
     								292
     								{{80, 0}, {80, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1314,32 +1355,36 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Micro
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									micro_off_over~ipad.png
     								
    -								
    -									NSImage
    -									micro_off_disabled~ipad.png
    -								
    -								
    +								
     									NSImage
     									micro_on_default~ipad.png
     								
    -								
    +								
     									NSImage
     									micro_off_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								292
     								{{160, 0}, {80, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1352,32 +1397,41 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Speaker
    +								Speaker
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									speaker_off_over~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_off_disabled~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_on_default~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_off_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								292
     								{{240, 0}, {80, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1390,32 +1444,40 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Options
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_over~ipad.png
     								
    -								
    +								
     									NSImage
     									options_disabled~ipad.png
     								
    -								
    +								
     									NSImage
     									options_selected~ipad.png
     								
    -								
    +								
     									NSImage
     									options_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								264
     								{{445, 0}, {87, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1449,7 +1511,6 @@
     								-2147483384
     								{{445, 0}, {87, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1479,7 +1540,6 @@
     								264
     								{{619, 0}, {149, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1509,7 +1569,6 @@
     								264
     								{{532, 0}, {87, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -1527,21 +1586,21 @@
     									NSImage
     									dialer_alt_over~ipad.png
     								
    +								
    +									NSImage
    +									dialer_alt_default~ipad.png
    +								
     								
     									NSImage
     									dialer_alt_back_default~ipad.png
     								
    -								
    -									NSImage
    -									dialer_alt_default~ipad.png
    -								
    +								
     								
     								
     							
     						
     						{{0, 919}, {768, 85}}
     						
    -						
     						
     						_NS:9
     						
    @@ -1551,7 +1610,6 @@
     				
     				{768, 1004}
     				
    -				
     				
     				_NS:9
     				
    @@ -2301,7 +2359,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				UIHangUpButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -2312,16 +2370,20 @@
     				
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UISpeakerButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UIMicroButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UIVideoButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -2364,9 +2426,11 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -2374,23 +2438,27 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIVideoButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UIMicroButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UISpeakerButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UIPauseButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				UIHangUpButton
    @@ -2437,8 +2505,10 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -2735,7 +2805,7 @@
     		IBIPadFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -2758,7 +2828,6 @@
     			{159, 170}
     			{159, 170}
     			{159, 170}
    -			{159, 170}
     			{159, 170}
     			{159, 170}
     			{159, 170}
    @@ -2790,7 +2859,6 @@
     			{162, 137}
     			{162, 137}
     			{162, 137}
    -			{162, 137}
     			{162, 137}
     			{162, 137}
     			{162, 170}
    @@ -2830,6 +2898,6 @@
     			{162, 170}
     			{162, 170}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/LinphoneUI/en.lproj/UICallCell.xib b/Classes/LinphoneUI/en.lproj/UICallCell.xib
    index a41e70d36..1a70be243 100644
    --- a/Classes/LinphoneUI/en.lproj/UICallCell.xib
    +++ b/Classes/LinphoneUI/en.lproj/UICallCell.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -46,7 +46,6 @@
     								290
     								{{0, 63}, {320, 250}}
     								
    -								
     								
     								_NS:9
     								
    @@ -87,7 +86,6 @@
     								293
     								{{0, 48}, {320, 262}}
     								
    -								
     								
     								_NS:9
     								
    @@ -103,7 +101,6 @@
     								293
     								{{80, 65}, {160, 170}}
     								
    -								
     								
     								_NS:9
     								
    @@ -122,7 +119,6 @@
     						
     						{320, 300}
     						
    -						
     						
     						_NS:9
     						
    @@ -138,7 +134,6 @@
     								290
     								{320, 63}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -153,7 +148,6 @@
     								290
     								{320, 63}
     								
    -								
     								
     								_NS:9
     								0.0
    @@ -165,7 +159,6 @@
     								290
     								{{10, 0}, {206, 51}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -4587,7 +4580,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								289
     								{{224, 14}, {25, 25}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -4603,7 +4595,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								-2147483359
     								{{216, 6}, {41, 41}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -4636,7 +4627,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								-2147483359
     								{{216, 6}, {41, 41}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -4673,8 +4663,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								289
     								{{262, 12}, {50, 29}}
     								
    -								
    -								
     								_NS:9
     								NO
     								YES
    @@ -4706,7 +4694,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								290
     								{{0, 5}, {200, 40}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -4725,7 +4712,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     						
     						{320, 63}
     						
    -						
     						
     						_NS:9
     						
    @@ -4734,7 +4720,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     				
     				{320, 300}
     				
    -				
     				
     				_NS:9
     				
    @@ -4745,8 +4730,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     				292
     				{320, 460}
     				
    -				
    -				
     				_NS:9
     				
     				NO
    @@ -5030,107 +5013,12 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     			
     			75
     		
    -		
    -			
    -				
    -					UICallCell
    -					UITableViewCell
    -					
    -						id
    -						id
    -					
    -					
    -						
    -							doHeaderClick:
    -							id
    -						
    -						
    -							doRemoveClick:
    -							id
    -						
    -					
    -					
    -						UILabel
    -						UIImageView
    -						UIView
    -						UIImageView
    -						UIImageView
    -						UIView
    -						UIPauseButton
    -						UIButton
    -						UIImageView
    -						UILabel
    -					
    -					
    -						
    -							addressLabel
    -							UILabel
    -						
    -						
    -							avatarImage
    -							UIImageView
    -						
    -						
    -							avatarView
    -							UIView
    -						
    -						
    -							headerBackgroundHighlightImage
    -							UIImageView
    -						
    -						
    -							headerBackgroundImage
    -							UIImageView
    -						
    -						
    -							headerView
    -							UIView
    -						
    -						
    -							pauseButton
    -							UIPauseButton
    -						
    -						
    -							removeButton
    -							UIButton
    -						
    -						
    -							stateImage
    -							UIImageView
    -						
    -						
    -							stateLabel
    -							UILabel
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UICallCell.h
    -					
    -				
    -				
    -					UIPauseButton
    -					UIToggleButton
    -					
    -						IBProjectSource
    -						./Classes/UIPauseButton.h
    -					
    -				
    -				
    -					UIToggleButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UIToggleButton.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -5144,6 +5032,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     			{43, 46}
     			{640, 125}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/LinphoneUI/en.lproj/UIConferenceHeader.xib b/Classes/LinphoneUI/en.lproj/UIConferenceHeader.xib
    index 3fa734501..2e72dd919 100644
    --- a/Classes/LinphoneUI/en.lproj/UIConferenceHeader.xib
    +++ b/Classes/LinphoneUI/en.lproj/UIConferenceHeader.xib
    @@ -34,11 +34,11 @@
     			
     			
     				
    -				292
    +				290
     				
     					
     						
    -						292
    +						290
     						{320, 68}
     						
     						
    @@ -58,18 +58,17 @@
     					
     					
     						
    -						292
    +						289
     						{{224, 14}, {25, 25}}
     						
     						
    -						
     						_NS:9
     						NO
     						IBCocoaTouchFramework
     					
     					
     						
    -						292
    +						289
     						{{216, 6}, {41, 41}}
     						
     						
    diff --git a/Classes/LinphoneUI/en.lproj/UIContactDetailsFooter.xib b/Classes/LinphoneUI/en.lproj/UIContactDetailsFooter.xib
    index 57c5e91bd..0d353a385 100644
    --- a/Classes/LinphoneUI/en.lproj/UIContactDetailsFooter.xib
    +++ b/Classes/LinphoneUI/en.lproj/UIContactDetailsFooter.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -40,8 +40,6 @@
     						301
     						{{23, 25}, {275, 50}}
     						
    -						
    -						
     						_NS:9
     						
     							3
    @@ -80,7 +78,6 @@
     				
     				{320, 80}
     				
    -				
     				
     				_NS:9
     				
    @@ -207,7 +204,7 @@
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -215,6 +212,6 @@
     			{550, 101}
     			{550, 101}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/LinphoneUI/en.lproj/UIContactDetailsHeader.xib b/Classes/LinphoneUI/en.lproj/UIContactDetailsHeader.xib
    index 6e7ff2aca..c5069b9d0 100644
    --- a/Classes/LinphoneUI/en.lproj/UIContactDetailsHeader.xib
    +++ b/Classes/LinphoneUI/en.lproj/UIContactDetailsHeader.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -43,7 +43,6 @@
     						292
     						{{-13, -5}, {131, 107}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -58,7 +57,6 @@
     						292
     						{{20, 6}, {65, 65}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -73,7 +71,6 @@
     						292
     						{{20, 6}, {65, 65}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -115,7 +112,6 @@
     								290
     								{{0, 37}, {199, 43}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -147,7 +143,6 @@
     						
     						{{101, 0}, {219, 80}}
     						
    -						
     						
     						_NS:9
     						
    @@ -165,63 +160,10 @@
     								274
     								{219, 130}
     								
    -								
    -								
     								_NS:9
     								
    -									10
    -									
    -										549453824
    -										{512, 1}
    -										
    -											
    -												
    -												
    -													
    -														TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA
    -AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA
    -AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI
    -AAgACAAIAAEAAQABAAE
    -													
    -												
    -											
    -										
    -										
    -									
    +									1
    +									MCAwIDAgMAA
     									groupTableViewBackgroundColor
     								
     								YES
    @@ -238,7 +180,6 @@ AAgACAAIAAEAAQABAAE
     						
     						{{101, 0}, {219, 130}}
     						
    -						
     						
     						_NS:9
     						
    @@ -247,7 +188,6 @@ AAgACAAIAAEAAQABAAE
     				
     				{320, 130}
     				
    -				
     				
     				_NS:9
     				
    @@ -491,7 +431,7 @@ AAgACAAIAAEAAQABAAE
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -499,6 +439,6 @@ AAgACAAIAAEAAQABAAE
     			{262, 214}
     			{131, 131}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/LinphoneUI/en.lproj/UIMainBar.xib b/Classes/LinphoneUI/en.lproj/UIMainBar.xib
    index ea6cfc924..cb27c7c36 100644
    --- a/Classes/LinphoneUI/en.lproj/UIMainBar.xib
    +++ b/Classes/LinphoneUI/en.lproj/UIMainBar.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -62,7 +62,6 @@
     						{{0, 77}, {320, 2000}}
     						
     						
    -						
     						_NS:9
     						
     							1
    @@ -87,29 +86,46 @@
     						0
     						0
     						NO
    +						40
    +						0.0
    +						0.0
    +						0.0
    +						History
    +						
    +							2
    +							MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +						
    +						
    +							2
    +							MC44MTE3NjQ3MTcxIDAuMjk4MDM5MjI3NyAwLjE2MDc4NDMxOQA
    +						
    +						
    +							2
    +							MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +						
     						
     							3
     							MC41AA
     						
    -						
    +						
     							NSImage
     							history_over.png
     						
    -						
    +						
     							NSImage
     							history_selected.png
     						
    -						
    +						
     							NSImage
     							history_default.png
     						
    -						
    -							2
    -							15
    +						
    +							1
    +							14
     						
    -						
    -							Helvetica-Bold
    -							15
    +						
    +							Helvetica
    +							14
     							16
     						
     					
    @@ -158,15 +174,8 @@
     								0
     								10
     								1
    -								
    -									1
    -									14
    -								
    -								
    -									Helvetica
    -									14
    -									16
    -								
    +								
    +								
     							
     						
     						{{38, 1}, {21, 21}}
    @@ -198,26 +207,34 @@
     						0
     						0
     						NO
    +						40
    +						0.0
    +						0.0
    +						0.0
    +						Contacts
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							contacts_over.png
     						
    -						
    +						
     							NSImage
     							contacts_selected.png
     						
    -						
    +						
     							NSImage
     							contacts_default.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
     						292
    -						{{192, 0}, {64, 77}}
    +						{{256, 0}, {64, 77}}
     						
     						
     						
    @@ -230,21 +247,29 @@
     						0
     						0
     						NO
    +						40
    +						0.0
    +						0.0
    +						0.0
    +						Settings
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							settings_over.png
     						
    -						
    +						
     							NSImage
     							settings_selected.png
     						
    -						
    +						
     							NSImage
     							settings_default.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -275,13 +300,20 @@
     							NSImage
     							dialer_default.png
     						
    -						
    -						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
     					
     					
     						
     						292
    -						{{256, 0}, {64, 77}}
    +						{{192, 0}, {64, 77}}
     						
     						
     						
    @@ -294,21 +326,29 @@
     						0
     						0
     						NO
    +						40
    +						0.0
    +						0.0
    +						0.0
    +						Chat
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							chat_over.png
     						
    -						
    +						
     							NSImage
     							chat_selected.png
     						
    -						
    +						
     							NSImage
     							chat_default.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -350,10 +390,10 @@
     								10
     								1
     								
    -								
    +								
     							
     						
    -						{{261, 1}, {21, 21}}
    +						{{197, 1}, {21, 21}}
     						
     						
     						
    @@ -573,12 +613,6 @@
     						
     						contacts
     					
    -					
    -						9
    -						
    -						
    -						settings
    -					
     					
     						7
     						
    @@ -635,6 +669,12 @@
     						
     						background
     					
    +					
    +						9
    +						
    +						
    +						settings
    +					
     				
     			
     			
    @@ -653,15 +693,19 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     			
     			
     			
    @@ -785,7 +829,7 @@
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -807,6 +851,6 @@
     			{128, 154}
     			{128, 154}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib b/Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib
    index b3907761d..e8646ae44 100644
    --- a/Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib
    +++ b/Classes/LinphoneUI/en.lproj/UIMainBar~ipad.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -88,29 +88,46 @@
     						0
     						0
     						NO
    +						10
    +						0.0
    +						60
    +						0.0
    +						History
    +						
    +							2
    +							MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +						
    +						
    +							2
    +							MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA
    +						
    +						
    +							2
    +							MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +						
     						
     							3
     							MC41AA
     						
    -						
    +						
     							NSImage
     							history_over~ipad.png
     						
    -						
    +						
     							NSImage
     							history_selected~ipad.png
     						
    -						
    +						
     							NSImage
     							history_default~ipad.png
     						
    -						
    -							2
    -							15
    +						
    +							1
    +							14
     						
    -						
    -							Helvetica-Bold
    -							15
    +						
    +							Helvetica
    +							14
     							16
     						
     					
    @@ -159,18 +176,11 @@
     								0
     								10
     								1
    -								
    -									1
    -									14
    -								
    -								
    -									Helvetica
    -									14
    -									16
    -								
    +								
    +								
     							
     						
    -						{{140, 1}, {21, 21}}
    +						{{144, 1}, {21, 21}}
     						
     						
     						
    @@ -201,21 +211,29 @@
     						0
     						0
     						NO
    +						10
    +						0.0
    +						60
    +						0.0
    +						Contacts
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							contacts_over~ipad.png
     						
    -						
    +						
     							NSImage
     							contacts_selected~ipad.png
     						
    -						
    +						
     							NSImage
     							contacts_default~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -223,7 +241,7 @@
     						{{350, -1}, {68, 80}}
     						
     						
    -						
    +						
     						_NS:9
     						NO
     						4
    @@ -247,16 +265,23 @@
     							NSImage
     							dialer_default.png
     						
    -						
    -						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
     					
     					
     						
     						292
    -						{{418, 0}, {175, 77}}
    +						{{593, 0}, {175, 77}}
     						
     						
    -						
    +						
     						_NS:9
     						NO
     						5
    @@ -267,29 +292,37 @@
     						0
     						0
     						NO
    +						10
    +						0.0
    +						60
    +						0.0
    +						Settings
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							settings_over~ipad.png
     						
    -						
    +						
     							NSImage
     							settings_selected~ipad.png
     						
    -						
    +						
     							NSImage
     							settings_default~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
     						292
    -						{{593, 0}, {175, 77}}
    +						{{418, 0}, {175, 77}}
     						
     						
    -						
    +						
     						_NS:9
     						NO
     						6
    @@ -300,21 +333,29 @@
     						0
     						0
     						NO
    +						10
    +						0.0
    +						60
    +						0.0
    +						Chat
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							chat_over~ipad.png
     						
    -						
    +						
     							NSImage
     							chat_selected~ipad.png
     						
    -						
    +						
     							NSImage
     							chat_default~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -338,7 +379,6 @@
     								{{2, 2}, {17, 17}}
     								
     								
    -								
     								_NS:9
     								NO
     								YES
    @@ -356,10 +396,10 @@
     								10
     								1
     								
    -								
    +								
     							
     						
    -						{{605, 1}, {21, 21}}
    +						{{428, 1}, {21, 21}}
     						
     						
     						
    @@ -438,21 +478,29 @@
     						0
     						0
     						NO
    +						16
    +						0.0
    +						60
    +						0.0
    +						History
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							history_over_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							history_selected_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							history_default_landscape~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -490,10 +538,10 @@
     								10
     								1
     								
    -								
    +								
     							
     						
    -						{{208, 1}, {21, 21}}
    +						{{209, 1}, {21, 21}}
     						
     						
     						
    @@ -521,21 +569,29 @@
     						0
     						0
     						NO
    +						16
    +						0.0
    +						60
    +						0.0
    +						Contacts
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							contacts_over_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							contacts_selected_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							contacts_default_landscape~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -543,7 +599,7 @@
     						{{480, 8}, {68, 80}}
     						
     						
    -						
    +						
     						_NS:9
     						NO
     						4
    @@ -559,15 +615,14 @@
     						
     						
     						
    -						
    +						
     					
     					
     						
     						292
    -						{{544, 0}, {240, 86}}
    +						{{784, 0}, {240, 86}}
     						
     						
    -						
     						_NS:9
     						NO
     						5
    @@ -578,26 +633,34 @@
     						0
     						0
     						NO
    +						16
    +						0.0
    +						60
    +						0.0
    +						Settings
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							settings_over_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							settings_selected_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							settings_default_landscape~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
     						292
    -						{{784, 0}, {240, 86}}
    +						{{548, 0}, {240, 86}}
     						
     						
     						
    @@ -611,21 +674,29 @@
     						0
     						0
     						NO
    +						16
    +						0.0
    +						60
    +						0.0
    +						Chat
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							chat_over_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							chat_selected_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							chat_default_landscape~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -649,7 +720,7 @@
     								{{2, 2}, {17, 17}}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								YES
    @@ -663,10 +734,10 @@
     								10
     								1
     								
    -								
    +								
     							
     						
    -						{{792, 1}, {21, 21}}
    +						{{558, 1}, {21, 21}}
     						
     						
     						
    @@ -860,13 +931,13 @@
     						
     							
     							
    -							
     							
     							
    -							
     							
     							
     							
    +							
    +							
     						
     						
     						Portrait View
    @@ -904,12 +975,6 @@
     						
     						mask
     					
    -					
    -						7
    -						
    -						
    -						chat
    -					
     					
     						8
     						
    @@ -946,12 +1011,6 @@
     						
     						chatNotificationLabel
     					
    -					
    -						10
    -						
    -						
    -						settings
    -					
     					
     						28
     						
    @@ -960,11 +1019,11 @@
     							
     							
     							
    -							
     							
     							
     							
     							
    +							
     						
     						
     						Landscape View
    @@ -1062,6 +1121,18 @@
     						
     						background
     					
    +					
    +						10
    +						
    +						
    +						settings
    +					
    +					
    +						7
    +						
    +						
    +						chat
    +					
     				
     			
     			
    @@ -1070,7 +1141,8 @@
     				UIResponder
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -1082,12 +1154,16 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -1104,11 +1180,14 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     			
     			
     			
    @@ -1232,17 +1311,17 @@
     		IBIPadFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
    -			{480, 170}
    -			{353, 153}
    -			{480, 170}
    -			{353, 153}
    -			{480, 170}
    -			{353, 153}
    +			{480, 171}
    +			{350, 153}
    +			{480, 171}
    +			{350, 153}
    +			{480, 171}
    +			{350, 153}
     			{480, 171}
     			{352, 153}
     			{480, 171}
    @@ -1260,12 +1339,12 @@
     			{480, 171}
     			{353, 153}
     			{480, 171}
    -			{350, 153}
    +			{353, 153}
     			{480, 171}
    -			{350, 153}
    +			{353, 153}
     			{480, 171}
    -			{350, 153}
    +			{353, 153}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/LinphoneUI/fr.lproj/UICallBar.xib b/Classes/LinphoneUI/fr.lproj/UICallBar.xib
    index bb58b859a..784673776 100644
    --- a/Classes/LinphoneUI/fr.lproj/UICallBar.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UICallBar.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -446,24 +446,45 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Transfert
    +								
    +									2
    +									MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA
    +								
    +								
    +									2
    +									MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA
    +								
    +								
    +									2
    +									MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA
    +								
     								
    -								
    +								
     									NSImage
     									options_transfer_over.png
     								
    -								
    +								
     									NSImage
     									options_transfer_disabled.png
     								
    -								
    +								
     									NSImage
     									options_transfer_default.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									13
    +								
    +								
    +									Helvetica
    +									13
    +									16
     								
    -								
     							
     							
     								
    @@ -482,21 +503,29 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Ajouter un appel
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_add_over.png
     								
    -								
    +								
     									NSImage
     									options_add_disabled.png
     								
    -								
    +								
     									NSImage
     									options_add_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{{240, 205}, {80, 129}}
    @@ -542,25 +571,34 @@
     								0
     								NO
     								NO
    +								38
    +								0.0
    +								0.0
    +								0.0
    +								Vidéo
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									video_off_over.png
     								
    -								
    +								
     									NSImage
     									video_off_disabled.png
     								
    -								
    +								
     									NSImage
     									video_on_default.png
     								
    -								
    +								
     									NSImage
     									video_off_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -591,25 +629,34 @@
     								0
     								NO
     								NO
    +								38
    +								0.0
    +								0.0
    +								0.0
    +								Micro
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									micro_off_over.png
     								
    -								
    +								
     									NSImage
     									micro_off_disabled.png
     								
    -								
    +								
     									NSImage
     									micro_on_default.png
     								
    -								
    +								
     									NSImage
     									micro_off_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -628,25 +675,34 @@
     								0
     								NO
     								NO
    +								38
    +								0.0
    +								0.0
    +								0.0
    +								Haut parleur
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									speaker_off_over.png
     								
    -								
    +								
     									NSImage
     									speaker_off_disabled.png
     								
    -								
    +								
     									NSImage
     									speaker_on_default.png
     								
    -								
    +								
     									NSImage
     									speaker_off_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -665,25 +721,34 @@
     								0
     								NO
     								NO
    +								38
    +								0.0
    +								0.0
    +								0.0
    +								Options
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_over.png
     								
    -								
    +								
     									NSImage
     									options_disabled.png
     								
    -								
    +								
     									NSImage
     									options_selected.png
     								
    -								
    +								
     									NSImage
     									options_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -715,7 +780,10 @@
     									NSImage
     									pause_off_default.png
     								
    -								
    +								
    +									2
    +									15
    +								
     								
     							
     							
    @@ -798,6 +866,10 @@
     									NSImage
     									dialer_alt_over.png
     								
    +								
    +									NSImage
    +									dialer_alt_disabled.png
    +								
     								
     									NSImage
     									dialer_alt_back_default.png
    @@ -1113,21 +1185,29 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Transfert
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_transfer_over_landscape.png
     								
    -								
    +								
     									NSImage
     									options_transfer_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									options_transfer_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -1146,21 +1226,29 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Ajouter appel
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_add_over_landscape.png
     								
    -								
    +								
     									NSImage
     									options_add_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									options_add_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{{415, 140}, {65, 105}}
    @@ -1206,25 +1294,34 @@
     								0
     								NO
     								NO
    +								24
    +								0.0
    +								0.0
    +								0.0
    +								Vidéo
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									video_off_over_landscape.png
     								
    -								
    +								
     									NSImage
     									video_off_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									video_on_default_landscape.png
     								
    -								
    +								
     									NSImage
     									video_off_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -1255,25 +1352,34 @@
     								0
     								NO
     								NO
    +								24
    +								0.0
    +								0.0
    +								0.0
    +								Micro
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									micro_off_over_landscape.png
     								
    -								
    +								
     									NSImage
     									micro_off_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									micro_on_default_landscape.png
     								
    -								
    +								
     									NSImage
     									micro_off_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -1292,25 +1398,34 @@
     								0
     								NO
     								NO
    +								24
    +								0.0
    +								0.0
    +								0.0
    +								Haut parleur
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									speaker_off_over_landscape.png
     								
    -								
    +								
     									NSImage
     									speaker_off_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									speaker_on_default_landscape.png
     								
    -								
    +								
     									NSImage
     									speaker_off_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -1329,25 +1444,34 @@
     								0
     								NO
     								NO
    +								24
    +								0.0
    +								0.0
    +								0.0
    +								Options
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_over_landscape.png
     								
    -								
    +								
     									NSImage
     									options_disabled_landscape.png
     								
    -								
    +								
     									NSImage
     									options_selected_landscape.png
     								
    -								
    +								
     									NSImage
     									options_default_landscape.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -1462,14 +1586,15 @@
     									NSImage
     									dialer_alt_over_landscape.png
     								
    +								
    +									NSImage
    +									dialer_alt_default_landscape.png
    +								
     								
     									NSImage
     									dialer_alt_back_default_landscape.png
     								
    -								
    -									NSImage
    -									dialer_alt_default_landscape.png
    -								
    +								
     								
     								
     							
    @@ -2319,7 +2444,8 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UITransparentView
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -2329,10 +2455,10 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				UIHangUpButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				UIPauseButton
    @@ -2340,18 +2466,23 @@
     				
     				UIMicroButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UISpeakerButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UIMicroButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UIVideoButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIDigitButton
    @@ -2371,7 +2502,8 @@
     				
     				UIVideoButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -2394,8 +2526,10 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -2409,7 +2543,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -2436,7 +2570,7 @@
     				
     				UIHangUpButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -2451,14 +2585,17 @@
     				
     				UIPauseButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UISpeakerButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     			
    @@ -2468,292 +2605,12 @@
     			
     			142
     		
    -		
    -			
    -				
    -					TPMultiLayoutViewController
    -					UIViewController
    -					
    -						UIView
    -						UIView
    -					
    -					
    -						
    -							landscapeView
    -							UIView
    -						
    -						
    -							portraitView
    -							UIView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/TPMultiLayoutViewController.h
    -					
    -				
    -				
    -					UICallBar
    -					TPMultiLayoutViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onConferenceClick:
    -							id
    -						
    -						
    -							onOptionsAddClick:
    -							id
    -						
    -						
    -							onOptionsClick:
    -							id
    -						
    -						
    -							onOptionsTransferClick:
    -							id
    -						
    -						
    -							onPadClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIToggleButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIHangUpButton
    -						UIMicroButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIButton
    -						UIToggleButton
    -						UIButton
    -						UIView
    -						UIView
    -						UIPauseButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIDigitButton
    -						UISpeakerButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIDigitButton
    -						UIVideoButton
    -						UIDigitButton
    -					
    -					
    -						
    -							conferenceButton
    -							UIButton
    -						
    -						
    -							dialerButton
    -							UIToggleButton
    -						
    -						
    -							eightButton
    -							UIDigitButton
    -						
    -						
    -							fiveButton
    -							UIDigitButton
    -						
    -						
    -							fourButton
    -							UIDigitButton
    -						
    -						
    -							hangupButton
    -							UIHangUpButton
    -						
    -						
    -							microButton
    -							UIMicroButton
    -						
    -						
    -							nineButton
    -							UIDigitButton
    -						
    -						
    -							oneButton
    -							UIDigitButton
    -						
    -						
    -							optionsAddButton
    -							UIButton
    -						
    -						
    -							optionsButton
    -							UIToggleButton
    -						
    -						
    -							optionsTransferButton
    -							UIButton
    -						
    -						
    -							optionsView
    -							UIView
    -						
    -						
    -							padView
    -							UIView
    -						
    -						
    -							pauseButton
    -							UIPauseButton
    -						
    -						
    -							sevenButton
    -							UIDigitButton
    -						
    -						
    -							sharpButton
    -							UIDigitButton
    -						
    -						
    -							sixButton
    -							UIDigitButton
    -						
    -						
    -							speakerButton
    -							UISpeakerButton
    -						
    -						
    -							starButton
    -							UIDigitButton
    -						
    -						
    -							threeButton
    -							UIDigitButton
    -						
    -						
    -							twoButton
    -							UIDigitButton
    -						
    -						
    -							videoButton
    -							UIVideoButton
    -						
    -						
    -							zeroButton
    -							UIDigitButton
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UICallBar.h
    -					
    -				
    -				
    -					UIDigitButton
    -					UILongTouchButton
    -					
    -						addressField
    -						UITextField
    -					
    -					
    -						addressField
    -						
    -							addressField
    -							UITextField
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UIDigitButton.h
    -					
    -				
    -				
    -					UIHangUpButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UIHangUpButton.h
    -					
    -				
    -				
    -					UILongTouchButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UILongTouchButton.h
    -					
    -				
    -				
    -					UIMicroButton
    -					UIToggleButton
    -					
    -						IBProjectSource
    -						./Classes/UIMicroButton.h
    -					
    -				
    -				
    -					UIPauseButton
    -					UIToggleButton
    -					
    -						IBProjectSource
    -						./Classes/UIPauseButton.h
    -					
    -				
    -				
    -					UISpeakerButton
    -					UIToggleButton
    -					
    -						IBProjectSource
    -						./Classes/UISpeakerButton.h
    -					
    -				
    -				
    -					UIToggleButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UIToggleButton.h
    -					
    -				
    -				
    -					UITransparentView
    -					UIView
    -					
    -						IBProjectSource
    -						./Classes/UITransparentView.h
    -					
    -				
    -				
    -					UIVideoButton
    -					UIToggleButton
    -					
    -						waitView
    -						UIActivityIndicatorView
    -					
    -					
    -						waitView
    -						
    -							waitView
    -							UIActivityIndicatorView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UIVideoButton.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -2767,6 +2624,7 @@
     			{530, 526}
     			{209, 136}
     			{130, 163}
    +			{209, 136}
     			{209, 136}
     			{130, 163}
     			{222, 136}
    diff --git a/Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib b/Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib
    index 297903251..f2b86dd03 100644
    --- a/Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UICallBar~ipad.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -411,24 +411,46 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Transfert
    +								
    +									2
    +									MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA
    +								
    +								
    +									2
    +									MC42NTA5ODAzOTIyIDAuNzAxOTYwNzg0MyAwLjc0OTAxOTYwNzgAA
    +								
    +								
    +									2
    +									MC4yNTQ5MDE5NjA4IDAuMjgyMzUyOTQxMiAwLjMwOTgwMzkyMTYAA
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_transfer_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_transfer_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_transfer_default_landscape~ipad.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									13
    +								
    +								
    +									Helvetica
    +									13
    +									16
     								
    -								
     							
     							
     								
    @@ -446,21 +468,30 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Ajouter appel
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_add_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_add_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_add_default_landscape~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{{239, 552}, {81, 133}}
    @@ -506,25 +537,34 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Vidéo
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									video_off_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									video_off_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									video_on_default_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									video_off_default_landscape~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -555,25 +595,34 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Micro
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									micro_off_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									micro_off_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									micro_on_default_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									micro_off_default_landscape~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -592,25 +641,35 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Haut parleur
    +								Haut parleur
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									speaker_off_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_off_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_on_default_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_off_default_landscape~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -629,25 +688,34 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Options
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_over_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_disabled_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_selected_landscape~ipad.png
     								
    -								
    +								
     									NSImage
     									options_default_landscape~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -679,7 +747,10 @@
     									NSImage
     									pause_off_default_landscape~ipad.png
     								
    -								
    +								
    +									2
    +									15
    +								
     								
     							
     							
    @@ -762,14 +833,15 @@
     									NSImage
     									dialer_alt_over_landscape~ipad.png
     								
    +								
    +									NSImage
    +									dialer_alt_default_landscape~ipad.png
    +								
     								
     									NSImage
     									dialer_alt_back_default_landscape~ipad.png
     								
    -								
    -									NSImage
    -									dialer_alt_default_landscape~ipad.png
    -								
    +								
     								
     								
     							
    @@ -1118,21 +1190,30 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Transfert
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_transfer_over~ipad.png
     								
    -								
    +								
     									NSImage
     									options_transfer_disabled~ipad.png
     								
    -								
    +								
     									NSImage
     									options_transfer_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -1150,21 +1231,26 @@
     								0
     								NO
     								NO
    +								28
    +								0.0
    +								0.0
    +								0.0
    +								Ajouter appel
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_add_over~ipad.png
     								
    -								
    -									NSImage
    -									options_add_disabled~ipad.png
    -								
    -								
    +								
     									NSImage
     									options_add_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{{239, 809}, {81, 133}}
    @@ -1210,25 +1296,34 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Vidéo
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									video_off_over~ipad.png
     								
    -								
    +								
     									NSImage
     									video_off_disabled~ipad.png
     								
    -								
    +								
     									NSImage
     									video_on_default~ipad.png
     								
    -								
    +								
     									NSImage
     									video_off_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -1259,25 +1354,30 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Micro
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									micro_off_over~ipad.png
     								
    -								
    -									NSImage
    -									micro_off_disabled~ipad.png
    -								
    -								
    +								
     									NSImage
     									micro_on_default~ipad.png
     								
    -								
    +								
     									NSImage
     									micro_off_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -1296,25 +1396,35 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Haut parleur
    +								Haut parleur
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									speaker_off_over~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_off_disabled~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_on_default~ipad.png
     								
    -								
    +								
     									NSImage
     									speaker_off_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -1333,25 +1443,34 @@
     								0
     								NO
     								NO
    +								54
    +								0.0
    +								0.0
    +								0.0
    +								Options
    +								
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									options_over~ipad.png
     								
    -								
    +								
     									NSImage
     									options_disabled~ipad.png
     								
    -								
    +								
     									NSImage
     									options_selected~ipad.png
     								
    -								
    +								
     									NSImage
     									options_default~ipad.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -1466,14 +1585,15 @@
     									NSImage
     									dialer_alt_over~ipad.png
     								
    +								
    +									NSImage
    +									dialer_alt_default~ipad.png
    +								
     								
     									NSImage
     									dialer_alt_back_default~ipad.png
     								
    -								
    -									NSImage
    -									dialer_alt_default~ipad.png
    -								
    +								
     								
     								
     							
    @@ -2237,7 +2357,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				UIHangUpButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -2248,16 +2368,20 @@
     				
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UISpeakerButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UIMicroButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UIVideoButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -2300,9 +2424,11 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -2310,23 +2436,27 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIVideoButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UIMicroButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UISpeakerButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				UIPauseButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				UIHangUpButton
    @@ -2373,8 +2503,10 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -2671,7 +2803,7 @@
     		IBIPadFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -2694,7 +2826,6 @@
     			{159, 170}
     			{159, 170}
     			{159, 170}
    -			{159, 170}
     			{159, 170}
     			{159, 170}
     			{159, 170}
    @@ -2726,7 +2857,6 @@
     			{162, 137}
     			{162, 137}
     			{162, 137}
    -			{162, 137}
     			{162, 137}
     			{162, 137}
     			{162, 170}
    diff --git a/Classes/LinphoneUI/fr.lproj/UICallCell.xib b/Classes/LinphoneUI/fr.lproj/UICallCell.xib
    index 96798df7e..daf569dc7 100644
    --- a/Classes/LinphoneUI/fr.lproj/UICallCell.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UICallCell.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -5011,107 +5011,12 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     			
     			75
     		
    -		
    -			
    -				
    -					UICallCell
    -					UITableViewCell
    -					
    -						id
    -						id
    -					
    -					
    -						
    -							doHeaderClick:
    -							id
    -						
    -						
    -							doRemoveClick:
    -							id
    -						
    -					
    -					
    -						UILabel
    -						UIImageView
    -						UIView
    -						UIImageView
    -						UIImageView
    -						UIView
    -						UIPauseButton
    -						UIButton
    -						UIImageView
    -						UILabel
    -					
    -					
    -						
    -							addressLabel
    -							UILabel
    -						
    -						
    -							avatarImage
    -							UIImageView
    -						
    -						
    -							avatarView
    -							UIView
    -						
    -						
    -							headerBackgroundHighlightImage
    -							UIImageView
    -						
    -						
    -							headerBackgroundImage
    -							UIImageView
    -						
    -						
    -							headerView
    -							UIView
    -						
    -						
    -							pauseButton
    -							UIPauseButton
    -						
    -						
    -							removeButton
    -							UIButton
    -						
    -						
    -							stateImage
    -							UIImageView
    -						
    -						
    -							stateLabel
    -							UILabel
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UICallCell.h
    -					
    -				
    -				
    -					UIPauseButton
    -					UIToggleButton
    -					
    -						IBProjectSource
    -						./Classes/UIPauseButton.h
    -					
    -				
    -				
    -					UIToggleButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UIToggleButton.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    diff --git a/Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib b/Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib
    index de81b0289..db6aa3690 100644
    --- a/Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIConferenceHeader.xib
    @@ -34,11 +34,11 @@
     			
     			
     				
    -				292
    +				290
     				
     					
     						
    -						292
    +						290
     						{320, 68}
     						
     						
    @@ -57,7 +57,7 @@
     					
     					
     						
    -						292
    +						289
     						{{224, 14}, {25, 25}}
     						
     						_NS:9
    @@ -66,7 +66,7 @@
     					
     					
     						
    -						292
    +						289
     						{{216, 6}, {41, 41}}
     						
     						
    diff --git a/Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib b/Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib
    index 582a7e738..ea17ccc53 100644
    --- a/Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIContactDetailsFooter.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -203,7 +203,7 @@
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    diff --git a/Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib b/Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib
    index 16e92f7d8..6d0e3738d 100644
    --- a/Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIContactDetailsHeader.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -481,7 +481,7 @@ AAgACAAIAAEAAQABAAE
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    diff --git a/Classes/LinphoneUI/fr.lproj/UIMainBar.xib b/Classes/LinphoneUI/fr.lproj/UIMainBar.xib
    index 1cf955ebf..e813e9190 100644
    --- a/Classes/LinphoneUI/fr.lproj/UIMainBar.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIMainBar.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -83,29 +83,46 @@
     						0
     						0
     						NO
    +						40
    +						0.0
    +						0.0
    +						0.0
    +						Historique
    +						
    +							2
    +							MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +						
    +						
    +							2
    +							MC44MTE3NjQ3MTcxIDAuMjk4MDM5MjI3NyAwLjE2MDc4NDMxOQA
    +						
    +						
    +							2
    +							MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +						
     						
     							3
     							MC41AA
     						
    -						
    +						
     							NSImage
     							history_over.png
     						
    -						
    +						
     							NSImage
     							history_selected.png
     						
    -						
    +						
     							NSImage
     							history_default.png
     						
    -						
    -							2
    -							15
    +						
    +							1
    +							14
     						
    -						
    -							Helvetica-Bold
    -							15
    +						
    +							Helvetica
    +							14
     							16
     						
     					
    @@ -152,15 +169,8 @@
     								0
     								10
     								1
    -								
    -									1
    -									14
    -								
    -								
    -									Helvetica
    -									14
    -									16
    -								
    +								
    +								
     							
     						
     						{{38, 1}, {21, 21}}
    @@ -190,26 +200,34 @@
     						0
     						0
     						NO
    +						40
    +						0.0
    +						0.0
    +						0.0
    +						Contacts
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							contacts_over.png
     						
    -						
    +						
     							NSImage
     							contacts_selected.png
     						
    -						
    +						
     							NSImage
     							contacts_default.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
     						292
    -						{{192, 0}, {64, 77}}
    +						{{256, 0}, {64, 77}}
     						
     						
     						_NS:9
    @@ -221,21 +239,29 @@
     						0
     						0
     						NO
    +						40
    +						0.0
    +						0.0
    +						0.0
    +						Options
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							settings_over.png
     						
    -						
    +						
     							NSImage
     							settings_selected.png
     						
    -						
    +						
     							NSImage
     							settings_default.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -265,13 +291,20 @@
     							NSImage
     							dialer_default.png
     						
    -						
    -						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
     					
     					
     						
     						292
    -						{{256, 0}, {64, 77}}
    +						{{192, 0}, {64, 77}}
     						
     						
     						_NS:9
    @@ -283,21 +316,29 @@
     						0
     						0
     						NO
    +						40
    +						0.0
    +						0.0
    +						0.0
    +						Chat
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							chat_over.png
     						
    -						
    +						
     							NSImage
     							chat_selected.png
     						
    -						
    +						
     							NSImage
     							chat_default.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -337,10 +378,10 @@
     								10
     								1
     								
    -								
    +								
     							
     						
    -						{{261, 1}, {21, 21}}
    +						{{197, 1}, {21, 21}}
     						
     						
     						_NS:9
    @@ -557,12 +598,6 @@
     						
     						contacts
     					
    -					
    -						9
    -						
    -						
    -						settings
    -					
     					
     						7
     						
    @@ -619,6 +654,12 @@
     						
     						background
     					
    +					
    +						9
    +						
    +						
    +						settings
    +					
     				
     			
     			
    @@ -637,15 +678,19 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     			
     			
     			
    @@ -769,7 +814,7 @@
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    diff --git a/Classes/LinphoneUI/fr.lproj/UIMainBar~ipad.xib b/Classes/LinphoneUI/fr.lproj/UIMainBar~ipad.xib
    index 620a1143a..c06698b75 100644
    --- a/Classes/LinphoneUI/fr.lproj/UIMainBar~ipad.xib
    +++ b/Classes/LinphoneUI/fr.lproj/UIMainBar~ipad.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -85,29 +85,46 @@
     						0
     						0
     						NO
    +						10
    +						0.0
    +						60
    +						0.0
    +						Historique
    +						
    +							2
    +							MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +						
    +						
    +							2
    +							MC44MTE3NjQ3MDU5IDAuMjk4MDM5MjE1NyAwLjE2MDc4NDMxMzcAA
    +						
    +						
    +							2
    +							MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +						
     						
     							3
     							MC41AA
     						
    -						
    +						
     							NSImage
     							history_over~ipad.png
     						
    -						
    +						
     							NSImage
     							history_selected~ipad.png
     						
    -						
    +						
     							NSImage
     							history_default~ipad.png
     						
    -						
    -							2
    -							15
    +						
    +							1
    +							14
     						
    -						
    -							Helvetica-Bold
    -							15
    +						
    +							Helvetica
    +							14
     							16
     						
     					
    @@ -154,18 +171,11 @@
     								0
     								10
     								1
    -								
    -									1
    -									14
    -								
    -								
    -									Helvetica
    -									14
    -									16
    -								
    +								
    +								
     							
     						
    -						{{140, 1}, {21, 21}}
    +						{{144, 1}, {21, 21}}
     						
     						
     						_NS:9
    @@ -194,28 +204,36 @@
     						0
     						0
     						NO
    +						10
    +						0.0
    +						60
    +						0.0
    +						Contacts
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							contacts_over~ipad.png
     						
    -						
    +						
     							NSImage
     							contacts_selected~ipad.png
     						
    -						
    +						
     							NSImage
     							contacts_default~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
     						288
     						{{350, -1}, {68, 80}}
     						
    -						
    +						
     						_NS:9
     						NO
     						4
    @@ -239,15 +257,22 @@
     							NSImage
     							dialer_default.png
     						
    -						
    -						
    +						
    +							2
    +							15
    +						
    +						
    +							Helvetica-Bold
    +							15
    +							16
    +						
     					
     					
     						
     						292
    -						{{418, 0}, {175, 77}}
    +						{{593, 0}, {175, 77}}
     						
    -						
    +						
     						_NS:9
     						NO
     						5
    @@ -258,28 +283,36 @@
     						0
     						0
     						NO
    +						10
    +						0.0
    +						60
    +						0.0
    +						Options
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							settings_over~ipad.png
     						
    -						
    +						
     							NSImage
     							settings_selected~ipad.png
     						
    -						
    +						
     							NSImage
     							settings_default~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
     						292
    -						{{593, 0}, {175, 77}}
    +						{{418, 0}, {175, 77}}
     						
    -						
    +						
     						_NS:9
     						NO
     						6
    @@ -290,21 +323,29 @@
     						0
     						0
     						NO
    +						10
    +						0.0
    +						60
    +						0.0
    +						Chat
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							chat_over~ipad.png
     						
    -						
    +						
     							NSImage
     							chat_selected~ipad.png
     						
    -						
    +						
     							NSImage
     							chat_default~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -343,10 +384,10 @@
     								10
     								1
     								
    -								
    +								
     							
     						
    -						{{605, 1}, {21, 21}}
    +						{{428, 1}, {21, 21}}
     						
     						
     						_NS:9
    @@ -419,21 +460,29 @@
     						0
     						0
     						NO
    +						16
    +						0.0
    +						60
    +						0.0
    +						Historique
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							history_over_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							history_selected_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							history_default_landscape~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -469,10 +518,10 @@
     								10
     								1
     								
    -								
    +								
     							
     						
    -						{{208, 1}, {21, 21}}
    +						{{209, 1}, {21, 21}}
     						
     						
     						_NS:9
    @@ -498,28 +547,36 @@
     						0
     						0
     						NO
    +						16
    +						0.0
    +						60
    +						0.0
    +						Contacts
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							contacts_over_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							contacts_selected_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							contacts_default_landscape~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
     						288
     						{{480, 8}, {68, 80}}
     						
    -						
    +						
     						_NS:9
     						NO
     						4
    @@ -535,14 +592,13 @@
     						
     						
     						
    -						
    +						
     					
     					
     						
     						292
    -						{{544, 0}, {240, 86}}
    +						{{784, 0}, {240, 86}}
     						
    -						
     						_NS:9
     						NO
     						5
    @@ -553,26 +609,34 @@
     						0
     						0
     						NO
    +						16
    +						0.0
    +						60
    +						0.0
    +						Options
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							settings_over_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							settings_selected_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							settings_default_landscape~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
     						292
    -						{{784, 0}, {240, 86}}
    +						{{548, 0}, {240, 86}}
     						
     						
     						_NS:9
    @@ -585,21 +649,29 @@
     						0
     						0
     						NO
    +						16
    +						0.0
    +						60
    +						0.0
    +						Chat
    +						
    +						
    +						
     						
    -						
    +						
     							NSImage
     							chat_over_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							chat_selected_landscape~ipad.png
     						
    -						
    +						
     							NSImage
     							chat_default_landscape~ipad.png
     						
    -						
    -						
    +						
    +						
     					
     					
     						
    @@ -621,6 +693,7 @@
     								256
     								{{2, 2}, {17, 17}}
     								
    +								
     								_NS:9
     								NO
     								YES
    @@ -634,10 +707,10 @@
     								10
     								1
     								
    -								
    +								
     							
     						
    -						{{792, 1}, {21, 21}}
    +						{{558, 1}, {21, 21}}
     						
     						
     						_NS:9
    @@ -828,13 +901,13 @@
     						
     							
     							
    -							
     							
     							
    -							
     							
     							
     							
    +							
    +							
     						
     						
     						Portrait View
    @@ -872,12 +945,6 @@
     						
     						mask
     					
    -					
    -						7
    -						
    -						
    -						chat
    -					
     					
     						8
     						
    @@ -914,12 +981,6 @@
     						
     						chatNotificationLabel
     					
    -					
    -						10
    -						
    -						
    -						settings
    -					
     					
     						28
     						
    @@ -928,11 +989,11 @@
     							
     							
     							
    -							
     							
     							
     							
     							
    +							
     						
     						
     						Landscape View
    @@ -1030,6 +1091,18 @@
     						
     						background
     					
    +					
    +						10
    +						
    +						
    +						settings
    +					
    +					
    +						7
    +						
    +						
    +						chat
    +					
     				
     			
     			
    @@ -1038,7 +1111,8 @@
     				UIResponder
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -1050,12 +1124,16 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -1072,11 +1150,14 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     			
     			
     			
    @@ -1200,17 +1281,17 @@
     		IBIPadFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
    -			{480, 170}
    -			{353, 153}
    -			{480, 170}
    -			{353, 153}
    -			{480, 170}
    -			{353, 153}
    +			{480, 171}
    +			{350, 153}
    +			{480, 171}
    +			{350, 153}
    +			{480, 171}
    +			{350, 153}
     			{480, 171}
     			{352, 153}
     			{480, 171}
    @@ -1228,11 +1309,11 @@
     			{480, 171}
     			{353, 153}
     			{480, 171}
    -			{350, 153}
    +			{353, 153}
     			{480, 171}
    -			{350, 153}
    +			{353, 153}
     			{480, 171}
    -			{350, 153}
    +			{353, 153}
     		
     		933
     	
    diff --git a/Classes/MoreViewController.xib b/Classes/MoreViewController.xib
    index f035483ed..1a57b09a7 100644
    --- a/Classes/MoreViewController.xib
    +++ b/Classes/MoreViewController.xib
    @@ -3,12 +3,12 @@
     	
     		784
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			YES
    @@ -44,66 +44,9 @@
     					274
     					{320, 247}
     					
    -					
     					
    -						10
    -						
    -							549453824
    -							{512, 1}
    -							
    -								YES
    -								
    -									YES
    -									
    -									
    -										
    -											TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA
    -AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA
    -AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI
    -AAgACAAIAAEAAQABAAE
    -										
    -									
    -								
    -							
    -							
    -								3
    -								MCAwAA
    -							
    -						
    +						1
    +						MCAwIDAgMAA
     						groupTableViewBackgroundColor
     					
     					NO
    @@ -127,7 +70,7 @@ AAgACAAIAAEAAQABAAE
     				NO
     			
     			
    -				
    +				
     				292
     				
     					YES
    @@ -164,9 +107,12 @@ AAgACAAIAAEAAQABAAE
     								
     							
     						
    -						{300, 44}
    +						{300, 43}
     						
    -						
    +						
    +							3
    +							MCAwAA
    +						
     						NO
     						YES
     						4
    @@ -175,6 +121,7 @@ AAgACAAIAAEAAQABAAE
     					
     				
     				{320, 44}
    +				
     				
     					1
     					MSAxIDEAA
    @@ -185,7 +132,7 @@ AAgACAAIAAEAAQABAAE
     				
     			
     			
    -				
    +				
     				292
     				
     					YES
    @@ -207,6 +154,7 @@ AAgACAAIAAEAAQABAAE
     								
     									1
     									MCAwIDAAA
    +									darkTextColor
     								
     								
     								1
    @@ -226,6 +174,7 @@ AAgACAAIAAEAAQABAAE
     					
     				
     				{320, 44}
    +				
     				
     				NO
     				IBCocoaTouchFramework
    @@ -233,7 +182,7 @@ AAgACAAIAAEAAQABAAE
     				
     			
     			
    -				
    +				
     				292
     				
     					YES
    @@ -299,7 +248,7 @@ AAgACAAIAAEAAQABAAE
     								
     							
     						
    -						{322, 230}
    +						{322, 229}
     						
     						
     						NO
    @@ -310,6 +259,7 @@ AAgACAAIAAEAAQABAAE
     					
     				
     				{322, 230}
    +				
     				
     				NO
     				NO
    @@ -515,72 +465,7 @@ AAgACAAIAAEAAQABAAE
     			
     			50
     		
    -		
    -			
    -				YES
    -				
    -					MoreViewController
    -					UITableViewController
    -					
    -						YES
    -						
    -							YES
    -							console
    -							credit
    -							creditText
    -							web
    -							weburi
    -						
    -						
    -							YES
    -							UITableViewCell
    -							UITableViewCell
    -							UITextView
    -							UITableViewCell
    -							UILabel
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							console
    -							credit
    -							creditText
    -							web
    -							weburi
    -						
    -						
    -							YES
    -							
    -								console
    -								UITableViewCell
    -							
    -							
    -								credit
    -								UITableViewCell
    -							
    -							
    -								creditText
    -								UITextView
    -							
    -							
    -								web
    -								UITableViewCell
    -							
    -							
    -								weburi
    -								UILabel
    -							
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/MoreViewController.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
    @@ -589,7 +474,7 @@ AAgACAAIAAEAAQABAAE
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    @@ -601,6 +486,6 @@ AAgACAAIAAEAAQABAAE
     			linphone-banner.png
     			{300, 100}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/PhoneMainView.xib b/Classes/PhoneMainView.xib
    index fb81bca47..b1146322f 100644
    --- a/Classes/PhoneMainView.xib
    +++ b/Classes/PhoneMainView.xib
    @@ -3,12 +3,12 @@
     	
     		784
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			YES
    @@ -45,7 +45,6 @@
     						274
     						{320, 480}
     						
    -						
     						_NS:9
     						1
     						NO
    @@ -58,7 +57,6 @@
     				
     				{320, 480}
     				
    -				
     				
     				_NS:9
     				
    @@ -182,117 +180,7 @@
     			
     			217
     		
    -		
    -			
    -				YES
    -				
    -					PhoneMainView
    -					UIViewController
    -					
    -						mainViewController
    -						UICompositeViewController
    -					
    -					
    -						mainViewController
    -						
    -							mainViewController
    -							UICompositeViewController
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/PhoneMainView.h
    -					
    -				
    -				
    -					TPMultiLayoutViewController
    -					UIViewController
    -					
    -						YES
    -						
    -							YES
    -							landscapeView
    -							portraitView
    -						
    -						
    -							YES
    -							UIView
    -							UIView
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							landscapeView
    -							portraitView
    -						
    -						
    -							YES
    -							
    -								landscapeView
    -								UIView
    -							
    -							
    -								portraitView
    -								UIView
    -							
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/TPMultiLayoutViewController.h
    -					
    -				
    -				
    -					UICompositeViewController
    -					TPMultiLayoutViewController
    -					
    -						YES
    -						
    -							YES
    -							contentView
    -							stateBarView
    -							tabBarView
    -						
    -						
    -							YES
    -							UIView
    -							UIView
    -							UIView
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							contentView
    -							stateBarView
    -							tabBarView
    -						
    -						
    -							YES
    -							
    -								contentView
    -								UIView
    -							
    -							
    -								stateBarView
    -								UIView
    -							
    -							
    -								tabBarView
    -								UIView
    -							
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UICompositeViewController.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
    @@ -301,7 +189,7 @@
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    @@ -313,6 +201,6 @@
     			background.png
     			{640, 523}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/SettingsViewController.m b/Classes/SettingsViewController.m
    index a2629cdd5..846b30b98 100644
    --- a/Classes/SettingsViewController.m
    +++ b/Classes/SettingsViewController.m
    @@ -189,6 +189,15 @@
         [targetViewController release];
     }
     
    +- (void)viewDidLoad {
    +    [super viewDidLoad];
    +    
    +    UIEdgeInsets inset = {0, 0, 10, 0};
    +    UIScrollView *scrollView = self.tableView;
    +    [scrollView setContentInset:inset];
    +    [scrollView setScrollIndicatorInsets:inset];
    +}
    +
     - (id)initWithStyle:(UITableViewStyle)style {
         self = [super initWithStyle:style];
         if(self != nil) {
    diff --git a/Classes/Utils/GrowingTextView/HPGrowingTextView.m b/Classes/Utils/GrowingTextView/HPGrowingTextView.m
    index 5094a59a6..40a088a6f 100755
    --- a/Classes/Utils/GrowingTextView/HPGrowingTextView.m
    +++ b/Classes/Utils/GrowingTextView/HPGrowingTextView.m
    @@ -101,9 +101,10 @@
         [super layoutSubviews];
         
     	CGRect r = self.bounds;
    -	r.origin.y = 0;
    -	r.origin.x = contentInset.left;
    +    r.origin.y = contentInset.top;
    +    r.origin.x = contentInset.left;
         r.size.width -= contentInset.left + contentInset.right;
    +    r.size.height -= contentInset.top + contentInset.bottom;
         
         internalTextView.frame = r;
     }
    @@ -113,9 +114,10 @@
         contentInset = inset;
         
         CGRect r = self.frame;
    -    r.origin.y = inset.top - inset.bottom;
    -    r.origin.x = inset.left;
    -    r.size.width -= inset.left + inset.right;
    +    r.origin.y = contentInset.top;
    +    r.origin.x = contentInset.left;
    +    r.size.width -= contentInset.left + contentInset.right;
    +    r.size.height -= contentInset.top + contentInset.bottom;
         
         internalTextView.frame = r;
         
    diff --git a/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj b/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj
    index 8cd815711..22312f246 100755
    --- a/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj
    +++ b/Classes/Utils/NinePatch/NinePatch.xcodeproj/project.pbxproj
    @@ -223,7 +223,7 @@
     		0867D690FE84028FC02AAC07 /* Project object */ = {
     			isa = PBXProject;
     			attributes = {
    -				LastUpgradeCheck = 0430;
    +				LastUpgradeCheck = 0450;
     			};
     			buildConfigurationList = 1DEB922208733DC00010E9CD /* Build configuration list for PBXProject "NinePatch" */;
     			compatibilityVersion = "Xcode 3.2";
    @@ -312,6 +312,7 @@
     				CODE_SIGN_IDENTITY = "Don't Code Sign";
     				GCC_C_LANGUAGE_STANDARD = c99;
     				GCC_OPTIMIZATION_LEVEL = 0;
    +				GCC_THUMB_SUPPORT = NO;
     				GCC_WARN_ABOUT_RETURN_TYPE = YES;
     				GCC_WARN_UNUSED_VARIABLE = YES;
     				ONLY_ACTIVE_ARCH = NO;
    @@ -330,6 +331,7 @@
     				);
     				CODE_SIGN_IDENTITY = "Don't Code Sign";
     				GCC_C_LANGUAGE_STANDARD = c99;
    +				GCC_THUMB_SUPPORT = NO;
     				GCC_WARN_ABOUT_RETURN_TYPE = YES;
     				GCC_WARN_UNUSED_VARIABLE = YES;
     				ONLY_ACTIVE_ARCH = NO;
    @@ -348,6 +350,7 @@
     				);
     				CODE_SIGN_IDENTITY = "Don't Code Sign";
     				GCC_C_LANGUAGE_STANDARD = c99;
    +				GCC_THUMB_SUPPORT = NO;
     				GCC_WARN_ABOUT_RETURN_TYPE = YES;
     				GCC_WARN_UNUSED_VARIABLE = YES;
     				ONLY_ACTIVE_ARCH = NO;
    @@ -384,6 +387,7 @@
     				);
     				CODE_SIGN_IDENTITY = "Don't Code Sign";
     				GCC_C_LANGUAGE_STANDARD = c99;
    +				GCC_THUMB_SUPPORT = NO;
     				GCC_WARN_ABOUT_RETURN_TYPE = YES;
     				GCC_WARN_UNUSED_VARIABLE = YES;
     				ONLY_ACTIVE_ARCH = NO;
    diff --git a/Classes/Utils/Utils.h b/Classes/Utils/Utils.h
    index 8568aca78..0863afd9d 100644
    --- a/Classes/Utils/Utils.h
    +++ b/Classes/Utils/Utils.h
    @@ -43,4 +43,14 @@ typedef enum _LinphoneLoggerSeverity {
     
     @end
     
    +@interface LinphoneUtils : NSObject {
    +
    +}
    ++ (void)buttonFixStates:(UIButton*)button;
    ++ (void)buttonFixStatesForTabs:(UIButton*)button;
    ++ (void)buttonMultiViewAddAttributes:(NSMutableDictionary*)attributes button:(UIButton*)button;
    ++ (void)buttonMultiViewApplyAttributes:(NSDictionary*)attributes button:(UIButton*)button;
    +
    +@end
    +
     #endif
    diff --git a/Classes/Utils/Utils.m b/Classes/Utils/Utils.m
    index 1ae8a0230..b1045e3a1 100644
    --- a/Classes/Utils/Utils.m
    +++ b/Classes/Utils/Utils.m
    @@ -59,4 +59,131 @@
     	va_end (args);
     }
     
    +@end
    +
    +@implementation LinphoneUtils
    +
    ++ (void)buttonFixStates:(UIButton*)button {
    +    // Set selected+over title: IB lack !
    +    [button setTitle:[button titleForState:UIControlStateSelected]
    +                 forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    
    +    // Set selected+over titleColor: IB lack !
    +    [button setTitleColor:[button titleColorForState:UIControlStateHighlighted]
    +                      forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    
    +    // Set selected+disabled title: IB lack !
    +    [button setTitle:[button titleForState:UIControlStateSelected]
    +                 forState:(UIControlStateDisabled | UIControlStateSelected)];
    +    
    +    // Set selected+disabled titleColor: IB lack !
    +    [button setTitleColor:[button titleColorForState:UIControlStateDisabled]
    +                      forState:(UIControlStateDisabled | UIControlStateSelected)];
    +}
    +
    ++ (void)buttonFixStatesForTabs:(UIButton*)button {
    +    // Set selected+over title: IB lack !
    +    [button setTitle:[button titleForState:UIControlStateSelected]
    +            forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    
    +    // Set selected+over titleColor: IB lack !
    +    [button setTitleColor:[button titleColorForState:UIControlStateSelected]
    +                 forState:(UIControlStateHighlighted | UIControlStateSelected)];
    +    
    +    // Set selected+disabled title: IB lack !
    +    [button setTitle:[button titleForState:UIControlStateSelected]
    +            forState:(UIControlStateDisabled | UIControlStateSelected)];
    +    
    +    // Set selected+disabled titleColor: IB lack !
    +    [button setTitleColor:[button titleColorForState:UIControlStateDisabled]
    +                 forState:(UIControlStateDisabled | UIControlStateSelected)];
    +}
    +
    ++ (void)buttonMultiViewAddAttributes:(NSMutableDictionary*)attributes button:(UIButton*)button {
    +    [LinphoneUtils addDictEntry:attributes item:[button titleForState:UIControlStateNormal] key:@"title-normal"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleForState:UIControlStateHighlighted] key:@"title-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleForState:UIControlStateDisabled] key:@"title-disabled"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleForState:UIControlStateSelected] key:@"title-selected"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"title-disabled-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleForState:UIControlStateSelected | UIControlStateHighlighted] key:@"title-selected-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleForState:UIControlStateSelected | UIControlStateDisabled] key:@"title-selected-disabled"];
    +    
    +    [LinphoneUtils addDictEntry:attributes item:[button titleColorForState:UIControlStateNormal] key:@"title-color-normal"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleColorForState:UIControlStateHighlighted] key:@"title-color-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleColorForState:UIControlStateDisabled] key:@"title-color-disabled"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleColorForState:UIControlStateSelected] key:@"title-color-selected"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleColorForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"title-color-disabled-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleColorForState:UIControlStateSelected | UIControlStateHighlighted] key:@"title-color-selected-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button titleColorForState:UIControlStateSelected | UIControlStateDisabled] key:@"title-color-selected-disabled"];
    +    
    +    [LinphoneUtils addDictEntry:attributes item:NSStringFromUIEdgeInsets([button titleEdgeInsets]) key:@"title-edge"];
    +    
    +    [LinphoneUtils addDictEntry:attributes item:[button imageForState:UIControlStateNormal] key:@"image-normal"];
    +    [LinphoneUtils addDictEntry:attributes item:[button imageForState:UIControlStateHighlighted] key:@"image-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button imageForState:UIControlStateDisabled] key:@"image-disabled"];
    +    [LinphoneUtils addDictEntry:attributes item:[button imageForState:UIControlStateSelected] key:@"image-selected"];
    +    [LinphoneUtils addDictEntry:attributes item:[button imageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"image-disabled-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"image-selected-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button imageForState:UIControlStateSelected | UIControlStateDisabled] key:@"image-selected-disabled"];
    +    
    +    [LinphoneUtils addDictEntry:attributes item:[button backgroundImageForState:UIControlStateNormal] key:@"background-normal"];
    +    [LinphoneUtils addDictEntry:attributes item:[button backgroundImageForState:UIControlStateHighlighted] key:@"background-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled] key:@"background-disabled"];
    +    [LinphoneUtils addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected] key:@"background-selected"];
    +    [LinphoneUtils addDictEntry:attributes item:[button backgroundImageForState:UIControlStateDisabled | UIControlStateHighlighted] key:@"background-disabled-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateHighlighted] key:@"background-selected-highlighted"];
    +    [LinphoneUtils addDictEntry:attributes item:[button backgroundImageForState:UIControlStateSelected | UIControlStateDisabled] key:@"background-selected-disabled"];
    +}
    +
    ++ (void)buttonMultiViewApplyAttributes:(NSDictionary*)attributes button:(UIButton*)button {
    +    [button setTitle:[LinphoneUtils getDictEntry:attributes key:@"title-normal"] forState:UIControlStateNormal];
    +    [button setTitle:[LinphoneUtils getDictEntry:attributes key:@"title-highlighted"] forState:UIControlStateHighlighted];
    +    [button setTitle:[LinphoneUtils getDictEntry:attributes key:@"title-disabled"] forState:UIControlStateDisabled];
    +    [button setTitle:[LinphoneUtils getDictEntry:attributes key:@"title-selected"] forState:UIControlStateSelected];
    +    [button setTitle:[LinphoneUtils getDictEntry:attributes key:@"title-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted];
    +    [button setTitle:[LinphoneUtils getDictEntry:attributes key:@"title-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted];
    +    [button setTitle:[LinphoneUtils getDictEntry:attributes key:@"title-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled];
    +    
    +    [button setTitleColor:[LinphoneUtils getDictEntry:attributes key:@"title-color-normal"] forState:UIControlStateNormal];
    +    [button setTitleColor:[LinphoneUtils getDictEntry:attributes key:@"title-color-highlighted"] forState:UIControlStateHighlighted];
    +    [button setTitleColor:[LinphoneUtils getDictEntry:attributes key:@"title-color-disabled"] forState:UIControlStateDisabled];
    +    [button setTitleColor:[LinphoneUtils getDictEntry:attributes key:@"title-color-selected"] forState:UIControlStateSelected];
    +    [button setTitleColor:[LinphoneUtils getDictEntry:attributes key:@"title-color-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted];
    +    [button setTitleColor:[LinphoneUtils getDictEntry:attributes key:@"title-color-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted];
    +    [button setTitleColor:[LinphoneUtils getDictEntry:attributes key:@"title-color-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled];
    +    
    +    [button setTitleEdgeInsets:UIEdgeInsetsFromString([LinphoneUtils getDictEntry:attributes key:@"title-edge"])];
    +    
    +    [button setImage:[LinphoneUtils getDictEntry:attributes key:@"image-normal"] forState:UIControlStateNormal];
    +    [button setImage:[LinphoneUtils getDictEntry:attributes key:@"image-highlighted"] forState:UIControlStateHighlighted];
    +    [button setImage:[LinphoneUtils getDictEntry:attributes key:@"image-disabled"] forState:UIControlStateDisabled];
    +    [button setImage:[LinphoneUtils getDictEntry:attributes key:@"image-selected"] forState:UIControlStateSelected];
    +    [button setImage:[LinphoneUtils getDictEntry:attributes key:@"image-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted];
    +    [button setImage:[LinphoneUtils getDictEntry:attributes key:@"image-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted];
    +    [button setImage:[LinphoneUtils getDictEntry:attributes key:@"image-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled];
    +    
    +    [button setBackgroundImage:[LinphoneUtils getDictEntry:attributes key:@"background-normal"] forState:UIControlStateNormal];
    +    [button setBackgroundImage:[LinphoneUtils getDictEntry:attributes key:@"background-highlighted"] forState:UIControlStateHighlighted];
    +    [button setBackgroundImage:[LinphoneUtils getDictEntry:attributes key:@"background-disabled"] forState:UIControlStateDisabled];
    +    [button setBackgroundImage:[LinphoneUtils getDictEntry:attributes key:@"background-selected"] forState:UIControlStateSelected];
    +    [button setBackgroundImage:[LinphoneUtils getDictEntry:attributes key:@"background-disabled-highlighted"] forState:UIControlStateDisabled | UIControlStateHighlighted];
    +    [button setBackgroundImage:[LinphoneUtils getDictEntry:attributes key:@"background-selected-highlighted"] forState:UIControlStateSelected | UIControlStateHighlighted];
    +    [button setBackgroundImage:[LinphoneUtils getDictEntry:attributes key:@"background-selected-disabled"] forState:UIControlStateSelected | UIControlStateDisabled];
    +}
    +
    +
    ++ (void)addDictEntry:(NSMutableDictionary*)dict item:(id)item key:(id)key {
    +    if(item != nil && key != nil) {
    +        [dict setObject:item forKey:key];
    +    }
    +}
    +
    ++ (id)getDictEntry:(NSDictionary*)dict key:(id)key {
    +    if(key != nil) {
    +        return [dict objectForKey:key];
    +    }
    +    return nil;
    +}
    +
    +
     @end
    diff --git a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj
    index aacacdabc..9a134ca1f 100755
    --- a/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj
    +++ b/Classes/Utils/XMLRPC/XMLRPC.xcodeproj/project.pbxproj
    @@ -378,10 +378,10 @@
     					"$(ARCHS_STANDARD_32_BIT)",
     					armv6,
     				);
    +				IPHONEOS_DEPLOYMENT_TARGET = 4.0;
     				ONLY_ACTIVE_ARCH = NO;
     				OTHER_LDFLAGS = "-ObjC";
     				SDKROOT = iphoneos;
    -				VALID_ARCHS = "armv6 armv7";
     			};
     			name = Release;
     		};
    @@ -409,10 +409,10 @@
     					"$(ARCHS_STANDARD_32_BIT)",
     					armv6,
     				);
    +				IPHONEOS_DEPLOYMENT_TARGET = 4.0;
     				ONLY_ACTIVE_ARCH = NO;
     				OTHER_LDFLAGS = "-ObjC";
     				SDKROOT = iphoneos;
    -				VALID_ARCHS = "armv6 armv7";
     			};
     			name = Debug;
     		};
    @@ -441,10 +441,10 @@
     					"$(ARCHS_STANDARD_32_BIT)",
     					armv6,
     				);
    +				IPHONEOS_DEPLOYMENT_TARGET = 4.0;
     				ONLY_ACTIVE_ARCH = NO;
     				OTHER_LDFLAGS = "-ObjC";
     				SDKROOT = iphoneos;
    -				VALID_ARCHS = "armv6 armv7";
     			};
     			name = Distribution;
     		};
    @@ -472,10 +472,10 @@
     					"$(ARCHS_STANDARD_32_BIT)",
     					armv6,
     				);
    +				IPHONEOS_DEPLOYMENT_TARGET = 4.0;
     				ONLY_ACTIVE_ARCH = NO;
     				OTHER_LDFLAGS = "-ObjC";
     				SDKROOT = iphoneos;
    -				VALID_ARCHS = "armv6 armv7";
     			};
     			name = DistributionAdhoc;
     		};
    diff --git a/Classes/WizardViewController.h b/Classes/WizardViewController.h
    index 6140edc44..79ae3ad85 100644
    --- a/Classes/WizardViewController.h
    +++ b/Classes/WizardViewController.h
    @@ -21,7 +21,7 @@
     #import 
     #import "UICompositeViewController.h"
     
    -@interface WizardViewController : UIViewController  {
    +@interface WizardViewController : TPMultiLayoutViewController  {
         @private
         UITextField *activeTextField;
         UIView *currentView;
    diff --git a/Classes/WizardViewController.m b/Classes/WizardViewController.m
    index f68b5de17..c0698ebb1 100644
    --- a/Classes/WizardViewController.m
    +++ b/Classes/WizardViewController.m
    @@ -58,6 +58,9 @@ typedef enum _ViewElement {
     - (id)init {
         self = [super initWithNibName:@"WizardViewController" bundle:[NSBundle mainBundle]];
         if (self != nil) {
    +        [[NSBundle mainBundle] loadNibNamed:@"WizardViews"
    +                                      owner:self
    +                                    options:nil];
             self->historyViews = [[NSMutableArray alloc] init];
             self->currentView = nil;
         }
    @@ -143,8 +146,25 @@ static UICompositeViewDescription *compositeDescription = nil;
     }
     
     
    +- (void)viewDidLoad {
    +    [super viewDidLoad];
    +    [WizardViewController adjustFontSize:self.view mult:2.0f];
    +}
    +
    +
     #pragma mark -
     
    ++ (void)adjustFontSize:(UIView*)view mult:(float)mult{
    +    if([view isKindOfClass:[UILabel class]]) {
    +        UILabel *label = (UILabel*)view;
    +        [label setAdjustsFontSizeToFitWidth:TRUE]; // Not put it in IB: issue with placeholder size
    +    } else {
    +        for(UIView *subView in [view subviews]) {
    +            [WizardViewController adjustFontSize:subView mult:mult];
    +        }
    +    }
    +}
    +
     + (void)cleanTextField:(UIView*)view {
         if([view isKindOfClass:[UITextField class]]) {
             [(UITextField*)view setText:@""];
    @@ -522,7 +542,7 @@ static UICompositeViewDescription *compositeDescription = nil;
         [UIView setAnimationBeginsFromCurrentState:TRUE];
         
         // Move view
    -    UIEdgeInsets inset = {0,0,0,0};
    +    UIEdgeInsets inset = {0, 0, 0, 0};
         [contentView setContentInset:inset];
         [contentView setScrollIndicatorInsets:inset];
         [contentView setShowsVerticalScrollIndicator:FALSE];
    @@ -657,4 +677,29 @@ static UICompositeViewDescription *compositeDescription = nil;
         
     }
     
    +
    +#pragma mark - TPMultiLayoutViewController Functions
    +
    +- (NSDictionary*)attributesForView:(UIView*)view {
    +    NSMutableDictionary *attributes = [NSMutableDictionary dictionary];
    +    [attributes setObject:[NSValue valueWithCGRect:view.frame] forKey:@"frame"];
    +    [attributes setObject:[NSValue valueWithCGRect:view.bounds] forKey:@"bounds"];
    +    if([view isKindOfClass:[UIButton class]]) {
    +        UIButton *button = (UIButton *)view;
    +        [LinphoneUtils buttonMultiViewAddAttributes:attributes button:button];
    +    }
    +    [attributes setObject:[NSNumber numberWithInteger:view.autoresizingMask] forKey:@"autoresizingMask"];
    +    return attributes;
    +}
    +
    +- (void)applyAttributes:(NSDictionary*)attributes toView:(UIView*)view {
    +    view.frame = [[attributes objectForKey:@"frame"] CGRectValue];
    +    view.bounds = [[attributes objectForKey:@"bounds"] CGRectValue];
    +    if([view isKindOfClass:[UIButton class]]) {
    +        UIButton *button = (UIButton *)view;
    +        [LinphoneUtils buttonMultiViewApplyAttributes:attributes button:button];
    +    }
    +    view.autoresizingMask = [[attributes objectForKey:@"autoresizingMask"] integerValue];
    +}
    +
     @end
    diff --git a/Classes/en.lproj/ChatRoomViewController.xib b/Classes/en.lproj/ChatRoomViewController.xib
    index b121e1665..e60678397 100644
    --- a/Classes/en.lproj/ChatRoomViewController.xib
    +++ b/Classes/en.lproj/ChatRoomViewController.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -18,7 +18,6 @@
     			IBUIProgressView
     			IBUITableView
     			IBUITableViewController
    -			IBUITapGestureRecognizer
     			IBUIView
     		
     		
    @@ -135,7 +134,7 @@
     							
     								
     								274
    -								{{0, 80}, {320, 277}}
    +								{{0, 80}, {320, 279}}
     								
     								
     								
    @@ -161,7 +160,7 @@
     									
     										
     										274
    -										{320, 59}
    +										{320, 57}
     										
     										
     										
    @@ -169,7 +168,7 @@
     										
     										NO
     										IBCocoaTouchFramework
    -										
    +										
     											NSImage
     											chat_background.png
     										
    @@ -177,7 +176,7 @@
     									
     										
     										297
    -										{{250, 0}, {70, 59}}
    +										{{262, 0}, {58, 57}}
     										
     										
     										
    @@ -189,7 +188,7 @@
     										IBCocoaTouchFramework
     										0
     										0
    -										Cancel
    +										NO
     										
     										
     											1
    @@ -199,6 +198,14 @@
     											3
     											MC41AA
     										
    +										
    +											NSImage
    +											chat_cancel_over.png
    +										
    +										
    +											NSImage
    +											chat_cancel_default.png
    +										
     										
     											2
     											15
    @@ -212,7 +219,7 @@
     									
     										
     										298
    -										{{20, 25}, {213, 9}}
    +										{{20, 24}, {222, 9}}
     										
     										
     										
    @@ -226,7 +233,7 @@
     										0.5
     									
     								
    -								{{0, 357}, {320, 59}}
    +								{{0, 359}, {320, 57}}
     								
     								
     								
    @@ -241,33 +248,26 @@
     									
     										
     										274
    -										{320, 59}
    -										
    -										
    -										
    -										_NS:9
    -										
    -										NO
    -										IBCocoaTouchFramework
    -										
    -									
    -									
    -										
    -										274
    -										{320, 59}
    +										{320, 57}
     										
     										
     										
     										_NS:9
     										
    +										NO
     										IBCocoaTouchFramework
    +										
    +											NSImage
    +											chat_message_background.png
    +										
     									
     									
     										
     										297
    -										{{250, 0}, {70, 59}}
    +										{{262, 0}, {58, 57}}
     										
     										
    +										
     										_NS:9
     										NO
     										
    @@ -279,29 +279,53 @@
     										0
     										NO
     										NO
    +										30
    +										0.0
    +										0.0
    +										0.0
    +										Send
    +										
    +											2
    +											MCAwIDAAA
    +										
    +										
    +											2
    +											MC43MjU0OTAyMTI0IDAuNzY4NjI3NDY0OCAwLjc5NjA3ODQ0MzUAA
    +										
    +										
    +											2
    +											MC4zNTY4NjI3NTM2IDAuMzk2MDc4NDM3NiAwLjQzNTI5NDEyMTUAA
    +										
     										
    -										
    +										
     											NSImage
     											chat_send_over.png
     										
    -										
    +										
     											NSImage
     											chat_send_disabled.png
     										
    -										
    +										
     											NSImage
     											chat_send_default.png
     										
    -										
    -										
    +										
    +											1
    +											14
    +										
    +										
    +											Helvetica
    +											14
    +											16
    +										
     									
     									
     										
     										300
    -										{40, 59}
    +										{35, 57}
     										
     										
    -										
    +										
     										_NS:9
     										NO
     										
    @@ -310,57 +334,42 @@
     										IBCocoaTouchFramework
     										0
     										0
    -										Pict
    +										NO
    +										NO
     										
     										
     											1
     											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
     										
     										
    +										
    +											NSImage
    +											chat_photo_over.png
    +										
    +										
    +											NSImage
    +											chat_photo_disabled.png
    +										
    +										
    +											NSImage
    +											chat_photo_default.png
    +										
     										
     										
     									
    -									
    +									
     										
     										274
    -										
    -											
    -												
    -												274
    -												{210, 59}
    -												
    -												
    -												
    -												_NS:9
    -												NO
    -												IBCocoaTouchFramework
    -												
    -													NSImage
    -													chat_field.png
    -												
    -											
    -											
    -												
    -												274
    -												{{10, 10}, {190, 39}}
    -												
    -												
    -												
    -												_NS:9
    -												
    -												IBCocoaTouchFramework
    -											
    -										
    -										{{40, 0}, {210, 59}}
    +										{{33, 10}, {232, 37}}
     										
     										
    -										
    +										
     										_NS:9
     										
     										IBCocoaTouchFramework
     									
     								
    -								{{0, 357}, {320, 59}}
    +								{{0, 359}, {320, 57}}
     								
     								
     								
    @@ -404,6 +413,10 @@
     								
     								
     								_NS:9
    +								
    +									2
    +									MCAwIDAAA
    +								
     								NO
     								
     									Back
    @@ -412,17 +425,27 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Back
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
    -								
    +								
     									NSImage
     									chat_back_over.png
     								
    -								
    +								
     									NSImage
     									chat_back_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -432,6 +455,7 @@
     								
     								
     								_NS:9
    +								
     								NO
     								
     									Edit
    @@ -440,21 +464,30 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Ok
    +								Edit
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									chat_edit_over.png
     								
    -								
    +								
     									NSImage
     									chat_ok_default.png
     								
    -								
    +								
     									NSImage
     									chat_edit_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
    @@ -485,7 +518,6 @@
     				IBCocoaTouchFramework
     				NO
     			
    -			
     		
     		
     			
    @@ -537,22 +569,6 @@
     					
     					44
     				
    -				
    -					
    -						footerView
    -						
    -						
    -					
    -					46
    -				
    -				
    -					
    -						sendButton
    -						
    -						
    -					
    -					27
    -				
     				
     					
     						chatView
    @@ -561,46 +577,6 @@
     					
     					54
     				
    -				
    -					
    -						footerBackgroundImage
    -						
    -						
    -					
    -					67
    -				
    -				
    -					
    -						messageField
    -						
    -						
    -					
    -					64
    -				
    -				
    -					
    -						messageBackgroundImage
    -						
    -						
    -					
    -					69
    -				
    -				
    -					
    -						messageView
    -						
    -						
    -					
    -					70
    -				
    -				
    -					
    -						listTapGestureRecognizer
    -						
    -						
    -					
    -					71
    -				
     				
     					
     						imageTransferProgressBar
    @@ -641,6 +617,38 @@
     					
     					88
     				
    +				
    +					
    +						sendButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						messageField
    +						
    +						
    +					
    +					64
    +				
    +				
    +					
    +						messageView
    +						
    +						
    +					
    +					89
    +				
    +				
    +					
    +						messageBackgroundImage
    +						
    +						
    +					
    +					90
    +				
     				
     					
     						dataSource
    @@ -657,16 +665,6 @@
     					
     					31
     				
    -				
    -					
    -						gestureRecognizers
    -						
    -						
    -						NSArray
    -						YES
    -					
    -					61
    -				
     				
     					
     						onBackClick:
    @@ -702,14 +700,6 @@
     					
     					33
     				
    -				
    -					
    -						onListTap:
    -						
    -						
    -					
    -					62
    -				
     				
     					
     						onPictureClick:
    @@ -844,67 +834,26 @@
     						14
     						
     						
    -							
     							
    -							
     							
    -							
    +							
    +							
     						
     						
    -						footerView
    -					
    -					
    -						15
    -						
    -						
    -						sendButton
    -					
    -					
    -						58
    -						
    -						
    -						listTapGestureRecognizer
    +						messageView
     					
     					
     						66
     						
     						
    -						footerBackgroundImage
    -					
    -					
    -						68
    -						
    -						
    -							
    -							
    -						
    -						
    -						messageView
    -					
    -					
    -						21
    -						
    -						
     						messageBackgroundImage
     					
    -					
    -						63
    -						
    -						
    -						messageField
    -					
     					
     						73
     						
     						
     						pictureButton
     					
    -					
    -						82
    -						
    -						
    -						normalView
    -					
     					
     						72
     						
    @@ -934,6 +883,18 @@
     						
     						transfertBackgroundImage
     					
    +					
    +						15
    +						
    +						
    +						sendButton
    +					
    +					
    +						63
    +						
    +						
    +						messageField
    +					
     				
     			
     			
    @@ -943,11 +904,12 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
     				ChatRoomTableViewController
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -956,29 +918,28 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				HPGrowingTextView
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				
    +				
    +				
     			
     			
     			
     			
     			
    -			88
    +			90
     		
     		
     			
    @@ -1038,8 +999,6 @@
     						UIButton
     						UIView
     						UIToggleButton
    -						UIImageView
    -						UIView
     						UIView
     						UIProgressView
     						UITapGestureRecognizer
    @@ -1073,14 +1032,6 @@
     							editButton
     							UIToggleButton
     						
    -						
    -							footerBackgroundImage
    -							UIImageView
    -						
    -						
    -							footerView
    -							UIView
    -						
     						
     							headerView
     							UIView
    @@ -1151,10 +1102,6 @@
     		
     		0
     		IBCocoaTouchFramework
    -		
    -			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    -		
     		YES
     		3
     		
    @@ -1162,16 +1109,21 @@
     			{131, 131}
     			{320, 88}
     			{320, 88}
    -			{640, 117}
    +			{16, 16}
    +			{116, 115}
    +			{116, 115}
     			{320, 88}
     			{320, 88}
    -			{500, 117}
    +			{640, 117}
     			{320, 88}
    -			{140, 117}
    -			{140, 117}
    -			{140, 117}
    -			{5, 117}
    +			{71, 115}
    +			{71, 115}
    +			{71, 115}
    +			{117, 115}
    +			{117, 115}
    +			{117, 115}
    +			{5, 88}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/ChatViewController.xib b/Classes/en.lproj/ChatViewController.xib
    index 20eedaf14..2e6558bf6 100644
    --- a/Classes/en.lproj/ChatViewController.xib
    +++ b/Classes/en.lproj/ChatViewController.xib
    @@ -1,20 +1,19 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
     			IBUIButton
     			IBUIImageView
    -			IBUILabel
     			IBUITableView
     			IBUITableViewController
     			IBUITextField
    @@ -50,7 +49,7 @@
     								{320, 44}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								IBCocoaTouchFramework
    @@ -65,7 +64,7 @@
     								{160, 44}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -75,25 +74,38 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								New discussion
    +								
    +									2
    +									MCAwIDAAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
     								
    -								
    +								
     									NSImage
     									chat_add_over.png
     								
    -								
    +								
     									NSImage
     									chat_add_default.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									14
     								
    -								
    -									Helvetica-Bold
    -									15
    +								
    +									Helvetica
    +									14
     									16
     								
     							
    @@ -103,7 +115,7 @@
     								{{160, 0}, {160, 44}}
     								
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -113,21 +125,33 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Ok
    +								Edit
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
    +								
     								
    -								
    +								
     									NSImage
     									chat_edit_over.png
     								
    -								
    +								
     									NSImage
     									chat_ok_default.png
     								
    -								
    +								
     									NSImage
     									chat_edit_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
    @@ -147,13 +171,14 @@
     					
     						
     						274
    -						{{0, 74}, {320, 378}}
    +						{{0, 79}, {320, 381}}
     						
     						
    +						
     						_NS:9
     						
    -							1
    -							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +							3
    +							MQA
     						
     						YES
     						IBCocoaTouchFramework
    @@ -167,6 +192,10 @@
     						0.0
     						0.0
     						1
    +						
    +							2
    +							MC43MjU0OTAyMTI0IDAuNzY4NjI3NDY0OCAwLjc5NjA3ODQ0MzUAA
    +						
     						0
     						YES
     						44
    @@ -176,11 +205,15 @@
     					
     						
     						292
    -						{{24, 44}, {296, 30}}
    +						{{25, 44}, {271, 35}}
     						
     						
     						
     						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
     						NO
     						YES
     						
    @@ -189,6 +222,7 @@
     						IBCocoaTouchFramework
     						0
     						
    +						To:
     						
     							3
     							MAA
    @@ -199,52 +233,28 @@
     						
     							IBCocoaTouchFramework
     						
    +						
    +							NSImage
    +							chat_address.png
    +						
     						1
    -						
    +						
     							1
     							17
     						
    -						
    +						
     							Helvetica
     							17
     							16
     						
     					
    -					
    -						
    -						292
    -						{{0, 44}, {24, 30}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						NO
    -						IBCocoaTouchFramework
    -						To:
    -						
    -							1
    -							MCAwIDAAA
    -						
    -						
    -						0
    -						10
    -						
    -						
    -					
     				
     				{320, 460}
     				
     				
     				
     				_NS:9
    -				
    -					3
    -					MQA
    -					
    -				
    +				
     				IBCocoaTouchFramework
     			
     			
    @@ -375,7 +385,6 @@
     							
     							
     							
    -							
     						
     						
     					
    @@ -420,11 +429,6 @@
     						
     						addressField
     					
    -					
    -						26
    -						
    -						
    -					
     				
     			
     			
    @@ -433,10 +437,10 @@
     				UIResponder
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				ChatTableViewController
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -444,6 +448,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     			
     			
    @@ -517,18 +522,19 @@
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
     			{320, 88}
     			{320, 88}
    +			{542, 70}
     			{320, 88}
     			{320, 88}
     			{320, 88}
    -			{5, 117}
    +			{5, 88}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/ContactDetailsLabelViewController.xib b/Classes/en.lproj/ContactDetailsLabelViewController.xib
    index d31c015f8..182c718cd 100644
    --- a/Classes/en.lproj/ContactDetailsLabelViewController.xib
    +++ b/Classes/en.lproj/ContactDetailsLabelViewController.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -90,25 +90,38 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Back
    +								
    +									2
    +									MCAwIDAAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
     								
    -								
    +								
     									NSImage
     									contact_back_over.png
     								
    -								
    +								
     									NSImage
     									contact_back_default.png
     								
     								
    -									2
    -									15
    +									1
    +									14
     								
     								
    -									Helvetica-Bold
    -									15
    +									Helvetica
    +									14
     									16
     								
     							
    @@ -135,62 +148,8 @@
     						
     						_NS:9
     						
    -							10
    -							
    -								549453824
    -								{512, 1}
    -								
    -									
    -										
    -										
    -											
    -												TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA
    -AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA
    -AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI
    -AAgACAAIAAEAAQABAAE
    -											
    -										
    -									
    -								
    -								
    -									3
    -									MCAwAA
    -								
    -							
    +							1
    +							MCAwIDAgMAA
     							groupTableViewBackgroundColor
     						
     						YES
    @@ -218,7 +177,10 @@ AAgACAAIAAEAAQABAAE
     				
     				
     				
    -				
    +				
    +					3
    +					MCAwAA
    +				
     				IBCocoaTouchFramework
     			
     		
    @@ -342,6 +304,7 @@ AAgACAAIAAEAAQABAAE
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     			
     			
    @@ -388,7 +351,7 @@ AAgACAAIAAEAAQABAAE
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -396,8 +359,8 @@ AAgACAAIAAEAAQABAAE
     			{640, 523}
     			{320, 88}
     			{320, 88}
    -			{5, 117}
    +			{5, 88}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/ContactDetailsViewController.xib b/Classes/en.lproj/ContactDetailsViewController.xib
    index 437f20b94..369a774f5 100644
    --- a/Classes/en.lproj/ContactDetailsViewController.xib
    +++ b/Classes/en.lproj/ContactDetailsViewController.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -74,25 +74,34 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Back
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
     								
    -								
    +								
     									NSImage
     									contact_back_over.png
     								
    -								
    +								
     									NSImage
     									contact_back_default.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									14
     								
    -								
    -									Helvetica-Bold
    -									15
    +								
    +									Helvetica
    +									14
     									16
     								
     							
    @@ -112,17 +121,27 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Cancel
    +								
    +									2
    +									MCAwIDAAA
    +								
    +								
     								
    -								
    +								
     									NSImage
     									contact_cancel_over.png
     								
    -								
    +								
     									NSImage
     									contact_cancel_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -140,21 +159,30 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Ok
    +								Edit
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									contact_edit_over.png
     								
    -								
    +								
     									NSImage
     									contact_ok_default.png
     								
    -								
    +								
     									NSImage
     									contact_edit_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
    @@ -177,65 +205,10 @@
     						{{0, 44}, {320, 416}}
     						
     						
    -						
     						_NS:9
     						
    -							10
    -							
    -								549453824
    -								{512, 1}
    -								
    -									
    -										
    -										
    -											
    -												TU0AKgAACAjFzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/
    -y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/
    -y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/
    -xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/
    -xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/
    -xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/xczS/8vS2P/L0tj/xczU/8XM1P/FzNT/
    -xczU/8XM0v/L0tj/y9LY/8XM1P/FzNT/xczU/8XM1P/FzNL/y9LY/8vS2P/FzNT/xczU/8XM1P/FzNT/
    -xczS/8vS2P/L0tj/xczU/wANAQAAAwAAAAECAAAAAQEAAwAAAAEAAQAAAQIAAwAAAAQAAAiqAQMAAwAA
    -AAEAAQAAAQYAAwAAAAEAAgAAAREABAAAAAEAAAAIARIAAwAAAAEAAQAAARUAAwAAAAEABAAAARYAAwAA
    -AAEAAQAAARcABAAAAAEAAAgAARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAQAAAiyAAAAAAAI
    -AAgACAAIAAEAAQABAAE
    -											
    -										
    -									
    -								
    -								
    -									3
    -									MCAwAA
    -								
    -							
    +							1
    +							MCAwIDAgMAA
     							groupTableViewBackgroundColor
     						
     						YES
    @@ -263,7 +236,10 @@ AAgACAAIAAEAAQABAAE
     				
     				
     				
    -				
    +				
    +					3
    +					MCAwAA
    +				
     				IBCocoaTouchFramework
     			
     			
    @@ -532,7 +508,8 @@ AAgACAAIAAEAAQABAAE
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIContactDetailsFooter
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -540,8 +517,10 @@ AAgACAAIAAEAAQABAAE
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     			
     			
    @@ -730,7 +709,7 @@ AAgACAAIAAEAAQABAAE
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -742,8 +721,8 @@ AAgACAAIAAEAAQABAAE
     			{320, 88}
     			{320, 88}
     			{320, 88}
    -			{5, 117}
    +			{5, 88}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/ContactsViewController.xib b/Classes/en.lproj/ContactsViewController.xib
    index f452a385d..935011ea2 100644
    --- a/Classes/en.lproj/ContactsViewController.xib
    +++ b/Classes/en.lproj/ContactsViewController.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -47,7 +47,6 @@
     								290
     								{320, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -57,80 +56,117 @@
     									toolsbar_background.png
     								
     							
    -							
    +							
     								
    -								289
    -								{{120, 0}, {80, 44}}
    +								293
    +								
    +									
    +										
    +										292
    +										{107, 44}
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											All contacts filter
    +										
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										NO
    +										16
    +										0.0
    +										0.0
    +										0.0
    +										All
    +										
    +											2
    +											MC45NzY0NzA2NDkyIDAuOTc2NDcwNjQ5MiAwLjk3NjQ3MDY0OTIAA
    +										
    +										
    +										
    +											2
    +											MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +										
    +										
    +											3
    +											MC41AA
    +										
    +										
    +											NSImage
    +											contacts_all_selected.png
    +										
    +										
    +										
    +											NSImage
    +											contacts_all_default.png
    +										
    +										
    +											1
    +											12
    +										
    +										
    +											Helvetica
    +											12
    +											16
    +										
    +									
    +									
    +										
    +										289
    +										{{107, 0}, {107, 44}}
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Linphone contacts filter
    +										
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										NO
    +										16
    +										0.0
    +										0.0
    +										0.0
    +										Linphone
    +										
    +										
    +										
    +										
    +										
    +											NSImage
    +											contacts_linphone_selected.png
    +										
    +										
    +										
    +											NSImage
    +											contacts_linphone_default.png
    +										
    +										
    +										
    +									
    +								
    +								{{106, 0}, {214, 44}}
     								
    -								
    -								
    +								
     								_NS:9
    -								NO
    -								
    -									All contacts filter
    -								
    -								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								
    +								
     									3
    -									MC41AA
    -								
    -								
    -									NSImage
    -									contacts_all_selected.png
    -								
    -								
    -								
    -									NSImage
    -									contacts_all_default.png
    -								
    -								
    -									2
    -									15
    -								
    -								
    -									Helvetica-Bold
    -									15
    -									16
    -								
    -							
    -							
    -								
    -								289
    -								{{200, 0}, {80, 44}}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								
    -									Linphone contacts filter
    +									MQA
    +									
    +										2
    +									
     								
     								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								
    -								
    -									NSImage
    -									contacts_linphone_selected.png
    -								
    -								
    -								
    -									NSImage
    -									contacts_linphone_default.png
    -								
    -								
    -								
     							
     							
     								
     								292
    -								{80, 44}
    +								{107, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -141,25 +177,44 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Add contact
    +								
    +									2
    +									MCAwIDAAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
    -								
    +								
     									NSImage
     									contacts_add_over.png
     								
    -								
    +								
     									NSImage
     									contacts_add_default.png
     								
    -								
    -								
    +								
    +									1
    +									14
    +								
    +								
    +									Helvetica
    +									14
    +									16
    +								
     							
     							
     								
     								-2147483356
    -								{80, 44}
    +								{107, 44}
     								
    -								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -169,30 +224,34 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Back
    +								
    +								
     								
    -								
    +								
     									NSImage
     									contacts_back_over.png
     								
    -								
    +								
     									NSImage
     									contacts_back_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
     						
    -						
     						
     						_NS:9
     						
     							3
     							MQA
    -							
    -								2
    -							
    +							
     						
     						IBCocoaTouchFramework
     					
    @@ -201,12 +260,10 @@
     						274
     						{{0, 44}, {320, 416}}
     						
    -						
    -						
     						_NS:10
     						
    -							1
    -							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +							3
    +							MQA
     						
     						YES
     						IBCocoaTouchFramework
    @@ -221,6 +278,10 @@
     						0.0
     						0.0
     						1
    +						
    +							2
    +							MC43MjU0OTAyMTI0IDAuNzY4NjI3NDY0OCAwLjc5NjA3ODQ0MzUAA
    +						
     						0
     						YES
     						44
    @@ -230,13 +291,11 @@
     				
     				{320, 460}
     				
    -				
     				
     				_NS:9
     				
     					3
    -					MQA
    -					
    +					MCAwAA
     				
     				IBCocoaTouchFramework
     			
    @@ -261,22 +320,6 @@
     					
     					16
     				
    -				
    -					
    -						allButton
    -						
    -						
    -					
    -					27
    -				
    -				
    -					
    -						linphoneButton
    -						
    -						
    -					
    -					31
    -				
     				
     					
     						tableController
    @@ -309,6 +352,22 @@
     					
     					91
     				
    +				
    +					
    +						allButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						linphoneButton
    +						
    +						
    +					
    +					31
    +				
     				
     					
     						onAllClick:
    @@ -404,25 +463,12 @@
     						
     							
     							
    -							
    -							
     							
    +							
     						
     						
     						toolBar
     					
    -					
    -						4
    -						
    -						
    -						allButton
    -					
    -					
    -						5
    -						
    -						
    -						linphoneButton
    -					
     					
     						6
     						
    @@ -454,6 +500,28 @@
     						
     						background
     					
    +					
    +						93
    +						
    +						
    +							
    +							
    +						
    +						
    +						switchView
    +					
    +					
    +						4
    +						
    +						
    +						allButton
    +					
    +					
    +						5
    +						
    +						
    +						linphoneButton
    +					
     				
     			
     			
    @@ -464,121 +532,49 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				ContactsTableViewController
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     			
     			
     			
     			
     			
    -			92
    -		
    -		
    -			
    -				
    -					ContactsTableViewController
    -					UITableViewController
    -					
    -						IBProjectSource
    -						./Classes/ContactsTableViewController.h
    -					
    -				
    -				
    -					ContactsViewController
    -					UIViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onAddContactClick:
    -							id
    -						
    -						
    -							onAllClick:
    -							id
    -						
    -						
    -							onBackClick:
    -							id
    -						
    -						
    -							onLinphoneClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIButton
    -						UIButton
    -						UIButton
    -						ContactsTableViewController
    -						UITableView
    -					
    -					
    -						
    -							addButton
    -							UIButton
    -						
    -						
    -							allButton
    -							UIButton
    -						
    -						
    -							backButton
    -							UIButton
    -						
    -						
    -							linphoneButton
    -							UIButton
    -						
    -						
    -							tableController
    -							ContactsTableViewController
    -						
    -						
    -							tableView
    -							UITableView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/ContactsViewController.h
    -					
    -				
    -			
    +			93
     		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
    -			{160, 88}
    -			{160, 88}
    -			{213, 117}
    -			{213, 117}
    -			{213, 117}
    -			{213, 117}
    -			{213, 117}
    -			{213, 117}
    -			{5, 117}
    +			{214, 88}
    +			{214, 88}
    +			{213, 88}
    +			{213, 88}
    +			{214, 88}
    +			{214, 88}
    +			{213, 88}
    +			{213, 88}
    +			{5, 88}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/DialerViewController.xib b/Classes/en.lproj/DialerViewController.xib
    index 00b0844df..ac00637cf 100644
    --- a/Classes/en.lproj/DialerViewController.xib
    +++ b/Classes/en.lproj/DialerViewController.xib
    @@ -3,12 +3,12 @@
     	
     		784
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			YES
    @@ -51,7 +51,6 @@
     								292
     								{320, 80}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -66,7 +65,6 @@
     								292
     								{320, 60}
     								
    -								
     								
     								
     									3
    @@ -106,7 +104,6 @@
     						
     						{320, 80}
     						
    -						
     						
     						_NS:9
     						
    @@ -129,7 +126,6 @@
     								292
     								{{0, 11}, {107, 54}}
     								
    -								
     								
     								
     									1
    @@ -172,7 +168,6 @@
     								292
     								{{107, 11}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -199,7 +194,6 @@
     								292
     								{{213, 11}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -226,7 +220,6 @@
     								292
     								{{0, 73}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -253,7 +246,6 @@
     								292
     								{{107, 73}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -280,7 +272,6 @@
     								292
     								{{213, 73}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -307,7 +298,6 @@
     								292
     								{{0, 135}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -334,7 +324,6 @@
     								292
     								{{107, 135}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -361,7 +350,6 @@
     								292
     								{{213, 135}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -388,7 +376,6 @@
     								292
     								{{0, 197}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -415,7 +402,6 @@
     								292
     								{{107, 197}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -442,7 +428,6 @@
     								292
     								{{213, 197}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -467,7 +452,6 @@
     						
     						{{0, 58}, {320, 260}}
     						
    -						
     						
     						_NS:9
     						
    @@ -486,7 +470,6 @@
     								292
     								{106, 69}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -523,7 +506,6 @@
     								-2147483356
     								{106, 69}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -556,7 +538,6 @@
     								292
     								{{106, 0}, {108, 69}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -590,7 +571,6 @@
     								-2147483356
     								{{106, 0}, {108, 69}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -624,7 +604,6 @@
     								-2147483356
     								{{106, 0}, {108, 69}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -658,8 +637,6 @@
     								292
     								{{214, 0}, {106, 69}}
     								
    -								
    -								
     								_NS:9
     								NO
     								
    @@ -690,7 +667,6 @@
     						
     						{{0, 305}, {320, 69}}
     						
    -						
     						
     						_NS:9
     						
    @@ -703,7 +679,6 @@
     				
     				{320, 460}
     				
    -				
     				
     				_NS:9
     				
    @@ -1388,301 +1363,7 @@
     			
     			254
     		
    -		
    -			
    -				YES
    -				
    -					DialerViewController
    -					UIViewController
    -					
    -						YES
    -						
    -							YES
    -							onAddContactClick:
    -							onAddressChange:
    -							onBackClick:
    -						
    -						
    -							YES
    -							id
    -							id
    -							id
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							onAddContactClick:
    -							onAddressChange:
    -							onBackClick:
    -						
    -						
    -							YES
    -							
    -								onAddContactClick:
    -								id
    -							
    -							
    -								onAddressChange:
    -								id
    -							
    -							
    -								onBackClick:
    -								id
    -							
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							addCallButton
    -							addContactButton
    -							addressField
    -							backButton
    -							callButton
    -							eightButton
    -							eraseButton
    -							fiveButton
    -							fourButton
    -							nineButton
    -							oneButton
    -							sevenButton
    -							sharpButton
    -							sixButton
    -							starButton
    -							threeButton
    -							transferButton
    -							twoButton
    -							zeroButton
    -						
    -						
    -							YES
    -							UICallButton
    -							UIButton
    -							UITextField
    -							UIButton
    -							UICallButton
    -							UIDigitButton
    -							UIEraseButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UITransferButton
    -							UIDigitButton
    -							UIDigitButton
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							addCallButton
    -							addContactButton
    -							addressField
    -							backButton
    -							callButton
    -							eightButton
    -							eraseButton
    -							fiveButton
    -							fourButton
    -							nineButton
    -							oneButton
    -							sevenButton
    -							sharpButton
    -							sixButton
    -							starButton
    -							threeButton
    -							transferButton
    -							twoButton
    -							zeroButton
    -						
    -						
    -							YES
    -							
    -								addCallButton
    -								UICallButton
    -							
    -							
    -								addContactButton
    -								UIButton
    -							
    -							
    -								addressField
    -								UITextField
    -							
    -							
    -								backButton
    -								UIButton
    -							
    -							
    -								callButton
    -								UICallButton
    -							
    -							
    -								eightButton
    -								UIDigitButton
    -							
    -							
    -								eraseButton
    -								UIEraseButton
    -							
    -							
    -								fiveButton
    -								UIDigitButton
    -							
    -							
    -								fourButton
    -								UIDigitButton
    -							
    -							
    -								nineButton
    -								UIDigitButton
    -							
    -							
    -								oneButton
    -								UIDigitButton
    -							
    -							
    -								sevenButton
    -								UIDigitButton
    -							
    -							
    -								sharpButton
    -								UIDigitButton
    -							
    -							
    -								sixButton
    -								UIDigitButton
    -							
    -							
    -								starButton
    -								UIDigitButton
    -							
    -							
    -								threeButton
    -								UIDigitButton
    -							
    -							
    -								transferButton
    -								UITransferButton
    -							
    -							
    -								twoButton
    -								UIDigitButton
    -							
    -							
    -								zeroButton
    -								UIDigitButton
    -							
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/DialerViewController.h
    -					
    -				
    -				
    -					UIAddressTextField
    -					UITextField
    -					
    -						IBProjectSource
    -						./Classes/UIAddressTextField.h
    -					
    -				
    -				
    -					UICallButton
    -					UIButton
    -					
    -						addressField
    -						UITextField
    -					
    -					
    -						addressField
    -						
    -							addressField
    -							UITextField
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UICallButton.h
    -					
    -				
    -				
    -					UIDigitButton
    -					UILongTouchButton
    -					
    -						addressField
    -						UITextField
    -					
    -					
    -						addressField
    -						
    -							addressField
    -							UITextField
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UIDigitButton.h
    -					
    -				
    -				
    -					UIEraseButton
    -					UILongTouchButton
    -					
    -						addressField
    -						UITextField
    -					
    -					
    -						addressField
    -						
    -							addressField
    -							UITextField
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UIEraseButton.h
    -					
    -				
    -				
    -					UILongTouchButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UILongTouchButton.h
    -					
    -				
    -				
    -					UITransferButton
    -					UIButton
    -					
    -						addressField
    -						UITextField
    -					
    -					
    -						addressField
    -						
    -							addressField
    -							UITextField
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UITransferButton.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
    @@ -1691,7 +1372,7 @@
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    @@ -1794,6 +1475,6 @@
     				{214, 138}
     			
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/DialerViewController~ipad.xib b/Classes/en.lproj/DialerViewController~ipad.xib
    index 60f9db3be..ae1c56e6a 100644
    --- a/Classes/en.lproj/DialerViewController~ipad.xib
    +++ b/Classes/en.lproj/DialerViewController~ipad.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -37,12 +37,26 @@
     				
     				292
     				
    +					
    +						
    +						301
    +						{{127, 150}, {510, 460}}
    +						
    +						
    +						_NS:9
    +						1
    +						NO
    +						IBIPadFramework
    +						
    +							NSImage
    +							logo_linphone_trame_background.png
    +						
    +					
     					
     						
     						301
     						{{-1000, -1000}, {2768, 2900}}
     						
    -						
     						
     						_NS:9
     						
    @@ -56,7 +70,6 @@
     						274
     						{{0, 58}, {768, 842}}
     						
    -						
     						
     						
     							3
    @@ -68,10 +81,9 @@
     					
     						
     						-2147483356
    -						{{0, 77}, {85, 33}}
    +						{{20, 90}, {85, 33}}
     						
    -						
    -						
    +						
     						_NS:9
     						NO
     						
    @@ -113,7 +125,6 @@
     								290
     								{768, 80}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -128,7 +139,6 @@
     								290
     								{700, 60}
     								
    -								
     								
     								
     									3
    @@ -170,7 +180,6 @@
     								289
     								{{698, 4}, {70, 51}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -206,7 +215,6 @@
     						
     						{768, 80}
     						
    -						
     						
     						_NS:9
     						
    @@ -228,7 +236,6 @@
     								274
     								{320, 280}
     								
    -								
     								
     								_NS:9
     								2
    @@ -244,7 +251,6 @@
     								292
     								{{0, 11}, {107, 54}}
     								
    -								
     								
     								
     									1
    @@ -280,7 +286,6 @@
     								292
     								{{107, 11}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -307,7 +312,6 @@
     								292
     								{{213, 11}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -334,7 +338,6 @@
     								292
     								{{0, 73}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -361,7 +364,6 @@
     								292
     								{{107, 73}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -388,7 +390,6 @@
     								292
     								{{213, 73}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -415,7 +416,6 @@
     								292
     								{{0, 135}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -442,7 +442,6 @@
     								292
     								{{107, 135}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -469,7 +468,6 @@
     								292
     								{{213, 135}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -496,7 +494,6 @@
     								292
     								{{0, 197}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -523,7 +520,6 @@
     								292
     								{{107, 197}, {106, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -550,7 +546,6 @@
     								292
     								{{213, 197}, {107, 54}}
     								
    -								
     								
     								NO
     								NO
    @@ -575,7 +570,6 @@
     						
     						{{0, 640}, {320, 260}}
     						
    -						
     						
     						_NS:9
     						
    @@ -590,7 +584,6 @@
     								292
     								{126, 85}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -624,7 +617,6 @@
     								-2147483356
     								{126, 85}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -657,7 +649,6 @@
     								292
     								{{126, 0}, {186, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -691,7 +682,6 @@
     								-2147483356
     								{{126, 0}, {186, 85}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -725,8 +715,6 @@
     								-2147483356
     								{{126, 0}, {186, 85}}
     								
    -								
    -								
     								_NS:9
     								NO
     								
    @@ -757,7 +745,6 @@
     						
     						{{456, 815}, {312, 85}}
     						
    -						
     						
     						_NS:9
     						
    @@ -770,7 +757,6 @@
     				
     				{768, 900}
     				
    -				
     				
     				_NS:9
     				
    @@ -1156,6 +1142,7 @@
     							
     							
     							
    +							
     						
     						
     					
    @@ -1324,12 +1311,6 @@
     						
     						backspaceButton
     					
    -					
    -						70
    -						
    -						
    -						preview
    -					
     					
     						71
     						
    @@ -1345,9 +1326,22 @@
     					
     						76
     						
    +						
     						
     						backgroundView
     					
    +					
    +						78
    +						
    +						
    +						backgroundImage
    +					
    +					
    +						70
    +						
    +						
    +						preview
    +					
     				
     			
     			
    @@ -1415,6 +1409,7 @@
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -1426,7 +1421,7 @@
     			
     			
     			
    -			77
    +			78
     		
     		
     			
    @@ -1688,7 +1683,7 @@
     		IBIPadFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -1710,6 +1705,7 @@
     			{371, 170}
     			{371, 170}
     			{640, 135}
    +			{1019, 920}
     			{220, 113}
     			{220, 113}
     			{220, 113}
    @@ -1734,12 +1730,12 @@
     			{220, 113}
     			{220, 113}
     			{220, 113}
    -			{170, 65}
    -			{170, 65}
    +			{151, 51}
    +			{151, 51}
     			{371, 170}
     			{371, 170}
     			{371, 170}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/FirstLoginViewController.xib b/Classes/en.lproj/FirstLoginViewController.xib
    index 80faa334c..992646430 100644
    --- a/Classes/en.lproj/FirstLoginViewController.xib
    +++ b/Classes/en.lproj/FirstLoginViewController.xib
    @@ -3,12 +3,12 @@
     	
     		784
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			YES
    @@ -46,7 +46,6 @@
     						292
     						{{33, 312}, {255, 50}}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -58,9 +57,13 @@
     						0
     						NO
     						Login
    +						
    +							2
    +							MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +						
     						
    -							3
    -							MC4zMzMzMzMzMzMzAA
    +							2
    +							MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
     						
     						
     							3
    @@ -89,8 +92,6 @@
     						-2147483356
     						{{60, 420}, {200, 37}}
     						
    -						
    -						
     						NO
     						NO
     						IBCocoaTouchFramework
    @@ -122,7 +123,6 @@
     						292
     						{{60, 170}, {200, 31}}
     						
    -						
     						
     						NO
     						NO
    @@ -165,7 +165,6 @@
     						292
     						{{60, 220}, {200, 31}}
     						
    -						
     						
     						NO
     						NO
    @@ -204,7 +203,6 @@
     								292
     								{{142, 211}, {37, 37}}
     								
    -								
     								
     								NO
     								NO
    @@ -217,7 +215,6 @@
     						
     						{320, 460}
     						
    -						
     						
     						
     							3
    @@ -230,7 +227,6 @@
     				
     				{320, 460}
     				
    -				
     				
     				_NS:9
     				
    @@ -432,7 +428,7 @@
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -					
    +					
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     			
    @@ -450,104 +446,7 @@
     			
     			66
     		
    -		
    -			
    -				YES
    -				
    -					FirstLoginViewController
    -					UIViewController
    -					
    -						YES
    -						
    -							YES
    -							onLoginClick:
    -							onSiteClick:
    -						
    -						
    -							YES
    -							id
    -							id
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							onLoginClick:
    -							onSiteClick:
    -						
    -						
    -							YES
    -							
    -								onLoginClick:
    -								id
    -							
    -							
    -								onSiteClick:
    -								id
    -							
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							loginButton
    -							passwordField
    -							siteButton
    -							usernameField
    -							waitView
    -						
    -						
    -							YES
    -							UIButton
    -							UITextField
    -							UIButton
    -							UITextField
    -							UIView
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							loginButton
    -							passwordField
    -							siteButton
    -							usernameField
    -							waitView
    -						
    -						
    -							YES
    -							
    -								loginButton
    -								UIButton
    -							
    -							
    -								passwordField
    -								UITextField
    -							
    -							
    -								siteButton
    -								UIButton
    -							
    -							
    -								usernameField
    -								UITextField
    -							
    -							
    -								waitView
    -								UIView
    -							
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/FirstLoginViewController.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
    @@ -556,7 +455,7 @@
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    @@ -579,6 +478,6 @@
     				{542, 88}
     			
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/HistoryDetailsViewController.xib b/Classes/en.lproj/HistoryDetailsViewController.xib
    index afce0f1a5..516273d34 100644
    --- a/Classes/en.lproj/HistoryDetailsViewController.xib
    +++ b/Classes/en.lproj/HistoryDetailsViewController.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -46,7 +46,6 @@
     								290
     								{320, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -61,7 +60,6 @@
     								292
     								{160, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -72,25 +70,38 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Back
    +								
    +									2
    +									MCAwIDAAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
     								
    -								
    +								
     									NSImage
     									history_details_back_over.png
     								
    -								
    +								
     									NSImage
     									history_details_back_default.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									14
     								
    -								
    -									Helvetica-Bold
    -									15
    +								
    +									Helvetica
    +									14
     									16
     								
     							
    @@ -99,7 +110,6 @@
     								289
     								{{160, 0}, {160, 44}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -110,22 +120,28 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Add to contacts
    +								
    +								
     								
    -								
    +								
     									NSImage
     									history_details_add_over.png
     								
    -								
    +								
     									NSImage
     									history_details_add_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
     						
    -						
     						
     						_NS:9
     						
    @@ -146,7 +162,6 @@
     								292
     								{320, 100}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -165,15 +180,21 @@
     									MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
     								
     								
    -								
    -								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
     							
     							
     								
     								292
     								{{-13, -5}, {131, 107}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -188,7 +209,6 @@
     								292
     								{{20, 6}, {65, 65}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -208,7 +228,6 @@
     								290
     								{{101, 37}, {199, 43}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -240,7 +259,6 @@
     						
     						{{0, 44}, {320, 100}}
     						
    -						
     						
     						_NS:9
     						
    @@ -258,7 +276,6 @@
     								292
     								{49, 21}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -288,7 +305,6 @@
     								290
     								{{57, 0}, {223, 21}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -317,7 +333,6 @@
     						
     						{{20, 166}, {280, 21}}
     						
    -						
     						
     						_NS:9
     						
    @@ -332,7 +347,6 @@
     								292
     								{80, 21}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -355,7 +369,6 @@
     								290
     								{{88, 0}, {192, 21}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -377,7 +390,6 @@
     						
     						{{20, 195}, {280, 21}}
     						
    -						
     						
     						_NS:9
     						
    @@ -392,7 +404,6 @@
     								292
     								{57, 21}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -415,7 +426,6 @@
     								290
     								{{65, 0}, {215, 21}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -437,7 +447,6 @@
     						
     						{{20, 224}, {280, 21}}
     						
    -						
     						
     						_NS:9
     						
    @@ -448,7 +457,6 @@
     						293
     						{{33, 323}, {255, 50}}
     						
    -						
     						_NS:9
     						NO
     						
    @@ -487,7 +495,6 @@
     				
     				{320, 460}
     				
    -				
     				
     				
     				IBCocoaTouchFramework
    @@ -814,10 +821,12 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     			
     			
    @@ -826,101 +835,12 @@
     			
     			53
     		
    -		
    -			
    -				
    -					HistoryDetailsViewController
    -					UIViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onAddContactClick:
    -							id
    -						
    -						
    -							onAddressClick:
    -							id
    -						
    -						
    -							onBackClick:
    -							id
    -						
    -						
    -							onContactClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIButton
    -						UILabel
    -						UIImageView
    -						UILabel
    -						UILabel
    -						UILabel
    -						UILabel
    -						UILabel
    -						UILabel
    -					
    -					
    -						
    -							addContactButton
    -							UIButton
    -						
    -						
    -							addressButton
    -							UIButton
    -						
    -						
    -							addressLabel
    -							UILabel
    -						
    -						
    -							avatarImage
    -							UIImageView
    -						
    -						
    -							dateHeaderLabel
    -							UILabel
    -						
    -						
    -							dateLabel
    -							UILabel
    -						
    -						
    -							durationHeaderLabel
    -							UILabel
    -						
    -						
    -							durationLabel
    -							UILabel
    -						
    -						
    -							typeHeaderLabel
    -							UILabel
    -						
    -						
    -							typeLabel
    -							UILabel
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/HistoryDetailsViewController.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -932,9 +852,9 @@
     			{320, 88}
     			{320, 88}
     			{320, 88}
    -			{320, 117}
    -			{5, 117}
    +			{320, 88}
    +			{5, 88}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/HistoryViewController.xib b/Classes/en.lproj/HistoryViewController.xib
    index 8761a2255..f8e45dcac 100644
    --- a/Classes/en.lproj/HistoryViewController.xib
    +++ b/Classes/en.lproj/HistoryViewController.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -47,7 +47,6 @@
     								290
     								{320, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -59,11 +58,10 @@
     							
     							
     								
    -								-2147483356
    +								292
     								{80, 44}
     								
    -								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -72,93 +70,149 @@
     								IBCocoaTouchFramework
     								0
     								0
    -								Del
    -								
    -									3
    -									MQA
    -								
    -								
    -									1
    +								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Delete all
    +								
    +									2
     									MCAwIDAAA
     								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
     								
    -								
    -									2
    -									15
    +								
    +									NSImage
    +									history_delete_over.png
     								
    -								
    -									Helvetica-Bold
    -									15
    +								
    +									NSImage
    +									history_delete_default.png
    +								
    +								
    +									1
    +									14
    +								
    +								
    +									Helvetica
    +									14
     									16
     								
     							
    -							
    +							
     								
    -								292
    -								{{80, 0}, {80, 44}}
    +								293
    +								
    +									
    +										
    +										292
    +										{80, 44}
    +										
    +										
    +										_NS:9
    +										
    +											2
    +											MC45NzY0NzA2NDkyIDAuOTc2NDcwNjQ5MiAwLjk3NjQ3MDY0OTIAA
    +										
    +										NO
    +										
    +											All contacts filter
    +										
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										NO
    +										16
    +										0.0
    +										0.0
    +										0.0
    +										All
    +										
    +										
    +										
    +										
    +										
    +											NSImage
    +											history_all_selected.png
    +										
    +										
    +										
    +											NSImage
    +											history_all_default.png
    +										
    +										
    +											1
    +											12
    +										
    +										
    +											Helvetica
    +											12
    +											16
    +										
    +									
    +									
    +										
    +										289
    +										{{80, 0}, {80, 44}}
    +										
    +										
    +										_NS:9
    +										
    +										NO
    +										
    +											Missed contacts filter
    +										
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										NO
    +										16
    +										0.0
    +										0.0
    +										0.0
    +										Missed
    +										
    +										
    +										
    +										
    +										
    +											NSImage
    +											history_missed_selected.png
    +										
    +										
    +										
    +											NSImage
    +											history_missed_default.png
    +										
    +										
    +										
    +									
    +								
    +								{{80, 0}, {160, 44}}
     								
    -								
    -								
    +								
     								_NS:9
    -								NO
    -								
    -									All contacts filter
    +								
    +									3
    +									MQA
    +									
    +										2
    +									
     								
     								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								
    -								
    -									NSImage
    -									history_all_selected.png
    -								
    -								
    -								
    -									NSImage
    -									history_all_default.png
    -								
    -								
    -								
    -							
    -							
    -								
    -								292
    -								{{160, 0}, {80, 44}}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								
    -									Missed contacts filter
    -								
    -								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								
    -								
    -									NSImage
    -									history_missed_selected.png
    -								
    -								
    -								
    -									NSImage
    -									history_missed_default.png
    -								
    -								
    -								
     							
     							
     								
     								289
     								{{240, 0}, {80, 44}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -169,34 +223,39 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Ok
    +								Edit
    +								
    +								
     								
    -								
    +								
     									NSImage
     									history_edit_over.png
     								
    -								
    +								
     									NSImage
     									history_ok_default.png
     								
    -								
    +								
     									NSImage
     									history_edit_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
     						
    -						
     						
     						_NS:9
     						
     							3
     							MQA
    -							
    -								2
    -							
    +							
     						
     						IBCocoaTouchFramework
     					
    @@ -205,12 +264,10 @@
     						274
     						{{0, 44}, {320, 416}}
     						
    -						
    -						
     						_NS:9
     						
    -							1
    -							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +							3
    +							MQA
     						
     						YES
     						IBCocoaTouchFramework
    @@ -224,6 +281,10 @@
     						0.0
     						0.0
     						1
    +						
    +							2
    +							MC43MjU0OTAyMTI0IDAuNzY4NjI3NDY0OCAwLjc5NjA3ODQ0MzUAA
    +						
     						0
     						YES
     						44
    @@ -233,13 +294,11 @@
     				
     				{320, 460}
     				
    -				
     				
     				_NS:9
     				
     					3
    -					MQA
    -					
    +					MCAwAA
     				
     				IBCocoaTouchFramework
     			
    @@ -272,22 +331,6 @@
     					
     					26
     				
    -				
    -					
    -						allButton
    -						
    -						
    -					
    -					27
    -				
    -				
    -					
    -						missedButton
    -						
    -						
    -					
    -					28
    -				
     				
     					
     						tableView
    @@ -312,6 +355,22 @@
     					
     					36
     				
    +				
    +					
    +						allButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						missedButton
    +						
    +						
    +					
    +					28
    +				
     				
     					
     						onAllClick:
    @@ -405,27 +464,14 @@
     						3
     						
     						
    -							
    -							
     							
     							
     							
    +							
     						
     						
     						toolsBar
     					
    -					
    -						4
    -						
    -						
    -						allButton
    -					
    -					
    -						5
    -						
    -						
    -						missedButton
    -					
     					
     						6
     						
    @@ -455,7 +501,29 @@
     						35
     						
     						
    -						delAllButton
    +						deleteButton
    +					
    +					
    +						38
    +						
    +						
    +							
    +							
    +						
    +						
    +						switchView
    +					
    +					
    +						4
    +						
    +						
    +						allButton
    +					
    +					
    +						5
    +						
    +						
    +						missedButton
     					
     				
     			
    @@ -471,124 +539,47 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     			
     			
     			
     			
     			
    -			37
    -		
    -		
    -			
    -				
    -					HistoryTableViewController
    -					UITableViewController
    -					
    -						IBProjectSource
    -						./Classes/HistoryTableViewController.h
    -					
    -				
    -				
    -					HistoryViewController
    -					UIViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onAllClick:
    -							id
    -						
    -						
    -							onDeleteClick:
    -							id
    -						
    -						
    -							onEditClick:
    -							id
    -						
    -						
    -							onMissedClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIButton
    -						UIToggleButton
    -						UIButton
    -						HistoryTableViewController
    -						UITableView
    -					
    -					
    -						
    -							allButton
    -							UIButton
    -						
    -						
    -							deleteButton
    -							UIButton
    -						
    -						
    -							editButton
    -							UIToggleButton
    -						
    -						
    -							missedButton
    -							UIButton
    -						
    -						
    -							tableController
    -							HistoryTableViewController
    -						
    -						
    -							tableView
    -							UITableView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/HistoryViewController.h
    -					
    -				
    -				
    -					UIToggleButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UIToggleButton.h
    -					
    -				
    -			
    +			38
     		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
    -			{213, 117}
    -			{213, 117}
    +			{160, 88}
    +			{160, 88}
    +			{160, 88}
    +			{160, 88}
     			{160, 88}
     			{160, 88}
    -			{213, 117}
    -			{213, 117}
    +			{160, 88}
    +			{160, 88}
     			{160, 88}
    -			{5, 117}
    +			{5, 88}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/ImageViewController.xib b/Classes/en.lproj/ImageViewController.xib
    index 6db298265..c3e4877f0 100644
    --- a/Classes/en.lproj/ImageViewController.xib
    +++ b/Classes/en.lproj/ImageViewController.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -41,8 +41,6 @@
     						274
     						{{0, 44}, {320, 416}}
     						
    -						
    -						
     						_NS:9
     						
     							3
    @@ -61,7 +59,6 @@
     								290
     								{320, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -76,7 +73,6 @@
     								292
     								{160, 44}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -88,13 +84,18 @@
     								0
     								NO
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Back
     								
    -									3
    -									MQA
    +									2
    +									MCAwIDAAA
     								
     								
    -									1
    -									MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
     								
     								
     									3
    @@ -109,19 +110,18 @@
     									image_back_default.png
     								
     								
    -									2
    -									15
    +									1
    +									14
     								
     								
    -									Helvetica-Bold
    -									15
    +									Helvetica
    +									14
     									16
     								
     							
     						
     						{320, 44}
     						
    -						
     						
     						_NS:9
     						
    @@ -130,7 +130,6 @@
     				
     				{{0, 20}, {320, 460}}
     				
    -				
     				
     				
     				
    @@ -241,7 +240,8 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     			
     			
     			
    @@ -249,56 +249,20 @@
     			
     			11
     		
    -		
    -			
    -				
    -					ImageViewController
    -					UIViewController
    -					
    -						onBackClick:
    -						id
    -					
    -					
    -						onBackClick:
    -						
    -							onBackClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIImageView
    -					
    -					
    -						
    -							backButton
    -							UIButton
    -						
    -						
    -							imageView
    -							UIImageView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/ImageViewController.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
     			{320, 88}
     			{320, 88}
    -			{5, 117}
    +			{5, 88}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/InCallViewController.xib b/Classes/en.lproj/InCallViewController.xib
    index 87f56054e..03d8739de 100644
    --- a/Classes/en.lproj/InCallViewController.xib
    +++ b/Classes/en.lproj/InCallViewController.xib
    @@ -3,12 +3,12 @@
     	
     		784
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			YES
    @@ -52,7 +52,6 @@
     								301
     								{{-1000, -1000}, {2000, 2000}}
     								
    -								
     								
     								_NS:9
     								
    @@ -66,7 +65,6 @@
     								274
     								{320, 460}
     								
    -								
     								
     								_NS:196
     								
    @@ -80,7 +78,6 @@
     								283
     								{{220, 360}, {100, 100}}
     								
    -								
     								
     								
     								1
    @@ -91,7 +88,6 @@
     								301
     								{{141, 212}, {37, 37}}
     								
    -								
     								
     								_NS:1030
     								NO
    @@ -103,7 +99,6 @@
     						
     						{320, 460}
     						
    -						
     						
     						_NS:196
     						
    @@ -114,7 +109,6 @@
     						274
     						{{0, -10}, {320, 480}}
     						
    -						
     						
     						_NS:418
     						
    @@ -143,9 +137,8 @@
     					
     						
     						-2147483356
    -						{{0, 23}, {85, 33}}
    +						{{20, 40}, {85, 33}}
     						
    -						
     						_NS:9
     						NO
     						
    @@ -181,7 +174,6 @@
     				
     				{320, 460}
     				
    -				
     				
     				
     				NO
    @@ -448,120 +440,7 @@
     			
     			173
     		
    -		
    -			
    -				YES
    -				
    -					InCallTableViewController
    -					UITableViewController
    -					
    -						IBProjectSource
    -						./Classes/InCallTableViewController.h
    -					
    -				
    -				
    -					InCallViewController
    -					UIViewController
    -					
    -						YES
    -						
    -							YES
    -							callTableController
    -							callTableView
    -							testVideoView
    -							videoCameraSwitch
    -							videoGroup
    -							videoPreview
    -							videoView
    -							videoWaitingForFirstImage
    -						
    -						
    -							YES
    -							InCallTableViewController
    -							UITableView
    -							UIView
    -							UICamSwitch
    -							UIView
    -							UIView
    -							UIView
    -							UIActivityIndicatorView
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							callTableController
    -							callTableView
    -							testVideoView
    -							videoCameraSwitch
    -							videoGroup
    -							videoPreview
    -							videoView
    -							videoWaitingForFirstImage
    -						
    -						
    -							YES
    -							
    -								callTableController
    -								InCallTableViewController
    -							
    -							
    -								callTableView
    -								UITableView
    -							
    -							
    -								testVideoView
    -								UIView
    -							
    -							
    -								videoCameraSwitch
    -								UICamSwitch
    -							
    -							
    -								videoGroup
    -								UIView
    -							
    -							
    -								videoPreview
    -								UIView
    -							
    -							
    -								videoView
    -								UIView
    -							
    -							
    -								videoWaitingForFirstImage
    -								UIActivityIndicatorView
    -							
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/InCallViewController.h
    -					
    -				
    -				
    -					UICamSwitch
    -					UIButton
    -					
    -						preview
    -						UIView
    -					
    -					
    -						preview
    -						
    -							preview
    -							UIView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UICamSwitch.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
    @@ -570,7 +449,7 @@
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    @@ -587,10 +466,10 @@
     			
     			
     				YES
    -				{170, 65}
    -				{170, 65}
    +				{151, 51}
    +				{151, 51}
     			
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/IncomingCallViewController.xib b/Classes/en.lproj/IncomingCallViewController.xib
    index 2f8fa4b70..12fa76ae0 100644
    --- a/Classes/en.lproj/IncomingCallViewController.xib
    +++ b/Classes/en.lproj/IncomingCallViewController.xib
    @@ -1,14 +1,14 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    @@ -42,7 +42,6 @@
     						274
     						{320, 460}
     						
    -						
     						
     						_NS:9
     						NO
    @@ -64,7 +63,6 @@
     								290
     								{{0, 49}, {320, 63}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -79,7 +77,6 @@
     								290
     								{320, 68}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -98,7 +95,6 @@
     								292
     								{{10, 53}, {300, 51}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -4522,7 +4518,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								293
     								{{0, 96}, {320, 262}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -4537,7 +4532,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								293
     								{{80, 113}, {160, 170}}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -4555,7 +4549,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     						
     						{320, 395}
     						
    -						
     						
     						_NS:9
     						
    @@ -4570,7 +4563,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								-2147483374
     								{{0, 10}, {320, 67}}
     								
    -								
     								
     								_NS:9
     								
    @@ -4589,7 +4581,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								278
     								{160, 77}
     								
    -								
     								
     								_NS:9
     								NO
    @@ -4626,8 +4617,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     								275
     								{{160, 0}, {160, 77}}
     								
    -								
    -								
     								_NS:9
     								NO
     								
    @@ -4651,7 +4640,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     						
     						{{0, 383}, {320, 77}}
     						
    -						
     						
     						_NS:9
     						
    @@ -4660,7 +4648,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     				
     				{320, 460}
     				
    -				
     				
     				_NS:9
     				
    @@ -4846,51 +4833,12 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     			
     			30
     		
    -		
    -			
    -				
    -					IncomingCallViewController
    -					UIViewController
    -					
    -						id
    -						id
    -					
    -					
    -						
    -							onAcceptClick:
    -							id
    -						
    -						
    -							onDeclineClick:
    -							id
    -						
    -					
    -					
    -						UILabel
    -						UIImageView
    -					
    -					
    -						
    -							addressLabel
    -							UILabel
    -						
    -						
    -							avatarImage
    -							UIImageView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/IncomingCallViewController.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -4905,6 +4853,6 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     			{320, 154}
     			{640, 135}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/WizardViewController.xib b/Classes/en.lproj/WizardViewController.xib
    index ab9756a64..19ddd7f5d 100644
    --- a/Classes/en.lproj/WizardViewController.xib
    +++ b/Classes/en.lproj/WizardViewController.xib
    @@ -1,23 +1,20 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
     			IBUIActivityIndicatorView
     			IBUIButton
    -			IBUIImageView
    -			IBUILabel
     			IBUIScrollView
    -			IBUITextField
     			IBUIView
     		
     		
    @@ -42,14 +39,14 @@
     				
     					
     						
    -						268
    +						274
     						{320, 394}
     						
    -						
     						
     						_NS:9
     						YES
     						YES
    +						1
     						IBCocoaTouchFramework
     						NO
     						NO
    @@ -63,10 +60,10 @@
     								294
     								{160, 77}
     								
    -								
     								
     								_NS:9
     								NO
    +								3
     								
     									Cancel
     								
    @@ -75,6 +72,19 @@
     								0
     								NO
     								NO
    +								35
    +								0.0
    +								0.0
    +								0.0
    +								Cancel
    +								
    +									2
    +									MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
    @@ -91,13 +101,13 @@
     									NSImage
     									setup_cancel_default.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									14
     								
    -								
    -									Helvetica-Bold
    -									15
    +								
    +									Helvetica
    +									14
     									16
     								
     							
    @@ -106,10 +116,10 @@
     								291
     								{{160, 0}, {160, 77}}
     								
    -								
     								
     								_NS:9
     								NO
    +								4
     								
     									Start
     								
    @@ -118,6 +128,13 @@
     								0
     								NO
     								NO
    +								35
    +								0.0
    +								10
    +								0.0
    +								Start
    +								
    +								
     								
     								
     									NSImage
    @@ -127,17 +144,17 @@
     									NSImage
     									setup_start_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
     								-2147483357
     								{{160, 0}, {160, 77}}
     								
    -								
     								_NS:9
     								NO
    +								5
     								
     									Back
     								
    @@ -146,6 +163,13 @@
     								0
     								NO
     								NO
    +								35
    +								0.0
    +								10
    +								0.0
    +								Back
    +								
    +								
     								
     								
     									NSImage
    @@ -159,19 +183,19 @@
     									NSImage
     									setup_back_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{{0, 383}, {320, 77}}
     						
    -						
     						
     						_NS:9
     						
     							3
     							MCAwAA
     						
    +						2
     						IBCocoaTouchFramework
     					
     					
    @@ -180,13 +204,13 @@
     						
     							
     								
    -								292
    -								{{141, 212}, {37, 37}}
    +								301
    +								{{142, 211}, {37, 37}}
     								
    -								
     								
     								_NS:9
     								NO
    +								7
     								IBCocoaTouchFramework
     								NO
     								YES
    @@ -195,903 +219,23 @@
     						
     						{320, 460}
     						
    -						
     						
     						_NS:9
     						
     							3
     							MSAwLjUAA
     						
    +						6
     						IBCocoaTouchFramework
     					
     				
     				{320, 460}
     				
    -				
     				
     				_NS:9
     				
     				IBCocoaTouchFramework
     			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{60, 80}, {201, 129}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Linphone setup assistant icon
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -							NSImage
    -							setup_welcome_logo.png
    -						
    -					
    -					
    -						
    -						282
    -						{{40, 290}, {240, 44}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						NO
    -						IBCocoaTouchFramework
    -						This assistant will help you to use a SIP account for your calls.
    -						
    -							3
    -							MC4zMzMzMzMzMzMzAA
    -						
    -						
    -						0
    -						10
    -						0
    -						1
    -						
    -							1
    -							12
    -						
    -						
    -							Helvetica
    -							12
    -							16
    -						
    -						NO
    -					
    -				
    -				{320, 394}
    -				
    -				
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{31, 50}, {258, 24}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Account setup assistant
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -							NSImage
    -							setup_title_assistant.png
    -						
    -					
    -					
    -						
    -						319
    -						{{33, 141}, {255, 50}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Create linphone.org account
    -							
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						Create an account on linphone.org
    -						
    -						
    -						
    -							NSImage
    -							button_background_over.png
    -						
    -						
    -							NSImage
    -							button_background_default.png
    -						
    -						
    -							2
    -							13
    -						
    -						
    -							Helvetica-Bold
    -							13
    -							16
    -						
    -					
    -					
    -						
    -						319
    -						{{33, 205}, {255, 50}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Sign in linphone.org account
    -							
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						I have already a linphone.org account
    -						
    -						
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{33, 269}, {255, 50}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Sign in SIP account
    -							
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						I have already a SIP account
    -						
    -						
    -						
    -						
    -						
    -						
    -					
    -				
    -				{320, 394}
    -				
    -				
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{31, 50}, {258, 24}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Account setup assistant
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -					
    -					
    -						
    -						298
    -						{{39, 80}, {240, 44}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						200
    -						NO
    -						IBCocoaTouchFramework
    -						Enter your username and password with your email address
    -						
    -						
    -						0
    -						10
    -						0
    -						1
    -						
    -						
    -						NO
    -					
    -					
    -						
    -						319
    -						{{32, 140}, {255, 31}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						100
    -						
    -							Username
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Username
    -						
    -							3
    -							MAA
    -							
    -								2
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -							NSImage
    -							field_background.png
    -						
    -						
    -							1
    -							14
    -						
    -						
    -							Helvetica
    -							14
    -							16
    -						
    -					
    -					
    -						
    -						319
    -						{{32, 185}, {255, 31}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						101
    -						
    -							Password
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Password
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							YES
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{32, 230}, {255, 31}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						102
    -						
    -							Password again
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Password
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							YES
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{32, 275}, {255, 31}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						103
    -						
    -							Email
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Email
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						287
    -						{{33, 330}, {255, 50}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Register
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						Register
    -						
    -						
    -						
    -						
    -						
    -							2
    -							20
    -						
    -						
    -							Helvetica-Bold
    -							20
    -							16
    -						
    -					
    -				
    -				{320, 394}
    -				
    -				
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{31, 50}, {258, 24}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Account setup assistant
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -					
    -					
    -						
    -						298
    -						{{40, 80}, {240, 44}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						200
    -						NO
    -						IBCocoaTouchFramework
    -						Enter your username and password of your linphone.org account
    -						
    -						
    -						0
    -						10
    -						0
    -						1
    -						
    -						
    -						NO
    -					
    -					
    -						
    -						287
    -						{{32, 330}, {255, 50}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Sign in
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						Sign in
    -						
    -						
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{32, 185}, {255, 31}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						101
    -						
    -							Password
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Password
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							YES
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{32, 140}, {255, 31}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						100
    -						
    -							Username
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Username
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -				
    -				{320, 394}
    -				
    -				
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{31, 50}, {258, 24}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Account setup assistant
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -					
    -					
    -						
    -						298
    -						{{40, 80}, {240, 44}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						200
    -						NO
    -						IBCocoaTouchFramework
    -						Enter your username and password with your SIP domain
    -						
    -						
    -						0
    -						10
    -						0
    -						1
    -						
    -						
    -						NO
    -					
    -					
    -						
    -						319
    -						{{33, 140}, {255, 31}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						100
    -						
    -							Username
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Username
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{33, 185}, {255, 31}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						101
    -						
    -							Password
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Password
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							YES
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{33, 230}, {255, 31}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						104
    -						
    -							Domain
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Domain
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						287
    -						{{34, 330}, {255, 50}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Sign in
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						Sign in
    -						
    -						
    -						
    -						
    -						
    -						
    -					
    -				
    -				{320, 394}
    -				
    -				
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{31, 50}, {258, 24}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Account setup assistant
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -					
    -					
    -						
    -						298
    -						{{40, 80}, {240, 44}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						200
    -						NO
    -						IBCocoaTouchFramework
    -						Your account is created. Please check your mails in order to validate your account.
    -						
    -						
    -						0
    -						10
    -						0
    -						1
    -						
    -						
    -						NO
    -					
    -					
    -						
    -						287
    -						{{32, 330}, {255, 50}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Check validation
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						Check validation
    -						
    -						
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						-2147483329
    -						{{32, 185}, {255, 31}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						101
    -						
    -							
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Password
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							YES
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						-2147483329
    -						{{32, 140}, {255, 31}}
    -						
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						100
    -						
    -							
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Username
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -				
    -				{320, 394}
    -				
    -				
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
     		
     		
     			
    @@ -1121,43 +265,11 @@
     				
     				
     					
    -						welcomeView
    +						contentView
     						
    -						
    +						
     					
    -					28
    -				
    -				
    -					
    -						choiceView
    -						
    -						
    -					
    -					40
    -				
    -				
    -					
    -						createAccountView
    -						
    -						
    -					
    -					70
    -				
    -				
    -					
    -						connectAccountView
    -						
    -						
    -					
    -					71
    -				
    -				
    -					
    -						externalAccountView
    -						
    -						
    -					
    -					72
    +					99
     				
     				
     					
    @@ -1169,19 +281,11 @@
     				
     				
     					
    -						contentView
    +						portraitView
     						
    -						
    +						
     					
    -					99
    -				
    -				
    -					
    -						validateAccountView
    -						
    -						
    -					
    -					112
    +					117
     				
     				
     					
    @@ -1210,157 +314,6 @@
     					
     					24
     				
    -				
    -					
    -						onCreateAccountClick:
    -						
    -						
    -						7
    -					
    -					42
    -				
    -				
    -					
    -						onConnectAccountClick:
    -						
    -						
    -						7
    -					
    -					41
    -				
    -				
    -					
    -						onExternalAccountClick:
    -						
    -						
    -						7
    -					
    -					43
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					86
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					87
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					88
    -				
    -				
    -					
    -						onSignInExternalClick:
    -						
    -						
    -						7
    -					
    -					115
    -				
    -				
    -					
    -						onSignInClick:
    -						
    -						
    -						7
    -					
    -					116
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					85
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					81
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					80
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					82
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					83
    -				
    -				
    -					
    -						onRegisterClick:
    -						
    -						
    -						7
    -					
    -					113
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					84
    -				
    -				
    -					
    -						onCheckValidationClick:
    -						
    -						
    -						7
    -					
    -					114
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					109
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					110
    -				
     			
     			
     				
    @@ -1386,11 +339,17 @@
     						
     						
     							
    -							
     							
    +							
     						
     						
     					
    +					
    +						98
    +						
    +						
    +						contentView
    +					
     					
     						14
     						
    @@ -1402,6 +361,12 @@
     						
     						tabBar
     					
    +					
    +						18
    +						
    +						
    +						cancelButton
    +					
     					
     						16
     						
    @@ -1414,220 +379,6 @@
     						
     						backButton
     					
    -					
    -						18
    -						
    -						
    -						cancelButton
    -					
    -					
    -						21
    -						
    -						
    -							
    -							
    -						
    -						
    -						welcomeView
    -					
    -					
    -						19
    -						
    -						
    -						iconImage
    -					
    -					
    -						22
    -						
    -						
    -						label
    -					
    -					
    -						33
    -						
    -						
    -							
    -							
    -							
    -							
    -						
    -						
    -						choiceView
    -					
    -					
    -						37
    -						
    -						
    -						titleImage
    -					
    -					
    -						44
    -						
    -						
    -							
    -							
    -							
    -							
    -							
    -							
    -							
    -						
    -						
    -						createAccountView
    -					
    -					
    -						48
    -						
    -						
    -						titleImage
    -					
    -					
    -						52
    -						
    -						
    -							
    -							
    -							
    -							
    -							
    -						
    -						
    -						connectAccountView
    -					
    -					
    -						53
    -						
    -						
    -						titleImage
    -					
    -					
    -						56
    -						
    -						
    -							
    -							
    -							
    -							
    -							
    -							
    -						
    -						
    -						externalAccountView
    -					
    -					
    -						57
    -						
    -						
    -						titleImage
    -					
    -					
    -						58
    -						
    -						
    -						label
    -					
    -					
    -						59
    -						
    -						
    -						usernameField
    -					
    -					
    -						60
    -						
    -						
    -						passwordField
    -					
    -					
    -						61
    -						
    -						
    -						domainField
    -					
    -					
    -						62
    -						
    -						
    -						signInButton
    -					
    -					
    -						64
    -						
    -						
    -						signInButton
    -					
    -					
    -						66
    -						
    -						
    -						passwordField
    -					
    -					
    -						67
    -						
    -						
    -						label
    -					
    -					
    -						68
    -						
    -						
    -						usernameField
    -					
    -					
    -						73
    -						
    -						
    -						label
    -					
    -					
    -						74
    -						
    -						
    -						usernameField
    -					
    -					
    -						75
    -						
    -						
    -						passwordField
    -					
    -					
    -						76
    -						
    -						
    -						password2Field
    -					
    -					
    -						77
    -						
    -						
    -						registerButton
    -					
    -					
    -						79
    -						
    -						
    -						emailField
    -					
    -					
    -						39
    -						
    -						
    -						externalAccountButton
    -					
    -					
    -						38
    -						
    -						
    -						connectAccountButton
    -					
    -					
    -						36
    -						
    -						
    -						createAccountButton
    -					
     					
     						91
     						
    @@ -1643,55 +394,6 @@
     						
     						activityIndicatorView
     					
    -					
    -						98
    -						
    -						
    -						contentView
    -					
    -					
    -						101
    -						
    -						
    -							
    -							
    -							
    -							
    -							
    -						
    -						
    -						validateAccountView
    -					
    -					
    -						103
    -						
    -						
    -						checkValidationButton
    -					
    -					
    -						105
    -						
    -						
    -						label
    -					
    -					
    -						107
    -						
    -						
    -						titleImage
    -					
    -					
    -						104
    -						
    -						
    -						usernameField
    -					
    -					
    -						106
    -						
    -						
    -						passwordField
    -					
     				
     			
     			
    @@ -1699,56 +401,17 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIResponder
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -1757,140 +420,18 @@
     			
     			
     			
    -			116
    -		
    -		
    -			
    -				
    -					WizardViewController
    -					UIViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -						id
    -						id
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onBackClick:
    -							id
    -						
    -						
    -							onCancelClick:
    -							id
    -						
    -						
    -							onCheckValidationClick:
    -							id
    -						
    -						
    -							onConnectAccountClick:
    -							id
    -						
    -						
    -							onCreateAccountClick:
    -							id
    -						
    -						
    -							onExternalAccountClick:
    -							id
    -						
    -						
    -							onRegisterClick:
    -							id
    -						
    -						
    -							onSignInClick:
    -							id
    -						
    -						
    -							onSignInExternalClick:
    -							id
    -						
    -						
    -							onStartClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIView
    -						UIView
    -						UIScrollView
    -						UIView
    -						UIView
    -						UIButton
    -						UIView
    -						UIView
    -						UIView
    -					
    -					
    -						
    -							backButton
    -							UIButton
    -						
    -						
    -							choiceView
    -							UIView
    -						
    -						
    -							connectAccountView
    -							UIView
    -						
    -						
    -							contentView
    -							UIScrollView
    -						
    -						
    -							createAccountView
    -							UIView
    -						
    -						
    -							externalAccountView
    -							UIView
    -						
    -						
    -							startButton
    -							UIButton
    -						
    -						
    -							validateAccountView
    -							UIView
    -						
    -						
    -							waitView
    -							UIView
    -						
    -						
    -							welcomeView
    -							UIView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/WizardViewController.h
    -					
    -				
    -			
    +			117
     		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
    -			{550, 101}
    -			{550, 101}
    -			{542, 88}
     			{320, 154}
     			{320, 154}
     			{320, 154}
    @@ -1899,9 +440,7 @@
     			{320, 154}
     			{320, 154}
     			{320, 154}
    -			{516, 48}
    -			{402, 258}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/en.lproj/WizardViewController~ipad.xib b/Classes/en.lproj/WizardViewController~ipad.xib
    new file mode 100644
    index 000000000..0b2e69b39
    --- /dev/null
    +++ b/Classes/en.lproj/WizardViewController~ipad.xib
    @@ -0,0 +1,799 @@
    +
    +
    +	
    +		1536
    +		11E53
    +		2840
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			1926
    +		
    +		
    +			IBProxyObject
    +			IBUIActivityIndicatorView
    +			IBUIButton
    +			IBUIScrollView
    +			IBUIView
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						274
    +						{768, 966}
    +						
    +						
    +						_NS:9
    +						YES
    +						YES
    +						1
    +						IBCocoaTouchFramework
    +						NO
    +						NO
    +					
    +					
    +						
    +						266
    +						
    +							
    +								
    +								290
    +								{{0, 77}, {768, 2000}}
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								294
    +								{384, 77}
    +								
    +								
    +								_NS:9
    +								NO
    +								3
    +								
    +									Cancel
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Cancel
    +								
    +									2
    +									MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									setup_cancel_over~ipad.png
    +								
    +								
    +									NSImage
    +									setup_cancel_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									setup_cancel_default~ipad.png
    +								
    +								
    +									1
    +									14
    +								
    +								
    +									Helvetica
    +									14
    +									16
    +								
    +							
    +							
    +								
    +								291
    +								{{384, 0}, {384, 77}}
    +								
    +								
    +								_NS:9
    +								NO
    +								4
    +								
    +									Start
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								54
    +								0.0
    +								Start
    +								
    +								
    +								
    +								
    +									NSImage
    +									setup_start_over~ipad.png
    +								
    +								
    +									NSImage
    +									setup_start_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483357
    +								{{384, 0}, {384, 77}}
    +								
    +								
    +								_NS:9
    +								NO
    +								5
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								54
    +								0.0
    +								Back
    +								
    +								
    +								
    +								
    +									NSImage
    +									setup_back_over~ipad.png
    +								
    +								
    +									NSImage
    +									setup_back_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									setup_back_default~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 947}, {768, 77}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						2
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						-2147483374
    +						
    +							
    +								
    +								301
    +								{{366, 492}, {37, 37}}
    +								
    +								
    +								_NS:9
    +								NO
    +								7
    +								IBCocoaTouchFramework
    +								NO
    +								YES
    +								0
    +							
    +						
    +						{768, 1024}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwLjUAA
    +						
    +						6
    +						IBCocoaTouchFramework
    +					
    +				
    +				{768, 1024}
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						274
    +						{1024, 711}
    +						
    +						
    +						_NS:9
    +						YES
    +						YES
    +						1
    +						IBCocoaTouchFramework
    +						NO
    +						NO
    +					
    +					
    +						
    +						266
    +						
    +							
    +								
    +								290
    +								{{0, 77}, {1024, 2000}}
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								294
    +								{512, 77}
    +								
    +								
    +								_NS:9
    +								NO
    +								3
    +								
    +									Cancel
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Cancel
    +								
    +									2
    +									MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
    +								
    +								
    +									NSImage
    +									setup_cancel_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									setup_cancel_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									setup_cancel_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								291
    +								{{512, 0}, {512, 77}}
    +								
    +								
    +								_NS:9
    +								NO
    +								4
    +								
    +									Start
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								16
    +								0.0
    +								Start
    +								
    +								
    +								
    +								
    +									NSImage
    +									setup_start_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									setup_start_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483357
    +								{{512, 0}, {512, 77}}
    +								
    +								
    +								_NS:9
    +								NO
    +								5
    +								
    +									Back
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								16
    +								0.0
    +								Back
    +								
    +								
    +								
    +								
    +									NSImage
    +									setup_back_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									setup_back_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									setup_back_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 691}, {1024, 77}}
    +						
    +						
    +						_NS:9
    +						
    +						2
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						-2147483374
    +						
    +							
    +								
    +								301
    +								{{494, 364}, {37, 37}}
    +								
    +								
    +								_NS:9
    +								NO
    +								7
    +								IBCocoaTouchFramework
    +								NO
    +								YES
    +								0
    +							
    +						
    +						{1024, 768}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwLjUAA
    +						
    +						6
    +						IBCocoaTouchFramework
    +					
    +				
    +				{1024, 768}
    +				
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					20
    +				
    +				
    +					
    +						startButton
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						contentView
    +						
    +						
    +					
    +					99
    +				
    +				
    +					
    +						portraitView
    +						
    +						
    +					
    +					117
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					131
    +				
    +				
    +					
    +						landscapeView
    +						
    +						
    +					
    +					134
    +				
    +				
    +					
    +						onStartClick:
    +						
    +						
    +						7
    +					
    +					25
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					23
    +				
    +				
    +					
    +						onCancelClick:
    +						
    +						
    +						7
    +					
    +					24
    +				
    +				
    +					
    +						onCancelClick:
    +						
    +						
    +						7
    +					
    +					128
    +				
    +				
    +					
    +						onStartClick:
    +						
    +						
    +						7
    +					
    +					126
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					127
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						12
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						Portrait View
    +					
    +					
    +						98
    +						
    +						
    +						contentView
    +					
    +					
    +						14
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						tabBar
    +					
    +					
    +						18
    +						
    +						
    +						cancelButton
    +					
    +					
    +						16
    +						
    +						
    +						startButton
    +					
    +					
    +						17
    +						
    +						
    +						backButton
    +					
    +					
    +						118
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						Landscape View
    +					
    +					
    +						119
    +						
    +						
    +						contentView
    +					
    +					
    +						120
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						tabBar
    +					
    +					
    +						122
    +						
    +						
    +						cancelButton
    +					
    +					
    +						123
    +						
    +						
    +						startButton
    +					
    +					
    +						124
    +						
    +						
    +						backButton
    +					
    +					
    +						129
    +						
    +						
    +							
    +						
    +						
    +						waitView
    +					
    +					
    +						130
    +						
    +						
    +						activityIndicatorView
    +					
    +					
    +						132
    +						
    +						
    +							
    +						
    +						
    +						waitView
    +					
    +					
    +						133
    +						
    +						
    +						activityIndicatorView
    +					
    +					
    +						137
    +						
    +						
    +						background
    +					
    +					
    +						136
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				WizardViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			137
    +		
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +		
    +		1926
    +	
    +
    diff --git a/linphone.ldb/Resources/Classes/WizardViewController/3/WizardViewController.xib b/Classes/en.lproj/WizardViews.xib
    similarity index 76%
    rename from linphone.ldb/Resources/Classes/WizardViewController/3/WizardViewController.xib
    rename to Classes/en.lproj/WizardViews.xib
    index ab9756a64..a215fb722 100644
    --- a/linphone.ldb/Resources/Classes/WizardViewController/3/WizardViewController.xib
    +++ b/Classes/en.lproj/WizardViews.xib
    @@ -1,22 +1,20 @@
     
     
     	
    -		1296
    +		1536
     		11E53
    -		2549
    +		2840
     		1138.47
     		569.00
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -			1498
    +			1926
     		
     		
     			IBProxyObject
    -			IBUIActivityIndicatorView
     			IBUIButton
     			IBUIImageView
     			IBUILabel
    -			IBUIScrollView
     			IBUITextField
     			IBUIView
     		
    @@ -36,183 +34,6 @@
     				IBFirstResponder
     				IBCocoaTouchFramework
     			
    -			
    -				
    -				292
    -				
    -					
    -						
    -						268
    -						{320, 394}
    -						
    -						
    -						
    -						_NS:9
    -						YES
    -						YES
    -						IBCocoaTouchFramework
    -						NO
    -						NO
    -					
    -					
    -						
    -						266
    -						
    -							
    -								
    -								294
    -								{160, 77}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								
    -									Cancel
    -								
    -								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								NO
    -								
    -									3
    -									MC41AA
    -								
    -								
    -									NSImage
    -									setup_cancel_over.png
    -								
    -								
    -									NSImage
    -									setup_cancel_disabled.png
    -								
    -								
    -									NSImage
    -									setup_cancel_default.png
    -								
    -								
    -									2
    -									15
    -								
    -								
    -									Helvetica-Bold
    -									15
    -									16
    -								
    -							
    -							
    -								
    -								291
    -								{{160, 0}, {160, 77}}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								
    -									Start
    -								
    -								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								NO
    -								
    -								
    -									NSImage
    -									setup_start_over.png
    -								
    -								
    -									NSImage
    -									setup_start_default.png
    -								
    -								
    -								
    -							
    -							
    -								
    -								-2147483357
    -								{{160, 0}, {160, 77}}
    -								
    -								
    -								_NS:9
    -								NO
    -								
    -									Back
    -								
    -								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								NO
    -								
    -								
    -									NSImage
    -									setup_back_over.png
    -								
    -								
    -									NSImage
    -									setup_back_disabled.png
    -								
    -								
    -									NSImage
    -									setup_back_default.png
    -								
    -								
    -								
    -							
    -						
    -						{{0, 383}, {320, 77}}
    -						
    -						
    -						
    -						_NS:9
    -						
    -							3
    -							MCAwAA
    -						
    -						IBCocoaTouchFramework
    -					
    -					
    -						
    -						-2147483374
    -						
    -							
    -								
    -								292
    -								{{141, 212}, {37, 37}}
    -								
    -								
    -								
    -								_NS:9
    -								NO
    -								IBCocoaTouchFramework
    -								NO
    -								YES
    -								0
    -							
    -						
    -						{320, 460}
    -						
    -						
    -						
    -						_NS:9
    -						
    -							3
    -							MSAwLjUAA
    -						
    -						IBCocoaTouchFramework
    -					
    -				
    -				{320, 460}
    -				
    -				
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
     			
     				
     				274
    @@ -225,6 +46,7 @@
     						
     						
     						_NS:9
    +						1
     						NO
     						
     							Linphone setup assistant icon
    @@ -236,12 +58,54 @@
     							setup_welcome_logo.png
     						
     					
    +					
    +						
    +						311
    +						{{31, 230}, {258, 40}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						
    +							Account setup assistant
    +						
    +						IBCocoaTouchFramework
    +						Account setup assistant
    +						
    +							1
    +							MCAwIDAAA
    +							darkTextColor
    +						
    +						
    +						
    +							3
    +							MC4zMzMzMzMzMzMzAA
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +							3
    +							20
    +						
    +						
    +							Helvetica-Oblique
    +							20
    +							16
    +						
    +					
     					
     						
     						282
     						{{40, 290}, {240, 44}}
     						
     						
    +						
     						_NS:9
     						NO
     						YES
    @@ -249,10 +113,7 @@
     						NO
     						IBCocoaTouchFramework
     						This assistant will help you to use a SIP account for your calls.
    -						
    -							3
    -							MC4zMzMzMzMzMzMzAA
    -						
    +						
     						
     						0
     						10
    @@ -268,38 +129,50 @@
     							16
     						
     						NO
    +						240
     					
     				
     				{320, 394}
     				
     				
    -				
    +				
     				_NS:9
    -				
    +				
    +					3
    +					MCAwAA
    +				
     				IBCocoaTouchFramework
     			
     			
     				
     				274
     				
    -					
    +					
     						
     						311
    -						{{31, 50}, {258, 24}}
    +						{{31, 34}, {258, 40}}
     						
     						
     						
     						_NS:9
    +						NO
    +						YES
    +						7
     						NO
     						
     							Account setup assistant
    -							
     						
     						IBCocoaTouchFramework
    -						
    -							NSImage
    -							setup_title_assistant.png
    -						
    +						Account setup assistant
    +						
    +						
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +						
     					
     					
     						
    @@ -319,8 +192,18 @@
     						0
     						NO
     						Create an account on linphone.org
    -						
    -						
    +						
    +							2
    +							MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +						
    +						
    +							2
    +							MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +						
    +						
    +							3
    +							MC41AA
    +						
     						
     							NSImage
     							button_background_over.png
    @@ -357,7 +240,8 @@
     						0
     						NO
     						I have already a linphone.org account
    -						
    +						
    +						
     						
     						
     						
    @@ -370,6 +254,7 @@
     						{{33, 269}, {255, 50}}
     						
     						
    +						
     						_NS:9
     						NO
     						
    @@ -381,7 +266,8 @@
     						0
     						NO
     						I have already a SIP account
    -						
    +						
    +						
     						
     						
     						
    @@ -392,7 +278,7 @@
     				{320, 394}
     				
     				
    -				
    +				
     				_NS:9
     				
     				IBCocoaTouchFramework
    @@ -401,21 +287,32 @@
     				
     				274
     				
    -					
    +					
     						
     						311
    -						{{31, 50}, {258, 24}}
    +						{{31, 34}, {258, 40}}
     						
     						
     						
     						_NS:9
    +						NO
    +						YES
    +						7
     						NO
     						
     							Account setup assistant
    -							
     						
     						IBCocoaTouchFramework
    -						
    +						Account setup assistant
    +						
    +						
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +						
     					
     					
     						
    @@ -431,7 +328,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter your username and password with your email address
    +						Enter your username and password with your email address.
     						
     						
     						0
    @@ -441,6 +338,7 @@
     						
     						
     						NO
    +						240
     					
     					
     						
    @@ -467,8 +365,7 @@
     								2
     							
     						
    -						YES
    -						17
    +						10
     						
     							1
     							IBCocoaTouchFramework
    @@ -481,7 +378,7 @@
     							1
     							14
     						
    -						
    +						
     							Helvetica
     							14
     							16
    @@ -510,8 +407,7 @@
     							MAA
     							
     						
    -						YES
    -						17
    +						10
     						
     							1
     							YES
    @@ -519,7 +415,7 @@
     						
     						
     						
    -						
    +						
     					
     					
     						
    @@ -544,8 +440,7 @@
     							MAA
     							
     						
    -						YES
    -						17
    +						10
     						
     							1
     							YES
    @@ -553,7 +448,7 @@
     						
     						
     						
    -						
    +						
     					
     					
     						
    @@ -578,15 +473,14 @@
     							MAA
     							
     						
    -						YES
    -						17
    +						10
     						
     							1
     							IBCocoaTouchFramework
     						
     						
     						
    -						
    +						
     					
     					
     						
    @@ -594,6 +488,7 @@
     						{{33, 330}, {255, 50}}
     						
     						
    +						
     						_NS:9
     						NO
     						
    @@ -604,7 +499,8 @@
     						0
     						NO
     						Register
    -						
    +						
    +						
     						
     						
     						
    @@ -622,7 +518,7 @@
     				{320, 394}
     				
     				
    -				
    +				
     				_NS:9
     				
     				IBCocoaTouchFramework
    @@ -631,21 +527,32 @@
     				
     				274
     				
    -					
    +					
     						
     						311
    -						{{31, 50}, {258, 24}}
    +						{{31, 34}, {258, 40}}
     						
     						
     						
     						_NS:9
    +						NO
    +						YES
    +						7
     						NO
     						
     							Account setup assistant
    -							
     						
     						IBCocoaTouchFramework
    -						
    +						Account setup assistant
    +						
    +						
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +						
     					
     					
     						
    @@ -661,7 +568,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter your username and password of your linphone.org account
    +						Enter your username and password of your linphone.org account.
     						
     						
     						0
    @@ -671,29 +578,7 @@
     						
     						
     						NO
    -					
    -					
    -						
    -						287
    -						{{32, 330}, {255, 50}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Sign in
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						Sign in
    -						
    -						
    -						
    -						
    -						
    -						
    +						240
     					
     					
     						
    @@ -718,8 +603,7 @@
     							MAA
     							
     						
    -						YES
    -						17
    +						10
     						
     							1
     							YES
    @@ -727,7 +611,7 @@
     						
     						
     						
    -						
    +						
     					
     					
     						
    @@ -752,21 +636,45 @@
     							MAA
     							
     						
    -						YES
    -						17
    +						10
     						
     							1
     							IBCocoaTouchFramework
     						
     						
     						
    -						
    +						
    +					
    +					
    +						
    +						287
    +						{{32, 330}, {255, 50}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Sign in
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Sign in
    +						
    +						
    +						
    +						
    +						
    +						
    +						
     					
     				
     				{320, 394}
     				
     				
    -				
    +				
     				_NS:9
     				
     				IBCocoaTouchFramework
    @@ -775,21 +683,32 @@
     				
     				274
     				
    -					
    +					
     						
     						311
    -						{{31, 50}, {258, 24}}
    +						{{31, 34}, {258, 40}}
     						
     						
     						
     						_NS:9
    +						NO
    +						YES
    +						7
     						NO
     						
     							Account setup assistant
    -							
     						
     						IBCocoaTouchFramework
    -						
    +						Account setup assistant
    +						
    +						
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +						
     					
     					
     						
    @@ -805,7 +724,7 @@
     						200
     						NO
     						IBCocoaTouchFramework
    -						Enter your username and password with your SIP domain
    +						Enter your username and password with your SIP domain.
     						
     						
     						0
    @@ -815,6 +734,7 @@
     						
     						
     						NO
    +						240
     					
     					
     						
    @@ -839,15 +759,14 @@
     							MAA
     							
     						
    -						YES
    -						17
    +						10
     						
     							1
     							IBCocoaTouchFramework
     						
     						
     						
    -						
    +						
     					
     					
     						
    @@ -872,8 +791,7 @@
     							MAA
     							
     						
    -						YES
    -						17
    +						10
     						
     							1
     							YES
    @@ -881,7 +799,7 @@
     						
     						
     						
    -						
    +						
     					
     					
     						
    @@ -906,15 +824,14 @@
     							MAA
     							
     						
    -						YES
    -						17
    +						10
     						
     							1
     							IBCocoaTouchFramework
     						
     						
     						
    -						
    +						
     					
     					
     						
    @@ -922,6 +839,7 @@
     						{{34, 330}, {255, 50}}
     						
     						
    +						
     						_NS:9
     						NO
     						
    @@ -932,7 +850,8 @@
     						0
     						NO
     						Sign in
    -						
    +						
    +						
     						
     						
     						
    @@ -943,7 +862,7 @@
     				{320, 394}
     				
     				
    -				
    +				
     				_NS:9
     				
     				IBCocoaTouchFramework
    @@ -952,21 +871,32 @@
     				
     				274
     				
    -					
    +					
     						
     						311
    -						{{31, 50}, {258, 24}}
    +						{{31, 34}, {258, 40}}
     						
     						
     						
     						_NS:9
    +						NO
    +						YES
    +						7
     						NO
     						
     							Account setup assistant
    -							
     						
     						IBCocoaTouchFramework
    -						
    +						Account setup assistant
    +						
    +						
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +						
     					
     					
     						
    @@ -992,29 +922,7 @@
     						
     						
     						NO
    -					
    -					
    -						
    -						287
    -						{{32, 330}, {255, 50}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Check validation
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						Check validation
    -						
    -						
    -						
    -						
    -						
    -						
    +						240
     					
     					
     						
    @@ -1039,8 +947,7 @@
     							MAA
     							
     						
    -						YES
    -						17
    +						10
     						
     							1
     							YES
    @@ -1048,7 +955,7 @@
     						
     						
     						
    -						
    +						
     					
     					
     						
    @@ -1073,21 +980,45 @@
     							MAA
     							
     						
    -						YES
    -						17
    +						10
     						
     							1
     							IBCocoaTouchFramework
     						
     						
     						
    -						
    +						
    +					
    +					
    +						
    +						287
    +						{{32, 330}, {255, 50}}
    +						
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Check validation
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Check validation
    +						
    +						
    +						
    +						
    +						
    +						
    +						
     					
     				
     				{320, 394}
     				
     				
    -				
    +				
     				_NS:9
     				
     				IBCocoaTouchFramework
    @@ -1095,30 +1026,6 @@
     		
     		
     			
    -				
    -					
    -						view
    -						
    -						
    -					
    -					20
    -				
    -				
    -					
    -						startButton
    -						
    -						
    -					
    -					26
    -				
    -				
    -					
    -						backButton
    -						
    -						
    -					
    -					27
    -				
     				
     					
     						welcomeView
    @@ -1159,22 +1066,6 @@
     					
     					72
     				
    -				
    -					
    -						waitView
    -						
    -						
    -					
    -					96
    -				
    -				
    -					
    -						contentView
    -						
    -						
    -					
    -					99
    -				
     				
     					
     						validateAccountView
    @@ -1183,33 +1074,6 @@
     					
     					112
     				
    -				
    -					
    -						onStartClick:
    -						
    -						
    -						7
    -					
    -					25
    -				
    -				
    -					
    -						onBackClick:
    -						
    -						
    -						7
    -					
    -					23
    -				
    -				
    -					
    -						onCancelClick:
    -						
    -						
    -						7
    -					
    -					24
    -				
     				
     					
     						onCreateAccountClick:
    @@ -1381,51 +1245,13 @@
     						
     						
     					
    -					
    -						12
    -						
    -						
    -							
    -							
    -							
    -						
    -						
    -					
    -					
    -						14
    -						
    -						
    -							
    -							
    -							
    -						
    -						
    -						tabBar
    -					
    -					
    -						16
    -						
    -						
    -						startButton
    -					
    -					
    -						17
    -						
    -						
    -						backButton
    -					
    -					
    -						18
    -						
    -						
    -						cancelButton
    -					
     					
     						21
     						
     						
     							
     							
    +							
     						
     						
     						welcomeView
    @@ -1446,80 +1272,56 @@
     						33
     						
     						
    -							
     							
     							
     							
    +							
     						
     						
     						choiceView
     					
    -					
    -						37
    -						
    -						
    -						titleImage
    -					
     					
     						44
     						
     						
    -							
     							
     							
     							
     							
     							
     							
    +							
     						
     						
     						createAccountView
     					
    -					
    -						48
    -						
    -						
    -						titleImage
    -					
     					
     						52
     						
     						
    -							
     							
     							
     							
     							
    +							
     						
     						
     						connectAccountView
     					
    -					
    -						53
    -						
    -						
    -						titleImage
    -					
     					
     						56
     						
     						
    -							
     							
     							
     							
     							
     							
    +							
     						
     						
     						externalAccountView
     					
    -					
    -						57
    -						
    -						
    -						titleImage
    -					
     					
     						58
     						
    @@ -1550,12 +1352,6 @@
     						
     						signInButton
     					
    -					
    -						64
    -						
    -						
    -						signInButton
    -					
     					
     						66
     						
    @@ -1628,36 +1424,15 @@
     						
     						createAccountButton
     					
    -					
    -						91
    -						
    -						
    -							
    -						
    -						
    -						waitView
    -					
    -					
    -						90
    -						
    -						
    -						activityIndicatorView
    -					
    -					
    -						98
    -						
    -						
    -						contentView
    -					
     					
     						101
     						
     						
    -							
     							
     							
     							
    -							
    +							
    +							
     						
     						
     						validateAccountView
    @@ -1674,12 +1449,6 @@
     						
     						label
     					
    -					
    -						107
    -						
    -						
    -						titleImage
    -					
     					
     						104
     						
    @@ -1692,6 +1461,48 @@
     						
     						passwordField
     					
    +					
    +						117
    +						
    +						
    +						title
    +					
    +					
    +						122
    +						
    +						
    +						title
    +					
    +					
    +						123
    +						
    +						
    +						title
    +					
    +					
    +						124
    +						
    +						
    +						title
    +					
    +					
    +						126
    +						
    +						
    +						title
    +					
    +					
    +						64
    +						
    +						
    +						signInButton
    +					
    +					
    +						127
    +						
    +						
    +						title
    +					
     				
     			
     			
    @@ -1705,32 +1516,25 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -1749,21 +1553,40 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     			
     			
     			
     			
     			
    -			116
    +			127
     		
     		
     			
     				
    -					WizardViewController
    +					TPMultiLayoutViewController
     					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					WizardViewController
    +					TPMultiLayoutViewController
     					
     						id
     						id
    @@ -1883,7 +1706,7 @@
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -1891,17 +1714,8 @@
     			{550, 101}
     			{550, 101}
     			{542, 88}
    -			{320, 154}
    -			{320, 154}
    -			{320, 154}
    -			{320, 154}
    -			{320, 154}
    -			{320, 154}
    -			{320, 154}
    -			{320, 154}
    -			{516, 48}
    -			{402, 258}
    +			{179, 161}
     		
    -		1498
    +		1926
     	
     
    diff --git a/Classes/fr.lproj/ChatRoomViewController.xib b/Classes/fr.lproj/ChatRoomViewController.xib
    index 43ba72799..ceff4af70 100644
    --- a/Classes/fr.lproj/ChatRoomViewController.xib
    +++ b/Classes/fr.lproj/ChatRoomViewController.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1280
     		11E53
     		1938
     		1138.47
    @@ -16,7 +16,6 @@
     			IBUILabel
     			IBProxyObject
     			IBUIProgressView
    -			IBUITapGestureRecognizer
     			IBUITableViewController
     			IBUITableView
     			IBUIButton
    @@ -131,7 +130,7 @@
     							
     								
     								274
    -								{{0, 80}, {320, 277}}
    +								{{0, 80}, {320, 279}}
     								
     								
     								_NS:9
    @@ -156,14 +155,14 @@
     									
     										
     										274
    -										{320, 59}
    +										{320, 57}
     										
     										
     										_NS:9
     										
     										NO
     										IBCocoaTouchFramework
    -										
    +										
     											NSImage
     											chat_background.png
     										
    @@ -171,7 +170,7 @@
     									
     										
     										297
    -										{{250, 0}, {70, 59}}
    +										{{262, 0}, {58, 57}}
     										
     										
     										_NS:9
    @@ -182,7 +181,7 @@
     										IBCocoaTouchFramework
     										0
     										0
    -										Annuler
    +										NO
     										
     										
     											1
    @@ -192,6 +191,14 @@
     											3
     											MC41AA
     										
    +										
    +											NSImage
    +											chat_cancel_over.png
    +										
    +										
    +											NSImage
    +											chat_cancel_default.png
    +										
     										
     											2
     											15
    @@ -205,7 +212,7 @@
     									
     										
     										298
    -										{{20, 25}, {213, 9}}
    +										{{20, 24}, {222, 9}}
     										
     										
     										_NS:9
    @@ -218,7 +225,7 @@
     										0.5
     									
     								
    -								{{0, 357}, {320, 59}}
    +								{{0, 359}, {320, 57}}
     								
     								
     								_NS:9
    @@ -232,29 +239,22 @@
     									
     										
     										274
    -										{320, 59}
    -										
    -										
    -										_NS:9
    -										
    -										NO
    -										IBCocoaTouchFramework
    -										
    -									
    -									
    -										
    -										274
    -										{320, 59}
    +										{320, 57}
     										
     										
     										_NS:9
     										
    +										NO
     										IBCocoaTouchFramework
    +										
    +											NSImage
    +											chat_message_background.png
    +										
     									
     									
     										
     										297
    -										{{250, 0}, {70, 59}}
    +										{{262, 0}, {58, 57}}
     										
     										_NS:9
     										NO
    @@ -267,28 +267,52 @@
     										0
     										NO
     										NO
    +										30
    +										0.0
    +										0.0
    +										0.0
    +										Envoyez
    +										
    +											2
    +											MCAwIDAAA
    +										
    +										
    +											2
    +											MC43MjU0OTAyMTI0IDAuNzY4NjI3NDY0OCAwLjc5NjA3ODQ0MzUAA
    +										
    +										
    +											2
    +											MC4zNTY4NjI3NTM2IDAuMzk2MDc4NDM3NiAwLjQzNTI5NDEyMTUAA
    +										
     										
    -										
    +										
     											NSImage
     											chat_send_over.png
     										
    -										
    +										
     											NSImage
     											chat_send_disabled.png
     										
    -										
    +										
     											NSImage
     											chat_send_default.png
     										
    -										
    -										
    +										
    +											1
    +											14
    +										
    +										
    +											Helvetica
    +											14
    +											16
    +										
     									
     									
     										
     										300
    -										{40, 59}
    +										{35, 57}
     										
    -										
    +										
     										_NS:9
     										NO
     										
    @@ -297,54 +321,41 @@
     										IBCocoaTouchFramework
     										0
     										0
    -										Img
    +										NO
    +										NO
     										
     										
     											1
     											MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
     										
     										
    +										
    +											NSImage
    +											chat_photo_over.png
    +										
    +										
    +											NSImage
    +											chat_photo_disabled.png
    +										
    +										
    +											NSImage
    +											chat_photo_default.png
    +										
     										
     										
     									
    -									
    +									
     										
     										274
    -										
    -											
    -												
    -												274
    -												{210, 59}
    -												
    -												
    -												_NS:9
    -												NO
    -												IBCocoaTouchFramework
    -												
    -													NSImage
    -													chat_field.png
    -												
    -											
    -											
    -												
    -												274
    -												{{10, 10}, {190, 39}}
    -												
    -												
    -												_NS:9
    -												
    -												IBCocoaTouchFramework
    -											
    -										
    -										{{40, 0}, {210, 59}}
    +										{{33, 10}, {232, 37}}
     										
    -										
    +										
     										_NS:9
     										
     										IBCocoaTouchFramework
     									
     								
    -								{{0, 357}, {320, 59}}
    +								{{0, 359}, {320, 57}}
     								
     								
     								_NS:9
    @@ -384,6 +395,10 @@
     								
     								
     								_NS:9
    +								
    +									2
    +									MCAwIDAAA
    +								
     								NO
     								
     									Retour
    @@ -392,17 +407,27 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Retour
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
    -								
    +								
     									NSImage
     									chat_back_over.png
     								
    -								
    +								
     									NSImage
     									chat_back_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -411,6 +436,7 @@
     								
     								
     								_NS:9
    +								
     								NO
     								
     									Éditer
    @@ -419,21 +445,30 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Ok
    +								Éditer
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									chat_edit_over.png
     								
    -								
    +								
     									NSImage
     									chat_ok_default.png
     								
    -								
    +								
     									NSImage
     									chat_edit_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
    @@ -461,7 +496,6 @@
     				IBCocoaTouchFramework
     				NO
     			
    -			
     		
     		
     			
    @@ -513,22 +547,6 @@
     					
     					44
     				
    -				
    -					
    -						footerView
    -						
    -						
    -					
    -					46
    -				
    -				
    -					
    -						sendButton
    -						
    -						
    -					
    -					27
    -				
     				
     					
     						chatView
    @@ -537,46 +555,6 @@
     					
     					54
     				
    -				
    -					
    -						footerBackgroundImage
    -						
    -						
    -					
    -					67
    -				
    -				
    -					
    -						messageField
    -						
    -						
    -					
    -					64
    -				
    -				
    -					
    -						messageBackgroundImage
    -						
    -						
    -					
    -					69
    -				
    -				
    -					
    -						messageView
    -						
    -						
    -					
    -					70
    -				
    -				
    -					
    -						listTapGestureRecognizer
    -						
    -						
    -					
    -					71
    -				
     				
     					
     						imageTransferProgressBar
    @@ -617,6 +595,38 @@
     					
     					88
     				
    +				
    +					
    +						sendButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						messageField
    +						
    +						
    +					
    +					64
    +				
    +				
    +					
    +						messageView
    +						
    +						
    +					
    +					89
    +				
    +				
    +					
    +						messageBackgroundImage
    +						
    +						
    +					
    +					90
    +				
     				
     					
     						dataSource
    @@ -633,16 +643,6 @@
     					
     					31
     				
    -				
    -					
    -						gestureRecognizers
    -						
    -						
    -						NSArray
    -						YES
    -					
    -					61
    -				
     				
     					
     						onBackClick:
    @@ -678,14 +678,6 @@
     					
     					33
     				
    -				
    -					
    -						onListTap:
    -						
    -						
    -					
    -					62
    -				
     				
     					
     						onPictureClick:
    @@ -820,67 +812,26 @@
     						14
     						
     						
    -							
     							
    -							
     							
    -							
    +							
    +							
     						
     						
    -						footerView
    -					
    -					
    -						15
    -						
    -						
    -						sendButton
    -					
    -					
    -						58
    -						
    -						
    -						listTapGestureRecognizer
    +						messageView
     					
     					
     						66
     						
     						
    -						footerBackgroundImage
    -					
    -					
    -						68
    -						
    -						
    -							
    -							
    -						
    -						
    -						messageView
    -					
    -					
    -						21
    -						
    -						
     						messageBackgroundImage
     					
    -					
    -						63
    -						
    -						
    -						messageField
    -					
     					
     						73
     						
     						
     						pictureButton
     					
    -					
    -						82
    -						
    -						
    -						normalView
    -					
     					
     						72
     						
    @@ -910,6 +861,18 @@
     						
     						transfertBackgroundImage
     					
    +					
    +						15
    +						
    +						
    +						sendButton
    +					
    +					
    +						63
    +						
    +						
    +						messageField
    +					
     				
     			
     			
    @@ -919,11 +882,12 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
     				ChatRoomTableViewController
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -932,29 +896,28 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				HPGrowingTextView
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				
    +				
    +				
     			
     			
     			
     			
     			
    -			88
    +			90
     		
     		
     			
    @@ -1014,8 +977,6 @@
     						UIButton
     						UIView
     						UIToggleButton
    -						UIImageView
    -						UIView
     						UIView
     						UIProgressView
     						UITapGestureRecognizer
    @@ -1049,14 +1010,6 @@
     							editButton
     							UIToggleButton
     						
    -						
    -							footerBackgroundImage
    -							UIImageView
    -						
    -						
    -							footerView
    -							UIView
    -						
     						
     							headerView
     							UIView
    @@ -1127,10 +1080,6 @@
     		
     		0
     		IBCocoaTouchFramework
    -		
    -			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    -		
     		YES
     		3
     		
    @@ -1138,15 +1087,20 @@
     			{131, 131}
     			{320, 88}
     			{320, 88}
    -			{640, 117}
    +			{16, 16}
    +			{116, 115}
    +			{116, 115}
     			{320, 88}
     			{320, 88}
    -			{500, 117}
    +			{640, 117}
     			{320, 88}
    -			{140, 117}
    -			{140, 117}
    -			{140, 117}
    -			{5, 117}
    +			{71, 115}
    +			{71, 115}
    +			{71, 115}
    +			{117, 115}
    +			{117, 115}
    +			{117, 115}
    +			{5, 88}
     		
     		933
     	
    diff --git a/Classes/fr.lproj/ChatViewController.xib b/Classes/fr.lproj/ChatViewController.xib
    index ba35e017a..679701ddf 100644
    --- a/Classes/fr.lproj/ChatViewController.xib
    +++ b/Classes/fr.lproj/ChatViewController.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -14,7 +14,6 @@
     			IBUIButton
     			IBUIImageView
     			IBProxyObject
    -			IBUILabel
     			IBUITextField
     			IBUITableViewController
     			IBUITableView
    @@ -49,7 +48,7 @@
     								290
     								{320, 44}
     								
    -								
    +								
     								_NS:9
     								NO
     								IBCocoaTouchFramework
    @@ -63,7 +62,7 @@
     								292
     								{160, 44}
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -73,25 +72,38 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Nouvelle discussion
    +								
    +									2
    +									MCAwIDAAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
     								
    -								
    +								
     									NSImage
     									chat_add_over.png
     								
    -								
    +								
     									NSImage
     									chat_add_default.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									14
     								
    -								
    -									Helvetica-Bold
    -									15
    +								
    +									Helvetica
    +									14
     									16
     								
     							
    @@ -100,7 +112,7 @@
     								289
     								{{160, 0}, {160, 44}}
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -110,21 +122,33 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Ok
    +								Éditer
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
    +								
     								
    -								
    +								
     									NSImage
     									chat_edit_over.png
     								
    -								
    +								
     									NSImage
     									chat_ok_default.png
     								
    -								
    +								
     									NSImage
     									chat_edit_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
    @@ -143,12 +167,12 @@
     					
     						
     						274
    -						{{0, 74}, {320, 378}}
    +						{{0, 79}, {320, 381}}
     						
     						_NS:9
     						
    -							1
    -							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +							3
    +							MQA
     						
     						YES
     						IBCocoaTouchFramework
    @@ -162,6 +186,10 @@
     						0.0
     						0.0
     						1
    +						
    +							2
    +							MC43MjU0OTAyMTI0IDAuNzY4NjI3NDY0OCAwLjc5NjA3ODQ0MzUAA
    +						
     						0
     						YES
     						44
    @@ -171,10 +199,14 @@
     					
     						
     						292
    -						{{24, 44}, {296, 30}}
    +						{{25, 44}, {271, 35}}
     						
     						
     						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
     						NO
     						YES
     						
    @@ -183,6 +215,7 @@
     						IBCocoaTouchFramework
     						0
     						
    +						À:
     						
     							3
     							MAA
    @@ -193,49 +226,26 @@
     						
     							IBCocoaTouchFramework
     						
    +						
    +							NSImage
    +							chat_address.png
    +						
     						1
    -						
    +						
     							1
     							17
     						
    -						
    +						
     							Helvetica
     							17
     							16
     						
     					
    -					
    -						
    -						292
    -						{{0, 44}, {24, 30}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						NO
    -						IBCocoaTouchFramework
    -						À:
    -						
    -							1
    -							MCAwIDAAA
    -						
    -						
    -						0
    -						10
    -						
    -						
    -					
     				
     				{320, 460}
     				
     				_NS:9
    -				
    -					3
    -					MQA
    -					
    -				
    +				
     				IBCocoaTouchFramework
     			
     			
    @@ -366,7 +376,6 @@
     							
     							
     							
    -							
     						
     						
     					
    @@ -411,11 +420,6 @@
     						
     						addressField
     					
    -					
    -						26
    -						
    -						
    -					
     				
     			
     			
    @@ -424,10 +428,10 @@
     				UIResponder
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				ChatTableViewController
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -435,6 +439,7 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     			
     			
    @@ -508,17 +513,18 @@
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
     			{320, 88}
     			{320, 88}
    +			{542, 70}
     			{320, 88}
     			{320, 88}
     			{320, 88}
    -			{5, 117}
    +			{5, 88}
     		
     		933
     	
    diff --git a/Classes/fr.lproj/ContactDetailsLabelViewController.xib b/Classes/fr.lproj/ContactDetailsLabelViewController.xib
    index 15c4fce44..45845b9da 100644
    --- a/Classes/fr.lproj/ContactDetailsLabelViewController.xib
    +++ b/Classes/fr.lproj/ContactDetailsLabelViewController.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -87,25 +87,38 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Retour
    +								
    +									2
    +									MCAwIDAAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
     								
    -								
    +								
     									NSImage
     									contact_back_over.png
     								
    -								
    +								
     									NSImage
     									contact_back_default.png
     								
     								
    -									2
    -									15
    +									1
    +									14
     								
     								
    -									Helvetica-Bold
    -									15
    +									Helvetica
    +									14
     									16
     								
     							
    @@ -181,7 +194,7 @@ AAgACAAIAAEAAQABAAE
     										
     									
     								
    -								
    +								
     									3
     									MCAwAA
     								
    @@ -211,7 +224,7 @@ AAgACAAIAAEAAQABAAE
     				
     				{320, 460}
     				
    -				
    +				
     				IBCocoaTouchFramework
     			
     		
    @@ -335,6 +348,7 @@ AAgACAAIAAEAAQABAAE
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     			
     			
    @@ -381,7 +395,7 @@ AAgACAAIAAEAAQABAAE
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -389,7 +403,7 @@ AAgACAAIAAEAAQABAAE
     			{640, 523}
     			{320, 88}
     			{320, 88}
    -			{5, 117}
    +			{5, 88}
     		
     		933
     	
    diff --git a/Classes/fr.lproj/ContactDetailsViewController.xib b/Classes/fr.lproj/ContactDetailsViewController.xib
    index 6bfa7f648..4c3934262 100644
    --- a/Classes/fr.lproj/ContactDetailsViewController.xib
    +++ b/Classes/fr.lproj/ContactDetailsViewController.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -72,25 +72,34 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Retour
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
     								
    -								
    +								
     									NSImage
     									contact_back_over.png
     								
    -								
    +								
     									NSImage
     									contact_back_default.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									14
     								
    -								
    -									Helvetica-Bold
    -									15
    +								
    +									Helvetica
    +									14
     									16
     								
     							
    @@ -109,17 +118,27 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Annuler
    +								
    +									2
    +									MCAwIDAAA
    +								
    +								
     								
    -								
    +								
     									NSImage
     									contact_cancel_over.png
     								
    -								
    +								
     									NSImage
     									contact_cancel_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -136,21 +155,30 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Ok
    +								Éditer
    +								
    +								
    +								
     								
    -								
    +								
     									NSImage
     									contact_edit_over.png
     								
    -								
    +								
     									NSImage
     									contact_ok_default.png
     								
    -								
    +								
     									NSImage
     									contact_edit_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
    @@ -224,7 +252,7 @@ AAgACAAIAAEAAQABAAE
     										
     									
     								
    -								
    +								
     									3
     									MCAwAA
     								
    @@ -254,7 +282,7 @@ AAgACAAIAAEAAQABAAE
     				
     				{320, 460}
     				
    -				
    +				
     				IBCocoaTouchFramework
     			
     			
    @@ -523,7 +551,8 @@ AAgACAAIAAEAAQABAAE
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIContactDetailsFooter
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -531,8 +560,10 @@ AAgACAAIAAEAAQABAAE
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     			
     			
    @@ -721,7 +752,7 @@ AAgACAAIAAEAAQABAAE
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -733,7 +764,7 @@ AAgACAAIAAEAAQABAAE
     			{320, 88}
     			{320, 88}
     			{320, 88}
    -			{5, 117}
    +			{5, 88}
     		
     		933
     	
    diff --git a/Classes/fr.lproj/ContactsViewController.xib b/Classes/fr.lproj/ContactsViewController.xib
    index cc6c3a6dd..d90d9d8f8 100644
    --- a/Classes/fr.lproj/ContactsViewController.xib
    +++ b/Classes/fr.lproj/ContactsViewController.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -56,76 +56,116 @@
     									toolsbar_background.png
     								
     							
    -							
    +							
     								
    -								289
    -								{{120, 0}, {80, 44}}
    +								293
    +								
    +									
    +										
    +										292
    +										{107, 44}
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Afficher tout les contacts
    +										
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										NO
    +										16
    +										0.0
    +										0.0
    +										0.0
    +										Tous
    +										
    +											2
    +											MC45NzY0NzA2NDkyIDAuOTc2NDcwNjQ5MiAwLjk3NjQ3MDY0OTIAA
    +										
    +										
    +										
    +											2
    +											MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +										
    +										
    +											3
    +											MC41AA
    +										
    +										
    +											NSImage
    +											contacts_all_selected.png
    +										
    +										
    +										
    +											NSImage
    +											contacts_all_default.png
    +										
    +										
    +											1
    +											12
    +										
    +										
    +											Helvetica
    +											12
    +											16
    +										
    +									
    +									
    +										
    +										289
    +										{{107, 0}, {107, 44}}
    +										
    +										
    +										_NS:9
    +										NO
    +										
    +											Afficher les contacts Linphone
    +										
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										NO
    +										16
    +										0.0
    +										0.0
    +										0.0
    +										Linphone
    +										
    +										
    +										
    +										
    +										
    +											NSImage
    +											contacts_linphone_selected.png
    +										
    +										
    +										
    +											NSImage
    +											contacts_linphone_default.png
    +										
    +										
    +										
    +									
    +								
    +								{{106, 0}, {214, 44}}
     								
    -								
    +								
     								_NS:9
    -								NO
    -								
    -									Afficher tout les contacts
    -								
    -								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								
    +								
     									3
    -									MC41AA
    -								
    -								
    -									NSImage
    -									contacts_all_selected.png
    -								
    -								
    -								
    -									NSImage
    -									contacts_all_default.png
    -								
    -								
    -									2
    -									15
    -								
    -								
    -									Helvetica-Bold
    -									15
    -									16
    -								
    -							
    -							
    -								
    -								289
    -								{{200, 0}, {80, 44}}
    -								
    -								
    -								_NS:9
    -								NO
    -								
    -									Afficher les contacts Linphone
    +									MQA
    +									
    +										2
    +									
     								
     								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								
    -								
    -									NSImage
    -									contacts_linphone_selected.png
    -								
    -								
    -								
    -									NSImage
    -									contacts_linphone_default.png
    -								
    -								
    -								
     							
     							
     								
     								292
    -								{80, 44}
    +								{107, 44}
     								
     								
     								_NS:9
    @@ -137,24 +177,44 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Ajouter un contact
    +								
    +									2
    +									MCAwIDAAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
    -								
    +								
     									NSImage
     									contacts_add_over.png
     								
    -								
    +								
     									NSImage
     									contacts_add_default.png
     								
    -								
    -								
    +								
    +									1
    +									14
    +								
    +								
    +									Helvetica
    +									14
    +									16
    +								
     							
     							
     								
     								-2147483356
    -								{80, 44}
    +								{107, 44}
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -164,17 +224,24 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Retour
    +								
    +								
     								
    -								
    +								
     									NSImage
     									contacts_back_over.png
     								
    -								
    +								
     									NSImage
     									contacts_back_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
    @@ -184,9 +251,7 @@
     						
     							3
     							MQA
    -							
    -								2
    -							
    +							
     						
     						IBCocoaTouchFramework
     					
    @@ -197,8 +262,8 @@
     						
     						_NS:10
     						
    -							1
    -							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +							3
    +							MQA
     						
     						YES
     						IBCocoaTouchFramework
    @@ -213,6 +278,10 @@
     						0.0
     						0.0
     						1
    +						
    +							2
    +							MC43MjU0OTAyMTI0IDAuNzY4NjI3NDY0OCAwLjc5NjA3ODQ0MzUAA
    +						
     						0
     						YES
     						44
    @@ -225,8 +294,7 @@
     				_NS:9
     				
     					3
    -					MQA
    -					
    +					MCAwAA
     				
     				IBCocoaTouchFramework
     			
    @@ -251,22 +319,6 @@
     					
     					16
     				
    -				
    -					
    -						allButton
    -						
    -						
    -					
    -					27
    -				
    -				
    -					
    -						linphoneButton
    -						
    -						
    -					
    -					31
    -				
     				
     					
     						tableController
    @@ -299,6 +351,22 @@
     					
     					91
     				
    +				
    +					
    +						allButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						linphoneButton
    +						
    +						
    +					
    +					31
    +				
     				
     					
     						onAllClick:
    @@ -394,25 +462,12 @@
     						
     							
     							
    -							
    -							
     							
    +							
     						
     						
     						toolBar
     					
    -					
    -						4
    -						
    -						
    -						allButton
    -					
    -					
    -						5
    -						
    -						
    -						linphoneButton
    -					
     					
     						6
     						
    @@ -444,6 +499,28 @@
     						
     						background
     					
    +					
    +						93
    +						
    +						
    +							
    +							
    +						
    +						
    +						switchView
    +					
    +					
    +						4
    +						
    +						
    +						allButton
    +					
    +					
    +						5
    +						
    +						
    +						linphoneButton
    +					
     				
     			
     			
    @@ -454,120 +531,48 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				ContactsTableViewController
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     			
     			
     			
     			
     			
    -			92
    -		
    -		
    -			
    -				
    -					ContactsTableViewController
    -					UITableViewController
    -					
    -						IBProjectSource
    -						./Classes/ContactsTableViewController.h
    -					
    -				
    -				
    -					ContactsViewController
    -					UIViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onAddContactClick:
    -							id
    -						
    -						
    -							onAllClick:
    -							id
    -						
    -						
    -							onBackClick:
    -							id
    -						
    -						
    -							onLinphoneClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIButton
    -						UIButton
    -						UIButton
    -						ContactsTableViewController
    -						UITableView
    -					
    -					
    -						
    -							addButton
    -							UIButton
    -						
    -						
    -							allButton
    -							UIButton
    -						
    -						
    -							backButton
    -							UIButton
    -						
    -						
    -							linphoneButton
    -							UIButton
    -						
    -						
    -							tableController
    -							ContactsTableViewController
    -						
    -						
    -							tableView
    -							UITableView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/ContactsViewController.h
    -					
    -				
    -			
    +			93
     		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
    -			{160, 88}
    -			{160, 88}
    -			{213, 117}
    -			{213, 117}
    -			{213, 117}
    -			{213, 117}
    -			{213, 117}
    -			{213, 117}
    -			{5, 117}
    +			{214, 88}
    +			{214, 88}
    +			{213, 88}
    +			{213, 88}
    +			{214, 88}
    +			{214, 88}
    +			{213, 88}
    +			{213, 88}
    +			{5, 88}
     		
     		933
     	
    diff --git a/Classes/fr.lproj/DialerViewController.xib b/Classes/fr.lproj/DialerViewController.xib
    index f112f691d..c0ef305a4 100644
    --- a/Classes/fr.lproj/DialerViewController.xib
    +++ b/Classes/fr.lproj/DialerViewController.xib
    @@ -1362,301 +1362,7 @@
     			
     			254
     		
    -		
    -			
    -				YES
    -				
    -					DialerViewController
    -					UIViewController
    -					
    -						YES
    -						
    -							YES
    -							onAddContactClick:
    -							onAddressChange:
    -							onBackClick:
    -						
    -						
    -							YES
    -							id
    -							id
    -							id
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							onAddContactClick:
    -							onAddressChange:
    -							onBackClick:
    -						
    -						
    -							YES
    -							
    -								onAddContactClick:
    -								id
    -							
    -							
    -								onAddressChange:
    -								id
    -							
    -							
    -								onBackClick:
    -								id
    -							
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							addCallButton
    -							addContactButton
    -							addressField
    -							backButton
    -							callButton
    -							eightButton
    -							eraseButton
    -							fiveButton
    -							fourButton
    -							nineButton
    -							oneButton
    -							sevenButton
    -							sharpButton
    -							sixButton
    -							starButton
    -							threeButton
    -							transferButton
    -							twoButton
    -							zeroButton
    -						
    -						
    -							YES
    -							UICallButton
    -							UIButton
    -							UITextField
    -							UIButton
    -							UICallButton
    -							UIDigitButton
    -							UIEraseButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UIDigitButton
    -							UITransferButton
    -							UIDigitButton
    -							UIDigitButton
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							addCallButton
    -							addContactButton
    -							addressField
    -							backButton
    -							callButton
    -							eightButton
    -							eraseButton
    -							fiveButton
    -							fourButton
    -							nineButton
    -							oneButton
    -							sevenButton
    -							sharpButton
    -							sixButton
    -							starButton
    -							threeButton
    -							transferButton
    -							twoButton
    -							zeroButton
    -						
    -						
    -							YES
    -							
    -								addCallButton
    -								UICallButton
    -							
    -							
    -								addContactButton
    -								UIButton
    -							
    -							
    -								addressField
    -								UITextField
    -							
    -							
    -								backButton
    -								UIButton
    -							
    -							
    -								callButton
    -								UICallButton
    -							
    -							
    -								eightButton
    -								UIDigitButton
    -							
    -							
    -								eraseButton
    -								UIEraseButton
    -							
    -							
    -								fiveButton
    -								UIDigitButton
    -							
    -							
    -								fourButton
    -								UIDigitButton
    -							
    -							
    -								nineButton
    -								UIDigitButton
    -							
    -							
    -								oneButton
    -								UIDigitButton
    -							
    -							
    -								sevenButton
    -								UIDigitButton
    -							
    -							
    -								sharpButton
    -								UIDigitButton
    -							
    -							
    -								sixButton
    -								UIDigitButton
    -							
    -							
    -								starButton
    -								UIDigitButton
    -							
    -							
    -								threeButton
    -								UIDigitButton
    -							
    -							
    -								transferButton
    -								UITransferButton
    -							
    -							
    -								twoButton
    -								UIDigitButton
    -							
    -							
    -								zeroButton
    -								UIDigitButton
    -							
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/DialerViewController.h
    -					
    -				
    -				
    -					UIAddressTextField
    -					UITextField
    -					
    -						IBProjectSource
    -						./Classes/UIAddressTextField.h
    -					
    -				
    -				
    -					UICallButton
    -					UIButton
    -					
    -						addressField
    -						UITextField
    -					
    -					
    -						addressField
    -						
    -							addressField
    -							UITextField
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UICallButton.h
    -					
    -				
    -				
    -					UIDigitButton
    -					UILongTouchButton
    -					
    -						addressField
    -						UITextField
    -					
    -					
    -						addressField
    -						
    -							addressField
    -							UITextField
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UIDigitButton.h
    -					
    -				
    -				
    -					UIEraseButton
    -					UILongTouchButton
    -					
    -						addressField
    -						UITextField
    -					
    -					
    -						addressField
    -						
    -							addressField
    -							UITextField
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UIEraseButton.h
    -					
    -				
    -				
    -					UILongTouchButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UILongTouchButton.h
    -					
    -				
    -				
    -					UITransferButton
    -					UIButton
    -					
    -						addressField
    -						UITextField
    -					
    -					
    -						addressField
    -						
    -							addressField
    -							UITextField
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UITransferButton.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
    @@ -1665,7 +1371,7 @@
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    diff --git a/Classes/fr.lproj/DialerViewController~ipad.xib b/Classes/fr.lproj/DialerViewController~ipad.xib
    index 90e271b5c..fde581ced 100644
    --- a/Classes/fr.lproj/DialerViewController~ipad.xib
    +++ b/Classes/fr.lproj/DialerViewController~ipad.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -37,6 +37,21 @@
     				
     				292
     				
    +					
    +						
    +						301
    +						{{127, 150}, {510, 460}}
    +						
    +						
    +						_NS:9
    +						1
    +						NO
    +						IBIPadFramework
    +						
    +							NSImage
    +							logo_linphone_trame_background.png
    +						
    +					
     					
     						
     						301
    @@ -66,9 +81,9 @@
     					
     						
     						-2147483356
    -						{{0, 77}, {85, 33}}
    +						{{20, 90}, {85, 33}}
     						
    -						
    +						
     						_NS:9
     						NO
     						
    @@ -1126,6 +1141,7 @@
     							
     							
     							
    +							
     						
     						
     					
    @@ -1294,12 +1310,6 @@
     						
     						backspaceButton
     					
    -					
    -						70
    -						
    -						
    -						preview
    -					
     					
     						71
     						
    @@ -1315,9 +1325,22 @@
     					
     						76
     						
    +						
     						
     						backgroundView
     					
    +					
    +						78
    +						
    +						
    +						backgroundImage
    +					
    +					
    +						70
    +						
    +						
    +						preview
    +					
     				
     			
     			
    @@ -1385,6 +1408,7 @@
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIDigitButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
    @@ -1396,7 +1420,7 @@
     			
     			
     			
    -			77
    +			78
     		
     		
     			
    @@ -1658,7 +1682,7 @@
     		IBIPadFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -1680,6 +1704,7 @@
     			{371, 170}
     			{371, 170}
     			{640, 135}
    +			{1019, 920}
     			{220, 113}
     			{220, 113}
     			{220, 113}
    @@ -1704,8 +1729,8 @@
     			{220, 113}
     			{220, 113}
     			{220, 113}
    -			{170, 65}
    -			{170, 65}
    +			{151, 51}
    +			{151, 51}
     			{371, 170}
     			{371, 170}
     			{371, 170}
    diff --git a/Classes/fr.lproj/FirstLoginViewController.xib b/Classes/fr.lproj/FirstLoginViewController.xib
    index b39ab6eb2..31720be7e 100644
    --- a/Classes/fr.lproj/FirstLoginViewController.xib
    +++ b/Classes/fr.lproj/FirstLoginViewController.xib
    @@ -57,9 +57,13 @@
     						0
     						NO
     						S'enregistrer
    +						
    +							2
    +							MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +						
     						
    -							3
    -							MC4zMzMzMzMzMzMzAA
    +							2
    +							MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
     						
     						
     							3
    @@ -423,7 +427,7 @@
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -					
    +					
     					com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				
     			
    @@ -441,104 +445,7 @@
     			
     			66
     		
    -		
    -			
    -				YES
    -				
    -					FirstLoginViewController
    -					UIViewController
    -					
    -						YES
    -						
    -							YES
    -							onLoginClick:
    -							onSiteClick:
    -						
    -						
    -							YES
    -							id
    -							id
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							onLoginClick:
    -							onSiteClick:
    -						
    -						
    -							YES
    -							
    -								onLoginClick:
    -								id
    -							
    -							
    -								onSiteClick:
    -								id
    -							
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							loginButton
    -							passwordField
    -							siteButton
    -							usernameField
    -							waitView
    -						
    -						
    -							YES
    -							UIButton
    -							UITextField
    -							UIButton
    -							UITextField
    -							UIView
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							loginButton
    -							passwordField
    -							siteButton
    -							usernameField
    -							waitView
    -						
    -						
    -							YES
    -							
    -								loginButton
    -								UIButton
    -							
    -							
    -								passwordField
    -								UITextField
    -							
    -							
    -								siteButton
    -								UIButton
    -							
    -							
    -								usernameField
    -								UITextField
    -							
    -							
    -								waitView
    -								UIView
    -							
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/FirstLoginViewController.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
    @@ -547,7 +454,7 @@
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    diff --git a/Classes/fr.lproj/HistoryDetailsViewController.xib b/Classes/fr.lproj/HistoryDetailsViewController.xib
    index a34626363..e518aefd3 100644
    --- a/Classes/fr.lproj/HistoryDetailsViewController.xib
    +++ b/Classes/fr.lproj/HistoryDetailsViewController.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -70,25 +70,38 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Retour
    +								
    +									2
    +									MCAwIDAAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
     								
    -								
    +								
     									NSImage
     									history_details_back_over.png
     								
    -								
    +								
     									NSImage
     									history_details_back_default.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									14
     								
    -								
    -									Helvetica-Bold
    -									15
    +								
    +									Helvetica
    +									14
     									16
     								
     							
    @@ -107,17 +120,24 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Ajouter aux contacts
    +								
    +								
     								
    -								
    +								
     									NSImage
     									history_details_add_over.png
     								
    -								
    +								
     									NSImage
     									history_details_add_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
    @@ -160,8 +180,15 @@
     									MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
     								
     								
    -								
    -								
    +								
    +									2
    +									15
    +								
    +								
    +									Helvetica-Bold
    +									15
    +									16
    +								
     							
     							
     								
    @@ -793,10 +820,12 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     			
     			
    @@ -805,101 +834,12 @@
     			
     			53
     		
    -		
    -			
    -				
    -					HistoryDetailsViewController
    -					UIViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onAddContactClick:
    -							id
    -						
    -						
    -							onAddressClick:
    -							id
    -						
    -						
    -							onBackClick:
    -							id
    -						
    -						
    -							onContactClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIButton
    -						UILabel
    -						UIImageView
    -						UILabel
    -						UILabel
    -						UILabel
    -						UILabel
    -						UILabel
    -						UILabel
    -					
    -					
    -						
    -							addContactButton
    -							UIButton
    -						
    -						
    -							addressButton
    -							UIButton
    -						
    -						
    -							addressLabel
    -							UILabel
    -						
    -						
    -							avatarImage
    -							UIImageView
    -						
    -						
    -							dateHeaderLabel
    -							UILabel
    -						
    -						
    -							dateLabel
    -							UILabel
    -						
    -						
    -							durationHeaderLabel
    -							UILabel
    -						
    -						
    -							durationLabel
    -							UILabel
    -						
    -						
    -							typeHeaderLabel
    -							UILabel
    -						
    -						
    -							typeLabel
    -							UILabel
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/HistoryDetailsViewController.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    @@ -911,8 +851,8 @@
     			{320, 88}
     			{320, 88}
     			{320, 88}
    -			{320, 117}
    -			{5, 117}
    +			{320, 88}
    +			{5, 88}
     		
     		933
     	
    diff --git a/Classes/fr.lproj/HistoryViewController.xib b/Classes/fr.lproj/HistoryViewController.xib
    index a226f3825..93d618a89 100644
    --- a/Classes/fr.lproj/HistoryViewController.xib
    +++ b/Classes/fr.lproj/HistoryViewController.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -58,10 +58,10 @@
     							
     							
     								
    -								-2147483356
    +								292
     								{80, 44}
     								
    -								
    +								
     								_NS:9
     								NO
     								
    @@ -70,83 +70,143 @@
     								IBCocoaTouchFramework
     								0
     								0
    -								Del
    -								
    -									3
    -									MQA
    -								
    -								
    -									1
    +								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Supprimer tout
    +								
    +									2
     									MCAwIDAAA
     								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
     								
    -								
    -									2
    -									15
    +								
    +									NSImage
    +									history_delete_over.png
     								
    -								
    -									Helvetica-Bold
    -									15
    +								
    +									NSImage
    +									history_delete_default.png
    +								
    +								
    +									1
    +									14
    +								
    +								
    +									Helvetica
    +									14
     									16
     								
     							
    -							
    +							
     								
    -								292
    -								{{80, 0}, {80, 44}}
    +								293
    +								
    +									
    +										
    +										292
    +										{80, 44}
    +										
    +										
    +										_NS:9
    +										
    +											2
    +											MC45NzY0NzA2NDkyIDAuOTc2NDcwNjQ5MiAwLjk3NjQ3MDY0OTIAA
    +										
    +										NO
    +										
    +											Afficher tout les contacts
    +										
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										NO
    +										16
    +										0.0
    +										0.0
    +										0.0
    +										Tous
    +										
    +										
    +										
    +										
    +										
    +											NSImage
    +											history_all_selected.png
    +										
    +										
    +										
    +											NSImage
    +											history_all_default.png
    +										
    +										
    +											1
    +											12
    +										
    +										
    +											Helvetica
    +											12
    +											16
    +										
    +									
    +									
    +										
    +										289
    +										{{80, 0}, {80, 44}}
    +										
    +										
    +										_NS:9
    +										
    +										NO
    +										
    +											Afficher les contacts Linphone
    +										
    +										IBCocoaTouchFramework
    +										0
    +										0
    +										NO
    +										16
    +										0.0
    +										0.0
    +										0.0
    +										Manqués
    +										
    +										
    +										
    +										
    +										
    +											NSImage
    +											history_missed_selected.png
    +										
    +										
    +										
    +											NSImage
    +											history_missed_default.png
    +										
    +										
    +										
    +									
    +								
    +								{{80, 0}, {160, 44}}
     								
    -								
    +								
     								_NS:9
    -								NO
    -								
    -									Afficher tout les contacts
    +								
    +									3
    +									MQA
    +									
    +										2
    +									
     								
     								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								
    -								
    -									NSImage
    -									history_all_selected.png
    -								
    -								
    -									NSImage
    -									history_all_default.png
    -								
    -								
    -								
    -							
    -							
    -								
    -								292
    -								{{160, 0}, {80, 44}}
    -								
    -								
    -								_NS:9
    -								NO
    -								
    -									Afficher les contacts Linphone
    -								
    -								IBCocoaTouchFramework
    -								0
    -								0
    -								NO
    -								
    -								
    -									NSImage
    -									history_missed_selected.png
    -								
    -								
    -								
    -									NSImage
    -									history_missed_default.png
    -								
    -								
    -								
     							
     							
     								
    @@ -163,21 +223,29 @@
     								0
     								0
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Ok
    +								Éditer
    +								
    +								
     								
    -								
    +								
     									NSImage
     									history_edit_over.png
     								
    -								
    +								
     									NSImage
     									history_ok_default.png
     								
    -								
    +								
     									NSImage
     									history_edit_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{320, 44}
    @@ -187,9 +255,7 @@
     						
     							3
     							MQA
    -							
    -								2
    -							
    +							
     						
     						IBCocoaTouchFramework
     					
    @@ -200,8 +266,8 @@
     						
     						_NS:9
     						
    -							1
    -							MC45NDExNzY0NzA2IDAuOTY0NzA1ODgyNCAwLjk2NDcwNTg4MjQAA
    +							3
    +							MQA
     						
     						YES
     						IBCocoaTouchFramework
    @@ -215,6 +281,10 @@
     						0.0
     						0.0
     						1
    +						
    +							2
    +							MC43MjU0OTAyMTI0IDAuNzY4NjI3NDY0OCAwLjc5NjA3ODQ0MzUAA
    +						
     						0
     						YES
     						44
    @@ -227,8 +297,7 @@
     				_NS:9
     				
     					3
    -					MQA
    -					
    +					MCAwAA
     				
     				IBCocoaTouchFramework
     			
    @@ -261,22 +330,6 @@
     					
     					26
     				
    -				
    -					
    -						allButton
    -						
    -						
    -					
    -					27
    -				
    -				
    -					
    -						missedButton
    -						
    -						
    -					
    -					28
    -				
     				
     					
     						tableView
    @@ -301,6 +354,22 @@
     					
     					36
     				
    +				
    +					
    +						allButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						missedButton
    +						
    +						
    +					
    +					28
    +				
     				
     					
     						onAllClick:
    @@ -394,27 +463,14 @@
     						3
     						
     						
    -							
    -							
     							
     							
     							
    +							
     						
     						
     						toolsBar
     					
    -					
    -						4
    -						
    -						
    -						allButton
    -					
    -					
    -						5
    -						
    -						
    -						missedButton
    -					
     					
     						6
     						
    @@ -444,7 +500,29 @@
     						35
     						
     						
    -						delAllButton
    +						deleteButton
    +					
    +					
    +						38
    +						
    +						
    +							
    +							
    +						
    +						
    +						switchView
    +					
    +					
    +						4
    +						
    +						
    +						allButton
    +					
    +					
    +						5
    +						
    +						
    +						missedButton
     					
     				
     			
    @@ -460,123 +538,46 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				UIToggleButton
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
     			
     			
     			
     			
     			
    -			37
    -		
    -		
    -			
    -				
    -					HistoryTableViewController
    -					UITableViewController
    -					
    -						IBProjectSource
    -						./Classes/HistoryTableViewController.h
    -					
    -				
    -				
    -					HistoryViewController
    -					UIViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onAllClick:
    -							id
    -						
    -						
    -							onDeleteClick:
    -							id
    -						
    -						
    -							onEditClick:
    -							id
    -						
    -						
    -							onMissedClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIButton
    -						UIToggleButton
    -						UIButton
    -						HistoryTableViewController
    -						UITableView
    -					
    -					
    -						
    -							allButton
    -							UIButton
    -						
    -						
    -							deleteButton
    -							UIButton
    -						
    -						
    -							editButton
    -							UIToggleButton
    -						
    -						
    -							missedButton
    -							UIButton
    -						
    -						
    -							tableController
    -							HistoryTableViewController
    -						
    -						
    -							tableView
    -							UITableView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/HistoryViewController.h
    -					
    -				
    -				
    -					UIToggleButton
    -					UIButton
    -					
    -						IBProjectSource
    -						./Classes/UIToggleButton.h
    -					
    -				
    -			
    +			38
     		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
    -			{213, 117}
    -			{213, 117}
    +			{160, 88}
    +			{160, 88}
    +			{160, 88}
    +			{160, 88}
     			{160, 88}
     			{160, 88}
    -			{213, 117}
    -			{213, 117}
    +			{160, 88}
    +			{160, 88}
     			{160, 88}
    -			{5, 117}
    +			{5, 88}
     		
     		933
     	
    diff --git a/Classes/fr.lproj/ImageViewController.xib b/Classes/fr.lproj/ImageViewController.xib
    index ad5e29808..708556ae8 100644
    --- a/Classes/fr.lproj/ImageViewController.xib
    +++ b/Classes/fr.lproj/ImageViewController.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -84,13 +84,18 @@
     								0
     								NO
     								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Retour
     								
    -									3
    -									MQA
    +									2
    +									MCAwIDAAA
     								
     								
    -									1
    -									MC4xOTYwNzg0MzQ2IDAuMzA5ODAzOTMyOSAwLjUyMTU2ODY1NgA
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
     								
     								
     									3
    @@ -105,12 +110,12 @@
     									image_back_default.png
     								
     								
    -									2
    -									15
    +									1
    +									14
     								
     								
    -									Helvetica-Bold
    -									15
    +									Helvetica
    +									14
     									16
     								
     							
    @@ -234,7 +239,8 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     			
     			
     			
    @@ -242,55 +248,19 @@
     			
     			11
     		
    -		
    -			
    -				
    -					ImageViewController
    -					UIViewController
    -					
    -						onBackClick:
    -						id
    -					
    -					
    -						onBackClick:
    -						
    -							onBackClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIImageView
    -					
    -					
    -						
    -							backButton
    -							UIButton
    -						
    -						
    -							imageView
    -							UIImageView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/ImageViewController.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
     			{320, 88}
     			{320, 88}
    -			{5, 117}
    +			{5, 88}
     		
     		933
     	
    diff --git a/Classes/fr.lproj/InCallViewController.xib b/Classes/fr.lproj/InCallViewController.xib
    index 774bd64f0..e62df6703 100644
    --- a/Classes/fr.lproj/InCallViewController.xib
    +++ b/Classes/fr.lproj/InCallViewController.xib
    @@ -137,7 +137,7 @@
     					
     						
     						-2147483356
    -						{{0, 23}, {85, 33}}
    +						{{20, 40}, {85, 33}}
     						
     						_NS:9
     						NO
    @@ -439,120 +439,7 @@
     			
     			173
     		
    -		
    -			
    -				YES
    -				
    -					InCallTableViewController
    -					UITableViewController
    -					
    -						IBProjectSource
    -						./Classes/InCallTableViewController.h
    -					
    -				
    -				
    -					InCallViewController
    -					UIViewController
    -					
    -						YES
    -						
    -							YES
    -							callTableController
    -							callTableView
    -							testVideoView
    -							videoCameraSwitch
    -							videoGroup
    -							videoPreview
    -							videoView
    -							videoWaitingForFirstImage
    -						
    -						
    -							YES
    -							InCallTableViewController
    -							UITableView
    -							UIView
    -							UICamSwitch
    -							UIView
    -							UIView
    -							UIView
    -							UIActivityIndicatorView
    -						
    -					
    -					
    -						YES
    -						
    -							YES
    -							callTableController
    -							callTableView
    -							testVideoView
    -							videoCameraSwitch
    -							videoGroup
    -							videoPreview
    -							videoView
    -							videoWaitingForFirstImage
    -						
    -						
    -							YES
    -							
    -								callTableController
    -								InCallTableViewController
    -							
    -							
    -								callTableView
    -								UITableView
    -							
    -							
    -								testVideoView
    -								UIView
    -							
    -							
    -								videoCameraSwitch
    -								UICamSwitch
    -							
    -							
    -								videoGroup
    -								UIView
    -							
    -							
    -								videoPreview
    -								UIView
    -							
    -							
    -								videoView
    -								UIView
    -							
    -							
    -								videoWaitingForFirstImage
    -								UIActivityIndicatorView
    -							
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/InCallViewController.h
    -					
    -				
    -				
    -					UICamSwitch
    -					UIButton
    -					
    -						preview
    -						UIView
    -					
    -					
    -						preview
    -						
    -							preview
    -							UIView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/UICamSwitch.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
    @@ -561,7 +448,7 @@
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
    @@ -578,8 +465,8 @@
     			
     			
     				YES
    -				{170, 65}
    -				{170, 65}
    +				{151, 51}
    +				{151, 51}
     			
     		
     		933
    diff --git a/Classes/fr.lproj/IncomingCallViewController.xib b/Classes/fr.lproj/IncomingCallViewController.xib
    index fe841cbf7..ef0b1ed02 100644
    --- a/Classes/fr.lproj/IncomingCallViewController.xib
    +++ b/Classes/fr.lproj/IncomingCallViewController.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -4832,51 +4832,12 @@ AAgAAAAIAAIACAACAAAAAgAAAAEAAQABAAE
     			
     			30
     		
    -		
    -			
    -				
    -					IncomingCallViewController
    -					UIViewController
    -					
    -						id
    -						id
    -					
    -					
    -						
    -							onAcceptClick:
    -							id
    -						
    -						
    -							onDeclineClick:
    -							id
    -						
    -					
    -					
    -						UILabel
    -						UIImageView
    -					
    -					
    -						
    -							addressLabel
    -							UILabel
    -						
    -						
    -							avatarImage
    -							UIImageView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/IncomingCallViewController.h
    -					
    -				
    -			
    -		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
    diff --git a/Classes/fr.lproj/WizardViewController.xib b/Classes/fr.lproj/WizardViewController.xib
    index 93e61e955..f72df4827 100644
    --- a/Classes/fr.lproj/WizardViewController.xib
    +++ b/Classes/fr.lproj/WizardViewController.xib
    @@ -1,7 +1,7 @@
     
     
     	
    -		1296
    +		1536
     		11E53
     		1938
     		1138.47
    @@ -11,14 +11,11 @@
     			933
     		
     		
    -			IBUIView
    -			IBUIImageView
    -			IBUILabel
    -			IBProxyObject
    -			IBUIActivityIndicatorView
    -			IBUITextField
    -			IBUIScrollView
     			IBUIButton
    +			IBUIActivityIndicatorView
    +			IBUIView
    +			IBUIScrollView
    +			IBProxyObject
     		
     		
     			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -42,13 +39,14 @@
     				
     					
     						
    -						268
    +						274
     						{320, 394}
     						
     						
     						_NS:9
     						YES
     						YES
    +						1
     						IBCocoaTouchFramework
     						NO
     						NO
    @@ -65,6 +63,7 @@
     								
     								_NS:9
     								NO
    +								3
     								
     									Annuler
     								
    @@ -73,6 +72,19 @@
     								0
     								NO
     								NO
    +								35
    +								0.0
    +								0.0
    +								0.0
    +								Annuler
    +								
    +									2
    +									MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
     								
     									3
     									MC41AA
    @@ -89,13 +101,13 @@
     									NSImage
     									setup_cancel_default.png
     								
    -								
    -									2
    -									15
    +								
    +									1
    +									14
     								
    -								
    -									Helvetica-Bold
    -									15
    +								
    +									Helvetica
    +									14
     									16
     								
     							
    @@ -107,6 +119,7 @@
     								
     								_NS:9
     								NO
    +								4
     								
     									Démarrer
     								
    @@ -115,6 +128,13 @@
     								0
     								NO
     								NO
    +								35
    +								0.0
    +								10
    +								0.0
    +								Démarrer
    +								
    +								
     								
     								
     									NSImage
    @@ -124,8 +144,8 @@
     									NSImage
     									setup_start_default.png
     								
    -								
    -								
    +								
    +								
     							
     							
     								
    @@ -134,6 +154,7 @@
     								
     								_NS:9
     								NO
    +								5
     								
     									Retour
     								
    @@ -142,6 +163,13 @@
     								0
     								NO
     								NO
    +								35
    +								0.0
    +								10
    +								0.0
    +								Retour
    +								
    +								
     								
     								
     									NSImage
    @@ -155,8 +183,8 @@
     									NSImage
     									setup_back_default.png
     								
    -								
    -								
    +								
    +								
     							
     						
     						{{0, 383}, {320, 77}}
    @@ -167,6 +195,7 @@
     							3
     							MCAwAA
     						
    +						2
     						IBCocoaTouchFramework
     					
     					
    @@ -175,12 +204,13 @@
     						
     							
     								
    -								292
    -								{{141, 212}, {37, 37}}
    +								301
    +								{{142, 211}, {37, 37}}
     								
     								
     								_NS:9
     								NO
    +								7
     								IBCocoaTouchFramework
     								NO
     								YES
    @@ -195,6 +225,7 @@
     							3
     							MSAwLjUAA
     						
    +						6
     						IBCocoaTouchFramework
     					
     				
    @@ -204,844 +235,6 @@
     				
     				IBCocoaTouchFramework
     			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{60, 80}, {201, 129}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Icône de l'assistant de configuration de compte
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -							NSImage
    -							setup_welcome_logo.png
    -						
    -					
    -					
    -						
    -						282
    -						{{40, 290}, {240, 44}}
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						NO
    -						IBCocoaTouchFramework
    -						Cet assistant va vous aider à utiliser votre compte SIP pour vos appels.
    -						
    -							3
    -							MC4zMzMzMzMzMzMzAA
    -						
    -						
    -						0
    -						NO
    -						10
    -						0
    -						1
    -						
    -							1
    -							12
    -						
    -						
    -							Helvetica
    -							12
    -							16
    -						
    -					
    -				
    -				{320, 394}
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{31, 50}, {258, 24}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Assistant de configuration de compte
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -							NSImage
    -							setup_title_assistant.png
    -						
    -					
    -					
    -						
    -						319
    -						{{33, 141}, {255, 50}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Créer un compte linphone.org
    -							
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						Crée un compte linphone.org
    -						
    -						
    -						
    -							NSImage
    -							button_background_over.png
    -						
    -						
    -							NSImage
    -							button_background_default.png
    -						
    -						
    -							2
    -							13
    -						
    -						
    -							Helvetica-Bold
    -							13
    -							16
    -						
    -					
    -					
    -						
    -						319
    -						{{33, 205}, {255, 50}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							S'enregistrer sur un compte linphone.org
    -							
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						J'ai déjà un compte linphone.org
    -						
    -						
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{33, 269}, {255, 50}}
    -						
    -						_NS:9
    -						NO
    -						
    -							S'enregistrer sur un compte SIP
    -							
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						J'ai déjà un compte SIP
    -						
    -						
    -						
    -						
    -						
    -						
    -					
    -				
    -				{320, 394}
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{31, 50}, {258, 24}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Assistant de configuration de compte
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -					
    -					
    -						
    -						298
    -						{{39, 80}, {240, 44}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						200
    -						NO
    -						IBCocoaTouchFramework
    -						Entrer votre nom d'utilisateur, votre mot de passe ainsi que votre addresse email
    -						
    -						
    -						0
    -						NO
    -						10
    -						0
    -						1
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{32, 140}, {255, 31}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						100
    -						
    -							Nom d'utilisateur
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Nom d'utilisateur
    -						
    -							3
    -							MAA
    -							
    -								2
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -							NSImage
    -							field_background.png
    -						
    -						
    -							1
    -							14
    -						
    -						
    -							Helvetica
    -							14
    -							16
    -						
    -					
    -					
    -						
    -						319
    -						{{32, 185}, {255, 31}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						101
    -						
    -							Mot de passe
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Mot de passe
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							YES
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{32, 230}, {255, 31}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						102
    -						
    -							Mot de passe à nouveau
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Mot de passe
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							YES
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{32, 275}, {255, 31}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						103
    -						
    -							Email
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Email
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						287
    -						{{33, 330}, {255, 50}}
    -						
    -						_NS:9
    -						NO
    -						
    -							Créer
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						S'enregistrer
    -						
    -						
    -						
    -						
    -						
    -							2
    -							20
    -						
    -						
    -							Helvetica-Bold
    -							20
    -							16
    -						
    -					
    -				
    -				{320, 394}
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{31, 50}, {258, 24}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Assistant de configuration de compte
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -					
    -					
    -						
    -						298
    -						{{40, 80}, {240, 44}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						200
    -						NO
    -						IBCocoaTouchFramework
    -						Entrez le nom d'utilisateur et le mot de passe de votre compte linphone.org
    -						
    -						
    -						0
    -						NO
    -						10
    -						0
    -						1
    -						
    -						
    -					
    -					
    -						
    -						287
    -						{{32, 330}, {255, 50}}
    -						
    -						_NS:9
    -						NO
    -						
    -							S'enregistrer
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						S'enregistrer
    -						
    -						
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{32, 185}, {255, 31}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						101
    -						
    -							Mot de passe
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Mot de passe
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							YES
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{32, 140}, {255, 31}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						100
    -						
    -							Nom d'utilisateur
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Nom d'utilisateur
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -				
    -				{320, 394}
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{31, 50}, {258, 24}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Assistant de configuration de compte
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -					
    -					
    -						
    -						298
    -						{{40, 80}, {240, 44}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						200
    -						NO
    -						IBCocoaTouchFramework
    -						Entrez votre nom d'utilisateur, votre mot de passe ainsi que votre domaine SIP
    -						
    -						
    -						0
    -						NO
    -						10
    -						0
    -						1
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{33, 140}, {255, 31}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						100
    -						
    -							Nom d'utilisateur
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Nom d'utilisateur
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{33, 185}, {255, 31}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						101
    -						
    -							Mot de passe
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Mot de passe
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							YES
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						319
    -						{{33, 230}, {255, 31}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						104
    -						
    -							Domaine
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Domaine
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						287
    -						{{34, 330}, {255, 50}}
    -						
    -						_NS:9
    -						NO
    -						
    -							S'enregistrer
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						S'enregistrer
    -						
    -						
    -						
    -						
    -						
    -						
    -					
    -				
    -				{320, 394}
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
    -			
    -				
    -				274
    -				
    -					
    -						
    -						311
    -						{{31, 50}, {258, 24}}
    -						
    -						
    -						_NS:9
    -						NO
    -						
    -							Assistant de configuration de compte
    -							
    -						
    -						IBCocoaTouchFramework
    -						
    -					
    -					
    -						
    -						298
    -						{{40, 80}, {240, 44}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						7
    -						200
    -						NO
    -						IBCocoaTouchFramework
    -						Votre compte est crée. Vérifier vos emails pour valider votre compte.
    -						
    -						
    -						0
    -						NO
    -						10
    -						0
    -						1
    -						
    -						
    -					
    -					
    -						
    -						287
    -						{{32, 330}, {255, 50}}
    -						
    -						_NS:9
    -						NO
    -						
    -							Vérifier la validation
    -						
    -						IBCocoaTouchFramework
    -						0
    -						0
    -						NO
    -						Verifiez la validation
    -						
    -						
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						-2147483329
    -						{{32, 185}, {255, 31}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						101
    -						
    -							
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Mot de passe
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							YES
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -					
    -						
    -						-2147483329
    -						{{32, 140}, {255, 31}}
    -						
    -						
    -						_NS:9
    -						NO
    -						YES
    -						100
    -						
    -							
    -						
    -						IBCocoaTouchFramework
    -						0
    -						
    -						Nom d'utilisateur
    -						
    -							3
    -							MAA
    -							
    -						
    -						YES
    -						17
    -						
    -							1
    -							IBCocoaTouchFramework
    -						
    -						
    -						
    -						
    -					
    -				
    -				{320, 394}
    -				
    -				_NS:9
    -				
    -				IBCocoaTouchFramework
    -			
     		
     		
     			
    @@ -1071,43 +264,11 @@
     				
     				
     					
    -						welcomeView
    +						contentView
     						
    -						
    +						
     					
    -					28
    -				
    -				
    -					
    -						choiceView
    -						
    -						
    -					
    -					40
    -				
    -				
    -					
    -						createAccountView
    -						
    -						
    -					
    -					70
    -				
    -				
    -					
    -						connectAccountView
    -						
    -						
    -					
    -					71
    -				
    -				
    -					
    -						externalAccountView
    -						
    -						
    -					
    -					72
    +					99
     				
     				
     					
    @@ -1119,19 +280,11 @@
     				
     				
     					
    -						contentView
    +						portraitView
     						
    -						
    +						
     					
    -					99
    -				
    -				
    -					
    -						validateAccountView
    -						
    -						
    -					
    -					112
    +					117
     				
     				
     					
    @@ -1160,157 +313,6 @@
     					
     					24
     				
    -				
    -					
    -						onCreateAccountClick:
    -						
    -						
    -						7
    -					
    -					42
    -				
    -				
    -					
    -						onConnectAccountClick:
    -						
    -						
    -						7
    -					
    -					41
    -				
    -				
    -					
    -						onExternalAccountClick:
    -						
    -						
    -						7
    -					
    -					43
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					86
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					87
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					88
    -				
    -				
    -					
    -						onSignInExternalClick:
    -						
    -						
    -						7
    -					
    -					115
    -				
    -				
    -					
    -						onSignInClick:
    -						
    -						
    -						7
    -					
    -					116
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					85
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					81
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					80
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					82
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					83
    -				
    -				
    -					
    -						onRegisterClick:
    -						
    -						
    -						7
    -					
    -					113
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					84
    -				
    -				
    -					
    -						onCheckValidationClick:
    -						
    -						
    -						7
    -					
    -					114
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					109
    -				
    -				
    -					
    -						delegate
    -						
    -						
    -					
    -					110
    -				
     			
     			
     				
    @@ -1336,11 +338,17 @@
     						
     						
     							
    -							
     							
    +							
     						
     						
     					
    +					
    +						98
    +						
    +						
    +						contentView
    +					
     					
     						14
     						
    @@ -1352,6 +360,12 @@
     						
     						tabBar
     					
    +					
    +						18
    +						
    +						
    +						cancelButton
    +					
     					
     						16
     						
    @@ -1364,220 +378,6 @@
     						
     						backButton
     					
    -					
    -						18
    -						
    -						
    -						cancelButton
    -					
    -					
    -						21
    -						
    -						
    -							
    -							
    -						
    -						
    -						welcomeView
    -					
    -					
    -						19
    -						
    -						
    -						iconImage
    -					
    -					
    -						22
    -						
    -						
    -						label
    -					
    -					
    -						33
    -						
    -						
    -							
    -							
    -							
    -							
    -						
    -						
    -						choiceView
    -					
    -					
    -						37
    -						
    -						
    -						titleImage
    -					
    -					
    -						44
    -						
    -						
    -							
    -							
    -							
    -							
    -							
    -							
    -							
    -						
    -						
    -						createAccountView
    -					
    -					
    -						48
    -						
    -						
    -						titleImage
    -					
    -					
    -						52
    -						
    -						
    -							
    -							
    -							
    -							
    -							
    -						
    -						
    -						connectAccountView
    -					
    -					
    -						53
    -						
    -						
    -						titleImage
    -					
    -					
    -						56
    -						
    -						
    -							
    -							
    -							
    -							
    -							
    -							
    -						
    -						
    -						externalAccountView
    -					
    -					
    -						57
    -						
    -						
    -						titleImage
    -					
    -					
    -						58
    -						
    -						
    -						label
    -					
    -					
    -						59
    -						
    -						
    -						usernameField
    -					
    -					
    -						60
    -						
    -						
    -						passwordField
    -					
    -					
    -						61
    -						
    -						
    -						domainField
    -					
    -					
    -						62
    -						
    -						
    -						signInButton
    -					
    -					
    -						64
    -						
    -						
    -						signInButton
    -					
    -					
    -						66
    -						
    -						
    -						passwordField
    -					
    -					
    -						67
    -						
    -						
    -						label
    -					
    -					
    -						68
    -						
    -						
    -						usernameField
    -					
    -					
    -						73
    -						
    -						
    -						label
    -					
    -					
    -						74
    -						
    -						
    -						usernameField
    -					
    -					
    -						75
    -						
    -						
    -						passwordField
    -					
    -					
    -						76
    -						
    -						
    -						password2Field
    -					
    -					
    -						77
    -						
    -						
    -						registerButton
    -					
    -					
    -						79
    -						
    -						
    -						emailField
    -					
    -					
    -						39
    -						
    -						
    -						externalAccountButton
    -					
    -					
    -						38
    -						
    -						
    -						connectAccountButton
    -					
    -					
    -						36
    -						
    -						
    -						createAccountButton
    -					
     					
     						91
     						
    @@ -1593,55 +393,6 @@
     						
     						activityIndicatorView
     					
    -					
    -						98
    -						
    -						
    -						contentView
    -					
    -					
    -						101
    -						
    -						
    -							
    -							
    -							
    -							
    -							
    -						
    -						
    -						validateAccountView
    -					
    -					
    -						103
    -						
    -						
    -						checkValidationButton
    -					
    -					
    -						105
    -						
    -						
    -						label
    -					
    -					
    -						107
    -						
    -						
    -						titleImage
    -					
    -					
    -						104
    -						
    -						
    -						usernameField
    -					
    -					
    -						106
    -						
    -						
    -						passwordField
    -					
     				
     			
     			
    @@ -1649,56 +400,17 @@
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				UIResponder
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    +				
    +				
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
     				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    -				
    -				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
     				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    @@ -1707,140 +419,18 @@
     			
     			
     			
    -			116
    -		
    -		
    -			
    -				
    -					WizardViewController
    -					UIViewController
    -					
    -						id
    -						id
    -						id
    -						id
    -						id
    -						id
    -						id
    -						id
    -						id
    -						id
    -					
    -					
    -						
    -							onBackClick:
    -							id
    -						
    -						
    -							onCancelClick:
    -							id
    -						
    -						
    -							onCheckValidationClick:
    -							id
    -						
    -						
    -							onConnectAccountClick:
    -							id
    -						
    -						
    -							onCreateAccountClick:
    -							id
    -						
    -						
    -							onExternalAccountClick:
    -							id
    -						
    -						
    -							onRegisterClick:
    -							id
    -						
    -						
    -							onSignInClick:
    -							id
    -						
    -						
    -							onSignInExternalClick:
    -							id
    -						
    -						
    -							onStartClick:
    -							id
    -						
    -					
    -					
    -						UIButton
    -						UIView
    -						UIView
    -						UIScrollView
    -						UIView
    -						UIView
    -						UIButton
    -						UIView
    -						UIView
    -						UIView
    -					
    -					
    -						
    -							backButton
    -							UIButton
    -						
    -						
    -							choiceView
    -							UIView
    -						
    -						
    -							connectAccountView
    -							UIView
    -						
    -						
    -							contentView
    -							UIScrollView
    -						
    -						
    -							createAccountView
    -							UIView
    -						
    -						
    -							externalAccountView
    -							UIView
    -						
    -						
    -							startButton
    -							UIButton
    -						
    -						
    -							validateAccountView
    -							UIView
    -						
    -						
    -							waitView
    -							UIView
    -						
    -						
    -							welcomeView
    -							UIView
    -						
    -					
    -					
    -						IBProjectSource
    -						./Classes/WizardViewController.h
    -					
    -				
    -			
    +			117
     		
    +		
     		0
     		IBCocoaTouchFramework
     		
     			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    -			
    +			
     		
     		YES
     		3
     		
    -			{550, 101}
    -			{550, 101}
    -			{542, 88}
     			{320, 154}
     			{320, 154}
     			{320, 154}
    @@ -1849,8 +439,6 @@
     			{320, 154}
     			{320, 154}
     			{320, 154}
    -			{516, 48}
    -			{402, 258}
     		
     		933
     	
    diff --git a/Classes/fr.lproj/WizardViewController~ipad.xib b/Classes/fr.lproj/WizardViewController~ipad.xib
    new file mode 100644
    index 000000000..97bad9d75
    --- /dev/null
    +++ b/Classes/fr.lproj/WizardViewController~ipad.xib
    @@ -0,0 +1,797 @@
    +
    +
    +	
    +		1536
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUIButton
    +			IBUIActivityIndicatorView
    +			IBUIView
    +			IBUIScrollView
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						274
    +						{768, 966}
    +						
    +						
    +						_NS:9
    +						YES
    +						YES
    +						1
    +						IBCocoaTouchFramework
    +						NO
    +						NO
    +					
    +					
    +						
    +						266
    +						
    +							
    +								
    +								290
    +								{{0, 77}, {768, 2000}}
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								294
    +								{384, 77}
    +								
    +								
    +								_NS:9
    +								NO
    +								3
    +								
    +									Annuler
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Annuler
    +								
    +									2
    +									MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
    +								
    +									3
    +									MC41AA
    +								
    +								
    +									NSImage
    +									setup_cancel_over~ipad.png
    +								
    +								
    +									NSImage
    +									setup_cancel_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									setup_cancel_default~ipad.png
    +								
    +								
    +									1
    +									14
    +								
    +								
    +									Helvetica
    +									14
    +									16
    +								
    +							
    +							
    +								
    +								291
    +								{{384, 0}, {384, 77}}
    +								
    +								
    +								_NS:9
    +								NO
    +								4
    +								
    +									Démarrer
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								54
    +								0.0
    +								Démarrer
    +								
    +								
    +								
    +								
    +									NSImage
    +									setup_start_over~ipad.png
    +								
    +								
    +									NSImage
    +									setup_start_default~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483357
    +								{{384, 0}, {384, 77}}
    +								
    +								
    +								_NS:9
    +								NO
    +								5
    +								
    +									Retour
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								54
    +								0.0
    +								Retour
    +								
    +								
    +								
    +								
    +									NSImage
    +									setup_back_over~ipad.png
    +								
    +								
    +									NSImage
    +									setup_back_disabled~ipad.png
    +								
    +								
    +									NSImage
    +									setup_back_default~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 947}, {768, 77}}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MCAwAA
    +						
    +						2
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						-2147483374
    +						
    +							
    +								
    +								301
    +								{{366, 492}, {37, 37}}
    +								
    +								
    +								_NS:9
    +								NO
    +								7
    +								IBCocoaTouchFramework
    +								NO
    +								YES
    +								0
    +							
    +						
    +						{768, 1024}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwLjUAA
    +						
    +						6
    +						IBCocoaTouchFramework
    +					
    +				
    +				{768, 1024}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				292
    +				
    +					
    +						
    +						274
    +						{1024, 711}
    +						
    +						
    +						_NS:9
    +						YES
    +						YES
    +						1
    +						IBCocoaTouchFramework
    +						NO
    +						NO
    +					
    +					
    +						
    +						266
    +						
    +							
    +								
    +								290
    +								{{0, 77}, {1024, 2000}}
    +								
    +								_NS:9
    +								
    +									1
    +									MC4xNDkwMTk2MDc4IDAuMTY0NzA1ODgyNCAwLjE4MDM5MjE1NjkAA
    +								
    +								28
    +								IBCocoaTouchFramework
    +							
    +							
    +								
    +								294
    +								{512, 77}
    +								
    +								
    +								_NS:9
    +								NO
    +								3
    +								
    +									Annuler
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								0.0
    +								0.0
    +								Annuler
    +								
    +									2
    +									MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +								
    +								
    +									2
    +									MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +								
    +								
    +								
    +									NSImage
    +									setup_cancel_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									setup_cancel_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									setup_cancel_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								291
    +								{{512, 0}, {512, 77}}
    +								
    +								
    +								_NS:9
    +								NO
    +								4
    +								
    +									Démarrer
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								16
    +								0.0
    +								Démarrer
    +								
    +								
    +								
    +								
    +									NSImage
    +									setup_start_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									setup_start_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +							
    +								
    +								-2147483357
    +								{{512, 0}, {512, 77}}
    +								
    +								
    +								_NS:9
    +								NO
    +								5
    +								
    +									Retour
    +								
    +								IBCocoaTouchFramework
    +								0
    +								0
    +								NO
    +								NO
    +								18
    +								0.0
    +								16
    +								0.0
    +								Retour
    +								
    +								
    +								
    +								
    +									NSImage
    +									setup_back_over_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									setup_back_disabled_landscape~ipad.png
    +								
    +								
    +									NSImage
    +									setup_back_default_landscape~ipad.png
    +								
    +								
    +								
    +							
    +						
    +						{{0, 691}, {1024, 77}}
    +						
    +						
    +						_NS:9
    +						
    +						2
    +						IBCocoaTouchFramework
    +					
    +					
    +						
    +						-2147483374
    +						
    +							
    +								
    +								301
    +								{{494, 364}, {37, 37}}
    +								
    +								
    +								_NS:9
    +								NO
    +								7
    +								IBCocoaTouchFramework
    +								NO
    +								YES
    +								0
    +							
    +						
    +						{1024, 768}
    +						
    +						
    +						_NS:9
    +						
    +							3
    +							MSAwLjUAA
    +						
    +						6
    +						IBCocoaTouchFramework
    +					
    +				
    +				{1024, 768}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						view
    +						
    +						
    +					
    +					20
    +				
    +				
    +					
    +						startButton
    +						
    +						
    +					
    +					26
    +				
    +				
    +					
    +						backButton
    +						
    +						
    +					
    +					27
    +				
    +				
    +					
    +						contentView
    +						
    +						
    +					
    +					99
    +				
    +				
    +					
    +						portraitView
    +						
    +						
    +					
    +					117
    +				
    +				
    +					
    +						waitView
    +						
    +						
    +					
    +					131
    +				
    +				
    +					
    +						landscapeView
    +						
    +						
    +					
    +					134
    +				
    +				
    +					
    +						onStartClick:
    +						
    +						
    +						7
    +					
    +					25
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					23
    +				
    +				
    +					
    +						onCancelClick:
    +						
    +						
    +						7
    +					
    +					24
    +				
    +				
    +					
    +						onCancelClick:
    +						
    +						
    +						7
    +					
    +					128
    +				
    +				
    +					
    +						onStartClick:
    +						
    +						
    +						7
    +					
    +					126
    +				
    +				
    +					
    +						onBackClick:
    +						
    +						
    +						7
    +					
    +					127
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						12
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						Portrait View
    +					
    +					
    +						98
    +						
    +						
    +						contentView
    +					
    +					
    +						14
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						tabBar
    +					
    +					
    +						18
    +						
    +						
    +						cancelButton
    +					
    +					
    +						16
    +						
    +						
    +						startButton
    +					
    +					
    +						17
    +						
    +						
    +						backButton
    +					
    +					
    +						118
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						Landscape View
    +					
    +					
    +						119
    +						
    +						
    +						contentView
    +					
    +					
    +						120
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						tabBar
    +					
    +					
    +						122
    +						
    +						
    +						cancelButton
    +					
    +					
    +						123
    +						
    +						
    +						startButton
    +					
    +					
    +						124
    +						
    +						
    +						backButton
    +					
    +					
    +						129
    +						
    +						
    +							
    +						
    +						
    +						waitView
    +					
    +					
    +						130
    +						
    +						
    +						activityIndicatorView
    +					
    +					
    +						132
    +						
    +						
    +							
    +						
    +						
    +						waitView
    +					
    +					
    +						133
    +						
    +						
    +						activityIndicatorView
    +					
    +					
    +						137
    +						
    +						
    +						background
    +					
    +					
    +						136
    +						
    +						
    +						background
    +					
    +				
    +			
    +			
    +				WizardViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			137
    +		
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +			{1024, 171}
    +			{768, 153}
    +		
    +		933
    +	
    +
    diff --git a/Classes/fr.lproj/WizardViews.xib b/Classes/fr.lproj/WizardViews.xib
    new file mode 100644
    index 000000000..5075b9f5e
    --- /dev/null
    +++ b/Classes/fr.lproj/WizardViews.xib
    @@ -0,0 +1,1667 @@
    +
    +
    +	
    +		1536
    +		11E53
    +		1938
    +		1138.47
    +		569.00
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			933
    +		
    +		
    +			IBUITextField
    +			IBUIButton
    +			IBUIImageView
    +			IBUIView
    +			IBUILabel
    +			IBProxyObject
    +		
    +		
    +			com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +		
    +		
    +			PluginDependencyRecalculationVersion
    +			
    +		
    +		
    +			
    +				IBFilesOwner
    +				IBCocoaTouchFramework
    +			
    +			
    +				IBFirstResponder
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{60, 80}, {201, 129}}
    +						
    +						
    +						_NS:9
    +						1
    +						NO
    +						
    +							Icône de l'assistant de configuration de compte
    +							
    +						
    +						IBCocoaTouchFramework
    +						
    +							NSImage
    +							setup_welcome_logo.png
    +						
    +					
    +					
    +						
    +						311
    +						{{31, 230}, {258, 40}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						
    +							Assistant de configuration de compte
    +						
    +						IBCocoaTouchFramework
    +						Assistant de configuration de compte
    +						
    +							1
    +							MCAwIDAAA
    +						
    +						
    +						
    +							3
    +							MC4zMzMzMzMzMzMzAA
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +							3
    +							20
    +						
    +						
    +							Helvetica-Oblique
    +							20
    +							16
    +						
    +					
    +					
    +						
    +						282
    +						{{40, 290}, {240, 44}}
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						IBCocoaTouchFramework
    +						Cet assistant va vous aider à utiliser votre compte SIP pour vos appels.
    +						
    +						
    +						0
    +						NO
    +						10
    +						0
    +						1
    +						
    +							1
    +							12
    +						
    +						
    +							Helvetica
    +							12
    +							16
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +					3
    +					MCAwAA
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 34}, {258, 40}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						
    +							Assistant de configuration de compte
    +						
    +						IBCocoaTouchFramework
    +						Assistant de configuration de compte
    +						
    +						
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 141}, {255, 50}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							Créer un compte linphone.org
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Créer un compte sur linphone.org
    +						
    +							2
    +							MC43MjU0OTAxOTYxIDAuNzY4NjI3NDUxIDAuNzk2MDc4NDMxNAA
    +						
    +						
    +							2
    +							MC4zNTY4NjI3NDUxIDAuMzk2MDc4NDMxNCAwLjQzNTI5NDExNzYAA
    +						
    +						
    +							3
    +							MC41AA
    +						
    +						
    +							NSImage
    +							button_background_over.png
    +						
    +						
    +							NSImage
    +							button_background_default.png
    +						
    +						
    +							2
    +							13
    +						
    +						
    +							Helvetica-Bold
    +							13
    +							16
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 205}, {255, 50}}
    +						
    +						
    +						_NS:9
    +						NO
    +						
    +							S'enregistrer sur un compte linphone.org
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						J'ai déjà un compte linphone.org
    +						
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 269}, {255, 50}}
    +						
    +						_NS:9
    +						NO
    +						
    +							S'enregistrer sur un compte SIP
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						J'ai déjà un compte SIP
    +						
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 34}, {258, 40}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						
    +							Assistant de configuration de compte
    +						
    +						IBCocoaTouchFramework
    +						Assistant de configuration de compte
    +						
    +						
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +						
    +					
    +					
    +						
    +						298
    +						{{39, 80}, {240, 44}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Entrez votre nom d'utilsateur, votre mot de passe ainsi que votre adresse email.
    +						
    +						
    +						0
    +						NO
    +						10
    +						0
    +						1
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 140}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							Nom d'utilisateur
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Nom d'utilisateur
    +						
    +							3
    +							MAA
    +							
    +								2
    +							
    +						
    +						10
    +						
    +							1
    +							IBCocoaTouchFramework
    +						
    +						
    +							NSImage
    +							field_background.png
    +						
    +						
    +							1
    +							14
    +						
    +						
    +							Helvetica
    +							14
    +							16
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 185}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							Mot de passe
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Mot de passe
    +						
    +							3
    +							MAA
    +							
    +						
    +						10
    +						
    +							1
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 230}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						102
    +						
    +							Mot de passe à nouveau
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Mot de passe
    +						
    +							3
    +							MAA
    +							
    +						
    +						10
    +						
    +							1
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 275}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						103
    +						
    +							Email
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Email
    +						
    +							3
    +							MAA
    +							
    +						
    +						10
    +						
    +							1
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						287
    +						{{33, 330}, {255, 50}}
    +						
    +						_NS:9
    +						NO
    +						
    +							S'enregistrer
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						S'enregistrer
    +						
    +						
    +						
    +						
    +						
    +						
    +							2
    +							20
    +						
    +						
    +							Helvetica-Bold
    +							20
    +							16
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 34}, {258, 40}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						
    +							Assistant de configuration de compte
    +						
    +						IBCocoaTouchFramework
    +						Assistant de configuration de compte
    +						
    +						
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +						
    +					
    +					
    +						
    +						298
    +						{{40, 80}, {240, 44}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Entrez votre nom d'utilisateur et votre mot de passe de votre compte linphone.org.
    +						
    +						
    +						0
    +						NO
    +						10
    +						0
    +						1
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 185}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							Mot de passe
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Mot de passe
    +						
    +							3
    +							MAA
    +							
    +						
    +						10
    +						
    +							1
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{32, 140}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							Nom d'utilisateur
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Nom d'utilisateur
    +						
    +							3
    +							MAA
    +							
    +						
    +						10
    +						
    +							1
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						287
    +						{{32, 330}, {255, 50}}
    +						
    +						_NS:9
    +						NO
    +						
    +							S'enregistrer
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						S'enregistrer
    +						
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 34}, {258, 40}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						
    +							Assistant de configuration de compte
    +						
    +						IBCocoaTouchFramework
    +						Assistant de configuration de compte
    +						
    +						
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +						
    +					
    +					
    +						
    +						298
    +						{{40, 80}, {240, 44}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Entrez votre nom d'utilisateur, votre mot de passe ainsi que votre domaine SIP.
    +						
    +						
    +						0
    +						NO
    +						10
    +						0
    +						1
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 140}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							Nom d'utilisateur
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Nom d'utilisateur
    +						
    +							3
    +							MAA
    +							
    +						
    +						10
    +						
    +							1
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 185}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							Mot de passe
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Mot de passe
    +						
    +							3
    +							MAA
    +							
    +						
    +						10
    +						
    +							1
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						319
    +						{{33, 230}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						104
    +						
    +							Domaine
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Domaine
    +						
    +							3
    +							MAA
    +							
    +						
    +						10
    +						
    +							1
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						287
    +						{{34, 330}, {255, 50}}
    +						
    +						_NS:9
    +						NO
    +						
    +							S'enregistrer
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						S'enregistrer
    +						
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +			
    +				
    +				274
    +				
    +					
    +						
    +						311
    +						{{31, 34}, {258, 40}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						NO
    +						
    +							Assistant de configuration de compte
    +						
    +						IBCocoaTouchFramework
    +						Assistant de configuration de compte
    +						
    +						
    +						
    +						{-1, -1}
    +						0
    +						10
    +						1
    +						
    +						
    +					
    +					
    +						
    +						298
    +						{{40, 80}, {240, 44}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						7
    +						200
    +						NO
    +						IBCocoaTouchFramework
    +						Votre compte est crée. Vérifier vos emails pour valider votre compte.
    +						
    +						
    +						0
    +						NO
    +						10
    +						0
    +						1
    +						
    +						
    +					
    +					
    +						
    +						-2147483329
    +						{{32, 185}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						101
    +						
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Mot de passe
    +						
    +							3
    +							MAA
    +							
    +						
    +						10
    +						
    +							1
    +							YES
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						-2147483329
    +						{{32, 140}, {255, 31}}
    +						
    +						
    +						_NS:9
    +						NO
    +						YES
    +						100
    +						
    +							
    +						
    +						IBCocoaTouchFramework
    +						0
    +						
    +						Nom d'utilisateur
    +						
    +							3
    +							MAA
    +							
    +						
    +						10
    +						
    +							1
    +							IBCocoaTouchFramework
    +						
    +						
    +						
    +						
    +					
    +					
    +						
    +						287
    +						{{32, 330}, {255, 50}}
    +						
    +						_NS:9
    +						NO
    +						
    +							Vérifier la validation
    +						
    +						IBCocoaTouchFramework
    +						0
    +						0
    +						NO
    +						Vérifier la validation
    +						
    +						
    +						
    +						
    +						
    +						
    +						
    +					
    +				
    +				{320, 394}
    +				
    +				_NS:9
    +				
    +				IBCocoaTouchFramework
    +			
    +		
    +		
    +			
    +				
    +					
    +						welcomeView
    +						
    +						
    +					
    +					28
    +				
    +				
    +					
    +						choiceView
    +						
    +						
    +					
    +					40
    +				
    +				
    +					
    +						createAccountView
    +						
    +						
    +					
    +					70
    +				
    +				
    +					
    +						connectAccountView
    +						
    +						
    +					
    +					71
    +				
    +				
    +					
    +						externalAccountView
    +						
    +						
    +					
    +					72
    +				
    +				
    +					
    +						validateAccountView
    +						
    +						
    +					
    +					112
    +				
    +				
    +					
    +						onCreateAccountClick:
    +						
    +						
    +						7
    +					
    +					42
    +				
    +				
    +					
    +						onConnectAccountClick:
    +						
    +						
    +						7
    +					
    +					41
    +				
    +				
    +					
    +						onExternalAccountClick:
    +						
    +						
    +						7
    +					
    +					43
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					86
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					87
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					88
    +				
    +				
    +					
    +						onSignInExternalClick:
    +						
    +						
    +						7
    +					
    +					115
    +				
    +				
    +					
    +						onSignInClick:
    +						
    +						
    +						7
    +					
    +					116
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					85
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					81
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					80
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					82
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					83
    +				
    +				
    +					
    +						onRegisterClick:
    +						
    +						
    +						7
    +					
    +					113
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					84
    +				
    +				
    +					
    +						onCheckValidationClick:
    +						
    +						
    +						7
    +					
    +					114
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					109
    +				
    +				
    +					
    +						delegate
    +						
    +						
    +					
    +					110
    +				
    +			
    +			
    +				
    +					
    +						0
    +						
    +						
    +						
    +					
    +					
    +						-1
    +						
    +						
    +						File's Owner
    +					
    +					
    +						-2
    +						
    +						
    +					
    +					
    +						21
    +						
    +						
    +							
    +							
    +							
    +						
    +						
    +						welcomeView
    +					
    +					
    +						19
    +						
    +						
    +						iconImage
    +					
    +					
    +						22
    +						
    +						
    +						label
    +					
    +					
    +						33
    +						
    +						
    +							
    +							
    +							
    +							
    +						
    +						
    +						choiceView
    +					
    +					
    +						44
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						createAccountView
    +					
    +					
    +						52
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						connectAccountView
    +					
    +					
    +						56
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						externalAccountView
    +					
    +					
    +						58
    +						
    +						
    +						label
    +					
    +					
    +						59
    +						
    +						
    +						usernameField
    +					
    +					
    +						60
    +						
    +						
    +						passwordField
    +					
    +					
    +						61
    +						
    +						
    +						domainField
    +					
    +					
    +						62
    +						
    +						
    +						signInButton
    +					
    +					
    +						66
    +						
    +						
    +						passwordField
    +					
    +					
    +						67
    +						
    +						
    +						label
    +					
    +					
    +						68
    +						
    +						
    +						usernameField
    +					
    +					
    +						73
    +						
    +						
    +						label
    +					
    +					
    +						74
    +						
    +						
    +						usernameField
    +					
    +					
    +						75
    +						
    +						
    +						passwordField
    +					
    +					
    +						76
    +						
    +						
    +						password2Field
    +					
    +					
    +						77
    +						
    +						
    +						registerButton
    +					
    +					
    +						79
    +						
    +						
    +						emailField
    +					
    +					
    +						39
    +						
    +						
    +						externalAccountButton
    +					
    +					
    +						38
    +						
    +						
    +						connectAccountButton
    +					
    +					
    +						36
    +						
    +						
    +						createAccountButton
    +					
    +					
    +						101
    +						
    +						
    +							
    +							
    +							
    +							
    +							
    +						
    +						
    +						validateAccountView
    +					
    +					
    +						103
    +						
    +						
    +						checkValidationButton
    +					
    +					
    +						105
    +						
    +						
    +						label
    +					
    +					
    +						104
    +						
    +						
    +						usernameField
    +					
    +					
    +						106
    +						
    +						
    +						passwordField
    +					
    +					
    +						117
    +						
    +						
    +						title
    +					
    +					
    +						122
    +						
    +						
    +						title
    +					
    +					
    +						123
    +						
    +						
    +						title
    +					
    +					
    +						124
    +						
    +						
    +						title
    +					
    +					
    +						126
    +						
    +						
    +						title
    +					
    +					
    +						64
    +						
    +						
    +						signInButton
    +					
    +					
    +						127
    +						
    +						
    +						title
    +					
    +				
    +			
    +			
    +				WizardViewController
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				UIResponder
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +				
    +				com.apple.InterfaceBuilder.IBCocoaTouchPlugin
    +			
    +			
    +			
    +			
    +			
    +			127
    +		
    +		
    +			
    +				
    +					TPMultiLayoutViewController
    +					UIViewController
    +					
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							landscapeView
    +							UIView
    +						
    +						
    +							portraitView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/TPMultiLayoutViewController.h
    +					
    +				
    +				
    +					WizardViewController
    +					TPMultiLayoutViewController
    +					
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +						id
    +					
    +					
    +						
    +							onBackClick:
    +							id
    +						
    +						
    +							onCancelClick:
    +							id
    +						
    +						
    +							onCheckValidationClick:
    +							id
    +						
    +						
    +							onConnectAccountClick:
    +							id
    +						
    +						
    +							onCreateAccountClick:
    +							id
    +						
    +						
    +							onExternalAccountClick:
    +							id
    +						
    +						
    +							onRegisterClick:
    +							id
    +						
    +						
    +							onSignInClick:
    +							id
    +						
    +						
    +							onSignInExternalClick:
    +							id
    +						
    +						
    +							onStartClick:
    +							id
    +						
    +					
    +					
    +						UIButton
    +						UIView
    +						UIView
    +						UIScrollView
    +						UIView
    +						UIView
    +						UIButton
    +						UIView
    +						UIView
    +						UIView
    +					
    +					
    +						
    +							backButton
    +							UIButton
    +						
    +						
    +							choiceView
    +							UIView
    +						
    +						
    +							connectAccountView
    +							UIView
    +						
    +						
    +							contentView
    +							UIScrollView
    +						
    +						
    +							createAccountView
    +							UIView
    +						
    +						
    +							externalAccountView
    +							UIView
    +						
    +						
    +							startButton
    +							UIButton
    +						
    +						
    +							validateAccountView
    +							UIView
    +						
    +						
    +							waitView
    +							UIView
    +						
    +						
    +							welcomeView
    +							UIView
    +						
    +					
    +					
    +						IBProjectSource
    +						./Classes/WizardViewController.h
    +					
    +				
    +			
    +		
    +		0
    +		IBCocoaTouchFramework
    +		
    +			com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
    +			
    +		
    +		YES
    +		3
    +		
    +			{550, 101}
    +			{550, 101}
    +			{542, 88}
    +			{179, 161}
    +		
    +		933
    +	
    +
    diff --git a/Resources/accept_default.png b/Resources/accept_default.png
    index c0beb94b7d7fec1db3ea8c431175cb5d67212587..5a58ead67fdc7e6fa8e6e4142e97e6f6c0b6655b 100644
    GIT binary patch
    delta 7101
    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
    JLcuKPzX1902CM)8
    
    delta 7694
    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
    P!t+v;Rh6lhG7kDTpVU=0
    
    diff --git a/Resources/accept_over.png b/Resources/accept_over.png
    index a867303e8dc81430970ad0ba92603f93b351f97a..274529d6b2c44f42c9e119afc02bd2a722e242ed 100644
    GIT binary patch
    delta 5815
    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
    
    diff --git a/Resources/bubble.png b/Resources/bubble.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..6644f4f980b9b3eb5f60f702520670c5f5c99650
    GIT binary patch
    literal 1457
    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
    LbHU!U4*2e$YM#zF
    
    literal 4152
    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
    
    diff --git a/Resources/chat_add_default.png b/Resources/chat_add_default.png
    index c179581e358ab04cacee0e39c96a3191d02fd939..14811328c024432ce23899a136b05308c874abab 100644
    GIT binary patch
    literal 2492
    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
    WyKRyp-J}yIfVR4UT8YYw*Z%`QAT^@^
    
    diff --git a/Resources/chat_add_over.png b/Resources/chat_add_over.png
    index 14cbb745c7587ff94dc7b522eadb649305dffe47..e63d15a94ece31210fc59f29502400f136f9aeec 100644
    GIT binary patch
    literal 2358
    zcmbVOX;c$g7A`g$5SZ?kMj!~)L2*#B5|R)^Nl1`g8xewv5|cu5LJ~*<1PC-pqu4G$
    zyMUk~HUU{>aT#R`qo~LxvMI>o0HPwID4-xR6%nU@c>2fGsZ;gdt$V-wz3<(3PaWFo
    zxmj1+SQ`KUT^DD%7XYX@z+g+LcRYaiqV
    zu{e>T4bTPvPz&UGGbKz9cM4m`N3)bZXemDgjs}1Yo1`HuHV=}3d!cUEeE-2Be+3IfdTlCgau0Z!2&TwYLEPkOM%Bq
    zGX@EMc9HPxk&C359$P_2p$GzP(AFq67Ka0gL^O_ILnPv?Ks*+Q$6(=`h{6#lHbe@Z
    z1b(@Ya5fPqkm5ym`jQKt*&~A_k`M|86A=-Cj<7}xMf)%~TU%Qt1|E-sJy7CEfrKSR
    z3B=}02y{ry7I8x)T%iC|BC_@h!zA`dnCapY_#qx1Ux5YUFG9hRVWg}O3=WOO@cGJh
    zefAbhyrBQl_@=kmJ2C{qctK)en1~JUN1*vqFs$9*CsI1XY$#hqTzFGh!E_-zj1LJU
    zE_8b&`~}V7awu3F8CH=*z>@G-A{mDxlWFG;0!-O2bpFX*ep4fX6Szx(LJ)mVgZ{<>kV8zr-^BHkRTjf>;uv$Xh53UaEkt
    zK|+a893%_@9kC3>=YwbHqF18DG|o
    z$5Y7!oRSWSfhWP-7h^g9k7gK{3`SWTe<_wF6I_AH;n&iKCtnW_B!Ewh2tFDkn>&{Q
    zfJUGTo$4*^dHHyYGlFY)Cv>PQiW~Jfq3gK*jWVhC&?CdN{sMooe!Q
    z4!3_Y%;o#}RR)=Z9)4Hyw2i5RtAk-pa?o9Jb=`tI7*bS6bndgS!!)6btjXIf2<_g-sh@wE6&{lLkh;$oxT
    z!otE`h}BrDE*hdYEiKJmQ%h(0P!AZd@-a`V$wZO#I0uu>RvEo-;diT{p&=`DY;0`u
    z?JQ#5`t@$EuIq+OH_Fm?x1V{r<{jIPOb#$0to>>3RbOSY*{1$aDYLV)xw#hkqlkrf
    zA3w?h0ziH3v**qg%(b?(>@9mZ;CrAsa900rb92n(aKruk_lNEz+gehR=*X+{^D!2*
    zot2f9^Yin2YGf`GuQM_->gwt)TtK$R)(#Bx^_}fcm&@hch3FJNJ3G6XbPc}Cu!
    z;dj*!00d?s$t{||ty*hg(b3h@;d}GNzYfXM0X3w(9CLSy`=D
    zsH)~MMu!GY+z!3IiM?g_=Rb|LUaX3lJJl(i{s~*_^dPly#Msm{_U+T7
    zmbCHkxv}m`@;}4LCL<#wFMdWK5D!oT?}Ja9JZx__XNyWIN)wOKkxl#0<$!h+$`MA9
    zqz!_g^0jhmPRB@vLo7b)(dgh{oO)NcFw{w9rM`ZSclD1|y1Ke36v}qPsg&yX$b(%z
    zK0Zgr-@JL#oA>JNXe*D$vz~(7wo~SR~(SK;F^kv$uQ+$EVK(=b`^#_r<
    zGWMSNCpQlcx81X?wu3=VI`_@WHX5^26b2xR*JJ)@CzE;CQcWvZ#jEhPShF0}8C{(d
    zdgsxRh3^dGu9%pb{-FR+gt!GYQkk;1Xz0Wl7{gs5MFBVm0Qy*m<+{oSq@s5D{-Occ
    z5wvJHpQ!9h`dC2Q5a508QYvbHwQ1;p$1<64vx-wy#uvq_JlmuAM=XkC0IZLKVM~`O
    f&CYFmRCR!2ot@@MW_2r+e=;r%PkIS0VE=ys!Kc-D
    
    literal 4255
    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
    D?TSC$
    
    literal 0
    HcmV?d00001
    
    diff --git a/Resources/chat_back_default.png b/Resources/chat_back_default.png
    index 60412bd95fd36b2c7fedbb86d83d9e7680b1cba9..18ec0869e5d366331c89382e48ff266f8248145c 100644
    GIT binary patch
    literal 2249
    zcmbVOc~ld39v{H?5YS>lPFq7%R3yg)l0YOt5`shyF(3^nLP!QkLyjhc1QZn%6j@e;
    z7KjB@=(9zTV_iVxRxVwH#j>s3paMM*r9cH0*a?U2d+X~TJMZ^qzQ5mmKHvL0Z<4&d
    z_HWcN(*XcrBiqe|0{|M%h|Ja2MDDskRXy@Bg;`wKM;Z!8@#GLd7f3@OG+WFIgE$aR
    z5dFmi$N>PfLWRCunCt05SH_x
    zy$pdxG|Y-qTu*N_Q!0nhB%BSFPXIwQnT!K%Nn|o;jV2O6BA$ROG8VL@lE_pd1-*J<
    z5NmQlD3#;lx@rsA(Jxwq9)<_)?d{b%h(s)cz$&68Fi(ks-xKxH_
    z`jF6`Jibt(-mA;A60Hj)7aoTMu5zguy_{dF@B{W)AlVjV5}8ESYTQI3-Od(7+#yg{
    zL<-{j3Rm#|*m=mbYErf
    z#DFNm2in>?m6JR0@Q30f`x5NPEl(a{`3hWfis@ih>KPs0frbk$=Kf8Am^wmDnsJ_n
    zp1$gVtq-$J(?riT-U5@@tlcqEJo|W(6VAhaA&&YrGH2HuBmc#q{Foj%l4
    zvNUc_8(4R#H63t{vo=ajGz3NuWM93y3*~%0s{t@DQ7_c`Ck(A%&DG@*49NEoHh*_;
    zx1nR~@BNgarzY}nm2{`dB0KKz=#BeT(xtfi%Fi%4X^!^MpG$BD9JAvrf)=!x`+IvA7Mv0R_j
    zr8lCK7#gKGt07fYf)ARXd0v3RWmnyZd97QWmY#m+jz@5to2}Ukhw1r*n8@>C^Zwq?);!@>sr+LS0&>7JcDIgG3!<)1<($iR1fFerLMM%%!!lGTdF|M>eAJ0_mi<
    zqw`-oPpXW$5n}O9ZB^e=$B3$@r}<>F+YaKS++C6NYP5ZPdP=+l#T~vsxYSYd11~Mp
    zNfKhw;m_5d8%TAsEY&o*O*CF&xhLzgk1aN3WEgQ$tMW*wz@fmv_UNpPilV8}@!7lZ
    zz0BJW9gy!*?(>>yI-SbQ?{cWl=P_eH@yBlV`ZgW=Pr28=Jg!gRmQCkx-OmS&-A+s(
    zi4P|D`USM-f9c-X-ED~S`?w&3V{fxDagpv`v%O3#=pLy#?0*QiCAXWVQDphr_v$yg{$03g72jUQr`$c>4M+ANT5wW%Y?u
    zR@glchxaxjg-gZJ2Hw45*7qdV9t&zmEjkbX@{!Y6ar@<7ucJ3@X*AEcEgroVC4~jY
    zt0w!+E-kzyVJ=sR27ZjZ3)f{_>(!)?NSn{elk&KM<$hK-u^qRB?4@h0%#4bQn+nSs
    z91avHJ6qq~dtx~B>ElY0}aZfGP)jlemo?a|#9qcMSoIes!
    zI0ZoE0c<*SZ=}t5y#ALri&uuWwFRnfL(?t)cpMUPXj^5UXPgGgIIF%*W4FmT=8UG+
    zoKtDSdSvi-6M%|;ua5tpz5v%6fFt1m@&zz7L4-3K^bkt0?nXrLUOo#8{@*jydYLh$
    z46q~sI%;@!oJL!2aO7RKhMK6Ub*-U+^XfdH1@y3nX77g%EdN}vSza#1jNthH0z-+C
    AYybcN
    
    delta 2604
    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
    O0000^xMGpso>S3XWAg_xuM<~SG@bK
    z-`|}rm1jAxQx`)W9z}0*iBl1jn203HxU-y(J|7y+q$E7&DNLpdw;cdYW7fXZev<
    z?7|ptJf@I{D=KKJA89oxVF;fXs8At9PY)Vd3_=i*!SI0So(u-Ghe!n>Dh0%dL5AqC
    zCj+K3iE9@L^QMv{!2&jS%@-#5k)$Z9gejEF%uJ6=nukJ_Oo6<;y^S`gR5GSPR%_&_
    zD2pstyR2JaBWkfqrbJ~5IniiQl&Hu+{YY4(t0|-_Lqc8~maEqag_VqwB~nr#50H|c
    zZp>>%Ta5~k|Ag^IZFPi3iBJTHT9Kg=WBo{SSqEda`(sB&MJyUPOeMpbB1&T`#2M*`
    z9Obe7NZ1<>iA(~6kQY`(CLLr_L53Fuc`+fb7nd5y0t1+yUNq*qjW=SwFeQ#Roy+is
    zAczA6(3mV%0F^}xfLH-^Ds>&pldDmYT#T&yl^Ol6VrhSfg#%TH2vw*e6pFO<3E)c=
    zs6s7OD2ajLp2QH5SSB~h#`dgc%SKeP!-#~dQlt}C>I=)>;GY9A=ujXvkjh!hn@VMQ
    z(IG4xkjbGkvDjC!lK-b>6f78uaX9{KSk{lQ2{f{=M;{YjFApNeHb#Z5h9QN^0Dz6H
    zJT@yLYiR11uy@hycYZwd}7G#j>II^T6!v
    z?B^!?KK!n!DVK-iQ>KT99d`rn9D?byb^xPy6Y_1g0oxr`slvph!elgBlarH{ntC88
    zsPFmw;NW0UQIUk?-t$y>t{|wcuI~1oI|Bm)uZG0D$=O-vrQj1TpDr)w!u9;anVD*p
    z$`F5(sxRs9?|-S&1?>I&SY@1j(Us=r#hICz$KRzj4OdlF@d{~RiBuw~uC1MVJb3|+
    z$A5V0)cH?NZ~xRXqIddmCWIq2D_avoebgeE|ryCxLR8Ktetq9DogBi+0
    zF5gQkcM3aL{3x0@n8pzB_g;M%D-a|$4f~P%CQxn_~?tOK(uD15v_qs#27CWpv;v8@9Cqx~4^_%Cus{27YG+~LbxVUI;Vd4M6
    zElMhts@1fCljf#ZMn}a0errcZ$Abp~%Fm%Gjj_jns2F(ezgSrJu)C{k^Oh}nOOCsj
    zQW%#*U>GKuMJly%R#sN=JI4B?^y%s8yjJhi*Pl*J1-l%y-B@W3mw8YqvlA1tjEwom
    zcwJ{pef*(7vtt!-EwdT
    zbWcAbMkH%A+M1ew7z|JTR?ykmSy@^6(@#O){OOTi?|snat51G8m7J9Hea_8>#zusC
    zX)G!@s=yk-s#RSfz{WB%GBVz9C6v$SD-;SY*EHs>iC=#$*i@TnV`DQqI;z!bzp(f9
    z^^J&%`tzAH#TUM$&(F_SSH#C&i}Dy5A5W$<)sXEE2!#&U?F+{ZhWKw{uWfYB@9F8e
    zc+oyAEER8RT6gW5Uaz+)37R_WG^KoDRw&5mrE12Yj{7ptP?PgXO!#92m06Q?>=|&;G
    z?-*`H&ZmLEZ(HV?zLW}p{%4LZ^!BX|0N!$B*RpdvVCV4j3A046N5(${9w(Gt7m!f!
    EZxV}YA^-pY
    
    delta 2334
    zcmV+(3E}pR5vdZ8B!2;OQb$4nuFf3k00006VoOIv0RI600RN!9r;`8x010qNS#tmY
    z3ljhU3ljkVnw%H_000McNliru+z1;E5hvmeR@wjn2&qX#K~#9!?cGgG6WtmI@WXrG
    z#MQLj%ZG8tKmx2RX>
    zgDL%1LT%}QGy)fcDolB7YQMHy@W=POP7E7~V!wYI-v+IIqiMv41$7PLvBB7-VF2c6KxAb-7$F
    zmkZ@W2L{=tH_Ig}LWoAAak*Ue_4OzhIxxtH+wHEXsMs*QlarH3F9Hnma^}pL&0KJP
    z_wF4oJ7WnA^1^YP+wIOiMz7c3zkeUsoY8?nM(73S4by9}SSBYYkzNECWMpx1vAVi?
    zYHBL`Fn_1hi3`quC)^7yUz@q${M(h6m+#-dAGd!fLNFLafMqKC=M(-kyF4sd%9AHg@cRH{E))u34=mr^@7DeUo<4nwS&+Yfv4nM+x&FEi{PpWsR6+id$z*M9
    z?SI_dT=rpYZEeHD!zkBZVrFIr9atGO8qLhi%!Z5PTeogCH8pM34VbV69e8zh6;)7>
    zzP`Tm=g)7r>YkXGz^4&%-t*_r^S*rff}#MbT3}Kz!F+{
    zT3cH;Y_Q2>(r7e3eE1OM%JC)i=g*%}1%D-)pPz4TZhrs%efD8PLqn~ttteMcdinAt
    z0<2)ERLWp5%+Jqf8KYLKmzS4Ot6UB6e@>r1jY25Ywr$(YX7k67AG2h5b#-<3?%hR2
    zMJQM9Szcboz0k_0QmL+8yQWsFuU@_SqcMerg_z}Bg^O6ZpufNW`t|GUK7{t0+keo3
    zbHw4phgB-oi4!MMsg!gB+~41iDb8Ve>2w-Z$Qd6#e7JDo!t2+s)oOKNVPSuNzgn$E
    zS#s6<{5%2-px^*w2@QZfFaRLH0Ps`rHWC0jFaRLH0Du4kU=Iuc=)eGg00RI541fT`
    zpL6NbrOTHuuRWfhpI=&9+S1apcYp8RKlIeWV6dT~fe^B?vVw_F3S7iehD0La^Z6_m
    z%iX(oQ4K%`mb-iR?ulQgQmJ4tI66AY^Ssq+Ehs3cs;c_!&nUhU@RC4);eSn0Wo4!G
    zcwJrHfddC>YHA1}j~+eBcoYFffI+577O^Z_Sy>qhg%%bT);<~x21B8cxPM`;s;Vj|
    zC|G;ics%a&`FNfugp`z&)Ya8x4=~U33kwT`5VcxeQc{9>kzIgM0tJc3XiA4No=S65d?2M&co>2%uZbjIUxhr>aSi+|2rT=zyI
    z5o!48aoTUR{Bjy4f7=C&Qy>?z0hOyi2^j1or&)44GP6!zv
    zA3u5Wq;!~0r(;<*6bi*+F==1TXtP-`3}ZAJJs!{W^z`uXFn@g_K!D*_k}OqRTui?R
    zg+fP<9_4wSrk7!u-rioFPA9hIUAuOzd!CGMd7h{55=ocJqoboN%SIxRSS;prIt>Pc
    zcv_H~e*};jX}8Sa_xr^*D+q#k=f=>`kjZ4)zI{6#mP)0TmX-)1^oo}t2wJU{5aRdy
    zGfp@@KHk#OvVU*iKIu~z7Z(eH(9_dH*WNap4U;0}2x%Q$W@7ziP;SWLQ4=6QZ(WP}h>TU)#K>2x|B$8m&^a5zkd0hZ9PSuHIs8R-@O
    z2oA?_v`NywN)ww(rC64YMx%j1ARG>7teH(F)5yrk(tpy@!Gi~_R;yO44Fm!nkB6R<
    zh+4Ia^G^wg@zf5hwcCK3sHElR7^YPH%#B0)cp
    z*x1-8?VMh(HxLNW4>PbVYq40QZ%5G|>FDT?p5N>B(j9fisbI^ktgIlw016H;_P_uN
    zh5!R77~Vz#KnDf@1Q-CYga$wd1^@&Y0I-AxfERWA7dz6?Z5tDcegFUf07*qoM6N<$
    Eg1m%cMgRZ+
    
    diff --git a/Resources/chat_background.9.png b/Resources/chat_background.9.png
    deleted file mode 100644
    index 9119454eba06f4b87f3b0bf6efdba1dfe8efea30..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 592
    zcmeAS@N?(olHy`uVBq!ia0y~yU~~eqZ8_M0i(P=vF<
    zBeIx*fm;}a85w5HkpK#^mw5WRvftt4`>cFJ!*QXbGOnScjxa_{aM^nzNW7M(cTN^d|SAdw}2CJr}
    zDFxCE_c#?5TJjhbS{R%-2oiTKRgTZ!mhYK8pIyL7k)q+u^<-Q>@;hpViwr7`rbhvFJE;3%tk>jEkxl
    zQ@n6hY0s8_I!*_aws16F6MuOAMP!RZdH09)U(A(P#AzZGC-S31}xrV_5&O
    z?EZs&#~gyY3r_#q%+a_^?BO(!BC&<899uSUJU0Z2k
    z>lN>OO6GFnFcAmZ4)Q>r$Nn
    o_9?TxI}oXRMq`1w^Q2#_saZ#KnnQj}07f)}r>mdKI;Vst03egzWB>pF
    
    diff --git a/Resources/chat_background.9@2x.png b/Resources/chat_background.9@2x.png
    deleted file mode 100644
    index 2094325bf0e6b400a4354e4d637f0b9b7550ee05..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 1030
    zcmbtTYe-XJ7=AYodYrCiiY>dHEh7=Bkw(^5?b@8;CF_TyFjt$GLR~i4DwTE8qzt<#
    zRyt~wp3
    zya*lu@O265bO0`mb1UhO-?I`?Ee`&>lC)~@F^|*LSdEcDbAo<9Ku{?2a-hy3#9)9$
    zm#hgG3*^sP9e=))@4}GSqRFtR3iI<#1r|^hnG6<_k+SAlaw)AYIgKhTpbS*9VRuE7
    zRR!Q@(y0~OY@=_-t`~$Vgyloh+Mu$s8Xhrn$LF_2n;;`pAV2tWWJ&zhl2Yv<{vu+_|ZAop%vHpVuMl
    zM}c9MlryPwmln^H9+=fXc_@Ka*VKrxQygC+;VB@?NZfvrCj@7-hy;q@fB=t>3V<>S
    zKq&yguw6iaoaFw;^1p%FU5@I8FB8@098xZ9zKNN`Od>O2CQi5Q1g6?RnlbH5LMr
    zI*kCFQI#G=`!dLitE51_CA{Z|Sqt5{;R>){ilIYayBcpzxfh^}7y;d~&JQwr(FJB-
    zpq}8^x3~UG;5da)0$Q1dzx5yDf+4L&W6o*$?v`U>vPT-+b0r60uPwqKqWZ+`v6zb@
    z%AM#@yC%q9=55Fo1Ek+&|Fd>
    zibC5(HtW#Z$@zCDND%g))Bqg6K^7Q4eSKMlC15sS5&|*?tT<(s?uqeek9er<^UnJy
    zT~4M%(1#ox29AXH*`+aDmOrp8E7jvmHU;m~A}a?)R^vj_}xi>j=vJ
    z+AL(nFRbu9_)GjW_mB9Aszw9r^Zc7W#w?7ml)AGc(ZTJ?IH&^u#J0
    zMp|OzuSB9My{^ZD+5T3U;e6#GfZBsPtQ~@#_I_>O^W)OGK>BJ
    D6}UKb
    
    diff --git a/Resources/chat_cancel_default.png b/Resources/chat_cancel_default.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..b5e87a2e1230ab8c6172948ad726d5c117bc2342
    GIT binary patch
    literal 3635
    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
    cUEHxtz^vH~BiHFtfoGU_2xL1x=t*pa1{>
    
    literal 0
    HcmV?d00001
    
    diff --git a/Resources/chat_cancel_over.png b/Resources/chat_cancel_over.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..5d2abd3f8e66aac2f43cecde0a589615e71bbd42
    GIT binary patch
    literal 3146
    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
    BtPlVI
    
    delta 3677
    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
    
    diff --git a/Resources/chat_default_landscape~ipad.png b/Resources/chat_default_landscape~ipad.png
    index e9c14df72e22113c8fde054bde34d17e15634c07..65948d8c56ca2eae11e745dcd59cebd80c5b17a8 100644
    GIT binary patch
    delta 3499
    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
    JrADqd{somc{MrBj
    
    delta 4442
    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
    
    diff --git a/Resources/chat_edit_default.png b/Resources/chat_edit_default.png
    index 10833f922ae5267ef2addc145ced364d182e1c68..09226ff9e9e441cbc01419ed70c7d14bf98034d1 100644
    GIT binary patch
    literal 2671
    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
    
    delta 2442
    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
    
    diff --git a/Resources/chat_field.9.png b/Resources/chat_field.9.png
    deleted file mode 100644
    index 0b8b3e91f962dd11f8758dbdb04b174ced084cd5..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 1553
    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
    W`3Cwn%iVD21>BB#I8_}DzVsL3=BS+j
    
    diff --git a/Resources/chat_field.png b/Resources/chat_field.png
    deleted file mode 100644
    index 17a1bee8df88d15de25356a53c840672dddd8162..0000000000000000000000000000000000000000
    GIT binary patch
    literal 0
    HcmV?d00001
    
    literal 4375
    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
    NmAM_R)YS9b{{YNr&+`BP
    
    diff --git a/Resources/chat_message_background.9.png b/Resources/chat_message_background.9.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..90fefbc6d19cd27fd1e1b898a564972ce7326f0d
    GIT binary patch
    literal 4151
    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
    Q+x?Yyv~#h&XM<1pA0U`dl>h($
    
    literal 0
    HcmV?d00001
    
    diff --git a/Resources/chat_message_background.9@2x.png b/Resources/chat_message_background.9@2x.png
    new file mode 100644
    index 0000000000000000000000000000000000000000..5fa3959b74b81b39cc2a81be96a9963bb2a8a2b3
    GIT binary patch
    literal 8766
    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
    
    literal 0
    HcmV?d00001
    
    diff --git a/Resources/chat_background.png b/Resources/chat_message_background.png
    similarity index 100%
    rename from Resources/chat_background.png
    rename to Resources/chat_message_background.png
    diff --git a/Resources/chat_message_delivered.png b/Resources/chat_message_delivered.png
    index e788e2b0798f07d9699032f417803c27031ff4d4..f8edc012d1fbbbb0995b84a4fdeb77067e740881 100644
    GIT binary patch
    delta 567
    zcmZ3=JB4$C3@gKhs6Rg^DrzvQO!VqgHP%fwFf>#!Gt)CPF*P$Y)KM@pFf`IP03tJ8
    zLlY}gGb
    zni?3nnYfs_xVjlBDOBVZ`1)G8>tR&2Z_Ryokvl#>Ldq
    z$l21>+0DY)0=ospB|)iaRw=kGFu`eo9#RfP#ENJfZasH+#$;8w?b49`lO$9zS$tUbb
    z(iTXNe^ek~#tfy-SjMFA
    z35px)U(|Q2%;ey*kZGH-Q1TJWk@XWV2XYA1I|YTX9dQjX6Tf18qAkYRoMld5!w)8b
    z-^?HV6w;czzB7FcSKwn$%2xSW-grayuE3KiwG17~jX&fk-QiIvb1^=`*fC$=l+x=4
    z3ugD8ho&siakF`klx8IPJ8o<~FAy_xn`FoCh9CR_D)CLbp4cs%a?0XGmtX?}GsC-W
    VR>!QfuKr^H0#8>zmvv4FO#r*YzZw7l
    
    delta 1063
    zcmbQjxs-Q;3@hXE*faSP6*U-@CVKU$8t5h)m>DRT8R{7to0yxM>nIo*7#ips80i}t
    z=^C0_85>y{7;OBj#K>)`;G3A7nOBluoH1F4Nk+lZz|`2$%-q<*z{$eU(AChw(!j~d
    z+0@*{z|zdz)yZ{o211buPDM+Y3^bu88RAl;q)=QEl$vIhGP#gR7-p{#F4dC_n4RjM
    z9q>5Iz`!i&>EaktaVsf-p-Hnk>(AvA6qg$^?{NR3<6r$@}eoPY(~z8J!-UH8MRsI{*Lw
    zO|SU>#XO>6?(EJ+|DIMxg@yxaem7S~F&?RJKe%k0Uf`ee=MEn^aDwH^p<@RQe0qJn
    zzU}}2|Aq#ejg0>MXBYYN@umLZc)ke>eH=D7{CIKBzjxWTJ@$>;3a_ZzOkn3waGT(`
    z)%eNe)|ANS21ZVEco#XQ85tTIJlSz4Ek)<;G|MyU$FdF|I>#|Br9mr!O^e~?(KBpY
    zUf+*rYnxvm|KIS>PgcXG&d$b0&KGrQVQg&I{yT&>iOApooVl;l^!?=h`z8PU`}gns
    zhwuE%7nTZWN8X$%(e?M85fjUT&YnU6mL`o|%-%jZYjSgJ8n2lgJJuXAD?;mDgNyXq
    zy^ZA?9*RX3vAa%_{eQoeDUB)r|DT_?cXJ%n3s@&HeX&@@srtLWM3tYet~pa`A{P^^
    z+IMt??t$HN@{H&D=$cJrP+@42M%u=dpVs+l_iT1g(tKO}+a~*%o#F${
    zj}H<8DjrWfH$(Tq)AtWg9bY!rxqJUvi;URR=$;)h2D7Hho?855h4Lq+2lwjN*5CSm
    zQAI_ttY(w5aS7WKwuwJBnOTZOChhM|(CM81k7*KHoVSRj=<9_inoVOOPqR+ZJ1W;I
    z(zZ1%e3$!^h_$i4tb5G`G-lmkNH}8EU$c}?$s|6H_V+Po~;1FfglRhD4M^`1)8S=jZArg4F0$^BXQ!4Z
    zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di
    zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU
    ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um
    zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT
    zY?Xj6g?J&i0B&qvF*KNf0j6J(SfFpHX8`gNOrftYexnUy@&(kzb(T9Bihb;hUJ8nFkWk
    z1ncniwerj>E=kNwPW5!LRRWr!mzkMjWom40;ArS(>1N?#Y-s3e=xA}YCWx1pIn-onpXnTn}X2mh*K{pG2|8iZFWg5$}CGwaVyHtRRDY1DigO`%yF6r
    z)tiFbEfzTS>H{644~kl(sD=pv(+`LVPq;u1Jn5(A0n>XCFkxSL%=m?YflHU(mehi(Qr
    z?BVR_op|IPQ=x!>eA9DNrnVDK!JAAb-QZRD#`tLW5)}_|6X!DKjjX#Ak4S7`e5Dj1
    o^pZKrU*TVesoIKAIYt%4cPgg&ebxsLQ09J&5^Z)<=
    
    delta 660
    zcmV;F0&D%A39JQ>B!32COGiWi{{a60|De66lK=n!32;bRa{vGf6951U69E94oEQKA
    z00(qQO+^RX1`ZGp97zZlmjD0)IY~r8R5;6Rl+9`sK@^3*d#k!9KLm6mxSEaI88r$b
    zjG_?8B8d-S@&;K6E(cs?>jU@#g2|u}L4&gq!Nj;Un>@x$cYojOqPizN6AKEei#~^Q
    z&OP12!aD!`Dhk>|WE1x-V1Nj~7#IP^z*(<9^fpe~4?lmryr1Pa->c?by!D<)3!or!
    z32gNG!;9u#o5S~$?Ol=V7j9j%Ddxr1wkc*)+zQ+)+^a6`fB&4n-knqQ`P0*9YiqZ^
    zX4wriZ2!YZO+F}4P9MI>R7EQ=y+
    ztLC^nW>b{dc3d-Ax@#+x09Jrz2w^*hAp1b$9kT@v5umZzBGg1C3A`VHL7V9MQoNp^
    zY7Sn3g17^QTY+e25Z$jx+)Lc6T7@DaxLbV=$+|||z<(4}@>zePnd4qyo`IzxQxuB3
    z%uh=cvl7*q>;jI@dNejG!7I#5tX5@K%oMtpsYh-J>J_-rD(zUS$`8uYFq@>pSzSOc
    zF)L=oi9C_Hd%b6w9z=7Fs>*B0)ENb&5$#gv5ov}ZlIkHEQOQ8$NOxY0%c}DAqA<)#
    z+>4Z%O@C^8RZ`hfmMqTtvEJ(sO9j~48J`w~?M)^XMNwf^&XG1`$%@bVr4sl0ci)^|
    z`}#+RgFCA7MTD-Z5Tl@)Mz7jIG)E;8y_0i-3@gKhs6Rg^DrzvQO!VqgHP%fwFf>#!Gt)CPF*P$Y)KM@pFf`IP03tJ8
    zLlY}gGb
    zni?3nnYfs_xVjlBDOBVZ`1)G8>tRop9-$yokvFW`PAR
    zMM?_AB|)iaRw=kGu*9WzvL3Tj{fPssLm3ztwLM)NLn>~anX=o<*-@bF{Hoqb3tH`(
    zeRXPPPjHh~?V1(Qk+js6D_=uugU4gmqd$xq6CN8&7(7@Tvwv!&M4K;%%fZHe%k*(l>lmU+JSe4X;0`5d;E+ud(9S>I^8?sDGZ&0#4Mu6yA@PWemb+=+7*-Q|_SlvOV<
    zD^^3{%VhU6S=(P#G5RH*>IhlPaj{3gUviOaoy)=a9H$_-({98S9jj~*-W`EM2!;)Kk{zlfkzR?!vWNBD>?@D^2
    z@G^G6Q{6jPzpDJ8Q5Dd{J>#Xi3Fq-+FQhX)?ZUSzUD-Or^mh|C4UhD=JoYiQ;|_yz{UB-F^SWb_QmKn!1$Cjqwr_8Gyjk)z4*}Q$iB}
    DmH^$i
    
    delta 848
    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
    OXW>oXMf-`$&iXH0u9)2b
    
    delta 2138
    zcmX|@c{mj67srP?jLBHWkTq%~Doe^bTuP(CST02DFq?CV(W9StGrXB$JdD7%ub
    zb;#OSN}+6{L4!MF8OuyEzj5#H{+{=Fzt4F-=RNQ9o>{DD2nU|4yD=)NI;8J8HkcnHaAy>N
    ziWVSd{){c4=^JmZ8?e|vI3w|U;Dn2S<5nFef&fu0;9?vPfQSDd1puWE(Lc&X|92lE
    z9)7Ok4*h|eU^M`IvW-qwEP)?*^Y_SZ>{Se2QOoyx5m)OeM(vwR1H
    z)F~!Yn(YclY<@-QWSItuV%L2XGPL8O8a^n8n>xCyF|j$ZVK%gkk4o(oxYrc
    zT(ebk5^ti}1Qd@vo>La!EjVfJ8-C~3x8`1(LZXE1*5KYpVn*(io7@(^z2D#k_OvQf
    z8tt{-&j>+lK&36HFmNfcHNicD_8hS~wd}q0vODX24*9Wk2dOs$jgh6u;4G+TPmdc1
    zPc+API&C$|dXPwB;%`bEHL?fRBgjBJc+8tIX;){}`i!)cxcjp{ED~Cz7dZ8u@By{q&8^TbxOH9Vlyj+L`(`;d}hipe;H^0yk{!28;
    zqiOv+L#qZ9S4}yw}Q6}%M&0JP2?eA?kn>k^$f|<3+qJ(w$3LJ@s2r)AN)V3(e)JG~F
    z*LU+$bLVTbDU0~(2yQ;kblE@{dNO$OJu~F=eC>#1b^?NvH^w23WXr;&S}9ZqB_me1>PFt)Z4I^L8*#3zIr$uVgqF#QV-}jyzoN_0V?Rl|
    zQFm|k#?s>e{+xL|tuByMOJqZncwN*ju2$tj<_Bn6f1-ZwvR9gh
    z4fZJJ>*{40V!Oe?MtSdA0h!zfzcXU#%JTg4CJz64?|z)Wj;st%oRSv6QpFJTZ|yMR
    zdCtWj*3x0I)PeZPz`rfgIZl*np9`Blrl59|o>5+y3>m9HRWp_~p|)lZoYiF)HRPHD
    zhEcI^B2bgxFkfIGAP~~do_2E2C+|2geZnZzVSPcG-
    zG8|}Niqw|;i?XY53NHP2;b#ntR~7t*pkzPOWW_E%Hq7KktoHPbpoWODqEAo4Q*K|x
    zT(b+RkIny%XS#!hU`g|DHrtXSE!&Xd+5y(@FxTJR%<9%|+?GHYe+zGq=D6iPB;@H%
    z+?$Rd@qLw)Y2MMh3kc)i%@Mg%pH-qxir_E9`4K*qasEHYE;f
    z=@@qBMyA{dra5~1&(Bg#P{!VK!4RP+;cI%M#7qLy9VY@Qm>8WL-Y|r=z0tES_0xNW
    zq`KUdZzQX=osf};OaVjWcVm2itmoJhge>tJh5Em?maRIVeOpQ_pMua{Vm>~yJMvY>
    ziveZs^OH?lE7)j=C^ko6Sk6c*yl69oMRW;MUg=M?SH2>5Fl0
    zG%?0BZotT{?B#66ETF9GJXWbVjI!f5M9CVEdUccsPau*-+5#DgwG4%t;O7$+2`_c4
    zYhN6&gBPVKaUtJ}M8?Zcl{7t0Bsz+PPJJ>c;Kkols7_6CK$V`n#cIL54^N=mBBzNo*eo#
    zz^26l0O
    O1psqXYh;ZHHsQb0^#%9<
    
    diff --git a/Resources/chat_ok_over.png b/Resources/chat_ok_over.png
    index 514c9ca0195ec6d81c5e0498d85606762d88614b..3b12187f292e40fd9241b9ade53e52a33bce5ce2 100644
    GIT binary patch
    literal 2148
    zcmbVNdsGu=79So`Bia@1BI{BagKYsN$%K%ENPs*mD8V2IVL5@24CX;HVKN~h@(_w`
    zDdGZ!wWZZ82Pxu;IlG9i*Z{f$?NJ0@?Ba?Ft~_kFE~`k8B0E8#{ln8gc23UZ`|kI<
    zzk9!X@9#|MZqfT|R&87b0Kl5)9sGCzaEZd#$tzv)wEiAeop+hQa_x
    zfn>m7v{tqcj)!H6-0W}RZ~$=2R3#*1$+5dwazsm#IWZ)&R*!oFKzO8CFOzFv49tM{
    zsdQ}OlM5Y0P^DlKlR{%Dv3ee?RPC^!@E(gOL2l8=!xY5G2r%5t!U?o6CIijdES-U6
    zW)l~9S@_y%CKJI02&Q2ZUnP|syBp*oC=7;@LW1QK2m$-86#PdI
    zhG?u%I*ZBx7at-X4OL{a;`zeGSon@jRAQK(MJAg}CXy+HgrNJ#P*_-)lY>eP#u34W
    zTpcDe2kQ*}OALJ2AV*btOoiw`C!;I_F=A{Yp6RPAX!WtN%fvdvVxjPok;Ts=&VhYg4kmE--$^j~tuYxm26oIpGqRvfCrnE-&;6CJ;{T}`8Bd1n9FCt2%aRG7K<9FK^zqHIcwil_7!;RAcJ4Y{o$l4q
    zd`^P-&i8lI0%rI7_DtR%y{}82eA-CsO3_suudebOKKEM*7wu1}_WaiqQgv#@apsx3
    zSFNd%99iXGD{8j3qC01{i+j#f$_|}HBRUMMvGM7Dnm)SO7dCtCso2~4r2T%`bUR|3
    zHl=-KE+}ZX+vnV)KCG?=Ds0NhcetN%fh`nZoew}*-QNlL)VWl20z1+VxO+sox`9P5
    z3kM53UTxo4$QQj5iDYAWw~{86O5@k(ia&PDJ$g~g&5J7Nm~ZUv9vT|z*n8u~4f?sW
    zm;Jjc%T5dr56{l-Up476H9e)x%KAFhYhUr$sBr#~XP2x*nEb`(pG&0Dmj(F-!>1$P
    ztVA;M`5KKzE|+r{rE5p?z#^~qR8mq>(ve#OUw-Ku!*})Hb$&=!f8Fuy*_K?{-TQqr
    zQLYc|=I~>Mb5N($cCM*uVs!Lf{`4PeYQ&0lK9TpHKYu3X`Q`IWn?Z7|$R$mf0cJ2eCr_R{(fqxwh)f~{
    z@Er!$QDMC}DEP{iD_zXy-2pEh;^R6V?}N{*4Ttw8B{3j~llbU|?+X2M?b20VFR39R
    zT@UZwllC_^Ha3dIVu3(lefhQOOiPQu@x;hTMp+l}SX`q2=At1T<6y;#$&6A>O4GH3
    zpqjF>vWA9+$a&FYFr_)iXiQXtZ>%|F+S2___HfWtRnu*CHrqFYE{cgknZEIihA6j(
    zLvL@|v~jhEwQqXh?Zlv(-png~eT^S_-R>M48+(f@<$sc6GIbbjgM$*gG;WGWI9I7?
    zYHPcrq_wLyv<&W=7G}Cyj~*4T93;5AmY0`r*1csa-_PghszKyPpFuLpNd7gW1PL_~bG7T4f|$gcNLry@7{
    z0RA*wgMTb?p>TgvqKAi1U7-82eF=yQco~R$u33FRla8}Qxw)m6IF*baE|?$u+q~Wr
    wmo+YRWx5k1i_6BQwkA4-zhHad?}$C%0hZBt^fc4
    
    literal 2003
    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
    
    diff --git a/Resources/chat_over.png b/Resources/chat_over.png
    index 1d945dbfddf1407017d817d5a6702adcaf4d97f7..415b33a844dbe56654038c66b4a2558eee53be03 100644
    GIT binary patch
    delta 2756
    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
    IAbKbK1vE~pj{pDw
    
    delta 3797
    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
    I^s!<80kki*VgLXD
    
    delta 5738
    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 G**^feQ!E?+ diff --git a/Resources/chat_photo_default.png b/Resources/chat_photo_default.png new file mode 100644 index 0000000000000000000000000000000000000000..98b1a452bd8f883a5814c17b62e97d9594bb2f6e GIT binary patch literal 1784 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 Mr>mdKI;Vst01+U%3IG5A literal 0 HcmV?d00001 diff --git a/Resources/chat_progressbar_background.png b/Resources/chat_progressbar_background.png new file mode 100644 index 0000000000000000000000000000000000000000..abd966e8678f10aa2ea97895226a8e28a87c7966 GIT binary patch literal 3046 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 literal 0 HcmV?d00001 diff --git a/Resources/chat_selected.png b/Resources/chat_selected.png index 2638c0c10816315a1ec5eec3c44daa25bdeeebbe..a7fff16a8f5bb646a15513e90328ac884389611c 100644 GIT binary patch delta 2725 zcmZ`&2{hCT7yr+UNf=`+NkbaTNcI_H>}JLm8nUHDDf_Om3-uqg*s@L{WJ%eHqA4kR zy+|Za9zqK76ec?}U+??gx4iHBy62vIe&?RwJ?D4t`Q13_tLQXyh-|t=3RYd&RSk#3 z5Q!={f(DU@Q^MfYaClXItUC#gj zPlUNK#XjOUmu(J*1jEu3VhmecJf`C9g0d!##P+&ET=Eh#ocM6t?2V+!q1pl_|N1(6 ztmP`?bIi-OS6z!UYpRHZ8y3%P)+g6a)HMN)I*T7Uhx^D(2(?E^EcV`MPP_ojLzD_b z7q}))E9;2CxOv2j_R^#ZXNaOXfhlIK;r|&ZYF^2ZIAe z)?q$|vnxObY);D|nF3y?BHz1ip~Lnl4$|6B(JLz-D{eh`#khh9T?iYfMWY24i#~fU7xl9WYkl-q5>CRz9<+6 zTehErm+Ph)k!Y3c^CZ)&{s(eqX8^zaln7_DeE@nC zdOa;&1m2_6(J-^;JzMzqrI1(K&M!rFj^q*m5TEzHOsXFO8^dgnT80-%=_<_C{B#E? zavqE<>|6T$<5B!sPWlIPcPZ?yNGCij80sPI$hw{2yb|Ss?}p${b$$x#EVmW08wm1} zmY99z_0SbRNB<#7=iEEU9i-To9~-wk8!nMYaM>_f>H(v(3gI;M2Yn5ukaR^+)*W=+}?HAms6dtprlZ53kC;Q6nQjSgs{!nbMF50YfDS$01M*0L9S#_Q(%BUoE3p#dh^8#YfdIe!Taz z)GaRmO+X0*sIawhp2>o6(aSCXiS3@6s4=b^-k7JJ*3C2|NOFN2>+L!hr}EhRrbP6I znu~+h`{+~TL&?7`8`1(jWWa#+n1Jg(SIJ$L-~C4Y&WHi;+7}6r@i+ z<*=8Ve1<-ZfuMlD2dNZT@z$Sfi!=9{1KM=zaL*G$tSs3!{;cEm`9CU1Cnu zyTZW=+d3~Hd?59R*I-G0VAbY1k{`;j}Ri<9ZMu#MNP*LFDOO1GeFK9Wy-wdoh%_=^t&QtT!(Dy~%38 zw;*-bFZ9ys4eu4LNjAj%x*A;hGYcHG2+Zp?PM=wspU;y+rlj}+nr|5+%i@pjh`1r2 z%mq8)F}YNw2I<J$KW+R0Ys$YQgCr)HcS%>>Tmt9ER zGG7>~q^p$bn03|KF>x@|DA~IJeW}m|Fx!7ltf`gg{anFTW(@va&CYtfN9fkB4H0R= zi=^rUU3XDH*Me2>W5jy4cdJT^$i)T!t&XXiJ>)({@A6%WT!=S?x28V;a6|9LR>}1yaP=jos(~{?Sqi3D0miKqcU9S-dy0qU(h6!z!pShQN91tFLc~&h+Owu!n;dtv zQlc88_}%QaH~QaZ;6lH&O|ELwQI%%G<^`diF{&E6Tv1x1PQravX>bL7l>TR-x#w(E zm`heqF0&F2Rm&OwLP7n<(f)+s|F!@CleaEd*sMP7kKWzBnC~xY;gw{cCRQkH#C_rw z)l-gbihZBGA-oNAAcVxh*k(S*;j)TEDIXJ|rc3z}%)LXF!Ue(OV_U`!;)g8JMbZfv6vKx*Op&MU&e>&q6$pLh-ystZg$er`y?N(;#C7qkeR*mXw9no(H z^AmP_^&q;aS`gFsVbMG0Dlc+0acRKf@TPCxG3{ggr59`iyd$6te$Kt^rPnJn?=puP z7rbarvyX>VGA0_2et*zBquAU!y&AUwH~Ju5v~&;ER4MVPiJwOorx5f-v_V`tNsj~G z#D%%4S)UxH=kYy*uYBtC*Nt5L_}HyW6RRZ}j-ZVpy`#sNJ4r(eeiBpCufu=02i!8T zOKk}lUb4%T#~nQILf|qK#Y>h4iv9@_t|*xgREYYTJso{nS+Zp|mzpU12!7HkwO2Sa zq-Zd;$l;*t{wg5yTjwPlD7mv|3m#TqTrn1?Mte?02tK=wJ!Z=)^@YN@=f-^bXDL|xk}?=v^+TujL-`^b<%SmO7OJjW_TFl+}qMSc^S3P!q)!9 z`L9buF_YZl76#vKRtg6m0HgZ@8fDF!{kBt&ntmW&%3n*B>$PxN0fW%96^#=L>tf3z zEs*l=3>PFU0{^bd|3BMoTdK(zDT&o zh;^Fp>{8tx*&Dxt>zGPu@`ij37qD=~8AmXXU35pkr#C>%r9dm-@>bj2>KRdo1+<8d z#-LB#TsTwx%f;KkgNs_keYXC4r@ie%@) z>ZSf8uisYZbN{P{U}4|mQ*3=R5_G_IFapr%Pvjl(FB$L zrFmy%>1+!BYMyS}O4F1sCHZwT4`#y$b9w#vTF^>V*j+2X$)-C}n De}t;e delta 3721 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 E2gAy4%>V!Z delta 5645 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 B`pEzQ delta 4478 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 VrQk=~%O5L{JIb0$pBlb7W#zEl_}{9U@sA2+$!x zJjezGBJF|O;5HQMJ$DJ05Azwj$U+%}6<9G?4J1d{DAcwMXivW9}5(og7x%t7EJ3i{Wi_zV^hEK`7h57rwa#1jYriG(F=@gb22n*k!8K*ZsZn}i{3A^VWX zL|A~BgwrOn4eJPJAihUH`&POVmB)!tZ{A|6NZ_xHDI5Q!KBfl+Fuut0;6 zD%}P1#vPJOhF@={<;K6z9=hI&TkX4VK|LIjw4|4)+H?f8I1oA zg`h>W5@v(H<@-N{m0YbH#IZr8Or;Pa2Pby3hLV$m6`%l?DY!D({)Js+CCFfzGC?K> zf;l9>gCP(~q}B<~IR=A4rc0HuKq>_3R0PN)WXghof1VRYGk3b^? z;eCiCl5enI5RtaPrOJdV2$aGLT+t$zfM1epEe1%AM5clY$w5#=Q^+7-Zqa1P(z#HV z)SKsumdphovLqLWB!jaa?eC6yVG5}q>u|Af5ofXVK`B!23Z$@ObMp)+)bbWObq80| zK6D293pe7U=J-gAyD8>2G5=L?-+HIowPBw-fOlFQE7%_jN^DObo-q7Sa$)y!9WBnC zs-wm75^zQqU7ROoQIFf6wX7(*#vdTR-H@6sAjf}Qe_3rAx;tW*@yOp>J#wunCFXD5 z_QrMjH*L18AMUiNv|%sPAL4HJnm53@IS*KOd{t4)!Pi#lS=aHFvaf#~v6= zZl=pVu8Aidn~M63ZAEGR``Eb!A3`TAM+~i;_~qww)|v1l+Gi22{f%CI##4DMNlD6q z9HwV&S$A5o@%q;dzGKtDU0HUI4-BmV-x+frhM9U+Q9SMYJzUbVJ^T4Dx)YQ2IFI|( z_Rl;!iY|G(&g?dazL;z-D!z~36M4sM+GzSD)0p-44_BV_WhK_0tq#pdWBI#k?x;+w z&Hvn-8!6qLzPhG`-4%(w@N#13bp5dpYSJn?%V(b|*kQe2K$1%@0&QA~>&mZs|7ltY z9vx$p4~xwl^TiLE&-73x^0s$uHTms*m`Quy+&jR1mTkbs?h^^Si;j+W|J%ejpWEJn zUmqRzCc(ar5m2lX<~K?jbWO=GUC%d6#ZnS$sxc3w(ark3w>>d&S*a2>RbIQ-c z%)(n1@dzizA=R=6%wjs3XJ4Bi^mYC0qN>u-e>5d6>znRsa=_Im>h#ri?K-U6IFJ2V`=p-NA`ge$k$wf9Zin0R$r?+v@8{StWc!I$n#y(O)$*1xQ2*c?8R`7+gf z4PurX+^T_;FX}l{8?Qu&rOJ!E3=6!k^uP&KLu%ByP8V%QJdflNIN9pCVJs%zzT)$g zTBASlet(ZU{Yqv1t=yX>t&^r-T-PQ$M@yIyJX(83#Aj8Tx6t(ie>XaPcO!+dvO`lB zHsxEzd1X146aH;vPtnQ6oJ#T!~5*Cr2C-WnXyIz$;--Hrs*4P)9kH|=8DbYrRA zk8o!nR}<3lqo<)sC~5Q-XPVh@;&g;X_k4VI3ewM(^)@*1W-y~w$@Og)qFmXVl-OOV z*`4L&bn(M5!)RrjX-&?%jG4keS|&Ra=+7P}mO4&;S1BJTE#*d)RJDqW5+{d5Wd+0P z?5{qRhZ_U;ZxyX^pQvxl;1}M&wQ`o}m;A1g7LbRuhyU&bCl(sQ?>Yg}LXLZFwEYP6 Y>igd3*vgCs>+hZ(5>EXlDE7<$0NI#`82|tP literal 2087 zcmaJ?c{CgN7FN$vTZ@LqP8UlX#@LE!s5UA=NJ(p{*n%LjC2FfQWooU~&>)u9Oxuxa z?1ZA$6r%}BtF@~V8BtX2Lt@f@-#PEyd%kOl|^k~;ANM}&$>fC5rH8V0u& zpOTO{c1*+Bu1inAG{7J>$he7>X%g;4AW;09xN#m9V}kVqn)#|_)>)+ge9r$3(?2GC z!zk656Mw8*o>qZOd7mRNgEQ0= zbYZU5-tuu3?&4`*lT7xmoW6R&&~oA3yEZj{n*~>mY^2682qH3>) zTmmQ}n3Tf&iYBfXT_I!8p!_PjhTc3(VePoM<7A{og~h-DN+=8^5;YCRKFZNg6+Xg9 z9Wb@%w_KGe#^O(j-p|h}zMEsPYP#-p&Hk8LxOGshd6Ra6S1Y5L_ik<*onYD5A_JrY zz<{H`FM9r*MYe&nsq(M(N;rXXUt#JWQi9IT=N*$sgAD;~m7^O~``1T;H%KNM?H6BN zCVuFJn<^jT!opvhDfOvZHBLlnG2WC56q=tUes>G)l3hlQOiTrrg!CskgiPGm`L$Nn z`Y8ZptnU%=MkW0yMVB~+D5#E(y5b6}uyN(QtfUkd+*D+8x%hur15AAyVbqG6MgXsd zPnDwpbaqrjxlh|!*SC4*gQZs>-S*0`%4wBJ?^5~LO3qFDq~ z-u0iDd&pFB(2#y zFIzE0zuH@uJS9-_pz-{QqK}KcDw|%XLqqM02sc-sp>wq48;s8X)fmwB2jYAodArnl zt!k;&i+(-92k8Z)o#_}s{+2!pecqxghyK!wO0LA4U!b90ZEp65^;f7|ZKWjWhxgs; zB$Fq09&=a6Uwp_9E4(%z{^E8psH_FY%qqAtwAQ>o_;pE48*dw(a?P{vr~$ z(mz-fuJe=@2xs_BE@U%M`q+ZCXCLkiQ|z*NH5#@N@)cev@A$>9%{n_hIoEGg8Iamr zIUG0ofz<{cV_mZ{;MM`@41TRXBB?(ba1{7J{J}@bU7GByT`Otkx?Kj8{G{xjx{5TbztMS$8I31&AyQ$nX*pi`hN>WtHhz0Zz3^WxCWHY%T zg-R+a0ZNw@L8T|IWqMvkgvOHHoDS9(oWnv3A>1og)znLkyt_$$?Ge~0H{DGOS-oGh z7-tYS@3(eywib%vAsQ(W*3+L3jhO4=iVAtS?7%66SR~o4?Cm70tU>!vtM^96X5OCI z@h8%1R2Pjlk^Wajx#{WKtL3C2&K3Zw*U{N&I4hqc3lNcFuJ3p6pitfxIq4$xdhjhB zZ##a!`{lJIzRdTqpn6zsX;){W9VFSrN={B@S6nIsnjX1(8L;o0M_ypLo`rji+SvRR zAJ81OGy~p(kK~=qfU15wZV+T~r`Bco_Ll|cQ*s$LHWUSALSN$r+x&Uk^24*piDw=L z_Y*9eTBIqXL&)c{aw}u)*RufTpgxl2XALiV2z;)GHctN75bI2ow%)Ro$F#OD;q5Jl z$Jtf_JjBQ5bl(ZTB3U;Fv>x}rr>T}tw*GClN~I z@w-w4%nX~0&_&o0yvtwY^}2$s0BvYZV>I_Xk=OD1vxce{3xB|v+wtq3Ego9-&{}Kl z=;0|d*EOKTlWE)WHGdBmh|C>;PRSb^m$m2q{@J?=p9p5IZ;cR&H_b(rf}~dj{Ws&m zW~qg7UN2#(3~rv^Kb%sT8(A@0@Q@HVAv$0PRcauV0zum>+EC2ui diff --git a/Resources/chat_send_disabled.png b/Resources/chat_send_disabled.png index 2373172511d07bc0ef73f54bd5bfd651ab4eb7dd..2efe5869f6a0c7cdd207e427683168b4cd0f9072 100644 GIT binary patch literal 2139 zcmbtVYgAKL7EZ;PHHy}8s8n&(7{OvNZxSFSiG)Cjoq&XZ!H5u&OA}rP#=IPL5PgO0fXfsEMeK&P-;r8yhKYiyb2Y=tF(Y~!^4>$I)CP_d+$E`tnd5w z-skLlZuWuD_tvj2w($zq3+n%fIkf82oY0W~}x5J}_| z#IuHG1Y9DdAPy2)Se7CX5KBUml|V#tC`XVi75E7eG%DO*ONInwfSM22$`a)&vX+8a z)Fne>$20~3UxcWo6vR?eT-E`2AgBc3L^J^L7hhsR){n}ou7 zlZhlU-Uq&XA)shVVFH=W2wsi_c@%_LtyYjR7>!1Q))3I3QiQ?z`T03C@OTu2K&f3L1qO%4I!amr zvRMBcDwDlLtJG}ZKl#2=SjEvP01O*Yfk{dMv~dZ$9HA8CKqbIegGvqvCa$dF0Wqis zRbo&94~!teJz0E#MDCc_v&dkv$V|CP&6f)RCWC^2G|&=>kW9c4NOZh!KyUyl2!{*8 z`Qn0cbSx21BKZXR((%D7Tm~pek^yq{3Rmdh`eGTrcx+&BfDi7KTt_p=6i{Rapp<+7 z2!oZN48B-2S@QZ^d|#i-5?A=DT$bwado33OC4+Hn?SF0c$`sT;j^WG3g`AhI56Gc@ zS3-@Q*qomTgRO37G6Fc-p3x#{1t)TI#^9wJS)OfgHM}>uYyD5~VsGRg)LS(bJM^Es z>J4iyoSLj!5PufFI_48YNY>t*ef4osySeevc@j^A@WYCj)m1=Q`SAR>ONQjyv4nfw zst4zF+qL1M_R*S|aQYoqt|I6Nh>IO!(`S68t;Q zGrzr(QD?bvr2wffO%x+_!=XTvot~5FHqZ)|)s1ZfG~X89A1)2z8Rm1NhKw#w-?vOy z;-2YZBDW8IgdC`4o@$r2sYX7&=lSH`cvHYNY`HwAk=mA`XeQ^*gWb)t{>l34>+~>7 zi_UU%2jAkiQTxS(BO_iGRbDO5QfMJ=IX(ZG(trFn7t2=BW>cjNZ*#U4@9U+W$T}pQ z2r%=)qc1m8KfkoD5y+~JuJdT^m)%Zku=6g*>Rce zq1)*c>)_C)Jl*pNq-8y?A3de4q+IvBh&n%U&Qx5ltIPMkN~xNYTCjzK<0*o_oBBJ*)P{$ej={0cMt@#x$R%p_8guXvX2PC~b!n2=9OKxXExbjp9RRH_OcJnaSE}#mL2rob!d{ z)`a|{Q={CH(_@;Gq3(*%T3X_}!cvdPJB=r}XInAWi2wilcN`VaF>(g^VhtA7r+xbP T?r@#6<9E*t3T2q+aUcB~rag~# literal 1954 zcmaJ>XH=6}6UO~Q6A)=3fgmmd(pH*u5!47I5RgESEY+okA|ld)G!Y1qUIHSbxDZO{ zeT{%1p+;C`B`YL=q8nLEP-z+x*w>%_`R+Y4bLY7;&zXD9%+0yvY%g_K>9CNHkQBlJ zjs|QlAhBX1fUfcp-vErrZ;tkGp@Z-H;Xr)}fQVmnz{Us(NyvSdLqe5R5C9atfk0gp zWr|B3Iiiu{2)PF!`UvEfO7ut3hxsxU+J`?B=<66xP*~EYSDaE zr0<~0AvsqJY6wExY$|>Aix>pt7?F{6XVX?W^|`ex#q8tu7NB{CU#nbxewJ&Y>rnhP zy=t1P93O{J@AqwN5G _28dzcL&^Iolechbc4C>9cMMKtv%l`F8?MD&9;tD89c4y z`6zG>lxx$^#Mf()GHDlEScds|)aAHw^TGE12HKj^xT*gL`o_>k-Mrgqu+iE{Iq}x< zDgQi=y^oOknnB#Jvxa0_m*P=r83Vb)O7knNA@55DV)t^;t}>p29sG>SYQ+w}GBZHf zv9Uq@o%c>6h<>}2NGwEt9?BGc{%d_P5U7ser85x}FWIO@!M&+zO_70rqZpQ74u?+_`tvhJsqhsQdUpcuux-(C2h zqv;DOtD%2CtwZw*N}82P%JhD4-#trzrRO`+WZb~if+pgv70@;zC&-ov+2to^gnddD zBZkk*ckCI21D&$JW-%k>`ZaF)kB{fnEFJE7HvezTFV9=S?GU+kQlW2C3=EPN%#}qlEyx&Q!c7m zQvKLUhusyqZo&xY5&dyQY`eu%q}^U^naWt~JEnX(GaPM)z#Pk&{N`5IJQdx))FH5T z3Ma>;V&*9Dck1S?r0QZW^bBEwljPgmw1$^FOEi}MRHV45n(jqPE+sILSPb-@Zp+;n z0VzneCG7FBPHArxG>hO}?NWVsv10k|p5}103GbkdcVgG#w`=*Ik5u5hV$%p(w9NM|&3&zWx#OUzApKGNP1;**DsrJ`=4|K(Y?GzB7VjkdN!6$N%(|b>c%%QLv39U+q6hBQvz+A%h!|<%Hr#$6?(OdkxDw&LFx7 zh`utye$Q+R7Y74nodSQ^ke1?(C(lmj-1>wE$mAs}&J{{VMfF(4V|$ZtE1b^Q&*~HA zsR5~tYk2|tX36Fk`T@ox!35iOz7u@1J@@Itl3}p1qt7O_-RWHC;zNjPx2wHl^@ zc|9H)6YL&$Udq@Ga4u_8s0n8ic|?WMNY%zL-rdS2^FdO|oZHKc45y<^@R|8EEwOB9 z&%8v&W?)Z_V_`&P8dMAXMHMskFBhQ20QqvT_dDM^yEs@DaIgF3z|V;07|y%8AzH837)c7S&q zQ=cg*m}5`}^U+NEoDc5T!nDC(PKucxl>Wu3^oyhZQ?APt5TgcE11W>pULe}1)n{U- z3?^#EHAQx@urG$@SIxPp2au6jOQ-GN^^PWT>Z^$Ot6sC;P$)!!Bu`?p6cJbQy}{Eu6Z{*--I*dEHVg6D!iiEaGYIP)@k|Nhv!u^jn^|1E9-om?V{--SLF3-%Y{<8 z-^fnv`^q6_49j|=ez{!Go^N7(qqzkB?mCRIHLLGoBKhOM{pi^`2}D`pm-WI{0&ji4 NL0oi(x1RUE^&jYXoksuw diff --git a/Resources/chat_send_over.png b/Resources/chat_send_over.png index 0bf29fffb2b17e7581e36b1fdc1f391f763a730c..ef07e43ce1293f1958d91992f842f2db818c04d7 100644 GIT binary patch literal 2065 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 AYybcN delta 2586 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 EZxV}YA^-pY delta 2316 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 diff --git a/Resources/contact_cancel_default.png b/Resources/contact_cancel_default.png index d6714b1557f70bb4b38b5dae06e536b2f46edca6..80dd4494471168558792d639f83fb50277d800f0 100644 GIT binary patch literal 2276 zcmbVOdsGwY6`v46MUXC477#QiJ}L_#Gecfv2^bO(79#SJAV?FE31kCFOo9pFDN+;^ zwjwGlC@NrA!AAjCDe^e33M#7>1y=#-E?P=KSTKMhYQG@Z{^8j_I%m$zckkTay}x_E z``t6STeobsG`Ba0Ajs0+j~fC(xJ_WqUt$8D%bAi ziP8!47ZF5Li6zVsuJ3#-AhC$?8jX@kCTq1?SFM|?LKR0w+}+)cK2VedEJ*5PxkjiX z$<=EYJa93!NF`NjqzXB~=usG}NYb!~fa!-65|upON5^vYe4#+e$U32tjJU$)9W zbJl822=-qZpR`toB`Yy<2&PsfsYGBuBx@JIpmx6<$Y==IFoRT5uqna>u0oWQh{-kn zTow_0aTQC&Oc-H+D$*%19ffHO1Yyt-UxqKrVZ+{ZD#MMw;Nw$R#GS^0QJCsWb4L)w z2k~~Jv)SG#+szwcds9$!0qZYUYlLzUwh&he;?83!zlmjXRG3hsP=zTJ2@4&tHC~}n zsN)q%0w;msfW- zkEM(&GG>ntlGgEfygvLUZ`Y&4F{h#S;pU+s>1oI>&&(`d08wDb#NuMM*(N;x#BSXE zR>;yK)66J2ySE+?Jig+%oPMc(da7|plYCq^8enz0gkt6x`?m$qL!^3+VRkd*c5dqI9ysrF-Zz{*c6Gos_g89R(eg(RZ~Bkrq`u)qc6V(EHMI5o?5AjHY&f^p zq2N0SKl(+hjO-R}w?6;C0ob%5`f4v@YX{LAF>^px2*M|MpbMtkZwWsGN5*Bz9yjje;b&2nP6 z&ti|?s*U`8z*t8^iQUVXH56DQ4r|mV8M6Jx#?H32yqYaANs$|hik^v|<5E}03wn9u z52F6nj&UjQk-VXj+q2V-9^2n=s<-L23i8Fl4i>*G0RN!%N~!nB7MpKle5UWRJ_iZ( zkK0=!{rKsIrq@#r<0no}wRJBCjQW~L@9&NtW6}RvLQ#KFzS!PYf2;P!Q@YK`l?MyT zpPDq@ZjLCMjElJZ%gnZ%z|50J17$fAxAyGyj7-q~DIovR;f#k>`m~GLH#0aj*+Jd! z9U2cG3+ul<+INZMMczF5*3sOe++B<8N|VDiDTdEHtw4S~_*E8vcO1Ja>8#!~+T zQ07m(?mX320$W<7g}dMBVZPg!(Xp)Yd*(##rN2#AD+-(fqGrF|==7v@FS{9XGij(S zF0B6IPKNt?S(zd4aNXDAG4g~?W^i<GCpj-8lqJ+xys-kBvUl(U-xGTKg{vtbPLC#C&{kx~@!qyhl+-y(p z^}@pTQom#EtA}Xd+?3A4BGxW!yh}!kxNzBJ-OYmD5#HU9Lr=W$9M^$?fknE=hR1yaQ!_Ix z&kVsj$vr@`2kmrB9*%S)S3`|`ax+|ed~9r1&UzUb0KXGJE+=vJw)0~k z6L;i31g69yTftIG<6OwZfmt!9fCA#d@Bj(`8QE=w;LKXB?Ew%d78#{qt>m$|x%rX_ y;em%*?4JJs literal 6430 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 diff --git a/Resources/contact_cancel_over.png b/Resources/contact_cancel_over.png index 256e9b0cde776eeaf67942eecd1f801b0996349d..9cfebd8d61e369bd55837fd3905515efdca3adb9 100644 GIT binary patch literal 2154 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 delta 2423 zcmV--35fRZ6oM0wB!2;OQb$4nuFf3k00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-pn90~v;TVN3&000RTNkl^{ z6tyY{3muu_NW~T8B9)6lw}^3K0cDNPs{` z!ew`6IXL2s*$-*r@q~ozmP>;F-zR)Ii8IgPKhN`?a{^XswVD6`%k(Rh0003700bBS z5MTfV7yuAp06>5N009O-fMKzCIIL=ubUYkZp%fPCHz>gitGcGP`a-SdYhlsbf&PA| ziN&$Pqm(b834e;pD=2J}bm&%WN%CTKr7cOKI2fV9tTl;SUXM?tr&kwg6bBs`%vxzh zRsE$#L*I>$i;dqMiz*?&V0Io3tMUp8WpV{$-IgRLC`$Lw%F<#FE(hhp2n}ZB%C+l> zsTqv)E_HOMEG=fV+`NK9dY%CRhJ`diQ39bzAQb7x(tnmDJ-D3c$nX$eFuhR=&WKPq z1Q-^cOs>e}=U%yX-OzVSE2;>B;Af>Tb#&0JH;G#ey#x?om?!m@8uiC!4=#s(uc-b~ zW1FPImL&O^>GZ?ODysB%%YXpGJdMqH1%;aKN*5g&URheq&q~+d^alF-#mB`yH+Y{B zVKZ$0et(^xpN}dmCT)_ABgYCJbV(W8-Q1(uF_GZ}LAW?O4XaeT20QiSNoSXIOIT>2 zzhC>kXOC5m|LfmVQ%{0k{yj>H4h-|8x~4WWCztVTbD+Q9#p+7>m8z7aee`=pZITYn z&Ed_PLK#CiN^0hCA9#^?III!~MU3aG2*b~2$baOD#MBJ>N(e8wN!-Hd+h2Wt0kuVd zVQw{vTlBZAOC25fndwG8qELUSQGcIIPj5=nzO7-QC@%sGb7{H*jDKb(+P zP{`=I8XjB@KPw%NWSKvFoX~>FNAG+|Whl=*aNYq zJ#o9}4|0Gdb>OE@pP~>Jp}ygAdF46AqJKM=b0Rm#l+Jlm+;Y0OgfVs7lH`eFIRUHi z`*hHOVJ^q!<0p&S?=d@P^v)g0i3z5>LwV)7`i9Gl#dW;k!x?G#O*#lL%%NVnBI`)r z|J^xzg2?P=$$)IUW*SfE@GKEf!^F3u*x?-H^-JFXFPXTzx$#5?0?6M zm%DR0hYzK?b2&Km=)f?yhKE&*=DB&(hQo)_OqsgN&whOMyB`?qn>TGp-oF=PGdeKL zhi~-~*e<#MpNR?M3G9{k<)0D^tC$z75A1(q^TrK0>5B$Fjb!ewet(16lU1ts-Y+%s zk}n!AC%>7^NUuBBtz2|klU_gvhJX3cEAM0EP^0-)>lY1|qawEJkIiR3C~Lme%2G4-E6_+Vvas0hoR*>cfvd@%Qs}=ep@uB=_#0c;~eK#ps7$x06Biq^JN7l4-^Jg7 zA3uJKLYN_;s9ZNfJ31`+q_Tt{2#TWO6Ax0fV3Qdb=&NE4p%fJG8uFhk8Pcj*6=EBfS$KI1PT zNiuF%bY%E8R1X~(7TC0RkBs1QTr<*=xg1xVO#~Pg9?4>ve(-dXS??7pYfQOsPNaKB8(hR_vKfg zf7wV7#AoNv(%<&@(d?BzUb@3>{G<7mKdeQ~5nz~K>Y2`?_M42u)Wpw!;eBLu?7a_4 z`v(TshwxBNOA0Vpgn#uRy!D2A;}U!O|Md-5dV3NC!P5TbfRWMB{((W%866nrguT6; zkC&&h7Hjl8s1R2>0^SdANaaadvWbabg7c z?IIyT5V`yeA8*g|7ys7T-J`#bvSSYn^J;SPkuJR~8yg>Q&mZr$4=4wp<#{@;F3!~C zBh4{BUMuK(V?YOnS@8EJac7s*(0AYBXK23o=IZyF9R4X{`_`~f7RzR2bgZVf?#H{5 zX}7qV#=bi?rhl_rdP?v<{jKnWfdIp-866uR9UC_|U~5m}ox5!WL3n$uh>F;zS+}=i zA4*Mn>%=<)%Asijtj0ww1Q_O?x91AYaBDoknv}j2=+8K{u@-YM-_#|xsbcS?Jv4=^rbA;4fJ9he}9 z5MEHj*H>w;a002ovPDHLkV1jMPn2P`a diff --git a/Resources/contact_edit_over.png b/Resources/contact_edit_over.png index 8cc680e160a93bc00a2984f80d2beb5d44e94f03..6a800364adb1ade98dc343697322a2ba5aed3765 100644 GIT binary patch literal 2600 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 OXW>oXMf-`$&iXH0u9)2b delta 2120 zcmV-O2)Fmf5!DcoB!2;OQb$4nuFf3k00009a7bBm000XU000XU0RWnu7ytkO2XskI zMF-pn90~~rwxLeA000N)Nkl5pAPq8L6zp0Y>RoBoTBp?xoqsB=*rMEuT@^3oA_Oq7 zThb6L%{gb)%$$7)X3_vhd5N z009O-fB^sj1^@&Y01#jR1Q-AiU;sdX0T5sSK!5=N0R{jB7ytnV00bBS5MTgsF$paI zBHF#@z$d3GiGOIaT%Ni*Y008E^h6T;@SRv-DBX4TtMjf$)~rri9={Bo!4evzmtG<| z^5I7|mPKW}B?i$v~GEm;(| z;!kg)&ywIL2m+oYNo#m!WahfYPoJ9=8}rQg)0>f*+hH8@232g#Gy2>t^chQN@W||S zOD_=_O5YO+q?^2gVv*vhI_=x(Y3Q@Wme82Mk{Q39#*s^38_OC>-zzEBKXli+eP>zo zwHsrdoqrM(xT9Dvm&x#XzyyW~)oJY7Qm{?DrsC*{s&nVZIy+e|e9;Cug5Cps3 zjz&mo$J?E@;?Z{4ZcA%*SnK1Q`Bj zQhzsW7Ky0%3`cr>C&2ga-9sa!$i}iOlh;1#U*1oa%XhzP2nu`*4fK%!-@SVmjgTl~ zSNEEYnd7gQ%jJfxc{*(L zl#W}laqU~^l5Yl><2W?J2N=70vbPkltozlBm_4gVpM(Bj2@PINrwvK|OXA3bIhpBb zjxSGO7GL4*LmHdDJO1&f#_pcLz{etH&rDwVXSrO4w)k>@Z8jSk0e~em08A)62Y&`Y zfB^sj1_11V0Wg69009O71Q-CY2L`|d1^@&Y01)8+do0IY`sdXjEf(jIr=N-p)u>0U z?CCKPQAmhdE*s@99J+6tIF=(KnOrvNJAk+G69mC*Hlq;|jc&!!6E(FBBToecC{vSH z&YCgZ_2BodZTg}TBFf9oa63grHGdcD%l989A{oQv{e2SxED5-YB~{(GP5Po8&h*Zj zG3~|0&qvLh8xWu*B8z1}UsO_av3{KIhV)_y4HJjsxbnS+dQ81U6g6*7%3oK?T$aQ& zwe=N8KjwJ8eE(sYjER~z*Kyo=odw|+7rmyo{{8(&hSQs!5u#S%BY^;e2Y-E0RqaUc z@>iEGk6-F`5ub~V2~n#Gic2}3FW+}~*N#F*yqz_IAUI!NsBL)vz;JqVv(hz4F9Hmn zcIL}!BGRZ;ufO{8sFzQpRxOWT`oZy&9M506eD%557`GAZ_^AtZ4SNn$IMSPwiS%L* z44&80+RpJj5xuxLPNZx&w0}h3U2Yz=z%9KY8Wnnr2@D?heQW#hm{o}lOos8FIX%3k z?N&=`yQ55?2TN!YYHAzy9;_gu0HtE%+P5_7V0;V^V3-Kb96mI4Gp2{PwB6!(emKAn zYA@6_UaW6)ytWKj1rqQXK!9Q5671Z`K2oK#-jUt_rNS~`C8BrB_J3^6%a+L)v=#w| ziJQO=y>RS5$G`Xz~Di#G0~2gU1`3)rEt4rsXV-L=K0S)KYO6!nB$*mDM{mb z!=x1n4C7Bkb&XAR4Nd4UmeAl?s}lck@Q85b+6_~0pJ8Vi!}x1d!5q(N_T z!~}KlyKEh*80Xvj_j6Z&D7gxu@0Jg`(zBGRzU?%4-Z365MThn9vA=+U;r2i ykC6Z{fdK#k1^_If0Wg69009O7ETI8l6#oU}7pWVZD{#U90000*PN&}*4G`}U3MkY_jNhlsqRH}K5zM69k zNU7j4R(MNcsYZw=DTC6rcw~BLlsr9I?yF!d@rV2<3=pVrQU+0~6txbcc#KhA4A|yn z76TfEkjXs8TTwC6a7ajKambtLI`a9MtQ1ruHy_M zTqoBmHKdYILuN)y(g^c}HUH`XZ7G8QG%un;E9QmM>!jiPmA1pcp# z_o8)C1`W=Nz;#5LRu0Z1!F46B`*YQR_&VT8@wBRf4=@v4RiAVnQu0BMEI3L8OdNKzI^C61pTp0|_I&A*oER zRGWSC@w}~8glm=SaD`Y)sG!mQV#@dA7l~00B4i8Mfn#;E*?b=kVwS@VWOIS`x3P-< z(=!$j!!i%Ye}-jz2~42bd^h^Qd3SkmHMlWaa5XkmZT=P9xNM1tA4T2y^KNoj_sSWT zossGXB?0XIk&)Yu)1{%^Gwl~n&fixyZ;SPlRJZfthJDk-slVkm*HxU-U!KQev3~A) z=CXg2gT)rD)vJdO#d8CUIptOq?C3tx8iwlYAJH?jvdZm%)k4oqODh|*42HvFR%+^j zF)KT}0$5*%6b&^dalQ-b9^^j0@Nv}eT1KzdVjSVE0wSNAM!9N~_&1SAL z{(fyn{IvFa_n7H@C!>!x_YKVa!DC_Y@#2#ntE2=)QQ<`nhdsp$Hs4;fe3RepW@Fses7O=sjYh z<`5CbpY#0uq7p3-2_-}1lqgj7wW%kFP?wl zRi%Gg{4BWa*5flaK!5{hL!BzQ=aW{6^X{v`O&r4VOSjcoRev9S zof+$wuymlJc`cI$w$@g+8KjgcucX=TVQt-;eQKv&*_?vund#|A>}m*f&ja3wqto__ zxvKl!d&KtbBWwIh>HRpPq|s|ixAWt!0hcO|ML|Su?6mOT$Y`dO$qNn(TBa=d1!{*HFuWA}9XIjp8FBO-XYV^jH<NDN*) zcf#x{vLU*EZRg%3=iSZ@uBOD(rSXlcG$VNt8SNJ^fB)#MJM-Pn{>?ALPxL$?F@NPj zdQ}0V7+Lmc*busNLn3S+H(VFfQ8859!>De|X#Z>IUP^qHRpX}O;$nHx@U!@Xw=Om3 zEXZ-()iJ2K(rhZVLSHsKc57*D+#xVdwTYqAG1wZ8+hj?`1sEHwZF}m$Dh5OKMti60 zIeepqD`!8QKEXzu6kugJ(Q(^#ux%doI9nS4rERpoV{JPMr){Ls7hiLmWnKmNmiqc@ q%d&?u4on8z6CLg1Zd;9f1k;)_On%3Xud_9O;Us~fq6$IWhJOHRvfL{G literal 2045 zcma)7d05iv7XE>jq^UHy5LwzCbHXu=tRZz&(o7*!Gm#{h)NCS^+%Zui*U6Z&#-(x{ zElo@<9Z(U%v}kjg@{S}5h-EIMxP;IZ_0ql1bN{}7e9Jk{bI$qB^S$qTuKM|S>g&RF z0RYg)cpdQv01#SpKLy#S*|Q^Tr!)sB(cjYzXzDkc))<@Oyn+$|KyT}}1p@At!8A^t zB+PLSol%IHE@c08gKORz&kf9x!vU$nSrPH#I2N8OeSw?E$t|d{Us_+6_U`#1h82Cs z(C_-Lg4;Itet%+zm?1@+e}!!Q$5TD^hhdlG#*rUuuK>>mba}HW z6r{R^HQP?K02Y?I2Vi%tA!zk3H;ASfJ|_%UG@IeTwgpMx5z-hqvl3d`7bvD+-bEnsINU`-X^E>+Dm{$U9$r*1Y_qFsi3chN zHlc&>dr?L=1&cf~Qd9pTwRJ+zzKa<;-x2H+TD;$YH%qEZ=w3-siA17$hILBTn6;Yy ztkW7z@@h1j52J>E<+x5RxjNs zCX*SmG=EiW+X%+EMj493O|PwmPW(~o?ZhtyLsf>&X9)z?0%`>6ve=A@JU(?L=*bMWX{f2=0q12w?zYVW9R8kp;I#y8HUboRWj zx|v9V@Dyo{tk@q0#C#YIS9GrRPJVUO?05$6S;vOdXa%aY&k7&Tzg>g539I?3v=2%b zWJ@9*`-KR+(`dTTuor}e7Ms6Wv-kGpBWD&CPLRpuTS+)o4m3c(G`Y6n_noTufVLP; zYaRB!Wwj%4tnB0n%N>>rwdzw<||>9Vk(n4^@;U(!XjDp*+)Al;{&8 z;C2#@A?g{7@K>AXx1HLUbtBrF|9}X`;S}S@pysOxedFDtP(RT4NOI2Z<6;5Dh>B#` z99#XD;u^+q)C#zABf$~TG8}^|9=sa_IgG>UOFb1j*68#R?7lq02&=h&^W=PK-?^SN zH{oswI{owz;ox!mvhAr?m4}l<>WT1fL)3FihzrvxrV$q+Fs&5GxFv}zRrf~pG!3;w zA2P7-sC8a0`g}^W;#>o7t|W=FkUVRDzc8@Dm<+D8s$Ban(rg)Q>VfPv;VGu$yYd2P zU3=NxeAu?gLVtMwMoSgi6n2?DnB_~P{FkG&?aN;68-NG@BP{g*9{~A*zyJus={XoX zon-p*zS4&~H_Friq%=2-`bnPBMoBra_Brk>Rs0>wpt0~4`w4zN6oHAFt|h8B}Mn@;4d(zD_y-&P!sN>DaE3G;16UFW%v&;cu zc$y>jN1khToKf*tXT)wHQu7lbcj7Z)NPcH>2udwli9@Ov zqw9<-xBs^7y1R|e$752|+SV%Yvp!}l$_9@d@}9|uM;aI&Nk|x~*wORmSd?vYe7#yD ze6r528eU01*Ri&whtw9$Jk@Thwe%%1;b5xc6Np9uox$;L6f6RhWO;m`ACR@VNGUbKAGJpB2&jH7hl zXX1fOXE`Oc)`Jgk_|*<2Ui{?lmvQQSI&qtK=!){sB&(OVCk6b%vj#=t>E0G*V1~q( z;Q8$dMqlsn#FV0_dWKC==^(N5wUi7eaOF71w&pK<5UiTs+Cyn%dX9`O+jkAJMH=uJ znnsSA`#>{ax0vy#7Aq&a_gC1IH8o&&Ww*}8arAA;mnoWX<>&S49UlmrtH(sfRh9>n zowda-1(^|}7c<_3xeLggCSQ2B{5~lrR4!0*dsDYC6Z7--rU1qkBwO=@GxQUZl^zG` z+~@93@h>O#ae}$K%P9^6z$B)i#8t}zh|g+@bNPIxb(q0;eGL}`35Pry9K-(7t@t9z zkTlr5`D5ir%=%aPdJ>QGK?ekehT%7*grIt-Sh01`%ruGo#%t?x1_KUWN}~I{dvu?4 zneBb)&w*4kR!EzKTJi$2zS_(i2-V}jX=BC{M~ z>VoyYiAeTjp`huKD;fZIZ7O~WRDu69FsHy;nq~kf4bV^(pwia0rnZThc1gYaHPafv Mc=#M?ayygxZ*dRSNdN!< diff --git a/Resources/contact_ok_over.png b/Resources/contact_ok_over.png index 4fe6248f82917e3f2aad61b5c687d3170e82ad29..3b12187f292e40fd9241b9ade53e52a33bce5ce2 100644 GIT binary patch delta 1425 zcmZ{ke^AnQ7{?KfBCTmP^_nH7m69pnuLNkN^5w_M3Wt{|%tQQfPO;&{-=vbJm7xw4 zS6Rk9Go(daGj&>^HPLqFkILM1l4*%QYBg2_X6Vqntv`0V`~35HKkw(c&*ypW^;~g% zZZC3L9k~h)gTZWJt?gpBmaTp}<1he#!r^=X>@FM*@J4|c0QALJ4sIua4cLVX0P#1> zfR#M~4^RnIkVM2l_+11)d}Scq1w|wf$yka%o{ICgl%W8SAD&2rK%yT65FsoGR`NfZ zaQ|y+hO<#*Dh>;fKoUp+F*pJM5I~SfzyeD-cnXLID{!b&ArM6@4W; zKVPj=LN9~C*jUz;h-I-@Ve50~r%mR`_tj8taDMxutgB0_)wUmb`0ydFrMc5xBNjG{ zkB`sKA6u=rG8heCA3b_I%HgZRDIIljQedlzDWXPRIDekOVlCw7rKMF)+*_3rn@3Jg zPL7LLRrL6E&OuM!y?Zx3J^kQ;*c9mNo5JCsckiAz+?qEF@+*Hy z=kc}}imI!t`}$}!M9v)F)igVM1}gHGJ@UHyW-^4snH?HB!sGpwoav5^$1ZV<+Cf=ToT&%C-VMYmk#MknzJ~^oVa~xzE`HcKu;r zTG}wB(@nGHCJuS$G+etD#b6-Ykh0$uf|<##j1mCX?A&HwdgmAg*4$+Msx;6cqUS_;`{{X#q9VIy!o1 zPfw4Ap!mXb!9>5zC6P{?lh&6XiHN`h05N>>)eC`pj*7L~VFC2>(>#0fgf*a$$z*go zokF2V7j7rrY;1JTXqcFY6>7Fz3JrI6E6{TB#iAAZ*pg(Xyzel&N+=Z8*VhLv(q>Ui zMP^2ZAe@6*xu!JBqibvGINDGlf6PhU>k^Bjg@o`3E@AlkVC!evO`A7wv_nYyjYFHl z(N(<(J^lT%lMatNrlzJgKrHf^%&e^T4CU}JL&XX;Y(ch&xs*P`iuMMZ^J?0|N>fz0Le zL)_vy0zrFity|}!$4q*_E$wDk*HFbic2P}XVd0%SM7cs5B)BA%%8n(miW+L&RYU=qchAMYeDh*0xJyk5l95Wxz@|( zU;Q7Wh2wvXmdrJF$CKHXD#6y)?4l*0Ex~2^=^xqt>uoJ~TaZs=FPUOOQ_~GQ!j~4n gvi8*7bm+JhEWr6*CjK{Rie>e}_ETu&>kzx}Z%u7%UjP6A delta 3298 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 TJ*KG1^&^W2TP?4aZp!@^GGxYm literal 2974 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 UhT5;g&j0`b07*qoM6N<$g4xrlga7~l diff --git a/Resources/contacts_all_default.png b/Resources/contacts_all_default.png index d062ce11cd26952680dfa7df029649be6522ce9f..2aceb2b419b9fc54217ba549a6fbc4d4b55aecbb 100644 GIT binary patch delta 2951 zcmZ{mX*AT2|HUnlB^gVN$`;=u(JaP{5X}r@iJBs^MM`$QA!PedWXqNfpHa$B38vu8S?W5yOnH0oA5zSw(n~k0hFdpYC&l=f1mn@gzWMq5IvtClSV5@5r*Y zPF{*_W_N`vH8*7r-3c(tUU*P|H~c3rO|mUvhg%V z>5`P-RX*_*RCG7x*?es0X9)06aS|ezpQ~^@7f>bjP4o2fv|eiiX<40OibLCVSdn-9 zL*=w0ScNjfmhiC{(4|F?ad7;r<^B#cd!~55Lz~VH#lgWF3;TMXF%_&ZUMavuXl`M{Va%d@mK)E z=(KW%Wsghrtwf7xo+x(-?i{n}LBlRJ_*{~3+;M%uLpevfXNWUZQVPqn(=DQ8p3I6^ z`e-LUWG+7rLPx z!m|r@JwrR-9^IKWyrg=8#{-?{*^>In|E@CIbTgb!TskA;&(`hXBJUM?1U2ed_N@aq zNBDk}JXvyrf4TlS3>Nbgdm&$AkP^Bv0*D{t>~wie_?q|oiEjlG9<2Q0S4mO!Z1EHp z^kuB)HNkq`9-=E9W{LOuXVCzae0wP_V|BS~X(oI-ix9r5J8Mbfr+7{BO-pDg^J*F% zZ%e2RS&6gdP&OBc5-Fn%jrG2}%)!P;?ouO{*ecr4ebdmwrt?smvdP(B2##09D6O%> zDhjb3et(s?1Zlh5@#l@PLF!iJ5vVe&6g3i1!!Z*aS^eGAi5=*A2CNYY5o`*$02m^T z1Kq{B-sAL|8gT#DZ@|PWl;bMjU9$<(FLK=UeLvZ<&umKI}G@xY0ro`3e@rot0M+2y!F zisF+|bCJ%Qs*k<^RmC*d6>?0II_LUpH}ckX6Pw@4PFGNCMne_sv%seuuJtkzG;{O8 z_6wv)*U?E|`MomlsY>RsKgYE@$T2OvSKc!-W{QcQ-0j*N&fgyOkSXtRVd6>a8=TfD ztPhH~Y&UG6+CDJoUQQuQ?*&`x)is|N`XHCl>(vl}Yy%3`Tj$s|{zA+CPwmKE8ZttA zKT8;#JurDENk=+j@%uqS#G=Qf7l${lyLbuM+^NyIDgYw0=u%X3w}NuNmWJ&N+Q;VK z7ZJy`$~NPGn`bN{_mk)PT1qcR49Q)9D>9B{zs64us(N2BYFGx z?s`5BC@);Ln~0s=H+>S+5jD>)g`Tx<^5WngQ7)1y#pGFD1H)N;cgfshLY{O~`@V7N zC40qhmhBw+p2a4xC-*Wrl{*vHzY@u0S|V35 zeS*!CgfmNsv8R$kjlo2;=Z7q5*Li-E!_Nvs<>k86FIdfU>UC4 z?_A2-eXgW0?LT{1xb|B0Fo$FnDgd`}<4jBbg1A`=yhVz{plRXZ_xx7RjnXv!wNg%& zf~j6&3jr!oxBL_6Z^y$m_JaSU&;r$M^KhE#!M8mZw+i@Qgt(VQ)0#n<%$h5Oy!s)q z3pt<+rwh3~ST)8D>OEMp`J_2cA{M-xl*+Uiz#X!gA}&eT0krt2Xi&XxM$BS@vFuynu20@d&2=u< zCg=91eb&S7&Y!`F6nKqAOFm5KDRJl+33CPt`-Ua#=vQb7Y>=u5HTJ$LpRHh;%421Z zQ0*KD&TY{qKp@HU`@fTIhI-9bksN9#xB-rIWY7K7a49KYdD0&-ry!7Czi5{dz_BjNa>+O3c zKiX~gzK%czzrXPV2Fd=MAOoH-5=s2^Ra^NQ(O#CY?D=uHOCr1o z4>r{Jw}javEQ>qUs|rFJE;h#TfK- zdF`4`>(jv{5uEh7XuD=gI v#G36jmkr~M-6N(MNQ-P^Kc{jaojhlcDo2V@88UwdH;<{&Wy30r^TYoDrk~3l delta 6388 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 diff --git a/Resources/contacts_all_selected.png b/Resources/contacts_all_selected.png index 18e7eebd495c5800b014cbdbaeb0f283e6c566dc..d5dd11195277aa61b72518308d442f36b0d9616c 100644 GIT binary patch delta 2639 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 B<{1D0 diff --git a/Resources/contacts_back_default.png b/Resources/contacts_back_default.png index 416ecfa4b40e61edce0de49799dccfee05c9b81d..55a03444d0d7d73c16f96a43804e602fb8f7b48f 100644 GIT binary patch literal 2118 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 literal 2521 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 delta 4449 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 JRjMGL{TH+tTj>A* diff --git a/Resources/contacts_default~ipad.png b/Resources/contacts_default~ipad.png index 4c754a33b23239bb006e8d5dad378e892f6ff0f2..804169f9ef31aad5f337966bce9c4a2cf9060f7c 100644 GIT binary patch delta 2020 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 JS1KYy{{xaQS6To7 diff --git a/Resources/contacts_linphone_default.png b/Resources/contacts_linphone_default.png index 0a75d15f05bd419973490c1d3e7bad04df91830d..c4a013fd5fadd928a6e790df2dc65d92dae6e4eb 100644 GIT binary patch delta 4060 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 AjsO4v delta 8761 zcmZ{JWlY>(&@QmBIE%Zxv$(@9QnYAGi&LE9P+Wevv{2kik>a$tL(xLRt~6u4O9ZkEFml? zEGi}`Dap?)0u_b|K}CdwMFfN;Wkf|}pwRj!VRT~nGi7CIC1uHH63UWLX}EBj0tP*^ zinNl7l7xzql!UmLu&}DIlqmEcMo9uLsidSNE%Gca@c)D0|0}2k!-@$mBKiz2CM+Tf z6@f}f2@6Xp3yVDykrEe|`o{|{ohA+v_@5NKKuQ2CUT+=^jRjLf1^&W+$@&q6QUtw3 zCj&L3kByhoaZB#5_w>M$(}=-aUvee)p~X zYTziWSo?b-=oQlczTc=9$-=o-OwKx zA8!iz!x%A2%!v_#e0uPE{L8PM7#>$BQm7BptwW0hXYKMVs=~Ysbor>bxHzf4#rK3h zS>He0{)P~s%?9876_4xaOnnS= zU8a}yK3p&85j46_$P%(F^Xdlgsr~(gLkvrp75Ei)N|#goU z50VMu+Dgf5aU@K}+;g@L3E5wJV)%ZGj?eO$1@Ry``v(S_tZF(|VzycL4c_dZ04Bhm z{P?0|WJnQB4LGC0r@S724a-;9St3M4zJ*!gp1&~oIWMyGlf4MkF&1H9LAzc8JbwQ| z&Ml#`dBI$WSWPGQpYZ{lBuyP6-|T;xef^xjxFub$?{D$zAA>DkP9BBx*RC_t0xcx#n7GzSTtaiP}M&K9o zE+;XXmgq}6Rp!=4cada1Ue?E()rY15YB7Ohmns-pI3sq3eZ*rYFWxk{{rj(38X)VpONnzdGnCXzURuR0tEU45+}#ThU!4E< z_<*ndfbvTF@g|y$k1zQ>#H+l>?%aUpb-qrXG?nfVF<&+`h=xv9mX$mw#~6vcQ(irX z2_92|j9G5`ZZs;^|;wXyAG>8)xUDZ(<~xv^z?0 zfW16CpwM8+Y7Xq9y+hyy){5)Dx78KQ;ML{0VY9*3h%Io`mNQjx}-#b*+H7jqC@)#Men zi`kfFyuR=!O2O!sCWq%I>+L~I(gB(Ahl(zkII~Um)7Dp*qkU#$j0$j1qeRKLtfIk&!J%!U8*%1lQm&a3>oVFDt>} znI3f%&MkV{29wvrd2bDuq$E}6DwqaW)ooB;Bq0h%u^}d>=)KZUn1_|u{Y3j$%xdEU>K+F+ ztAo{W(FEh=E}R!x%BXq*89fJq#cwbtFpGU!Fy0|5wO3><~t2qO3fq4`qYkBib}@ z7)9h7zMWN}0@4S0s+rkxo8dRKb=OEFr>7HRr+&X>2phx575(G3(gYP}9c0xzc#16T z0Z>S!12ZpRyOV{kAtdP__A`3dhp5Gf_!d6=d5gCYk-jFu3@W1j5d)3$SXcCaR2q^= z5ZeuRr4^ah3^hI(sIljj0Je{&)`=~-iR zKY7E{StRFq`Zw%0DeRX4^QLVL$dBSfbN8s#ks+&O+3R69o(O=aN`3S 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 Xd-=B@!g|08?cdQ*)lsQYvWoaWCeFp3 diff --git a/Resources/contacts_linphone_selected.png b/Resources/contacts_linphone_selected.png index 9d240afeb881e833bfef8226ac8ac88d831105de..eff04f24784c93403878a4c831299f0a75ab1461 100644 GIT binary patch delta 3556 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 diff --git a/Resources/contacts_over.png b/Resources/contacts_over.png index 1cf7fd7abb726e62b81cec6ca1522516a621a1c5..7e0f661ba9dd56d583b0c692a20da52337dde2fc 100644 GIT binary patch delta 1855 zcmb`9X;=~n9>xLjKJXYtM^hxm@kr$mR1`%)lYFMyGIdP_FUmY1K|B#0YRb$LFFaBs zuMV1>8r{)SYMLqYh}z6FjV-T6P*aCVG<9a5-Df{-&+do)|NhVW>G!^!jxA>8HkyDq z7789r?%OTu~l)EDn$Mtk`A?r+{$b zDPW4Q7i4dUgE@W`myn#!X0T2=33EYv?2sfcEQ;h2>=hVoR!sdYq#o! z8@Jj<1wiy-AM|CdzWoy!zM&mrPKZP~r=@8&T!8-+nxeSTaOE>anR3)io{STTrV$Ow zA%}HtGvtnxp2ZR7G^_hp^44D;cQ+tuEc4#7^o#-jiLj%MIlooRPPd3Uhfmm25Bc`r zj;tRZz-6r%bf5;Z7a;zrTO3+=B?m4FdOA5M2=j*0Fn^}hD^uJeH?Aj}cvr5Pg8o{f z^Wk(@JKSo1Oqa=Cc~A*3A26w={WAC+w5~OtkSXOcSN$U}`-{L2_v*GE(|tcX+b@Aj zX|1-!-|hR#a@UR0CPR*eNDw5^OvafIWLq$Q`q0I5KItxL#s2hfOFn}i7!389bVI8m zuP*G>^*d%SC90O0XTd@0)$tPRRSo%vk_Gpk z_pv;-mfqRGO@2Ied1vri$y=?`Me5R^j~Lx^p9MuHI4xxq4edc(YI>yFR{b!MI}UoT z(6=toFnO?U`Yij>D(2aSrhknKHyTxNBQSV8yWr*sq;E!2c#xVqal7M$^rkyzSJbdUeixesnY});9L;f?tR8&RoLHy21mQW8+0S)O^nUMgmt4 zc$+!5K$8^o#@rcm7 z1||09c9-W94{dyyHkQ&~)`VPcvpShhycg0UKzJ$x0os)GxF3z|-SmuC_*T6pKuN6n z$F;4P!Ci`OZE-HJU?BVHV%{7#Byw_>ysd!JHWk7buN6uwP0w%8uby;4iOY*z)|!h; z#K1Q`0^S6{py{1vzFJ)*$pGqZW$ZtkR4da2UIEE@E7OJ)nQu6}$mo8UQ`O_`m8va9 zgnIxt?q1{O^6{h2)gzuAS3!si554JBooUz&Siu@!rnx5EtvHAHNuj-1_noNSrv9)8h8z#?XY_YejngTP$(o?YOCq^0Iwt+5k|I{_!yPvPf zBB(sEBBv02BmeHxgjWlKOB#C%w;(oAEc3%1Hh)3(Wfu$iZE)((i&oln%^`l-NGz#9 z%pc#3%mbhA%c+U@^<d3h`k8 delta 4540 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 diff --git a/Resources/contacts_over_landscape~ipad.png b/Resources/contacts_over_landscape~ipad.png index d9fa24f106d4975c9d3a902f71c2b9f333bc886d..9362d7c69e95f38c1bc2053a2796fd656521ef90 100644 GIT binary patch delta 2341 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 diff --git a/Resources/contacts_over~ipad.png b/Resources/contacts_over~ipad.png index af988650041cd84f42272566ffb3872305490ea9..0dbf32da56a0c4d22248f9e925a9245194ac9179 100644 GIT binary patch delta 2080 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 C4a*|{ diff --git a/Resources/contacts_selected.png b/Resources/contacts_selected.png index 002335b08b6746e2a7a4e47885a584e20155d127..04f579806a88931ed50abfe08ab1c4dc20eec12a 100644 GIT binary patch literal 2455 zcmcgudsGwY6`w>3@(8bLSukRZtjHpHK@!LkA|wO?Bw#>@3TjA3h>!=#00CKythjho z9s(+AlogN)2)K%96@nJ6fDd%>Q4r0dfGc7U6;x#D#1-4qQ+xVX=g!RcefQko?>^_8 z*%84DLRmOj004mE1he??s)3&ab4}s5P_=>rFOE>40E(1vgwlmd5bzhv<3S8ZDogPPi2A&hF1#}cp{EqOlj7T%l+@B zQt4-F6~qVs8Sj52Rz+nfKs+B*$y1dgxN#eo7+oo7OeH9U+FPc(PxeRXw2=4L?0O-AUCw)RV3((byc=b9zT* z8Y`*T>^RavPjFnyeMP3yKh&q%ohwP1gSgG!cAoFNFVyi&#UJ%8cc|}?*An{23Db*i zBv#yjEQV2d$obF9xppr0SrH+P&ZU66yngq5#NP3v_F#PneD)@}8@sii`+NH5FDp<~Lw@q2si z4=(ZY4JsO$8e!Bqh%6fw13g>AF*%8G#q6X~a%IPO-JY)R)>mhGgze&zz5Oa^j}JHX zm0r>IwME)YU+vk75iHyGXO`#b#a?6~uCGjEOYv=XI zck`zdGwXFf?Z(EktJ^n^V zGRe!``6@0|C_9aEVHJi}Eo-YbE`O6}N-pZk~9=hmOFDN(*gUe!+h_Tg=*>n&!l%|*+IwW+bvA-nTH z?V#4+p4H$tKaE-5N;?~qzYh5IS;n{blJ6tWPBB2qT)k&}eAHn>ZTC8t!t;!taMQ^L&4gUj?mK<&1X6_g)cWMXlr)=2 z+ZEr8y<*VJ_LNVq+u`y{{146@yXFK3W{+Q8b9CAOg`T?kx{G6paoa%Ye#jC3!BCd(zoB_%@=XMp|2T5jFuGdpZES{$BX-~kl>nk{wB16H;Z(D!_f8yWM(Yx zhM70{0%go~eOpawTIVgxvAc(K-Tf5Byl97rdxvko4AKPk`_2qoeQTLmjcx+`s<%xF zP&LH+xbmo6@JpJx_GWH;KJY`zi#e3cI)L?(`YodLlderX*r-#UcBpk*x+tN2_rLdU+1#@|INh z{Hk~k&WdA47v~a2koH0Wy3(Q0o26-I0!SAb;D$-D1rYx)(Ko&e*C2pH%$cv7?ItRW Pze=1y9;-fJL(V?{OP0VA literal 3291 zcmb7Hc{J4h_x}vC&0wN13`4fmj5S-B8PAM0yD73I%alh9CR=tMJSy~LolGc{ku4!) z3z2P-$T|$7GTF0a$=CDW_xI25cYf!d`+lACdY|*Y_uTuw=e%yRwWTp1uNW@?0DPt< zc-v!)Irc}~oX6*NGFI~#INdK9Ea%fhktFuWH8^|w+8|_S5DsoNj!^>#yNd(!{W91y|Cq=MCgcAn^p=f9 zM<4jYcK30B_&=?=v90#H2rKcgevHEhrK-As?31&y0a8!c9pQQ$mwQ3lCR_3Hd%3zi za35IPQiD^7Jx@#o3kTc-rZFL`6{AHUbo1Z^8t|BUCo1wA(`U{+!Qk;-t8QV>vw~g$ zH3hAFW-OS4tiyeY*Myn(7Yq9122H3R+XwG^D|I!9@2w=f4^|v4dD1(v>v4+(o$dF#u0F#hEE&72jlm13n%D}F_oykC5NK*~=PyAYcI~|Qwyny&*6hcT z>?*&1Y+5z5TYPGB0K~f5WCs0H;>nWZmRuh9{dM%ppJ<`kBU{6RTtu*AZ*jV?oTgPM zNRF;{k`Vr9^`@zCjO=Ny^!b{d<{9m(xyB~zcc=F3EwUO7^aZ|kJJR%jhU#7&HBG!=mAi8b&uuwB}Rdo~H3{VHxcY+9o_ zSz537+FR_oo||rZC=reGkg<5iV!fYtm7yj}Rtw!WxtOkn28JQAAqsF&7>&kMi=>C4 zfgG4{4lHWVsopjtM?6T~Mg&=feh`4#2Snk!zs7!xlY;RDj%LwD&CF7dE{AQ9HU=rE zKJzu-^tBAsS>i{gx&XGE>RdQ-|28|6e$=@M!agKUGEIWCpc+RFVkf@1*sNkgI@+4f zQ+vvtob<%xT-Pz)L z=6VY=u8b-vepM5QS*XHG-Msa37!8}!AYGS)7v!=gS|UJBz$g-x+tHy1xPh4hJ3pVt zwM~8w9HPcMY#)A+=RYPx^1oXROAPy_UW;@ziI5E#<992q&w4TmyW)>-Zslw zP>HB{x3(j171R*|`umFn5&ocE`Kub#QwMTSpcV?{G?o{Os00BXF&PXsLpEKk1Eu+* z@ccGUE7b=mmE(yIc?0UZ9?DcH(s#6+6)F{z=R}(4YGA+KHb)0h~8Tsz&@a>BZ!>B|mf#r60h3a3<$;%pxMc`xjK7|;nlcS9VI`SqsO zHbc=>;Ve5Nu7CS%+pw2A{hG4FcL~A7Jh0a|8@!XT>fMO63;Ga_kREYCAa4lA#Q%8l zqWF|kjEPPH%Wj#30wrK z469k75T64AQHU>?$CgMo8=J%Np+HoGB^rJUTZha&C!f;ygD~=vL$DHSWY}%QQKo0&psnPf@dXO zJD+1|mmK&zbn{mRJ}1!6kF$ccwOZd^wrr`F6-e<-^bx4BHY8j+m#Y9c|90+<8_yN@ zr}f|z=P;o(iEv9&ge^CK^1nWuvgMWa2(C36ewb}$;~q7&th!uIkINKiO<=n#Psu6e ztu&`*0e)pZ$*8E0W?u6(d{gDr7SQ-z%)=#=u(G~d3p01|wL_U!(Sx|s5K~9J@=3Hy z2kWfV=#`I$O}1G#c@oov95}NbM4)OT`zm(i!V1hS=Lk{xW+FE-XDOA62=UMlS><1^ zju3~}->FMcv-c0Z!rai85HWJ;Pbrml^S|~?DUwB=T$ENAVZU8n5+xKt89u1L_&N)y zm>NB-P^cf6DrvK|1502o@={>JzoVvq)i9l4@$AtT=XXhZrtQ4&_hTLyk0lEBow0J2 z=C1Bu;4#^K~0EnQQN($ z1jS%dk(-DI*lqnuV@u|MXGE-r2CB*NVU!FCbGNmv_*r6u&Fm4HchYz=!d^-r;iZKl zZL}DanyE%LUspj{Ox2~J7DV{mC0M9LZ}uFdnX^7?7aJy1(iqv#ZeWL7cRfrm`PiLQ zm7td5#V>lGIMgZv^ugfoY0_JPigw)hBH+&Ri($-(u>7V0Z7~ZRs*Q+KVpSW@)yM)_F7(4VI z{t2%(EHYLD$j!P>wKavAbpyxqlc{?nM$7ke?>XoNuGnj3!gtJlG1uk_#G`}pyD2kc z#NR3-@im`$yaXnSA%PYFjV~)^yBaTc5lr{Cim6^7)g#b>3RTnYEw2_*)}~4Zxo< zbbvKcf!1vNy+bf>J+jIyLM&=%uMJ2icWHLtGjw}e!ln;di?^=Kkc&EW)>iwrT#1Tx zR~S>b$q0SPJ>~Oa*%hO>wx}31;G@gPzH-H~B+@92F?IIM^UJM8aVoLdnc91yCFfx zI^`wZ21Q%_YLtNa0m*y)+NJpH;mUD~IPL5=rG{llABBnPy48=sMLV+9Y4_Sti}rS78*%6`jSsk%)Fy)?Lz2} zg}djn9m~FxcxqR>vUtS>Hlj~kF5KiPV5riL!iwnomM_8&&e%PfV}@zDoPO%pi1Zv{ zp;Bul63=*?^$)tCRd+eEX-5jqb(1HES_eTycX;h~+ry8@q7c5d>CN?ZkJ|j!2-=gE ukIi?Cb>ae*9toNJ|5V?9>BC~jBQ9$q_N^-okUd^Q08>Lte8nGbasL6DiQLNo diff --git a/Resources/contacts_selected_landscape~ipad.png b/Resources/contacts_selected_landscape~ipad.png index a392db3504d76cffddc93a98701d1ceb702d21d5..96e4f90da7c3f7812054352367be9461b37afb78 100644 GIT binary patch delta 2324 zcmcJQc~BE+8i%_R2#82vmm`8)9ynqM9SGqNgdoSF0)rypiX6)&a$}GqNH-p+BZyRX z1r-P=hXcqVN|10w6j5gc5g~FJK;^y<0|_J>v}&rX+S#i8W50T;zUqG7dcU`-`>S86 z(Y*4FZIVEvx%2f5?VrG%83(WLGSu^fh(s+inLs2Nk;z27mH|XG(1*m3^@t=hBeI!+ zamG58-Vbi4p9VwdbtvsEWUZeZef@&NsS#&R?V%^2)HMw$6jN&=(az+65s_$1q!^nT zQj8!2JCY6A#@5b&zW1=l6Xu33VOpz-Ta!Qnh z!VyzorFMFteGaZ;=HlD$(3UBj7+4PkQ{?h{GiS*Axa(gK3C(_=&oPU zB)lYAyXQsd*@XZHyhbO!yfJI8=uu*q;6yX^>t+6qrR~xqph8lUan~{V_)z}zu|JoO5!t))okIDp+)X$ z2$5Ag^ZZr&o5xjxST3zRcBEc_&GM6|pVE({F|+g>`#&6?Y;iK>Y@eYeb5CtupM$;6megFUNDa3$SDl69Y#Agc0G zCeB993I}+?soh)MoY!8D7~eFL@>H~KAYJ3*g+wxKCeGE;h@80PUe6@Zt64y@=q}AX z@tgTg+0}3-x?FBilB)+_+9VAS3Ylu~(9$jUn+uY!A7<-09xhH#s5<&C*(&wTg`8oH z6PTp>?j-+-GW6!iyIur>FH2>*_sM|FIt%^rA+{{~_|i!QmB0E}F1Gg$I0ngO(z=!| zV+HY0RCcw3)Z<$(;sOWwF&eQaJ-{Fa{@gJ8AoA)Q)R9@OFpbI`w&bQSMPbe1+|_H3 z$zE@HpYtRna0%rlB~P&1lw$@nCS~nar1sdGwvi5(PN)A8%8AOFpdiU!8U>XF7gCi~ z%0?0$qa+DFVP`tZ0knBguV>}!U$#+uBmph<1_*!_1E6F#kcKw+E`D_If0N(b($A?b z2&hFvu33vWk+jFgLt@T(4AKu0hNnd0_FI*z#JA+789$A)>~MVYCAOm&!8 zyljKR{d`^%i|~}eqP;YQ9L0e$?2TB7wJASQV#ig|=)MSZ-pF+jLqzR=J_>erj4{Wv zXNw*Bh%%T|BtLmG{UN6h?eVDfXp=Ksh}sPG)a0Bw_khH7;~bhMLMh8v%zqp>nyN<>5fKUaON8OEQNF5G(7bMWJ>^}utj&iwrUpZ2^=B!u|uj`XSB@A@NU+nC=lH_V1 z=eIU){Qhr?4eqmwLl45{B{AkGIXm`}Ro#t=R?)Wh{T@RnCc83tXPus|cS?2KSMj)| zPz7|BcFaBIb(p_DMjW1!4B3cDYF2rOb8p{gvq?Lv|iO*9hl?4^Tz zpG(Uw(%$Fh$18a+;Ah(tE7d&bWy^ktYVom>Su=&#DhLdG(3vLsj-ojI%h9lF_Q?58 zrMKaYpsa4gF(ZL=^LlHc0;JB0K5d-Hv#ECYs5nZ^cl-OtTJPFTQjkZ0Y0M6}I{HUZ zAE{CEU)_S9y+`*c;7%dpSy&kns;}Do77I_;s3T8*)dh9nCekRaKV#Nq$B>Tk95AK^ z>ac8EVvmbIXj>lhFFtiKzDJf5XuzRsbIG>IE8QG|*V3L(j~bSQzKFJh55|H&KqtIJ z;oix6Ag|O0m%seZ@k;D5hoG{JAE7`k7#~t_+lk`5Mna>98Tf^?q}^Zgm{={g>=Aw$ zS33gMv_iIKQxi;Dr9T9pvO`QlJOxB1t3FBZuAe9Nbz zLwy0BzgD2dO`6q2dTtYw;@f>8a*-lyDdL%gPUC|v-mbY*!)TOa%coAGqU~08M+h>| w5b9g7{gG|of(`yL^?sE9FPA40>a&56!I%Fi!`}6{4TzV6t&>f;wa@u~12yyAE&u=k delta 6220 zcmai12UJttvQB6Mf`C+M0Z|a7gc^G9MMR_qA@ts)*8|d21XQF;69Fk9w9rcg5flM| z(0dmG(tCUS|9}7c?tAav_0FtWYtNiHYtR1n?D_WDrYjMB%}faXCIv9OVZR5qd!reD z7s_W16@#*g3GxdHi@;zoUN#}9AXESOKRY5_R2oxp+6%!W}6jv2dQiTetC@85YiiktS6CLnaAc`sq zFkwZglB$TXprDGNf`W>OlAyS_s-l<(OjtoQk@xQy1=ar;a{|75U6f77(%R9@+uh3{ z@gp9TTUAL=R76=tOi=6}lPicRD+>upT&+Y&NL)eeHk+6CBU?L3n?z4M>i<7gD83?4 zD}3J`1frYJP*!;CKW=q)c`4Vfj;Bq=LG~)pzYaf{m16f&(xvs5cX(<#+g23uLeAb+ zv49y_)l6%if=%mbUt1fgonTeDJg;@s&sVRs$$tF!fxlpB%6PHT=T397lF%2dT3J+H|B^+n=3-( zSY^MU(~wl&f@lt?CPxI+JZ2UxpdGys_TRq5ud*zXkKL6M-}*$tpo3(&00?TURaIFF zG~TizlT~H@F=whKh%JmkO^r|O4^Qrt%;cOsLGPExtY~erVD?JHLx9fI$uv-e8$HXB zoYSwNs%}Ij=0uXnMCaU}7VQ8Bp? z_WpkMdF|mtHmnwK9v-wfC!iXAt(8Gfy0d35du~FGC_R92(XzOv`ZbH+$$e_2KCNYi zl!T)30mgNXft$-4@l-W6fN zsYBX)p1Nx>?fp;qJF{P2Mg#OwBdegA22!vKz$xTO^t1kJ@n;!%@o zYnG{1fp-?D@^1z|cdWxBg=8Kgo|wJnigajHZ-bR~Ms~{|jQG&tLmBP#hqZ_gDy4`|@b1$<$RA|2?eg9##=!}AsCiRcJf|uAq zLH4DIP?{*q*t?w2MyW>J+OMiq@l(nZy58P0O~C9)2-xT*$%}~CqH`^Z`biqN%9`VG zOC%;rk?|s^x7nc&sQVR9OhoXvMAMEpY@K^1CN8!el80WKd7n+kIX5rfI^!2yX&%@4 zL~UzBWK1h2uLA=ZDAjQ4e_1Fzt9jbo8+>r^a6h~m!gw5rath0k#1rws|Mk{c{;kjKOcYO<;TyEW zBiB#XoyXO2BTfc$3Ex+N(!LjP?P!(xgCjSwduDhp!EzAZQ%5H`gjVzjkGfB>N9(tS zV4c`cZ=6G^-zAqwwrZMDw<%Xv4Aj54B@2j z!(F4w6R^l){OWVdcIOa^h0HhZ@!My6SViI*Jd@PQza;f2`8UA;GqrLR)8{Qe8nQKa zu;Q^|#+p;#3DS9As^eZ+H3jnyJFEQqW=!q0-Jp!!O$?Tilk6h3poq)vel@TdeBnvG z5k&qq&)RFU;8$$BE_SsFljwKx@`OujmEYWeMCLg{{!jVm<`EG@)3y*GHqQbwh}xj6 z6S)A7t-Lld(XYvu6<*;9ZT9j|!%RzM+Xw;753>8foq|d_l5G?|o3etY`j+*It3a86 z{{GOWuJHJ9#tI)?PodCn8TMP<;Ybb3Q0(`#ob+YBg;_1HRl-ttZr3c| zN$1p%a#Ybv{U$pu9cWAxoOxE+eoq91M+71u0}(S^W%!RV;hyzf0)VW%>-I8Tq=K&; z+_`?E7ndh4+=Z7)r@)lnB69$+0Cn%rVw35@!^M+$V)2%vzQOobtr9OZ`J^o zl%c{9)5(y^o@R;i0f3Lux_i^u@X%0|uE7*mVRGWWG`S#Vv@4l?sjX>2{$p+WAfZ@y zWmvRpv9ZXoNhhxLct8omuDq_wNOh7qa#p_NB=?(X>(~ljpLu_3Vd1f= z`S2R(H{fEgD7k*)_Nly!kXCC}vflBzTtH?*nUC;xec53G1(3MlrCHtJwjnTVpZNx@ zrkMOjiYlmW1if&iF)KzJ890tOJY1P7QPWG8?Z-r zJ}jLQC_r07fa@0XEn6lH*~ZzZt85&gpD2bjOy4R_&^zVPOI0WxcSPzo(MfdXkJ>BX zCEnX-Epk}>0Qk7VsG2nf`{RZ#ir$S4j2CZ6uPwDzb=Ypgh2DjaN`$zM_~!Sxg)|uD z{k}`X;c=l|B~g(sl;3+hR|FgBNeAYUA^$u~s4`%lJitR9av;O{GB`TFhbNDCy(Ng} zCXQia*LARAys+zDMg6|a*;^aeryLDF#s@7W-s8<>RzQemMiSpWa-+iCS?9Kx;_n`G zcv;Ldhpln<-@>~SE*gqI1w=vghv(z!vE8_@_R2%Wo0ogW^+stL%MHuBlnCCgLf;a zlL3oUuRWp+YN8$!|8o&Q*I^`>VVT4bpJ)INICj@a%9Ph3L(c>|uRTl>#Wrrcvo=#l zvilm-{tCLzTT4Gh3vV{kx1GAs`)X!kFd4WeR9HLqSv$IK^I2n$dGIRz`F6i`rxe}z zD!kG6GE9TgJa^GIt>RwazGFWk|58T z%kM0r>&6$)ajp*Z@b~`J#HHznC$6$%+sxvv_k*ZYz3`8ks!sVar-1^i>J){$GEq-Z zr!q0M6P6Xbl67_Z`=G8Ud}nko^|L8+dI~Y)6vvM#1?WtZ1YW6uwp^wiVkqJWXo1MM zbX9WjeP51G6|M+to;*d+{srL`YJWobKcKxb4ov-@q=4{)#4za~eD7Q^SYt~~F z0K+w8Kp7>;=^{^IoY<%(nG385z8Da|@=Gf$;;Sy+`$U53(%2O64jRMLK!ulK^kA@a z&9ED6LfFso{I_u%gLvV#Quxr*X8$Dz>$dfiV#D1_K@;Dw3@g0%Bm1IA&KO+U_pzO! z#35zebX{t_b~5thpk<<-+6PTHe7OG>XuOZhBbi>)9E|E+ouG9^n+0FS2MMEJ<}Jxu=#Cnn7@g+N~}+# z{Oz0&%0POkrWDIXA)%eDnx)&)@+4%(om;Ceb}xtJ_XFd1F3&eJOVKiy{T6N_fGT?I zB%Q8yBK5Srb3!h`#8AStsd=lrQ%?7(#BQKzh@-8o+Lvzvw<0E* zrha=kMhbf9!A3HB$W7XKTMw5)#43mG&n2;?CXYqp2DzO0`kt6>iE&}<+W3#860q%? zxiEZRR}J@gle%WbV3 zb=a@kr4D%ArIaruLb8M{Mn_rY)Kp zXVF7k$g(pLYWP!sjjt;vT&t82!uv}%Qoe7deCH^AlLaqWM~;hL2khB2a6J330)#lp zKagK`8X)<<+9h`A;^OEwqGIs&gO8xL#mj&+v(!}4w^HBIAuZ{{sh1_J*LPc(LpwGv z`}J5Jr4a0nT#Ik;p3q-ru}u@5d6E3)8&a4<;qh`C63L?4Bzx?#Bg1)vd;e*jFar}Q zmJ4WHiw%08pLDG=9PoP0zj&;9Q0BQqNrt!%H@MLp3DXVuyL0}eXIA|lUKK5W{a>3Y zCF1J+pKal)$^P$-d*ufc{oRSL4By^MylOwW&pPis89HaCbSm!LGt41gK+MhNUZi;f z(OJ?M|Hb9!3p&`0c(r#KEKTgpx0<>4muEjy8+H3*BUoQ9C=^0zKR+NOiZ!il{9W~} zz{e3Yoys!NLZBd4S7+!#~0#^MCz)gMEe|%gilsxb#a{BI;dNQi{ z-I^;;Y+ZMZh)l&c_-HA6(m%lJ@C)^XG?yc*B1<@n{7LJ(tq3vkBk&el!0 zL&SzU9zedhSE^is53v1R|)M{Eb7y5Nh>C6|02%%WoE#W}{8&hy&8PinLfcYh`F513mBi_9j=;l^soPSfxk}V9pXTlIoRu=XQ zVM+6Uu>S-4zwieUTtG&STz9gl1{^xR?OOgmO zOvMw0+`eldlfsI28WEzogktLg7;m)8Ww1&$iY9%86A$nzRf=k1MxU2Rxk)F;aa*&`>pZxj6C<0?bF6|%Rz#*A$}nh4VUjV zPjzP*Gg!#wdXLqGdW+axMk2LBUMuQ+qhB^B_NAW}p*F}G^msqhgr_6pQ;pV&3BNjF zDfC=C@By%N;y>#|(~w;~##TVO@x6IGd~@@#r(Y9M(5bY0j8)p5juYgs!c#3fL))J} zt0VKZGnZt&*x7wHCKV7StN8mdNy!N=f2}#V(Ac22Lup7n($=lRnZSjy@ZiWZziBIB z;_1obl@Pyy1f_X>%!);WG*xpRJx0-|->Jw|b3J~t)~+R(C`s-;)Q#g2pq z0K%lSQV;ts%*QF`eL)lK{^;qHHTMuX63(dOAeg4BQq$0EC#(AE8DrQe%D_v?N82lZ zX7YhdZ&DCiUb|p@qbTGwz->sjM_am?!{s=n*_ZL%oxaw=AA~>qKz5{zQMs`7ua0?FpzQ@#A3-1jW`ihp*yxfWpxidLfPfXue@#g2_(UK}<9d`K;y{jI1t~k^EUbTn37=Uf7J_tOnXX1+!b3|8 zM~D$*1@o?Dih)SVR_PsRmMpL0($fpyqKX^AfvxVnyb?vSC8m8!a{v>-5;eFa^?(D* z)QK&OmXhg9`yTjw>G;-|6L7NyIh>GjO%Lf%E+q4Nq-3sFzx%+hR%EC=eh8!x!9nh} zXFP+fkwX>xAi3#X6CtW)ca{^&U$>4$gy#0uX7U(2qbSx?nupzeOx{fYfDX}O>ipL1L0DdWh-5;+@{nJkjtIhmcHrRmFUyQ@Ou3EQXdN53 zIh7r~$j&=$^Z~p!<=jSx-TOqNb>pspm_gh)0_!-Kcv5Nr9Jw)ol)=7phK_@_A_q6- zmRSa-nC&<3Jh;QuK4A8s03C!(;=+$N)Ngh?(K#GcMJ=z46^D>IMinU@?IjNJjns{S zlE2xM>2pSRQogFGi!XIRYqes=b0+;4vodb|&PCjL9c8zz-wYQA<@+d4%?WQL@X*c+7|jXY`aYtu~^RZp}HR~8%l>#@LmzF zL$Vpybr6D-@!zt^pJe_Y$>iT%3a)tKUvC9A>vA^epX4sc>&>96M?>X-a+xCH*?$4M CV0p^` diff --git a/Resources/contacts_selected~ipad.png b/Resources/contacts_selected~ipad.png index 397f71f8c47fb50a48b7e3c1489cf4d2736ca12e..575088e31f80f119b62832b46f4a19bdbbc62e62 100644 GIT binary patch delta 2006 zcmaKs2{hYV9>?k*k4JsJWJFvd0MTt zUSG9iD1%rVu~gL-WoW4_cnlKJ(lU)OW~MWJb51+=+;i^v{_f{@?>YB-f4>f7gL0ml z1W18Cua~c(3uxs#<(xJ$@I#_dFf0~OCMEg@DKJk`;=?^ zwOmG&m@W13gHaO@2=ef}z0Jk=Dc;P5P~`wMHuvu2Gv#mHrJ#V{gZTP2S=UqZ(mL7k zq%w-nN9p|1mms3pvOjT3+!iVKFmfO%n#f z9HD6EMB!kUUi3hlS6C(F`d6)!fJ~y#%80CuvO_C~!tWXqgt7ETHAq z#mVx7hSw4!n}ul$MHdvz$ zBZ~Rc6su!zp`pM3SvPA9@4v~gYh7+u(Hc`zZDVek+HrRiZk6&Z1#EuA9SrucgPxK5&J3_)L->e>!0w2|{dbR!@ zH!(u5`RwQa*!drm|K;tk#Am~;sh|FVJc(wk&!GU248{41Lt&y+3lg)>2q#N{VNNu9 z%eFMqdhy>e!SuVEhkN&uZ`M?bm3M+vd_NjUsFuG4UG7*G{)P>@^$f>RnR*i_t6JUy zHcarK0pAwWRO-cF!oAx9n1Sts4}1GV+ncv;^*0hqsUfyAo=^>m{a9cg#j2yJ$? z5g`fsu4{QRbgp+c$qJroIzX5%4$!Hj^A?>;&h(e!&egI#nL)>2E86=rjulJ_b7%H* zcM->}5ZCwq`f-#Ysn>|(2p-pg9CHNTxr5s}^W(0Aj#>OWJ zd4F1@w!OaDb27sim=iKPSovy&g?woANz8&TU-g_nn6(}TLy{;&o!Yo;5 zXI`QGROmHV6|)K}ZiO^ZK?oHQ8gO*q>8vl2>$OR=M2MRVi(6a@M>cuhplLb&;qXnz zh(HdPSDi>LHracG9*LrJ0L0dQ?rE6_s(1{M!<{zZ=xG`6Eo;vQb>U;yk}TR3{z$Kt zGMN?kxs2iXaIO(YK|kF0X}wEZG);V5TDkwaAV)_@(WR~)26yX(`l#ubmiZt)Dk1X- zDcxqZ>wu$j4gX|&L(KbE6qCrtzMQLAk*$}9V4*1rAls!HUL4yT@V*=yS&F2ZrvD-% zISYFazXP6z_9t%C(#_xRWOQ;Ufyqs2wWP&W$^@)gMVk`MTZZZj(ev2 zef{Aj-1#^6FFf6!5=6a{vZDStRBe;`b4J9bL2>f(hwVHj;fW5r&axwz37soA5-BIS z)^)w;KP#hs^HkBXvf`;}@tSPD9G$QN?(KPy3} zmL3-8odI%4zC%rNzKW&M&Tx6srBg#@{IZA&X0Pba4>;M1& delta 5597 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 G>c0THtZC!` diff --git a/Resources/decline_default.png b/Resources/decline_default.png index 9b06bc3e765c74839a2234c4b936e8e135e870cd..4e4fbc0e59b00ff08b94732850064a2f365f8763 100644 GIT binary patch delta 2224 zcmai#do)JBGbpu?<}g&4Ss8VtCC-1$<93{}F^j#>V|}Dilkigv3XkBFDMntx<_l(FUY& z685{-;zwRORTc-FVyKORKwElT@%G+{lONx%#VT?&I%b&7>UC(FPw))L1yJ!PhD~MSM?R)|(g^z5%R9 zf>dA(b_mAiT+Zd1v=89Vu^jg75k5bKR>lGxz>u8Mmw-^{MjP~Izc!*?f+B}&|E=d; z`EcgXsXU=jcWBdd=6S7r(eC-HHN_@jY;)iv{@vG$w{)(!Rd^mmIOr64q}tt!sU=V{ zOZjMxpLZRY8m(khC*cjUvdWc!GWF&TyV{t?$1{J8r*127CAUyF#%p4A5w=gGF3$R7 z@3<7utq;_llJg%q+!s;RyePYEtj{A}P?q13P8C`_(>fX`h!JkY1VLcyfFAa!V#8uW zBX5raV*>d{JUf-ZGYi`y|tJ8d@Gw;M*Y>AbS?#2zAbUmkMfd(t(%`_M4XKG z9L{HOlV@md1-WAcas>yRL9H*0LBX_pjOyCY`Y#(g#VewZQ>Ie-Bo% zzp!VlkAj+{RK761V&-(LpZVhP;zVT~%j2Y|xe(=~*5T$02>mZ#JNks@?UwQ?#Y))UgpVlgS+$Qntd|Jy?&FjT0x&)l8ta^tg zW*K81xb?)l?T;a;AQ>p~9}4i#%>PI9rEdO5Rds86*Xf~aOkZt+pL&T;^j3?({(64& z*Eg%d?9U{N80taso9QLO_&J8M&mLPBR>GmD-Q6=E8n|79A89JKX7Kap&*OBnMq-nI zM{S7LJ~#XK_MvT*{jzs4SGIkkMcGgq{7-WnU^ag+F@Af=UfTa=?tE#$2 z3g%1)w@jQB?LQ>s5yq3+qu}*&l}X$}gQ{M8zT2jP+L55J_Q$Y$0h{$RJVCxYZNQw2 z$tJ4x_t!-8dhRBkY%+5Kg^zGvxnlvbS*$3**(j4$QOg{i5A{;fkl%GbfN>RyeD1om z5~)?f%X-HZnyo&eyBb*1m{oH ze35Wfl~D~vPGo0itFI+<;GKuqMJj509(>b2E-i5cDLFekTiHe9Q*VJLsi-RZaK%P! z&m}t=4GFcT+otQjkxvo}S(IN)6+2sJSA!{rt&_(YH=#%mNOZgwlNd7~O_(i8+;~S` z*P|j+Nj?TeU2mt_InBy82h(^LSPj|=-976i&+wq|>FH_m!Qdrf&C!Jd=XRzd%`4d%go`VGW9~rS*xEwPzG< zA-UHRBG_>%y4f5_iZushomoIaIOhAPloz?xIG zSu-<6CXC^i!X~}6eu$OTW|N~Ms6Uj(jw34|4@IHQNyq6a=gMDV+~?Xi0GlyM+L(lQ zwn}WIZ6mX8-Rm)2hB|q@yoE|7HHgV3R|e*!(h!tPiSqM? z+s-91mnHu*8Sm1Tu-VR-+S5J>otDfk^ARbxXLv!BKQgRh4qAh7`y3ipw#`kfIr^r_ zD*x+tFgX}4UhCkb4=FA;V@7pj#Lpsh5Vmo1(l78r>Gfjy*{c0rnf3K`E9b1Nt2ED* zQiA*~Ag~UEiX8|Hfze;WP;|Q;P`cp`Rq2tFu>;Zf?oi&Ba}*TD-4!Tz0x2e@f|r4Mq|)YXlW^ov?NABNk&=;jed6QM|uTuAh|)r7`*iL zl?;7con1Zb+(}+gHhwe)i^gCSWYG%JXn8CKqo$>?%JBdaBim6OAs?W3kBEy(ZdXX5Cj$u4N&LXo_*ttZiQ_?Ih z_|cKe<-h!YR;-eYidFGjUueq$rr*%3xgS4O8x!IB?V4yYpg)3yX@cUl*&LIvjE4pf zRabL@{&DO-b8IQ&D&>c(+fmq5@R2YZICZ0g!c{A4AsGJe**h5r8yYE>Nmp`Cn~i@w zImD8~zHhSA58Y+z7@J4B?MxafTfV3y83zxW=Y`C+*Dr`yTa}E~r+hdzRDPTqUHEb5 z%DU#m{#3m5NHo~%x?be01A`HWVjaDr>7EF&?$W}y!y~Rnyan&726k}b%6bBzhdQ_0 zX$X-JSX}RE-SRm0`j6RA+QD0)n zgIq4C5Du!RYzP@w0LLP;_!CssVK=WS!d zuZ#HM+o1n^D|5Hp2YZifui&l4Iy-9R-A9!%wtR3R04E{=DF0d2(3YV@Sd$NfK>LZx z?;psQczKJL9ZH&-RqVpGY8Pgwj>Fna6K1a;1hHHh>{{lE@-k6Mc1nvPY$B*%RzHcU zlisDs$H)h@ojm0vX1m?1%JoM!sFhRE*SLb_{q*4^nBkm!R0JVK#C0i-n&A6de`H7Z z*9rqsEU3rgrbj##k)c7YPV%qp7=?OrQ)Mg9f%UI+0uqAG@|g#NGx*wi$Vz-yT7>u? zDqL$JF&T#rko~5y^Z*2TR!|%O!vT>18azg{OmeLXF=!b3v5noK6BT&Y*$TeL7&o_^ zo&x8!24L!U9(zZure7+raln5w=y0`b_f4W9uyT|an7S-ZWc5K_wR6X`Gu-a{L>MC9 zaCeUHQ?%F5Z|gCmRJm@_J`Wbr;L1z-kzcMpwb3^hTWjH6LP{qK<8UBEX<77{wU61s zzUTzEzB8M#!=;-gvktjBlc4AOp-x>~&RTbBTFuYAj=PoC=U0p8dnaVinda?oZzuWN zbQKE33igD(s;*fzB^S#H;(wx0fn6b zcLv}e(o)KiKk|0%gOD_8d)lhvqn)zJ`P6+wM9+-+wx}B@$0&9O2BFF!s0jRm*T%a1 z@@5jtz6iVC@KNIPW>dZmPc|M%4_Iw(h0sm3k}_|nmz6cPc@tf954Vm?a&2J(gED(&0wlBz0gYj>^2+ac>QTwLb?5!NK101?a zfP_6eeV-1;Ck#fO`7%gtnmN=>UyEMWa0GDzH|N!|mSE^_bKh(oC$n97Ln*Q3X@)K! z%xEe~#3ZZ?*7KF8z6QUgw^RF-pZ8v@?c;uf4QSCGI(fRwA^Q-gTDSMT6crNOYxAuUMgNyi)&&PK^TOR*0aKC%yOL?leIR_8%xX-!j_3bgWrD#JX znM}J%$oSO96XvOnEqq~w;la1@vkvzC!gRS2+Hl z$<3y<$^Hu+dqQpbj!QND3CnvQE>OlHRD0WB?MpL|p@1GrfC2>FVR^_*j1_?K0rr}r zGLkK{EgDJcl0`KqUopCt<&`eLW9H0tZgM4oT>R{ebZ8P^CMnXe`6 zLGXZZ6mukiQdGJBt{C)=lq!0T29lUdTi)#&)IU72rs3Qq5+ z2Mu2tR$2p7W*#rSp4;x#O@7<$aDLdsUOR06H|D5%1>Z#m%P8-U|J*-pJg9H(fKnv} z!G)pxXDN1`L;kx={|VXn`3d67(dn!55gda!YSuumHzeQaE-Rw z-Q8FrouOdn#mvw<(VE5y-qNa^gscmuZn@fL-XTg;D%)j6Di~AagST3hglt4)%VrkieotjM5))3Ruecj^$R(* zL5`OTdc4S}asylcf{O9(c^|^1WTQ*TctXj#D7_(FN z!i;jT$n1vBEW5>p6wT5alg4JY-TN?PfMKD5SwT^+nSVCou5ih{So4XX`GIR9m3~m& z?d9ShUWo4oP`J0k;i!Re7FtL1ltDZym;Ca*{0+Ocu=$lRUIMT@3};t2OMi}c8FDtM zG7i~_9k*87{Y}5G9{$Z%t7Oxdk!!(c zxqaSMgnF}U27mG?>jK|Ro~?&QvL+%lnxB?)T`cv*zw>7K3tZB>wjumBj(w~Tvbr`w z(#ue?*RRORMfb@f^c%YtC;m^YoYS86@j-oGhZ;!GBHJ+gg5So^?2GugC{5AR~l4Pr`{cd>ywk40~8HT zE@jl8HC1GAa4H+0^Ap{zPFrwIrn&3_C~huR64g zHhagG9AbKPjqm1zLF%*5rbmgh0k7Od1a80upq=uZe_drWc&#}0XOm6}~^|nLx>g!B;udLWbZ9qU(6EuHJxk_lO zOWtf}vI{6o00fD$^CLZr0y;_gWeprMp{0mv@iD3_NG8O@GN5##IC E3whw3N&o-= diff --git a/Resources/decline_over.png b/Resources/decline_over.png index aa21a54e79db89dbe7a57169b7624856e5a71cd1..a5460064de42ede8cc4128dac80e84180b0fe76e 100644 GIT binary patch delta 2435 zcmbtUc`zGjA5OArsdkAgwG|@js55Z{N!1l+>!=>?S}lqo+ltadg4S&b*=j>mMbWC8 z(uPzWp`El8MV&!gik3!^Amn3bXTER0nf|r!yzg)3edl?e-*4u9=E+l@fRN?)0Nz_> zxn(J-0}o|6WT@zCpGP2(FceA$X<&##A+=z72&A4aVrQeYkp^f(6k5+HYl}b`1HvgG zKpce*QreG#sXO|e4-O~bBZ3Z7u7c!YCYDwv2n(d4jV00oiL^#q8dzIe>7n$EEp1Q+ zNPPp!(f@)_KLpKy5Z-?)>Hi1>heZ%v0|L?h`16rr0pSFDtSLM?>~|giV1M-AT!SBR zDVKh-BxxSxu>b%O7kjM5spyd}U9s)O}e4yLxPzEy9BFdtvqXw}UwyWv*`v8;^NTaRT=$ zY0}2@diN)VmLLX-b?Jr@=608xFG-_!&!kuKB?9A zVQ5lTgRYd}Q(nDwQOAn7X(zpd_^T-3%}z%@DYcpuFIF1-TtMS}Cbyp|R!AD`?#~7E zWlU*ofzu0HMGN*$jrHWo7_Q8A&nx*nC89judU87B0Pr&uXU|U!>0#iCM-6%F)x{1a z)!De<1{%ojLj$Q8*IdxX_Bj#Q7qZ~Oq`h=lBIJlsUzIz8cry!CGwf&ATVw08#;^t_ z@YG=S@buKe7O&~@uDmuK(wz>~P;Kk<>ww!8?vcmROiM0}KFZyYRz_R)`wxp!28I#E zJ>n-z2x!b^WUv}Jn0j$NK4G}E;8wSgA+v1k!Rc_8x@Y}Iq0iFwvujJ%t?7i;k8T`T(6yZyUu6FkE+=w%)FMkrw0S z>V)$S`WqV%|IG~uTI$cpuCI*=J)t9a#GOp2$5rKz5RBz{ubkUS6IV)=GUv)}X|~^9 ze1=h+akwY=?%NhcTG}KYfW{2N;jyQd#PS8+M`JI_Z+?jIo2{%GFpWPrNKy}F>)p-g zmFS^RvWw3z81p|o8PZY>cqVM;@wlo9b(x=G0SyVW7W5UErJCHLe{z-o8UuZ@kJDFbC`H;i>qc!N)a- z_S@Ga%+W72tC~mNiKxo8ywvYesCy^^<81K@lv84=Lg04@e5ZRySF#2n9hkc0Vpeo@cBN zdih1OGU&F|XE~#d0*ka{fNRrdZqS091*eF5L=IGg?P=tG#mDIP&W;~6;kddlPcWyG zM9G7)jTWgnH zq~0#FFAFSfCPdE3oP7VjMN%+vg4ZDqd{De!+gEnxHI>HWGD1G3(w~1+1&Q=aGB!rm zD%vBj?9X_DJCo#tiAsin>@F~!g}~-$G_e>wc4Y|##scQbc``mE!S)k)GN8}fC}y%V zv1=FO2`6&H*?sRIP>6*PIU_w^1RhHu@UarW2Sp#$;zeMP0RAt~ZI8khjMnbWn!mO< zs~gdnOe@KfhyTEo1OtlVx3m|*iVX$D}U z8%i3TS7^CvgUCH=6vnS-VgZl3FBpyA`rPm7D7*9iO)6^aUZ#l%tOh&OJy_*C^p-cE z8Q&{(jrB&cVfTag?bmkxBHZ@VH7+y5mjRF7G1p%nVlci-rLkMBl5iU%hm_xsj^a*$ z&8OuQ&HCT*RG_UK&c(DH8}x8USyD=rR|bYedz)_wkW8;rLgeVq&d#uKzNNH9G$MJ7cp=m$YhUr9kTEQT3;4iZYXm zZ@4AK#U;p?Er~muLZ2_M;&1ksjsps6aBpF)u&m2on>$BgsrsvE&e~qe>=DU delta 3884 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 Z!5?UBeLi*>d<^UtNzYWb6iRdm`v;H%s(Szc diff --git a/Resources/dialer_address_background_landscape~ipad.png b/Resources/dialer_address_background_landscape~ipad.png index 21bc36a511f8ba210c0b919b1ac56f0279913f0c..c5fc9c7558de206a84e566c337b6dd3862ade17c 100644 GIT binary patch literal 9128 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 literal 9184 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 AS^xk5 diff --git a/Resources/dialer_address_background~ipad.png b/Resources/dialer_address_background~ipad.png index 302d82d5d0fcc3b73acff882e33f2538f8747bb8..489781e129424e65058d0a90f06bbb4b20f2af62 100644 GIT binary patch delta 3631 zcmZ{n3p|ti|G<}=N}Vp2lG|D$irlifg(O31YdL5YDhEa8xWwG{I5|17Mm0^P(J>;@ zau1v3pG%tMFqhmm5t?DxSj_lIzk2;&um9`+yq?$V`+h#3&-3|wzMtoLeV)(r$)(Qa zuJgL9_fDp0A35w}WNZwD!wrm0VQ{#yKGej>*u>Ci^@JZbHnoJoEltddWuEJxaC>vO zgWZV}h~qH0v9W{kaZ`um_9pNn=Eo6mQ{yA1q-Z(yA4c~7uTh1Z_EtDl_w;3-YuNDM zu&W12qjE-2BMbA@EX+)e%uI~n=Elb6CMI_FW=Blm$6<&g4zLp>_oz@_%+?r#Q&RHzT2J? z|4r|IgYs$ohEqvnEGDvM?G=nIAGk1=3m4X$5l!9!#o>9pFf z0HfzRmp3NU0LbZW(`9?q_bTV<=m;0S76Vj$0%lP<)8G&SR~>1JiNJf^X&R=ZFnDQa ztPk%io7H4#rI#4;qO8`b+ei9VeG3TpYoEPgtXSKh2|~Rx#}Ie2iFoEmZqLDrii+gb zc&H6N(geHq!n(mZUn884%C9MdK)~EFBis#(6lI;dVj;4>bv~jETPcz;J)!Ulhf7rt z=J_v+#+uUC*Yoj1GoEq!Akehk1?}K$w#BJaTF8`*jt$K-A;?BkDq{(*koL9asswp} zL>FE%(nV0wSjo#?n#WH25R2aT9N%{TGMB|C%v0_DoygQ-PcN_CIy!(3zc^Q_vQ0Gq z8UVdxs(?Xnh6e+7SdhPT(isfT>ys0oq2hv>nqEUydf_F}q5L@5M|D=gKLbc+zCX0EU(v(J=JcTBl+$EJt7hZ>e&v^E1hoHy!rN%D8VLLZ=B7afWGc!-J@HSi$ zXkfEhL=f{;KKON-L*o!ge@+jk*M^wtS9TCmv9)BW1_PrZIL+ZW3&>t#lQLBtWks;k z^TEA|2^!2ng%%D3i zipy5AWf!XNSDW5^k%L-!k3I{bSB{RX9w-+SMZ{F1$&@I!B77KR{1vNdAfVzgqvP3t zizCmO86*=+85K)gDc1EqFH{LvMTqDpA$KTZwLVmLH^Um2_8{r<&$ZB|apc>k(kkHD$+Nlsi! zYO3h!BlE64?O+gOBN#NjiSRV+HfWxxW|lk<*d6M#zk;R;Rb1k7xy^Oc<#XlIb+fOF zF3vmgBlf>xeAEHty7!rdw}%XEf!^dvQPyq~Q&XdeE>l=CZZ@ZJMwgNUc{ZZ!$vBsJ z4xuNhgYspU{(#Ytg#q|9F6wPKb^%#8*g1l6XKxtu_m4DeN|&5nzidLeU6EX=0IBS& zy3C`~pInTvq_hcEWJM&yrG_jG*;`(%Wp$)vIvb}4#ILp!-n|2%`f4(~pkZ(H^Mxc- zT(lrJ-J5%=n^sgb*HsW;nc?y*SlQM2^mtF%&T2}afWe*f>*>E{P(5NsQt4g2vYV_x&u&71cUfPUgzY=+{vxZapn~EUZ)RK@;qdH|wuHh#jh!*aIkQ zeo|B*l1O&O5bseYreUl5%q@b5KyRIyf$G?;UN}{sFd6y6Wek0wSXulDzG5}KC)T4s z7A+Uwls|Wasr+@wQ9t0kBW;phR1|A{v$u^Utt-(g>^ol+QB1}XEdQ0^J05$bfs^{& z8Si6cZW`lW1|jz^xWB)1G=Mk_VC1tni%>>HBuC8$mpc<<`|%0+8jP0WU#i|w>%sO* ze~#|II3IsVbSeY;L|Js(n0K1^^lkIV@2@7JVwu_`RUT1Xdu==F?_pZpoGo@mR!HM6 z4%;rtNaEUn9I0~rY7hMypDQW~uZCx=EE&dO1wJ(TY)hEo(i>M98^BA3mSWGk1rz(7 z#{?YnrohNvs{yP(jWcyISc!v!Mw3Z$hDos8|(QyYmWeyAo2IP2G@ zP|)@zPs+?R5E_zA}!Enh&gVtH8ew`E8-Z3NCO-+DpdtsaCu#cyHbmEiK2K(Q{ zg*?PVQNs`Ub3xC#D>Rtil{|W!nC87aTf|#r^InUHD~pTz4Ae>IZ=ZQwxcx81rkpBS zSS$12rIuEFgsjPCemI6fX7m>Y#W1yz zD5u@I&oz@2wUfeb-Nrl^TQPsH{VGMd`Hp*`IZ8@9iD?M&*l(?6l6e#i61E*OSFM|I z3l?p9)-aD71$2fzf3amO2Lv&@(+mSKQgjl!1XOD~&{YO6p+2#1`Q) zxZd?aZAS`c5m~N_0i!Nj9adg#z;VMGZlZB5Puo+xI5g*giIk)pW|DzS<=7;!STp$r zqrzYLbnrgv(%+$GqIUs`zc&S36qv=|OgX3dyy=L^fz-r1Ayc2xFJVuJglWrHH76tGGFmTEk7BC$L#Ujup8 zx5;a;k2GA`%A;2;Z^@E&vQe?)obE+6wG3*TZmU3XUwa7#TXds){`_RbouS+9zxh(p z;mLa#ZMv1JzADZHC$AI7eZbAcvWux`jfN{jl8s}6nCzUf!>NzYv3(VDGqZogDYf2q zZrr|YO35Gar)CfEKWjBy?v23xad)R81#6c2?)GQIgxbzzTl0Mj)CoWvM1GqvYrBKd zMeS!bj`|s>lapcFy!PUt}rAHmJv;KKwN%3 zkp!s|Uyj~3Jga*+ABGO7L^(7Zcf5d+rF5+H@UB7buHZx1DuR! zq^`V9dURZQuF62N?$N{an4)%pwD|j0=Q1C4cLPUVWN$;yY%;7iZo|Ao-~DXzn}N}^LTtepH|mTu791} z5}f6N(=|FAXaqCTgh7r#jvAYqni^ct^f1KK;waR@$cVglaf>Fz!3=iP z*!Z};(@{GJ#1Ud==V)vXF*9>I4l_1AYG*=7l2ZF=viqN=dMVwVCYo-S14B`<=$JnU zQ&L8ncHgTWw>N@8AW$Qi83bZx2Xk3W!1E7olpQ+ z>t=DpZ6I0;wosTb78e3@`&Cw}>v-Dn-+?Wa=?Q z(kREAW1gu;6WDiOkpg{xj`ie`WE?gK6jp(pxv)tU#ksS#n>6T7-;5wo1z7jWCf>i{ zD)rkYnFQ_nk*wGs0|F7wC~E;>in0g)tEv9&*ZHB`zu_bMQ;WO(L%X7q{S(ee?byVy zH$Nh%V!zCfT*U*g2hzW9@*w=w5_pqloMkjO;d|CYY3n9}r2k~>mJm`^Q~(#ymJR8c zY@G`9NA9#`+1Vd7U-GlsU%QWON~i7r_8;6Ly(yUl{fMB!(^W?Q#jtYSRk_XVeBj@$ z|7_|1jpf%(*WYuI{XcUl%q5JfD4i6Otu=tW!0RZA@7%lLj2^Rh9Zoi0HADZHoE9#p ztRF#)KhdWL+rUYbEPPWD4%{btMiSZylY(o!`&~$exF%|o@0@rog+{PeRR?Iyh%q*Y zst)Ad?VqhxQUmWR*V7ZMERlf{gADJLWnsHxG)!e;I5`fBxZOG4?C#wn3Tq*wQ#ccW zM55wrGcO6d0Zph{}3Lo-(|&CWQ)sTm%*7RV+h6!CZuStt$%s5ur9k?|69h{w3-+eb3op3V@p zahq0rKC=E$+9or*zpE(#2W0LnHT}Tr$#k zD)B%qKK(#CKe9jC@}HJe3*%0JdP$BT|)z#6p(DYRAVGZO$}0Ft3++zcToBEN}A$GEKiM;3(J+!ov#sR4FQx_PgQ>`R2_lqbRHMB>#tFX?SveN z)khZMS-HD&6)UW4r=Tm!Of6-cD@mL!GsF_q)pr6tq6yK~(`fm~$geyB1+hv7qf_U` z!R+O$;FLHTTOcT{zigQ*aVOA5bS#{j%xMYe)E-}%wx+O+q z<{5pM6;@wB9el)cb!MMrN3PASQR`QC5v|+8pQvOwF`SZ!(YJ|n>Lc!p!>Lwd`9mha zo4Cf{^y`9wM0|K-?3ng`OjOkAQERKWUAU>(*m(=hr{d4<(Z(v1L8o-=4}{W&<}Yh_ z#+V$eamh6xK&!$xgeTg|nCt~}8=Kw|1M0@FH=+PG* zUlC2Ys;cDFA<)f_iwg_zT{lS8B!Gp!*AY1J+}VYqx`p3vBmZJo!vg|tj|8N(M3uDd zY3K7%s35nqCFz~+VQTmR$C=AMxB*ti#C2pX2K-z0nA|VtMKiUPlg`s3W7pwawBm0F zRuOV2A_^N9w}?qeG&K2W$hiJTRRZB-bQ4i^p@&ZILY6a>sVi)@#quk_f0fy9yUL@N zB*)7c-ZGVX0|L#ehiY{`?-x*tBw70kz~VMN3L-(+PK}j(_~3)Cu6$I}6|@oz$r&sy zaY`hO6eMt_G=%hYXnO@#@|NF1HrDtH? ztI@Bp2M_{xZ7B0ucM(Z5`5f%j&Glefax~WFaiysfzmz*4>Nj3z$s?jDHN&CtPfc$* zmHWA_-XV!Us~A3qhWhGV+=DnJ$IHpYG+j8?@uJ|4ckHz=<62$v;s7%bf4?#fo zJo!XF>rX7UK2Hy6)@bXa9dHcd^JR7Qq0%mQ(JEj#9dq_=FymhB3m@2_Y~3oCEy9@o zPteKen+`5-^PlUp<~#J|6BJBPHjmognqdN`6R=!@2{FJr1T5JU5tHSLe-8^X+3je_2Xjh z0+)hcpQrn`%=^-oRpVQP{{F>feJ2l2Z=8Vw_GvqVp4dpq+nPQT+j&tjLUI$o`UQb5 ziKmWS9P!KTA|5bLV)5ck84J|7@;x_!OhlW4S9BUO@!$H$cc&p&8KS9;L#F>u8dAPd&cV{9traQnubze4^d)wo#`N% z!|9HVwk{GOt}^k@Y<_W>B-Mj)04gTv$3P3=c!o_Hoi41XoE+ERuEfrqPF0ru#km}q z=Kx8I?(0)>H`qxNIT=H2;MUoV!+qBJZeTuJGRFv~%`*M@zzoMGH8mt8UNkostNjR* z*O%e#4QnLA<4X+a#NetrssTP{{CH?_T`=>u3SCSO>Zl|jafix^nQmOwY4VW1ytYIF zZg4&4BZtG?O0$grW0;myOK2M}jx!ccL0B)X3f6l+f+hTkF5(E~eE!Z>%*NFwAq11Mz$`Q!wiPw_ zvsT~h*(6re$YgVs%x}#a@>+)rC*JwQN0Nq6o%%R^H&2*~V|jYNY9^-2BR8uy{fncH z@qw(-6ZCndArFHCSRksUrPIX%ojBMQb|eGPpI0b*Rg&Q33dKf6m77_rD)QiZdIxtg z>R+d&-AkW}ZAx@-(lHHS=bc_{mFZ<)G{=WNxJ|k?Ie(?xsdWpeC~+z8+G+$$IX4 z3%C!<*@oS(zVdjSE6LJdVwCfdkMpM1G#1a-JRZIfq;P{?G$ro}eiWlbaSl~}TNMTv z`w!}Y%aJf*4{l(5`}Ed**6&JOFLGB`zs?qtnlaoEo0Wm9lK71|yeygA>7SG+v3Iv! z8(c|3qiu?voj)ZqBlx+<2DS?~AnV=~OeGUrVxZkXCgdtTmM=NH63X<$HK&j8EQ+i2 zxeDYZrET(ML^y8WM4{HF-%s8EUcXNBYdLtv-s9E5KHuo(_lA5t+&#v-Ldi~EeJZfD z%~w}Pg>7YpJ?8?V=E7fvhpJN<+D(c`1gb2OGU;go2N%G7ioHZLLtPVJ=4(^;#=LYr zKxm3b(XiZMfOj4ROt2+x4cZ$GTlb@E2_R?R@GwNDDqdFQ$-X7um%&_y1KOomn$rwn2R6chQnl z&mqpC=Dz&+cvxWztk9F>>6xPkrmEouSYDOC`4Y2u{qb4wp^eXjmT2qWNRnVtJ_p7B zetpsB4H{U`pASdmy2A>qPZ+n=PcgxJVg*O&<`da)de&~=_JA`2O10yhZFi7HAHN>VIRF3v diff --git a/Resources/dialer_alt_disabled.png b/Resources/dialer_alt_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..d85d7fa76efe413cca49ad305c87aba51e0c1131 GIT binary patch literal 3510 zcmaJ^c|6qX8n+eZB+5}YONJ=2jIj*H&R9lW}mT!kR#jCLMUluC)suE zx{_?^M#vcwlHC!?R^4$9oCkE3y0b@Qs zK_wE_jpc@NfD@=>P5iEnW)PXiL-X+&n+4JE1V4ZUJ`ebiC?<-_4K0db646A_RS%_w zqFDjHB)bp>fC+KL5<>h4hD1d(Q?PLmoJT+gSa@&{*`LCM2bn1T$qVPnyK0Cc_)im- zpNZmMLAjw$gRQ6x0Ia8}qe0MuLcuVYCRA4s27{`DwY8wy5G~#d(}3#2^`y;yZ}cdY`*#8txObsSu7eH0tpNZ)C|lwF1Dp9mBRj-)VIcnSePB1{x{9GWB&5w4?SqXo5uA#5!4bfHjd zr~%XlYN@5C4TI@h8CYuDe8(cF1U4C3*oGj^<&Q z>%$<6Jc4_9mv7-@PP5PIs-cRkJF{!0-mRmeRd#^j3fG?72#WpSGGiLzjC?h<&8;5s zSqikpEjc<3cZ&oKHG+D?_=`e`SlrT4p=L(bQ2{iL;`v1=tCj0c; z-Z2uM3R=Pzxc&8gAc}lufkCa)tvj<#rl z2tC*%cE`3Lp zXrg?Fl4y@u&-+8IuWB_kzW8)il*kY*ikNm&dynQ0_`ApjwXNdMAjp%6la+g2gqOlV z0`MsbwfN9ww>kV&X`2+Azx7mfEx(KBqIi!*iey`f4jcC9QHo}Ezsz;)rcXd5ivG^h$D>RTvXOsyoEieews$H}<1{Bs*Ub4icj=u<^W z?w|ap>QBN`OzEpmIpI|4n+C;M2UL#JGeznO-*1YM5EDp(!UPe4d}IFk3dGXms)*m> zyvlS=>evb%tNL-wH2&hPaGiW}N$iHK&@`Brf%HDIm#clIkDSiQTEizfPYbkx6_`|U zRpX&MvX%pbvlv*Zvb)dy2eHN|OZRc{1jF85Csk*dNho6&`Gu2kmmGy&#dBlS*>mJWWce$3i4PypjAqIyYmH90ybP2dtLk$Jh%Cb}HpKT1Q zF3m<7(y*C14S8e)@Hz>te=_BH?~AP~MgFMbPyPpuO6gNoN{77puieg*&}-?|9gCZu zOnnP7e8Q<%6}D+^Z++exl0bK(iRn?_vG)qdXg!jqH7cE{hB3U*Btqnt&dNV7hp=9pKoRL z4tTf!1NrqZy(_Ev;HO`kZbhmlxce9n&5|8(6i!G+muTp9g^tb5)ho8nBH@m+==GE< zdbE4WJDje&&yB+!jX)vof*qoAHrf6$m(Q0xcSE(=(JR`2>a!MwmwX&1#WrBQkCdc_ zcipLOep(i(g9s%qr_{P_z{Lt3WUuwT?!7IaY@^YWbkQ*PF=uch`?qBMZOa}~j%b(Z z!cnh+jG{R++lt#Nn4ai9F{fVkgTc)VDzPKd5uOyEw%yjsy~dt*4)s|6?UbL~j8ISH zOR;@Kt;1)%yr0fZi#<`RiIFgm?hA&6?=kB7x{k0ryYgx4n16Vp?1L5Y^-_D)qGgF< zI{SmmQa2b7Z>$Md!YJooii|kJS;ZB|C#rDH=3leB0sHex8y4~^0^zwnY zoWg~$5-+YyoW#9$w%fY7dtd7OVKMH3E&E@JPh1aCu^u^_e(ip<0Dc|$MEHPHo!-C#m z?G>pzazPXDi0Ly@4e~y^?*=DV+)zSq$_Qt5G+P-d;X|9)Ryw`NK z(aCu#7yjZFZp>#&yMUyI@xDJe5bZwm1P1&{Z!WWlSCjJimqEKAJ9%AP>1)w@u1+HT zT&2H3)KR$TPm6Xg0ma{}F^xQ9uJ&RK0??^XF3ILfN;$C?9yax=N>ndLamYV-Pv zq1oBYpU4GsZeJ$My}kFgy}V@7QrZ3*X%c#tqr9!2X}{I-VzW#oYob&6!FE#A=2k~% zSw!gS!W)IgSAyunzx>qSJJ7WJhX2);y#w{?!JntoCv1fhn(RM_Ga9(^0K$) zd2;ie_MStT+X^1Pc8>zvo}l+SAlqP&b>0K~o&h zs&^h~O*m8G(h~W~p!>%NOP+p}&XPJl?!_tbc;@3M0Cmc#YK?nJbS^1QZ9Gpqb=jw2 zt(P%$VuP!dcV*+aoD`I9gp+D{b}$uqF#FOhqo4K5u(Xh~KSeqVCIxEpuNwrY54G>z zOir%&yu=W~dX)oB_UGvH`(@JT>IAo^j|Pb)sfGefd8^u})N|SI>&#N^$eo3^aqgK{ zGD0&132RTEBtc_6I&XD>fB|N3rS*f+og=rhllQnBX6~E0m1!1?9|?FiUtr(hdV5-5 zUl#OeoSCjuL3*fKfYQ4WATe8ijDz>PH3GV_e)7>0OKra=pkmwB>V}*H>9eW{0`jA=_1z%KfLd^+Dt^2I@La9azR=rWt!Sk7 zPP%UtQ9%AO6+_}vSU$Glm2@NjaS(ZW2~nc=-XVd6NzHw1TR)l*{%PB6-|Xk#YWO^d z)n9a`0XVz#zICU#+iNM-{2LPKeo5}B3lE6x(4!nl6{enjR&t(vX+;zxsy%5~smDEpC4lubcQL@-9)KY0lf(uLAq{j0j4zkRczB-9IU$wIkx8 HB`)gUR-Q4+ literal 0 HcmV?d00001 diff --git a/Resources/dialer_alt_disabled_landscape.png b/Resources/dialer_alt_disabled_landscape.png new file mode 100644 index 0000000000000000000000000000000000000000..00a72ac4721d096d944f84c675f5e349c87669d2 GIT binary patch literal 4329 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 bM~o0ao@3AwLewzk_~(P6u89sA<{0)bf3~64 literal 0 HcmV?d00001 diff --git a/Resources/dialer_alt_disabled_landscape~ipad.png b/Resources/dialer_alt_disabled_landscape~ipad.png new file mode 100644 index 0000000000000000000000000000000000000000..24441f3fe64da496934bafcb40a64c567d135284 GIT binary patch literal 3544 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 LCQ~hC7W_W|Ra!CQ delta 16036 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 diff --git a/Resources/dialer_over.png b/Resources/dialer_over.png index 3727c5fbad50941265e6e607bc44b411da171ed9..7b718469fb8987529bc40217f4f0e4dca1bbe73f 100644 GIT binary patch delta 11395 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 SZW7RcM?qFqrcTN%?0*5BrmuVe delta 16130 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 diff --git a/Resources/dialer_selected.png b/Resources/dialer_selected.png index 5883398d2ad37607f19ab39251ce3e3a2e1456f1..80cd520f58618d9427651f6c70bd86c8aefad44c 100644 GIT binary patch delta 13635 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 diff --git a/Resources/form_invalid.png b/Resources/form_invalid.png new file mode 100644 index 0000000000000000000000000000000000000000..c174df390d2a07cb3287db48eb71a9f6dbcc8d2d GIT binary patch literal 1209 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9Y!3HERME&^*q$EpRBT9nv(@M${i&7aJQ}UBi z6+Ckj(^G>|6H_V+Po~;1FfglRhD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT zY?Xj6g?J&i0B&qvF*KNf0j6J(SfFpHX8`gNOrftYexnUy@&(kzb(T9Bihb;hUJ8nFkWk z1ncniwerj>E=kNwPW5!LRRWr!mzkMj}YCWx1pIn-onpXnTn}X2mgi|jlG2|8iZFWg5$}CGwaVyHtRRDY1DigO`EO43! z)tiFbEtWX->H{644~kl(sD=pv(+`LVPq;u1Jn5(A0n>XCFkzoKusW21fl=Gj#WAGf z)|n~0y__8d+Rm@)owT6UuGv?oX7&U(Y1OV-5gkcOUAgi#q&9dwWl|6H_V+Po~;1FfglRhD4M^`1)8S=jZArg4F0$^BXQ!4Z zB&DWj=GiK}-@RW+Av48RDcsc8z_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3di zNuokUZcbjYRfVk**jy_h8zii+qySb@l5ML5aa4qFfP!;=QL2Kep0RGSfuW&-nVFuU ziK&^Hp^k!)fuWJU0T7w#8k$&{npqi{D?ot~(6*wKG^-#NH>h1eo~=?wNlAf~zJ7Um zxn8-kUVc%!zM-Y1CCCgTBVC{h-Qvo;lEez#ykcdT2`;I{$wiq3C7Jno3Lp~`lk!VT zY?Xj6g?J&i0B&qvF*KNf0j6J(SfFpHX8`gNOrftYexnUy@&(kzb(T9Bihb;hUJ8nFkWk z1ncniwerj>E=kNwPW5!LRRWr!mzkMjWom40;ArS(>Sp0$Y-s3e=xA}YCWx1pIn-onpXnTn}X15hEp#nG2|8iZFWg5$}CGwaVyHtRRDY1Die!aTud#E zoGo3Q-7K6fu)77KHwCv_OmMnIALtl;P}CwtHB1PYen3ok!Ub~RNk26YnBI$k30q6- zx(@>bBb%p-V@SoVq(A@v+cTRo2s2M*@P4k9TJ+V6>0_G0HO5C?Vn)1ztdC*?oE;W4 zcltPgQYai@ z*p9dcn2BGpKG7EAY|b*Lui*!iz;EV{ehO*LUEi5LhAZ%~CuOUAEpNObdspDelv;)k z<;EZKlkV^+l(`rmVeFVMa7yWQg9WpD&qGs|=(yRuM@lo2{2ezopBIRkxlOWTcf${U pf%v9fPwW;>Ic4#pOR#}~nc>|wt7Fz#SO0;^2~Sr)mvv4FO#qH~f=U1Y literal 0 HcmV?d00001 diff --git a/Resources/header_conference.png b/Resources/header_conference.png index 4e37e251254d51446752a790dfcc18f2578c5322..47ec0a0435a4b6de1c9dec9c29fa921da2e9ab38 100644 GIT binary patch delta 2650 zcmZ`)X;f2J7rhBsKqW>I0gV_C#eRk%3;_ZHD#Ah;tYU#MNyA`dNMfLbL0)Px0v3>_ z7#u*9DozXv5l|EgLQo7?C`KWGi4X{5nadDpLRt2k`qo?P-Sy7i`<}hekCR0!)w+aQ z1DKuzk27`l!1OW?r|&W~AR1$_XdKQEYi5qaVKHbEW2}jhvFybeV9oI6IJ}8PrZkEr zfa$VM!@^ik;X0}~^d8qhA}KP8Ogr@@D-MoAn;IXqG{+vabhJEh2#Y<0-EU!Ky5HQ` z#L>(F=Wxi;gk}3T$m$K)PsJ)Un_Yd=Qx!9T6NEL zSGgAd#ATgPH~_t6x!(jpWtX$Veh+%bu)zJ4pZE5f@r9)*e760MUtQI3x>n}wh{rpp zUi7v+v7dT#ucx7d??4FBS9xtwkUbK06!|jEnksyqg>OuTj%lnlaX#@y#PPONoR*^t zntGoX-xBXX>Pn7WDkDvfJ)fMjzdGyRW_H$@WmHXTxd;7VbM{3J0LZla1pwFsI6wm! z7*L=7S>y~ra*7HXFo5Dp;jQUl%0*f6);DnFzfi%^>uLa?VquCP`G@cGU_h5BDk4v=nmu4NS}H+EfHv990052z0HzG=TPO$_C>)mUp(p#g zU|cCbyTHn8dkxd6}(hP%Sqca5R zXnEwyQ%{9LVXtpK^`o7It!?Ji^z8Q6+}{PimASt>SW!vY=^YRN4bPUoc#@0xd2A@J z+lz4cGMjx?SLWq{Iw9?X@*`SZTJu8erHg86&dWOWS_RzSTxOFd2wSgMkZmkY_g&F~+fE1{B!hD5=DUE@GGS1K8FpxB=tx6bxq&rbQ{wU-q}O)DDc22IYX?+3qJ2n= zWvBFYbX+ZQ0Ik~&Bu}f~GEfxMkB^URWHY^EooNYYOeABa39*oG$H>gcx2^s*12@7r zgvpU_AIE9#sDsA3r4jS@C8dw5^_z2Ziah?MkRjzg|8c#?gLZ|C2Ya1^G17&W1s7C+ zhoNtec9sr`%^nSp$6#(=V7w_TDA#zY2fyU>YYL}UuMkDn8Lr*UxFxxw{Zr_%~fYO=?oih*Vd84P$RUFpLV1pyA^UyB4dEthl#E}O9j}}!ZsZ~>HtL7zc~D8wx@naZ1HX#&NZt71Z}fkkckkln zFgx1yI_XE(R%V6Jh(mj)+dcg&=SBUHZP;3+nv@0Uj({Co;|A{)T0U$a)Ili4sBj5! z3+LNr#xI}~c3#`fOfwYD*HcDBX_&3?(RD}oYfknrR+x3CI$d@NJ^qx!^UJ56zI?K7 zw6z{1-cq`dlT+|PN(t=~HCns$g5+kNHQC?oG0!xx&Lz-k=2W19D}7%a;Q$u$Wof<% zZL3e1v#R>3g|?ZY^wyin(>3%ZmRoT;t450|4$dSckpzOo{rvDqjGOJgMT_M^*hh-r zGI!!Uq0shgL_>IOwmZr_frRgopmrw*Ud<+-RvFJWvUAd4#J+TOCA)pkExr9d;eN~k zd{fcwyVo{2r6qM1FVDG`-uMG*ynrc(+q3_8Wt8YwJ=Hzy_Xr)Zg&%|M@YBo(q!o1R} zkTJ`L15jS;0p;oWoJz7gu7DZe5U5|666`+apguI$kN hv;O5}O3(5dO;9|Aa%>g;VF6^1^C35fq5~(-{RyG0b$$Q< delta 14198 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 diff --git a/Resources/header_incoming.png b/Resources/header_incoming.png index caacf5d18b4b6fdf3ac84363cc4790d21c023df6..7214ac413915881238ac3b8712c88e82329537c2 100644 GIT binary patch delta 2662 zcmZ`)dpOi-8-53UsAx(;O&U^mw=vAbU7vq$5YBJ1BSmTi2Y^w=sI_GY$r7>pg}u&MdM!zM;pdt(BQU}uljMKVHZ zPEL3N)ju*cFf4*dIHW6kK?jfn@atT=&vDal$r=5#fbHi%y2$W|6M;eafX^2=@;Pog zTHY4oUEWd;fbu>f;jk;CV^rvJ+S_Ay&7@>G0-tH~)7M!V4%fq_JRkgs+Fz>tPl5kYg~Wa@>uOElzg<_od($+m9wH-uy-J2N z0hqx)Wv<(@=4;?5=DO7o7}84p0VeZr-RWFTyV|D|iH==MTL2QhYET+|^JbZQjeP3Z&f* zrSGdCE`6fAKvC+wNw9)ndC7)GdvYS3U$LRZ>6?=;gS9oUa!H}N@dK})Q{4)_wQu_a zp?-%Q79S=#5%o@?%qOwoEP+K1n6#3+j83gcnwjg|n9db(DZQalp7<2xtHRq~KR$a| zvy)1i&89w!o0arP##u#HX1lFcL>j}sORW&c_uT{Q7ORCmMb&NDWQyt?woCn-CHm*{ z#f-5&=&c}q*M+1!#&#y+mbi&i9;U(W`NBnXCnjY#VE+o zK|`P2|1ojEH;83&QWJN=!_ce*47dW!;Hr#a4Ld2lSfV}{bKJZTxaTOPjWe_ zQ-o5f@Z<-DcxD=OEetMQya84BA48t0UhLY#+PQZ^xFds0ibSb2hNi!KH86X`%bQcKWmO7QwnF9VWREwY zV;vN3R;k#Z&+i;-pRaoAx2#&D3N1)l`_Duk)NC_*_{{_EfeSs_jps3J-qkj3wqO7U z2`_~2)_C+Wwsz8TA!4#acpZ##Ay+y%Qa7cNX5d|s8m1dN`knqCi!NQfY*t6RUMJ)D z#>$MKaQ~45v+Zs^m5ZW5$SP!`Voj1ny2p3V&Y0nQ1!fQ1hjmmHqm+517|DgUxyg&j zxV_i*vr^E#i}kcIQ3`5jY-HUr!G=?VOBKf5$qrW>gHJx8@xAltXRe&88*i;g4eThD zWM}8Um(qg!MU57YeIT)!Z$b5Oe#AfMSLf*GFn8Kd-idK2hGdI@ywWva2e;M7EtpsR z+!DT>srbf&#n(l9`Inn>JFCVED~`-1B#?!|_`?E97|Pk|(30s&0qg_KdxbZ3fmC4i zt!e|MHq!;+5=X}Oh!Oh}{jxHtXOt&14XqtCn9(nsoT$z}@=9;Ni@P6Xi*G8tefQcH zhm?fQqLl@g(i?w5jTcenayFblUmC`HSI>0Md%u*U7Z-2NcF_nCHzlDQ2HR?zM<`bp zI+m6mGe(~Pl%mgb<5;=2r=qej^wa8&Gh95o>)c2|Ww2pY(^fqIuM`E8kO~IWUi?7G zJ4PElS#PN@eS08J>4p4;Q_l(4s1FsqW@O+on?i%E2d7)ZbLb zL-v@JWOk{haVFxkogjDjx2p?RIA?C zo@=uJOlkY3!;JpBa+A5ROvB#>b{&{f&Z&_HW-%uxl*MAt(b{$szdZ^yMA`hV8{YM9ou avOyChL?ei)=l=m0pm%rx delta 13487 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 C@i`>` diff --git a/Resources/history_all_default.png b/Resources/history_all_default.png index 9790cc94533d8be38989606ef8960b8700626aeb..d063f0242e12ae6fd9122c80e2c6c7ebe8d7fa53 100644 GIT binary patch delta 2997 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 Z+P(e`YP`DH|6b!DJ#AyH4;s#q{{xUp6wCks diff --git a/Resources/history_all_selected.png b/Resources/history_all_selected.png index fe9f61f2f8fce2e1b9e0e73866eb95e562e1749e..927d1228f5648543d0d17e37afe450dcb27cc69c 100644 GIT binary patch delta 2663 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 delta 4494 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 C&)V$( diff --git a/Resources/history_default_landscape~ipad.png b/Resources/history_default_landscape~ipad.png index 62eaaab9fcaa37e74886bec2f446b5a4c7ed8829..df85f226d6c8909e576d6d00fccb33378eda521b 100644 GIT binary patch delta 3346 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 W0Zggt=L?|wM?p?Swn*B@|33gb(_{<) diff --git a/Resources/history_default~ipad.png b/Resources/history_default~ipad.png index ad31bf9b8cf14445f68ab5b955f3ec18cc6f1637..7fe690c29542ab1a16ff933652b5e110fccbdd59 100644 GIT binary patch delta 2426 zcmb7^dpy%^AIGuEx(nN*A`5FI6gGzqW2l)(RD>LJzDvdKjWG6Ga#&7<3Wbro+o7TZ zp*?0!$?cSqa~L@rc4H&P<2k*0`lCOd>vjEceZSY|^SQ1+zOQ$O)@PZ!hjxl=S|-S( z999)oPO(ZpqNCxBM4{klv?fYd4~<40hifBI+FHo%jn+Wv8tS19wJ|9|a@wFMBJGN3 zK-yce!xCt?>KRY(%h$<)q+iw2!o?23wJ{jHzJZxGLH{Hgg)&E(VGMN4^pM&FT|63Z zPS8%neHZEcR5T%mbVcc*PzE|W20s%a;3V>SUq3^iK=0sdzSqf?cwZubB$`cj-9XW1# ze1Sk(gpki`^DtR=nPdP9#9&&h6q!^7r7<&XjL=5IF3fnt4$kH2BmgYhJicN1% zCa|39^@_PIS;Jb^1fx{dQ8@>fn^tgfD+@F^-Y6V@#1_ znANuXhQl25T%ey(!HACXtR;WBlZZJKCphuVP2R^h1$?JsJSr5UJ)a;^SCuFcr6&JJ zD-kVru|rTC+v66j6!v%UuzOX-@Re*sAlxE9Mb|$$83b!1Xn&gJ6JAep_qMl1(S}=h zua0L5vKiHb>oTNy@mN`o=T@qFiqz#YSklM54vJ>%?0K_>1hm)}<7mHjA$kXWQF-f* zE@JSx)l1uaYVn1zvD(mi3G%o+NPjis@#M>MrqNAK?z#TX&$HJ3K1vW4ByOt#*_LIl z$T}@%!G}m!=2xPqc(QrML-Smvu8S10wk#UP|DomU%J`SHz)Cb%C!ZU9X zMTImS4WE2Ae7}6tuVD!p$^eCe>Tg!$&CRo(uISx2pt<dDt*m;4X)q4vMF3&_RodgL-hxd6^9G;gYC(Qk4vhh zpu1GU>pM%cx#620@yXtFBpb5*WYCn%rD(jYX|yO_Rs^~W;wb|BtJ*$5cl}TI=gt56 zey;eQMay>{ikiN`C15kL07@umOYcZqVBmOv(7<+ajZb^hp7sO+)YXNmJvHx~=w{K= z^?jroZZsK}nVrquSa;R_bmd7!Fqb>85=h-t>*H=LaUU^K6BIQLg(btdF3nolz_d1* zj_N$5SJJ>S0l!*eOmRrI^POr)2*1@dN5@OJ_*CoDB@m%*8PZuDQZ4lS#q+M$jxX-c zHYX36?MjR`K>h_(ce=}2MMzPESB^=bka7Ts{Ihs-dwWPx z)56snjg_oYV9<&hQJ$HjHyJGf;YcglG|(aG(3W=y_JszeN~h9+K$<92rM~fw)_$DIgny61 zZX_KEy1+kwZy0y+M($pGh8Y&{WOb?bR=Bg9Ic(Q#CC*Z#%;arp6k&P<6HKmo0)lXg z&Q8o#>Pug@9}T!Os+@Yu>+--%J&>sY+&qkuKewd%`hB5|{QUkA@-mg<6&|_AG`fJg zgKOW&#Y7+c(f(pTQL4ZJzkPlK9ZkYpm70MHF({c@Ldxv86wV03nO+?2BNRbro{uw6M#>X+ zxn^p~B^A*t*+%d>yS!GQ;z*pnQ+G#Cclx>UsxerOC^SdzOKFJ~);Y;Z@-I`jL~4us z-J|Zau>r7KU`AJG5T*gzrrq*B-j&&DbNx$|i{T851BxvrQpSf^6?s$?A_?vQ9cFDT z^PG!rQQ}Tg%cV!u#n(quA4=7H`zXE>VO0I9gyW(td9N`(1`PN*+#PFW>hqLXPGvJz z39`b?^-UA?CWXRwOhDp?v2u%PwfYMMa$ftsxb+3C;^Qm9ABgD{jbJBQ?Wt8feXY-| zZB4SSf94jsA5<6zA}JkE>XQviuD@I>wiglc_@q&>NXR5@r|gWsp;v2zRV? zvPc}_X%&CO|K$+IYp_E-ei>n;1-Q9f{kjLyifV8rMz3zftbJX+%6~XgN!w`W50F2{ z?0Hqcs(sYR)5{)4ddCA<<4$*p{D3af{{yt`ar;iUfAjN)uphGYXH3NQitH?Sk-S07 RuoKx{mgYA2k`tGr{sGA8PwM~x delta 5484 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 diff --git a/Resources/history_delete_default.png b/Resources/history_delete_default.png new file mode 100644 index 0000000000000000000000000000000000000000..dce0ad0b3b5f287d7dae0cbc46cc6365fa78f86a GIT binary patch literal 2092 zcmbVNdsGu=79YV9qybUc1=)zx!0N%4Br_ooB9VshiU%k{T7u<3UK27vGHEh_KtaGz z&+-tERs(Tb!h3s|e}M8WnCPyg6C^SIyl{eHiD zzx&;LrYI&l+}X*~2><|RQA9{A@jXa95=T4Y{X9L*h4`$-LnU||rouC2dIS(CF*yQ? zG_n*V7Lh5lKD&qn0)V{=6-#hQR3uM}2sQu&2AOm+MH+&GawG-S@~PG{ zom3E2@~QExC`Ob{h^WzsY&{Z}9W7R5rzrxI)SyjZpovEaXb@Zmnl$NJ1JA^#zS89p zwr!eD1z$n%G(PopP?D$^P>AUfkVRwqDHsq0ve`7qpT%ZFAAm3eg6Rz6X8S?@JQkY= zbHIg*N_f*NRlL}cumxYlh)-4HxQ<7sXJ%&7GMO|?pF)QM0s?FrFziPl{0v!ITxRmq z8oU=3LJ)&OkLqv~(}FfdnH)3Xd@2#?>n&(>QBiM%wT6X65hUgdU3+Fr!{UoQKMLkxb<7&mGx-L^QmQ^eAyCvh)y4Vbma6Tol5m z5-T(%s^l>sE|Eo!KZ64^*jxzWa-cA77%UVpf;lWMle4JtHZF(DA_xLb7(0LoL7`AE zlOqrW!vbb7BnbA0;YF@UYrth%1+wTDCHyXM*?-FA3H68!$Mj+hOJA&j7&V4t1~sMw zg>ft}N~S=ywz2JaUhg&p(W4oNGE9$Yz*qU@p>OdYAYidzK?ux*7WNIp0x=9|(d25*`N(Gne_Ct72`OCSb-rHP^tf!K6? zYF{5VsPgzhF&Y1mt9j^O6z8Cp4~Tgl$7kas?YfV6t)nqe(3Mn?A#*>D22(14WtyKY zBpT&kQ(SaldeG-cl(*%l@WI2s)kJ`r8uqD+``3A&zA@l%P55}~*{;-pYj@(a$FR=6 zC!5N=#T)+OF5MjH<$lWP?4#zbe)V>WaVgiMs~fPhKcWUm_BLC`$Tu&ckjJF}$!h<# zWwQL`JafZm(r~pjyM5Ja@mGp3S0$a;b9wZO;6q)K zt-sFY!kxOw7xjG)9zD&$dz$N2O{j;l_q&X<6TciX4>cy1hJ8=2J+RqQ7)UP=^9K~(rK!ylAhQ>|1qO$LKQuk8)UpafAB*tWdL^_#(iyWSo9$DDQ9^POcC=U<*< zi!P{|$h9jDBzyeboLW6*6gC%ji7CLcYaNYTR#;qHqQLmV7;gA zjDXz!-OG*WfBt>dWXY9r2XpcB;!oYs@P`@NqrN++t)=Hw3EYjtjMDrMtXb|oF+P+) z;9fLoh%BtyF`JVifLKSnc$Cot>grUhIqh_Ixl8SZ>2Obh;!#EAA@jxw!_%ym2U1Zb zWmdD%)LZC#epqx*05%p7ZX=>4v_)ofqc?(iVHaB#cMaI*ai&5-nHS3`z# z#*Y$DJ&)@|nrkwzu^al_a58e&#xkJbSzmXV+s(msC5hVMr7h+8Za4Gx)$4|n%oeZf zKEq=}=-x*2{UlW~7tYaC@htiYB<0J{rf!L|2ACyU|j25J0glM zXuT9)g|x}jd0aASdF1=))t~%!pE)?2gg2oypGti6tekxVx;D$MCIxTUEoWQeukOY= z{+YGh+iAP*+1*PQbQPCl-JIUp;hW7pmXkX@buK)pp}ui;TYSuxj+#wTbMU9G?|mKF z#+7fqmi*D(Rdqe-w3mkyvp#NMdtRQl?i$s$_D!x??d5|0OuBQbyewz_;!lM?JXEzf z_QKdF(_n^@nJDxtM33dX(b+v&!$+NDKB1+c=U8ta#K)QO&KrbB` YfOqH}a?fPjjP3s|3XKkF43=*HAN<}u0ssI2 literal 0 HcmV?d00001 diff --git a/Resources/history_delete_over.png b/Resources/history_delete_over.png new file mode 100644 index 0000000000000000000000000000000000000000..b8d99e3529e82e16dfd6b9ef117b2aa5537776be GIT binary patch literal 1961 zcmbVNc~BEq7>^gV8n8vDM6|GmqxDF#yE%!V29gM95CclQhJ<7>ktDm#E(KI5N^PY| zTcF5Li(E~uQxOE^iVBg6fT##PL`Fp&s)#6F(2k;g0kQqV=^x#LIkT);A$lBuW&JeEq(STLGIhsR)0h)J^G;1H%Te6e_*_k zn~Y2%Fpd%<@py|CW0d0BcoSx(LZksqaKqLabYd70 zfhY=jun>g>A_Nf$5xGc?21(#RAz#E5j_Y`ntWd-kpfWiu7x-}zM1}-%g%U|1D&Ynq zl0Y7cj?0FaNlIhZV&irV!0wo=O#Yv;;vfsAp>RtijvL1-AY6}AIH|`8C@6vtDKuJx z*+DzfGv=)nvlu?cbaD%Bf=1&jHoU>UpM=jxB~p}&yz(1GB_bXI;J`u|Dg@ZaWOe^1 zW*h*9<0y`Q70dV$s6fZ|b?F1*b@O0m&@mR!8kaB9%Rt9RP zr9b=_7AG6vc^|CD-_3gTN8r`^Q{)5ILb*79C{-DAR5hifaL)C|kGUm<40@BgK@F)3 zrIVZ-Lkp|N2J!CY?(PlI(Mv@l(UK)$zS(YWZnYcDMx!w$<;9H~^YX)@qoX&lf{NOk zn}g%ykAF)Fm508$sqcN1Aus9d?95uHP-M()iLK0ADR<2g;wjep`cE*-XRgaa(MV%s zkk_Gw>X69oBQILNy1Hrg(8GrhEAuDsv|FuKu(fz*l;oynhw%HFZar*iY01vcE`B0d zyx3M=9)4|t=lg&C^8GfF?efi8n4FxP87!?h{L@bn zhi|=%8yp-gH>T9tY-`_VbSao>tsvnJi1F1`7{mX*am*~gf@rh37dp5iB+ zzy4~CUCDdvL{*glL2meWT)9$LTRXq(LRyD>{fj-*ce!rTJ!*UWY($|@)aRF8{GfkJ zQoP4Ef)2FIliyg}+H>H5$L+J{&aKD|IFfNJb02#|O&n_P>dJE?pm&KSk`+@hTpq5`;Za7v>Zi)*trT-Bf~`uaNEw#m*kHOWb`^4p?dtMXc2-t6S*hC|0do`;8r zJzuWb8|N|@?Yvpl)zzP!tNaKDv%EO!QT&Gp8`)QJ~6?XhQLu6snBZ2Cje*^re4)g#3 literal 0 HcmV?d00001 diff --git a/Resources/history_details_add_default.png b/Resources/history_details_add_default.png index 92924be3bd2ff89fc42d345a0ddb62dd4a15c988..6ce83f41a6964091c0a98b5fea754346ac15373b 100644 GIT binary patch literal 1957 zcmbVNdr%X19$$h4(AZiWl{={Jg-)q+l4LiJ4O;@_3A6^e1QetdL$Z(*Hk(T}B}91@ zkBU~)gF`9QYVC+;A5zOS7OW<=BVH9Nw8!BC%-E}~4=|+!ky5e0AlS~0(?4!!XY>7i z_w)I_zuEe%%(R8`|2Q9lpoJOf3JnB>qyjlNf&rcjpiU3?`2(%YrL|NMU8b`VkkmjG z5^x5oD<(9A&QSi>FNh=v3N12a=hC_A)wrG_Il3T*;~*`74M9mM4vS7-LeOv_QEW0x z*#2W4Hf%CT*z1I9p4uWOjHYy_mC!mfv-QpreWHP#k_;y~aA1HWXdUbzOU*XiAz{zh z#ep1DbJ_3=gf5Y=9|V=F&VuEXm4JmDeuAEdAh1ZpK?FjP2w4TAJOt(Pz%5EZ1h`Oy zqZmAUv4JxrqbP2U3~KlLj)FiC4Zg-|0!`7CDk#03B+PV%Lc#`b zI0lme=OJQHMNGiMP@YJPAYu$riB+gv%9CM2F&~?=@hGmGhlx=>CRT|O5d={pGCn4i z%1|j^hDc=s6rJN{m~FJqtS9FDnt4xWSUd62Dwu$o>b3@R%{!ZY>7O^@)e6o>?f9F?QW*}PFyDi$Ch93G}bF%bI$ zuHpZw85ab@4Gza|hGk9#CNL;I9DQ(jxIBazY>XAG#;)6uJHW>EXDFoEj!VOrDdWHG zvEdf1mMk{fw{II%^?v7!>Ra4e)zQ}z@%L@>_6A^Q_Li`v(KU<0B=5$L@7sF4URrqI znVqL(WLF-3ZmWAJY{Vt7$H)EGEx9<}anWAaiVc1_ZTtir;|VRczi=m z1o}o_Utd^i^_h>M&+N|!mi_HRRrNgPQ#`olBoylIosrWwrZQ~u;UQnwrt>GdT3QAQ zHckFVxm}=OEPk!NzMlJXg(Nw-uQh#n(q@JHDc+wZ$G$0OY;3&0ynqe~aHF%_w+~FdTYh=`^HE*m0_`GyYlJ zRS_61p7h+Wuz&0yzHs=wySHcijW#T5k866$(^!0d&))v2`^e_CjkT9#o9dp}`FR?C zu=UC?YsF1*R}rDT({rgwefrp%@yA)$#-^K=EXfz8j5I`;sw2~H9raz)Ha_bez5As9 zwu65ZZtD8sjQeb{D7mw8tfN)1mZ6Q9oM+1BkF^w8m%mW-0(843B(mqtP8FkIRJrrD z1)vacfB)#M_Lba%yS`D`Ky^r4*4p;m%6r12KKHk89rL%~=F)!-L;9v#U(~#dK@E4?GIm3i8eg0 zqAG5jGS=A-ZDBermaMqX8ZuoK9e(db+Ohq$hxkWw`)@9Bl{#ON)B94G&AdS1X^!s< z$M)x2%bR-*o(A0$&zDt4W=O+GXHX}{dj$M-IRSbL#xP~4vf9Ij$O0z^(!X~(@nc_fKH`Z#;p7D+q~Eu z)p*O(H7l16bqp>^8+Wzmze7be@9*7xm)vj*@%FrPF?siov1gaIe3+LPx%$Y~oSbtd zlBnkLz#u=yGk6@6h<1G+P>rv>(^hulH0uk4CN7l`3fdCNni*{tZ{vc6QPHn^!I+1# zF33WoqIq7RO5f-W4nG_OUXaz!V*+4x$b|QQ6rrpGC*`XEI|Kke31@EGkoQeb;)_te h5zv{@&zF2j2hy literal 3987 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 literal 3618 zcmZ8kc|25a7r&^nBs69kTZT;bXc7_GH6vSM?1_;qi4h^mk}*U1S<4cIsUNatN(dpQ zk+ozSOSbHLvK!v(^LhVxKkw%*&%Mt%&$;LMKHqbmb7QWVVvchOaRC5u+z_jO9ROIg z!Dkx|2zV#r6=uMO#qT;s7bxivnFU`Ucq5EHaBz5J*XAXIJ)8urtsej!<3GGufESqp zU?;o3p@{+e5Qhi{TKSYGMjbRyG1S+w3>sK`dBfO#5=pOP&i@mWXJ2zZ#ROZEonLt? z_vrbHhFnehXl>t50s^Ou0&-Z;E)W4{-$0joC!NNipV^6lWFhAZ=}#fjq~?=3UTEjo zR{|5li?$S7YUTm$-m6RtJ88x1Hg#EV1TRlNP_Nqv>D=7Z$a9m#;c$GqSZ=h63hBd# z3w!Z7V#Fp{n6@s*(F8tS>2M;SE(?mt$0a6CyasTJ6Irp%Va?3lO|-IdRM`GDxj_u3 z4OJhi4&?Rl@CaI^Ardn)W9#;Jp6ZB$0%2n_Gnae!pukG2V%_LK`5kVq93ZLRH#|5E z!v8-uImCs(Hqo6E-A6ZfeV2yRxOsVnKaSKsL|pXw1zYBaLRXsj%>-IRR0)8T*()Lq z?=1H1(|1wwy0o4SMF)q2D>&9vdRA?3KWOXh6#i&pV&WVcDw?Wz^R^hLg%fqHe`aoJ zxH?c!pXxjV7+U6+l#t|Gx0stFeVMFU`&$$4?(R-}-$-L3VhpRjl}6s6*?&`;b~`n9 zxiN7f&Q8s_UohkRx_Hq;msznK;$;woPIFjG;K(C(AUZxC6B4rbVqWV{vjq3)95$3X zd9cFgb$&jFWHRUM>@3#I45O>d3WY+iSy;Ts4?o)77)y71#R6z-|4vr*pW$P>y028p zWvueNqr(&ihZoDqQGth6-WTgAGE zsDU(a?sOkm5RuCB)$byS{=EMu&!PKNF-Rz$y~6ciZ87+P+v_uVXW>lFP3(NiJk zFz}8fTj{p{g4==~;c{O*LHx?L;beF_pgf=PM%M!@Q$XMN;&MGb3FS${@(!h>9mw=K@+uz^y zaSY%TN7EJ-JW=5Bm_#nK4#aoX=CXe}F0?)+6#0YJ%cR3p$K8EgZ zPe;#NT3a{H`cpoA+R3TPewLE*)$4%BL!f^j9=;oNKttRd-CCW<=-LR@Tz**B z>gnm3@ZyEgbC;Na10rjs3&#;w0YO0)povCnm|n{%FNf1;w2afCiJ`yjs>-_=9q50i z%Ji$lbXkTHmr8SUA)t6=J48TOSkKdQE`@Wn@i(wO5&!kSI_M7{Ke7Vnm6Q_G(>b5g zSZz~&{QMdD?AbH;{KxWg&P{ifjKmi&p19ECilxIRCMMkP+~HR^qpS>1Pfwpesoh@I z(b4hbuCK4Jw49utgM&lUw6uKh>#Hb=Lm8gS zXisnzl#!8{nVpSs->a>y4LV?MHZEy}?Q8s5Ta!>&zE=fWbm7ZvB=fQXNl8h%qNON9 zQ2T^j-^0zNVf(hVAv$Ms@+mEOuA-mO)e^uZ`>f19TRQzWG2tNtE`MZ+*8c_ zj)oW<^z`;hnr64P8Rr*x5(r@O5}$`75XaE(Y~=Hciw!(HWKf3Cal`^EnM|f}${Rwj z8X1|}+aCk5H!$aZ%=fLIPNzqudAQ6hEnT^PUm4VvVUCYeX0$A~Q&LXa6k7q>4vHR%&#_$D8(L zIM~tq_wSQjiVF+*%Zv;Sb&QOj<{%Bs2~%z9(L2*}mlSjB2f3N!n9$JATM6T~sw>+1l6b*YLWbzqaB(SCT^!2eDm=h;@&Cvae0c~w-bERn=b(IikG?M22W)HQ2JNFFnWKQON*l)vEZHCqiaLrG9!X<^s+fRp6;U<#wq(Pk#p_U-OGWhHm9V zhoR^K9uBAPlCJ?SLU*4Bo}Dzy(yT2>Hp2BpH{F%kEGf3qRIPO^+$zRA(_>y%SAQyj ziHm+_m4rgOy{)R|mogQYE0$8I;Z0!0T4`r!y=QpI?Xypic}_i+Z=G3Q#^7+z3A&>3 z?3!7M3*Y{2ub7?g|Lbj>k;eOc&R~4zRq&k5YQ@MhukGi$I;3MM!m6-GtbS~#FK>27 z?F;slZ6$MO5uxA!#zF#$6B)L*O7*>g1k47Q&S@XCagoUscai1EV3g> z?~XT_@#ojn)WBOkci{#n*8B#}N>Js=#uK{j6O6?G-_zs)B*zge6VAw=uEm#4+9GEc z7WCcRq^@8vw6w-`UVx2_ZG5@M8;FOs&w9Ai1>`Lo5G%7~YGwZ+0CB3KSxC`1lv zF(9nX@SK^?e_2Nfs#fygMsQC(vHjIQZn`B%yj3g0{rLL6y@{S`Rmh`b!FALDsaiwi>(~8XAJ{PCwmb z`FbHjTRZcXnwr|_9($P{e^n81Tv}!(v2!|-hHtCI5INQ-P2PS1O`kUQ&UsD$`v*?Hqk$Rn76gJk9EJbICQ(mGiq@0B;NBqBOy7N z4Tm!~H)n~bOMD&r@gpKOmODs8)Y#ON6@c>d{}>t)S>3Y-7gUW77UOJy_wc8vp&^Hm zKi{OT!Hz1{?VT6lVTTz+&?ip3EmH}|>XcHr(B9r21eP^9(p=Q{@5czLK)qNR91b5} zUu_mhphTTdG(N( zy~m;$URSKGQw2sqXCUnCQQ^OT|IV(eVqDw*Guir%;YA6tut?_9%4jE*l$1mxM?XP> zQ;Py0Eq~rE5h$fd3y6ro9^U{#D6}r+TJ6fKwkm|*xN!rY1!6ERWeAm(l_g5_?)1ee zsWK&h(EQh?Ozi5(-ME3pfXH1N&Wgd~wkgi<8QgyU^ExT6LA8!$GtT99)*^JfR-aoA z15rAP*nz#b6zO+%#aLtGSeu}7-&QJj_3&r>FoBs|JRPsKuWe^1WbEhX2i7oHX+y`J^l}S_0X9B diff --git a/Resources/history_details_back_default.png b/Resources/history_details_back_default.png index 932043c493577163275e478f6275e6adbb4552b9..18ec0869e5d366331c89382e48ff266f8248145c 100644 GIT binary patch literal 2249 zcmbVOc~ld39v{H?5YS>lPFq7%R3yg)l0YOt5`shyF(3^nLP!QkLyjhc1QZn%6j@e; z7KjB@=(9zTV_iVxRxVwH#j>s3paMM*r9cH0*a?U2d+X~TJMZ^qzQ5mmKHvL0Z<4&d z_HWcN(*XcrBiqe|0{|M%h|Ja2MDDskRXy@Bg;`wKM;Z!8@#GLd7f3@OG+WFIgE$aR z5dFmi$N>PfLWRCunCt05SH_x zy$pdxG|Y-qTu*N_Q!0nhB%BSFPXIwQnT!K%Nn|o;jV2O6BA$ROG8VL@lE_pd1-*J< z5NmQlD3#;lx@rsA(Jxwq9)<_)?d{b%h(s)cz$&68Fi(ks-xKxH_ z`jF6`Jibt(-mA;A60Hj)7aoTMu5zguy_{dF@B{W)AlVjV5}8ESYTQI3-Od(7+#yg{ zL<-{j3Rm#|*m=mbYErf z#DFNm2in>?m6JR0@Q30f`x5NPEl(a{`3hWfis@ih>KPs0frbk$=Kf8Am^wmDnsJ_n zp1$gVtq-$J(?riT-U5@@tlcqEJo|W(6VAhaA&&YrGH2HuBmc#q{Foj%l4 zvNUc_8(4R#H63t{vo=ajGz3NuWM93y3*~%0s{t@DQ7_c`Ck(A%&DG@*49NEoHh*_; zx1nR~@BNgarzY}nm2{`dB0KKz=#BeT(xtfi%Fi%4X^!^MpG$BD9JAvrf)=!x`+IvA7Mv0R_j zr8lCK7#gKGt07fYf)ARXd0v3RWmnyZd97QWmY#m+jz@5to2}Ukhw1r*n8@>C^Zwq?);!@>sr+LS0&>7JcDIgG3!<)1<($iR1fFerLMM%%!!lGTdF|M>eAJ0_mi< zqw`-oPpXW$5n}O9ZB^e=$B3$@r}<>F+YaKS++C6NYP5ZPdP=+l#T~vsxYSYd11~Mp zNfKhw;m_5d8%TAsEY&o*O*CF&xhLzgk1aN3WEgQ$tMW*wz@fmv_UNpPilV8}@!7lZ zz0BJW9gy!*?(>>yI-SbQ?{cWl=P_eH@yBlV`ZgW=Pr28=Jg!gRmQCkx-OmS&-A+s( zi4P|D`USM-f9c-X-ED~S`?w&3V{fxDagpv`v%O3#=pLy#?0*QiCAXWVQDphr_v$yg{$03g72jUQr`$c>4M+ANT5wW%Y?u zR@glchxaxjg-gZJ2Hw45*7qdV9t&zmEjkbX@{!Y6ar@<7ucJ3@X*AEcEgroVC4~jY zt0w!+E-kzyVJ=sR27ZjZ3)f{_>(!)?NSn{elk&KM<$hK-u^qRB?4@h0%#4bQn+nSs z91avHJ6qq~dtx~B>ElY0}aZfGP)jlemo?a|#9qcMSoIes! zI0ZoE0c<*SZ=}t5y#ALri&uuWwFRnfL(?t)cpMUPXj^5UXPgGgIIF%*W4FmT=8UG+ zoKtDSdSvi-6M%|;ua5tpz5v%6fFt1m@&zz7L4-3K^bkt0?nXrLUOo#8{@*jydYLh$ z46q~sI%;@!oJL!2aO7RKhMK6Ub*-U+^XfdH1@y3nX77g%EdN}vSza#1jNthH0z-+C AYybcN delta 2604 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 O0000^xMGpso>S3XWAg_xuM<~SG@bK z-`|}rm1jAxQx`)W9z}0*iBl1jn203HxU-y(J|7y+q$E7&DNLpdw;cdYW7fXZev< z?7|ptJf@I{D=KKJA89oxVF;fXs8At9PY)Vd3_=i*!SI0So(u-Ghe!n>Dh0%dL5AqC zCj+K3iE9@L^QMv{!2&jS%@-#5k)$Z9gejEF%uJ6=nukJ_Oo6<;y^S`gR5GSPR%_&_ zD2pstyR2JaBWkfqrbJ~5IniiQl&Hu+{YY4(t0|-_Lqc8~maEqag_VqwB~nr#50H|c zZp>>%Ta5~k|Ag^IZFPi3iBJTHT9Kg=WBo{SSqEda`(sB&MJyUPOeMpbB1&T`#2M*` z9Obe7NZ1<>iA(~6kQY`(CLLr_L53Fuc`+fb7nd5y0t1+yUNq*qjW=SwFeQ#Roy+is zAczA6(3mV%0F^}xfLH-^Ds>&pldDmYT#T&yl^Ol6VrhSfg#%TH2vw*e6pFO<3E)c= zs6s7OD2ajLp2QH5SSB~h#`dgc%SKeP!-#~dQlt}C>I=)>;GY9A=ujXvkjh!hn@VMQ z(IG4xkjbGkvDjC!lK-b>6f78uaX9{KSk{lQ2{f{=M;{YjFApNeHb#Z5h9QN^0Dz6H zJT@yLYiR11uy@hycYZwd}7G#j>II^T6!v z?B^!?KK!n!DVK-iQ>KT99d`rn9D?byb^xPy6Y_1g0oxr`slvph!elgBlarH{ntC88 zsPFmw;NW0UQIUk?-t$y>t{|wcuI~1oI|Bm)uZG0D$=O-vrQj1TpDr)w!u9;anVD*p z$`F5(sxRs9?|-S&1?>I&SY@1j(Us=r#hICz$KRzj4OdlF@d{~RiBuw~uC1MVJb3|+ z$A5V0)cH?NZ~xRXqIddmCWIq2D_avoebgeE|ryCxLR8Ktetq9DogBi+0 zF5gQkcM3aL{3x0@n8pzB_g;M%D-a|$4f~P%CQxn_~?tOK(uD15v_qs#27CWpv;v8@9Cqx~4^_%Cus{27YG+~LbxVUI;Vd4M6 zElMhts@1fCljf#ZMn}a0errcZ$Abp~%Fm%Gjj_jns2F(ezgSrJu)C{k^Oh}nOOCsj zQW%#*U>GKuMJly%R#sN=JI4B?^y%s8yjJhi*Pl*J1-l%y-B@W3mw8YqvlA1tjEwom zcwJ{pef*(7vtt!-EwdT zbWcAbMkH%A+M1ew7z|JTR?ykmSy@^6(@#O){OOTi?|snat51G8m7J9Hea_8>#zusC zX)G!@s=yk-s#RSfz{WB%GBVz9C6v$SD-;SY*EHs>iC=#$*i@TnV`DQqI;z!bzp(f9 z^^J&%`tzAH#TUM$&(F_SSH#C&i}Dy5A5W$<)sXEE2!#&U?F+{ZhWKw{uWfYB@9F8e zc+oyAEER8RT6gW5Uaz+)37R_WG^KoDRw&5mrE12Yj{7ptP?PgXO!#92m06Q?>=|&;G z?-*`H&ZmLEZ(HV?zLW}p{%4LZ^!BX|0N!$B*RpdvVCV4j3A046N5(${9w(Gt7m!f! EZxV}YA^-pY literal 2447 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 literal 2457 zcmV;K31;?*P)003AB1^@s6at{1i00001b5ch_0Itp) z=>Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RX2pkSF6n>+46aWATD@jB_RCwC$ zoqtqQ=N-l$cXpZ_Zxq;pBwB_1V4Vu0bJU1>c3Q2K%^&s1P!YzaOeunPKnrf73}sVr zV9N>=JV;rEvaVV^xYjCybylGE4^*&DNP>7!5_e`242Jz-_J<@8?!6?zvYm0ipTEL= z@B3bI^W=Hn?|UzoNp`#44ubd}@f|t^1PPEJ0TKiWkRSmP1PPEJ0TKiWkRSmP1PPEJ z0TKiW@c*1nogS^%+wjP0rIRtpcj*+2KaZ?dl$2HA?D+-&fP`UCUVH>{nN;xSW)j^E zGybl(Z~sB`8jLR6gH=kD7aySrCW(w6Cr;I2dvYpEd=6n&9j_$^BnKRy$jvV(!sVtG zxBC|6-&*{`EB_s@k9f=97>i2R}3r?J>BLNcLbGfMn z+mln#snfeHNG>WMR`eC1qqPg z=j{0gq-A7r#$~WdiNgFL;Uy;~AXuejRmqO^zl`)t0Hte76;d^w_)FbL%f&M z_V3+|d0t+>?KK#Ag(YDa#K&%ARn3ABAWZ>XDJ?&S6Q|E`w#}Oxik!WfkT49qId7lW zH=wkw0$e0UR&*Tj2}MoF23YhR$2MV zG9+!^BG?-dNPvTU+0=r=N8aUhD7j3EoUBZ!M=Y;yjdtYxKA*R8&fb%Od2>U^^~eE%_l~~L>rinq(Owq?AJlw=4?g^er*aNK_MQwu z7aHV%F79`c)1}hiNXDznUjhJ+UCLm5fSf<%L#ylJY>$hH#?NCmcr_+D-~^|siB0`!C{&0nG5of1wl%cKFw{%r=-Dg`Ob4U+~21_blfd}OuaXPfzpfVfT3h>MAK zJ4RVW70zF{$l1Pl(ThmiwSyv;BACPFctqpic;r) zD?(16`HVeZ(}ZKOCLAgHE*OjtTnd#_b)OkQC<5nZnS^HDL6jyZQc-t%^Rbr(4YwRoC}SYI7NA*{ierbFwA6RWu{?n$Q)7) zIiU9i$g{9$VK{!BoCt=QOs+=)^d5$pJm$W?`ehu}u8O3{9j_v!udi>ypH-{1AMccu zvF3FQGa1UDAkIEgsXvs8AgB~Uq>}Lzpv7XLuQfptOppKx;=c|(8G#@NBuIb+K>{Rb z4oDE>fCLGUAV`1&36LPD2qDM;Ck$GBH%g9Gd(~&h)>x>OfgbH!Qc(?US2xs(Kbns-`vnr95E#q*wcG7u?lrp9Clf z0b=O=u8mxd>C>cc`%II2{wzPo_;w75RxB1lrI^VQV5j~L9-7SX^PMW#n_UI{gw*NN zq);mY$NxBTDU!BqrU@T8AUh79<^8wc>cG8TBgA46)QUh%mrFU1_1HFmd%Xq#a0*`A z)s26d%+B^s{T-Kf65zzmV3*fpdH?r%jreozCwOSKxNM*EgJ3*puK(f+Yy$%ji$qwx@@4#J zUI+l-p~-?X=Ng?N9A1PBKc-{bw)hRG|KbWRTx!BJc>uP>3-dvif-XYt8@&5_VViBh zDX=A)1y1n+fS>PFM6ZoRUeQsfI}+r8qek$8usQJa^%-@4KcAr`lAggr0sxdjGgxjV z5olK`m* z8AD%B_a_JBhi*prmgkR;Z8ZNQ2lTKC9$u+>g0IgM=WE@ayO2x$S^Io*+p{Xz#UWv* z2&M>jkI&R8Py{}YuI?T*{=FG;sXvr~LvzTctF17Z`@D`|li5N76k-wbS^Xu5MIyId zu%3r+jEdh1Drp*PY}WQ$9Xj0V(7|NxgIwy5Md9;c zGWVhDZjVc!;m3Sw$wJQG$05A=p|gY~z}vTP(;tNpvxEmnh!Etu>wp=s@1IOd-Fb+689%BQ?qA^$$8hY`z7zYv#Pr?%5 zA07l`O%fJPVz_&Lum!Eih)56=lTfJm_;|Z`dpkf9fx?w<{57$I*+dnJ76QaA#4fEz31i9nh= z83CQxh4I5kXbcfTk>G$PV9|IY216uZJc*uIHwv0cz!B{UOFBL!>tRnp`2`r7cu)`~4j$c!8Vceef!%7%ibm8KNrsr1#JRD53AQPak6 zQ-hOUZMTs7x^$u}b%(T#Sd7o9Qwq$cwujups?>IiRxGn7|H0Xjawo7x`quC{dBMy& z@$PB!%k9bY(WMpbM?;}Ph>h*hT9s~Ym(ok@LY><5*)lyHG5VlFYq`#@4w#1Cvi4yJ zY^64FwvrPX+7#(viA1hOqTz9IaUdy>$=rCX^6FIvgVA#G=hU&c^Y0R!*zpMojtB(x zzN0+U-QdwElGddwkKYZwr5CGO7CNI{_&+#gP>XZD6ddhF+vaHWGs#M`} zc{NPhACETjd--bmT=G_Ccvob~F1_J{GdCXj%m~f^rtMI8(shpe?7xh@L z@5B}}&R@82!P(ilV3)tY>BO0czAws+jg7~?^jFqlFc>D2xo|+)+IsffxsjH%je&uI zetv$8$;n5}z+nA;D?_Vt;z4X#LqkJA;4x3>6QvP<_kjMhH&1SUrtB%E=Ph$`bv*;D zY;SL0gR-Sx&dJHi%}w#Bt*sp&sEL2nw1V;1Q0o!P3|e|{oxCD1FOh#B{P)Xe zUFWt>0=gyn9UUEJE=eK!4E2lQ8^v8&Cr`p1+ZsEYKi`{eVPWAt*yuACrfJz7 zhwE9IczJn^s?~liU0u@<%-wUnE-^_-0YyFaiLZ`(q$(8W)lV*&8{BO?rzdU5B@hQz1C!_tNMcV%Vh`x&MtCRGX3 zh5avng8h0cRw6Md&3)M0$lB62p<-n9cXt;s&I?YL*VVmy*r-q{y`y^4rX*mXyPKu#VF`}Z88uYycO;W<4Q!V3`Du6kcXU-(S2L#ZPePCcfUthnit*w)3 znX!XFU>`W_YGw6(cSYUIcK>vhz5&g23sL;=&5Rm}L{0_yR44Amv6GT&0|w^il9WAT z`5EF#K>7Ib;m^o$`m7=4gb9@^)3K;B) zQT5g9y{(kJee>q-y?Z@TGdF)mv3-23h!yLdEUm3CT)cSPA+F5zWxCCg)~1dx3eOU- z*r|~QksFRJ5ELuwnu60UFV7cLkB^Vb>#|AQ#Q8TC$sWdSar1Mp7syBNhA0|C61g{n z7+3xjsMH=^(S^K|^V^(dKYE1{2n5qR!KPi;nwu5ZUset2BG4O>^R-vicWA-UJJY}W zTcgu7J4(r2ZFY;}ie@ delta 2263 zcmV;|2q^cX6W9@u8Gi-<0043h{8<1100DDSM?wIu&K&6g000SaNLh0L01FcU01FcV z0GgZ_00007bV*G`2iyo84ly_P=~|@#00?SHL_t(|+U=Z6OcPre$N%2AZ95y|f)eVE zwt<#~mXauCVbDe8RY)XJUcM3^5C|Iut>VIj&`L0oh*&{45Pu3H8$lBwBp{gBVgwU6 z1v5=tK_BrI6X$MjCoMhG2gtp-&i6~2v~%X1>fy)#J7+p{k01yF2;x8DFPZ{^1SCj6 zf*=725|AKBK!OA$2ojJW0SSTxBuGGlAOZj9c)ecC%*-GV2+(AZfd3wWKmc`hb;!%h zLs3x?4jeduwSToWniv3k=x&(ZPrb6TvN++4Mk72P4<#TevU}XUdlz|mdCau)dcCmQ z?UaC&fV)?6pFMk)^xWy`X;>^45|H>k%*@Q7tgMW=(cm~P?l{MB@cDe;IF3p%u`}#; zJBo^mnDSXH7WjNV)YjHA(^9qw#E$X#e1g$v6aYv*ntz&_1VIpl&CN|gqtV2*JDpBh z&K(K3L&nC&1dihp$`^Tzjg1L{AP63hhuQA&ct}7ZH8wXlg{Gz^N!ctGOWZMz;{>12 zCkTQdIGxV8c8x|OY;JCnfJ91kR$r5slSp50hgDTQD0w=<>h5&LUna@p{AxL zZJ{eFDlj`c%WQ9KY(!UA7nK~jC*a`VAb%Pf8YB~{zrP;_gCVVinw_16&1RF_IggBt zps=uzQf~`;e*XL^yBXQHZy!^XD_5?dy}do{O~I{Ox6skiA-QuN85xoFMuQS?OZu_o zd-(7nPM=g*%rk3V_xB<*ny9)CQ@ zlrJkQ3vb@M5#=Kil;9sfe#qumGY|-1|Ni}w?QLysNu>z{0%&b*#o*u|v;D-06X@&f zqmrAdfZxA=myLiuJw0e`ZB2O2;^HC<27~0z`P{j4k~`sMI_sMTs?M6z0~7=IcX0sy>w z_YV2_`Eh~;gF)t4xw*L*8X7`YRu&nwLu7FsaBglcF2w?Y0B+yDjk&owrf^d7UA=l0 z*REXyK-czuO9FoR^5u`8#q;OSr?de{gi58t(9jSLA3jXhPy(jE0oe&ws};Syy-=xC zlzJrK_R?#++_`fH7cX96o52`a$^2}ltCI`j>x1SKFr0ulrXNYEOPASeL|5|AKBK!OA$2-<`Y zlz@K>^Yim4FE3B4&*3=0bjFq_R78ykyz&&c1QM1KedgP5P6$MNIG zNkBQUo&WDYU*^8;_loWt{d|6Y9*vES$jr>dv17+bK)DHc^X5(H_4=fJ^m_e{1XL=O zFq_Rx0ePNBW@e^rZ+4aSH>B$I`jkuSPT$AvcGH5767ctwguZadh3`ZAPE>JUu9(_!r?FgK&@6otybgp>(`i^oJ@HW zlAoUsp69{yJQNCrn4WU`dB|EoyWI|@Qkn34olXb4-7da%IDZ@nhr>`P6tLUvG0A4P z+c7mYm6CwN!^3boop3sx(ChW$chSgBKsm4fR##WkIzJQ&iGrOub4HXel7tS217@>X zOhEY>-xq@G*_q?-|b^ZGFq3en_H z0`5)%W@KcD&leUJpw(*Q&PjC_oao<00?Jg#R0K4cOjul8M0a;LbUGbOCX?9ia=GC5 z`;)Hswm#>1o&=Pma2*{TP$(2h`{;B!w6(PX0Pf$v4}YuG3cufv>gsA7I&=s}j~>P2 z$B*OWOEm%gem_p0JPD;ziQe8`c?l@z^!xDPL)v{Jl2lh$BODH6X=w>dOH1Nq7_C+- zzD`DYc{yAzmpD!&4U=6Oq6GXOlaY~u%a<>w)hGH|AOK`%XXEYLw|M#TC0@OH1)k@j z)oM{!S5OC@=drlB7}F>EJ)_6T$jHFN#01=KH~fCTxW<&z&t%WXk00reLI}DHL(pXy lf*=TjAP9mW2!i;t`5RdFskEm(jLHB2002ovPDHLkV1fjrDf9pU diff --git a/Resources/history_missed_default.png b/Resources/history_missed_default.png index cb413d997c63dc64215aed61386b624d26aea688..4cc4a5c964b87eb21d96e4ddf6ded90b86aa191b 100644 GIT binary patch delta 3430 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 F{{gZecryS1 delta 7997 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 diff --git a/Resources/history_missed_selected.png b/Resources/history_missed_selected.png index 0f2f99b4ef3f5ed365c096da5152b4c9dac7d0d8..498e62c22b02db5234472b1d2b7d3d4c92ad4e9f 100644 GIT binary patch delta 3096 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 IX|vG(0ZoM;1ONa4 diff --git a/Resources/history_ok_default.png b/Resources/history_ok_default.png index 6b6f4e80ff022154bedf13ee5f23f8cc5784062a..4b402b50c664da108663d086e2b5eaacbe7fbdee 100644 GIT binary patch literal 2134 zcmbVOc~leU7Eb|zBBVabYbl__;1a7@W(e7UU?2g4hJ;1gtP+w5gsdbJl4y?$c(AC@ z3e-Yf5NO<>Dk5q{_OjV3#P^UQn_7Vf@}!DrtqX60VEc!sf4n&}^WFQ+{oU=mzjG#A z5FX;>;O2lrp`5s(>_}uihCH$MR>=F6T!u!LPhd_g9Ho-LdZ7kFvBat*2*Xtflc7jR zC^n{bKz=BcwL}^n3&---Gejx{L1?id7!+y*jY9ba7}P?M41zI9P_k6%kDaWk$6};n ze{75okHk|4K`GMEtr{q5Yk0J1t4u@}V*{8NKLZ1CpnzZ@#-NZZwG4wlcGfQgkuBRq zEN0dOmic4fBo)gOV1iT{2;)QW#*0V*fT2(b0NIB^0oGtZ5&#lO$W6fmWQGrg0a7t@ z7Z!=85la}6?BKarh~|$?fnha+NYv}~1id#wrAa0NbUNMQ0|fDi1zu}Z!a@UHsr8!o zz=pIUjZ_UwRZ5J-qcBOOgZ;5crf*76sCm4%j+NTEMj=3c z`ZJApT5F??YKRyKX;nIn2ssal*E|^M-QNeY7$Vs)_!=p4C_*_~CDJJ%CCp{}W05Ze zu~f_;0W_qGR5FPQk|;C)pizNfS}+*IA_Y=?Xx`L$AMe6aX+9K?!wCwe(7geG0|a_g zS*$>i{NhX`)ps`TPV3QdF=?o1#)< zf}(sdJfTRcwCI-Oc~dPL(n!-Gaj-_Ez|8iSA$>=DI?KlgWU)bSV6JWuWYNd~k`9T= z0jWstZ?NM3r)NYY8KPx4{xU4{TgU`j#J8i5C~wIFDG|nK5Nd4a4SJ$bHd$OYE81{- z;&8%xml%)MVEmE*3Q>~CD>;v(I!%r%u4y8mSVzc-W@9LqR~XGM9s4H^EE&%?7E z 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 ZKkr$)_11!oS_}XH002ovPDHLkV1iZNpv?dP diff --git a/Resources/history_ok_over.png b/Resources/history_ok_over.png index deebf0507391d8b09ecda6aee6042725d83cc74c..325d61378a7c26a5457fc84a57d828eb27f0410b 100644 GIT binary patch literal 2033 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 Puvf--3&Sb{m#BXOecQj8 delta 4568 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 JWrnUX{{y=Zo0R|n delta 5628 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 E0C8k;U;qFB diff --git a/Resources/history_selected.png b/Resources/history_selected.png index b672b21f3999c6560590cefe7de4beeb80342508..bf1a0867ce390b4db7b0cdd6c0b8b7be84e0dbcb 100644 GIT binary patch delta 2204 zcmbu3dpOgJAIHBNqN}Dla;v$lreZf6Eo8GP%3QL9Xl}{eSr_(WawnI~Fl^+sby0GQ zIwAZjP8=o5+)iPxQFhi`qUfC8^PK1T{d0Pr-}C(5@AqHt=k@tK?}hzecCodU0PiR( z97h)pGT_){!!Sm^NE8Z+!x^JYus9s*5EP9>p%KWxf-^#y;ITM7+LW`#;QkKM#Az+bc8xs9!<-%ax&z0*hd6^3M1Gmf-nAsN%Syqd){0WR_Xgz~O4?8EI&U z&ODn)hNN%Xi8sI-%&^On@pTj(gOd<_-6Uf*Nq2_NL9+;-5o7sMXo;-7nQtK-`51e> z?htNlK2rXY8FoIP{p*Jk-cc7jqq(3@Ye!i7C${+}-BwD&w0O*I);%j7;Z5vyXTzFn zmp0R$)#`ROG~?H9p6}#9670^IM zP8xcWY`^MtNrZIHDayu6*DZT8G~1Yg>-CI_*iJr58 z%vrmU;nr1LTM_71Py(TCcRQTGLcTUNvNdxWRJI(<`AO|CWkZU#mqS^=LLaS*lS5*A zFi8Tt36>{EO!Kb-jr*@ zhN^IxI--lV#h3D&_$KCy19rY*64%l*Y|L~(rZ>xq=Bh~8?lZqDTCA6SY0LN(jJh{kp ztFpeU%r9yZI~*)WI{#-*MqbpBO}RmN3_r1Pf?LbZk^;ew))ceszNJgu*$b8x#%9j3tkUdJ?$s$-6Famy>XD+PFO49{*#$^d^#n{>y#lwj8Z;Us@7Y#BD5<_ zxWqtBb9ZKXxK;@sz`ls^mF8istdW)P})9{C%=+@eqwZ>27VPVR2ePVnK4VT%s zzuN+DRld zBlJ2j3Eov%fRgOr6>G0gXim#n#JP=p57nlL?-~oM=y_g$<4vjQ;*+ggrI`R)yw}8@ z9|AAB(;;7=tXHtQ-^V-n*4^xA0CBHbsq*9Tl5*-m%YRjDkDTathoup zQnJ+H>H5g0xX_~o;HHqnZ3lIm?4vb6t1mK#kp{cF{NnLOlF|K?L!efyx1aD%u6(( zjqJ>o#qh9*DcW!?If41^osSMf^!a6oX+JCjpnTd^fbb~D&@uQ`-Oa$R>Tc{y{H$Vss{!p6nM2)yz@Q6|hQ`cPqJ0&uDA_gMt6sP~aTse|{1_{teN(3phVL Un((1TkO=%GTQY@INu(wG3Gyztd;kCd delta 4489 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 LH!VN!{PTYROn8{P delta 6895 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 MpronzQ2`zNZ_k95a{vGU diff --git a/Resources/history_selected~ipad.png b/Resources/history_selected~ipad.png index e880fb325de34787d729b528beb5836b1a6e5b03..751866a9fa09a03f586bd011c57d37a39609c39a 100644 GIT binary patch delta 2546 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 bYiim6qfPzO;1l&Z0M+osc%f?!1pe@Ed@+?e delta 5533 zcmbtUcQD-H*4|yKg|Lf+tQtWi+FGm{-HMtederDWN_6>Y(Go<65-o_9=$+L`h)zUj z^&Uj;zT7+CH~0JJ&i&)QGw+;d<~;MB@}B4P(gh*kF%W_y)Nz5acR9gUvC7fxNFH+} z8p(p@=j9g=6c!fdWtyB-_X2W@8I2L*7e&hR3!so_5q^FVjG!C_$*&+IrywgRf)t6ffiSS}^9#vfAX=!=DL_EmRCLqv;k&|8&rk{Vy61ch`TFj8*6yBsm+ytxY>B*7274sPx zYVRAe_`t;V0o${?>kAYHPYtmU$8A1VKG1yR{V7aBtc&WhXRhU(Qo*rtBqPvG@Gfz1 zOLdGYd9rjE^F?pRyMusR3Y7e34~oCn12 znDAjK=u1awx)DW-Ty^{|0n7wiMy!p0_wiD8DS!Zs#be3BlYxQ>zRy+}uu*0Pw11lh zag12fM~b6`YvGe~VC|+WcF}(@^hLw2iI+K3Xc<_KHX?PFNSl#d8L}45wv>-;ZKks` z^@Gi@?}vFPEgUjqB7MiYW_VnC@7CF2D2vuhlJ8LXSs@ydohmbgH|GAnk0d65!WQF9 z8I^q*J{1oDGIS{hMw#=_-BHHUZA6k<4ljM?HUlckvEG>za{GCG5{q<^6GtX5Cjmy- z{Y5;iie5>qNgmR}Gnj`$IV(3MZ#H8M=S3YDTUD@aZXY_!MUDT^%e zrYyU+3Ma!rB~HF|VUI!x8Is0cAyI6SrmqzxZLq1M1d&?LlvFr{%*o{aTn|8>;(59w z#es!TRTgtHtOatgeYpM0OMWVdTV+S8H4m#JvzE?Up)w4TWC)_62@itQ1rrW@=c4>>Z+)wTx&$A`{Y-~u!a2ROVpf$EkBJ@Y2l*57}Z2s1<#<`f_uqf% zT;P%?cTX`@Z4?jJOp-XHkeqJNPMn?Q@O#K^9DiF=IrCuhxgSzAl4<ikOyAC_cgXv`otqydpnG4YA6R3pSBSA;FTFmx6=90E|3H z1_}CmNr;B;COPPuOFPRg*RNj`>(t$;3ffU`M*LPOD^gRURxK)9qP|yK<@_b`rpxrM zY31SdXq{x73cOg~C;5TPwN7#Skfp)y<=AQFkKnwYPvB7X?P@!>ZI#u@15v)OUsin$ z1m9jeNeZ<;-Oc@6N6&t|w5W&!77UdO1ia#2e&G7(xg%wrlfX1vHN)vYB+k0>290RV zbi$N>@`!!tW!Y9T-~C1F+82CZBRBSSe1eWm8)}O8S>63W9Vr&>=qP{IT8)NC?Rl=~ zi2Q0DlrhfGI|ct(I|p|}ajX$`Y}Zdw1jQ0NC(-+pC158X`?HOu?E4o2En|XzTLAul zZIIp_+~orKT9?oZ!4%9o)pbZ{hM+kFIUy1qxw(tC*7iUWAje_NcJsma36YULTu^pG zWw!T1lIV)M&9pz;-zN$?uOuJ5U#x1l5_MbcH|k5)HiR~_e=w`pOLEsldhhR>wq=L# zzNw}3vge-_IKRY~ z!#(Tvj57kPc(f{J?2ewVjZ3;1+JEveD4g-EtT}Nzg&{oi?z0=H7~rqv=Ix6DCkr|& z{B1v4OxW16NOufId^eOm5)9s>WO)vfCl3e*!wGA(KX_o!`vl$5(*2#qV z&f^|I@9M+>zp$n0;ZYB8^%Lin7<&bkQ;+G_clksxY}+8$O_$hTVK2`~C&X{I*1+JN zG#LX?4*IFtnw$okNdwJ4M{nz^bq(+S%ATGQ*~nOz)H#%UwyG!3kQtDu@U#&)p)+pk zJ!Q&!bG*E*e^Uc+x(-|Y^>Kt^lVasU=9f)(`np}-baBbWc0b%aW+WxhC?$-KQmanH ziB-{f>~gGV=JHDM(2k8eM@IRLyAhhIXIOpI!+>o1jHrIc{a9lMZgF`!RI8UxLolaD z$WRpSI8sMh7+^H%VgkoKNFxCl`COXB8%}q|???`8=6wLW%$)3HJx@$|hl7CHu<7B2uFj3IM10Kge%R9PnOf3~6+Bfc0xe*z<1!ZOE(; z&be~`%`Ics4MyRN!)Ui>>O+eC%xvk>dw^pnr=SvefC{HOrRjrjlE0+g6eS#}N`2*s z)Sl9F9^_?l5xh~91x7A;47l}CE6rFkrE7TuQ=<5 z#u4RKlkHEZ01+5>U#pR0zrRV$q6LfB_vPPL(}Rcl3)RNZFi3;L`Ldbs7vWQ5>19IgTj+jaO*J>DTuUHf z+)kN3k#@4_K4B`~S~n3hB(#8Nsrp&i2mUP{y~Hk z3wZWdWrro6-1$Ct+|v5P>7!m_iFx;pLyE(I zjFNljV^~S~?m#ETebeFo*>prUt+C5-Zho6Zc37(AF4WanaXgqOA%P{2r=gzd_yLze&X*<74VAj2mIQs&~cK_osN?sOu*4WqW9;;NACvu#^vG4&5+S^4x5lU)(CuM$d&g%mPBy;^ zZ=kxc?aXld<3^5mmb(V&17{r8dO>mC#p9x=g|CCG`faZ8EP0)im9|xEiEmRHxtC1e zia#~$zR!L3{m4ZxyUPwel3>(2o3fc9OYrM_Xqu3Kbs-S_@dupm?+|PGxLWTh$ey2TgpwVXN zw6^l(a=05J4Za!J*4pu0qV)$s<0Oy*UsTHyj+n(dQ8g4yvv~;&r3`hX=uUn0YLW95 z8Pg{Qb_|IB#>|N7nW zikva-{3tj(M${1mx@;9_RQm>? zWjbgNU>GVI8ecbAL%LBW`T=h(+h}J~9UIUZ>&Q`#nNR_v4L`edV=3xCXA_zq1U^cw zP(!otKdSyS4*i5nwd*P*v7Qf(zZVoN^0ZLQlJCO2KLq+|&i8^%cnj=uD<-bo$0yc~ zd#Fs$n}Evfkzqn zZU}iQJZhKT%pM3rpKRQOhdK~u@qT#1q`{>%O*rCoB~VbjZ`}*-6r<`RgX?5;^pl z!M~RV(fb{Sk`RCZ@-m;r`THP{928Cjk`4ibU}m8I+S&v&pY@8kg>CdN-@^eGyXOE| zf60^ZW>9v(`9?4OP4#vgfk#6xW>L=pA19za`Qg#3Ytb0v>YH-~>(ja(QX=V)Oe6OX zjs08rbCrt9bur*5?E6-0{r->^Pa}zLEe8k)f1zHE zcUITF0ODB68XI+X1%AECL?@=#^)Cnv=uf!%yD$?Mr+hK9GO4gTIgMStILIH|ciCYo z7EPoWds>scBsRckS3NV}0fvV%4Q_=#%li^>^g)rU1kEEx0SM2WY9cp0g#^9eC=fJkC9o8vZUKMYQMD6Pxe~NnU_^D zjzHt~*)5f6L0QJ9XcwP$zoN>FpoUyjf*SL7A+A5vR?Z*pks;#X>v9Q|_j1sfm~u=n zX*yu$O%%~5kZ1CVXM|Uev%kG{&nctm_Om;?hl!rL;GJ%hTRwMz z_$H1kwMWsusjs}8r)9ZiDltanDl66YC$s&xj=rFwlaTKZI+#~>{4QbVPQgjJ((!YE8!S&w0Ph#>hDpYI*wHeWm*>Z2A~G~7QuCeTG!D&R4)_xr!B0pHL%|+pLP~(^90a&JYwC9TxkHKum*r$V5u%DaUgS0+-(zTxxR^uPD8n1XSbb(aH_{Ojab)a0b^e$|EIy)shu~YA%%CEg)orI?w z{$l#$Apo6oB~qU2RB*Pm)-m&7KM)&05+jtor)tKuMG-)<%A`-c!(71rs@Jl_CgAbH zn;kMF12P2jcCHN+6>lPe-AT%xBzq{c%oXlPFq7%R3yg)l0YOt5`shyF(3^nLP!QkLyjhc1QZn%6j@e; z7KjB@=(9zTV_iVxRxVwH#j>s3paMM*r9cH0*a?U2d+X~TJMZ^qzQ5mmKHvL0Z<4&d z_HWcN(*XcrBiqe|0{|M%h|Ja2MDDskRXy@Bg;`wKM;Z!8@#GLd7f3@OG+WFIgE$aR z5dFmi$N>PfLWRCunCt05SH_x zy$pdxG|Y-qTu*N_Q!0nhB%BSFPXIwQnT!K%Nn|o;jV2O6BA$ROG8VL@lE_pd1-*J< z5NmQlD3#;lx@rsA(Jxwq9)<_)?d{b%h(s)cz$&68Fi(ks-xKxH_ z`jF6`Jibt(-mA;A60Hj)7aoTMu5zguy_{dF@B{W)AlVjV5}8ESYTQI3-Od(7+#yg{ zL<-{j3Rm#|*m=mbYErf z#DFNm2in>?m6JR0@Q30f`x5NPEl(a{`3hWfis@ih>KPs0frbk$=Kf8Am^wmDnsJ_n zp1$gVtq-$J(?riT-U5@@tlcqEJo|W(6VAhaA&&YrGH2HuBmc#q{Foj%l4 zvNUc_8(4R#H63t{vo=ajGz3NuWM93y3*~%0s{t@DQ7_c`Ck(A%&DG@*49NEoHh*_; zx1nR~@BNgarzY}nm2{`dB0KKz=#BeT(xtfi%Fi%4X^!^MpG$BD9JAvrf)=!x`+IvA7Mv0R_j zr8lCK7#gKGt07fYf)ARXd0v3RWmnyZd97QWmY#m+jz@5to2}Ukhw1r*n8@>C^Zwq?);!@>sr+LS0&>7JcDIgG3!<)1<($iR1fFerLMM%%!!lGTdF|M>eAJ0_mi< zqw`-oPpXW$5n}O9ZB^e=$B3$@r}<>F+YaKS++C6NYP5ZPdP=+l#T~vsxYSYd11~Mp zNfKhw;m_5d8%TAsEY&o*O*CF&xhLzgk1aN3WEgQ$tMW*wz@fmv_UNpPilV8}@!7lZ zz0BJW9gy!*?(>>yI-SbQ?{cWl=P_eH@yBlV`ZgW=Pr28=Jg!gRmQCkx-OmS&-A+s( zi4P|D`USM-f9c-X-ED~S`?w&3V{fxDagpv`v%O3#=pLy#?0*QiCAXWVQDphr_v$yg{$03g72jUQr`$c>4M+ANT5wW%Y?u zR@glchxaxjg-gZJ2Hw45*7qdV9t&zmEjkbX@{!Y6ar@<7ucJ3@X*AEcEgroVC4~jY zt0w!+E-kzyVJ=sR27ZjZ3)f{_>(!)?NSn{elk&KM<$hK-u^qRB?4@h0%#4bQn+nSs z91avHJ6qq~dtx~B>ElY0}aZfGP)jlemo?a|#9qcMSoIes! zI0ZoE0c<*SZ=}t5y#ALri&uuWwFRnfL(?t)cpMUPXj^5UXPgGgIIF%*W4FmT=8UG+ zoKtDSdSvi-6M%|;ua5tpz5v%6fFt1m@&zz7L4-3K^bkt0?nXrLUOo#8{@*jydYLh$ z46q~sI%;@!oJL!2aO7RKhMK6Ub*-U+^XfdH1@y3nX77g%EdN}vSza#1jNthH0z-+C AYybcN delta 2604 zcmV+{3e)w;5w#SMB!2;OQb$4nuFf3k00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru+z1;E5elc$3aQtyJr5XY9z1sHk16T3oSJ7Jplcx`YZWRavdt;@0A* z6_t8d)QSP5+!-N+i{zpr32sMo4kI73ACAUAB#5KsB>sP&@SK;Endi-ap7*@uL?@HU zL;%1JDHMu7pb7x?3jqc|fB^sj1^@&Y009O71Q-AiU;sdX0UXQQD1n1Hcd@X&{XQWi zL>eTM2B9DbFn`#GM@C~pVp3B}>yv*UB9kYKOI*KZC{3d{SV9A@HMO*^i2w9idI=$f z6cv}|{%{z@L4bkRs%q*I5|i$=-?u*X(}{vdMk7ju00Vz-dJ{G#*+^+qb1SNZdtl(B zU3>QbbfUoa81YCS6bbXi-X0syeV82;8NYHF z%7p*}k2JNk%6DYGJ zjBMLuhSGF~JXP$AjVlBg_$2p-!?}n0`BaA3*C#`sid`!N82Ck=k=^fxvrHP4lKeT+ zivR>eJXKXwmz=VFu%1JZNrN)dQZWns5AfRvFh9vN zvIp@gqN;Vs;b|oP-u({p5}>vYvwy&U=)lki6Ty1}9T;BHpzk5My9+T3 z2r#^)58i)o5MTWrcehzH@E`=1(D1TiKKhWR1v%e-_xrzeNbsnS<6`l~u#W(v1blA7 zLuoqa+wc0_j{Z06p}V^qif=ERy1Tnk1wLzTxxHc2mVTcfTot!u=JW`Z z>wk@M^XARBl9Q8B2tFJ3=Rb`J3vFm@eDL6ZeT{kC-K{7oqiI24fFCOM=FsVMPLCfy zMj`m`kDK0HTxg2~6y?OIy zRKf1Jy9vjHhLl%U8;wj~W4gP$uN5iWghF4R;i#BHx_kF7Imz5%|;&%9u?^3h9?so(7k*2@L6d4CJ<2T;#blF!O5S` z_BBQ*bj2(?DlDNLL0oLiy49wK}?@Eg%(g*yY^UaYtgh|dF*0L zu>*5@`0ydB;4toYbmSe$Z@t|{(|-atp>X+<#WXEISsYbOO$`DJV8;Q*5*h&azyN>% z1Hgdb&qx61zyN>%0{{XHfO}v7KnDf@1Q-AiU;qRdUY}$61;;?!`pd3v6Q92fg0#Yem(L?A_O{D^LwU2j(dgd4Dn;|NLyd z`5?nEw;CF+T~{zHo3rnGS67#JU&DW)VtymwEr9^T%O{u<=r6H6JUTQaeA4*Ow`?VZ zl$BTZI{S(OY(jt$V0bkh*m_>PMP7mal6s}8O|7v$Ti?)lOWDZ%EOd1V^!F3Gx>#So zLvJXrtTr+XA!N8nG$t&>x_<>*UYudrHnoNjA`l3MdwXGmco$%lz>ak24TKQap2@6l zX#CIqT)m;w@}PjC7S4Zfc2uNg6c6SdxqhRh*RZ6G34JA#Vc4(IGSnI^Hw^Vh2Zk42 zLR-(v@sp>yl!i|lZ$4YEY}_i(;-Wa*+bhuDkL$4v%l-{jOQRa_?@ z6B^Q{(Ue!#Ff5yzma+AVO+r_fUd^9j*i?BYm)^~ZpL&Zt@m4{A;YF9wsq#$A<7%~* zVOc`RirAO{KZ$wP&R!_w(wmv~l|Vpo2g@s^S-bWULVmeX{6X|wLdf+SC0u%^OdP*r zY0T5`tG1v2y z);Fq5Pp`%u=h|X3q?6EUw^VVIW>(CQeIg-bNVzwNRgs+U+$rvD{8T~$g5td(r9(&CG@lY-uHBy zn?FTSqh-NG#Wx!oo6cXl!o3h6z%YO%^mFG$1Q6GJ{Aiz&z zZp;7J^rhtzn)F;zTXuD|Rwtk+Z;_|@%x4Loc#AySG=DmcR+nFJHZ&yId|5z%;UzmT zA*7=?#miZM$ULGcsY0+O7$TN4cEW7XfLmLxTV`lgX4>Q;ewN|(P>1x^EPfQ3g zJpJ&7p?~M6IP#9WHcjU*T$Bhi*?d7S~>ME;im8xd) ztdW}tArr@sy>R)eq4R+}b7%D2SpgDpMRo0sl7E}rHKQWJEq9^KZ;9x+vnr};44n^7 z{Crj>4Z=bi0frY{LR*CJ8H#d_ikKQbcNRBmB2SMQ5#g7v{KB$bhmV~w50goQyuCb6 zojI>mH5(a5Kv9&l^XipL4;;+X=Qv&c^}(quAO-+oih&P)HcC_QU8 z%YSwqIQZj+b@7-VzHw@5YC;wGL#b+3s-8b1{t~gs%R@j>*1w`CDbsg$3MfkC<>4<8 z`%6X|44pSh%LpNp#*KBc=$wj@vdWq|?n7N7PmidGaPwL7uSCz8WqEz>;?|dfLD$~i zjsOGLae%Re2EaWq01O8F83_O#7yuAp042Z@8UP&_01#jRz!Dk&p5y;TSDYIt1uQ85 O0000^xMGpso>S3XWAg_xuM<~SG@bK z-`|}rm1jAxQx`)W9z}0*iBl1jn203HxU-y(J|7y+q$E7&DNLpdw;cdYW7fXZev< z?7|ptJf@I{D=KKJA89oxVF;fXs8At9PY)Vd3_=i*!SI0So(u-Ghe!n>Dh0%dL5AqC zCj+K3iE9@L^QMv{!2&jS%@-#5k)$Z9gejEF%uJ6=nukJ_Oo6<;y^S`gR5GSPR%_&_ zD2pstyR2JaBWkfqrbJ~5IniiQl&Hu+{YY4(t0|-_Lqc8~maEqag_VqwB~nr#50H|c zZp>>%Ta5~k|Ag^IZFPi3iBJTHT9Kg=WBo{SSqEda`(sB&MJyUPOeMpbB1&T`#2M*` z9Obe7NZ1<>iA(~6kQY`(CLLr_L53Fuc`+fb7nd5y0t1+yUNq*qjW=SwFeQ#Roy+is zAczA6(3mV%0F^}xfLH-^Ds>&pldDmYT#T&yl^Ol6VrhSfg#%TH2vw*e6pFO<3E)c= zs6s7OD2ajLp2QH5SSB~h#`dgc%SKeP!-#~dQlt}C>I=)>;GY9A=ujXvkjh!hn@VMQ z(IG4xkjbGkvDjC!lK-b>6f78uaX9{KSk{lQ2{f{=M;{YjFApNeHb#Z5h9QN^0Dz6H zJT@yLYiR11uy@hycYZwd}7G#j>II^T6!v z?B^!?KK!n!DVK-iQ>KT99d`rn9D?byb^xPy6Y_1g0oxr`slvph!elgBlarH{ntC88 zsPFmw;NW0UQIUk?-t$y>t{|wcuI~1oI|Bm)uZG0D$=O-vrQj1TpDr)w!u9;anVD*p z$`F5(sxRs9?|-S&1?>I&SY@1j(Us=r#hICz$KRzj4OdlF@d{~RiBuw~uC1MVJb3|+ z$A5V0)cH?NZ~xRXqIddmCWIq2D_avoebgeE|ryCxLR8Ktetq9DogBi+0 zF5gQkcM3aL{3x0@n8pzB_g;M%D-a|$4f~P%CQxn_~?tOK(uD15v_qs#27CWpv;v8@9Cqx~4^_%Cus{27YG+~LbxVUI;Vd4M6 zElMhts@1fCljf#ZMn}a0errcZ$Abp~%Fm%Gjj_jns2F(ezgSrJu)C{k^Oh}nOOCsj zQW%#*U>GKuMJly%R#sN=JI4B?^y%s8yjJhi*Pl*J1-l%y-B@W3mw8YqvlA1tjEwom zcwJ{pef*(7vtt!-EwdT zbWcAbMkH%A+M1ew7z|JTR?ykmSy@^6(@#O){OOTi?|snat51G8m7J9Hea_8>#zusC zX)G!@s=yk-s#RSfz{WB%GBVz9C6v$SD-;SY*EHs>iC=#$*i@TnV`DQqI;z!bzp(f9 z^^J&%`tzAH#TUM$&(F_SSH#C&i}Dy5A5W$<)sXEE2!#&U?F+{ZhWKw{uWfYB@9F8e zc+oyAEER8RT6gW5Uaz+)37R_WG^KoDRw&5mrE12Yj{7ptP?PgXO!#92m06Q?>=|&;G z?-*`H&ZmLEZ(HV?zLW}p{%4LZ^!BX|0N!$B*RpdvVCV4j3A046N5(${9w(Gt7m!f! EZxV}YA^-pY delta 2334 zcmV+(3E}pR5vdZ8B!2;OQb$4nuFf3k00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNliru+z1;E5hvmeR@wjn2&qX#K~#9!?cGgG6WtmI@WXrG z#MQLj%ZG8tKmx2RX> zgDL%1LT%}QGy)fcDolB7YQMHy@W=POP7E7~V!wYI-v+IIqiMv41$7PLvBB7-VF2c6KxAb-7$F zmkZ@W2L{=tH_Ig}LWoAAak*Ue_4OzhIxxtH+wHEXsMs*QlarH3F9Hnma^}pL&0KJP z_wF4oJ7WnA^1^YP+wIOiMz7c3zkeUsoY8?nM(73S4by9}SSBYYkzNECWMpx1vAVi? zYHBL`Fn_1hi3`quC)^7yUz@q${M(h6m+#-dAGd!fLNFLafMqKC=M(-kyF4sd%9AHg@cRH{E))u34=mr^@7DeUo<4nwS&+Yfv4nM+x&FEi{PpWsR6+id$z*M9 z?SI_dT=rpYZEeHD!zkBZVrFIr9atGO8qLhi%!Z5PTeogCH8pM34VbV69e8zh6;)7> zzP`Tm=g)7r>YkXGz^4&%-t*_r^S*rff}#MbT3}Kz!F+{ zT3cH;Y_Q2>(r7e3eE1OM%JC)i=g*%}1%D-)pPz4TZhrs%efD8PLqn~ttteMcdinAt z0<2)ERLWp5%+Jqf8KYLKmzS4Ot6UB6e@>r1jY25Ywr$(YX7k67AG2h5b#-<3?%hR2 zMJQM9Szcboz0k_0QmL+8yQWsFuU@_SqcMerg_z}Bg^O6ZpufNW`t|GUK7{t0+keo3 zbHw4phgB-oi4!MMsg!gB+~41iDb8Ve>2w-Z$Qd6#e7JDo!t2+s)oOKNVPSuNzgn$E zS#s6<{5%2-px^*w2@QZfFaRLH0Ps`rHWC0jFaRLH0Du4kU=Iuc=)eGg00RI541fT` zpL6NbrOTHuuRWfhpI=&9+S1apcYp8RKlIeWV6dT~fe^B?vVw_F3S7iehD0La^Z6_m z%iX(oQ4K%`mb-iR?ulQgQmJ4tI66AY^Ssq+Ehs3cs;c_!&nUhU@RC4);eSn0Wo4!G zcwJrHfddC>YHA1}j~+eBcoYFffI+577O^Z_Sy>qhg%%bT);<~x21B8cxPM`;s;Vj| zC|G;ics%a&`FNfugp`z&)Ya8x4=~U33kwT`5VcxeQc{9>kzIgM0tJc3XiA4No=S65d?2M&co>2%uZbjIUxhr>aSi+|2rT=zyI z5o!48aoTUR{Bjy4f7=C&Qy>?z0hOyi2^j1or&)44GP6!zv zA3u5Wq;!~0r(;<*6bi*+F==1TXtP-`3}ZAJJs!{W^z`uXFn@g_K!D*_k}OqRTui?R zg+fP<9_4wSrk7!u-rioFPA9hIUAuOzd!CGMd7h{55=ocJqoboN%SIxRSS;prIt>Pc zcv_H~e*};jX}8Sa_xr^*D+q#k=f=>`kjZ4)zI{6#mP)0TmX-)1^oo}t2wJU{5aRdy zGfp@@KHk#OvVU*iKIu~z7Z(eH(9_dH*WNap4U;0}2x%Q$W@7ziP;SWLQ4=6QZ(WP}h>TU)#K>2x|B$8m&^a5zkd0hZ9PSuHIs8R-@O z2oA?_v`NywN)ww(rC64YMx%j1ARG>7teH(F)5yrk(tpy@!Gi~_R;yO44Fm!nkB6R< zh+4Ia^G^wg@zf5hwcCK3sHElR7^YPH%#B0)cp z*x1-8?VMh(HxLNW4>PbVYq40QZ%5G|>FDT?p5N>B(j9fisbI^ktgIlw016H;_P_uN zh5!R77~Vz#KnDf@1Q-CYga$wd1^@&Y0I-AxfERWA7dz6?Z5tDcegFUf07*qoM6N<$ Eg1m%cMgRZ+ diff --git a/Resources/linphone-splashscreen.png b/Resources/linphone-splashscreen.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec650be8a67bebffa8fd1e16372f08111532667 GIT binary patch literal 35937 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

    Ds!{NxGhWM*268OKQH0>d+G?5%diY(V|_EXB7NA z38~pY1Bc1XQC*$qKuqxfK`5-~S4m3+ffOLL|1HD^3XBvQPF7brEmcEV*IvRA3kLxH zE}P#*Chfx1%@x1OV#3Sv&gHTfEf=;& zX%TyfC2SPde?IP1cK3E^40Lze#@Tmbe4?E6ZCVT0)brTJ6O+P6cZwMt|CCZDZATDf zn?<>{w{vHleCztbx|fx5pmB?eT4n%uL2{$gD&Xcvm2oOSS^~kht|*rTf05Y43Garh Jw*#6dJ80k5ZCFDJrAU7(H!m6)kNgJw1EWP1 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

    *%B;xI0ete8;!_M|U22sjKVyR?}Q;N-#^P%1_^W zt?pGx-V?#2H)Yw&tE&l|x~c5qxwmh%lcjImjMV~N`>!{nQ0p#e?B_dheQSKX+~UV> zF7G$(o|f_xOK)q~$G*AU_%Vz>vKZOi^*bZHNSu_k!v^ij5?8#RCnmkeJ%e!~-_F}~ ZT-lKim?l(^2!sBap7w36cbX2-{{cSPC&K^$ diff --git a/Resources/micro_off_default_landscape.png b/Resources/micro_off_default_landscape.png index abb1dcef63bc37621f15e475bba88818509f83e0..2970719511263e43283e584f780a64e0aa777dad 100644 GIT binary patch delta 3467 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 RdeG6)A?RyB%JEi|e*r378%qEH delta 7251 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 diff --git a/Resources/micro_off_default~ipad.png b/Resources/micro_off_default~ipad.png index 6512dee9d9427dcb7428e7dfdec1288f801101a5..33e86a703fb076e749799228a571d024fe17a3bd 100644 GIT binary patch delta 3250 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 Ha^k-L<_Z!I delta 4479 zcmai1cQ71W*WcCqk_f?S5k%BgSK9=OctnkeURJaySyowf5j~=pXwf239*bzvORzk8 z2qCdnkX3?Zl_2DmcfOf-=9~AM@BVS-+;h+T?!D)n`Q39<_{gHEdO(-7zmkPzB%Ndw zWdsxHMJNOU)sffIk%4GyXlZN8LuH^DZWLevxR#D0Tt`k( zOGiNt0?~$OXlTo8L7-3_O+|SnISqvjiT^k${GU#zKw(A&0Ru-TcW=L^D7TE)6f$C3 zaG6UGSw&f`|Jhzc5e}D?RldB7mMm05@rD4(&(zsP<#C1&#nu1+uridIm>9;$Pym2c zNDr=IhFkK};P{W4a|~eit8| zQ(9V#2#J0YQs)adhD$0$#3u?AN5kQx`O(Kh#e(y!?>d(j3&(!!jP7^_7z};=T_hK` zIIkM$;u?N}Sqdc93o7PgUT7GH4Mo`kfG|3e1}otifS>ArtEnb2>?wwP6~XqCJBxo) z{NSj-637A08j((>-O>j~%7mCGYWrf}xQ0xlT<={_6(@nT)9(ljol9g<5%`3%2QdBQ zX7AZy`FlQAE0i@J&=pHnA5tZly&{lf01qfI}MOwYX2b7J=*Kk@J$Bb(}t;+JZzW$zq=1UQV;0QNqi0 zw;hJPY93*On|)AVOF_kNlflLwm~ycH+RWU|Q2&j7fHJb~(AWJbQtls|7uqz{(H&@M zSE*3@aq`{J31CSf!!Gp}Keo-vi*7yEjub-?dHMkUlDLzCa8#+`pc zIx^*E&jV1WjTLBT-KEfF=VzSLA!mwJo--w{T>ylR&BHk4@5B+OmJ z7gx`|=gPm^5qx;tW2Pc)1JEDVPNQ91gSo(20gKoUS6K~8n;ie49~=V4>{ z;}aM1&a(Pk$~FBp=#7i|aQCHc7b0tkkmi;fv@xRA*KmiBX5M+!CP!6hPg#OP-ZG_{X{e0^BZyIM@q#+k zF5(1nj4wWH**lk%BGBXVTjF^SfP8D{lsl(&=MI(<5k}cI($}$XV_R2$(s%cUxJ;?p zdG_aG7la)PjC5ODPc*i7dmAxkv-_tUH)dc4gp=#<*a+nl&cn7>wrOwAgvK$9Kcc-s z5_$82t@fOv)*~I+A@gcCcaMpdK#7i+NV>5ulEkz9sKT}x$+ERc*W^M2BAxdU48X2| z9hPKH9vUN`4iX9Z;2G^t0AJPO=@pIojdRIy!K_RZq0igrXEZc?ao(6di;#-KPKN|R zQnplqq-M>1f*v!!2E=O+oD$?Gc-ITaPS^vdtb)+Pw&@nj^$4G~8hwPTdvau>=Sb$GlF-1F-ra+7wO6VQJF)l__TvjQ#dvE%U2)-qXZTL*fTX z@RP&!*-zp@RJIG(+gHY{50V5)9Ao*zZBVeZh)Ul1!SqDa&uW=#;X^0CSeh!2jP>_v z)wm7CRLuL1Lc@CeIHOAm6_l6J7)&)YM)CnG4zB5JBr$G4Ph9vQJDy$-7Z~ zX59Whf%k|W-={2xt}tLN2{=j283^Oqxh>wF#4Fi{eQmE6%jZ;*(J}?o+brmLi{8WY zlb(Q$c+@skm89)Aty%_8ZjPNGteQR+809>Ah_R}XfRtn)JE--uc_^PA`7NXUz9UYa z*SbY<&h6>cQU)31$vZMB7j0=96O@pN*PVKa9}5 zEC}BYIoFAeDBU_{F2A=(Rc$IemB5GUCf4(s*ha^k!M)67c1&+swW*39#%*G@qd9$T zjT8Fe)>>+PRmqiwTIXL4m&h+Wo5G)YFPQ<2?(1jm_bG1lVINZCOI__`Xz-)m3C1Bu zUxR$u+(O?%m(A*x+RR5ArRkyEJg*sb0(Tch@gdVfAOi%X#!8lJy2v=f6`*!o3hE~g zuTZaKsJFFQIO9$|qHDoCqe;{=*F$lst7k%95Z? zSu;l}1%A(vNQ<-LHngnYR517b_IR>6=9Q-d#xw70i_AR}*+#2u9&Tc7hY8f@{)6<0X5O@ee+>SOH2FFY<(6lCf%Ltb#@@vOx!yEF|#2T z8z~gGHP_C$wba5%>HmsBOuSuUfbY^vLUWgv-)pTTFhc|_U!a-H$;DM3lEY;ib6=qA zVz67`4(2B)!=f7l>wFECSF9R*QPw|UulE2siQ4^VWMuyQcv0LNZ+G_HTB5etIO&tR zd{F88>~R*mo4@bC=gRZs6A<;hU$(Guu*=e;&(Z2N5z;Tyk&wOpSJELHQlDcKk(Kob znt5b@M88bXMv~Ss_GkUySL7TnpCh^226@DbGHymdtqrEqZydzP=*q^%HaIOi$tgk1 zcxn`*8?Cxq$jr=$3NljWy~go&Vx99+6nr}OJR7%#Nsnv}73S<~LW^Ew%Gs9L5T>eJ zYY`2c5-jVpgWE+rvNKrgxtn~a#Cyy|{W6j07S?aapcNOMGQg{@%vG^Bz#u0|k$T8J}S0b&a7Df%#}!YK>b^foNO0 zD6$3;_8xs2Xa!|-o#*}0laax+0QF+Y0 zQE-bSZ&bg0cD$LFcjmtPz6liK@YA?<54$Sck?IT|6mR0X?~c1x`L=v-Z(Qr)z2lR(y;9P!7^Wp}y?geZwYs8i6AE^c z#CnK`cr}*vpkSzXqBb7n1g2$Ap*ZHf&ER1@dWo~MvT;~uSbDzwknhi#(je6A+4mj3 z0fVFEGS8)!-0`5*)M1QXq3wccZ)sx**pIBs^&`|>%;QU2liS<(vWL1Drun7cgr+-C zd&=UJh=pH1v2>k&cQ-m|)mR8Nga^v}k;lWy6G7`<6TtQFHqFtho2M_VKksF{Rd0?s z9UhZ*a4*w^YW}94ilabzho`Ohvjr~tP9>j)tkeV!G(S0P@i@lV9evKEWq!DW>^jvn zI<&=l;FH?*8v)T^tOp`0e{0^cOmW71F|L9C)9=l$PlQF(8~{iRVi^zLv1z5&{<`rF zT{JeY{*30mgljDi%|ICygUCBz~J1Hq~ZcYl(YfP>4_@ z%GJWx&vzBGsxhr9i5~~~*;pCSE2gokIVmXUdg7xw2HLU!sv;{Yd}Af36?(n3lmfp> z?_>kcODqhiaq15&_BSoM@ZN1wpDF!SnUC;o>cu8g>d`9Y@2l#n2AeGeviyYe_dGjp&Or!s)rIgzslg zpZr>UgSl)jHrpbeue2E?k`w$toN&jI#SB-OI>C2+vAfBi`I+#-Vs?Sbon#)VfrO$j zGhdhAUA)pVAtt$~=zKpt5zil6IrJaP+edPa8Injk$+|1vH%9k<{UiKa)?!CTdx5_? z+uC?2_OmznGZjNw(e6CX7Mr{1uh6Vla}Updj&YovOu^R=`K$G5{rv@w8$paWv|-6v zllhN~`;YiX-?iHzI(D?+oyzWCW+8?{QXZ=g!fNt-(3fMf0pVhN4O=7g2;LL0SB^Pm zbtZ@!2iDe08uo?J!=+sLNu4*rlQ8KL^RPvHZH`>h)A=?7c3>jij-+*qYGN)=fz$@Z zfU@I2xAu2ac*e9~mVdrm>b#mF_CjiNZcOZ8kTeBxAI>X%5V3;y7B&Wgy zb>wfoWc@iO1Vk4%G9rCtN1I^#9zD#$03v>fV+q(E@lsDz33#vJIT1PPnR9V3GvC~z zrnLLcMReYDUj8oQaq*_Q z%vaCD>RmC$ryjQ$E?c~$5rrpW3|X0HYu7ju8aV2|4lGas5<)Pmv+P}CZ+OC|4b{pS zNE(MUMU}p=ib&=r2hO_@pmamJcGd#WB@154^uCk2tHr@lpyM*lOEZH#%O7IAJ$E?4pba04rL7xjJCbk7e%QGtg5Yh?gOK9)Omc|(q_ z5l}zJDa*hL8DN1z!O>_ll=Ut&8f6N%v_M&!TgWyViL$oeg|@e}dA6blR6@gzT+alA zM8rm3IJc8-4AS;NTM=!nZ19#uTRahkI)K92*jeFrSy&RS324FrqNN@@K0M0R)t(R; zKnf3vh;=0F)svl=1%?FL|66PIJ1w0JviOgI#qUUZ@C&g=g3j6p{@wufJ1yO89iGbG z-+vzffaEw5a31j^UklPb`@J@&MQ-Jt+Ia__8HR68)GGMPon?10*yqqDC~!S+ePCMN z(|4rtMA!4)bo9=retgkx4yRo1rVdstO6 zrGYqs*9MF{bm5D4A3h0Hz9F#$9i&zwzIELzDVq|EG#+37)el%uYTY)xmuI@_w%uQI9&}MW(%lds}j#QQW_)1cPN&%FF-n8EoY|>}`c_KiBk*ujS&}~7 zIv|Qzz7$fy+0ScJ&C}YW351-(ahs?t+EH8oNMp68RpFZ_lrTeG&K)y8{evjv0%9@L z$aDwdp6E!yub0{e1hw3QY`nlZ&A{gbzXr+b`NtCHd4$X8Ba$y!Vc+UK+z|`_VvRQ`OA)W*VUU ziWd#12876`VS$V>&Rt4<^XPW=In2EB_Y$4`*wl7Jn(v4=rAD|s+e{ixW`u6Nj`Ay< zuk}*=9+%TpezfchmG9!6E9za|F)(n5a%xQFEC zVh&W^3lC?tswz6cSix9!FbYL%jnwn^=F2D16=_G#W* zwC|(xX9yNF^1+u3A6oBt&-Jz#owk&(@(tNFM-w?_M^IBd9LS>vGkN{H%D-Ei*`mQ8^^$!%m&Er zXekYA=OC!8dz8tutm|%k-)CLd6l@8mmLnifInT~GUb)6FN zEm8LpXiRIG*%`4gv`t6X(dY$o;c!(h1>X=#9Sc8_#iU=T+TL!?pYs0Djv##8D!BoX z9wHx3QDC||V|GhA1ZwX!JD7>Y^$b6TUyG$zm~<%!mgd$y(-iX&1i6)JCI|bZ@s2mI zkSW<)X9w?`2lC8REnuVRL`CJq=!@40dIKMZ^If=ci&X)KF>aW=h_JJLhq(Dp?mbk} z9JxL_`H>&_T~k?IE*tMM9OcCjF|}463NBfN>#@Ad_$hLqE5o;!b{bIc_A^-I+^~h#AP0$G0h?KRQS99HpegRPRa^$OF}e z$0d%|Dwa~hm%30KS8hjR3>S{zziBfsm56OdLw3c9{fLau{7z~kMjgWrH7 zIW#&AmKG2_(=f{Dd*G3&oY!_U9I5m$;=6o(M>F1O4LF=zjh6Dk7bX0sp zHl zbKE*l)(_*o!Lb=tGsY@^k@XP|lYTW2FHD{VyLZSzEf#69^*gndJJaPxhkMMP_BHoG z20t9nY2p+#R1ew-*BLbjyWz|pH<*-iOEYw`mUxw$segLH-%}$m`U>KeoRF&Tpk^(1 zqkfucvg2p`-_=njv|nE?->NMSt}ryR3k^COeG?s*Qc9QW*(joXHWYrYju6HX+}+)$ zLT^tmRQ(*hF_zoGapvlRVTm@hEp9*j6EYBsO7dt!?$94ew7uH@mf^0U_-CuCPX0wY25%vQoM@GlYL$;2N{8=*N zq;lNWY2mxaMdJtcPag_Ie~_|N6|<885P5(q6b=MpK_GoNzyX^K22Z3Jz=zh^x&t8w z8b#oB*17;0t_lU{!(}8HE*ni4e#unXCk>I8W%xf(HlR3J{42?SF&WK3<8Ol$1%ruS zACT;PXF@dBjF@-rmruH~vWAS=A5(y{y^)rmhA)D(W~_kL7)`cn7dj7(1Dk~kg+dobx> m*7if385iW{er(r@`71!o!o?91?cO{DgOixXACp| delta 6261 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 delta 6929 zcmai#WmMEr7w%_<0f%M)5tJCZVd#?XMvxGsyAeT}Ki!Qq$S4v5(%p?9-5t_W(jjqu z-+R}+AMU#A?(^lGwVt*1Z|}9wv;R`;2`7-FgSpNxuM?@6z*dP$ar8)bb0j|!!Oz9P z#ltHgAi##;MsguJk=&eI-0WNe!aUrX7UL zAx6jv2*`193GgBXxRLyVTwH>3{M=GVX#rUQ8A(2VNx5Vj2suJVNJtVXEyF7;D}N5u306y1X9vH1|HrslRzZqDy*lD|Tb%zXS(veLX< zJX}2gE4?JYjLg4Ugk<=n__%m^X%O$-G%c-!Et20si2nbuNHi&6s?0zP1R~2&l#zVx zxnOqp_$ZE+9}pRc6|l9Ptoukt7Eoqt0mbf6gx%t9-hqBO;}BfFNBCnu^#Sv3U~K>_ z*WoCSRA(WO_2bRilal8Z$`23s(b}%lm)%Tv2wi0i5)zUjBp5!2^QL*96l-;L0Eg5e zMsJ$CGdnUaF%YQFfp_=$6;>3ZnUeVWql5A7{ldP7kF4VowS+b3?;;Nbz2QS2>L+NI z2^h6h!+^(!!1)m?eNRK|xST@uT+LK7%uvkvuQk65;N*>>b%j8ZKt}t(U=koMP5p{j2Uw{F>P8R!uLOgCz1VCymbioK zBOf8Z3N@m018t(Pty_#5uCCErO!`uoGbEUao{4$ElK}sRyMYStet4;!o(sLBULX!j z#O$Hi2!JXti{N`vvBt`25?WFF8KXN3Key65_++C$UJng!@uKw3jeF8`ZPTRtQ^HD{ zU$iNxXlcps7giK$5ka3_$Imp*6S<8Qt=SHAkmQ2{3kVC`S``ma5Hc?Bg@E zXDuiQi4G_jR0m1hx;kEEf}lS7U2YR0U(gj60(2N0E{_nj%O^<5&(GROF)`nE(8$tz z3q_TE3Z0NjeWj{=EKVQF){D+I8StzW1nyCYojFDoQ8IBXeMT1?23biw_9ql7?dLqF z20P0qLDUSJ23#Hol!+@{I7M7W46DzWvemWZQ6h-3-XPPhI%yaFqBP0U#L!)`~$cX$Tq) zt@uU1FpW@cjx)xnUS@MA8!>7gMKBDFqL|qGDh~g65kE=N)Vl}HwsBuYnWhL8QCdM} zMB_iTTQ=PM5o#%vRgAp(H>^8!w!$vJC4-s}8s8fXuo1@u#mV)_Mj$8SSQdD9?KU_K z2Y9%*9@9<&d8~0P`S&5HdwwD~sTD-!3G8qKv9wi%;1x}y#?h#3EfoeQ;R`Rc&;Yk`k7@KYUZKZMOlKXSY+2 zfE`9CEeKL!@5qh`eRXZKPahpMh2&#pul0=}*t;|%7JYKRu#z|XrDISf&n@LEDq`Y` z!{}~Iv*po<9lIe$ScYM?P+E>q+OdsijP1i&Zl?=Ih}%Q4PQ0fov4|~Y!d3OQL=JY` zRMkLm!WR{ZMgg{;{_1QuY4X6#;Icgx#Bcp)dB(R|wY}sMYgBSC@f=p1mx(FIATrDB z2BU>mE$F_)PT@4JX#_M(WmByOoqKCQhj=4et_La6rVu1(a>poyngJXisS*nJ*vPv9ELt>SIigrK2G zV2WBQs4#q<8zX;Bx?6)WRw*)5(q!B%v1mqm*c{%7e>QPJVe_VBhOf~aO3R`?YLXm; zmunwDnoxZ1o6cSZ`6-=G$s}?>a*CI`0XO#G4fxDHvwX!v(*p3b(Zngx9e8x9bg1%2 zhqoS3^wPZMLv7)p;+CZG8d}S_jn(5WIxWf(v&j}|p~^v8P&cARM+VFTi5;&Fij;JL<$T!tW~hp+7H z#8I00KVH%4=>vRlK1#SMj`37ak9y{{?sHWYl^B0eJd_qi%}cIHfXz;CS-ZvLIO)D} zFj6I7U*whw`TK(|$Ml2MN_jQUv4g5$cl>?5Nw5a(=3QGAKTWhTbK|h&AR+Uc`J#wN zX>?!dGIPnl3XWF9&RLF~jkoMp-ih?_GGj zAGT>XvA5shjZ!Wziso8urJ);Ai+Z^fI)wGM;mNV`3A7UR#e5QLQO=mPjzFQ0vkhAq zi>#xjbpbxZ-Ti_GvTbrrp7?QRyl}MQR;#1(?w=lc8VFs}qCzwbn%07QWEI}MG^YZv zjWQcD*AwQB&-E&;b<)LK)53C%nOurbslo}t+=vf%>TqLI18eZaAMRFmUNV8hW}mbB zQB0kk=kB8(Ds{Wfk<}HYrj+lostklY@BO8~K;j#C<1(I3uj%^BAD$7!Zi&N#cv5{Y zy}yOE%P=E@b!o9cNpx?1)v5g~`=L>h(}(!-K1qm)>?}P|fSdpOHD2N!yK3f6^TPeo zjAHo@6^8EEo1RRNwHhBQhZNr#soP&uGr0|p9>WRFV`4duLbM}%yg%9~sN~w|!-hcN zD6n8!HmJV34HFczvA-Cp80;cznX}Xw@0c(N7r3 zR&G74$(_|wFY7PJdjcWy?6cl***DX$&5fatY%uuphDlHz>7sd7w(&^t5;}4?5tKGR z6sX?DzNx%FM__gX zaz{p3TK(arOr_!K=o^oqnRf?vrCEI;uk9I;jctYB(ff7?6Bd~X!n9o2-AD-cO68(@ zx<14ap34nN7)yMk?Y&!b5daya^whB*XzbLfgRJivZTOi8w<-$ckik@MwvLs zJYw#@r)V!8bYQrr^<0q{AYY+FBm}(5D|@mJAC~)aG{az!Z|qTWNd+u(-c+R&8*1e< zn7t&7m50jA7QGVUGx`3ds>Ldxk(AlP8&qPPGNLkSZsY%NmvJ4N^ku6MlEQGH7!b6; zKty}dFPxT*1c9|aZN-58;Gc=?KS=%e1=|pt8_Fml%*R-c)Q#qc_bYsw^UpnBl$U97 zy1hiRCCrmy&XiFiw+DhBMYcE_zkEGcgqnz5@jY=>I_KTQj`oabb#&6oj>$f*<>PK%y^pXk34at5x+!e;jz z;`7SybdCl)CAoEulJ2279Pgv!>mS18wO`-{?F-||zVYhH(rg2gA9hZLbovUS%nW{i zG|)eZi;Kl`h_FB)2`siT^KXCYCQ~Y8Z`FsEl*Ig5ye1Wj!t6dr`9YF8QM%K!fdQzC zf`7nx<%Q4aw{|hl`uE95DO@GxqqRUCQ(e!=!_7Cn%^YA3u~&*vz3C=2RUV*GTnKc{ zTi=5D?3rR0D}Vvoa~`eg7+HUOuq`9f@p~lh6%eXV0-N}2gFqA4yC$zBe+|}&czQ%B z&v1*~LJM9&Xu52MIhXIpZ1}$&f%BMQ1DnHM_+tb1R__c+0-osbjHBDlHkK9)@9y&D zU?7+vYrQU1bJ{v#nTk>e29O8utHkU)&OE|T_f z%C3ib{=uiYh8n!KW8K=bzA?H-Z|BYyeH1|H>@4mZrtumEVn~$)G3zgn zIO1_Fb~MLl5rX`^e?ts1AE&c!?ox?*y;D^P{qHSFtp#omCBLB~^F!u5^}vD>c_5hy)I zPM$isx#RJh$z%)!8^pw+BI}P8c#2#AF4ub8#97ryk~ph-SVMXQ)>k$p%HSsdVly7si`~jhSVgriJXEQf9 zhw<}(-C&CNp{rDLx0KPuYhAKa+nI@gS~28KSyqD}OL1F@PPNEd^#ZvS%r`b^#@EI+ zA%Geb=HZ{%LL*N3)Vh|*omPKbm+WGyV6s?Qs!o}_pK#2fT~~t;NZ@oK7)WtGz%boG zrurDBv6q){6*MdIdK@ler?t}|OqGq^8V%I>U$%7HQo}u~m`f6nb|a>A9BchBQ8Tfa zl{~9fk3WopV(4``;Un)+}o_>q|syMW<`TJ-nXR%bLV!pI- z|5KToU0pvfbD{#k)E;)`j1HYO%5A56nu1Lmh8uuOU2uCVY~yH~=ohzah1R^xFpbGL zu3#EUjWynjf0i$>i_WgjleSebE3eDNvP>L)!9u(p-E^4>CVe5nIC<~pZ76B4*SdmO zv}Em4P3OOMa5MSmr~i9rbV&T?>GbsxYI6+y1{M@X{_H#BV8q~VcWVSwW70WJEbUEQ zPCaPU0(y^yBHG1MEZ^N)Ya-P|zd%pjF);~(A}c%R`bZB(cvgDtk4wd2F3p#J6-eqb za&mI6GCWq^jJDxhZ(IDaF+svfRiGF|ft@lYH5f@x`)jV|tRpF^8(LSh@t-}izViSs zknkS+`tB+O+K1=5SrM9i1o;^`wIspM1*yX$NS#H`KV! zZF)@o621#-QnJYD({c9DXEnCfsw>VBP`;3vD&t?dp3?woRlT^Uy!P6A8%J1DSfK3h zQZ&!2ij|(TlWIuP*j+HV`1#A74HzDU8GNGFTVF3cym=A0=utZ z1cw1Nw^9#|p@m^r8f1-tPo<=VbR&}hDU}j>$>{2*$K#b#$Z~dkE>TwzOBP*rB~A1uv^QqaEiK0VdkXU)m};ntl)2%-dKvL(<}mI&-d zlXebjdqk)73h673e2@hhCijuDEi~r-WzcIO0Ee8UxkH$s5wD>@0G%oiID4!=juE11 zW{rP#dT-(q5Ec}uOyA+52^9H2c>6JYsn)Sh%KOz*U3OS%gZ|_^e>sSEi?hkBI6Poz?7B3Ytc}r~)p$3#;_Of7J{M}(4B`=O5eS_N1y6X)FLvndKEZSVZ4F_$%5}DOzhTY=E8Hw>HgJ!|DHM++h z`7p*6V<-#wI85!#Qw9VGGtsZLik=p^so&28_@Kql@|WGcM9dj6FdA!kgb#`kb;@=4 z%a%uAqBy+`Vb^}G)poo2LMQvp(Qdw)1#bMn`nS)Hg^_!R=agT-?d8^HQJ!L1de zoNX$a!V|BMg1VN!>7Ogt5$L|Z(MS64-=bk=mRr-qwfsjbgy83?IQSS}PsAxU_qMhv z?_E2y+X`NbrO2E#Eb~&&Tp(o6E=t>#UzKTmxxR+=hU$(5e(YGx#T$+1g7he>$#3H8 zbX=|kvPBDH<#Pj;uCh0xBU#yzKTeB|mz{L#>d6{NK33E4a8fOr__MHyw7R@4$T_E0 zjSGGLfKQ8tJ!y_>B;Px^PN55wA3b3!DF&HyJ%~Ra)D`u z>@1lub`iWXEpoBx;1#V2QVX)m+glxu!T&j4*0pT0%!3>KtR+?rLI8E-g5(}^s7*W? z9sa1If@WCt$$Q%E3d)V~=b7}#%40D5=_Q0T$jX3yG7JIlirofS=!h!0d;anFnEjZ3v(>lJOB^6=g5@NyCn}Q__PHnHt zuCo_o{3?pk;v;~ph6g=h)H~jln%f^IXwJX9X{Cf`^{7~ILoD4;j+GTc0+5B+G^0RE*-3U;z=ZRt#CUMir4!5#PD#63;$_%Wd5(9ibZZKcd)V!|IhvB4sr{sml!{2=I@sW{ercqwt<5P5 z<1l)S;Jx^gzl_X=9Qmfb5qSKr$Htr+%dKu@T`Mu+n;2<<*Ln9E)zw)o+{cxr5Uasu ziUPp#RCO;|m=Ziyw>?Ig6yx{ldQmnbk_V2 zx2S*CtAoo1k>`7dBhy+X7=`QSHAB+ry0|zDkl@Jw`LF)3YsHfX{J~kfpSH~jrl5bJ ND61w@CS?-zKLFMY;3fb7 diff --git a/Resources/micro_off_disabled_landscape~ipad.png b/Resources/micro_off_disabled_landscape~ipad.png index 4e69a21359cb5d4d4e9dc7a4101a2c9a964599a6..1a890b39975e6fb110f42fc731c9d879ffb76b5f 100644 GIT binary patch delta 3072 zcmZ`(XH*kd77m~wMNpBlz>v^;2^|I^AR-XyRXRebQWS&$fgp84F+d0zq^c;z!3Y5( z(i{jHKm{R4lNNdt6Dfwe+1=T*e|Fw^=iPJ9_kH($_uTUyMP^1U-;zbT!0LgFri#Bh z7!1*#=$K^p2{4K;P<)=>d#8EESmXy_Ik$6&s)NMb@+!Z2@GCC=-BM7WjHQ{8Bs@GyH6SFw;4kgfztdvwvY8@1t6mlX z09-?sW+qPX$<6XL7tsj;b98z-J3ClZMBO*=#^kh4d5pmwmy;zH`os8?BTJWIo6XmG zVBfbq-NtNz6&#NWzD7G=5~;V6k(L@d-g9?Xk(PK^zqMT!?d&}M0*~iRaqxXF3&`g) zh5$go6a;`7831OavjC6`z#`jQ#aDS<4^H%#Hb(cll016@S>j|WCkoC!pH$i1&?c-% zsL2;2G71$|8edz(5Jn{j=S^pjenjKW!|rO?I{O1tU-Ev{nNK%-r^n8rzBc%%2chMU{;@6ph$%F#6d#np+g3`w{}k9Dg8R2`BVa*k^lK1y2nx zM>s$ZSI}mSZgk7T%*xeu$*nMtxufM$zBqF1%Z%wW5u*{+eXdct?5gBfYqp8X(7B#) ziOtx9u;QBs^07IgY}dg{N`iYIVUH>40{h`dZkd!i1s;^d?D4^pvNYICb^fH)MnBB( z0#A+6KXT2?xZ%i!Ky~HL&dxPXsRH4QC+nM4A1d?|*6tnn3m8yMm&ND;Tsi%z4>`py zHU)B(Ds*UQ1T_oMBqBU`@0P4`9uIMJKJIr_4(NV%ZXiUI=Q_a$Q=nIGbzA09UiFtS z{cnnO+fNa3C8P_jQH^;CA)2kILt2=p0$C%$l-)D|ouQ0OQcHl4<02=yGY{u2v;r+x zvmoE~tBlv8^a;9MS!L|_J;9f+aKt=nesm~wP)hUoU zxP+!Q??{>csZ?gbX{D#{&krDTfPnvhALtHM2 zJaIdKIJJb7sHAR+i;eWZ)A^;mY~*vuLEq4B%P3{o?YdEU13ek?G6r0ZX}n1a*0K^1 z5P->n776Eabif-pdPzrSB)5{NLpQMUyghcT90$*NUaFOh>fY(vyhe7FTJodk@qFmPYQ$%aHc8<{0_gKpT|5`e z^G7e&krDn~P*Z<&Jsd?kj7NO2qo7)s0yr}f+4=c3L;G`-4@F~4?5=p;J5Z$+;`bl3 zinN_Gix4|JW12lOdti_TwDdPS3mCAL?jyd9Go+P7m22I%~}WDc5L?0|!z#I&7lBC?%g zgLrJjO+BVDqM9hh1h_>fUd3CIM!%p|0LNmnFctB|G`M`*(^Q-zoTl4Ytua1g@=JsD z*$z3VZY_55G})JCqk?nCk{sP3g4@7IS%P??zD`0IOIEWuy3e(pkOP=dQmpM;atH*< zd&K5JI_CU$BV;P_BVHbs!jV*KH~wwDSw8zT{6m{TwY9As$s~7g*HECI)3K(Qc@Eh# zbxEhszs-WyOiDcVtJr(+2MTA=?gLT%%vchLH;QoZLrPC_DYslc2i2{Tnc3(&J4po1 z*v_7p<=>vp^~tW0{5_WYG8)=&qur1Mm9FTgN-(%C+FIxijWQX?kCewUwB*y<#)-0BxK6+KT9`+o$>h#-w^0(**B*&%|$L39u;~6UL!##*XMKL_G1{Zuf{t&J~GmF%f zAYqIuJ|%9P+?EE)*TVr&l~xNQ){LhcBUW2e=wySJpqcID5jm*JKAgYOC8qZ(!@9`p z8uHGGe9o#_+?T~t{5$Bq(F!9Xz>}_bhs59X+>=qz6Sc0wjNr4Lx`@(7@T>s;)q**Bf^zo%6y5`Y3Yhi z_>COTtI|Db&?IHK{uiu;A(GYI$6k>uQYG;1z?c~V&GxEqVQo{uf~(R~ zpVu-%kRneu6^+YR*ED)J_^DvVZ(|_R0!fp9a4m{V7>9e{!@miirq%90+N=j~+t*PmPas!Xp)CDzkV_Cxv?UzahVx*Kcvdgi6x>th#I~ z>n%>bL-jh_lSys7?KP{F;{m0E1-Cygrp_n+2<+;zE3Tod| zsinP4qoX7ILPOKEyrJnM5<3tI0t3o$eOxu>sLP9AoERw-zS)1m(zgv>h-fxe`lA z*$Y@7QOX)dN%JyW&b*-K1uR z)_>KaOq;hji(4BK_mCW}JH(t3KOxR_@R9yenJ4jTzu%n2+p*5*M8mrc_;(x6faVGE zf^9Y@FktD0K^fA*>GGuPn0`fCtgv2F;+0>K8uM7z%$`T3TG1|rN_Xtv-MY;;9;D5n zOgUg*SW#zxy~K;@S-X+^G0K+Mp~lXQS;D?`CVy|;Z8$C)i$Km}Fz%)65|#C*R$f@u zc&N2vr#JHxW2D-IdlG-{PyT#tawSPO{XQG%rrUHoAv%;ns@~l)T37zgx+tvIpY9n{ zFHj1#?{uCy;XN~ZUYwZIy@HF|XA=PCVa4=v;gnTO(yZ6#KeK2`?Z*WO1)i8*yw01( zXkUZRf?Rx}NW`bi_s*zAHr<^XPwe`Jt5+{yU1}nrkE4i9h>KOe4FD4YNCS=OEGdg@ z77#!_qDr}tFQrfhxWi1VJn4_t*kquP*Bto>rUp>R2VwwzTFv=7*mXDMtg^`{wT-hg z0Vc`>m_q!SVs~Rs3?EGB-#GyJ-`e?nfFdvE9seP_*+Oogv6Ey(?THvqoE6psFb(jC z0et5GOh?R<=_H~OG0t8Uz{b(9%A|1dijAMEa)JqMAefG;Hd#}exb0$DmOTR?pU;H= delta 4190 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 Q0T;{I(A=O_?@`>p0K>`^FaQ7m diff --git a/Resources/micro_off_disabled~ipad.png b/Resources/micro_off_disabled~ipad.png index 4e69a21359cb5d4d4e9dc7a4101a2c9a964599a6..546155e91184394236d9568e108e03320f2e8ed0 100644 GIT binary patch delta 3053 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 Q11^@4fth}t?&H{h0i7Qe9smFU diff --git a/Resources/micro_off_over.png b/Resources/micro_off_over.png index 7c898d75dd48351aad631d378c0a0c19176cbdf7..8663a11ef2e6ab4d35c38144562178b1d31f96c1 100644 GIT binary patch delta 2977 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 delta 6713 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̪)Wb3sKmIwsdM4a5#k tD_SE0#zi9kQNsU+m;Wn7#hvon(+O9{ezW3o45T|7hPou33cP*P{{caH3h@8{ delta 7327 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 diff --git a/Resources/micro_off_over_landscape~ipad.png b/Resources/micro_off_over_landscape~ipad.png index b9230d6e42143be652325bc19819ec7a5c3e5635..747f22b7587afa42db1e8821a39310bb8ded5641 100644 GIT binary patch delta 3233 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 GU-IA7E$)f{ delta 5387 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 D1lz$^ diff --git a/Resources/micro_on_default_landscape.png b/Resources/micro_on_default_landscape.png index 2a551232d1c8c269b9afcbf638979ef5e2ac503f..0f8be95ea147d45be9bf568aae51e1c70b7efd82 100644 GIT binary patch delta 2753 zcmZ{lcTf}P7R3{qASJ|t(gZ?BDG7uQ0-I2!NRdDYE`}ZmU6R#n8RK%wI5>Pk>GxVk#@k~mBS3R6}&ZgoYdnl@Zr8>T`19!whpLTJ7~9Ic*3 zf>&K!&e9F*gAWcMc+1nmSVY8)pc?8LFg2L5rV$bfMM4cVv{Vh@DllU;ggOFg45R7) z4^sUpG{d6e@*_#*XAnf35Nzw=sqG$sCHi~dgUt|n5R!kOlDm()_75-gXI|P(RwHt4 z8Lk@u;7T+@7}}FY7IVXs>_3XOlS935+6~`Jbe?yKc{mB!{8r?g=xtkFr2g@fb8>l2 zA=Fo{=7#xEKf*7`Ke_mk;(0@1vjidMB(U8nAq6@11Q6TR(n{sdMOLX{*-LH1Cv-yb zD=XbiwBgNHGj-v;w=aKL<{|XyZBLL1`WySXgxTdX&+{BWo8M#r{6GUX02qMyw=lTi zeWW+;=%r_!)AhJ6X=5SVql}34RwB~XG8tvF2T=Dh=Oi9MqYUwgnf2j9;#SBdv)6S8 zeF-qqli+n>CceAa>bUJ^dLEu7})sPcSu2Ea@|n+t+6}Tb_=bY-j1xK z5i4>`ZtXW3tA5kC-Dzi>JH?*L88-NyWTB-))ix?`IS8VfVB8q+Px8Kpt}`_w3Xjma zGY;fLMPf_IH64tMi?G)tPHYAbR)2FuRNE6dFmS1zh|LHLOPMkfSV=ltRF`tn(po0@ z88=tZyZQ>+hh&8VTS#_c;g_*j2R9+~`wP6YwGB=N4BA7>4)or*6gH4uf9;|-Nwr%e z>dnnP|2&@qWfG-FTgI#Icj|W;rReLGkVLXKu!l1+@va*x_j6ES<3y9pQ{pu|_))~G zf|}|pf*!i(8N@zVj`R?zLExL0Uo}LEFkfmvDbwh|j<;%X;D5 z0!|?-!*N66k^yI4PEAB{-dtZBn2G*$PW43Y@20Bf$&&Z7Py%*s&8lfAS!bLhCr>K*7n`$t(NI&5EPXfvp) zP*-q&f5HkX!kgvjI=URG>lld{d2ugt?>$WO%_+Z$DmZ3lZSuQJ$@^w%v%oyc;^NZy zQ3lRAP)Fd3m_@VYWWz)ap><(~UQTwcxtk-v1EXWw`e>t&<6T4rTd__$|qXcnYNa*gq`J>@{5LuUrP5^Ms;L;ZBK-)mOURP#+Wcq2{RCxJkiJ;sk)!=tzKa8q5Xb{9LacrC+dVt$ z%ffQivn@-P>wm`|ttoa^JEGBO^O!ep3~hOPw{=3B%#Oxt+6nyGm@_Z$Ex*FnEfo1X z`2++wI>ua)IQ~go$nwN5-?fY>9+NH#gM5j35FaoH2ghTPIgLK@#ws=S@%~>WLt`UK zhbvpX*ENr9gDl-TzFxc+kU7P^(}``i5GIo; zC)qM(T~U(pVoI7k?D)1UEbQw*Tv5RDloY-i+h4Xj?4)VU6Jp8=c|%^jc55~8M(eX9 z)^ti`bNA@&OdI(x%)IV0!%q!axfwbcM}_Xmp?wKD@*;>JBA-8cKGZcUdijBhgZ$lI(fc{T}IE#TV;Fy5`3OW9p zcnmq8A@HZ3N-_kMV>qk(tr-B1>VW$DeryNx8P+(Wi}S^|nl2d8PDF!{nBHT%3vR z2a{n<@B&jFd~p~0(Ti&2)M5(Y^503N4)s0A-h?70sZnI}<}+@=?lEerF>z!giFQc7 zjkHfr?9TjKy7ly--HCK;fn;5P%Pu>Em~X!Qs~z~sDo?HJW;7%|t?ylYE6HkMUEf>m zDhk#k`*gnpg|{`=GL|cLuWO+@e2C^%xI@u)^PQ#EH*KFjsoP&JWy2qgnf+t%!eyC- s1xNBu+;M;&pi0GLbhowuijE&-0q3~7a^F#0w6KaJ(?^8f$< delta 6182 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 yOC`)y(4tHM0c2B-l2_FKwL_Tf+ diff --git a/Resources/micro_on_default_landscape~ipad.png b/Resources/micro_on_default_landscape~ipad.png index e1677a4fd74aa8c4903ce5028975271563ca7566..29cdd57238f9b649fc9ac54f5de5858d888f1f9a 100644 GIT binary patch delta 2436 zcmZ`(3p5k#A9e|$@{eV8Qby!DHkY}?+-3}!|w?TV>3Gl($vlv3blvYn3x&b7()z@MhF@|5pV4 zrRbv=hlH93M`7Y4LL%c(2usz3h-kgw@L=?Oh=L$(ciUtk*k=*!idP9LF?$ghO)%i@8E&O_V(suQF|Z@3zSVjxzCUhkS=iuM zD~`31yLaLi$8erQncN|Th5<8}vm|*DHt33$2v?jdZVk7F|1YT}&vd*slQ_EJzdYeT z*74N(4!5DXzM_-(<@qF*ek4)FgC{|LQaVicr?a-TSsE93N9RIp+I%W|!PUN-st{h5 z_7$SSNVM|FX>EW_8(Xa|s;1HktspRen?a~cjk<99nKkPwFTuga6jzeGAy#sBtuZ zaCUp-h~%{D7l`oh08bgLdNk#D&6C=;0i9zFXgs_9TFXOyE&(c^^i=<=t#;7;Hwr^` zKE;fQM*Q~18cNAiok4vQ>VBB6l)5_U{1)TP;tQq+Y_P1n)v?9iZ?<%cb`T7nFYo=N-*bU53 z)5wyxUYPQiYX}^5SzceeOkP;Pa<5KxGLptK{U-tlaq_pDVnSs^1j3yomqU{Km;E1- zBL|vZJ(Mj{{h(UGA-j;A{wkFHW^jrAxot@odd$SZBGBXh&Yq#wX8|RSY~0fLU1nIu zma+73(L=?J;5&wik{(`O?zqpZ`0!_%zU?m<3F6X%(Fb%<%ZxI)Z)&5>5iL!m`8dgM zX9T5LC046CtP}!cRvNdbn071|C;%Y&36(j>?7Edd&m9K{mSn$#%@*fmHLieoDnTNx zftt>DmB^h^JkISp=sNj#EZ0t$-=7J-w#O;xohq8RWR;Mxn%_H}Ci~JZmN)Z#q#Gzc zUGTj1#Y)}l!;{i2yGWs3@A)4Tx3LF%BTHj>`D-me2PfuV$(Ir>EB0?4zysAzy<-ac z9vcbJI#**{x#ezElm}VF>PHj2k+tlq>S)tuFXPX!B%dX*jm8eIdkK25L6e)OSSd#N&;yY|Uht*|$=Xx^ZqN500>BZpVFphaG2{rrofqOH^fWE>V2CX`hh(fUa5Y%ESb7hSm^!9;Lzg>#+*A3W5z|fZ6%XC-QSe2 zkQh&}>fY0z7M8s>Y1+lXHShiOOBE*_jUA|wolNHTu5fJRA>FF_j6S}Zr)rl)^e2$*45n%g_8 z4d)QE#qGLx3-ccaRu_>99G#p7W@p+-w$U5O^!T}W=|`q_d(@)r)Nv1naasWtU7jZ` zo|I8`c2}0uqaG`{*tG1@E_sr`yQ$5xDq`cMzczRGmTIMI-yg*s~bE){4ULY%?K_hk8RJU{sUM$flB}Y delta 3665 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 C)~uWW delta 5173 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 diff --git a/Resources/micro_on_disabled_landscape.png b/Resources/micro_on_disabled_landscape.png index d3632a23879332611b2c7e7c62ecf811e6a69269..9165841a8bd5df6f5ec3563ed62546e671bdc477 100644 GIT binary patch delta 2622 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 delta 5965 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 diff --git a/Resources/micro_on_disabled_landscape~ipad.png b/Resources/micro_on_disabled_landscape~ipad.png index f8e3c49c3e1c8fc021c710b5d68e8d8a44c81414..9221d627743884bb397862154541f1e29b4bfea4 100644 GIT binary patch delta 2316 zcmaKsdpHw(8^)J*@&T-XC!hq7CMl^947TR zCDu@pQH-2tl*~E2&W+Tg_j#`CdEY;JfA{Z?`?~JW=f1A{pKmne-|{p|k)vr=DauF< zPi;6Hf<|k?bx>$D{1^nG4M%8cZ-2A~Tt^>;)<@{3ZIS7G5h&ePgg~#`p(KrlsGhmx zi6@c$gRZL4!*(2mm?6<-NL_7R3q4a59BvLjse2rG5~Yo>&@n@snOh*}n13L>UqTZ* zv|az+g!&Z(g#?kY-ah(X{+_`^ZxY$k%m{j&7@+Be_tO8{MgPjB2a1|d`PHd%0D#12 zOS6*>*Lh!Z2xo^J_eY++sw!qB8gp*PzBXq^UU@Z-iGQGj@BaPu_le&d>;3LK#QS3V zqr#l<_PfVzBLU+NjVIRkp1$liMpMt8OnZ_(fQcO|T4*j;qS+Sx%NVs20{&TmC6OhO z|7jwr{z9MM4}DjgT=nAmYyEalzW5Hs{jooyQc(YJ$vO4qIhZh^S#$D!b<&`F>cqT9 z>n5m3T<9Cql~h3L0!5`QnC$XPZA=-uD4UwMbII*!{2U{8ge!X^dD^tz`IWn(UOa_a z@WSTIp(VFH*?DESd!>#?j)1>vz_afg)u_&^Q%xjB+BI`H7jzd*O5VJoX9OeRjF6fo zcZm>mrNJ{zW@DRS(XNj3Bth#1^8VpLY}DYzk?E+legGz=Ud1oz4})Q0W=^D2oP@9|7nB(*dA`cKF)`>`y1Mo zk7Q>bz{=BpXp@Jis|02x`@A%N<^wKT*N{CSCo?B3y_?AeLPtY^w;h7)kI*L@Ih>vN zexO{paXuS7qhXfIkoU z>y$@`{Sg-uT{mcn4J}y?^U^EKk*6uvR6jwf$l~|w`e8F{Fc_HSwxh=L$I{l32wf@s zdivPfbPT`r0*Rk;iFYdCq`m)S5G(E&{v6lx_(Zd!{o4`#$SP({S!M6e&Hw-&L<3S` z=99_V^ZD0Y~PxW+(|S6AaV5x#4jxRXNBA#hR*fE6}jvp+sczdX?MHbZFv73+BW1s5<9X%Dto% ztl!=#&!Mf37b7iMs5-NxyRP*wm_8>W zj*a^YZ5ke1DMr;Y&i9j5yEGqOynq`%(0OykDR0HQ$@xcB@X}PiYyLa7LwbiRGU-e^ z%c7s})6}%=LFV;#JzHcd_YqgQrFT!QvzVZGN*71ERGt0QT#AaT41V9|nh>zqD~$qY zMaW(WX$$ld9=0(Aep3_6S%dlxCXmu?*?O7U;dnvV$j0@{`JcwxF2nd1xudfZp}{ko z*JC4_IhoeE$~l%lF5DX^&kn4bvs1l+zxj_qicFOQxEbE6SLQZ>pY%|OAjzLRw@g)X}do+ zyKDeitxm{2W;ZsId8t7xJNAufoK*#p;ZL8;t$JWuTz*oytjDG6ZIj@D2z8`S5 z?irT464DxUV4~whn$~UZCTq0;nW+Bo5V8Dpr4rZgmf}-cA>^G0)j=zxwJ!D}HYVIy zAUgI5Brbvnon`^dFpwpYy~0S2gs~vnT1E(9$_qPzaTE_%LH<-U(;UMWg@X4A0dbUV zO;wI>v-`Xa>lUWindiM{TQb7{pwyr9HnA+{M+s@ERg(X`QB)ubncI;D{EPgNmTDOZ zYi;Q!81uvx_W+>a?F9Kxh(yMU#!sg(C34rQa;3LYfor*~JZ*pWA`52l4gRY`6u nA2he~W}DlN%q}4=QUoxtV8oxA*uyXcY(GnLTeGJo9yk94UI$fA delta 3463 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 NV`_BWkf47z`o9dFcgp|( diff --git a/Resources/micro_on_disabled~ipad.png b/Resources/micro_on_disabled~ipad.png index f8e3c49c3e1c8fc021c710b5d68e8d8a44c81414..762b400fd14fdcdccd6036aa6f74e70c7296ce7e 100644 GIT binary patch delta 2323 zcmaKqS5y<&7KTHaOHryqXbRE7g5eNt*6BOwPgf1Y63X(yH zV5CmsC_@$LHGx4TfJl=*0g;>Kopsl`58ku(!(L~9|98&APLlguJlBRpk!YK(q@xj_ z4Fbu*V45HZ6b1vS%Yn5)U@dKS!8AY+11QV@tV=wO&Y$Iw&kx~1=eKiS5P-?4*k26@ z4v&tAx}lmM&nY8kp|1@==<0&4^emttkR`}WS6{~rstvY+AYcefD{wxX4Iy-32pwH* z$Pb|ERJl!kiKY0R<9l2mU+sj=@QQD1L|dkNBlNyXS7Lm<|GezzZqPP*ztWbzf38a z#GG}anP1V_@g>djqK{?r4nm!lt*$Cs(fSV;afoXO%>`B;(+EnVmi2qLl{t7Ty-zRe zP+i3mmYyivJr!~ZnJ+(sBB$ply<@(L?K1O0!7XSH(`w~wi~k5lx^+B{S-D4?ar2dd z-P~y>zF1J)4UG7kU(K&-SOjM6k>1=vIv!(8%V(2BkJ5+3oeT?Qsx!vLRQ*&HK=M35 zMt#wKp0|y0#fP#xxCKS#e#KZq0&Tx~$%016P}SllrH&o((C*UK1pGAk3vv$I$Hrvc zu$tbw|H}BUtk*sH?&|8`1?-p6&ibO5{0^PbXI9qMM4>yG>w7fmgbqU^1HQnu^81{o za8o#d$;IUQKMj*hMc=6Nrh_=4*nJ{(C9cqiak+2rYibq4tARAQ?*_%ZK%SiLbr(iZ zmdPKz;N&orxjI-x{aUY5$DHJWPTd%NZzBh_Mg;$0)$ttVuqS!$-g z&sS!b$8VK*L_9|yR^(qB z$b{BpQ5#<_5b$ei7tivKU;x3uTp?S_a$Pq6yFS~mrS%L;qL>Mg=Wl72dh zO#fW#GN9kb?c*nQNQ}8%Dl|~fI&I$({wj9g%Lhc>c@P&WFALZ%EcmnEYb1wgyQwo` zur76&shhHhR-cqfc$cO2v08lb+lX&tws+&Uss)-x=*CcyF1D-my1qcXuvb}`5xTE# z`}!t{H4uo!JD)JdW_-Ui=D=q#$aN9o*ppJN03@_V{Yp+wYmj)6YrR-<_};9_G~%rX zI0*c6i#G&zb>p66NBz5d4XZ)GV%OMZEOv9>UgMEN7e{Sf{X{^YkK>?vYdA10GdITG z^e*8B)+XwVPNtV0>FE4v0d9Cv)`ft+5^(dGCYl6RIk?5VxI}Dj_Lf-XC}Z~^`nR6W zBw&UAjC*%4swX=05vZ;k68IPU!FIvb4VM#YWuydBMjbYV)l8V{Udq&)HItic{n6u{;zxe31&? zvvCq0cHZPrW$II;Rw1fs>hwZ>RKp0gMG~}SB=H~yyNhlONyj3OchojUjvEM{Eam;w z3wK+5Q3)~d2|>L6m(Pn8z zt|z(ux<<_qUgPs(REJiL!81bi;n%&^a25W!Urd^~i?{B_&SA9qV&tbv#~tT!B>14x zc-dC)%a<>t?b=h~&#fO`8_9Q*xYSXB^?YWbg|2L-q(!Aai4d{WOUE?cDD!=uow8s~ z@xZ?S;{VE*sfiNVS~Og4zuYV`gP-0;hpkR z+J4QKbPS>vD6dNWiWJ-6APQwAY4LN8YUajpq~T1NTyop&yTo1|R}mJVUz{~8l!o*7 zVLtwp)MN>t<&u{bW&yr)Dx$M?{DF2Ici}4D^gx0jJA!}%zRxqbi@hFZ5pyV~5OB6m zn8lv4&20BN=XW<7JR#=TB!c^T#?YqppQHrY!C?%5UBSS_6s|NJ0GNXt;3%m7z>Wk1 zPlxK2aI3h}7Y$@{V{TJUu_L3JY?RH7<1jNUzeI5k09sgFWM(nA9>6{}mJWypbN@U4 E2GPSyNdN!< delta 3462 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